Hallo Christian,
So OT bezogen auf SOUP ist es gar nicht!
SOUP ist ja nur die halbe Wahrheit. Wenn, wie schon geschrieben wurde, i++ kein atomarer CPU-Befehl ist, kann sich die Software ganz anders verhalten.
Bei Fly by Wire verwendet man 3 Rechner, weil man mit 3 Rechnern eine Majoritäts-Entscheidung treffen kann. Bzw. diese Steuern dann 3 Aktoren, von denen jeder alleine die nötige Kraft aufbringen kann. Spinnt ein Rechner kompensieren sich die Kräfte von 2 Aktoren zu Null.
Zudem werden die 3 Rechner mit 3 komplett unterschiedlichen CPUs von 3 getrennten Teams entwickelt. Würde man 3 gleiche CPUs verwenden könnte man zwar Hardware-Defekte erkennen, aber wenn die CPU einen grundsätzlichen Fehler hat, sind sich die 3 CPUs einig. Wir hatten das Problem bei den ersten 80386er. Da gab es einen Temperaturabhängigen Rechenfehler in der 32-Bit Addition. Allerdings gab es zur damaligen Zeit noch kein 32-Bit DOS, sodass der Fehler bei normalen Anwendungen nicht aufgefallen ist.
Die selbe CPU von unterschiedlichen Herstellern bringt auch nichts, da meistens das Secondsource die selben Masken wie das Original verwendet.
Mit den 2 Teams, welche auch unabhängig die Software entwickeln, versucht man gleiche Denkfehler in der Software auszuschliessen.
Aber noch ein paar Softwarefehler, welche sich nicht auf SOUP beziehen:
Die Erste Ariane-5 ist wegen einem Softwarefehler abgestürzt.
Die Software wurde von der Ariane-4 übernommen wo sie 113 mal problemlos funktioniert hat.
Das Problem waren die grösseren Kräfte der Ariane-5 wodurch es zu einem Überlauf bei den Berechnungen gekommen ist.
Es wurde einfach vergessen, die Software mit den neuen Parameter-Bereichen zu testen!
Ein ähnliches Problem gab es bei den Patriot-Luftabwehrraketen.
Hier wurde die Zeit in 10tel Sekunden in einem 24-Bit Integer-Register erfasst. Für weitere Berechnungen wurde dieser Interger in einen FP-Wert konvertiert und mit 1/10 multipliziert um ganze Sekunden zu erhalten. Nun ist aber 1/10 binär ein nicht abrechender Bruch.
Nach 100 Stunden nach den Booten betrug die Abweichung der Zeit dann 0.34 Sekunden. Zudem kommt es nach etwa 19 tagen zu einem Überlauf.
Die Scud-Raketen fliegen mit knapp 1'700m/s, sodass die Patriot bei 0.34s Abweichung über 500m daneben lag.
Bei den Tests wurde das Patriot-System immer nur kurz vor dem Test gebootet.
Die ersten F-16 stellten sich wegen eines Vorzeichenfehlers auf den Kopf, wenn sie den Äquators überflogen.
So Ende der 70er Jahre hat die Kienzle Lohnbuchhaltung Minusstunden nicht vom Lohn abgezogen, sondern zusätzlich gut geschrieben. Auch ein Vorzeichenfehler.
MfG Peter(TOO)
Lesezeichen