DE102014003854A1 - Robuste und Hochleistungsbefehle für Systemaufruf - Google Patents

Robuste und Hochleistungsbefehle für Systemaufruf Download PDF

Info

Publication number
DE102014003854A1
DE102014003854A1 DE102014003854.8A DE102014003854A DE102014003854A1 DE 102014003854 A1 DE102014003854 A1 DE 102014003854A1 DE 102014003854 A DE102014003854 A DE 102014003854A DE 102014003854 A1 DE102014003854 A1 DE 102014003854A1
Authority
DE
Germany
Prior art keywords
registers
processor
privilege level
command
undivided
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.)
Pending
Application number
DE102014003854.8A
Other languages
English (en)
Inventor
Baiju V. Patel
Toby Opferman
Atul A. Khare
James B. Crossland
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102014003854A1 publication Critical patent/DE102014003854A1/de
Pending legal-status Critical Current

Links

Images

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
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/521Atomic

Abstract

Robuste Systemaufruf- und Systemrückstellungsbefehle werden von einem Prozessor ausgeführt, um eine Steuerung zwischen einer anfragenden Stelle und einem Betriebssystem-Kernel zu übertragen. Der Prozessor enthält einen Ausführungsschaltkreis und Register, die Zeiger zu Datenstrukturen im Speicher speichern. Der Ausführungsschaltkreis empfängt einen Systemaufrufbefehl von einer anfragenden Stelle, um die Steuerung von einer ersten Privilegstufe der anfragenden Stelle zur einer zweiten Privilegstufe eines Betriebssystem-Kernels zu übertragen. Als Reaktion wechsel der Ausführungsschaltkreis die Datenstrukturen, auf die die Register verweisen, zwischen der anfragenden Stelle und dem Betriebssystem-Kernel in einem ungeteilten Übergang.

Description

  • Technisches Gebiet
  • Die vorliegende Offenbarung betrifft das Gebiet von Verarbeitungslogik, Mikroprozessoren und zugehöriger Befehlssatzarchitektur, die, wenn sie vom Prozessor oder einer anderen Verarbeitungslogik ausgeführt wird, logische, mathematische oder andere funktionelle Operationen ausführt.
  • Technischer Hintergrund
  • Ein Befehlssatz oder eine Befehlssatzarchitektur (Instruction Set Architecture – ISA) ist der Teil der Rechnerarchitektur, der sich auf Programmierung bezieht, und kann die nativen Datentypen, Befehle, Registerarchitektur, Adressierungsmodi, Speicherarchitektur, Unterbrechungs-(Interrupt) und Ausnahmeverarbeitung und externen Eingang und Ausgang (Input/Output – I/O) enthalten. Der Begriff ”Befehl” bezieht sich hierin allgemein auf Makrobefehle – das heißt, Befehle, die dem Prozessor (oder Befehlswandler, der einen Befehl in eine oder mehrere durch den Prozessor zu verarbeitende Befehle (z. B. mittels statischer binärer Übersetzung, dynamischer binärer Übersetzung, einschließlich dynamischer Kompilation) übersetzt, verformt, nachbildet oder auf andere Weise umwandelt) zur Ausführung bereitstellt – im Gegensatz zu Mikrobefehlen oder Mikrooperationen (Mikroops) – die das Ergebnis eines Decodierers des Prozessors sind, der Makrobefehle decodiert.
  • Die ISA unterscheidet sich von der Mikroarchitektur, die das interne Design des Prozessors ist, der den Befehlssatz implementiert. Prozessoren mit unterschiedlichen Mikroarchitekturen können sich einen gemeinsamen Befehlssatz teilen. Zum Beispiel implementieren Intel® CoreTM Prozessoren und Prozessoren von Advanced Micro Devices Inc., Sunnyvale CA, nahezu identische Versionen des x86 Befehlssatzes (mit einigen Erweiterungen, die neueren Versionen hinzugefügt wurden), haben aber unterschiedliche interne Designs. Zum Beispiel kann dieselbe Registerarchitektur der ISA auf verschiedene Weisen in verschiedenen Mikroarchitekturen mit allgemein bekannten Techniken implementiert werden, einschließlich zweckbestimmter physischer Register, eines oder mehrerer dynamisch zugeordneter physischer Register, unter Verwendung eines Registerumbenennungsmechanismus, usw..
  • Eine ISA stellt typischerweise einen oder mehrere Befehl(e) für ein Anwendungsprogramm bereit, um einen Systemaufruf vorzunehmen. Durch den Systemaufruf kann ein Anwendungsprogramm einen Dienst von einem Kernel eines Betriebssystems anfordern. Der Dienst enthält Hardware-bezogene Dienste (z. B., Zugriff auf die Festplatte), Erstellen und Ausführen neuer Prozesse und Kommunizieren mit integralen Kernel-Diensten (z. B. Scheduling (Zeitplanerstellung)). Somit stellen Systemaufrufe eine Schnittstelle zwischen einem Anwendungsprogramm und dem Kernel eines Betriebssystems bereit.
  • Typischerweise werden Systemaufrufe mit einer Software-Unterbrechung oder einem Trap implementiert. Unterbrechungen übertragen die Steuerung von einem Anwendungsprogramm zum Betriebssystem-Kernel. Einige bestehende Architekturen stellen Steuerungsübertragungsbefehle zur Ausführung eines Systemaufrufs bereit. Diese Steuerungsübertragungsbefehle sind dazu gestaltet, dass ein Anwendungsprogramm rasch eine Steuerung auf das Betriebssystem ohne den Aufwand einer Unterbrechung überträgt. Die bestehenden Steuerungsübertragungsbefehle haben jedoch eine signifikante Schwache, die für Fehler und Angriffe anfällig ist. Diese Anfälligkeit führt zu einer weniger robusten Software. Wenn zum Beispiel ein Fehler während eines Systemaufrufs oder einer Systemrückstellung eintritt, bevor die Steuer-Stacks umgeschaltet werden, kann der Fehlerprozessor (Fault Handler) im Betriebssystem mit dem Benutzermodus-Stack anstelle des System-Stacks arbeiten. Der Benutzermodus-Stack ist nicht privilegiert und nicht vertrauenswürdig. In einigen Szenarios kann der Benutzermodus-Stack fehlerhafte Codes enthalten und eine Ausführung mit dem Benutzermodus-Stack kann das System schädlichen Angriffen aussetzen.
  • Kurze Beschreibung der Zeichnungen
  • In den Figuren der beiliegenden Zeichnungen sind Ausführungsformen zur Veranschaulichung und nicht Einschränkung dargestellt:
  • 1 ist ein Blockdiagramm, das Steuerungsübertragungen gemäß einer Ausführungsform zeigt.
  • 2 ist ein Blockdiagramm einer Befehlsverarbeitungsvorrichtung gemäß einer Ausführungsform.
  • 3 ist ein Blockdiagramm einer Registerarchitektur gemäß einer Ausführungsform.
  • 4A zeigt ein Beispiel einer ersten Version des RBSTCALL-Befehls gemäß einer Ausführungsform.
  • 4B zeigt ein Beispiel einer ersten Version des RBSTRET-Befehls gemäß einer Ausführungsform.
  • 5A zeigt ein Beispiel einer zweiten Version des RBSTCALL-Befehls gemäß einer Ausführungsform.
  • 5B zeigt ein Beispiel einer zweiten Version des RBSTRET-Befehls gemäß einer Ausführungsform.
  • 6A ist ein Flussdiagramm, das Operationen zeigt, die als Reaktion auf einen RBSTCALL-Befehl gemäß einer Ausführungsform ausgeführt werden.
  • 6b ist ein Flussdiagramm, das Operationen zeigt, die als Reaktion auf einen RBSTRET-Befehl gemäß einer Ausführungsform ausgeführt werden.
  • 6C ist ein Blockdiagramm, das die Verwendung eines Software-Befehlswandlers zum Umwandeln binärer Befehle in einem Ursprungsbefehlssatz zu binären Befehlen in einem Zielbefehlssatz gemäß einer Ausführungsform zeigt.
  • 7A ist ein Blockdiagramm einer In-Order- und Out-of-Order-Pipeline gemäß einer Ausführungsform.
  • 7B ist ein Blockdiagramm eines In-Order- und Out-of-Order-Kerns gemäß einer Ausführungsform.
  • 8A–B sind Blockdiagramme einer spezifischeren beispielhaften In-Order-Kernarchitektur gemäß einer Ausführungsform.
  • 9 ist ein Blockdiagramm eines Prozessors gemäß einer Ausführungsform.
  • 10 ist ein Blockdiagramm eines Systems gemäß einer Ausführungsform.
  • 11 ist ein Blockdiagramm eines zweiten Systems gemäß einer Ausführungsform.
  • 12 ist ein Blockdiagramm eines dritten Systems gemäß einer Ausführungsform.
  • 13 ist ein Blockdiagramm eines Ein-Chip-Systems (System-on-a-Chip – SoC) gemäß einer Ausführungsform.
  • Beschreibung der Ausführungsformen
  • In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten angeführt. Es ist jedoch klar, dass die hierin beschriebenen Ausführungsformen ohne diese spezifischen Einzelheiten in die Praxis umgesetzt werden können. In anderen Fällen sind allgemein bekannte Schaltungen, Strukturen und Techniken nicht im Detail dargestellt, um das Verständnis dieser Beschreibung nicht zu erschweren.
  • Hierin beschriebene Ausführungsformen stellen einen Satz von Steuerungsübertragungsbefehlen bereit, von welchen jeder den Übergang zwischen dem Aufsichtsmodus und dem Benutzermodus in einem einzigen unteilbaren Befehl vollendet. Bei den herkömmlichen Systemaufruf- und -rückstellungsmechanismen ist eine Abfolge von Befehlen notwendig, um den Übergang zwischen dem Aufsichtsmodus und dem Benutzermodus zu vollenden. Ein Fehler in der Mitte dieser herkömmlichen Befehlsabfolge führt zur Ausführung im Aufsichtsmodus mit einem Nicht-Aufsichtszustand. Das Auftreten eines solchen Fehlers führt typischerweise entweder zu Systemabstürzen, der Unfähigkeit einer Wiederherstellung nach Fehlern oder Privilegausweitungsangriffen (Privilege Escalation Attacks).
  • Wie hierin verwendet, wird der Begriff ”Aufsichtsmodus” auch als ”privilegierter Modus”, ”Kernel-Modus” oder ”Ring 0” bezeichnet und der Begriff ”Benutzermodus” wird auch als ”nicht privilegierter Modus”, ”Nicht-Aufsichtsmodus” oder ”Ring 3” bezeichnet. Ferner ist, wie hierin verwendet, eine ”Privilegstufe” einer Software-Einheit dasselbe wie ihre Ringebene; z. B. hat ein Ring-3-Progrmm eine Privilegstufe von 3. Obwohl der Übergang zwischen Ring 0 und Ring 3 in einem oder mehreren der folgenden Beispiele beschrieben ist, ist klar, dass die neuen, hierin beschriebenen Befehle bei Übergängen zwischen beliebigen zwei verschiedenen Ringen oder zwischen Prozessen in demselben Ring anwendbar sind.
  • Gemäß einer Ausführungsform enthalten die neuen Befehle ”RBSTCALL” und ”RBSTRET” Befehle, wobei ”RBST” für das Wort ”robust” steht. Der RBSTCALL Befehl ist ein Systemaufrufbefehl und der RBSTRET Befehl ist ein Systemrückstellungsbefehl. Diese neuen Befehle sind gegen schädliche Angriffe robust und haben auch eine hohe Leistung.
  • 1 zeigt ein Beispiel der Steuerungsübertragungen, die als Reaktion auf die ”RBSTCALL” und ”RBSTRET” Befehle stattfinden. Der RBSTCALL Befehl ist ein nicht privilegierter Befehl und kann von einem Anforderungsprogramm 110 aufgerufen werden, das in Ring 0, 1, 2 oder 3 vorliegen kann. Wenn ein Prozessor (z. B. eine zentrale Verarbeitungseinheit (CPU) in einem Verarbeitungssystem) den RBSTCALL Befehl im Anforderungsprogramm 110 ausführt, wird die Steuerung zu einem Rufprozessor 125 in einem Kernel 120 des Betriebssystems (OS) übertragen. Der Rufprozessor 125 arbeitet in Ring 0. Wenn der Rufprozessor 125 die Anrufbearbeitung beendet, führt der Prozessor den RBSTRET Befehl im OS 120 aus, um die Steuerung zum Anforderungsprogramm 110 zurückzustellen. Der RBSTRET Befehl ist ein privilegierter Befehl und kann nur von der Ring-0 Software aufgerufen werden, wie dem OS. In einer Ausführungsform kann die Ausführung der RBSTCALL und RBSTRET Befehle verschachtelt sein. Die Ausführung kann zum Beispiel dem Ablauf: Anforderungsprogramm 110 → RBSTCALL 111 → Rufprozessor 125 → RBSTRET 121 → Anforderungsprogramm 110 → RBSTCALL 111 → Rufprozessor 125 → RBSTRET 121 → Anforderungsprogramm 110 → RBSTCALL 113 → Rufprozessor 125 → RBSTRET 121 → Anforderungsprogramm 110 folgen. Somit kann jedes Mal, wenn die Steuerung zum Anforderungsprogramm 110 zurückgestellt wird, ein Codesegment des Anforderungsprogramms 110 vor dem nächsten Systemaufruf ausgeführt werden.
  • Eine Ausführungsform des RBSTCALL Befehls speichert den Inhalt von CS (Codeselektor), RIP (Instruction Pointer – Befehlszeiger) und RGLAGS auf dem Kernel-Stack unter Verwendung eines ähnlichen Formats wie die Unterbrechungs- und Ausnahme-Stack-Frames. Die Verwendung des Formats ebnet den Weg für einen leichten Wiedereintritt in die verschachtelte Ausführung.
  • Wie oben erwähnt, ermöglicht der RBSTCALL Befehl sowohl Intra-Ring-Aufrufe, die von Ring 0 stammen, wie auch Inter-Ring-Aufrufe, die von Ring 1, 2 oder 3 stammen. Ebenso ermöglicht der RBSTRET Befehl, dass der Ring-0 Code zu einem beliebigen Ring (z. B. Ring 0, 1, 2 oder 3) zurückgestellt wird. Jeder von dem RBSTCALL Befehl und dem RBSTRET Befehl lädt automatisch ein Segmentregister (z. B. GS) mit dem korrekten Selektorwert im Fall eines Ringübergangs, wodurch das Fenster eliminiert wird, wo ein Fehler vor Vollendung der Übertragung zu einer Ausführung im Aufsichtsmodus in einem Nicht-Aufsichtszustand im GS führen kann. Durch unteilbare Wiederherstellung des Ziel-Stack-Selektors (z. B. SS) und/oder des Stack-Zeigers (z. B. RSP) verbessert ferner der RBSTRET Befehl die Zuverlässigkeit durch Eliminierung des Fensters, in dem ein Kernel-Modus-Fehlerprozessor mit ungültigem SS und/oder RP arbeiten kann.
  • Ausführungsformen der RBSTCALL und RBSTRET Befehle führen Plausibilitätsprüfungen bezüglich der Gültigkeit von Zielselektoren (z. B. CS und SS) am Kernel-Stack aus und führen auch kanonische Prüfungen bezüglich der Gültigkeit eines Adressenformats im Ziel-RIP und RSP aus, wodurch das OS vor möglichen Korruptionen gewarnt wird. Die kanonische Prüfung des Adressenformats im RIP wird durch eine Prüfung vorgenommen, ob die Adresse, die in den RIP geladen ist, in einen nicht kanonischen Adressenbereich fällt. Diesen Bereich gibt es, weil der Adressenbereich, den die Architektur (z. B. 64 Bits) bereitstellt, größer ist als der verwendete Adressenbereich (z. B. 48 Bits). Somit wird eine Region des 64 Bit Adressenraums nicht genutzt. Diese ungenutzte Region ermöglicht zukünftige Adressenraumerweiterungen. Die ungenutzte Adressenregion ist jedoch ein nicht kanonischer Adressenbereich und jede Adresse im RIP, die in diesen Bereich fällt, ist eine ungültige Adresse. Die kanonischen Adressenprüfungen können durchgeführt werden, nachdem der RIP geladen wurde, aber bevor die Adresse im RIP festgelegt ist. Die kanonischen Adressenprüfungen beseitigen die Adressenformatanfälligkeiten im RIP, die durch Malware ausgenutzt werden können. In einigen Ausführungsformen können die kanonischen Adressenprüfungen auch an anderen Registern ausgeführt werden.
  • In einigen Ausführungsformen können die RBSTCALL und RBSTRET Befehle optimiert werden, so dass sie eine schnelle Version sind, indem der Großteil der Adressen- und Segmentvalidierungen entfernt wird und Annahmen über Ringübergänge erstellt werden; z. B. ist der Zielring null. Zum Beispiel validiert die schnelle Version die Werte in modellspezifischen Registern (MSRs) nicht, da die MSRs nur vom OS-Kernel geladen werden können. Die schnelle Version bietet den größten Nutzen von Steuerungsübertragungen bei deutlich geringeren Kosten.
  • Ähnlich wie bei den anderen Versionen der RBSTCALL und RBSTRET Befehle behält die schnelle Version das unteilbare Merkmal bei, in dem das GS automatisch mit dem korrekten Selektorwert geladen wird, wodurch das Fenster eliminiert wird, wo ein Fehler vor Vollendung der Übertragung zu einer Aufsichtsmodusausführung im Nicht-Aufsichtsmodus GS führen kann. Ähnlich den anderen Versionen der RBSTCALL und RBSTRET Befehle entfernt die schnelle Version mit dem kanonischen RIP in Zusammenhang stehende Anfälligkeiten, die mit Malware ausgenutzt werden können. Ähnlich den anderen Versionen der RBSTRET Befehle stellt die schnelle Version Ziel-SS und/oder RSP unteilbar wieder her, wodurch die Zuverlässigkeit verbessert wird, indem das Fenster beseitigt wird, in dem ein Kernel-Modus-Fehlerprozessor mit ungültigem SS und/oder RSP arbeiten kann. Die RBSTCALL und RBSTRET Befehle können durch eine Befehlsverarbeitungsvorrichtung wie unten beschrieben ausgeführt werden.
  • 2 ist ein Blockdiagramm einer Ausführungsform einer Befehlsverarbeitungsvorrichtung 215 mit einer Ausführungseinheit 240, die einen Schaltkreis enthält, der zur Ausführung von Befehlen, einschließlich der RBSTCALL/RBSTRET Befehle bedienbar ist. In einigen Ausführungsformen kann die Befehlsverarbeitungsvorrichtung 215 ein Prozessor, ein Prozessorkern eines Mehrfachkernprozessors oder ein Verarbeitungselement in einem elektronischen System sein.
  • Ein Decodierer 230 empfängt eingehende Befehle in der Form übergeordneter Maschinenbefehle oder Makrobefehle und decodiert sie, um untergeordnete Mikrooperationen, Mikrocode-Eingangspunkte, Mikrobefehle oder andere untergeordnete Befehle oder Steuersignale zu erzeugen, die den ursprünglichen übergeordneten Befehl wiedergeben und/oder von diesem abgeleitet sind. Die untergeordneten Befehle oder Steuersignale können die Operation des übergeordneten Befehls durch untergeordnete Operationen (z. B. auf Schaltungsebene oder Hardware-Ebene) implementieren. Der Decodierer 230 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen enthalten, ohne darauf beschränkt zu sein, Mikrocode, Verweistabellen, Hardware-Implementierungen, programmierbare logische Anordnungen (PLAs), andere Mechanismen, die in der Technik zum Implementierung von Decoder bekannt sind, usw..
  • Der Decodierer 230 kann eingehende Befehle für einen Zwischenspeicher 210, einen Speicher 220 oder andere Quellen empfangen. Die decodierten Befehle werden zur Ausführungseinheit 240 gesendet. Die Ausführungseinheit 240 kann eine oder mehrere Mikrooperationen, Mikrocode-Eingangspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale vom Decodierer 230 empfangen, die die empfangenen Befehle wiedergeben oder von diesen abgeleitet sind. Die Ausführungseinheit 240 empfängt einen Dateneingang von und erzeugt einen Datenausgang zu einer Registerdatei 270, dem Zwischenspeicher 210 und/oder dem Speicher 220.
  • In einer Ausführungsform enthält die Registerdatei 270 architektonische Register, die auch als Register bezeichnet werden. Falls nicht anders angegeben oder klar offensichtlich, werden die Phrasen architektonische Register, Registerdatei und Register hierin zur Bezeichnung von Registern verwendet, die für die Software und/oder den Programmierer sichtbar sind (z. B. Software-sichtbar) und oder von Registern, die durch Makrobefehle spezifiziert sind, um Operanden zu identifizieren. Diese Register stehen anderen nicht architektonischen Registern in einer bestimmten Mikroarchitektur gegenüber (z. B. temporären Register, Neuordnungspuffer, Rückordnungsregistern, usw.).
  • Zur Vermeidung einer Verschleierung der Beschreibung ist eine relativ einfache Befehlsverarbeitungsvorrichtung 215 dargestellt und beschrieben. Es ist klar, dass andere Ausführungsformen mehr als eine Ausführungseinheit haben können. Zum Beispiel kann die Vorrichtung 215 mehrere verschiedene Arten von Ausführungseinheiten enthalten, wie zum Beispiel arithmetische Einheiten, arithmetische logische Einheiten (ALUs), ganzzahlige Einheiten, Fließkommaeinheiten, usw. Weitere Ausführungsformen von Befehlsverarbeitungsvorrichtungen oder Prozessoren können mehrere Kerne, logische Prozessoren oder Ausführungsmaschinen haben. Eine Reihe von Ausführungsformen der Befehlsverarbeitungsvorrichtung 215 wird später in Bezug auf 713 angegeben.
  • Gemäß einer Ausführungsform enthält die Registerdatei 270 einen Satz von Registern, der von den RBSTCALL und RBSTRET Befehlen verwendet werden kann. Einige der Register können zum Speichern eines Systemzustandes verwendet werden, einschließlich Verweisen zu Segmenten und Befehlen. Ein Beispiel einer Registerdatei ist unten in Bezug auf 3 beschrieben.
  • 3 zeigt eine Ausführungsform einer zugrunde liegenden Registerarchitektur 300, die die hierin beschriebenen Befehle unterstützt. Die Registerarchitektur 300 beruht auf den Intel® CoreTM Prozessoren, die einen Befehlssatz implementieren, einschließlich x86, MMXTM, Streaming SIMD Extensions (SSE), SSE2, SSE3, SSE4.1 und SSE4.2 Befehle, wie auch einen zusätzlich Satz von SIMD Erweiterungen, die als die Advanced Vector Extensions (AVX) (AVX1, AVX2 und AVX3) bezeichnet werden. Es ist jedoch klar, dass auch eine andere Registerarchitektur verwendet werden kann, die andere Registerlängen, andere Registerarten und/oder eine andere Anzahl von Registern unterstützt.
  • In der dargestellten Ausführungsform gibt es zweiunddreißig Register 310, die 512 Bits breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die niederwertigen 256 Bits der unteren sechzehn zmm Register liegen auf Registern ymm 0–16. Die niederwertigen 128 Bits der unteren sechzehn zmm Register (die niederwertigen 128 Bits der ymm Register) liegen auf Registern xmm 0–15. In der dargestellten Ausführungsform gibt es acht Maskenregister 320 (k0 bis k7), die jeweils 64 Bits lang sind. In einer anderen Ausführungsform sind die Maskenregister 320 16 Bits breit.
  • In der dargestellten Ausführungsform enthält die Registerarchitektur 300 des Weiteren sechzehn 64-Bit Allzweck-(GP)Register 330. In einer Ausführungsform werden diese GP Register 330 gemeinsam mit den bestehenden x86 Adressiermodi zum Adressieren von Speicheroperanden verwendet. Die Registerarchitektur 300 enthält auch sechs 16-Bit Segmentregister (CS: Codeselektor, DS: Datenselektor, SS: Segmentselektor, ES: Extra, FS und GS). Die Ausführungsform zeigt auch ein RFLAGS-Register 360, ein RIP-Register 370 und modellspezifische Register (MSRs) 380.
  • Die Ausführungsform zeigt auch eine skalare Fließkomma-(FP)Stack-Registerdatei (x87 Stack) 340, auf der die MMX gepackte ganzzahlige Flachregisterdatei 350 verfälscht ist. In der dargestellten Ausführungsform ist der x87 Stack ein Acht-Element-Stack, der zur Ausführung skalarer Fließkommaoperationen an 32/64/80-Bit Fließkommadaten unter Verwendung der x87 Befehlssatzerweiterung verwendet wird; während die MMX Register zur Ausführung von Operationen auf 64-Bit gepackten ganzzahligen Daten verwendet werden, wie auch zum Halten von Operanden für einige Operationen, die zwischen den MMX und xmm Registern ausgeführt werden.
  • Alternative Ausführungsformen können breitere oder schmälere Register verwenden. Zusätzlich können alternative Ausführungsformen mehr, weniger oder andere Registerdateien und Register verwenden.
  • 4A zeigt ein Beispiel einer ersten Version eines RBSTCALL Befehls gemäß einer Ausführungsform. Der RBSTCALL Befehl überträgt eine Steuerung von einer anfragenden Stelle zu einem OS-Kernel. In einer Ausführungsform enthält der RBSTCALL Befehl einen Codeblock 410 zur Prüfung, ob der Aufruf gültig und freigegeben ist; wenn er nicht gültig oder nicht freigegeben ist, wird ein Fehler (z. B. ein Schutz (#GP Fehler) oder ein ungültiger Opcode (#UD Fehler)) erzeugt. Zum Beispiel kann ein Fehler erzeugt werden, wenn die anfragende Stelle nicht ein 64-Bit Codesegment ist oder der 64-Bit-Modus nicht freigegen ist oder die RBSTCALL- und RBSTRET Befehle nicht freigegen sind. In einer Ausführungsform sind die RBSTCALL und RBSTRET Befehle freigegeben, wenn ein Bit in einem der Register gesetzt ist.
  • Der RBSTRET Befehl kann von einer anfragenden Stelle aufgerufen werden, deren Privilegstufe null (für einen Intra-Ring-Aufruf) oder nicht null (für einen Inter-Ring-Aufruf) ist. Sowohl für den Intra-Ring-Aufruf wie auch den Inter-Ring-Aufruf verifiziert der Prozessor, der den RBSTCALL Befehl ausführt, die Adressenkonformität (z. B. für eine nicht kanonische RIP-Adresse) in Codeblöcken 420 und 430. In einer Ausführungsform verifiziert der Prozessor, der den RBSTCALL Befehl ausführt, im Codeblock 430 auch, ob die Segmentregister CS und SS gültige Adressen enthalten. Der RBSTCALL Befehl enthält ferner Codeblöcke 425 und 435 (für den Intra-Ring-Aufruf bzw. den Inter-Ring-Aufruf), um die Operationen eines Steuer-Stack-Wechsels zwischen dem OS-Kernel und der anfragenden Stelle auszuführen. Der Steuer-Stack bezieht sich hierin auf die Datenstrukturen, die vom Betriebssystem verwendet werden, um die Ausführung zu verfolgen. Diese Datenstrukturen sind im Speicher gespeichert und werden von den Segmentregistern CS, SS, GS wie auch den Zeigern RIP und RSP angezeigt. Da sich die Ring-0 Datenstrukturen (z. B. der Steuer-Stack, der mit dem OS-Kernel verknüpft ist) von ihren Ring-3 Gegenstücken (z. B. dem Steuer-Stack, der mit einem Benutzermodusprogramm verknüpft ist) unterscheiden, verlangt dies die Verwendung eines separaten SWAPGS-Befehls, der unmittelbar den SYSCALL/SYSRET Altbefehlen folgt. Der RBSTCALL (und ebenso RBSTRET) Befehl braucht keine separaten Befehle, um die Verweise auf die Datenstrukturen zwischen einem OS-Kernel und der anfragenden Stelle zu wechseln. Die Wechseloperation wird innerhalb des RBSTCALL/RBSTRET als einzelner unteilbarer Befehl ausgeführt. Für den Inter-Ringaufruf lädt der Codeblock 435 das GS mit dem korrekten Codeselektorwert. Somit ist erkennbar, dass innerhalb des RBSTCALL Befehls die Steuerungsübertragung mit Verifizierung und Steuer-Stack-Wechsel in einem unteilbaren Befehl erfolgt.
  • 4B zeigt ein Beispiel einer ersten Version des RBSTRET Befehls gemäß einer Ausführungsform. Der RBSTRET Befehl kehrt die Operationen des RBSTCALL Befehls um, indem er die Steuerung vom OS-Kernel zur anfragenden Stelle (d. h., der anfragenden Stelle des RBSTCALL) zurückstellt. Der RBSTRET Befehl ist ein privilegierter Befehl; das heißt, er kann nur vom Ring 0 aufgerufen werden. In dieser Ausführungsform enthält der RBSTRET Befehl einen Codeblock 440 zur Prüfung, ob der Aufruf gültig und freigegeben ist; falls er nicht gültig oder freigegeben ist, wird ein Fehler (ähnlich dem Codeblock 410 von 4A) erzeugt. Der Prozessor, der den RBSTRET Befehl ausführt, verifiziert die Adressenkonformität (z. B. für RIP und RSP nicht kanonische Adressenformate) in einem Codeblock 450. In einigen Ausführungsformen verifiziert der Prozessor, der den RBSTRET Befehl ausführt, im Codeblock 450 auch, ob die Segmentregister CS und SS gültige Adressen enthalten. Der RBSTRET Befehl enthält ferner Codeblöcke 460 und 470, um die Operationen eines Steuer-Stack-Wechsels zwischen dem OS-Kernel und der anfragenden Stelle auszuführen. Der Codeblock 470 wird ausgeführt, wenn die Privilegstufe der anfragenden Stelle nicht null ist (d. h, für einen Inter-Ringaufruf), wo das GS mit dem korrekten Codeselektorwert geladen wird. Somit ist erkennbar, dass innerhalb des RBSTRET Befehls die Steuerungsübertragen mit Verifizierung und Software-Stack-Wechsel in einem unteilbaren Befehl ausgeführt wird.
  • 5A und 5B zeigen ein Beispiel einer zweiten Version des RBSTCALL Befehls bzw. des RBSTRET Befehls gemäß einer Ausführungsform. Die zweite Version der RBSTCALL- und RBSTRET Befehle ist eine schnelle Version, wobei etwas von der Verifizierung, die in der ersten Version ausgeführt wird (z. B. der Großteil der Adressen und Segmentvalidierungen) entfernt ist. Die schnelle Version stellt auch Annahmen über Ringübergänge an (z. B. ist der Zielring Ring 0, der Codeselektor, der in CS geladen ist, ist ein gültiges Codesegment, usw.). Ferner wird in der schnellen Version angenommen, dass die allgemeinen Register RCX, R10, R11 als Ausgaberegister verwendet werden. Ein Speichern des Ausgangs in diesen Registern kann die Leistung der Befehle verbessern und eine Nutzung eines Teils des bestehenden Mikrocodes für Systemaufrufe ermöglichen. In der schnellen Version werden korrekte Werte in die Segmentregister GS, CS und SS geladen. Es ist erkennbar, dass innerhalb jedes des RBSTCALL Befehls und des RBSTRET Befehls der schnellen Version die Steuerungsübergabe mit Verifizierung und Steuer-Stack-Wechsel in einem unteilbaren Befehl erfolgt.
  • 6A ist ein Blockflussdiagramm eines Verfahrens 600 zur Ausführung eines Steuerungsübertragungsbefehls (z. B. eines RBSTCALL Befehls) gemäß einer Ausführungsform. Das Verfahren 600 beginnt damit, dass ein Prozessor einen Systemaufrufbefehl von einer anfragenden Stelle empfängt, um die Steuerung von einer ersten Privilegstufe der anfragenden Stelle auf eine zweite Privilegstufe eines OS-Kernels zu übertragen (Block 611). Als Reaktion auf den Systemaufrufbefehl wechselt der Prozessor Datenstrukturen, auf die ein oder mehr der Register weisen, zwischen der anfragenden Stelle und dem OS-Kernel in einem unteilbaren Übergang (Block 612). 6B ist ein Blockflussdiagramm eines Verfahrens 610 zum Ausführen eines Steuerungsübertragungsbefehls (z. B. eines RBSTRET Befehls) gemäß einer Ausführungsform. Das Verfahren 610 beginnt damit, dass ein Prozessor einen Systemrückstellbefehl vom OS-Kernel empfängt (Block 613). Als Reaktion auf den Systemrückstellbefehl stellt der Prozessor die Steuerung vom OS-Kernel zur anfragenden Stelle in einem unteilbaren Übergang wieder her (Block 614).
  • In einer Ausführungsform ist die erste Privilegstufe dieselbe wie die zweite Privilegstufe. In einer anderen Ausführungsform ist die erste Privilegstufe in einem Nicht-Aufsichtsmodus und die zweite Privilegstufe ist in einem Aufsichtsmodus. In einer Ausführungsform lädt der Prozessor, der auf die Systemaufrufbefehl reagiert, ein oder mehrere Segmentregister ungeteilt mit korrekten Werten. In einer Ausführungsform führt der Prozessor, der auf den Systemaufrufbefehl reagiert, Validitätsprüfungen ungeteilt an einem oder mehreren Segmentregistern aus. In einer Ausführungsform führt der Prozessor, der auf den Befehl reagiert, kanonische Prüfungen für Adressenkonformität ungeteilt an einem oder mehreren Zielzeiger(n) aus, die in eines oder mehrere der Register geladen werden.
  • In verschiedenen Ausführungsformen können die Verfahren von 6A6B von einem Allzweckprozessor, einem Spezialzweckprozessor (z. B. einem Grafikprozessor oder einem Digitalsignalprozessor) oder einer anderen Art von digitaler logischer Vorrichtung oder einer Befehlsverarbeitungsvorrichtung ausgeführt werden. In einigen Ausführungsform können die Verfahren von 6A6B von der Befehlsverarbeitungsvorrichtung von 2 oder einem ähnlichen Prozessor, einer ähnlichen Vorrichtung oder einem ähnlichen System ausgeführt werden, wie die in 713 dargestellten Ausführungsformen. Ferner können die Befehlsverarbeitungsvorrichtung von 2 wie auch der Prozessor, die Vorrichtung oder das System, der/die/das in 713 dargestellt ist, Ausführungsformen von Operationen und Verfahren ausführen, die entweder dieselben, die gleichen oder andere als jene der Verfahren von 6A6B sind.
  • In einigen Ausführungsformen kann die Befehlsverarbeitungsvorrichtung von 2 in Verbindung mit einem Befehlswandler arbeiten, der einen Befehl von einem Ursprungsbefehlssatz in einen Zielbefehlssatz umwandelt. Zum Beispiel kann der Befehlswandler einen Befehl in einen oder mehrere andere(n) Befehl(e) (z. B. mittels statischer binärer Übersetzung, dynamischer binärer Übersetzung, einschließlich dynamischer Kompilation) übersetzen, verformen, nachbilden oder auf andere Weise umwandeln, die vom Kern verarbeitet werden. Der Befehlswandler kann in Software, Hardware, Firmware oder einer Kombination davon implementiert sein. Der Befehlswandler kann ein Ein-Prozessor, ein Aus-Prozessor oder ein teilweise Ein- und teilweise Aus-Prozessor sein.
  • 6C ist ein Blockdiagramm, das die Verwendung eines Software-Befehlswandlers gemäß einer Ausführungsform gegenüberstellt. In der dargestellten Ausführungsform ist der Befehlswandler ein Software-Befehlswandler, obwohl der Befehlswandler auch in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert sein kann. 6C zeigt ein Programm in einer Hochsprache 602, das mit einem x86 Compiler 604 zum Erzeugen eines x86 binären Codes 606 kompiliert werden kann, der nativ von einem Prozessor mit mindestens einem x86 Befehlssatzkern 626 ausgeführt werden kann. Der Prozessor mit mindestens einem x86 Befehlssatzkern 626 stellt jeden Prozessor dar, der im Wesentlichen dieselben Funktionen wie ein Intel-Prozessor mit mindestens einem x86 Befehlssatzkern 626 durch kompatible Ausführung oder andersartige Verarbeitung (1) eines wesentlichen Teils des Befehlssatzes des Intel x86 Befehlssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder einer anderen Software, die dazu bestimmt ist, auf einem Intel-Prozessor zu laufen, mit mindestens einem x86 Befehlssatzkern ausführen kann, um im Wesentlichen dasselbe Ergebnis wie ein Intel-Prozessor mit mindestens einem x86 Befehlssatzkern zu erreichen. Der x86 Compiler 6604 stellt einen Compiler dar, der zum Erzeugen eines x86 binären Codes 606 (z. B. Objektcodes) betreibbar ist, der mit oder ohne zusätzliche Verknüpfungsverarbeitung auf dem Prozessor mit mindestens einem x86 Befehlssatzkern 626 ausgeführt werden kann. Ebenso zeigt 6C, dass das Programm in der Hochsprache 602 mit einem anderen Befehlssatz-Compiler 608 kompiliert werden kann, um einen anderen binären Befehlssatzcode 620 zu erzeugen, der nativ von einem Prozessor ohne mindestens einem x86 Befehlssatzkern 624 ausgeführt werden kann (z. B. einem Prozessor mit Kernen, die den MIPS Befehlssatz von MIPS Technologies, Sunnyvale, CA, ausführen und/oder den ARM-Befehlssatz von ARM Holdings, Sunnyvale, CA, ausführen). Der Befehlswandler 622 wird zum Umwandeln des x86 binären Codes 606 in einen Code verwendet, der nativ von dem Prozessor ohne x86 Befehlssatzkern 624 ausgeführt werden kann. Dieser umgewandelte Code ist wahrscheinlich nicht derselbe wie der alternative binäre Befehlssatzcode 620, da ein Befehlswandler, der dazu imstande ist, schwierig herzustellen ist; der umgewandelte Code führt jedoch die allgemeine Operation aus und besteht aus Befehlen vom alternativen Befehlssatz. Somit stellt der Befehlswandler 622 Software, Firmware, Hardware oder eine Kombination davon dar, die durch Nachbildung, Simulierung oder jeden anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtung, der bzw. die keinen x86 Befehlssatzkemprozessor oder Kern aufweist, ermöglicht, den x86 binären Code 606 auszuführen.
  • Beispielhafte Kernarchitekturen
  • In-Order- und Out-of-Order-Kernblockdiagramm
  • 7A ist ein Blockdiagramm, das sowohl eine beispielhafte In-Order-Pipeline wie auch eine beispielhafte Registerumbenennungs-, Out-of-Order-Issue/Ausführungs-Pipeline gemäß einer Ausführungsform zeigt. 7B ist ein Blockdiagramm, das sowohl eine beispielhafte Ausführungsform eines beispielhaften In-Order-Architekturkerns wie auch eines beispielhaften Out-of-Order-Issue/Ausführungsarchitekturkerns zeigt, der in einem Prozessor gemäß einer Ausführungsform enthalten sein soll. Die Kästen in Volllinien in 7A und 7B zeigen die In-Order-Pipeline und den In-Order-Kern, während das optionale Hinzufügen der Kästen in gestrichelten Linien die Registerumbenennungs-, Out-of-Order-Issue/Ausführungs-Pipeline und den Kern zeigt. Angesichts der Tatsache, dass der In-Order-Aspekt ein Teilsatz des Out-of-Order Aspekts ist, wird der Out-of-Order Aspekt beschrieben.
  • In 7A enthält eine Prozessor-Pipeline 700 eine Abrufphase 702, eine Längendecodierphase 704, eine Decodierphase 706, eine Zuordnungsphase 708, eine Umbenennungsphase 710, eine Ablaufplanungsphase 712 (auch bekannt als Meldungs- oder Issue-Phase), eine Registerlese-/Speicherlesephase 714, eine Ausführungsphase 716, eine Rückschreib/Speicherschreibphase 718, eine Ausnahmebearbeitungsphase 722 und eine Festlegungsphase 724.
  • 7B zeigt einen Prozessorkern 790, der eine Frontend-Einheit 730 enthält, die an eine Ausführungsmaschineneinheit 750 gekoppelt ist, und beide sind an eine Speichereinheit 770 gekoppelt. Der Kern 790 kann ein RISC-(Reduced Instruction Set Computing)Kern oder ein CISC-(Complex Instruction Set Computing)Kern, ein VLIW-(Very Long Instruction Word)Kern oder ein hybrider oder alternativer Kerntyp sein. Als weitere Option kann der Kern 790 ein Spezialzweckkern sein, wie zum Beispiel ein Netz- oder Kommunikationskern, eine Kompressionsmaschine, ein Co-Prozessorkern, ein GPGPU-(General Purpose Computing Graphics Processing Unit)Kern, ein Grafikkern oder dergleichen.
  • Die Frontend-Einheit 730 enthält eine Zweigvorhersageeinheit 732, die an eine Befehlszwischenspeichereinheit 743 gekoppelt ist, die an einen Befehlsübersetzungspuffer (Translation Lookaside Buffer – TLB) 736 gekoppelt ist, der an eine Befehlsabrufeinheit 738 gekoppelt ist, die an eine Decodiereinheit 740 gekoppelt ist. Die Decodiereinheit 740 (oder der Decodierer) kann Befehle decodieren und als Ausgang eine oder mehrere Mikrooperationen, Mikrocode-Eingangspunkte, Mikrobefehle oder andere Befehle oder andere Steuersignale erzeugen, die aus den ursprünglichen Befehlen decodiert werden oder diese auf andere Weise wiedergeben oder von diesen abgeleitet sind. Die Decodiereinheit 740 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen enthalten, ohne aber darauf beschränkt zu sein, Verweistabellen, Hardware-Implementierungen, programmierbare logische Anordnungen (PLAs) Mikrocode-Nur-Lese-Speicher (ROMs) usw. In einer Ausführungsform enthält der Kern 790 einen Mikrocode-ROM oder ein anderes Medium, das einen Mikrocode für gewisse Makrobefehle (z. B. in einer Decodiereinheit 740 oder sonst in der Frontend-Einheit 730) speichert. Die Decodiereinheit 740 ist an eine Umbenennungs-/Zuordnungseinheit 752 in der Ausführungsmaschineneinheit 750 gekoppelt.
  • Die Ausführungsmaschineneinheit 750 enthält die Umbenennungs-/Zuordnungseinheit 752, die an eine Rückordnungseinheit 754 gekoppelt ist, und einen Satz aus einer oder mehreren Scheduler-Einheit(en) 756. Die Scheduler-Einheit(en) 756 stellt (stellen) eine beliebige Anzahl verschiedener Scheduler dar, einschließlich Reservierungsstationen, eines zentralen Befehlsfensters, usw. Die Scheduler-Einheit(en) 756 ist (sind) an die physische(n) Registerdatei(n)-Einheit(en) 758 gekoppelt. Jede der physische(n) Registerdatei(n)-Einheit(en) 758 stellt eine oder mehrere physische Registerdatei(en) dar, von welchen unterschiedliche einen oder mehrere unterschiedliche Datentyp(en) speichern, wie skalare ganze Zahl, skalares Fließkomma, gepackte ganze Zahl, gepacktes Fließkomma, ganze Vektorzahl, Vektorfließkomma, Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. In einer Einheit umfasst die physische Registerdatei(en)-Einheit 758 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine skalare Registereinheit. Die Registereinheiten können architektonische Vektorregister, Vektormaskenregister und Allzweckregister bereitstellen. Die physische(n) Registerdatei(n)-Einheit(en) 758 wird (werden) von der Rückordnungseinheit 754 überlappt, um verschiedene Möglichkeiten zu zeigen, in welchen eine Registerumbenennung- und Out-of-Order-Ausführung implementiert werden kann (z. B. mit Aufzeichnungspuffer(n) und Rückordnungsregisterdatei(en); mit Zukunftsdatei(en), History-Puffer(n) und Rückordnungsregisterdatei(n); mit Registerkarten und einem Pool von Registern; usw.). Die Rückordnungseinheit 754 und die physische(n) Registerdatei(en)-Einheit(en) 758 sind an den (die) Ausführungs-Cluster 760 gekoppelt. Der (die) Ausführungs-Cluster 760 enthält (enthalten) eine oder mehrere Ausführungseinheit(en) 762 und einen Satz aus einer oder mehreren Speicherzugriffseinheit(en) 764. Die Ausführungseinheiten 752 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Arten von Daten (z. B. skalares Fließkomma, gepackte ganze Zahl, gepacktes Fließkomma, ganze Vektorzahl, Vektorfließkomma) ausführen. Während einige Ausführungsformen eine Reihe von Ausführungseinheiten enthalten können, die für bestimmte Funktionen oder Sätze von Funktionen bestimmt sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten enthalten, die alle Funktionen ausführen. Die Scheduler-Einheit(en), 756, die physische(n) Registerdatei(n)-Einheit(en) 758 und der (die) Ausführungscluster 760 sind in einer möglichen Vielzahl dargestellt, da gewisse Ausführungsformen separate Pipelines für gewisse Arten von Daten/Operationen schaffen (z. B. eine skalare ganzzahlige Pipeline, eine skalare Fließkomma/gepackte ganze Zahl/gepackte Fließkomma/ganze Vektorzahl/Vektorfließkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Scheduler-Einheit, physische Registerdatei(en)-Einheit und/oder ihren eigenen Ausführungscluster haben – und im Falle einer separaten Speicherzugriffs-Pipeline werden gewisse Ausführungsformen implementiert, in welchen nur der Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 764 hat). Es sollte auch klar sein, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order Issue/Ausführung sein können und die übrigen In-Order.
  • Der Satz von Speicherzugriffseinheiten 764 ist an die Speichereinheit 770 gekoppelt, die eine Daten-TLB-Einheit 772 enthält, die an eine Datenzwischenspeichereinheit 774 gekoppelt ist, die an eine Stufe 2 (L2)-Zwischenspeichereinheit 776 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 764 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit enthalten, von welchen jede an die Daten-TLB-Einheit 772 in der Speichereinheit 770 gekoppelt ist. Die Befehlszwischenspeichereinheit 734 ist ferner an eine Stufe 2 (L2)-Zwischenspeichereinheit 776 in der Speichereinheit 770 gekoppelt. Die L2-Zwischenspeichereinheit 776 ist an eine oder mehrere andere Stufe(n) eines Zwischenspeichers und schließlich an einen Hauptspeicher gekoppelt.
  • Als Beispiel kann die beispielhafte Registerumbenennungs-, Out-of-Order Issue/Ausführungs-Kernarchitektur die Pipeline 700 wie folgt implementieren: 1) der Befehlsabruf 738 führt die Abruf- und Längendecodierphasen 702 und 704 aus; 2) die Decodiereinheit 740 führt die Decodierphase 706 aus; 3) die Umbenennungs-/Zuordnungseinheit 752 führt die Zuordnungsphase 708 und Umbenennungsphase 710 aus; 4) die Scheduler-Einheit(en) 756 führt (führen) die Ablaufplanungsphase 712 aus; 5) die physische(n) Registerdatei(en)-Einheit(en) 758 und die Speichereinheit 770 führen die Registerlese-/Speicherlesephase 714 aus; der Ausführungs-Cluster 760 führt die Ausführungsphase 716 aus; 6) die Speichereinheit 770 und die physische(n) Registerdatei(en)-Einheit(en) 758 führen die Rückschreib-/Speicherschreibphase 718 aus; 7) verschiedene Einheiten können an der Ausnahmebearbeitungsphase 722 beteiligt sein; und 8) die Rückordnungseinheit 754 und die physische(n) Registerdatei(en)-Einheit(en) 758 führen die Festlegungsphase 724 aus.
  • Der Kern 790 kann einen Befehlssatz oder mehrere Befehlssätze (z. B. den x86 Befehlssatz (mit einigen Erweiterungen, die neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies, Sunnyvale, CA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen wie NEON) von ARM Holdings, Sunnyvale, CA) einschließlich des (der) hierin beschriebenen Befehls (Befehle) unterstützen. In einer Ausführungsform enthält der Kern 790 eine Logik zur Unterstützung einer gepackten Datenbefehlssatzerweiterung (z. B. SSE, AVX1, AVX2, usw.), wodurch die Operationen, die von vielen Multimedia-Anwendungen verwendet werden, mit gepackten Daten ausgeführt werden können.
  • Es sollte klar sein, dass der Kern ein Multithreading (eine Mehrfädigkeit) (Ausfürung von zwei oder mehr parallelen Sätzen von Operationen oder Bearbeitungssträngen (Threads)) unterstützt und dies auf verschiedene Weisen, einschließlich Zeitintervall-Multithreading, gleichzeitiges Multithreading (wo ein einziger physischer Kern einen logischen Kern für jeden der Bearbeitungsstrange bereitstellt, bei welchen dieser physische Kern gleichzeitig ein Multithreading ausführt) oder einer Kombination davon (z. B. ein Abrufen in Zeitintervallen und Decodieren und anschließendes gleichzeitiges Multithreading, wie in der Intel® Hyperthreading Technologie).
  • Während eine Registerumbenennung im Zusammenhang mit einer Out-of-Order-Ausführung beschrieben ist, sollte klar sein, dass eine Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Während die dargestellte Ausführungsform des Prozessors auch separate Befehls- und Datenzwischenspeichereinheiten 734/774 und eine gemeinsam L2-Zwischenspeichereinheit 776 enthält, können alternative Ausführungsformen einen einzigen internen Zwischenspeicher sowohl für Befehle wie auch Daten haben, wie zum Beispiel einen Stufe 1 (L1) internen Zwischenspeicher oder mehrere Stufen eines internen Zwischenspeichers. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Zwischenspeicher und einem externen Zwischenspeicher enthalten, der extern zum Kern und/oder zum Prozessor ist. Als Alternative kann der gesamte Zwischenspeicher extern zum Kern und/oder zum Prozessor sein.
  • Spezifische beispielhafte In-Order-Kernarchitektur
  • 8A–B zeigen ein Blockdiagramm einer spezifischeren beispielhaften In-Order-Kernarchitektur, wobei der Kern einer von mehreren logischen Blöcken (einschließlich anderer Kerne derselben Art und/oder verschiedener Arten) in einem Chip wäre. Die logischen Blöcke kommunizieren durch ein Hoch-Bandbreitenverbindungsnetz (z. B. ein Ringnetz) mit einer gewissen festgelegten Funktionslogik, Speicher-I/O-Schnittstellen und einer anderen notwendigen I/O-Logik, abhängig von der Anwendung.
  • 8A ist ein Blockdiagramm eines einzelnen Prozessorkerns, gemeinsam mit seiner Verbindung zum Verbindungsnetz 802 auf dem Chip und mit seinem örtlichen Teilsatz des Stufe 2 (L2) Zwischenspeichers 804 gemäß einer Ausführungsform. In einer Ausführungsform unterstützt ein Befehlsdecodierer 800 den x86 Befehlssatz mit einer gepackten Datenbefehlssatzerweiterung. Ein L1-Zwischenspiecher 806 ermöglicht Zugriffe geringer Latenz auf einen Zwischenspeicher in den skalaren und Vektoreinheiten. Während in einer Ausführungsform (zur Vereinfachung des Designs) eine skalare Einheit 808 und eine Vektoreinheit 810 separate Registersätze verwenden (skalare Register 812 bzw. Vektorregister 814) und Daten, die zwischen diesen übertragen werden, in einen Speicher geschrieben und dann wieder aus einem Stufe 1 (L1) Zwischenspeicher ausgelesen werden, können alternative Ausführungsformen eine andere Strategie verwenden (z. B. einen einzigen Registersatz verwenden oder einen Kommunikationspfad enthalten, der eine Datenübertragung zwischen den zwei Registerdateien ermöglicht, ohne dass diese geschrieben und ausgelesen werden).
  • Der örtliche Teilsatz des L2-Zwischenspeichers 804 ist Teil eines globalen L2-Zwischenspeichers, der in separate örtliche Teilsätze, einen pro Prozessorkern, unterteilt ist. Jeder Prozessorkern hat einen direkten Zugriffspfad auf seinen eigenen örtlichen Teilsatz des L2-Zwischenspeichers 804. Daten, die von einem Prozessorkern ausgelesen werden, werden in seinem L2-Zwischenspeicherteilsatz 804 gespeichert und auf diese kann rasch zugegriffen werden, parallel mit anderen Prozessorkernen, die auf ihre eigenen örtlichen L2-Zwischenspeicherteilsätze zugreifen. Daten, die von einem Prozessorkern geschrieben werden, werden in seinem eigenen L2-Zwischenspeicherteilsatz gespeichert und, falls notwendig, aus anderen Teilsätzen gelöscht. Das Ringnetz garantiert eine Kohärenz gemeinsamer Daten. Das Ringnetz ist zweiseitig gerichtet, so dass Agenten, wie Prozessorkerne, L2-Zwischenspeicher und andere logische Blöcke, innerhalb des Chips miteinander kommunizieren können.
  • 8B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 8A gemäß einer Ausführungsform. 8B enthält einen L1-Datenzwischenspeicherteil 806A des L1-Zwischenspeichers 804 wie auch mehrere Einzelheiten bezüglich der Vektoreinheit 810 und der Vektorregister 814. Insbesondere ist die Vektoreinheit 810 eine 16-breite Vektorverarbeitungseinheit (VPU) (siehe 16-breite ALU 828), die einen oder mehrere von ganzzahligen, Einzelpräsisionsfließ- und Doppelpräsisionsfließbefehlen ausführt. Die VPU unterstützt ein Swizzling der Registereingänge mit einer Swizzling-Einheit 820, eine numerische Umwandlung mit numerischen Umwandlungseinheiten 922A–B und eine Replikation mit einer Replikationseinheit 824 auf dem Speichereingang. Schreibmaskenregister 826 ermöglichen eine Aussage resultierender Vektoreinträge.
  • Prozessor mit integrierter Speichersteuerung und Grafiken
  • 9 ist ein Blockdiagramm eines Prozessors 900 gemäß einer Ausführungsform, der mehr als einen Kern haben kann, der eine integrierte Speichersteuerung haben kann und eine integrierte Grafik haben kann. Die Kästen in Volllinie in 9 zeigen einen Prozessor 900 mit einem einzigen Kern 902A, einen Systemagenten 910, einem Satz von einer oder mehreren Bus-Steuereinheit(en) 916, während das optionale Hinzufügen der Kästen in gestrichelten Linien einen alternativen Prozessor 900 mit mehreren Kernen 902A–N, einem Satz aus einer oder mehreren integrierten Speichersteuereinheit(en) 914 in der Systemagenteneinheit 910 und einer Spezialzwecklogik 908 zeigt.
  • Somit können verschiedene Implementierungen des Prozessors 900 enthalten: 1) eine CPU mit der Spezialzwecklogik 908, die eine integrierte Grafik und/oder wissenschaftliche (Durchsatz) Logik ist (die einen oder mehrere Kern(e) enthalten kann) und wobei die Kerne 902A–N ein oder mehrere Allzweckkern(e) sind (z. B. Allzweck-in-Order-Kerne, Allzweck-out-of-Order-Kerne, eine Kombination der zwei), 2) einen Co-Prozessor, wobei die Kerne 902A–N eine große Anzahl von Spezialzweckkernen sind, die vorwiegend für Grafik und/oder Wissenschaft (Durchsatz) bestimmt ist; und 3) einen Co-Prozessor, wobei die Kerne 902A–N eine große Anzahl von Spezialzweck-out-of-Order-Kernen sind. Somit kann der Prozessor 900 ein Allzweckprozessor, ein Co-Prozessor oder Spezialzweckprozessor sein, wie zum Beispiel ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU (Allzweckgrafikverarbeitungseinheit), ein Coprozessor mit hohem Durchsatz und vielen integrierten Kernen (MIC) (einschließlich 30 oder mehr Kernen), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chip(s) implementiert sein. Der Prozessor 900 kann ein Teil einer Trägerschicht sein und/oder kann auf einer oder mehreren Trägerschichten unter Verwendung einer beliebigen einer Reihe von Prozesstechnologien implementiert sein, wie zum Beispiel BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie enthält eine oder mehrere Zwischenspeicherstufe(n) innerhalb der Kerne, einen Satz von oder eine oder mehrere gemeinsame Zwischenspeichereinheit(en) 906 und einen externen Speicher (nicht dargestellt), der an den Satz von integrierten Speichersteuerungseinheiten 914 gekoppelt ist. Der Satz gemeinsamer Zwischenspeichereinheiten 906 kann einen oder mehrere Mittelstufen-Zwischenspeicher, wie Stufe 2 (L2), Stufe 3 (L3), Stufe 4 (L4) oder andere Zwischenspeicherstufen, einen Zwischenspeicher der letzten Stufe (Last Level Cache – LLC) und/oder eine Kombination davon enthalten. Während in einer Ausführungsform eine auf Ring basierende Verbindungseinheit 912 die integrierte Grafiklogik 908, den Satz gemeinsamer Zwischenspeichereinheiten 906 und die Systemagenteneinheit 910/integrierte Speichersteuerungseinheit(en) 914 verbindet, können alternative Ausführungsformen eine Reihe allgemein bekannter Techniken zur Verbindung solcher Einheiten verwenden. In einer Ausführungsform wird eine Kohärenz zwischen einer oder mehreren Zwischenspeichereinheit(en) 906 und Kernen 906A–N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 902A–N zu einem Multithreading imstande. Der Systemagent 910 enthält jene Komponenten, die die Kerne 902A–N koordinieren und betreiben. Die Systemagenteneinheit 910 kann zum Beispiel eine Leistungssteuereinheit (Power Control Unit – PCU) und eine Anzeigeeinheit enthalten. Die PCU kann eine Logik und Komponenten sein oder enthalten, die zur Regulierung des Leistungszustandes der Kerne 902A–N und der integrierten Grafiklogik 908 erforderlich sind. Die Anzeigeeinheit dient zum Antreiben einer oder mehrerer extern angeschlossener Anzeigen.
  • Die Kerne 902A–N können im Sinne von Architekturbefehlssatz homogen oder heterogen sein: das heißt, zwei oder mehr der Kerne 902A–N können zur Ausführung desselben Befehlssatzes imstande sein, während andere nur zur Ausführung eines Teilsatzes dieses Befehlssatzes oder eines anderen Befehlssatzes imstande sein können.
  • Beispielhafte Rechnerarchitektur
  • 1013 sind Blockdiagramme beispielhafter Rechnerarchitekturen. Andere Systemdesigns und -konfigurationen, die in der Technik für Laptops, Desktops, tragbare PCs, persönliche digitale Assistenten, Technikarbeitsplätze (Engineering Workstations), Server, Netzvorrichtungen, Netzknoten, Schalter, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Grafikvorrichtungen, Video-Spielkonsolen, Set-Top-Boxes, Mikrosteuerungen Mobiltelefone, tragbare Media-Player, tragbare Vorrichtungen und verschiedene andere elektronische Vorrichtungen bekannt sind, sind ebenso geeignet. Im Allgemeinen sind zahlreiche Systeme oder elektronische Vorrichtungen allgemein geeignet, die imstande sind, einen Prozessor und/oder eine andere Ausführungslogik, wie hierin offenbart, zu integrieren.
  • Unter Bezugnahme nun auf 10 ist ein Blockdiagramm eines Systems 1000 gemäß einer Ausführungsform dargestellt. Das System 1000 kann einen oder mehrere Prozessor(en) 1010, 1015 enthalten, die an einen Steuerungsknoten 1020 gekoppelt sind. In einer Ausführungsform enthält der Steuerungsknoten 1020 einen Grafikspeichersteuerungsknoten (Graphics Memory Controller Hub – GMCH) 1090 und einen Eingangs/Ausgangsknoten (Input/Output Hub – IOH) 1050 (die auf separaten Chips vorhanden sein können), der GMCH 1090 enthält Speicher- und Grafiksteuerungen, an die ein Speicher 1040 und ein Co-Prozessor 1045 gekoppelt sind; der IOH 1050 ist an die Eingangs/Ausgangs-(IO)Vorrichtungen 1060 und an den GMCH 1090 gekoppelt. Als Alternative sind eine oder beide der Speicher- und Grafiksteuerungen in dem Prozessor (wie hierin beschrieben) integriert, der Speicher 1040 und der Co-Prozessor 1045 sind direkt an den Prozessor 1010 gekoppelt und der Steuerungsknoten 1020 befindet sich in einem einzelnen Chip mit dem IOH 1050.
  • Die optionale Eigenschaft zusätzlicher Prozessoren 1015 ist in 10 mit unterbrochenen Linien dargestellt. Jeder Prozessor 1010, 1015 kann einen oder mehrere, hierein beschriebene, Prozessorkern(e) enthalten und kann eine gewisse Version des Prozessors 900 sein.
  • Der Speicher 1040 kann zum Beispiel ein dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory – DRAM), ein Phasenänderungsspeicher (Phase Change Memory – PCM) oder eine Kombination der zwei sein. Für mindestens eine Ausführungsform kommuniziert der Steuerungsknoten 1020 mit dem (den) Prozessor(en) 1010, 1015 über einen Multidrop-Bus, wie einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie QuickPath Interconnect (QPI) oder eine ähnliche Verbindung 1095.
  • In einer Ausführungsform ist der Co-Prozessor 1045 ein Spezialzweckprozessor, wie zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Steuerungsknoten 1020 einen integrierten Grafikbeschleuniger enthalten.
  • Es können zahlreiche Unterschiede zwischen den physischen Ressourcen 1010, 1015 im Sinne eines bewährten Metrikspektrums vorliegen, einschließlich architektonischer, mikroarchitektonischer, thermischer, Leistungsverbrauchseigenschaften und dergleichen.
  • In einer Ausführungsform führt der Prozessor 1010 Befehle aus, die Datenverarbeitungsoperationen einer allgemeinen Art steuern. In den Befehlen können Co-Prozessorbefehle eingebettet sein. Der Prozessor 1010 erkennt diese Co-Prozessorbefehle als eine Art, die von dem angefügten Co-Prozessor 1045 ausgeführt werden soll. Daher gibt der Prozessor 1010 diese Co-Prozessorbefehle (oder Steuersignale, die Co-Prozessorbefehle darstellen) auf einem Co-Prozessorbus oder einer anderen Verbindung an den Co-Prozessor 1045 aus. Der (die) Co-Prozessor(en) 1045 nimmt (nehmen) die empfangenen Co-Prozessorbefehle an und führt (führen) sie aus.
  • Unter Bezugnahme nun auf 11 ist ein Blockdiagramm eines ersten spezifischeren Systems 1100 gemäß einer Ausführungsform dargestellt. Wie in 11 dargestellt, ist ein Multiprozessorsystem 1100 ein Punkt-zu-Punkt-Verbindungssystem und enthält einen ersten Prozessor 1170 und einen zweiten Prozessor 1180, die über eine Punkt-zu-Punkt-Verbindung 1150 gekoppelt sind. Jeder der Prozessoren 1170 und 1180 kann eine gewisse Version des Prozessors 9000 sein. In einer Ausführungsform sind die Prozessoren 1170 und 1180 die Prozessoren 1010 bzw. 1015, während der Co-Prozessor 1138 der Co-Prozessor 1045 ist. In einer anderen Ausführungsform sind die Prozessoren 1170 und 1108 der Co-Prozessor 1045.
  • Die Prozessoren 1170 und 1180 enthalten in der Darstellung integrierte Speichersteuerungs-(Integrated Memory Controller – IMC)Einheiten 1172 bzw. 1182. Der Prozessor 1170 enthält auch als Teil seiner Bussteuerungseinheiten Punkt-zu-Punkt-(P-P)Schnittstellen 1176 und 1178; ebenso enthält der zweite Prozessor 1180 P-P-Schnittstellen 1186 und 1188. Die Prozessoren 1170 und 1180 können Informationen über eine Punkt-zu-Punkt-(P-P)Schnittstelle 1150 unter Verwendung von P-P-Schnittstellenschaltungen 1178, 1188 austauschen. Wie in 11 dargestellt, koppeln IMCs 1172 und 1182 die Prozessoren an entsprechende Speicher, nämlich einen Speicher 1132 und eine Speicher 1134, die Teile eines Hauptspeichers sein können, der örtlich an den entsprechenden Prozessoren angebracht ist.
  • Die Prozessoren 1170, 1180 können Informationen mit einem Chipsatz 1190 über einzelne P-P Schnittstellen 1152, 1154 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1176, 1194, 1186, 1198 austauschen. Der Chipsatz 1190 kann optional Informationen mit dem Co-Prozessor 1138 über eine Hochleistungsschnittstelle 1139 ausrauschen. In einer Ausführungsform ist der Co-Prozessor 1138 ein Spezialzweckprozessor, wie zum Beispiel ein Hochdurchsatz-MIC-Prozessor, ein Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsamer Zwischenspeicher (nicht dargestellt) kann in einem Prozessor oder außerhalb beider Prozessoren, aber mit den Prozessoren durch eine P-P Verbindung verbunden, enthalten sein, so dass örtliche Zwischenspeicherinformationen des einen oder beider Prozessoren in dem gemeinsamen Zwischenspeicher gespeichert werden können, wenn ein Prozessor in einen Niederleistungsmodus gestellt wird.
  • Der Chipsatz 1190 kann über eine Schnittstelle 1196 an einen ersten Bus 1116 gekoppelt sein. In einer ersten Ausführungsform kann der erste Bus 1116 ein PCI-(Peripheral Component Interconnect)Bus oder ein Bus wie ein PCI-Expressbus oder ein anderer I/O-Verbindungsbus der dritten Generation sen. Es können auch alternative Ausführungsformen verwendet werden.
  • Wie in 11 dargestellt, können verschiedene I/O-Vorrichtungen 1114 an einen ersten Bus 1116 gekoppelt sein, gemeinsam mit einer Bus-Brücke 1118, die den ersten Bus 1116 an einen zweiten Bus 1120 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche(r) Prozessor(en) 1115, wie Co-Prozessoren, Hoch-Durchsatz-MIC-Prozessoren, GPGPUs, Beschleuniger (wie z. B. Grafikbeschleuniger oder Digitalsignalverarbeitungs-(DSP)Einheiten) feldprogrammierbare Gate-Arrays oder ein beliebiger anderer Prozessor an den ersten Bus 1116 gekoppelt. In einer Ausführungsform kann der zweite Bus 1120 ein LPC-(Low Pin Count)Bus sein. In einer Ausführungsform können verschiedene Vorrichtungen an einen zweiten Bus 1120 gekoppelt sein, einschließlich zum Beispiel einer Tastatur und/oder Maus 1122, Kommunikationsvorrichtungen 1127 und einer Speichereinheit 1128, wie eines Festplattenlaufwerks oder einer anderen Massenspeichervorrichtung, die Befehle/Code und Daten 1130 enthalten können. Ferner kann ein Audio-I/O 1124 an den zweiten Bus 1120 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann anstelle der Punkt-zu-Punkt-Architektur von 11 ein System einen Multidrop-Bus oder eine andere solche Architektur implementieren.
  • Unter Bezugnahme auf 12 ist ein Blockdiagramm eines zweiten spezifischeren beispielhaften Systems gemäß einer Ausführungsform dargestellt. Gleiche Elemente in 11 und 12 tragen gleiche Bezugszeichen und gewisse Aspekte von 11 wurden in 12 ausgelassen, um eine Verschleierung anderer Aspekte von 12 zu vermeiden.
  • 12 zeigt, dass die Prozessoren 1170, 1180 einen integrierten Speicher und eine I/O-Steuerlogik (Control Logic – CL) 1172 bzw. 1182 enthalten können. Somit enthalten die CL 1172, 1182 integrierte Speichersteuerungseinheiten und enthalten eine I/O-Steuerlogik. 12 zeigt, dass nicht nur die Speicher 1132, 1124 an die CL 1172, 1182 gekoppelt sind, sondern dass auch I/O-Vorrichtungen 1214 ebenso an die Steuerlogik 1172, 1182 gekoppelt sind. Alt-I/O-Vorrichtungen 1215 sind an den Chipsatz 1190 gekoppelt.
  • Unter Bezugnahme nun auf 13 ist ein Blockdiagramm eines SoC 1300 gemäß einer Ausführungsform dargestellt. Gleiche Elemente in 9 tragen gleiche Bezugszeichen. Ebenso sind Kästen in gestrichelten Linien optionale Merkmale auf höherentwickelten SoCs. In 13 ist (sind) eine Verbindungseinheit(en) 1302 gekoppelt an: einen Anwendungsprozessor 1310, der einen Satz aus einem oder mehreren Kern(en) 902A–N und (eine) gemeinsame Zwischenspeichereinheit(en) 906 enthält; eine Systemagenteneinheit 910; (eine) Bussteuerungseinheit(en) 916; (eine) integrierte Speichersteuerungseinheit(en) 914; einen Satz aus einem oder mehreren Co-Prozessoren 1320, die eine integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor enthalten können; und eine statische Direktzugriffsspeicher-(SRAM)Einheit 1330; eine Direktzugriffspeicher-(DMA)Einheit 1332; und eine Anzeigeeinheit 1340 zum Koppeln an eine oder mehrere externe Anzeige(n). In einer Ausführungsform enthält (enthalten) der (die) Co-Prozessor(en) 1320 einen Spezialzweckprozessor, wie zum Beispiel einen Netz- oder Kommunikationsprozessor, eine Kompressionsmaschine, eine GPGPU, einen Hoch-Durchsatz-MIC-Prozessor, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination solcher Implementierungsstrategien implementiert werden. Ausführungsformen können als Computerprogramme oder Programmcode implementiert werden, die auf programmierbaren Systemen laufen, die mindestens einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nicht flüchtiger Speicher und/oder Speicherelemente), mindestens eine Eingabevorrichtung und mindestens eine Ausgabevorrichtung umfassen.
  • Ein Programmcode, wie Code 1130, der in 11 dargestellt ist, kann bei eingegebenen Befehlen angewendet werden, um die hierin beschriebenen Funktionen auszuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können auf bekannte Weise bei einer oder mehreren Ausgabevorrichtung(en) angewendet werden. Zum Zweck dieser Anmeldung enthält ein Verarbeitungssystem jedes System, das einen Prozessor hat, wie zum Beispiel einen Digitalsignalprozessor (DSP), eine Mikrosteuerung, eine anwendungsspezifische integrierte Schaltung (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer hochwertigen prozedur- oder objektorientierten Programmiersprache zur Kommunikation mit einem Verarbeitungssystem implementiert werden. Der Programmcode kann nach Wunsch auch in einer Assembly- oder Maschinensprache implementiert werden. Tatsächlich sind die hierin beschriebenen Mechanismen in ihrem Umfang nicht auf eine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekt(e) mindestens einer Ausführungsform können durch repräsentative Befehle implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das eine unterschiedliche Logik im Prozessor darstellt, die, wenn sie von einer Maschine gelesen werden, die Maschine veranlassen, eine Logik zu erstellen, um die hierin beschriebenen Techniken auszuführen. Solche Darstellungen, bekannt als ”IP Kerne”, können auf einem materiellen, maschinenlesbaren Medium gespeichert und verschiedenen Kunden oder Herstellungseinrichtungen zugeführt werden, um in die Herstellungsmaschinen geladen zu werden, die eigentlich die Logik oder den Prozessor erstellen.
  • Solche maschinenlesbaren Medien können, ohne Einschränkung, nicht flüchtige, materielle Anordnungen von Artikeln enthalten, die von einer Maschine oder Vorrichtung hergestellt oder gebildet werden, einschließlich Speichermedien wie Festplatten oder jeder anderen Art von Platten, einschließlich Disketten, optischer Platten, Kompaktplatten-Nur-Lese-Speicher (CD-ROMs), wiederbeschreibbarer Kompaktplatten (CD-RWs) und magneto-optischer Platten, Halbleitervorrichtungen, wie Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), wie dynamischer Direktzugriffsspeicher (DRAMs), statischer Direktzugriffsspeicher (SRAMs), löschbarer, programmierbarer Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROMs), Phasenänderungsspeicher (PCM), magnetischer oder optischer Karten oder einer anderen Art von Medien, die zum Speichern elektronischer Befehle geeignet sind.
  • Daher enthalten Ausführungsformen auch nicht flüchtige, materielle, maschinenlesbare Medien, die Befehle enthalten oder Designdaten enthalten, wie HDL (Hardware Description Language), die hierin beschriebene Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Während gewisse beispielhafte Ausführungsformen beschrieben und in den beiliegenden Zeichnungen gezeigt wurden, ist klar, dass solche Ausführungsformen nur beispielhaft und nicht einschränkend sind und nicht auf die spezifischen Konstruktionen und Anordnungen beschränkt sind, die dargestellt und beschrieben sind, da verschiedene andere Modifizierungen für einen Durchschnittsfachmann auf dem Gebiet beim Studium der Offenbarung offensichtlich sein können. In einem Technologiebereich wie diesem, wo ein Wachstum schnell ist und Weiterentwicklungen nicht leicht vorherzusehen sind, können die offenbarten Ausführungsformen leicht in Anordnung und Detail modifizierbar sein, was durch mögliche technologische Fortschritte erleichtert wird, ohne von den Prinzipien der vorliegenden Offenbarung oder dem Umfang der beiliegenden Ansprüche abzuweichen.

Claims (20)

  1. Vorrichtung, umfassend: mehrere Register zum Speichern von Verweisen auf Datenstrukturen in einem Speicher; und einen Ausführungsschaltkreis, der an die Register gekoppelt ist, wobei der Ausführungsschaltkreis zu Folgendem dient: Empfangen eines Systemaufrufbefehls von einer anfragenden Stelle, um eine Steuerung von einer ersten Privilegstufe der anfragenden Stelle auf eine zweite Privilegstufe eines Betriebssystem-Kernel zu übertragen; und als Reaktion auf den Systemaufrufbefehl zum Wechseln der Datenstrukturen, auf die die Register verweisen, zwischen der anfragenden Stelle und dem Betriebssystem-Kernel in einem ungeteilten Übergang.
  2. Vorrichtung nach Anspruch 1, wobei der Ausführungsschaltkreis zum Empfangen eines Systemrückstellungsbefehls vom Betriebssystem-Kernel und zum Wiederherstellen einer Steuerung vom Betriebssystem-Kernel zur anfragenden Stelle in einem ungeteilten Übergang als Reaktion auf den Systemrückstellungsbefehl dient.
  3. Vorrichtung nach Anspruch 1 oder 2, wobei die erste Privilegstufe dieselbe ist wie die zweite Privilegstufe.
  4. Vorrichtung nach Anspruch 1 oder 2, wobei die erste Privilegstufe in einem Nicht-Aufsichtsmodus ist und die zweite Privilegstufe in einem Aufsichtsmodus ist.
  5. Vorrichtung nach einem der Ansprüche 1 bis 4, wobei der Ausführungsschaltkreis als Reaktion auf den Befehl ein oder mehrere Segmentregister ungeteilt mit korrekten Werten lädt.
  6. Vorrichtung nach einem der Ansprüche 1 bis 5, wobei der Ausführungsschaltkreis als Reaktion auf den Befehl Validitätsprüfungen ungeteilt an einem oder mehreren Segmentregistern ausführt.
  7. Vorrichtung nach einem der Ansprüche 1 bis 6, wobei der Ausführungsschaltkreis als Reaktion auf den Befehl kanonische Prüfungen auf Adressenkonformität ungeteilt an einem oder mehreren Zielzeigern ausführt, die in eines oder mehrere der Register geladen werden.
  8. Verfahren, umfassend: Empfangen eines Systemaufrufbefehls von einer anfragenden Stelle, um eine Steuerung von einer ersten Privilegstufe der anfragenden Stelle auf eine zweite Privilegstufe eines Betriebssystem-Kernel zu übertragen; und als Reaktion auf den Systemaufrufbefehl Wechseln von Datenstrukturen, die im Speicher gespeichert sind und auf die die Register verweisen, zwischen der anfragenden Stelle und dem Betriebssystem-Kernel in einem ungeteilten Übergang.
  9. Verfahren nach Anspruch 8, des Weiteren umfassend: Empfangen eines Systemrückstellungsbefehls vom Betriebssystem-Kernel; und Wiederherstellen einer Steuerung vom Betriebssystem-Kernel zur anfragenden Stelle in einem ungeteilten Übergang als Reaktion auf den Systemrückstellungsbefehl.
  10. Verfahren nach Anspruch 8 oder 9, wobei die erste Privilegstufe dieselbe ist wie die zweite Privilegstufe.
  11. Verfahren nach Anspruch 8 oder 9, wobei die erste Privilegstufe in einem Nicht-Aufsichtsmodus ist und die zweite Privilegstufe in einem Aufsichtsmodus ist.
  12. Verfahren nach einem der Ansprüche 8 bis 11, des Weiteren umfassend: Laden eines oder mehrerer Segmentregister ungeteilt mit korrekten Werten.
  13. Verfahren nach einem der Ansprüche 8 bis 12, des Weiteren umfassend: ungeteiltes Durchführen von Validitätsprüfungen an einem oder mehreren Segmentregister(n).
  14. Verfahren nach einem der Ansprüche 8 bis 13, des Weiteren umfassend: ungeteiltes Durchführen kanonischer Prüfungen auf Adressenkonformität an einem oder mehreren Zielzeiger(n), die in ein oder mehrere der Register geladen werden.
  15. System, umfassend: einen Speicher; und einen Prozessor, der an den Speicher gekoppelt ist, wobei der Prozessor umfasst: mehrere Register zum Speichern von Verweisen auf Datenstrukturen im Speicher; und einen Ausführungsschaltkreis, der an die Register gekoppelt ist, wobei der Ausführungsschaltkreis zum: Empfangen eines Systemaufrufs von einer anfragenden Stelle, um eine Steuerung von einer ersten Privilegstufe der anfragenden Stelle auf eine zweite Privilegstufe eines Betriebssystem-Kernel zu übertragen; und als Reaktion auf den Systemaufrufbefehl zum Wechseln der Datenstrukturen, auf die die Register verweisen, zwischen der anfragenden Stelle und dem Betriebssystem-Kernel in einem ungeteilten Übergang dient.
  16. System nach Anspruch 15, wobei der Ausführungsschaltkreis zum Empfangen eines Systemrückstellungsbefehls vom Betriebssystem-Kernel und zum Wiederherstellen einer Steuerung vom Betriebssystem-Kernel zur anfragenden Stelle in einem ungeteilten Übergang als Reaktion auf den Systemrückstellungsbefehl dient.
  17. System nach Anspruch 15 oder 16, wobei die erste Privilegstufe dieselbe ist wie die zweite Privilegstufe.
  18. System nach Anspruch 15 oder 16, wobei die erste Privilegstufe in einem Nicht-Aufsichtsmodus ist und die zweite Privilegstufe in einem Aufsichtsmodus ist.
  19. System nach einem der Ansprüche 15 bis 18, wobei der Ausführungsschaltkreis als Reaktion auf den Befehl ein oder mehrere Segmentregister ungeteilt mit korrekten Werten lädt und ungeteilt Validitätsprüfungen an einem oder mehreren Segmentregister(n) ausführt.
  20. System nach einem der Ansprüche 15 bis 18, wobei der Ausführungsschaltkreis als Reaktion auf den Befehl ungeteilt kanonische Prüfungen auf Adressenkonformität an einem oder mehreren Zielzeiger(n) ausführt, die in eines oder mehrere der Register geladen werden.
DE102014003854.8A 2013-03-15 2014-03-17 Robuste und Hochleistungsbefehle für Systemaufruf Pending DE102014003854A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/837,878 2013-03-15
US13/837,878 US9207940B2 (en) 2013-03-15 2013-03-15 Robust and high performance instructions for system call

Publications (1)

Publication Number Publication Date
DE102014003854A1 true DE102014003854A1 (de) 2014-09-18

Family

ID=50554831

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014003854.8A Pending DE102014003854A1 (de) 2013-03-15 2014-03-17 Robuste und Hochleistungsbefehle für Systemaufruf

Country Status (7)

Country Link
US (2) US9207940B2 (de)
JP (1) JP5985526B2 (de)
KR (2) KR20140113557A (de)
CN (1) CN104050415B (de)
DE (1) DE102014003854A1 (de)
GB (1) GB2514881B (de)
IN (1) IN2014CH00978A (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6370098B2 (ja) * 2014-05-16 2018-08-08 杉中 順子 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
US10528345B2 (en) * 2015-03-27 2020-01-07 Intel Corporation Instructions and logic to provide atomic range modification operations
US10761877B2 (en) * 2017-07-21 2020-09-01 Intel Corporation Apparatuses, methods, and systems for blockchain transaction acceleration
CN108958798B (zh) * 2018-06-15 2021-04-20 上海兆芯集成电路有限公司 指令翻译电路、处理器电路及其执行方法
US11366663B2 (en) * 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
US20200409711A1 (en) * 2019-06-29 2020-12-31 Intel Corporation Processor instruction support for mitigating controlled-channel and cache-based side-channel attacks
CN111679857B (zh) * 2020-06-15 2024-01-23 上海兆芯集成电路股份有限公司 高效能复杂指令译码的微处理器
US20240028336A1 (en) * 2022-07-21 2024-01-25 Vmware, Inc. Techniques for reducing cpu privilege boundary crossings

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62286155A (ja) * 1986-06-05 1987-12-12 Sharp Corp マルチcpu制御方式
JPH03163630A (ja) * 1989-11-21 1991-07-15 Mitsubishi Electric Corp プロセッサのスタック制御方法
US6901505B2 (en) * 2001-08-09 2005-05-31 Advanced Micro Devices, Inc. Instruction causing swap of base address from segment register with address from another register
US20030226014A1 (en) * 2002-05-31 2003-12-04 Schmidt Rodney W. Trusted client utilizing security kernel under secure execution mode
US8607235B2 (en) * 2004-12-30 2013-12-10 Intel Corporation Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
CN100470571C (zh) * 2006-08-23 2009-03-18 北京同方微电子有限公司 一种用于密码学运算的微处理器内核装置
CN200941211Y (zh) * 2006-08-23 2007-08-29 北京同方微电子有限公司 用于密码学运算的微处理器内核
JP2008102847A (ja) * 2006-10-20 2008-05-01 Nec Corp マルチスレッドプログラム処理方法及び装置
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8312468B2 (en) * 2009-06-09 2012-11-13 Open Kernel Labs Methods and apparatus for fast context switching in a virtualized system
US9135215B1 (en) * 2009-09-21 2015-09-15 Tilera Corporation Route prediction in packet switched networks

Also Published As

Publication number Publication date
CN104050415A (zh) 2014-09-17
IN2014CH00978A (de) 2015-05-08
KR20160072085A (ko) 2016-06-22
US20160092227A1 (en) 2016-03-31
KR20140113557A (ko) 2014-09-24
JP2014182799A (ja) 2014-09-29
KR101780303B1 (ko) 2017-09-21
US9207940B2 (en) 2015-12-08
US20140281437A1 (en) 2014-09-18
GB201404223D0 (en) 2014-04-23
GB2514881B (en) 2015-09-30
GB2514881A (en) 2014-12-10
JP5985526B2 (ja) 2016-09-06
CN104050415B (zh) 2017-10-13

Similar Documents

Publication Publication Date Title
DE102014003854A1 (de) Robuste und Hochleistungsbefehle für Systemaufruf
DE112017000677T5 (de) Prozessorerweiterungen zum Schutz von Stapeln während Ringübergängen
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
US20210357213A1 (en) Hardware apparatuses and methods to switch shadow stack pointers
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102014003661A1 (de) Prozessoren, Verfahren, Systeme und Befehle zur Konsolidierung unmaskierter Elemente von Operationsmasken
DE102014003690A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE102018004726A1 (de) Dynamisches Ausschalten und Einschalten von Prozessorkernen
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE112013003735B4 (de) Systeme, Vorrichtungen und Verfahren zum Ausführen von Rotation und XOR als Reaktion auf eine einzige Anweisung
DE102014003659A1 (de) Systeme, vorrichtungen und verfahren zum bestimmen eines folgenden niedrigstwertigen maskierungsbits eines schreibmaskenregisters
DE102020126293A1 (de) Vorrichtungen, verfahren und systeme für anweisungen für kryptografisch an daten gebundene nutzungsbeschränkungen
DE112017003350T5 (de) Speicherauslesebefehle, prozessoren, verfahren und systeme, die bei defekten daten keine ausnahme annehmen
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE102020129549A1 (de) Leistungsüberwachung in heterogenen systemen
DE202019005683U1 (de) Prozessorkern mit Unterstützung einer Befehlssatzarchitektur für heterogene Systeme
DE102022107196A1 (de) Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten
DE102018128626A1 (de) Systeme, Verfahren und Vorrichtungen für Matrixoperationen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R016 Response to examination communication