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 PDF

Info

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
Application number
DE60204676T
Other languages
English (en)
Other versions
DE60204676D1 (de
Inventor
Shailender Chaudhry
Marc Tremblay
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=26741128&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=DE60204676(T2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE60204676D1 publication Critical patent/DE60204676D1/de
Application granted granted Critical
Publication of DE60204676T2 publication Critical patent/DE60204676T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache 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)-Caches 161-164, die einen einzelnen Level zwei (L2)-Cache 180 und einen Speicher 183 gemeinsam verwenden (s. 1). Während des Betriebes versucht das System, wenn ein Prozessor 151 auf ein Datenobjekt zugreift, welches in seinem lokalen L1-Cache 161 nicht vorhanden ist, das Datenobjekt aus dem L2-Cache 180 abzurufen. Wenn das Datenobjekt in dem L2-Cache 180 nicht vorhanden ist, holt das System zunächst das Datenobjekt aus dem Speicher 183 in den L-2-Cache 180 und dann von dem L2-Cache 180 in den L1-Cache 161.
  • 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-Cache 162.
  • 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-Cache 161 modifiziert wird, andere Kopien desselben Datenobjektes in L2-Caches 162-164, in dem L2-Cache 180 und in dem Speicher 183 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 Bus 170 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-Caches 161-164 existieren. Diese Kommunikationswege sind in dem in 1A dargestellten System nicht vorhanden.)
  • Man beachte, daß, falls mehrere Kommunikationswege zwischen den L1-Caches 161-164 und dem L2-Cache 180 vorgesehen sind, es möglich wird, daß mehrere Prozessoren Zugriffe ausführen, welche Ungültigerklärungen gleichzeitig bewirken. Demnach können die L1-Caches 161-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-Cache 161 empfangen wird, ein Nachschlagen und ein Vergleich in dem L1-Cache 161 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 in 5 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 Mehrprozessorsystem 100 mit einem Umkehrverzeichnis gemäß einer Ausführungsform der vorliegenden Erfindung. Man beachte, daß der größte Teil des Mehrprozessorsystems 100 innerhalb eines einzelnen Halbleiterchips 101 liegt. Genauer gesagt enthält der Halbleiterchip 101 eine Anzahl von Prozessoren 110, 120, 130 und 140, welche Level 1 (L1)-Caches 112, 122, 132 bzw. 142 enthalten. Man beachte, daß die L1-Caches 112, 122, 132 und 142 getrennte Befehls- und Datencaches sein können oder alternativ einheitliche Befehls-Datencaches sein können. Die L1-Caches 112, 122, 132 und 142 sind mit dem Level zwei (L2)-Cache 106 verbunden, der ein Umkehrverzeichnis 302 enthält (welches unten unter Bezug auf die 3-6 noch genauer beschrieben wird). Der L2-Cache 106 ist mit dem Speicher 102 außerhalb des Chips für den Speicherkontroller 104 verbunden.
  • In einer Ausführungsform der vorliegenden Erfindung sind die L1-Caches 112, 122, 132 und 142 Durchschreibecaches, was bedeutet, daß alle Aktualisierungen an den L1-Caches 112, 122, 132 und 142 automatisch an den L2-Cache 106 weitergeleitet werden. Dies vereinfacht das Kohärenzprotokoll, da, falls der Prozessor 110 ein Datenobjekt benötigt, welches in dem L1-Cache 112 vorhanden ist, der Prozessor 110 die Daten von dem L2-Cache 106 empfangen kann, ohne auf den L1-Cache 112 warten zu müssen, um zu der Quelle der Daten zu gelangen. Darüber hinaus benötigt man kein Weiterleitungsnetzwerk, um es dem L1-Cache 112 zu erlauben, die Quelle der Daten auszumachen. Man beachte, daß in einer Ausführungsform der vorliegenden Erfindung der L2-Cache 106 ein „umfassender Cache" ist, was bedeutet, daß alle Gegenstände in den L1-Caches 112, 122, 132 und 142 in dem L2-Cache 106 enthalten sind.
  • L2-Cache mit mehreren Speicherbänken
  • 2 veranschaulicht einen L2-Cache 106 mit mehreren Speicherbänken gemäß einer Ausführungsform der vorliegenden Erfindung. In dieser Ausführungsform ist der L2-Cache 106 mit vier Speicherbänken 202-205 implementiert, auf welche durch Prozessoren 110, 120, 130 und 140 über Schalter 215 und 218 parallel zugegriffen werden kann. Der Umschalter 215 behandelt Kommunikationen, die von den Prozessoren 110, 120, 130 und 140 in L2-Bänke 202-205 eingegeben werden, während der Umschalter 216 Kommunikationen in umgekehrter Richtung von den L2-Bänken 202-205 zu den Prozessoren 110, 120, 130 und 140 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 Schalter 215 zusätzlich einen I/O-Anschluß 150 für die Aufnahme von Kommunikationen von I/O-Einrichtungen enthält und daß der Umschalter 216 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änke 202-205 ein Umkehrverzeichnis auf, welches unten unter Bezug auf 5 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-Caches 112, 122, 132 und 142 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änke 202-205 des L2-Caches 106 zu empfangen.
  • Wie in 1 dargestellt, empfängt der L1-Cache 112: ein Ungültigerklärungs-Signal 221 von der L2-Bank 202, ein Ungültigerklärungs-Signal 222 von der L2-Bank 203, ein Ungültigerklärungs-Signal 223 von der L2-Bank 204 und ein Ungültigerklärungs-Signal 224 von der L2-Bank 205. Jeder der anderen L1-Caches 122, 132 und 142 empfängt ähnliche Ungültigerklärungs-Signale von den L2-Bänken 202-205. Diese zusätzlichen Ungültigerklärungs-Signale sind jedoch in 1 aus Gründen der Klarheit nicht dargestellt.
  • Umkehrverzeichnis
  • 3 veranschaulicht eine L2-Bank 202 zusammen mit einem zugehörigen Umkehrverzeichnis 302 gemäß einer Ausführungsform der vorliegenden Erfindung. Die L2-Bank 202 enthält einen bereichsassoziativen Speicher 304 mit acht Wegen, um Befehle und Daten zu speichern. Ein Bereich der Adresse wird verwendet, um einen Bereich (bzw. Satz oder Reihe) innerhalb eines Caches 304 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 Cache 304 repräsentiert werden.
  • Das Umkehrverzeichnis 302 enthält einen getrennten Block für jeden L1-Cache. Genauer gesagt ist der Block 312 dem L1-Cache 112 zugeordnet, der Block 322 ist dem L1-Cache 322 zugeordnet, der Block 332 ist dem L1-Cache 132 zugeordnet und der Block 342 ist dem L1-Cache 142 zugeordnet.
  • Man beachte, daß jeder dieser Blöcke 312, 322, 332 und 342 einen Eintrag für jede Zeile in den zugehörigen L1-Caches 112, 122, 132 und 142 enthält. Darüber hinaus ist, da der L1-Cache 112 als ein Vierwege-bereichsassoziativer Cache organisiert ist, der zugehörige Block 312 in dem Umkehrverzeichnis 302 in derselben Art und Weise organisiert. Einträge innerhalb des L1-Caches 112 jedoch enthalten Daten und Befehle, wohingegen Einträge in dem zugeordneten Block 312 Indizierungsinformation enthält, welche eine Position der Zeile innerhalb des Caches 304 angibt.
  • Ungültigerklärungssignal
  • 4 zeigt eine Adresse 400 und ein zugehöriges Ungültigerklärungssignal 430 gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Der obere Bereich von 4 veranschaulicht die Adresse 400, welche die Position eines Datenobjektes (oder Befehls) in dem Speicher angibt bzw. spezifiziert. Der L1-Cache 112 teilt diese Adresse in das L1-Tag 412, die L1-Bereichsnummer 414 und den L1-Zeilenversatz (Offset) 418. Die L1-Bereichszahl 414 wird verwendet, um einen spezifischen Bereich des bereichsassoziativen L1-Caches 114 mit vier Wegen nachzuschlagen. Das L1-Tag 412 wird in dem L1-Cache 112 gespeichert und wird verwendet, um Vergleiche durchzuführen zum Zwecke der Implementierung des bereichsassoziativen Speichers mit vier Wegen für jeden Bereich. Der L1-Zeilenversatz 418 bestimmt eine Position eines bestimmten Datenobjektes innerhalb der Zeile in dem L1-Cache 112.
  • Der L2-Cache 106 teilt die Adresse 400 in das L2-Tag 402, die L2-Bereichszahl 404, die L2-Banknummer 406 und den L2-Zeilenversatz 408. Die L2-Banknummer 406 bestimmt eine bestimmte Bank von den vier Bänken 202-205 des L2-Caches 106. Die L2-Bereichszahl 404 wird verwendet, um einen speziellen Bereich der bereichsassoziativen Bank mit acht Wegen des L2-Caches 106 nachzuschlagen. Das L2-Tag 402 wird in einer speziellen Bank des L2-Caches 106 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-Zeilenversatz 408 bestimmt eine Position eines speziellen Datenobjektes innerhalb der Zeile in dem L2-Cache 106.
  • Das entsprechende Ungültigerklärungssignal 430 für die Adresse 400 enthält eine reduzierte L1-Bereichszahl 424 und eine L1-Wegezahl 429. Die reduzierte L1-Bereichsnummer 424 enthält die L1-Bereichsnummer 414 ohne die Bits für die L2-Banknummer 406. Die Bits für die L2-Banknummer können entfernt werden, da, wie man in 5 erkennen kann, jedes Ungültigerklärungssignal mit einer entsprechenden Bank des L2-Cache 106 hartverdrahtet ist, so daß die L2-Banknummer 406 nicht benötigt wird. Die L1-Wegenummer 429 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-Cache 112 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-Caches 112 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Dieser Speicher enthält mehrere Bänke 501-504 und mehrere Anschlüsse für das Empfangen von Ungültigerklärungssignalen 221-225, wobei jedes Ungültigerklärungssignal mit seiner eigenen Speicherbank verbunden ist. Genauer gesagt ist das Ungültigerklärungssignal 221 mit der Bank 501 verbunden, das Ungültigerklärungssignal 222 ist mit der Bank 502 verbunden, das Ungültigerklärungssignal 223 ist mit der Bank 503 verbunden, und das Ungültigerklärungssignal 224 ist mit der Bank 504 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 Wegezahl 429 für jedes der Ungültigerklärungssignale 221-224 von der Bereichszahl 424 getrennt, und die Bereichszahl 424 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-Wegezahl 429 das spezielle Gültigkeitsbit freigibt, welches mit einer Operation verbunden ist.
  • Beispielsweise ist das Ungültigerklärungssignal 211 in die Bereichszahl 511 und die Wegezahl 521 aufgeteilt. Die Wegezahl 521 wird verwendet, um eine Spalte der Bank 501 auszuwählen, während die Bereichszahl 511 den Decoder 531 durchläuft, um eine Wortleitung für die Bank 501 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 Decoder 541 durchläuft, der eine einzelne Wortleitung über alle Bänke 501-504 des Speichers hinweg auswählt.
  • Speicherzellenstruktur
  • 6 zeigt die Struktur einer einzelnen Speicherzelle in dem Speicher, der in 5 dargestellt ist, und zwar gemäß einer Ausführungsform der vorliegenden Erfindung. Diese Speicherzelle nimmt eine Wortleitung 551 von dem Ungültigerklärungsanschluß und eine Wortleitung 552 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 Freigabesignal 630, welches aus der L1-Wegezahl 429 bestimmt wird, den Betrieb der Wortleitung 551 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-Cache 112 mehrere Ungültigerklärungssignale 221-224 empfangen werden (Schritt 702). In Reaktion auf diese mehrfachen Ungültigerklärungssignale 221-224 führt das System gleichzeitige Ungültigerklärungen auf den mehreren Bänken 501-504 des L1-Cache 112 aus, der in 5 dargestellt ist (Schritt 704). 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 (Schritt 706).
  • 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)

  1. 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.
  2. 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.
  3. Cachespeicher nach Anspruch 2, wobei eine Wortleitung des zweiten Anschlusses bewirkt, daß ein Speicherelement ohne Verbindung des Speicherelementes mit einer Bitleitung zurückgesetzt wird.
  4. Cachespeicher nach Anspruch 1, wobei der Cache ein L1-Cache ist, der ein Ungültigerklärungssignal von einem L2-Cache empfängt.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. Mehrprozessorsystem nach Anspruch 8, wobei das Mehrprozessorsystem auf einem einzelnen Halbleiterchip angeordnet ist.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. 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.
DE60204676T 2001-04-11 2002-04-11 Verfahren und Vorrichtung zum Unterstützen mehrerer Cache-Line-Invalidierungen pro Zyklus Expired - Lifetime DE60204676T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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