DE60005219T2 - Aufbauen eines betriebsmodus in einem prozessor - Google Patents

Aufbauen eines betriebsmodus in einem prozessor Download PDF

Info

Publication number
DE60005219T2
DE60005219T2 DE60005219T DE60005219T DE60005219T2 DE 60005219 T2 DE60005219 T2 DE 60005219T2 DE 60005219 T DE60005219 T DE 60005219T DE 60005219 T DE60005219 T DE 60005219T DE 60005219 T2 DE60005219 T2 DE 60005219T2
Authority
DE
Germany
Prior art keywords
processor
operating mode
bit
mode
segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60005219T
Other languages
English (en)
Other versions
DE60005219D1 (de
Inventor
J. Kevin MCGRATH
T. Michael CLARK
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE60005219D1 publication Critical patent/DE60005219D1/de
Application granted granted Critical
Publication of DE60005219T2 publication Critical patent/DE60005219T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space

Landscapes

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

Description

  • Gebiet der Erfindung
  • Diese Erfindung betrifft das Gebiet von Prozessoren und insbesondere Adress- und Operandengrößen in Prozessoren.
  • Beschreibung des Standes der Technik
  • Die x86 Architektur (auch bekannt als die IA-32 Architektur) hat eine weitverbreitete Akzeptanz und Erfolg im Markt genossen. Entsprechend ist es vorteilhaft, Prozessoren in Übereinstimmung mit der x86 Architektur zu entwerfen. Derartige Prozessoren können von der großen Masse von Software profitieren, die für die x86 Architektur geschrieben wurde (da derartige Prozessoren die Software ausführen können und daher Computersysteme, die den Prozessor verwenden, aufgrund des großen Betrags an verfügbarer Software eine erhöhte Akzeptanz in dem Markt genießen können).
  • Mit der weiter andauernden Entwicklung der Computersysteme ist eine 64 Bit Adressgröße (und manchmal Operandengröße) wünschenswert geworden. Eine größere Adressgröße ermöglicht es Programmen, die einen größeren Speicherabdruck haben (der Betrag an Speicher, der von den Befehlen in dem Programm und den Daten, mit denen das Programm arbeitet, belegt wird), in dem Speicherraum zu arbeiten. Eine größere Operandengröße erlaubt das Verarbeiten auf größeren Operanden oder eine höhere Präzision in den Operanden. Mächtigere Anwendungen und/oder Betriebssysteme können durch die Verwendung von 64 Bit Adress- und/oder Operandengrößen möglich werden.
  • Unvorteilhafterweise ist die x86 Architektur auf ein Maximum von 32 Bit Operandengröße und 32 Bit Adressgröße begrenzt. Die Operandengröße bezieht sich auf die Anzahl der Bits, auf denen durch den Prozessor gearbeitet wird (zum Beispiel die Anzahl der Bits in einem Quell- oder Zieloperanden). Die Adressgröße bezieht sich auf die Anzahl der Bits in einer von dem Prozessor erzeugten Adresse. Daher können Prozessoren, welche die x86 Architektur verwenden, nicht den Anforderungen von Anwendungen dienen, welche von den Vorteilen der 64 Bit Adress- oder Operandengrößen profitieren könnten.
  • Bevor die vorliegende Erfindung zusammengefasst wird, werden zwei Dokumente aus dem Stand der Technik wie folgt berücksichtigt:
    US-A-5 774 686 offenbart einen Prozessor, der ein Steuerregister aufweist, das zum Speichern eines Erweiterungshinweises konfiguriert ist, wobei der besagte Prozessor konfiguriert ist, um Konfigurationen für den Befehlssatz und Systemkonfigurationen in Antwort auf den besagten Erweiterungshinweis und in Antwort auf ein Befehlssatzflag und auf ein Systemflag zu erstellen.
  • US-A-6 787 495 offenbart das Speichern von Selektoren in Segmentregistern.
  • Zusammenfassung der Erfindung
  • Die oben angeführten Probleme werden zu einem großen Teil von einem Prozessor gelöst, wie er hier beschrieben ist. Der Prozessor unterstützt einen ersten Betriebsmodus, in dem die Adressgröße größer als 32 Bit ist und die Operandengröße 32 oder 64 Bit sein kann. Die Größe der Adresse kann nominell als 64 Bit angezeigt sein, obwohl verschiedene Ausführungsbeispiele des Prozessors jegliche Adressgröße verwenden können, die 32 Bit überschreitet, bis zu und einschließlich 64 Bit reicht, in dem ersten Betriebsmodus. Der erste Betriebsmodus kann eingerichtet werden durch Platzierung einer Freigabeangabe in einem Steuerregister in einen frei gegebenen Zustand und durch Setzen einer ersten Betriebsmodusangabe und einer zweiten Betriebsmodusangabe in einem Segmentdeskriptor auf vordefinierte Zustände. Weitere Kombinationen der ersten Betriebsmodusangabe und der zweiten Betriebsmodusangabe können verwendet werden, um Kompatibilitätsmodi für die 32 Bit und 16 Bit Verarbeitung zur Verfügung zu stellen, die kompatibel mit der x86 Prozessorarchitektur sind (wobei die Freigabeangabe in dem frei gegebenen Zustand bleibt). Vorteilhafterweise kann eine 64 Bit Verarbeitung zur Verfügung gestellt werden, während Kompatibilität mit der x86 Prozessorarchitektur zur Verfügung gestellt wird, und daher bestehender Code unterstützt wird, der für die x86 Prozessorarchitektur geschrieben wurde.
  • Des weiteren kann, durch ein zur Verfügung stellen der Kompatibilitätsmodi für die 32 Bit und 16 Bit Verarbeitung, während die Freigabeangabe für den ersten Betriebsmodus in dem Steuerregister in dem frei gegebenen Zustand bleibt, die Kompatibilität der Software vereinfacht werden. Zum Beispiel kann ein Betriebssystem, das programmiert ist, um Vorteil aus dem ersten Betriebsmodus zu ziehen, trotzdem Anwendungen starten, die für 32 oder 16 Bit Modi geschrieben sind. Der Prozessor kann in dem ersten Betriebsmodus arbeiten, während er Code des Betriebssystems ausführt. Während der Ausführung von Code von Anwendungen kann der Prozessor in dem 32 oder 16 Bit Modus arbeiten (wie geleitet durch die Angaben zu dem ersten und zweiten Betriebsmodus in den entsprechenden Segmentdeskriptoren). Jedoch kann, wenn ein Aufruf an das Betriebssystem ausgeführt wird oder wenn eine Ausnahme oder ein Interrupt die Ausführung des Codes des Betriebssystems veranlasst, die Freigabeangabe dem Prozessor anzeigen, dass der Code des Betriebssystems in dem ersten Betriebsmodus sein kann und damit dem ersten Betriebsmodus erlauben, an dem Schalter eingerichtet zu werden (basierend auf den Angaben zu dem ersten und zweiten Betriebsmodus in dem Segmentdeskriptor, der dem Betriebssystem entspricht).
  • Des weiteren kann der Prozessor den 16 und den 32 Bit x86 Betriebsmodus unterstützen, falls die Freigabeangabe in dem Steuerregister in dem gesperrten Zustand ist. Die Angabe für den ersten Betriebsmodus muss nicht definiert sein, wenn die Freigabeangabe gesperrt ist, und die Angabe für den zweiten Betriebsmodus kann bestimmen, ob der Betriebsmodus des Prozessors 16 oder 32 Bit ist. Derartige Modi können zum Beispiel verwendet werden, falls der Prozessor einen Segmentdeskriptor unterstützt, der die Angabe für den ersten Betriebsmodus auf eine unterschiedliche Weise definiert.
  • Allgemein betrachtet und in Übereinstimmung mit einem Aspekt der Erfindung wird ein Prozessor zur Verfügung gestellt, insbesondere wie in Anspruch 1 definiert. Der Prozessor weist ein Segmentregister und ein Steuerregister auf. Das Segmentregister ist konfiguriert zum Speichern eines Segmentselektors, welcher einen Segmentdeskriptor identifiziert, einschließlich einer Angabe für den ersten Betriebsmodus und einer Angabe für den zweiten Betriebsmodus. Das Steuerregister ist konfiguriert, um eine Freigabeangabe zu speichern. In Antwort auf die Freigabeangabe, der Angabe für den ersten Betriebsmodus und der Angabe für den zweiten Betriebsmodus ist der Prozessor konfiguriert, dass er einen Betriebsmodus einnimmt, dieser Betriebsmodus gibt eine voreingestellte Operandengröße und eine voreingestellte Adressgröße für Befehle an, welche der Prozessor auszuführen konfiguriert ist.
  • Wie in dem Anspruch 11 definiert kann der Segmentselektor einen Index für eine Segmentdeskriptortabelle aufweisen, die in einem Speicher gespeichert ist, mit dem der Prozessor gekoppelt ist, wobei der Segmentdeskriptor in einem Eintrag in der Segmentdeskriptortabelle gespeichert ist, der durch den Index angegeben ist, wobei der Prozessor zum Lesen des Segmentdeskriptors aus der Segmentdeskriptortabelle in Reaktion auf den Segmentselektor konfiguriert ist, und der Prozessor derart konfiguriert ist, dass er in Reaktion auf den frei gegebenen Zustand der Freigabeangabe und den ersten Zustand der Angabe für den Betriebsmodus in einem Betriebsmodus arbeitet, in dem virtuelle Adressen größer als 32 Bit sind.
  • In Übereinstimmung mit einem weiteren Aspekt der Erfindung wird ein Verfahren zur Verfügung gestellt, insbesondere wie in dem Anspruch 17 definiert. Ein Betriebsmodus wird von einem Prozessor eingenommen in Reaktion auf eine Freigabeangabe in einem Steuerregister in dem Prozessor, eine Angabe für einen ersten Betriebsmodus in einem Segmentdeskriptor und eine Angabe für einen zweiten Betriebsmodus in dem Segmentdeskriptor. Dieser Betriebsmodus gibt eine voreingestellte Operandengröße und eine voreingestellte Adressgröße für Befehle an, welche der Prozessor auszuführen konfiguriert ist.
  • Kurze Beschreibung der Zeichnungen
  • Weitere Ziele und Vorteile der Erfindung werden bei dem Studium der folgenden detaillierten Beschreibung und bei der Bezugnahme auf die begleitenden Zeichnungen offenbar werden, in denen:
  • 1 ein Blockdiagramm eines Ausführungsbeispiels eines Prozessors ist.
  • 2 ein Blockdiagramm eines Ausführungsbeispiels eines Segmentdeskriptors für den 32/64 Bit Modus ist.
  • 3 ein Blockdiagramm eines Ausführungsbeispiels eines Segmentdeskriptors für den Kompatibilitätsmodus ist.
  • 4 ein Blockdiagramm des Betriebs in dem Kompatibilitätsmodus und in dem Legacymodus ist, in Übereinstimmung mit dem in 1 gezeigten Ausführungsbeispiel des Prozessors.
  • 5 eine Tabelle ist, die ein Ausführungsbeispiel der Betriebsmodi als eine Funktion der Werte des Segmentdeskriptors und des Steuerregisters darstellt.
  • 6 eine Tabelle ist, die ein Ausführungsbeispiel der Verwendung von Befehlspräfixen zur Übersteuerung von voreingestellten Betriebsmodi darstellt.
  • 7 ein Blockdiagramm ist von einem Ausführungsbeispiel eines Registers ist.
  • 8 ein Diagramm ist, das ein Ausführungsbeispiel einer globalen Registertabelle und einer lokalen Registertabelle darstellt.
  • 9 ein Blockdiagramm eines Ausführungsbeispiels von einem 32/64 Aufruftor Deskriptor.
  • 10 ein Blockdiagramm eines Befehlsformats ist.
  • 11 ein Blockdiagramm eines Ausführungsbeispiels von einem Computersystem ist, das den in 1 gezeigten Prozessor enthält.
  • 12 ein Blockdiagramm eines weiteren Ausführungsbeispiels von einem Computersystem ist, das den in 1 gezeigten Prozessor enthält.
  • Während die Erfindung verschiedenen Modifikationen und alternativen Ausbildungen unterworfen werden kann, sind bestimmte Ausführungsbeispiele davon in den Zeichnungen beispielhaft gezeigt und werden hier detailliert beschrieben. Es sollte jedoch verstanden werden, dass die Zeichnungen und die detaillierte Beschreibung dazu nicht beabsichtigt sind, die Erfindung auf die bestimmte offenbarte Form zu beschränken, sondern dass die Erfindung vielmehr alle Modifikationen, Äquivalente und Alternativen umfassen soll, wie sie von den beigefügten Ansprüchen definiert sind.
  • Detaillierte Beschreibung der bevorzugten Ausführungsbeispiele
  • Nun 1 zuwendend ist ein Blockdiagramm gezeigt, das ein Ausführungsbeispiel eines Prozessors 10 darstellt. Weitere Ausführungsbeispiele sind möglich und werden betrachtet. In dem Ausführungsbeispiel aus 1 enthält der Prozessor 10 einen Befehls-Cachespeicher 12, einen Ausführungskern 14, einen Daten-Cachespeicher 16, eine externe Schnittstelleneinheit 18, eine Speicherverwaltungseinheit (MMU) 20 und eine Registerdatei 22. In dem dargestellten Ausführungsbeispiel enthält die MMU 20 einen Satz von Segmentregistern 24, ein erstes Steuerregister 26, ein zweites Steuerregister 28, ein Register für die lokale Deskriptortabelle (LDTR) 30 und ein Register für die globale Deskriptortabelle (GDTR) 32. Der Befehls-Cachespeicher 12 ist an die externe Schnittstelleneinheit 18, den Ausführungskern 14 und die MMU 20 angeschlossen. Der Ausführungskern 14 ist des weiteren an die MMU 20, die Registerdatei 22 und den Daten-Cachespeicher 16 angeschlossen. Der Daten-Cachespeicher 16 ist des weiteren an die MMU 20 und die externe Schnittstelleneinheit 18 angeschlossen. Die externe Schnittstelleneinheit 18 ist ferner an die MMU 20 und die externe Schnittstelle angeschlossen.
  • Im Allgemeinen verwendet der Prozessor 10 eine Prozessorarchitektur, die mit der x86 Architektur kompatibel ist, und enthält zusätzliche architekturale Eigenschaften, um die 64 Bit Verarbeitung zu unterstützen. Der Prozessor 10 ist konfiguriert, um einen Betriebsmodus in Reaktion auf Information einzurichten, die in einem Codesegmentdeskriptor entsprechend dem derzeitigen Ausführungscode gespeichert ist, und ferner in Antwort auf eine oder mehrere Freigabeangaben, die in einem oder mehreren Steuerregistern gespeichert sind. Wie hier verwendet, gibt ein "Betriebsmodus" voreingestellte Werte für zahlreiche, von einem Programm auswählbare Merkmale des Prozessors an. Zum Beispiel kann der Betriebsmodus eine voreingestellte Operandengröße und eine voreingestellte Adressgröße angeben. Die voreingestellte Operandengröße gibt die Anzahl von Bits in einem Operanden eines Befehls an, es sei denn eine Kodierung eines Befehls übersteuert die Voreinstellung. Die voreingestellte Adressgröße gibt die Anzahl von Bits in einer Adresse eines Speicheroperanden eines Befehls an, es sei denn ein Kodierung eines Befehls übersteuert die Voreinstellung. Die voreingestellte Adressgröße gibt die Größe von zumindest der virtuellen Adresse von Speicheroperanden an, und kann auch die Größe der physikalischen Adresse angeben. Alternativ kann die Größe der physikalischen Adresse unabhängig von der voreingestellten Adressgröße sein und kann stattdessen von dem unten beschriebenen LME Bit (zum Beispiel kann die physikalische Adresse 32 Bit sein, falls das LME Bit nicht gesetzt ist, und kann eine von der Implementierung abhängige Größe von mehr als 32 Bit und weniger als 64 Bit sein, wenn das LME Bit gesetzt ist) oder von einem anderen Steuerbit (zum Beispiel dem Erweiterungsbit für die physikalische Adresse oder PAE Bit in einem anderen Steuerregister) abhängig sein. Wie hier verwendet ist eine "virtuelle Adresse" eine Adresse, die vor der Übersetzung durch einen Mechanismus zur Adressübersetzung (zum Beispiel Abbildungsmechanismus) in eine "physikalische" Adresse, welche die Adresse ist, die tatsächlich zum Zugriff auf einen Speicherverwendet wird, erzeugt wird. Des weiteren ist ein "Segmentdeskriptor", wie hier verwendet, eine von Software geschaffene Datenstruktur und wird von dem Prozessor verwendet, um die Steuerung und den Zustand des Zugriffs für ein Segment des Speichers zu definieren. Eine "Segmentdeskriptortabelle" ist eine Tabelle im Speicher mit mehreren Einträgen, wobei jeder Eintrag fähig ist zur Speicherung eines Segmentdeskriptors.
  • In dem dargestellten Ausführungsbeispiel erzeugt die MMU 20 einen Betriebsmodus und befördert den Betriebsmodus zu dem Ausführungskern 14. Der Ausführungskern 14 führt Befehle unter Verwendung des Betriebsmodus aus. Genauer gesagt holt der Ausführungskern 14 Operanden, welche die voreingestellte Operandengröße haben, von der Registerdatei 22 oder dem Speicher (durch den Daten-Cachespeicher 16, wenn die Speicheroperanden zwischen gespeichert werden können und dort treffen, oder durch die externe Schnittstelleneinheit 18, wenn die Speicheroperanden nicht zwischen gespeichert werden können oder den Daten-Cachespeicher 16 fehl treffen), wenn nicht eine bestimmte Kodierung des Befehls die voreingestellte Operandengröße übersteuert, in welchem Fall die übersteuernde Adressgröße verwendet wird. In weiteren Ausführungsbeispielen kann die Information, die zur Erzeugung des Betriebsmodus verwendet wird, lokal in Bereichen des Prozessors 10 angebildet werden, die den Betriebsmodus verwenden (zum Beispiel der Ausführungskern 14), und der Betriebsmodus kann von den lokalen Abbildungskopien bestimmt werden.
  • Wie zuvor erwähnt erzeugt die MMU 20 den Betriebsmodus in Antwort auf einen Codesegmentdeskriptor, der dem auszuführenden Code entspricht, und ferner in Antwort auf einen oder mehrere Werte in den Steuerregistern. Information von dem Codesegmentdeskriptor wird in einem der Segmentregister 24 gespeichert (ein Register, auf das als CS oder Codesegment Bezug genommen wird). Zusätzlich speichert das Steuerregister 26 eine Freigabeangabe (LME), die verwendet wird, um einen Betriebsmodus, in dem die voreingestellte Adressgröße größer als 32 Bit ist ("32/64 Modus"), und auch gewisse Kompatibilitätsmodi für die 32 Bit und 16 Bit Betriebsmodi freizugeben. Die voreingestellte Operandengröße kann 32 Bit in dem 32/64 Modus sein, aber Befehle können die voreingestellte 32 Bit Operandengröße mit einer 64 Bit Operandengröße übersteuern, falls dies gewünscht ist. Falls die LME Angabe in einem frei gegebenen Zustand ist, kann dann der 32/64 Modus zusätzlich zu den 32 Bit und 64 Bit Modi verwendet werden. Falls die LME Angabe in einem nicht frei gegebenen Zustand ist, dann ist der 32/64 Bit Modus verhindert. In einem Ausführungsbeispiel kann die voreingestellte Adressgröße in dem 32/64, Bit Modus abhängig von der Implementierung sein, aber kann jeder Wert bis zu und einschließlich 64 Bit sein. Des weiteren kann die Größe der virtuellen Adresse in einer gegebenen Implementierung sich von der Größe der physikalischen Adresse in dieser Implementierung unterscheiden.
  • Es ist zu bemerken, dass die Freigabeangaben hier als Bits mit dem frei gegebenen Zustand in dem gesetzten Zustand des Bits und dem nicht frei gegebenen Zustand in dem freien Zustand des Bits beschrieben werden können. Jedoch sind auch andere Kodierungen möglich, einschließlich Kodierungen, in denen mehrere Bits verwendet werden, und Kodierungen, in denen der frei gegebene Zustand der freie Zustand ist und der nicht frei gegebene Zustand der gesetzte Zustand ist. Entsprechend kann der Rest dieser Beschreibung auf die LME Angabe in dem Steuerregister 26 als das LME Bit verweisen, wobei der frei gegebene Zustand gesetzt sei und der nicht frei gegebene Zustand frei sei. Jedoch werden andere Kodierungen der LME Angabe betrachtet, wie weiter ausgeführt ist.
  • Die Segmentregister 24 speichern Information von den Segmentdeskriptoren, die derzeit von dem Code verwendet werden, der von dem Prozessor 10 ausgeführt wird. Wie zuvor erwähnt, ist CS eines der Segmentregister 24 und gibt das Codesegment des Speichers an. Das Codesegment speichert den Code, der ausgeführt wird. Weitere Segmentregister können verschiedene Datensegmente definieren (zum Beispiel ein Stapeldatensegment, definiert durch das SS Segmentregister und bis zu vier Datensegmente, definiert durch die DS, ES, FS und GS Segmentregister). 1 stellt die Inhalte eines beispielhaften Segmentregisters 24A einschließlich eines Selektorfeldes 24AA und Deskriptorfeldes 24AB dar. Das Selektorfeld 24AA wird mit einem Segmentselektor geladen, um ein bestimmtes Segment in Reaktion auf gewisse von dem Ausführungskern 14 ausgeführte Segment-Ladebefehle zu aktivieren. Der Segmentselektor identifiziert den Segmentdeskriptor in einer Segmentdeskriptortabelle in dem Speicher. Genauer gesagt kann der Prozessor 10 zwei Segmentdeskriptortabellen verwenden: eine lokale Deskriptortabelle und eine globale Deskriptortabelle. Die Basisadresse der lokalen Deskriptortabelle ist in dem LDTR 30 gespeichert. Auf ähnliche Weise ist die Basisadresse der globalen Deskriptortabelle in dem GDTR 32 gespeichert. Ein Bit in dem Segmentselektor (das Tabellenindikatorbit) wählt die Deskriptortabelle aus und der Rest des Segmentselektors wird als ein Index in die ausgewählte Tabelle verwendet. Wenn ein Befehl einen Segmentselektor in eines der Segmentregister 24 lädt, liest die MMU 20 den entsprechenden Segmentdeskriptor aus der ausgewählten Segmentdeskriptortabelle aus und speichert Information von dem Segmentdeskriptor in das Segmentdeskriptorfeld (zum Beispiel Segmentdeskriptorfeld 24AB für das Segmentregister 24A). Die in dem Segmentdeskriptorfeld gespeicherte Information kann jeden geeigneten Untersatz des Segmentdeskriptors einschließlich aller der Segmentdeskriptoren enthalten, falls gewünscht. Zusätzlich kann weitere Information, die von dem Segmentdeskriptor oder anderen Quellen abgeleitet ist, in dem Feld des Segmentdeskriptors gespeichert werden. Zum Beispiel kann ein Ausführungsbeispiel die Angaben zu dem Betriebsmodus von dem Codesegmentdeskriptor dekodieren und den dekodierten Wert statt der ursprünglichen Werte der Angaben zu dem Betriebsmodus speichern. Falls ein Befehl ein Laden von CS mit einem Segmentselektor veranlasst, kann sich das Codesegment ändern und damit kann sich der Betriebsmodus des Prozessors 10 ändern. Die Segmentdeskriptortabellen werden folgend detaillierter beschrieben.
  • In einem Ausführungsbeispiel wird lediglich das CS Segmentregister in dem 32/64 Modus verwendet. Die Datensegmentregister werden nicht berücksichtigt. In den 16 und 32 Bit Modi können das Codesegment und die Datensegmente aktiv sein. Des weiteren kann eine zweite Freigabeangabe (PE) in dem Steuerregister 28 den Betrieb der MMU 20 beeinflussen. Die PE Freigabeangabe kann verwendet werden, um den Protected Mode frei zu geben, in dem Mechanismen zur Segmentierung und/oder zur abbildenden Übersetzung von Adressen verwendet werden. Falls die PE Freigabeangabe in dem nicht frei gegebenen Zustand ist werden die Mechanismen zur Segmentierung und zur Abbildung verhindert und der Prozessor 10 ist in dem "Real Mode" (in dem von dem Ausführungskern 14 erzeugte Adressen physikalische Adressen sind). Ähnlich zu der LME Angabe kann die PE Angabe ein Bit sein, in dem der frei gegebene Zustand ist, wenn das Bit gesetzt ist, und der nicht frei gegebene Zustand ist, wenn das Bit nicht gesetzt ist. Jedoch werden weitere Ausführungsbeispiele betrachtet, wie oben beschrieben ist.
  • Es ist zu bemerken, dass die MMU 20 zusätzliche Hardwaremechanismen verwenden kann, falls gewünscht. Zum Beispiel kann die MMU 20 eine Abbildungshardware enthalten, um eine abbildende Adressübersetzung von virtuellen Adressen in physikalische Adressen zu implementieren. Die Abbildungshardware kann einen Übersetzungsseitenblickpuffer (TLB) zum Speichern von abbildenden Übersetzungen enthalten.
  • Es ist zu bemerken, dass die Steuerregister 26 und 28 als architekturisierte Steuerregister implementiert sein können (zum Beispiel kann das Steuerregister 26 CR4 sein und das Steuerregister 28 kann CR0 sein). Alternativ kann eines oder beide der Steuerregister als Modell spezifisches Register implementiert sein, um andere Verwendungen der architekturisierten Steuerregister ohne Beeinflussung des 32/64 Modus zu erlauben.
  • Im Allgemeinen ist der Befehls-Cachespeicher 12 ein Cachespeicher mit hoher Geschwindigkeit zum Speichern von Befehlsbytes. Der Ausführungskern 14 holt Befehle von dem Befehls-Cachespeicher 12 zur Ausführung. Der Befehls-Cachespeicher 12 kann jede geeignete Organisation des Cachespeichers verwenden, einschließlich direkt abbildender, Satz assoziativer und vollständig assoziativer Konfigurationen. Falls ein Holen eines Befehls in dem Befehls-Cachespeicher 12 nicht trifft, kann der Befehls-Cachespeicher 12 mit der externen Schnittstelleneinheit 18 kommunizieren, um die fehlende Zeile des Cachespeichers in den Befehls-Cachespeicher 12 einzufügen. Des weiteren kann der Befehls-Cachespeicher 12 mit der MMU 20 kommunizieren, um physikalische Adressübersetzungen für virtuelle Adressen zu empfangen, die von dem Befehls-Cachespeicher 12 geholt wurden.
  • Der Ausführungskern 14 führt die aus dem Befehls-Cachespeicher 12 geholten Befehle aus. Der Ausführungskern 14 holt Registeroperanden aus der Registerdatei 22 und aktualisiert die Zielregister in der Registerdatei 22. Die Größe der Registeroperanden wird von dem Betriebsmodus und beliebigen Übersteuerungen des Betriebsmodus für einen bestimmten Befehl gesteuert. Auf ähnliche Weise holt der Ausführungskern 14 Speicheroperanden aus dem Daten-Cachespeicher 16 und aktualisiert Zielspeicherstellen in dem Daten-Cachespeicher 16, abhängig von der Möglichkeit, die Speicheroperanden zwischen zu speichern, und dem Treffen in dem Daten-Cachespeicher 16. Die Größe der Speicheroperanden wird ähnlich von dem Betriebsmodus und beliebigen Übersteuerungen des Betriebsmodus für einen bestimmten Befehl gesteuert. Des weiteren wird die Größe der Adressen der Speicheroperanden, die von dem Ausführungskern 14 erzeugt wurden, von dem Betriebsmodus und beliebigen Übersteuerungen des Betriebsmodus für einen bestimmten Befehl gesteuert.
  • Der Ausführungskern 14 kann jegliche geeignete Konstruktion verwenden. Zum Beispiel kann der Ausführungskern 14 ein Kern mit Superpipeline, ein superskalarer Kern oder eine Kombination davon sein. Der Ausführungskern 14 kann eine außer der Reihe spekulative Ausführung oder eine Ausführung in Reihenfolge verwenden, in Übereinstimmung mit der Wahl des Entwicklers.
  • Die Registerdatei 22 kann 64 Bit Register enthalten, auf welche als 64 Bit, 32 Bit, 16 Bit oder 8 Bit Register zugegriffen werden kann, wie von dem Betriebsmodus des Prozessors 10 und jeglichen Übersteuerungen für einen bestimmten Befehl angegeben ist. Das Format des Registers ist für ein Ausführungsbeispiel im Hinblick auf 7 beschrieben. Die in der Registerdatei 22 enthaltenen Register können die LEAX, LEBX, LECX, LEDX, LEDI, LESI, LESP und LEBP Register enthalten. Die Registerdatei 22 kann des weiteren die LEIP Register enthalten. Alternativ kann der Ausführungskern 14 eine Form der Registerumbenennung verwenden, bei der jedes Register in der Registerdatei 22 auf ein architekturisiertes Register abgebildet werden kann. Die Anzahl der Register in der Registerdatei 22 kann für ein derartiges Ausführungsbeispiel abhängig von der Implementierung sein.
  • Der Daten-Cachespeicher 16 ist ein Cachespeicher mit hoher Geschwindigkeit, der zum Speichern von Daten konfiguriert ist. Der Daten-Cachespeicher 16 kann jegliche geeignete Organisation für den Cachespeicher verwenden, einschließlich direkt abgebildeter, Satz assoziativer und vollständig assoziativer Konfigurationen. Falls ein Abrufvorgang von Daten oder eine Aktualisierung in dem Daten-Cachespeicher 16 nicht trifft, kann der Daten-Cachespeicher 16 mit der externen Schnittstelleneinheit 18 kommunizieren, um die fehlende Zeile des Cachespeichers in den Daten-Cachespeicher 16 zu laden. Des weiteren verwendet der Daten-Cachespeicher 16 eine Rückschreibstrategie für den Cachespeicher, aktualisierte Zeilen des Cachespeichers, die aus dem Daten-Cachespeicher 16 ausgeworfen werden, können der externe Schnittstelleneinheit 18 mitgeteilt werden, um in den Speicher zurückgeschrieben zu werden. Der Daten-Cachespeicher 16 kann mit der MMU 20 kommunizieren, um die physikalischen Adressübersetzungen für die virtuellen Adressen zu empfangen, die de, Daten-Cachespeicher 16 präsentiert werden.
  • Die externe Schnittstelleneinheit 18 kommuniziert mit Teilen des Systems, das extern zu dem Prozessor 10 ist. Die externe Schnittstelleneinheit 18 kann Zeilen des Cachespeichers wie oben beschrieben für den Befehls-Cachespeicher 12 und den Daten-Cachespeicher 16 kommunizieren und kann auch mit der MMU 20 kommunizieren. Zum Beispiel kann die externe Schnittstelleneinheit 18 auf die Segmentdeskriptortabellen und/oder die Abbildungstabellen im Namen der MMU 20 zugreifen.
  • Es ist zu bemerken, dass der Prozessor 10 einen integrierten Level 2 (L2) Cachespeicher enthalten kann, falls gewünscht. Des weiteren kann die externe Schnittstelleneinheit 18 konfiguriert sein, um mit einem Rückseiten Cachespeicher zu kommunizieren, zusätzlich zu der Kommunikation mit dem System.
  • Nun Bezug nehmend auf 2 ist ein Blockdiagramm von einem Ausführungsbeispiel eines Codesegmentdeskriptors 40 für den 32/64 Modus gezeigt. Weitere Ausführungsbeispiele sind möglich und werden betrachtet. In dem Ausführungsbeispiel von 2 weist der Codesegmentdeskriptor 40 8 Byte auf, wobei die höchstwertigen 4 Bytes über den niedrigwertigsten 4 Bytes dargestellt sind. Die höchstwertigen vier Bytes werden an einer numerisch größeren Adresse gespeichert als die niedrigwertigsten vier Bytes. Das höchstwertige Bit von jeder Gruppe von vier Byte ist in 2 (und 3 unten) als Bit 31 dargestellt und das niedrigstwertige Bit ist als Bit 0 dargestellt. Kurze vertikale Linien innerhalb der vier Byte trennen jedes Bit voneinander und die langen vertikalen Linien trennen ein Bit, aber auch ein Feld voneinander (sowohl in 2 als auch in 3).
  • Anders als die in 3 unten dargestellten 32 Bit und 16 Bit Codesegmentdeskriptoren enthält der Codesegmentdeskriptor 40 keine Basisadresse oder Grenze. Der Prozessor 10 verwendet einen flachen virtuellen Adressraum für den 32/64 Modus (anstatt des segmentierten linearen Adressraums, der in den 32 Bit und 16 Bit Modi verwendet wird). Entsprechend sind die Bereiche des Codesegmentdeskriptors 40, welche anderenfalls die Basisadresse und -grenze speichern würden, in dem Segmentdeskriptor 40 reserviert. Es ist zu bemerken, dass eine durch Segmentierung zur Verfügung gestellte virtuelle Adresse hier auch als eine "lineare Adresse" bezeichnet werden kann. Der Ausdruck "lineare Adresse" umfasst jegliche Adresse, die mittels eines Übersetzungsmechanismus in eine physikalische Adresse übersetzt wird, die tatsächlich verwendet wird, um Speicher zu adressieren, einschließlich linearer Adressen und anderen virtuellen Adressen, die in nicht segmentierten Architekturen erzeugt werden.
  • Der Segmentdeskriptor 40 enthält ein D Bit 42, ein L Bit 44 (für ein 32/64 Modus Codesegment auf Eins gesetzt), ein Verfügbar Bit (AVL) 46, eine Vorhanden (P) Bit 48, ein Deskriptor Privilegierungsstufe (DPL) 50 und ein Typ Feld 52. Das D Bit 42 und das L Bit 44 werden verwendet, um die Betriebsmodus des Prozessors 10 zu bestimmen, wie in 5 unten dargestellt. Das AVL Bit 46 steht zur Benutzung durch Systemsoftware zur Verfügung (zum Beispiel das Betriebssystem). Das P Bit 48 wird verwendet, um anzuzeigen, ob das Segment in dem Speicher vorhanden ist oder nicht. Falls das P Bit 48 gesetzt ist, ist das Segment vorhanden und der Code kann aus dem Segment geholt werden. Falls das P Bit 48 frei ist, ist das Segment nicht vorhanden und eine Ausnahme wird erzeugt, um das Segment in den Speicher zu laden (zum Beispiel von einem Plattenspeicher oder über eine Netzwerkverbindung). Die DPL zeigt die Privilegierungsstufe des Segments an. Der Prozessor 10 verwendet vier Privilegierungsstufen (kodiert als 0 bis 3 in dem DPL Feld, wobei die Stufe 0 die am höchsten privilegierte Stufe ist). Gewisse Befehle und Ressourcen des Prozessors (zum Beispiel Konfigurations- und Steuerregister) sind nur ausführbar oder auf sie kann nur in den privilegierteren Stufen zugegriffen werden und Versuche, in den unteren Privilegierungsstufen diese Befehle auszuführen oder auf diese Ressourcen zuzugreifen führen zu einer Ausnahme. Wenn Information von dem Segmentdeskriptor 40 in das CS Segmentregister geladen wird, wird die DPL die aktuelle Privilegierungsstufe (CPL) des Prozessors 10. Das Typ Feld 52 kodiert den Typ des Segments. Für Codesegmente können die beiden höchstwertigen Bits des Typ Felds 52 gesetzt sein (das höchstwertige Bit unterscheidet ein Code- oder Datensegment von einem Systemsegment und das zweitwertigste Bit unterscheidet ein Codesegment von einem Datensegment) und die verbleibenden Bits können zusätzliche Information über den Typ des Segments kodieren (zum Beispiel nur Ausführung, Ausführung und Lesen oder Ausführung und nur Lesen, Anpassung und ob auf das Codesegment zugegriffen worden ist oder nicht).
  • Es ist zu bemerken, dass während zahlreiche Angaben in dem Codesegmentdeskriptor als Bits beschrieben wurden, wobei gesetzte und freie Werte definierte Bedeutungen haben, andere Ausführungsbeispiele die entgegengesetzten Kodierungen verwenden können und falls gewünscht mehrere Bits verwenden können. Daher können zum Beispiel das D Bit 42 und das L Bit 44 jeweils ein Beispiel ei ner Angabe für den Betriebsmodus sein, die, wie gewünscht, ein oder mehrere Bits sein können, ähnlich zu der Diskussion der Freigabeangaben oben.
  • Nun Bezug nehmend auf 3 ist ein Blockdiagramm eines Ausführungsbeispiels eines Codesegmentdeskriptors 54 für den 32 und den 16 Bit Kompatibilitätsmodus gezeigt. Weitere Ausführungsbeispiele sind möglich und werden betrachtet. Wie bei dem Ausführungsbeispiel aus 2 weist der Codesegmentdeskriptor 54 8 Byte auf, wobei die höchstwertigen 4 Bytes über den niedrigstwertigen 4 Bytes dargestellt sind.
  • Der Codesegmentdeskriptor 54 enthält ein D Bit 42, ein L Bit 44, ein AVL Bit 46, ein P Bit 48, ein DPL 50 und ein Typ Feld 52 ähnlich zu der obigen Beschreibung des Codesegmentdeskriptors 40. Zusätzlich enthält der Codesegmentdeskriptor 54 ein Basisadress Feld (Bezugszeichen 56A, 56B und 56C), ein Grenzfeld (Bezugszeichen 57A und 57B) und ein G Bit 58. Das Basisadress Feld speichert eine Basisadresse, welche zu der logischen Abrufadresse (gespeichert in dem LEIP Register) addiert wird, um die lineare Adresse eines Befehls zu bilden, die dann optional mittels eines Abbildungsübersetzungsmechanismus in eine physikalische Adresse übersetzt werden kann. Das Grenzfeld speichert eine Segmentgrenze, welche die Größe des Segments definiert. Versuche auf ein Byte an einer logischen Adresse zuzugreifen, die größer ist als die Segmentgrenze, sind nicht erlaubt und verursachen eine Ausnahme. Das G Bit 58 bestimmt die Skalierung des Segmentgrenzenfeldes. Falls das G Bit 58 gesetzt ist, ist die Grenze auf 4K Byte Seiten skaliert (zum Beispiel 12 niedrigstwertige Nullen werden der Grenze in dem Grenzfeld hinzugefügt). Falls das G Bit 58 frei ist, wird die Grenze verwendet wie sie ist.
  • Es ist zu bemerken, dass die Codesegmentdeskriptoren für die 32 und 16 Bit Modi, wenn der 32/64 Modus nicht über das LME Bit in dem Steuerregister 26 frei gegeben ist, ähnlich zu dem Codesegmentdeskriptor 54 sein können, außer dass das L Bit reserviert ist und definiert ist, Null zu sein. Es ist ferner zu bemerken, dass in den 32 und 16 Bit Modi (sowohl Kompatibilitätsmodus mit dem LME Bit gesetzt als auch Modi mit dem LME Bit frei) in Übereinstimmung mit einem Ausführungsbeispiel die Datensegmente ebenfalls benutzt werden. Die Deskriptoren für die Datensegmente können ähnlich sein zu dem Codesegmentdeskriptor 54, mit der Ausnahme, dass das D Bit 42 definiert ist, die obere Grenze des Segments anzuzeigen oder die voreingestellte Stapelgröße (für Stapelsegmente) zu definieren.
  • Nun Bezug nehmend auf 4 ist ein Diagramm gezeigt, das beispielhafte Verwendungen des LME Bits in dem Steuerregister 26 und der Kompatibilitätsmodi darstellt, um einen hohen Grad an Flexibilität bei der Implementierung des 32/64 Modus und der 32 und 16 Bit Modi zu erlauben. Ein Kasten 60 stellt den beispielhaften Betrieb dar, wenn das LME Bit gesetzt ist, und ein Kasten 62 stellt den beispielhaften Betrieb dar, wenn das LME Bit frei ist.
  • Wie in dem Kasten 60 dargestellt, können die unterstützten Kompatibilitätsmodi, wenn das LME Bit gesetzt ist, ein 64 Bit Betriebssystem (das heißt ein Betriebssystem, das entworfen wurde, um Vorteile aus den virtuellen und physikalischen Adressräumen über 32 Bit hinaus und/oder Datenoperanden von 64 Bit zu ziehen) erlauben, um mit einem 32 Bit Anwendungsprogramm (das heißt einem Anwendungsprogramm zu arbeiten, das unter Verwendung von 32 Bit Operanden und Adressgrößen geschrieben wurde). Das Codesegment für das Betriebssystem kann von dem in 2 dargestellten 32/64 Modus Codesegmentdeskriptor 40 definiert sein, und daher kann das L Bit gesetzt sein. Entsprechend kann das Betriebssystem Vorteil aus dem erweiterten virtuellen Adressraum und dem physikalischen Adressraum für den Code des Betriebssystems und den von dem Betriebssystem unterhaltenen Datenstrukturen (einschließlich zum Beispiel der Segmentdeskriptortabellen und der Abbildungsübersetzungstabellen) ziehen. Das Betriebssystem kann auch den 64 Bit Datentyp, der in dem 32/64 Modus definiert ist, unter Verwendung von Befehlskodierungen verwenden, welche die voreingestellte 32 Bit Operandengröße übersteuern. Des weiteren kann das Betriebssystem ein 32 Bit Anwendungsprogramm starten durch Einrichten eines oder mehrerer 32 Bit Kompatibilitätsmodus Segmentdeskriptoren (L Bit frei, D Bit gesetzt, zum Beispiel der in 2 gezeigte Segmentdeskriptor 54) in der Segmentdeskriptortabelle und Verzweigen in eines der Kompatibilitätsmodus Segmente. Auf ähnliche Weise kann das Betriebssystem ein 16 Bit Anwendungsprogramm starten durch Einrichten eines oder mehrerer 16 Bit Kompatibilitätsmodus Segmentdeskriptoren (L Bit frei, D Bit frei, zum Beispiel der in 2 gezeigte Segmentdeskriptor 54) in der Segmentdeskriptortabelle und Verzweigen in eines der Kompatibilitätsmodus Segmente. Entsprechend kann ein 64 Bit Betriebssystem die Fähigkeit behalten, existierende 32 Bit und 16 Bit Anwendungsprogramme in dem Kompatibilitätsmodus auszuführen. Ein bestimmtes Anwendungsprogramm kann in den 32/64 Modus geleitet werden, wenn die erweiterten Fähigkeiten für dieses Programm gewünscht sind, oder kann bei 32 Bit oder 16 Bit verbleiben.
  • Während der Prozessor 10 das 32 Bit Anwendungsprogramm ausführt, ist der Betriebsmodus des Prozessors 10 32 Bit. Daher kann das Anwendungsprogramm im Allgemeinen auf die gleiche Weise ausführen wie es dies in einem 32 Bit Modus mit nicht gesetztem LME Bit tut (zum Beispiel wenn das Betriebssystem auch ein 32 Bit Betriebssystem ist). Jedoch kann das Anwendungsprogramm einen Dienst des Betriebssystems aufrufen, eine Ausnahme erfahren oder abschließen. In jedem dieser Fälle kann der Prozessor 10 zu der Ausführung von Code des Betriebssystems zurückkehren (wie in 4 durch den Pfeil 64 dargestellt). Da der Code des Betriebssystems in dem 32/64 Modus arbeitet, kann die Adresse der Dienstroutine des Betriebssystems, der Ausnahmebehandler, usw. 32 Bit überschreiten. Daher kann der Prozessor 10 genötigt sein, eine Adresse größer als 32 Bit zu erzeugen, bevor er zu dem Code des Betriebssystems zurückkehrt. Das LME Bit stellt dem Prozessor 10 eine Angabe zur Verfügung, dass das Betriebssystem in dem 32/64 Bit Modus arbeiten könnte, sogar obwohl der derzeitige Betriebsmodus 32 Bit ist, und daher der Prozessor 10 den größeren Adressraum für Aufrufe und Ausnahmen des Betriebssystems zur Verfügung stellen kann.
  • In einem Ausführungsbeispiel werden Ausnahmen behandelt unter Verwendung von Interrupt Segmentdeskriptoren, die in einer Interrupt Segmentdeskriptortabelle gespeichert sind. Falls das LME Bit gesetzt ist, können die Interrupt Segmentdeskriptoren 16 Byte Einträge sein, welche eine 64 Bit Adresse der Routine des Betriebssystems, welche die Ausnahme behandelt, enthält. Falls das LME Bit nicht gesetzt ist, können die Interrupt Segmentdeskriptoren acht Byte Einträge sein, welche eine 32 Bit Adresse enthalten. Entsprechend greift der Prozessor 10 auf die Interrupt Segmentdeskriptortabelle in Reaktion auf die LME Angabe zu (das heißt Lesen eines 16 Byte Eintrags, falls das LME Bit gesetzt ist, und Lesen eines acht Byte Eintrags, wenn das LME Bit frei ist). Daher können Ausnahmen von dem 64 Bit Betriebssystem behandelt werden, sogar obwohl das Anwen dungsprogramm in dem 32 Bit Kompatibilitätsmodus ausführt. Des weiteren unterstützt der Prozessor 10 ein 32 Bit (oder 16 Bit) Betriebssystem, wenn das LME Bit nicht gesetzt ist.
  • Auf ähnliche Weise kann der Mechanismus zum Aufrufen in dem Prozessor 10 auf verschiedene Weisen basierend auf dem Zustand des LME Bits arbeiten. Da das Betriebssystem typischerweise auf einer höheren Privilegierungsstufe als das Anwendungsprogramm arbeitet, werden Transfers von dem Anwendungsprogramm zu dem Betriebssystem sorgfältig kontrolliert, um sicher zu stellen, dass das Anwendungsprogramm nur erlaubte Routinen des Betriebssystems ausführen kann. Allgemeiner gesagt werden Wechsel in der Privilegierungsstufe sorgfältig kontrolliert. In einem Ausführungsbeispiel kann der Prozessor 10 zumindest zwei Mechanismen zum Durchführen von Aufrufen des Betriebssystems unterstützen. Ein Verfahren kann durch ein Aufruftor in den Segmentdeskriptortabellen sein (detaillierter unten beschrieben). Ein weiteres Verfahren kann der von dem Prozessor unterstützte SYSCALL Befehl sein, der ein für das Modell spezifische Register als die Quelle der Adresse der Routine des Betriebssystems verwendet. Die Aktualisierung der für das Modell spezifischen Register ist eine privilegierte Operation und daher kann nur Code, der auf einer höheren Privilegierungsstufe ausführt (zum Beispiel Code des Betriebssystems), die Adresse in dem für das Modell spezifischen Register einrichten, das von der SYSCALL Funktion verwendet wird. Für das SYSCALL Verfahren kann ein zweites für das Modell spezifisches Register definiert sein, um die höchstwertigen 32 Bit der Adresse der Routine des Betriebssystems zu speichern. Daher kann, wenn das LME Bit gesetzt ist, die Adresse aus den zwei für das Modell spezifischen Registern gelesen werden. Falls das LME Bit nicht gesetzt ist, kann die Adresse aus dem für das Modell spezifischen Register gelesen werden, das die niedrigstwertigen 32 Bit enthält. Alternativ kann das von dem SYSCALL Befehl verwendete für das Modell spezifische Register auf 64 Bit erweitert werden und die Adresse kann 32 Bit sein (die niedrigstwertigen 32 Bit des für das Modell spezifischen Registers) oder 64 Bit basierend auf dem Zustand des LME Bits.
  • Wie oben dargestellt kann das gesetzte LME Bit dem Prozessor 10 erlauben, in einem System zu arbeiten, in dem das Betriebssystem 64 Bit ist und ein oder mehr Anwendungsprogramme nicht 64 Bit sind (zum Beispiel 32 Bit wie gezeigt oder 16 Bit, was auf eine ähnliche Weise arbeitet wie die obige Beschreibung). Des weiteren, wie in dem Kasten 62 dargestellt, kann das nicht gesetzte LME Bit dem Prozessor 10 erlauben, in dem 32 Bit oder 16 Bit Modus zu arbeiten, der mit der x86 Architektur kompatibel ist. Wie oben beschrieben sind die Mechanismen zum Behandeln von Ausnahmen und Aufrufen des Betriebssystems entworfen, um das LME als gesetzt oder frei zu behandeln, und daher können die 32 Bit und 16 Bit Modi unverändert arbeiten, sogar obwohl der Prozessor 10 fähig ist, in dem 32/64 Modus zu arbeiten. Des weiteren kann, durch zur Verfügung stellen der x86 kompatiblen 16 und 32 Bit Modi, wenn das LME Bit nicht gesetzt ist, (und Ignorieren des L Bits, das in diesen Modi reserviert ist) der Prozessor 10 in einem System arbeiten, in dem das L Bit für einige andere Zwecke als für den 32/64 Modus reserviert ist, und kann immer noch den 32/64 Modus unterstützen, falls das LME Bit gesetzt ist. Entsprechend kann ein System, das ein 32 Bit Betriebssystem und 32 Bit oder 16 Bit Anwendungsprogramme verwendet, den Prozessor 10 verwenden. Nachfolgend könnte das System auf ein 64 Bit Betriebssystem aufgerüstet werden, ohne dass der Prozessor 10 geändert werden muss.
  • Nicht dargestellt ist in der 4 ein 64 Bit Betriebssystem und ein 64 Bit Anwendungsprogramm, die mit gesetztem LME Bit arbeiten. Der Mechanismus zum Aufrufen von Routinen des Betriebssystems, der zuvor für das 64 Bit Betriebssystem und das 32 Bit Anwendungsprogramm beschrieben wurde, kann ebenfalls auf das 64 Anwendungsprogramm angewendet werden. Des weiteren werden Aufruftore, welche 64 Bit an Verschiebung unterstützen, unterstützt (wie unten detaillierter beschrieben werden wird).
  • Nun Bezug nehmend auf 5 ist eine Tabelle 70 gezeigt, welche die Zustände des LME Bits, des L Bits in dem Codesegmentdeskriptor und des D Bits in dem Codesegmentdeskriptor und des entsprechenden Betriebsmodus des Prozessors 10 in Übereinstimmung mit einem Ausführungsbeispiel des Prozessors 10 darstellt. Wie die Tabelle 70 darstellt, ist, falls das LME Bit frei ist, das L Bit dann reserviert (und als Null definiert). Jedoch kann der Prozessor 10 das L Bit als ein don't care behandeln, wenn das LME Bit nicht gesetzt ist. Daher können die x86 kompatiblen 16 Bit und 32 Bit Modi von dem Prozessor 10 zur Verfügung gestellt werden, wenn das LME Bit frei ist. Falls das LME Bit gesetzt ist und das L Bit in dem Codesegment frei ist, dann wird von dem Prozessor 10 ein Kompätibilitäts-Betriebsmodus eingerichtet und das D Bit wählt den 16 Bit oder den 32 Bit Modus aus. Falls das LME Bit und das L Bit gesetzt sind und das D Bit Frei ist, wird der 32/64 Modus für den Prozessor 10 ausgewählt. Schließlich wird der Modus reserviert, der ausgewählt werden würde, wenn sowohl das LME, das L und auch das D Bit gesetzt sind.
  • Wie zuvor erwähnt und unten in 6 dargestellt, umfasst der 32/64 Bit Betriebsmodus eine voreingestellte Adressgröße, die über 32 Bit hinausgeht (abhängig von der Implementierung, aber bis zu 64 Bit), und eine voreingestellte Operandengröße von 32 Bit. Die voreingestellte Operandengröße von 32 Bit kann auf 64 Bit übersteuert werden über eine bestimmte Kodierung eines Befehls. Die voreingestellte Operandengröße von 32 Bit ist gewählt, um die durchschnittliche Länge der Befehle für Programme zu minimieren (da die Übersteuerung auf 64 Bit die Einbindung eines Befehlspräfixes in der Kodierung des Befehls umfasst, was die Länge des Befehls erhöhen kann), in denen 32 Bit für viele der von dem Programm ausgeführten Manipulationen von Daten ausreichend sind. Für derartige Programme (welche eine erhebliche Anzahl der derzeit existierenden Programme sein können) kann die Bewegung zu einer 64 Bit Operandengröße die von dem Programm erzielte Leistungsfähigkeit der Ausführung tatsächlich verringern (das heißt eine erhöhte Ausführungszeit). Teilweise kann diese Verringerung der Verdoppelung der Größe in dem Speicher der von dem Programm benutzten Datenstrukturen zugerechnet werden, wenn 64 Bit Werte gespeichert werden. Falls 32 Bit ausreichend sind, würden diese Datenstrukturen 32 Bit speichern. Daher steigt die Anzahl von zugegriffenen Bytes an, wenn die auf die Datenstruktur zugegriffen wird, falls 64 Bit Werte verwendet werden, wo 32 Bit Werte ausreichen würden, und die erhöhte Speicherbandbreite (und erhöhter Platz des Cachespeichers, der von jedem Wert belegt wird) kann eine erhöhte Ausführungszeit verursachen. Entsprechend werden 32 Bit als die voreingestellte Operandengröße ausgewählt sein und die Vorgabe kann über die Kodierung eines bestimmten Befehls übersteuert werden.
  • Nun Bezug nehmend auf 6 ist eine Tabelle 72 gezeigt, die ein Ausführungsbeispiel der Verwendung von Befehlspräfixen zur Übersteuerung des Betriebsmodus für einen bestimmten Befehl darstellt. Weitere Ausführungsbeispiel sind möglich und werden betrachtet. Der Ausführungskern 14 bestimmt die Adressgröße und die Operandengröße für einen bestimmten Befehl in Übereinstimmung mit der Tabelle 72. Insbesondere für das in der 6 dargestellte Ausführungsbeispiel kann ein Präfix Byte des Befehls (das Präfix Byte zur Übersteuerung der Adressgröße) verwendet werden, um die voreingestellte Adressgröße zu übersteuern, und ein weiteres Präfix Byte des Befehls (das Präfix Byte zur Übersteuerung der Operandengröße) kann zur Übersteuerung der voreingestellten Operandengröße verwendet werden. Das Präfix Byte zur Übersteuerung der Adressgröße ist als 67 (hexadezimal) kodiert und das Präfix Byte zur Übersteuerung der Operandengröße ist als 66 (hexadezimal) kodiert. Die Anzahl der Präfixe zum Übersteuern in dem bestimmten Befehl bildet die Spalten der Tabelle. Die Zeilen der Tabelle zeigen die Operandengröße und die Adressgröße des bestimmten Befehls an, basierend auf dem Betriebsmodus und der Anzahl der Präfixe zum Übersteuern in der entsprechenden Spalte. Die Anzahl der Präfixe zum Übersteuern bezieht sich auf die Anzahl der Präfixe zum Übersteuern des entsprechenden Typs (zum Beispiel sind die Adressgrößenzeilen die Adressgrößen basierend auf der Anzahl der Präfixe zum Übersteuern der Adressgröße und die Operandengrößenzeilen sind die Operandengrößen basierend auf der Anzahl der Präfixe zum Übersteuern der Operandengröße).
  • Die mit "0" bezeichnete Spalte für die Anzahl der Präfixe zum Übersteuern stellt die voreingestellte Operandengröße und Adressgröße für jeden Betriebsmodus dar. Es ist zu bemerken, dass die 32 Bit und die 16 Bit Zeilen sich sowohl auf die Kompatibilitätsmodi (LME gesetzt) als auch auf die Standard Modi (LME frei) beziehen. Des weiteren kann, während die voreingestellte Adressgröße 64 Bit in dem 32/64 Modus ist, die tatsächliche Anzahl der Adressbits von der Implementierung abhängen, wie zuvor diskutiert.
  • Die Einbeziehung von einem Präfix zum Übersteuern der Adressgröße in dem 32/64 Bit Modus ändert die Adressgröße von 64 Bit (was für eine bestimmte Implementierung weniger als 64 Bit sein kann, aber größer als 32 Bit ist) auf 32 Bit, wie in der Tabelle 72 gezeigt. Des weiteren ändert die Einbeziehung eines Präfix zum Übersteuern der Operandengröße in dem 32/64 Bit Modus die Operandengröße von 32 Bit auf 64 Bit. Es kann wünschenswert sein, auch einen 16 Bit Operanden zur Verfügung zu stellen (zum Beispiel um den kurzen Integer Datentyp in der "C" Programmiersprache zu unterstützen). Entspreched wählt die Einbeziehung von zwei Präfixen zum Übersteuern der Operandengröße in dem 32/64 Bit Modus eine Operandengröße von 16 Bit aus. Die Einbeziehung von mehr als zwei Präfixen zum Übersteuern der Operandengröße führt zu der gleichen Operandengröße wie die Einbeziehung von zwei Präfixen zum Übersteuern der Operandengröße. Auf ähnliche Weise führt die Einbeziehung von mehr als einem Präfix zum Übersteuern der Adressgröße zu der gleichen Adressgröße wie die Einbeziehung von einem Präfix zum Übersteuern der Adressgröße.
  • Für die 32 Bit Modi schaltet die Einbeziehung von einem Präfix zum Übersteuern die voreingestellte 32 Bit Größe auf 16 Bit um und die Einbeziehung von mehr als einem Präfix zum Übersteuern hat die gleiche Auswirkung wie die Einbeziehung von einem Präfix zum Übersteuern. Ähnlich für 16 Bit Modi schaltet die Einbeziehung von einem Präfix zum Übersteuern die voreingestellte 16 Bit Größe auf 32 Bit um und die Einbeziehung von mehr als einem Präfix zum Übersteuern hat die gleiche Auswirkung wie die Einbeziehung von einem Präfix zum Übersteuern.
  • Nun Bezug nehmend auf 7 ist ein Diagramm gezeigt, das ein Ausführungsbeispiel des LEAX Registers 74 darstellt. Weitere Register in der Registerdatei 22 können ähnlich sein. Weitere Ausführungsbeispiel sind möglich und werden betrachtet. In dem Ausführungsbeispiel von 7 enthält das Register 74 64 Bit, wobei das höchstwertige Bit als Bit 63 bezeichnet ist und das niedrigstwertige Bit als Bit 0 bezeichnet ist. Die 7 stellt die zugegriffenen Bereiche des LEAX Registers dar, basierend auf der Operandengröße eines Befehls (falls das A Register als ein Operand ausgewählt wird). Genauer gesagt wird auf die Gesamtheit des Registers 74 zugegriffen, wenn die Operandengröße 64 Bit ist (wie durch die mit "LEAX" bezeichnete Klammer in der 7 dargestellt). Falls die Operandengröße 32 Bit ist, wird auf die Bits 31:0 des Registers 74 zugegriffen (wie durch die mit "EAX" bezeichnete Klammer in der 7 dargestellt). Falls die Operandengröße 16 Bit ist, wird auf die Bits 16:0 des Registers 74 zugegriffen (wie durch die mit "AX" bezeichnete Klammer in der 7 dargestellt). Die obigen Operandengrößen können ausgewählt werden basierend auf dem Betriebsmodus und der Einbeziehung von jeglicher Präfixes zum Übersteuern. Jedoch sind Opcodes von gewissen Befehlen definiert, welche auf ein acht Bit Register (AH oder AL in der 7) zugreifen.
  • Nun Bezug nehmend auf 8 ist ein Blockdiagramm gezeigt, das ein Ausführungsbeispiel einer globalen Deskriptortabelle 80 und einer lokalen Deskriptortabelle 82 darstellt. Weitere Ausführungsbeispiele sind möglich und werden betrachtet. Wie in der 8 dargestellt und zuvor erwähnt wird die Basisadresse der globalen Deskriptortabelle 80 von dem GDTR 32 zur Verfügung gestellt und die Basisadresse der lokalen Deskriptortabelle 82 wird von dem LDTR 30 zur Verfügung gestellt. Entsprechend können, um die beliebige Platzierung der globalen Deskriptortabelle 80 und der lokalen Deskriptortabelle 82 in dem virtuellen Adressraum zu unterstützen, das GDTR 32 und das LDTR 30 64 Bit Basisadressen speichern. Falls das LME Bit frei ist, können die niedrigstwertigen 32 Bit der Basisadresse verwendet werden, um die Deskriptortabellen zu lokalisieren.
  • Sowohl die globale Deskriptortabelle 80 als auch die lokale Deskriptortabelle 82 sind konfiguriert, um Segmentdeskriptoren verschiedener Typen zu speichern. Zum Beispiel sind die Codesegmentdeskriptoren 84, 86 und 90 für den 32/64 Modus und die Codesegmentdeskriptoren 92 und 94 für den Kompatibilitätsmodus in der 8 dargestellt. Jeder der Deskriptoren 8494 belegt einen Eintrag in der entsprechenden Deskriptortabelle, wo ein Eintrag fähig ist zum Speichern eines Segmentdeskriptors (zum Beispiel 8 Byte für die in den 2 und 3 dargestellten Ausführungsbeispiele). Ein weiterer Typ eines Deskriptors in der globalen Deskriptortabelle 80 ist ein Deskriptor 96 der lokalen Deskriptortabelle, der ein Systemsegment für die lokale Deskriptortabelle 82 definiert und die in dem LDTR 30 gespeicherte Basisadresse zur Verfügung stellt. Das LDTR 30 wird unter Verwendung eines LDT Befehls initialisiert, der als Operanden den einen Segmentselektor lokalisierenden Deskriptor 96 in der globalen Deskriptortabelle 80 hat. Die globale Deskriptortabelle 80 kann mehrere LDT Deskriptoren speichern, die falls gewünscht verschiedene lokale Deskriptortabellen lokalisieren. Da der LDT Deskriptor 96 eine 64 Bit Verschiebung speichern kann, falls das LME Bit gesetzt ist, kann der LDT Deskriptor 96 zwei Einträge in der globalen Deskriptortabelle 80 belegen. Falls das LME Bit frei ist, kann der LDT Deskriptor 96 einen einzelnen Eintrag in der globalen Deskriptortabelle 80 belegen. Auf ähnliche Weise kann jede Aufgabe einen Aufgabezustandsegment (TSS) Deskriptor in einer der Deskriptortabellen 80 und 82 haben, um gewisse auf die Aufgabe bezogene Information zu speichern. Entsprechend kann der TSS Deskriptor zwei Einträge be legen, um es der TSS Information zu erlauben, irgendwo indem 64 Bit Adressraum zu speichern.
  • Die lokale und die globale Deskriptortabelle können auch einen Aufruftor Deskriptor speichern. Zum Beispiel stellt 8 Aufruftor Deskriptoren 100, 102 und 104 dar. Die Aufruftor Deskriptoren unterstützen ebenfalls eine 64 Bit Verschiebung und können daher auch zwei Einträge in der entsprechenden Deskriptortabelle belegen. Ein beispielhafter 32/64 Aufruftor Deskriptor ist unten in 9 dargestellt.
  • Durch Halten der Segmentdeskriptortabellen 80 und 82 bei 8 Byte und Verwendung von zwei Einträge für Deskriptoren, die eine Verschiebung von 64 Bit enthalten, können Deskriptoren für die 16 und 32 Bit Modi in den gleichen Tabellen gespeichert werden wie die Deskriptoren, die eine Verschiebung von 64 Bit enthalten. Daher können Anwendungen, die in den Kompatibilitätsmodi arbeiten, geeignete Deskriptoren in den gleichen Segmentdeskriptortabellen haben wie die 64 Bit Betriebssysteme.
  • Im Allgemeinen werden Aufruftore verwendet, um den Übergang zwischen einem Codesegment, das eine niedrigere Privilegierungsstufe hat, und einem Codesegment, das eine höhere Privilegierungsstufe hat, zu verwalten (zum Beispiel ein Anwendungsprogramm, das eine Routine des Betriebssystems aufruft). Der weniger privilegierte Code enthält einen Aufruf- oder einen anderen Verzweigungsbefehl, der als ein Ziel einen Segmentselektor angibt (und eine Verschiebung in das Segment, die in diesem Fall ignoriert wird). Der Segmentselektor identifiziert einen Aufruftor Deskriptor innerhalb der Deskriptortabellen, welcher eine minimale Privilegierungsstufe enthält, der erforderlich ist, um den Code mit höherer Privilegierungsstufe auszuführen. Wenn der Prozessor 10 den Aufruf- oder einen anderen Verzweigungsbefehl ausführt, indiziert der Prozessor 10 die Deskriptortabellen mit dem Segmentselektor und lokalisiert das Aufruftor. Falls die derzeitige Privilegierungsstufe des Prozessors 10 und die Privilegierungsstufe des Anfragenden (die Teil des Segmentselektors ist und verwendet werden kann, um die derzeitige Privilegierungsstufe für Zwecke der Überprüfung der Privilegierung zu senken) beide ausreichende Privilegierung zum Ausdruck bringen (zum Beispiel sind die Privilegierungsstufe numerisch kleiner oder gleich der minimalen Privilegierungsstufe in dem Aufruftor Deskriptor), kann dann der Aufruf fort fahren. Der Aufruftor Deskriptor enthält einen Segmentselektor für das Zielsegment (das Codesegment mit der höheren Privilegierungsstufe) und die Verschiebung innerhalb des Zielsegments, an dem das Aufrufen des Codes anzufangen hat. Der Prozessor 10 extrahiert den Segmentselektor und die Verschiebung aus dem Aufruftor Deskriptor und liest den Zielsegmentdeskriptor, um das Abrufen des Codes zu beginnen, der die höhere Privilegierungsstufe hat. Auf der anderen Hand, falls entweder die derzeitige Privilegierungsstufe oder die Privilegierungsstufe des Anfragenden eine niedrigere Privilegierungsstufe hat als die minimale Privilegierungsstufe in dem Aufruftor Deskriptor (zum Beispiel ist entweder die derzeitige oder die Privilegierungsstufe des Anfragenden numerisch größer als die minimale Privilegierungsstufe), signalisiert der Prozessor 10 eine Ausnahme nach dem Zugreifen auf den Aufruftor Deskriptor und ohne ein Zugreifen auf den Zieldeskriptor. Daher wird ein Zugriff auf Code, der auf höheren Privilegierungsstufen ausgeführt wird, sorgfältig kontrolliert.
  • Wie zuvor erwähnt enthält der Aufruftor Deskriptor einen Zielsegmentselektor und die Verschiebung innerhalb des Segments. Die Bezugnahme auf den Zielsegmentselektor ist in 8 als ein Pfeil von einem Aufruftor Deskriptor zu einem anderen Deskriptor dargestellt. Zum Beispiel verweist der Aufruftor Deskriptor 100 auf den Modus Deskriptor 90; der Aufruftor Deskriptor 102 verweist auf den 32/64 Modus Deskriptor 86 und der Aufruftor Deskriptor 104 verweist auf den 32/64 Modus Deskriptor 84. Wie 8 darstellt, kann ein Aufruftor Deskriptor in jeder Deskriptortabelle gespeichert werden und kann auf einen Deskriptor in der anderen Tabelle oder in der gleichen Tabelle verweisen. Des weiteren kann ein Aufruftor Deskriptor entweder auf einen 32/64 Modus Deskriptor oder auf einen Kompatibilitätsmodus Deskriptor verweisen.
  • Im Allgemeinen, wenn der Prozessor 10 einen Deskriptor von einer der Deskriptortabellen unter Verwendung eines Segmentselektors liest, wird ein Eintrag der Deskriptortabelle gelesen. Falls jedoch das LME Bit gesetzt ist und der Prozessor 10 detektiert, dass der Eintrag ein Aufruftor Deskriptor, ein LDT Deskriptor oder ein TSS Deskriptor ist, liest der Prozessor 10 den nächsten darauf folgenden Eintrag in der Tabelle, um den Rest des Deskriptors zu erhalten. Entsprechend können Aufruftor Deskriptoren, LDT Deskriptoren und TSS Deskriptoren in einer Ta belle zusammen mit Kompatibilitätsmodus Deskriptoren (oder Standardmodus Deskriptoren) existieren, die von einer anderen Größe sind, ohne die Größe der Einträge in der Tabelle umzudefinieren oder ohne die Tabelle für Deskriptoren, die einen Eintrag belegen, zu verwalten. Des weiteren wird, da auf den zweiten Teil des Aufruftor Deskriptors, des LDT Deskriptors und des TSS Deskriptors als ein Segmentdeskriptor zugegriffen werden kann, der Teil des Deskriptors, der das Typ Feld eines Deskriptors in dem zweiten Teil sein würde, auf einen ungültigen Typ gesetzt, wenn der Deskriptor in der in der Deskriptortabelle gespeichert wird, wie unten in 9 gezeigt ist. Alternativ kann der Prozessor 10 jedes Mal zwei aufeinander folgende Einträge aus einer Deskriptortabelle lesen, wenn ein Lesevorgang auf eine Deskriptortabelle durchgeführt wird, und der zweite Eintrag kann verwendet werden, falls der erste Eintrag ein Aufruftor, ein LDT Deskriptor Typ oder ein TSS Deskriptor Typ ist.
  • Es ist zu bemerken, dass Code, der in jeglichem Betriebsmodus (32/64 Modus, 32 Bit Kompatibilitätsmodus oder 16 Bit Kompatibilitätsmodus) arbeitet, auf einen Aufruftor Deskriptor verweisen kann, wenn das LME Bit gesetzt ist. Daher kann eine 32 oder 16 Bit Anwendung unter Verwendung des Aufruftor Mechanismus eine Routine des Betriebssystems aufrufen, sogar wenn die Adresse der Routine außerhalb des 32 Bit oder 16 Bit Adressraums ist. Des weiteren kann ein Aufruftor Deskriptor auf ein Codesegment verweisen, das einen beliebigen Betriebsmodus hat. Das Betriebssystem kann sicher stellen, dass die höchstwertigen 32 Bits der Verschiebung in dem Aufruftor Null sind (für ein 32 Bit Zielsegment) oder die höchstwertigen 48 Bits der Verschiebung in dem Aufruftor Null sind (für ein 16 Bit Zielsegment).
  • Nun Bezug nehmend auf 9 ist ein Blockdiagramm eines Ausführungsbeispiels eines Aufruftor Deskriptors 120 gezeigt. Weitere Ausführungsbeispiele sind möglich und werden betrachtet. Ähnlich zu den 2 und 3 sind die höchstwertigen Bits über den niedrigstwertigen Bits dargestellt. Das höchstwertige Bit jeder Gruppe von vier Bytes ist als Bit 31 dargestellt und das niedrigstwertige Bit ist als Bit 0 dargestellt. Kurze vertikale Linien innerhalb der vier Bytes begrenzen jedes Bit und die langen vertikalen Linien begrenzen ein Bit, aber begrenzen auch ein Feld. Wie zuvor erwähnt, belegt ein Aufruftor Deskriptor zwei Einträge in einer Deskriptortabelle. Die horizontale, gestrichelte Linie in 9 trennt den Aufruftor Deskriptor 120 in einen oberen Teil (über der Linie) und einen unteren Teil (unterhalb der Linie). Der untere Teil ist in dem Eintrag gespeichert, der von dem Segmentselektor des Aufruftors indiziert wird, und der obere Teil ist in dem nächsten darauf folgenden Eintrag gespeichert.
  • Der Aufruftor Deskriptor 120 enthält einen Zielsegmentselektor (Feld 122), eine Verschiebung (Felder 124A, 124B und 124C), ein Vorhanden (P) Bit 126, eine Deskriptor Privilegierungsstufe (DPL) 128, ein Typ Feld 130 und ein Pseudo-Typ Feld 132. Das P Bit ist ähnlich zu dem oben beschriebenen P Bit 48. Die Zielsegmentselektor identifiziert einen Eintrag innerhalb einer der Deskriptortabellen, in dem der Zielsegmentdeskriptor (mit der höheren Privilegierungsstufe) gespeichert ist. Die Verschiebung identifiziert die Adresse, an der das Abrufen des Codes zu starten hat. In dem 32/64 Modus ist die Verschiebung die Adresse, an der das Abrufen des Codes startet, weil das Codesegment keine Basisadresse hat und die flache lineare Adressierung verwendet wird. In anderen Modi wird die Verschiebung zu der von dem Zielsegmentselektor definierten Basisadresse addiert, um die Adresse zu erzeugen, an der Abrufen des Codes startet. Wie zuvor erwähnt kann die Verschiebung in dem vorliegenden Ausführungsbeispiel 64 Bit aufweisen.
  • Die DPL 128 speichert die minimale Privilegierungsstufe, den die aufrufende Routine haben muss (sowohl in der derzeitigen Privilegierungsstufe als auch in der angeforderten Privilegierungsstufe), welche erfolgreich durch das Aufruftor gelangen könnte und die aufgerufene Routine in der Privilegierungsstufe ausführt, die in dem Zielsegmentdeskriptor angegeben ist.
  • Das Typ Feld 130 ist auf einen Typ des Aufruftor Deskriptors kodiert. In einem Ausführungsbeispiel ist dieser Typ als der in der x86 Architektur definierte 32 Bit Aufruftor Typ kodiert. Alternativ können andere Kodierungen verwendet werden. Schließlich ist das Pseudo-Typ Feld 132 auf einen ungültigen Typ (zum Beispiel Null) kodiert, um sicher zu stellen, dass, falls ein Segmentselektor präsentiert wird, der den Eintrag in der Segmenttabelle identifiziert, der die obere Hälfte des Aufruftor Deskriptors 120 speichert, dann eine Ausnahme von dem Prozessor 10 signalisiert wird.
  • Es ist zu bemerken, dass die untere Hälfte des LDT Deskriptors 96 gleich sein kann wie der 32 Bit LDT Deskriptor 96 und die obere Hälfte des LDT Deskriptors 96 gleich sein kann zu der oberen Hälfte des Aufruftor Deskriptors 120.
  • Nun Bezug nehmend auf 10 ist ein Blockdiagramm eines Befehlsformats 140 für Befehle gezeigt, die von dem Prozessor 10 ausgeführt werden. Weitere Ausführungsbeispiel sind möglich und werden betrachtet. In dem Ausführungsbeispiel von 10 enthält das Befehlsformat 140 ein Präfixfeld 142, ein Opcode Feld 144, ein mod R/M (Register/Speicher) Feld 146, ein SIB (Skalierung Indexbasis) Feld 148, ein Versetzungsfeld 150 und ein Unmittelbar Feld 152. Jedes der Felder außer dem Opcode Feld 144 sind optional. Daher kann das Befehlsformat 140 einen Befehl variabler Länge definieren.
  • Das Präfixfeld 142 wird für jegliche Befehlspräfixe für den Befehl verwendet. Wie oben beschrieben können ein Präfix zum Übersteuern der Operandengröße und ein Präfix zum Übersteuern der Adressgröße in einem Befehl kodiert sein, um den Betriebsmodus des Prozessors 10 zu übersteuern. Wie zuvor erwähnt kann der Präfix zum Übersteuern der Operandengröße und der Präfix zum Übersteuern der Adressgröße jeweils byteweise in dem Präfixfeld 142 enthalten sein.
  • Das Opcode Feld 144 enthält den Opcode eines Befehls (das heißt welcher Befehl in dem Befehlssatz ausgeführt wird). Für einige Befehle können Operanden in dem Opcode Feld 144 angegeben sein. Für andere Befehle kann ein Teil des Opcodes in dem mod R/M Feld 146 enthalten sein. Des weiteren können gewisse Opcodes ein acht Bit oder ein 16 Bit Register als Operanden angeben. Daher können Kodierungen des Opcodes dazu dienen, auch die von dem Betriebsmodus des Prozessors 10 angegebenen Voreinstellungen zu übersteuern.
  • Das mod R/M Feld 146 und das SIB Feld 148 geben die Operanden des Befehls an. Das Versetzungsfeld 150 umfasst jegliche Versetzungsinformation und das Unmittelbar Feld 152 enthält einen unmittelbaren Operanden.
  • Computersystem
  • Es wird nun auf 25 Bezug genommen, in der ein Blockdiagramm gezeigt ist, das ein Ausführungsbeispiel eines Computersystems 200 einschließlich des Prozessors 10 darstellt, der über eine Busbrücke 202 mit einer Vielzahl von Systemkomponenten verbunden ist. Weitere Ausführungsbeispiele sind möglich und werden betrachtet. In dem dargestellten System ist ein Hauptspeicher 204 über einen Speicherbus 206 mit der Busbrücke 202 verbunden und eine Grafiksteuerung 208 ist über einen AGP Bus 210 mit der Busbrücke 202 verbunden. Schließlich ist eine Vielzahl von PCI Geräten 212A212B über einen PCI Bus 214 mit der Busbrücke 202 verbunden. Eine zweite Busbrücke 216 kann ferner vorgesehen sein, um einem oder mehreren EISA oder ISA Geräten 218 über einen EISA/ISA Bus 220 eine elektrische Schnittstelle zu bieten. Der Prozessor 10 ist über einen CPU Bus 224 mit der Busbrücke 202 und mit einem optionalen L2 Cachespeicher 228 verbunden. Zusammen können der CPU Bus 224 und die Schnittstelle zu dem L2 Cachespeicher 228 eine externe Schnittstelle aufweisen, an welche die externe Schnittstelleneinheit 18 anschließen kann.
  • Die Busbrücke 202 stellt eine Schnittstelle zwischen dem Prozessor 10, dem Hauptspeicher 204, der Grafiksteuerung 208 und an den PCI Bus 214 angebrachten Geräten zur Verfügung. Wenn eine Operation von einem der an die Busbrücke 202 angeschlossenen Geräte empfangen wird, identifiziert die Busbrücke 202 das Ziel der Operation (zum Beispiel ein bestimmtes Gerät oder in dem Fall des PCI Busses 214, dass das Ziel auf dem PCI Bus 214 ist). Die Busbrücke 202 führt die Operation zu dem angezielten Gerät. Die Busbrücke 202 übersetzt im Allgemeinen eine Operation von dem Protokoll, das von dem Quellgerät oder -bus benutzt wird, in das Protokoll, das von dem Zielgerät oder -bus benutzt wird.
  • Zusätzlich zur Bereitstellung einer Schnittstelle zu einem ISA/EISA Bus für den PCI Bus 214 kann die zweite Busbrücke 216 wie gewünscht weitere Funktionalität enthalten. Eine Eingangs/Ausgangssteuerung (nicht gezeigt), entweder außerhalb von der oder in die zweite Busbrücke 216 integriert, kann auch in dem Computersystem 200 enthalten sein, um operationelle Unterstützung für eine Tastatur und Maus 222 und für verschiedene serielle und parallele Anschlüsse wie gewünscht zur Verfügung zu stellen. Eine externe Cachespeichereinheit (nicht gezeigt) kann ferner an den CPU Bus 224 zwischen dem Prozessor 10 und der Busbrücke 202 in anderen Ausführungsbeispielen angeschlossen sein. Alter nativ kann der externe Cachespeicher an die Busbrücke 202angeschlossen sein und die Cachespeichersteuerlogik für den externen Cachespeicher kann in der Busbrücke 202 integriert sein. Ein L2 Cachespeicher 228 ist des weiteren in einer hinter dem Prozessor 10 angeordneten Konfiguration gezeigt. Es ist zu bemerken, dass der L2 Cachespeicher 228 getrennt von dem Prozessor 10, in einem Einsatz (zum Beispiel Slot 1 oder Slot A) für den Prozessor 10 integriert oder sogar integriert auf einem Halbleitersubstrat in dem Prozessor 10 sein kann.
  • Der Hauptspeicher 204 ist ein Speicher, in dem Anwendungsprogramme gespeichert werden und von dem der Prozessor 10 hauptsächlich ausführt. Ein geeigneter Hauptspeicher 204 weist DRAM (dynamischen wahlfreien Zugriffsspeicher) auf. Zum Beispiel kann eine Vielzahl von Bänken an SDRAM (Synchrones DRAM) oder an Rambus DRAM (RDRAM) geeignet sein.
  • Die PCI Geräte 212A212B sind beispielhaft für eine Vielzahl von peripheren Geräten, wie zum Beispiel Netzwerkschnittstellenkarten, Videobeschleunigern, Audiokarten, Festplatten oder Diskettenlaufwerken oder Laufwerkssteuerungen, SCSI (kleine Computer Systemschnittstelle) Adaptern oder Telefoniekarten. Auf ähnliche Weise ist das ISA Gerät 218 beispielhaft für verschiedene Typen von peripheren Geräten, wie einem Modem, einer Soundkarte und einer Vielzahl von Daten sammelnden Karten, wie GPIB oder Feldbus Schnittstellenkarten.
  • Die Grafiksteuerung 208 ist vorgesehen, um Text und Bilder auf einer Anzeige 256 sichtbar zu machen. Die Grafiksteuerung 208 kann einen typischen Grafikbeschleuniger verwenden, der allgemein im Stand der Technik bekannt ist, um dreidimensionale Datenstrukturen sichtbar zu machen, die effektiv aus und in den Hauptspeicher 204 geschoben werden können. Die Grafiksteuerung 208 kann daher ein Master von dem AGP Bus 210 sein, so dass es Zugriff auf eine Zielschnittstelle innerhalb der Busbrücke 202 anfordern und empfangen kann, um dadurch Zugriff auf den Hauptspeicher 204 zu bekommen. Ein fest zugeordneter Grafikbus erlaubt eine schnelle Erlangung von Daten aus dem Hauptspeicher 204. Für gewisse Operationen kann die Grafiksteuerung 208 des weiteren konfiguriert sein, um auf dem AGP Bus Transaktionen nach dem PCI Protokoll zu erzeugen. Die AGP Schnittstelle der Busbrücke 202 kann daher Funktionalitäten enthalten, um sowohl Transaktionen nach dem AGP Protokoll als auch Ziel- und Urhebertransaktionen nach dem PCI Protokoll zu unterstützen. Die Anzeige 226 ist jegliche elektronische Anzeige, auf der ein Bild oder ein Text dargestellt werden kann. Eine geeignete Anzeige umfasst eine Kathodenstrahlröhre („CRT"), ein Flüssigkristalldisplay („LCD") usw.
  • Es ist zu bemerken, dass, während die AGP, PCI und ISA oder EISA Busse in der obigen Beschreibung als Beispiele benutzt worden sind, jede Busarchitektur wie gewünscht ersetzt werden kann. Es ist weiter zu bemerken, dass das Computersystem 200 ein Mehrfachprozessorsystem sein kann, das zusätzliche Prozessoren enthält (zum Beispiel Prozessor 10a, der als optionale Komponente des Computersystems 200 gezeigt ist). Der Prozessor 10a kann ähnlich zu dem Prozessor 10 sein. Genauer gesagt kann der Prozessor 10a eine identische Kopie des Prozessors 10 sein. Der Prozessor 10a kann über einen unabhängigen Bus (wie in 11 gezeigt) mit der Busbrücke 202 verbunden sein oder kann den CPU Bus 224 mit dem Prozessor 10 teilen. Des weiteren kann der Prozessor 10a mit einem optionalen L2 Cachespeicher 228a verbunden sein, der dem L2 Cachespeicher 228 ähnlich ist.
  • Es wird nun auf 12 Bezug genommen, in der ein weiteres Ausführungsbeispiel eines Computersystems 300 gezeigt ist. Weitere Ausführungsbeispiele sind möglich und werden betrachtet. In dem Ausführungsbeispiel von 12 enthält das Computersystem 300 mehrere Verarbeitungsknoten 321A, 312B, 312C und 312D. Jeder Verarbeitungsknoten ist mit einem entsprechenden Speicher 314A314D über eine Speichersteuerung 316A316D verbunden, die in jedem entsprechenden Verarbeitungsknoten 312A312D enthalten ist. Des weiteren enthalten die Verarbeitungsknoten 312A312D eine Interfacelogik, die zur Kommunikation zwischen den Verarbeitungsknoten 312A312D verwendet wird. Zum Beispiel enthält der Verarbeitungsknoten 312A eine Interfacelogik 318A zum Kommunizieren mit dem Verarbeitungsknoten 312B, eine Interfacelogik 318B zum Kommunizieren mit dem Verarbeitungsknoten 312C und eine dritte Interfacelogik 318C zum Kommunizieren mit noch einem weiteren Verarbeitungsknoten (nicht gezeigt). Auf ähnliche Weise enthält der Verarbeitungsknoten 312B die Interfacelogiken 318D, 318E und 318F; der Verarbeitungsknoten 312C enthält die Interfacelogiken 318G, 318N und 318I und der Verarbeitungsknoten 312D enthält die Interfacelogiken 318J, 318K und 318L. Der Verarbeitungskno ten 312D ist angeschlossen, um mit einer Vielzahl von Eingangs/Ausgangs Geräten (zum Beispiel Geräte 320A320B in verketteter Konfiguration) über die Interfacelogik 318L zu kommunizieren. Weitere Verarbeitungsknoten können mit anderen I/O Geräten in ähnlicher Weise kommunizieren.
  • Die Verarbeitungsknoten 312A312D implementieren eine paketbasierte Verbindung für die Kommunikation zwischen den Verarbeitungsknoten. In dem vorliegenden Ausführungsbeispiel ist die Verbindung als Sätze von unidirektionalen Leitungen verwirklicht (zum Beispiel werden Leitungen 324A verwendet, um Pakete von dem Verarbeitungsknoten 312A zu dem Verarbeitungsknoten 312B zu übermitteln und Leitungen 324B werden verwendet, um Pakete von dem Verarbeitungsknoten 312B zu dem Verarbeitungsknoten 312A zu übermitteln). Weitere Sätze von Leitungen 324C324N werden wie in 12 dargestellt verwendet, um Pakete zwischen den anderen Verarbeitungsknoten zu übermitteln. Im Allgemeinen kann jeder Satz von Leitungen 324 eine oder mehrere Datenleitungen, eine oder mehrere den Datenleitungen entsprechende Taktleitungen und eine oder mehrere Steuerleitungen zur Anzeige des Typs des beförderten Pakets aufweisen. Die Verbindung kann für die Kommunikation zwischen den Verarbeitungsknoten auf eine mit einem Cachespeicher kohärente Weise betrieben werden oder für die Kommunikation zwischen einem Verarbeitungsknoten und einem I/O Gerät (oder einer Busbrücke zu einem I/O Bus von konventioneller Konstruktion, wie einem PCI Bus oder einem ISA Bus) auf nicht kohärente Weise betrieben werden. Des weiteren kann die Verbindung unter Benutzung einer verketteten Struktur zwischen den I/O Geräten, wie gezeigt, auf nicht kohärente Weise betrieben werden. Es ist zu bemerken, dass ein Paket, das von einem Verarbeitungsknoten zu einem Anderen übermittelt wird, einen oder mehrere andere in der Mitte liegende Knoten passieren kann. Zum Beispiel kann ein von dem Verarbeitungsknoten 312A an den Verarbeitungsknoten 312D übermitteltes Paket entweder durch den Verarbeitungsknoten 312B oder den Verarbeitungsknoten 312C wie in 12 gezeigt gelangen. Jeder geeignete Algorithmus zur Dirigierung kann verwendet werden. Weitere Ausführungsbeispiele des Computersystems 300 können mehr oder weniger Verarbeitungsknoten als in dem in 12 gezeigten Ausführungsbeispiel enthalten.
  • Im Allgemeinen können die Pakete mit einer oder mehr Bitzeiten auf den Leitungen 324 zwischen den Knoten übermittelt werden. Eine Bitzeit kann die steigende oder fallende Flanke des Taktsignals auf den entsprechenden Taktleitungen sein. Die Pakete können Anweisungspakete zum Einleiten von Transaktionen, Sondierungspakete zur Beibehaltung der Kohärenz des Cachespeichers und Antwortpakete sein, die auf Sondierungen und Anweisungen antworten.
  • Die Verarbeitungsknoten 312A312D können, zusätzlich zu einer Speichersteuerung und einer Interfacelogik, einen oder mehrere Prozessoren enthalten. Allgemein gesagt weist ein Verarbeitungsknoten mindestens einen Prozessor auf und kann optional eine Speichersteuerung zur Kommunikation mit einem Speicher und weitere Logik wie gewünscht enthalten. Insbesondere kann ein Verarbeitungsknoten 312A312D einen Prozessor 10 aufweisen. Die externe Interfaceeinheit 18 kann die Interfacelogik 318 innerhalb des Knotens enthalten, ebenso wie die Speichersteuerung 316.
  • Die Speicher 314A314D können alle geeigneten Speichergeräte aufweisen. Zum Beispiel kann ein Speicher 314A314D einen oder mehrere RAMBUS DRAMs (RDRAMs), synchrone DRAMs (SDRAMs), statische RAMs usw. aufweisen. Der Adressraum des Computersystems 300 ist zwischen den Speichern 314A314D aufgeteilt. Jeder Verarbeitungsknoten 312A312D kann eine Speicherabbildung enthalten, die verwendet wird, um festzustellen, welche Adressen auf welche Speicher 314A314D abgebildet sind, und damit, an welchen Verarbeitungsknoten 312A312D eine Speicheranforderung für eine bestimmte Adresse dirigiert werden soll. In einem Ausführungsbeispiel ist der Kohärenzpunkt für eine Adresse in dem Computersystem 300 die Speichersteuerung 316A316D, die mit dem Speicher verbunden ist und den Adressen entsprechende Bytes speichert. Anders gesagt ist die Speichersteuerung 316A316D verantwortlich fürdie Sicherstellung, dass jeder Speicherzugriff auf den entsprechenden Speicher 314A314D auf eine mit dem Cachespeicher kohärente Weise geschieht. Die Speichersteuerungen 316A316D können eine Steuerschaltung aufweisen, um eine Schnittstelle zu dem Speicher 314A314D zu bilden. Des weiteren können die Speichersteuerungen 316A316D Anforderungswarteschlangen für die Auf- reihung von Speicheranforderungen enthalten.
  • Im Allgemeinen kann die Interfacelogik 318A318L eine Vielzahl von Pufern zum Empfangen von Paketen von der Verbindung und zum Puffern von auf der Verbindung zu übermittelnden Paketen aufweisen. Das Computersystem 300 kann jeden geeigneten Mechanismus zur Flusssteuerung für die Übermittelung von Paketen verwenden. Zum Beispiel speichert in einem Ausführungsbeispiel die Interfacelogik 318 einen Zählwert der Anzahl von jedem Typ des Puffers in dem Empfänger an der anderen Seite der Verbindung, mit dem diese Interfacelogik verbunden ist. Die Interfacelogik übermittelt kein Paket, es sei denn die empfangene Interfacelogik hat einen freien Puffer, um das Paket zu speichern. Wenn ein empfangender Puffer durch die Weiterleitung eines Pakets frei wird, übermittelt die empfangende Logik eine Nachricht zu der sendenden Interfacelogik, um anzuzeigen, dass der Puffer leer gemacht worden ist. Ein derartiger Mechanismus kann als ein „Coupon basiertes" System bezeichnet werden.
  • Die I/O Geräte 320A320B können alle geeigneten I/O Geräte sein. Zum Beispiel können die I/O Geräte 320A320B Netzwerk-Schnittstellenkarten, Videobeschleuniger, Audiokarten, Festplatten oder Diskettenlaufwerke oder Laufwerkcontroller, SCSI (Kleincomputer-Systemschnittstelle) Adapter und Telefoniekarten, Modems, Soundkarten und eine Vielzahl von Datenaquisitionskarten, wie GPIB oder Feldbusinterfacekarten sein.
  • Zahlreiche Variationen und Modifikationen werden den Fachleuten auf dem Gebiet offenbar werden, sobald die obige Offenbarung vollständig anerkannt ist. Es ist beabsichtigt, dass die folgenden Ansprüche interpretiert werden, um alle derartigen Variationen und Modifikationen zu umfassen.

Claims (22)

  1. Prozessor (10) mit – einem Segmentregister (24A) zum Speichern eines Segmentselektors (24AA), der einen Segmentdeskriptor (24AB) identifiziert, welcher eine erste Betriebsmodusangabe (L) und eine zweite Betriebsmodusangabe (D) umfaßt; – einem Steuerregister (26) zum Speichern einer Freigabeangabe (LME), wobei der Prozessor derart konfiguriert ist, daß er einen Betriebsmodus in Reaktion auf die Freigabeangabe (LME), die erste Betriebsmodusangabe (L) und die zweite Betriebsmodusangabe (D) einnimmt, wobei der Betriebsmodus eine voreingestellte Operandengröße und eine voreingestellte Adressengröße für Befehle spezifiziert, welche der Prozessor auszuführen konfiguriert ist.
  2. Prozessor nach Anspruch 1, bei dem der Betriebsmodus ein erster Betriebsmodus (32/64) ist, wenn die Freigabeangabe (LME) sich in einem Freigabezustand (LME = 1) befindet und die erste Betriebsmodusangabe sich in einem ersten Zustand (L=1) befindet, und bei dem der Betriebsmodus ein zweiter Betriebsmodus (32-Bit Compatibility Mode) ist, wenn die Freigabeangabe sich in einem Freigabezustand (LME = 1) befindet, die erste Betriebsmodusangabe sich in einem zweiten Zustand (L=0) und die zweite Betriebsmodusangabe sich im ersten Zustand (D=1) befindet.
  3. Prozessor nach Anspruch 2, bei dem der zweite Betriebsmodus (32-Bit Compatibility Mode) einer von mehreren Betriebsmodi ist, die verfügbar sind, wenn sich die Freigabeangabe im Freigabezustand (LME=1) und die erste Betriebsmodusangabe sich im zweiten Zustand (L=0) befindet, und wobei der eine der mehreren Betriebsmodi in Reaktion auf den Zustand der zweiten Betriebsmodusangabe (D) gewählt ist.
  4. Prozessor nach Anspruch 3, bei dem der eine der mehreren Betriebsmodi ein 32-Bit Betriebsmodus (L=0, D=1) ist.
  5. Prozessor nach Anspruch 3, bei dem der eine der mehreren Betriebsmodi ein 16-Bit Betriebsmodus (L=0, D=0) ist.
  6. Prozessor nach Anspruch 2, bei dem der erste Betriebsmodus (32/64) eine voreingestellte Adressengröße umfaßt, die größer als 32 Bits ist.
  7. Prozessor nach Anspruch 6, bei dem die voreingestellte Adressengröße virtuelle Adressen betrifft, die vom Prozessor erzeugt werden.
  8. Prozessor nach Anspruch 7, bei dem eine virtuelle Adresse entsprechend einem vom Prozessor verwendeten Segmentierungsmechanismus erzeugt wird.
  9. Prozessor nach Anspruch 7, bei dem die voreingestellte Adressengröße ferner vom Prozessor erzeugte reale Adressen betrifft.
  10. Prozessor nach einem der Ansprüche 1-9, bei dem, wenn sich die Freigabeangabe in einem Sperrzustand (LME=0) befindet, die erste Betriebsmodusangabe undefiniert ist (L=x), und der Prozessor derart konfiguriert ist, daß er den Betriebsmodus in Reaktion auf die zweite Betriebsmodusangabe (D) einnimmt.
  11. Prozessor nach Anspruch 1, – bei dem der Segmentselektor (24AA) einen Index für eine Segmentdeskriptortabelle (80, 82) aufweist, die in einem Speicher gespeichert ist, mit welchem der Prozessor gekoppelt ist, wobei der Segmentdeskriptor in der Segmentdeskriptortabelle in einem durch den Index angegebenen Eintrag gespeichert ist, wobei der Prozessor zum Lesen des Segmentdeskriptors aus der Segmentdeskriptortabelle in Reaktion auf den Segmentselektor konfiguriert ist, und – wobei der Prozessor derart konfiguriert ist, daß er in Reaktion auf den Freigabezustand (LME=1) der Freigabeangabe und den ersten Zustand (L=1) der ersten Betriebsmodusangabe in einem Betriebsmodus (32/64) arbeitet, in dem virtuelle Adressen größer als 32 Bits sind.
  12. Prozessor nach Anspruch 11, bei dem reale Adressen größer als 32 Bit im Betriebsmodus existieren.
  13. Prozessor nach Anspruch 12, bei dem reale Adressen eine erste Anzahl von Bits kleiner als oder gleich 64 Bit sind.
  14. Prozessor nach Anspruch 11, bei dem virtuelle Adressen eine erste Anzahl von Bits kleiner als oder gleich 64 Bit sind.
  15. Prozessor nach Anspruch 11, bei dem der Segmentdeskriptor ferner einen Privileggrad (DPL) aufweist.
  16. Prozessor nach einem der Ansprüche 11-15, ferner mit einem zweiten Steuerregister (28), das zum Speichern einer zweiten Freigabeangabe (PE) konfiguriert ist, wobei der Prozessor zum Lesen des Segmentdeskriptors (24AB) aus der Segmentdeskriptortabelle (80, 82) in Reaktion auf den Freigabezustand (PE=1) der zweiten Freigabeangabe konfiguriert ist.
  17. Verfahren mit den folgenden Schritten: – Einnehmen eines Betriebsmodus durch einen Prozessor (10) in Reaktion auf eine Freigabeangabe (LME) in einem Steuerregister (26) im Prozessor, eine erste Betriebsmodusangabe (L) in einem Segmentdeskriptor (24AB) und eine zweite Betriebsmodusangabe (D) im Segmentdeskriptor (24AB); wobei der Betriebsmodus eine voreingestellte Operandengröße und eine voreingestellte Adressengröße für Befehle spezifiziert, welche der Prozessor auszuführen konfiguriert ist; – Holen von Operanden und Erzeugen von Adressen in Reaktion auf den Betriebsmodus.
  18. Verfahren nach Anspruch 17, bei dem der Schritt des Erstellens das Erstellen eines ersten Betriebsmodus (32/64) ist, wenn die Freigabeangabe (LME) sich in einem Freigabezustand (LME = 1) befindet und die erste Betriebsmodusangabe sich in einem ersten Zustand (L=1) befindet, und bei dem der erste Betriebsmodus eine voreingestellte Adressengröße umfaßt, die größer als 32 Bits ist.
  19. Verfahren nach Anspruch 18, bei dem die voreingestellte Adressengröße eine virtuelle Adresse betrifft.
  20. Verfahren nach Anspruch 19, bei dem die voreingestellte Adressengröße eine reale Adresse betrifft.
  21. Verfahren nach Anspruch 18, bei dem der Schritt des Einnehmens ferner das Einnehmen eines zweiten Betriebsmodus (32-Bit Compatibility Mode) umfaßt, wenn die Freigabeangabe sich in einem Freigabezustand (LME = 1) befindet, die erste Betriebsmodusangabe sich in einem zweiten Zustand (L=0) und die zweite Betriebsmodusangabe sich im ersten Zustand (D=1) befindet, und wobei der zweite Betriebsmodus eine voreingestellte Adressengröße von 32 Bits hat.
  22. Verfahren nach Anspruch 18, bei dem der Schritt des Einnehmens ferner das Einnehmen eines von mehreren Betriebsmodi umfaßt, wenn sich die Freigabeangabe im Freigabezustand (LME=1) und die erste Betriebsmodusangabe sich im zweiten Zustand (L=0) befindet, und wobei der eine der mehreren Betriebsmodi in Reaktion auf den Zustand der zweiten Betriebsmodusangabe (D) gewählt wird.
DE60005219T 2000-01-14 2000-07-19 Aufbauen eines betriebsmodus in einem prozessor Expired - Lifetime DE60005219T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/483,101 US6973562B1 (en) 2000-01-14 2000-01-14 Establishing an operating mode in a processor
US483101 2000-01-14
PCT/US2000/019762 WO2001052058A1 (en) 2000-01-14 2000-07-19 Establishing an operating mode in a processor

Publications (2)

Publication Number Publication Date
DE60005219D1 DE60005219D1 (de) 2003-10-16
DE60005219T2 true DE60005219T2 (de) 2004-06-24

Family

ID=23918664

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60005219T Expired - Lifetime DE60005219T2 (de) 2000-01-14 2000-07-19 Aufbauen eines betriebsmodus in einem prozessor

Country Status (8)

Country Link
US (1) US6973562B1 (de)
EP (1) EP1247171B1 (de)
JP (1) JP4520683B2 (de)
KR (1) KR100636413B1 (de)
CN (1) CN100419671C (de)
DE (1) DE60005219T2 (de)
TW (1) TW567434B (de)
WO (1) WO2001052058A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1387250B8 (de) * 2002-07-31 2012-02-29 Texas Instruments Inc. Prozessor mit Mehrfachbefehlssätzen und Mehrfachdecodierungsmodi
US7343378B2 (en) * 2004-03-29 2008-03-11 Microsoft Corporation Generation of meaningful names in flattened hierarchical structures
US7437541B2 (en) * 2004-07-08 2008-10-14 International Business Machiens Corporation Atomically updating 64 bit fields in the 32 bit AIX kernel
US20060282606A1 (en) * 2005-06-08 2006-12-14 Dell Products L.P. System and method for automatically optimizing available virtual memory
JP5289688B2 (ja) * 2006-07-05 2013-09-11 ルネサスエレクトロニクス株式会社 プロセッサシステム及びプロセッサシステムを動作させるオペレーティングシステムプログラムの処理方法
US7451298B2 (en) * 2006-08-03 2008-11-11 Apple Inc. Processing exceptions from 64-bit application program executing in 64-bit processor with 32-bit OS kernel by switching to 32-bit processor mode
US7802252B2 (en) * 2007-01-09 2010-09-21 International Business Machines Corporation Method and apparatus for selecting the architecture level to which a processor appears to conform
US8938606B2 (en) * 2010-12-22 2015-01-20 Intel Corporation System, apparatus, and method for segment register read and write regardless of privilege level
US8528083B2 (en) * 2011-03-10 2013-09-03 Adobe Systems Incorporated Using a call gate to prevent secure sandbox leakage
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
CN102331978A (zh) * 2011-07-07 2012-01-25 曙光信息产业股份有限公司 一种龙芯刀片大内存地址设备dma控制器访问的实现方法
CN105094870A (zh) * 2014-05-13 2015-11-25 中标软件有限公司 64位Linux操作系统兼容32位应用软件的方法
GB2522290B (en) 2014-07-14 2015-12-09 Imagination Tech Ltd Running a 32-bit operating system on a 64-bit machine
GB2546465B (en) * 2015-06-05 2018-02-28 Advanced Risc Mach Ltd Modal processing of program instructions
CN107870736B (zh) * 2016-09-28 2021-08-10 龙芯中科技术股份有限公司 支持大于4gb非线性闪存的方法及装置
CN111026452B (zh) * 2019-11-20 2023-10-20 北京明朝万达科技股份有限公司 一种远程32位进程注入64位进程的方法及系统

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4620274A (en) 1983-04-01 1986-10-28 Honeywell Information Systems Inc. Data available indicator for an exhausted operand string
US4701946A (en) 1984-10-23 1987-10-20 Oliva Raymond A Device for controlling the application of power to a computer
US4868740A (en) 1986-06-04 1989-09-19 Hitachi, Ltd. System for processing data with multiple virtual address and data word lengths
JPS63174145A (ja) * 1987-01-14 1988-07-18 Hitachi Ltd デ−タ処理装置
JP2507756B2 (ja) * 1987-10-05 1996-06-19 株式会社日立製作所 情報処理装置
US5381537A (en) * 1991-12-06 1995-01-10 International Business Machines Corporation Large logical addressing method and means
US5617554A (en) * 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5517651A (en) 1993-12-29 1996-05-14 Intel Corporation Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5758116A (en) 1994-09-30 1998-05-26 Intel Corporation Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions
US5644755A (en) 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
US5787495A (en) 1995-12-18 1998-07-28 Integrated Device Technology, Inc. Method and apparatus for selector storing and restoration
US5784638A (en) 1996-02-22 1998-07-21 International Business Machines Corporation Computer system supporting control transfers between two architectures
US5826074A (en) 1996-11-22 1998-10-20 S3 Incorporated Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register
US6086623A (en) 1997-06-30 2000-07-11 Sun Microsystems, Inc. Method and implementation for intercepting and processing system calls in programmed digital computer to emulate retrograde operating system

Also Published As

Publication number Publication date
KR100636413B1 (ko) 2006-10-19
WO2001052058A1 (en) 2001-07-19
JP4520683B2 (ja) 2010-08-11
US6973562B1 (en) 2005-12-06
DE60005219D1 (de) 2003-10-16
EP1247171B1 (de) 2003-09-10
CN100419671C (zh) 2008-09-17
JP2003519868A (ja) 2003-06-24
CN1423773A (zh) 2003-06-11
EP1247171A1 (de) 2002-10-09
TW567434B (en) 2003-12-21
KR20020091066A (ko) 2002-12-05

Similar Documents

Publication Publication Date Title
DE60005219T2 (de) Aufbauen eines betriebsmodus in einem prozessor
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE60102017T2 (de) Räumungsfilter für adressenübersetzungspuffer
DE60103414T2 (de) Cpu, die auf ein erweitertes registerset in einem erweiterten registermodus zugreift und entsprechendes verfahren
DE60026539T2 (de) Ein-/ausgabeadressübersetzung in einer brücke in unmittelbarer nähe eines lokalen ein-/ausgabebuses
DE3587694T2 (de) Speicherzugriffssteuergerät zur Realisierung von geschützten Gebieten in einem Speicher, und mit solchem Speicherzugriffssteuergerät ausgerüsteter Speicher.
DE102007037814B4 (de) Synchronisieren eines Translation-Lookaside-Pufferspeichers mit einer erweiterten Paging-Tabelle
DE68924720T2 (de) Verfahren und Vorrichtung für Zugriffsrechtensteuerung.
DE10393920B4 (de) Verfahren und Systeme zur Steuerung virtueller Maschinen
DE60023002T2 (de) Erweiterung und abbildung auf physikalischem speicher von linearen adressen unter verwendung von 4 und 8 byte seitentabelleneinträgen in einem 32-bit mikroprozessor
DE69530776T2 (de) Zweiwege set-assoziativer cache-speicher
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE102010046892A1 (de) Management und Implementierung von Metadaten in der Zentraleinheit unter Verwendung von Registererweiterungen
DE69028269T2 (de) Virtuelles Adressierungsverfahren zum Betrieb eines Speichers in einer Datenverarbeitungsanlage und Einrichtung zur Ausführung besagten Verfahrens
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE19735981A1 (de) Mehrprozessorbetrieb in einem Multimedia-Signalprozessor
DE112013002956T5 (de) Vorabladen von Verzweigungsvorhersagen
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE202016107437U1 (de) Daten-Caching
DE60014438T2 (de) Anrufgatterexpansion für 64 bit adressierung
DE102018125665A1 (de) Vorrichtung und verfahren zum pausieren einer prozessortrace für eine effiziente analyse
DE3650006T2 (de) Verfahren und Mittel zum Transportieren von Bytes in einem Rechner mit reduziertem Befehlssatz.
DE3932695A1 (de) Datenverarbeitungssystem vom mehrfach virtuellen adressraum-typ
DE19882617B4 (de) Speicherattributpalette

Legal Events

Date Code Title Description
8364 No opposition during term of opposition