-
GEBIET DER ERFINDUNG
-
Bestimmte erfindungsgemäße Ausführungsformen betreffen das Vorsehen einer Diagnoseerfassung in Berechnungssystemen und -verfahren. Insbesondere betreffen bestimmte erfindungsgemäße Ausführungsbeispiele das Vorsehen einer Diagnoseerfassung in eingebetteten, sicherheitsrelevanten Systemen und der darin enthaltenen Verfahren, während die Lockstep-CPU-Kern-Verfügbarkeit erhöht wird.
-
HINTERGRUND DER ERFINDUNG
-
In eingebetteten, sicherheitsrelevanten Systemen verwendete zentrale Verarbeitungseinheiten (CPUs) weisen allgemein ein Paar von CPU-Kernen auf, die unabhängig und kohärent dieselben Anweisungs- und Datenfolgen ausführen. Die Ausgaben der Kerne werden in Echtzeit verglichen, und wenn eine Nichtübereinstimmung auftritt, was typischerweise einen Fehler angibt, kann eine geeignete Maßnahme ergriffen werden, um den Fehler zu behandeln. Bis jedoch ein Zustandsunterschied zwischen den beiden CPU-Kernen aufgrund der Erkennung eines Unterschieds zwischen den Ausgaben der beiden CPU-Kerne bestimmt worden ist, kann der aktuelle interne Zustand eines oder beider CPU-Kerne deutlich von dem internen Zustand zu dem Zeitpunkt des Auftretens eines CPU-Kern-bezogenen Fehlers abweichen.
-
Ein herkömmliches, eingebettetes, sicherheitsrelevantes System behandelt diese CPU-Kern-bezogenen Fehler, indem das gesamte System in einen Rücksetz-Zustand versetzt und anschließend neu gestartet wird. Genauer gesagt empfängt in einem herkömmlichen System ein Systemmanager-Logikmodul typischerweise die Kern-bezogenen Fehler und setzt dann nicht nur das Paar von CPU-Kernen zurück, sondern alle mit dem System verbundenen Komponenten. Diese Vorgehensweise nimmt jedoch typischerweise einen beträchtlichen Zeitraum in Anspruch, während dessen das System beispielsweise für die Verarbeitung von Anweisungen und Daten oder E/A-Funktionen nicht verfügbar ist. Zum Beispiel kann das System für einen Zeitraum von mehreren Einheiten von 10 Millisekunden nicht verfügbar sein, was für sicherheitsrelevante Controller keine wünschenswerte Situation ist.
-
Weitere, komplexere Systeme können drei oder mehr CPU-Kerne in Verbindung mit einem Mehrheits-Voting-System verwenden, das zum Deaktivieren von Kernen mit Fehlfunktion verwendet wird. Obwohl solche Systeme eine höhere CPU-Kern-Verfügbarkeit vorsehen, hat eine solche Verfügbarkeit jedoch den Nachteil eines zusätzlichen Platzbedarfs, eines höheren Stromverbrauchs und/oder höherer Kosten.
-
Es wäre wünschenswert, einen höheren Anteil an CPU-Kern-Verfügbarkeit in eingebetteten, sicherheitsrelevanten Systemen für die Aufgabe der Verarbeitung von Daten und Sätzen von Anweisungen vorzusehen, während immer noch eine effiziente, robuste Erkennung und Korrektur von CPU-Kern-Verarbeitungsfehlern vorgesehen wird.
-
KURZE ZUSAMMENFASSUNG DER ERFINDUNG
-
Gemäß einem erfindungsgemäßen Ausführungsbeispiel weist ein Lockstep-System einen Haupt-CPU-Kern auf, der so konfiguriert ist, dass er eine oder mehrere Anweisungen einer Aufgabe empfängt und ausführt, um eine erste Ausgabe für jede ausgeführte Anweisung zu generieren, einen Prüfer-CPU-Kern, der so konfiguriert ist, dass er die eine oder mehreren Anweisungen empfängt und ausführt, um eine zweite Ausgabe für jede ausgeführte Anweisung zu generieren, einen Zustandspuffer, der mit dem Haupt-CPU-Kern und dem Prüfer-CPU-Kern gekoppelt ist und so konfiguriert ist, dass er einen Zustand des Haupt-CPU-Kerns speichert, und einen Komparator, der mit dem Haupt-CPU-Kern und dem Prüfer-CPU-Kern gekoppelt ist und so konfiguriert ist, dass er die erste Ausgabe und die zweite Ausgabe für jede ausgeführte Anweisung empfängt und die erste Ausgabe mit der zweiten Ausgabe vergleicht, und, wenn die erste Ausgabe nicht mit der zweiten Ausgabe übereinstimmt, ein oder mehrere Steuersignale generiert. Bei einem Ausführungsbeispiel sind der Haupt-CPU-Kern und der Prüfer-CPU-Kern ferner so konfiguriert, dass sie das eine oder die mehreren Steuersignale empfangen und einen gespeicherten Zustand eines CPU-Kerns aus dem Zustandspuffer laden.
-
Gemäß einem weiteren erfindungsgemäßen Ausführungsbeispiel umfasst ein Verfahren zur Erhöhung der Lockstep-Kern-Verfügbarkeit das Schreiben eines Zustands eines Haupt-CPU-Kerns in einen Zustandspuffer, das Ausführen einer oder mehrerer Anweisungen einer Aufgabe durch den Haupt-CPU-Kern, um eine erste Ausgabe für jede ausgeführte Anweisung zu generieren, das Ausführen der einen oder mehreren Anweisungen der Aufgabe durch einen Prüfer-CPU-Kern, um eine zweite Ausgabe für jede ausgeführte Anweisung zu generieren, das Vergleichen der ersten Ausgabe mit der zweiten Ausgabe, und, wenn die erste Ausgabe nicht mit der zweiten Ausgabe übereinstimmt, das Generieren eines oder mehrerer Steuersignale, und das Laden des Zustands des Haupt-CPU-Kerns aus dem Zustandspuffer in den Haupt-CPU-Kern und in den Prüfer-CPU-Kern auf der Grundlage des Generierens des einen oder der mehreren Steuersignale.
-
Gemäß einer Erscheinungsform wird ein Lockstep-System vorgesehen, das Folgendes umfasst:
einen Haupt-CPU-Kern, der so konfiguriert ist, dass er eine Aufgabe empfängt, und die Aufgabe eine oder mehrere Anweisungen umfasst, wobei der Haupt-CPU-Kern ferner so konfiguriert ist, dass er die eine oder mehreren Anweisungen ausführt, um eine erste Ausgabe für jede ausgeführte Anweisung zu generieren;
einen Prüfer-CPU-Kern, der so konfiguriert ist, dass er die Aufgabe empfängt und die eine oder mehreren Anweisungen ausführt, um eine zweite Ausgabe für jede ausgeführte Anweisung zu generieren;
einen mit dem Haupt-CPU-Kern und dem Prüfer-CPU-Kern gekoppelten Zustandspuffer, wobei der Zustandspuffer so konfiguriert ist, dass er einen Zustand des Haupt-CPU-Kerns speichert; und
einen mit dem Haupt-CPU-Kern und dem Prüfer-CPU-Kern gekoppelten Komparator, wobei der Komparator so konfiguriert ist, dass er die erste Ausgabe und die zweite Ausgabe für jede ausgeführte Anweisung empfängt, die erste Ausgabe mit der zweiten Ausgabe vergleicht, und, wenn die erste Ausgabe nicht mit der zweiten Ausgabe übereinstimmt, ein oder mehrere Steuersignale generiert, wobei der Haupt-CPU-Kern und der Prüfer-CPU-Kern ferner so konfiguriert sind, dass sie das eine oder die mehreren Steuersignale empfangen und einen gespeicherten Zustand eines CPU-Kerns aus dem Zustandspuffer laden.
-
Zweckmäßigerweise weist das Lockstep-System ferner ein mit dem Haupt-CPU-Kern und dem Prüfer-CPU-Kern gekoppeltes Bus-/Cache-/Speichermodul auf, wobei der Haupt-CPU-Kern und der Prüfer-CPU-Kern ferner so konfiguriert sind, dass sie die Aufgabe von dem Bus-/Cache-/Speichermodul empfangen.
-
Zweckmäßigerweise weist das Lockstep-System ferner ein oder mehrere in Reihe zwischen dem Bus-/Cache-/Speichermodul und dem Prüfer-CPU-Kern gekoppelte erste Verzögerungselemente und ein oder mehrere in Reihe zwischen dem Haupt-CPU-Kern und dem Komparator gekoppelte zweite Verzögerungselemente auf.
-
Zweckmäßigerweise weist der Haupt-CPU-Kern eine Zustandssteuerlogik für den Haupt-CPU-Kern auf, die so konfiguriert ist, dass sie vor der Ausführung der einen oder mehreren Anweisungen durch den Haupt-CPU-Kern den Zustand des Haupt-CPU-Kerns in den Zustandspuffer schreibt.
-
Zweckmäßigerweise weist der Haupt-CPU-Kern eine Zustandssteuerlogik für den Haupt-CPU-Kern auf, die so konfiguriert ist, dass sie auf der Grundlage eines Auftretens eines Trigger-Ereignisses während der Ausführung der einen oder mehreren Anweisungen durch den Haupt-CPU-Kern den Zustand des Haupt-CPU-Kerns in den Zustandspuffer schreibt.
-
Zweckmäßigerweise weist der Haupt-CPU-Kern eine Zustandssteuerlogik für den Haupt-CPU-Kern auf, die so konfiguriert ist, dass sie die Ausführung der einen oder mehreren Anweisungen durch den Haupt-CPU-Kern beim Empfangen des einen oder der mehreren Steuersignale stoppt, und der Prüfer-CPU-Kern weist eine Zustandssteuerlogik für den Prüfer-CPU-Kern auf, die so konfiguriert ist, dass sie die Ausführung der einen oder mehreren Anweisungen durch den Prüfer-CPU-Kern beim Empfangen des einen oder der mehreren Steuersignale stoppt.
-
Zweckmäßigerweise ist die Zustandssteuerlogik für den Haupt-CPU-Kern ferner so konfiguriert, dass sie auf der Grundlage des Empfangens des einen oder der mehreren Steuersignale ein Lesesignal zum Laden des gespeicherten Zustands des CPU-Kerns in den Haupt-CPU-Kern und in den Prüfer-CPU-Kern generiert.
-
Zweckmäßigerweise führen der Haupt-CPU-Kern und der Prüfer-CPU-Kern die eine oder mehreren Anweisungen auf kohärente Weise aus.
-
Gemäß einer Erscheinungsform wird ein Verfahren zum Erhöhen der Lockstep-Kern-Verfügbarkeit vorgesehen, das Folgendes umfasst:
Schreiben eines Zustands eines Haupt-CPU-Kerns in einen Zustandspuffer;
Ausführen einer oder mehrerer Anweisungen einer Aufgabe durch den Haupt-CPU-Kern, um eine erste Ausgabe für jede ausgeführte Anweisung zu generieren;
Ausführen der einen oder mehreren Anweisungen der Aufgabe durch einen Prüfer-CPU-Kern, um eine zweite Ausgabe für jede ausgeführte Anweisung zu generieren;
Vergleichen der ersten Ausgabe mit der zweiten Ausgabe mittels eines Komparators, und, wenn die erste Ausgabe nicht mit der zweiten Ausgabe übereinstimmt, Generieren eines oder mehrerer Steuersignale; und
Laden des Zustands des Haupt-CPU-Kerns aus dem Zustandspuffer in den Haupt-CPU-Kern und in den Prüfer-CPU-Kern auf der Grundlage des Generierens des einen oder der mehreren Steuersignale.
-
Zweckmäßigerweise umfasst das Verfahren zum Erhöhen der Lockstep-Kern-Verfügbarkeit ferner das Empfangen der einen oder mehreren Anweisungen von einem Bus-/Cache-/Speichermodul durch den Haupt-CPU-Kern und den Prüfer-CPU-Kern.
-
Zweckmäßigerweise umfasst das Verfahren zum Erhöhen der Lockstep-Kern-Verfügbarkeit ferner das Verzögern der einen oder mehreren von dem Prüfer-CPU-Kern empfangenen Anweisungen und das Verzögern der ersten Ausgabe des Haupt-CPU-Kerns.
-
Zweckmäßigerweise umfasst das Verfahren zum Erhöhen der Lockstep-Kern-Verfügbarkeit ferner das Schreiben des Zustands des Haupt-CPU-Kerns in den Zustandspuffer, bevor die eine oder mehreren Anweisungen durch den Haupt-CPU-Kern ausgeführt werden.
-
Zweckmäßigerweise umfasst der Zustand des Haupt-CPU-Kerns einen pseudo-statischen Zustand und einen dynamischen Zustand, wobei das Schreiben des Zustands des Haupt-CPU-Kerns in den Zustandspuffer ferner Folgendes umfasst:
Schreiben des dynamischen Zustands in den Zustandspuffer, bevor die eine oder mehreren Anweisungen der Aufgabe von dem Haupt-CPU-Kern ausgeführt werden; und
Schreiben des pseudo-statischen Zustands in den Zustandspuffer nur dann, wenn der pseudo-statische Zustand des Haupt-CPU-Kerns vor dem Ausführen der einen oder mehreren Anweisungen der Aufgabe sich von dem pseudo-statischen Zustand des Haupt-CPU-Kerns vor dem Ausführen einer oder mehrerer Anweisungen einer vorherigen Aufgabe unterscheidet.
-
Zweckmäßigerweise umfasst das Verfahren zum Erhöhen der Lockstep-Kern-Verfügbarkeit ferner das Schreiben des Zustands des Haupt-CPU-Kerns in den Zustandspuffer auf der Grundlage eines Auftretens eines Trigger-Ereignisses während der Ausführung der einen oder mehreren Anweisungen durch den Haupt-CPU-Kern.
-
Zweckmäßigerweise umfasst das Verfahren zum Erhöhen der Lockstep-Kern-Verfügbarkeit ferner das Stoppen der Ausführung der einen oder mehreren Anweisungen durch den Haupt-CPU-Kern und der einen oder mehreren Anweisungen durch den Prüfer-CPU-Kern auf der Grundlage des Empfangens des einen oder der mehreren Steuersignale durch den Haupt-CPU-Kern.
-
Zweckmäßigerweise umfasst das Verfahren zum Erhöhen der Lockstep-Kern-Verfügbarkeit ferner das Generieren eines Lesesignals, auf der Grundlage des Empfangens des einen oder der mehreren Steuersignale durch den Haupt-CPU-Kern, zum Laden des Zustands des Haupt-CPU-Kerns aus dem Zustandspuffer in den Haupt-CPU-Kern und in den Prüfer-CPU-Kern.
-
Zweckmäßigerweise führen der Haupt-CPU-Kern und der Prüfer-CPU-Kern die eine oder mehreren Anweisungen auf kohärente Weise aus.
-
Zweckmäßigerweise werden die Schritte des Ausführens der einen oder mehreren Anweisungen der Aufgabe durch den Haupt-CPU-Kern, des Ausführens der einen oder mehreren Anweisungen der Aufgabe durch den Prüfer-CPU-Kern, des Vergleichens und des Ladens so lange wiederholt, bis entweder die erste Ausgabe für jede ausgeführte Anweisung mit der zweiten Ausgabe für jede ausgeführte Anweisung übereinstimmt oder ein vorbestimmter Zeitraum abgelaufen ist.
-
Zweckmäßigerweise handelt es sich bei der Aufgabe um eine sichere Aufgabe, wobei das Verfahren ferner Folgendes umfasst:
nach dem Schreiben des Zustands des Haupt-CPU-Kerns in den Zustandspuffer und vor dem Ausführen der einen oder mehreren Anweisungen der sicheren Aufgabe durch den Haupt-CPU-Kern:
Deaktivieren des Prüfer-CPU-Kerns und des Komparators;
Ausführen einer nicht sicheren Aufgabe durch den Haupt-CPU-Kern;
Aktivieren des Prüfer-CPU-Kerns und des Komparators; und
Laden des Zustands des Haupt-CPU-Kerns aus dem Zustandspuffer in den Haupt-CPU-Kern und in den Prüfer-CPU-Kern.
-
Gemäß einer Erscheinungsform wird ein Verfahren zum Erhöhen der Lockstep-Kern-Verfügbarkeit vorgesehen, das Folgendes umfasst:
Schreiben eines ersten, mit einer ersten Aufgabe verbundenen Maschinenkontextzustands in einen Zustandspuffer, wobei der erste Maschinenkontextzustand einen ersten Zustand des Haupt-CPU-Kerns und einen oder mehrere erste Zustände von logischen Einheiten und/oder Hardwareeinheiten umfasst, die mit dem Betrieb des Haupt-CPU-Kerns verbunden sind;
Ausführen einer oder mehrerer Anweisungen der ersten Aufgabe durch den Haupt-CPU-Kern, um eine erste Ausgabe für jede ausgeführte Anweisung zu generieren;
Ausführen der einen oder mehreren Anweisungen der ersten Aufgabe durch einen Prüfer-CPU-Kern, um eine zweite Ausgabe für jede ausgeführte Anweisung zu generieren;
Vergleichen der ersten Ausgabe mit der zweiten Ausgabe mittels eines Komparators, und, wenn die erste Ausgabe nicht mit der zweiten Ausgabe übereinstimmt, Generieren eines oder mehrerer Steuersignale;
Laden des ersten Zustands des Haupt-CPU-Kerns aus dem Zustandspuffer in den Haupt-CPU-Kern und in den Prüfer-CPU-Kern auf der Grundlage des Generierens des einen oder der mehreren Steuersignale;
Wiederholen der Schritte des Ausführens der einen oder mehreren Anweisungen der ersten Aufgabe durch den Haupt-CPU-Kern, des Ausführens der einen oder mehreren Anweisungen der ersten Aufgabe durch den Prüfer-CPU-Kern, des Vergleichens und des Ladens, bis entweder die erste Ausgabe für jede ausgeführte Anweisung mit der zweiten Ausgabe für jede ausgeführte Anweisung übereinstimmt, ein vorbestimmter Zeitraum abgelaufen ist oder ein Maschinenkontext-Trigger-Ereignis auftritt; und
wenn das Maschinenkontext-Trigger-Ereignis auftritt:
Schreiben eines zweiten, mit einer zweiten Aufgabe verbundenen Maschinenkontextzustands aus einem zweiten Zustandspuffer in den Zustandspuffer, wobei der zweite Maschinenkontextzustand einen zweiten Zustand des Haupt-CPU-Kerns und einen oder mehrere zweite Zustände von logischen Einheiten und/oder Hardwareeinheiten umfasst, die mit dem Betrieb des Haupt-CPU-Kerns verbunden sind; und
Laden des zweiten Maschinenkontextzustands aus dem Zustandspuffer in den Haupt-CPU-Kern und in den Prüfer-CPU-Kern.
-
Zweckmäßigerweise umfasst das Verfahren ferner Folgendes, wenn das Maschinenkontext-Trigger-Ereignis auftritt:
Ausführen einer oder mehrerer Anweisungen der zweiten Aufgabe durch den Haupt-CPU-Kern, um eine erste Ausgabe für die zweite Aufgabe jeder ausgeführten Anweisung zu generieren;
Ausführen der einen oder mehreren Anweisungen der zweiten Aufgabe durch den Prüfer-CPU-Kern, um eine zweite Ausgabe für die zweite Aufgabe jeder ausgeführten Anweisung zu generieren;
Vergleichen der ersten Ausgabe für die zweite Aufgabe mit der zweiten Ausgabe für die zweite Aufgabe mittels des Komparators, und, wenn die erste Ausgabe für die zweite Aufgabe nicht mit der zweiten Ausgabe für die zweite Aufgabe übereinstimmt, Generieren eines oder mehrerer zweiter Steuersignale;
Laden des zweiten Zustands des Haupt-CPU-Kerns aus dem Zustandspuffer in den Haupt-CPU-Kern und in den Prüfer-CPU-Kern auf der Grundlage des Generierens des einen oder der mehreren zweiten Steuersignale; und
Wiederholen der Schritte des Ausführens der einen oder mehreren Anweisungen der zweiten Aufgabe durch den Haupt-CPU-Kern, des Ausführens der einen oder mehreren Anweisungen der zweiten Aufgabe durch den Prüfer-CPU-Kern, des Vergleichens der ersten Ausgabe für die zweite Aufgabe mit der zweiten Ausgabe für die zweite Aufgabe und des Ladens des zweiten Zustands des Haupt-CPU-Kerns aus dem Zustandspuffer, bis entweder die erste Ausgabe für die zweite Aufgabe jeder ausgeführten Anweisung mit der zweiten Ausgabe für die zweite Aufgabe jeder ausgeführten Anweisung übereinstimmt, ein vorbestimmter Zeitraum abgelaufen ist oder ein Maschinenkontext-Trigger-Ereignis auftritt.
-
Zweckmäßigerweise umfasst das Maschinenkontext-Trigger-Ereignis eines der Folgenden: ein Betriebssystemereignis oder einen oder mehrere Zustände einer Vielzahl von Haupt-CPU-Kernen mit einem oder mehreren vorbestimmten Werten.
-
Zweckmäßigerweise umfassen der eine oder die mehreren ersten Zustände von logischen Einheiten und/oder Hardwareeinheiten, die mit dem Betrieb des Haupt-CPU-Kerns verbunden sind, einen oder mehrere von einem Programmzählerzustand, einem Registerdateizustand, einem Speicherschutzsystemzustand und einem Zeitschutzsystemzustand.
-
Gemäß einer Erscheinungsform wird ein System zum Erhöhen der Lockstep-Kern-Verfügbarkeit vorgesehen, das Folgendes umfasst:
Mittel zum Schreiben eines Zustands eines Haupt-CPU-Kerns in einen Zustandspuffer;
Mittel zum Ausführen einer oder mehrerer Anweisungen einer Aufgabe durch den Haupt-CPU-Kern, um eine erste Ausgabe für jede ausgeführte Anweisung zu generieren;
Mittel zum Ausführen der einen oder mehreren Anweisungen der Aufgabe durch einen Prüfer-CPU-Kern, um eine zweite Ausgabe für jede ausgeführte Anweisung zu generieren;
Mittel zum Vergleichen der ersten Ausgabe mit der zweiten Ausgabe, und, wenn die erste Ausgabe nicht mit der zweiten Ausgabe übereinstimmt, Mittel zum Generieren eines oder mehrerer Steuersignale; und
Mittel zum Laden des Zustands des Haupt-CPU-Kerns aus dem Zustandspuffer in den Haupt-CPU-Kern und in den Prüfer-CPU-Kern auf der Grundlage des Generierens des einen oder der mehreren Steuersignale.
-
Diese und weitere Vorteile, Aspekte und neuartige Merkmale der vorliegenden Erfindung sowie Einzelheiten eines veranschaulichten Ausführungsbeispiels davon sind anhand der folgenden Beschreibung und der Zeichnungen besser verständlich.
-
KURZE BESCHREIBUNG MEHRERER ANSICHTEN DER ZEICHNUNGEN
-
1 ist ein Schemadiagramm eines Lockstep-Systems gemäß einem erfindungsgemäßen Ausführungsbeispiel;
-
2 ist ein Ablaufdiagramm von Verfahrensschritten zum Erhöhen der Lockstep-Kern-Verfügbarkeit gemäß einem erfindungsgemäßen Ausführungsbeispiel;
-
3 ist ein Ablaufdiagramm von Verfahrensschritten zum Erhöhen der Lockstep-Kern-Verfügbarkeit gemäß einem weiteren erfindungsgemäßen Ausführungsbeispiel;
-
4 ist ein Ablaufdiagramm von Verfahrensschritten zum Erhöhen der Lockstep-Kern-Verfügbarkeit gemäß einem weiteren erfindungsgemäßen Ausführungsbeispiel; und
-
5 ist ein Ablaufdiagramm von Verfahrensschritten zum Erhöhen der Lockstep-Kern-Verfügbarkeit gemäß einem weiteren erfindungsgemäßen Ausführungsbeispiel.
-
AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
-
1 ist ein Schemadiagramm eines Lockstep-Systems 100 gemäß einem erfindungsgemäßen Ausführungsbeispiel. Das Lockstep-System weist einen Haupt-CPU-Kern 102, einen Prüfer-CPU-Kern 104, einen Komparator 106, einen Zustandspuffer 108 und ein Bus-/Cache-/Speichermodul 110 auf. Wie veranschaulicht weist der Haupt-CPU-Kern 102 die Zustandssteuerlogik für den Haupt-CPU-Kern 112a auf, und der Prüfer-CPU-Kern 104 weist die Zustandssteuerlogik für den Prüfer-CPU-Kern 112b auf. Bei einem Ausführungsbeispiel weisen die Zustandssteuerlogik für den Haupt-CPU-Kern 112a und die Zustandssteuerlogik für den Prüfer-CPU-Kern 112b eine identische Logik auf, die entweder als Hardware, Firmware oder Software implementiert ist, allerdings umfasst der Schutzumfang der Erfindung nicht identische Implementierungen der Zustandssteuerlogik 112a und 112b, um zum Beispiel nicht identische Versionen der Haupt- und Prüfer-CPU-Kerne 102 und 104 zu berücksichtigen, die zum Beispiel die Zustandssteuerlogik 112a und 112b mit unterschiedlichen zeitlichen Verzögerungen erfordern. Zum Zweck der Vereinfachung der Beschreibung werden die Zustandssteuerlogik für den Haupt-CPU-Kern 112a und die Zustandssteuerlogik für den Prüfer-CPU-Kern 112b gemeinsam als Zustandssteuerlogik 112 bezeichnet.
-
Das Bus-/Cache-/Speichermodul 110 weist eine oder mehrere von Busleitungen, Cache und mit dem Haupt-CPU-Kern 102 und dem Prüfer-CPU-Kern 104 gekoppelten Speicher auf und ist so konfiguriert, dass es adressierbar ist und Daten und/oder Programme (zum Beispiel Folgen von CPU-Anweisungen) speichert, auf die der Haupt-CPU-Kern 102 und der Prüfer-CPU-Kern 106 zugreifen können. Der Schutzumfang der Erfindung umfasst alle Arten von Busleitungen, Cache und Speicher. Zum Beispiel kann eine Busleitung nicht nur elektrische Kabel, Durchkontaktierungen oder Leiterbahnen mit mehreren Anschlüssen umfassen, sondern auch jegliche Art von physischer Anordnung, welche dieselbe Funktionalität vorsieht.
-
Der Speicher kann jegliche beliebige physische Speichervorrichtung umfassen, die so konfiguriert ist, dass sie Programme oder Daten vorübergehend oder dauerhaft speichert. Der Schutzumfang der Erfindung umfasst nichtflüchtigen Speicher, wie zum Beispiel Flash-Speicher und ROM-/PROM-/EPROM-/EEPROM-Speicher und flüchtigen Speicher wie DRAM und SRAM, ist aber nicht auf diese beschränkt.
-
Der Zustandspuffer 108 kann eine beliebige physische Speichervorrichtung aufweisen, die so konfiguriert ist, dass sie adressierbar ist und einen Zustand des Haupt-CPU-Kerns 102 speichert. Bei einem erfindungsgemäßen Ausführungsbeispiel kann es sich bei dem Zustandspuffer 108 um einen dedizierten Speicher oder einen Teil eines zuvor bereits existierenden, mit den CPU-Kernen 102 und 104 (entweder direkt oder über ein Bussystem) verbundenen Speichers handeln. Im letzteren Fall kann innerhalb des Haupt-CPU-Kerns 102 ein Adresszeiger gehalten werden, um die Position des Zustandspuffers 108 im Speicher zu identifizieren. In einem solchen Fall kann der Zeigerwert in einem Registerfeld (nicht gezeigt) gehalten werden, das speziell dafür ausgelegt ist, dass es bei weichen Fehlern tolerant ist. Weiche Fehler werden unten noch ausführlich erörtert. Bei einem Ausführungsbeispiel kann das Registerfeld gegenüber weichen Fehlern tolerante Flipflops aufweisen. Die gegenüber weichen Fehlern toleranten Flipflops können erweitert werden, sodass sie die Sequenzlogik umfassen, die zum Beispiel von der Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 verwendet wird, um einen CPU-Zustand aus dem Zustandspuffer 108 zu laden.
-
Bei einem erfindungsgemäßen Ausführungsbeispiel ist der Inhalt der Zustandspuffers 108 mittels EEC (Error Correction Code, Fehlerkorrekturcode) geschützt. Zum Beispiel kann der ECC einen Algorithmus verwenden, um einen Code zu berechnen, der die Bitfolge einer in dem Zustandspuffer 108 zu speichernden Dateneinheit beschreibt, und der Code wird zusammen mit der Dateneinheit in dem Zustandspuffer 108 gespeichert. Wenn das Lesen der Dateneinheit angefordert wird, wird nochmals, unter Verwendung desselben Algorithmus, ein Code für die gespeicherte und jetzt zu lesende Dateneinheit (zum Beispiel ein Datenwort) berechnet. Der neu generierte Code wird mit dem Code verglichen, der beim Speichern der Dateneinheit generiert wurde, und wenn die Codes übereinstimmen, wird bestimmt, dass die Dateneinheit fehlerfrei ist. Wenn die Codes nicht übereinstimmen, können die fehlenden oder fehlerhaften Bits durch Vergleichen der beiden Codes bestimmt werden, und das bzw. die Bits können dann zur Verfügung gestellt oder korrigiert werden.
-
Der Haupt-CPU-Kern 102 kann jegliche Art von Mikroprozessor aufweisen, der den Fachleuten auf diesem Gebiet bekannt ist und der Programme liest und ausführt. Die Programme können CPU-Anweisungen umfassen, von denen einige Daten manipulieren, welche von dem Bus-/Cache-/Speichermodul 110 empfangen wurden. Bei einem Ausführungsbeispiel ist der Prüfer-CPU-Kern 104 strukturell und funktional identisch mit dem Haupt-CPU-Kern 102, und bei einem weiteren Ausführungsbeispiel ist der Prüfer-CPU-Kern 104 nur funktional mit dem Haupt-CPU-Kern 102 identisch. Der Haupt-CPU-Kern 102 und der Prüfer-CPU-Kern 104 können gemeinsam als Lockstep-CPU-Kerne bezeichnet werden. In dem Betrieb können die Lockstep-CPU-Kerne unabhängig voneinander dieselbe Anweisung und Datensequenzen entweder auf vollständig kohärente Weise ausführen (das heißt ohne zeitliche Verschiebung zwischen der Ausführung einer Anweisung/mehrerer Anweisungen durch die beiden CPU-Kerne) oder auf kohärente Weise (das heißt mit einer zeitlichen Verschiebung).
-
Bei einem erfindungsgemäßen Ausführungsbeispiel weist das Lockstep-System 100 ein oder mehrere Verzögerungselemente 114a, 114b, 114c und 114d auf. Die Verzögerungselemente 114a und 114b verzögern die Eingabe einer Anweisung an den Prüfer-CPU-Kern 104, wodurch eine zeitliche Verschiebung dahingehend erzeugt wird, wann die Anweisung von den beiden CPU-Kernen ausgeführt wird, und die Verzögerungselemente 114c und 114d verzögern die Ausgabe aus dem Haupt-CPU-Kern 102, sodass der Komparator 106 die Ausgaben von den beiden mit der Ausführung derselben Anweisung verbundenen CPU-Kernen vergleichen kann. Wie veranschaulicht, handelt es sich bei den Verzögerungselementen 114a–114d um optionale Merkmale des Lockstep-Systems 100.
-
Bei einem erfindungsgemäßen Ausführungsbeispiel steuert die Zustandssteuerlogik 112a bzw. 112b den Betrieb der CPU-Kerne 102 bzw. 104, einschließlich des Anhaltens der Ausführung von Aufgaben durch die CPU-Kerne, des erneuten Startens der Ausführung von Aufgaben durch die CPU-Kerne, das Schreiben (das heißt Speichern) des aktuellen Zustands des Haupt-CPU-Kerns 102 (und bei einem weiteren Ausführungsbeispiel des Prüfer-CPU-Kerns 104) in den Zustandspuffer 108, und/oder des Lesens (das heißt Ladens) eines gespeicherten Zustands eines CPU-Kerns aus dem Zustandspuffer 108 in dem Haupt-CPU-Kern 102 und in dem Prüfer-CPU-Kern 104. Zum Beispiel ist bei einem Ausführungsbeispiel die Zustandssteuerlogik 112a so konfiguriert, dass sie das Abtasten des Zustands des Haupt-CPU-Kerns 102 auf periodischer Basis und das Schreiben des abgetasteten Zustands (der auch als aktueller Zustand bezeichnet wird) in den Zustandspuffer 108 ermöglicht.
-
Bei einem Ausführungsbeispiel ist die Zustandssteuerlogik 112a selbst so konfiguriert, dass sie den Zustand des Haupt-CPU-Kerns 102 periodisch abtastet und den abgetasteten Zustand in den Zustandspuffer 108 schreibt. Bei einem weiteren Ausführungsbeispiel generiert die Zustandssteuerlogik 112a auf periodischer Basis Steuersignale, welche eine oder mehrere Logikeinheiten (nicht gezeigt) anweisen abzutasten und den Abtastzustand in den Zustandspuffer 108 zu schreiben. Bei einem weiteren Ausführungsbeispiel tastet die Zustandssteuerlogik 112a den Zustand des Haupt-CPU-Kerns 102 ab oder generiert Steuersignale, welche die eine oder die mehreren Logikeinheiten anweisen, den Zustand auf der Grundlage eines Trigger-Ereignisses abzutasten. Zum Beispiel kann es sich bei einem Trigger-Ereignis um den Start der Ausführung einer Aufgabe handeln oder um den Zustand eines bestimmten Flipflops oder um den Zustand eines oder mehrerer Knoten einer oder mehrerer Schaltungskomponenten des Systems, einschließlich Komponenten des Bus-/Cache-/Speichermoduls 110, des Haupt-CPU-Kerns 102 und des Prüfer-CPU-Kerns 104. Zum Zwecke dieser Beschreibung kann eine Aufgabe als ein bestimmter Algorithmus oder alternativ als eine Software-Einheit definiert sein.
-
Der Komparator 106 weist eine Vergleichslogik auf, die durch Hardware, Firmware oder Software aktiviert wird. Der Komparator 106 ist so konfiguriert, dass er die Ausgaben des Haupt-CPU-Kerns 102 und des Prüfer-CPU-Kerns 104 empfängt und miteinander vergleicht. Wenn bei einem Ausführungsbeispiel der Komparator 106 bestimmt, das die von den beiden CPU-Kernen empfangenen Ausgaben sich voneinander unterscheiden (das heißt, sie stimmen nicht genau überein), dann generiert der Komparator 106 ein oder mehrere Steuersignale, die an die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 und an die Zustandssteuerlogik 112b des Prüfer-CPU-Kerns 104 übermittelt werden.
-
Bei einem Ausführungsbeispiel ist das Lockstep-System 100 in ein sicherheitsrelevantes System eingebettet, zum Beispiel sind dies Systeme, bei denen die Erkennung von weichen und/oder harten Fehlern bei der Ausführung eines Programms oder einer Aufgabe aus Sicherheitsgründen wichtig ist. Weiche Fehler können zum Beispiel durch vorübergehende Ereignisse wie beispielsweise kosmische Strahlung, radioaktiven Zerfall oder Schwankungen bei der Stromversorgung verursacht werden, welche vorübergehende Signale oder Bedingungen verursachen, die zum Beispiel in den CPU-Kernen 102 und 104 und/oder in dem Bus-/Cache-/Speichermodul 110 auftreten. Harte Fehler hingegen können durch beschädigte Speicherzellen oder Schaltungskomponenten wie beispielsweise Transistoren entstehen, die zum Beispiel durch ionisierende Strahlung oder Unregelmäßigkeiten bei der Verarbeitung (das heißt Fertigung) verursacht werden. Typischerweise weisen durch vorübergehende Ereignisse verursachte weiche Fehler eine Lebensdauer von 2 Millisekunden oder weniger auf, wohingegen ein harter Fehler durch eine fehlerhafte Bedingung verursacht wird, die statisch ist und somit theoretisch eine unbegrenzte Lebensdauer aufweist.
-
2 ist ein Ablaufdiagramm von Verfahrensschritten 200 zum Erhöhen der Lockstep-Kern-Verfügbarkeit gemäß einem erfindungsgemäßen Ausführungsbeispiel. Bei Schritt 201 wird die Aufgabe gestartet. Bei einem Ausführungsbeispiel kann die Aufgabe gestartet werden, wenn die Ausführung einer vorherigen Aufgabe durch den Haupt-CPU-Kern 102 beendet wurde oder wenn der Haupt-CPU-Kern 102 eine Anforderung empfängt, die Ausführung der (neuen) Aufgabe zu starten.
-
Bei Schritt 202 speichert (schreibt) die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 den aktuellen Zustand des Haupt-CPU-Kerns 102 in den Zustandspuffer 108. Bei einem erfindungsgemäßen Ausführungsbeispiel zum Beispiel generiert die Zustandssteuerlogik 112a ein Signal bzw. mehrere Signale, welche bewirken, dass Spannungs- und/oder Stromwerte (bzw. digitale Werte High und Low) der verschiedenen Schaltungskomponenten des Haupt-CPU-Kerns 102 in den Zustandspuffer 108 geschrieben werden. Die Werte der verschiedenen Schaltungskomponenten können direkt von verschiedenen Knoten der Schaltungskomponenten abgetastet (das heißt gelesen) werden, oder sie können aus lokalen Registern (nicht gezeigt) des Haupt-CPU-Kerns 102 gelesen werden.
-
Bei Schritt 204 empfängt der Haupt-CPU-Kern 102 eine erste Anweisung aus einem Satz von Anweisungen, welche die Aufgabe umfassen, von dem Bus-/Cache-/Speichermodul 110, und der Prüfer-CPU-Kern 104 empfängt die erste Anweisung (verzögert oder nicht verzögert), um die Ausführung der Aufgabe zu starten. Bei einem erfindungsgemäßen Ausführungsbeispiel kann die Aufgabe als ein bestimmter Algorithmus oder alternativ als eine einzelne Software-Einheit definiert sein.
-
Bei Schritt 206 führen die Lockstep-Kerne (das heißt der Haupt- und der Prüfer-CPU-Kern 102 bzw. 104) die Aufgabe aus. Die Lockstep-Kerne können die eine oder mehreren Anweisungen, welche die Aufgabe umfassen, unabhängig voneinander entweder auf kohärente Weise oder auf vollständig kohärente Weise ausführen. Ferner vergleicht der Komparator 106 für jede ausgeführte Anweisung die Ausgabe (oder die verzögerte Ausgabe) des Haupt-CPU-Kerns 102 mit der Ausgabe des Prüfer-CPU-Kerns 104. Wenn der Komparator 106 bestimmt, dass die Ausgaben für jede der einen oder mehreren ausgeführten Anweisungen übereinstimmen, endet die Ausführung der Aufgabe bei Schritt 208. Bei einem Ausführungsbeispiel können einer oder beide der Lockstep-Kerne eine NOP-Anweisung (No Operation, kein Betrieb) ausführen, und somit wäre die Ausgabe des bzw. der Kern(e) dieselbe wie die vorherige Ausgabe (das heißt der Zustand der Ausgabe ändert sich nicht). Zum Beispiel können der Haupt-CPU-Kern 102 und/oder der Prüfer-CPU-Kern 104 eine oder mehrere Anweisungen ausführen, um eine Ausgabe für jede ausgeführte Anweisung zu generieren, wobei eine oder mehrere der generierten Ausgaben (oder nacheinander generierten Ausgaben) denselben Ausgabestatus aufweisen.
-
Wenn jedoch der Komparator 106 bei Schritt 210 bei einer bestimmten ausgeführten Anweisung während der Ausführung der Aufgabe einen Fehler erkennt (das heißt, das er bestimmt, dass die Ausgaben nicht übereinstimmen), dann generiert der Komparator 106 bei einem Ausführungsbeispiel ein oder mehrere Steuersignale zum Steuern der Zustandssteuerlogik für den Haupt-CPU-Kern 112a und/oder der Zustandssteuerlogik für den Prüfer-CPU-Kern 112b. Bei einem weiteren Ausführungsbeispiel weist das Lockstep-System 100 ein mit dem Komparator 106 gekoppeltes optionales Steuerregister 116 (1) auf. Das Steuerregister 116 ist so konfiguriert, dass es von dem Komparator 106 ein Fehlersignal empfängt und ein oder mehrere Steuersignale zum Steuern der Zustandssteuerlogik für den Haupt-CPU-Kern 112a und/oder der Zustandssteuerlogik für den Prüfer-CPU-Kern 112b generiert.
-
Unabhängig von der Quelle des einen oder der mehreren Steuersignale empfängt die Zustandssteuerlogik 112a und 112b bei Schritt 212 das eine oder die mehreren Steuersignale. Das eine oder die mehreren Steuersignale veranlassen die Zustandssteuerlogik 112a bzw. 112b, die Ausführung der Anweisungen durch den Haupt-CPU-Kern 102 bzw. den Prüfer-CPU-Kern 104 anzuhalten. Bei einem Ausführungsbeispiel sendet die Zustandssteuerlogik 112a dann ein Lesesignal an den Zustandspuffer 108, welches bewirkt, dass der gespeicherte CPU-Zustand in den Haupt-CPU-Kern 102 und in den Prüfer-CPU-Kern 104 geladen wird. Das Verfahren wird dann bei Schritt 204 fortgesetzt.
-
Zusammenfassend gesagt wird ein bekannter „guter” Zustand des Haupt-CPU-Kerns 102 (das heißt ein fehlerfreier Zustand) vor dem Beginn der Ausführung einer Aufgabe in den Zustandspuffer 108 geschrieben. Wenn während der Ausführung der Aufgabe ein Lockstep-Fehler erkannt wird, wird die Ausführung der Aufgabe angehalten, und der bekannte „gute” Zustand wird in beide CPU-Kerne 102 und 104 geladen, wodurch im Wesentlichen die Zustände der Kerne reinitialisiert werden. Anders ausgedrückt werden die Zustände der Kerne auf den Zustand des Haupt-CPU-Kerns zurückgesetzt, der zu Beginn der Aufgabe bekannt war, und die Folge der Anweisungen wird nochmals ausgeführt. Indem nur der Haupt-CPU-Kern 102 (und der mit ihm verbundene Prüfer-CPU-Kern 104) zurückgesetzt wird, wenn (durch Analysieren der Ausgaben des Haupt-CPU-Kerns 102 und des mit ihm verbundenen Prüfer-CPU-Kerns 104) ein Verarbeitungsfehler erkannt wird, wird ein Zurücksetzen eines gesamten Verarbeitungssystems (das heißt eines Verarbeitungssystems, das zum Beispiel mehr als einen einzelnen Haupt-CPU-Kern aufweist) vermieden, wodurch der prozentuale Anteil der Zeit, die für den Haupt-CPU-Kern 102 (oder die CPU-Kerne) zum Verarbeiten von Aufgaben verfügbar ist, erhöht wird. Somit wird der prozentuale Anteil an der Gesamtzeit erhöht, die für speziell dem Ausführen von Sätzen von Anweisungen zugewiesene Berechnungsoperationen verfügbar ist, sind, selbst wenn bei Vorhandensein einer Verfälschung des Zustands eines hochgradig individualisierten CPU-Kerns nachweislich korrekte Ergebnisse berechnet werden.
-
Wenn die Verfälschung des Zustands des CPU-Kerns von einem einzelnen Ereignis verursacht wird, das während der Ausführung einer Aufgabe aufgetreten ist (das heißt von dem Auftreten eines weichen Fehlers mit einer Lebensdauer von weniger als ungefähr 2 ms), dann erfolgt die Ausgabe der CPU, die durch das Laden (auch als erneutes Laden bezeichnet) des bekannten „guten” CPU-Zustands und durch die wiederholte Ausführung der Aufgabe bewirkt wird, ohne Fehler, wobei angenommen wird, dass ein weiteres Ereignis eines einzelnen weichen Fehlers nicht auftritt, und die Lockstep-Kerne können ihren Betrieb in dem Lock-Modus fortsetzen, da die Zustände der Kerne kohärent (bzw. vollständig kohärent) bleiben.
-
Wenn der Fehler jedoch durch eine beliebige andere Störung verursacht wurde (zum Beispiel durch ein Auftreten eines harten Fehlers), wird das erneute Laden des bekannten „guten” Zustands der CPU und das Wiederholen der Ausführung der Aufgabe nicht zu einer fehlerfreien CPU-Ausgabe führen. Um somit zu verhindern, dass die Lockstep-Kerne 102 und 104 in eine Endlosschleife eintreten, kann das Lockstep-System 100 optional einen Zähler oder einen Zustandsautomaten (nicht gezeigt) aufweisen, der so konfiguriert ist, dass er die Anzahl der aufeinander folgenden erneuten Ladevorgänge des CPU-Zustands begrenzt, wenn dieselbe Betriebssequenz durchgeführt wird (das heißt zum Beispiel derselbe Satz von Anweisungen, die eine bestimmte Aufgabe umfassen).
-
3 ist ein Ablaufdiagramm von Verfahrensschritten 300 zum Erhöhen der Lockstep-Kern-Verfügbarkeit gemäß einem weiteren erfindungsgemäßen Ausführungsbeispiel. Typischerweise können die Zustände innerhalb eines CPU-Kerns als dynamisch oder pseudo-statisch klassifiziert werden, wobei es sich bei einem dynamischen Zustand um einen Zustand handelt, der sich innerhalb einer Aufgabe ändert, während es sich bei einem pseudo-statischen Zustand um einen Zustand handelt, der während der Ausführung einer Aufgabe konstant bleibt oder von einer Aufgabe zu der nächsten konstant bleibt (das heißt während der Ausführung einer oder mehrerer Aufgaben konstant bleibt). Der Zustand eines CPU-Kerns kann beide Typen von Zuständen gleichzeitig umfassen. Um die Zeit zu verringern, die benötigt wird, um die CPU-Zustände bei dem Start einer Aufgabe in dem Zustandspuffer 108 zu speichern, wird die Komponente für den pseudo-statischen Zustand des CPU-Zustands nur dann in den Zustandspuffer 108 geschrieben, wenn sie sich geändert hat. Im Gegensatz dazu wird die Komponente für den dynamischen Zustand des CPU-Zustands bei dem Start jeder Aufgabe in den Zustandspuffer 108 geschrieben. Wenn bei einem Ausführungsbeispiel der Komparator 106 einen Fehler erkennt, werden sowohl der pseudo-statische als auch der dynamische Zustand erneut in die Lockstep-Kerne 102 und 104 geladen.
-
Wie in 3 bei Schritt 301 veranschaulicht, wird eine erste Aufgabe gestartet. Bei einem Ausführungsbeispiel kann die erste Aufgabe gestartet werden, wenn die Ausführung einer vorherigen Aufgabe beendet wurde oder wenn der Haupt-CPU-Kern 102 eine Anforderung empfängt, die Ausführung der ersten Aufgabe zu starten.
-
Unter der Annahme, dass der mit der ersten Aufgabe verbundene pseudo-statische Zustand des Haupt-CPU-Kerns 102 (der auch als aktueller pseudo-statischer Zustand bezeichnet wird) sich von dem mit einer vorherigen Aufgabe verbundenen pseudo-statischen Zustand des Haupt-CPU-Kerns 102 unterscheidet, speichert die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 bei Schritt 302 den aktuellen pseudo-statischen Zustand des Haupt-CPU-Kerns 102 in dem Zustandspuffer 108.
-
Bei Schritt 304 speichert die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 den mit der ersten Aufgabe verbundenen dynamischen Zustand des Haupt-CPU-Kerns 102 (der auch als aktueller dynamischer Zustand bezeichnet wird) in dem Zustandspuffer 108.
-
Bei Schritt 306 empfängt der Haupt-CPU-Kern 102 wird eine erste Anweisung aus einem Satz von Anweisungen, welche die erste Aufgabe umfassen, von dem Bus-/Cache-/Speichermodul 110, und der Prüfer-CPU-Kern 104 empfängt die erste Anweisung (verzögert oder nicht verzögert), um die Ausführung der ersten Aufgabe zu starten.
-
Bei Schritt 308 führen die Lockstep-Kerne die erste Aufgabe aus. Die Schritte 308 bis 314 sind mit den Schritten 206 bis 212 von 2 identisch, mit der Ausnahme, dass beim Auftreten eines Fehlers, wie er von dem Komparator 106 erkannt wird, die Zustandssteuerlogik 112a ein Lesesignal an den Zustandspuffer 108 sendet, welches bewirkt, dass sowohl der gespeicherte pseudo-statische CPU-Zustand als auch der gespeicherte dynamische CPU-Zustand in den Haupt-CPU-Kern 102 und in den Prüfer-CPU-Kern 104 geladen werden.
-
Bei Schritt 316 wird eine zweite Aufgabe gestartet. Die zweite Aufgabe kann gestartet werden, wenn die Ausführung der ersten Aufgabe beendet wurde oder wenn der Haupt-CPU-Kern 102 eine Anforderung empfängt, die Ausführung der zweiten Aufgabe zu starten.
-
Bei Schritt 318 speichert die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 den mit der zweiten Aufgabe verbundenen dynamischen Zustand des Haupt-CPU-Kerns 102 in dem Zustandspuffer 108. Bei diesem beispielhaften Ausführungsbeispiel wird davon ausgegangen, dass der mit der zweiten Aufgabe verbundene pseudo-statische Zustand derselbe ist wie der mit der ersten Aufgabe verbundene pseudo-statische Zustand, somit speichert die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 den mit der zweiten Aufgabe verbundenen pseudo-statischen Zustand des Haupt-CPU-Kerns 102 nicht in dem Zustandspuffer 108. Das Verfahren wird bei Schritt 320 fortgesetzt. Die Schritte 320 bis 328 bezüglich der zweiten Aufgabe sind mit den Schritten 306 bis 314 bezüglich der ersten Aufgabe identisch.
-
4 ist ein Ablaufdiagramm von Verfahrensschritten 400 zum Erhöhen der Lockstep-Kern-Verfügbarkeit gemäß einem weiteren erfindungsgemäßen Ausführungsbeispiel. Viele Anwendungen enthalten sowohl sichere als auch unsichere Aufgaben. Unsichere Aufgaben sind Aufgaben, bei denen Fehler bei der Ausgabe eines CPU-Kerns toleriert werden können. Um Strom zu sparen und die Gesamtverfügbarkeit des Haupt-CPU-Kerns 102 beim Verarbeiten von Anweisungen zu erhöhen, indem die zum Speichern und erneuten Laden von Zuständen der CPU-Kerne beanspruchte Gesamtzeit verringert wird, können gemäß einem erfindungsgemäßen Ausführungsbeispiel der Prüfer-CPU-Kern 104, der Komparator 106 und das Steuerregister 116 (wenn vorhanden) deaktiviert werden, wenn unsichere Aufgaben ausgeführt werden. Allerdings erfordern das Deaktivieren des Komparators 106 und des Prüfer-CPU-Kerns 104, dass ein inkohärenter Prüfer-CPU-Kern 104 wieder in den Lockstep-Betrieb mit dem Haupt-CPU-Kern 102 zurückgebracht wird, wenn später eine sichere Aufgabe ausgeführt werden soll.
-
Die im Zusammenhang mit den 1 bis 3 beschriebenen Systeme und Verfahren ermöglichen, dass Lockstep-CPU-Kerne von einem bekannten „guten” Zustand aus erneut gestartet werden, nachdem ein Fehler in einem oder beiden der CPU-Kerne erkannt worden ist. Wie unten im Zusammenhang mit 4 beschrieben wird, können dieselben Systeme und Verfahren auch verwendet werden, um ein zuvor deaktiviertes Lockstep-System zu resynchronisieren und erneut zu starten.
-
Wie in 4 bei Schritt 401 veranschaulicht, wird eine unsichere Aufgabe gestartet. Bei einem Ausführungsbeispiel kann die unsichere Aufgabe gestartet werden, wenn die Ausführung einer vorherigen Aufgabe beendet wurde oder wenn der Haupt-CPU-Kern 102 eine Anforderung empfängt, die Ausführung der unsicheren Aufgabe zu starten.
-
Bei Schritt 402 speichert die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 den aktuellen Zustand des Haupt-CPU-Kerns 102 in dem Zustandspuffer 108.
-
Bei Schritt 404 sendet die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 auf der Grundlage dessen, dass sie erkennt, dass es sich bei der aktuellen Aufgabe um eine unsichere Aufgabe handelt, Deaktivierungs-Steuersignale an den Komparator 106 und die Zustandssteuerlogik 112b des Prüfer-CPU-Kerns 104. Die vorprogrammierte Logik des Komparators 106 und die Zustandssteuerlogik 112b können die Deaktivierungs-Steuersignale nutzen, um zum Beispiel Transistoren, Schalter, Stromversorgungseinheiten und/oder andere Schaltungskomponenten des Komparators 106 bzw. des Prüfer-CPU-Kerns 104 auszuschalten. Bei einem weiteren Ausführungsbeispiel sendet der Haupt-CPU-Kern 102 Steuersignale, die signalisieren, dass es sich bei der aktuellen Aufgabe um eine unsichere Aufgabe handelt (das heißt Steuersignale für eine unsichere Aufgabe), an das Steuerregister 116, und als Reaktion darauf generiert das Steuerregister 116 Deaktivierungs-Steuersignale und sendet die Deaktivierungs-Steuersignale an den Komparator 106 und die Zustandssteuerlogik 112b des Prüfer-CPU-Kerns 104.
-
Bei Schritt 406 wird die unsichere Aufgabe gestartet, indem der Haupt-CPU-Kern 102 eine erste Anweisung aus einem Satz von Anweisungen, welche die unsichere Aufgabe umfassen, von dem Bus-/Cache-/Speichermodul 110 empfängt. Bei Schritt 408 führt der Haupt-CPU-Kern 102 die unsichere Aufgabe aus. Bei Schritt 410 endet die Ausführung der unsicheren Aufgabe.
-
Bei Schritt 412 wird eine sichere Aufgabe gestartet. Die sichere Aufgabe kann gestartet werden, wenn der Haupt-CPU-Kern 102 eine Anforderung empfängt, die Ausführung der sicheren Aufgabe zu starten.
-
Bei Schritt 414 sendet die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102, auf der Grundlage dessen, dass sie erkennt, dass es sich bei dem Start einer neuen Aufgabe um eine sichere Aufgabe handelt, Aktivierungs-Steuersignale an den Komparator 106 und die Zustandssteuerlogik 112b des Prüfer-CPU-Kerns 104. Die vorprogrammierte Logik des Komparators 106 und die Zustandssteuerlogik 112b können die Aktivierungs-Steuersignale nutzen, um den Lockstep-Betrieb zu aktivieren, indem zum Beispiel die Transistoren, Schalter, Stromversorgungseinheiten und/oder anderen Schaltungskomponenten des Komparators 106 bzw. des Prüfer-CPU-Kerns 104 eingeschaltet werden, die zuvor bei Schritt 404 ausgeschaltet worden sind. Bei einem weiteren Ausführungsbeispiel sendet der Haupt-CPU-Kern 102 Steuersignale, die signalisieren, dass es sich bei der aktuellen Aufgabe um eine sichere Aufgabe handelt (das heißt Steuersignale für eine sichere Aufgabe), an das Steuerregister 116, und als Reaktion darauf generiert das Steuerregister 116 Aktivierungs-Steuersignale und sendet die Aktivierungs-Steuersignale an den Komparator 106 und an die Zustandssteuerlogik 112b des Prüfer-CPU-Kerns 104.
-
Bei Schritt 416 sendet die Zustandssteuerlogik 112a des Haupt-CPU-Kerns 102 auf der Grundlage dessen, dass sie erkennt, dass es sich bei dem Start einer neuen Aufgabe um eine sichere Aufgabe handelt, ein Lesesignal an den Zustandspuffer 108, welches bewirkt, dass der gespeicherte CPU-Zustand in den Haupt-CPU-Kern 102 und in den Prüfer-CPU-Kern 104 geladen wird. Das Verfahren wird bei Schritt 418 fortgesetzt. Hinsichtlich der Ausführung der sicheren Aufgabe sind die Schritte 418 bis 426 mit den in 2 veranschaulichten Schritten 204 bis 212 identisch.
-
Viele Systeme verwenden ein Betriebssystem, um Aufgaben an spezifische Kern-Instanzen (das heißt spezifische CPU-Kerne) zu versenden. Wie weiter oben bereits erörtert, umfassen Ausführungsbeispiele der vorliegenden Erfindung das erneute Laden des gesamten oder einer Untermenge eines gespeicherten Zustands eines Haupt-CPU-Kerns beim Auftreten eines Trigger-Ereignisses, wie zum Beispiel eines Lockstep-Fehlers.
-
Ein weiteres erfindungsgemäßes Ausführungsbeispiel sieht das Umschalten des gesamten Kontexts eines CPU-Kerns vor. Der Kontext eines bestimmten CPU-Kerns kann mehr als nur den aktuellen, auf einer Aufgabe basierenden Zustand des CPU-Kerns umfassen und kann zum Beispiel einen oder mehrere Zustände eines Programmzählers, einer Registerdatei, eines Speicherschutzsystems und eines Zeitschutzsystems umfassen, wobei der Programmzähler, die Registerdatei, das Speicherschutzsystem und das Zeitschutzsystem alle mit dem Betrieb des bestimmten CPU-Kerns verbunden sind. In dieser Hinsicht kann der vollständige Kontext eines CPU-Kerns auch als Maschinenkontext bezeichnet werden.
-
Bei einem Ausführungsbeispiel kann es sich bei einem Trigger für das komplette Umschalten des Kontexts eines CPU-Kerns (das heißt das Umschalten des Maschinenkontexts) um ein Betriebssystemereignis handeln, und ein neuer vollständiger Kontext des CPU-Kerns (das heißt ein neuer Maschinenkontext) kann von dem Lockstep-System 100 geladen werden, um nicht nur den mit dem Ausführen einer bestimmten Aufgabe verbundenen Zustand des Haupt-CPU-Kerns (und den Zustand des Prüfer-CPU-Kerns) festzulegen (das heißt zu initialisieren), sondern auch die Zustände von allen Vorrichtungen und/oder Systemen, die mit dem Betrieb des Haupt-CPU-Kerns 102 verbunden sind. Der Schutzumfang der Erfindung umfasst jedoch die Verwendung jedes beliebigen Ereignisses als Trigger, wie zum Beispiel beispielhaft genannt ein Trigger, der auf den kollektiven Zuständen einer Vielzahl von Haupt-CPU-Kernen basiert (die zum Beispiel parallel laufen und entweder dieselbe Aufgabe, die auf unterschiedliche Daten angewendet wird, oder unterschiedliche Aufgaben desselben Programms ausführen) und einen oder mehrere vorbestimmte Werte oder Werte, die größer sind als ein oder mehrere vorbestimmte (oder programmierbare) Schwellenwerte, aufweist.
-
Somit kann die Implementierung eines Systems oder Verfahrens zum Umschalten eines Maschinenkontexts auf der Grundlage eines Trigger-Ereignisses die Lockstep-Kern-Verfügbarkeit erhöhen, indem die herkömmliche Implementierung einer vollständigen Schleife für die Versendung von Betriebssystemaufgaben vermieden wird. Im Gegensatz zu der herkömmlichen Implementierung kann eine Aufgabe mit einer weiteren Aufgabe verkettet sein, indem sie Maschinenkontextzustände speichert und das erneute Laden von Maschinenkontextzuständen vorsieht. Diese Vorgehensweise versetzt jeden gespeicherten Maschinenkontextzustand effektiv in die Lage, ein unabhängiger Software-Thread zu sein, bei dem ein Round-Robin-Zeitplaner auf Zeitbasis (oder jeglicher andere machbare Zeitplaner), so konfiguriert ist, dass er regelmäßig (oder unregelmäßig auf der Grundlage von Ereignissen) einen Maschinenkontextzustand (das heißt Thread) speichert und einen weiteren neuen (oder teilweise abgeschlossenen) Thread lädt.
-
5 ist ein Ablaufdiagramm von Verfahrensschritten 500 zum Erhöhen der Lockstep-Kern-Verfügbarkeit gemäß einem weiteren erfindungsgemäßen Ausführungsbeispiel. Die Schritte 501, 502 und 504 sind identisch mit den in 2 veranschaulichten Schritten 201, 202 und 204, mit der Ausnahme, dass bei Schritt 502 ein Maschinenkontextzustand (anstatt nur ein CPU-Zustand) in dem Zustandspuffer 108 gespeichert wird.
-
Wenn bei Schritt 506 der Komparator 106 während der Ausführung der Aufgabe bestimmt, dass die Ausgaben des Haupt-CPU-Kerns 102 und des Prüfer-CPU-Kerns 104 für jede der einen oder mehreren ausgeführten Anweisungen einer Aufgabe übereinstimmen und wenn kein Trigger-Ereignis zum Umschalten des Maschinenkontextzustands, der mit dem die Aufgabe ausführenden Haupt-CPU-Kern 102 verbunden ist, auftritt, dann enden die Aufgabe und das Verfahren bei Schritt 508, andernfalls wird das Verfahren bei Schritt 510 fortgesetzt.
-
Wenn bei Schritt 510 der Komparator 106 bestimmt, dass die Ausgaben des Haupt-CPU-Kerns 102 und des Prüfer-CPU-Kerns 104 für eine ausgeführte Anweisung vor dem Auftreten eines Maschinenkontextzustands-Trigger-Ereignisses nicht übereinstimmen, wird das Verfahren bei Schritt 512 fortgesetzt, andernfalls wird das Verfahren bei Schritt 514 fortgesetzt. Schritt 512 ist ähnlich den in 2 veranschaulichten Schritten 210 und 212. Bei Schritt 512 generiert der Komparator 106 Steuersignale, und die Zustandssteuerlogik 112a nutzt die Steuersignale, um zu bewirken, dass der gespeicherte CPU-Zustand (als eine Komponente des gespeicherten Maschinenkontextzustands) in den Haupt-CPU-Kern 102 und in den Prüfer-CPU-Kern 104 geladen wird, und das Verfahren wird bei Schritt 504 fortgesetzt.
-
Bei Schritt 514 ist vor einem Auftreten einer Nichtübereinstimmung bei dem Vergleich der Ausgaben des Haupt-CPU-Kerns 102 und des Prüfer-CPU-Kerns 104 notwendigerweise ein Maschinenkontextzustands-Trigger-Ereignis aufgetreten. Somit veranlasst das Maschineninhaltszustands-Trigger-Ereignis bei Schritt 514 die Zustandssteuerlogik 112a und 112b, die Ausführung der Anweisungen der aktuellen Aufgabe durch den Haupt-CPU-Kern 102 bzw. den Prüfer-CPU-Kern 104 anzuhalten. Die Zustandssteuerlogik 112a schreibt dann einen neuen, mit einer neuen Aufgabe verbundenen Maschinenkontextzustand aus einem zweiten Zustandspuffer (nicht gezeigt) in den Zustandspuffer 108 und lädt dann den neuen Maschinenkontextzustand aus dem Zustandspuffer 108 in die Lockstep-CPU-Kerne 102 und 104 und in eine oder mehrere der Vorrichtungen und/oder in ein oder mehrere der Systeme, die mit dem Betrieb des Haupt-CPU-Kerns 102 verbunden sind. Der zweite Zustandspuffer kann mit einem zweiten Haupt-CPU-Kern (nicht gezeigt) verbunden sein oder nicht. Bei Schritt 516 beginnen die Lockstep-Kerne 102 und 104 mit der Ausführung der neuen, mit dem neuen Maschinenkontextzustand verbundenen Aufgabe.
-
Da ein Berechnungssystem, in dem ein oder mehrere Lockstep-Systeme 100 eingebettet sind, mehr als einen CPU-Kern aufweisen kann, einschließlich zum Beispiel Haupt- und Sekundär-CPU-Kernen, sehen Ausführungsbeispiele der vorliegenden Erfindung, wie oben veranschaulicht, wenn bei dem Vergleich der Ausgaben der ersten Lockstep-CPU-Kerne beim Ausführen von Anweisungen einer Aufgabe ein Fehler auftritt, das erneute Laden eines mit einem ersten CPU-Kern der ersten Lockstep-CPU-Kerne verbundenen gespeicherten CPU-Zustands in einen zweiten CPU-Kern vor, der dann die Anweisungen der Aufgabe ausführt. Bei diesem Ausführungsbeispiel ermöglicht das Lockstep-System 100 die Übertragung von Aufgaben und das dynamische erneute Laden von Zuständen von CPU-Kernen von einem Kern in einen anderen. Die Fähigkeit, Aufgaben zu übertragen, sieht das Entfernen von Aufgaben aus nicht korrekt arbeitenden CPU-Kernen, das dynamische Aufteilen von CPU-Lasten zwischen den Kernen, das mehrfache Ausführen einer Aufgabe auf einem Kern (zum Beispiel zum Erkennen des Auftretens einzelner Ereignisse) und das Entfernen von Aufgaben aus einem oder mehreren Kernen in einem aus Kernen bestehenden Cluster vor, um Strom zu sparen, indem einer oder mehrere der Kerne in dem Cluster heruntergefahren werden oder ihre Leistung reduziert wird.
-
Während die Erfindung unter Bezugnahme auf bestimmte Ausführungsbeispiele beschrieben wurde, werden die Fachleute auf diesem Gebiet verstehen, dass verschiedene Änderungen daran vorgenommen werden können und Äquivalente als Ersatz verwendet werden können, ohne dass von dem Schutzumfang der vorliegenden Erfindung abgewichen wird. Obwohl zum Beispiel bei einem Ausführungsbeispiel die Zustandssteuerlogik für den Haupt-CPU-Kern so konfiguriert ist, dass sie auf der Grundlage eines Auftretens eines Trigger-Ereignisses während der Ausführung der einen oder mehreren Anweisungen durch den Haupt-CPU-Kern den Zustand des Haupt-CPU-Kerns in den Zustandspuffer schreibt, umfasst der Schutzumfang der vorliegenden Erfindung ein Ausführungsbeispiel, bei dem die Zustandssteuerlogik für den Prüfer-CPU-Kern so konfiguriert ist, dass sie auf der Grundlage eines Auftretens eines Trigger-Ereignisses während der Ausführung der einen oder mehreren Anweisungen durch den Haupt-CPU-Kern den Zustand entweder des Prüfer-CPU-Kerns oder des Haupt-CPU-Kerns in den Zustandspuffer schreibt, und ein Ausführungsbeispiel, bei dem sowohl die Zustandssteuerlogik für den Haupt-CPU-Kern als auch die Zustandssteuerlogik für den Prüfer-CPU-Kern so konfiguriert ist, dass sie auf der Grundlage eines Auftretens eines Trigger-Ereignisses während der Ausführung der einen oder mehreren Anweisungen entweder durch den Prüfer-CPU-Kern oder durch den Haupt-CPU-Kern den Zustand des Haupt-CPU-Kerns (oder den Zustand seiner jeweiligen Kerne) in den Zustandspuffer schreiben.
-
Zusätzlich können zahlreiche Modifizierungen vorgenommen werden, um eine bestimmte Situation oder ein bestimmtes Material an die Lehren der vorliegenden Erfindung anzupassen, ohne dass dabei von ihrem Schutzumfang abgewichen wird. Daher ist beabsichtigt, dass die vorliegende Erfindung nicht auf das bestimmte, offenbarte Ausführungsbeispiel beschränkt ist, sondern dass die vorliegende Erfindung alle Ausführungsbeispiele umfasst, die unter den Schutzumfang der angehängten Ansprüche fallen.