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?
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.
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.
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.
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 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:
während im Simplex- Modus:
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 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:
Anton X
Benutzer21103
äh
äh