Software Lockstep
Software Lockstep ist ein redundanter Ausführungsmodus in Lyx (v0.9.0+), der primär für Funktionen mit dem höchsten Sicherheitskritikalitätslevel (DAL A) eingesetzt wird. Er dient dazu, Rechenfehler (z. B. durch kurzzeitige Prozessorstörungen) zu erkennen, indem derselbe Pfad mehrfach abgearbeitet und die Ergebnisse verglichen werden.
1. Aktivierung via @integrity
Der Lockstep-Modus wird über das Integritäts-Pragma auf Funktionsebene oder Unit-Ebene aktiviert.
@dal(A)
@integrity(mode: software_lockstep, interval: 50)
fn calculate_flight_path(): int64 {
// Kritische Berechnungen
return result;
}
- mode: software_lockstep: Weist den Compiler an, Redundanz-Checks in den Funktionsablauf einzubauen.
- interval: Definiert das Prüfintervall in Millisekunden (hier 50 ms).
2. Funktionsweise im Compiler-Backend
Im Gegensatz zu Hardware-Lockstep (wo zwei CPU-Kerne synchron dasselbe tun) implementiert Lyx dies auf Software-Ebene (Instruction-Level Redundancy):
Replikation der Instruktionen
- Redundante Berechnung: Der Compiler dupliziert kritische Registeroperationen.
- Vergleich (Check): Vor einem
returnoder einer dauerhaften Speicherung im RAM (Side-Effect) werden die Ergebnisse der primären und der redundanten Berechnung verglichen. - Abweichung: Stimmen die Ergebnisse nicht überein, wird sofort ein Sicherheits-
panicausgelöst, um die Korruption von Systemzuständen zu verhindern.
3. Semantik und Einschränkungen
- Verbot für externe Funktionen:
software_lockstepist aufextern fnnicht erlaubt, da der Compiler keinen Zugriff auf den fremden Binärcode hat, um ihn zu replizieren. - Performance-Impact: Durch die Verdopplung der Operationen sinkt die Performance; dies muss bei der WCET-Analyse (
@wcet) berücksichtigt werden. - Kombination: Lockstep lässt sich ideal mit
@redundantVariablen kombinieren, um sowohl die Berechnung (CPU) als auch die Speicherung (RAM) abzusichern.
4. Vergleich der Integritäts-Modi
| Modus | Schutzfokus | Hardware-Anforderung |
|---|---|---|
| Software Lockstep | Rechenoperationen (ALU/FPU) | Keine (rein Software-basiert) |
| Scrubbed | Speicherintegrität (Code-Segment) | Minimale (CRC-Unterstützung) |
| Hardware ECC | Speicherintegrität (RAM) | Spezielle ECC-Module |
Referenz: Lyx v0.9.0 Aerospace-Todo P0 #43/#44 – Integritäts-Management.
