Inhaltsverzeichnis

Triple Modular Redundancy (TMR) & Integrity

Die Lyx-Sprachspezifikation (v0.9.0+) implementiert umfassende Mechanismen zur Triple Modular Redundancy (TMR), um die Anforderungen an die Fehlertoleranz in sicherheitskritischen Umgebungen (z. B. DO-178C DAL A) zu erfüllen. Ziel ist der Schutz gegen hardwarebedingte Bit-Flips (Single Event Upsets) durch Strahlung oder Speicherfehler.

1. Daten-Redundanz: @redundant

Globale Variablen können mit dem Attribut @redundant markiert werden. Dies veranlasst den Compiler, die Variable redundant im RAM zu verwalten.

Funktionsweise

Beispiel

@redundant
var thrust_vector: int64;

2. Code-Integrität: .meta_safe

Für den Schutz des ausführbaren Codes generiert Lyx bei Verwendung des @integrity-Pragmas auf Unit-Ebene eine spezielle ELF-Sektion namens .meta_safe.

Spezifikation der .meta_safe Sektion

Die Sektion ist 8232 Bytes groß und enthält drei identische CRC32-Hashes des Code-Segments:

Offset Feld Typ Beschreibung
0..15 code_va uint64 Start- und End-Virtual Address des Codes
16..23 params uint32 Modus (lockstep, scrubbed, ecc) und Intervall
32..35 hash_copy_1 uint32 CRC32 IEEE 802.3 des Codes
4128..4131 hash_copy_2 uint32 Identische Kopie 2 (nach 4096B Padding)
8224..8227 hash_copy_3 uint32 Identische Kopie 3 (nach weiteren 4096B Padding)

Das 4096-Byte-Padding stellt sicher, dass ein lokaler Hardwaredefekt (z.B. eine defekte Speicherzeile) nicht mehrere Hashes gleichzeitig korrumpieren kann.

3. Laufzeit-Prüfung: VerifyIntegrity()

Das Builtin VerifyIntegrity() dient der aktiven Überprüfung der Programm-Integrität zur Laufzeit.

4. Zusammenfassung der Modi

Das Attribut @integrity unterstützt verschiedene Modi für das Integritäts-Management:

Modus Beschreibung
software_lockstep Redundante Ausführung mit Ergebnisvergleich.
scrubbed Periodischer Hintergrund-CRC-Memory-Sweep (Intervall empfohlen).
hardware_ecc Vertrauen auf Hardware-ECC-Speicherkorrektur.

Dokumentation basierend auf Lyx Sprachspezifikation v0.9.0 (Aerospace-Todo P0/P2)