DE112006001642T5 - Adressfensterunterstützung für Direktspeicherzugriffsumsetzung - Google Patents

Adressfensterunterstützung für Direktspeicherzugriffsumsetzung Download PDF

Info

Publication number
DE112006001642T5
DE112006001642T5 DE112006001642T DE112006001642T DE112006001642T5 DE 112006001642 T5 DE112006001642 T5 DE 112006001642T5 DE 112006001642 T DE112006001642 T DE 112006001642T DE 112006001642 T DE112006001642 T DE 112006001642T DE 112006001642 T5 DE112006001642 T5 DE 112006001642T5
Authority
DE
Germany
Prior art keywords
dma
address
memory
entry
access
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
DE112006001642T
Other languages
English (en)
Inventor
Rajesh Portland Sankaran
Udo Steinberg
Steven Hillsboro Bennett
Andrew Hillsboro Anderson
Gilbert Portland Neiger
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 DE112006001642T5 publication Critical patent/DE112006001642T5/de
Ceased legal-status Critical Current

Links

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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)

Abstract

Vorrichtung mit einer Neuabbildungsschaltung zum Ermöglichen eines Zugriffs durch ein oder mehrere Eingabe/Ausgabe(I/O)-Geräte auf eine Speichervorrichtung unter Verwendung von Direktspeicherzugriffs(DMA)-Transaktionen, wobei die Neuabbildungsschaltung einen ersten Umsetzungsmechanismus zum Ausführen von Speicheradreßumsetzungen für I/O-DMA-Transaktionen über adreßfensterbasierte Umsetzungen enthält.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft allgemein Mikroprozessoren. Insbesondere betrifft die vorliegende Erfindung die Eingabe/Ausgabe(I/O)-Virtualisierung.
  • ALLGEMEINER STAND DER TECHNIK
  • In dem Maße, wie die Architekturen von Mikroprozessoren immer komplexer werden, um Hochleistungsanwendungen zu unterstützen, wird die I/O-Verwaltung immer anspruchsvoller. Bestehende Techniken, die sich dem Problem der I/O-Verwaltung widmen, sind mit einer Reihe von Nachteilen behaftet. Eine Technik arbeitet ausschließlich mit auf Software basierender I/O-Virtualisierung, um die I/O einer virtuellen Maschine (VM) zu unterstützen. Diese Technik hat nur begrenzte Funktionalität, Leistung und Zuverlässigkeit.
  • Die Funktionalität, die von dem Gast-Betriebssystem (OS) und den Gast-Anwendungen gesehen wird, ist durch die Funktionalität begrenzt, die durch die virtuellen Geräte unterstützt wird, die in der VM-Monitor(VMM)-Software emuliert wird. Die Gast-I/O-Operationen werden durch die VMM erfaßt und stellvertretend ausgeführt oder emuliert, bevor sie an die zugrundeliegende Hardware der physischen Geräte übergeben wird, was zu einer schlechten Leistung führt.
  • Außerdem arbeitet der Gerätetreiber für das Hardware-Gerät ganz oder teilweise als Teil der bevorrechtigten VMM-Software, was die Gesamtzuverlässigkeit der Plattform beeinträchtigen kann. Techniken, die spezialisierte Umsetzungsstrukturen verwenden, können nur ein bestimmtes Gerät oder ein begrenztes Nutzungsmodell unterstützen. Allgemeine I/O-Speicherverwaltungseinheiten bieten nur Unterstützung für virtuelle I/O-Adreßräume von begrenzter Größe oder Komplexität.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird anhand der folgenden detaillierten Beschreibung und anhand der begleitenden Zeichnungen verschiedener Ausführungsformen der Erfindung besser verstanden. Die Zeichnungen dürfen jedoch nicht so ausgelegt werden, als würden sie die Erfindung auf die konkreten Ausführungsformen beschränken, sondern sie dienen lediglich der Erläuterung und dem Verstehen.
  • 1 veranschaulicht eine Ausführungsform eines Computersystems.
  • 2 veranschaulicht eine Ausführungsform einer Eingabe/Ausgabe(I/O)-Gerätezuweisung.
  • 3 veranschaulicht eine Ausführungsform einer Virtualisierung unter Verwendung einer Direktspeicherzugriffs(DMA)-Neuabbildung.
  • 4 veranschaulicht eine Ausführungsform einer I/O-Adreßumsetzung.
  • 5 veranschaulicht eine Ausführungsform einer DMA-Neuabbildungsstruktur.
  • 6 veranschaulicht eine Ausführungsform eines Adreßfensterseitentabelleneintragsformats.
  • 7 veranschaulicht eine Ausführungsform eines Prozesses zur adreßfensterbasierten DMA-Adreßumsetzung.
  • 8 veranschaulicht eine Ausführungsform eines Adreßfenstertabellenformats.
  • 9 veranschaulicht eine Ausführungsform von Adreßfensterlöschregistern.
  • 10 veranschaulicht eine Ausführungsform eines Adreßfensterlöschregisterformats.
  • 11 veranschaulicht ein Flußdiagramm für eine Ausführungsform einer DMA-Umsetzung.
  • 12 veranschaulicht eine weitere Ausführungsform eines Computersystems.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird eine Architektur für eine Direktspeicherzugriffs(DMA)-Umsetzung, die eine adreßfensterbasierte Umsetzung implementiert, beschrieben. Wenn in der Spezifikation von "eine Ausführungsform" die Rede ist, so bedeutet das, daß ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte kennzeichnende Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der Erfindung enthalten ist. Das Vorkommen der Wendung "in einer Ausführungsform" an verschiedenen Stellen in der Spezifikation bezieht sich nicht immer unbedingt auf dieselbe Ausführungsform.
  • In der folgenden Beschreibung werden zahlreiche Details dargelegt. Dem Fachmann leuchtet jedoch ein, daß die vorliegende Erfindung auch ohne diese konkreten Details praktiziert werden kann. In anderen Fällen werden bestens bekannte Strukturen und Geräte in Blockschaubildform anstatt im Detail gezeigt, um die vorliegende Erfindung nicht in den Hintergrund treten zu lassen.
  • 1 veranschaulicht eine Ausführungsform eines Computersystems 100. Das Computersystem 100 enthält einen Prozessor 110, einen Prozessorbus 120, einen Speichersteuerhub (MCH) 130, einen Systemspeicher 140, einen Eingabe/Ausgabe-Steuerhub (ICH) 150, einen Peripheriebus 155, eine Massenspeichergerät/schnittstelle 170 und Eingabe/Ausgabe-Geräte 1801 bis 180K und 185. Es ist zu beachten, daß das System 100 auch mehr oder weniger Elemente als die oben genannten enthalten kann.
  • Der Prozessor 110 stellt eine zentrale Verarbeitungseinheit eines beliebigen Architekturtyps dar, wie zum Beispiel eingebettete Prozessoren, mobile Prozessoren, Mikrocontroller, digitale Signalprozessoren, superskalare Prozessoren, nebenläufige Prozessoren, Mehrkernprozessoren, Vektorprozessoren, Single Instruction Multiple Data(SIMD)-Computer, Complex Instruction Set-Computer (CISC), Reduced Instruction Set-Computer (RISC), Very Long Instruction Word(VLIW)- oder Hybridarchitekturen.
  • Der Prozessorbus 120 gibt Schnittstellensignale aus, um es dem Prozessor 110 zu ermöglichen, mit anderen Prozessoren oder Geräten zu kommunizieren, zum Beispiel dem MCH 130. Der Prozessorbus 120 kann eine Einprozessor- oder Multiprozessorkonfiguration unterstützen. Der Prozessorbus 120 kann parallel, sequentiell, in einer Pipeline angeordnet, asynchron, synchron oder eine beliebige Kombination daraus sein.
  • Der MCH 130 besorgt die Steuerung und Konfiguration von Speicher- und Eingabe/Ausgabe-Geräten wie zum Beispiel dem Systemspeicher 140 und dem ICH 150. Der MCH 130 kann in einen Chipsatz integriert sein, der mehrere Funktionen integriert, wie zum Beispiel den isolierten Ausführungsmodus, Host-zu-Peripherie-Busschnittstelle und Speichersteuerung. Der MCH 130 ist mit dem Peripheriebus 155 direkt oder über den ICH 150 verbunden. Im Interesse einer besseren Übersichtlichkeit sind nicht alle Peripheriebusse gezeigt. Es wird in Betracht gezogen, daß das System 100 auch Peripheriebusse wie zum Beispiel einen Peripheral Component Interconnect(PCI)-, einen PCI Express-, einen Accelerated Graphics Port(AGP)- oder einen Industry Standard Architecture(ISA)-Bus und einen Universal Serial Bus (USB) usw. enthalten kann.
  • Der MCH 130 enthält eine Direktspeicherzugriffs(DMA)-Neuabbildungsschaltung 135. Die DMA-Neuabbildungsschaltung 135 bildet ein I/O-Gerät (zum Beispiel eines der I/O-Geräte 1801 bis 180K und 185) in einen Bereich in dem Systemspeicher 140 in einer I/O-Transaktion ab. Die I/O-Transaktion ist in der Regel eine DMA-Anforderung. Die DMA-Neuabbildungsschaltung 135 bietet Hardware-Unterstützung zum Ermöglichen oder Optimieren der I/O-Gerätezuweisung und/oder -verwaltung. Die DMA-Neuabbildungsschaltung 135 kann auch in einem anderen Chipsatz als dem MCH 130, wie zum Beispiel dem ICH 150, enthalten sein. Sie kann auch, ganz oder teilweise, in dem Prozessor 110 oder als ein separater Prozessor oder Co-Prozessor für andere Prozessoren oder Geräte implementiert sein.
  • Der Systemspeicher 140 speichert Systemcode und -daten. Der Systemspeicher 140 ist in der Regel mit dynamischem Direktzugriffsspeicher (DRAM) oder statischem Direktzugriffsspeicher (SRAM) implementiert. Der Systemspeicher kann Programmcode oder -codesegmente enthalten, die eine Ausführungsform der Erfindung implementieren. Der Systemspeicher enthält ein Betriebssystem (OS) 142, oder einen Teil des OS, oder einen Kernel, und einen I/O-Treiber 145. Jedes der Elemente des OS 142 oder der I/O-Treiber 145 können durch Hardware, Soft ware, Firmware, Mikrocode oder eine beliebige Kombination daraus implementiert sein. Der Systemspeicher 140 kann auch andere Programme oder Daten enthalten, die nicht gezeigt sind.
  • Der ICH 150 hat eine Anzahl von Funktionen, die dazu dienen, I/O-Funktionen zu unterstützen. Der ICH 150 kann auch in einen Chipsatz zusammen mit – oder separat von – dem MCH 130 zum Ausführen von I/O-Funktionen integriert sein. Der ICH 150 kann einen Anzahl von Schnittstellen- und I/O-Funktionen enthalten, wie zum Beispiel eine PCI-Busschnittstelle zum Verbinden mit dem Peripheriebus 155, eine Prozessorschnittstelle, einen Interrupt-Controller, einen Direktspeicherzugriffs(DMA)-Controller, eine Energieverwaltungslogik, einen Timer, einen Systemverwaltungsbus (SMBus), eine Universal Serial Bus(USB)-Schnittstelle, eine Massenspeicherschnittstelle, eine Low Pin Count(LPC)-Schnittstelle usw.
  • Die Massenspeichergerät/schnittstelle 170 ermöglicht die Speicherung von Archivinformationen wie zum Beispiel Code, Programmen, Dateien, Daten, Anwendungen und Betriebssysteme. Die Massenspeichergerät/schnittstelle 170 kann mit einer Compact Disk(CD)-ROM 172, einer digitalen Video/Versatile-Disk (DVD) 173, einem Diskettenlaufwerk 174 und einem Festplattenlaufwerk 176 und beliebigen anderen magnetischen oder optischen Speichervorrichtungen verbunden sein. Die Massenspeichergerät/schnittstelle 170 stellt einen Mechanismus zum Lesen von maschinenzugänglichen Medien dar. Zu den maschinenzugänglichen Medien kann computerlesbarer Programmcode zum Ausführen von Aufgaben gehören, wie im Folgenden beschrieben wird.
  • Zu I/O-Geräten 1801 bis 180K können beliebige I/O-Geräte zum Ausführen von I/O-Funktionen, einschließlich DMA-Anforderungen, gehören. Sie sind mit dem Peripheriebus 155 verbunden. Zu Beispielen von I/O-Geräten 1801 bis 180K gehören Controller für Eingabegeräte (zum Beispiel Tastatur, Maus, Trackball, Zeigegeräte), Medienkarten (zum Beispiel Audio, Video, Grafik), Netzwerkkarten und beliebige andere Peripherie-Controller. Das I/O-Gerät 185 ist direkt mit dem ICH 150 verbunden. Der Peripheriebus 155 ist ein beliebiger Bus, der I/O-Transaktionen unterstützt. Zu Beispielen des Peripheriebusses 155 gehören der PCI-Bus, PCI Express usw.
  • Elemente einer Ausführungsform der Erfindung können durch Hardware, Firmware, Software oder eine beliebige Kombination daraus implementiert sein. Der Begriff "Hardware" bezieht sich allgemein auf ein Element mit einer physischen Struktur, wie zum Beispiel elektro nischen, elektromagnetischen, optischen, elektro-optischen, mechanischen, elektromechanischen Teilen usw. Der Begriff "Software" bezieht sich allgemein auf eine logische Struktur, ein Verfahren, eine Vorgehensweise, ein Programm, eine Routine, einen Prozeß, einen Algorithmus, eine Formel, eine Funktion, einen Ausdruck usw. Der Begriff "Firmware" bezieht sich allgemein auf eine logische Struktur, ein Verfahren, eine Vorgehensweise, ein Programm, eine Routine, einen Prozeß, einen Algorithmus, eine Formel, eine Funktion, eine Ausdruck usw., die in einer Hardware-Struktur implementiert oder verkörpert sind (zum Beispiel Flash-Speicher, Nurlesespeicher, löschbarer Nurlesespeicher). Zu Beispielen von Firmware können Mikrocode, ein beschreibbarer Steuerspeicher oder eine mikroprogrammierte Struktur gehören. Bei Implementierung in Software oder Firmware sind die Elemente einer Ausführungsform der vorliegenden Erfindung im Wesentlichen die Codesegmente zum Ausführen der erforderlichen Aufgaben. Die Software/Firmware kann den eigentlichen Code enthalten, um die in einen Ausführungsform der Erfindung beschriebenen Operationen auszuführen, oder kann Code enthalten, der die Operationen emuliert oder simuliert. Die Programm- oder Codesegmente können in einem prozessor- oder maschinenzugänglichen Medium gespeichert sein oder können durch ein Computerdatensignal, das in einer Trägerwelle verkörpert ist, oder ein durch einen Träger moduliertes Signal über ein Übertragungsmedium übertragen werden. Bei dem "prozessorlesbaren oder -zugänglichen Medium" oder "maschinenlesbaren oder -zugänglichen Medium" kann es sich um ein beliebiges Medium handeln, das Informationen speichern, senden oder übertragen kann. Zu Beispielen des prozessorlesbaren oder maschinenzugänglichen Mediums gehören eine elektronische Schaltung, ein Halbleiterspeicherbaustein, ein Nurlesespeicher (ROM), ein Flash-Speicher, ein löschbarer ROM (EROM), eine Diskette, eine Compact Disk(CD)-ROM, eine optischen Disk, eine Festplatte, ein faseroptisches Medium, eine Hochfrequenz(HF)-Verbindung usw. Bei dem Computerdatensignal kann es sich um ein beliebiges Signal handeln, das sich über ein Übertragungsmedium ausbreiten kann, wie zum Beispiel elektronische Netzwerkkanäle, optische Fasern, Luft, Elektromagnetismus, HF-Verbindungen usw. Die Codesegmente können über Computernetzwerke wie zum Beispiel das Internet, Intranet usw. heruntergeladen werden. Das maschinenzugängliche Medium kann in einem Produktionsgegenstand verkörpert sein. Das maschinenzugängliche Medium kann Daten enthalten, die, wenn eine Maschine auf sie zugreift, die Maschine zum Ausführen der im Folgenden beschriebenen Operationen veranlassen. In dem maschinenzugänglichen Medium kann auch Programmcode eingebettet sein. Der Programmcode kann maschinenlesbaren Code zum Ausführen der im Folgenden beschriebenen Operationen enthalten. Der Begriff "Daten" bezieht sich hier auf einen beliebigen Typ von Informationen, die für Maschinenlesezwecke codiert sind. Somit können also Programme, Code, Daten, Dateien usw. dazu gehören.
  • Eine Ausführungsform der Erfindung kann ganz oder teilweise durch Hardware, Software, Firmware oder eine beliebige Kombination daraus implementiert sein. Das Hardware-, Software- oder Firmware-Element kann mehrere miteinander verbundene Module aufweisen. Ein Hardware-Modul ist durch mechanische, elektrische, optische, elektromagnetische oder andere physische Verbindungen mit einem anderen Modul verbunden. Ein Software-Modul ist mit einem anderen Modul durch einen Funktions-, Procedere-, Verfahrens-, Unterprogramm- oder Subroutinen-Aufruf, einen Sprung, eine Verknüpfung, einen durchgehenden Parameter, eine durchgehende Variable und ein durchgehendes Argument, eine Funktionsrückmeldung usw. verbunden. Ein Software-Modul ist mit einem anderen Modul verbunden, um Variablen, Parameter, Argumente, Zeiger usw. zu empfangen und/oder Ergebnisse, aktualisierte Variablen, Zeiger usw. zu erzeugen oder weiterzugeben. Ein Firmware-Modul ist mit einem anderen Modul durch eine beliebige Kombination der oben beschriebenen Hardware- und Software-Verbindungsverfahren verbunden. Ein Hardware-, Software- oder Firmware-Modul kann mit einem beliebigen anderen Hardware-, Software- oder Firmware-Modul verbunden sein. Ein Modul kann auch ein Software-Treiber oder eine Schnittstelle sein, um mit dem Betriebssystem zu interagieren, das auf der Plattform arbeitet. Ein Modul kann auch ein Hardware-Treiber sein, um Daten zu bzw. von einem Hardware-Gerät zu konfigurieren, einzurichten, zu initialisieren, zu senden und zu empfangen. Eine Vorrichtung kann eine beliebige Kombination aus Hardware-, Software- und Firmware-Modulen enthalten.
  • Eine Ausführungsform der Erfindung kann als ein Prozeß beschrieben werden, der üblicherweise als ein Flußdiagramm, einen Flußschaubild, ein Strukturdiagramm oder ein Blockschaubild dargestellt wird. Obgleich ein Flußdiagramm die Operationen als einen sequentiellen Prozeß beschreiben kann, können viele der Operationen parallel oder gleichzeitig ausgeführt werden. Außerdem kann die Reihenfolge der Operationen umgestellt werden. Ein Prozeß ist beendet, wenn seine Operationen ausgeführt sind. Ein Prozeß kann einem Verfahren, einem Programm, einer Vorgehensweise, einem Fertigungs- oder Produktionsverfahren usw. entsprechen.
  • In einer standardmäßigen Rechnerplattform fungieren die I/O-Teilsystemkomponenten als Teil eines einzelnen Bereichs und werden durch die Betriebssystemsoftware verwaltet. Eine Ausführungsform der Erfindung stellt die Hardware-Unterstützung zur Verfügung, die benötigt wird, um I/O-Geräte in einer Rechnerplattform mehreren Bereichen zuzuweisen.
  • Ein Bereich ist abstrakt als eine isolierte Umgebung in der Plattform definiert, dem eine Teilmenge des physischen Host-Speichers zugewiesen wird. Der physische Host-Speicher ist in dem Systemspeicher 140 enthalten. I/O-Geräte, die direkt auf den physischen Speicher zugreifen dürfen, der einem Bereich zugeordnet ist, werden als die zugewiesenen Geräte des Bereichs bezeichnet. Die Isolationseigenschaft eines Bereichs wird erreicht, indem der Zugriff auf seinen physischen Speicher durch ihm nicht zugewiesene Ressourcen gesperrt wird. Mehrere isolierte Bereiche werden unterstützt, indem gewährleistet wird, daß alle I/O-Geräte einem Bereich (möglicherweise einem standardmäßig vorgegebenem Bereich) zugewiesen sind, und indem der Zugriff durch jedes zugewiesene Gerät nur auf den physischen Speicher beschränkt wird, der seinem Bereich zugewiesen ist. Bereiche können Ressourcen (zum Beispiel Speicher, I/O-Geräte) gemeinsam nutzen oder können im Ermessen der Software oder einer anderen Entität, welche die Partitionierung ausführt, vollständig voneinander isoliert sein.
  • Jeder Bereich hat eine Sicht des physischen Speichers, oder einen physischen Adreßraum, die bzw. der sich von der System-Sicht des physischen Speichers unterscheiden kann. Eine Adresse, die von den Ressourcen eines Bereichs benutzt wird, um auf seinen physischen Adreßraum zuzugreifen, wird als eine physische Gast-Adresse (GPA) bezeichnet. Die physische Host-Adresse (HPA) bezieht sich auf die physische Systemadresse, die für einen Zugriff auf einen Speicher benutzt wird. Ein Bereich wird als umverlagert angesehen, wenn eine oder mehrere seiner GPAs zu einer neuen HPA, die sich von der GPA unterscheidet, umgesetzt werden müssen, um auf seinen zugewiesenen physischen Systemspeicher zugreifen zu können. Ein Bereich wird als nicht-umverlagert bezeichnet, wenn alle seine physischen Gastadressen die gleichen sind wie die physischen Hostadressen, die verwendet werden, um auf seinen zugewiesenen physischen Systemspeicher zuzugreifen. Sowohl den umverlagerten als auch den nicht-umverlagerten Bereichen kann eine Teilmenge des verfügbaren physischen Systemspeichers zugewiesen werden, und sie können daran gehindert werden, auf bestimmte Teile des Speichers zuzugreifen. Schutz und Partitionierung von physischem Speicher erfordern einen Mechanismus zum Umsetzen physischer Adressen und einen Schutzmechanismus, der physische Gastadressen validieren kann, die durch die zugewiesenen Geräte eines Bereichs erzeugt werden, einschließlich Prozessoren und I/O-Geräte, und sie in gültige physische Hostadressen umsetzen kann. Die DMA-Neuabbildungsschaltung 135 bietet diese Unterstützung.
  • Um Bereichen I/O-Geräte zuzuweisen, werden Umsetzung und Schutz physischer Adressen für DMA-Anforderungen von allen I/O-Geräten in der Plattform angewendet. Der Einfachheit halber wird die Funktionalität der physischen Adreßumsetzung für DMA-Anforderungen von I/O-Geräten als DMA-Neuabbildung bezeichnet. Für die folgenden Besprechungen ist zu beachten, daß der Begriff "Neuabbildung" neben der Abbildung von Adressen von einem Adreßraum in einen anderen Adreßraum (zum Beispiel physische Gastadressen zu physischen Hostadressen) auch Schutzmechanismen enthält.
  • 2 ist ein Schaubild, das eine Ausführungsform einer I/O-Gerätezuweisung veranschaulicht. Die I/O-Gerätezuweisung ist eine Abbildung eines I/O-Gerätes auf einen Bereich in dem Systemspeicher 140. Die Abbildung wird durch die DMA-Neuabbildungsschaltung 135 unterstützt. Zum Beispiel wird das Gerät A 210 in den Bereich 1 240 in dem Systemspeicher 140 abgebildet. Der Bereich 1 kann zwei Treiber 242 und 244 für das Gerät A 210 haben.
  • Die DMA-Neuabbildungsschaltung 135 enthält einen Registersatz 220, eine DMA-Neuabbildungsstruktur 222 und eine Logik-Schaltung 224. Der Registersatz 220 enthält eine Anzahl von Registern, die Steuer- oder Statusinformationen bereitstellen, die durch die DMA-Neuabbildungsstruktur 222, die Logik-Schaltung 224 und die Programme oder Treiber für die I/O-Geräte verwendet werden. Die DMA-Neuabbildungsstruktur 222 stellt die Basisstruktur, den Basisspeicher oder die Basistabellen bereit, die bei der Neuabbildung oder Adreßumsetzung der physischen Gast-Adresse in die physische Host-Adresse in einem geeigneten Bereich verwendet werden. Die Logik-Schaltung 224 enthält Schaltungen, welche die Neuabbildungs- oder Adreßumsetzungsoperationen und andere Schnittstellenfunktionen ausführen. Die DMA-Neuabbildungsschaltung 135 kann verschiedene Implementierungen haben, um verschiedene Konfigurationen zu unterstützen und um verschiedene Fähigkeiten für die Neuabbildungs- oder Adreßumsetzungsoperationen bereitzustellen.
  • Eine I/O-Gerätezuweisung und/oder -verwaltung unter Verwendung der DMA-Neuabbildungsschaltung 135 bietet eine Anzahl von Nutzungsmöglichkeiten oder Anwendungen. Zwei nützliche Anwendungen sind Anwendungen zum Erhöhen der Zuverlässigkeit eines OS und Virtualisierungsanwendungen.
  • Anwendungen zum Erhöhen der Zuverlässigkeit eines OS: Die Bereichsisolation hat mehrere Verwendungsmöglichkeiten für Betriebssystem-Software. Zum Beispiel kann ein OS einen Bereich definieren, die seinen kritischen Code und seine kritischen Datenstrukturen im Speicher enthält, und den Zugriff zu diesem Bereich durch alle I/O-Geräte in dem System untersagen. Dies ermöglicht es dem OS, eine irrtümliche oder versehentliche Beschädigung von Daten und Code durch falsche Programmierung von Geräten durch Gerätetreiber oder bestimmte Klassen von Gerätstörungen zu begrenzen, wodurch seine Zuverlässigkeit verbessert wird. Alternativ kann ein OS es einer Teilmenge vertrauenswürdiger Geräte gestatten, auf kritischen Code und kritische Datenstrukturen im Speicher zuzugreifen, aber den Zugriff durch andere Geräte verbieten.
  • Bei einer anderen Verwendung kann das OS Bereiche verwenden, um einen DMA von älteren 32-Bit-PCI-Geräten auf hohen Speicher (oberhalb 4 GB) zu verwalten. Dies erreicht man durch Zuweisen von 32-Bit-Geräten zu einem oder mehreren Bereichen und Programmieren des Mechanismus zum Umsetzen physischer I/O-Adressen auf das Neuabbilden des DMA von diesen Geräte auf hohen Speicher. Ohne eine solche Unterstützung muß die Software auf ein Kopieren von Daten durch OS-Prellpuffer zurückgreifen.
  • Bei einer stärker einbezogenen Verwendung kann ein OS die I/O durch Erzeugen mehrerer Bereiche und Zuweisen eines oder mehrerer I/O-Geräte zu den einzelnen Bereichen verwalten. Bei dieser Verwendung registrieren die Gerätetreiber ihre I/O-Puffer explizit bei dem OS, und das OS weist diese I/O-Puffer konkreten Bereichen zu und verwendet dabei Hardware, um den DMA-Bereichsschutz durchzusetzen. In diesem Model verwendet das OS den I/O-Adreßumsetzungs- und -schutzmechanismus als eine I/O-Speicherverwaltungseinheit (I/O-MMU).
  • Virtualisierungsanwendungen: Die Virtualisierungstechnologie gestattet die Erzeugung einer oder mehrerer virtueller Maschinen (VMs) in einem einzelnen System. Jede VM kann gleichzeitig unter Nutzung der zugrundeliegenden physischen Hardware-Ressourcen arbeiten. Virtuelle Maschinen ermöglichen es mehreren Betriebssysteminstanzen, im selben Prozessor zu laufen, wodurch Nutzeffekte wie zum Beispiel Systemkonsolidierung, Migration älterer Systeme, Aktivitätenpartitionierung und Sicherheit realisiert werden.
  • Virtualisierungsarchitekturen beinhalten in der Regel zwei grundsätzliche Klassen von Software-Komponenten: (a) Virtuelle-Maschinen-Monitore (VMMs) und (b) Virtuelle Maschinen (VMs). Die VMM-Software-Schicht läuft auf der höchst-bevorrechtigten Ebene und hat die volle Zuständigkeit für die zugrundeliegende System-Hardware. Die VMM ermöglicht den VMs die gemeinsame Nutzung der zugrundeliegenden Hardware und sorgt dennoch für eine Isolation zwischen VMs.
  • Die Einschränkungen von ausschließlich auf Software basierenden Verfahren zur I/O-Virtualisierung lassen sich durch direkte Zuweisung von I/O-Geräten zu VMs unter Verwendung der DMA-Neuabbildungsschaltung 135 beseitigen. Bei der direkten Zuweisung von Geräten arbeitet der Treiber für ein zugewiesenes I/O-Gerät nur in der VM, der er zugewiesen ist, und darf direkt mit der Geräte-Hardware interagieren, ohne von der VMM erfaßt zu werden. Die Hardware-Unterstützung ermöglicht eine DMA-Neuabbildung ohne gerätespezifische Kenntnis in dem VMM.
  • In diesem Modell beschränkt sich der VMM auf eine Steuerfunktion, in der er explizit das Aufbauen und Abbauen von Gerätezuweisungen zu den VMs vornimmt. Anstatt des Erfassens in dem VMM für I/O-Gastzugriffe wie im Fall von ausschließlich auf Software basierenden Verfahren zur I/O-Virtualisierung verlangt der VMM das Erfassen der I/O-Gastzugriffe nur zum Schutz bestimmter Ressourcen, wie zum Beispiel Gerätekonfigurationsraumzugriffe, Interrupt-Verwaltung usw., die sich auf die Systemfunktionalität auswirken.
  • Zum Unterstützen einer direkten Zuweisung von I/O-Geräten zu VMs verwaltet ein VMM die DMA durch I/O-Geräte. Der VMM kann selbst in einen Bereich abbilden und jede VM in einen unabhängigen Bereich abbilden. Die I/O-Geräte können Bereichen zugewiesen werden, und die durch die DMA-Neuabbildungsschaltung 135 bereitgestellte Hardware zur physischen Adreßumsetzung kann verwendet werden, um die DMA durch I/O-Geräte nur auf den physischen Speicher zuzulassen, der dem Bereich der zugewiesenen VM zugewiesen ist. Bei VMs, die im physischen Speicher umverlagert werden können (d. h. die GPA, die nicht mit der HPA identisch ist), kann die DMA-Neuabbildungsschaltung 135 so programmiert werden, daß sie die erforderliche GPA-zu-HPA-Umsetzung vornimmt.
  • Mit Hardware-Unterstützung für die I/O-Gerätezuweisung können VMM-Implementierungen eine Kombination von ausschließlich auf Software basierenden I/O- Virtualisierungsverfahren und direkter Gerätezuweisung wählen, um einer VM I/O-Geräteressourcen darzustellen.
  • 3 ist ein Schaubild, das eine Ausführungsform der Virtualisierung unter Verwendung einer DMA-Neuabbildung veranschaulicht. Die Virtualisierung enthält zwei Geräte A und B 310 und 312, die DMA-Neuabbildungsschaltung 135, einen VMM oder ein Host-OS 320, VM0 340 und VMn 360. Die zwei Geräte A und B 310 und 312 sind zwei I/O-Geräte, die durch die zwei VM 340 bzw. 360 unterstützt werden. Die DMA-Neuabbildungsschaltung 135 bildet diese zwei Geräte direkt auf die jeweiligen VMs 340 und 360 ohne konkrete Kenntnis des VMM oder Host-OS 320 ab. Es können mehr oder weniger I/O-Geräte und VMs unterstützt werden.
  • Der VMM oder das Host-OS 320 bietet Unterstützung für die zugrundeliegende Hardware der Plattform oder des Systems, auf der bzw. in dem sie ausgeführt werden. Die VMs 340 und 360 haben ähnliche architektonische Komponenten, sind aber vollständig voneinander isoliert. Sie sind mit dem VMM oder Host-OS 320 verbunden, um auf die System-Hardware zuzugreifen. Die VM 340 enthält Anwendungen 342 und 344. Es können mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-OS 346 und einen Gerät-A-Treiber 350. Der Gerät-A-Treiber 350 ist ein Treiber, der das Gerät A 310 antreibt, steuert, verbindet oder unterstützt. Gleichermaßen enthält die VM 360 Anwendungen 362 und 364. Es können mehr oder weniger Anwendungen unterstützt werden. Sie hat ein Gast-OS 366 und einen Gerät-B-Treiber 370. Das Gast-OS 366 kann das gleiche wie das Gast-OS 346 in der VM 340 oder ein anderes sein. Der Gerät-B-Treiber 370 ist einen Treiber, der das Gerät B 312 antreibt, steuert, verbindet oder unterstützt.
  • Die durch die DMA-Neuabbildungsschaltung 135 bereitgestellte DMA-Neuabbildungsarchitektur ermöglicht die Zuweisung von I/O-Geräten zu einer beliebigen Anzahl von Bereichen. Jeder Bereich hat einen physischen Adreßraum, der sich von dem physischem Systemadresseraum unterscheiden kann. Die DMA-Neuabbildung besorgt die Umwandlung von physischen Gast-Adressen (GPA) in DMA-Anforderungen von einem I/O-Gerät in eine entsprechende physische Host-Adresse (HPA), die ihrem Bereich zugewiesen ist.
  • Um dies zu unterstützen, kann die Plattform eine oder mehrere Hardware-Einheiten zur physischen I/O-Adreßumsetzung unterstützen. Jede Umsetzungshardware-Einheit unterstützt die Neuabbildung der I/O-Transaktionen, die ihrem Hardware-Umfang entstammen. Zum Beispiel kann eine Desktop-Chipsatz-Implementierung eine einzelne DMA-Neuabbildungshardware-Einheit aufweisen, die alle I/O-Transaktionen in dem Speichersteuerhub(MCH)-Komponente umsetzt. Eine Server-Plattform mit einem oder mehreren Kern-Chipsatz-Komponenten kann unabhängigen Umsetzungshardware-Einheiten in jeder Komponente unterstützen, die jeweils DMA-Anforderungen umsetzen, die ihrer I/O-Hierarchie entstammen. Die Architektur unterstützt Konfigurationen, bei denen diese Hardware-Einheiten je nach Software-Programmierung dieselben Umsetzungsdatenstrukturen im Systemspeicher gemeinsam nutzen können oder unabhängige Strukturen verwenden können.
  • Die Chipsatz-DMA-Neuabbildungsschaltung 135 behandelt die Adressen in DMA-Anforderungen als physische Gastadressen (GPA). Die DMA-Neuabbildungsschaltung 135 kann die Adreßumsetzungsfunktion auf die ankommende Adresse anwenden, um sie in eine physische Host-Adresse (HPA) umzuwandeln, bevor eine weitere Hardware-Verarbeitung ausgeführt wird, wie zum Beispiel Ausforschen von Prozessor-Cachespeichern oder Weiterleiten an den Speicher-Controller.
  • In einem Virtualisierungskontext hängt die durch die DMA-Neuabbildungsschaltung 135 implementierte Adreßumsetzungsfunktion von der durch den VMM unterstützten Verwaltung des physischen Speichers ab. In Anwendungen zum Beispiel, wo die Software Zuweisungen von physischem Host-Speicher als aneinandergrenzende Regionen vornimmt, kann die DMA-Umsetzung zum Umwandeln einer GPA in eine HPA eine einfache Versatzaddition sein. In Anwendungen, wo der VMM physischen Speicher auf Seitenauflösung verwaltet, kann die DMA-Neuabbildungsschaltung 135 eine im Speicher befindliche Adreßumsetzungsdatenstruktur verwenden.
  • 4 ist ein Schaubild, das eine Ausführungsform einer I/O-Adreßumsetzung veranschaulicht. Die I/O-Adreßumsetzung enthält zwei I/O-Geräte 1 und 2 410 und 412, die DMA-Neuabbildungsschaltung 135, einen physischen Speicher 420 und eine Gastsicht 430. Die I/O-Geräte 1 und 2 410 und 412 sind zwei separaten Bereichen zugewiesen. Sie führen I/O-Anforderungen oder DMA-Anforderungen zu Adressen DMA_ADR aus.
  • Die DMA-Neuabbildungsschaltung 135 bildet diese zwei Geräte in entsprechende Bereiche ab, die in dem physischen Speicher 420 zugewiesen sind. Der physische Speicher 420 ist in Speichersegmente 422 und 424 und Speichersegmente 426 und 428 partitioniert. Es können mehr oder weniger zugewiesene Speichersegmente zu einem oder mehreren der Bereiche zugewiesen sein. In 4 sind Speichersegmente 422 und 424 dem Bereich 1 442 zugewiesen und entsprechen dem Gerät 1 410, und Speichersegmente 424 und 428 sind dem Bereich 2 444 zugewiesen und entsprechen dem Gerät 1 412. In dem in 4 veranschaulichten Beispiel wird das Gerät 1 410 in den Bereich 1 422 abgebildet, und das Gerät 2 412 wird in den Bereich 2 428 abgebildet oder zugewiesen.
  • Die Gastsicht 430 ist eine logischen Sicht aus der Perspektive der Gast-I/O-Geräte. Sie enthält den Bereich 1 442 und den Bereich 2 444. Der Bereich 1 442 entspricht den zwei Speichersegmenten 422 und 424 in dem physischen Speicher 420. Der Bereich 2 444 entspricht dem zwei Speichersegmenten 426 und 428. Für einen bestimmten Gast können Bereichen Teile der Gastsicht 430 des physischen Speichers zugewiesen werden. Jeder der Bereiche kann einem oder mehreren I/O-Geräten zugewiesen werden. Die DMA_ADR-Adresse von dem Gerät 1 410 wird auf die DMA_ADR1, die sich in dem Adreßraum befindet, von 0 zu L des Bereichs 1 442 abgebildet. Gleichermaßen wird die DMA_ADR-Adresse von dem Gerät 2 412 auf die DMA_ADR2, die sich in dem Adreßraum befindet, von 0 zu K des Bereichs 2 444 abgebildet.
  • Die für die Erzeugung und Verwaltung der Bereiche zuständige Software weist den physischen Speicher 420 für beide Bereiche zu und richtet die GPA-zu-HPA-Adreßumsetzungsfunktion in der DMA-Neuabbildungsschaltung 135 ein. Die DMA-Neuabbildungsschaltung 135 setzt die durch die Geräte 410 und 412 erzeugten GPAs in entsprechende HPAs um.
  • 5 ist ein Schaubild, das eine Ausführungsform einer DMA-Neuabbildungsstruktur 222 veranschaulicht. Die DMA-Neuabbildungsstruktur 222 empfängt einen Quellenidentifikator 510 und enthält eine Wurzeltabelle 520, eine Anzahl von Kontexttabellen, von denen zwei – 5300 und 530m – gezeigt sind, und eine Anzahl von Adreßumsetzungsstrukturen, von denen zwei – 5400 und 540m – gezeigt sind. Die Neuabbildungsstruktur 222 empfängt den Quellenidentifikator 510 und eine physische Gast-Adresse von dem I/O-Gerät und setzt die physische Gast-Adresse in einem zugewiesenen Bereich in eine physische Host-Adresse um. Die Umsetzung kann unter Verwendung von Umsetzungstabellen ausgeführt werden, die in einer hierarchischen Weise angeordnet sind. Der Umsetzungsmechanismus beginnt aus der Wurzeltabelle 520 heraus und durchquert oder durchlauft die Kontexttabellen (zum Beispiel 5300 und 530m ) und die Adreßumsetzungsstrukturen (zum Beispiel 5400 und 540m ).
  • Die Anforderer-Identität der I/O-Transaktionen, die in der DMA-Neuabbildungsschaltung 135 erscheint, bestimmt das Ursprungsgerät und den Bereich, dem das I/O-Ursprungsgerät zugewiesen ist. Der Quellenidentifikator 510 ist das Attribut, das den Absender einer I/O-Transaktion identifiziert. Die DMA-Neuabbildungsschaltung 135 kann den Quellenidentifikator 510 einer Transaktion in implementierungsspezifischer Weise bestimmen. Zum Beispiel können einige I/O-Bus-Protokolle die Identität des Ursprungsgerätes als Teil jeder I/O-Transaktion übermitteln. In anderen Fällen, wie zum Beispiel bei Chipsatz-integrierten Geräten, kann der Quellenidentifikator 510 auf der Basis der Architektur oder Implementierung des Chipsatzes impliziert werden.
  • Bei PCI Express-Geräten wird der Quellenidentifikator 510 auf den Anforderer-Identifikator abgebildet, der als Teil des I/O-Transaktionskopfes übermittelt wird. Der Anforderer-Identifikator eines Gerätes enthält seine PCI-Bus/Gerät/Funktions-Nummern, die durch die Konfigurations-Software zugewiesen wurden, und identifiziert eindeutig die Hardware-Funktion, welche die I/O-Anforderung anfordert. In einer Ausführungsform enthält der Quellenidentifikator 510 eine Funktionsnummer 512, eine Gerätenummer 514 und eine Busnummer 516. In dem in 5 veranschaulichten Beispiel ist die Funktionsnummer 512 K Bit breit, die Gerätenummer 514 ist L Bit breit, und die Busnummer 516 ist M Bit breit. Die Busnummer 516 identifiziert den Bus, auf dem die I/O-Transaktion erzeugt wird. Die Gerätenummer 514 identifiziert das konkrete Gerät an dem identifizierten Bus. Die Funktionsnummer 512 identifiziert die konkrete Funktion des I/O-Gerätes. Der Quellenidentifikator 510 wird verwendet, um die Wurzeltabelle 520 und die Kontexttabellen (zum Beispiel 5300 und 530m ) zu indexieren oder darin nachzuschlagen. In dem in 5 veranschaulichten Beispiel werden ihre Wege durch die DMA-Neuabbildungsstruktur 222 für zwei I/O-Transaktionen unter Verwendung von Bus 0 bzw. Bus m veranschaulicht.
  • Bei PCI Express-Geräten speichert die Wurzeltabelle 520 Wurzeleinträge 5250 bis 5252^M-1 , die durch den Quellenidentifikator 510 indexiert werden, oder die Busnummer 516 des Quellenidentifikators 510. Die Wurzeleinträge fungieren als die Struktur der obersten Ebene zum Abbilden von Geräten an einem bestimmten Bus auf ihren jeweiligen übergeordneten Bereich. Der Wurzeleintrag 0 5250 entspricht der I/O-Transaktion, die den Bus 0 verwendet. Der Wurzeleintrag m 525m entspricht der I/O-Transaktion, die den Bus m verwendet. Die Wurzeleinträge 0 5250 und 525m zeigen auf die Kontexttabellen 5300 bzw. 530m . In einer Ausführungsform stellen diese Einträge die Basisadresse für die entsprechende Kontexttabelle bereit.
  • Die Kontexttabellen 530 (zum Beispiel 5300 und 530m ) speichern Kontexteinträge 535 (zum Beispiel 5350 und 535m ), auf die durch die Wurzeleinträge verwiesen wird. Die Kontexteinträge 535 bilden die I/O-Geräte auf ihren entsprechenden Bereich oder ihre entsprechenden Bereiche ab. Die Gerätenummer 514 und die Funktionsnummer 512 werden verwendet, um den Kontexteintrag zu erhalten, welcher der I/O-Transaktion entspricht. In einer Ausführungsform bilden sie einen Index, um zu der Kontexttabelle zu zeigen oder auf die Kontexttabelle zu verweisen, auf die durch den entsprechenden Wurzeleintrag verwiesen wird. Es gibt 2M × 2L × 2K oder 2M+L+K Kontexteinträge in allen Kontexttabellen. In einer Ausführungsform ist K = 3, L = 5 und M = 8, was zu insgesamt 64K Einträgen führt, die als 2M (28 = 256) Kontexttabellen organisiert sind. In dem in 4 gezeigten Beispiel sind die zwei Kontexteinträge für die zwei I/O-Transaktionen der Kontexteintrag 5350 in der Kontexttabelle 5300 und der Kontexteintrag 535m in der Kontexttabelle 530m . Die Kontexteinträge 5350 und 535m zeigen auf die Adreßumsetzungsstrukturen 5400 bzw. 540m .
  • Die Adreßumsetzungsstrukturen 540 (zum Beispiel 5400 und 540m ) besorgen die Adreßumsetzung in die physische Host-Adresse unter Verwendung der physischen Gast-Adresse, die der I/O-Transaktion entspricht. Jede der Adreßumsetzungsstrukturen kann eine Mehrfachtabelle 550, eine Einzeltabelle 560 oder eine Basis/Grenze 570 sein, was den drei Umsetzungsmechanismen entspricht, die Mehrfachtabellen-, Einzeltabellen- bzw. Basis/Grenz-Umsetzungen verwenden. In der folgenden Beschreibung wird eine reguläre Seitengröße von 4 KB verwendet. Wie dem Fachmann bekannt ist, können auch beliebige andere Größe verwendet werden.
  • Um eine Software-flexible Steuerung der DMA-Neuabbildungsschaltung 135 zu ermöglichen, weist die DMA-Neuabbildungsschaltung 135 eine Anzahl von Registern auf, die in dem in 2 gezeigten Registersatz 220 enthalten sind. Der Registersatz 220 befindet sich durch ein Basisadreßregister (BAR) in dem physischen Host-Adresseraum. Die Umsetzungs-Hardware BAR wird in einer implementierungsabhängigen Weise mit Software verbunden. Dies kann in Form eines PCI-Konfigurationsraumregisters in einem der Chipsatz-integrierten Geräte, wie zum Beispiel dem Speichersteuergerät, geschehen. In einer Ausführungsform stellt das BAR ein mindestens 4K großes Adreßfenster bereit. Ein Register in dem Registersatz 220 kann eine Anzahl von Feldern haben. Ein Feld kann aufgedrückt oder negiert werden. Wenn ein Feld aus nur einem einzigen Bit besteht, so impliziert das Aufdrücken, daß das Bit in einen definierten logischen Zustand gesetzt wird (zum Beispiel WAHR, eine logische Eins), und eine Negierung impliziert, daß das Bit auf einen definierten logischen Zustand zurückgesetzt wird, der zu dem Zustand des Aufdrückens komplementär ist (zum Beispiel FALSCH, eine logische Null). Im Folgenden ist die Verwendung eines aufgedrückten oder negierten Zustands beliebig. Ein Feld kann aufgedrückt werden, um einen ersten Zustand anzuzeigen, und kann negiert werden, um einen zweiten Zustand anzuzeigen, oder umgekehrt.
  • Ein Feld in einem Register kann durch die DMA-Neuabbildungsschaltung 135 und/oder durch die Software programmiert, initialisiert oder konfiguriert werden. Es kann auch einer spezialisierten Hardware-Schaltung oder einer Funktionalität entsprechen, die durch eine Datenstruktur, eine Funktion, eine Routine oder ein Verfahren implementiert wird. Im Folgenden sind die Felder in Registern gruppiert. Die Gruppierung, Formatierung oder Organisation dieser Felder oder Bits in den folgenden Registern dient der Veranschaulichung. Es können auch andere Arten der Gruppierung, Formatierung oder Organisation dieser Felder verwendet werden. Ein Feld kann auch in mehreren Registern dupliziert werden. Ein Register kann mehr oder weniger Felder als die beschriebenen Felder haben. Außerdem können Register auf verschiedene Weisen implementiert werden, darunter als Datenlagerelemente oder Speicherelemente.
  • Die oben beschriebene DMA-Neuabbildungsarchitektur enthält DMA, die unter Verwendung von Einzel- oder Mehrebenen-Seitentabellen (TLBs) umgesetzt werden, wie in 5 gezeigt. Eine solche Architektur eignet sich zur Verwendung bei der Nutzung älterer Software (zum Beispiel, wo das OS oder der VMM nicht über die Treiber-DMA-Nutzungen Bescheid wissen). Des Weiteren können Einzel- oder Mehrebenen-Seitentabellenumsetzungen eine gute bis durchschnittliche DMA-Leistung für die meisten I/O-Geräte bieten (gemessen am DMA-Durchsatz). Jedoch hat ein solches System Einschränkungen.
  • Eine Einschränkung ist, daß die Schlimmstfall-Latenz, die durch mehrere sequentielle Speicherzugriffe für den Seitendurchlauf bei TLB-Zugriffsmißlingen hervorgerufen wird, für I/O-Geräte, deren Leistung von einer garantierten Schlimmstfall-DMA-Leistung (isochronen DMA-Leistung) abhängt, inakzeptabel hoch ist. Zu Beispielen dieser Art von Geräten gehören PCI Express-Geräte, die isochrone DMA unterstützen (wie zum Beispiel ein Hochleistungs-Audiocontroller), Anzeigemaschinen von Grafikgeräten und USB-Controller-Geräte.
  • Eine weitere Einschränkung ist, daß für Nutzungen, bei denen keine ältere Software verwendet wird (zum Beispiel neuere OSs und VMMs), die über eine bessere Kenntnis der Treiber-DMA-Anwendungen verfingen, die derzeitige Architektur keinerlei Mittel bereitstellt, damit Software DMA-Nutzungshinweise geben kann, um die DMA-Neuabbildungsleistung zu verbessern.
  • Und schließlich nehmen die Speicherzugriffslatenzen für Seitendurchläufe in dem Maße zu, wie sich zum Beispiel die Plattformkonfigurationen hin zu Speicher-Controllern entwickeln, die innerhalb des Prozessorkomplexes implementiert sind.
  • Adreßfensterbasierte DMA-Adreßumsetzung
  • Auf der Basis der oben beschriebenen Einschränkungen der DMA-Neuabbildungsarchitektur ist die DMA-Neuabbildungsschaltung 135 dafür konfiguriert, neben der auf Einzel- und Mehrebenen-Seitentabellen basierenden Adreßumsetzung auch eine adreßfensterbasierte Adreßumsetzung zu unterstützen. Das heißt, jede DMA-Neuabbildungsschaltung 135 kann eine Anzahl von Adreßfenstern unterstützen, wobei die genaue Anzahl der unterstützten Adreßfenster von der Hardware-Implementierung abhängt. In einer Ausführungsform weist die System-Firmware einen Adreßfenster(AW)-Bereich (Anfangs- und End-AW-Nummern) für jede DMA-Neuabbildungsschaltung 135 zu.
  • In einer weiteren Ausführungsform unterstützt der Chipsatz eine zusätzliche Cachespeicherstruktur zusätzlich zu den vorhandenen Cachespeicherstrukturen der Neuabbildungsschaltung 135. Diese zusätzlichen Strukturen werden als AWPTR-Tabellen bezeichnet, die für Adreßfensterumsetzungen implementiert werden. AWPTR-Tabellen werden weiter unten eingehender besprochen.
  • Gemäß einer Ausführungsform bezieht sich eine physische Geräteadresse (DPA) auf eine Zieladresse, die durch I/O-Geräte in ihren DMA-Anforderungen spezifiziert werden. In einer Ausführungsform spannt sich der DPA-Adreßraum über sämtliche I/O-Geräte in dem Computersystem und ist in mehrere AWs unterteilt. In einer solchen Ausführungsform deckt jedes AW eine aneinandergrenzende 2 MB-Region an DPA-Raum ab. Zum Beispiel kann eine AW0 DPA 0 bis 2 MB abdecken, ein AW 1 kann DPA 2 MB bis 4 MB abdecken, usw. Für eine beliebige DPA wird die AW-Nummer durch Untersuchen von Bits in der DPA bestimmt (zum Beispiel AW-Nummer = DPA[63:21]).
  • In einer weiteren Ausführungsform wird jedes AW durch eine DPA-zu-HPA-Umsetzungsstruktur im Speicher beschrieben, die als eine Adreßfensterseitentabelle (AWPT) bezeichnet wird. Die Einträge in einer AWPT heißen AW-Seitentabelleneinträge (AWPTE). Jeder AWPTE besorgt die Umsetzung für eine 4 KB-Region (als ein "Schlitz" bezeichnet) innerhalb des AW. Somit gibt es 512 Schlitze in einem AW, und die AWPT, die zu jedem AW gehört, ist 4 KB groß (mit 512 AWPTEs). Gemäß einer Ausführungsform sind AWPTEs 64 Bits groß und haben das in 6 veranschaulichte Format. In einer Ausführungsform enthält ein AWPTE Zugriffssteuerbits, wie zum Beispiel Bits ("Lesen" und "Schreiben"), die spezifizieren, ob Lesezugriffe und/oder Schreibzugriffe auf die DPA gestattet sind, die für den Zugriff auf den AWPTE verwendet wird. In einer Ausführungsform spezifiziert das Adreßfeld ("ADDR") die Abbildung einer Teilmenge der Bits in der DPA auf die HPA. In einer Ausführungsform können die verbliebenen Bits (zum Beispiel Bits [11:0]) unmodifiziert von der DPA zu der HPA weitergeleitet werden. Viele weitere Konfigurationen sind möglich und schränken nicht den Geltungsbereich der Erfindung ein.
  • Die System-Software kann ein oder mehrere AWs an bestimmte I/O-Geräte binden. Dafür registriert der Treiber seine DMA-Puffer (zum Beispiel in dem physischen Host-Adresseraum) bei dem an das Gerät gebundenen AW, um eine DPA-Abbildung zu erzeugen. Der Treiber für ein Gerät identifiziert seine Zielpuffer gegenüber der Geräte-Hardware unter Verwendung seiner DPA. Adressen in DMA-Anforderungen von dem Gerät sind DPAs, die durch die Neuabbildungsschaltung 135 auf der Basis des an das Gerät gebundenen AW und der DPA-zu-HPA-Umsetzungen für das Adreßfenster umgesetzt werden.
  • 7 veranschaulicht eine Ausführungsform eines Prozesses zum Umsetzen von DMA-Adressen in Gegenwart von Adreßfenstern. 7 veranschaulicht die Verwendung von AWPTs und AWPTR-Tabellen zum Ausführen der Umsetzung. In einer Ausführungsform hat die AWPTR-Tabelle in der Neuabbildungsschaltung 135 so viele Einträge wie die Anzahl der Adreßfenster, die durch ihre Neuabbildungsschaltung 135 unterstützt werden. Einträge in einer AWPTR-Tabelle sind einem konkreten AW zugeordnet, das in seiner Neuabbildungsschaltung 135 konfiguriert ist.
  • Des Weiteren enthält jeder AWPTR-Tabelleneintrag die HPA zur Basis der AWPT für das bestimmte AW. Jeder AWPTR-Tabelleneintrag ist mit der Gerätekennung des I/O-Gerätes markiert, dem das zugehörige AW zugewiesen ist. In einer Ausführungsform wird die AWPTR-Tabellenstruktur in einen Speicher abgebildet, damit Software darin befindliche Einträge ändern kann. Die Basisadresse der AWPTR-Tabelle wird als AWPTR_TABLE_BASE bezeichnet. AWPTR-Tabelleneinträge heißen AWPTRs, und ein bestimmter Eintrag an einem bestimmten Index in dem Cache wird als AWPTR[index] bezeichnet.
  • 8 veranschaulicht eine Ausführungsform einer AWPTR-Tabellenstruktur für einen Chipsatz, der zwei Neuabbildungsschaltungen 135 implementiert, wobei jeder dafür konfiguriert ist, zwei AWs (4 bis 5 bzw. 6 bis 7) zu unterstützen. Obgleich gemäß einer Ausführungsform die AWPTR-Tabelle in Registern gespeichert wird, scheint die Tabelle sich aus Sicht der Software an einer Adresse zu befinden, die durch AWPTR_TABLE_BASE spezifiziert wird.
  • Des Weiteren enthält in einer Ausführungsform jeder Eintrag in der AWPTR-Tabelle ein Gültig-, ein Markierungs- und ein Daten-Feld. Das Gültig-Feld zeigt an, ob ein Eintrag gültig ist. In einer weiteren Ausführungsform gibt es kein gültiges Bit, und die Neuabbildungsschaltung 135 behandelt alle AWPTR-Tabelleneinträge als gültig. Das Markierungs-Feld zeigt die konkrete Gerätekennung an, welcher der Eintrag zugeordnet ist. Zum Beispiel hat Software in 8 das AW 4 an ein I/O-Gerät mit der Gerätekennung 11 gebunden und das AW 6 an ein I/O-Gerät mit der Gerätekennung 18 gebunden. In einer Ausführungsform kann die Identifikation eines Gerätes, das einen Zugriff erzeugt (zum Beispiel die Feststellung der Gerätekennung), Informationen zum Bus, zum Gerät und zur Funktion innerhalb des Gerätes enthalten. Der Absender einer DMA-Anforderung wird im vorliegenden Text als ein "Gerät" oder als "anforderndes I/O-Gerät" bezeichnet und wird durch eine "Gerätekennung" identifiziert. Es versteht sich jedoch, daß in anderen Ausführungsformen ein einzelnes physisches Gerät durch eine oder mehrere Gerätekennungen identifiziert sein kann.
  • Gemäß einer weiteren Ausführungsform unterstützt die Neuabbildungsschaltung 135 einen Satz von in Speicher abgebildeten 16-Bit-Registern, die als AW_FLUSH-Register bezeichnet werden. 9 veranschaulicht eine Ausführungsform von AW_FLUSH-Löschregistern. Die AW_FLUSH-Löschregister sind als ein Mechanismus implementiert, der es ermöglicht, daß Software Umsetzungen ungültig machen kann, die durch ein oder mehrere Elemente der Neuabbildungsschaltung 135 cache-gespeichert werden können. In einer Ausfüh rungsform ist ein AW_FLUSH-Löschregister für jedes AW implementiert, das durch eine Neuabbildungsschaltung 135 unterstützt wird.
  • In einer Ausführungsform wird die Basisadresse dieses in Speicher abgebildeten Registerbereichs (AW_FLUSH_BASE) durch Plattform-Firmware initialisiert. Wenn zum Beispiel, wie in 9 veranschaulicht, eine Chipsatz-Komponente zwei Neuabbildungsschaltungen 135 unterstützt und die Neuabbildungsschaltungen 135 AWs 4 bis 5 bzw. 6 zu 7 unterstützen, so unterstützt der Chipsatz insgesamt 4 AW_FLUSH-Register. 10 veranschaulicht eine Ausführungsform eines Formats für jedes AW_FLUSH-Register.
  • Wenden wir uns wieder 7 zu. Es erfolgt eine adreßfensterbasierte Umsetzung, wenn dies in dem Kontexteintrag für ein I/O-Gerät spezifiziert ist. In einer Ausführungsform können die Kontexteinträge durch die Neuabbildungsschaltung 135 cache-gespeichert werden, wodurch nicht auf einen Speicher zugegriffen werden muß, um diese Feststellung zu treffen. In einer weiteren Ausführungsform kann Software direkt auf die Kontexteintrag-Cachespeicherstruktur zugreifen, wodurch Software den Cache vorbefüllen kann, um die Latenzen für den ersten Zugriff auf einen Kontexteintrag zu verringern. Auf diese Weise kann Software garantieren, daß das Schlimmstfall-Speicherzugriffsverhalten für bestimmte Geräte auf einen einzigen Speicherzugriff begrenzt ist, wie unten beschrieben.
  • Wenn eine adreßfensterbasierte Umsetzung spezifiziert ist, so überprüft die Neuabbildungsschaltung 135, ob das AW, zu dem die DPA in der DMA-Anforderung gehört, eines der AWs ist, die an das spezifizierte Gerät gebunden sind. Gemäß einer Ausführungsform führt die Neuabbildungsschaltung 135 diese Überprüfung aus, indem sie zuerst die Adreßfensternummer (AW-Nummer) findet, die der DPA in der DMA-Anforderung entspricht (zum Beispiel berechnet durch AW-Nummer = DPA[(HAW – 1):21], wobei HAW die unterstützte physische Adreßbreite des Systems ist).
  • Anschließend wird festgestellt, ob die AW-Nummer der Neuabbildungsschaltung 135 zugewiesen ist, welche die DMA-Anforderung umsetzt. Wenn die AW-Nummer nicht der Neuabbildungsschaltung 135 zugewiesen ist, so kommt es zu einem Umsetzungsfehler. In einer Ausführungsform kann ein Umsetzungsfehler einen Interrupt an den Prozessor erzeugen. In einer anderen Ausführungsform ist Software, welche die Neuabbildungsschaltung 135 verwaltet, dafür verantwortlich, die Neuabbildungsschaltung 135 periodisch abzufragen, um festzustellen, ob es zu Umsetzungsfehlern gekommen ist. Wenn die AW-Nummer gültig ist, so wird der zugehörige AW-Tabelleneintragsindex gefunden (berechnet durch INDEX = AW-Nummer – START_AW). Als nächstes wird auf den AW-Tabelleneintrag bei AWPTR[INDEX] zugegriffen, und es wird festgestellt, ob er mit der Gerätekennung in der DMA-Anforderung markiert ist. Wenn die Überprüfung erfolgreich ist, so zeigt der AWPTR-Wert die Basis der AW-Seitentabelle an. Der Wert im DPA[21:12]-Feld wird verwendet, um den entsprechenden AWPTE in der AW-Seitentabelle zu holen.
  • Auf der Basis der Programmierung des AWPTE wird die DMA-Anforderung entweder zu der HPA komplettiert, die in der AWPTE spezifiziert, oder sie wird blockiert. Die AWPTE-Verarbeitung ähnelt der Art und Weise, wie die Blatt-PTEs in der Neuabbildungsschaltung 135 für die beschriebenen Mehrebenen-I/O-Seitentabellen verarbeitet werden. Wenn die Umsetzung erfolgreich ist, so wird sie in einer Ausführungsform durch die Neuabbildungsschaltung 135 in einem I/O-Umsetzungvorgriffspuffer (I/O-TLB) cache-gespeichert.
  • Wie oben besprochen, führt die Neuabbildungsschaltungen 135 zusätzlich zur auf Einzel- und Mehrebenen-Seitentabellen basierenden Adreßumsetzung auch eine adreßfensterbasierte Umsetzung aus. 11 ist ein Flußdiagramm, das eine Ausführungsform des Betriebes einer Neuabbildungsschaltung 135 veranschaulicht, die eine adreßfensterbasierte Umsetzung und eine auf Einzel- und Mehrebenen-Seitentabellen basierende Adreßumsetzung ausführt.
  • Am Verarbeitungsblock 1110 erzeugt ein I/O-Gerät eine DMA-Anforderung. Am Verarbeitungsblock 1120 wird die DMA-Anforderung in herkömmlicher Form über eine Neuabbildungsschaltung 135 verarbeitet. Am Entscheidungsblock 1130 wird festgestellt, ob eine Umsetzung für die in der DMA-Anforderung spezifizierte (zum Beispiel mit der Gerätekennung in der Transaktion markierte) Adresse in dem I/O-TLB gefunden wird. Wenn die Umsetzung für die in der DMA-Anforderung spezifizierte Adresse in dem I/O-TLB gefunden wird, so wird die Umsetzung ohne einen Speicherzugriff ausgeführt (Verarbeitungsblock 1140). Dazu gehören DMA, die unter Verwendung von Einzel- oder Mehrebenen-Seitentabellen oder durch Adreßfenster umgesetzt werden können.
  • Wenn die Umsetzung für die in der DMA-Anforderung spezifizierte Adresse nicht in dem I/O-TLB gefunden wird (wenn zum Beispiel ein Zugriffsmißlingen detektiert wird), so wird im Kontextcache nachgeschlagen, um das Umsetzungsverhalten für das Gerät zu ermitteln (Verar beitungsblock 1150). Am Entscheidungsblock 1160 wird festgestellt, ob die Umsetzung zu blockieren oder durch Einzelebenen- oder Mehrebenen-Seitentabellen zu verarbeiten ist. Wenn die Umsetzung zu blockieren oder durch Einzelebenen- oder Mehrebenen-Seitentabellen zu verarbeiten ist, so wird die Anforderung, wie beschrieben, in der herkömmlichen Architektur der Neuabbildungsschaltung 135 verarbeitet, die oben mit Bezug auf die 1-5 beschrieben wurde (Verarbeitungsblock 1170). Wenn jedoch die Umsetzung nicht zu blockieren oder durch Einzelebenen- oder Mehrebenen-Seitentabellen zu verarbeiten ist, so spezifiziert der Kontexteintrag für das Gerät eine adreßfensterbasierte Umsetzung. Folglich wird eine adreßfensterbasierte Umsetzung ausgeführt, wie oben mit Bezug auf 7 beschrieben (Verarbeitungsblock 1180).
  • 12 veranschaulicht eine weitere Ausführungsform des Computersystems 100. In dieser Ausführungsform enthält der Chipsatz einen einzelnen Steuerhub 1230 anstelle eines separaten MCH und ICH. Außerdem befindet sich die Speichersteuerung im Prozessor 110. Folglich ist der Systemspeicher 140 mit dem Prozessor 110 verbunden. In einer Ausführungsform ist die Neuabbildungsschaltung 135 in dem Steuerhub 1230 enthalten. In einer weiteren Ausführungsform ist die Neuabbildungsschaltung 135 im Prozessor 110 oder im Systemspeicher 140 enthalten.
  • Die oben beschriebene Neuabbildungsarchitektur ermöglicht DMA-Adreßumsetzungen mit einer Auflösung von 4K ähnlich wie bei Mehrebenen-Seitentabellen und bietet trotzdem die Schlimmstfall-Leistungsgarantie, die auf den Verwaltungsaufwand beschränkt ist, der mit einem einzelnen Nachschlagen im Speicher verbunden ist.
  • Zwar fallen dem Fachmann nach dem Studium der vorangegangenen Beschreibung zweifellos Änderungen und Modifikationen der vorliegenden Erfindung ein, doch es versteht sich, daß die zu Veranschaulichungszwecken gezeigten und beschriebenen konkreten Ausführungsformen in keiner Weise als einschränkend anzusehen sind. Darum sollen Verweise auf Details verschiedener Ausführungsformen nicht den Geltungsbereich der Ansprüche einschränken, die selbst lediglich jene Merkmale darlegen, die als die Erfindung erachtet werden.
  • Zusammenfassung
  • Es wird eine Vorrichtung offenbart. Die Vorrichtung enthält eine Neuabbildungsschaltung zum Ermöglichen eines Zugriffs durch ein oder mehrere I/O-Geräte auf eine Speichervorrichtung für Direktspeicherzugriffs(DMA)-Transaktionen. Die Neuabbildungsschaltung enthält einen Umsetzungsmechanismus zum Ausführen von Speicheradreßumsetzungen für I/O-DMA-Transaktionen über adreßfensterbasierte Umsetzungen.

Claims (27)

  1. Vorrichtung mit einer Neuabbildungsschaltung zum Ermöglichen eines Zugriffs durch ein oder mehrere Eingabe/Ausgabe(I/O)-Geräte auf eine Speichervorrichtung unter Verwendung von Direktspeicherzugriffs(DMA)-Transaktionen, wobei die Neuabbildungsschaltung einen ersten Umsetzungsmechanismus zum Ausführen von Speicheradreßumsetzungen für I/O-DMA-Transaktionen über adreßfensterbasierte Umsetzungen enthält.
  2. Vorrichtung nach Anspruch 1, die des Weiteren einen zweiten Umsetzungsmechanismus zum Ausführen von Speicheradreßumsetzungen für I/O-DMA-Transaktionen über Einzelebenen-Seitentabellen und/oder Mehrebenen-Seitentabellen umfaßt.
  3. Vorrichtung nach Anspruch 1, wobei der erste Umsetzungsmechanismus eine Adreßfensterzeigertabelle (AWPTR) zum Ausführen der adreßfensterbasierten Umsetzungen enthält.
  4. Vorrichtung nach Anspruch 3, wobei die AWPTR wenigstens einen Eintrag umfaßt, der eine Basisadresse einer Adreßfensterseitentabelle (AWPT) für wenigstens ein Adreßfenster (AW) enthält.
  5. Vorrichtung nach Anspruch 4, wobei jeder AWPTR-Eintrag mit einer Gerätekennung markiert ist, die ein I/O-Gerät anzeigt, dem ein zugehöriges AW zugewiesen ist.
  6. Vorrichtung nach Anspruch 5, wobei die Gerätekennung des Weiteren Informationen enthält, die einen Bus und/oder ein Gerät und/oder eine Funktion innerhalb des Gerätes anzeigen.
  7. Vorrichtung nach Anspruch 4, wobei jeder AWPT-Eintrag eine Umsetzung für einen 4 KB-Schlitz innerhalb des AW vorsieht.
  8. Vorrichtung nach Anspruch 4, wobei jeder AWPT-Eintrag Zugriffssteuerbits enthält, die spezifizieren, ob Lesezugriffe oder Schreibzugriffe auf eine physische Geräteadresse gestattet sind, die zum Zugreifen auf den AWPT-Eintrag verwendet wird.
  9. Verfahren, das Folgendes umfaßt: Empfangen einer Direktspeicherzugriffs(DMA)-Anforderung in einer Neuabbildungsschaltung von einem anfordernden Eingabe/Ausgabe(I/O)-Gerät; Feststellen, ob die DMA-Anforderung ausgeführt werden darf; und Umsetzen einer physischen Geräteadresse (DPA) in eine physische Host-Adresse (HPA) im Speicher, wenn der Zugriff gestattet wird.
  10. Verfahren nach Anspruch 9, wobei das Feststellen, ob die DMA-Anforderung ausgeführt werden darf, Folgendes umfaßt: Berechnen eines angeforderten Adreßfensters (AW), das dem DPA zugeordnet ist; Feststellen, ob das angeforderte AW an die Neuabbildungsschaltung gebunden ist; und Feststellen, ob das angeforderte AW an das anfordernde I/O-Gerät gebunden ist.
  11. Verfahren nach Anspruch 10, wobei ein Umsetzungsfehler eintritt, wenn festgestellt wird, daß das angeforderte AW nicht an das anfordernde I/O-Gerät gebunden ist.
  12. Verfahren nach Anspruch 10, wobei der Umsetzungsfehler eintritt, wenn festgestellt wird, daß das angeforderte AW nicht an die Neuabbildungsschaltung gebunden ist.
  13. Verfahren nach Anspruch 9, das des Weiteren Folgendes umfaßt: Finden eines zugehörigen AW-Zeiger-Tabelleneintragsindex für den DPA; und Nachschlagen des AW-Zeiger-Tabelleneintrages an dem Index.
  14. Verfahren nach Anspruch 13, das des Weiteren umfaßt festzustellen, ob der AW-Zeiger-Tabelleneintrag mit einer Gerätekennung markiert ist, die dem anfordernden I/O-Gerät entspricht.
  15. Verfahren nach Anspruch 13, das des Weiteren das Zugreifen auf einen AW-Seitentabelleneintrag (AWPTE) im Speicher umfaßt, der dem AW-Zeiger-Tabelleneintrag und dem DPA zugeordnet ist.
  16. Verfahren nach Anspruch 15, das des Weiteren umfaßt, die HPA, die dem DPA zugeordnet ist, unter Verwendung des AWPTE zu berechnen.
  17. Verfahren nach Anspruch 16, das des Weiteren Folgendes umfaßt: Feststellen, auf der Basis wenigstens eines Erlaubnis-Bits in dem AWPTE und eines Typs der DMA-Anforderung, ob die DMA-Anforderung ausgeführt werden darf; und Verhindern der Ausführung der DMA-Anforderung, wenn das wenigstens eine Erlaubnis-Bit nicht den Typ der DMA-Anforderung zuläßt.
  18. Verfahren nach Anspruch 9, das des Weiteren das Cache-Speichern der ausgeführten Umsetzung umfaßt.
  19. Computersystem, das Folgendes umfaßt: eine Hauptspeichervorrichtung; ein oder mehrere Eingabe/Ausgabe(I/O)-Geräte zum Zugreifen auf die Speichervorrichtung über einen Direktspeicherzugriff (DMA); und einen Speicher-Controller, der mit der Speichervorrichtung verbunden ist und eine DMA-Neuabbildungsschaltung aufweist, um den Zugriff durch das eine oder die mehreren I/O-Geräte auf die Speichervorrichtung zu ermöglichen, wobei die DMA-Neuabbildungsschaltung Folgendes umfaßt: einen ersten Umsetzungsmechanismus zum Ausführen von Speicheradreßumsetzungen für I/O-DMA-Transaktionen über adreßfensterbasierte Umsetzungen.
  20. Computersystem nach Anspruch 19, das des Weiteren einen zweiten Umsetzungsmechanismus zum Ausführen von Speicheradreßumsetzungen für I/O-DMA-Transaktionen über Einzelebenen-Seitentabellen und/oder Mehrebenen-Seitentabellen umfaßt.
  21. Computersystem nach Anspruch 19, wobei die Speichervorrichtung in wenigstens ein Adreßfenster (AWs) unterteilt ist.
  22. Computersystem nach Anspruch 21, wobei die Speichervorrichtung des Weiteren eine AW-Seitentabelle (AWPT) umfaßt, die eine Umsetzung einer physischen Geräteadresse (DPA) in eine physische Host-Adresse (HPA) definiert.
  23. Computersystem nach Anspruch 22, wobei die AWPT wenigstens einen AW-Seitentabelleneintrag (AWPTE) umfaßt, wobei der AWPTE eine Umsetzung für wenigstens eine Adresse innerhalb des AW besorgt.
  24. Computersystem nach Anspruch 21, wobei jedes der wenigstens einen AWs an ein I/O-Gerät gebunden ist.
  25. Computersystem nach Anspruch 22, wobei der erste Umsetzungsmechanismus eine Tabelle (AWPTR) zum Ausführen der adreßfensterbasierten Umsetzungen enthält.
  26. Computersystem nach Anspruch 22, wobei die AWPTR wenigstens einen Eintrag umfaßt, wobei dieser Eintrag eine Basis der AWPT für ein bestimmtes AW enthält.
  27. Computersystem nach Anspruch 26, wobei jeder AWPTR-Eintrag mit einer Gerätekennung markiert ist, die ein I/O-Gerät anzeigt, dem ein zugehöriges AW zugewiesen ist.
DE112006001642T 2005-06-21 2006-06-20 Adressfensterunterstützung für Direktspeicherzugriffsumsetzung Ceased DE112006001642T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/157,675 2005-06-21
US11/157,675 US20060288130A1 (en) 2005-06-21 2005-06-21 Address window support for direct memory access translation
PCT/US2006/024515 WO2007002425A1 (en) 2005-06-21 2006-06-20 Address window support for direct memory access translation

Publications (1)

Publication Number Publication Date
DE112006001642T5 true DE112006001642T5 (de) 2008-05-08

Family

ID=36992652

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112006001642T Ceased DE112006001642T5 (de) 2005-06-21 2006-06-20 Adressfensterunterstützung für Direktspeicherzugriffsumsetzung

Country Status (7)

Country Link
US (2) US20060288130A1 (de)
KR (1) KR101060395B1 (de)
CN (1) CN101203838B (de)
DE (1) DE112006001642T5 (de)
GB (1) GB2441084A (de)
TW (1) TWI363967B (de)
WO (1) WO2007002425A1 (de)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7756943B1 (en) * 2006-01-26 2010-07-13 Symantec Operating Corporation Efficient data transfer between computers in a virtual NUMA system using RDMA
US7739474B2 (en) * 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
US7426627B2 (en) * 2006-03-10 2008-09-16 Microsoft Corporation Selective address translation for a resource such as a hardware device
US7840398B2 (en) * 2006-03-28 2010-11-23 Intel Corporation Techniques for unified management communication for virtualization systems
US7685371B1 (en) * 2006-04-19 2010-03-23 Nvidia Corporation Hierarchical flush barrier mechanism with deadlock avoidance
TWI334592B (en) * 2006-10-26 2010-12-11 Via Tech Inc Chipset, northbridge and disk data access method
US7873770B2 (en) * 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US7849287B2 (en) * 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US7707383B2 (en) 2006-11-21 2010-04-27 Intel Corporation Address translation performance in virtualized environments
US7685401B2 (en) 2006-12-27 2010-03-23 Intel Corporation Guest to host address translation for devices to access memory in a partitioned system
US8677457B2 (en) 2007-02-09 2014-03-18 Marvell World Trade Ltd. Security for codes running in non-trusted domains in a processor core
US8250254B2 (en) * 2007-07-31 2012-08-21 Intel Corporation Offloading input/output (I/O) virtualization operations to a processor
US8161243B1 (en) 2007-09-28 2012-04-17 Intel Corporation Address translation caching and I/O cache performance improvement in virtualized environments
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
JP5028304B2 (ja) * 2008-03-11 2012-09-19 株式会社日立製作所 仮想計算機システム及びその制御方法
US8918657B2 (en) 2008-09-08 2014-12-23 Virginia Tech Intellectual Properties Systems, devices, and/or methods for managing energy usage
US20100169673A1 (en) * 2008-12-31 2010-07-01 Ramakrishna Saripalli Efficient remapping engine utilization
US20100228943A1 (en) * 2009-03-04 2010-09-09 Freescale Semiconductor, Inc. Access management technique for storage-efficient mapping between identifier domains
US8473644B2 (en) * 2009-03-04 2013-06-25 Freescale Semiconductor, Inc. Access management technique with operation translation capability
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
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
US9213661B2 (en) * 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8468284B2 (en) 2010-06-23 2013-06-18 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification to a guest operating system
US8683108B2 (en) 2010-06-23 2014-03-25 International Business Machines Corporation Connected input/output hub management
US8572635B2 (en) 2010-06-23 2013-10-29 International Business Machines Corporation Converting a message signaled interruption into an I/O adapter event notification
US8621112B2 (en) 2010-06-23 2013-12-31 International Business Machines Corporation Discovery by operating system of information relating to adapter functions accessible to the operating system
US8566480B2 (en) 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
US8549182B2 (en) 2010-06-23 2013-10-01 International Business Machines Corporation Store/store block instructions for communicating with adapters
US8504754B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Identification of types of sources of adapter interruptions
US8650335B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Measurement facility for adapter functions
US8645767B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Scalable I/O adapter function level error detection, isolation, and reporting
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8615622B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Non-standard I/O adapters in a standardized I/O architecture
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US8918573B2 (en) 2010-06-23 2014-12-23 International Business Machines Corporation Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US8745292B2 (en) 2010-06-23 2014-06-03 International Business Machines Corporation System and method for routing I/O expansion requests and responses in a PCIE architecture
US8416834B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Spread spectrum wireless communication code for data center environments
US8510599B2 (en) 2010-06-23 2013-08-13 International Business Machines Corporation Managing processing associated with hardware events
US8626970B2 (en) 2010-06-23 2014-01-07 International Business Machines Corporation Controlling access by a configuration to an adapter function
US8650337B2 (en) 2010-06-23 2014-02-11 International Business Machines Corporation Runtime determination of translation formats for adapter functions
US8639858B2 (en) * 2010-06-23 2014-01-28 International Business Machines Corporation Resizing address spaces concurrent to accessing the address spaces
US8677180B2 (en) 2010-06-23 2014-03-18 International Business Machines Corporation Switch failover control in a multiprocessor computer system
US8417911B2 (en) 2010-06-23 2013-04-09 International Business Machines Corporation Associating input/output device requests with memory associated with a logical partition
US8671287B2 (en) 2010-06-23 2014-03-11 International Business Machines Corporation Redundant power supply configuration for a data center
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8478922B2 (en) 2010-06-23 2013-07-02 International Business Machines Corporation Controlling a rate at which adapter interruption requests are processed
US8656228B2 (en) 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8505032B2 (en) 2010-06-23 2013-08-06 International Business Machines Corporation Operating system notification of actions to be taken responsive to adapter events
US8645606B2 (en) 2010-06-23 2014-02-04 International Business Machines Corporation Upbound input/output expansion request and response processing in a PCIe architecture
US8392628B2 (en) * 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment
US20120036302A1 (en) * 2010-08-04 2012-02-09 International Business Machines Corporation Determination of one or more partitionable endpoints affected by an i/o message
US9146863B2 (en) * 2010-12-08 2015-09-29 International Business Machines Corporation Address translation table to enable access to virtualized functions
US8631212B2 (en) 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
WO2013048943A1 (en) 2011-09-30 2013-04-04 Intel Corporation Active state power management (aspm) to reduce power consumption by pci express components
US8881145B2 (en) * 2011-12-15 2014-11-04 Industrial Technology Research Institute System and method for generating application-level dependencies in one or more virtual machines
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9256531B2 (en) * 2012-06-19 2016-02-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear addresss remapping logic
US9164804B2 (en) 2012-06-20 2015-10-20 Memory Technologies Llc Virtual memory module
US9116820B2 (en) 2012-08-28 2015-08-25 Memory Technologies Llc Dynamic central cache memory
US9183041B2 (en) * 2012-09-21 2015-11-10 International Business Machines Corporation Input/output traffic backpressure prediction
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
CN104021127A (zh) * 2013-03-01 2014-09-03 联想(北京)有限公司 信息处理方法及电子设备
US9754870B2 (en) * 2013-07-10 2017-09-05 Kinsus Interconnect Technology Corp. Compound carrier board structure of flip-chip chip-scale package and manufacturing method thereof
US9645934B2 (en) 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US9798567B2 (en) 2014-11-25 2017-10-24 The Research Foundation For The State University Of New York Multi-hypervisor virtual machines
US9563572B2 (en) 2014-12-10 2017-02-07 International Business Machines Corporation Migrating buffer for direct memory access in a computer system
WO2016114144A1 (ja) * 2015-01-16 2016-07-21 日本電気株式会社 計算機、デバイス制御システムおよびデバイス制御方法
US9720838B2 (en) 2015-03-27 2017-08-01 Intel Corporation Shared buffered memory routing
US9824015B2 (en) * 2015-05-29 2017-11-21 Qualcomm Incorporated Providing memory management unit (MMU) partitioned translation caches, and related apparatuses, methods, and computer-readable media
US10120709B2 (en) * 2016-02-29 2018-11-06 Red Hat Israel, Ltd. Guest initiated atomic instructions for shared memory page host copy on write
US10496388B2 (en) * 2016-03-24 2019-12-03 Intel Corporation Technologies for securing a firmware update
US10095620B2 (en) 2016-06-29 2018-10-09 International Business Machines Corporation Computer system including synchronous input/output and hardware assisted purge of address translation cache entries of synchronous input/output transactions
US10394711B2 (en) * 2016-11-30 2019-08-27 International Business Machines Corporation Managing lowest point of coherency (LPC) memory using a service layer adapter
WO2018176360A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Scalable interrupt virtualization for input/output devices
US11016798B2 (en) 2018-06-01 2021-05-25 The Research Foundation for the State University Multi-hypervisor virtual machines that run on multiple co-located hypervisors
CN110941565B (zh) * 2018-09-25 2022-04-15 北京算能科技有限公司 用于芯片存储访问的内存管理方法和装置
CN109947671B (zh) * 2019-03-05 2021-12-03 龙芯中科技术股份有限公司 一种地址转换方法、装置、电子设备及储存介质
CN113961488A (zh) * 2021-10-22 2022-01-21 上海兆芯集成电路有限公司 将虚拟地址重映射至物理地址的方法及地址重映射单元
CN117331861B (zh) * 2023-11-28 2024-03-22 珠海星云智联科技有限公司 直接内存映射方法、装置、设备、集群以及介质

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4891752A (en) * 1987-03-03 1990-01-02 Tandon Corporation Multimode expanded memory space addressing system using independently generated DMA channel selection and DMA page address signals
US5890220A (en) * 1991-02-05 1999-03-30 Hitachi, Ltd. Address conversion apparatus accessible to both I/O devices and processor and having a reduced number of index buffers
US5522075A (en) 1991-06-28 1996-05-28 Digital Equipment Corporation Protection ring extension for computers having distinct virtual machine monitor and virtual machine address spaces
JP3264319B2 (ja) * 1997-06-30 2002-03-11 日本電気株式会社 バスブリッジ
US20020108025A1 (en) 1998-10-21 2002-08-08 Nicholas Shaylor Memory management unit for java environment computers
US7114056B2 (en) * 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US6339803B1 (en) * 1999-02-19 2002-01-15 International Business Machines Corporation Computer program product used for exchange and transfer of data having a queuing mechanism and utilizing a queued direct input-output device
US7254806B1 (en) * 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US20020103889A1 (en) 2000-02-11 2002-08-01 Thomas Markson Virtual storage layer approach for dynamically associating computer storage with processing hosts
US6678825B1 (en) * 2000-03-31 2004-01-13 Intel Corporation Controlling access to multiple isolated memories in an isolated execution environment
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US6665759B2 (en) * 2001-03-01 2003-12-16 International Business Machines Corporation Method and apparatus to implement logical partitioning of PCI I/O slots
US6820207B2 (en) * 2001-03-01 2004-11-16 International Business Machines Corporation Method for rebooting only a specific logical partition in a data processing system as per a request for reboot
US6839892B2 (en) 2001-07-12 2005-01-04 International Business Machines Corporation Operating system debugger extensions for hypervisor debugging
US7158972B2 (en) 2001-12-11 2007-01-02 Sun Microsystems, Inc. Methods and apparatus for managing multiple user systems
US6804741B2 (en) * 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US6986006B2 (en) * 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US6725284B2 (en) * 2002-04-25 2004-04-20 International Business Machines Corporation Logical partition hosted virtual input/output using shared translation control entries
US6941436B2 (en) * 2002-05-09 2005-09-06 International Business Machines Corporation Method and apparatus for managing memory blocks in a logical partitioned data processing system
US7089377B1 (en) 2002-09-06 2006-08-08 Vmware, Inc. Virtualization system for computers with a region-based memory architecture
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
US20040098544A1 (en) 2002-11-15 2004-05-20 Gaither Blaine D. Method and apparatus for managing a memory system
US7900017B2 (en) * 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
US7069413B1 (en) * 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7103808B2 (en) * 2003-04-10 2006-09-05 International Business Machines Corporation Apparatus for reporting and isolating errors below a host bridge
US7117385B2 (en) * 2003-04-21 2006-10-03 International Business Machines Corporation Method and apparatus for recovery of partitions in a logical partitioned data processing system
US9020801B2 (en) * 2003-08-11 2015-04-28 Scalemp Inc. Cluster-based operating system-agnostic virtual computing system
US20050044301A1 (en) 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
JP2007508623A (ja) 2003-10-08 2007-04-05 ユニシス コーポレーション 複数のノードにわたってシステムリソースを割り当てて管理する仮想データセンタ
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US20060010276A1 (en) * 2004-07-08 2006-01-12 International Business Machines Corporation Isolation of input/output adapter direct memory access addressing domains
US7398427B2 (en) * 2004-07-08 2008-07-08 International Business Machines Corporation Isolation of input/output adapter error domains
US7266631B2 (en) * 2004-07-29 2007-09-04 International Business Machines Corporation Isolation of input/output adapter traffic class/virtual channel and input/output ordering domains
US7009871B1 (en) * 2004-08-18 2006-03-07 Kabushiki Kaisha Toshiba Stable memory cell
US7340582B2 (en) * 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
US7444493B2 (en) * 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US7334107B2 (en) * 2004-09-30 2008-02-19 Intel Corporation Caching support 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
DE602004027516D1 (de) 2004-12-03 2010-07-15 St Microelectronics Srl Ein Verfahren zum Verwalten von virtuellen Maschinen in einer körperlichen Verarbeitungsmaschine, ein entsprechendes Prozessorsystem und Computerprogrammprodukt dafür
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
US7308551B2 (en) * 2005-02-25 2007-12-11 International Business Machines Corporation System and method for managing metrics table per virtual port in a logically partitioned data processing system
US7428626B2 (en) * 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7415035B1 (en) * 2005-04-04 2008-08-19 Sun Microsystems, Inc. Device driver access method into a virtualized network interface
US7353360B1 (en) * 2005-04-05 2008-04-01 Sun Microsystems, Inc. Method for maximizing page locality
US7225287B2 (en) * 2005-06-01 2007-05-29 Microsoft Corporation Scalable DMA remapping on a computer bus

Also Published As

Publication number Publication date
GB0722953D0 (en) 2008-01-02
TW200712893A (en) 2007-04-01
WO2007002425A1 (en) 2007-01-04
US20060288130A1 (en) 2006-12-21
US20100100648A1 (en) 2010-04-22
TWI363967B (en) 2012-05-11
CN101203838A (zh) 2008-06-18
GB2441084A (en) 2008-02-20
CN101203838B (zh) 2010-06-23
US7984203B2 (en) 2011-07-19
KR101060395B1 (ko) 2011-08-29
KR20080012988A (ko) 2008-02-12

Similar Documents

Publication Publication Date Title
DE112006001642T5 (de) Adressfensterunterstützung für Direktspeicherzugriffsumsetzung
DE112005002298B4 (de) Leistungssteigerung einer Adreßübersetzung unter Verwendung von Übersetzungstabellen, die große Adreßräume umfassen
DE112005002304B4 (de) Adreßumsetzung für Eingabe/Ausgabe- Vorrichtungen mittels hierarchischer Umsetzungstabellen
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE112005002328T5 (de) Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung
DE102007062744B4 (de) Guest-Host-Adressübersetzung für den Zugriff von Geräten auf einen Speicher in einem partitionierten System
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102014014076A1 (de) Reduzierte Adressenkonvertierung mit mehreren Seitengrößen
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE112010001467B4 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE112017001027T5 (de) Seitenfehlerbehebung
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE102006061939A1 (de) Verfahren und Vorrichtung zum Zugriff auf eine speicherabgebildete Vorrichtung durch einen Gast
DE69524916T2 (de) Verfahren und Vorrichtung zur Datenübertragung im Bereich der Rechnersysteme
DE112018005404T5 (de) Vereinfachen des zugriffs auf lokalitätsdomäneninformationen eines speichers
DE112016005919T5 (de) Verfahren und Vorrichtung zum Sub-Seiten-Schreibschutz
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE112016007538T5 (de) Technologie zur realisierung eines binärverzweigten non-volatile-memory-express-treibers
DE112021005873T5 (de) Speichermigration in einer multi-host-datenverarbeitungsumgebung
DE102021132219A1 (de) Speicherablaufverfolgung in einem emulierten rechensystem
DE112020005106T5 (de) Verfahren und systeme zum umsetzen von virtuellen adressen in einem auf virtuellem speicher beruhenden system

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection