WO2010049339A1 - Device and method for generating redundant but different machine codes from a source code for verification for a safety-critical system - Google Patents

Device and method for generating redundant but different machine codes from a source code for verification for a safety-critical system Download PDF

Info

Publication number
WO2010049339A1
WO2010049339A1 PCT/EP2009/063870 EP2009063870W WO2010049339A1 WO 2010049339 A1 WO2010049339 A1 WO 2010049339A1 EP 2009063870 W EP2009063870 W EP 2009063870W WO 2010049339 A1 WO2010049339 A1 WO 2010049339A1
Authority
WO
WIPO (PCT)
Prior art keywords
realization
paths
implementation
machine
different
Prior art date
Application number
PCT/EP2009/063870
Other languages
German (de)
French (fr)
Inventor
Volker Roelke
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
Application filed by Robert Bosch Gmbh filed Critical Robert Bosch Gmbh
Publication of WO2010049339A1 publication Critical patent/WO2010049339A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1487Generic software techniques for error detection or fault masking using N-version programming
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • 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

Definitions

  • the invention is based on a device or method according to the category of L 5 independent claims. As is known, technical systems have one
  • EP 1 723 513 Bl a method is described that allows a clear and flexible configuration of a computer program.
  • the possibility is created by means of global and special configuration files from a single program code (source text) to generate a machine code by means of a compiler.
  • L 5 is implemented such that it becomes a physical realization variant
  • this generator generates at least two implementation paths which result in the same effect or a similar result, but achieve this on a different approach, and are therefore redundant but different from one another. error
  • L O occur simultaneously (synchronously) in the at least two ways of realization.
  • an error that is present in a certain component can be uncovered, since one of the implementation paths implements the realization without using this component.
  • the errors are usually discovered in a comparison of the results or intermediate results or
  • Microprocessor platform understands (machine language).
  • the compiler corresponds to the automated generator, but may also be an interpreter (e.g., programming language Basic or Java) or another form of language translator.
  • the invention also includes a reaction in
  • this compiler generates from a source text of the high-level language two machine codes which describe redundant but different realization paths. Since the system requirement for this is usually the same and the source code is the same, the results of both of them must also be the same
  • the at least second realization path can also calculate an approximation result which is suitable for a plausibility check of the real result of the one realization path.
  • the mere calculation 5 of an approximate result can have resource advantages, in particular runtime advantages.
  • This decision is carried out by a body known as Voter.
  • the at least two machine codes may also run on a single hardware, thereby avoiding parallel architecture and duplicate hardware costs.
  • errors that occur during compilation can be intercepted if they only have an effect on one of the implementation paths. The same applies to temporary errors in
  • Realization paths can also determine the correct result.
  • the compiler advantageously converts the instructions from the high-level language into respectively different machine code instructions or machine code instruction sequences.
  • Machine codes would be created in the other machine code are not called and would come into play, which allows error detection. Unless every instruction of the machine code can be substituted by another instruction, one is
  • the invention specifically uses the properties and freedoms when compiling
  • Fast code is usually preferred when the calculation results of the realization paths must be available at the same time, for example, if the result may not be used without a plausibility check. Alternatively, for example, a very
  • L 5 Realization path also run distributed over several clock cycles. A comparison of the results of the implementation paths in the voter or a call of the voter can then be done regularly but not necessarily in every bar. Also, the variation of the program size of the various machine codes may be useful, this is always in a first machine code, the shorter each
  • Modern microcontrollers often have different computing units, 5 for example floating point units, different computer cores, PCP, etc.
  • arithmetic operations of the floating point units can be simulated by means of integer operations in the normal computer core, to later plausibility. In this case, errors that occur in only one of the two arithmetic units can be detected.
  • L O different computer cores of a microcontroller the different computing units
  • Machine codes are processed.
  • Machine code or realization way to use to generate by means of an automatic generator at least a second realization path or machine code is a suitable program, for example, which contains the machine code instructions
  • Machine code for safety-critical systems can be designed fault-tolerant by this idea. Even if a corresponding source text in the high-level language no longer exists or has been lost, such a second machine code can be generated in order to meet the corresponding requirements
  • the programmer usually uses a software in the form of a source code or source code in a specific one High-level language created.
  • a compiler converts these into so-called object codes, which in turn are linked together by a linker with other program components to form a machine code. If necessary, an intermediate step via a machine language
  • Machine language in the form of source text, also called assembler, is a 1 to 1 mapping to the so-called machine code, which is binary.
  • machine code which is binary.
  • L o optionally a linker or other software tools or components to
  • Generation of the machine code includes. It is equally unimportant whether the different machine codes are created by one or more compilers; the decisive factor is the use of a single source text for the generation of different but redundant machine codes.
  • single point of failure refers to points in the system where different paths are merged, so a failure at that point would result in a total error.
  • voter the so-called voter
  • Figure 1 shows various arrangements for fault-tolerant systems
  • Figure 2 shows an exemplary implementation of a multiplication command.
  • FIG. 1a shows, by way of example, the basic structure of a fault-tolerant system, in which there are at least two paths, wherein an occurrence of an error on one of these paths is detected, in that the voter shown here as a comparator determines a difference.
  • FIG. 1 b shows how a single software SW is converted by means of a compiler C into a machine code M which is used on different hardware HW1, HW2 and thus makes it possible to detect a defect in one of the various hardware.
  • FIG. 2c two different software SW1, SW2 are shown, which are translated into a machine code M1, M2 after a translation by means of a (possibly similar / the same) compiler C and are executed in a hardware.
  • a (possibly similar / the same) compiler C Analogously to Figure b part can also here
  • Such a system ensures that an error that occurs in only one of the software is detected.
  • FIG. 1 d the method according to the invention is presented, wherein a single L 5 software here inputs a source code SW into a compiler C, which generates two different machine codes M 1, M 2, which are executed on the hardware.
  • the final error assessment is performed as usual by a comparator (voter).
  • an interpreter for example, which uses high-level languages such as Java or Basic in particular, the block designated here with compiler C can come to lie in the hardware itself, the interpreter independently converting the instructions into machine code in two different ways and the method according to the invention follows.
  • An interpreter typically functions to sequentially read and directly process the high-level language instructions 5 into machine code instructions that are executed immediately by the microprocessor and not, like a compiler C, to first translate the entire program into the complete machine code.
  • FIG. 2 shows the exemplary implementation of a multiplication command in a high-level language (FIG. 2 a) which is represented in two different variants of the machine code, here as assembler command sequence (FIG. Part b, c).
  • assembler command sequence FIG. Part b, c
  • the command line in FIG. 1 a is generated during the generation of a first machine code by means of the command sequence as shown in FIG.
  • the compiler has a translation table which allows it to translate any high-level language command into at least two different types of machine code.
  • the multiplication command in the high-level language in the variant in FIG. 2 b was translated by means of the assembler-multiplication command.
  • this command was realized by means of a loop and additions.
  • Another embodiment which is not illustrated here in a figure, would be, for example, the implementation of so-called branch operators which are each performed with negated test conditions. Usually, jumps in the machine code by testing individual
  • Assembler commands are bz (branch zero) and bnz (branch not zero), which lead directly to a double, different realization of a branching operator. Only the condition must be previously negated with at least one additional command, but with all
  • Commands in the machine code can also be realized a translation of the same branch by the check of various conditions.
  • a branch number zero can be simulated by setting the register to the value to be tested + 1 and instead of

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

The invention relates to a method and a device for the automated generation of at least two redundant but different ways of implementation of a safety-critical system, characterized in that the at least two ways of implementation are generated from a single system description, particularly for a software-based solution, a source code being translated into two different machine codes by means of a compiler, the machine codes being formed from asynchronous command sequences and allowing an error check by comparing the results.

Description

5 Beschreibung 5 description
Titeltitle
Vorrichtung und Verfahren zur Generierung redundanter, aber unterschiedlicher Maschinencodes aus einem Quellcode zur Verifizierung für ein L O sicherheitskritisches SystemDevice and method for generating redundant but different machine codes from a source code for verification for a safety-critical system
Stand der TechnikState of the art
Die Erfindung geht aus von einer Vorrichtung oder Verfahren nach Gattung der L 5 unabhängigen Ansprüche. Bekanntlich besitzen technische Systeme eineThe invention is based on a device or method according to the category of L 5 independent claims. As is known, technical systems have one
Fehleranfälligkeit, die von unterschiedlichen Ursachen herrühren kann. Jede Komponente eines solchen Systems kann temporäre Fehler, die sporadisch auftreten, oder systematische Fehler beinhalten. Komponenten können hierbei aus Software- bzw. Hardwarebestandteilen bestehen. Insbesondere bei > 0 sicherheitskritischen Systemen besteht die Notwendigkeit Fehler zu erkennen und angemessen darauf zu reagieren, d.h. solche Systeme fehlertolerant oder fehlererkennend auszubilden. Aus diesem Grund gibt es auch bei der Entwicklung und Anwendung von computergestützten Lösungen verschiedene Sicherheitsanforderungen, um schwerwiegende Folgen durch Software- oder >5 Hardwarefehler zu vermeiden. Hierfür gibt es verschiedene Normen wie beispielsweise der SIL (Safety Integrity Level) gemäß IEC / DIN EN 61508 oder im automotiven Umfeld das ASIL (Automotive Safety Integrity Level) gemäß ISO CD 26262.Susceptibility to error, which can come from different causes. Each component of such a system may include temporary errors that occur sporadically, or systematic errors. Components can consist of software or hardware components. Especially with> 0 safety-critical systems, there is a need to recognize and respond appropriately to errors, i. to design such systems fault-tolerant or error-detecting. For this reason, there are also various security requirements in the development and application of computer-aided solutions in order to avoid serious consequences due to software or hardware errors. There are various standards for this purpose, such as the SIL (Safety Integrity Level) in accordance with IEC / DIN EN 61508 or the Automotive Safety Integrity Level (ASIL) in the automotive environment in accordance with ISO CD 26262.
30 Allgemein bekannt ist die redundante Auslegung von Systemen beispielsweise aus dem Flugzeugbau, wo Einheiten der Avionik mehrfach vorhanden sind, deren Berechnungsergebnisse verglichen und plausibilisiert werden. Hierbei sind die Systeme hardwaretechnisch mehrfach vorhanden. Hierdurch werden bspw. Fehler erkannt, die singulär in einer Hardware auftreten, hervorgerufenThe redundant design of systems, for example, in aircraft construction, where avionics units are present in multiple places, whose calculation results are compared and made plausible, is generally known. In this case, the systems are several times available in terms of hardware. As a result, for example, errors are detected that occur singularly in a hardware caused
35 beispielsweise durch einen Produktionsfehler oder einen Defekt in genau dieser einen Hardwareeinheit. Nicht abgedeckt werden hierbei Fehler, die im Design der Hardware begründet sind, sowie Fehler in der Software, die auf den vorliegenden Hardwareeinheiten identisch ist.35 for example, by a production error or a defect in exactly this a hardware unit. Not covered here are errors that are due to the design of the hardware, as well as errors in the software, which is identical to the hardware units present.
5 Durch die doppelte, unabhängige Entwicklung einer Software mit gleicher5 Due to the double, independent development of a software with the same
Aufgabe kann eine softwaretechnische Redundanz erreicht werden. So können menschliche Programmierfehler, sowie Compilerfehler oder Ähnliches erkannt werden, genauso wie möglicherweise temporäre Hardwarefehler wie Bitkipper etc.Task a software technical redundancy can be achieved. Thus, human programming errors, as well as compiler errors or the like can be detected, as well as possibly temporary hardware errors such as Bitkipper etc.
L OL O
Durch die Kombination solcher Methoden können nicht nur temporäre Fehler, sondern auch dauerhaft temporäre Fehler, dass heißt Fehler, die in einem konkreten System reproduzierbar auftreten, sowie systematische Fehler, beispielsweise Designfehler, erkannt werden.The combination of such methods not only temporary errors, but also permanently temporary errors, that is, errors that occur reproducibly in a specific system, as well as systematic errors, such as design errors are recognized.
L 5L 5
Diese Parallelarchitektur und/oder Parallelentwicklung führt jedoch zu erhöhten Kosten, da ein höherer Entwicklungsaufwand und/oder mehrfache Hardware notwendig ist.This parallel architecture and / or parallel development, however, leads to increased costs, since a higher development effort and / or multiple hardware is necessary.
> 0 Stand der Technik ist, dass heutzutage fast jedes Programm in einer> 0 State of the art is that nowadays almost every program in one
Hochsprache (beispielsweise C oder C++) geschrieben wird, welches von einem sogenannten Compiler in eine Maschinensprache übersetzt wird, die der jeweilige Mikroprozessor (beispielsweise in einem PC oder in einem Embedded System) versteht. Das bedeutet, dass zwischen der Erstellung einer SoftwareWritten high-level language (for example, C or C ++), which is translated by a so-called compiler into a machine language that the respective microprocessor (for example, in a PC or in an embedded system) understands. That means that between creating a software
>5 (Programm) und der Ausführung auf eine Hardware dieser Zwischenschritt durchgeführt wird.> 5 (program) and execution on a hardware this intermediate step is carried out.
In der EP 1 723 513 Bl wird ein Verfahren beschrieben dass eine übersichtliche und flexible Konfiguration eines Computerprogramms erlaubt. Hier wird die 30 Möglichkeit geschaffen mittels globaler wie spezieller Konfigurationsdateien aus einem einzigen Programmcode (Quelltext) einen Maschinencode mittels eines Compilers zu erzeugen.In EP 1 723 513 Bl a method is described that allows a clear and flexible configuration of a computer program. Here, the possibility is created by means of global and special configuration files from a single program code (source text) to generate a machine code by means of a compiler.
In der US 2004/0034814 Al wird ein Verfahren beschrieben, das alternative 35 Versionen von Codesegmenten, im speziellen einem Codesegment in einem optimierten und ein weiteres Codesegment in einer nicht optimierten Variante erzeugt. Üblicherweise wird zur Laufzeit der optimierte Code ausgeführt, wobei bei Erkennung eines Fehlers eine Programm- Recovery auf einen bestimmten früheren Zeitpunkt durchgeführt wird und sodann der zweite (nicht optimierte) Code ausgeführt wird, der zum theoretisch gleichen (aber fehlerfreien) Ergebnis 5 führen soll. Die alternative Version des Codes kommt hierbei nur zur Ausführung, wenn bei der Ausführung des ersten Codes ein Fehler erkannt wurde.In US 2004/0034814 Al a method is described, the alternative 35 versions of code segments, in particular a code segment in an optimized and another code segment in a non-optimized variant generated. Usually, the optimized code is executed at runtime, whereby upon detection of an error a program recovery is performed at a certain earlier time and then the second (non-optimized) code is executed, which should lead to the theoretically same (but error-free) result 5. The alternative version of the code is only executed if an error has been detected during execution of the first code.
Offenbarung der ErfindungDisclosure of the invention
L O Das erfindungsgemäße Verfahren mit den Merkmalen des unabhängigenL O The inventive method with the features of the independent
Anspruchs realisiert ein fehlertolerantes System, welches insbesondere bei sicherheitskritischen Anwendungen Einsatz finden kann und das temporäre und systematische Fehler entdecken soll. Für ein solches System existiert eine Systembeschreibung, bzw. Anforderungsprofil, welches von einem GeneratorAnspruchs realizes a fault-tolerant system, which can be used especially in safety-critical applications and should discover the temporary and systematic error. For such a system exists a system description, or requirement profile, which of a generator
L 5 derart umgesetzt wird, dass daraus eine physikalische RealisierungsvarianteL 5 is implemented such that it becomes a physical realization variant
(Realisierungsweg) gebildet wird. Erfindungsgemäß erzeugt dieser Generator wenigstens zwei Realisierungswege, die eine gleiche Wirkung bzw. ein gleiches Ergebnis zur Folge haben, jedoch dieses auf einem anderen Lösungsweg erreichen, und dadurch redundant, aber unterschiedlich zueinander sind. Fehler(Realization path) is formed. According to the invention, this generator generates at least two implementation paths which result in the same effect or a similar result, but achieve this on a different approach, and are therefore redundant but different from one another. error
> 0 in der gemeinsamen zugrunde liegenden Systembeschreibung können hierdurch nicht entdeckt werden, jedoch solche Fehler in einem der beiden Realisierungswege, beispielsweise verursacht durch eine fehlerhafte Generierung, oder insbesondere Fehler auf einer Ausführplattform eines solchen Realisierungswegs. Durch eine entsprechende Fehlermöglichkeits- oder> 0 in the common underlying system description can not be detected thereby, however, such errors in one of the two implementation paths, for example, caused by an erroneous generation, or in particular errors on an execution platform of such a realization path. Through an appropriate failure mode or
>5 Auswirkungsanalyse für das jeweilig konkrete System kann geprüft bzw. herausgefunden werden, welche Fehler abgefangen werden können und welche Teile der Systempfade redundant ausgelegt sind und an welchen Stellen Single Points of Failure vorhanden sind.> Impact analysis for the respective concrete system can be examined or it can be found out which errors can be intercepted and which parts of the system paths are configured redundantly and at which points Single Points of Failure exist.
30 Vorteil ist somit die Eliminierung temporärer, dauerhaft temporärer, systematischer und/oder Designfehlern und gleichzeitiger Kostenersparnis, da eine Systembeschreibung nur einmal erstellt werden muss. Je nach Realisierung muss auch das System selber nicht ein zweites Mal vorgehalten werden, sofern die wenigstens zwei Realisierungswege auf dem gleichen System ausführbarThe advantage is thus the elimination of temporary, permanently temporary, systematic and / or design errors and simultaneous cost savings, since a system description must be created only once. Depending on the implementation, the system itself does not have to be held a second time, provided that the at least two implementation paths can be executed on the same system
35 sind. Zur sicherheitstechnischen Überprüfung würden üblicherweise die Ergebnisse der wenigstens zwei Realisierungswege miteinander auf Gleichheit bzw. Plausibilität verglichen, wobei es vom Sicherheitskonzept abhängt, in welcher genauen Form bzw. wie oft bzw. zu welchen Zeitpunkten was durchgeführt wird. So können abhängig von der konkreten Anwendung und dem 5 jeweiligen Sicherheitslevel entsprechende Sicherheitsnormen bei niedrigem35 are. For safety testing usually would Results of the at least two implementation paths are compared with each other for equality or plausibility, whereby it depends on the security concept in what exact form or how often or at what times what is carried out. Thus, depending on the specific application and the respective security level, corresponding safety standards can be set at low
Aufwand und Kosten eingehalten werden.Effort and costs are met.
Bestehen die Realisierungswege selber wiederum aus verschiedenen Einzelbestandteilen, so ist es vorteilhaft wenn diese Bestandteile nichtIf the implementation paths themselves consist of different individual components, it is advantageous if these components are not
L O gleichzeitig (synchron) in den wenigstens beiden Realisierungswegen vorkommen. So kann ein Fehler der in einem bestimmten Bestandteil vorhanden ist aufgedeckt werden, da einer der Realisierungswege die Realisierung umsetzt, ohne diesen Bestandteil zu verwenden. Das Aufdecken der Fehler geschieht üblicherweise in einem Vergleich der Ergebnisse bzw. Zwischenergebnisse bzw.L O occur simultaneously (synchronously) in the at least two ways of realization. Thus, an error that is present in a certain component can be uncovered, since one of the implementation paths implements the realization without using this component. The errors are usually discovered in a comparison of the results or intermediate results or
L 5 Zwischenschritte der Realisierungswege.L 5 intermediate steps of the realization paths.
In der vermutlich gebräuchlichsten Ausführungsform der Erfindung wird eine Software erstellt, die der Systembeschreibung entspricht, üblicherweise in einer Hochsprache wie C oder C++. Ein sogenannter Compiler setzt dieseIn probably the most common embodiment of the invention, software is created that conforms to the system description, usually in a high level language such as C or C ++. A so-called compiler sets this
> 0 Hochsprache in eine Sprache um, die die jeweils verwendete> 0 high-level language into a language that uses the one used
Mikroprozessorplattform versteht (Maschinensprache). Der Compiler entspricht hierbei dem automatisierten Generator, kann aber auch ein Interpreter sein (z.B. Programmiersprache Basic oder Java) oder eine andere Form von Sprachumsetzer. Erfindungsgemäß ebenso beinhaltet ist eine Umsetzung inMicroprocessor platform understands (machine language). The compiler corresponds to the automated generator, but may also be an interpreter (e.g., programming language Basic or Java) or another form of language translator. The invention also includes a reaction in
>5 gleichwirkende Realisierungswege, beispielsweise der Realisierungsweg über die Programmierung eines FPGA-Bausteins, oder verschiedener Mikrokontroller oder Mikrokontrollerelemente gegebenenfalls mit unterschiedlicher Funktionalität (beispielsweise Hauptmikrocontroller/ Safety Controller (SCON)) oder andere Hardware.> 5 equally effective implementation paths, for example, the implementation path via the programming of an FPGA module, or various microcontroller or microcontroller elements optionally with different functionality (for example, main microcontroller / safety controller (SCON)) or other hardware.
3030
Erfindungsgemäß erzeugt dieser Compiler aus einem Quelltext der Hochsprache zwei Maschinencodes, die redundante aber unterschiedliche Realisierungswege beschreiben. Da die Systemanforderung hierfür üblicherweise die gleiche sowie der Quellcode der gleiche ist, müssen auch die Ergebnisse dieser beidenAccording to the invention, this compiler generates from a source text of the high-level language two machine codes which describe redundant but different realization paths. Since the system requirement for this is usually the same and the source code is the same, the results of both of them must also be the same
35 Maschinencodes zu einem identischen bzw. plausiblen Ergebnis kommen. Gegebenenfalls kann der wenigstens zweite Realisierungsweg auch ein Näherungsergebnis berechnen, welches für eine Plausibilisierung des echten Ergebnis des einen Realisierungsweg geeignet ist. Die ledigliche Berechnung 5 eines Näherungsergebnisses kann Ressourcen-, insbes. Laufzeitvorteile haben.35 machine codes come to an identical or plausible result. Optionally, the at least second realization path can also calculate an approximation result which is suitable for a plausibility check of the real result of the one realization path. The mere calculation 5 of an approximate result can have resource advantages, in particular runtime advantages.
Diese Entscheidung (Plausibilisierung) führt eine in der Fachsprache Voter genannte Einrichtung durch.This decision (plausibility check) is carried out by a body known as Voter.
Vorteil ist die beschriebene Möglichkeit der einmaligen Entwicklung einerAdvantage is the described possibility of the unique development of a
L O Software, welche automatisch in zwei unterschiedliche Maschinencodes übersetzt wird, die eine Plausibilisierung auf bestimmte Arten von Fehlern ermöglicht. Der Zusatzaufwand bzw. Kosten sind hier sehr gering, insbesondere gegenüber der üblichen Vorgehensweise einer doppelten Entwicklung von Quelltext. Mittels Multitasking-Prozessoren oder der seriellen Berechnung aufL O Software, which is automatically translated into two different machine codes, which allows a plausibility check on certain types of errors. The additional effort or costs are very low, especially compared to the usual procedure of a double development of source code. Using multitasking processors or serial computation
L 5 einem Prozessor können die wenigstens zwei Maschinencodes auch auf einer einzigen Hardware laufen, wodurch eine Parallelarchitektur und Kosten einer doppelten Hardware vermieden werden. Abgefangen werden können insbesondere Fehler, die bei der Kompilierung auftreten, sofern sie nur auf einen der Realisierungswege Auswirkung haben. Gleiches gilt für temporäre Fehler inIn a processor, the at least two machine codes may also run on a single hardware, thereby avoiding parallel architecture and duplicate hardware costs. In particular, errors that occur during compilation can be intercepted if they only have an effect on one of the implementation paths. The same applies to temporary errors in
> 0 einer Hardware, egal ob sporadisch auftretende Fehler oder Fehler die aufgrund von Bauteilstreuungen entstanden sind oder systematische bzw. Designfehler in der Hardware, die bei wenigstens einem der Realisierungswege nicht in gleicher Weise zum Tragen kommen wie in dem anderen Realisierungsweg. Der Voter würde in diesem Fall einen Unterschied zwischen den verschiedenen> 0 a hardware, no matter whether sporadic errors or errors that have arisen due to component scattering or systematic or design errors in the hardware, which do not come in at least one of the realization paths in the same manner as in the other implementation path. The voter in this case would make a difference between the different ones
>5 Realisierungswegen feststellen bzw. abhängig von der Anzahl der> Determine 5 ways of realization or depending on the number of
Realisierungswege auch das richtige Ergebnis ermitteln können. Bezüglich der Anzahl von Realisierungswegen der Auslegung von Votern und den daraus folgenden verschiedenen Stufen der Fehlertoleranz sei auf entsprechende Fachliteratur verwiesen.Realization paths can also determine the correct result. With regard to the number of ways of implementation of the design of voters and the consequent different levels of fault tolerance, reference is made to corresponding technical literature.
3030
Die Begrifflichkeit des Compilers im singulären Sprachgebrauch ist ebenso dahingehend auszulegen, dass man das erfindungsgemäße Verfahren auch mittels wenigstens zweier Compiler umsetzt, wobei ein erster Compiler den ersten Maschinencode bzw. Realisierungsweg generiert und die weiterenThe terminology of the compiler in singular parlance is also to be interpreted as meaning that the method according to the invention is also implemented by means of at least two compilers, with a first compiler generating the first machine code or implementation path and the others
35 Compiler die weiteren Maschinencodes. Für Entwicklungszwecke mag es vorteilhaft sein, durch wenige manuelle Interaktionen den, bzw. die mehreren Compilerläufe zu starten, um den Entwicklungsaufwand auch hier gering zu halten. Dies kann auch über kaskadierte Programmstrukturen beispielsweise Batchprogramme erfolgen, was einen Fachmann in der Informationstechnik aber 5 ohnehin bekannt ist.35 compilers the other machine codes. For development purposes it likes be advantageous to start by a few manual interactions, or the multiple compiler runs to keep the development effort here too low. This can also take place via cascaded program structures, for example batch programs, which is known to a person skilled in information technology, however, in any case.
Vorteilhafterweise wird der Compiler bei der Generierung der wenigstens zwei Maschinencodes die Befehle aus der Hochsprache in jeweils unterschiedliche Maschinencodebefehle bzw. Maschinencodebefehlssequenzen umsetzen. DiesIn the generation of the at least two machine codes, the compiler advantageously converts the instructions from the high-level language into respectively different machine code instructions or machine code instruction sequences. This
L O hat den Vorteil, dass ein Fehler, der durch den Aufruf eines bestimmtenL o has the advantage of having an error by calling a specific one
Maschinencodes hervorgerufen werden würde, in dem jeweils anderen Maschinencode nicht aufgerufen werden und damit zum Tragen kommen würde, was eine Fehlererkennung ermöglicht. Sofern sich nicht jeder Befehl des Maschinencodes durch einen anderen Befehl substituieren lässt, so ist eineMachine codes would be created in the other machine code are not called and would come into play, which allows error detection. Unless every instruction of the machine code can be substituted by another instruction, one is
L 5 komplette asynchrone Ausgestaltung der Maschinencodes eventuell nicht möglich. Jedoch trägt auch eine weitestgehende Vermeidung von der synchronen Verwendung von Maschinenbefehlen zur Fehlertoleranz bei.L 5 complete asynchronous design of the machine codes may not be possible. However, avoiding the synchronous use of machine instructions contributes to fault tolerance as much as possible.
Die Erfindung nutzt gezielt die Eigenschaften und Freiheiten beim CompilierenThe invention specifically uses the properties and freedoms when compiling
> 0 aus, da es keine Vorschrift gibt, wie ein Compiler ein Programm in einer> 0, since there is no rule for a compiler to have a program in one
Hochsprache in die Zielsprache übersetzen muss. Der hier vorgestellte Compiler nutzt aus, dass es mehrere Möglichkeiten gibt, einen Befehl aus der Hochsprache in die Zielsprache zu ersetzten. Dabei wird also der Hochsprachebefehl in den verschiedenen Realisierungswegen durch möglichstMust translate high-level language into the target language. The compiler presented here makes use of the fact that there are several possibilities to replace a command from the high-level language into the target language. Thus, the high-level language command in the various implementation paths is as possible
>5 komplett andere Maschinensprachebefehle bzw. Befehlsequenzen übersetzt.> 5 completely different machine language instructions or command sequences translated.
Dies kann beispielsweise durch eine klassische Übersetzungstabelle geschehen, wodurch die entsprechende Eigenschaft garantiert werden kann und der Compiler gegebenenfalls nach Norm zertifiziert werden kann. Eine Zertifizierung ist jedoch auch durch andere Nachweise der genannten Eigenschaften möglich.This can be done for example by a classical translation table, whereby the corresponding property can be guaranteed and the compiler can be certified according to standard if necessary. However, certification is also possible by other proof of the mentioned properties.
3030
Die Verwendung unterschiedlicher Maschinencodes bzw. Befehlssequenzen führt jedoch auch dazu, dass die Laufzeit und/oder der Speicherplatzbedarf und/oder die Programmgröße der unterschiedlichen Maschinenprogramme unterschiedlich sind. Vorteilhafterweise kann der Compilerlauf nun so angepasstHowever, the use of different machine codes or command sequences also leads to the fact that the running time and / or storage space requirement and / or the program size of the different machine programs are different. Advantageously, the compiler run can now be adjusted
35 werden, dass die genannten Eigenschaften auf die verschiedenen Maschinencodes entsprechend ihrem Anwendungszweck verteilt sind. Beispielsweise kann versucht werden, dass für die verschiedenen Realisierungswege gleichschneller Code entsteht, beispielsweise dadurch, dass ein wiederkehrender Befehl in der Hochsprache in den beiden35 that the properties mentioned on the different Machine codes are distributed according to their purpose. For example, it may be attempted to produce code that is equally fast for the various implementation paths, for example by virtue of the fact that a recurring command in the high-level language is used in the two
5 Realisierungswegen alternierend aber dennoch asynchron umgesetzt wird.5 realization paths alternately but asynchronously implemented.
Gleichschneller Code wird üblicherweise dann bevorzugt werden, wenn die Berechnungsergebnisse der Realisierungswege zu einem gleichen Zeitpunkt vorliegen müssen, beispielsweise wenn das Ergebnis nicht ohne eine Plausibilisierung verwertet werden darf. Alternativ kann beispielsweise ein sehrFast code is usually preferred when the calculation results of the realization paths must be available at the same time, for example, if the result may not be used without a plausibility check. Alternatively, for example, a very
L O schneller Realisierungsweg und weitere langsame existieren, falls das Ergebnis sehr schnell berechnet werden muss, und einen Plausibilisierung bzw. Fehlerreaktion auch nach Verwendung bzw. Auswertung des Ergebnisses noch möglich ist. So kann beispielsweise einen Realisierungsweg die Berechnung von Echtzeitergebnissen in einem zeitkritischen Takt übernehmen und ein weitererL o faster implementation path and other slow exist, if the result must be calculated very quickly, and a plausibility or error response even after use or evaluation of the result is still possible. For example, a realization path can take over the calculation of real-time results in one time-critical cycle, and another
L 5 Realisierungsweg auch über mehrere Taktzyklen verteilt laufen. Ein Vergleich der Ergebnisse der Realisierungswege im Voter bzw. ein Aufruf des Voters kann dann zwar regelmäßig erfolgen aber nicht zwangsläufig in jedem Takt. Auch die Variation der Programmgröße der verschiedenen Maschinencodes mag sinnvoll sein, hierbei wird in einem ersten Maschinencode immer die jeweils kürzereL 5 Realization path also run distributed over several clock cycles. A comparison of the results of the implementation paths in the voter or a call of the voter can then be done regularly but not necessarily in every bar. Also, the variation of the program size of the various machine codes may be useful, this is always in a first machine code, the shorter each
> 0 Befehlssequenz verwendet, und in den weiteren Maschinencodes die Längere.> 0 command sequence used, and in the other machine codes, the longer.
Dies kann beispielsweise sinnvoll sein, wenn die verschiedenen Maschinencodes in verschiedenen Speicherbereichen laufen sollen, der Kürzere beispielsweise in einem schnellen, dafür aber knappen bzw. teuren Speicher oder falls einer in einer sogenannten sicheren Insel, dass heißt einem speziell abgesichertenThis can be useful, for example, if the various machine codes are to run in different memory areas, the shorter, for example, in a fast, but scarce or expensive memory or if one in a so-called safe island, that is a specially secured
>5 Bereich, laufen soll.> 5 area, should run.
Vorteilhaft ist die Verwendung nur eines einzigen Mikroprozessors bzw.It is advantageous to use only a single microprocessor or
Mikrocontrollers bzw. integrierten Bauelements für die Ausführung bzw.Microcontroller or integrated component for the execution or
Abarbeitung der wenigstens zwei Realisierungswege bzw. Maschinencodes, da 30 hierbei eine zweite Hardware eingespart werden kann. Dafür ist üblicherweise ein höherer interner bzw. softwaretechnischer Aufwand zu bewerkstelligen, umProcessing the at least two implementation paths or machine codes, since in this case a second hardware can be saved. For this usually a higher internal or software technical effort is required to
Multitasking bzw. eine Parallelverarbeitung oder serielle Abarbeitung der unterschiedlichen Realisierungswege bzw. Maschinencodes zu ermöglichen.Multitasking or a parallel processing or serial processing of the different realization paths or machine codes to enable.
Diese Verfahren sind jedoch Stand der Technik und durch diverse Toolkits 35 einfach zugänglich. Vorteilhaft hierbei ist auch, dass der Voter ebenso als Software innerhalb der gleichen Hardware, das heißt des gleichen Mikrocontrollers integriert werden kann.However, these methods are state of the art and easily accessible through various toolkits. Another advantage here is that the voter as well Software within the same hardware, that is, the same microcontroller can be integrated.
Moderne Mikrocontroller besitzen oftmals unterschiedliche Recheneinheiten, 5 beispielsweise Floating-Point-Units, verschiedene Rechnerkerne (Cores), PCP, etc.. So können beispielsweise Rechenoperationen der Floating-Point-Units mittels Integer- Operationen im normalen Rechnerkern nachgebildet werden, um sie später zu plausibilisieren. Hierbei können Fehler, die in lediglich einer der beiden Recheneinheiten auftreten, erkannt werden. Weiterhin können in L O verschiedenen Rechnerkernen eines Mikrocontrollers die unterschiedlichenModern microcontrollers often have different computing units, 5 for example floating point units, different computer cores, PCP, etc. Thus, for example, arithmetic operations of the floating point units can be simulated by means of integer operations in the normal computer core, to later plausibility. In this case, errors that occur in only one of the two arithmetic units can be detected. Furthermore, in L O different computer cores of a microcontroller, the different
Maschinencodes abgearbeitet werden.Machine codes are processed.
Wird die bisher beschriebene Idee aufgenommen, und durch einen zusätzlichen erfinderischen Schritt erweitert, so ergibt sich die Möglichkeit anstatt einemIf the idea described so far is taken up and extended by an additional inventive step, the possibility arises instead of one
L 5 Quelltext bzw. einer Systembeschreibung einen bereits existierendenL 5 source text or a system description an existing one
Maschinencode bzw. Realisierungsweg zu verwenden, um mittels eines automatischen Generators einen wenigstens zweiten Realisierungsweg bzw. Maschinencode zu erzeugen. Der automatische Generator wäre hierbei beispielsweise ein geeignetes Programm, welches die MaschinencodebefehleMachine code or realization way to use to generate by means of an automatic generator at least a second realization path or machine code. The automatic generator would be a suitable program, for example, which contains the machine code instructions
> 0 bzw. erkannte Maschinencodebefehlsequenzen des Quellmaschinencodes mittels beispielsweise einer Übersetzungstabelle der Befehle zu alternativen Befehlscodesequenzen umsetzt, um daraus einen zweiten Maschinencode zu generieren. Vorteilhaft hierbei ist, dass eine Neugestaltung des Compilers bzw. ein zweiter Compiler aufwändiger zu realisieren ist, als ein solcher> 0 or recognized machine code instruction sequences of the source machine code by means of, for example, a translation table of the instructions to alternative instruction code sequences in order to generate a second machine code. The advantage here is that a redesign of the compiler or a second compiler is more complex to implement, as such
>5 Maschinencodeumsetzer. Des Weiteren kann ein bereits bestehender> 5 machine code converter. Furthermore, an already existing
Maschinencode für sicherheitskritische Systeme durch diese Idee fehlertolerant ausgelegt werden. Auch falls ein entsprechender Quelletext in der Hochsprache nicht mehr vorhanden bzw. verloren gegangen ist, kann ein solcher zweiter Maschinencode generiert werden, um die entsprechenden Anforderungen zuMachine code for safety-critical systems can be designed fault-tolerant by this idea. Even if a corresponding source text in the high-level language no longer exists or has been lost, such a second machine code can be generated in order to meet the corresponding requirements
30 erfüllen.30 meet.
BegriffserläuterungenDefinitions
Bei der Softwareentwicklung wird vom Programmierer üblicherweise eine 35 Software in Form eines Quelltextes, bzw. Quellcodes in einer bestimmten Hochsprache erstellt. Ein Compiler setzt diese in sogenannten Objektcode um, welcher wiederum von einem Linker gegebenenfalls mit anderen Programmbestandteilen zusammen gelinkt wird zu einem Maschinencode. Gegebenfalls wird ein Zwischenschritt über eine MaschinenspracheIn software development, the programmer usually uses a software in the form of a source code or source code in a specific one High-level language created. A compiler converts these into so-called object codes, which in turn are linked together by a linker with other program components to form a machine code. If necessary, an intermediate step via a machine language
5 durchgeführt. Maschinensprache, in Form von Quelltext, auch Assembler genannt, ist hierbei eine 1 zu 1 Abbildung auf den sogenannten Maschinencode, der binär vorliegt. Für die vorliegende Erfindung ist es unerheblich, ob von Maschinensprache, Maschinencode, Objektcode oder Assembler die Rede ist, genauso ist mit dem Begriff Compiler oder automatischer Generator5 performed. Machine language, in the form of source text, also called assembler, is a 1 to 1 mapping to the so-called machine code, which is binary. For the present invention, it is irrelevant whether the machine language, machine code, object code or assembler is mentioned, as well as the term compiler or automatic generator
L O gegebenenfalls ein Linker bzw. andere Softwaretools oder Bestandteile zurL o optionally a linker or other software tools or components to
Generierung des Maschinencodes beinhaltet. Genauso wenig ist es erheblich, ob die unterschiedlichen Maschinencodes durch einen oder mehrere Compiler entstehen, maßgeblich ist die Verwendung eines einzigen Quelltextes zur Generierung unterschiedlicher aber redundanter Maschinencodes.Generation of the machine code includes. It is equally unimportant whether the different machine codes are created by one or more compilers; the decisive factor is the use of a single source text for the generation of different but redundant machine codes.
L 5L 5
In einem fehlertoleranten System bezeichnet ein sogenannter „Single Point of Failure" Stellen im System, wo verschiedene Pfade so zusammengeführt werden, so dass ein Fehler an dieser Stelle einen Gesamtfehler zur Folge hätte. Ein üblicher Single Point of Failure ist der sogenannter Voter, dass ist dieIn a fault-tolerant system, a so-called "single point of failure" refers to points in the system where different paths are merged, so a failure at that point would result in a total error. "A common single point of failure is the so-called voter the
> 0 Plausibilisierungseinheit die verschiedene Rechenwege bzw. deren Lösungen zusammenführt, vergleicht und ein Gesamtergebnis daraus evaluiert.> 0 plausibility unit which brings together different calculation methods or their solutions, compares them and evaluates the overall result.
Beschreibung der ZeichnungenDescription of the drawings
>5 Ausführungsbeispiele der Erfindung sind in den Zeichnungen dargestellt und in der nachfolgenden Beschreibung näher erläutert. Es zeigen> 5 embodiments of the invention are illustrated in the drawings and explained in more detail in the following description. Show it
Figur 1 verschiedene Anordnungen für fehlertolerante Systeme, Figur 2 eine beispielhafte Umsetzung eins Multiplikationsbefehls.Figure 1 shows various arrangements for fault-tolerant systems, Figure 2 shows an exemplary implementation of a multiplication command.
3030
In Figur Ia sind beispielhaft der Basisaufbau eines fehlertoleranten Systems dargestellt, bei dem es mindestens zwei Pfade gibt, wobei ein Auftreten eines Fehlers auf einem dieser Pfade erkannt wird, indem der hier als Komperator dargestellte Voter einen Unterschied feststellt.FIG. 1a shows, by way of example, the basic structure of a fault-tolerant system, in which there are at least two paths, wherein an occurrence of an error on one of these paths is detected, in that the voter shown here as a comparator determines a difference.
35 In Figurteil b ist gezeigt wie eine einzige Software SW mittels eines Compilers C in einen Maschinencode M umgesetzt wird, der auf verschiedener Hardware HWl, HW2 zum Einsatz kommt und somit ermöglicht einen Defekt in einer der verschiedenen Hardware zu erkennen.35 FIG. 1 b shows how a single software SW is converted by means of a compiler C into a machine code M which is used on different hardware HW1, HW2 and thus makes it possible to detect a defect in one of the various hardware.
55
In Figurteil c sind zwei unterschiedliche Software SWl, SW2 dargestellt, welche nach einer Übersetzung mittels eines (ggf. gleichartigen/des selben) Compilers C in Maschinencode Ml, M2 übersetzt werden und in einer Hardware zur Ausführung kommen. Analog zu Figurteil b können hier zusätzlich auchIn FIG. 2c, two different software SW1, SW2 are shown, which are translated into a machine code M1, M2 after a translation by means of a (possibly similar / the same) compiler C and are executed in a hardware. Analogously to Figure b part can also here
L O verschiedene, d.h. getrennte Einheiten von Hardware zum Einsatz kommen.L o different, i. separate units of hardware are used.
Mittels eines solchen Systems wird sichergestellt, dass ein Fehler, der in nur einer der Software vorkommt erkannt wird.Such a system ensures that an error that occurs in only one of the software is detected.
In Figurteil d ist das erfindungsgemäße Verfahren vorgestellt, wobei eine einzige L 5 Software hier einen Quellcode SW in einen Compiler C eingeht, welcher zwei verschiedene Maschinencodes Ml, M2 erzeugt, welche auf der Hardware zur Ausführung kommen. Die abschließende Fehlerbeurteilung wird wie üblich von einem Komparator (Voter) durchgeführt. Darüber hinausgehen kann beispielsweise bei Verwendung eines Interpreters, welcher insbesondere bei > 0 Hochsprachen wie Java oder Basic Verwendung findet, der hier mit Compiler C bezeichnete Block in der Hardware selbst zum Liegen kommen, wobei der Interpreter selbstständig die Befehle auf zwei verschiedene Arten in Maschinencode umsetzt und dem erfindungsgemäßen Verfahren folgt. Ein Interpreter funktioniert üblicherweise derart, dass er die Befehle der Hochsprache ?5 sequenziell einliest und direkt abarbeitet bzw. in Maschinencodebefehle umsetzt, die sofort vom Mikroprozessor ausgeführt werden, und nicht wie ein Compiler C das gesamte Programm zuerst in den kompletten Maschinencode übersetzt.In FIG. 1 d, the method according to the invention is presented, wherein a single L 5 software here inputs a source code SW into a compiler C, which generates two different machine codes M 1, M 2, which are executed on the hardware. The final error assessment is performed as usual by a comparator (voter). In addition, when using an interpreter, for example, which uses high-level languages such as Java or Basic in particular, the block designated here with compiler C can come to lie in the hardware itself, the interpreter independently converting the instructions into machine code in two different ways and the method according to the invention follows. An interpreter typically functions to sequentially read and directly process the high-level language instructions 5 into machine code instructions that are executed immediately by the microprocessor and not, like a compiler C, to first translate the entire program into the complete machine code.
In Figurteil e ist die Idee des nebengeordneten Verfahrensanspruchs dargestellt. 30 Hierbei wird mit einem klassischen Compiler C aus einem Quellcode SW einIn Figure e the idea of the sibling method claim is shown. This involves using a classic compiler C from a source code SW
Maschinencode Ml generiert. Ein weiterer Maschinencode M2 wird aus dem Maschinencode Ml mittels eines Generators G erzeugt. Beide kommen dann auf der Hardware zur Ausführung. In Figur 2 ist die beispielhafte Umsetzung eines Multiplikationsbefehls in einer Hochsprache gezeigt (Figurteil a) welche in zwei verschiedenen Varianten des Maschinencodes, hier als Assemblerbefehlsequenz dargestellt (Figurteil b, c) ist. Die Quell- bzw. Assemblertexte liegen in diesem Beispiel keiner bestimmtenMachine code Ml generated. Another machine code M2 is generated from the machine code Ml by means of a generator G. Both then come on the hardware for execution. FIG. 2 shows the exemplary implementation of a multiplication command in a high-level language (FIG. 2 a) which is represented in two different variants of the machine code, here as assembler command sequence (FIG. Part b, c). The source or assembly texts in this example are not specific
5 Hoch- bzw. Maschinensprache zugrunde der versierte Informatiker kann diese5 High or machine language based on the savvy computer scientist can this
Sprachen jedoch einfach auf die verwendete Plattform anpassen und wird in diesem Beispiel ausreichend Illustrationen finden. Erfindungsgemäß wird nun die Befehlszeile in Figurteil a bei der Generierung eines ersten Maschinencodes mittels der Befehlssequenz wie sie in Figurteil b dargestellt ist generiert, währendHowever, just adapt languages to the platform used and will find enough illustrations in this example. According to the invention, the command line in FIG. 1 a is generated during the generation of a first machine code by means of the command sequence as shown in FIG
L O sie für den zweiten Maschinencode mittels der Befehlssequenz wie sie inL O for the second machine code using the command sequence as shown in
Figurteil c dargestellt ist generiert. So ist eine Realisierungsvariante, dass der Compiler eine Übersetzungstabelle besitzt, welches ihm ermöglicht jeden beliebigen Befehl der Hochsprache in mindestens zwei unterschiedliche Maschinencodevarianten zu übersetzen.Figurteil c shown is generated. Thus, one implementation variant is that the compiler has a translation table which allows it to translate any high-level language command into at least two different types of machine code.
L 5L 5
In diesem Beispiel wurde der Multiplikationsbefehl in der Hochsprache in der Variante in Figurteil b mittels des Assemblermultiplikationsbefehls übersetzt. In einer asynchronen Variante in Figurteil c wurde dieser Befehl mittels einer Schleife und Additionen realisiert.In this example, the multiplication command in the high-level language in the variant in FIG. 2 b was translated by means of the assembler-multiplication command. In an asynchronous variant in part c, this command was realized by means of a loop and additions.
> 0> 0
Ein weiteres Ausführungsbeispiel welches hier nicht in einer Figur illustriert ist, wäre beispielsweise die Durchführung von sogenannten Verzweigungs- Operatoren die jeweils mit negierten Testbedingungen ausgeführt werden. Üblicherweise werden Sprünge im Maschinencode durch das Prüfen einzelnerAnother embodiment, which is not illustrated here in a figure, would be, for example, the implementation of so-called branch operators which are each performed with negated test conditions. Usually, jumps in the machine code by testing individual
>5 Ergebnis-Bits einer vorhergehenden Berechnung ausgeführt. Gängige> 5 result bits of a previous calculation executed. common
Assembler- Befehle sind etwa bz (branch zero) und bnz (branch not zero), die direkt zu einer doppelten, unterschiedlichen Realisierung eines Verzeigungsoperators führen. Lediglich die Bedingung muss vorher mit mindestens einem zusätzlichen Befehl negiert werden, was jedoch mit allenAssembler commands are bz (branch zero) and bnz (branch not zero), which lead directly to a double, different realization of a branching operator. Only the condition must be previously negated with at least one additional command, but with all
30 gängigen Befehlssätzen ohne weiteres möglich ist. Je nach Umsetzung der30 common instruction sets readily possible. Depending on the implementation of
Befehle im Maschinencode kann auch eine Übersetzung der selben Verzweigung durch den Check verschiedener Bedingungen realisiert werden. Beispielsweise kann ein bnz (branch not zero) durch die Benutzung des sog. Count- Registers simulieren, indem man das Register auf den zu prüfenden Wert+1 setzt und stattCommands in the machine code can also be realized a translation of the same branch by the check of various conditions. For example, by using the so-called count register, a branch number zero can be simulated by setting the register to the value to be tested + 1 and instead of
35 bnz den Befehl bdnz (decrement Count- Register and branch if not zero) benutzen. 35 bnz the command bdnz (decrement count register and branch if not zero) to use.

Claims

Ansprüche claims
1. Verfahren1. Procedure
- zur automatisierten Generierung- for automated generation
5 - wenigstens zweier redundanter, aber unterschiedlicher Realisierungswege5 - at least two redundant but different ways of implementation
- für ein sicherheitskritisches System dadurch gekennzeichnet, dass- For a safety-critical system, characterized in that
- die wenigstens zwei Realisierungswege aus einer einzigen Systembeschreibung generiert werden, welche- The at least two implementation paths are generated from a single system description, which
L O - auf wenigstens einer Hardware zur Ausführung kommen undL O - come on at least one hardware to run and
- die Ergebnisse der wenigstens zwei Realisierungswege miteinander auf Gleichheit, bzw. Plausibilität verglichen werden.- The results of the at least two implementation paths are compared with each other for equality or plausibility.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass L 5 - bei der Generierung der Realisierungswege2. The method according to claim 1, characterized in that L 5 - in the generation of the realization paths
- Bestandteile eines ersten Realisierungswegs asynchron in dem wenigstens zweiten Realisierungsweg verwendet werden.- Components of a first implementation path are used asynchronously in the at least second realization path.
3. Verfahren nach einem der vorigen Ansprüche, dadurch gekennzeichnet, dass > 0 - es sich bei der Systembeschreibung um einen Quellcode einer Hochsprache3. The method according to any one of the preceding claims, characterized in that> 0 - in the system description is a source code of a high-level language
- und bei den Realisierungswegen um Programmobjektcode oder Maschinencode- and in the realization paths to program object code or machine code
- und bei der automatisierten Generierung um eine Compilierung oder eine Programmumsetzung handelt.- and in the automated generation is a compilation or a program implementation.
.5.5
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass4. The method according to claim 3, characterized in that
- die Compilierung die wenigstens zwei Maschinencodes so generiert, dass unterschiedliche Maschinencodebefehle oder Befehlssequenzen verwendet werden, um einen Befehl aus der Hochsprache umzusetzen.the compilation generates the at least two machine codes in such a way that different machine code instructions or command sequences are used to implement a command from the high-level language.
3030
5. Verfahren nach Anspruch 3 und 4, dadurch gekennzeichnet, dass5. The method according to claim 3 and 4, characterized in that
- die Compilierung derart konfiguriert wird, dass Laufzeit und/oder Speicherplatzbedarf und/oder Programmgröße der wenigstens zwei Maschinencodes angepasst wird.- The compilation is configured such that runtime and / or storage space requirement and / or program size of the at least two machine codes is adjusted.
35 35
6. Verfahren nach einem der vorigen Ansprüche, dadurch gekennzeichnet, dass6. The method according to any one of the preceding claims, characterized in that
- die Ausführung der wenigstens zwei Realisierungswege oder Maschinencodes in einem einzigen Mikroprozessor oder integriertem Bauelement stattfindet.the execution of the at least two realization paths or machine codes takes place in a single microprocessor or integrated component.
5 7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass5. The method according to claim 6, characterized in that
- die Ausführung der wenigstens zwei Realisierungswege oder des Maschinencodes, oder Bestandteile davon, in verschiedenen Einheiten des Mikroprozessors oder des integrierten Bauelements ausgeführt werden.the execution of the at least two realization paths or of the machine code, or components thereof, are carried out in different units of the microprocessor or of the integrated component.
L O 8. VerfahrenL O 8. Procedure
- zur automatisierten Generierung- for automated generation
- eines wenigstens eines redundanten, aber unterschiedlichen Realisierungswegs oder Maschinencodesone of at least one redundant but different realization path or machine code
- für ein sicherheitskritisches System L 5 dadurch gekennzeichnet, dass- For a safety-critical system L 5 characterized in that
- der wenigstens eine Realisierungsweg oder Maschinencode aus einem bestehenden Realisierungsweg oder Maschinencode generiert wird undthe at least one realization path or machine code is generated from an existing realization path or machine code, and
- die beiden Maschinencodes dann auf wenigstens einer Hardware zur Ausführung kommen und- The two machine codes then come on at least one hardware to run and
> 0 - die Ergebnisse der wenigstens zwei Realisierungswege oder Maschinencodes miteinander auf Gleichheit bzw. Plausibilität verglichen werden.> 0 - the results of the at least two implementation paths or machine codes are compared with each other for equality or plausibility.
9. Vorrichtung9. Device
- zur Erzeugung wenigstens zweier redundanter, aber unterschiedlicher >5 Realisierungswege- To generate at least two redundant, but different> 5 implementation paths
- für ein sicherheitskritisches System- for a safety-critical system
- mittels eines automatisierten Generators dadurch gekennzeichnet, dass- characterized by an automated generator characterized in that
- die wenigstens zwei Realisierungswege aus einer einzigen 30 Systembeschreibung generiert werden,the at least two ways of realization are generated from a single system description,
- welche auf wenigstens einer Hardware zur Ausführung kommen undwhich are executed on at least one hardware and
- die Ergebnisse der wenigstens zwei Realisierungswege mittels eines Voters auf Gleichheit bzw. Plausibilität verglichen werden. the results of the at least two ways of realization are compared by means of a vote for equality or plausibility.
PCT/EP2009/063870 2008-10-31 2009-10-22 Device and method for generating redundant but different machine codes from a source code for verification for a safety-critical system WO2010049339A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102008043374.8 2008-10-31
DE200810043374 DE102008043374A1 (en) 2008-10-31 2008-10-31 Device and method for generating redundant but different machine codes from a source code for verification for a safety-critical system

Publications (1)

Publication Number Publication Date
WO2010049339A1 true WO2010049339A1 (en) 2010-05-06

Family

ID=41396116

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2009/063870 WO2010049339A1 (en) 2008-10-31 2009-10-22 Device and method for generating redundant but different machine codes from a source code for verification for a safety-critical system

Country Status (2)

Country Link
DE (1) DE102008043374A1 (en)
WO (1) WO2010049339A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014001543A1 (en) 2012-06-29 2014-01-03 Société Technique pour l'Energie Atomique TECHNICATOME Method for the secure processing of data, and associated computer
US20200353884A1 (en) * 2019-05-08 2020-11-12 Mobileye Vision Technologies Ltd. System on chip

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014121817A1 (en) * 2013-02-05 2014-08-14 Abb Technology Ltd Software diversity for industrial control systems
DE102015204337A1 (en) * 2015-03-11 2016-09-15 Siemens Aktiengesellschaft Security-relevant computer system
EP3367242B1 (en) * 2017-02-24 2021-04-07 Bombardier Transportation GmbH Method of error detection in a microcontroller unit

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6473897B1 (en) * 1998-04-13 2002-10-29 Intel Corporation Method and apparatus for generating multiple processor-specific code segments in a single executable
US6658656B1 (en) * 2000-10-31 2003-12-02 Hewlett-Packard Development Company, L.P. Method and apparatus for creating alternative versions of code segments and dynamically substituting execution of the alternative code versions
DE102004005730A1 (en) 2004-02-05 2005-08-25 Robert Bosch Gmbh Method for configuring a computer program

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LOVRIC T: "Detecting hardware-faults with systematic and design diversity: experimental results", COMPUTER SYSTEMS SCIENCE AND ENGINEERING,, vol. 11, no. 2, 1 March 1996 (1996-03-01), pages 83 - 92, XP009127286 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014001543A1 (en) 2012-06-29 2014-01-03 Société Technique pour l'Energie Atomique TECHNICATOME Method for the secure processing of data, and associated computer
US20200353884A1 (en) * 2019-05-08 2020-11-12 Mobileye Vision Technologies Ltd. System on chip

Also Published As

Publication number Publication date
DE102008043374A1 (en) 2010-05-06

Similar Documents

Publication Publication Date Title
EP1917592B1 (en) Computer system with at least two execution units and a comparison unit and method for controlling the same
DE112016004678T5 (en) A method of executing programs in an electronic system for functional security applications comprising a plurality of processors, corresponding system and computer program product
EP3841438B1 (en) Automation system for monitoring a safety-critical process
WO2010049339A1 (en) Device and method for generating redundant but different machine codes from a source code for verification for a safety-critical system
DE102005037230A1 (en) Method and device for monitoring functions of a computer system
WO2013020852A1 (en) Method and apparatus for automatically creating an executable safety function for a device
DE102016215345A1 (en) Method and device for redundant data processing
WO2006032585A1 (en) Method for executing a computer program on a computer system
EP1680737B1 (en) Method and device for operand processing in a processor unit
DE102008024193A1 (en) Data or signals processing method for brake booster in motor vehicle, involves applying set of functional units to data or signals, programming and/or configuring of one of functional units and programming and/or configuring of matrix
EP1955164A1 (en) Program-controlled unit and method for the operation thereof
DE102005037213A1 (en) Operating modes switching method for use in computer system, involves switching between operating modes using switching unit, where switching is triggered by signal generated outside system, and identifier is assigned to signal
EP2228723B1 (en) Method for error treatment of a computer system
EP2902905B1 (en) Method for checking the processing of software
DE102011007467A1 (en) Polynuclear integrated microprocessor circuitry for, e.g. vehicle domain computer, has tester to perform time-integral checking of specific components of auxiliary processor structure to and gradually expand checking of other components
DE10007008A1 (en) Data processor monitoring method e.g. for vehicle air bag trigger, involves generating two calculations on same data processor based on input signals from redundant sensors
DE102018120344A1 (en) Automation system for monitoring a safety-critical process
EP1915687A1 (en) Method and device for control of a computer system with at least two execution units
DE102005037236A1 (en) Device and method for configuring a semiconductor circuit
DE102022207612A1 (en) Computer-implemented method for verifying a software component of an automated driving function
DE102005037232A1 (en) Method and device for analyzing processes in a computer system with several execution units
EP2495625B1 (en) Method and programming system for the authentication of a security program of an automation device
DE102015223579A1 (en) Method and device for checking a component error tree
EP1043660B1 (en) Fail-safe automation system
DE102022207616A1 (en) Computer-implemented method for verifying a software component of an automated driving function

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09747809

Country of ref document: EP

Kind code of ref document: A1

122 Ep: pct application non-entry in european phase

Ref document number: 09747809

Country of ref document: EP

Kind code of ref document: A1