DE112008001473T5 - Zwischenspeicherung eines Mikrocodierungsemulationsspeichers - Google Patents
Zwischenspeicherung eines Mikrocodierungsemulationsspeichers Download PDFInfo
- Publication number
- DE112008001473T5 DE112008001473T5 DE112008001473T DE112008001473T DE112008001473T5 DE 112008001473 T5 DE112008001473 T5 DE 112008001473T5 DE 112008001473 T DE112008001473 T DE 112008001473T DE 112008001473 T DE112008001473 T DE 112008001473T DE 112008001473 T5 DE112008001473 T5 DE 112008001473T5
- Authority
- DE
- Germany
- Prior art keywords
- cache
- level
- area
- access
- processor
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 166
- 238000000034 method Methods 0.000 claims description 21
- 238000013519 translation Methods 0.000 claims description 11
- 239000000872 buffer Substances 0.000 claims description 7
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 10
- 230000008901 benefit Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Prozessor mit:
einer Cache-Speicherhierarchie mit mindestens einem ersten Cache-Speicher der Ebene 1 und einem Cache-Speicher höherer Ebene;
wobei der Prozessor ausgebildet ist, um:
einen ersten Bereich eines physikalischen Speicherraumes einem ersten Bereich des Cache-Speichers höherer Ebene zuzuordnen;
Befehle auszuführen, wovon mindestens einige eine Mikrocodierung enthalten;
der Mikrocodierung es zu ermöglichen, auf den ersten Bereich des Cache-Speichers höherer Ebene zuzugreifen; und
zu verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des Cache-Speichers höherer Ebene zugreifen.
einer Cache-Speicherhierarchie mit mindestens einem ersten Cache-Speicher der Ebene 1 und einem Cache-Speicher höherer Ebene;
wobei der Prozessor ausgebildet ist, um:
einen ersten Bereich eines physikalischen Speicherraumes einem ersten Bereich des Cache-Speichers höherer Ebene zuzuordnen;
Befehle auszuführen, wovon mindestens einige eine Mikrocodierung enthalten;
der Mikrocodierung es zu ermöglichen, auf den ersten Bereich des Cache-Speichers höherer Ebene zuzugreifen; und
zu verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des Cache-Speichers höherer Ebene zugreifen.
Description
- Hintergrund der Erfindung
- Technisches Gebiet
- Diese Erfindung betrifft Mikroprozessoren und betrifft insbesondere die Emulation komplexer Befehle durch Mikrocodierung und betrifft die Zwischenspeicherung eines Speicherraumes, der während einer derartigen Emulation verwendet wird.
- Hintergrund
- Obwohl es wünschenswert ist, bei Mikroprozessoren die Kompatibilität zu einer komplexen Befehlssatzcomputer-(CISC)Architektur beizubehalten, bieten andere Architekturen eine bessere Ausführungsgeschwindigkeit und ein höheres Leistungsverhalten. Die Gestalter von Mikroprozessoren haben bislang versucht, sowohl eine CISC-Kompatibilität als auch ein gutes Leistungsverhalten durch das Simulieren von CISC-Befehlen zu erreichen. Beispielsweise enthalten superskalare Computerarchitekturen mit einem reduzierten Befehlssatz (RISC) eine Mikrocodierung, die die CISC-Befehlsemulation ausführt. Während des Emulationsprozesses verwendet die Mikrocodierung einen Zwischenspeicher, um Zwischenwerte abzulegen. Um ein hohes Leistungsverhalten beizubehalten, ist es wünschenswert, dass die Mikrocodierung des Mikroprozessors auf den Emulationsspeicher möglichst schnell zugreifen kann.
- Des weiteren enthalten Mikroprozessoren im Allgemeinen mehrere Pufferspeicher bzw. Cache-Speicher, die hierarchisch angeordnet sind und von mehreren Kernen oder Ausführungseinheiten gemeinsam benutzt werden. Es wird eine Vielzahl von Cache-Speicherarchitekturen eingesetzt und diese enthalten Kombinationen aus chipinternen Cache-Speichern und chipexternen Cach-Speichern. Speicheroperationen, die Daten aus einem Cache-Speicher oder Speicher auslesen, werden hierin kürzer als „Ladeoperationen” bezeichnet. Speicheroperationen, die Daten in den Cache-Speicher oder den Speicher schreiben, werden hierin kürzer als „Schreiboperationen” bezeichnet. Eine Ladeoperation oder eine Schreiboperation können auf eine spezielle Cache-Zeile (oder einen Teil einer Cache-Zeile) zielen und können eine Adresse enthalten, die die angezielte Zeile angibt, und können auch Daten enthalten, die aus der Cache-Zeile auszulesen oder in diese zu schreiben sind. Da Cache-Speicherzugriffe schneller sind als Hauptspeicherzugriffe werden diverse Cache-Speicherzugriffstechniken eingesetzt, um die Wahrscheinlichkeit zu erhöhen, dass die Daten in einem Cache-Speicher vorhanden sind, wenn ein Kern oder eine Ausführungseinheit auf diese Daten zugreifen muss, wodurch die Ausführungsgeschwindigkeit verbessert wird. Folglich bietet das Zwischenspeichern des Mikrocodierungsemulationsspeichers im Cache-Speicher den Leistungsvorteil einer relativ kürzeren Zugriffszeit des Cache-Speichers im Vergleich zum Systemspeicher. Die kürzesten Zugriffszeiten sind im Allgemeinen jene, die mit der tiefsten Ebene der Cache-Hierarchie verknüpft sind, wobei diese üblicherweise als L1-Cache- bzw. einfach als L1 bezeichnet wird. Daher ist es wünschenswert, den Mikrocodierungsemulationsspeicher im L1 zwischenzuspeichern. Derartige Leistungsvorteile wurden häufig verstärkt, indem ein Teil des L1 permanent für den Mikrocodierungsemulationsspeicher reserviert wurde.
- Selbstverständlich wären die Leistungsvorteile der Verwendung des L1-Cache-Speichers auch für andere Prozesse von Vorteil. Es ist daher wünschenswert, den L1-Cache-Speicher möglichst groß zu gestalten, um damit die Verfügbarkeit des L1-Cache-Speicherraumes für jeden Prozess zu erhöhen. Die Vergrößerung des L1 steigert jedoch die Kosten und die Komplexität des Mikroprozessors. Wenn ferner der Mikrocodierungsemulationsspeicher permanent im L1 abgelegt ist, ist dieser Bereich des L1 nicht für andere Prozesse verfügbar. Um die zuvor genannten Probleme zu lösen, ist eine Möglichkeit erforderlich, die Verfügbarkeit des Speicherraumes in einem L1-Cache-Speicher mit vorgegebener Größe für alle Prozesse zu verbessern, während die Vorteile der Zwischenspeicherung des Mikrocodierungsemulationsspeichers beibehalten werden.
- Überblick über die Erfindung
- Es sind hier diverse Ausführungsformen eines Prozessors, eines Computersystems und Verfahren offenbart. Der Prozessor umfasst eine Cache-Hierarchie mit mindestens einem ersten Cache-Speicher der Ebene 1 und mindestens einem Cache-Speicher höherer Ebene. Der Prozessor ist ausgebildet, einen ersten Bereich eines physikalischen Speicherraumes einem ersten Bereich des Cache-Speichers höherer Ebene zuzuordnen, Befehle auszuführen, wovon mindestens einige eine Mikrocodierung enthalten, es der Mikrocodierung zu ermöglichen, auf den ersten Bereich des Cache-Speichers höherer Ebene zuzugreifen, und zu verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des Cache-Speichers höherer Ebene zugreifen. In einer Ausführungsform ist der Cache-Speicher höherer Ebene ein Cache-Speicher der Ebene 2. In einer weiteren Ausführungsform wird der erste Bereich des physikalischen Speicherraumes permanent für die Verwendung durch die Mikrocodierung reserviert.
- In einer weiteren Ausführungsform ist der Prozessor ausgebildet, eine oder mehrere Cache-Zeilen des ersten Bereichs des Cache-Speichers höherer Ebene von dem Cache-Speicher höherer Ebene zu einem ersten Bereich des ersten Cache-Speichers der Ebene 1 zu verschieben. Der Prozessor ist ferner ausgebildet, es der Mikrocodierung zu ermöglichen, auf den ersten Bereich des ersten Cache-Speichers der Ebene 1 zuzugreifen und zu verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des ersten Cache-Speichers der Ebene 1 zugreifen.
- In einer noch weiteren Ausführungsform ist der Prozessor ausgebildet, ein Mikrocodierungszugriffssignal zu erkennen. Der Prozessor ist ferner ausgebildet zu verhindern, dass Befehle auf den ersten Bereich des physikalischen Speicherraumes zugreifen, wenn das Mikrocodierungszugriffssignal nicht gesetzt ist, und zu erlauben, dass Befehle auf den ersten Bereich des physikalischen Speicherraumes zugreifen, wenn das Mikrocodierungszugriffsignal gesetzt ist.
- In einer noch weiteren Ausführungsform umfasst der Prozessor einen Translationsnebenpuffer (TLB), wobei der Prozessor zur Verhinderung, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des physikalischen Speicherraumes zugreifen, ausgebildet ist, TLB-Auffüllungen in den ersten Bereich des physikalischen Speicherraumes zu verhindern.
- Kurze Beschreibung der Zeichnungen
-
1 ist eine allgemeine Blockansicht einer Ausführungsform eines Computersystems. -
2 zeigt eine Ausführungsform eines virtuellen Speichers und einer Cache-Architektur. -
3 zeigt eine Ausführungsform eines Prozesses zum Zugreifen auf eine Speicherhierarchie, die einen Mikrocodierungsemulationsspeicher enthält. -
4 zeigt eine Ausführungsform eines Prozessors zum Zugreifen auf einen Mikrocodierungsemulationsspeicher in einem Cache-Speicher der Ebene 1. -
5 ist eine Blockansicht einer Ausführungsform des Computersystems mit einem Datencache-Speicher L2 und einem Mikrocodierungsemulationsspeicher, der mit mehreren Systemkomponenten verbunden ist. - Obwohl die Erfindung diversen Modifizierungen und alternativen Formen unterliegen kann, sind dennoch spezielle Ausführungsformen beispielhaft in den Zeichnungen dargestellt und sind hierin detailliert beschrieben. Es sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte Beschreibungen dieser Zeichnungen nicht beabsichtigen, die Erfindung auf die spezielle offenbarte Form einzuschränken, sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente und Alternativen abdecken, die innerhalb des Grundgedankens und Schutzbereichs der vorliegenden Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert ist.
- Art bzw. Arten zum Ausführen der Erfindung
-
1 ist eine verallgemeinerte Blockansicht einer Ausführungsform eines Computersystems100 . In der gezeigten Ausführungsform ist ein Prozessor110 gezeigt, der mit einem Speicher150 gekoppelt ist. Der Speicher150 umfasst SDRAM-, SRAM-, ROM-, DRAM- und/oder andere konventionelle Speichereinrichtungen. Der Prozessor110 enthält einen Kern120 , einen L2-Datencache-Speicher130 und einen L2-Translationsnebenpuffer (Translations-lookaside-Puffer TLB)140 . Der Kern120 enthält eine Ausführungseinheit122 , eine Lade/Schreib-Einheit124 , einen L1-Daten-Cache-Speicher126 und einen L1-TLB128 . Der L2-Daten-Cache-Speicher120 enthält einen Mikrocodierungsemulationsspeicher135 . In alternativen Ausführungsformen umfasst der Prozessor110 mehr als einen Kern, wobei jeder Kern einen Daten-Cache-Speicher der Ebene 1 enthält und die Kerne gemeinsam einen einzelnen Daten-Cache-Speicher der Ebene 2 verwenden. In einer alternativen Ausführungsform ist der Daten-Cache-Speicher L1126 separat zu dem Kern120 vorgesehen. In anderen alternativen Ausführungsformen sind zusätzliche Cache-Ebenen im Computersystem100 enthalten, etwa als ein Cache-Speicher der Ebene 3, der intern im Prozessor110 oder separat zum Prozessor110 vorgesehen ist. In diesen und anderen alternativen Ausführungsformen ist der Mikrocodierungsemulationsspeicher135 in einer beliebigen Cache-Ebene oberhalb der Ebene 1 enthalten. Es sind auch viele weitere Ausführungsformen mit eingeschlossen. Für ein einfacheres Verständnis wird jedoch in dem folgenden Beispiel angenommen, dass der Speicherraum permanent in einem Daten-Cache-Speicher der Ebene 2 für den Mikrocodierungsemulationsspeicher135 reserviert ist. - Während des Betriebs empfängt die Ausführungseinheit
122 den Datenbereich von Ladeoperationen, die von der Lade/Schreibeinheit134 auszuführen sind, über eine Verbindung161 und übermittelt den Datenbereich von Schreiboperationen an die Lade/Schreib-Einheit124 über eine Verbindung162 . Die Lade/Schreibeinheit124 empfängt den Datenbereich von Ladeoperationen, die von dem L1-Daten-Cache-Speicher126 auszuführen sind, über eine Verbindung163 und übermittelt den Datenbereich für Schreiboperationen in den L1-Daten-Cache-Speicher126 über eine Verbindung164 . Der L1-Daten-Cache-Speicher126 empfängt den Datenbereich von Ladeoperationen für den L2-Daten-Cache-Speicher120 über eine Verbindung165 und überträgt den Datenbereich für Schreiboperationen in den L2-Daten-Cache-Speicher130 über eine Verbindung166 . Der L2-Daten-Cache-Speicher130 empfängt den Datenbereich von Ladeoperationen aus dem Speicher150 und überträgt den Datenbereich für Schreiboperationen in diesen Speicher über eine Verbindung167 . Der L1-TLB128 ist so gezeigt, dass dieser mit dem L1-Daten-Cache-Speicher126 über eine Verbindung171 , mit dem L2-Daten-Cache-Speicher130 über eine Verbindung172 und mit dem L2-TLB140 über eine Verbindung173 verbunden ist. Der L2-TLB140 ist ferner so gezeigt, dass er mit dem L2-Daten-Cache-Speicher130 über eine Verbindung174 verbunden ist. - Der L1-Daten-Cache-Speicher
126 , der L1-TLB128 , der L2-Daten-Cache-Speicher130 und der L2-TLB140 können konventionelle Adressenübersetzungs- und Zwischenspeicherungsfunktionen ausführen. Beispielsweise kann der L1-TLB128 Zuordnungen virtueller Adressen zu physikalischen Adressen zwischenspeichern. Wenn eine Speicherzugriffsanforderung auftritt, wird der L1-TLB128 überprüft, um zu erkennen, ob eine Zuordnung der gewünschten virtuellen Adresse zu einer physikalischen Adresse abgespeichert ist. Zuordnungen, die in dem L1-TLB128 abgelegt sind, können verwendet werden, um zu bestimmen, ob eine gewünschte Cache-Zeile in dem L1-Daten-Cache-Speicher126 vorhanden ist. Wenn eine gewünschte Cache-Zeile nicht im L1-Daten-Cache-Speicher126 vorhanden ist, d. h. es gibt einen L1-Cache-Fehltreffer, wird der L2-TLB1 überprüft, um zu erkennen, ob eine Zuordnung der gewünschten virtuellen Adresse zu einer physikalischen Adresse gespeichert ist. Zuordnungen, die in dem L2-TLB140 abgelegt sind, können verwendet werden, um zu bestimmen, ob eine gewünschte Cache-Zeile im L2-Daten-Cache-Speicher130 vorhanden ist. Wenn ein Cache-Fehltreffer im L1-Daten-Cache-Speicher126 auftritt, wird, um Platz für einen neuen Eintrag zu schaffen, eine Cache-Zeile aus dem L1-Daten-Cache-Speicher126 in den L2-Daten-Cache-Speicher130 ausgelagert. Ein entsprechender Eintrag in dem L1-TLB128 wird in den L2-TLB140 verschoben. Um für einen neuen Eintrag in dem L2-Daten-Cache-Speicher130 Platz zu schaffen, kann es erforderlich sein, eine Cache-Zeile von dem L2-Daten-Cache-Speicher130 in den Hauptspeicher150 zu verschieben. Es wird unter Umständen eine neue Adressenzuordnung bzw. Übersetzung für gewünschte Cache-Zeile ausgeführt und das Ergebnis wird im L1 TLB128 abgelegt, wobei dieser Vorgang als eine TLB-Wiederauffüllung bezeichnet werden kann. Weitere Details und Funktionsweisen dieser Daten-Cache-Speicher126 und120 und der TLB's128 und140 im Hinblick auf das Vermeiden einer Schädigung des Mikrocodierungsemulationsspeicherraums135 werden im Weiteren angegeben. -
2 zeigt eine Ausführungsform einer virtuellen Speicher- und Cache-Architektur, die in dem Prozessor110 eingesetzt werden kann. In der Darstellung ist ein virtueller Speicherraum210 gezeigt, wovon Bereiche einem physikalischen Speicheradressenraum220 zugeordnet sind. Bereiche des physikalischen Speicheradressenraumes220 sind so gezeigt, dass sie dem L2-Cache-Speicherraum230 zugeordnet sind, von welchem Bereiche wiederum dem L1-Cache-Speicherraum240 zugeordnet sind. Jede Anwendung, die in dem Prozessor110 abgearbeitet wird, kann einen separaten virtuellen Speicheradressenraum verwenden. Der virtuelle Speicheradressenraum210 , der in2 gezeigt ist, enthält Blöcke211 bis215 , die Bereiche des virtuellen Speichers repräsentieren, die dem physikalischen Speicheradressenraum220 zugeordnet sind und die für den Zugriff durch eine Anwendung zu einem gegebenen Zeitpunkt verfügbar sind. In ähnlicher Weise enthält der physikalische Speicheradressenraum220 Blöcke221 bis224 , die die Bereiche an physikalischem Speicher repräsentieren, die in dem L2-Cache-Speicherraum230 zwischengespeichert sind. In ähnlicher Weise enthält der L2-Cache-Speicherraum230 Blöcke231 bis233 , die die Bereiche des L2-Cache-Speiches repräsentieren, die in dem L1-Cache-Speicherraum240 abgelegt sind. Insbesondere sind die Blöcke231 ,232 und233 des L2- Cache-Speicherraums230 entsprechend den Blöcken242 ,243 und241 des Cache-Speicherraums240 zugeordnet. In den diversen Ausführungsformen kann jeder zuvor beschriebene Block eine Gruppe aus Cache-Zeilen, Blöcke mit gleicher Größe, eine Gruppe aus Cache-Zeilen oder Blöcke mit variierender Größe repräsentieren. In alternativen Ausführungsformen können jeweils der virtuelle Speicheradressenraum120 , der physikalische Speicheradressenraum220 , der L2-Cache-Speicher230 und der L1-Cache-Speicher240 mehr oder weniger Blöcke aufweisen, als dies in2 gezeigt ist. - In einer Ausführungsform wird der Block
221 in dem physikalischen Speicherraum220 als ein Mikrocodierungsemulationsspeicher reserviert. Des weiteren kann der Block231 des L2-Cache-Speicherraums230 permanent für das Speichern des Inhalts des Mikrocodierungsemulationsspeichers reserviert werden. Während des Betriebs wird, wenn der Prozessor110 einen Zugriff auf den Mikrocodierungsemulationsspeicher fordert, der Block231 in dem Cache-Speicher der Ebene 1 zwischengespeichert, etwa im Block242 , wie dies in2 gezeigt ist. Jedoch ist der Block242 ggf. nicht permanent für die Verwendung als Mikrocodierungsemulationsspeicher reserviert, wie dies für Block231 der Fall ist. Die Blöcke, die im L1 zwischengespeichert sind, können sich von Zeit zu Zeit abhängig von der Programmausführung ändern. Folglich kann der Mikrocodierungsemulationsspeicher aus dem L1 in den L2 verschoben werden, in welchem der Block231 für die Verwendung reserviert ist. In einer Ausführungsform wird ein Zugriff auf den Mikrocodierungsemulationsspeicher durch Anwendungen oder Prozesse, die keine Mikrocodierungen sind, verhindert, indem eine TLB-Wiederauffüllung des L1 unter Beteiligung des Blocks221 des physikalischen Speicherraums nicht gestattet wird. -
3 zeigt eine Ausführungsform eines Prozessors300 zum Zugreifen auf eine Speicherhierarchie, die den Mikrocodierungsemulationsspeicher enthält. Ein Speicherzugriff kann mit einer Prüfung hinsichtlich der Anwesenheit eines Mikrocodierungszugriffssignals (nicht gezeigt) beginnen, die mit jedem Befehl verknüpft ist, der von einer Ausführungseinheit decodiert wird (Entscheidungsblock310 ). Beispielsweise wird in einer Ausführungsform ein Bit jedes decodierten Befehls als ein Mikrocodierungszugriffssignal verwendet. In einer alternativen Ausführungsform besitzen Mikrocodierungsbefehle eine spezielle Op-Codierung bzw. Operationscodierung, die als ein Mikrocodierungssignal dient und mit dieser als Mikrocodierung erkannt werden kann. Es kann jedes aus einer Vielzahl alternativer Mikrocodierungszugriffssignale von einer Ausführungseinheit zu einer Cache-Steuerung übermittelt werden, um anzugeben, ob ein Befehl ein Mikrocodierungsbefehl ist oder nicht. Wenn ein Mikrocodierungszugriffssignal erkannt wird, wird ein Zugriff auf den Mikrocodierungsemulationsspeicher zugelassen (Block320 ) und der Zugriff wird abgeschlossen. - Wenn das Mikrocodierungszugriffsignal nicht erkannt wird, geht der Prozess
300 in der folgenden Weise weiter. Es werden ein oder mehrere TLB's abgesucht, um einen Eintrag zu finden, der mit der von dem Zugriff betroffenen Cache-Zeile übereinstimmt (Block330 ). Wenn ein übereinstimmender Eintrag in einem L1-TLB gefunden wird (Entscheidungsblock340 ), dann wird auf die angezielte Cache-Zeile zugegriffen (Block390 ) und der Zugriff wird abgeschlossen. Wenn ein übereinstimmender Eintrag nicht in einem L1-TLB nicht gefunden wird, und dieser in einem L2-TLB gefunden wird (Entscheidungsblock340 ), dann wird die angesprochene Cache-Zeile von dem L2-Cache-Speicher in den L1-Cache-Speicher verschoben (Block360 ), es wird auf die gezielte Cache-Zeile zugegriffen (Block390 ) und der Zugriff wird abgeschlossen. Wenn ein übereinstimmender Eintrag weder im L1 noch im L2-Cache-Speicher gefunden wird, dann wird eine Adressenübersetzung oder Zuordnung ausgeführt (Block370 ). Wenn das Ergebnis der Adressenübersetzung eine Zieladresse liefert, die in dem Mikrocodierungsemulationsspeicher liegt (Entscheidungsblock380 ), dann wird ein Zugriff verhindert (Block380 ), wobei der Zugriffsversuch dann beendet wird. Wenn das Ergebnis der Adressenübersetzung eine Zieladresse ist, die nicht in dem Mikrocodierungsemulationsspeicher liegt (Entscheidungsblock380 ), dann wird eine TLB-Wiederauffüllung ausgeführt (Block382 ), es wird auf die angesprochene Cache-Zeile zugegriffen (Block390 ), und der Zugriff wird abgeschlossen. -
4 zeigt eine Ausführungsform eines Prozessors400 zum Zugreifen auf einen Mikrocodierungsemulationsspeicher in einem Cache-Speicher der Ebene 1. Eine Zugriffsanforderung, die auf den Mikrocodierungsemulationsspeicher zielt, beginnt mit einer Prüfung, um zu erkennen, ob die angesprochene Cache-Zeile in einem L1-Cache-Speicher enthalten ist (Entscheidungsblock410 ). Wenn dies der Fall ist, wird der Zugriff auf die angesprochene Cache-Zeile zugelassen (Block420 ) und der Zugriff wird abgeschlossen. Wenn die angesprochene Cache-Zeile nicht in einem L1-Cache-Speicher abgelegt ist, dann wird die reservierte Stelle der angesprochenen Cache-Zeile im L2-Cache-Speicher erhalten (Block430 ). Die angezielte Cache-Zeile wird dann von dem L2-Cache-Speicher in den L1-Cache-Speicher verschoben (Block440 ). Sobald die Ziel-Cache-Zeile in den L1-Cache-Speicher verschoben ist, wird der Zugriff erlaubt (Block420 ) und der Zugriff wird abgeschlossen. -
5 ist eine Blockansicht einer Ausführungsform eines Computersystems500 mit einem L2-Daten-Cache-Speicher560 und einem Mikrocodierungsemulationsspeicher135 , die mit mehreren Systemkomponenten gekoppelt sind. In dem dargestellten System ist der Prozessor510 so gezeigt, dass er mit Peripherieeinrichtungen510 und einem Speicher530 verbunden ist. Die Peripherieeinrichtungen520 umfassen beliebige Einrichtungen, etwa Netzwerkstellen, Zeitgeberschaltungen, Speichermedien, Eingabe/Ausgabe-Einrichtungen, etc., die in einem konventionellen Computersystem vorgefunden werden. Der Speicher530 umfasst etwa SDRAM-, SRAM-, ROM-, DRAM- und/oder andere konventionelle Speichereinrichtungen. Der Prozessor510 umfasst Kerne540a und540b , einen vereinigenden Schreib/Cache-Speicher550 , einen Daten-Cache-Speicher der Ebene 2560 und eine I/O-Schnittstelle570 . Die I/O-Schnittstelle570 verbindet etwa alle Kerne540 mit den Peripherieeinrichtungen520 . Elemente, die hierin mit einem Bezugszeichen mit einem anschließenden Buchstaben bezeichnet sind, können auch gemeinsam durch lediglich das Bezugszeichen benannt werden. Beispielsweise werden die Kerne540a und540b als Kerne540 bezeichnet und ein nicht spezifizierter Kern der Kerne540 kann einfach als ein Kern540 bezeichnet werden. - Jeder Kern
540 enthält eine Daten-Cache-Speicher der Ebene 1542 , eine Schreiblogikeinheit544 und eine Lade/Schreibpipeline546 . Die Schreiblogikeinheit544 (die alternativ als „Schreibeinheit” bezeichnet wird) repräsentiert einen Bereich einer Lade/Schreib-Einheit, eine separate Logikeinheit oder eine Kombination davon. Die Schreiblogik544 ist sowohl mit dem Daten/Cache-Speicher der Ebene 1542 als auch mit dem vereinigenden Schreib/Cache-Speicher550 verbunden, um es dem Kern540 zu ermöglichen, den Speicher jeder Ebene zu beschreiben. Insbesondere überträgt die Schreiblogik544 Schreiboperationen584 zu dem Daten-Cache-Speicher542 der Ebene 1 und überträgt Schreiboperationen582 zu dem Schreib-Cache-Speicher550 . Der vereinigende Schreib-Cache-Speicher550 kann ferner mit einem Daten-Cache-Speicher der Ebene 2560 mittels Verbindungen für Auffülloperationen564 und Verbindungen für Verschiebungen566 gekoppelt sein. Der vereinigende Schreib/Cache-Speicher550 kann die Schreiboperationen582 zusammenfügen mit Fülloperationen564 , um eine geringe Anzahl an Verschiebungen566 zu erzeugen. Der Daten-Cache-Speicher der Ebene 2560 ist ferner mit jedem Daten-Cache-Speicher der Ebene 1542 verbunden. Insbesondere kann der Daten-Cache-Speicher der Ebene 2560 die Fülloperationen562 zu dem Daten-Cache-Speicher der Ebene 1542 übertragen. Der Daten-Cache-Speicher der Ebene 2560 kann ferner auch bidirektional mit dem Hauptspeicher530 verbunden sein. - Während des Betriebs führt der Kern
540 eine Reihe von Befehlen aus, die, wenn sie decodiert sind, Ladeoperationen586 von dem Daten-Cache-Speicher11 542 zur Lade/Schreibpipeline546 und/oder Schreiboperationen580 von Lade/Schreib-Pipeline546 in die Schreiblogik544 hervorrufen. Die von dem Kern540 ausgeführten Befehle können auch das Ausführen einer Mikrocodierung beinhalten. Wenn die Ausführung einer Mikrocodierung das Zugreifen auf eine Cache-Zeile in dem Mikrocodierungsemulationsspeicher135 erfordert, wird auf die angesprochene Cache-Zeile zugegriffen und bei Bedarf wird diese vom L2-Daten-Cache-Speicher560 zu dem L1-Daten-Cache-Speicher542 unter Anwendung des in4 vorgeschriebenen Prozesses verschoben. Sobald die angesprochene Cache-Zeile in den L1-Daten-Cache-Speicher542 verschoben ist, wird auf diese mittels der Ladeoperationen586 und/oder der Schreiboperationen580 und584 zugegriffen. Obwohl das gezeigte System500 zwei Kerne enthält, sind in alternativen Ausführungsformen mehr als zwei Kerne enthalten und/oder jeder Kern repräsentiert eine Anhäufung aus Ausführungseinheiten. Es können auch zusätzliche Cache-Speicher der Ebene 2 in weiteren alternativen Ausführungsformen vorgesehen sein, in denen mehr als zwei Kerne enthalten sind. Obwohl der Daten-Cache-Speicher der Ebene 2560 so gezeigt ist, dass dieser direkt mit dem Speicher530 gekoppelt ist, und der Speicher530 als ein Speicher außerhalb des Prozessors gezeigt ist, kann der Prozessor510 auch eine Speichersteuerung und/oder einen prozessorinternen Speicher umfassen. Ferner kann auch eine prozessorexterne Speichersteuerung den Daten-Cache-Speicher der Ebene 2560 mit dem Speicher530 verbinden. Für den Fachmann ergeben sich eine Vielzahl aus Konfigurationen für den Prozessorkern und dem Speicher. - Zu beachten ist, dass die zuvor beschriebenen Ausführungsformen eine Software enthalten. In einer derartigen Ausführungsform können die Programmbefehle, die die Verfahren und/oder Mechanismen implementieren, von einem computeransprechbaren Medium übertragen oder gespeichert sein. Es sind zahlreiche Arten an Medien verfügbar, die zum Speichern von Programmbefehlen geeignet sind, wozu Festplatten, Laufwerke, CD-ROM-Einrichtungen, DVD, Cache-Speicher, programmierbare ROM's (PROM), Speicher mit wahlfreiem Zugriff (RAM) und diverse andere Formen flüchtiger oder nicht-flüchtiger Speicher gehören. Zu noch weiteren Formen von Medien, die zum Übertragen von Programm befehlen für den Zugriff durch einen Computer geeignet sind, gehören terrestrische und nicht-terrestrische Kommunikationsverbindungen, etwa Netzwerk, drahtlose Einrichtungen und Satellitenverbindungen, über die elektrische, elektromagnetische, optische oder digitale Signale übertragen werden können. Somit können diverse Ausführungsformen ferner das Empfangen, Senden oder Speichern von Befehlen und/oder von Daten beinhalten, die gemäß der vorhergehenden Beschreibung auf Grund eines durch einen Computer ansprechbaren Medium eingerichtet sind.
- Obwohl die Ausführungsformen oben in beträchtlichem Detail beschrieben sind, werden für den Fachmann diverse Variationen und Modifizierungen unter Berücksichtigung der vorhergehenden Offenbarung offenkundig. Es ist beabsichtigt, dass die folgenden Patentansprüche alle derartigen Variationen und Modifizierungen mit einschließen.
- Industrielle Anwendbarkeit
- Diese Erfindung ist allgemein auf Mikroprozessoren anwendbar.
- Zusammenfassung
- Ein Prozessor umfasst eine Cache-Speicherhierarchie mit einem Cache-Speicher der Ebene 1 und einem Cache-Speicher höherer Ebene. Der Prozessor ordnet einen Bereich eines physikalischen Speicherraumes einem Bereich des Cache-Speichers höherer Ebene zu, führt Befehle aus, wovon zumindest einige Mikrocodierungen enthalten, ermöglicht es der Mikrocodierung, auf den Bereich des Cache-Speichers höherer Ebene zuzugreifen und verhindert, dass Befehle, die keine Mikrocodierung enthalten, auf den Bereich des Cache-Speichers höherer Ebene zugreifen. Der erste Bereich des physikalischen Speicherraumes kann permanent zur Verwendung von Mikrocodierung reserviert sein. Der Prozessor kann eine oder mehrere Cache-Zeilen des ersten Bereichs des Cache-Speichers höherer Ebene von dem Cache-Speicher höherer Ebene zu einem ersten Bereich des Cache-Speichers der Ebene 1 verschieben, kann es der Mikrocodierung ermöglichen, auf den ersten Bereich des ersten Cache-Speichers der Ebene 1 zuzugreifen und kann verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des ersten Cache-Speichers der Ebene zugreifen.
Claims (20)
- Prozessor mit: einer Cache-Speicherhierarchie mit mindestens einem ersten Cache-Speicher der Ebene 1 und einem Cache-Speicher höherer Ebene; wobei der Prozessor ausgebildet ist, um: einen ersten Bereich eines physikalischen Speicherraumes einem ersten Bereich des Cache-Speichers höherer Ebene zuzuordnen; Befehle auszuführen, wovon mindestens einige eine Mikrocodierung enthalten; der Mikrocodierung es zu ermöglichen, auf den ersten Bereich des Cache-Speichers höherer Ebene zuzugreifen; und zu verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des Cache-Speichers höherer Ebene zugreifen.
- Prozessor nach Anspruch 1, wobei der Cache-Speicher höherer Ebene ein Cache-Speicher der Ebene 2 ist.
- Prozessor nach Anspruch 1, wobei der erste Bereich des physikalischen Speicherraumes permanent für die Verwendung durch die Mikrocodierung reserviert ist.
- Prozessor nach Anspruch 1, wobei der Prozessor ferner ausgebildet ist, um: eine oder mehrere Cache-Zeilen des ersten Bereichs des Cache-Speichers höherer Ebene von dem Cache-Speicher höherer Ebene in einen ersten Bereich des ersten Cache-Speichers der Ebene 1 zu verschieben; es der Mikrocodierung zu ermöglichen, auf den ersten Bereich des ersten Cache-Speichers der Ebene 1 zuzugreifen; und zu verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des ersten Cache-Speichers der Ebene 1 zugreifen.
- Prozessor nach Anspruch 1, wobei der Prozessor ausgebildet ist, um: ein Mikrocodierungszugriffssignal zu erfassen; zu verhindern, dass Befehle auf den ersten Bereich des physikalischen Speicherraumes zugreifen, wenn das Mikrocodierungszugriffssignal nicht gesetzt ist; und es Befehlen zu ermöglichen, auf den ersten Bereich des physikalischen Speicherraumes zuzugreifen, wenn das Mikrocodierungssignal gesetzt ist.
- Prozessor nach Anspruch 5, der ferner einen Translationsnebenpuffer (TLB) aufweist, wobei der Prozessor zur Verhinderung, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des physikalischen Speicherraumes zugreifen, ferner ausgebildet ist, TLB-Wiederauffüllungen in den ersten Bereich des physikalischen Speicherraumes zu verhindern.
- Prozessor nach Anspruch 1, der ferner mindestens einen ersten Kern und einen zweiten Kern aufweist, wobei der zweite Kern ausgebildet ist, um: einen zweiten Bereich des physikalischen Speicherraumes einem zweiten Bereich des Cache-Speichers höherer Ebene zuzuordnen; Befehle auszuführen, wovon mindestens einige eine Mikrocodierung aufweisen; es der Mikrocodierung zu ermöglichen, auf den zweiten Bereich des Cache-Speichers höherer Ebene zuzugreifen; und es zu verhindern, dass Befehle, die eine keine Mikrocodierung enthalten, auf den zweiten Bereich des Cache-Speichers höherer Ebene zugreifen.
- Prozessor nach Anspruch 7, wobei der erste Kern den ersten Cache-Speicher der Ebene 1 enthält und wobei der zweite Kern einen zweiten Cache der Speicherebene 1 enthält; wobei der erste Kern ferner ausgebildet ist, um: eine oder mehrere Cache-Zeilen, die dem ersten Bereich des Cache-Speichers höherer Ebene zugeordnet sind, von dem Cache-Speicher höherer Ebene in einen Bereich des ersten Cache-Speichers der Ebene 1 zu verschieben; es der Mikrocodierung zu ermöglichen, auf den Bereich des ersten Cache-Speichers der Ebene 1 zuzugreifen; und zu verhindern, dass Befehle, die keine Decodierung aufweisen, auf den Bereich des ersten Cache-Speichers der Ebene 1 zugreifen; und wobei der zweite Kern ferner ausgebildet ist, um: eine oder mehrere Cache-Zeilen, die dem zweiten Bereich des Cache-Speichers höherer Ebene zugeordnet sind, von dem Cache-Speicher höherer Ebene zu einem Bereich des zweiten Cache-Speichers der Ebene 1 zu verschieben; es der Mikrocodierung zu ermöglichen, auf den Bereich des zweiten Cache-Speichers der Ebene 1 zuzugreifen; und zu verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den Bereich des zweiten Cache-Speichers der Ebene 1 zugreifen.
- Verfahren mit: Zuordnen eines ersten Bereichs eines physikalischen Speicherraumes zu einem ersten Bereich eines Cache-Speichers höherer Ebene in einer Cache-Speicher-Hierarchie eines Prozessors; Ausführen von Befehlen durch einen ersten Prozessorkern, wobei mindestens einige Befehle eine Mikrocodierung aufweisen; Ermöglichen durch den ersten Prozessorkern, dass Mikrocodierung auf den ersten Bereich des Cache-Speichers höherer Ebene zugreift; und Verhindern durch den ersten Prozessorkern, dass Befehle, die keine Mikrocodierung aufweisen, auf den ersten Bereich des Cache-Speichers höherer Ebene zugreifen.
- Verfahren nach Anspruch 9, wobei der Cache-Speicher höherer Ebene ein Cache-Speicher der Ebene 2 ist.
- Verfahren nach Anspruch 9, das ferner umfasst: permanentes Reservieren des ersten Bereichs des physikalischen Speicherraumes für die Verwendung durch die Mikrocodierung.
- Verfahren nach Anspruch 9, das ferner umfasst: Verschieben einer oder mehrerer Cache-Zeilen des ersten Bereichs des Cache-Speichers höherer Ebene von dem Cache-Speicher höherer Ebene zu einem ersten Bereich des ersten Cache-Speichers der Ebene 1 des Prozessors; Zulassen, dass die Mikrocodierung auf den Bereich des ersten Bereichs des ersten Cache-Speichers der Ebene 1 zugreift; und Verhindern, dass Befehle, die keine Mikrocodierung aufweisen, auf den ersten Bereich des ersten Cache-Speichers der Ebene 1 zugreifen.
- Verfahren nach Anspruch 9, das ferner umfasst: Erfassen eines Mikrocodierungszugriffssignals; Verhindern, dass Befehle auf den ersten Bereich des physikalischen Speicherraumes zugreifen, wenn das Mikrocodierungszugriffsignal nicht gesetzt ist; und Ermöglichen, dass Befehle auf den ersten Bereich des physikalischen Speicherraumes zugreifen, wenn das Mikrocodierungssignal gesetzt ist.
- Verfahren nach Anspruch 13, wobei Verhindern, dass Befehle auf den ersten Bereich des physikalischen Speicherraumes zugreifen, wenn das Mikrocodierungssignal nicht gesetzt ist, ferner umfasst: Verhindern von Wiederauffülloperationen an dem ersten Bereich des physikalischen Speicherraumes aus einem Translationsnebenpuffer (TLB).
- Verfahren nach Anspruch 9, das ferner umfasst: Zuordnen eines zweiten Bereichs des physikalischen Speicherbereiches zu einem zweiten Bereich des Cache-Speichers höherer Ebene; Ausführen von Befehlen, wovon zumindest einige eine Mikrocodierung aufweisen, durch einen zweiten Prozessorkern; Zulassen durch den zweiten Prozessorkern, dass Mikrocodierung auf den zweiten Bereich des Cache-Speichers höherer Ebene zugreift; und Verhindern durch den zweiten Prozessorkern, dass Befehle, die keine Mikrocodierung enthalten, auf den zweiten Bereich des Cache-Speichers höherer Ebene zugreifen.
- Verfahren nach Anspruch 15, das ferner umfasst: Verschieben einer oder mehrerer Cache-Zeilen, die dem ersten Bereich des Cache-Speichers höherer Ebene zugeordnet sind, von dem Cache-Speicher höherer Ebene zu einem Bereich eines ersten Cache-Speichers der Ebene 1; Verschieben einer oder mehrerer Cache-Zeilen, die dem zweiten Bereich des Cache-Speichers höherer Ebene zugeordnet sind, von dem Cache-Speicher höherer Ebene zu einem Bereich eines zweiten Cache-Speichers der Ebene 1; Zulassen, dass Mikrocodierung auf den Bereich des ersten Cache-Speichers der Ebene 1 und/oder auf den Bereich des zweiten Cache-Speichers der Ebene 1 zugreift; Verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den Bereich des ersten Cache-Speichers der Ebene 1 zugreifen; und Verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den Bereich des zweiten Cache-Speichers der Ebene 1 zugreifen.
- Computersystem mit: mindestens einem Prozessor, der mit einem Speicher und einer oder mehreren peripheren Einrichtungen verbunden ist; wobei der mindestens eine Prozessor eine Cache-Speicherhierarchie aufweist, die zumindest einen ersten Cache-Speicher der Ebene 1 und einen Cache-Speicher höherer Ebene umfasst; wobei der mindestens eine Prozessor ausgebildet ist, um: einen ersten Bereich eines physikalischen Speicherraumes einem ersten Bereich des Cache-Speichers höherer Ebene zuzuordnen; Befehle auszuführen, wovon mindestens einige eine Mikrocodierung aufweisen; Es einer Mikrocodierung zu ermöglichen, auf den ersten Bereich des Cache-Speichers der Ebene zuzugreifen; und zu verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des Cache-Speichers höherer Ebene zugreifen.
- Computersystem nach Anspruch 17, wobei der mindestens eine Prozessor ferner ausgebildet ist, um: eine oder mehrere Cache-Zeilen des ersten Bereichs des Cache-Speichers höherer Ebene von dem Cache-Speicher höherer Ebene zu einem ersten Bereich des ersten Cache-Speichers der Ebene 1 zu verschieben; es einer Mikrocodierung zu ermöglichen, auf den ersten Bereich des ersten Cache-Speichers der Ebene 1 zuzugreifen; und zu verhindern, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des ersten Cache-Speichers der Ebene 1 zugreifen.
- Computersystem nach Anspruch 17, wobei der mindestens eine Prozessor ferner ausgebildet ist, um: ein Mikrocodierungszugriffssignal zu erfassen; zu verhindern, dass Befehle auf den ersten Bereich des physikalischen Speicherraumes zugreifen, wenn das Mikrocodierungssignal nicht gesetzt ist; und es Befehlen zu ermöglichen, auf den ersten Bereich des physikalischen Speicherraumes zuzugreifen, wenn das Mikrocodierungszugriffssignal gesetzt ist.
- Computersystem nach Anspruch 17, wobei der mindestens eine Prozessor ferner einen Translationsnebenpuffer (TLB) aufweist, wobei der mindestens eine Prozessor zur Verhinderung, dass Befehle, die keine Mikrocodierung enthalten, auf den ersten Bereich des physikalischen Speicherraumes zugreifen, ferner ausgebildet ist, TLB-Wiederauffüllungen in den ersten Bereich des physikalischen Speicherraumes zu unterbinden.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/754,589 | 2007-05-29 | ||
US11/754,589 US7734873B2 (en) | 2007-05-29 | 2007-05-29 | Caching of microcode emulation memory |
PCT/US2008/006746 WO2008153799A1 (en) | 2007-05-29 | 2008-05-28 | Caching of microcode emulation memory |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112008001473T5 true DE112008001473T5 (de) | 2010-07-01 |
DE112008001473B4 DE112008001473B4 (de) | 2021-08-26 |
Family
ID=39708011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112008001473.6T Active DE112008001473B4 (de) | 2007-05-29 | 2008-05-28 | Zwischenspeicherung eines Mikrocodierungsemulationsspeichers |
Country Status (8)
Country | Link |
---|---|
US (1) | US7734873B2 (de) |
JP (1) | JP5496085B2 (de) |
KR (1) | KR101503865B1 (de) |
CN (1) | CN101707881B (de) |
DE (1) | DE112008001473B4 (de) |
GB (1) | GB2462556B (de) |
TW (1) | TWI457826B (de) |
WO (1) | WO2008153799A1 (de) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8296528B2 (en) * | 2008-11-03 | 2012-10-23 | Intel Corporation | Methods and systems for microcode patching |
US20120017039A1 (en) * | 2010-07-16 | 2012-01-19 | Plx Technology, Inc. | Caching using virtual memory |
US9529729B2 (en) * | 2010-11-16 | 2016-12-27 | International Business Machines Corporation | Location of memory management translations in an emulated processor |
US9251093B2 (en) | 2011-05-19 | 2016-02-02 | International Business Machines Corporation | Managing the translation look-aside buffer (TLB) of an emulated machine |
CN106469020B (zh) * | 2015-08-19 | 2019-08-09 | 旺宏电子股份有限公司 | 高速缓存元件与控制方法及其应用系统 |
US10884751B2 (en) | 2018-07-13 | 2021-01-05 | Advanced Micro Devices, Inc. | Method and apparatus for virtualizing the micro-op cache |
US11016763B2 (en) | 2019-03-08 | 2021-05-25 | Advanced Micro Devices, Inc. | Implementing a micro-operation cache with compaction |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4901235A (en) | 1983-10-28 | 1990-02-13 | Data General Corporation | Data processing system having unique multilevel microcode architecture |
JPH0738175B2 (ja) * | 1987-10-20 | 1995-04-26 | 富士通株式会社 | 仮想記憶装置のデータ保護検査方法 |
US5278973A (en) | 1989-03-27 | 1994-01-11 | Unisys Corporation | Dual operating system computer |
US5132927A (en) * | 1990-10-09 | 1992-07-21 | Tandem Computers Incorporated | System for cache space allocation using selective addressing |
WO1993006549A1 (en) | 1991-09-19 | 1993-04-01 | Chips And Technologies, Inc. | A system for performing input and output operations to and from a processor |
US5905997A (en) | 1994-04-29 | 1999-05-18 | Amd Inc. | Set-associative cache memory utilizing a single bank of physical memory |
US5826052A (en) * | 1994-04-29 | 1998-10-20 | Advanced Micro Devices, Inc. | Method and apparatus for concurrent access to multiple physical caches |
JPH07311752A (ja) | 1994-05-11 | 1995-11-28 | Internatl Business Mach Corp <Ibm> | 分散データ処理システム及び初期プログラムロード方法 |
JP3177117B2 (ja) | 1994-05-11 | 2001-06-18 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 複数のノード内の制御コードを更新する方法および装置 |
US5926642A (en) | 1995-10-06 | 1999-07-20 | Advanced Micro Devices, Inc. | RISC86 instruction set |
US5864689A (en) | 1995-12-05 | 1999-01-26 | Advanced Micro Devices, Inc. | Microprocessor configured to selectively invoke a microcode DSP function or a program subroutine in response to a target address value of branch instruction |
US5950012A (en) * | 1996-03-08 | 1999-09-07 | Texas Instruments Incorporated | Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes |
US5796972A (en) | 1997-01-14 | 1998-08-18 | Unisys Corporation | Method and apparatus for performing microcode paging during instruction execution in an instruction processor |
US6141740A (en) | 1997-03-03 | 2000-10-31 | Advanced Micro Devices, Inc. | Apparatus and method for microcode patching for generating a next address |
US5889978A (en) | 1997-04-18 | 1999-03-30 | Intel Corporation | Emulation of interrupt control mechanism in a multiprocessor system |
WO1999060480A1 (en) | 1998-05-15 | 1999-11-25 | Richard Rubinstein | Shared, reconfigurable cache memory execution subsystem |
JP2000194602A (ja) * | 1998-12-28 | 2000-07-14 | Nec Corp | 情報処理装置、マイクロプロセッサ及び外部キャッシュメモリの制御方法 |
US6745306B1 (en) * | 1999-07-29 | 2004-06-01 | Microsoft Corporation | Method and system for restricting the load of physical address translations of virtual addresses |
US6457100B1 (en) * | 1999-09-15 | 2002-09-24 | International Business Machines Corporation | Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls |
US6397301B1 (en) * | 1999-12-29 | 2002-05-28 | Intel Corporation | Preventing access to secure area of a cache |
US6643800B1 (en) | 2000-02-02 | 2003-11-04 | Hewlett-Packard Development Company, L.P. | Method and apparatus for testing microarchitectural features by using tests written in microcode |
US6804772B2 (en) * | 2000-06-12 | 2004-10-12 | Broadcom Corporation | Dynamic field patchable microarchitecture |
EP1182570A3 (de) * | 2000-08-21 | 2004-08-04 | Texas Instruments Incorporated | TLB mit Ressource-Kennzeichnungsfeld |
US6754765B1 (en) * | 2001-05-14 | 2004-06-22 | Integrated Memory Logic, Inc. | Flash memory controller with updateable microcode |
US7346757B2 (en) * | 2002-10-08 | 2008-03-18 | Rmi Corporation | Advanced processor translation lookaside buffer management in a multithreaded system |
US7797492B2 (en) * | 2004-02-20 | 2010-09-14 | Anoop Mukker | Method and apparatus for dedicating cache entries to certain streams for performance optimization |
US7370243B1 (en) * | 2004-06-30 | 2008-05-06 | Sun Microsystems, Inc. | Precise error handling in a fine grain multithreaded multicore processor |
US7437581B2 (en) * | 2004-09-28 | 2008-10-14 | Intel Corporation | Method and apparatus for varying energy per instruction according to the amount of available parallelism |
JP2006209527A (ja) | 2005-01-28 | 2006-08-10 | Nokia Corp | コンピュータシステム |
US7095342B1 (en) | 2005-03-31 | 2006-08-22 | Intel Corporation | Compressing microcode |
US7827390B2 (en) * | 2007-04-10 | 2010-11-02 | Via Technologies, Inc. | Microprocessor with private microcode RAM |
US7681020B2 (en) * | 2007-04-18 | 2010-03-16 | International Business Machines Corporation | Context switching and synchronization |
-
2007
- 2007-05-29 US US11/754,589 patent/US7734873B2/en active Active
-
2008
- 2008-05-28 TW TW097119629A patent/TWI457826B/zh active
- 2008-05-28 DE DE112008001473.6T patent/DE112008001473B4/de active Active
- 2008-05-28 CN CN200880018278.4A patent/CN101707881B/zh active Active
- 2008-05-28 WO PCT/US2008/006746 patent/WO2008153799A1/en active Application Filing
- 2008-05-28 KR KR1020097026820A patent/KR101503865B1/ko not_active IP Right Cessation
- 2008-05-28 GB GB0920954.5A patent/GB2462556B/en active Active
- 2008-05-28 JP JP2010510322A patent/JP5496085B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
TW200905555A (en) | 2009-02-01 |
JP2010529534A (ja) | 2010-08-26 |
US7734873B2 (en) | 2010-06-08 |
JP5496085B2 (ja) | 2014-05-21 |
GB2462556B (en) | 2012-05-30 |
GB2462556A (en) | 2010-02-17 |
KR101503865B1 (ko) | 2015-03-24 |
CN101707881A (zh) | 2010-05-12 |
KR20100022483A (ko) | 2010-03-02 |
DE112008001473B4 (de) | 2021-08-26 |
WO2008153799A1 (en) | 2008-12-18 |
US20080301364A1 (en) | 2008-12-04 |
GB0920954D0 (en) | 2010-01-13 |
CN101707881B (zh) | 2016-06-15 |
TWI457826B (zh) | 2014-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112008001473T5 (de) | Zwischenspeicherung eines Mikrocodierungsemulationsspeichers | |
DE112005003859B4 (de) | Verwalten von Prozessorressourcen während Architekturereignissen | |
DE10297433B4 (de) | Speicherverwaltungseinheit, Verfahren zum Bereitstellen einer Speicherzugriffssicherheit auf der Basis einer linearen Adresse und Prozessor | |
DE69022716T2 (de) | Mehrrechnersystem mit verteilten gemeinsamen Betriebsmitteln und dynamischer und selektiver Vervielfältigung globaler Daten und Verfahren dafür. | |
DE102011076894B9 (de) | Persistenter Speicher für einen Hauptspeicher eines Prozessors | |
DE69320847T2 (de) | Verfahren und Anordnung zur Ausführung von Prozessen in einem Multiprozessor-System | |
DE112006000339B4 (de) | System für einen beschränkten Cache-Zugriff während des Datentransfers und Verfahren dazu | |
DE102014014076A1 (de) | Reduzierte Adressenkonvertierung mit mehreren Seitengrößen | |
DE102008062044B4 (de) | 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration | |
DE112006002237T5 (de) | Verfahren zur selbstinitiierenden Synchronisierung in einem Computersystem | |
DE102006030879A1 (de) | System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem | |
DE112012005222T5 (de) | Halbleiter-Datenspeicherverwaltung | |
DE112006002565T5 (de) | Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher | |
DE102005031525A1 (de) | Verfahren und System zur Steuerung eines Flashspeichers und Speichersystem | |
DE112005002405T5 (de) | Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung | |
DE112017001027T5 (de) | Seitenfehlerbehebung | |
DE112008001679T5 (de) | Cache-Speicher mit konfigurierbarer Assoziativität | |
DE112007002201T5 (de) | Quality-of-Service-Implementierung für Plattformressourcen | |
DE112020001937T5 (de) | Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung | |
WO2013110736A1 (de) | Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem - kern zur exklusiven bereitstellung an virutelle maschinen | |
DE112010005609T5 (de) | Speichern von Daten in einem einer Mehrzahl von Puffern in einer Speichersteuerung | |
DE69815482T2 (de) | Computer Anordnung mit Prozessor und Speicher-Hierarchie und sein Betriebsverfahren | |
DE102018202446A1 (de) | Verfahren zum Modularisieren einer Softwarearchitektur | |
DE112006004185T5 (de) | Verfahren zum Verwalten von Daten in einem nichtflüchtigen Speicher | |
DE69808628T2 (de) | Mikroprozessorcachespeicherübereinstimmung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |