DE102013201767B4 - Übersetzungs-Adresse-Zwischenspeicher für einen Mikroprozessor - Google Patents

Übersetzungs-Adresse-Zwischenspeicher für einen Mikroprozessor Download PDF

Info

Publication number
DE102013201767B4
DE102013201767B4 DE102013201767.7A DE102013201767A DE102013201767B4 DE 102013201767 B4 DE102013201767 B4 DE 102013201767B4 DE 102013201767 A DE102013201767 A DE 102013201767A DE 102013201767 B4 DE102013201767 B4 DE 102013201767B4
Authority
DE
Germany
Prior art keywords
instruction
address
translation
microprocessor
alternate version
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.)
Active
Application number
DE102013201767.7A
Other languages
English (en)
Other versions
DE102013201767A1 (de
Inventor
Ross Segelken
Alexander Klaiber
Nathan Tuck
David Dunn
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013201767A1 publication Critical patent/DE102013201767A1/de
Application granted granted Critical
Publication of DE102013201767B4 publication Critical patent/DE102013201767B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • 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
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • 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/30181Instruction operation extension or modification
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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, look ahead
    • G06F9/3802Instruction prefetching

Abstract

Mikroprozessor (100), aufweisend Holen-Logik (120), welche operativ ist, um:eine Anweisung zu holen;einen Hash-Index von einem oder mehrerer Teile einer Adresse für die Anweisung zu erzeugen;ein Disambiguierungs-Kennzeichen von wenigstens einem anderen Teil der Adresse für die Anweisung zu erzeugen;basierend auf dem Hash-Index und dem Dismabiguierungs-Kennzeichen zu bestimmen, ob eine alternative Version der Anweisung existiert, welche dieselbe Funktionalität wie die Anweisung erreicht; mitVerweisen auf einen Übersetzung-Adresse-Index in einem Übersetzung-Adresse-Zwischenspeicher gemäß dem Hash-Index,Vergleichen eines momentanen Kontext für den Mikroprozessors mit einem angenommenen Kontext, wobei der momentane Kontext einen momentanen Arbeitszustand des Mikroprozessors beschreibt und der angenommene Kontext einen Zustand des Mikroprozessors beschreibt, für welchen die alternative Version gültig ist,Bestimmen, wenn der momentane Kontext mit dem angenommenen Kontext übereinstimmt, dass die alternative Version existiert,wobei die alternative Version eine Übersetzung der Anweisung ist und die alternative Version einen Satz einer oder mehrerer Mikro-Operationen umfasst; undwenn das Hashing zu einer Bestimmung führt, dass solch eine alternative Version existiert, das Holen abzubrechen und die alternative Version zur Ausführung mit dem Mikroprozessor abzurufen, wobei eine physikalische Adresse aus dem Übersetzung-Adresse-Zwischenspeicher abgerufen wird.

Description

  • HINTERGRUND
  • Architektur-Niveau-Anweisungen für Mikroprozessoren können zwischen einer Anweisungs-Satz-Architektur (ISA) und einer nativen Architektur übersetzen. In einigen Mikroprozessoren können Software-Optimierungen der ISA-Anweisungen vergleichsweise effizienter ausführen als die ISA-Anweisungen, auf welchen diese Software-Optimierungen basiert waren. Beispielhafte Mikroprozessoren sind in der US 2010/0161901 A9 und der US 5721855 A offenbart. Einige vergangene Zugangsweisen verketteten (chained) Software-Optimierungen, um Kontrolle von einer Software-Optimierung auf eine andere zu passieren. Solche Zugangsweisen können jedoch von indirekt-verzweigten Prozessen herausgefordert werden, weil es schwierig sein kann, das Ziel einer indirekten Verzweigung zu bestimmen.
  • ZUSAMMENFASSUNG
  • Zur weiteren Optimierung wird ein Mikroprozessor gemäß Hauptanspruch vorgeschlagen. Vorteilhafte Ausgestaltungen des Mikroprozessors sind in den Unteransprüchen angegeben. Verschiedene Ausführungsformen, welche ein Holen von Quelle-Information und von alternativen Versionen der Quelle-Information betreffen, welche dieselbe beobachtbare Funktionalität erreichen, sind bereitgestellt. In einer Ausführungsform umfasst ein Mikroprozessor eine Hol-Logik, welche operativ ist, eine Anweisung zu holen, eine Adresse für die Anweisung zu zerhacken (hash), um zu bestimmen, ob eine alternative Version der Anweisung, welche dieselbe Funktionalität wie die Anweisung erreicht, existiert, und, wenn das Zerhacken (hashing) zu der Bestimmung führt, dass solch eine alternative Version existiert, das Holen abzubrechen und die alternative Version abzurufen und auszuführen.
  • Figurenliste
    • 1 zeigt schematisch einen Mikroprozessor gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 2 zeigt schematisch einen Übersetzung-Adresse-Zwischenspeicher gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 3A zeigt einen Teil eines Flussdiagramms für ein Verfahren eines Holens einer Anweisung von einem Anweisungs-Zwischenspeicher und eines Bestimmens, ob eine alternative Version für die Anweisung in dem Anweisungs-Zwischenspeicher gespeichert ist, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 3B zeigt einen anderen Teil des Flussdiagramms, welches in 3A illustriert ist.
    • 3C zeigt einen anderen Teil des Flussdiagramms, welches in 3A und 3B illustriert ist.
    • 4 zeigt schematisch ein Verfahren eines Zerhackens einer linearen Adresse für eine Anweisung, um einen Hash-Index und ein Disambiguierungs-Merkmal (disambiguation tag) für die lineare Adresse zu erzeugen, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 5 zeigt schematisch einen Übersetzung-Adresse-Zwischenspeicher-Eingang bzw. -Eintrag gemäß einer Ausführungsform der vorliegenden Offenbarung.
  • DETAILLIERTE BESCHREIBUNG
  • In modernen Mikroprozessoren können Architektur-Niveau-Anweisungen zwischen einer Quelle-Anweisungs-Satz-Architektur (ISA), wie etwa eine fortgeschrittene RISC-Maschinen-(ARM)-Architektur oder eine x86-Architektur, und einer alternativen bzw. anderen (alternate) ISA übersetzt werden, um dieselbe beobachtbare Funktionalität wie die Quelle zu erreichen. Zum Beispiel kann ein Satz von einer oder mehreren Anweisungen einer Quellen-ISA in eine oder mehrere Mikro-Operationen einer nativen Architektur übersetzt werden, welche dieselbe Funktion wie die Quelle-ISA-Anweisung durchführt. In einigen Einstellungen können bzw. kann die native Mikro-Operation(en) eine verbesserte oder optimierte Performance relativ zu der Quellen-ISA-Anweisung bereitstellen.
  • Einige vergangene Zugangsweisen versuchten, Software-Optimierungen von Quelle-Anweisungen so zu verketten (chain), dass die Kontrolle von einer Software-Optimierung an eine andere Software-Optimierung über direkte native Verzweigungen passiert wurde. Solche Zugangsweisen können jedoch von verzweigten Prozessen herausgefordert werden. Weil die Verzweigungs-Quelle während einer Programm-Ausführung dynamisch sein kann, kann ein kettenweises (chain-wise) Übergeben (handoff) zwischen Software-Optimierungen nicht machbar sein. Sollte zum Beispiel eine indirekte Verzweigung auftreten, kann das unbestimmte Ziel der Verzweigung es schwierig machen, sicherzustellen, welche Software-Optimierungen zur Zeit, zu der die Optimierung erzeugt ist, abgerufen werden sollte. Folglich kann der Mikroprozessor anhalten (stall), während die Verzweigung- und Software-Optimierung für diese Verzweigung von möglicherweise Tausenden von Kandidaten-Optimierungen bestimmt werden.
  • Demgemäß sind verschiedene Ausführungsformen hierin offenbart, welche ein Holen von Quelle-Information und alternativen Versionen der Quelle-Information betreffen, welche dieselbe beobachtbare Funktionalität (hierin als dieselbe Funktionalität genannt) der Quelle-Information innerhalb einer annehmbaren Toleranz erreichen (z.B. innerhalb einer annehmbaren Toleranz von architektonisch beobachtbarem Effekt). Es wird geschätzt werden, dass virtuell irgendeine geeignete Quelle-Information und irgendeine alternative Version davon eingesetzt werden kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen. In einigen Ausführungsformen kann eine Quelle eine Anweisung umfassen, wie etwa eine Anweisung von einer ISA-Architektur. Zusätzlich zu oder anstatt von Anweisungen, kann die Quelle-Information Quelle-Daten umfassen und die alternative Version kann eine alternative Form oder Version der Quelle-Daten umfassen. Ähnlich wird es geschätzt werden, dass irgendeine geeignete Weise eines Transformierens einer Quelle in eine alternative Version davon (z.B. eine Software-Zugangsweise und/oder eine Hardware-Zugangsweise) ins Auge gefasst werden, innerhalb des Geltungsbereichs der vorliegenden Offenbarung zu sein. Für illustrative Zwecke referenzieren die hierin präsentierten Beschreibungen in Figuren Quelle-Anweisungen und Übersetzungen der Quellen-Anweisungen, als Quelle-Information und alternative Versionen der Quelle-Information, obwohl solche Ausführungsformen nicht begrenzend sind.
  • Ein Beispiel-Verfahren umfasst, wenn es darauf gerichtet ist, eine Anweisung abzurufen, Hashing bzw. Hash-Code-Anwendung einer Adresse für diese Anweisung, so dass bestimmt werden kann, ob da eine alternative Version für diese Anweisung existiert. Das Hashing wird durchgeführt, um zu bestimmen, ob da eine alternative Version der Anweisung existiert, welche dieselbe Funktionalität erreicht, wie etwa eine native Übersetzung (z.B. Übersetzungen zwischen einer Quelle-Anweisungs-Satz-Architektur und einer nativen Mikro-Operation-Satz-Architektur für verschiedene Anweisungen, welche zur Ausführung mittels des Mikroprozessors geholt werden können). Das Beispiel-Verfahren umfasst ferner, wenn Hashing zu einer Bestimmung führt, dass solch eine alternative Version existiert, Abbrechen eines Abrufens der Anweisung und Abrufen und Ausführen der alternativen Version.
  • Die Diskussion hierin wird sich häufig auf „Abrufen“ einer Anweisung beziehen und dann Abbrechen des Abrufs, wenn gewisse Bedingungen existieren. In solchen Ausführungsformen kann „Abrufen“ einer Anweisung ein Holen einer Anweisung umfassen. Wenn solch ein Abbrechen erfolgt, wird ferner der Abrufprozess terminiert. Die Terminierung erfolgt typischerweise vor der Vollendung des Abruf-Prozesses. In einem Szenario kann z.B. ein Abbrechen des Abrufs erfolgen, während die physikalische Adresse für eine Anweisung abgerufen wird. In einem anderen Szenario kann ein Abbrechen des Abrufs erfolgen, nachdem die physikalische Adresse für eine Anweisung abgerufen ist, aber bevor die Anweisung von Speicher abgerufen ist. Ein Abbrechen eines Abrufs vor der Vollendung des Abruf-Prozesses kann Zeit sparen, welche beim Zugreifen und Abrufen der Quelle von Speicher zugebracht wird. Es wird geschätzt werden, dass, wie hierin benutzt, ein Abruf nicht auf Holen-Szenarien begrenzt ist, bei dem das Holen typischerweise vor dem Dekodieren vollendet ist. Zum Beispiel kann eine Anweisung abgerufen werden, aber während eines Dekodierens, vor dem Dekodieren oder bei irgendeinem geeigneten Punkt abgebrochen werden.
  • Ein großer Bereich von Möglichkeiten existiert zum Abbilden und Übersetzen zwischen Quelle-Information und übersetzten Versionen dieser Information. Mittels eines Bestimmens, ob die alternative Version existiert und mittels eines Abbrechens des Abrufens der Anweisung, z.B., einer ISA-Anweisung, kann, wenn die alternative Version existiert, der Mikroprozessor verbesserte Performance relativ zu Mikroprozessoren anbieten, welche Quelle-ISA-Anweisungen dadurch dekodieren, dass sie Dekodier-Operationen vermeiden. Zusätzliche Performance-Steigerung kann in Aufstellungen realisiert werden, wo die alternative Version optimierte Performance mittels Änderungen an den Operationen bereitstellt, welche der alternativen Version erlauben, durch die Ausführung schneller fortzuschreiten als die Quelle-ISA-Anweisung.
  • 1 zeigt schematisch eine Ausführungsform eines Mikroprozessors 100, welcher in Verbindung mit den hierin beschriebenen Systemen und Verfahren eingesetzt werden kann. Mikroprozessor 100 kann Prozessor-Register 109 umfassen. Ferner kann Mikroprozessor 100 eine Speicher-Hierarchie 110 umfassen und/oder mit einer Speicher-Hierarchie 110 kommunizieren, welche einen L1-Prozessor-Zwischenspeicher 110A, einen L2-Prozessor-Zwischenspeicher 110B, einen L3-Prozessor-Zwischenspeicher 110C, Hauptspeicher 110D (z.B. einen oder mehrere DRAM-Chips), sekundären Speicher 110E (z.B. Magnet- und/oder optische Speicher-Einheiten) und/oder tertiären Speicher 110F (z.B. eine Bandfarm) umfasst. Es wird verstanden werden, dass die Beispiel-Speicher/Speicherungs-Komponenten in einer ansteigenden Ordnung von Zugriffszeit und -kapazität aufgelistet sind, obwohl es mögliche Ausnahmen gibt.
  • Eine Speicher-Steuerung 110H kann benutzt werden, um das Protokoll zu handhaben und die Signal-Schnittstelle bereitzustellen, welche von Hauptspeicher 110D erfordert ist und um Speicher-Zugriffe zu planen (scheduled). Speicher-Steuerung 110H kann auf dem Prozessor-Die oder auf einem separaten Die implementiert sein. Es ist zu verstehen, dass die oben bereitgestellte Speicher-Hierarchie nicht begrenzend ist und dass andere Speicher-Hierarchien benutzt werden können, ohne von dem Geltungsbereich dieser Offenbarung abzuweichen.
  • Mikroprozessor 100 umfasst auch eine Pipeline, welche in vereinfachter Form in 1 als Pipeline 102 illustriert ist. Ein in einer Pipeline-Anordnen (pipelining) kann erlauben, dass mehr als eine Anweisung gleichzeitig in verschiedenen Stufen eines Abrufs und einer Ausführung ist. Mit anderen Worten kann ein Satz von Anweisungen durch verschiedene Stufen passiert werden (einschließlich Holen-, Dekodieren-, Ausführung- und Rückschreibe-Stufen, u.a.), welche in Pipeline 102 umfasst sind, während eine andere Anweisung und/oder Daten von Speicher abgerufen wird und mittels Pipeline 102 verarbeitet wird. Somit können Stromabwärts-Stufen in Pipeline 102 benutzt werden, während Stromaufwärts-Stufen darauf warten, dass Speicher Anweisungen und/oder Daten zurückgibt, usw. Diese Zugangsweise kann möglicherweise Anweisung- und Daten-Verarbeitung mittels des Mikroprozessors relativ zu Zugangsweisen beschleunigen, welche Anweisungen und/oder Daten in einer individuellen, seriellen Weise abrufen und ausführen.
  • Wie in 1 gezeigt ist, umfassend Beispiel-Pipeline 102 Holen-Logik 120, einen native-Übersetzung-Puffer 130, Dekodier-Logik 132, Planungs-Logik 134, Ausführungs-Logik 136, mem-Logik 138 und Rückschreibe-Logik 140. Holen-Logik 120 holt eine ausgewählte Anweisung von einem Anweisungs-Zwischenspeicher zur Ausführung. In dem in 1 gezeigten Beispiel umfasst Holen-Logik 120 einen Anweisung-Übersetzung-Lookaside-Puffer 122 zum Übersetzen einer linearen Adresse der ausgewählten Anweisung in eine physikalische Adresse für die Anweisung, welche zur Ausführung zu holen ist. Wie hierin benutzt wird, bezieht sich eine lineare Adresse für eine Anweisung auf eine Adresse, welche mittels einer Seite-Tabelle (page table) in eine physikalische Adresse übersetzt/erneut abgebildet wird, welche mit einer Stelle im Speicher assoziiert ist, wo die Anweisung gespeichert ist. In einigen Ausführungsformen kann die lineare Adresse Ordner-, Tabelle- und/oder Versatz-Einträge umfassen, welche Seite-Ordner, Seite-Tabelle und/oder Seite-Rahmen-Stellen einer Seite-Tabelle identifizieren, wo die physikalische Adresse für die Anweisung aufgefunden werden kann.
  • Anweisung-Übersetzung-Lookaside-Puffer 122 kann virtuell irgendeine geeignete Weise eines Übersetzens von linearen Adressen in physikalische Adressen für diese Anweisungen durchführen. Zum Beispiel kann in einigen Ausführungsformen Anweisung-Übersetzung-Lookaside-Puffer 122 einen Inhalt-adressierbaren-Speicher umfassen, welcher einen Teil einer Seite-Tabelle speichert, welche lineare Adressen für Anweisungen auf physikalische Adressen für diese Anweisungen abbildet.
  • Holen-Logik 120 bestimmt auch, ob eine native Übersetzung für die ausgewählte Anweisung existiert. Wenn eine solche native Übersetzung existiert, bricht das System das Anweisungs-Holen ab und sendet stattdessen eine native Übersetzung zur Ausführung. In der in 1 gezeigten Ausführungsform umfasst Holen-Logik 120 einen Übersetzung-Adresse-Zwischenspeicher 124 zum Speichern der Adressen von nativen Übersetzungen.
  • Fast jede geeignete Daten-Speicher-Architektur und -Logik kann für Übersetzung-Adresse-Zwischenspeicher 124 benutzt werden. Zum Beispiel zeigt 2 schematisch eine Ausführungsform eines 4-Wege (4-way)-assoziierten-Zwischenspeichers 200, welcher als ein Übersetzung-Adresse-Zwischenspeicher eingesetzt wird. In der in 2 gezeigten Ausführungsform können 1024 Übersetzung-Adresse-Einträge in irgendeinem von vier Wegen gespeichert werden, abhängig von dem ausgewählten Adress-Schema, wobei jeder Weg 256 Datenstellen umfasst. Es wird jedoch geschätzt werden, dass einige Ausführungsformen weniger Datenwege und/oder Datenstellen haben können, während andere Ausführungsformen mehr Datenwege und/oder Datenstellen umfassen können, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Fortfahrend mit 1 umfasst Holen-Logik 120 einen physikalische-Adresse-Multiplexer 126, welcher physikalische Adressen multiplexed, welche von dem Anweisung-Übersetzung-Lookaside-Puffer 122 und Übersetzung-Adresse-Zwischenspeicher 124 empfangen sind, und verteilt sie auf einen Anweisungs-Zwischenspeicher 128. Daraufhin bzw. wiederum ruft Anweisungs-Zwischenspeicher 128 Anweisungen und native Übersetzungen ab, welche zur Ausführung mittels des Mikroprozessors 100 mit Referenz auf physikalische Adressen für diese Anweisungen und die nativen Übersetzungen gespeichert sind. Wenn Holen-Logik 120 bestimmt, dass eine native Übersetzung für eine ausgewählte Anweisung existiert, wird die native Übersetzung von dem Anweisungs-Zwischenspeicher 128 abgerufen und kann an einen optionalen native-Übersetzung-Puffer 130 in Vorbereitung für eventuelle bzw. schließliche Verteilung an Planen-Logik 134 weitergeleitet werden. Wenn Holen-Logik 120 bestimmt, dass die native Übersetzung für die ausgewählte Anweisung nicht existiert, wird alternativ die ausgewählte Anweisung von dem Anweisungs-Zwischenspeicher 128 abgerufen und an die Dekodieren-Logik 132 weitergeleitet. Dekodieren-Logik 132 dekodiert die ausgewählte Anweisung, z.B. mittels eines Parsens bzw. textuellen Analysierens von Opcodes, Operanden und Adressierungs-Moden, und erzeugt einen dekodierten Satz von einer oder mehreren nativen Anwendungen oder Mikro-Operationen in Vorbereitung zur Verteilung an Planen-Logik 134. Planen-Logik 134 plant die nativen Übersetzungen und die dekodierten Anweisungen zur Ausführung mittels der Ausführungs-Logik 136.
  • Die in 1 gezeigte Ausführungsform zeigt den Anweisungs-Zwischenspeicher 128 als einen pyhsikalisch-indizierter-physikalischgekennzeichneter-(PIPT)-Anweisungs-Zwischenspeicher umfassend, so dass eine Adresse für eine native Übersetzung von Übersetzung-Adresse-Zwischenspeicher 124 gleichzeitig mit dem Abruf der Quelle-Adresse von dem Anweisung-Übersetzung-Lookaside-Puffer 122 abgerufen werden kann. Es wird jedoch verstanden werden, dass Ausführungsformen gemäß der vorliegenden Offenbarung mit irgendeinem geeigneten Anweisungs-Zwischenspeicher 128 eingesetzt werden können. Zum Beispiel kann in einigen Ausführungsformen Anweisungs-Zwischenspeicher 128 einen Linear-indizierten-pyhsikalischgekennzeichneten-LIPT-Anweisungs-Zwischenspeicher umfassen. In solchen Ausführungsformen kann Holen-Logik gleichzeitig eine Adresse von einer Quelle von einem Anweisung-Übersetzung-Lookaside-Puffer, eine Adresse für eine native Übersetzung von einem Übersetzung-Adresse-Zwischenspeicher, und die Quelle von dem LIPT-Anweisungs-Zwischenspeicher abrufen. Wenn eine native Übersetzung verfügbar ist, kann die Anweisung verworfen werden und die native Übersetzung kann von dem LIPT-Zwischenspeicher zur Ausführung basierend auf der Adresse für die native Übersetzung abgerufen werden. Wenn es keine native Übersetzungs-Version verfügbar gibt, kann die Anweisung dekodiert werden und dann ausgeführt werden.
  • Pipeline 102 kann auch mem-Logik 138 zum Durchführen von Lade- und/oder Speicher-Operationen umfassen und Rückschreibe-Logik 140 zum Schreiben der Ergebnisse von Operationen an eine geeignete Stelle, wie etwa ein Register 109. Auf ein Zurückschreiben hin tritt der Mikroprozessor in einen Zustand ein, welcher mittels der Anweisung oder der Anweisungen modifiziert ist, so dass das Ergebnis der Operationen, welche zu dem begangenen Zustand führen, nicht ungeschehen sein können (undone).
  • Es sollte verstanden werden, dass die in Pipeline 102 oben gezeigten Stufen illustrativ für eine typische RISC-Implementierung sind und nicht als begrenzend gemeint sind. Zum Beispiel können in einigen Ausführungsformen VLIW-Techniken stromaufwärts von gewissen Pipeline-Stufen implementiert sein. In einigen anderen Ausführungsformen kann die Planen-Logik in der Holen-Logik und/oder der Dekodieren-Logik des Mikroprozessors umfasst sein. Im Allgemeinen kann ein Mikroprozessor Holen-, Dekodieren-, und Ausführungs-Logik umfassen, wobei eine mem- und eine Rückschreibe-Funktionalität mittels der Ausführungs-Logik ausgeführt wird. Die vorliegende Offenbarung ist gleich anwendbar für diese und andere Mikroprozessor-Implementierungen.
  • In den beschriebenen Beispielen können Anweisungen jeweils eine zu einer Zeit geholt und ausgeführt werden, oder mehrere als eine zur einer Zeit, was möglicherweise mehrere Taktzyklen erfordert. Während dieser Zeit können bedeutende Teile des Daten-Pfades unbenutzt sein. Zusätzlich oder anstatt eines Einzel-Anweisungs-Holens, können Zuvor-Holen (prefetch)-Verfahren benutzt werden, um Performance zu verbessern und um Latenz-Flaschenhälse zu vermeiden, welche mit Lese- und Speicher-Operationen assoziiert sind (d.h. das Lesen von Anweisungen und das Laden solcher Anweisungen in Prozessor-Register und/oder Ausführungs-Queues). Demgemäß wird es geschätzt werden, dass virtuell irgendeine geeignete Weise eines Holens, Planens und eines Absetzens (dispatching) von Anweisungen benutzt werden kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • 3A-C zeigen schematisch eine Ausführungsform eines Verfahrens 300 zum Holen einer ausgewählten Anweisung von einem Anweisungs-Zwischenspeicher und zum Bestimmen, ob eine native Übersetzung für die ausgewählte Anweisung in dem Anweisungs-Zwischenspeicher gespeichert ist. Während Verfahren mit Sicht auf Bestimmen beschrieben ist, ob eine native Übersetzung für eine Anweisung verfügbar ist, wird es verstanden werden, dass dieses Szenario bloß eine Illustration eines Holens einer Anweisung und eines Bestimmens ist, ob eine alternative Version existiert, welche dieselbe Funktionalität wie die Anweisung erreicht, und das Verfahren 300 nicht auf das Verfahren oder die Einstellung, welche unten beschrieben ist, begrenzt ist. Somit wird geschätzt werden, dass die in Verfahren 300 beschriebenen Prozesse für illustrative Zwecke angeordnet und beschrieben sind und nicht beabsichtigt sind, limitierend bzw. begrenzend zu sein. In einigen Ausführungsformen können die hierin beschriebenen Verfahren zusätzliche oder alternative Prozesse umfassen, während in einigen Ausführungsformen die hierin beschriebenen Verfahren einige Prozesse umfassen können, welche umgeordnet oder ausgelassen werden können, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen. Ferner wird es geschätzt werden, dass die hierin beschriebenen Verfahren unter Benutzung irgendeiner geeigneten Hardware durchgeführt werden können, einschließlich der hierin beschriebenen Hardware.
  • Mit Hinwendung auf 3A umfasst Verfahren 300 bei 302, dass das Verfahren darauf gerichtet ist, eine ausgewählte Anweisung von einem Anweisungs-Zwischenspeicher zu holen. In einigen Ausführungsformen kann der Holen-Prozess darauf gerichtet sein, eine Anweisung mit Referenz bzw. Bezugnahme auf eine lineare Adresse für die ausgewählte Anweisung abzurufen. Zum Beispiel kann eine ausgewählte Anweisung von dem Anweisungs-Zwischenspeicher in Antwort auf eine Verzweigung zu einem Ziel-Anweisungs-Zeiger geholt werden, wie etwa eine Verzweigung, welche von einem Verzweigungs-Prediktor oder von einem Verzweigungs-Validierungs-Punkt in einer Mikroprozessor-Pipeline herrührt. Es wird verstanden werden, dass Prozess 302 Nachschauen einer physikalischen Adresse für die Auswahl in einem Anweisung-Übersetzung-Lookaside-Puffer umfassen kann, wie in größerem Detail unten beschrieben ist.
  • In einigen Ausführungsformen kann ein Holen der ausgewählten Anweisung ein Holen einer physikalischen Adresse für die ausgewählte Anweisung von einem Anweisung-Übersetzung-Lookaside-Puffer umfassen. In solchen Ausführungsformen kann eine lineare Adresse für die ausgewählte Anweisung auf ein Richten auf den Ziel-Anweisungs-Zeiger hin empfangen werden. Daraufhin kann die lineare Adresse in eine physikalische Adresse für die ausgewählte Anweisung mittels des Anweisungs-Übersetzung-Lookaside-Puffers dadurch übersetzt werden, dass mit Bezugnahme auf die lineare Adresse physikalische Adressen abgesucht werden, welche in dem Anweisung-Übersetzung-Lookaside-Puffer gespeichert sind. Wenn die Suche nicht auf die physikalische Adresse für die ausgewählte Anweisung trifft, kann die physikalische Adresse über einen Seiten-Gang (page walk) oder über ein Nachschauen in einem höheres-Niveau-Übersetzung-Lookaside-Puffers bestimmt werden. Unabhängig davon, wie die physikalische Adresse bestimmt ist, wird die physikalische Adresse, sobald sie für die ausgewählte Anweisung bestimmt ist, an einen Anweisungs-Zwischenspeicher bereitgestellt, so dass die ausgewählte Anweisung erhalten werden kann.
  • Bei 304 weist das Verfahren 300 ein Hashing der linearen Adresse für die ausgewählte Anweisung auf, um einen Hash-Index von der linearen Adresse zu erzeugen, während die physikalische Adresse für die ausgewählte Anweisung erhalten wird. Der Hash-Index kann dann benutzt werden, wenn bestimmt wird, ob eine native Übersetzung für die ausgewählte Anweisung existiert, wie in größerem Detail unten beschrieben ist.
  • Zum Beispiel kann ein Richten (direction) auf den Ziel-Anweisungs-Zeiger dazu führen, dass die lineare Adresse gleichzeitig (innerhalb einer geeigneten Toleranz) mit Verteilung der linearen Adresse an einen Anweisung-Übersetzung-Lookaside-Puffer gehashed wird. Es wird jedoch geschätzt werden, dass irgendeine geeignete Weise eines Durchführens des Hash bei irgendeiner geeigneten Position innerhalb des Prozess-Flusses eingesetzt werden kann, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • In einigen Ausführungsformen kann die lineare Adresse mittels einer geeigneten Hardware-Struktur, welche in dem Mikroprozessor umfasst ist, gehashed werden. Zum Beispiel kann die lineare Adresse mittels der Holen-Logik und/oder dem nativen-Übersetzung-Adresse-Zwischenspeicher gehashed werden, obwohl virtuell irgendeine geeignete Hardware-Struktur benutzt werden kann, um die lineare Adresse zu hashen, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Eine große Verschiedenheit von Hash-Techniken kann eingesetzt werden. Zum Beispiel kann in einigen Ausführungsformen der Hash-Index unter Benutzung einer XOR-Hash-Funktion erzeugt werden. Ein Hash-Index kann auch dadurch erzeugt werden, dass eine Mehrzahl von Teilen der linearen Adresse gehashed wird. In einigen anderen Ausführungsformen kann ein Hash-Index dadurch erzeugt werden, dass ein einzelner Teil der linearen Adresse benutzt wird. 4 zeigt ein schematisch ein Verfahren eines Hashens einer 48-Bit-linearen-Adresse für eine Anweisung, um einen 8-Bit-Hash-Index unter Benutzung einer XOR-Hash-Funktion zu erzeugen. In dem in 4 gezeigten Beispiel wird das Ergebnis eines XOR'ings von Bits 0-7 mit Bits 8-15 geXOR't mit Bits 16-23, um den 8-Bit-Hash-Index zu erzeugen.
  • In einigen Ausführungsformen kann ein Disambiguierungs-Kennzeichen (disambiguation tag) erzeugt werden, wenn die lineare Adresse gehashed wird. Das Disambiguierungs-Kennzeichen kann benutzt werden, um verschiedene Übersetzung-Adresse-Einträge für alternative Versionen (z.B. Adress-Einträge für native Übersetzungen von Anweisungen) von einander zu diskriminieren, wenn mehr als ein Übersetzung-Adresse-Eintrag in dem Übersetzung-Adresse-Zwischenspeicher denselben Index-Wert hat. Somit kann in einigen Ausführungsformen das Disambiguierungs-Kennzeichen benutzt werden, um eine Mehrzahl von Übersetzung-Adresse-Einträgen zu disambiguieren, welche identische Übersetzung-Adresse-Indizes haben, welche in dem Übersetzung-Adresse-Zwischenspeicher gespeichert sind. Zum Beispiel zeigt 4 schematisch ein Verfahren eines Erzeugens eines 40-Bit-Disambiguierungs-Kennzeichens für die 48-Bit-lineare-Adresse von Teilen der linearen Adresse, welche nicht in den 8-Bit-Hash-Index gebildet sind. Somit können Bits, welche nicht benutzt sind, um das Hash-Kennzeichen zu erzeugen, benutzt werden, um in einigen Ausführungsformen das Disambiguierungs-Kennzeichen zu erzeugen. In dem in 4 gezeigten Beispiel werden Bits 8-48 benutzt, um das Disambiguierungs-Kennzeichen zu bilden. Es kann jedoch irgendeine geeignete Weise eines Erzeugens des Disambiguierungs-Kennzeichens eingesetzt werden, ohne von dem Geltungsbereich der vorliegenden Offenbarung abzuweichen.
  • Während die obige Diskussion ein Hashing einer linearen Adresse betrifft, um einen oder mehrere Übersetzung-Adresse-Einträge von einem Übersetzung-Adresse-Zwischenspeicher zu erhalten, so dass die Übersetzung-Adresse-Einträge gemäß den linearen Adresse indiziert werden, wird es geschätzt werden, dass der Übersetzung-Adresse-Zwischenspeicher gemäß irgendeiner geeigneten Adresse indiziert werden kann. Zum Beispiel kann in einigen Ausführungsformen ein geeignet konfigurierter Übersetzung-Adresse-Zwischenspeicher gemäß den physikalischen Adressen indiziert werden. Indizieren eines Übersetzung-Adresse-Zwischenspeichers gemäß den physikalischen Adressen kann Raum innerhalb des Übersetzung-Adresse-Zwischenspeichers sparen, wenn zwei Prozesse auf eine gemeinsame Bibliothek bei verschiedenen linearen Adressen abbilden. In einigen solcher Szenarien kann nur eine Version der gemeinsamen Bibliothek physikalisch in Speicher geladen sein. Mittels eines Indizierens gemäß einer physikalischen Adresse kann ein gemeinsames Abbilden (shared mapping) dazu führen, dass ein einzelner Eintrag erhalten wird, während ein nicht-gemeinsames Abbilden dazu führen kann, dass verschiedene Einträge erhalten werden.
  • Hinwendend zu 3B umfasst ein Beispiel-Verfahren 300 bei 306 ein Bestimmen, ob eine gültige native Übersetzung für die ausgewählte-Anweisung, welche geholt wird, existiert. In einigen Ausführungsformen erfolgt eine Bestimmung, ob eine gültige native Übersetzung existiert, gleichzeitig (innerhalb einer geeigneten Toleranz) mit einer Bestimmung der physikalischen Adresse für die ausgewählte Anweisung, mit einem Abruf der Adresse von einem Anweisung-Übersetzung-Lookaside-Puffer. In solchen Ausführungsformen kann, wenn bestimmt ist, dass eine gültige native Übersetzung nicht existiert, ein gleichzeitiges bzw. gemeinsames Verarbeiten bei einer oder mehreren dieser Stufen erlauben, dass die physikalische Adresse geholt wird, um ohne Nachteil fortzufahren. Es wird jedoch verstanden, dass die Bestimmung in einigen Ausführungen nicht gleichzeitig zu sein braucht.
  • Unabhängig davon, wann die Gültigkeitsbestimmung durchgeführt wird, kann, wenn bestimmt ist, dass eine gültige native Übersetzung existiert, ein Holen der Quelle-Anweisung dadurch abgebrochen werden, dass ein Abruf der physikalischen Adresse für die Quelle-Anweisung z.B. abgebrochen wird. Wiederum kann eine Verarbeitungs-Effizienz dadurch erhöht werden, dass Kodierschritte vermieden werden und dadurch, dass eine Benutzung der alternativen Version erlaubt ist.
  • In der in 3B gezeigten Ausführungsform umfasst eine Bestimmung, ob eine gültige native Übersetzung existiert, bei 308, Erhalten von einem oder mehreren Übersetzung-Adresse-Einträgen für die gehashte Adresse und, bei 310, Vergleichen eines Disambiguierungs-Kennzeichens, welches während des Hashing-Prozesses erzeugt ist, mit einem oder mehreren Übersetzung-Adresse-Disambiguierungs-Kennzeichen, welche unter Benutzung jeder der erhaltenen Übersetzung-Adressen erhalten sind.
  • Ein Übersetzung-Adresse-Eintrag speichert eine physikalische Adresse, wo eine native Übersetzung gespeichert ist. Übersetzung-Adresse-Einträge können gemäß einem Übersetzung-Adresse-Index, welcher damit assoziiert ist, nachgeschaut werden. Zum Beispiel kann ein Hash-Index, welcher erzeugt ist, wenn eine Adresse gehashed wird, benutzt werden, um einen bestimmten Übersetzung-Adresse-Index in einem Übersetzung-Adresse-Zwischenspeicher nachzuschauen.
  • In einigen Ausführungsformen können mehr als ein Übersetzung-Adresse-Eintrag über ein Nachschauen eines bestimmten Übersetzung-Adresse-Index erhalten werden. Zum Beispiel kann eine gehashte Adresse, welche benutzt ist, einen Übersetzung-Adresse-Index für einen 4-Wegassoziativen-Zwischenspeicher nachzuschauen, zu dem Abruf von bis zu vier Übersetzung-Adresse-Einträgen führen. In solchen Ausführungsformen hat jeder Übersetzung-Adresse-Eintrag ein entsprechendes bzw. jeweiliges Übersetzung-Adresse-Disambiguierungs-Kennzeichen, welches diesen Eintrag von anderen Einträgen disambiguiert, welche identische Übersetzung-Adresse-Indizes haben. Ein Vergleichen des Disambiguierungs-Kennzeichens, welches mittels eines Hashens der Adresse erzeugt ist, mit Disambiguierungs-Kennzeichen, welche mit jeweiligen Übersetzung-Adresse-Einträgen abgerufen sind, kann bestimmen, ob irgendeiner der Einträge, welche erhalten sind, eine physikalische Adresse für eine gültige native Übersetzung repräsentiert. In einigen Ausführungsformen kann ein Vergleich der Disambiguierungs-Kennzeichen einen Vergleich eines gültigen Bits umfassen. In solchen Ausführungsformen kann eine Übereinstimmung zwischen verglichenen Kennzeichen nur gefunden werden, wenn das gültige Bit auf einen vorgewählten Wert gesetzt ist, wie etwa einen Wert von 1.
  • In einigen Ausführungsformen kann ein Übersetzung-Adresse-Eintrag Bits umfassen, welche repräsentativ für die physikalische Adresse für eine native Übersetzung sind und Bits, welche für einen angenommenen Kontext für die native Übersetzung repräsentativ sind. Zusätzlich kann in einigen Ausführungsformen ein Übersetzung-Adresse-Eintrag ein oder mehrere andere Bits umfassen, welche sich auf die Übersetzung und/oder Aspekte der Übersetzung beziehen. 5 zeigt schematisch eine Ausführungsform eines Übersetzung-Adresse-Eintrags, welcher physikalische-Adresse-Bits umfasst, angenommer-Kontext-Bits, und ein Übersetzung-bezogenes-Bit.
  • Fortfahrend mit 3B weist Verfahren 300 bei 312 Bestimmen auf, ob das Disambiguierungs-Kennzeichen, welches erzeugt ist, als die Adresse gehashed wurde, mit irgendeinem der Disambiguierungs-Kennzeichen übereinstimmt, welche mit den Übersetzung-Adresse-Einträgen erhalten sind. Wenn die Disambiguierungs-Kennzeichen nicht übereinstimmen bzw. stimmen, rückt das Verfahren zu 330 vor, gezeigt in 3C. Wenn ein Disambiguierungs-Kennzeichen, welches von dem Übersetzung-Adresse-Zwischenspeicher erhalten ist, mit dem Disambiguierungs-Kennzeichen übereinstimmt, welches mittels des Hashing erzeugt ist, zeigt die Übereinstimmung an, dass ein gültiges Disambiguierungs-Kennzeichen erhalten wurde. In einigen Ausführungsformen kann die Existenz eines gültigen Disambiguierungs-Kennzeichen zu einer Bestimmung führen, dass eine gültige Übersetzung existiert. In einigen Ausführungsformen braucht jedoch die Existenz eines gültigen Disambiguierungs-Kennzeichens allein nicht den Schluss unterstützen, dass der Eintrag, welcher mit diesem Kennzeichen assoziiert ist, eine gültige native Übersetzung umfasst. Somit kann Verfahren 300 bei 314 verzweigen, was im größeren Detail diskutiert ist, oder alternativ zu 318 fortfahren, was in 3C gezeigt ist.
  • Wie oben eingeführt ist, kann in einigen Ausführungsformen ein Übersetzens-Adresse-Eintrag einen angenommenen Kontext für die native Übersetzung umfassen. Wie hierin benutzt ist, beschreibt ein momentaner Kontext einen momentanen Arbeitszustand des Mikroprozessors und ein angenommener Kontext beschreibt einen Zustand des Mikroprozessors, für welchen die native Übersetzung gültig ist. Somit braucht in einigen Ausführungsformen, selbst wenn ein gültiges Disambiguierungs-Kennzeichen für einen Eintrag identifiziert ist, der Eintrag, welcher mit diesem Disambiguierungs-Kennzeichen assoziiert ist, nicht eine gültige native Übersetzung für den momentanen Kontext umfassen. In einigen Beispielen kann ein Ausstellen (issuing) einer nativen Übersetzung, für die der momentane Kontext und der angenommene Kontext nicht übereinstimmen, einen Ausführungsfehler oder einen Ausführungsschaden verursachen.
  • Es wird geschätzt werden, dass der Kontext in irgendeinem geeigneten Teil des Übersetzung-Adresse-Eintrags und/oder der Übersetzung-Adresse umfasst sein kann. In dem in 5 gezeigten Beispiel sind die Kontext-Bits illustriert, in dem Übersetzung-Adresse-Eintrag umfasst zu sein. In solchen Ausführungsformen kann der Kontext optional verglichen werden, wie bei 316 von 3C gezeigt ist. Somit kann anstatt eines Voranrückens zu 318 das Verfahren 300 optional bei 314 verzweigen, wobei ein momentaner Kontext für den Mikroprozessor mit einem angenommenen Kontext verglichen ist, welcher in dem Übersetzung-Adresse-Eintrag gespeichert ist. Mit Hinwendung nun zu 3C kann in solchen Ausführungsformen Verfahren 300 aufweisen, bei 316, Bestimmen, ob der momentane Kontext mit dem angenommenen Kontext übereinstimmt. In einigen Ausführungsformen kann der momentane Kontext mit dem angenommenen Kontext verglichen werden, um eine Übereinstimmung zu bestimmen. In einem Beispiel-Szenario kann eine Übereinstimmung gefunden werden, wenn basierend auf einem 1-zu-1-Vergleich der angenommene und der momentane Kontext übereinstimmen. Wenn die Kontexte übereinstimmen, fährt das Verfahren 300 zu 318 fort, wo Verfahren 300 eine Bestimmung macht, dass eine gültige native Übersetzung existiert. Wenn die Kontexte nicht übereinstimmen, rückt das Verfahren 300 zu 330 fort, wo das Verfahren 300 eine Bestimmung macht, dass eine gültige native Übersetzung nicht existiert.
  • Zusätzlich oder alternativ können in einigen Ausführungsformen Bits für den angenommenen Kontext in der Übersetzung-Adresse umfasst sein, wie etwa das Disambiguierungs-Kennzeichen und/oder der Hash. In solchen Ausführungsformen kann ein Einbeziehen des angenommenen Kontexts in einen oder mehrere Teile der Adresse eine gleichzeitige Speicherung von zwei oder mehr Einträgen mit verschiedenen Kontexten und andererseits identischen linearen Adressen innerhalb des Übersetzungs-Adress-Zwischenspeichers erlauben. Es wird geschätzt werden, dass die Implementierung von solchen Ausführungsformen von anwendungsspezifischen Überlegungen abhängen kann. Zum Beispiel kann in einigen Ausführungsformen, wo Satz-Assoziativität (set associativity) niedrig ist, wie etwa in einem Szenario, wo die Adressen direkt abgebildet sind, der angenommene Kontext in dem Hash umfasst sein, und ein Konflikt-Verfehlen vermeiden. Zum Beispiel kann der angenommene Kontext geXOR't in den Hash während eines Hashings werden. In einigen anderen Ausführungsformen, wie etwa in denjenigen, wo eine Zykluszeit zum Hashen von zusätzlichen Bits eine Verarbeitungszeit mehr affektiert, als eine Zeit zum Verarbeiten eines vergleichsweise breiteren bzw. weiteren Disambiguierungs-Kennzeichens, kann der angenommene Kontext zu dem Disambiguierungs-Kennzeichen hinzugefügt werden, um potentielle Verarbeitungs-Verzögerungen zu vermeiden. Als ein Beispiel kann der angenommene Kontext an das Disambiguierungs-Kennzeichen angehängt werden. In noch anderen Ausführungsformen kann der angenommene Kontext in dem Hash und in dem Disambiguierungs-Kennzeichen umfasst sein.
  • Sobald bestimmt ist, dass eine gültige native Übersetzung existiert, weist Verfahren 300, bei 320, Abbrechen des Holens der Anweisung auf. Wenn Abbrechen erfolgt, wird der Holen-Prozess terminiert. Während die Terminierung nach Holen der Anweisung erfolgen kann, kann in einigen Ausführungsformen die Terminierung vor der Vollendung des Holen-Prozesses erfolgen. Zum Beispiel kann in Ausführungsformen, wo ein Holen der Anweisung ein Abrufen der physikalischen Adresse für eine Anweisung von einem Anweisung-Übersetzung-Lookaside-Puffer umfasst, ein Abbrechen des Holens der Anweisung ein Abbrechen eines Abrufens der physikalischen Adresse von dem Anweisung-Übersetzung-Lookaside-Puffers umfassen.
  • Bei 322 umfasst das Verfahren 300 ein Senden der physikalischen Adresse für die native Übersetzung zu dem Anweisungs-Zwischenspeicher, und bei 324, Empfangen der ausgewählten nativen Übersetzung von Anweisungs-Zwischenspeicher. In einigen Ausführungsformen kann die ausgewählte native Übersetzung, sobald sie von dem Anweisungs-Zwischenspeicher empfangen ist, zu einem nativen Übersetzungs-Puffer in Vorbereitung für schließliche Verteilung an Planungs-Logik weitergeleitet werden, wo sie zur Ausführung zu planen ist.
  • Alternativ weist in der in 3C gezeigten Ausführungsform, wenn eine native Übersetzung nicht existiert, das Verfahren 300, bei 332, auf, zu erlauben, dass das Holen von dem Anweisungs-Zwischenspeicher vollendet. Zum Beispiel kann in Ausführungsformen, wo Holen der Anweisung ein Abrufen der physikalischen Adresse von einem Anweisung-Übersetzung-Lookaside-Puffer umfasst, Verfahren 300 umfassen, bei 334, nach Empfangen der physikalischen Adresse für die Anweisung von dem Anweisung-Übersetzung-Lookaside-Puffer, Senden der physikalischen Adresse für die Anweisung an den Anweisungs-Zwischenspeicher, so dass die Anweisung von dem Anweisungs-Zwischenspeicher bei 336 erhalten werden kann.
  • Folglich können die hierin beschriebenen Verfahren verbessertes Verarbeiten relativ zu Verarbeitung basierend auf dem Quelle-Material allein anbieten, indem die Existenz von alternativen Versionen für das Quelle-Material bestimmt wird (in den oben beschriebenen Beispielen, native Übersetzen, welche dieselbe Funktionalität wie die Quelle-Anweisungen bereitstellen), während das Quelle-Material geholt wird. Ferner können, indem Hardware-Strukturen benutzt werden, um die gleichzeitige Bestimmung durchzuführen, die hierin beschriebenen Verfahren vergleichsweise effizienter relativ zu Software-Optimierung-basierten Schemata sein, insbesondere in verzweigten Verarbeitungs-Szenarien.
  • Ausführungsformen der Offenbarung umfassen die folgenden Konzepte:
  • Konzept 1. Mikroprozessor, aufweisend Holen-Logik, welche operativ ist, um: eine Anweisung zu holen; eine Adresse für die Anweisung zu hashen, um zu bestimmen, ob eine alternative Version der Anweisung existiert, welche dieselbe Funktionalität wie die Anweisung erreicht; und, wenn das Hashing zu einer Bestimmung führt, dass solch eine alternative Version existiert, das Holen abzubrechen und die alternative Version abzurufen und auszuführen.
  • Konzept 2. Mikroprozessor von Konzept 1, wobei die Holen-Logik ferner operativ ist, die Adresse zu hashen, während die Anweisung geholt wird.
  • Konzept 3. Mikroprozessor von Konzept 2, wobei die Holen-Logik ferner operativ ist, einen Hash-Index über einen Hash von einem oder mehreren Teilen einer linearen Adresse für die Anweisung und ein Disambiguierungs-Kennzeichen von anderen Teilen der linearen Adresse für die Anweisung zu erzeugen.
  • Konzept 4. Mikroprozessor von Konzept 1, wobei die Holen-Logik ferner operativ ist, um: zu bestimmen, ob die alternative Version existiert, indem ein Übersetzung-Adresse-Index in einem Übersetzung-Adresse-Zwischenspeicher des Mikroprozessors gemäß einem Hash-Index referenziert wird, welcher von dem Hashing erzeugt wird; und, wenn die alternative Version existiert, eine physikalische Adresse für die alternative Version von dem Übersetzung-Adresse-Zwischenspeicher abzurufen.
  • Konzept 5. Mikroprozessor gemäß Konzept 4, wobei die Holen-Logik ferner operativ ist, um: einen oder mehrere Übersetzung-Adresse-Einträge, welche in dem Übersetzung-Adresse-Zwischenspeicher gespeichert sind, gemäß dem Übersetzung-Adresse-Index zu erhalten; ein Disambiguierungs-Kennzeichen, welches von dem Hashing erzeugt ist, mit einem Disambiguierungs-Kennzeichen, welches mit jedem des einen oder der mehreren Übersetzung-Adresse-Einträge assoziiert ist, welche erhalten sind, zu vergleichen; und, wenn das Disambiguierungs-Kennzeichen, welches aus dem Hashing erzeugt ist, mit einem Disambiguierungs-Kennzeichen übereinstimmt, welches von dem Übersetzung-Adresse-Zwischenspeicher erhalten ist, zu bestimmen, dass die alternative Version existiert.
  • Konzept 6. Mikroprozessor von Konzept 4, wobei die Holen-Logik ferner operativ ist, um: einen momentanen Kontext für den Mikroprozessor mit einem angenommenen Kontext zu vergleichen, wobei der momentane Kontext einen momentanen Arbeitszustand des Mikroprozessors beschreibt, wobei der angenommene Kontext einen Zustand des Mikroprozessors beschreibt, für welchen die alternative Version gültig ist, zu vergleichen; und, wenn der momentane Kontext mit dem angenommenen Kontext übereinstimmt, zu bestimmen, dass die alternative Version existiert, wobei der angenommene Kontext in dem Hash-Index und/oder dem Disambiguierungs-Kennzeichen und/oder in einem oder mehreren Übersetzung-Adresse-Einträgen umfasst ist, welche mit dem Hash-Index und dem Disambiguierungs-Kennzeichen assoziiert sind.
  • Konzept 7. Mikroprozessor von Konzept 4, ferner aufweisend Holen-Logik, welche operativ ist, um: die physikalische Adresse für die alternative Version an einen Anweisungs-Zwischenspeicher zu senden, so dass die alternative Version von dem Anweisungs-Zwischenspeicher erhalten werden kann; und die alternative Version, welche von dem Anweisungs-Zwischenspeicher erhalten ist, an Planungs-Logik zum Planen der alternativen Version zur Ausführung zu senden.
  • Konzept 8. Mikroprozessor von Konzept 1, ferner aufweisend einen Übersetzung-Adresse-Zwischenspeicher, welcher konfiguriert ist, für jede alternative Version, welche innerhalb des Übersetzung-Adresse-Zwischenspeichers gespeichert ist, einen Übersetzung-Adresse-Eintrag zu speichern, welcher eine physikalische Adresse für die alternative Version und einen angenommenen Kontext zum Beschreiben eines Zustandes des Mikroprozessors aufweist, für den die alternative Version gültig ist.
  • Konzept 9. Mikroprozessor von Konzept 1, ferner aufweisend einen Anweisungs-Zwischenspeicher, welcher ausgewählt ist von der Gruppe, welche aus einem linearen-indizierten-physikalisch-gekennzeichneten-Anweisung-Zwischenspeicher und einem physikalisch-indizierten-physikalischgekennzeichneten-Anweisungs-Speicher besteht.
  • Konzept 10. Mikroprozessor von Konzept 1, wobei die Holen-Logik ferner operativ ist, eine physikalische Adresse für die Anweisung von einem Anweisung-Übersetzung-Lookaside-Puffer mit Bezugnahme auf eine lineare Adresse für die Anweisung abzurufen.
  • Konzept 11. Mikroprozessor von Konzept 10, wobei die Holen-Logik ferner operativ ist, um: wenn die alternative Version nicht existiert, die physikalische Adresse für die Anweisung an einen Anweisungs-Zwischenspeicher zu senden, so dass die Anweisung von dem Anweisungs-Zwischenspeicher erhalten werden kann; die Anweisung an Dekodier-Logik zum Erzeugen einer dekodierten Anweisung zu senden; und die dekodierte Anweisung an Planungs-Logik zur Planung der dekodierten Anweisung zur Ausführung zu senden.
  • Konzept 12. Mikroprozessor, aufweisend: einen Anweisungs-Zwischenspeicher zum Speichern von einer oder mehreren Anweisungen zur Ausführung mittels des Mikroprozessors; Planungs-Logik zum Planen einer Ausführung der einen oder der mehreren Anweisungen; einen Übersetzung-Adresse-Zwischenspeicher zum Speichern von Adressen für alternative Versionen der einen oder der mehreren Anweisungen, wobei die alternativen Versionen dieselbe Funktionalität wie die eine oder die mehreren Anweisungen haben; und Holen-Logik, welche operativ ist, eine ausgewählte Anweisung von dem Anweisungs-Zwischenspeicher zu holen, zu bestimmen, ob eine Adresse für eine bestimmte alternative Version für die ausgewählte Anweisung in dem Übersetzung-Adresse-Zwischenspeicher existiert, und, wenn die Adresse für die bestimmte alternative Version für die ausgewählte Anweisung in dem Übersetzung-Adresse-Zwischenspeicher existiert, ein Holen der ausgewählten Anweisung abzubrechen, die bestimmte alternative Version von dem Anweisungs-Zwischenspeicher basierend auf der Adresse für die bestimmte alternative Version zu erhalten, und die bestimmte alternative Version an die Planungs-Logik zu senden.
  • Konzept 13. Mikroprozessor von Konzept 12, wobei die Holen-Logik aufweist: einen Anweisung-Übersetzung-Lookaside-Puffer zum Übersetzen einer physikalischen Adresse für die ausgewählte Anweisung, welche in dem Anweisungs-Zwischenspeicher gespeichert ist, gemäß einer linearen Adresse für diese Anweisung; und den Übersetzung-Adresse-Zwischenspeicher.
  • Konzept 14. Mikroprozessor von Konzept 12, ferner aufweisend Dekodier-Logik zum Senden einer dekodierten Version der ausgewählten Anweisung an die Planungs-Logik, wenn die bestimmte alternative Version der ausgewählten Anweisung nicht existiert.
  • Konzept 15. Mikroprozessor von Konzept 12, wobei die ausgewählte Anweisung eine lineare Adresse hat, welche 48 Bits aufweist, wobei die Holen-Logik konfiguriert ist, die lineare Adresse in einen Index zu hashen, welcher 8 Bit aufweist, und ein Disambiguierungs-Kennzeichen, welches 40 Bit aufweist.
  • Konzept 16. Mikroprozessor von Konzept 12, wobei der Übersetzung-Adresse-Zwischenspeicher konfiguriert ist, für einen ausgewählte Übersetzung-Adresse-Index, eine Mehrzahl von Übersetzung-Adresse-Einträgen zu speichern, wobei jeder Übersetzung-Adresse-Eintrag eine physikalische Adresse für eine entsprechende alternative Version aufweist.
  • Konzept 17. Mikroprozessor von Konzept 16, wobei jeder Übersetzung-Adresse-Eintrag ferner einen angenommenen Kontext zum Beschreiben eines Zustandes des Mikroprozessors aufweist, für welchen eine jeweilige alternative Version gültig ist.
  • Konzept 18. Mikroprozessor von Konzept 16, wobei der Übersetzung-Adresse-Zwischenspeicher 1024 Übersetzung-Adresse-Einträge aufweist, welche über zumindest 4 Wege verteilt sind, wobei jeder Weg 256 Datenstellen aufweist.
  • Konzept 19. Verfahren zum Bestimmen, ob eine alternative Version einer Anweisung, welche dieselbe Funktionalität wie die Anweisung hat, in einem Mikroprozessor gespeichert ist, wobei das Verfahren aufweist: Holen einer physikalischen Adresse für eine Anweisung von einem Anweisung-Übersetzung-Lookaside-Puffer mit Bezugnahme auf eine lineare Adresse für die Anweisung; während eines Holens der physikalischen Adresse von dem Anweisung-Übersetzung-Lookaside-Puffer, Bestimmen, ob eine physikalische Adresse für eine gültige Übersetzung in einem Übersetzung-Adresse-Zwischenspeicher gespeichert ist, indem ein oder mehrere Teile der linearen Adresse gehashed werden; wenn die physikalische Adresse in dem
  • Übersetzung-Adresse-Zwischenspeicher gespeichert ist, Senden der physikalischen Adresse für die Übersetzung an einen Anweisungs-Zwischenspeicher, so dass die Übersetzung von dem Anweisungs-Zwischenspeicher erhalten werden kann, und Senden der Übersetzung an Planungs-Logik zum Planen der Übersetzung zur Ausführung; und, wenn die physikalische Adresse nicht in dem Übersetzung-Adresse-Zwischenspeicher gespeichert ist, Senden der physikalischen Adresse für die Anweisung an den Anweisungs-Zwischenspeicher, so dass die Anweisung von dem Anweisungs-Zwischenspeicher erhalten werden kann, Senden der Anweisung an Dekodier-Logik zum Erzeugen einer dekodierten Anweisung, und Senden der dekodierten Anweisung an Planungs-Logik zur Planung der dekodierten Anweisung zur Ausführung.
  • Konzept 20. Verfahren von Konzept 19, wobei Bestimmen, ob eine physikalische Adresse für die gültige Übersetzung in einem Übersetzung-Adresse-Zwischenspeicher gespeichert ist, aufweist: Bezugnehmen auf bzw. Referenzieren eines Übersetzung-Adresse-Index in dem Übersetzung-Adresse-Zwischenspeicher gemäß einem Hash-Index, welcher von dem Hashing erzeugt ist; Erhalten von einem oder mehreren Übersetzung-Adresse-Einträgen, welche in dem Übersetzung-Adresse-Zwischenspeicher gespeichert sind, gemäß dem Übersetzung-Adresse-Index; Vergleichen eines Disambiguierungs-Kennzeichens, welches von dem Hashing erzeugt ist, mit einem Disambiguierungs-Kennzeichen, welches mit jedem des einen oder der mehreren Übersetzung-Adresse-Einträgen assoziiert ist, welche erhalten sind; Vergleichen eines momentanen Kontext für den Mikroprozessor mit einem angenommenen Kontext, welcher mit dem bestimmten Disambiguierungs-Kennzeichen assoziiert ist; und, wenn das Disambiguierungs-Kennzeichen, welches von dem Hashing erzeugt ist, mit dem Disambiguierungs-Kennzeichen übereinstimmt, welches mit einem der Übersetzung-Adresse-Einträgen, welche erhalten sind, assoziiert ist, und wenn der momentane Kontext mit dem angenommenen Kontext übereinstimmt, Identifizieren der physikalischen Adresse als in einem bestimmten Übersetzung-Adresse-Eintrag gespeichert, welcher mit dem bestimmten Disambiguierungs-Kennzeichen assoziiert ist.

Claims (7)

  1. Mikroprozessor (100), aufweisend Holen-Logik (120), welche operativ ist, um: eine Anweisung zu holen; einen Hash-Index von einem oder mehrerer Teile einer Adresse für die Anweisung zu erzeugen; ein Disambiguierungs-Kennzeichen von wenigstens einem anderen Teil der Adresse für die Anweisung zu erzeugen;basierend auf dem Hash-Index und dem Dismabiguierungs-Kennzeichen zu bestimmen, ob eine alternative Version der Anweisung existiert, welche dieselbe Funktionalität wie die Anweisung erreicht; mit Verweisen auf einen Übersetzung-Adresse-Index in einem Übersetzung-Adresse-Zwischenspeicher gemäß dem Hash-Index, Vergleichen eines momentanen Kontext für den Mikroprozessors mit einem angenommenen Kontext, wobei der momentane Kontext einen momentanen Arbeitszustand des Mikroprozessors beschreibt und der angenommene Kontext einen Zustand des Mikroprozessors beschreibt, für welchen die alternative Version gültig ist, Bestimmen, wenn der momentane Kontext mit dem angenommenen Kontext übereinstimmt, dass die alternative Version existiert, wobei die alternative Version eine Übersetzung der Anweisung ist und die alternative Version einen Satz einer oder mehrerer Mikro-Operationen umfasst; und wenn das Hashing zu einer Bestimmung führt, dass solch eine alternative Version existiert, das Holen abzubrechen und die alternative Version zur Ausführung mit dem Mikroprozessor abzurufen, wobei eine physikalische Adresse aus dem Übersetzung-Adresse-Zwischenspeicher abgerufen wird.
  2. Mikroprozessor (100) gemäß Anspruch 1, wobei die Holen-Logik (120) ferner operativ ist, den Hash-Index oder das Disambiguierungs-Kennzeichen zu erzeugen, während die Anweisung geholt wird.
  3. Mikroprozessor (100) gemäß Anspruch 1 oder2, wobei die Holen-Logik (120) ferner operativ ist, um: einen oder mehrere Übersetzung-Adresse-Einträge, welche in dem Übersetzung-Adresse-Zwischenspeicher gespeichert sind, gemäß dem Übersetzung-Adresse-Index zu erhalten; das Disambiguierungs-Kennzeichen mit einem zweiten Disambiguierungs-Kennzeichen, welches mit wenigstens einem der Übersetzung-Adresse-Einträge assoziiert ist, welche erhalten sind, zu vergleichen; und, wenn das Disambiguierungs-Kennzeichenmit dem zweiten Disambiguierungs-Kennzeichen übereinstimmt, zu bestimmen, dass die alternative Version existiert.
  4. Mikroprozessor (100) gemäß Anspruch 1, wobei die Holen-Logik operativ ist, um: die physikalische Adresse für die alternative Version an einen Anweisungs-Zwischenspeicher zu senden, so dass die alternative Version von dem Anweisungs-Zwischenspeicher erhalten werden kann; und die alternative Version, welche von dem Anweisungs-Zwischenspeicher erhalten ist, an Planungs-Logik zum Planen der alternativen Version zur Ausführung zu senden.
  5. Mikroprozessor (100) gemäß einem der Ansprüche 1 bis 4, ferner aufweisend einen Übersetzung-Adresse-Zwischenspeicher, welcher konfiguriert ist, für jede alternative Version, welche innerhalb des Übersetzung-Adresse-Zwischenspeichers gespeichert ist, einen Übersetzung-Adresse-Eintrag zu speichern, welcher eine physikalische Adresse für die alternative Version und einen angenommenen Kontext zum Beschreiben eines Zustandes des Mikroprozessors aufweist, für den die alternative Version gültig ist.
  6. Mikroprozessor (100) gemäß einem der Ansprüche 1 bis 5, ferner aufweisend einen linearen-indizierten-physikalisch-gekennzeichneten-Anweisung-Zwischenspeicher oder einen physikalisch-indizierten-physikalischgekennzeichneten-Anweisungs-Speicher.
  7. Mikroprozessor (100) gemäß einem der Ansprüche 1 bis 6, wobei die Adresse für die Anweisung eine lineare Adresse ist, und wobei die Holen-Logik (120) ferner operativ ist, eine physikalische Adresse für die Anweisung von einem Anweisung-Übersetzung-Lookaside-Puffer mit Bezugnahme auf eine lineare Adresse für die Anweisung abzurufen.
DE102013201767.7A 2012-03-13 2013-02-04 Übersetzungs-Adresse-Zwischenspeicher für einen Mikroprozessor Active DE102013201767B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/419,323 US10146545B2 (en) 2012-03-13 2012-03-13 Translation address cache for a microprocessor
US13/419,323 2012-03-13

Publications (2)

Publication Number Publication Date
DE102013201767A1 DE102013201767A1 (de) 2013-09-19
DE102013201767B4 true DE102013201767B4 (de) 2021-12-02

Family

ID=49044138

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013201767.7A Active DE102013201767B4 (de) 2012-03-13 2013-02-04 Übersetzungs-Adresse-Zwischenspeicher für einen Mikroprozessor

Country Status (4)

Country Link
US (1) US10146545B2 (de)
CN (1) CN103309644B (de)
DE (1) DE102013201767B4 (de)
TW (1) TWI515567B (de)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9588902B2 (en) * 2012-12-04 2017-03-07 Advanced Micro Devices, Inc. Flexible page sizes for virtual memory
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9330020B2 (en) * 2013-12-27 2016-05-03 Intel Corporation System, apparatus, and method for transparent page level instruction translation
CN103942161B (zh) * 2014-04-24 2017-02-15 杭州冰特科技有限公司 只读缓存的去冗余系统及方法以及缓存的去冗余方法
US10152527B1 (en) * 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10380100B2 (en) 2016-04-27 2019-08-13 Western Digital Technologies, Inc. Generalized verification scheme for safe metadata modification
US10380069B2 (en) 2016-05-04 2019-08-13 Western Digital Technologies, Inc. Generalized write operations verification method
KR20180087925A (ko) * 2017-01-25 2018-08-03 삼성전자주식회사 논리 어드레스와 물리 어드레스 사이에서 해싱 기반 변환을 수행하는 스토리지 장치
EP3422192B1 (de) * 2017-06-28 2020-08-12 Arm Ltd Adressübersetzungsdatenungültigkeitserklärung
US10997066B2 (en) * 2018-02-20 2021-05-04 Samsung Electronics Co., Ltd. Storage devices that support cached physical address verification and methods of operating same
US11175921B2 (en) * 2018-05-15 2021-11-16 International Business Machines Corporation Cognitive binary coded decimal to binary number conversion hardware for evaluating a preferred instruction variant based on feedback
US11023397B2 (en) * 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
WO2022003418A1 (en) * 2020-06-29 2022-01-06 Aurora Labs Ltd. Efficient controller data generation and extraction
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
US20230057623A1 (en) * 2021-08-23 2023-02-23 Intel Corporation Issue, execution, and backend driven frontend translation control for performant and secure data-space guided micro-sequencing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721855A (en) 1994-03-01 1998-02-24 Intel Corporation Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US20100161901A9 (en) 2005-04-14 2010-06-24 Arm Limited Correction of incorrect cache accesses

Family Cites Families (185)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3815101A (en) 1972-11-08 1974-06-04 Sperry Rand Corp Processor state and storage limits register auto-switch
US3950729A (en) 1973-08-31 1976-04-13 Nasa Shared memory for a fault-tolerant computer
US4654790A (en) 1983-11-28 1987-03-31 Amdahl Corporation Translation of virtual and real addresses to system addresses
US4812981A (en) 1985-10-24 1989-03-14 Prime Computer, Inc. Memory management system improving the efficiency of fork operations
US4797814A (en) 1986-05-01 1989-01-10 International Business Machines Corporation Variable address mode cache
JP2589713B2 (ja) 1987-11-20 1997-03-12 株式会社日立製作所 データプロセッサ及びデータ処理システム
US5179669A (en) 1988-08-22 1993-01-12 At&T Bell Laboratories Multiprocessor interconnection and access arbitration arrangement
JPH02288927A (ja) 1989-01-18 1990-11-28 Nec Corp 共有メモリ管理方式
CA2011807C (en) 1989-03-20 1999-02-23 Katsumi Hayashi Data base processing system using multiprocessor system
JPH0354660A (ja) 1989-07-21 1991-03-08 Nec Corp マルチプロセッサシステムにおける共有メモリ管理方式
US5123094A (en) 1990-01-26 1992-06-16 Apple Computer, Inc. Interprocessor communications includes second CPU designating memory locations assigned to first CPU and writing their addresses into registers
JPH04182858A (ja) 1990-11-19 1992-06-30 Mitsubishi Electric Corp 共有メモリ管理方式
US5245702A (en) 1991-07-05 1993-09-14 Sun Microsystems, Inc. Method and apparatus for providing shared off-screen memory
US5696925A (en) 1992-02-25 1997-12-09 Hyundai Electronics Industries, Co., Ltd. Memory management unit with address translation function
US5414824A (en) 1993-06-30 1995-05-09 Intel Corporation Apparatus and method for accessing a split line in a high speed cache
US5446854A (en) 1993-10-20 1995-08-29 Sun Microsystems, Inc. Virtual memory computer apparatus and address translation mechanism employing hashing scheme and page frame descriptor that support multiple page sizes
GB2284494B (en) 1993-11-26 1998-09-09 Hitachi Ltd Distributed shared memory management system
US5526504A (en) 1993-12-15 1996-06-11 Silicon Graphics, Inc. Variable page size translation lookaside buffer
US5956753A (en) 1993-12-30 1999-09-21 Intel Corporation Method and apparatus for handling speculative memory access operations
JPH0877347A (ja) 1994-03-08 1996-03-22 Texas Instr Inc <Ti> 画像/グラフィックス処理用のデータ処理装置およびその操作方法
US5487146A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Plural memory access address generation employing guide table entries forming linked list
US5963984A (en) 1994-11-08 1999-10-05 National Semiconductor Corporation Address translation unit employing programmable page size
US6813699B1 (en) 1995-06-02 2004-11-02 Transmeta Corporation Speculative address translation for processor using segmentation and optional paging
US5999189A (en) 1995-08-04 1999-12-07 Microsoft Corporation Image compression to reduce pixel and texture memory requirements in a real-time image generator
US5949785A (en) 1995-11-01 1999-09-07 Whittaker Corporation Network access communications system and methodology
US6298390B1 (en) 1995-11-22 2001-10-02 Sun Microsystems, Inc. Method and apparatus for extending traditional operating systems file systems
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US6711667B1 (en) 1996-06-28 2004-03-23 Legerity, Inc. Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions
US6031992A (en) 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US6012132A (en) 1997-03-31 2000-01-04 Intel Corporation Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table
US5870582A (en) 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
AUPO647997A0 (en) 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Memory controller architecture
GB9724031D0 (en) * 1997-11-13 1998-01-14 Advanced Telecommunications Mo Cache memory operation
US6091987A (en) 1998-04-29 2000-07-18 Medtronic, Inc. Power consumption reduction in medical devices by employing different supply voltages
US6591355B2 (en) 1998-09-28 2003-07-08 Technion Research And Development Foundation Ltd. Distributed shared memory system with variable granularity
US6862635B1 (en) 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US7007075B1 (en) 1998-12-09 2006-02-28 E-Lysium Transaction Systems Inc. Flexible computer resource manager
US6297832B1 (en) 1999-01-04 2001-10-02 Ati International Srl Method and apparatus for memory access scheduling in a video graphics system
US6362826B1 (en) 1999-01-15 2002-03-26 Intel Corporation Method and apparatus for implementing dynamic display memory
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US6519694B2 (en) 1999-02-04 2003-02-11 Sun Microsystems, Inc. System for handling load errors having symbolic entity generator to generate symbolic entity and ALU to propagate the symbolic entity
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6714904B1 (en) 1999-10-13 2004-03-30 Transmeta Corporation System for using rate of exception event generation during execution of translated instructions to control optimization of the translated instructions
US6574749B1 (en) 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
US6751583B1 (en) 1999-10-29 2004-06-15 Vast Systems Technology Corporation Hardware and software co-simulation including simulating a target processor using binary translation
US6499090B1 (en) 1999-12-28 2002-12-24 Intel Corporation Prioritized bus request scheduling mechanism for processing devices
US6625715B1 (en) 1999-12-30 2003-09-23 Intel Corporation System and method for translation buffer accommodating multiple page sizes
US20010049818A1 (en) 2000-02-09 2001-12-06 Sanjeev Banerjia Partitioned code cache organization to exploit program locallity
US6457115B1 (en) 2000-06-15 2002-09-24 Advanced Micro Devices, Inc. Apparatus and method for generating 64 bit addresses using a 32 bit adder
EP1170665B1 (de) 2000-07-06 2004-02-04 Texas Instruments France Mehrprozessorsystem Prüfungsschaltung
US6636223B1 (en) 2000-08-02 2003-10-21 Ati International. Srl Graphics processing system with logic enhanced memory and method therefore
US7162612B2 (en) 2000-08-16 2007-01-09 Ip-First, Llc Mechanism in a microprocessor for executing native instructions directly from memory
EP1213650A3 (de) 2000-08-21 2006-08-30 Texas Instruments France Auf aktueller Aufgabe basierte Prioritätsarbitrierung und Speicherverwaltungseinheit
US6742104B2 (en) 2000-08-21 2004-05-25 Texas Instruments Incorporated Master/slave processing system with shared translation lookaside buffer
EP1182571B1 (de) 2000-08-21 2011-01-26 Texas Instruments Incorporated Auf gemeinsamem Bit basierte TLB-Operationen
US6883079B1 (en) 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
US6859208B1 (en) 2000-09-29 2005-02-22 Intel Corporation Shared translation address caching
US20020069402A1 (en) 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
JP2002169696A (ja) 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置
US7356026B2 (en) 2000-12-14 2008-04-08 Silicon Graphics, Inc. Node translation and protection in a clustered multiprocessor system
US6925547B2 (en) 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
US6560690B2 (en) * 2000-12-29 2003-05-06 Intel Corporation System and method for employing a global bit for page sharing in a linear-addressed cache
US6549997B2 (en) 2001-03-16 2003-04-15 Fujitsu Limited Dynamic variable page size translation of addresses
US7073044B2 (en) 2001-03-30 2006-07-04 Intel Corporation Method and apparatus for sharing TLB entries
US6658538B2 (en) 2001-06-21 2003-12-02 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US6523104B2 (en) 2001-07-13 2003-02-18 Mips Technologies, Inc. Mechanism for programmable modification of memory mapping granularity
US6901505B2 (en) 2001-08-09 2005-05-31 Advanced Micro Devices, Inc. Instruction causing swap of base address from segment register with address from another register
US6757784B2 (en) 2001-09-28 2004-06-29 Intel Corporation Hiding refresh of memory and refresh-hidden memory
US6823433B1 (en) 2001-11-13 2004-11-23 Advanced Micro Devices, Inc. Memory management system and method for providing physical address based memory access security
US6877077B2 (en) 2001-12-07 2005-04-05 Sun Microsystems, Inc. Memory controller and method using read and write queues and an ordering queue for dispatching read and write memory requests out of order to reduce memory latency
EP1331539B1 (de) 2002-01-16 2016-09-28 Texas Instruments France Sicherer Modus für Prozessoren, die Speicherverwaltung und Unterbrechungen unterstützen
US6851008B2 (en) 2002-03-06 2005-02-01 Broadcom Corporation Adaptive flow control method and apparatus
AU2003231070A1 (en) 2002-04-18 2003-11-03 Advanced Micro Devices Inc. A computer system including a secure execution mode - capable cpu and a security services processor connected via a secure communication path
US8285743B2 (en) 2002-06-24 2012-10-09 International Business Machines Corporation Scheduling viewing of web pages in a data processing system
US7124327B2 (en) 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
JP3982353B2 (ja) 2002-07-12 2007-09-26 日本電気株式会社 フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
EP1391820A3 (de) 2002-07-31 2007-12-19 Texas Instruments Incorporated Gleichzeitige Taskausführung in einer Mehrfachprozessorumgebung mit einzelnem Betriebssystem
US6950925B1 (en) 2002-08-28 2005-09-27 Advanced Micro Devices, Inc. Scheduler for use in a microprocessor that supports data-speculative execution
GB2392998B (en) 2002-09-16 2005-07-27 Advanced Risc Mach Ltd Handling interrupts during multiple access program instructions
GB2393274B (en) 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
US7398525B2 (en) 2002-10-21 2008-07-08 International Business Machines Corporation Resource scheduling in workflow management systems
US6981083B2 (en) 2002-12-05 2005-12-27 International Business Machines Corporation Processor virtualization mechanism via an enhanced restoration of hard architected states
US20040122800A1 (en) 2002-12-23 2004-06-24 Nair Sreekumar R. Method and apparatus for hardware assisted control redirection of original computer code to transformed code
US7191349B2 (en) 2002-12-26 2007-03-13 Intel Corporation Mechanism for processor power state aware distribution of lowest priority interrupt
US7203932B1 (en) 2002-12-30 2007-04-10 Transmeta Corporation Method and system for using idiom recognition during a software translation process
US20040128448A1 (en) 2002-12-31 2004-07-01 Intel Corporation Apparatus for memory communication during runahead execution
US7139876B2 (en) 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
US7168077B2 (en) 2003-01-31 2007-01-23 Handysoft Corporation System and method of executing and controlling workflow processes
EP1447742A1 (de) 2003-02-11 2004-08-18 STMicroelectronics S.r.l. Verfahren und Vorrichtung zur Übersetzung von Befehlen eines ARM-Prozessors in Befehlen für einen LX-Prozessor
US6965983B2 (en) 2003-02-16 2005-11-15 Faraday Technology Corp. Simultaneously setting prefetch address and fetch address pipelined stages upon branch
US6963963B2 (en) 2003-03-25 2005-11-08 Freescale Semiconductor, Inc. Multiprocessor system having a shared main memory accessible by all processor units
DE602004025913D1 (de) 2003-03-27 2010-04-22 Nxp Bv Aufzeichnen von aktivität nach sprüngen
US7003647B2 (en) 2003-04-24 2006-02-21 International Business Machines Corporation Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory
US7107441B2 (en) 2003-05-21 2006-09-12 Intel Corporation Pre-boot interpreted namespace parsing for flexible heterogeneous configuration and code consolidation
US7082508B2 (en) 2003-06-24 2006-07-25 Intel Corporation Dynamic TLB locking based on page usage metric
US7124255B2 (en) 2003-06-30 2006-10-17 Microsoft Corporation Message based inter-process for high volume data
GB0316532D0 (en) 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for partitioning code in program code conversion
US7225299B1 (en) 2003-07-16 2007-05-29 Transmeta Corporation Supporting speculative modification in a data cache
US7062631B1 (en) 2003-07-17 2006-06-13 Transmeta Corporation Method and system for enforcing consistent per-physical page cacheability attributes
US20050050013A1 (en) 2003-08-28 2005-03-03 Sharp Laboratories Of America, Inc. System and method for policy-driven device queries
US7418585B2 (en) 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7010648B2 (en) 2003-09-08 2006-03-07 Sun Microsystems, Inc. Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor
US7921300B2 (en) 2003-10-10 2011-04-05 Via Technologies, Inc. Apparatus and method for secure hash algorithm
US7321958B2 (en) 2003-10-30 2008-01-22 International Business Machines Corporation System and method for sharing memory by heterogeneous processors
US7159095B2 (en) 2003-12-09 2007-01-02 International Business Machines Corporation Method of efficiently handling multiple page sizes in an effective to real address translation (ERAT) table
US7730489B1 (en) 2003-12-10 2010-06-01 Oracle America, Inc. Horizontally scalable and reliable distributed transaction management in a clustered application server environment
US7107411B2 (en) 2003-12-16 2006-09-12 International Business Machines Corporation Apparatus method and system for fault tolerant virtual memory management
US7496732B2 (en) 2003-12-17 2009-02-24 Intel Corporation Method and apparatus for results speculation under run-ahead execution
US7310722B2 (en) 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7340565B2 (en) 2004-01-13 2008-03-04 Hewlett-Packard Development Company, L.P. Source request arbitration
US7293164B2 (en) 2004-01-14 2007-11-06 International Business Machines Corporation Autonomic method and apparatus for counting branch instructions to generate branch statistics meant to improve branch predictions
US7082075B2 (en) 2004-03-18 2006-07-25 Micron Technology, Inc. Memory device and method having banks of different sizes
US7234038B1 (en) 2004-05-28 2007-06-19 Sun Microsystems, Inc. Page mapping cookies
US7383414B2 (en) 2004-05-28 2008-06-03 Oracle International Corporation Method and apparatus for memory-mapped input/output
US20060004984A1 (en) 2004-06-30 2006-01-05 Morris Tonia G Virtual memory management system
US8190863B2 (en) 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US7257699B2 (en) 2004-07-08 2007-08-14 Sun Microsystems, Inc. Selective execution of deferred instructions in a processor that supports speculative execution
US7194604B2 (en) 2004-08-26 2007-03-20 International Business Machines Corporation Address generation interlock resolution under runahead execution
US7890735B2 (en) 2004-08-30 2011-02-15 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US8001294B2 (en) 2004-09-28 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for providing a compressed network in a multi-processing system
US7340582B2 (en) 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US8843727B2 (en) 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US20060149931A1 (en) 2004-12-28 2006-07-06 Akkary Haitham Runahead execution in a central processing unit
US8255882B2 (en) 2004-12-30 2012-08-28 Intel Corporation Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture
US7437517B2 (en) 2005-01-11 2008-10-14 International Business Machines Corporation Methods and arrangements to manage on-chip memory to reduce memory latency
US20060174228A1 (en) 2005-01-28 2006-08-03 Dell Products L.P. Adaptive pre-fetch policy
US7752627B2 (en) 2005-02-04 2010-07-06 Mips Technologies, Inc. Leaky-bucket thread scheduler in a multithreading microprocessor
US7948896B2 (en) 2005-02-18 2011-05-24 Broadcom Corporation Weighted-fair-queuing relative bandwidth sharing
TWI309378B (en) 2005-02-23 2009-05-01 Altek Corp Central processing unit having a micro-code engine
US7209405B2 (en) 2005-02-23 2007-04-24 Micron Technology, Inc. Memory device and method having multiple internal data buses and memory bank interleaving
US7447869B2 (en) 2005-04-07 2008-11-04 Ati Technologies, Inc. Method and apparatus for fragment processing in a virtual memory system
US20060236074A1 (en) * 2005-04-14 2006-10-19 Arm Limited Indicating storage locations within caches
DE102005021749A1 (de) 2005-05-11 2006-11-16 Fachhochschule Dortmund Verfahren und Vorrichtung zur programmgesteuerten Informationsverarbeitung
US7299337B2 (en) 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US7739668B2 (en) 2005-05-16 2010-06-15 Texas Instruments Incorporated Method and system of profiling applications that use virtual memory
US20060277398A1 (en) 2005-06-03 2006-12-07 Intel Corporation Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline
US7814292B2 (en) 2005-06-14 2010-10-12 Intel Corporation Memory attribute speculation
US20070067505A1 (en) 2005-09-22 2007-03-22 Kaniyur Narayanan G Method and an apparatus to prevent over subscription and thrashing of translation lookaside buffer (TLB) entries in I/O virtualization hardware
JP2007109116A (ja) 2005-10-17 2007-04-26 Fukuoka Pref Gov Sangyo Kagaku Gijutsu Shinko Zaidan 推定装置、テーブル管理装置、選択装置、テーブル管理方法、そのテーブル管理方法をコンピュータに実現させるプログラム、及び、そのプログラムを記録する記憶媒体
US7739476B2 (en) 2005-11-04 2010-06-15 Apple Inc. R and C bit update handling
US7616218B1 (en) 2005-12-05 2009-11-10 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives
US7519781B1 (en) 2005-12-19 2009-04-14 Nvidia Corporation Physically-based page characterization data
US7512767B2 (en) 2006-01-04 2009-03-31 Sony Ericsson Mobile Communications Ab Data compression method for supporting virtual memory management in a demand paging system
US7653803B2 (en) 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
JP4890033B2 (ja) 2006-01-19 2012-03-07 株式会社日立製作所 記憶装置システム及び記憶制御方法
US7545382B1 (en) 2006-03-29 2009-06-09 Nvidia Corporation Apparatus, system, and method for using page table entries in a graphics system to provide storage format information for address translation
US20070240141A1 (en) 2006-03-30 2007-10-11 Feng Qin Performing dynamic information flow tracking
JP5010164B2 (ja) 2006-03-31 2012-08-29 株式会社日立製作所 サーバ装置及び仮想計算機の制御プログラム
US8621120B2 (en) 2006-04-17 2013-12-31 International Business Machines Corporation Stalling of DMA operations in order to do memory migration using a migration in progress bit in the translation control entry mechanism
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
US8035648B1 (en) 2006-05-19 2011-10-11 Nvidia Corporation Runahead execution for graphics processing units
US8707011B1 (en) 2006-10-24 2014-04-22 Nvidia Corporation Memory access techniques utilizing a set-associative translation lookaside buffer
US8706975B1 (en) 2006-11-01 2014-04-22 Nvidia Corporation Memory access management block bind system and method
CN100485689C (zh) 2007-01-30 2009-05-06 浪潮通信信息系统有限公司 基于文件系统缓存的数据加速查询方法
WO2008097710A2 (en) 2007-02-02 2008-08-14 Tarari, Inc. Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic
CN101042670A (zh) 2007-04-24 2007-09-26 上海华龙信息技术开发中心 一种指令异常处理方法
US7895421B2 (en) 2007-07-12 2011-02-22 Globalfoundries Inc. Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement
US7712092B2 (en) 2007-10-01 2010-05-04 The Board Of Trustees Of The Leland Stanford Junior University Binary translation using peephole translation rules
US7925923B1 (en) 2008-01-31 2011-04-12 Hewlett-Packard Development Company, L.P. Migrating a virtual machine in response to failure of an instruction to execute
US20090327661A1 (en) 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
US8131984B2 (en) 2009-02-12 2012-03-06 Via Technologies, Inc. Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state
US8533437B2 (en) 2009-06-01 2013-09-10 Via Technologies, Inc. Guaranteed prefetch instruction
US8364902B2 (en) 2009-08-07 2013-01-29 Via Technologies, Inc. Microprocessor with repeat prefetch indirect instruction
US20110078425A1 (en) * 2009-09-25 2011-03-31 Shah Manish K Branch prediction mechanism for predicting indirect branch targets
US8775153B2 (en) 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
TWI506434B (zh) 2010-03-29 2015-11-01 Via Tech Inc 預取單元、資料預取方法、電腦程式產品以及微處理器
US8479176B2 (en) 2010-06-14 2013-07-02 Intel Corporation Register mapping techniques for efficient dynamic binary translation
US8719625B2 (en) 2010-07-22 2014-05-06 International Business Machines Corporation Method, apparatus and computer program for processing invalid data
US8549504B2 (en) 2010-09-25 2013-10-01 Intel Corporation Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region
US8627044B2 (en) 2010-10-06 2014-01-07 Oracle International Corporation Issuing instructions with unresolved data dependencies
CN103620547B (zh) 2011-01-27 2018-07-10 英特尔公司 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射
WO2013100996A1 (en) 2011-12-28 2013-07-04 Intel Corporation Binary translation in asymmetric multiprocessor system
US8898642B2 (en) 2012-02-16 2014-11-25 Unisys Corporation Profiling and sequencing operators executable in an emulated computing system
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9384001B2 (en) 2012-08-15 2016-07-05 Nvidia Corporation Custom chaining stubs for instruction code translation
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721855A (en) 1994-03-01 1998-02-24 Intel Corporation Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US20100161901A9 (en) 2005-04-14 2010-06-24 Arm Limited Correction of incorrect cache accesses

Also Published As

Publication number Publication date
TWI515567B (zh) 2016-01-01
US10146545B2 (en) 2018-12-04
TW201407348A (zh) 2014-02-16
US20130246709A1 (en) 2013-09-19
CN103309644A (zh) 2013-09-18
CN103309644B (zh) 2016-08-03
DE102013201767A1 (de) 2013-09-19

Similar Documents

Publication Publication Date Title
DE102013201767B4 (de) Übersetzungs-Adresse-Zwischenspeicher für einen Mikroprozessor
DE112010003492B4 (de) Transaktionsspeichersystem mit wirksamerZwischenspeicherunterstützung
DE10296989B4 (de) Multi-Thread-Prozessor mit der Fähigkeit einer impliziten Multi-Thread-Ausführung eines Ein-Thread-Programms
US7606975B1 (en) Trace cache for efficient self-modifying code processing
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102012216571A1 (de) Nutzung einer architekturdefinierten letztverwendungs-operandenangabe in einem computersystem-operandenressourcenpool
US20100169382A1 (en) Metaphysical address space for holding lossy metadata in hardware
DE102010053972A1 (de) Übergang vom Quellbefehlssatzarchitektur-(ISA)-Code zum übersetzten Code in einer Teilemulationsumgebung
US20120198157A1 (en) Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
DE69634315T2 (de) Verfahren und Gerät zur Verwendung eines Ladebefehls der keinen Fehler verursacht
DE102012216592A1 (de) Präfix-Computeranweisung zur Erweiterung der Anweisungsfunktionalität
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
DE102012222820A1 (de) Anweisung-Zwischenspeicher-Energie-Verminderung
DE102012023574A1 (de) Verfahren, Vorrichtung und System zum Effizienten Verarbeiten von mehreren Abbildungen virtueller Adressen bei der transaktionalen Abarbeitung
DE102012216565A1 (de) Decodierzeit-computeranweisungsoptimierung
DE112005003098T5 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE69908175T2 (de) Verbesserte befehlsdekodierung durch paralleldekodierungsalgorithmus
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
US20120198168A1 (en) Variable caching structure for managing physical storage
DE102014003399A1 (de) Systeme und Verfahren zur Implementierung transaktionalen Speichers
DE102018001537A1 (de) System, vorrichtung und verfahren zum selektiven freigeben einer instruktionshandhabung auf lokalitäts-basis
US11307784B2 (en) Method and apparatus for storing memory attributes

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final