-
Technisches Gebiet
-
Diese Erfindung betrifft das Gebiet der Prozessoren und betrifft insbesondere schnelle Zwischen- oder Pufferspeicherstrukturen bzw. Cache-Speicherstrukturen in Prozessoren.
-
Hintergrund der Erfindung
-
Prozessoren beinhalten typischerweise eine virtuelle Adressierung und besitzen typischerweise Cache- bzw. schnelle Zwischen- oder Pufferspeicher zum Ablegen von Daten und/oder Instruktionen, auf die kürzlich zugegriffen wurde. Typischerweise erzeugt der Prozessor eine virtuelle Adresse einer Speicherstelle, auf die zuzugreifen ist (d.h. zum Lesen oder Schreiben), und die virtuelle Adresse wird in eine physikalische Adresse umgewandelt bzw. übersetzt, um zu bestimmen, ob der Zugriff den Zwischenspeicher betrifft. Insbesondere wird der Zugriff auf den Zwischenspeicher typischerweise parallel mit der Übersetzung begonnen, und die Übersetzung wird verwendet, um zu erkennen, ob der Zugriff auf den Zwischenspeicher diesen betrifft bzw. ein Treffer ist.
-
Der Zwischenspeicherzugriff ist typischerweise einer der zeitkritischen Signalwege in dem Prozessor, und die Zwischenspeicherwartezeit ist ebenso typischerweise kritisch für das Leistungsvermögen, das von dem Prozessor erreichbar ist. Daher versuchen Entwurfsingenieure für Prozessoren häufig, die Gestalt ihrer Zwischenspeicher/Übersetzungen zu optimieren, um damit die Zwischenspeicherwartezeit zu reduzieren und die Zeitablauferfordernisse zu erfüllen. Jedoch können viele dieser Optimierungsverfahren die Leistungsaufnahme der Zwischenspeicher/Übersetzungsschaltung erhöhen. In vielen Prozessoren kann die Zwischenspeicher/Übersetzungsschaltung den größten Beitrag zur Gesamtleistungsaufnahme des Prozessors bilden.
-
Da sich die Leistungsaufnahme der Prozessoren im Laufe der Zeit erhöht hat, wächst auch die Wichtigkeit zum Steuern der Prozessorleistungsaufnahme (und für das Gestalten von Prozessoren mit geringerer Leistungsaufnahme) an. Da die Zwischenspeicher/Übersetzungsschaltung oft wesentlich zur Leistungsaufnahme eines Prozessors beiträgt, sind Verfahren zum Reduzieren der Leistungsaufnahme der Zwischenspeicher/Übersetzungsschaltung zunehmend wünschenswert.
-
Um das Leistungsverhalten zu verbessern, werden in Prozessoren häufig teilassoziative Zwischenspeicher eingerichtet. In einem teilassoziativen Zwischenspeicher wählt eine vorgegebene Adresse, die den Zwischenspeicher betrifft, einen Satz aus zwei oder mehreren Zwischenspeicherzeilenspeicherplätzen, die zur Speicherung der Speicherzeile verwendet werden, die durch diese Adresse gekennzeichnet ist, aus. Die Zwischenspeicherzeilenplätze in dem Satz werden als die Wege des Satzes bzw. Teilmenge bezeichnet, und ein Zwischenspeicher mit W Wegen wird als W-fach-Weg teilassoziativer Speicher (wobei W eine Ganzzahl größer als eins ist) bezeichnet. Teilassoziative Zwischenspeicher besitzen typischerweise höhere Geschwindigkeiten als direkt zugeordnete Zwischenspeicher der gleichen Größe, und können daher ein besseres Leistungsverhalten als direkt zugeordnete Zwischenspeicher liefern. Jedoch können konventionelle teilassoziative Zwischenspeicher typischerweise auch mehr Leistung als direkt zugeordnete Zwischenspeicher der gleichen Größe aufnehmen. Typischerweise umfasst der Zwischenspeicher einen Datenspeicher, der die kürzlich aufgerufenen Daten enthält, und einen Etikettenspeicher, der eine Etikettenkennung der Adresse der zwischengespeicherten Daten enthält.
-
In einem konventionellen teilassoziativen Zwischenspeicher wird auf jeden Weg des Datenspeichers und des Etikettenspeichers in Reaktion auf eine eingespeiste Adresse zugegriffen. Die Etiketten, die jedem Weg in dem Satz bzw. der Menge entsprechen, können verglichen werden, um zu bestimmen, welcher Weg von der Adresse (falls überhaupt) bezeichnet wird, und die Daten aus dem entsprechenden Weg werden zur Ausgabe durch den Zwischenspeicher ausgewählt. Somit kann auf jeden Weg des Datenspeichers und des Etikettenspeichers zugegriffen werden, wodurch Leistung erforderlich ist. Da ferner der Zwischenspeicherzugriff häufig ein zeitkritischer Weg ist, können der Etikettenspeicher und der Datenspeicherzugriff im Hinblick auf den Zeitablauf und die Wartedauer optimiert werden, wodurch vermehrt eine Leistungsaufnahme erforderlich ist. Weiterhin werden die Zwischenspeicher typischerweise mit der physikalischen Adresse etikettiert, und somit ist typischerweise die Übersetzungsschaltung in dem kritischen Pfad angesiedelt und damit für den Zeitablauf und die Wartedauer optimiert, wodurch die Leistungsaufnahme in der Übersetzungsschaltung weiter ansteigen kann.
-
Aus der
US 6,212,602 B1 ist ein Zwischenspeicherspeichersystem mit einem Zwischenspeicher und einer Zwischenspeicheretikette bekannt. Ein Zwischenspeicheretikettenzwischenspeicher wird bereitgestellt, um eine Teilmenge der zuletzt oder am häufigsten verwendeten Zwischenspeicheretiketten zu speichern. Auf den Zwischenspeicheretikettenzwischenspeicher wird während Etikettenanfragen in einer Weise zugegriffen, die ähnlich den konventionellen Zwischenspeicheretikettenanfragen ist. Die Zwischenspeicheretikettenzwischenspeichereinheit empfängt physikalische Adressen und vergleicht die empfangene Adresse mit gespeicherten Adressen.
-
ÜBERBLICK ÜBER DIE ERFINDUNG
-
Der Erfindung liegt die Aufgabe zugrunde, die Leistungsaufnahme zu reduzieren und eine kohärente Etikettenhandhabung zu ermöglichen.
-
Diese Aufgabe wird durch die unabhängig beanspruchte Erfindung gelöst.
-
Bevorzugte Ausgestaltungen sind in den Unteransprüchen angegeben.
-
In einer Ausführungsform umfasst ein Prozessor einen Cache- bzw. Zwischenspeicher, einen ersten Übersetzungs- bzw. Translationsneben(lookaside)puffer (TLB) und eine Etikettenschaltung, die mit dem ersten TLB verbunden ist. Der Zwischenspeicher umfasst einen Datenspeicher, der zur Speicherung mehrerer Zwischenspeicherzeilen ausgebildet ist, und einen Etikettenspeicher, der zur Speicherung mehrerer Etiketten ausgebildet ist. Jede der mehreren Etiketten entspricht einer der mehreren Zwischenspeicherzeilen. Der erste TLB ist ausgebildet, mehrere Seitenbereiche virtueller Adressen zu speichern, die mehrere virtuelle Seiten kennzeichnen, für die die physikalischen Adressenübersetzungen in dem ersten TLB gespeichert sind. In Reaktion auf einen Treffer durch eine erste virtuelle Adresse in dem ersten TLB und einem Treffer durch die erste virtuelle Adresse in der Etikettenschaltung ist die Etikettenschaltung ausgebildet, ein Auslesen aus dem Etikettenspeicher in dem Zwischenspeicher zu verhindern.
-
In einer weiteren Ausführungsform wird ein Verfahren beschrieben. Es wird auf einen ersten TLB mit einer ersten virtuellen Adresse zugegriffen. Der erste TLB ist ausgebildet, mehrere Seitenbereiche virtueller Adressen zu speichern, die mehrere virtuelle Adressen kennzeichnen, für die die physikalischen Adressenübersetzungen in dem ersten TLB gespeichert werden. In Reaktion auf einen Treffer durch die erste virtuelle Adresse in dem ersten TLB wird auf eine Etikettenschaltung zugegriffen. Die Etikettenschaltung ist ausgebildet, mehrere Zwischenspeicherzeilen zu kennzeichnen, die in einem Zwischenspeicher gespeichert sind und innerhalb der mehreren virtuellen Seiten liegen. Ein Treffer wird durch die erste virtuelle Adresse in dem ersten TLB und der Etikettenschaltung erkannt. In Reaktion auf den Treffer durch die erste virtuelle Adresse in dem ersten TLB und der Etikettenschaltung wird ein Auslesen aus einem Etikettenspeicher in dem Zwischenspeicher verhindert.
-
In einer noch weiteren Ausführungsform umfasst ein Prozessor einen Zwischenspeicher und eine Etikettenschaltung. Der Zwischenspeicher umfasst einen Datenspeicher, der zur Speicherung mehrerer Zwischenspeicherzeilen ausgebildet ist, und einen Etikettenspeicher, der zur Speicherung mehrerer Etiketten ausgebildet ist. Jede der mehreren Etiketten entspricht einer der mehreren Zwischenspeicherzeilen. Die Etikettenschaltung ist ausgebildet, einen Treffer in dem Zwischenspeicher durch eine erste virtuelle Adresse für eine Teilmenge der mehreren Zwischenspeicherzeilen zu erkennen. In Reaktion auf einen Treffer durch die erste virtuelle Adresse in der Etikettenschaltung ist die Etikettenschaltung ausgebildet, ein Auslesen aus dem Etikettenspeicher zu verhindern, wobei der Datenspeicher ausgebildet ist, zumindest einen Teil einer ersten Zwischenspeicherzeile, die der ersten virtuellen Adresse entspricht, auszugeben.
-
Figurenliste
-
Die folgende detaillierte Beschreibung nimmt Bezug auf die begleitenden Zeichnungen, die nachfolgend kurz beschrieben sind.
- 1 ist eine Blockansicht eines Teils einer Ausführungsform eines Prozessors.
- 2 ist eine Blockansicht einer Ausführungsform eines Übersetzungs- und Filterblocks, der in 1 gezeigt ist.
- 3 ist ein Zeitablaufdiagramm, das eine Ausführungsform einer Pipeline zeigt, die durch eine Ausführungsform des Prozessors eingerichtet werden kann.
- 4 ist eine Blockansicht einer Ausführungsform einer Mikro-TLB-Etikettenschaltung.
- 5 ist eine Blockansicht einer Ausführungsform einer Wahrheitstabelle, die einer in 4 gezeigten Steuerschaltung entspricht.
- 6 ist eine Blockansicht einer Ausführungsform einer Mikro-TLB-Datenschaltung.
- 7 ist eine Blockansicht einer Ausführungsform einer Mikro-Etikettenschaltung.
- 8 ist ein Flussdiagramm, das die Funktionsweise einer Ausführungsform der in 2 gezeigten Blöcke darstellt.
- 9 ist eine Blockansicht einer Ausführungsform einer Wegevorhersageeinheit, der in 1 gezeigt ist.
- 10 ist ein Flussdiagramm, das eine Ausführungsform zum Auswählen eines Ersatzweges in Reaktion auf ein Verfehlen des Zwischenspeichers zeigt.
- 11 ist eine Blockansicht einer Ausführungsform eines Teils des Cache-Datenspeichers, der in 1 gezeigt ist.
- 12 ist eine Blockansicht einer zweiten Ausführungsform eines Teils des in 1 gezeigten Datenzwischenspeichers.
- 13 ist eine Blockansicht einer dritten Ausführungsform eines Teils des in 1 gezeigten Datenzwischenspeichers.
- 14 ist ein Flussdiagramm, das eine Ausführungsform zum Erzeugen einer Wegevorhersage darstellt.
- 15 ist eine Blockansicht einer Ausführungsform eines Computersystems mit dem in 1 gezeigten Prozessor.
- 16 ist eine Blockansicht einer zweiten Ausführungsform eines Computersystems mit dem in 1 gezeigten Prozessor.
-
Obwohl die Erfindung diversen Modifizierungen und Alternativen unterliegen kann, sind dennoch spezielle Ausführungsformen beispielsweise in den Zeichnungen dargestellt und hierin im Detail beschrieben. Es sollte jedoch beachtet werden, dass die Zeichnungen und die detaillierte Beschreibung nicht beabsichtigen, die Erfindung auf die spezielle offenbarte Form einzuschränken, sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente und Alternativen abdecken, die innerhalb des Grundgedankens und des Schutzbereichs der vorliegenden Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert ist.
-
BESCHREIBUNG DER ERFINDUNG
-
In 1 ist eine Blockansicht eines Teils einer Ausführungsform eines Prozessors 10 gezeigt. In der dargestellten Ausführungsform umfasst der Prozessor 10 eine Adressenerzeugungseinheit (AGU) 12, eine Wegevorhersageeinheit 14, einen Datencache- bzw. Datenzwischenspeicher 16 und eine Übersetzungs- bzw. Translations/Filterschaltung 18. Der Datenzwischenspeicher 16 umfasst einen Datenpufferdatenspeicher bzw. einen Cache-Datenspeicher 20 und einen Datenpufferetikettenspeicher bzw. einen Cache-Etikettenspeicher 22. Die AGU 12 und die Wegevorhersageeinheit 14 sind angeschlossen, um Adressenoperanden zu empfangen. Die AGU 12 ist ausgebildet, eine virtuelle Adresse (VA) zu erzeugen und ist angeschlossen, die virtuelle Adresse zu der Wegevorhersageeinheit 14, dem Datenspeicher 16 (und insbesondere dem Cache-Datenspeicher 20 und dem Cache-Etikettenspeicher 22) und der Übersetzungs/Filterschaltung 18 zuzuführen. Die Wegevorhersageeinheit 14 ist angeschlossen, um eine Wegevorhersage an den Cache-Datenspeicher 20 zu senden, der ausgebildet ist, Daten in Reaktion auf die Wegevorhersage und die virtuelle Adresse weiterzuleiten. Die Wegevorhersageeinheit 14 ist ferner angeschlossen, um eine frühe Nichttrefferkennzeichnung bereitzustellen. Die Übersetzungs/Filterschaltung 18 ist mit dem Datenzwischenspeicher 16 verbunden, und ist angeschlossen, um eine Trefferkennzeichnung für einen Übersetzungsneben(lookaside)puffer (TLB) bereitzustellen. Der Datenzwischenspeicher 16 ist ausgebildet, eine Nichttrefferanzeige für einen Zwischenspeicher zu erzeugen.
-
Die AGU 12 ist angeschlossen, um die Adressenoperanden für eine Speicheroperation zu empfangen und ist ausgebildet, eine virtuelle Adresse in Reaktion auf die Adressenoperanden zu erzeugen. Beispielsweise kann die AGU 12 eine Addierschaltung aufweisen, die ausgebildet ist, die Adressenoperanden zu addieren, um die virtuelle Adresse zu erzeugen. Im hierin verwendeten Sinne können Speicheroperationen Einladeoperationen (die eine Speicherstelle auslesen) und Speicheroperationen (die in eine Speicherstelle schreiben) beinhalten. Speicheroperationen können einen impliziten Teil einer Anweisung bilden, die in einigen Ausführungsformen einen Speicheroperanden spezifiziert, oder diese können eine explizite Operation sein, die in Reaktion auf das Einladen oder Speichern einer Anweisung ausgeführt wird (was manchmal auch als eine Move-Anweisung bezeichnet wird). Adressenoperanden können Operanden der Instruktion sein, die der Speicheroperation entspricht, die definiert sind, um zum Erzeugen der Adresse des Speicheroperanden verwendet zu werden. Adressenoperanden können eines oder mehrere der folgenden Elemente enthalten: Registerwerte von Registern, die von dem Prozessor 10 eingerichtet sind, Versetzungs- bzw. Offsetdaten, die in der Instruktion codiert sind, und in einigen Ausführungsformen eine segmentierte Basisadresse von einem Segmentierungsmechanismus, der von dem Prozessor 10 eingerichtet ist. Eine virtuelle Adresse kann eine von den Adressenoperanden einer Instruktion erzeugte Adresse beinhalten, die noch nicht durch den Seitenübersetzungsmechanismus in eine physikalische Adresse übersetzt wurde (die zum Adressieren des Speichers in einem Computersystem verwendet wird, das den Prozessor 10 enthält). Beispielsweise kann in einer Ausführungsform der Prozessor 10 die ×86-Instruktionssatzarchitektur aufweisen (auch als IA-32 bekannt). In einer derartigen Ausführungsform kann die lineare Adresse beispielsweise eine virtuelle Adresse sein. Wenn ein Seitenübersetzung nicht aktiviert ist, kann die virtuelle Adresse gleich der physikalischen Adresse sein.
-
Der Seitenmechanismus, der von dem Prozessor 10 eingerichtet ist, übersetzt virtuelle Adressen in physikalische Adressen mit der Auflösung einzelner Seiten. Das heißt, es kann mehr als einen Übersetzungseintrag geben, der für jede virtuelle Adresse in der Seite verwendet wird, um die entsprechende physikalische Adresse zu kennzeichnen. Die Seite kann von beliebiger Größe sein. Beispielsweise sind 4 Kilobytes eine typische Größe. Der ×86-Instruktionssatz spezifiziert ferner eine 2 Megabyteseitengröße und eine 4 Megabyteseitengröße in einigen Betriebsmodi. Die am wenigsten signifikanten Bits von virtuellen Adressen definieren einen Offset innerhalb der Seite und werden durch den Seitenmechanismus nicht übersetzt. Beispielsweise bilden bei einer 4 Kilobyteseitengröße die letzten signifikanten 12 Bits der virtuellen Adressen den Seitenoffset bzw. Seitenabstand. Die verbleibenden Bits einer virtuellen Adresse ohne den Seitenoffset können den Seitenbereich der virtuellen Adresse bilden. Der Seitenbereich kann in dem Seitenmechanismus verwendet werden, um eine Übersetzung der physikalischen Adresse für die virtuelle Adresse auszuwählen. Anders ausgedrückt, der Seitenbereich der virtuellen Adresse kann eine virtuelle Seite definieren, die mittels der physikalischen Adressenübersetzung in eine physikalische Seite übersetzt wird.
-
Der Prozessor 10 kann ein oder mehrere Verfahren aufweisen, um die Leistungsaufnahme zu verringern. Zum Beispiel kann die Übersetzungs/Filterschaltung 18 einen relativ kleinen TLB (der auch im Weiteren als Mikro-TLB bezeichnet wird) und eine Etikettenschaltung (die im Weiteren auch als Mikro-Etikettenschaltung bezeichnet wird) aufweisen. Die Mikro-Etikettenschaltung kann ausgebildet sein, um eine relativ kleine Anzahl an Etiketten von Zwischenspeicherzeilen zu speichern, die: (i) in den virtuellen Seiten, für die der Mikro-TLB Übersetzungen aufweist, liegen; und (ii) in dem Datenzwischenspeicher 16 gespeichert sind.
-
Der Mikro-TLB kann in Reaktion auf eine virtuelle Adresse angesprochen werden, und wenn ein Treffer für den Mikro-TLB erkannt wird, kann ein Zugriff auf einen größeren Haupt-TLB (oder mehrere TLBs) in der Übersetzungs/Filterschaltung 18 vermieden werden. Die Leistung, die beim Zugriff auf den Haupt-TLB erforderlich wäre, kann in einem derartigen Falle eingespart werden. Wenn ferner ein Treffer für den Mikro-TLB erkannt wird, kann auf die Mikro-Etikette zugegriffen werden. Wenn ein Treffer für die Mikro-Etikette erkannt wird, kann ein Lesevorgang des Cache-Etikettenspeichers 22 zum Bestimmen eines Treffers/Nichttreffers ebenso vermieden werden (und somit kann die Leistung, die beim Zugriff auf den Cache-Etikettenspeicher 22 verbraucht würde, ebenso eingespart werden). In jedem Fall (d.h. bei einem Treffer in dem Mikro-Etikettenspeicher oder einem Treffer in dem Cache-Etikettenspeicher 22) können die Daten, die vom Zugriff auf die Zwischenspeicherzeile herrühren, von dem Cache-Datenspeicher 20 weitergeleitet werden. Somit dient der Mikro-TLB als ein Filter für Zugriffe auf den Haupt-TLB, und der Mikro-TLB und der Mikro-Etikettenspeicher dienen als ein Filter für Zugriffe auf den Cache-Etikettenspeicher 22.
-
Eine Technik zur Leistungseinsparung, die in dem Prozessor 10 eingerichtet sein kann, nutzt die Wegevorhersageeinheit 14 für Ausführungsformen, in denen der Datenzwischenspeicher 16 teilassoziativ ist. Die Wegevorhersageeinheit 14 erzeugt eine Wegevorhersage für den Cache-Datenspeicher 20 für eine Speicheroperation, die auf den Datenzwischenspeicher 16 zugreift. In Reaktion auf die Wegevorhersage und die virtuelle Adresse kann der Cache-Datenspeicher 20 Daten (Datenweiterleitung in 1) zu diversen Prozessorschaltungen, die die Daten verwenden (in 1 nicht gezeigt) weiterleiten. Die aus dem Cache-Datenspeicher 20 ausgelesenen und weitergeleiteten Daten können eine Zwischenspeicherzeile oder einen Teil einer Zwischenspeicherzeile beinhalten. Da Daten in Reaktion auf die Wegevorhersage weitergeleitet werden, ist die Übersetzungsschaltung und die Zwischenspeicheretikettenschaltung nun nicht mehr ein Teil des kritischen Pfades in dem Prozessor 10. In einigen Ausführungsformen können die Übersetzungsschaltung und die Zwischenspeicheretikettenschaltung eingerichtet werden, indem Schaltungen verwendet werden, die eine geringere Leistungsaufnahme besitzen, selbst wenn eine gewisse Verarbeitungszeit in der Schaltung erforderlich ist. Optional kann es zulässig sein, dass die Filterstrukturen, etwa der Mikro-TLB und die Mikroetikette die Wartezeit der Übersetzungsschaltung und die Zwischenspeicheretikettenvergleiche vergrößern (und damit ferner die Gesamtleistungsaufnahme verringern, indem der Zugriff auf die TLB-Strukturen und dem Cache-Etikettenspeicher 22 reduziert werden). Des Weiteren kann die Wegevorhersageeinheit 14 verwendet werden, um die Leistungsaufnahme des Prozessors 10 zu reduzieren, indem in dem Cache-Datenspeicher 20 eine reduzierte Leistungsaufnahme zulässig ist. Diverse Gestaltungsvarianten für den Cache-Datenspeicher 20 sind detaillierter nachfolgend mit Bezug zu 9 beschrieben.
-
Die Wegevorhersage kann als zulässig eingestuft werden, indem der Mikro-TLB/Mikro-Etikettenspeicher der Übersetzungs/Filterschaltung 18 und/oder ein Etikettenvergleich mit einer oder mehreren Etiketten aus dem Cache-Etikettenspeicher 22 eingesetzt werden. Wenn die Wegevorhersage korrekt ist, kann der weitere Betrieb mit dem von dem Cache-Datenspeicher 20 in Reaktion auf die Wegevorhersage weitergeleiteten Daten fortgesetzt werden. Wenn andererseits die Wegevorhersage nicht korrekt ist, kann die Speicheroperation erneut versucht werden. Alternativ kann in einigen Ausführungsformen der Datenzwischenspeicher 16 das Ersetzen so steuern, dass, wenn die Wegevorhersage nicht korrekt ist, die Adresse ein Nichttreffer für den Datenzwischenspeicher 16 ist. In einigen Ausführungsformen kann die korrekte Wegevorhersage während der Validisierung der Wegevorhersage bestimmt werden, und es kann auf dem korrekten Weg während eines erneuten Versuches zugegriffen werden. In anderen Ausführungsformen können während des Neuversuches die nicht vorhergesagten Wege nach einem Treffer abgesucht werden (beispielsweise kann eine konventionelle teilassoziative Tabellierung in dem Datenzwischenspeicher 16 ausgeführt werden). Der erneute Versuch kann in einer Vielzahl von Arten erreicht werden. Beispielsweise kann in einigen Ausführungsformen ein Puffer Instruktionen speichern, die für die Ausführung ausgegeben würden (beispielsweise eine Ablauforganisation oder eine Reservierungsstation). Die Speicheroperation kann von dem Puffer erneut ausgegeben werden. In anderen Ausführungsformen kann die Instruktion, die der Speicheroperation entspricht, und nachfolgende Instruktionen erneut abgefragt werden (beispielsweise von einem InstruktionsZwischenspeicher oder von dem Speicher).
-
In einigen Ausführungsformen kann die Verwendung der Wegevorhersageeinheit 14 die Leistungsaufnahme in dem Cache-Etikettenspeicher 22 verringern. Um die Wegevorhersage zu validisieren, muss lediglich auf die Etikette in dem vorhergesagten Weg zugegriffen werden und diese verglichen werden. In einigen Ausführungsformen wird daher lediglich auf den vorhergesagten Weg in dem Cache-Etikettenspeicher 22 zugegriffen (wenn ein Nichttreffer in dem Mikro-Etikettenspeicher erkannt wird, und somit wird ein Zugriff auf den Cache-Etikettenspeicher 22 ausgeführt, um zu erkennen, ob ein Nichttreffer für den Zwischenspeicher auftritt oder nicht). Wenn ein Nichttreffer in dem vorhergesagten Weg erkannt wird, wird die Speicheroperation erneut versucht, wie dies zuvor beschrieben ist. In derartigen Ausführungsformen kann der Cache-Etikettenspeicher 22 die Wegevorhersage empfangen, wie dies durch den gepunkteten Pfeil in 1 dargestellt ist.
-
Die Wegevorhersageeinheit 14 kann ferner eine frühe Anzeige für einen Nichttreffer bereitstellen, wenn keine Wegevorhersage für eine vorgegebene Speicheroperation erzeugt wird. Die Wegevorhersageeinheit kann ferner einen Speicher aufweisen, der eine Kennzeichnung der in jedem Weg des Zwischenspeichers gespeicherten Adresse beinhaltet, und kann die Kennzeichnung mit einer entsprechenden Kennzeichnung der virtuellen Adresse der Speicheroperation vergleichen, um die Wegevorhersage der Speicheroperation zu erzeugen. Wenn die entsprechende Kennzeichnung nicht mit den Kennzeichnungen in der Wegevorhersageeinheit übereinstimmt, so wird keine Wegevorhersage getroffen (und es wird ein Nichttreffer erkannt). Die frühe Kennzeichnung eines Nichttreffers kann als ein Hinweis für einen L2-Zwischenspeicher verwendet werden (wobei der Datenzwischenspeicher 16 als der L1-Zwischenspeicher bzw. Cache dient), dass ein Nichttreffer in dem Datenzwischenspeicher 16 auftritt und somit der L2-Zwischenspeicher berechtigt ist, einen Zugriff früher zu beginnen, als auf einen Nichttreffer des Zwischenspeichers von der Übersetzungs/Filterschaltung 18 zu warten.
-
Der Datenzwischenspeicher 16 kann einen Nichttreffer für den Zwischenspeicher kennzeichnen und die Übersetzungs/Filterschaltung 18 kann einen Nichttreffer für den TLB für andere Schaltungen in dem Prozessor 10 für Korrekturaktivitäten kennzeichnen (beispielsweise durch Absuchen einer Tabelle, um in den TLBs gespeicherte Übersetzungen aufzufinden, eine Auffüllung des Zwischenspeichers, um die fehlende Zwischenspeicherzeile in den Datenzwischenspeicher 16 zu füllen, etc.). Schaltungen zur Durchsuchung von Tabellen und zum Zugreifen auf den Speicher, zur Abrufung einer fehlenden Zwischenspeicherzeile, sind in 1 nicht gezeigt.
-
In der dargestellten Ausführungsform kann der Datenzwischenspeicher 16 teilassoziativ sein. In anderen Ausführungsformen kann dieser vollständig assoziativ sein, und die Wegevorhersageeinheit 14 kann verwendet werden, um einen Treffer für einen beliebigen Eintrag in dem Datenzwischenspeicher 16 vorherzusagen. In Ausführungsformen, in denen die Wegevorhersageeinheit 14 nicht eingerichtet ist, können andere Konfigurationen vorgesehen sein (beispielsweise direkt abgebildet bzw. zugeordnet). Im hierin verwendeten Sinne kann eine Zwischenspeicherzeile eine Reihe zusammenhängender Bytes sein, die die Einheit zum Zuordnen/Freigeben von Speicherplatz in dem Zwischenspeicher ist (beispielsweise ein Datenzwischenspeicher oder ein InstruktionsZwischenspeicher). Beispielsweise kann eine Zwischenspeicherzeile 32 zusammenhängende Bytes oder 64 zusammenhängende Bytes aufweisen, obwohl eine beliebige Größe für die Zwischenspeicherzeile vorgesehen sein kann. Der Cache-Datenspeicher 20 kann mehrere Einträge aufweisen, wovon jeder als eine Zwischenspeicherzeile konfiguriert ist. Die Einträge können in Sätzen oder Mengen aus W-Zwischenspeicherzeilen für teilassoziative Ausführungsformen angeordnet sein. Der Cache-Etikettenspeicher 22 umfasst ebenso mehrere Einträge, wovon jeder ausgebildet ist, eine Etikette für einen entsprechenden Eintrag in dem Cache-Datenspeicher 20 zu speichern. Die Einträge des Cache-Etikettenspeichers 22 können in Gruppen mit der Anzahl W angeordnet sein, entsprechend der Anordnung des Cache-Datenspeichers 20.
-
In einigen Ausführungsformen kann der Datenzwischenspeicher 16 physikalisch etikettiert sein (d.h. die Etiketten in dem Cache-Etikettenspeicher 22 können physikalische Adressen sein). Im Allgemeinen kann ein Treffer in dem Datenzwischenspeicher 16 erkannt werden, wenn die Daten entsprechend einer gegebenen physikalischen Adresse in dem Datenzwischenspeicher 16 gespeichert sind. Wenn die Daten, die der gegebenen physikalischen Adresse entsprechen, nicht in dem Datenzwischenspeicher 16 gespeichert sind, wird ein Nichttreffer erkannt. Jedoch kann es in einigen Fällen günstig sein, eine virtuelle Adresse, die in dem Datenzwischenspeicher 16 liegt, zu berücksichtigen, selbst wenn der Datenzwischenspeicher 16 physikalisch etikettiert ist. Eine virtuelle Adresse kann ein Treffer in dem Datenzwischenspeicher 16 sein, wenn die entsprechende physikalische Adresse (in die sich die virtuelle Adresse übersetzt) ein Treffer ist. In einigen Fällen kann die virtuelle Adresse als ein Treffer erkannt werden, ohne dass tatsächlich die entsprechende physikalische Adresse verwendet wird (beispielsweise in der Mikro-Etikette, die nachfolgend detailliert erläutert ist).
-
Im Allgemeinen kann der Prozessor 12 andere Schaltungen entsprechend der gewünschten Gestaltung aufweisen. In diversen Ausführungsformen kann der Prozessor 10 superskalarer oder skalarer Rechner sein, oder kann geordnete Instruktionsausführung oder ungeordnete Instruktionsausführung, etc. aufweisen, und kann Schaltungen enthalten, um die vorhergehenden Merkmale einzurichten. In einigen Ausführungsformen kann beispielsweise mehr als eine AGU 12 vorgesehen sein und kann virtuelle Adressen parallel erzeugen. Die Wegevorhersageeinheit 14, der Datenzwischenspeicher 16 und die Übersetzungs/Filterschaltung 18 können Schaltungen beinhalten, um mehrere virtuelle Adressen parallel in derartigen Ausführungsformen zu handhaben, oder können Schaltungen zum anderweitigen Handhaben der mehreren virtuellen Adressen aufweisen.
-
Zu beachten ist, dass, obwohl die Wegevorhersageeinheit 14 und die Mikro-TLB/Mikro-Etikettenfunktionalität der Übersetzungs/Filterschaltung 18 so beschrieben sind, dass diese zusammen verwendet werden, um die geringere Leistungsaufnahme zu erzeugen, auch Ausführungsformen eingeschlossen sind, die die Wegevorhersageeinheit 14 ohne Einrichten des Mikro-TLB/Mikro-Etikette vorsehen. Des Weiteren sind Ausführungsformen betrachtet, in denen die Mikro-TLB/Mikro-Etikette ohne die Wegevorhersageeinheit 14 eingerichtet sind (beispielsweise durch Verzögern der Datenweiterleitung von dem Datenzwischenspeicher 16, bis eine Wegeauswahl erfolgt ist). Beispielsweise kann die Mikro-Etikette in einigen Ausführungsformen eine Wegeauswahl für einen darin erkannten Treffer ausgeben.
-
Es ist zu beachten, dass, obwohl die Mikro-TLB/Mikro-Etikettenschaltung und die Wegevorhersageeinheit 14 so dargestellt sind, dass sie mit einem Datenzwischenspeicher verwendet werden, der Mikro-TLB, die Mikro-Etikettenschaltung und/oder die Wegevorhersageeinheit 14 zusammen mit einem InstruktionsZwischenspeicher nach Bedarf in dem Prozessor verwendet werden können.
-
In 2 ist eine Blockansicht einer Ausführungsform der Übersetzungs/Filterschaltung 18 gezeigt. In der dargestellten Ausführungsform umfasst die Übersetzungs/Filterschaltung 18 einen Mikro-TLB 30 (mit einer Mikro-TLB-Etikettenschaltung 32 und einer Mikro-TLB-Datenschaltung 34), eine Mikro-Etikettenschaltung 36, einen Haupt-TLB 38 (mit einer Haupt-TLB-Etikettenschaltung 40 und einer Haupt-TLB-Datenschaltung42), einen Multiplexer 44 und Invertierer 46 und 48. Ferner ist in 2 ein Teil des Datenzwischenspeichers 16 mit dem Cache-Etikettenspeicher 22, eine Zwischenspeichertreffer/Nichttreffer-Schaltung 50 und ein Komparator 52 gezeigt. Der Mikro-TLB 30 (und insbesondere die Mikro-TLB-Etikettenschaltung 32), die Mikro-Etikettenschaltung 36, der Cache-Etikettenspeicher 22 und der Haupt-TLB 38 (und insbesondere die Haupt-TLB-Etikettenschaltung 40) sind angeschlossen, die virtuelle Adresse von der AGU 12 zu empfangen. Die Mikro-TLB-Etikettenschaltung 32 ist ausgebildet, ein Treffersignal an die Mikro-TLB-Datenschaltung 34, die Mikro-Etikettenschaltung 36, den Multiplexer 44 und den Inverter 46 (der weiter mit der Haupt-TLB-Etikettenschaltung 40 verbunden ist) auszugeben. Die Mikro-TLB-Etikettenschaltung 32 ist ferner ausgebildet, eine Eintragskennzeichnung an die Mikro-TLB-Datenschaltung 34 und die Mikro-Etikettenschaltung 36 auszugeben. Die Mikro-TLB-Datenschaltung 34 ist ausgebildet, eine physikalische Adresse (PA) an den Multiplexer 44 auszugeben, ebenso wie die Haupt-TLB-Datenschaltung 42. Der Ausgang des Multiplexers 44 ist mit dem Komparator 52 verbunden. Die Haupt-TLB-Etikettenschaltung 40 ist mit der Haupt-TLB-Datenschaltung 42 verbunden und liefert eine TLB-Nichttreffer-Kennzeichnung. Die Mikro-Etikettenschaltung 36 ist ausgebildet, ein Treffersignal an den Inverter 48 (der ferner mit dem Cache-Etikettenspeicher 22 verbunden ist) und an die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 auszugeben. Die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 ist ferner mit dem Komparator 42 verbunden und liefert eine Zwischenspeicher-Nichttreffer-Kennzeichnung.
-
Der Mikro-TLB 30 empfängt die virtuelle Adresse von der AGU 12 und vergleicht den Seitenbereich der virtuellen Adresse mit den Seitenbereichen der virtuellen Adressen, die den Übersetzungen entsprechen, die in der Mikro-TLB 30 gespeichert sind. Insbesondere kann die Mikro-TLB-Etikettenschaltung 32 mehrere Einträge aufweisen, die die Seitenbereiche der virtuellen Adressen beinhalten. Die entsprechenden physikalischen Adressen und andere Informationen aus den Seitentabellen, die Übersetzung ergeben ha, können in der Mikro-TLB-Datenschaltung 34 gespeichert werden. Die Mikro-TLB-Etikettenschaltung 32 führt den Vergleich aus und gibt das Treffersignal aus, das anzeigt, ob die virtuelle Adresse in dem Mikro-TLB liegt oder nicht, und wenn ein Treffer angezeigt wird, gibt die Eintragkennzeichnung an, welcher Eintrag betroffen ist. Die Mikro-TLB-Datenschaltung 34 kann die Eintragkennzeichnung empfangen und kann die entsprechende physikalische Adresse an den Multiplexer 44 ausgeben. Das Treffersignal veranlasst den Multiplexer 44, die physikalische Adresse aus dem Mikro-TLB 30 als das Ausgangssignal für den Komparator 52 auszuwählen. Obwohl eine vollständig assoziative Ausführungsform hierin detailliert beschrieben ist, können in anderen Ausführungsformen andere Konfigurationen angewendet werden. In diversen Ausführungsformen kann beispielsweise der Mikro-TLB 30 eine vollständig assoziative, eine teilassoziativ oder eine direkt zugeordnete Konfiguration aufweisen.
-
Ferner kann das Treffersignal des Mikro-TLB 30 als eine Aktivierung der Mikro-Etikettenschaltung 36 dienen. Die Mikro-Etikettenschaltung 36 kann Etiketten für mehrere Zwischenspeicherzeilen in den virtuellen Seiten enthalten, für die der Mikro-TLB 30 Übersetzungen beinhaltet. Wenn daher ein Nichttreffer in dem Mikro-TLB auftritt, ergibt auch die Mikro-Etikettenschaltung 36 keinen Treffer. Wenn ein Treffer in dem Mikro-TLB vorliegt, dann ist es möglich, dass die Mikro-Etikettenschaltung 36 einen Treffer erzeugt. Ferner empfängt die Mikro-Etikettenschaltung 36 die Eintragskennzeichnung. Die Mikro-Etikettenschaltung 36 bestimmt, ob es einen Treffer in der Mikro-Etikettenschaltung 36 für die virtuelle Adresse gibt, und erzeugt ein Treffersignal. Wenn ein Treffer in der Mikro-Etikettenschaltung 36 vorliegt, dann entspricht die virtuelle Adresse dem Datenzwischenspeicher 16 und ein Zugriff auf die Etikette in dem Cache-Etikettenspeicher 22 kann verhindert werden. Somit dient das Treffersignal von der Mikro-Etikettenschaltung 36 als eine Deaktivierung für den Cache-Etikettenspeicher 22, wodurch der Cache-Etikettenspeicher 22 gehindert wird, Etiketten in Reaktion auf die virtuelle Adresse auszulesen. Der Inverter 48 kann somit das Treffersignal der Mikro-Etikettenschaltung 36 invertieren und das Ausgangssignal zu dem Cache-Etikettenspeicher 22 als ein Aktivierungssignal zuführen. Die Zwischenspeichertreffer/Nichttrefferschaltung 50 empfängt ebenso das Treffersignal der Mikro-Etikettenschaltung 36 und zeigt einen Nichttreffer für den Zwischenspeicher für die virtuelle Adresse nicht an, wenn das Treffersignal einen Treffer in der Mikro-Etikettenschaltung 36 anzeigt. Der Treffer/Nichttreffer aus dem Komparator 52 kann in diesem Falle ignoriert werden.
-
Wenn es einen Nichttreffer in der Mikro-Etikettenschaltung 36 gibt (oder wenn die Mikro-Etikettenschaltung 36 aufgrund eines Nichttreffers in der Mikro-TLB-Schaltung 30 nicht aktiviert ist), wird der Cache-Etikettenspeicher 22 aktiviert und gibt eine Etikette oder mehrere Etiketten an den Komparator 52 weiter. In einigen Ausführungsformen, in denen die Wegevorhersageeinheit 14 vorgesehen ist, wird lediglich die Etikette des vorhergesagten Wegs ausgegeben. Der Cache-Etikettenspeicher 22 kann angeschlossen sein, um die Wegevorhersage (WP) für eine derartige Ausführungsform zu empfangen. In anderen Ausführungsformen kann jede Etikette in der indizierten Menge für den Vergleich ausgegeben werden. In derartigen Ausführungsformen kann die Nichttrefferkennzeichnung für den Zwischenspeicher einen Nichttreffer oder einen Nichttreffer in dem vorhergesagten Weg, jedoch einen Treffer in einem unvorhergesagten Weg bezeichnen, so dass ein Zwischenspeicherauffüllen nicht auftritt, wenn ein Treffer in einem nicht vorhergesagten Weg auftritt. In einigen Ausführungsformen kann die Auswahl eines Ersatzweges bei Auftreten eines Nichttreffers für den Zwischenspeicher so gesteuert werden, dass ein Treffer in einem nicht vorhergesagten Weg nicht auftritt. Ein Beispiel einer derartigen Ersetzung wird nachfolgend mit Bezug zu den 9 und 10 erläutert. Der Komparator 52 liefert die Vergleichsergebnisse an die Zwischenspeichertreffer/Nichttrefferschaltung 50, die entsprechend die Nichttrefferkennzeichnung für den Zwischenspeicher erzeugt. Wenn es einen Treffer in dem Cache-Etikettenspeicher 22 gibt und ein Treffer in der Mikro-TLB 30 vorlag, kann die Etikette von dem Cache-Etikettenspeicher 22 in die Mikro-Etikettenschaltung 36 eingeladen werden.
-
Da die Mikro-Etikettenschaltung 36 Etiketten speichert, die auch in dem Cache-Etikettenspeicher 22 enthalten sind, kann die Mikro-Etikettenschaltung 36 kohärent zu dem Cache-Etikettenspeicher 22 gehalten werden. Eine Zwischenspeicherzeile kann in dem Datenzwischenspeicher 16 aufgrund des Ersetzens mittels einer Zwischenspeicherauffüllung einer fehlenden Zwischenspeicherzeile als ungültig erklärt werden, oder kann aufgrund eines Anfragetreffers als ungültig erklärt werden, der von einem Zugriff von einem weiteren Prozessor oder einer weiteren Stelle einer Verbindung erzeugt würde, mit der der Prozessor 10 verbunden ist. In einer Ausführungsform kann der gesamte Inhalt der Mikro-Etikettenschaltung 36 in Reaktion auf eine Aktualisierung des Cache-Etikettenspeichers 22 als ungültig erklärt werden. Alternativ können nur Einträge in der Mikro-Etikettenschaltung 36 als ungültig erklärt werden, die den gleichen Zwischenspeicherindex wie der Index aufweisen, an der die Aktualisierung auftritt. In einer noch weiteren Alternative werden Einträge in der Mikro-Etikettenschaltung 36 als ungültig erklärt, die: (i) den gleichen Zwischenspeicherindex wie der Index aufweisen, an dem die Aktualisierung stattfindet; und (ii) die gleiche virtuelle Adresse (in dem entsprechenden Mikro-TLB-Eintrag) wie die Zwischenspeicherzeile, die in dem Datenzwischenspeicher 16 als ungültig erklärt wird, besitzen.
-
Die Mikro-Etikettenschaltung 36 speichert Etiketten innerhalb virtueller Seiten, die durch Einträge in dem Mikro-TLB 30 übersetzt werden. Wenn daher der Mikro-TLB 30 aktualisiert wird, kann auch die Mikroetikette aktualisiert werden. In einer Ausführungsform kann, wenn der Mikro-TLB 30 aktualisiert wird, der gesamte Inhalt der Mikro-Etikettenschaltung 36 als ungültig erklärt werden. Alternativ kann eine selektive Invalidisierung von Etiketten in der Mikro-Etikettenschaltung 36 eingerichtet werden, die den Mikro-TLB-Einträgen entsprechen, die gerade geändert werden.
-
Der Mikro-TLB 30 dient ferner als ein Filter für den Haupt-TLB 38. Das heißt, wenn es einen Treffer in der Mikro-TLB 30 gibt, wird ein Zugriff auf den Haupt-TLB 38 verhindert. Somit kann das von dem Mikro-TLB 30 ausgegebene Treffersignal von dem Inverter 46 invertiert werden und einem Auslöse- bzw. Aktivierungseingang der Haupt-TLB-Etikettenschaltung 40 eingespeist werden. Die Haupt-TLB-Etikettenschaltung 40 kann einen Zugriff auf die Haupt-TLB-Etiketten verhindern, wenn der Aktivierungseingang nicht gesetzt ist.
-
Wenn es einen Nichttreffer in dem Mikro-TLB 30 gibt, dann bestimmt die Haupt-TLB-Etikettenschaltung 40, ob die virtuelle Adresse ein Treffer in dem Haupt-TLB 38 ist. Wenn ein Treffer vorliegt, kann auf die Haupt-TLB-Datenschaltung 42 zugegriffen werden, um die entsprechende physikalische Adresse zu dem Multiplexer 44 auszugeben. Ferner kann die Übersetzung von dem Haupt-TLB 38 in den Miko-TLB 30 eingeladen werden. Da es einen Nichttreffer in dem Mikro-TLB 30 gibt, wählt der Multiplexer 44 die von der Haupt-TLB-Datenschaltung 42 ausgegebene physikalische Adresse als die Ausgabe für den Komparator 52 aus. Wenn der Haupt-TLB 38 aktiviert ist und ein Nichttreffer in dem Haupt-TLB 38 erkannt wird, erzeugt der Haupt-TLB 38 die TLB-Nichttrefferkennzeichnung, um einen Tabellendurchlauf der Seitentabellen zu veranlassen, um damit die gewünschte Übersetzung aufzufinden. Während der Tabellensuche kann in einigen Ausführungsformen der Prozessor 10 in einen Pausebetrieb versetzt werden, um die Leistungsaufnahme zu reduzieren. In einer Ausführungsform findet kein Einladevorgang in der Mikro-TLB 30 statt, wenn ein Ladevorgang in dem Haupt-TLB 38 stattfindet. Ein nachfolgender Nichttreffer für die Seite in der Mikro-TLB 30 kann erkannt werden und ein Treffer in dem Haupt-TLB 38 kann erkannt werden, wodurch ein Ladevorgang in der Mikro-TLB 30 stattfinden kann. Alternativ kann ein Ladevorgang gleichzeitig in der Mikro-TLB 30 und dem Haupt-TLB 38 stattfinden.
-
Da der Mikro-TLB 30 Übersetzungen speichert, die auch in dem Haupt-TLB 38 erhalten sind, kann der Mikro-TLB 30 kohärent zu dem Haupt-TLB 38 gehalten werden. Wenn ein Eintrag in dem Haupt-TLB 38 (in Reaktion auf einen Nichttreffer in dem Haupt-TLB 38 und einer erfolgreichen Absuche der Tabelle) überschrieben wird, wird der entsprechende Eintrag (falls vorhanden) in dem Mikro-TLB 30 als ungültig erklärt. In einer Ausführungsform wird der gesamte Inhalt des Mikro-TLB 30 als ungültig erklärt, wenn ein neuer Eintrag in den Haupt-TLB 38 eingeladen wird.
-
In einer Ausführungsform umfasst der Haupt-TLB 38 zwei TLBs: wovon einer Übersetzungen mit einer Seitengröße von 4 Kilobyte und ein zweiter Übersetzungen mit einer Seitengröße von 2 Megabyte oder 4 Megabyte speichert. Der 4 Kilobyte TLB kann eine beliebige Konfiguration aufweisen, kann jedoch in einer Ausführungsform ein 4-Wege-512-Einträge-TLB sein. Der 2 Megabyte/4Megabyte TLB kann eine beliebige Konfiguration aufweisen, ist jedoch in einer Ausführungsform ein vollständig assoziativer TLB mit 8 Einträgen. In einer Ausführungsform, in der die ×86-lnstruktionssatzarchitektur eingerichtet ist, enthält das CR3-Konfigurationsregister die Basisadresse der Seitentabellen im Speicher. Die Einträge in dem Haupt-TLB 38 können mit der CR3-Adresse gekennzeichnet bzw. etikettiert werden, aus der die Übersetzung ausgelesen wurde, so dass der Haupt-TLB 38 bei Änderungen in der CR3-Adresse nicht für ungültig erklärt werden muss. Die Einträge in dem Mikro-TLB 30 können in einigen Ausführungsformen in ähnlicher Weise gekennzeichnet werden, oder können nicht etikettiert werden, und können statt dessen in Reaktion auf eine Änderung der CR3-Adresse als ungültig erklärt werden.
-
Es ist zu beachten, dass, obwohl Treffersignale so beschrieben sind, dass diese von dem Mikro-TLB 30 und der Mikro-Etikettenschaltung 36 bereitgestellt werden, in allgemeiner Weise eine Trefferkennzeichnung vorgesehen werden kann, die eine beliebige Anzahl an Signalen aufweist, die anzeigen, ob ein Treffer erkannt ist oder nicht. Obwohl ferner der Mikro-TLB 30 so gezeigt ist, dass dieser eine Trefferkennzeichnung und eine Eintragskennzeichnung, die den betroffenen Eintrag benennt, ausgibt, kann eine beliebige Kennzeichnung eines Treffers und eines Eintrages vorgesehen werden. Beispielsweise können in einer Ausführungsform die Kennzeichnungen für die Treffer und Einträge in eine Einzelcodierung zusammengefasst werden, die den Einträgen in dem Mikro-TLB 30 entspricht. Die Einzelcodierung kann (mit einem beliebigen gesetzten Bit) anzeigen, dass es einen Treffer gibt, und kann den Eintrag, der betroffen ist, dadurch kennzeichnen, welches Bit gesetzt ist.
-
Zu beachten ist, dass in einigen Ausführungsformen die Übersetzungs/Filterschaltung 18 über mehrere Pipeline-Stufen hinweg betreibbar ist. Pipeline-Speichereinrichtungen (beispielsweise Flops, Register, etc.) sind in 2 nicht gezeigt. Es kann eine beliebige Unterteilung in Pipeline-Stufen angewendet werden. Beispielsweise zeigt 3 ein Beispiel einer Pipeline, die durch eine Ausführungsform des Prozesses 10 eingerichtet werden kann. Die vertikalen gestrichelten Linien grenzen Taktzyklen in 3 ab. Die Taktzyklen sind mit AG (Adressengeneration), DC1 (Datenzwischenspeicher 1), DC2 (Datenzwischenspeicher 2) und DC3 (Datenzwischenspeicher 3) bezeichnet.
-
Während der AG-Stufe erzeugt die AGU 12 die virtuelle Adresse aus den Adressenoperationen (Bezugszeichen 60). Des Weiteren erzeugt in dieser Ausführungsform die Wegevorhersageeinheit 14 eine Wegevorhersage (Bezugszeichen 62). Die Wegevorhersageeinheit 14 kann die Adressenoperanden empfangen und kann eine Summenadressenindizierung (die detaillierter im Weiteren beschrieben ist) ausführen, um einen Speicher zu adressieren, der Wegevorhersagewerte enthält. Alternativ kann die virtuelle Adresse der AGU 12 verwendet werden, um einen Wegevorhersagespeicher zu indizieren. In anderen Ausführungsformen kann die Wegevorhersageeinheit 14 in der DC1-Stufe operieren.
-
Während der DC1-Stufe wird auf die Mikro-TLB-Etikettenschaltung 32 zugegriffen, und ein Treffer/Nichttreffer in dem Mikro-TLB 30 wir bestimmt (Bezugszeichen 64). Wenn es einen Treffer in dem Mikro-TLB 30 gibt, wird in der DC2-Stufe auf die Mikro-Etikettenschaltung 36 zugegriffen (Bezugszeichen 66) und während der DC3-Stufe wird auf die Mikro-TLB-Datenschaltung 34 zugegriffen (Bezugszeichen 68). Wenn es einen Treffer in der Mikro-Etikettenschaltung 36 gibt, kann ein Zugriff auf die Zwischenspeicheretikette vermieden werden und ein Treffer in dem Datenzwischenspeicher 16 wird über einen Treffer in der Mikro-Etikettenschaltung 36 erkannt. Wenn es einen Nichttreffer in der Mikro-Etikettenschaltung 36 gibt, wird in der DC3-Stufe auf den Cache-Etikettenspeicher 22 zugegriffen (Bezugszeichen 70) und das Ergebnis wird mit dem Ausgang der Mikro-TLB-Datenschaltung 34 verglichen.
-
Wenn es einen Nichttreffer im dem Mikro-TLB 30 gibt, wird während der DC2-Stufe auf die Haupt-TLB-Etikettenschaltung 40 zugegriffen (Bezugszeichen 72), und wenn es einen Treffer in der Haupt-TLB-Etikettenschaltung 40 gibt, wird in der DC3-Stufe auf die TLB-Datenschaltung 42 zugegriffen (Bezugszeichen 74). Der Ausgang der TLB-Datenschaltung 42 wird mit dem Ausgang des Cache-Etikettenspeichers 22 in der DC3-Stufe verglichen.
-
Ferner wird während der DC1-Stufe auf den Cache-Datenspeicher 20 zugegriffen und die Daten von dem vorhergesagten Weg werden ausgegeben (Bezugszeichen 76). Die Daten werden in der DC2-Stufe weitergeleitet (Bezugszeichen 78).
-
In 4 ist eine Blockansicht einer Ausführungsform der Mikro-TLB-Etikettenschaltung 32 gezeigt. In der Ausführungsform aus 4 umfasst die Mikro-TLB-Etikettenschaltung 32 einen Satz aus Einträgen mit Einträgen 80A und 80B, die Vergleicherschaltungen 82A und 82B entsprechen, die mit den Einträgen 80A bzw. 80B verbunden sind, und umfasst eine Steuerschaltung 84, die mit den Einträgen 80A-80B und den Vergleicherschaltungen 82A-82B verbunden ist. Die Vergleicherschaltungen 80A und 80B sind angeschlossen, um die virtuelle Adresse von der AGU 12 zu empfangen. Die Steuerschaltung 84 umfasst einen Speicher 86 mit letztem Zugriff (LRU) und ist ausgebildet, das Treffersignal zu erzeugen und Eintragskennzeichnungen der Mikro-TLB-Etikettenschaltung 32 auszugeben.
-
Die Mikro-TLB-Etikettenschaltung 32 kann eine beliebige Anzahl an Einträgen 80A-80B aufweisen. Beispielsweise sind in einer Ausführungsform 4 Einträge vorgesehen. In anderen Ausführungsformen können mehr oder weniger Einträge vorgesehen sein. Jeder Eintrag 80A-80B kann ein Gültigkeitsbit (V), ein virtuelles Adressenfeld zur Speicherung eines Seitenbereichs der virtuellen Adresse (VA[N-1:12]), die von dem Eintrag (und dem entsprechenden Eintrag in der Mikro-TLB-Datenschaltung 34, die von dem Eintrag übersetzt wird, und dem entsprechenden Eintrag in der Mikro-TLB-Datenschaltung 34, zusammen einen Eintrag des Mikro-TLB 30 bilden), und ein 2M-Bit enthalten, das anzeigt, ob die Übersetzung aus einer 2 Megabyteseitenübersetzung abgeleitet ist oder nicht. Somit wird eine virtuelle N-Bit-Adresse in der vorliegenden Ausführungsform verwendet, wobei N eine Ganzzahl ist. Beispielsweise kann in einigen Ausführungsformen N gleich 32 sein. In anderen Ausführungsformen kann N 48 sein. In weiteren Ausführungsformen kann N eine Ganzzahl zwischen einschließlich 32 und 64 sein. Im Allgemeinen können die Einträge eine beliebige Art einer Speicherung umfassen. Beispielsweise können Register, Flip-Flops oder andere Arten getakteter Speichereinrichtungen in einer Ausführungsform eingesetzt werden.
-
Die Vergleicherschaltungen 82A-82B erhalten zumindest den Seitenbereich der virtuellen Adresse von der AGU 12 und vergleichen den Seitenbereich der virtuellen Adresse mit dem in den entsprechenden Einträgen 80A-80B gespeicherten Seitenbereich. Die dargestellte Ausführungsform sieht eine minimale Seitengröße von 4 Kilobytes vor (und damit sind die Bits 11:0 in dem Seitenbereich der virtuellen Adresse nicht enthalten) und sieht ferner eine Seitengröße von 2 Megabyte für die Kompatibilität mit dem x86-Instruktionssatz vor. Es können andere Seitengrößen verwendet werden. In der dargestellten Ausführungsform erzeugen die Vergleicherschaltungen 82A-82B zwei Übereinstimmungssignale: match_lower bzw. Übereinstimmung-unten und match_oben bzw. Übereinstimmung-hoch. Match_upper kann gesetzt werden, wenn das Gültigkeitsbit in dem Eintrag gesetzt ist und der Bereich der virtuellen Adresse, der in dem Seitenbereich 2M enthalten ist, übereinstimmt (d.h. VA[N-1:21]). Match_lower kann gesetzt werden, wenn der Rest der virtuellen Adresse übereinstimmt (d.h. VA[20:12]).
-
Die Steuerschaltung 84 ist angeschlossen um die Ausgangssignale der Vergleicherschaltungen 82A-82B zu empfangen und ist ferner ausgebildet, das Treffersignal und eine darauf reagierende Eintragskennzeichnung zu erzeugen. Wenn ein Treffer in einem der Einträge angezeigt wird, setzt die Steuerschaltung 84 das Treffersignal und liefert die Eintragskennzeichnung. Wenn ein Treffer nicht angezeigt wird, dann setzt die Steuerschaltung 84 das Treffersignal nicht.
-
5 ist eine Ausführungsform einer Wahrheitstabelle 90, die durch die Steuerschaltung 84 zum Bestimmen eingerichtet wird, ob ein Eintrag von einer virtuellen Adresse betroffen ist. In der Tabelle 90 ist das 2M Bit für den Eintrag (gesetzt, um eine 2M-Übersetzung in dieser Ausführungsform anzuzeigen), das match_upper und das match_lower Signal (wobei eine Eins in der Tabelle 90 den gesetzten Zustand und eine Null den nicht gesetzten Zustand angibt), und eine Ergebnisspalte dargestellt sind, die angibt, was jede Kombination aus dem 2M-Bit, dem Signal match_upper und dem Signal match_lower kennzeichnet.
-
Wenn das Signal match_upper nicht gesetzt ist, erkennt die Steuerschaltung 84 einen Nichttreffer für einen Mikro-TLB für die virtuelle Adresse. Der Nichttreffer für den Mikro-TLB findet unabhängig von der Einstellung des 2M-Bits und des Zustands des Signals match_lower statt. Folglich findet der Nichttreffer auch für die Mikro-Etikettenschaltung 36 statt.
-
Wenn das 2M-Bit gesetzt ist, dann ist die entsprechende Übersetzung für eine 2 Megabyteseite gedacht. Somit ist die VA[20:12] im Allgemeinen nicht in dem Vergleich miteingeschlossen. Um jedoch Bits für die Mikro-Etikettenschaltung 36 vorzusehen, können diese Bits als die letzte 4 Kilobyteseite definiert werden, auf die von dem Prozessor 10 in der 2 Megabyteseite zugegriffen wird. Wenn das Signal match_upper gesetzt ist, und das 2M-Bit gesetzt ist, dann findet ein Treffer für den Mikro-TLB statt. Wenn jedoch das Signal match_lower nicht gesetzt ist, findet kein Treffer für die Mikro-Etikettenschaltung 36 für diese Seite statt. Wenn das Signal match_lower gesetzt ist, erfolgt ein Treffer für die Mikro-Etikettenschaltung 36 und somit wird ein Abrufen einer Mikro-Etikette ausgeführt.
-
Wenn das 2M-Bit zurückgesetzt ist, dann dient die entsprechende Übersetzung für eine 4 Kilobyteseite. Somit werden sowohl das Signal match_upper als auch das Signal match_lower gesetzt, um einen Treffer für den Mikro-TLB anzuzeigen (und möglicherweise einen Mikro-Etikettentreffer, so dass ein Abrufen einer Mikro-Etikette ausgeführt wird). Wenn das Signal match_lower nicht gesetzt ist, wird ein Nichttreffer für den Mikro-TLB und eine Mikro-Etikette erkannt.
-
Für die Steuerschaltung 84 gemäß der Ausführungsform aus 5 kann sich die Trefferanzeige, die von der Mikro-Etikettenschaltung 36 bereitgestellt wird, von der Trefferkennzeichnung unterscheiden, die von dem Haupt-TLB 38 bereitgestellt wird. Die Trefferkennzeichnung für den Haupt-TLB 38 kann einen Treffer in dem Mikro-TLB 30 anzeigen, solange die Übersetzung ein Treffer ist (Einträge in der Tabelle 90, die einen Treffer für den Mikro-TLB angeben), selbst wenn ein Nichttreffer für die Mikro-Etikettenschaltung 36 vorliegt. Die Trefferkennzeichnung für die Mikro-Etikettenschaltung 36 kann einen Treffer anzeigen, wenn ein Abrufen einer Mikro-Etikette angezeigt ist (Einträge in der Tabelle 90, die ein Abrufen einer Mikro-Etikette angeben).
-
Die Ausführungsform der 4 und 5 unterstützt zwei unterschiedliche Seitengrößen. Andere Ausführungsformen können eine einzelne Seitengröße unterstützen, und somit kann ein einzelnes Übereinstimmungssignal von jeder der Vergleicherschaltungen 82A-82B geliefert werden, und das 2M-Bit kann aus den Einträgen 80A-80B weggelassen werden. Andere Ausführungsformen können mehr als zwei Seitengrößen unterstützen, indem der Seitenbereich der virtuellen Adresse gemäß der unterstützten Seitengrößen unterteilt wird. Zu beachten ist, dass die ×86-Instruktionssatzarchitektur auch eine Seitengröße von 4 Megabyte unterstützt. Die Ausführungsform der 4 und 5 kann eine Seitengröße von 4 Megabyte durch Verwenden zweier 2 Megabyteeinträge in dem Mikro-TLB 30 unterstützen. Andere Ausführungsformen können eine Seitengröße von 4 Megabyte direkt unterstützen (beispielsweise unter Anwendung eines 4M-Bits in jedem Eintrag ähnlich zu dem 2M-Bit).
-
Obwohl die vorhergehende Ausführungsform die Seitengröße von 2 Megabyte unter Anwendung eines Eintrags für die 2 Megabyteseite und Kennzeichnung der 4 Kilobyteseite innerhalb der 2 Megabyteseite, auf die zuletzt zugegriffen wurde, unter Anwendung der VA[20:12] unterstützt, können in anderen Ausführungsformen mehrere Mikro-TLB-Einträge für eine gegebene 2 Megabyteseite zulässig sein. Jeder der Einträge kann eine unterschiedliche Codierung in der VA[20:12] für unterschiedliche 4 Kilobyteseiten, auf die zugegriffen wurde, aufweisen. In einer noch weiteren Alternative kann die VA[20:12] in der Mikro-Etikettenschaltung 36 für 2 Megabyteseiten enthalten sein, und ein Treffer auf einer 2 Megabyteseite kann verwendet werden, um auf die Mikro-Etikette zuzugreifen, um damit einen Treffer für eine Zwischenspeicherzeile innerhalb der 2 Megabyteseite zu erkennen.
-
Im Falle eines Nichttreffers in dem Mikro-TLB 30 und einem Treffer in dem Haupt-TLB 38 wählt die Steuerschaltung 84 einen Eintrag 80A-80B aus, der mit der zutreffenden Übersetzung von dem Haupt-TLB 38 zu ersetzen ist. In der dargestellten Ausführungsform kann die Steuerschaltung 84 einen LRU der Einträge 80A-80B bewahren und kann den Eintrag für das Ersetzen verwenden, auf den zuletzt zugegriffen wurde. Es kann ein beliebig anderer Algorithmus zum Austauschen eingerichtet sein (beispielsweise Pseudo-LRU, zufällig, etc.). Die Einträge 80A-80B sind angeschlossen, um einen Ausgangsseitenbereich einer virtuellen Adresse (VA[N-1:12]) und ein 2M-Bit, das in einem der Einträge durch die Steuerung der Steuerschaltung 84 zu speichern ist, zu empfangen (Eingangsadresse und 2M-Bit sind in 4 nicht gezeigt). Die Quelle der eingespeisten virtuellen Adresse und des 2M-Bits können der Haupt-TLB 38 oder die Tabellensuchschaltung in den diversen Ausführungsformen sein.
-
6 ist eine Blockansicht einer Ausführungsform der Mikro-TLB-Datenschaltung 34. In der Ausführungsform aus 6 umfasst die Mikro-TLB-Datenschaltung 34 einen Satz aus Einträgen mit den Einträgen 92A-92B. Jeder der Einträge 92A-92B entspricht einem der Einträge 80A-80B aus 4. Ferner ist ein Multiplexer 94 gezeigt, der mit den Einträgen 92A-92B gekoppelt ist und die Eintragskennzeichnung von der Mikro-TLB-Etikettenschaltung 32 empfängt. Der Multiplexer 84 kann den Inhalt des Eintrags, der durch die Eintragskennzeichnung gekennzeichnet ist, für die Ausgabe auswählen. In einer Ausführungsform wird, wenn kein Eintrag angegeben ist (d.h. ein Nichttreffer), kein Eintrag 92A-92B von dem Multiplexer 94 ausgewählt (wodurch die Leistungsaufnahme reduziert wird). Ähnlich zu den Einträgen 80A-80B in Fig. 4 können die Einträge 92A-92B in einer beliebigen Art an Speicher (in einer Ausführungsform beispielsweise diverse getaktete Speichereinrichtungen) eingerichtet werden.
-
In der dargestellten Ausführungsform enthält der Inhalt jedes Eintrags 92A-92B ein „schmutziges“ Bit (D), ein Anwender/Überwacher-(U/S)-Bit, ein Lese/Schreib-(R/W)-Bit, ein Speichertypfeld (MemType[4:0]), und ein physikalisches Adressenfeld (PA[M-1:12]). In einer Ausführungsform können die Bits kompatibel mit dem Seitenmechanismus sein, der durch die ×86-Instruktionssatzarchitektur definiert ist. Das „schmutzige“ Bit kann anzeigen, ob die physikalische Seite modifiziert wurde oder nicht (beispielsweise ob der Prozessor eine Speicherinstruktion in der Seite ausgeführt hat). Das Anwender/Überwacherbit kann Anwenderseiten gegenüber Überwacherseiten (privilegiert) anzeigen. Das Lese/Schreibbit kann anzeigen, ob die Seite eine Nur-Leseseite ist oder für das Lesen/Schreiben vorgesehen ist. Das Speichertypfeld gibt an, welcher Speichertyp für die Seite verwendet ist.
-
In der dargestellten Ausführungsform wird eine physikalische Adresse mit M-Bit unterstützt. M kann eine Ganzzahl sein. Insbesondere kann sich M von N unterscheiden. In einer Ausführungsform kann M eine Ganzzahl zwischen einschließlich 32 und 64 sein. In einer weiteren Ausführungsform kann M eine Ganzzahl zwischen einschließlich 32 und 52 sein. Beispielsweise ist M in einer speziellen Ausführungsform 40.
-
7 zeigt eine Blockansicht einer Ausführungsform der Mikro-Etikettenschaltung 36. In der gezeigten Ausführungsform sind mehrere Einträge in der Mikro-Etikettenschaltung 36 in Gruppen aus Einträgen aufgeteilt. Jede Gruppe mit Einträgen ist einem anderen Eintrag des Mikro-TLB zugeordnet. Beispielsweise sind in der dargestellten Ausführungsform Gruppen 100A-100D gezeigt, die den vier Einträgen in dem Mikro-TLB 30 entsprechen. Andere Ausführungsformen können eine beliebige Anzahl an Gruppen enthalten, so dass diese einer beliebigen Anzahl an Einträgen entsprechen. Die Gruppen 100A-100D sind mit einer Steuerschaltung 102 verbunden, die angeschlossen ist, das Aktivierungseingangssignal bzw. Auslösefreigangssignal (En) (das Treffersignal von der Mikro-TLB-Etikettenschaltung 32), die Eintragskennzeichnung von der Mikro-TLB-Etikettenschaltung 32 und die virtuelle Adresse von der AGU 12 zu empfangen. Die Steuerschaltung 102 ist ausgebildet, die Trefferkennzeichnung, die von der Mikro-Etikettenschaltung 36 ausgegeben wird, zu erzeugen.
-
Die Einträge in der ausgewählten Gruppe 100A-100D werden einem der Einträge in der Mikro-TLB-Etikettenschaltung 32 zugeordnet und kennzeichnen Zwischenspeicherzeilen in der virtuellen Seite, die von diesem Eintrag gekennzeichnet ist, der auch in dem Datenzwischenspeicher 16 abgelegt ist. Es kann eine beliebige Anzahl an Einträgen in einer Gruppe enthalten sein. Beispielsweise sind in einer Ausführungsform vier Einträge in jeder Gruppe enthalten. Da auf die Mikro-Etikettenschaltung 36 zugegriffen wird, wenn ein Treffer für den Mikro-TLB erkannt wird, ist bekannt, dass die VA[N-1:12] mit der virtuellen Adresse der AGU 12 und der virtuellen Adresse der in der ausgewählten Gruppe 100A-100D repräsentierten Zwischenspeicherzeilen übereinstimmt. Um folglich einen vollständigen Vergleich der virtuellen Etiketten durchzuführen, können die Einträge in der ausgewählten Gruppe 100A-100D den Seitenoffsetbereich der virtuellen Adresse (ausschließlich der Adressenbits, die dem Zwischenspeicherzeilenoffset bilden) speichern. Für die dargestellte Ausführungsform wird eine Zwischenspeicherzeilengröße von 64 Byte angenommen, und damit sind die Adressenbits 5:0 ausgeschlossen. In anderen Ausführungsformen können andere Zwischenspeicherzeilengrößen eingesetzt werden. Die verbleibenden virtuellen Adressenbits zur Vervollständigung des Vergleichs der virtuellen Etikette sind somit die VA[11:6] in dieser Ausführungsform, und jeder Mikro-Etiketteneintrag speichert die VA[11:6], wie in 7 gezeigt ist.
-
Wenn das Auslöseeingangssignal gesetzt ist, vergleicht die Steuerschaltung 102 die Adressenbits VA[11:6] jedes Eintrags mit den entsprechenden Bits der virtuellen Adresse der AGU 12. Somit kann die Steuerschaltung 102 angeschlossen sein, um zumindest den Seitenoffsetbereit der virtuellen Adresse der AGU 12 (ausschließlich der Zwischenspeicherzeilenoffsetbits) zu empfangen. Wenn in einem Eintrag in der ausgewählten Gruppe 100A-100D eine Übereinstimmung erkannt wird und das Gültigkeitsbit (V) in diesem Eintrag gesetzt ist, dann ist die virtuelle Adresse ein Treffer in der Miko-Etikettenschaltung 36 und ist somit ein Treffer für den Datenzwischenspeicher 16. Der Cache-Etikettenspeicher 22 muss nicht abgefragt werden, um einen Treffer/Nichttreffer zu bestimmen. Wenn andererseits eine Übereinstimmung in einem Eintrag in der ausgewählten Gruppe 100A-100D nicht erkannt wird, dann kann auf den Cache-Etikettenspeicher 22 zugegriffen werden, um zu bestimmen, ob die Adresse ein Treffer oder ein Nichttreffer für den Datenzwischenspeicher 16 ist. Die Steuerschaltung 102 erzeugt das Treffersignal gemäß den Vergleichsergebnissen.
-
Zu beachten ist, dass, wenn der Datenzwischenspeicher 16 physikalisch etikettiert bzw. markiert ist (d.h., der Cache-Etikettenspeicher 22 speichert physikalische Etiketten anstelle der virtuellen Etiketten) und zumindest ein übersetztes Adressenbit in dem Index für den Datenzwischenspeicher 16 verwendet wird (beispielsweise wird zumindest Bit 12 in einer Ausführungsform mit einer 4 Kilobyteseite verwendet), dann ist es möglich, dass eine Zuordnung mehrerer virtueller Adressen für die gleiche physikalische Adresse die Arbeitsweise der Mikro-Etikettenschaltung 36 beeinflusst (da der Index sich von den virtuellen Adressenbits, die in dem Vergleich verwendet sind, unterscheiden kann). In einer derartigen Ausführungsform kann der Datenzwischenspeicher 16 physikalisch etikettiert werden, der Prozessor 10 kann jedoch sicherstellen, dass höchstens eine virtuelle Adresse, die der gleichen physikalischen Adresse zugeordnet ist, in dem Datenzwischenspeicher16 zu einer gegebenen Zeit gespeichert wird. Das heißt, wenn eine zweite Alias-Adresse in den Datenzwischenspeicher 16 eingeladen wird, während die erste Alias-Adresse noch in dem Zwischenspeicher vorhanden ist, wird die erste Alias-Adresse in dem Datenzwischenspeicher 16 als ungültig erklärt.
-
Zu beachten ist, dass in einigen Ausführungsformen, in denen der Zwischenspeicherindex mindestens ein übersetztes Adressenbit enthält, die Mikro-Etikettenschaltung 36 jedes Adressenbit speichern kann, das in dem Zwischenspeicherindex enthalten ist, und die übersetzten Adressenbits können physikalische Bits sein. Das Speichern derartiger Bits kann eine zielgerichtete Invalidisierung von Einträgen der Mikro-Etikettenschaltung 36 ermöglichen, wenn eine Invalidisierung aller Einträge nicht erwünscht ist (beispielsweise in Reaktion auf Änderungen im Inhalt des Datenzwischenspeichers 16 oder im Inhalt des Mikro-TLB 30).
-
Im Falle eines Treffers in dem Mikro-TLB 30, eines Nichttreffers in der Mikro-Etikettenschaltung 36 und eines Treffers in dem Cache-Etikettenspeicher 22 kann einer der Einträge in der entsprechenden Gruppe 100A-100D durch das treffende Etikett ersetzt werden. Die Steuerschaltung102 kann die LRU-Information in jeder Gruppe 100A-100D bewahren (als ein LRU-Feld in jedem Eintrag gezeigt), die dann verwendet werden kann, um den LRU-Eintrag in der ausgewählten Gruppe 100A-100D für das Ersetzen auszuwählen. In anderen Ausführungsformen können andere Austauschschemata eingesetzt werden (beispielsweise durch Zufall, mittels Pseudo-LRU, etc.). Die Gruppen 100A-100D sind angeschlossen, um die VA[11:6] von dem Datenzwischenspeicher 16 zur Speicherung eines nicht treffenden Index in der Mikro-Etikettenschaltung 36 gemäß einiger Ausführungsformen (in 7 nicht gezeigt) zu empfangen.
-
Es ist zu beachten, dass, obwohl die Einträge der Mikro-Etikettenschaltung 36 Mikro-TLB-Einträgen in der dargestellten Ausführungsform in statischer Weise zugeordnet sind, können in anderen Ausführungsformen die Einträge nach Bedarf jedem Mikro-TLB-Eintrag dynamisch zugeordnet werden. In einer derartigen Ausführungsform kann ein Mikro-TLB-Eintragsfeld in jeden Mikro-Etiketteneintrag enthalten sein, wodurch eine Kennzeichnung des Mikro-TLB-Eintrags gespeichert wird, dem dieser Mikro-Etiketteneintrag aktuell zugeordnet ist. Die Steuerschaltung 102 kann die Eintragskennzeichnung mit der Kennzeichnung vergleichen, die während eines Zugriffes von dem Mikro-TLB 30 empfangen wird, und kann einen Treffer erkennen, wenn die Eintragskennzeichnung übereinstimmt und das VA[11:6]-Feld mit dem entsprechenden Bereich der virtuellen Adresse der AGU 12 übereinstimmt.
-
Zu beachten ist, dass, obwohl die Mikro-Etikettenschaltung 36 in dieser Ausführungsform mit dem Mikro-TLB verwendet ist, in anderen Ausführungsformen die Mikro-Etikettenschaltung 36 ohne den Mikro-TLB vorgesehen sein kann. Derartige Ausführungsformen können volle Etiketten in jedem Eintrag der Mikro-Etikettenschaltung 36 aufweisen und können einen Zwischenspeichertreffer erkennen und ein Auslesen in dem Cache-Etikettenspeicher 22 durch Vergleichen mit dem vollen Etikett verhindern. Unabhängig davon, ob der Treffer in der Mikro-Etikettenschaltung 36 oder in dem Cache-Etikettenspeicher 22 erkannt wird, können die Daten von dem Cache-Datenspeicher 20 weitergeleitet werden.
-
In einer alternativen Ausführungsform kann die Mikro-Etikettenschaltung 36 einen einzelnen Eintrag pro Mikro-TLB-Eintrag aufweisen. Der Mikro-Etiketteneintrag kann ein Bit pro Zwischenspeicherzeile in der von dem Mikro-TLB-Eintrag bezeichneten Seite speichern, wodurch angezeigt wird, dass diese Zwischenspeicherzeile in dem Datenzwischenspeicher 16 betroffen ist. Wenn damit beispielsweise Zwischenspeicherzeilen 64 Byte lang sind und eine 4 Kilobyteseite verwendet wird, kann der Mikro-Etiketteneintrag 64 Bits aufweisen. Das einer vorgegebenen Zwischenspeicherzeile entsprechende Bit kann einen Treffer kennzeichnen, wenn das Bit gesetzt ist, und kann einen Nichttreffer kennzeichnen, wenn das Bit zurückgesetzt ist (oder es kann die gegenteilige Codierung angewendet werden). Eine Steuerschaltung kann den seiteninternen Bereich der VA ohne den Zwischenspeicherzeilenoffsetbereich (beispielsweise Bits 11:6 in einer Ausführungsform mit 64 Byte Zwischenspeicherzeile) ansteuern, um das geeignete Bit zum Bestimmen eines Zwischenspeichertreffers/Nichttreffers auszuwählen. In einer derartigen Ausführungsform kann die Mikro-Etikettenschaltung in der Mikro-TLB-Schaltung enthalten sein. Der Begriff „Etikettenschaltung“ oder „Mikro-Etikettenschaltung“ soll derartige Ausführungsformen miteinschließen, in denen die Mikro-Etikettenschaltung in der Mikro-TLB enthalten ist.
-
In 8 ist ein Flussdiagramm gezeigt, das eine beispielhafte Funktionsweise einer Ausführungsform der in 2 gezeigten Blöcke in Reaktion auf eine virtuelle Adresse von einer AGU 12 zeigt. Obwohl die Blöcke in 8 in einer speziellen Reihenfolge für ein leichteres Verständnis gezeigt sind, kann eine andere Reihenfolge angewendet werden. Die Blöcke können parallel über eine kombinatorische Logikschaltung ausgeführt werden, oder können über zwei oder mehrere Taktzyklen in einer Pipeline-artigen Weise nach Bedarf ausgeführt werden.
-
In Reaktion auf die virtuelle Adresse wird auf die Mikro-TLB-Etikettenschaltung 32 zugegriffen (Block 110). Wenn ein Mikro-TLB-Treffer erkannt wird (Entscheidungsblock 112, „ja“-Verzweigung), wird auf die Mikro-Etikettenschaltung 36 zugegriffen (Block 114). Wenn ein Treffer in der Mikro-Etikette erkannt wird (Entscheidungsblock 116, „ja“-Verzweigung), kann die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 einen Zwischenspeichertreffer (beispielsweise zeigt die Zwischenspeichernichttrefferkennzeichnung keinen Nichttreffer an), und es wird auf den Cache-Etikettenspeicher 22 nicht in Reaktion auf die virtuelle Adresse (Block 118) zugegriffen. Wenn ein Treffer in der Mikro-Etikette nicht erkannt wird (Entscheidungsblock 116, „nein“-Verzweigung), wird auf die Mikro-TLB-Datenschaltung 34 zugegriffen (Block 120). In einigen Ausführungsformen wird auf die Mikro-TLB-Datenschaltung 34 in Reaktion auf einen Mikro-TLB-Etikettentreffer zugegriffen, unabhängig davon, ob die Mikro-Etikette ein Treffer ist oder nicht. Ferner wird auf den Cache-Etikettenspeicher 22 zugegriffen (Block 122). Wenn ein Treffer zwischen einer Etikette von dem Cache-Etikettenspeicher 22 und der physikalischen Adresse der Mikro-TLB-Datenschaltung 34 erkannt wird (Entscheidungsblock 124, „ja“-Verzweigung), zeigt die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 einen Zwischenspeichertreffer an (Block 126). Da ferner ein Nichttreffer für eine Mikro-Etikette in diesem Falle erkannt wurde, kann die treffende Etikette in die Mikro-Etikette eingeladen werden. Wenn ein Nichttreffer zwischen einer Etikette von dem Cache-Etikettenspeicher 22 und der physikalischen Adresse der Mikro-TLB-Datenschaltung 34 erkannt wird (Entscheidungsblock 124, „nein“-Verzweigung), zeigt die Zwischenspeichertreffer/Nichttreffer-Schaltung 50 einen Nichttreffer für den Zwischenspeicher an (Block 128), und die fehlende Zwischenspeicherzeile kann in den Datenzwischenspeicher 16 eingeladen werden (und optional kann die Mikro-Etikettenschaltung 36 auch mit der Etikette der nicht treffenden Zwischenspeicherzeile aktualisiert werden).
-
Wenn ein Mikro-TLB-Nichttreffer erkannt wird (Entscheidungsblock 112, „nein“-Verzweigung), kann auf die Haupt-TLB-Etikettenschaltung 40 zugegriffen werden (Block 130). Wenn ein Treffer in der Haupt-TLB erkannt wird (Entscheidungsblock 132, „ja“-Verzweigung), wird der Mikro-TLB von dem Haupt-TLB aus geladen (Block 134), und die Mikro-Etiketteneinträge, die dem eingeladenen Mikro-TLB-Eintrag entsprechen, können als ungültig erklärt werden. Ferner können die Blöcke 122, 124, 126 und 128 für den Etikettenvergleich mit der physikalischen Adresse aus dem Haupt-TLB wiederholt werden. Jedoch werden im Block 126 die Mikro-Etikette optionalerweise nicht eingeladen, falls dies gewünscht ist. Wenn andererseits ein Nichttreffer in dem Haupt-TLB erkannt wird (Entscheidungsblock 132, „nein“-Verzweigung), kann der Haupt-TLB 38 einen TLB-Nichttreffer erzeugen, und der Haupt-TLB kann mit der fehlenden Übersetzung (oder es kann eine Ausnahmeregel auftreten, wenn keine Übersetzung gefunden wird) eingeladen werden (Block 136). Optional kann der Mikro-TLB beladen werden, im Falle eines Nichttreffers für den Haupt-TLB, und die Mikro-Etikette kann aktualisiert werden, um Mikro-Etiketteneinträge, die dem Mikro-TLB-Eintrag entsprechen, der gerade geladen ist, als unzulässig zu erklären.
-
Zu beachten ist, dass, obwohl die obige Beschreibung sich auf das Vergleichen der physikalischen Adresse des Mikro-TLB 30 oder des Haupt-TLB 38 mit der Etikette von dem Cache-Etikettenspeicher 22 bezieht, die TLBs im Allgemeinen den Seitenbereich der physikalischen Adresse ausgeben. Der Rest der Zwischenspeicheretikette für den Vergleich kann gebildet werden, indem der Seitenbereich der physikalischen Adresse mit dem Seitenoffsetbereich der virtuellen Adresse verknüpft wird.
-
9 zeigt eine Blockansicht einer Ausführungsform der Wegevorhersageeinheit 14. In der dargestellten Ausführungsform umfasst die Wegevorhersageeinheit 14 einen Summenadressen-(SA)-Decodierer 140, der angeschlossen ist, um einen oder mehrere Adressenoperanden, die der virtuellen Adresse entsprechen, zu empfangen, für die eine Wegevorhersage getroffen wird, und ferner ist die Einheit mit einem Speicher 142 verbunden. Der SA-Decodierer 140 richtet eine Summenadressenindizierung ein, wie dies detaillierter nachfolgend beschrieben ist. Der Speicher 142 kann ein W-Wege teilassoziativer Speicher sein (so wie der Datenzwischenspeicher 16) und kann daher eine Vielzahl an Einträgen aufweisen, die als Wege 0 bis W-1 angeordnet sind. Jeder Eintrag des Speichers 142 enthält einen Wegevorhersagewert mit P-Bits (WP[P-1:0]). Mehrere Komparatoren mit Komparatoren 146A-146B sind mit dem Speicher 142 verbunden. Ein Komparator 146A-146B kann für jeden Weg der Wegevorhersageeinheit 14 vorgesehen sein. Die Komparatoren 146A-146B sind angeschlossen, um einen Bereich der virtuellen Adresse (VA) von der AGU 12 oder den Ausgang einer optionalen Wegevorhersageerzeugungsschaltung 148 (oder in einer weiteren Option einen Teil der Adressenoperanden) zu empfangen. Die Ausgangssignale der Komparatoren 146A-146B können den Ausgang der Wegevorhersage der Wegevorhersageeinheit 14 bilden. Wenn ferner keiner der Komparatoren 146A-146B eine Übereinstimmung erkennt, kann die Wegevorhersageeinheit 14 das frühe Nichttreffersignal ausgeben (als NOR-Gatter 150 dargestellt, das die Ausgangssignale der Komparatoren 146A-146B in 9 erhält).
-
Der Decodierer 140 ist ausgebildet, die Adressenoperanden (unter Anwendung einer Summenadressendecodierung in dieser Ausführungsform) zu decodieren, um damit einen Satz oder eine Menge 144 des Speichers 142 auszuwählen, und der Speicher 142 ist ausgebildet, den Inhalt der Menge oder des Satzes 144 an die Komparatoren 146A-146B auszugeben. Jeder der Komparatoren 146A-146B vergleicht den Wertevorhersagewert des entsprechendes Weges des Speichers 142 mit einem Wegevorhersagewert gemäß der eingespeisten virtuellen Adresse. Wenn eine Übereinstimmung erkannt wird, sagt die Wegevorhersageeinheit 14 vorher, dass der entsprechende Weg ein Treffer für den Datenzwischenspeicher 16 ist. In der dargestellten Ausführungsform umfasst die Wegevorhersage eine einmalige Codierung für die Wege, wobei ein Bit für den vorhergesagten Weg gesetzt ist. Wenn keines der Wegevorhersagebits mit den eingespeisten Wegevorhersagebits übereinstimmt, wird keine Wegevorhersage erzeugt (und das frühe Nichttreffersignal wird gesetzt). In anderen Ausführungsformen kann die Wegevorhersage in anderer Weise codiert werden, und die Wegevorhersageeinheit 14 kann eine Schaltung aufweisen, die ausgebildet ist, das Ausgangssignal der Komparatoren 146A-146B zu empfangen und um die Wegevorhersagecodierung zu erzeugen.
-
Der Wegevorhersagewert kann in beliebiger Weise nach Bedarf erzeugt werden, und kann eine beliebige Anzahl an Bits (beispielsweise kann P eine Ganzzahl größer als Eins sein) aufweisen. Die in der Wegevorhersageeinheit 14 gespeicherten Wegevorhersagewerte werden entsprechend den zugeordneten Zwischenspeicherzeilen in dem Datenzwischenspeicher 16 erzeugt. Beispielsweise kann in einer Ausführungsform der Wegevorhersagewert eine Teiletikette der virtuellen Adresse sein, die der Zwischenspeicherzeile entspricht, die unter dem gleichen Index und dem gleichen Weg in dem Datenzwischenspeicher 16 abgelegt ist. Das heißt, der Wegevorhersagewert kann eine Verkettung ausgewählter virtueller Adressenbits umfassen (wobei mindestens ein Adressenbit ausgeschlossen ist, das Teil der Zwischenspeicheretikette ist). Es kann in einer derartigen Ausführungsform wünschenswert sein, virtuelle Adressenbits auszuwählen, die häufig variieren (oder anders gesehen, die die größte Zufälligkeit unter nacheinander erfolgenden Zugriffen aufweisen). Beispielsweise können die am wenigsten signifikanten Adressenbits, die noch Teil der Zwischenspeicheretikette sind (nicht Teil des Zwischenspeicherzeilenoffsets), ausgewählt werden. Bei einer derartigen Ausführungsform kann die Wegevorhersageerzeugungsschaltung 148 nicht verwendet werden, und die ausgewählten virtuellen Adressenbits der eingespeisten virtuellen Adresse können als Eingangssignale mit den Komparatoren 146A-146B verbunden werden. In einer weiteren Ausführungsform können eines oder mehrere der Wegevorhersagewertebits als eine logische Kombination zweier oder mehrerer virtueller Adressenbits erzeugt werden. In einer derartigen Ausführungsform kann das häufige Ändern virtueller Adressenbits mit einem weniger häufigen Wechseln von virtuellen Adressenbits beispielsweise kombiniert werden. In einer Ausführungsform kann die logische Kombination eine Exklusiv-ODER-Funktion enthalten. Bei einer derartigen Ausführungsform kann die logische Kombination an den virtuellen Adressenbits mittels der Wegevorhersageerzeugungsschaltung 148 ausgeführt werden, deren Ausgang mit den Komparatoren 146A-146B verbunden ist. In einer noch weiteren Ausführungsform können Bits von den Adressenoperanden vor der Addition ausgewählt werden, um die virtuelle Adresse zu erzeugen. Die Bits können logisch unter Anwendung der Wegevorhersageerzeugungsschaltung 148 kombiniert werden, oder können verkettet werden, ähnlich zu den zuvor beschriebenen Beispielen für die virtuelle Adresse.
-
Um eine Situation zu vermeiden, in der zwei oder mehr Einträge den gleichen Wegevorhersagewert aufweisen (und damit würde eine Übereinstimmung für mehr als einen einzelnen Weg in der Wegevorhersageeinheit 14 auftreten), kann das Ersetzen der Zwischenspeicherzeilen in dem Datenzwischenspeicher 16 so gesteuert werden, dass sichergestellt ist, dass die Wegevorhersagewerte in einem gegebenen Satz der Wegevorhersageeinheit 14 einzigartig bleiben. Ein Beispiel einer derartigen Prozedur ist in dem Flussdiagramm aus 10 gezeigt. Es kann vorteilhaft sein, ausreichend Bits in den Wegevorhersagewerten vorzusehen, so dass die vorhergehende Austauschstrategie nicht häufig ein vorzeitiges Austauschen von Zwischenspeicherzeilen zur Beibehaltung der Einzigartigkeit der Wegevorhersagewerte bewirkt. Wenn beispielsweise eine Verkettung virtueller Adressenbits angewendet wird, um die Wegevorhersagewerte zu erzeugen, können ungefähr 7 Bits des Wegevorhersagewertes ausgewählt werden.
-
In einigen Ausführungsformen wird aufgrund der vergleichsweise geringen Größe der Wegevorhersageeinheit 14 im Vergleich zu dem Cache-Etikettenspeicher 22 die Wegevorhersageeinheit 14 in dem Datenweg der AGU eingeschlossen (wodurch die Strecke verringert werden kann, mit der sich die virtuelle Adresse zum Erreichen der gewünschten Schaltung ausbreiten muss).
-
Wie zuvor erwähnt ist, kann der Decodierer 140 eine Summenadressendecodierung anwenden, um die Adressenoperanden zu decodieren und einen Satz 144 auszuwählen, der der virtuellen Adresse entspricht. In anderen Ausführungsformen kann ein konventioneller Decodierer eingesetzt werden, der zum Empfangen der virtuellen Adresse angeschlossen ist. Somit empfängt im Allgemeinen der Decodierer 140 eine Kennzeichnung der Adresse, die zum Zugreifen auf den Zwischenspeicher dient. Die Kennzeichnung kann in einigen Ausführungsformen die zur Bildung der virtuellen Adresse verwendeten Adressenoperanden miteinschließen, oder kann in anderen Ausführungsformen die virtuelle Adresse selbst miteinschließen.
-
Die Summenadressendecodierung empfängt die zum Erzeugen einer Adresse verwendeten Adressenoperanden und wählt in korrekter Weise den gleichen Satz aus einem Speicher aus, der auch ausgewählt würde, wenn die Adresse selbst decodiert würde. Im allgemeinen beruht die Summenadressendecodierung auf dem Prinzip, dass der Test A+B=K für ein konstantes K schneller bewertet werden kann, als das Addieren von A+B und das Vergleichen der Summe mit K. Im Zusammenhang mit der Decodierung ist die Konstante K der Wert von A+B, der einen vorgegebenen Satz auswählen würde. Die Schaltung, die die Wortleitung für den Satz erzeugt, nimmt die Konstante K für diesen Satz an. Im Folgenden wird ein Überblick über die Summenadressendecodierung gegeben.
-
Wenn A als ein Bitvektor a
n-1a
n-2...a
0 repräsentiert ist, B als ein Bitvektor b
n-1b
n-2...b
0) dargestellt ist und K als ein Bitvektor k
n-1K
n-2...k
0 repräsentiert ist, so kann man zeigen, dass, wenn A+B=K ist, der Ausgangsübertrag einer gegebenen Bitposition i-1 der Addition A+B (Cout
i-1) und der Eingangsübertrag in der nachfolgenden Bitposition i (Cin
i) durch die folgenden Gleichungen 1 und 2 gegeben ist (wobei „!“ eine Inversion repräsentiert, „XOR“ eine Exklusiv-ODER-Funktion repräsentiert, „&“ eine UND-Funktion angibt und „|“ eine ODER-Funktion repräsentiert):
-
Wenn A+B = K, dann ist Cout
i-1 gleich Cin
i für alle i (im Bereich von 0 bis n-1). Das heißt, der Term e
i gemäß Gleichung 3 ist 1 für alle i, wenn A+B=K.
-
Um Gleichungen von e
i zu erzeugen, die in dem Decodierer
140 verwendet werden können, ist es vorteilhaft, Terme zu erzeugen, die nicht von K abhängen (wobei jede der Gleichungen 1 und 2 und daher die Gleichung 3 abhängig sind). Insbesondere hängt die Gleichung 3 von k
i (über Cin
i) und k
i-1 (über Cout
i-1) ab. Somit können vier e
i-Terme für jede Bitposition i erzeugt werden. Jeder e
i-Term kann einen Satz aus Werten für k
i und k
i-1 annehmen. Diese Terme werden als e
1 kiki-1 bezeichnet, wobei k
i und k
i-1 in der Darstellung durch den angenommenen Wert für jedes Bit ersetzt werden (beispielsweise e
i 01 entspricht der Annahme k
i=0 und k
i-1=1). Gleichungen 4-7 zeigen die vier 4
i-Terme für jede Bitposition. Jede der Gleichungen 4-7 wird durch Einsetzen der Gleichungen 1 und 2 in die Gleichung 3 gebildet, wodurch der angenommene Wert für k
i und k
i-1 erhalten wird, und die Terme werden unter Anwendung der Bool'schen Algebra reduziert.
-
Ferner ersetzt für die Bitposition
0 des Index der Übertrag im Term (c
-1) den i-1 Term, um Gleichungen 8 und 9 zu bilden.
-
Die obigen Gleichungen können als Logik für jede Bitposition des Index in dem Wegevorhersagespeicher 142 eingerichtet werden, wobei der Übertrag in C-1 gleich dem Eingangsübertrag der Zwischenspeicherzeilenoffsetaddition ist. Dieser Übertrag kann beispielsweise von der AGU 12 von der virtuellen Adressenaddition geliefert werden. Der Eingangsübertrag kann spät eintreffen und kann zwischen Bänken auswählen, die beispielsweise gerade und ungerade Indizes darin aufweisen.
-
Um die Wortleitung für einen gegebenen Satz zu erzeugen, wird eines von ei 00, ej 01, ei 10 und ei 11 für jede Bitposition ausgewählt (auf der Grundlage des Wertes des Index entsprechend der erzeugten Wortleitung), und die ausgewählten Werte werden logisch UND-verknüpft, um die Wortleitung zu erzeugen. Beispielsweise kann die Wortleitung für den Index Null das logische UND von ei 00 jeder Bitposition und von e00c sein. Die Wortleitung für den Index 1 (k0=1, alle anderen ki=0) kann die logische UND-Verknüpfung von ei 00 für jedes i zwischen 2 und n-1, e1 01 und e0 1c sein. Die Wortleitung für den Index 2 (ki=1, alle anderen ki=0) kann die logische UND-Verknüpfung von ei 00 für jedes i zwischen 3 und n-1, e2 01, e1 10 und e0 0c sein. Die Wortleitung für den Index 3 (k1 und k0=1, alle anderen ki=0) kann die logische UND-Verknüpfung von ei 00 für jedes i zwischen 3 und n-1, e2 01, e1 11 und e0 1c sein. Weitere Wortleitungen für andere Indizes können in ähnlicher Weise gewählt werden.
-
Weitere Details hinsichtlich einer Ausführungsform der Summenadressendecodierung können in dem Artikel von William L. Lynch, Gary Lauterbach und Joseph I. Chamdani „Geringe Ladewartezeit durch summenadressierten Speicher (SAM)", Proceedings des 25. jährlichen Internatinalen Symposiums über Computerarchitektur, 1998, Seiten 369-379 erhalten werden.
-
Die Wegevorhersageeinheit 14 kann verwendet werden, um die Leistungsaufnahme des Prozessors 10 zu verringern, indem ein reduzierter Verbrauch in dem Cache-Datenspeicher 20 zugelassen wird. Beispielsweise kann in einigen Ausführungsformen der Cache-Datenspeicher 20 einen Speicher mit wahlfreiem Zugriff (RAM) aufweisen.
-
Speicherplätze in dem RAM können freigegeben werden, indem eine Wortleitung aktiviert wird. Die freigegebenen bzw. aktivierten Speicherstellen können gewisse Bitleitungen entladen, die mit der Speicherstelle verknüpft sind, wodurch eine Differenz aus Paaren von Bitleitungen erzeugt wird, die jedes Bit in der Speicherstelle repräsentiert. Die Paare aus Bitleitungen können in Fühlerverstärker eingespeist werden, die die Spannungsdifferenzen in Ausgangsbits umwandeln. In einigen Ausführungsformen kann der Cache-Datenspeicher-RAM 20 separate Wortleitungssignale für jeden Weg in dem Cache-Datenspeicher 20 bereitstellen. Die virtuelle Adresse kann decodiert werden, um eine Satzauswahl bereitzustellen, und die Satzauswahl kann mit der Wegevorhersage überprüft werden, um die Wortleitung für jeden Weg zu erzeugen. Somit kann der vorhergesagte Weg freigegeben werden, und andere Wege können deaktiviert werden, wodurch die in der Bitleitungsentladung, die ansonsten in den nicht freigegebenen Wegen auftreten würde, verbrauchte Leistung reduziert wird. Die Bitleitungsleistungsaufnahme kann häufig einer der signifikantesten Faktoren (und kann der signifikanteste Faktor) in der Leistungsaufnahme eines derartigen Speichers sein. Ein Beispiel eines Teils einer derartigen Ausführungsform des Cache-Datenspeichers 20 ist in 11 gezeigt, in der die virtuelle Adresse (VA) von einem Decodierer empfangen wird, der eine Satzauswahl (beispielsweise Satz 0 in 11 und andere Sätze, die in 11 nicht gezeigt sind) erzeugt. UND-Gatter empfangen eine Kennzeichnung, dass der Weg 0 vorhergesagt ist (WP0) oder der Weg 1 vorhergesagt ist (WP1), und entsprechende Wegewortleitungen werden für den Weg 0 und den Weg 1 erzeugt. Das Bit 0 jedes Weges ist in 11 gezeigt, wobei die entsprechende Wegewortleitung empfangen wird. Das Bit 0 jedes Weges wird von einem Multiplexer hinsichtlich der Spalte angesteuert, der ebenfalls von den Wegevorhersagen gesteuert wird (um das Bit 0 von dem vorhergesagten Weg auszuwählen), und ein Fühlerverstärker (SAO) erfasst das Bit 0 von dem vorhergesagten Weg und gibt das Bit 0 aus dem Cache-Datenspeicher 20 heraus. Andere Bits können in ähnlicher Weise behandelt werden, und es können zusätzliche Wege vorgesehen werden, indem zusätzliche UND-Gatter und Wegevorhersagen bereitgestellt werden.
-
In anderen Ausführungsformen ist die Wegevorhersage nicht ausreichend früh verfügbar, um die Auswahl einer Wortleitungserzeugung vorzusehen. In derartigen Ausführungsformen können die Wortleitungen jedes Weges auf der Grundlage des Decodierens der Adresse angesteuert werden, und die Bitleitungsentladung kann in jedem Wege erfolgen. In einigen Ausführungsformen können die Bits jedes Weges physikalisch verzahnt und einem Spaltenmultiplexvorgang in den Fühlerverstärkern unterzogen werden.
-
Das heißt, dass das Bit 0 jedes Weges kann physikalisch benachbart zu anderen entsprechenden Bits angeordnet werden, und der Multiplexer kann das Bit 0 aus dem ausgewählten Weg an den Eingang des Fühlerverstärkers für das Bit 0 des Ausgangs anlegen. Andere Ausgangsbits können in ähnlicher Weise ausgewählt werden. Die Wegevorhersage kann benutzt werden, um eine Auswahlsteuerung für den Spaltenmultiplexer bereitzustellen, und somit kann die Anzahl der Fühlerverstärker gleich der Anzahl der von einem Weg ausgegebenen Bits sein (anstelle der Anzahl der von einem Weg ausgegebenen Bits mal der Anzahl der Wege). Leistung, die in den Fühlerverstärkern und beim Abgeben von Daten der Fühlerverstärker verbraucht wird, kann im Vergleich dazu reduziert werden, wenn separate Fühlerverstärker für jeden Weg vorgesehen sind. Die Ausleseleistung der Fühlerverstärker kann häufig einer der wichtigsten Faktoren (und kann der signifikanteste Faktor neben der Bitleitungsleistungsaufnahme sein) beim Leistungsverbrauch eines derartigen Speichers sein. Ein Beispiel eines Teils einer derartigen Ausführungsform ist in 12 gezeigt. Der Decodierer (ähnlich dem Decodierer in 11) decodiert die eingespeiste virtuelle Adresse (VA), um Wortleitungen zu erzeugen (d.h. Wortleitung 0 in 12 und andere Wortleitungen für andere Sätze, die in 12 nicht gezeigt sind). Das Bit 0 der Wege 0 und 1 ist gezeigt, und jedes Bit entlädt seine Bitleitungen in Reaktion auf das Setzen der Wortleitung. Der Multiplexer in 12 wird von den Wegevorhersagen gesteuert, um das Bit 0 von dem vorhergesagten Weg in dem Fühlerverstärker für das Bit 0 auszuwählen (SA0 in 12). Andere Bits, die von dem vorhergesagten Weg ausgelesen werden, können in ähnlicher Weise behandelt werden, und es können weitere Wege in ähnlicher Weise gehandhabt werden.
-
In anderen Ausführungsformen können separate Fühlerverstärker für jeden Weg vorgesehen werden, aber die Fühlerverstärker können einen Freigabeeingang zur Aktivierung der Funktion aufweisen. Die Wegevorhersage kann angewendet werden, um lediglich die Fühlerverstärker in dem vorgesagten Weg für derartige Anwendungen zu aktivieren, und es kann Leistung, die in den Fühlerverstärkern und zum Ausgeben der Daten aus den Fühlerverstärkern verbraucht wird, in ähnlicher Weise wie bei der Verwendung der Spaltenmultiplex-Technik reduziert werden. 13 ist ein Beispiel einer derartigen Ausführungsform des Cache-Datenspeichers 20. Wiederum kann der Decodierer die eingespeiste virtuelle Adresse (VA) decodieren und Wortleitungen erzeugen, die dem Speicher für den Weg 0 und den Weg 1 zugeleitet werden. Jeder Weg gibt eine Anzahl an Bitleitungen an einen Satz aus Fühlerverstärkern für den Weg aus. Jeder Satz aus Fühlerverstärkern empfängt ein Freigabesignal, das von der Wegevorhersage für diesen Weg (WP0 und WP1 für die Wege 0 bzw. 1) gesteuert wird. Der Cache-Datenspeicher 20 in dieser Ausführungsform kann ferner auch einen Multiplexer beinhalten, um den vorhergesagten Weg aus den Ausgängen der Fühlerverstärker auszuwählen.
-
In noch weiteren Ausführungsformen kann es möglich sein, lediglich die eingespeiste virtuelle Adresse in den Weg einzuspeisen, der vorhergesagt ist, wodurch die Leistung reduziert wird, indem die Adresse der nicht vorhergesagten Wege nicht angesteuert wird.
-
10 ist ein Flussdiagramm, worin ein Austauschmechanismus gezeigt ist, der von dem Datenzwischenspeicher 16 in Reaktion auf ein Nichttreffen des Zwischenspeichers angewendet werden kann. Obwohl die Blöcke in 10 in einer speziellen Reihenfolge für ein besseres Verständnis gezeigt sind, können auch andere Reihenfolgen angewendet werden. Blöcke können parallel mittels kombinatorischer Logikschaltungen ausgeführt werden, oder können über zwei oder mehrere Taktzyklen in einer Pipeline-weise nach Bedarf ausgeführt werden.
-
Wenn die Wegevorhersageeinheit 14 eine Wegevorhersage für die virtuelle Adresse macht, die zu einem Nichttreffen des Zwischenspeichers führt (Entscheidungsblock 160), dann wird der vorhergesagte Weg für das Austauschen ausgewählt (Block 162). Ansonsten wird der Weg zum Austauschen gemäß dem Austauschschema ausgewählt, das von dem Zwischenspeicher (Block 164) eingerichtet ist. Es kann ein beliebiger Austauschalgorithmus eingesetzt werden (beispielsweise LRU, Pseudo-LRU, zufällig, etc.).
-
Der obige Algorithmus zwingt einen Zwischenspeicherblock, der in dem Zwischenspeicher einen Nichttreffer bezeichnet, der aber mit einem aktuellen Wegevorhersagewert in der Wegevorhersageeinheit 14 übereinstimmt, die Zwischenspeicherzeile entsprechend dieser Wegevorhersagewert auszutauschen. Somit kann der gleiche Wegevorhersagewert in mehr als einer Speicherstelle in einem Satz gespeichert sein.
-
14 ist ein Flussdiagramm, das die Bildung einer Wegevorhersage gemäß einer Ausführungsform der Wegevorhersageeinheit 14 zeigt. Obwohl die Blöcke in 14 in einer speziellen Reihenfolge zur besseren Verständlichkeit gezeigt sind, können auch andere Reihenfolgen verwendet werden. Blöcke können parallel mittels kombinatorischer Logikschaltungen ausgeführt werden, oder können über zwei oder mehrere Taktzyklen hinweg in einer Pipeline-Art nach Bedarf ausgeführt werden.
-
Die Wegevorhersageeinheit 14 decodiert die Kennzeichnung der Adresse (beispielsweise Adressenoperanden, oder in einigen Ausführungsformen die Adresse selbst) (Block 170). Die Wegevorhersageeinheit 14 gibt mehrere Wegevorhersagewerte von dem Satz, der durch das Decodieren gekennzeichnet ist, aus (Block 172). Die ausgegebenen Wegevorhersagewerte können mit einem Weg entsprechend der eingespeisten Adresse, die in Block 170 decodiert wurde, verglichen werden (Block 174). Wenn die Vergleichsergebnisse zu einem Weg führen (Entscheidungsblock 176, „ja“-Verzweigung), kann die Wegevorhersage in gleicher Weise erzeugt werden wie der Weg, für den die Übereinstimmung erkannt wird (Block 178). Ansonsten (Entscheidungsblock 176, „nein“-Verzweigung) wird keine Wegevorhersage erzeugt und die Wegevorhersageeinheit 14 die frühe Nichttrefferkennzeichnung erzeugen (Block 180). Zusammen können die Blöcke 176, 178 und 180 eine Ausführungsform zum Erzeugen einer Wegevorhersage repräsentieren.
-
Computersysteme
-
15 zeigt eine Blockansicht einer Ausführungsform eines Computersystems 200 mit einem Prozessor 10, der mit einer Reihe von Systemkomponenten über eine Busbrücke 202 verbunden ist. In dem dargestellten System ist ein Hauptspeicher 204 mit der Busbrücke 202 über einen Speicherbus 206 verbunden, und eine Grafiksteuerung 208 ist mit der Busbrücke 202 über einen AGP-Bus 210 verbunden. Schließlich sind mehrere PCI-Geräte 212A-212B mit der Busbrücke 202 über einen PCI-Bus 214 verbunden. Eine sekundäre Busbrücke 216 kann ferner vorgesehen sein, um eine elektrische Schnittstelle mit einem oder mehreren EISA- oder ISA-Geräten 218 über einen EISA/ISA-Bus 220 zu bilden. Der Prozessor 10 ist mit der Busbrücke 202 über einen CPU-Bus 224 und mit einem optionalen L2-Cache- bzw. Zwischenspeicher 228 verbunden. Der CPU-Bus 224 und die Schnittstelle zu dem L2-Zwischenspeicher 228 können zusammen eine externe Schnittstelle bilden, an die eine externe Schnittstelleneinheit 18 angeschlossen werden kann. Der Prozessor 10 kann der in 1 gezeigte Prozessor sein und kann die strukturellen und funktionellen Details enthalten, die in den 2-14 gezeigt sind.
-
Die Busbrücke 202 stellt eine Schnittstelle zwischen dem Prozessor 10, dem Hauptspeicher 204, der Grafiksteuerung 208 und den an den PCI-Bus 214 angeschlossenen Geräten bereit. Wenn eine Operation von einem der Geräte, die mit der Busbrücke 202 verbunden sind, empfangen wird, erkennt die Busbrücke 202 das Ziel der Operation (beispielsweise ein spezielles Gerät oder im Falle des PCI-Busses 214, dass das Ziel auf den PCI-Bus 214 liegt). Die Busbrücke 202 leitet die Operation an das Zielgerät weiter. Die Busbrücke 202 übersetzt im Allgemeinen eine Operation von dem Protokoll, das von dem Quellengerät oder dem Bus verwendet wird, in das Protokoll, das von dem Zielgerät oder Bus benutzt wird.
-
Zusätzlich zur Bereitstellung einer Schnittstelle zu einem ISA/EISA-Bus für den PCI-Bus 214 kann die sekundäre Busbrücke 216 nach Bedarf weitere Funktionen aufweisen. Eine Eingabe/Ausgabesteuerung (nicht gezeigt), die extern zu oder integriert in der sekundären Busbrücke 216 sein kann, ist ebenso in dem Computersystem 200 enthalten, um die Funktion einer Tastatur und einer Maus 222 und diverser anderer serieller und paralleler Anschlüsse nach Bedarf zu unterstützen. Eine externe Cache- bzw. Zwischenspeichereinheit (nicht gezeigt) kann in anderen Ausführungsformen zwischen dem Prozessor 10 und der Busbrücke 202 mit dem CPU-Bus 224 verbunden sein. Alternativ kann der externe Zwischenspeicher mit der Busbrücke 202 verbunden sein, und eine Zwischenspeichersteuerlogik kann für den externen Zwischenspeicher in der Busbrücke 202 integriert sein. Der L2-Zwischenspeicher 228 ist ferner einer Rückseitenkonfiguration in Bezug auf den Prozessor 10 dargestellt. Zu beachten ist, dass der L2-Zwischenspeicher 228 von dem Prozessor 10 getrennt angeordnet sein kann und in einem Gehäuse (beispielsweise einem Einschub 1 oder Einschub A) des Prozessors 10 integriert sein kann, oder sogar auf einem Halbleitersubstrat zusammen mit dem Prozessor 10 ausgebildet sein kann.
-
Der Hauptspeicher 204 ist ein Speicher, in welchem Anwendungsprogramme gespeichert sind und in welchem der Prozessor 10 aus hauptsächlich operiert. Ein geeigneter Hauptspeicher 204 umfasst einen DRAM (dynamischer Speicher mit wahlfreiem Zugriff). Beispielsweise können viele Bänke aus SDRAM (synchrone DRAM), (DDR), SDRAMs mit doppelter Geschwindigkeit oder Rambus DRAM (RDRAM) geeignet sein. Der Hauptspeicher 204 kann den in 4 gezeigten Systemspeicher 42 enthalten.
-
Die PCI-Geräte 212A-212B sind beispielhaft für diverse periphere Geräte. Die peripheren Geräte können Geräte miteinschließen, die zur Kommunikation mit einem anderen Computersystem dienen, mit denen die Geräte verbunden sind (beispielsweise Netzwerkschnittstellenkarten, Modems, etc.). Des Weiteren können die peripheren Geräte andere Einrichtungen, etwa beispielsweise Videobeschleuniger, Audiokarten, Festplatten oder Diskettenlaufwerke oder Laufwerkssteuerungen, SCSI- (Kleincomputersystemschnittstelle) Adapter und Telefonkarten enthalten. In ähnlicher Weise ist das ISA-Gerät 218 für diverse Arten an peripheren Geräten, etwa ein Modem, eine Plankarte, und eine Vielzahl von Datennahmekarten, etwa GPIB oder Feldbus-Schnittstellenkarten repräsentativ.
-
Die Grafiksteuerung 208 ist vorgesehen, um das Erzeugen von Text und Bildern auf einer Anzeige 226 zu steuern. Die Grafiksteuerung 208 kann einen typischen Grafikbeschleuniger verkörpern, der im Allgemeinen bekannt ist, um damit dreidimensionale Datenstrukturen zu erzeugen, die in effizienter Weise in den Hauptspeicher 204 hinein und aus diesem heraus verschoben werden können. Die Grafiksteuerung 208 kann daher ein übergeordnetes Gerät bzw. ein Master des AGP-Busses 210 sein, insofern, dass es Zugriff auf eine Zielschnittstelle innerhalb der Busbrücke 202 anfordern und empfangen kann, um damit einen Zugriff auf den Hauptspeicher 204 zu erhalten. Ein zugeordneter Grafikbus übernimmt das rasche Abrufen von Daten aus dem Hauptspeicher 204. Für gewisse Operationen kann die Grafiksteuerung 208 ferner ausgebildet sein, um PCI-Protokolltransaktionen auf dem AGP-Bus 210 zu erzeugen. Die AGP-Schnittstelle der Busbrücke 202 kann damit Funktionen enthalten, um sowohl AGP-Protokolltransaktionen sowie auch PCI-Protokollziel- und Initiationstransaktionen zu unterstützen. Die Anzeige 226 ist eine beliebige elektronische Anzeige, auf der ein Bild oder ein Text dargestellt werden kann. Zu einer geeigneten Anzeige 226 gehört eine Kathodenstrahlröhre (CRT"), eine Flüssigkristallanzeige („LCD“), etc.
-
Zu beachten ist, dass, obwohl die AGP-, PCI- und ISA- oder EISA-Busse als Beispiele in der obigen Beschreibung verwendet sind, beliebige Busarchitekturen stattdessen nach Bedarf eingesetzt werden können. Ferner ist zu beachten, dass das Computersystem 200 ein mehrfach prozessierendes Computersystem einschließlich zusätzlicher Prozessoren (beispielsweise der Prozessor 10a, der optional als Komponente im Computersystem 200 gezeigt ist) enthalten kann. Der Prozessor 10a kann ähnlich zu dem Prozessor 10 sein. Insbesondere kann der Prozessor 10a eine identische Kopie des Prozessors 10 sein. Der Prozessor 10a kann mit der Busbrücke 202 über einen unabhängigen Bus (in 15 gezeigt) verbunden sein oder kann sich den CPU-Bus 224 mit dem Prozessor 10 teilen. Ferner kann der Prozessor 10a mit einem optionalen L2-Zwischenspeicher 228a ähnlich dem L2-Zwischenspeicher 228 verbunden sein.
-
In 16 ist eine weitere Ausführungsform eines Computersystems 300 gezeigt. In der Ausführungsform aus 16 umfasst das Computersystem 300 diverse Verarbeitungsknoten 312A, 312B, 312C und 312D. Jeder Verarbeitungsknoten ist mit einem entsprechenden Speicher 314A-314D über eine Speichersteuerung 316A-316D verbunden, die jeweils entsprechend in den Verarbeitungsknoten 312A-312D enthalten sind. Des Weiteren umfassen die Verarbeitungsknoten 312A-312D eine Schnittstellenlogik, die zur Kommunikation zwischen den Verarbeitungsknoten 312A-312D verwendet wird. Beispielsweise umfasst der Verarbeitungsknoten 312A eine Schnittstellenlogik 318A zur Kommunikation mit dem Verarbeitungsknoten 312B, eine Schnittstellenlogik 318B zur Kommunikation mit dem Verarbeitungsknoten 312C und eine dritte Schnittstellenlogik 318C zur Kommunikation mit einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher Weise umfasst der Verarbeitungsknoten 312B eine Schnittstellenlogik 318D, 318E und 318F; der Verarbeitungsknoten 312C umfasst eine Schnittstellenlogik 318G, 318H und 318I; und der Verarbeitungsknoten 312D umfasst eine Schnittstellenlogik 318J, 318K und 318L. Der Verarbeitungsknoten 312D ist angeschlossen, um mit mehreren Eingabe/Ausgabegeräten (beispielsweise Geräte 320A-320B in einer verketteten Konfiguration) über die Schnittstellenlogik 318L zu kommunizieren. Weitere Verarbeitungsknoten können mit anderen I/O-Geräten in ähnlicher Weise kommunizieren.
-
Die Verarbeitungsknoten 312A-312D richten eine paketbasierte Verbindung für eine Kommunikation zwischen den Verarbeitungsknoten ein. In der vorliegenden Ausführungsform wird die Verbindung als Mengen aus unidirektionalen Leitungen (beispielsweise Leitungen 324A für den zum Übertragen von Paketen von dem Verarbeitungsknoten 312A zu den Verarbeitungsknoten 312B verwendet, und Leitungen 324B werden zum Übertragen von Paketen von dem Verarbeitungsknoten 312B zu dem Verarbeitungsknoten 312A verwendet) eingerichtet. Andere Sätze aus Leitungen 324C-324H werden verwendet, um Pakete zwischen anderen Verarbeitungsknoten zu übertragen, wie in 16 gezeigt ist. Im Allgemeinen kann jeder Satz aus Leitungen 324 eine oder mehrere Datenleitungen, eine oder mehrere Taktleitungen entsprechend den Datenleitungen und eine oder mehrere Steuerleitungen, die die Art der transportierten Pakete kennzeichnen, aufweisen. Die Verbindung kann in einer mit dem Zwischenspeicher kohärenten Weise für die Kommunikation zwischen Verarbeitungsknoten betrieben werden, oder in einer nicht kohärenten Weise zur Kommunikation zwischen einem Verarbeitungsknoten und einem I/O-Gerät (oder einer Busbrücke in einem I/O-Bus konventionellen Aufbaus, etwa dem PCI-Bus oder dem ISA-Bus) betrieben werden. Ferner kann die Verbindung in einer nicht kohärenten Weise unter Anwendung einer verketteten Struktur zwischen den I/O-Geräten in der gezeigten Weise betrieben werden. Zu beachten ist, dass ein von einem Verarbeitungsknoten zu einem weiteren zu übertragendes Paket durch einen oder mehrere zwischenliegende Knoten laufen kann. Beispielsweise kann ein Paket, das von dem Verarbeitungsknoten 312A zu dem Verarbeitungsknoten 312D zu übertragen ist, durch den Verarbeitungsknoten 312B oder durch den Verarbeitungsknoten 312C laufen, wie dies in 16 gezeigt ist. Es kann ein beliebiger Signalführungsalgorithmus eingesetzt werden. Andere Ausführungsformen des Computersystems 300 können mehr oder weniger Verarbeitungsknoten als die in 16 gezeigte Ausführungsform aufweisen.
-
Im Allgemeinen können die Pakete als eine oder mehrere Bitzeiten auf den Leitungen 324 zwischen den Knoten übertragen werden. Eine Bitzeit kann die ansteigende oder abfallende Flanke des Taktsignals der entsprechenden Taktleitungen sein. Die Pakete können Befehlspakete zur Initiierung von Transaktionen, Sondierungspakete zur Beibehaltung der Zwischenspeicherkohärenz und Antwortpakete zum Antworten auf Sondierungen und Befehle enthalten.
-
Die Verarbeitungsknoten 312A-312D können zusätzlich zu einer Speichersteuerung und einer Schnittstellenlogik einen oder mehrere Prozessoren enthalten. Allgemein gesagt, umfasst ein Verarbeitungsknoten mindestens einen Prozessor und kann optional eine Speichersteuerung zur Kommunikation mit einem Speicher und andere Logik nach Bedarf aufweisen. Insbesondere kann jeder Verarbeitungsknoten 312A-312D eine oder mehrere Kopien des Prozessors 10, wie in 1 gezeigt ist, aufweisen (d.h. mit diversen strukturellen und funktionellen Details, wie sie in den 2-14 gezeigt sind). Die externe Schnittstelleneinheit 18 kann die Schnittstellenlogik 318 in dem Knoten sowie die Speichesteuerung 316 umfassen.
-
Die Speicher 314A-314D können beliebige geeignete Speichereinrichtungen umfassen. Beispielsweise kann ein Speicher 314A-314D einen oder mehrere RAMBUS DRAMs (RDRAMs), synchrone DRAMs (SDRAMs), DDR SDRAM, statische RAM, etc. aufweisen. Der Adressenraum des Computersystems 300 ist auf die Speicher 314A-314D aufgeteilt. Jeder Verarbeitungsknoten 312A-312D kann eine Speicherkarte enthalten, die verwendet wird, um zu bestimmen, welche Adresse welchem Speicher 314A-314D zugeordnet ist, und somit zu bestimmen, welchem Verarbeitungsknoten 312A-312D eine Speicheranforderung für eine spezielle Adresse zuzuleiten ist. In einer Ausführungsform ist der Kohärenzpunkt für eine Adresse in dem Computersystem 300 die Speichersteuerung 316A-316D, die mit dem Speicher verbunden ist, der die Bytes entsprechend der Adresse enthält. Anders ausgedrückt, die Speichersteuerung 316A-316D ist dafür verantwortlich sicherzustellen, dass jeder Speicherzugriff auf den entsprechenden Speicher 314A-314D in einer mit dem Zwischenspeicher kohärenten Weise auftritt. Die Speichersteuerungen 316A-316D können eine Steuerschaltung zur Verbindung mit den Speichern 314A-314D aufweisen. Des Weiteren können die Speichersteuerungen 316A-316D Anforderungsreihen für das Aneinanderreihen von Speicheranforderungen aufweise.
-
Im Allgemeinen kann die Schnittstellenlogik 318A-318L eine Vielzahl an Puffern zum Empfangen von Paketen von der Verbindung und zum Puffern von Paketen, die über die Verbindung zu senden sind, umfassen. Das Computersystem 300 kann einen beliebigen geeigneten Ablaufsteuerungsmechanismus zum Übertragen von Paketen einsetzen. Beispielsweise speichert in einer Ausführungsform jede Schnittstellenlogik 318 eine Anzahl der Nummer jedes Puffertyps innerhalb des Empfängers am anderen Ende der Verbindung, mit der die Schnittstellenlogik verbunden ist. Die Schnittstellenlogik überträgt kein Paket, sofern die empfangende Schnittstellenlogik nicht einen freien Puffer zur Speicherung des Pakets aufweist. Wenn ein Empfangspuffer durch Weiterleiten eines Paketes verfügbar ist, sendet die empfangende Schnittstellenlogik eine Nachricht zu der sendenden Schnittstellenlogik, um anzuzeigen, dass der Puffer freigegeben ist. Ein derartiger Mechanismus kann als ein „Coupon-basiertes“ System bezeichnet werden.
-
Die I/O-Geräte 320A-320B können beliebige geeignete I/O-Geräte sein. Beispielsweise können die I/O-Geräte 320A-320B Einrichtungen zur Kommunikation mit einem anderen Computersystem beinhalten, mit denen die Geräte gekoppelt sind (beispielsweise Netzwerkschnittstellenkarten oder Modems). Des Weiteren können die I/O-Geräte 320A-320B Videobeschleuniger, Audiokartenbeschleuniger, Audiokarten, Festplatten oder Laufwerke oder Laufwerkssteuerungen, SCSI (Kleincomputersystemschnittstellen) Adapter und Telefonkarten, Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB oder Feldbus-Schnittstellenkarten umfassen. Zu beachten ist, dass der Begriff „I/O-Gerät“ und der Begriff „Periphergerät“ als Synonym zu betrachten sind.
-
Bei einer vollständigen Würdigung der obigen Offenbarung werden für den Fachmann diverse Variationen und Modifizierungen ersichtlich. Es ist beabsichtigt, dass die folgenden Patentansprüche so interpretiert werden, dass alle derartigen Variationen und Modifizierungen eingeschlossen sind.
-
Industrielle Anwendbarkeit
-
Diese Erfindung kann allgemein auf dem Gebiet von Prozessoren angewendet werden.