DE112008002019T5 - Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor - Google Patents

Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor Download PDF

Info

Publication number
DE112008002019T5
DE112008002019T5 DE112008002019T DE112008002019T DE112008002019T5 DE 112008002019 T5 DE112008002019 T5 DE 112008002019T5 DE 112008002019 T DE112008002019 T DE 112008002019T DE 112008002019 T DE112008002019 T DE 112008002019T DE 112008002019 T5 DE112008002019 T5 DE 112008002019T5
Authority
DE
Germany
Prior art keywords
hub
processor
translation
dva
unit
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.)
Withdrawn
Application number
DE112008002019T
Other languages
English (en)
Inventor
Ramakrishna Cornelius Saripalli
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 DE112008002019T5 publication Critical patent/DE112008002019T5/de
Withdrawn 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/1072Decentralised address translation, e.g. in distributed shared memory systems
    • 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]

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)
  • Multi Processors (AREA)

Abstract

Verfahren, das aufweist:
Empfangen einer Anfrage nach einem Arbeitsgang für einen direkten Speicherzugriff (DMA – Direct Memory Access) in einem Eingabe/Ausgabe(I/O – Input/Output)-Hub von einer I/O-Einheit, die mit dem I/O-Hub gekoppelt ist, wobei die Anfrage eine virtuelle Adresse der Einheit (DVA – Device Virtual Address) umfasst, die mit dem DMA-Arbeitsgang verknüpft ist;
Feststellen in dem I/O-Hub, ob eine Adressübersetzung durchzuführen ist, um die DVA in eine physikalische Adresse (PA) einer ersten Übersetzungsmaschine des I/O-Hub zu übersetzen; und
Senden der Anfrage mit der DVA von dem I/O-Hub an einen Prozessor, der mit dem I/O-Hub gekoppelt ist, wenn der I/O-Hub feststellt, dass die Adressübersetzung nicht durchgeführt wird, und Durchführen der Adressübersetzung in einer zweiten Übersetzungsmaschine des Prozessors.

