====== 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 ''return'' oder 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-''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.