DE202017007430U1 - Erkennen von Bussperrbedingungen und Vermeiden von Bussperren - Google Patents

Erkennen von Bussperrbedingungen und Vermeiden von Bussperren Download PDF

Info

Publication number
DE202017007430U1
DE202017007430U1 DE202017007430.3U DE202017007430U DE202017007430U1 DE 202017007430 U1 DE202017007430 U1 DE 202017007430U1 DE 202017007430 U DE202017007430 U DE 202017007430U DE 202017007430 U1 DE202017007430 U1 DE 202017007430U1
Authority
DE
Germany
Prior art keywords
processor
bus
virtual machine
memory
bus lock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202017007430.3U
Other languages
English (en)
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 DE202017007430U1 publication Critical patent/DE202017007430U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/221Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test buses, lines or interfaces, e.g. stuck-at or open line faults
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3027Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]

Abstract

Prozessor, der Folgendes umfasst:
ein Register zum Speichern eines Bussperren-Deaktivierungs-Bits; und
eine Ausführungseinheit zum Ausführen von Anweisungen, wobei die Ausführungseinheit:
eine Anweisung empfangen soll, die eine Speicherzugriffsanforderung beinhaltet;
bestimmen soll, dass die Speicherzugriffsanforderung das Erlangen einer Bussperre erfordert; und als Reaktion auf das Erkennen, dass das Bussperren-Deaktivierungs-Bit anzeigt, dass Bussperren deaktiviert sind, einen Fehler an ein Betriebssystem signalisieren soll.

Description

  • Die vorliegende Offenbarung betrifft das Gebiet der Speicherverwaltung, und insbesondere die Verwendung der Erkennung und Vermeidung von Bussperrbedingungen.
  • Hintergrund
  • Ein Prozessor kann einen Systembus oder eine äquivalente Verbindung während bestimmter Speicheroperationen sperren. Wenn eine Bussperre geltend gemacht wird, werden Speicherzugriffsanforderungen von anderen Agenten blockiert.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Datenverarbeitungsgeräts, das eine Umgebung veranschaulicht, in der eine Bussperre gemäß einer Ausführungsform der vorliegenden Offenbarung auftritt.
    • 2 ist ein Blockdiagramm von System-Hardware des Datenverarbeitungsgeräts von 1, die einen Virtual-Machine-Monitor und eine oder mehrere virtuelle Maschinen gemäß einer Ausführungsform der vorliegenden Offenbarung ausführen kann.
    • 3 ist ein Blockdiagramm einer Virtual-Machine-Control-Structure (VMCS), in der ein Bit zum Verlassen der Bussperre gemäß einer Ausführungsform der vorliegenden Offenbarung gespeichert ist.
    • 4 ist ein Flussdiagramm eines Verfahrens zum Erkennen und Vermeiden von Bussperrbedingungen.
    • 5A ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbenennungsstufe, Out-of-Order-Ausgabe-/Ausführungs-Pipeline gemäß einer Ausführungsform veranschaulicht.
    • 5B ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor veranschaulicht, die Bussperrbedingungen erkennt und vermeidet.
    • 6 veranschaulicht ein Blockdiagramm der Mikroarchitektur für einen Prozessor, die Logikschaltungen beinhaltet, um Bussperrbedingungen zu erkennen und zu vermeiden.
    • 7 ist ein Blockdiagramm eines Computersystems gemäß einer Implementierung.
    • 8 ist ein Blockdiagramm eines Computersystems gemäß einer anderen Implementierung.
    • 9 ist ein Blockdiagramm eines System-on-a-Chip gemäß einer Implementierung.
    • 10 veranschaulicht eine andere Implementierung eines Blockdiagramms für ein Datenverarbeitungssystem.
    • 11 veranschaulicht eine andere Implementierung eines Blockdiagramms für ein Datenverarbeitungssystem.
  • Beschreibung von Ausführungsformen
  • Ein Prozessor kann einen Systembus oder eine äquivalente Verbindung während bestimmter Speicheroperationen, wie zum Beispiel einer gesperrten Operation zu einem nicht zwischenspeicherbaren Speicher, gesperrter Operationen, die mehrere Cache-Zeilen umspannen, und Seitenläufen von Seitentabellen in einem nicht zwischenspeicherbaren Speicher sperren, wenn er eine logische Adresse einer virtuellen Maschine übersetzt. Wenn eine solche Bussperre geltend gemacht wird, werden Speicherzugriffsanforderungen von anderen Agenten blockiert. Bussperren haben jedoch eine hohe Leistungseinbuße, und eine übermäßige Verwendung von Bussperren kann die Systemleistung erheblich herabsetzen.
  • In einem veranschaulichenden Beispiel kann eine Bussperre mit nicht zwischenspeicherbarem Speicher benötigt werden, da Aktualisierungen an Adressen des nicht zwischenspeicherbaren Speichers in dem Hauptspeicher gemacht werden, und daher die Bussperre benötigt wird, um die Kohärenz der Daten, die zurück in den Hauptspeicher geschrieben werden, zu gewährleisten. Dieses Szenario kann für einige Geräte (wie zum Beispiel etablierte Geräte oder andere Agenten, die mit dem Bus kommunizieren) relevant sein, die kein Zwischenspeichern von Daten ermöglichen, oder nicht dazu in der Lage sind, Prozessor-Caches abzuhören, und so kann es eine ältere Kopie von Daten auf dem Prozessor für das Gerät geben.
  • In einem anderen veranschaulichenden Beispiel kann ein Prozessor, wenn er auf zwei Cache-Zeilen in einem Cache als Reaktion auf eine Speicheranforderung zugreift, den Systembus sperren müssen, um die Speicherkohärenz zu gewährleisten, da ein anderer Agent eine der zwei Cache-Zeilen ändern könnte, während der Prozessor auf die andere der zwei Cache-Zeilen zugreift oder diese aktualisiert.
  • In einem anderen veranschaulichenden Beispiel kann, bei dem Ausführen von Übersetzungen von virtueller zu physikalischer Adresse für eine virtuelle Maschine (VM), eine Memory-Management-Unit (MMU) der VM als Reaktion auf das Verfehlen eines Translation-Lookaside-Buffer (TLB) für die Adresse, die übersetzt wird, von einem Hardware-Seitentabellenläufer anfordern, eine in dem Speicher gespeicherte Seitentabelle zu durchsuchen (zum Beispiel „laufen“), um die physikalische Adresse zu bestimmen, und die physikalische Adresse automatisch in den TLB zu laden. Die Verwendung des Hardware-Seitentabellenläufers kann Mehraufwand reduzieren, und die Behandlung des Verfehlens eines TLB und die Fehlerverarbeitung beschleunigen. Bisweilen kann der Prozessor auch die Seitentabellen nach der MMU-Anforderung aktualisieren. Um dies zu tun, kann der Prozessor eine Bussperre geltend machen müssen, um die Seitentabellenaktualisierung auszuführen, um zu gewährleisten, dass kein anderer Agent zur selben Zeit die Seitentabelle aktualisiert.
  • Die vorliegende Offenbarung stellt Systeme zur Erkennung dieser Typen von Speicheroperationen (unter anderen) und zum Ausführen von Schritten zum Verhindern, dass eine Bussperre erlangt wird, bereit, wodurch die Systemleistung erhöht wird. Die Vermeidung des Bussperrens kann besonders nützlich sein in Datenverarbeitungszentren, die in der Cloud arbeiten, die nicht vertrauenswürdige Workloads auf Cloud-Plattformen ausführen müssen. In einer Umgebung mit mehreren Mandanten können solche nicht vertrauenswürdigen Workloads eine erhebliche Herabsetzung der anderen Workloads auf der Plattform verursachen, wenn die nicht vertrauenswürdigen Workloads Bussperrbedingungen verursachen, und somit die Cloud-Infrastruktur als Ganzes beschädigen.
  • Ohne die offenbarte Erkennung von Bussperrbedingungen und die Vermeidung von Bussperren können Plattformen, auf denen Echtzeit-Workloads ausgeführt werden müssen, mit erheblichen Problemen wie verpassten Fristen konfrontiert sein, und somit einen Ausfall aufgrund von unangemessenen Anwendungen, die Bussperren geltend machen, verursachen. Zertifizierungen solcher Plattformen für eine geschäftskritische Verwendung erfordern Garantien, dass solche Bedingungen nicht erzeugt werden können, oder erkannt und abgemildert werden können.
  • Gemäß einer Ausführungsform, um Bedingungen wie diese, die eine Bussperre verursachen, zu erkennen und zu vermeiden, schlägt die vorliegende Offenbarung vor, eine Bit-Markierung (hierin bezeichnet als Bussperren-Deaktivierungs-Bit) zu verwenden, die in einem Prozessorregister (zum Beispiel einem Model-Specific-Register (MSR)) gespeichert sein kann, um anzuzeigen, dass die Erlangung von Bussperren deaktiviert ist. Eine Ausführungseinheit des Prozessors kann eine Speicherzugriffsanforderung empfangen, um eine Anweisung auszuführen. Die Ausführungseinheit kann ferner bestimmen, dass die Speicherzugriffsanforderung das Erlangen einer Bussperre erfordert, indem sie eine Speicherzugriffsanforderung oder eine andere oben diskutierte Speicheroperation erkennt. Als Reaktion auf das Erkennen, dass das Bussperren-Deaktivierungs-Bit anzeigt, dass Bussperren deaktiviert sind, kann die Ausführungseinheit einen Fehler an ein Betriebssystem signalisieren. Der Fehler kann unter anderen Fehlern zum Beispiel ein allgemeiner Schutzfehler, ein Systemfehler, oder ein VM-bezogener Fehler, ein neuer Fehlertyp, um das Deaktivieren von Bussperren zu signalisieren, sein.
  • Ein Fehlerhandhaber des Betriebssystems (oder eines Virtual-Machine-Managers (VMM) in dem Fall einer Anweisung, die durch eine virtuelle Maschine ausgeführt wird) kann dann den Fehler gemäß dem Typ des erzeugten Fehlers handhaben, einschließlich der Beendigung der Aufgabe, die die Anweisung ausgegeben hat. Als eine weitere Ausführungsform kann der Fehlerhandhaber als Reaktion auf den Fehler die Anweisung emulieren, ohne eine Bussperre auszuführen. Ein Fehlerhandhaber, der den Fehler handhabt, kann die Speicherzugriffe von anderen Agenten auf den Bus während der Anweisungsemulation deaktivieren müssen. Diese Erkennung einer Bussperrbedingung und das Vermeiden des Erlangens einer Bussperre als Reaktion auf die Erkennung kann es Plattformen, die Latenzgarantien benötigen, wie jenen, die Echtzeitbetriebssysteme ausführen, ermöglichen, die Verwendung von durch Software verwendeten Bussperren zu untersagen, und die Untersagung von Bussperren mit registerbasierter Steuerung zu erzwingen.
  • Als eine weitere Ausführungsform kann ein Virtual-Machine-Manager (VMM) (zum Beispiel eines Cloud-Dienste-Servers) sich auf eine Hardware-fähige Virtualisierung (wie zum Beispiel Virtual-Machine-Extensions (VMX) - Ausführungssteuerungen) verlassen, um über Anforderungen benachrichtigt zu werden, Bussperren zu erlangen, und die Anforderung ohne Verwendung von Bussperren emulieren, und somit Interferenzen mit anderen Workloads vermeiden.
  • Zusätzlich oder alternativ kann ein Prozessorkern VMX-Ausführungssteuerungsanweisungen ausführen, um eine Bedingung in Bezug auf die Ausführung der virtuellen Maschine (VM) zu erkennen, die das Erlangen einer Bussperre erfordert. Der VMM kann ein Bit zum Verlassen der Bussperre, das in einer der VM zugeordneten Virtual-Machine-Control-Structure (VMCS) gespeichert ist, aktivieren. Darüber hinaus kann der Kern, als Reaktion auf das Erkennen, dass das Bit zum Verlassen der Bussperre innerhalb der VMCS der virtuellen Maschine aktiviert ist, ein VM-Verlassen der virtuellen Maschine zu dem VMM ausführen, anstatt die Bussperre zu erlangen. Dies kann es der virtuellen Maschine ermöglichen, zu vermeiden, damit fortzufahren, einen mit anderen virtuellen Maschinen geteilten Bus zu sperren. Alternativ kann der Kern einen Fehler an einen Betriebssystem-Fehlerhandhaber der virtuellen Maschine übertragen, um das Betriebssystem der VM dazu zu veranlassen, sich mit dem Fehler zu befassen, um das Erlangen einer Bussperre zu vermeiden.
  • 1 ist ein Blockdiagramm von Datenverarbeitungsgerät 100, das eine Umgebung veranschaulicht, in der eine Bussperre gemäß einer Ausführungsform der vorliegenden Offenbarung auftritt. In verschiedenen Ausführungsformen kann ein „Datenverarbeitungsgerät“ als nicht beschränkendes Beispiel ein Computer, eine Workstation, ein Server, ein Mainframe, eine virtuelle Maschine (ob emuliert oder auf einem „Bare-Metal“-Hypervisor), ein eingebetteter Computer, ein eingebetteter Controller, ein eingebetteter Sensor, ein Personal-Digital-Assistant, ein Laptop, ein Mobiltelefon, ein IP-Telefon, ein Smartphone, ein Tablet-Computer, ein konvertierbarer Tablet-Computer, ein Datenverarbeitungsapparat, ein Netzwerkapparat, ein Empfänger, ein tragbarer Computer, ein Taschenrechner, oder jegliches andere elektronische, mikroelektronische oder mikroelektromechanische Gerät zum Verarbeiten und Kommunizieren von Daten sein oder diese beinhalten.
  • Das Datenverarbeitungsgerät 100 beinhaltet Prozessor 110, der einen oder mehrere Kerne 111, Ausführungseinheit 112 und Cache 113 beinhaltet. Der Prozessor 100 ist mit Systemagent 114 zum Zugreifen auf Speicher 120 und mit anderen Komponenten des Datenverarbeitungsgeräts 100 verbunden. Der Prozessor 110 kann auch mit Systembus 170-1 gekoppelt sein, der wiederum auch Speicherbus 170-2 beinhalten kann. Das Datenverarbeitungsgerät 100 kann durch eine Systemsoftware, wie zum Beispiel Betriebssystem 122 verwaltet werden. Das Betriebssystem 122 kann jegliches geeignete Betriebssystem sein.
  • Der Speicher 120 kann Systemsoftware, wie zum Beispiel das Betriebssystem 122, mindestens Softwareabschnitte von Trusted-Execution-Framework (TEF) 124 und einen oder mehrere Bereiche von Execute-Only-Memory 130 beinhalten. Der Systemagent 114, der die Kommunikationen zwischen dem Prozessor 110 und anderen Komponenten des Datenverarbeitungsgeräts 100 verwaltet, kann Sicherheitsagenten 116 beinhalten, um den Execute-Only-Memory 130 sicher zu konfigurieren und zu verwalten.
  • Andere Komponenten des Datenverarbeitungsgeräts 100 können Speicherung 150, Netzwerkschnittstelle 160 und Peripherieschnittstelle 140 beinhalten. Diese Architektur wird nur als Beispiel bereitgestellt, und soll nicht ausschließend und nicht einschränkend sein. Darüber hinaus sollen die verschiedenen offenbarten Teile nur logische Unterteilungen sein, und müssen nicht notwendigerweise physikalisch getrennte Hardware- und/oder Softwarekomponenten darstellen. Bestimmte Datenverarbeitungsgeräte stellen den Speicher 120 und die Speicherung 150 bereit, zum Beispiel in einem einzelnen physikalischen Speichergerät, und in anderen Fällen sind der Speicher 120 und/oder die Speicherung 150 funktional über viele physikalische Geräte hinweg verteilt. In dem Fall von virtuellen Maschinen oder Hypervisoren kann eine logische Funktion ganz oder teilweise in der Form von Software oder Firmware bereitgestellt werden, die über eine Virtualisierungsschicht läuft, um die offenbarte logische Funktion bereitzustellen. In anderen Beispielen kann ein Gerät, wie zum Beispiel eine Netzwerkschnittstelle 160, nur die minimalen Hardwareschnittstellen bereitstellen, die erforderlich sind, um ihre logische Operation auszuführen, und kann sich auf einen Softwaretreiber verlassen, um zusätzliche erforderliche Logik bereitzustellen. Somit soll jeder hierin offenbarte logische Block weitgehend ein oder mehrere logische Elemente beinhalten, die zum Bereitstellen der offenbarten logischen Operation dieses Blocks konfiguriert und betreibbar sind. Wie über diese Spezifikation hinweg verwendet, können „logische Elemente“ Hardware, externe Hardware (digital, analog oder Mischsignal), Software, hin- und hergehende Software, Dienste, Treiber, Schnittstellen, Komponenten, Module, ausgeführte Algorithmen, Sensoren, Komponenten, Firmware, Mikrocode, programmierbare Logik, oder Objekte, die koordiniert werden können, um eine logische Operation zu erreichen, beinhalten.
  • In einer Ausführungsform kann der Prozessor 110 über den Systemagenten 114 und/oder den Speicherbus 170-2, der zum Beispiel ein Direct-Memory-Access (DMA) -Bus sein kann, kommunizierend mit dem Speicher 120 gekoppelt sein, obwohl andere Speicherarchitekturen vorgesehen sind, einschließlich solcher, bei denen der Speicher 120 mit dem Prozessor 110 über den Systembus 170-1 oder einen anderen Bus kommuniziert. Der Prozessor 110 kann über den Systemagenten 114 und/oder den Systembus 170-1 kommunizierend mit anderen Geräten, wie zum Beispiel der Speicherung 150, der Peripherieschnittstelle 140 und der Netzwerkschnittstelle 160, gekoppelt sein.
  • In verschiedenen Ausführungsformen können der eine oder die mehreren Kerne 111 Anweisungen ausführen, um das Betriebssystem 122, einen VMM, eine oder mehrere virtuelle Maschinen auszuführen, und um eine Speicherverwaltung im Namen der Netzwerkschnittstelle 160, der Peripherieschnittstelle 140 oder eines I/O-Geräts oder eines Gerätetreibers des Datenverarbeitungssystems 100 auszuführen. Bei der Ausführung solcher Anweisungen können der(die) Kern(e) 111 Speicheranforderungen erzeugen, die an den Speicher 120 und/oder die Speicherung 150 gesendet werden. In einer Ausführungsform können einige der Speicheranforderungen anfordern, dass der Prozessor 110, der Systemagent 114 oder ein anderer Systemagent oder Gerätetreiber den Systembus 170-1 und/oder den Speicherbus 170-2 sperrt, als Reaktion auf das Decodieren der Anweisung, oder wo Bedingungen (wie zum Beispiel die zuvor diskutierten) erkannt werden, die das Erlangen von Bussperren erfordern, bevor die Ausführungseinheit 112 die Anweisung ausführt.
  • Wie über diese Spezifikation hinweg verwendet, beinhaltet ein „Bus“ jegliche drahtgebundene oder drahtlose Verbindungsleitung, jegliches Netzwerk, jegliche Verbindung, jegliches Bundle, jeglichen einzelnen Bus, jegliche Mehrfach-Busse, jegliches Crossbar-Netzwerk, jegliches einstufige Netzwerk, jegliches mehrstufige Netzwerk, oder jegliches andere Leitungsmedium, das betreibbar ist, um Daten, Signale oder Leistung zwischen Teilen eines Datenverarbeitungseräts oder zwischen Datenverarbeitungsgeräten zu tragen. Es ist anzumerken, dass diese Verwendungen nur als nicht beschränkendes Beispiel offenbart werden, und dass einige Ausführungsformen einen oder mehrere der vorstehenden Busse weglassen können, während andere zusätzliche oder unterschiedliche Busse einsetzen können.
  • In verschiedenen Beispielen kann ein „Prozessor“ jegliche Kombination von logischen Elementen beinhalten, die betreibbar sind, Anweisungen auszuführen, ob aus dem Speicher geladen oder direkt in Hardware implementiert, einschließlich als nicht beschränkendes Beispiel eines Mikroprozessors, eines Digital-Signal-Processor, eines Field-Programmable-Gate-Array, einer Grafikverarbeitungseinheit, eines programmierbaren Logik-Array, eines Application-Specific-Integrated-Circuit oder eines Virtual-Machine-Processor. In bestimmten Architekturen kann ein Multicore-Prozessor bereitgestellt werden, wobei in diesem Fall der Prozessor 110 wo angemessen als nur ein Kern eines Multicore-Prozessors behandelt werden kann, oder als der gesamte Multicore-Prozessor behandelt werden kann. In einigen Ausführungsformen können auch ein oder mehrere Co-Prozessoren für spezialisierte oder unterstützende Funktionen bereitgestellt werden.
  • Der Einfachheit halber ist der Speicher 120 als ein einzelner logischer Block veranschaulicht, aber eine physikalische Ausführungsform kann einen oder mehrere Blöcke jeglicher geeigneter flüchtiger oder nichtflüchtiger Speichertechnologie oder -technologien beinhalten, einschließlich zum Beispiel DDR-RAM, SRAM, DRAM, Cache, L1- oder L2-Speicher, On-Chip-Speicher, Register, Flash, ROM, One-Time-Programmable (OTP) - Speicher, optische Medien, virtuelle Speicherbereiche, Magnet- oder Bandspeicher oder ähnlichem. In bestimmten Ausführungsformen kann der Speicher 120 einen flüchtigen oder nichtflüchtigen Hauptspeicher mit relativ geringer Latenz umfassen, während die Speicherung 150 einen nichtflüchtigen Speicher mit relativ höherer Latenz umfassen kann. Der Speicher 120 und die Speicherung 150 müssen jedoch keine physikalisch getrennten Geräte sein, und können in einigen Beispielen einfach eine logische Funktionstrennung darstellen. Es ist auch anzumerken, dass, obwohl DMA als nicht einschränkendes Beispiel offenbart ist, DMA nicht das einzige mit dieser Spezifikation übereinstimmende Protokoll ist, und dass andere Speicherarchitekturen verfügbar sind.
  • Der Prozessor 110 kann auch den Cache 113 beinhalten oder mit diesem gekoppelt sein. Der Prozessor 110 kann den Cache 113 dazu verwenden, einen Zugriff mit geringer Latenz auf aus dem Speicher 120 abgerufene Informationen bereitzustellen. Zum Beispiel kann der Cache 113 einen schnelleren Speicherzugriff bereitstellen, als durch den Speicher 120 bereitgestellt. Dementsprechend kann der Prozessor 110 den Cache 113 dazu verwenden, aus dem Speicher 120 abgerufene Informationen zu speichern, um einen schnelleren Zugriff auf diese Informationen zu ermöglichen. In einigen Ausführungsformen kann der Cache 113 als eine Hierarchie von Caches, wie zum Beispiel ein Level-1-Cache (L1), Level-2-Cache (L2), Level-3-Cache (L3), Mid-Level-Cache (MLC), Last-Level-Cache (LLC) und/oder Kombinationen davon, implementiert sein.
  • Die Speicherung 150 kann jegliche Art des Speichers 120 sein, oder kann ein separates Gerät sein. Die Speicherung 150 kann ein oder mehrere nichtflüchtige computerlesbare Medien beinhalten, einschließlich als nicht beschränkendes Beispiel einer Festplatte, eines Solid-State-Laufwerks, einer externen Speicherung, eines Redundant-Array-of-Independent-Disks (RAID), einer an das Netzwerk angeschlossenen Speicherung , einer optischen Speicherung, eines Bandlaufwerks, eines Backup-Systems, einer Cloud-Speicherung, oder jeglicher Kombination des Vorstehenden. Die Speicherung 150 kann eine Datenbank oder Datenbanken oder in anderen Konfigurationen gespeicherte Daten sein oder darin beinhalten, und kann eine gespeicherte Kopie der Systemsoftware, wie zum Beispiel des Betriebssystems 122, und Softwareabschnitte des Trusted-Execution-Framework (TEF) 124 beinhalten. Viele andere Konfigurationen sind ebenfalls möglich, und sollen innerhalb des breiten Umfangs dieser Spezifikation umfasst werden.
  • Die Netzwerkschnittstelle 160 kann bereitgestellt werden, um das Datenverarbeitungsgerät 100 kommunizierend mit einem drahtgebundenen oder drahtlosen Netzwerk zu koppeln. Ein „Netzwerk“, wie über diese Spezifikation hinweg verwendet, kann jegliche Kommunikationsplattform beinhalten, die zum Austausch von Daten oder Informationen innerhalb oder zwischen Datenverarbeitungsgeräten betreibbar ist, einschließlich als nicht beschränkendes Beispiel eines lokalen Ad-Hoc-Netzwerks, einer Internetarchitektur, die Datenverarbeitungsgeräte mit der Fähigkeit zur elektronischen Interaktion bereitstellt, eines Plain-Old-Telephone-Systems (POTS), das Datenverarbeitungsgeräte dazu verwenden könnten, Transaktionen auszuführen, bei denen sie durch menschliche Bediener unterstützt werden, oder bei denen sie Daten manuell in ein Telefon oder eine andere geeignete elektronische Ausrüstung eingeben können, jeglichen Packet-Data-Networks (PDN), das eine Kommunikationsschnittstelle oder einen Austausch zwischen jeglichen zwei Knoten in einem System bietet, oder jeglichen Local-Area-Networks (LAN), jeglichen Metropolitan-Area-Networks (MAN), jeglichen Wide-Area-Networks (WAN), jeglichen Wireless-Local-Area-Networks (WLAN), jeglichen Virtual-Private-Networks (VPN), jeglichen Intranets oder jeglicher anderen geeigneten Architektur oder jeglichen Systems, das Kommunikationen in einem Netzwerk oder einer Telefonumgebung erleichtert.
  • Die Peripherieschnittstelle 140 kann so konfiguriert sein, dass sie mit jeglichem Hilfsgerät verbunden ist, das mit dem Datenverarbeitungsgerät 100 verbunden ist, das jedoch nicht notwendigerweise ein Teil der Kernarchitektur des Datenverarbeitungsgeräts 100 ist. Ein Peripheriegerät kann betreibbar sein, um erweiterte Funktionalität an das Datenverarbeitungsgerät 100 bereitzustellen, und kann oder kann nicht vollständig von dem Datenverarbeitungsgerät 100 abhängig sein. In einigen Fällen kann ein Peripheriegerät ein eigenständiges Datenverarbeitungsgerät sein. Peripheriegeräte können als nicht beschränkendes Beispiel Eingabe- und Ausgabegeräte, wie zum Beispiel Displays, Terminals, Drucker, Tastaturen, Mäuse, Modems, Datenports (zum Beispiel seriell, parallel, USB®, Firewire® oder ähnliches), Netzwerk-Controller, optische Medien, externe Speicherung, Sensoren, Wandler, Aktuatoren, Controller, Datenerfassungsbusse, Kameras, Mikrofone, Lautsprecher oder externe Speicherung beinhalten.
  • In einem Beispiel beinhalten Peripheriegeräte Display-Adapter 142, Audiotreiber 144 und Eingabe/Ausgabe (I/O) -Treiber 146. Der Display-Adapter 142 kann so konfiguriert sein, dass er eine für Menschen lesbare visuelle Ausgabe bereitstellt, wie zum Beispiel ein Command-Line-Interface (CLI) oder einen grafischen Desktop, wie zum Beispiel Microsoft Windows®, Apple® OSX-Desktop, oder einen Unix™/Linux™ X-Windowsystembasierten Desktop. Der Display-Adapter 142 kann als nicht beschränkende Beispiele eine Ausgabe in jeglichem geeigneten Format bereitstellen, wie zum Beispiel einen Koaxialausgang, einen Kompositvideo-, einen Komponentenvideo-, einen Video-Graphic-Array (VGA) oder digitale Ausgaben, wie zum Beispiel ein Digital-Visual-Interface (DVI) oder ein High-Definition-Multimedia-Interface (HDMI). In einigen Beispielen kann der Display-Adapter 142 eine Hardware-Grafikkarte beinhalten, die ihren eigenen Speicher und ihre eigene Graphics-Processing-Unit (GPU) haben kann. Der Audiotreiber 144 kann eine Schnittstelle für hörbare Töne bereitstellen, und kann in einigen Beispielen eine Hardware-Soundkarte beinhalten. Die Tonausgabe kann als nicht beschränkende Beispiele in analog (zum Beispiel 3,5mm Stereobuchse), Komponenten („RCA“) -Stereo, oder in einem digitalen Audioformat, wie zum Beispiel S/PDIF, AES3, AES47, HDMI, USB®, Bluetooth® oder Wi-Fi® -Audio bereitgestellt werden.
  • Das Trusted-Execution-Framework (TEF) 124 ist in einem Beispiel betreibbar, um eine vertrauenswürdige Umgebung zum sicheren Laden und/oder Ausführen von Code und zugehörigen Daten bereitzustellen. Das TEF 124 kann jegliche geeignete Kombination von Hardware, Software und/oder codierter Logik zum Ausführen der hierin beschriebenen Funktionalität für das TEF 124 beinhalten. In einem Beispiel kann das TEF 124 ausführbare Anweisungen und/oder Logik beinhalten, die auf einem nichtflüchtigen computerlesbaren Medium gespeichert sind, das betreibbar ist, um einen Prozessor oder ein anderes elektronisches Gerät anzuweisen, eine vertrauenswürdige Ausführungsumgebung bereitzustellen. In einigen Fällen kann das TEF 124 zusätzlich oder alternativ eine spezielle integrierte Schaltung beinhalten, die dazu entworfen ist, Funktionalität des TEF 124 vollständig oder teilweise zu implementieren.
  • Das TEF 124 kann zum Beispiel dazu verwendet werden, die Authentizität einer Plattform oder eines Moduls, wie zum Beispiel von Firmware, BIOS und/oder des Betriebssystems 122 zu attestieren. Die Attestierungsfunktionalität des TEF 124 kann zu jeglicher geeigneten Zeit, wie zum Beispiel nach dem Booten des Datenverarbeitungsgeräts 100, oder nach einem Befehl von dem Betriebssystems 122 ausgeführt werden. In einigen Ausführungsformen kann das TEF 124 Mikrocode oder ein Authenticated-Code-Module (ACM) dazu verwenden, eine sichere Lade- und Attestierungsfunktionalität auszuführen.
  • In einigen Fällen kann das TEF 124 als ein „Daemon“-Prozess ausgeführt werden. Ein „Daemon“ kann jegliches Programm oder jegliche Serie von ausführbaren Anweisungen beinhalten, ob in Hardware, Software, Firmware oder jeglicher Kombination davon implementiert, die als ein Hintergrundprozess, ein Programm zum Beenden und Verweilen, ein Absender, eine Systemerweiterung, ein Bedienfeld, eine Boot-Prozedur, eine BIOS-Unterroutine, oder als jegliches ähnliche Programm, das ohne direkte Benutzerinteraktion arbeitet, ausgeführt wird. In bestimmten Ausführungsformen können Daemon-Prozesse mit erhöhten Privilegien in einem „Treiberraum“ ausgeführt werden, der Ring 0, 1 oder 2 in einer Schutzringarchitektur zugeordnet ist. Es ist auch anzumerken, dass das TEF 124 auch andere Hardware und Software beinhalten kann, einschließlich als nicht beschränkendes Beispiel Konfigurationsdateien, Registrierungseinträgen und interaktiver oder Benutzermodus-Software.
  • Der Systemagent 114 kann die Kommunikation zwischen dem Prozessor 110 und anderen Komponenten des Datenverarbeitungsgeräts 100 verwalten In verschiedenen Beispielen kann der Systemagent 114 jegliche Kombination von logischen Elementen beinhalten, die so konfiguriert sind, dass sie die Funktionalität des hierin beschriebenen Systemagenten 114 ausführen, ob aus dem Speicher oder einem anderen nichtflüchtigen computerlesbaren Medium geladen, oder direkt in Hardware implementiert, einschließlich als nicht beschränkende Beispiele eines Mikroprozessors, eines Digital-Signal-Processor, eines Field-Programmable-Gate-Array, einer Grafikverarbeitungseinheit, eines programmierbaren Logik-Array, eines Application-Specific-Integrated-Circuit, oder eines Virtual-Machine-Processor. Der Systemagent 114 kann in den Prozessor 110 integriert sein, oder alternativ kann der Systemagent 114 auf einem separaten Chip implementiert sein, der mit dem Prozessor 110 verbunden ist. In einigen Ausführungsformen kann der Systemagent 114 Hochleistungsdatenverarbeitungsaufgaben erleichtern. Zum Beispiel kann der Systemagent 114 eine Speichersteuerung beinhalten, um eine Schnittstelle zwischen dem Prozessor 110 und dem Speicher 120 bereitzustellen. Der Systemagent 114 kann auch eine Brücke zwischen dem Prozessor 110 und anderen Komponenten des Datenverarbeitungsgeräts 100 bereitstellen, zum Beispiel durch Verwenden eines Direct-Media-Interface (DMI) und/oder einer PCI-Express®-Brücke. Der Systemagent 114 kann auch den Sicherheitsagenten 116 beinhalten, um Sicherheitsfunktionalität, einschließlich der Verwaltung des Execute-Only-Memory 130, bereitzustellen.
  • In einigen Ausführungsformen kann der Sicherheitsagent 116 den Execute-Only-Memory 130 sicher konfigurieren und verwalten, um zum Beispiel zu vermeiden, dass Code und eingebettete vertrauliche Informationen aus dem Execute-Only-Memory 130 für jeglichen anderen Zweck als die Codeausführung gelesen werden. Der Sicherheitsagent 116 kann jegliche geeignete Kombination von Hardware, Software und/oder codierter Logik sein, die dazu in der Lage ist, die hierin beschriebene Funktionalität für den Sicherheitsagenten 116 auszuführen. In einigen Ausführungsformen kann die Funktionalität des Sicherheitsagenten 116 durch den Systemagenten 114, den Prozessor 110, eine separate Komponente, die mit dem Systemagenten 114 und/oder dem Prozessor 110 verbunden ist, und/oder eine Kombination davon implementiert werden.
  • In einigen Ausführungsformen kann der Sicherheitsagent 116 einen oder mehrere Bereiche des Speichers 120 als Execute-Only-Memory 130 ausweisen. Auf den Execute-Only-Memory 130 kann nur zugegriffen werden, um Code zur Ausführung abzurufen. Der Execute-Only-Memory 130 kann zum Beispiel dazu verwendet werden, geschützte Informationen, wie zum Beispiel Firmware, jegliche in die Firmware eingebettete Geheimnisse oder Schlüssel, und/oder jeglichen anderen vertraulichen Code, Logik oder zugehörige Informationen zu speichern. Das Speichern geschützter Informationen, wie zum Beispiel von Code und/oder eingebetteter vertraulicher Informationen, in dem Execute-Only-Memory 130 kann vermeiden, dass die geschützten Informationen für jeglichen anderen Zweck als die Codeausführung gelesen oder aus dem Speicher abgerufen werden. Auf diese Weise kann vertrauliches und/oder geschütztes geistiges Eigentum, das in dem Execute-Only-Memory 130 gespeichert ist, vor Zugriff und/oder Reverse-Engineering durch Benutzer des Datenverarbeitungsgeräts 100 geschützt werden.
  • 2 ist ein Blockdiagramm von System-Hardware 200 des Datenverarbeitungsgeräts 100 von 1, die Virtual-Machine-Monitor (VMM) 215 und eine oder mehrere virtuelle Maschinen 230 gemäß einer Ausführungsform der vorliegenden Offenbarung ausführen kann. Die Systemhardware 200 kann Prozessor 210 (zum Beispiel ähnlich dem Prozessor 110 von 1) und Speicher 220 (zum Beispiel ähnlich dem Speicher 120 von 1) beinhalten. Der Prozessor 210 kann Bussperren-Deaktivierungs-Register 212 beinhalten, wobei das Register in einer Ausführungsform ein Model-Specific-Register (MSR) sein kann, obwohl das Bussperren-Deaktivierungs-Register 212 auch eine andere Art von Register sein kann. Der Speicher 220 kann ein Bild von Betriebssystem 222 (das Fehlerhandhaber 223 beinhalten kann) und Virtual-Machine-Control-Structure (VMCS) 225 speichern.
  • Der Fehlerhandhaber 223 kann Software sein, die innerhalb des Betriebssystems 222 ausgeführt wird, und kann auf eine vorgegebene Weise jegliche Anzahl von Fehlern handhaben, die aus dem Bild des auf dem Prozessor 210 ausgeführten Betriebssystems resultieren. Diese Fehler können zum Beispiel segment not present (#NP), stack-segment fault (#SS), general protection fault (#GP) oder page fault (#PF) als nur einige Beispiele beinhalten. Der Fehlerhandhaber 223 kann durch das Betriebssystem 222 als Reaktion auf den Empfang eines dieser Fehler oder anderer Typen von Fehlern aufgerufen werden.
  • Die Systemhardware 200 kann den VMM 215 (oder Hypervisor) ausführen, der ferner VM-Verlassen - Handhaber 217 beinhalten kann. Die Systemhardware 200 kann auch eine oder mehrere virtuelle Maschinen 230 ausführen. Der VM-Verlassen-Handhaber 217 kann in Software innerhalb des VMM ausgeführt werden, und kann durch den Prozessor 210 dazu aufgerufen werden, ein VM-Verlassen von der virtuellen Maschine 230 zu handhaben, wenn die VM auf einen Fehler oder eine Ausnahme oder eine andere Bedingung trifft, die das Verlassen der virtuellen Maschine erfordert. Der Prozessor 210 kann zum Beispiel den Status der Gast-VM 140 in die VMCS speichern, bevor der VM-Verlassen-Handhaber 132 aufgerufen wird. Der VM-Verlassen-Handhaber 132 kann zum Beispiel auf Informationen zugreifen, die der Prozessor 210 in der VMCS gespeichert hat, um den VMM über den Grund zu informieren, warum das VM-Verlassen aufgetreten ist. Der VMM 215 kann die virtuellen Maschinen 230 verwalten und steuern, und insbesondere die Eintritte in die und das Verlassen der virtuellen Maschinen steuern und erleichtern, wie für bestimmte Verarbeitungsanforderungen oder das Handhaben von Fehlern, Ausnahmen und dergleichen innerhalb der virtuellen Maschinen 230 erforderlich sein kann.
  • In einer Ausführungsform kann jede virtuelle Maschine 230 virtuellen Prozessor 235, Betriebssystem 232, das Fehlerhandhaber 233 beinhaltet, und eine oder mehrere Anwendungen 234, die innerhalb des Betriebssystems 232 ausgeführt werden, beinhalten, ist jedoch nicht darauf beschränkt. Der virtuelle Prozessor 235 kann die zugrunde liegende Systemhardware 200 dazu verwenden, Threads auszuführen, die in der virtuellen Maschine 230 verwendet werden. Der VMM 215 kann auch eine Speicherverwaltung ausführen, einschließlich Übersetzungen von logischen Adressen der virtuellen Maschine 230 in physikalische Gastadressen, und von physikalischen Gastadressen in physikalische Host-Adressen, die in dem Speicher 220 gespeichert sind. Um solche Übersetzungen auszuführen, kann der VMM auf Seitentabellen (oder Schattenseitentabellen, die die Seitentabellen des Betriebssystems 232 spiegeln) und auf erweiterte Seitentabellen zugreifen, die in dem Speicher 225 gespeichert sein können.
  • In einer Ausführungsform kann der Prozessor 210 ein Bussperren-Deaktivierungs-Bit in dem Bussperren-Deaktivierungs-Register 212 speichern, um anzuzeigen, dass Bussperren deaktiviert sind. In diesem Fall kann die Ausführungseinheit 112 des Prozessors als Reaktion auf den Empfang einer Speicherzugriffsanforderung, die das Erlangen einer Bussperre erfordert, einen Fehler an das Betriebssystem 222 signalisieren, da das Bussperren-Deaktivierungs-Bit innerhalb des Bussperren-Deaktivierungs-Registers 212 gesetzt wird. Der Fehler kann zum Beispiel anstelle des Erlangens der Bussperre signalisiert werden. Der Fehler kann ein allgemeiner Schutzfehler, ein Ausnahme- oder ein anderer Systemfehler sein.
  • 3 ist ein Blockdiagramm der Virtual-Machine-Control-Structure (VMCS) 225 von 2, in der Bit zum Verlassen der Bussperre 315 und Bussperren-Richtlinien-Bit 317 gemäß einer Ausführungsform der vorliegenden Offenbarung gespeichert sind. Die VMCS 225 kann verschiedene Abschnitte oder Bereiche beinhalten, einschließlich VM-Ausführungs-Steuerungsabschnitt 310 (in dem das Bit zum Verlassen der Bussperre 315 und das Bussperren-Richtlinien-Bit 317 gespeichert sind), VM-Verlassen-Steuerungsabschnitt 320, VM-Eintritt-Steuerungsabschnitt 330, Gastzustandsbereich 340, Host-Zustandsbereich 350 und VM-Verlassen-Informationsbereich 360.
  • In verschiedenen Ausführungsformen kann der VM-Ausführungs-Steuerungsabschnitt 310 definieren, wie der Prozessor 210 als Reaktion auf unterschiedliche Ereignisse, die in der virtuellen Maschine 230 auftreten, reagieren soll. Der VM-Verlassen-Steuerungsabschnitt 320 kann definieren, was der Prozessor 210 tun sollte, wenn er die virtuelle Maschine 230 verlässt, zum Beispiel einen Gastzustand der VM in der VMCS speichern und den VMM-Status von der VMCS laden. Der VM-Eintritts-Steuerungsabschnitt 330 kann definieren, was der Prozessor 210 nach dem Eintritt in die virtuelle Maschine 230 tun soll, zum Beispiel den Gastzustand der virtuellen Maschine, einschließlich Debug-Steuerungen, bedingt aus der VMCS laden und eine Unterbrechung oder Ausnahme, wo notwendig, in die virtuelle Maschine während des Eintritts injizieren. Der Gastzustandsbereich 340 kann ein Ort sein, an dem der Prozessor 210 einen Gastprozessorzustand nach dem Verlassen der und dem Eintritt in die virtuelle Maschine 230 speichert und lädt. Der Host-Zustandsbereich 350 kann ein Ort sein, an dem der Prozessor 210 den VMM-Zustand nach dem Verlassen der virtuellen Maschine 230 lädt. Der VM-Verlassen-Informationsbereich 360 kann ein Ort sein, an dem der Prozessor 210 Informationen speichert, die einen Grund für das Verlassen der virtuellen Maschine beschreiben.
  • In einer Ausführungsform kann ein Prozessorkern 111 die Anweisungen der virtuellen Maschine 230 und des VMM 215 ausführen. Als Teil dieser Ausführung von Anweisungen kann der Prozessorkern 111 eine Logik aufrufen, um eine Bedingung in Bezug auf die Ausführung einer Anweisung durch die virtuelle Maschine, die das Erlangen einer Bussperre erfordert, zu erkennen. In einem Beispiel ist die Bedingung eine Speicherzugriffsanforderung der virtuellen Maschine, die das Erlangen der Bussperre erfordert. Der Prozessorkern 111 kann dann, als Reaktion auf das Erkennen, dass das Bit zum Verlassen der Bussperre 315 innerhalb der VMCS 225 aktiviert ist, ein VM-Verlassen der virtuellen Maschine zu dem VMM ausführen, anstatt die Bussperre zu erlangen. Der Prozessorkern 111 kann ferner die Erlangung einer Bussperre als einen Grund für das VM-Verlassen an den VMM übertragen, was der Prozessorkern 141 in dem VM-Verlassen-Informationsbereich 360 der VMCS speichern kann.
  • In einer alternativen Ausführungsform kann der Prozessorkern 111 anstelle des Ausführens eines VM-Verlassens einen Fehler an das Betriebssystem 232 der virtuellen Maschine 230 signalisieren, als Reaktion auf die Ausführung einer Anweisung, die die Speicheranforderung dazu veranlasste, das Anfordern der Erlangung einer Bussperre auszugeben. Der Fehler kann ein allgemeiner Schutzfehler, ein Systemfehler oder VM-bezogener Fehler sein. In ähnlicher Weise kann, wie unter Bezugnahme auf 2 diskutiert, der Prozessorkern 111 die Ausführung der Anweisung als Reaktion auf den Fehler beenden. Darüber hinaus kann der Fehlerhandhaber 233 des Betriebssystems 232 als Reaktion auf den Fehler den Speicherzugriff durch andere Agenten deaktivieren, und die Ausführung der Anweisung emulieren, ohne eine Bussperre zu erfordern.
  • In einer Ausführungsform hat das Ausführen des VM-Verlassens Vorrang vor dem Signalisieren eines Fehlers oder einer Ausnahme an ein Betriebssystem der virtuellen Maschine. Zusätzlich hat das Signalisieren eines Segmentierungsfehlers oder eines Paging-bezogenen Fehlers an ein Betriebssystem der virtuellen Maschine Vorrang vor dem Ausführen des VM-Verlassens. Der Prozessorkern 111 kann zusätzlich oder alternativ durch das Bussperren-Richtlinien-Bit 317 der VMCS auf eine Richtlinie zum Verlassen der Bussperre zugreifen, wobei die Richtlinie zum Verlassen der Bussperre eine Schwellenanzahl zulässiger Bussperren (oder eine Schwellenanzahl von Bussperren pro Sekunde) definiert. Der Prozessorkern 111 kann das VM-Verlassen von der virtuellen Maschine 230 ausführen, als Reaktion auf das Empfangen einer Anforderung für eine Bussperre, die die Schwellenanzahl zulässiger Bussperren überschreitet, oder als Reaktion auf das Erkennen von mehr als der Schwellenanzahl zulässiger Bussperren pro Sekunde.
  • 4 ist ein Flussdiagramm von Verfahren 400 zum Erkennen und Vermeiden von Bussperrbedingungen. Das Verfahren 400 kann durch ein System ausgeführt werden, das Hardware (zum Beispiel Schaltung, fest zugeordnete Logik und/oder programmierbare Logik), Software (zum Beispiel Anweisungen, die auf einem Computersystem zur Ausführung einer Hardware-Simulation ausführbar sind) oder eine Kombination davon beinhalten kann, in einem veranschaulichenden Beispiel kann das Verfahren 400 durch den Prozessorkern 111 des Prozessors 110 von 1, oder durch die System-Hardware 200 von 2 ausgeführt werden, zum Beispiel durch den Prozessor 210, der Anweisungen ausführt und auf Daten zugreift, die in dem Speicher 220 von 2 gespeichert sind. In einer Ausführungsform ist es die Ausführungseinheit 112 des Prozessorkerns 111, die die Ausführung einer Anweisung, die eine Bussperre erfordert, ausführt, und somit kann die Ausführungseinheit 112 alle oder einige der Schritte des Verfahrens 400 ausführen.
  • Insbesondere kann unter Bezugnahme auf 4 das Verfahren 400 dort beginnen, wo der Prozessor eine Anweisung zum Ausführen empfangen kann (404), und bestimmen kann, ob die Anweisung eine Speicherzugriffsanforderung beinhaltet oder erfordert (408). Wenn die Antwort nein ist, kann das Verfahren 400 damit fortfahren, dass die Ausführungseinheit die Anweisung ausführt (410). Wenn die Antwort ja ist, kann das Verfahren damit fortfahren, dass der Prozessor bestimmt, ob die Speicherzugriffsanforderung das Erlangen einer Bussperre erfordert (412). Wenn die Speicherzugriffsanforderung keine Bussperre erfordert, kann das Verfahren damit fortfahren, dass der Prozessor den Speicherzugriff ausführt, um erforderliche Daten abzurufen (416).
  • Unter weiterer Bezugnahme auf 4 kann das Verfahren 400 als Reaktion auf das Bestimmen, dass die Speicherzugriffsanforderung das Erlangen einer Bussperre erfordert, damit fortfahren, dass der Prozessor bestimmt, ob die Speicherzugriffsanforderung von innerhalb einer virtuellen Maschine ausgegeben wird (420). Wenn die Antwort nein ist, kann das Verfahren 400 damit fortfahren, dass der Prozessor bestimmt, ob das Bussperren-Deaktivierungs-Bit innerhalb des Bussperren-Deaktivierungs-Registers 212 aktiviert ist (424). Wenn das Bussperren-Deaktivierungs-Bit aktiviert ist, kann das Verfahren 400 damit fortfahren, dass der Prozessor einen Fehler an ein Betriebssystem liefert (428). Der Fehler kann an den Fehlerhandhaber für das Betriebssystem geliefert werden, um entsprechend dem Typ des Fehlers gehandhabt zu werden. Zum Beispiel kann der Fehler ein allgemeiner Schutzfehler sein, der den Prozessor dazu veranlasst, die Ausführung der Anweisung zu beenden. Der Fehler kann eine andere Art von Fehler oder Ausnahme mit ähnlicher oder unterschiedlicher Handhabung durch den Fehlerhandhaber sein. Wenn das Bussperren-Deaktivierungs-Bit jedoch nicht aktiviert ist, dann kann das Verfahren durch Erlangen der Bussperre (442), Ausführen des Speicherzugriffs (436) und Freigeben der Bussperre (440) fortgesetzt werden.
  • Unter weiterer Bezugnahme auf 4 kann das Verfahren 400, als Reaktion auf das Bestimmen, bei Block 420, dass die Speicherzugriffsanforderung von innerhalb einer virtuellen Maschine stammt, damit fortfahren, dass der Prozessor bestimmt, ob ein Bit zum Verlassen der Bussperre innerhalb der VMCS aktiviert ist (454). Wenn das Bit zum Verlassen der Bussperre nicht aktiviert ist, kann das Verfahren 400 wie zuvor zu Block 424 weitergehen. Wenn das Bit zum Verlassen der Bussperre jedoch aktiviert ist, kann das Verfahren 400 damit fortfahren, dass der Prozessor einen Grund zum Verlassen in der VMCS speichert (zum Beispiel als Erlangung einer Bussperre), und ein VM-Verlassen der virtuellen Maschine zu dem VMM ausführt, anstatt die Bussperre zu erlangen (458). In einer alternativen Ausführungsform kann der Prozessor das VM-Verlassen von der virtuellen Maschine ausführen, als Reaktion auf das Empfangen einer Anforderung für eine Bussperre, die die Schwellenanzahl zulässiger Bussperren überschreitet, oder als Reaktion auf das Erkennen von mehr als der Schwellenanzahl zulässiger Bussperren pro Sekunde. Unterschiedliche oder zusätzliche Einschränkungen können dazu verwendet werden, das VM-Verlassen zu dem VMM auszulösen, um das Erlangen einer Bussperre zu vermeiden.
  • In verschiedenen Ausführungsformen hat das Ausführen des VM-Verlassens Vorrang vor dem Signalisieren eines Fehlers oder einer Ausnahme an ein Betriebssystem der virtuellen Maschine. Zusätzlich hat das Signalisieren eines Segmentierungsfehlers oder eines Paging-bezogenen Fehlers an ein Betriebssystem der virtuellen Maschine Vorrang vor dem Ausführen des VM-Verlassens.
  • 5A ist ein Blockdiagramm, das eine Mikroarchitektur für Prozessor 500 veranschaulicht, die dazu verwendet wird, Bussperrbedingungen zu erkennen und zu vermeiden. Insbesondere stellt der Prozessor 500 einen In-Order-Architekturkern und eine Registerumbenennungslogik, eine Out-of-Order-Ausgabe/- Ausführungslogik dar, die in einem Prozessor gemäß mindestens einer Ausführungsform der Offenbarung enthalten sein soll. Die Ausführungsformen zum Erkennen und Vermeiden von Bussperrbedingungen können in dem Prozessor 500 implementiert werden.
  • Der Prozessor 500 beinhaltet Front-End-Einheit 530, die mit Ausführungs-Engine-Einheit 550 gekoppelt ist, und beide sind mit Speichereinheit 570 gekoppelt. Der Prozessor 500 kann einen Reduced-Instruction-Set-Computing (RISC) -Kern, einen Complex-Instruction-Set-Computing (CISC) -Kern, einen Very-Long-Instruction-Word (VLIW) -Kern oder einen hybriden oder alternativen Kerntyp beinhalten. Als noch eine andere Option kann der Prozessor 500 einen Spezialkern, wie zum Beispiel einen Netzwerk- oder Kommunikationskern, eine Komprimierungs-Engine, einen Grafikkern oder dergleichen beinhalten. In einer Ausführungsform kann der Prozessor 500 ein Multicore-Prozessor sein, oder er kann Teil eines Multicore-Prozessorsystems sein.
  • Die Front-End-Einheit 530 beinhaltet Sprungvorhersageeinheit 532, die mit Anweisungs-Cache-Einheit 534 gekoppelt ist, die mit Anweisungs-Translation-Lookaside-Buffer (TLB) 536 gekoppelt ist, der mit Anweisungsabholeinheit 538 gekoppelt ist, die mit Decodierungseinheit 540 gekoppelt ist. Die Decodierungseinheit 540 (auch bekannt als ein Decoder) kann Anweisungen decodieren, und als eine Ausgabe eine oder mehrere Mikro-Operationen, Mikrocode-Eintrittspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale erzeugen, die von den ursprünglichen Anweisungen decodiert werden, oder die diese auf andere Weise widerspiegeln oder davon abgeleitet werden. Der Decoder 540 kann durch Verwenden verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen beinhalten Nachschlagetabellen, Hardware-Implementierungen, Programmable-Logic-Arrays (PLA), Mikrocode Read-Only-Memories (ROM), usw., sind jedoch nicht darauf beschränkt. Die Anweisungs-Cache-Einheit 534 ist ferner mit Speichereinheit 570 gekoppelt. Die Decodierungseinheit 540 ist mit Umbenennungs-/Zuordnungseinheit 552 in der Ausführungs-Engine-Einheit 550 gekoppelt.
  • Die Ausführungs-Engine-Einheit 550 beinhaltet die Umbenennungs-/Zuordnungseinheit 552, die mit Rückzugseinheit 554 und einem Satz einer oder mehrerer Planereinheiten 556 gekoppelt ist. Die Planereinheit(en) 556 stellt (stellen) jegliche Anzahl unterschiedlicher Planer dar, einschließlich Reservierungsstationen (RS), zentrales Anweisungsfenster usw. Die Planereinheit(en) 556 ist (sind) mit physikalischer Registerdateieinheit(en) 558 gekoppelt. Jede der physikalischen Registerdateieinheiten 558 stellt eine oder mehrere physikalische Registerdateien dar, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie zum Beispiel skalare Ganzzahl, skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektor-Ganzzahl , Vektor-Gleitkomma usw., Zustand (zum Beispiel ein Anweisungszeiger, der die Adresse der nächsten auszuführenden Anweisung ist), usw. Die physikalische(n) Registerdateieinheit(en) 558 wird (werden) durch die Rückzugseinheit 554 überlappt, um verschiedene Arten zu veranschaulichen, in denen das Umbenennen von Registern und die Out-of-Order-Ausführung implementiert werden können (zum Beispiel durch Verwenden eines Neuordnungspuffers (von Neuordnungspuffern) und einer Rückzugsregisterdatei (von Rückzugsregisterdateien), durch Verwenden einer zukünftigen Datei (von zukünftigen Dateien), eines Historienpuffers (von Historienpuffern) und einer Rückzugsregisterdatei (von Rückzugsregisterdateien); durch Verwenden einer Registerabbildung und eines Pools von Registern, usw.).
  • Im Allgemeinen sind die Architekturregister von außerhalb des Prozessors oder aus der Perspektive eines Programmierers sichtbar. Die Register sind nicht auf jeglichen bekannten bestimmten Schaltungstyp beschränkt. Verschiedene unterschiedliche Registertypen sind geeignet, solange sie dazu in der Lage sind, Daten wie hierin beschrieben zu speichern und bereitzustellen. Beispiele für geeignete Register beinhalten fest zugeordnete physikalische Register, dynamisch zugewiesene physikalische Register durch Verwenden von Registerumbenennung, Kombinationen von fest zugeordneten und dynamisch zugewiesenen physikalischen Registern usw., sind jedoch nicht darauf beschränkt. Die Rückzugseinheit 554 und die physikalischen Registerdateieinheit(en) 558 ist (sind) mit Ausführungscluster(n) 560 gekoppelt. Die Ausführungs-Cluster 560 beinhalten einen Satz von einer oder mehreren Ausführungseinheiten 562 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 564. Die Ausführungseinheiten 562 können verschiedene Operationen ausführen (zum Beispiel Verschiebungen, Addition, Subtraktion, Multiplikation), und auf verschiedenen Typen von Daten (zum Beispiel skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma) arbeiten.
  • Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten beinhalten können, die spezifischen Funktionen oder Sätzen von Funktionen fest zugeordnet sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten beinhalten, die alle alle Funktionen ausführen. Die Planereinheit(en) 556, die physikalischen Registerdatei-Einheit(en) 558 und die Ausführungs-Cluster 560 ist (sind) als möglicherweise eine Mehrzahl gezeigt, da bestimmte Ausführungsformen separate Pipelines für bestimmte Typen von Daten/Operationen erzeugen (zum Beispiel eine Pipeline für skalare Ganzzahl, eine Pipeline für skalares Gleitkomma/gepackte Ganz zahl/gepacktes Gleitkomma/Vektorganzzahl/Vektorgleitkomma und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre/n eigene/n Planereinheit, physikalische Registerdateieinheit(en) und/oder Ausführungs-Cluster haben - und in dem Fall einer separaten Speicherzugriffs-Pipeline sind bestimmte Ausführungsformen implementiert, in denen nur das Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 564 hat). Es sollte auch klargestellt werden, dass bei Verwendung separater Pipelines eine oder mehrere dieser Pipelines Out-of-Order-Ausgabe/-Ausführungs-Pipelines und der Rest In-Order-Pipelines sein können.
  • Der Satz von Speicherzugriffseinheiten 564 ist mit der Speichereinheit 570 gekoppelt, die Datenvorabholer 580, Daten-TLB-Einheit 572, Data-Cache-Unit (DCU) 574 und Level 2 (L2)-Cache-Einheit 576 beinhalten kann. In einigen Ausführungsformen ist die DCU 574 auch als ein First-Level-Datencache (L1-Cache) bekannt. Die DCU 574 kann mehrere ausstehende Cache-Fehlschläge handhaben und damit fortfahren, eingehende Speicher- und Ladevorgänge zu bedienen. Sie unterstützt auch das Aufrechterhalten der Cache-Kohärenz. Die Daten-TLB-Einheit 572 ist ein Cache, der dazu verwendet wird, die Übersetzungsgeschwindigkeit für virtuelle Adressen durch Abbilden von virtuellen und physikalischen Adressräumen zu verbessern. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 564 eine Ladeeinheit, eine Speicheradresseinheit und eine Speicherdateneinheit beinhalten, von denen jede mit der Daten-TLB-Einheit 572 in der Speichereinheit 570 gekoppelt ist. Die L2-Cache-Einheit 576 kann mit einem oder mehreren anderen Cache-Leveln und schließlich mit einem Hauptspeicher gekoppelt sein.
  • In einer Ausführungsform lädt der Datenvorabholer 580 spekulativ Daten in die DCU 574/holt diese vorab ab, indem er automatisch vorhersagt, welche Daten ein Programm verbrauchen wird. Das Vorabholen kann sich auf das Übertragen von Daten beziehen, die an einem Speicherort (zum Beispiel der Position) einer Speicherhierarchie (zum Beispiel Caches oder Speicher niedrigerer Ebene) an einen Speicherort höherer Ebene gespeichert sind, der näher an dem Prozessor ist (zum Beispiel eine geringere Zugriffslatenz erbringt), bevor die Daten tatsächlich durch den Prozessor angefordert werden. Insbesondere kann sich das Vorabholen auf das frühe Abrufen von Daten aus einem der Caches/Speicher der niedrigeren Ebene in einen Datencache und/oder Vorabholpuffer beziehen, bevor der Prozessor eine Anforderung für die spezifischen Daten, die zurückgegeben werden, ausgibt.
  • Der Prozessor 500 kann einen oder mehrere Anweisungssätze unterstützen (zum Beispiel den x86-Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Anweisungssatz von Imagination Technologies in Kings Langley, Hertfordshire, UK; den ARM-Anweisungssatz (mit optional zusätzlichen Erweiterungen, wie zum Beispiel NEON) von ARM Holdings in Sunnyvale, CA).
  • Es sollte klargestellt werden, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen und dies in einer Vielzahl von Arten tun kann, einschließlich Zeitscheiben-Multithreading, gleichzeitiges Multithreading (wobei ein einzelner physikalischer Kern einen logischen Kern für alle Threads bereitstellt, für die dieser physikalische Kern ein gleichzeitiges Multithreading durchführt), oder einer Kombination davon (zum Beispiel Zeitscheiben-Abholen und -Decodieren und gleichzeitiges Multithreading danach, wie zum Beispiel in der Intel® Hyperthreading-Technologie).
  • Während die Registerumbenennung in dem Kontext der Out-of-Order-Ausführung beschrieben ist, sollte klargestellt werden, dass die Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Während die veranschaulichte Ausführungsform des Prozessors auch separate Anweisungs- und Daten-Cache-Einheiten und eine geteilte L2-Cache-Einheit beinhaltet, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Anweisungen als auch für Daten haben, wie zum Beispiel einen internen Level 1 (L1)-Cache, oder mehrere Level interner Caches. In einigen Ausführungsformen kann das System eine Kombination von einem internen Cache und einem externen Cache, der außerhalb des Kerns und/oder des Prozessors ist, beinhalten. Alternativ kann der gesamte Cache außerhalb des Kerns und/oder des Prozessors sein. Es ist zu beachten, dass die Anweisungs-Cache-Einheit 534, die Daten-Cache-Einheit 574 und die L2-Cache-Einheit 576 den in dieser Offenbarung beschriebenen Prozess im Allgemeinen nicht implementieren würden, da diese Cache-Einheiten im Allgemeinen einen On-Die-Speicher verwenden, der kein Seitenlokalitätsverhalten zeigt.
  • 5B ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbenennungsstufe, Out-of-Order-Ausgabe-/Ausführungs-Pipeline veranschaulicht, die durch den Prozessor 500 von 5A gemäß einigen Ausführungsformen der Offenbarung implementiert werden. Die Kästchen mit durchgezogenen Linien in 5B veranschaulichen eine In-Order-Pipeline, während die Kästchen mit gestrichelten Linien eine Registerumbenennungs-, Out-of-Order-Ausgabe/Ausführungs-Pipeline veranschaulichen. In 5B beinhaltet die Prozessor-Pipeline 500 Abholstufe 502, Längendecodierungsstufe 504, Decodierungsstufe 506, Zuordnungsstufe 508, Umbenennungsstufe 510, Planungsstufe (auch bekannt als Sende- oder Ausgabestufe) 512, Registerlese-/Speicherlesestufe 514, Ausführungsstufe 516, Zurückschreib-/Speicherschreibstufe 518, Ausnahmehandhabungsstufe 522 und Festlegungsstufe 524. In einigen Ausführungsformen kann die Reihenfolge der Stufen 502 bis 524 unterschiedlich als veranschaulicht sein, und ist nicht auf die in 5B gezeigte spezifische Reihenfolge beschränkt.
  • 6 veranschaulicht ein Blockdiagramm von Mikroarchitektur für Prozessor 600, die Logikschaltungen beinhaltet, die dazu verwendet werden können, Bussperrbedingungen gemäß einer Ausführungsform zu erkennen und zu vermeiden. In einigen Ausführungsformen kann eine Anweisung gemäß einer Ausführungsform implementiert werden, um auf Datenelementen, die Größen von Byte, Wort, Doppelwort, Vierwort usw. haben, sowie Datentypen, wie zum Beispiel Ganzzahl- und Gleitkomma-Datentypen mit einfacher und doppelter Präzision, zu arbeiten. In einer Ausführungsform ist In-Order-Front-End 601 der Teil des Prozessors 600, der die auszuführenden Anweisungen abholt und sie für die spätere Verwendung in der Prozessor-Pipeline vorbereitet. Die Ausführungsformen der Seitenzusätze und des Kopierens von Inhalten können in dem Prozessor 600 implementiert werden.
  • Das Front-End 601 kann mehrere Einheiten beinhalten. In einer Ausführungsform holt Anweisungsvorabholer 616 Anweisungen aus dem Speicher ab und gibt sie in Anweisungsdecodierer 618 ein, der sie wiederum decodiert oder interpretiert. Zum Beispiel decodiert der Decodierer in einer Ausführungsform eine empfangene Anweisung in eine oder mehrere Operationen, die als „Mikroanweisungen“ oder „Mikrooperationen“ (auch bezeichnet als Mikro-Ops oder U-Ops) bezeichnet werden, die die Maschine ausführen kann. In anderen Ausführungsformen analysiert der Decodierer die Anweisung in einen Op-Code und entsprechende Daten- und Steuerfelder, die durch die Mikroarchitektur dazu verwendet werden, Operationen gemäß einer Ausführungsform auszuführen. In einer Ausführungsform nimmt Trace-Cache 630 decodierte U-Ops, und setzt sie in programmgeordnete Sequenzen oder Traces in U-Op-Warteschlange 634 zur Ausführung zusammen. Wenn der Trace-Cache 630 auf eine komplexe Anweisung trifft, stellt Mikrocode-ROM (oder RAM) 632 die U-Ops bereit, die zum Vervollständigen der Operation erforderlich sind.
  • Einige Anweisungen werden in eine einzelne Mikro-Op umgewandelt, während andere mehrere Mikro-Ops benötigen, um den vollen Vorgang zu vervollständigen. In einer Ausführungsform, wenn mehr als vier Mikro-Ops benötigt werden, um eine Anweisung zu vervollständigen greift der Decodierer 618 auf den Mikrocode-ROM 632 zu, um die Anweisung auszuführen. Für eine Ausführungsform kann eine Anweisung in eine kleine Anzahl von Mikro-Ops zur Verarbeitung an dem Anweisungsdecodierer 618 decodiert werden. In einer anderen Ausführungsform kann eine Anweisung in dem Mikrocode-ROM 632 gespeichert werden, falls eine Anzahl von Mikro-Ops benötigt werden sollte, um die Operation zu erfüllen. Der Trace-Cache 630 bezieht sich auf ein Einstiegspunkt-Programmable-Logic-Array (PLA), um einen korrekten Mikroanweisungszeiger für das Lesen der Mikrocodesequenzen zu bestimmen, um eine oder mehrere Anweisungen gemäß einer Ausführungsform aus dem Mikrocode-ROM 632 zu vervollständigen. Nachdem der Mikrocode-ROM 632 die Sequenzierung von Mikro-Ops für eine Anweisung beendet hat, setzt das Front-End 601 der Maschine das Abholen von Mikro-Ops aus dem Trace-Cache 630 fort.
  • In Out-Of-Order-Ausführungs-Engine 603 werden die Anweisungen zur Ausführung vorbereitet. Die Out-Of-Order-Ausführungslogik hat eine Anzahl von Puffern, um den Fluss von Anweisungen zu glätten und neu zu ordnen, um die Leistung zu optimieren, wenn sie die Pipeline durchlaufen und zur Ausführung geplant werden. Die Zuordnungslogik ordnet die Maschinenpuffer und Ressourcen zu, die jede U-Op zur Ausführung benötigt. Die Registerumbenennungslogik benennt Logikregister in Einträge in einer Registerdatei um. Der Zuordner ordnet auch einen Eintrag für jede U-Op in einer der zwei U-Op-Warteschlangen zu, einen für Speicheroperationen und einen für Nicht-Speicheroperationen, vor den Anweisungsplanern: Speicherplaner, schneller Planer 602, langsamer/allgemeiner FP-Planer 604 und einfacher FP-Planer 606. Die U-Op-Planer 602, 604, 606 bestimmen, wann ein U-Op zur Ausführung bereit ist, basierend auf der Bereitschaft ihrer abhängigen Eingaberegister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die die U-Ops dazu benötigen, ihre Operation zu vervollständigen. Der schnelle Planer 602 einer Ausführungsform kann auf jeder Hälfte des Haupttaktzyklus planen, während die anderen Planer nur einmal pro Hauptprozessor-Taktzyklus planen können. Die Planer entscheiden, ob die Sende-Ports U-Ops zur Ausführung planen sollen.
  • Registerdateien 608, 610 befinden sich zwischen den Planern 602, 604, 606 und Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624 in Ausführungsblock 611. Es gibt eine separate Registerdatei 608, 610 für Ganzzahl- bzw. Gleitkommaoperationen. Jede Registerdatei 608, 610 einer Ausführungsform beinhaltet auch ein Bypass-Netzwerk, das gerade vervollständigte Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umgehen oder an neue abhängige U-Ops weiterleiten kann. Die Ganzzahlregisterdatei 608 und die Gleitkommaregisterdatei 610 sind auch dazu geeignet, Daten mit der anderen zu kommunizieren. Für eine Ausführungsform ist die Ganzzahlregisterdatei 608 in zwei separate Registerdateien aufgeteilt, eine Registerdatei für die 32 Datenbits niedriger Ordnung, und eine zweite Registerdatei für die 32 Datenbits hoher Ordnung. Die Gleitkommaregisterdatei 610 einer Ausführungsform hat 128 Bit breite Einträge, da Gleitkommaanweisungen typischerweise Operanden mit einer Breite von 64 bis 128 Bit haben.
  • Der Ausführungsblock 611 enthält die Ausführungseinheiten 612, 614, 616, 618, 620, 622, 624, wo die Anweisungen tatsächlich ausgeführt werden. Dieser Abschnitt beinhaltet die Registerdateien 608, 610, die die Operandenwerte für Ganzzahl- und Gleitkommadaten, die die Mikroanweisungen ausführen müssen, speichern. Der Prozessor 600 einer Ausführungsform besteht aus einer Anzahl von Ausführungseinheiten: Adressgenerierungseinheit (AGU) 612, AGU 614, schnelle ALU 616, schnelle ALU 618, langsame ALU 610, Gleitkomma-ALU 612, Gleitkomma-Bewegungseinheit 614. Für eine Ausführungsform führen die Gleitkomma-Ausführungsblöcke 612, 614 Gleitkomma, MMX, SIMD und SSE oder andere Operationen aus. Die Gleitkomma-ALU 612 einer Ausführungsform beinhaltet einen 64-Bit-mal-64-Bit-Gleitkomma-Teiler zum Ausführen von Divisions-, Quadratwurzel- und Restbetrag-Mikro-Ops. Für Ausführungsformen der vorliegenden Offenbarung können Anweisungen, die einen Gleitkommawert einbeziehen, mit der Gleitkomma-Hardware gehandhabt werden.
  • In einer Ausführungsform gehen die ALU-Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 616, 618. Die schnellen ALU 616, 618 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. Für eine Ausführungsform gehen die komplexesten Ganzzahloperationen an die langsame ALU 620, da die langsame ALU 620 Ganzzahlausführungs-Hardware für Operationstypen mit langer Latenz beinhaltet, wie zum Beispiel einen Multiplikator, Verschiebungen, Flag-Logik und Sprungverarbeitung. Speicherlade-/Speicheroperationen werden durch die AGU 622, 624 ausgeführt. Für eine Ausführungsform werden die Ganzzahl-ALU 616, 618, 620 im Zusammenhang mit der Ausführung ganzzahliger Operationen an 64-Bit-Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALU 616, 618, 620 implementiert werden, um eine Vielzahl von Datenbits zu unterstützen, einschließlich 16, 32, 128, 256 usw. In ähnlicher Weise können die Gleitkommaeinheiten 622, 624 implementiert werden, um einen Bereich von Operanden zu unterstützen, die Bits unterschiedlicher Breite haben. Für eine Ausführungsform können die Gleitkommaeinheiten 622, 624 an 128 Bit breiten gepackten Datenoperanden in Verbindung mit SIMD- und Multimedia-Anweisungen arbeiten.
  • In einer Ausführungsform versenden die U-Ops-Planer 602, 604, 606 abhängige Operationen, bevor die Ausführung der übergeordneten Last beendet ist. Da U-Ops in dem Prozessor 600 spekulativ geplant und ausgeführt werden, beinhaltet der Prozessor 600 auch Logik zur Handhabung von Speicherfehlschlägen. Wenn eine Datenladung in dem Daten-Cache fehlschlägt, kann es abhängige Operationen im Flug in der Pipeline geben, die den Planer mit vorübergehend falschen Daten verlassen haben. Ein Wiederholmechanismus verfolgt Anweisungen, die falsche Daten verwenden, und führt sie erneut aus. Es müssen nur die abhängigen Operationen wiederholt werden, und die unabhängigen dürfen vervollständigt werden. Die Planer und der Wiederholmechanismus einer Ausführungsform eines Prozessors sind auch dazu ausgelegt, Anweisungssequenzen für Textzeichenkettenvergleichsoperationen aufzufangen.
  • Der Begriff „Register“ kann sich auf die integrierten Prozessorspeicherungsorte beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden. Mit anderen Worten, Register können jene sein, die von außerhalb des Prozessors (aus der Perspektive eines Programmierers) verwendbar sind. Jedoch sollten die Register einer Ausführungsform nicht auf einen bestimmten Schaltungstyp beschränkt sein. Vielmehr ist ein Register einer Ausführungsform dazu geeignet, Daten zu speichern und bereitzustellen, und die hierin beschriebenen Funktionen ausführen. Die hierin beschriebenen Register können durch eine Schaltung innerhalb eines Prozessors durch Verwenden jeglicher Anzahl unterschiedlicher Techniken, wie zum Beispiel fest zugeordnete physikalische Register, dynamisch zugewiesene physikalische Register durch Verwenden von Registerumbenennung, Kombinationen von fest zugeordneten und dynamisch zugewiesenen physikalischen Registern usw., implementiert werden. In einer Ausführungsform speichern Ganzzahlregister 32-Bit-Ganzzahldaten. Eine Registerdatei einer Ausführungsform enthält auch acht Multimedia-SIMD-Register für gepackte Daten.
  • Für die Diskussionen hierin werden die Register als Datenregister verstanden, die zum Halten gepackter Daten ausgelegt sind, wie zum Beispiel 64 Bit breite MMX™-Register (in einigen Fällen auch bezeichnet als ,mm' -Register) in Mikroprozessoren, die mit MMX-Technologie von Intel Corporation aus Santa Clara, Kalifornien aktiviert sind. Diese MMX-Register, die sowohl in Ganzzahl- als auch in Gleitkommaformen verfügbar sind, können mit gepackten Datenelementen arbeiten, die SIMD- und SSE-Anweisungen begleiten. In ähnlicher Weise können 128 Bit breite MMX-Register, die sich auf SSE2, SSE3, SSE4 oder darüber hinaus beziehen (genetisch als „SSEx“ bezeichnet), auch dazu verwendet werden, solche gepackten Datenoperanden zu halten. In einer Ausführungsform müssen die Register beim Speichern gepackter Daten und ganzzahliger Daten nicht zwischen den zwei Datentypen unterscheiden. In einer Ausführungsform sind Ganzzahl und Gleitkomma entweder in derselben Registerdatei oder in unterschiedlichen Registerdateien enthalten. Darüber hinaus können in einer Ausführungsform Gleitkomma- und Ganzzahldaten in unterschiedlichen Registern oder denselben Registern gespeichert werden.
  • Ausführungsformen können in vielen unterschiedlichen Systemtypen implementiert werden. Nun Bezugnehmend auf 7, ist ein Blockdiagramm von Multiprozessorsystem 700 gemäß einer Implementierung gezeigt. Wie in 7 gezeigt, ist das Multiprozessorsystem 700 ein Punkt-zu-Punkt-Verbindungssystem und beinhaltet ersten Prozessor 770 und zweiten Prozessor 780, die über Punkt-zu-Punkt-Verbindung 750 gekoppelt sind. Wie in 7 gezeigt, kann jeder der Prozessoren 770 und 780 ein Multicore-Prozessor sein, einschließlich erster und zweiter Prozessorkerne (das heißt Prozessorkerne 774a und 774b und Prozessorkerne 784a und 784b), obwohl potenziell viel mehr Kerne in den Prozessoren vorhanden sein können.
  • Während mit nur zwei Prozessoren 770, 780 gezeigt, versteht es sich, dass der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist. In anderen Implementierungen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 770 und 780 sind einschließlich integrierter Speichersteuerungseinheiten 772 bzw. 782 gezeigt. Der Prozessor 770 beinhaltet als Teil seiner Bussteuerungseinheiten auch Punkt-zu-Punkt (P-P) - Schnittstellen 776 und 788; in ähnlicher Weise beinhaltet der zweite Prozessor 780 P-P-Schnittstellen 786 und 788. Die Prozessoren 770 und 780 können Informationen über eine Punkt-zu-Punkt (P-P)-Schnittstelle 750 durch Verwenden der P-P-Schnittstellenschaltungen 778, 788 austauschen. Wie in 7 gezeigt, koppeln die IMC 772 und 782 die Prozessoren mit jeweiligen Speichern, nämlich mit Speicher 732 und Speicher 734, die Abschnitte eines lokal mit den jeweiligen Prozessoren verbundenen Hauptspeichers sein können.
  • Die Prozessoren 770, 780 können jeweils Informationen mit Chipsatz 790 über einzelne P-P-Schnittstellen 752, 754 durch Verwenden von Punkt-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 austauschen. Der Chipsatz 790 kann auch Informationen mit Hochleistungsgrafikschaltung 738 über Hochleistungsgrafikschnittstelle 739 austauschen.
  • Ein geteilter Cache (nicht gezeigt) kann in einem der Prozessoren oder außerhalb beider Prozessoren enthalten sein, kann aber dennoch über eine P-P-Verbindung mit den Prozessoren verbunden sein, sodass lokale Cache-Informationen eines oder beider Prozessoren in dem geteilten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus gebracht wird. Die Seitenlokalität kann auch in dem geteilten Cache über eine oder mehrere Cache-Steuerungen hinweg erzeugt werden, wenn Einträge dem geteilten Cache zugewiesen werden.
  • Der Chipsatz 790 kann über Schnittstelle 796 mit erstem Bus 716 gekoppelt werden. In einer Ausführungsform kann der erste Bus 716 ein Peripheral-Component-Interconnect (PCI) -Bus oder ein Bus, wie zum Beispiel ein PCI Express-Bus oder Verbindungs-Bus, sein, obwohl der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Nun unter Bezugnahme auf 8, ist ein Blockdiagramm von drittem System 800 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Gleiche Elemente in den 7 und 8 tragen gleiche Bezugszeichen, und bestimmte Aspekte von 8 wurden von 7 weggelassen, um eine Verschleierung anderer Aspekte von 8 zu vermeiden.
  • 8 veranschaulicht, dass Prozessoren 870, 880 integrierte Speicher- und I/O-Steuerungslogik („CL“) 872 bzw. 892 beinhalten können. Für mindestens eine Ausführungsform können die CL 872, 882 integrierte Speichersteuerungseinheiten, wie zum Beispiel hierin beschrieben, beinhalten. Zusätzlich können die CL 872, 892 auch eine I/O-Steuerungslogik beinhalten. 8 veranschaulicht, dass Speicher 832, 834 mit den CL 872, 892 gekoppelt sind, und dass I/O-Geräte 814 ebenfalls mit der Steuerungslogik 872, 892 gekoppelt sind. Etablierte I/O-Geräte 815 sind mit Chipsatz 890 gekoppelt.
  • 9 ist beispielhaftes System-on-α-Chip (SoC) 900, das einen oder mehrere Kerne 902 beinhalten kann. Andere in dem Fachgebiet bekannte Systemauslegungen und Konfigurationen für Laptops, Desktops, Handheld-PC, Personal-Digital-Assistants, Engineering-Workstations, Server, Netzwerkgeräte, Netzwerk-Hubs, Schalter, eingebettete Prozessoren, Digital-Signal-Processors (DSP), Grafikgeräte, Videospielegeräte, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienwiedergabegeräte, Handheld-Geräte und verschiedene andere elektronische Geräte sind ebenfalls geeignet. Im Allgemeinen ist eine große Vielzahl von Systemen oder elektronischen Geräten, die zur Aufnahme eines Prozessors und/oder anderer Ausführungslogik, wie hierin offenbart, geeignet sind, allgemein geeignet.
  • Innerhalb des beispielhaften SoC 900 von 9 sind Kästchen mit gestrichelten Linien Merkmale bei fortgeschritteneren SoC. Verbindungseinheit(en) 902 kann (können) mit Folgendem gekoppelt sein: Anwendungsprozessor 917, der einen Satz von einem oder mehreren Kernen 902A-N und geteilte Cache-Einheit(en) 906 beinhaltet; Systemagenteneinheit 910; Bussteuerungseinheit(en) 916; integrierte Speichersteuerungseinheit(en) 914; einen Satz oder einen oder mehrere Medienprozessoren 920, die integrierte Grafiklogik 908, Bildprozessor 924 zum Bereitstellen von Standbild- und/oder Videokamerafunktionalität, Audioprozessor 926 zum Bereitstellen von Hardware-Audiobeschleunigung, und Videoprozessor 928 zum Bereitstellen von Video-Codierungs-/Decodierungsbeschleunigung; Static-Random-Access-Memory (SRAM) -Einheit 930; Direct-Memory-Access (DMA) - Einheit 932; und Display-Einheit 940 zum Koppeln mit einem oder mehreren externen Displays.
  • Wendet man sich als nächstes 10 zu, ist eine Ausführungsform einer System-on-Chip (SoC) -Auslegung gemäß Ausführungsformen der Offenbarung dargestellt. Als ein veranschaulichendes Beispiel ist SoC 1000 in einem Benutzergerät (UE) enthalten. In einer Ausführungsform bezieht sich UE auf jegliches Gerät, das durch einen Endverbraucher zum Kommunizieren verwendet werden soll, wie zum Beispiel ein tragbares Telefon, Smartphone, Tablet, ultradünnes Notebook, Notebook mit Breitbandadapter oder jegliches andere ähnliche Kommunikationsgerät. Ein UE kann sich mit einer Basisstation oder einem Knoten verbinden, der in seiner Natur einer Mobilstation (MS) in einem GSM-Netzwerk entspricht. Die Ausführungsformen der Seitenzusätze und des Kopierens von Inhalten können in dem SoC 1000 implementiert werden.
  • Hier beinhaltet das SOC 1000 zwei Kerne - 1006 und 1007. Ähnlich der Diskussion oben können die Kerne 1006 und 1007 einer Anweisungssatzarchitektur entsprechen, wie zum Beispiel einem Prozessor, der den Intel®-Architecture-Core™ hat, einem Advanced-Micro-Devices, Inc. (AMD) -Prozessor, einem MIPS-basierten Prozessor, einem ARM-basierten Prozessor-Design, oder einem Kunden davon, sowie ihren Lizenznehmern oder Anwendern. Die Kerne 1006 und 1007 sind mit Cache-Steuerung 1008 gekoppelt, die Busschnittstelleneinheit 1009 und L2-Cache 1010 zugeordnet ist, um mit anderen Teilen des Systems 1000 zu kommunizieren. Verbindung 1011 beinhaltet eine On-Chip-Verbindung, wie zum Beispiel eine IOSF, AMBA oder andere oben diskutierte Verbindung, die einen oder mehrere Aspekte der beschriebenen Offenbarung implementieren kann.
  • In einer Ausführungsform kann SDRAM-Steuerung 1040 über den Cache 125 eine Verbindung zu der Verbindung 1011 herstellen. Die Verbindung 1011 stellt Kommunikationskanäle zu den anderen Komponenten bereit, wie zum Beispiel Subscriber-Identity-Module (SIM) 1030 als Schnittstelle zu einer SIM-Karte, Boot-ROM 1035 zum Halten von Boot-Code zur Ausführung durch die Kerne 1006 und 1007 zum Initialisieren und Booten des SoC 1000, SDRAM-Steuerung 1040 als Schnittstelle zu externem Speicher (zum Beispiel DRAM 1060), Flash-Steuerung 1045 als Schnittstelle zu nichtflüchtigem Speicher (zum Beispiel Flash 1065), periphere Steuerung 1050 (zum Beispiel Serial-Peripheral-Interface) als Schnittstelle zu Peripheriegeräten, Video-Codecs 1020 und Videoschnittstelle 1025 zum Anzeigen und Empfangen von Eingaben (zum Beispiel berührungsaktivierter Eingaben), GPU 1015 zum Ausführen grafikbezogener Berechnungen, usw. Jegliche dieser Schnittstellen kann Aspekte der hierin beschriebenen Ausführungsformen enthalten.
  • Zusätzlich veranschaulicht das System Peripheriegeräte zur Kommunikation, wie zum Beispiel Bluetooth®-Modul 1070, 3G-Modem 1075, GPS 1080 und WiFi® 1085. Es ist zu beachten, wie oben erwähnt, dass ein UE ein Funkgerät zur Kommunikation beinhaltet. Infolgedessen können diese peripheren Kommunikationsmodule nicht alle enthalten sein. Jedoch sollte in einem UE eine Form eines Funkgeräts zur externen Kommunikation enthalten sein.
  • 11 veranschaulicht eine schematische Darstellung einer Maschine in der beispielhaften Form von Datenverarbeitungssystem 1100, in der ein Satz von Anweisungen ausgeführt werden kann, um die Maschine dazu zu veranlassen, irgendeine oder mehrere der hierin diskutierten Methodiken auszuführen. In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet oder dem Internet verbunden (zum Beispiel vernetzt) sein. Die Maschine kann in der Kapazität eines Servers oder eines Client-Geräts in einer Client-Server-Netzwerkumgebung, oder als eine Peer-Maschine in einer Peer-to-Peer (oder verteilten) Netzwerkumgebung arbeiten. Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal-Digital-Assistant (PDA), ein Mobiltelefon, eine Web-Apparat, ein Server, ein Netzwerk-Router, ein Schalter oder eine Brücke sein, oder jegliche Maschine, die dazu geeignet ist, einen Satz von Anweisungen (sequentiell oder anderweitig) auszuführen, die durch diese Maschine auszuführenden Aktionen spezifizieren. Ferner soll, während nur eine einzelne Maschine veranschaulicht ist, der Begriff „Maschine“ auch jegliche Sammlung von Maschinen beinhalten, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um irgendeine oder mehrere der hierin diskutierten Methodiken auszuführen. Die Ausführungsformen der Seitenzusätze und des Kopierens von Inhalten können in dem Datenverarbeitungssystem 1100 implementiert werden.
  • Das Datenverarbeitungssystem 1100 beinhaltet Verarbeitungsgerät 1102, Hauptspeicher 1104 (zum Beispiel Flash-Speicher, Dynamic-Random-Access-Memory (DRAM) (wie zum Beispiel Synchronous-DRAM (SDRAM) oder DRAM (RDRAM), usw.)), statischen Speicher 1106 (zum Beispiel Flash-Speicher, Static-Random-Access-Memory (SRAM), usw.) und Datenspeicherungsgerät 1118, die über Bus 1108 miteinander kommunizieren. In einer Ausführungsform kann der Bus 1108 aus dem Systembus 170-1 und/oder dem Speicherbus 170-2 von 1 bestehen, und der Speicher und die Peripheriegeräte, die den Bus 1108 teilen, können der Systemagent 114 sein oder durch diesen arbeiten, ähnlich wie unter Bezugnahme auf 1 diskutiert.
  • Das Verarbeitungsgerät 1102 stellt ein oder mehrere Mehrzweckverarbeitungsgeräte, wie zum Beispiel einen Mikroprozessor, eine Zentralverarbeitungseinheit oder dergleichen dar. Insbesondere kann das Verarbeitungsgerät ein Complex-Instruction-Set-Computing (CISC) -Mikroprozessor, Reduced-Instruction-Set-Computer (RISC) -Mikroprozessor , Very-Long-Instruction-Word (VLIW) -Mikroprozessor sein, oder ein Prozessor, der andere Anweisungssätze implementiert, oder Prozessoren, die eine Kombination von Anweisungssätzen implementieren. Das Verarbeitungsgerät 1102 kann auch ein oder mehrere Spezialverarbeitungsgeräte sein, wie zum Beispiel ein Application-Specific-Integrated-Circuit (ASIC), ein Field-Programmable-Gate-Array (FPGA), ein Digital-Signal-Processor (DSP), ein Netzwerkprozessor oder dergleichen. In einer Ausführungsform kann das Verarbeitungsgerät 1102 einen oder mehrere Prozessorkerne beinhalten. Das Verarbeitungsgerät 1102 ist dazu konfiguriert, Verarbeitungslogik 1126 zum Ausführen der hierin diskutierten Operationen auszuführen.
  • In einer Ausführungsform kann das Verarbeitungsgerät 1102 Teil des Datenverarbeitungssystems 100 von 1 sein. Alternativ kann das Datenverarbeitungssystem 1100 andere Komponenten als hierin beschrieben beinhalten. Es sollte klargestellt werden, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann, und dies in einer Vielzahl von Arten tun kann, einschließlich Zeitscheiben-Multithreading, gleichzeitiges Multithreading (wobei ein einzelner physikalischer Kern einen logischen Kern für alle Threads bereitstellt, für die dieser physikalische Kern ein gleichzeitiges Multithreading durchführt) oder einer Kombination davon (zum Beispiel Zeitscheiben-Abholen und Decodieren und gleichzeitiges Multithreading danach, wie zum Beispiel bei der Intel® Hyperthreading-Technologie).
  • Das Datenverarbeitungssystem 1100 kann ferner Netzwerkschnittstellengerät 1118 beinhalten, das kommunikativ mit Netzwerk 1119 gekoppelt ist. Das Datenverarbeitungssystem 1100 kann auch Videoanzeigegerät 1110 (zum Beispiel ein Liquid-Crystal-Display (LCD) oder eine Cathode-Ray-Tube (CRT)), alphanumerisches Eingabegerät 1110 (zum Beispiel eine Tastatur), Cursorsteuerungsgerät 1114 (zum Beispiel eine Maus), Signalerzeugungsgerät 1120 (zum Beispiel einen Lautsprecher) oder andere Peripheriegeräte beinhalten. Darüber hinaus kann das Datenverarbeitungssystem 1100 Grafikverarbeitungseinheit 1122, Videoverarbeitungseinheit 1128 und Audioverarbeitungseinheit 1132 beinhalten. In einer anderen Ausführungsform kann das Datenverarbeitungssystem 1100 einen Chipsatz (nicht veranschaulicht) beinhalten, der sich auf eine Gruppe integrierter Schaltungen oder Chips bezieht, die für die Arbeit mit dem Verarbeitungsgerät 1102 ausgelegt sind, und der die Kommunikationen zwischen dem Verarbeitungsgerät 1102 und externen Geräten steuert. Zum Beispiel kann der Chipsatz ein Satz von Chips auf einer Hauptplatine sein, die das Verarbeitungsgerät 1102 mit Geräten mit sehr hoher Geschwindigkeit, wie zum Beispiel dem Hauptspeicher 1104 und Grafiksteuerungen, verbinden, sowie das Verarbeitungsgerät 1102 mit Peripheriebussen mit niedrigerer Geschwindigkeit von Peripheriegeräten, wie zum Beispiel USB-, PCI- oder ISA-Bussen, verbindet.
  • Das Datenspeicherungsgerät 1118 kann computerlesbares Speicherungsmedium 1124 beinhalten, auf dem Software 1126 gespeichert ist, die irgendeine oder mehrere Methodiken der hierin beschriebenen Funktionen verkörpert. Die Software 1126 kann sich auch ganz oder mindestens teilweise in dem Hauptspeicher 1104 als Anweisungen 1126 und/oder in dem Verarbeitungsgerät 1102 als Verarbeitungslogik während ihrer Ausführung durch das Datenverarbeitungssystem 1100 befinden; der Hauptspeicher 1104 und das Verarbeitungsgerät 1102 bilden ebenfalls computerlesbare Speicherungsmedien.
  • Das computerlesbare Speicherungsmedium 1124 kann auch zum Speichern der Anweisungen 1126 unter Verwendung des Verarbeitungsgeräts 1102, wie zum Beispiel in Bezug auf die 1 und 2 beschrieben, und/oder einer Softwarebibliothek, die Verfahren enthält, die die obigen Anwendungen aufrufen, verwendet werden. Während das computerlesbare Speicherungsmedium 1124 in einer beispielhaften Ausführungsform als ein einzelnes Medium gezeigt ist, sollte der Begriff „computerlesbares Speicherungsmedium“ so erfasst werden, dass er ein einzelnes Medium oder mehrere Medien (zum Beispiel eine zentralisierte oder verteilte Datenbank und/oder zugehörige Caches und Server) beinhaltet, die einen oder mehrere Anweisungssätze speichern. Der Begriff „computerlesbares Speicherungsmedium“ soll auch so erfasst werden, dass er jegliches Medium beinhaltet, das dazu geeignet ist, einen Anweisungssatz zur Ausführung durch die Maschine zu speichern, zu codieren oder zu tragen, und das die Maschine dazu veranlasst, irgendeine oder mehrere der Methodiken der vorliegenden Ausführungsformen auszuführen. Der Begriff „computerlesbares Speicherungsmedium“ soll dementsprechend so erfasst werden, dass er Festkörperspeicher und optische und magnetische Medien beinhaltet, jedoch nicht darauf beschränkt ist.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist ein Prozessor, der Folgendes umfasst: 1) ein Register zum Speichern eines Bussperren-Deaktivierungs-Bits; und 2) eine Ausführungseinheit zum Ausführen von Anweisungen, wobei die Ausführungseinheit:
    1. a) eine Anweisung empfangen soll, die eine Speicherzugriffsanforderung beinhaltet; b) bestimmen soll, dass die Speicherzugriffsanforderung das Erlangen einer Bussperre erfordert; und c) als Reaktion auf das Erkennen, dass das Bussperren-Deaktivierungs-Bit anzeigt, dass Bussperren deaktiviert sind, einen Fehler an ein Betriebssystem signalisieren soll.
  • In Beispiel 2 den Prozessor von Beispiel 1, wobei der Fehler ein allgemeiner Schutzfehler ist.
  • In Beispiel 3 den Prozessor von Beispiel 1, wobei das Register ein Model-Specific-Register ist.
  • In Beispiel 4 den Prozessor von Beispiel 1, wobei die Ausführungseinheit ferner die Ausführung der Anweisung beenden soll, als Reaktion auf das Erkennen, dass das Bussperren-Deaktivierungs-Bit aktiviert ist.
  • In Beispiel 5 den Prozessor von Beispiel 1, wobei die Ausführungseinheit ferner, als Reaktion auf den Fehler, einen Fehlerhandhaber des Betriebssystems ausführen soll, um: a) Speicherzugriffe durch andere Agenten zu deaktivieren; und b) die Ausführung der Anweisung zu emulieren, ohne dass eine Bussperre erforderlich ist.
  • In Beispiel 6 den Prozessor von Beispiel 1, wobei die Speicherzugriffsanforderung eine gesperrte Operation zu einem nicht zwischenspeicherbaren Speicher umfasst.
  • In Beispiel 7 den Prozessor von Beispiel 1, wobei die Speicherzugriffsanforderung eine gesperrte Operation umfasst, die mehrere Cache-Zeilen überspannt.
  • In Beispiel 8 den Prozessor von Beispiel 1, wobei die Speicherzugriffsanforderung einen Seitenlauf von einer Seitentabelle in einem nicht zwischenspeicherbaren Speicher umfasst.
  • Verschiedene Ausführungsformen können unterschiedliche Kombinationen der oben beschriebenen strukturellen Merkmale haben. Beispielsweise können alle optionalen Merkmale des oben beschriebenen Datenverarbeitungssystems auch in Bezug auf das hierin beschriebene Verfahren oder den Prozess implementiert werden, und Besonderheiten in den Beispielen können irgendwo in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 9 ist ein System-on-a-Chip (SoC), das Folgendes umfasst: 1) einen Speicher zum Speichern einer Virtual-Machine-Control-Structure (VMCS); und 2) einen mit dem Speicher gekoppelten Kern, wobei der Kern Anweisungen einer virtuellen Maschine (VM) ausführen soll, und wobei der Kern einen Virtual-Machine-Monitor (VMM) ausführen soll, um a) den Eintritt in die und das Verlassen der virtuellen Maschine zu steuern, wobei der Kern ferner: b) Ausführungssteuerungsanweisungen für VM-Erweiterungen ausführen soll, um eine Bedingung in Bezug auf die Ausführung der virtuellen Maschine zu erkennen, die das Erlangen einer Bussperre erfordert; und c) als Reaktion auf das Erkennen, dass ein Bit zum Verlassen der Bussperre durch ein Feld der VMCS aktiviert ist, ein VM-Verlassen zu dem VMM ausführen soll, um der Ausführung der virtuellen Maschine anstelle des Erlangens der Bussperre zuvorzukommen.
  • In Beispiel 10 das SoC von Beispiel 9, wobei die Bedingung eine Speicherzugriffsanforderung der virtuellen Maschine umfasst, die das Erlangen der Bussperre erfordert.
  • In Beispiel 11 das SoC von Beispiel 9, wobei der Kern ferner das Erlangen einer Bussperre als einen Grund für das VM-Verlassen in der VMCS speichern soll.
  • In Beispiel 12 das SoC von Beispiel 9, wobei das VM-Verlassen Vorrang vor dem Signalisieren eines Fehlers oder einer Ausnahme an ein Betriebssystem der virtuellen Maschine hat.
  • In Beispiel 13 das SoC von Beispiel 9, wobei der Kern ferner: a) aus einem Bussperren-Richtlinien-Bit der VMCS eine Richtlinie zum Verlassen der Bussperre, die eine Schwellenanzahl zulässiger Bussperren definiert, abrufen soll; und b) das VM-Verlassen der virtuellen Maschine zu dem VMM als Reaktion auf den Empfang einer Anforderung für eine Bussperre, die den Schwellenwert zulässiger Bussperren überschreitet, ausführen soll.
  • Verschiedene Ausführungsformen können unterschiedliche Kombinationen der oben beschriebenen strukturellen Merkmale haben. Beispielsweise können alle optionalen Merkmale der oben beschriebenen Prozessoren und Verfahren auch in Bezug auf ein hierin beschriebenes System implementiert werden, und Besonderheiten in den Beispielen können irgendwo in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 14 ist ein System, das Folgendes umfasst: a) einen Speicher zum Speichern einer Virtual-Machine-Control-Structure (VMCS); und b) einen mit dem Speicher gekoppelten Prozessor, wobei der Prozessor Anweisungen einer virtuellen Maschine (VM) ausführen soll, und wobei der Prozessor a) einen Virtual-Machine-Monitor (VMM) ausführen soll, um die virtuelle Maschine zu verwalten; wobei der Prozessor ferner: b) Ausführungssteuerungsanweisungen für VM-Erweiterungen ausführen soll, um einen Speicherzugriff als Reaktion auf die Ausführung einer Anweisung in der virtuellen Maschine zu erkennen, die das Erlangen einer Bussperre erfordert; und c) als Reaktion auf das Erkennen, dass ein Bit zum Verlassen der Bussperre in der VMCS aktiviert ist, ein VM-Verlassen zu dem VMM ausführen soll, um der Ausführung der virtuellen Maschine anstelle des Erlangens der Bussperre zuvorzukommen.
  • In Beispiel 15 das System von Beispiel 14, wobei der Prozessor ferner das Erlangen einer Bussperre als einen Grund für das VM-Verlassen in der VMCS speichern soll.
  • In Beispiel 16 das System von Beispiel 14, wobei das VM-Verlassen Vorrang vor dem Signalisieren eines Fehlers oder einer Ausnahme an ein Betriebssystem der virtuellen Maschine hat.
  • In Beispiel 17 das System von Beispiel 14, wobei der Prozessor ferner: a) aus einem Bussperren-Richtlinien-Bit der VMCS eine Richtlinie zum Verlassen der Bussperre, die eine Schwellenanzahl zulässiger Bussperren definiert, abrufen soll; und b) das VM-Verlassen der virtuellen Maschine zu dem VMM als Reaktion auf das Empfangen einer Anforderung für eine Bussperre, die den Schwellenwert zulässiger Bussperren überschreitet, ausführen soll.
  • Verschiedene Ausführungsformen können unterschiedliche Kombinationen der oben beschriebenen strukturellen Merkmale haben. Beispielsweise können alle optionalen Merkmale der oben beschriebenen Prozessoren auch in Bezug auf ein hierin beschriebenes System implementiert werden, und Besonderheiten in den Beispielen können irgendwo in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 18 ist ein Verfahren, das Folgendes umfasst: a) Empfangen, durch die Ausführungseinheit eines Prozessors, einer Anweisung, die eine Speicherzugriffsanforderung erzeugt, b) Bestimmen, durch die Ausführungseinheit, dass die Speicherzugriffsanforderung das Erlangen einer Bussperre erfordert; und c) als Reaktion auf das Bestimmen, dass ein Bussperren-Deaktivierungs-Bit in einem Register aktiviert ist, Übertragen, durch die Ausführungseinheit, eines Fehlers an ein Betriebssystem.
  • In Beispiel 19 das Verfahren von Beispiel 18, wobei der Fehler ein allgemeiner Schutzfehler ist.
  • In Beispiel 20 das Verfahren von Beispiel 18, das ferner das Beenden, durch die Ausführungseinheit, der Ausführung der Anweisung umfasst, als Reaktion auf das Erkennen, dass das Bussperren-Deaktivierungs-Bit aktiviert ist.
  • In Beispiel 21 das Verfahren von Beispiel 18, das ferner, als Reaktion auf den Fehler, das Ausführen eines Fehlerhandhabers umfasst, um: a) Speicherzugriffe durch andere Agenten zu deaktivieren; und b) die Ausführung der Anweisung zu emulieren, ohne dass eine Bussperre erforderlich ist.
  • In Beispiel 22 das Verfahren von Beispiel 18, das ferner, als Reaktion auf das Bestimmen, dass die Speicherzugriffsanforderung von einer virtuellen Maschine (VM) stammt, und dass ein Bit zum Verlassen der Bussperre innerhalb einer Virtual-Machine-Control-Structure (VMCS) der VM aktiviert ist, das Ausführen eines VM-Verlassens der virtuellen Maschine zu einem Virtual-Machine-Monitor (VMM) umfasst, um der Ausführung der VM anstelle des Erlangens der Bussperre zuvorzukommen.
  • In Beispiel 23 das Verfahren von Beispiel 22, das ferner das Speichern des Erlangens einer Bussperre als einen Grund für das VM-Verlassen in der VMCS umfasst.
  • In Beispiel 24 das Verfahren von Beispiel 22, wobei das Signalisieren eines Segmentierungsfehlers oder eines Paging-bezogenen Fehlers an ein Betriebssystem der virtuellen Maschine Vorrang vor dem Ausführen des VM-Verlassens hat.
  • In Beispiel 25 das Verfahren von Beispiel 22, das ferner Folgendes umfasst: a) Empfangen, von dem VMM, einer Richtlinie zum Verlassen der Bussperre, die eine Schwellenanzahl zulässiger Bussperren pro Sekunde definiert; und b) Ausführen des VM-Verlassens der virtuellen Maschine zu dem VMM als Reaktion auf das Erkennen von mehr als der Schwellenanzahl der pro Sekunde zulässigen Bussperren.
  • Während die vorliegende Offenbarung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, werden Fachleute zahlreiche Modifikationen und Variationen davon anerkennen. Es ist beabsichtigt, dass die angehängten Ansprüche alle solchen Modifikationen und Variationen, wie sie in den wahren Geist und Umfang dieser vorliegenden Offenbarung fallen, abdecken.
  • In der Beschreibung hierin werden zahlreiche spezifische Details dargelegt, wie zum Beispiel Beispiele spezifischer Prozessortypen und Systemkonfigurationen, spezifischer Hardware-Strukturen, spezifischer architektureller und mikroarchitektureller Details, spezifischer Registerkonfigurationen, spezifischer Anweisungstypen, spezifischer Systemkomponenten, spezifischer Messungen/Höhen, spezifischer Prozessor-Pipelinestufen und -Betriebe, usw., um ein sorgfältiges Verständnis der vorliegenden Offenbarung bereitzustellen. Es wird jedoch für den Fachmann ersichtlich sein, dass diese spezifischen Details nicht eingesetzt werden müssen, um die vorliegende Offenbarung zu praktizieren. In anderen Fällen wurden gut bekannte Komponenten oder Verfahren, wie zum Beispiel spezifische und alternative Prozessorarchitekturen, spezifische Logikschaltungen/-code für beschriebene Algorithmen, spezifischer Firmware-Code, spezifischer Verbindungsbetrieb, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -Materialien, spezifische Compiler-Implementierungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Abschalt- und Gattertechniken/-Logik und andere spezifische Betriebsdetails von Computersystemen, nicht detailliert beschrieben, um unnötiges Verschleiern der vorliegenden Offenbarung zu vermeiden.
  • Die Ausführungsformen werden unter Bezugnahme auf das Bestimmen der Gültigkeit von Daten in Cache-Zeilen eines sektorbasierten Caches in spezifischen integrierten Schaltungen, wie zum Beispiel in Datenverarbeitungsplattformen oder Mikroprozessoren, beschrieben. Die Ausführungsformen können auch auf andere Typen von integrierten Schaltungen und programmierbaren Logikgeräten anwendbar sein. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder tragbare Computer, wie zum Beispiel die Intel® Ultrabooks™ -Computer, beschränkt. Und können auch in anderen Geräten, wie zum Beispiel Handheld-Geräten, Tablets, anderen dünnen Notebooks, System-on-a-Chip (SoC) -Geräten, und eingebetteten Anwendungen verwendet werden. Manche Beispiele für Handheld-Geräte beinhalten Mobiltelefone, Internetprotokollgeräte, Digitalkameras, Personal-Digital-Assistants (PDA) und Handheld-PC. Eingebettete Anwendungen beinhalten typischerweise einen Mikro-Controller, einen Digital-Signal-Processor (DSP), ein System-on a-Chip, Network-Computer (NetPC), Set-Top-Boxen, Network-Hubs, Wide-Area-Network (WAN) -Schalter, oder jegliches andere System, das die unten gelehrten Funktionen und Operationen ausführen kann. Es wird beschrieben, dass das System jegliche Art von Computer oder eingebettetem System sein kann. Die offenbarten Ausführungsformen können insbesondere für Low-End-Geräte wie tragbare Geräte (zum Beispiel Uhren), elektronische Implantate, Sensor- und Steuerungsinfrastrukturgeräte, Steuerungen, Supervisory-Control-and-Data-Acquisition (SCADA) - Systeme oder dergleichen verwendet werden. Außerdem sind die hierin beschriebenen Vorrichtungen und Systeme nicht auf physikalische Datenverarbeitungsgeräte beschränkt, sondern können sich auch auf Softwareoptimierungen zur Energieerhaltung und -Effizienz beziehen. Wie in der Beschreibung unten ohne Weiteres ersichtlich wird, sind die hierin beschriebenen Ausführungsformen von Vorrichtungen und Systemen (ob mit Bezug auf Hardware, Firmware, Software oder einer Kombination davon) für eine mit Leistungserwägungen ausgewogene Zukunft einer ,grünen Technologie' unverzichtbar.
  • Obwohl die Ausführungsformen hierin unter Bezugnahme auf einen Prozessor beschrieben sind, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikgeräten anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen der vorliegenden Offenbarung können auf andere Typen von Schaltungen oder Halbleitergeräten angewendet werden, die von höherem Pipeline-Durchsatz und verbesserter Leistung profitieren können. Die Lehren von Ausführungsformen der vorliegenden Offenbarung sind auf jeglichen Prozessor oder jegliche Maschine anwendbar, die Datenmanipulationen ausführt. Die vorliegende Offenbarung ist jedoch nicht auf Prozessoren oder Maschinen beschränkt, die 512-Bit-, 256-Bit-, 128-Bit-, 64-Bit-, 32-Bit- oder 16-Bit-Datenoperationen ausführen, und kann auf jeglichen Prozessor und jegliche Maschine angewendet werden, bei der Datenmanipulation oder - Verwaltung ausgeführt wird. Zusätzlich stellt die Beschreibung hierin Beispiele bereit, und die beigefügten Zeichnungen zeigen verschiedene Beispiele zu Zwecken der Veranschaulichung. Diese Beispiele sollten jedoch nicht in einem einschränkenden Sinne ausgelegt werden, da sie lediglich Beispiele für Ausführungsformen der vorliegenden Offenbarung bereitstellen sollen, anstatt eine erschöpfende Liste aller möglichen Implementierungen von Ausführungsformen der vorliegenden Offenbarung bereitzustellen.
  • Obwohl die obigen Beispiele die Handhabung und Verteilung von Anweisungen in dem Zusammenhang mit Ausführungseinheiten und Logikschaltungen beschreiben, können andere Ausführungsformen der vorliegenden Offenbarung durch Daten oder Anweisungen erfüllt werden, die auf einem maschinenlesbaren, materiellen Medium gespeichert sind, die, wenn durch eine Maschine ausgeführt, die Maschine dazu veranlassen, Funktionen auszuführen, die mit mindestens einer Ausführungsform der Offenbarung übereinstimmen. In einer Ausführungsform sind Funktionen, die Ausführungsformen der vorliegenden Offenbarung zugeordnet sind, in maschinenausführbaren Anweisungen verkörpert. Die Anweisungen können dazu verwendet werden, einen Mehrzweck- oder Spezialprozessor, der mit den Anweisungen programmiert ist, dazu zu veranlassen, die Schritte der vorliegenden Offenbarung auszuführen. Ausführungsformen der vorliegenden Offenbarung können als ein Computerprogrammprodukt oder Software bereitgestellt werden, die eine Maschine oder ein computerlesbares Medium beinhalten kann, auf dem Anweisungen gespeichert sind, die zum Programmieren eines Computers (oder anderer elektronischer Geräte) verwendet werden können, um eine oder mehrere Operationen gemäß Ausführungsformen der vorliegenden Offenbarung auszuführen. Alternativ könnten Operationen von Ausführungsformen der vorliegenden Offenbarung durch spezifische Hardwarekomponenten, die eine Logik mit fester Funktion zum Ausführen der Operationen enthalten, oder durch jegliche Kombination von programmierten Computerkomponenten und Hardwarekomponenten mit fester Funktion ausgeführt werden.
  • Zum Programmieren von Logik verwendete Anweisungen, um Ausführungsformen der Offenbarung auszuführen, können in einem Speicher in dem System, wie zum Beispiel DRAM, Cache, Flash-Speicher, oder anderer Speicherung gespeichert werden. Darüber hinaus können die Anweisungen über ein Netzwerk oder durch andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium jeglichen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die durch eine Maschine (zum Beispiel einen Computer) lesbar ist, beinhalten, ist jedoch nicht beschränkt auf Floppy Disks, optische Disks, Compact-Disk-Read-Only-Memory (CD-ROM) und magneto-optische Disks, Read-Only-Memory (ROM), Random-Access-Memory (RAM), Erasable-Programmable-Read-Only-Memory(EPROM), Electrically-Erasable-Programmable-Read-Only-Memory (EEPROM), magnetische oder optische Karten, Flash-Speicher oder eine materielle, maschinenlesbare Speicherung, die bei der Informationsübertragung über das Internet über elektrische, optische, akustische oder andere Formen von verbreiteten Signalen (zum Beispiel Trägerwellen, Infrarotsignale, Digitalsignale, usw.) verwendet wird. Dementsprechend beinhaltet das computerlesbare Medium jeglichen Typ von materiellem maschinenlesbarem Medium, das zum Speichern oder Übertragen elektronischer Anweisungen oder Informationen in einer durch eine Maschine (zum Beispiel einen Computer) lesbaren Form geeignet ist.
  • Ein Design kann verschiedene Phasen durchlaufen, von Erzeugung über Simulation bis Herstellung. Daten, die ein Design darstellen, können das Design auf mehrfache Weise darstellen. Erstens kann die Hardware, wie es in Simulationen nützlich ist, durch Verwenden einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zusätzlich kann in einigen Phasen des Design-Prozesses ein Modell auf Schaltungsebene mit Logik- und/oder Transistorgattern produziert werden. Darüber hinaus erreichen die meisten Designs in einer gewissen Phase ein Datenniveau, das die physikalische Platzierung verschiedener Geräte in dem Hardware-Modell darstellt. In dem Fall, bei dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die das Vorhandensein oder das Nichtvorhandensein verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken, die zum Produzieren der integrierten Schaltung verwendet werden, spezifizieren. In jeglicher Darstellung des Designs können die Daten in jeglicher Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder eine magnetische oder optische Speicherung, wie zum Beispiel eine Disk, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder anderweitig erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder das Design angibt oder trägt, in dem Ausmaß, in dem Kopieren, Puffern oder Neuübertragung des elektrischen Signals ausgeführt wird, übertragen wird, wird eine neue Kopie gemacht. Somit kann ein Kommunikationsanbieter oder ein Netzwerkanbieter auf einem materiellen, maschinenlesbaren Medium mindestens zeitweise einen Artikel, wie zum Beispiel in eine Trägerwelle codierte Informationen, die Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpern, speichern.
  • Ein Modul, wie hierin verwendet, bezieht sich auf jegliche Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel beinhaltet ein Modul Hardware, wie zum Beispiel einen Mikro-Controller, der einem nichtflüchtigen Medium zugeordnet ist, zum Speichern von Code, der dazu angepasst ist, durch den Mikro-Controller ausgeführt zu werden. Daher bezieht sich eine Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die spezifisch dazu konfiguriert ist, den Code, der auf einem nichtflüchtigen Medium gehalten werden soll, zu erkennen und/oder auszuführen. Weiterhin bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf das nichtflüchtige Medium einschließlich des Codes, das spezifisch dazu angepasst ist, durch den Mikro-Controller ausgeführt zu werden, um vorgegebene Operationen auszuführen. Und wie gefolgert werden kann, kann sich in noch einer weiteren Ausführungsform der Begriff Modul (in diesem Beispiel) auf die Kombination des Mikro-Controllers und des nichtflüchtigen Mediums beziehen. Oft variieren als separat veranschaulichte Modulgrenzen üblicherweise, und überlappen sich möglicherweise. Zum Beispiel können ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon teilen, während möglicherweise eine unabhängige Hardware, Software oder Firmware beibehalten wird. In einer Ausführungsform beinhaltet die Verwendung des Begriffs Logik Hardware, wie zum Beispiel Transistoren, Register, oder andere Hardware, wie zum Beispiel programmierbare Logikgeräte.
  • Die Verwendung der Phrase ,dazu konfiguriert, in einer Ausführungsform bezieht sich auf das Anordnen, Zusammenstellen, Herstellen, zum Verkauf anbieten, Importieren und/oder Designen einer Vorrichtung, von Hardware, Logik oder einem Element, um eine ausgewiesene oder bestimmte Aufgabe auszuführen. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die/das nicht betrieben wird, immer noch dazu konfiguriert', eine ausgewiesene Aufgabe auszuführen, wenn sie/es designt, gekoppelt und/oder verbunden ist, um die ausgewiesene Aufgabe auszuführen. Als ein rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter, das ,dazu konfiguriert' ist, ein Aktivierungssignal an einen Taktgeber bereitzustellen, beinhaltet nicht jedes potentielle Logikgatter, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das auf eine Weise gekoppelt ist, dass während des Betriebs die Ausgabe von 1 oder 0 den Taktgeber aktivieren soll. Es ist erneut zu beachten, dass die Verwendung des Begriffs dazu konfiguriert' keinen Betrieb erfordert, sondern sich stattdessen auf den latenten Zustand einer Vorrichtung, von Hardware und/oder eines Elements fokussiert, wobei in dem latenten Zustand die Vorrichtung, Hardware und/oder das Element dazu designt sind, eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, Hardware und/oder das Element arbeiten.
  • Darüber hinaus bezieht sich die Verwendung der Phrasen ,um zu', ,dazu geeignet' und/oder betreibbar, um' in einer Ausführungsform auf eine Vorrichtung, Logik, Hardware und/oder ein Element, die/das auf eine solche Weise designt ist, die Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements auf eine spezifizierte Weise zu ermöglichen. Wie oben ist zu beachten, dass sich eine Verwendung von ,um zu', ,dazu geeignet' oder ,betreibbar, um' in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements bezieht, wobei die Vorrichtung, Logik, Hardware und/oder das Element nicht arbeitet, aber auf eine solche Weise designt ist, die Verwendung einer Vorrichtung auf eine spezifizierte Weise zu ermöglichen.
  • Ein Wert, wie hierin verwendet, beinhaltet jegliche bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder von logischen Werten auch als 1 und 0 bezeichnet, was einfach binäre Logikzustände repräsentiert. Zum Beispiel bezieht sich 1 auf einen hohen Logikpegel, und 0 bezieht sich auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherungszelle, wie zum Beispiel eine Transistor- oder Flash-Zelle, zum Halten eines einzelnen logischen Werts oder mehrerer logischer Werte geeignet sein. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als ein Binärwert von 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Deshalb beinhaltet ein Wert jegliche Darstellung von Informationen, die in einem Computersystem gehalten werden kann.
  • Darüber hinaus können Zustände durch Werte oder Abschnitte von Werten repräsentiert werden. Als ein Beispiel kann ein erster Wert, wie zum Beispiel eine logische Eins, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, wie zum Beispiel eine logische Null, einen nicht standardmäßigen Zustand darstellen kann. Zusätzlich beziehen sich die Begriffe Reset und Set in einer Ausführungsform jeweils auf einen Standard- bzw. einen aktualisierten Wert oder Zustand. Zum Beispiel beinhaltet ein Standardwert potentiell einen hohen logischen Wert, das heißt Reset, während ein aktualisierter Wert potentiell einen niedrigen logischen Wert, das heißt Set, beinhaltet. Es ist zu beachten, dass jegliche Kombination von Werten verwendet werden kann, um jegliche Anzahl von Zuständen darzustellen.
  • Die oben dargelegten Ausführungsformen von Hardware, Software, Firmware oder Code können über Anweisungen oder Code implementiert werden, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind, die durch ein Verarbeitungselement ausgeführt werden können. Ein nichtflüchtiges maschinenzugängliches/-lesbares Medium beinhaltet jeglichen Mechanismus, der Informationen in einer durch eine Maschine, wie zum Beispiel einen Computer oder ein elektronisches System, lesbaren Form bereitstellt (das heißt speichert und/oder überträgt). Zum Beispiel beinhaltet ein nichtflüchtiges, maschinenzugängliches Medium Random-Access-Memory (RAM), wie zum Beispiel Static-RAM (SRAM) oder Dynamic-RAM (DRAM); ROM; magnetisches oder optisches Speicherungsmedium; Flash-Speichergeräte; elektrische Speicherungsgeräte; optische Speicherungsgeräte; akustische Speicherungsgeräte; andere Formen von Speicherungsgeräten zum Halten von Informationen, die von flüchtigen (verbreiteten) Signalen (zum Beispiel Trägerwellen, Infrarotsignalen, Digitalsignalen), usw., empfangen werden, die von den nichtflüchtigen Medien unterschieden werden müssen, die Informationen davon empfangen können.
  • Zum Programmieren von Logik verwendete Anweisungen, um Ausführungsformen der Offenbarung auszuführen, können in einem Speicher in dem System, wie zum Beispiel DRAM, Cache, Flash-Speicher, oder anderer Speicherung gespeichert werden. Darüber hinaus können die Anweisungen über ein Netzwerk oder durch andere computerlesbare Medien verbreitet werden. Somit kann ein maschinenlesbares Medium jeglichen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die durch eine Maschine (zum Beispiel einen Computer) gelesen werden kann, beinhalten, ist jedoch nicht beschränkt auf Floppy Disks, optische Disks, Compact-Disk-Read-Only-Memory (CD-ROM) und magneto-optische Disks, Read-Only-Memory (ROM), Random-Access-Memory (RAM), Erasable-Programmable-Read-Only-Memory(EPROM), Electrically-Erasable-Programmable-Read-Only-Memory (EEPROM), magnetische oder optische Karten, Flash-Speicher oder eine materielle, maschinenlesbare Speicherung, die bei der Informationsübertragung über das Internet über elektrische, optische, akustische oder andere Formen von verbreiteten Signalen (zum Beispiel Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet wird. Dementsprechend beinhaltet das computerlesbare Medium jeglichen Typ von materiellem maschinenlesbarem Medium, das zum Speichern oder Übertragen elektronischer Anweisungen oder Informationen in einer durch eine Maschine (zum Beispiel einen Computer) lesbaren Form geeignet ist.
  • Bezugnahme über diese Spezifikation hinweg auf „(genau) eine Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein in Verbindung mit der Ausführungsform beschriebenes bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit beziehen sich die Erscheinungen der Phrasen „in (genau) einer Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen über diese Spezifikation hinweg nicht alle notwendigerweise auf dieselbe Ausführungsform. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Eigenschaften auf jegliche geeignete Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorstehenden Spezifikation wurde eine detaillierte Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gegeben. Es wird jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran gemacht werden können, ohne von dem breiteren Geist und Umfang der Offenbarung, wie in den beigefügten Ansprüchen dargelegt, abzuweichen. Die Spezifikation und die Zeichnungen sind dementsprechend eher in einem veranschaulichenden Sinn als in einem beschränkenden Sinn zu betrachten. Darüber hinaus bezieht sich die vorstehende Verwendung von Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, kann sich aber auf unterschiedliche und spezielle Ausführungsformen sowie potenziell auf dieselbe Ausführungsform beziehen.
  • Einige Abschnitte der detaillierten Beschreibung werden in Form von Algorithmen und symbolischen Darstellungen von Operationen an Daten-Bits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die durch Fachleute der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit anderen Fachleuten am effektivsten zu vermitteln. Ein Algorithmus wird hier und allgemein als eine selbst konsistente Sequenz von Operationen betrachtet, die zu einem angestrebten Ergebnis führt. Die Operationen sind jene, die physikalische Manipulationen physikalischer Größen erfordern. Üblicherweise, jedoch nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die dazu geeignet sind, gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert zu werden. Es hat sich bisweilen, hauptsächlich aus Gründen der üblichen Verwendung, als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen. Die hierin beschriebenen Blöcke können Hardware, Software, Firmware oder eine Kombination davon sein.
  • Es sollte jedoch berücksichtigt werden, dass alle diese und ähnliche Begriffe den geeigneten physikalischen Größen zugeordnet werden müssen, und lediglich auf diese Größen angewendete zweckmäßige Etiketten sind. Sofern aus der obigen Diskussion nicht ausdrücklich etwas anderes hervorgeht, wird davon ausgegangen, dass über die Beschreibung hinweg Diskussionen, bei denen Begriffe, wie zum Beispiel „Definieren“, „Empfangen“, „Bestimmen“, „Ausstellen“, „Verbinden“ , „Assoziieren“, „Erhalten“, „Authentifizieren“, „Verhindern“, „Ausführen“, „Anfordern“, „Kommunizieren“, oder dergleichen verwendet werden, sich auf die Aktionen und Prozesse eines Datenverarbeitungssystems oder eines ähnlichen elektronischen Datenverarbeitungsgeräts beziehen, das die als physikalische (zum Beispiel elektronische) Größen dargestellten Daten in den Registern und Speichern des Datenverarbeitungssystems in andere Daten, die in ähnlicher Weise als physikalische Größen in den Speichern oder Registern des Datenverarbeitungssystems oder anderen solchen Informationsspeicherungs-, Übertragungs- oder Anzeigegeräten dargestellt sind, manipuliert und transformiert .
  • Die Wörter „Beispiel“ oder „beispielhaft“ werden hierin so verwendet, dass sie als ein Beispiel, ein Fall oder eine Veranschaulichung dienend bedeuten. Jeglicher hierin als „Beispiel“ oder „beispielhaft“ beschriebener Aspekt oder Design ist nicht notwendigerweise als bevorzugt oder vorteilhaft gegenüber anderen Aspekten oder Designs auszulegen. Vielmehr soll die Verwendung der Wörter „Beispiel“ oder „beispielhaft“ Konzepte in einer konkreten Weise darstellen. Wie in dieser Anmeldung verwendet, soll der Begriff „oder“ eher ein einschließendes „oder“ als ein ausschließendes „oder“ bedeuten. Das heißt, sofern nicht anderweitig spezifiziert oder von dem Kontext klar, soll „X beinhaltet A oder B“ jegliche der natürlichen einschließenden Permutationen bedeuten. Das heißt, wenn X beinhaltet A; X beinhaltet B; oder X beinhaltet sowohl A als auch B, dann ist „X beinhaltet A oder B“ unter jeglichem der vorstehenden Fälle erfüllt. Zusätzlich sollten die Artikel „ein“ und „eine“, wie in dieser Anmeldung und den beigefügten Ansprüchen verwendet, im Allgemeinen so ausgelegt werden, dass sie „ein oder mehrere“ bedeuten, sofern sie nicht anderweitig spezifiziert oder von dem Kontext klar auf eine einzelne Form ausgerichtet sind. Darüber hinaus soll die Verwendung des Begriffs „eine Ausführungsform“ oder „(genau) eine Ausführungsform“ oder „eine Implementierung“ oder „(genau) eine Implementierung“ nicht dieselbe Ausführungsform oder Implementierung bedeuten, sofern sie nicht als solche beschrieben wird. Auch die hierin verwendeten Begriffe „erster“, „zweiter“, „dritter“, „vierter“ usw. sind als Bezeichnungen zur Unterscheidung zwischen unterschiedlichen Elementen gedacht, und müssen gemäß ihrer numerischen Bezeichnung nicht notwendigerweise eine ordinale Bedeutung haben.

Claims (17)

  1. Prozessor, der Folgendes umfasst: ein Register zum Speichern eines Bussperren-Deaktivierungs-Bits; und eine Ausführungseinheit zum Ausführen von Anweisungen, wobei die Ausführungseinheit: eine Anweisung empfangen soll, die eine Speicherzugriffsanforderung beinhaltet; bestimmen soll, dass die Speicherzugriffsanforderung das Erlangen einer Bussperre erfordert; und als Reaktion auf das Erkennen, dass das Bussperren-Deaktivierungs-Bit anzeigt, dass Bussperren deaktiviert sind, einen Fehler an ein Betriebssystem signalisieren soll.
  2. Prozessor nach Anspruch 1, wobei der Fehler ein allgemeiner Schutzfehler ist.
  3. Prozessor nach Anspruch 1, wobei das Register ein Model-Specific-Register ist.
  4. Prozessor nach Anspruch 1, wobei die Ausführungseinheit ferner die Ausführung der Anweisung beenden soll, als Reaktion auf das Erkennen, dass das Bussperren-Deaktivierungs-Bit aktiviert ist.
  5. Prozessor nach Anspruch 1, wobei die Ausführungseinheit ferner, als Reaktion auf den Fehler, einen Fehlerhandhaber des Betriebssystems ausführen soll, um: Speicherzugriffe durch andere Agenten zu deaktivieren; und die Ausführung der Anweisung zu emulieren, ohne dass eine Bussperre erforderlich ist.
  6. Prozessor nach Anspruch 1, wobei die Speicherzugriffsanforderung eine gesperrte Operation zu einem nicht zwischenspeicherbaren Speicher umfasst.
  7. Prozessor nach Anspruch 1, wobei die Speicherzugriffsanforderung eine gesperrte Operation umfasst, die mehrere Cache-Zeilen überspannt.
  8. Prozessor nach Anspruch 1, wobei die Speicherzugriffsanforderung einen Seitenlauf von einer Seitentabelle in einem nicht zwischenspeicherbaren Speicher umfasst.
  9. System-on-a-Chip (SoC), das Folgendes umfasst: einen Speicher zum Speichern einer Virtual-Machine-Control-Structure (VMCS); und einen mit dem Speicher gekoppelten Kern, wobei der Kern Anweisungen einer virtuellen Maschine (VM) ausführen soll, und wobei der Kern einen Virtual-Machine-Monitor (VMM) ausführen soll, um den Eintritt in die und das Verlassen der virtuellen Maschine zu steuern; wobei der Kern ferner: Ausführungssteuerungsanweisungen für VM-Erweiterungen ausführen soll, um eine Bedingung in Bezug auf die Ausführung der virtuellen Maschine zu erkennen, die das Erlangen einer Bussperre erfordert; und als Reaktion auf das Erkennen, dass ein Bit zum Verlassen der Bussperre durch ein Feld der VMCS aktiviert ist, ein VM-Verlassen zu dem VMM ausführen soll, um der Ausführung der virtuellen Maschine anstelle des Erlangens der Bussperre zuvorzukommen.
  10. System-on-a-Chip nach Anspruch 9, wobei die Bedingung eine Speicherzugriffsanforderung der virtuellen Maschine umfasst, die das Erlangen der Bussperre erfordert.
  11. System-on-a-Chip nach Anspruch 9, wobei der Kern ferner das Erlangen einer Bussperre als einen Grund für das VM-Verlassen in der VMCS speichern soll.
  12. System-on-a-Chip nach Anspruch 9, wobei das VM-Verlassen Vorrang vor dem Signalisieren eines Fehlers oder einer Ausnahme an ein Betriebssystem der virtuellen Maschine hat.
  13. System-on-a-Chip nach Anspruch 9, wobei der Kern ferner: aus einem Bussperren-Richtlinien-Bit der VMCS eine Richtlinie zum Verlassen der Bussperre, die eine Schwellenanzahl zulässiger Bussperren definiert, abrufen soll; und das VM-Verlassen der virtuellen Maschine zu dem VMM als Reaktion auf das Empfangen einer Anforderung für eine Bussperre, die den Schwellenwert zulässiger Bussperren überschreitet, ausführen soll.
  14. System, das Folgendes umfasst: einen Speicher zum Speichern einer Virtual-Machine-Control-Structure (VMCS); und einen mit dem Speicher gekoppelten Prozessor, wobei der Prozessor Anweisungen einer virtuellen Maschine (VM) ausführen soll, und wobei der Prozessor einen Virtual-Machine-Monitor (VMM) ausführen soll, um die virtuelle Maschine zu verwalten; wobei der Prozessor ferner: Ausführungssteuerungsanweisungen für VM-Erweiterungen ausführen soll, um einen Speicherzugriff als Reaktion auf die Ausführung einer Anweisung in der virtuellen Maschine zu erkennen, die das Erlangen einer Bussperre erfordert; und als Reaktion auf das Erkennen, dass ein Bit zum Verlassen der Bussperre in der VMCS aktiviert ist, ein VM-Verlassen zu dem VMM ausführen soll, um der Ausführung der virtuellen Maschine anstelle des Erlangens der Bussperre zuvorzukommen.
  15. System nach Anspruch 14, wobei der Prozessor ferner das Erlangen einer Bussperre als einen Grund für das VM-Verlassen in der VMCS speichern soll.
  16. System nach Anspruch 14, wobei das VM-Verlassen Vorrang vor dem Signalisieren eines Fehlers oder einer Ausnahme an ein Betriebssystem der virtuellen Maschine hat.
  17. System nach Anspruch 14, wobei der Prozessor ferner: aus einem Bussperren-Richtlinien-Bit der VMCS eine Richtlinie zum Verlassen der Bussperre, die eine Schwellenanzahl zulässiger Bussperren definiert, abrufen soll; und das VM-Verlassen der virtuellen Maschine zu dem VMM als Reaktion auf das Empfangen einer Anforderung für eine Bussperre, die den Schwellenwert zulässiger Bussperren überschreitet, ausführen soll.
DE202017007430.3U 2016-08-30 2017-07-14 Erkennen von Bussperrbedingungen und Vermeiden von Bussperren Active DE202017007430U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/251,425 US10402218B2 (en) 2016-08-30 2016-08-30 Detecting bus locking conditions and avoiding bus locks
US15/251,425 2016-08-30

Publications (1)

Publication Number Publication Date
DE202017007430U1 true DE202017007430U1 (de) 2021-06-16

Family

ID=61240714

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202017007430.3U Active DE202017007430U1 (de) 2016-08-30 2017-07-14 Erkennen von Bussperrbedingungen und Vermeiden von Bussperren

Country Status (5)

Country Link
US (2) US10402218B2 (de)
EP (1) EP3507702A4 (de)
CN (1) CN109643293B (de)
DE (1) DE202017007430U1 (de)
WO (1) WO2018044400A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240614B (zh) * 2018-08-30 2021-09-17 郑州云海信息技术有限公司 一种数据存储方法、装置及相关设备
US11669335B2 (en) * 2019-03-28 2023-06-06 Intel Corporation Secure arbitration mode to build and operate within trust domain extensions
US11301309B2 (en) * 2019-09-27 2022-04-12 Intel Corporation Apparatuses, methods, and systems for processor non-write-back capabilities
WO2022120790A1 (en) * 2020-12-11 2022-06-16 Intel Corporation Methods and apparatus to mitigate locks in real-time computing environments
CN115525596A (zh) * 2021-06-25 2022-12-27 许继电气股份有限公司 多主交换式高速互联背板总线及其控制方法、处理系统
CN114691592A (zh) * 2022-02-21 2022-07-01 阿里巴巴(中国)有限公司 处理器、控制方法、设备及介质
US11907722B2 (en) * 2022-04-20 2024-02-20 Arm Limited Methods and apparatus for storing prefetch metadata

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1151743A (en) * 1980-03-13 1983-08-09 Steven C. Andersen Serial data bus communication system
US4409656A (en) * 1980-03-13 1983-10-11 Her Majesty The Queen, In Right Of Canada As Represented By The Minister Of National Defense Serial data bus communication system
JPH02146669A (ja) * 1988-11-29 1990-06-05 Nec Corp 計算機システムの共用メモリ管理方式
EP0525308A1 (de) * 1991-07-31 1993-02-03 International Business Machines Corporation Speicherabbildung für einen Prozessor-Cache-Speicher
US6098134A (en) * 1996-12-31 2000-08-01 Compaq Computer Corp. Lock protocol for PCI bus using an additional "superlock" signal on the system bus
US6247084B1 (en) * 1997-10-08 2001-06-12 Lsi Logic Corporation Integrated circuit with unified memory system and dual bus architecture
US6323755B1 (en) * 1998-08-19 2001-11-27 International Business Machines Corporation Dynamic bus locking in a cross bar switch
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
US6430657B1 (en) * 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
WO2000051000A1 (fr) 1999-02-24 2000-08-31 Hitachi, Ltd. Systeme informatique et procede pour gerer les perturbations affectant un systeme informatique
US6587964B1 (en) * 2000-02-18 2003-07-01 Hewlett-Packard Development Company, L.P. Transparent software emulation as an alternative to hardware bus lock
US20030126454A1 (en) * 2001-12-28 2003-07-03 Glew Andrew F. Authenticated code method and apparatus
US6950913B2 (en) * 2002-11-08 2005-09-27 Newisys, Inc. Methods and apparatus for multiple cluster locking
US7356735B2 (en) * 2004-03-30 2008-04-08 Intel Corporation Providing support for single stepping a virtual machine in a virtual machine environment
FR2881239B1 (fr) 2005-01-24 2007-03-23 Meiosys Soc Par Actions Simpli Procede de gestion d'acces a des ressources partagees dans un environnement multi-processeurs
EP1902403A1 (de) * 2005-07-01 2008-03-26 Nxp B.V. Integrierte schaltung und verfahren zum sichern des zugriffs auf einen onchip-speicher
CN100399274C (zh) * 2005-09-19 2008-07-02 联想(北京)有限公司 一种虚拟机系统输入/输出设备动态分配的方法及其设备
US8291410B2 (en) * 2006-12-29 2012-10-16 Intel Corporation Controlling virtual machines based on activity state
US8561061B2 (en) * 2007-05-14 2013-10-15 Vmware, Inc. Adaptive dynamic selection and application of multiple virtualization techniques
US20120331265A1 (en) * 2011-06-24 2012-12-27 Mips Technologies, Inc. Apparatus and Method for Accelerated Hardware Page Table Walk
US9524263B2 (en) * 2012-06-29 2016-12-20 Intel Corporation Method and apparatus for bus lock assistance
US9965310B2 (en) * 2013-08-28 2018-05-08 Empire Technology Development Llc Virtual machine exit analyzer
US9594592B2 (en) 2015-01-12 2017-03-14 International Business Machines Corporation Dynamic sharing of unused bandwidth capacity of virtualized input/output adapters

Also Published As

Publication number Publication date
US20180060099A1 (en) 2018-03-01
EP3507702A4 (de) 2020-09-23
EP3507702A1 (de) 2019-07-10
CN109643293B (zh) 2024-03-01
CN109643293A (zh) 2019-04-16
US20200050471A1 (en) 2020-02-13
US10402218B2 (en) 2019-09-03
US11157303B2 (en) 2021-10-26
WO2018044400A1 (en) 2018-03-08

Similar Documents

Publication Publication Date Title
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE112017000677T5 (de) Prozessorerweiterungen zum Schutz von Stapeln während Ringübergängen
DE112015006934T5 (de) Verschachtelte Virtualisierung für virtuelle Maschinenexits
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE112016007566T5 (de) Systeme, Verfahren und Vorrichtungen zur heterogenen Berechnung
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE112013007701T5 (de) Ein-Chip-System (SOC), das Hybridprozessorkerne enthält
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
DE112017006568T5 (de) Auslegung einer Basistaktfrequenz eines Prozessors auf der Basis von Nutzungsparametern
DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
DE112013005131T5 (de) Verfahren, Vorrichtung, System zur automatischen Abstimmung von Coderegionen
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
CN112148425A (zh) 信任域架构内的信任域内部的可缩放虚拟机操作
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE112017005005T5 (de) Systeme, vorrichtungen, und verfahren zur plattformsicherheit
DE112017001704T5 (de) Arbiterbasierte Serialisierung von Prozessor-System-Management-Interrupt-Ereignissen
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung

Legal Events

Date Code Title Description
R150 Utility model maintained after payment of first maintenance fee after three years
R207 Utility model specification
R151 Utility model maintained after payment of second maintenance fee after six years