EP1810145A1 - Verfahren und vorrichtung zur synchronisierung in einem mehrprozessorsystem - Google Patents

Verfahren und vorrichtung zur synchronisierung in einem mehrprozessorsystem

Info

Publication number
EP1810145A1
EP1810145A1 EP05797084A EP05797084A EP1810145A1 EP 1810145 A1 EP1810145 A1 EP 1810145A1 EP 05797084 A EP05797084 A EP 05797084A EP 05797084 A EP05797084 A EP 05797084A EP 1810145 A1 EP1810145 A1 EP 1810145A1
Authority
EP
European Patent Office
Prior art keywords
processor
synchronization
signal
mode
processors
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.)
Granted
Application number
EP05797084A
Other languages
English (en)
French (fr)
Other versions
EP1810145B1 (de
Inventor
Thomas Kottke
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from DE200410051950 external-priority patent/DE102004051950A1/de
Priority claimed from DE200410051952 external-priority patent/DE102004051952A1/de
Priority claimed from DE200410051992 external-priority patent/DE102004051992A1/de
Priority claimed from DE200410051937 external-priority patent/DE102004051937A1/de
Priority claimed from DE200410051964 external-priority patent/DE102004051964A1/de
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of EP1810145A1 publication Critical patent/EP1810145A1/de
Application granted granted Critical
Publication of EP1810145B1 publication Critical patent/EP1810145B1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1695Error detection or correction of the data by redundancy in hardware which are operating with time diversity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/845Systems in which the redundancy can be transformed in increased performance

Definitions

  • dual-computer systems or dual-processor systems are today's computer systems for safety-critical applications, in particular in vehicles such as antilock 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. It is relatively difficult to protect the core itself, so the processor.
  • One solution to this is, as mentioned, the use of a dual-computer system or dual core system for fault detection.
  • Such processor units with at least two integrated execution units are thus known as dual-core or multi-core architectures.
  • dual-core or multi-core architectures are proposed according to the current state of the art mainly for two reasons: On the one hand, an increase in performance, ie a performance increase, can be achieved by considering and treating the two execution units or cores as two arithmetic units on a semiconductor component. In this configuration, the two execution units or cores process different programs or tasks. As a result, an increase in performance can be achieved, which is why this configuration is referred to as a power mode or performance mode.
  • the second reason to implement a dual-core or multi-core architecture is an increase in security by the redundancy of the two execution units
  • Execute program The results of the two execution units or CPUs, ie cores, are compared and an error can be recognized in the comparison for consistency.
  • this configuration is referred to as safety mode or safety mode or error detection mode.
  • the object of the invention is now to present a unit and a method which supplies the instructions / data to the at least two processors or cores redundantly or differently depending on the mode and in particular divides the memory access rights in the performance mode, the synchronization and / or desynchronization of the two processors or enable cores during a mode change.
  • Such a unit is not yet known. It enables the effective operation of a two-processor system so that the two modes of safety and performance can be switched during operation.
  • processors will be discussed below, which also includes cores or computing units conceptually.
  • the synchronization can be clock-accurate and clock-synchronized by the presented method, but there may also be applications in which such an exact synchronization is not required. Then this method can also be used to achieve a "loose" synchronization: a loose synchronization is a synchronization in which the two
  • processors process the same, but the time interval of the processing can vary in a given by the comparator frame.
  • 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.
  • the invention also shows a method and a device in which the switchover is triggered by a signal.
  • This can be generated, for example, by observing the command bus (see if the switch request is executed) or a control signal of the decoder (eg triggering an interrupt, writing to a register, ... in the other processor) and thereby the processor to the default Program address jumps.
  • the two processors may suitably jump to different program locations due to an identifier, ie ID, which is unique for each processor in the multiprocessor system and thus desychronized (important: processor identification by a processorID bit, conditional jump, readout of processorld bit from a memory area separate for each processor but with the same address, processor-bit stored in internal processor register).
  • ID an identifier
  • the invention discloses a method and a device for synchronization in a multiprocessor system having at least two processors, wherein switching means are provided by which can be switched between at least two operating modes, wherein the device is configured such that a synchronization is performed by a stop signal, which Pre-processor stops to synchronize with the at least second processor.
  • the synchronization can be accomplished by notifying a switch request of at least one processor (e.g., triggering an interrupt, writing to a register, ... the other processor) and thereby causing the processor to jump to a predetermined program address.
  • processor e.g., triggering an interrupt, writing to a register, ... the other processor
  • the invention also shows a data distribution unit of at least one
  • switching means ModeSwitch
  • the unit is configured such that the data distribution and / or the data source (in particular Instr.Speicher, data memory , Cache) is dependent on the mode of operation.
  • 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 are the ones resulting from the processing of the same programs
  • the erf ⁇ ndungswashe unit or the inventive method allows the implementation of the two modes in a two-processor system. If 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.
  • F mode error detection mode
  • P mode performance mode
  • 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
  • the data distribution unit accepts this at a second port, but does not forward the request to the others
  • 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
  • the Whole system is operated with a predetermined clock or in predetermined clock cycles (clock cycle) CLK.
  • CLK clock cycles
  • the clock is supplied to this.
  • a special feature for error detection is also included by way of example, in which namely the first computer 100 and the second
  • Calculator 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 can be an integer offset of the clock cycle, but just as shown in this example, for example, an offset of 1.5
  • this system is just designed, for example, to operate in a predetermined time offset or clock cycle offset, in particular here 1.5 clock cycles, ie during the one 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.
  • 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).
  • IA1 instruction address 1
  • 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).
  • Command bus 117 consisting of 117A and 117B is a component 103, e.g. B. an 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 at 116, which is a data address bus or a data address line 116A and a
  • Data bus or a data line 116B contains.
  • 116A that is to say the data address line, is connected to the computer 100 via a data address connection DA1 (data address 1) and to the computer 101 via a data address connection DA2 (data address 2).
  • DA1 data address 1
  • DA2 data address 2
  • DO1 Data Out 1
  • DO2 Data Out 2
  • 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 for error prevention which error detection generate such as a parity bit or other error code such as an error correction code, so ECC, o. ⁇ ..
  • ECC error correction code
  • Also provided for this purpose are the corresponding Starbucksungsprüf healthyen or check devices 108 and 109 for checking the respective misdetection so for example, the parity bit or other 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.
  • Different variants can be implemented: Delay the write and read operations, delay only the write operations, or, although not preferred, delay 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
  • IllOpDetect Switching between the two modes is detected by the "Switch-Detect" units located between the cache and the processor on the instruction bus and looking to load the IUOp command into the processor. so this event is communicated to the Modeswitch unit.
  • the Switch-Detect unit is unique to each processor, and the Switch-Detect unit does not need to be fault-tolerant because it is duplicated and redundant. On the other hand, it is conceivable to perform this unit fault-tolerant and thus singular, but preferred is the redundant design.
  • ModeSwitch Switching between the two modes is triggered by the "Switch-Detect" unit.If switching from Lock to Split mode, both "Switch-Detect” units will detect switching as both processors are the same Execute program code in Lock mode. The "Switch-Detect” unit of the processor 1 detects this 1.5 clocks before the "Switch-Detect” unit of the processor 2.
  • the "Modeswitch” unit holds the processor 1 by 2 with the help of the wait signal
  • the processor 2 is also stopped 1.5 clocks later, but only half a clock so that it is synchronized to the system clock, then the status signal is switched to split for the other components and the two processors continue to work If the two processors now perform different tasks, they must diverge in program code, by having read access to the processor ID immediately after switching to split mode This read processor ID is different for each of the two processors compared to a desired processor ID, then with a Conditional Jump command the appropriate processor to a other program site be brought. When switching from split mode to lock mode, a processor will notice this, or one of them first. This processor will execute program code containing the switchover command. This is now registered by the "Switch-Detect" unit and communicates this to the Modeswitch unit, which stops the corresponding processor and shares the second one
  • Desired synchronization by an interrupt with The second processor receives an interrupt and can now execute a software routine to complete its task. Now he also jumps to the program location where the changeover command is located. His "Switch-Detect" unit now also signals the desire to change mode to the Modeswitch unit. The Wait signal for the processor 1 is now deactivated for the next rising system clock edge and 1.5 clocks later for the processor 2. Both now work again synchronous with a clock offset of 1.5 clocks.
  • Mode this can be detected by an external watchdog.
  • the watchdog Upon a trigger signal for each processor, the watchdog notices that the waiting processor is no longer reporting. 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 the lock mode and " ⁇ 01" is the split mode. Errors have occurred with "W and" ⁇ 11 "'.
  • IramControl Access to the instruction memory of the two processors is via the
  • IRAM Control Controlled by IRAM Control. This must be designed securely because it is a single point of failure. It consists of two state machines for each processor, ie one 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. The reloading of the two caches of the processors are controlled by 2 state machines. A synchronous state machine iramclkreset and an asynchronous readiram. These two state car offices also distribute the memory accesses in split mode. Here 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 assigned the memory access permission. These two state machines 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 delayed by 1.5 cycles in the IRAM control unit.
  • This register is mirrored in the memory area with the address 65528.
  • the program counter of the processor 1 is delayed by 1.5 clocks to be compared in lock mode with the program counter of the processor 2 can.
  • 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. In this is noted whether a cache line in
  • Lock or split mode was written.
  • lock mode the cache line entry value is set to 0 on a cache line reload, and in split mode, even if the cache line is cached from a single cache, to 1. If the processor now executes a memory access in lock mode, then becomes checks if this cache line has been updated in lock mode, ie is the same in both caches. in the
  • DramControl In this component, the parity is formed for each of the address, data, and memory control signals from each processor.
  • Processor 1 coordinates the memory accesses.
  • the state in split mode is again subdivided into 7 states, which are the
  • processor 1 has locked the data store. If processor 2 wants to access the memory in this state, it is stopped by a wait signal until processor 1 releases the data memory again.
  • ⁇ - Core2 ⁇ _Lock Is the same state as the previous one except that now processor 2 has locked the data memory and processor 1 is stopped during data storage operations.
  • 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 DVE consists of the detection of the changeover request (IUOPDetect) of the ModeSwitch unit and the Iram and DramControl.
  • the switching of the two processors is triggered here by way of example by the command IHOp in the program.
  • each processor can be uniquely identified.
  • a number is assigned to each processor.
  • one core is 1 and the other is 0. This is encoded in the processor status register.
  • the two processors are stopped here for synchronization by the wait command.
  • the clock for the processor to be paused may be stopped (by, for example, an OR with o to pause and 1 to continue clocking).
  • Switching between the two modes is detected by the units “Switch-Detect” which is located between the cache and the Processor on the instruction bus and see if the command IHOp is loaded into the processor. If the command is detected, this event is communicated to the Modeswitch unit. This detection is signaled by the "Core 1 signal” or “Core 2 signal” (see Figure 2) of the "Mode-Switch” unit.
  • the “Switch-Detect” unit is available for each processor individually. Detect “does not have to be fault-tolerant since it is duplicated and therefore redundant.
  • Mode-Switch Switching between the two modes is triggered by the "Switch-Detect” unit If switching from the Lock to the Split mode, both "Switch-Detect” units detect the changeover as both
  • Processors execute the same program code in lock mode.
  • the "Switch-Detect” unit of the processor 1 detects this 1.5 clocks before the "Switch-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.
  • the status signal is switched to split for the other components and the two processors continue to work.
  • the two processors In order for the two processors to perform different tasks, they must diverge in the program code. This is done by reading the processor ID directly after switching to split mode. This read processor ID is for each of the two processors.
  • the address of the status register in which the processor ID is stored is first written in rl LDL r 1,248 LDH r 1,255, followed by separation of the two processors by IUOp command error
  • Test bit at 5th digit of the status register If it is 0, then it is processor 1 and 1 is processor 2 BTEST r2,5 by a conditional jump is now brought processor 2 to another program point JMPI CT 10
  • both "Switch-Detect" units must tell the Modeswitch unit that they want to be in Split mode. If the changeover request is made by only one unit, the error is recognized by the comparison units, since these continue to receive data from one of the two processors and these do not match the stopped processor.
  • the two processors are in split mode and one does not switch back to lock mode, this can be detected by an external watchdog.
  • the watchdog Upon a trigger signal for each processor, the watchdog notices that the waiting processor is no longer reporting. If there is only one watchdog signal for the processor system, then the triggering of the watchdog must only take place in lock mode.
  • Watchdog detect that the mode switch was not made.
  • the mode signal is available as a dual-rail signal (in Figure 2 it is called status). Where “10” stands for lock mode and "01" for split mode. Errors have occurred with “00" and "11". Since the switch command is detected at the beginning of the pipeline of the processor, there must be no jumps in the pipeline stages after detection. The easiest way to prevent this is to introduce two NOps before the IHOp command.
  • the core of the invention is, as stated above, the general mode of operation of the mode

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 Synchronisierung in einem Mehrprozessorsystem mit wenigstens zwei Prozessoren, wobei Umschaltmittel enthalten sind durch welche zwischen wenigstens zwei Betriebsmodi umgeschalten werden kann, wobei die Vorrichtung derart ausgestaltet sind, dass eine Synchronisierung durch ein Anhaltesignal durchgeführt wird, welches einen vorauseilenden Prozessor anhält um diesen mit dem wenigstens zweiten Prozessor zu synchronisieren.

Description

Verfahren und Vorrichtung zur Synchronisierung in einem Mehrprozessorsystem
Stand der Technik
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 Ausführungseinheiten 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 Ausführungseinheiten oder Cores als zwei Recheneinheiten auf einem Halbleiterbaustein betrachtet und behandelt werden. In dieser Konfiguration bearbeiten die zwei Ausführungseinheiten 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 Ausführungseinheiten redundant das gleiche
Programm abarbeiten. Die Ergebnisse der beiden Ausführungseinheiten 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. Kombiniert man nun diese beiden Betriebsarten 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.
Die Aufgabe der Erfindung ist nun eine Einheit und eine Verfahren vorzustellen, die den wenigstens beiden Prozessoren oder Cores abhängig vom Modus die Instruktionen/ Daten redundant oder unterschiedlich liefert und insbesondere im Performance-Modus die Speicherzugriffsrechte aufteilt, die Synchronisation und/oder Desynchronisation der beiden Prozessoren oder Cores bei einem Moduswechsel ermöglichen.
Solch eine Einheit ist bis jetzt noch nicht bekannt. Sie 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. Weiterhin ist es Aufgabe der Erfindung eine Möglichkeit anzugeben mit der eine Synchronisierung des Mehrprozessorsystems erfolgen kann. Bis jetzt ist noch kein solches Verfahren, bzw. eine Implementierung bekannt. Es gibt Multiprozessorsysteme die nur einen von beiden Modi können, aber keines, dass taktsynchron arbeitet, umschaltbar ist und die Daten taktgenau vergleichen kann. Die Synchronsation kann taktgenau und taktsynchron durch das vorgestellte Verfahren erfolgen, es kann aber auch Anwendungen geben, bei denen solch eine genaue Synchronisation nicht erforderlich ist. Dann kann dieses Verfahren auch angewandt werden um eine „lose" Synchronisation zu erreichen. Eine lose Synchronisation ist eine Synchronisation bei der die beiden
Prozessoren zwar das gleiche abarbeiten, der zeitliche Abstand der Abarbeitung jedoch in einem durch den Vergleicher vorgegebenen Rahmen schwanken kann.
Beschreibung der Ausführungsbeispiele und Vorteile der Erfindung
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.
Um diese Umschaltung in einem taktsynchronen System, bei dem die Ausgangsdaten taktsynchron verglichen werden sollen, zwischen den beiden Modi zu ermöglichen, müssen diese beide Prozessoren synchronisierbar sein. D.h., dass wenn der Prozessor vom Performance Modus (=Modus, in dem sie verschiedene Aufgaben abarbeiten und die Ausgangsdaten nicht verglichen werden) in einen sicheren Modus (=Modus, in dem die beiden Prozessoren die gleiche Aufgabe abarbeiten und deren Ausgaben in jedem Takt verglichen werden) wechselt, müssen die beiden Prozessoren im Programmablauf synchronisiert werden können.
So zeigt die Erfindung auch ein Verfahren und eine Vorrichtung bei der der Umschaltwunsch durch ein Signal ausgelöst wird,. Dies kann z.B. durch das Beobachten des Befehlsbusses erzeugt werden (schauen ob der Umschaltwunsch ausgeführt wird) oder ein Steuersignal des Decoders sein (z.B. Auslösen eines Interrupts, Schreiben in ein Register, ... bei dem anderen Prozessor) und der Prozessor dadurch an die vorgegeben Programmadresse springt. - A -
Daneben können zweckmäßiger Weise die beiden Prozessoren aufgrund einer Kennung, also ID, die für jeden Prozessor in dem Mehrprozessorsystem einzigartig ist, an verschiedene Programmstellen springen und somit desychronisiert werden (wichtig: Prozessoridentifikation durch ein ProzessorID-Bit, bedingter Sprung, Auslesen des Prozessorld-Bit aus einem für jeden Prozessor separaten Speicherbereich aber mit gleicher Adresse, Prozessorld-Bit abgelegt in internem Prozessorregister).
Die Erfindung offenbart ein Verfahren und eine Vorrichtung zur Synchronisierung in einem Mehrprozessorsystem mit wenigstens zwei Prozessoren, wobei Umschaltmittel enthalten sind durch welche zwischen wenigstens zwei Betriebsmodi umgeschalten werden kann, wobei die Vorrichtung derart ausgestaltet sind, dass eine Synchronisierung durch ein Anhaltesignal durchgeführt wird, welches einen vorauseilenden Prozessor anhält um diesen mit dem wenigstens zweiten Prozessor zu synchronisieren.
Zweckmäßig kann die Synchronisation durch Mitteilung eines Umschaltwunsches wenigstens eines Prozessors erfolgen (z.B. Auslösen eines Interrupts, Schreiben in ein Register, ... bei dem anderen Prozessor) und der Prozessor dadurch an eine vorgegeben Programmadresse springen.
Die Erfindung zeigt auch eine Einheit zur Datenverteilung aus wenigstens einer
Datenquelle in einem System mit wenigstens zwei Recheneinheiten, wobei Umschaltmittel (ModeSwitch) enthalten sind durch welche zwischen wenigstens zwei Betriebsmodi des Systems umgeschalten werden kann, wobei die Einheit derart ausgestaltet ist, dass die Datenverteilung und/oder die Datenquelle (insbesondere Instr.Speicher, Datenspeicher, Cache) abhängig von dem Betriebsmodus ist.
Gleichermaßen ist ein System mit einer solchen Einheit gezeigt.
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 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 versetzt, 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 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 Fehler erkennung 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 ausfuhren, 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 ausfuhren. 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.
Befindet 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 Split- 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, also 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 (IUOPDetect) der ModeSwitch-Einheit und der Iram- und DramControl.
Die Mode-Switch Funktionsweise wird nachfolgend anhand Figur 3 nochmals erläutert:
Die Umschaltung der beiden Prozessoren wird hier beispielhaft durch den Befehl IHOp im Programm getriggert. Eine Voraussetzung ist, dass jeder Prozessor eindeutig identifiziert werden kann. Hierzu wird jedem Prozessor eine Ziffer zugeordnet. Hier in diesem Bsp. ist ein Core die 1 und der andere die 0. Dies ist im Prozessorstatusregister codiert.
Die beiden Prozessoren werden hier zur Synchronisation durch das Wait-Kommando angehalten. Ebenso kann der Takt für den Prozessor, der angehalten werden soll, solange gestoppt werden (durch z.B. eine OR- Verknüpfung mit o zum anhalten und 1 zum weitertakten).
„Switch-Detect" Einheit: 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 IHOp in den Prozessor geladen wird. Wird der Befehl detektiert, so wird dieses Ereignis der Modeswitch Einheit mitgeteilt. Diese Erkennen wird durch das „Core 1 -Signal" oder „Core 2-Signal" (siehe Bild2) der „Mode-Switch" 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.
„Mode-Switch" Einheit: 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. Ein Beispiel für eine Trennung der beiden Prozessoren sieht folgendermaßen aus:
Bei dem Splitvorgang wird zuerst Adresse die des Statusregisters in dem die Prozessor- ID abgelegt ist in rl geschrieben LDL r 1,248 LDH r 1,255 anschließend Trennung der beiden Prozessoren durch IUOp-Befehl error
Inhalt Statusregister von Adresse rl in r2 laden LDW r2,rl
Bit an 5. Stelle des Statusregisters testen. Wenn es 0 ist, dann ist es Prozessor 1, bei 1 handelt es sich um Prozessor 2 BTEST r2,5 durch einen bedingten Sprung wird nun Prozessor 2 an eine andere Programmstelle gebracht JMPI CT 10
Bei einer Umschaltung vom Split-Modus in den Lock-Modus wird dies ein Prozessor bemerken, bzw. einer der beiden zuerst. Dieser Prozessor wird Programmcode ausfuhren, in dem der Umschaltbefehl enthalten ist. Dies wird nun durch die "Switch-Detect" Enheit registriert und teilt dies der „Mode-Switch" Einheit mit. Diese hält den entsprechenden Prozessor an und teilt dem zweiten den Wunsch der Synchronisation durch einen
Interrupt („Message 1" oder „Message 2" in Bild 2) mit. Der zweite Prozessor erhält einen Interrupt und kann nun eine Softwareroutine zur Beendigung seines Tasks ausfuhren. 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 Prozssoren ü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 (in Bild 2 wird es Status genannt). Dabei steht "10" für den Lock-Modus und "01" für den Split-Modus. Bei "00" und "11" sind Fehler aufgetreten. Da der Befehl zur Umschaltung am Anfang der Pipeline des Prozessors detektiert wird, darf in den Pipelinestufen nach der Detektierung keine Sprünge vorhanden sein. Die einfachste Methode dies zu verhindern ist vor dem Befehl IHOp zwei NOp einzuführen.
Der Kern der Erfindung ist wie oben ausgeführt die generelle Funktionsweise des Mode-
Switch Verfahren (je nach Modus unterschiedliche Datenzuteilung und somit auch Auswahl des Betriebsmodus) und dabei speziell die Synchronisierung der Prozessoren.
Daneben löst aber auch die dargestellte spezielle Implementierung die Eingangs genannten Aufgaben.

Claims

Ansprüche
1. Verfahren zur Synchronisierung in einem Mehrprozessorsystem mit wenigstens zwei Prozessoren, wobei Umschaltmittel enthalten sind durch welche zwischen wenigstens zwei Betriebsmodi umgeschalten werden kann, wobei eine Synchronisierung durch ein Anhaltesignal durchgeführt wird, welches einen vorauseilenden Prozessor anhält um diesen mit dem wenigstens zweiten Prozessor zu synchronisieren.
2. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass die
Synchronisation durch einen Synchronisationswunsch ausgelöst wird, wobei der Synchronisationswunsch von einem oder mehreren Prozessoren erfolgen kann.
3. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass als Anhaltesignal das Wait-Signal eines Prozessors verwendet wird.
4. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass als Anhaltesignal ein Interrupt-Signal ausgelöst wird.
5. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass der Prozessor für die Synchronisation durch ein Auslassen von Taktzyklen angehalten wird.
6. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass der Prozessor für die Synchronisation durch ein Abschalten eines Taktsignales angehalten wird.
7. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass die Umschaltung durch einen Umschaltwunsch dargestellt wird und der Umschaltwunsch durch ein Signal ausgelöst wird.
8. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass die Umschaltung durch einen Umschaltwunsch dargestellt wird, wobei die Umschaltung erst erfolgt, wenn der Umschaltwunsch von zwei oder mehreren Prozessoren gefordert wird.
9. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass die Umschaltung durch einen Umschaltwunsch ausgelöst wird, wobei nach einem Umschaltwunsch der Betriebsmodus des Mehrprozessorsystems gewechselt wird und der Umschaltwunsch durch ein Signal angezeigt wird.
10. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass der vorliegende Betriebsmodus durch ein Modussignal angezeigt wird.
11. Verfahren zur Synchronisierung nach Anspruch 10, dadurch gekennzeichnet, dass, das Modussignal als codiertes Signal, insbesondere als Dual-Rail-Signal, vorliegt.
12. Verfahren zur Synchronisierung nach Anspruch 10, dadurch gekennzeichnet, dass das Modussignal redundant erzeugt wird, insbesondere durch zwei Zustandsautomaten oder durch eine Dual-Rail-Logik.
13. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass ein Synchronsiationswunsch an eine zentrale Einheit geleitet wird und diese den Synchronsiationswunsch an den wenigstens einen weiteren Prozessor weiterleitet.
14. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass die Synchronisation durch Mitteilung des Umschaltwunsches erfolgt und der Prozessor dadurch an eine vorgegeben Programmadresse springt.
15. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass der eine Prozessor solange angehalten wird bis der andere eine Tasks abgearbeitet hat und dann ebenfalls an der gleichen Programmstelle angelangt ist.
16. Verfahren zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass nach einer Synchronisierung zur Desynchronisierung die beiden Prozessoren aufgrund einer Kennung (ID), die für jeden Prozessor in dem Mehrprozessorsystem einzigartig ist, an verschiedene Programmstellen springen und somit desychronisiert werden.
17. Vorrichtung zur Synchronisierung in einem Mehrprozessorsystem mit wenigstens zwei Prozessoren, wobei Umschaltmittel enthalten sind durch welche zwischen wenigstens zwei Betriebsmodi umgeschalten werden kann, wobei die Vorrichtung derart ausgestaltet sind, dass eine Synchronisierung durch ein Anhaltesignal durchgeführt wird, welches einen vorauseilenden Prozessor anhält um diesen mit dem wenigstens zweiten Prozessor zu synchronisieren.
18. Vorrichtung zur Synchronisation nach Anspruch 17, dadurch gekennzeichnet, dass der erste Betriebsmodus einem Sicherheitsmodus entspricht, bei dem die zwei Prozessoren gleiche Programme abarbeiten und Vergleichsmittel vorgesehen sind, welche die bei der
Abarbeitung der gleichen Programme entstehenden Zustände auf Übereinstimmung vergleichen.
19. Vorrichtung zur Synchronisierung nach Anspruch 1, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass als Anhaltesignal das Wait-Signal eines
Prozessors verwendet wird.
20. Vorrichtung zur Synchronisierung nach Anspruch 17, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass als Anhaltesignal ein Interrupt-Signal ausgelöst wird.
21. Vorrichtung zur Synchronisierung nach Anspruch 17, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass der Prozessor für die Synchronisation durch ein Auslassen von Taktzyklen angehalten wird.
22. Vorrichtung zur Synchronisierung nach Anspruch 17, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass der Prozessor für die Synchronisation durch ein Abschalten eines Taktsignales angehalten wird.
23. Vorrichtung zur Synchronisierung nach Anspruch 17, dadurch gekennzeichnet, dass dass die Vorrichtung derart ausgestaltet ist, dass der vorliegende Betriebsmodus durch ein Modussignal angezeigt wird.
24. Vorrichtung zur Synchronisierung nach Anspruch 23, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass das Modussignal als codiertes Signal, insbesondere als Dual-Rail-Signal, vorliegt.
25. Vorrichtung zur Synchronisierung nach Anspruch 23, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass das Modussignal redundant erzeugt wird, insbesondere durch zwei Zustandsautomaten oder durch eine Dual-Rail-Logik.
26. Vorrichtung zur Synchronisierung nach Anspruch 17, dadurch gekennzeichnet, dass eine zentrale Einheit vorgesehen ist und die Vorrichtung derart ausgestaltet ist, dass ein Synchronsiationswunsch an eine zentrale Einheit geleitet wird und diese den
Synchronsiationswunsch an den wenigstens einen weiteren Prozessor weiterleitet.
27. Vorrichtung zur Synchronisierung nach Anspruch 17, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass der eine Prozessor solange angehalten wird bis der wenigstens zweite eine Tasks abgearbeitet hat und dann ebenfalls an der gleichen
Programmstelle angelangt ist.
28. Vorrichtung zur Synchronisierung nach Anspruch 17, dadurch gekennzeichnet, dass die Vorrichtung derart ausgestaltet ist, dass nach einer Synchronisierung zur Desynchronisierung die beiden Prozessoren aufgrund einer Kennung (ID), die für jeden
Prozessor in dem Mehrprozessorsystem einzigartig ist, an verschiedene Programmstellen springen und somit desychronisiert werden.
29. Vorrichtung zur Synchronisierung nach Anspruch 28, dadurch gekennzeichnet, dass ein Prozessorregister vorgesehen ist und die Kennung in dem Prozessorregister abgelegt ist.
30. Vorrichtung nach Anspruch 28, dadurch gekennzeichnet, dass die Kennung extern zu den Przessoren abgelegt ist, insbesondere in einer zentralen Einheit (DramCtrl).
31. Vorrichtung zur Synchronisierung nach Anspruch 17, dadurch gekennzeichnet, dass das Umschaltmittel zur Umschaltung des Betriebsmodus fehlertolerant ausgelegt ist, insbesondere durch Duplizieren von Zustandsautomaten oder Implementierung in Dual-Rail Logik.
32. Mehrprozessorsystem mit einer Vorrichtung nach einem der Ansprüche 17 bis 31.
EP05797084A 2004-10-25 2005-10-25 Verfahren und vorrichtung zur synchronisierung in einem mehrprozessorsystem Active EP1810145B1 (de)

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/055537 WO2006045800A1 (de) 2004-10-25 2005-10-25 Verfahren und vorrichtung zur synchronisierung in einem mehrprozessorsystem

Publications (2)

Publication Number Publication Date
EP1810145A1 true EP1810145A1 (de) 2007-07-25
EP1810145B1 EP1810145B1 (de) 2008-09-03

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 (4)

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

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2006045800A1 *

Also Published As

Publication number Publication date
KR20070062579A (ko) 2007-06-15
WO2006045802A3 (de) 2007-01-04
JP2008518309A (ja) 2008-05-29
EP1807763B1 (de) 2008-09-24
WO2006045802A2 (de) 2006-05-04
JP2008518308A (ja) 2008-05-29
US20080209251A1 (en) 2008-08-28
JP2008518312A (ja) 2008-05-29
US20080126718A1 (en) 2008-05-29
JP4532561B2 (ja) 2010-08-25
WO2006045804A1 (de) 2006-05-04
WO2006045798A1 (de) 2006-05-04
WO2006045800A1 (de) 2006-05-04
WO2006045801A2 (de) 2006-05-04
EP1820102A2 (de) 2007-08-22
DE502005005490D1 (de) 2008-11-06
ATE407398T1 (de) 2008-09-15
EP1812861A1 (de) 2007-08-01
EP1807761A1 (de) 2007-07-18
JP2008518311A (ja) 2008-05-29
WO2006045801A3 (de) 2006-07-06
US20090164826A1 (en) 2009-06-25
US7853819B2 (en) 2010-12-14
KR20070083771A (ko) 2007-08-24
JP2008518310A (ja) 2008-05-29
KR20070067168A (ko) 2007-06-27
KR20070083772A (ko) 2007-08-24
ATE409327T1 (de) 2008-10-15
EP1807763A2 (de) 2007-07-18
US20080163035A1 (en) 2008-07-03
DE502005005284D1 (de) 2008-10-16
EP1810145B1 (de) 2008-09-03
RU2007119316A (ru) 2008-12-10

Similar Documents

Publication Publication Date Title
EP1810145B1 (de) Verfahren und vorrichtung zur synchronisierung in einem mehrprozessorsystem
EP1917592B1 (de) Rechnersystems mit wenigstens zwei ausführungseinheiten und einer vergleichseinheit sowie verfahren zu dessen steuerung
DE102005055067A1 (de) Vorrichtung und Verfahren zum Beheben von Fehlern bei einem wenigstens zwei Ausführungseinheiten mit Registern aufweisenden System
DE10349581A1 (de) Verfahren und Vorrichtung zur Umschaltung zwischen wenigstens zwei Betriebsmodi einer Prozessoreinheit
EP2513796A1 (de) Verfahren zum betreiben einer recheneinheit
DE102008004205A1 (de) Schaltungsanordnung und Verfahren zur Fehlerbehandlung in Echtzeitsystemen
EP1776637A2 (de) Verfahren zur verzögerung von zugriffen auf daten und/oder befehle eines zweirechnersystems sowie entsprechende verzögerungseinheit
WO2007057270A1 (de) Programmgesteuerte einheit und verfahren zum betreiben derselbigen
EP1398700A1 (de) Verfahren und Schaltungsanordnung zur Synchronisation redundanter Verarbeitungseinheiten
WO2005045665A1 (de) Verfahren und vorrichtung zur operandenverarbeitung in einer prozessoreinheit
EP1552394A1 (de) Verfahren zur ereignissynchronisation, insbesondere für prozessoren fehlertoleranter systeme
EP1618476A2 (de) Programmgesteuerte einheit und verfahren
DE102004051952A1 (de) Verfahren zur Datenverteilung und Datenverteilungseinheit in einem Mehrprozessorsystem
EP1776636A2 (de) Verfahren zum registrieren von fehlern und entsprechendes register
EP2228723B1 (de) Verfahren zur Fehlerbehandlung eines Rechnersystems
DE102004051937A1 (de) Verfahren und Vorrichtung zur Synchronisierung in 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
EP1398699A1 (de) Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme
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
WO2007017372A1 (de) Verfahren und vorrichtung zur steuerung eines rechnersystems mit wenigstens zwei ausführungseinheiten
DE102010031017A1 (de) Verfahren zur Überwachung des Programmablaufs eines Prozessors
DE102005037259A1 (de) Verfahren und Vorrichtung zur Festlegung eines Startzustandes bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten durch Umschalten von Registersätzen
DE102005037258A1 (de) Verfahren und Vorrichtung zur Festlegung eines Startzustandes bei einem Rechnersystem mit wenigstens zwei Ausführungseinheiten durch Übernehmen des Startzustandes

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

AX Request for extension of the european patent

Extension state: AL BA HR MK YU

17Q First examination report despatched

Effective date: 20070827

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

GRAS Grant fee paid

Free format text: ORIGINAL CODE: EPIDOSNIGR3

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

AK Designated contracting states

Kind code of ref document: B1

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

AX Request for extension of the european patent

Extension state: AL BA HR MK YU

REG Reference to a national code

Ref country code: GB

Ref legal event code: FG4D

Free format text: NOT ENGLISH

REG Reference to a national code

Ref country code: CH

Ref legal event code: EP

REG Reference to a national code

Ref country code: IE

Ref legal event code: FG4D

Free format text: LANGUAGE OF EP DOCUMENT: GERMAN

REF Corresponds to:

Ref document number: 502005005284

Country of ref document: DE

Date of ref document: 20081016

Kind code of ref document: P

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: LT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

Ref country code: NL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: SI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

Ref country code: ES

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20081214

Ref country code: LV

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

Ref country code: FI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

NLV1 Nl: lapsed or annulled due to failure to fulfill the requirements of art. 29p and 29m of the patents act
BERE Be: lapsed

Owner name: ROBERT BOSCH G.M.B.H.

Effective date: 20081031

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: BG

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20081203

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20090103

Ref country code: CZ

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

Ref country code: RO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

Ref country code: MC

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20081031

Ref country code: SK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: EE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

Ref country code: DK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

26N No opposition filed

Effective date: 20090604

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: BE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20081031

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: AT

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20081025

Ref country code: SE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20081203

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: PL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

REG Reference to a national code

Ref country code: CH

Ref legal event code: PL

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: CY

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

Ref country code: LU

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20081025

Ref country code: HU

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20090304

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: TR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: CH

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20091031

Ref country code: LI

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20091031

Ref country code: GR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20081204

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: GB

Payment date: 20101021

Year of fee payment: 6

Ref country code: IT

Payment date: 20101028

Year of fee payment: 6

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: PT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20080903

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: IE

Payment date: 20111020

Year of fee payment: 7

GBPC Gb: european patent ceased through non-payment of renewal fee

Effective date: 20121025

REG Reference to a national code

Ref country code: IE

Ref legal event code: MM4A

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20121025

Ref country code: GB

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20121025

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IT

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20121025

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: FR

Payment date: 20131018

Year of fee payment: 9

REG Reference to a national code

Ref country code: FR

Ref legal event code: ST

Effective date: 20150630

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: FR

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20141031

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: DE

Payment date: 20161213

Year of fee payment: 12

REG Reference to a national code

Ref country code: DE

Ref legal event code: R119

Ref document number: 502005005284

Country of ref document: DE

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: DE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20180501