DE69031433T2 - Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher - Google Patents
Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem SpeicherInfo
- Publication number
- DE69031433T2 DE69031433T2 DE69031433T DE69031433T DE69031433T2 DE 69031433 T2 DE69031433 T2 DE 69031433T2 DE 69031433 T DE69031433 T DE 69031433T DE 69031433 T DE69031433 T DE 69031433T DE 69031433 T2 DE69031433 T2 DE 69031433T2
- Authority
- DE
- Germany
- Prior art keywords
- memory
- instruction
- unit
- memory access
- address
- 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 - Lifetime
Links
- 230000015654 memory Effects 0.000 title claims abstract description 304
- 238000013519 translation Methods 0.000 claims abstract description 136
- 238000000034 method Methods 0.000 claims abstract description 82
- 238000012545 processing Methods 0.000 claims abstract description 37
- 230000004044 response Effects 0.000 claims abstract description 16
- 238000001514 detection method Methods 0.000 claims abstract description 5
- 230000014616 translation Effects 0.000 description 125
- 230000008569 process Effects 0.000 description 62
- 238000006243 chemical reaction Methods 0.000 description 19
- 108091035710 E-box Proteins 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 4
- 230000000644 propagated effect Effects 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000007781 pre-processing Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3865—Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0766—Error or fault reporting or storing
- G06F11/0772—Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
- Diese Erfindung betrifft allgemein digitale Computer, die auf dem virtuellen Speichersystem basieren. Insbesondere betrifft diese Erfindung eine Technik für das Verarbeiten von Speicherzugriffsausnahmen zusammen mit zuvor geholten Befehlen innerhalb der Befehlspipeline eines Computersystems zum Verarbeiten von Pipelinebefehlen.
- Ein Computersystem, das einen virtuellen Speicher verwendet, kann eine große Anzahl von Adressen (mehr als 4 Billionen Adressen für einen 32-Bit-Computer) erkennen, die in einem virtuellen Adressenraum definiert sind. Der aktuelle physikalische Hauptspeicher des Computers ist im wesentlichen kleiner, und dennoch kann das System Daten verarbeiten, deren Adressen im gesamten Adressenraum verstreut sind. Solche Fähigkeiten werden mittels ausgeklügelter Speichermanagement-Techniken zur Verfügung gestellt, welche zulassen, daß ein Programm unter der Annahme ausgeführt wird, daß ein großer Teil des virtuellen Adressenraums tatsächlich verfügbar ist, wodurch Anwendern die Illusion eines viel größeren Hauptspeicher-Adressenraums vermittelt wird, als tatsächlich verfügbar ist. Durch die Verwendung einer Speicherabbildung und der Umsetzung von logischen zu physikalischen Adressen versieht das virtuelle Speichersystem den Computer mit einem sequentiellen logischen Speicher an einem nicht sequentiellen physikalischen Speicher.
- Virtuelle Speichersysteme basieren allgemein auf dem Konzept der Speicherblokkierung unter Verwendung einer Kombination von entweder einem statischen oder einem dynamischen Teilen eines linearen Feldes eines Speichers in kleinere Speicherbereiche und einem Blockadressenabbildungssystem, auf dessen Basis virtuelle Adressen in Blockstellen und Verschiebungen im Block umgesetzt werden. Das Abbildungsverfahren von einer virtuellen zu einer physikalischen Adressierung wird typischerweise mittels einer Blockabbildungstabelle erreicht, die einen Eintrag hält, der die Blockadresse im Speicher für jeden physikalischen Speicherblock enthält, und für Speichersysteme mit verschieden großen Blöcken die Größe des Speicherblocks. Bei einem derartigen Schema für einen virtuellen Speicher mit ausgebildeten Blöcken sind alle physikalischen Blöcke gleich groß, um das Austauschen von Blockstellen in einer Reihenfolge zu ermöglichen, damit ein virtueller Speicherblock an einer beliebigen der physikalischen Blockstellen im Speicher angeordnet werden kann. Auf jeden Block des Speichers wird als Speicherseite Bezug genommen und nicht alle virtuellen Seiten sind im primären Speicher gleichzeitig vorhanden. Statt dessen wird irgendeine Einrichtung als sekundärer Speicher, normalerweise eine Festplatte, zum Halten des Rests der Seiten verwendet.
- Eine Abbildung oder eine Umsetzung von virtuellen zu realen (physikalischen) Adressen in einem Seitenspeichersystem wird durch die Verwendung von Seitentabellen für jeden größeren Bereich des virtuellen Adressenraums durchgeführt, der aktiv verwendet wird. Die Seitentabelle ist ein virtuell sequentielles Feld von Seitentabelleneinträgen, von denen jeder ein Langwort ist, das die physikalische Abbildung für eine virtuelle Seite darstellt. Eine Umsetzung von einer virtuellen zu einer physikalischen Adresse wird dann durch einfaches Verwenden der virtuellen Seitennummer als Index in die Seitentabelle von der gegebenen Seitentabellen- Basisadresse durchgeführt. Die Seitentabelle enthält unter anderem ein Feld, das anzeigt, ob eine Speicherseite physikalisch im primären oder im sekundären Speicher angeordnet ist. Eine Speichermanagement- und -ausführungslogik wird zum Umsetzen der virtuellen Adressen eines Programms in physikalische Adressen verwendet, zum Speichern von Programmen und zugehörigen Daten an angenehmen Stellen (entweder im Hauptspeicher oder im Hilfsspeicher), und zum Vermitteln erforderlicher Daten oder Programmsegmente in einen Hauptspeicher.
- In einem Computersystem mit virtuellem Speicher der obigen Art greifen Programmen auf einen physikalischen Speicher und Eingabe-/Ausgabe-(I/O)-Vorrichtungen durch Erzeugen von virtuellen Adressen zu, die aufeinanderfolgend in physikalische Adressen umgesetzt werden, durch Verwenden von Teilen der physikalischen Adresse, um in eine Seitentabelle zu zeigen und den entsprechenden Seitentabelleneintrag (PTE) zu holen. Der PTE enthält typischerweise Information über Zugriffsprivilegien, ein Erzeugen physikalischer Adressen und Bits, die den Modifikations- und Gültigkeitszustand der Adresse anzeigen. Der PTE enthält auch Statusbits, die durch die Systemsoftware verwendet werden, um Zugriffsausnahmen zu behandeln, wie beispielsweise jene, die dann auftreten, wenn eine Adressenseite im Speicher nicht vorhanden ist. Das Betriebssystem schafft somit ein Bild eines physikalischen Speichers, auf den durch einen Anwender ohne irgendeine Referenz zur Speicherbetriebsmittelstelle zugegriffen werden kann. Als Ergebnis des Umsetzungsprozesses gewährt das Betriebssystem darauffolgend entweder einen Zugriff auf adressierte Segmente des Speichers oder verweigert ihn. Wenn eine Speicherzugriffsanfrage gewährt wird, geht die entsprechende Speicheroperation weiter bis zum Ende. Andererseits wird dann, wenn eine Zugriffsanfrage verweigert wird, der Programmausführungsprozeß angehalten, und statt dessen wird ein Ausnahmebehandlungsprogramm ausgeführt.
- Wenn ein Befehl auszuführen ist, erzeugt die Hardware des virtuellen Speichersystems eine virtuelle Adresse, die dem Befehl entspricht und leitet sie zusammen mit einer Anfrage für eine Speicherzugriffsoperation, wie beispielsweise ein Lesen oder ein Schreiben, zur Systemspeichereinheit weiter. Eine Umsetzungseinrichtung, die mit der Speichereinheit versehen ist, berechnet die physikalische Adresse, die der virtuellen Adresse entspricht, und die angefragte Speicherzugriffsoperation wird ausgeführt, wenn der Umsetzungsprozeß erfolgreich gewesen ist. Wenn aus irgendeinem Grund gefunden wird, daß die Umsetzung von der virtuellen Adresse zur physikalischen Adresse nicht erfolgreich ist, bringt die Speichereinheit ein Signal zum Befehlsprozessor zurück, der die Inituerung einer Speicherzugriffsausnahme anstelle eines Fortfahrens mit einer Programmausführung veranlaßt. Die virtuelle Adresse kann derart angesehen werden, daß sie zwei logische Komponenten enthält, nämlich eine virtuelle Seitennummer und eine Byte- Distanzadresse innerhalb jener Seite.
- Obwohl die Technik zum Anhalten einer Programmausführung auf eine Erfassung von Zugriffsausnahmen hin konzeptmäßig richtig ist, kann ihre Anwendung bei Computern hoher Leistungsfähigkeit, die typischerweise eine Mehrfachverarbeitung zusammen mit einer Pipelinebefehlsausführung verwenden, äußerst kompliziert und problematisch sein. Computer hoher Leistungsfähigkeit basieren allgemein auf dem Konzept einer Mehrfachverarbeitung auf Systemebene durch Verwenden einer Vielzahl von Zentralprozessoreinheiten zum Ausführen einer definierten Aufgabe durch eine geeignete Problemzerlegung. Die Mehrfachverarbeitungsoperation wird weiterhin ergänzt durch den Prozeß einer Pipelineverarbeitung, so daß Computerbefehle in eine Reihe kleiner und einfacher Operationen aufgeteilt werden, die auf eine Pipelineweise aufeinanderfolgend durch mehrere bestimmte Funktionseinheiten ausgeführt werden, die für spezifische Zwecke optimiert sind. Eine hohe Geschwindigkeit und eine extensive Verbindungsfähigkeit und Redundanz wird in solchen Systemen durch die Verwendung paralleler Pfade zum Massenspeicher und zu anderen Vorrichtungen durch mehrfache I/O-Busse geschaffen.
- Ein Erfassen und Verarbeiten von Speicherzugriffsausnahmen ist in Computersystemen hoher Leistungsfähigkeit kompliziert, weil die gesamte Ablauffolge von Operationen, die zum Ausführen von Befehlen erforderlich sind, pipelinemäßig verarbeitet wird. Ein typisches Beispiel ist die Computerfamilie mit dem Markennamen "VAX" von Digital Equipment Corporation, 111 Powdermill Road, Maynard, MA, 01754. Die Befehlspipeline für das Computermodell VAX 8600 ist detailliert von Fossum et al. in einem Artikel mit dem Titel "An Overview of the VAX 8600 System", Digital Technical Journal, Nummer 1, August 1985, S. 8-23 beschrieben. Wie es darin beschrieben ist, verwendet eine Pipelineverarbeitung hoher Leistungsfähigkeit getrennte Pipelinestufen für jede der unterschiedlichen Stufen einer Operation, die bei der Ausführung von Befehlen beteiligt sind. Die Pipelinestufen enthalten typischerweise ein Befehlsholen, ein Befehlsdecodieren, eine Operandenadressenerzeugung, ein Operandenholen, eine Befehlsausführung und eine Ergebnisspeicherung. Eine Verarbeitung von Speicherzugriffsausnahmen ist schwierig, weil mehrere Befehle gleichzeitig aktiv sein können. Zusätzlich kann jeder Befehl mehrere Speicherreferenzen, Befehlsleseoperationen, Operandenleseoperationen, Operandenschreiboperationen, Adressenleseoperationen und Kettenleseoperationen aktivieren. Weiterhin ist es wahrscheinlich, daß jede dieser Operationen durch unterschiedliche Hardwaresegmente bei unterschiedlichen Stufen in der Befehlspipeline durchgeführt werden.
- Immer dann, wenn eine Speicherreferenz als Teil einer Ausführung eines Befehls entlang der Befehlspipeline durchgeführt wird, findet der Adressenumsetzungsprozeß statt, um physikalische Adressen aus virtuellen Adressen zu erzeugen, die durch den Befehl geliefert werden. Bei jeder dieser Umsetzungsstufen gibt es eine Möglichkeit, daß eine Speicherzugriffsausnahme auftreten kann. Das Problem ergibt sich, wenn das Computersystem auf ein vorheriges Holen von Befehlen und Operanden eingestellt ist, von denen vorausgesetzt wird, daß sie zur Ausführung nachfolgender Stufen des Befehls erforderlich sind, während gerade ein bestimmter Befehl behandelt wird. Wenn alle nötigen Zugriffsausnahmen zu der Zeit behandelt werden, zu der die Ausnahmen erfaßt werden, resultiert dies darin, daß die Pipeline schnell verzögert, wenn voneinander abhängige Operationsstufen angehalten werden, um daraus resultierende Zugriffsverletzungen aufzulösen. Demgemäß existiert ein direkter Konflikt zwischen einem Erreichen einer hohen Geschwindigkeit einer pipelinemäßigen Befehlsverarbeitung und der relativ niedrigen Geschwindigkeit einer sequentiellen Verarbeitung, die das Ergebnis ist, wenn zugehörige Speicherzugriffsausnahmen gleichzeitig implementiert sind. Es ist somit äußerst entscheidend, daß Speicherausnahmen, die innerhalb der Pipelinestufen auftreten, in einer solchen Weise behandelt werden, daß das Verzögern der Befehlspipeline durch eine Unterbrechung anderer Pipelinestufen vermieden wird. In der VAX-Architektur wird dieses Problem beispielsweise durch ein Protokoll angegangen, das sicherstellt, daß Ausnahmen, die beim Lesen eines Speichers als Teil von Befehlen für ein vorheriges Holen auftreten, die Ausführung von zuvor ausgegebenen Befehlen nicht unterbrechen.
- Wie es von Fossum et al. auf Seite 15 des Digital Technical Journal, Nr.1, August 1985 beschrieben ist, ist der Umsetzungspuffer (TB) der VAX 8600 in der Speichereinheit (M-Kasten) angeordnet, aber der TB wird durch einen Mikrocode unterhalten, der in der Ausführungseinheit (E-Kasten) läuft. Dies bietet eine ökonomische Lösung für die komplizierte Aufgabe, Ströme von Referenzen von den drei M- Kasten-Anschlußstellen (für den Befehlspuffer, die Operandeneinheit und die Ausführungseinheit) zu verfolgen. Jede Anschlußstelle kann gerade zwei Referenzen in Arbeit haben, da ein Zugreifen auf den Datencache und den Etikettenspeicher mit einem Zugreifen auf den TB überlagert ist. Die Daten, die Adressen und die Steuerinformation für diese Operationen werden sorgfältig in eine Warteschlange gebracht, und zwar mit Handshakes, um zuzulassen, daß die Untersysteme soweit wie möglich (aber nicht darüber hinaus) weitermachen, während auf ein Beenden der Referenzen gewartet wird. Es wurden irgendwelche Speicherausnahmen angetroffen, während ein vorheriges Holen von Befehlen oder Operanden aufgehalten wird, bis die Daten tatsächlich durch die Ausführungseinheit benötigt werden. Diese Einheit kümmert sich dann um das Problem durch Verwenden von Speicherreferenzen, die die normale Warteschlange umgehen, wodurch sie für ein späteres neueres Starten intakt gelassen wird.
- Die VAX 8600 ist weiterhin in Derosa et al., "Design and Implementation of the VAX 8600 Pipeline", Computer, Bd. 18, Nr.5, März 1985, S.38-48 beschrieben. Alle Makrobefehle sind das Ergebnis von Operationen, die in jeder Pipelinestufe der VAX 8600 durchgeführt werden. Wenn ein Seitenfehler, eine Speicherzugriffsverletzung, ein Cache-Nichttreffer, ein TB-Nichttreffer, eine Unterbrechung, etc. erfaßt wird, synchronisieren Mechanismen die Pipeline mit den verzögerten Daten (z.B. einem Cache-Nichttreffer), fixieren das Problem (z.B. einen TB-Nichttreffer) oder initiieren eine Ausnahme zum Betriebssystem (z.B. Speicherzugriffsverletzung). Die drei Hauptmechanismen, die zum Verarbeiten dieser Typen von Zuständen verwendet werden, sind folgende: (1) Verzögern der beeinflußten Pipelinestufe, bis der Zustand verschwindet; (2) Veranlassen eines nichtprogrammierten Mikroprogrammsprungs des E-Kastens zu einer geeigneten Zeit, so daß ein E- Kasten-Mikrocode das Problem kennen und fixieren kann; und (3) Initiieren einer Ausnahme. Wenn eine Speicherleseanfrage in einem Zyklus A zum M-Kasten ausgegeben wird, und die Daten in einem Zyklus C nicht verfügbar sind, oder wenn eine Schreibanfrage in einem Zyklus A ausgegeben wird, und es nicht bekannt ist, daß die Anfrage im Zyklus C beendbar ist, verzögert die Anschlußstelle, die die Anfrage ausgab, bis entweder die Lesedaten verfügbar sind oder die Schreibanfrage zugelassen wird. Die schwierige Ausnahme bei dieser Regel ist in dem Fall von Operandenanfragen folgendes: Obwohl das Operandenholtor die Speicheranfrage für einen Operanden ausgibt, veranlaßt dieser Zustand ohne Daten den E-Kasten zu verzögern, anstatt den Operanden zu holen. Auf diese Weise werden Speicheranfragen mit der Pipeline synchronisiert, und jede Pipelinestufe weist ein konsistentes Warten auf Speicherdaten auf. Wenn Speicherreferenzen Cache-Treffer sind, gibt es keine Speicherdaten-Pipelineverzögerungen. Wenn eine Speicheranfrage durch ein Holen eines Befehl oder ein Holen eines Operanden auf ein architekturmäßiges Problem (einen TB- Nichttreffer, eine Zugriffsverletzung, ein nicht gesetztes M-Bit, etc.) trifft, wird diese Anschlußstelle verzögern. Ein nicht programmierter Mikroprogrammsprung des E- Kastens tritt auf, wenn der E-Kasten entweder einen Gabelungsbefehl oder einen Befehl zum Bekommen eines Operanden für den Operanden ausgibt, der zum Speicherprogramm gehört. Der E-Kasten wird zu einer Stelle in seinem Mikro- Programmsprungvektor springen und versuchen, das Problem zu fixieren. Wenn es fixierbar ist, gibt er einige Befehle zur Anforderung eines erneuten Bringens in eine Warteschlange zum M-Kasten aus und kehrt zum Gabelungsvektor zurück. Wenn es nicht fixierbar ist, initiiert es eine Ausnahme. Als Beispiel zum Behandeln eines Nichtspeicherprogramms setzt der I-Kasten-Mikrocode, wenn er einen Fehlerzustand für eine reservierte Adressierung in einem Operandenspezifizierer erfaßt, ein Bit, das zusammen mit der Gabelungsinformation in eine Pipeline gebracht wird. Wenn der E-Kasten den zugehörigen Operanden zum Bekommen oder den zugehörigen Gabelungsbefehl ausgibt, schaltet ein nicht programmierbarer Mikroprogrammsprung die E-Kasten-Mikromaschine zu der Anfangs-Mikroadresse des Fehlerausnahmeprogramms für ein reserviertes Adressen um.
- Gemäß der vorliegenden Erfindung ist ein Pipeline-Computersystem geschaffen, das folgendes enthält: eine Speichereinheit, eine Befehlseinheit und eine Ausführungseinheit, die zum Bilden einer Befehlspipeline zum Verarbeiten von Befehlen miteinander verbunden sind. Die Befehlseinheit enthält folgendes: eine Einrichtung zum Holen und Decodieren von Befehlen, um Operationscodes und Quellen- und Zielortoperandenspezifizierer zu erhalten, und eine Einrichtung zum Holen von Quellenoperanden, die durch die Quellenoperandenspezifizierer spezifiziert werden. Die Ausführungseinheit enthält folgendes: eine Einrichtung zum Durchführen von Operationen, die durch die Operationscodes spezifiziert werden, und zwar auf die Quellenoperanden hin, eine Einrichtung zum Holen zusätzlicher Operanden, und eine Einrichtung zum Ablegen der Ergebnisse von Operationen. Die Speichereinheit enthält folgendes: eine erste Anschlußstelle, die mit der Einrichtung zum Holen von Befehlen in der Befehlseinheit verbunden ist, eine zweite Anschlußstelle, die mit der Einrichtung zum Holen von Quellenoperanden in der Befehlseinheit verbunden ist, eine dritte Anschlußstelle, die mit der Einrichtung zum Holen zusätzlicher Befehle in der Ausführungseinheit verbunden ist, eine Einrichtung zum Durchführen einer Umsetzung von einer virtuellen zu einer physikalischen Adresse, und eine Einrichtung zum Erfassen, wenn eine virtuelle Adresse eine Speicherzugriffsverletzung verursacht. Die Ausführungseinheit enthält eine Einrichtung, die auf die Speicherzugriffsverletzung antwortet, zum Aufrufen eines Ausnahmebehandlungsprogramms. Die Erfindung ist dadurch gekennzeichnet, daß die Speichereinheit folgendes enthält: eine Umsetzungspuffer-Arrangiereinheit zum Durchführen einer Umsetzung einer virtuellen in eine physikalische Adresse in Antwort auf einen Nichttreffer im Umsetzungspuffer, und eine Schreibwarteschlange zum Speichern physikalischer Adressen der Speicherzielortspezifizierer; die Befehlspipeline zwischen der Befehlseinheit und der Ausführungseinheit eine Quellenoperandenwarteschlange zum Speichern von Quellenoperanden enthält, und dadurch, daß das Pipeline-Computersystem weiterhin folgendes enthält: eine Einrichtung zum pipelinemäßigen Verarbeiten von Fehlerinformation über Speicherzugriffsverletzungen von der Speichereinheit zur Ausführungseinheit, die durch die virtuellen Adressen von der Einrichtung zum Holen von Befehlen und der Einrichtung zum Holen von Quellenoperanden verursacht worden sind, wobei die Fehlerinformation parallel zur Befehlspipeline pipelinemäßig verarbeitet wird.
- Die vorliegende Erfindung schafft auch ein Verfahren zum Verarbeiten von Speicherzugriffsausnahmen, denen man bei Speicherzugriffsanfragen begegnet, wobei das Verfahren folgendes enthält: Speicherlese- oder -schreiboperationen aus vorangehenden Pipelinestufen während einer Pipelinebefehlsausführung in einem Computersystem, das auf einem virtuellen Speicher basiert, wie es gerade beschrieben ist. Dieses Verfahren enthält folgende Schritte: Erzeugen von Fehlerinformation in der Speichereinheit in Antwort auf das Vorhandensein einer oder mehrerer einer zuvor definierten Gruppe von Speicherzugriffsverletzungen, die durch virtuelle Adressen verursacht werden, die durch die Speichereinheit an ihrer ersten, zweiten und dritten Anschlußstelle empfangen werden; von der Speichereinheit zur Ausführungseinheit pipelinemäßiges Verarbeiten ausgewählter Segmente der Fehlerinformation, die in der Speichereinheit in Antwort auf das Vorhandensein von Speicherzugriffsverletzungen erzeugt wird, die durch virtuelle Adressen verursacht werden, die durch die Speichereinheit an ihrer ersten und ihrer zweiten Anschlußstelle empfangen werden, wobei die Fehlerinformation parallel zur Befehispipeline pipelinemäßig verarbeitet wird; wobei die Ausführungseinheit auch eine Fehlerinformation über Speicherzugriffsverletzungen empfängt, die durch virtuelle Adressen verursacht werden, die durch die Speichereinheit an ihrer dritten Anschlußstelle empfangen werden; und Erfassen des Vorhandenseins der Pipeline-Segmente von Fehlerinformation, wenn die Pipeline-Segmente der Fehlerinformation die Ausführungsstufe erreichen und in Antwort darauf, Aufrufen eines zuvor definierten Ausnahmebehandlungsprogramms entsprechend der Speicherzugriffsverletzung, die zu der erfaßten Fehlerinformation gehört.
- Gemäß einem bevorzugten Ausführungsbeispiel dieser Erfindung ist das obige Schema durch Anschließen jeder Stufe der Befehlspipeline in das vordere Ende einer Speichereinheit implementiert, die zum Durchführen der Umsetzungen einer virtuellen eine physikalische Adresse geeignet ist. Das hintere Ende der Speichereinheit ist dazu geeignet, die physikalische Adresse, die durch das vordere Ende erzeugt wird, zum Zugreifen auf adressierte Daten in einem Hauptspeicher oder in Cache-Speichern zu verwenden. Jede am vorderen Ende der Speichereinheit für eine Pipelinestufe vorgesehene Anschlußstelle ist auch mit einer Einrichtung zum Speichern virtueller Adressen versehen, die einen Befehl begleiten, sowie mit einer Einrichtung zum Speichern von "Fehler"-Information, die erfaßte Ausnahmen betrifft. Diese Ausnahmeinformation wird durch die System-Software nur bei der Ausführungsstufe behandelt. Wenn im vorderen Ende der Speichereinheit einer Speicherzugriffsausnahme begegnet wird, wird die daraus erzeugte Fehlerinformation in die Speichereinrichtung geladen, und die Anschlußstelle wird von einem Annehmen weiterer Referenzen abgehalten. Jedoch werden Anschlußstellen entsprechend anderer Pipelinestufen zum Empfangen von Speicherreferenzen aktiv gehalten. Dieser Aufbau läßt zu, daß Befehle weiterhin entlang der Pipeline vervollständigt werden, ohne durch Fehler oder Ausnahmen zerstört zu werden, denen in vorangehenden Stufen des Befehlsstroms begegnet wird.
- Gemäß einem weiteren Merkmal dieser Erfindung sind Einrichtungen zum Synchronisieren des Ausnahmebehandlungsprozesses mit dem Befehlsausführungsprozeß vorgesehen. In den Pipelinestufen angeordnete Fehler, bevor ein Befehl die Ausgabestufe durchläuft, werden zusammen mit (oder statt dessen von) Daten- und Steuerworten pipelinemäßig verarbeitet, die aus einer Befehlsvorverarbeitung und einem vorherigen Holen eines Operanden abgeleitet werden. Die Fehler- Pipeline wird an der Stelle geprüft, wenn diese Daten und diese Steuerung zum Ausgeben eines Befehls bei der Ausführungsstufe erforderlich sind; wenn ein Fehler oder eine Ausnahme gefunden wird, wird eine Ausnahme statt eines Ausgebens des Befehls initiiert. Auf diese Weise wird allen Befehlen, die in den Pipehnestufen hinter der Ausgabestufe existieren, erlaubt, ohne irgendeine Behinderung fertig zu werden.
- Gemäß einem weiteren wichtigen Merkmal dieser Erfindung werden Zielortoperandenadressen für Speicherschreiboperationen in der Operandenverarbeitungseinheitsstufe der Pipeline berechnet und darauffolgend an die Speichereinheit zur Umsetzung weitergeleitet. Entsprechende Schreiboperationen werden normalerweise hintenangestellt, weil Daten bis nach der Ausführungsstufe nicht verfügbar sind, und die umgesetzten Zielortadressen werden innerhalb einer Schreibwarteschlange gespeichert und werden darauffolgend mit den entsprechenden Daten gepaart, die nach der Ausführungsstufe empfangen werden. Wenn Befehle abgelegt werden, ist es imperativ, daß die zu beschreibenden Speicherzielorte an jener Stelle definiert sind. Weil die Zielortadressen zuvor umgesetzt worden sind, wird es möglich, daß Befehle auf angenehme Weise bei oder nach der Ausführungsstufe abgelegt werden, solange entsprechende gültige Einträge in der Datenschreibwarteschlange existieren.
- Zusammenfassend geben die Pipelinestufen Speicherreferenzen aus, wie es erforderlich ist, und die durch die Pipelinestufe durchzuführende Aufgabe wird auf normale Weise beendet, wenn die Adressenumsetzung entsprechend der Speicherreferenz erfolgreich ist; in diesem Fall werden für die Pipelinestufe relevante Daten zum Ausführen des Befehls möglicherweise bei der Ausführungsstufe verwendet. Jedoch dann, wenn die Adressenumsetzung entsprechend der Speicherreferenz nicht erfolgreich ist, wird eine Fehlerinformation erzeugt, und die Anschlußstelle, die der Pipelinestufe in der Speichereinheit entspricht, wird als geschlossen bezeichnet. Die Fehlerinformation, die durch die Speichereinheit erzeugt wird, wird durch die Pipeline ausgebreitet und wird möglicherweise bei der Ausführungsstufe als Basis zum Aufrufen eines Fehlerbehandlungsprogramms auf der Basis der Fehler- oder Ausnahmeinformation verwendet.
- Andere Aufgaben und Vorteile der Erfindung werden beim Lesen der folgenden detaillierten Beschreibung und durch Bezugnahme auf die Zeichnungen klar, wobei:
- Fig. 1 ein vereinfachtes Blockdiagramm eines Pipeline-Computersystems ist, das auf einem virtuellen Speicher basiert und für das Schema zum Verarbeiten von Speicherzugriffsausnahmen gemäß dieser Erfindung geeignet ist;
- Fig. 2 eine Darstellung der verschiedenen Pipelinestufen ist, die bei einer Ausführung eines typischen Befehls beteiligt sind;
- Fig. 3 ein Blockdiagramm ist, das die funktionellen Blöcke darstellt, die bei der Umsetzung von virtuellen in physikalische Adressen beteiligt sind, unter Verwendung des Umsetzungspuffers, der in Fig. 1 gezeigt ist;
- Fig. 4 eine detailliertere Blockdiagrammdarstellung der Organisation des Umsetzungspuffers und der Umsetzungspuffer-Fixiereinheit ist, die in Fig. 3 gezeigt sind;
- Fig. 5 ein Blockdiagramm ist, das die Erzeugung von Fehlerinformation gemäß dem Ausnahmebehandlungsschema dieser Erfindung darstellt;
- Fig. 6 ein vereinfachtes Flußdiagramm ist, das die Ablauffolge von Operationen darstellt, die bei der Erzeugung von Fehlerinformation und zugehöriger Codes und Parameter beteiligt sind; und
- Fig. 7 ein vereinfachtes Flußdiagramm ist, das die Operationen gemäß dieser Erfindung darstellt, die beim Erfassen und Reagieren auf Fehlerinformation beteiligt sind.
- Während die Erfindung empfänglich für verschiedene Modifikationen und alternative Formen ist, sind spezifische Ausführungsbeispiele davon anhand eines Beispiels in den Zeichnungen gezeigt und werden hierin detailliert beschrieben. Es sollte jedoch verstanden werden, daß es nicht beabsichtigt ist, die Erfindung auf die offenbarten bestimmten Formen zu beschränken, sondern daß die Erfindung im Gegenteil alle Modifikationen, Äquivalente und Alternativen abdecken soll, die in den Schutzumfang der Erfindung fallen, wie es durch die beigefügten Ansprüche definiert ist.
- Nimmt man nun Bezug auf Fig. 1, ist dort ein Blockdiagramm einer oberen Ebene eines Pipeline-Computersystems 10, das auf einem virtuellen Speicher basiert, gezeigt, das eine oder mehrere zentrale Verarbeitungseinheiten (CPUs) 12 verwendet und zum Zulassen einer gleichzeitigen, d.h. einer parallelen, Operation aller System-CPUs konfiguriert ist, wobei zugelassen ist, daß sie einen gemeinsamen Hauptspeicher 14 für das System gemeinsam nutzen. Bei einer praktischen Implementierung können in einem solchen System bis zu vier CPUs gleichzeitig durch effizientes gemeinsames Nutzen des Hauptspeichers 14 betrieben werden. Gemäß dem Konzept einer Pipelineverarbeitung ist die CPU 12 ein nicht homogener Prozessor, der eine Gruppe von funktionellen Einheiten für spezielle Zwecke enthält, die zum Durchführen spezifischer Aufgaben bestimmt und dafür optimiert sind, in welche einzelne Befehle vor einer Ausführung aufgeteilt wird.
- Gemäß der Pipeline-Technik wird jede Grundoperation (beispielsweise eine Addition, eine Multiplikation, etc.) in einer Anzahl unabhängiger Stufen aufgeteilt, was völlig analog zu der Art erfolgt, auf welche ein Fließband organisiert ist. Unter der Annahme, daß jede Stufe "t" Sekunden zum Fertigwerden benötigt, endet ein Operandenpaar bei einer Stufe alle t Sekunden und wird darauffolgend zur nächsten Stufe weitergeleitet, was den Beginn eines neuen Operandenpaars zuläßt. In dem Fall eines Befehls, der beispielsweise vier unabhängige Stufen benötigt (wie in dem Fall einer Gleitkomma-Additionsoperation, die die vier separaten Stufen einer Exponentensubtraktion, einer Mantissenausrichtung, einer Mantissenaddition und einer Ergebnisnormalisierung benötigt), ist eine Zeitperiode von 4t Sekunden von Anfang bis zum Ende des Ausführungsprozesses erforderlich. Jedoch ist das, was signifikant ist, daß ein neues Ergebnis alle t Sekunden erzeugt werden kann. Anders ausgedrückt bewegt sich dann, wenn eine jeweils zugehörige Stufe mit einem Ausführen der Aufgabe weitermacht, die ihr zugeteilt ist, der Subjektbefehl näher an eine Vervollständigung. Bei der Endstufe in der Pipeline wird jedesmal dann, wenn eine Aufgabe mit dem Durchlaufen eines Systemzyklus fertig ist, ein neues Ergebnis, das das Fertigwerden eines Befehls zeigt, erzeugt. Obwohl eine solche Pipeline allgemein länger dauert als eine normale Durchführung eines einzelnen Befehls, kann die Pipeline eine viel größere Anzahl von Operationen in derselben Zeit ausführen, wenn eine Ablauffolge von gleichen Operationen durchzuführen ist.
- Im allgemeinen kann die Ausführung eines Befehls in folgende diskrete Stufen unterteilt werden: ein Befehlsholen, ein Befehlsdecodieren, ein Operandenholen, ein Befehlsausführen und eine Ergebnisspeicherung. Es ist auch möglich, daß diese unabhängigen Stufen auf irgendeine Weise überlagert sind, so daß der Gesamtbefehlsdurchsatz erhöht werden kann. Gemäß einem Schema dieses Typs werden die Ergebnisse jeder Pipelinestufe auf der Basis eines gemeinsamen Systemtaktes zur nächsten Stufe übertragen. Beispielsweise wird während eines ersten Taktzyklus ein Befehl durch eine funktionelle Einheit geholt, die zum Befehlsholen bestimmt ist. Während des zweiten Taktzyklus wird der geholte Befehl zur Befehlsdecodierstufe übertragen, wo eine dafür bestimmte funktionelle Einheit den Befehl decodiert; gleichzeitig bleibt die Befehlsholstufe aktiv und macht mit einem Holen des nachfolgenden Befehls durch die Befehlsholeinheit weiter. Im folgenden Taktzyklus wird das durch jede Pipelinestufe erzeugte Ergebnis zur nächsten Stufe der Pipeline verschoben, während gleichzeitig ein weiterer neuer Befehl geholt wird. Dieser Prozeß dauert an, bis die Endstufe der Pipeline aktiviert ist, an welcher Stelle die Pipeline gefüllt ist. Darauffolgend wird ein Befehl durch die Endstufe am Ende jedes darauffolgenden Taktzyklus beendet, solange es dauert, daß neue Befehle durch die erste Pipelinestufe geholt werden.
- Kehrt man nun zurück zur Fig. 1, ist jede CPU 12 im wesentlichen in wenigstens drei unabhängige funktionelle Einheiten aufgeteilt: die Speicherzugriffseinheit 16 (die M-Einheit), die Befehlseinheit 18 (die I-Einheit), und die Ausführungseinheit 20 (die E-Einheit).
- Die M-Einheit 16 bietet die CPU-Schnittstelle zum Speicher, zur I/O und zu anderen CPU-Einheiten, und dient insbesondere als Einrichtung zum Annehmen virtueller Speicherreferenzen, zum Umsetzen der Referenzen in physikalische Adressen und zum Initiieren von Zugriffen auf Speicherdaten, und zwar entweder im Hauptspeicher 14 durch eine geeignete Schnittstelleneinrichtung oder innerhalb eines lokalen Caches.
- Beim darstellenden System der Fig. 1 enthält die M-Einheit 16 einen Hauptcache 22, der zuläßt, daß die Befehis- und E-Einheiten 12 und 13 mit einer viel schnelleren Geschwindigkeit auf Daten zugreifen und sie verarbeiten, als es durch die normale Zugriffszeit des Hauptspeichers 14 zugelassen ist. Der Hauptcache hält temporär Daten (typischerweise die zuletzt benutzten Befehle und Datenelemente) die der Prozessor wahrscheinlich beim Ausführen aktueller Operationen benötigt. Der Cache interpretiert Speicheradressen durch Verwenden einer assoziativen Speicherkarte, die eine Entsprechung zwischen angeforderten Adressenstellen und Cache-Inhalten definiert. Das System arbeitet durch Sperren von Anfragen zum Hauptspeicher und durch Zuführen von durch den Prozessor angeforderten Daten vom Cache, wenn gefunden wird, daß das angeforderte Datenelement innerhalb des Caches existiert. Auf den Hauptspeicher 14 wird nur zugegriffen, wenn ein angefordertes Datenelement nicht im Cache 22 vorhanden ist, in welchem Fall die Daten vom Systemspeicher geholt werden und dann zur anfordernden Einheit zugeführt werden. Kurz gesagt arbeitet der Cache 22 nach dem Phänomen einer Lokalität in Programmen und stellt ein Fenster in dem Systemhauptspeicher bereit und läßt einen Zugriff auf Datenreferenzen mit hoher Geschwindigkeit mit einer räumlichen und zeitlichen Lokalität zu.
- Der Hauptcache 22 enthält eine Einrichtung zum Speichern ausgewählter zuvor definierter Blöcke von Datenelementen, eine Einrichtung zum Empfangen von Speicherzugriffsanfragen über einen Umsetzungspuffer 24, um auf spezifizierte Datenelemente zuzugreifen, eine Einrichtung zum Prüfen, ob ein spezifiziertes Datenelement innerhalb des Blocks eines Speichers, der im Cache gespeichert ist, existiert oder nicht, und eine Einrichtung, die dann, wenn Daten für den Block, der ein spezifiziertes Datenelement enthält, nicht innerhalb des Caches ist, zum Auslesen des spezifizierten Datenblocks aus dem Hauptspeicher 14 und zum Speichern von ihm im Cache 22 arbeitet. Jedesmal dann, wenn gefunden wird, daß ein angefordertes Datenelement nicht innerhalb des Caches 22 vorhanden ist, wird der gesamte Datenblock, der das Datenelement enthält, vom Hauptspeicher 14 erhalten. Das nächste Mal, wenn die funktionellen Einheiten des Prozessors ein Datenelement vom Speicher anfordern, gibt das Lokalitätsprinzip vor, daß das angeforderte Datenelement wahrscheinlich im Speicherblock gefunden wird, der das zuvor adressierte Datenelement enthält. Da auf den Cache 22 mit einer viel höheren Geschwindigkeit als auf den Hauptspeicher 14 zugegriffen wird, wird es möglich, daß der Hauptspeicher eine proportional langsamere Zugriffszeit als der Cache hat, ohne die Systemleistungsfähigkeit wesentlich zu verschlechtern. Folglich kann der Hauptspeicher 14 aus langsameren und weniger teueren Speicherelementen bestehen.
- Der Umsetzungspuffer 24 ist ein Assoziativspeicher hoher Geschwindigkeit, der die zuletzte benutzten Umsetzungen von einer virtuellen zu einer physikalischen Adresse speichert. In einem virtuellen Speichersystem des Typs, der hier diskutiert wird, kann eine Referenz zu einer einzelnen virtuellen Adresse mehrere Speicherreferenzen erzeugen, bevor die gewünschte Speicherinformation verfügbar wird. Der Umsetzungspuffer 24 vereinfacht jedoch den Umsetzungsprozeß durch Reduzieren der Umsetzung einer virtuellen Adresse zur entsprechenden physikalischen Adressen auf ein ledigliches Suchen nach einem "Treffer" im Puffer.
- Zum Zwecke eines Übertragens von Befehlen und Eingabedaten zum Computersystem der Fig. 1 und zum Empfangen einer Datenausgabe vom System ist ein I/O-Bus 24 mit dem Hauptspeicher 14 und dem Hauptcache 22 verbunden.
- Die I-Einheit 18 enthält einen Programmzähler 26 und einen Befehls-Cache 28 zum Holen von Befehlen aus dem Haupt-Cache 22. Der Programmzähler 26 adressiert vorzugsweise eher virtuelle Speicherstellen als die physikalischen Speicherstellen des Hauptspeichers 14 und des Caches 22. Es ist somit erforderlich, daß die virtuelle Adresse, die durch den Programmzähler 26 ausgegeben wird, in die entsprechende physikalische Adresse des Hauptspeichers 14 umgesetzt wird, bevor erforderliche Befehle ausgelesen werden können. Diese Umsetzung wird durch den Umsetzungspuffer 24 in der M-Einheit 16 erreicht. Die Inhalte des Programmzählers 26 werden zur M-Einheit 16 übertragen, wo der Umsetzungspuffer 24 die Adressenumwandlung durchführt. Darauffolgend wird der erforderliche Befehl aus seiner physikalischen Speicherstelle entweder im Cache 22 oder im Hauptspeicher 14 ausgelesen und auf Datenzurückbringleitungen zum Befehls- Cache 28 ausgegeben. Die Organisation und der Betrieb des Caches 22 und des Umsetzungspuffers 24 sind weiter im Kapitel 11 von Levy und Ackhouse, Jr., Computer Programming and Architecture, The VAX-11, Digital Equipment Corporation, S. 351-368 (1980) beschrieben.
- Der Befehlscache 28 hat allgemein zuvor gespeicherte Befehle bei den Adressen, die durch den Programmzähler 26 spezifiziert werden. Der Cache 28 ist vorzugsweise zum Empfangen und Übertragen von Befehlsdaten in Blöcken aus vielen Datenbytes derart aufgebaut, daß die Speicheradressen für die Blöcke durch spezifizierte Bits in der Adresse spezifiziert werden, die durch den PC 26 geliefert wird. Die adressierten Befehle sind dann sofort zur Übertragung in einem Befehlspuffer (I-Buf) 30 verfügbar, der im wesentlichen als Daten-Latch zum Empfangen von Befehlsdaten auf der Basis der Takthandlung des Systemtaktes handelt. Vom I-Buf 30 werden die Befehle zu einem Befehlsdecodierer 32 geführt, der sowohl die Operationscodes (op-Codes) als auch die Spezifizierer decodiert, die die Befehle begleiten. Eine Operandenverarbeitungseinheit (OPU) 33 erzeugt Speicher- oder Registeradressen für die Operanden oder bewertet den Operanden direkt aus dem Befehlsstrom im Fall von Literalkonstanten. Registeradressen und Literalkonstanten werden zur E-Einheit 20 zugeführt. Die Adressen, die durch die OPU 33 erzeugt werden, sind auch virtuell und können virtuelle Adressen für Speicherquellen-(Lese-) und -Zielort-(Schreib-)Operanden darstellen. Im Fall von Speicherleseoperanden gibt die OPU 33 diese virtuellen Adressen zur M-Einheit 16 zur Umsetzung in physikalische Adressen aus. Auf die physikalischen Speicherstellen, die durch den Umsetzungsprozeß bestimmt werden, wird dann zugegriffen, um die Operanden für die Speicherquellenoperanden zu holen.
- Im Fall von Speicherschreiboperationen werden die Daten, die zu schreiben sind, nicht verfügbar, bis die Ausführung des Befehls beendet worden ist, und demgemäß ist es erforderlich, daß die Schreibadresse gespeichert wird, bis die zu schreibenden Daten verfügbar werden. Jedoch kann die Umsetzung der virtuellen Adresse des Zielortes in die entsprechende physikalische Adresse während der Zeit beendet werden, die zur Ausführung des Befehls erforderlich ist. Zusätzlich kann die OPU 33 vorteilhaft für ein Erhöhen der Geschwindigkeit der Ausführung von Befehlen durch ein Vorverarbeiten von vielen Befehlsspezifizierern während der Zeit verwendet werden, zu der ein Befehl ausgeführt wird. Zum Unterbringen dieser Faktoren ist die M-Einheit 16 mit einer Schreibwarteschlangenanordnung 34 versehen, die zwischen dem Umsetzungspuffer 24 und dem Haupt-Cache 22 angeordnet ist. Die Schreibwarteschlangenanordnung 34 hält im wesentlichen die umgesetzte Adresse, bis die E-Einheit 20 den Befehl beendet und die resultierenden Daten zur M-Einheit 16 weiterleitet, wo sie mit der gespeicherten Schreibadresse paarweise verbunden werden und darauffolgend in den Cache 22 an der Speicherstelle geschrieben werden, die durch die umgesetzte physikalische Adresse spezifiziert wird.
- In dem Fall eines Befehls, der eine Speicherleseoperation erfordert, liefert der Umsetzungspuffer 24 direkt die physikalische Adresse für einen Operanden des Lesebefehls. Temporäre Speichereinrichtungen 36 sind in der M-Einheit 16 zur Speicherung von umgesetzten Adressen vorgesehen, bevor sie durch den Haupt- Cache 22 zum Zugreifen auf identifizierte Speicherstellen und zum Ausgeben von darin gespeicherten Daten zur E-Einheit 20 über geeignete Datenzurückbringleitungen verwendet werden. Multiplexer- und Demultiplexereinheiten, die jeweils mit 38 und 40 bezeichnet sind, sind in der Speichereinheit 16 zur Auswahl von entweder der temporären Speichereinheit 36 oder der Schreibwarteschlange 34 für einen Austausch von umgesetzten Adressen zwischen dem Haupt-Cache 22 und dem Umsetzungspuffer 24 vorgesehen.
- In jedem Befehl enthält das erste Byte den Operationscode, und die folgenden Bytes sind die zu decodierenden Operandenspezifizierer. Das erste Byte jedes Spezifizierers zeigt den Adressiermodus für jenen Spezifizierer an. Dieses Byte ist normalerweise in Hälften aufgeteilt, wobei eine Hälfte den Adressiermodus spezifiziert, und wobei die andere Hälfte das zur Adressierung zu verwendende Register spezifiziert. Die Befehle haben vorzugsweise eine variable Länge, und verschiedene Typen von Spezifizierern können mit demselben Operationscode verwendet werden. Eine typische Anordnung dieses Typs ist in Strecker et al., US-Patent mit der Nr.4,241,397, veröffentlicht am 23. Dezember 1980, offenbart.
- Der erste Schritt beim Verarbeiten der Befehle besteht im Decodieren der "Operationscode"-Teile des Befehls. Der erste Teil jedes Befehls besteht aus seinem Operationscode, der die im Befehl durchzuführende Operation, die Anzahl von Spezifizierern und den Typ jedes Spezifizierers spezifiziert. Das Decodieren wird unter Verwendung einer Nachschautabellentechnik im Befehlsdecodierer 32 durchgeführt. Der Befehlsdecodierer findet eine Mikrocode-Anfangsadresse zum Ausführen des Befehls in einer Nachschautabelle und leitet die Anfangsadresse zur Ausführungseinheit 20 weiter. Später führt die Ausführungseinheit die spezifizierte Operation durch Ausführen eines zuvor gespeicherten Mikrocodes durch, und zwar beginnend bei der angezeigten Anfangsadresse. Ebenso bestimmt der Decodierer, wo Quellenoperanden- und Zielortoperanden-Spezifizierer im Befehl auftreten und leitet dieses Spezifizierer weiter zur OPU 33 zur Vorverarbeitung vor einem Ausführen des Befehls.
- Die Nachschautabelle ist als Anordnung multipler Blöcke organisiert, von denen jeder multiple Einträge hat. Jeder Eintrag kann durch seinen Block und seinen Eintragsindex adressiert werden. Das Operationscode-Byte adressiert den Block, und ein Zeiger von einem Ausführungsstellenzähler (der die Position des aktuellen Spezifizierers im Befehl anzeigt) wählt einen bestimmten Eintrag im Block aus. Der ausgewählte Eintrag spezifiziert den Datenzusammenhang (Byte, Wort, etc.), den Datentyp (Adresse, ganze Zahl, etc.) und den Zugriffsmodus (Lesen, Schreiben, Modifizieren, etc.) für jeden Spezifizierer.
- Nachdem ein Befehl decodiert worden ist, teilt die OPU 33 die Operandenspezifizierer auf und berechnet ihre effektiven Adressen; dieser Prozeß enthält ein Lesen von Registern für allgemeine Zwecke (GPRs) und möglicherweise ein Modifizieren der GPR-Inhalte durch automatisches Inkrementieren oder automatisches Dekrementieren. Die Operanden werden dann von jenen effektiven Adressen geholt und zur Ausführungseinheit 20 weitergeleitet, die den Befehl ausführt und das Ergebnis in den Zielort schreibt, der durch den Zielortzeiger für jenen Befehl identifiziert wird. Die OPU 33 erzeugt auch ein Spezifizierersignal basierend auf dem Operationscode in jedem Befehl.
- Jedesmal wenn ein Befehl zur Ausführungseinheit weitergeleitet wird, sendet die Befehlseinheit eine Mikrocode-Absetzadresse und eine Gruppe von Zeigern für (1) die Stellen in der Ausführungseinheits-Registerdatei, wo die Quellenoperanden gefunden werden können, und (2) die Stelle, wo die Ergebnisse zu speichern sind. Innerhalb der Ausführungseinheit enthält eine Gruppe von Warteschlangen 42, die auf einem Puffer basieren, eine Gabelungswarteschlange zum Speichern der Mikrocode-Absetzadresse, eine Quellenzeiger-Warteschlange zum Speichern der Quellenoperandenstellen und eine Zielortzeiger-Warteschlange zum Speichern der Zielortstelle. Jede dieser Warteschlangen ist ein FIFO-Puffer, der die Daten für multiple Befehle halten kann.
- Die Ausführungseinheit 20 enthält auch eine Quellenoperandenliste 44, die in einer Registerdatei mit mehreren Anschlüssen gespeichert ist, die auch eine Kopie der GPRs enthält. Somit werden Einträge in der Quellenzeiger-Warteschlange entweder auf GPR-Stellen für Registeroperanden zeigen, oder auf die Quellenliste für Speicher- und Literalkonstanten-Operanden zeigen. Sowohl die M-Einheit 16 als auch die Befehlseinheit 18 schreiben Einträge in die Quellenliste 44, und die Ausführungseinheit 20 liest Operanden aus der Quellenliste aus, wenn sie zum Ausführen der Befehle benötigt werden. Zum Ausführen von Befehlen enthält die Ausführungseinheit 20 eine Befehlsausgabeeinheit 46, eine Mikrocode- Ausführungseinheit 48, eine Arithmetik- und Logikeinheit (ALU) 50 und eine Befehlszurückzieheinheit 52.
- Gemäß einem wichtigen Merkmal dieser Erfindung ist jede Pipelinestufe mit einem Anschluß in das vordere Ende der M-Einheit versehen. Dieser Aufbau läßt zu, daß durch die M-Einheit verarbeitete Speicherzugriffsanfragen bequem bezüglich der bestimmten Pipelinestufe mit einem Flag versehen werden, die die Anfrage initiierte. Demgemäß kann eine zu einer Speicherzugriffsanfrage, die eine Ausnahme erzeugt, gehörende Anschlußstelle auf einfache Weise isoliert und deaktiviert oder vom Annehmen weiterer Speicherzugriffsanfragen von ihrer zugehörigen Pipelinestufe abgehalten werden, bis auf die Ausnahme geeignet eingewirkt worden ist. In Fig. 1 ist das vordere Ende durch den Umsetzungspuffer 24 dargestellt, der, wie es gezeigt ist, Anschlußstellen zum Empfangen von Speicherzugriffsanfragen von geeigneten Stufen der Pipeline hat, die in der Befehlseinheit 18 und der Ausführungseinheit 20 angeordnet sind. Insbesondere ist der Befehlspuffer 30 durch den Befehlscache 28 mit einer entsprechenden Anschlußstelle 24A für das vordere Ende an der M-Einheit 16 verbunden. Die OPU 33 ist mit ihrer entsprechenden Anschlußstelle 24B für das vordere Ende verbunden, und eine Anschlußstelle 24C für das vordere Ende ist für die Ausführungseinheitsstufen vorgesehen. Es wird offensichtlich sein, daß andere diskrete Anschlußstellen für andere Stufen der Pipeline vorgesehen sein können, die Speicherzugriffsanfragen erzeugen, und daß die Darstellung der Anschlußstellen in Fig. 1 lediglich für illustrative Zwecke und nicht als Beschränkung gedacht ist.
- Die verschiedenen Pipelinestufen, die bei einer Ausführung eines typischen Befehls beteiligt sind, werden nun unter Bezugnahme auf Fig. 2 beschrieben. Wie es oben diskutiert ist, kann die Befehlshol-Hardware eines Prozessors bei einem Pipeline-Prozeß einen Befehl holen, während eine andere Hardware den Operationscode eines zweiten Befehls decodiert, die Operanden eines dritten Befehls holt, einen vierten Befehl ausführt und die verarbeiteten Daten eines fünften Befehls speichert. Fig. 2 stellt eine Pipeline für einen typischen Befehl dar, wie beispielsweise folgenden:
- ADDL3 RO,B^12(R1),R2.
- Dies ist eine Langwort-Addition unter Verwendung des Versatzmodus einer Adressierung.
- In der ersten Stufe der pipelinemäßigen Ausführung dieses Befehls wird der Programmzähler (der PC 26 in Fig. 1) des Befehls erzeugt. Dies wird normalerweise entweder durch Inkrementieren des Programmzählers vom vorherigen Befehl erreicht, oder durch Verwenden der Zieladresse eines Verzweigungsbefehls. Der PC wird dann zum Zugreifen auf den Befehlscache 28 in der zweiten Stufe der Pipeline verwendet.
- In der dritten Stufe der Pipeline sind die Befehlsdaten vom Cache 22 zur Verwendung durch den Befehlsdecodierer 32 verfügbar, oder in den Befehlspuffer 30 zu laden. Der Befehlsdecodierer 32 decodiert den Operationcode und die drei Spezifizierer in einem einzigen Zyklus, wie es unten detaillierter beschrieben wird. Die Operandenadressen R0 und R2 werden zur ALU-Einheit 50 weitergeleitet, und die Operandenadresse R1 wird zusammen mit dem Byte-Versatz am Ende des Decodierzyklus zur OPU 33 gesendet.
- In der Stufe 4 liest die Operandeneinheit 33 die Inhalte ihrer GPR-Registerdatei an der Stelle R1, addiert diesen Wert zu dem spezifizierten Versatz (in diesem Fall 12) und sendet die resultierende Adresse zum Umsetzungspuffer 24 in der M-Einheit 16 zusammen mit einer Operandenleseanfrage am Ende der Adressenerzeugungsstufe.
- In der Stufe 5 wählt die M-Einheit 16 die in der Stufe 4 erzeugte Adresse zur Ausführung aus. Unter Verwendung des Umsetzungspuffers 24 setzt die M-Einheit 16 die virtuelle Adresse während der Adressenumsetzungsstufe in eine physikalische Adresse um. Bei dieser Stufe werden irgendwelche Fehler erfaßt, die aus der Adressenumsetzung resultieren und entsprechende Fehlerinformation wird erzeugt. Gemäß dieser Erfindung wird die resultierende Fehlerinformation im Speicher plaziert und ein passendes Segment der Fehlerinformation wird zusammen mit den durch die aktuelle Stufe erzeugten Ergebnissen weitergeleitet, damit sie bei einer späteren Stufe behandelt werden. Die Erzeugung von Fehlerinformation und ihrer möglichen Verwendung wird unten detailliert beschrieben. Die physikalische Adresse wird dann zum Adressieren des Caches 22 verwendet, der in der Stufe 6 der Pipeline gelesen wird.
- In der Stufe 7 der Pipeline wird der Befehl zur ALU 50 ausgegeben, die die zwei Operanden addiert und das Ergebnis zur Zurückzieheinheit 52 sendet. Es wird angemerkt, daß während der Stufe 4 die Registerwerte für R1 und R2 und ein Zeiger zur Quellenlistenstelle für die Speicherdaten zur Ausführungseinheit gesendet und in den Zeigerwarteschlangen gespeichert werden. Dann sucht die Ausführungseinheit während der Cache-Lesestufe nach den zwei Quellenoperanden in der Quellenliste. Bei diesem bestimmten Beispiel findet sie nur die Registerdaten in R0, aber am Ende dieser Stufe kommen die Speicherdaten an und werden durch das für ungültig erklärte Auslesen der Registerdatei ersetzt. Somit sind beide Operanden in der Befehlsausführungsstufe verfügbar. Die Befehlsausführung enthält im wesentlichen die Stufen einer Befehlsausgabe, der eine aktuelle Ausführung unter Verwendung bestimmter Operanden folgt.
- Gemäß dieser Erfindung werden die Daten, die aus der Beendigung früherer Stufen der Pipeline resultieren, auf das Vorhandensein von Fehlerinformation bei der Ausführungsstufe geprüft. Wenn irgendein Fehleranzeichen erfaßt wird, wird eine weitere Fehlerinformation, die gespeichert wurde, bevor der Fehler ursprünglich erfaßt wurde, erneut aufgerufen, und ein Ausführungsbehandlungsprogramm wird aufgerufen, wie es unten erklärt wird.
- In der Zurückziehstufe 8 der Pipeline werden die Ergebnisdaten mit dem nächsten Eintrag in der Zurückziehwarteschlange gepaart. Obwohl mehrere funktionelle Ausführungseinheiten gleichzeitig in Betrieb sein können, kann nur ein Befehl in einem einzigen Zyklus zurückgezogen werden.
- In der letzten Stufe 9 der illustrativen Pipeline werden die Daten in den GPR-Teil der Registerdateien in sowohl der Ausführungseinheit 20 als auch der Befehlseinheit 18 geschrieben.
- Gemäß dieser Erfindung werden Speicherzugriffsanfragen durch jene Stufen in der Befehlspipeline untergebracht, die eine Umsetzung von einer virtuellen in eine physikalische Speicheradresse benötigen. Diese Anfragen werden an der entsprechenden Anschlußstelle untergebracht, die am vorderen Ende der M-Einheit vorgesehen ist. Die virtuellen Adressen, die zu untergebrachten Speicherzugriffsanfragen gehören, werden verarbeitet, um das Vorhandensein einer zuvor definierten Gruppe von Speicherzugriffsverletzungen zu bestimmen. Wenn gefunden wird, daß keine Verletzung existiert, wird die Speicherzugriffsanfrage bewilligt und die zugehörige Speicheroperation auf normale Weise beendet. Wenn jedoch gefunden wird, daß eine Verletzung existiert, wird die zugehörige virtuelle Adresse zusammen mit einem Code gespeichert, der den bestimmten Typ einer Zugriffsverletzung identifiziert, der begegnet wird. Ein Fehlersignal, das das Vorhandensein einer Verletzung anzeigt, wird dann erzeugt, und die darin enthaltene Information wird zusammen mit den resultierenden Daten verbreitet, die entlang nachfolgender Pipelinestufen zur E-Einheit weitergeleitet werden. Wenn diese Daten durch die Ausführungseinheit erforderlich sind, um einen Befehl auszuführen, werden die Daten durch die Ausführungseinheit auf das Vorhandensein des Fehlersignals hin geprüft. Wenn gefunden wird, daß das Signal existiert, werden die Fehleradresse und der Code, die zuvor in der M-Einheit gespeichert wurden, ausgelesen, und ein entsprechendes zuvor definiertes Ausnahmebehandlungsprogramm wird aufgerufen.
- Die virtuellen Adressen, die untergebrachte Speicherzugriffsanfragen begleiten, können als Ergebnis der Operation des Umsetzungspuffers 30 (Fig. 1) entstehen, wenn er mit einem lokalisierten Cache von kürzlich benutzten Umwandlungen von virtuell in physikalisch arbeitet, oder der Handlung einer zugehörigen Umsetzungspuffer-Fixiereinheit, die zum Handhaben einer Adressenumsetzung geeignet ist, wenn der lokalisierte Umsetzungspuffer-Cache keine benötigten Adressenumwandlungen enthält.
- Zum Erleichtern des Verstehens der vorliegenden Erfindung wird der Betrieb des Umsetzungspuffers und der Fixiereinheit unten unter Bezugnahme auf die Fig. 3 und 4 kurz beschrieben.
- Nimmt man zuerst auf Fig. 3 Bezug, wird der Betrieb des Umsetzungspuffers 24 detaillierter beschrieben. Der Umsetzungspuffer 24 ist zum Empfangen virtueller Adressen von fünf unterschiedlichen Quellen angeschlossen. Drei dieser Quellen sind extern zur Speicherzugriffseinheit 16 und sind hierin nachfolgend allgemein als extern bezeichnet. Die übrigen zwei Quellen werden von innerhalb der Speicherzugriffseinheit 16 gesteuert und sind hierin nachfolgend allgemein als intern bezeichnet. Diese internen Register werden während Umsetzungspuffer "Nichttreffern" verwendet, d.h. wenn die empfangene virtuelle Adresse nicht einer im Puffer 24 geladenen Übereinstimmungsadresse entspricht, um die Umsetzung von virtuell in physikalisch vom Speicher auszulesen und sie im Umsetzungspuffer 24 zu plazieren.
- Die externen Quellen enthalten den Befehlspuffer 30, der Teil der Befehlseinheit 18 ist, und für ein Ausgeben von Befehls-Hervorholadressen verantwortlich ist; die OPU 331 die Operanden-Hervorholadressen ausgibt; und die Ausführungseinheit 20, die implizite Operandenadressen ausgibt. Die Handlung des Umsetzungspuffers 24 ist unabhängig von der bestimmten externen Adresse, die gerade verarbeitet wird, da alle Adressen identisch behandelt werden.
- Jede dieser externen Quellen wird zu den Eingängen eines Multiplexers 54 ausgegeben, der die ausgewählte Eingabe zum Umsetzungspuffer 24 steuerbar ausgibt. Der Umsetzungspuffer 24 vergleicht die empfangene virtuelle Adresse mit einem Cache 55 von kürzlich verwendeten Umwandlungen von einer virtuellen in eine physikalische Adresse. Wenn eine Übereinstimmung gefunden wird, wählt der Umsetzungspuffer 24 die entsprechende physikalische Adresse aus und gibt sie zum Cache 22 aus. Es gibt keine Notwendigkeit zum Zugreifen auf den Cache 22 zum Holen der Umsetzung von virtuell zu physikalisch, da sie aufgrund ihrer früheren Verwendung bereits im Umsetzungspuffer-Cache 55 vorhanden ist. Diesbezüglich erhtht der Umsetzungspuffer 24 die Prozessorgeschwindigkeit durch Reduzieren der Anzahl von Zugriffen auf den Speicher stark.
- Jedoch enthält der Umsetzungspuffer-Cache 55 nur eine kleine Anzahl von Umsetzungen von virtuell in physikalisch. Somit ist es möglich, daß die virtuelle Adresse, die gerade umgesetzt wird, nicht im Umsetzungspuffer-Cache 55 vorhanden ist. Wenn dies passiert, ist es nötig, die Umwandlung vom Speicher auszulesen und sie im Umsetzungspuffer-Cache 55 zu plazieren, so daß die Umwandlung von virtuell in physikalisch beendet werden kann.
- Die durch die ausgewählte externe Quelle ausgegebene virtuelle Adresse wird auch zu einer Umsetzungspuffer-Fixiereinheit (TB-Fixiereinheit) 56 ausgegeben. Wie es ihr Name impliziert, ist die TB-Fixiereinheit 56 primär dafür da, jene Umwandlungen auszulesen, die nicht im Umsetzungspuffer-Cache 51 vorhanden sind, und sie im Umsetzungspuffer 24 anzuordnen. Die bestimmte Operation der TB- Fixiereinheit 56 wird durch den Typ des Speicherzugriffs gesteuert, der gerade verarbeitet wird. Zum Verstehen dieser Unterscheidung ist es zuerst nötig, die Konfiguration eines virtuellen Speichers zu erklären.
- Ein virtueller Adressenraum ist tatsächlich in mehrere funktionelle Bereiche oder Segmente aufgeteilt. Zuerst ist ein virtueller Adressenraum in zwei Hälften aufgeteilt, die Systemraum und Prozeßraum genannt werden. Ein Prozeßraum ist wiederum in den Programmbereich (PO) und den Steuerbereich (Pl) aufgeteilt. Jeder Bereich hat eine Ansammlung aller Adressenumsetzungen von virtuell zu physikalisch für jenen Bereich des Speichers. Diese Umsetzungen werden gemeinsam Seitentabellen genannt, während die einzelnen Umsetzungen Seitentabelleneinträge (PTE) genannt werden. Jeder Bereich hat seine eigene Seitentabelle und ist durch zwei Register definiert: ein Basisregister, das die Seitentabellen- Anfangsadresse enthält, und ein Längenregister, das die Anzahl von Seitentabelleneinträgen in der Tabelle enthält.
- Die virtuelle Adresse ist eine binäre Zahl, die 32 Bits lang ist, wobei die zwei höherwertigen Bits die Bereiche des Speichers definieren. Beispielsweise definiert das Bit 31 einen System- und Prozeßraum. Eine Eins an dieser Position zeigt einen Systemraum an, während eine Null einen Prozeßraum identifiziert. Ein Bit 30 definiert weiterhin die zwei Prozeßbereiche (P0, P1). Die Hälfte mit hohen Adressen des Prozeßraums ist der Steuerbereich (P1), während die Hälfte mit niedrigen Adressen durch den Programmbereich (P0) besetzt ist.
- Die Hälfte mit hoher Adresse des Adreßraums wird Systemraum genannt, weil er durch alle Programme im System gemeinsam genutzt wird und das Betriebssystem in diesem Bereich läuft. Es gibt nur eine Seitentabelle für den Systemraum, nämlich die Systemseitentabelle (SPT), die alle Systemraumreferenzen umsetzt. Die SPT ist durch ihre zwei Hardware-Register beschrieben, nämlich das Systembasisregister (SBR) und das Systemlängenregister (SLR). Diese Register werden durch die Software geladen, wenn das Betriebssystem hochgefahren wird. Es ist wichtig, anzumerken, daß auf die SPT durch physikalische Adressen Bezug genommen werden muß, da es keine Umwandlung von einer virtuellen zu einer physikalischen Adresse ohne die Seitentabelle selbst geben kann. Beispielsweise muß, damit der Umwandlungsprozeß beginnt, die physikalische Adresse wenigstens der SPT bekannt sein, um die Umwandlungen von virtuell in physikalisch auszulesen.
- Die Hälfte mit niedrigen Adressen des Speichers wird Prozeßraum genannt, weil der Prozeßraum ungleich dem Systemraum eindeutig für jedes Programm im System ist. Jedes Programm hat seine eigene Seitentabelle für seinen Programmbereich und seinen Steuerbereich, und sie sind durch die entsprechenden Basis- und Längenregister (P0BR, P1BR, P0LR und P1LR) definiert. Beispielsweise werden verschiedene Programme, die auf dieselbe virtuelle Prozeßraumadresse Bezug nehmen, auf unterschiedliche physikalische Speicherstellen zugreifen. Demgemäß wird auf die Prozeßseitentabellen eher durch virtuelle als durch physikalische Speicheradressen Bezug genommen. Somit muß eine Umwandlung von virtuellen Prozeßraumadressen zuerst die physikalische Speicherstelle der Prozeßseitentabelle lokalisieren. Diese Adressen sind in den physikalischen Speicherstellen der Systemseitentabelle (SPT) verfügbar. Es kann gesehen werden, daß, während eine Umwandlung eine Systemspeicherreferenz in einem einzigen Schritt erreicht werden kann, eine Prozeßspeicherreferenz zwei Umwandlungen durchführen muß: zuerst die Umwandlung der Prozeßbasisregisteradresse und als zweites die Umwandlung der virtuellen Adresse selbst.
- Der Programmbereich (P0) enthält Anwenderprogramme, wodurch der auf Null basierende virtuelle Adressenraum vorgesehen ist, von dem erwartet wird, daß Programme in ihn geladen werden. Gegensätzlich dazu ist im Steuerbereich (P1) der Anwendermodusstapel des Prozesses untergebracht. Das Betriebssystem kann auch den Steuerbereich dazu verwenden, daß er geschützte prozeßspezifische Daten und einen prozeßspezifischen Code enthält, sowie die Stapel für die höheren Zugriffsmoden.
- Nimmt man wiederum Bezug auf Fig. 3, empfängt die TB-Fixiereinheit 56 die virtuelle Adresse vom Multiplexer 50 und verwendet die Bits 30 und 31 zum Bestimmen des virtuellen Speicherbereichs, auf den zugegriffen wird. Der bestimmte Bereich wird dazu verwendet, zu bestimmen, welches Basisregister zum Lokalisieren der entsprechenden Seitentabelle verwendet werden sollte. Für eine Systemspeicherreferenz ist die vom SBR berechnete Seitentabellenadresse und kann direkt zum Speicherzugriffseinheits-Cache 22 ausgegeben werden, wo die entsprechende Umwandlung von virtuell zu physikalisch gespeichert ist. Jedoch ist es nur nötig, den Umsetzungspuffer 24 zu fixieren, wenn ein "Nichttreffer" auftritt. Demgemäß gibt der Umsetzungspuffer 24 ein Nichttreffer-Signal zur TB-Fixiereinheit 56 aus, um zuzulassen, daß die berechnete Adresse zum Cache 22 ausgegeben wird. In dem Fall eines TB-"Nichttreffers" wird die Umwandlung aus dem Cache 22 ausgelesen und im Umsetzungspuffer-Cache 55 gespeichert. Somit muß der sofortige nachfolgende Vergleich des Umsetzungspuffer-Caches 55 mit der anhängigen virtuellen Adresse notwendigerweise in einem "Treffer" resultieren. Daher aktiviert die TB-Fixiereinheit 56 temporär eine Steuerung über den Umsetzungspuffer 24, um den Umsetzungspuffer-Cache 55 zu erneuern, wodurch die anhängige Umwandlung von einem "Nichttreffer" zu einem "Treffer" geändert wird und die Umsetzung von virtuell zu physikalisch beendet wird.
- Gegensätzlich dazu ist dort, wo der virtuelle Speicherbereich, auf den zugegriffen wird, dem Prozeßbereich entspricht, die von einem der Prozeßbasisregister P0BR, P1BR berechnete Adresse eine virtuelle Adresse. Diese virtuelle Adresse kann nicht zum Cache 22 ausgegeben werden, sondern muß zuerst in eine physikalische Adresse umgewandelt werden. Natürlich wird eine Umwandlung von virtuellen in physikalische Adressen normalerweise durch den Umsetzungspuffer 24 erreicht. Da der Umsetzungspuffer 24 gegenwärtig verzögert wird und darauf wartet, daß die TB-Fixiereinheit 56 ihren Cache 55 erneuert, kann die TB-Fixiereinheit 56 eine Steuerung über den Umsetzungspuffer aktivieren, um diese Umwandlung von virtuell zu physikalisch durchzuführen. Die TB-Fixiereinheit 56 gibt die berechnete virtuelle Adresse der Prozeßseitentabelle zu einem internen Register 57 in Reaktion auf den Umsetzungspuffer-"Nichttreffer" aus. Ein Multiplexer 58 wird durch die TB-Fixiereinheit 56 ausgewählt, um die Inhalte des internen Registers 57 zu einem Eingang des Multiplexers 54 auszugeben. Die TB-Fixiereinheit 56 arbeitet auch zum Auswählen des Ausgangs des Multiplexers 58 als die Eingabe zum Multiplexer 54. Es kann gesehen werden, daß ein Umsetzungspuffer-"Nichttreffer" an einer Prozeßspeicherreferenz in der berechneten virtuellen Adresse der Prozeß- Seitentabelle resultiert, die zum Umsetzungspuffers 24 für eine Umwandlung von virtuell zu physikalisch ausgegeben wird. Somit resultiert ein "Treffer" im Umsetzungspuffer 24 zu dieser Zeit darin, daß die physikalische Adresse direkt zum Cache 22 durch den Umsetzungspuffer 24 ausgegeben wird.
- Es ist auch möglich, daß ein zweiter Umsetzungspuffer-"Nichttreffer" aus der Adresse resultiert, die im internen Register 57 enthalten ist. Die TB-Fixiereinheit 56 kann auch diesen zweiten "Nichttreffer" korrigieren. Das Fixierprogramm ist identisch zu jenem, das zum Auslesen des PTE für einen Systemreferenz-"Nichttreffer" verwendet wird. Der ausgelesene PTE wird im Umsetzungspuffer-Cache gespeichert und wird zum Bilden der physikalischen Adresse der Umsetzung von virtuell zu physikalisch bei einem nachfolgenden Durchlauf durch den Umsetzungspuffer 24 verwendet.
- Eine Ablauffolgesteuerung 59 empfängt auch eine Eingabe von der TB- Fixiereinheit 56 über denselben Bus wie das interne Register 57. Die Ablauffolgesteuerung 59 wird während Multi-Präzisionsoperationen verwendet, wo es nötig ist, mehrere aneinandergrenzende Bytes aus dem Speicher zu lesen. Die Ablauffolgesteuerung 59 inkrementiert die Adresse und gibt sie zum Multiplexer 58 aus. Die TB-Fixiereinheit 56 steuert, welcher der Multiplexereingänge zum aufeinanderfolgenden Ausgeben von als erstes der internen Registeradresse und als zweites der inkrementierten Adresse der Ablauffolgesteuerung ausgewählt wird. Auf alle Bytes einer Multi-Byte-Operation wird auf diese Weise zugegriffen.
- Nimmt man nun Bezug auf Fig. 4, ist ein detailliertes Blockdiagramm des Umsetzungspuffers 24 und der TB-Fixiereinheit 56 gezeigt. Der Umsetzungspuffer 24 unterhält den Cache 55 von zuletzt verwendeten PTEs. Die virtuelle 32-Bit-Adresse wird vom Umsetzungspuffer 30 empfangen, und die Bits 31 und 17:09 werden als Zeiger für die 1024 Speicherstellen des Caches 55 verwendet.
- Jede Speicherstelle im Cache 55 hat eine 1 3-Bit-Kennung entsprechend den Bits 30:18 der virtuellen Adresse. Diese Kennungen sind als A&sub0; - A&sub1;&sub0;&sub2;&sub4; gezeigt und werden gemeinsam Seitenumsetzungs-Directory genannt. Die niedrigeren 512 Kennungen entsprechen Prozeß-Speicherreferenzen und die oberen 512 Kennungen entsprechen System-Speicherreferenzen. Der Zweck eines Aufteilens der Kennungen in Prozeß- und System-Kennungen besteht im Zulassen, daß das Betriebssystem schnell nur jene Kennungen für ungültig erklärt, die zu dem aktuellen Programm gehören, wenn ein Zusammenhangsschalten erfolgt. Beispielsweise dann, wenn diese Einträge nicht für ungültig erklärt sind, wenn ein anderes Programm ein Ausführen beginnt, könnte dieses nächste Programm auf die falsche physikalische Speicherstelle zugreifen, und zwar durch Erzeugen einer virtuellen Prozeßadresse, die zuvor durch das vorherige Programm umgesetzt worden ist. Somit wird eher eine Kennungsübereinstimmung basierend auf der Umsetzung von virtuell zu physikalisch des früheren Programms die Folge sein, als daß der Umsetzungspuffer 30 einen "Nichttreffer" erfaßt.
- Die System-Kennungen müssen nach einer Zusammenhangsänderung nicht für ungültig erklärt werden, da alle Prozesse den Systemraum gemeinsam nutzen und die Umsetzungen von virtuell in physikalisch für jeden Prozeß identisch sein werden. Folglich wird eine System-Speicherreferenz von irgendeinem Programm auf dieselbe physikalische Speicherstelle zugreifen, so daß es keine Notwendigkeit zum Ausräumen der System-Kennungen gibt. Das Bit 31 trennt die Prozeß- Kennungen von den System-Kennungen.
- Zu jeder der Kennungen Ao - A&sub1;&sub0;&sub2;&sub4; gehört ein 32-Bit-Datenfeld, das den entsprechenden PTE enthält und als B&sub0; - B&sub1;&sub0;&sub2;&sub4; gezeigt ist. Der PTE enthält die physikalische Seitenframenummer PFN bei den Bits 24:00, ein gültiges Bit beim Bit 31, ein Schutzfeld bei den Bits 30:27 und ein Modifikations-Bit beim Bit 26. Diese PTEs werden gemeinsam der Seitenumsetzungsspeicher genannt.
- Ein Komparator 60 empfängt die Bits 30:18 der virtuellen Adresse und die 13-Bit- Kennung entsprechend dem Zeiger. Eine Übereinstimmung zwischen diesen Werten zeigt an, daß der PTE entsprechend der virtuellen Adresse im Seitenumsetzungsspeicher an der Stelle angeordnet ist, die den Kennungs-Bits entspricht. Die Bits 29:09 des ausgewählten PTE werden zu einem Eingang eines Registers 62 ausgegeben. Der andere Eingang des Registers 62 wird aus den Bits 08:00 der virtuellen Adresse gebildet. Anders ausgedrückt wird die physikalische Seite an den Byte-Versatz der virtuellen Adresse angehängt, was die aktuelle physikalische Adresse bildet. Diese physikalische Adresse wird im Register 62 gehalten, das durch einen invertierten Impuls vom Komparator 60 getaktet wird. Somit wird die berechnete physikalische Adresse nur zum Cache 22 ausgegeben, wenn der Komparator 60 anzeigt, daß ein "Treffer" im Seitenumsetzungs-Directory gefunden wurde.
- Gleichzeitig wird die virtuelle Seitennummer (VPN) (Bits 29:09) zur TB-Fixiereinheit 56 ausgegeben. Eine Zustandsmaschine 66 steuert den Betrieb der TB- Fixiereinheit 56 in Reaktion auf Steuereingaben vom Komparator 60 (TB- Nichttreffer) und die Bits 31:30 der virtuellen Adresse. Die Zustandsmaschine 66 reagiert auf das TB-Nichttreffersignal durch Berechnen der Adresse des gewünschten PTE. Allgemein wird der PTE durch Addieren der VPN und der Adresse des Basisregisters bestimmt.
- Der Status der Bits 31:30 bestimmt das bestimmte Basisregister, das zum Berechnen des PTE verwendet wird. Wie es zuvor erörtert ist, gibt es drei separate Bereiche des Speichers, die jeweils ihre eindeutige Seitentabelle und ihre eindeutige Basisadresse haben. Die Zustandsmaschine 66 interpretiert die Bits 31:30 und gibt ein Steuersignal zum Auswahleingang eines Multiplexers 68 aus, wodurch das geeignete Basisregister ausgewählt werden kann. Die Eingänge zum Multiplexer 68 sind mit einer Reihe von sechs Registern 70 verbunden, die die Basis- und Längenregister (P0BR, P1BR, SBR, P0LR, P1BR und SLR) jedes Bereichs des Speichers enthalten.
- Die Zustandsmaschine 66 steuert auch die Auswahleingänge eines Multiplexers 72, der mit den Ausgängen einer Reihe von drei Adressenregistern verbunden ist, die eine Registergruppe 73 bilden, die zum temporären Speichern virtueller Adressen geeignet ist, die unterschiedlichen Typen von TB-"Nichttreffer"-Zuständen entsprechen. Genauer gesagt ist ein "Anschluß-Nichttreffer"-Register zum Speichern der virtuellen Adresse entsprechend einem ersten "Nichttreffer" im Prozessorspeicher vorgesehen, ein "Fixiereinheits-Nichttreffer"-Register ist zum Speichern der virtuellen Adresse entsprechend einem "Nichttreffer" vorgesehen, der aus einer nachfolgenden Referenz zum Umsetzungspuffer von der Fixiereinheit resultiert, und ein "Verzögerungs-Nichttreffer"-Register ist zum Speichern der virtuellen Adresse entsprechend einem "Nichttreffer" vorgesehen, welcher eine verzögerte Fixiereinheitshandlung benötigt. Die Reaktion der Fixiereinheit auf diese gespeicherten virtuellen Adressen wird unten beschrieben. Während eines "Nichttreffers" im Systemspeicher oder eines ersten "Nichttreffers" im Prozeß-Speicher wählt die Zustandsmaschine 66 den Anschluß-Nichttreffer-Adresseneingang zum Multiplexer 72 aus, der die Bits 21:2 der virtuellen Adresse enthält. Die zwei niederwertigsten Bits werden nicht benötigt, da der PTE im Cache 28 in einer Langwortausrichtung (4 Bytes) gespeichert ist. Die Multiplexer 68, 72 geben ihre Ausgaben zu einem Addierer 74 aus, wo sie kombiniert werden, um die Adresse des PTE zu bilden. Die Adresse wird zu einer Zuteilungseinheit 75 oder zum Cache 22 ausgegeben.
- Zusammen mit der Adresse gibt die Zustandsmaschine 66 Anforderungssignale zu entweder der Zuteilungseinheit 75 oder zum Cache 28 aus, und zwar in Abhängigkeit davon, ob die berechnete Adresse eine physikalische oder eine virtuelle Adresse ist. Die Anforderungssignale handeln zum Freigeben entweder der Zuteilungseinheit 75 oder des Caches 22. Beispielsweise ist eine von einem Prozeß- Basisregister berechnete Adresse eine virtuelle Adresse und kann nicht vom Cache 22 ausgegeben werden, sondern muß einer Umsetzung von virtuell zu physikalisch im Umsetzungspuffer 24 unterzogen werden. Demgemäß gibt die Zustandsmaschine 66 das Anforderungssignal zur Zuteilungseinheit 75 aus. Die Zuteilungseinheit 75 entspricht dem Multiplexer 54, der in Fig. 3 gezeigt ist, und arbeitet zum Ausgeben der Signale von den externen Registern oder den internen Registern basierend auf einem Prioritätsschema. Die internen Register, nämlich das Ablauffolgesteuerungsregister 59 und das interne Register 57, haben die höchste Priorität. Somit werden dann, wenn die Zustandsmaschine 66 das Anforderungssignal zur Zuteilungseinheit 75 ausgibt, die internen Register über die externen Register ausgewählt, um zuzulassen, daß das TB-Fixierprogramm ohne einen Konflikt von den externen Registern weitermacht.
- Gegensätzlich dazu ist eine von einem System-Basisregister berechnete Adresse eine physikalische Adresse und kann direkt zum Cache 22 ausgegeben werden, um den gewünschten PTE auszulesen. Der PTE wird vom Speicher ausgelesen und zu einem Register 76 ausgegeben. Die Bits 30:18 der entsprechenden virtuellen Adresse werden zu einem Register 78 ausgegeben. Die Inhalte der Register 76, 78 werden an den Stellen gespeichert, die durch den Zeiger angezeigt werden, um den Umsetzungspuffer-Cache 51 mit der zuletzt verwendeten Umsetzung von virtuell zu physikalisch zu erneuern.
- Es gibt eine Möglichkeit, daß eine zweite Referenz zum Umsetzungspuffer 24 während eines Prozeß-Speicher-"Nichttreffers" auch in einem "Nichttreffer" resultiert. Die TB-Fixiereinheit 56 kann diesen doppelten "Nichttreffer" behandeln. Die Zustandsmaschine 66 erkennt den Zustand eines doppelten Nichttreffers, wenn das zweite aufeinanderfolgende "Nichttreffer"-Signal vom Komparator 60 empfangen wird. Die Zustandsmaschine 66 wählt das System-Basisregister über dem Multiplexer 68 und die Fixiereinheits-Nichttreffer-Adresse über den Multiplexer 72 aus. Das Anschluß-Nichttreffer-Adressenregister bleibt mit der ursprünglichen virtuellen Adresse geladen, die den ersten "Nichttreffer" zufolge hatte. Der Addierer 74 kombiniert diese ausgewählten Signale, um zur physikalischen Systemadresse des Prozeß-Basisregisters zu gelangen. Da diese eine System-Speicherreferenz ist, identifiziert die Adresse eine physikalische Speicherstelle und kann direkt zum Cache 22 ausgegeben werden, und zwar zusammen mit dem Cache- Freigabesignal. Hier ist der Prozeß im wesentlichen identisch zu einer ursprünglichen System-Speicherreferenz, und der Cache 22 wird durch Ausgeben des bei der identifizierten Adresse gespeicherten PTE zum Umsetzungspuffer-Cache 55 reagieren. Somit wird dann, wenn das externe Register wieder durch die Zuteilungseinheit 75 ausgewählt wird, der Umsetzungspuffer 24 notwendigerweise einen "Treffer" bezüglich der Umsetzung von virtuell zu physikalisch haben.
- Gemäß dem Umsetzungspuffer-Fixierprogramm wird, bevor die TB-Fixiereinheit 56 die PTE-Adresse berechnet, eine Fehlerprüfung durchgeführt, um zu bestimmen, ob die virtuelle Adresse einen Längenparameter der Seitentabelle verletzt hat. Einfacher ausgedrückt, ist die Anzahl verfügbarer Seiten in einem Bereich eines Speichers bekannt, und eine virtuelle Seite, die größer als die Anzahl von Seiten im Speicher ist, muß das Ergebnis eines Systemfehlers sein. Der Addierer 74 wird zum Durchführen dieses Vergleichs verwendet. die Zustandsmaschine 66 konfiguriert den Addierer 74 zum Durchführen einer 2-er-Komplement-Subtraktion durch Invertieren der Eingänge vom Multiplexer 72 und zum Freigeben des Übertragsbits. Für diesen Zweck sind die zwei niederwertigsten Bits für die Berechnung nötig, so daß die Zustandsmaschine, eher als daß sie die Anschluß-Nichttreffer- Adresseneingabe auswählt, die Verzögerungs-Nichttreffer-Adresseneingabe zum Multiplexer 72 auswählt, um die Bits 21:0 der virtuellen Adresse auszulesen.
- Die Zustandsmaschine 66 wählt auch das Längenregister 70 entsprechend dem Bereich eines Speichers, der gerade umgesetzt wird. Somit zeigt ein negatives Ergebnis des Subtrahierens der virtuellen Adresse von der bekannten Länge der Seitentabelle an, daß die virtuelle Adresse versucht, auf einen nicht vorhandenen PTE zuzugreifen. Alternativ dazu zeigt ein positives Ergebnis an, daß keine Längenverletzung existiert, und es wird zugelassen, daß der Fixierprozeß weitergeht.
- Die Zustandsmaschine 66 überwacht diesen Prozeß über das Übertragsbit des Addierers 74. Wenn das Übertragsbit aktiviert ist, ist das Ergebnis negativ, und ein Fehlerbefehl wird zur Ausführungseinheit 16 ausgegeben.
- Zusätzlich zum Korrigieren von "Nichttreffern" im Umsetzungspuffer 24, hilft die TB- Fixiereinheit 56 auch beim Wiedergewinnen von Daten während Multipräzisionsoperationen. Diese Multipräzisionsbefehle benötigen einen Zugriff auf mehrere Speicherstellen, selbst wenn nur eine einzelne Speicherstelle im Befehl identifiziert ist. Somit berechnet die TB-Fixiereinheit 56, während die erste Speicherreferenz zum Umsetzungspuffer 24 geführt wird, die nächste sequentielle Adresse und gibt sie zur Ablauffolgesteuerung 59 aus. Die virtuelle Adresse wird zum Null-Eingang des Multiplexers 72 ausgegeben und durch die Zustandsmaschine 66 ausgewählt. Gleichzeitig wird eine Konstante mit einem Wert von Vier am Null-Eingang des Multiplexers 68 lokalisiert und wird durch die Zustandsmaschine 66 ausgewählt. Daher ist die Ausgabe des Addierers 74 die virtuelle Adresse des nächsten Langwortes, das für den Multipräzisionsbefehl benötigt wird. Diese Adresse wird zur Zuteilungseinheit 75 ausgegeben, wo sie eine Priorität über die externen Register einnimmt und durch den Umsetzungspuffer 24 in eine physikalische Adresse umgesetzt wird.
- Schließlich wird der Prozeß zum Laden der Basis- und Längenregister 70 durch die Ausführungseinheit 20 während der Initialisierungsphase der CPU gesteuert. Die Ausführungseinheit 20 liefert eine 4-Bit-Kennung-Adresse und ein Freigabesignal zu einem Decodierer 80. Der Decodierer 80 antwortet durch Freigeben des entsprechenden Registers 70, um die Daten einzugeben, die in der virtuellen Adresse vorhanden sind. Der Prozeß wird für jedes der Basis- und Längenregister 70 wiederholt, bis alle Register mit den geeigneten Daten geladen worden sind.
- Nimmt man nun Bezug auf Fig. 5, ist dort ein Blockdiagramm gezeigt, das eine bevorzugte Anordnung für eine Erzeugung von Fehlerinformationen gemäß dem Ausnahmebehandlungsschema dieser Erfindung darstellt. Wie es darin gezeigt ist, werden virtuelle Adressen, die zu Speicherzugriffsanfragen gehören, die an den einzelnen Anschlußstellen am vorderen Ende der M-Einheit (Bezugszeichen 16 in Fig. 1) empfangen werden, durch eine Zuteilungseinheit 92 über Kommunikationsverbindungsstellen 93, 94 und 95 angenommen, die jeweils der OPU 33 (siehe Fig. 1), der I-Einheit 18 und der E-Einheit 20 entsprechen. Die Zuteilungseinheit 92 ist dazu geeignet, die Adresse entsprechend einem der drei externen Anschlüsse, die an der M-Einheit definiert sind, auf der Basis eines zuvor definierten Prioritätsschemas auszuwählen. Wie es oben unter Bezugnahme auf den Betrieb des Umsetzungspufferspeichers und der Umsetzungspufferspeicher-Fixiereinheit erörtert ist, sind die gerade verarbeiteten virtuellen Adressen vorzugsweise 32-Bit- Adressen, die durch jene Stufen in der Befehlsausführungs-Pipeline erzeugt werden, die einen Zugriff auf einen Speicher benötigen. Eine der drei virtuellen Adressen, die an ihrem Eingangsanschluß empfangen werden, wird zur Verarbeitung durch die Zuteilungseinheit 92 ausgewählt und als die Umsetzungspufferspeicher- Anfrageadresse ausgegeben, die darauffolgend zum Zugreifen auf Adressensegmente des Speichers verwendet wird. Die Zuteilungseinheit 92 arbeitet im wesentlichen zum Verzögern von Signalen von den externen oder den internen virtuellen Adressenquellen auf der Basis eines Prioritätsschemas, das die internen Quellen mit einer höheren Priorität als die externen Quellen versorgt.
- Es sollte beachtet werden, daß die virtuellen Adressen, die bei der Zuteilungseinheit empfangen werden, ihren Ursprung direkt bei den externen Quellen haben könnten, und zwar als Ergebnis einer Umsetzungspufferspeicher-"Treffer"- Operation oder über die internen Quellen als ein Ergebnis der Handlung der Umsetzungspufferspeicher-Fixiereinheit nach einer "Nichttreffer"-Operation während des Prozesses eines Umsetzens virtueller Adressen in entsprechende physikalische Adressen im Systemspeicher. Die durch die Zuteilungseinheit ausgewählte bestimmte virtuelle Adresse wird zu einer Schutzprüfeinheit 96 weitergeleitet, die die angenommene virtuelle Adresse verarbeitet, um das Vorhandensein einer zuvor definierten Gruppe von Speicherzugriffsverletzungen zu bestimmen. Gemäß einem bevorzugten Ausführungsbeispiel ist die Schutz-Prüfeinheit 96 dazu geeignet, das Vorhandensein von wenigstens fünf Typen von Speicherzugriffsverletzungen zu überwachen, die unten in Tabelle A aufgelistet sind. TABELLE A
- Wenn herausgefunden wird, daß die in Frage stehende virtuelle Adresse einer der zuvor definierten Speicherzugriffsverletzungen entspricht, wird ein Fehlersignal 96A erzeugt, das das Vorhandensein einer Verletzung anzeigt. Das Fehlersignal 96A ist vorzugsweise in der Form eines Einzelbit-Flags, das zu den Daten hinzugefügt wird und zusammen mit ihnen weitergeleitet wird, die entlang aufeinanderfolgender Pipeline-Stufen weitergeleitet werden, bis sie möglicherweise die Ausführungsstufe in der E-Einheit erreichen.
- Zum Durchführen der Schutzprüfung empfängt eine Prüfeinheit 96 einen 32-Bit- PTE 98, der der gerade verarbeiteten virtuellen Adresse entspricht und der als Ergebnis des oben detailliert diskutierten Adressenumsetzungsprozesses von virtuell zu physikalisch erzeugt wird. Es wird daran erinnert, daß der PTE die physikalische Seiten-Framenummer PFN bei den Bits 20:00, ein "gültiges" Bit beim Bit 31, ein Schutzfeld mit Bits 30:27 und ein "Modifikations"-Bit beim Bit 6 enthält. Funktionell ausgedrückt ist die Schutz-Prüfeinheit 96 eine Zustandsmaschine, die dazu geeignet ist, den Status bestimmter Bits im 32-Bit-PTE 98 zu prüfen, um das Vorhandensein entsprechender zuvor definierter Speicherzugriffsverletzungen zu bestimmen. Genauer gesagt wird das Bit 31 des PTE 98 geprüft, um zu sehen, ob es aktiviert ist oder nicht. Wie es oben beschrieben ist, stellt das Bit 31 dann, wenn es aktiviert ist, ein gültiges Bit dar, das anzeigt, daß die entsprechende Seitennummer im Speicher vorhanden ist; wenn das Bit 31 nicht aktiviert ist, hat die virtuelle Adresse entsprechend jenem PTE keine entsprechende gültige Umsetzung. Wenn die Prüfeinheit 96 herausfindet, daß das Bit 31 des PTE nicht aktiviert ist, erzeugt sie das Fehlersignal 96A, was das Vorhandensein einer Zugriffsverletzung anzeigt.
- Die Schutz-Prüfeinheit 96 prüft auch das Modifikations-Bit in den Bitinformationen, die durch den PTE 98 dargestellt werden. Wenn jenes Bit nicht aktiviert ist, ist es ein Anzeichen dafür, daß die bestimmte Seite im Speicher, auf die durch den PTE Bezug genommen wird, keinen Schreibzugriff hat und zeigt das Vorhandensein einer Speicherzugriffsverletzung.
- Die Prüfeinheit 96 überwacht auch den PTE 98 auf Längenverletzungen, um zu bestimmen, ob die virtuelle Adresse, die eine Speicherzugriffsanfrage begleitet, gerade versucht, auf einen nicht existierenden PTE zuzugreifen, wie es oben unter Bezugnahme auf Fig. 4 detailliert beschrieben ist. Wiederum wird dann, wenn herausgefunden wird, daß eine Längenverletzung existiert, das Fehlersignal 96A erzeugt.
- Gleichermaßen wird der PTE 98 auch geprüft, um zu sehen, ob auf einen ungültigen Eintrag in der Seitentabelle für den Prozeßabschnitt des Systemspeichers Bezug genommen wird. Dies bedeutet, daß der Prozeß-PTE oder der PPTE ungültig ist. Wenn das Ergebnis positiv ist, wird das Fehlersignal 96A erzeugt.
- Ein anderer Typ einer Speicherzugriffsverletzung, der durch die Schutz-Prüfeinheit 96 erkannt wird, ist eine Moden-Zugriffsverletzung, die auf einer Speicherzugriffsanfrage basiert, die über den aktuellen Mode hinausgeht, indem die Prozessoreinheit gerade arbeitet. Beispielsweise kann eine Speicherzugriffsanfrage während eines Betriebs des Systems im Anwendermode entstehen und dort Speichersegmente im Überwachungsmode adressieren; es ist unbedingt erforderlich, daß solche Anfragen als Zugriffsverletzungen identifiziert werden. Um dies zu erreichen, ist die Prüfeinheit 96 mit einem Zwei-Bit-Code 97 versehen, der den Mode darstellt, unter welchem das System zu der Zeit arbeitet, zu der die Schutzprüfung durchgeführt wird.
- Gemäß dieser Erfindung folgt der Erfassung einer zuvor definierten Speicherzugriffsverletzung die Erzeugung eines Fehlercodes, der die besondere Art einer Verletzung identifiziert, die erfaßt worden ist. Genauer gesagt ist ein separates Bit in einem Fehlercodefeld für eine jeweilige der zuvor definierten Zugriffsverletzungen bestimmt, die oben in Tabelle A aufgelistet sind. Beispielsweise wird ein Bit 1 des 5-Bit-Fehlercodes gesetzt, wenn eine Moden-Zugriffsverletzung gefunden wird, ein Bit 3 wird aktiviert, wenn eine ungültige Umsetzungsverletzung existiert, ein Bit 3 wird aktiviert, wenn eine PPTE-Verletzung existiert, und ein Bit 5 wird aktiviert, wenn eine Modifikationsverletzung erfaßt wird. Ein 5-Bit-Fehlercode wird für jede der externen virtuellen Adressenquellen erzeugt und in entsprechenden 5-Bit- Code-Registern separat gespeichert. Genauer gesagt ist eine Registergruppe 100 vorgesehen, in der ein 5-Bit-Register 101 dazu geeignet ist, den Fehlercode zu empfangen und zu speichern, der in Entsprechung zu der virtuellen Adresse erzeugt ist, die von der E-Einheit kommt. Gleichermaßen ist ein 5-Bit-Register 102 zum Speichern des Fehlercodes entsprechend der OPU vorgesehen, und ein weiterer 5-Bit-Register 103 ist zum Speichern des Fehlercodes entsprechend der I- Einheit vorgesehen.
- Gleichzeitig mit der Erfassung einer Zugriffsverletzung durch die Schutz-Prüfeinheit 96 und der Erzeugung eines entsprechenden Fehlersignals 96A wird die virtuelle Adresse entsprechend der Verletzung als eine Umsetzungspufferspeicher-Anfrage 99 weitergeleitet und darauffolgend in einem entsprechenden Register einer Registergruppe 104 gespeichert. Die Registergruppe enthält ein 32-Bit- Adressenregister 105 zum Speichern der virtuellen Adresse, die durch die Prüfeinheit als eine Speicherzugriffsverletzung darstellend bestimmt wird, die durch die E- Einheit erzeugt wird. Gleichermaßen ist ein Adressenregister 106 zum Speichern der virtuellen 32-Bit-Adresse vorgesehen, die durch die I-Einheit erzeugt wird, und ein 32-Bit-Register 107 ist zum Speichern der virtuellen Adresse entsprechend der OPU vorgesehen.
- Die in den Register 105-107 gespeicherten Fehleradresseninformationen sind mit einem Multiplexer 108 verbunden. Der Multiplexer MUX 108 ist mit einem Auswahlsignal versehen, das als das Fehlerprioritätssignal 109 bestimmt ist, welches die Reihenfolge bestimmt, in welcher gespeicherte Fehleradressen in dem Fall nach außen kanalisiert werden, indem herausgefunden wird, daß mehr als eine Fehleradresse in den Adressenregistern aktiv ist, wenn die gespeicherten Fehlerinformationen aufeinanderfolgend erneut aufgerufen werden. Die Fehleradresseninformationen und die Fehlercodeinformationen, die in den Registergruppen 100 und 104 gespeichert sind, werden innerhalb der M-Einheit gehalten, bis die E-Einheit die Übertragung der Fehlerparameter anfragt. Eine derartige Anfrage wird hervorgerufen, wenn der Befehl durch die E-Einheit bei der Ausführungsstufe behandelt wird und herausgefunden wird, daß eine Prüfung auf das Vorhandensein des 1-Bit- Fehlersignals positiv ist.
- Gemäß einem Merkmal dieser Erfindung werden Fehlerinformationen, die in Antwort auf Speicherzugriffsverletzungen erzeugt werden, die durch die E-Einheit initiiert werden, derart bestimmt, daß sie eine Präzedenz gegenüber Fehlerinformationen übernehmen, die durch die OPU erzeugt werden, welche wiederum derart bestimmt werden, daß sie eine höhere Priorität als I-Einheitsfehler haben. Effektiv werden Fehler in der Reihenfolge einer Ausführung verarbeitet, die durch die Pipeline-Stufen in der E-Einheit vorgegeben ist. Der Grund zum Anordnen von E- Einheitsfehlern auf der höchsten Ebene im Fehlerprioritätsschema besteht darin, daß ein Beenden von Operationen in den E-Einheits-Pipelinestufen für eine Ausführung eines aktuellen Befehls unverzichtbar ist. Dies ist nicht der Fall bei der OPU-Stufe, die dazu geeignet ist, zuvor geholte Befehle und Operanden zu verarbeiten, die nicht wesentliche für das Beenden eines aktuellen Befehls sind. Das Fehlerprioritätssignal ist vorzugsweise ein 2-Bit-Steuersignal, das die E-Einheits- Adressenregisterdaten als die Ausgabe des Multiplexers 104 auswählt, wenn gültige Fehleradressen gleichzeitig jeweils im E- und im I-Einheits-Adressenregister 105 bzw. 106 existieren.
- Auf einer ähnlichen Basis werden die Fehlercodeinformationen, die in den Registern 101,103 gespeichert sind, einem Multiplexer 110 zugeführt, der auf der Basis desselben Fehlerprioritätssignals, das zum Multiplexer 108 zugeführt wird, eine Ausgabe 111 erzeugt, die einen der drei 5-Bit-Codes darstellt, die zu ihm eingegeben werden. Die vom Multiplexer 108 erzeugte 32-Bit-Fehleradresse wird durch den Multiplexer 110 bei einem dritten Multiplexer 111 erzeugten 5-Bit-Fehlercode kombiniert, so daß die Fehleradresse und der entsprechende Fehlercode effektiv die Fehlerdaten bilden, die zu der E-Einheit als die Fehlerparameter weitergeleitet werden, die durch die E-Einheit angefragt werden, wenn eine Fehleranzeige bei der Ausführungsstufe erfaßt wird. Es sollte beachtet werden, daß die Fehlerparameter entlang denselben Leitungen weitergeleitet werden, die normalerweise zum Übertragen von Daten von der M-Einheit zur E-Einheit verwendet werden.
- Nimmt man nun Bezug auf Fig. 6, ist dort ein Flußdiagramm 120 gezeigt, das die Verfahrensschritte verkörpert, denen das System bei der Identifizierung und Erzeugung von Speicherzugriffsausnahmen oder 4ehlern unterzogen wird. Beim Schritt 121 wird eine Speicherzugriffsanfrage entsprechend einem der externen Quellenanschlüsse, die an der M-Einheit vorgesehen sind, zur Verarbeitung ausgewählt. Darauffolgend wird beim Schritt 122 die virtuelle Adresse entsprechend der ausgewählten Speicherzugriffsanfrage verarbeitet und wird der Umsetzung von einer virtuellen zu einer physikalischen Adresse unterzogen.
- Beim Schritt 123 wird die Schutzprüfung bezüglich den Informationen (insbesondere des PTE) durchgeführt, die als Ergebnis des Umsetzungsprozesses erzeugt werden. Das Prüfverfahren erfaßt das Vorhandensein der zuvor definierten Gruppe von Speicherzugriffsfehlern. Beim Schritt 123A wird eine Bestimmung diesbezüglich durchgeführt, ob irgendwelche Speicherzugriffsverletzungen oder Fehler existieren oder nicht. Wenn die Antwort beim Schritt 123A positiv ist, wird auf den Schritt 124 zugegriffen. Wenn keine Speicherzugriffsverletzung bei der beim Schritt 123A durchgeführten Prüfung erfaßt wird, fährt das System automatisch mit der Pipeline-Verarbeitung anderer Speicherzugriffsanfragen beim Schritt 131 fort.
- Beim nächsten Schritt 124 wird der bestimmte Typ von Zugriffsfehlern identifiziert und der entsprechende Fehlercode wird durch die Schutz-Prüfeinheit erzeugt. Darauffolgend wird beim Schritt 125 der externe Anschluß, bei dem die Anfrage entsteht, die zur erfaßten Speicherzugriffsverletzung führt, an der M-Einheit deaktiviert. Als nächstes wird beim Schritt 126 eine Bestimmung diesbezüglich durchgeführt, ob die angefragte Speicheranfrage einer Leseoperation entspricht oder nicht.
- Wenn herausgefunden wird, daß die Antwort beim Schritt 126 eine Bestätigung ist, wird der Schritt 127 erreicht, wo das Fehlersignal, das das Vorhandensein einer Speicherzugriffsverletzung anzeigt, durch Aktivieren eines Fehlerbits erzeugt wird, das entlang der Pipeline mit den Ergebnissen der Speicherzugriffsanfrage ausgebreitet wird. Beim Schritt 128 werden die Fehlerparameter einschließlich der virtuellen Fehleradresse und des als Ergebnis des Schutzprüfungsprozesses erzeugten Fehlercodes in entsprechenden Registern in der M-Einheit gespeichert.
- Beim nachfolgenden Schritt 129 wird die Leseoperation beim der umgesetzten physikalischen Adresse entsprechend der virtuellen Adresse, die gegenwärtig verarbeitet wird, durchgeführt. Beim Schritt 130 werden die Lesedaten in Kombination mit dem aktivierten Fehlerbit entlang den nachfolgenden Pipeline-Stufen aktiviert, bis die Daten in der Quellenliste 44 (siehe Fig. 1) innerhalb der E-Einheit gespeichert sind. Darauffolgend fährt das System beim Schritt 131 mit der Pipeline- Verarbeitung von Speicherzugriffsanfragen fort, die zu jenen Anschlüssen am vorderen Ende der M-Einheit gehören, die durch die beim Schritt 125 durchgeführte Deaktivierung nicht beeinflußt worden sind.
- Wenn herausgefunden wird, daß die Antwort beim Schritt 126 negativ ist, ist dies ein Anzeichen dafür, daß die Speicherzugriffsanfrage einer Schreiboperation entspricht und es wird auf einen Schritt 132 zugegriffen, wo das Fehlersignal durch Aktivieren des Fehlerbits erzeugt wird. Beim Schritt 133 werden die Fehlerinformationen mit der virtuellen Fehleradresse und dem Fehlercode, der den Anschluß identifiziert, bei dem die Anfrage entsteht, als Fehlerparameter für eine nachfolgende Anwendung gespeichert. Beim Schritt 134 wird die umgesetzte physikalische Adresse zusammen mit dem aktivierten Fehlerbit in der Schreib- Warteschlangenanordnung 34 (siehe Fig. 1) gespeichert, anstatt daß sie entlang den nachfolgenden Pipeline-Stufen ausgebreitet wird.
- Die aktuelle Schreiboperation muß auf diese Weise nachgestellt werden, weil die Daten, die zu schreiben sind, bis nach der Ausführungsstufe nicht verfügbar sind. Wenn die Daten tatsächlich verfügbar sind, werden die umgesetzten Zielortadressen, die innerhalb der Schreib-Warteschlange gespeichert sind, mit den entsprechenden Daten gepaart, die von der E-Einheit empfangen werden. Demgemäß können Befehle auf angenehme Weise durch Schreiben der E-Einheitsdaten bei der entsprechenden zuvor umgesetzten Zielortadresse abgelegt werden, wodurch die Zeit gespart wird, die sonst bei dieser Stelle beim Durchführen der Umsetzung von einer virtuellen zu einer physikalischen Adresse erforderlich wäre. Nach der Ausführung des Schritts 134 greift das System auf den Schritt 131 zu, wo die Pipeline-Verarbeitung anderer ausstehender Speicherzugriffsanfragen von Anschlüssen fortgeführt wird, die beim Schritt 125 nicht deaktiviert worden sind.
- Nimmt man nun Bezug auf Fig. 7 ist dort ein Flußdiagramm gezeigt, das die Ablauffolge von Operationen darstellt, die beim Erfassen des Vorhandenseins und beim Antworten auf Fehlerinformationen beteiligt sind. Wie es darin gezeigt ist, wird der Erfassungs- und Antwortprozeß für Speicherleseoperationen beim Schritt 141 initiiert. Beim Schritt 142 werden die Lesedaten, die den Quellenoperanden darstellen, aus der Quellenliste 44 (Fig. 1) in der E-Einheit 20 hervorgeholt. Beim Schritt 143 wird das zu den gespeicherten Daten gehörende Fehlerbit untersucht, und es wird eine Bestimmung beim Schritt 144 diesbezüglich durchgeführt, ob das Fehlerbit aktiviert ist oder nicht. Wenn herausgefunden wird, daß das Fehlerbit nicht aktiviert ist, wird auf einen schritt 145 zugegriffen, wo der Befehl auf eine normale Weise unter Verwendung der Daten ausgeführt wird, die aus der Quellenliste als der Operand für die Leseoperation hervorgeholt werden.
- Wenn jedoch herausgefunden wird, daß die Antwort beim schritt 144 positiv ist, d.h. das Fehlerbit tatsächlich aktiviert ist, wird auf einen Schritt 146 zugegriffen, wo die Mikromaschine des Systems übersprungen wird, so daß eine Ausführung des Mikrocodes angehalten wird, der den Pipeline-Befehlsausführungsprozeß steuert. Darauffolgend greift die E-Einheit 20 beim Schritt 147 auf die M-Einheit 16 zu und fordert, daß die in den Fehleradressenregistern und den Fehlercoderegistern innerhalb der M-Einheit gespeicherten entsprechenden Fehlerparameter zur E- Einheit herüber übertragen werden. Auf ein Empfangen der Fehlerparameter von der M-Einheit hin wird der Fehlercode durch die E-Einheit auf eine herkömmliche Weise decodiert, und eine entsprechende einer Gruppe von zuvor definierten Programmsprungroutinen wird zur Verarbeitung des bestimmten Typs von Speicherzugriffsverletzung aufgerufen, der erfaßt worden ist. Die Definition solcher Programmsprungroutinen zum Behandeln von Überschußverletzungen ist herkömmlich und wird demgemäß hier nicht detailliert beschrieben.
- Es sollte beachtet werden, daß das Durchführen eines nicht programmierten Programmsprungs der System-Mikromaschine beim schritt 146 nur dann auftritt, wenn ein Befehl, der eine Speicherzugriffsverletzung zum Ergebnis hat, die Ausführungsstufe in der E-Einheit erreicht hat und die entsprechenden Lese- oder Schreibdaten absolut wesentlich für eine Ausführung des Befehls sind. Das Ausnahmeverarbeitungsschema dieser Erfindung liefert demgemäß einen bemerkenswerten Vorteil gegen(iber herkömmlichen Techniken, wo Programmsprungroutinen in Antwort auf Zugriffsverletzungen an der Stelle in der Pipeline-Stufe aufgerufen werden, wo die Verletzung erfaßt wird. Bei derartigen Schemen werden die Verarbeitungsaktivitäten aller nachfolgenden Pipeline-Stufen unterbrochen. Zusätzlich resultieren derartige herkömmliche Fehlerverarbeitungsschernen in einer wesentlichen Verschwendung von Zeit, weil Programmsprungroutinen selbst für jene Operationen aufgerufen werden, die möglicherweise vor einer Ausführung des Befehls gelöscht werden, und zwar als ein Ergebnis von Ereignissen, die bei nachfolgenden Stufen der Pipeline auftreten. Diese Probleme werden durch die vorliegende Erfindung vermieden, weil die gespeicherten Fehlerparameter nur an der Stelle der letzten Ausführung des Befehls erneut aufgerufen werden, so daß Programmsprungroutinen nur dann aufgerufen werden, wenn es wesentlich ist, daß die Speicherzugriffsausnahme vor einer Ausführung des Befehls verarbeitet wird.
- Im Flußdiagramm der Fig. 7 wird die Verarbeitung von Fehlerinformationen in dem Fall von Speicherschreiboperationen beim Schritt 150 initiiert, und dem folgt beim Schritt 151 das Hervorholen von Schreibdaten, die durch die E-Einheit erzeugt werden und die in das Segment des Speichers geschrieben werden müssen, dessen Adresse zuvor in der M-Einheit gespeichert worden ist. Beim Schritt 152 wird der entsprechende Adresseneintrag in der Schreib-Warteschlangenanordnung 34 (siehe Fig. 1) aus der M-Einheit hervorgeholt. Darauffolgend wird beim Schritt 153 das auch in Zusammenhang mit dem Schreib-Warteschlangeneintrag gespeicherte Fehlerbit untersucht. Beim Schritt 154 wird eine Bestimmung diesbezüglich durchgeführt, ob das Fehlerbit aktiviert worden ist oder nicht. Wenn herausgefunden wird, daß die Antwort negativ ist, greift das System auf den Schritt 155 zu, wo eine Ausführung des Befehls auf eine normale Weise unter Verwendung des hervorgeholten Adresseneintrags aus der Schreib-Warteschlange als Zielortoperanden weiter verarbeitet wird. Jedoch dann, wenn beim Schritt 154 tatsächlich herausgefunden wird, daß das Fehlerbit aktiviert ist, führt das System die Schritte 146, 147, 148 und 149 auf die Weise aus, die identisch zu jener ist, die bei der Verarbeitung von Speicherleseoperationen verwendet wird. Genauer gesagt erfolgt ein nicht programmierter Programmsprung zur System-Mikromaschine, die zuvor in der M- Einheit gespeicherten Fehlerparameter werden erneut aufgerufen, der darin enthaltene Fehlercode wird decodiert, und die entsprechende Prögrammsprungroutine wird aufgerufen, um den Fehler zu verarbeiten.
- Das oben beschriebene Ausnahmebehandlungsschema ist insbesondere dafür geeignet, Ausnahmeinformationen effizient zu behandeln, denen bei der Verarbeitung von Speicherreferenzen begegnet wird, die für eine nachfolgende Befehlsausführung erforderlich sein können oder nicht, und zwar selbst dann, wenn der Befehl beendet ist (wie es der Fall für eine Ausführung von Operationen mit einem Bit- Feld variabler Länge der Fall ist, die durch Basis-, Positions- und Größenoperanden spezifiziert sind). Wo ein Adressenumsetzungsproblem in der Erzeugung von Ausnahmeinformationen nur für die Basisadresse resultiert, während die entsprechende reale Feldadresse keine Zugriffsverletzung aufweist, wird der Anschluß, der der Pipeline-Stufe entspricht, wo der Ausnahme begegnet wird, nicht deaktiviert. Statt dessen werden die Ausnahmeinformationen bei der Ausführungsstufe pipelinemäßig verarbeitet&sub1; wo eine Bestimmung des realen Feldes durchgeführt wird. Wenn herausgefunden wird, daß das Feld an dieser Stelle nicht aktiv ist, werden die Fehlerinformationen entlassen und die realen Feiddaten werden geholt. Bei dieser Anordnung können andere Operandendaten in der Zwischenzeit ohne irgendwelche Ablaufprobleme hervorgeholt werden, da der Befehlsablauf die Richtung nicht ändert.
Claims (15)
1.Pipeline-Computersystem, das folgendes enthält: eine Speichereinheit (16),
eine Befehlseinheit (18) und eine Ausführungseinheit (20), die zum Bilden
einer Befehlspipeline zum Verarbeiten von Befehlen miteinander verbunden
sind; wobei die Befehlseinheit folgendes enthält: eine Einrichtung (26-32) zum
Holen und Decodieren von Befehlen, um Operationscodes und Quellen- und
Zielortoperandenspezifizierer zu erhalten, und eine Einrichtung (33) zum
Holen von Quellenoperanden, die durch die Quellenoperandenspezifizierer
spezifiziert werden; wobei die Ausführungseinheit folgendes enthält: eine
Einrichtung (48) zum Durchführen von Operationen, die durch die
Operationscodes spezifiziert werden, und zwar auf die Quellenoperanden hin, eine
Einrichtung (44) zum Holen zusätzlicher Operanden, und eine Einrichtung (52)
zum Ablegen der Ergebnisse von Operationen; wobei die Speichereinheit
folgendes enthält: eine erste Anschlußstelle (24A), die mit der Einrichtung zum
Holen von Befehlen in der Befehlseinheit verbunden ist, eine zweite
Anschlußstelle (24B), die mit der Einrichtung zum Holen von Quellenoperanden
in der Befehlseinheit verbunden ist, eine dritte Anschlußstelle (24C), die mit
der Einrichtung zum Holen zusätzlicher Operanden in der Ausführungseinheit
verbunden ist, eine Einrichtung (24) zum Durchführen einer Umsetzung von
einer virtuellen zu einer physikalischen Adresse mit einem Umsetzungspuffer,
und eine Einrichtung (96) zum Erfassen, wenn eine virtuelle Adresse eine
Speicherzugriffsverletzung verursacht; wobei die Ausführungseinheit eine
Einrichtung (48) enthält, die auf die Speicherzugriffsverletzung antwortet, zum
Aufrufen eines Ausnahmebehandlungsprogramms;
dadurch gekennzeichnet, daß die Speichereinheit folgendes enthält: eine
Umsetzungspuffer-Arrangiereinheit (56) zum Durchführen einer Umsetzung
einer virtuellen in eine physikalische Adresse in Antwort auf einen Nichttreffer
im Umsetzungspuffer, und eine Schreibwarteschlange (34) zum Speichern
physikalischer Adressen der Speicherzielortspezifizierer; die Befehispipeline
zwischen der Befehiseinheit und der Ausführungseinheit eine
Quellenoperandenwarteschlange (44) zum Speichern von Quellenoperanden enthält; und
dadurch, daß das Pipeline-Computersystem weiterhin folgendes enthält: eine
Einrichtung (112) zum pipelinemäßigen Verarbeiten von Fehlerinformation
über Speicherzugriffsverletzungen von der Speichereinheit zur
Ausführungseinheit, die durch die virtuellen Adressen von der Einrichtung zum Holen von
Befehlen und der Einrichtung zum Holen von Quellenoperanden verursacht
worden sind, wobei die Fehlerinformation parallel zur Befehispipeline
pipelinemäßig verarbeitet wird.
2. Pipeline-Computersystem nach Anspruch 1, wobei die Einrichtung zum
Erzeugen einer Einrichtung zum Erzeugen von Flag-Information (96A) enthält,
die das Vorhandensein einer Speicherzugriffsverletzung anzeigt, einen
Fehlercode (101-103), der den Typ der erfaßten Speicherzugriffsverletzung
identifiziert, und eine Fehleradresse (105-107), die der virtuellen Adresse
entspricht, die zu der erfaßten Verletzung gehört.
3. Pipeline-Computersystem nach Anspruch 2, wobei die Speichereinheit eine
Einrichtung (100,104) zum Speichern des Fehlercodes und der
Fehleradresse enthält, und wobei die Einrichtung zum pipelinemäßigen Verarbeiten eine
Einrichtung zum pipelinemäßigen Verarbeiten der Flag-Information enthält.
4. Pipeline-Computersystem nach Anspruch 3, wobei die Flag-Information für
eine Speicherzugriffsverletzung, die durch eine virtuelle Adresse eines
Quellenoperanden verursacht wird, durch die die Quellenoperandenwarteschlange
pipelinemäßig verarbeitet wird, und die Ausführungseinheit eine Einrichtung
zum Untersuchen der Flag-Information von der
Quellenoperandenwarteschlange enthält, wenn ein Quellenoperand erhalten wird, und zum Aufrufen
eines Ausnahmebehandlungsprogramms, wenn die Flag-Information von der
Quellenoperandenwarteschlange eine Speicherzugriffsverletzung anzeigt.
5. Pipeline-Computersystem nach einem der Ansprüche 3 bis 4, wobei die
Speichereinheit eine Einrichtung zum Speichern der Flag-Information und der
umgesetzten Adresse für einen Speicherzielortoperanden in der
Schreibwarteschlange enthält.
6. Pipeline-Computersystem nach Änspruch 5, wobei die Flag-Information für
eine Speicherzugriffsverletzung, die durch eine virtuelle Adresse eines
Zielortoperanden verursacht wird, in der Schreibwarteschlange gespeichert wird,
und die Ausführungseinheit eine Einrichtung zum Untersuchen der Flag-
Information in der Schreibwarteschlange enthält, wenn ein Ergebnis an einer
Speicherstelle abgelegt wird, die durch einen Speicherzielortoperanden
spezifiziert wird, und zum Aufrufen eines Ausnahmebehandlungsprogramms,
wenn die Flag-Information in der Speicherschreibwarteschlange eine
Speicherzugriffsverletzung anzeigt.
7. Pipeline-Computersystem nach einem der Ansprüche 1 bis 6, wobei die
Speichereinheit weiterhin eine Einrichtung (66) enthält, die auf das Erfassen einer
Speicherzugriffsverletzung antwortet, zum Erzeugen einer Fehlerinformation
und zum Verhindern der Verarbeitung zusätzlicher Speicheranfragen von der
jeweiligen Einrichtung zum Holen, die die Speicherzugriffsverletzung
verursacht hat.
8. Verfahren zum Verarbeiten von Speicherzugriffsausnahmen, denen man bei
Speicherzugriffsanfragen begegnet, wobei das Verfahren folgendes enthält:
Speicherlese- oder -schreiboperationen aus vorangehenden Pipelinestufen
während einer Pipelinebefehlsausführung in einem Computersystem, das auf
einem virtuellen Speicher mit einer Speichereinheit (16), einer Befehlseinheit
(18) und einer Ausführungseinheit (20) basiert, die zum Bilden einer
Befehlspipeline zum Verarbeiten von Befehlen miteinander verbunden sind; wobei
die Befehlseinheit folgendes enthält: eine Einrichtung (26-32) zum Holen und
Decodieren von Befehlen, um Operationscodes und Quellen- und
Zielortoperandenspezifizierer zu erhalten, und eine Einrichtung (33) zum Holen von
Quellenoperanden, die durch die Quellenoperandenspezifizierer spezifiziert
werden; wobei die Ausführungseinheit folgendes enthält: eine Einrichtung
(48) zum Durchführen von Operationen, die durch die Operationscodes
spezifiziert werden, und zwar auf die Quellenoperanden hin, eine Einrichtung (44)
zum Holen zusätzlicher Operanden und eine Einrichtung (52) zum Ablegen
der Ergebnisse von Operationen; wobei die Speichereinheit folgendes enthält:
eine erste Anschlußstelle (24A), die mit der Einrichtung zum Holen von
Befehlen in der Befehlseinheit verbunden ist, eine zweite Anschlußstelle (24B), die
mit der Einrichtung zum Holen von Quellenoperanden in der Befehlseinheit
verbunden ist, eine dritte Anschlußstelle (24C), die mit der Einrichtung zum
Holen zusätzlicher Operanden in der Ausführungseinheit verbunden ist, eine
Einrichtung (24) zum Durchführen einer Umsetzung von einer virtuellen zu
einer physikalischen Adresse mit einem Umsetzungspuffer und eine Einrichtung
(96) zum Erfassen, wenn eine virtuelle Adresse eine
Speicherzugriffsverletzung verursacht; wobei die Ausführungseinheit eine Einrichtung (48) enthält,
die auf die Speicherzugriffsverletzung antwortet, zum Aufrufen eines
Ausnahmebehandlungsprogramms;
dadurch gekennzeichnet, daß die Speichereinheit eine Umsetzungspuffer-
Arrangiereinheit (56) enthält, die in Antwort auf einen Nichttreffer im
Umsetzungspuffer eine Umsetzung von einer virtuellen zu einer physikalischen
Adresse durchführt, und eine Schreibwarteschlange (34), die physikalische
Adressen von Speicherzielortspezifizierern speichert; die Befehlspipeline
zwischen der Befehlseinheit und der Ausführungseinheit eine
Quellenoperandenwarteschlange (44) enthält, die Quellenoperanden speichert; und das
Verfahren folgende Schritte enthält:
Erzeugen von Fehlerinformation in der Speichereinheit in Antwort auf das
Vorhandensein einer oder mehrerer einer zuvor definierten Gruppe von
Speicherzugriffsverletzungen, die durch virtuelle Adressen verursacht werden, die
durch die Speichereinheit an ihrer ersten, zweiten und dritten Anschlußstelle
empfangen werden;
von der Speichereinheit zur Ausführungseinheit pipelinemäßiges Verarbeiten
ausgewählter Segmente der Fehlerinformation, die in der Speichereinheit in
Antwort auf das Vorhandensein von Speicherzugriffsverletzungen erzeugt
wird, die durch virtuelle Adressen verursacht werden, die durch die
Speichereinheit an ihrer ersten und ihrer zweiten Anschlußstelle empfangen
werden, wobei die Fehlerinformation parallel zur Befehlspipeline pipelinemäßig
verarbeitet wird; wobei die Ausführungseinheit auch eine Fehlerinformation
über Speicherzugriffsverletzungen empfängt, die durch virtuelle Adressen
verursacht werden, die durch die Speichereinheit an ihrer dritten
Anschlußstelle empfangen werden; und
Erfassen des Vorhandenseins der Pipeline-Segmente von Fehlerinformation,
wenn die Pipeline-Segmente der Fehlerinformation die Ausführungsstufe
erreichen, und in Antwort darauf, Aufrufen eines zuvor definierten
Ausnahmebehandlungsprogramms entsprechend der Speicherzugriffsverletzung, die zu
der erfaßten Fehlerinformation gehört.
9. Verfahren nach Anspruch 8, wobei die Fehlerinformation Flag-Information
enthält, die das Vorhandensein einer Speicherzugriffsverletzung anzeigt,
einen Fehlercode, der den Typ der erfaßten Speicherzugriffsverletzung
identifiziert, und eine Fehleradresse, die der virtuellen Adresse entspricht, die zur
erfaßten Verletzung gehört.
10. Verfahren nach Anspruch 9, daß ein Speicher des Fehlercodes und der
Fehleradresse in der Speichereinheit enthält, und ein pipelinemäßiges
Verarbeiten oder Durchlassen der Flag-Information zur Ausführungseinheit.
11. Verfahren nach Anspruch 10, wobei die Flag-Information für eine
Speicherzugriffsverletzung, die durch eine virtuelle Adresse eines Quellenoperanden
verursacht wird, durch die Quellenoperandenwartesch lange pipelinemäßig
verarbeitet wird, und die Ausführungseinheit die Flag-Information von der
Quellenoperandenwarteschlange untersucht, wenn ein Quellenoperand
erhalten wird, und ein Ausnahmebehandlungsprogramm aufruft, wenn die Flag-
Information von der Quellenoperandenwarteschlange eine
Speicherzugriffsverletzung anzeigt.
12. Verfahren nach einem der Ansprüche 9 bis 11, wobei die Speichereinheit die
Flag-Information und die umgesetzte Adresse für einen
Speicherzielortoperanden in der Schreibwarteschlange speichert.
13. Verfahren nach Anspruch 12, wobei die Flag-Information für eine
Speicherzugriffsverletzung, die durch eine virtuelle Adresse eines Zielortoperanden
verursacht wird, in der Schreibwarteschlange gespeichert wird, und die
Ausführungseinheit die Flag-Information in der Schreibwarteschlange untersucht,
wenn ein Ergebnis an einer Speicherstelle abgelegt wird, die durch einen
Speicherzielortoperanden spezifiziert wird, und ein
Ausnahmebehandlungsprogramm aufruft, wenn die Flag-Information in der
Speicherschreibwarteschlange eine Speicherzugriffsverletzung anzeigt.
14. Verfahren nach einem der Ansprüche 8 bis 13, wobei die Speichereinheit auf
eine Speicherzugriffsverletzung antwortet, die durch eine virtuelle Adresse
verursacht wird, die durch die Speichereinheit an ihrer ersten, zweiten oder
dritten Anschlußstelle empfangen wird, durch Verhindern der Verarbeitung
zusätzlicher Speicheranfragen, die an der Anschlußstelle empfangen werden,
die die Speicherzugriffsverletzung verursacht hat.
15. Verfahren nach einem der Ansprüche 8 bis 14, wobei die Ausführungseinheit
das Ausnahmebehandlungsprogramm an einer Stelle aufruft, wo der Befehl,
der den Fehler verursacht hat, in Abwesenheit der Speicherzugriffsverletzung
ausgegeben worden wäre.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/306,866 US4985825A (en) | 1989-02-03 | 1989-02-03 | System for delaying processing of memory access exceptions until the execution stage of an instruction pipeline of a virtual memory system based digital computer |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69031433D1 DE69031433D1 (de) | 1997-10-23 |
DE69031433T2 true DE69031433T2 (de) | 1998-04-16 |
Family
ID=23187213
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69031433T Expired - Lifetime DE69031433T2 (de) | 1989-02-03 | 1990-01-31 | Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher |
Country Status (7)
Country | Link |
---|---|
US (1) | US4985825A (de) |
EP (1) | EP0381470B1 (de) |
JP (1) | JPH02234248A (de) |
AT (1) | ATE158423T1 (de) |
AU (1) | AU631420B2 (de) |
CA (1) | CA1323701C (de) |
DE (1) | DE69031433T2 (de) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5297263A (en) * | 1987-07-17 | 1994-03-22 | Mitsubishi Denki Kabushiki Kaisha | Microprocessor with pipeline system having exception processing features |
US5197133A (en) * | 1988-12-19 | 1993-03-23 | Bull Hn Information Systems Inc. | Control store addressing from multiple sources |
US5075844A (en) * | 1989-05-24 | 1991-12-24 | Tandem Computers Incorporated | Paired instruction processor precise exception handling mechanism |
US5329629A (en) * | 1989-07-03 | 1994-07-12 | Tandem Computers Incorporated | Apparatus and method for reading, writing, and refreshing memory with direct virtual or physical access |
JP2504235B2 (ja) * | 1989-11-16 | 1996-06-05 | 三菱電機株式会社 | デ―タ処理装置 |
JPH03185530A (ja) * | 1989-12-14 | 1991-08-13 | Mitsubishi Electric Corp | データ処理装置 |
US5546551A (en) * | 1990-02-14 | 1996-08-13 | Intel Corporation | Method and circuitry for saving and restoring status information in a pipelined computer |
US5450564A (en) * | 1990-05-04 | 1995-09-12 | Unisys Corporation | Method and apparatus for cache memory access with separate fetch and store queues |
JP2570466B2 (ja) * | 1990-05-18 | 1997-01-08 | 日本電気株式会社 | 情報処理装置 |
CA2045789A1 (en) * | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Granularity hint for translation buffer in high performance processor |
US5251310A (en) * | 1990-06-29 | 1993-10-05 | Digital Equipment Corporation | Method and apparatus for exchanging blocks of information between a cache memory and a main memory |
GB9114513D0 (en) * | 1991-07-04 | 1991-08-21 | Univ Manchester | Condition detection in asynchronous pipelines |
US5493687A (en) | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
US5961629A (en) * | 1991-07-08 | 1999-10-05 | Seiko Epson Corporation | High performance, superscalar-based computer system with out-of-order instruction execution |
US5539911A (en) | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
EP0636256B1 (de) * | 1992-03-31 | 1997-06-04 | Seiko Epson Corporation | Befehlsablauffolgeplanung von einem risc-superskalarprozessor |
DE69308548T2 (de) * | 1992-05-01 | 1997-06-12 | Seiko Epson Corp | Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor. |
JPH0667980A (ja) * | 1992-05-12 | 1994-03-11 | Unisys Corp | 4ブロックキャッシュメモリへのアクセスを最適化するためのキャッシュ論理システムおよびメインフレームコンピュータの高速キャッシュメモリへのアクセス時のダブルミスを防ぐ方法 |
WO1994008287A1 (en) | 1992-09-29 | 1994-04-14 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US6735685B1 (en) * | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
US5628021A (en) * | 1992-12-31 | 1997-05-06 | Seiko Epson Corporation | System and method for assigning tags to control instruction processing in a superscalar processor |
EP1107111A3 (de) * | 1992-12-31 | 2002-02-06 | Seiko Epson Corporation | System und Verfahren zur Änderung der Namen von Registern |
US6219773B1 (en) | 1993-10-18 | 2001-04-17 | Via-Cyrix, Inc. | System and method of retiring misaligned write operands from a write buffer |
US5630149A (en) * | 1993-10-18 | 1997-05-13 | Cyrix Corporation | Pipelined processor with register renaming hardware to accommodate multiple size registers |
US5615402A (en) * | 1993-10-18 | 1997-03-25 | Cyrix Corporation | Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch |
US5740398A (en) * | 1993-10-18 | 1998-04-14 | Cyrix Corporation | Program order sequencing of data in a microprocessor with write buffer |
US5471598A (en) * | 1993-10-18 | 1995-11-28 | Cyrix Corporation | Data dependency detection and handling in a microprocessor with write buffer |
SG48907A1 (en) * | 1993-12-01 | 1998-05-18 | Intel Corp | Exception handling in a processor that performs speculative out-of-order instruction execution |
DE4434895C2 (de) * | 1993-12-23 | 1998-12-24 | Hewlett Packard Co | Verfahren und Vorrichtung zur Behandlung von Ausnahmebedingungen |
US5555399A (en) * | 1994-07-07 | 1996-09-10 | International Business Machines Corporation | Dynamic idle list size processing in a virtual memory management operating system |
US5640526A (en) * | 1994-12-21 | 1997-06-17 | International Business Machines Corporation | Superscaler instruction pipeline having boundary indentification logic for variable length instructions |
US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
US5933651A (en) * | 1995-09-29 | 1999-08-03 | Matsushita Electric Works, Ltd. | Programmable controller |
US6101590A (en) | 1995-10-10 | 2000-08-08 | Micro Unity Systems Engineering, Inc. | Virtual memory system with local and global virtual address translation |
US5778208A (en) * | 1995-12-18 | 1998-07-07 | International Business Machines Corporation | Flexible pipeline for interlock removal |
US5802573A (en) * | 1996-02-26 | 1998-09-01 | International Business Machines Corp. | Method and system for detecting the issuance and completion of processor instructions |
US6061773A (en) * | 1996-05-03 | 2000-05-09 | Digital Equipment Corporation | Virtual memory system with page table space separating a private space and a shared space in a virtual memory |
JP3849951B2 (ja) * | 1997-02-27 | 2006-11-22 | 株式会社日立製作所 | 主記憶共有型マルチプロセッサ |
US6219758B1 (en) * | 1998-03-24 | 2001-04-17 | International Business Machines Corporation | False exception for cancelled delayed requests |
US6233668B1 (en) | 1999-10-27 | 2001-05-15 | Compaq Computer Corporation | Concurrent page tables |
US6766440B1 (en) * | 2000-02-18 | 2004-07-20 | Texas Instruments Incorporated | Microprocessor with conditional cross path stall to minimize CPU cycle time length |
US6947884B2 (en) * | 2000-03-02 | 2005-09-20 | Texas Instruments Incorporated | Scan interface with TDM feature for permitting signal overlay |
JP4522548B2 (ja) * | 2000-03-10 | 2010-08-11 | 富士通フロンテック株式会社 | アクセス監視装置及びアクセス監視方法 |
DE10108107A1 (de) * | 2001-02-21 | 2002-08-29 | Philips Corp Intellectual Pty | Schaltungsanordnung sowie Verfahren zum Erkennen einer Zugriffsverletzung bei einer Mikrokontrolleranordnung |
US7310800B2 (en) * | 2001-02-28 | 2007-12-18 | Safenet, Inc. | Method and system for patching ROM code |
US7684447B2 (en) * | 2004-12-23 | 2010-03-23 | Agilent Technologies, Inc. | Sequencer and method for sequencing |
US7752427B2 (en) * | 2005-12-09 | 2010-07-06 | Atmel Corporation | Stack underflow debug with sticky base |
US20080181210A1 (en) * | 2007-01-31 | 2008-07-31 | Finisar Corporation | Processing register values in multi-process chip architectures |
US9507725B2 (en) * | 2012-12-28 | 2016-11-29 | Intel Corporation | Store forwarding for data caches |
US20140189246A1 (en) * | 2012-12-31 | 2014-07-03 | Bin Xing | Measuring applications loaded in secure enclaves at runtime |
KR101978984B1 (ko) * | 2013-05-14 | 2019-05-17 | 한국전자통신연구원 | 프로세서의 오류를 검출하는 장치 및 방법 |
US10061675B2 (en) * | 2013-07-15 | 2018-08-28 | Texas Instruments Incorporated | Streaming engine with deferred exception reporting |
US9311508B2 (en) * | 2013-12-27 | 2016-04-12 | Intel Corporation | Processors, methods, systems, and instructions to change addresses of pages of secure enclaves |
US20160048679A1 (en) * | 2014-08-18 | 2016-02-18 | Bitdefender IPR Management Ltd. | Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine |
US20160085695A1 (en) | 2014-09-24 | 2016-03-24 | Intel Corporation | Memory initialization in a protected region |
US10528353B2 (en) | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor |
US10467008B2 (en) * | 2016-05-31 | 2019-11-05 | International Business Machines Corporation | Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor |
US10248555B2 (en) | 2016-05-31 | 2019-04-02 | International Business Machines Corporation | Managing an effective address table in a multi-slice processor |
US10747679B1 (en) * | 2017-12-11 | 2020-08-18 | Amazon Technologies, Inc. | Indexing a memory region |
US11860795B2 (en) * | 2020-02-18 | 2024-01-02 | Arm Limited | Device, system, and method of determining memory requirements and tracking memory usage |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB1443777A (en) * | 1973-07-19 | 1976-07-28 | Int Computers Ltd | Data processing apparatus |
JPS6028015B2 (ja) * | 1980-08-28 | 1985-07-02 | 日本電気株式会社 | 情報処理装置 |
JPS57185545A (en) * | 1981-05-11 | 1982-11-15 | Hitachi Ltd | Information processor |
US4757445A (en) * | 1983-09-12 | 1988-07-12 | Motorola, Inc. | Method and apparatus for validating prefetched instruction |
US4710866A (en) * | 1983-09-12 | 1987-12-01 | Motorola, Inc. | Method and apparatus for validating prefetched instruction |
DE3369015D1 (en) * | 1983-09-16 | 1987-02-12 | Ibm Deutschland | Arrangement in the command circuit of a pipe-line processor for instruction interrupt and report |
US5063497A (en) * | 1987-07-01 | 1991-11-05 | Digital Equipment Corporation | Apparatus and method for recovering from missing page faults in vector data processing operations |
US4875160A (en) * | 1988-07-20 | 1989-10-17 | Digital Equipment Corporation | Method for implementing synchronous pipeline exception recovery |
-
1989
- 1989-02-03 US US07/306,866 patent/US4985825A/en not_active Expired - Lifetime
- 1989-09-19 CA CA000611918A patent/CA1323701C/en not_active Expired - Fee Related
-
1990
- 1990-01-16 JP JP2007008A patent/JPH02234248A/ja active Granted
- 1990-01-31 AT AT90301002T patent/ATE158423T1/de not_active IP Right Cessation
- 1990-01-31 EP EP90301002A patent/EP0381470B1/de not_active Expired - Lifetime
- 1990-01-31 DE DE69031433T patent/DE69031433T2/de not_active Expired - Lifetime
- 1990-04-27 AU AU53943/90A patent/AU631420B2/en not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
CA1323701C (en) | 1993-10-26 |
US4985825A (en) | 1991-01-15 |
DE69031433D1 (de) | 1997-10-23 |
AU5394390A (en) | 1991-12-19 |
JPH0526219B2 (de) | 1993-04-15 |
EP0381470A2 (de) | 1990-08-08 |
EP0381470A3 (de) | 1992-11-19 |
JPH02234248A (ja) | 1990-09-17 |
ATE158423T1 (de) | 1997-10-15 |
AU631420B2 (en) | 1992-11-26 |
EP0381470B1 (de) | 1997-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69031433T2 (de) | Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher | |
DE69031183T2 (de) | Verfahren und Anordnung zur Kontrolle der Umwandlung virtueller Adressen in physikalische Adressen in einem Computersystem | |
DE69331448T2 (de) | Dataprozessor mit einem Cachespeicher | |
DE69131637T2 (de) | Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz | |
DE69031139T2 (de) | Verfahren und Vorrichtung zum Ordnen und in Warteschlangesetzen mehrerer Speicherzugriffsanforderungen | |
DE69127242T2 (de) | Sicherung der Datenintegrität in einem Multipipelineprozessorsystem | |
DE69130379T2 (de) | Datenvorausladebefehl in einem Prozessor mit reduziertem Befehlssatz | |
DE69223386T2 (de) | Umsetzungspuffer für virtuelle maschinen mit adressraumübereinstimmung | |
DE68926059T2 (de) | Organisation einer integrierten Cache-Einheit zur flexiblen Verwendung beim Entwurf von Cache-Systemen | |
DE69227465T2 (de) | Cpu mit pipeline-einheit und effektiv-adressenrechnungseinheit mit möglichkeit zur beibehaltung von virtuellen operandenadressen. | |
DE69129881T2 (de) | Verzweigung in einem Pipeline-Prozessor | |
DE69901910T2 (de) | Verfahren und gerät zur rechnung von indirekten verzweigungszieladressen | |
DE68928513T2 (de) | Verfahren zur Vorverarbeitung mehrerer Befehle | |
DE68928812T2 (de) | Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu | |
DE112004002848B4 (de) | Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor | |
DE69904479T2 (de) | Registerumbenennung wobei übertragungsinstruktionen mittels umbenennungsschildernzeichen realisiert werden | |
DE3688978T2 (de) | Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen. | |
DE68917325T2 (de) | Verfahren und Vorrichtung zum Schreiben gegenseitiger verriegelter Variablen in einen integrierten Cachespeicher. | |
DE68928677T2 (de) | Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle | |
DE69233493T2 (de) | RISC-Prozessor mit erweiterbarer Architektur | |
DE69130138T2 (de) | Sprungvorhersageeinheit für hochleistungsfähigen Prozessor | |
DE68922326T2 (de) | Speicherwarteschlange für eine festgekoppelte Mehrprozessorenkonfiguration mit einem zweistufigen Cache-Pufferspeicher. | |
DE69329778T2 (de) | System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor | |
DE69033331T2 (de) | Sprungvorhersage | |
DE69230554T2 (de) | Risc-mikroprozessorarchitektur mit schnellem unterbrechungs- und ausnahmemodus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8328 | Change in the person/name/address of the agent |
Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN |