Doppelte Redundanz für den Saturn V LVDC-Computerspeicher, wie wurden Meinungsverschiedenheiten gelöst?

In dem Video „Smarter Every Day“ How did NASA Steer the Saturn V? – Smarter Every Day 223 spricht Destin mit Luke Talley über die Speichermodule, die im LVDC-Computer Saturn V verwendet werden.

Dieser Computer steuert das gesamte Timing; Motor starten, Motor stoppen, Feuertrennung, Retro-Raketen abfeuern, all diese Sachen.

Es macht Navigation und Führung. Sie haben im Speicher ein Profil gespeichert; zu diesem Zeitpunkt muss ich hier so schnell in diese Richtung gehen[…]

Wenn nun der Saturn fliegt, führen diese beiden Speicher dasselbe Flugprogramm aus, und sie vergleichen die Ausgaben, um sicherzustellen, dass sie dieselbe Antwort erhalten.

Wenn sie nicht die gleiche Antwort erhalten, gehen Sie in eine Unterroutine und sagen Sie: „An diesem Punkt im Flug habe ich diese beiden Zahlen, was am sinnvollsten ist, sie weiter zu verwenden, verwenden Sie diese Zahl, um weiterzumachen.

Frage: Mit dreifacher Redundanz können Sie (hoffentlich) ein Ergebnis verwerfen, wenn es mit den anderen beiden nicht übereinstimmt. Welche Technik wurde jedoch verwendet, um potenzielle Meinungsverschiedenheiten zwischen Daten zu lösen, die von den beiden in LVDC-Systemen verwendeten redundanten Speichermodulen zurückgegeben wurden? Woher wissen Sie, "... was am sinnvollsten ist, es weiter zu verwenden ..."?

Update: Dieser Link von @OrganicMarble ist hilfreich und erklärt, dass die IBM-Architektur zwei Modi bereitstellt, genannt SIMPLEX und DUPLEX. Nur in einem Modus war der Speicher redundant (das Thema meiner Frage), aber es scheint, dass dieser Modus während des Fluges nicht verwendet wurde. Trotzdem frage ich nach dem von IBM entworfenen Modus, in dem die beiden Speichereinheiten doppelt redundant verwendet werden.


Verwandte: Ist dies wirklich nur der Saturn V-Computer oder gibt es hier auch andere Systeme?

Smarter Every Day Saturn V LVDC-Speicher Smarter Every Day Saturn V LVDC-Speicher

Talley sagt ganz klar, dass der Speicher doppelt redundant war, die Verarbeitung dreifach redundant. Wenn eine Einheit auf einen Paritätsfehler stößt, verwenden Sie für den Speicher unter der Annahme eines Paritätsbits die andere und schreiben Sie das gute Wort zurück an die Stelle, an der der Fehler aufgetreten ist, um ihn zu korrigieren. Für die Verarbeitung wäre dreifach redundant 2 von 3 Abstimmungen. Was die Speichersituation betrifft, so traten Einzelbitfehler wahrscheinlich selten auf, Doppelbitfehler (im selben Wort) oder Einzelbitfehler im selben Wort in beiden Einheiten waren wahrscheinlich so unwahrscheinlich, dass weiterer Schutz die Kosten/den Aufwand nicht wert gewesen wäre. Massenbudget.
@uhoh: Ich weiß nicht, ob Sie über Antwortänderungen in SE benachrichtigt werden, aber meine Antwort befasst sich jetzt mit der ganzen Paritätssache, nachdem ich einiges gelesen habe.
@tfb danke für den Ping, nein, es scheint, dass Änderungen an vorhandenen Antworten keine Flags für das OP generieren, also hätte ich es ohne Ihren Kommentar nicht gewusst. Es ist jetzt eine ziemliche Antwort, wow!

Antworten (1)

Diese Antwort ist eine Vermutung, die auf der technischen Mitteilung D-5869 der NASA basiert : Beschreibung und Leistung des Navigations-, Leit- und Steuerungssystems der Saturn-Trägerrakete (im Folgenden als „D-5869“ bezeichnet), sowie auf den Seiten des digitalen Computers der Trägerrakete (im Folgenden als „D-5869“ bezeichnet). als „LVDC“ unten) und schließlich die Beschreibung im Video in der Frage (im Folgenden als „das Video“ bezeichnet).

Dies ist eine stark modifizierte Bearbeitung einer früheren Version von sich selbst: Ich habe überlegt, eine neue Antwort hinzuzufügen, aber ich habe entschieden, dass die alte nicht interessant genug ist, um sie zu behalten.

Zusammenfassend sieht es so aus, als ob mindestens vier Techniken verwendet wurden, von denen mindestens zwei auf das Speichersystem zutreffen.

Das System

Zunächst einmal war der Computer selbst (einschließlich Register & c, aber ohne Hauptspeicher) dreifach redundant, sodass er durch Abstimmung interne Fehler erkennen konnte.

