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

  1. Redundante Berechnung: Der Compiler dupliziert kritische Registeroperationen.
  2. Vergleich (Check): Vor einem return oder einer dauerhaften Speicherung im RAM (Side-Effect) werden die Ergebnisse der primären und der redundanten Berechnung verglichen.
  3. Abweichung: Stimmen die Ergebnisse nicht überein, wird sofort ein Sicherheits-panic ausgelöst, um die Korruption von Systemzuständen zu verhindern.

3. Semantik und Einschränkungen

  • Verbot für externe Funktionen: software_lockstep ist auf extern fn nicht 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 @redundant Variablen 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.