Der US-Halbleiterhersteller Freescale Semiconductor bietet Dualcore-Prozessoren an, die den Sicherheits-Niveaus SIL 3 nach EN/IEC 62061 bzw. PL e nach EN ISO 13849-1 entsprechen. Ein Beispiel ist der Baustein MPC5643L, der nicht nur zwei Cores komplett dupliziert mitsamt den zugehörigen Komponenten, sondern auch zahlreiche Sicherheitsfunktionen umfasst.
Roger Ungerer, Senior Field Application Engineer bei der Freescale Halbleiter Deutschland GmbH, erläutert die Safety-Komponenten und Prüfmethoden, die einen Prozessor zum Safety-Prozessor machen.
Markt&Technik: Welche technischen Möglichkeiten in Hard- und Software bestehen, um Singlecore- und Multicore-Prozessoren so sicher zu machen, dass sie die von der Industrie geforderten Sicherheits-Niveaus SIL 3 nach EN/IEC 62061 bzw. PL e nach EN ISO 13849-1 einhalten?
Roger Ungerer: Grundsätzlich sind hier die verschiedenen Fehlerarten, die auftreten können, zu betrachten. Je nach Art des zu erwartenden Fehlers und den spezifischen Anforderungen des Systems ist dann zu entscheiden, ob eine Software- oder eine Hardware-Lösung bzw. eine Kombination besser geeignet ist. Hier fließen natürlich auch Analysen des Performance/Zeit-Bedarfs zur Erkennung, Behebung und Meldung des Fehlers sowie ökonomische Betrachtungen mit ein. Wenn beispielsweise nur ein sehr kurzes Zeitfenster zur Erkennung des Fehlers zur Verfügung steht, ist in der Regel eine Hardware-Lösung erforderlich, die sich dann natürlich in den Bauteilkosten entsprechend niederschlägt.
Speichertest: Ein gutes Beispiel ist das Prüfen und eventuelle Beheben von Speicherfehlern. Möglich ist die Überprüfung entweder mittels Software (CRC, Cyclic Redundancy Check) oder mittels Hardware (ECC, Error Correction Coding). Die CRC-Software benötigt natürlich eine gewisse Zeit, bis der entsprechende Speicherblock bearbeitet ist und ein Ergebnis zur Verfügung steht. Die ECC-Logik, die in den Mikrocontrollern der MPC56xx-Familie von Freescale implementiert ist, arbeitet dagegen quasi in Echtzeit, d.h. während des Zugriffs auf einen RAModer Flash-Speicher wird bereits ein eventuell vorhandener Fehler erkannt und im Falle eines Ein-Bit-Fehlers gleich behoben.
CPU-Test: In anderen Bereichen wiederum ist Software zwingend erforderlich. Die korrekte Funktion der CPU beispielsweise muss mittels Software festgestellt werden. Hierfür stellt Freescale entsprechende Software-Lösungen (CPU-Selftest-Software) zur Verfügung, die eine für ASILD- bzw. SIL-3-Zertifizierung geforderte Testabdeckung bietet.
Dualcore Redundancy: Redundante Systeme sind grundsätzlich geeignet, hohe Sicherheitsanforderungen zu erfüllen. Die Redundanz lässt sich auf Mikrocontroller-Ebene entweder durch den Einsatz zweier eigenständiger Komponenten erreichen, die sich gegenseitig überwachen. Oder man setzt einen Mikrocontroller ein, der zwei Cores auf einem Chip integriert hat. Um mit einer solchen Single-Chip-Lösung ein hohes Sicherheitsniveau erreichen zu können, müssen allerdings neben der Duplizierung der CPU weitere Komponenten redundant ausgelegt werden. Wir sprechen hier von einer sogenannten »Sphere of Replication«.
A/D-Wandler-BIST: Um analoge Funktionsblöcke wie A/D-Wandler effizient testen zu können, sind spezielle Funktionen implementiert, die diese Aufgabe unterstützen. Hierbei handelt es sich um eine Kombination aus Hardware- und Software-Komponenten, die entsprechend zusammenwirken. Dieser sogenannte Built-in Self Test (BIST) sollte beim Start des Systems ausgeführt und dann in regelmäßigen Abständen wiederholt werden.
FCCU: Tritt ein Fehler auf, muss das System reagieren und eine entsprechende Fehlerbehandlung durchführen. Außerdem ist in der Regel eine Statistik über die Häufigkeit und Art der Fehler zu erstellen. Um diese Aufgaben zu lösen, haben die Safety-MCUs von Freescale eine sogenannte Fault Collection and Control Unit (FCCU). Die FCCU kann dazu dienen, Fehler aufzuzeichnen und entweder die On-Chip-CPUs oder externe Komponenten über das Auftreten von Fehlern zu informieren.
Wie funktionieren die entsprechenden Hard- und Software-Architekturen technisch?
Hier möchte ich zwei Schlüsselkomponenten herausgreifen, die einen wesentlichen Beitrag zu einer hohen »Diagnostic Coverage« der Hardware leisten: die ECC-Logik für die RAM- und Flash-Speicher sowie die Sphere of Replication, die den Dualcore Lockstep Mode (LSM) ermöglicht.
Die ECC-Logik sorgt dafür, dass 1-Bit-Fehler behoben und gemeldet und 2-Bit-Fehler erkannt und gemeldet werden, wobei ein modifizierter Hamming Code genutzt wird. Bei der Behebung des 1-Bit-Fehlers wird dabei nicht die fehlerhafte Bit-Zelle physikalisch behoben, sondern das Datenwort korrigiert, das für die CPU auf den Bus gelegt wird. Außerdem wird ein Flag gesetzt, um das Auftreten des 1-Bit-Fehlers zu signali- sieren. Damit ist es möglich, auch für die 1-Bit-Fehler eine Statistik zu führen und bei einer etwaigen Häufung entsprechend zu reagieren.
Das Ganze funktioniert natürlich nur dann einwandfrei, wenn die ECC-Logik selbst nicht fehlerhaft ist. Um das zu überprüfen, ist eine Funktion implementiert, die einen ECC-Fehler gezielt erzeugt. Diese Funktion muss in regelmäßigen Abständen durchgeführt werden, abhängig von den jeweiligen Sicherheitsanforderungen.
Auch die Anordnung der einzelnen Bits eines Wortes ist von entscheidender Bedeutung. Es ist beispielsweise sicherzustellen, dass das Auftreffen eines Alpha-Teilchens nicht mehrere Bits des gleichen Wortes, sondern nur ein Bit in unterschiedlichen Worten beeinflusst. Die Bits der RAM- und Flash-Speicher in den MPC55xxund MPC56xx-Controllern sind entsprechend angeordnet.
Der Dualcore Lockstep Mode ermöglicht eine hohe »Diagnostic Coverage« der Hardware, und zwar, indem beide Cores die gleiche Software ausführen und mittels sogenannter Redundancy Checker an verschiedenen Stellen überprüft wird, ob die Ergebnisse identisch sind. Wie bereits erwähnt, ist es entscheidend, dass nicht nur die CPU doppelt ausgeführt ist. Weitere Systemkomponenten wie Busse, DMA-Controller, Watchdog, Interrupt-Controller und I/O-Bridge sind ebenfalls dupliziert, um einen Single Point of Failure zu vermeiden.