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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address 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.
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 der1 gezeigt ist, umfasst das System100 eine Vielzahl von Verarbeitungsknoten, nämlich einen ersten Prozessor110a und einen zweiten Prozessor110b (allgemein Prozessor110 ). Der Prozessor110a , der eine zentrale Verarbeitungseinheit (CPU – Central Processing Unit) sein kann, kann einen CPU-Kern112a , einen integrierten Speichercontroller114a und eine Virtualisierungsmaschine116a umfassen. In ähnlicher Weise kann der Prozessor110b einen Kern112b , einen integrierten Speichercontroller114b und eine Virtualisierungsmaschine116b umfassen. - Mit Bezug noch auf die
1 kann jeder Prozessor110 an einen Bereich eines Hauptspeichers gekoppelt sein, der lokal daran festgelegt ist. Genauer kann der Prozessor110a an den Speicher120a gekoppelt sein, während der Prozessor110b an den Speicher120b gekoppelt ist. Bei einer Ausführungsform kann der Speicher120 (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 Prozessoren110 durch Kopplungsstrukturen130a und130b , die Punkt-zu-Punkt(P-P)-Kopplungsstrukturen sein können, mit einem Eingabe/Ausgabe(I/O)-Hub140 gekoppelt sein. Der I/O-Hub140 kann eine Virtualisierungsmaschine135 umfassen. Wie es bei der Ausführungsform der1 gezeigt ist, kann der I/O-Hub140 mit verschiedenen I/O-Einheiten150a –150c gekoppelt sein. Obwohl dies bei dieser bestimmten Implementierung in der1 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 der2 gezeigt, kann das Verfahren200 beginnen, wenn eine Einheit, so wie eine I/O-Einheit, wünscht, DMA-Arbeitsgänge auszuführen. Wie in der2 gezeigt, kann ein Speicherbereich für DMA-Arbeitsgänge bei dem OS angemeldet werden (Block210 ). 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 die2 kann als nächstes eine Virtualisierungsmaschine des I/O-Hub mit physikalischen Speicherbereichen und entsprechenden virtuellen Adressen von Einheiten (DVAs) programmiert werden (Block220 ). 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 (Block230 ). 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 (Block240 ). Demgemäß kann die I/O-Einheit mit dem DVA-Bereich programmiert werden (Block250 ). 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 der2 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 Verfahren300 kann verwendet werden, um DMA-Transaktionen auszuführen und kann beginnen, indem eine DMA-Transaktion ausgegeben wird (Block310 ). 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 Block310 zum Diamanten320 ü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 Diamanten330 ü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 (Diamant330 ). Wenn dies der Fall ist, kann die DMA-Transaktion von der I/O-Einheit mit der entsprechenden physikalischen Adresse geschickt werden (Block335 ). 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 (Block340 ). 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 Block335 ). 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öcke360 und365 diskutiert wird. - Mit Bezug zurück auf die
3 , wenn stattdessen beim Diamanten320 festgestellt wird, dass die I/O-Einheit einen TLB nicht unterstützt, geht die Steuerung zum Block350 ü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 Diamanten355 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 (Block360 ). 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 Block365 , 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 Block370 ü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 der3 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 Multiprozessorsystem500 ein Punkt-zu-Punkt-Kopplungsstruktursystem und umfasst einen ersten Prozessor570 und einen zweiten Prozessor580 , die über eine Punkt-zu-Punkt(P-P)-Kopplungsstruktur 550 gekoppelt sind, obwohl das System eine andere Busarchitektur aufweisen kann. Wie in der4 gezeigt können jeder der Prozessoren570 und580 Mehrkernprozessoren sein, die einen ersten und einen zweiten Prozessorkern (d. h. die Prozessorkerne574a und574b und die Prozessorkerne584a und584b ) umfassen, obwohl weitere Kerne vorhanden sein können. - Weiterhin, wie es in der
4 gezeigt ist, umfassen der erste und der zweite Prozessor570 und580 jeweils eine Virtualisierungsmaschine575 und585 gemäß einer Ausführungsform der vorliegenden Erfindung. Weiter mit Bezug auf die4 umfasst ein erster Prozessor470 weiter einen Speicher-Controller-Hub (MCH)572 und P-P-Schnittstellen576 und578 . In ähnlicher Weise umfasst der zweite Prozessor580 einen MCH582 und P-P-Schnittstellen586 und588 . Wie in der4 gezeigt, koppeln die MCHs572 und582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher532 und einem Speicher534 , 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 Prozessor580 können über P-P-Kopplungsstrukturen552 bzw.554 an einen Chipsatz590 gekoppelt sein. Wie in der4 gezeigt, umfasst der Chipsatz590 P-P-Schnittstellen594 und598 . Weiterhin umfasst der Chipsatz590 eine Schnittstelle592 , um den Chipsatz590 mit einer hochleistungsfähigen Grafikmaschine538 zu koppeln. Bei einer Ausführungsform kann ein Bus539 eines Advanced Graphics Port (AGP) oder eine Punkt-zu-Punkt-Kopplungsstruktur verwendet werden, um die Grafikmaschine538 mit dem Chipsatz590 zu koppeln. Der Chipsatz590 umfasst weiterhin eine VE595 , 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 Prozessor570 und580 , mit einer nicht übersetzten DVA weiterzuleiten, um eine verringerte Bandbreite bei der entsprechenden P-P-Kopplungsstruktur552 zu ermöglichen. Wie in der4 gezeigt, können verschiedene I/O-Einheiten514 mit dem ersten Bus516 gekoppelt werden, zusammen mit einer Bus-Brücke518 , die den ersten Bus516 mit einem zweiten Bus520 koppelt. Verschiedene Einheiten können an den zweiten Bus520 gekoppelt werden, einschließlich, zum Beispiel, einer Tastatur/Maus522 , Kommunikationseinheiten526 und einer Datenspeichereinheit528 , die bei einer Ausführungsform Code530 umfassen kann. Weiterhin kann eine Audio-I/O524 an den zweiten Bus520 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
2007
- 2007-07-31 US US11/888,029 patent/US8250254B2/en not_active Expired - Fee Related
-
2008
- 2008-07-11 TW TW097126344A patent/TWI386811B/zh active
- 2008-07-14 JP JP2008182479A patent/JP4805314B2/ja not_active Expired - Fee Related
- 2008-07-30 DE DE112008002019T patent/DE112008002019T5/de not_active Withdrawn
- 2008-07-30 WO PCT/US2008/071573 patent/WO2009018329A2/en active Application Filing
- 2008-07-30 CN CN200810144274.2A patent/CN101359315B/zh not_active Expired - Fee Related
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 |