Die Erfindung betrifft eine Datenverarbeitungsanlage nach dem
Oberbegriff des Anspruchs 1.
Eine derartige Anlage ist aus der
DE-Z "Elektronische Rechenanlagen" 1973, Heft 2, Seiten 60 bis
65, insbesondere Bild 2 mit Begleittext, bekannt. Es wird dort
ein Befehlspuffer beschrieben, der Befehlsworte und in zugeordneten
assoziativen Zellen die Adressen der Befehle im Zentralspeicher
enthält. Bei einem Befehlszugriff wird geprüft, ob
die angebotene Adresse mit einer Adresse in den assoziativen
Zellen übereinstimmt. Falls dies zutrifft, befindet sich das
gesuchte Befehlswort im Puffer und wird am Ausgang abgegeben.
Im anderen Fall erfolgt mit der angebotenen Adresse ein Zugriff
zum Zentralspeicher. Dann werden die Adresse und das zugehörige
Befehlswort im Puffer eingelagert. Hierzu muß im Puffer ein
Platz freigemacht werden. Die Befehle gelangen aus dem Speicher
nicht direkt in die Zentraleinheit. Der Puffer kann auch für
Datenworte verwendet werden.
Bei einer aus der DE-OS 27 55 273 bekannten Datenverarbeitungsanlage
ist eine Befehlsaufrufeinheit vorgesehen, die Befehle
aus dem Speicher abruft und speichert. Eine Datenausführungseinheit
mit einem Steuerteil zu Steuerung der Verarbeitung ist
ebenfalls vorgesehen. Ein Generalregisterstapel kann acht Wörter,
nämlich Operanden, speichern. Die Druckschrift enthält
keine Andeutung darüber, daß diese acht Datenwörter diejenigen
acht Datenwörter sein sollen, die die Datenausführungseinheit
als nächste benötigt. Auch enthält die Druckschrift keine Angaben
dahingehend, daß die Datenausführungseinheit ohne Zwischenschaltung
der Befehlsabrufeinheit direkt auf den Speicher zugreifen
kann. Es ist allerdings eine zeitliche Überlappung
zwischen der Tätigkeit der Durchführung arithmetischer Operationen
und dem Datenspeicherzugriff möglich.
Aus "Planning A Computer System", Seiten 228 bis 230,
Mc Graw-Hill Book Company 1962, ist das Prinzip bekannt, aus
dem Speicher einen Vorrat von noch nicht ausgeführten Befehlen
bereitzuhalten, damit die Zentraleinheit auf diesen Vorrat
zurückgreifen kann, wenn der Zugriff zum Speicher nicht möglich
ist. Bei der bekannten Anlage ist vorgesehen, daß die Arithmetikeinheit,
also ein Teil der Zentraleinheit, nur mit einer
Bereitstelleinheit (look-ahead unit) korrespondiert, nicht
jedoch direkt mit dem Speicher. Die bekannte Vorrichtung bewirkt
zwar eine Beschleunigung des Arbeitsablaufes, weil weitgehend
verhindert wird, daß die Zentraleinheit auf die Verfügbarkeit
des Speicher warten muß. In bestimmten Fällen sind jedoch bei
einer derartigen Anlage unerwünschte Verzögerungen möglich,
beispielsweise dann, wenn infolge eines Sprungbefehls die
Zentraleinheit nicht den Befehl oder die Befehle benötigt, die
sich in der look-ahead unit befinden.
Der Erfindung liegt die Aufgabe zugrunde, eine Datenverarbeitungsanlage
nach dem Oberbegriff des Anspruchs 1 in ihrer Architektur
so auszubilden, daß die Befehlsausführungszeit weiter
verringert wird.
Diese Aufgabe wird gemäß dem kennzeichnenden Teil des Anspruchs
1 dadurch gelöst, daß die Befehlseinrichtung derart
ausgebildet ist, daß sie den dem gerade in der Ausführung
befindlichen Befehl folgenden nächsten Befehl vom Bereitstell-
Prozessor anfordert, wenn er dort vorhanden ist, oder
anderenfalls direkt vom Speicher anfordert.
Dadurch, daß die Zentraleinheit den nächsten Befehl wahlweise
aus dem Bereitstell-Prozessor oder dem Speicher abrufen kann,
wird verhindert, daß die Zentraleinheit auf zeitraubende Arbeitsvorgänge
des Bereitstell-Prozessors, um Informationen in
seinem Speicher auszutauschen, warten muß. Auch deswegen, weil
der Bereitstell-Prozessor Befehle aus dem Speicher abruft,
bevor diese Befehle durch den Prozessor ausgeführt werden,
wird die Geschwindigkeit, mit der Befehle vom Speicher zum
Prozessor übertragen werden, vergrößert und hierdurch die Rechnerzeit
verringert, die benötigt wird, um Befehle
aus dem Speicher abzurufen. Die Operationsgeschwindigkeit des
Prozessors wird dadurch erhöht, daß der Prozessor die Befehle
von der Befehls-Bereitstell-Einrichtung erhält, ohne einen
Speicherlesezyklus ausführen zu müssen, und dadurch, daß der
Prozessor ständig Zugriff zum Speicher hat, weil die Befehls-
Bereitstellungs-Einrichtung nur dann aus dem Speicher ausliest,
wenn der Prozessor keinen Zugriff zum Speicher anfordert.
Der Prozessor ist zum Verarbeiten von Daten in Maschinensprache
ausbildet.
Weiterbildungen der Erfindung sind in den Unteransprüchen beschrieben.
So erhöht die in den Ansprüchen 3 und 4 beschriebene
Einrichtung zum Ableiten und Verarbeiten von Mikrobefehlen die
Operationsgeschwindigkeit des Prozessors durch Vergrößern der
Geschwindigkeit, mit der eine Mikrobefehlssequenz durch einen
Befehl veranlaßt wird; dadurch sinkt die Ausführungszeit für
die Befehle.
Die Erfindung wird im folgenden anhand der Zeichnung in Ausführungsbeispielen
beschrieben und erläutert.
Fig. 1 ist ein teilweises Blockschaltbild eines Rechners
gemäß dem Stand der Technik;
Fig. 2 ist ein teilweises Blockschaltbild eines die vorliegende
Erfindung enthaltenden Rechners;
Fig. 3 ist ein detailliertes Blockschaltbild eines die vorliegende
Erfindung erhaltenden Rechners;
Fig. 4 stellt im vorliegenden Rechner verwendete Befehls-
und Datenworte dar;
Fig. 5 und 5A sind schematische Darstellungen der Befehlsanforderungsschaltung
des Bereitstellungs-
Prozessors;
Fig. 6 und 6A sind schematische Darstellungen der Speicherschaltung
des Bereitstellungs-Prozessors;
Fig. 7 und 7A sind schematische Darstellungen der Steuerschaltung
des Bereitstellungs-Prozessors;
Fig. 8 ist ein Blockschaltbild einer Rechner-Mikrobefehl-
Logik;
Fig. 9 zeigt den Zusammenhang zwischen Folgen von
Makrobefehlen und Mikrobefehlen des Rechnersystems;
und
Fig. 10 ist eine schematische Darstellung eines Teils
der Mikrobefehl-Logik (SAGE) des Rechnersystems.
Die folgende Darstellung legt die Architektur und die
Arbeitsweise eines Rechners, der die vorliegende Erfindung
enthält, dar. Wie im folgenden Inhaltsverzeichnis
angezeigt ist, wird die allgemeine Architektur und Wirkungsweise
eines Rechners gemäß dem Stand der Technik
zuerst gezeigt. Als nächstes wird die allgemeine Architektur
und Arbeitsweise eines Rechners entsprechend der
vorliegenden Erfindung gezeigt und mit dem bekannten
Rechner verglichen. Eine kurze Diskussion gewisser Merkmale
der vorliegenden Erfindung folgt. Die Architektur
und Arbeitsweise des Rechners der vorliegenden Erfindung
wird dann auf der Ebene von Blockdiagrammen beschrieben.
Ausgewählte Abschnitte des Rechners, beispielsweise der
Speicher, der Bereitstellungsprozessor, die Mikrobefehls-
Steuerlogik, und eine Softkonsole werden dann einzeln
beschrieben.
Aus Gründen der Deutlichkeit der Darstellung werden in der
folgenden Diskussion gewisse Vereinbarungen benutzt. Wenn
auf wesentliche Anzahlen von Signalen während der Diskussion,
beispielsweise des Speichers oder des Bereitstellungsprozessors,
Bezug genommen wird, wird der
Diskussion ein Glossar vorausgehen, das die genannten
Signale nennt und definiert. Weitere Signale können in
der Diskussion eingefügt werden, wenn erforderlich. Eine
Gruppe von ähnlichen Signalen ist beispielsweise durch
MODSTART (512, 514, 516, 518) bezeichnet. Auf ein einzelnes
Signal dieser Gruppe wird beispielsweise durch
MODSTART 512 Bezug genommen, und auf die Gruppe im allgemeinen
durch MODSTART. Invertierte Signale werden durch
einen Strich oberhalb des Signalnamens bezeichnet, beispielsweise
MODRY und . Wo in zwei
Figuren miteinander zusammenhängende Schaltungen gezeigt
sind, haben die Figuren eine gemeinsame Figuren-Nummer
mit einer Unterscheidung durch einen Buchstaben, beispielsweise
Fig. 6 und 6A. Gemeinsame elektrische
Anschlüsse zwischen solchen Schaltungen werden durch
eine Klammer angezeigt, die eine Leitung zu einem
solchen Anschluß einschließt, und eine Bezeichnung
"a"-b" bezeichnet; "a" zeigt andere Figuren an, die
denselben gemeinsamen Anschluß haben, und "b" ist eine
einem speziellen gemeinsamen elektrischen Anschlußpunkt
zugeordnete Buchstabenbezeichnung.
Wenn miteinander in Verbindung stehende Schaltungen in
zwei oder mehr Figuren gezeigt sind, wird die verwendete
Figuren-Nummer diejenige der ersten Figur der miteinander
in Verbindung stehenden Gruppe sein. Bezugszeichen
werden in der miteinander in Verbindung stehenden
Gruppe von Figuren aufeinanderfolgend zugewiesen.
1. Einführung (Fig. 1 und 2)
In Fig. 1 ist ein teilweises Blockschaltbild eines Rechners
110 gemäß dem Stand der Technik gezeigt. Die Hauptelemente
des Rechners 110 sind ein Speicher 111, eine
Zentraleinheit (CPU) 114, und Ein/Ausgabe(E/A)-Geräte 116.
Das Programm des Benutzers, beispielsweise Daten und
Makrobefehle, werden im Speicher 111 gespeichert und
zur CPU 114 auf Anforderung durch die CPU 114 durch eine
Speicherausgabe-MEMOUT-Bus 118 übertragen. Die Übertragung
von Daten/Befehlen aus dem Speicher 111 heraus und
ihr Einschreiben in den Speicher 111 werden durch ein
Speichereingabe-(MEMIN)-Register 162 hindurch vorgenommen.
Das MEMIN-Register 162 weist ein Adreßregister 162 a und
ein Datenregister 162 b auf, die mit einem Adreß-Bus
(ADR) 120 a und einem Daten-Bus (DATA) 120 b verbunden
sind. Daten und einige Befehle, die auf dem MEMOUT-
Bus 118 erscheinen, werden in ein Speicherausgabe-(MEMOUT)-
Register 140 übertragen. Daten/Befehle im MEMOUT-Register
140 werden durch einen ALU-Eingabe-(ALUIN)-Bus 124 zu
einer ALU(arithmetisch-logische Einheit) 156 zur Verwendung
bei der Ausführung der Programmschritte übertragen.
Im allgemeinen werden die Befehle vom MEMOUT-
Bus 118 in ein Befehlsregister (IR) 146 übertragen. Gewisse
Typen von Befehlen können vom Befehlsregister 146
direkt zur ALU 156 durch den ALUIN-Bus 124 übertragen
werden. Häufig benutzte Befehlsfolgen werden jedoch in
einer Mikrobefehl-Logik 142 gespeichert und nicht im
Speicher 111. In solchen Fällen weist der im Befehlsregister
146 erscheinende Makrobefehl einen Befehl für
die Mikrobefehl-Logik 142 auf. Die Mikrobefehl-Logik 142
ruft dann nacheinander Schritte der Mikrobefehlsfolge
aus ihrem internen Speicher auf und liefert die Mikrobefehle
an die CPU 114.
Nach dem Abschluß eines Makrobefehls oder einer Mikrobefehlsfolge
fordert die ALU 156 den nächsten Befehl des
Benutzerprogramms vom Speicher 111 an, indem sie die
entsprechende Adresse an den Speicher 111 durch den
ALU-Ausgabe-(ALUOUT)-Bus 126. die MEMIN-Register 162 und
den ADR-Bus 120 a liefert.
Im allgemeinen wird ein Benutzerprogramm mit einer
Folge von Makrobefehlen im Speicher 111 in einer entsprechenden
Folge von Adressen gespeichert. Die CPU 114
verfolgt daher das Programm durch Speicherung der
Adresse des zur Zeit ausgeführten Befehls, bezeichnet
als Befehlszähler (PC). PC wird beim Abschluß jedes
Befehlsschritts inkrementiert und als Adreßeingangssignal
für den Speicher 111 verwendet.
Ein externer Zugriff zur CPU 114 und zum Speicher 111
wird über die E/A-Geräte 116 erhalten. Speziell können
parallele Digitalwörter durch einen E/A-Daten-Bus 168
übertragen werden. Serielle alphanumerische Eingangssignale
und Ausgangssignale werden durch einen E/A-
ASC II-Kanal 174 übertragen. Die E/A-Geräte 116 haben
direkten Zugriff zum ALUIN-Bus 124 und zum ALUOUT-Bus
126 und somit zur AlU 156. Der Zugriff in den Speicher
111 wird über den Weg erhalten, der den ALUIN-
Bus 126, die ALU 156, den ALUOUT-Bus 124 und die
MEMIN-Register 162 aufweist. Ein Zugriff aus dem
Speicher 111 heraus wird erhalten durch das MEMOUT-
Register 140, den ALUIN-Bus 124, die ALU 156 und einen
ALUOUT-Bus 126. Die über den Daten-Bus 168 übertragenen
Daten sind im allgemeinen im Format kompatibel mit
der CPU 114 und dem Speicher 111. Das ASC II-Eingangssignal
muß jedoch in ein mit der CPU 114 und dem
Speicher 111 kompatibles Format umgewandelt werden. Dies
wird im allgemeinen im E/A-Gerät 116 erreicht oder als
getrennte Operation in der ALU 156 ausgeführt.
In Fig. 2 ist ein teilweises Blockdiagramm dargestellt,
das die Architektur eines die vorliegende Erfindung verwirklichenden
Rechners 210 zeigt. Die Speicher-Eingabe-
Busse ADR 120 a und DATA 120 b wurden durch einen einzigen
MEMIN-Bus 220 ersetzt. Ein Speicher 211 besteht aus
einem oder mehr Unterspeichern 213, von denen jeder ein
vollständiger und in sich abgeschlossener Speicher ist,
der unabhängig arbeiten kann. Ein oder mehr oder mehr Unter-
Speicher 213 können parallel mit dem MEMIN-Bus 220 und
MEMOUT-Bus 218 verbunden sein, und wenn sie so angeschlossen
sind, arbeiten sie gemeinsam als Rechner-
Speicher 211. Dies erlaubt es, die Kapazität des
Rechner-Speichers 211 entsprechend den Anforderungen
des Benutzers zu strukturieren.
Die CPU 214 hat zu den Ausgängen des Speichers 211 direkten
Zugriff durch den MEMOUT-Bus 218 und sein MEMOUT-
Register 240. Die CPU 214 hat auch einen direkten Eingabezugriff
durch sein MEMIN-Register 262. Der Speicher
211 überträgt jedoch nicht mehr die Befehle direkt zur
CPU 214 und zur ALU 256 durch den MEMOUT-Bus 218 und das
Befehlsregister 246. Im Rechner 210 werden die Befehle
durch den MEMOUT-Bus 218 in einen Bereitstellungs-(pre-fetch)-
prozessor (PFP) 212 übertragen. Die Befehle werden vom
PFP 212 zum Befehlsregister 246 durch einen PFP-Bus 222
übertragen. Zusätzlich empfängt die Mikrobefehl-Logik
242 Befehle direkt vom PFP 212 und nicht vom Befehlsregister
246. Diese Änderung in der Architektur
spiegelt eineÄnderung in der internen Architektur der
Mikrobefehl-Logik 242 wieder, die unten weiter beschrieben
wird. Wie dargestellt, hat der PFP 212 durch den
MEMIN-Bus 220 parallel mit der CPU 214 einen direkten Zugriff
zum Speicher 211.
Eine weitere Änderung in der Architektur des Rechners
210 ist der Einschluß eines Konsolen-ROM 258, der zwischen
den ALUOUT-Bus 226 und den ALUIN-Bus 224 eingeschaltet
ist.
Weitere Merkmale des vorliegenden Rechners, die gemeinsam
mit anderen später in dieser Anmeldung weiter ausgeführt
werden, sind: Der Speicher 211 kann aus einer
Anzahl von ein bis acht Unterspeichern 213 bestehen. Dies
gestattet es, daß der Speicher 211 entsprechend den
Benutzeranforderungen strukturiert wird.
Die Unterspeicher 213 der vorliegenden Erfindung sind
schnelle vierfach überlappte Speicher, die synchrone
und unabhängige MEMIN- und MEMOUT-Busse versorgen. Die
Architektur des Unterspeichers 213 sieht eine Speicher-
Eingabe/Ausgabe-Bus-Architektur vor, die eine stark
vereinfachte Schnittstellendarstellung zwischen der CPU 214
oder anderen Geräten und dem MEMIN-Bus 220 und MEMOUT-
Bus 218 erlaubt. Ein weiteres Merkmal dieser Architektur
ist die Einfachheit, mit der eine interne Steuerung
des Unterspeichers 213 durchgeführt wird. Die Architektur
des Unterspeichers 213 weist auch eine Datenwegstruktur
auf, die es erlaubt, daß innerhalb einer einzelnen
gedruckten Leiterplatte eine wesentlich größere
Speicherkapazität untergebracht werden kann.
Das Auffrischen des Unterspeichers 213 wird durch eine
innerhalb des Unterspeichers 213 angeordnete Schaltung
erreicht, wodurch die der CPU 214 belasteten Gemeinkosten
verringert werden, und benutzt Speicherzugriffzyklen,
die nicht durch die CPU 214 oder den PFP 212 benötigt
werden, wodurch die nutzbare Zugriffszeit des
Unterspeichers 213 vergrößert wird. Der Unterspeicher
213 ist transparent für eine Anordnung von Datenbits
in darin gespeicherten Datenwörtern, einschließlich
Bits eines fehlerkorrigierenden Codes, wodurch eine
maximale Flexibilität bei der Daten-Befehls-Wortspeicherung
geschaffen wird. Die Transparenz des
Unterspeichers 213 für fehlerkorrigierende Codes
steigert die Durchlaufgeschwindigkeit des Unterspeichers
213 durch Übertragen der Fehlerkorrekturfunktion
auf die CPU 214.
Der PFP 312 führt eine Befehlsvorausschau für die CPU
214 aus, indem er vom Speicher 211 eine Folge von Befehlen
vor dem gerade in der Ausführung durch die CPU 214
befindlichen Befehl abruft und speichert. Der PFP 212
verwendet Speicherzugriff-Zyklen, die nicht durch die
CPU 214 benötigt werden, um die Bereitstellungsoperationen
durchzuführen; dadurch vergrößert er die Befehlsausführungsgeschwindigkeit
der CPU 214, indem er die
von der CPU 214 benötigte Zeit für den Zugriff zu Befehlen
verringert.
Die oben genante interne Änderung in der Mikrobefehl-
Logik 242 beinhaltet die Tatsache, daß ein internes
Register (in Fig. 28 gezeigt) für die Makrobefehl-
Speicherung vorgesehen ist; dadurch wird das Befehlsregister
246 für eine andere Verwendung frei. Die Mikrobefehl-
Logik 242 weist außerdem eine Startadressengenerator
(SAGE)-Schaltung auf (in Fig. 28 gezeigt). Der
SAGE decodiert direkt Befehle, die er vom PFP 312
empfangen hat, um die ersten Adressen von Mikrobefehlsfolgen
zu erzeugen. Der SAGE liefert dadurch einen unmittelbaren
Zugriff zu Mikrobefehlsfolgen, wobei er
die zum Veranlassen der Ausführung einer Mikrobefehlsfolge
benötigte Zeit verringert.
Der Konsolen-ROM 258 gestattet es, daß jedes externe
ASC II-Interface-Gerät die Tätigkeit des Rechners 210
direkt kontrolliert.
Nachdem die Struktur der Architektur und gewisse Merkmale
eines die bevorzugte Ausführungsform der vorliegenden
Erfindung verwirklichenden Rechners kurz beschrieben
wurden, wird die Architektur und Wirkungsweise nun im
einzelnen beschrieben.
2. Rechnerarchitektur und Arbeitsweise (Fig. 3 und 4)
A. Struktur (Fig. 3)
In Fig. 3 ist ein detailliertes Blockdiagramm eines
Rechners 310 gezeigt, dessen Architektur die vorliegende
Erfindung verwirklicht. Wie oben für den Rechner 210
beschrieben wurde, weist der Speicher 311 des Rechners 310
ein oder mehr Unterspeicher 313 auf. Der Ausgang des
Speichers 313 ist durch den MEMOUT-Bus 318 mit Eingängen
des MEMOUT-Registers 340 in der CPU 314 und eines
Speichers 330 im PFP 312 verbunden. Der MEMOUT-Bus 318
ist auch mit einer Fehlerkorrektur-Logik 319 (ERCC)
in der CPU 314 verbunden. Der Ausgang des MEMOUT-Registers
340 ist mit dem ALUIN-Bus 324 verbunden, und
der Ausgang des PFP-Speichers 330 ist mit einem PFP-Bus
322 verbunden. Der PFP-Bus 322 ist mit dem ALUIN-Bus
324 verbunden durch einen Transfer-Bus 348, einen
Bus "kurze effektive Adresse" (EFA) 350 und das Befehlsregister
346. Der PFP-Bis 322 ist mit Eingängen
der Mikrobefehl-Logik 342 und einer Speicher-Zuordnungs-
und -Schutz-Schaltung (MAP) 354 verbunden. Der Ausgang
der Mikrobefehl-Logik 342 ist über ein Mikrobefehlregister
(µIR) 344 mit dem ALUIN-Bus 324 verbunden.
Der ALUIN-Bus 324 ist mit einem Eingang der ALU 356
verbunden. Ein erster Ausgang der ALU 356 ist mit dem
ALUOUT-Bus 326 verbunden, und ein zweiter Ausgang ist
mit einem Eingang des MAP 354 verbunden. Der ALUIN-Bus
326 ist mit dem ALUIN-Bus 324 durch einen SWAP-Bus
360 und den Konsolen-ROM 358 verbunden und mit
dem PFP-Bus 322 durch ein Register 352. Der ALUOUT-Bus
326 ist mit Eingängen eines CPU-Befehlszähler
(CPUPC)-Registers 364 und eines Registers 332 "Befehlszähler
für den vom PFP abgerufenen Befehl (PCF)". Der
Ausgang des CPUPC-Registers 364 ist verbunden mit dem
ALUIN-Bus 324, einem Eingang einer PFP-Bereit(PFPRDY)-Logik
334 und mit dem Leseadresseneingang des PFP-Speichers
330. Der Ausgang des PFPPCF-Registers 332
ist mit einem anderen Eingang der PFPRDY-Logik 334
verbunden und mit dem Schreibadresseneingang des
PFP-Speichers 330. Der ALUOUT-Bus 326 ist mit einem
Eingang des MEMIN-Registers 362 durch einen Bus 326 a verbunden,
mit einem "Hoher-Stellenwert-Adresse"-(HIADR)-Bus
328 durch einen Bus 328 b und mit einem Eingang eines
Registers 336 "Befehlszähler für den vom PFP angeforderten
Befehl (PCR)". Die Ausgänge des MAP 354 sind mit dem ALUIN-Bus
324 und dem HIADR-Bus 328 verbunden. Der HIADR-Bus 328 ist
mit dem ALUIN-Bus 324 durch den Transferbus 336 verbunden.
Der HIADR-Bus 328 ist mit Eingängen des MEMIN-Registers
362 und des PFPPCR-Registers 336 verbunden. Die Ausgänge
des MEMIN-Registers 362 und des PFPPCR-Registers
336 sind mit dem MEMIN-Bus 320 verbunden, der mit dem
Eingang des Speichers 311 und mit dem ERCC 319 verbunden
ist. Der Ausgang des PFPPCR-Registers 336 ist mit
einem Eingang einer "Schreiben-Laufender-Block"-Logik (WCB)
338 verbunden, und der MEMIN-Bus 320 ist mit einem anderen
Eingang des WCB 338 verbunden. Ein Takt- und Steuer-Bus
(CC) 321 ist zwischen den Speicher 311, die CPU 314
und den PFP 312 eingeschaltet. Der Daten-E/A-Bus 368
ist mit dem ALUIN-Bus 324 durch einen Bus 370 verbunden,
und mit dem ALUOUT-Bus 326 durch einen Bus 372. Der
E/A-ASC-II-Kanal 374 ist mit dem ALUIN-Bus 324 und dem
ALUOUT-Bus 326 durch einen Universellen-Asynchronen-Empfänger/Sender
(UART) 376 verbunden.
B. Befehlswörter und Datenwörter (Fig. 4)
In Fig. 4 sind bestimmte, im Rechner 310 verwendete Befehlswörter
und Datenwörter gezeigt. Es sind dies Wörter mit 21 Bit,
die in der CPU 314, im PFP 312 und im Speicher 311 verwendet
werden.
In Zeile 1 der Fig. 4 enthalten die Bits 0 bis 15 eines
Datenworts aktuelle Daten; die Bits 16 bis 20 umfassen 5
Bits eines fehlerkorrigierenden Codes. Obwohl diese Struktur
bei der hier beschriebenen bevorzugten Ausführungsform
verwendet wird, ist der Speicher 311 für die Datenwortorganisation
transparent und wird jedes Wort bis zu 21
Bits annehmen, speichern und auslesen.
In Zeile 2 der Fig. 4 ist ein logisches Adreßwort gezeigt.
Wie unten weiter ausgeführt wird, wird ein Abschnitt des
logischen Adreßworts in dem CPUPC-Register 364 als
CPUPC gespeichert. CPUPC wird durch die CPU 314 verwendet,
um die Adresse des Speichers 311 für den gerade in Ausführung
befindlichen Programmschritt einer Folge von
solchen Schritten und Adressen anzuzeigen. CPUPC wird
in geeigneter Weise bei der Ausführung jedes Programmschritts
inkrementiert. Das Bit 0 der logischen Adresse
wird im allgemeinen, aber nicht notwendigerweise als
ein indirektes Adreß-Bit verwendet; es zeigt dabei an,
daß der unter diese Adresse im Speicher 311 gespeicherte
Befehl eine Adresse ist, die zu dem gewünschten Befehl
führt. Die Bits 1 bis 15 enthalten die aktuelle logische
Adresse. Von diesen Bits sind die Bits 6 bis 15 die niedrigwertigen
Bits der Adresse, und sie werden beim Adressieren
des Speichers 311 direkt verwendet. Die Bits 1 bis 5 umfassen
die hohen Stellenwerte der Adresse, und sie können,
wie unten noch erläutert wird, als direkte echte Adresse
verwendet werden. Die Bits 1 bis 5 können auch, wie unten
noch weiter erläutert wird, als kartierte (MAPped) oder durch
MAP verarbeitete Bits bei Übersetzung einer logischen Adresse
in eine echte Adresse im Speicher 311 verwendet werden. Das
kartierte Adressieren gestattet einem Benutzer den Zugriff zu
einem Speicherraum innerhalb des Speichers 311, der größer
sein kann als bei direkter Adressierung mit 15 Bits der
logischen Adresse. Das Kartieren wird auch verwendet, um
Adressenblöcke innerhalb des Speichers 311 unterschiedlichen
konkurrierenden Benutzern zuzuordnen. In jedem
Falle werden 15 Bits der logischen Adresse in 20 Bits der
echten Adresse übersetzt.
Zeile 3 von Fig. 4 zeigt die echte Adresse, wie sie auf
dem MEMIN-Bus 320 an den Speicher 311 geliefert wird. Wie
unten noch näher beschrieben wird, hat ein Unterspeicher
313 innerhalb des Speichers 311 die Struktur von vier
Speicher-Moduln, von denen jeder zwei Speicherbänke enthält,
wobei jede Speicherbank als ein Adressenraum mit
128 Reihen mal 128 Spalten organisiert ist. Jeder Unterspeicher
313 ist vorzugsweise innerhalb einer einzelnen
Leiterplatte enthalten, und der Speicher 311 kann bis zu
acht solche Unterspeicher 313 enthalten. Demzufolge enthalten
die Bits 16 bis 18 der echten Adresse die Leiterplatten-Auswahl-Bits
der Unterspeicher 313.
Die Bits 14 und 15 enthalten Modul-Auswahl-Bits innerhalb
eines Unterspeichers 313. Das Bit 19 bildet ein Bankauswahlbit
innerhalb eines von vier Moduln eines Unterspeichers
313. Die Bits 0 bis 6 werden als Zeilenadreßbits
innerhalb einer solchen Bank verwendet, und die Bits
7 bis 13 werden als Spaltenadreßbits verwendet. Das Bit
20 wird nicht verwendet, es ist für eine zukünftige Erweiterung
des Speichers 311 reserviert.
Zeile 4 von Fig. 4 zeigt die Verwendung einer logischen
Adresse als direkte echte Adresse. Die Bits 1 bis 15 der
logischen Adresse werden direkt als Bits 1 bis 15 der
echten Adresse verwendet. Das Bit 0 und die Bits 16 bis 19
der echten Adresse werden zwangsweise auf 0 gebracht.
Wie durch das echte Adreßwort in Zeile 3 gezeigt ist,
hat jeder Unterspeicher 313 eine Adressierfähigkeit von
128K Worten (K=1024), und der Speicher 311 hat mit acht
Unterspeichern 313 eine maximale Kapazität von 1 000 000
Worten. Wie in Zeile 4 gezeigt ist, erlaubt das direkte
echte Adressieren (Adressenbits 1 bis 15) einem Benutzer
einen Zugriff zu nur 32K (215) Worten des Speichers. Eine
direkte echte Adresse kann eine Leiterplatte des Speichers
313 (die Bits 16 bis 19 sind 0), alle vier Module der
Leiterplatte (Bit 14 und 15) und eine Bank in jedem Modul
(Bit 19 ist 0) adressieren. In jeder Bank sind alle 128
Spalten verfügbar (Bits 7 bis 13), aber nur die Hälfte der
Zeilen (Bit 0 ist 0). Kartieren ist erforderlich, um einen
Zugriff zum gesamten Speicherraum des Speichers 311 oder
eines Unterspeichers 313 zu gewinnen.
Zeile 5 der Fig. 4 zeigt die Übersetzung einer logischen
Adresse in eine kartierte echte Adresse. Die Bits 6 bis 15
der logischen Adresse werden als Bits 6 bis 15 der echten
Adresse verwendet. Die Bits 1 bis 5 der logischen Adresse
werden durch MAP übersetzt in die Bits 0 bis 5 und 16 bis
19 der echten Adresse. Zwanzig Adreßbits 0 bis 19 erlauben
daher dem Benutzer den Zugriff zur vollen Kapazität
des Speichers 311 oder eines Unterspeichers 313.
C. Arbeitsweise (Fig. 3)
Es wird wieder auf Fig. 3 Bezug genommen; die CPU 314 hat
direkten Zugriff zum Speicher 311, um Befehle und Daten
in den Speicher 311 einzuschreiben oder aus ihm auszulesen.
Die CPU 314 hat auch einen indirekten Zugriff zum
Speicher 311 durch den PFP 312, der die vor dem gerade
durch die CPU 314 ausgeführten Befehle liegenden Befehle
abruft und speichert.
Zunächst wird der direkte Zugriff zwischen der CPU 314
und dem Speicher 311 betrachtet. Das Ausgangssignal des
Speichers 311 wird direkt dem ALUIN-Bus 314 und der ALU
356 durch das MAMOUT-Register 340 zugeführt. In ähnlicher
Weise hat die ALU 356 direkten Zugriff zum Eingang des
Speichers 310, um direkt Daten oder Befehle durch den
ALUOUT-Bus 326 und das MEMIN-Register 326 einzugeben oder
anzufordern. Datenworte werden dem MEMIN-Register 362
direkt von dem ALUOUT-Bus 326 zugeführt, jedoch hängt die
Lieferung von Adressen an den Speicher 310 davon ab, ob
der Benutzer die direkte Adressierung des Speichers 311
oder eine kartierte Adressierung verwendet. Beim direkten
Adressieren werden die logischen Adreß-Bits 6 bis 15 dem
MEMIN-Register 362 durch den Bus 326 a zugeführt; die
logischen Adreßbits 0 bis 5 und die Bits 16 bis 19 werden
durch den Bus 326 b und den HIADR-Bus 328 hindurchgeliefert.
Wenn eine Kartierung verwendet wird, werden die logischen
Adreßbits 6 bis 16 dem MEMIN-Register 326 von dem ALUOUT-Bus
326 und dem Bus 326 a zugeführt. Die logischen Adreßbits
1 bis 5 werden von der ALU 356 der MAP 354 zugeführt.
Die MAP 354 übersetzt die logischen Adreßbits 1 bis 5
in entsprechende Bits 0 bis 5 und 16 bis 19 der echten
Adresse und liefert diese Bits durch den HIADR-Bus 328
an das MEMIN-Register 362.
Es wird nun der indirekte Zugriff zwischen der CPU 314
und dem Speicher 311 betrachtet. Der PFP 312 führt eine
Befehlsvorausschau für die CPU 314 durch, indem er eine
Folge von Befehlen vor dem augenblicklich durch die CPU
314 ausgeführten Befehle aus dem Speicher 310 abruft und
speichert. Die CPU 314 verfolgt das gerade ausgeführte
Programm durch Speicherung eines Teils der logischen
Adresse des gerade ausgeführten Befehls in dem CPU PC-Register
364; diese Zahl wird als CPU-Befehlszählerstand
(CPUPC) bezeichnet. Der anfängliche Befehlszählerstand
einer Befehlsfolge wird in das CPUPC-Register 364 von
der ALU 356 durch den ALUOUT-Bus 326 geladen. Der Befehlszählerstand
wird dann jedes Mal, wenn ein Befehl ausgeführt
ist, um 1 inkremeniert, falls Befehle aus dem
Speicher 311 aufeinanderfolgend abgerufen werden müssen.
Falls der laufende Befehl einen Sprung oder eine ähnliche
Operation erfordert, wird ein neuer Befehlszählerstand
in das CPUPC-Register 364 geladen. Die echte Adresse
des ersten Befehls der Befehlsfolge wird in das PFPPCR-Register
336 als Wert PFPPCR geladen. Wie beim Laden der
Adressen in das MEMIN-Register 362 können die echten
Adressen direkt oder kartiert sein. Wenn sie direkte
Adressen sind, wird die echte Adresse von der ALU 356 durch
den Bus 326 c geliefert. Wenn die MAP 354 arbeitet, werden
die Bits 6 bis 15 durch den Bus 326 c und die kartierten
Bits 1 bis 5 und 6 bis 9 durch den HIADR-Bus 328 hindurch
von der MAP 354 her geladen. Zur gleichen Zeit werden die
niedrigstwertigen Bits 12 bis 15 der echten Adresse in das
PFPPCF 332 als PFPPCF geladen. Daher repräsentiert der
Befehlszählerstand (CPUPC) die erste logische Adresse der
Folge oder Sequenz, während PFPPCR und PFPPCF die erste
echte Adresse repräsentieren.
Danach kann bei jedem verfügbaren Speicherzugriffzyklus,
der nicht für andere Zwecke, beispielsweise von der
CPU 314 oder den E/A-Geräten 316 benötigt wird, die echte
Adresse PFPPCR im PFPPCR-Register 336 auf den MEMIN-Bus
320 gegeben werden, um den entsprechenden gespeicherten
Befehl aus dem Speicher 311 zu lesen. Ein durch PFPPCR
angefordertes Wort, das auf dem MEMOUT-Bus 318 erscheint,
wird im PFP-Speicher 330 unter einer durch PFPPCF bestimmten
Adresse gespeichert. PFPPCR und PFPPCF werden immer
dann inkrementiert, wenn ein Wort aus dem Speicher 311
gelesen wird. Das PFPPCR-Register 336 erzeugt hierdurch
und verfolgt angeforderte Adressen; das PFPPCR-Register
322 verfolgt abgerufene Adressen und wählt die Speicheradressen
im PFP-Speicher 330. Das WCB 338 vergleicht die
durch PFPPCR angeforderten Adressen mit durch die CPU 314
eingeschriebenen Adressen und gibt eine Warnung ab, falls
die CPU 314 in die durch den PFP 312 angeforderten Befehlsadressen
schreibt.
Die Übertragung von Wörtern von PFP-Speicher 330 zur
CPU 314 wird durch das CPUPC-Register 364 und die PFPRDY-Logik
334 gesteuert. Der im CPUPC-Register 364 gespeicherte
Befehlszählerstand (CPUPC) wird als Leseadresse
zum PFP-Speicher 330 geliefert. Dadurch werden
Befehle im PFP-Speicher 330 auf den PFP-Bus 322 übertragen
und sind für die Mikrobefehl-Logik 342 und das
Befehlsregister 346 zur Benutzung verfügbar, wie es vom
Programm verlangt wird. Der PFPRDY 334 vergleicht PFPPCF-Schreibadressen
mit CPUPC-Leseadressen und zeigt der
CPU 314 an, ob der PFP 312 den von der CPU 314 angeforderten
nächsten Befehl hat.
Es werden nun andere Merkmale der CPU 314 besprochen.
Die ERCC-Logik 319 überwacht alle Datenwörter oder Befehlswörter,
die in den Speicher 311 eingeschrieben oder
aus ihm ausgelesen werden. Die ERCC-Logik 319 erzeugt
Fehlerkorrekturbits der durch den MEMIN-Bus 320 in den
Speicher 311 geschriebenen Wörter. Wenn ein einen Fehler
enthaltendes ausgelesenes Wort auf dem MEMOUT-Bus 318
erscheint, verhindert die ERCC-Logik 319 eine Ausgabe
des Speichers 311 und erzeugt ein korrigiertes Wort. Die
ERCC-Logik 319 bringt das korrigierte Wort auf den
MEMOUT-Bus 318 anstatt des fehlerhaften Worts. Der Transfer-Bus
348 gestattet es, daß Wörter auf dem PFP-Bus 322
direkt zur ALU 356 durch den ALUIN-Bus 324 übertragen werden.
Der Bus "kurze effektive Adresse" 350 gestattet es,
daß die acht niedrigstwertigen Bits des Worts auf dem
PFP-Bus 322 zum ALUIN-Bus 324 als eine kurze effektive
Adresse übertragen werden, d. h., zum Erzeugen einer
Speicheradresse, die mit einer z. Zt. bekannten Speicheradresse
in Beziehung steht. Das Register 352 gestattet es,
daß das Ausgangssignal der ALU 356 auf dem ALUOUT-Bus 326
auf den PFP-Bus 322 übertragen wird, beispielsweise als
Eingangssignal für die Mikrobefehl-Logik 342, das Befehlsregister
346 oder den MAP 354. Der SWAP-Bus 360 gestattet
es, daß Bytes auf dem ALUOUT-Bus 326 umgekehrt werden
und auf dem ALUIN-Bus 324 als ein Eingangssignal für die
ALU 356 angeordnet werden. Der Transferbus 366 gestattet
es, daß eine Adresse auf dem HIADR-Bus 328 auf den
ALUIN-Bus 324 übertragen wird.
Es wird nun auf die E/A-Geräte 316 und den Konsolen-ROM 358
Bezug genommen. Der E/A-Datenkanal 368 und die E/A-Busse
370 und 372 gestatten es, daß Daten zwischen dem ALUIN-Bus
324 oder dem ALUOUT-Bus 326 und einem externen Gerät
übertragen werden. In ähnlicher Weise gestattet der
UART 376 eine Übertragung von Daten und Befehlen zwischen
dem ALUIN-Bus 324 oder dem ALUOUT-Bus 326 und einem
externen Gerät, das am E/A-ASCII-Bus 374 angeschlossen
ist. Der Konsolen-ROM 358 ist ein Interface-Gerät, das
es gestattet, daß irgendein externes Gerät mit beispielsweise
einer ASCII-Schnittstelle als Rechnerkonsole arbeitet.
Externe ASCII-Zeichen werden durch den UART 376
empfangen, in einen binären Code umgesetzt und auf den
ALUIN-Bus 324 gebracht. Sie werden unter Verwendung der
ALU 356 verarbeitet und erscheinen auf ALUOUT 326 als
Konsolen-ROM-(358)-Adressen. Die Adressen auf dem ALUOUT-Bus
326 werden dann in Befehle in Maschinensprache durch
den Konsolen-ROM 358 übersetzt.
Nach der Beschreibung der Architektur und der Arbeitsweise
des Rechners 310 auf der Ebene eines Blockdiagramms wird
nun im einzelnen die Struktur und Arbeitsweise eines Unterspeichers
313, des PFP 312, der Mikrobefehl-Logik 342 und
des Konsolen-ROM 358 beschrieben.
3. A. Unterspeicher 313
Jeder Unterspeicher 313 mag zugänglich sein als ein dynamischer
Speicher mit 128K (K=1024) Wörtern mit einer
Länge von 21 Bits, der auf einer einzelnen Leiterplatte
montiert ist, Vierfach-Überlappung und getrennte Eingangs-
und Ausgangs-Busse aufweist. Eine spezielle Struktur des
Unterspeichers 313 gestattet es, daß bis zu acht solche
Leiterplatten parallel geschaltet werden, so daß hierdurch
für den Speicher 311 eine Kapazität von bis zu
1 000 000 Wörtern geschaffen wird. Man beachte, daß andere
Strukturen für den Unterspeicher 313 verwendet werden
können. Beispielsweise kann der Unterspeicher 313 eine
Wortlänge von 16 oder 32 Bit haben, oder er kann eine andere
Anzahl als 128K Wörter enthalten. Die Dauer der Zyklusperiode
des Unterspeichers 313 beträgt 400 ns und die
Dauer der Zyklusperiode des Eingangs/Ausgangs-Bus ist
100 ns. Die Zugriffszeit zum Lesen beträgt 500 ns, die
Zugriffszeit zum Schreiben 200 ns, und das Auffrischintervall
beträgt 12,8 µs. Es wird darauf hingewiesen, daß
andere Parameter und Perioden verwendet werden können.
B. Unterspeicher 313, Signal-Glossar
Das folgende Glossar identifiziert und definiert für die
Zwecke der folgenden Diskussion jedes Signal, das in
den Bussen und Steuerleitungen vorhanden ist, die oben
in der Struktur des Unterspeichers 313 genant wurden.
Andere Signale werden, wenn nötig, während der Diskussion
der detaillierten Schaltung des Unterspeichers 313 eingeführt
und definiert werden.
(1)MEMIN-Bus 320: (MEMORY IN) Eingabebus mit 21
Leitungen von der CPU 314 oder dem PFP 312, der
Daten und Adressen transportiert.
(2)CC-Bus 553; (Control and Clock) führt Steuer-
und Taktsignale zwischen dem Puffer 534, der
Speicherlogik 538, der CPU 314 und dem PFP 312.
(a)MEMWRITE: (MEMORY WRITE) Steuersignal, das anzeigt,
daß Daten in den Unterspeicher 313 geschrieben
werden sollen.
(b)MEMSTART: (MEMORY START) Steuersignal, das anzeigt,
daß ein Lese- oder Schreibzyklus des
Unterspeichers 313 veranlaßt werden soll.
(c)INHSEL: (INHIBIT SELECT) Inhibit (Blockiersignal) für den Unterspeicher
313; gestattet, daß eine Merhzahl von
Geräten, die dasselbe Adressenfeld wie der
Speicher 311 verwenden, mit dem MEMIN-Bus 320 und
dem MEMOUT-Bus 318 ohne Adressierungskonflikt
verbunden werden.
(d)MEMWAIT: (MEMORY WAIT) verzögert die Tätigkeit des
Unterspeichers 313 nach dem Adressieren des Unterspeichers
313; wird verwendet, wenn der Unterspeicher
313 beispielsweise mit einem langsameren
Speicher in Verbindung steht.
(e)20 CLK: 50-ns-Taktsignal.
(f)MEMCLK: 100-ns-Takt in Phase mit 20 CLK.
10 CLK: 100-ns-Takt, phasensynchronisiert mit 20 CLK.
(g)PWROK: (POWER OKAY) Signal von der Stromversorgung
des Rechners, das bevorstehende Auftreten eines
Fehlers der Stromversorgung anzeigt.
(h)MEMSORRY: (MEMORY SORRY) Steuersignal vom Unterspeicher
313 an die CPU 314, das anzeigt, daß eine
angeforderte Speicheradresse gegenwärtig nicht
verfügbar ist; der Speichermodul, in dem sie angeordnet
ist, führt z. Zt. gerade einen Speicherlese-
oder Schreibzyklus aus.
(i)MOENB: (MEMORY OUTPUT ENABLE) Signal vom Bustreiter
550 an beispielsweise die CPU 314, das anzeigt, daß
ein ausgelesenes Wort vom Speicher 313 auf dem
MEMOUT-Bus 318 vorhanden ist.
(j)MODIS: (MEMORY OUTPUT DATA INHIBIT) Inhibitsignal
von beispielsweise der ERCO-Logik 319 in der CPU
314, das eine Ausgabe des Unterspeichers 313 an
den MEMOUT-Bus 318 verhindert.
(3)MEMOUT-Bus 318: (MEMORY OUT) Ausgabebus des Unterspeichers
313 mit 21 Leitungen.
Es können nicht zwei aufeinanderfolgende
Lese- oder Schreibanforderungen demselben Speichermodul
innerhalb eines Intervalls von 400 ns zugeführt
werden; eine solche Anforderung kann auch nicht während
einer Auffrischung gemacht werden. Wenn eine derartige
Störung der Anforderung auftritt, wird dieses Ereignis
durch die Speicherlogik erkannt.
Die Speicherlogik liefert dann das Signal
MEMSORRY an die CPU 314. Wenn das
Signal MEMSORRY auftritt, wird das Signal MEMCLK für die
CPU 314, den PFP 312 und alle anderen mit dem MEMOUT-
Bus 318 in Verbindung stehenden Geräte ausgesetzt. Das
Signal MEMCLK erscheint wieder, wenn der früher angeforderte
Lese- oder Schreibzyklus vollendet ist. Dieser
Vorgang wird bezeichnet als erweiterter Speichertaktzyklus.
Wie unten mit Bezug auf den PFP 312 besprochen werden wird,
werden Anforderungsstörungen zwischen dem PFP 312 und
der CPU 314 oder anderen Geräten vermieden. Ein Signal
von der CPU 314 an den PFP 312 zeigt an, wenn die
CPU 314 gerade einen Speicherzugriff anfordert, wodurch
bewirkt wird, daß der PFP 312 Speicheranforderungen auf
den nächsten verfügbaren Speicherbuszyklus verschiebt.
In gleicher Weise veranlaßt ein Signal MEMSORRY, das von
einer vom PFP 312 erzeugten Anforderung stammt, und eine
frühere Anforderung von einem anderen Gerät den PFP 312,
eine Anforderung zu verschieben, blockiert aber nicht
das Signal MEMCLK.
C. Zusammenfassung von Merkmalen des Unterspeichers 313
Bestimmte Merkmale des Unterspeichers 313, die neben anderen
oben beschrieben sind, sind:
1.: Es sind voneinander getrennte Busse MEMIN-Bus 320 und
MEMOUT-Bus 318 vorgesehen. Jeder Bus hat daher entweder
eine einzelne Treiberschaltung und eine Mehrzahl von
Empfängern oder eine Mehrzahl von Treibern und einen einzelnen
Empfänger. Dieses Merkmal verringert die kapazitive
Belastung des MEMIN-Bus 320 und des MEMOUT-Bus 318, z. B.
aufgrund der Verdrahtung der Busse, der Stecker auf der
Rückseite des Pults, und der I/C-Eingänge und Ausgänge,
und verringert auf der Vielzahl von Abschlüssen beruhende
Busreflexionen. Dies gestattet es, daß der Entwerfer eines
Rechners bestimmt, wo jeder einzelne Bus abgeschlossen
wird, um minimales Rauschen zu erzielen, und vergrößert
durch Verringerung der Belastung der Busse die Datenbandbreite,
die durch die MEMIN- und MEMOUT-Busse zur
Verfügung gestellt werden kann.
2.: Die Speichermodule und die Speicherlogik
führen innerhalb desselben Intervalls (das normalerweise
400 ns betragen mag) alle Speicheroperationen aus,
das sind Lesezyklen, Schreibzyklen, und Auffrischzyklen.
Die Zyklusperiode des Unterspeichers 313 wiederum ist ein
Vielfaches der Zyklusperiode des Speicherbusses (die 100 ns
betragen mag). Dies gestattet, gemeinsam mit der unabhängigen
und überlappten Arbeitsweise der Module,
einen Speicherzugriff in Intervallen des Speicherbuszyklus.
Zusätzlich ist die Verbindung (Interface) zwischen
beispielsweise der CPU 314 oder dem PFP 312 und den
MEMIN- und MEMOUT-Bussen vereinfacht. Wie unten unter
Bezugnahme auf PFP 312 weiter erläutert wird, führt ein
mit dem Speicher 313 in Verbindung stehendes Gerät einen
Schreibzyklus dadurch aus, daß es die Schreibadresse auf
den MEMIN-Bus während eines ersten Speicherzyklus und
die einzuschreibenden Daten auf den MEMIN-Bus beim nächsten
Speicherbuszyklus bringt. Ein Lesezyklus erfordert nur,
daß ein anforderndes Gerät eine Leseadresse auf den MEMIN-Bus 320 während
eines Speicherbuszyklus bringt, eine ganze Anzahl (z. B.
4) Speicherbuszyklen wartet und die Daten auf dem MEMOUT-Bus
318 in seine eigenen Eingaberegister überträgt. Das
Lesezyklus-Interface ist weiter dadurch vereinfacht, daß
vorgesehen ist, daß MEMSORRY einen erweiterten Buszyklus
erzeugt, wenn eine Störung bei der Speicheranfrage auftritt.
4. Bereitstellungsprozessor (PFP) 312 (Fig. 3, 5-7)
Der PFP 312 führt eine Vorausschau nach Befehlen für die
CPU 314 durch, indem er vom Speicher 311 eine Folge von
Befehlen vor dem gerade in der Ausführung durch die CPU 314
befindlichen Befehl abruft und im PFP-Speicher 330
speichert.
Die Struktur und die allgemeine Arbeitsweise des PFP 312
sind oben bei der Diskussion der Architektur und Arbeitsweise
des Rechners 310 beschrieben worden. Die folgende
Diskussion beginnt mit einem Glossar der im PFP 312 vorhandenen
Signale, gefolgt von einer Diskussion der Arbeitsweise
des PFP 312 auf der Ebene eines Blockdiagramms. Die
Schaltung des PFP 312 wird dann dargestellt und schließlich
werden gewisse Merkmale des PFP 312 zusammengefaßt.
A. PFP 312, Signal-Glossar
(1) Bussignale
(a)MEMOUT (0-19): (MEMORY OUT) 20-Bit-Befehlswort,
das auf dem MEMOUT-Bus 318 erscheint.
(b)MEMIN (0-19): (MEMORY INPUT) echte Adresse mit
20 Bit für den Speicher 311.
(c)CPUPC (8-15): (CPU PROGRAM COUNT) die acht
niedrigstwertigen logischen Adressbits im
CPU PC-Register 364; verwendet als Befehlszähler
und als Leseadresseneingangssignal für
den PFP-Speicher 330.
(d)PFPPCR (0-19): (PFP PROGRAM COUNT, REQUESTED)
echte Adresse mit 20 Bit im PFP PCR-Register 336.
(e)PFPPCF (12-15): (PFP PROGRAM COUNT, FETCHED)
niedrigwertige logische Adressbits im PFP PCF-
Register 332, verwendet als Schreibadressen-
eingangssignale für den PFP-Speicher 330.
(f)HIADR (0-5, 16-19): (HIGH ORDER ADDRESS)
direkte oder kartierte hochwertige echte
Adressbits, die auf dem HIADR-Bus 328 erscheinen.
(g)ALUOUT (9-15): (ALU OUTPUT) niedrigwertige
echte Adressbits, die auf dem ALUOUT-Bus 326
und dem Bus 326c erscheinen.
(2) Einzelne Steuersignale
(a)ALCCRFEXT: (ALC CLEAR TO REQUEST FETCH, EXTENDED)
Signal, das anzeigt, daß die CPU 314 einen ALC-
Befehl ausführt, der es der PFP 312 gestattet,
eine Abrufoperation auszuführen.
(b)ALC CYCLE: (ALC CYCLE) Signal, das anzeigt,
daß die CPU 314 dabei ist, einen Befehl der
arithmetischen und logischen Klasse (ALC) auszuführen.
(c)CONSOLEMODE: (CONSOLE MODE) Signal, das anzeigt,
daß der Rechner 310 unter Steuerung einer externen
Konsole arbeitet.
(d)CRF: (CLEAR TO REQUEST FETCH) Signal, das den
PFP 312 zur Ausführung einer Abrufoperation
aktiviert.
(e)CTEQ 0: Signal, das anzeigt, daß der PFP 312
keine Befehle für die CPU 314 hat.
(f)CTEQ 1: Signal, das anzeigt, daß der PFP 312
nur einen verbleibenden Befehl im Speicher
330 für die CPU 314 hat.
(g)CTGT 1: Signal, das anzeigt, daß der PFP 312
mehr als einen Befehl im Speicher 330 für
die CPU 314 gespeichert.
(h)DONECURRBLK: (DONE CURRENT BLOCK) Signal,
das anzeigt, daß der PFP 312 das Ende des
Blocks der z. Zt. für den PFP 312 verfügbaren
Adressen des Speichers 311 erreicht hat.
(i)ENB 10 CLK: (ENABLE 10 CLK) Allgemeines Aktivierungssignal,
das zum Synchronisieren
von MEMCLK und USEQCLK mit 10 CLK und somit
mit 40 CLK verwendet wird.
(j)ENDUCYCLE: (END MICROCYCLE) Signal, das anzeigt,
daß die Mikrobefehllogik 342 dabei ist, eine
laufende Mikrobefehlssequenz abzuschließen,
und daß ein neuer Mikrobefehl beginnen wird.
(k)EOCB: (END OF CURRENT BLOCK) Signal, das anzeigt,
daß der PFP 312 die letzte verfügbare
Adresse des z. Zt. für den PFP 312 verfügbaren
Blocks von Adressen des Speichers 311 abgerufen
hat.
(l)FETCHSTARTED: (FETCH STARTED) Signal, das anzeigt,
daß der PFP 312 gerade eine Bereitstelloperation
anführt.
(m)FULL (FULL) Signal, das anzeigt, daß der PFP-
Speicher 330 voll ist und daß der PFP 312
keine weiteren Befehle abrufen sollte.
(n)GPRESET: (GENERAL PURPOSE PRESET) Vielzweck-
Voreinstellsignal für den Rechner
310.
(o)GPRESET: (GENERAL PURPOSE RESET) Vielzweck-
Rücksetzsignal für den Rechner 310.
(p)HSCREQ: (HIGH-SPEED CHANNEL REQUEST) Signal,
das anzeigt, daß ein Gerät mit einem Hochgeschwindigkeitskanal
einen Zugriff zum
Speicher 311 belegt hat.
(q)INCPC: (INCREMENT PROGRAM COUNT) Taktsignal
zum CPUPC-Register 364 zum Incrementieren von
CPUPC (Befehlszählerstand).
(r)INCPCENB: (INCREMENT PROGRAM COUNT ENABLE) Signal,
das anzeigt, daß PC (Befehlszählerstand) inkrementiert
werden muß.
(s)INSTSAGEALC: (INSTRUCTION SAGE ALC) Signal für die
Mikrobefehllogik 342, das anzeigt, daß die CPU 314
dabei ist, einen ALC-Befehl auszuführen; es zeigt an,
der PFP 314 eine Abrufoperation ausführen darf.
(t)LOADINST: (LOAD INSTRUCTION) Taktimpuls, der anzeigt,
daß ein angefordertes Befehlswort auf dem MEMOUT-
Bus 318 vorhanden ist; verwendet, um das Befehlswort
vom MEMOUT-Bus 318 in den PFP-Speicher 330 zu laden;
verwendet, um den PFPPCF mit vier Bit im PFPPCF-
Register 332 zu inkrementieren.
(u)MEMCLK: (MEMORY CLOCK) Speicherbustakt mit 100 Nanosekunden,
phasensynchronisiert mit 40 CLK.
(v)MEMCLKENB: (MEMCLK ENABLE) Signal, das MEMCLK beim
Auftreten von MEMSORRY oder MEMWAIT blockiert.
(w)MEMSORRY: (MEMORY SORRY) Signal, das anzeigt, daß
eine Störung bei einer Anforderung des Speichers 311
aufgetreten ist.
(x)MEMSTART: (MEMORY START) Signal für den Speicher 311,
das einen Lese- oder Schreibzyklus des Speichers 311
veranlaßt.
(y)MEMSTARTCPU: (MEMORY START, CPU) Das durch die CPU
314 gelieferte Signal MEMSTART.
(z)MEMSTARTPFP: (MEMORY START, PFP) Das durch den PFP
312 gelieferte Signal MEMSTART.
(aa)MEMWAIT: (MEMORY WAIT) Signal, das die Tätigkeit des
Speichers 311 verzögert, nachdem ein Lese- oder Schreib-
zyklus vernalaßt worden ist; verwendet, um die Tätigkeit
des Speichers 311 und eines anderen Geräts mit
einer niedrigeren Datenübertragungsrate zu koordinieren.
(bb)µSEQCLK: (MICROSEQUENCE CLOCK) Durch die Mikrobefehllogik
342 geliefertes Taktsignal; verwendet, um die
hochwertigen Bits der echten Adresse in das PFPPCR-
Register 336 zu laden.
(cc)µSEQTEST: (MICROSEQUENCE TEST) Signal, das anzeigt,
daß gerade eine Bedingung durch den Rechner 310 geprüft
wird.
(dd)NANOCLK: (NANOCLOCK) Vom MEMCLK abgeleitetes innerhalb
des PFP 312 verwendetes Taktsignal; es ist für
weinzelne MEMCLK-Perioden blockiert, wenn der Zugriff
zum Speicher 311 durch einen Hochgeschwindigkeitskanal
belegt ist.
(ee)PCDEST: (PROGRAM COUNT DESTINATION) Signal, verwendet,
um die niedrig-wertigen Bits der logischen Adresse
in das CPUPC-Register 364 zur Benutzung als Befehlszählerstand
zu laden.
(ff)PCDESTENB: (PROGRAM COUNT DESTINATION ENABLE) Singal,
das anzeigt, daß ein Abruf eines neuen Blocks von
Befehlsadressen im Speicher 311 veranlaßt werden
muß; es aktiviert das Laden von neuen logischen und
echten Adressen in das PFPPCF-Register 336, das
CPUPC-Register 364 und das PFPPCF-Register 332; verwendet
zur Aktivierung der Ausgänge des Speichers
330, um ein gespeichertes Befehlswort auf den PFP-
Bus 322 zu übertragen; verwendet, um die vier niedrigstwertigen
Bits der logischen Adresse in das PFPPCF-
Register 332 zu laden.
(gg)PCSRCENB: (PROGRAMM COUNT SOURCE ENABLE) Aktivierungssignal
an das CPUPC-Register 364 zur Übertragung von
CPUPC auf den ALUIN-Bus 324.
(hh)PFPDESTENB: (PFP DESTINATION ENABLE) Aktivierungssignal
an den PFP-Speicher 330 zum Übertragen eines Befehls
auf den PFP-Bus 322.
(ii)PFPPCT 2: (PFP PROGRAM COUNT TERMINAL COUNT 2)
Signal, das anzeigt, daß der PFP 312 die letzte
verfügbare Adresse im Block der Adressen des Speichers
311 erreicht hat, der augenblicklich für den PFP 312
zugänglich ist.
(jj)PFPREADY: (PFP READY) Signal an die CPU 314, das anzeigt,
daß ein durch die CPU 314 angeforderter Befehl
im PFP 312 verfügbar ist.
(kk)PFPREQ: (PFP REQUEST) Signal, das anzeigt, daß der
PFP 312 gerade einen Zugriff zum Speicher 311 anfordert,
um eine Bereitstelloperation auszuführen.
(ll)PFPREQFETCH; (PFP REQUEST FETCH) Signal, das anzeigt,
daß der PFP 312 aktiviert ist, einen Zugriff zum
Speicher 311 für eine Bereitstelloperation anzufordern.
(mm)RANDCRF: (RANDOM MICROINSTRUCTION CLEAR TO REQUEST
FETCH) Signal von der Mikrobefehl-Logik 342, das anzeigt,
daß gerade ein Mikrobefehl ausgeführt wird,
der dem PFP 312 gestattet, eine Abrufoperation auszuführen.
(nn)SAGDUPDATEPC: (SAGE UPDATE PROGRAM COUNT) Signal von
der Mikrobefehl-Logik 342, das anzeigt, daß der Befehlszählerstand
CPUPC inkrementiert werden muß.
(oo)TESTRESET: (TEST RESET) Während der Prüfsequenz des
Rechners 310 verwendetes Rücksetzsignal.
(pp)UPDATEPC: (UPDATE PROGRAM COUNT) Signal von der ALU
356, das anzeigt, daß der Befehlszählerstand (CPUPC)
inkrementiert werden muß.
(qq)WCBF: (WRITE CURRENT BLOCK FAULT) Signal, das anzeigt,
daß ein möglicher Befehlskonflikt besteht zwischen
einem modifizierten Befehl im für den PFP 312 zugänglichen
Block von Adressen des Speichers 311 und einem
im Speicher 330 gespeicherten Befehl.
(rr)WRITECURRCLK: (WRITE CURRENT CLOCK) Signal, das anzeigt,
daß ein Schreibzyklus des Speichers 311 in
dem Block von Adressen des Speichers 311 gerade auftritt,
der zur Zeit für den PEP 312 zugänglich ist.
(ss)10CLK: 100-ns-Takt, phasensynchronisiert mit 10CLK.
(tt)20CLK: 50-ns-Takt, phasensynchronisiert mit 40CLK.
(uu)40CLK: 25-ns-Takt.
B. Wirkungsweise des PFP 312 (Fig. 3)
In Fig. 3 wird, wie oben diskutiert, eine Folge von Befehlen,
die in Benutzerprogramm bilden, im allgemeinen
in aufeinanderfolgenden Adressenstellen im Speicher 311
gespeichert. Die CPU 314 verfolgt die Ausführung des
Programms durch Speichern eines Teils der logischen Adresse
eines gerade durch die CPU 314 in Ausführung befindlichen
Befehls im CPUPC-Register 364 als CPU-Befehlszählerstand
(CPUPC). CPUPC wird teilweise durch die ALU 356 und den
MAP 354 verwendet, um direkte und kartierte echte Adressen
für den Speicher 311 zu erzeugen.
Wenn ein Programm ausgeführt wird, wird CPUPC der ersten
Befehlsadresse in das CPUPC-Register 364 geladen. Dieser
anfängliche CPUPC wird dann verwendet, um eine anfängliche
echte Adresse zu bilden, die, wie oben beschrieben,
in das PFPPCR-Register 336 geladen wird. Ein Teil des Anfangs-CPUPC
wird nachfolgend inkrementiert, während dieser oder
nachfolgende Befehlsschritte durch die CPU 314 ausgeführt
werden, um aufeinderfolgende Befehle vom PFP 330 abzurufen.
Wenn Befehle nicht in aufeinanderfolgenden Adressen
des Speichers 311 angeordnet sind, z. B. wegen eines Sprungbefehls,
wird ein neuer Anfangs-CPUPC in das CPUPC-Register
364 geladen. Der neue CPUPC erzeugt dann eine neue anfängliche
echte Adresse für den neuen Block der sequentiellen
Befehle.
Die vom CPUPC beim Start jedes Blocks der sequentiellen
Befehle gebildeten anfänglichen echten Adressen werden
in das "Bereitstell-Prozessor-Befehlszähler-Anforderung"-
(PFPPCR)-Register 336 (pre-fetch processor program count
requesting) als PFPPCR geladen. Zur selben Zeit werden die
niedrigwertigen Bits 12 bis 15 von CPUPC in das "Bereitstell-Prozessor-Befehlszähler-abgerufen"-(PFPPCF)-Register
332 (pre-fetch processor program count fetched) als PFPPCF
geladen. Wie oben beschrieben (Befehls- und Datenwörter),
sind die niedrigwertigen Bits 6 bis 15 der logischen und
direkten oder kartierten echten Adressen identisch. Die
niedrigwertigen Bits der Anfangsadresse, die in den Registern
364, 336 und 332 gespeichert sind, sind daher beim
Start eines Befehlsblocks identisch.
Nach dem Empfang des Anfangs-PFPPCR und PFPPCF verwendet
der PFP 312 Speicherbuszyklen zur Durchführung der Bereitstellung,
die nicht durch die CPU 314 oder andere Geräte
benötigt werden. Wie unten näher beschrieben wird, empfängt
der PFP 312 Signale, die anzeigen, wann kein anderes Rechnerelement
gerade einen Zugriff zum Speicher 311 verlangt.
Der PFP 312 überträgt dann den Anfangs-PFPPCR auf den
MEMIN-Bus 320, erzeugt MEMSTARTPFP, und erzeugt das Bereitstell-Anforderungs-Signal
PFfFREQ (pre-fetch request
signal). PRFREQ wird mit dem Signal MEMSORRY vom Speicher
311 verglichen. Falls MEMSORRy anzeigt, daß eine Anforderungsstörung
stattgefunden hat, verzögert der PFP 312
seine Anforderung auf einen nachfolgenden Speicherbuszyklus.
PFP 312 wird fortfahren, diese Adresse bei jedem Speicherbuszyklus
anzufordern, bis der Zugriff gewährt wird.
Wenn der Zugriff gewährt ist, beginnt PFP 312 die Zyklen
des MEMIN-Busses 320 zu zählen, wie oben beschrieben.
Zur selben Zeit werden die sieben niedrigstwertigen Bits
9 bis 15 von PFPPCR um 1 inkrementiert, um einen neuen
PFPPCR zu erzeugen. Der neue PFPPCR ist die echte Adresse
des nächsten abzurufenden Befehls. PFP 312 fährt fort,
Befehle vom Speicher 311 anzufordern, wie eben beschrieben;
das PFPPCR-Register 336 erzeugt dadurch aufeinanderfolgend
PFPPCR-Leseadresse für den Speicher 311 und verfolgt die
vom Speicher 311 angeforderten Befehle.
Die durch das PFPPCR-Register 336 angeforderten Befehle
erscheinen auf dem MEMOUT-Bus 318 vier Speicherbuszyklen
nach dem Veranlassen der Anfrage, und sie werden in den
PFP-Speicher 330 übertragen. Der PFP-Speicher 330 mag
16 Adreßstellen enthalten. Die Stellen der Befehle im
PFP-Speicher 330 werden durch die PFPPC-Schreibadresse mit 4 Bit
im PFPPCF-Register 332 ausgewählt. PFPPCF wird inkrementiert,
während jeder Befehl empfangen wird. Die Befehle
werden dadurch in aufeinanderfolgenden Adressen im PFP-
Speicher 330 gespeichert (z.B. in den Stellen 0 bis 15;
dann wieder 0, usw.), und das PFPPCF-Register 332 verfolgt
die abgerufenen Befehle.
Wie oben beschrieben, repräsentiert CPUPC einen durch die
CPU 314 auszuführenden Befehl, und wird beim oder nahe
beim Beginn der Ausführung dieses Befehls inkrementiert.
Die vier niedrigstwertigen Bits 12 bis 15 von CPUPC werden
als Leseadresse für den PFP-Speicher 330 verwendet, so daß
der nächste auszuführende Befehl vom PFP-Speicher 330 angefordert
wird, während ein laufender Befehl gerade ausgeführt
wird. Da CPUPC und PFPPCF anfänglich identisch
sind, und da sie beide sequentiell inkrementiert werden,
werden die Befehle aus den PFP-Speicher 330 in derselben
Reihenfolge ausgelesen, in der sie eingeschrieben sind.
Die CPU 314 wird daher die Befehle in derselben Sequenz
empfangen, ind er sie ursprünglich im Speicher 311 gespeichert
wurden.
Es können gewisse Beschränkungen der Tätigkeit des PFP
312 auferlegt sein, um Fehler beim Abrufen von Befehlen
zu vermeiden und eine wirkungsvolle Arbeitsweise sicherzustellen.
Zunächst mag, wie oben angedeutet, das PFPPCR-
Register 336 nur die sieben niedrigstwertigen Bits 8 bis
15 der echten Adresse PFPPCR ändern. Die höherwertigen
Bits 0 bis 5 und 16 bis 19 von PFPPCR können nur durch
Laden eines neuen Anfangswertes PFPPCR in das PFPPCR-
Register 366 geändert werden. Wie früher beschrieben
wurde besteht eine genaue Zuordnung zwischen den niedrigwertigen
Bits 6 bis 15 der logischen und der echten Adresse.
Die höherwertigen Bits 0 bis 5 der logischen Adresse können
jedoch in die Bits 0 bis 5 und 16 bis 19 der echten Adresse
kartiert werden. Daher könnte es zum Auslesen von Befehlen aus
einem anderen Benutzerprogramm führen, wenn es dem PFP 312
möglich wäre, die höherwertigen Bits 0 bis 5 und 16 bis
19 von PFPPCR zu modifizieren. Dies kann dadurch vermieden
werden, daß der PFP 312 auf eine Arbeit mit den sieben
niedrigwertigen Bits 9 bis 15 von PFPPCR beschränkt wird.
Zweitens entsprechen die Bits 12 bis 15 von PFPPCF den
vier niedrigstwertigen Bits 12 bis 15 von CPUPC. Dies kann
das Abrufen durch den PFP 312 auf höchstens 16 Befehle vor
dem gerade durch die CPU 314 in Ausführung befindlichen Befehl
begrenzen. Diese Begrenzung kann vorgesehen sein wegen
der Möglichkeit, daß ein Sprungbefehl in einer Sequenz von
Befehlen auftritt. Ein Sprung erfordert das Ablegen von im
PFP-Speicher 330 gespeicherten bereitgestellten Befehlen
und das Abrufen eines neuen Blocks von Befehlen, auf den
gesprungen wurde. Die Arbeitsleistung des PFP 312 wird
daher dadurch vergrößert, daß ein ausreichender Vorgriff
vorgesehen wird, so daß die CPU 314 selten auf Befehle
warten muß, während das Ablegen von unnötigerweise abgerufenen
Befehlen minimiert wird.
Zusammengefaßt, hat der PFP 312 einen Bereitstell-Zugriff
zu einem Block von 128 aufeinanderfolgenden Adreßstellen
im Speicher 311, wie er durch die sieben variablen Bits
9-15 von PFPPCR bestimmt ist. Die erste Adresse im Block
wird durch die ins PFPPCR-Register 336 geladene anfängliche
echte Adresse PFPPCR bestimmt. Das Bereitstellen wird innerhalb
des Blocks innerhalb eines sich bewegenden Fensters
ausgeführt. Das Bereitstellfenster ist maximal 16 Adressen
lang. Die erste Fensteradresse wird durch CUPC bestimmt,
und die letzte abgerufene Fensteradresse wird durch PFPPCF
bestimmt. PFP 312 mag das Ende des laufenden Blocks mit
128 Adressen erreichen, bevor er einen neuen Anfangswert
PFPPCR empfängt. Wenn dies eintritt, erzeugt PFP 312 das
Signal DONECURRBLK, das anzeigt, daß er das Ende seines
zugänglichen Adressenraums erreicht hat. DONECURBLK blockiert
die Tätigkeit des PFP 312, bis neue Anfangswerte
PFPPCR und PFPPCF geliefert werden. Es wird darauf hingewiesen,
daß andere Längen des Abruffensters und des zugänglichen
Befehlsblock beim PFP 312 verwendet werden
können.
Es wird nun auf andere Elemente des PFP 312 Bezug genommen.
Die PFP-Bereit-Logik (PFPRDY) 334 vergleicht
PFPPCF und CPUPC, um Ausgangssignal zu liefern, die
anzeigen, ob der PFP-Speicher 330 nur 1 oder mehrere
Befehle vor dem gerade durch die CPU 314 in Ausführung
befindlichen Befehl enthält. Diese Ausgangssignale wiederum
erzeugen PFPREADY, das anzeigt, ob PFP 312 bereit ist,
einen durch CPUPC angeforderten Befehl zu liefern. PFPRDY 334
liefert auch ein Ausgangssignal FULL, das anzeigt, daß
der PFP-Speicher 330 voll ist und somit nicht in der Lage
ist, weitere Befehle aufzunehmen. In diesem Falle wird
die Tätigkeit des PFP 312 angehalten, bis die CPU 314
mindestens einen Befehl aus dem PFP-Speicher 330 ausgelesen
hat.
Die WCB-Logik 338 (Write Current Block - Schreiben laufender
Block) überwacht die beispielsweise durch die CPU 314
durchgeführten Schreiboperationen im Speicher 311. Die
WCB-Logik 338 vergleicht PFPPCR mit jeder auf dem MEMIN-
Bus 320 erscheinenden Schreibadresse der CPU 314. Falls
die CPU 314 in eine Adresse des Speichers 311 einschreibt,
die innerhalb des Befehlsblocks liegt, der zur Zeit durch
PFPPCR 336 zugänglich ist, liefert die WCB-Logik 338 eine
Anzeige für dieses Ereignis. Dieses Merkmal warnt vor
einem möglichen Konflikt zwischen einem nachfolgend modifizierten
Befehl im Speicher 311 und einem entsprechenden
früher abgerufenen unmodifizierten Befehl im PFP-Speicher
330.
C. PFP 312, Schaltung (Fig. 5-7)
Die bei der vorliegenden bevorzugten Ausführungsform des
PFP 312 verwendete Schaltung ist in den Fig. 5, 6 und 7
dargestellt. Wie bei der Beschreibung des Speichers 311
wird die detaillierte Struktur und Arbeitsweise dieser
Schaltung nur beschrieben, wo dies nötig ist, um die
Wirkungsweise des PFP 312 darzustellen. Es sind durchwegs
übliche Schaltungssymbole verwendet, und die Struktur
und Arbeitsweise der Schaltung ist dem Fachmann verständlich.
Lediglich jene Komponenten, die zur Erläuterung
der Arbeitsweise des PFP 312 nötig sind, werden durch ein
Bezugszeichen und in der folgenden Stückliste bezeichnet.
Alle in der gleichen Weise wie die mit Bezugszeichen versehenen
Teile gezeichnete Bauteile sollen mit diesen mit
Bezugszeichen versehenen Teilen gleich und in der gleichen
Weise wirkend angesehen werden.
In den Fig. 5 und 5A sind das PFP PCR-Register
336 und die WCB-Logik 338 gezeigt. In Fig. 5 weist
das PFP PCR-Register 336 Register 2510 und 2512, Zähler
2514 und 2516, und Puffertreiber 2518 mit drei Zuständen
auf. Wie oben beschrieben, erscheinen die höherwertigen
Bits 0 bis 5 und 16 bis 19 der echten Adresse auf dem
HLADR-Bus 328 als Signale HLADR 0 bis 5 und 16 bis 19.
HLADR 0 bis 5 und 16 bis 19 sind Eingängen der Register
2510 und 2512 zugeführt. Die niedrigwertigen Bits 6 bis
15 der echten Adresse erscheinen auf dem ALUOUT-Bus
326 als Signale ALUOUT 6 bis 15. ALUOUT 9 bis 15, die
den sieben variablen Bits 9 bis 15 von PFP PCR entsprechen,
werden Eingängen der Zähler 2514 und 2516 zugeführt.
Die niedrigwertigen Adressbits ALUOUT 6 bis 8,
die den nicht-variablen Bits 6,7 und 8 von PFP PCR entsprechen,
werden Eingängen des Registers 2512 zugeführt.
PFP PCR erscheint an Ausgängen der Register 2510 und
2512 und der Zähler 2514 und 2516 als PFP PCR 0 bis 19.
PFP PCR wird Eingängen der Puffertreiber 2518 zugeführt.
Entsprechende echte Adressbits MEMIN 0 bis 19 erscheinen
an Ausgängen der Puffertreiber 2518, die mit dem MEMIN-
Bus 320 verbunden sind.
Eine anfängliche echte Adresse, die auf dem ALUOUT-Bus
326 und dem HLADR-Bus 328 erscheint, wird in die Register
2510 und 2512 und die Zähler 2514 und 2516 beim Auftreten
von geladen. aktiviert die Parallel
eingang-(PE)-Eingänge der Zähler 2514 und 2516. Die anfängliche
echte Adresse wird dann in die Zähler 2514
und 2516 durch ein den Takteingängen der Zähler 2514
und 2516 zugeführtes Signal MEMCLK übertragen. In den
Registern 2510 und 2512 aktiviert ein Verknüpfungsglied
2520 zur Lieferung eines Signals µSEQCLK durch
einen Inverter 2522 an die Takteingänge der Register
2510 und 2512. Danach wird PFP PCR 9 bis 15 in den Zählern
2514 und 2516 durch MEMCLK jedesmal inkrementiert, wenn
die Zähler 2514 und 2516 ein Zählaktiviereingangssignal
FETCHSTARTED empfängt. Wie unten bei der Beschreibung
der Fig. 7 beschrieben wird, tritt FETCHSTARTED jedesmal
auf, wenn PFP 312 einen Befehl vom Speicher 311 abruft.
Das den Löscheingängen der Zähler 2514 und 2516
zugeführte Signal wird verwendet, um PFPPCR
9 bis 15 auf null zurückzusetzen, z. B. während einer Testsequenz
des Rechners 310.
Die Zähler 2514 und 2516 lieferten auch Ausgangssignale
EOCB und PFPPCTC 2 an die in Fig. 7 gezeigte Steuerschaltung
des PFP 312. EOCB zeigt an, daß die zuletzt verfügbare
Adresse des laufenden Blocks gerade angefordert
wird. PFPPCTC 2 wird aktiv, wenn die zuletzt verfügbare
Adresse gerade angefordert wird, und blockiert weitere
Bereitstell-Anforderungen.
Die Puffertreiber 2518 werden aktiviert, um das Signal
PFPPCR durch PFPREQFETCH auf den MEMIN-Bus 320 zu bringen.
PFPREQFETCH wird durch PFP 312 erzeugt, wenn, wie oben
beschrieben, PFP 312 einen Zugriff zum Speicher 311 angefordert
und diesen erhalten hat. PFPREQRETCH bewirkt auch,
daß die Pufferspeicher 2518 das Signal erzeugen.
ist mit dem Signal von der
CPU 314 durch eine verdrahtete ODER-Schaltung verknüpft,
um das Signal an den Speicher 311 zu liefern.
In ähnlicher Weise erzeugen die Puffertreiber 2518 das
Signal für die Steuerschaltung des PFP 312, um anzuzeigen,
daß eine PFP-Anforderung veranlaßt worden ist.
Wie unten näher beschrieben wird, wird mit
verglichen, um einen PFP 312-Abruf zu verschieben,
falls eine Störung der Speicheranforderung
auftritt.
In Fig. 5A enthält die WCB-Logik 338 Komparatoren
2524 und ein Verknüpfungsglied 2526. Die Komparatoren
2524 vergleichen die echten Adressbits 0 bis 7
und 16 bis 19 mit den entsprechenden Adreßbits MEMIN
0 bis 7 und 16 bis 19 des MEMIN-Bus 320. Die Komparatoren
2524 werden über das Verknüpfungsglied 2526
aktiviert durch das gleichzeitige Auftreten von
und beim Speicher 311. erscheint nur,
wenn irgendein anderes Element des Rechners 310 als
PFP 312, z. B. die CPU 314, in den Speicher 311 schreibt.
Die Komparatoren 2524 erzeugen WRITECURRBLK, falls der
Vergleich von PFPPCR und MEMIN anzeigt, daß ein Schreiben
in dem Block von Adressen stattgefunden hat, der augenblicklichen
für den PFP 312 zugänglich ist.
In Fig. 6 und 6A sind das CPU PC-Register 364, das
PFP PCF-Register 332 und der PFP-Speicher 330 gezeigt.
In Fig. 6 weist das CPU PC-Register 364 Zähler 2610 und
2612 und einen Puffertreiber 2614 auf. Den Dateneingängen
der Zähler 2610 und 2612 werden die niedrigwertigen logischen
Adreßbits ALUOUT 9 bis 15 vom ALUOUT-Bus 326 zugeführt.
ALUOUT 9 bis 15 entsprechen den sieben variablen
Adreßbits PFPPCR 9 bis 15 als Dateneingangssignale. Ein
achter Datenbiteingang der Zähler 2610 und 2612 ist mit
logisch 0 (Masse) verbunden und entspricht dem Signal
ALUOUT 8 und PFPPCR 8. ALUOUT 9 bis 15 und das achte Bit
mit dem Wert logisch 0 werden in die Zähler 2610 und 2612
durch das die parallele Eingabe aktivierende Eingangssignal
und das Takteingangssignal MEMCLK geladen.
CPUPC erscheint an den Ausgängen der Zähler 2610 und
2612 als CPUPC 8 bis 15 und wird durch MEMCLK inkrementiert,
wenn das Zählaktiverungseingangssignal INCPC
aktiv ist. INCPC aktiviert die Zähler 2610 und 2612,
während Befehle durch die ALU 356 ausgeführt werden.
Das Löscheingangssignal wird wiederum geliefert,
um CPU PC 8 bis 15 auf 0 zurückzusetzen.
CPUPC 8 bis 15 werden Eingängen der invertierenden Pufferverstärker
2614 zugeführt. Die Pufferverstärker 2614 werden
aktiviert, um das invertierte CPUPC auf den ALUIN-Bus 324
zu bringen.
Wie anhand der Fig. 6A beschrieben werden wird, wird
CPUPC Lesseadresseneingängen des PFP-Speichers 330 und
Eingängen von PFPRDY 334 zugeführt.
In Fig. 6A ist der PFP-Speicher 330 gezeigt. Der PFP-
Speicher 330 weist Speicher mit wahlfreiem Zugriff (RAM)
2618, 2620, 2622 und 2624 auf. Die RAMs 2618 bis 2624
mögen jeweils ein Speicher mit 16 Worten und 4 Bit Länge
sein, die parallel erfaßt werden, so daß der PFP-Speicher
330 einen 16-Wort-Speicher mit 16 Bit Länge bilden mag.
Wie oben festgestellt, kann der PFP-Speicher 330 eine
andere Kapazität haben als 16 Wörter mit 16 Bit Länge.
CPUPC 12 bis 15 vom CPU PC-Register 364 werden Leseadresseneingängen
der RAMs 2618 bis 2624 zugeführt. PFPPCF 12 bis
15 vom PFPPCF-Register 332 werden Schreibadresseneingängen
der RAMs 2618 bis 2624 zugeführt. Die Dateneingänge der
RAMs 2618 bis 2624 sind mit dem MEMOUT-Bus 318 (MEMOUT
0 bis 19) verbunden. MEMOUT 0 bis MEMOUT 3 sind mit Dateneingängen
des RAM 2618 verbunden, und MEMOUT 4 bis MEMOUT 7
sind Dateneingängen des RAM 2620 zugeführt. MEMOUT 8 bis
MEMOUT 11 sind Dateneingängen des RAM 2622 zugeführt, und
MEMOUT 12 bis MEMOUT 15 sind Dateneingängen des RAM 2624 zugeführt.
MEMOUT 15 bis 19 sind, wie früher besprochen,
Fehlerkorrekturbits, die durch die ERCC-Logik 319 verwendet
werden, und werden nicht im PFP-Speicher 330 gespeichert.
Die Ausgangsdaten PFP 0 bis PFP 15 der RAMs
2618 bis 2624 werden dem PFP-Bus 322 zugeführt. Die Befehle
auf dem MEMOUT-Bus 318 werden in den PFP-Speicher
330 eingeschrieben, wenn die RAMs 2618 bis 2624 gleichzeitige
Schreibaktiviereingangssignale MEMCLK und
empfangen. Gespeicherte Befehle werden aus dem
PFP-Speicher 330 ausgelesen, wenn die RAMs 2618 bis
2624 Ausgabeaktiviereingangssignale empfangen.
Dies würde die normale Bedingung sein.
In den Fig. 7 und 7A sind PFPRDY 334 und die Steuerschaltung
des PFP 312 gezeigt. In Fig. 7 weist der PFP
RCY 334 einen programmierbaren Lesespeicher (PROM) 2710,
ein Flip-Flop 2712 und Verknüpfungsglieder 2714, 2715
und 2716 auf. Der PROM 2710 wirkt als ein Komparator für
die Leseadressen (CPUPC) und Schreibadressen (PFPPCF)
für den PFP-Speicher 330. Der PROM 2710 liefert ein Ausgangssignal
, das anzeigt, daß der PFP-Speicher 330
voll ist; ein Signal , das anzeigt, daß mehr als ein
Befehl für die CPU 314 verfügbar ist; ein Signal CTEQ 1,
das anzeigt, daß der PFP-Speicher 330 nur einen Befehl vor
dem augenblicklich in Ausführung durch die CPU 314 befindlichen
Befehl enthält; und ein Signal CTEQO, das anzeigt,
daß der PFP-Speicher 330 keine Befehle enthält.
CTEQ 1 und werden Eingängen des Verknüpfungsglieds
2714 zugeführt, das ein Ausgangssignal liefert, daß der
PFP-Speicher 330 nur einen Befehl enthält. Das weiter
unten besprochene Signal ist ein Signal, das anzeigt,
ob die CPU 314 dabei ist, einen Befehl aus dem
PFP-Speicher 330 zu lesen. Das Ausgangssignal des Verknüpfungsglieds
2714 ist mit einer verdrahteten ODER-
Funktion mit CTGT 1 und dem Ausgangssignal des Verknüpfungsglieds
2713 verknüpft. CTGT 1 stellt dar, daß mehr
als ein Befehl im PFP-Speicher 330 verfügbar ist. Das
Eingangssignal des Verknüpfungsglieds 2713 zeigt
an, daß der PFP 312 zur Zeit einen Befehl vom Speicher 311
in den PFP-Speicher 330 überträgt. Das Ausgangssignal
des Verknüpfungsglieds 2713 zeigt dadurch an, daß der
PFP 312 zur Zeit keinen Befehl für die CPU 314 hat, aber
daß ein Befehl am Ende des laufenden MEMCLK-Zyklus verfügbar
sein wird. Das Ausgangssignal eines Verknüpfungsglieds
2713 wird dann durch das Verknüpfungsglied 2715 mit
durch eine UND-Funktion verknüpft, um das Ausgangssignal
des Verknüpfungsglieds 2715 zu liefern. Das durch eine
ODER-Funktion verknüpfte Ausgangssignal des Verknüpfungsglieds
2714 wird einem Eingang des Verknüpfungsglieds
2716 zugeführt, dies gilt auch für WCBF (Schreiben Laufender
Block Fehler, Write Current Block Fault, wird unten
erläutert). Das Ausgangssignal des Verknüpfungsglieds
2716 zeigt an, ob PFP 312 nicht in der Lage sein
wird, Befehle an die CPU 314 zu liefern; entweder weil Befehle
nicht verfügbar sind oder weil ein möglicher Konflikt
zwischen Befehlen besteht, die in den Speichern 313
und 311 gespeichert sind. wird dem Dateneingang
des Flip-Flops 2712 zugeführt. Das Takteingangssignal
NANOCLK des Flip-Flops 2712, das unten beschrieben wird,
tastet ab, um das Ausgangssignal
zu
erzeugen. PFPREADY zeigt an, ob PFP 312 bereit ist, Befehle
an die CPU 314 zu liefern.
Die Steuerschaltung PFP 312 wird nun beschrieben. In Fig.
7A wird zunächst die Schaltung beschrieben, die die obengenannten
Signale INCPC, WCBF und NANOCLK erzeugt.
wird durch Verknüpfungsglieder 2718 bis 2724 und
zugeordnete Inverter 2726 erzeugt. Wie oben festgestellt,
tritt auf, wenn ein Befehl aus dem PFP-Speicher 330
gelesen werden soll. Insbesondere zeigt INCPC an, daß
CPUPC durch das zum CPUPC-Register 364 geleitete Signal
MEMCLK inkrementiert werden soll, beispielsweise bei
einem Skipbefehl (Überspringen).
Eingangssignale , und SAGEUPDATEPC des
Verknüpfungsglieds 2718 zeigen an, daß CPUPC inkrementiert
werden muß. Dies sind Eingangssignale von einer fest verdrahteten
Logik, die Mikrobefehlbedingungen detektiert,
die es erfordern, daß CPUPC inkrementiert wird. Das Ausgangssignal
des Verknüpfungsglieds 2718 und
werden Eingängen des Verknüpfungsglieds 2720 zugeführt.
zeigt an, daß ein laufender Mikrobefehl gerade
endet und daß ein neuer Mikrobefehl beginnen muß.
Ein Eingangssignal des Verknüpfungsglieds 2722
zeigt an, daß CPUPC wegen eines ALC-Skipbefehls
zwingend inkrementiert werden muß. Das Eingangssignal
µSEQTEST des Verknüpfungsglieds 2722 von der Mikrobefehl-
Logik 342 repräsentiert eine Mikrobefehl-Prüfbedingung,
die anzeigt, ob ein ALC-Skipbefehl wahr ist. Das Eingangssignal
NANOCLK des Verknüpfungsglieds 2722 ist ein Sperrsignal
für PFP 312, das unten beschrieben wird.
Schließlich sind die Ausgänge der Verknüpfungsglieder
2720 und 2722 durch das Verknüpfungsglied 2724 mit einer
ODER-Funktion verknüpft, das das Ausgangssignal INCPC
liefert. Inverter 2725 und 2726 invertieren die Ausgangssignale
der Verknüpfungsglieder 2724 und 2718, um Signale
mit der gewünschten Polarität an die Verknüpfungsglieder
2720 und 2714 zu liefern.
WCBF wird durch ein Flip-Flop 2728 erzeugt. Das J-Eingangssignal
WRITE CURRBLK des Flip-Flops 2728, das oben beschrieben
wurde, zeigt an, daß ein Schreibzyklus in dem Befehlsblock
im Speicher 311 aufgetreten ist, der gerade durch
den PFP 312 zugänglich ist. Das ebenfalls früher besprochene
Signal PCDESTENB zeigt an, daß eine neue echte
Adresse in das PFP PCR-Register 336 geladen werden muß,
um einen neuen Block von Befehlen dem PFP 312 zuzuordnen.
Das Takteingangssignal des Flip-Flops 2728 tastet
WRITECURRBLK an PCDESTENB ab. Dadurch zeigt WCBF nach
einem Signal WRITECURRBLK an, daß eine mögliche Befehlsstörung
vorhanden ist, und nach einem Signal PCDSTENB, daß
die Störung durch einen Neubeginn der Abrufoperation des
PFP 312 gelöst worden ist. Die Setz- und Löscheingangssignale
und des Flip-Flops 2728 können
das Flip-Flop 2728 löschen oder setzen, wodurch WCBF erzeugt
wird.
Die NANOCLK und MEMCLK erzeugende Schaltung wird als Teil
der CPU 314 betrachtet, wird aber hier beschrieben, um das
Verständnis des PFP 312 zu unterstützen. NANOCLK wird durch
ein Flip-Flop 2730 und ein Verknüpfungsglied 2732 aus
MEMCLK erzeugt. Das Ausgangssignal NANOCLK des Flip-Flop
2730 wird dem Dateneingang des Flip-Flop 2730 durch das
Verknüpfungsglied 2732 zugeführt, das NANOCLK invertiert.
Dadurch wird das invertierte NANOCLK durch MEMCLK abgetastet,
so daß NANOCLK mit der halben Frequenz von MEMCLK
auftritt. Das Eingangssignal HSCREQ des Verknüpfungsglieds
2732 blockiert den Dateneingang des Flip-Flops 2730, und
somit NANOCLK und die Arbeit von PFP 312, wenn ein Gerät
mit einem Hochgeschwindigkeitskanal den Zugriff zum Speicher
311 belegt hat. Ein Gerät mit einem Hochgeschwindigkeitskanal,
das in Fig. 3 aus Gründen der Klarheit der
Darstellung nicht gezeigt ist, ist direkt mit dem MEMIN-Bus
320 und dem MEMOUT-Bus 318 in Verbindung, um schnell
Daten direkt in den Speicher 311 und aus ihm heraus zu
übertragen. Dem Setz- und Löscheingang des Flip-Flops
2730 werden die Signale und
zugeführt, wodurch es ermöglicht wird, daß diese Eingangssignale
die Signale NANOCLK und den PFP 312 aktivieren
oder blockieren.
Als nächstes wird die das Signal MEMCLK 34281 00070 552 001000280000000200012000285913417000040 0002002944419 00004 34162 erzeugende Schaltung
diskutiert, gefolgt von der Schaltung, die die Abrufoperation
des PFP 312 veranlaßt. Am Ende wird die die
Verbindung des PFP 312 mit dem MEMIN-Bus 320 und dem
MEMOUT-Bus 380 enthaltende Schaltung beschrieben, wiederum
unter Bezugnahme auf Fig. 7.
In Fig. 7A wird durch ein Flip-Flop 2734, einen
Inverter 2736, und Verknüpfungsglieder 2738-2742 erzeugt.
20 CLK wird den K-Eingang des Flip-Flops 2734 zugeführt,
und 40 CKL wird dem Takteingang des Flip-Flops 2734
zugeführt. Das Signal 40 CLK tastet das Signal 20 CLK ab,
so daß die Eingänge Q und des Flip-Flops 2734 die
Signale MEMCLK und liefern. Das Verknüpfungsglied
2742 ist ein Pufferverstärker, der benutzt wird,
um die Belastung des Ausgangssignals MEMCLK des Flip-Flops
273 zu verringern.
Das dem J-Eingang des Flip-Flops 2734 vom Verknüpfungsglied
2740 zugeführte Signal MEMCLKENB ist ein Aktivierungseingangssignal,
das MEMCKL und somit dem PFP 312
blockiert. Eingangssignale des Verknüpfungsglieds 2740
sind , , und SORRY vom Ausgang des Verknpüpfungsglieds
2738. ist früher unter Bezugnahme
auf den PEP-Speicher 310 beschrieben worden.
wird verwendet, um MEMCLK mit 40 CLK zu synchronisieren.
Das Eingangssignal PRFREQ des Inverters 2736 wird,
wie früher erläutert, erzeugt, wenn es dem PFP 312 gestattet
ist, eine Leseanfrage an den Speicher 311 zu erzeugen.
Wie mit Bezugnahme auf den Speicher 311 beschrieben,
wird dann, falls eine Anfrage des PFP 312 zu einer
Speicheranfragenstörung führt, der Speicher 312 durch
Lieferung von antworten. Die Eingangssignale
und des Verknüpfungsgliedes 2738 erzeugen
das Ausgangssignal SORRY, das anzeigt, daß eine
Leseanfrage des PFP 312 zu einer Speicherstörungsbedingung
geführt hat. SORRY blockiert dann die Erzeugung
von MEMCKL, um die Tätigkeit des PFP zu blockieren, bis
anzeigt, daß die Anfragestörung bereinigt ist.
Wie oben diskutiert, wird dann der PFP 312 fortfahren,
die früher störende Speicheranfrage zu wiederholen. Dem
Setz- und Löscheingang des Flip-Flops 2734 sind die
Signal und zugeführt. Diese Eingangssignale
gestatten es, daß MEMCLK ausgesetzt wird, und sie
werden verwendet, um die Startbedingungen von MEMCLK zu
setzen.
In den Fig. 7 und 7A werden die Bereitstellzyklen des
PFP 312 durch das Ausgangssignal PPFREQFETCH eines Flip-Flops
2744 veranlaßt, das anzeigt, daß ein Abruf veranlaßt
worden ist.
Wie oben diskutiert, wird der PFP 312 zur Durchführung
von Bereitstelloperationen aktiviert, wenn ein Gerät mit
höherer Priorität, z. B. die CPU 314, keinen Zugriff zum
Speicher 311 verlangt. Dem Dateneingang des Flip-Flops
2744 wird ein Aktivierungssignal vom Ausgang eines Verknüpfungsglieds
2746 durch das Takteingangssignal
MEMCLK abgetastet wird. Das Verknüpfungsglied 2746
hat vier Sperrsignaleingänge. wird durch
einen Inverter 2748 von einem Verknüpfungsglied 2750 und
2752 geliefert. Dem Verknüpfungsglied 2752 werden Eingangssignale
PEPCT 2 und PFPREQFETCH zugeführt. PEPCTC 2
von PFPPCR-Register 336 zeigt an, daß PFPPCR nicht weiter
als eine Adresse vom Blockende der zur Zeit für den
PFP 312 verfügbaren Befehle entfernt ist. PFPREQFETCH
vom Ausgang des Flip-Flops 2744 zeigt an, daß ein Abruf
veranlaßt worden ist. Das Ausgangssignal des Verknüpfungsglieds
2752 blockiert dadurch die Veranlassung
einer nachfolgenden PFP 312-Anforderung, während der
zuletzt zugängliche Befehl gerade abgerufen wird.
und sind Eingangssignale der Verknüpfungsglieder
2750. vom PFPPCR-Register 336 zeigt an, daß
der PFP 312 den letzten verfügbaren Befehl abgerufen
hat. Das Ausgangssignal DONECURRBLK des Verknüpfungsglieds
2750 und des Inverters 2748 hindert dadurch den
PFP 312 daran, Befehle außerhalb des gerade verfügbaren
Befehlsblocks abzurufen.
Das Eingangssignal des Verknüpfungsglieds 2746 vom
PROM 2710 im PFPRDY 334 zeigt an, daß der PFP-Speicher
330 voll ist. blockiert die Erzeugung von Abrufanforderungen
durch den PFP 312, bis die CPU 314 weitere
Befehle vom PFP-Speicher 330 anfordert und mindestens
eine Adressenstelle des PFP-Speichers 330 für die Annahme
weiterer Befehle freimacht.
Das dem Verknüpfungsglied 2746 vom Verknüpfungsglied 2758
zugeführte Eingangssignal ist auch ein Sperrsignal. Das
Eingangssignal HSCREQ des Verknüpfungsglieds 2758, das
oben diskutiert wurde, zeigt an, daß ein Gerät mit einem
Hochgeschwindigkeitskanal eine Prioritätszugriff zum Speicher
311 beansprucht. Der PFP 312 wird daran gehindert,
einen Zugriff zum Speicher 311 anzufordern, bis HSCREQ
beendet ist. CONSOLEMODE zeigt an, wie unten mit Bezug
auf das Soft-Konsole-ROM 358 diskutiert wird, daß der
Rechner 310 im Konsolen-Betriebszustand arbeitet. Im
Konsolen-Betriebszustand wird die gesamte normale Operation
des Rechners 310 ausgesetzt, einschließlich dem Bereitsteller;
der Rechner 310 wird dann durch einen externen
Fernschreiber gesteuert, der durch die Soft-Konsole 358
arbeitet.
Das Eingangsglied CFR des Verknüpfungsglieds 2746 vom
Verknüpfungsglied 2754 ist ein Aktivierungssignal, das
anzeigt, daß es dem PFP 312 gestattet ist, Bereitstelloperationen
auszuführen. Das Eingangssignal des
Verknüpfungsglieds 2754 von der Mikrobefehl-Logik 342
zeigt an, daß es dem PFP 312 gestattet ist, während eines
Mikrobefehls, der bestätigt, abzurufen.
ist ein fest verdrahtetes Signal, das anzeigt, daß es dem
PFP 312 gestattet ist, während der Ausführung eines Befehls
der arithmetischen und logischen Klasse (ALC) abzurufen.
Das Eingangssignal eines Verknüpfungsglieds 2754
von einem Verknüpfungsglied 2756 ist ähnlich
und zeigt an, daß es dem PFP 312 gestattet ist, während
eines ALC-Befehls abzurufen. Das Eingangssignal INSTSAGEALC
des Verknüpfungsglieds 2756 zeigt an, daß ein ALC-Befehl
gerade auftritt, während es dem PFP 312 erlaubt sein
kann, abzurufen. Das Eingangssignal µSEOTEST des Verknüpfungsglieds
2756 von der Mikrobefehl-Logik 342 ist
eine Prüfbedienung, die anzeigt, ob der PFP 312 während
dieses ALC-Befehls abrufen darf. Das CRF-Ausgangssignal
des Verknüpfungsglieds 2754 zeigt dabei an, daß der
PFP 312 eine Bereitstellung während eines Mikrobefehls
oder eines ALC-Befehls ausführen darf.
Dabei erzeugt das Flip-Flop 2744 PFPREQFETCH, wenn es
durch CRF aktiviert ist und nicht durch DENECURRBLK,
FULL, CONSOLEMODE, oder HSCREQ blockiert ist. Wie oben
festgestellt, aktiviert dann PFPREQFETCH den PFP 312 zur
Ausführung einer Bereitstelloperation.
Schließlich ist in Fig. 27 die Schaltung gezeigt, die die
Verbindung des PFP 312 mit dem MEMIN-Bus 320 und dem
MEMOUT-Bus 318 aufweist. Die Verbindungsschaltung oder
Interfaceschaltung des PFP 312 weist ein Schieberegister
2760, ein Verknüpfungsglied 2762 und einen Inverter 2764
auf. Das Eingangssignal PFPREQFETCH des Verknüpfungsglieds
2762 zeigt, wie diskutiert, an, daß der PFP 312
zum Ausführen eines Bereiststellzyklus aktiviert ist.
PFPREQFETCH überträgt die echte Adresse PFPPCR auf den
MEMIN-Bus 320 und erzeugt MEMSTARTPFP und .
wird mit verglichen, um zu bestimmen,
ob eine Anforderungsstörung aufgetreten ist.
wird auch einem anderen Eingang des Verknüpfungsglieds
7262 zugeführt, um das Ausgangssignal FETCHSTARTED,
das anzeigt, daß ein Abruf erfordert wurde und vom
Speicher 311 angenommen wurde. FETCHSTARTED liefert eine
logische 1 an den Dateneingang des Schieberegisters 2760.
Die logische 1 wird dann durch MEMCLK durch das Register
2760 geschoben. FETCHSTARTED wird dadurch im Ausgangssignal
LOADINST des Schieberegisters 7260 vier MEMCKL-Perioden
(das sind 400 Nanosekunden), nachdem der Abruf
veranlaßt worden ist, erscheinen. Wie oben diskutiert,
ist dann der angeforderte Befehl auf dem MEMOUT-Bus 318
verfügbar, und überträgt den Befehl in den
PFP-Speicher 330.
Nach der Beschreibung der Struktur und Arbeitsweise des
PFP 312 werden unten gewisse Merkmale des PFP 312 zusammengefaßt.
D. Zusammenfassung der Merkmale des PFP 312
Gewisse Merkmale des PFP 312, die neben anderen oben beschrieben
wurden, sind:
Erstens: Der PFP 312 verbessert die Arbeitsleistung des
Rechners 310 dadurch, daß er Befehle vor dem gerade in
der Ausführung durch die CPU 314 befindlichen Befehl aus
dem Speicher 311 abruft und im PFP-Speicher 330 speichert.
Die CPU 314 muß daher nur selten ihre Tätigkeit einstellen,
um einen Lesezyklus im Speicher 311 mit 400 Nanosekunden
auszuführen, um Befehle zu erhalten. Stattdessen ist der
nächste von der CPU 314 angeforderte Befehl auf dem PFP-Bus
322 vorhanden, wenn die CPU 314 die Ausführung des
laufenden Befehls abschließt. Weiterhin kann die CPU 314
im PFP-Speicher 330 gespeicherte Befehle während Intervallen
ausführen, wenn Geräte mit hoher Priorität (z. B.
ein Hochgeschwindigkeitskanal) einen bevorzugten Zugriff
zum Speicher 311 erhalten. Die CPU 314 kann daher mit der
Arbeit fortfahren, während ihr der Zugriff zum Speicher 311
verwehrt ist.
Zweitens: Durch Minimierung der Speicheranforderungen der
CPU 314 steigert der PFP 312 die Verfügbarkeit des Speichers
311 für andere Geräte.
Drittens: Der PFP 312 führt das Bereitstellen während
Speicherbus-Zyklen durch, die nicht durch Geräte mit
höherer Priorität angefordert werden, wie beispielsweise
die CPU 314 oder ein Hochgeschwindigkeitskanal.
Dies wiederum vergrößert die Verfügbarkeit des Speichers
311 für diese Geräte.
Viertens: Der Zugriff des PFP 312 zum Speicher 311 kann
auf einen einzelnen Block von 128 Befehlen bei einem
einmaligen Zugriff beschränkt werden. Dies verhindert,
daß der PFP 312 irrtümlich Befehle von einem anderen
Benutzerprogramm abruft.
Fünftens: Die Vorgriffskapazität des PFP 312 mag auf
16 Befehle beschränkt werden. Dies steigert die Wirksamkeit
des PFP 312, indem sie einen angemessenen Vorgriff
gestattet, während das Ablegen von abgerufenen Befehlen
dann, wenn die CPU 314 eine neue Folge von Befehlen beginnt,
minimiert wird.
Sechstens: Der PFP 312 überwacht die Schreiboperationen
des Speichers 311. Dies verhindert einen Konflikt zwischen
modifizierten Befehlen im Speicher 311 und früher abgerufenen
unmodifizierten Befehlen im PFP-Speicher 330.
Die Beschreibung des PFP 312 ist hiermit abgeschlossen
und als nächstes wird die Mikrobefehl-Logik 342 beschrieben.
5. Mikrobefehl-Logik 342 (Fig. 8-10):
In Fig. 3 wird die Mikrobefehl-Logik 342 vom PFP-Bus 322
versorgt und liefert ein Ausgangssignal an das Mikrobefehl-Register
344. Das Mikrobefehl-Register 344 wiederum
liefert ein Ausgangssignal an den ALUIN-Bus 324. Wie oben
beschrieben, werden häufig verwendete Sequenzen von Befehlen,
die als Mikrobefehle bezeichnet werden, in der
Mikrobefehl-Logik 342 gespeichert. Wenn eine Sequenz von
Mikrobefehlen ausgeführt werden soll, enthält ein auf dem
PFP-Bus 322 erscheinender Befehl, der als ein Macrobefehl
bezeichnet wird, in einem Teil eine Anweisung an die
Mikrobefehl-Logik 342. Die Mikrobefehl-Logik 342 antwortet
auf einen Macrobefehl durch Lieferung einer entsprechenden
Sequenz von Mikrobefehlen an die CPU 314.
Die Struktur der Mikrobefehl-Logik 342 wird zunächst auf
der Ebene eines Blockdiagramms beschrieben, gefolgt von
einer Diskussion der Arbeitsweise der Mikrobefehl-Logik 342.
Diese Darlegungen werden die Unterschiede zwischen der Mikrobefehl-Logik
342 des Rechners 310 und der Mikrobefehl-Logik
142 des bekannten Rechners 110, auf den früher Bezug
genommen wurde, veranschaulichen.
A. Mikrobefehl-Logik 342, Aufbau und Wirkungsweise
(Fig. 8)
In Fig. 8 ist ein Blockdiagramm der Mikrobefehl-Logik
342 gezeigt. Es werden zunächst jene Elemente betrachtet,
die bei der bekannten Mikrobefehl-Logik 142 vorhanden
sein könnten. Ein Eingang eines Decodier-ROM 2810
ist mit dem PFP-Bus 322 verbunden und sein Ausgang ist
mit einem Eingang eines Docodier-Registers 2812 verbunden.
Der Ausgang des Decodier-Registers 2812 ist mit dem
Mikrobefehladressen (µIADR)-Bus 2814 verbunden, der mit
Eingängen eines Mikrobefehl-Speichers 2816 und einer Mikrobefehlsequenz-Steuereinrichtung
2818 verbunden ist. Der
Ausgang des Mikrobefehl-Speichers 2816 ist mit einem Eingang
des Mikrobefehl-Registers (µIR) verbunden. Ein Ausgang
des Mikrobefehl-Registers 344 ist mit einem Eingang
einer Zustandsänderungslogik 2822 verbunden, und der Ausgang
der Zustandsänderungslogik 2822 ist mit einem anderen
Eingang der Sequenz-Steuereinrichtung 2818 verbunden. Der
Ausgang der Sequenz-Steuereinrichtung 2818 ist mit dem
µIRADR-Bus 2814 verbunden. Indem wir uns zu den Unterschieden
der bekannten Mikrobefehl-Logik 142 und der vorliegenden
Mikrobefehl-Logik 342 wenden, ist der PFP-Bus
322 mit dem Eingang einer Startadressengenerator-Logik
(SAGE) 2824 verbunden, und der Ausgang der SAGE 2824 ist
mit dem µIADR-Bus 2814 verbunden.
Die Arbeitsweise der Mikrobefehl-Logik 342 wird zunächst
ohne die SAGE 2824 beschrieben, um die Arbeitsweise beim
Stand der Technik zu erläutern. Als nächstes wird die
Arbeitsweise dann unter Einschluß der SAGE 2824 beschrieben
werden, um die Arbeitsweise der vorliegenden Erfindung
zu erläutern.
Bei der Arbeit ohne die SAGE 2824 wird ein auf dem PFP-Bus
322 während eines ersten Zyklus des Prozessors erscheinender
Macrobefehl durch den Decodier-ROM 2810 decodiert.
Der ROM 2810 erzeugt eine Mikrobefehl-Speicheradresse
des ersten Mikrobefehls der entsprechenden Sequenz.
Zuerst wird die Adresse in die Decodierregister 2812 während
des zweiten Prozessor-Zyklus übertragen und wird dem
Mikrobefehl-Speicher 2816 durch den µIADR-Bus 2814 zugeführt.
Der Mikrobefehl-Speicher 2816 liefert einen entsprechenden
ersten Mikrobefehl an das Mikrobefehl-Register
344. Der erste Mikrobefehl erscheint am Ausgang des Mikrobefehlregisters
344 beim Start des dritten Prozessor-Zyklus.
Ausgewählte Bits des ersten und nachfolgenden Mikrobefehls
der Sequenz werden vom Mikrobefehl-Register 344 an die Zustandsänderungs-Logik
2822 geliefert. Die Zustandsänderungs-Logik
2822 liefert Steuersignale an die Sequenz-Steuereinrichtung
2818. Die Sequenz-Steuereinrichtung 2818 erzeugt
unter Verwendung der vom Decodier-Register 2812 gelieferten
Adressen und ihres eigenen Ausgangssignals Adressen für die
nachfolgenden Mikrobefehle der Sequenz. Die durch die Sequenz-Steuereinrichtung
2818 erzeugten Adressen werden dem
Mikrobefehl-Speicher 2816 und zu ihrem eigenen Eingang
über den µIADR-Bus 2814 geliefert. Neue Anfangsadressen
werden, wenn sie während einer Sequenz benötigt werden,
oder um eine neue Sequenz zu veranlassen, durch neue vom
PFP 312 über den PFP-Bus 322 gelieferte Macrobefehle
erzeugt.
Bei der Arbeit mit der SAGE 2824 verringert die SAGE 2824
die zum Veranlassen der Mikrobefehl-Sequenzen benötigte
Zeit. Wie oben beschrieben, war beim Stand der Technik
eine erster Prozessor-Zyklus erforderlich, um einen Macrobefehl
zur Erzeugung einer Anfangsadresse für eine Sequenz
zu decodieren. Die Anfangsadresse wurde zum Mikrobefehl-
Speicher 816 während des zweiten Prozessor-Zyklus geliefert.
Der erste Mikrobefehl war dann für die Benutzung
durch die CPU 314 beim dritten Prozessor-Zyklus verfügbar.
Die SAGE 2824 führt eine teilweise Decodierung von bestimmten
Macrobefehlen aus, um eine Anfangsadresse an den
Mikroprogramm-Speicher 2816 während der ersten Prozessor-
Zyklus zu liefern. Der erste Mikrobefehl einer Sequenz
wird dadurch für die CPU 314 beim zweiten Prozessor-Zyklus
verfügbar. Der Decodier-ROM 2810 führt gleichzeitig eine
volle Decodierung des Macrobefehls aus, um eine Adresse
an den Mikroprogramm-Speicher 2816 in einem nachfolgenden
Prozessor-Zyklus zu liefern. Die durch den Decodier-ROM
2810 gelieferten Adressen werden z. B. zum Auswählen einer
bestimmten Sequenz aus einer Familie von Sequenzen (Zweigen)
mit einer gemeinsamen ersten Mikrobefehl-Sequenz verwendet.
In solchen Fällen ruft die SAGE 2824 den ersten
Mikrobefehl aus einer Sequenz ab, und der Decodier-ROM 2810
ruft den ersten Mikrobefehl einer speziellen nachfolgenden
Zweigsequenz ab. Während der Ausführung einer speziellen
Sequenz kann die Auswahl einer neuen Sequenz durch einen
neuen Makrobefehl vom PFP 312 durchgeführt werden. Es
kann wiederum ein Makrobefehl für eien Zweigauswahl entweder
durch die SAGE 2824 oder durch den Decodier-ROM 2810
decodiert werden; die Decodierung durch die SAGE 2824 kann
daher verwendet werden, um die zum Starten einesausgewählten
Zweiges benötigte Zeit zu verrringern.
Nach der Diskussion der Struktur und Arbeitsweise der Mikrobefehl-Logik
322 auf der Ebene eines Blockdiagramms wird
nun die SAGE 2824 weiter besprochen.
B. SAGE 2824 (Fig. 9 und 10)
Die Decodierung durch die SAGE 2824 wird vorzugsweise verwendet,
um häufig verwendete Mikrobefehlsequenzen zu starten.
Beispiele solcher Sequenzen sind ALC-Befehle und Rechnungen
mit langen und kurzen effektiven Adressen (EFA). Ein weiteres
Beispiel sind E/A-Befehle, um schnell Daten in den Rechner
310 oder aus diesem heraus zu übertragen. Noch ein weiteres
Beispiel wird bezeichnet als Sequenzen eines erweiterten Befehlsvorrats
(EIS-Sequenzen). Beispiele von EIS-Mikrobefehl-
Sequenzen sind einige arithmetische Fest- und Gleitkomma-Operationen,
logische Operationen, Bit-Manipulationen, Datenbewegungen,
Stapelspeicher-Manipulationen, Datenfolge-Manipulationen
und Manipulationen mit Dezimalzahlen.
In Fig. 9 ist eine Tabelle gezeigt, die ausgewählte
signifikante Bits der obengenannten Makrobefehle in Beziehung
setzt zu Mikrobefehl-Speicheradressen der Anfangs-
Mikrobefehle der entsprechenden Mikrobefehlsfolgen. Um
die Schaltung der SAGE 2824 zu vereinfachen, ist es vorzuziehen,
daß ausgewählte signifikante Bits dieser Makrobefehle
logisch miteinander in Verbindung stehen. Wie in
Zeile 1 der Fig. 9 gezeigt ist, hat bei ALC-Befehlen das
Bit 0 den Wert 1. Die Bits 1 und 2 bezeichnen einen Quellenakkumulator
(source accumulator ACS) und die Bits 3
und 4 bezeichnen einen Zielakkumulator (destination accumulator,
ACD). Die Bits 5 bis 7 (FUN) enthalten den Operationscode,
z. B. Addieren und Subtrahieren. Die Bits 8 und 9
(SH) definieren eine Verschiebeoperation, z. B. nach rechts
oder links Schieben oder das Vertauschen der Hälften eines
Ergebnisses. Die Bits 10 und 11 (C) bezeichnen den Anfangswert
eines Übertragsbit-Eingangssignals in eine Operation.
Das Bit 12 (L) definiert, ob das Ergebnis der
Operation in den ACD geladen werden wird, und ob das Übertragsbit
auf den neuesten Stand gebracht wird. Die Bits 13
bis 15 definieren einen Skiptest, d. h., ob ein Skip ausgeführt
werden soll. EIS-Sequenzen, die in Zeile 2 der Fig. 9
gezeigt sind, werden dadurch definiert, daß die Bits 0 und
12 den Wert logisch 1 haben und daß die Bits 13 bis 15 den
Wert logisch 0 haben. Tatsächlich sind die EIS-Sequenzen
ALC-Sequenzen, bei denen kein Laden oder Skip auftritt
(eine Leerbefehl-Bedienung). Die EIS-Befehle können daher
als Leerbefehl-ALC-Befehle betrachtet werden, die zum
Ausführen von Nicht-ALC-Mikrobefehlssequenzen verwendet
werden. Die signifikanten Bits von Macrobefehlen mit langer
effektiver Adresse (LONG EFA) sind in Zeile 3 gezeigt.
Derartige Befehle sind ähnlich den Befehlen mit kurzer
effektiver Adresse, die früher beschrieben wurden, aber
sie erfordern zwei aufeinanderfolgende Macrobefehle zum
Bestimmen der relativen Adresse. Macrobefehle mit langer
effektiver Adresse sind gleich den EIS-Macrobefehlen,
definiert durch eine logische 1 in den Bits 1 und 12 und
durch eine logische 0 in den Bits 13 bis 15. Macrobefehle
mit langer effektiver Adresse sind von EIS-Macrobefehlen
unterschieden durch die Bits 5, 8, 9, 10 und 11. Die Bits
5, 10 und 11 sind logisch 1 und Bit 9 ist logisch 0. Die
Bits 6 und 7 werden durch SAGE 2824 verwendet, um eine
weitere teilweise Decodierung eines Macrobefehls mit langer
effektiver Adresse durchzuführen. Dies gestattet es, daß
die SAGE 2824 den ersten Mikrobefehl der Sequenz eines
speziellen Macrobefehls mit langer effektiver Adresse aus
einer Gruppe solcher Sequenzen auswählt, ohne darauf zu
warten, daß der Decodier-ROM 2810 eine zusätzliche Auswahldecodierung
durchführt. Macrobefehle mit kurzer effektiver
Adresse (Short EFA) sind in Zeile 4 von Fig. 9 gezeigt.
Diese Macrobefehle sind dadurch unterschieden, daß das
Bit 0 logisch 0 und die Bits 1 und 2 00, 01 oder 10 sind.
Die Bits 1 und 2 haben jedoch niemals beide den Wert logisch
1. Vier mögliche Kombinationen der Bits 6 und 7 werden
verwendet, ähnlich den Bits 6 und 7 bei den langen
effektiven Adressen, um es zu ermöglichen, daß die SAGE
2824 eine weitere teilweise Decodierung ausführt. E/A-
Macrobefehle sind in Zeile 5 gezeigt und werden ebenfalls
dadurch unterschieden, daß das Bit 0 den Wert logisch 0
hat. In diesem Fall sind die Bits 1 und 2 beide logisch 1,
wodurch sich die E/A-Macrobefehle von den Macrobefehlen
mit kurzer effektiver Adresse unterscheiden.
In der rechten Spalte der Fig. 9 sind Speicheradressen
des Mikroprogrammspeichers 2816 gezeigt, die die ersten
Mikrobefehle derjenigen Sequenzen enthalten, die den
Macrobefehlen ALC, EIS, EFA und E/A entsprechen. Die in
Fig. 9 gezeigten Mikroprogramm-Speicheradressen sind
als Zahlen zur Basis 8 (Oktalzahlen) ausgedrückt. Wie
dargestellt, stehen die einer Gruppe von Macrobefehlen
entsprechenden Mikroprogrammspeicheradressen wieder miteinander
logisch in Beziehung. Zum Beispiel werden die
Mikroprogrammspeicheradressen der ersten Mikrobefehle
von Sequenzen für kurze effektive Adressen in den Stellen
3701, 3721, 3741 und 3761 des Mikroprogramm-Speichers
2816 gespeichert. Die Auswahl der Mikroprogrammspeicher-
Adressen in der Weise, daß alle ersten Mikrobefehladressen,
die einer gegebenen Gruppe von Macrobefehlen entsprechen,
miteinander in logischer Beziehung stehen, vereinfacht die
Schaltung der SAGE 2824.
In Fig. 10 ist die bei einem speziellen Ausführungsbeispiel
der SAGE 2824 verwendete Schaltung gezeigt. Wie beim
Unterspeicher 313 und beim PFP 312 wird die Schaltung der
SAGE 2824 nur insoweit besprochen werden, als dies zur
Erläuterung der Wirkungsweise der SAGE 2824 nötig ist.
Verknüpfungsschaltungen 3010 bis 3018 und Inverter 3020
und 3022 bilden eine Prioritätsdecodierschaltung, um eine
Auswahl zwischen widerstreitenden Anforderungen nach der
Ausführung von Mikrobefehl-Sequenzen zu treffen. Das eine
Ausgangssignal dieser Schaltung ist INSTSAGE (instruction
sage), das anzeigt, daß eine SAGE-Befehlssequenz der
oben diskutierten Gruppe ausgeführt werden soll. Drei
andere Ausgangssignale repräsentieren Anforderungen nach
bisher nicht diskutierten Sequenzen. PFPSAGE (PFP SAGE)
zeigt an, daß eine Sequenz zum Unterstützen des PFP 312
(Dienst-Programm-Sequenz) ausgeführt werden soll; NMI+
INTSAGE (nicht-maskierbarer Interrupt oder SAGE - Interrupt)
zeigt an, daß eine Sequenz für eine Interrupt-Routine ausgeführt
werden muß; und DCHSAGE (Data channel Sage) zeigt
an, daß eine Sequenz ausgeführt werden muß, die ene von
einem E/A-Gerät veranlaßte Datenübertragung unterstützt.
Wie dargestellt, sind diese Ausgänge miteinander durch
eine verdrahtete ODER-Schaltung verknüpft, so daß zur
gleichen Zeit nur ein Ausgangssignal aktiv ist. Die Priorität
der SAGE-Mikrobefehlssequenzen, die durch diese Ausgangssignale
ausgewählt werden, ist umgekehrt zu der genannten
Reihenfolge.
Die Eingangssignale der Prioritätsschaltung sind:
SYNCDCH (Synch Data Channel) ist ein Prüfergebniseingangssignal
von der CPU 314, das anzeigt, daß ein Datenkanal
unterstützt werden muß. Das Eingangssignal NMI+INTREQ
(Nicht-maskierbarer Interrupt oder Interrupt-Anforderung)
zeigt eine Anfrage nach einer Mikrobefehlssequenz an, die
einen Interrupt unterstützt. Das Eingangssignal PFPREADY
(PFP READY) zeigt an, daß PFP 312 leer ist und eine
Sequenz benötigt, die es erlaubt, daß Befehle aus dem
Speicher 311 abgerufen werden. Das Eingangssignal INHPFPEMPTY
(Inhibit PFP Empty) ist ein Eingangssignal von
der CPU 314, das die Unterstützung des PFP 312 blockiert
und das unten näher beschrieben wird. Das Eingangssignal
µSEQ 3 ist ein Eingangssignal von der Zustandsänderungslogik
2822, das anzeigt, daß eine SAGE-Decodierung ausgeführt
werden muß.
Puffer-Verknüpfungsglieder 3024, 3026 und 3028 liefern
die teilweise decodierten Adreßbits 3 bis 9 des
Speichers 2618 an den µIADR-Bus und somit an den
Speicher 2816. Alle Adresseneingänge des Speichers 2618
sind mit Pull-Up-Widerständen versehen. Die Adresseneingänge
des Speichers 2618 liegen daher auf logisch 1, wenn
sie nicht auf den Wert 0, beispielsweise durch die Puffer
3024 bis 3026 gebracht werden. Die Ausgangssignale µIADR
3, 4, 5 und 7 des Puffers 3024 sind als Anfangsadreßbits
der ersten Mikrobefehle vom Sequenzen zur Unterstützung
von Datenkanälen, Interrupts und des PFP 312 vorgesehen.
Eingangssignale des Puffers 3024 sind DCHSAGE, NMI+
INTSAGE und PFPSAGE von der Prioritätsschaltung. Der
Puffer 3024 wird durch µSEQ 3 und INSTSAGE über ein Verknüpfungsglied
3030 aktiviert. Das Ausgangssignal des
Verknüpfungsglieds 3030 zeigt an, daß eine Datenkanal-,
Inrerrupt- oder PFPSAGE-Decodierung ausgeführt werden
muß.
Die Puffer 3026 und 3028 liefern teilweise decodierte
Adreßbits des Speichers 2816 µIADR 3 bis 9, wenn Sequenzen
für ALC-, EIS-Mikrobefehle, Mikrobefehle mit langer
und kurzer effektiver Adresse, oder für E/A-Mikrobefehle
ausgeführt werden sollen. Das den Puffern 3026 und 3028
durch den Inverter 3032 zugeführte Eingangssignal INSTSAGE
zeigt an, daß eine SAGE-Decodierung für einen aus
dieser Gruppe von Makrobefehlen durchgeführt werden muß. Verknüpfungsglieder 3034
und 3036 decodieren die Makrobefehlsbits PFP 0 und 12 bis
15 vom PFP-Bus 322 und liefern PFPEIS an den Puffer 3028.
PFPEIS zeigt a, daß ein Makrobefehl vom EIS-Typ durch
SAGE 2024 decodiert werden muß. Verknüpfungsglieder 3038
und 3040 decodieren die Makrobefehlsbits PFP 0, 5, 9, 10
und 11 und liefern ein Signal EEA an den Puffer 3028. EEA
zeigt an, daß ein Makrobefehl mit langer effektiver Adresse
dekodiert werden muß. Das Ausgangssignal eines Verknüpfungsglieds
3042 wird an den Puffer 3028 geliefert.
Die Makrobefehlsbits PFP 0, 6 und 7 werden direkt an
Eingänge der Puffer 3026 und 3028 geliefert, z. B. für
kurze und lange effektive Adressen. Ein Eingangssignal
IODECODE des Puffers 3026 zeigt an, daß ein E/A- Makrobefehl
dekodiert werden muß.
Zusammengefaßt selektiert SAGE 2824 dadurch die ersten
Mikrobefehle bestimmter im Speicher 2816 gespeicherter
Sequenzen durch Dekodieren von ausgewählten Makrobefehlsbits,
um entsprechende ausgewählte Mikrobefehlsadreßbits
zu liefern. Eine einzelne Klasse von derart dekodierten
Makrobefehlen mag mehr als eine Mikrobefehlssequenz enthalten.
Eine Gruppe von Sequenzen, die einem Makrobefehl
entspricht, haben jedoch im allgemeinen alle eine gleiche
erste Mikrobefehlssequenz. SAGE 2824 führt eine teilweise
Dekodierung aus, wo nötig, um eine Auswahl zwischen miteinander
in Beziehung stehenden Mikrobefehlssequenzen
zu treffen, aber im allgemeinen wird eine solche Auswahl
durch den Dekodier-ROM 2810 getroffen. Werden z. B. die
Makrobefehle mit kurzer effektiver Adresse und die E/A-
Makrobefehle betrachtet, so liefert SAGE 2824 Adreßbits,
die ausreichen, um alle Adressen auszuwählen, die durch
37X1 repräsentiert sind. SAGE 2824 liefert dann weitere
Adreßbits, die ausreichen, um anzuzeigen, ob X gerade
ist (0, 2, 4, 6) oder ungerade (1, 3, 5, 7).
Soweit die Art der in den Zeichnungen gezeigten Verknüpfungsglieder
(z. B. UND-Glied) in der Beschreibung
nicht genannt ist, kann sie der Zeichnung entnommen
werden.