-
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.