Es ist nicht so, dass jede der drei Kopien des Computers ihren eigenen Hauptspeicher hatte: Es gab nur einen Teil des Hauptspeichers, den sie alle lasen (oder der einmal gelesen und die Daten dann an alle drei Kopien von allem gesendet wurden) .

Das Hauptspeichersystem war kern- und so beschreibbar und bestand aus einer Reihe von Modulen, von denen jedes 4096 28-Bit-Wörter bestand, die in zwei 14-Bit-Silben unterteilt waren (das liegt daran, dass Sie zwei Anweisungen pro Wort unterbringen konnten). Core zu sein bedeutete, dass man Programme viel später patchen konnte, aber es bedeutete auch, dass es weniger zuverlässig war als der nicht beschreibbare Speicher in der AGC. Sie konnten den Speicher im Simplex-Modus oder im Duplex-Modus verwenden, wo es zwei Kopien von allem gab.

Die LVDC-Seiten behaupten, dass die zum Ausführen des Saturn verwendete Konfiguration im Simplex-Modus lief. Es gibt jedoch eindeutig einige Verwirrung:

Für das AS-206RAM LVDC-Flugprogramm war ein Simplex-Modell erforderlich

Und

Ein Rätsel, das ich jedoch nicht verstehe, ist die Frage der SIMPLEX- vs. DUPLEX-Speicherkonfigurationen. Denken Sie daran, dass es zwei mögliche Speicherkonfigurationen gibt, "SIMPLEX" und "DUPLEX". Im DUPLEX-Modus wird die Hälfte des Speichers verwendet, um die andere Hälfte genau zu spiegeln, sodass, obwohl die gleiche Anzahl von Speichermodulen in einem wie im anderen verfügbar sein kann, der Software im DUPLEX-Modus tatsächlich nur halb so viel Speicher zur Verfügung steht wie im SIMPLEX-Modus. Die zwei Silben jedes gegebenen Speicherwortes sind im Allgemeinen nicht identisch, was eine SIMPLEX-Konfiguration impliziert. Andererseits haben wir in den oben decodierten HOP-Konstanten ausnahmslos festgestellt, dass die DUPIN- und DUPDN-Bits 1 sind, was den DUPLEX-Modus impliziert. Offensichtlich bin ich verwirrt über die Funktion der DUPIN- und DUPDN-Flags.

(Beide Zitate von LVDC-Seiten.)

Wir haben auch Beweise aus dem Video, dass das Programm im Duplex-Modus lief.

Ich denke auch, dass wir stark davon ausgehen können, dass sie es im Duplexmodus ausgeführt hätten, wenn sie es hätten tun können: Warum würden Sie nicht etwas tun, das das System zuverlässiger macht und nichts kostet, wenn das Programm klein genug ist?

Ich glaube, dass die LVDC-Verwirrung gelöst werden kann, indem angenommen wird, dass das Duplexing auf Wortebene und nicht auf Silbenebene erfolgte: Wenn das System duplexiert wurde, gibt es zwei Kopien jedes Wortes, die auf zwei verschiedene Module verteilt sind, nicht zwei Kopien jeder Silbe in einem einzigen Wort. Allerdings bin ich mir nicht sicher, ob das richtig ist.

Im Folgenden gehe ich davon aus, dass das Programm im Duplexmodus lief, oder allgemeiner, dass Programme dies tun könnten , und beantworte die Frage, wie sie dadurch redundanter würden.

Die Mechanismen der Fehlererkennung

Es scheint mindestens vier davon gegeben zu haben, von denen nicht alle auf das Gedächtnis zutreffen.

Erstens war der Computer selbst, abgesehen vom Hauptspeicher , dreifach redundant und hatte eine Art 2-von-3-Abstimmungssystem. Auf die Zuverlässigkeit des Speichers hat dies keinen Einfluss, da der Hauptspeicher nicht dreifach redundant war. D-5869 spricht ausführlich darüber und gibt Zahlen darüber an, wie sehr dies die Zuverlässigkeit zu einem Preis von 3,4 in der Anzahl der Komponenten verbessert (3 für jede Kopie, 0,4 für die Vergleichsschaltung): (3R - 2R 2 ) N wobei R die ist Zuverlässigkeit eines Moduls und N die Anzahl der Module im Computer.

Zweitens gab es eindeutig Plausibilitätsprüfungen für Daten: D-5869 spricht über die Erkennung festsitzender Werte von Beschleunigungsmessern usw. Eine frühere Version dieser Antwort ging davon aus, dass diese Technik für Speicherprüfungen verwendet werden könnte, da ein Einzelbitfehler wahrscheinlich eine offensichtlich verrückte Antwort liefert). Ich denke, dass dies tatsächlich nicht der Fall ist, da das Programm aus dem Speicher lief (dh es gab kein ROM in dieser Maschine, wie es in der AGC war) und Anweisungen und Speicheradressen nicht die Art von Kontinuitätsbedingungen haben die Daten von physikalischen Systemen haben.

Drittens gab es Parität im Speichersystem. Jede 14-Bit-Silbe hatte ein Paritätsbit, also hatte ein 28-Bit-Wort zwei Paritätsbits. Dies bedeutet, dass jeder Einzelbitfehler in einer Silbe erkannt werden kann und mehr als die Hälfte (14/27) Zwei-Bit-Wortfehler erkannt werden können. Es können keine Fehler korrigiert werden: Es gibt kein ECC (ich bin mir nicht sicher, ob bis dahin ECC-Techniken für Speicher verwendet wurden).

Viertens lief das Programm nach Annahme im Duplexmodus, wobei jedes Wort über zwei (vielleicht vier mit jeweils einer Silbe) Speichermodule dupliziert wurde.

Wie Duplexing die Zuverlässigkeit verbessert

Und jetzt können wir die Frage beantworten. Der Einfachheit halber stelle ich es mir so vor, als gäbe es ein einzelnes Paritätsbit: Im wirklichen Leben können wir beim Duplexing auf Wortebene mehr erreichen.

Ich nenne die beiden Hälften des Speichers L und R, und hier ist eine Tabelle der schlechten Fälle (als vorformatierter Text, weil Stack Exchange). Die Spaltenüberschriften sind

  • LE: Fehler in L
  • LP: Parität erkennt Fehler in L;
  • RE: Fehler in R;
  • RP: Parität erkennt Fehler in R;
  • EB: Anzahl der Bits, die umgedreht werden müssen
    • n bedeutet genau n,
    • n+ bedeutet n oder mehr,
    • n+? bedeutet n und einige Kombinationen von mehr als n
  • Ergebnis: das Ergebnis
    • OK bedeutet, kann mit einem Kommentar fortfahren, welche Seite verwendet werden soll,
    • Panik bedeutet, dass ein Fehler erkannt wird, aber wir können von hier aus nicht weitermachen, es sei denn, wir wissen, wie wir die Daten irgendwie auf Plausibilität überprüfen können.
    • schlecht bedeutet ein unentdeckter Fehler.
LE  LP  RE  RP  EB  result
N   N   N   N   0   OK (either)
Y   Y   N   N   1+? OK (use R)
Y   N   N   N   2+  panic (R is right but we can’t know it is)
N   N   Y   Y   1+? OK (use L)
Y   Y   Y   Y   2+? panic (both sides in error)
Y   N   Y   Y   3+  bad (undetected >= 2-bit error in L)
N   N   Y   N   2+  panic (L is right, but we can’t know it is)
Y   Y   Y   N   3+  bad (undetected >= 2-bit error in R)
Y   N   Y   N   4+  if equal then bad (two identical undetected >= 2-bit errors)
                    if not equal then panic (we know there are errors
                    but not what they are)

Beachten Sie, dass:

  • alle Einzelbitfehler werden behoben;
  • alle Fehler mit 2 Bits werden entweder behoben oder verursachen eine Panik;
  • kein Fehler von weniger als 3 Bit bleibt unentdeckt.

während im Simplex- Modus:

  • alle Einzelbitfehler verursachen eine Panik;
  • Einige 2-Bit-Fehler bleiben unentdeckt.

Bei vorhandener Parität verbessert Duplexing also die Zuverlässigkeit erheblich. Ich habe nicht versucht, zu berechnen, wie wahrscheinlich die verschiedenen Möglichkeiten sind: Ich bin mir jedoch sicher, dass die NASA dies getan hat!


Eine kontrafaktische Möglichkeit: ECC

Eine Sache, die sie hätten tun können, ist, ECC im Speicher zu verwenden. Dies hätte die gleiche Zuverlässigkeit wie Duplexing erreicht. Aber:

  • es bietet keinen Schutz gegen den umfassenden physischen Ausfall eines Moduls, wie es Duplexing tut;
  • es erfordert eine komplexere Logik, denke ich;
  • Es war möglicherweise nur nicht bekannt, wann diese Maschine entworfen wurde.
Tolle Analyse!
Wow!! Vielen Dank, dass Sie sich die Zeit genommen haben, eine so gründliche und durchdachte Antwort zu schreiben! Ich werde etwas Zeit und Kaffee brauchen, um das durchzustehen ;-)
Ich würde die Verwendung von doppelten Speichern in Kombination mit der Verwendung von Parität zur automatischen Auswahl, welcher Kopie zu glauben ist, als eine Form von ECC betrachten, die 114% Overhead hat. Ziemlich hoch, aber die Fähigkeit zur Wiederherstellung nach bestimmten Systemausfällen sowie Einzelbitfehlern würde einen erheblichen Mehrwert bringen.
@supercat: Nun, ich denke, „ECC“ hat möglicherweise eine restriktive technische Bedeutung, die ausschließt, was sie getan haben, aber ja, ich stimme zu, insbesondere angesichts der Fähigkeit, sich von einem groß angelegten Ausfall (z. B. einem Ausfall eines ganzen Speichermoduls) zu erholen herkömmliche ECC bekommt man nicht hin.