Apollo Guidance Computer - Architektur und Systemsoftware. Teil 2

Link zu Teil 1

In diesem Teil werden wir uns ansehen, wie die AGC aus der Sicht eines Programmierers organisiert ist. Die Liste der Referenzen und Quellen finden Sie am Ende des ersten Teils des Artikels. Das Material dieses Teils basiert auf dem Material des Buches [1].



Darstellung von Zahlen im Gedächtnis von AGC


AGC verwendet 15-Bit-Wörter mit einem Zeichen an 15. Stelle. Es gibt auch eine Paritätsentladung, die von der Hardware aufgezeichnet und gesteuert wird und für die Software bei jedem Lese- und Schreibvorgang in den Speicher vollständig transparent ist.



Ganzzahlen werden im Format "Addition 1" dargestellt. Es ist wie folgt:

Nicht negative Zahlen von 0 bis 16383 werden in Form von Codes von 000 000 000 000 000 bis 011 111 111 111 111 dargestellt.

Negative Zahlen werden durch Invertieren positiver Zahlen gebildet, d.h. -1 wird als 111 111 111 111 111 und bis zu -16383 durch den Binärcode 100.000.000.000.000 dargestellt.

Arithmetische Operationen werden wie folgt ausgeführt:

2: 000 000 000 000 010 -5: 111 111 111 111 010 111 111 111 111 100 (= -3) 

Das Hinzufügen von zwei negativen Zahlen ist etwas komplizierter.

Wenn wir nach den üblichen Regeln hinzufügen, funktioniert nichts:

 -2: 111 111 111 111 101 -5: 111 111 111 111 010 111 111 111 110 111 (= -8) 

Möglicherweise stellen Sie jedoch fest, dass das Hinzufügen der höchstwertigen Bits ein Übertragsbit erzeugt. Wir müssen nur das Übertragsbit hinzufügen, um das richtige Ergebnis zu erhalten:

 -2: 111 111 111 111 101 -5: 111 111 111 111 010 111 111 111 110 111 (= -8) Carry 1 111 111 111 111 000 (= -7) 

Sie können auch feststellen, dass in diesem System eine positive und eine negative Null möglich sind, was den Programmierern zusätzliche Schwierigkeiten bereitet, beispielsweise beim Vergleich des Ergebnisses einer Operation mit Null.

Der Batterieüberlauf während arithmetischer Operationen kann ebenfalls überwacht werden, was nachstehend erläutert wird.

ACG unterstützt nur Ganzzahlarithmetik und kann keine Operationen mit reellen Zahlen in der Hardware ausführen, sondern in der Software. Die AGC verwendet eine binär-dezimale Darstellung von 28-Bit-Zahlen (9 Dezimalstellen), die zwei Speicherzellen mit jeweils 14 Bit belegt. Vorzeichen werden ebenfalls verwendet, und das niedrige und das hohe Wort können ein anderes Vorzeichen haben! Das heißt, es kann eine Zahl geben, die beispielsweise als +5 * 10000 + -5 * 100 = 49500 dargestellt wird. Seltsam, aber möglich.

Entfernungen und Geschwindigkeiten für Berechnungen werden im metrischen System dargestellt, die Daten für die Besatzung werden jedoch im englischen Maßsystem (Fuß usw.) angezeigt.


Anweisungsformat

Speichermodell


Im vorherigen Teil wurde bereits erwähnt, dass der Computerspeicher in 2 Kslov RAM und 36 K Wörter ROM unterteilt ist. Da der Befehl nur 12 Bit für den Adresswert benötigt, wird das Prinzip der Speicheraufteilung in Bänke verwendet. Ein spezielles Register zeigt die aktuelle Bank an.

Um zu einer neuen Speicherbank zu wechseln, wird der Befehl „In neue Bank übertragen“ (TNB) verwendet, der Folgendes ausführt:

  • Kopiert das aktuelle Bankregister ("Bank") in das Register "Gespeicherte Bank"
  • Kopiert eine 12-Bit-Adresse vom Speicherort nach dem TNB-Befehl in das Register „Return Address“
  • Wir laden die neue Bankadresse in das Bankregister und laden den durch den TNB-Befehl angegebenen Offset in den Befehlszähler.

Register


AGC hat Register, die dem Adressraum zugeordnet sind. Sie belegen die ersten 48 Wörter des physischen Gedächtnisses.

Batterie belegt Adresse 0 8 .

Die Batterie wird in den meisten arithmetischen und logischen Operationen (ODER, UND usw.) verwendet. Obwohl die AGC mit 15-Bit-Wörtern arbeitet, hat die Batterie eine Kapazität von 16 Bit, da sie eine Überlaufentladung speichert. Wenn Daten in die Batterie geladen werden, fallen sie in die unteren Bits, wobei Bit 14 das Vorzeichen der Nummer enthält. Wenn nach dem Ausführen der arithmetischen Operation kein Überlauf aufgetreten ist, enthält Bit 15 einfach eine Kopie des Vorzeichens, und dieses Bit ist für den Programmierer unsichtbar. Wir nennen diese Vorzeichen Ziffern S1 bzw. S2. Wenn ein Überlauf auftritt, sind S1 und S2 nicht gleich. Obwohl das S2-Bit für den Programmierer unsichtbar bleibt, gibt es in AGC bis zu zwei Möglichkeiten, den Überlaufzustand einzustellen.

Erstens werden Interrupts bei einem Überlauf automatisch deaktiviert. Ein Interrupt-Handler könnte, wenn er in diesem Moment auftritt, dieses Bit zurücksetzen, was sehr unerwünscht wäre. Interrupts sind nur zulässig, wenn das Überlaufflag gelöscht ist. Das Flag wird nur zurückgesetzt, wenn die Batterie gereinigt wird oder wenn ein neuer Wert geladen wird. Um das Überlauf-Flag zu überprüfen, kann der Befehl Transfer to Storage (TS) verwendet werden, der den Batteriewert nur dann im Speicher speichert, wenn kein Überlauf aufgetreten ist. Wenn ein Überlauf nach oben oder unten aufgetreten ist, wird der Wert in der Batterie durch +1 oder -1 ersetzt entsprechend. Der TS-Befehl überspringt auch die nächste Programmanweisung, falls ein Überlauf aufgetreten ist. Es wird angenommen, dass der Programmierer den Code schreibt, der den Überlauf verarbeitet, und ihn über einen Befehl vom TS platziert und unmittelbar nach dem TS einen Sprung zum Befehl nach dem Überlauf-Handler einfügt.

Register L - Adresse 00001 8

Das L-Register wird auch als "Akkumulator niedriger Ordnung" bezeichnet und soll den Zahlenbereich erweitern, mit dem Operationen ausgeführt werden. Es kann auch zur temporären Speicherung von Variablen verwendet werden.

Register Q - Adresse 00002 8

Register Q soll die Absenderadresse speichern. Das Register Q enthält eine 12-Bit-Adresse, die zusammen mit der aktuellen Speicherbank die vollständige Rücksprungadresse des Unterprogramms angibt.

EBANK-Register (Erasable Storage Bank) - Adresse 00003 8

RAM (in der AGC auch als "löschbarer Speicher" bezeichnet) enthält 2048 Wörter, die in 8 Bänke mit jeweils 256 Wörtern unterteilt sind. Die Adresse der RAM-Bank beträgt 3 Bit und ist im EBANK-Register enthalten.

Register FBAN K (Fixed Storage Bank) - Adresse 00004 8

ROM hat Banken mit 1024 Wörtern und enthält 36 Banken. Das FBANK-Register hat 5 Bits und ermöglicht die Adressierung von 32 Banken.

Festes Erweiterungsbit (Superbankbit)

Wird verwendet, um das letzte 4Kslov-ROM zu adressieren.

BBANK-Register ( Register beider Banken) - Adresse 00006 8

Bei der Übertragung der Steuerung auf ein anderes Programm müssen sowohl das FBANK- als auch das EBANK-Register gleichzeitig geändert werden. Das BBANK-Register enthält beide Adressen - Banknummern von RAM und ROM. Durch das Schreiben werden die Register FBANK und EBANK automatisch aktualisiert.

Register Z (Der Programmzähler) - 00005 8

Register Z ist der Programmzähler, dh es bestimmt die Adresse des aktuell ausgeführten Befehls. Es hat eine Kapazität von 12 Bit.

Nullregister (Eine Quelle von Nullen) - Adresse 00007 8

Enthält die Konstante 0.

Interrupt-Handler-Register - Adresse 00008 8 - 00012 8

Die Register ZRUPT, BRUPT, ARUPT, LRUPT, QRUPT und BANKRUPT befinden sich jeweils an diesen Adressen.

Register ZRUPT und BRUPT - speichern automatisch den Inhalt des Registers Z (Befehlszähler) und des Registers B (internes Register, das die Adresse des Befehls enthält, der als nächstes ausgeführt wird).

Die Register ARUPT, LRUPT, QRUPT und BANKRUPT dienen zum Speichern der Batterie und der Register L, Q und BB. Diese Register müssen manuell gespeichert und manuell wiederhergestellt werden, bis die RESUME-Anweisung ausgeführt wird, die zur Rückkehr vom Interrupt dient.

Während der Interrupt-Verarbeitung deaktiviert die AGC Interrupts, bis die RESUME-Anweisung ausgeführt wird. Somit kann der Interrupt-Handler allein nicht unterbrochen werden.

Früher wurde erwähnt, dass die Batterie eine Kapazität von 16 Bit hat und das höchstwertige Bit zur Erkennung eines Überlaufs verwendet wird und nicht programmgesteuert verfügbar ist. Das ARUPT-Register, in dem die Batterie während der Unterbrechung gespeichert ist, verfügt jedoch über 15 Bit. Jedes Mal, wenn eine Überlaufbedingung auftritt, werden Interrupts deaktiviert, bis das Überlaufflag gelöscht wird.

Die Register ARUPT, LRUPT, QRUPT und BANKRUPT können nicht außerhalb des Interrupt-Handlers verwendet werden. Physikalisch bleiben sie zugänglich, aber aus Sicht des Hauptprogramms ändert sich ihr Zustand zu beliebigen Zeitpunkten.

Register bearbeiten - Adressen 00020 8 - 00023 8

Die ersten drei Register sind Schieberegister: Zyklus rechts, Verschiebung rechts, Zyklus links, dh eine zyklische Verschiebung nach rechts, eine Verschiebung nach rechts und eine zyklische Verschiebung nach links. Das AGC-Befehlssystem hat keine Verschiebungsoperationen, und um eine Zahl um ein Bit zu verschieben, muss sie in eines dieser Register geschrieben und dann gezählt werden. Jede Aufnahme wird um ein Bit verschoben.

Das EDOP-Register (EDit Interpretive OPcode) ist das vierte der Bearbeitungsregister.

Die Interpreterbefehle, die unten diskutiert werden, werden in zwei in einem Wort gespeichert und belegen jeweils 7 Bits. Eine UND-Operation mit einer Maske reicht aus, um den Befehl niedriger Ordnung zu lesen, aber die Ordnung hoher Ordnung erfordert eine Verschiebung von 7 Bits. Das EDOP-Register führt diese Verschiebung in einer Operation durch.

Das Bearbeiten von Registern kann nicht in Interrupt-Handlern verwendet werden. Regelmäßige Register sollten am Anfang des Handlers gespeichert und beim Beenden wiederhergestellt werden. Bearbeitungsregister führen jedoch beim Schreiben Operationen auf Daten aus, was zu einer fehlerhaften Funktion des unterbrochenen Programms führt.

Timer und Uhren


Echtzeituhr


AGC verwendet keine Kalenderzeit, Tage, Monate und Jahre. Stattdessen läuft der Countdown ab dem Nullpunkt, der einige Stunden vor dem Start beginnt. Die Uhr wird in zwei Wörtern im Speicher unter den Adressen 00024 8 (T2), 00025 8 (T1) angezeigt. Das Wort T1 wird alle 10 ms inkrementiert, das Wort T2 ungefähr alle 164 Sekunden, wenn das Wort T1 voll ist.

Timer


00026 8 (T3) Warteliste - Inkrement alle 10 ms., Relativ zu T4RUPT um 5 ms verschoben
00027 8 (T4) T4RUPT - Inkrement alle 10 ms.
00030 8 (T5) Autopilot - Inkrement alle 100 ms.
00031 8 (T6) hochauflösender Takt - Inkrement alle 1/1600 s = 0,625 ms.

Der erste Timer T3 wird benötigt, damit die Aufgabenliste funktioniert (Warteliste). Die Warteliste ist eine Liste sehr kurzer Aufgaben, von denen jede eine kurze Zeit in Anspruch nimmt und direkt im Interrupt-Handler ausgeführt werden kann. Die Liste enthält bis zu sieben Aufgaben, von denen jede in einem bestimmten Intervall beginnt. Die Ausführungszeit der Aufgabe ist streng auf 4 ms begrenzt. Während dieser Zeit schafft es der Computer, ungefähr 160 Anweisungen auszuführen.

Der T4-Timer führt kritische periodische Aufgaben im Bereich von 20 bis 120 ms aus, einschließlich Datenaustausch mit DSKY, Abfrageschalter an den Bedienfeldern des Schiffes und andere Aufgaben.

Trägheitsmesseinheit IMU (Inertial Measurement Unit)


IMU ist eine gyroskopisch stabilisierte Plattform mit Beschleunigungsmessern, die zur Bestimmung der Position und Beschleunigung des Schiffes im Weltraum dient.



Wir werden hier das Funktionsprinzip des Gyroskops nicht beschreiben, wir bemerken nur, dass die Position der Achsen des Gyroskops vom CDU-Gerät (Coupling Data Unit) gemessen wird. Dieses Gerät erzeugt Impulse, wenn sich die Gyroskope drehen, und erzeugt 32768 Impulse pro Umdrehung, was einer Auflösung von 39,55 Bogensekunden pro Impuls entspricht.

Die CDU überträgt auch die Position der Achsen des Sextanten und des Annäherungsradars an die AGC. Da sich der Sextant nur im Befehlsmodul befindet und sich das Radar nur im Mondmodul befindet, verwenden sie denselben AGC-Port.

Die IMU verfügt außerdem über drei Pendelbeschleunigungsmesser (Pulsed Integrating Pendulous Accelerometers, PIPA). Aber es gibt eine leichte Subtilität. Trotz der Tatsache, dass das Mondmodul und das Befehlsmodul dieselbe IMU haben, unterscheiden sich ihre Geschwindigkeitsmessbereiche. Der IMU-Geschwindigkeitsbereich des Befehlsmoduls reicht von 0 bis 11000 m / s und für das Mondmodul bis zu 1700 m / s. Die IMU-Auflösung des Befehlsmoduls beträgt 5,85 cm / s, für das Mondmodul 1 cm / s.

CDUS- (X, Y, Z, OPTIS, OPTT) und PIPAS-Zähler (X, Y, Z)


Die Datenübertragung von der CDU zur AGC erfolgt wie folgt: Impulse von den Sensoren können Zähler inkrementieren und dekrementieren. Die Zahl im Zähler hat ein Zeichen, das die Bewegungsrichtung angibt. Zähler befinden sich an bestimmten Adressen im Speicher und können programmgesteuert ausgelesen werden. Insgesamt werden 8 Zähler verwendet, von denen sechs Geschwindigkeiten und Winkel anzeigen, und zwei werden verwendet, um die Winkelposition des Sextanten im Befehlsmodul oder des Annäherungsradars im Mondmodul anzuzeigen.

Geräteverwaltung über Zähler


Die CDU arbeitete in beide Richtungen, zum Beispiel konnte sie nicht nur die Position des Näherungsradars bestimmen, sondern auch den Inhalt des Registers aus dem Computerspeicher lesen und Spannung an die Radarantriebsmotoren anlegen, bis das Radar im erforderlichen Winkel installiert war.

Andere Computerschnittstellen


Das Mondmodul verfügt über einen Griff (Attitude Controller Assembly, ACA), dessen Position programmgesteuert ausgelesen werden kann. Jede Achse dieser Steuerung hat Werte an die Variablen P_RHCCTR, Q_RHCCTR und R_RHCCTR gesendet.


ACA-Controller


Aussehen des ACA-Controllers

ACA-Controller nur im Mondmodul installiert

INLINK (Telemetrieübertragungskanal)


Das INLINK-Gerät bietet eine bidirektionale Kommunikation mit der Erde und dient zum Senden von telemetrischen Informationen und zum Empfangen von Daten von der Flugsteuerzentrale. Astronauten können die erforderlichen Daten für den Flug über DSKY eingeben, dieser Vorgang ist jedoch langsam und fehlerhaft. Über das INLINK-Register können Daten direkt von der Erde in den Computer eingegeben werden.

Motormanagement


Während des Landevorgangs des Mondmoduls berechnet die AGC kontinuierlich die notwendigen Werte der Zugkraft und sendet Steuersignale an die Motoren. Während der 12 Minuten, die die Landung dauert, verbrennt der Motor etwa die Hälfte des Kraftstoffs, und das Programm sollte die Verringerung der Masse berücksichtigen. Der Motorschub variiert von 92,5%, was 46.700 N entspricht, bis zu 10% des vollen Schubes. Ein Schub von mehr als 65% führt jedoch zu starkem Verschleiß des Brennraums und der Düse. Daher sollte das AGC-Programm die Zeit minimieren, in der sich der Motor in diesem Modus befindet.

Der Computer ist über die Descent Engine Control Assembly (DECA) mit den Landeplattformmotoren verbunden. Die Verwaltung erfolgt über das THRUST-Register. Die Besatzung kann den Schubwert manuell über den Schub- / Translationshandregler (TTHC) einstellen.


Schub- / Translationshandregler (TTHC).


Schub- / Translationshandregler (TTHC). Aussehen.

Das Controller-Handle ist direkt mit DECA verbunden, der Computer sieht die manuell eingegebenen Werte nicht.

Analoge Geräte


Analoge Anzeigen, ALTM (analoge Anzeigen: Höhenmesser und Geschwindigkeitsmesser), werden auch verwendet, um die Höhe und die Änderungsrate der Höhe anzuzeigen, die die AGC über das ALTM-Register steuert. Analoge Anzeigen werden in Form von vertikalen Skalen (Tapemetern) erstellt.


Höhen- und vertikale Geschwindigkeitsanzeigen

Adressierungs- und Speicherbänke


Wie bereits erwähnt, verfügt AGC über zwei Speichertypen: RAM, auch als "löschbarer Speicher" bezeichnet, und ROM (fester Speicher). Die Speicherkapazität beträgt 38 Kslov, wodurch nicht der gesamte Speicher direkt adressiert werden kann, da die Adresslänge im Befehlswort 12 Bit beträgt.

Um den Speicher in Bänke aufzuteilen, werden die Bankregister EBANK und FBANK verwendet, die die Bank von RAM bzw. ROM angeben. Dadurch wird der Adressraum mit 32 KB erweitert, und um den ROM-Adressraum weiter zu erweitern, wird das Bit mit fester Erweiterung verwendet, das den Zugriff auf 36 KB ermöglicht.

RAM-Banken


RAM hat ein Volumen von 2K Wörtern und ist in 8 Bänke mit 256 Wörtern unterteilt.


Entschlüsselung der RAM-Adresse

Um ein Wort in einer RAM-Bank zu adressieren, werden 8 Bits benötigt. Zwei weitere Bits werden benötigt, um den Bankentyp zu bestimmen: nicht umschaltbar (nicht umgeschaltet) oder umschaltbar (umgeschaltet). Die Bits 9 und 10 in der obigen Abbildung sind dafür verantwortlich (beachten Sie, dass die Bits von 1 nummeriert sind). Wenn diese Bits 00, 01 und 10 enthalten, wird das EBANK-Register nicht verwendet. Wenn 11 verwendet wird, wird der Inhalt der EBANK mit der im Befehlswort aufgezeichneten 8-Bit-Adresse kombiniert, wie in der folgenden Abbildung gezeigt. Wenn das EBANK-Register nicht verwendet wird, werden die ersten drei Speicherbänke aufgerufen, die als etwas irreführender Begriff „Fixed Erasable“ bezeichnet werden. Um auf RAM zugreifen zu können, müssen die Bits 11 und 12 auf 0 gesetzt werden.


Entschlüsselung der RAM-Adresse über das EBANK-Register

ROM


Für den Zugriff auf das ROM wird ein ähnlicher Ansatz verwendet. Die Bits 11 und 12 des Steuerworts bestimmen, welche Bänke verwendet werden. Wenn diese Bits 00 enthalten, wird RAM verwendet, wie im vorherigen Abschnitt gezeigt. Wenn 10 oder 11, dann werden alle 12 Bits als Adresse im ROM verwendet, wird das FBANK-Register nicht verwendet. Wenn 01, wird die Adresse verwendet, die aus den unteren 10 Bits des Steuerworts und dem Inhalt des FBANK-Registers besteht.


Entschlüsselung der ROM-Adresse


Entschlüsselung der ROM-Adresse über das FBANK-Register

Gemeinsame Banken


Ein wichtiges Nebenprodukt des Speichertrennungsschemas für Banken ist die Möglichkeit, ROM- und RAM-Bänke mit demselben Adressraum zu verbinden und RAM zu verwenden, ohne die Bankregister wechseln zu müssen. Die Abbildung erklärt, wie ein solches Schema funktioniert.


Das Schema der Verwendung von RAM und ROM im selben Adressraum

Speicher über 32 Wörter


Um auf Speicher mit mehr als 32 Wörtern zuzugreifen, wird das ROM-Erweiterungsbit Fixed Extension Bit als Superbank-Bit verwendet. Das Superbank-Bit befindet sich in Bit 7 des Eingangs- / Ausgangskanals 7. Kanal 7 unterscheidet sich von anderen Kanälen dadurch, dass er sowohl Lesen als auch Schreiben unterstützt. Natürlich muss das ROM-Erweiterungsbit sowohl während der Interrupt-Behandlung als auch beim Wechseln von Aufgaben gespeichert werden.

Übertragung der Kontrolle zwischen Banken


Beachten Sie die Reihenfolge, in der sich die Register FBANK, Z und BB im unteren Speicher befinden. Es scheint, warum nicht sie in einem Wort kombinieren? Dies geschieht jedoch absichtlich, um einen Kontrollübertragungsmechanismus zu schaffen. Beim Wechsel zu einer anderen Bank sollten die neuen Werte auf FBANK und EBANK oder BBANK gesetzt werden. Dies wirft jedoch ein Problem auf. Angenommen, das Programm läuft unter der Adresse 01033 8 in der Bank von ROM 07 und Sie müssen zur Adresse 02371 8 in der Bank von ROM 13 gehen. Wenn Sie das Register Z ändern, überträgt es die Steuerung an die Adresse 02371 8 in der aktuellen Bank, die wir nicht benötigen. Wenn wir zuerst die aktuelle Bank wechseln, entsteht eine ähnliche Situation. Das gleichzeitige Umschalten von Z-Register und Speicherbank ist erforderlich. Verwenden Sie dazu den DXCH-Befehl, der die Batterie liest und L registriert und deren Inhalt mit zwei aufeinander folgenden Speicherorten austauscht. Somit ist es möglich, die Batterie auszutauschen und L entweder mit einem Paar FBANK, Z oder mit einem Paar Z, BB zu registrieren. Diese Optionen werden von zwei Mnemoniken codiert: Double Transfer Control Switching Beide Banken (DTCB) und Double Transfer Control Switching Fixed Bank (DTCF). Mit dem DTCB-Befehl können Sie nicht nur zu einer anderen Adresse wechseln, sondern auch die RAM-Bank ändern. Der DTCF-Befehl überträgt die Steuerung, wobei die RAM-Bank unverändert bleibt. Die Rückkehr von der Funktion ist wie folgt. Die Anfangswerte von Z und BBANK (oder FBANK) werden in den Akkumulator und das Register L geschrieben. Die aufgerufene Funktion muss diese Werte speichern und dann den umgekehrten Vorgang ausführen, indem sie die Werte mit den Registern der Banken und Z austauscht.

Einige Nachteile der AGC-Architektur


Die meisten Computerarchitekturen haben einen Stapelzeiger und / oder Indexregister (mindestens eines). Aber nicht bei AGC. Die Unterstützung von Stapelzeigern würde zusätzliche Hardware erfordern. Es gibt keine Indexregister, die das Organisieren des Zugriffs auf Datenstrukturen an der Adresse (Zeiger + Offset) ermöglichen würden, aber es gibt einen INDEX-Befehl, der die Notwendigkeit eines solchen Registers beseitigt. Obwohl es keine Hardware-Indexregister gibt, werden sie von der virtuellen Interpreter-Maschine emuliert, was weiter unten erläutert wird.

Eines der Merkmale von AGC ist die Verwendung eines Multithread-Echtzeitbetriebssystems. Damit ein solches System funktioniert, ist in der Regel ein Mechanismus zum Sperren gemeinsam genutzter Daten (Mutexe) erforderlich. In AGC gibt es jedoch keinen solchen Mechanismus. Daher sollten Softwareentwickler alle Fälle des gemeinsamen Zugriffs auf Daten aus verschiedenen Prozessen sorgfältig prüfen, um die Möglichkeit eines gleichzeitigen Zugriffs auf solche Daten auszuschließen.

Unterbrechungen


4000 8 Startup
Startadresse nach dem AGC Strom

4004 8 T6RUPT
TIME6 erreicht 0. Der Timer ist gebrauchter Autopilot.

4010 8 T5RUPT
TIME5 hat Überlauf erreicht. Der Timer wird vom Autopiloten verwendet.

4014 8 T3RUPT
TIME3 hat Überlauf erreicht. Wird vom Taskplaner WAITLIST verwendet.

4020 8 T4RUPT
TIME4 hat Überlauf erreicht. Scannen und Aktualisierung und Anzeige DSKY

4024 8 KEYRUPT1
Taste DSKY gedrückt. Der Schlüsselcode vom Haupt-DSKY ist in Kanal 15

4030 8 KEYRUPT2 verfügbar
Drücken Sie die zweite DSKY-Taste. Die Navigationstaste DSKY ist auf Kanal 16 verfügbar (nur Befehlsmodul).

4034 8 UPRUPT
Daten im INLINK-Register
Verwendet für DSKY

4040 8 DOWNRUPT
Das Downlink-Register enthält Daten. Wird für die Telemetrie verwendet. AGC

4044 8 RADARUPT-
Daten im RNRAD-Register. Die Daten aus der Konvergenz des Radars

4050 8 RUPT10
die LM - P64

Befehlssystem


Der Operationscode oder Bestellcode in Bezug auf diese Zeit wird mit drei Bits codiert, dh es sind nur acht Opcodes möglich, was für ein entwickeltes Befehlssystem eindeutig nicht ausreicht. Die Entwickler fanden jedoch einen Ausweg. Einige Codes werden um ein zusätzliches Zwei-Bit-Feld, Q-Code, erweitert.

Der Opcode 000 entspricht einer großen Anzahl von Spezialoperationen, die Opcodes 011, 100 und 111 entsprechen jeweils einer Operation. Die verbleibenden Opcodes 001, 010, 101 und 110 verwenden Q-Codes.


Q Befehlsformat

Andere Tricks wurden ebenfalls verwendet, um die Anzahl möglicher Opcodes zu erhöhen. Einige Anweisungen können nicht mit RAM arbeiten, und die Angabe von RAM als Adresse kann zu einem undefinierten Ergebnis führen. Solche Opcodes mit Operandenadressen im RAM wurden jedoch für völlig andere Operationen verwendet. Beispielsweise kann der Übertragungssteuerungsbefehl TC (Übertragungssteuerung) die Steuerung nicht in den RAM übertragen. Wenn die Adresse jedoch auf den RAM zeigt, entspricht dieser Opcode dem Befehl Enable Interrupts.

Wenn diese Opcodes nicht ausreichten, wurde der folgende Ansatz verwendet. Wenn wir mit dem TC-Befehl einen Übergang zur Adresse 00006 8 machen , findet tatsächlich kein Übergang statt, der dem TC-Befehl 00006 8 folgtDer Opcode wird so interpretiert, dass er zu einem völlig anderen Befehlssatz gehört. Natürlich benötigen solche Anweisungen mehr Zeit für die Ausführung, da der Prozessor die beiden Opcodes lesen und decodieren muss, aber dieses Problem wird durch die sorgfältige Verteilung der Anweisungen zwischen den beiden Befehlssätzen gemindert. Häufig verwendete Befehle sind im Hauptbefehlssatz enthalten, die übrigen im erweiterten.

Grundlegende Anweisungen



Insgesamt umfasst die AGC 41 Teams. Die Teams sind in 6 Gruppen unterteilt:

  • Arithmetische Logik
  • Kontrolle übertragen
  • Datenbewegung
  • Änderung der Anweisungen
  • E / A-Anweisungen
  • Verschiedenes

Wir werden hier jedoch nicht alle AGC-Teams beschreiben. Interessenten können sich auf das Buch [1] beziehen.

Kommunikation mit der Außenwelt: Input-Output-Subsystem


AGC verfügt nicht über Festplatten oder Bandlaufwerke, und die gesamte Kommunikation mit der Außenwelt besteht darin, Bits in den Eingangs- / Ausgangsports zu setzen und zu lesen. Zu den AGC-Peripheriegeräten gehören die Trägheitsplattform, Motoren, Radar, DSKY und Bedienfeldschalter. Ein Hochgeschwindigkeitsdatenaustausch ist nicht erforderlich, und die Austauschgeschwindigkeit ist kein wesentlicher begrenzender Faktor.

Für die Ein- und Ausgabe sind die sogenannten Kanäle. Das Schreiben und Lesen eines Kanals ähnelt dem Schreiben und Lesen einer RAM-Zelle, aber im Gegensatz zum RAM sind die meisten Kanäle unidirektional. Es gibt auch Zählports, über die die Positionen der Achsen von IMU, Radar und Sextant gelesen werden können. Impulse von Winkelsensoren erhöhen und verringern Zähler, die dann von AGC gelesen werden können.


AGC-Peripheriegeräte

E / A-Anweisungen beziehen sich auf den erweiterten Befehlssatz und erfordern den Befehl EXTEND vor dem Opcode. E / A-Befehle haben einen Opcode von 000, gefolgt von einem Drei-Bit-PCode. Unterschiedliche PCode-Werte werden nur für Bodentests verwendet. Standardmäßig ist PCode Null. Die verbleibenden 9 Bits des Steuerworts sind die Kanalnummer. Somit kann AGC bis zu 512 Kanäle adressieren, in der Praxis werden jedoch nur 16 verwendet. Die meisten Peripheriegeräte sind nicht mit einem vollständigen 15-Bit-Wort verbunden, sondern mit einem separaten Bit in einem Wort, dh es sind logische E / A-Operationen AND, OR erforderlich und exklusives ODER. Solche Operationen können zu einer einzigen Operation mit einer E / A-Operation kombiniert werden. Zu diesem Zweck dienen die Anweisungen WOR (Schreiben mit ODER), WAND (Schreiben mit UND), ROR (Lesen und ODER) und RXOR (Lesen und XOR).

E / A-Anweisungen verwenden eine Batterie zum Lesen und Speichern von Daten. Es gibt aber auch ein Register L (Akkumulator niedriger Ordnung), das einem Port zugeordnet werden kann. Dann wird alles, was darin gelesen und geschrieben wird, automatisch in den Port verschoben. Auf diese Weise können Sie die üblichen logischen Operationen AND, OR und XOR verwenden, um mit dem Port zu arbeiten.

Nicht alle E / A-Vorgänge erfordern jedoch nur das Lesen oder Schreiben eines Bits. Beispielsweise sendet DSKY 5-Bit-Schlüsselcodes. Durch Drücken einer Taste auf DSKY wird ein KEYRUPT-Interrupt erzeugt, der Code wird in den Eingangskanal eingefügt.

Ein weiteres Beispiel, wenn eine große Datenmenge über den Port übertragen werden muss, sind die Uplink- und Downlink-Schnittstellen, die eine Kommunikation mit der Erde mit einer Geschwindigkeit von 51 kbps oder 1900 bps (manuell von der Besatzung ausgewählt) ermöglichen.

Software




Die AGC-Software basiert auf dem Betriebssystem Real-Time Executive und der virtuellen Maschine Interpreter. Wir werden sie im nächsten Teil ausführlich betrachten.

Source: https://habr.com/ru/post/de462421/


All Articles