Description

  • Hintergrund
  • Verarbeitungssysteme haben interne Kommunikationssysteme, um Daten zu übertragen. Diese internen Kommunikationssysteme umfassen einen Satz von Kopplungsstrukturen. Die Kopplungsstrukturen sorgen für die Datenkommunikation zwischen den Komponenten des Systems. Diese Kopplungsstrukturen können jedoch auch Engpässe für das Leistungsverhalten des Systems sein, wenn sie nicht in der Lage sind, mit den Anforderungen der Komponenten des Systems Schritt zu halten.
  • Periphere Komponenten, die an ein System gekoppelt sind, beispielsweise mittels eines Eingabe/Ausgabe-Controllers oder eines anderen derartigen Hub, tätigen oftmals Anfragen nach einem direkten Speicherzugriff (DMA – Direct Memory Access). DMA-Anfragen werden verwendet, um auf Bereiche des Hauptspeichers zuzugreifen, um Daten wiederzugewinnen oder zu schreiben. Periphere Komponenten haben typischerweise einen Bereich virtueller Adressen, die ihnen von einem Betriebssystem zugewiesen sind, auf die sie zugreifen dürfen. Die peripheren Komponenten fragen Abbildedaten an und gewinnen sie wieder, die es ihnen erlauben, die physikalischen Adressen, welche den virtuellen Adressen, die von der Komponente verwendet werden, entsprechen, des Speicherortes für eine DMA-Transaktion zu bestimmen. Jedoch können die Anfragen nach Übersetzungsdaten übermäßigen Verkehr über die Kopplungsstrukturen des Systems hervorrufen.
  • Kurzbeschreibung der Zeichnungen
  • 1 ist ein Blockschaubild eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 ist ein Ablaufdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung.
  • 4 ist ein Blockschaubild eines Systems mit einer Punkt-zu-Punkt-Kopplungsstruktur gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Genaue Beschreibung
  • Bei verschiedenen Ausführungsformen können die Bandbreite, die benötigt wird, um Übersetzungsarbeitsgänge zu handhaben, und Verzögerungszeiten beim Speicherzugriff verringert werden. Um solche Verringerungen bei der Bandbreite und bei der Verzögerungszeit des Speichers zu bewirken, können Ausführungsformen erweiterte Adressübersetzungsmechanismen innerhalb eines Prozessors eines Systems zur Verfügung stellen. Genauer kann ein Prozessorknoten, der einen oder mehrere Prozessorkerne, Speicherverwaltungseinheiten (MMUs – Memory Management Units), so wie Übersetzungspuffer (TLBs – Translation Lookaside Buffers) neben anderen Ressourcen umfasst, weiter mit einem zusätzlichen Adressübersetzungsmechanismus ausgestattet werden, beispielsweise einer sogenannten Virtualisierungsmaschine, um ausgelagerte Adressübersetzungen für Eingabe/Ausgabe(I/O – Input/Output)-Einheiten auszuführen, die mit der Plattform gekoppelt sind.
  • Mit Bezug mm auf die 1 ist ein Blockschaubild eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in der 1 gezeigt ist, umfasst das System 100 eine Vielzahl von Verarbeitungsknoten, nämlich einen ersten Prozessor 110a und einen zweiten Prozessor 110b (allgemein Prozessor 110). Der Prozessor 110a, der eine zentrale Verarbeitungseinheit (CPU – Central Processing Unit) sein kann, kann einen CPU-Kern 112a, einen integrierten Speichercontroller 114a und eine Virtualisierungsmaschine 116a umfassen. In ähnlicher Weise kann der Prozessor 110b einen Kern 112b, einen integrierten Speichercontroller 114b und eine Virtualisierungsmaschine 116b umfassen.
  • Mit Bezug noch auf die 1 kann jeder Prozessor 110 an einen Bereich eines Hauptspeichers gekoppelt sein, der lokal daran festgelegt ist. Genauer kann der Prozessor 110a an den Speicher 120a gekoppelt sein, während der Prozessor 110b an den Speicher 120b gekoppelt ist. Bei einer Ausführungsform kann der Speicher 120 (allgemein) ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM – Dynamic Random Access Memory) sein, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Wie es weiter in der 1 gezeigt ist, können die Prozessoren 110 durch Kopplungsstrukturen 130a und 130b, die Punkt-zu-Punkt(P-P)-Kopplungsstrukturen sein können, mit einem Eingabe/Ausgabe(I/O)-Hub 140 gekoppelt sein. Der I/O-Hub 140 kann eine Virtualisierungsmaschine 135 umfassen. Wie es bei der Ausführungsform der 1 gezeigt ist, kann der I/O-Hub 140 mit verschiedenen I/O-Einheiten 150a150c gekoppelt sein. Obwohl dies bei dieser bestimmten Implementierung in der 1 gezeigt ist, ist der Umfang der vorliegenden Erfindung nicht derart beschränkt.
  • Da jeder Prozessor seine eigene Virtualisierungsmaschine hat, kann das Auslagern von Übersetzungskapazität von dem I/O-Hub realisiert werden. Durch das Auslagern von Übersetzungs- und Speicherzugriffsanforderungen an derartige Virtualisierungsmaschinen in den Prozessoren kann eine entsprechende Virtualisierungsmaschine in dem I/O-Hub befreit werden, so dass eine größere Kapazität zur Verfügung steht. Weiter, indem Übersetzungszugriffsfunktionalität (auf einer Basis pro Abbilde- und Zugriffsanfrage) an den Prozessor ausgelagert wird, der eine virtuelle Maschine betreibt, der die I/O-Einheit gehört, die mit einer Anfrage verknüpft ist (d. h. einer der VM zugeordneten direkten I/O-Einheit), kann das Leistungsverhalten der Einheit beim DMA verbessert werden. Damit kann jede Prozessorfassung eine Virtualisierungsmaschine zur Verfügung stellen, um Tabelleneinträge einer Virtualisierungsseite für physikalische Adressen zu speichern, die auf einen lokalen Speicher des entsprechenden Prozessors abgebildet werden.
  • Wenn demgemäß verschiedene Ausführungsformen verwendet werden, wenn ein Cache-Fehler bei einer Virtualisierungsmaschine in dem I/O-Hub auftritt, kann die entsprechende Anfrage einfach mit allen Einzelheiten über die Transaktion (z. B. einer virtuellen Adresse der Einheit (DVA), der Länge usw.) von der Einheit an den/die Prozessor(en) ausgelagert werden, denen die physikalischen Speicherbereiche gehören, auf die der DVA-Bereich abbildet. Indem DMA-Transaktionen von einer Einheit in einem Prozessor verarbeitet werden, der eng mit dem entsprechenden Speicher gekoppelt ist, können Verbesserungen beim Leistungsverhalten in Fällen realisiert werden, in denen eine VM eine Affinitätsmaske mit einem solchen Prozessor hat und der VM die Einheit gehört (d. h. eine direkt zugeordnete I/O-Einheit).
  • Bevor eine I/O-Einheit eine Virtualisierungsmaschine eines Prozessors benutzen kann, kann eine Abfolge von Tätigkeiten durchgeführt werden, um einen solchen Arbeitsablauf zu ermöglichen. Genauer kann ein Initiierungsprozess durchgeführt werden, um einen Bereich des physikalischen Speichers zu Zwecken des DMA einzurichten und um ihn bei einem Betriebssystem (OS – Operating System) für den Zugriff auf Einheiten anzumelden.
  • Mit Bezug nun auf die 2 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in der 2 gezeigt, kann das Verfahren 200 beginnen, wenn eine Einheit, so wie eine I/O-Einheit, wünscht, DMA-Arbeitsgänge auszuführen. Wie in der 2 gezeigt, kann ein Speicherbereich für DMA-Arbeitsgänge bei dem OS angemeldet werden (Block 210). Bei einer Ausführungsform weist ein Einheitentreiber (der z. B. als ein Teil einer VM oder auf einem ursprünglichen OS läuft) einen Bereich des Speichers zu Zwecken des DMA zu und meldet ihn bei dem OS für den Zugriff von Einheiten an. Noch mit Bezug auf die 2 kann als nächstes eine Virtualisierungsmaschine des I/O-Hub mit physikalischen Speicherbereichen und entsprechenden virtuellen Adressen von Einheiten (DVAs) programmiert werden (Block 220). Zum Beispiel kann das OS die Virtualisierungsmaschine mit den physikalischen Speicherbereichen des zugeordneten Hauptspeichers programmieren und eine virtuelle Adresse der Einheit erhalten. In Verbindung mit diesem Arbeitsgang können Seitentabellen der VE in der zugeordneten CPU aktualisiert werden (Block 230). Zum Beispiel kann eine VE in der CPU diese Transaktionen abhören und ihre eigenen Seitentabelleneinträge mit den entsprechenden physikalischen Adressen und DVAs aktualisieren. Als Alternative kann die Virtualisierungsmaschine in dem I/O-Hub einen Identifizierer, so wie einen Knoten-Identifizierer (Knoten-ID) in dem physikalischen Adressbereich identifizieren, der auf die CPU zeigt, der der Bereich gehört, und eine entsprechende Nachricht an die VE in der CPU senden, um ihre Seitentabellen dementsprechend zu aktualisieren. Somit gibt es zu diesem Zeitpunkt zwei Kopien der Seitentabelleneinträge für dieselbe DVA.
  • Noch mit Bezug auf die 2a kann als nächstes eine DVA an den Einheitentreiber in der I/O-Einheit zurückgegeben werden (Block 240). Demgemäß kann die I/O-Einheit mit dem DVA-Bereich programmiert werden (Block 250). Zum Beispiel kann der Einheitentreiber seine Einheit mit den DVA-Bereichen programmieren, z. B. indem ein geheimer Kanal von Einheit zu Treiber für ein solches Programmieren verwendet wird. Obwohl diese besondere Implementierung in der Ausführungsform der 2 gezeigt ist, wird verstanden, dass der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist.
  • Nachdem die Initialisierung der Einheit gemäß einer Ausführungsform der vorliegenden Erfindung durchgeführt worden ist, können DMA-Arbeitsschritte zwischen einer I/O-Einheit und einem gewünschten Ort, so wie einem Teil des Hauptspeichers, durchgeführt werden. Mit Bezug nun auf die 3 ist ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das Verfahren 300 kann verwendet werden, um DMA-Transaktionen auszuführen und kann beginnen, indem eine DMA-Transaktion ausgegeben wird (Block 310). Zum Beispiel kann eine I/O-Einheit eine DMA-Transaktion ausgeben, um Daten aus einem Speicher zu lesen oder um Daten direkt in den Speicher zu schreiben. Die Steuerung geht vom Block 310 zum Diamanten 320 über, bei dem festgestellt werden kann, ob die I/O-Einheit einen TLB oder eine andere Speicherverwaltungseinheit (MMU) unterstützt. Wenn dies der Fall ist, geht die Steuerung zum Diamanten 330 über, bei dem festgestellt werden kann, ob eine Übersetzung von einer virtuellen Adresse in eine phy sikalische Adresse in dem TLB oder in einer anderen derartigen Struktur vorhanden ist (Diamant 330). Wenn dies der Fall ist, kann die DMA-Transaktion von der I/O-Einheit mit der entsprechenden physikalischen Adresse geschickt werden (Block 335). Demgemäß kann diese physikalische Adresse durch den I/O-Hub und eine entsprechende CPU an den gewünschten Speicherort geleitet werden, um die DMA-Transaktion auszuführen.
  • Wenn stattdessen beim Diamanten 330 festgestellt wird, dass die Übersetzung in dem TLB nicht vorhanden ist, kann eine Anfrage nach einer Übersetzung durch eine VE vorgenommen werden (Block 340). Der I/O-Hub kann dem TLB oder einer anderen MMU-Struktur der I/O-Einheit die entsprechende übersetzte physikalische Adresse zur Verfügung stellen, so dass die I/O-Einheit dann die DMA-Transaktion mit der PA sendet (ebenfalls Block 335). Man bemerke, dass die Information über die Übersetzung auch von der VE des I/O-Hubs an die VE in der CPU zur Verfügung gestellt werden kann, um es der VE zu ermöglichen, ihre Einträge, z. B. Seitentabelleneinträge, zu aktualisieren.
  • Obwohl dies in der 3 nicht gezeigt ist, um die Veranschaulichung einfach zu halten, sei angemerkt, dass, falls die Übersetzung nicht in der VE des I/O-Hubs vorhanden ist, die entsprechenden Seitentabellen aus dem Speicher gelesen werden können und die Seitentabellen (potentiell) der VEs sowohl des Prozessors und des I/O-Hubs können aktualisiert werden. Noch weiter kann der I/O-Hub derartige Seitentabellen an die I/O-Einheit schicken, um ihren TLB oder eine andere MMU-Struktur zu aktualisieren. Bei noch anderen Implementierungen, wenn die Übersetzung in der VE des I/O-Hubs fehlt, kann der I/O-Hub einfach die DMA-Transaktion an den Prozessor zum Handhaben in der VE des Prozessors weiterleiten, wie es hiernach mit Hinblick auf die Blöcke 360 und 365 diskutiert wird.
  • Mit Bezug zurück auf die 3, wenn stattdessen beim Diamanten 320 festgestellt wird, dass die I/O-Einheit einen TLB nicht unterstützt, geht die Steuerung zum Block 350 über. Dort kann eine DMA-Transaktion von der I/O-Einheit an den I/O-Hub gesendet werden, wo bei zum Beispiel eine DVA und eine Länge verwendet wird, als Information, um das Ausführen des DMA-Arbeitsschrittes zu ermöglichen. Als nächstes kann beim Diamanten 355 festgestellt werden, ob die VE in dem I/O-Hub die Anfrage behandeln kann. Obwohl der Umfang der vorliegenden. Erfindung in dieser Hinsicht nicht beschränkt ist, kann diese Entscheidung basierend auf einer Anzahl von Faktoren getroffen werden, einschließlich, zum Beispiel, ob die Übersetzung bereits in den Seitentabellen der VE vorhanden ist, ihrem Cache-Fehlerverhältnis, die Belastung, die sie gegenwärtig behandelt, die Belastung auf einer P-P-Kopplungsstruktur (z. B. die Belastung unterhalb eines Schwellenwertes für die Bandbreite) usw.
  • Wenn es beim Diamanten 355 festgestellt wird, dass die VE des I/O-Hubs die Anfrage nicht behandeln kann, wird die Anfrage an die CPU geschickt (Block 360). Zum Beispiel kann bei einigen Ausführungsformen ein Seitenfehler vorkommen, so dass diese Transaktion von dem I/O-Hub an die CPU, der die zugeordneten Speicherbereiche gehören, über eine P-P-Kopplungsstruktur weitergeleitet wird. Bei einigen Ausführungsformen kann der I/O-Hub die einlaufende DMA-Transaktion von einem ersten Protokoll, in dem die I/O-Einheit und der I/O-Hub kommunizieren, in ein zweites Protokoll übersetzen, über das I/O-Hub und der Prozessor kommunizieren. Bei einer bestimmten Implementierung kann das erste Kommunikationsprotokoll entsprechend einem Kopplungsstrukturprotokoll für periphere Komponenten (PCI – Peripheral Component Interconnect) sein, so wie dem Protokoll PCI ExpressTM entsprechend der PCI ExpressTM-Spezifikation, Basisspezifikation, Version 2.0 (veröffentlicht am 20. Dezember 2006), während das zweite Kommunikationsprotokoll entsprechend einem gemeinsamen Systemschnittstellen(CSI – Common System Interface)-Kommunikationsprotokoll (hiernach beschrieben) sein kann, obwohl der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt ist. Demgemäß kann, beim Block 365, die CPU die DMA-Transaktion handhaben. Zum Beispiel kann die VE in der CPU eine Übersetzung vorliegen haben und die Übersetzung zusammen mit der DMA-Anfrage zur Verfügung stellen, um die Überantwortung der Anfrage zu ermöglichen, und dann die Anfrage wei ter zur Verarbeitung an den Hauptspeicher leiten. Wenn so vorgegangen wird, kann die Notwendigkeit mehrer Transaktionen zwischen der CPU und dem I/O-Hub vermieden werden, da Antworten, Abschlüssse und andere derartige Transaktionen nicht geschehen müssen. Es sei angemerkt, dass, wenn stattdessen die VE der CPU die Übersetzung nicht enthält, ein Seitenlauf(page walk)mechanismus ausgeführt werden kann, um derartige Übersetzungsinformation zu empfangen, z. B. vom Hauptspeicher, und sie in die VE der CPU zu laden und dann die DMA-Transaktion auszuführen.
  • Wenn stattdessen am Diamanten 355 festgestellt wird, dass die VE in dem I/O-Hub die Anfrage behandeln kann, geht die Steuerung zum Block 370 über, bei dem die Übersetzung ausgeführt werden kann und die DMA-Transaktion mit der entsprechenden physikalischen Adresse über die P-P-Kopplungsstruktur an die CPU gesendet wird. Man bemerke, dass bei anderen Implementierungen, wenn die Übersetzung in der VE des I/O-Hub nicht vorhanden ist, die Übersetzung von der CPU angefordert werden kann. Wenn die Übersetzungsinformation erhalten wird, kann die VE des I/O-Hub entsprechend aktualisiert werden. Obwohl es bei der Ausführungsform der 3 mit dieser besonderen Implementierung gezeigt ist, ist der Umfang der vorliegenden Erfindung in dieser Hinsicht nicht beschränkt.
  • Durch Ausführen von Adressenübersetzungen in einer VE des Prozessors können verringerte Kommunikationsvorgänge auf der P-P-Kopplungsstruktur realisiert werden. Zum Beispiel können bei einer Ausführungsform, die ein CSI-Protokoll implementiert, welches ein Cache-Kohärentz-Protokoll ist, die Kommunikation sowohl kohärenter als auch nicht kohärenter Transaktionen durch ein System um einen Satz von P-P-Kopplungsstrukturen zu ermöglichen, verringerte Kommunikationsvorgänge zwischen dem Prozessor und dem I/O-Hub realisiert werden. Insbesondere wenn die Adressenübersetzung von der DVA in die PA in dem I/O-Hub durchgeführt werden sollte und die Übersetzung in einer VE des I/O-Hubs fehlt, müsste eine Anzahl von Transaktionen entlang der P-P-Kopplungsstruktur geschehen, um von einem Speicher aktualisierte Seitentabelleninformation anzufordern und diese Information zurück an die VE auf dem I/O-Hub zu liefern. Zum Beispiel würde der I/O-Hub die Seitentabellen aus dem Speicher des Prozessors, dem der Bereich der DVAs gehört, lesen müssen, was durchgeführt würde, indem eine kohärente Leseanfrage ausgegeben und Antwortpakete empfangen werden. Abhängig von der Anzahl von benötigten Seitenläufen kann das Lesen der Seitentabelle mehrere kohärente Leseanfragen und Antwortpakete umfassen. Zum Beispiel müssen bei einer Implementierung vier Speichertransaktionen und vier Abschlüsse durchgeführt werden, was acht Transaktionen entlang der P-P-Kopplungsstruktur hervorruft. Stattdessen kann, wenn eine Ausführungsform verwendet wird, so wie die, die oben in der 3 beschrieben ist, eine einzige Transaktion geschickt werden, um die DMA-Transaktion von dem I/O-Hub an den Prozessor für die Ausführung zu übergeben. Somit können diese acht Transaktionen vermieden werden, zusammen mit den zusätzlichen Transaktionen, um die tatsächliche DMA-Anfrage an den Speicher zu überlassen, was weitere kohärente Transaktionen mit sich bringen kann. Somit kann das Verwenden von Ausführungsformen der vorliegenden Erfindung die Virtualisierungsmaschine in dem I/O-Hub die DMA-Transaktion aus einem ersten Protokoll in ein zweites Protokoll umwandeln und diese an den Prozessor schicken, um es der Virtualisierungsmaschine in dem Prozessor zu ermöglichen, alle Nachschlagevorgänge durchzuführen und Transaktionen an seinen lokalen Speicher zu übergeben, was Transaktionen auf der P-P-Kopplungsstruktur vermeidet.
  • Ausführungsformen können für viele unterschiedliche Typen von Plattformen geeignet sein, um den Verkehr zwischen einem I/O-Hub und einem Prozessorknoten entlang einer P-P-Kopplungsstruktur zu verringern. Wie es in der 4 gezeigt ist, ist das Multiprozessorsystem 500 ein Punkt-zu-Punkt-Kopplungsstruktursystem und umfasst einen ersten Prozessor 570 und einen zweiten Prozessor 580, die über eine Punkt-zu-Punkt(P-P)-Kopplungsstruktur 550 gekoppelt sind, obwohl das System eine andere Busarchitektur aufweisen kann. Wie in der 4 gezeigt können jeder der Prozessoren 570 und 580 Mehrkernprozessoren sein, die einen ersten und einen zweiten Prozessorkern (d. h. die Prozessorkerne 574a und 574b und die Prozessorkerne 584a und 584b) umfassen, obwohl weitere Kerne vorhanden sein können.
  • Weiterhin, wie es in der 4 gezeigt ist, umfassen der erste und der zweite Prozessor 570 und 580 jeweils eine Virtualisierungsmaschine 575 und 585 gemäß einer Ausführungsform der vorliegenden Erfindung. Weiter mit Bezug auf die 4 umfasst ein erster Prozessor 470 weiter einen Speicher-Controller-Hub (MCH) 572 und P-P-Schnittstellen 576 und 578. In ähnlicher Weise umfasst der zweite Prozessor 580 einen MCH 582 und P-P-Schnittstellen 586 und 588. Wie in der 4 gezeigt, koppeln die MCHs 572 und 582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 532 und einem Speicher 534, die Teile eines Hauptspeichers sein können (z. B. eines dynamischen Speichers mit wahlfreiem Zugriff (DRAM) oder eines voll gepufferten doppelzeiligen Speichermoduls (FBDIMM – Fully Buffered Dual In-Line Memory Module)).
  • Der erste Prozessor 570 und der zweite Prozessor 580 können über P-P-Kopplungsstrukturen 552 bzw. 554 an einen Chipsatz 590 gekoppelt sein. Wie in der 4 gezeigt, umfasst der Chipsatz 590 P-P-Schnittstellen 594 und 598. Weiterhin umfasst der Chipsatz 590 eine Schnittstelle 592, um den Chipsatz 590 mit einer hochleistungsfähigen Grafikmaschine 538 zu koppeln. Bei einer Ausführungsform kann ein Bus 539 eines Advanced Graphics Port (AGP) oder eine Punkt-zu-Punkt-Kopplungsstruktur verwendet werden, um die Grafikmaschine 538 mit dem Chipsatz 590 zu koppeln. Der Chipsatz 590 umfasst weiterhin eine VE 595, um Adressübersetzungen durchzuführen und weiterhin um festzustellen, ob eine Transaktion von einer stromabwärtigen Einheit, so wie eine DMA-Transaktion entsprechend einem ausgewählten aus dem ersten und zweiten Prozessor 570 und 580, mit einer nicht übersetzten DVA weiterzuleiten, um eine verringerte Bandbreite bei der entsprechenden P-P-Kopplungsstruktur 552 zu ermöglichen. Wie in der 4 gezeigt, können verschiedene I/O-Einheiten 514 mit dem ersten Bus 516 gekoppelt werden, zusammen mit einer Bus-Brücke 518, die den ersten Bus 516 mit einem zweiten Bus 520 koppelt. Verschiedene Einheiten können an den zweiten Bus 520 gekoppelt werden, einschließlich, zum Beispiel, einer Tastatur/Maus 522, Kommunikationseinheiten 526 und einer Datenspeichereinheit 528, die bei einer Ausführungsform Code 530 umfassen kann. Weiterhin kann eine Audio-I/O 524 an den zweiten Bus 520 gekoppelt sein.
  • Ausführungsformen können in Code implementiert werden und können auf einem Speichermedium abgelegt sein, in dem Befehle gespeichert sind, die verwendet werden können, um ein System so zu programmieren, dass es die Befehle ausführt. Das Speichermedium kann irgendeinen Typ einer Platte umfassen, einschließlich Floppy Disks, optischer Platten, Compact Disks Nur-Lese-Speicher (CD-ROMS – Compact Disk Read Only Memories), wiederbeschreibare Compact Disks (CD-RWs – Compact Disk Rewritables) und magnetooptische Platten, Halbleitereinheiten, so wie Nur-Lese-Speicher (ROMS – Read Only Memories), Speicher mit wahlfreiem Zugriff (RAMs – Random Access Memories), so wie dynamische Speicher mit wahlfreiem Zugriff (DRAMs), statische Speicher mit wahlfreiem Zugriff (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs – Erasable Programmable Read Only Memories), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs – Electrically Erasable Programmable Read Only Memories), magnetische oder optische Karten oder irgendein anderer Typ Medium, der geeignet ist, elektronische Befehle zu speichern.
  • Obwohl die vorliegende Erfindung mit Bezug auf eine beschränkte Anzahl von Ausführungsformen beschrieben worden ist, werden Fachleute zahlreiche Modifikationen und Abänderungen von diesen erkennen. Es ist beabsichtigt, dass die angefügten Ansprüche derartige Modifikationen und Abänderungen abdecken, die in den wahren Gedanken und Umfang dieser vorliegenden Erfindung fallen.
  • ZUSAMMENFASSUNG
  • Bei einer Ausführungsform umfasst die vorliegende Erfindung ein Verfahren zum Empfangen einer Anfrage nach einem Arbeitsgang für einen direkten Speicherzugriff (DMA – Direct Memory Access) in einem Eingabe/Ausgabe(I/O – Input/Output)-Hub, wobei die Anfrage eine virtuelle Adresse einer Einheit (DVA – Device Virtual Address) umfasst, die mit dem DMA-Arbeitsgang verknüpft ist, das Feststellen in dem I/O-Hub, ob eine Adressenübersetzung durchzuführen ist, um die DVA in eine physikalische Adresse (PA – Physical Address) zu übersetzen, und Senden der Anfrage mit der DVA von dem I/O-Hub an einen Prozessor, der mit dem I/O-Hub gekoppelt ist, wenn der I/O-Hub feststellt, dass keine Adressenübersetzung durchzuführen ist. Weitere Ausführungsformen sind beschrieben und beansprucht.

Claims (20)

  1. Verfahren, das aufweist: Empfangen einer Anfrage nach einem Arbeitsgang für einen direkten Speicherzugriff (DMA – Direct Memory Access) in einem Eingabe/Ausgabe(I/O – Input/Output)-Hub von einer I/O-Einheit, die mit dem I/O-Hub gekoppelt ist, wobei die Anfrage eine virtuelle Adresse der Einheit (DVA – Device Virtual Address) umfasst, die mit dem DMA-Arbeitsgang verknüpft ist; Feststellen in dem I/O-Hub, ob eine Adressübersetzung durchzuführen ist, um die DVA in eine physikalische Adresse (PA) einer ersten Übersetzungsmaschine des I/O-Hub zu übersetzen; und Senden der Anfrage mit der DVA von dem I/O-Hub an einen Prozessor, der mit dem I/O-Hub gekoppelt ist, wenn der I/O-Hub feststellt, dass die Adressübersetzung nicht durchgeführt wird, und Durchführen der Adressübersetzung in einer zweiten Übersetzungsmaschine des Prozessors.
  2. Verfahren nach Anspruch 1, das weiter das Durchführen der Adressübersetzung in der ersten Übersetzungsmaschine des I/O-Hub basierend auf der Feststellung, das Senden der Anfrage mit der PA von dem I/O-Hub an den Prozessor, ansonsten das Senden der Anfrage mit der DVA von dem I/O-Hub an den Prozessor, aufweist.
  3. Verfahren nach Anspruch 2, das weiter das Bestimmen, ob die Adressübersetzung in dem I/O-Hub durchzuführen ist, basierend auf einer Bandbreite einer Kopplungsstruktur zwischen dem I/O-Hub und dem Prozessor aufweist.
  4. Verfahren nach Anspruch 1, bei dem die zweite Übersetzungsmaschine einen Puffer umfasst, um Übersetzungen der DVA in die PA zu speichern, wobei der Puffer getrennt von einem Übersetzungspuffer des Prozessors ist.
  5. Verfahren nach Anspruch 1, das weiter das Durchführen der Adressübersetzung in der I/O-Einheit, wenn die I/O-Einheit einen Hardware-Übersetzungsmechanismus umfasst, ansonsten das Senden der Anfrage mit der DVA von der I/O-Einheit an den I/O-Hub umfasst.
  6. Verfahren nach Anspruch 1, das weiter das Senden der Anfrage von dem I/O-Hub an den Prozessor aufweist, wobei der Prozessor mit einem Teil eines Speichers verknüpft ist, der der PA entspricht, basierend auf einem Knoten-Identifizierer der Anfrage, wobei der Knote-Identifizierer dem Prozessor entspricht.
  7. Verfahren nach Anspruch 1, das weiter das Verringern einer Bandbreite auf einer Punk-zu-Punkt-Kopplungsstruktur zwischen dem I/O-Hub und dem Prozessor durch Senden der Anfrage mit der DVA von dem I/O-Hub an den Prozessor aufweist, wobei Adressübersetzungsinformation, die der DVA entspricht, nicht von dem Prozessor an den I/O-Hub geschickt wird, um dadurch die Bandbreite zu verringern.
  8. Vorrichtung, die aufweist: einen Prozessor, der umfasst: wenigstens einen Kern, um Arbeitsschritte bei Daten auszuführen; einen Cache-Speicher, der einen Übersetzungspuffer umfasst; einen Speicher-Controller, um Speichertransaktionen mit einem Teil eines Systemspeichers zu handhaben, der mit dem Prozessor gekoppelt ist; und eine Übersetzungsmaschine, die einen Arbeitsgang für einen direkten Speicherzugriff (DMA) empfängt, welcher eine virtuelle Adresse der Einheit (DVA) umfasst, wobei der DMA-Arbeitsgang von einer Eingabe/Ausgabe(I/O)-Einheit eingeleitet wird, die mit dem Prozessor gekoppelt ist, und die die DVA in eine physikalische Adresse (PA) übersetzt, die einem Ort in dem Teil des Systemspeichers entspricht.
  9. Vorrichtung nach Anspruch 8, bei der die Übersetzungsmaschine Signale abhört, die mit einer Prozedur zum Einleiten einer Übersetzung verknüpft sind, welche von einem Treiber durchgeführt wird, der der I/O-Einheit einen Bereich zur Verfügung stellt, wobei die I/O-Einheit eine direkte I/O-Einheit für eine virtuelle Maschine ist.
  10. Vorrichtung nach Anspruch 9, bei der die Übersetzungsmaschine Aktualisierungen von einer Übersetzungsmaschine eines I/O-Hubs, der mit dem Prozessor gekoppelt ist, snoopt und die Übersetzungsmaschine basierend auf den Aktualisierungen aktualisiert.
  11. Vorrichtung nach Anspruch 10, die weiter den I/O-Hub gekoppelt zwischen dem Prozessor und der I/O-Einheit aufweist, wobei der I/O-Hub eine zweite Übersetzungsmaschine umfasst, um Übersetzungen einer DVA in eine PA durchzuführen, wobei der I/O-Hub dazu dient, den DMA-Arbeitsgang an den Prozessor mit der DVA zu senden, um einen Bandbreite auf einer Kopplungsstruktur zu verringern, die den I/O-Hub und den Prozessor verbindet.
  12. Vorrichtung nach Anspruch 11, bei der die zweite Übersetzungsmaschine dazu dient, Übersetzungen der DVA in eine PA durchzuführen, wenn die Bandbreite der Kopplungsstruktur unterhalb eines Schwellwertbetrag liegt.
  13. System, das aufweist: einen ersten Prozessor, der wenigstens einen Kern umfasst, um Arbeitsschritte bei Daten auszuführen, einen Cache-Speicher, der einen Übersetzungspuffer umfasst, und eine erste Übersetzungsmaschine, um eine Anfrage von einem Arbeitsgang für einen direkten Speicherzugriff (DMA) zu empfangen, der eine virtuelle Adresse der Einheit (DVA) umfasst, wobei der DMA-Arbeitsgang von einer Eingabe/Ausgabe(I/O)-Einheit eingeleitet wird, die mit dem ersten Prozessor gekoppelt ist, und um die DVA in eine physikalische Adresse (PA) zu übersetzen, die sich in einem ersten Teil eines Speichers befindet, der mit dem ersten Prozessor gekoppelt ist; einen zweiten Prozessor, der wenigstens einen zweiten Kern umfasst, um Arbeitsschritte bei Daten auszuführen, einen zweiten Cache-Speicher, der einen zweiten Übersetzungspuffer umfasst, und eine Übersetzungsmaschine, um einen DMA-Arbeitsgang zu empfangen, der eine DVA umfasst, und um die DVA in eine PA zu übersetzen, die sich in einem zweiten Teil des Speichers befindet, der mit dem zweiten Prozessor gekoppelt ist; und einen Hub, der zwischen die I/O-Einheit und den ersten und den zweiten Prozessor gekoppelt ist, wobei der Hub dazu dient, den DMA-Arbeitsgang basierend auf der DVA an den ersten Prozessor oder an den zweiten Prozessor zu richten.
  14. System nach Anspruch 13, bei dem der Hub dazu dient festzustellen, ob eine Adressenübersetzung in einer Übersetzungsmaschine des Hubs durchzuführen ist, um die DVA in die PA zu übersetzen.
  15. System nach Anspruch 14, bei dem der Hub dazu dient festzustellen, ob die Adressenübersetzung in dem Hub durchzuführen ist, basierend auf einer Bandbreite einer Kopplungsstruktur zwischen dem Hub und dem ersten Prozessor.
  16. System nach Anspruch 14, bei dem die erste Übersetzungsmaschine dazu dient, Signale abzuhören, die mit einer Programmierung eines DVA-Bereichs für die I/O-Einheit verknüpft sind, und Einträge in einen Puffer der ersten Übersetzungsmaschine basierend auf den Abhör-Signalen zu aktualisieren.
  17. System nach Anspruch 14, bei dem die erste Übersetzungsmaschine und die Übersetzungsmaschine des Hub jeweils einen ersten Satz von Übersetzungen von DVA in PA umfassen, entsprechend Orten in dem ersten Teil des Speichers, der mit dem ersten Prozessor gekoppelt ist.
  18. System nach Anspruch 17, bei dem die Übersetzungsmaschine dazu dient, eine Vielzahl von Speichertransaktionen auf der Kopplungsstruktur zwischen dem ersten Prozessor und dem Hub zu verhindern, wenn die Übersetzung der DVA in die PA für den DMA-Arbeitsgang in dem ersten Satz der Übersetzungen von DVA in PA nicht vorhanden ist.
  19. System nach Anspruch 18, bei dem der Hub dazu dient, die Anfrage nach dem DMA-Arbeitsgang aus einem ersten Protokoll, in dem der Hub und die I/O-Einheit kommunizieren, in ein zweites Protokoll, in dem der Hub und der erste Prozessor kommunizieren, zu übersetzen, jedoch nicht die DVA in die PA zu übersetzen.
  20. System nach Anspruch 18, bei dem der erste Prozessor den DMA-Arbeitsgang an den ersten Teil des Speichers ohne das Ausgeben einer Transaktion an den Hub übergibt.
DE112008002019T 2007-07-31 2008-07-30 Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor Withdrawn DE112008002019T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/888,029 US8250254B2 (en) 2007-07-31 2007-07-31 Offloading input/output (I/O) virtualization operations to a processor
US11/888,029 2007-07-31
PCT/US2008/071573 WO2009018329A2 (en) 2007-07-31 2008-07-30 Offloading input/output (i/o) virtualization operations to a processor

Publications (1)

Publication Number Publication Date
DE112008002019T5 true DE112008002019T5 (de) 2010-06-10

Family

ID=40305248

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112008002019T Withdrawn DE112008002019T5 (de) 2007-07-31 2008-07-30 Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor

Country Status (6)

Country Link
US (1) US8250254B2 (de)
JP (1) JP4805314B2 (de)
CN (1) CN101359315B (de)
DE (1) DE112008002019T5 (de)
TW (1) TWI386811B (de)
WO (1) WO2009018329A2 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473567B2 (en) 2010-03-29 2013-06-25 Intel Corporation Generating a packet including multiple operation codes
US8352656B2 (en) 2010-04-08 2013-01-08 Intel Corporation Handling atomic operations for a non-coherent device
US8327055B2 (en) 2010-04-12 2012-12-04 International Business Machines Corporation Translating a requester identifier to a chip identifier
US8606984B2 (en) 2010-04-12 2013-12-10 International Busines Machines Corporation Hierarchical to physical bus translation
US8364879B2 (en) 2010-04-12 2013-01-29 International Business Machines Corporation Hierarchical to physical memory mapped input/output translation
US8316169B2 (en) 2010-04-12 2012-11-20 International Business Machines Corporation Physical to hierarchical bus translation
US8429323B2 (en) 2010-05-05 2013-04-23 International Business Machines Corporation Memory mapped input/output bus address range translation
US8650349B2 (en) 2010-05-26 2014-02-11 International Business Machines Corporation Memory mapped input/output bus address range translation for virtual bridges
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
US8615645B2 (en) 2010-06-23 2013-12-24 International Business Machines Corporation Controlling the selectively setting of operational parameters for an adapter
US9342352B2 (en) 2010-06-23 2016-05-17 International Business Machines Corporation Guest access to address spaces of adapter
US9213661B2 (en) 2010-06-23 2015-12-15 International Business Machines Corporation Enable/disable adapters of a computing environment
US8635430B2 (en) 2010-06-23 2014-01-21 International Business Machines Corporation Translation of input/output addresses to memory addresses
US8271710B2 (en) 2010-06-24 2012-09-18 International Business Machines Corporation Moving ownership of a device between compute elements
US8949499B2 (en) 2010-06-24 2015-02-03 International Business Machines Corporation Using a PCI standard hot plug controller to modify the hierarchy of a distributed switch
US8656137B2 (en) 2011-09-01 2014-02-18 Qualcomm Incorporated Computer system with processor local coherency for virtualized input/output
US10387324B2 (en) * 2011-12-08 2019-08-20 Intel Corporation Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
WO2013105978A1 (en) * 2012-01-13 2013-07-18 Intel Corporation Allocation of flow control credits for high performance devices
US9936329B2 (en) 2012-03-09 2018-04-03 Nokia Technologies Oy Methods, apparatuses, and computer program products for operational routing between proximate devices
JP6282434B2 (ja) * 2012-10-22 2018-02-21 キヤノンイメージングシステムズ株式会社 デバイス制御装置、その制御方法、及びデバイス制御システム
US9152467B2 (en) * 2013-01-18 2015-10-06 Nec Laboratories America, Inc. Method for simultaneous scheduling of processes and offloading computation on many-core coprocessors
US10437591B2 (en) 2013-02-26 2019-10-08 Qualcomm Incorporated Executing an operating system on processors having different instruction set architectures
US9396011B2 (en) 2013-03-12 2016-07-19 Qualcomm Incorporated Algorithm and apparatus to deploy virtual machine monitor on demand
US9606818B2 (en) 2013-03-14 2017-03-28 Qualcomm Incorporated Systems and methods of executing multiple hypervisors using multiple sets of processors
US10114756B2 (en) 2013-03-14 2018-10-30 Qualcomm Incorporated Externally programmable memory management unit
US9396012B2 (en) 2013-03-14 2016-07-19 Qualcomm Incorporated Systems and methods of using a hypervisor with guest operating systems and virtual processors
WO2015033384A1 (ja) 2013-09-03 2015-03-12 株式会社アキブシステムズ I/oデバイスの仮想化のためのコンピュータシステム及びその運用方法並びにhub装置
CN106502721B (zh) * 2016-09-26 2019-11-15 华为技术有限公司 一种命令卸载方法、装置及物理机
WO2018198325A1 (ja) * 2017-04-28 2018-11-01 株式会社日立製作所 ストレージシステム
US10706493B2 (en) * 2017-12-29 2020-07-07 Intel Corporation Apparatus and method for display virtualization using mapping between virtual and physical display planes
JP7144671B2 (ja) * 2018-03-14 2022-09-30 富士通株式会社 ネットワークインタフェース装置、それを有するノードを複数有する情報処理装置及び情報処理装置のノード間送信データ送信方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5998367A (ja) * 1982-11-26 1984-06-06 Nec Corp アドレス変換バツフア方式
JPH0644251B2 (ja) 1986-08-28 1994-06-08 日本電気株式会社 デ−タ処理装置
JPH01193961A (ja) * 1988-01-29 1989-08-03 Hitachi Ltd アドレス変換装置
JPH04308953A (ja) 1991-04-05 1992-10-30 Kyocera Corp 仮想アドレス計算機装置
US5294567A (en) 1993-01-08 1994-03-15 E. I. Du Pont De Nemours And Company Method for forming via holes in multilayer circuits
JP3296240B2 (ja) * 1997-03-28 2002-06-24 日本電気株式会社 バス接続装置
JPH1124995A (ja) * 1997-07-03 1999-01-29 Nec Eng Ltd アドレス変換用tlbアクセス制御方式
US6009488A (en) 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US20020069341A1 (en) * 2000-08-21 2002-06-06 Gerard Chauvel Multilevel cache architecture and data transfer
GB2367646B (en) * 2000-10-03 2002-11-20 Sun Microsystems Inc Resource access control
TWI230863B (en) 2001-06-13 2005-04-11 Corrent Corp Input/output system and method for transferring control and data, and arbiter for coordinating data communication
US6877088B2 (en) * 2001-08-08 2005-04-05 Sun Microsystems, Inc. Methods and apparatus for controlling speculative execution of instructions based on a multiaccess memory condition
JP4116346B2 (ja) 2002-07-05 2008-07-09 富士通株式会社 演算処理装置及びそのアドレス変換方法
US6976117B2 (en) * 2002-08-13 2005-12-13 Intel Corporation Snoopy virtual level 1 cache tag
US7519791B2 (en) * 2004-02-06 2009-04-14 Intel Corporation Address conversion technique in a context switching environment
US7415577B2 (en) * 2004-03-10 2008-08-19 Intel Corporation Method and apparatus to write back data
US7496713B1 (en) * 2004-07-21 2009-02-24 Sun Microsystems, Inc. Method and apparatus for maintaining cache coherency in a memory system with shared only cache memories
US7586936B2 (en) 2005-04-01 2009-09-08 International Business Machines Corporation Host Ethernet adapter for networking offload in server environment
US7496730B2 (en) * 2005-04-15 2009-02-24 Microsoft Corporation System and method for reducing the number of translation buffer invalidates an operating system needs to issue
US7487327B1 (en) * 2005-06-01 2009-02-03 Sun Microsystems, Inc. Processor and method for device-specific memory address translation
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7548999B2 (en) 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US7653803B2 (en) 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
US7673116B2 (en) * 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
US7739474B2 (en) * 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
US8650342B2 (en) * 2006-10-23 2014-02-11 Dell Products L.P. System and method for distributed address translation in virtualized information handling systems

Also Published As

Publication number Publication date
JP4805314B2 (ja) 2011-11-02
US8250254B2 (en) 2012-08-21
TW200912655A (en) 2009-03-16
CN101359315A (zh) 2009-02-04
CN101359315B (zh) 2014-09-03
US20090037614A1 (en) 2009-02-05
WO2009018329A2 (en) 2009-02-05
TWI386811B (zh) 2013-02-21
JP2009037610A (ja) 2009-02-19
WO2009018329A3 (en) 2009-03-12

Similar Documents

Publication Publication Date Title
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE102009022152B4 (de) Verwenden von Kritikaliätsinformationen zum Routen von Cache-Kohärenz-Kommmunikationen
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE60211076T2 (de) Datenübertragung zwischen virtuellen Adressen
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69734129T2 (de) Hierarchisches Datenverarbeitungssystem mit symetrischen Multiprozessoren
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE60219436T2 (de) System mit adressbasierter Intraknotenkohärenz und datenbasierter Interknotenkohärenz
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE102021121062A1 (de) System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE112008001957B4 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee