DE102015200212A1 - Verfahren zum Erzeugen eines fehlertoleranten Zielcodes - Google Patents

Verfahren zum Erzeugen eines fehlertoleranten Zielcodes Download PDF

Info

Publication number
DE102015200212A1
DE102015200212A1 DE102015200212.8A DE102015200212A DE102015200212A1 DE 102015200212 A1 DE102015200212 A1 DE 102015200212A1 DE 102015200212 A DE102015200212 A DE 102015200212A DE 102015200212 A1 DE102015200212 A1 DE 102015200212A1
Authority
DE
Germany
Prior art keywords
fault
target code
synthesizer
code
implemented
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.)
Withdrawn
Application number
DE102015200212.8A
Other languages
English (en)
Inventor
Michael Kaelbling
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.)
Siemens AG
Original Assignee
Siemens AG
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 Siemens AG filed Critical Siemens AG
Priority to DE102015200212.8A priority Critical patent/DE102015200212A1/de
Publication of DE102015200212A1 publication Critical patent/DE102015200212A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Retry When Errors Occur (AREA)

Abstract

Die vorliegende Erfindung betrifft ein Verfahren zum Erzeugen eines fehlertoleranten Zielcodes aus einem Quellcode, mit den Schritten eines Erfassens (S101) einer Fehlertoleranzanweisung für ein Erzeugen des Zielcodes; und eines Steuerns (S102) eines Synthetisierers auf Basis der Fehlertoleranzanweisung zum Erzeugen des fehlertoleranten Zielcodes.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren zum Erzeugen eines fehlertoleranten Zielcodes aus einem Quellcode.
  • Bisher waren Programmierer dafür verantwortlich, die Fehlertoleranz eines Zielcodes industrieller Anwendungen durch eine direkte Programmierung gemäß spezieller Vorgaben zu programmieren. Bei dieser direkten Programmierung werden prozedurale oder funktionale Anweisungen in den Quellcode als explizite Anweisungssequenzen geschrieben. An denjenigen Stellen des Quellcodes, an denen Verbesserungen hinsichtlich einer Fehlertoleranz erforderlich sind, jedoch nicht implementiert sind, muss ein Programmierer den Quellcode umschreiben, um diese hinzuzufügen. Sofern diese Fehlertoleranz jedoch nicht erforderlich ist, muss ein Programmierer den Quellcode ebenfalls umschreiben, um diese zu entfernen. Somit wird die Fehlertoleranz des Zielcodes händisch von einem Programmierer in den Quellcode eingearbeitet.
  • Da jedoch nicht immer ausreichende Ressourcen in einer Zeitschicht oder einem Speicherraum zur Verfügung stehen, um eine Implementierung aller möglichen Verbesserungen zuzulassen, kann eine priorisierte Auswahl erforderlich sein. Eine Entfernung kann beispielsweise durchgeführt werden, wenn die begrenzte Speicherkapazität in industriellen Steuergeräten (Controllern) berücksichtigt werden soll. Eine Hinzufügung eines neuen Merkmals in der nächsten Generation eines Produkts kann mehr Speicher erfordern als verfügbar ist. Falls ein neues Merkmal technisch wertvoller als eine Verbesserung einer Fehlertoleranz ist, kann die Verbesserung ausgelassen werden, um Speicherplatz für das Merkmal zu schaffen. Die Identifikation, Evaluation und Priorisierung unterschiedlicher Maßnahmen zur Fehlertoleranz werden bisher händisch durch den Programmierer durchgeführt.
  • Der vorliegenden Erfindung liegt die Aufgabe zugrunde, das Erstellen eines fehlertoleranten Zielcodes technisch zu vereinfachen.
  • Diese Aufgabe wird jeweils durch einen Gegenstand nach den unabhängigen, nebengeordneten Ansprüchen gelöst. Vorteilhafte Ausführungsformen sind Gegenstand der abhängigen Ansprüche, der Beschreibung und der Zeichnungen.
  • Gemäß einem ersten Aspekt wird die Aufgabe durch ein Verfahren zum Erzeugen eines fehlertoleranten Zielcodes aus einem Quellcode gelöst, mit den Schritten eines Erfassens einer Fehlertoleranzanweisung für ein Erzeugen des Zielcodes; und eines Steuerns eines Synthetisierers auf Basis der Fehlertoleranzanweisung zum Erzeugen des fehlertoleranten Zielcodes. Der Zielcode wird beispielsweise durch zusätzliches Einsetzen von vorgegebenen Codeabschnitten erzeugt, die die Fehlertoleranz des Zielcodes erhöhen. Dadurch wird beispielsweise der technische Vorteil erreicht, dass die Fehlertoleranz des Zielcodes automatisch anhand der Fehlertoleranzanweisung angepasst werden kann. Je fehlertoleranter ein System ist, desto besser können Steueraufgaben durchgeführt werden und desto geringer sind beispielsweise der Ausschuss und die Ausfallzeit von Produktionsanlagen. Diese Effizienz ist daher immer ein Aspekt in Entwicklungsprozessen.
  • Die Fehlertoleranz, auch Robustheit genannt, kann beispielsweise als Grad definiert werden, bis zu dem ein System oder eine Komponente beim Vorliegen ungültiger Eingaben oder von Beanspruchungszuständen korrekt funktionieren kann.
  • In einer vorteilhaften Ausführungsform des Verfahrens ist die Fehlertoleranzanweisung innerhalb des Quellcodes angeordnet. Dadurch wird beispielsweise der technische Vorteil erreicht, dass einzelne Abschnitte des Quellcodes auf unterschiedliche Weise mit einer Fehlertoleranz implementiert werden können.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens erzeugt der Synthetisierer die Fehlertoleranz des Zielcodes in Abhängigkeit einer Speichergröße eines Zielsystems oder einer Laufzeit im Zielsystem. Dadurch wird beispielsweise der technische Vorteil erreicht, dass die Fehlertoleranz an die Ausführungsumgebung angepasst werden kann und die Fehlertoleranz nur dann implementiert wird, wenn eine vorgegebene Speichergröße oder Laufzeit nicht überschritten wird.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass ein Rauschfilter für eine Dateneingabe in den Zielcode implementiert wird. Dadurch wird beispielsweise der technische Vorteil erreicht, dass ein Zielcode erzeugt wird, der gegenüber einem Rauschen der Dateneingabe unanfällig ist.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass eine Wiederholung einer Datenauswertung in den Zielcode implementiert wird. Dadurch wird beispielsweise der technische Vorteil erreicht, dass ein Zielcode erzeugt wird, der gegenüber Auswertungsfehlern unanfällig ist.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass eine Auswertung einer Prüfsumme in den Zielcode implementiert wird. Dadurch wird beispielsweise der technische Vorteil erreicht, dass Daten- oder Übermittlungsfehler durch den Zielcode identifiziert werden können.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass ein zweiter Vergleich in den Zielcode implementiert wird, der zusätzlich zu einem ersten Vergleich in dem Quellcode ist. Dadurch wird beispielsweise der technische Vorteil erreicht, dass der Zielcode eine redundante Auswertung vornehmen kann.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens basiert der zweite Vergleich auf einer Datenauswertung, die unterschiedlich zu derjenigen des ersten Vergleichs ist. Dadurch wird beispielsweise der technische Vorteil erreicht, dass zwei unterschiedliche Datenauswertungen vorgenommen werden, anhand derer ein Berechnungsergebnis überprüft werden kann.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass eine Gegenprobe eines Ausgabenwerts in den Zielcode implementiert wird. Dadurch wird beispielsweise der technische Vorteil erreicht, dass sich Auswertungsfehler identifizieren lassen.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass die Fehlertoleranz unter der Bedingung einer vorgegebenen Größe oder Ausführungsgeschwindigkeit des Zielcodes implementiert wird. Dadurch wird beispielsweise der technische Vorteil erreicht, dass der Zielcode auch in Ausführungsumgebungen mit einem begrenzten Speicherplatz ausgeführt werden kann.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass eine redundante Berechnung mit einem vorgegebenen Redundanzgrad in den Zielcode implementiert wird. Dadurch wird beispielsweise der technische Vorteil erreicht, dass sich unterschiedliche Redundanzstufen in dem Zielcode implementieren lassen.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass ein Speichertest in den Zielcode implementiert wird. Dadurch wird beispielsweise der technische Vorteil erreicht, dass die Zuverlässigkeit einer Ausführungsumgebung getestet werden kann.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass ein Prozessortest in den Zielcode implementiert wird. Dadurch wird beispielsweise ebenfalls der technische Vorteil erreicht, dass Zuverlässigkeit einer Ausführungsumgebung getestet werden kann.
  • In einer weiteren vorteilhaften Ausführungsform des Verfahrens wird der Synthetisierer auf Basis der Fehlertoleranzanweisung derart gesteuert, dass die Überprüfung eines Eingabewertes auf Plausibilität in den Zielcode implementiert wird. Dadurch wird beispielsweise der technische Vorteil erreicht, dass fehlerhafte Eingabewerte erkannt werden können.
  • Gemäß einem zweiten Aspekt wird die Aufgabe durch einen Compiler zum Erzeugen eines fehlertoleranten Zielcodes aus einem Quellcode gelöst, mit einer Erfassungseinrichtung zum Erfassen einer Fehlertoleranzanweisung für ein Erzeugen des Zielcodes; und einer Steuereinrichtung zum Steuern eines Synthetisierers auf Basis der Fehlertoleranzanweisung zum Erzeugen des fehlertoleranten Zielcodes.
  • Vorstehend ist die Lösung der Aufgabe anhand des Verfahrens beschrieben. Dabei erwähnte Merkmale, Vorteile oder alternative Ausführungsformen können ebenfalls auch auf die anderen beanspruchten Gegenstände übertragen werden. Die gegenständlichen Ansprüche können mit den Merkmalen weitergebildet sein, die in Zusammenhang mit dem Verfahren beschrieben oder beansprucht sind. Die entsprechenden funktionalen Merkmale des Verfahrens können dabei durch entsprechende gegenständliche Module ausgebildet werden, insbesondere durch Hardware-Module oder Mikroprozessor-Module.
  • Gemäß einem dritten Aspekt wird die Aufgabe durch ein Computerprogrammprodukt gelöst, das in einen Speicher eines Computers geladen oder ladbar ist, mit Computerprogrammcode zur Durchführung des oben beschriebenen Verfahrens, wenn das Computerprogrammprodukt auf dem Computer ausgeführt wird.
  • Gemäß einem vierten Aspekt wird die Aufgabe durch ein Computerprogramm gelöst, mit Computerprogrammcode zur Durchführung aller Verfahrensschritte des oben beschriebenen Verfahrens, wenn das Computerprogramm auf einem Computer ausgeführt wird. Dabei ist es auch möglich, dass das Computerprogramm auf einem von einem Computer lesbaren Medium gespeichert ist.
  • In der folgenden detaillierten Figurenbeschreibung werden nicht einschränkend zu verstehende Ausführungsbeispiele mit deren Merkmalen und weiteren Vorteilen anhand der Zeichnungen besprochen.
  • In diesen zeigen:
  • 1 ein Blockdiagramm des Verfahrens; und
  • 2 eine schematische Ansicht eines Compilers.
  • 1 zeigt ein Blockdiagramm des Verfahrens. Ein optimierendes Compilersystem wird verwendet, um automatisch fehlertoleranz-verbessernde Anweisungen unter Berücksichtigung von Beschränkungen des Zielsystems hinsichtlich eines Zeitverhalten oder einer Speichergröße einzusetzen. Fehlertoleranz oder Robustheit ist der Grad, bis zu dem ein System korrekt beim Vorliegen von transienten Rauschen oder Hardwarefehlern arbeiten kann. Fehlertoleranz ist eine Voraussetzung im Bereich industrieller Software, bei der die Fehlfunktion oder Nichtfunktion zu Störungen führen kann. Die industrielle Software wird auf industrieller Hardware ausgeführt, die einen Bereich von Mikrocontrollern über programmierbare Logikcontroller bis zu Workstations abdeckt. In allen diesen Geräten kann ungenutzter Speicherplatz verwendet werden, um zusätzliche Anweisungen in einen Zielcode einzusetzen, die eine Fehlertoleranz der Anwendung bewirken oder erhöhen.
  • In einem ersten Schritt S101 werden zunächst die Fehlertoleranzanweisungen für ein Erzeugen des Zielcodes erfasst. Dies kann durch eine Einstellung der Entwicklungsumgebung oder durch Pragmas geschehen, die als Deklarationsanweisungen im Quellcode verwendet werden, um unterschiedliche Optimierungen zu ermöglichen oder zu beschränken. Zu diesem Zweck kann der Quellcode gescannt, geparst oder analysiert werden, um Datenstrukturen für eine Fehlertoleranzleistungsfähigkeit und eine Codeerzeugung zu erzeugen.
  • In einem zweiten Schritt S102 wird ein Synthetisierer auf Basis der Fehlertoleranzanweisung zum Erzeugen des fehlertoleranten Zielcodes gesteuert. Die vorangehende Analyse und Erfassung der Fehlertoleranzanweisungen liefert ergänzte Datenstrukturen, die durch den Synthetisierer als codeerzeugende Komponente verwendet werden, um den Zielcode mit hinzugefügten Fehlertoleranzbefehlen zu erzeugen. Der Synthetisierer erzeugt den Zielcode in Übereinstimmung gemäß den Prioritäten und Arten der unterschiedlichen Optimierungen. Die Ausgabe kann ein Quell-zu Quellcode oder ein Quell-zu-Maschinencode sein.
  • 2 zeigt eine schematische Ansicht eines Compilers 100. Der Compiler 100 verwendet als Eingabe einen Quellcode SC einer Computersprache und erzeugt als Ausgabe einen Zielcode TC. Der Zielcode TC kann ein Maschinencode oder ein weiterer Quellcode für einen anderen Compiler sein.
  • Eine Fehlertoleranz basiert auf der Erfassung von Fehlern, wie beispielsweise fehlerhaften Operanden, falschen Ergebnissen und ausfallender Hardware. Wird ein Fehler erfasst, kann eine fehlertolerante Komponente im Zielcode im Allgemeinen versuchen, eine Korrektur (beispielsweise durch Ersetzen des Fehlers mit einer korrekten Operation), einen Soft-Fail (beispielsweise ein Ersetzen des Fehlers mit einer schwächeren Operation); einen Safe-Fail (beispielsweise ein Übergehen in einen abgesicherten Modus einer Operation), ein Alarmieren/eine Ausnahmebehandlung (beispielsweise einen Fehler an einen übergeordneten Handler signalisieren), ein Protokollieren (beispielsweise einen Fehler aufzeichnen) oder ein Herunterfahren durchzuführen.
  • Eine Fehlererfassung kann einerseits auf einer Redundanz basieren, d.h. auf einer funktionalen zusätzlichen oder duplizierten Information. Ein Paritätsbit ist dabei kein Teil eines funktionalen Wertes, sondern wird aus dem funktionalen Wert berechnet. Von einem funktionalen Standpunkt aus gesehen, ist das Paritätsbit eine überflüssige und doppelte Information. Jedoch erhöht die Existenz eines geprüften Paritätsbits die Wahrscheinlichkeit, einen Fehler zu erfassen. Andererseits kann eine Fehlerfassung auf einer Hardware basieren. Zum Beispiel können äquivalente Ergebnisse einer redundanten Hardware-Berechnung einer Auswahleinrichtung zugeführt werden, um verdächtige Werte zu erfassen.
  • Der Compiler 100 umfasst einen Analysierer 107 zum Analysieren des Quellcodes SC und einen Synthetisierer 105 zum Erzeugen des Zielcodes TC. Eine Erfassungseinrichtung 101 dient zum Erfassen einer Fehlertoleranzanweisung aus dem Quellcode SC für ein Erzeugen des Zielcodes. Die Erfassungseinrichtung 101 kann beispielsweise Fehlertoleranzanweisungen erfassen, die im Quellcode SC eingebettet sind oder globale Fehlertoleranzanweisungen erfassen, die in der Entwicklungsumgebung des Compilers 100 eingestellt werden.
  • Eine Steuereinrichtung 103 dient zum Steuern des Synthetisierers 105 auf Basis der Fehlertoleranzanweisung. Die Steuerung des Synthetisierers 105 erfolgt derart, dass fehlertolerante Codeabschnitte oder Anweisungen in den Zielcode implementiert werden.
  • Beispielsweise kann eine Eingabe aus einer Umgebung zu einem ungewollten Verhalten in einem Anwendungssystem führen. Da beispielsweise ein Öffnen eines Sprinkler-Ventils die Waren in einem Warenhaus beschädigen könnte, sollte sichergestellt werden, dass sich dieses lediglich öffnet, um ein tatsächliches Feuer zu löschen. Ein vorübergehendes Fehleinlesen einer Raumtemperatur, sollte nicht dazu führen, dass das Sprinkler-Ventil geöffnet wird. In diesem Fall sollte eine Fehlertoleranz dadurch hergestellt werden, dass eine ungültige Eingabe erfasst wird und korrekt verarbeitet wird.
  • In einer Hardware-Domäne können nicht verwendete Eingabeports verwendet werden. Da in einem System, das auf einem programmierbaren Logikcontroller basiert, oftmals eine gewisse Anzahl nicht verwendeter Eingabeports existiert, können diese für eine redundante Eingabe verwendet werden.
  • Zum Beispiel kann ein einmal vorhandener Detektor an zwei verschiedene Eingabeports mittels paralleler Drähte verbunden werden. Die Wahrscheinlichkeit, dass ein Rauschen beide Drähte gleichzeitig betrifft, ist geringer als diejenige, dass ein einzelner Draht betroffen ist.
  • In diesem Fall kann der Synthetisierer 105 auf Basis der Fehlertoleranzanweisung derart gesteuert werden, dass ein Auswerten beider Eingabeports in den Zielcode implementiert wird.
  • In einer Raum-Zeit-Domäne kann eine Dateneingabe über mehrere Zyklen beim Vorliegen eines transienten Rauschens ausgewertet werden. Der Zielcode nimmt eine Reihe von Eingabewerten auf und bestimmt den wahrscheinlichsten tatsächlichen Wert. Der Auswahlalgorithmus kann deklarativ spezifiziert werden, so dass der Synthetisierer 105 dazu veranlasst werden kann, einen entsprechenden Zielcode zu erstellen. Beispielsweise kann der Synthetisierer 105 auf Basis der Fehlertoleranzanweisung derart gesteuert werden, dass ein Rauschfilter für eine Dateneingabe in den Zielcode implementiert wird.
  • Hierbei kann ein zusätzlicher Speicher erforderlich sein, um Zwischenwerte zu speichern und eine zusätzliche Verarbeitungszeit kann erforderlich sein, um auf eine Umweltbedingung zu reagieren. Daher kann der der Compiler 100 den Zielcode unter der Beschränkung eines verfügbaren Speichers und Antwortzeiterfordernissen erstellen. Wird ein verfügbarer Speicher überschritten, kann von einer Implementierung der Fehlertoleranz abgesehen werden.
  • Als Auswahlschemata stehen unterschiedliche Möglichkeiten zur Verfügung. Bei einer Mehrheitsauswahl stimmen M der N Eingabewerte überein. Zum Beispiel kann bei einer “Best Of“-Auswahl derjenige Wert ausgewählt werden, der drei oder mehrmals in den letzten fünf Messungen auftritt. Supermehrheiten können ebenfalls als Auswahl implementiert werden. Beispielsweise können vier aus fünf Werten erforderlich sein, um einen Zustand zu ändern.
    Zustand (t) Eingabe Zustand (t + 1)
    1 00X00 0
    1 101XX 1
    0 X1111 1
    0 X0X0X 0
  • Ein Spezialfall ist eine einstimmige Auswahl (N aus N).
  • Eine weitere Auswahl kann als eine gewichtete Auswahl oder eine Veto-Auswahl durchgeführt werden (Biased oder Veto Voting). Einigen Dateneingaben wird dabei ein höheres Gewicht zugewiesen. Zum Beispiel übertrumpfen vier Ja-Stimmen drei Nein-Stimmen, aber nicht umgekehrt.
    Zustand (t) Eingabe Zustand (t + 1)
    0 0001111 0
    0 0111110 1
    1 1010101 0
  • Bei der Kontingent-Auswahl kann ein Kontingent verwendet werden.
    A B T Ergebnis
    0 0 0 0
    0 0 1 1
    0 1 0 0
    0 1 1 1
    1 0 0 0
    1 0 1 1
    1 1 0 1
    1 1 1 1
  • Falls A und B übereinstimmen, dann ist dies das Ergebnis. Falls A und B jedoch nicht übereinstimmen, wird T verwendet. T hat keine besonderen Einflüsse, so dass, wenn A und B übereinstimmen, ein korrekter Wert vorliegt, selbst falls T fehlerhaft sein sollte. Im Allgemeinen können jedoch auch andere Auswahl-Schemata verwendet werden.
  • Eine Ausgabe-Aufbereitung (Output Conditioning) kann in gleicher Weise wie eine Eingabe-Aufbereitung (Input Conditioning) verwendet werden. Statt einen berechneten Wert direkt an Stellglieder auszugeben, kann dieser mit einer Neuberechnung oder alternativen Berechnung gegengeprüft werden. Zudem kann eine Auswahl durchgeführt werden und Zustandsänderungen können verschoben werden, bis ein Übereinstimmungswert gefunden worden ist. Der Synthetisierer 105 kann dann auf Basis der Fehlertoleranzanweisung derart gesteuert werden, dass eine Wiederholung einer Datenauswertung in den Zielcode implementiert wird.
  • Um korrumpierte Bits zu erkennen, können Prüfsummen über gespeicherte Werte hinweg berechnet werden, wie beispielsweise Program-ROMs, Datenpuffer und Speicherbänke. Da Speicherbänke eine Vielzahl von Speicherzellen aufweisen, können Prüfsummen bereichsweise berechnet werden. Die Frequenz dieser bereichsweisen Prüfsummenberechnungen können für das Risiko optimiert werden, das bei einer verspäteten Entdeckung eines Problems entsteht. Der Synthetisierer 105 kann dann auf Basis der Fehlertoleranzanweisung derart gesteuert werden, dass eine Auswertung einer Prüfsumme in den Zielcode implementiert wird.
  • Laufzeit-Testroutinen können verwendet werden, um arithmetische und logische Einheiten zu prüfen. Dies kann in gleicher Weise geschehen, wie Prüfsummen zum Überprüfen eines Speichers verwendet werden. Die Frequenz und Dauer dieser Überprüfungen kann durch den Compiler hinzugefügt werden.
    Figure DE102015200212A1_0002
  • Der Synthetisierer 105 kann dann auf Basis der Fehlertoleranzanweisung derart gesteuert werden, dass ein Speichertest oder ein Prozessortest in den Zielcode implementiert wird.
  • Durch redundante Berechnungen oder alternative Implementierungen kann im Falle einer Ausgabe-Aufbereitung die Fehlertoleranz erhöht werden. Zum Beispiel können Gleitkommazahl-Operationen verwendet werden, um ganzzahlige Ergebnisse zum Vergleich mit einfachen Ganzzahlausdrücken zu berechnen. Dadurch können Hardware-Fehler in getrennten Festkomma- und Gleitkommaberechnungseinheiten erfasst werden. Der Synthetisierer 105 kann dann auf Basis der Fehlertoleranzanweisung derart gesteuert werden, dass eine redundante Berechnung mit einem vorgegebenen Redundanzgrad in den Zielcode implementiert wird.
  • Die kritischsten Datenauswertungen sollten die fehlertolerantesten sein. Optimierungen des Quellcodes SC mit dem höchsten Nutzen sollten zuerst angewendet werden, wenn keine Zeit oder kein Speicherplatz für alle Optimierungen existiert. Demgemäß kann der Synthetisierer 105 dann auf Basis der Fehlertoleranzanweisung derart gesteuert werden, dass die Fehlertoleranz nur unter der Bedingung einer vorgegebenen Größe oder Ausführungsgeschwindigkeit des Zielcodes implementiert wird.
  • Zudem können durch den Synthetisierer 105 Fehlererfassungs- oder Fehlerkorrekturcodes in nicht verwendete Bits von Speicherwörtern eingefügt werden. Falls zum Beispiel ein Wert zwischen 0 und 15 gespeichert wird, kann ein Hamming-(8, 4)-Code verwendet werden. Dieser passt in ein Byte und kann dazu verwendet werden, einzelne Bitfehler zu korrigieren und doppelte Bitfehler zu erfassen. Falls keine Korrekturen angewendet werden, können 1-, 2- und 3-Bitfehler erfasst werden.
  • Als eine Verallgemeinerung kontinuierlicher Speicherprüfsummen können Überwachungsroutinen verwendet werden. Zum Beispiel kann eine Statistik eines erfassten Rauschens, einer erforderlichen Brechung einer Pattsituation (Tie Break), von erfassten Fehlern oder korrigierten Fehlern berechnet werden. Statt eine Operation lediglich einmal durchzuführen, kann diese mehrere Male durchgeführt werden, um die Ergebnisse zu vergleichen. Dabei kann so viel Redundanz bereitgestellt werden, wie erforderlich ist. Diese Redundanz kann sich über die Zeit hinweg ändern, wenn Merkmale hinzugefügt werden.
  • Dies wird durch den Compiler 100 durch eine automatische Erzeugung von fehlertoleranten Quellcode SC ermöglicht. Eine konditionale Ausführung von Fehlertoleranzoperationen kann ausgeführt werden, falls sich das System nicht in einem Worst-Case-Szenario befindet.
  • Der Compiler 100 transformiert den Quellcode SC ohne Fehlertoleranzverbesserungen in einen Zielcode TC mit derartigen Fehlertoleranzverbesserungen, während sichergestellt wird, dass das Ergebnis in den zugewiesenen Speicher passt und in der zugewiesenen Zeit läuft. Dadurch wird der technische Vorteil erreicht, dass sich eine Codeerzeugung für fehlertolerante Anwendungen technisch vereinfacht. Die softwaregesteuerten Geräte mit fehlertoleranten Anwendungen in der Produktion ermöglichen, niedrigere Ausfallzeiten und niedrigeren Ausschuss. Für einen Fachmann ist es insbesondere offensichtlich, dass die Erfindung in allen Compilern angewendet werden kann. Des Weiteren können die Komponenten des Compilers 100 auf mehrere physikalische Vorrichtungen verteilt realisiert werden.
  • Alle in Verbindung mit einzelnen Ausführungsformen der Erfindung erläuterten und gezeigten Merkmale können in unterschiedlicher Kombination in dem erfindungsgemäßen Gegenstand vorgesehen sein, um gleichzeitig deren vorteilhafte Wirkungen zu realisieren.
  • Der Schutzbereich der vorliegenden Erfindung ist durch die nachstehenden Ansprüche gegeben und wird durch die in der Beschreibung erläuterten oder den Figuren gezeigten Merkmale nicht beschränkt.

Claims (15)

  1. Verfahren zum Erzeugen eines fehlertoleranten Zielcodes (TC) aus einem Quellcode (SC), mit den Schritten: Erfassen (S101) einer Fehlertoleranzanweisung für ein Erzeugen des Zielcodes (TC); und Steuern (S102) eines Synthetisierers (105) auf Basis der Fehlertoleranzanweisung zum Erzeugen eines fehlertoleranten Zielcodes (TC).
  2. Verfahren nach Anspruch 1, wobei die Fehlertoleranzanweisung innerhalb des Quellcodes (SC) angeordnet ist.
  3. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) eine Fehlertoleranz des Zielcodes (TC) in Abhängigkeit einer Speichergröße eines Zielsystems oder einer Laufzeit im Zielsystem erzeugt.
  4. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass ein Rauschfilter für eine Dateneingabe in den Zielcode (TC) implementiert wird.
  5. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass eine Wiederholung einer Datenauswertung in den Zielcode (TC) implementiert wird.
  6. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass eine Auswertung einer Prüfsumme in den Zielcode (TC) implementiert wird.
  7. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass ein zweiter Vergleich in den Zielcode (TC) implementiert wird, der zusätzlich zu einem ersten Vergleich in dem Quellcode (SC) ist.
  8. Verfahren nach Anspruch 7, wobei der zweite Vergleich auf einer Datenauswertung basiert, die unterschiedlich zu derjenigen des ersten Vergleichs ist.
  9. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass eine Gegenprobe eines Ausgabenwerts in den Zielcode (TC) implementiert wird.
  10. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass die Fehlertoleranz unter der Bedingung einer vorgegebenen Größe oder Ausführungsgeschwindigkeit des Zielcodes (TC) implementiert wird.
  11. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass eine redundante Berechnung mit einem vorgegebenen Redundanzgrad in den Zielcode (TC) implementiert wird.
  12. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass ein Speichertest in den Zielcode (TC) implementiert wird.
  13. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass ein Prozessortest in den Zielcode (TC) implementiert wird.
  14. Verfahren nach einem der vorangehenden Ansprüche, wobei der Synthetisierer (105) auf Basis der Fehlertoleranzanweisung derart gesteuert wird, dass die Überprüfung eines Eingabewertes auf Plausibilität in den Zielcode (TC) implementiert wird.
  15. Compiler (100) zum Erzeugen eines fehlertoleranten Zielcodes (TC) aus einem Quellcode (SC), mit: einer Erfassungseinrichtung (101) zum Erfassen einer Fehlertoleranzanweisung für ein Erzeugen des Zielcodes (TC); und einer Steuereinrichtung (103) zum Steuern eines Synthetisierers (105) auf Basis der Fehlertoleranzanweisung zum Erzeugen des fehlertoleranten Zielcodes (TC).
DE102015200212.8A 2015-01-09 2015-01-09 Verfahren zum Erzeugen eines fehlertoleranten Zielcodes Withdrawn DE102015200212A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102015200212.8A DE102015200212A1 (de) 2015-01-09 2015-01-09 Verfahren zum Erzeugen eines fehlertoleranten Zielcodes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015200212.8A DE102015200212A1 (de) 2015-01-09 2015-01-09 Verfahren zum Erzeugen eines fehlertoleranten Zielcodes

Publications (1)

Publication Number Publication Date
DE102015200212A1 true DE102015200212A1 (de) 2016-07-14

Family

ID=56233368

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015200212.8A Withdrawn DE102015200212A1 (de) 2015-01-09 2015-01-09 Verfahren zum Erzeugen eines fehlertoleranten Zielcodes

Country Status (1)

Country Link
DE (1) DE102015200212A1 (de)

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Kirrmann et al.: Industrial Automation - Dependable Software. EPFL 25.05.2010(recherchiert am 8.9.2015) *
Kirrmann et al.: Industrial Automation - Dependable Software. EPFL 25.05.2010<http://lamspeople.epfl.ch/kirrmann/Slides/AI_950_Dep_Software.ppt>(recherchiert am 8.9.2015)

Similar Documents

Publication Publication Date Title
DE102010037457B4 (de) Verfahren zur Datenverarbeitung zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Verfahren zum Erzeugen von Programm-Code, Datenverarbeitungsanordnungen zum Bereitstellen eines Wertes zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, Datenverarbeitungsanordnungen zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist, und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
EP2466466A1 (de) Verfahren zur Fehlererkennung bei der Ausführung eines Echtzeit-Betriebssystems
DE102005054587A1 (de) Programmgesteuerte Einheit und Verfahren zum Betreiben derselbigen
DE102011119585A1 (de) Verbesserte skalierbare CPU für die codierte Ausführung von Software in hochabhängigen sicherheitsrelevanten Anwendungen
DE102007056218A1 (de) Verfahren zur Behandlung von transienten Fehlern in Echtzeitsystemen, insbesondere in Steuergeräten von Kraftfahrzeugen
DE102007040721B4 (de) Datenverarbeitungsanordnung, Verfahren zur Datenverarbeitung, Computerprogrammelement und Überprüfungsanordnung für einen Speicher
DE102006036386A1 (de) Mikroprozessorsystem zur Steuerung bzw. Regelung von zumindest zum Teil sicherheitskritischen Prozessen
WO2010049339A1 (de) Vorrichtung und verfahren zur generierung redundanter, aber unterschiedlicher maschinencodes aus einem quellcode zur verifizierung für ein sicherheitskritisches system
EP1359485B1 (de) Steuer- und Überwachungssystem
DE102015200212A1 (de) Verfahren zum Erzeugen eines fehlertoleranten Zielcodes
WO2016050857A1 (de) Verfahren zur datenverarbeitung zum ermitteln, ob bei einer ausführung eines programms ein fehler aufgetreten ist und datenverarbeitungsanordnungen zum erzeugen von programm-code
DE102006036384A1 (de) Mikroprozessorsystem zur Steuerung bzw. Regelung von zumindest zum Teil sicherheitskritischen Prozessen
EP1924914B1 (de) Datenverarbeitungssystem und betriebsverfahren dafür
WO2007071590A1 (de) Verfahren zur erkennung einer versorgungsunterbrechung in einem datenspeicher und zur wiederherstellung des datenspeichers
DE102005016051A1 (de) Speicherüberprüfungsvorrichtung und Verfahren zum Überprüfen eines Speichers
EP2544090A1 (de) Computer Sytem, computerimplementiertes Verfahren und Computerprogrammprodukt zum bestimmen eines pessimistischen Zeitverhaltens eines Fehlertoleranzmechanismus
EP3876123B1 (de) Anordnung und betriebsverfahren für einen sicheren hochfahrablauf einer elektronischen einrichtung
DE102013112020B4 (de) Verfahren und Vorrichtung zum Erkennen von Bitfehlern
AT513533B1 (de) Verfahren zum Überprüfen von Daten mittels wenigstens zweier Prüfsummen
DE10148157B4 (de) Programmgesteuerte Einheit
WO2003032162A2 (de) Verfahren zum überprüfen eines rechnerkerns eines mikroprozessors oder eines mikrocontrollers
DE102022111126A1 (de) Datenverarbeitungsvorrichtung und verfahren zum prüfen der integrität eines speichers
DE102013018647B4 (de) Funktionalität für Ausfallsicherheitscode
DE102010031017A1 (de) Verfahren zur Überwachung des Programmablaufs eines Prozessors

Legal Events

Date Code Title Description
R163 Identified publications notified
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee