Welche Baustein-internen Datenbus-Architekturen eignen sich für sichere Multicore-Prozessoren?
Im Lockstep-Betrieb werden die Daten/Instruktions-Transfers jeweils über ein für jeden Core eigenes Bussystem geführt. Dabei laufen die Daten zunächst über eine sogenannte Crossbar Switch, die es ermöglicht, dass mehrere Master (z.B. CPU, DMA) gleichzeitig auf verschiedene Slaves zugreifen können. Die Crossbar Switch sorgt hier also im Wesentlichen für besseren Datentransfer. Anschließend folgt eine Memory Protection Unit, die es ermöglicht, Speicherbereiche mit Zugriffsrechten zu versehen. Zusätzlich zu der für beide Cores doppelt ausgeführten Busstruktur verfügen beide Cores über eine Harvard-Architektur, so dass jeweils Instruktionen und Daten gleichzeitig über einen separaten Bus geführt werden können.
Welche Vor- und Nachteile hat es, in ein und demselben Prozessor zwei Cores komplett dupliziert mitsamt den zugehörigen Komponenten unterzubringen (wie im MPC5643L von Freescale), um einen Vorgang zweifach redundant ablaufen zu lassen?
Der Dualcore Lockstep Mode ermöglicht wie gesagt eine hohe »Hardware-Diagnostic-Coverage«, die jedoch durch Einbußen bei der Performance erkauft wird. Weil auf beiden Cores die identische Software läuft, nutzt man praktisch nur die Hälfte der zur Verfügung stehenden Performance.
Ein klarer Vorteil liegt sicherlich darin, dass kein zweiter Mikrocontroller im System erforderlich ist, mit dem über jeweils externe Schnittstellen Daten ausgetauscht werden müssten. Dies vereinfacht sowohl die Hardware (weniger Komponenten) als auch die Software des Systems. Durch die geringere Anzahl von Komponenten eignet sich eine solche Single-Chip-Lösung letztlich auch besser für Systeme, bei denen nur wenig Platz für elektronische Komponenten zur Verfügung steht.
Auf welche Weise wird innerhalb und außerhalb des Prozessors festgestellt, ob die beiden gleichen Vorgänge exakt parallel ablaufen und die Ergebnisse identisch sind?
Innerhalb des Prozessors wird mittels der RCCUs (Redundancy Control Checker Units) überprüft, ob die Ergebnisse identisch sind. Die erste Überprüfung erfolgt direkt nach der Ausführung der Instruktionen der beiden CPUs. Weitere Überprüfungen finden nach dem Durchlaufen der doppelt ausgeführten Busse und I/O-Brücken statt. Wird der Prozessor im Lockstep-Mode betrieben, sind die RCCUs automatisch aktiv und lassen sich auch nicht abschalten.
Nach außen wird ein von den RCCUs erkannter Fehler mittels der FCCU aufgezeichnet und angezeigt.
Können in den beiden Cores des Bausteins MPC5643L auch unterschiedliche Prozesse ablaufen? Wenn ja: Wie kann der Anwender festlegen, ob in den beiden Cores derselbe Vorgang redundant ablaufen soll oder unterschiedliche Vorgänge ablaufen sollen?
Für Systeme, die nur einen geringen Anteil an sicherheitsrelevanter Software benötigen, kann es sinnvoll sein, den MPC5643L im Decoupled Parallel Mode (DP-Mode) zu betreiben. Weil in jedem Core unterschiedliche Software laufen kann, steht gegenüber dem Lockstep Mode praktisch die doppelte Performance zur Verfügung.
Beim DP-Mode sind die Redundancy Checker deaktiviert, weil in den beiden Cores unterschiedliche Software läuft und ein Test auf identische Ergebnisse folglich keinen Sinn hat. Ferner sind die im Lockstep Mode gedoppelten Komponenten wie Busse, DMA und I/O-Bridge nur noch »einfach« verfügbar, so dass es zu Single Points of Failure kommt. Um dennoch eine hohe »Diagnostic Coverage« zu erreichen, muss im DP-Mode zusätzlicher Software-Aufwand betrieben werden, was natürlich den Performance-Gewinn wieder etwas reduziert.
Die Entscheidung, ob der Prozessor im Lockstep- oder im DP-Mode startet, wird auf Grund des Zustands eines Bits im sogenannten Shadow Flash getroffen. Der Default-Zustand startet den Prozessor im Lockstep Mode. Um im DP-Mode zu starten, muss das Shadow Flash also umprogrammiert werden. Der während der Reset-Sequenz festgestellte Mode wird dann bis zum nächsten Reset beibehalten. Dies stellt sicher, dass der Mode nicht während des normalen Betriebs geändert werden kann.
Halle 6, Stand 208