DE69902392T2 - Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen - Google Patents

Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen

Info

Publication number
DE69902392T2
DE69902392T2 DE69902392T DE69902392T DE69902392T2 DE 69902392 T2 DE69902392 T2 DE 69902392T2 DE 69902392 T DE69902392 T DE 69902392T DE 69902392 T DE69902392 T DE 69902392T DE 69902392 T2 DE69902392 T2 DE 69902392T2
Authority
DE
Germany
Prior art keywords
instruction
cache
predecode
information
unit
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
DE69902392T
Other languages
English (en)
Other versions
DE69902392D1 (de
Inventor
Rupaka Mahalingaiah
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE69902392D1 publication Critical patent/DE69902392D1/de
Application granted granted Critical
Publication of DE69902392T2 publication Critical patent/DE69902392T2/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
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • 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/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Detection And Correction Of Errors (AREA)

Description

    HINTERGRUND DER ERFINDUNG 1. Technisches Gebiet
  • Diese Erfindung betrifft Mikroprozessoren und insbesondere das Dekodieren von Instruktionen variabler Länge innerhalb eines Mikroprozessors.
  • 2. Technischer Hintergrund
  • EP-A-0 798 632 beschreibt eine Abweig-Vorhersage in einem Mehrebenen- Cache-System. Wenn ein Cache-Eintrag in einem Cache der Ebene eins überschrieben wird, wird, statt dass der Eintrag und die entsprechende Abzweig- Vorhersage-Information verlorengehen, der Eintrag in dem Cache der Ebene zwei gespeichert. Der Cache der Ebene zwei speichert zusätzlich teilweise dekodierte Information sowie ein Gültig-Bit für die Abzweig-Vorhersage-Information.
  • EP-A-0 651 324 beschreibt eine spekulative Instruktionsschlange für Instruktionen variabler Länge. Jede Byte-Position innerhalb der Schlange enthält ein Gültig-Bit für die Instruktions-information. Ferner werden Vordekodier-Bits beschrieben, die das Start-Byte, das End-Byte und das Opcode-Byte angeben.
  • Im IBM Technical Disdosure Bulletin, Vol. 37, Nr. 12, Dezember 1994 werden unter dem Titel "Dual On-Chip Instruction Cache Organization in High Speed Processors" zwei On-chiop-Caches mit unterschiedlichen Konfigurationen beschrieben. Der zweite Cache wird so groß gemacht, wie das. Design zulässt, um die Cache-Fehlgänger-Rate zu minimieren. Auf beide Caches wird in jedem Zyklus zugegriffen.
  • Die Anzahl für den x86-Instruktions-Satz geschriebener Software-Anwendungen ist recht groß. Infolgedessen haben trotz der Einführung neuer und weiterentwickelter Instruktions-Sätze die Designer von Mikroprozessoren weiterhin Mikroprozessoren konzipiert, die zum Ausführen des x86-Instruktions-Satz in der Lage sind.
  • Der x86-Instruktions-Satz ist relativ komplex und ist durch mehrere Instruktionen variabler Länge gekennzeichnet. Ein generisches Format zur Veranschaulichung der x86-Instruktion ist in Fig. 1 gezeigt. Wie aus der Figur ersichtlich, besteht eine x86-Instruktion aus einem bis fünf optionalen Präfix-Bytes 102, gefolgt von einem Operations-Code-(opcode-)Feld 104, einem optionalen Adressier-Modus-(Mod R/M-)Byte 106, einem optionalen Skalen-Index-Basis- (SIB-)Byte 108, einem optionalen Versetzungs-Feld 110 und einem optionalen Unmittelbar-Daten-Feld 112.
  • Das opcode-Feld 104 definiert die Basis-Operation für eine bestimmte Instruktion. Die Vorgabe-Operation für einen bestimmten opcode kann durch ein oder mehrere Präfix-Bytes 102 modifiziert werden. Beispielsweise kann eines der Präfix-Bytes 102 verwendet werden, um die Adresse oder die Operanden- Größe für eine Instruktion zu verändern, eine Priorität gegenüber dem beim Speicher-Adressieren verwendeten Vorgabe-Segment zu erstellen oder den Prozessor zu instruieren, eine Strang-Operation eine Anzahl von Malen zu wiederholen. Das opcode-Feld 104 folgt den Präfix-Bytes 102, falls vorhanden, und kann eine Länge von einem oder zwei Bytes haben. Das Adressier-Modus- (Mod R/M-)Byte 106 spezifiziert die verwendeten Register sowie die Speicher- Adressier-Modi. Das Skalen-Index-Basis-(SIB-)Byte 108 wird nur in einer 32- Bit-Basis-Relativ-Adressierung mittels Skalen- und Index-Faktoren verwendet. Ein Basis-Feld innerhalb des SIB-Bytes 10 spezifiziert, welches Register den Basis-Wert für die Adress-Berechnung enthält, und ein Index-Feld innerhalb des SIB-Bytes 108 spezifiziert, welches Register den Index-Wert enthält. Ein Skalen-Feld innerhalb des SIB-Bytes 108 spezifiziert die Zweier-Potenz, mit der der Index-Wert multipliziert wird, bevor er zusammen mit einer Versetzung dem Basis-Wert hinzuaddiert wird. Das nächste Instruktions-Feld ist ein Versetzungs-Feld 110, das optional ist und eine Länge von einem bis vier Bytes haben kann. Das Versetzungs-Feld enthält eine Konstante, die bei Adress-Berechnungen verwendet wird. Das optionale Unmittelbar-Feld 112, das auch eine Länge von einem bis vier Bytes haben kann, enthält eine Konstante, die als Instruktionsoperand verwendet wird. Die kürzesten x86-Instruktionen sind nur ein Byte lang und weisen ein einzelnes opcode-Byte auf. 80286 setzt eine maximale Länge für eine Instruktion bei 10 Bytes, während 80386 und 80486 beide Instruktions-Längen von bis zu 15 Bytes erlauben.
  • Die Komplexität des x86-Instruktions-Satzes hat zahlreiche Schwierigkeiten beim Implementieren von x86-kompatiblen Mikroprozessoren bereitet. Insbesondere macht die variable Länge der x86-Instruktionen die Dekodier-Instruktionen schwierig. Das Dekodieren von Instruktionen involviert typischerweise das Bestimmen der Grenzen einer Instruktion und das anschließende Identifizieren jedes Felds innerhalb der Instruktion, z. B. der opcode- und Operanden- Felder. Das Dekodieren findet typischerweise statt, wenn die Instruktion vor der Ausführung aus dem Instruktions-Cache abgerufen wird.
  • Ein Verfahren zum Bestimmen der Grenzen von Instruktionen beinhaltet das Erzeugen und Speichern einer oder mehrerer Vordekodier-Bits für jedes Instruktions-Byte, während dieses aus dem Haupt-Speicher gelesen und in dem Instruktions-Cache gespeichert wird. Die Vordekodier-Bits liefern Information über das Instruktions-Byte, dem sie zugeordnet sind. Beispielsweise gibt ein ausgegebenes Vordekodier-Start-Bit an, dass das zugeordnete Instruktions- Byte das erste Byte einer Instruktion ist. Nachdem ein Start-Bit für eine bestimmte Instruktion berechnet worden ist, wird es zusammen mit dem Instruktions-Byte in dem Instruktions-Cache gespeichert. Wenn ein "Abruf" durchgeführt wird, wird eine Anzahl von Instruktions-Bytes aus dem Instrukti ons-Cache gelesen und dekodiert, was als Vorbereitung der Ausführung erfolgt. Sämtliche zugehörigen Start-Bits werden abgetastet, um gültige Masken für die einzelnen Instruktionen mit dem Abruf zu erzeugen. Eine gültige Maske ist eine Reihe von Bits, bei der jedes Bit einem bestimmten Instruktions-Byte entspricht. Gültig-Masken-Bits, die dem ersten Byte einer Instruktion, dem letzten Byte einer Instruktion und sämtlichen Bytes zwischen den ersten und letzten Bytes der Instruktion zugeordnet sind, werden nicht ausgegeben. Nachdem die gültige Maske berechnet worden ist, kann sie auch zum Wegmaskieren von Bytes aus anderen Instruktionen verwendet werden.
  • In der nun zu erläuternden Fig. 2 ist ein Beispiel einer gültigen Maske gezeigt. Die Figur zeigt einen Teil eines Abrufsignals 120 und seiner zugeordneten Start-Bits. Angenommen, dass eine gültige Maske 126 für die Instruktion B 128 erzeugt werden soll, werden das Start-Bit 122A und sämtliche Bits zwischen dem Start-Bit 122A und dem Start-Bit 122B ausgegeben, um eine Maske 126 zu erzeugen. Nachdem sie erzeugt worden ist, kann die gültige Maske 126 dann verwendet werden, um sämtliche Bytes innerhalb des Abrufsignals 120, die nicht Teil der Instruktion B 128 sind, wegzumaskieren.
  • Wie die vorstehende Beschreibung zeigt, kann die Vordekodier-Information besonders zweckmäßig sein, um die Dekodierzeiten zu reduzieren. Indem die Vordekodier-Information zusammen mit den Instruktions-Bytes in dem Instruktions-Cache gespeichert wird, braucht die Vordekodier-Information nur einmal berechnet zu werden, selbst falls die entsprechende Instruktion mehrere Male ausgeführt wird (z. B. in einer Schleife). Nachteiligerweise jedoch geht, wenn die Instruktion aus dem Instruktions-Cache ersetzt oder entfernt wird, sämtliche zugeordnete Vordekodier-Information verloren. Das nächste Mal, wenn die Instruktion in den Instruktions-Cache gelesen wird, muss die Vordekodier-Information nochmals generiert werden. Die Zeitverzögerung, die durch das Warten auf das Berechnen der Vordekodier-Information verursacht wird, kann besonders schädlich für die Leistungsfähigkeit sein, wenn die Instruktion als Ergebnis einer Abzweig-Fehlvorhersage oder eines Cache-Fehlgängers in den Instruktions-Cache gelesen wird. Im Gegensatz zu Instruktionen, die spekulativ vorabgerufen werden, bevor sie benötigt werden, können Abrufe, die aus Abzweig-Fehlvorhersagen oder Cache-Fehlgängern resultieren, ein Anhalten der Decoder und funktionalen Einheiten des Mikroprozessors verursachen, während der Empfang der angeforderten Instruktionen abgewartet wird. In diesem Fall kann die zum Erzeugen der Vordekodier-Information erforderliche Zeit einen beträchtlichen Einfluss auf die Leistungsfähigkeit des Prozessors haben.
  • Aus diesen und weiteren Gründen besteht der Wunsch nach einem Verfahren und einer Vorrichtung zum Reduzieren der Vordekodierzeiten. Insbesondere werden ein Verfahren und eine Vorrichtung zum Reduzieren der Zeit gewünscht, die zum Erzeugen von Vordekodier-Information für Instruktionen erforderlich ist, welche zuvor aus einem Instruktions-Cache entfernt worden sind.
  • OFFENBARUNG DER ERFINDUNG
  • Die oben angeführten Probleme werden weitgehend durch einen Mikroprozessor gemäß einem ersten Aspekt der Erfindung gelöst, der in dem angefügten Anspruch 1 definiert ist. Der Mikroprozessor ist derart konfiguriert, dass er Vordekodier-Information in einem Cache der Ebene zwei speichert, wenn entweder die Vordekodier-Information oder die entsprechenden Instruktions- Bytes in dem Instruktions-Cache ersetzt werden.
  • Insbesondere weist der Mikroprozessor eine Vordekodier-Einheit und einen Instruktions-Cache auf. Die Vordekodier-Einheit ist derart konfiguriert, dass sie Instruktions-Bytes aus einem Cache der Ebene zwei empfängt und entsprechende Vordekodier-Information erzeugt. Der Instruktions-Cache ist mit der Vordekodier-Einheit verbunden und weist zwei Gruppen von Speicherstellen auf: eine zum Speichern von Instruktions-Bytes, und eine zum Speichern von Vordekodier-Information, die den Instruktions-Bytes entspricht. Der Instruktions-Cache ist derart konfiguriert, dass er die Instruktions-Bytes und die Vordekodier-Information aus der Vordekodier-Einheit empfängt und speichert. Der Instruktions-Cache ist ferner derart konfiguriert, dass er mindestens einen Teil der entsprechenden Vordekodier-Information ausgibt, wenn die Instruktions-Bytes und die entsprechende Vordekodier-Information in dem Instruktions-Cache ersetzt werden. Die Vordekodier-Information wird zur Speicherung an Speicherstellen in dem Cache der Ebene zwei ausgegeben, die zum Speichern von Paritäts- und/oder Fehler-Prüf- und -Korrektur-Information konfiguriert ist.
  • Falls die gleichen Instruktions-Bytes benötigt werden, nachdem sie in dem Instruktions-Cache ersetzt worden sind und bevor sie in dem Cache der Ebene zwei ersetzt worden sind, können die Instruktions-Bytes und die Vordekodier- Information, die die Instruktionen begleiten, aus dem Cache der Ebene zwei abgerufen werden. Vorteilhafterweise kann die Verzögerung des Vordekodierens der Instruktions-Bytes in einigen Fällen umgangen werden. Durch Verwendung von Paritäts- und/oder Fehler-Prüf- und Korrektur-Speicherstellen können Modifikationen der Konfiguration des Caches der Ebene zwei reduziert oder beseitigt werden.
  • Bei einer bevorzugten Ausführungsform kann in dem Cache der Ebene zwei eine Invalidierungskonstante für Instruktions-Bytes gespeichert werden, die noch keine gültige Vordekodier-Information aufweisen. Die Vordekodier-Einheit kann derart konfiguriert sein, dass sie beim Lesen von Instruktions-Bytes aus dem Cache der Ebene zwei und auf neue Vordekodier-Information hin die Invalidierungskonstante detektiert.
  • Ein Verfahren zum Vordekodieren von Instruktionen variabler Länge gemäß einem zweiten Aspekt der vorliegenden Erfindung ist in dem beigefügten Anspruch 6 definiert. Das Verfahren umfasst das Lesen von Instruktions-Bytes aus einem Hauptspeichersystem und das Erzeugen von Vordekodier-Informa tion, die den Instruktions-Bytes entspricht. Die Instruktions-Bytes und die Vordekodier-Information werden in einem Instruktions-Cache gespeichert. Mindestens ein Teil der Vordekodier-Information wird einem Cache der Ebene zwei zur Speicherung zugeführt, wenn die der Vordekodier-Information entsprechenden Instruktions-Bytes in dem Instruktions-Cache überschrieben werden. Wiederum wird die Vordekodier-Information an Speicherstellen in dem Cache der Ebene zwei gespeichert, die zum Speichern von Paritäts- und/oder Fehler-Prüf- und Korrektur-Daten konfiguriert ist.
  • Ein zum Speichen von Vordekodier-Daten konfiguriertes Computersystem gemäß einem dritten Aspekt der vorliegenden Erfindung ist in dem beigefügten Anspruch 11 definiert. Das Computersystem weist einen Cache der Ebene zwei und einen Mikroprozessor auf. Der Mikroprozessor kann mit dem Cache der Ebene zwei verbunden werden uns ist mit einer Vordekodier-Einheit und einem Instruktions-Cache gemäß dem oben beschriebenen ersten Aspekt der vorliegenden Erfindung versehen. Die Vordekodier-Einheit ist zum Empfangen von Instruktions-Bytes aus dem Cache der Ebene zwei und zum Erzeugen entsprechender Vordekodier-Information konfiguriert. Der Instruktions-Cache ist mit der Vordekodier-Einheit verbunden und derart konfiguriert, dass er mindestens einen Teil seiner gespeicherten Vordekodier-Information zur Speicherung in dem Cache der Ebene zwei ausgibt, wenn die Instruktions- Bytes ersetzt werden. Der Cache der Ebene zwei ist derart konfiguriert, dass er die Vordekodier-Information aus dem Instruktions-Cache an Speicherstellen speichert, die zum Speichern von Paritäts- und/oder Fehler-Prüf- und Korrektur-Daten konfiguriert sind.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Weitere Aufgaben und Vorteile der Erfindung werden bei Einblick in die folgende detaillierte Beschreibung und im Zusammenhang mit der zugehörigen Zeichnungen ersichtlich:
  • Fig. 1 zeigt ein Blockschaltbild eines generischen x86-Instruktions-Format.
  • Fig. 2 zeigt ein Blockschaltbild einer Ausführungsform einer gültigen Maske.
  • Fig. 3 zeigt ein Blockschaltbild einer Ausführungsform eines Mikroprozessors.
  • Fig. 4 zeigt ein Schaubild von Details einer Ausführungsform des Interface zwischen den Instruktions-Cache gemäß Fig. 3 und dem Cache der Ebene zwei.
  • Fig. 5 zeigt ein Schaubild zum Darstellen von Detail des Verhältnisses zwischen einer Ausführungsform des Instruktions-Cache gemäß Fig. 4 und einer Ausführungsform des Cache der Ebene zwei gemäß Fig. 4.
  • Fig. 6 zeigt ein Flussdiagramm zur Darstellung einer Ausgestaltung eines Verfahrens zum Speichern von Vordekodier-Information in einem Cache der Ebene zwei.
  • Fig. 7 zeigt ein Schaubild einer Ausführungsform eines Computersystems, bei dem der Mikroprozessor gemäß Fig. 3 verwendet wird.
  • Obwohl die Erfindung mit verschiedenartigen Modifikationen und in alternativen Formen ausgebildet werden kann, werden als Beispiel spezielle Ausführungsformen der Erfindung in den Zeichnungen gezeigt und hier detailliert beschrieben. Es wird jedoch darauf hingewiesen, dass die Zeichnungen und deren detaillierte Beschreibung die Erfindung nicht auf die bestimmte gezeigte Form beschränken sollen, sondern dass die Erfindung im Gegenteil sämtliche Modifikationen, Äquivalente und Alternativen umfassen soll, die unter den in den zugehörigen Anspruch definierten Umfang der vorliegenden Erfindung fallen.
  • FORM(EN) DER AUSFÜHRUNG DER ERFINDUNG
  • In der nun zu beschreibenden Fig. 3 ist ein Blockschaltbild einer Ausführungsform eines Mikroprozessors 10 gezeigt; Der Mikroprozessor 10 enthält eine Vorabruf-/Vordekodier-Einheit 12, eine Abzweig-Vorhersage-Einheit 14, einen Instruktions-Cache 16, eine Instruktionsausricht-Einheit 18, mehrere Vordekodier-Einheiten 20A-20C, mehrere Reservierungsstationen 22A-22C, mehrere funktionale Einheiten 24A-24C, eine Lade-/Speicher-Einheit 26, einen Daten- Cache 28, eine Register-Datei 30, einen Neuordnungspuffer 32 und eine MROM-Einheit 34. Auf Elemente, die hier mit einer Bezugszahl und einem auf diese folgenden Buchstaben bezeichnet werden, kann auch kollektiv durch die Bezugszahl alleine verwiesen werden. Beispielsweise kann auf die Reservierungsstationen 22A-22C kollektiv durch die Erwähnung von Reservierungsstationen 22 verwiesen werden.
  • Die Vorabruf-/Vordekodier-Einheit 12 ist zum Empfang von Instruktionen aus einem (nicht gezeigten) Hauptspeicher-Untersystem geschaltet und ist ferner mit einem Instruktions-Cache 16 und einer Abzweig-Vorhersage-Einheit 14 verbunden. In ähnlicher Weise ist die Abzweig-Vorhersage-Einheit 14 mit dem Instruktions-Cache 16 verbunden. Die Abzweig-Vorhersage-Einheit 14 ist ferner mit der Instruktions-Ausricht-Einheit 18 und den funktionalen Einheiten 24A-C verbunden. Der Instruktions-Cache 16 ist ferner mit der MROM-Einheit 34 und der Instruktions-Ausricht-Einheit 18 verbunden. Die Instruktions-Ausricht-Einheit 18 ihrerseits ist mit der Lade-/Speicher-Einheit 26 und mit jeweiligen Dekodier-Einheiten 20A-C verbunden. Die jeweiligen Dekodier-Einheiten 20A-C sind mit den Reservierungsstationen 22A-C verbunden, die ferner mit jeweiligen funktionalen Einheiten 24A-C verbunden sind. Zusätzlich sind die Instruktions-Ausricht-Einheit 18 und die Reservierungsstationen 22 mit der Register-Datei 30 und dem Neuordnungspuffer 32 verbunden. Die funktionalen Einheiten 24 sind mit der Lade-/Speicher-Einheit 26, der Register-Datei 30 sowie dem Neuordnungspuffer 32 verbunden. Der Daten-Cache 28 ist mit der Lade-/Speicher-Einheit 26 und mit dem Hauptspeicher-Untersystem verbunden. Schließlich ist die MROM-Einheit 34 mit der Instruktions-Ausricht-Einheit 18 verbunden.
  • Die Instruktionen werden durch die Vorabruf-Vordekodier-Einheit 12 aus dem Hauptspeicher abgerufen. Die Vorabruf-Vordekodier-Einheit 12 vordekodiert die Instruktionen variabler Länge zu festen Instruktionen, die dann in dem Instruktions-Cache 16 gespeichert werden. Instruktionen können durch Verwendung eines Vorabruf-Schemas vorabgerufen und vordekodiert werden, bevor sie tatsächlich angefordert werden. Es können viele verschiedene Vordekodier- Schemata von der Vorabruf-Vordekodier-Einheit 12 verwendet werden. Bevor mit einer detaillierteren Beschreibung der Vordekodier-Einheit 12 und des Instruktions-Cache 16 fortgefahren wird, werden generelle Aspekte zu der als Beispiel gewählten Ausführungsform des in der Figur gezeigten Mikroprozessor 10 beschrieben.
  • Der Mikroprozessor 10 kann eine Abzweig-Vorhersage verwenden, um Instruktionen im Anschluss an die konditionalen Abzweig-Instruktionen spekulativ abzurufen. Die Abzweig-Vorhersage-Einheit 14 ist vorgesehen, um die Abzweig-Vorhersage-Operationen durchzuführen. Bei einer Ausführungsform werden bis zu zwei Abzweig-Target-Adressen für jeden 16-Byte-Abschnitt jeder Cache-Leitung in dem Instruktions-Cache 16 gespeichert. Die Vorabruf- /Vordekodier-Einheit 12 bestimmt die Anfangs-Abzweig-Target, wenn eine bestimmte Leitung vordekodiert wird. Anschließende Aktualisierungen zu den Abzweig-Targets, die einer Cache-Leitung entsprechen, können aufgrund der Ausführungen von Instruktionen innerhalb der Cache-Leitung auftreten. Der Instruktions-Cache 16 gibt an die Abzweig-Vorhersage-Einheit 14 einen Hinweis auf die Instruktions-Adresse aus, die gerade abgerufen wird. Dies ermöglicht der Abzweig-Vorhersage-Einheit 14, zu bestimmen, welche Abzweig- Target-Adressen gewählt werden sollen, wenn eine Abzweig-Vorhersage erstellt werden soll. Die Instruktions-Ausricht-Einheit 18 und die funktionalen Einheiten 24 geben Aktualisierungs-Information an die Abzweig-Vorhersage- Einheit 14 aus. Da jede Abzweig-Vorhersage-Einheit 14 zwei Targets pro 16- Byte-Abschnitt der Cache-Leitung speichert, können Vorhersagen für einige Abzweig-Instruktionen innerhalb der Leitung nicht in der Abzweig-Vorhersage- Einheit 14 gespeichert werden. Die Instruktions-Ausricht-Einheit 18 kann zum Detektieren von Abzweig-Instruktionen konfiguriert sein, die nicht von der Abzweig-Vorhersage-Einheit 14 vorhergesagt wurden. Die funktionalen Einheiten 24 führen die Abzweig-Instruktionen aus und prüfen, ob die vorhergesagte Abzweig-Richtung fehlvorhergesagt wurde. Es kann die Abzweig-Richtung "genommen" werden, in der nachfolgende Instruktionen aus der Target-Adresse der Abzweig-Instruktion abgerufen werden. Umgekehrt kann die Abzweig- Adresse "nicht genommen" werden, bei der nachfolgende Instruktionen aus Speicherstellen abgerufen werden, die auf die Abzweig-Instruktion folgen. Wenn eine fehlvorhergesagte Abzweig-Instruktion delektiert wird, werden Instruktionen, die auf den fehlvorhergesagten Abzweig folgen, aus den verschiedenen Einheiten des Mikroprozessors 10 entfernt. Es können viele verschiedene geeignete Abzweig-Vorhersage-Algorithmen von der Abzweig-Vorhersage- Einheit 14 verwendet werden.
  • Der Instruktions-Cache 16 ist ein Hochgeschwindigkeits-Cache-Speicher, der zum Speichern von Instruktionen vorgesehen ist, die aus der Vorabruf-/Vordekodier-Einheit 12 empfangen werden. Die gespeicherten Instruktionen werden dann aus dem Instruktions-Cache 16 abgerufen und der Instruktions- Ausricht-Einheit 18 zugeführt. Bei einer Ausführungsform kann der Instruktions-Cache 16 als eine mehrfach-assoziative Struktur konfiguriert sein. Der Instruktions-Cache 16 kann zusätzlich ein Weg-Vorhersage-Schema verwenden, um die Zugriffszeiten zu beschleunigen. Beispielsweise kann statt des Zugreifens auf Tags, die jede Zeile von Instruktionen identifizieren, und des Vergleichens der Tags mit der Abruf-Adresse, das zum Wählen eines Wegs vorgenommen wird, der Instruktions-Cache 16 den Weg, auf den zugegriffen wird, vorhersagen. Auf diese Weise wird der Weg spekulativ gewählt, bevor auf das Array zugegriffen wird. Mittels der Weg-Vorhersage kann die Zugriffszeit des Instruktions-Cache 16 derjenigen eines Direktabbildungs-Cache ähnlich sein. Nachdem die Instruktions-Bytes gelesen worden sind, wird ein Tag- Vergleich zur Verifikation durchgeführt. Falls die Weg-Vorhersage inkorrekt ist, werden die korrekten Instruktions-Bytes abgerufen, und die inkorrekten Instruktions-Bytes (die sich weiter abwärts in der Verarbeitungs-Pipeline befinden) werden entfernt. Es ist anzumerken, dass der Instruktions-Cache 16 in Voll-assioziativ-, Mehrfach-assoziativ- oder Direkt-Abbildungs-Konfigurationen implementiert werden kann.
  • Bei der MROM-Einheit 34 handelt es sich um einen Nurlesespeicher, der zum Speichern von Sequenzen von "Schnellweg-Instruktionen" konfiguriert ist. Schnellweg-Instruktionen sind Instruktionen, die von Decodern 20A-C und funktionalen Einheiten 24A-C dekodiert und ausgeführt werden können. "MROM"-Instruktionen hingegen sind Instruktionen, die zu komplex zum direkten Dekodieren oder Ausführen durch die Decoder 20A-C und die funktionalen Einheiten 24A-C sind. Wenn ein Instruktions-Cache 16 eine MROM-Instruktion ausgibt, reagiert die MROM-Einheit 34 durch Ausgeben einer Sequenz von Schnellweg-Instruktionen. Insbesondere analysiert und übersetzt die MROM- Einheit 34 die MROM-Instruktion in einen Unter-Satz definierter Schnellweg- Instruktionen, um die gewünschte Operation durchzuführen. Die MROM-Einheit 34 übermittelt den Unter-Satz von Schnellweg-Instruktionen an die Dekodiereinheiten 20A-C.
  • Nachdem die Instruktions-Bytes aus dem Instruktions-Cache 16 abgerufen worden sind, werden sie der Instruktions-Ausricht-Einheit 18 zugeführt. Die Instruktions-Ausricht-Einheit 18 leitet die Instruktionen zu einer der Dekodier- Einheiten 20A-C. Ferner wird Register-Operanden-Information detektiert und der Register-Datei 30 und dem Neuordnungspuffer 32 zugeführt. Zusätzlich gibt, falls die Instruktionen das Ausführen einer oder mehrerer Speicher- Operationen verlangen, die Instruktions-Ausricht-Einheit 18 die Speicher-Ope rationen an die Lade-/Speicher-Einheit 26 aus. Jede dekodierte Instruktion wird zusammen mit Operanden-Adress-Information und. Versetzungs- oder Unmittelbar-Daten, die in der Instruktion enthalten sein können, den Reservierungsstationen 22 zugeführt.
  • Der Mikroprozessor 10 unterstützt eine außerhalb der Reihenfolge erfolgende Ausführung und benutzt somit den Neuordnungspuffer 32, um die Original- Programmsequenz für die Register-Lese- und Schreib-Operationen zu verfolgen, die Register-Neubenennung zu implementieren, die Ausführung spekulativer Instruktionen und einer Abzweigungs-Fehlvorhersage-Rückgewinnung zu ermöglichen und die präzisen Ausnahmen zu erleichtern. Beim Dekodieren einer Instruktion, die das Neuordnen eines Registers erfordert, wird eine vorübergehende Speicherstelle innerhalb des Neuordnungspuffers 32 reserviert. Die vorübergehende Speicherstelle speichert den Zustand des spekulativen Registers, der aus der spekulativen Ausnahme einer Instruktion resultiert. Falls eine Abzweig-Vorhersage inkorrekt ist, können die Ergebnisse aus den spekulativ ausgeführten Instruktionen entlang des fehlvorhergesagten Wegs in dem Neuordnungspuffer 32 invalidiert werden, bevor sie in die Register-Datei 30 geschrieben werden. In ähnlicher Weise können, falls eine bestimmte Instruktion eine Ausnahme verursacht, Instruktionen im Anschluss an die ausnahme-verursachende Instruktion entfernt werden. Auf diese Weise sind Ausnahmen "präzise"(d. h. Instruktionen nach der ausnahme-verursachenden Instruktion werden nicht vor der Ausführung komplettiert). Es ist anzumerken, dass eine bestimmte Instruktion spekulativ ausgeführt wird, falls sie vor Instruktionen ausgeführt wird, die der bestimmten Instruktion in der Programm- Reihenfolge vorausgehen. Vorausgehende Instruktionen können eine Abzweiginstruktion oder eine ausnahme-verursachende Instruktion sein, wobei in diesem Fall die spekulativen Ergebnisse durch den Neuordnungspuffer 32 entfernt werden.
  • Die dekodierten Instruktionen und Unmittelbar- oder Versetzungs-Daten, die an den Ausgängen der Instruktions-Ausricht-Einheit 18 ausgegeben werden, werden direkt zu den jeweiligen als Reservierungsstationen 22 geleitet. Bei einer Ausführungsform ist jede Reservierungsstation 22 in der Lage, Instruktionsinformation (d. h. dekodierte Instruktionen sowie Operanden-Werte, Operanden-Tags und/oder Unmittelbar-Daten) für bis zu drei anhängige Instruktionen zu halten, die die Ausgabe an die entsprechende funktionale Einheit erwarten. Es ist anzumerken, dass bei der in der Figur gezeigten Ausführungsform jeder Reservierungsstation 22 eine spezielle funktionale Einheit 24 zugeordnet ist. Somit werden durch die Reservierungsstationen 22 und die funktionalen Einheiten 24 drei spezielle "Ausgabe-Positionen" gebildet. Anders ausgedrückt wird die Ausgabe-Position 0 von der Reservierungsstation 22A und der funktionalen Einheit 24A gebildet. Instruktionen, die aufgereiht und an die Reservierungsstation 22A ausgegeben werden, werden von den funktionalen Einheiten 24A ausgeführt. In ähnlicher Weise wird die Ausgabe-Position von der Reservierungsstation 22B und die funktionale Einheit 24B gebildet; und die Ausgabe-Position 2 wird von der Reservierungsstation 22C und der funktionalen Einheit 24C gebildet.
  • Falls beim Dekodieren einer bestimmten Instruktion ein erforderlicher Operand eine Register-Stelle ist, wird die Register-Adress-Information gleichzeitig zu dem Neuordnungspuffer 32 und der Registerdatei 30 geleitet. Fachleuten auf dem Gebiet wird ersichtlich sein, dass die x86-Register-Datei acht 32-Bit-Real- Register enthält (d. h. Register, die typischerweise als EAX, EBX, ECX, EDX, EBP, ESI, EDI und ESP bezeichnet werden). Bei Ausführungsformen des Mikroprozessors 10, bei denen die x86-Mikroprozessor-Architektur verwendet wird, weist die Register-Datei 30 Speicherstellen für jedes der 32-Bit-Real-Register auf. Zusätzliche Speicherstellen können in der Register-Datei 30 zur Verwendung durch die MROM-Einheit 34 enthalten sein. Der Neuordnungspuffer 32 enthält vorübergehende Speicherstellen für Ergebnisse, die den Inhalt dieser Register verändern, um dadurch eine Ausführung außerhalb der Reihenfolge zu ermöglichen. Eine vorübergehende Speicherstelle des Neuordnungspuffers 32 ist für jede Instruktion reserviert, die beim Dekodieren vorgesehen wird, um den Inhalt eines der Real-Register zu modifizieren. Somit kann an ver schiedenen Punkten während der Ausführung des Programms der Neuordnungspuffer 32 eine oder mehr Stellen aufweisen, die den spekulativ ausgeführten Inhalt eines gegebenen Registers enthalten.
  • Falls im Anschluss an das Dekodieren einer gegebenen Instruktion festgestellt wird, dass der Neuordnungspuffer 32 eine oder mehrere vorherige Stellen aufweist, die einem Register zugeordnet sind, das bei der gegebenen Instruktion als Operand verwendet wird, gibt der Neuordnungspuffer 32 an die entsprechende Reservierungsstation aus: entweder 1) den Wert an der zuletzt zugeordneten Stelle, oder 2) das Tag für die zuletzt zugeordnete Stelle, falls der Wert noch nicht durch die funktionale Einheit erzeugt worden ist, die schließlich die vorherige Instruktion ausführt. Falls der Neuordnungspuffer 32 eine Stelle aufweist, die für ein gegebenes Register reserviert ist, wird der O- peranden-Wert (oder das Neuordnungspuffer-Tag) aus dem Neuordnungspuffer 32 statt aus der Register-Datei 30 zugeführt. Falls keine Stelle für ein erforderliches Register in dem Neuordnungspuffer 32 reserviert ist, wird der Wert direkt der Register-Datei 30 entnommen. Falls der Operand einer Speicherstelle entspricht, wird der Operanden-Wert direkt aus der Register-Datei 30 entnommen. Falls der Operand einer Speicherstelle entspricht, wird der Operanden-Wert durch die Lade-/Speicher-Einheit 26 an die Reservierungsstation übermittelt.
  • Bei einer bestimmten Ausführungsform ist der Neuordnungspuffer 32 derart konfiguriert, dass er gleichzeitig dekodierte Instruktionen als Einheit speichert und handhabt. Diese Konfiguration wird hier als "leitungs-orientiert" bezeichnet. Indem mehrere Instruktionen zusammen manipuliert werden, kann die in dem Neuordnungspuffer 32 verwendete Hardware vereinfacht werden. Beispielsweise weist ein in der vorliegenden Ausführungsform enthaltener leitungs-orientierter Neuordnungspuffer einen hinreichenden Speicherraum für drei Instruktionen betreffende Instruktions-information jedes Mal zu, wenn eine oder mehr Instruktionen mittels der Instruktions-Ausricht-Einheit 18 gehandhabt werden. Hingegen wird bei herkömmlichen Neuordnungspuffern eine variable Menge an Speicherplatz zugewiesen, je nach der Anzahl von Instruktionen, die momentan gehandhabt werden. Es kann eine vergleichsweise größere Anzahl von Logik-Gates erforderlich sein, um die variable Menge an Speicherplatz zuzuweisen. Wenn jede der gleichzeitig dekodierten Instruktionen ausgeführt worden ist, werden die Instruktions-Ergebnisse gleichzeitig in der Register-Datei 30 gespeichert. Der Speicherplatz ist dann frei zur Zuordnung zu einem weiteren Satz gleichzeitig dekodierter Instruktionen. Zusätzlich wird das pro Instruktion verwendete Ausmaß an Steuerschaltung reduziert, da sich die Steuer-Logik über mehrere gleichzeitig dekodierte Instruktionen amortisiert. Ein Neuordnungspuffer-Tag, das eine bestimmte Instruktion identifiziert, kann in zwei Felder unterteilt werden: ein Leitungs-Tag und ein Offset-Tag. Das Leitungs-Tag identifiziert den Satz gleichzeitig dekodierter Instruktionen einschließlich einer bestimmten Instruktion, und das Offset-Tag bestimmt, welche Instruktion innerhalb des Satzes der bestimmten Instruktion entspricht. Es ist anzumerken, dass das Speichern von Instruktionen in der Register-Datei 30 und das Freigeben des entsprechenden Speicherraums als "Zurückziehen" der Instruktionen bezeichnet wird. Ferner ist anzumerken, dass bei den verschiedenen Ausführungsformen des Mikroprozessors 10 jede Neuordnungspuffer-Konfiguration verwendet werden kann.
  • Wie bereits erwähnt, speichern die Reservierungsstationen 22 Instruktionen, bis die Instruktionen von der entsprechenden funktionalen Einheit 24 ausgeführt werden. Eine Instruktion wird zur Ausführung gewählt, falls: (i) die Operanden der Instruktion zugeführt worden sind; und (ii) die Operanden noch nicht für Instruktionen zugeführt worden sind, die sich innerhalb der gleichen Reservierungsstation 22A-22C befinden und die in der Programm-Reihenfolge vor der Instruktion liegen. Es ist anzumerken, dass, wenn eine Instruktion von einer der funktionalen Einheiten 24 ausgeführt wird, das Ergebnis dieser Instruktion direkt an sämtliche Reservierungsstationen 22 weitergeleitet wird, die auf dieses Ergebnis warten, und zwar zur gleichen Zeit, zu der das Ergebnis zum Aktualisieren des Neuordnungspuffer 32 weitergegeben wird. (Diese Technik wird allgemeinhin als "Ergebnis-Weiterleiten" bezeichnet.) Eine In struktion kann während des Takt-Zyklus, während dem ein zugehöriges Ergebnis weitergeleitet wird, zur Ausführung ausgewählt und einer funktionalen Einheit 24 zugeführt werden. Die Reservierungsstationen 22 führen das weitergeleitete Ergebnis in diesem Fall der funktionalen Einheit 24 zu.
  • Bei einer Ausführungsform ist jede funktionalen Einheit konfiguriert zum Durchführen der Ganzzahl-Rechenoperationen der Addition und Subtraktion sowie von Schiebe-, Rotations-, logischer und Abzweig-Operationen. Es ist anzumerken, dass auch eine (nicht gezeigte) Floating-point-Einheit verwendet werden kann, um Floating-Point-Operationen durchzuführen. Die Floatingpoint-Einheit kann als Coprozessor betätigt werden, die Instruktionen von der MROM-Einheit 34 empfängt und anschließend mit dem Neuordnungspuffer 32 kommuniziert, um die Instruktionen abzuschließen. Zusätzlich können die funktionalen Einheiten 24 zum Durchführen der Adress-Erzeugung für Lade- und Ablage-Speicher-Operationen verwendet werden, die von der Lade- /Speicher-Einheit 26 durchgeführt werden.
  • Jede der funktionalen Einheiten 24 liefert ferner Information zu der Ausführung konditionaler Abzweig-Instruktionen an die Abzweig-Vorhersage-Einheit 14. Falls eine Abzweig-Vorhersage inkorrekt war, flusht die Abzweig- Vorhersage-Einheit 14 auf den fehlvorhergesagten Abzweig folgende Instruktionen, die in die Instruktions-Verarbeitungs-Pipeline eingegeben worden sind, und veranlasst ein Abrufen der erforderlichen Instruktionen aus dem Instruktions-Cache 16 oder dem Hauptspeicher. Es ist anzumerken, dass in derartigen Situationen die Ergebnisse von Instruktionen in der Original-Programm-Sequenz, die nach der fehlvorhergesagten Abzweig-Instruktion auftreten, entfernt werden, einschließlich derjenigen, die spekulativ ausgeführt wurden und vorübergehend in der Lade-/Speicher-Einheit 26 und dem Neuordnungspuffer 32 gespeichert wurden.
  • Die von den funktionalen Einheiten 24 erzeugten Ergebnisse werden dem Neuordnungspuffer 32 zugeführt, falls ein Register-Wert aktualisiert wird, und zu der Lade-/Speicher-Einheit 26, falls der Inhalt einer Speicherstelle geändert wird. Falls das Ergebnis in einem Register gespeichert werden soll, speichert der Neuordnungspuffer 32 das Ergebnis an der für den Wert des Registers reservierten Stelle, wenn die Instruktion dekodiert wurde. Es sind mehrere Ergebnis-Busse 38 vorgesehen, um die Ergebnisse von den funktionalen Einheiten 24 und der Lade-/Speicher-Einheit 26 weiterzuleiten. Die Ergebnis-Busse 38 übermitteln das erzeugte Ergebnis sowie das Neuordnungspuffer-Tag, das die gerade ausgeführte Instruktion identifiziert.
  • Die Lade-/Speicher-Einheit 26 bildet ein Interface zwischen den funktionalen Einheiten 24 und dem Daten-Cache 28. Bei einer Ausführungsform ist die Lade-/Speicher-Einheit 26 mit einem Lade-/Speicher-Puffer versehen, der acht Speicherstellen für Daten- und Adress-Information für anhängige Ladeinhalte und Speicherungen aufweist. Wenn ein Puffer voll ist, wartetet die Instruktions-Ausricht-Einheit 18, bis die Lade-/Speicher-Einheit 26 Platz für die Request-Information der anhängigen Ladeinhalte und Speicherungen hat. Die Lade-/Speicher-Einheit 26 führt auch eine Abhängigkeitsprüfung für Lade- Speicher-Operationen gegen anhängige Ablagespeicher-Operationen durch, um zu gewährleisten, dass die Daten-Kohärenz aufrechterhalten wird. Eine Speicher-Operation ist ein Transfer von Daten zwischen dem Mikroprozessor 10 und dem Hauptspeicher-Untersystem. Speicher-Operationen können das Ergebnis einer Instruktion sein, die einen in dem Speicher gespeicherten Operanden verwendet/ oder sie kann das Ergebnis einer Lade-/Speicher-Instruktion sein, die den Daten-Transfer, jedoch keine andere Operation verursacht. Zusätzlich kann die Lade-/Speicher-Einheit 26 einen speziellen Register-Speicherbereich enthalten, wie z. B. die Segment-Register und andere Register, die in Bezug zu dem Adress-Übersetzungs-Mechanismus stehen, der durch die x86-Architektur definiert ist.
  • Bei einer Ausführungsform ist die Lade-/Speicher-Einheit 26 zum spekulativen Ausführen von Lade-Speicher-Operationen konfiguriert. Ablage-Speicher-Operationen können in der Programm-Reihenfolge durchgeführt werden, können jedoch auch spekulativ in dem vorhergesagten Weg gespeichert werden. Falls der vorhergesagte Weg inkorrekt ist, werden die Daten vor der Ablage-Speicher-Operation anschließend in dem vorhergesagten Weg wiederhergestellt, und die Ablage-Speicher-Operation wird in der korrekten Weise durchgeführt. Bei anderen Ausführungsformen können Speichervorgänge auch spekulativ durchgeführt werden. Spekulativ ausgeführte Speichervorgänge werden zusammen mit einer Kopie der Cache-Leitung vor der Aktualisierung in einem Speicher-Puffer platziert. Falls der spekulativ ausgeführte Speicherinhalt später aufgrund einer Abzweig-Fehlvorhersage oder Ausnahme entfernt wird, kann die Cache-Leitung auf den in dem Puffer gespeicherten Wert zurückgebracht werden. Es ist anzumerken, dass die Lade-/Speicher-Einheit 26 zum Durchführen jeder Menge spekulativer Ausführungen konfiguriert sein kann, einschließlich keiner spekulativen Ausführung.
  • Bei dem Daten-Cache 28 handelt es sich um einen Hochgeschwindigkeits- Cache-Speicher, der zum vorübergehenden Speichern von Daten vorgesehen ist, die zwischen der Lade-/Speicher-Einheit 26 und dem Hauptspeicher-Untersystem übertragen werden. Bei einer Ausführungsform hat der Daten-Cache 28 eine Speicherkapazität von bis zu sechzehn Kilobytes in einer Acht-Wege- Mehrfach-Assoziativ-Struktur. Ähnlich wie der Instruktions-Cache 16 kann der Daten-Cache 28 einen Wege-Vorhersage-Mechanismus verwenden. Es versteht sich, dass der Daten-Cache 28 in verschiedenen speziellen Speicher- Konfigurationen implementiert werden kann, einschließlich mehrfach-assoziativer und Direkt-Abbildungs-Konfigurationen.
  • Bei einer bestimmten Ausführungsform des Mikroprozessors 10, bei dem die x86-Mikroprozessor-Architektur verwendet wird, werden der Instruktionscache 16 und der Daten-Cache 28 linear adressiert. Die lineare Adresse wird gebildet aus dem Offset, das durch die Instruktion spezifiziert ist, und der Basis-Adresse, die durch den Segment-Abschnitt des x86-Adress-Übersetzungs- Mechanismus spezifiziert ist. Die Linear-zu-physisch-Übersetzung wird durch den Paging-Abschnitt des x86-Adress-Übersetzungs-Mechanismus spezifiziert.
  • Es ist anzumerken, dass ein linear adressierter Cache lineare Adress-Tags speichert. Ein Satz (nicht gezeigter) physischer Tags kann verwendet werden, um die linearen Adressen auf physische Adressen abzubilden und zum Übersetzungs-Aliases zu detektieren. Zusätzlich kann der physische Tag-Block eine Linear-zu-physisch-Adress-Übersetzung durchführen.
  • Vorabruf-/Vordekodier-Einheiten- und Instruktions-Cache-Konfiguration
  • Wie bereits angemerkt, können zahlreiche Speichereinrichtungen, die zur Verwendung als externe Caches für Mikroprozessoren ausgebildet sind, z. B. die Cache-RAMs 82491/82492 von Intel, zum Speichern von Paritätsinformation konfiguriert sein. Bei einer Ausführungsform kann für jede acht Daten-Bits ein Paritäts-Bit gespeichert werden. Nimmt man an, dass eine geradzahlige Parität gewünscht ist, dann hätte ein Daten-Byte 01101011 ein derartiges zugeordnetes Paritäts-Bit, dass die Gesamt-Anzahl der zugeordneten Bits gerade ist. Das Paritäts-Bit kann durch den Mikroprozessor erzeugt werden und dann zusammen mit dem Daten-Byte in dem externen Cache gespeichert werden. Wenn der Mikroprozessor die Daten aus dem Cache zurückliest, kann er die zugeordneten Daten- und Paritäts-Bits zählen. Falls der resultierende Wert nicht zu der gewählten Parität passt, dann ist ein Paritäts-Fehler aufgetreten, und der Mikroprozessor kann einen entsprechenden Vorgang durchführen, z. B. dem Betriebssystem das Auftreten eines Speicher-Fehlers signalisieren. Andere Speichereinrichtungs-Konfigurationen können zusätzliche Bits zur Fehler- Prüfung und -Korrektur (ECC) zuweisen.
  • Während. High-end-Systeme wie z. B. Server typischerweise Paritäts- und ECC unterstützen, treffen viele Designer von Low- zu Mid-range-Systemen ihre Wahl dahingehend, dass sie diese Merkmale nicht aktivieren, da nur eine relativ niedrige Wahrscheinlichkeit des Auftretens eines Daten-Fehlers besteht. Bei diesen Systemen können die Paritäts- und ECC-Bits in den Caches der Ebene zwei zum Speichern von Vordekodier-Information verwendet werden. Dadurch kann vorteilhafterweise die Leistung verbessert werden, ohne dass kostenaufwendige Hardware-Veränderungen auf der System-Ebene erforderlich sind.
  • Die nun zu beschreibende Fig. 4 zeigt eine Schaubild von Einzelheiten einer Ausführungsform der Vordekodier-Einheit 12 und des Instruktions-Cache 16. Bei dieser Ausführungsform ist die Vordekodier-Einheit 12 über eine Bus- Interface-Logik 52 mit einem Cache 50 verbunden. Der Cache 50 weist einen mit niedriger Latenz und hoher Bandbreite versehenen Speicher auf, der entweder auf dem gleichen Silicium wie der Mikroprozessor 10 oder auf einem weiteren Silicium angeordnet ist, das in der Nähe zugeschaltet ist, z. B. auf einer Tochter-Platine oder auf einer Mutter-Platine in der Nähe des Mikroprozessors 10. Der Cache 50 kann statische Direktzugriffsspeicher (SRAMs), synchrone dynamische Zugriffsspeicher (SDRAMs) oder andere Typen von Speicher mit niedriger Latenz aufweisen. Der Cache 50 kann auf dem gleichen Silicium wie der Mikroprozessor 10 oder einem separaten Silicium angeordnet sein. Bei einigen Ausführungsformen kann der Cache 50 als eine Cache der "Ebene zwei" bezeichnet werden, da er der zweitnächste Cache zu den funktionalen Einheiten des Mikroprozessors 10 ist, d. h. nach dem Instruktionscache 16 der Ebene eins und dem Daten-Cache 28. Der Cache 50 kann auch als "externer Cache" bezeichnet werden, da er sich außerhalb des Mikroprozessors befindet.
  • Die Bus-Interface-Logik 52 kann Multiplexer, Puffer, Transceiver, Treiber oder andere Typen von Bus-Interface-Logik aufweisen, die die Übertragung von Daten-, Adress- und Steuersignalen zwischen dem Mikroprozessor 10 und dem Cache 50 aktivieren oder verbessern kann. Bei einigen Ausführungsformen kann möglicherweise keine Bus-Interface-Logik 52 zwischen dem Mikroprozessor 10 und dem Cache 50 der Ebene zwei erforderlich sein. Falls sich beispielsweise der Mikroprozessor 10 und der Cache 50 der Ebene zwei physisch nahe genug aneinander angeordnet sind und die Treiberleistung ihrer Ausgangstransistoren hoch genug ist, dann können der Mikroprozessor 10 und der Cache 50 ohne die Bus-Interface-Logik 52 miteinander verbunden werden.
  • Die Vordekodier-Logik 12 ist konfiguriert zum Empfangen von Instruktions- Adressen, die aus der Abzweig-Vorhersage-Einheit 14 vorabgerufen werden sollen, und zum Zuführen der Adressen zu dem Cache 50 über den Bus 68, die Bus-Interface-Logik 52 und den Speicher-Bus 58. Falls der Cache 50 der Ebene zwei gerade die den angeforderten Adressen entsprechenden Instruktions- Bytes speichert, wird eine vorbestimmte Anzahl von Instruktions-Bytes (z. B. eine Cache-Leitung von 32-Bytes) über den Bus 56, die Bus-Interface-Logik 52 und den Bus 68 an die Vordekodier-Einheit 12 übermittelt. Falls die angeforderten Instruktions-Bytes nicht in dem Cache 50 der Ebene zwei gespeichert werden, ist der Cache 50 konfiguriert zum Rückgewinnen der angeforderten Instruktions-Bytes aus dem Hauptspeicher-Untersystem. Nachdem die angeforderten Instruktions-Bytes aus dem Hauptspeicher-Untersystem ausgegeben worden sind, werden sie dem Instruktions-Cache 16 zugeführt. Sie können auch in dem Cache 50 gespeichert werden.
  • Wenn die Vordekodier-Einheit 12 die angeforderten Instruktions-Bytes empfängt, erzeugt die Vordekodier-Information für jedes Instruktions-Byte. Bei der in der Figur gezeigten Ausführungsform erzeugt die Vordekodier-Einheit 12 ein Start-Bit für jedes Instruktions-Byte. Nimmt man an, dass die Vordekodier- Einheit 12 auf das Ausgeben einer angeforderten Adresse hin 32 Bytes (z. B. eine Cache-Leitung) empfängt, kann die Vordekodier-Einheit 12 konfiguriert sein zum Erzeugen eines Start-Bits für jedes Instruktions-Byte für insgesamt 32 Start-Bits. Nachdem sie erzeugt worden sind, werden die Start-Bits dem Instruktions-Cache 16 zugeführt, wo sie zusammen mit ihren zugeordneten Instruktions-Bytes gespeichert werden. Der Instruktions-Cache 16 kann lokal in Form mehrerer Cache-Leitungs-Speicherstellen 64 und mehrerer Vordekodier-Informations-Speicherstellen 62 organisiert sein, wobei jeder Cache-Leitungs-Speicherstelle eine Vordekodier-Informations-Speicherstelle entspricht. Die Instruktions-Bytes und die Vordekodier-Bits können auch direkt zu der Instruktions-Ausricht-Einheit 18 geleitet werden.
  • Nachdem sämtliche Cache-Leitungs-Speicherstellen 64 innerhalb des Instruktions-Cache 16 voll sind, kann eine Anzahl verschiedener Algorithmen verwendet werden, um zu entscheiden, welche Cache-Leitung bei einem Cache-Fehlgänger ersetzt werden soll. Beispielsweise kann zum Reduzieren der Möglichkeit, dass Information, die in der nahen Zukunft benötigt wird, hinausgeworfen wird, ein Zuletzt-verwendet-(LRU-)Ersetzungsschema benutzt werden, das die Reihenfolge der Cache-Zugriffe aufzeichnet. Wenn die zu überschreibende Cache-Leitung gewählt worden ist, wird die zugehörige Vordekodier-Information, die an der entsprechenden Vordekodier-Speicherstelle 62 gespeichert ist, durch die Vordekodier-Einheit 12 und die Interface-Logik 52 aus dem Instruktions-Cache 16 an den Cache 50 ausgegeben. Die Vordekodier-Einheit 12 übermittelt auch die Adresse, die der überschriebenen Instruktions-Cache- Information entspricht.
  • Wenn der Cache 50 die Vordekodier-Bits und die entsprechende Adresse aus der Vordekodier-Einheit 12 und dem Instruktions-Cache 16 abgerufen hat, ist der Cache 50 konfiguriert zum Speichern der Vordekodier-Bits an den Paritäts- Bit-Speicherstellen 60, die der entsprechenden Adresse zugeordnet sind. Bei einigen Ausführungsformen können die tatsächlichen Instruktions-Bytes, die in dem Instruktions-Cache 16 überschrieben werden sollen, auch an den Cache 50 ausgegeben werden, um zusammen mit den Vordekodier-Bits gespeichert zu werden. Diese Konfiguration kann bei einigen Ausführungsformen des Mikroprozessors 10 vorteilhaft sein, um einen selbstmodifizierenden Code zu unterstützen. Beispielsweise können die Speicher-Adressen von dem Instruktions-Cache 16 "beschnüffelt" werden, um festzustellen, ob eine Speicherinstruktion Instruktions-Bytes überschreiben wird, die in dem Instruktionscache 16 gespeichert sind. Falls dies der Fall ist, kann die Speicher-Instruktion an dem Instruktions-Cache 16 und der Vordekodier-Einheit 12 vorgenommen werden, um dadurch die gewünschten Instruktions-Bytes zu modifizieren. Bei einer derartigen Konfiguration kann die Vordekodier-Einheit 12 konfiguriert sein zum Neuberechnen von Vordekodier-Information für die Instruktion, die modifiziert worden ist, und zum anschließenden Speichern der Vordekodier- Bits in dem Instruktions-Cache 16. Falls der Cache 50 als Write-back-Cache konfiguriert ist, können die modifizierten Instruktions-Bytes später in den Cache 50 geschrieben werden, wenn die Cache-Leitungs-Speichersteile, die die modifizierten Instruktions-Bytes speichert, in dem Instruktions-Cache 16 überschrieben wird.
  • Nachdem die Vordekodier-Information (und die Instruktions-Bytes, falls derart konfiguriert) in den Cache 50 geschrieben worden sind, können die Cache- Leitungs-Speichersteile und die Vordekodier-Informations-Speicherstelle in dem Instruktions-Cache 16 sicher mit neuen Instruktions-Bytes und neuer Vordekodier-Information überschrieben werden. Wenn die Vordekodier-Einheit 12 ein Vorabruf- oder Abruf-Request für Instruktions-Bytes empfängt, die an den Cache 50 ausgegeben worden sind, gibt die Vordekodier-Einheit 12 die angeforderte Adresse an den Cache 50 aus. Falls der Cache 50 noch die entsprechenden Instruktions-Bytes und die Vordekodier-Information speichert (d. h. falls sie nicht ersetzt worden sind), dann kann der Cache 50 dahingehend konfiguriert sein, dass er sie an die Vordekodier-Einheit 12 weiterleitet. Die Vordekodier-Einheit 12 kann die Instruktions-Bytes und die entsprechende Vordekodier-Information an die Instruktions-Ausricht-Einheit 18 und den Instruktions-Cache 16 übermitteln. Vorteilhafterweise kann bei dieser Ausführungsform der Vorgang des Erzeugens neuer Vordekodier-Information für die angeforderten Instruktions-Bytes übergangen werden. Wie bereits bemerkt, kann dies bei einigen Ausführungsformen des Mikroprozessors 10 vorteilhaft sein, wenn eine Abzweig-Fehlvorhersage oder ein Cache-Fehlgänger auftreten und die funktionalen Einheiten 24A-C in Gefahr sind, in Stillstand zu gelangen.
  • Falls hingegen der Cache 50 die gewünschten Instruktions-Bytes durch andere Instruktions-Bytes ersetzt hat, die an einer anderen Adresse angeordnet sind, kann der Cache 50 konfiguriert sein zum Aufrufen der angeforderten Bytes aus dem Hauptspeicher und zum Zuführen der Bytes zu der Vordekodier-Einheit 12. Der Cache 50 kann konfiguriert sein zum Ausgeben eines bestimmten Steuersignals, wenn die Instruktions-Bytes an die Vordekodier-Einheit 12 ü bertragen werden, um anzuzeigen, dass der Instruktions-Cache 16 keine gültige Vordekodier-Information für die momentan übertragenen Instruktions- Bytes hat.
  • Bei einer anderen Ausführungsform kann die Steuereinheit 80 den Cache 50 überwachen und eine bestimmte Invalidations-Sequenz von Vordekodier-Bits an den Paritäts-/ECC-Speicherstellen 60 speichern, die einer Instruktionsspeicherstelle 58 entsprechen, welche durch neue Instruktions-Bytes aus dem Hauptspeicher ersetzt wird. Dies "initialisiert" effektiv die Vordekodier-Information für die neuen Instruktions-Bytes. Bei dieser Konfiguration kann der Cache 50 derart ausgebildet sein, dass er die Sequenz von Vordekodier-Bus ausgibt, wenn die entsprechenden Instruktions-Bytes durch die Vordekodier- Einheit 12 angefordert werden. Vorteilhafterweise kann bei dieser Konfiguration der Cache 50 ein Standard-Cache sein, der Parität/ECC unterstützt und nicht in irgendeiner Weise modifiziert zu werden braucht, um zu erkennen, ob die Vordekodier-Bits, die er ausgibt, gültig oder ungültig sind. Stattdessen kann die Vordekodier-Einheit 12 konfiguriert sein zum Prüfen der Vordekodier- Bits, die sie aus dem Cache 50 aufruft. Falls die Vordekodier-Bits zu der vorbestimmten Invalidations-Sequenz passen, kann die Vordekodier-Einheit 12 zum Berechnen neurer Vordekodier-Information konfiguriert sein. Falls die Vordekodier-Bits nicht zu der vorbestimmten Invalidations-Sequenz passen, kann die Vordekodier-Einheit 12 konfiguriert sein zum Weiterleiten der Vordekodier-Bits aus dem Cache 50 der Ebene zwei zu dem Instruktions-Cache 16 (und der Instruktions-Ausricht-Einheit 18/ den Dekodier-Einheiten 20A-C, falls erforderlich).
  • Es ist zu beachten, das die Busse 56 und 68 jede praktische Größe haben können, z. B. 16, 32, 64 oder 128 Bits, Die Anzahl der verwendeten Busleitungen kann durch Multiplexen von Daten-, Adress- und Steuer-Bussen reduziert werden. Bei einigen Ausführungsformen können die Vordekodier-Einheit 12 und der Cache 50 der Ebene zwei konfiguriert sein zum Erzeugen von Paritäts-Bits für Adressen, die übermittelt und empfangen werden. Diese Paritäts-Bits brau chen jedoch nicht gespeichert zu werden und jedes Mal, wenn die Adresse übermittelt worden ist, entfernt werden.
  • Bei einer wiederum weiteren Ausführungsform kann Vordekodier-Information zusätzlich zu den Start-Bits von der Vordekodier-Einheit 12 erzeugt werden und in dem Instruktions-Cache 16 gespeichert werden. Beispielsweise können auch End-Bits, die angeben, ob ihr zugehöriges Instruktions-Byte das abschließende Byte einer Instruktion ist, und opcode-Bytes, die angeben, ob ihr zugehöriges Instruktions-Byte ein opcode-Byte ist, ebenfalls von der Vordekodier-Einheit 12 erzeugt werden und in dem Instruktions-Cache 16 gespeichert werden. Einige oder sämtliche dieser Vordekodier-Bits können dem Cache 50 zugeführt werden, wenn die Instruktions-Bytes in dem Cache 16 ersetzt werden, je nach der Anzahl von Paritäts- oder ECC-Bits 60, die in dem Cache 50 verfügbar sind.
  • Bei einigen Ausführungsformen können die Dekodier-Einheiten 20A-C derart konfiguriert sein, dass sie detektieren, wann die von der Vordekodier-Einheit 12 oder gelieferte oder aus dem Instruktions-Cache 16 gelesene Vordekodier- Information inkorrekt ist. Ungenauigkeiten der Vordekodier-Information können aus verschiedenen Gründen auftreten, je nach dem Verfahren, das zum Erzeugen der Vordekodier-Information verwendet wird. Im Fall einer ungenauen Vordekodier-Information können die Vordekodier-Information derart konfiguriert sein, dass sie den Betrieb anhalten, während die Vordekodier-Einheit 12 die Vordekodier-Information regeneriert. Die neue Vordekodier-Information kann dann in den Instruktions-Cache 16 über die ungenaue Vordekodier- Information geschrieben werden. Bei einer weiteren Ausführungsform können die Dekodier-Einheiten 20A-C so konfiguriert sein, dass sie die ungenaue Vordekodier-Information einfach entfernen und das Dekodieren selbst abschließen.
  • Die nun zu beschreibende Fig. 6 zeigt weitere Einzelheiten einer Ausführungsform des Instruktions-Cache 16 und des Cache 50. Wie bereits beschrieben, kann der Instruktions-Cache 16 mit Instruktions-Speicherstellen 62 und Vordekodier-Informations-Speicherstellen 64 versehen sein. Jede Vordekodier- Informations-Speicherstelle entspricht einer Instruktions-Speicherstelle. Beispielsweise entspricht die an der Speicherstelle 80 gespeicherte Vordekodier- Information den Instruktions-Bytes, die an der Instruktions-Speicherstelle 82 gespeichert sind. Bei der in der Figur gezeigten Ausführungsform speichert die Speicherstelle 80 Start-Bits, die jedem an der Stelle 82 gespeicherten Instruktions-Byte entsprechen.
  • Wie die Figur zeigt, kann der Cache 50 die gleichen Instruktions-Bytes wie der Instruktions-Cache 16 speichern. Wenn beispielsweise die Instruktionen aus dem Code-Segment 72 zum ersten Mal angefordert werden, können sie aus dem Hauptspeicher in den Cache 50 der Ebene zwei und den Instruktionscache 16 gelesen werden. Es ist jedoch zu beachten, dass der Cache 50 der Ebene zwei keine Vordekodier-Daten für das Code-Segment 72 hat. Deshalb wird die vorbestimmte Invalidations-Konstante (in diesem Fall 00000000 . . .) an der Stelle 90 gespeichert. Wenn die Vordekodier-Einheit 12 die Instruktions-Bytes empfängt, detektiert sie die Invalidations-Konstante und fährt mit dem Berechen der Vordekodier-Information für das Code-Segment 72 fort. Diese Vordekodier-Information wird dann an der Speicherstelle 80 in dem Instruktions-Cache 16 gespeichert.
  • Der gleiche Vorgang erfolgt beim ersten Mal, das die Instruktionen in dem Code-Segment 78 angefordert werden. Nachdem jedoch die Instruktions-Bytes für das Code-Segment 78 in dem Instruktions-Cache 16 ersetzt worden sind, wird die Vordekodier-Information zurück in den Cache 50 der Ebene zwei geschrieben und an der Stelle 94 gespeichert. Falls das Code-Segment 78 wieder angefordert wird, nachdem es in dem Instruktions-Cache 16 ersetzt worden ist und bevor es in dem Cache 50 der Ebene zwei ersetzt worden ist, können sowohl die Instruktions-Bytes als auch die Vordekodier-Information für das Code-Segment 78 aus den Stellen 94-96 gelesen werden und in dem Instruktions-Cache 16 gespeichert werden. Dieser Zustand ist in der Figur gezeigt.
  • Während jede vorbestimmte Sequenz von Bits als Invalidations-Konstante verwendet werden kann, kann es bei einigen Ausführungsformen vorteilhaft sein, eine Vordekodierungs-Sequenz zu wählen, bei der es unwahrscheinlich ist, dass die von der Vordekodier-Einheit 12 erzeugt wird. Nimmt man beispielsweise eine maximale Instruktions-Länge von 16 Bytes und eine Cache- Leitungs-Länge von 32 Bytes an, ist es unwahrscheinlich, dass die Vordekodier-Einheit 12 eine Cache-Leitung 32 empfängt, die 32 aufeinanderfolgende Instruktions-Bytes ohne mindestens ein Start-Byte aufweist. Somit kann das Wählen einer Invalidations-Konstanten mit 32 Nullen vorteilhaft sein, da sie die Anzahl falscher Invalidationen reduzieren kann. Eine falsche Invalidation kann auftreten, wenn die von der Vordekodier-Einheit 12 errechneten Vordekodier-Bits gleich der vorbestimmten Invalidations-Konstante sind. Falls dies auftritt, werden die aus dem Cache 50 gelesenen Original-Vordekodier-Bits entfernt, und es können neue Vordekodier-Bits errechnet werden, selbst falls die Original-Vordekodier-Bits korrekt waren.
  • Bei einer Ausführungsform können die oben beschriebenen Merkmale ausschließlich innerhalb des Mikroprozessors 10 implementiert werden. Beispielsweise kann die Funktionalität der Steuereinheit 80 weggelassen werden, oder sie kann in dem Mikroprozessor 10 enthalten sein. In ähnlicher Weise kann bei einigen Ausführungsformen auch die Bus-Interface-Logik 52 weggelassen werden oder in dem Mikroprozessor 10 enthalten sein. Ein vollständiges Implementieren der beschriebenen Funktionen in dem Mikroprozessor 10 kann vorteilhafterweise die Kosten des Implementierens eines Computer-Systems reduzieren, das Vordekodier-Information speichert, wie beschrieben. Bei anderen Ausführungsformen können die gewünschten Funktionen zwischen dem Mikroprozessor 10 und einem oder mehreren Stütz-Chips verteilt sein.
  • Die nun zu beschreibende Fig. 6 zeigt ein Flussdiagramm eines Ausgestaltung eines Verfahrens zum Speichern von Vordekodier-Information in einem Cache 50 der Ebene zwei. Zuerst werden Instruktions-Bytes aus dem Instruktions- Cache 16 angefordert (Schritt 140). Falls die angeforderten Bytes in dem Instruktions-Cache 16 gespeichert sind, werden sie zusammen mit ihrer entsprechenden Vordekodier-Information der Instruktions-Ausricht-Einheit 18 und den Dekodier-Einheiten 20A-C zugeführt (Schritte 142 und 152). Falls hingegen die angeforderten Bytes nicht in dem Instruktions-Cache 16 gespeichert sind, wird die angeforderte Adresse dem Cache 50 der Ebene zwei zugeführt (Schritte 142 und 144). Falls die angeforderten Instruktions-Bytes nicht in dem Cache 50 der Ebene zwei gespeichert werden, dann werden sie aus dem Hauptspeicher-Untersystem ausgelesen (Schritte 146 und 148). Wenn die angeforderten Instruktions-Bytes aus dem Hauptspeicher-Untersystem angefordert werden, werden sie zusammen mit einer Invalidations-Konstanten in dem Cache 50 der Ebene zwei gespeichert (Schritte 148 und 150). Wie bereits angemerkt, initialisiert die Invalidations-Konstante effektiv die Vordekodier- Speicherstellen in dem Cache 50 der Ebene zwei, wodurch sie der Vordekodier-Einheit 12 signalisiert, dass neue Vordekodier-Information erzeugt werden soll. Wenn die Vordekodier-Einheit 12 die Instruktions-Bytes und die Vordekodier-Bits empfängt, werden die Vordekodier-Bits geprüft, um festzustellen, ob sie der Invalidations-Konstanten gleich sind (Schritte 154 und 156). Falls die Vordekodier-Bits der Invalidations-Konstanten gleich sind, ist die Vordekodier-Einheit 12 konfiguriert zum Erzeugen neuer Vordekodier-Information (Schritte 156 und 164). Die Instruktions-Bytes und die Vordekodier-Information werden dann in dem Instruktions-Cache 16 gespeichert (Schritt 158). Falls die Instruktions-Bytes und die neue Vordekodier-Information das Ersetzen einer zuvor gespeicherten Cache-Leitung in dem Instruktions-Cache 16 erfordert, wird die Vordekodier-Information, die der zuvor gespeicherten Cache-Leitung entspricht, welche überschrieben wird, zurück in den Cache 50 der Ebene zwei gespeichert (Schritte 160 und 166).
  • Es ist anzumerken, dass die Schritte in der Figur lediglich zu Zwecken der Erläuterung seriell gezeigt sind. Andere Ausführungsformen sind möglich und vorgesehen. Eine Anzahl der obigen Schritte kann kombiniert werden oder pa rallel durchgeführt werden. Beispielsweise können die Schritte 150 und 154 parallel durchgeführt werden.
  • Beispiel eines Computer-Systems
  • Die nun zu beschreibende Fig. 7 zeigt ein Blockschaltbild einer Ausführungsform eines Computer-Systems, bei dem ein Mikroprozessor 10 verwendet wird. Bei dem gezeigten System ist der Hauptspeicher 204 über einen Speicher-Bus 206 mit einer Bus-Brücke 202 verbunden, und ein Graphik-Controller 208 ist über einen AGP-Bus 210 mit der Bus-Brücke 202 verbunden. Schließlich sind mehrere PCI-Einrichtungen 212A-212B über einen PCI-Bus 214 mit der Bus-Brücke 202 verbunden. Ferner kann eine zweite Bus-Brücke 216 vorgesehen sein, um ein elektrisches Interface zu einer oder mehreren EISA- oder ISA-Einrichtungen 218 über einen EISA-/ISA-BUS 220 zu bilden. Wenn ein Operand aus einer der mit der Bus-Brücke 202 verbundenen Einrichtungen empfangen wird, identifiziert die Bus-Brücke 202 das Target der Operation (d. h. eine bestimmte Einrichtung, oder, im Fall der PCI-Brücke 214, dass sich das Target auf dem PCI-Bus 214 befindet). Die Bus-Brücke 202 leitet die Operation zu der als Ziel gewählten Einrichtung. Die Bus-Brücke 202 übersetzt generell eine Operation aus der von der Ausgangs-Einrichtung oder dem Ausgangs-Bus verwendeten Protokoll zu dem von der Target-Einrichtung oder dem Target-Bus verwendeten Protokoll.
  • Zusätzlich zu der Bildung eines Interfaces zu dem ISA-/EISA-BUS für den PCI- Bus 214 kann die zweite Bus-Brücke 216 ferner zusätzliche Funktionalitäten aufweisen, je nach Bedarf. Beispielsweise enthält bei einer Ausführungsform die zweite Bus-Brücke 216 einen (nicht gezeigten) PCI-Arbiter zum Zuweisen des Besitzes an einem PCI-Bus 214. Ein Eingangs-/Ausgangs-Controller (nicht gezeigt), entweder außerhalb von der zweiten Bus-Brücke 216 oder integriert in diese, kann ebenfalls in dem Computer-System 200 enthalten sein, um je nach Bedarf eine betriebsmäßige Unterstützung für eine Tastatur und eine Maus 222 und für verschiedene serielle und parallel Ports zu leisten. Ferner kann bei anderen Ausführungsformen eine (nicht gezeigte) externe Cache- Einheit mit dem CPU-Bus 224 zwischen dem Mikroprozessor 10 und der Bus- Brücke 202 verbunden sein. Alternativ kann der externe Cache mit der Bus- Brücke 202 verbunden sein, und die Cache-Steuer-Logik für den externen Cache kann in die Bus-Brücke 202 integriert sein.
  • Der Hauptspeicher 204 ist ein Speicher, in dem die Anwendungsprogramme gespeichert werden und aus dem heraus der Mikroprozessor 10 in erster Linie arbeitet. Ein geeigneter Hauptspeicher 204 weist ein DRAM (Dynamic Random Access Memory) und vorzugsweise mehrere SDRAM-(Synchronous Dram-)Dateien auf.
  • Die PCI-Einrichtungen stellen nur ein Beispiel für eine Vielzahl von Peripherieeinrichtungen dar, z. B. Netzwerk-Interface-Karten, Video-Beschleuniger, Audio-Karten, Hard- oder Floppy-Disc-Laufwerke oder Laufwerk-Controller, SCSI- (Small Computer Systems Interface-)Adapter und Telefon-Karten. Ähnlich ist die ISA-Einrichtung 218 nur ein Beispiel für verschiedene Typen von Peripherieeinrichtungen, z. B. ein Modem, eine Sound-Karte und eine Vielzahl von Datenerfassungskarten wie etwa GPIB- oder Feld-Bus-Interface-Karten.
  • Der Graphik-Controller 208 ist vorgesehen zur Steuerung der Wiedergabe von Text und Bildern auf der Anzeige 226. Bei dem Graphik-Controller 208 kann es sich um einen typischen, auf dem Gebiet generell bekannten Graphik-Beschleuniger zum Liefern dreidimensionaler Daten-Strukturen handeln, der effektiv in den Hauptspeicher 204 und aus diesem heraus geschoben werden kann. Der Graphik-Controller 208 kann somit ein Master eines AGP-Busses 210 dahingehend sein, dass er einen Zugriff auf das Target-Interface innerhalb der Bus-Brücke 202 anfordern und erhalten kann, um dadurch Zugriff auf den Hauptspeicher 204 zu erhalten. Ein speziell vorgesehener Graphik-Bus nimmt ein schnelles Aufrufen von Daten aus dem Hauptspeicher 204 auf. Für bestimmte Operationen kann der Graphik-Controller 208 ferner derart konfigu riert sein, dass er PCI-Protokoll-Transaktionen auf dem AGP-Bus 210 generiert. Das AGP-Interface der Bus-Brücke 202 kann somit eine Funktionalität zum Unterstützen sowohl von AGP-Protokoll-Transaktionen als auch von PCI- Protokoll-Target- und Initiator-Transaktionen enthalten. Die Anzeige 226 kann jede elektronische Anzeige sein, auf der ein Bild oder ein Text präsentiert werden kann. Eine geeignete Anzeuge 226 ist eine Kathodenstrahlröhre ("CRT"), eine Flüssigkristallanzeige ("LID") etc.
  • Es ist anzumerken, dass, obwohl in der obigen Beschreibung AGP-, PCI- und ISA- oder EISA-Busse als Beispiele verwendet worden sind, jede Bus- Architektur wie gewünscht ersetzt werden kann. Ferner ist anzumerken, dass das Computer-System 200 ein Mehrfachverarbeitungs-Computersystem einschließlich zusätzlicher Mikroprozessoren sein kann.
  • Es ist weiterhin anzumerken, dass die vorliegende Erläuterung auf die Geltendmachung verschiedenartiger Signale angewandt werden kann. In der vorliegenden Ausdrucksweise ist ein Signal "geltendgemacht", wenn es einen Wert führt, der einen bestimmten Zustand angibt. Umgekehrt ist ein Signal "un-geltendgemacht" oder "nicht geltendgemacht", wenn es einen Wert führt, der das Nichtvorhandensein eines bestimmten Zustands angibt. Ein Signal kann als geltendgemacht definiert sein, wenn es einen logischen Eins-Wert führt. Ferner sind in der obigen Erläuterung verschiedene Wert als dahingehend beschrieben worden, dass sie entfernt werden. Ein Wert kann auf verschiedene Arten entfernt werden, wobei jedoch generell ein derartiges Modifizieren des Werts involviert ist, dass er von der Logik-Schaltung, die diesen Wert empfängt, ignoriert wird. Falls der Wert beispielsweise ein Bit aufweist, kann der Logik-Zustand des Werts invertiert werden, um den Wert zu entfernen. Falls der Wert ein n-Bit-Wert ist, kann eine der n-Bit-Kodierungen angeben, dass der Wert ungültig ist. Das Einstellen des Werts auf die ungültige Kodierung veranlasst, dass der Wert entfernt wird. Zusätzlich kann ein n-Bit- Wert ein Gültig-Bit enthalten, das, wenn es gesetzt ist, angibt, dass der n-Bit- Wert gültig ist. Das Rücksetzen des Gültig-Bits kann das Entfernen des Werts beinhalten. Es können auch andere Verfahren zum Entfernen eines Werts verwendet werden.
  • Industrielle Anwendbarkeit
  • Diese Erfindung ist für eine Anzahl unterschiedlicher industrieller Gebiete anwendbar, ohne auf diese beschränkt zu sein: Mikroprozessoren, Computer- Systeme, personal digital assistants (PDAs), Computer-Netzwerke, Einzel- und Mehrprozessor-Systeme, auf einem Chip ausgebildete Systeme, Systeme mit eingebettetem Prozessor und Mikrocontroller, und Digitalsignal-Prozessoren.

Claims (13)

1. Microprozessor (10) mit:
einer Vordekodiereinheit (12), die zum Empfangen von Instruktions- Bytes aus einem Ebene-zwei-Cachespeicher (50) und zum Erzeugen entsprechender Vordekodier-Information konfiguriert ist; und
einem Instruktions-Cachespeicher (16), der mit der Vordekodiereinheit (12) verbunden ist, wobei der Instruktions-Cachespeicher (16) eine erste Anzahl von Speicherstellen (64) zum Speichern von Instruktions-Bytes und eine zweite Anzahl von Speicherstellen (62) zum Speichern von den Instruktions-Bytes entsprechender Vordekodier-Information aufweist, der Instruktions-Cachespeicher (16) zum Empfangen und Speichern der Instruktions-Bytes und der Vordekodier-Information von der Vordekodiereinheit (12) konfiguriert ist, der Instruktions-Cachespeicher (16) derart konfiguriert ist, dass er mindestens einen Teil der entsprechenden Vordekodier-Information zwecks Speicherung in dem Ebene zwei-Cachespeicher (50) ausgibt, wenn in dem Instruktions-Cachespeicher (16) die Instruktions-Bytes und die entsprechende Vordekodier-Information ersetzt werden, und der Instruktions-Cachespeicher (16) derart konfiguriert ist, dass er die entsprechende Vordekodier-Information an Speicherstellen (60) in dem Ebene zwei-Cachespeicher (50) ausgibt, die zum Speichern von Paritäts- oder Fehler-Prüf und -Korrektur-Information bezeichnet sind.
2. Microprozessor nach Anspruch 1, bei dem die Vordekodiereinheit (12) ferner zum Überwachen von aus einem Hauptspeicher zu dem Ebene zwei-Cachespeicher (50) ausgegebenen Writes konfiguriert ist und die Vordekodiereinheit (12) zum Speichern einer Invalidations-Konstanten in den den Writes entsprechenden Speicherstellen (60) zwecks Initialisieren der Speicherstellen (60) konfiguriert ist.
3. Microprozessor nach Anspruch 1 oder Anspruch 2, bei dem die Vordekodiereinheit (12) derart konfiguriert ist, dass sie Vorderkodier-Information für die Instruktions-Bytes erzeugt, wenn die Vordekodiereinheit (12) von dem Ebene zwei-Cachespeicher (50) Vordekodier-Information empfängt, die einer vorbestimmten Invalidations-Konstanten gleicht.
4. Microprozessor nach Anspruch 1, 2 oder 3, bei dem die vorbestimmte Invalidations-Konstante eine Sequenz von Vordekodier-Bits ist, für die kaum Wahrscheinlichkeit besteht, dass sie während Instruktionsvordekodier-Operationen von der Vordekodiereinheit (12) erzeugt wird.
5. Microprozessor nach einem der Ansprüche 1 bis 4, bei dem die Vordekodier-Information Start-Bits oder End-Bits enthält.
6. Verfahren zum Beschleunigen von Instruktions-Vordekodierung, mit den folgenden Schritten:
Lesen von Instruktions-Bytes aus einem Hauptspeicher;
Erzeugen von Vordekodier-Information, die den Instruktions-Bytes entspricht;
Speichern der Instruktions-Bytes und der Vordekodier-Information in einem Instruktions-Cachespeicher (16); und
Ausgeben mindestens, eines Teils der Vordekodier-Information in einen Ebene zwei-Cachespeicher (50) zwecks Speicherung an Speicherstellen (60), die derart konfiguriert sind, dass sie Paritäts- oder Fehler-Prüf und -Korrektur-Information speichern, wenn in dem Instruktions-Cachespeicher (16) die der Vordekodier-Information entsprechenden Instruktions- Bytes überschrieben werden.
7. Verfahren nach Anspruch 6, ferner mit dem Initialisieren der in dem Ebene zwei-Cachespeicher (50) gespeicherten Vordekodier-Information durch Speichern einer Invalidations-Konstanten in diesem.
8. Verfahren nach Anspruch 6 oder Anspruch 7, bei dem die Vordekodier- Information Instruktionslängen-Information einschließlich Start- oder End-Bits aufweist.
9. Verfahren nach Anspruch 7, bei dem die Invalidations-Konstante eine Sequenz von Vordekodier-Bits ist, für die kaum Wahrscheinlichkeit besteht, dass die während des Erzeugungsvorgangs erzeugt wird.
10. Verfahren nach einem der Ansprüche 6 bis 9, ferner mit dem Neuberechnen der Vordekodier-Information in dem Fall, dass die entsprechenden Instruktions-Bytes modifiziert werden.
11. Computersystem (200) zum Speichern von Vordekodier-Information, mit:
einem Ebene zwei-Cachespeicher (50); und
einem Microprozessor (10) nach einem der Ansprüche 1 bis 5.
12. Computersystem nach Anspruch 11, bei dem der Ebene zwei-Cachespeicher (50) eine Anzahl von Instruktions-Speicherstellen (58) und eine entsprechende Anzahl von Paritäts-Speicherstellen (60) aufweist, wobei der Ebene zwei-Cachespeicher (50) zum Speichern der Vordekodier- Information an den Paritäts-Speicherstellen (60) konfiguriert ist und der Ebene zwei-Cachespeicher (50) derart konfiguriert ist, dass er das Speichern, der Vordekodier-Information an den Instruktions-Speicherstellen (58) unterlässt.
13. Computersystem nach Anspruch 11 oder Anspruch 12, bei dem der Ebene zwei-Cachespeicher (50) mehrere Fehler-Prüf- und -Korrektur-Speicherstellen (60) aufweist, wobei der Ebene zwei-Cachespeicher (50) ferner zum Speichern eines Teils der Vordekodier-Information an den Fehler-Prüf- und -Korrektur-Speicherstellen (60) konfiguriert ist.
DE69902392T 1998-06-24 1999-01-25 Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen Expired - Lifetime DE69902392T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/103,956 US6092182A (en) 1998-06-24 1998-06-24 Using ECC/parity bits to store predecode information
PCT/US1999/001466 WO1999067705A1 (en) 1998-06-24 1999-01-25 Using ecc/parity bits to store predecode information

Publications (2)

Publication Number Publication Date
DE69902392D1 DE69902392D1 (de) 2002-09-05
DE69902392T2 true DE69902392T2 (de) 2003-03-20

Family

ID=22297907

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69902392T Expired - Lifetime DE69902392T2 (de) 1998-06-24 1999-01-25 Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen

Country Status (6)

Country Link
US (1) US6092182A (de)
EP (1) EP1090345B1 (de)
JP (1) JP3836322B2 (de)
KR (1) KR100586057B1 (de)
DE (1) DE69902392T2 (de)
WO (1) WO1999067705A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401118B1 (en) * 1998-06-30 2002-06-04 Online Monitoring Services Method and computer program product for an online monitoring search engine
US6460132B1 (en) * 1999-08-31 2002-10-01 Advanced Micro Devices, Inc. Massively parallel instruction predecoding
US6463506B1 (en) 2000-04-29 2002-10-08 Hewlett-Packard Company Arrangement of data within cache lines so that tags are first data received
NZ526643A (en) * 2000-11-27 2006-07-28 Macrovision Europ Ltd A copy protected DVD disc and method for producing and validating same
US6804799B2 (en) 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US7043679B1 (en) 2002-06-27 2006-05-09 Advanced Micro Devices, Inc. Piggybacking of ECC corrections behind loads
US7415638B2 (en) * 2004-11-22 2008-08-19 Qualcomm Incorporated Pre-decode error handling via branch correction
US7421568B2 (en) * 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
US20080148020A1 (en) * 2006-12-13 2008-06-19 Luick David A Low Cost Persistent Instruction Predecoded Issue and Dispatcher
US8001361B2 (en) * 2006-12-13 2011-08-16 International Business Machines Corporation Structure for a single shared instruction predecoder for supporting multiple processors
US7945763B2 (en) * 2006-12-13 2011-05-17 International Business Machines Corporation Single shared instruction predecoder for supporting multiple processors
US7840786B2 (en) * 2007-04-16 2010-11-23 Advanced Micro Devices, Inc. Techniques for storing instructions and related information in a memory hierarchy
US8898437B2 (en) * 2007-11-02 2014-11-25 Qualcomm Incorporated Predecode repair cache for instructions that cross an instruction cache line
US7814300B2 (en) 2008-04-30 2010-10-12 Freescale Semiconductor, Inc. Configurable pipeline to process an operation at alternate pipeline stages depending on ECC/parity protection mode of memory access
US8356239B2 (en) * 2008-09-05 2013-01-15 Freescale Semiconductor, Inc. Selective cache way mirroring
US8291305B2 (en) * 2008-09-05 2012-10-16 Freescale Semiconductor, Inc. Error detection schemes for a cache in a data processing system
US8145985B2 (en) 2008-09-05 2012-03-27 Freescale Semiconductor, Inc. Error detection schemes for a unified cache in a data processing system
US8316186B2 (en) * 2008-09-20 2012-11-20 Freescale Semiconductor, Inc. Method and apparatus for managing cache reliability based on an associated error rate
US8364896B2 (en) * 2008-09-20 2013-01-29 Freescale Semiconductor, Inc. Method and apparatus for configuring a unified cache based on an associated error rate
US8266498B2 (en) * 2009-03-31 2012-09-11 Freescale Semiconductor, Inc. Implementation of multiple error detection schemes for a cache
US9608826B2 (en) 2009-06-29 2017-03-28 Jpmorgan Chase Bank, N.A. System and method for partner key management
US9218286B2 (en) * 2012-09-27 2015-12-22 Apple Inc. System cache with partial write valid states
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
US9348598B2 (en) 2013-04-23 2016-05-24 Arm Limited Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
US9710324B2 (en) 2015-02-03 2017-07-18 Qualcomm Incorporated Dual in-line memory modules (DIMMs) supporting storage of a data indicator(s) in an error correcting code (ECC) storage unit dedicated to storing an ECC
US10296416B2 (en) * 2016-07-02 2019-05-21 Intel Corporation Read from memory instructions, processors, methods, and systems, that do not take exception on defective data
US10291258B2 (en) 2017-05-25 2019-05-14 Advanced Micro Devices, Inc. Error correcting code for correcting single symbol errors and detecting double bit errors
US20220100516A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Circuitry and methods for power efficient generation of length markers for a variable length instruction set

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4747043A (en) * 1984-02-10 1988-05-24 Prime Computer, Inc. Multiprocessor cache coherence system
JPS62151971A (ja) * 1985-12-25 1987-07-06 Nec Corp マイクロ・プロセツサ装置
US5214769A (en) * 1987-12-24 1993-05-25 Fujitsu Limited Multiprocessor control system
US5265004A (en) * 1991-10-15 1993-11-23 Allen-Bradley Company, Inc. Sequence controller with combinatorial Boolean logic
EP0651321B1 (de) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
EP0651324B1 (de) * 1993-10-29 2006-03-22 Advanced Micro Devices, Inc. Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5721854A (en) * 1993-11-02 1998-02-24 International Business Machines Corporation Method and apparatus for dynamic conversion of computer instructions
US5752264A (en) * 1995-03-31 1998-05-12 International Business Machines Corporation Computer architecture incorporating processor clusters and hierarchical cache memories
US5828895A (en) * 1995-09-20 1998-10-27 International Business Machines Corporation Methods and system for predecoding instructions in a superscalar data processing system
US5819067A (en) * 1996-02-23 1998-10-06 Advanced Micro Devices, Inc. Computer system configured to translate a computer program into a second computer program prior to executing the computer program
EP0798632B1 (de) * 1996-03-25 2002-09-11 Sun Microsystems, Inc. Verfahren zur Sprungvorhersage in einem mehrstufigen Cachespeichersystem
US5748978A (en) * 1996-05-17 1998-05-05 Advanced Micro Devices, Inc. Byte queue divided into multiple subqueues for optimizing instruction selection logic

Also Published As

Publication number Publication date
EP1090345B1 (de) 2002-07-31
JP3836322B2 (ja) 2006-10-25
US6092182A (en) 2000-07-18
DE69902392D1 (de) 2002-09-05
KR100586057B1 (ko) 2006-06-07
JP2002519755A (ja) 2002-07-02
KR20010025123A (ko) 2001-03-26
EP1090345A1 (de) 2001-04-11
WO1999067705A1 (en) 1999-12-29

Similar Documents

Publication Publication Date Title
DE69902392T2 (de) Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen
DE60223023T2 (de) Verwendung von typenbit zur verfolgung der speicherung von ecc- und vordekodierungsbit in einem cache der ebene 2
DE69901910T2 (de) Verfahren und gerät zur rechnung von indirekten verzweigungszieladressen
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE69904479T2 (de) Registerumbenennung wobei übertragungsinstruktionen mittels umbenennungsschildernzeichen realisiert werden
DE69031433T2 (de) Speicherzugriffsausnahmebehandlung bei vorausgelesenen Befehlswörtern in dem Befehlsfliessband eines Rechners mit virtuellem Speicher
DE69131637T2 (de) Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz
DE69427672T2 (de) Befehlscachespeicher für Befehle mit variabler Byteslänge
DE68928513T2 (de) Verfahren zur Vorverarbeitung mehrerer Befehle
DE69835100T2 (de) Prozessor konfiguriert um vorausschauende resultate von zusammengefassten übertragungs-, vergleichs- und einfachen arithmetischen befehlen zu produzieren
DE60036016T2 (de) Schnell multithreading für eng gekoppelte multiprozessoren
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE60009151T2 (de) Vorhersage von datenbeförderung von speicher- zum ladebefehl mit untrainierung
DE69130379T2 (de) Datenvorausladebefehl in einem Prozessor mit reduziertem Befehlssatz
DE69327981T2 (de) Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt.
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE69620807T2 (de) Datenverarbeitungsvorrichtung zum Vorziehen einer Datenstruktur aus dem Hauptspeicher oder seinem Cachespeicher
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE69033331T2 (de) Sprungvorhersage
DE69612991T2 (de) System zur bearbeitung von selbstmodifizierendem kode
DE69025658T2 (de) Verfahren zur Verbesserung der Leistung eines mehrstufigen Cachespeichers durch erzwungene Fehlgriffe
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE112004002365T5 (de) Übergang vom Befehls-Cache-Speicher zum Ablaufverfolgungs-Cache-Speicher basierend auf Markengrenzen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition