DE112008001473T5 - Zwischenspeicherung eines Mikrocodierungsemulationsspeichers - Google Patents

Zwischenspeicherung eines Mikrocodierungsemulationsspeichers Download PDF

Info

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
Application number
DE112008001473T
Other languages
English (en)
Other versions
DE112008001473B4 (de
Inventor
Gary Los Altos Lauterbach
Bruce R. Boulder Creek Holloway
Michael Gerard San Jose Butler
Sean Santa Clara Lie
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 DE112008001473T5 publication Critical patent/DE112008001473T5/de
Application granted granted Critical
Publication of DE112008001473B4 publication Critical patent/DE112008001473B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/30098Register arrangements
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • 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
    • 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/3824Operand 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.

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 Computersystems 100. In der gezeigten Ausführungsform ist ein Prozessor 110 gezeigt, der mit einem Speicher 150 gekoppelt ist. Der Speicher 150 umfasst SDRAM-, SRAM-, ROM-, DRAM- und/oder andere konventionelle Speichereinrichtungen. Der Prozessor 110 enthält einen Kern 120, einen L2-Datencache-Speicher 130 und einen L2-Translationsnebenpuffer (Translations-lookaside-Puffer TLB) 140. Der Kern 120 enthält eine Ausführungseinheit 122, eine Lade/Schreib-Einheit 124, einen L1-Daten-Cache-Speicher 126 und einen L1-TLB 128. Der L2-Daten-Cache-Speicher 120 enthält einen Mikrocodierungsemulationsspeicher 135. In alternativen Ausführungsformen umfasst der Prozessor 110 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 L1 126 separat zu dem Kern 120 vorgesehen. In anderen alternativen Ausführungsformen sind zusätzliche Cache-Ebenen im Computersystem 100 enthalten, etwa als ein Cache-Speicher der Ebene 3, der intern im Prozessor 110 oder separat zum Prozessor 110 vorgesehen ist. In diesen und anderen alternativen Ausführungsformen ist der Mikrocodierungsemulationsspeicher 135 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 Mikrocodierungsemulationsspeicher 135 reserviert ist.
  • Während des Betriebs empfängt die Ausführungseinheit 122 den Datenbereich von Ladeoperationen, die von der Lade/Schreibeinheit 134 auszuführen sind, über eine Verbindung 161 und übermittelt den Datenbereich von Schreiboperationen an die Lade/Schreib-Einheit 124 über eine Verbindung 162. Die Lade/Schreibeinheit 124 empfängt den Datenbereich von Ladeoperationen, die von dem L1-Daten-Cache-Speicher 126 auszuführen sind, über eine Verbindung 163 und übermittelt den Datenbereich für Schreiboperationen in den L1-Daten-Cache-Speicher 126 über eine Verbindung 164. Der L1-Daten-Cache-Speicher 126 empfängt den Datenbereich von Ladeoperationen für den L2-Daten-Cache-Speicher 120 über eine Verbindung 165 und überträgt den Datenbereich für Schreiboperationen in den L2-Daten-Cache-Speicher 130 über eine Verbindung 166. Der L2-Daten-Cache-Speicher 130 empfängt den Datenbereich von Ladeoperationen aus dem Speicher 150 und überträgt den Datenbereich für Schreiboperationen in diesen Speicher über eine Verbindung 167. Der L1-TLB 128 ist so gezeigt, dass dieser mit dem L1-Daten-Cache-Speicher 126 über eine Verbindung 171, mit dem L2-Daten-Cache-Speicher 130 über eine Verbindung 172 und mit dem L2-TLB 140 über eine Verbindung 173 verbunden ist. Der L2-TLB 140 ist ferner so gezeigt, dass er mit dem L2-Daten-Cache-Speicher 130 über eine Verbindung 174 verbunden ist.
  • Der L1-Daten-Cache-Speicher 126, der L1-TLB 128, der L2-Daten-Cache-Speicher 130 und der L2-TLB 140 können konventionelle Adressenübersetzungs- und Zwischenspeicherungsfunktionen ausführen. Beispielsweise kann der L1-TLB 128 Zuordnungen virtueller Adressen zu physikalischen Adressen zwischenspeichern. Wenn eine Speicherzugriffsanforderung auftritt, wird der L1-TLB 128 überprüft, um zu erkennen, ob eine Zuordnung der gewünschten virtuellen Adresse zu einer physikalischen Adresse abgespeichert ist. Zuordnungen, die in dem L1-TLB 128 abgelegt sind, können verwendet werden, um zu bestimmen, ob eine gewünschte Cache-Zeile in dem L1-Daten-Cache-Speicher 126 vorhanden ist. Wenn eine gewünschte Cache-Zeile nicht im L1-Daten-Cache-Speicher 126 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-TLB 140 abgelegt sind, können verwendet werden, um zu bestimmen, ob eine gewünschte Cache-Zeile im L2-Daten-Cache-Speicher 130 vorhanden ist. Wenn ein Cache-Fehltreffer im L1-Daten-Cache-Speicher 126 auftritt, wird, um Platz für einen neuen Eintrag zu schaffen, eine Cache-Zeile aus dem L1-Daten-Cache-Speicher 126 in den L2-Daten-Cache-Speicher 130 ausgelagert. Ein entsprechender Eintrag in dem L1-TLB 128 wird in den L2-TLB 140 verschoben. Um für einen neuen Eintrag in dem L2-Daten-Cache-Speicher 130 Platz zu schaffen, kann es erforderlich sein, eine Cache-Zeile von dem L2-Daten-Cache-Speicher 130 in den Hauptspeicher 150 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 TLB 128 abgelegt, wobei dieser Vorgang als eine TLB-Wiederauffüllung bezeichnet werden kann. Weitere Details und Funktionsweisen dieser Daten-Cache-Speicher 126 und 120 und der TLB's 128 und 140 im Hinblick auf das Vermeiden einer Schädigung des Mikrocodierungsemulationsspeicherraums 135 werden im Weiteren angegeben.
  • 2 zeigt eine Ausführungsform einer virtuellen Speicher- und Cache-Architektur, die in dem Prozessor 110 eingesetzt werden kann. In der Darstellung ist ein virtueller Speicherraum 210 gezeigt, wovon Bereiche einem physikalischen Speicheradressenraum 220 zugeordnet sind. Bereiche des physikalischen Speicheradressenraumes 220 sind so gezeigt, dass sie dem L2-Cache-Speicherraum 230 zugeordnet sind, von welchem Bereiche wiederum dem L1-Cache-Speicherraum 240 zugeordnet sind. Jede Anwendung, die in dem Prozessor 110 abgearbeitet wird, kann einen separaten virtuellen Speicheradressenraum verwenden. Der virtuelle Speicheradressenraum 210, der in 2 gezeigt ist, enthält Blöcke 211 bis 215, die Bereiche des virtuellen Speichers repräsentieren, die dem physikalischen Speicheradressenraum 220 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 Speicheradressenraum 220 Blöcke 221 bis 224, die die Bereiche an physikalischem Speicher repräsentieren, die in dem L2-Cache-Speicherraum 230 zwischengespeichert sind. In ähnlicher Weise enthält der L2-Cache-Speicherraum 230 Blöcke 231 bis 233, die die Bereiche des L2-Cache-Speiches repräsentieren, die in dem L1-Cache-Speicherraum 240 abgelegt sind. Insbesondere sind die Blöcke 231, 232 und 233 des L2- Cache-Speicherraums 230 entsprechend den Blöcken 242, 243 und 241 des Cache-Speicherraums 240 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 Speicheradressenraum 120, der physikalische Speicheradressenraum 220, der L2-Cache-Speicher 230 und der L1-Cache-Speicher 240 mehr oder weniger Blöcke aufweisen, als dies in 2 gezeigt ist.
  • In einer Ausführungsform wird der Block 221 in dem physikalischen Speicherraum 220 als ein Mikrocodierungsemulationsspeicher reserviert. Des weiteren kann der Block 231 des L2-Cache-Speicherraums 230 permanent für das Speichern des Inhalts des Mikrocodierungsemulationsspeichers reserviert werden. Während des Betriebs wird, wenn der Prozessor 110 einen Zugriff auf den Mikrocodierungsemulationsspeicher fordert, der Block 231 in dem Cache-Speicher der Ebene 1 zwischengespeichert, etwa im Block 242, wie dies in 2 gezeigt ist. Jedoch ist der Block 242 ggf. nicht permanent für die Verwendung als Mikrocodierungsemulationsspeicher reserviert, wie dies für Block 231 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 Block 231 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 Blocks 221 des physikalischen Speicherraums nicht gestattet wird.
  • 3 zeigt eine Ausführungsform eines Prozessors 300 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 (Entscheidungsblock 310). 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 (Block 320) 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 (Block 330). Wenn ein übereinstimmender Eintrag in einem L1-TLB gefunden wird (Entscheidungsblock 340), dann wird auf die angezielte Cache-Zeile zugegriffen (Block 390) 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 (Entscheidungsblock 340), dann wird die angesprochene Cache-Zeile von dem L2-Cache-Speicher in den L1-Cache-Speicher verschoben (Block 360), es wird auf die gezielte Cache-Zeile zugegriffen (Block 390) 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 (Block 370). Wenn das Ergebnis der Adressenübersetzung eine Zieladresse liefert, die in dem Mikrocodierungsemulationsspeicher liegt (Entscheidungsblock 380), dann wird ein Zugriff verhindert (Block 380), wobei der Zugriffsversuch dann beendet wird. Wenn das Ergebnis der Adressenübersetzung eine Zieladresse ist, die nicht in dem Mikrocodierungsemulationsspeicher liegt (Entscheidungsblock 380), dann wird eine TLB-Wiederauffüllung ausgeführt (Block 382), es wird auf die angesprochene Cache-Zeile zugegriffen (Block 390), und der Zugriff wird abgeschlossen.
  • 4 zeigt eine Ausführungsform eines Prozessors 400 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 (Entscheidungsblock 410). Wenn dies der Fall ist, wird der Zugriff auf die angesprochene Cache-Zeile zugelassen (Block 420) 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 (Block 430). Die angezielte Cache-Zeile wird dann von dem L2-Cache-Speicher in den L1-Cache-Speicher verschoben (Block 440). Sobald die Ziel-Cache-Zeile in den L1-Cache-Speicher verschoben ist, wird der Zugriff erlaubt (Block 420) und der Zugriff wird abgeschlossen.
  • 5 ist eine Blockansicht einer Ausführungsform eines Computersystems 500 mit einem L2-Daten-Cache-Speicher 560 und einem Mikrocodierungsemulationsspeicher 135, die mit mehreren Systemkomponenten gekoppelt sind. In dem dargestellten System ist der Prozessor 510 so gezeigt, dass er mit Peripherieeinrichtungen 510 und einem Speicher 530 verbunden ist. Die Peripherieeinrichtungen 520 umfassen beliebige Einrichtungen, etwa Netzwerkstellen, Zeitgeberschaltungen, Speichermedien, Eingabe/Ausgabe-Einrichtungen, etc., die in einem konventionellen Computersystem vorgefunden werden. Der Speicher 530 umfasst etwa SDRAM-, SRAM-, ROM-, DRAM- und/oder andere konventionelle Speichereinrichtungen. Der Prozessor 510 umfasst Kerne 540a und 540b, einen vereinigenden Schreib/Cache-Speicher 550, einen Daten-Cache-Speicher der Ebene 2 560 und eine I/O-Schnittstelle 570. Die I/O-Schnittstelle 570 verbindet etwa alle Kerne 540 mit den Peripherieeinrichtungen 520. 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 Kerne 540a und 540b als Kerne 540 bezeichnet und ein nicht spezifizierter Kern der Kerne 540 kann einfach als ein Kern 540 bezeichnet werden.
  • Jeder Kern 540 enthält eine Daten-Cache-Speicher der Ebene 1 542, eine Schreiblogikeinheit 544 und eine Lade/Schreibpipeline 546. Die Schreiblogikeinheit 544 (die alternativ als „Schreibeinheit” bezeichnet wird) repräsentiert einen Bereich einer Lade/Schreib-Einheit, eine separate Logikeinheit oder eine Kombination davon. Die Schreiblogik 544 ist sowohl mit dem Daten/Cache-Speicher der Ebene 1 542 als auch mit dem vereinigenden Schreib/Cache-Speicher 550 verbunden, um es dem Kern 540 zu ermöglichen, den Speicher jeder Ebene zu beschreiben. Insbesondere überträgt die Schreiblogik 544 Schreiboperationen 584 zu dem Daten-Cache-Speicher 542 der Ebene 1 und überträgt Schreiboperationen 582 zu dem Schreib-Cache-Speicher 550. Der vereinigende Schreib-Cache-Speicher 550 kann ferner mit einem Daten-Cache-Speicher der Ebene 2 560 mittels Verbindungen für Auffülloperationen 564 und Verbindungen für Verschiebungen 566 gekoppelt sein. Der vereinigende Schreib/Cache-Speicher 550 kann die Schreiboperationen 582 zusammenfügen mit Fülloperationen 564, um eine geringe Anzahl an Verschiebungen 566 zu erzeugen. Der Daten-Cache-Speicher der Ebene 2 560 ist ferner mit jedem Daten-Cache-Speicher der Ebene 1 542 verbunden. Insbesondere kann der Daten-Cache-Speicher der Ebene 2 560 die Fülloperationen 562 zu dem Daten-Cache-Speicher der Ebene 1 542 übertragen. Der Daten-Cache-Speicher der Ebene 2 560 kann ferner auch bidirektional mit dem Hauptspeicher 530 verbunden sein.
  • Während des Betriebs führt der Kern 540 eine Reihe von Befehlen aus, die, wenn sie decodiert sind, Ladeoperationen 586 von dem Daten-Cache-Speicher 11 542 zur Lade/Schreibpipeline 546 und/oder Schreiboperationen 580 von Lade/Schreib-Pipeline 546 in die Schreiblogik 544 hervorrufen. Die von dem Kern 540 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 Mikrocodierungsemulationsspeicher 135 erfordert, wird auf die angesprochene Cache-Zeile zugegriffen und bei Bedarf wird diese vom L2-Daten-Cache-Speicher 560 zu dem L1-Daten-Cache-Speicher 542 unter Anwendung des in 4 vorgeschriebenen Prozesses verschoben. Sobald die angesprochene Cache-Zeile in den L1-Daten-Cache-Speicher 542 verschoben ist, wird auf diese mittels der Ladeoperationen 586 und/oder der Schreiboperationen 580 und 584 zugegriffen. Obwohl das gezeigte System 500 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 2 560 so gezeigt ist, dass dieser direkt mit dem Speicher 530 gekoppelt ist, und der Speicher 530 als ein Speicher außerhalb des Prozessors gezeigt ist, kann der Prozessor 510 auch eine Speichersteuerung und/oder einen prozessorinternen Speicher umfassen. Ferner kann auch eine prozessorexterne Speichersteuerung den Daten-Cache-Speicher der Ebene 2 560 mit dem Speicher 530 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)

  1. 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.
  2. Prozessor nach Anspruch 1, wobei der Cache-Speicher höherer Ebene ein Cache-Speicher der Ebene 2 ist.
  3. Prozessor nach Anspruch 1, wobei der erste Bereich des physikalischen Speicherraumes permanent für die Verwendung durch die Mikrocodierung reserviert ist.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. Verfahren nach Anspruch 9, wobei der Cache-Speicher höherer Ebene ein Cache-Speicher der Ebene 2 ist.
  11. Verfahren nach Anspruch 9, das ferner umfasst: permanentes Reservieren des ersten Bereichs des physikalischen Speicherraumes für die Verwendung durch die Mikrocodierung.
  12. 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.
  13. 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.
  14. 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).
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
DE112008001473.6T 2007-05-29 2008-05-28 Zwischenspeicherung eines Mikrocodierungsemulationsspeichers Active DE112008001473B4 (de)

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)

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

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

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