DE2944419C2 - - Google Patents

Info

Publication number
DE2944419C2
DE2944419C2 DE2944419A DE2944419A DE2944419C2 DE 2944419 C2 DE2944419 C2 DE 2944419C2 DE 2944419 A DE2944419 A DE 2944419A DE 2944419 A DE2944419 A DE 2944419A DE 2944419 C2 DE2944419 C2 DE 2944419C2
Authority
DE
Germany
Prior art keywords
memory
pfp
microinstruction
bus
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
DE2944419A
Other languages
English (en)
Other versions
DE2944419A1 (de
Inventor
David Hopkinton Mass. Us Grondolski
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
Data General Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Data General Corp filed Critical Data General Corp
Publication of DE2944419A1 publication Critical patent/DE2944419A1/de
Application granted granted Critical
Publication of DE2944419C2 publication Critical patent/DE2944419C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units

Description

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.

Claims (10)

1. Datenverarbeitungsanlage mit einem Prozessor (312, 314), einem Speicher (311) zum Speichern von Befehlen, wobei der Speicher (311) einen Eingabebus (320), um Speichereingabesignale vom Prozessor zum Speicher zu leiten, und einen Ausgabebus (318), um Speicherausgabesignale vom Speicher zum Prozessor zu leiten, aufweist,
und mit einer E/A-Einrichtung (316), um Systemausgangssignale vom Prozessor nach außerhalb des Systems und um Systemeingangssignale von außerhalb des Systems zum Prozessor zu leiten,
wobei der Prozessor (312, 314) aufweist:
eine Zentraleinheit (314), die zwischen dem Eingabebus (320) und dem Ausgabebus (318) angeordnet ist, um arithmetische und logische Operationen mit Daten auszuführen, und die eine Befehlseinrichtung (342, 344, 346) aufweist, um einen der Befehle zu speichern und die Tätigkeit der Zentraleinheit (314) in Übereinstimmung hiermit zu steuern; einen Bereitstell-Prozessor (312), der zwischen den Eingabebus (320) und den Ausgabebus (318) eingeschaltet ist, um mindestens einen vor dem gerade in der Ausführung durch die Zentraleinheit (314) befindlichen Befehl liegenden Befehl aus dem Speicher (311) abzurufen und zu speichern; und einen PFP-Bus (322), der mit dem Eingabebus (320) und dem Ausgabebus (318) zusammenarbeitet, um aus dem Bereitstell- Prozessor (312) den nächsten Befehl zur Befehlseinrichtung (342, 344, 346) zu leiten,
dadurch gekennzeichnet, daß die Befehlseinrichtung (342, 344, 346) derart ausgebildet ist, daß sie den dem gerade in der Ausführung befindlichen Befehl folgenden nächsten Befehl vom Bereitstell-Prozessor (312) anfordert, wenn er dort vorhanden ist, oder anderenfalls direkt vom Speicher (311) anfordert.
2. Datenverarbeitungsanlage nach Anspruch 1, bei der der Speicher (311) auch zum Speichern von Daten vorgesehen ist, wobei der Bereitstell-Prozessor (312) Daten aus dem Speicher aufruft und speichert, um sie an die Zentraleinheit (314) weiterzugeben oder wahlweise Daten von der Zentraleinheit (314) empfängt und an den Speicher (311) weiterleitet, dadurch gekennzeichnet, daß die Befehlseinrichtung (342, 344, 346) so ausgebildet ist, daß die Zentraleinheit (314) auch Daten wahlweise aus dem Bereitstell- Prozessor (312) oder direkt aus dem Speicher (311) abruft und Daten wahlweise in den Bereitstell-Prozessor (312) oder direkt in den Speicher (311) eingibt.
3. Datenverarbeitungsanlage nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß die Befehlseinrichtung (342, 344, 346) aufweist:
eine Einrichtung (342) zum Empfangen bestimmter Befehle und zum Ableiten von Mikrobefehlssequenzen aus jedem der bestimmten Befehle, um die Zentraleinheit (314) in Übereinstimmung mit den bestimmten Befehlen zu steuern, und um den nächsten Befehl auszuwählen, und eine Ausgabeeinrichtung (Mikrobefehlsregister 344), um die Mikrobefehlsequenzen an die Zentraleinheit (314) zu liefern.
4. Datenverarbeitungsanlage nach Anspruch 3, dadurch gekennzeichnet, daß die Einrichtung (342) aufweist:
einen Mikrobefehlsspeicher (2816) zum Speichern und Liefern der Mikrobefehlsequenzen;
einen Anfangswertdecoder (2810), der auf die bestimmten Befehle anspricht, um Anfangsauswahlsignale an den Mikrobefehlspeicher (2816) zu liefern, um den ersten Mikrobefehl der Mikrobefehlssequenzen auszuwählen, und eine Mikrobefehlsteuereinrichtung (2818), die auf die gespeicherten Befehle und die Mikrobefehlssequenzen anspricht, um andere Auswahlsignale an den Mikrobefehlsspeicher (2816) zu liefern.
5. Datenverarbeitungsanlage nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Bereitstell- Prozessor (312) eine Vergleichseinrichtung (334) aufweist, die auf die Tätigkeit des Bereitstell-Prozessors (312) und der Zentraleinheit (314) anspricht, um die Verfügbarkeit der angeforderten Befehle anzuzeigen.
6. Datenverarbeitungsanlage nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Bereitstell- Prozessor (312) weiterhin aufweist: eine Überwachungseinrichtung, die auf die Tätigkeit des Speichers (311) anspricht, um einen möglichen Konflikt zwischen einem angeforderten Befehl im Speicher (330) und einem entsprechenden Befehl im Speicher (311) anzuzeigen.
7. Datenverarbeitungsanlage nach Anspruch 6, dadurch gekennzeichnet, daß die Überwachungseinrichtung auch auf die Tätigkeit der den Befehl anfordernden Einrichtung der Zentraleinheit (314) anspricht.
8. Datenverarbeitungsanlage nach Anspruch 3 oder 4, dadurch gekennzeichnet,
daß die Einrichtung (342) zum Empfangen bestimmter Befehle Speicherausgangssignale empfängt, die erste bestimmte Befehle repräsentieren, und jeweils einen der ersten bestimmten Befehle speichert,
daß der Mikrobefehlsspeicher (2816) Mikrobefehlsequenzen zum Steuern des Prozessors (312, 314) in Übereinstimmung mit den ersten Befehlen speichert und liefert, wobei jede Sequenz einem der ersten bestimmten Befehle entspricht,
daß der Anfangswertdecoder (2810) auf zweite bestimmte der ersten bestimmten Befehle anspricht, um den ersten Mikrobefehl der Sequenz auszuwählen, die dem zweiten gespeichert bestimmten Befehl entspricht, und
daß die Mikrobefehlsteuereinrichtung (2818) auf den einen gespeicherten Befehl der ersten bestimmten Befehle und auf die entsprechenden Mikrobefehlssequenzen anspricht, um die Mikrobefehle aus der entsprechenden Sequenz auszuwählen.
9. Datenverarbeitungsanlage nach Anspruch 4, dadurch gekennzeichnet,
daß der Mikrobefehlsspeicher (2816) eine Einrichtung zum Speichern von Mikrobefehlssequenzen aufweist, und mindestens eine der Mikrobefehlssequenzen jedem einzelnen der bestimmten Befehle zuordnet,
daß eine den Mikrobefehlspeicher (2816) enthaltende Mikrobefehllogik (Einrichtung 342) ferner aufweist:
eine SAGE-Einrichtung (2824), um bestimmte Speicherausgangssignale zu empfangen und in Abhängigkeit davon jeden ersten Mikrobefehl innerhalb jeder Folge auszuwählen, die den entsprechenden bestimmten Speicherausgangssignal entspricht.
10. Datenverarbeitungsanlage nach Anspruch 9, dadurch gekennzeichnet, daß die SAGE-Einrichtung (2824) eine teilweise Decodierung von bestimmten Macrobefehlen ausführt, um eine Anfangsadresse an den Mikrobefehlspeicher (2816) zu liefern, und daß eine Einrichtung (Decodier-ROM 2810) vorgesehen ist, um eine volle Decodierung eines Makrobefehls auszuführen, um eine Adresse an den Mikrobefehlspeicher (2816) in einem nachfolgenden Prozessor-Zyklus zu liefern.
DE19792944419 1978-11-08 1979-11-03 Digitalrechnersystem Granted DE2944419A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/959,038 US4316244A (en) 1978-11-08 1978-11-08 Memory apparatus for digital computer system

Publications (2)

Publication Number Publication Date
DE2944419A1 DE2944419A1 (de) 1980-05-14
DE2944419C2 true DE2944419C2 (de) 1988-08-18

Family

ID=25501594

Family Applications (2)

Application Number Title Priority Date Filing Date
DE2953861A Expired DE2953861C2 (de) 1978-11-08 1979-11-03
DE19792944419 Granted DE2944419A1 (de) 1978-11-08 1979-11-03 Digitalrechnersystem

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE2953861A Expired DE2953861C2 (de) 1978-11-08 1979-11-03

Country Status (8)

Country Link
US (1) US4316244A (de)
JP (1) JPS55102050A (de)
AU (1) AU532100B2 (de)
CA (1) CA1134051A (de)
DE (2) DE2953861C2 (de)
FR (1) FR2443099B1 (de)
GB (1) GB2034944B (de)
NL (1) NL7907768A (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56152049A (en) * 1980-04-25 1981-11-25 Toshiba Corp Microprogram control system
US4467417A (en) * 1981-09-16 1984-08-21 Honeywell Information Systems Inc. Flexible logic transfer and instruction decoding system
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US4622630A (en) * 1983-10-28 1986-11-11 Data General Corporation Data processing system having unique bus control protocol
US4764896A (en) * 1985-07-01 1988-08-16 Honeywell Inc. Microprocessor assisted memory to memory move apparatus
US5179716A (en) * 1986-07-02 1993-01-12 Advanced Micro Devices, Inc. Programmable expandable controller with flexible I/O
EP0261628B1 (de) * 1986-09-26 1991-05-02 Siemens Aktiengesellschaft Vorausladeeinrichtung zum mikroprogrammierten und verdeckten Bereitstellen von Maschinenbefehlen in einem Prozessor
US4980850A (en) * 1987-05-14 1990-12-25 Digital Equipment Corporation Automatic sizing memory system with multiplexed configuration signals at memory modules
EP0338317B1 (de) * 1988-04-20 1996-01-10 Sanyo Electric Co., Ltd. In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas
CA2011518C (en) * 1989-04-25 1993-04-20 Ronald N. Fortino Distributed cache dram chip and control method
US5144692A (en) * 1989-05-17 1992-09-01 International Business Machines Corporation System for controlling access by first system to portion of main memory dedicated exclusively to second system to facilitate input/output processing via first system
US5369767A (en) * 1989-05-17 1994-11-29 International Business Machines Corp. Servicing interrupt requests in a data processing system without using the services of an operating system
US5369749A (en) * 1989-05-17 1994-11-29 Ibm Corporation Method and apparatus for the direct transfer of information between application programs running on distinct processors without utilizing the services of one or both operating systems
US5155809A (en) * 1989-05-17 1992-10-13 International Business Machines Corp. Uncoupling a central processing unit from its associated hardware for interaction with data handling apparatus alien to the operating system controlling said unit and hardware
US5325517A (en) * 1989-05-17 1994-06-28 International Business Machines Corporation Fault tolerant data processing system
US5113522A (en) * 1989-05-17 1992-05-12 International Business Machines Corporation Data processing system with system resource management for itself and for an associated alien processor
US5283868A (en) * 1989-05-17 1994-02-01 International Business Machines Corp. Providing additional system characteristics to a data processing system through operations of an application program, transparently to the operating system
JPH05506526A (ja) * 1990-01-05 1993-09-22 マスパー・コンピューター・コーポレイション クワッドクロスバー及びハイパーバーパーソナリティを備えるラウタチップ
JPH05506113A (ja) * 1990-01-05 1993-09-02 マスパー・コンピューター・コーポレイション 並列プロセッサメモリシステム
US5280474A (en) * 1990-01-05 1994-01-18 Maspar Computer Corporation Scalable processor to processor and processor-to-I/O interconnection network and method for parallel processing arrays
US5313590A (en) * 1990-01-05 1994-05-17 Maspar Computer Corporation System having fixedly priorized and grouped by positions I/O lines for interconnecting router elements in plurality of stages within parrallel computer
US5301299A (en) * 1990-06-07 1994-04-05 Intel Corporation Optimized write protocol for memory accesses utilizing row and column strobes
KR100295074B1 (ko) * 1992-12-22 2001-09-17 리패치 응용주문형집적회로인에러정정코드메모리제어기
WO2000043883A1 (fr) * 1999-01-25 2000-07-27 Mitsubishi Denki Kabushiki Kaisha Unite peripherique de controleur programmable
EP1643658A1 (de) 2004-10-04 2006-04-05 Sony Deutschland GmbH Netzleitungsübertragungsverfahren

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1935390U (de) 1965-12-06 1966-03-24 Huelsta Moebelwerk Alois Huels Scharnier fuer moebeltueren.
US3764988A (en) * 1971-03-01 1973-10-09 Hitachi Ltd Instruction processing device using advanced control system
US3736566A (en) * 1971-08-18 1973-05-29 Ibm Central processing unit with hardware controlled checkpoint and retry facilities
FR2226079A5 (de) * 1973-04-13 1974-11-08 Honeywell Bull Soc Ind
US3810110A (en) * 1973-05-01 1974-05-07 Digital Equipment Corp Computer system overlap of memory operation
US3900836A (en) * 1973-11-30 1975-08-19 Ibm Interleaved memory control signal handling apparatus using pipelining techniques
JPS50128948A (de) * 1974-03-29 1975-10-11
US4048623A (en) 1974-09-25 1977-09-13 Data General Corporation Data processing system
US4024508A (en) * 1975-06-19 1977-05-17 Honeywell Information Systems, Inc. Database instruction find serial
DE2537787A1 (de) 1975-08-25 1977-03-03 Computer Ges Konstanz Modularer arbeitsspeicher fuer eine datenverarbeitungsanlage und verfahren zum durchfuehren von speicherzugriffen an diesem speicher
US4045781A (en) * 1976-02-13 1977-08-30 Digital Equipment Corporation Memory module with selectable byte addressing for digital data processing system
US4156925A (en) * 1976-04-30 1979-05-29 International Business Machines Corporation Overlapped and interleaved control store with address modifiers
US4095265A (en) * 1976-06-07 1978-06-13 International Business Machines Corporation Memory control structure for a pipelined mini-processor system
US4079455A (en) * 1976-12-13 1978-03-14 Rca Corporation Microprocessor architecture
DE2704560C2 (de) * 1977-02-03 1979-01-18 Siemens Ag, 1000 Berlin Und 8000 Muenchen Datenverarbeitende Anlage mit paralleler Bereitstellung und Ausführung von Maschinenbefehlen
US4122359A (en) * 1977-04-27 1978-10-24 Honeywell Inc. Memory protection arrangement
US4130899A (en) * 1977-11-25 1978-12-19 Ncr Corporation System for operating volatile memory in normal and standby modes
US4189767A (en) * 1978-06-05 1980-02-19 Bell Telephone Laboratories, Incorporated Accessing arrangement for interleaved modular memories

Also Published As

Publication number Publication date
NL7907768A (nl) 1980-05-12
US4316244A (en) 1982-02-16
DE2953861C2 (de) 1989-01-26
JPS55102050A (en) 1980-08-04
DE2953861A1 (de) 1982-09-16
FR2443099A1 (fr) 1980-06-27
FR2443099B1 (fr) 1988-03-25
CA1134051A (en) 1982-10-19
GB2034944B (en) 1982-12-22
AU5222879A (en) 1980-05-15
DE2944419A1 (de) 1980-05-14
AU532100B2 (en) 1983-09-15
GB2034944A (en) 1980-06-11

Similar Documents

Publication Publication Date Title
DE2944419C2 (de)
DE2350884C2 (de) Adreßumsetzungseinheit
DE69132652T2 (de) Rechnerdatenleitweglenkungssystem
DE19882486B4 (de) Synchroner, nicht-flüchtiger Seitenmodus-Speicher
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE2744531C2 (de) Anordnung zur Auswahl von Unterbrechnungsprogrammen in einer Datenverarbeitungsanlage
DE19983745B9 (de) Verwendung von Seitenetikettregistern um einen Zustand von physikalischen Seiten in einer Speichervorrichtung zu verfolgen
DE2854397A1 (de) Pufferspeichereinheit fuer ein datenverarbeitungssystem
DE1774296B2 (de) Restruktuierbare Steuereinheit für elektronische Digitalrechner
DE2813128A1 (de) Mikroprogrammspeicher
DE1956604A1 (de) Datenverarbeitungsanlage mit einem Speichersystem
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE2130299A1 (de) Eingabe/Ausgabe-Kanal fuer Datenverarbeitungsanlagen
DE2635592A1 (de) Multiprozessor-abrufsystem
DE2226382A1 (de) Datenverarbeitungsanlage
DE3438869A1 (de) Computersystem mit adressumwandlung
DE2829668A1 (de) Kanaldatenpufferspeicher
DE2617408B2 (de) Speichermodul für ein Datenverarbeitungsgerät mit Speicherhierarchie
DE2657848A1 (de) Steuereinheit fuer ein datenverarbeitungssystem
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE2164793A1 (de) Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit
DE2746505A1 (de) Dv-system mit einer einrichtung zum adressieren in einem festwertspeicher abgelegter mikroprogramme
DE2718551A1 (de) Adressenumsetzvorrichtung in einer datenverarbeitungsvorrichtung
DE2758829A1 (de) Multiprozessor-datenverarbeitungssystem

Legal Events

Date Code Title Description
OAP Request for examination filed
OD Request for examination
8172 Supplementary division/partition in:

Ref country code: DE

Ref document number: 2953862

Format of ref document f/p: P

AH Division in

Ref country code: DE

Ref document number: 2953862

Format of ref document f/p: P

Q171 Divided out to:

Ref country code: DE

Ref document number: 2953862

8172 Supplementary division/partition in:

Ref country code: DE

Ref document number: 2953860

Format of ref document f/p: P

Q171 Divided out to:

Ref country code: DE

Ref document number: 2953860

8172 Supplementary division/partition in:

Ref country code: DE

Ref document number: 2953861

Format of ref document f/p: P

Q171 Divided out to:

Ref country code: DE

Ref document number: 2953861

8172 Supplementary division/partition in:

Ref country code: DE

Ref document number: 2954605

Format of ref document f/p: P

Q171 Divided out to:

Ref country code: DE

Ref document number: 2954605

8172 Supplementary division/partition in:

Ref country code: DE

Ref document number: 2954606

Format of ref document f/p: P

Q171 Divided out to:

Ref country code: DE

Ref document number: 2954606

AH Division in

Ref country code: DE

Ref document number: 2954605

Format of ref document f/p: P

Ref country code: DE

Ref document number: 2954606

Format of ref document f/p: P

Ref country code: DE

Ref document number: 2953861

Format of ref document f/p: P

D2 Grant after examination
AH Division in

Ref country code: DE

Ref document number: 2953861

Format of ref document f/p: P

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee