DE60204676T2 - Verfahren und Vorrichtung zum Unterstützen mehrerer Cache-Line-Invalidierungen pro Zyklus - Google Patents
Verfahren und Vorrichtung zum Unterstützen mehrerer Cache-Line-Invalidierungen pro Zyklus Download PDFInfo
- Publication number
- DE60204676T2 DE60204676T2 DE60204676T DE60204676T DE60204676T2 DE 60204676 T2 DE60204676 T2 DE 60204676T2 DE 60204676 T DE60204676 T DE 60204676T DE 60204676 T DE60204676 T DE 60204676T DE 60204676 T2 DE60204676 T2 DE 60204676T2
- Authority
- DE
- Germany
- Prior art keywords
- cache
- memory
- higher level
- line
- caches
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0808—Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Description
- HINTERGRUND
- Gebiet der Erfindung
- Die vorliegende Erfindung bezieht sich auf die Auslegung von Computersystemen mit mehreren Prozessoren. Genauer gesagt bezieht die vorliegende Erfindung sich auf ein Verfahren und eine Vorrichtung zum Ausführen von gleichzeitigen Ungültigerklärungen mehrerer Cachezeilen.
- Verwandter Stand der Technik
- Um hohe Computerleistungen bzw. hohe Geschwindigkeiten in der Computerleistung zu erreichen, sind die Entwickler von Computersystemen dazu übergegangen, mehrere Prozessoren zu verwenden, die parallel arbeiten, um eine einzelne Berechnungs- bzw. Computeraufgabe auszuführen. Ein übliches Mehrprozessormodell enthält eine Anzahl von Prozessoren
151 -154 mit einer Anzahl von Level eins (L1)-Caches161 -164 , die einen einzelnen Level zwei (L2)-Cache180 und einen Speicher183 gemeinsam verwenden (s.1 ). Während des Betriebes versucht das System, wenn ein Prozessor151 auf ein Datenobjekt zugreift, welches in seinem lokalen L1-Cache161 nicht vorhanden ist, das Datenobjekt aus dem L2-Cache180 abzurufen. Wenn das Datenobjekt in dem L2-Cache180 nicht vorhanden ist, holt das System zunächst das Datenobjekt aus dem Speicher183 in den L-2-Cache180 und dann von dem L2-Cache180 in den L1-Cache161 . - Man beachte, daß Kohärenzprobleme auftreten können, wenn eine Kopie desselben Datenobjektes in mehr als einem L1-Cache existiert. In diesem Fall können Modifizierungen an einer ersten Version des Datenobjektes in dem L1-Cache
161 wirken, so daß die erste Version eine andere ist als eine zweite Version des Datenobjektes in dem L1-Cache162 . - Um Kohärenzprobleme zu vermeiden, stellen Computersysteme oftmals ein Kohärenzprotokoll bereit, welches über einen Bus
170 arbeitet. Ein Kohärenzprotokoll stellt typischerweise sicher, daß, falls eine Kopie eines Datenobjektes in dem L-Cache161 modifiziert wird, andere Kopien desselben Datenobjektes in L2-Caches162 -164 , in dem L2-Cache180 und in dem Speicher183 aktualisiert oder ungültig gemacht bzw. für ungültig erklärt werden, um die Modifikation zu berücksichtigen bzw. wiederzugeben. - Kohärenzprotokolle führen typischerweise Ungültigerklärungen aus, indem sie Nachrichten zur Ungültigerklärung über den Bus
170 aussenden. Wenn derartige Ungültigerklärungen häufig auftreten, können diese Ungültigerklärungsnachrichten möglicherweise den Bus170 auf aufhängen bzw. überlasten und können dadurch die Gesamtleistungsfähigkeit des Systems beeinträchtigen. - Um dieses Problem zu bewältigen, sind einige Entwickler dazu übergegangen, die Möglichkeit zu versuchen, die Verzeichnisinformation innerhalb des L2-Caches
120 aufzubewahren. Diese Verzeichnisinformation gibt an, welche L1-Caches Kopien spezieller Datenobjekte enthalten. Dies ermöglicht es dem System, Information zur Ungültigerklärung nur an diejenigen L1-Caches zu senden, welche das Datenobjekt enthalten, anstatt eine Rundsendenachricht an alle L1-Caches auszusenden. (Diese Art von System geht von der Annahme aus, daß getrennte Kommunikationswege für Nachrichten zur Ungültigerklärung zu jedem der L1-Caches161 -164 existieren. Diese Kommunikationswege sind in dem in1A dargestellten System nicht vorhanden.) - Man beachte, daß, falls mehrere Kommunikationswege zwischen den L1-Caches
161 -164 und dem L2-Cache180 vorgesehen sind, es möglich wird, daß mehrere Prozessoren Zugriffe ausführen, welche Ungültigerklärungen gleichzeitig bewirken. Demnach können die L1-Caches161 -164 gleichzeitig mehrere Anforderungen zur Ungültigerklärung empfangen. - Was benötigt wird, ist ein Verfahren und eine Vorrichtung, welche die Ausführung mehrerer Ungültigerklärungen in einem L1-Cache gleichzeitig ermöglicht.
- Man beachte darüber hinaus, daß L1-Caches
161 -164 typischerweise bereichsassoziativ sind. Demnach muß, wenn eine Ungültigerklärungsnachricht von dem L1-Cache161 empfangen wird, ein Nachschlagen und ein Vergleich in dem L1-Cache161 ausgeführt werden, um die Wege-Position des Datenobjektes zu bestimmen. Beispielsweise kann in einem bereichsassoziativen L1-Cache mit vier Wegen ein Datenobjekt, welches zu einem speziellen Bereich gehört, auch auf einem von vier möglichen „Wegen° gespeichert werden. Konsequenterweise müssen von jedem der vier möglichen Wege Tags aufgerufen und verglichen werden, um die Wege-Position des Datenobjektes zu bestimmen. Dieses Nachschlagen ist zeitaufwendig und kann die Leistungsfähigkeit des Systems herabsetzen. - Demnach werden ein Verfahren und eine Vorrichtung zum Ungültigerklären eines Eintrages in einem L1-Cache benötigt, ohne ein Nachschlagen auszuführen, um die Wege-Position des Eintrages zu bestimmen.
- Das Dokument US-A-5,553,263 (Kalish David M et al.) vom 3. September 1996 (1996-09-03) offenbart mehrere Prozessoren, welche einen gemeinsamen Cache, der eine gleichzeitige Ungültigerklärung von Datenblöcken unterstützt, gemeinsam verwenden (Spalte 4, 4. Absatz). Mehrere parallele Ungültigerklärungen werden unter Verwendung einer Ungültigerklärungsschlange behandelt.
- Das Dokument US-A-5,375,220 (Ishikawa Tadashi) vom 20. Dezember 1994 (1994-12-20) offenbart in
1 und der Spalte 10, erster bis dritter Absatz, einen Cache, in welchem eine Mehrzahl von Leitungen für ungültig erklärt wird, indem gleichzeitig auf die Gültigkeitsbitab schnitte eines tag zugegriffen wird, und in welchem parallele Ungültigerklärungen gepuffert werden können. - Das Dokument US-86,178,4841 (Arimilli Ravi Kumar et al.) vom 23. Januar 2001 (2001-01-23) offenbart ein Mehrprozessorsystem mit einer hierarchischen Speicherarchitektur, welches mehrere Caches enthält, in denen eine Ungültigerklärung verwendet wird, um eine Cache-Kohärenz aufrecht zu erhalten.
- Das Dokument US-A-5,890,217 (Shimizu Toshiyuki et al.) vom 30. März 1999 (1999-03-30) offenbart ein Mehrprozessorsystem mit einem verteilten und hierarchischen Cache, in welchem eine Mehrzahl von Cachezeilen, jede in einem anderen Cache, gleichzeitig ungültig erklärt wird (siehe Spalte 5, Zeile 30 – Spalte 6, Zeile 56).
- Die Erfindung wird in den Ansprüchen 1 und 19 definiert. Die übrigen Ansprüche definieren besondere Varianten innerhalb des Schutzumfanges der unabhängigen Ansprüche.
- KURZE BESCHREIBUNG DER FIGUREN
-
1A veranschaulicht ein Mehrprozessorsystem. -
1B veranschaulicht ein Mehrprozessorsystem mit einem L2-Cache mit einem Umkehrverzeichnis gemäß einer Ausführungsform der vorliegenden Erfindung. -
2 veranschaulicht einen L2-Cache mit mehreren Speicherbänken in einem Mehrprozessorsystem gemäß einer Ausführungsform der vorliegenden Erfindung. -
3 veranschaulicht ein Umkehrverzeichnis gemäß einer Ausführungsform der vorliegenden Erfindung. -
4 veranschaulicht ein Adressier- und zugehöriges Ungültigerklärungs-Signal gemäß einer Ausführungsform der vorliegenden Erfindung. -
5 veranschaulicht die Struktur eines Speichers, welcher mehrere Anschlüsse für Ungültigerklärungen gemäß einer Ausführungsform der vorliegenden Erfindung enthält. -
6 veranschaulicht die Struktur einer einzelnen Speicherzelle innerhalb des in5 dargestellten Speichers gemäß einer Ausführungsform der vorliegenden Erfindung. -
7 ist ein Flußdiagramm, welches den Prozeß des gleichzeitigen Ungültigerklärens mehrerer Cachezeilen gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. - GENAUE BESCHREIBUNG
- Die vorliegende Beschreibung wird gegeben, um beliebige Fachleute auf diesem Gebiet in die Lage zu versetzen, die Erfindung nachzuarbeiten und zu verwenden, und sie wird im Kontext einer bestimmten Anwendung und deren Erfordernissen bereitgestellt. Verschiedene Modifikationen der offenbarten Ausführungsformen liegen für Fachleute deutlich auf der Hand, und die allgemeinen Prinzipien, die hier definiert sind, können auf andere Ausführungsformen und Anwendungen angewendet werden, ohne von dem Geist und Schutzumfang der vorliegenden Erfindung abzuweichen. Die vorliegende Erfindung soll daher nicht auf die dargestellten Ausführungsformen beschränkt werden, sondern ihr soll vielmehr der weitestmögliche Schutzumfang zuerkannt werden, der mit den Prinzipien und Merkmalen konsistent ist, wie sie hierin offenbart werden.
- Mehrprozessorsystem
-
1B veranschaulicht ein Mehrprozessorsystem100 mit einem Umkehrverzeichnis gemäß einer Ausführungsform der vorliegenden Erfindung. Man beachte, daß der größte Teil des Mehrprozessorsystems100 innerhalb eines einzelnen Halbleiterchips101 liegt. Genauer gesagt enthält der Halbleiterchip101 eine Anzahl von Prozessoren110 ,120 ,130 und140 , welche Level 1 (L1)-Caches112 ,122 ,132 bzw.142 enthalten. Man beachte, daß die L1-Caches112 ,122 ,132 und142 getrennte Befehls- und Datencaches sein können oder alternativ einheitliche Befehls-Datencaches sein können. Die L1-Caches112 ,122 ,132 und142 sind mit dem Level zwei (L2)-Cache106 verbunden, der ein Umkehrverzeichnis302 enthält (welches unten unter Bezug auf die3 -6 noch genauer beschrieben wird). Der L2-Cache106 ist mit dem Speicher102 außerhalb des Chips für den Speicherkontroller104 verbunden. - In einer Ausführungsform der vorliegenden Erfindung sind die L1-Caches
112 ,122 ,132 und142 Durchschreibecaches, was bedeutet, daß alle Aktualisierungen an den L1-Caches112 ,122 ,132 und142 automatisch an den L2-Cache106 weitergeleitet werden. Dies vereinfacht das Kohärenzprotokoll, da, falls der Prozessor110 ein Datenobjekt benötigt, welches in dem L1-Cache112 vorhanden ist, der Prozessor110 die Daten von dem L2-Cache106 empfangen kann, ohne auf den L1-Cache112 warten zu müssen, um zu der Quelle der Daten zu gelangen. Darüber hinaus benötigt man kein Weiterleitungsnetzwerk, um es dem L1-Cache112 zu erlauben, die Quelle der Daten auszumachen. Man beachte, daß in einer Ausführungsform der vorliegenden Erfindung der L2-Cache106 ein „umfassender Cache" ist, was bedeutet, daß alle Gegenstände in den L1-Caches112 ,122 ,132 und142 in dem L2-Cache106 enthalten sind. - L2-Cache mit mehreren Speicherbänken
-
2 veranschaulicht einen L2-Cache106 mit mehreren Speicherbänken gemäß einer Ausführungsform der vorliegenden Erfindung. In dieser Ausführungsform ist der L2-Cache106 mit vier Speicherbänken202 -205 implementiert, auf welche durch Prozessoren110 ,120 ,130 und140 über Schalter215 und218 parallel zugegriffen werden kann. Der Umschalter215 behandelt Kommunikationen, die von den Prozessoren110 ,120 ,130 und140 in L2-Bänke202 -205 eingegeben werden, während der Umschalter216 Kommunikationen in umgekehrter Richtung von den L2-Bänken202 -205 zu den Prozessoren110 ,120 ,130 und140 handhabt. - Man beachte, daß nur zwei Bits der Adresse erforderlich sind, um festzustellen, an welche der vier Speicherbänke
202 -205 eine Speicheranfrage gerichtet ist. Man beachte außerdem, daß der Schalter215 zusätzlich einen I/O-Anschluß150 für die Aufnahme von Kommunikationen von I/O-Einrichtungen enthält und daß der Umschalter216 einen I/O-Anschluß152 für das Senden von Kommunikationen zu dem I/O-Gerät enthält. Weiterhin weist in einer Ausführungsform der vorliegenden Erfindung jede dieser Speicherbänke202 -205 ein Umkehrverzeichnis auf, welches unten unter Bezug auf5 genauer beschrieben wird. - Man beachte, daß es durch Verwendung dieser „Bank"-Architektur möglich ist, jeden L1-Cache gleichzeitig zu seiner eigenen Speicherbank des L2-Caches zu verbinden, wodurch die Bandbreite des L2-Caches
106 vergrößert wird. - Gleichzeitige Zugriffe auf den L2-Cache
106 können jedoch möglicherweise Mehrfach-Ungültigerklärungen von Leitungen innerhalb der L1-Caches112 ,122 ,132 und142 bewirken. Um diese Ungültigerklärungen zu unterstützen, hat jeder L1-Cache einen getrennten Weg, um ein Ungültigerklärungs-Signal von jeder der Speicherbänke202-205 des L2-Caches106 zu empfangen. - Wie in
1 dargestellt, empfängt der L1-Cache112 : ein Ungültigerklärungs-Signal221 von der L2-Bank202 , ein Ungültigerklärungs-Signal222 von der L2-Bank203 , ein Ungültigerklärungs-Signal223 von der L2-Bank204 und ein Ungültigerklärungs-Signal224 von der L2-Bank205 . Jeder der anderen L1-Caches122 ,132 und142 empfängt ähnliche Ungültigerklärungs-Signale von den L2-Bänken202 -205 . Diese zusätzlichen Ungültigerklärungs-Signale sind jedoch in1 aus Gründen der Klarheit nicht dargestellt. - Umkehrverzeichnis
-
3 veranschaulicht eine L2-Bank202 zusammen mit einem zugehörigen Umkehrverzeichnis302 gemäß einer Ausführungsform der vorliegenden Erfindung. Die L2-Bank202 enthält einen bereichsassoziativen Speicher304 mit acht Wegen, um Befehle und Daten zu speichern. Ein Bereich der Adresse wird verwendet, um einen Bereich (bzw. Satz oder Reihe) innerhalb eines Caches304 zu bestimmen. In einem gegebenen Bereich können acht verschiedene Einträge in je einer von acht verschiedenen Wege-Positionen gespeichert werden, welche durch die acht Spalten in dem Cache304 repräsentiert werden. - Das Umkehrverzeichnis
302 enthält einen getrennten Block für jeden L1-Cache. Genauer gesagt ist der Block312 dem L1-Cache112 zugeordnet, der Block322 ist dem L1-Cache322 zugeordnet, der Block332 ist dem L1-Cache132 zugeordnet und der Block342 ist dem L1-Cache142 zugeordnet. - Man beachte, daß jeder dieser Blöcke
312 ,322 ,332 und342 einen Eintrag für jede Zeile in den zugehörigen L1-Caches112 ,122 ,132 und142 enthält. Darüber hinaus ist, da der L1-Cache112 als ein Vierwege-bereichsassoziativer Cache organisiert ist, der zugehörige Block312 in dem Umkehrverzeichnis302 in derselben Art und Weise organisiert. Einträge innerhalb des L1-Caches112 jedoch enthalten Daten und Befehle, wohingegen Einträge in dem zugeordneten Block312 Indizierungsinformation enthält, welche eine Position der Zeile innerhalb des Caches304 angibt. - Ungültigerklärungssignal
-
4 zeigt eine Adresse400 und ein zugehöriges Ungültigerklärungssignal430 gemäß einer Ausführungsform der vorliegenden Erfindung. - Der obere Bereich von
4 veranschaulicht die Adresse400 , welche die Position eines Datenobjektes (oder Befehls) in dem Speicher angibt bzw. spezifiziert. Der L1-Cache112 teilt diese Adresse in das L1-Tag412 , die L1-Bereichsnummer414 und den L1-Zeilenversatz (Offset)418 . Die L1-Bereichszahl414 wird verwendet, um einen spezifischen Bereich des bereichsassoziativen L1-Caches114 mit vier Wegen nachzuschlagen. Das L1-Tag412 wird in dem L1-Cache112 gespeichert und wird verwendet, um Vergleiche durchzuführen zum Zwecke der Implementierung des bereichsassoziativen Speichers mit vier Wegen für jeden Bereich. Der L1-Zeilenversatz418 bestimmt eine Position eines bestimmten Datenobjektes innerhalb der Zeile in dem L1-Cache112 . - Der L2-Cache
106 teilt die Adresse400 in das L2-Tag402 , die L2-Bereichszahl404 , die L2-Banknummer406 und den L2-Zeilenversatz408 . Die L2-Banknummer406 bestimmt eine bestimmte Bank von den vier Bänken202 -205 des L2-Caches106 . Die L2-Bereichszahl404 wird verwendet, um einen speziellen Bereich der bereichsassoziativen Bank mit acht Wegen des L2-Caches106 nachzuschlagen. Das L2-Tag402 wird in einer speziellen Bank des L2-Caches106 gespeichert und wird verwendet, um Vergleiche auszuführen zum Zwecke der Implementierung des Acht-Wege-bereichsassoziativen Speichers für jeden Bereich bzw. Satz. Der L2-Zeilenversatz408 bestimmt eine Position eines speziellen Datenobjektes innerhalb der Zeile in dem L2-Cache106 . - Das entsprechende Ungültigerklärungssignal
430 für die Adresse400 enthält eine reduzierte L1-Bereichszahl424 und eine L1-Wegezahl429 . Die reduzierte L1-Bereichsnummer424 enthält die L1-Bereichsnummer414 ohne die Bits für die L2-Banknummer406 . Die Bits für die L2-Banknummer können entfernt werden, da, wie man in5 erkennen kann, jedes Ungültigerklärungssignal mit einer entsprechenden Bank des L2-Cache106 hartverdrahtet ist, so daß die L2-Banknummer406 nicht benötigt wird. Die L1-Wegenummer429 enthält einen Zwei-Bit-Index, der eine Wege-(Spalten-)Position der Zeile aus den vier möglichen Wege-Positionen für die Zeile in dem L1-Cache112 angibt. - Speicher, der mehrere gleichzeitige Ungültigerklärungen unterstützt
-
5 zeigt die Struktur eines Speichers, der Gültigkeitsbits für Zeilen innerhalb des L1-Caches112 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Dieser Speicher enthält mehrere Bänke501 -504 und mehrere Anschlüsse für das Empfangen von Ungültigerklärungssignalen221 -225 , wobei jedes Ungültigerklärungssignal mit seiner eigenen Speicherbank verbunden ist. Genauer gesagt ist das Ungültigerklärungssignal221 mit der Bank501 verbunden, das Ungültigerklärungssignal222 ist mit der Bank502 verbunden, das Ungültigerklärungssignal223 ist mit der Bank503 verbunden, und das Ungültigerklärungssignal224 ist mit der Bank504 verbunden. - Man beachte auch, daß jede dieser Bänke in vier „Wege" aufgeteilt ist, um die assoziative Vier-Wege-Struktur des L1-Cache
112 wiederzugeben. Demnach ist die Wegezahl429 für jedes der Ungültigerklärungssignale221 -224 von der Bereichszahl424 getrennt, und die Bereichszahl424 durchläuft einen Decoder, um eine Wortleitung auszuwählen. Man beachte, daß jeder Bankeintrag für jeden Weg ein getrenntes Gültigkeitsbit hat. Man beachte auch, daß die L1-Wegezahl429 das spezielle Gültigkeitsbit freigibt, welches mit einer Operation verbunden ist. - Beispielsweise ist das Ungültigerklärungssignal
211 in die Bereichszahl511 und die Wegezahl521 aufgeteilt. Die Wegezahl521 wird verwendet, um eine Spalte der Bank501 auszuwählen, während die Bereichszahl511 den Decoder531 durchläuft, um eine Wortleitung für die Bank501 zu aktivieren. - Man beachte, daß der Speicher auch zumindest einen Zusatzanschluß auf der rechten Seite aufweist, um Lese- oder Schreibvorgänge zur gleichen Zeit durchzuführen, zu der von der linken Seite her Ungültigerklärungen stattfinden. Dieser Anschluß nimmt eine Adresse
541 auf, die einen Decoder541 durchläuft, der eine einzelne Wortleitung über alle Bänke501 -504 des Speichers hinweg auswählt. - Speicherzellenstruktur
-
6 zeigt die Struktur einer einzelnen Speicherzelle in dem Speicher, der in5 dargestellt ist, und zwar gemäß einer Ausführungsform der vorliegenden Erfindung. Diese Speicherzelle nimmt eine Wortleitung551 von dem Ungültigerklärungsanschluß und eine Wortleitung552 von dem Lese-/Schreib-Anschluß auf. Man beachte, daß diese Speicherzelle möglicherweise auch mit anderen Anschlüssen und zugehörigen Wortleitungen verbunden sein könnte. - Eine Aktivierung der Wortleitung
551 bewirkt, daß die Speicherzelle auf der linken Seite mit Masse verbunden wird und auf der rechten Seite mit VDD verbunden wird. Man beachte, daß für einen Ungültigerklärungsvorgang keine Bitleitungen erforderlich sind, da ein Ungültigerklärungsvorgang immer das Speicherelement auf den Wert einer logischen Null setzt. Außerdem beachte man, daß das Freigabesignal630 , welches aus der L1-Wegezahl429 bestimmt wird, den Betrieb der Wortleitung551 freigibt bzw. freischaltet. - Im Gegensatz dazu bewirkt das Aktivieren der Wortleitung
552 , daß das Speicherelement mit Differenzbitleitungen D+601 und D+602 verbunden wird, die verwendet werden, um von dem Speicherelement zu lesen oder in dieses zu schreiben. - Vorgang der Ausführung gleichzeitiger Ungültigerklärungen
-
7 ist ein Flußdiagramm, welches den Vorgang des gleichzeitigen Ungültigerklärens mehrerer Cachezeilen gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. Der Prozeß beginnt, wenn an dem L1-Cache112 mehrere Ungültigerklärungssignale221 -224 empfangen werden (Schritt702 ). In Reaktion auf diese mehrfachen Ungültigerklärungssignale221 -224 führt das System gleichzeitige Ungültigerklärungen auf den mehreren Bänken501 -504 des L1-Cache112 aus, der in5 dargestellt ist (Schritt704 ). Man beachte, daß Lese-/Schreib-Zugriffe durch den getrennten Lese-/Schreib-Anschluß zur gleichen Zeit auf dem Speicher stattfinden können, zu welchem diese gleichzeitigen Ungültigerklärungen stattfinden (Schritt706 ). - Die vorstehenden Beschreibungen von Ausführungsformen der vorliegenden Erfindung sind nur für Zwecke der beispielhaften Veranschaulichung und Beschreibung dargeboten worden. Sie sollen weder erschöpfend sein noch die vorliegenden Erfindung auf die offenbarten Formen beschränken. Der Schutzumfang der vorliegenden Erfindung wird durch die anhängenden Ansprüche definiert.
Claims (24)
- Cachespeicher (
112 ...142 ), welcher aufweist: eine Mehrzahl von Cachezeilen für das Speichern von Code und/oder Daten, wobei jede Cachezeile ein Gültigkeitsbit aufweist, welches verwendet werden kann, um die Cachezeile ungültig zu machen, dadurch gekennzeichnet, daß er weiterhin aufweist: einen Speicher für das Speichern der Gültigkeitsbits für die Mehrzahl von Cachezeilen, welcher in einer Mehrzahl von Speicherbänken (501 ...504 ) organisiert ist, und wobei jede Speicherbank ihr eigenes Ungültigerklärungssignal (430 ) empfängt (704 ), so daß mehrere Ungültigerklärungsvorgänge parallel stattfinden können, wobei der Cachespeicher mehrere Cachezeilen-Ungültigerklärungen in demselben Zyklus unterstützt. - Cachespeicher nach Anspruch 1, wobei jede Speicherbank einen ersten Anschluß und einen zweiten Anschluß aufweist, wobei der erste Anschluß verwendet werden kann, um an einer ersten Position in der Speicherbank zu lesen oder zu schreiben, während der zweite Anschluß verwendet wird, um eine zweite Position in der Bank ungültig zu machen.
- Cachespeicher nach Anspruch 2, wobei eine Wortleitung des zweiten Anschlusses bewirkt, daß ein Speicherelement ohne Verbindung des Speicherelementes mit einer Bitleitung zurückgesetzt wird.
- Cachespeicher nach Anspruch 1, wobei der Cache ein L1-Cache ist, der ein Ungültigerklärungssignal von einem L2-Cache empfängt.
- Cachespeicher nach Anspruch 4, wobei der L2-Cache eine Mehrzahl von L2-Bänken umfaßt, auf welche für die Unterstützung mehrerer gleichzeitiger Vorgänge parallel zugegriffen werden kann, und wobei jede Speicherbank, welche Gültigkeitsbits enthält, mit einer zugeordneten L2-Speicherbank hartverdrahtet ist, so daß der L2-Cache mehrere gleichzeitige Ungültigerklärungssignale von dem L2-Cache empfangen kann.
- Cache nach Anspruch 1, wobei jede Speicherbank, welche Gültigkeitsbits enthält, ihren eigenen Decoder enthält, der eine Wortleitung für den zweiten Anschluß der Bank auswählt, und wobei die Mehrzahl von Bänken einen einzelnen Decoder gemeinsam verwenden, welcher über die ersten Anschlüsse der Mehrzahl von Speicherbänken hinweg eine einzelne Wortleitung auswählt.
- Cachespeicher nach Anspruch 1, wobei ein gegebenes Ungültigkeitssignal, welches von dem Cache empfangen wird, umfaßt: eine Bereichs-Position einer Cachezeile, die in dem Cache ungültig erklärt werden soll, und eine Wege-Position der Cachezeile, die in dem Cache ungültig erklärt werden soll.
- Mehrprozessorsystem, welches mehrfache Cachezeilen-Ungültigerklärungen innerhalb desselben Zyklus unterstützt, mit: einer Mehrzahl von Prozessoren, einem Cache auf niedrigem Niveau (lower level cache), der dafür ausgelegt ist, mehrere gleichzeitige Vorgänge zu unterstützen, eine Mehrzahl von Caches auf höherem Niveau (higher level caches) nach Anspruch 1, welche mit der Mehrzahl von Prozessoren verbunden sind, wobei die Mehrzahl von Caches auf höherem Niveau dafür ausgelegt sind, Speicherzugriffe durch den Cache auf niedrigerem Niveau durchzuführen.
- Mehrprozessorsystem nach Anspruch 8, wobei der Cache auf niedrigerem Niveau eine Mehrzahl von Speicherbänken umfaßt, auf welche zur Unterstützung mehrerer gleichzeitiger Vorgänge parallel zugegriffen werden kann.
- Mehrprozessorsystem nach Anspruch 9, welches weiterhin einen Umschalter aufweist, der dafür ausgelegt ist, die Mehrzahl von Speicherbänken des Caches auf niedrigerem Niveau mit der Mehrzahl von Caches auf höherem Niveau zu verbinden.
- Multiprozessorsystem nach Anspruch 9, wobei jede Zeile in einem gegebenen Cache auf höherem Niveau ein Gültigkeitsbit enthält, welches verwendet werden kann, um die Zeile ungültig zu machen, wobei die Gültigkeitsbits für den Cache auf höherem Niveau in einem Speicher enthalten sind, der in einer Mehrzahl von Speicherbänken organisiert ist, welche der Mehrzahl von Speicherbänken des Caches auf niedrigerem Niveau zugeordnet sind, und wobei jede Speicherbank, welche Gültigkeitsbits enthält, mit einer zugehörigen Bank des Caches auf niedrigerem Niveau hartverdrahtet ist, so daß der gegebene Cache auf höherem Niveau mehrere gleichzeitige Ungültigerklärungssignale von dem Cache auf niedrigerem Niveau empfangen kann.
- Mehrprozessorsystem nach Anspruch 11, wobei jede Bank, welche Gültigkeitsbits enthält, einen ersten Anschluß und einen zweiten Anschluß aufweist, wobei der erste Anschluß verwendet werden kann, um eine erste Position in der Bank zu lesen oder zu schreiben, während der zweite Anschluß verwendet wird, um eine zweite Position in der Bank ungültig zu machen.
- Mehrprozessorsystem nach Anspruch 12, wobei eine Wortleitung des zweiten Anschlusses bewirkt, daß ein Speicherelement ohne Verbinden des Speicherelementes mit einer entsprechenden Bitleitung zurückgesetzt wird.
- Mehrprozessorsystem nach Anspruch 12, wobei jede Speicherbank, die Gültigkeitsbits enthält, ihren eigenen Decoder umfaßt, der eine Wortleitung für den zweiten Anschluß der Bank auswählt, und wobei die Mehrzahl von Speicherbänken einen einzelnen Decoder gemeinsam verwenden, welcher eine einzelne Wortleitung über die ersten Anschlüsse der Mehrzahl von Bänken hinweg auswählt.
- Mehrprozessorsystem nach Anspruch 8, wobei ein gegebenes Ungültigerklärungssignal, welches von einem gegebenen Cache auf höherem Niveau empfangen wird, aufweist: eine Bereichs-Position einer Zeile, die in dem gegebenen Cache auf höherem Niveau ungültig erklärt werden soll, und eine Wege-Position der ungültig zu machenden Zeile in dem gegebenen Cache auf höherem Niveau.
- Mehrprozessorsystem nach Anspruch 8, wobei das Mehrprozessorsystem auf einem einzelnen Halbleiterchip angeordnet ist.
- Mehrprozessorsystem nach Anspruch 8, wobei der Cache auf niedrigerem Niveau ein L2-Cache ist, und wobei jeder aus der Mehrzahl von Caches auf höherem Niveau ein L1-Cache ist.
- Mehrprozessorsystem nach Anspruch 8, wobei die Mehrzahl von Caches auf höherem Niveau als Durchschreibcaches organisiert sind, so daß Aktualisierungen, die an der Mehrzahl von Caches auf höherem Niveau vorgenommen werden, unmittelbar durch den Cache auf niedrigerem Niveau geschrieben werden.
- Verfahren zum Ausführen mehrerer Ungültigerklärungen von Cachezeilen innerhalb desselben Zyklus, wobei das Verfahren in einem System arbeitet, welches eine Mehrzahl von Prozessoren, einen Cache auf niedrigerem Niveau und eine Mehrzahl von Caches auf höherem Niveau umfaßt, wobei die Mehrzahl von Caches auf höherem Niveau dafür ausgelegt ist, Speicherzugriffe durch den Cache auf niedrigerem Niveau durchzuführen, wobei das Verfahren aufweist: Empfangen mehrerer Ungültigerklärungssignale in einem Cache auf höherem Niveau von dem Cache auf niedrigerem Niveau, wobei die mehrfachen Ungültigerklärungssignale durch mehrere gleichzeitige Vorgänge auf dem Cache mit niedrigerem Niveau verursacht sind, und Ausführen mehrerer Ungültigerklärungen gleichzeitig mit dem gleichzeitigen Ungültigerklären mehrerer Einträge in dem Cache auf niedrigerem Niveau, wobei der Cache auf niedrigerem Niveau eine Mehrzahl von Speicherbänken umfaßt, auf welche zur Unterstützung der mehrfachen gleichzeitigen Vorgänge parallel zugegriffen werden kann, und wobei jede Zeile in dem Cache auf höherem Niveau ein Gültigkeitsbit enthält, welches verwendet werden kann, um die Zeile ungültig zu machen, wobei die Gültigkeitsbits für den Cache auf höherem Niveau in einem Speicher enthalten sind, welcher in einer Mehrzahl von Speicherbänken organisiert ist, die der Mehrzahl von Speicherbänken des Caches auf niedrigem Niveau zugeordnet sind, und wobei jede Speicherbank, die Gültigkeitsbits enthält, mit einer zugehörigen Speicherbank des Caches auf niedrigerem Niveau hartverdrahtet ist, so daß der Cache auf höherem Nivea mehrfache gleichzeitige Ungültigerklärungssignale von dem Cache auf niedrigerem Niveau empfangen kann.
- Verfahren nach Anspruch 19, welches weiterhin aufweist, daß die Ausführung von Lese- oder Schreibvorgängen auf dem Cache auf höherem Niveau gleichzeitig mit der Ausführung mehrerer Ungültigerklärungsvorgänge auf dem Cache auf höherem Niveau erfolgt.
- Verfahren nach Anspruch 19, wobei das Ausführen einer Ungültigerklärung das Vorbringen einer Wortleitung eines Speicherelementes beinhaltet, was das Speicherelement zurücksetzt, ohne das Speicherelement mit einer Bitleitung zu verbinden.
- Verfahren nach Anspruch 19, wobei das Empfangen eines Ungültigerklärungssignales den Empfang von: einer Bereichs-Position einer ungültig zu machenden Zeile in dem Cache auf höherem Niveau, und einer Wege-Position der ungültig zu machenden Zeile in dem Cache auf höherem Niveau beinhaltet.
- Verfahren nach Anspruch 19, wobei der Cache auf niedrigerem Niveau ein L2-Cache ist, und wobei jeder aus der Mehrzahl von Caches auf höherem Niveau ein L1-Cache ist.
- Verfahren nach Anspruch 19, wobei die Mehrzahl von Caches auf höherem Niveau als Durchschreibcaches organisiert sind, so daß Aktualisierungen der Mehrzahl von Caches auf höherem Niveau unmittelbar durch den Cache auf niedrigerem Niveau geschrieben werden.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US28325201P | 2001-04-11 | 2001-04-11 | |
US283252P | 2001-04-11 | ||
US61493 | 2002-01-31 | ||
US10/061,493 US6701417B2 (en) | 2001-04-11 | 2002-01-31 | Method and apparatus for supporting multiple cache line invalidations per cycle |
PCT/US2002/011561 WO2002084494A2 (en) | 2001-04-11 | 2002-04-11 | Method and apparatus for supporting multiple cache line invalidations per cycle |
Publications (2)
Publication Number | Publication Date |
---|---|
DE60204676D1 DE60204676D1 (de) | 2005-07-21 |
DE60204676T2 true DE60204676T2 (de) | 2006-05-11 |
Family
ID=26741128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60204676T Expired - Lifetime DE60204676T2 (de) | 2001-04-11 | 2002-04-11 | Verfahren und Vorrichtung zum Unterstützen mehrerer Cache-Line-Invalidierungen pro Zyklus |
Country Status (7)
Country | Link |
---|---|
US (1) | US6701417B2 (de) |
EP (1) | EP1377908B1 (de) |
JP (1) | JP4041402B2 (de) |
KR (1) | KR100828869B1 (de) |
DE (1) | DE60204676T2 (de) |
TW (1) | TW564351B (de) |
WO (1) | WO2002084494A2 (de) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100685095B1 (ko) * | 2001-10-22 | 2007-02-22 | 엘지전자 주식회사 | 도킹 시스템과의 버스 연결을 위한 본체 시스템 및 그제어 방법 |
US6834327B2 (en) * | 2002-02-08 | 2004-12-21 | Hewlett-Packard Development Company, L.P. | Multilevel cache system having unified cache tag memory |
US6813694B2 (en) * | 2002-08-08 | 2004-11-02 | International Business Machines Corporation | Local invalidation buses for a highly scalable shared cache memory hierarchy |
US6826654B2 (en) * | 2002-08-08 | 2004-11-30 | International Business Machines Corporation | Cache invalidation bus for a highly scalable shared cache memory hierarchy |
US6826655B2 (en) * | 2002-08-08 | 2004-11-30 | International Business Machines Corporation | Apparatus for imprecisely tracking cache line inclusivity of a higher level cache |
US7669009B2 (en) * | 2004-09-23 | 2010-02-23 | Intel Corporation | Method and apparatus for run-ahead victim selection to reduce undesirable replacement behavior in inclusive caches |
US7308557B2 (en) * | 2005-02-09 | 2007-12-11 | International Business Machines Corporation | Method and apparatus for invalidating entries within a translation control entry (TCE) cache |
US20070011667A1 (en) * | 2005-05-25 | 2007-01-11 | Saravanan Subbiah | Lock management for clustered virtual machines |
US8904115B2 (en) * | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US10387314B2 (en) * | 2015-08-25 | 2019-08-20 | Oracle International Corporation | Reducing cache coherence directory bandwidth by aggregating victimization requests |
US9720834B2 (en) * | 2015-12-11 | 2017-08-01 | Oracle International Corporation | Power saving for reverse directory |
US10262721B2 (en) * | 2016-03-10 | 2019-04-16 | Micron Technology, Inc. | Apparatuses and methods for cache invalidate |
US10102000B2 (en) * | 2016-04-01 | 2018-10-16 | Intel Corporation | Apparatus and method for non-serializing split locks |
US11556477B2 (en) * | 2018-06-15 | 2023-01-17 | Arteris, Inc. | System and method for configurable cache IP with flushable address range |
US11947456B2 (en) * | 2021-09-30 | 2024-04-02 | Advanced Micro Devices, Inc. | Weak cache line invalidation requests for speculatively executing instructions |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0512117A (ja) | 1991-07-04 | 1993-01-22 | Toshiba Corp | キヤツシユ一致化方式 |
US5553263A (en) | 1993-07-16 | 1996-09-03 | Unisys Corporation | Cache memory system with fault tolerance having concurrently operational cache controllers processing disjoint groups of memory |
US5530832A (en) * | 1993-10-14 | 1996-06-25 | International Business Machines Corporation | System and method for practicing essential inclusion in a multiprocessor and cache hierarchy |
JP3872118B2 (ja) | 1995-03-20 | 2007-01-24 | 富士通株式会社 | キャッシュコヒーレンス装置 |
JPH1153260A (ja) | 1997-08-06 | 1999-02-26 | Nec Corp | キャッシュメモリー内蔵半導体装置 |
US6122709A (en) | 1997-12-19 | 2000-09-19 | Sun Microsystems, Inc. | Cache with reduced tag information storage |
US6178484B1 (en) | 1998-02-17 | 2001-01-23 | International Business Machines Corporation | DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches |
US6151655A (en) * | 1998-04-30 | 2000-11-21 | International Business Machines Corporation | Computer system deadlock request resolution using timed pulses |
US6349363B2 (en) * | 1998-12-08 | 2002-02-19 | Intel Corporation | Multi-section cache with different attributes for each section |
US6338119B1 (en) * | 1999-03-31 | 2002-01-08 | International Business Machines Corporation | Method and apparatus with page buffer and I/O page kill definition for improved DMA and L1/L2 cache performance |
US6725334B2 (en) * | 2000-06-09 | 2004-04-20 | Hewlett-Packard Development Company, L.P. | Method and system for exclusive two-level caching in a chip-multiprocessor |
-
2002
- 2002-01-31 US US10/061,493 patent/US6701417B2/en not_active Expired - Lifetime
- 2002-03-28 TW TW091106190A patent/TW564351B/zh not_active IP Right Cessation
- 2002-04-11 DE DE60204676T patent/DE60204676T2/de not_active Expired - Lifetime
- 2002-04-11 WO PCT/US2002/011561 patent/WO2002084494A2/en active IP Right Grant
- 2002-04-11 JP JP2002582367A patent/JP4041402B2/ja not_active Expired - Lifetime
- 2002-04-11 KR KR1020037013187A patent/KR100828869B1/ko active IP Right Grant
- 2002-04-11 EP EP02719499A patent/EP1377908B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6701417B2 (en) | 2004-03-02 |
JP2004528647A (ja) | 2004-09-16 |
WO2002084494A2 (en) | 2002-10-24 |
EP1377908B1 (de) | 2005-06-15 |
TW564351B (en) | 2003-12-01 |
KR100828869B1 (ko) | 2008-05-09 |
DE60204676D1 (de) | 2005-07-21 |
JP4041402B2 (ja) | 2008-01-30 |
US20020152359A1 (en) | 2002-10-17 |
KR20040032095A (ko) | 2004-04-14 |
WO2002084494A3 (en) | 2003-03-20 |
EP1377908A2 (de) | 2004-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60204676T2 (de) | Verfahren und Vorrichtung zum Unterstützen mehrerer Cache-Line-Invalidierungen pro Zyklus | |
DE2226382C3 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
DE69822534T2 (de) | Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen | |
DE102011076894B9 (de) | Persistenter Speicher für einen Hauptspeicher eines Prozessors | |
DE10262164B4 (de) | Computersystem mit einer hierarchischen Cacheanordnung | |
DE69629140T2 (de) | Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index | |
DE2241257C3 (de) | Datenverarbeitende Anlage | |
DE69721643T2 (de) | Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen | |
DE2841041A1 (de) | Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren | |
DE102006030879B4 (de) | System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem | |
DE10316725B4 (de) | Datenverwaltungsverfahren für ein Distributed Shared Memory-System | |
DE3621321A1 (de) | Cache-speicher- bzw. multiprozessor-system und betriebsverfahren | |
DE112009000373T5 (de) | Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen | |
DE69937611T2 (de) | Intelligenter Puffer-Speicher | |
DE102007048601A1 (de) | Datenspeicherung in einem Schaltsystem, das mehrere Prozessoren eines Computersystems koppelt | |
DE102007052853A1 (de) | Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE69721641T2 (de) | Verfahren und Vorrichtung für ein verzeichnisloses Speicherzugriffsprotokoll in einem Rechnersystem mit verteiltem gemeinsamen Speicher | |
DE3046912C2 (de) | Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage | |
DE69726795T2 (de) | Kodierungsverfahren des Verzeichnisstatus in einem gemeinsamen, verteilten Speichersystem mit koherenten Pufferspeichern | |
DE60003426T2 (de) | Statusbits für cachespeicher | |
DE10006430A1 (de) | Verbessertes Kohärenzprotokoll für einen Computer-Cache | |
DE112019000627T5 (de) | Speicherstrukturbasiertes Coherency Directory Cache | |
DE69130626T2 (de) | Verfahren zur Verwaltung einer Cache-Speicheranordnung | |
DE19908618A1 (de) | Gemeinsam genutzter Hochleistungscachespeicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |