DE102008048421A1 - Zwischenspeichern einer Adressübersetzung und Verbesserung des Leistungsverhaltens eines I/O-Cache in virtualisierten Umgebungen - Google Patents

Zwischenspeichern einer Adressübersetzung und Verbesserung des Leistungsverhaltens eines I/O-Cache in virtualisierten Umgebungen Download PDF

Info

Publication number
DE102008048421A1
DE102008048421A1 DE102008048421A DE102008048421A DE102008048421A1 DE 102008048421 A1 DE102008048421 A1 DE 102008048421A1 DE 102008048421 A DE102008048421 A DE 102008048421A DE 102008048421 A DE102008048421 A DE 102008048421A DE 102008048421 A1 DE102008048421 A1 DE 102008048421A1
Authority
DE
Germany
Prior art keywords
cache
memory access
access request
logic
endpoint
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
DE102008048421A
Other languages
English (en)
Inventor
Mahesh Portland Wagh
Jasmin Portland Ajanovic
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 DE102008048421A1 publication Critical patent/DE102008048421A1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system

Abstract

Verfahren und Vorrichtungen, die das Verbessern des Zwischenspeicherns von Adressübersetzungen und/oder des Leistungsverhaltens eines Eingabe/Ausgabe (I/O - Input/Output)-Cache in virtualisierten Umgebungen betreffen, werden beschrieben. Bei einer Ausführungsform kann ein Hinweis, der von einer Endpunkt-Baugruppe zur Verfügung gestellt wird, verwendet werden, um Information, die in einem I/O-Cache gespeichert ist, zu aktualisieren. Derartige Information kann bei einer Ausführungsform zum Implementieren einer effizienteren Ersatzstrategie verwendet werden. Weitere Ausführungsformen sind ebenfalls offenbart.

Description

  • HINTERGRUND
  • Die vorliegende Offenbarung betrifft im Allgemeinen das Gebiet der Elektronik. Genauer betrifft eine Ausführungsform der Erfindung das Verbessern des Zwischenspeicherns einer Adressübersetzung und/oder des Leistungsverhaltens eines Eingabe/Ausgabe (I/O – Input/Output)-Cache in virtualisierten Umgebungen.
  • Die I/O-Virtualisierung ist eine Technologie, die entwickelt wird, um sicherzustellen, dass I/O-Baugruppen in einer virtualisierten Umgebung ihre Funktion richtig erfüllen. Im Allgemeinen kann eine virtualisierte Umgebung eine Umgebung sein, in der mehr als ein Betriebssystem (OS – Operating System) gleichzeitig aktiv sein kann. Einige Implementierungen der I/O-Virtualisierung können Hardwarestrukturen einsetzen, um das Leistungsverhalten zu verbessern. Solche Implementierungen erfordern jedoch, dass eine relativ hohe Gatteranzahl realisiert wird, was wiederum wieder teurer und/oder komplex zu implementieren sein könnte.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die genaue Beschreibung wird mit Bezug auf die beigefügten Figuren gegeben. In den Figuren identifiziert/identifizieren die am weitesten links stehende(n) Ziffer(n) eines Bezugszeichens die Figur, in der das Bezugszeichen zum ersten Mal erscheint. Die Verwendung derselben Bezugszeichen in unterschiedlichen Figuren geben ähnliche oder identische Objekte an.
  • 13 veranschaulichen Blockschaubilder von Ausführungsformen von Rechensystemen, die verwendet werden können, um verschiedene hierin diskutierte Ausführungsformen zu implementieren.
  • 4 veranschaulicht ein Ablaufdiagramm eines Verfahrens gemäß einer Ausführungsform der Erfindung.
  • GENAUE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche bestimmte Einzelheiten aufgeführt, um für ein gründliches Verständnis der verschiedenen Ausführungsformen zu sorgen. Jedoch können manche Ausführungsformen ohne diese bestimmten Einzelheiten in die Praxis umgesetzt werden. In anderen Fällen sind wohlbekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht in Einzelheiten beschrieben worden, um die bestimmten Ausführungsformen nicht dadurch zu verschleiern. Verschiedene Aspekte der Ausführungsformen der Erfindung können ausgeführt werden, indem verschiedene Mittel verwendet werden, so wie integrierte Halbleiterschaltungen ("Hardware"), von einem Computer lesbare Befehle, die in einem oder in mehreren Programmen organisiert sind ("Software") oder irgendeine Kombination aus Hardware und Software. Für die Zwecke dieser Offenbarung bedeutet eine Bezugnahme auf "Logik" entweder Hardware, Software oder irgendeine Kombination aus diesen.
  • Einige der hierin diskutierten Ausführungsformen können das Zwischenspeichern von Adressübersetzungen (so wie bei der Adressübersetzung für die Virtualisierung für I/O (VTd (Virtualization Technology-directed) und/oder das Leistungsverhalten eines I/O-Cache in virtualisierten Umgebungen verbessern. Genauer können einige Virtualisierungsdienste in Hardwarestrukturen implementiert werden, die verwendet werden, um eine physikalische Adresse eines Gastes (GPA – Guest Physical Address) in physikalische Adressen eines Host (HPA – Host Physical Addresses) zu übersetzen. Demgemäß können derartige Strukturen eine Unterstützung beim Zwischenspeichern zur Verfügung stellen, z. B. in der Form von I/O-Übersetzungspuffern (IOTLBs – I/O Look-Aside-Buffers), um die Übersetzungen von der GPA in die HPA zwischenzuspeichern. Bei manchen Ausführungsformen können diese Zwischenspeicherstrukturen für eine geringere Wartezeit bei Anfragen sorgen, die dieselbe Adressübersetzung zum Ziel haben. Weiterhin können einige der Techniken in verschiedenen Arten einer Rechenumgebung verwendet werden, so wie die, die mit Bezug auf die 14 diskutiert wird.
  • Genauer veranschaulicht die 1 ein Blockschaubild eines Rechensystems 100 gemäß einer Ausführungsform der Erfindung. Das System 100 kann einen oder mehrere Agenten 102-1 bis 102-M umfassen (die hierin insgesamt als "Agenten 102" oder allgemeiner als "Agent 102" bezeichnet werden). Bei einer Ausführungsform können die Agenten 102 Komponenten eines Rechensystems sein, so wie der Rechensysteme, die mit Bezug auf die 24 diskutiert werden.
  • Wie es in der 1 veranschaulicht ist, können die Agenten 102 über ein Fabric 104 eines Netzwerkes kommunizieren. Bei einer Ausführungsform kann das Fabric 104 des Netzwerkes ein Computernetzwerk umfassen, das es verschiedenen Agenten (so wie Rechenvorrichtungen) erlaubt, Daten zu kommunizieren. Bei einer Ausführungsform kann das Fabric 104 des Netzwerks eine oder mehrere Verbindungen (oder Verbindungsnetzwerke) umfassen, die über eine serielle (z. B. Punkt-zu-Punkt)-Verbindung und/oder ein gemeinsam genutztes Kommunikationsnetzwerk kommunizieren. Zum Beispiel können manche Ausführungsformen die Fehlersuche und -beseitigung bei Komponenten oder die Validierung auf Verbindungen vereinfachen, die die Kombination mit vollständig gepufferten doppelreihigen Speichermodulen (FBD – Fully Buffered Dual In-Line) ermöglichen, z. B. wenn die FBD-Verbindung eine serielle Verbindung zum Koppeln von Speichermodulen mit einer Hostcontrollerbaugruppe (so wie einem Prozessor oder einem Speicherhub) ist. Die Fehlersuchinformation kann von dem Host des FBD-Kanals derart übertragen werden, dass die Fehlersuchinformation entlang dem Kanal durch Erfassungswerkzeuge, die den Kanalverkehr überwachen (so wie einem oder mehreren logischen Analysatoren) beobachtet werden kann.
  • Bei einer Ausführungsform kann das System 100 ein Schichtprotokollschema unterstützen, das eine physikalische Schicht, eine Verbindungsschicht, eine Routingschicht, eine Transportschicht und/oder eine Protokollschicht umfassen kann. Das Fabric 104 kann weiter das Senden von Daten (z. B. in der Form von Paketen) von einem Protokoll (z. B. einem zwischenspeichernden Prozessor oder einem auf das Zwischenspeichern ansprechenden Speichercontroller) zu einem anderen Protokoll für eine Punkt-zu-Punkt-Verbindung oder ein gemeinsam genutztes Netzwerk vereinfachen. Auch kann bei manchen Ausführungsformen das Fabric 104 des Netzwerks für die Kommunikation sorgen, die einem oder mehreren mit dem Cache verbundenen Protokollen anhaftet.
  • Weiterhin, wie es durch die Richtung der Pfeile in 1 gezeigt ist, können die Agenten 102 Daten über das Fabric 104 des Netzwerkes senden und/oder empfangen. Somit können einige Agenten eine unidirektionale Verbindung verwenden, während andere eine bidirektionale Verbindung für die Kommunikation verwenden können. Zum Beispiel kann ein oder können mehrere Agenten (so wie der Agent 102-M) Daten (z. B. über eine unidirektionale Verbindung 106) senden, ein anderer Agent oder andere Agenten (so wie der Agent 102-2) kann/können Daten (z. B. über eine unidirektionale Verbindung 108) empfangen, während manche Agenten (so wie der Agent 102-1) Daten sowohl senden als auch empfangen können (z. B. über eine bidirektionale Verbindung 110).
  • 2 veranschaulicht ein Blockschaubild von Teilen eines Rechensystems 200 gemäß einer Ausführungsform. Bei einer Ausführungsform können verschiedene Komponenten des Systems 200 in einem der Agenten 102-1 und/oder 102-M implementiert werden, die mit Bezug auf die 1 diskutiert worden sind. Weitere Einzelheiten im Hinblick auf einige der Arbeitsgänge des Rechensystems 200 werden hierin mit Bezug auf die 4 diskutiert.
  • Das System 200 kann einen oder mehrere Prozessoren 202-1 bis 202-N umfassen (hierin insgesamt als "Prozessoren 202" oder allgemeiner als "Prozessor 202" bezeichnet). Jeder der Prozessoren 202-1 bis 202-N kann verschiedene Komponenten umfassen, so wie einen oder mehrere private oder gemeinsam genutzte Zwischenspeicher, Ausführungseinheit(en), einen oder mehrere Kerne usw. Darüber hinaus kann jeder der Prozessoren 202 Zugriff auf einen Speicher 204 haben (z. B. auf die Speicher 204-1 bis 204-N). Auch kann das System 200 einen optionalen Systemspeicher 206 umfassen, der von den verschiedenen Komponenten des Systems 200 gemeinsam genutzt werden kann, zum Beispiel von einem oder mehreren der Prozessoren 202, von Komponenten eines Nicht-Kerns oder Chipsatzes (CS – Chipset) 208 oder von Komponenten, die an den Nicht-Kern 208 gekoppelt sind, usw. Einer oder mehrere der Speicher 204 und/oder 206 kann ein oder mehrere Betriebssysteme speichern. Somit kann das System bei manchen Ausführungsformen in der Lage sein, eine Vielzahl von Betriebssystemen (z. B. gleichzeitig) auszuführen.
  • Wie es in 2 gezeigt ist, kann der Nicht-Kern 208 verschiedene Komponenten umfassen, wie zum Beispiel einen Root Complex (RC)-Cache 210 (der z. B. von verschiedenen Komponenten eines Rechensystems, so wie dem System 200, gemeinsam genutzt werden kann). Bei manchen Ausführungsformen kann der RC-Cache 210 in einem Speichersteuerhub (MCH – Memory Control Hub)- und/oder einem Grafik-MCH (GMCH)-Bereich eines Chipsatzes oder Nicht-Kerns (z. B. dem CS/Nicht-Kern 208) vorliegen. Der RC-Cache 210 kann mit anderen Komponenten über einen Datenweg 212 kommunizieren (der eine optionale Kernverbindung 214 umfassen kann, z. B. um die Kommunikation zwischen einem oder mehreren Kernen der Prozessoren 202 und anderen Komponenten des Systems 200 zu vereinfachen). Das System 200 kann weiter eine Vorabhol-Logik 216 umfassen, um z. B. vorab Daten (einschließlich Befehlen oder Mikrooperationen) von verschiedenen Orten (so wie einem oder mehreren der Speicher 204, dem Systemspeicher 206, anderen Speicherbaugruppen, einschließlich zum Beispiel einer flüchtigen oder nicht flüchtigen Speicherbaugruppe usw.) in einen IOTLB 220 vorab zu holen (z. B. über eine Virtualisierungs- oder Übersetzungslogik 222-1 bis 222-P (gemeinsam hierin als "Logiken 222" oder allgemeiner "Logik 222" bezeichnet)).
  • Wie in 2 gezeigt, kann bei wenigstens einer Ausführungsform der Datenweg 212 mit einer oder mehreren I/O-Baugruppen gekoppelt sein. Irgendein Typ einer I/O-Baugruppe kann verwendet werden. Zum Zwecke des Veranschaulichens können bei der Ausführungsform, die in 2 veranschaulicht ist, die I/O-Baugruppen eine oder mehrere Baugruppen 224-1 bis 224-P umfassen (die hiernach gemeinsam als "Endpunkt-Baugruppen 224" oder allgemeiner "Endpunkt 224" bezeichnet werden). Die Endpunkt-Baugruppen 224 können bei einer Ausführungsform Baugruppen für den Anschluss von Peripheriekomponenten (PCI – Peripheral Component Interconnect) sein.
  • Zum Beispiel können die Endpunkt-Baugruppen 224 mit dem CS/Nicht-Kern 208 gemäß der PCI Local Bus Specification, Überarbeitung 3.0, 9. März 2004, erhältlich bei der PCI Special Interest Group, Portland, Oregon, USA (hiernach als ein "PCI Bus" bezeichnet) kommunizieren. Als Alternative können die PCI-X Specification, Überarbeitung 3.0a, 22. April 2003, hiernach als ein "PCI-X Bus" bezeichnet) und/oder die PCI Express (PCIe) Specifications (PCIe Specification, Überarbeitung 2.0, Oktober 2006), erhältlich bei der zuvor genannten PCI Special Interest Group, Portland, Oregon, USA, verwendet werden. Weiter können andere Peripherieeinheiten, die an den CS/Nicht-Kern 208 gekoppelt sind, bei verschiedenen Ausführungsformen der Erfindung integrierte Treiberelektronik (IDE – Integrated Drive Electronics) oder Festplattenlaufwerk(e) mit einer Schnittstelle zu kleinen Computersystemen (SCSI – Small Computer System Interface), Baugruppen für den universellen seriellen Bus (USB – Universal Serial Bus), eine Tastatur, eine Maus, parallele Ports, serielle Ports, Floppydisk laufwerke, Unterstützung für die digitale Ausgabe (z. B. eine digitale Videoschnittstelle (DVI – Digital Video Interface)) usw. umfassen.
  • Wie in 2 gezeigt, können die Endpunkt-Baugruppen 224 durch Root Ports 226-1 bis 226-P (hierin insgesamt als "Ports 226" oder allgemeiner "Port 226" bezeichnet) mit anderen Komponenten des Systems 200 kommunizieren, so wie der Logik 222. Bei einer Ausführungsform kann die Logik 222 Adressübersetzungsarbeitsgänge für virtualisierte Umgebungen ausführen, so wie das Übersetzen von virtuellen Adressen in physikalische Adressen, z. B. durch Bezug auf den IOTLB 220. Die physikalischen Adressen können Orten (z. B. Einträgen) in einem Systemspeicher 206 entsprechen. Die Logik kann zusätzlich weitere Arbeitsgänge ausführen, so wie diejenigen, die mit Bezug auf die 3 und 4 diskutiert worden sind, die das Übersetzen der GPA und der HPA von Einträgen in einer Speicherbaugruppe, die an die Systeme 200 und/oder 300 gekoppelt ist (so wie den Systemspeicher 206), umfassen. Auch kann die Logik ein Root Complex gemäß der PCIe Spezification sein.
  • Darüber hinaus können die Prozessoren 202 irgendein Typ eines Prozessors sein, so wie ein universeller Prozessor, ein Netzwerkprozessor (der Daten verarbeiten kann, die über ein Computernetzwerk 250 kommuniziert worden sind) usw. (einschließlich eines Prozessors für einen Computer mit verringertem Befehlssatz (RISC – Reduced Instruction Set Computer) oder einem Computer mit komplexem Befehlssatz (CISC – Complex Instruction Set Computer)). Darüber hinaus können die Prozessoren 202 eine Gestaltung mit einem einzigen oder mehreren Kernen haben. Die Prozessoren 202 mit einer Mehrkerngestaltung können unterschiedliche Typen von Prozessorkernen auf demselben Chip der integrierten Schaltung (IC – Integrated Circuit) integrieren. Auch können die Prozessoren 202 mit einer Mehrkerngestaltung als symmetrische oder asymmetrische Multiprozessoren implementiert werden. Auch, wie in der 2 gezeigt, kann wenigstens eine oder können mehrere der Endpunkt-Baugruppen 224 bei einer Ausführungsform an das Netzwerk 250 gekoppelt werden.
  • Weiter können die Prozessoren 202 einen oder mehrere Caches (nicht gezeigt) umfassen, die bei verschiedenen Ausführungsformen privat und/oder gemeinsam genutzt werden können. Im Allgemeinen speichert ein Cache Daten, die Ursprungsdaten entsprechen, welche anderswo gespeichert oder früher berechnet worden sind. Um die Verzögerungszeit beim Speicherzugriff zu verringern, kann, sobald Daten in einem Cache gespeichert sind, die zukünftige Verwendung geschehen, indem auf eine zwischengespeicherte Kopie zugegriffen wird, anstatt dass die Ursprungsdaten neu abgeholt oder neu berechnet werden. Der/die hierin diskutierten Cache(s) (einschließlich zum Beispiel des RC-Cache 210, des IOTLB 220, Kombinationen aus diesen usw.) können irgendein Typ eines Zwischenspeichers sein, so wie ein Cache der Ebene 1 (L1 – Level 2), ein Cache der Ebene 2 (L2 – Level 2), ein Cache der Ebene 3 (L3 – Level 3), ein Cache auf einer Ebene dazwischen, ein Cache auf höchster Ebene (LLC – Last Level Cache), Kombinationen aus diesen usw., um elektronische Daten zu speichern (welche z. B. Befehle umfassen), die von einer oder mehreren Komponenten des Systems 200 verwendet werden.
  • Bei einer Ausführungsform können die Systeme 200 und/oder 300 auch weitere Baugruppen umfassen, so wie eine oder mehrere aus: einer Anzeigevorrichtung (z. B. gekoppelt an den CS/Nicht-Kern 208, um Bilder anzuzeigen), einer Audiobaugruppe (z. B. an den CS/Nicht-Kern 208 gekoppelt, um Audiosignale zu verarbeiten) usw. Bei manchen Ausführungsformen können derartige Baugruppen als Endpunkt-Baugruppen 224 implementiert werden (die mit dem CS/Nicht-Kern 208 zum Beispiel über Root-Ports 226 kommunizieren).
  • 3 veranschaulicht ein Blockschaubild von Teilen eines Rechensystems 300 gemäß einer Ausführungsform. Bei einer Ausführungsform können verschiedene Komponenten des Systems 300 innerhalb eines der Agenten 102-1 und/oder 102-M implementiert werden, die mit Bezug auf die 1 diskutiert worden sind. Weitere Einzelheiten im Hinblick auf einige der Arbeitsgänge des Rechensystems 300 werden hierin mit Bezug auf 4 diskutiert werden.
  • Wie es in der 3 gezeigt ist, kann das System 300 einen oder mehrere der Prozessoren 202, Speicher 204, einen Systemspeicher 206, einen RC-Cache 210, einen Datenweg 212, eine optionale Kernverbindung 214, Vorabhollogik 216, einen IOTLB 220, Logik 222, Endpunkt-Baugruppen 224 und Root-Ports 226 umfassen. Auch können bei einer Ausführungsform, wie veranschaulicht, der RC-Cache 210 und der IOTLB 220 in einem einzigen Cache kombiniert sein.
  • 4 veranschaulicht ein Ablaufdiagramm eines Verfahrens 400, um Information zu aktualisieren, die in einem I/O-Cache gespeichert ist, um gemäß einer Ausführungsform das Zwischenspeichern einer Adressübersetzung und/oder das Leistungsverhalten des I/O-Cache in virtualisierten Umgebungen zu verbessern. Bei einer Ausführungsform können verschiedene Komponenten, die mit Bezug auf die 13 und 5 diskutiert worden sind, verwendet wer den, um einen oder mehrere der Arbeitsgänge auszuführen, die mit Bezug auf die 4 diskutiert werden.
  • Mit Bezug auf die 14 beginnt bei einem Arbeitsschritt 402 das Verfahren 400 damit, dass eine Speicherzugriffsanfrage empfangen wird. Zum Beispiel kann eine Speicherzugriffsanfrage (so wie nach einem Lese- oder Schreibzugriff) von einem der Endpunkte 224 erzeugt und von einer entsprechenden Virtualisierungslogik 220 durch einen der Ports 226 im Arbeitsschritt 402 empfangen werden. In einem Arbeitsschritt 404 kann festgestellt werden, ob ein Eintrag, der der Speicherzugriffsanfrage entspricht, in einem Cache vorhanden ist. Bei einer Ausführungsform kann die Virtualisierungslogik 222 auf den IOTLB 220, den RC-Cache 210 und/oder Kombinationen aus diesen (so wie in der 3 gezeigt) im Arbeitsscchritt 404 zugreifen. Wenn ein entsprechender Eintrag fehlt, können die Daten im Arbeitsschritt 406 in den Speicher geholt werden (z. B. durch die Virtualisierungslogik 222 und/oder die Vorabhollogik 216).
  • Bei einer Ausführungsform können entsprechende Daten vor dem Arbeitsschritt 402 von der Logik 216 vorab in den Speicher geholt worden sein. Bei einer Ausführungsform wird die Vorabhol-Anfrage von einer der Endpunkt-Baugruppen 224 ausgegeben, um kohärente Kopien des ins Ziel gefassten Adressortes vorab zu holen und zu halten. Diese Vorab-Anfragen würden es auch ermöglichen, den IOTLB 220, den RC-Cache 210 und/oder Kombinationen aus diesen warmlaufen zu lassen; die Einträge würden zugewiesen und zwischengespeichert, bis die Anfrage von der Baugruppe ausgegeben wird. Die ACH-Einstellungen der Anfrage würden festlegen, ob der Eintrag in dem IOTLB 220, dem RC-Cache 210 und/oder Kombinationen aus diesen gehalten oder zum Austausch gekennzeichnet werden muss.
  • In einem Arbeitsschritt 408 kann festgestellt werden (z. B. durch die Vitualisierungslogik 222), ob die Speicherzugriffsanfrage einen Hinweis umfasst (so wie ein oder mehrere Bits der Speicherzugriffsanfrage). Wenn keine Hinweise vorliegen, kann die Speicherzugriffsanfrage in einem Arbeitsschritt 410 verarbeitet werden, z. B. indem HPA- und GPA-Adressen und/oder physikalische/virtuelle Adressen durch Bezugnahme auf Einträge innerhalb des IOTLB 220, des RC-Cache 210 und/oder Kombinationen aus diesen übersetzt werden. Bei einer Ausführungsform kann das Zwischenspeichern der Adressübersetzung und/oder das Leistungsverhalten des I/O-Cache in virtualisierten Umgebungen basierend auf Hinweisen über den Verkehr der I/O-Baugruppe verbessert werden (was hierin als Zugriffssteuerhinwei se (ACHs – Access Control Hints) bezeichnet werden kann). Zum Beispiel können ACHs von einer I/O-Baugruppe (z. B. einem der Endpunkte 224) in der Speicheranfrage (z. B. über PCIe) geliefert werden, um anzugeben, ob die Baugruppe wieder auf dieselbe Adresse zugreifen würde. Demgemäß kann ein Arbeitsschritt 412 festlegen, ob der Hinweis einen zukünftigen Zugriff auf dieselbe Adresse angibt. Diese Information kann in einem oder mehreren Bits entsprechend einem Cache-Eintrag (z. B. einem Eintrag in dem IOTLB 220, dem RC-Cache 218 und/oder Kombinationen aus diesen) gespeichert werden, was bei Strategien für den Cachezeilen-Ersatz nützlich sein würde, zum Beispiel, wenn zwischengespeicherte Übersetzungen, ohne dass das Bit für eine geplante Wiederverwendung gesetzt wäre (oder gelöscht, abhängig von der Implementierung), Kandidaten für den Ersatz sein würden. Bei einer Ausführungsform kann die Logik 222 den Arbeitsschritt 412 ausführen. Wenn kein zukünftiger Zugriff angegeben wird, geht das Verfahren 400 mit dem Arbeitsschritt 410 weiter. Ansonsten kann die entsprechende Eintragsinformation im Arbeitsschritt 414 aktualisiert werden (z. B. kann/können ein oder mehrere Bits für einen entsprechenden Eintrag in dem IOTLB 220, dem RC-Cache 210 und/oder Kombinationen aus diesen von der entsprechenden Logik 222 aktualisiert werden). Nach dem Arbeitsschritt 414 wird das Verfahren 400 im Arbeitsschritt 410 wieder aufgenommen.
  • Bei manchen Ausführungsform kann das Zusammenführen des IOTLB 200 und des RC-Cache 210 in eine kombinierte Struktur aus IOTLB-Cache und RC-Cache (die hiernach als ein I/O-Cache bezeichnet werden kann) für ein verbessertes Leistungsverhalten (z. B. verbesserte Wartezeit bei I/O-Transaktionen) und/oder eine effektivere Ausnutzung der Silizium-Baufläche (z. B. die Gesamtanzahl der Gatter verringern) sorgen. Bei einer Ausführungsform würden Schnüffler (snoops), die von einem Prozessor (z. B. einem oder mehreren der Prozessoren 202) ausgesendet werden, in dem RC-Cache 210 (oder dem kombinierten I/O-Cache) nachschlagen, wobei die physikalischen Adressen verwendet werden, die I/O-Zugriffe würden die Adresse in dem RC-Cache 210 (oder dem kombinierten I/O-Cache) basierend auf der GPA nachschlagen.
  • Bei manchen Ausführungsformen können verschiedene Strategien für den Cache-Ersatz bei dem RC-Cache 210, dem IOTLB 220 und/oder der Kombination aus diesen angewendet werden. Zum Beispiel können manche Ersatzstrategien Zufallsersatzstrategien implementieren, während andere Strategien des am weitesten zurückliegenden Nutzens (LRU – Least Recently Used) implementieren können.
  • Demgemäß kann bei manchen Ausführungsformen die Wartezeit bei der Adressübersetzung und/oder die Wartezeit, die mit dem Bedienen von I/O-Anfragen verbunden ist, verringert werden. Auch kann das Zusammenführen von Speicher (z. B. für Adressen oder Daten)-Strukturen, die für den RC-Cache 210 und den IOTLB 220 verwendet werden (z. B. in einen einzigen I/O-Cache) einen verbesserten Siliziumnutzwert und ein besseres Leistungsverhalten oder bessere Siliziumfläche liefern (z. B. durch eine Verringerung der Gatterzahl).
  • Bei verschiedenen Ausführungsformen der Erfindung können die Arbeitsschritte, die hierin z. B. mit Bezug auf die 14 diskutiert sind, als Hardware (z. B. Schaltung), Software, Firmware, Mikrocode oder Kombinationen aus diesen implementiert werden, was als Computerprogrammprodukt zur Verfügung gestellt werden kann, das z. B. ein maschinenlesbares oder computerlesbares Medium umfasst, auf dem Befehle (oder Software-Prozeduren) gespeichert sind, die verwendet werden, um einen Computer zu programmieren, damit er einen hierin diskutierten Prozess auszuführt. Auch kann der Ausdruck "Logik" beispielhaft Software, Hardware oder Kombinationen aus Software und Hardware umfassen. Das maschinenlesbare Medium kann eine Speichervorrichtung, so wie die hierin diskutierten, umfassen.
  • Zum Beispiel kann eine Speichervorrichtung, wie sie hierin diskutiert ist, flüchtigen und/oder nicht flüchtigen Speicher (oder Speicherraum) umfassen. Der nicht flüchtige Speicher kann eines oder mehrere der folgenden umfassen: Nur-Lese-Speicher (ROM – Read Only Memory), programmierbaren ROM (PROM – Programmable ROM), löschbaren PROM (EPROM – Erasable PROM), elektrischen EPROM (EEPROM – Electrically EPROM), ein Festplattenlaufwerk, eine Floppy Disk, eine Compact Disk-ROM (CD-ROM), eine digitale Mehrzweckplatte (DVD – Digital Versatile Disk), Flashspeicher, eine magnetooptische Platte oder andere Typen nicht flüchtiger maschinenlesbarer Medien, die in der Lage sind, elektronische Daten (die Befehle umfassen) zu speichern. Flüchtiger Speicherraum (oder Speicher) kann Baugruppen umfassen so wie Speicher mit wahlfreiem Zugriff (RAM – Random Access Memory), dynamischen RAM (DRAM – Dynamic RAM), synchronen DRAM (SDRAM – Synchronous DRAM), statischen RAM (SRAM – Static RAM) usw.
  • Zusätzlich können derartige computerlesbare Medien als ein Computerprogrammprodukt heruntergeladen werden, wobei das Programm von einem entfernt stehenden Computer (z. B. einem Server) zu einem anfragenden Computer (z. B. einem Client) über Datensignale, die in einer Trägerwelle oder einem anderen sich fortpflanzenden Medium verkörpert sind, über eine Kommunikationsverbindung (z. B. einen Bus, ein Modem oder eine Netzwerkverbindung) übertragen wird.
  • Der Bezug in der Beschreibung auf "eine Ausführungsform" bedeutet, dass ein bestimmtes Merkmal, eine Struktur oder eine Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben worden ist, in wenigstens einer Implementierung enthalten sein kann. Das Auftreten des Satzteils "bei einer Ausführungsform" an verschiedenen Stellen in der Beschreibung kann sich immer auf dieselbe Ausführungsform beziehen oder nicht.
  • Auch können in der Beschreibung und in den Ansprüchen die Ausdrücke "gekoppelt" und "verbunden" zusammen mit ihren Ableitungen verwendet werden. Bei manchen Ausführungsformen der Erfindung kann "verbunden" verwendet werden, um anzugeben, dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt miteinander sind. "Gekoppelt" kann bedeuten, dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt sind. "Gekoppelt" kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander sein müssen, jedoch weiterhin miteinander zusammenarbeiten oder Wechselwirken.
  • Somit, obwohl Ausführungsformen der Erfindung in einer Sprache beschrieben worden sind, die für strukturelle Merkmale und/oder methodologische Vorgänge spezifisch ist, soll verstanden werden, dass der beanspruchte Gegenstand nicht durch die bestimmten Merkmale oder Vorgänge, die beschrieben sind, beschränkt sein darf. Stattdessen sind die bestimmten Merkmale und Vorgänge als beispielhafte Formen des Implementierens des beanspruchten Gegenstandes offenbart.

Claims (20)

  1. Vorrichtung, die aufweist: einen Cache, um einen oder mehrere Eintrage zu speichern, wobei jeder Eintrag einer Eingabe/Ausgabe (I/O – Input/Output)-Speicherzugriffsanfrage zwischen der physikalischen Adresse eines Gastes (GPA – Guest Physical Address) und der physikalischen Adresse eines Rosts (HPA – Host Physical Address) entspricht; und eine erste Logik, um eine erste I/O-Speicherzugriffsanfrage von einer Endpunkt-Baugruppe zu empfangen und um festzustellen, ob die erste I/O-Speicherzugriffsanfrage einen Hinweis auf einen zukünftigen Zugriff, der mit einer Adresse verknüpft ist, aufweist, wobei die erste Logik dazu dient, eine Aktualisierung bei einem oder mehreren Bits eines entsprechenden Cache-Eintrages als Antwort auf eine Feststellung, dass die erste I/O-Speicherzugriffsanfrage den Hinweis aufweist, hervorzurufen.
  2. Vorrichtung nach Anspruch 1, bei der die Endpunkt-Baugruppe dazu dient, die Speicherzugriffsanfrage zu erzeugen.
  3. Vorrichtung nach Anspruch 1, weiter mit einer Vorabhollogik, um vorab Daten in den Cache als Antwort auf eine Anfrage, die von der Endpunkt-Baugruppe ausgegeben wird, zu holen.
  4. Vorrichtung nach Anspruch 1, bei der die Endpunkt-Baugruppe eine Peripheral Component Interconnect (PCI) Express Baugruppe aufweist.
  5. Vorrichtung nach Anspruch 1, bei der der Hinweis auf einen zukünftigen Zugriff angibt, dass der zukünftige Zugriff auf die Adresse durchgeführt werden soll.
  6. Vorrichtung nach Anspruch 1, bei der eine oder mehrere aus erster Logik, einem oder mehreren Prozessorkernen oder der Cache sich auf einem gemeinsamen Chip für integrierte Schaltungen befinden.
  7. Vorrichtung nach Anspruch 1, bei der der Cache einen oder mehrere aus einem Root Complex-Cache, einem I/O-Übersetzungspuffer (IOTLB – Translation Look-Aside Buffer) oder Kombinationen aus diesen aufweist.
  8. Vorrichtung nach Anspruch 1, bei der der Cache ein gemeinsam genutzter oder ein privater Cache ist.
  9. Vorrichtung nach Anspruch 1, bei der der Cache einen oder mehrere aus einem Cache der Ebene 1 (L1 – Level 1), einem Cache der Ebene 2 (L2 – Level 2), einem Cache der Ebene 3 (L3 – Level 3), einem Cache auf mittlerer Ebene, einem Cache auf höchster Ebene (LLC – Last Level Cache) oder Kombinationen aus diesen aufweist.
  10. Vorrichtung nach Anspruch 1, weiter mit einem Root Port, um die erste Logik und die Endpunkt-Baugruppe zu koppeln.
  11. Verfahren, das aufweist: Empfangen einer ersten Eingabe/Ausgabe (I/O)-Speicherzugriffsanfrage von einer Endpunkt-Baugruppe; Speichern eines oder mehrerer Eintrage in einem Cache, wobei jeder Eintrag einer Eingabe/Ausgabe (I/O)-Speicherzugriffsanfrage zwischen der physikalischen Adresse eines Gastes (GPA) und der physikalischen Adresse eines Host (HPA) entspricht; und Bestimmen, ob die erste I/O-Speicherzugriffsanfrage einen Hinweis auf einen zukünftigen Zugriff aufweist, der mit einer Adresse verknüpft ist, wobei der Hinweis auf einen zukünftigen Zugriff angeben soll, dass der zukünftige Zugriff auf die Adresse geschehen soll.
  12. Verfahren nach Anspruch 1, das weiter das Aktualisieren eines oder mehrerer Bits eines entsprechenden Cacheeintrags als Antwort auf eine Feststellung, dass die erste I/O-Speicherzugriffsanfrage den Hinweis umfasst, aufweist.
  13. Verfahren nach Anspruch 11, das weiter das Ersetzen von Einträgen in dem Cache, die keinen Hinweis enthalten, vor Einträgen, die einen Hinweis enthalten, aufweist.
  14. Verfahren nach Anspruch 11, das weiter das Übersetzen von Adressen, die dem ersten I/O-Speicherzugriff entsprechen, aufweist.
  15. System, das aufweist: einen Speicher, um einen oder mehrere Einträge zu speichern; einen Cache, um einen oder mehrere Einträge zu speichern, die dem einen oder den mehreren Einträgen entsprechen, welche in dem Speicher gespeichert sind, wobei jeder Eintrag im Cache einer Eingabe/Ausgabe (I/O)-Speicherzugriffsanfrage zwischen der physikalischen Adresse eines Gastes (GPA) und der physikalischen Adresse eines Host (HPA) entspricht; und eine erste Logik, um eine erste I/O-Speicherzugriffsanfrage von einer Endpunkt-Baugruppe zu empfangen und um festzustellen, ob die erste I/O-Speicherzugriffsanfrage einen Hinweis auf einen zukünftigen Zugriff aufweist, der mit einer Adresse verknüpft ist, wobei die erste Logik dazu dient, eine Aktualisierung eines oder mehrerer Bits eines entsprechenden Cache-Eintrags als Antwort auf eine Feststellung, dass die erste I/O-Speicherzugriffsanfrage den Hinweis aufweist, hervorzurufen.
  16. System nach Anspruch 15, bei dem die Endpunkt-Baugruppe dazu dient, die Speicherzugriffsanfrage zu erzeugen.
  17. System nach Anspruch 15, weiter mit einer Vorabhollogik, um Daten vorab in den Cache als Antwort auf eine Anfrage, die von der Endpunkt-Baugruppe ausgegeben worden ist, zu holen.
  18. System nach Anspruch 15, bei dem die Endpunkt-Baugruppe eine Peripheral Component Interconnect (PCI) Express Baugruppe aufweist.
  19. System nach Anspruch 15, bei der der Hinweis auf einen zukünftigen Zugriff dazu dient, anzugeben, dass der zukünftige Zugriff auf die Adresse geschehen soll.
  20. System nach Anspruch 15, weiter mit einer Anzeigevorrichtung, die mit einem Nicht-Kern gekoppelt ist, der den Cache aufweist.
DE102008048421A 2007-09-28 2008-09-23 Zwischenspeichern einer Adressübersetzung und Verbesserung des Leistungsverhaltens eines I/O-Cache in virtualisierten Umgebungen Withdrawn DE102008048421A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/906,176 2007-09-28
US11/906,176 US8161243B1 (en) 2007-09-28 2007-09-28 Address translation caching and I/O cache performance improvement in virtualized environments

Publications (1)

Publication Number Publication Date
DE102008048421A1 true DE102008048421A1 (de) 2009-04-09

Family

ID=40418368

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008048421A Withdrawn DE102008048421A1 (de) 2007-09-28 2008-09-23 Zwischenspeichern einer Adressübersetzung und Verbesserung des Leistungsverhaltens eines I/O-Cache in virtualisierten Umgebungen

Country Status (5)

Country Link
US (2) US8161243B1 (de)
CN (2) CN101868786A (de)
DE (1) DE102008048421A1 (de)
RU (1) RU2483347C2 (de)
WO (1) WO2009045884A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT510716B1 (de) * 2011-04-08 2012-06-15 Albrecht Dipl Ing Kadlec Reiner allokations-cache für echtzeitsysteme

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707383B2 (en) 2006-11-21 2010-04-27 Intel Corporation Address translation performance in virtualized environments
US8161243B1 (en) 2007-09-28 2012-04-17 Intel Corporation Address translation caching and I/O cache performance improvement in virtualized environments
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
TWI506434B (zh) * 2010-03-29 2015-11-01 Via Tech Inc 預取單元、資料預取方法、電腦程式產品以及微處理器
CN103827776B (zh) 2011-09-30 2017-11-07 英特尔公司 通过pci高速组件减少功耗的活动状态功率管理(aspm)
US8904113B2 (en) * 2012-05-24 2014-12-02 International Business Machines Corporation Virtual machine exclusive caching
CN104077171B (zh) * 2013-03-28 2017-12-15 华为技术有限公司 调度虚拟机时的处理方法和设备
US9983893B2 (en) 2013-10-01 2018-05-29 Red Hat Israel, Ltd. Handling memory-mapped input-output (MMIO) based instructions using fast access addresses
US9916173B2 (en) * 2013-11-25 2018-03-13 Red Hat Israel, Ltd. Facilitating execution of MMIO based instructions
US20150286529A1 (en) * 2014-04-08 2015-10-08 Micron Technology, Inc. Memory device having controller with local memory
GB2528842B (en) * 2014-07-29 2021-06-02 Advanced Risc Mach Ltd A data processing apparatus, and a method of handling address translation within a data processing apparatus
US9846610B2 (en) 2016-02-08 2017-12-19 Red Hat Israel, Ltd. Page fault-based fast memory-mapped I/O for virtual machines
US10310547B2 (en) * 2016-03-05 2019-06-04 Intel Corporation Techniques to mirror a command/address or interpret command/address logic at a memory device
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10324858B2 (en) * 2017-06-12 2019-06-18 Arm Limited Access control
CN107341115B (zh) * 2017-06-30 2021-07-16 联想(北京)有限公司 虚拟机内存访问方法、系统和电子设备
CN108021518B (zh) * 2017-11-17 2019-11-29 华为技术有限公司 一种数据交互方法和计算设备
US10929310B2 (en) 2019-03-01 2021-02-23 Cisco Technology, Inc. Adaptive address translation caches
KR20230105441A (ko) 2022-01-04 2023-07-11 삼성전자주식회사 스토리지 시스템과 장치 및 그 동작 방법

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128703A (en) * 1997-09-05 2000-10-03 Integrated Device Technology, Inc. Method and apparatus for memory prefetch operation of volatile non-coherent data
US6009488A (en) 1997-11-07 1999-12-28 Microlinc, Llc Computer having packet-based interconnect channel
US6542968B1 (en) * 1999-01-15 2003-04-01 Hewlett-Packard Company System and method for managing data in an I/O cache
US6886085B1 (en) 2000-04-19 2005-04-26 International Business Machines Corporation Method and apparatus for efficient virtual memory management
US6789168B2 (en) * 2001-07-13 2004-09-07 Micron Technology, Inc. Embedded DRAM cache
US6981099B2 (en) * 2002-12-16 2005-12-27 Sun Microsystems, Inc. Smart-prefetch
US20040123278A1 (en) * 2002-12-23 2004-06-24 Murthi Nanja Persistent cache apparatus and methods
US6978351B2 (en) * 2002-12-30 2005-12-20 Intel Corporation Method and system to improve prefetching operations
US20040233146A1 (en) * 2003-05-21 2004-11-25 Nguyen Don J. Selective window display
US7941554B2 (en) * 2003-08-01 2011-05-10 Microsoft Corporation Sparse caching for streaming media
US20050149562A1 (en) 2003-12-31 2005-07-07 International Business Machines Corporation Method and system for managing data access requests utilizing storage meta data processing
US20050160229A1 (en) * 2004-01-16 2005-07-21 International Business Machines Corporation Method and apparatus for preloading translation buffers
US7930503B2 (en) * 2004-01-26 2011-04-19 Hewlett-Packard Development Company, L.P. Method and apparatus for operating multiple security modules
US7340582B2 (en) * 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
WO2006041471A2 (en) 2004-10-06 2006-04-20 Thomson Licensing Method and system for caching data
US7330940B2 (en) * 2005-02-02 2008-02-12 Hewlett-Packard Development Company, L.P. Method and system for cache utilization by limiting prefetch requests
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US8490065B2 (en) * 2005-10-13 2013-07-16 International Business Machines Corporation Method and apparatus for software-assisted data cache and prefetch control
US7395407B2 (en) * 2005-10-14 2008-07-01 International Business Machines Corporation Mechanisms and methods for using data access patterns
US7389400B2 (en) 2005-12-15 2008-06-17 International Business Machines Corporation Apparatus and method for selectively invalidating entries in an address translation cache
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)
US7716423B2 (en) * 2006-02-07 2010-05-11 International Business Machines Corporation Pseudo LRU algorithm for hint-locking during software and hardware address translation cache miss handling modes
US7669028B2 (en) * 2006-02-07 2010-02-23 International Business Machines Corporation Optimizing data bandwidth across a variable asynchronous clock domain
US7739474B2 (en) * 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
TW200802175A (en) * 2006-06-28 2008-01-01 Giga Byte Tech Co Ltd Hot-pluggable video display card and computer system using the same
US7707383B2 (en) 2006-11-21 2010-04-27 Intel Corporation Address translation performance in virtualized environments
US8161243B1 (en) 2007-09-28 2012-04-17 Intel Corporation Address translation caching and I/O cache performance improvement in virtualized environments

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT510716B1 (de) * 2011-04-08 2012-06-15 Albrecht Dipl Ing Kadlec Reiner allokations-cache für echtzeitsysteme
AT510716A4 (de) * 2011-04-08 2012-06-15 Albrecht Dipl Ing Kadlec Reiner allokations-cache für echtzeitsysteme

Also Published As

Publication number Publication date
RU2010104040A (ru) 2011-08-20
US8407422B2 (en) 2013-03-26
CN101398787A (zh) 2009-04-01
US20120203950A1 (en) 2012-08-09
CN101868786A (zh) 2010-10-20
WO2009045884A3 (en) 2009-06-25
RU2483347C2 (ru) 2013-05-27
WO2009045884A2 (en) 2009-04-09
US8161243B1 (en) 2012-04-17

Similar Documents

Publication Publication Date Title
DE102008048421A1 (de) Zwischenspeichern einer Adressübersetzung und Verbesserung des Leistungsverhaltens eines I/O-Cache in virtualisierten Umgebungen
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE60222402T2 (de) Verfahren und system zur spekulativen ungültigkeitserklärung von zeilen in einem cachespeicher
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
US6529968B1 (en) DMA controller and coherency-tracking unit for efficient data transfers between coherent and non-coherent memory spaces
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
US7707383B2 (en) Address translation performance in virtualized environments
DE202010018020U1 (de) Opportunistische Verbesserung einer MMIO-Anfrageabwicklung aufgrund eines Zielberichts von Raumerfordernissen
DE112010001467B4 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE112019000629B4 (de) Koordination von cacheoperationen
DE112010003758T5 (de) Instruktionen zum Verwalten einer parallelen Cache-Hierarchie
DE102013209643B4 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE112010002777T5 (de) Verzeichnis-Cache-Allokation basierend auf Snoop-Antwort-Informationen
DE102018006849A1 (de) Verfahren, Vorrichtung, System für frühe granulare Seitenhinweise anhand einer PCIE-Vorrichtung
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE102022107196A1 (de) Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten
DE112020000907B4 (de) Ungültigkeitserklärung eines adressübersetzungs-cache in einem mikroprozessor
DE102022104654A1 (de) Verfahren und einrichtung zum aktivieren eines cache (devpic) zum speichern von prozessspezifischen informationen innerhalb von vorrichtungen, die adressübersetzungsdienst (ats) unterstützen

Legal Events

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