DE69031183T2 - Verfahren und Anordnung zur Kontrolle der Umwandlung virtueller Adressen in physikalische Adressen in einem Computersystem - Google Patents

Verfahren und Anordnung zur Kontrolle der Umwandlung virtueller Adressen in physikalische Adressen in einem Computersystem

Info

Publication number
DE69031183T2
DE69031183T2 DE69031183T DE69031183T DE69031183T2 DE 69031183 T2 DE69031183 T2 DE 69031183T2 DE 69031183 T DE69031183 T DE 69031183T DE 69031183 T DE69031183 T DE 69031183T DE 69031183 T2 DE69031183 T2 DE 69031183T2
Authority
DE
Germany
Prior art keywords
address
memory
virtual
translation buffer
addresses
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
DE69031183T
Other languages
English (en)
Other versions
DE69031183D1 (de
Inventor
David B Fite
Tryggve Fossum
Ricky C Hetherington
Dwight P Manley
John E Murray
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 DE69031183D1 publication Critical patent/DE69031183D1/de
Application granted granted Critical
Publication of DE69031183T2 publication Critical patent/DE69031183T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Image Input (AREA)

Description

  • Diese Erfindung betrifft allgemein ein Gerät zum Steuern der Umsetzung von virtuellen Speicheradressen in physikalische Speicheradressen in einem virtuellen Speicherprozessorsystem, und insbesondere einen Umsetzungspuffer hoher Geschwindigkeit und eine zugehörige Fixiereinheit zum Unterhalten eines Caches von vor kurzem benutzten Umsetzungen, um eine Umsetzungsgeschwindigkeit zu erhöhen.
  • Herkömmliche digitale Computer verarbeiten Daten gemäß "Holen-Ausführen"- Zyklen, in welchen Befehle vom Speicher geholt und ausgeführt werden. Jeder Zyklus kann in Abhängigkeit vom spezifischen Befehl eine Anzahl von Zwischenschritten enthalten. Ein Befehl kann beispielsweise Operanden spezifizieren, die vom Speicher geholt werden müssen, bevor der Befehl ausgeführt wird.
  • In kleinen Computern mit niedriger Geschwindigkeit wird der Holen-Ausführen- Zyklus für einen Befehl gleichzeitig durchgeführt. Beispielsweise tritt das Holen des nächsten Befehls nicht auf, bis das Ergebnis des aktuellen Befehls gespeichert worden ist. Die zu jedem Schritt gehörende Hardware wird im Holen-Ausführen- Zyklus nur während jenem entsprechenden Schritt benutzt und bleibt dann leer, bis sie für den nächsten Befehl benötigt wird.
  • Größere Computer verkürzen ihre Ausführungszeit durch vorheriges Holen von Befehlen, so daß der nächste Befehl zum Decodieren bereit ist, sobald das Ergebnis des aktuellen Befehls gespeichert ist. Dies ist eine einfache Form einer "Pipelineverarbeitung", wobei der erste Schritt im Zyklus für den nächsten Befehl zur gleichen Zeit durchgeführt wird, zu der der letzte Schritt für den aktuellen Befehl durchgeführt wird. Diese einfache Form einer Pipelineverarbeitung verkürzt die Gesamtzeit zum Durchführen der Befehle.
  • Die am weitesten entwickelten Computer verarbeiten die gesamte Folge von Befehlsaktivitäten pipelinemäßig. Ein erstes Beispiel dafür ist der Computer VAX 8600, der von Digital Equipment Corporation, 111 Powdermill Road, Maynard, MA, 97154-1418 hergestellt und verkauft wird. Die Befehls-Pipeine für die VAX 8600 ist in T. Fossum et al., "An Overview of the VAX 8600 System", Digital Technical Journal, Nr. 1, August 1985, S.8-23 beschrieben. Es sind getrennte Pipeline- Stufen für ein Befehlsholen, ein Befehlsdecodieren, eine Operandenadressenerzeugung, ein Operandenholen, ein Befehlsausführen und eine Ergebnisspeicherung vorgesehen. Die Pipeline-Stufen sind normalerweise damit beschäftigt, aufeinanderfolgende Befehle zu verarbeiten, aber ein Bewegen durch die Pipene kann nicht immer mit höchster Geschwindigkeit erfolgen. Verschiedene Stufen müssen leer bleiben, wann immer Daten vom Hauptspeicher geholt werden müssen, anstatt von einem Cache-Speicher mit hoher Geschwindigkeit, der zuvor adressierte Datenblöcke speichert, oder wenn eine Multiplikation oder eine Division die Befehlsausführungs-Stufe bindet.
  • Es sollte beachtet werden, daß diese Prozessoren typischerweise virtuelle Speichersysteme verwenden, die insbesondere in Umgebungen mit mehreren Benutzern vorteilhaft sind. In einem virtuellen Speichersystem bezieht sich ein Programm auf Speicherstellen, als ob sie aktuelle physikalische Speicherstellen wären. Andere Programme, die gleichzeitig laufen, beziehen sich auch auf Speicherstellen, ohne die Speicheraktivitäten der Programme zu berücksichtigen, die gleichzeitig laufen. Es gibt eine offensichtliche Möglichkeit von Speicherkonflikten, wenn jedes der Programme tatsächlich auf einen physikalischen Speicher zugreift. Einzelne Programme können versuchen, dieselben physikalischen Speicherstellen zu lesen und zu beschreiben, was in einem Verlust an Datenintegrität resultiert. Beispielsweise können durch ein Programm an einer Speicherstelle gespeicherte Daten durch ein zweites Programm überschrieben werden. Damit empfängt das erste Programm, wenn es die an jener Stelle gespeicherten Daten ausliest, die falschen Daten. Daher haben frühere Computersysteme ein virtuelles Speichersystem verwendet, das zuläßt, daß jedes Programm so geschrieben wird, daß es derart arbeitet, als ob es das einzige Programm wäre, das mit einem Zugriff auf die Gesamtheit des Vera rbeitungsspeichers läuft. Zum Ermöglichen dieses virtuellen Speichersystems wird die Verantwortung für ein Verfolgen dessen, wie der virtuelle Speicher einem physikalischen Speicher entspricht, zur Speicherzugriffseinheit relegiert. Eine Nachschautabelle für Umwandlungen von einer virtuellen zu einer physikalischen Speicherstelle wird im Prozessorspeicher unterhalten. Wenn das Programm auf einen virtuellen Speicher Bezug nimmt, werden die virtuellen Speicherstellen durch Zugreifen auf die Nachschautabelle in physikalische Speicherstellen umgesetzt.
  • Dieses Verfahren arbeitet gut, aber es ist das Ziel einer Pipelineverarbeitung, die Prozessorgeschwindigkeit zu erhöhen. Offensichtlich ist die durch die Umwandlung jeder Speicherreferenz verbrauchte Zeit eine Belastung für die letztuche Prozessorgeschwindigkeit. Demgemäß haben frühere Systeme die Geschwindigkeit dieser Umwandungen durch Unterhalten eines Caches der zuletzt benutzten Umwandlungen erhöht. Ein Umsetzungspuffer unterhält ein kleines Segment der Gruppe von Umwandlungen von einem virtuellen zu einem physikalischen Speicher. Somit wird jede Speicherreferenz mit der Gruppe der zuletzt benutzten Umwandlungen durch die Umsetzungspuffer verglichen, und ein "Treffer" resultiert darin, daß das Umwandlungsverfahren beendet wird. Dies hat eine drastische Auswirkung auf die Prozessorgeschwindigkeit, da nicht auf einen Speicher zugegriffen werden muß, um die Umwandlung durchzuführen.
  • Jedoch treten deshalb, weil der Umsetzungspuffer nur einen kleinen Teil der Gruppe von Umwandlungen von einem virtuellen in einen physikalischen Speicher enthält, "Nichttreffer" auf. In dem Fall eines "Nichttreffers" muß die geeignete Umwandlung aus einem Speicher geholt werden. Herkömmlich ist dies durch einen Mikrocode oder durch Software erreicht worden. Wenn der "Nichttreffer" auftritt, wird ein nicht programmierbarer Programmsprung zu einem Programm genommen, das die nötigen Adressenberechnungen, Speicherreferenzen und Gültigkeitsprüfungen durchführt. Die geeignete Umwandlung wird in den Umsetzungspuffer geladen und die Steuerung springt vom Unterprog ramm zum ursprünglichen Ablauf des Programms zurück.
  • Diese Verfahren zum Auflösen von Umsetzungspuffer-"Nichttreffern" ist ein relativ langsames Verfahren, weil der Mikrocode oder das Softwareprogramm einen Datenpfad benutzt, der nicht für Umsetzungspuffer-"Nichttreffer" optimiert ist. Somit kann die Zeit zum Eintreten in ein Unterprogramm und zum Zurückspringen aus ihm sehr lang sein. Weiterhin kann das Umsetzungspuffer-"Nichttreffer"-Programm in einem Pipeline-Computer mit vielen gleichzeitig verarbeiteten Speicheroperationen außerordentlich komplex sein. Das Programm benötigt, daß die Pipeline- Reihenfolge erhalten bleibt, die "Nichttreffer"-Speicherreferenz an das vordere Ende der Pipeline eingefügt wird und die Pipeline am Ende des Programms erneut gestartet wird. Schließlich führen die Software und der Mikrocode während einer Ausführung des Umsetzungspuffer-Regelprogramms ihre normale Befehlsausführung nicht durch.
  • Das US-Patent 4,525,788 nach dem Stand der Technik lehrt eine Computerspeichersteuerung zum Steuern eines virtuellen Speichersystems, das zum Behandeln von Mehrprogrammbetriebs- oder Mehrprozessorbetriebs-Systemen optimiert ist. Jeder Prozeß/jedes Programm ist einer eindeutigen Prozeßnummer zugeordnet. Die Prozeßnummer eines gegenwärtig laufenden Prozesses und die in einem indizierten Puffereintrag gespeicherte Prozeßnummer werden verglichen. Wenn es eine Übereinstimmung gibt, ist eine Umsetzung von einer virtuellen in eine physikalische Adresse erfolgreich. Umsetzungen sind für alle laufenden Prozesse gleichzeitig im Puffer. Es gibt jedoch in diesem US-Patent nach dem Stand der Technik keine Lehre in bezug auf ein Korrigieren der "Nichttreffer" im Umsetzungspuffer eher zur Zeit ihres Auftretens als auf der Mikrocode-Ebene.
  • Die Erfindung in ihrer allgemeinen Form besteht in einem Speichermanagementprozessor und in einem Verfahren dafur, wie es jeweils in den Ansprüchen 1 und 10 angegeben ist.
  • Zum Korrigieren von "Nichttreffern" im Umsetzungspuffer eher zur Zeit ihres Auftretens als auf der Mikrocode-Ebene, und zum Prüfen auf Zugriffsverletzungen ist ein Speichermanagementprozessor zum Steuern der Umwandlung von virtuellen Speicheradressen in physikalische Speicheradressen in einem digitalen Computersystem geschaffen. Das digitale Computersystem hat eine Befehlseinheit, eine Ausführungseinheit, einen Speicher und einen Umsetzungspuffer mit einem Cache aus zuvor umgewandelten virtuellen Adressen. Der Umsetzungspuffer ist zum Ausgeben der physikalischen Adressen entsprechend den virtuellen Adressen geeignet, die durch die Befehls- und die Ausführungseinheit ausgegeben werden. Der Speichermanagementprozessor enthält eine Einrichtung zum Berechnen einer physikalischen Speicheradresse, die die physikalische Speicheradresse entsprechend der empfangenen virtuellen Adresse enthält, in direkter Reaktion auf ein Empfangen der virtuellen Adresse. Eine Einrichtung liest die physikalische Adresse entsprechend der empfangenen virtuellen Adresse aus der berechneten physikalischen Speicheradresse in Reaktion darauf aus, daß die virtuelle Adresse nicht im Umsetzungspuffer-Cache vorhanden ist. Eine Einrichtung speichert die ausgelesene physikalische Speicheradresse im Umsetzungspuffer-Cache.
  • Vorzugsweise prüft der Speichermanagementprozessor auf Zugriffsverletzungen, Seitenfehler, Längenverletzungen, und Modifikationsfehler während der Korrektur eines Umsetzungspuffer-"Nichttreffers". Diese Fehler werden verarbeitet und zur nächsten Pipeline-Stufe weitergeleitet, ohne die Befehls-Pipeine zu unterbrechen.
  • Die vorliegende Erfindung kann auf verschiedene Weisen in die Praxis umgesetzt werden, wovon eine nun anhand eines Beispiels unter Bezugnahme auf die beigefügten Zeichnungen beschrieben wird, wobei:
  • Fig. 1 ein Blockdiagramm auf oberster Ebene eines Teils einer zentralen Verarbeitungseinheit und eines zugehörigen Speichers ist;
  • Fig. 2 ein funktionelles Diagramm der Pipeline-Verarbeitung eines Langwort-BEWEGUNGS-Operanden ist;
  • Fig. 3 ein Blockdiagramm des Umsetzungspuffers und der Umsetzungspuffer-Fixiereinheit ist, die eine Schnittstelle zum Prozessor bildet;
  • Fig. 4 ein detailliertes Blockdiagramm des Umsetzungspuffers und der Umsetzungspuffer-Fixiereinheit ist; und
  • Fig. 5 ein Flußdiagramm ist, das verschiedene Zustände darstellt, die getestet werden, und entsprechende Handlungen, die zum Auslesen von physikalischen Speicheradressen aus dem Umsetzungspuffer und zum Erneuern des Umsetzungspuffers bei Adressen-"Nichttreffern" unternommen werden.
  • 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 worden und werden detailliert beschrieben. Es sollte jedoch verstanden werden, daß es nicht beabsichtigt ist, die Erfindung auf die offenbarten bestimmten Formen zu begrenzen, 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.
  • Fig. 1 ist ein Blockdiagramm einer oberen Ebene eines Teils eines Pipeline- Computersystems 10. Das System 10 enthält wenigstens eine zentrale Verarbeitungseinheit (CPU) 12, die einen Zugriff auf einen Hauptspeicher 14 hat. Es sollte verstanden werden, daß zusätzliche CPUs in einem derartigen System durch gemeinsames Nutzen des Hauptspeichers 14 verwendet werden könnten. Es ist beispielsweise praktisch, daß bis zu vier CPUs gleichzeitig arbeiten und durch den gemeinsam genutzten Hauptspeicher 14 effizient kommunizieren. Innerhalb der CPU 12 wird die Ausführung eines einzelnen Befehls in mehrere kleinere Aufgaben aufgeteilt. Diese Aufgaben werden durch bestimmte einzelne unabhängige funktionale Einheiten durchgeführt, die für jenen Zweck optimiert sind.
  • Obwohl jeder Befehl letztlich eine andere Operation durchführt, sind viele der kleineren Aufgaben, in die jeder Befehl aufgeteilt ist, allen Befehlen gemeinsam. Allgemein werden während der Ausführung eines Befehls folgende Schritte durchgeführt: Holen eines Befehls, Decodieren eines Befehls, Holen eines Operanden, Ausführen und Speichern eines Ergebnisses. Somit können die Schritte durch die Verwendung bestimmter Hardware-Stufen überlagert werden, um dadurch den gesamten Befehlsdurchsatz zu erhöhen.
  • Der Datenpfad durch die Pipeline enthält eine jeweilige Gruppe von Registern zum Übertragen der Ergebnisse jeder Pipeline-Stufe zur nächsten Pipeline-Stufe. Diese Übertragungsregister werden in Reaktion auf einen gemeinsamen Systemtakt getaktet. Beispielsweise wird während eines ersten Taktzyklus der erste Befehl durch eine Hardware geholt, die für ein Holen eines Befehls bestimmt ist. Während des zweiten Taktzyklus wird der geholte Befehl übertragen und durch eine Hardware zum Decodieren eines Befehls decodiert, aber gleichzeitig wird der nächste Befehl durch die Hardware zum Holen eines Befehls geholt. Während des dritten Taktzyklus wird jeder Befehl zur nächsten Stufe der Pipeline verschoben, und ein neuer Befehl wird geholt. Somit wird, nachdem die Pipeline aufgefüllt ist, ein Befehl am Ende jedes Taktzyklus vollständig ausgeführt sein.
  • Dieser Prozeß ist analog zu einer Zusammenbaustraße in einer Firma. Jeder Arbeiter oder jede Arbeiterin ist dafür da, eine einzelne Aufgabe an jedem Produkt durchzuführen, das durch seine oder ihre Arbeitsstufe läuft. Wenn eine jeweilige Aufgabe durchgeführt ist, gelangt das Produkt näher zu einer Fertigstellung. An der Endstelle rollt jedesmal dann, wenn der Arbeiter seine ihm zugeordnete Aufgabe durchf"hrt, ein fertiggestelltes Produkt von der Zusammenbaustraße.
  • Wie es in Fig. 1 gezeigt ist, ist jede CPU 12 in wenigstens drei funktionelle Einheiten aufgeteilt: die Speicherzugriffseinheit 16, die Befehlseinheit 18 und die Ausführungseinheit 20.
  • Die Befehlseinheit 18 holt Befehle hervor, decodiert Operationscodes, um Operanden- und Ergebnisspezifizierer zu erhalten, holt Operanden, und erneuert den Programmzähler. Die Befehlseinheit 18 enthält eine Operandenverarbeitungseinheit 22, einen Programmzähler 24 und einen Befehlsdecodierer 26. Der Programmzähler 24 wird in der Befehlseinheit 18 unterhalten, so daß die geeigneten Befehle aus einem Cache-Speicher 28 hoher Geschwindigkeit ausgelesen werden können, der in der Speicherzugriffseinheit 16 unterhalten wird. Der Cache 28 speichert eine Kopie eines kleinen Teils der im Hauptspeicher 14 gespeicherten Information und wird zum Erhöhen der Verarbeitungsgeschwindigkeit durch Reduzieren der Speicherzugriffszeit verwendet. Ein Betrieb des Caches 28 wird detailliert in Zusammenhang mit der Beschreibung der Speicherzugriffseinheit 16 beschrieben. Der Programmzähler 24 verwendet vorzugsweise eher virtuelle Speicherstellen als die physikalischen Speicherstellen des Hauptspeichers 14 und des Caches 28. Somit muß die virtuelle Adresse des Programmzählers 24 in die physikalische Adresse des Hauptspeichers 14 umgesetzt werden, bevor Befehle ausgelesen werden können. Demgemäß werden die Inhalte des Programmzählers 24 zur Speicherzugriffseinheit 16 übertragen, wo ein Umsetzungspuffer 30 die Adressenumwandlung durchführt. Der Befehl wird aus seiner physikalischen Speicherstelle im Cache 28 unter Verwendung der umgewandelten Adresse ausgelesen. Der Cache 28 gibt den Befehl über die Datenzurückbringleitungen 32 zum Befehlsdecodierer 26 aus. Die Organisation und der Betrieb eines Caches und eines Umsetzungspuffers nach dem Stand der Technik sind weiter im Kapitel 11 von Levy und Eckhouse, Jr., Computer Programming and Architecture, The VAX-11, Digital Equipment Corporation, S.351-368 (1980) beschrieben.
  • Die Operandenverarbeitungseinheit (OPU) 22 erzeugt auch virtuelle Adressen. Insbesondere erzeugt die OPU 22 virtuelle Adressen für Speicherquellen-(Lese-) und Zielort-(Schreib-)Operanden. Für wenigstens die Speicherleseoperanden muß die OPU 22 diese virtuellen Adressen zur Speicherzugriffseinheit 16 ausgeben, wo sie in physikalische Adressen umgesetzt werden. Dann wird auf die physikalischen Speicherstellen des Caches 28 zugegriffen, um die Operanden für die Speicherquellenbefehle zu holen.
  • Zum Ausführen des bevorzugten Verfahrens der vorliegenden Erfindung gibt die OPU 22 auch die virtuellen Adressen der Zielorte für die Speicherzielortoperanden zur Speicherzugriffseinheit 16 aus. Die virtuelle Adresse ist beispielsweise eine 32- Bit-Zahl. Zusätzlich zum Übertragen der virtuellen 32-Bit-Adresse gibt die OPU 22 auch ein 3-Bit-Steuerfeld aus, um anzuzeigen, ob der Operand eine Lese- oder eine Schreiboperation spezifiziert. In dem Fall, daß das Steuerfeld anzeigt, daß die virtuelle Adresse einem Leseoperanden entspricht, liest der Cache 28 die Daten von der identifizierten physikalischen Speicherstelle aus und gibt sie über Datenzurückbring leitungen 34 zur Ausführungseinheit 20 aus.
  • Gegensätzlich dazu wird für eine Schreiboperation die Schreibadresse gespeichert, bis die zu schreibenden Daten verfügbar sind. Offensichtlich sind die Daten für Befehle, wie beispielsweise BEWEGEN oder HINZUFÜGEN bzw. ADDIEREN, die zu schreiben sind, nicht verfügbar, bis eine Ausführung des Befehls beendet worden ist. Jedoch kann die virtuelle Adresse des Zielortes während der Zeit in eine entsprechende physikalische Adresse umgesetzt werden, die zur Ausführung des Befehls benötigt wird. Ebenso ist es wünschenswert, daß die OPU 22 während dieser Zeit mehrere Befehlsspezifizierer vorverarbeitet, um die Gesamtgeschwindigkeit zu erhöhen, mit der Befehle durchgeführt werden. Für diese Zwecke ist die Speicherzugriffseinheit 16 mit einer "Schreibwarteschlange" 36 zwischen dem Umsetzpuffer 30 und dem Cache 28 versehen, um die physikalischen Zielortadressen einer variablen Anzahl von Schreiboperationen zu speichern. Die Schreibwarteschlange 36 hält die Adresse, bis die Ausführungseinheit 20 den Befehl beendet und die Daten zur Speicherzugriffseinheit 16 sendet. Die Daten werden mit der zuvor gespeicherten Schreibadresse gepaart und an jener Speicherstelle in den Cache 28 geschrieben.
  • Die OPU 22 arbeitet auch an Befehlen, die keine Speicheroperanden sind. Beispielsweise verarbeitet die OPU 22 auch direkte Operanden, kurze Literalkonstanten und Registeroperanden. Bei jedem dieser Typen von Befehlen gibt die OPU 22 ihre Ergebnisse direkt zur Ausführungseinheit 20 aus.
  • Der erste Schritt beim Verarbeiten des Befehls besteht im Decodieren des "Operationscode"-Teils des Befehls. Das erste Segment jedes Befehls besteht aus seinem Operationscode, der die im Befehl durchzuführende Operation spezifiziert. Das Decodieren wird unter Verwendung einer standardmäßigen Tabellennachschau-Technik im Befehlsdecodierer 26 durchgeführt. Der Befehlsdecodierer findet eine Mikrocode-Startadresse zum Ausführen des Befehls in einer Nachschautabelle und führt die Startadresse zur Ausführungseinheit 20. Später führt die Ausführungseinheit die durch Ausführen eines zuvor gespeicherten Mikrocodes spezifizierte Operation beginnend bei der angezeigten Startadresse durch. Ebenso bestimmt der Decodierer, wo Quellen- und Zielortspezifizierer im Befehl auftreten und führt diese Quellen- und Zielortspezifizierer zur Operandenverarbeitungseinheit 22 für eine Vorverarbeitung vor einer Ausführung des Befehls.
  • Die Speicherzugriffseinheit 16 enthält den Cache 28, den Umsetzungspuffer 30, die Schreibwarteschlange 36, ein Register 38 und einen Multipexer 40. Wie es oben angegeben ist, ist der Cache 28 ein Speicher hoher Geschwindigkeit, der zum Speichern einer Kopie eines kleinen Teils der im Hauptspeicher 14 gespeicherten Informationen verwendet wird. Auf den Cache 28 kann mit einer viel höheren Geschwindigkeit als auf den Hauptspeicher 14 zugegriffen werden. Sein Zweck besteht daher im Reduzieren der Durchschnittszeit, die dafür nötig ist, daß ein Speicherzugriff (d.h. ein Lesen oder ein Schreiben) durchgeführt wird. Da der Cache 28 nur einen kleinen Teil der im Hauptspeicher gespeicherten Informationen speichert, wird es gelegentlich Befehle geben, die ein Zugreifen auf den Speicher versuchen, aber nicht im Cache 28 enthalten sind. Der Cache 28 erkennt, wenn diese "Nichttreffer" auftreten, und in diesen Fällen liest der Cache 28 die identifizierten Daten aus dem Hauptspeicher 14 aus. Natürlich wird die Leistungsfähigkeit der CPU 12 während dieser "Nichttreffer" leiden, aber die gesamte Speicherzugriffsgeschwindigkeit wird erhöht.
  • Der Umsetzungspuffer 30 ist ein Assoziativspeicher mit hoher Geschwindigkeit, der die zuletzt benutzten Umsetzungen von einer virtuellen zu einer physikalischen Adresse speichert. In einem virtuellen Speichersystem kann eine Referenz zu einer einzelnen virtuellen Adresse mehrere Speicherreferenzen veranlassen, bevor die erwünschte Information verfügbar gemacht wird. Jedoch dort, wo der Umsetzungspuffer 30 verwendet wird, wird eine Umsetzung auf ein einfaches Finden eines "Treffers" im Umsetzungspuffer 30 reduziert. Die Verwendung des Umsetzungspuffers 30 reduziert die Anzahl von Malen, für die auf einen Speicher zugegriffen werden muß, und erhöht dadurch die gesamte Prozessorgeschwindigkeit. Natürlich werden die Speicherreferenzen bei jenen im Umsetzungspuffer 30 gespeicherten Umsetzungen gelegentlich zu "Nichttreffern" führen. In dem Fall eines "Nichttreffers" wird die richtige Umsetzung von einer virtuellen zu einer physikalischen Adresse vom Speicher ausgelesen und im Umsetzungspuffer 30 gespeichert. Der Vergleich wird ein zweites Mal versucht, was notwendigerweise in einem "Treffer" resultiert. Es sollte beachtet werden, daß der Speicher zu dieser Zeit in zwei getrennte Bereiche aufgeteilt ist: einen Verarbeitungs- und einen Systemspeicher. Speicherreferenzen auf diese zwei Bereiche werden während eines Umsetzungspuffer-"Nichttreffers" etwas unterschiedlich behandelt und werden detaillierter in Zusammenhang mit den Fig. 3, 4 und 5 diskutiert.
  • Wenn die Umsetzung von einer virtuellen zu einer physikalischen Adresse einmal beendet ist, wird die physikalische Adresse entweder zur Schreibwarteschlange 36 oder zum Register 38 übertragen. Wie es ihr Name suggeriert, empfängt die Schreibwarteschlange 36 die physikalische Adresse nur dann, wenn der entsprechende Befehl ein Schreiben zum Speicher ist. Der Zweck der Schreibwarteschlange 36 besteht im Bereitstellen einer temporären Speicherstelle für die physikalische Schreibadresse des Schreibbefehls. Aufgrund der Pipeline-Natur der CPU 12 ist die Schreibadresse vor den dort zu speichernden Daten verfügbar. In der Tat werden die Daten nur nach der Ausführung des Befehls in der Ausführungseinheit 20 verfügbar werden. Darüber hinaus ist es deshalb, weil es erwünscht ist, mehrere Spezifizierer für Befehle in der Pipeline zuvor zu verarbeiten, wahrscheinlich, daß es eine Vielzahl von physikalischen Schreibadressen geben wird, die auf ihre entsprechenden Daten warten. Demgemäß ist die Schreibwarteschlange 36 ein First-In-First-Out-Puffer mit mehreren Positionen zum Unterbringen einer Vielzahl physikalischer Schreibadressen.
  • Gegensätzlich dazu liefert der Umsetzungspuffer 30 dann, wenn der Befehl entsprechend der physikalischen Adresse ein Lesebefehl ist, die physikalische Adresse für einen Operanden des Lesebefehls. Die Leseadresse wird zum Register 38 übertragen, wo sie durch den Multiplexer 40 ausgewählt wird, und wird zum Cache 28 ausgegeben. Der Cache 28 greift auf die identifizierte Speicherstelle zu und gibt die an jener Stelle gespeicherten Daten über die Datenzurückbringleitungen 34 zur Ausführungseinheit 20 aus.
  • Die Fähigkeit der CPU 12, während eines Holens eines Operanden für das Lesen direkt auf den Cache 28 zuzugreifen, aber während einer Befehlsausführung für das Schreiben verzögert zu sein, kann zu Zeitproblemen bei der Pipelineverarbeitung führen. Beispielsweise benötigen sequentielle Befehle oft den ersten Befehl zum Modifizieren einer Speicherstelle, während der nachfolgende Befehl diese selbe Adresse liest. Da beide Befehle in einer Serie kleiner Schritte ausgeführt werden, ist es möglich, daß die Lese- und Schreiboperationen außer der Reihe durchgeführt werden. Selbst wenn die Spezifizierer für den Schreibbefehl vor den Spezifizierern für den Lesebefehl verarbeitet werden, und die Schreiboperation vor der Leseoperation ausgeführt wird, kann die Verzögerung bei einer Ausführung zulassen, daß einer oder mehrere Operanden für die Leseoperation geholt werden, bevor das Ergebnis der Schreiboperation gespeichert wird. Daher könnten als Ergebnis des Holens der Leseoperanden "alte" Daten zur Ausführungseinheit zurückgebracht werden.
  • Fig. 2 stellt die Operation der Befehls-Pipeine für einen 4-Byte-Bewegungsbefehl der Form "MOVL MEM1, MEM2" dar, wobei MOVL die durchzuführende Operation bezeichnet, und MEM1 und MEM2 Operandenspezifizierer sind, die jeweils eine Quellenadresse und eine Zielortadresse spezifizieren. Die Kästen entlang der diagonalen Richtung in Fig. 2 zeigen die aufeinanderfolgenden Handlungen, die die CPU 12 zum Durchführen des Bewegungsbefehls durchführt. Von links nach rechts in Fig. 2 treten die Handlungen in elf aufeinanderfolgend weitergeschalteten Zyklen oder Intervallen bezüglich der Zeit (t) auf. Von oben nach unten in Fig. 2 treten die Handlungen in zehn aufeinanderfolgenden Stufen entlang dem Ausmaß (x) der Pipeline auf.
  • In der ersten Stufe wird der Programmzähler (PC) 24 für jenen Befehl an einer Stelle 201 erzeugt. Dies wird entweder durch Inkrementieren des Wertes des Programmzählers (24 in Fig. 1) für den vorherigen Befehl durchgeführt, oder durch Verwenden der Zielortadresse eines Verzweigungsbefehls. In der zweiten Stufe greift die Befehlseinheit an einer Stelle 202 auf den Umsetzungspuffer (30 in Fig. 1) mit der virtuellen Adresse des Programmzählers zu. Der Umsetzungspuffer wandelt die virtuelle Adresse in eine physikalische Adresse und lädt einen Block von Daten aus dem Speichereinheitscache 28 zu einem Puffer oder einem Cache (nicht gezeigt) in der Befehlseinheit herunter. Es ist nur nötig, die zweite Stufe durchzuführen, wenn der Puffer oder Cache in der Befehlseinheit den durch den PC 24 angezeigten Befehl nicht enthält. Der Cache wird an einer Stelle 203 in der dritten Stufe gelesen, um den Befehl MOVL auszulesen, der durch den PC 24 angezeigt wird. An einer Stelle 204 decodiert die vierte Stufe den Befehl durch Zugreifen auf die Decodiertabelle mit dem Operationscode von MOVL (DO).
  • Danach wird in der fünften Stufe an einer Stelle 205 die virtuelle Operandenadresse aus dem ersten Argument MEMI erzeugt. Gleichermaßen wird zu einer späteren Zeit in der fünften Stufe an einer Stelle 206 die virtuelle Zielortadresse aus dem zweiten Argument MEM2 erzeugt. Zur selben Zeit greift die OPU 22 in der sechsten Stufe an einer Stelle 207 auf den Umsetzungspuffer 30 zu, um die virtuelle Operandenadresse in eine physikalische Adresse umzuwandeln. Genauso greift die OPU 22 zu einer späteren Zeit in der sechsten Pipeline-Stufe an einer Stelle 208 auf den Umsetzungspuffer 30 zu, um die virtuelle Zielortadresse in eine physikalische Adresse umzuwandeln.
  • Natürlich kann die Schreiboperation zur physikalischen Adresse entsprechend MEM2 nicht beendet werden, bis die zu speichernden Daten bei der physikalischen Adresse entsprechend MEM2 gelesen worden sind. Somit wird die MEM2-Adresse in der Schreibwarteschlange 36 gespeichert, bis die Daten verfügbar sind. Die siebte Stufe bei einer Stelle 209 liest den Speicherzugriffseinheits-Cache 28 und gibt jene Daten zur Ausführungseinheit 20 aus.
  • In der achten Stufe sind an einer Stelle 210 alle Operandendaten und Ergebnisadressen verfügbar und der Befehl wird ausgeführt. In der neunten Stufe werden die Daten und ein Schreib-Flag an einer Stelle 211 zur Speichereinheit 16 ausgegeben, die Schreibwarteschlangen-Adresse wird von der Schreibwarteschlange enifemt, und auf die Cache-Kennungen wird zugegriffen, um auf einen Cache- Treffer zu testen. Unter der Annahme eines Cache-Treffers tritt das aktuelle Schreiben in der zehnten und letzten Stufe an einer Stelle 212 auf.
  • Nimmt man nun auf Fig. 3 Bezug, wird der Betrieb des Umsetzungspuffers 30 detaillierter beschrieben. Der Umsetzungspuffer 30 ist angeschlossen, um virtuelle Adressen von fünf unterschiedlichen Quellen zu empfangen. Drei dieser Quellen sind gegenüber der Speicherzugriffseinheit 16 extern und werden hierin nachfolgend allgemein extern genannt. Die übrigen zwei Quellen werden von innerhalb der Speicherzugriffseinheit 16 gesteuert und werden hierin nachfolgend allgemein intern genannt. Diese internen Register werden während Umsetzungspuffer-"Nichttreffern" verwendet, um die Umsetzung von virtuell in physikalisch aus dem Speicher auszulesen und sie in den Umsetzungspuffer 30 anzuordnen.
  • Die externen Quellen enthalten den 1-Buffer 42, der auf ein Ausgeben von Befehls- Hervorholadressen reagiert, die OPU 22, die Operanden-Hervorholadressen ausgibt, und die Ausführungseinheit 20, die implizite Operandenadressen ausgibt. Der Umsetzungspuffer 30 beschäftigt sich nicht damit, welche der externen Adressen gerade verarbeitet werden, da alle identisch behandelt werden.
  • Jede dieser externen Quellen wird zu den Eingängen eines Multiplexers 50 ausgegeben, der die ausgewählte Eingabe zum Umsetzungspuffer 30 steuerbar ausgibt. Der Umsetzungspuffer 30 vergleicht die empfangene virtuelle Adresse mit einem Cache 51 von zuletzt benutzten Umwandlungen von einer virtuellen in eine physikalische Adresse. Wenn eine Übereinstimmung gefunden wird, wählt der Umsetzungspuffer 30 die entsprechende physikalische Adresse und gibt sie zum Cache 28 aus. Es gibt keine Notwendigkeit für ein Zugreifen auf den Cache 28 zum Holen der Umsetzung von virtuell in physikalisch, da sie aufgrund ihrer früheren Benutzung bereits im Umsetzungspuffer-Cache 51 vorhanden ist. Diesbezüglich erhöht der Umsetzungspuffer 30 die Prozessorgeschwindigkeit durch Reduzieren der Anzahl von Zug riffen auf den Speicher sehr stark.
  • Jedoch enthält der Umsetzungspuffer-Cache 51 nur eine kleine Anzahl der Umsetzungen von virtuell in physikalisch. Somit ist es möglich, daß die gegenwärtig umgesetzte virtuelle Adresse nicht im Umsetzungspuffer-Cache 51 vorhanden ist. Wenn dies geschieht, ist es nötig, die Umwandlung vom Speicher auszulesen und sie im Umsetzungspuffer-Cache 51 anzuordnen, so daß die Umwandlung von virtuell in physikalisch beendet werden kann.
  • Die durch die ausgewählte externe Quelle ausgegebene virtuelle Adresse wird auch einer Umsetzungspuffer-Fixiereinheit (TB-Fixup) 52 ausgegeben. Wie ihr Name impliziert, ist die TB-Fixup 52 primär dazu da, jene Umwandlungen auszulesen, die nicht im Umsetzungspuffer-Cache 51 vorhanden sind, um sie im Umsetzungspuffer 30 zu plazieren. Der bestimmte Betrieb der TB-Fixup 52 wird durch den Typ von Speicherzugriff gesteuert, der gerade verarbeitet wird. Zum Verstehen dieses Unterschieds 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 unterteilt. Zuerst ist der virtuelle Adressenraum in zwei Hälften aufgeteilt, die Systemraum und Verarbeitungsraum genannt werden. Der Verarbeitungsraum ist wiederum in den Programm-(P0-) und den Steuer-(P1-)Bereich unterteilt. Jeder Bereich hat eine Ansammlung aller Umsetzungen von einer virtuellen in eine physikalische Adresse für jenen Bereich eines 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-Startadresse 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 Bits hoher Ordnung die Bereiche des Speichers definieren. Beispielsweise definiert das Bit 31 den System- und den Verarbeitungsraum. Eine Eins in dieser Position zeigt einen Systemraum, während eine Null einen Verarbeitungsraum identifiziert. Das Bit 30 definiert weiterhin die zwei Verarbeitungsbereiche (P0, P1). Die Hälfte des Adressenraums mit höherwertiger Adresse ist der Steuerbereich (P1), während die Hälfte mit niederwertiger Adresse durch den Programmbereich (P0) besetzt ist.
  • Die Hälfte des Adressenraums mit höherwertiger Adresse 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 System-Seitentabelle (SPT), die alle Systemraum- Referenzen umsetzt. Die SPT ist durch ihre zwei Hardware-Register, das Systembasisregister (SBR) und das Systemlängenregister (SLR) beschrieben. Diese Register werden durch Software geladen, wenn das Betriebssystem hochgefahren wird. Es ist wichtig, zu beachten, 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 gibt. Beispielsweise muß dafür, daß der Umwandlungsprozeß beginnt, die physikalische Adresse von wenigstens der SPT bekannt sein, um die Umwandlungen von virtuell in physikalisch auszulesen.
  • Die Hälfte des Speichers mit niederwertiger Adresse wird Verarbeitungsraum genannt, weil der Verarbeitungsraum ungleich dem Systemraum für jedes Programmsystem einzeln ist. Jedes Programm hat seine eigene Seitentabelle für seine Programm- und Steuerbereiche und sie werden durch die entsprechenden Basis- und Längenregister (P0BR, P1BR, P0LR und P1LR) definiert. Beispielsweise werden unterschiedliche Programme, die auf dieselbe virtuelle Adresse des Verarbeitungsraums Bezug nehmen, auf unterschiedliche physikalische Speicherstellen zugreifen. Demgemäß wird auf die Verarbeitungsseitentabellen eher durch virtuelle als durch physikalische Speicheradressen Bezug genommen. Somit muß eine Umwandlung von virtuellen Verarbeitungsraum-Adressen zuerst die physikalische Speicherstelle der Verarbeitungsseitentabelle lokalisieren. Diese Adressen sind in den physikalischen Speicherstellen der Systemseitentabelle (SPT) verfügbar. Es kann gesehen werden, daß, während eine Umwandlung einer Systemspeicherreferenz in einem einzigen Schritt erreicht werden kann, eine Verarbeitungsspeicherreferenz zwei Umwandlungen durchführen muß: zuerst die Umwandlung der Verarbeitungsbasisregisteradresse und als zweites die Umwandlung der virtuellen Adresse selbst.
  • Der Programmbereich (P0) enthält Anwenderprogramme, wodurch der auf Null basierende virtuelle Adressenraum bereitgestellt wird, von dem erwartet wird, daß Programme in ihn geladen werden. Gegensätzlich dazu bringt der Steuerbereich (P1) den Anwendermodusstapel des Prozesses unter. Das Betriebssystem kann auch den Steuerbereich dazu verwenden, daß er geschützte prozeßspezifische Daten und einen Code enthält, sowie die Stapel für die höheren Zugriffsmoden.
  • Nimmt man wiederum Bezug auf Fig. 3, empfängt die TB-Fixup 52 die virtuelle Adresse vom Multiplexer 50 und verwendet die Bits 30 und 31 zum Bestimmen des virtuellen Speicherbereichs, auf den zugegriffen wird. Der zugehörige Bereich wird dazu verwendet, zu bestimmen, welches Basisregister dazu verwendet werden sollte, die entsprechende Seitentabelle zu lokalisieren. Für eine Systemspeicherreferenz ist die vom SBR berechnete Seitentabellenadresse eine physikalische Adresse und kann direkt zum Speicherzugriffseinheits-Cache 28 ausgegeben werden, wo die entsprechende Umwandlung von virtuell in physikalisch gespeichert ist. Jedoch ist es nur nötig, den Umsetzungspuffer 30 zu fixieren, wenn ein "Nichttreffer" auftritt. Demgemäß gibt der Umsetzungspuffer 30 ein Nichttreffer- Signal zur TB-Fixup 52 aus, um zuzulassen, daß die berechnete Adresse zum Cache 28 ausgegeben wird. Im Fall eines TB-"Nichttreffers", wird die Umwandlung vom Cache 28 ausgelesen und im Umsetzungspuffer-Cache 51 gespeichert. Somit muß der direkt folgende Vergleich des Umsetzungspuffer-Caches 51 mit der anhängigen virtuellen Adresse notwendigerweise in einem "Treffer" resultieren. Daher aktiviert die TB-Fixup 52 temporär eine Steuerung über den Umsetzungspuffer 30 zum Erneuern des Umsetzungspuffer-Caches 51, wodurch die anhängige Umwandlung von einem "Nichttreffer" zu einem "Treffer" geändert wird und die Umsetzung von virtuell in physikalisch beendet wird.
  • Gegensätzlich dazu ist dort, wo der virtuelle Speicherbereich, auf den gerade zugegriffen wird, dem Verarbeitungsbereich entspricht, die von einem der Verarbeitungsbasisregister P0BR, P1BR berechnete Adresse eine virtuelle Adresse. Diese virtuelle Adresse kann nicht zum Cache 28 ausgegeben werden, sondern muß zuerst in eine physikalische Adresse umgewandelt werden. Natürlich wird eine Umwandlung einer virtuellen in eine physikalische Adresse normalerweise durch den Umsetzungspuffer 30 erreicht. Da der Umsetzungspuffer 30 gegenwärtig verzögert ist und darauf wartet, daß die TB-Fixup 52 ihren Cache 51 erneuert, kann die TB- Fixup 52 eine Steuerung über den Umsetzungspuffer aktivieren, um diese Umwandlung von virtuell in physikalisch durchzuführen. Die TB-Fixup 52 gibt die berechnete virtuelle Adresse der Verarbeitungsseitentabelle in Reaktion auf den Umsetzungspuffer-"Nichttreffer" zu einem internen Register 54 aus. Ein Multiplexer 56 wird durch die TB-Fixup 52 ausgewählt, um die Inhalte des internen Registers 54 zu einem Eingang des Multiplexers 50 auszugeben. Die TB-Fixup 52 arbeitet auch zum Auswählen der Ausgabe des Multiplexers 56 als die Eingabe zum Multiplexer 50. Es kann gesehen werden, daß ein Umsetzungspuffer-"Nichttreffer" an einer Verarbeitungsspeicherreferenz in der berechneten virtuellen Adresse der Verarbeitungsseitentabelle resultiert, die gerade für eine Umwandlung von virtuell in physikalisch zum Umsetzungspuffer 30 ausgegeben wird. Somit resultiert ein gleichzeitiger "Treffer" im Umsetzungspuffer 30 darin, daß die physikalische Adresse durch den Umsetzungspuffer 30 direkt zum Cache 28 ausgegeben wird.
  • Es ist auch möglich, daß ein zweiter Umsetzungspuffer-"Nichttreffer" an der im internen Register 54 enthaltenen Adresse resultiert. Die TB-Fixup 52 kann auch diesen zweiten "Nichttreffer" korrigieren. Es sollte beachtet werden, daß dieser zweite "Nichttreffer" ein "Nichttreffer" einer physikalischen Adresse ist. Somit ist das Fixier- Programm 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 in physikalisch bei einem nachfolgenden Laufen durch den Umsetzungspuffer 30 verwendet.
  • Eine Ablauffolgesteuerung 58 empfängt auch eine Eingabe von der TB-Fixup 52 über denselben Bus wie das interne Register 54. Die Ablauffolgesteuerung 58 wird während Mehr-Präzisionsoperationen oder während Operationen, die die Leitungsgrenze kreuzen, verwendet, wo es nötig ist, mehrere aufeinanderfolgende Bytes aus dem Speicher zu lesen. Die Ablauffolgesteuerung 58 inkrementiert die Adresse und gibt sie zum Multiplexer 56 aus. Eine Zuteilungslogik 57 steuert, welcher der Multiplexereingänge zum nachfolgenden Ausgeben von zuerst der internen Registeradresse und als zweites der inkrementierten Adresse oder der Adressen der Ablauffolgesteuerung ausgewählt werden. Auf alle Bytes einer Mehr- Präzisionsoperation oder auf unausgerichtete Adressen wird auf diese Weise zugegriffen.
  • Nimmt man nun Bezug auf Fig. 4, ist ein detailliertes Blockdiagramm des Umsetzungspuffers 30 und der TB-Fixup 52 gezeigt. Der Umsetzungspuffer 30 unterhält den Cache 51 von zuletzt benutzten PTEs. Die virtuelle 32-Bit-Adresse wird durch den Umsetzungspuffer 30 empfangen, und die Bits 31 und 17:09 werden als Zeiger für die 1024 Speicherstellen des Caches 51 verwendet.
  • Jede Speicherstelle im Cache 51 hat eine 13-Bit-Kennung entsprechend den Bits 30:18 der virtuellen Adresse. Diese Kennungen sind als A0- A1024 gezeigt und werden gemeinsam Seitenumsetzungs-Directory 51a genannt. Die niederwertigeren 512 Kennungen entsprechenden Verarbeitungsspeicherreferenzen, und die höherwertigeren 512 Kennungen entsprechenden Systemspeicherreferenzen. Der Zweck eines Trennens der Kennungen in Verarbeitungs- und Systemkennungen besteht im Zulassen, daß das Betriebssystem nur jene Kennungen schnell für ungültig erklärt, die zum aktuellen Programm gehören, wenn ein Zusammenhangsschalten auftritt. 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 durch Erzeugen einer virtuellen Verarbeitungsadresse zugreifen, die zuvor durch das frühere Programm umgesetzt worden war. Somit wird eher als daß der Umsetzungspuffer 30 einen "Nichttreffer" erfaßt eine Kennungsübereinstimmung basierend auf der Umsetzung von virtuell in physikalisch des früheren Programms resultieren.
  • Die Systemkennungen 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 Systemspeicherreferenz von irgendeinem Programm auf dieselbe physikalische Speicherstelle zugreifen, so daß es keine Notwendigkeit für ein Ausräumen der Systemkennungen gibt. Das Bit 30 trennt die Verarbeitungskennungen von den Systemkennungen.
  • Jeder der Kennungen A0- A1024 ist ein 32-Bit-Datenfeld zugeordnet, das den entsprechenden PTE enthält und als B0- B1024 gezeigt ist. Der PTE enthält die physikalische Seiten-Framenummer PFN bei den Bits 20:00, ein Gültigkeitsbit beim Bit 31, ein Schutzfeld bei den Bits 30:27 und ein Modifizierbit beim Bit 26. Diese PTES werden gemeinsam Seitenumsetzungsspeicher 51b genannt.
  • Ein Komparator 60 empfängt die Bits 30:18 der virtuellen Adresse und die 13-Bit- Kennung, die dem Zeiger entspricht. Eine Übereinstimmung zwischen diesen Werten zeigt, daß der PTE, der der virtuellen Adresse entspricht, im Seitenumsetzungsspeicher Sib an der Stelle angeordnet ist, die den Kennungsbits entspricht. Die Bits 29:09 des ausgewählten PTE werden zu einem Eingang eines Registers 62 ausgegeben. Die andere Eingabe zum Register 62 ist aus den Bits 08:00 der virtuellen Adresse ausgebildet. Anders ausgedrückt ist die entsprechende physikalische Seite an die Byte-Distanzadresse der virtuellen Adresse angehängt und bildet die aktuelle physikalische Adresse. Diese physikalische Adresse wird im Register 62 gehalten, das durch einen durch einen Inverter 61 invertierten Impuls vom Komparator 60 getaktet wird. Somit wird die berechnete physikalische Adresse zum Cache 28 nur dann ausgegeben, wenn der Komparator 60 anzeigt, daß ein "Treffer" im Seitenumsetzungs-Directory 51a gefunden wurde.
  • Gleichzeitig wird die VPN (Bits 29:09) zur TB-Fixup 52 ausgegeben. Eine Zustandsmaschine 66 steuert den Betrieb der TB-Fixup 52 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 erwünschten PTE. Im allgemeinen wird der PTE durch Addieren der VPN und der Adresse des Basisregisters bestimmt.
  • Welches der Basisregister zu verwenden ist, wird aus dem Zustand der Bits 31:30 bestimmt. Wie es zuvor diskutiert ist, gibt es drei einzelne Bereiche des Speichers, wobei jeder seine eindeutige Seitentabelle und seine eindeutige Basisadresse hat. 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 P1BR und SLR) jedes Bereichs eines Speichers enthalten.
  • Die Zustandsmaschine 66 steuert auch die Auswahingänge eines Multiplexers 72. Während irgendeines "Nichttreffers" im Systemspeicher oder eines ersten "Nichttreffers" im Verarbeitungsspeicher wählt die Zustandsmaschine 66 die Anschluß-Nichttrefferadressen-Eingabe zum Multiplexer 72 aus, die die Bits 21:2 der virtuellen Adresse enthält. Diese Anschluß-Nichttrefferadresse wird in einem einer Gruppe von Registern 73 gespeichert. Die zwei niederwertigsten Bits werden nicht benötigt, da der PTE im Cache 28 bei 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 zur Zuteilungslogik (57 in Fig. 3) in den Schaltungen 75 zur Auswahl einer virtuellen Adresse und zum Cache 28 ausgegeben.
  • Zusammen mit der Adresse gibt die Zustandsmaschine 66 Anfragesignale zu entweder der Zuteilungslogik (57 in Fig. 3) in den Schaltungen 75 zur Auswahl einer virtuellen Adresse oder zum Cache 28 aus, und zwar in Abhängigkeit davon, ob die berechnete Adresse eine physikalische oder eine virtuelle Adresse ist. Die Anfragesignale wirken zum Freigeben entweder der Zuteilungslogik (57 in Fig. 3) oder des Caches 28. Beispielsweise ist eine von einem Verarbeitungsbasisregister berechnete Adresse eine virtuelle Adresse und kann nicht zum Cache 82 ausgegeben werden, muß sich aber einer Umsetzung von virtuell zu physikalisch im Umsetzungspuffer 30 unterziehen. Demgemäß gibt die Zustandsmaschine 66 das Anfragesignal zur Zuteilungslogik (57 in Fig. 3) in den Schaltungen 75 zur Auswahl einer virtuellen Adresse aus. Wie es oben eingeführt ist, betreibt die Zuteilungslogik (57 in Fig. 3) den Multipexer 50, der in Fig. 3 gezeigt ist, um die Signale aus den externen Registern oder den internen Registern basierend auf einem Prioritätsschema auszugeben. Die internen Register, nämlich die Ablauffolgesteuerung 58 und eine interne Einheit 54, haben die höchste Priorität. Somit werden dann, wenn die Zustandsmaschine 66 das Anfragesignal zur Zuteilungslogik (57 in Fig. 3) ausgibt, die internen Register über die externen Register ausgewählt, um zuzulassen, daß das TB-Fixier-Programm ohne Konkurrenz von den externen Registern fortfährt.
  • Gegensätzlich dazu ist eine von einem Systembasisregister berechnete Adresse eine physikalische Adresse und kann direkt zum Cache 28 ausgegeben werden, um den gewünschten PTE auszulesen. Der PTE wird aus dem 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ß die zweite Referenz zum Umsetzungspuffer 30 während eines Verarbeitungsspeicher-"Nichttreffers" auch in einem "Nichttreffer" resultiert. Die TB-Fixup 52 kann diesen doppelten "Nichttreffer" behandeln. Die Zustandsmaschine 66 erkennt den doppelten Nichttrefferzustand, wenn das zweite aufeinanderfolgende "Nichttreffer"-Signal vom Komparator 60 empfangen wird. Die Zustandsmaschine 66 wählt das Systembasisregister über den Multiplexer 68 und die Fixier-Nichttrefferadresse über dem Multiplexer 72 aus. Die Fixier- Nichttrefferadresse wird von einem jeweiligen Adressenregister in der Gruppe von Registern 73 empfangen. Das Anschluß-Nichttrefferadressenregister in der Gruppe von Registern 73 bleibt mit der ursprünglichen virtuellen Adresse geladen, was im ersten "Nichttreffer" resultierte. Der Addierer 74 kombiniert diese ausgewählten Signale, um zu der physikalischen Systemadresse des Verarbeitungsbasisregisters zu gelangen. Da dies eine Systemspeicherreferenz ist, identifiziert die Adresse eine physikalische Speicherstelle und kann direkt zum Cache 28 ausgegeben werden, und zwar zusammen mit dem Cache-Freigabesignal. Hier ist der Prozeß im wesentlichen identisch zu einer ursprünglichen Systemspeicherreferenz, und der Cache 28 wird durch Ausgeben des an der identifizierten Adresse gespeicherten PTE zum Umsetzungspuffer-Cache 51 reagieren. Somit wird der Umsetzungspuffer 30 dann, wenn das externe Register durch die Zuteilungslogik (57 in Fig. 3) wiederum ausgewählt wird, bei der Umsetzung von virtuell in physikalisch notwendigerweise ein "Treffer".
  • Bevor die TB-Fixiereinheit bzw. -Fixup 52 die PTE-Adresse berechnet, wird 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 741 um eine 2-er- Komplement-Subtraktion durch Invertieren der Eingänge vom Multiplexer 72 und durch Freigeben des Übertragsbits durchzuführen. Für diesen Prozeß sind die zwei niederwertigsten Bits für die Berechnung nötig, so daß die Zustandsmaschine, eher als daß sie die Anschluß-Nichttrefferadresseneingabe auswählt, die Verzögerungs- Nichttrefferadresseneingabe zum Multiplexer 72 auswählt, um die Bits 21:0 der virtuellen Adresse auszulesen. Die Verzögerungs-Nichttrefferadresse wird von einem jeweiligen Register in der Gruppe von Registern 73 erhalten.
  • Die Zustandsmaschine 66 wählt auch das Längenregister 70 aus, das dem Bereich eines Speichers entspricht, der gerade umgesetzt wird. Somit zeigt ein durch Subtrahieren der virtuellen Adresse von der bekannten Länge der Seitentabelle erhaltenes negatives Ergebnis an, daß die virtuelle Adresse gerade 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 Regelprozeß weitermacht.
  • Die Zustandsmaschine 66 überwacht diesen Prozeß über ein nach außen geführtes Bit des Addierers 74. Wenn das nach außen geführte Bit aktiviert wird, ist das Ergebnis negativ und ein Fehlerbefehl wird zur Ausführungseinheit 16 ausgegeben.
  • Zusätzlich zum Korrigieren von "Nichttreffern" im Umsetzungspuffer 30 hilft die TB- Fixup 52 auch beim Auslesen von Daten während Mehr-Präzisionsoperationen. Diese Mehr-Präzisionsbefehle benötigen einen Zugriff auf mehrere Speicherstellen selbst dann, wenn nur eine einzelne Speicherstelle im Befehl identifiziert wird. Somit berechnet die TB-Fixup 52, während die erste Speicherreferenz zum Umsetzungspuffer 30 durchgelassen wird, die nächste sequentielle Adresse und gibt sie zur Ablauffolgesteuerung 58 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 angeordnet, 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 Mehr-Präzisionsbefehl benötigt wird. Diese Adresse wird zu den Schaltungen 75 zur Auswahl einer virtuellen Adresse ausgegeben, wo ihr eine Priorität über die externen Register zugeteilt wird, so daß sie durch den Umsetzungspuffer 30 in eine physikalische Adresse umgesetzt wird.
  • Schließlich wird der Prozeß zum Laden der Basis- und Längenregister 70 durch die Ausführungseinheit 16 während der Initialisierungsphase der CPU gesteuert. Die Ausführungseinheit 16 liefert eine 4-Bit-Kennungsadresse und ein Freigabesignal zu einem Decodierer 80. Der Decodierer 80 reagiert 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 ein Prozeß-Flußdiagramm der möglichen Logikpfade gezeigt, die in den Fig. 4 und 3 genommen werden. Es gibt vier mögliche Pfade, denen eine Umsetzung von virtuell in physikalisch folgen kann. Zuerst, und am einfachsten, enthält der Umsetzungspuffer 30 die gewünschte Umsetzung für entweder eine Prozeß- oder eine Systemspeicherreferenz, und die umgewandelte physikalische Adresse wird direkt zum Cache 28 ausgegeben. Der Prozeß beginnt beim Schritt 90, wobei die Zuteilungslogik den Multiplexer 50 steuert, um eine der Quellen, nämlich den Befehlspuffer 51, die OPU 22, die Ausführungseinheit 20 oder eine Fixier-Anfrage von der TB-Fixup 52 auszuwählen. Die virtuelle Adresse wird zum Umsetzungspuffer 30 ausgegeben, und im Schritt 92 wird die ausgewählte Adresse mit den Adressen im Seitenumsetzungs-Directory (51a in Fig. 4) verglichen. Gleichzeitig wird im Schritt 94 der PTE, der dieser ausgewählten Adresse entspricht, vom Seitenumsetzungsspeicher (51b in Fig. 4) ausgelesen. Eine Übereinstimmung wird gefunden, und der "Treffer" veranlaßt den Entscheidungsblock 96, ein Signal zum Schritt 68 auszugeben, das dem Cache 28 anzeigt, daß es eine gültige physikalische Adresse gibt, mit der ein Nachschauen durchzuführen ist. Im Schritt 94 werden auch die PTE-Schutzbits untersucht, um sicherzustellen, daß ein Zugriff zugelassen ist. Wenn kein Zugriff zugelassen ist, wird ein Zugriffsverletzungsfehler eingestellt, und ein Mikrocode-Programm nimmt eine Steuerung des Prozessors zum Korrigieren des Fehlers an. Unter der Annahme, daß die Anfrage, die von einer externen Quelle kam, läuft die Steuerung zum Schritt 100, wo der Prozeß beendet wird, und zwar durch Senden der Adresse zum Cache 28, um die gewünschten Daten auszulesen. Andererseits würde dann, wenn die Anfrage, die von der TB-Fixiereinheit 52 kam, der Steuerpfad von jenem verzweigen, der beim ersten Beispiel diskutiert ist. Der Steuerpfad für eine TB-Fixiereinheitsanfrage wird ausführlicher in Zusammenhang mit dem n-ten Beispiel unten diskutiert. Ein zweiter möglicher logischer Pfad tritt auf, wenn eine Systemspeicherreferenz nicht im Umsetzungspuffer 30 vorhanden ist. Wenn es einen "Nichttreffer" im Entscheidungsblock 96 gibt, hält der Umsetzungspuffer 30 an, und die TB-Fixiereinheit 52 macht damit weiter, den "Nichttreffer" zu korrigieren. Die physikalische Adresse der Systemseitentabelle wird so berechnet, daß der PTE aus der Seitentabelle ausgelesen werden kann. Zum Berechnen dieser physikalischen Adresse wird die virtuelle Seitennummer VPN aus der virtuellen Adresse beim Schritt 102 extrahiert. (Diese Extrahierung wird durch eine Busverdrahtung durchgeführt, die in Fig. 4 allgemein mit 103 bezeichnet ist, und die die anderen Bauteile in Fig. 4 mit den Adressenleitungen für die Adressenbits verbindet, die dem VPN-Teil der virtuellen Adresse entsprechen.) Beim Schritt 104 werden die Seitentabellen-Längen- und Basisregister durch Verwenden der Bits 31 und 30 der virtuellen Adresse derart ausgewählt, daß sie SLR und SBR sind. SLR wird im Entscheidungsschritt 106 mit der VPN verglichen, um sicherzustellen, daß kein Längenverletzungsfehler existiert. (Anders ausgedrückt testet die TB-Fixiereinheits-Zustandsmaschine 66 in Fig. 4 die Zustände der Busleitungen 103a und 103b für die virtuelle Adresse, die den Bits 31 und 30 entsprechen, um die Auswahleingänge der Multiplexer 68 und 72 derart einzustellen, daß sie den geforderten Vergleich durch Betreiben der Addierereinheit 74 durchführen, um die Ausgabe eines der Multiplexers von der anderen zu subtrahieren und um auf das Vorzeichenbit des Ergebnisses zu schauen.)
  • Unter der Annahme, daß keine Längenverletzung auftritt, geht eine Steuerung zum Schritt 108 weiter, wo die physikalische Adresse des gewünschten PTE unter Verwendung der folgenden Formel berechnet wird:
  • ADDR=SBR+(VPN*4).
  • Gegensätzlich dazu geht die Steuerung dann, wenn eine Längenverletzung existiert, weiter zum Schritt 110, wo der Ausführungseinheit 20 signalisiert wird, den Fehler zu korrigieren.
  • Bis zu dieser Stelle ist der logische Pfad für einen System-Nichttreffer virtuell identisch zu einem Prozeß-Nichttreffer, aber hier divergieren die zwei, weil die für einen System-Nichttreffer berechnete Adresse eine physikalische Adresse ist und direkt zum Cache 28 gesendet werden kann. Um zwischen einer System- und einer Prozeßreferenz zu unterscheiden, wird beim Schritt 104 das Bit 31 der virtuellen Adresse untersucht. Wie es zuvor erörtert ist, zeigt eine Eins im Bit 31 der virtuellen Adresse eine Systemspeicherreferenz an.
  • Für eine Systemreferenz geht die Steuerung weiter zum Schritt 112, wo die TB- Fixiereinheit 52 die physikalische Adresse zum Cache 28 sendet und der PTE ausgelesen wird. Das Gültigkeitsbit (TNV) im PTE wird beim Entscheid ungsblock 114 untersucht, um zu bestimmen, ob die adressierte physikalische Seite im Cache 28 angeordnet ist oder vom Hauptspeicher 14 ausgelesen werden muß. Wenn das Gültigkeitsbit nicht gesetzt ist, wird im Schritt 116 das Seitenfehler-Flag gesetzt, und die Steuerung geht weiter zur Ausführungseinheit 20, um den Fehler zu behandeln. Sonst geht die Steuerung weiter zum Schritt 118, und der PTE wird im Seitenumsetzungsspeicher (51b in Fig. 4) an einer Stelle gespeichert, die der Stelle einer virtuellen Adresse im Seitenumsetzungs-Directory (51a in Fig. 4) entspricht.
  • Wenn der Umsetzungspuffer-Cache mit dem neuen PTE erneuert ist, kehrt die Steuerung zum Anfang des Programms zurück. Die Zuteilungslogik (57 in Fig. 3) wählt wiederum einmal die externen Quellen im Schritt 90 über den Multiplexer 50 aus und der Umsetzungspuffer-Prozeß beginnt erneut. Jedoch muß es aufgrund der sofortigen vorherigen Erneuerung nun notwendigerweise einen "Treffer" im Umsetzungspuffer 30 geben. Daher wird bei diesem Durchgang der erste logische Pfad verfolgt, und die umgewandelte physikalische Adresse wird zum Cache 28 ausgegeben.
  • Der dritte und der vierte mögliche logische Pfad tritt auf, wenn keine Prozeßspeicherreferenz im Umsetzungspuffer 30 vorhanden ist. Zum Korrigieren des Umsetzungspuffers 30 während einer Prozeßspeicherreferenz ist es nötig, zuerst die Prozeß-Seitentabelle zu lokalisieren. Jedoch ist die Prozeß-Seitentabellenadresse auch eine virtuelle Speicheradresse und sie muß somit auch in eine physikalische Adresse umgewandelt werden. Demgemäß kann gesehen werden, daß es zwei mögliche logische Pfade nach einem anfänglichen "Nichttreffer" beim Schritt 96 gibt. Beispielsweise kann die nachfolgende Umwandlung der virtuellen Prozeß- Seitentabellenadresse in entweder einem nachfolgenden "Treffer" oder "Nichttreffer" im Umsetzungspuffer 30 resultieren.
  • Zuerst wird der dritte mögliche logische Pfad betrachtet, wo einem Prozeß- Speicherreferenz-"Nichttreffer" ein Prozeß-Seitentabellen-"Treffer" folgt. Wie beim zuvor diskutierten logischen Pfad resultiert der Vergleich der durch eine externe Quelle ausgegebenen virtuellen Adresse im Schritt 96 im Erfassen eines "Nichttreffers" im Umsetzungspuffer 30, zu welcher Zeit der Betrieb des Umsetzungspuffers 30 angehalten wird und die TB-Fixiereinheit 52 den Prozeß zum Korrigieren des "Nichttreffers" im Umsetzungspuffer 30 beginnt. Die virtuelle Stelle der Prozeß-Seitentabelle wird in den Schritten 120-124 nahezu identisch zur Berechnung der physikalischen Stelle der System-Seitentabelle berechnet, die in Zusammenhang mit dem zweiten möglichen logischen Pfad diskutiert ist. Es sollte beachtet werden, daß es tatsächlich zwei parallele Pfade 120a-124a, 120b-124b gibt, von denen nur einer genommen wird, und zwar in Abhängigkeit von dem Bereich des Prozeß-Speichers, auf den zuzugreifen ist. Die zwei parallelen Pfade sind identisch, außer bezüglich der für die Basis- und Längenregister ausgelesenen Werte. Beim Schritt 104 werden unter Verwendung der Bits 31 und 30 der virtuellen Adresse eher die Prozeßlängen- und -basisregister ausgewählt, als die entsprechenden Systembasis- und -längenregister. Somit wird beim Schritt 122 die Adresse berechnet und zum internen Register 54 übertragen, und die Multiplexer (50, 56 in Fig. 3) werden durch die Zuteilungslogik (57 in Fig. 3) beim Schritt 90 ausgewählt, um die virtuelle Adresse zum Umsetzungspuffer 30 auszugeben. Alternativ dazu resultiert die Annahme, daß ein Vergleich im Umsetzungspuffer 30 durchgeführt wird, in einem "Treffer" beim Entscheidungsblock 96. Es sollte daran erinnert werden, daß dieser "Treffer" nicht die letzte physikalische Adresse ist, die der ursprünglichen virtuellen Adresse entspricht, sondern statt dessen die physikalische Adresse des PTE ist, der zum Berechnen der letzten physikalischen Adresse verwendet wurde. Somit überträgt der Entscheidungsblock 98 die Steuerung zu den Schritten 112-118, wo der Umsetzungspuffer 30 diese physikalische Adresse zum Cache 28 sendet, um den PTE auszulesen, auf Seitenfehler prüft, und den PTE im Umsetzungspufferspeicher speichert. Die Steuerung kehrt zurück zum Anfang des Programms, wo die externen Quellen beim Schritt 90 ausgewählt werden, der Vergleich wird im Umsetzungspuffer 30 durchgeführt, und ein "Treffer" resultiert notwendigerweise während dieses Durchlaufs durch den Entscheidungsblock 96. Der PTE wird ausgelesen und die physikalische Adresse wird berechnet, wodurch der Umsetzungsprozeß beendet wird. Es sollte offensichtlich sein, daß das erfolgreiche Beenden eines der vier logischen Pfade ein letzter Durchlauf durch den ersten logischen Pfad ist.
  • Schließlich ist der vierte mögliche logische Pfad ähnlich dem dritten Pfad, unterscheidet sich aber etwas dadurch, daß die virtuelle Adresse der Prozeß- Seitentabelle auch einen "Nichttreffer" beim Umsetzungspuffer-Vergleich beim Entscheidungsblock 96 hat. Bei diesem logischen Pfad ist es für die TB-Fixiereinheit 52 erforderlich, zwei Umsetzungspuffer-"Nichttreffer" zu korrigieren.
  • Der PTE der Prozeß-Seitentabelle ist notwendigerweise im physikalischen Speicher angeordnet. Wenn er irgendwo anders wäre, könnte die Umwandlung von virtuell in physikalisch nicht beendet werden. Das heißt, daß dann, wenn der PTE für die Prozeß-Seitentabelle im virtuellen Speicher angeordnet wäre, die virtuelle Speicheradresse ohne den PTE nicht bekannt sein würde, der ohne die virtuelle Adresse nicht bekannt sein würde. Dies ist offensichtlich eine Bedingung, die unmöglich zu erfüllen ist, so daß der PTE für die Prozeß-Seitentabelle im physikalischen Speicher angeordnet sein muß. Somit ist die in den Schritten 120-124 durch die TB-Fixiereinheit 52 berechnete Adresse eine physikalische Adresse, die zum Cache 28 ausgegeben werden kann, um den PTE auszulesen, der zum Beenden der letzten Umwandlung nötig ist.
  • Nach dem "Nichttreffer" der virtuellen Prozeß-Seitentabellenadresse veranlassen die Schritte 120-124 die TB-Fixiereinheit 52, die physikalische Adresse des PTE für die letzte Umwandlung zu berechnen. Ein zweiter Durchlauf durch das Steuerprogramm resultiert notwendigerweise in einem "Treffer" beim Schritt 96. Jedoch deshalb, weil die Anfrage eher von der TB-Fixiereinheit 52 erfolgt, als von einer externen Einheit, überträgt der Entscheidungsblock 98 die Steuerung zu den Schritten 112-118, und die TB-Fixiereinheit 52 sendet die Adresse zum Cache 28 und der PTE wird ausgelesen und im Seitenumsetzungsspeicher (51 b in Fig. 4) gespeichert. Danach wählt die Zuteilungslogik (57 in Fig. 3) die externen Quellen beim Schritt 90 aus, und die Umwandlung wird ein zweites Mal beginnend beim Schritt A und dem ersten logischen Pfad folgend versucht, wobei der geeignete PTE im Umsetzungspuffer 30 gespeichert ist. Ein "Treffer" muß notwendigerweise folgen, und zwar mit der Berechnung der entsprechenden physikalischen Adresse und der Ausgabe der Adresse zum Cache 28.

Claims (15)

1. Speichermanagementprozessor zum Steuern der Umwandlung einer Vielzahl virtueller Adressen in eine entsprechende Vielzahl physikalischer Adressen in einem digitalen Computer (10); wobei der digitale Computer eine Datenverarbeitungseinheit (18) aufweist, die die virtuellen Adressen bereitstellt, einen Speicher (28), der die physikalischen Adressen empfängt, wobei der Speicher eine Vielzahl von Speicherstellen aufweist, wobei jede der Speicherstellen eine der Vielzahl physikalischer Adressen speichert, und einen Übersetzungspuffer (30), der einen Übersetzungspuffercache (51) zuvor umgewandelter virtuellen Adressen und entsprechender physikalischer Adressen enthält; wobei die Vielzahl virtueller Adressen entsprechende virtuelle Adressen enthält, die für System- und Verarbeitungsspeicherabschnitte des Speichers und des Übersetzungspuffercaches vorgesehen sind; wobei der Übersetzungspuffercache eine Einrichtung (60) zum Vergleichen einer aktuellen virtuellen Adresse von der Datenverarbeitungseinheit mit dem Übersetzungspuffercache der zuvor umgewandelten virtuellen Adressen und zum Ausgeben entweder eines Nichttreffer- oder eines Treffersignals in Antwort auf ein jeweiliges Erfassen eines Nichtvorhandenseins oder eines Vorhandenseins einer Übereinstimmung zwischen der aktuellen virtuellen Adresse und einer der zuvor umgewandelten virtuellen Adressen aufweist, und eine Einrichtung (62), die auf ein Empfangen des Treffersignals zum Ausgeben der physikalischen Adresse vom Übersetzungspuffercache entsprechend der aktuellen virtuellen Adresse zum Speicher antwortet; wobei der Speichermanagementprozessor in Kombination folgendes aufweist:
eine Einrichtung (70, 73, 68, 72, 74) zum Berechnen einer Speicheradresse einer der Speicherstellen, die die physikalische Adresse entsprechend der aktuellen virtuellen Adresse enthält, wobei die Einrichtung zum Berechnen gleichzeitig mit der Einrichtung zum Vergleichen der aktuellen virtuellen Adresse mit dem Übersetzungspuffercache der zuvor umgewandelten virtuellen Adressen arbeitet;
eine Einrichtung (52) zum Wiedergewinnen der physikalischen Adresse entsprechend der aktuellen virtuellen Adresse aus dem Speicher unter Verwendung der berechneten Speicheradresse aus der Einrichtung zum Berechnen in Antwort auf das Nichttreffersignal;
eine Einrichtung zum Speichern der wiedergewonnenen physikalischen Adresse in Übereinstimmung mit der aktuellen virtuellen Adresse im Übersetzungspuffercache; und
eine Steuereinrichtung (66) zum Betreiben der Einrichtung zum Berechnen gleichzeitig mit jeder der virtuellen Adressen, die durch den Übersetzungspuffer von der Datenverarbeitungseinheit empfangen und mit den zuvor umgewandelten virtuellen Adressen des Übersetzungspuffercaches verglichen werden, und zum Steuern der Einrichtung zum Wiedergewinnen und der Einrichtung zum Speichern in Antwort auf das Nichttreffersignal, wobei die Steuereinheit eine sequentielle Zustandsmaschine ist.
2. Speichermanagementprozessor nach Anspruch 1, wobei der Übersetzungspuffer (30) eine Einrichtung zum Empfangen der virtuellen Adresse enthält, eine Einrichtung (60) zum Vergleichen der virtuellen Adresse mit dem Cache der zuvor umgewandelten virtuellen Adressen, und eine Einrichtung (60) zum Ausgeben entweder eines Nichttreffer- oder eines Treffersignals in Antwort auf ein jeweiliges Erfassen des Nichtvorhandenseins und Vorhandenseins einer Übereinstimmung zwischen der virtuellen Adresse und einem der Caches der zuvor umgewandelten virtuellen Adressen, und eine Einrichtung (62) zum Ausgeben der physikalischen Adresse entsprechend der empfangenen virtuellen Adresse in Antwort auf ein Empfangen des Treffersignals, und wobei die Berechnungseinrichtung die physikalische Speicheradresse in Antwort auf ein Empfangen des Nichttreffersignals berechnet.
3. Speichermanagementprozessor nach Anspmch 2, der eine Einrichtung (61) zum Verhindern einer Ausgabe eines Befehls und virtueller Ausführungseinheitenadressen zum Übersetzungspuffer (30) in Antwort auf ein Empfangen des Nichttreffersignals enthält.
4. Speichermanagementprozessor nach Anspruch 3, wobei die Verhindewngseinrichtung (61) eine Ausgabe des Befehls und der virtuellen Ausführungseinheitenadressen zum Übersetzungspuffer (30) in Antwort auf die wiedergewonnene physikalische Speicheradresse zuläßt, die im Übersetzungspuffercache gespeichert ist.
5. Speichermanagementprozessor nach Anspruch 2 oder 4, wobei der Cache (51) System- und Verarbeitungsspeicherabschnitte enthält, die Einrichtung zum Berechnen eine Einrichtung zum Unterscheiden zwischen einer virtuellen Systemadresse und einer virtuellen Verarbeitungsadresse enthält, und die Wiedergewinnungseinrichtung eine Einrichtung (66) zum Ausgeben der berechneten Adresse einer virtuellen Systemadresse zum Speicher und zum Ausgeben der berechneten Adresse einer virtuellen Verarbeitungsadresse zum Übersetzungspuffer enthält.
6. Speichermanagementprozessor nach Anspruch 5, wobei die Berechnungseinrichtung eine Systemadresse erzeugt und die Systemadresse in Antwort auf ein Ausgeben der virtuellen Verarbeitungsadresse zum Übersetzungspuffer und ein Empfangen eines Nichttreffersignals zum Speicher ausgibt.
7. Speichermanagementprozessor nach einem der Ansprüche 2 bis 6, wobei die Berechnungseinrichtung eine Einrichtung (74) zum Vergleichen der Größe der virtuellen Adresse mit der Größe verfügbarer Adressen im Speicher und zum Ausgeben eines Fehlersignals in Antwort darauf, daß die Größe der virtuellen Adresse größer als die verfügbaren Speicheradressen ist, enthält.
8. Speichermanagementprozessor nach einem der Ansprüche 2 bis 7, wobei die Berechnungseinrichtung eine Einrichtung (58) zum Erzeugen der nächsten sequentiellen Speicheradresse einer Multipräzisionsoperation in Antwort auf ein Empfangen des Treffersignals und zum Ausgeben der nächsten sequentiellen Speicheradresse zum Übbersetzungspuffer (30) enthält.
9. Speichermanagementprozessor nach Anspruch 8, der eine Einrichtung zum Verhindern einer Ausgabe des Befehls und der virtuellen Ausfühmngseinheitenadressen zum Übersetzungspuffer (30) in Antwort darauf, daß die nächste sequentielle Speicheradresse zum Ü bersetzungspuffer ausgegeben wird, enthält.
10. Verfahren zum Steuern der Umwandlung einer Vielzahl virtueller Adressen in eine entsprechende Vielzahl physikalischer Adressen in einem digitalen Computer (10); wobei der digitale Computer eine Datenverarbeitungseinheit (18) aufweist, die die virtuelle Adresse liefert, einen Speicher (28), der die physikalischen Adressen empfängt, wobei der Speicher eine Vielzahl von Speicherstellen aufweist, wobei jede der Speicherstellen eine der Vielzahl physikalischer Adressen speichert, und einen Übersetzungspuffer (30), der einen Übersetzungspuffercache (51) zuvor umgewandelter virtueller Adressen und entsprechender physikalischer Adressen enthält; wobei die Vielzahl virtueller Adressen entsprechende virtuelle Adressen enthält, die für Systemund Verarbeitungsspeicherabschnitte des Speichers und des Übersetzungspuffercaches vorgesehen sind; wobei der Übersetzungspuffercache eine Einrichtung zum Vergleichen einer aktuellen virtuellen Adresse von der Datenverarbeitungseinheit mit dem Übersetzungspuffercache zuvor umgewandelter virtueller Adressen aufweist, und zum Ausgeben entweder eines Nichttreffer- oder eines Treffersignals auf ein jeweiliges Erfassen eines Nichtvorhandenseins oder eines Vorhandenseins einer Übereinstimmung zwischen der aktuellen virtuellen Adresse und einer der Übersetzungspuffercaches zuvor umgewandelter virtueller Adressen, und eine Einrichtung (62), die auf ein Empfangen des Treffersignals zum Ausgeben der physikalischen Adresse vom Übersetzungspuffercache entsprechend der aktuellen virtuellen Adresse zum Speicher antwortet; wobei das Verfahren folgende Schritte aufweist:
Vergleichen der aktuellen virtuellen Adresse von der Datenverarbeitungseinheit mit dem Übersetzungspuffercache zuvor umgewandelter virtueller Adressen gleichzeitig mit dem Übersetzungspuffer, Betreiben einer Recheneinheit, um eine Speicheradresse einer der Speicherstellen zu berechnen, die die physikalische Adresse entsprechend der aktuellen virtuellen Adresse enthält;
Wiedergewinnen der physikalischen Adresse entsprechend der aktuellen virtuellen Adresse aus dem Speicher unter Verwendung der berechneten Speicheradresse aus der Recheneinheit, wenn das Nichttreffersignal ausgegeben wird, und Speichern der wiedergewonnenen Adresse im Übersetzungspuffercache; und Wiedergewinnen der physikalischen Adresse entsprechend der aktuellen virtuellen Adresse aus dem Übersetzungspuffercache, wenn der Treffer ausgegeben wird.
11. Verfahren nach Anspruch 10, das folgende Schritte enthält:
Verhindern einer Ausgabe eines Befehls und virtueller Ausfühmngseinheitenadressen zum Übersetzungspuffer (30) in Antwort auf ein Empfangen des Nichttreffersignals; und
Zulassen einer Ausgabe des Befehls und der virtuellen Ausführungseinheitenadressen zum Übersetzungspuffer in Antwort auf die wiedergewonnene physikalische Speicheradresse, die im Übersetzungspuffercache gespeichert ist.
12. Verfahren nach Anspwch 10, das folgendes enthält:
Erzeugen und Ausgeben einer physikalischen Systemadresse zum Speicher in Antwort auf ein Ausgeben der virtuellen Verarbeitungsadresse zum Übersetzungspuffer und ein Empfangen eines Nichttreffersignals.
13. Verfahren nach Anspwch 10, das folgendes enthält: Vergleichen der Größe der virtuellen Adresse mit der Größe verfügbarer Adressen im Speicher und Ausgeben eines Fehlersignals in Antwort darauf, daß die Größe der virtuellen Adresse größer als die verfügbaren Speicheradressen ist.
14. Verfahren nach einem der Ansprüche 10 bis 13, das folgendes enthält:
Erzeugen der nächsten sequentiellen Speicheradresse einer Multiprazisionsoperation in Antwort auf ein Empfangen des Treffersignals;
und
Ausgeben der nächsten sequentiellen Speicheradresse zum Übersetzungspuffer.
15. Verfahren nach Anspmch 14, das folgendes enthält:
Verhindern einer Ausgabe der virtuellen Befehls- und Ausführungseinheitenadressen zum Übersetzungspuffer in Antwort darauf, daß die nächste sequentielle Speicheradresse zum Übersetzungspuffer ausgegeben wird.
DE69031183T 1989-02-03 1990-01-30 Verfahren und Anordnung zur Kontrolle der Umwandlung virtueller Adressen in physikalische Adressen in einem Computersystem Expired - Lifetime DE69031183T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US30654489A 1989-02-03 1989-02-03
AU53950/90A AU632558B2 (en) 1989-02-03 1990-04-27 Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system

Publications (2)

Publication Number Publication Date
DE69031183D1 DE69031183D1 (de) 1997-09-11
DE69031183T2 true DE69031183T2 (de) 1998-03-12

Family

ID=25630274

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69031183T Expired - Lifetime DE69031183T2 (de) 1989-02-03 1990-01-30 Verfahren und Anordnung zur Kontrolle der Umwandlung virtueller Adressen in physikalische Adressen in einem Computersystem

Country Status (7)

Country Link
US (1) US5349651A (de)
EP (1) EP0381447B1 (de)
JP (1) JPH02232753A (de)
AT (1) ATE156609T1 (de)
AU (1) AU632558B2 (de)
CA (1) CA1325288C (de)
DE (1) DE69031183T2 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336180B1 (en) 1997-04-30 2002-01-01 Canon Kabushiki Kaisha Method, apparatus and system for managing virtual memory with virtual-physical mapping
US5423014A (en) * 1991-10-29 1995-06-06 Intel Corporation Instruction fetch unit with early instruction fetch mechanism
JPH0667980A (ja) * 1992-05-12 1994-03-11 Unisys Corp 4ブロックキャッシュメモリへのアクセスを最適化するためのキャッシュ論理システムおよびメインフレームコンピュータの高速キャッシュメモリへのアクセス時のダブルミスを防ぐ方法
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
WO1996038782A2 (en) * 1995-05-26 1996-12-05 National Semiconductor Corporation Apparatus and method for efficiently determining addresses for misaligned data stored in memory
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
US5960463A (en) * 1996-05-16 1999-09-28 Advanced Micro Devices, Inc. Cache controller with table walk logic tightly coupled to second level access logic
US6175906B1 (en) * 1996-12-06 2001-01-16 Advanced Micro Devices, Inc. Mechanism for fast revalidation of virtual tags
AUPO648397A0 (en) 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
US6311258B1 (en) 1997-04-03 2001-10-30 Canon Kabushiki Kaisha Data buffer apparatus and method for storing graphical data using data encoders and decoders
US6707463B1 (en) 1997-04-30 2004-03-16 Canon Kabushiki Kaisha Data normalization technique
US6259456B1 (en) 1997-04-30 2001-07-10 Canon Kabushiki Kaisha Data normalization techniques
US6289138B1 (en) 1997-04-30 2001-09-11 Canon Kabushiki Kaisha General image processor
US6272257B1 (en) 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
AUPO647997A0 (en) * 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Memory controller architecture
KR100231707B1 (ko) * 1997-08-04 2000-01-15 정선종 통신 장비의 디엠에이 처리 방법 및 그 장치
US6157986A (en) * 1997-12-16 2000-12-05 Advanced Micro Devices, Inc. Fast linear tag validation unit for use in microprocessor
US6263408B1 (en) * 1999-03-31 2001-07-17 International Business Machines Corporation Method and apparatus for implementing automatic cache variable update
US6233668B1 (en) 1999-10-27 2001-05-15 Compaq Computer Corporation Concurrent page tables
US6628294B1 (en) 1999-12-31 2003-09-30 Intel Corporation Prefetching of virtual-to-physical address translation for display data
US6615300B1 (en) * 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US9131899B2 (en) 2011-07-06 2015-09-15 Apple Inc. Efficient handling of misaligned loads and stores
EP1585028A1 (de) * 2004-04-07 2005-10-12 Stmicroelectronics SA Verfahren und Vorrichtung zur Berechnung der Adressen eines in einem segmentierten Speicher abgelegten Programms
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
US9921967B2 (en) 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
WO2013048468A1 (en) 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US9292453B2 (en) 2013-02-01 2016-03-22 International Business Machines Corporation Storing a system-absolute address (SAA) in a first level translation look-aside buffer (TLB)
US9405551B2 (en) 2013-03-12 2016-08-02 Intel Corporation Creating an isolated execution environment in a co-designed processor
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
EP3060993B1 (de) * 2013-10-21 2023-03-08 FLC Global, Ltd. Cache-system auf höchster stufe und zugehöriges verfahren
CN117971719B (zh) * 2024-03-28 2024-06-28 北京微核芯科技有限公司 一种提前传递数据的方法及其装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4264953A (en) * 1979-03-30 1981-04-28 Honeywell Inc. Virtual cache
US4654777A (en) * 1982-05-25 1987-03-31 Tokyo Shibaura Denki Kabushiki Kaisha Segmented one and two level paging address translation system
US4525778A (en) * 1982-05-25 1985-06-25 Massachusetts Computer Corporation Computer memory control
US4586130A (en) * 1983-10-03 1986-04-29 Digital Equipment Corporation Central processing unit for a digital computer
US4587610A (en) * 1984-02-10 1986-05-06 Prime Computer, Inc. Address translation systems for high speed computer memories
US4731740A (en) * 1984-06-30 1988-03-15 Kabushiki Kaisha Toshiba Translation lookaside buffer control system in computer or virtual memory control scheme
US4991081A (en) * 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4933835A (en) * 1985-02-22 1990-06-12 Intergraph Corporation Apparatus for maintaining consistency of a cache memory with a primary memory
US4774653A (en) * 1985-08-07 1988-09-27 Hewlett-Packard Company Hybrid hardware/software method and apparatus for virtual memory address translation using primary and secondary translation buffers
US5241638A (en) * 1985-08-12 1993-08-31 Ceridian Corporation Dual cache memory
US4694395A (en) * 1985-11-25 1987-09-15 Ncr Corporation System for performing virtual look-ahead memory operations
US4785398A (en) * 1985-12-19 1988-11-15 Honeywell Bull Inc. Virtual cache system using page level number generating CAM to access other memories for processing requests relating to a page
US5029072A (en) * 1985-12-23 1991-07-02 Motorola, Inc. Lock warning mechanism for a cache
US4727485A (en) * 1986-01-02 1988-02-23 Motorola, Inc. Paged memory management unit which locks translators in translation cache if lock specified in translation table
US4727486A (en) * 1986-05-02 1988-02-23 Honeywell Information Systems Inc. Hardware demand fetch cycle system interface
US5230045A (en) * 1986-11-12 1993-07-20 Xerox Corporation Multiple address space system including address translator for receiving virtual addresses from bus and providing real addresses on the bus
US4802085A (en) * 1987-01-22 1989-01-31 National Semiconductor Corporation Apparatus and method for detecting and handling memory-mapped I/O by a pipelined microprocessor
US4831520A (en) * 1987-02-24 1989-05-16 Digital Equipment Corporation Bus interface circuit for digital data processor
US4851991A (en) * 1987-02-24 1989-07-25 Digital Equipment Corporation Central processor unit for digital data processing system including write buffer management mechanism
US4825412A (en) * 1988-04-01 1989-04-25 Digital Equipment Corporation Lockout registers
US5239635A (en) * 1988-06-06 1993-08-24 Digital Equipment Corporation Virtual address to physical address translation using page tables in virtual memory

Also Published As

Publication number Publication date
EP0381447B1 (de) 1997-08-06
JPH02232753A (ja) 1990-09-14
DE69031183D1 (de) 1997-09-11
JPH0564815B2 (de) 1993-09-16
AU5395090A (en) 1991-12-19
CA1325288C (en) 1993-12-14
AU632558B2 (en) 1993-01-07
EP0381447A3 (de) 1992-05-13
US5349651A (en) 1994-09-20
EP0381447A2 (de) 1990-08-08
ATE156609T1 (de) 1997-08-15

Similar Documents

Publication Publication Date Title
DE69031183T2 (de) Verfahren und Anordnung zur Kontrolle der Umwandlung virtueller Adressen in physikalische Adressen in einem Computersystem
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE68928812T2 (de) Vorrichtung zur Auflösung von einer variablen Anzahl von möglichen Speicherzugriffskonflikten in einem Pipeline-Rechnersystem und Verfahren dazu
DE69031139T2 (de) Verfahren und Vorrichtung zum Ordnen und in Warteschlangesetzen mehrerer Speicherzugriffsanforderungen
DE69131637T2 (de) Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE112004002848B4 (de) Mikroprozessor und Verfahren zum Verifizieren einer Speicherdatei in einem derartigen Mikroprozessor
DE69331448T2 (de) Dataprozessor mit einem Cachespeicher
DE69327288T2 (de) Verfahren und System zur Aufrechterhaltung der Adressenübersetzungspufferspeicher-Kohärenz eines Multiprozessorsystems
DE69223386T2 (de) Umsetzungspuffer für virtuelle maschinen mit adressraumübereinstimmung
DE69127242T2 (de) Sicherung der Datenintegrität in einem Multipipelineprozessorsystem
DE69130379T2 (de) Datenvorausladebefehl in einem Prozessor mit reduziertem Befehlssatz
DE68928519T2 (de) Verfahren und Vorrichtung zur Vorhersage der richtigen Durchführung der Übersetzungen von virtuellen in physikalische Adressen
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE69128565T2 (de) Mikrorechner ausgestattet mit einer DMA-Steuerung
DE69427734T2 (de) Linearadressierter Mikroprozessorcachespeicher
DE69033331T2 (de) Sprungvorhersage
DE69620807T2 (de) Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher
DE69319763T2 (de) Verfahren und Gerät zur Durchführung eines Busarbitrierungsprotokolls in einem Datenverarbeitungssystem
DE68926059T2 (de) Organisation einer integrierten Cache-Einheit zur flexiblen Verwendung beim Entwurf von Cache-Systemen
DE69904479T2 (de) Registerumbenennung wobei übertragungsinstruktionen mittels umbenennungsschildernzeichen realisiert werden
DE68917326T2 (de) Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen.
DE69129881T2 (de) Verzweigung in einem Pipeline-Prozessor
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems

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