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 Speicher

Info

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
Application number
DE69031433T
Other languages
English (en)
Other versions
DE69031433D1 (de
Inventor
Mark A Firstenberg
David B Fite
Tryggve Fossum
Ricky C Hetherington
Dwight P Manley
Francis X Mckeen
John E Murray
Ronald M Salett
David A Webb
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of DE69031433D1 publication Critical patent/DE69031433D1/de
Application granted granted Critical
Publication of DE69031433T2 publication Critical patent/DE69031433T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0706Error 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/073Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address 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.
DE69031433T 1989-02-03 1990-01-31 Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher Expired - Lifetime DE69031433T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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