-
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.
-
1–3 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 1–4 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 2–4 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 1–3 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 1–4 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 1–4 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.