-
TECHNISCHES GEBIET
-
Diese
Erfindung betrifft das Gebiet der Mikroprozessoren und betrifft
insbesondere das Ausführen einer
Speicher-zu-Lade-Weiterleitung (STLF) in einem Mikroprozessor.
-
HINTERGRUND DER ERFINDUNG
-
In äußerst leistungsfähigen Mikroprozessoren
enthält
die Lade/Speicher-Einheit typischerweise Speicherplatz für mehrere
anstehende Lade- und Speicheroperationen, die darauf warten, auf
den L1-Cache bzw. Zwischenspeicher zuzugreifen. Eine übliche Leistungssteigerung,
die an dieser Art der Mikroprozessorachitektur durchgeführt werden
kann, besteht darin, einen Mechanismus zum Weiterleiten von Daten
aus älteren
Speicheroperationen (Speicheroperationen, die in der Programmreihenfolge
früher
auftreten) an Ladeoperationen (Ladeoperationen, die in der Programmreihenfolge
später
auftreten) einzuführen.
Diese Speicher-zu-Lade-Weiterleitung von Daten verbessert merklich
die Effizienz bei einer Ausführung,
bei der Zugriffe auf den L1-Datenzwischenspeicher
umgangen werden. Das Verfahren, mit welchem STLF typischerweise
erreicht wird, besteht darin, alle älteren Speicheroperationen
zu durchzusuchen, während
die Ladeoperation sich in der Datenzwischenspeicherzugriffstufe
der Ausführungspipeline
befindet. Die Adresse der Ladoperation wird mit den Adressen aller
Speicheroperationen, die in der Lade-Speichereinheit vorhanden sind, verglichen.
Zunächst
werden alle Speicheroperationen, die die gleiche Adresse, wie die
Ladeoperation zum Ziel haben, erkannt, und diese Einteilung wird
dann verfeinert, indem Speicheroperationen eliminiert werden, die
jünger
sind als die Ladeoperation. Sobald alle Speicheroperationen, die älter als
die Ladeoperation sind, erkannt sind, wird das relative Alter dieser Speicheroperationen
verglichen, um die jüngste Speicheroperation
zu ermitteln, die alter ist als die Ladeoperation. Die mit dieser
jüngsten
Speicheroperationen verknüpften
Daten werden dann an die Ladeoperation weitergereicht, so dass diese
in normaler Weise ohne das Erfordernis eines Zugriff auf den L1-Datenzwischenspeicher
abgeschlossen werden kann.
-
Die
Adressenvergleiche und die Suchalgorithmen, die zur Erkennung der
jüngsten
Speicheroperation mit der gleichen Zieladresse wie die Ladeoperation
angewendet werden, sind relativ komplex und erfordern viele Ebenen
kombinatorischer Logik, um diese Funktion einzurichten. Typischerweise speichert
die Lade/Speicher-Einheit Operationen, die auf eine Beendigung durch
Zugreifen auf den L1-Zwischenspeicher warten. Jede Zeile des Speichers
enthält
mehrere Einträge
für Lade-
oder Speicheroperationen. Wenn die Adresse einer Ladeoperation verfügbar ist,
muss diese mit der Adresse jedes Eintrags verglichen werden und
alle übereinstimmenden
Einträge
müssen
als Speicheroperationen verifiziert werden. Sobald alle Speicheroperationseinträge, die mit
der Zieladresse der Ladeoperation übereinstimmen, erkannt sind,
wird ein Ersterkennungsalgorithmus eingesetzt, um die jüngste übereinstimmende Speicheroperation
zu erkennen, die alter ist als die Ladeoperation. Die Daten von
dem geeigneten Eintrag können
dann verwendet und zu der Ladeoperation weitergeleitet werden.
-
Für äußerst leistungsfähige Mikroprozessoren
ist diese STLF-Funktion typischerweise ein Teil des kritischen Signalswegs
für den
Abschluss der Ladeoperation und beeinflusst daher merklich die effektive
Ladezeitdauer. Die Zeit, die zum Ausführen jeder der zuvor dargestellten
Prozeduren erforderlich ist, trägt
zu dieser effektiven Ladezeitdauer bei und in einigen Fällen kann
dies die maximale Frequenz begrenzen, mit der der Mikroprozessor
arbeiten kann.
-
US 6 360 314 beschreibt
ein System, in welchem eine Dekodiereinheit in einem Datencache-Subsystem
zusammen mit einer Lade/Speicherausführungseinheit betrieben wird.
Dabei erhält
die Dekodiereinheit entsprechende Operationskodierungen, die bereits
an die Lade/Speicherausführungseinheit
ausgegeben sind. Es wird ferner ein Umleitungsmechanismus beschrieben,
in welchem die Adresse eines gerade ausgegebenen Ladebefehls mit
einem Satz aus älteren
Schreibbefehlen, die noch nicht zu einer Speicheraktualisierung
geführt
haben, ausgeführt
wird.
-
WO 01/35212 betrifft ein
System mit einem Puffer zur Informationsspeicherung für Schreibspeicheroperationen,
wobei eine Schaltung vorgesehen ist, um eine Schreiboperation zu
erkennen, die eine in dem Puffer repräsentierte Schreiboperation
betrifft. In der Schaltung wird der Indexbereich der Ladeadresse
mit Indexbereichen der in dem Puffer gespeicherten Schreibadressen
verglichen.
-
Es
ist Aufgabe der vorliegenden Erfindung, bei einer Abarbeitung von
Operationen in einer Weise, die nicht der Programmreihenfolge entspricht,
effizient ein Ergebnis einer Ladeoperation bereitzustellen, das
von älteren
Schreiboperationen, die noch nicht abgeschlossen sind, abhängig ist.
-
ÜBERBLICK ÜBER DIE ERFINDUNG
-
Gelöst wird
die Aufgabe mit den Merkmalen der Ansprüche 1, 6 und 7.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Ein
gründlicheres
Verständnis
der vorliegenden Erfindung kann erreicht werden, wenn die folgende
detaillierte Beschreibung in Verbindung mit den folgenden Zeichnungen
studiert wird, in denen:
-
1 einen
Mikroprozessor zeigt, der einen STLF-Puffer gemäß einer Ausführungsform
enthält.
-
2 eine
Blockansicht einer Lade/Speicher-Einheit gemäß einer Ausführungsform
zeigt.
-
3 ein
Flussdiagramm eines Verfahrens zum Betreiben eines Mikroprozessors
mit einem STLF-Puffer gemäß einer
Ausführungsform
zeigt.
-
4 ein
Flussdiagramm eines Verfahrens zum Betreiben eines Mikroprozessors
zeigt, der eine STLF-Prüfeinheit
zusätzlich
zu dem Speicher-zu-Lade-Weiterleitungspuffer gemäß einer Ausführungsform
aufweist.
-
5 ein
beispielhaftes Computersystem mit einem Mikroprozessor mit einem
STLF-Puffer gemäß einer
Ausführungsform
zeigt.
-
6 ein
beispielhaftes Computersystem gemäß einer weiteren Ausführungsform
zeigt.
-
Obwohl
diese Erfindung diversen Modifizierungen und alternativen Formen
unterliegen kann, sind die speziellen Ausführungsformen beispielhaft in den
Zeichnungen gezeigt und werden nachfolgend detailliert beschrieben.
Es sollte jedoch selbstverständlich
sein, dass die Zeichnungen und die detaillierte Beschreibung nicht
beabsichtigen, die Erfindung auf die speziellen offenbarten Formen
einzuschränken,
sondern die Erfindung soll vielmehr alle Modifizierungen, Äquivalente
und Alternativen abdecken, die innerhalb des Grundgedankens und Schutzbereichs
der vorliegenden Erfindung liegen, wie sie durch die angefügten Patentansprüche definiert
ist. Zu beachten ist, dass die Überschriften
lediglich der Strukturierung dienen und nicht zur Einschränkung oder
Interpretation der Beschreibung oder der Ansprüche dienen sollen. Ferner ist
zu beachten, dass das Wort „kann" in dieser Anwendung durchwegs
als in einem zulässigen
Sinne verwendet wird (d. h. in dem Sinne, „besitzt das Potential zu,
ist in der Lage zu"),
und nicht in einem verpflichtenden Sinne (d. h. muss). Der Begriff „enthalten" und Ableitungen
davon bedeuten „einschließlich aber
nicht beschränkt
auf. Der Begriff „verbunden" bedeutet „direkt
oder indirekt verbunden" und
der Begriff „gekoppelt" bedeutet „direkt
oder indirekt gekoppelt".
-
ART BZW. ARTEN ZUM AUSFÜHREN DER
ERFINDUNG
-
1 ist
eine Blockansicht logischer Komponenten, die in einer Ausführungsform
eines Mikroprozessors 100 enthalten sind, der einen Speicher-zu-Lade-Weiterleitungs-(STLF)
Puffer 140 enthält.
Der Mikroprozessor 100 ist ausgebildet, Instruktionen auszuführen, die
in einem Systemspeicher 200 gespeichert sind. Viele dieser
Instruktionen operieren auf Daten, die in dem Systemspeicher 200 gespeichert
sind. Zu beachten ist, dass der Systemspeicher 200 physikalisch über ein
Computersystem verteilt sein kann und von einem oder mehreren Mikroprozessoren 100 angesprochen
werden kann. In einigen Ausführungsformen
kann der Mikroprozessor 100 kompatibel zu der x86-Architektur
gestaltet sein. Zu beachten ist, dass der Mikroprozessor 100 auch viele
andere Komponenten zusätzlich
zu den gezeigten enthalten kann und/oder mit diesen verbunden sein
kann. Beispielsweise können
zusätzliche
Ebenen an Cache- bzw. Zwischenspeicher (intern und/oder extern zu
dem Mikroprozessor 100) zwischen dem Mikroprozessor 100 und
dem Systemspeicher 200 enthalten sein. Ferner kann der
Mikroprozessor 100 in einigen Ausführungsformen eine Speichersteuerung
aufweisen, die zur Steuerung des Systemspeichers 200 ausgebildet
ist. Ferner kann die Verbindungsarchitektur zwischen logischen Komponenten
in den einzelnen Ausführungsformen
unterschiedlich sein.
-
Der
Mikroprozessor 100 kann einen Instruktionszwischenspeicher
bzw. Cache-Speicher 106 und einen Datenzwischenspeicher
bzw. Cache-Speicher 128 aufweisen. Der Mikroprozessor 100 kann eine
Vorabholeinheit 108 aufweisen, die mit dem Systemspeicher 200 gekoppelt
ist. Die Vorabholeinheit 108 kann einen Instruktionscode
aus dem Systemspeicher 200 zur Speicherung innerhalb des
Instruktionszwischenspeichers 106 vorab abholen. In einer
Ausführungsform
kann die Vorabholeinheit 108 ausgebildet sein, Code aus
dem Systemspeicher 200 gebündelt in den Instruktionszwischenspeicher 106 zu
laden. Die Vorabholeinheit 108 kann ferner diverse spezifische
Codierungsvorabhol-Verfahren und Algorithmen anwenden. Instruktionen
können
von dem Systemspeicher 200 in Reaktion darauf abgeholt
werden, dass eine gegebene Adresse in dem Instruktionszwischenspeicher 106 fehlt.
-
Eine
Verteilungs- bzw. Ausgabeeinheit 104 kann ausgebildet sein,
Instruktionen aus dem Instruktionszwischenspeicher 106 zu
empfangen und decodierte und/oder teilweise decodierte Operationen
von dem Überwachungs-
bzw. Aufzeichnungszwischenspeicher bzw. Cache 160 zu empfangen. Die
Verteilungseinheit 104 kann eine Decodiereinheit 140 enthalten,
um von dem Instruktionszwischenspeicher 106 erhaltene Instruktionen
zu decodieren. Die Verteilungseinheit 104 kann ferner eine
Mikrocodierungseinheit enthalten, die zur Verwendung bei der Handhabung
mikrocodierter Instruktionen eingesetzt wird.
-
Die
Verteilungseinheit 104 ist ausgebildet, Operationen an
die Ablauforganisationseinheit(en) 118 auszugeben. Eine
oder mehrere Ablauforganisationseinheiten 118 können angeschlossen
sein, um von der Verteilungseinheit 104 herausgegebene Operationen
zu empfangen und Operationen an einen oder mehrere Ausführungskerne 124 auszugeben.
Der bzw. die Ausführungskern(e) 124 können eine
Lade/Speicher-Einheit 126 enthalten, die ausgebildet ist,
Zugriffe auf den Datenzwischenspeicher 128 auszuführen. Ergebnisse,
die von dem bzw. den Ausführungskern(en) 124 erzeugt
werden, können auf
einen Ergebnisbus 130 ausgegeben werden. Diese Ergebnisse
können
als Operandenwerte für
nachfolgend ausgegebene Instruktionen verwendet und/oder in einer
Registerdatei 116 gespeichert werden. Eine Rückstauwartereihe 102 kann
mit den Ablauforganisationseinheit(en) 118 und der Verteilungseinheit 104 verbunden
sein. Die Rückstauwartereihe kann
ausgebildet sein, zu bestimmen, wann jede ausgegebene Operation
zurückgezogen
wird.
-
Der
Instruktionszwischenspeicher 106 kann temporär Instruktionen
zwischenspeichern, bevor sie von der Verteilungseinheit 104 empfangen
werden. Instruktionscodierungen können an den Instruktionszwischenspeicher 106 zugeführt werden,
indem Codierung von dem Systemspeicher 200 im vorab mittels
der Vorabholungseinheit 108 abgerufen wird. Der Instruktionszwischenspeicher 106 kann
in diversen Konfigurationen eingerichtet sein (beispielsweise teilassoziativ,
vollassoziativ oder direkt abgebildet).
-
Die
Verteilungseinheit 104 kann Signale ausgeben, die von dem
bzw. den Ausführungskern(en) 124 ausführbare Bit-codierte
Operationen sowie Operandenadresseninformationen, unmittelbare Daten
und/oder versetzte Daten enthalten. Die Decodiereinheit 140 kann
verwendet werden, um gewisse Instruktionen in eine oder mehrere
Operationen zu decodieren, die in den Ausführungskernen 124 ausführbar sind.
Einfache Instruktionen können
einer einfachen Operation entsprechen. Komplexere Instruktionen
können
mehreren Operationen entsprechen. Beim Empfangen einer Operation,
die das Aktualisieren eines Register beinhaltet, kann die Verteilungseinheit 104 eine
Registerstelle innerhalb der Registerdatei 116 reservieren,
um spekulative Registerzustände
zu speichern (in einer alternativen Ausführungsform kann ein Umordnungspuffer
verwendet werden, um einen oder mehrere spekulative Registerzustände für jedes
Register zu speichern). Eine Registerkarte bzw. Zuordnung kann lokale
Registernamen von Quellen- und Zieloperanden in physikalische Registernamen übersetzen,
um die Registerumbenennung zu ermöglichen. Eine derartige Registerkarte
kann aufzeichnen, welche Register innerhalb der Registerdatei 116 gegenwärtig zugeordnet
und welche nicht zugeordnet sind.
-
Wenn
Operationen von der Verteilungseinheit 104 gehandhabt werden,
kann, wenn ein erforderlicher Operand sich in einer Registerstelle
befindet, eine Registeradresseninformation zu einer Registerkarte
oder einem Umordnungspuffer geleitet werden. Beispielsweise gibt
es in der x86-Architektur acht 32-Bit-Logikregister (beispielsweise
EAX, EBX, ECX, EDX, EBP, ESI, EDI und ESP). Die physikalische Registerdatei 116 (oder
ein Umordnungspuffer) enthält
Speicherplatz für
Ergebnisse, die den Inhalt dieser lokalen Register ändern, wodurch
eine außer der
Reihenfolge liegende Ausführung
möglich
ist. Ein physikalisches Register in der Registerdatei 116 kann
dafür vorgesehen
sein, das Ergebnis jeder Operation zu speichern, die den Inhalt
eines der lokalen Register ändert.
Daher kann an diversen Punkten während
des Ausführens
eines speziellen Programms die Registerdatei 116 (oder
in alternativen Ausführungsformen
ein Umordnungspuffer) ein oder mehrere Register aufweisen, die die
spekulativ ausgeführten
Inhalte eines vorgegeben logischen Register enthalten.
-
Eine
Registerkarte kann ein physikalisches Register einem speziellen
logischen Register zuordnen, das als ein Zieloperand für eine Operation
spezifiziert ist. Die Registerdatei 116 kann ein oder mehrere
zuvor reservierte physikalische Register aufweisen, die einem als
ein Zieloperand in einer vorgegebenen Operation spezifizierten logischen
Register zugeordnet sind. Die Registerkarte kann eine Markierung
für das
physikalische Register liefern, das diesen logischen Register als
letztes zugeordnet wurde. Diese Markierung kann verwendet werden,
um auf den Datenwert des Operanden in der Registerdatei 116 zuzugreifen
oder um den Datenwert über
eine Ergebnisweiterleitung auf den Ergebnisbus 130 zu empfangen.
Wenn der Operand einer Speicherstelle entspricht, kann der Operandenwert
auf dem Ergebnisbus (für
eine Ergebnisweiterleitung und/oder Speicherung in der Registerdatei 116) über die
Lade/Speicher-Einheit 126 bereitgestellt werden. Operandendatenwerte
können
dem bzw. den Ausführungskern(en) 124 zugeführt werden,
wenn die Operation von einer oder der Ablauforganisationseinheit(en) 118 ausgegeben
wird. Zu beachten ist, dass in alternativen Ausführungsformen Operandenwerte einer
entsprechenden Ablauforganisationseinheit 118 zugeführt werden
können,
wenn eine Operation ausgegeben bzw. verteilt wird (anstatt dass
diese einem entsprechenden Ausführungskern 124 zugeführt wird,
wenn die Operation ausgegeben wird).
-
Die
Bit-codierten Operationen und die unmittelbaren Daten, die an den
Ausgängen
der Verteilungseinheit 104 bereitgestellt werden, können zu
einer oder mehreren Ablauforganisationseinheiten 118 geführt werden.
Zu beachten ist, dass im hierin verwendeten Sinne eine Ablauforganisationseinheit
eine Einrichtung ist, die erkennt, wann Operationen für die Ausführung bereit
sind und die bereiten Operationen zu einer oder mehreren Ausführungseinheiten
ausgibt. Beispielsweise ist eine Reservierungsstation eine Ablauforganisationseinheit.
Jede Ablauforganisationseinheit 118 kann in der Lage sein,
Operationsinformationen zu halten (beispielsweise Bitcodierte Ausführungsbits
sowie Operandenwerte, Operandenmarkierungen und/oder unmittelbare
Daten) für mehrere
im Ablauf befindliche Operationen, die auf eine Ausgabe an einem
Ausführungskern 124 warten.
In einigen Ausführungsformen
stellen die Ablauforganisationseinheiten 118 keinen Operandenwertspeicher
bereit. Stattdessen kann jede Ablauforganisationseinheit ausgegebene
Operationen und in der Registerdatei 116 verfügbare Ergebnisse überwachen,
um zu bestimmen, wann Operandenwerte verfügbar sind, so dass sie von
dem bzw. den Ausführungskern(en) 124 gelesen
werden können
(von der Registerdatei 116 oder dem Ergebnisbus 130).
In einigen Ausführungsformen
kann jede Ablauforganisationseinheit 118 mit einem zugeordneten
Ausführungskern 124 verknüpft sein.
In anderen Ausführungsformen
kann eine einzelne Ablauforganisationseinheit 118 Operationen
zu mehr als einem der Ausführungskerne 124 ausgeben.
-
Die
Ablauforganisationseinheiten 118 können vorgesehen sein, um zeitweilig
Operationsinformation, die von dem bzw. den Ausführungskern(en) 124 auszuführen ist,
zu speichern. Wie zuvor dargelegt ist, kann jede Ablauforganisationseinheit 118 Operationsinformation
für anhängige Operationen speichern.
Ferner kann jede Ablauforganisationseinheit Operationsinformationen
für Operationen
speichern, die bereits ausgeführt
sind, die aber nochmals auszugeben sind. Operationen werden an den
bzw. die Ausführungskern(e) 124 zur
Ausführung
gegeben, in Reaktion darauf, dass Werte eines oder mehrerer erforderlicher
Operanden zur Zeit der Ausführung
verfügbar
sind. Folglich kann die Reihenfolge, in der die Operationen ausgeführt werden,
anders sein als die Reihenfolge der ursprünglichen Programminstruktionssequenz.
-
In
einer Ausführungsform
kann jeder Ausführungskern 124 Komponenten
enthalten, die ausgebildet sind, arithmetische Ganzzahloperationen
mit Addition und Subtraktion sowie Schiebeoperationen, Rotationen,
logische Operationen und Verzweigungsoperationen auszuführen. Eine
Gleitkommaeinheit kann ebenso enthalten sein, um Gleitkommaoperationen
zu handhaben. Einer oder mehrere der Ausführungskerne 124 kann
ausgebildet sein, eine Adressenerzeugung für Lade-Speichervorgänge im Speicher,
die von der Lade-Speicher-Einheit 126 auszuführen sind,
durchzuführen.
-
Ergebnisse,
die von Komponenten in dem bzw. den Ausführungskern(en) 124 erzeugt
werden, können
auf den Ergebnisbus 130 zu der Registerdatei 116 ausgegeben
werden, wenn ein Registerwert aktualisiert wird. Wenn der Inhalt
einer Speicherstelle geändert
wird, können
die von dem bzw. den Ausführungskern(en) 124 erzeugten
Ergebnisse der Lade/Speicher-Einheit 126 zugeführt werden.
-
Die
Lade/Speicher-Einheit 126 stellt eine Schnittstelle zwischen
dem bzw. den Ausführungskern(en) 124 und
dem Datenzwischenspeicher 128 bereit. In einer Ausführungsform
kann die Lade/Speicher-Einheit 126 mit einem Lade/Speicher-Puffer
mit mehreren Speicherplätzen
für Daten-
und Adressinformationen für
anhängige
Lade- und Speicheroperationen
versehen sein. Die Lade/Speicher-Einheit 126 kann ferner
eine Abhängigkeitsprüfung für Ladeinstruktionen
im Hinblick auf anhängige
Speicherinstruktionen durchführen,
um sicherzustellen, dass die Datenkohärenz beibehalten wird.
-
Der
Datenzwischenspeicher 128 ist ein Zwischenspeicher bzw.
Cachespeicher, der vorgesehen ist, um zeitweilig Daten zu speichern,
die zwischen der Lade/Speicher-Einheit 126 und
dem Systemspeicher 200 ausgetauscht werden. Wie der Instruktionszwischenspeicher 106,
der zuvor beschrieben ist, kann der Datenzwischenspeicher 128 in
einer Vielzahl spezifischer Speicherkonfigurationen eingerichtet
sein, zu denen eine teilassoziative Konfiguration gehört. Ferner
können
der Datenzwischenspeicher 106 und der Instruktionszwischenspeicher 128 in
einigen Ausführungsformen
in einem vereinheitlichten Zwischenspeicher eingerichtet sein.
-
LADE/SPEICHER-EINHEIT
-
2 zeigt
eine Lade/Speicher-Einheit 126, die einen Speicher-zu-Lade-Weiterleitungs-(STLF) Puffer 305 gemäß einer
Ausführungsform
aufweist. Die Lade/Speicher-Einheit 126 umfasst einen Operationsspeicher 307 für anhängige Operationen,
die verteilt sind, die aber noch nicht abgeschlossen sind. Der Operationsspeicher 307 kann
alle anhängigen Operationen
innerhalb der Lade/Speicher-Einheit 126 überwachen.
Der Operationsspeicher 307 kann einen Eintrag 310 für jede verteilte
Ladeoperation und jede verteilte Speicheroperation enthalten.
-
Ein
Eintrag 310 kann Informationen 313 enthalten,
die anzeigen, ob der Eintrag einer Ladeoperation oder einer Speicheroperation
zugeordnet ist (oder in einigen Ausführungsformen kann ein Eintrag anzeigen,
dass er eine Ladeoperation und eine Speicherung enthält, wenn
er einer Operation zugeordnet ist, die auf einem Wert operiert,
der von einer Speicheradresse eingeladen wird und das Ergebnis in
einer Speicheradresse speichert). Ferner kann ein Eintrag 310 eine
Markierung 315 (die beispielsweise die Operation und/oder
ihr Ergebnis in dem Mikroprozessor 100 kennzeichnet) eine
Adresse 317 und/oder Daten 319 enthalten. Ein
Eintrag 310 kann in Reaktion darauf zugeordnet werden,
dass die Verteilungseinheit 104 eine Operation ausgibt,
und kann freigegeben werden in Reaktion darauf, dass die Rückstauwartereihe 102 die
Operation zurückzieht.
-
Jeder
Eintrag 320 in dem STLF-Puffer 305 kann mittels
eines einzigartigen Index ausgewählt werden.
Die Lade/Speicher-Einheit 126 kann einen Index aus allen
Adressen einer Operation oder einem Teil davon erzeugen und den
Index verwenden, um auszuwählen,
auf welchen Eintrag für
diese Operation zuzugreifen ist. Beispielsweise kann die Lade/Speicher-Einheit 126 einen
Index aus einer Teilmenge der Bits in der Adresse erzeugen. Die
verwendete Adresse kann eine physikalische Adresse oder eine virtuelle
Adresse sein. In einigen Ausführungsformen
kann der Index auch von der Datengröße der Operation abhängen.
-
In
einigen Ausführungsformen,
wenn sowohl die Adresse als auch die Daten für eine Speicheroperation verfügbar sind,
ist die Speicheroperation geeignet, dass ihre Daten zu einer jüngeren Ladeoperation,
die auf die gleiche Adresse abzielt, weitergeleitet werden. An diesem
Punkt kann die Lade/Speicher-Einheit einen Eintrag 320 in
dem STLF-Puffer 305 der Speicheroperation zuordnen. Die
Lade/Speicher-Einheit 126 kann auswählen, welcher Eintrag 320 einer
Speicheroperation zuzuordnen ist, indem ein Index aus mindestens
einem Teil der Adresse der Speicheroperation berechnet wird. Der
Eintrag 320, der von diesem Index ausgewählt ist,
kann der Speicheroperation zugeordnet werden. Ein Eintrag 320 in dem
STLF-Puffer 305 kann die Gesamtheit oder einen Teil der
Adresse 321, der Daten 327 und der Datengröße 329 (beispielsweise
die Anzahl an Datenbytes, auf denen von der Speicheroperation operiert wird)
der Speicheroperation enthalten, der dieser Eintrag zugeordnet ist.
Alle Einträge
in dem STLF-Puffer 305 können eine ausreichende Kapazität aufweisen,
um die maximale Menge an Daten zu speichern, die mit einer Speicheroperation
verknüpft sind.
-
Wenn
eine Adresse einer Ladeoperation verfügbar wird, kann die Lade/Speicher-Einheit 126 einen
Index auf der Grundlage der gesamten oder eines Teils der Ladeadresse
erzeugen, um einen Eintrag 320 in dem STLF-Puffer 305 auszuwählen. Wenn
die Adresseninformation 321 und/oder die Datengrößeninformation 329,
die in dem ausgewählten Eintrag 320 enthalten
sind, mit der Adresseninformation und/oder der Datengrößeinformation,
die mit der Ladeoperation verknüpft
sind, übereinstimmen,
kann der STLF-Puffer 305 die Daten 327 in diesem
Eintrag als das Ergebnis der Ladeoperation weiterreichen. Zu beachten
ist, dass eine „Übereinstimmung" auftreten kann,
wenn die Adresseninformation 321, die Datengrößeninformation 329 und/oder
eine andere Information, die in dem Eintrag 320 enthalten
ist, zumindest teilweise mit der Information übereinstimmen, die mit der
Ladeoperation verknüpft
ist. Beispielsweise kann ein Eintrag als eine Übereinstimmung in Reaktion
daraufhin betrachtet werden, dass eine Teilmenge oder ein Teil der
Information des Eintrags mit der zu einem Ladevorgang gehörenden Information übereinstimmt.
In anderen Ausführungsformen
können Übereinstimmungen
lediglich dann auftreten, wenn die Information des Eintrags vollständig mit
der Information der Ladeoperation übereinstimmt.
-
In
einigen Ausführungsformen
kann der Index eines Eintrags 320 die niederwertigen Bits
der Adresse einer Operation enthalten. In anderen Ausführungsformen
kann der Index erzeugt werden, indem eine gewisse Transformationsfunktion
an der Adresse einer Operation ausgeführt wird. Indizes können so
erzeugt werden, dass ein Paar aus einer beliebigen gegebenen Adresse
und einer Datengröße in einigen
Ausführungsformen
auf einen einzelnen Index abgebildet werden (zu beachten ist, dass der
gleiche Index aus mehreren unterschiedlichen Adressen gebildet werden
kann). Wenn daher die Adresse einer Ladeoperation verwendet wird,
um auf der Basis des Index auf den STLF-Puffer 305 zuzugreifen,
wird ein einzelner Eintrag 320 ausgewählt. Die Anwendung eines indexgestützten STLF-Puffers 305 ermöglicht es,
dass eine Speicher-zu-Lade-Weiterleitung
in weniger Zyklen ausgeführt
werden kann, als sonst erforderlich wären, um ein Speicher-zu-Lade-Weiterleiten
unter Anwendung eines konventionellen STLF-Puffers auszuführen.
-
In
einigen Ausführungsformen
kann der STLF-Puffer 305 eine begrenzte Größe aufweisen und
daher ausgebildet sein, eine begrenzte Anzahl an Einträgen im Vergleich
zur Anzahl in dem Operationsspeicher 307 der Lade/Speicher-Einheit
gespeicherten Anzahl an Operationen zu speichern. Dies kann unter
gewissen Umständen
einen Konflikt für Einträge 320 des
STLF-Puffers 305 hervorrufen. Beispielsweise kann der STLF-Puffer 305 eine
Kapazität aufweisen,
um 16 Einträge
entsprechend den Adressen 0x0h bis 0xFh zu speichern. Eine Instruktionssequenz
kann zur Ausgabe einer Reihe von Speicheroperationen führen, die
jeweils vier Datenbytes speichern. Die Reihe aus Speicheroperationen
kann der Reihe nach Speicheradressen ansprechen, so dass die erste
Speicheroperation auf die Adresse 0x00h, die zweite auf die Adresse
0x04h, die dritte auf 0x08h, etc. zielt. In Ausführungsformen unter Anwendung
eines direkt zugeordneten Indexverfahrens können die ersten vier Speicheroperationen
bewirken, dass die Einträge 320 in
dem STLF-Puffer 305 bei Indizes 0x0h, 0x4h, 0x8h und 0xCh
erzeugt werden. Die nächste
Speicheroperation in der Reihe kann auf die Adresse 0x10h abzielen
und der für
den Eintrag 320 dieser Speicheroperation erzeugte Index kann
0x0h sein. Da dieser Index der gleiche ist, der für die erste
Speicheroperation erzeugt wurde, die auf die Zieladresse 0x00h gerichtet
ist, hält
die Lade/Speichereinheit 126 den gleichen Eintrag 320 in dem
STLF-Puffer für
diese beiden Speicheroperationen.
-
Da
die Speicheroperation mit der Adresse 0x10h den gleichen Eintrag
als Index angibt wie die Speicheroperation mit der Adresse 0x00h
können nicht
beide Speicheroperationen in dem STLF-Puffer gleichzeitig repräsentiert
sein, obwohl andere Einträge
in dem STLF-Puffer 305 aktuell nicht zugeordnet sind. Wenn
kein Eintrag in dem STLF-Puffer 305 für die neue Speicheroperation
zugeordnet ist, dann kann die Lade/Speicher-Einheit 126 nicht
unmittelbar mit der neuen Speicheroperation verknüpfte Daten an
eine Ladeoperation weiterreichen, die auf die gleiche Adresse abzielt.
Wenn andererseits der Eintrag der neuen Speicheradresse mit der
Adresse 0x10h zugeordnet ist, wodurch die Information für die Speicheroperation
mit der Adresse 0x00h überschrieben wird,
kann die Lade/Speicher-Einheit 126 die mit der alten Speicheroperation
verknüpften
Daten nicht unmittelbar an die Ladeoperation, die auf die gleiche Adresse
zielt, weiterreichen.
-
Die
Möglichkeit
für Konflikte
zwischen einer Reihe von Speicheroperationen, die auf aufeinanderfolgende
Adressen zugreifen, kann verringert werden, indem eine Prüfsummenfunktion
oder eine andere Transformation für Adressen angewendet wird, wenn
Indizes für
den STLF-Puffer 305 erzeugt werden. In einer Ausführungsform
kann die Lade/Speicher-Einheit 126 jeden Index bilden,
indem die Adresse einer Operation um einen Betrag gleich log2 (Datengröße) nach
rechts verschoben wird. In dem zuvor angegebenen Beispiel würde das
Anwenden dieser Prüfsummenfunktion
die Speicheroperation mit der Zieladresse 0x00h in einen Eintrag 320 entsprechend
dem Index 0x0h überführen. Für die Speicheroperation
mit der Zieladresse 0x04h würde
die Lade/Speicher-Einheit 126 den Eintrag mit dem Index
0x01h zuordnen. In gleicher Weise würde die Lade/Speicher-Einheit
den durch den Index 0x2h ausgewählten
Eintrag der Speicheroperation mit der Adresse 0x08h zuordnen. Die
Speicheroperation mit der Zieladresse 0x10h, die vorher mit der
Speicheroperationszieladresse 0x00h im Konflikt war, würde dem
Eintrag zugeordnet, der durch einen Index 0x4 ausgewählt ist,
und es würde
sich kein Konflikt mehr ergeben. Somit kann das Einfügen einer
Prüfsummenfunktion
oder einer anderen Transformation bei der Erzeugung von Indizes
für Einträge 320 in
dem STLF-Puffer 305 die Nutzung der Speicherkapazität des STLF-Puffers vergrößern.
-
Das
Transformieren von Zieladressen für Lade/Speicher-Operationen,
wie dies zuvor beschrieben ist, um damit Indizes für den STLF-Puffer 305 zu erzeugen,
kann es ermöglichen,
dass Einträge,
die mehreren Speicheroperationen zugeordnet sind, die unterschiedliche
Bytes innerhalb des gleichen maximalen Datengrößensegments betreffen, gleichzeitig innerhalb
des STLF-Puffers 305 vorhanden sind. Jedoch wird ein gewisser
Verlust an Präzision
zu erwarten sein, wenn die Bits der geringeren Wertigkeit herausgeschoben
werden, und es kann notwendig sein, die Adresse 321 und
die Datengröße 329 zu
vergleichen, um damit einen Treffer innerhalb des STLF-Puffers 305 zu
bestimmen. Beispielsweise sind Einträge für 2-Byte-Speicheroperationen
zu Adressen 0x00h, 0x2h und 0x04h gleichzeitig in dem STLF-Puffer 305 an
Indexpositionen 0x0h, 0x1h und 0x2h vorhanden. Ein Versuch, eine
4-Byte-Ladeoperation
mit Zieladresse 0x04h in Übereinstimmung
zu bringen, würde
einen Index für
den STLF-Puffer 305 von 0x1h erzeugen, an welchem ein zulässiger Eintrag
zu finden ist, aber da die Speicheroperation, die den Eintrag bei
0x1h erzeugte, lediglich auf zwei Datenbytes operiert, sollte die
Lade/Speicher-Einheit einen Fehler für diese versuchte Übereinstimmung
erzeugen. Vergleichen sowohl der Adressen als auch der Datengrößen von
Ladeoperationen mit Einträgen in
dem STLF-Puffer 305 kann zumindest einige der fehlerhaften Übereinstimmungsversuche
ausschließen.
-
In
einigen Ausführungsformen
können, selbst
wenn Transformationen an Adressen zur Erzeugung von Indizes für den STLF-Puffer 305 verwendet
werden, Situationen auftreten, in denen zwei oder mehr Speicheroperationen
dem gleichen STLF-Puffer-Eintrag 320 zugeordnet
sind. Unter dieser Bedingung besteht die Möglichkeit, dass eine Ladeoperation,
die die gleiche Adresse als Ziel hat wie diese Speicheroperationen,
Daten von der falschen Speicheroperation weitergereicht werden.
In einigen Ausführungsformen,
in denen der STLF-Puffer 305 nicht korrekterweise Daten
weiterleitet, kann der STLF-Puffer 305 weitergeleitete
Ergebnisse als spekulativ kennzeichnen. Z. B. kann ein mit dem weitergeleiteten
Daten verknüpftes
Bit gesetzt werden, um anzuzeigen, dass die Daten spekulativ sind.
Diese Ergebnisse können
als spekulativ gekennzeichnet sein, wie sie von einem Verifizierungsmechanismus, etwa
der STLF-Prüfeinheit 303 verifiziert
sind.
-
Die
STLF-Prüfeinheit 303 ist
eine Einrichtung zum Verifizieren der Genauigkeit der STLF-Operationen.
In einigen Ausführungsformen kann
die STLF-Prüfeinheit 303 als
ein konventioneller STLF-Puffer eingerichtet sein, der assoziative bzw.
inhaltsadressierte Zugriffe ausführt
und einen Erstfindealgorithmus einrichtet. Somit kann die STLF- Prüfeinheit
die Adresse einer Ladeoperation mit den Adressen aller Speicheroperationen
in dem Operationsspeicher 307 der Lade/Speicher-Einheit 126 vergleichen.
Wenn alle übereinstimmenden
Einträge 310 erkannt
sind, kann die STLF-Prüfeinheit 303 einen
Erstfindealgorithmus anwenden, um den Eintrag 310 zu identifizieren,
der der jüngsten
Speicheroperation zugeordnet ist, die älter ist als die Ladeoperation.
Die Daten 319 des identifizierten Eintrags 310 können dann
als der Wert ausgewählt
werden, der als das Ergebnis der Ladeoperation weiterzuleiten ist.
Die STLF-Prüfeinheit 303 kann
deutlich mehr Zyklen beanspruchen, um das Speicher-zu-Lade-Weiterleiten
im Vergleich zu dem STLF-Puffer 305 auszuführen.
-
Die
STLF-Prüfeinheit 303 kann
in präziser Weise
die korrekte Quelle für
die Daten kennzeichnen, die an eine Ladeoperation weiterzugeben
sind. Wenn die STLF-Prüfeinheit 303 und
der STLF-Puffer 305 die gleiche Speicheroperation als die
Quelle kennzeichnen, von der Daten als das Ergebnis einer vorgegebenen
Ladeoperation weiterzuleiten sind, dann sind die von STLF-Puffer 305 als
Ergebnis der Ladeoperation weitergeleiteten Daten nicht mehr weiter
als spekulativ zu betrachten und die Lade/Speicher-Einheit kann
diesbezüglich
eine Anzeige erzeugen. Beispielsweise kann ein mit dem Weitergeleiten
Daten verknüpftes
Bit zurückgesetzt
werden, um anzuzeigen, dass die Daten nicht mehr spekulativ sind.
Wenn andererseits die STLF-Prüfeinheit 303 eine
andere Speicheroperation als jene, die zum Weiterleiten von Daten
von dem STLF-Puffer 305 verwendet
wurde, erkennt, dann haben die Ladeoperation und mögliche nachfolgende
Operationen, die auf den spekulativen Daten operierten, unter Umständen unzulässige Ergebnisse
erzeugt. Die STLF-Prüfeinheit 303 kann
ebenso Situationen erfassen, in denen der STLF-Puffer keine Daten
als Ergebnis einer Ladeoperation weitergeleitet hat, obwohl diese
Ladeoperation Daten aus einer früheren Speicheroperation
weitergeleitet haben sollte.
-
Die
STLF-Prüfeinheit 303 kann
Ladeoperationen löschen,
die unkorrekterweise in den STLF-Puffer 305 weitergeleitet
aber die unkorrekterweise nicht an den STLF-Puffer 305 weitergeleitet
haben. In derartigen Situationen kann die STLF-Prüfeinheit 303 veranlassen,
dass die Ladeoperation erneut ausgeführt wird (beispielsweise durch
Bereitstellen eines Signals für
die Ablauforganisationseinheit 118). Die STLF-Prüfeinheit 303 kann
auch Informationen erzeugen, die die Speicheroperation benennen,
von der aus eine nicht korrekt weitergeleitete (oder eine unkorrekt
nicht weitergeleitete) Ladeoperation aus weiterleiten sollte. Wenn
die Ladeoperation in der Lade/Speicher-Einheit 126 erneut ausgeführt wird, kann
die Lade/Speicher-Einheit 126 diese Information nutzen,
um Daten von der Speicheroperation, die von der STLF-Prüfeinheit 303 erkannt
wird, als das Ergebnis der Ladeoperation weiterzuleiten. Alternativ kann
die Lade/Speicher-Einheit 126 ausgebildet sein, eine Ergebnisweiterleitung
für Ladeoperationen zu
unterdrücken,
die die STLF-Prüfeinheit 303 gelöscht hat
und bewirkt hat, dass diese auf Grund einer nicht korrekten Arbeitsweise
des STLF-Puffers 305 erneut auszuführen ist.
-
3 ist
ein Flussdiagramm eines Verfahrens zum Betreiben eines Mikroprozessors
mit einem Speicher-zu-Lade-Weiterleitungs-Puffer gemäß einer
Ausführungsform.
Wenn sowohl die Zieladresse als auch zugeordnete Daten einer Speicheroperation bei 405 zulässig sind,
kann ein Eintrag in den Speicher-zu-Lade-Weiterleitungs-Puffer zur
Zuordnung zu der Speicheroperation auf der Grundlage eines Index
ausgewählt
werden, der aus der Gesamtheit oder einem Teil der Adresse der Speicheroperation und/oder
der Datengröße erzeugt
wird, wie dies bei 410 gezeigt ist. Der ausgewählte Eintrag
kann die Gesamtheit oder einen Teil der Zieladresse für die Speicheroperation
speichern (beispielsweise kann der Eintrag eine Markierung einschließlich der
höherwertigen
Bits der Zieladresse, die zur Erzeugung des Index nicht verwendet
werden, enthalten). Der Eintrag kann ferner die mit der Speicheroperation
verknüpften
Daten und einen Wert, der die Größe der Daten
repräsentiert,
enthalten.
-
Wenn
die mit einer Ladeoperation verknüpfte Adresse bei 415 erhalten
wird, kann die Lade/Speicher-Einheit einen in den STLF-Puffer weisenden
Index auf der Grundlage der Adresse bei 420 erzeugen. Wenn
der von dem Index ausgewählte
Eintrag zulässig
ist, kann im Schritt 425 die Lade/Speicher-Einheit die
Adresse und die Datengröße des Eintrags
mit jenen der Ladeoperation vergleichen. Bei 430 können die
Daten von dem übereinstimmenden
Eintrag als das Ergebnis der Ladeoperation weitergeleitet werden.
Wenn die Adresse und/oder die Datengröße des ausgewählten Eintrags
nicht mit jenen der Ladeoperation übereinstimmen, werden keine
Daten als das Ergebnis der Ladeoperation weitergeleitet.
-
4 ist
ein Flussdiagramm eines Verfahrens zum Betreiben eines Mikroprozessors,
in welchem eine STLF-Prüfeinheit
zusätzlich
zu einem indexbehafteten Speicher-zu-Lade-Weiterleitungs-Puffer gemäß einer
Ausführungsform
vorgesehen ist. Wenn eine Adresse für eine Ladeoperation bei 505 gleichzeitig
mit den Operationen 420 bis 435 aus 3 erhalten
wird, kann die STLF-Prüfeinheit
in dem Operationsspeicher mit der Suche beginnen, alle vorhandenen
Speicheroperationen mit übereinstimmenden
Zieladressen im Schritt 510 zu erkennen. Aus der Gruppe
der Speicheroperationen, die älter
als die Ladeoperation sind, kann die STLF-Prüfeinheit dann die jüngste als
die korrekte Quelle für Daten
im Schritt 515 auswählen,
die zu der Ladeoperation weiterzureichen sind. Bei 520 kann
die Lade/Speicher-Einheit die Speicheroperation, die zur Weiterleitung
von Daten an die Ladeoperation von dem STLF-Puffer (bei 430)
ausgewählt
sind, mit der Speicheroperation vergleichen, die von der STLF-Prüfeinheit
im Schritt 515 erkannt sind. Wenn Daten zu der Ladeoperation
in einer anderen Speicheroperation weitergeleitet wurden, als sie
von der STLF-Prüfeinheit
im Schritt 515 erkannt wurde, oder wenn keine Daten zu
der Ladeoperation (bei 435) weitergeleitet wurden und eine übereinstimmende Speicheroperation
von der STLF-Prüfeinheit
bei 515 erkannt wurde, kann die Lade/Speicher-Einheit die Ladeoperation
zusammen mit nachfolgenden Operationen, die von den Ergebnissen
der Ladeoperation abhängen,
im Schritt 525 erneut ausführen. In einigen Ausführungsformen
kann die Lade/Speicher-Einheit die Identität der im Schritt 515 erkannten Speicheroperation
als die korrekte Quelle für
Daten, die an die Ladeoperation weiterzuleiten sind, zur Verwendung
in einer nachfolgenden erneuten Verarbeitung der Ladeoperation bereitstellen.
In anderen Ausführungsformen
kann die Lade/Speicher-Einheit die Speicher-zu-Lade-Weiterleitung
bei der nachfolgenden Wiederverarbeitung der Ladeoperation unterdrücken.
-
BEISPIELHAFTE COMPUTERSYSTEME
-
5 zeigt
eine Blockansicht einer Ausführungsform
eines Computersystems 900, das einen Mikroprozessor 190 aufweist,
der mit mehreren Systemkomponenten über eine Busbrücke 902 verbunden
ist. Der Mikroprozessor 100 kann eine Lade/Speicher-Einheit
mit einem STLF-Puffer 305 und einer Prüfeinheit 303 enthalten,
wie sie zuvor beschrieben sind. Andere Ausführungsformen eines Computersystems
sind möglich
und hierin berücksichtigt.
In dem dargestellten System ist ein Hauptspeicher 200 mit
der Busbrücke 902 über einen Speicherbus 906 verbunden,
und eine Graphiksteuerung 908 ist mit der Busbrücke 902 über eine AGB-Bus 910 verbunden.
Diverse PCI-Geräte 912a bis 912b sind
mit der Busbrücke 902 über einen PCI-Bus 914 verbunden.
Eine zweite bzw. sekundäre Busbrücke 916 kann
ebenso vorgesehen sein, um eine elektrische Schnittstelle zu einer
oder mehreren EISA/ISA-Geräten 918 über einen
EISA/ISA-Bus 920 bereitzustellen. In diesem Beispiel ist
der Mikroprozessor 100 mit der Busbrücke 902 über einen CPU-Bus 924 und
mit einem optionalen L2-Chache-Speicher bzw. Zwischenspeicher 928 verbunden.
In einigen Ausführungsformen
kann der Mikroprozessor 100 einen integrierten L1-Cache-Speicher bzw.
Zwischenspeicher (nicht gezeigt) aufweisen.
-
Die
Bus-Brücke 902 bildet
eine Schnittstelle zwischen dem Mikroprozessor 100, dem
Hauptspeicher 200, der Graphiksteuerung 908 und
den mit dem PCI-Bus 914 verbundenen Geräten. Wenn eine Operation von
einem der mit der Busbrücke 902 verbundenen
Geräte
empfangen wird, erkennt die Busbrücke 902 das Ziel der
Operation (beispielsweise ein spezielles Gerät oder im Falle des PCI-Busses 914, dass
das Ziel auf dem PCI-Bus 914 liegt). Die Busbrücke 902 leitet
die Operation an das Zielgerät
weiter. Die Busbrücke 902 übersetzt
im Allgemeinen eine Operation von dem Quellengerät oder Quellenbus verwendeten
Protokoll in das Protokoll, das von dem Zielgerät oder Zielbus verwendet wird.
-
Zusätzlich zum
Bereitstellen einer Schnittstelle für einen ISA-EISA-Bus für den PCI-Bus 914 kann
die sekundäre
Busbrücke 916 weitere
Funktionen enthalten. Eine Eingangs/Ausgangs-Steuerung (nicht gezeigt),
die extern zu der zweiten Busbrücke 916 vorgesehen
oder in dieser integriert ist, kann ebenso in dem Computersystem 900 enthalten
sein, um funktionsmäßig eine
Tastatur und eine Maus 922 und diverse serielle und parallele
Anschlüsse
zu unterstützten.
Eine externe Zwischenspeichereinheit (nicht gezeigt) kann ebenso
an dem CPU-Bus 924 in weiteren Ausführungsformen zwischen dem Mikroprozessor 100 und
der Busbrücke 902 angeschlossen
sein. Alternativ kann der externe Zwischenspeicher mit der Busbrücke 902 verbunden
sein und eine Zwischenspeichersteuerlogik für den externen Zwischenspeicher
kann in der Busbrücke 902 integriert sein.
Der L2-Zwischenspeicher 928 ist in einer Rückseitenkonfiguration
zu dem Mikroprozessor 100 gezeigt. Zu beachten ist, dass
der L2-Zwischenspeicher 928 separat zu dem Mikroprozessor 100 vorgesehen sein
kann, beispielsweise in einem Einschub (beispielsweise Einschub
1 oder Einschub A) des Mikroprozessors 100, oder dieser
kann sogar mit dem Mikroprozessor 100 auf einem Halbleitersubstrat
aufgebracht sein.
-
Der
Hauptspeicher 200 ist ein Speicher, in welchem Anwendungsprogramme
gespeichert sind und von welchem aus der Mikroprozessor zuerst seine
Ausführung
beginnt. Zu einem geeigneten Hauptspeicher 200 kann ein
DRAM (dynamischer Speicher mit wahlfreiem Zugriff gehören). Beispielsweise
sind mehrere SDRAM (synchroner DRAM) oder Rambus DRAM (RDRAM) geeignet.
-
Die
PCT-Geräte 912a bis 912b sind
als anschauliche Beispiele einer Vielzahl peripherer Geräte, etwa
Netzwerkschnittstellenkarten, Videobeschleuniger, Audiokarten, Festplatten
oder Laufwerke oder Laufwerkssteuerungen (SCSI-) Kleincomputersystemschnittstellenadapter
und Telefonkarten aufgeführt.
In ähnlicher
Weise ist das ISA-Gerät 918 als
anschauliches Beispiel für
diverse Arten von peripheren Geräten
gezeigt, etwa einem Modem, einer Soundkarte und einer Vielzahl von
Datennahmekarten, etwa GPIB oder Feldbusschnittstellenkarten.
-
Die
Graphiksteuerung 908 ist vorgesehen, um das Umsetzen von
Text und Bildern auf eine Anzeige 926 zu steuern. Die Graphiksteuerung 908 kann
einen typischen Graphikbeschleuniger verkörpern, der im Allgemeinen im
Stand der Technik bekannt ist, um damit dreidimensionale Datenstrukturen
umzusetzen, die effektiv in den Hauptspeicher 200 verschoben
und daraus ausgelesen werden. Die Graphiksteuerung 908 kann
daher ein Master (übergeordnetes
Gerät)
des AGP-Busses 910 sein, da es Zugriff auf eine Zielschnittstelle
innerhalb der Busbrücke 902 anfordern
und empfangen kann, um damit einen Zugriff auf den Hauptspeicher 200 zu
erhalten. Ein zugeordneter Graphikbus sorgt für ein rasches Abrufen von Daten
aus dem Hauptspeicher 200. Für gewisse Operationen kann
die Graphiksteuerung 908 ferner ausgebildet sein, PCI-Protokolltransaktionen
auf dem AGP-Bus 910 zu erzeugen. Die AGP-Schnittstelle
der Busbrücke 902 kann
daher eine Funktion enthalten, um sowohl AGP-Protokolltransaktionen sowie PCI-Protokollziel-
und Initiatorentransaktionen zu unterstützten. Die Anzeige 926 ist
eine beliebige elektronische Anzeige, auf der ein Bild oder ein
Text dargestellt werden kann. Zu einer geeigneten Anzeige 926 gehört eine
Kathodenstrahlröhre
(„CRT"), eine Flüssigkristallanzeige
(„LCD"), etc.
-
Es
ist zu beachten, dass, obwohl die AGP-, PCI- und ISA- oder EISA-Busse
als Beispiele in der obigen Beschreibung verwendet sind, beliebige Busarchitekturen
nach Bedarf stattdessen verwendet werden können. Ferner ist zu beachten,
dass das Computersystem 900 ein mehrfach verarbeitendes Computersystem
mit zusätzlichen
Mikroprozessoren sein kann (beispielsweise ist ein Mikroprozessor 100a als
eine optionale Komponente des Computersystems 900 gezeigt).
Der Mikroprozessor 100a kann ähnlich zu dem Prozessor 100 sein.
Insbesondere kann der Mikroprozessor 100a eine baugleiche Kopie
des Mikroprozessors 100 sein. Der Mikroprozessor 100a kann
mit der Busbrücke 902 über einen unabhängigen Bus
(wie dies in 5 gezeigt ist) verbunden sein
oder kann zusammen mit dem Mikroprozessor 100 den CPU-Bus 924 nutzen.
Des weiteren kann der Mikroprozessor 100a mit einem optionalen L2-Zwischenspeicher 928a ähnlich dem
L2-Zwischenspeicher 928 verbunden sein.
-
In 6 ist
eine weitere Ausführungsform
eines Computersystems 900 gezeigt, das einen Mikroprozessor,
wie er zuvor beschrieben ist, aufweist. Andere Ausführungsformen
sind möglich
und hierin berücksichtigt.
In der Ausführungsform
aus 6 umfasst das Computersystem 900 diverse
Verarbeitungsknoten 1012A, 1012B, 1012C und 1012D.
Jeder Verarbeitungsknoten ist mit einem entsprechenden Speicher 200A bis 200D über eine
Speichersteuerung 1016A bis 1016D, die in jeweils
dem entsprechenden Verarbeitungsknoten 1012A bis 1012D enthalten
sind, verbunden. Des weiteren enthalten die Verarbeitungsknoten 1012A bis 1012D eine
Schnittstellenlogik, die zur Kommunikation zwischen den Verarbeitungsknoten 1012A bis 1012D verwendet wird.
Beispielsweise enthält
der Verarbeitungsknoten 1012A eine Schnittstellenlogik 1018A zur
Kommunikation mit dem Verarbeitungsknoten 1012B, eine Schnittstellenlogik 1018B zur
Kommunikation mit dem Verarbeitungsknoten 1012C und eine
dritte Schnittstellenlogik 1018C zur Kommunikation mit
einem noch weiteren Verarbeitungsknoten (nicht gezeigt). In ähnlicher
Weise umfasst der Verarbeitungsknoten 1012B eine Schnittstellenlogik 1018D, 1018E und 1018F;
der Verarbeitungsknoten 1012C enthält eine Schnittstellenlogik 1018G, 1018H und 1018I; und
der Verarbeitungsknoten 1012D enthält die Schnittstellenlogik 1018J, 1018K und 1018L.
Der Verarbeitungsknoten 1012D ist so angeschlossen, dass
er mit mehreren Eingabe/Ausgabe-Geräten (beispielsweise Geräte 1020A bis 1020B in
einer Reihenkonfiguration) über
die Schnittstellenlogik 1018L in Verbindung steht. Andere
Verarbeitungsknoten können
mit anderen I/0-Geräten
in ähnlicher Weise
kommunizieren.
-
Die
Verarbeitungsknoten 1012A bis 1012D stellen eine
paketbasierte Verbindung für
eine Kommunikation zwischen den Verarbeitungsknoten bereit. In der
vorliegenden Ausführungsform
ist die Verbindung als Sätze
von unidirektionalen Leitungen (beispielsweise werden Leitungen 1024A verwendet, um
Pakete von dem Verarbeitungsknoten 1012A zu dem Verarbeitungsknoten 1012B zu
senden, und Leitungen 1020B werden verwendet um Pakete
von dem Verarbeitungsknoten 1012B zu dem Verarbeitungsknoten 1012A zu übertragen).
Andere Leitungssätze 1024C bis 1024H werden
verwendet, um Pakete zwischen anderen Verarbeitungsknoten auszutauschen,
wie dies in 6 gezeigt ist. Im Allgemeinen
kann jeder Leitungssatz 1024 eine oder mehrere Datenleitungen,
eine oder mehrere Taktleitungen, die den Datenleitungen zugeordnet
sind, und eine oder mehrere Steuerleitungen, die die Art der übertragenen
Datenpakete kennzeichnen, aufweisen. Die Verbindung kann in einer
mit dem Zwischenspeicher kohärenten
Weise für
die Kommunikation zwischen den Verarbeitungsknoten oder in einer nicht
kohärenten
Weise für
die Kommunikation zwischen einem Verarbeitungsknoten und einem I/O-Gerät (oder
einer Busbrücke
mit einem I/O-Bus konventioneller Bauart, etwa dem PCI-Bus oder
dem ISA-Bus) betrieben werden. Des weiteren kann die Verbindung
in einer nicht kohärenten
Weise betrieben werden, wobei eine verkettete Datenstruktur zwischen
I/O-Geräten
angewendet wird, wie dies gezeigt ist. Zu beachten ist, dass ein
von einem Verarbeitungsknoten zu einem weiteren zu übertragendes Paket
durch einen oder mehrere Zwischenknoten laufen kann. Beispielsweise
kann ein von dem Verarbeitungsknoten 1012A zu dem Verarbeitungsknoten 1012D zu übertragendes
Paket durch den Verarbeitungsknoten 1012B oder den Verarbeitungsknoten 1012C laufen,
wie dies in 6 gezeigt ist. Es kann ein beliebiger
Routenführungsalgorithmus
verwendet werden. In anderen Ausführungsformen des Computersystems 900 können mehr
oder weniger Verarbeitungsknoten als in der in 6 gezeigten
Ausführungsform
verwendet werden.
-
Im
Allgemeinen werden die Pakete als ein oder mehrere Bitzeiten auf
den Leitungen 1024 zwischen den Knoten übertragen. Eine Bitzeit kann
die ansteigende oder abfallende Flanke des Taktsignals auf den entsprechenden
Taktleitungen sein. Die Pakete können
Befehlspakete zum Initiieren von Transaktionen, Sondierungspakete
zum Beibehalten der Zwischenspeicherkohärenz und Antwortpakete von Antworten
auf Sondierungen und Befehle sein.
-
Die
Verarbeitungsknoten 1012A bis 1012D können zusätzlich zu
einer Speichersteuerung und einer Schnittstellenlogik einen oder
mehrere Mikroprozessoren enthalten. Allgemein gesagt, ein Verarbeitungsknoten
umfasst mindestens einen Mikroprozessor und kann optional eine Speichersteuerung
zur Kommunikation mit einem Speicher und einer anderen Logik nach
Bedarf enthalten. Jeder Mikroprozessor kann einen STLF-Puffer 305 und/oder
eine STLF-Prüfeinheit 303 in
einigen Ausführungsformen aufweisen.
Insbesondere kann jeder Verarbeitungsknoten 1012A bis 1012D eine
oder mehrere Duplikate des Mikroprozessors 100 aufweisen.
Die externe Schnittstelleneinheit 1012D kann die Schnittstellenlogik 1018L in
dem Verarbeitungsknoten sowie die Speichersteuerung 1016D enthalten.
-
Die
Speicher 200A bis 200D können beliebige geeignete Speichereinrichtungen
aufweisen. Beispielsweise kann ein Speicher 200A bis 200D einen oder
mehrere Rambus DRAMS (RDRAMS), synchrone DRAMS (SDRAMS), statische
RAM, etc. aufweisen. Der Adressenraum des Computersystems 900 ist
unter den Speichern 200A bis 200D aufgeteilt.
Jeder Verarbeitungsknoten 1012A bis 1012D kann
eine Speicherkarte aufweisen, die verwendet wird, um zu bestimmen,
welche Adressen zu welchem Speicher 200A bis 200D zugeordnet
werden, und somit zu welchem Verarbeitungsknoten 1012A bis 1012D eine Speicheranforderung
für eine
spezielle Adresse zugleitet werden sollte. In einer Ausführungsform
ist der Kohärenzpunkt
für eine
Adresse innerhalb des Computersystems 900 die Speichersteuerung 1016A bis 1016D,
die mit dem Speicher verbunden ist, die der Adresse entsprechende
Bytes speichert. Anders ausgedrückt,
die Speichersteuerung 1016A bis 1016D ist dafür zuständig, sicherzustellen,
dass jeder Speicherzugriff auf den entsprechenden Speicher 200A bis 200D in
einer mit dem Zwischenspeicher kohärenten Weise stattfindet. Die
Speichersteuerungen 1016A bis 1016D können eine
Steuerschaltung zur Verbindung mit den Speichern 200A bis 200D aufweisen.
Ferner können
die Speichersteuerungen 1016A bis 1016D Anforderungswartereihen zur
Aufreihung von Speicheranforderungen enthalten.
-
Die
Schnittstellenlogik 1018A bis 1018L kann eine
Vielzahl von Puffern zum Empfangen von Paketen aus der Verbindungsleitung
und zum Zwischenspeichern von Paketen, die auf der Leitung zu übertragen
sind, aufweisen. Das Computersystem 900 kann einen beliebigen
geeigneten Ablaufsteuerungsmechanismus zum Übertragen von Paketen anwenden.
Beispielsweise speichert in einer Ausführungsform jede Schnittstellenlogik 1018 die
Anzahl jeder Pufferart innerhalb des Empfängers am anderen Ende der Leitung,
mit der diese 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 Pakets freigegeben ist, übermittelt
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 1020A bis 1020B können beliebige
geeignete I/O-Geräte
sein. Beispielsweise können
die I/O-Geräte 1020A bis 1020B Geräte zur Kommunikation
mit einem weiteren Computersystem, mit dem die Geräte verbunden
sein können
(beispielsweise Netzwerkschnittstellenkarten oder Modems) enthalten.
Beispielsweise können
die I/O-Geräte 1020A bis 1020B Videobeschleuniger,
Audiokarten, Festplatten oder Laufwerke oder Laufwerkssteuerungen,
SCSI-(Kleincomputersystemschnittstellen) Adapter und Telefonkarten,
Klangkarten und eine Vielzahl von Datennahmekarten, etwa GPIB oder Feldbusschnittstellenkarten
enthalten. Zu beachten ist, dass der Begriff „I/O-Gerät" und der Begriff „Periphergerät" hierin als Synonym
zu betrachten sind.
-
Im
hierin verwendeten Sinne bezeichnet der Begriff „Taktsignal" ein Zeitintervall,
in der diverse Phasen der Instruktionsverarbeitung-Pipelines ihre Aufgaben
abschließen.
Instruktionen und berechnete Werte werden von Speicherelementen
(etwa Register oder Arrays) entsprechend einem Taktsignal, das den
Taktzyklus definiert, übernommen.
Beispielsweise übernimmt
ein Speicherelement einen Wert gemäß der ansteigenden oder abfallenden
Flanke des Taktsignals.
-
Die
obige Erläuterung
beschreibt Signale als „gesetzt". Ein Signal kann
als gesetzt definiert werden, wenn es einen Wert überträgt, der
eine spezielle Information kennzeichnet. Ein spezielles Signal kann als
gesetzt definiert werden, wenn es einen binären Wert 1 oder alternativ
wenn es einen binären
Wert 0 überträgt.
-
Es
werden diverse Variationen und Modifizierungen für den Fachmann im Lichte dieser
Offenbarung offenkundig. Es ist beabsichtigt, dass die anschließenden Patentansprüche so interpretiert
werden, dass alle derartigen Variationen und Modifizierungen mit
eingeschlossen sind.
-
INDUSTRIELLE ANWENDBARKEIT
-
Diese
Erfindung ist im Allgemeinen auf dem Gebiet von Mikroprozessoren
anwendbar.