-
1. Technisches
Gebiet
-
Die
vorliegende Erfindung betrifft Prozessoren und insbesondere einen
Translation-Lookaside-Puffer zum Speichern von Adressenumsetzungen.
-
2. Stand der
Technik
-
Bei
Computersystemen mit einem Speicher-Management kann es erforderlich
sein, virtuelle Adressen in reelle Adressen umzusetzen, um einen Speicherzugriff
durchzuführen.
Es werden typische Computerprogramme geschrieben, um ein Speichermodell
anzusprechen und somit beim Durchführen eines Speicherzugriffs
virtuelle Speicheradressen auszugeben. Eine virtuelle Speicheradresse
muss dann zum Zugreifen auf die von dem Programm benötigten Informationen
in eine reelle Adresse umgesetzt werden. Es gibt verschiedene Mechanismen
in unterschiedlichen Computerarchitekturen zum Durchführen einer
Umsetzung von einer virtuellen in eine reelle Adresse.
-
Ein
Problem beim Durchführen
von Adressenumsetzungen ist die Latenz. Zusätzlich zu der zum Zugreifen
auf die Informationen aus einem Speicher benötigten Zeit kann eine Anzahl
von Taktzyklen zum Durchführen
der Adressenumsetzungen verwendet werden. Diese nachteilige Latenz
kann bei Programmen, die häufige
Speicherzugriffe durchführen,
störend
oder inakzeptabel werden. Ein allgemein angewandtes Verfahren zum
Reduzieren der nachteiligen Latenz beim Umsetzen von Adressen ist
die Verwendung eines Translation-Lookaside-Puffers (TLB). Ein TLB
ist ein kleiner Speicher innerhalb eines Prozessors und wird zum
Speichern von Umsetzungen von virtuellen in reelle Adressen verwendet.
Ein typischer TLB kann sowohl virtuelle als auch reelle Adressen der
jüngsten
Adressenumsetzungen speichern. Wenn ein Programm einen Speicherzugriff
versucht, kann es eine virtuelle Adresse ausgeben. Der TLB kann
dann nach der ausgegebenen virtuellen Adresse durchsucht werden.
Wenn diese virtuelle Adresse gefunden ist, kann eine der ausgegebenen
virtuellen Adresse entsprechende reelle Adresse zum Zugreifen auf
den Hauptspeicher verwendet werden. Typischerweise werden Umsetzungen
auf Seitenbasis (z. B. 4 Kilobyte, 2 Megabyte, 4 Megabyte etc.)
durchgeführt
und kann der TLB den Seitenteil der virtuellen Adresse und den Seitenteil
der entsprechenden reellen Adresse speichern.
-
Trotz
der von einem TLB gebotenen Vorteile gibt es immer noch Probleme.
Ein solches Problem tritt bei einer Programmumschaltung auf. Bei
vielen Prozessoren, bei denen ein TLB verwendet wird, führt eine
Programmumschaltung zum Entfernen sämtlicher in dem TLB gespeicherten
Umsetzungen. Dies ist als TLB-Leeren bekannt. Der TLB wird geleert,
da eine oder mehrere Adressenumsetzungen entsprechend dem ausgeschalteten
Programm modifiziert werden können
und somit die in dem TLB gepufferten Umsetzungen möglicherweise
nicht mehr die korrekten Umsetzungen sind. Wenn der der Programmumschaltung
folgende neue Prozess abläuft, macht
jeder Speicherzugriff leider eine Adressenumsetzung erforderlich
und muss der TLB neu geladen werden. Die Adressenumsetzungen und
das Neuladen des TLB können
zu langen nachteiligen Latenzen führen. Diese nachteiligen Latenzen
können durch
Programme oder Betriebssysteme verstärkt werden, bei denen häufige Programmumschaltungen erforderlich
sind.
-
Die
in einem TLB gespeicherten Adressenumsetzungen werden durch darunter
liegende in dem Speicher gespeicherte Datenstrukturen gestützt. Beispielsweise
können
Computer, bei denen ein Paging angewendet wird, Datenstrukturen
in einer Seitentabelle speichern. Solche Datenstrukturen können die
Umsetzungen enthalten, die in den TLB geladen sind. Obwohl diese
Datenstrukturen für
ein Programm verändert
werden können,
das über
eine Pro grammumschaltung ausgeschaltet worden war, werden diese
Datenstrukturen häufig
nicht verändert. Trotz
der Tatsache, dass die Datenstrukturen nicht in allen Fällen verändert werden,
kann ein typischer Prozessor trotzdem den TLB leeren. Ein TLB-Leeren unter
solchen Umständen
ist möglicherweise
nicht erforderlich und kann zu den oben beschriebenen langen nachteiligen
Latenzen führen.
-
In
US-A-6,021,481 ist ein Verfahren zum Verwalten eines Cache-Speichers
für Umsetzungen
von effektiven in echte Adressen beschrieben, bei dem eine Aufzeichnung
darüber
geführt
wird, welche Segmentregister aktuell in dem Cache-Speicher abgebildet
sind. Wenn dann ein Übertragung-zu-einem-Segmentregister-
(MTSR-) Befehl ausgeführt
wird, wird ein Cache-Speicher-Segmentregister-Latch untersucht,
um festzustellen, ob dieses Segmentregister in dem Cache-Speicher
abgebildet ist, und wenn dies der Fall ist, wird ein Invalidierungs-Latch
gesetzt. Wenn dann ein Programmsynchronisierungsereignis eintritt,
wird das Invalidierungs-Latch untersucht, um festzustellen, ob der
Cache-Speicher invalidiert werden soll oder nicht.
-
In
DE-A-195 16 949 ist ein Leerungs-Lookaside-Puffer (FLB) für ein schnelles
Invalidieren ganzer Bereiche in einem Translation-Lookaside-Puffer (TLB)
beschrieben, wobei bei Überlaufen
des FLB sowohl der TLB als auch der FLB invalidiert werden.
-
In
EP-A-0,568,195 ist ein Prozess zum Reduzieren des Gesamtplatzbedarfs
für das
TLB-Leeren dadurch, dass ein TLB nur dann geleert wird, wenn ein
Adressenplatz für
eine neue Aufgabe wiederverwendet wird, beschrieben, wobei ein FIFO Adressenplatzidentifizierer
mit einer Leerungs-Markierung aufweist, die ein Leeren bewirkt,
wenn sie am oberen Teil des FIFO erscheint.
-
In
US-A-4,053,948 ist ein Lookaside-Array-Invalidierungs-Mechanismus
mit einem Leerungs-Zähler
und einem Leerungs-Zählfeld
in einem TLB-Eingang mit einem Inkrement-Zähler und einer Invalidierung
des TLB bei Zählerüberlauf
beschrieben.
-
Die
oben beschriebenen Probleme können zum
großen
Teil durch ein Translation-Lookaside-Puffer- (TLB-) Leerungsfilter,
das nachstehend beschrieben wird, gelöst werden. Bei einer Ausführungsform
weist ein Prozessor einen TLB zum Speichern jüngerer Adressenumsetzungen
auf. Ein TLB-Leerungsfilter überwacht
Speicherblöcke,
aus denen Adressenumsetzungen geladen und in dem TLB gepuffert worden
sind. Das TLB-Leerungsfilter stellt fest, ob sich darunter liegende
Adressenumsetzungen in dem Speicher verändert haben. Wenn keine Veränderungen
aufgetreten sind, kann das TLB-Leerungsfilter ein Leeren des TLB
bei einer Programmumschaltung verhindern. Wenn Veränderungen
an den darunter liegenden Adressenumsetzungen aufgetreten sind,
kann das TLB-Leerungsfilter ein Leeren des TLB nach einer Programmumschaltung
ermöglichen.
-
Bei
einer Ausführungsform
verwendet das TLB-Filter eine Bereichstabelle zum Verfolgen von Speicherblöcken, aus
denen Adressenumsetzungen in dem TLB gepuffert worden sind. Das
TLB-Leerungsfilter kann Modifikationen an den darunter liegenden
Adressenumsetzungen in verschiedenen Speicherblöcken (typischerweise Seitentabellen
oder Verzeichnissen) überwachen.
Eine erste Programmumschaltung kann zu einer TLB-Leerung führen und
kann dann das TLB-Leerungsfilter aktivieren. TLB-Leerungen können bei
nachfolgenden Programmumschaltungen von dem TLB-Leerungsfilter blockiert
werden, wenn keine Veränderungen
an den darunter liegenden Adressenumsetzungen in dem Speicher in
der Bereichstabelle detektiert werden.
-
Das
Verfahren zum Betreiben des TLB-Leerungsfilters umfasst ferner das
Verfolgen von Programmumschaltungen. Bei einer Ausführungsform kann
dies durch Markieren der Werte eines Basisadressenregisters erfolgen.
Das Basisadressenregister kann zum Speichern der Basisadresse einer
einem speziellen Programm zugeordneten Seitentabelle vorgesehen
sein. Die Markierung und der Istwert des Registers können als
Einträge
in der Bereichstabelle gespeichert werden und können spezifischen Speicherbereichen
entsprechen.
-
Die
Markierung kann zusammen mit anderen Daten in einem TLB-Eintrag
gespeichert werden, um die Umsetzung in diesem Eintrag einem Programm zuzuordnen.
Auf diese Weise können
Umsetzungen für
viele Programme gleichzeitig in dem TLB vorhanden sein. Nur Umsetzungen
mit Programmmarkierungen, die mit der aktuellen Programmmarkierung übereinstimmen,
stehen dem aktuellen Programm zur Verfügung.
-
Die
bei einer Ausführungsform
verwendete Bereichstabelle ist mit einem inhaltsadressierbaren Speicher
(CAM) und einem Direktzugriffsspeicher (RAM) implementiert. Der
CAM kann zum Speichern von Informationen bezüglich der Speicherstrukturen verwendet
werden, aus denen Adressenumsetzungen in den TLB geladen werden.
Solche Informationen können
Seitenverzeichnisinformationen und Seitentabelleinformationen enthalten.
Der RAM kann zum Speichern von Werten des Basisadressenregisters
und der diesem zugeordneten Markierung verwendet werden. Ein Zähler kann
ferner zum Verfolgen der Anzahl von Basisadresseneinträgen verwendet
werden. Bei Zählerüberlauf
können
das TLB-Leerungsfilter deaktiviert und die Bereichstabelle gelöscht werden.
Ein Bereichszähler
kann ferner zum Aufzeichnen der Anzahl von in dem CAM gespeicherten
Einträgen
verwendet werden. Ein Überlaufen
dieses Zählers
kann ebenfalls ein Deaktivieren des TLB-Leerungsfilters und ein
Löschen
der Bereichstabelle bewirken. Nach der Deaktivierung des TLB-Leerungsfilters
kann eine Programmumschaltung zu einer TLB-Leerung führen. Das
TLB-Leerungsfilter kann dann wieder aktiviert werden.
-
Somit
kann bei verschiedenen Ausführungsformen
das TLB-Leerungsfilter unnötige
Entleerungen eines TLB verhindern. Da unnötige Entleerungen eines TLB
verhindert werden können,
kann ein neues Programm die zuvor gepufferten Adressenumsetzungen
verwenden, wenn sich keine der darunter liegenden Adressenumsetzungen
verändert
haben. In vielen Fällen
kann dadurch das Erfordernis der Wiederholung des Prozesses des
Umsetzens einer virtuellen Adresse in eine reelle Adresse und des
Pufferns dieser Adresse in dem TLB eliminiert werden. Somit kann
die Latenz bei einer großen
Anzahl von Spei cherzugriffen beträchtlich reduziert werden und
kann dadurch eine beträchtliche
Steigerung der Prozessorleistung ermöglicht werden.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Weitere
Aufgaben und Vorteile der Erfindung werden anhand der folgenden
detaillierten Beschreibung mit Bezug auf die beiliegenden Zeichnungen
offensichtlich. Es zeigen:
-
1 ein Blockschaltbild einer
Ausführungsform
eines Prozessors, bei dem ein TLB-Leerungsfilter implementierbar
ist;
-
2 ein Blockschaltbild einer
Ausführungsform
eines Teils eines Prozessors, bei dem ein TLB-Leerungsfilter verwendet
wird;
-
3 ein Blockschaltbild einer
Ausführungsform
eines TLB-Leerungsfilters;
-
4 eine schematische Darstellung
von Bereichstabelleneinträgen
für eine
Ausführungsform des
TLB-Leerungsfilters;
-
5 ein Logikdiagramm mit
Darstellung der Logik zum Betreiben einer Ausführungsform des TLB-Leerungsfilters;
-
6 ein Zeitdiagramm mit Darstellung
des Betreibens einer Ausführungsform
des TLB-Leerungsfilters;
-
7A ein Blockschaltbild einer
Paging-Struktur mit Einträgen
in einer Bereichstabelle;
-
7B ein Blockschaltbild einer
Bereichstabelle mit Einträgen
entsprechend der in 7A gezeigten
Paging-Struktur; und
-
8 ein Blockschaltbild einer
Ausführungsform
eines Computersystems, in das ein TLB-Leerungsfilter implementierbar
ist.
-
Obwohl
verschiedene Modifikationen und alternative Ausführungsformen der Erfindung
möglich sind,
sind spezifische Ausführungsformen
der Erfindung in den Zeichnungen beispielhaft dargestellt und nachstehend
genauer beschrieben. Es sei jedoch darauf hingewiesen, dass die
Zeichnungen und die Beschreibung die Erfindung nicht auf die spezielle
offenbarte Ausführungsform
beschränken,
sondern im Gegenteil die Erfindung sämtliche Modifikationen, Äquivalente
und Alternativen umfasst, die in den Wesensgehalt und den Umfang
der vorliegenden Erfindung fallen, wie sie in den beiliegenden Patentansprüchen definiert
sind.
-
ART(EN) ZUM DURCHFÜHREN DER
ERFINDUNG
-
1 zeigt ein Blockschaltbild
einer Ausführungsform
eines Prozessors 10. Andere Ausführungsformen sind möglich und
werden in Betracht gezogen. Gemäß 1 weist der Prozessor 10 eine Vorabruf-/Vordekodiereinheit 12,
eine Verzweigungs-Vorhersageeinheit 14, einen Befehls-Cache-Speicher 16,
eine Befehls-Ausrichtungseinheit 18, mehrere Dekodiereinheiten 20A-20C,
mehrere Reservierstationen 22A-22C, mehrere Funktionseinheiten 24A-24C,
eine Lade-/Speichereinheit 26, einen Daten-Cache-Speicher 28,
eine Registerdatei 30, einen Neuordnungspuffer 32,
eine MROM-Einheit 34 und eine Bus-Interface-Einheit 37 auf.
Elemente, die hier mit einem speziellen Bezugszeichen, dem ein Buchstabe
folgt, aufgeführt
sind, werden kollektiv nur mit dem Bezugszeichen bezeichnet. Beispielsweise
werden die Dekodiereinheiten 20A-20C kollektiv als Dekodiereinheiten 20 bezeichnet.
-
Die
Vorabruf-/Vordekodiereinheit 12 ist zum Empfangen von Befehlen
von der Bus-Interface-Einheit 37 vorgesehen und ferner
mit dem Befehls-Cache-Speicher 16 und der Verzweigungs-Vorhersageeinheit 14 gekoppelt. Ähnlich ist
die Verzweigungs-Vorhersageeinheit 14 mit dem Befehls-Cache-Speicher 16 gekoppelt.
Außerdem
ist die Verzweigungs-Vorhersageeinheit 14 mit den Dekodiereinheiten 20 und
den Funktionseinheiten 24 gekoppelt. Der Befehls-Cache-Speicher 16 ist
ferner mit der MROM-Einheit 34 und der Befehls-Ausrichtungseinheit 18 gekoppelt.
Die Befehls-Ausrichtungseinheit 18 ist wiederum mit den
Dekodiereinheiten 20 gekoppelt. Jede Dekodiereinheit 20A-20C ist mit der Lade-/Speichereinheit 26 und
den jeweiligen Reservierstationen 22A-22C gekoppelt. Die
Reservierstationen 22A-22C sind ferner mit den jeweiligen
Funktionseinheiten 24A-24C gekoppelt. Außerdem sind
die Dekodiereinheiten 20 und die Reserviereinheiten 22 mit
der Registerdatei 30 und dem Neuordnungspuffer 32 gekoppelt.
Die Funktionseinheiten 24 sind auch mit der Lade-/Speichereinheit 26,
der Registerdatei 30 und dem Neuordnungspuffer 32 gekoppelt.
Der Daten-Cache-Speicher 28 ist mit der Lade-/Speichereinheit 26 und
der Bus-Interface-Einheit 37 gekoppelt. Die Bus-Interface-Einheit 37 ist
ferner mit einem L2-Interface zu einem L2-Cache-Speicher und mit einem Bus gekoppelt.
Schließlich
ist die MROM-Einheit 34 mit den Dekodiereinheiten 20 gekoppelt.
-
Der
Befehls-Cache-Speicher 16 ist ein Hochgeschwindigkeits-Cache-Speicher
zum Speichern von Befehlen. Befehle werden aus dem Befehls-Cache-Speicher 16 abgerufen
und an die Dekodiereinheiten 20 übermittelt. Bei einer Ausführungsform
ist der Befehls-Cache-Speicher 16 zum Speichern von Befehlen
bis zu 64 Kilobyte in einer 2-Wege-Teilassoziativ-Struktur mit 64-Byte-Zeilen (ein Byte
umfasst 8 Binärbits)
vorgesehen. Alternativ kann eine beliebige andere gewünschte Konfiguration
und Größe verwendet
werden. Beispielsweise sei darauf hingewiesen, dass der Befehls-Cache-Speicher 16 als
vollassoziative, teilassoziative oder direkt abgebildete Konfiguration
implementiert werden kann.
-
Befehle
werden von der Vorabruf-/Vordekodier-Einheit 12 in dem
Befehls-Cache-Speicher 16 gespeichert.
Befehle können
vor der Anforderung gemäß einem
Vorabruf-Schema aus dem Befehls-Cache-Speicher 16 vorabgerufen
werden. Eine Vielzahl von Vorabruf-Schemata kann von der Vorabruf-/Vor dekodier-Einheit 12 verwendet
werden. Wenn die Vorabruf-/Vordekodier-Einheit 12 Befehle
in den Befehls-Cache-Speicher 16 transferiert, erzeugt
die Vorabruf-/Vordekodier-Einheit 12 drei Vordekodierbits
für jedes
Byte des Befehls: ein Startbit, ein Endbit und ein Funktionsbit.
Die Vordekodierungsbits bilden Markierungen, welche die Grenzen
jedes Befehls anzeigen. Die Vordekodierungsmarkierungen können auch
zusätzliche
Informationen befördern,
wie zum Beispiel, ob ein bestimmter Befehl direkt von den Dekodiereinheiten 20 dekodiert
werden kann oder ob der Befehl durch das Aufrufen eines von der
MROM Einheit 34 gesteuerten Mikrocode-Verfahrens ausgeführt wird,
wie nachfolgend detaillierter beschrieben wird. Ferner kann die
Vorabruf-/Vordekodier-Einheit 12 derart konfiguriert sein, dass
sie Verzweigungsbefehle detektiert und Verzweigungsbefehlsinformationen
entsprechend den Verzweigungsbefehlen in der Verzweigungs-Vorhersageeinheit 14 speichert.
Andere Ausführungsbeispiele
können
jedes geeignete Vordekodierungsschema verwenden.
-
Eine
Kodierung der Vordekodierungsmarkierungen für ein Ausführungsbeispiel des Prozessors 10,
der einen Befehlssatz mit variabler Byte-Länge verwendet, wird als nächstes beschrieben.
Ein Befehlssatz mit variabler Byte-Länge ist ein Befehlssatz, in
dem verschiedene Befehle unterschiedliche Anzahlen von Bytes belegen
können.
Ein beispielhafter Befehlssatz mit variabler Byte-Länge, der
von einem Ausführungsbeispiel
des Prozessors 10 verwendet wird, ist der x86 Befehlssatz.
-
In
der beispielhaften Kodierung wird, wenn ein gegebenes Byte das erste
Byte eines Befehls ist, das Startbit für dieses Byte gesetzt. Wenn
das Byte das letzte Byte eines Befehls ist, wird das Endbit für dieses
Byte gesetzt. Befehle, die von den Dekodiereinheiten 20 direkt
dekodiert werden können,
werden als "Schnellweg"-Befehle bezeichnet.
Die verbleibenden x86-Befehle werden bei einem Ausführungsbeispiel
als MROM-Befehle bezeichnet. Bei Schnellweg-Befehlen wird das Funktionsbit
für jedes
in dem Befehl enthaltene Präfix-Byte
gesetzt und für
andere Bytes gelöscht.
Alternativ wird bei MROM-Befehlen das Funktionsbit für jedes
Präfix-Byte
gelöscht
und für
andere Bytes gesetzt. Der Befehlstyp kann durch die Untersuchen
des Funktionsbits, das dem Ende-Byte entspricht, bestimmt werden.
Wenn dieses Funktionsbit frei ist, ist der Befehl ein Schnellweg-Befehl.
Im Gegensatz dazu ist, wenn dieses Funktionsbit gesetzt ist, der
Befehl ein MROM-Befehl. Der Opcode eines Befehls kann dadurch innerhalb
eines Befehls angeordnet sein, welcher direkt von den Dekodiereinheiten 20 als
das Byte dekodiert werden kann, das mit dem ersten freien Funktionsbit
in dem Befehl verbunden ist. Zum Beispiel hätte ein Schnellweg-Befehl mit zwei Präfix-Bytes,
einem Mod R/M-Byte und einem Sofort-Byte folgende Start-, End- und
Funktionsbits:
Startbits 10000
Endbits 00001
Funktionsbits
11000
-
MROM-Befehle
sind Befehle, welche als zu komplex angesehen sind, um von den Dekodiereinheiten 20 dekodiert
zu werden. MROM-Befehle werden durch das Aufrufen der MROM-Einheit 34 ausgeführt. Wenn
ein MROM-Befehl angetroffen wird, analysiert die MROM-Einheit 34 den
Befehl und gibt ihn in einen Teilsatz von definierten Schnellweg-Befehlen
aus, um die gewünschte
Operation zu bewirken. Die MROM-Einheit 34 gibt den Teilsatz
von Schnellweg-Befehlen an die Dekodiereinheiten 20 weiter.
-
Der
Prozessor 10 verwendet eine Verzweigungsvorhersage zum
spekulativen Abrufen von Befehlen nach bedingten Verzweigungsbefehlen.
Die Verzweigungs-Vorhersageeinheit 14 ist enthalten, um
Verzweigungsvorhersageoperationen auszuführen. Bei einem Ausführungsbeispiel
verwendet die Verzweigungs-Vorhersageeinheit 14 einen Verzweigungs-Target-Puffer,
der bis zu zwei Verzweigungs-Target-Adressen und entsprechende Genommen/Nichtgenommen-Vorhersagen
pro 16-Byte-Bereich einer Cachezeile im Befehls-Cache-Speicher 16 zwischenspeichert.
Der Verzweigungs-Target-Puffer kann zum Beispiel 2048 Einträge oder
jede andere geeignete Anzahl an Einträgen aufweisen. Die Vorabruf-/Vordekodier-Einheit 12 bestimmt
die anfänglichen
Verzweigungs-Targets, wenn eine bestimmte Zeile vordekodiert wird.
Nach folgende Aktualisierungen der Verzweigungs-Targets, die einer
Cache-Zeile entsprechen, können
aufgrund der Ausführung
von Befehlen innerhalb der Cache-Zeile auftreten. Der Befehls-Cache-Speicher 16 zeigt
an, dass die Adresse des Befehls abgerufen wird, so dass die Verzweigungs-Vorhersageeinheit 14 bestimmen kann,
welche Verzweigungs-Target-Adressen für die Erzeugung einer Verzweigungsvorhersage
auszuwählen
sind. Die Dekodiereinheiten 20 und die Funktionseinheiten 24 stellen
der Verzweigungs-Vorhersageeinheit 14 Aktualisierungsinformationen
zur Verfügung.
Die Dekodiereinheiten 20 detektieren Verzweigungsbefehle,
die nicht von der Verzweigungs-Vorhersageeinheit 14 vorher
gesagt worden sind. Die Funktionseinheiten 24 führen die
Verzweigungsbefehle aus und stellen fest, ob die vorhergesagte Richtung
der Verzweigung nicht korrekt ist. Die Verzweigungsrichtung kann "genommen" werden, wobei nachfolgende
Befehle von der Target-Adresse des Verzweigungsbefehls abgerufen
werden. Im Gegensatz dazu ist es möglich, dass die Verzweigungsrichtung "nicht genommen" wird, wobei nachfolgende Befehle
von Speicherstellen abgerufen werden, die dem Verzweigungsbefehl
folgen. Wenn ein falsch vorhergesagter Verzweigungsbefehl detektiert
wird, werden Befehle, die der falsch vorhergesagten Verzweigung
folgen, von den verschiedenen Einheiten des Prozessors 10 verworfen.
In einer alternativen Ausbildung kann die Verzweigungs-Vorhersageeinheit 14 mit
dem Umordnungspuffer 32 statt mit den Dekodiereinheiten 20 und
den Funktionseinheiten 24 verbunden sein und kann Verzweigungs-Fehlvorhersageinformationen
von dem Umordnungspuffer 32 empfangen. Eine Vielzahl von
geeigneten Algorithmen zur Verzweigungsvorhersage kann von der Verzweigungs-Vorhersageeinheit 14 verwendet
werden.
-
Aus
dem Befehls-Cache-Speicher 16 abgerufene Befehle werden
zu der Befehls-Ausrichtungseinheit 18 befördert. Wenn
Befehle aus dem Befehls-Cache-Speicher 16 abgerufen
werden, werden die entsprechenden Vordekodierungsdaten abgetastet,
um der Befehls-Ausrichtungseinheit 18 (und der MROM-Einheit 34)
Informationen hinsichtlich der abgerufenen Befehle zu liefern. Die
Befehls-Ausrichtungseinheit 18 verwendet die abgetasteten
Daten, um einen Befehl auf jede der Dekodiereinheiten 20 auszurichten.
Bei einem Ausfüh rungsbeispiel
richtet die Befehls-Ausrichtungseinheit 18 Befehle von
drei Sätzen
von acht Befehls-Bytes auf die Dekodiereinheiten 20 aus.
Die Dekodiereinheit 20A empfängt einen Befehl, der den Befehlen
vorangeht, welche gleichzeitig von den Dekodiereinheiten 20B und 20C empfangen
werden (in Programmreihenfolge. Auf ähnliche Weise empfängt die
Dekodiereinheit 20B einen Befehl, der dem Befehl vorangeht,
welcher in Programmreihenfolge gleichzeitig von der Dekodiereinheit 20C empfangen
wird.
-
Die
Dekodiereinheiten 20 sind derart konfiguriert, dass sie
von der Befehls-Ausrichtungseinheit 18 empfangene
Befehle dekodieren. Informationen bezüglich der Registeroperanden
werden detektiert und zu der Registerdatei 30 und dem Umordnungspuffer 32 weitergeleitet.
Ferner schicken die Dekodiereinheiten 20 die Speicheroperationen
an die Lade-/Speicher-Einheit 26, wenn es die Befehle erforderlich
machen, dass eine oder mehrere Speicheroperationen ausgeführt werden.
Jeder Befehl wird in einen Satz von Steuerwerten für die Funktionseinheiten 24 dekodiert,
und diese Steuerwerte werden zusammen mit Operandenadresseninformationen
und Ersatz- oder Direktdaten, welche in dem Befehl enthalten sein
können,
an die Reservierungsstationen 22 geschickt. Bei einem bestimmten
Ausführungsbeispiel
wird jeder Befehl in bis zu zwei Operationen dekodiert, welche von
den Funktionseinheiten 24A-24C separat ausgeführt werden
können.
-
Der
Prozessor 10 unterstützt
eine nicht geordnete Ausführung
und verwendet daher den Umordnungspuffer 32, um die ursprüngliche
Abfolge des Programms für
Lese- und Schreiboperationen für
die Register zu verfolgen, die Registerumbenennung zu implementieren,
eine spekulative Ausführung
von Befehlen und die Wiederherstellung bei falsch vorhergesagten
Verzweigungen zu ermöglichen
und um präzise
Ausnahmen zu erleichtern. Eine temporäre Speicherstelle innerhalb
des Umordnungspuffers 32 wird bei Dekodierung eines Befehls
reserviert, der die Aktualisierung eines Registers umfasst, um dort
spekulative Registerzustände
zu speichern. Wenn eine Verzweigungsvorhersage falsch ist, können die
Ergebnisse der spekulativ ausgeführten
Befehle entlang des falsch vorhergesagten Pfads in dem Puffer ungültig gemacht
wer den bevor sie in die Registerdatei 30 geschrieben werden.
Auf ähnliche
Weise können
Befehle, die auf einen bestimmten Befehl folgen, verworfen werden,
wenn der bestimmte Befehl eine Ausnahme verursacht. Auf diese Weise
werden Ausnahmen "präzise" (das heißt Befehle,
die auf den bestimmten Befehl folgen, welcher eine Ausnahme verursacht,
werden nicht früher
als die Ausnahme beendet). Es ist festzuhalten, dass ein bestimmter
Befehl spekulativ ausgeführt
wird, wenn er vor Befehlen ausgeführt wird, die dem bestimmten
Befehl in der Reihenfolge des Programms vorangehen. Vorangehende
Befehle können
ein Verzweigungsbefehl oder ein eine Ausnahme verursachender Befehl
sein, in welchem Fall die spekulativen Ergebnisse von dem Umordnungspuffer 32 verworfen
werden können.
-
Die
Steuerwerte für
die Befehle und die Ersatz- und Direktdaten, die an den Ausgängen der
Dekodiereinheiten 20 zur Verfügung gestellt werden, werden
direkt an die entsprechenden Reservierungsstationen 22 weitergeleitet.
Bei einem Ausführungsbeispiel
ist jede Reservierungsstation 22 in der Lage, Informationen
bezüglich
der Befehle (das heißt
sowohl Befehls-Steuerwerte als auch Operandenwerte, Operandenmarkierungen
und/oder Direktdaten) für bis
zu sechs ausstehende Befehle, die auf die Ausgabe an die entsprechende
Funktionseinheit warten, zu halten. Es ist zu bemerken, dass bei
dem Ausführungsbeispiel
aus 1 jede Reservierungsstation 22 einer
bestimmten Funktionseinheit 24 zugeordnet ist. Entsprechend
werden drei bestimmte "Ausgabepositionen" von den Reservierungsstationen 22 und den
Funktionseinheiten 24 gebildet. Anders ausgedrückt wird
die Ausgabeposition 0 von der Reservierungsstation 22A und
der Funktionseinheit 24A gebildet. Befehle, die auf die
Reservierungsstation 22A ausgerichtet und an diese geschickt
wurden, werden von der Funktionseinheit 24A ausgeführt. Auf ähnliche
Weise wird die Ausgabeposition 1 von der Reservierungsstation 22B und
der Funktionseinheit 24B gebildet, und die Ausgabeposition
2 wird von der Reservierungsstation 22C und der Funktionseinheit 24C gebildet.
-
Bei
Dekodieren eines bestimmten Befehls werden, falls ein benötigter Operand
eine Registerstelle ist, Registeradresseninformationen gleichzeitig an
den Umordnungspuffer 32 und die Registerdatei 30 weitergeleitet.
Fachleute auf dem Gebiet wissen, dass die x86-Registerdatei acht
reale 32-Bit-Register umfasst (das heißt, diese werden üblicherweise
als EAX, EBX, ECX, EDX, EBP, ESI, EDI und ESP bezeichnet). Bei Ausführungsbeispielen
des Prozessors 10, welche die x86-Prozessorarchitektur
verwenden, weist die Registerdatei 30 Speicherstellen für jedes
der realen 32-Bit-Register auf. Zusätzliche Speicherstellen können innerhalb
der Registerdatei 30 für
die Benutzung durch die MROM-Einheit 34 enthalten sein.
Der Umordnungspuffer 32 enthält temporäre Speicherstellen für Ergebnisse,
welche die Inhalte dieser Register ändern, um dadurch eine ungeordnete
Ausführung
zu ermöglichen.
Eine temporäre
Speicherstelle in dem Umordnungspuffer 32 ist für jeden
Befehl reserviert, der beim Dekodieren bestimmt wird, die Inhalte
eines der realen Register zu ändern.
Daher kann der Umordnungspuffer 32 an verschiedenen Punkten
während
der Ausführung
eines bestimmten Programms, eine oder mehrere Stellen haben, welche
die spekulativ ausgeführten
Inhalte eines gegebenen Registers enthalten. Wenn nach der Dekodierung
eines gegebenen Befehls festgestellt wird, dass der Umordnungspuffer 32 eine
einem Register zugewiesene vorherige Stelle oder Stellen hat, die
als Operand in dem gegebenen Befehl benutzt werden, leitet der Umordnungspuffer 32 an
die entsprechende Reservierungsstation weiter: entweder 1) den Wert
in der zuletzt zugewiesenen Stelle oder 2) eine Markierung für die zuletzt
zugewiesene Stelle, wenn der Wert bislang noch nicht von der Funktionseinheit
erzeugt worden ist, die schließlich den
vorherigen Befehl ausführen
wird. Wenn der Umordnungspuffer 32 eine für ein bestimmtes
Register reservierte Stelle hat, wird der Operandenwert (oder die
Markierung des Umordnungspuffers) von dem Umordnungspuffer 32 anstatt
von der Registerdatei 30 zur Verfügung gestellt. Wenn keine für ein benötigtes Register
reservierte Stelle in dem Umordnungspuffer 32 vorhanden
ist, wird der Wert direkt aus der Registerdatei 30 genommen.
Wenn der Operand einer Speicherstelle entspricht, wird der Wert des
Operanden der Reservierungsstation von der Lade-/Speicher-Einheit 26 zur
Verfügung
gestellt.
-
In
einem bestimmten Ausführungsbeispiel
ist der Umordnungspuffer 32 zum Speichern und Verändern von
gleichzeitig dekodierten Befehlen als eine Ein heit konfiguriert.
Diese Konfiguration wird hier als "zeilenausgerichtet" bezeichnet. Durch gemeinsames Verändern einiger
Befehle kann die innerhalb des Umordnungspuffers 32 verwendete
Hardware vereinfacht werden. Zum Beispiel weist ein in dem vorliegenden
Ausführungsbeispiel
enthaltener zeilenausgerichteter Umordnungspuffer Speicher zu, der
ausreichend ist für
Informationen bezüglich
Befehlen, die bis zu drei Befehlen zugehören (einen von jeder Dekodiereinheit 20),
und zwar immer dann, wenn ein oder mehrere Befehle von den Dekodiereinheiten 20 abgeschickt
werden. Im Gegensatz dazu wird ein variables Maß an Speicherplatz in konventionellen
Umordnungspuffern zugewiesen, und zwar abhängig von der Anzahl der tatsächlich abgeschickten
Befehle. Eine vergleichsweise größere Anzahl von
logischen Gattern kann erforderlich sein, um das variable Maß an Speicherplatz
zuzuweisen. Wenn jeder der gleichzeitig dekodierten Befehle ausgeführt worden
ist, werden die Ergebnisse der Befehle gleichzeitig in der Registerdatei 30 gespeichert.
Der Speicher ist dann frei für
die Zuweisung zu einem anderen Satz von gleichzeitig dekodierten
Befehlen. Ferner ist das Maß an
für jeden
Befehl verwendeten Schaltungen für
die Steuerlogik reduziert, weil die Steuerlogik sich über mehrere
gleichzeitig dekodierte Befehle amortisiert. Eine Markierung des
Umordnungspuffers, die einen bestimmten Befehl identifiziert, kann
in zwei Felder geteilt sein: eine Zeilenmarkierung und eine Offset-Markierung.
Die Zeilenmarkierung identifiziert den Satz von gleichzeitig dekodierten
Befehlen einschließlich
des bestimmten Befehls, und die Offset-Markierung identifiziert,
welcher Befehl innerhalb des Satzes dem bestimmten Befehl entspricht.
Es sei darauf hingewiesen, dass die Speicherung von Befehlsergebnissen
in der Registerdatei 30 und das Freimachen des entsprechenden
Speichers als "Zurückziehen" der Befehle bezeichnet wird.
Es ist ferner festzuhalten, dass jede Konfiguration des Umordnungspuffers
in verschiedenen Ausführungsbeispielen
des Prozessors 10 verwendet werden kann.
-
Wie
zuvor gesagt, speichern die Reservierungsstationen 22 Befehle,
bis die Befehle von den entsprechenden Funktionseinheiten 24 ausgeführt werden.
Ein Befehl wird für
die Ausführung
ausgewählt,
wenn: (i) die Operanden des Befehls zur Verfügung gestellt worden sind und
(ii) die Operanden bislang noch nicht für Befehle zur Verfügung gestellt worden
sind, die in der gleichen Reservierungsstation 22A-22C sind
und die in Programmreihenfolge vor dem Befehl liegen. Es sei darauf
hingewiesen, dass, wenn ein Befehl von einer der Funktionseinheiten 24 ausgeführt wird,
das Ergebnis dieses Befehls direkt an eine beliebige der Reservierungsstationen 22 ausgegeben
wird, die zu dem gleichen Zeitpunkt auf dieses Ergebnis warten,
zu dem das Ergebnis zur Aktualisierung des Umordnungspuffers 32 weitergegeben
wird (diese Technik wird allgemein als "Ergebnisweiterleitung" bezeichnet). Ein
Befehl kann für
die Ausführung
ausgewählt
werden und während
des Taktzyklus, in dem das damit verbundene Ergebnis weitergeleitet
wird, an eine Funktionseinheit 24A-24C weitergegeben werden. Die Reservierungsstationen 22 leiten
das weitergeleitete Ergebnis in diesem Fall an die Funktionseinheiten 24.
Bei Ausführungsbeispielen,
in denen Befehle in Mehrfach-Operationen dekodiert werden können, die
von den Funktionseinheiten 24 auszuführen sind, können die
Operationen getrennt voneinander zeitlich geplant werden.
-
Bei
einem Ausführungsbeispiel
ist jede der Funktionseinheiten 24 zur Ausführung von
ganzzahligen arithmetischen Additions- und Subtraktionsoperationen
sowie von Verschiebungen, Rotationen, logischen Operationen und
Verzweigungsoperationen konfiguriert. Die Operationen werden in
Reaktion auf die Steuerwerte ausgeführt, die für einen bestimmten Befehl von
den Dekodiereinheiten 20 dekodiert wurden. Es sei darauf
hingewiesen, dass eine (nicht gezeigte) Gleitkommaeinheit ebenfalls
verwendet werden kann, um Gleitkommaoperationen durchzuführen. Die
Gleitkommaeinheit kann als Koprozessor betrieben werden, der Befehle
von der MROM-Einheit 34 oder von dem Umordnungspuffer 32 empfängt und
nachfolgend mit dem Umordnungspuffer 32 kommuniziert, um
die Befehle zu vollenden. Ferner können die Funktionseinheiten 24 zum
Erzeugen von Adressen für
Lade- und Speicher-Speicheroperationen konfiguriert sein, die von
der Lade-/Speicher-Einheit 26 ausgeführt werden. Bei einem bestimmten
Ausführungsbeispiel
kann jede Funktionseinheit 24 eine Adresserzeugungseinheit
zum Erzeugen von Adressen aufweisen und eine Ausführungseinheit
zum Durchführen
der verbleibenden Funktionen. Die beiden Einheiten können unabhängig voneinander
auf verschiedenen Befehlen oder Operationen während eines Taktzyklus arbeiten.
-
Jede
der Funktionseinheiten 24 stellt der Verzweigungs-Vorhersageeinheit 14 auch
Informationen hinsichtlich der Ausführung von bedingten Verzweigungsbefehlen
zur Verfügung.
Wenn eine Verzweigungsvorhersage falsch war, löscht die Verzweigungs-Vorhersageeinheit 14 Befehle,
die der falsch vorhergesagten Verzweigung folgen und die in die Befehlsverarbeitungs-Pipeline
eingetreten sind, und bewirkt ein Abrufen der benötigten Befehle
von dem Befehls-Cache-Speicher 16 oder dem Hauptspeicher.
Es ist zu bemerken, dass in solchen Situationen die Befehlsergebnisse
in der ursprünglichen
Programmsequenz, die nach dem falsch vorhergesagten Verzweigungsbefehl
auftreten, verworfen werden, einschließlich derjenigen, die spekulativ
ausgeführt worden
sind und temporär
in der Lade-/Speicher-Einheit 26 und dem Umordnungspuffer 32 gespeichert worden
sind. Es ist ferner zu bemerken, dass Ergebnisse von Verzweigungsausführungen
von den Funktionseinheiten 24 dem Umordnungspuffer 32 zur
Verfügung
gestellt werden können,
der den Funktionseinheiten 24 Fehlvorhersagen von Verzweigungen anzeigen
kann.
-
Von
den Funktionseinheiten 24 erzeugte Ergebnisse werden an
den Umordnungspuffer 32 geschickt, wenn ein Registerwert
aktualisiert wird, und zu der Lade-/Speicher-Einheit 26 geschickt,
wenn die Inhalte einer Speicherstelle geändert werden. Wenn das Ergebnis
in einem Register gespeichert werden soll, speichert der Umordnungspuffer 32 das
Ergebnis an der Stelle, die für
den Registerwert reserviert wurde, als der Befehl dekodiert wurde.
Eine Vielzahl von Ergebnisbussen 38 ist zum Weiterleiten
von Ergebnissen von den Funktionseinheiten 24 und der Lade-/Speicher-Einheit 26 vorgesehen.
Die Ergebnisbusse 38 befördern sowohl das erzeugte Ergebnis als
auch die Markierung des Umordnungspuffers, die den bearbeiteten
Befehl identifiziert.
-
Die
Lade-/Speicher-Einheit 26 stellt ein Interface zwischen
den Funktionseinheiten 24 und dem Daten-Cache-Speicher 28 bereit.
Bei einem Ausführungsbeispiel
ist die Lade-/Speicher-Einheit 26 mit einem ersten Lade-/Speicher- Puffer, der Speicherstellen
für Daten-
und Adressinformationen für
anstehende Lade- oder Speichervorgänge hat, die nicht auf den
Daten-Cache-Speicher 28 zugegriffen haben, und einem zweiten
Lade-/Speicher-Puffer konfiguriert, der Speicherstellen für Daten-
und Adressinformationen für
anstehende Ladeoder Speichervorgänge
hat, die auf den Daten-Cache-Speicher 28 zugegriffen haben.
Zum Beispiel kann der erste Puffer 12 Stellen aufweisen,
und der zweite Puffer kann 32 Stellen aufweisen. Die Dekodiereinheiten 20 vermitteln
Zugriff auf die Lade-/Speicher-Einheit 26. Wenn der erste
Puffer voll ist, muss eine Dekodiereinheit warten, bis die Lade-/Speicher-Einheit 26 Platz
für die
ausstehenden Lade- oder Speicheranforderungsinformation hat. Die
Lade-/ Speicher-Einheit 26 führt auch eine Abhängigkeitsüberprüfung für Lade-Speicheroperationen
gegen anstehende Speicher-Speicheroperationen durch, um sicherzustellen,
dass die Datenkohärenz
gewährleistet
bleibt. Eine Speicheroperation ist ein Transfer von Daten zwischen
dem Prozessor 10 und dem Subsystem des Hauptspeichers.
Speicheroperationen können
das Ergebnis eines Befehls sein, der einen in dem Speicher gespeicherten
Operanden verwendet, oder können
das Ergebnis eines Lade-/Speicher-Befehls sein, der den Transfer
der Daten, aber keine andere Operation veranlasst. Ferner kann die
Lade-/Speicher-Einheit 26 einen Spezialregisterspeicher
für Spezialregister
aufweisen, wie zum Beispiel die Segmentregister und andere Register,
die mit dem von der x86-Prozessorarchitektur definierten Mechanismus
für die Adressenumsetzung
zusammenhängen.
-
Der
Daten-Cache-Speicher 28 ist ein Hochgeschwindigkeits-Cache-Speicher,
der zum temporären
Speichern von Daten, die zwischen der Lade-/Speicher-Einheit 26 und
dem Subsystem des Hauptspeichers transferiert werden, vorgesehen
ist. Bei einem Ausführungsbeispiel
hat der Daten-Cache-Speicher 28 eine Kapazität zum Speichern
von 64 Kilobyte an Daten in einer 2-Wege-Teilassoziativ-Struktur.
Es sei darauf hingewiesen, dass der Daten-Cache-Speicher 28 in
einer Vielzahl von bestimmten Speicherkonfigurationen implementiert sein
kann, einschließlich
einer Teilassoziativ-Konfiguration, einer Vollassoziativ-Konfiguration,
einer Direktabbildungs-Konfiguration und jeder geeigneten Größe jeder
anderen Konfiguration.
-
Bei
einem bestimmten Ausführungsbeispiel des
Prozessors 10, der die x86-Prozessorarchitektur verwendet, sind
der Befehls-Cache-Speicher 16 und der Daten-Cache-Speicher 28 linear
adressiert und reell markiert. Die lineare Adresse wird von dem durch
den Befehl spezifizierten Offset und der Basisadresse gebildet,
die von dem Segmentbereich des x86-Mechanismus zur Adressenumsetzung
angegeben ist. Lineare Adressen können optional in reelle Adressen
umgesetzt werden, um auf den Hauptspeicher zuzugreifen. Die Umsetzung
von linear in reell wird von dem Seitenbereich des x86-Mechanismus zur
Adressenumsetzung spezifiziert. Die reelle Adresse wird mit den
reellen Markierungen verglichen, um einen Treffer-/Fehltreffer-Status
zu bestimmen.
-
Die
Bus-Interface-Einheit 37 ist zur Kommunikation zwischen
dem Prozessor 10 und anderen Komponenten in einem Computersystem über einen Bus
konfiguriert. Zum Beispiel kann der Bus mit dem von der Digital
Equipment Corporation entwickelten EV-6-Bus kompatibel sein. Alternativ
können
sämtliche
geeigneten Verbindungsstrukturen benutzt werden, einschließlich paketbasierter,
unidirektionaler oder bidirektionaler Verbindungen usw. Ein optionales
L2-Cache-Speicher-Interface
kann auch als Interface für
einen Level-2-Cache-Speicher
verwendet werden.
-
2 zeigt ein Blockschaltbild
einer Ausführungsform
eines Teils des Prozessors 10, bei dem ein TLB-Leerungsfilter
verwendet wird. Das TLB-Leerungsfilter 40 ist mit der Lade-/Speicher-Einheit 26, der
Bus-Interface-Einheit 37, dem L1-Cache-Speicher 25 und
dem TLB 39 gekoppelt. Der L1-Cache-Speicher 25 kann
beispielsweise einen Befehls-Cache-Speicher 16 und einen
Daten-Cache-Speicher 28 aufweisen. Bei einigen Ausführungsformen
können
der Befehls-Cache-Speicher 16 und der Daten-Cache-Speicher 28 des
L1-Cache-Speichers 25 ihrem
eigenen separaten TLB zugeordnet sein. Diese TLBs können in
jeden Cache-Speicher integriert sein. Die Lade-/Speicher-Einheit 26 ist
mit der Registerdatei 30 gekoppelt. Unter den Registern
der Registerdatei 30 befindet sich ein Basisadressenregister 301.
In dem Basisadressenregister 301 kann eine Basisadresse
einer Seitentabelle für
das aktuell laufende Pro gramm gespeichert sein. Alternativ können in
dem Basisadressenregister 301 eine Basisadresse einer Seitenverzeichnis-Zeigertabelle
oder andere zu dem aktuell laufenden Programm gehörige Adresseninformationen
gespeichert sein. Das Basisadressenregister 301 kann während einer
Programmumschaltung aktualisiert werden.
-
Das
TLB-Leerungsfilter 40 ist zum Überwachen von Speicherblöcken vorgesehen,
die Adressenumsetzungen enthalten, welche in den TLB 39 geladen
werden können.
Wenn das TLB-Leerungsfilter 40 Veränderungen an einer oder mehreren
Adressenumsetzungen in den überwachten
Speicherblöcken detektiert,
kann es ein Leeren des TLB 39 nach der nächsten Programmumschaltung
ermöglichen.
Bei der dargestellten Ausführungsform
kann das TLB-Leerungsfilter ein Invalidierungs-Signal aktivieren,
um ein Leeren des TLB 39 zu ermöglichen. Die Lade-/Speicher-Einheit 26 kann
ebenfalls ein Leeren des TLB 39 durch Aktivieren eines
Signals (das hier als LS_TLBInvalidate dargestellt ist) bewirken.
Dieses Signal kann bei Aktivierung durch die Lade-/Speicher-Einheit 26 ein
unbedingtes Leeren des TLB 39 bewirken oder ein Leeren
des TLB bei der nächsten Programmumschaltung
ermöglichen.
Einige der möglichen
Ursachen für
ein unbedingtes Leeren werden nachstehend anhand von 5 beschrieben.
-
Das
TLB-Leerungsfilter 40 kann durch eine erste Programmumschaltung
aktiviert werden. Die erste Programmumschaltung kann nach dem anfänglichen
Booten eines Computersystems oder nach einer Deaktivierung des Leerungsfilters
erfolgen. Die erste Programmumschaltung kann zu einem Leeren des
TLB 39 führen.
Nach der ersten Programmumschaltung kann der aus dem TLB 39 geleerte
Inhalt von dem TLB-Leerungsfilter 40 gefiltert werden.
-
Das
TLB-Leerungsfilter 40 ist mit der Bus-Interface-Einheit 37 gekoppelt
und kann Informationen über
diejenigen Speicherblöcke,
die es überwacht, empfangen.
Bei der dargestellten Ausführungsform kann
das TLB-Leerungsfilter 40 einen Seitenverzeichnis-Eintrag
von der Bus-Interface-Einheit 37 empfangen. Bei verschiedenen
Ausführungsformen kann
das TLB-Leerungsfilter 40 ferner Informationen bezüglich Seitenverzeichnis-Einträgen, Seitenverzeichnis-Zeigern,
Seitentabellen oder anderen Datenstrukturen, die für Adressenumsetzungen
verwendet werden können,
empfangen. Generell kann eine beliebige Adresse eines Speicherblocks,
in dem Adressenumsetzungsinformationen gespeichert sind, über die
Bus-Interface-Einheit 37 an das TLB-Leerungsfilter 40 geliefert
werden. Das TLB-Leerungsfilter 40 kann ferner ein Snoop(oder Sondier-)
Anforderungssignal von der Bus-Interface-Einheit 37 sowie
eine Snoop-Adresse zum Durchsuchen einer Bereichstabelle (wie nachstehend
beschrieben) empfangen. Das TLB-Leerungsfilter 40 kann
ferner eine Benachrichtigung von der Lade-/Speicher-Einheit 26 empfangen,
wenn eine Programmumschaltung erfolgt, da die Lade-/Speicher-Einheit
die in dem Basisadressenregister 301 gespeicherte neue
Adresse um den speziellen Registerbus(SRB-) Ring herum verbreiten
kann.
-
Generell
ist der SRB-Ring ein Bus, der zur Kommunikation mit Spezialregistern
verwendet werden kann. Eine Vielzahl von Spezialregistern kann in verschiedenen
Einheiten in dem gesamten Prozessor vorhanden sein. Bei der dargestellten
Ausführungsform
dient die Lade-/Speicher-Einheit 26 als Bus-Master für den SRB-Ring
und kann dadurch Lese- und Schreib-Operationen, in die die Spezialregister
einbezogen sind, steuern. Durch die Implementierung des SRB-Rings
ist es ferner möglich,
die Spezialregister näher
an der Logik, die diese Register verwendet, zu platzieren, und zwar
derart, dass sie immer noch von der Lade-Speicher-Einheit 26 gesteuert
werden.
-
3 zeigt ein Blockschaltbild
einer Ausführungsform
eines TLB-Leerungsfilters. Das TLB-Leerungsfilter 40 weist
einen Ring-Schaltungspunkt 401, eine Bereichstabelle 402 und
eine Filterschaltung 403 auf. Die Filterschaltung 403 ist
mit dem TLB 39 gekoppelt und kann ein Signal zum Invalidieren
oder Leeren des TLB aktivieren. Die Bereichstabelle 402 weist
einen inhaltsadressierbaren Speicher (CAM) und einen Direktzugriffsspeicher
(RAM) auf. Der CAM-Teil
der Bereichstabelle 402 kann zum Speichern von Adressen,
wie z. B. Seitenverzeichnis-Zeigern, sowie dazugehörigen Markierungen
verwendet werden und kann ferner Adressen aus dem Basisadressenregister 301 (2) spei chern. In dem RAM-Teil
der Bereichstabelle ist typischerweise eine der Basisadresse aus
dem Basisadressenregister 301 zugeordnete Markierung gespeichert.
CAM- und RAM-Einträge
werden nachstehend genauer beschrieben.
-
Einträge in die
Bereichstabelle 401 können von
dem TLB-Leerungsfilter 40 über den Ring-Schaltungspunkt 401 und
Multiplexer 407 empfangen werden. Die Multiplexer 407 können ferner
zum Empfangen von anderen Informationen, wie z. B. Seitenverzeichnis-Eintrags-
(PDE-) Attributen, verwendet werden, wie hier dargestellt. Die über die
Multiplexer 407 empfangene Informationen können dann
entweder im CAM oder im RAM gespeichert werden. Informationen von
der Bereichstabelle 402 können ferner über den
Ring-Schaltungspunkt 401 in den SRB-Ring verbreitet werden.
-
Ferner
sind zwei Zähler
der Bereichstabelle 402 zugeordnet. Ein Bereichszähler 404 ist
zum Zählen
der Anzahl von Einträgen
in den CAM vorgesehen, während
ein Basisadressenregisterzähler 405 zum
Zählen
der Anzahl von Basisadressenregistermarkierungen vorgesehen ist.
Jeder Zähler
verfolgt die zur Verfügung
stehenden Resourcen in der Bereichstabelle. Wenn die Bereichstabelle
keine verfügbaren
Resourcen mehr hat, kann einer der Zähler ein Überlaufsignal aktivieren. Wenn
beispielsweise jeder CAM-Eintrag voll ist, kann der Bereichszähler ein Überlaufsignal
aktivieren. Dieses Überlaufsignal kann
zum Deaktivieren des TLB-Leerungsfilters verwendet werden. Ähnlich kann,
wenn sämtliche
zur Verfügung
stehenden Markierungen für
den Basisadressenregisterzähler
verwendet worden sind, dieser ebenfalls überlaufen, wodurch ein Überlaufsignal
aktiviert wird, das das TLB-Leerungsfilter deaktivieren kann. Die
erste Programmumschaltung nach der Deaktivierung des TLB-Leerungsfilters 40 kann
dann zu einer TLB-Leerung führen.
Wenn das TLB-Leerungsfilter 40 deaktiviert ist, können beide
Zähler
von der Steuerlogik 406 zurückgesetzt werden.
-
Wie
oben beschrieben, ist die Bereichstabelle 402 zum Speichern mehrerer
Einträge
während der
Operation des TLB-Leerungsfilters 40 vorgesehen. Die Einträge in der
Bereichstabelle 402 können zum
Detektieren von Modifikatio nen an den Seitentabellen oder anderen
Datenstrukturen, die zum Laden von Adressenumsetzungen in den TLB 39 verwendet werden
können,
benutzt werden. Zum Detektieren, wann sich die Seitentabellen oder
anderen Datenstrukturen verändert
haben, kann die Bus-Intertace-Einheit 37 (1) die Bereichstabelle sondieren (d.
h. durchsuchen). Das Sondieren der Bereichstabelle kann eine Funktion
eines Kohärenzprotokolls
in dem Prozessor sein. Generell wird die Snoop-Adresse mit der in
der Bereichstabelle (z. B. dem CAM) aufgezeichneten Tabelle verglichen.
Wenn das Sondieren der Bereichstabelle zu einem Treffer führt und
das Sondieren einem Speicherzugriff dient, durch den die Daten in
einem von dem TLB-Leerungsfilter 40 überwachten Speicherblock verändert würden (wodurch
eine mögliche
Modifizierung der zum Speichern von Adressenumsetzungen in dem TLB
verwendeten Daten angezeigt wird), kann die nächste Programmumschaltung zu
einem Leeren des TLB 39 führen. Bei der dargestellten
Ausführungsform
kann ein Leeren des TLB erfolgen, wenn die Filterschaltung 403 ein
Invalidierungs-Signal aktiviert, wodurch sämtliche gleichzeitig in dem
TLB 39 gespeicherten Einträge invalidiert werden. Typischerweise
erfolgt ein Treffer, wenn ein Durchsuchen der Bereichstabelle zu
einer Übereinstimmung
hinsichtlich eines der in dem CAM gespeicherten Einträge führt. Wenn
die Sondierung zu keinem Treffer führt, kann das TLB-Leerungsfilter 40 ein
Leeren des TLB nach der nächsten
Programmumschaltung verhindern.
-
4 zeigt eine schematische
Darstellung von Bereichstabelleneinträgen bei einer Ausführungsform
des TLB-Leerungsfilters. Jeder Bereichstabelleneintrag enthält einen
CAM-Eintrag 402-C und einen RAM-Eintrag 402-R.
Der CAM-Eintrag 402-C enthält ein Gültig-Bit (V), ein Seitenverzeichniszeiger-(PDP-)
Bit und eine Markierung. Bei verschiedenen anderen Ausführungsformen
können
die CAM-Einträge
auch andere Arten von einer Speicheradresse zugeordneten Informationen
enthalten, wie z. B. Attribut- und Schutzinformationen. Die Markierung
des CAM-Eintrags 402-C ist typischerweise eine Adresse,
die einer Adressenumsetzung entspricht, welche in dem TLB vorhanden
ist. Diese Adresse kann beispielsweise ein Seitenverzeichniszeiger
oder ein Seitentabellenzeiger aus einem Seitenverzeichniseintrag
oder eine Basisadresse aus dem Basisadressenregister sein. Bei einer
Ausführungsform
kann die Adresse eine lineare Adresse sein, die einer reellen Adresse
im Speicher entspricht. Wenn die von der Markierung angezeigte Adresse
für einen
Seitenverzeichniszeiger bestimmt ist, kann das PDP-Bit gesetzt werden.
Wenn die von der Markierung angezeigte Adresse für einen Seitenverzeichniseintrag
bestimmt ist, kann das PDP-Bit gelöscht werden. Das Gültig-Bit
kann gesetzt werden, um anzuzeigen, dass die von der Markierung angezeigte
Adresse für
eine entweder in dem TLB oder in einer Seitentabelle gespeicherte
Adresse gültig
ist. Die in dem CAM-Eintrag
gespeicherten Adressen können
wie oben beschrieben von einer Bus-Interface-Einheit sondiert werden, wodurch
das TLB-Leerungsfilter 40 feststellen kann, ob Modifikationen
an einer Seitentabelle oder einer anderen Datenstruktur, aus der
Adressenumsetzungen in den TLB geladen worden sind, aufgetreten
sind.
-
Der
RAM-Eintrag 402-R enthält
ein Gültig-Bit und
eine Basisadressenregistermarkierung. Bei der dargestellten Ausführungsform
kann die Basisadressenregistermarkierung einem Basisadressenregistereintrag
zugeordnet sein, der in dem CAM gespeichert sein kann. Der in dem
CAM gespeicherte Basisadressenwert kann die Basisadresse für eine Seitentabelle
(oder eine andere Datenstruktur) eines vorherigen Programms oder
des aktuell laufenden Programms sein. Die Basisadressenregistermarkierung
dieser Ausführungsform
ist einfach eine Nummer, die der Basisadresse entspricht. Nach jeder
Veränderung
des Basisadressenregisters (die typischerweise bei jeder Programmumschaltung
erfolgt) wird der neue Registerwert mit älteren Werten verglichen, die
seit der letzten TLB-Leerung aufgetreten und die in der Bereichstabelle
gespeichert sind. Wenn keine Übereinstimmung
(d. h. ein Nichttreffer) festgestellt wird, kann dem Registerwert
zusammen mit der dazugehörigen
in dem RAM gespeicherten Markierung eine in dem CAM gespeicherte
Markierung zugewiesen werden. Eine Übereinstimmung zeigt an, dass der
aktuelle Registerwert bereits in der Bereichstabelle gespeichert
ist. Somit können,
wenn das vorherige Programm von dem Prozessor wiederaufgenommen
wird, die zuvor verwendeten Adressenumsetzungen wiederverwendet
werden. Es braucht keine neue Markierung zugewiesen zu werden, wenn
eine Übereinstimmung
besteht.
-
5 zeigt ein Logikdiagramm
mit Darstellung der Logik zum Betreiben einer Ausführungsform der
Filterschaltung 403. Die Filterschaltung 403 weist eine
Logik auf, die ein Leeren des TLB nur dann ermöglicht, wenn bestimmte Bedingungen
erfüllt
sind. Die Filterschaltung 403 ist zum Empfangen von LS_TLBInvalidate-
und LS_TLBInvalidateM-Signalen von der Lade-/Speicher-Einheit 26 aus 1 vorgesehen. Das LS_TLB-Invalidate-Signal
kann ein unbedingtes Leeren des TLB bewirken, und zwar unabhängig davon,
ob das TLB-Filter
aktiviert ist. Verschiedene Veränderungen
beim Betreiben des Prozessors können
ein Leeren des TLB erforderlich machen. Diese Bedingungen umfassen,
sind jedoch nicht beschränkt
auf, das Abschaltung des Paging, Einschalten des Global Paging,
Verändern
von Speichertypen oder Verändern
von Speicherattributen. Bei Aktivierung kann sich das LS_TLB-Invalidate-Signal
durch das in dem Diagramm gezeigte ODER-Gatter oder D-Flip-Flop
ausbreiten. Dadurch kann dann das Aktivieren eines FF_TLBInvalidate-Signals
bewirkt werden (dieses Signal ist ein Äquivalent des in 2 und 3 gezeigten Invalidierungssignals), wodurch
ein Leeren des TLB nach der nächsten
Programmumschaltung ermöglicht
wird.
-
Das
LS_TLBInvalidateM-Signal kann verwendet werden, um anzuzeigen, dass
der TLB geleert werden muss, wenn eine Modifizierung aufgetreten
ist. Dieses Signal muss in einem logischen H-Zustand gehalten werden,
wenn das TLB-Leerungsfilter
aktiviert ist. Eine Modifizierung kann Veränderungen an darunter liegenden
Adressenumsetzungen oder eine Veränderung an dem Status des Leerungsfilters
(wie z. B. Zählerüberlauf)
umfassen. Das FF_TLBInvalidate-Signal kann aktiviert werden, wenn
das LS_TLBInvalidateM-Signal
als logisches H-Signal aktiviert ist und das /CLR-Signal als L-Signal
aktiviert ist (und vor Eingabe in das UND-Gatter invertiert worden
ist).
-
Das
/CLR-Signal kann durch eine von mehreren unterschiedlichen Bedingungen
in einen logischen L-Zustand getrieben werden. Diese Bedingungen
kön nen
bei alternativen Ausführungsformen
variieren. Bei der dargestellten Ausführungsform können diese
Bedingungen ein Rücksetzen
des Leerungsfilters (Rücksetzsignal),
ein Modifizieren von Seitendaten (Modify Page Data-Signal, in 3 als Treffer-Signal gezeigt),
ein Überlaufen
eines der Zähler
(Overflow Region Counter-Signal, Overflow Base Address Register
Counter-Signal) oder ein Signal zum Sperren des Leerungsfilters
(Disable Flush Filter-Signal) umfassen. Signale für jede dieser
Bedingungen sind in der in 5 gezeigten
Logikschaltung vorhanden. Das /CLR-Signal wird bei der dargestellten
Ausführungsform
typischerweise in einem logischen H-Zustand gehalten und kann sich
durch eine Rückkopplungsschaltung
(mit einem ODER-Gatter) ausbreiten, um ein Eingangssignal in das
in der Zeichnung gezeigte 7-Eingangs-UND-Gatter zu werden. Das FF TLBInvalidate-Signal
kann sich ebenfalls durch eine Rückkopplungsschaltung
und das ODER-Gatter ausbreiten, wenn es aktiviert ist. Das Treiben
der Bedingungen in einen logischen N-Zustand kann zu einem logischen
L-Eingang in das UND-Gatter (aufgrund der Inverter) führen, wodurch
bewirkt wird, dass das /CLR-Signal in seinem logischen L-Zustand
aktiviert wird.
-
6 zeigt ein Zeitdiagramm
mit Darstellung des Betreibens einer Ausführungsform des TLB-Leerungsfilters.
Das Diagramm zeigt beispielhaft die Basisoperation des Leerungsfilters
und erhebt nicht den Anspruch, sämtliche
möglichen
Bedingungen oder Ergebnisse, die eintreten können, abzudecken. Ferner erhebt
das Diagramm nicht den Anspruch, spezifische Einzelheiten der Implementierung
des Leerungsfilters, die bei unterschiedlichen Ausführungsformen
variieren können,
zu kennzeichnen.
-
Die
Anfangsaktivierung des TLB-Leerungsfilters kann durch eine erste
Programmumschaltung erfolgen. Da das Leerungsfilter vor der ersten
Programmumschaltung nicht aktiviert war, kann ein Leeren des TLB
ohne Filterung die Folge sein. Nach der ersten Programmumschaltung
wird eine Seitentabelle A in den Speicher geladen. Die Seitentabelle
A ist dem neuen Programm zugeordnet, und Einträge, die dieser Seitentabelle
entsprechen, können
somit in die in 3 gezeigte
Bereichstabelle geladen werden, wenn entsprechende Adressenumsetzungen
in den TLB geladen werden. Nach dem Laden der Seitentabelle A erfolgt
eine weitere Programmumschaltung. In diesem Fall kann ein Leeren
des TLB durch Aktivieren des TLB-Leerungsfilters verhindert werden.
Dadurch kann angezeigt werden, dass keine Bedingung, die ein Leeren
erforderlich machen würde,
zwischen den Programmumschaltungen eingetreten ist. Bei dem dargestellten
Beispiel erfolgten zwischen den Programmumschaltungen keine Modifizierungen
an der Seitentabelle A.
-
Nach
der zweiten Programmumschaltung wird eine Seitentabelle B in den
Speicher geladen. Die Seitentabelle B kann Adressenumsetzungen enthalten,
von denen einige in den TLB geladen werden können. Nach dem Laden der Seitentabelle
B in den Speicher wird die Seitentabelle B modifiziert. Somit ist
es möglich,
dass einige aus der Seitentabelle B in den TLB geladene Adressenumsetzungen
nicht mehr gültig
sind. Folglich kann das TLB-Leerungsfilter ein Leeren des TLB (hier
als Leerung mit Filterung gezeigt) nach der nächsten Programmumschaltung ermöglichen.
-
Das
nächste
Ereignis, das nach der Leerung mit Filterung eintritt, ist ein Laden
einer Seitentabelle C. Wie anhand von 3 beschrieben,
verfolgt ein Bereichszähler
den CAM-Teil der Bereichstabelle und kann überlaufen, wenn die Bereichstabelle
keinen Platz mehr für
weitere Einträge
hat. In dem gezeigten Diagramm erfolgt dies nach dem Laden der Seitentabelle
C, durch das ein Überlaufen
des Bereichszählers
bewirkt wird. Ein Überlaufen
des Bereichszählers
kann die Deaktivierung des TLB-Leerungsfilters bewirken. Bei der
ersten Programmumschaltung nach der Deaktivierung kann der TLB geleert
werden. Diese erste Programmumschaltung kann ferner eine Neuaktivierung
des TLB-Leerungsfilters
bewirken.
-
7A und 7B zeigen Blockschaltbilder einer Paging-Struktur
mit Einträgen
in eine Bereichstabelle und einer Bereichstabelle mit Einträgen entsprechend
der Paging-Struktur bei einer Ausführungsform des TLB-Leerungsfilters 40.
In 7A kann das Basisadressenregister 301 eine
Adresse speichern, die auf einen Bereich (R0)
der Seitenverzeichniszeiger zeigt. Jeder Eintrag in dem Bereich zeigt
auf ein Seitenverzeichnis.
-
8 zeigt ein Blockschaltbild
zeigt ein Ausführungsbeispiel
eines Computersystems 200 einschließlich des Prozessors 10,
der über
eine Busbrücke 202 mit
einer Vielzahl von Systemkomponenten verbunden ist. Weitere Ausführungsbeispiele
sind möglich
und werden in Betracht gezogen. Bei dem dargestellten System ist
ein Hauptspeicher 204 über einen
Speicherbus 206 mit der Busbrücke 202 verbunden
und eine Grafiksteuerung 208 über einen AGP-Bus 210 mit
der Busbrücke 202 verbunden. Schließlich ist
eine Vielzahl von PCI-Vorrichtungen 212A-212B über einen
PCI-Bus 214 mit der Busbrücke 202 verbunden.
Ferner kann eine Sekundär-Busbrücke 216 vorgesehen
sein, um für
eine oder mehrere EISA- oder ISA-Vorrichtungen 218 über einen EISA-/ISA-Bus 220 ein
elektrisches Interface zu bilden. Der Prozessor 10 ist über einen
CPU-Bus 224 mit der Busbrücke 202 und mit einem
optionalen L2 Cache-Speicher
verbunden.
-
Jede
Busbrücke 202 bildet
ein Interface zwischen dem Prozessor 10, dem Hauptspeicher 204, der
Grafiksteuerung 208 und an dem PCI-Bus 214 angebrachten
Vorrichtungen. Wenn eine Operation von einer der an der Busbrücke 202 angeschlossenen
Vorrichtungen empfangen wird, identifiziert die Busbrücke 202 das
Target der Operation (zum Beispiel eine bestimmte Vorrichtung, oder
im Fall des PCI-Busses 214, dass das Target auf dem PCI Bus-214
ist). Die Busbrücke 202 führt die
Operation zu der Target-Vorrichtung. Die Busbrücke 202 setzt generell
eine Operation von dem Protokoll, das von der Quellvorrichtung oder
dem Quellbus benutzt wird, in das Protokoll um, das von der Target-Vorrichtung
oder dem Target-Bus benutzt wird.
-
Zusätzlich zu
der Bereitstellung eines Interface zu einem ISA-/EISA-Bus für den PCI-Bus 214 kann
die Sekundär-Busbrücke 216 wie
gewünscht eine
weitere Funktionalität
enthalten. Eine (nicht gezeigte) Eingangs/Ausgangssteuerung, die
entweder außerhalb
der Sekundär-Busbrücke 216 liegt
oder in die Sekundär-Busbrücke 216 integriert
ist, kann auch in dem Computersystem 200 enthalten sein,
um operationelle Unterstützung
für eine
Tastatur und eine Maus 222 und für verschiedene serielle und
parallele Anschlüsse,
wie gewünscht,
bereitzustellen. Eine (nicht gezeigte) externe Cache-Speicher-Einheit kann
bei anderen Ausführungsbeispielen
ferner zwischen dem Prozessor 10 und der Busbrücke 202 an den
CPU Bus 224 angeschlossen sein. Alternativ kann der externe
Cache-Speicher an der Busbrücke 202 angeschlossen
sein und kann die Cache-Speicher-Steuerlogik für den externen Cache-Speicher
in der Busbrücke 202 integriert
sein. Ein L2-Cache-Speicher 228 ist ferner in einer hinter
dem Prozessor 10 angeordneten Konfiguration gezeigt. Es sei
anzumerken, dass der L2-Cache-Speicher 228 von dem Prozessor 10 getrennt,
in einer Cartridge (zum Beispiel Slot 1 oder Slot A) des Prozessors 10 integriert
oder sogar auf einem Halbleitersubstrat in dem Prozessor 10 integriert
sein kann.
-
Der
Hauptspeicher 204 ist ein Speicher, in dem Anwendungsprogramme
gespeichert sind und von dem aus der Prozessor 10 hauptsächlich ausführt. Ein
geeigneter Hauptspeicher 204 weist einen DRAM (dynamischen
wahlfreien Zugriffsspeicher) auf. Zum Beispiel kann eine Vielzahl
von SDRAM- (Synchrones DRAM) oder Rambus DRAM- (RDRAM) Bänken geeignet
sein.
-
Die
PCI-Vorrichtungen 212A-212B sind beispielhaft
für eine
Vielzahl von Peripherievorrichtungen, wie zum Beispiel Netzwerk-Interface-Karten,
Videobeschleunigern, Audiokarten, Festplatten- oder Diskettenlaufwerken
oder Laufwerkssteuerungen, SCSI- (kleines Computersystem-Interface)
Adaptern oder Telefonkarten. Auf ähnliche Weise ist die ISA-Vorrichtung 218 beispielhaft
für verschiedene Typen
von Peripherievorrichtungen, wie ein Modem, eine Sound-Karte und eine Vielzahl
von Datenerfassungskarten, wie GPIB oder Feldbus-Interface-Karten.
-
Die
Grafiksteuerung 208 ist zum Steuern der Wiedergabe von
Text und Bildern auf einer Anzeige 226 vorgesehen. Die
Grafiksteuerung 208 kann ein beim Stand der Technik bekannter
typischer Grafikbeschleuniger sein, der dreidimensionale Datenstrukturen
wiedergibt, die effektiv aus dem und in den Hauptspeicher 204 verschoben
werden können.
Die Grafiksteuerung 208 kann daher insofern ein Master des
AGP-Busses 210 sein, dass sie Zugriff auf ein Target-Interface
innerhalb der Busbrücke 202 anfordern
und erhalten kann, um dadurch Zugriff auf den Hauptspeicher 204 zu
bekommen. Ein zweckbestimmter Grafikbus gewährt eine schnelle Rückgewinnung
von Daten aus dem Hauptspeicher 204. Bei bestimmten Operationen
kann die Grafiksteuerung 208 ferner zum Erzeugen von PCI-Protokoll-Transaktionen
auf dem AGP-Bus vorgesehen sein. Das AGP-Interface der Busbrücke 202 kann
daher Funktionalitäten
enthalten, um sowohl AGP-Protokoll-Transaktionen als auch PCI-Protokoll-Target- und
Initiator-Transaktionen zu unterstützen. Die Anzeige 226 ist
eine beliebige elektronische Anzeige, auf der ein Bild oder ein
Text dargestellt werden kann. Eine geeignete Anzeige 226 weist
eine Kathodenstrahlröhre
("CRT"), ein Flüssigkristall-Display ("LCD") usw. auf.
-
Es
ist anzumerken, dass, obwohl die AGP-, PCI- und ISA- oder EISA-Busse
in der obigen Beschreibung als Beispiele benutzt worden sind, jede Busarchitektur
wie gewünscht
durch eine andere ersetzt werden kann. Es ist ferner anzumerken,
dass das Computersystem 200 ein Mehrfachprozessorsystem
sein kann, das zusätzliche
Prozessoren enthält
(zum Beispiel Prozessor 10a, der als optionale Komponente
des Computersystems 200 gezeigt ist). Der Prozessor 10a kann
im wesentlichen gleich ausgeführt
sein wie der Prozessor 10. Insbesondere kann der Prozessor 10a eine
identische Kopie des Prozessors 10 sein. Der Prozessor 10a kann über einen
unabhängigen
Bus (wie in 5 gezeigt)
mit der Busbrücke 202 verbunden
sein oder kann den CPU-Bus 224 gemeinsam mit dem Prozessor 10 nutzen.
Ferner kann der Prozessor 10a mit einem optionalen L2-Cache-Speicher 228a verbunden
sein, der im wesentlichen gleich ausgeführt ist wie der L2-Cache-Speicher 228.
-
INDUSTRIELLE
ANWENDBARKEIT
-
Die
vorliegende Erfindung ist auf Mikroprozessoren und Translation-Lookaside-Puffer
anwendbar.