GERKEN STEFAN (DE)
WO2014009243A2 | 2014-01-16 |
EP0969374A2 | 2000-01-05 | |||
US8443230B1 | 2013-05-14 |
Patentansprüche 1. Anordnung (10) zur redundanten Datenverarbeitung mit einem integrierten Schaltkreis (20), - wobei in dem integrierten Schaltkreis (20) die Funktio¬ nalität eines Mehrkernprozessors (30) mit einer Mehrzahl von Prozessorkernen (40; 50) implementiert ist, wobei die Prozes¬ sorkerne (40; 50) jeweils ausgebildet sind, ein Nutzprogramm auszuführen, - wobei die Anordnung (10) einen Vergleichsbaustein (60) umfasst, der eingerichtet ist, Ergebnisse zu vergleichen, die sich aus einer Ausführung des Nutzprogramms durch jeweils verschiedene der Prozessorkerne (40; 50) ergeben, wobei ein erster Prozessorkern (40) und ein von dem ersten Prozessor- kern (40) verschiedener zweiter Prozessorkern (50) der Mehrzahl der Prozessorkerne (40; 50) derart implementiert sind, dass der erste Prozessorkern (40) zum Abspeichern und Auslesen von Daten in oder aus einem dem ersten Prozessorkern (40) zugeordneten ersten Spei- cherbereich (70) eine Adressstruktur (AS1) verwendet, die sich von einer Adressstruktur (AS2) unterscheidet, welche der zweite Prozessorkern (50) zum Abspeichern und Auslesen von Daten in oder aus einem dem zweiten Prozessorkern (50) zugeordneten zweiten Speicherbereich (80) verwendet, und/oder der erste Prozessorkern (40) zum Abspeichern und Auslesen von Daten in oder aus einem dem ersten Prozessorkern (40) zugeordneten ersten Speicherbereich (70) eine Datenstruktur (DS1) verwendet, die sich von einer Datenstruktur (DS2) unterscheidet, welche der zweite Prozessorkern (50) zum Abspeichern und Auslesen von Daten in oder aus einem dem zweiten Prozessorkern (50) zugeordneten zweiten Speicherbereich (80) verwendet, und wobei - die Implementation des ersten Prozessorkerns (40) in dem integrierten Schaltkreis (20) hardwaremäßig von der Implementation des zweiten Prozessorkerns (50) zumindest teilweise separiert ist. 2. Anordnung (10) nach Anspruch 1, dadurch gekennzeichnet, dass die Funktionalität des Mehrkernprozessors (30) in dem integrierten Schaltkreis (20) derart implementiert ist, dass der erste Prozessorkern (40) und der zweite Prozessorkern (50) eingerichtet sind, Hardwareressourcen (90; 100; 110) des integrierten Schaltkreises (20) gemeinsam zu verwenden. 3. Anordnung (10) nach Anspruch 1 oder 2, dadurch gekenn- zeichnet, dass der erste Prozessorkern (40) und der zweite Prozessorkern (50) derart implementiert sind, dass der zweite Prozessorkern (50) zum Abspeichern und Auslesen von Daten in oder aus dem zweiten Speicherbereich (80) eine Adressstruktur (AS2) verwendet, die im Vergleich zu einer seitens des ersten Prozessorkerns (40) zum Abspeichern und Auslesen von Daten in oder aus dem ersten Speicherbereich (70) verwendeten Adressstruktur (AS1) transformiert, insbesondere verwürfelt, ist. 4. Anordnung (10) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der erste Prozessorkern (40) und der zweite Prozessorkern (50) derart implementiert sind, dass der zweite Prozessorkern (50) zum Abspeichern und Auslesen von Daten in oder aus dem zweiten Speicherbereich (80) eine Datenstruktur (DS2) verwendetet, die im Vergleich zu einer seitens des ersten Prozessorkerns (40) zum Abspeichern und Auslesen von Daten in oder aus dem ersten Speicherbereich (70) verwendeten Datenstruktur (DS1) Datenwörter transformiert, insbesondere mittels Bitverschiebung oder anderer arithmetischer Operationen. 5. Anordnung (10) nach Anspruch 3 oder 4, dadurch gekennzeichnet, dass die Funktionalität des Transformierens der Ad¬ ressstruktur und/oder der Datenstruktur für den ersten Prozessorkern (40) und den zweiten Prozessorkern (50) in dem in- tegrierten Schaltkreis (20) hardwaremäßig separat implemen¬ tiert sind. 6. Anordnung (10) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der erste Prozessorkern (40) und der zweite Prozessorkern (50) jeweils derart implementiert sind, dass diese eingerichtet sind, während der Laufzeit Da- ten zu erfassen, die einen Programmablauf beim Ausführen des Nutzprogramms beschreiben. 7. Anordnung (10) nach Anspruch 6, dadurch gekennzeichnet, dass die Funktionalität zum Erfassen der den Programmablauf beschreibenden Daten für den ersten Prozessorkern (40) und den zweiten Prozessorkern (50) in dem integrierten Schaltkreis (20) hardwaremäßig separat implementiert ist. 8. Anordnung (10) nach einem der vorhergehenden Ansprüche, gekennzeichnet durch einen Ein- und Ausgabespeicherbereich (90) zum Ermöglichen einer Dateneingabe in den Mehrkernpro¬ zessor (30) und einer Datenausgabe durch den Mehrkernprozes¬ sor (30), wobei der erste Prozessorkern (40) und der zweite Prozessorkern (50) derart implementiert sind, dass diese auf diesen Ein- und Ausgabespeicherbereich (90) gemäß einer vorgegebenen Adress- und Datenstruktur zugreifen. 9. Anordnung (10) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass die Funktionalität des Mehrkern- Prozessors (30) in einem Field Programmable Gate Array konfi¬ guriert ist, wobei die Prozessorkerne (40; 50) als separate Einheiten in dem Field Programmable Gate Array konfiguriert sind . 10. Anordnung (10) nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, dass der Mehrkernprozessor (30) in einem Application-Specific Integrated Circuit implementiert ist . 11. Verfahren zur redundanten Datenverarbeitung mittels einer Anordnung (10) mit einem integrierten Schaltkreis (20), umfassend die Schritte: Ausführen (S2) eines Nutzprogramms durch einen ersten Prozessorkern (40) und einen zweiten Prozessorkern (50) eines durch den integrierten Schaltkreis (20) implementierten Mehrkernprozessors (30); - Vergleichen (S3) von Ergebnissen, die sich aus der Ausführung des Nutzprogramms durch den ersten Prozessorkern (40) und aus der Ausführung des Nutzprogramms durch den zweiten Prozessorkern (50) ergeben, wobei der erste Prozessorkern (40) - zum Abspeichern und Auslesen von Daten in oder aus einem dem ersten Prozessorkern (40) zugeordneten ersten Speicherbereich (70) eine Adressstruktur (AS1) verwendet, die sich von einer Adressstruktur (AS2) unterscheidet, welche der zweite Prozessorkern (50) zum Abspeichern und Auslesen von Daten in oder aus einem dem zweiten Prozessorkern (50) zugeordneten zweiten Speicherbereich (80) verwendet, und/oder der erste Prozessorkern (40) zum Abspeichern und Auslesen von Daten in oder aus einem dem ersten Prozessorkern (40) zugeordneten ersten Speicherbereich (70) eine Datenstruktur (DS1) verwendet, die sich von einer Datenstruktur (DS2) unterscheidet, welche der zweite Prozessorkern (50) zum Abspeichern und Auslesen von Daten in oder aus einem dem zweiten Prozessor- kern (50) zugeordneten zweiten Speicherbereich (80) verwendet, wobei der erste Prozessorkern (40) in dem integrierten Schaltkreis (20) hardwaremäßig zumindest teilweise separat von dem zweiten Prozessorkern (50) implementiert wird. 12. Computerlesbares Speichermedium (120), umfassend eine Definition (130) einer Implementation eines Mehrkernprozessors (30) der Anordnung (20) nach einem der Ansprüche 1 bis 10 mittels einer Hardwarebeschreibungssprache, insbesondere mittels der so genannten Very High Speed Integrated Circuit Hardware Description Language . |
Verfahren und Vorrichtung zur redundanten Datenverarbeitung Die Erfindung betrifft ein Verfahren und einen integrierten Schaltkreis zur redundanten Datenverarbeitung.
Sicherheitsrelevante Softwareanwendungen, beispielsweise Software zur Steuerung eines Stellwerks oder dergleichen, haben in der Regel besondere Sicherheitsanforderungen zu erfüllen, welche beispielsweise in den Sicherheitsnormen EN 61508 oder EN 50129 standardisiert sind.
Ein Merkmal sicherheitskritischer Software ist zumeist, dass zumindest Anteile einer Softwareanwendung redundant ausge ¬ führt werden. Die Ergebnisse, die sich aus einer solchen re ¬ dundanten Ausführung ergeben, werden dann verglichen. Werden Abweichungen zwischen einzelnen der Ergebnisse festgestellt, so liegt ein Fehler vor, beispielsweise ein Hardwarefehler, der auf diese Weise erkannt werden kann.
Zum redundanten nebenläufigen Ausführen von Softwareanwendungen können voneinander unabhängige Prozessoren verwendet werden. Der Aufwand liegt hier im hohen Materialeinsatz. Zusätz- lieh können Verfahren zum Synchronisieren der einzelnen Prozessoren notwendig werden. Beispielhaft kann hier die SIMIS- Technologie der Anmelderin angeführt werden.
Im Falle von speziellen sicherungstechnischen Prozessoren, wie beispielsweise so genannten Lockstep-Prozessoren, arbeiten zwei Prozessorkerne auf einem Prozessor so synchron, dass Rechenergebnisse der Prozessorkerne von einem Vergleichsbau ¬ stein auf dem Prozessor stetig verglichen und überwacht werden können. Im Falle einer Abweichung stoppt das System. In diesem Zusammenhang ist es erforderlich, dass die Software auf den beiden Prozessorkernen praktisch identisch abläuft. Weiterhin besteht die Möglichkeit, Software und Daten mehr ¬ fach unterschiedlich zu codieren, damit gleichartige Hardwarefehler sich auf die Software nicht gleichartig auswirken. Ein Beispiel ist hier die FailSafe-Simatic-Lösung der Anmel- derin. Der Aufwand besteht hierbei darin, dass identische Ab ¬ läufe auf unterschiedliche Weise codiert werden müssen.
Schließlich besteht die Möglichkeit, ein paralleles redundan ¬ tes Ausführen einer Softwareanwendung lediglich zu emulieren. Dazu wird beispielsweise ein softwarebasierter Emulator verwendet, der auf einem Prozessor ausführbar ist, und der eingerichtet ist, das Ausführen der Softwareanwendung auf verschiedenen Prozessoren zu emulieren. Dies hat den Vorteil, dass Hardware eingespart werden kann. Nachteilig an dieser Lösung ist die aufgrund der Emulation erhöhte Laufzeit.
Grundsätzlich ist es möglich, anstelle verschiedener Prozessoren zum redundanten, vorzugsweise nebenläufigen Ausführen einer Softwareanwendung verschiedene Prozessorkerne eines Mehrkernprozessors zu verwenden. Hierbei muss allerdings be ¬ rücksichtigt werden, dass sich die Prozessorkerne eines Mehr ¬ kernprozessors zumindest einige Hardware-Ressourcen des Pro ¬ zessors teilen, wie z. B. Daten- oder Steuerleitungen im Prozessor, Cachelines, Cachespeicher, etc.. Die Prozessorkerne sind also nicht völlig unabhängig voneinander. Daher kann es vorkommen, dass ein auf den verschiedenen Prozessorkernen redundant ausgeführtes Nutzprogramme gleichartig oder sogar identisch auf solche Fehler reagiert, die von den von den verschiedenen Prozessorkernen gemeinsam genutzten Ressourcen herrühren. Man spricht in diesem Zusammenhang von „common cause" Fehlern. Ein Vergleich von auf unterschiedlichen Prozessorkernen eines Mehrkernprozessors redundant ausgeführter Software ist also im Falle von Fehlern in gemeinsam genutzten Hardwareressourcen nicht immer ausreichend, um Fehler dieser Hardwareressourcen zu erkennen.
Die Aufgabe der vorliegenden Erfindung besteht darin, den vorstehend genannten Nachteilen Rechnung zu tragen und eine Vorrichtung und ein Verfahren vorzuschlagen, welche es ermöglichen, verschiedene Prozessorkerne eines Mehrkernprozessors zum redundanten Ausführen einer sicherheitskritischen Anwendung heranzuziehen.
Erfindungsgemäß wird eine Anordnung zur redundanten Datenverarbeitung mit einem integrierten Schaltkreis zur Verfügung gestellt. In dem integrierten Schaltkreis ist die Funktiona ¬ lität eines Mehrkernprozessors mit einer Mehrzahl von Prozes- sorkernen implementiert. Die Prozessorkerne sind jeweils aus ¬ gebildet, ein Nutzprogramm auszuführen. Die Anordnung umfasst weiterhin einen Vergleichsbaustein, der eingerichtet ist, Ergebnisse zu vergleichen, die sich aus einer Ausführung des Nutzprogramms durch jeweils verschiedene der Prozessorkerne ergeben. Ein erster Prozessorkern und ein von dem ersten Prozessorkern verschiedener zweiter Prozessorkern aus der Mehrzahl der Prozessorkerne sind in dem integrierten Schaltkreis derart implementiert, dass der erste Prozessorkern zum Ab ¬ speichern und Auslesen von Daten in oder aus einem dem ersten Prozessorkern zugeordneten ersten Speicherbereich eine Adressstruktur verwendet, die sich von einer Adressstruktur unterscheidet, welche der zweite Prozessorkern zum Abspeichern und Auslesen von Daten in oder aus einem dem zweiten Prozessorkern zugeordneten zweiten Speicherbereich verwendet. Al- ternativ oder zusätzlich sind der erste Prozessorkern und der zweite Prozessorkern in dem integrierten Schaltkreis derart implementiert, dass der erste Prozessorkern zum Abspeichern und Auslesen von Daten in oder aus einem dem ersten Prozessorkern zugeordneten ersten Speicherbereich eine Datenstruk- tur verwendet, die sich von einer Datenstruktur unterscheidet, welche der zweite Prozessorkern zum Abspeichern und Auslesen von Daten in oder aus einem dem zweiten Prozessorkern zugeordneten zweiten Speicherbereich verwendet. Die Implementation des ersten Prozessorkerns in dem integrierten Schalt- kreis ist hardwaremäßig von der Implementation des zweiten Prozessorkerns zumindest teilweise separiert. Das erfindungsgemäße Verfahren zur redundanten Datenverarbei ¬ tung mittels einer Anordnung mit einem integrierten Schaltkreis umfasst die folgenden Schritte:
Ein Nutzprogramm wird durch einen ersten Prozessorkern und einen zweiten Prozessorkern eines durch den integrierten Schaltkreis implementierten Mehrkernprozessors ausgeführt. Dann werden Ergebnisse verglichen, die sich aus der Ausführung des Nutzprogramms durch den ersten Prozessorkern und aus der Ausführung des Nutzprogramms durch den zweiten Prozessor- kern ergeben. Dabei verwendet der erste Prozessorkern zum Abspeichern und Auslesen von Daten in oder aus einem dem ersten Prozessorkern zugeordneten ersten Speicherbereich eine Adressstruktur, die sich von einer Adressstruktur unterscheidet, welche der zweite Prozessorkern zum Abspeichern und Aus- lesen von Daten in oder aus einem dem zweiten Prozessorkern zugeordneten zweiten Speicherbereich verwendet. Alternativ oder zusätzlich verwendet der erste Prozessorkern zum Abspeichern und Auslesen von Daten in oder aus einem dem ersten Prozessorkern zugeordneten ersten Speicherbereich eine Daten- struktur, die sich von einer Datenstruktur unterscheidet, welche der zweite Prozessorkern zum Abspeichern und Auslesen von Daten in oder aus einem dem zweiten Prozessorkern zugeordneten zweiten Speicherbereich verwendet. Der erste Prozessorkerns wird in dem integrierten Schaltkreis hardwaremä- ßig zumindest teilweise separat von dem zweiten Prozessorkern implementiert. Beispielsweise können Adressleitungen auf ei ¬ nen gemeinsam genutzten Speicher vom ersten Prozessorkern in anderer Reihenfolge aufgelegt werden als vom zweiten Prozes ¬ sorkern. Dadurch ergibt sich automatisch eine Adressverwür- feiung. Muster im Speicher, die durch Fehler repetierend entstehen, wirken dann bei beiden Kernen unterschiedlich. In analoger Weise kann man mit Datenzugriffen verfahren werden, indem Datenleitungen in unterschiedlicher Reihung auf beide Prozessorkerne aufgelegt werden. Es versteht sich, dass eine hardwaremäßige Implementierung der beiden Prozessorkerne be ¬ liebig komplizierte Daten- und/oder Adressverwürfelungen zu- lässt . Es versteht sich, dass die Erfindung nicht auf einen ersten und einen zweiten Prozessorkern eines Mehrkernprozessors be ¬ schränkt ist. Im Falle eines Mehrkernprozessors mit mehr als zwei Prozessorkernen können sich diese Prozessorkerne paar- weise zueinander so verhalten, wie es vorstehend mit Bezug auf den ersten Prozessorkern und den zweiten Prozessorkern beschrieben worden ist.
Die Erfindung bietet eine Reihe von Vorteilen, die nachfol- gend, auch mit Bezug auf bevorzugte Ausführungsformen der Er ¬ findung, erläutert werden.
Aufgrund der Tatsache, dass die einzelnen Prozessorkerne zum Abspeichern oder Auslesen von Daten in oder aus dem Prozes- sorkernen jeweils zugeordneten Speicherbereichen spezifische, den jeweiligen Prozessorkernen zugeordnete Adressstrukturen und/oder Datenstrukturen verwenden, können Fehler in solchen Ressourcen, die von verschiedenen Prozessorkernen gemeinsam genutzt werden, insbesondere in gemeinsam genutztem Speicher, aber auch gemeinsam genutzten Daten- oder Adressleitungen, erkannt werden. Dies liegt daran, dass sich Fehler, die auf einer Fehlfunktion einer dieser Ressourcen beruhen, in jedem der Prozessorkerne auf andere Weise bemerkbar machen, auf ¬ grund der Verwendung der prozessorkernspezifischen Adress- struktur oder Datenstruktur.
Gemäß einer Ausführungsform sind der erste Prozessorkern und der zweite Prozessorkern derart implementiert, dass der zwei ¬ te Prozessorkern zum Abspeichern und Auslesen von Daten in oder aus dem zweiten Speicherbereich eine Adressstruktur verwendet, die im Vergleich zu einer seitens des ersten Prozes ¬ sorkerns zum Abspeichern und Auslesen von Daten in oder aus dem ersten Speicherbereich verwendeten Adressstruktur transformiert ist. Die Art der Transformation kann variieren. Be- vorzugt kann die Transformation durch eine Verwürfelung, d. h. eine in der Regel (pseudo) zufällige Permutation von Speicheradressen eines dem jeweiligen Prozessorkerns zugeordneten Speicherbereichs definiert sein. Gemäß einer weiteren Ausführungsform sind der erste Prozessorkern und der zweite Prozessorkern derart implementiert, dass der zweite Prozessorkern zum Abspeichern und Auslesen von Daten in oder aus dem zweiten Speicherbereich eine Datenstruktur verwendetet, die im Vergleich zu einer seitens des ersten Prozessorkerns zum Abspeichern und Auslesen von Daten in oder aus dem ersten Speicherbereich verwendeten Datenstruktur Datenwörter transformiert. Datenwörter können dabei insbesondere mittels Bitverschiebung transformiert werden. Andere arithmetischer Operationen können zur Transformation eines zu speichernden/lesenden Datenworts ebenfalls herange ¬ zogen werden, beispielsweise eine Multiplikation mit einer Primzahl .
Insbesondere um eine Datenkommunikation einer Softwareanwendung, die auf den jeweiligen Prozessorkernen ausgeführt wird, mit einer Instanz außerhalb des jeweiligen Prozessorkerns zu ermöglichen, kann gemäß einer Ausführungsform ein Ein- und Ausgabespeicherbereich vorgesehen sein. Daten, die in diesem Speicherbereich abgelegt werden, sollten hinsichtlich ihrer Adress- und Datenstruktur, die seitens eines der Prozessorkerne zum Abspeichern oder Auslesen von Daten in oder aus diesem Ein- und Ausgabespeicherbereich verwendet werden, ei- ner vorgegebenen Adress- und Datenstruktur folgen, die auch der externen Instanz bekannt ist. Mit anderen Worten werden hier seitens der Prozessorkerne keine prozessorspezifisch transformierten Adress- oder Datenstrukturen verwendet. Im Vergleich zur Verwendung einer Mehrzahl unabhängiger Prozessoren zum redundanten Ausführen des Nutzprogramms hat die vorliegende Erfindung des Vorteil, dass die Prozessorkerne des Mehrkernprozessors Hardwareressourcen des integrierten Schaltkreises gemeinsam verwenden können, wie z. B. Speicher, Daten- und Adressleitungen, etc.. Dies führt zu einer verbes ¬ serten Effizienz der Gesamtberechnung. Mit anderen Worten ist gemäß einer bevorzugten Ausführungsform die Funktionalität des Mehrkernprozessors in dem integrierten Schaltkreis derart implementiert, dass der erste Prozessorkern und der zweite Prozessorkern eingerichtet sind, Hardwareressourcen des integrierten Schaltkreises gemeinsam zu verwenden. Im Vergleich zu einer grundsätzlich möglichen, rein softwarebasierten Lösung, bei welcher die Funktionalität eines Mehrkernprozessors dadurch implementiert wird, dass ein Emulator die Prozessorkerne des Mehrkernprozessors softwaremäßig emu ¬ liert, bietet die vorliegende Erfindung eine Reihe weiterer Vorteile. Dadurch, dass zumindest ein Teil der Funktionalität des Mehrkernprozessors direkt in Hardware umgesetzt oder zu ¬ mindest in Hardware konfiguriert wird, kann die redundante Berechnung des Nutzprogramms deutlich schneller ablaufen als in einem rein softwarebasierten Emulator. D. h. allein da- durch, dass die Implementation des ersten Prozessorkerns in dem integrierten Schaltkreis hardwaremäßig von der Implementation des zweiten Prozessorkerns zumindest teilweise sepa ¬ riert ist, d. h. die Funktionalität der Prozessorkerne zumin ¬ dest teilweise in der Hardware direkt konfiguriert wird, er- geben sich Laufzeitgewinne.
Das letztgenannte Merkmal, wonach die Implementation des ers ¬ ten Prozessorkerns in dem integrierten Schaltkreis hardware ¬ mäßig von der Implementation des zweiten Prozessorkerns zu- mindest teilweise separiert ist, bietet weitere Vorteile.
Durch dieses Merkmal kann erreicht werden, dass Anforderungen, die bei einer softwarebasierten Emulatorlösung erzwungen und überwacht werden müssen, insbesondere die Bindung einer vorgegebenen Funktionalität an einen spezifischen Prozessor- kern, sich erfindungsgemäß quasi unmittelbar ergeben.
Spezifisch kann beispielsweise gemäß einer Ausführungsform die Funktionalität des Transformierens der Adressstruktur und/oder der Datenstruktur für den ersten Prozessorkern und den zweiten Prozessorkern in dem integrierten Schaltkreis hardwaremäßig separat implementiert sind. Eine Prüfung dahin ¬ gehend, ob diese Funktionalitäten jeweils an den korrekten Prozessorkern gebunden sind, welche in einer Emulatorlösung notwendig wäre, kann gemäß dieser Ausführungsform entfallen.
Eine analoge Effizienzsteigerung ergibt sich im Zusammenhang mit einer weiteren bevorzugten Ausführungsform der Erfindung, wonach der erste Prozessorkern und der zweite Prozessorkern jeweils derart implementiert sind, dass sie eingerichtet sind, während der Laufzeit Daten zu erfassen, die einen Pro ¬ grammablauf beim Ausführen des Nutzprogramms beschreiben. Solche Daten sind insbesondere besuchte Speicheradressen und darin gespeicherte Werte. Über diese Daten kann dann gegebe ¬ nenfalls ein geeigneter Hashwert oder dergleichen gebildet werden. Derart erfasste Daten, die auch als „Dataflow-Digest" bezeichnet werden, können seitens des Vergleichsbausteins als Ergebnisse oder Teilergebnisse des Ausführens des Nutzpro ¬ gramms zu vorgegebenen Zeitpunkten während oder nach dem Ausführen des Nutzprogramms durch den ersten und den zweiten Prozessorkern verglichen werden. Sind die erfassten Daten bzw. die darüber gebildeten Hashwerte für einzelne der paral- lelen Programmausführungen nicht identisch, so deutet dies auf einen Fehler in mindestens einem der Programmabläufe hin. Insbesondere Hardwarefehler können auf diese Weise zuverläs ¬ sig erkannt werden. Während im Zusammenhang mit einer reinen Emulatorlösung sichergestellt werden muss, dass die Erfassung dieser Daten und gegebenenfalls die Berechnung des Hashwertes eindeutig je ¬ weils einem Prozessorkern zugeordnet ist, kann dies vorlie ¬ gend unterbleiben. Denn gemäß einer Ausführungsform ist es vorgesehen, dass die Funktionalität zum Erfassen der den Programmablauf beschreibenden Daten für den ersten Prozessorkern und den zweiten Prozessorkern in dem integrierten Schaltkreis hardwaremäßig jeweils separat implementiert sind. Weiterhin kann eine im Zusammenhang mit einer reinen Emulatorlösung erforderlich Analyse der verwendeten Rechnerarchitektur unterbleiben, um Rückwirkungen dieser Architektur auf spezifische Sicherheitsmechanismen zu beurteilen. Erfin- dungsgemäß wird die verwendete Hardware per Konfiguration in erforderlicher Weise angepasst.
Zusammenfassend liefert das Merkmal, wonach die Implementa- tion des ersten Prozessorkerns in dem integrierten Schaltkreis hardwaremäßig von der Implementation des zweiten Prozessorkerns zumindest teilweise separiert ist, d. h. wonach einzelne Funktionalitäten der einzelnen Prozessorkerne jeweils separat in der verwendeten Hardware konfiguriert sind, im Wesentlichen funktional eindeutig getrennte Prozessorker ¬ ne, funktional eindeutig getrennte Speicher- und Datenzu ¬ griffsmechanismen sowie funktional eindeutig getrennte Über ¬ wachungsmechanismen in Bezug auf einen Programmablauf.
Schließlich sind die erheblichen Performanzgewinne zu nennen.
Gemäß einer ersten bevorzugten Ausführungsform kann die Funktionalität des Mehrkernprozessors als Softcore in einem Field Programmable Gate Array (FPGA) konfiguriert sein. Dabei wer ¬ den die einzelnen Prozessorkerne vorzugsweise als separate Einheiten in dem FPGA konfiguriert. Dies kann dadurch erreichet werden, dass für die einzelnen Prozessorkerne und ihre spezifischen Funktionalitäten, insbesondere mit Bezug auf die verwendeten Adress- und Datenstrukturen zum Abspeichern und Auslesen von Daten in oder aus dem jeweiligen Prozessorkern jeweils zugeordneten Speicherbereichen und mit Bezug auf die Erfassung eines vorstehend beschriebenen Dataflow-Digest , je ¬ weils separate Beschreibungen in einer geeigneten Hardwarebeschreibungssprache, wie z. B. VHDL, vorliegen, auf deren Ba ¬ sis die jeweiligen Prozessorkerne dann in dem FPGA konfigu- riert oder synthetisiert werden.
Gemäß einer alternativen Ausführungsform kann der Mehrkernprozessor als „hardcoded" CPU in einem Application-Specific Integrated Circuit (ASIC) implementiert werden. Gemäß dieser Ausführungsform liegen die einzelnen Prozessorkerne dann „hart codiert" als separate Einheiten vor. Um eine Portierbarkeit der erfindungsgemäßen Anordnung, beispielsweise bei Obsoleszenz, zu gewährleisten, kann ein computerlesbares Speichermedium bereitgestellt werden, das eine Definition einer Implementation eines Mehrkernprozessors der vorstehend beschriebenen erfindungsgemäßen Anordnung umfasst. Die Definition erfolgt dabei mittels einer Hardwarebeschrei ¬ bungssprache, insbesondere mittels der so genannten Very High Speed Integrated Circuit Hardware Description Language
(VHDL) . Alternative Hardwarebeschreibungssprachen können ebenfalls verwendet werden, wie z. B. Verilog. Es ist dann auf einfache Weise möglich, neue Hardware auf sehr niedriger Ebene derart zu konfigurieren, dass die Funktionalität des Mehrkernprozessors wieder hergestellt ist. Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden klarer und deutlicher verständlich im Zusammenhang mit der folgenden Beschreibung der Ausführungsbeispiele, die im Zusammenhang mit den Zeichnungen näher erläu- tert werden. Es zeigen: eine bevorzugte Ausführungsform einer erfindungsge ¬ mäßen Anordnung mit einem integrierten Schaltkreis, in dem ein Mehrkernprozessor implementiert ist, ein computerlesbares Speichermedium, auf dem eine Definition des Mehrkernprozessors aus Fig. 1 mit ¬ tels einer Hardwarebeschreibungssprache gespeichert ist, und
Schritte einer bevorzugten Ausführungsform eines erfindungsgemäßen Verfahrens .
Fig. 1 zeigt eine Anordnung 10 zur redundanten Datenverarbei tung mit einem integrierten Schaltkreis 20. Die Anordnung 10 kann Teil einer Steuerung einer technischen Anlage sein, bei spielsweise eines Stellwerks für den Eisenbahnverkehr. In dem Schaltkreis 20 ist die Funktionalität eines Mehrkern ¬ prozessors 30 implementiert, der einen ersten Prozessorkern 40 und einen zweiten Prozessorkern 50 umfasst. Der Mehrkernprozessor 30 umfasst weitere Ressourcen, die von den beiden Prozessorkernen 40, 50 gemeinsam genutzt werden können, wie beispielsweise einen Cachespeicher 110 und einen Ein- und Ausgabespeicher 90 sowie Adress- und Datenleitungen 100.
Der Mehrkernprozessor 30 ist gemäß einer in einer Hardwarebe- Schreibungssprache, wie z. B. VHDL, angegebenen Definition 130 ausgebildet, d. h. im konkreten Fall in einem FPGA des integrierten Schaltkreises 20 konfiguriert. Dabei sind die beiden Prozessorkerne 40, 50 in dem FPGA derart konfiguriert, dass wesentliche, nachstehend genauer angegebene Funktionali- täten der Prozessorkerne 40, 50 für jeden Prozessorkern 40, 50 jeweils separat und prozessorkernspezifisch konfiguriert oder synthetisiert werden. Lediglich der besseren Verständlichkeit halber wird die hier exemplarisch beschriebene Aus ¬ führungsform auf nur zwei Prozessorkerne beschränkt. Grund- sätzlich kann der Mehrkernprozessor mehr als zwei Prozessorkerne umfassen, die sich dann paarweise zueinander so verhalten können, wie dies nachfolgend für den ersten und den zwei ¬ ten Prozessorkern 40, 50 beschrieben wird. Fig. 2 zeigt schematisch ein computerlesbares Speichermedium 120, auf dem eine Definition 130 des Mehrkernprozessors 30 gespeichert ist. Die Definition ist in VHDL abgefasst und um ¬ fasst für jeden der Prozessorkerne 40, 50 spezifische Be ¬ schreibungsabschnitte 140, 150.
Jeder der Prozessorkerne 40, 50 ist eingerichtet, ein Nutz ¬ programm (nicht gezeigt) , beispielweise ein Steuerprogramm für eine technische Anlage auszuführen. Ein paralleles redun ¬ dantes Ausführen des Nutzprogramms auf dem ersten Prozessor- kern 40 und dem zweiten Prozessorkern 50 kann dabei die Sicherheit der Anlage erhöhen. Dazu werden mittels eines Ver ¬ gleichsbausteins 60 während und/oder nach dem Ausführen des Nutzprogramms Zwischenergebnisse bzw. Endergebnisse, die sich aus einer Ausführung des Nutzprogramms auf dem ersten Prozes ¬ sorkern 40 und auf dem zweiten Prozessorkern jeweils ergeben, miteinander verglichen. Weicht ein Ergebnis, das sich durch Ausführen des Nutzprogramms auf dem ersten Prozessorkern 40 ergibt, von einem entsprechenden Ergebnis ab, welches sich durch Ausführen des Nutzprogramms auf dem zweiten Prozessorkern 50 ergibt, so kann dies als Fehler in der Programmaus ¬ führung auf einem der Prozessorkerne 40, 50 erkannt werden. Ursache eines solchen Fehlers kann insbesondere ein Hardware- fehler sein.
Gemäß der nachstehend erläuterten Implementation oder Konfiguration des ersten und zweiten Prozessorkerns 40, 50 können dabei auch solche Hardwarefehler erkannt werden, welche auf Fehlern in Hardwarebestandteilen beruhen, welche von den beiden Prozessorkernen 40, 50 gemeinsam genutzt werden, wie z. B. die Speicherbereiche 90, 110 oder die Leitungen 100.
Der erste Prozessorkern 40 ist in dem FPGA derart konfigu- riert, dass er zum Abspeichern und Auslesen von Daten in oder aus einem dem ersten Prozessorkern 40 zugeordneten ersten Speicherbereich 70 eine Adressstruktur AS1 verwendet, die sich von einer Adressstruktur AS2 unterscheidet, welche der zweite Prozessorkern 50 zum Abspeichern und Auslesen von Da- ten in oder aus einem dem zweiten Prozessorkern 50 zugeordneten zweiten Speicherbereich 80 verwendet. Der erste Prozessorkern 40 kann beispielsweise eine prozessorkernspezifisch verwürfelte Adressstruktur AS1 verwenden, die sich von einer ebenfalls prozessorkernspezifisch verwürfelten Adressstruktur AS2 unterscheidet, die der zweite Prozessorkern 50 verwendet.
Der erste Prozessorkern 40 ist weiterhin in dem FPGA derart konfiguriert, dass er zum Abspeichern und Auslesen von Daten in oder aus dem ersten Speicherbereich 70 eine Datenstruktur DS1 verwendet, die sich von einer Datenstruktur DS2 unterscheidet, welche der zweite Prozessorkern 50 zum Abspeichern und Auslesen von Daten in oder aus dem zweiten Speicherbereich 80 verwendet. Der erste Prozessorkern 40 kann bei- spielsweise ein zu speicherndes Datenwort im Vergleich zum zweiten Prozessorkern 50 um eine vorgegebene Anzahl von Bits verschieben . Aufgrund der jeweils prozessorkernspezifisch verwürfelten Adressstruktur AS1, AS2 und/oder der prozessorkernspezifisch transformierten Datenstruktur DS1, DS2 zum Speichern von Datenwörtern können Hardwarefehler in von den Prozessorkernen 40, 50 gemeinsam genutzten Ressourcen 90, 100, 110 erkannt werden, da diese in den jeweiligen Prozessorkernen 40, 50 unterschiedliche Effekte haben, die sich dann spätestens in un ¬ terschiedlichen Zwischenergebnissen oder Ergebnissen bei der parallelen Ausführung des Nutzprogramms bemerkbar machen. Die Funktionalität zum Verwürfein der Adressstruktur und zum Transformieren der Datenstruktur ist für jeden Prozessorkern 40, 50 in dem FPGA separat konfiguriert.
Der erste und der zweite Prozessorkern 40, 50 sind weiterhin eingerichtet, während des Ausführens des Nutzprogramms Daten zu erfassen, welche den Programmablauf beschreiben. Dies sind insbesondere besuchte Speicheradressen und darin gespeicherte Werte. Über diese erfassten Daten kann, zu Kompressionszwe ¬ cken, ein Hashwert gebildet werden. Die Funktionalität zum Erfassen dieser Kontrolldaten ist für jeden Prozessorkern 40, 50 in dem FPGA separat konfiguriert. Da beide Prozessorkerne 40, 50 dasselbe Nutzprogramm ausführen, kann der Vergleichsbaustein 60 in dem Fall, dass beispielsweise ein von dem ers ¬ ten Prozessorkern 40 erhaltenes erstes Zwischenergebnis in Form eines vorstehend erläuterten Hashwertes von einem Hash- wert abweicht, welcher ein entsprechendes zweites Zwischener ¬ gebnis mit Bezug auf den zweiten Prozessorkern 50 darstellt, von einem Fehler während der Programmausführung im ersten oder zweiten Prozessorkern 40, 50 ausgehen. Über einen Ein- und Ausgabespeicherbereich 90 kann eine Dateneingabe in und eine Datenausgabe durch Mehrkernprozessor 30 erfolgen. Dazu sind der erste Prozessorkern 40 und der zweite Prozessorkern 50 derart in dem FPGA konfiguriert, dass sie auf diesen Ein- und Ausgabespeicherbereich 90 gemäß einer von extern vorgegebenen, nicht transformierten oder verwürfelten Adress- und Datenstruktur zugreifen. Die in diesem Speicherbereich 90 gespeicherten Daten können dabei zusätz- lieh mittels einer Prüfsumme abgesichert werden. Die Prüfsum ¬ me kann dabei in dem jeweiligen Prozessorkern 40, 50 erstellt werden .
In Fig. 3 sind Schritte einer bevorzugten Ausführungsform ei- nes Verfahrens zur redundanten Datenverarbeitung schematisch angegeben .
In einem vorgelagerten Schritt SO wird ein computerlesbares Speichermedium 120 bereitgestellt, auf dem die Definition 130 eines vorstehend mit Bezug auf Fig. 1 beschriebenen Mehrkern ¬ prozessors 30 gespeichert ist. Die Definition ist mittels ei ¬ ner geeigneten Hardwarebeschreibungssprache, z. B. VHDL, ab- gefasst . In Schritt Sl wird der Mehrkernprozessor 30 in einem FPGA eines integrierten Schaltkreises 20 gemäß der Definition 130 konfiguriert. Wie vorstehend mit Bezug auf Fig. 1 dargelegt, werden dabei wesentliche Funktionalitäten des ersten und zweiten Prozessorkerns 40, 50 jeweils prozessorkernspezifisch und separat in dem FPGA konfiguriert.
In Schritt S2 wird ein Nutzprogramms durch den ersten Prozes ¬ sorkern 40 und den zweiten Prozessorkern 40 redundant parallel ausgeführt.
Zwischenergebnisse oder Endergebnisse, die sich aus der Aus ¬ führung des Nutzprogramms durch den ersten Prozessorkern 40 und aus der Ausführung des Nutzprogramms durch den zweiten Prozessorkern 50 ergeben, werden in Schritt S3 mittels des Vergleichsbausteins 60 verglichen.
Während der Ausführung des Nutzprogramms verwendet der erste Prozessorkern 40 zum Abspeichern und Auslesen von Daten in oder aus dem dem ersten Prozessorkern 40 zugeordneten ersten Speicherbereich 70 eine Adressstruktur AS1, die sich von einer Adressstruktur AS2 unterscheidet, welche der zweite Pro ¬ zessorkern 50 zum Abspeichern und Auslesen von Daten in oder aus dem dem zweiten Prozessorkern 50 zugeordneten zweiten Speicherbereich 80 verwendet.
Weiterhin verwendet der erste Prozessorkern 40 in diesem Zusammenhang zum Abspeichern und Auslesen von Daten in oder aus dem ersten Speicherbereich 70 eine Datenstruktur DS1, die sich von einer Datenstruktur DS2 unterscheidet, welche der zweite Prozessorkern 50 zum Abspeichern und Auslesen von Daten in oder aus dem zweiten Speicherbereich 80 verwendet. Zusammenfassend betrifft die vorliegende Erfindung eine An ¬ ordnung zur redundanten Datenverarbeitung, die einen integrierten Schaltkreis umfasst, in dem die Funktionalität eines Mehrkernprozessors implementiert ist. Prozessorkerne des Mehrkernprozessors sind jeweils ausgebildet, ein Nutzprogramm auszuführen, wobei Ergebnisse, die sich aus einer Ausführung des Nutzprogramms durch verschiedene der Prozessorkerne erge ¬ ben, mittels eines Vergleichsbausteins der Anordnung vergli ¬ chen werden können. Die Prozessorkerne unterscheiden sich untereinander hinsichtlich einer Adress- oder Datenstruktur, die seitens eines Prozessorkerns jeweils zum Abspeichern und Auslesen von Daten in oder aus einem dem jeweiligen Prozessorkern zugeordneten Speicherbereich verwendet wird. Die einzelnen Prozessorkerne sind in dem integrierten Schaltkreis hardwaremäßig zumindest teilweise separat implementiert.
Obwohl die Erfindung im Detail durch bevorzugte Ausführungs ¬ beispiele näher illustriert und beschrieben wurde, so ist die Erfindung nicht durch die offenbarten Beispiele eingeschränkt und andere Variationen können vom Fachmann hieraus abgeleitet werden, ohne den Schutzumfang der Erfindung zu verlassen.
Next Patent: ISOLATING APPARATUS FOR A PHOTOVOLTAIC STRING