DE60103414T2 - Cpu, die auf ein erweitertes registerset in einem erweiterten registermodus zugreift und entsprechendes verfahren - Google Patents

Cpu, die auf ein erweitertes registerset in einem erweiterten registermodus zugreift und entsprechendes verfahren Download PDF

Info

Publication number
DE60103414T2
DE60103414T2 DE60103414T DE60103414T DE60103414T2 DE 60103414 T2 DE60103414 T2 DE 60103414T2 DE 60103414 T DE60103414 T DE 60103414T DE 60103414 T DE60103414 T DE 60103414T DE 60103414 T2 DE60103414 T2 DE 60103414T2
Authority
DE
Germany
Prior art keywords
register
extended
cpu
bit
registers
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
DE60103414T
Other languages
English (en)
Other versions
DE60103414D1 (de
Inventor
S. David CHRISTIE
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.)
GlobalFoundries 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
Application granted granted Critical
Publication of DE60103414D1 publication Critical patent/DE60103414D1/de
Publication of DE60103414T2 publication Critical patent/DE60103414T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Description

  • Hintergrund der Erfindung
  • Technisches Gebiet
  • Die Erfindung betrifft Mikroprozessoren und insbesondere Mechanismen zum Erweitern des Registeradressenraums in einer existierenden Mikroprozessorarchitektur.
  • Stand der Technik
  • Mikroprozessorhersteller entwickeln stetig neue Produkte, die ×86 Befehle ausführen, um die Kompatibilität mit der großen Menge an für vorhergehende 80×86 Generationen von Software – der 8086/8, 80286, 80386 und 80486 – zu wahren. Das Wahren der Softwarekompatibilität hat neueren Produkten zahlreiche architektonische Kompromisse abverlangt. Um die Funktionen früherer Produkte zu bewahren, wurde die Mikroprozessorhardware oft einfach modifiziert oder erweitert, um die Fähigkeiten und die Leistung zu steigern.
  • Der ×86 Befehlssatz ist relativ komplex und durch eine Vielzahl von Befehlen variabler Bytelänge gekennzeichnet. 1 zeigt ein generisches Format eines ×86 Befehls 10. bei einem ×86 Befehl 10 können mehrere optionale Präfixbytes 12 1-2 Operationscodebytes (Opcode) in einem Opcodefeld 14 vorangehen. Ein optionales Adressiermodusbyte (Mod R/M) 16 kann dem Opcodefeld 14 folgen. Ein optionales Scale-Index-Byte (SIB) 18 kann auf das optionale Mod R/M Byte 16 folgen. Ein optionales Verschiebungsfeld 20 kann auf das optionale SIB Byte 18 folgen, und ein optionales Direktdatenfeld 22 kann auf das optionale Verschie bungsfeld 20 folgen. Das optionale Verschiebungsfeld 20 enthält eine bei Adressenberechnungen verwendete Konstante und das optionale Direktdatenfeld 22 enthält eine als Befehlsoperand verwendete Konstante.
  • Die 1–2 Opcodebytes im Opcodefeld 14 definieren die grundlegende Operation des ×86 Befehls 10. die grundlegende Operation umfaßt üblicherweise wenigstens einen Operanden. Da die ×86 Architektur keine Transfers von Speicher zu Speicher ermöglicht, ist mindestens einer der Operanden stets ein Register (d.h. ein Registeroperand). Die drei geringstwertigen Bits eines Opcodebytes können einen Registeroperanden angeben. Die kürzesten ×86 Befehle sind nur ein Byte lang und umfassen ein einzelnes Opcodebyte. Es sei darauf hingewiesen, daß 80286 ein Maximum für einen ×86 Befehl von 10 Bytes vorgibt, während 80386 und 80486 ×86 Befehlslängen von bis zu 15 Bytes zulassen.
  • Die Operation eines ×86 Befehls kann durch Präfixbytes 12 modifiziert werden. Ein Präfixbyte 12 kann beispielsweise die Größe der Adresse oder des Operanden des ×86 Befehls verändern, das bei der Speicheradressierung verwendete Voreinstellungssegment deaktivieren, oder einen den ×86 Befehl ausführenden Prozessor anweisen, eine Stringoperation mehrfach zu wiederholen. Es sei darauf hingewiesen, daß die Größe eines Befehlsoperanden die Anzahl er Bits im Operanden oder die "Breite" des Operanden in Bits betrifft.
  • Das optionale Mod R/M Byte 16 spezifiziert verwendete Register sowie Speicheradressiermodi. 2 zeigt die Felder des Mod R/M Byte 16. Wie in 2 dargestellt, ist das Mod R/M Byte 16 in drei Felder unterteilt: ein Modusfeld (MOD), ein Register/Opcodefeld (REG/OP) und ein Register/Speicherfeld (R/M). der Inhalt des MOD Felds bestimmt, wie das R/M Feld und das Verschiebungsfeld 20 interpretiert werden. Das REG/OP Feld dien entweder der Spezifizierung eines Registeroperanden oder dem Halten zusätzlicher Opcodebits. Das R/M Feld spezifiziert entweder einen Registeroperanden oder einen Speicheroperanden, je nach dem Inhalt des MOD Felds.
  • Das optionale SIB Byte 18 wird nur bei der 32-Bit basisbezogenen Adressierung unter Verwendung von Skalierungs- und Indexfaktoren benutzt. 3 zeigt die Felder des SIB Bytes 18. Wie in 3 dargestellt, ist das SIB Byte 18 in drei Fel der unterteilt: ein SCALE Feld, ein INDEX Feld und ein BASIS Feld. Das BASIS Feld gibt an, welches Register einen Basiswert für eine Adressenberechnung enthält. Das INDEX Feld gibt an, welches Register einen Indexwert für die Adressenberechnung enthält, und das SCALE Feld gibt das Quadrat an, mit dem der Indexwert multipliziert wird, bevor er zusammen mit jeglicher Verschiebung zum Basiswert addiert wird.
  • In den geringstwertigen drei Bits eines Opcodebytes können Bezüge zu einem bestimmten Register der ×86 Architektur auftreten, beispielsweise das REG/OP Feld des optionalen Mod R/M Bytes 16, das R/M Feld des optionalen Mod R/M Bytes 16 oder die BASIS und INDEX Felder des optionalen SIB Bytes 18. Es sind also vier Bezüge zu einem Register in einem ×86 Befehl möglich. Wie zuvor beschrieben, können die drei geringstwertigen Bits eines Opcodebytes einen Registeroperanden angeben. Die REG/OP und R/M Felder des Mod R/M Bytes 16 können Quellen- und Zielregister angeben. Die BASIS und INDEX Felder des SIB Bytes 18 können Register angeben, die Basis- und Indexwerte enthalten, die bei der Operandenadressenberechnung für Speicherzugriffe verwendet werden. Es sei darauf hingewiesen, daß nur drei der vier Registerbezüge in einem bestimmten ×86 Befehl auftreten können.
  • Ein erheblicher Nachteil der ×86 Architektur ist die relativ geringe Zahl an Allzweckregistern. Die ×86 Architektur definiert gegenwärtig acht 32-Bit Allzweckregister: EAX, EBX, ECX, EDX, ESP, EDP, EBP, ESI und EDI. Dagegen weisen typische RISC Prozessoren mindestens 32 Allzweckregister auf. Ein großer Registersatz ermöglicht das Speichern von mehr Operanden in der Registerdatei mit relativ schnellem Zugriff, anstatt in einem Speicher mit relativ langsamem Zugriff. Moderne Compiler sind ebenfalls in der Lage, eine größere Anzahl von Registern zu nutzen, um eine höhere Befehlsebenenparallelität für eine erhöhte superskalare Ausführungsleistung zu erreichen. Neben der begrenzten Zahl von ×86 Registern wird deren Verwendung durch den Compiler oft dadurch verkompliziert, daß die meisten spezielle implizite Verwendungen in verschiedenen Befehlen haben.
  • EP-A-0942357 offenbart einen Datenprozessor, der mit mehreren Befehlsformaten kompatibel ist. Ein erstes Befehlsformat definiert ein Registeradressierfeld einer vorbestimmten Größe, während ein zweites Befehlsformat ein größeres Registeradressierfeld definiert. Wenn ein empfangener Befehl als im ersten Befehlsformat erkannt wird, führt der Prozessor den Befehl unter Verwendung von Daten aus, die in einer ersten Registerdatei gehalten sind. Wenn der Befehl als in dem zweiten Befehlsformat vorliegend erkannt wird, führt der Prozessor den Befehl unter Verwendung von Daten aus, die in einer zweiten Registerdatei enthalten sind, wobei die erste Registerdatei mehr Register enthält als die zweite Registerdatei.
  • US-A-6014739 der Anmelderin offenbart einen Mikroprozessor mit einer Registerdatei, die einen Standardregistersatz und einen erweiterten Registersatz enthält. Eine Befehlsdecoderschaltung empfängt einen Befehl, der ein Erweiterungsregisterschlüsselfeld enthält, das als Standardregisterfeld dient, wenn das Erweiterungsregisterschlüsselfeld einen anderen als den Erweiterungsregisterschlüsselwert enthält.
  • US-A-5935240 offenbart einen Befehl zum Übertragen gepackter Daten von einer erweiterten Registerdatei und entweder einer Ganzzahlenregisterdatei oder einem Speicher. Der Befehl weist einen Opcode auf, der die Richtung des Transfers in bezug auf die erweiterte Registerdatei angibt.
  • Es wird eine Zentralverarbeitungseinheit (CPU) mit einer Registerdatei und einem mit der Registerdatei verbundenen Ausführungskern beschrieben. Die Registerdatei weist einen Standardregistersatz und einen erweiterten Registersatz auf. Der Standardregistersatz weist mehrere Standardregister auf und der erweiterte Registersatz weist mehrere erweiterte Register auf. Der Ausführungskern holt Befehle und führt diese aus und empfängt ein Signal, das einen Betriebsmodus der CPU angibt. Der Ausführungskern reagiert auf einen Befehl durch den Zugriff auf wenigstens ein erweitertes Register, wenn das Signal angibt, daß die CPU in einem erweiterten Registermodus arbeitet und der Befehl einen Präfixbereich hat, der zum Zugreifen auf das wenigstens eine erweiterte Register erforderlich ist. Es wird ferner ein Computersystem beschrieben, welches die CPU enthält.
  • Die Standardregister können Allzweckregister sein, die von einer CPU Architektur in Verbindung mit dem Befehl definiert sind. Die Standardregister können bei spielsweise Allzweckregister sein, die von der ×86 Architektur definiert sind, und der Befehl kann ein Befehl des ×86 Befehlssatzes sein. Die Anzahl der Standardregister kann geringer als oder gleich der Zahl von Allzweckregistern sein, die durch die CPU Architektur definiert sind, und die Anzahl der erweiterten Register kann größer als die Zahl der von der CPU Architektur definierten Allzweckregister sein. In diesem Fall kann der Befehl ohne den Präfixbereich Registeridentifizierungsinformationen aufweisen, die ausreichen, ein gewähltes Standardregister anzugeben. Da jedoch die Zahl der erweiterten Register die Zahl der durch die CPU Architektur definierten Allzweckregister übersteigt, können die Registeridentifizierungsinformationen unzureichend sein, um ein gewähltes erweitertes Register zu identifizieren. Der Präfixbereich des Befehls enthält zusätzliche Registeridentifizierungsinformationen, die zum Identifizieren eines gewählten erweiterten Registers erforderlich sind. Das Codieren des Befehls, einschließlich des Präfixbereichs, kann somit das wenigstens eine erweiterte Register identifizieren, auf das der Ausführungskern zugreift.
  • In einem Ausführungsbeispiel weist der Standardregistersatz acht 32-Bit Allzweckregister auf, die durch die ×86 Architektur definiert sind. Die acht 32-Bit Allzweckregister können beispielsweise die Register EAX, EBX, ECX, EDX, ESP, EDP, EBP, ESI und EDI sein. Der erweiterte Registersatz kann die acht 32-Bit Allzweckregister des Standardregistersatzes und acht zusätzliche 32-Bit Register aufweisen, die nicht durch die ×86 Struktur definiert sind. Der Ausführungskern kann zum Holen und Ausführen ×86 Befehlen mit variabler Länge konfiguriert sein.
  • Der Präfixbereich kann ein Präfixbyte für erweiterte Register und das Präfixbyte kann ein Schlüsselfeld für erweiterte Register aufweisen. Der Inhalt des Schlüsselfelds für erweiterte Register kann angeben, ob das Präfixbyte für erweiterte Register die Informationen enthält, die zum Zugriff auf das wenigstens eine erweiterte Register erforderlich sind. Das Präfixbyte für das erweiterte Register kann die Informationen, die zum Zugriff auf das mindestens eine erweiterte Register erforderlich sind; nur enthalten, wenn das Schlüsselfeld für erweiterte Register einen vorbestimmten Schlüsselwert für erweiterte Register enthält (beispielsweise den binären Wert "0100").
  • Die CPU kann ein Steuerregister zum Speichern von Informationen aufweisen, die angeben, ob der erweiterte Registermodus allgemein aktiviert ist, sowie ein Flag-Register zum Speichern von Informationen, die angeben, ob der erweiterte Registermodus durch einen gegenwärtigen Prozeß aktiviert ist, und Erzeugungseinrichtungen zum Erzeugen des Signals, das den Betriebsmodus der CPU angibt. Das Signal kann angeben, daß die CPU im erweiterten Registermodus arbeitet, wenn der erweiterte Registermodus allgemein und von einem aktuellen Prozeß aktiviert ist.
  • Der Standardregistersatz kann mehrere Allzweckregister aufweisen, die durch die CPU Architektur (beispielsweise die ×86 Architektur) definiert sind, und die Breite der erweiterten Register des erweiterten Registersatzes kann größer als die Breite der Standardregister sein. Die Breite eines Registers ist die Gesamtzahl der Bits im Register. Der Ausführungskern kann auf den Befehl reagieren, indem er auf den gesamten Inhalt des wenigstens einen erweiterten Registers zugreift, wenn: (i) das Signal angibt, daß die CPU in einem erweiterten Registermodus arbeitet, (ii) der Befehl einen Präfixbereich aufweist, der zum Zugriff auf das wenigstens eine erweiterte Register erforderliche Informationen enthält, und (iii) der Präfixbereich eine Angabe darüber enthält, daß auf den gesamten Inhalt des wenigstens einen erweiterten Registers zugegriffen werden soll. Auf diese Weise können die Befehlsoperandengrößen selektiv vergrößert werden, wenn die CPU im erweiterten Registermodus arbeitet. Der Standardregistersatz kann ein Unter-Satz des erweiterten Registersatzes sein und die Standardregister können Bereiche geringerer Ordnung (geringstwertig) der erweiterten Register sein.
  • Zusätzlich zu dem zuvor beschriebenen Schlüsselfeld des erweiterten Registers kann das Präfixbyte für erweitert Register ein Operandengrößendeaktivierungsbit aufweisen. Der Wert des Operandengrößendeaktivierungsbits kann angeben, ob auf den gesamten Inhalt des wenigstens einen erweiterten Registers zugegriffen werden soll. Es sei darauf hingewiesen, daß die Größe eines Befehlsoperanden die Anzahl der Bits im Operanden oder die "Breite" des Operanden in Bits betrifft.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein generisches Format eines ×86 Befehls, wobei der ×86 Befehl ein optionales Adressiermodusbyte (Mod R/M) und ein optionales Scale-Index-Basis-Byte (SIB) aufweist;
  • 2 zeigt die Felder des Mod R/M Bytes des ×86 Befehls von 1;
  • 3 zeigt die Felder des SIB Bytes des ×86 Befehls von 1;
  • 4 ist ein Diagramm eines Ausführungsbeispiels eines Computersystems mit einer Zentralverarbeitungseinheit (CPU);
  • 5 ist ein Diagramm eines Ausführungsbeispiels der CPUI von 4, wobei die CPU einen mit einer Registerdatei verbundenen Ausführungskern aufweist;
  • 6 ist ein Diagramm zur Darstellung der Übergänge zwischen einem "32-Bit Kompatibilitätsmodus" der CPU von 5 und einem "32-Bit Registererweiterungsmodus" (REX32) der CPU;
  • 7 ist ein Diagramm exemplarischer Ausführungsbeispiele des Ausführungskerns und der Registerdatei von 5, wobei der Ausführungskern eine Decodiereinheit aufweist, die mit einer Ausführungseinheit und der Registerdatei verbunden ist, und wobei die Registerdatei einen Standardregistersatz und einen erweiterten Registersatz aufweist, und wobei die Decodiereinheit einen repräsentativen Befehl empfängt, und wobei der Befehl einen optionalen Präfixbereich enthalten kann;
  • 8 ist ein Diagramm eines Ausführungsbeispiels des optionalen Präfixbereichs des Befehls von 7, wobei der Präfixbereich ein Präfixbyte für erweiterte Register ist, das ein Schlüsselfeld für erweiterte Register, ein 64-Bit Operandengrößedeaktivierungsbit und drei Felderweiterungsbits aufweist;
  • 9 ist ein Diagramm eines Ausführungsbeispiels der Registerdatei von 7, wobei der Standardregistersatz eine Untergruppe des erweiterten Registersatzes ist;
  • 10 ist ein Diagramm eines anderen Ausführungsbeispiels der Registerdatei von 7, wobei die Registerdatei den Standardregistersatz und den erweiterten Registersatz aufweist, und ferner einen Standard-Multimediaerweiterungsregistersatz (MMX), einen erweiterten MMX Registersatz, einen Standard-Streaming-Einzelbefehl-Mehrfachdaten(SIMD)-Erweiterungs- oder SSE Registersatz, und einen erweiterten SSE Registersatz aufweist; und
  • 11 ist ein Diagramm eines Ausführungsbeispiels der im Speicher gebildeten Datenstruktur, die zum Speichern von Registerinhalten während eines Kontextwechsels verwendet wird, wobei die Datenstruktur dem Speichern des Inhalts des Standard-MMX-Registersatzes, des erweiterten MMX Registersatzes, und des Standard-SSE-Registersatzes sowie des erweiterten SSE Registersatzes dient, wobei ein zuvor unbenutzter Bereich der Datenstruktur zum Speichern des Inhalts des erweiterten Registersatzes verwendet wird.
  • Zwar kann die Erfindung in verschiedenen Modifikationen und alternativen Ausführungsbeispielen ausgebildet werden, jedoch sind spezifische Ausführungsbeispiele derselben in den Zeichnungen als Beispiele dargestellt, die im folgenden näher beschrieben werden. Es sei jedoch darauf hingewiesen, daß die Zeichnungen und die detaillierte Beschreibung derselben nicht der Einschränkung der Erfindung auf die besondere offenbarte Form dienen, sondern im Gegenteil ist beabsichtigt, sämtliche Modifikationen, Äquivalente und Alternativen abzudecken, die dem Geist und dem Rahmen der vorliegenden Erfindung gemäß den beigefügten Ansprüchen entsprechen.
  • Art(en) der Ausführung der Erfindung
  • 4 ist ein Diagramm eines Ausführungsbeispiels eines Computersystems 30 mit einer Zentralverarbeitungseinheit (CPU) 32, einer North-Bridge 34, einem Speicher 36, einem Peripheriekomponentenverbindungsbus (PCI) 38, einer South Bridge 40 und einem Industriestandardarchitekturbus (ISA) 42. Die CPU 32 führt in dem Speicher 36 enthaltene Befehle aus (beispielsweise ×86 Befehle). Die North Bridge 34 bildet ein Interface zwischen der CPU 32, dem Speicher 36 und dem PCI Bus 38. der Speicher 36 kann beispielsweise einen Halbleiterfestwertspeicher (ROM) und/oder einen Halbleiterdirektzugriffspeicher (RAM) umfassen. Die South Bridge 40 bildet ein Interface zwischen dem PCI Bus 38 und dem ISA Bus 42.
  • Das Computersystem 30 weist ferner eine erste Vorrichtung 44A, die mit dem PCI Bus 38 verbunden ist, und eine zweite Vorrichtung 44B auf, die mit dem ISA Bus 42 verbunden ist. Die Vorrichtung 44A kann beispielsweise eine Eingangs/Ausgangsvorrichtung (I/O) wie ein Modem, eine Soundkarte, ein Netzwerkadapter, etc. sein. Wie in 4 dargestellt, kann die Vorrichtung 44A mit dem ISA Bus 42 anstelle des PCI Bus 38 verbunden sein. Die Vorrichtung 44B kann beispielsweise eine periphere Vorrichtung wie eine Festplatte, ein Diskettenlaufwerk, ein Compact-Disc-Festwertspeicher(CD-ROM)-Laufwerk, etc. sein. Wie in 4 dargestellt, kann die Vorrichtung 44B mit dem PCI Bus 38 anstelle des ISA Bus 42 gekoppelt sein.
  • Die CPU 32 holt (oder überträgt) Befehle vom Speicher 36 über die North Bridge 34 und führt die Befehle aus. Im Speicher 36 gespeicherte Daten können durch die Befehle verarbeitet werden. Befehle und Daten liegen an Adressen im Speicher 36, wobei eine Adresse ein Wert ist, der eine Speicherstelle oder Speicherstellen im Speicher 36 identifiziert. Die Adressen von Befehlen und Daten können von der CPU 32 vor dem Liefern an die North Bridge 34 umgesetzt werden. In diesem Fall kann die CPU 32 Adressenumsetzhardware umfassen und der Speicher 36 kann Adressenumsetzungsinformationen speichern, die von der CPU 32 zum Umsetzen virtueller Adressen in physische Adressen verwendet werden.
  • Wie im folgenden beschrieben, weist die CPU 32 einen internen Cachespeicher (d.h. einen internen Cache) auf, der zum Speichern von Befehlen und Daten ausgebildet ist, auf welche die CPU 32 zuvor zugegriffen hat. Das Computersystem 30 kann ferner einen externen Cache aufweisen, der zum Speichern von Befehlen und Daten ausgebildet ist, auf welche die CPU 32 zuvor zugegriffen hat.
  • Es ist selbstverständlich, daß Informationen, die als im Speicher 36 gespeichert bezeichnet werden, im internen Cache der CPU 32 oder einem externen Cache des Computersystems 30 gespeichert sein können.
  • 5 ist ein Diagramm eines Ausführungsbeispiels der CPU 32 von 4. Andere Ausführungsbeispiele der CPU 32 sind möglich und beabsichtigt. Bei dem Ausführungsbeispiel von 5 weist die CPU 32 einen Befehlscache 50, einen Ausführungskern 52, einen Datencache 54, eine Interfaceeinheit 56, eine Decodiersteuereinheit 58 und eine Registerdatei 60 auf. Der Befehlscache 50 ist mit dem Ausführungskern 52, der Decodiersteuereinheit 58 und der Interfaceeinheit 56 verbunden. Der Ausführungskern 52 ist mit der Decodiersteuereinheit 58, der Registerdatei 60 und dem Datencache 54 verbunden. Der Datencache 54 ist mit dem Ausführungskern 52, der Decodiersteuereinheit 58 und der Interfaceeinheit 56 verbunden. Die Interfaceeinheit 56 ist mit dem Befehlscache 50, dem Datencache 54, der Decodiersteuereinheit 58 und der North Bridge 34 verbunden (4).
  • Die Decodiersteuereinheit 58 weist ein Steuerregister 62 auf. Die Decodiersteuereinheit 58 weist ferner ein Flag-Register 64 auf, das den Status der CPU 32 berichtet und steuert. Das Flag-Register 64 kann ein ×86 Flag-Register sein. Moderne ×86 Prozessoren weisen ein 32-Bit erweitertes Flag- oder "EFLAGS"-Register auf. Das Flag-Register 34 ist daher vorzugsweise das 32-Bit EFLAGS Register moderner ×86 Prozessoren.
  • Allgemein gesagt verwendet die CPU 32 eine Prozessorarchitektur, die mit der ×86 Architektur kompatibel ist, und weist zusätzliche architektonische Merkmale zur Unterstützung der 64-Bit-Verarbeitung auf. Die CPU 32 erstellt einen Betriebsmodus in Reaktion auf Freigabeangaben, die im Steuerregister 62 und im Flag-Register 64 gespeichert sind.
  • In diesem Zusammenhang spezifiziert ein "Betriebsmodus" der CPU 32 Voreinstellungswerte für verschiedene programmierbar wählbare Prozessorattribute. Bei den beschriebenen Ausführungsbeispielen spezifiziert der Betriebsmodus der CPU 32 eine voreingestellte Operandengröße. Es sei darauf hingewiesen, daß die Größe eines Befehlsoperanden sich auf die Anzahl der Bits in dem Operanden oder die "Breite" des Operanden in Bits bezieht. Wie im folgenden näher beschrieben, kann die Codierung eines Befehls die voreingestellte Operandengröße deaktivieren.
  • Bei dem Ausführungsbeispiel von 5 erzeugt die Decodiersteuereinheit 58 ein Betriebsmodussignal, das einen Betriebsmodus der CPU 32 angibt, und liefert das Betriebsmodussignal an den Ausführungskern 52. der Ausführungskern 52 führt Befehle in Abhängigkeit vom Betriebsmodussignal aus (d.h. vom Betriebsmodus der CPU 32). Die Betriebsmodi der CPU 32 weisen einen "32-Bit Kompatibilitätsmodus" und einen "32-Bit Registererweiterungs-" oder "REX32"-Modus auf. In beiden Modi beträgt die voreingestellte Operandengröße 32 Bits. IM REX32 Modus können Befehle die voreingestellte 32-Bit Operandengröße durch eine 64-Bit Operandengröße entsprechend den Codierungen der Befehle wie im folgenden beschrieben verändern. Wie des weiteren im folgenden beschrieben, können Felderweiterungsbits in Codierungen von Befehlen im REX32 Modus 74 vorgesehen sein, um die Zahl der Register zu erhöhen, auf die im Befehl verwiesen werden kann.
  • Der REX32 Modus wird durch ein REX32 Bit 63 im Steuerregister 62 und ein "RX" Bit 66 im Flag-Register 64 freigegeben. Das REX32 Bit 63 bewirkt eine globale Freigabe des REX32 Modus. Der REX32 Modus kann beispielsweise freigegeben werden, wenn ein logischer Wert "1" im REX32 Bit 63 gespeichert ist, un dder REX32 Modus kann deaktiviert werden, wenn ein logischer Wert "0" im REX32 Bit 63 gespeichert ist. Das REX32 Bit 63 ist vorzugsweise mit einem Code mit einem relativ hohen Zugriffs- oder Privileglevel geschrieben (beispielsweise "privilegierter Code" wie ein Betriebssystem, ein Grund-Eingangs-/Ausgangssystem oder BIOS oder eine Supervisormodusanwendung).
  • Es sei darauf hingewiesen, daß das Steuerregister 62 eines der Steuerregister sein kann, die durch den aktuellen Zustand der ×86 Architektur definiert sind, und ein Zugriff kann somit mittels bekannter Verfahren erfolgen. Das REX32 Bit 63 kann beispielsweise ein Bit in einem der aktuell definierten 32-Bit Steuerregister CRO-CR4 sein. Alternativ kann das Steuerregister 62 eines der modellspezifischen Register sein, die durch den aktuellen Zustand der ×86 Architektur definiert sind, und ein Zugriff kann somit unter Verwendung der existierenden mo dellspezifischen Leseregister- (RDMSR) und der modellspezifischen Schreibregisterbefehle (WRMSR) erfolgen.
  • Das RX Bit 66 bewirkt eine prozeßspezifische Freigabe des REX32 Modus. Ein von der CPU 32 aktuell ausgeführtes Anwendungsprogramm (d.h. ein aktueller Prozeß) kann den REX32 Modus durch Setzen des RX Bits 66 aktivieren. Der REX32 Modus muß durch das REX32 Bit 63 aktiviert werden, bevor der Prozeß durch Setzen des RX Bits 66 in den REX32 Modus übergehen kann. Wenn der REX32 Modus durch das REX32 Bit 63 aktiviert ist, kann der aktuelle Vorgang in den REX32 Modus eintreten, indem er einen logischen Wert "1" im RX Bit 66 speichert. Nur wenn das REX32 Bit 64 und das RX Bit 66 beide gesetzt sind, erzeugt die Decodiersteuereinheit 58 das den REX32 Modus angebende Betriebsmodussignal. Der aktuelle Vorgang kann den REX32 Modus verlassen, indem er einen logischen Wert "0" im RX Bit 66 speichert.
  • Zwei hier eingeführte neue ×86 Befehle können von Anwendungsprogrammen verwendet werden, um das RX Bit 66 in dem Flag-Register zu setzen und zu löschen. Ein neuer "STX" Befehl speichert einen logischen Wert "1" im REX32 Bit 63 und ein neuer "CLX" Befehl speichert einen logischen Wert "0" im REX32 Bit 63. Der STX und der CLX Befehl wirken vorzugsweise unmittelbar nach der Ausführung des Befehls. Die Verwendung der STX und CLX Befehle bei nicht durch das REX32 Bit 63 freigegebenem (d.h. deaktiviertem) REX32 Modus kann zu einer "nicht definierten Opcode"-Ausnahme führen.
  • Wie zuvor beschrieben, definiert der Betriebsmodus eine voreingestellte Operandengröße. Wenn die Codierung eines bestimmten Befehls die voreingestellte Operandengröße nicht deaktiviert, führt der Ausführungskern 52 Operationen mit Operanden aus, welche die voreingestellte Operandengröße haben. Wenn andererseits die Codierung des Befehls die voreingestellte Operandengröße deaktiviert, führt der Ausführungskern 52 Operationen mit Operanden aus, welche die deaktivierende Operandengröße haben.
  • Der Ausführungskern 52 holt Registeroperanden aus der Registerdatei 60 und holt Speicheroperanden aus dem Datencache 54. Wenn die Speicheroperanden im Cache speicherbar sind und im Datencache 54 vorliegen, liefert der Datenca che 54 die Speicheroperanden an den Ausführungskern 52. wenn die Speicheroperanden nicht im Cache speicherbar sind und nicht im Datencache 54 vorliegen, erhält der Datencache 54 die Speicheroperanden vom Speicher 36 über die Interfaceeinheit 56 und die North Bridge 34 (4) und liefert die Speicheroperanden an den Ausführungskern 52.
  • 6 ist ein Diagramm 70 zur Darstellung der Übergänge zwischen dem 32-Bit Kompatibilitätsmodus, der mit 72 bezeichnet ist, und dem mit 74 bezeichneten REX32 Modus der CPU 32 von 5. Wie zuvor beschrieben, beträgt die voreingestellte Operandengröße sowohl im 32-Bit Kompatibilitätsmodus 72, als auch im REX32 Modus 74 32 Bits. Im REX32 Modus können jedoch Befehle die voreingestellte 32-Bit Operandengröße durch eine 64-Bit Operandengröße gemäß den Codierungen der Befehle deaktivieren. Wie im folgenden näher beschrieben, können in den Codierungen der Befehle im REX32 Modus 74 Felderweiterungsbits vorgesehen sein, um die Anzahl der Register zu erhöhen, auf die in den Befehlen verwiesen wird.
  • Wie in 6 angegeben, geht die CPU 32 in den REX32 Modus 74 über, wenn die CPU 32 im 32-Bit Kompatibilitätsmodus 72 arbeitet, falls das allgemeine Freigabebit REX32 63 und das prozeßspezifische Freigabebit RX 66 beide den logischen Wert "1" aufweisen. Wie zuvor beschrieben, kann ein privilegierter Code, beispielsweise "privilegierter Code" wie ein Betriebssystem, ein Grund-Eingangs-/Ausgangssystem oder BIOS oder eine Supervisormodusanwendung, eine logische "1" im allgemeinen Freigabebit REX32 63 speichern. Ein von der CPU 32 aktuell ausgeführtes Anwendungsprogramm (d.h. ein aktueller Prozeß), bei dem die CPU 32 im 32-Bit Kompatibilitätsmodus 72 arbeitet, kann eine logische "1" im RX Bit 66 speichern, um in den REX32 Modus 74 einzutreten. Die CPU 32 geht vom REX32 Modus 74 in den 32-Bit Kompatibilitätsmodus 72 über, wenn entweder das allgemeine Freigabebit REX32 63 oder das prozeßspezifische Freigabebit RX 66 logisch "0" ist. Beispielsweise kann der aktuelle Prozeß mit im REX32 Modus 74 arbeitender CPU 32 eine logische "0" im RX Bit 66 speichern, um den REX32 Modus 74 zu verlassen und in den 32-Bit Kompatibilitätsmodus 72 zurückzukehren.
  • Wie wiederum aus der 5 ersichtlich, kann die CPU 32 auch eine Speicherverwaltungseinheit mit Paging-Hardware aufweisen, um eine Paging-Adressenumsetzung von virtuellen Adressen in physische Adressen zu implementieren. Eine "virtuelle Adresse" ist eine vor der Umsetzung durch einen Adressenumsetzungsmechanismus (beispielsweise einen Paging-Mechanismus) in eine "physische Adresse" erzeugte Adresse, welche die für den Zugriff auf einen Speicher tatsächlich verwendet Adresse ist. Die Paging-Hardware kann einen Umysetzungs-Lookaside-Puffer (TLB) aufweisen, um Page-Umsetzungen zu speichern.
  • Der Befehlscache 50 ist ein Hochgeschwindigkeitsspeicher zum Speichern von Befehlen. Der Ausführungskern 52 holt Befehle aus dem Befehlscache 50 zur Ausführung. Der Befehlscache 50 kann jede geeignete Cacheorganisation verwenden, einschließlich direkt abgebildete, satz-assoziative und voll assoziative Konfigurationen. Wenn ein angeforderter Befehl nicht im Befehlscache 50 vorliegt, kann der Befehlscache 50 mit der Interfaceeinheit 56 kommunizieren, um den angeforderten Befehl zu erhalten. Eine derartige Kommunikation kann zum Füllen/Ersetzen einer Cachetzeile im Befehlscache 50 führen. Darüber hinaus kann der Befehlscache 50 mit der Speicherverwaltungseinheit kommunizieren, um physische Adressenumsetzungen für virtuelle Adressen zu erhalten, die aus den Befehlscache 50 geholt wurden.
  • Der Ausführungskern 52 führt aus dem Befehlscache 50 geholte Befehle aus. Der Ausführungskern 52 erhält Registeroperanden von der Registerdatei 60 und speichert Registerergebniswerte in der Registerdatei 60. die Größe der Operanden hängt vom Betriebsmodus der CPU 32 ab und kann wie beschrieben durch Befehle deaktiviert werden. Der Ausführungskern 52 erhält Speicheroperanden aus dem Datencache 54 und liefert Speicherergebniswerte an den Datencache 54, wie im folgenden beschrieben.
  • Der Ausführungskern 52 kann jeden geeigneten Aufbau haben. Beispielsweise kann der Ausführungskern 52 ein "Superpipeline"-Kern, ein superskalarer Kern oder eine Kombination derselben sein. Der Ausführungskern 52 kann je nach der Wahl des Designs eine Ausführen außerhalb der Reihenfolge oder entsprechend der Reihenfolge verwenden.
  • Der Datencache 54 ist ein Hochgeschwindigkeitsspeicher für das Speichern von Daten. Der Datencache 54 kann jede geeignete Cacheorganisation verwenden, einschließlich direkt abgebildete, satz-assoziative und voll assoziative Konfigurationen. Wenn der Wert eines Speicheroperanden nicht im Datencache 54 vorhanden ist, kann der Datencache 54 mit der Interfaceeinheit 56 kommunizieren, um auf den Speicheroperanden zuzugreifen. Eine derartige Kommunikation kann zum Füllen/Ersetzen einer Cachezeile im Datencache 54 führen. Wenn der Datencache 54 eine Rückschreibcachevorgehensweise verfolgt, können ersetzte aktualisierte Cachezeilen der Interfaceeinheit 56 zum Zurückschreiben in den Speicher zugeführt werden. Der Datencache 54 kann mit der Speicherverwaltungseinheit kommunizieren, um physische Adressenumsetzungen für dem datencache 54 gelieferte virtuelle Adressen zu erhalten.
  • Die Interfaceeinheit 56 kommuniziert mit der North Bridge 34 (4). In Reaktion auf Anforderungen aus dem Befehlscache 50, erhält die Interfaceeinheit Befehle aus dem Speicher 36 (4) über die North Bridge 34 und liefert die Befehle an den Befehlscache 50. die Interfaceeinheit 56 überträgt ferner Speicheroperanden zwischen der North Bridge 34 und dem Datencache 54, wie zuvor beschrieben.
  • 7 ist ein Diagramm exemplarischer Ausführungsbeispiele des Ausführungskerns 52 und der Registerdatei 60 der 5. bei dem Ausführungsbeispiel der 5 weist der Ausführungskern 52 eine Decodiereinheit 76 auf, die mit einer Ausführungseinheit 78 und der Registerdatei 60 verbunden ist. In 7 ist die Decodiereinheit 76 als einen repräsentativen Befehl 80 empfangend dargestellt. Der Befehl 80 ist vorzugsweise ein ×86 Befehl und kann einen optionalen Präfixbereich 82 aufweisen. Wie im folgenden beschrieben, enthält der Präfixbereich Informationen, die für den Zugriff auf das wenigstens eine erweiterte Register erforderlich sind.
  • Die Decodiereinheit 76 erkennt jede Registerquellenoperandenreferenz in Befehlen und fordert die Operandenwerte aus der Registerdatei 60. die Registerdatei 60 überträgt die angeforderten Quellenoperandenwerte an die Ausführungseinheit 78. Gleichzeitig (beispielsweise während des selben Taktzyklus) kann der decodierte Befehl von der Decodiereinheit 76 zur Ausführungseinheit 78 übertragen werden. Auf diese Weise werden der decodierte Befehl und die Operanden üblicherweise an die Ausführungseinheit 78 zur gleichen Zeit (beispielsweise während des selben Taktzyklus) übertragen.
  • Die Ausführungseinheit 78 führt decodierte Befehle aus, die von der Decodiereinheit 76 geliefert werden. Die Ausführungseinheit 78 kann auch zur Bildung von Adressen für Speicheroperanden verwendet werden und kann die Speicheroperandenadressen an den Datencache 54 liefern (5). Wie zuvor beschrieben, kann der Datencache 54 für das Liefern von Speicheroperanden an die Ausführungseinheit 78 verantwortlich sein. Der Datencache 54 kann die Speicheroperandenadressen an Paging-Hardware in der Speicherverwaltungseinheit liefern, um diese von virtuellen Adressen in physische Adressen umsetzen zu lassen. Wenn der Wert eines Speicheroperanden nicht im Datencache 54 vorhanden ist, kann der Datencache 54 die Speicheroperandenadresse an die Interfaceeinheit 56 übertragen, um diese über die North Bridge 34 (4) im Speicher (4) finden zu lassen.
  • Die Ausführungseinheit 78 liefert jedes Ergebnis der Befehlsausführung entweder an die Registerdatei 60 oder an den Datencache 54 (5). Wenn das Ergebnis ein im Register zu speichernder Wert ist, liefert die Ausführungseinheit 78 das Ergebnis an die Registerdatei 60. wenn das Ergebnis ein an einer Speicherstelle zu speichernder Wert ist, liefert die Ausführungseinheit 78 das Ergebnis und die entsprechende Adresse der Speicherstelle an den Datencache 54. wenn der Inhalt der Speicherstelle nicht im Datencache 54 vorhanden ist, kann der Datencache 54 das Ergebnis und die entsprechende Adresse der Speicherstelle an die Interfaceeinheit 56 liefern. Die Interfaceeinheit 56 kann den Wert an der entsprechenden Speicherstelle des Speichers 36 (4) über die North Bridge 34 (4) speichern.
  • Bei dem Ausführungsbeispiel nach 7 weist die Registerdatei 60 einen Standardregistersatz 84 und einen erweiterten Registersatz 86 auf. Der Standardregistersatz 84 umfaßt die acht 32-Bit Allzweckregister EAX, EBX, ECX, EDX, ESP, EDP, EBP, ESI und EDI, die durch die ×86 Architektur definiert sind. Der erweiterte Registersatz 86 kann beispielsweise acht zusätzliche oder erweiterte Regi ster aufweisen. Wie im folgenden beschrieben, können die erweiterten Register des erweiterten Registersatzes 86 64-Bit Register sein.
  • Der Befehl 80 kann ein ×86 Befehl sein, der 3 Bits an Registeroperandenidentifizierungsinformationen aufweist, um jedes der darin bezeichneten acht ×86 Allzweckregister zu identifizieren. Die Zahl der erweiterten Register im erweiterten Registersatz 86 übersteigt jedoch die acht Allzweckregister, die durch die ×86 Architektur definiert sind. Daher sind die 3 Bits an Registeroperandenidentifizierungsinformationen, die im Befehl 80 zum Identifizieren eines gewählten der acht ×86 Allzweckregister verwendet werden, unzureichend, um ein gewähltes der erweiterten Register zu identifizieren. Der Präfixbereich 82 des Befehls 80 dient somit dem Liefern zusätzlicher Registeridentifizierungsinformationen, die zum Identifizieren eines ausgewählten erweiterten Registers erforderlich sind. Die Codierung des Befehls 80, einschließlich des Präfixbereichs 82, kann somit jedes darin angegebene erweiterte Register identifizieren.
  • Wenn die CPU 32 (5) im REX32 Modus arbeitet und der Befehl 80 einen Registerquellenoperanden identifiziert, jedoch keinen optionalen Präfixbereich 82 aufweist, fordert die Decodiereinheit 76 den Inhalt eines entsprechenden Standardregistersatzes 84 aus der Registerdatei 60. die Ausführung des Befehls 80 erfolgt sodann unter Verwendung des Standardregisters des Standardregistersatzes 84 der Registerdatei 60. Wenn andererseits die CPU 32 im REX32 Modus arbeitet und der Befehl 80 den optionalen Präfixbereich 82 aufweist und auf einen Registerquellenoperanden verweist, fordert die Decodiereinheit 76 den Inhalt eines entsprechenden erweiterten Registers des erweiterten Registersatzes 86 von der Registerdatei 60. die Ausführung des Befehls 80 erfolgt unter Verwendung des erweiterten Registers des Registersatzes 86 der Registerdatei 60.
  • Die Decodiereinheit 76 kann ein Operandengrößensignal erzeugen und an die Ausführungseinheit 78 liefern, das die Operandengröße des Befehls 80 angibt. Die Decodiereinheit 76 kann das von der Decodiersteuereinheit 58 erzeugte und den Betriebsmodus der CPU 32 angebende Betriebsmodussignal empfangen. Wenn das Betriebsmodussignal angibt, daß die CPU 32 im REX32 Modus arbeitet, und der Befehl 80 einen Präfixbereich 82 aufweist, kann die Decodiereinheit 76 beispielsweise das Operandengrößensignal aktivieren, wodurch angegeben wird, daß die Operandengröße für den Befehl 80 64 Bit beträgt. Wenn das Betriebsmodussignal angibt, daß die CPU 32 im REX32 Modus arbeitet, und der Befehl 80 keinen Präfixbereich 82 aufweist, kann die Decodiereinheit 76 beispielsweise das Operandengrößensignal deaktivieren, wodurch angegeben wird, daß die Operandengröße für den Befehl 80 32 Bit ist.
  • Wenn das Operandengrößensignal aktiviert ist, kann die Ausführungseinheit 78 Operationen mit 64-Bit Operanden durchführen. Die Ausführungseinheit 78 kann 64-Bit erweiterte Registeroperanden von der Registerdatei 60 empfangen und 64-Bit erweiterte Registerergebniswerte in der Registerdatei 60 speichern. Wenn andererseits das Operandengrößensignal deaktiviert ist, kann die Ausführungseinheit 78 Operationen mit 32-Bit Operanden ausführen. Die Ausführungseinheit 74 kann 32-Bit Registeroperanden von der Registerdatei 60 empfangen und 32-Bit Registerergebniswerte in der Registerdatei 60 speichern.
  • Die Ausführungseinheit 78 kann die 32-Bit Speicheroperandenwerte, die sie von dem Datencache 54 empfangen hat, mit vorangestellten Nullen "polstern", um 64-Bit Operanden zu bilden. Die Ausführungseinheit 78 kann ferner die geringerwertigen (d.h. die geringswertigen) 32 Bits der 64-Bit Speicherergebniswerte zum Speichern an den Datencache 54 liefern. Alternativ kann die Ausführungseinheit 78 das Operandengrößensignal an den Datencache 54 liefern, und die Größen der Speicheroperanden, die zwischen dem Ausführungskern 52 und dem Datencache 54 übertragen werden, können von dem Operandengrößensignal abhängen. Wenn beispielsweise das Operandengrößensignal aktiviert ist, kann die Ausführungseinheit 78 64-Bit Speicheroperanden vom Datencache 54 erhalten und können 64-Bit Speicherergebniswerte an den Datencache 54 übertragen. Wenn andererseits das Operandengrößensignal deaktiviert ist, kann die Ausführungseinheit 78 32-Bit Speicheroperanden vom Datencache 54 erhalten und kann 32-Bit Speicherergebniswerte an den Datencache 54 liefern.
  • Die Decodiereinheit 76 kann ferner ein Ausnahmesignal in Abhängigkeit vom Betriebsmodussignal und dem Vorhandensein oder der Abwesenheit des Präfixbereichs 82 im Befehl 80 erzeugen. Wenn der Befehl 80 einen Präfixbereich 82 aufweist, und das Betriebsmodussignal angibt, daß die CPU 32 nicht im REX32 Modus arbeitet, kann die Decodiereinheit 76 beispielsweise das Ausnahmesignal aktivieren. Das aktivierte Ausnahmesignal kann zu einer Ausnahme "Vorrichtung nicht verfügbar" führen.
  • 8 ist ein Diagramm eines Ausführungsbeispiels des optionalen Präfixbereichs 82 des Befehls 80 von 7. Bei dem Ausführungsbeispiel der 8 ist der Präfixbereich ein erweitertes Registerpräfixbyte 90 mit einem erweiterten Registerschlüsselfeld 92, einem 64-Bit Operandengrößendeaktivierungsbit 94 und drei Felderweiterungsbits 96, 98 und 100. Das erweiterte Registerschlüsselfeld 92 nimmt die Bits 4–7 des erweiterten Registerpräfixbytes 90 ein, und ein binärer erweiterter Registerschlüsselwert "0100" im erweiterten Registerschlüsselfeld 92, wie in 8 dargestellt, dient der Identifizierung des erweiterten Registerpräfixbytes 90. die Decodiereinheit 76 erkennt das erweiterte Registerpräfixbyte 92 über den erweiterten Registerschlüsselwert "0100" im erweiterten Registerschlüsselfeld 92. wenn das erweiterte Registerschlüsselfeld 92 keinen erweiterten Registerschlüsselwert "0100" aufweist, erkennt die Decodiereinheit 76 das Präfixbyte nicht als erweitertes Registerpräfixbyte.
  • Das 64-Bit Operandengrößendeaktivierungsbit 94 weist 3 Bits des erweiterten Registerpräfixbytes 90 auf. Das 64-Bit Operandengrößendeaktivierungsbit 94 kann beispielsweise zum Deaktivieren der voreingestellten 32-Bit Operandengröße des Befehls 80, der das erweiterte Registerpräfixbyte 90 enthält, verwendet werden (7), so daß auf 64-Bit Registeroperanden in der Registerdatei 60 zugegriffen wird (7). Die Felderweiterungsbits 96, 98 und 100 können zum Erweitern von 3-Bit-Feldern in einem Opcode, einem Mod R/M Byte und/oder einem SIB Byte des Befehls 80 auf 4 Bits dienen, wodurch auf 16 Register anstatt 8 zugegriffen werden kann. Die Felderweiterungsbits 96, 98 und 100 können somit zur Erhöhung der Anzahl der Allzweckregister in der CPU 32 dienen (4 und 5).
  • Wenn sich die CPU 32 im REX32 Modus befindet, der Befehl 80 das erweitete Registerpräfixbyte aufweist, das erweiterte Registerschlüsselfeld 92 des erweiterten Registerpräfixbytes 90 den erweiterten Registerschlüsselwert "0100" aufweist, und das 64-Bit Operandengrößendeaktivierungsbit 94 des erweiterten Registerpräfixbytes 90 logisch "0" ist, wird angenommen, daß die Registeroperandengrößen im Befehl 80 die voreingestellten 32 Bits aufweisen, und es werden 32-Bit Registeroperanden für den Befehl 80 aus der Registerdatei 60 geholt. Wenn andererseits der Wert des 64-Bit Operandengrößendeaktivierungsbit 94 logisch "1" ist, wird die voreingestellte 32-Bit Operandengröße für den Befehl 80 deaktiviert, und es werden 64-Bit Operanden für den Befehl 80 aus der Registerdatei 60 geholt.
  • Die Felderweiterungsbits 96, 98 und 100 nehmen jeweils die Bits 2, 1 und 0 des erweiterten Registerpräfixbytes 90 ein. Das Felderweiterungsbit 96 kann beispielsweise verwendet werden, um das Mod R/M Byte REG Feld von drei auf vier Bytes zu erweitern, wodurch ein erweitertes REG Feld gebildet wird. Das Felderweiterungsbit 96 kann das höchstwertige Bit des erweiterten REG Felds sein. Während das 3-Bit REG Feld zum Zugreifen auf eines von 8 verschiedenen Registern in der Registerdatei 60 verwendet wird, kann das 4-Bit erweiterte REG Feld zum Zugreifen auf eines von 16 verschiedenen Registern innerhalb der Registerdatei 60 verwendet werden.
  • Das Felderweiterungsbit 98 kann beispielsweise zum Erweitern des SIB Byte IN-DEX Felds von drei Bits auf vier verwendet werden, wodurch ein erweitertes IN-DEX Feld gebildet wird. Das Felderweiterungsbit 98 kann das höchstwertige Bit des erweiterten INDEX Felds sein. Während das 3-Bit INDEX Feld zum Zugreifen auf eines von 8 verschiedenen Registern in der Registerdatei 60 verwendet wird, kann das 4-Bit erweiterte INDEX Feld zum Zugreifen auf eines von 16 verschiedenen Registern innerhalb der Registerdatei 60 verwendet werden.
  • Das Felderweiterungsbit 100 kann beispielsweise zum Erweitern des Mod R/M Byte R/M Feldes, des SIB Byte BASIS Felds oder eines Opcoderegisterreferenzfelds von drei Bits auf vier verwendet werden, wodurch ein erweitertes Feld gebildet wird. Das Felderweiterungsbit 100 kann das höchstwertige Bit des erweiterten Felds sein. Während das 3-Bit Feld zum Zugreifen auf eines von 8 verschiedenen Registern in der Registerdatei 60 verwendet wird, kann das 4-Bit erweiterte Feld zum Zugreifen auf eines von 16 verschiedenen Registern innerhalb der Registerdatei 60 verwendet werden.
  • 9 ist ein Diagramm eines Ausführungsbeispiels der Registerdatei 60 der 7, wobei der Standardregistersatz 84 eine Untergruppe des erweiterten Register satzes 86 ist. Wie zuvor beschrieben, umfaßt der Standardregistersatz 84 die acht 32-Bit Allzweckregister EAX, EBX, ECX, EDX, ESP, EDP, EBP, ESI und EDI, die mit 0–7 numeriert sind. Der erweiterte Registersatz 80 weist sechzehn 64-Bit Register auf, die von 0–15 numeriert sind. Die 32-Bitregister 0–7 des Standardregistersatzes 84 bilden 32-Bit Bereiche geringerer Ordnung (d.h. geringstwertige Bereiche) jeweiliger 64-Bit Register 0–7 des erweiterten Registersatzes 86. wie in 9 dargestellt, ist der erweiterte Registersatz 86 dem Standardregistersatz 84 übergeordnet.
  • 9 zeigt ferner den Effekt des erweiterten Registerpräfixbytes 90 der 8 auf Register innerhalb der Registerdatei 60. die Bits 0–2 (Felderweiterungsbits 100, 98 und 96) des erweiterten Registerpräfixbytes 90 ermöglichen es dem Befehl 80, die gewählten Register des erweiterten Registersatzes 86 zu identifizieren. Wenn das Bit 3 (d.h. das 64-Bit Operandengrößendeaktivierungsbit 94) des erweiterten Registerpräfixbytes 90 gelöscht ist (d.h. eine logische "0"), wird nur auf die (geringstwertigen) 32 Bits niedrigerer Ordnung der erweiterten Register im erweiterten Registersatz 86 zugegriffen. Wenn das Bit 3 (d.h. das 64-Bit Operandengrößendeaktivierungsbit 94) des erweiterten Registerpräfixbytes 90 jedoch gesetzt ist (d.h. eine logische "1"), wird auf die gesamten 64 Bits der erweiterten Register im erweiterten Registersatz 86 zugegriffen.
  • Ein Problem kann beim Implementieren des erweiterten Registersatzes 86 der Registerdatei 60 (7) dahingehend auftreten, daß ein 32-Bit Betriebssystem der CPU 32 (5) höchstwahrscheinlich die erweiterten Register nicht kennt und daher nicht versucht, die erweiterten Register bei Kontextänderungen zu bewahren. Die 10 und 11 dienen im folgenden der Beschreibung eines Systems und eines Verfahrens zum Bewahren des Inhalts der erweiterten Register des erweiterten Registersatzes 86 bei Kontextänderungen, wenn die CPU 32 ( 5) ein 32-Bit Betriebssystem aufweist. Es sei darauf hingewiesen, daß bei dieser Darstellung der Standard-MMX-Registersatz 110 und der Standard-SSE-Registersatz 114 ähnlich dem Standardregistersatz 84 erweitert sein können, wie zuvor beschrieben (sowie auch die erweiterten Registersätze 112 und/oder 116, falls vorhanden). Bei einer Kontextänderung bewirkt das Betriebssystem, daß die CPU 32 die Ausführung der Befehle eines ersten Programms beendet und die Befehle eines zweiten Programms auszuführen beginnt. Das Betriebssystem spei chert den Zustand der CPU 32 während der Kontextveränderung, so daß die Befehlsausführung des ersten Programms zu späterer Zeit neu initiiert werden kann. Das 32-Bit Betriebssystem kann jedoch in Unkenntnis der erweiterten Register des Registersatzes 86 sein, wie zuvor beschrieben, und versucht daher nicht, die erweiterten Register während der Kontextveränderung.
  • 10 ist ein Diagramm eines anderen Ausführungsbeispiels der Registerdatei 60 der 7, wobei die Registerdatei 60 wie beschrieben einen Standardregistersatz 84 und einen erweiterten Registersatz 86 aufweist. Bei dem Ausführungsbeispiel von 10 weist die Registerdatei 60 ferner einen Standardmultimediaerweiterungsregistersatz (MMX) 110, einen erweiterten MMX Registersatz 112, einen Standardstreamingeinzelbefehlmehrfachdaten(SIMD)-Erweiterungs- oder SSE Registersatz 114, und einen erweiterten SSE Registersatz 116 auf.
  • Bei einem Kontextwechsel speichert ein typisches 32-Bit Betriebssystem Zustandsinformationen über die CPU 32, die zum Wiederherstellen des unterbrochenen Programms oder des Tasks erforderlich sind, in einem Taskzustandssegment (TSS) oder im Stapel des Programms, der (explizit) im Speicher 36 gebildet ist (4). Das TSS enthält den Inhalt der Allzweckregister EAX, EBX, ECX, EDX, ESP, EDP, EBP, ESI und EDI vor dem Kontextwechsel und enthält somit den Inhalt der Standardregister des Standardregistersatzes 84. Wie zuvor beschrieben, ist das 32-Bit Betriebssystem wahrscheinlich in Unkenntnis der erweiterten Register des erweiterten Registersatzes 86 (und der erweiterten Registersätze 112 und 116) und versucht daher nicht, den Inhalt der erweiterten Register des Registersatzes 86 während des Kontextwechsels zu speichern.
  • Das 32-Bit Betriebssystem verwendet wahrscheinlich den verfügbaren ×86 "FXSAVE" Befehl, um beim Kontextwechsel den Inhalt der Standard-MMX-Register des Standard-MMX-Registersatzes 110 und der Standard-SSE-Register des Standard-SSE-Registersatzes 114 in einer speziellen 512 Byte Datenstruktur zu speichern, die im Speicher 36 gebildet ist. Das 32-Bit Betriebssystem verwendet wahrscheinlich den verfügbaren ×86 "FXRSTOR" Befehl, um den Inhalt der Standard-MMX-Register des Standard-MMX-Registersatzes 110 und der Standard-SSE-Register des Standard-SSE-Registersatzes 114 wiederherzustellen, der in einer speziellen 512 Byte Datenstruktur unter Verwendung des FXSAVE Be fehls gespeichert wurde. Üblicherweise können die Befehle FXSAVE und FXRSTOR in der CPU 32 durch Microcode implementiert sein. Bei einem Ausführungsbeispiel ist dieser Microcode erweitert, um den Inhalt der erweiterten Registersätze 86, 112 und/oder 114 zu speichern (und wiederherzustellen). Somit kann das 32-Bit Betriebssystem, das die ×86 Befehle FXSAVE und FXRSTOR zum Speichern und Wiederherstellen des Inhalts der Standard-MMX-Register des Standard-MMX-Registersatzes 110 und der Standard-SSE-Register des Standard-SSE-Registersatzes 114 bei Kontextänderungen ausführt, auch das Speichern des Inhalts des erweiterten Registersatzes 86, des erweiterten MMX-Registersatzes 112 und des erweiterten SSE-Registersatzes 116 bewirken.
  • 11 ist ein Diagramm eines Ausführungsbeispiels einer mit 120 bezeichneten speziellen 512 Byte Datenstruktur, die im Speicher gebildet und zum Speichern von Registerinhalten dient (herkömmlicherweise der Standard-MMX-Register und der Standard-SSE-Register in der ×86 Architektur). Die Datenstruktur 120 weist einen benutzten Bereich 122 und einen zuvor unbenutzten Bereich 124 auf. Der Standard-MMX-Registerdatenbereich 126 und der Standard-SSE-Registerdatenbereich 130 bestehen im benutzten Bereich 122 zum Speichern des Inhalts der Register des Standard-MMX-Registersatzes 110 und der Register des Standard-SSE-Registersatzes 114 (10). Wie in 11 dargestellt, kann der zuvor unbenutzte Bereich 124 der Datenstruktur 120 zum Speichern des Inhalts der erweiterten Registersätze 86, 112 und 116 bei Kontextänderungen in Speicherbereichen 134, 135 und 136 dienen. Auf diese Weise kann das 32-Bit Betriebssystem, das die ×86 FXSAVE und FXRSTOR Befehle zum Speichern und Widerherstellen der Inhalte der Standard MMX und SSE Register bei Kontextwechseln ausführt, auch den Inhalt der erweiterten Registersätze speichern und wiederherstellen.
  • Industrielle Anwendbarkeit
  • Die Erfindung ist generell auf integrierte Schaltungen und Energiesparmodi in integrierten Schaltungen anwendbar.

Claims (14)

  1. Zentralverarbeitungseinheit (CPU) (32) mit: einer Registerdatei (60) mit einem Standardregistersatz (84) und einem erweiterten Registersatz (86), wobei der Standardregistersatz (84) mehrere Standardregister aufweist und wobei der erweiterte Registersatz (86 mehrere erweiterte Register aufweist, deren Breite größer als die Breite von durch eine CPU-Architektur definierten Allzweckregistern ist, und einem mit der Registerdatei (60) verbundenen Ausführungskern (52), wobei die Zentralverarbeitungseinheit dadurch gekennzeichnet, daß der Ausführungskern (52) derart konfiguriert ist, daß er auf einen gegebenen Befehl, der Registerquellenoperandeninformationen enthält, reagiert, indem er auf wenigstens ein erweitertes Register zugreift, wenn der gegebene Befehl (80) einen Präfixbereich (82) umfaßt, der Informationen enthält, die zum Zugriff auf das wenigstens eine erweiterte Register verwendet werden, und daß er auf den gegebenen Befehl reagiert, indem er auf wenigstens ein Standardregister zugreift, wenn der gegebene Befehl den Präfixbereich, der Informationen zum Zugriff auf das wenigstens eine erweiterte Register enthält, nicht umfaßt, wobei der Ausführungskern (32) ferner derart ausgebildet ist, daß er abhängig von in dem Präfixbereich (82) enthaltenen Breiteninformationen selektiv auf die größere Breite zugreift.
  2. CPU (32) nach Anspruch 1, bei der die Anzahl von Standardregistern kleiner oder gleich der Anzahl der durch die CPU-Architektur definierten Allzweckregister ist, und wobei die Anzahl der erweiterten Register größer als die Anzahl der durch die CPU-Architektur definierten Allzweckregister ist.
  3. CPU (32) nach einem der vorhergehenden Ansprüche, bei welcher der Befehl (80) ohne den Präfixbereich (82) ausreichend Registeridentifizierungsinformationen enthält, um ein gewähltes Standardregister zu identifizieren, und wobei der Präfixbereich (82) des Befehls (80) zusätzliche Registeridentifizierungsinformationen enthält, die dem Identifizieren eines ausgewählten erweiterten Registers dienen.
  4. CPU (32) nach einem der vorhergehenden Ansprüche, bei der die Codierung des Befehls (80), einschließlich des Präfixbereichs (82), das wenigstens eine erweiterte Register identifiziert, auf das der Ausführungskern (52) zugreift.
  5. CPU (32) nach einem der vorhergehenden Ansprüche, bei welcher der Ausführungskern (52) zum Holen und Ausführen von Befehlen variabler Länge ausgebildet ist.
  6. CPU (32) nach einem der vorhergehenden Ansprüche, bei welcher der Präfixbereich (82) ein Präfixbyte (90) für das erweiterte Register aufweist, und wobei das Präfixbyte (90) für das erweiterte Register ein Schlüsselfeld (92) für das erweiterte Register aufweist, und wobei der Inhalt des Schlüsselfelds (92) für das erweiterte Register das Präfixbyte (90) für das erweiterte Register identifiziert.
  7. CPU (32) nach einem der vorhergehenden Ansprüche, ferner mit: einem Steuerregister (62) zum Speichern von Informationen, die angeben, ob der Modus für das erweiterte Register global freigegeben ist; einem Flag-Register (64) zum Speichern von Informationen, die angeben, ob der Modus für das erweiterte Register durch einen aktuellen Vorgang freigegeben ist; und einer Erzeugungseinrichtung (58) zum Erzeugen des Signals, das den Betriebsmodus der CPU (32) angibt, wobei das Signal angibt, daß die CPU (32) im Modus für das erweiterte Register arbeitet, wenn der Modus für das erweiterte Register global und durch den aktuellen Vorgang freigegeben ist.
  8. CPU (32) nach einem der vorhergehenden Ansprüche, bei welcher der Ausführungskern (52) ein Signal empfängt, das einen Betriebsmodus der CPU (32) angibt, und wobei der Ausführungskern (52) ferner derart ausgebildet ist, daß er auf das wenigstens eine erweiterte Register in Reaktion auf das Signal zugreift, das angibt, daß die CPU (32) im Modus für das erweiterte Register arbeitet.
  9. CPU (32) nach einem der vorhergehenden Ansprüche, bei welcher der Präfixbereich (82) Informationen für das Zugreifen auf jedes Register enthält, das eine Operation des Befehls (80) ist.
  10. CPU nach einem der vorhergehenden Ansprüche, bei welcher der Standardregistersatz eine Untergruppe des erweiterten Registersatzes ist, wenn der Präfixbereich (82) die Informationen enthält, die zum Zugreifen auf das wenigstens eine erweiterte Register verwendet werden.
  11. CPU nach einem der vorhergehenden Ansprüche, bei der die im Präfixbereich (82) enthaltene Breiteninformation ein Operandengrößenübersteuerungsbit ist.
  12. Verfahren mit den folgenden Schritten: Decodieren eines gegebenen Befehls, der Registerquellenoperandeninformationen (80) enthält; und selektives Zugreifen auf ein erweitertes Register einer Registerdatei (60), die einen Standardregistersatz (84) und einen erweiterten Registersatz (86) aufweist, wenn der gegebene Befehl (80) einen Präfixbereich (82) umfaßt, der Informationen enthält, die zum Zugriff auf das wenigstens eine erweiterte Register verwendet werden, wobei jedes der erweiterten Register eine größere Breite hat als ein durch die CPU-Architektur definiertes Allzweckregister; selektives Zugreifen auf ein Standardregister der Registerdatei (60), wenn der gegebene Befehl (80) keinen Präfixbereich (82), der Informationen zum Zugriff auf das erweiterte Register enthält, umfaßt; und selektives Zugreifen auf die größere Breite in Abhängigkeit von Breiteninformationen im Präfixbereich (82).
  13. Verfahren nach Anspruch 12, bei dem der Zugriff ferner in Reaktion auf einen Betriebsmodus erfolgt, der einen Modus für das erweiterte Register angibt.
  14. Verfahren nach Anspruch 12 oder Anspruch 13, bei dem die Breiteninformation im Präfixbereich (82) ein Operandengrößenübersteuerungsbit ist.
DE60103414T 2000-08-09 2001-08-07 Cpu, die auf ein erweitertes registerset in einem erweiterten registermodus zugreift und entsprechendes verfahren Expired - Lifetime DE60103414T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US22436800P 2000-08-09 2000-08-09
US224368P 2000-08-09
US09/824,863 US6877084B1 (en) 2000-08-09 2001-04-02 Central processing unit (CPU) accessing an extended register set in an extended register mode
US824863 2001-04-02
PCT/US2001/024738 WO2002013005A1 (en) 2000-08-09 2001-08-07 Cpu accessing an extended register set in an extended register mode

Publications (2)

Publication Number Publication Date
DE60103414D1 DE60103414D1 (de) 2004-06-24
DE60103414T2 true DE60103414T2 (de) 2005-06-02

Family

ID=26918656

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60103414T Expired - Lifetime DE60103414T2 (de) 2000-08-09 2001-08-07 Cpu, die auf ein erweitertes registerset in einem erweiterten registermodus zugreift und entsprechendes verfahren

Country Status (8)

Country Link
US (1) US6877084B1 (de)
EP (1) EP1320800B1 (de)
JP (1) JP2004506263A (de)
KR (1) KR100880681B1 (de)
CN (1) CN1243304C (de)
AU (1) AU2001283160A1 (de)
DE (1) DE60103414T2 (de)
WO (1) WO2002013005A1 (de)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055208A1 (en) * 2001-07-03 2005-03-10 Kibkalo Alexandr A. Method and apparatus for fast calculation of observation probabilities in speech recognition
US20030217356A1 (en) * 2002-01-10 2003-11-20 Leonid Baraz Register allocation for program execution analysis
FR2851349A1 (fr) 2003-02-17 2004-08-20 St Microelectronics Sa Procede de gestion d'une pile de microprocesseur pour la sauvegarde de donnees contextuelles
US7680990B2 (en) * 2003-05-30 2010-03-16 Hewlett-Packard Development Company, L.P. Superword memory-access instructions for data processor
TWI224281B (en) * 2003-07-16 2004-11-21 Sunplus Technology Co Ltd A processor executing script with different length and method thereof
US7451294B2 (en) * 2003-07-30 2008-11-11 Intel Corporation Apparatus and method for two micro-operation flow using source override
US7340588B2 (en) * 2003-11-24 2008-03-04 International Business Machines Corporation Extending the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
US20050138330A1 (en) * 2003-12-23 2005-06-23 Maxim Integrated Products, Inc. MAXQ microcontroller
US7231509B2 (en) * 2005-01-13 2007-06-12 International Business Machines Corporation Extended register bank allocation based on status mask bits set by allocation instruction for respective code block
US8214191B2 (en) * 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US7725693B2 (en) * 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US7774558B2 (en) 2005-08-29 2010-08-10 The Invention Science Fund I, Inc Multiprocessor resource optimization
US8516300B2 (en) * 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US8181004B2 (en) * 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US7647487B2 (en) * 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US20070050606A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Runtime-based optimization profile
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US8209524B2 (en) * 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US8255745B2 (en) * 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US7493516B2 (en) * 2005-08-29 2009-02-17 Searete Llc Hardware-error tolerant computing
US7779213B2 (en) * 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
JP5481793B2 (ja) * 2008-03-21 2014-04-23 富士通株式会社 演算処理装置および同装置の制御方法
US20100023733A1 (en) * 2008-04-15 2010-01-28 Vns Portfolio Llc Microprocessor Extended Instruction Set Precision Mode
US20090257263A1 (en) * 2008-04-15 2009-10-15 Vns Portfolio Llc Method and Apparatus for Computer Memory
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US20100115239A1 (en) * 2008-10-29 2010-05-06 Adapteva Incorporated Variable instruction width digital signal processor
CN101853148B (zh) * 2009-05-19 2014-04-23 威盛电子股份有限公司 适用于微处理器的装置及方法
US9684632B2 (en) * 2009-06-04 2017-06-20 Micron Technology, Inc. Parallel processing and internal processors
US20110047355A1 (en) * 2009-08-24 2011-02-24 International Business Machines Corporation Offset Based Register Address Indexing
US9631528B2 (en) * 2009-09-03 2017-04-25 Clean Emissions Technologies, Inc. Vehicle reduced emission deployment
US9003170B2 (en) * 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US8914619B2 (en) * 2010-06-22 2014-12-16 International Business Machines Corporation High-word facility for extending the number of general purpose registers available to instructions
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
EP2631787A3 (de) * 2011-04-07 2016-04-06 VIA Technologies, Inc. Laden von mehreren und speichern von mehreren Anweisungen in einem Mikroprozessor, der Banked-Register emuliert
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9459864B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
EP2704001B1 (de) * 2012-08-31 2016-10-19 VIA Technologies, Inc. Mikroprozessor zur Verfügbarmachung von 64-Bit-Mehrzweckregistern im MSR-Adressraum während des Betriebs im Non-64-Bit-Modus
US9778932B2 (en) * 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
CN104572020B (zh) * 2014-12-31 2017-03-15 中国电子科技集团公司第三十八研究所 一种寄存器堆分页式扩展装置及其实现方法
CN104809079B (zh) * 2015-04-14 2018-01-16 昆腾微电子股份有限公司 分页寄存器的访问方法和装置
US20170192788A1 (en) * 2016-01-05 2017-07-06 Intel Corporation Binary translation support using processor instruction prefixes
US20170371662A1 (en) * 2016-06-23 2017-12-28 Intel Corporation Extension of register files for local processing of data in computing environments
US10255072B2 (en) * 2016-07-01 2019-04-09 Intel Corporation Architectural register replacement for instructions that use multiple architectural registers
CN106293627B (zh) * 2016-07-27 2019-01-11 珠海市杰理科技股份有限公司 寄存器调用及调用指令编码的方法、装置
US20180336034A1 (en) * 2017-05-17 2018-11-22 Hewlett Packard Enterprise Development Lp Near memory computing architecture
US11544065B2 (en) * 2019-09-27 2023-01-03 Advanced Micro Devices, Inc. Bit width reconfiguration using a shadow-latch configured register file
US11275562B2 (en) 2020-02-19 2022-03-15 Micron Technology, Inc. Bit string accumulation
US11599359B2 (en) 2020-05-18 2023-03-07 Advanced Micro Devices, Inc. Methods and systems for utilizing a master-shadow physical register file based on verified activation
US11960897B2 (en) * 2021-07-30 2024-04-16 Advanced Micro Devices, Inc. Apparatus and methods employing a shared read post register file
US12001848B2 (en) 2022-01-30 2024-06-04 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions with phantom registers
US11954491B2 (en) 2022-01-30 2024-04-09 Simplex Micro, Inc. Multi-threading microprocessor with a time counter for statically dispatching instructions
US12443412B2 (en) 2022-01-30 2025-10-14 Simplex Micro, Inc. Method and apparatus for a scalable microprocessor with time counter
US12190116B2 (en) 2022-04-05 2025-01-07 Simplex Micro, Inc. Microprocessor with time count based instruction execution and replay
US12141580B2 (en) 2022-04-20 2024-11-12 Simplex Micro, Inc. Microprocessor with non-cacheable memory load prediction
US12169716B2 (en) 2022-04-20 2024-12-17 Simplex Micro, Inc. Microprocessor with a time counter for statically dispatching extended instructions
US12288065B2 (en) 2022-04-29 2025-04-29 Simplex Micro, Inc. Microprocessor with odd and even register sets
US12106114B2 (en) 2022-04-29 2024-10-01 Simplex Micro, Inc. Microprocessor with shared read and write buses and instruction issuance to multiple register sets in accordance with a time counter
US12112172B2 (en) 2022-06-01 2024-10-08 Simplex Micro, Inc. Vector coprocessor with time counter for statically dispatching instructions
US12282772B2 (en) 2022-07-13 2025-04-22 Simplex Micro, Inc. Vector processor with vector data buffer
WO2024015445A1 (en) * 2022-07-13 2024-01-18 Simplex Micro, Inc. Vector processor with extended vector registers
US12147812B2 (en) 2022-07-13 2024-11-19 Simplex Micro, Inc. Out-of-order execution of loop instructions in a microprocessor
US12541369B2 (en) 2022-07-13 2026-02-03 Simplex Micro, Inc. Executing phantom loops in a microprocessor
US12566610B2 (en) 2023-03-14 2026-03-03 Simplex Micro, Inc. Microprocessor with apparatus and method for replaying load instructions
US12566609B2 (en) 2023-03-14 2026-03-03 Simplex Micro, Inc. Microprocessor with apparatus and method for handling of instructions with long throughput
US12566613B2 (en) 2023-11-13 2026-03-03 Simplex Micro, Inc. Microprocessor with speculative and in-order register sets

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2230258A5 (de) 1973-05-16 1974-12-13 Honeywell Bull Soc Ind
AT354159B (de) 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
DE2555963C2 (de) 1975-12-12 1982-10-28 Ibm Deutschland Gmbh, 7000 Stuttgart Einrichtung zur Funktionsmodifizierung
US4050094A (en) 1976-04-30 1977-09-20 International Business Machines Corporation Translator lookahead controls
AU556521B2 (en) 1981-06-11 1986-11-06 Data General Corporation Arithmetic unit
US4453212A (en) 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4928223A (en) 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4807115A (en) 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
EP0148478B1 (de) * 1983-12-23 1989-08-09 Hitachi, Ltd. Datenprozessor mit Steuerung der signifikanten Bitlänge von Allzweckregistern
US4972338A (en) 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
DE3751503T2 (de) 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
JPS62237547A (ja) 1986-04-09 1987-10-17 Hitachi Ltd アドレス変換方式
CA1286784C (en) 1986-08-27 1991-07-23 Joseph A. Petolino, Jr. Cache storage queue
US4926322A (en) 1987-08-03 1990-05-15 Compag Computer Corporation Software emulation of bank-switched memory using a virtual DOS monitor and paged memory management
JPH01112450A (ja) 1987-10-27 1989-05-01 Sharp Corp メモリ管理ユニット
US5226132A (en) 1988-09-30 1993-07-06 Hitachi, Ltd. Multiple virtual addressing using/comparing translation pairs of addresses comprising a space address and an origin address (sto) while using space registers as storage devices for a data processing system
US5125087A (en) 1988-11-07 1992-06-23 Microsoft Corporation Method of resetting sequence of access to extended memory disrupted by interrupt processing in 80286 compatible system using code segment register
EP0369396A3 (de) 1988-11-14 1992-10-07 Nec Corporation Arithmetische Verarbeitungseinheit mit der Fähigkeit, Vektor/Matrix-Verarbeitung auszuführen
US5067069A (en) 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5226126A (en) 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5293592A (en) 1989-04-07 1994-03-08 Intel Corporatino Decoder for pipelined system having portion indicating type of address generation and other portion controlling address generation within pipeline
US5136697A (en) 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
US5375213A (en) 1989-08-29 1994-12-20 Hitachi, Ltd. Address translation device and method for managing address information using the device
US5175863A (en) 1989-10-23 1992-12-29 International Business Machines Corporation Signal data processing system having independently, simultaneously operable alu and macu
US5471593A (en) 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5197130A (en) 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5303358A (en) 1990-01-26 1994-04-12 Apple Computer, Inc. Prefix instruction for modification of a subsequent instruction
US5226130A (en) 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5053631A (en) 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
US5058048A (en) 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
EP0459232B1 (de) 1990-05-29 1998-12-09 National Semiconductor Corporation Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
JP2834289B2 (ja) 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
KR100299691B1 (ko) 1991-07-08 2001-11-22 구사마 사부로 확장가능알아이에스씨마이크로프로세서구조
US5274834A (en) 1991-08-30 1993-12-28 Intel Corporation Transparent system interrupts with integrated extended memory addressing
GB2263985B (en) 1992-02-06 1995-06-14 Intel Corp Two stage window multiplexors for deriving variable length instructions from a stream of instructions
SG45269A1 (en) 1992-02-06 1998-01-16 Intel Corp End bit markers for instruction decode
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5493683A (en) * 1992-12-29 1996-02-20 Intel Corporation Register for identifying processor characteristics
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
US5630149A (en) * 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
US5689672A (en) 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
EP0651321B1 (de) 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
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
US5768574A (en) 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US5822778A (en) 1995-06-07 1998-10-13 Advanced Micro Devices, Inc. Microprocessor and method of using a segment override prefix instruction field to expand the register file
US5809273A (en) 1996-01-26 1998-09-15 Advanced Micro Devices, Inc. Instruction predecode and multiple instruction decode
US5848284A (en) 1995-11-28 1998-12-08 Intel Corporation Method of transferring data between moderately coupled integer and floating point units
US5935240A (en) 1995-12-15 1999-08-10 Intel Corporation Computer implemented method for transferring packed data between register files and memory
US5838984A (en) 1996-08-19 1998-11-17 Samsung Electronics Co., Ltd. Single-instruction-multiple-data processing using multiple banks of vector registers
US5905900A (en) 1997-04-30 1999-05-18 International Business Machines Corporation Mobile client computer and power management architecture
US5903919A (en) 1997-10-07 1999-05-11 Motorola, Inc. Method and apparatus for selecting a register bank
US6014739A (en) 1997-10-27 2000-01-11 Advanced Micro Devices, Inc. Increasing general registers in X86 processors
US6157996A (en) 1997-11-13 2000-12-05 Advanced Micro Devices, Inc. Processor programably configurable to execute enhanced variable byte length instructions including predicated execution, three operand addressing, and increased register space
US6145049A (en) 1997-12-29 2000-11-07 Stmicroelectronics, Inc. Method and apparatus for providing fast switching between floating point and multimedia instructions using any combination of a first register file set and a second register file set
EP0942357A3 (de) 1998-03-11 2000-03-22 Matsushita Electric Industrial Co., Ltd. Mit einer Mehrzahl von Befehlsformaten vereinbarer Datenprozessor
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
KR19990046279A (ko) * 1999-01-30 1999-07-05 권기홍 중앙처리장치

Also Published As

Publication number Publication date
CN1446332A (zh) 2003-10-01
JP2004506263A (ja) 2004-02-26
WO2002013005A1 (en) 2002-02-14
US6877084B1 (en) 2005-04-05
EP1320800B1 (de) 2004-05-19
EP1320800A1 (de) 2003-06-25
KR100880681B1 (ko) 2009-01-30
KR20030024850A (ko) 2003-03-26
DE60103414D1 (de) 2004-06-24
AU2001283160A1 (en) 2002-02-18
CN1243304C (zh) 2006-02-22

Similar Documents

Publication Publication Date Title
DE60103414T2 (de) Cpu, die auf ein erweitertes registerset in einem erweiterten registermodus zugreift und entsprechendes verfahren
DE3486399T2 (de) Zentrale Verarbeitungseinheit mit der Fähigkeit, Befehle mit variablen Längen zu unterstützen.
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE4040963C2 (de) Datenverarbeitungssystem
DE69427734T2 (de) Linearadressierter Mikroprozessorcachespeicher
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE69902392T2 (de) Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen
DE69904189T2 (de) Konfigurierter prozessor zur abbildung von logischen registernummern auf physikalische registernummern unter verwendung von virtuellen registernummern
DE68928513T2 (de) Verfahren zur Vorverarbeitung mehrerer Befehle
DE69227774T2 (de) Speicherverwaltungsverfahren
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE69605943T2 (de) Anordnung und verfahren zur mikrokodemodifikation
DE68928677T2 (de) Verfahren und digitaler Computer zur Vorverarbeitung mehrerer Befehle
DE3851746T2 (de) Sprungvorhersage.
DE69502098T2 (de) Datenverarbeitung mit mehrfachbefehlssätzen
DE69727773T2 (de) Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
DE69032276T2 (de) Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems
DE112005003098B4 (de) Verfahren und Vorrichtung zum Zugreifen auf einen physikalischen Speicher von einer CPU oder einem Prozessorelement mit hoher Leistung
DE60302809T2 (de) Vorrichtung und Verfahren zur selektiven Steuerung der Speicherattribute
DE69322283T2 (de) Hoch schnelligkeit speicher programmierbar steuerung
DE69033131T2 (de) Logikvorrichtung und Verfahren zur Verwaltung einer Befehlseinheit in einer Pipeline-Verarbeitungseinheit
DE60302913T2 (de) Erweiterung des Befehlssatzes zum software-initiierten Vorausladen
DE69505224T2 (de) Computersystem
DE112010005821T5 (de) Kontextwechsel
DE69611510T2 (de) Zentrale Verarbeitungseinheit mit Cache-Speicher

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: GLOBALFOUNDRIES INC. MAPLES CORPORATE SERVICES, KY