EP1812861A1 - Verfahren und vorrichtung zur verzögerung von zugriffen auf daten und/oder befehle eines mehrprozessorsystems - Google Patents
Verfahren und vorrichtung zur verzögerung von zugriffen auf daten und/oder befehle eines mehrprozessorsystemsInfo
- Publication number
- EP1812861A1 EP1812861A1 EP05811008A EP05811008A EP1812861A1 EP 1812861 A1 EP1812861 A1 EP 1812861A1 EP 05811008 A EP05811008 A EP 05811008A EP 05811008 A EP05811008 A EP 05811008A EP 1812861 A1 EP1812861 A1 EP 1812861A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- data
- processor
- access
- delaying
- commands
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000003111 delayed effect Effects 0.000 claims description 12
- 238000001514 detection method Methods 0.000 description 14
- 238000013500 data storage Methods 0.000 description 6
- 230000001360 synchronised effect Effects 0.000 description 5
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 2
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002918 waste heat Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1695—Error detection or correction of the data by redundancy in hardware which are operating with time diversity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/845—Systems in which the redundancy can be transformed in increased performance
Definitions
- the invention relates to a method for delaying the access to data and / or commands of a multi-computer system and a corresponding delay unit according to the known from the prior art features of the independent claims.
- dual-computer systems or dual-processor systems are today's computer systems for safety-critical applications, in particular in vehicles such as for anti-lock braking systems, electronic stability program (ESP), X-by-wire systems such as drive-by-wire or steer-by-wire as well as break-by-wire, etc. or other networked systems.
- ESP electronic stability program
- X-by-wire systems such as drive-by-wire or steer-by-wire as well as break-by-wire, etc. or other networked systems.
- powerful error mechanisms and error handling mechanisms are required, in particular to counteract transient errors that arise, for example, in miniaturization of the semiconductor structures of the computer systems.
- an increase in performance ie an increase in performance
- the two execution units or cores process different
- the second reason to realize a dual-core or multi-core architecture is one
- processors must be in the performance Mode, and the same data in error detection mode.
- Such a device or unit enables the effective operation of a two-processor system, so that in the two modes security and performance can be switched during operation.
- processors will be discussed below, which also includes cores or computing units conceptually.
- a cache is usually provided for each processor.
- a cache is usually not sufficient because this cache must be spatially located between the two processors. Consequently, due to the long delay between the cache and the two processors, the two processors could only operate with a limited clock frequency.
- Caches serve as a fast cache in the system, so that the processor does not always have to fetch the data from the slow main memory. In order to make this possible, it is important to pay close attention to the access time when implementing the cache. This consists of the actual access time to fetch the data from the cache and from the time to pass the data to the processor together. If the cache is now located far away from the processor, the transfer of data takes a long time and the processor can no longer work with its full clock. Because of this timing problem, two-processor systems typically provide a separate cache for each processor.
- the saving takes place by utilizing a clock offset.
- the invention describes a method and a device for delaying the access to data and / or commands of a multiprocessor system having a first and a second processor, to which a memory unit is assigned, wherein the second processor operates with a clock offset and the device operates in this way is formed such that the first processor accesses the memory unit and the second processor receives the data and / or commands with a clock offset.
- the memory unit is a cache memory
- the advantages of this memory technology can be combined with the advantages of the invention.
- the memory unit is addressed by at least one processor and is directly coupled to the processor that addresses it.
- a delay element is included and the device is designed such that the clock offset is used by the delay element to implement a bridging of the duration of the data and / or commands from the memory unit to the second processor.
- comparison means are provided by which the data and / or commands are compared and these comparison means are arranged spatially close to the following processor.
- the device is configured such that the clock offset is utilized to guide the comparison data of the first processor to the second processor.
- Cache for the slave processor can be omitted.
- a dual-processor system there are 2 processors that can handle the same or different tasks. These two processors of the dual-computer system can execute these tasks isochrone- or off-clock. If a two-processor system is constructed for fault detection, it is advantageous to avoid common-mode errors that these two processors operate with a clock skew. This method is most effective when a non-integer clock offset> 1 is chosen. This means that in this first application form both processors or cores work the same tasks. If the two processors work off different tasks, it is more advantageous for them to run clock-edge synchronously, since the external components such as memory can only be controlled with the clock of a processor. If, for example, a two-processor system switchable between these two modes is used, it is thus optimized for an operating mode.
- this is compensated for by the fact that in the two-processor system (or multiprocessor system) which can be switched over between two modes such as security and performance, the two processors work in the security mode with a clock offset and in the mode without clock offset.
- the Performance mode no clock offset is advantageous because the external components such as memory are usually operated at a lower clock frequency and are designed by the clock edge suitable for only one processor. Otherwise, the second clock offset processor would have a wait cycle each time it accesses memory, because it will expose the external component by one-half
- the optimum in error detection is taken out of safety mode and in performance mode the maximum in performance.
- the invention advantageously relates to a method and a device for delaying access to data and / or instructions of a multiprocessor system having a first and a second processor, which is associated with a memory unit, wherein the first and second processors operate with a clock offset and the Device is designed such that both processors access the same memory unit with this clock offset.
- write operations and read operations are delayed as accesses, the device between delaying the accesses and non ⁇
- Delay of accesses is switchable.
- a multiprocessor system is disclosed with such a device.
- the two processors operate at a clock skew. This can be shifted both by whole bars as well as parts of the bar against each other be.
- a different clock frequency is used in the two modes. In the safety-critical mode, for example, a lower clock can be used for interference suppression than in the performance mode.
- the first operating mode corresponds to a safety mode in which the two arithmetic units execute the same programs and / or data and comparison means are provided which compare the states that arise during the execution of the same programs to match.
- the erf ⁇ ndungswashe unit or the inventive method allows the optimized implementation of the two modes in a two-processor system.
- the two processors operate in error detection mode (F mode)
- the two processors receive the same data / instructions and operate in performance mode (P mode), so each processor can access the memory. Then this unit manages the accesses to the only simply existing memory or peripherals.
- the unit takes over the data / addresses of a processor (called master here) and forwards them to the components such as memory, bus, etc.
- the second processor (here slave) wants to make the same access.
- the data distribution unit accepts this at a second port but does not forward the request to the other components.
- the data distribution unit gives the slave the same data as the master and compares the data of the two processors. If these are different, this indicates the data distribution unit (here DVE) by an error signal.
- DVE data distribution unit
- the two processors work on different parts of the program.
- the memory accesses are thus also different.
- the DVE thus accepts the request from the processors and returns the results / requested data to the processor that requested them.
- one processor is placed in a wait state until the other has been serviced.
- the switching between the two modes and thus the different operation of the data distribution unit is effected by a control signal. This can either be generated by one of the two processors or externally.
- the DVE unit delays the data for the slave accordingly or stores the output data of the master until it matches the output data of the master
- Slave can be compared for error detection.
- FIG. 1 shows a dual-computer system with a first computer 100, in particular one
- Error detection include, in which namely the first computer 100 and the second computer 101 with a time offset, in particular a predetermined time offset or a predetermined clock offset work.
- any time can be predetermined for a time offset and also any desired clock with respect to an offset of the clock cycles.
- This may be an integer offset of the clock cycle, but just as shown in this example, for example, an offset of 1.5 clock cycles, in which case the first computer 100 just works 1.5 clock cycles before the second computer 101 respectively operated becomes.
- this system is designed to operate at a given skew or clock skew, particularly 1.5 clock cycles, i. while a computer, z. B. computer 100 directly the components, in particular the external components 103 and 104 responds, the second computer 101 operates with a delay of exactly 1.5 clock cycles to do so.
- computer 101 is fed with the inverted clock, that is to say the inverted clock at the clock input CLK2.
- 117 is a command bus in which 117A is a command address bus and 117B is the partial command (data) bus.
- Address bus 117A is connected to computer 100 via a command address connection IA1 (instruction address 1) and to computer 101 via an instruction address connection IA2 (instruction address 2).
- the instructions themselves are transmitted via the sub-command bus 117B, which is connected to computer 100 via a command terminal II (Instruction 1) and to computer 101 via a command terminal 12 (Instruction 2).
- this command bus 117 consisting of 117A and 117B is a component 103 z.
- Instruction memory in particular a secure instruction memory or the like interposed.
- This component in particular as a command memory is operated in this example with the clock CLK.
- a data bus is shown which includes a data address bus or a data address line 116A and a data bus or a data line 116B. It is 116A, so the
- Data address line via a data address port DAl (Data Address 1) to the computer 100 and via a data address port DA2 (Data Address 2) connected to computer 101.
- the data bus or the data line 116B is connected via a data connection DO1 (Data Out 1) and a data connection DO2 (Data Out 2) Computer 100 or computer 101 connected.
- the data bus 116C which is connected to computer 100 or computer 101 via a data connection Dil (Data In 1) and a data connection DI2 (Data In 2), also belongs to data bus 116.
- a component 104 is interposed, for example a data memory, in particular a secure data memory o. ⁇ . This component 104 is also supplied with the clock CLK in this example.
- the components 103 and 104 are representative of any components which are connected via a data bus and / or command bus to the computers of the dual-computer system and corresponding to the accesses via data and / or commands of the dual-processor system with respect to write operations and / or read operations erroneous data and / or commands receive or give away.
- error detection generators 105, 106 and 107 are provided which generate an error detection such as, for example, a parity bit or another error code such as an error correction code, ie ECC, or the like
- an error correction code ie ECC
- the parity bit or another error code such as ECC.
- a delay unit 102 is now connected as shown in the lines of the data bus and / or in the command bus. Because of
- Clarity is shown only the involvement in the data bus. Of course, this is just as possible and imaginable with regard to the command bus.
- This delay unit 102 or the delay unit delays the accesses, here in particular the memory accesses, in such a way that a possible time or clock offset is compensated, in particular in the event of an error detection, for example via the comparators 110 and
- the error signal is generated in the dual-computer system, that is, the error detection is performed in the dual-computer system.
- Various variants can be implemented here: delay of the read and write operations, delay of only the write operations or, although not preferred, a delay of the read operations. It can be converted by a change signal, in particular the error signal, a delayed write operation in a read operation to prevent erroneous writing.
- DVE Data distribution unit
- IIIOPDetect the changeover request
- mode switch unit the mode switch unit
- Iram and Dram Control module the Iram and Dram Control module
- This unit is located between the cache and the processor on the instruction bus and checks if the IUOp command is being loaded into the processor. If the command is detected, this event is reported to the Modeswitch unit.
- Switch-Detect "'unit is unique to each processor. The "Switch-Detect” unit does not have to be fault-tolerant since it is duplicated and thus redundant, but on the other hand it is conceivable to perform this unit in a fault-tolerant and thus singular manner, but the redundant design is preferred.
- ModeSwitch Switching between the two modes is triggered by the "Switch-Detect” unit, which is to switch from Lock to Split mode
- Both "Switch-Detect” units detect the switchover, as both processors execute the same program code in Lock mode.
- the "Switch-Detect” unit of processor 1 recognizes this 1.5 clocks before the "" switch mode. Detect “'Unit of the processor 2.
- The""Modeswitch'” unit stops the processor 1 by 2 clocks with the help of the wait signal.
- the processor 2 is also stopped 1.5 clocks later, but only by half a clock to be synchronized to the system clock. Subsequently, the status signal is switched to split for the other components and the two processors continue to work. In order for the two processors to perform different tasks, they must diverge in the program code. This is done by reading directly after switching to split mode
- Processor ID is done. This read processor ID is different for each of the two processors. If a comparison is now made to a desired processor ID, then the corresponding processor can be brought to another program location with a conditional jump command. When switching from split mode to lock mode, a processor will notice this, or one of them first. This
- Switch-Detect unit and informs the Modeswitch unit which stops the corresponding processor and informs the second of the request for synchronization by an interrupt, the second processor receives an interrupt and can now execute a software routine to complete its task.
- both "Switch-Detect" units must notify the Modeswitch unit that they want to switch to Split mode, and if the changeover request is only from one unit, the error is detected by the comparison units These continue to receive data from one of the two processors and they do not match the stopped processors.
- the two processors are in split mode and one does not switch back to lock mode, this can be detected by an external watchdog. With a trigger signal for each processor, the watchdog notices that the waiting processor does not answer. If there is only one watchdog signal for the processor system, then the triggering of the watchdog must only take place in lock mode. Thus, the watchdog would recognize that the mode switch did not occur.
- the mode signal is available as a dual-rail signal. Where "UO" is Lock mode and " ⁇ 01" is SpKt mode. Errors have occurred with "W and" ⁇ 11 "'.
- IramControl Access to the instruction memory of the two processors is controlled via the IRAM Control. This must be designed securely because it is a single point of failure. It consists of two state machines for each processor: one each isochronous iramlclkreset and one asynchronous readiraml. In safety-critical mode, the state machines of the two processors monitor each other and in performance mode, they work separately.
- processor 1 has the higher priority. After a access to the main memory by processor 1 gets now - if both processors want to access the main memory again ⁇ processor2 the
- Allocated memory access permission are implemented for each processor. In lock mode, the output signals of the machines are compared to detect any errors.
- the data for updating the cache 2 in lock mode are in the IRAM control
- the caches of the two processors can be reloaded differently.
- the two caches are not coherent.
- the two processors can diverge and the comparators thus signal an error.
- a flag table is set up in the IRAM Control. This indicates whether a cache line was written in lock or split mode.
- lock mode the cache line entry will be set to 0 on a cache line reload and set to 0 in the cache line
- Split mode even with a cache update of the cache line from only one cache - to 1. If the processor now executes a memory access in lock mode, it is checked whether this cache line was updated in lock mode, i. is the same in both caches. In split mode, the processor can always access the cache line, regardless of the cache line
- Flag Vector is. This table only has to be present once, since in the case of an error the two processors diverge and thus the errors are reliably detected at the comparators. Since the access times on the central table are relatively high, this table can also be copied to every cache.
- DramControl In this component, the parity is formed for each of the address, data, and memory control signals from each processor.
- - Processor Status Lock The two processors are in lock mode. This means that the functionality of the data storage icing is not necessary. Processor 1 coordinates the memory accesses. - Processor status Split: An access conflict resolution to the data storage is now necessary and a storage lock must be possible.
- the state in split mode is again divided into 7 states, which resolve the access conflicts and the
- Processor 2 access the memory, it is stopped by a wait signal until processor 1 releases the data memory again. ⁇
- processor 2 gets the memory pre-reserved. In the case of normal memory access without locks, processor 2 can access processor 1 before processor 1 if processor 1 was in front of it.
- Memory access of processor 1 The memory is not locked in this case. Processor 1 is allowed to access the data store. If he wants to lock him, he can do so in this condition.
- the clock changeover is shown using an example, so that with respect to one mode, a clock change takes place in comparison to the other mode.
- the two modes, the clock clk and the two processor or Coretakte are shown.
- the two processors work in one clock skew. This can be shifted both by whole bars as well as parts of the clock against each other.
- Another variant is that a different clock frequency is used in the two modes. In the safety-critical mode, for example, a lower clock can be used for interference suppression than in the performance mode.
- a cache is provided for each processor, as shown again schematically in FIG.
- a cache is usually not sufficient because this cache must be spatially located between the two processors. Consequently, due to the long delay between the cache and the two processors, the two processors could only operate with a limited clock frequency.
- Caches serve as a fast cache so that the processor does not always have to fetch the data from the slow main memory. In order to make this possible, it is important to pay close attention to the access time when implementing the cache. This consists of the actual access time to fetch the data from the cache and from the time to pass the data to the processor together. If the cache is now located far away from the processor, the transfer of data takes a long time and the processor can no longer work with its full clock. Because of this timing problem, two-processor systems typically provide a separate cache for each processor.
- a cache requires a lot of chip space and also a lot of power. As a result, it also produces a lot of waste heat, which must be dissipated. If a cache can now be dispensed with, then a two-processor system can be implemented much more cost-effectively.
- one processor is the master and one processor is the slave.
- the master first processes the data and thus also drives the peripheral components such as memory, cache, DMA controller, etc.
- the slave processes the same data with a clock offset of 1.5 clocks, for example. This also means that it also gets the data from the shared memory and from the external components later this time.
- the output data of the two processors such as memory address, data, etc. are compared with each other. To be able to compare the data with each other, the results of the master must also be buffered for 1.5 cycles.
- Such an example system is shown below.
- the command and data cache are now arranged directly at the master as in a single processor.
- the master therefore does not have to accept any performance losses in terms of the cache-to-processor runtimes. Since the slave only processes the data 1.5 clocks later, this time can now be used to transfer the data to the second processor, which is now further away from the cache.
- two flip-flops can be used in an exemplary clock offset of 1.5 clocks, as shown in Figure 6.
- the first one is with the beat of the
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Verfahren und Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle eines Mehrprozessorsystems mit einem ersten und einem zweiten Prozessor, denen eine Speichereinheit zugeordnet ist, wobei der zweite Prozessor mit einem Taktversatz arbeitet und die Vorrichtung derart ausgebildet ist, dass der erste Prozessor auf die Speichereinheit zugreift und der zweite Prozessor mit einem Taktversatz die Daten und/oder Befehle erhält.
Description
Verfahren und Vorrichtung zur Verzögerung von Zugriffen auf Daten und/oder Befehle eines Mehrprozessorsystems
Stand der Technik
Die Erfindung geht aus von einem Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle eines Mehrrechnersystems sowie einer entsprechenden Verzögerungseinheit gemäß den aus dem Stand der Technik bekannten Merkmale der unabhängigen Ansprüche.
In technischen Anwendungen, wie insbesondere im Kraftfahrzeug oder im
Industriegüterbereich also z.B. Maschinenbereich und in der Automatisierung werden ständig mehr und mehr mikroprozessor- oder rechnerbasierte Steuerungs- und Regelungssysteme für sicherheitskritische Anwendungen eingesetzt. Dabei sind Zweirechnersysteme oder Zweiprozessorsysteme (Dual Cores) heutzutage gängige Rechnersysteme für sicherheitskritische Anwendungen, insbesondere im Fahrzeug wie beispielsweise für Antiblockiersysteme, das Elektronische Stabilitätsprogramm (ESP), X- by-Wire-Systeme wie Drive-by-Wire oder Steer-by-Wire sowie Break-by-Wire, usw. oder auch bei sonstigen vernetzten Systemen. Um diese hohen Sicherheitsansprüche in zukünftigen Anwendungen zu befriedigen, sind mächtige Fehlermechanismen und Fehlerbehandlungsmechanismen erforderlich, insbesondere um transienten Fehler, die beispielsweise bei Verkleinerung der Halbleiterstrukturen der Rechnersysteme entstehen, zu begegnen. Dabei ist es relativ schwierig den Core selbst, also den Prozessor zu schützen. Eine Lösung hierfür ist wie erwähnt die Verwendung eines Zweirechnersystems oder Dual Core-Systems zur Fehlerdetektion.
Solche Prozessoreinheiten mit wenigstens zwei integrierten Ausfuhrungseinheiten sind somit als Dual-Core- oder Multi-Core- Architekturen bekannt. Solche Dual-Core- oder Multi-Core- Architekturen werden nach heutigem Stand der Technik hauptsächlich aus zwei Gründen vorgeschlagen:
Zum Einen kann damit eine Leistungssteigerung, also eine Performance-Steigerung erreicht werden, indem die beiden Ausfuhrungseinheiten oder Cores als zwei Recheneinheiten auf einem Halbleiterbaustein betrachtet und behandelt werden. In dieser Konfiguration bearbeiten die zwei Ausfuhrungseinheiten oder Cores unterschiedliche
Programme respektive Tasks. Dadurch lässt sich eine Leistungssteigerung erzielen, weshalb diese Konfiguration als Leistungsmodus oder Performance-Mode bezeichnet wird.
Der zweite Grund, eine Dual-Core- oder Multi-Core- Architektur zu realisieren, ist eine
Sicherheitssteigerung, indem die beiden Ausfuhrungseinheiten redundant das gleiche Programm abarbeiten. Die Ergebnisse der beiden Ausfuhrungseinheiten oder CPUs, also Cores werden verglichen und ein Fehler kann bei dem Vergleich auf Übereinstimmung erkannt werden. Im Folgenden wird diese Konfiguration als Sicherheitsmodus oder Safety-Mode oder auch Fehlererkennungsmodus bezeichnet.
Heutzutage gibt es somit einerseits Zwei- oder Mehrprozessorsysteme die zur Erkennung von Hardware-Fehlern redundant arbeiten (siehe Dual-Core oder Master-Checker- Systeme) und anderseits Zwei- oder Mehrprozessorsysteme, die auf ihren Prozessoren unterschiedliche Daten abarbeiten.
Vorteile und Aufgabe der Erfindung
Kombiniert man nun diese beiden Betriebsarten gemäß einer Ausfuhrungsform der nachfolgenden Erfindung in einem Zwei- oder Mehrprozessorsystem (der Einfachheit halber wird nun nur noch von einem Zweiprozessorsystem gesprochen, die nachfolgende Erfindung ist aber genauso auf Mehrprozessorsystemen anwendbar), so müssen die beiden Prozessoren im Performance-Modus unterschiedliche Daten erhalten und im Fehlererkennungsmodus die gleichen Daten.
Solch eine Vorrichtung oder Einheit ermöglicht den effektiven Betrieb eines Zweiprozessorsystems, so dass in den beiden Modi Sicherheit und Performance im Betrieb umgeschaltet werden kann. Dabei wird im weiteren von Prozessoren gesprochen, was aber ebenso Cores bzw. Recheneinheiten begrifflich einschließt.
Bei den Implementierungen von insbesondere Zweiprozessorsystemen (Dual-Core) wird üblicherweise für jeden Prozessor ein Cache vorgesehen. Ein Cache ist normalerweise nicht ausreichend, da dieser Cache räumlich gesehen zwischen den beiden Prozessoren angeordnet werden muss. Aufgrund der langen Laufzeit zwischen dem Cache und den beiden Prozessoren könnten folglich die beiden Prozessoren nur mit einer begrenzten Taktfrequenz arbeiten. Caches dienen dabei im System als schneller Zwischenspeicher, damit der Prozessor die Daten nicht immer aus dem langsamen Hauptspeicher holen muss. Um dies zu ermöglichen, muss bei der Implementierung von Cache stark auf dessen Zugriffsdauer geachtet werden. Diese setzt sich aus der eigentlichen Zugriffszeit um die Daten aus dem Cache zu holen und aus der Zeit um die Daten an den Prozessor weiterzureichen zusammen. Ist der Cache nun räumlich weit entfernt vom Prozessor platziert, so dauert die Übermittlung der Daten sehr lange und der Prozessor kann nicht mehr mit seinem vollen Takt arbeiten. Aufgrund dieses Timingproblems wird bei Zweiprozessorsystemen für jeden Prozessor üblicherweise ein eigener Cache vorgesehen.
Es ist Aufgabe der Erfindung ein Verfahren und eine Vorrichtung anzugeben, durch welche ein Cache bei einem Zweiprozessorsytsem eingespart werden kann, bzw. bei Multiprozessorsystemen die redundanten Caches. Die Einsparung erfolgt durch Ausnutzung eines Taktversatzes.
Beschreibung der Ausführungsbeispiele und Vorteile der Erfindung
Die Erfindung beschreibt zur Lösung der Aufgabe ein Verfahren und eine Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle eines Mehrprozessorsystems mit einem ersten und einem zweiten Prozessor, denen eine Speichereinheit zugeordnet ist, wobei der zweite Prozessor mit einem Taktversatz arbeitet und die Vorrichtung derart ausgebildet ist, dass der erste Prozessor auf die Speichereinheit zugreift und der zweite Prozessor mit einem Taktversatz die Daten und/oder Befehle erhält. Vorteilhafter Weise
- A -
handelt es sich bei der Speichereinheit um einen Cache-Speicher womit die Vorteile dieser Speichetechnik mit den Vorteilen der Erfindung kombiniert werden können.
Zweckmäßiger Weise wird die Speichereinheit von wenigstens einem Prozessor adressiert und ist direkt an dem Prozessor angekoppelt, der sie adressiert.
Vorteilhaft ist, dass ein Verzögerungselement enthalten ist und die Vorrichtung derart ausgestaltet ist, dass der Taktversatz durch das Verzögerungselement genutzt wird um eine Überbrückung der Laufzeit der Daten und/oder Befehle von der Speichereinheit zu dem zweiten Prozessor zu realisieren.
Weiterhin von Vorteil ist dass Vergleichsmittel vorgesehen sind, durch welche die Daten und/oder Befehle verglichen werden und diese Vergleichsmittel räumlich nah an dem nachfolgenden Prozessor angeordnet sind.
Zweckmäßiger Weise ist die Vorrichtung derart ausgestaltet, dass der Taktversatz ausgenutzt wird um die Verleichsdaten des ersten Prozessors zum zweiten Prozessor zu führen.
Vorteilhaft ist, dass je nach Ausgestaltung als Zugriffe entweder Schreiboperationen und
Leseoperationen oder nur Leseoperationen oder nur Schreiboperationen verzögert werden.
Wenn diese beiden Prozessoren nun mit einem Taktversatz betrieben werden, kann nun mit dem vorgeschlagenen Verfahren und der entsprechenden Vorrichtung auf den zweiten
Cache für den Slave-Prozessor verzichtet werden.
In einem Zweirechnersystem gibt es 2 Prozessoren die dieselben oder verschiedene Aufgaben abarbeiten können. Diese beiden Prozessoren des Zweirechnersystems können diese Aufgaben taktsynchron oder taktversetzt abarbeiten. Wird ein Zweiprozessorsystem zur Fehlerentdeckung aufgebaut, ist es vorteilhaft zur Vermeidung von Common-Mode Fehlern, dass diese beide Prozessoren mit einem Taktversatz arbeiten. Am effektivsten ist diese Methode wenn ein nicht ganzzahliger Taktversatz >1 gewählt wird. D.h. in dieser ersten Anwendungsform arbeiten beide Prozessoren oder Cores gleiche Aufgaben ab.
Arbeiten die beiden Prozessoren verschiedene Aufgaben ab, ist es vorteilhafter sie taktflankensynchron laufen zu lassen, da die externen Komponenten wie Speicher nur mit dem Takt eines Prozessors angesteuert werden können. Soll nun beispielsweise ein zwischen diesen beiden Modi umschaltbares Zweiprozessorsystem eingesetzt werden, ist es somit auf einen Betriebsmodus optimiert.
Erfindungsgemäß wird dies dadurch kompensiert, dass in dem Zweiprozessorsystem (bzw. Mehrprozessorsystem), welches umschaltbar ist zwischen 2 Modi wie Sicherheit und Performance, die beiden Prozessoren im Modus Sicherheit mit einem Taktversatz arbeiten und im Modus Performance ohne Taktversatz. Im Modus Performance ist kein Taktversatz vorteilhaft, da die externen Komponenten wie Speicher meistens mit einer niedrigeren Taktfrequenz betrieben werden und von der Taktflanke nur auf einen Prozessor passend ausgelegt sind. Der zweite taktversetzte Prozessor hätte sonst bei jedem Speicherzugriff einen Wartezyklus, da er die externe Komponente um einen halben
Takt zu spät ansteuert.
Durch eine Taktumschaltung für ein Zweiprozessorsystem wird im Modus Sicherheit das Optimum bei der Fehlererkennung herausgeholt und im Modus Performance das Maximum an der Performance.
Somit geht die Erfindung vorteilhafter Weise von einem Verfahren und einer Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle eines Mehrprozessorsystems mit einem ersten und einem zweiten Prozessor, denen eine Speichereinheit zugeordnet ist, wobei der erste und zweite Prozessor mit einem Taktversatz arbeiten und die Vorrichtung derart ausgebildet ist, dass beide Prozessoren mit diesem Taktversatz auf die gleiche Speichereinheit zugreifen.
Zweckmäßiger Weise werden dabei als Zugriffe Schreiboperationen und Leseoperationen verzögert werden, wobei die Vorrichtung zwischen Verzögerung der Zugriffe und Nicht¬
Verzögerung der Zugriffe umschaltbar ist. Daneben ist ein Mehrprozessorsystem mit einer derartigen Vorrichtung offenbart.
In wenigstens einem Modus arbeiten die beiden Prozessoren in einem Taktversatz. Dieser kann sowohl um ganze Takte als auch um Teile des Taktes gegeneinander verschoben
sein. Eine weitere Variante ist, dass in den beiden Modi eine unterschiedliche Taktfrequenz verwendet wird. Im sicherheitskritischen Modus kann zur Störungsunterdrückung z.B. ein niedrigerer Takt verwendet werden als im Performancemodus. Dabei können diese beiden Varianten auch miteinander kombiniert werden.
Dabei entspricht der erste Betriebsmodus einem Sicherheitsmodus, bei dem die zwei Recheneinheiten gleiche Programme und/oder Daten abarbeiten und Vergleichsmittel vorgesehen sind, welche die bei der Abarbeitung der gleichen Programme entstehenden Zustände auf Übereinstimmung vergleichen.
Die erfϊndungsgemäße Einheit bzw. das erfindungsgemäße Verfahren ermöglicht die optimierte Implementierung der beiden Modi in einem Zweiprozessorsystem.
Arbeiten die beiden Prozessoren im Fehlererkennungsmodus (F-Modus), so erhalten die beiden Prozessoren die gleichen Daten/Instruktionen und arbeiten sie im Performancemodus (P-Modus), so kann jeder Prozessor auf den Speicher zugreifen. Dann verwaltet diese Einheit die Zugriffe auf den nur einfach vorhandenen Speicher oder Peripherie.
Im F-Modus übernimmt die Einheit die Daten/Adressen eines Prozessors (hier Master genannt) und leitet diese an die Komponenten wie Speicher, Bus, usw. weiter. Der zweite Prozessor (hier Slave) möchte den gleichen Zugriff machen. Die Datenverteilungseinheit nimmt dies an einem zweiten Port entgegen, aber leitet die Anfrage nicht an die weiteren Komponenten weiter. Die Datenverteilungseinheit übergibt dem Slave die gleichen Daten wie dem Master und vergleicht die Daten der beiden Prozessoren. Sind diese unterschiedlich, so zeigt dies die Datenverteilungseinheit (hier DVE) durch ein Fehlersignal an. Es arbeitet somit nur der Master auf den Bus/Speicher und der Slave bekommt die selben Daten (Funktionsweise wie bei einem Dual-Core System).
Im P-Modus arbeiten die beiden Prozessoren unterschiedliche Programmteile ab. Die Speicherzugriffe sind somit auch unterschiedlich. Die DVE nimmt somit die Anforderung der Prozessoren entgegen und gibt die Ergebnisse/angeforderte Daten an den Prozessor zurück, der sie angefordert hat. Möchten nun beide Prozessoren gleichzeitig auf eine
Komponenten zugreifen, so wird ein Prozessor in einen Wartezustand versetz, bis der andere bedient wurde.
Die Umschaltung zwischen den beiden Modi und somit der unterschiedlichen Arbeitsweise der Datenverteilungseinheit erfolgt durch ein Steuersignal. Dies kann entweder von einem der beiden Prozessoren generiert werden oder extern.
Wird das Zweiprozessorsystem im F-Modus mit einem Taktversatz betrieben und im P- Modus nicht, so verzögert die DVE — Einheit die Daten für den Slave entsprechend, bzw. speichert die Ausgangsdaten des Master solange, bis sie mit den Ausgangsdaten des
Slave zur Fehlererkennung verglichen werden können.
Der Taktversatz wird anhand der Figur 1 für ein Zweirechnersystem näher erläutert:
Figur 1 zeigt ein Zweirechnersystem mit einem ersten Rechner 100, insbesondere einem
Masterrechner und einem zweiten Rechner 101, insbesondere einem Slave-Rechner. Das gesamte System wird dabei mit einem vorgebbaren Takt bzw. in vorgebbaren Taktzyklen (clock cycle) CLK betrieben. Über den Takteingang CLKl des Rechners 100 sowie über den Takteingang CLK2 des Rechners 101 wird diesem der Takt zugeführt. Bei diesem Zweirechnersystem ist darüber hinaus beispielhaft ein spezielles Merkmal zur
Fehlererkennung enthalten, in dem nämlich der erste Rechner 100 sowie der zweite Rechner 101 mit einem Zeitversatz, insbesondere einem vorgebbaren Zeitversatz bzw. einem vorgebbaren Taktversatz arbeiten. Dabei ist jede beliebige Zeit für einen Zeitversatz vorgebbar und auch jeder beliebige Takt bezüglich eines Versatzes der Taktzyklen. Dies kann ein ganzzahliger Versatz des Taktzyklus (clock cycle) sein, aber eben auch wie in diesem Beispiel dargestellt, beispielsweise ein Versatz von 1,5 Taktzyklen, wobei hier der erste Rechner 100 eben 1,5 Taktzyklen vor dem zweiten Rechner 101 arbeitet respektive betrieben wird. Durch diesen Versatz kann vermieden werden, dass Gleichtaktfehler, sogenannte common mode failures, die Rechner oder Prozessoren, also die Cores des Dual Cores Systems, gleichartig stören und damit unerkannt bleiben. D.h. solche Gleichtaktfehler betreffen durch den Versatz die Rechner zu unterschiedlichen Zeitpunkten im Programmablauf und bewirken demnach unterschiedliche Effekte bezüglich der beiden Rechner wodurch Fehler erkennbar werden. Gleichartige Fehlerwirkungen ohne Taktversatz wären u.U. in einem Vergleich nicht erkennbar, dies wird dadurch vermieden. Um diesen Versatz bezüglich der Zeit oder
des Taktes, hier insbesondere 1,5 Taktzyklen im Zweirechnersystem zum implementieren sind die Versatzbausteine 112 bis 115 implementiert.
Um die genannten Gleichtaktfehler zu erkennen ist dieses System eben beispielsweise dazu ausgelegt in einem vorgegebenen Zeitversatz oder Taktzyklenversatz zu arbeiten, insbesondere hier 1,5 Taktzyklen, d.h. während der eine Rechner, z. B. Rechner 100 direkt die Komponenten, insbesondere die externen Komponenten 103 und 104 anspricht, arbeitet der zweite Rechner 101 mit einer Verzögerung von genau 1,5 Taktzyklen dazu. Um in diesem Fall die gewünschte Eineinhalbzyklusverzögerung, also von 1,5 Taktzyklen zu erzeugen wird Rechner 101 mit der invertierten Clock, also dem invertierten Takt am Takteingang CLK2 gespeist. Dadurch müssen aber auch die vorgenannten Anschlüsse des Rechners also seine Daten bzw. Befehle über die Busse um die genannten Taktzyklen, also hier insbesondere 1,5 Taktzyklen verzögert werden, wozu eben wie gesagt die Versatz- oder Verzögerungsbausteine 112 bis 115 vorgesehen sind. Neben den beiden Rechnern oder Prozessoren 100 und 101 sind Komponenten 103 und
104 vorgesehen, die über Busse 116, bestehend aus den Busleitungen 116A und 116B und 116C sowie 117, bestehend aus den Busleitungen 117A und 117B mit den beiden Rechnern 100 und 101 in Verbindung stehen. 117 ist dabei ein Befehlsbus, bei welchem mit 117A ein Befehlsadressbus und mit 117B der Teil-Befehls(daten)bus bezeichnet ist. Der Adressbus 117A ist über einen Befehlsadressanschluss IAl (Instruction Adress 1) mit Rechner 100 und über einen Befehlsadressanschluss IA2 (Instruction Adress 2) mit Rechner 101 verbunden. Die Befehle selbst werden über den Teil-Befehlsbus 117B übertragen, der über einen Befehlsanschluss Il (Instruction 1) mit Rechner 100 und über einen Befehlsanschluss 12 (Instruction 2) mit Rechner 101 verbunden ist. In diesem Befehlsbus 117 bestehend aus 117A und 117B ist eine Komponente 103 z. B. ein
Befehlsspeicher, insbesondere ein sicherer Befehlsspeicher oder dergleichen zwischengeschaltet. Auch diese Komponente, insbesondere als Befehlsspeicher wird in diesem Beispiel mit dem Takt CLK betrieben. Daneben ist mit 116 ein Datenbus dargestellt, welcher einen Datenadressbus oder eine Datenadressleitung 116A und einen Datenbus oder eine Datenleitung 116B enthält. Dabei ist 116A, also die
Datenadressleitung, über einen Datenadressanschluss DAl (Data Adress 1) mit dem Rechner 100 und über einen Datenadressanschluss DA2 (Data Adress 2) mit Rechner 101 verbunden. Ebenso ist der Datenbus oder die Datenleitung 116B über einen Datenanschluss DOl (Data Out 1) und einen Datenanschluss DO2 (Data Out 2) mit
Rechner 100 bzw. Rechner 101 verbunden. Weiterhin zu Datenbus 116 gehört die Datenbusleitung 116C, welche über einen Datenanschluss Dil (Data In 1) und einen Datenanschluss DI2 (Data In 2) jeweils mit Rechner 100 bzw. Rechner 101 verbunden ist. In diesem Datenbus 116 bestehend aus den Leitungen 116A, 116B und 116C ist eine Komponente 104 zwischengeschaltet, beispielsweise ein Datenspeicher, insbesondere ein sicherer Datenspeicher o. ä . Auch diese Komponente 104 wird in diesem Beispiel mit dem Takt CLK versorgt.
Dabei stehen die Komponenten 103 und 104 stellvertretend für beliebige Komponenten die über einen Datenbus und/oder Befehlsbus mit den Rechnern des Zweirechnersystems verbunden sind und entsprechend der Zugriffe über Daten und/oder Befehle des Zweirechnersystems bezüglich Schreiboperationen und/oder Leseoperationen fehlerhafte Daten und/oder Befehle erhalten oder abgeben können. Zur Fehlervermeidung sind zwar Fehlerkennungsgeneratoren 105, 106 und 107 vorgesehen welche eine Fehlerkennung erzeugen wie beispielsweise ein Parity-Bit oder auch einen anderen Fehlercode wie beispielsweise einen Error- Correction-Code, also ECC, o. ä.. Dazu vorgesehen sind dann auch die entsprechenden Fehlerkennungsprüfeinrichtungen oder Check-Einrichtungen 108 und 109 zur Überprüfung der jeweiligen Fehlerkennung also beispielsweise des Parity-Bit oder eines anderen Fehlercodes wie ECC.
Der Vergleich der Daten und/oder Befehle bezüglich der redundanten Ausführung im Zweirechnersystem erfolgt in den Vergleichern oder Komparatoren 110 und 111 wie in Figur 1 dargestellt. Existiert nun aber ein Zeitversatz, insbesondere ein Takt- oder Taktzyklusversatz zwischen den Rechnern 100 und 101, entweder hervorgerufen durch ein nichtsynchrones Zweiprozessorsystem oder bei einem synchronen
Zweiprozessorsystem durch Fehler in der Synchronisierung oder auch wie in diesem speziellen Beispiel durch einen zur Fehlererkennung gewünschten Zeit- bzw. Taktzyklusversatz, insbesondere hier von 1,5 Taktzyklen, so kann in diesem Zeit- oder Taktversatz ein Rechner hier insbesondere Rechner 100 fehlerhafte Daten und/oder Befehle in Komponenten, insbesondere externe Komponenten wie z. B. hier insbesondere die Speicher 103 oder 104, aber auch bezüglich anderen Teilnehmern oder Aktuatoren oder Sensoren schreiben oder lesen. So kann er auch in fehlerhafter Weise einen Schreibzugriff anstatt eines vorgesehenen Lesezugriffs durch diesen Taktversatz durchführen. Diese Szenarien führen selbstverständlich zu Fehlern im gesamten System,
insbesondere ohne klare Anzeigemöglichkeit welche Daten und/oder Befehle gerade fehlerhaft geändert wurden, wodurch auch die Recovery-Problematik entsteht.
Um diese Problematik zu lösen wird nun eine Verzögerungseinheit 102 wie dargestellt in die Leitungen des Datenbusses und/oder in den Befehlsbus geschaltet. Aus Gründen der
Übersichtlichkeit ist nur die Einschaltung in den Datenbus dargestellt. Bezüglich des Befehlsbusses ist dies natürlich genauso möglich und denkbar. Diese Verzögerungseinheit 102 oder die Delay Unit verzögert die Zugriffe, hier insbesondere die Speicherzugriffe so, dass ein möglicher Zeit- oder Taktversatz kompensiert wird, insbesondere bei einer Fehlererkennung beispielsweise über die Komparatoren 110 und
111 z.B. mindestens solange, bis das Fehlersignal im Zweirechnersystem erzeugt ist, also die Fehlererkennung im Zweirechnersystem durchgeführt ist. Dabei können verschiedene Varianten implementiert sein: Verzögerung der Schreib- und Leseoperationen, Verzögerung nur der Schreiboperationen oder auch, wenn auch nicht bevorzugt, eine Verzögerung der Leseoperationen. Dabei kann durch ein Änderungssignal, insbesondere das Fehlersignal, eine verzögerte Schreiboperation in eine Leseoperation gewandelt werden um fehlerhaftes Schreiben zu unterbinden.
Nachfolgend anhand Figur 2 nun eine beispielhafte Implementierung bezüglich der
Datenverteilungseinheit (DVE), die sich vorzugsweise aus einer Vorrichtung zur Detektierung des Umschaltwunsches (durch IIIOPDetect), der Mode-Switch-Einheit sowie dem Iram- und Dram-Control-Baustein zusammensetzt:
IllOpDetect: Die Umschaltung zwischen den beiden Modi wird durch die Einheiten
""Switch-Detect"' erkannt. Diese Einheit liegt zwischen dem Cache und dem Prozessor auf dem Instruktionsbus und schaut ob der Befehl IUOp in den Prozessor geladen wird. Wird der Befehl detektiert, so wird dieses Ereignis der Modeswitch Einheit mitgeteilt. Die ""Switch-Detect"' Einheit ist für jeden Prozessor einzeln vorhanden. Die Einheit ""Switch-Detect"' muss nicht fehlertolerant ausgeführt sein, da sie doppelt und somit redundant vorhanden ist. Andererseits ist es denkbar diese Einheit fehlertolerant und damit singulär auszuführen, bevorzugt ist aber die redundante Ausführung.
ModeSwitch: Die Umschaltung zwischen den beiden Modi wird durch die ""Switch- Detect'" Einheit getriggert. Soll eine Umschaltung vom Lock in den Split Modus
erfolgen, detektieren beide ""Switch-Detect"' Einheiten die Umschaltung, da beide Prozessoren den gleichen Programmcode im Lock Modus abarbeiten. Die ""Switch- Detect'" Einheit des Prozessor 1 erkennt dies 1,5 Takte vor der ""Switch-Detect"' Einheit des Prozessors 2. Die ""Modeswitch'" Einheit hält mit Hilfe des Wait Signals den Prozessor 1 um 2 Takte an. Der Prozessor 2 wird 1,5 Takte später ebenfalls angehalten, aber nur um einen halben Takt, damit er zum Systemtakt synchronisiert wird. Anschließend wird das Status-Signal auf Split geschaltet für die weiteren Komponenten und die beiden Prozessoren arbeiten weiter. Damit die beiden Prozessoren nun unterschiedliche Tasks ausführen, müssen sie im Programmcode auseinanderlaufen. Dies erfolgt, indem direkt nach Umschalten in den Split-Modus ein Lesezugriff auf die
Prozessor-ID erfolgt. Diese ausgelesene Prozessor-ID ist für jeden der beiden Prozessoren unterschiedlich. Wird nun auf eine Soll-Prozessor-ID verglichen, kann anschließend mit einem Conditional Jump Befehl der entsprechende Prozessor an eine andere Programmstelle gebracht werden. Bei einer Umschaltung vom Split-Modus in den Lock-Modus wird dies ein Prozessor bemerken, bzw. einer der beiden zuerst. Dieser
Prozessor wird Programmcode ausführen, in dem der Umschaltbefehl enthalten ist. Dies wird nun durch die ""Switch-Detect"' Einheit registriert und teilt dies der Modeswitch Einheit mit. Diese hält den entsprechenden Prozessor an und teilt dem zweiten den Wunsch der Synchronisation durch einen Interrupt mit. Der zweite Prozessor erhält einen Interrupt und kann nun eine Softwareroutine zur Beendigung seines Tasks ausführen.
Nun springt er ebenfalls an die Programmstelle, in der sich der Befehl zur Umschaltung befindet. Seine ""Switch-Detect"' Einheit signalisiert nun ebenfalls den Wunsch zum Moduswechsel an die Modeswitch Einheit. Zur nächsten steigenden Systemtaktflanke wird nun das Wait Signal für den Prozessor 1 deaktiviert und 1,5 Takte später für den Prozessor 2. Nun arbeiten beide wieder mit einem Taktversatz von 1,5 Takten synchron.
Befinden sich das System im Lock Modus, so müssen beide ""Switch-Detect"' Einheiten der Modeswitch Einheit mitteilen, dass sie in den Split Modus wollen. Erfolgt der Umschaltwunsch nur von einer Einheit, so wird der Fehler von den Vergleichseinheiten erkannt, da diese von einem der beiden Prozessoren weiterhin Daten geliefert bekommen und diese nicht mit dem angehaltenen Prozessoren übereinstimmen.
Sind die beiden Prozessoren im Split Modus und einer schaltet nicht zurück in den Lock- Modus, so kann dies durch einen externen Watchdog erkannt werden. Bei einem Triggersignal für jeden Prozessor bemerkt der Watchdog dass der wartende Prozessor
sich nicht mehr meldet. Ist nur ein Watchdogsignal für das Prozessorsystem vorhanden, so darf die Triggerung des Watchdogs nur im Lock-Modus erfolgen. Somit würde der Watchdog erkennen, dass die Modusumschaltung nicht erfolgte. Das Modussignal liegt als Dual-Rail Signal vor. Dabei steht "UO"' für den Lock-Modus und "Λ01"' für den SpKt- Modus. Bei "W und "Λ 11"' sind Fehler aufgetreten.
IramControl: Der Zugriff auf den Befehlsspeicher der beiden Prozessoren wird über die IRAM Control gesteuert. Diese muss sicher ausgelegt sein, da sie ein Single Point of Failure ist. Sie besteht aus zwei Zustandsautomaten für jeden Prozessor: als je einen taktsynchronen iramlclkreset und einen asynchronen readiraml. Im sicherheitskritischen Modus überwachen sich die Zustandsautomaten der beiden Prozessoren gegenseitig und im Performancemodus arbeiten sie getrennt.
Das Nachladen der beiden Caches der Prozessoren werden durch 2 Zustandsautomaten gesteuert. Einem synchronen Zustandsautomaten iramclkreset und einem asynchronen readiram. Durch diese beiden Zustandsautoamten werden auch die Speicherzugriffe im Split-Modus verteilt. Hierbei hat Prozessor 1 die höhere Priorität. Nach einem Zugrif auf den Hauptspeicher durch Prozessor 1 bekommt nun — wenn beide Prozessoren wieder auf den Hauptspeicher zugreifen wollen ~ Prozessor2 die
Speicherzugriffserlaubnis zugeteilt. Diese beiden Zustandsautomaten sind für jeden Prozessor implementiert. Im Lock-Modus werden die Ausgangssignale der Automaten verglichen um auftretende Fehler erkennen zu können.
Die Daten zum Aktualisieren des Cache 2 im Lock-Modus werden in der IRAM-Control
Einheit um 1,5 Takte verzögert.
In Bit 5 im Register 0 der SysControl wird codiert um welchen Core es sich handelt. Core 1 ist das Bit 0 und bei Core 2 ist es High. Dieses Register ist in den Speicherbereich mit der Adresse 65528 gespiegelt.
Bei einem Speicherzugriff von Core 2 wird erst überprüft in welchem Modus sich der Rechner befindet. Ist er im Lock-Modus so wird sein Speicherzugriff unterdrückt. Dieses Signal liegt als Common-Rail Signal vor, da es sicherheitskritisch ist.
Der Programmcounter des Prozessors 1 wird um 1,5 Takte verzögert um im Lock-Modus mit dem Programmcounter des Prozessors 2 verglichen werden zu können.
Im Split Modus können die Caches der beiden Prozessoren unterschiedlich nachgeladen werden. Wenn nun in den Lock-Modus umgeschaltet wird, sind die beiden Caches nicht kohärent zueinander. Dadurch können die beiden Prozessoren auseinanderlaufen und die Vergleicher signalisieren folglich einen Fehler. Um dies zu vermeiden, ist in der IRAM Control eine Flag Tabelle aufgebaut. In dieser wird vermerkt, ob eine Cachezeile im Lock- oder im Split-Modus geschrieben wurde. Im Lock-Modus wird der für die Cachezeile entsprechende Eintrag bei einer Cachezeilennachladung auf 0 gesetzt und im
Split-Modus — auch bei einer Cacheaktualisierung der Cachezeile von nur einem Cache — auf 1. Führt der Prozessor nun im Lock-Modus einen Speicherzugriff aus, so wird überprüft, ob diese Cachezeile im Lock-Modus aktualisiert wurde, d.h. in beiden Caches gleich ist. Im Split-Modus kann der Prozessor immer auf die Cachezeile zugreifen, unabhängig wie der
Flag Vector ist. Diese Tabelle muss nur einmal vorhanden sein, da bei einem Fehler die beiden Prozessoren auseinanderlaufen und somit an den Vergleichern dieser Fehler sicher erkannt wird. Da die Zugriffszeiten auf der zentralen Tabelle relativ hoch sind, kann diese Tabelle auch zu jedem Cache kopiert werden.
DramControl: In dieser Komponente werden für die Adress-, Daten- und Speichersteuersignale von jedem Prozessor das Parity gebildet.
Es gibt einen Prozess für beide Prozessor zum Sperren des Speichers. Dieser Prozess muss nicht sicher implementiert sein, da im Lock-Modus fehlerhafte Speicherzugriffe durch die Vergleicher erkannt werden und im Split-Modus keine sicherheitsrelevanten Anwendungen ausgeführt werden. Hierin wird überprüft, ob der Prozessor den Speicher für den anderen Prozessor sperren möchte. Dieses Sperren des Datenspeichers erfolgt durch einen Zugriff auf die Speicheradresse $FBFF$=64511. Dieses Signal soll genau ein Takt lang anliegen, auch wenn am Prozessor zum Zeitpunkt des Aufrufens ein wait- command anliegt. Der Zustandsautomat zur Verwaltung der Datenspeicherzugriffe besteht aus 2 Hauptzuständen:
- Prozessorstatus Lock: Die beiden Prozessoren arbeiten im Lock-Modus. D.h. die Funktionalität des Datenspeicheriocking ist nicht notwendig. Prozessor 1 koordiniert die Speicherzugriffe.
- Prozessorstatus Split: Nun ist eine Zugriffskonfliktauflösung auf den Datenspeicher nötig und ein Speichersperren muss erfolgen können.
Der Zustand im Split-Modus ist wiederum in 7 Zustände untergliedert, die die Zugriffskonflikte auflösen und den
Datenspeicher für jeweils den anderen Prozessor sperren können. Bei gleichzeitigem Wunsch der beiden Prozessoren bei einem Zugriff, stellt die aufgeführte Reihenfolge gleichzeitig die Priorisierung dar.
- Corel \_Lock: Prozessor 1 hat den Datenspeicher gesperrt. Möchte in diesem Zustand
Prozessor 2 auf den Speicher zugreifen, so wird er durch ein Wartesignal angehalten, bis Prozessor 1 den Datenspeicher wieder freigibt. \
- Core2\_Lock: Ist der gleiche Zustand wie der vorige nur dass nun Prozessor 2 den Datenspeicher gesperrt hat und Prozessor 1 bei Datenspeicheroperationen angehalten wird.
- lockl\_wait: Der Datenspeicher war durch den Prozessor 2 gesperrt als Prozessor 1 ihn ebenfalls für sich reservieren wollte. Prozessor 1 ist somit für die nächste Speichersperrung vorgemerkt.
- nex: Das gleiche für Prozessor 2. Der Datenspeicher war während des Sperrversuchs durch Prozessor 1 gesperrt. Prozessor 2 bekommt den Speicher vorreserviert. Bei normalen Speicherzugriff ohne Sperren kann hier Prozessor 2 vor Prozessor 1 zugreifen wenn davor Prozessor 1 dran war.
- Speicherzugriff von Prozessor 1: Der Speicher ist in diesem Fall nicht gesperrt. Prozessor 1 darf auf den Datenspeicher zugreifen. Falls er ihn sperren möchte, kann er dies in diesem Zustand vornehmen.
- Speicherzugriff durch Prozessor 2. Im selben Takt wollte Prozessor 1 nicht auf den Speicher zugreifen somit ist der Speicher frei für den Prozessor 2.
- kein Prozessor möchte auf den Datenspeicher zugreifen
Die DVE setzt sich wie erwähnt zusammen aus dem Detektierung des Umschaltwunsches
(IllOPDetect) der ModeSwitch-Einheit und der Iram- und DramControl.
In Figur 3 ist nun die Taktumschaltung an einem Beispiel dargestellt, so dass bezüglich des einen Modus im Vergleich zum anderen Modus eine Taktumschaltung erfolgt. Dabei sind die beiden Modi, der Takt clk und die beiden Prozessor- oder Coretakte gezeigt.
In einem Modus arbeiten die beiden Prozessoren in einem Taktversatz. Dieser kann sowohl um ganze Takte als auch um Teile des Taktes gegeneinander verschoben sein. Eine weitere Variante ist, dass in den beiden Modi eine unterschiedliche Taktfrequenz verwendet wird. Im sicherheitskritischen Modus kann zur Störungsunterdrückung z.B. ein niedrigerer Takt verwendet werden als im Performancemodus. Dabei können diese beiden Varianten auch miteinander kombiniert werden.
Daneben löst aber auch die dargestellte spezielle Implementierung die Eingangs genannten Aufgaben.
Bei den Implementierungen von insbesondere Zweiprozessorsystemen (Dual-Core) wird für jeden Prozessor ein Cache vorgesehen wie nochmals schematisch in Figur 4 gezeigt. Ein Cache ist normalerweise nicht ausreichend, da dieser Cache räumlich gesehen zwischen den beiden Prozessoren angeordnet werden muss. Aufgrund der langen Laufzeit zwischen dem Cache und den beiden Prozessoren könnten folglich die beiden Prozessoren nur mit einer begrenzten Taktfrequenz arbeiten.
Caches dienen als schneller Zwischenspeicher, damit der Prozessor die Daten nicht immer aus dem langsamen Hauptspeicher holen muss. Um dies zu ermöglichen, muss bei der Implementierung von Cache stark auf dessen Zugriffsdauer geachtet werden. Diese setzt sich aus der eigentlichen Zugriffszeit um die Daten aus dem Cache zu holen und aus der Zeit um die Daten an den Prozessor weiterzureichen zusammen. Ist der Cache nun räumlich weit entfernt vom Prozessor platziert, so dauert die Übermittlung der Daten sehr lange und der Prozessor kann nicht mehr mit seinem vollen Takt arbeiten. Aufgrund dieses Timingproblems wird bei Zweiprozessorsystemen für jeden Prozessor üblicherweise ein eigener Cache vorgesehen.
Wenn diese beiden Prozessoren nun mit einem Taktversatz betrieben werden, kann nun mit dem in Figur 5 vorgeschlagenen Verfahren auf den zweiten Cache für den Slave-
Prozessor verzichtet werden.
Ein Cache benötigt viel Chipfläche und auch viel Strom. Dadurch produziert er auch viel Abwärme, die abgeführt werden muss. Kann nun auf einen Cache verzichtet werden, so lässt sich ein Zweiprozessorsystem deutlich kostengünstiger implementieren.
Bei dem hier vorgestellten Zweirechnersystem ist ein Prozessor der Master und ein Prozessor der Slave. Der Master arbeitet als erstes die Daten ab und steuert folglich auch die Peripheriekomponenten wie Speicher, Cache, DMA-Kontroller usw. an. Der Slave arbeitet die gleichen Daten mit einem Taktversatz von hier beispielhaft 1,5 Takte ab. Das bedeutet auch, dass er die Daten aus dem gemeinsamen Speicher und von den externen Komponenten ebenfalls um diese Zeitdauer später erhält. Die Ausgangsdaten der beiden Prozessoren wie Speicheradresse, Daten, usw. werden miteinander verglichen. Um die Daten miteinander vergleichen zu können, müssen die Ergebnisse des Masters ebenfalls 1,5 Takte zwischengespeichert werden. Ein solches Beispielsystem ist unten abgebildet.
Um gemäß Figur 5 nun ein Cache für beide Prozessoren verwenden zu können, werden nun der Befehls- und Datencache direkt am Master angeordnet wie bei einem Single- Prozessor. Der Master muss somit keine Performanceeinbußen bezüglich der Laufzeiten zwischen Cache und Prozessor hinnehmen. Da der Slave die Daten erst 1,5 Takte später abarbeitet, kann man diese Zeit nun benutzen um die Daten an den zweiten nun räumlich weiter vom Cache entfernten Prozessor zu führen.
Dazu können bei einem beispielhaften Taktversatz von 1,5 Takten zwei Flip-Flops benutzt werden, wie dies in Figur 6 dargestellt ist. Das Erste wird mit dem Takt des
Masters angesteuert, das Zweite mit dem Takt des Slaves. Das erste Flip-Flop wird direkt am Ausgang der Quelle positioniert. Das Zweite wird nun entsprechend der Länge, die das Signal in der Differenz zwischen den beiden Takten zurücklegen kann, entsprechend näher am Slave positioniert. Dies entspricht bei 1,5 Takte Zeitversatz der Laufzeitlänge in einem halben Takt und bei einem Taktversatz von 2 Takte der Laufzeitlänge von einem
Takt. Dann übernimmt das zweite Flip-Flop das Signal. Nun kann noch einmal die Strecke, die das Signal während eines ganzen Taktes zurücklegen kann, überbrückt werden. In der Abbildung ist dies durch 1.) die nahe Anordnung an der Senke dargestellt, 2.) entspricht der Länge die in der Taktdifferenz zurückgelegt werden kann und 3.) ist die Länge die in einem Takt nach dem zweiten Flip-Flop zurückgelegt werden kann.
Claims
1. Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle eines Mehrprozessorsystems mit einem ersten und einem zweiten Prozessor, denen eine Speichereinheit zugeordnet ist, wobei der zweite Prozessor mit einem Taktversatz arbeitet und die Vorrichtung derart ausgebildet ist, dass der erste Prozessor auf die
Speichereinheit zugreift und der zweite Prozessor mit einem Taktversatz die Daten erhält.
2. Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 1, dadurch gekennzeichnet, dass der Taktversatz durch ein
Verzögerungselement genutzt wird um eine Überbrückung der Laufzeit der Daten und/oder Befehle von der Speichereinheit zu dem zweiten Prozessor zu realisieren.
3. Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 1, dadurch gekennzeichnet, dass der Taktversatz ausgenutzt wird um
Verleichsdaten des ersten Prozessors zum zweiten Prozessor zu führen.
4. Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 1, dadurch gekennzeichnet, dass als Zugriffe Schreiboperationen und Leseoperationen verzögert werden.
5. Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 1, dadurch gekennzeichnet, dass als Zugriffe nur Schreiboperationen verzögert werden.
6. Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 1, dadurch gekennzeichnet, dass als Zugriffe nur Leseoperationen verzögert werden.
7. Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 1, dadurch gekennzeichnet, dass der Taktversatz halbzahlig vorgegeben wird.
8. Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 1, dadurch gekennzeichnet, dass der Taktversatz ganzzahlig vorgegeben wird.
9. Verfahren zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 1, dadurch gekennzeichnet, dass der Taktversatz zu 1,5 Takten vorgegeben wird.
10. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle eines Mehrprozessorsystems mit einem ersten und einem zweiten Prozessor, denen eine Speichereinheit zugeordnet ist, wobei der zweite Prozessor mit einem Taktversatz arbeitet und die Vorrichtung derart ausgebildet ist, dass der erste Prozessor auf die Speichereinheit zugreift und der zweite Prozessor mit einem Taktversatz die Daten und/oder Befehle erhält.
11. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 10, dadurch gekennzeichnet, dass es sich bei der Speichereinheit um einen Cache handelt.
12. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 10, dadurch gekennzeichnet, dass die Speichereinheit von wenigstens einem Prozessor adressiert wird und die Speichereinheit direkt an dem Prozessor angekoppelt ist, der sie adressiert.
13. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 10, dadurch gekennzeichnet, dass ein Verzögerungselement enthalten ist und die Vorrichtung derart ausgestaltet ist, dass der Taktversatz durch das Verzögerungselement genutzt wird um eine Überbrückung der Laufzeit der Daten und/oder Befehle von der Speichereinheit zu dem zweiten Prozessor zu realisieren.
14. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 10, dadurch gekennzeichnet, dass Vergleichsmittel vorgesehen sind, durch welche die Daten und/oder Befehle verglichen werden.
15. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 14, dadurch gekennzeichnet, dass die Vergleichsmittel räumlich nah an dem nachfolgenden Prozessor angeordnet sind.
16. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 14, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass der Taktversatz ausgenutzt wird um die Verleichsdaten des ersten Prozessors zum zweiten Prozessor zu führen.
17. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 10, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass als Zugriffe Schreiboperationen und Leseoperationen verzögert werden.
18. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach
Anspruch 10, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass als Zugriffe nur Schreiboperationen verzögert werden.
19. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 10, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass als Zugriffe nur Leseoperationen verzögert werden.
20. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 10, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass der Taktversatz halbzahlig vorgegeben wird.
21. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach Anspruch 10, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass der Taktversatz ganzzahlig vorgegeben wird.
22. Vorrichtung zur Verzögerung der Zugriffe auf Daten und/oder Befehle nach
Anspruch 10, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass der Taktversatz zu 1,5 Takten vorgegeben wird. 23. Mehrprozessorsystem mit einer Vorrichtung nach einem der Ansprüche 10 bis
22.
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE200410051950 DE102004051950A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren und Vorrichtung zur Taktumschaltung bei einem Mehrprozessorsystem |
DE200410051952 DE102004051952A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren zur Datenverteilung und Datenverteilungseinheit in einem Mehrprozessorsystem |
DE200410051992 DE102004051992A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren und Vorrichtung zur Verzögerung von Zugriffen auf Daten und/oder Befehle eines Mehrprozessorsystems |
DE200410051937 DE102004051937A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren und Vorrichtung zur Synchronisierung in einem Mehrprozessorsystem |
DE200410051964 DE102004051964A1 (de) | 2004-10-25 | 2004-10-25 | Verfahren und Vorrichtung zur Überwachung einer Speichereinheit in einem Mehrprozessorsystem |
PCT/EP2005/055542 WO2006045804A1 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur verzögerung von zugriffen auf daten und/oder befehle eines mehrprozessorsystems |
Publications (1)
Publication Number | Publication Date |
---|---|
EP1812861A1 true EP1812861A1 (de) | 2007-08-01 |
Family
ID=35677569
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP05801268A Ceased EP1807761A1 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur datenverteilung aus wenigstens einer datenquelle in einem mehrprozessorsystem |
EP05811107A Withdrawn EP1820102A2 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur taktumschaltung bei einem mehrprozessorsystem |
EP05811008A Ceased EP1812861A1 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur verzögerung von zugriffen auf daten und/oder befehle eines mehrprozessorsystems |
EP05801543A Not-in-force EP1807763B1 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur überwachung einer speichereinheit in einem mehrprozessorsystem |
EP05797084A Active EP1810145B1 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur synchronisierung in einem mehrprozessorsystem |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP05801268A Ceased EP1807761A1 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur datenverteilung aus wenigstens einer datenquelle in einem mehrprozessorsystem |
EP05811107A Withdrawn EP1820102A2 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur taktumschaltung bei einem mehrprozessorsystem |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP05801543A Not-in-force EP1807763B1 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur überwachung einer speichereinheit in einem mehrprozessorsystem |
EP05797084A Active EP1810145B1 (de) | 2004-10-25 | 2005-10-25 | Verfahren und vorrichtung zur synchronisierung in einem mehrprozessorsystem |
Country Status (8)
Country | Link |
---|---|
US (4) | US20080126718A1 (de) |
EP (5) | EP1807761A1 (de) |
JP (5) | JP2008518312A (de) |
KR (4) | KR20070067168A (de) |
AT (2) | ATE407398T1 (de) |
DE (2) | DE502005005284D1 (de) |
RU (1) | RU2007119316A (de) |
WO (5) | WO2006045798A1 (de) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7882379B2 (en) * | 2006-09-22 | 2011-02-01 | Sony Computer Entertainment Inc. | Power consumption reduction in a multiprocessor system |
US20080244305A1 (en) * | 2007-03-30 | 2008-10-02 | Texas Instruments Deutschland, Gmbh | Delayed lock-step cpu compare |
DE102007063291A1 (de) * | 2007-12-27 | 2009-07-02 | Robert Bosch Gmbh | Sicherheitssteuerung |
JP4633134B2 (ja) * | 2008-03-27 | 2011-02-16 | ルネサスエレクトロニクス株式会社 | マイクロコントローラ、制御システム及びマイクロコントローラの設計方法 |
US7941698B1 (en) * | 2008-04-30 | 2011-05-10 | Hewlett-Packard Development Company, L.P. | Selective availability in processor systems |
JP2010198131A (ja) * | 2009-02-23 | 2010-09-09 | Renesas Electronics Corp | プロセッサシステム、及びプロセッサシステムの動作モード切り替え方法 |
US8275977B2 (en) * | 2009-04-08 | 2012-09-25 | Freescale Semiconductor, Inc. | Debug signaling in a multiple processor data processing system |
US8295287B2 (en) * | 2010-01-27 | 2012-10-23 | National Instruments Corporation | Network traffic shaping for reducing bus jitter on a real time controller |
US8954714B2 (en) * | 2010-02-01 | 2015-02-10 | Altera Corporation | Processor with cycle offsets and delay lines to allow scheduling of instructions through time |
US9052887B2 (en) | 2010-02-16 | 2015-06-09 | Freescale Semiconductor, Inc. | Fault tolerance of data processing steps operating in either a parallel operation mode or a non-synchronous redundant operation mode |
KR101664108B1 (ko) | 2010-04-13 | 2016-10-11 | 삼성전자주식회사 | 멀티 코어의 동기화를 효율적으로 처리하기 위한 하드웨어 가속 장치 및 방법 |
JP5718600B2 (ja) * | 2010-09-10 | 2015-05-13 | 日本電気通信システム株式会社 | 情報処理システム、および、情報処理方法 |
US8683251B2 (en) | 2010-10-15 | 2014-03-25 | International Business Machines Corporation | Determining redundancy of power feeds connecting a server to a power supply |
JP5796311B2 (ja) * | 2011-03-15 | 2015-10-21 | オムロン株式会社 | 制御装置およびシステムプログラム |
JP5679047B2 (ja) | 2011-04-18 | 2015-03-04 | 富士通株式会社 | スレッド処理方法、およびスレッド処理システム |
US9086977B2 (en) * | 2011-04-19 | 2015-07-21 | Freescale Semiconductor, Inc. | Cache memory with dynamic lockstep support |
WO2014080245A1 (en) | 2012-11-22 | 2014-05-30 | Freescale Semiconductor, Inc. | Data processing device, method of execution error detection and integrated circuit |
US9429981B2 (en) * | 2013-03-05 | 2016-08-30 | St-Ericsson Sa | CPU current ripple and OCV effect mitigation |
US9823983B2 (en) | 2014-09-25 | 2017-11-21 | Nxp Usa, Inc. | Electronic fault detection unit |
WO2016087175A1 (de) * | 2014-12-01 | 2016-06-09 | Continental Teves Ag & Co. Ohg | Rechensystem für ein kraftfahrzeugsystem |
JP6516097B2 (ja) * | 2015-06-11 | 2019-05-22 | 大日本印刷株式会社 | 演算装置、icカード、演算方法、及び演算処理プログラム |
JP2019061392A (ja) | 2017-09-26 | 2019-04-18 | ルネサスエレクトロニクス株式会社 | マイクロコントローラ及びマイクロコントローラの制御方法 |
US10642826B1 (en) | 2018-08-30 | 2020-05-05 | Gravic, Inc. | Mixed-mode method for combining active/active and validation architectures utilizing a check integrity module |
US11269799B2 (en) * | 2019-05-03 | 2022-03-08 | Arm Limited | Cluster of processing elements having split mode and lock mode |
US11899547B2 (en) * | 2021-11-30 | 2024-02-13 | Mellanox Technologies, Ltd. | Transaction based fault tolerant computing system |
US12032460B2 (en) * | 2022-02-11 | 2024-07-09 | Stmicroelectronics S.R.L. | Systems and methods to test an asynchronous finite machine |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE1269827B (de) * | 1965-09-09 | 1968-06-06 | Siemens Ag | Verfahren und Zusatzeinrichtung zur Synchronisierung von parallel arbeitenden Datenverarbeitungsanlagen |
US3783250A (en) * | 1972-02-25 | 1974-01-01 | Nasa | Adaptive voting computer system |
US4823256A (en) * | 1984-06-22 | 1989-04-18 | American Telephone And Telegraph Company, At&T Bell Laboratories | Reconfigurable dual processor system |
AU616213B2 (en) * | 1987-11-09 | 1991-10-24 | Tandem Computers Incorporated | Method and apparatus for synchronizing a plurality of processors |
US6038584A (en) * | 1989-11-17 | 2000-03-14 | Texas Instruments Incorporated | Synchronized MIMD multi-processing system and method of operation |
US5226152A (en) * | 1990-12-07 | 1993-07-06 | Motorola, Inc. | Functional lockstep arrangement for redundant processors |
DE4104114C2 (de) * | 1991-02-11 | 2000-06-08 | Siemens Ag | Redundantes Datenverarbeitungssystem |
JPH05128080A (ja) * | 1991-10-14 | 1993-05-25 | Mitsubishi Electric Corp | 情報処理装置 |
US5751932A (en) * | 1992-12-17 | 1998-05-12 | Tandem Computers Incorporated | Fail-fast, fail-functional, fault-tolerant multiprocessor system |
JPH07121483A (ja) * | 1993-10-28 | 1995-05-12 | Nec Eng Ltd | 共有メモリアクセス制御回路 |
US5758132A (en) | 1995-03-29 | 1998-05-26 | Telefonaktiebolaget Lm Ericsson | Clock control system and method using circuitry operating at lower clock frequency for selecting and synchronizing the switching of higher frequency clock signals |
CA2178440A1 (en) * | 1995-06-07 | 1996-12-08 | Robert W. Horst | Fail-fast, fail-functional, fault-tolerant multiprocessor system |
JPH096733A (ja) * | 1995-06-14 | 1997-01-10 | Toshiba Corp | 並列信号処理装置 |
JPH0973436A (ja) * | 1995-09-05 | 1997-03-18 | Mitsubishi Electric Corp | 多重化計算機における動作モード切替方式 |
US5732209A (en) * | 1995-11-29 | 1998-03-24 | Exponential Technology, Inc. | Self-testing multi-processor die with internal compare points |
US5809522A (en) * | 1995-12-18 | 1998-09-15 | Advanced Micro Devices, Inc. | Microprocessor system with process identification tag entries to reduce cache flushing after a context switch |
FR2748136B1 (fr) * | 1996-04-30 | 1998-07-31 | Sextant Avionique | Module electronique avec architecture redondante pour controle d'integrite du fonctionnement |
GB2317032A (en) * | 1996-09-07 | 1998-03-11 | Motorola Gmbh | Microprocessor fail-safe system |
GB9704542D0 (en) * | 1997-03-05 | 1997-04-23 | Sgs Thomson Microelectronics | A cache coherency mechanism |
EP0978784A1 (de) * | 1998-08-04 | 2000-02-09 | Motorola, Inc. | Verfahren zur Rechnerprogrammkodierung und Verfahren zur Fehlerbeseitigung kodierter Rechnerprogramme |
GB2340627B (en) * | 1998-08-13 | 2000-10-04 | Plessey Telecomm | Data processing system |
JP2000200255A (ja) * | 1999-01-07 | 2000-07-18 | Hitachi Ltd | プロセッサ間の同期化方法及び同期回路 |
WO2000079405A1 (fr) * | 1999-06-21 | 2000-12-28 | Hitachi, Ltd. | Processeur de donnees |
US6640313B1 (en) * | 1999-12-21 | 2003-10-28 | Intel Corporation | Microprocessor with high-reliability operating mode |
US6615366B1 (en) * | 1999-12-21 | 2003-09-02 | Intel Corporation | Microprocessor with dual execution core operable in high reliability mode |
US6772368B2 (en) * | 2000-12-11 | 2004-08-03 | International Business Machines Corporation | Multiprocessor with pair-wise high reliability mode, and method therefore |
DE10136335B4 (de) | 2001-07-26 | 2007-03-22 | Infineon Technologies Ag | Prozessor mit mehreren Rechenwerken |
US6947047B1 (en) * | 2001-09-20 | 2005-09-20 | Nvidia Corporation | Method and system for programmable pipelined graphics processing with branching instructions |
US20040076189A1 (en) * | 2002-10-17 | 2004-04-22 | International Business Machines Corporation | Multiphase clocking method and apparatus |
US7055060B2 (en) * | 2002-12-19 | 2006-05-30 | Intel Corporation | On-die mechanism for high-reliability processor |
JP2004234144A (ja) * | 2003-01-29 | 2004-08-19 | Hitachi Ltd | プロセッサの動作比較装置および動作比較方法 |
BRPI0411824A (pt) * | 2003-06-24 | 2006-08-08 | Bosch Gmbh Robert | processo para a comutação entre, pelo menos, dois modos de operação de uma unidade de processamento, bem como, unidade de processamento correspondente |
US7134031B2 (en) * | 2003-08-04 | 2006-11-07 | Arm Limited | Performance control within a multi-processor system |
DE10349581A1 (de) * | 2003-10-24 | 2005-05-25 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Umschaltung zwischen wenigstens zwei Betriebsmodi einer Prozessoreinheit |
-
2005
- 2005-10-25 EP EP05801268A patent/EP1807761A1/de not_active Ceased
- 2005-10-25 KR KR1020077009252A patent/KR20070067168A/ko not_active Application Discontinuation
- 2005-10-25 WO PCT/EP2005/055532 patent/WO2006045798A1/de active Application Filing
- 2005-10-25 US US11/666,407 patent/US20080126718A1/en not_active Abandoned
- 2005-10-25 KR KR1020077009250A patent/KR20070083771A/ko not_active Application Discontinuation
- 2005-10-25 KR KR1020077009253A patent/KR20070083772A/ko active IP Right Grant
- 2005-10-25 WO PCT/EP2005/055539 patent/WO2006045802A2/de active Application Filing
- 2005-10-25 DE DE502005005284T patent/DE502005005284D1/de active Active
- 2005-10-25 DE DE502005005490T patent/DE502005005490D1/de active Active
- 2005-10-25 JP JP2007537305A patent/JP2008518312A/ja active Pending
- 2005-10-25 US US11/666,405 patent/US7853819B2/en active Active
- 2005-10-25 EP EP05811107A patent/EP1820102A2/de not_active Withdrawn
- 2005-10-25 JP JP2007537304A patent/JP2008518311A/ja active Pending
- 2005-10-25 US US11/666,406 patent/US20080163035A1/en not_active Abandoned
- 2005-10-25 JP JP2007537301A patent/JP2008518308A/ja active Pending
- 2005-10-25 JP JP2007537303A patent/JP2008518310A/ja active Pending
- 2005-10-25 EP EP05811008A patent/EP1812861A1/de not_active Ceased
- 2005-10-25 WO PCT/EP2005/055538 patent/WO2006045801A2/de active IP Right Grant
- 2005-10-25 EP EP05801543A patent/EP1807763B1/de not_active Not-in-force
- 2005-10-25 RU RU2007119316/09A patent/RU2007119316A/ru not_active Application Discontinuation
- 2005-10-25 AT AT05797084T patent/ATE407398T1/de not_active IP Right Cessation
- 2005-10-25 KR KR1020077009251A patent/KR20070062579A/ko not_active Application Discontinuation
- 2005-10-25 US US11/666,413 patent/US20090164826A1/en not_active Abandoned
- 2005-10-25 EP EP05797084A patent/EP1810145B1/de active Active
- 2005-10-25 WO PCT/EP2005/055542 patent/WO2006045804A1/de active Application Filing
- 2005-10-25 WO PCT/EP2005/055537 patent/WO2006045800A1/de active Application Filing
- 2005-10-25 AT AT05801543T patent/ATE409327T1/de not_active IP Right Cessation
- 2005-10-25 JP JP2007537302A patent/JP4532561B2/ja not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
See references of WO2006045804A1 * |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1807763B1 (de) | Verfahren und vorrichtung zur überwachung einer speichereinheit in einem mehrprozessorsystem | |
DE102005055067A1 (de) | Vorrichtung und Verfahren zum Beheben von Fehlern bei einem wenigstens zwei Ausführungseinheiten mit Registern aufweisenden System | |
DE68924119T2 (de) | Verfahren und Vorrichtung zum Wiederanlauf nach einem Fehler in einem digitalen Rechnersystem. | |
DE68924223T2 (de) | Mechanismus zum Prüfpunktwiederversuch. | |
DE69316755T2 (de) | Fehlertolerantes rechnersystem. | |
EP1917592B1 (de) | Rechnersystems mit wenigstens zwei ausführungseinheiten und einer vergleichseinheit sowie verfahren zu dessen steuerung | |
EP3077912B1 (de) | Steuergerät für ein kraftfahrzeug | |
EP1667022A2 (de) | Vorrichtung und Verfahren zur Behebung von Fehlern bei einem Prozessor mit zwei Ausführungseinheiten | |
DE68923995T2 (de) | Mikroprozessor, der in einem funktionellen Redundanzüberwachungsmodus betriebsfähig ist. | |
WO2007057270A1 (de) | Programmgesteuerte einheit und verfahren zum betreiben derselbigen | |
EP1776637A2 (de) | Verfahren zur verzögerung von zugriffen auf daten und/oder befehle eines zweirechnersystems sowie entsprechende verzögerungseinheit | |
EP1398701A1 (de) | Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme | |
DE102004051952A1 (de) | Verfahren zur Datenverteilung und Datenverteilungseinheit in einem Mehrprozessorsystem | |
EP1618476A2 (de) | Programmgesteuerte einheit und verfahren | |
WO2006015955A2 (de) | Verfahren zur fehlerregistrierung und entsprechendes register | |
DE102004051937A1 (de) | Verfahren und Vorrichtung zur Synchronisierung in einem Mehrprozessorsystem | |
DE102004051992A1 (de) | Verfahren und Vorrichtung zur Verzögerung von Zugriffen auf Daten und/oder Befehle eines Mehrprozessorsystems | |
DE102004051950A1 (de) | Verfahren und Vorrichtung zur Taktumschaltung bei einem Mehrprozessorsystem | |
DE102004051964A1 (de) | Verfahren und Vorrichtung zur Überwachung einer Speichereinheit in einem Mehrprozessorsystem | |
DE102005037226A1 (de) | Verfahren und Vorrichtung zur Festlegung eines Startzustandes bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten durch markieren von Registern | |
WO2004034172A2 (de) | Verfahren zur ereignissynchronisation, damit synchronisierte prozessoren und fehlertoleranter systeme mit derartigen prozessoren | |
DE69619355T2 (de) | Peripheriemodul und Mikroprozessorsystem | |
EP1915687A1 (de) | Verfahren und vorrichtung zur steuerung eines rechnersystems mit wenigstens zwei ausführungseinheiten | |
DE3789128T2 (de) | Digitale Datenverarbeitungsvorrichtung. | |
DD254077A1 (de) | Mikrorechneranordnung zum einsatz in multimikrorechnersystemen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20070525 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR |
|
17Q | First examination report despatched |
Effective date: 20070827 |
|
DAX | Request for extension of the european patent (deleted) | ||
REG | Reference to a national code |
Ref country code: DE Ref legal event code: R003 |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED |
|
18R | Application refused |
Effective date: 20121108 |