DE112017003483T5 - Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten - Google Patents

Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten Download PDF

Info

Publication number
DE112017003483T5
DE112017003483T5 DE112017003483.3T DE112017003483T DE112017003483T5 DE 112017003483 T5 DE112017003483 T5 DE 112017003483T5 DE 112017003483 T DE112017003483 T DE 112017003483T DE 112017003483 T5 DE112017003483 T5 DE 112017003483T5
Authority
DE
Germany
Prior art keywords
address
translation
physical
guest
response
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.)
Ceased
Application number
DE112017003483.3T
Other languages
English (en)
Inventor
Rajesh M. Sankaran
Prashant Sethi
Asit K. Mallick
David Woodhouse
Rupin H. Vakharwala
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 DE112017003483T5 publication Critical patent/DE112017003483T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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]
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/1052Security improvement
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • 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]
    • G06F2212/683Invalidation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

Eine Vorrichtung weist ein Extended Capability Register und Eingabe/Ausgabe-(E/A) Speicherverwaltungsschaltungen auf. Die Eingabe/Ausgabe- (E/A) Speicherverwaltungsschaltungen sind vorgesehen zum Empfangen einer Adressumsetzungsanforderung, die eine virtuelle Gastadresse referenziert, die einem virtuellen Gastadressraum einer virtuellen Maschine zugehörig ist, von einer E/A-Vorrichtung. Die Eingabe/Ausgabe- (E/A) Speicherverwaltungsschaltungen können die virtuelle Gastadresse in eine physikalische Gastadresse umsetzen, die einem physikalischen Gastadressraum der virtuellen Maschine zugehörig ist, und als Reaktion auf das Bestimmen, dass ein Wert, der durch das Extended Capability Register gespeichert wird, einen Restrict-Translation-Request-Response-Modus (RTRR - Modus zur Einschränkung der Umsetzungsanforderungsantwort) angibt, eine Umsetzungsantwort, die die physikalische Gastadresse aufweist, an die E/A-Vorrichtung senden.

Description

  • Allgemeiner Stand der Technik
  • Neu entstehende Beschleuniger- und
    Hochleistungseingangs/Ausgangsvorrichtungen (E/A) unterstützen Shared Virtual Memory (SVM), der es den E/A-Vorrichtungen ermöglicht, in dem gleichen virtuellen Speicheradressraum betrieben zu werden wie die Anwendung, die auf der Host-Zentraleinheit (Central Processing Unit — CPU) ausgeführt wird, die Arbeit bei einem Beschleuniger eingereicht hat. Dazu arbeiten die E/A-Vorrichtungen ohne, dass das Pinning von Seiten im Speicher erforderlich ist, und stellen stattdessen E/A-Seitenfehler genau wie CPU-Seitenfehler bei virtuellen Adressumsetzungen fest und handhaben sie. Ein Seitenfehler ist eine Art von Interrupt, der durch Computer-Hardware (in diesem Fall die E/A-Vorrichtung) zutage gefördert wird, wenn eine Anwendung auf eine Speicherseite zugreift, deren Mapping in einen virtuellen Adressraum durchgeführt wurde, die aber tatsächlich nicht in den Hauptspeicher geladen wurde.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Systems, das Hardware-Unterstützung für die direkte Zuweisung von E/A-Vorrichtungen gemäß einer Ausführungsform der vorliegenden Offenbarung bereitstellt.
    • 2 ist ein Blockdiagramm eines E/A-Virtualisierungsverwaltungssystems, das eine E/A-Speicherverwaltungseinheit (I/O Memory Management Unit — IOMMU) aufweist, die in der Lage ist, Umsetzungsanforderungsantworten gemäß einer Ausführungsform der vorliegenden Offenbarung einzuschränken.
    • 3 ist ein Blockdiagramm einer E/A-Vorrichtung, die einen Address Translation Cache (ATC — Adressumsetzungs-Cache) aufweist, in dem die IOMMU von 2 Virtualisierungstechnologie für die geleitete E/A der E/A-Vorrichtung gemäß einer Ausführungsform der vorliegenden Offenbarung bereitstellt.
    • 4 ist ein Ablaufdiagramm, das die verschachtelte Umsetzung für Speicherzugriffe unter Verwendung von Seitentabellen einer zweiten Ebene während der virtualisierten Adressumsetzungen gemäß einer Ausführungsform der vorliegenden Offenbarung veranschaulicht.
    • 5 ist ein Blockdiagramm einer Steuerdatenstruktur, das eine Extended-Context-Entry-Datenstruktur veranschaulicht, die die Umsetzung von Speicherzugriffsanforderungen in Paging-Tabellen der zweiten Ebene gemäß einer Ausführungsform der vorliegenden Offenbarung unterstützt.
    • 6 ist ein Blockdiagramm einer Steuerdatenstruktur, das einen Eintrag einer Prozessadressraumkennung (Process Address Space Identifier — PASID) in einer Tabelle veranschaulicht, die zum Umsetzen von Speicherzugriffsanforderungen mit PASID gemäß einer Ausführungsform der vorliegenden Offenbarung verwendet wird.
    • 7 ist eine Tabelle, die Paging-Einträge einer zweiten Ebene veranschaulicht, die eine zweite Ebene der Adressumsetzung unterstützten, die durch eine IOMMU durchgeführt wird, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 8 ist ein Ablaufdiagramm eines Verfahrens zur IOMMU-Handhabung von Umsetzungsanforderungen unter Verwendung bestimmter Antworteinschränkungen.
    • 9 ist ein Ablaufdiagramm eines Verfahrens zur IOMMU-Handhabung einer Paging-Sequenz während eines Speicher-Overcommit beim Einsatz der Umsetzungsantworteinschränkungen von 8.
    • 10A ist Blockdiagramm, das eine Mikroarchitektur für einen Prozessorkern veranschaulicht, der in den Root-Complex von 2 und 3 aufgenommen werden kann.
    • 10B ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbenennungsstufe, Out-Of-Order-Ausgabe/Ausführungspipeline veranschaulicht, die durch den Prozessorkern von 10A gemäß einigen Ausführungsformen der Offenbarung ausgeführt wird.
    • 11 veranschaulicht ein Blockdiagramm der Mikroarchitektur für einen Prozessor, die in einer Ausführungsform Abschnitte des Root-Complex von 2 und 3 darstellen kann.
    • 12 ist ein Blockdiagramm eines Mehrprozessorsystems gemäß einer Ausführung.
    • 13 ist ein Blockdiagramm eines Mehrprozessorsystems gemäß einer anderen Ausführung.
    • 14 ist ein Blockdiagramm eines System-on-a-Chip gemäß einer Ausführung.
    • 15 veranschaulicht eine andere Ausführung eines Blockdiagramms für ein Rechensystem.
    • 16 veranschaulicht eine andere Ausführung eines Blockdiagramms für ein Rechensystem.
  • Beschreibung von Ausführungsformen
  • Für E/A-Vorrichtungen und Steuereinrichtungen, die an E/A-Fabric (wie beispielsweise Peripheral Component Interconnect (PCI)-Express (PCIe®) oder On-Chip- oder On-Package-Varianten von PCIe®) angeschlossen sind, die ein geteiltes Transaktionsprotokoll unterstützt, werden E/A-Seitenfehler an der Quelle (z. B. der E/A-Vorrichtung) festgestellt, bevor die Transaktion an das E/A-Fabric eingereicht wird. Ein Seitenfehler ist eine Art von Interrupt, der durch Computer-Hardware (in diesem Fall die E/A-Vorrichtung) zutage gefördert wird, wenn eine Anwendung auf eine Speicherseite zugreift, deren Mapping in einen virtuellen Adressraum durchgeführt wurde, die aber tatsächlich nicht in den Hauptspeicher geladen wurde.
  • Eine Art des Bewerkstelligens von E/A-Seitenfehlerfeststellung an der E/A-Vorrichtung besteht im Aufbauen eines Address Translation Cache (ATC), der auch als Vorrichtungs-Translation-Lookaside-Buffer (Vorrichtungs-TLB) bezeichnet wird, an der E/A-Vorrichtung, die in der Lage ist, virtuelle Adressumsetzungen gemeinsam mit Berechtigungen im Cache zu speichern, und mit einer E/A-Speicherverwaltungseinheit (IOMMU) beim Abschluss von Adressumsetzungsanforderungen zu interagieren. Die IOMMU (die auch als E/A-Speicherverwaltungsschaltungen bezeichnet wird) ist eine Hardware-Einheit für das Re-Mapping direkter Speicherzugriffe (Direct Memory Access — DMA), die auf Umsetzungstabellen zugreift, die durch einen Virtual Machine Monitor (VMM) einer virtuelle Maschine für Zwecke der Umsetzung von Adressen von Shared Virtual Memory (SVM) für E/A-Vorrichtungen populiert werden. Wie im Detail erklärt werden wird, ermöglichen die Umsetzungsanforderungen, die an die IOMMU gesendet werden, und die Umsetzungsantworten, die von der IOMMU zurück erhalten werden, es den E/A-Vorrichtungen, ATC-Fehltreffer zu handhaben, E/A-Seitenfehler am ATC festzustellen und die Seitenfehler durch die IOMMU an Software zu melden, bevor die Transaktion auf dem E/A-Fabric ausgegeben wird. Diese Software kann Systemsoftware, die ein Betriebssystem in einer nicht virtualisierten Maschine aufweisen kann, oder ein VMM und/oder ein Betriebssystem sein, das innerhalb einer virtuellen Maschine ausgeführt wird.
  • In einer Ausführungsform sendet eine E/A-Vorrichtung eine virtuelle Adresse an die IOMMU in einer Umsetzungsanforderung. Die IOMMU kann zuerst die virtuelle Adresse, die einen virtuellen Gastadressraum referenziert, in eine physikalische Gastadresse (Guest Physical Address — GPA) umsetzen, die einem physikalischen Gastadressraum zugehörig ist. Die IOMMU kann als Nächstes die GPA in eine Host Physical Address (HPA) des Hauptspeichers umsetzen. Die HPA wird auch als eine physikalische Maschinenadresse bezeichnet. Die IOMMU kann eine Umsetzungsantwort mit entweder einer erfolgreichen Umsetzung und der HPA oder einem Fehler, wo die Umsetzung nicht erfolgreich war, an die E/A-Vorrichtung zurücksenden.
  • Genauer gesagt, werden Adressumsetzungsanforderungen durch die IOMMU durch Nachschlagen umgesetzter Adressen innerhalb eines I/O Translation Lookaside Buffer (IOTLB) in der IOMMU oder durch Durchführen des Abklapperns von Seiten (Page Walks) der Paging-Strukturen der zweiten Ebene gehandhabt (z. B. wenn verschachtelte Umsetzung durchgeführt wird), die zum Umsetzen einer virtuellen Adresse in eine Guest Physical Address (GPA) und zum Umsetzen der GPA in eine Host Physical Address (HPA) verwendet werden. Die IOMMU kann die umgesetzte HPA an die E/A-Vorrichtung senden und die E/A-Vorrichtung speichert die HPA in einem ATC der E/A-Vorrichtung. Bei einem ATC-Treffer der HPA an der E/A-Vorrichtung kann die umgesetzte Adresse von dem ATC verwendet werden, um eine umgesetzte Anforderung zu erzeugen, die an die IOMMU gesendet wird. Eine umgesetzte Adresse ist eine DMA-Anforderung, die eine HPA für den direkten Zugriff auf Daten enthält, die an der HPA in einer Seite des Speichers gespeichert sind. Dieser Typ von umgesetzter Anforderung kann die Adressumsetzungsverarbeitung durch die IOMMU umgehen, da die umgesetzte Anforderung die physikalische Host-Adresse enthält. Die IOMMU kann dann direkt auf die Daten in der Speicherseite zugreifen, die der HPA entsprechen, die in der umgesetzten Anforderung bereitgestellt wurde, und an die E/A-Vorrichtung zurücksenden.
  • Obgleich der vorhergehend beschriebene Prozess bei der Unterstützung von Shared Virtual Memory (SVM) und E/A-Seitenfehlerfähigkeiten funktioniert, ist dieser Ansatz einer erheblichen Anfälligkeit ausgesetzt, da die HPAs in den Vorrichtungs-ATCs im Cache gespeichert werden und es den umgesetzten Anforderungen mit diesen HPAs erlaubt wird, die IOMMU-Adressumsetzung zu umgehen. Dementsprechend kann, wenn eine E/A-Vorrichtung beeinträchtigt ist, indem sie es böswilliger Software erlaubt, die ATC-Inhalte zu ändern, die E/A-Vorrichtung DMA-Anforderungen mit einer HPA an jede Speicherseite in einer Plattform, die Virtualisierung einsetzt, was andere Domänen (Anwendungen, virtuelle Maschinen oder Container) aufweist, oder an Code des Virtual Machine Manager (VMM) und an Datenseiten im Speicher erzeugen. Eine Domäne ist eine isolierte Umgebung in einer Plattform, der eine Teilmenge des physikalischen Host-Speichers zugewiesen ist.
  • In einer Ausführungsform kann die IOMMU anstatt des Übermittelns der HPA an die E/A-Vorrichtung in einer Umsetzungsantwort, die in dem ATC der E/A-Vorrichtung im Cache zu speichern ist, die GPA übermitteln, die während der im Cache zu speichernden Umsetzung erzeugt wurde. Die E/A-Vorrichtung kann dann, anstatt die HPA in der umgesetzten Anforderung an die IOMMU zu senden, die GPA in der umgesetzten Anforderung senden. Als Reaktion auf die umgesetzte Anforderung, kann die IOMMU zum Beispiel zusätzliche Umsetzung auf der GPA durchführen, um die GPA-zu-HPA-Umsetzung als eine Form des Schutzes vor einer böswilligen Adresse in der umgesetzten Anforderung abzuschließen. Bei einer erfolgreichen GPA-zu-HPA-Umsetzung kann die IOMMU Daten auf der Seite im Speicher, die der umgesetzten HPA entspricht, an die E/A-Vorrichtung senden.
  • Dieser Wechsel zum Senden der GPA (anstatt der HPA) in der Umsetzungsantwort an die E/A-Vorrichtung kann ausgelöst werden, nachdem die IOMMU einen Restrict-Translation-Request-Response-Modus (RTRR) (oder ähnliches) feststellt, der durch die IOMMU innerhalb eines Extended Capability Registers der IOMMU für eine der E/A-Vorrichtungen oder den virtuellen physikalischen Gastadressraum eingestellt wird. Extended Capability Register werden, wie in der Folge im Detail erklärt, in verschiedenen Typen von Umsetzungen verwendet, um Software Remapping-Merkmale zu signalisieren, die während der Adressumsetzung zu verwenden sind.
  • Da die GPAs in den ATCs der E/A-Vorrichtung nun im Cache gespeichert werden, kann der VMM einer virtuellen Maschine (zusätzlich zur Unterstützung, die bereits für das seitenweise Auslagern von mit HPAs identifizierten Speicherseiten vorhanden ist) die Unterstützung für das seitenweise Auslagern von Speicherseiten, die mit GPAs identifiziert werden, als Reaktion auf Seitenfehler aufgrund von Overcommitment von Speicher aufweisen. Ein Seitenfehler ist eine Art von Interrupt, der durch Computer-Hardware (in diesem Fall die E/A-Vorrichtung) zutage gefördert wird, wenn eine Anwendung auf eine Speicherseite zugreift, deren Mapping in einen virtuellen Adressraum durchgeführt wurde, die aber tatsächlich nicht in den Hauptspeicher geladen wurde. Diese Paging-Unterstützung wird, wie in der Folge im Detail erklärt, auf eine Weise durchgeführt, die unkorrigierbare Fehler aufgrund einer gegenwärtig pendenten (oder später ausgegebenen) Umsetzungsanforderung vermeidet, die eine virtuelle Gastadresse aufweist, deren Mapping auf eine GPA einer Seite erfolgt, die seitenweise aus dem Speicher ausgelagert wird (oder wurde).
  • 1 ist ein Blockdiagramm eines Systems 100, das Hardware-Unterstützung für die direkte Zuweisung von E/A-Vorrichtungen gemäß einer Ausführungsform der vorliegenden Offenbarung bereitstellt. Das System 100 kann verschiedene virtuelle Maschinen (VMs), zum Beispiel eine erste VM 102A und eine zweite VM 102N, aufweisen. Die erste VM 102A kann eine oder mehrere Anwendungen 104A und 104B, die auf einem Gastbetriebssystem (OS) 108 ausgeführt werden, und einen Treiber 112 für die Vorrichtung A aufweisen. Die zweite VM 102N kann auf ähnliche Weise eine oder mehrere Anwendungen 104AN und 104BN, die auf einem Gast-OS 108N ausgeführt werden, und einen Treiber 112N für die Vorrichtung B aufweisen.
  • Das System 100 kann auch einen Virtual Machine Monitor (VMM) 115, z. B. ein Hosting-OS für das System 100, eine IOMMU 120, die DMA-Remapping-Hardware 121 aufweist, und eine Anzahl von E/A-Vorrichtungen aufweisen, die die Vorrichtung A und die Vorrichtung B aufweisen, die einen Address Translation Cache (ATC) 124A beziehungsweise 124B aufweisen. Der Treiber 112 der Vorrichtung A kann zur Vorrichtung A gehören und der Treiber 112N der Vorrichtung B kann zur Vorrichtung B gehören.
  • In 1 veranschaulicht sind eine direkte Zuweisung der Vorrichtung A zu einer ersten Partition und eine direkte Zuweisung der Vorrichtung B zu einer zweiten, unterschiedlichen Hardware-Partition. Mit dem Ansatz des direkten Zuweisens der E/A-Vorrichtungen A und B zu getrennten Partitionen wird der Treiber für eine zugeordnete E/A-Vorrichtung nur in der Partition ausgeführt, zu der ihre entsprechende Vorrichtung zugewiesen ist, und es wird ihm erlaubt, mit minimaler oder ohne Beteiligung des VMM direkt mit der Vorrichtungs-Hardware zu interagieren. Die DMA-Remapping-Hardware 121 innerhalb der IOMMU ermöglicht diese direkte Vorrichtungszuweisung ohne vorrichtungsspezifische Kenntnisse in dem VMM 115.
  • Dementsprechend kann der VMM 115 sich auf das Ermöglichen der direkten Zuweisung von E/A-Vorrichtungen zu ihren entsprechenden Partitionen beschränken. Anstatt den VMM für alle E/A-Anforderungen von einer Partition aufzurufen, kann der VMM nur aufgerufen werden, wenn Gastsoftware auf geschützte Ressourcen (wie beispielsweise Konfigurationszugriffe, Interrupt-Verwaltung und dergleichen) zugreift, die sich auf die Systemfunktionalität und Isolation auswirken. Zur Unterstützung der direkten Zuweisung von E/A-Vorrichtungen setzt der VMM 115 die Isolation von DMA-Anforderungen durch. Die E/A-Vorrichtungen, Vorrichtung A und Vorrichtung B, können Domänen zugewiesen werden, und die Remapping-Hardware 121 der IOMMU 120 kann verwendet werden, um direkten Speicherzugriff von einer E/A-Vorrichtung auf den physikalischen Speicher einzuschränken, der sich gegenwärtig im Besitz ihrer Domäne befindet. Für Domänen, die im physikalischen Speicher verschoben werden können, kann die Remapping-Hardware 121 programmiert werden, um die erforderliche Umsetzung durchzuführen. Diese E/A-Vorrichtungszuweisung ermöglicht andere gemeinsame E/A-Verwendungen, zum Beispiel das Zuweisen einer E/A-Vorrichtung zu einer E/A-Partition, die E/A-Dienste für andere Benutzerpartitionen bereitstellt. Die Remapping-Hardware 121 ermöglicht es der Virtualisierungssoftware, die richtige Kombination von Vorrichtungszuweisung und softwarebasierten Verfahren zur E/A-Virtualisierung auszuwählen.
  • Das Betriebssystem 102A oder 102N kann diese DMA-Remapping-Hardware 121 der IOMMU 120 auf eine Anzahl von Arten verwenden, wie zum Beispiel zum Schutz des Betriebssystems, zur Unterstützung von Merkmalen beim Umgang mit Altvorrichtungen und zum Bereitstellen von DMA-Isolation. Ferner kann das Betriebssystem 102A oder 102N die DMA-Remapping-Hardware verwenden, um einen gemeinsam verwendeten virtuellen Speicher bereitzustellen. Für Vorrichtungen, die geteilte Protokollfähigkeiten unterstützen, wie zum Beispiel PCIe®, kann das Betriebssystem die DMA-Remapping-Hardware-Fähigkeiten verwenden, um den virtuellen Adressraum von Anwendungsprozessen mit E/A-Vorrichtungen gemeinsam zu nutzen. Gemeinsam genutzter virtueller Speicher gemeinsam mit der Unterstützung von E/A-Seitenfehlern ermöglichen es Anwendungsprogrammen, beliebige Datenstrukturen frei an Vorrichtungen, wie zum Beispiel Grafikprozessoren oder Beschleuniger, ohne die Aufwände des Pinnings und Marshallings weiterzugeben.
  • Zur Unterstützung solcher Verwendungen kann der VMM 115 die Remapping-Hardware 121 für ihre Gäste, z. B. die VM 102A bis und mit VM 102N, virtualisieren. Zum Beispiel kann der VMM 115 Gastzugriffe auf die virtuellen Remapping-Hardware-Register der IOMMU 120 abfangen und eine Spiegelkopie der Gast-Remapping-Strukturen verwalten, die der physikalischen Remapping-Hardware 121 bereitgestellt wird. Bei Aktualisierungen der Gast-E/A-Seitentabellen führt die Gastsoftware virtuelle Ungültigkeitserklärungsvorgänge durch, um Spiegel-Remapping-Strukturen, wie beispielsweise Spiegelseitentabellen, zu aktualisieren (die Kopien der Seitentabellen des VMM sind, die durch ein Gastbetriebssystem gepflegt werden). Die virtuellen Ungültigkeitserklärungsanforderungen können durch den VMM 115 abgefangen werden, um die entsprechenden Spiegelseitentabellen zu aktualisieren und Ungültigkeitserklärungen der Remapping-Hardware der IOMMU 120 durchzuführen. Aufgrund der Tatsache, dass fehlerhafte DMA-Transaktionen (anders als CPU-Speicherverwaltungsvirtualisierung) nicht neu gestartet werden können, kann die Software des VMM 115 keine unzeitigen Aktualisierungen ihrer Spiegel-Remapping-Strukturen durchführen. Um die Spiegel-Remapping-Strukturen mit den Gaststrukturen in Übereinstimmung zu halten, kann der VMM 115 virtuelle Remapping-Hardware mit Prefetching-Verhalten (einschließlich Caching von nicht vorhandenen Einträgen) aufweisen oder Prozessorspeicher-Verwaltungsmechanismen zum Schreibschützen der Gast-Remapping-Strukturen verwenden.
  • Bei Hardware-Ausführungen, die zwei Ebenen von Adressumsetzungen unterstützen (Umsetzung einer ersten Ebene für das Remapping einer virtuellen Gastadresse auf eine Zwischen-Guest-Physical-Address (GPA) und Umsetzungen einer zweiten Ebene für das Remapping der Zwischen-Guest-Physical-Address (GPA) auf die Maschinen- oder Host Physical Address (HPA)), kann der VMM 115 die Gast-OS-Verwendung der Umsetzungen der ersten Ebene (wie beispielsweise für SVM-Verwendungen) ohne Shadowing (Spiegeln) von Seitentabellen, sondern durch Konfigurieren von Hardware zum Durchführen verschachtelter Umsetzung der ersten und der zweiten Ebene virtualisieren. Das Durchführen von verschachtelten Umsetzungen wird in der Folge ausführlicher erörtert.
  • 2 ist ein Blockdiagramm eines E/A-Virtualisierungsverwaltungssystems 200, das eine E/A-Speicherverwaltungseinheit (IOMMU) aufweist, die in der Lage ist, Umsetzungsanforderungsantworten gemäß einer Ausführungsform der vorliegenden Offenbarung einzuschränken. Das System 200 kann unter anderen Bauelementen einen oder mehrere Prozessorkerne 201 aufweisen, die jeweils die eine oder mehreren virtuellen Maschinen 102A bis und mit 102 N von 1 ausführen können. Das System 200 kann auch Systemspeicher 108 zum Speichern eines Betriebssystems (OS), von Paging-Strukturen 210, Datenseiten 211 und (einem) E/A-Treiber/n (s) 212 unter anderen Daten und Datenstrukturen aufweisen.
  • Das System 200 kann ferner einen Root-Complex (RC) 216 (auch als Speicher-Controller-Hub bezeichnet), der zwischen den Prozessorkernen 201 und dem Systemspeicher 108 gekoppelt ist, und mehrere E/A-Vorrichtungen 218 aufweisen (was auch irgendeine Endpunktvorrichtung sein kann, die eine Vorrichtung, einen Bus oder andere Endpunkt-Hardware aufweist). Der Root-Complex 216 kann in einen Chipsatz integriert sein, der mehrere Funktionalitäten, wie beispielsweise eine Fähigkeit zum Ausführen im isolierten Ausführungsmodus, eine Host-Peripheriebus-Schnittstelle und Speichersteuerung, integriert.
  • In einer Ausführungsform weisen die E/A-Vorrichtungen 218 eine oder mehrere integrierte Vorrichtungen 218A (wie beispielsweise Prozessorgrafik), eine oder mehrere diskrete Vorrichtungen 218B (wie beispielsweise PCIe®-Vorrichtungen oder andere verbundene Vorrichtungen) und/oder eine oder mehrere Nicht-SVM-Vorrichtungen 218C (wie beispielsweise Altvorrichtungen, die gemeinsam genutzten virtuellen Speicher nicht unterstützen) auf. Die E/A-Vorrichtungen können ferner Netzwerk-Controller-Vorrichtungen, Speicherungs-Controller-Vorrichtungen, periphere Controller-Vorrichtungen, wie beispielsweise Universal Serial Bus (USB) Controller), Medien-Controller-Vorrichtungen, Anzeige-Controller und dergleichen aufweisen. Jede von den integrierten Vorrichtungen 218A und den diskreten Vorrichtungen 218B kann einen Address Translation Cache (ATC) 224A beziehungsweise 224B enthalten.
  • Der Root-Complex 216 kann auch eine IOMMU 220 (wie beispielsweise die IOMMU 120 von 1) aufweisen. Die IOMMU 220 kann ferner Remapping-Hardware 221, die ausgestaltet ist, um E/A-Virtualisierungsadressumsetzung von E/A-Transaktionen zu erleichtern, einen I/O Translation Lookaside Buffer (IOTLB) 222, in dem E/A-Transaktionen und entsprechende Daten im Cache zu speichern sind, und Extended-Capability-Register 223 aufweisen, die zum Melden von Aktivierung von verschiedenen Remapping-Merkmalen an Software verwendet werden.
  • Die unter Bezugnahme auf 1 beschriebene DMA-Remapping-Architektur unterstützt Adressumsetzung von DMA-Anforderungen, die durch den Root-Complex 216 von den E/A-Vorrichtungen 218 empfangen werden. Hardware in der IOMMU 220 kann den Adressumsetzungsprozess durch Speichern von Daten von verschiedenen Umsetzungsstrukturen, die in der Folge ausführlicher erörtert werden, im Cache beschleunigen. Der IOTLB 222 kann an die Remapping-Hardware 221 gekoppelt sein. Die Umsetzungs-Caches des IOTLB 222 sind eine endliche Ressource, die Anforderungen von mehreren E/A-Vorrichtungen unterstützt. Daher kann die Effizienz dieser Umsetzungs-Caches in der Systemplattform 200 zum Beispiel von einer Anzahl gleichzeitig aktiver DMA-Ströme in der Plattform und dem Adressort von DMA-Zugriffen durch die E/A-Vorrichtungen abhängig sein.
  • Ein Ansatz für die Skalierung von Umsetzungs-Caches besteht darin, es den E/A-Vorrichtungen 218A und 218B zu ermöglichen, am Remapping-Prozess mit Adressumsetzungs-Caches teilzuhaben, die an den Vorrichtungen ausgeführt werden, z. B. dem ATC 224A und ATC 224B (die im Fach auch als Vorrichtungs-TLBs bezeichnet werden). Die ATCs mindern den Druck auf den IOTLB 222 des Root-Complex 216 und stellen Gelegenheiten für Vorrichtungen zum Verbessern der Leistung durch Prefetching von Adressumsetzungen vor der Ausgabe von DMA-Anforderungen bereit. Die ATCs 224A und 224B können besonders nützlich für Vorrichtungen mit strengen Zugriffslatenzanforderungen (wie beispielsweise isochrone Vorrichtungen) und für Vorrichtungen sein, die einen großen DMA-Arbeitssatz oder mehrere aktive DMA-Ströme aufweisen. Die Remapping-Hardware 221 kann die Unterstützung für ATCs durch ein Extended-Capability-Register 223 melden. Darüber hinaus können die ATCs 224A und 224B, wie erwähnt, durch E/A-Vorrichtungen zum Unterstützen korrigierbarer E/A-Seitenfehler genutzt werden.
  • Der Einsatz der ATCs in verschiedenen E/A-Vorrichtungen 218 beinhaltet einen standardisierten Mechanismus für verschiedene Funktionen, wie zum Beispiel zum Anfordern und Empfangen von Umsetzungen von der IOMMU 220 des Root-Complex 216, zum Angeben, ob eine Speicheranforderung eine umgesetzte oder eine nicht umgesetzte Adresse aufweist, und zur Ungültigkeitserklärung von Umsetzungen, die an den ATCs 224A und 224B im Cache gespeichert sind, was alles unter Bezugnahme auf 3 ausführlicher erörtert werden wird.
  • 3 ist ein Blockdiagramm einer E/A-Vorrichtung 318, die einen Address Translation Cache (ATC) 324 aufweist, in dem die IOMMU 220 von 2 Virtualisierungstechnologie für die geleitete E/A der E/A-Vorrichtung 318 gemäß einer Ausführungsform der vorliegenden Offenbarung bereitstellt. Der ATC 324 kann ferner Steuerregister 323 aufweisen, um Fähigkeiten und ATC-Verhalten, wie beispielsweise Adressumsetzungsdienste und Seitenanforderungsunterstützung, zu ermöglichen. In einer oder mehreren Adressumsetzungsdienstspezifikationen kann eine Speicheranforderung zwischen dem ATC 324 und der IOMMU 220 einen Transaktionskopf mit einem Feld „Adresstyp“ (AT) aufweisen. Dieses AT-Feld kann angeben, ob eine Transaktion eine Speicheranforderung mit „nicht umgesetzter“ Adresse oder eine Speicheranforderung mit einer „umgesetzten“ Adresse ist. Die Spezifikation kann auch eine ATC-Ungültigkeitserklärungsnachricht definieren.
  • Die Vorrichtung 318 kann mit Seiten im Speicher 311 durch den Root-Complex 216 kommunizieren und die IOMMU 220 kann die Paging-Strukturen 310 verwenden, um die bislang erörterten Umsetzungen durchzuführen, die vor unberechtigtem Zugriff auf die Seiten im Speicher schützen. Die allgemeinen Interaktionen zwischen dem ATC 324 der Vorrichtung 318 und der IOMMU 220 des Root-Complex 216 werden, gefolgt von einer ausführlicheren Erklärung jeder Interaktion, erklärt. In einem Fall kann die ATC 324 eine Seitenanforderung an den Root-Complex 216 senden, um eine Seite von den Seiten in dem Speicher 311 anzufordern (329). Diese Seitenanforderung kann es dem ATC 324 ermöglichen, einen Seitenfehler an die IOMMU 220 zu melden. Als Reaktion kann die IOMMU 220 mit einer Seitenantwort antworten, um es der IOMMU zu ermöglichen, eine Seitenfehlerantwort nach dem Bedienen des Seitenfehlers zu senden (330).
  • In einer Ausführungsform kann der ATC 324 auch eine Umsetzungsanforderung an die IOMMU 220 mit einer virtuellen Adresse (entweder einer Guest Virtual Address (GVA) oder einer virtuellen E/A-Adresse (I/O Virtual Address — IOVA)) für den Zugriff auf eine entsprechende Host Physical Address (HPA) senden (331). Die IOMMU 220 kann dann eine Adressumsetzung basierend auf einem Mapping zwischen der GVA (oder IOVA) und einer Guest Physical Address (GPA) und dann einem Mapping zwischen der GPA und der entsprechenden HPA unter Verwendung verschiedener Paging-Strukturen 310 (z. B. Paging-Tabellen, wie erörtert werden wird) und in Bezug auf die Seiten 311 im Speicher erzeugen. Nachdem die IOMMU 220 das Adress-Mapping als Reaktion auf die Umsetzungsanforderung abgeschlossen hat, kann die IOMMU der ATC 324 mit einer Umsetzungsabschlussnachricht (332) antworten, die die HPA (unter der Annahme einer erfolgreichen Umsetzung) und Umsetzungsdaten enthält, die die Vorrichtung 318 zum Formulieren einer umgesetzten Anforderung verwenden kann. Der ATC 324 kann dann die umgesetzte Anforderung (z. B. eine reguläre Speicher-Lese-, Schreib- oder Atomics-Anforderung mit einem AT-Feld und der HPA) an die IOMMU 220 senden, um erforderliche Daten zu erhalten, die an der HPA gespeichert sind (334).
  • Die IOMMU 220 kann auch eine Ungültigkeitserklärungsanforderung an den ATC 324 der Vorrichtung 318 senden, um eine Umsetzung, die in dem ATC 324 in dem Cache gespeichert ist, für ungültig zu erklären (336), z. B. weil die Umsetzung schlecht ist oder aus anderen Gründen als ungültig bestimmt wurde, wie beispielsweise als Reaktion auf eine Ungültigkeitserklärungsanforderung von Software, die auf dem System 200 ausgeführt wird (350). Nachdem die Umsetzung von dem ATC 324 gelöscht wurde, kann der ATC 324 eine Ungültigkeitserklärungsabschlussnachricht an den Root-Complex 216 senden (340).
  • Die folgende ausführlichere Erklärung ist spezifisch für die PCI-Express® Address Translation Services (ATS) Spezifikation und erfolgt über den Rest der vorliegenden Offenbarung hinweg beispielhaft zu erklärenden Zwecken und für diesen Zusammenhang. Mit der Verwendung der PCI-Express®-ATS-Spezifikation wird indes keine Einschränkung der Gesichtspunkte der Offenbarung beabsichtigt, die auch für andere Typen von E/A-Vorrichtungen und Protokollen zutreffen. In der folgenden Erklärung steht PASID für Process Address Space Identifier (Prozessadressraumkennung). Einige DMA-Anforderungen mit einer virtuellen Adresse (oder einer virtuellen Gastadresse) können mit einem PASID-Wert getaggt sein, der den virtuellen Adressraum identifiziert, auf den abgezielt wird.
  • Translation Request (Umsetzungsanforderung) (331): Translation-requests-without-PASID (Umsetzungsanforderungen-ohne-PASID) geben die folgenden Attribute an, die durch Remapping-Hardware zum Verarbeiten der Anforderung verwendet werden. Address Type (Adresstyp) (AT), wo das AT-Feld einen Wert von 01b aufweist, um sie als eine Umsetzungsanforderung zu identifizieren. Address (Adresse), wo ein Adressfeld die Anfangseingabeadresse angibt, für die die Umsetzung angefordert wird. Length (Länge), wo ein Längenfeld angibt, wie viele aufeinanderfolgende Umsetzungen als Reaktion auf diese Anforderung zurückgesendet werden können. Jede Umsetzung kann eine Länge von 8 Bytes aufweisen. Wenn das Längenfeld einen Wert aufweist, der größer als zwei ist, dann sind die zusätzlichen Umsetzungen (wenn sie in der Umsetzungsantwort zurückgesandt werden) zum aufeinanderfolgenden Erhöhen von Seiten mit gleicher Größe, beginnend an der angeforderten Eingabeadresse. No Write (kein Schreiben) (NW) Flag, der, wenn er gesetzt ist, angibt, ob der Endpunkt Nur-Lese-Zugriff für diese Umsetzung anfordert. Umsetzungsanforderungen mit PASID geben die gleichen Attribute wie vorhergehend an und geben auch die folgenden zusätzlichen Attribute an: PASID-Wert, Execute-Requested (ER) Flag und Privileged-mode-Requested (PR) Flag in dem PASID-Präfix.
  • Translation Completion (Umsetzungsabschluss) (332): Wenn die IOMMU 220 nicht in der Lage war, die Umsetzungsanforderung (mit oder ohne PASID) erfolgreich zu verarbeiten, wird ein Umsetzungsabschluss ohne Daten zurückgesandt. Ein Statuscode UR (nicht unterstützte Anforderung) wird in dem Umsetzungsabschluss zurückgesandt, wenn die IOMMU 220 ausgestaltet ist, Umsetzungsanforderungen von dieser Vorrichtung 318 nicht zu unterstützen. Ein Statuscode CR (Abschlussabbruch) wird in dem Umsetzungsabschluss zurückgesandt, wenn die IOMMU 220 beim Verarbeiten der Umsetzungsanforderung Fehlern begegnet ist.
  • Wenn die Remapping-Hardware in der Lage war, eine Umsetzungsanforderung erfolgreich zu verarbeiten, wird ein Umsetzungsabschluss mit Daten zurückgesandt. Für erfolgreiche Umsetzungsanforderungen ohne PASID gibt jede in den Umsetzungsabschlussdaten zurückgesandte Umsetzung die folgenden Attribute an. Size (Größe) (S), wo ein Wert von 0b im Feld „Size“ angibt, dass die Umsetzung für eine 4-KByte-Seite ist. Wenn das Feld „Size“ 1b ist, wird die Größe der Umsetzung durch das niedrigste Bit in dem umgesetzten Adressfeld (Bits 63:12) mit einem Wert von 0 bestimmt. Wenn zum Beispiel das Bit 12 gleich 0 ist, gilt die Umsetzung für eine 8-KByte-Seite. Wenn das Bit 12 gleich 1 ist und das Bit 13 gleich 0 ist, gilt die Umsetzung für eine 16-KByte-Seite usw. Non-Snooped access flag (Flag Zugriff ohne Snooping) (N): Wenn es eingestellt ist, gibt das Feld für Zugriff ohne Snooping an, dass die umgesetzten Anforderungen, die diese Umsetzung verwenden, das No-Snoop-Attribut in der Anforderung löschen müssen. Untranslated access only flag (nur nicht umgesetzter Zugriff) (U): Wenn es eingestellt ist, kann auf den Eingabeadressbereich für die Umsetzung nur durch die Vorrichtung 318 unter Verwendung der nicht umgesetzten Anforderung zugegriffen werden. Read permission (Leseberechtigung) (R): Wenn sie eingestellt ist, wird die Leseberechtigung für den Eingabeadressbereich dieser Umsetzung gewährt. Wenn R gelöscht ist, wird die Leseberechtigung für den Eingabeadressbereich dieser Umsetzung nicht gewährt. Write permission (Schreibberechtigung) (W): Wenn sie eingestellt ist, wird die Schreibberechtigung für den Eingabeadressbereich dieser Umsetzung gewährt. Wenn W gelöscht ist, wird die Schreibberechtigung für den Eingabeadressbereich dieser Umsetzung nicht gewährt. Translated Address (umgesetzte Adresse): Wenn entweder das Feld R oder W eingestellt ist und dass Feld U gelöscht ist, enthält das Feld Translated Address das Ergebnis der Umsetzung für die entsprechende Eingabeadresse. Die Vorrichtung 318 kann mit dieser Adresse durch umgesetzte Anforderungen auf die Seite zugreifen.
  • Für erfolgreiche Umsetzungsanforderungen mit PASID gibt jede in den Umsetzungsabschlussdaten zurückgesandte Umsetzung die gleichen Attribute wie vorhergehend zusammen mit den folgenden erweiterten Attributen an: Execute permission (EXE) (Ausführungsberechtigung): Wobei, wenn EXE=R=1, die Ausführungsberechtigung für den Eingabeadressbereich dieser Umsetzung gewährt wird und anderenfalls die Ausführungsberechtigung nicht für den Eingabeadressbereich dieser Umsetzung gewährt wird. Privilege Mode Access (PRIV) (Zugriff im privilegierten Modus): Wobei, wenn R, W und EXE eingestellt sind, diese Berechtigungen betreffen, die mit dem Zugriff im privilegierten Modus verbunden sind, was umgesetzte Anforderungen mit PASID erfordert, die diese Umsetzung zum Einstellen des Privileged-Mode-Requested-Flag in dem Präfix PASID TLP verwenden. Wenn PRIV gelöscht ist, betreffen R, W und EXE Berechtigungen, die mit dem nicht privilegierten Zugriff verbunden sind, was umgesetzte Anforderungen mit PASID erfordert, die diese Umsetzung zum Löschen des Privileged-Mode-Requested-Flag in dem Präfix PASID TLP verwenden. Global Mapping (G): Wenn es eingestellt ist, ist die Umsetzung über alle PASIDs an dieser Vorrichtung 318 gemein. Wenn G gelöscht ist, ist die Umsetzung ohne globale Auswirkung für den PASID-Wert spezifisch, der in dem PASID-Präfix in der zugehörigen Umsetzungsanforderung angegeben ist.
  • Translated Request (umgesetzte Anforderung) (334): Umgesetzte Anforderungen sind reguläre Speicher-Lese-, Schreib- oder Atomics-Anforderungen mit einem Address-Type (AT) Feldwert von 10b. Beim Erzeugen von Anforderungen an eine gegebene Eingabe-(nicht umgesetzte) Adresse kann die Vorrichtung 318 die im Cache gespeicherte Umsetzung (Ergebnis von vorherigen Umsetzungsanforderungen) für die Eingabeadresse im lokalen ATC 324 nachschlagen. Wenn eine im Cache gespeicherte Umsetzung mit geeigneten Berechtigungen und Privileg gefunden wird, kann die Vorrichtung 318 eine umgesetzte Anforderung (AT=10b) erzeugen, die die umgesetzte Adresse angibt, die vom ATC-Nachschlagen erhalten wird. Umgesetzte Anforderungen verfügen für gewöhnlich über keine PASID beim Referenzieren einer umgesetzten HPA, können nun aber, wie in der Folge erörtert, beim Referenzieren einer umgesetzten GPA über eine PASID verfügen.
  • Invalidation Request & Completion (Ungültigkeitserklärungsanforderung & Abschluss) (336, 340): Ungültigkeitserklärungsanforderungen werden mittels Software durch Remapping-Hardware ausgegeben, um Umsetzungen, die an den Endpunkt-Vorrichtungs-TLBs im Cache gespeichert sind, für ungültig zu erklären. Invalidation-requests-without-PASID (Ungültigkeitserklärungsanforderungen ohne PASID) geben die folgenden Attribute an. Device ID (Vorrichtungs-ID) ist eine Identität der Vorrichtung (Bus/Vorrichtung/ Funktion), deren ATC 324 das Ziel der Ungültigkeitserklärung ist. Size (S) (Größe), wobei ein Wert von 0b im Size-Feld angibt, dass das Ziel der Ungültigkeitserklärung ein 4-KByte-Eingabeadressbereich ist. Wenn das Size-Feld 1b ist, wird der für ungültig zu erklärende Eingabeadressbereich durch das niedrigste Bit im Feld Untranslated Address (nicht umgesetzte Adresse) (Bits 63:12) mit einem Wert von 0 bestimmt. Untranslated Address (nicht umgesetzte Adresse) gibt die Basis des eingegebenen (nicht umgesetzten) Adressbereichs an, der für ungültig zu erklären ist.
  • Die Ungültigkeitserklärungsanforderungen (Invalidation Requests) mit PASID geben die gleichen Attribute wie vorhergehend gemeinsam mit einem globalen Ungültigkeitserklärungs-Flag an. Wenn der globale Ungültigkeitserklärungs-Flag 1 ist, beeinträchtigt die Ungültigkeitserklärung sämtliche PASID-Werte. Wenn der globale Ungültigkeitserklärungs-Flag 0 ist, ist es erforderlich, dass die Ungültigkeitserklärung nur den PASID-Wert beeinträchtigt, der in dem PASID Transaction Layer Packet (TLP) Präfix angegeben ist. Ungültigkeitserklärungsanforderungen und Abschlüsse können zusätzliche Tags (ITags) tragen, die durch Hardware verwaltet werden, um Ungültigkeitserklärungsanforderungen und Abschlüsse eindeutig zu identifizieren.
  • 4 ist ein Ablaufdiagramm, das die verschachtelte Umsetzung 400 für Speicherzugriffe unter Verwendung von Seitentabellen einer zweiten Ebene während der virtualisierten Adressumsetzungen gemäß einer Ausführungsform der vorliegenden Offenbarung veranschaulicht. Beim Durchführen des Vorrichtungs-Domänen-Mappings kann die IOMMU 220 das Domänen-Mapping unter Verwendung eines Extended-Root-Eintrags durchführen. Context- und Extended-Context-Einträge in der Extended-Root-Tabelle können ausgestaltet sein, um Umsetzung auf einer zweiten Ebene zu unterstützen. Umsetzung der zweiten Ebene kann für Anforderungen ohne PASID gelten, kann aber auch für die Umsetzung der ersten Ebene für Anforderungen mit PASID verschachtelt werden. Context und Extended-Context-Einträge enthalten einen Zeiger auf die Basis der Umsetzungsstruktur der zweiten Ebene. Genauer gesagt, kann in einer Ausführungsform, wenn ein Feld zur Aktivierung der Verschachtelung (NESTE) in Extended-Context-Einträge (siehe 5) aktiviert ist (z. B. auf Eins (1) eingestellt ist), die IOMMU 220 auch Anforderungen mit PASID, die durch mehrere Umsetzungsstrukturen 401 der ersten Ebene zur Umsetzung der ersten Ebene umgesetzt werden, und zu mehreren Umsetzungsstrukturen 402 zur Umsetzung der zweiten Ebene für die verschachtelten Umsetzung der zweiten Ebene unterziehen.
  • In einer Ausführungsform enthalten solche Extended-Context-Einträge sowohl einen ersten Zeiger 403 auf die PASID-Tabelle (die einen zweiten Zeiger 405 auf Umsetzungsstrukturen 401 der ersten Ebene enthält) als auch einen dritten Zeiger 404 auf die Umsetzungsstrukturen 402 der zweiten Ebene. 4 veranschaulicht eine verschachtelte Umsetzung für eine Anforderung mit PASID, die durch Umsetzung der ersten Ebene auf eine 4-KByte-Seite gemappt wird und durch 4-KByte-Mappings in Paging-Strukturen 402 der zweiten Ebene verschachtelt werden, um ein erklärendes Beispiel bereitzustellen. TABELLE 1
    Paging-Struktur Name Eintrag Physikalische Adresse von Struktur Bits Auswahl Eintrag Seiten-Mapping
    PML4-Tabelle PML4E PASID-Eintrag 47:39 k. A.
    Page-Directory-Pointer-Tabelle PDPE PML4E 38:30 1-GByte-Seite (wenn Feld Page-Size (PS) eingestellt ist)
    Seitenverzeichnis PDE PDPE 29:21 2-MByte-Seite (wenn Feld Page-Size (PS) eingestellt ist)
    Seitentabelle PTE PDE 20:12 4-KByte-Seite
  • Mit dem Verschachteln können Speicherzugriffe, die beim Verarbeiten einer Anforderung mit PASID durch Umsetzung der ersten Ebene erzeugt werden, der Umsetzung der zweiten Ebene unterzogen werden. Dies weist den Zugriff auf PASID-Tabelleneinträge, den Zugriff auf Einträge der Paging-Struktur der ersten Ebene (PML4E, PDPE, PDE, PTE, die in Tabelle 1 erklärt sind) und den Zugriff auf die Ausgabeadresse von der Umsetzung der ersten Ebene auf. Mit der verschachtelten Umsetzung kann ein Gastbetriebssystem, das innerhalb einer virtuellen Maschine ausgeführt wird, Umsetzung der ersten Ebene nutzen, während der VMM 115 Speicher durch Aktivieren verschachtelter Umsetzungen der zweiten Ebene virtualisieren kann. In einer Ausführungsform führt die Umsetzung der ersten Ebene das Mapping von Eingabeadressen auf 4-KByte-, 2-Mbyte- oder 1-GByte-Seiten durch. Ferner kann die Umsetzung der zweiten Ebene bei jedem Schritt verschachtelt werden, um Eingabeadressen auf zum Beispiel 4-KByte-, 2-Mbyte- oder 1-GByte-Seiten zu mappen.
  • In einer Ausführungsform beschränkt die Umsetzung der zweiten Ebene eine Eingabeadresse auf eine ausführungsspezifische Adressenbreite, die durch ein Feld Maximum Guest Address Width (MGAW — maximale Gastadressenbreite) in einem Extended-Capability-Register 223 mit der IOMMU 220 gemeldet wird. Anforderungen ohne PASID, die an der IOMMU 220 eintreffen, werden der MGAW-Adressüberprüfung unterzogen und Verletzungen werden als Umsetzungsfehler behandelt.
  • Die Umsetzung der zweiten Ebene verwendet eine hierarchische Paging-Struktur, die in der PCIe®-ATS-Spezifikation beschrieben ist. In einer Ausführungsform ist zum Erlauben des Abklapperns der Seitentabelle mit 9-Bit-Schritt (wobei der Schrittwert die Größe der Seitentabelle der zweiten Ebene definiert) ein Wert für die Adjusted Guest Address Width (AGAW — angepasste Gastadressbreite) für eine Domäne als ihr Wert für die Guest Address Width (GAW — Gastadressbreite) definiert, der derart angepasst ist, dass (AGAW-12) zum Beispiel ein Vielfaches von 9 ist. Die AGAW gibt eine Anzahl von Ebenen für das Abklappern der Umsetzungsseitentabelle der zweiten Ebene an. Hardware-Ausführungen melden die unterstützten AGAWs über ihr entsprechendes Extended Capability Register 223. TABELLE 2
    Paging-Struktur Name Eintrag Physikalische Adresse von Struktur Bits Auswahl Eintrag Seiten-Mapping
    Zweite Ebene PML4-Tabelle SL-PML4E Context -Eintrag (oder Extended-Context -Eintrag) 47:39 k. A.
    Zweite Ebene Page-Directory-Pointer-Tabelle SL-PDPE SL-PML4E1 38:30 1-GByte-Seite (wenn Feld Page-Size (PS) eingestellt ist)
    Zweite Ebene Seitenverzeichnis SL-PDE SL-PDPE 29:21 2-MByte-Seite (wenn Feld Page-Size (PS) eingestellt ist)
    Zweite Ebene Seitentabelle SL-PTE SL-PDE 20:12 4-KByte-Seite
  • Tabelle 2 gibt die verschiedenen Namen für die Umsetzungsstrukturen der zweiten Ebene an, die basierend auf ihrer Verwendung im Umsetzungsprozess gegeben werden. Tabelle 2 stellt auch für jede Struktur die Quelle der physikalischen Adresse, die für ihre Lokalisierung verwendet wird, die Bits in der Eingabeadresse, die zum Auswählen eines Eintrags von der Struktur verwendet wird, und Details, ob und wie ein solcher Eintrag das Mapping einer Seite durchführen kann, an. Wenn sie innerhalb der verschachtelten Umsetzungen verschachtelt ist, klappert eine erste Ebene einer Tabelle einer zweiten Ebene die Umsetzungsstrukturen 410A, 412A, 414A und 416A, die den Paging-Strukturen entsprechen, die in Tabelle 2 aufgelistet sind, in Schritten ab. Das Abklappern einer zweiten Ebene der Tabelle der zweiten Ebene in Schritten klappert die Umsetzungsstrukturen 410B, 412B, 414B und 416B in Schritten ab, die ebenso den Paging-Strukturen der zweiten Ebene von Tabelle 2 entsprechen. Das Abklappern der verschachtelten Umsetzungsseitentabelle kann auf diese Weise durch die Paging-Strukturen 410C bis 416C, 410D bis 416D und 410E bis 416E der zweiten Ebene fortgesetzt werden, um den Seitentabelleneintrag (Page Table Entry — PTE) der Paging-Strukturen der ersten Ebene zu erzeugen, der das Mapping der 4KB-Seite durchführt. In dieser Ausführungsform wird durch das schrittweise Abklappern einer letzten Ebene der Seitenstrukturen der zweiten Ebene, nämlich 410G bis und mit 416G, ein Mapping einer letzten (HPA) Seite 430 als eine Ausgabe der verschachtelten Umsetzung erzeugt.
  • Um die Art und Weise zu ändern, auf die die IOMMU 220 Umsetzungsanforderungen und umgesetzte Anforderungen handhabt, können zusätzliche Extended Capability Register 223 neue Modi in Bezug auf die Funktionen der Umsetzungsanforderung und umgesetzten Anforderung melden, die zusätzlichen Schutz vor DMA-Anforderungen unterstützen, die sonst im Cache gespeicherte HPAs in einem Address Translation Cache (ATC) 324 einer E/A-Vorrichtung verwenden würden. Diese neuen Modi können auch innerhalb von Seitentabelleneinträgen eingestellt werden und letztlich durch ein Extended Capability Register 223 an Software gemeldet werden.
  • In einer Ausführungsform kann ein Restrict-Translation-Request-Response-Modus (RTRR — Modus zur Einschränkung der Umsetzungsanforderungsantwort), wenn er eingestellt ist, das Senden einer HPA an einen ATC 324 einer E/A-Vorrichtung einschränken. Stattdessen sendet die IOMMU 220 im RTRR-Modus eine GPA von einem Seitentabelleneintrag der Umsetzung zurück. Zum Beispiel kann im Fall der verschachtelten Umsetzung von 4 die IOMMU die GPA des Seitentabelleneintrags (Page Table Entry — PTE) 418 zurücksenden, der die Eingabe für die letzte Umsetzung der zweiten Ebene eines verschachtelten Abklapperns einer Seite ist. Die Tatsache, dass die E/A-Vorrichtung in einer Umsetzungsantwort anstatt einer HPA eine GPA empfangen hat, ist gegenüber dem ATC 324 transparent. Als Reaktion auf einen ATC-Treffer der GPA in der Umsetzungsanforderung, kann der ATC die GPA in eine umgesetzte Anforderung einschließen, die an die IOMMU zurückgesandt wird. In einer Ausführungsform kann es erforderlich sein, dass der ATC 324 die GPA in der umgesetzten Anforderung mit einer PASID sendet. Dementsprechend kann der ATC 324 ein Modus/Steuer-Bit aufweisen, das Software (die den RTRR-Modus in der IOMMU ermöglicht) verwenden kann, um anzufordern, dass der ATC 324 umgesetzte Anforderungen mit der PASID erzeugt. Das Steuer-Bit kann innerhalb eines Steuerregisters 323 eingestellt sein (entweder als ein bestehendes Bit in einem bestehenden Steuerregister oder ein neues Bit innerhalb eines neuen Steuerregisters). Wenn der ATC 324 feststellt, dass das Steuer-Bit aktiviert ist, kann der ATC 324 die umgesetzte Anforderung mit der PASID erzeugen.
  • Die IOMMU 220 kann dann beim Empfang der umgesetzten Anforderung mit der GPA die Adresse in der umgesetzten Anforderung als eine GPA behandeln, wobei die GPA zusätzlicher Umsetzung (die als eine zusätzliche Schutzprüfung wirkt) durch die GPA-zu-HPA-Umsetzung der IOMMU unterzogen wird, wie durch den VMM eingerichtet. Wenn verschachtelte Umsetzung aktiviert ist, kann diese GPA-zu-HPA-Umsetzung zum Abschließen des Abklapperns der Seitentabelle, z. B. Umsetzung der GPA durch die letzte Ebene der Paging-Strukturen der zweiten Ebene 410G bis und mit 416G, bestimmt sein. Dementsprechend wird, wenn der ATC beeinträchtigt ist und böswillige Adressen in umgesetzten Anforderungen erzeugt, der ATC 324 immer noch der GPA-zu-HPA-Umsetzung wie jede nicht umgesetzte Anforderung unterzogen.
  • Da die IOMMU 220 bereits eine Steuerdatenstruktur pro Vorrichtung (z. B. pro E/A-Vorrichtung) und eine pro Adressraum unterstützt, kann ein RTRR-Modusfeld in eine solche Steuerstruktur eingeschlossen werden. 5 ist ein Blockdiagramm einer Steuerdatenstruktur 500, das eine Extended-Context-Entry-Datenstruktur veranschaulicht, die die Umsetzung von Speicherzugriffsanforderungen in Paging-Tabellen der zweiten Ebene gemäß einer Ausführungsform der vorliegenden Offenbarung unterstützt. In dieser Ausführungsform ist das RTRR-Modus-Feld in einem Extended-Context-Eintrag einer Extended-Root-Entry-Tabelle für Umsetzungen der zweiten Ebene innerhalb der IOMMU 220 eingeschlossen. Das RTRR-Modus-Feld kann in irgendeinem leeren oder nicht reservierten Bit des Extended-Context-Eintrags eingeschlossen werden. Wenn das RTRR-Modus-Feld eingestellt ist, kann ein Bit innerhalb eines RTRR-Extended-Capability-Registers gespeichert werden, um der IOMMU 220 und der VMM zu signalisieren, dass eine Umsetzungsanforderung von der E/A-Vorrichtung oder die an einen spezifischen virtuellen Gastadressraum zu richten ist, gemäß dem RTRR-Modus zu behandeln ist.
  • 6 ist ein Blockdiagramm einer Steuerdatenstruktur 600, das einen Eintrag einer Process Address Space Identifier (PASID) in einer PASID-Tabelle 600 veranschaulicht, die zum Umsetzen von Speicherzugriffsanforderungen mit PASID gemäß einer Ausführungsform der vorliegenden Offenbarung verwendet wird. In einer anderen Ausführungsform wird das RTRR-Modus-Feld zu einem PASID-Eintrag in der Tabelle hinzugefügt, die zum Beispiel zum Umsetzen von Speicherzugriffsanforderungen mit PASID verwendet wird. Das RTRR-Modus-Feld kann dann das RTRR-Extended Capability Register populieren, um der IOMMU 220 und der VMM zu signalisieren, dass eine Umsetzungsanforderung von der E/A-Vorrichtung oder die an einen spezifischen Adressraum zu richten ist, gemäß dem RTRR-Modus zu behandeln ist.
  • Im RTRR-Modus werden die GPAs nun in einem ATC 324 einer E/A-Vorrichtung 318 im Cache gespeichert. Irgendein VMM-Paging von physikalischen Gastadressen ist nicht von einem bestehenden Verfahren zur Abwandlung des GPA-zu-HPA-Mappings als nicht vorhanden und Durchführung von IOTLB- und ATC-Ungültigkeitserklärung zum seitenweisen Auslagern einer GPA beschränkt. Das ist so, weil das Durchführen dieser Schritte nicht korrigierbare Fehler bei gegebenenfalls vorhandenen gegenwärtig pendenten umgesetzten Anforderungen verursachen würden, da diese GPA-zu-HPA-Umsetzungen unterzogen werden.
  • Stattdessen kann ein neues Feld No-Permission-on-Translation-Request-Response (NP-TRSP — keine Berechtigung für Umsetzungsanforderungsantwort) zu vorhandenen Paging-Einträgen der zweiten Ebene hinzugefügt werden und ein NP-TRSP-Extended Capability Register kann, wenn es eingestellt ist, auch hinzugefügt werden, um der IOMMU 220 und der VMM 115 zu signalisieren, dass eine Umsetzungsanforderung auf unterschiedliche Art und Weise zu behandeln ist. Wenn zum Beispiel das NP-TRSP-Feld eingestellt ist, kann ein Umsetzungseintrag in einer Umsetzungsantwort auf null Berechtigungen (z. B. R=W=X=0) eingestellt werden, unabhängig davon, ob die Umsetzung in die HPA erfolgreich war oder nicht. Eine zusätzliche Verwendung für das NP-TRSP-Feld wird in der Folge beschrieben.
  • 7 ist eine Tabelle 700, die Paging-Einträge einer zweiten Ebene veranschaulicht, die eine zweite Ebene der Adressumsetzung unterstützten, die durch eine IOMMU 220 durchgeführt wird, gemäß einer Ausführungsform der vorliegenden Offenbarung. Es sei erwähnt, dass die IOMMU 220 zwei Ebenen von Adressumsetzung (erste Ebene und zweite Ebene) unterstützt. Die Adressumsetzung der zweiten Ebene wird durch VMMs verwendet, um GPA-zu-HPA-Umsetzung durchzuführen. In einer Ausführungsform wird das NP-TRSP-Modus-Feld einem Paging-Eintrag der zweiten Ebene hinzugefügt. Zum Beispiel kann das NP-TRSP-Modus-Feld zu irgendeinem nicht verwendeten Feld, wie beispielsweise einem der Bits 8 bis 10 oder 52 bis 61 in den Paging-Einträgen der zweiten Ebene von 7, hinzugefügt werden.
  • 8 ist ein Ablaufdiagramm 800 eines Verfahrens zur IOMMU-Handhabung von Umsetzungsanforderungen unter Verwendung bestimmter Antworteinschränkungen, wo der Restrict-Translation-Request-Response-Modus (RTRR — Modus zur Einschränkung der Umsetzungsanforderungsantwort) eingestellt ist (wie vorhergehen erörtert). Das Verfahren 800 kann durch ein System durchgeführt werden, das Hardware (z. B. Schaltungen, dedizierte Logik und/oder programmierbare Logik), Software (z. B. Befehle, die auf einem Computersystem ausführbar sind, um Hardware-Simulation durchzuführen) oder eine Kombination davon aufweisen kann. In einem veranschaulichenden Beispiel kann das Verfahren 800 durch die IOMMU 120 oder 220 von 1 bis 3 durchgeführt werden.
  • Unter Bezugnahme auf 8 kann das Verfahren 800 beginnen, wo die IOMMU als Reaktion auf den Empfang einer Umsetzungsanforderung von einer E/A-Vorrichtung bestimmt, ob die Umsetzungsanforderungsverarbeitung eine erfolgreiche Umsetzung einer virtuellen Adresse ergibt (805). Wenn die Antwort im Block 805 Nein ist, ist ein wahrscheinliches Ergebnis ein Terminal Fault und in diesem Fall kann die IOMMU an die E/A-Vorrichtung eine Umsetzungsantwort senden, die null Berechtigungen im Hinblick auf Zugriffsrechte auf irgendeine resultierende HPA aufweist (z. B. R=W=X=0) (810). Wenn die Antwort im Block 805 Ja ist, kann das Verfahren damit fortgesetzt werden, dass die IOMMU ferner bestimmt, ob irgendein Paging-Eintrag der zweiten Ebene ein Feld No-Permission-on-Translation-Request-Response (NP-TRSP — keine Berechtigung für Umsetzungsanforderungsantwort) aufweist, dass auf Eins („1“) eingestellt ist (815). Wenn die Antwort im Block 815 Nein ist, kann das Verfahren damit fortgesetzt werden, dass die IOMMU die Umsetzungsanforderung normal durch Senden einer umgesetzten HPA an die E/A-Vorrichtung in der Umsetzungsantwort verarbeitet (820). Wenn die Antwort im Block 815 Ja ist, kann das Verfahren damit fortgesetzt werden, dass die IOMMU bestimmt, ob die Umsetzungsanforderung eine Prozessadressraumkennung (Process Address Space Identifier — PASID) aufweist (825).
  • In einer Ausführungsform wird, wenn die Umsetzung einer virtuellen Adresse erfolgreich war, das NP-TRSP-Feld nicht innerhalb eines Seitentabelleneintrags der zweiten Ebene eingestellt, und wenn die Umsetzungsanforderung eine PASID aufweist, kann das Verfahren damit fortgesetzt werden, dass die IOMMU bestimmt, ob verschachtelte Umsetzung aktiviert ist (830). Wenn verschachtelte Umsetzung deaktiviert ist, dann wird die Umsetzungsanforderung nicht der Umsetzung der zweiten Ebene unterzogen und die IOMMU kann die Umsetzungsanforderung normal durch Senden einer umgesetzten HPA an die E/A-Vorrichtung in der Umsetzungsantwort verarbeiten (835). Wenn verschachtelte Umsetzung für die Umsetzungsanforderungen mit PASID aktiviert ist, setzt die IOMMU eine virtuelle Gastadresse (Guest Virtual Address — GVA) in eine GPA um und setzt dann die GPA in eine HPA um, schließt aber lediglich die GPA der Speicherseite in die Umsetzungsantwort ein (840).
  • In einer Ausführungsform wird, wenn die Umsetzung einer virtuellen Adresse erfolgreich war, das NP-TRSP-Feld nicht innerhalb eines Paging-Eintrags der zweiten Ebene eingestellt, und wenn die Umsetzungsanforderung keine PASID aufweist, kann das Verfahren damit fortgesetzt werden, dass die IOMMU bestimmt, ob verschachtelte Umsetzung aktiviert ist (845). Wenn verschachtelte Umsetzung deaktiviert ist, kann die IOMMU innerhalb der Umsetzungsantwort einen eingestellten Flag Untranslated Access Only (U — nur nicht umgesetzter Zugriff) einschließen, ohne irgendeine Adresse zurückzusenden (850). Dieser Typ von Umsetzungsantwort zwingt die E/A-Vorrichtung, eine nicht umgesetzte Anforderung (ohne PASID) mit der Eingabeadresse (einer GPA oder einer IOVA) zu erzeugen. Wenn die verschachtelte Umsetzung nicht am Block 845 aktiviert ist, kann die IOMMU die GPA innerhalb der Umsetzungsantwort übermitteln (855). Eine verschachtelte Umsetzung ohne PASID setzt eine virtuelle E/A-Adresse (IOVA) (die einen virtuellen E/A-Adressraum referenziert) in eine GPA um und setzt die GPA (die dem physikalischen Gastadressraum zugehörig ist) in eine HPA um. Aber, anstatt die umgesetzte HPA zu senden, kann die IOMMU in diesem Fall lediglich die GPA übermitteln, derart dass die GPA eine weitere Umsetzung erfordert, nachdem sie in einer umgesetzten Anforderung gesendet wurde.
  • 9 ist ein Ablaufdiagramm eines Verfahrens 900 zur IOMMU-Handhabung einer Paging-Sequenz während eines Speicher-Overcommit beim Einsatz der Umsetzungsantworteinschränkungen von 8. Das Verfahren 900 kann durch ein System durchgeführt werden, das Hardware (z. B. Schaltungen, dedizierte Logik, und/oder programmierbare Logik), Software (z. B. Befehle, die auf einem Computersystem ausführbar sind, um Hardware-Simulation durchzuführen) oder eine Kombination davon aufweisen kann. In einem veranschaulichenden Beispiel kann das Verfahren 800 durch den VMM 115 von 1 in Verbindung mit der IOMMU 120 oder 220 von 1 bis 3 durchgeführt werden.
  • Da die GPAs nun in einem ATC einer E/A-Vorrichtung im Cache gespeichert werden, und DMA-Anforderungen (z. B. umgesetzte Anforderungen) von der E/A-Vorrichtung die GPA und nicht eine HPA aufweisen, kann der VMM 115 eine zusätzliche Menge von Schritten benötigen, die bei einem Seitenfehler zuerst die Ungültigkeitserklärung von im Cache gespeicherten GPAs innerhalb von Paging-Strukturen der zweiten Ebene signalisieren. Diese Ungültigkeitserklärung kann derart durchgeführt werden, dass irgendeine neue Umsetzungsanforderung, die das Mapping auf eine ungültige GPA durchführt, null Berechtigungen in einer Umsetzungsantwort von der IOMMU ergibt.
  • Genauer gesagt, kann unter Bezugnahme auf 9 das Verfahren 900 dort beginnen, wo der VMM als Reaktion auf eine Umsetzungsanforderung bestimmen kann, ob eine physikalische Gastadresse (zum Zweck dieser Erklärung als GPA1 bezeichnet) aufgrund eines Seitenfehlers (z. B. eines Speicher-Overcommits, das das seitenweise Einlagern einer HPA erfordert) seitenweise aus dem Speicher ausgelagert werden muss (910). Wenn die Antwort Ja ist, dann kann das Verfahren damit fortgesetzt werden, dass der VMM das Feld No-Permission-on-Translation-Request-Response (NP-TRSP — keine Berechtigung für Umsetzungsanforderungsantwort) in einer Paging-Tabelle einer zweiten Ebene einstellt, was einem Mapping zwischen GPA1 und einer physikalischen Host-Adresse (zu Zwecken der Erklärung HPA1 genannt) entspricht (915). Das Verfahren kann damit fortgesetzt werden, dass der VMM auch eine IOTLB-Ungültigkeitserklärung (zum Löschen der GPA1 aus dem IOTLB der IOMMU) und eine ATC-Ungültigkeitserklärung (zum Löschen der GPA1 aus dem ATC der E/A-Vorrichtung) der im Cache gespeicherten GPA1-Adresse anfordert (920) und den Abschluss der GPA1-Ungültigkeitserklärungen durch den IOTLB und den ATC erwartet (925). Der Ungültigkeitserklärungsprozess wurde vorhergehend ausführlicher beschrieben.
  • Das Verfahren 900 kann damit fortgesetzt werden, dass die IOMMU während einer Umsetzungsanforderung, die eine virtuelle Adresse aufweist, deren Mapping auf GPA1 durchgeführt wird, bestimmt, ob das NP-TRSP-Feld innerhalb eines Paging-Eintrags einer Paging-Tabelle einer zweiten Ebene eingestellt ist (930). Wenn die Antwort Nein ist, ist das NP-TRSP-Feld null („0“) und die IOMMU kann wie normal mit dem Umsetzen der virtuellen Adresse in eine GPA, Umsetzen der GPA in eine entsprechende HPA und Senden der umgesetzten GPA in einer Umsetzungsantwort an die E/A-Vorrichtung fortfahren (935). Wenn die Antwort in Block 930 Ja ist, kann die IOMMU null Berechtigungen für Zugriffsrechte auf die Speicherseite der HPA1 in einer Umsetzungsantwort an die E/A-Vorrichtung senden (940). Dementsprechend stellen das NP-TRSP-Feld und die Ungültigkeitserklärungen der GPA1-Adresse sicher, dass irgendwelche neuen Umsetzungsanforderungen, die GPA1 aufweisen, geräumt werden (z. B. aus dem Umsetzungs-Pipeline-Prozess entfernt werden, der unter Bezugnahme auf 3 beschrieben ist).
  • Da die im Cache gespeicherte GPA1 nun für ungültig erklärt wurde, kann das Verfahren damit fortgesetzt werden, dass der VMM das GPA1-zu-HPA1-Mapping im Second-Level Paging Table Pointer (SLPTPTR — Zeiger für Paging-Tabelle der zweiten Ebene) als nicht vorhanden durchführt (950). Dieser Schritt in Block 950 kann der gleiche wie das Einstellen der Berechtigungen Execute (X — Ausführen), Write (W — Schreiben) und Read (R — Lesen) in einem Paging-Tabelleneintrag einer zweiten Ebene (7) für das GPA1-zu-HPA1-Mapping auf Null („0“) sein. Das Verfahren kann damit fortgesetzt werden, dass das VMM Ungültigkeitserklärungen von gegebenenfalls in dem IOTLB (der IOMMU) und dem ATC (der E/A-Vorrichtung) im Cache gespeicherten HPA1 durchführt (960), und den Abschluss der HPA1-Ungültigkeitserklärungen durch den IOTOLB und den ATC erwartet (970). Nachdem diese Schritte abgeschlossen wurden und die unterstützenden Strukturen und Daten, die das GPA1-zu-HPA1-Mapping stützen, entfernt wurden, ist es sicher, zum Beispiel Daten von der HPA1-Adresse des Hauptspeichers seitenweise zu irgendeiner externen Speichervorrichtung auszulagern (980). Nachdem das seitenweise Auslagern von HPA1 abgeschlossen wurde, kann bei einem nächsten Seitenfehler (z. B. einer Umsetzungsanforderung für die GPA1, die nicht mehr im Cache gespeichert ist) das Verfahren dadurch fortgesetzt werden, dass es ein seitenweises Einlagern einer neuen HPA (zu Zwecken der Erklärung HPA2 genannt) und das Mapping von GPA1 auf HPA2 mit dem auf Null („0“) zurückgesetzten NP-TRSP-Feld fordert (990). Das Verfahren 900 kann dann Iterationen, die beim Block 905 beginnen, aber in Bezug auf das GPA1-auf-HPA2-Mapping fortsetzen.
  • 10A ist Blockdiagramm, das eine Mikroarchitektur für einen Prozessorkern 1000 veranschaulicht, der in den Root-Complex von 2 und 3 aufgenommen werden kann. Insbesondere stellt der Prozessorkern 1000 einen In-Order-Architekturkern und eine Registerumbenennungslogik, Out-of-Order-Ausgabe/Ausführungslogik bildlich dar, die in einen Prozessor gemäß mindestens einer Ausführungsform der Offenbarung aufzunehmen ist. Die Ausführungsformen des Fehlerkorrekturcodes, die zusätzliche Bits tragen, können durch den Prozessorkern 1000 ausgeführt werden.
  • Der Prozessorkern 1000 weist eine Front-End-Einheit 1030 auf, die an eine Ausführungsmaschineneinheit 1050 gekoppelt ist und beide sind an eine Speichereinheit 1070 gekoppelt. Der Prozessorkern 1000 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 aufweisen. Als noch eine andere Möglichkeit kann der Prozessorkern 1000 einen Spezialkern, wie beispielsweise einen Netz- oder Kommunikationskern, eine Kompressionsmaschine, einen Grafikkern oder dergleichen aufweisen. In einer Ausführungsform kann der Prozessorkern 1000 ein Mehrkernprozessor sein oder kann Teil eines Mehrprozessorsystems sein.
  • Die Front-End-Einheit 1030 weist eine Sprungvorhersageeinheit 1032 auf, die an eine Befehls-Cache-Einheit 1034 gekoppelt ist, die an einen Übersetzungspuffer (Translation Lookaside Buffer - TLB) 1036 gekoppelt ist, der an eine Befehlsabrufeinheit 1038 gekoppelt ist, die an eine Decodierungseinheit 1040 gekoppelt ist. Die Decodierungseinheit 1040 (auch als ein Decodierer bekannt) kann Befehle decodieren und als einen Ausgang eine/n oder mehrere Mikrooperationen, Mikrocode-Eingabepunkte, Mikrobefehle, andere Befehle oder andere Steuersignale erzeugen, die von den Primärbefehlen decodiert werden oder diese auf eine andere Weise widerspiegeln oder davon abgeleitet werden. Der Decodierer 1040 kann unter Verwendung verschiedener unterschiedlicher Mechanismen ausgeführt werden. Beispiele für zweckmäßige Mechanismen weisen Verweistabellen, Hardware-Ausführungen, programmierbare logische Felder (Programmable Logic Arrays - PLAs), Mikrocode-Nurlesespeicher (ROMs) usw. auf, sind aber nicht darauf beschränkt. Die Befehls-Cache-Einheit 1034 ist ferner an die Speichereinheit 1070 gekoppelt. Die Decodierungseinheit 1040 ist an eine Umbenennungs/Zuweisungseinheit 1052 in der Ausführungsmaschineneinheit 1050 gekoppelt.
  • Die Ausführungsmaschineneinheit 1050 weist die Umbenennungs/Zuweisungseinheit 1052 auf, die an eine Retirement-Einheit 1054 und an eine Menge von einer oder mehreren Scheduler-Einheit/en 1056 gekoppelt ist. Die Scheduler-Einheit/en 1056 stellt/stellen irgendeine Anzahl von unterschiedlichen Schedulern, einschließlich Reservierungsstationen (RS), zentrales Befehlsfenster usw. dar. Die Scheduler-Einheit/en 1056 kann/können an die physikalische/n Registerdatei-Einheit/en 1058 gekoppelt sein. Jede von der/den physikalischen Registerdatei-Einheiten/en 1058 stellt eine oder mehrere physikalische Registerdateien dar, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen, wie beispielsweise skalare Ganzzahl, skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma usw., Status (z. B. einen Befehlszeiger, der die Adresse des nächsten auszuführenden Befehls ist) usw. speichern. Die physikalische/n Registerdatei/en-Einheit/en 1058 kann/können durch die Retirement-Einheit 1054 überlappt werden, um verschiedene Arten zu veranschaulichen, auf die die Registerumbenennung und Out-of-order-Ausführung ausgeführt werden können (z. B. unter Verwendung eines/von Neuordnungspuffers/Neuordnungspuffern und (einer) Retirement-Registerdatei/en, unter Verwendung (einer) zukünftigen/zukünftiger Datei/en, von einem oder mehreren Verlauf-Puffern und (einer) Retirement-Registerdatei/en; unter Verwendung von (einer) Register-Map/s und einem Pool von Registern; usw.).
  • Allgemein sind die Architekturregister von außerhalb des Prozessors oder aus der Perspektive eines Programmierers sichtbar. Die Register sind nicht auf irgendeinen bestimmten bekannten Typ von Schaltung beschränkt. Verschiedene unterschiedliche Typen von Registern sind geeignet, solange sie in der Lage sind, Daten zu speichern und bereitzustellen, wie hier beschrieben. Beispiele für zweckmäßige Register weisen dedizierte physikalische Register, dynamisch zugewiesene physikalische Register, die Registerumbenennung verwenden, und Kombinationen von dedizierten und dynamisch zugewiesenen Registern usw. auf, sind aber nicht darauf beschränkt. Die Retirement-Einheit 1054 und die physikalischen Registerdatei/en-Einheit/en 1058 ist/sind an den/die Ausführungs-Cluster 1060 gekoppelt. Der/die Ausführungscluster 1060 weist/weisen eine Menge von einer oder mehreren Ausführungseinheiten 1062 und eine Menge von einer oder mehreren Speicherzugriffseinheiten 1064 auf. Die Ausführungseinheiten 1062 können verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) aufweisen und arbeiten auf verschiedenen Typen von Daten (z. B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma).
  • Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten aufweisen können, die für spezifische Funktionen oder Mengen von Funktionen bestimmt sind, können andere Ausführungsformen lediglich eine Ausführungseinheit oder mehrere Ausführungseinheiten aufweisen, die alle sämtliche Funktionen durchführen. Die Scheduler-Einheit/en 1056, Einheit/en der physikalischen Registerdatei/en 1058 und der/die Ausführungs-Cluster 1060 sind als möglicherweise mehrere gezeigt, da bestimmte Ausführungsformen separate Pipelines für bestimmte Typen von Daten/Operationen erzeugen (z. B. eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma/gepackte Ganzzahl/gepackte Gleitkomma/Vektorganzzahl/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriff-Pipeline, die jeweils ihre/seine eigenen Scheduler-Einheit, Einheit für physikalische Registerdatei/en und/oder Ausführungs-Cluster aufweisen - und im Fall einer separaten Speicherzugriffs-Pipeline werden bestimmte Ausführungsformen ausgeführt, in denen lediglich der Ausführungs-Cluster dieser Pipeline den/die Speicherzugriffseinheit/en 1064 aufweist). Es versteht sich auch, dass dort, wo separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-order-Ausgabe/Ausführung und der Rest In-order sein können.
  • Die Menge von Speicherzugriffseinheiten 1064 kann an die Speichereinheit 1070 gekoppelt werden, die einen Daten-Prefetcher 1080, eine Daten-TLB-Einheit 1072, eine Daten-Cache-Einheit (DCU) 1074 und eine Level-2-Cache-Einheit 1076 (L2) aufweisen kann, um nur einige Beispiele zu nennen. In einigen Ausführungsformen ist die DCU 1074 auch als ein Daten-Cache des ersten Levels (L1-Cache) bekannt. Die DCU 1074 kann mehrere ausstehende Cache-Fehltreffer handhaben und die Bedienung von eingehenden Speicher- und Ladevorgängen fortsetzen. Sie unterstützt auch den Erhalt der Cache-Kohärenz. Die Daten-TLB-Einheit 1072 ist ein Cache, der verwendet wird, um die Geschwindigkeit der virtuellen Adressumsetzung durch Mapping virtueller und physikalischer Adressräume zu verbessern. In einem Ausführungsbeispiel können die Speicherzugriffseinheiten 1064 eine Ladeeinheit, eine Speicheradresseneinheit und eine Speicherdateneinheit aufweisen, die jeweils an die Daten-TLB-Einheit 1072 in der Speichereinheit 1070 gekoppelt sind. Die L2-Cache-Einheit 1076 kann an eine oder mehrere Cache-Ebenen und schließlich an einen Hauptspeicher gekoppelt sein.
  • In einer Ausführungsform führt der Daten-Prefetcher 1080 spekulativ das Laden/Prefetching von Daten in die DCU 1074 durch, indem er automatisch die Daten vorhersagt, deren Verbrauch durch ein Programm unmittelbar bevorsteht. Prefeteching kann das Übertragen von Daten, die an einem Speicherplatz (z. B. Position) einer Speicherhierarchie gespeichert sind (z. B. Caches oder Speicher niedrigerer Ebenen), zu einem Speicherplatz einer höheren Ebene bezeichnen, der näher an dem Prozessor ist (was z. B. eine niedrigere Zugriffslatenz ergibt), bevor die Daten tatsächlich durch den Prozessor angefordert werden. Genauer gesagt, kann Prefetching das frühe Abrufen von Daten von einem der Caches/Speicher der niedrigeren Ebene auf einen Daten-Cache und/oder Prefetch-Puffer, bevor der Prozessor eine Anforderung für die spezifischen zurückgesendeten Daten ausgibt, bezeichnen.
  • Der Prozessorkern 1000 kann einen oder mehrere Befehlssätze (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von Imagination Technologies aus Kings Langley, Hertfordshire, UK; den ARM-Befehlssatz (mit wahlfreien zusätzlichen Erweiterungen, wie beispielsweise NEON) von ARM Holdings aus Sunnyvale, CA) unterstützen.
  • Es versteht sich, dass der Kern Multithreading (das Ausführen von zwei oder mehr parallelen Mengen von Operationen oder Threads) unterstützen kann und dies auf eine Vielzahl von Arten tun kann, die Zeitscheiben-Multithreading, simultanes Multithreading (wo ein einziger physikalischer Kern einen logischen Kern für jeden der Threads bereitstellt, für die dieser physikalische Kern simultanes Multithreading ausführt) oder eine Kombination davon (z. B. Abrufen mit Zeitschlitz und danach Decodieren und simultanes Multithreading, wie beispielsweise in der Intel® Hyperthreading-Technologie) aufweisen.
  • Obgleich die Registerumbenennung im Zusammenhang mit der Out-of-order-Ausführung beschrieben wird, versteht sich, dass die Registerumbenennung in einer In-order-Architektur verwendet werden kann. Während die veranschaulichte Ausführungsform des Prozessors auch separate Befehls- und Daten-Cache-Einheiten und eine gemeinsam verwendete L2-Cache-Einheit aufweist, können alternative Ausführungsformen einen einzigen internen Cache für sowohl Befehle als auch Daten aufweisen, wie zum Beispiel einen internen Level 1 (L1) Cache oder mehrere Levels von internem Cache. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache aufweisen, der außerhalb des Kerns und/oder des Prozessors liegt. Alternativ kann der gesamte Cache außerhalb des Kerns und/oder des Prozessors liegen.
  • 10B ist ein Blockdiagramm, das eine In-Order-Pipeline und eine Registerumbenennungsstufe, Out-Of-Order-Ausgabe/Ausführungspipeline veranschaulicht, die durch den Prozessor 1000 von 10A gemäß einigen Ausführungsformen der Offenbarung ausgeführt wird. Die Kästchen mit durchgezogener Linie in 10B veranschaulichen eine In-order-Pipeline, während die Kästchen mit gestrichelten Linien eine Registerumbenennungs-, Out-of-order-Ausgabe/Ausführungs-Pipeline veranschaulichen. In 10B weist eine Prozessor-Pipeline 1090 eine Abrufstufe 1002, eine Längendecodierungsstufe 1004, eine Decodierungsstufe 1006, eine Zuweisungsstufe 1008, eine Umbenennungsstufe 1010, eine Scheduling-Stufe (auch als Abfertigungs- oder Ausgabestufe bekannt) 1012, eine Registerlese/Speicherlesestufe 1014, eine Ausführungsstufe 1016, eine Rückschreib/Speicherschreibstufe 1018, eine Ausnahmebehandlungsstufe 1022 und eine Commit-Stufe 1024 auf. In einigen Ausführungsformen kann die Reihenfolge der Stufen 1002 bis 1024 sich von den veranschaulichten unterscheiden und ist nicht auf die spezifische Reihenfolge beschränkt, die in 10B gezeigt ist.
  • 11 veranschaulicht ein Blockdiagramm der Mikroarchitektur für einen Prozessor 1100 (die in einer Ausführungsform den Root-Complex von 2 bis 3 darstellen kann), der Logikschaltungen aufweist. In einigen Ausführungsformen kann ein Befehl gemäß einer Ausführungsform ausgeführt werden, um auf Datenelementen, die Größen von Bytes, Wörtern, Doppelwörtern, Vierfachwörtern usw. aufweisen, sowie Datentypen zu arbeiten, wie beispielsweise Ganzzahl mit einfacher und doppelter Präzision und Gleitkomma-Datentypen. In einer Ausführungsform ist das In-Order-Front-End 1101 der Teil des Prozessors 1100, der auszuführende Befehle abruft und sie vorbereitet, um später in der Prozessor-Pipeline verwendet zu werden.
  • Das Front-End 1101 kann mehrere Einheiten aufweisen. In einer Ausführungsform ruft der Befehls-Prefetcher 1116 Befehle vom Speicher ab und gibt sie in einen BefehlsDecodierer 1118 ein, der sie wiederum decodiert oder interpretiert. Zum Beispiel decodiert der Decodierer in einer Ausführungsform einen empfangenen Befehl in eine oder mehrere Operationen, die „Mikrobefehle“ oder „Mikrooperationen“ (auch Mikro-Op oder µops genannt) genannt werden, die die Maschine ausführen kann. In anderen Ausführungsformen parst der Decodierer den Befehl in einen Opcode und entsprechende Daten und Steuerungsfelder, die durch die Mikroarchitektur verwendet werden, um Operationen gemäß einer Ausführungsform durchzuführen. In einer Ausführungsform nimmt der Ablaufverfolgungs-Cache 1130 decodierte µops und assembliert sie in geordnete Programmsequenzen oder Ablaufverfolgungen in der µops-Warteschlange 1134 für die Ausführung. Wenn der Ablaufverfolgungs-Cache 1130 einem komplexen Befehl begegnet, kann der Mikrocode-ROM (oder -RAM) 1132 die µops bereitstellen, die für den Abschluss der Operation benötigt werden.
  • Einige Befehle werden in eine einzelne Micro-op umgewandelt, während andere mehrere Micro-ops erfordern, um die gesamte Operation abzuschließen. In einer Ausführungsform greift, wenn mehr als vier Micro-ops erforderlich sind, um einen Befehl abzuschließen, der Decodierer 1118 auf den Mikrocode-ROM 1132 zu, um den Befehl zu erstellen. Für eine Ausführungsform kann ein Befehl in eine kleine Anzahl von Micro-ops zur Verarbeitung beim Befehlsdecodierer 1118 decodiert werden. In einer anderen Ausführungsform kann ein Befehl innerhalb des Mikrocode-ROM 1132 gespeichert werden, wenn eine Anzahl von Micro-ops erforderlich wäre, um die Operation zu erledigen. Der Ablaufverfolgungs-Cache 1130 bezieht sich auf einen Eingabepunkt eines programmierbaren logischen Feldes (Programmable Logic Array — PLA), um einen richtigen Mikrobefehlszeiger zum Lesen der Mikrocodefolgen zum Abschließen von einem oder mehreren Befehlen gemäß einer Ausführungsform von dem Mikrocode-ROM 1132 zu lesen. Nachdem der Mikrocode-ROM 1132 das Sequenzieren von Micro-Ops für einen Befehl beendet hat, setzt das Front-End 1101 der Maschine das Abrufen von Micro-ops von dem Ablaufverfolgungs-Cache 1130 fort.
  • An der Out-Of-Order-Ausführungsmaschine 1103 werden die Befehle zur Ausführung vorbereitet. Die Out-Of-Order-Ausführungslogik weist eine Anzahl von Puffern auf, um den Fluss von Befehlen zu glätten und neu zu ordnen, um die Leistung zu optimieren, wenn sie die Pipeline durchqueren und zur Ausführung geplant werden. Die Zuweisungslogik weist die Maschinenpuffer und Ressourcen zu, die jede Uop zur Ausführung benötigt. Die Registerumbenennungslogik nimmt die Umbenennung von logischen Registern auf Einträge in einer Registerdatei vor. Die Zuweisungseinrichtung weist auch einen Eintrag für jede Uop in einer von den zwei Uop-Warteschlangen, eine für Speicheroperationen und eine für Nicht-Speicheroperationen, vor den Befehls-Schedulern zu: Speicher-Scheduler, schneller Scheduler 1102, langsamer/allgemeiner Gleitkomma-Scheduler 1104, und einfacher Gleitkomma-Scheduler 1106. Die µop-Scheduler 1102, 1104, 1106 bestimmen, wann eine Uop für die Ausführung bereit ist, basierend auf der Bereitschaft ihrer abhängigen Eingangsregister-Operandenquellen und der Verfügbarkeit der Ausführungsressourcen, die die µops benötigen, um ihre Operation abzuschließen. Der schnelle Scheduler 1102 einer Ausführungsform kann das Scheduling auf jeder Hälfte des Haupttaktzyklus durchführen, während die anderen Scheduler das Scheduling nur ein Mal pro Hauptprozessor-Taktzyklus durchführen können. Die Scheduler arbitrieren für die Verteilungsports für das Scheduling von µops zur Ausführung.
  • Die Registerdateien 1108, 1111, sitzen zwischen den Schedulern 1102, 1104, 1106 und den Ausführungseinheiten 1112, 1114, 1116, 1118, 1120, 1122, 1124 im Ausführungsblock 1111. Eine separate Registerdatei 1108, 1110 ist für Ganzzahlbeziehungsweise Gleitkommaoperationen vorhanden. Jede Registerdatei 1108, 1110 einer Ausführungsform weist auch ein Bypass-Netz auf, das soeben abgeschlossene Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umgehen oder an neue abhängige µops weiterleiten kann. Die Ganzzahlregisterdatei 1108 und die Gleitkommaregisterdatei 1110 sind auch in der Lage, Daten miteinander zu kommunizieren. Für eine Ausführungsform wird die Ganzahlregisterdatei 1108 in zwei separate Registerdateien getrennt, eine Registerdatei für die niederwertigen 32 Datenbits und eine zweite Registerdatei für die höherwertigen 32 Datenbits. Die Gleitkommaregisterdatei 1110 von einer Ausführungsform weist 128 Bit breite Einträge auf, weil Gleitkommabefehle typischerweise Operanden mit einer Breite von 64 bis 128 Bits aufweisen.
  • Der Ausführungsblock 1111 enthält die Ausführungseinheiten 1112, 1114, 1116, 1118, 1120, 1122, 1124, wo die Befehle tatsächlich ausgeführt werden. Dieser Abschnitt weist die Registerdateien 1108, 1110, auf, die die Ganzzahl- und Gleitkommadaten-Operandenwerte speichern, die die Mikrobefehle ausführen müssen. Der Prozessor 1100 einer Ausführungsform ist in einer Anzahl von Ausführungseinheiten enthalten: Adresserzeugungseinheit (AGU) 1112, AGU 1114, schnelle ALU 1116, schnelle ALU 1118, langsame ALU 1120, Gleitkomma-ALU 1122, Gleitkommabewegungseinheit 1114. Für eine Ausführungsform führen die Gleitkomma-Ausführungsblöcke 1122, 1124 Gleitkomma-, MMX-, SIMD- und SSE- oder andere Operationen durch. Die Gleitkomma-ALU 1122 einer Ausführungsform weist einen 64-Bit-mal-64-Bit-Gleitkommateiler zum Ausführen von Divisions-, Quadratwurzel- und Rest-Mikrooperationen auf. Für Ausführungsformen der vorliegenden Offenbarung können Befehle, die einen Gleitkommawert beinhalten, mit der Gleitkomma-Hardware behandelt werden.
  • In einer Ausführungsform gehen die ALU-Operationen zu den Hochgeschwindigkeits-ALU-Ausführungseinheiten 1116, 1118. Die schnellen ALUs 1116, 1118 einer Ausführungsform können schnelle Operationen mit einer effektiven Latenzzeit von der Hälfte eines Taktzyklus ausführen. Für eine Ausführungsform gehen die komplexesten Ganzzahloperationen zur langsamen ALU 1120, da die langsame ALU 1120 Ganzzahl-Ausführungshardware für Operationen vom Typ mit langer Latenzzeit aufweist, wie beispielsweise Multiplikator-, Verschiebungs-, Markierungslogik- und Sprungverarbeitung. Die Speicher-Lade/Speicherungsoperationen werden durch die AGUs 1112, 1114 ausgeführt. Für eine Ausführungsform werden die Ganzzahl-ALUs 1116, 1118, 1120 im Zusammenhang der Durchführung von Ganzzahloperationen auf 64-Bit-Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALUs 1116, 1118, 1120 ausgeführt werden, um eine Vielzahl von Datenbits, einschließlich 16, 32, 128, 256 usw., zu unterstützen. Auf ähnliche Weise können die Gleitkomma-Einheiten 1122, 1124 ausgeführt werden, um einen Bereich von Operanden zu unterstützen, die Bits mit verschiedenen Breiten aufweisen. Für eine Ausführungsform können die Gleitkomma-Einheiten 1122, 1124 auf 128 Bits breiten gepackten Datenoperanden in Verbindung mit SIMD- und Multimedia-Befehlen arbeiten.
  • In einer Ausführungsform versenden die µops-Scheduler 1102, 1104, 1106 abhängige Operationen, bevor die Ausführung der übergeordneten Last beendet wurde. Da µops im Prozessor 1100 spekulativ geplant und ausgeführt werden, weist der Prozessor 1100 auch Logik für die Handhabung von Speicherfehltreffern auf. Wenn eine Datenlast im Daten-Cache fehlt, können sich abhängige Operationen unterwegs in der Pipeline befinden, die den Scheduler mit zeitweilig falschen Daten verlassen haben. Ein Neuwiedergabemechanismus verfolgt Befehle, die falsche Daten verwenden, und führt sie erneut aus. Nur die abhängigen Operationen müssen erneut wiedergegeben werden, und der Abschluss der unabhängigen wird erlaubt. Die Scheduler- und Neuwiedergabemechanismen von einer Ausführungsform eines Prozessors sind auch gestaltet, um Befehlsfolgen für die Textzeichenfolge-Vergleichsoperationen zu erfassen.
  • Der Prozessor 1100 weist gemäß einer Ausführungsform auch Logik auf, um Komprimierungs/Dekomprimierungsoptimierung in Solid-State-Speichervorrichtungen auszuführen. In einer Ausführungsform kann der Ausführungsblock 1111 des Prozessors 1100 die MCU 115 aufweisen, um die Komprimierungs/Dekomprimierungsoptimierung in Solid-State-Speichervorrichtungen gemäß der vorliegenden Beschreibung durchzuführen.
  • Mit dem Begriff „Register“ können die On-Board-Prozessorspeicherplätze bezeichnet werden, die als Teil von Befehlen zum Identifizieren von Operanden verwendet werden. Mit anderen Worten, Register können diejenigen sein, die (aus der Perspektive des Programmierers) von außerhalb des Prozessors verwendbar sind. Die Bedeutung der Register einer Ausführungsform sollte indes nicht auf einen bestimmten Typ von Schaltung beschränkt werden. Stattdessen ist ein Register einer Ausführungsform in der Lage, Daten zu speichern und bereitzustellen und die hier beschriebenen Funktionen durchzuführen. Die hier beschriebenen Register können durch Schaltungen innerhalb eines Prozessors unter Verwendung irgendeiner Anzahl von unterschiedlichen Techniken ausgeführt werden, wie beispielsweise dedizierte physikalische Register, dynamisch zugewiesene physikalische Register, die Registerumbenennung verwenden, Kombinationen von dedizierten und dynamisch zugewiesenen physikalischen Registern usw. 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 folgenden Erörterungen werden unter Register Datenregister verstanden, die gestaltet sind, um gepackte Daten zu halten, wie beispielsweise 64 Bit breite MMX™-Register (die in einigen Fällen auch als „mm“-Register bezeichnet werden) in MMX-Technologie-fähigen Mikroprozessoren von Intel Corporation aus Santa Clara, Kalifornien. Diese MMX-Register, die sowohl in Ganzzahl- als auch Gleitkommaform verfügbar sind, können mit gepackten Datenelementen arbeiten, die SIMD- und SSE-Befehle begleiten. Auf ähnliche Weise können 128 Bit breite XMM-Register, die SSE2-, SSE3-, SSE4-Technologie oder darüber hinaus (allgemein als „SSEx“ bezeichnet) betreffen, auch verwendet werden, um solche gepackten Datenoperanden zu halten. In einer Ausführungsform müssen die Register beim Speichern von gepackten Daten und Ganzzahldaten nicht zwischen den beiden Datentypen differenzieren. In einer Ausführungsform sind Ganzzahl und Gleitkomma entweder in der gleichen Registerdatei oder in unterschiedlichen Registerdateien enthalten. Ferner können in einer Ausführungsform Gleitkomma- und Ganzzahldaten in unterschiedlichen Registern oder den gleichen Registern gespeichert werden.
  • Ausführungsformen können in vielen verschiedenen Systemtypen ausgeführt werden. Nun unter Bezugnahme auf 12 ist ein Blockdiagramm eines Multiprozessorsystems 1200 gemäß einer Ausführung gezeigt. Wie in 12 gezeigt, ist das Mehrprozessorsystem 1200 ein Punkt-zu-Punkt-Zusammenschaltungssystem und weist einen ersten Prozessor 1270 und einen zweiten Prozessor 1280 auf, die über eine Punkt-zu-Punkt-Zusammenschaltung 1250 gekoppelt sind. Wie in 12 gezeigt, kann jeder von den Prozessoren 1270 und 1280 ein Mehrkernprozessor sein, der erste und zweite Prozessorkerne (d. h. die Prozessorkerne 1274a und 1274b und die Prozessorkerne 1284a und 1284b) aufweist, obgleich potenziell viel mehr Kerne in den Prozessoren vorhanden sein können. Die Prozessoren können jeweils Hybrid-Schreibmodus-Logik gemäß einer Ausführungsform der vorliegenden Offenbarung aufweisen. Die Ausführungsformen der Seitenhinzufügungen und des Kopierens von Inhalt können im Prozessor 1270, im Prozessor 1280 oder in beiden ausgeführt werden.
  • Obgleich zwei Prozessoren 1270, 1280 gezeigt sind, versteht sich, dass der Schutzumfang der vorliegenden Offenbarung nicht darauf beschränkt ist. In anderen Ausführungen kann/können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die gezeigten Prozessoren 1270 und 1280 weisen integrierte Speicher-Controller-Einheiten (Integrated Memory Controller - IMC) 1272 beziehungsweise 1282 auf. Der Prozessor 1270 weist auch die Punkt-zu-Punkt-Schnittstellen (P-P) 1276 und 1288 als Teil seiner Bus-Controller-Einheiten auf; auf ähnliche Weise weist der zweite Prozessor 1280 P-P-Schnittstellen 1286 und 1288 auf. Die Prozessoren 1270, 1280 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P) 1250 unter Verwendung von P-P-Schnittstellenschaltungen 1278, 1288 austauschen. Wie in 12 gezeigt, koppeln die IMCs 1272 und 1282 die Prozessoren mit entsprechenden Speichern, nämlich einem Speicher 1232 und einem Speicher 1234, die Abschnitte von Hauptspeicher sein können, die lokal mit den entsprechenden Prozessoren verbunden sind.
  • Die Prozessoren 1270, 1280 können jeweils Informationen mit einem Chipsatz 1290 über individuelle P-P-Schnittstellen 1252, 1254 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1276, 1294, 1286, 1298 austauschen. Der Chipsatz 1290 kann auch Informationen mit einer Hochleistungsgrafikschaltung 1238 über eine Hochleistungsgrafikschnittstelle 1239 austauschen.
  • Ein gemeinsam verwendeter Cache (nicht gezeigt) kann in jedem Prozessor oder außerhalb von beiden Prozessoren enthalten sein und doch mit den Prozessoren über die P-P-Zusammenschaltung verbunden sein, derart, dass Informationen des lokalen Caches von einem oder beiden Prozessoren im gemeinsam verwendeten Cache gespeichert werden können, wenn ein Prozessor in einen Modus mit niedriger Leistung versetzt wird.
  • Der Chipsatz 1290 kann über eine Schnittstelle 1296 an einen ersten Bus 1216 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1216 ein Peripheral Component Interconnect (PCI) Bus oder ein Bus, wie beispielsweise ein PCI Express Bus oder ein anderer E/A-Zusammenschaltungsbus der dritten Generation sein, obgleich der Schutzbereich der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Wie in 12 gezeigt, können verschiedene E/A-Vorrichtungen 1214 an den ersten Bus 1216 gekoppelt sein, gemeinsam mit einer Bus-Brücke 1218, die den ersten Bus 1216 an einen zweiten Bus 1220 koppelt. In einer Ausführungsform kann der zweite Bus 1220 ein Low Pin Count (LPC) Bus sein. Verschiedene Vorrichtungen können an den zweiten Bus 1220 gekoppelt sein, der zum Beispiel in einer Ausführungsform eine Tastatur und/oder Maus 1222, Kommunikationsvorrichtungen 1227 und eine Speichereinheit 1228, wie beispielsweise ein Plattenlaufwerk oder eine Massenspeichervorrichtung, aufweisen kann, die Befehle/Code und Daten 1230 aufweisen kann. Ferner kann ein Audio-E/A 1224 an den zweiten Bus 1220 gekoppelt sein. Es sei erwähnt, dass andere Architekturen möglich sind. Zum Beispiel kann anstatt der Punkt-zu-Punkt-Architektur von 12 ein System einen Multi-Drop-Bus oder eine andere solche Architektur ausführen.
  • Nun mit Bezug auf 13 ist ein Blockdiagramm eines dritten Systems 1300 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Ähnliche Elemente in 12 und 13 tragen dieselben Bezugszeichen und bestimmte Gesichtspunkte von 12 wurden bei 13 weggelassen, um zu vermeiden, dass andere Gesichtspunkte von 13 unverständlich werden.
  • 13 veranschaulicht, dass die Prozessoren 1370, 1380 integrierte Speicher und E/A-Steuerlogik („CL“) 1372 beziehungsweise 1382 aufweisen können. Für mindestens eine Ausführungsform kann die CL 1372, 1382 integrierte Speicher-Controller-Einheiten aufweisen, wie hier beschrieben. Darüber hinaus können die CL 1372, 1382 auch E/A-Steuerungslogik aufweisen. 13 veranschaulicht, dass die Speicher 1332, 1334 an die CL 1372, 1382 gekoppelt sind und dass auch die E/A-Vorrichtungen 1314 an die Steuerlogik 1372, 1382 gekoppelt sind. Alte E/A-Vorrichtungen 1315 sind an den Chipsatz 1390 gekoppelt. Die Ausführungsformen der Seitenhinzufügungen und des Kopierens von Inhalt können im Prozessor 1370, im Prozessor 1380 oder in beiden ausgeführt werden.
  • 14 ist ein beispielhaftes System on a Chip (SoC) 1400, das einen oder mehrere von den Kernen 1402 aufweisen kann. Andere Systemgestaltungen und Ausgestaltungen, die im Fach für Laptops, Desktops, Hand-PCs, persönliche digitale Assistenten, Ingenieurarbeitsplätze, Server, Netzvorrichtungen, Netz-Hubs, Schalter, eingebettete Prozessoren, digitale Signalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienspieler, Handvorrichtungen und viele andere elektronische Vorrichtungen bekannt sind, sind auch geeignet. Im Allgemeinen sind eine große Vielzahl von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder andere Ausführungslogik aufzunehmen, wie hier offenbart, allgemein geeignet.
  • Weiterhin unter Bezugnahme auf das SOC 1400 sind Kästchen mit gestrichelten Linien Merkmale auf fortgeschritteneren SoCs. In 14 ist/sind (eine) Zusammenschaltungseinheit/en 1402 an Folgendes gekoppelt: einen Anwendungsprozessor 1417, der eine Menge von einem oder mehreren Kernen 1402A bis N und gemeinsam verwendeten Cache-Einheit/en 1406 aufweist; eine Systemagenteinheit 1410; (eine) Bus-Controller-Einheit/en 1416; (eine) integrierte Speicher-Controller-Einheit/en 1414; eine Menge von einem oder mehreren Medienprozessoren 1420, die integrierte Grafiklogik 1408 aufweisen können, einen Bildprozessor 1424 zum Bereitstellen von Standbild- und/oder Videokamerafunktionalität, einen Audioprozessor 1426 zum Bereitstellen von Hardware-Audio-Beschleunigung und einen Video-Prozessor 1428 zum Bereitstellen von Video-Codierungs/Decodierungsbeschleunigung; eine statische Speichereinheit mit wahlfreiem Zugriff (Static Random Access Memory - SRAM) 1430; eine direkte Speicherzugriffseinheit (Direct Memory Access - DMA) 1432; und eine Anzeigeeinheit 1440 zum Koppeln an eine oder mehrere externe Anzeigen. Die Ausführungsformen der Seitenhinzufügungen und des Kopierens von Inhalt können im SoC 1400 ausgeführt werden.
  • Als Nächstes unter Bezugnahme auf 15 ist darin eine Ausführungsform einer Gestaltung eines System-on-Chip (SoC) gemäß Ausführungsformen der Offenbarung bildlich dargestellt. Als ein veranschaulichendes Beispiel ist das SoC 1500 in einem User Equipment (UE) enthalten. In einer Ausführungsform bezeichnet UE irgendeine Vorrichtung, die durch einen Endbenutzer verwendet wird, um zu kommunizieren, wie beispielsweise ein Handtelefon, Smartphone, Tablet, Ultra-Thin-Notebook, Notebook mit Breitbandadapter oder irgendeine andere ähnliche Kommunikationsvorrichtung. Ein UE kann sich mit einer Basisstation oder einem Knoten verbinden, die/der in ihrer/seiner Beschaffenheit einer Mobilstation (MS) in einem GSM-Netz entsprechend kann. Die Ausführungsformen der Seitenhinzufügungen und des Kopierens von Inhalt können im SoC 1500 ausgeführt werden.
  • Hier weist das SoC 1500 2 Kerne — 1506 und 1507 — auf. Ähnlich wie in der vorhergehenden Erörterung, können die Kerne 1506 und 1507 einer Instruction Set Architecture, wie beispielsweise einem Prozessor, der den Intel® Architecture Core™ aufweist, einem Advanced Micro Devices, Inc. (AMD) Prozessor, einem MIPS-basierten Prozessor, einer ARM-basierten Prozessorgestaltung oder einem Kunden davon, sowie ihrer Lizenznehmer oder Anwender entsprechen. Die Kerne 1506 und 1507 sind an die Cache-Steuerung 1508 gekoppelt, die der Bus-Schnittstelleneinheit 1509 und dem L2-Cache 1510 zugehörig ist, um mit anderen Teilen des SOC 1500 zu kommunizieren. Die Zusammenschaltung 1511 weist eine On-Chip-Zusammenschaltung, wie beispielsweise eine IOSF, AMBA, oder eine andere vorhergehend erörterte Zusammenschaltung auf, die einen oder mehrere Gesichtspunkte der beschriebenen Offenbarung ausführen kann.
  • Die Zusammenschaltung 1511 stellt Kommunikationskanäle zu den anderen Bauelementen, wie beispielsweise einem Subscriber Identity Module (SIM) 1530, um eine Schnittstelle mit einer SIM-Karte zu bilden, einem Boot-ROM 1535 zum Halten von Boot-Code zur Ausführung durch die Kerne 1506 und 1507 zum Initialisieren und Booten des SoC 1500, einem SDRAM-Controller 1540, um eine Schnittstelle mit externem Speicher (z. B. DRAM 1560) zu bilden, einem Flash-Controller 1545, um eine Schnittstelle mit nichtflüchtigem Speicher (z. B. Flash 1565) zu bilden, einer Peripheriesteuerung 1550 (z. B. Serial Peripheral Interface), um eine Schnittstelle mit Peripherievorrichtungen zu bilden, Video-Codecs 1520 und der Video-Schnittstelle 1525 zum Anzeigen und Empfangen von Eingaben (z. B. berührungsfähige Eingabe), einer GPU 1515 zum Durchführen von Berechnungen im Zusammenhang mit Grafik usw. bereit. Irgendeine von diesen Schnittstellen kann Gesichtspunkte der hier beschriebenen Ausführungsformen aufnehmen.
  • Darüber hinaus veranschaulicht das System Peripherievorrichtungen zur Kommunikation, wie beispielsweise ein Bluetooth-Modul 1570, 3G-Modem 1575, GPS 1580 und Wi-Fi 1585. Wie vorher gehend angegeben, weist ein UE einen Funk zur Kommunikation auf. Folglich ist es möglich, dass diese peripheren Kommunikationsmodule nicht alle enthalten sind. In einem UE sollte indes irgendeine Form eines Funks für die externe Kommunikation enthalten sein.
  • 16 veranschaulicht eine diagrammatische Darstellung einer Maschine in der beispielhaften Form eines Rechensystems 1600, in dem ein Befehlssatz ausgeführt werden kann, um zu bewirken, dass die Maschine eine oder mehrere von den hier erörterten Methodologien durchführt. In alternativen Ausführungsformen kann die Maschine mit anderen Maschinen in einem LAN, einem Intranet, einem Extranet oder dem Internet verbunden (z. B. vernetzt) sein. Die Maschine kann in der Eigenschaft einer Server- oder einer Client-Vorrichtung in einer Client-Server-Netzwerkumgebung oder als eine Peer-Maschine in einer Peer-to-Peer- (oder verteilten) Netzwerkumgebung betrieben werden. Die Maschine kann ein Personal Computer (PC), ein Tablet-PC, eine Set-Top-Box (STB), ein Personal Digital Assistant (PDA), ein Mobiltelefon, eine Web-Vorrichtung, ein Server, ein Netzwerk-Router, Schalter oder eine Brücke oder irgendeine Maschine sein, die in der Lage ist, einen Satz von Befehlen (aufeinanderfolgend oder auf eine andere Art und Weise) auszuführen, die Vorgänge angeben, die durch die Maschine durchzuführen sind. Ferner ist, obgleich nur eine einzige Maschine veranschaulicht ist, der Begriff „Maschine“ auch so zu verstehen, dass er irgendeine Sammlung von Maschinen aufweist, die einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Befehlen ausführt/ausführen, um irgendeine oder mehrere von den hier erörterten Methodologien durchzuführen. Die Ausführungsformen, die den Root-Complex von 2 bis 3 ausführen, können in einen oder als ein Teil des Rechensystems 1600 ausgeführt werden.
  • Das Rechensystem 1600 weist eine Verarbeitungsvorrichtung 1602, Hauptspeicher 1604 (z. B. Flash-Speicher, dynamischen RAM-Speicher (Dynamic Random Access Memory — DRAM) (wie beispielsweise synchronen DRAM (SDRAM) oder DRAM (RDRAM) usw.), einen statischen Speicher 1606 (z. B. Flash-Speicher, statische Speicher mit wahlfreiem Zugriff (Static Random Access Memory — SRAM) usw.) und eine Datenspeichervorrichtung 1616 auf, die über einen Bus 1608 miteinander kommunizieren.
  • Die Verarbeitungsvorrichtung 1602 stellt eine oder mehrere Universalverarbeitungsvorrichtungen, wie beispielsweise einen Mikroprozessor, eine Zentraleinheit oder dergleichen, dar. Genauer gesagt, kann die Verarbeitungsvorrichtung ein Complex Instruction Set Computing (CISC) Mikroprozessor, Reduced Instruction Set Computing (RISC) Mikroprozessor, Very Long Instruction Word (VLIW) Mikroprozessor, oder ein Prozessor, der andere Befehlssätze ausführt, oder Prozessoren sein, die eine Kombination von Befehlssätzen ausführen. Die Verarbeitungsvorrichtung 1602 kann auch eine oder mehrere Spezialverarbeitungsvorrichtungen sein, wie beispielsweise eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit — ASIC), ein Field Programmable Gate Array (FPGA), ein digitaler Signalprozessor (DSP), Netzwerkprozessor oder dergleichen sein. In einer Ausführungsform kann die Verarbeitungsvorrichtung 1602 einen oder mehrere Prozessorkerne aufweisen. Die Verarbeitungsvorrichtung 1602 ist ausgestaltet, um die Verarbeitungslogik oder Befehle 1626 zum Durchführen der hier erörterten Operationen auszuführen.
  • In einer Ausführungsform kann die Verarbeitungsvorrichtung 1602 der Root-Complex von 2 bis 3 sein. Alternativ kann das Rechensystem 1600 andere Komponenten aufweisen, wie hier beschrieben. Es versteht sich, dass der Kern Multithreading (das Ausführen von zwei oder mehr parallelen Mengen von Operationen oder Threads) unterstützen kann und dies auf eine Vielzahl von Arten tun kann, die Zeitscheiben-Multithreading, simultanes Multithreading (wo ein einziger physikalischer Kern einen logischen Kern für jeden der Threads bereitstellt, für die dieser physikalische Kern simultanes Multithreading ausführt) oder eine Kombination davon (z. B. Abrufen mit Zeitschlitz und danach Decodieren und simultanes Multithreading, wie beispielsweise in der Intel® Hyperthreading-Technologie) aufweisen.
  • Das Rechensystem 1600 kann ferner eine Netzwerkschnittstellenvorrichtung 1618 aufweisen, die kommunikativ an ein Netzwerk 1619 gekoppelt ist. Das Rechensystem 1600 kann auch eine Video-Anzeigeeinheit 1610 (z. B. eine Flüssigkristallanzeige (LCD) oder Kathodenstrahlröhre (CRT)), eine alphanumerische Eingabevorrichtung 1612 (z. B. eine Tastatur), eine Cursor-Steuervorrichtung 1614 (z. B. eine Maus), eine Signalerzeugungsvorrichtung 1620 (z. B. einen Lautsprecher) oder andere Peripherievorrichtungen aufweisen. Ferner kann das Rechensystem 1600 eine Grafikverarbeitungseinheit 1622, eine Videoverarbeitungseinheit 1628 und eine Audioverarbeitungseinheit 1632 aufweisen. In einer anderen Ausführungsform kann das Rechensystem 1600 einen Chipsatz (nicht veranschaulicht) aufweisen, womit eine Gruppe von integrierten Schaltungen oder Chips bezeichnet wird, die gestaltet sind, um mit der Verarbeitungsvorrichtung 1602 zusammenzuarbeiten und Kommunikationen zwischen der Verarbeitungsvorrichtung 1602 und externen Vorrichtungen zu steuern. Zum Beispiel kann der Chipsatz ein Satz von Chips auf einer Hauptplatine sein, der die Verarbeitungsvorrichtung 1602 mit Vorrichtungen mit sehr hoher Geschwindigkeit, wie beispielsweise dem Hauptspeicher 1604 und Grafik-Controllern verbindet, sowie die Verarbeitungsvorrichtung 1602 mit Peripheriebussen mit niedrigerer Geschwindigkeit, wie beispielsweise USB-, PCI- oder ISA-Bussen verbindet.
  • Die Datenspeichervorrichtung 1616 kann einen maschinenlesbaren Datenträger 1624 aufweisen, auf dem Software 1626 gespeichert ist, die eine oder mehrere von den Methodologien von Funktionen ausführt, die hier beschrieben sind. Die Software 1626 kann auch vollständig oder zumindest teilweise innerhalb des Hauptspeichers 1604 als Befehle 1626 und/oder innerhalb der Verarbeitungsvorrichtung 1602 als Verarbeitungslogik während ihrer Ausführung durch das Rechensystem 1600 liegen; wobei der Hauptspeicher 1604 und die Verarbeitungsvorrichtung 1602 auch maschinenlesbare Datenträger bilden.
  • Der maschinenlesbare Datenträger 1624 kann auch verwendet werden, um Befehle 1626, die die Verarbeitungsvorrichtung 1602 nutzen, wie beispielsweise unter Bezugnahme auf 1 bis 4 beschrieben, und/oder eine Software-Bibliothek zu speichern, die Verfahren enthält, die die vorhergehenden Anwendungen aufrufen. Obgleich der maschinenlesbare Datenträger 1624 in einem Ausführungsbeispiel als ein einziger Datenträger gezeigt ist, sollte unter dem Ausdruck „maschinenlesbarer Datenträger“ verstanden werden, dass er einen einzigen Datenträger oder mehrere Datenträger aufweist (z. B. eine zentralisierte oder verteilte Datenbank und/oder zugehörige Caches und Server), die die eine oder die mehreren Befehlssätze speichern. Der Ausdruck „maschinenlesbarer Datenträger“ sollte auch derart verstanden werden, dass er irgendeinen Datenträger aufweist, der in der Lage ist, einen Satz von Befehlen zur Ausführung durch die Maschine zu speichern, zu codieren oder zu tragen, die bewirken, dass die Maschine eine oder mehrere von den Methodologien der vorliegenden Ausführungsformen durchführt. Der Ausdruck „maschinenlesbarer Datenträger“ sollte dementsprechend derart verstanden werden, dass er Festkörperspeicher und optische und magnetische Datenträger aufweist, aber nicht darauf beschränkt ist.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 ist eine Vorrichtung, die Folgendes aufweist: 1) ein Extended Capability Register und Eingabe/Ausgabe- (E/A) Speicherverwaltungsschaltungen, wobei die E/A-Speicherverwaltungsschaltungen für Folgendes vorgesehen sind: a) Empfangen einer Adressumsetzungsanforderung, die eine virtuelle Adresse referenziert, die einem virtuellen Gastadressraum einer virtuellen Maschine zugehörig ist, von einer E/A-Vorrichtung; b) Umsetzen der virtuellen Adresse in eine physikalische Gastadresse, die einem physikalischen Gastadressraum der virtuellen Maschine zugehörig ist; und c) als Reaktion auf das Bestimmen, dass ein Wert, der durch das Extended Capability Register gespeichert wird, einen Restrict-Translation-Request-Response-Modus (RTRR — Modus zur Einschränkung der Umsetzungsanforderungsantwort) angibt, Senden einer Umsetzungsantwort, die die physikalische Gastadresse aufweist, an die E/A-Vorrichtung.
  • In Beispiel 2 der Vorrichtung von Anspruch 1 sind die E/A-Speicherverwaltungsschaltungen ferner als Reaktion auf den Empfang einer umgesetzten Anforderung, die die physikalische Gastadresse aufweist, von der E/A-Vorrichtung für Folgendes vorgesehen: a) Abschließen der Umsetzung der physikalischen Gastadresse in eine physikalische Host-Adresse unter Verwendung eines Virtual Machine Monitors (VMM), der ein Mapping zwischen der physikalischen Gastadresse und der physikalischen Host-Adresse durchführt; und b) Senden der physikalischen Host-Adresse an die E/A-Vorrichtung bei der erfolgreichen Umsetzung der physikalischen Gastadresse in die physikalische Host-Adresse.
  • In Beispiel 3 der Vorrichtung von Beispiel 1 ist der RTRR-Modus in Bezug zum virtuellen Gastadressraum oder der E/A-Vorrichtung eingestellt, wobei eine Extended-Context-Entry-Datenstruktur einer Extended-Root-Entry-Tabelle für Umsetzungen der zweiten Ebene innerhalb der E/A-Speicherverwaltungsschaltungen ein RTRR-Feld zum Aktivieren des RTRR-Modus des Capability-Registers aufweist.
  • In Beispiel 4 der Vorrichtung von Beispiel 1 sind die E/A-Speicherverwaltungsschaltungen ferner vorgesehen, als Reaktion auf das Feststellen eines Terminal Faults während der Umsetzung, null Berechtigungen innerhalb der Umsetzungsantwort in Bezug auf Zugriffsrechte auf eine Seite im Speicher einzuschließen.
  • In Beispiel 5 der Vorrichtung von Beispiel 1 weisen die E/A-Speicherverwaltungsschaltungen ferner ein zweites Extended Capability Register auf, wobei die E/A-Speicherverwaltungsschaltungen ferner für Folgendes vorgesehen sind: a) Feststellen einer erfolgreichen Umsetzung der virtuellen Adresse in eine physikalische Host-Adresse; und b) als Reaktion auf das Feststellen, dass ein No-Permission-on-Translation-Request-Response-Modus (NP-TRSP — keine Berechtigung für Umsetzungsanforderungsantwort) in dem zweiten Extended Capability Register eingestellt ist, Bestimmen, ob die Adressumsetzungsanforderung eine Prozessadressraumkennung (Process Address Space Identifier — PASID) aufweist, wobei der NP-TRSP-Modus einem Seitentabelleneintrag einer zweiten Ebene entspricht.
  • In Beispiel 6 der Vorrichtung von Beispiel 5 sind die E/A-Speicherverwaltungsschaltungen zum Umsetzen der virtuellen Adresse in die physikalische Gastadresse vorgesehen, um eine verschachtelte Umsetzung innerhalb mehrerer Ebenen einer Paging-Struktur einer zweiten Ebene, außer für mindestens eine letzte Ebene der mehreren Ebenen, durchzuführen.
  • In Beispiel 7 der Vorrichtung von Beispiel 6 sind die E/A-Speicherverwaltungsschaltungen ferner vorgesehen, die Aktivierung von verschachtelter Umsetzung für Umsetzungsanforderungen mit einer PASID festzustellen, und wobei die virtuelle Adresse eine virtuelle Gastadresse (Guest Virtual Address — GVA) ist.
  • In Beispiel 8 der Vorrichtung von Beispiel 6 sind die E/A-Speicherverwaltungsschaltungen ferner vorgesehen, die Aktivierung von verschachtelter Umsetzung für Umsetzungsanforderungen ohne eine PASID festzustellen, wobei die virtuelle Adresse eine virtuelle E/A-Adresse (I/O Virtual Address — IOVA) ist und der virtuelle Gastadressraum ein virtueller E/A-Adressraum ist.
  • In Beispiel 9 der Vorrichtung von Beispiel 6 sind die E/A-Speicherverwaltungsschaltungen ferner für Folgendes vorgesehen: a) Feststellen der Deaktivierung von verschachtelter Umsetzung für Anforderungen ohne PASID; und b) Senden eines eingestellten Flags Untranslated Access Only (U — nur nicht umgesetzter Zugriff) in der Umsetzungsantwort, um eine nicht umgesetzte Anforderung ohne Senden einer Adresse zu erzwingen.
  • In Beispiel 10 der Vorrichtung von Beispiel 6 sind die E/A-Speicherverwaltungsschaltungen ferner als Reaktion auf den Empfang einer umgesetzten Anforderung, die die physikalische Gastadresse aufweist, von der E/A-Vorrichtung für Folgendes vorgesehen: a) eines von der vollständigen Umsetzung der physikalischen Gastadresse durch die mindestens eine letzte Ebene der Paging-Struktur der zweiten Ebene, um eine physikalische Host-Adresse zu erzeugen oder der Feststellung einer böswilligen Adresse innerhalb der umgesetzten Anforderung; b) Senden der physikalischen Host-Adresse an die E/A-Vorrichtung bei der erfolgreichen Umsetzung der physikalischen Gastadresse in die physikalische Host-Adresse; und c) Erzeugen eines Terminal Faults als Reaktion auf das Feststellen der böswilligen Adresse.
  • Verschiedene Ausführungsformen können verschiedene Kombinationen der vorhergehend beschriebenen Strukturmerkmale aufweisen. Zum Beispiel können alle wahlfreien Merkmale des Rechensystems, die vorhergehend beschrieben sind, auch in Bezug auf das Verfahren oder den Prozess ausgeführt werden, das/der hier beschrieben ist, und spezifische Angaben in den Beispielen können an irgendeiner Stelle in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 11 ist ein System, das Folgendes aufweist: 1) einen Speicher zum Speichern von Seiten, für die ein Mapping auf einen physikalischen Gastadressraum einer virtuellen Maschine durchgeführt wird; 2) Eingangs-/Ausgangs- (E/A) Speicherverwaltungsschaltungen, die betriebsfähig an den Speicher gekoppelt sind und ein Extended Capability Register aufweisen, wobei die E/A-Speicherverwaltungsschaltungen für Folgendes vorgesehen sind: a) Empfangen einer Adressumsetzungsanforderung, die eine virtuelle Adresse referenziert, die einem virtuellen Gastadressraum einer virtuellen Maschine zugehörig ist, von einer E/A-Vorrichtung; b) Umsetzen der virtuellen Gastdresse in eine physikalische Gastadresse, die dem physikalischen Gastadressraum der virtuellen Maschine zugehörig ist; und c) als Reaktion auf das Bestimmen, dass ein Wert, der durch das Extended Capability Register gespeichert wird, einen Restrict-Translation-Request-Response-Modus (RTRR — Modus zur Einschränkung der Umsetzungsanforderungsantwort) angibt, Senden einer Umsetzungsantwort, die die physikalische Gastadresse aufweist, an die E/A-Vorrichtung.
  • In Beispiel 12 des Systems von Beispiel 11 sind die E/A-Speicherverwaltungsschaltungen ferner als Reaktion auf den Empfang einer umgesetzten Anforderung, die die physikalische Gastadresse aufweist, von der E/A-Vorrichtung für Folgendes vorgesehen: a) Abschließen der Umsetzung der physikalischen Gastadresse in eine physikalische Host-Adresse unter Verwendung eines Virtual Machine Monitors (VMM), der ein Mapping zwischen der physikalischen Gastadresse und der physikalischen Host-Adresse durchführt; und b) Senden der physikalischen Host-Adresse an die E/A-Vorrichtung bei der erfolgreichen Umsetzung der physikalischen Gastadresse in die physikalische Host-Adresse.
  • In Beispiel 13 des Systems von Beispiel 11 wird der RTRR-Modus in Bezug zum virtuellen Gastadressraum oder der E/A-Vorrichtung eingestellt, wobei ein Eintrag einer Prozessadressraumkennung (Process Address Space Identifier — PASID) innerhalb einer PASID-Tabelle, die verwendet wird, um die physikalische Gastadresse umzusetzen, ein RTRR-Feld zum Aktivieren des RTRR-Modus des Capability-Registers aufweist.
  • In Beispiel 14 des Beispiels von Anspruch 11 sind die E/A-Speicherverwaltungsschaltungen ferner vorgesehen, als Reaktion auf das Feststellen eines Terminal Faults während der Umsetzung, null Berechtigungen in die Umsetzungsantwort in Bezug auf Zugriffsrechte auf eine Seite im Speicher einzuschließen.
  • In Beispiel 15 des Systems von Beispiel 11 weisen die E/A-Speicherverwaltungsschaltungen ferner ein zweites Extended Capability Register auf, wobei die E/A-Speicherverwaltungsschaltungen ferner für Folgendes vorgesehen sind: a) Feststellen einer erfolgreichen Umsetzung der virtuellen Adresse in eine physikalische Host-Adresse; und b) als Reaktion auf das Feststellen, dass ein No-Permission-on-Translation-Request-Response-Modus (NP-TRSP — keine Berechtigung für Umsetzungsanforderungsantwort) in dem zweiten Extended Capability Register eingestellt ist, Bestimmen, ob die Adressumsetzungsanforderung eine Prozessadressraumkennung (Process Address Space Identifier — PASID) aufweist, wobei der NP-TRSP-Modus einem Seitentabelleneintrag einer zweiten Ebene entspricht.
  • In Beispiel 16 des Systems von Anspruch 15 sind die E/A-Speicherverwaltungsschaltungen zum Umsetzen der virtuellen Adresse in die physikalische Gastadresse vorgesehen, um eine verschachtelte Umsetzung innerhalb mehrerer Ebenen einer Paging-Struktur einer zweiten Ebene, außer für mindestens eine letzte Ebene der mehreren Ebenen, durchzuführen.
  • In Beispiel 17 des Systems von Beispiel 16 sind die E/A-Speicherverwaltungsschaltungen ferner vorgesehen, die Aktivierung von verschachtelter Umsetzung für Umsetzungsanforderungen mit einer PASID festzustellen, und wobei die virtuelle Adresse eine virtuelle Gastadresse (Guest Virtual Address — GVA) ist.
  • In Beispiel 18 des Systems von Beispiel 16 sind die E/A-Speicherverwaltungsschaltungen ferner vorgesehen, die Aktivierung von verschachtelter Umsetzung für Umsetzungsanforderungen ohne eine PASID festzustellen, wobei die virtuelle Adresse eine virtuelle E/A-Adresse (I/O Virtual Address — IOVA) ist und der virtuelle Gastadressraum ein virtueller E/A-Adressraum ist.
  • In Beispiel 19 des Systems von Beispiel 16 sind die E/A-Speicherverwaltungsschaltungen ferner für Folgendes vorgesehen: a) Feststellen der Deaktivierung der verschachtelten Umsetzung für Anforderungen ohne PASID; und b) Senden eines eingestellten Flags Untranslated Access Only (U — nur nicht umgesetzter Zugriff) in der Umsetzungsantwort, um eine nicht umgesetzte Anforderung ohne Senden einer Adresse zu erzwingen.
  • In Beispiel 20 des Systems von Beispiel 16 sind die E/A-Speicherverwaltungsschaltungen ferner als Reaktion auf den Empfang einer umgesetzten Anforderung, die die physikalische Gastadresse aufweist, von der E/A-Vorrichtung für Folgendes vorgesehen: a) eines von der vollständigen Umsetzung der physikalischen Gastadresse durch die mindestens eine letzte Ebene der Paging-Struktur der zweiten Ebene, um eine physikalische Host-Adresse zu erzeugen, oder der Feststellung einer böswilligen Adresse innerhalb der umgesetzten Anforderung; b) Senden der physikalischen Host-Adresse an die E/A-Vorrichtung bei der erfolgreichen Umsetzung der physikalischen Gastadresse; und c) Erzeugen eines Terminal Faults als Reaktion auf das Feststellen der böswilligen Adresse.
  • Verschiedene Ausführungsformen können verschiedene Kombinationen der vorhergehend beschriebenen Strukturmerkmale aufweisen. Zum Beispiel können alle wahlfreien Merkmale des Rechensystems, die vorhergehend beschrieben sind, auch in Bezug auf das Verfahren oder den Prozess ausgeführt werden, das/der hier beschrieben ist, und spezifische Angaben in den Beispielen können an irgendeiner Stelle in einer oder mehreren Ausführungsformen verwendet werden.
  • Beispiel 21 ist ein Verfahren, das Folgendes aufweist: 1) durch eine Verarbeitungsvorrichtung, die einen Virtual Machine Monitor (VMM) ausführt, innerhalb einer Paging-Tabelle einer zweiten Ebene eines Hauptspeichers, Mapping einer ersten physikalischen Gastadresse auf eine erste physikalische Host-Adresse als Reaktion auf das seitenweise Einlagern einer ersten Speicherseite in den Hauptspeicher; b) Feststellen einer Anforderung für das seitenweise Auslagern der ersten physikalischen Gastadresse von dem Hauptspeicher durch die Verarbeitungsvorrichtung, die den VMM ausführt, wobei die Anforderung auf einem Overcommit des Hauptspeichers beruht; c) Einstellen eines Felds No-Permission-on-Translation-Request-Response (NP-TRSP — keine Berechtigung für Umsetzungsanforderungsantwort) in der Paging-Tabelle der zweiten Ebene, die das Mapping enthält, durch die Verarbeitungsvorrichtung, die den VMM ausführt, um einer anschließenden Umsetzungsanforderung die Ungültigkeitserklärung von im Cache gespeicherten Kopien der ersten physikalischen Gastadresse anzugeben; d) Anfordern einer Ungültigkeitserklärung der ersten physikalischen Gastadresse an einem I/O Translation Lookaside Buffer von E/A-Speicherverwaltungsschaltungen durch die Verarbeitungsvorrichtung, die den VMM ausführt; e) Anfordern einer Ungültigkeitserklärung der ersten physikalischen Gastadresse an einem Adressumsetzungs-Cache einer E/A-Vorrichtung durch die Verarbeitungsvorrichtung, die den VMM ausführt; f) Einstellen des Mappings zwischen der ersten physikalischen Gastadresse und der ersten physikalischen Host-Adresse in der Paging-Tabelle der zweiten Ebene als nicht vorhanden durch die Verarbeitungsvorrichtung, die den VMM ausführt.
  • In Beispiel 22 weist das Verfahren von Beispiel 21 ferner das Warten auf den Abschluss der Ungültigkeitserklärungen der ersten physikalischen Gastadresse am I/O Translation Lookaside Buffer und dem Adressumsetzungs-Cache vor dem Durchführen der Einstellung auf.
  • In Beispiel 23 weist das Verfahren von Beispiel 21 ferner Folgendes auf: 1) Empfangen der anschließenden Umsetzungsanforderung, die die erste physikalische Gastadresse enthält, durch die E/A-Speicherverwaltungsschaltungen; 2) Feststellen, dass das NP-TRSP-Feld in der Paging-Tabelle der zweiten Ebene eingestellt ist, während der Umsetzung durch die E/A-Speicherverwaltungsschaltungen; und 3) Übertragen von null Berechtigungen bezüglich der Zugriffsrechte auf die erste Speicherseite als Reaktion auf das Feststellen, dass das NP-TRSP-Feld eingestellt ist, durch die E/A-Speicherverwaltungsschaltungen in einer Umsetzungsantwort an die E/A-Vorrichtung.
  • In Beispiel 24 weist das Verfahren von Beispiel 21 ferner Folgendes auf: 1) Feststellen der anschließenden Umsetzungsanforderung, die die erste physikalische Gastadresse enthält; 2) Anfordern eines seitenweisen Einlagerns einer zweiten physikalischen Host-Adresse in den Hauptspeicher; 3) Mapping der ersten physikalischen Gastadresse auf die zweite physikalische Host-Adresse, um ein zweites Mapping zu erzeugen; und 4) Zurücksetzen des NP-TRSP-Felds auf Null in der Paging-Tabelle der zweiten Ebene, die dem zweiten Mapping entspricht.
  • In Beispiel 25 weist das Verfahren von Beispiel 21 ferner Folgendes auf: 1) Anfordern einer Ungültigkeitserklärung der ersten physikalischen Host-Adresse an einem I/O Translation Lookaside Buffer von E/A-Speicherverwaltungsschaltungen; 2) Anfordern einer Ungültigkeitserklärung der ersten physikalischen Host-Adresse an einem Adressumsetzungs-Cache der E/A-Vorrichtung; 3) nach dem Abschluss der ersten Ungültigkeitserklärungen der physikalischen Host-Adresse an dem I/O Translation Lookaside Buffer und dem Adressumsetzungs-Cache, seitenweises Auslagern von Daten von der ersten Speicherseite.
  • Obgleich die vorliegende Offenbarung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, wird der Fachmann zahlreiche Abwandlungen und Varianten davon verstehen. Es versteht sich, dass die beigefügten Ansprüche alle solchen Abwandlungen und Varianten abdecken, die in den wahren Geist und Schutzumfang der vorliegenden Offenbarung fallen.
  • In der vorliegenden Beschreibung werden zahlreiche spezifische Details dargelegt, wie beispielsweise Beispiele für spezifische Typen von Prozessoren und Systemausgestaltungen, spezifische Hardware-Strukturen, spezifische Einzelheiten zu Architektur und Mikroarchitektur, spezifische Registerausgestaltungen, spezifische Befehlstypen, spezifische Systemkomponenten, spezifische Abmessungen/Höhen, spezifische Prozessor-Pipeline-Stufen und Betrieb usw., um ein eingehendes Verständnis der vorliegenden Offenbarung bereitzustellen. Für den Fachmann ist indes ersichtlich, dass diese spezifischen Einzelheiten nicht eingesetzt werden müssen, um die vorliegende Offenbarung in der Praxis auszuführen. In anderen Fällen wurden gut bekannte Komponenten oder Verfahren, wie beispielsweise spezifische und alternative Prozessorarchitekturen, spezifische/r Logikschaltungen/Code für beschriebene Algorithmen, spezifischer Firmware-Code, spezifischer Zusammenschaltungsbetrieb, spezifische Logikausgestaltungen, spezifische Herstellungstechniken und -materialien, spezifische Compiler-Ausführungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Abschalt- und Gating-Techniken/Logik und andere spezifische Betriebsdetails von Computersystemen, nicht im Detail beschrieben, um zu vermeiden, dass die vorliegende Offenbarung unnötigerweise unverständlich gemacht wird.
  • Die Ausführungsformen werden unter Bezugnahme auf Kompressions/Dekompressionsoptimierung in Solid-State-Speichervorrichtungen in spezifischen integrierten Schaltungen beschrieben, wie beispielsweise in Rechenplattformen oder Mikroprozessoren. Die Ausführungsformen können auch auf andere Typen von integrierten Schaltungen und programmierbaren Logikbausteinen angewandt werden. Zum Beispiel sind die offenbarten Ausführungsformen nicht auf Desktop-Computer-Systeme oder tragbare Computer, wie beispielsweise die Intel® Ultrabooks™-Computer, beschränkt und können auch in anderen Vorrichtungen, wie beispielsweise handgehaltenen Vorrichtungen, Tablets, anderen dünnen Notebooks, System-on-a-Chip-Vorrichtungen (SoC) und eingebetteten Anwendungen, verwendet werden. Einige Beispiele für handgehaltene Vorrichtungen weisen Mobiltelefone, Internet-Protokoll-Vorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und handgehaltene PCs auf. Eingebettete Anwendungen weisen typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein System-on-a-Chip, Netzwerk-Computer (NetPC), Set-Top-Boxen, Netzwerk-Hubs, Wide Area Network (WAN) Schalter oder irgendein anderes System auf, das die in der Folge gelehrten Funktionen und Operationen durchführen kann. Es wird beschrieben, dass das System irgendeine Art von Computer oder eingebettetem System sein kann. Die offenbarten Ausführungsformen können insbesondere für Low-End-Vorrichtungen, wie beispielsweise tragbare Vorrichtungen (z. B. Uhren), elektronische Implantate, Sensor- und Steuerinfrastrukturvorrichtungen, Steuereinrichtungen und Supervisory Control And Data Acquisition (SCADA) Systeme oder dergleichen, verwendet werden. Darüber hinaus sind die Vorrichtungen, Verfahren und Systeme, die hier beschrieben sind, nicht auf physikalische Rechenvorrichtungen beschränkt, sondern können auch Software-Optimierungen zum Energiesparen und für Energieeffizienz betreffen. Wie aus der folgenden Beschreibung ohne weiteres hervorgeht, sind die Ausführungsformen von Verfahren, Vorrichtungen und Systemen, die hier beschrieben werden (unabhängig, ob in Bezug auf Hardware, Firmware, Software oder eine Kombination davon) zentral für „grüne Technologien“ der Zukunft, die mit Leistungserwägungen abgestimmt sind.
  • Obgleich die Ausführungsformen hier unter Bezugnahme auf einen Prozessor beschrieben sind, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikbausteinen anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen der vorliegenden Offenbarung können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewandt werden, die einen höheren Pipeline-Durchsatz und eine verbesserte Leistung nutzen können. Die Lehren von Ausführungsformen der vorliegenden Offenbarung sind auf eine/n beliebige/n Prozessor oder Maschine anwendbar, der/die Daten handhabt. Die vorliegende Offenbarung ist indes nicht auf Prozessoren oder Maschinen beschränkt, die 512-Bit-, 256-Bit-, 128-Bit-, 64-Bit-, 32-Bit- oder 16-Bit-Datenoperationen durchführen, und kann auf eine/n beliebige/n Prozessor oder Maschine angewandt werden, in dem/der Daten gehandhabt oder verwaltet werden. Darüber hinaus stellt die vorliegende Beschreibung Beispiele bereit und die begleitenden Zeichnungen zeigen zu veranschaulichenden Zwecken verschiedene Beispiele. Diese Beispiele sollten indes nicht in einem einschränkenden Sinne verstanden werden, da mit ihnen lediglich beabsichtigt wird, Beispiele für Ausführungsformen der vorliegenden Offenbarung bereitzustellen, anstatt eine umfassende Liste sämtlicher möglicher Ausführungen von Ausführungsformen der vorliegenden Offenbarung bereitzustellen.
  • Obgleich die folgenden Beispiele die Handhabung und Verteilung von Befehlen im Zusammenhang von Ausführungseinheiten und Logikschaltungen beschreiben, können andere Ausführungsformen der vorliegenden Offenbarung mittels Daten oder Befehlen bewerkstelligt werden, die auf einem maschinenlesbaren, greifbaren Datenträger gespeichert sind, die, wenn sie durch eine Maschine durchgeführt werden, bewirken, dass die Maschine Funktionen in Übereinstimmung mit mindestens einer Ausführungsform der Offenbarung durchführt. In einer Ausführungsform werden Funktionen, die Ausführungsformen der vorliegenden Offenbarung zugehörig sind, in maschinenausführbaren Befehlen ausgeführt. Die Befehle können verwendet werden, um zu bewirken, dass ein Universal- oder Spezialprozessor, der mit den Befehlen programmiert ist, die Schritte der vorliegenden Offenbarung ausführt. Ausführungsformen der vorliegenden Offenbarung können als Computerprogrammprodukt oder Software bereitgestellt werden, die einen maschinen- oder computerlesbaren Datenträger aufweisen, der darauf Befehle gespeichert aufweist, die verwendet werden können, um einen Computer (oder andere elektronische Vorrichtungen) zu programmieren, um eine oder mehrere Operationen gemäß Ausführungsformen der vorliegenden Offenbarung durchzuführen. Alternativ könnten Operationen von Ausführungsformen der vorliegenden Offenbarung durch spezifische Hardware-Komponenten, die Logik mit fester Funktion zum Durchführen der Operationen enthalten, oder durch irgendeine Kombination von programmierten Computer-Komponenten und Hardware-Komponenten mit fester Funktion durchgeführt werden.
  • Befehle, die verwendet werden, um Logik zu programmieren, um Ausführungsformen der Offenbarung durchzuführen, können innerhalb eines Speichers in dem System, wie beispielsweise DRAM, Cache, Flash-Speicher oder einem anderen Speicher, gespeichert werden. Ferner können die Befehle über ein Netzwerk oder mittels eines anderen maschinenlesbaren Datenträgers verteilt werden. Somit kann ein maschinenlesbarer Datenträger irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form, wie beispielsweise Floppy-Disketten, optische Platten, Compact Disc, Read-Only Memory (CD-ROMs) und magneto-optische Platten, Read-Only Memory (ROMs), Random Access Memory (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetische oder optische Karten, Flash-Speicher, oder einen greifbaren maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird, aufweisen, ist aber nicht darauf beschränkt. Dementsprechend weist der computerlesbare Datenträger irgendeinen Typ von greifbarem maschinenlesbarem Datenträger auf, der zur Speicherung oder Übertragung elektronischer Befehle oder Informationen in einer Form geeignet ist, die durch eine Maschine (z. B. einen Computer) lesbar ist.
  • Eine Gestaltung kann verschiedene Stufen, von der Erstellung zur Simulation und zur Herstellung, durchlaufen. Daten, die eine Gestaltung darstellen, können die Gestaltung auf eine Anzahl von Arten darstellen. Zuerst kann die Hardware, wie es in Simulationen nützlich ist, unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Darüber hinaus kann an einigen Stufen des Gestaltungsprozesses ein Modell auf Schaltungsebene mit Logik- und/oder Transistor-Gates erstellt werden. Ferner erreichen die meisten Gestaltungen an irgendeiner Stufe eine Datenebene, die die physikalische Platzierung verschiedener Vorrichtungen in dem Hardware-Modell darstellt. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die das Vorhandensein oder Nichtvorhandensein verschiedener Merkmale auf verschiedenen Maskenschichten für Masken angeben, die verwendet werden, um die integrierte Schaltung herzustellen. In irgendeiner Darstellung der Gestaltung können die Daten in irgendeiner Form von maschinenlesbarem Datenträger gespeichert werden. Ein Speicher oder ein magnetischer oder optischer Speicher, wie beispielsweise eine Platte, können der maschinenlesbare Datenträger zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder auf eine andere Art und Weise erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder die Gestaltung angibt oder trägt, übertragen wird, wird in dem Maße, in dem ein Kopieren, Puffern oder eine Weiterleitung des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. So kann ein Kommunikationsanbieter oder ein Netzwerkanbieter ein Erzeugnis, wie beispielsweise Informationen, die in eine Trägerwelle codiert sind, die Techniken von Ausführungsformen der Offenbarung ausführen, zumindest vorübergehend auf einem greifbaren, maschinenlesbaren Datenträger speichern.
  • Ein Modul, wie es hier verwendet wird, bezeichnet irgendeine Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel weist ein Modul Hardware auf, wie beispielsweise einen Mikrocontroller, der mit einem nichtflüchtigen Datenträger verbunden ist, um Code zu speichern, der angepasst ist, um durch den Mikrocontroller ausgeführt zu werden. Daher bezeichnet die Bezugnahme auf ein Modul in einer Ausführungsform die Hardware, die spezifisch ausgestaltet ist, um den Code, der auf einem nichtflüchtigen Datenträger zu halten ist, zu erkennen und/oder auszuführen. Ferner bezeichnet in einer anderen Ausführungsform die Verwendung eines Moduls den nichtflüchtigen Datenträger, der den Code aufweist, der spezifisch angepasst ist, um durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und daraus folgt, dass in noch einer anderen Ausführungsform der Begriff Modul (in diesem Beispiel) die Kombination des Mikrocontrollers und des nichtflüchtigen Datenträgers bezeichnen kann. Häufig sind Grenzen von Modulen, die als getrennt veranschaulicht sind, allgemein veränderlich und überlappen sich potenziell. Zum Beispiel kann es sein, dass ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam verwenden, während sie potenziell etwas unabhängige Hardware, Software oder Firmware behalten. In einer Ausführungsform weist die Verwendung des Begriffs Logik Hardware, wie beispielsweise Transistoren, Register oder andere Hardware, wie beispielsweise programmierbare Logikvorrichtungen, auf.
  • Die Verwendung des Ausdrucks „ausgestaltet, um“ in einer Ausführungsform bezeichnet das Anordnen, Zusammenführen, Herstellen, Anbieten zum Verkauf, Importieren und/oder Gestalten von einer Vorrichtung, Hardware, Logik oder einem Element, um eine bezeichnete oder bestimmte Aufgabe durchzuführen. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, das nicht betrieben wird, immer noch „ausgestaltet, um“ eine bezeichnete Aufgabe durchzuführen, wenn sie/es gestaltet, gekoppelt und/oder zusammengeschaltet ist, um die bezeichnete Aufgabe durchzuführen. Als ein rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logikgatter, das „ausgestaltet ist“, um einem Takt ein Aktivierungssignal bereitzustellen, weist nicht jedes potenzielle Logikgatter auf, das eine 1 oder 0 bereitstellen kann. Stattdessen ist das Logikgatter eines, das auf irgendeine Art und Weise derart gekoppelt ist, dass während des Betriebs die ausgegebene 1 oder 0 zum Aktivieren des Takts bestimmt ist. Es sei erneut erwähnt, dass die Verwendung des Begriffs „ausgestaltet, um“ keinen Betrieb erfordert, sondern sich stattdessen auf den latenten Zustand einer Vorrichtung, Hardware und/oder eines Elements konzentriert, wobei die Vorrichtung, Hardware und/oder das Element im latenten Zustand gestaltet ist, um eine bestimmte Aufgabe durchzuführen, wenn die Vorrichtung, Hardware und/oder das Element betrieben wird.
  • Ferner bezeichnet die Verwendung der Ausdrücke „um“, „in der Lage, um“ und/oder „betriebsfähig, um“ in einer Ausführungsform irgendeine Vorrichtung, Logik, Hardware und/oder ein Element, die/das derart gestaltet ist, dass die Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements auf eine angegebene Art und Weise ermöglicht wird. Es sei wie vorhergehend erwähnt, dass die Verwendung von um, in der Lage, um oder betriebsfähig, um in einer Ausführungsform den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements bezeichnet, wobei die Vorrichtung, Logik, Hardware und/oder das Element nicht betrieben wird, sondern derart gestaltet ist, dass die Verwendung einer Vorrichtung auf eine angegebene Art und Weise ermöglicht wird.
  • Ein Wert, so wie er hier verwendet wird, weist irgendeine bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands auf. Häufig wird die Verwendung von logischen Pegeln, logischen Werten oder Logikwerten auch als 1en und 0en bezeichnet, die einfach binäre logische Zustände darstellen. Zum Beispiel bezeichnet eine 1 einen logisch hohen Pegel und eine 0 bezeichnet einen logisch niedrigen Pegel. In einer Ausführungsform kann eine Speicherzelle, wie beispielsweise eine Transistor- oder Flash-Zelle, in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden indes auch 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. Daher weist ein Wert irgendeine Darstellung von Informationen auf, die in einem Rechensystem gehalten werden kann.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert, wie beispielsweise eine logische Eins, einen Standard- oder Ausgangszustand darstellen, während ein zweiter Wert, wie beispielsweise eine logische Null, einen Nicht-Standardzustand darstellen kann. Darüber hinaus bezeichnen die Begriffe Zurücksetzen und Einstellen in einer Ausführungsform einen Standardbeziehungsweise einen aktualisierten Wert oder Zustand. Zum Beispiel weist ein Standardwert potenziell einen hohen logischen, d. h. zurückgesetzten, Wert, auf, während ein aktualisierter Wert potenziell einen niedrigen logischen, d. h. eingestellten, Wert aufweist. Es sei erwähnt, dass irgendeine Kombination von Werten verwendet werden kann, um irgendeine Anzahl von Zuständen darzustellen.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die vorhergehend dargelegt sind, können über Befehle oder Code ausgeführt werden, die auf einem maschinenlesbaren oder computerlesbaren Datenträger, auf den durch eine Maschine beziehungsweise einen Computer zugegriffen werden kann, gespeichert sind und die durch ein Verarbeitungselement ausführbar sind. Ein nichtflüchtiger maschinenlesbarer Datenträger, auf den durch eine Maschine zugegriffen werden kann, weist irgendeinen Mechanismus auf, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die durch eine Maschine, wie beispielsweise einen Computer oder ein elektronisches System, gelesen werden kann. Zum Beispiel weist ein nichtflüchtiger Datenträger, auf den durch eine Maschine zugegriffen werden kann, Arbeitsspeicher (Random-Access Memory — RAM), wie beispielsweise statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; einen magnetischen oder optischen Datenträger; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; andere Formen von Speichervorrichtungen zum Halten von Informationen, die von flüchtigen (ausgebreiteten) Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw. auf, die von den nichtflüchtigen Datenträgern zu unterscheiden sind, die Informationen davon empfangen können.
  • Befehle, die verwendet werden, um Logik zu programmieren, um Ausführungsformen der Offenbarung durchzuführen, können innerhalb eines Speichers in dem System, wie beispielsweise DRAM, Cache, Flash-Speicher, oder einem anderen Speicher, gespeichert werden. Ferner können die Befehle über ein Netzwerk oder mittels eines anderen maschinenlesbaren Datenträgers verteilt werden. Somit kann ein maschinenlesbarer Datenträger irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form, wie beispielsweise Floppy-Disketten, optische Platten, Compact Disc, Read-Only Memory (CD-ROMs) und magneto-optische Platten, Read-Only Memory (ROMs), Random Access Memory (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetische oder optische Karten, Flash-Speicher, oder einen greifbaren maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird, aufweisen, ist aber nicht darauf beschränkt. Dementsprechend weist der computerlesbare Datenträger irgendeinen Typ von greifbarem maschinenlesbarem Datenträger auf, der zur Speicherung oder Übertragung elektronischer Befehle oder Informationen in einer Form geeignet ist, die durch eine Maschine (z. B. einen Computer) lesbar ist.
  • Wenn in dieser Beschreibung der Ausdruck „eine Ausführungsform“ verwendet wird, ist damit durchweg gemeint, dass ein/e bestimmte/s Merkmal, Struktur oder Eigenschaft, das/die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. So betreffen die Erwähnungen des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen über diese Beschreibung hinweg nicht notwendigerweise alle dieselbe Ausführungsform. Darüber hinaus können die bestimmten Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen auf irgendeine zweckmäßige Art und Weise kombiniert werden.
  • In der vorhergehenden Patentbeschreibung wurde eine detaillierte Beschreibung unter Bezugnahme auf spezifische Ausführungsbeispiele gegeben. Es ist indes offensichtlich, dass verschiedene Abwandlungen und Änderungen daran vorgenommen werden können, ohne vom breiteren Geist und Schutzumfang der Offenbarung, wie in den beiliegenden Ansprüchen dargelegt, abzuweichen. Die Patentbeschreibung und Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne und nicht in einem einschränkenden Sinne zu betrachten. Ferner bezieht sich die vorhergehende Verwendung einer Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf unterschiedliche und getrennte Ausführungsformen sowie potenziell auf dieselbe Ausführungsform beziehen.
  • Einige Abschnitte der ausführlichen Beschreibung sind in Form von Algorithmen und symbolischen Darstellungen von Operationen auf Datenbits innerhalb eines Computerspeichers dargelegt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die durch den Fachmann im Fach der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit anderen Fachmännern am effektivsten zu vermitteln. Ein Algorithmus wird hier und allgemein erdacht, um eine in sich stimmige Folge von Operationen zu sein, die zu einem gewünschten Ergebnis führen. Die Operationen sind diejenigen, die physikalische Handhabungen physikalischer Größen erfordern. Für gewöhnlich aber nicht notwendigerweise nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen und auf eine andere Art und Weise gehandhabt werden können. Bisweilen hat es sich, hauptsächlich aus Gründen der allgemeinen Verwendung, als praktisch erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen. Die hier beschriebenen Blöcke können Hardware, Software, Firmware oder eine Kombination davon sein.
  • Man sollte indes nicht vergessen, dass alle diese und ähnliche Begriffe mit den geeigneten physikalischen Größen zu verbinden sind und lediglich geeignete Bezeichnungen sind, die auf diese Größen angewandt werden. Sofern nichts anderes spezifisch angegeben oder aus der vorhergehenden Erörterung ersichtlich ist, wird man verstehen, dass über die Beschreibung hinweg Erörterungen, die Begriffe, wie beispielsweise „definieren“, „empfangen“, „bestimmen“, „ausgeben“, „verbinden“, „verknüpfen“, „erhalten“, „authentifizieren“, „verbieten“, „ausführen“, „anfordern“, „kommunizieren“ oder dergleichen, die Tätigkeiten und Prozesse eines Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung betreffen, die Daten, die in den Registern und Speichern des Rechensystems als physikalische (z. B. elektronische) Größen dargestellt sind, handhabt und in andere Daten umwandelt, die auf ähnliche Weise als physikalische Größen innerhalb der Speicher oder Register des Rechensystems oder anderen solchen Informationsspeicher-, - übertragungs- oder Anzeigevorrichtungen dargestellt sind.
  • Die hier verwendeten Begriffe „Beispiel“ oder „beispielhaft“ bedeuten als ein Beispiel, Fall oder eine Veranschaulichung dienend. Irgendein/e Gesichtspunkt oder Gestaltung, der/die hier als „Beispiel“ oder „beispielhaft“ beschrieben wird, ist nicht notwendigerweise als gegenüber anderen Gesichtspunkten oder Gestaltungen bevorzugt oder vorteilhaft aufzufassen. Stattdessen wird mit der Verwendung der Wörter „Beispiel“ oder „beispielhaft“ beabsichtigt, Konzepte auf eine konkrete Art und Weise darzulegen. Mit dem Begriff „oder“, so wie er in der vorliegenden Anmeldung verwendet wird, wird beabsichtigt, dass damit ein einschließendes „Oder“ anstatt ein ausschließendes „Oder“ gemeint ist. Das heißt, sofern nichts anderes angegeben ist oder deutlich aus dem Zusammenhang hervorgeht, wird mit „X weist A oder B auf“ beabsichtigt, dass damit eine der natürlich einschließenden Permutationen gemeint ist. Das heißt, wenn X A aufweist; X B aufweist; oder X sowohl A als auch B aufweist, erfüllt „X weist A oder B auf“ jeden beliebigen der vorhergehenden Fälle. Darüber hinaus sollten die Artikel „ein“ und „eine“, so wie sie in der vorliegenden Anmeldung und den beigefügten Ansprüchen verwendet werden, allgemein derart verstanden werden, dass damit „ein/e oder mehrere“ gemeint ist, es sei denn, es wird auf andere Weise angegeben oder aus dem Zusammenhang deutlich, dass es sich um den Singular handelt. Darüber hinaus wird mit der Verwendung des Ausdrucks „eine Ausführungsform“ oder „einer Ausführungsform“ oder „eine Ausführung“ oder „einer Ausführung“ nicht beabsichtigt, dass damit dieselbe Ausführungsform oder Ausführung gemeint ist, es sei denn, dies wird dementsprechend beschrieben. Ebenso sind die Begriffe „erste/r/s“, „zweite/r/s“, „dritte/r/s“, „vierte/r/s“ usw., so wie sie hier verwendet werden, als Bezeichnungen gemeint, um unter verschiedenen Elementen zu unterscheiden, und es ist möglich, dass diese nicht notwendigerweise eine Ordnungsbedeutung gemäß ihrer Zahlenbezeichnung aufweisen.

Claims (25)

  1. Vorrichtung, die ein Extended Capability Register und Eingabe/Ausgabe- (E/A) Speicherverwaltungsschaltungen aufweist, wobei die E/A-Speicherverwaltungsschaltungen für Folgendes vorgesehen sind: Empfangen einer Adressumsetzungsanforderung, die eine virtuelle Adresse referenziert, die einem virtuellen Gastadressraum einer virtuellen Maschine zugehörig ist, von einer E/A-Vorrichtung; Umsetzen der virtuellen Adresse in eine physikalische Gastadresse, die einem physikalischen Gastadressraum der virtuellen Maschine zugehörig ist; und als Reaktion auf das Bestimmen, dass ein Wert, der durch das Extended Capability Register gespeichert wird, einen Restrict-Translation-Request-Response-Modus (RTRR - Modus zur Einschränkung der Umsetzungsanforderungsantwort) angibt, Senden einer Umsetzungsantwort, die die physikalische Gastadresse aufweist, an die E/A-Vorrichtung.
  2. Vorrichtung nach Anspruch 1, wobei die E/A-Speicherverwaltungsschaltungen ferner als Reaktion auf den Empfang einer umgesetzten Anforderung, die die physikalische Gastadresse aufweist, von der E/A-Vorrichtung für Folgendes vorgesehen sind: Abschließen der Umsetzung der physikalischen Gastadresse in eine physikalische Host-Adresse unter Verwendung eines Virtual Machine Monitors (VMM), der ein Mapping zwischen der physikalischen Gastadresse und der physikalischen Host-Adresse durchführt; und Senden der physikalischen Host-Adresse an die E/A-Vorrichtung bei der erfolgreichen Umsetzung der physikalischen Gastadresse in die physikalische Host-Adresse.
  3. Vorrichtung nach Anspruch 1, wobei der RTRR-Modus in Bezug zum virtuellen Gastadressraum oder der E/A-Vorrichtung eingestellt ist, und wobei eine Extended-Context-Entry-Datenstruktur einer Extended-Root-Entry-Tabelle für Umsetzungen der zweiten Ebene innerhalb der E/A-Speicherverwaltungsschaltungen ein RTRR-Feld zum Aktivieren des RTRR-Modus des Capability-Registers aufweist.
  4. Vorrichtung nach Anspruch 1, wobei die E/A-Speicherverwaltungsschaltungen ferner vorgesehen sind, als Reaktion auf das Feststellen eines Terminal Faults während der Umsetzung, null Berechtigungen in die Umsetzungsantwort in Bezug auf Zugriffsrechte auf eine Seite im Speicher einzuschließen.
  5. Vorrichtung nach Anspruch 1, wobei die E/A-Speicherverwaltungsschaltungen ferner ein zweites Extended Capability Register aufweisen und wobei die E/A-Speicherverwaltungsschaltungen ferner für Folgendes vorgesehen sind: Feststellen einer erfolgreichen Umsetzung der virtuellen Adresse in eine physikalische Host-Adresse; und als Reaktion auf das Feststellen, dass ein No-Permission-on-Translation-Request-Response-Modus (NP-TRSP - keine Berechtigung für Umsetzungsanforderungsantwort) in dem zweiten Extended Capability Register eingestellt ist, Bestimmen, ob die Adressumsetzungsanforderung eine Prozessadressraumkennung (Process Address Space Identifier - PASID) aufweist, wobei der NP-TRSP-Modus einem Seitentabelleneintrag einer zweiten Ebene entspricht.
  6. Vorrichtung nach Anspruch 5, wobei die E/A-Speicherverwaltungsschaltungen zum Umsetzen der virtuellen Adresse in die physikalische Gastadresse eine verschachtelte Umsetzung innerhalb mehrerer Ebenen einer Paging-Struktur einer zweiten Ebene, außer für mindestens eine letzte Ebene der mehreren Ebenen, durchführen.
  7. Vorrichtung nach Anspruch 6, wobei die E/A-Speicherverwaltungsschaltungen ferner vorgesehen sind, die Aktivierung von verschachtelter Umsetzung für Umsetzungsanforderungen mit einer PASID festzustellen, und wobei die virtuelle Adresse eine virtuelle Gastadresse (Guest Virtual Address - GVA) ist.
  8. Vorrichtung nach Anspruch 6, wobei die E/A-Speicherverwaltungsschaltungen ferner vorgesehen sind, die Aktivierung von verschachtelter Umsetzung für Umsetzungsanforderungen ohne eine PASID festzustellen, wobei die virtuelle Adresse eine virtuelle E/A-Adresse (I/O Virtual Address - IOVA) ist und der virtuelle Gastadressraum ein virtueller E/A-Adressraum ist.
  9. Vorrichtung nach Anspruch 6, wobei die E/A-Speicherverwaltungsschaltungen ferner für Folgendes vorgesehen sind: Feststellen der Deaktivierung von verschachtelter Umsetzung für Anforderungen ohne PASID; und Senden eines eingestellten Flags Untranslated Access Only (U - nur nicht umgesetzter Zugriff) in der Umsetzungsantwort, um eine nicht umgesetzte Anforderung ohne Senden einer Adresse zu erzwingen.
  10. Vorrichtung nach Anspruch 6, wobei die E/A-Speicherverwaltungsschaltungen ferner als Reaktion auf den Empfang einer umgesetzten Anforderung, die die physikalische Gastadresse aufweist, von der E/A-Vorrichtung für Folgendes vorgesehen sind: eines von der vollständigen Umsetzung der physikalischen Gastadresse durch die mindestens eine letzte Ebene der Paging-Struktur der zweiten Ebene, um eine physikalische Host-Adresse zu erzeugen, oder der Feststellung einer böswilligen Adresse innerhalb der umgesetzten Anforderung; Senden der physikalischen Host-Adresse an die E/A-Vorrichtung bei der erfolgreichen Umsetzung der physikalischen Gastadresse in die physikalische Host-Adresse; und Erzeugen eines Terminal Faults als Reaktion auf das Feststellen der böswilligen Adresse.
  11. System, das Folgendes aufweist: einen Speicher zum Speichern von Seiten, für die ein Mapping auf einen physikalischen Gastadressraum einer virtuellen Maschine durchgeführt wird; Eingangs-/Ausgangs- (E/A) Speicherverwaltungsschaltungen, die betriebsfähig an den Speicher gekoppelt sind und ein Extended Capability Register aufweisen, wobei die E/A-Speicherverwaltungsschaltungen für Folgendes vorgesehen sind: Empfangen einer Adressumsetzungsanforderung, die eine virtuelle Adresse referenziert, die einem virtuellen Gastadressraum einer virtuellen Maschine zugehörig ist, von einer E/A-Vorrichtung; Umsetzen der virtuellen Gastdresse in eine physikalische Gastadresse, die dem physikalischen Gastadressraum der virtuellen Maschine zugehörig ist; und als Reaktion auf das Bestimmen, dass ein Wert, der durch das Extended Capability Register gespeichert wird, einen Restrict-Translation-Request-Response-Modus (RTRR - Modus zur Einschränkung der Umsetzungsanforderungsantwort) angibt, Senden einer Umsetzungsantwort, die die physikalische Gastadresse aufweist, an die E/A-Vorrichtung.
  12. System nach Anspruch 11, wobei die E/A-Speicherverwaltungsschaltungen ferner als Reaktion auf den Empfang einer umgesetzten Anforderung, die die physikalische Gastadresse aufweist, von der E/A-Vorrichtung für Folgendes vorgesehen sind: Abschließen der Umsetzung der physikalischen Gastadresse in eine physikalische Host-Adresse unter Verwendung eines Virtual Machine Monitors (VMM), der ein Mapping zwischen der physikalischen Gastadresse und der physikalischen Host-Adresse durchführt; und Senden der physikalischen Host-Adresse an die E/A-Vorrichtung bei der erfolgreichen Umsetzung der physikalischen Gastadresse in die physikalische Host-Adresse.
  13. System nach Anspruch 11, wobei der RTRR-Modus in Bezug zum virtuellen Gastadressraum oder der E/A-Vorrichtung eingestellt wird und wobei ein Eintrag einer Prozessadressraumkennung (Process Address Space Identifier - PASID) innerhalb einer PASID-Tabelle, die verwendet wird, um die physikalische Gastadresse umzusetzen, ein RTRR-Feld zum Aktivieren des RTRR-Modus des Capability-Registers aufweist.
  14. System nach Anspruch 11, wobei die E/A-Speicherverwaltungsschaltungen ferner vorgesehen sind, als Reaktion auf das Feststellen eines Terminal Faults während der Umsetzung, null Berechtigungen in die Umsetzungsantwort in Bezug auf Zugriffsrechte auf eine Seite im Speicher einzuschließen.
  15. System nach Anspruch 11, wobei die E/A-Speicherverwaltungsschaltungen ferner ein zweites Extended Capability Register aufweisen und wobei die E/A-Speicherverwaltungsschaltungen ferner für Folgendes vorgesehen sind: Feststellen einer erfolgreichen Umsetzung der virtuellen Adresse in eine physikalische Host-Adresse; und als Reaktion auf das Feststellen, dass ein No-Permission-on-Translation-Request-Response-Modus (NP-TRSP - keine Berechtigung für Umsetzungsanforderungsantwort) in dem zweiten Extended Capability Register eingestellt ist, Bestimmen, ob die Adressumsetzungsanforderung eine Prozessadressraumkennung (Process Address Space Identifier - PASID) aufweist, wobei der NP-TRSP-Modus einem Seitentabelleneintrag einer zweiten Ebene entspricht.
  16. System nach Anspruch 15, wobei die E/A-Speicherverwaltungsschaltungen zum Umsetzen der virtuellen Adresse in die physikalische Gastadresse eine verschachtelte Umsetzung innerhalb mehrerer Ebenen einer Paging-Struktur einer zweiten Ebene, außer für mindestens eine letzte Ebene der mehreren Ebenen, durchführen.
  17. System nach Anspruch 16, wobei die E/A-Speicherverwaltungsschaltungen ferner vorgesehen sind, die Aktivierung von verschachtelter Umsetzung für Umsetzungsanforderungen mit einer PASID festzustellen, und wobei die virtuelle Adresse eine virtuelle Gastadresse (Guest Virtual Address - GVA) ist.
  18. System nach Anspruch 16, wobei die E/A-Speicherverwaltungsschaltungen ferner vorgesehen sind, die Aktivierung von verschachtelter Umsetzung für Umsetzungsanforderungen ohne eine PASID festzustellen, wobei die virtuelle Adresse eine virtuelle E/A-Adresse (I/O Virtual Address - IOVA) ist und der virtuelle Gastadressraum ein virtueller E/A-Adressraum ist.
  19. System nach Anspruch 16, wobei die E/A-Speicherverwaltungsschaltungen ferner für Folgendes vorgesehen sind: Feststellen der Deaktivierung der verschachtelten Umsetzung für Anforderungen ohne PASID; und Senden eines eingestellten Flags Untranslated Access Only (U - nur nicht umgesetzter Zugriff) in der Umsetzungsantwort, um eine nicht umgesetzte Anforderung ohne Senden einer Adresse zu erzwingen.
  20. System nach Anspruch 16, wobei die E/A-Speicherverwaltungsschaltungen ferner als Reaktion auf den Empfang einer umgesetzten Anforderung, die die physikalische Gastadresse aufweist, von der E/A-Vorrichtung für Folgendes vorgesehen sind: eines von der vollständigen Umsetzung der physikalischen Gastadresse durch die mindestens eine letzte Ebene der Paging-Struktur der zweiten Ebene, um eine physikalische Host-Adresse zu erzeugen, oder der Feststellung einer böswilligen Adresse innerhalb der umgesetzten Anforderung; Senden der physikalischen Host-Adresse an die E/A-Vorrichtung bei der erfolgreichen Umsetzung der physikalischen Gastadresse; und Erzeugen eines Terminal Faults als Reaktion auf das Feststellen der böswilligen Adresse.
  21. Verfahren, das Folgendes aufweist: durch eine Verarbeitungsvorrichtung, die einen Virtual Machine Monitor (VMM) ausführt, innerhalb einer Paging-Tabelle einer zweiten Ebene eines Hauptspeichers, Mapping einer ersten physikalischen Gastadresse auf eine erste physikalische Host-Adresse als Reaktion auf das seitenweise Einlagern einer ersten Speicherseite in den Hauptspeicher; Feststellen einer Anforderung für das seitenweise Auslagern der ersten physikalischen Gastadresse von dem Hauptspeicher durch die Verarbeitungsvorrichtung, die den VMM ausführt, wobei die Anforderung auf einem Overcommit des Hauptspeichers beruht; Einstellen eines Felds No-Permission-on-Translation-Request-Response (NP-TRSP - keine Berechtigung für Umsetzungsanforderungsantwort) in der Paging-Tabelle der zweiten Ebene, die das Mapping enthält, durch die Verarbeitungsvorrichtung, die den VMM ausführt, um einer anschließenden Umsetzungsanforderung die Ungültigkeitserklärung von im Cache gespeicherten Kopien der ersten physikalischen Gastadresse anzugeben; Anfordern einer Ungültigkeitserklärung der ersten physikalischen Gastadresse an einem I/O Translation Lookaside Buffer der E/A-Speicherverwaltungsschaltungen durch die Verarbeitungsvorrichtung, die den VMM ausführt; Anfordern einer Ungültigkeitserklärung der ersten physikalischen Gastadresse an einem Adressumsetzungs-Cache einer E/A-Vorrichtung durch die Verarbeitungsvorrichtung, die den VMM ausführt; und Einstellen des Mappings zwischen der ersten physikalischen Gastadresse und der ersten physikalischen Host-Adresse in der Paging-Tabelle der zweiten Ebene als nicht vorhanden durch die Verarbeitungsvorrichtung, die den VMM ausführt.
  22. Verfahren nach Anspruch 21, das ferner das Warten auf den Abschluss der Ungültigkeitserklärungen der ersten physikalischen Gastadresse am I/O Translation Lookaside Buffer und dem Adressumsetzungs-Cache vor dem Durchführen der Einstellung aufweist.
  23. Verfahren nach Anspruch 21, das ferner Folgendes aufweist: Empfangen der anschließenden Umsetzungsanforderung, die die erste physikalische Gastadresse enthält, durch die E/A-Speicherverwaltungsschaltungen; Feststellen, dass das NP-TRSP-Feld in der Paging-Tabelle der zweiten Ebene eingestellt ist, während der Umsetzung durch die E/A-Speicherverwaltungsschaltungen; und in einer Umsetzungsantwort an die E/A-Vorrichtung, Übertragen von null Berechtigungen bezüglich der Zugriffsrechte auf die erste Speicherseite als Reaktion auf das Feststellen, dass das NP-TRSP-Feld eingestellt ist, durch die E/A-Speicherverwaltungsschaltungen.
  24. Verfahren nach Anspruch 21, das ferner Folgendes aufweist: Feststellen der anschließenden Umsetzungsanforderung, die die erste physikalische Gastadresse enthält; Anfordern eines seitenweisen Einlagerns einer zweiten physikalischen Host-Adresse in den Hauptspeicher; Mapping der ersten physikalischen Gastadresse auf die zweite physikalische Host-Adresse, um ein zweites Mapping zu erzeugen; und Zurücksetzen des NP-TRSP-Felds auf Null in der Paging-Tabelle der zweiten Ebene, die dem zweiten Mapping entspricht.
  25. Verfahren nach Anspruch 21, das ferner Folgendes aufweist: Anfordern einer Ungültigkeitserklärung der ersten physikalischen Host-Adresse an einem I/O Translation Lookaside Buffer der E/A-Speicherverwaltungsschaltungen; Anfordern einer Ungültigkeitserklärung der ersten physikalischen Host-Adresse an einem Adressumsetzungs-Cache der E/A-Vorrichtung; und nach dem Abschluss der Ungültigkeitserklärungen der ersten physikalischen Host-Adresse an dem I/O Translation Lookaside Buffer und dem Adressumsetzungs-Cache, seitenweises Auslagern von Daten von der ersten Speicherseite.
DE112017003483.3T 2016-07-11 2017-06-09 Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten Ceased DE112017003483T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/207,218 US10048881B2 (en) 2016-07-11 2016-07-11 Restricted address translation to protect against device-TLB vulnerabilities
US15/207,218 2016-07-11
PCT/US2017/036877 WO2018013267A1 (en) 2016-07-11 2017-06-09 Restricted address translation to protect against device-tlb vulnerabilities

Publications (1)

Publication Number Publication Date
DE112017003483T5 true DE112017003483T5 (de) 2019-04-04

Family

ID=60910361

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017003483.3T Ceased DE112017003483T5 (de) 2016-07-11 2017-06-09 Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten

Country Status (3)

Country Link
US (1) US10048881B2 (de)
DE (1) DE112017003483T5 (de)
WO (1) WO2018013267A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10402355B2 (en) * 2017-02-08 2019-09-03 Texas Instruments Incorporated Apparatus and mechanism to bypass PCIe address translation by using alternative routing
US11082523B2 (en) * 2017-02-09 2021-08-03 International Business Machines Corporation System, method and computer program product for a distributed virtual address space
US11372787B2 (en) * 2017-12-09 2022-06-28 Intel Corporation Unified address space for multiple links
US11169929B2 (en) * 2018-04-20 2021-11-09 Intel Corporation Pause communication from I/O devices supporting page faults
US11556437B2 (en) 2018-08-22 2023-01-17 Intel Corporation Live migration of virtual devices in a scalable input/output (I/O) virtualization (S-IOV) architecture
US11030144B2 (en) * 2018-12-14 2021-06-08 Texas Instruments Incorporated Peripheral component interconnect (PCI) backplane connectivity system on chip (SoC)
WO2020124519A1 (en) * 2018-12-21 2020-06-25 Intel Corporation Process address space identifier virtualization using hardware paging hint
US10929310B2 (en) * 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
US11599621B2 (en) * 2019-03-30 2023-03-07 Intel Corporation Apparatuses, methods, and systems for verification of input-output memory management unit to device attachment
US11036649B2 (en) * 2019-04-04 2021-06-15 Cisco Technology, Inc. Network interface card resource partitioning
US11068411B2 (en) * 2019-07-29 2021-07-20 International Business Machines Corporation Reducing impact of context switches through dynamic memory-mapping overallocation
JP2021051420A (ja) * 2019-09-24 2021-04-01 株式会社東芝 仮想化支援デバイス及び仮想化支援デバイスの制御方法
EP4036741A1 (de) * 2019-10-17 2022-08-03 Huawei Technologies Co., Ltd. Adressenübersetzungsverfahren und -vorrichtung
TWI743611B (zh) * 2019-12-04 2021-10-21 新唐科技股份有限公司 處理裝置與其資料存取方法
CN111290829B (zh) * 2020-01-15 2023-05-02 海光信息技术股份有限公司 访问控制模组、虚拟机监视器及访问控制方法
GB2593484B (en) * 2020-03-24 2022-09-28 Advanced Risc Mach Ltd Memory management
US20210149815A1 (en) * 2020-12-21 2021-05-20 Intel Corporation Technologies for offload device fetching of address translations
WO2022133879A1 (en) * 2020-12-24 2022-06-30 Intel Corporation Device, system, and method for inspecting direct memory access requests
US11714766B2 (en) * 2020-12-29 2023-08-01 Ati Technologies Ulc Address translation services buffer
US11853227B2 (en) * 2021-04-28 2023-12-26 Arm Limited Data processing apparatus and method for performing address translation
US11934567B2 (en) * 2021-09-07 2024-03-19 Nvidia Corporation Preventing unauthorized translated access using address signing
GB2617076A (en) * 2022-03-28 2023-10-04 Advanced Risc Mach Ltd Device permissions table defining permissions information for a translated access request

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7467381B2 (en) 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US7334107B2 (en) 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US7340582B2 (en) 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US8843727B2 (en) 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US8706942B2 (en) 2004-12-29 2014-04-22 Intel Corporation Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices
US9535849B2 (en) 2009-07-24 2017-01-03 Advanced Micro Devices, Inc. IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect
US8386745B2 (en) * 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US9639476B2 (en) 2013-09-26 2017-05-02 Cavium, Inc. Merged TLB structure for multiple sequential address translations
US9208103B2 (en) 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US10114760B2 (en) 2014-01-14 2018-10-30 Nvidia Corporation Method and system for implementing multi-stage translation of virtual addresses
GB2536201B (en) * 2015-03-02 2021-08-18 Advanced Risc Mach Ltd Handling address translation requests

Also Published As

Publication number Publication date
US20180011651A1 (en) 2018-01-11
US10048881B2 (en) 2018-08-14
WO2018013267A1 (en) 2018-01-18

Similar Documents

Publication Publication Date Title
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
TWI574156B (zh) 具有獨立的使用者和監管者域的記憶體保護鑰結構
DE102018126731A1 (de) Freigabeanweisung, um Seitenblock während des Auslagerns umzukehren
DE202019005671U1 (de) Koexistenz von Vertrauensdomänenarchitektur mitMehrschlüssel-Gesamtspeicherverschlüsselungstechnologieauf Servern
DE102018000886A1 (de) Virtuelle Maschinenkommunikation auf Hardware-Basis
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
US20150277949A1 (en) Securing shared interconnect for virtual machine
EP3528130B1 (de) Mechanismus zur verhinderung von software-seitenkanälen
DE102018125257A1 (de) Defragmentierter und effizienter mikrooperationscache
US20210064525A1 (en) Hardware-based virtualization of input/output (i/o) memory management unit
DE112013007701T5 (de) Ein-Chip-System (SOC), das Hybridprozessorkerne enthält
US11157303B2 (en) Detecting bus locking conditions and avoiding bus locks
DE202019005672U1 (de) System zum Verhindern eines unautorisierten Zugriffs auf verschlüsselten Speicher
DE112015006934T5 (de) Verschachtelte Virtualisierung für virtuelle Maschinenexits
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE102018125747A1 (de) Unterstützung für eine höhere anzahl von gleichzeitigenschlüsseln in einer kryptografie-engine mit mehrerenschlüsseln
WO2017172245A1 (en) Memory protection at a thread level for a memory protection key architecture
DE112019006898T5 (de) Dynamisches umschalten zwischen ept- und schattenseitentabellen zur laufzeitprozessorverifikation
DE202016009016U1 (de) Befehle und Logik für wiederkehrende benachbarte Sammlungen
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE112010003942T5 (de) Einrichtung zum Setzen von Schlüsseln ohne Stilllegung
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE102014003854A1 (de) Robuste und Hochleistungsbefehle für Systemaufruf

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final