DE10341563A1 - Mehrfachcachekohärenz - Google Patents

Mehrfachcachekohärenz Download PDF

Info

Publication number
DE10341563A1
DE10341563A1 DE10341563A DE10341563A DE10341563A1 DE 10341563 A1 DE10341563 A1 DE 10341563A1 DE 10341563 A DE10341563 A DE 10341563A DE 10341563 A DE10341563 A DE 10341563A DE 10341563 A1 DE10341563 A1 DE 10341563A1
Authority
DE
Germany
Prior art keywords
data
cache
request
read
queue
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.)
Granted
Application number
DE10341563A
Other languages
English (en)
Other versions
DE10341563B4 (de
Inventor
Paul L. Fort Collins Rogers
Robert F. Fort Collins Krick
Vipul Fort Collins Gandhi
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE10341563A1 publication Critical patent/DE10341563A1/de
Application granted granted Critical
Publication of DE10341563B4 publication Critical patent/DE10341563B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory

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)

Abstract

Bei darstellenden Ausführungsbeispielen ist eine Speicherarchitektur vorgesehen, die einen Hauptbus, zumindest eine CPU, einen Cache-Speicher, der die CPU zwischenspeichert, und eine Kohärenzsteuerung umfaßt, die die Existenz oder Position einer Datenanforderung bestimmt, die von dem Hauptbus in dem Prozessor oder dem Cache empfangen wird.

Description

  • Die vorliegende Anmeldung ist verwandt mit der vorher eingereichten, gemeinschaftlich übertragenen U.S.-Patentanmeldung mit der Seriennr. 10/118,801 mit dem Titel „SYSTEM OF AND METHOD FOR FLOW CONTROL WITHIN A TAG PIPELINE" eingereicht am 04.09.2002, und der gemeinschaftlich übertragenen U.S.-Patentanmeldung mit der Seriennr. 09/853,951 mit dem Titel „SYSTEM OF AND METHOD FOR MEMORY ARBITRATION USING MULTIPLE QUEUES", eingereicht am 05.10.2001, deren Offenbarungen hierin durch Bezugnahme aufgenommen sind.
  • Beschreibung
  • Herkömmliche Computerarchitekturen umfassen im allgemeinen eine Cache-Speicherstruktur zum Ermöglichen von Lesen und Schreiben von Daten in einem Hauptspeicher zum Verbessern der Speicherzugriffszeit. Der Cache-Speicher behält Kopien von Lese- und Schreib-Daten von dem Hauptspeicher bei. Diese Kopien können auf den aktuellsten Transaktionen oder auf komplizierteren Algorithmen basieren.
  • Obwohl eine solche Speicherarchitektur die Geschwindigkeit erhöht, mit der externe Geräte Daten von dem Hauptspeicher wiedergewinnen, gibt es Nachteile bezüglich der Anwendung eines einzelnen Caches für mehrere CPUs.
  • Es ist die Aufgabe der vorliegenden Erfindung, eine Speicherarchitektur, ein Verfahren zum Durchführen einer Kohärenzsteuerung einer Speicherarchitektur, eine Kohärenzsteuerung und eine computerlesbare Speichervorrichtung mit verbesserten Charakteristika zu schaffen.
  • Diese Aufgabe wird durch eine Architektur gemäß Anspruch 1 und 13, ein Verfahren gemäß Anspruch 14, eine Steuerung ge mäß Anspruch 21 sowie eine Vorrichtung gemäß Anspruch 26 gelöst.
  • Bei darstellenden Ausführungsbeispielen ist eine Speicherarchitektur vorgesehen, die einen Hauptbus, zumindest eine CPU, einen Cache-Speicher, der die CPU zwischenspeichert, und eine Kohärenzsteuerung umfaßt, die die Existenz oder Position einer Datenanforderung bestimmt, die von dem Hauptbus empfangen wird.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 eine schematische Ansicht eines Ausführungsbeispiels einer Speicherarchitektur, die eine Kohärenzsteuerung gemäß darstellenden Ausführungsbeispielen verwendet;
  • 2 eine schematische Ansichtsdarstellung eines Ausführungsbeispiels einer Speicherarchitektur, die eine Kohärenzsteuerung gemäß darstellenden Ausführungsbeispielen verwendet;
  • 3 ein Flußdiagramm, das den Betrieb eines Ausführungsbeispiels einer Kohärenzsteuerung gemäß darstellenden Ausführungsbeispielen darstellt;
  • 4 ein Flußdiagramm, das den Betrieb eines Ausführungsbeispiels einer Kohärenzsteuerung gemäß darstellenden Ausführungsbeispielen darstellt; und
  • 5 ein Blockdiagramm, das den Betrieb eines Ausführungsbeispiels einer Kohärenzsteuerung gemäß darstellenden Ausführungsbeispielen darstellt.
  • Darstellende Ausführungsbeispiele können in anderen spezifischen Formen ausgeführt werden, ohne von der Wesensart oder den wesentlichen Charakteristika abzuweichen. Das beschriebene Ausführungsbeispiel soll in jeder Hinsicht nur als darstellend und nicht als beschränkend angesehen werden. Der Schutzbereich der Erfindung wird daher durch die angehängten Ansprüche und nicht durch die vorhergehende Beschreibung angezeigt. Alle Änderungen, die innerhalb der Bedeutung und des Äquivalentsbereichs der Ansprüche liegen, sind in dem Schutzbereich derselben aufgenommen.
  • Mit Bezugnahme auf 1 ist ein Ausführungsbeispiel einer Speicherarchitektur 10 gezeigt, mit einer Kohärenzsteuerung gemäß darstellenden Ausführungsbeispielen. Bei dem in 1 gezeigten Ausführungsbeispiel umfaßt die Speicherarchitektur 10 im allgemeinen eine Kohärenzsteuerung 14, einen Rückgabepuffer 16, einen L2-Cache 18, eine CPU 20 und eine CPU 22. Außerdem ist ein Hauptbus 12 vorgesehen, der eine Adreß- und Datenübertragung zwischen der Speicherarchitektur 10 und externen Komponenten (nicht dargestellt) ermöglicht, wie zum Beispiel anderen Speicher- oder Verarbeitungsarchitekturen. Die Kohärenzsteuerung 14 kommuniziert vorzugsweise mit dem Hauptbus und Elementen der Speicherarchitektur 10, wie zum Beispiel dem Rückgabepuffer 16, dem L2-Cache 18 und den CPUs 20 und 22, um eine Kohärenzsteuerung zu ermöglichen, durch Sicherstellen, daß gemeinschaftlich verwendete, private oder private geänderte Daten, die sich in einem der Elemente der Speicherarchitektur 10 befinden, über den Hauptbus 12 an eine anfordernde Entität geliefert werden, die außerhalb der Speicherarchitektur 10 liegt. Falls Daten in einem privaten geänderten Zustand gehalten werden, sollte klar sein, daß die Daten von denjenigen modifiziert sind, die in dem Hauptspeicher gespeichert sind und ausschließlich an einer Position gehalten werden.
  • Mit Bezugnahme auf 2 ist ein Ausführungsbeispiel der Speicherarchitektur 10 näher beschrieben. In 2 stellen CPUs 20 und 22 einzelne Prozessoren und Speicherspeicherungsbereiche dar. Obwohl nur zwei CPUs gezeigt sind, ist klar, daß jede Anzahl von CPUs mit darstellenden Ausführungsbeispielen verwendet werden kann, die eine oder mehrere umfassen, und die darstellenden Ausführungsbeispiele sind nicht auf die Anzahl von CPUs beschränkt, die hierin offenbart und dargestellt sind. Jede CPU umfaßt vorzugsweise ihren eigenen speziell zugewiesenen (dedizierten) L1-Cache 220 und 222 erster Ordnung zum Zwischenspeichern von Lese- und Schreibdaten von jeder jeweiligen CPU 20 und 22. Die Caches 220 und 222 können jede Cachearchitektur aufweisen, einschließlich, aber nicht beschränkt auf, direkt abgebildete, teilassoziative und vollassoziative Architekturen.
  • Der L2-Cache 18 ist ein Cache zweiter Ordnung, der Leseund Schreibdaten von den CPUs 20 und 22 und auch den Caches 220 und 222 kopiert. Der L2-Cache 18 umfaßt im allgemeinen eine Räumungswarteschlange 24, eine Lesewartesschlange 26, eine Kohärenzwarteschlange 141, eine Kennungspipeline 28, L2-Kennungen 30 und einen Speicher 32. Es sollte jedoch klar sein, daß durch darstellende Ausführungsbeispiele andere Cachearchitekturen verwendet werden können. Der Speicher 32 ist der Speicher, wo der L2-Cache Lese- und Schreibdaten von den CPUs 20 und 22 speichert. Der Speicher 32 ist vorzugsweise eine schnelle Speicherstruktur, wie zum Beispiel ein DARM oder ein SRAM, um es zu ermöglichen, daß eine schnelle Verarbeitung und eine hohe Bandbreitendatenübertragung die Datenwiedergewinnung von dem L2-Cache 18 maximiert. Die Räumungswarteschlange 24 wirkt als ein Puffer zum Räumen geänderter oder modifizierter Zeilen von dem Speicher 32 zurück zu den CPUs 20 oder 22 oder einem anderen Hauptspeicher. Die Räumungswarteschlange 24 arbeitet vorzugsweise mit der Kennungspipeline 28, um Daten von dem L2-Speicher 32 zu spülen. Die Kohärenzwarteschlange 141 arbeitet in Verbindung mit der Kohärenzsteuerung 14, um angeforderte Daten an eine anfordernde Entität zu senden, wie es nachfolgend näher erörtert wird.
  • Die Lesewarteschlange 26 ist ein temporärer Speicherbereich oder Puffer, der Daten von dem L2-Cache 18 temporär speichert, die durch die CPUs 20 oder 22 gelesen werden. Die Lesewarteschlange 26 speichert temporär zumindest eine Zeile von dem Speicher 32, bevor dieselbe an ihren Bestimmungsort ausgegeben wird. Dies trägt dazu bei, den Hauptbus 12 und andere Busse für die Datenlieferung und -übertragung frei zu machen.
  • Die Kennungspipeline 28 arbeitet in Verbindung mit L2-Kennungen 30 zum Bestimmen, ob sich angeforderte Cachezeilen in dem Speicher 32 befinden. L2-Kennungen 30 enthalten Kennungen aller Daten, die in dem Speicher 32 gespeichert sind. Falls die angeforderte Cachezeile und die Kennungszeile eines Cacheeintrags übereinstimmen, wird die Anforderung an die Lesewarteschlange 26 weitergeleitet, zum Ausgeben der zugeordneten Daten an die anfordernde Entität.
  • Der Hauptbus 12 liefert eine Adreß- und Datenkommunikation zwischen der Speicherarchitektur 10 und Geräten außerhalb derselben. Externe Geräte können jede bekannte oder neuartige Verarbeitungs- oder Speicherentität umfassen. Der Rückgabepuffer 16 puffert Daten, die von dem Hauptbus 12 zu der CPU 20, CPU 22 oder dem L2-Cache 18 zurückkehren, und kann ein McKinley-Schnittstellenblock (MIB = McKinley Interface block) oder ein anderer Puffer sein.
  • Mit weiterer Bezugnahme auf 2 wird die Kohärenzsteuerung 14 näher beschrieben. Die Kohärenzsteuerung 14 kann mit dem L2-Cache 18 auf dem Chip sein, oder kann getrennt von dem L2-Cache 18 sein. Die Kohärenzsteuerung 14 kommuniziert mit dem Rückgabepuffer 16, dem L2-Cache 18, der CPU 20 und der CPU 22, um die Existenz und Position angeforderter Daten innerhalb der Speicherarchitektur 10 zu bestimmen. Falls dieselben gefunden werden, ermöglicht die Kohärenzsteuerung 14 die Ausgabe der angeforderten Daten an die anfordernde Entität oder die Entfernung der Daten, wie es nachfolgend erörtert wird.
  • In 2 umfaßt die Kohärenzsteuerung 14 eine Kohärenzantwortsteuerung 34, eine Kohärenzantwortsteuerung 36, eine Kohärenzanforderungswarteschlange 38 und eine Kohärenzanforderungseinrichtung 39. Die Kohärenzanforderungseinrichtung 39 überwacht den Hauptbus 12 nach Datenanforderungen, die entlang demselben übertragen werden. Auf das Empfangen einer Datenanforderung von einer anfordernden Entität entlang dem Hauptbus 12 hin überträgt die Kohärenzanforderungseinrichtung Adreßinformationen der Daten an die Kohärenzanforderungswarteschlange 38.
  • Die Kohärenzanforderungswarteschlange 38 ist ein Puffer, der Datenanforderungen von der Kohärenzanforderungseinrichtung 39 beibehält und die Adreßinformationen an Entitäten in der Speicherarchitektur 10 ausgibt. Die Kohärenzanforderungswarteschlange 38 gibt die Adreßinformationen ansprechend auf die Kohärenzanforderungssteuerung 36 aus.
  • Die Kohärenzanforderungssteuerung 36 kommuniziert mit der Kohärenzanforderungswarteschlange 38 zum Anweisen der Kohärenzanforderungswarteschlange 38, Anforderungen an die Speicherarchitektur 10 auszugeben. Außerdem kommuniziert die Kohärenzanforderungssteuerung 36 mit der Kohärenzantwortsteuerung 34, um den Betrieb der Kohärenzantwortsteuerung 34 einzuleiten und eine Rückkopplung von derselben zu empfangen.
  • Die Kohärenzantwortsteuerung 34 empfängt ein Eingangssignal von der CPU 20, der CPU 22, der Kennungspipeline 28, der Räumungswarteschlange 24, der Lesewarteschlange 26 und dem Rückgabepuffer 16 zum Bestimmen der Position von Daten, die von einer anfordernden Entität in einer externen Position von der Speicherarchitektur 10 angefordert werden.
  • Mit Bezugnahme auf 3 wird nun der Betrieb eines Ausführungsbeispiels beschrieben. In Schritt 40 wird eine Datenanforderung von einem Gerät außerhalb der Speicherarchi tektur 10 gesendet, die mit dem Hauptbus 12 verbunden ist. Die Datenanforderung wird von der Kohärenzanforderungseinrichtung 39 empfangen. Die Kohärenzanforderungseinrichtung 39 gibt wiederum die Adresse der Datenanforderung an die Kohärenzanforderungswarteschlange 38 aus. Die Kohärenzanforderungswarteschlange 38 puffert diese Adresse vor der Eingabe in die Speicherarchitektur 10. Das Puffern durch die Anforderungswarteschlange ermöglicht es, daß mehrere Adressen unterschiedlicher Datenanforderungen gespeichert werden, bevor dieselben an die Speicherarchitektur 10 ausgegeben werden.
  • Auf den Empfang der Adresse von der Kohärenzanforderungseinrichtung 39 hin kommuniziert die Kohärenzanforderungswarteschlange 38 in Schritt 42 ihre Erfassung der Adresse an die Kohärenzanforderungssteuerung 36. Die Kohärenzanforderungssteuerung 36 weist die Kohärenzantwortsteuerung 34 an, das Überwachen des Rückgabepufferübereinstimmungssignals 26, des CPU-Übereinstimmungssignals 62, der L1-Kohärenzantwort 64, der L2-Kohärenzantwort 66, der Räumungsübereinstimmung 68, der Leseübereinstimmung 70, des CPU-Signals 72 und des CPU-Signals 74 zu beginnen. Die Kohärenzantwortsteuerung 34 überwacht diese Signale zum Empfangen einer Anzeige von der jeweiligen Vorrichtung, daß sich die angeforderten Daten in einer dieser Positionen befinden, wie es nachfolgend näher beschrieben wird.
  • In Schritt 44 wird der Rückgabepuffer 16 abgefragt, um zu bestimmen, ob sich die angeforderten Daten in demselben befinden oder nicht. Da der Rückgabepuffer in der Lage ist, einige Datenzeilen zu einem bestimmten Zeitpunkt beizubehalten, werden die Adreßinformationen vorzugsweise direkt an den Rückgabepuffer gesendet, um die Existenz der angeforderten Daten in demselben zu bestimmen. Falls sich die Daten in dem Rückgabepuffer 16 befinden, gibt der Rückgabepuffer 16 ein Rückgabepufferübereinstimmungssignal 60 aus, um die Kohärenzantwortsteuerung 34 anzuweisen, daß sich die angeforderten Daten in demselben befinden.
  • Nachfolgend wird in Schritt 46 die Adresse entlang dem Adreßbus 80 an die Kennungspipeline 28 ausgegeben. Hier vergleicht die Kennungspipeline 28 die Adreßinformationen mit dem L2-Kennungen 30, um zu bestimmen, ob sich die angeforderten Daten in dem Speicher 32 befinden. Gleichermaßen wird die Adresse an die CPU 20 und die CPU 22 ausgegeben, um zu bestimmen, ob sich die angeforderten Daten in dem Cache-Speicher 220 und 222 der CPU 20 beziehungsweise CPU 22 befinden. Falls ein Cache 220 oder 222 die angeforderten Daten nicht enthält, informiert die jeweilige CPU die Kohärenzantwortsteuerung 34 über jeweilige CPU-Signale 72 bzw. 74 entsprechend. Hier umgeht der Cache die Kennungspipeline und gibt die Signale 72 und 74 direkt an die Kohärenzantwortsteuerung 34 aus. Dies ermöglicht es dem Kohärenzschema, das Durchsuchen des Rests der Speicherarchitektur 10 fortzusetzen. Falls herausgefunden wird, daß sich die angeforderten Daten in dem Speicher 32 befinden, wird das L2-Kohärenzantwortsignal 66 an die Kohärenzantwortsteuerung 34 ausgegeben, um die Existenz der Daten in demselben anzuzeigen.
  • Bei einem bevorzugten Ausführungsbeispiel werden die CPUs 20 und 22 durch speziell zugewiesene Caches 220 beziehungsweise 222 zwischengespeichert. Falls bestimmt wird, daß sich die Daten in denselben befinden, informieren die CPUs 20 und 22 die Kennungspipeline 28 über die Existenz der angeforderten Daten. Die Kennungspipeline 28 gibt dann das L1-Kohärenzantwortsignal 64 aus, um die Kohärenzantwortsteuerung 34 zu informieren, daß sich die angeforderten Daten in dem jeweiligen L1-Cache befinden.
  • Nachfolgend wird in Schritt 48 die Adresse über den Adreßbus 82 an die Räumungswarteschlange 24 und die Lesewarteschlange 26 ausgegeben. Die Räumungswarteschlange 24 und die Lesewarteschlange 26 vergleichen dann die Adresse mit Adressen von Daten, die in demselben enthalten sind, um zu bestimmen, ob sich die Daten in den Warteschlangen befin den. Falls sich die Daten in der Räumungswarteschlange 24 oder der Lesewarteschlange 26 befinden, wird das jeweilige Räumungsübereinstimmungssignal 68 oder das Leseübereinstimmungssignal 70 an die Kohärenzantwortsteuerung 34 ausgegeben.
  • In Schritt 50 verarbeitet die Kohärenzantwortsteuerung 34 jedes empfangene Rückgabepufferübereinstimmungssignal 60, CPU-Übereinstimmungssignal 62, L1-Kohärenzantwort 64, L2-Kohärenzantwort 66, Räumungsübereinstimmung 68, Leseübereinstimmung 70, CPU-Signal 72 oder CPU-Signal 74. Mit Bezugnahme auf 4 werden die Antworten auf die Kohärenzantwortsteuerung 34 verarbeitet, beginnend mit Schritt 100, wo bestimmt wird, ob sich die angeforderten Daten in der Räumungswarteschlange 24, der CPU 20, der CPU 22 oder dem Speicher 32 befinden. Falls sich die Daten in einer dieser Positionen befinden wird eine Antwort durch den Hauptbus 12 an die anfordernde Einheit in Schritt 108 ausgegeben, wie es nachfolgend näher beschrieben wird. Falls sich die Daten nicht in einer dieser Positionen befinden, bestimmt Schritt 102, ob sie die Daten in dem Rückgabepuffer 16 oder der Lesewarteschlange 26 befinden. Falls sich die Daten in einer dieser Position befinden, wird die Kohärenzanforderung in Schritt 106 erneut ausgeführt. Hier wird der Prozeß von 3 und beginnend mit Schritt 42 wiederholt. Die Existenz der Daten in dem Rückgabepuffer 16 oder der Lesewarteschlange 26 zeigt an, daß eine andere Entität, wie zum Beispiel CPU 20 oder CPU 22, derzeit diese Daten besitzt und daher Priorität über die anfordernde Entität hat. Daher ermöglicht es das Wiederholen der Schritte von 3, beginnend mit Schritt 42, der Entität, die im Besitz der Daten ist, die Daten zu verarbeiten oder zu speichern, bevor dieselben an die anfordernde Entität ausgegeben werden. Als solches wird es den Daten bezüglich des Rückgabepuffers 16 erlaubt, über den Datenbus 130C von 2 zu ihrem Bestimmungsort bewegt zu werden. Gleichartig dazu, falls sich die Daten in der Lesewarteschlange 26 befinden, werden die Daten entlang dem Datenbus 130D von 2 zu den CPUs 20 und 22 ausgegeben. Falls sich die Daten nicht in dem Rückgabepuffer oder der Lesewarteschlange befinden, endet der Prozeß bei Schritt 104. Falls Schritt 104 erreicht wird, wird bestimmt, daß sich die angeforderten Daten nicht in der Speicherarchitektur 10 befinden, und durch die Kohärenzantwortsteuerung 34 wird ein Treffer an die anfordernde Entität ausgegeben, wie es nachfolgend näher beschrieben wird.
  • Falls sich die Daten mit Bezugnahme auf 5 in der Räumungswarteschlange 24, der CPU 20, der CPU 22 oder dem Speicher 32 befinden, werden die empfangenen Signale durch die Kohärenzantwortsteuerung 34 verarbeitet, zum Erzeugen eines geeigneten Ausgangssignals. Das Ausgangssignal von der Kohärenzantwortsteuerung basiert auf den Zustand der Datenanforderung und dem Zustand der gespeicherten Daten. Wie es in 5 gezeigt ist, kann der Zustand der Datenanforderung entweder eine Lese- oder eine Lesen-Und-Für-Ungültig-Erklären-Typ-Anforderung sein. Eine Leseanforderung zeigt an, daß die anfordernde Entität die Daten nur lesen möchte. Eine Lesen-Und-Für-Ungültig-Erklären-Anforderung zeigt an, daß die anfordernde Entität die Daten nicht nur lesen, sondern auch modifizieren möchte. Der Zustand der gespeicherten Daten kann gemeinschaftlich verwendet, privat oder privat geändert sein. Falls die Daten gemeinschaftlich verwendet werden, sind Kopien der Daten in mehreren oder gemeinschaftlich verwendeten Positionen vorhanden. Falls die Daten privat sind, ist nur an einer Position eine Kopie der Daten vorhanden. In dem privaten Zustand sind die Daten in einer nichtmodifizierten Version von derjenigen, vorhanden, die in dem Hauptspeicher vorhanden ist. Falls die Daten, wie es erwähnt wurde, in einem privaten geänderten Zustand gehalten werden, sind die Daten modifiziert von denjenigen, die in dem Hauptspeicher gespeichert sind, und werden ausschließlich an einer Position gehalten.
  • Wie es oben mit Bezugnahme auf Schritt 52 erörtert wurde, wurde folglich bestimmt, daß die Daten in der Räumungswar teschlange 24, der CPU 20, der CPU 22 oder dem Speicher 32 vorhanden sind. Falls die Daten mit Bezug auf 5 in einem gemeinschaftlich verwendeten Zustand an einer dieser Position gehalten werden, und die Anforderung nur lautet, die Daten zu lesen, gibt die Kohärenzantwortsteuerung 34 über den Hauptbus 12 einen Treffer (Hit) an die anfordernde Entität aus, der anzeigt, daß die Speicherarchitektur 10 die Daten hat. Der Treffer zeigt an, daß Daten vorhanden sind, aber nicht modifiziert werden können, da dieselben in einem gemeinschaftlich verwendeten Zustand sind. Folglich gibt der Teil der Speicherarchitektur 10, der die Daten besitzt, die Daten nicht an die anfordernde Entität aus. Falls die Anforderung jedoch eine Lesen-Und-Für-Ungültig-Erklären-Anforderung ist, zeigt die Kohärenzantwortsteuerung 34 dem Hauptbus 12 einen Fehlschlag (Miss) an. Ein Fehlschlag signalisiert der anfordernden Entität, daß kein Abschnitt der Speicherarchitektur 10 die angeforderten Daten hat. Es ist daher erforderlich, daß die anfordernde Entität irgendwo anders sucht, um die Daten zu finden. Falls die Daten durch irgendeinen Abschnitt der Speicherarchitektur 10 privat gespeichert werden, wird gleichermaßen durch die Kohärenzantwortsteuerung 34 über den Hauptbus 12 ein Fehlschlag an die anfordernde Entität ausgegeben. Die Gründe zum Liefern eines Fehlschlags in diesen Fällen werden für einen Fachmann auf diesem Gebiet ohne weiteres klar sein.
  • Falls die Daten in der Speicherarchitektur 10 in einem privaten geänderten Zustand gehalten werden, wird durch die Kohärenzantwortsteuerung 34 über den Hauptbus 12 eine Hitm-Antwort (Treffer/Modifizieren-Antwort) an die anfordernde Entität ausgegeben, unabhängig davon, ob die Datenanforderung eine Lese- oder eine Lesen-Und-Für-Ungültig-Erklären-Anforderung ist. Die Hitm-Antwort zeigt an, daß die Daten in einem der Abschnitte der Speicherarchitektur 10 vorhanden sind, und daß die Daten modifiziert werden können. Diese Antwort kann gegeben werden, da die Daten modifiziert wurden und nur in einer Position in dem modifizierten Zustand vorhanden sind.
  • Wenn eine Treffer/Modifizieren-Antwort gegeben wird, können die Daten von ihrer Position an die anfordernde Entität ausgegeben werden. Falls sich die Daten folglich in dem Cache 220 oder 222 befinden, werden die Daten in Schritt 52 über den Bus 130A an den Bus 12 und schließlich an die anfordernde Entität ausgegeben. Falls die Daten durch den L2-Cache 18 gehalten werden, werden die Daten in Schritt 52 über die Kohärenzwarteschlange 141 an den Hauptbus 12 und schließlich an die anfordernde Entität ausgegeben.

Claims (32)

  1. Speicherarchitektur (10), die folgende Merkmale umfaßt: zumindest einen Prozessor (20, 22), der einen Speicherbereich aufweist; einen Cache-Speicher (18), der in Kommunikation mit zumindest einen Prozessor (20, 22) ist, um für den zumindest einen Prozessor zwischenzuspeichern; einen Hauptspeicher (12), der in Kommunikation mit dem zumindest einen Prozessor (20, 22) und dem Cache-Speicher (18) ist, zum Übertragen und Empfangen von Daten zu und von dem Cache-Speicher und dem zumindest einen Prozessor (20, 22); eine Kohärenzsteuerung (14), die in Kommunikation mit dem Cache (18) und dem zumindest einem Prozessor (20, 22) ist, und konfiguriert ist zum Bestimmen einer Existenz oder Position von Daten in dem Cache oder Speicherbereich ansprechend auf eine Datenanforderung von dem Hauptbus (12) und Ausgeben eines Ergebnisses, das die Existenz oder Position der Daten an dem Hauptbus (12) anzeigt.
  2. Speicherarchitektur gemäß Anspruch 1, die ferner einen Rückgabepuffer (16) umfaßt, der in Kommunikation mit dem Cache (18) und dem zumindest einen Prozessor (20, 22) ist, und konfiguriert ist, um eine Datenübertragung von dem Hauptbus (12) zu dem Cache (18) und dem zumindest einem Prozessor (20, 22) zu puffern, wobei die Kohärenzsteuerung (14) in Kommunikation mit dem Rückgabepuffer (16) ist, und konfiguriert ist, um die Existenz oder Position der Daten in dem Rückgabepuffer (16) zu bestimmen.
  3. Speicherarchitektur gemäß Anspruch 1 oder 2, die ferner folgende Merkmale umfaßt: eine Räumungswarteschlange (24), die mit dem Cache (18) kommuniziert, und konfiguriert ist, um Daten von dem Cache (18) zu räumen; wobei die Kohärenzsteuerung (14) in Kommunikation mit der Räumungswarteschlange (24) ist, und konfiguriert ist, um die Existenz oder Position der Daten in der Räumungswarteschlange (24) zu bestimmen.
  4. Speicherarchitektur gemäß einem der Ansprüche 1 bis 3, die ferner folgende Merkmale umfaßt: eine Lesewarteschlange (26), die mit dem Cache kommuniziert und konfiguriert ist, um Daten von dem Cache (18) an eine anfordernde Entität auszugeben; wobei die Kohärenzsteuerung (14) konfiguriert ist, um mit der Lesewarteschlange (26) zu kommunizieren, um die Existenz oder Position der Daten in der Lesewarteschlange (26) zu bestimmen.
  5. Speicherarchitektur gemäß einem der Ansprüche 1 bis 4, die ferner folgende Merkmale umfaßt: eine Mehrzahl von Cacheadreßkennungen (30), die Daten darstellen, die in dem Cache (18) gespeichert sind; und eine Kennungspipeline (28), die konfiguriert ist, um die Cacheadreßkennungen (30) mit einer Adresse der Daten zu vergleichen; wobei die Kohärenzsteuerung (14) konfiguriert ist, um die Adresse der Daten zu der Kennungspipeline (28) zu kommunizieren; und wobei die Kennungspipeline (28) konfiguriert ist, um der Kohärenzsteuerung (14) anzuzeigen, ob die Daten in dem Cache vorhanden sind, auf der Basis eines Vergleichs zwischen den Cacheadreßkennungen (30) und der Adresse der Daten.
  6. Speicherarchitektur gemäß einem der Ansprüche 1 bis 5, bei der die Kohärenzsteuerung (14) ferner folgende Merkmale umfaßt: eine Kohärenzanforderungseinrichtung (39); und eine Kohärenzanforderungswarteschlange (38); wobei die Kohärenzanforderungseinrichtung (39) konfiguriert ist, um eine Adresse der Daten an die Kohärenzanforderungswarteschlange (38) auszugeben; wobei die Kohärenzanforderungswarteschlange (38) konfiguriert ist, um die Adresse der Daten, die von der Kohärenzanforderungseinrichtung (39) empfangen wurden, an den zumindest einen Prozessor (20, 22) und den Cache (18) auszugeben; wobei der zumindest eine Prozessor (20, 22) und der Cache (18) konfiguriert sind, um die Adresse der Daten zu verwenden, die von der Kohärenzanforderungswarteschlange (38) empfangen werden, um die Existenz oder Position der Daten zu bestimmen; und wobei der zumindest eine Prozessor (20, 22) und der Cache (18) konfiguriert sind, um die Existenz oder Position der angeforderten Daten an die Kohärenzsteuerung (14) zu kommunizieren.
  7. Speicherarchitektur gemäß einem der Ansprüche 1 bis 6, bei der die Kohärenzsteuerung (14) ferner folgende Merkmale umfaßt: eine Kohärenzantwortsteuerung, die konfiguriert ist, um Kommunikationen von dem Cache (18) und dem zumindest einem Prozessor (20, 22) zu empfangen, die die Existenz oder Position der Daten in dem Cache (18) und dem Speicherbereich darstellen; eine Kohärenzanforderungseinrichtung (39), die auf eine Anforderung von dem Hauptbus (12) anspricht, um ansprechend auf die Datenanforderung eine Adresse der Daten auszugeben; eine Kohärenzanforderungswarteschlange (38), die auf die Adresse anspricht, die von der Kohärenzanforderungseinrichtung (39) ausgegeben wurde, um die Adresse zu speichern; eine Kohärenzantwortsteuerung (36), die auf die Kohärenzanforderungswarteschlange (38) anspricht, um einen Betrieb der Kohärenzantwortsteuerung (36) einzuleiten, um die Adresse der Daten von der Kohärenzanforderungswarteschlange (38) an den zumindest einen Prozessor (20, 22) und den Cache (18) auszugeben; und wobei der zumindest eine Prozessor (20, 22) und der Cache (18) auf die Adresse ansprechen, um die Existenz oder Position der Daten zu bestimmen, und die Existenz oder Position der Daten der Kohärenzantwortsteuerung (36) anzuzeigen.
  8. Speicherarchitektur gemäß Anspruch 7, die ferner folgende Merkmale umfaßt: einen Rückgabepuffer (16), der konfiguriert ist, um Daten zu Puffern, die von dem Hauptbus (12) an den Cache (18) und den zumindest einen Prozessor (20, 22) gesendet werden; wobei die Kohärenzanforderungswarteschlange (38) konfiguriert ist, um mit dem Rückgabepuffer (16) zu kommunizieren, um die Existenz oder Position der Daten in dem Rückgabepuffer (16) zu bestimmen.
  9. Speicherarchitektur gemäß einem der Ansprüche 1 bis 8, bei der: der zumindest eine Prozessor zwei Prozessoren (20, 22) umfaßt; der Cache (18) die beiden Prozessoren (20, 22) zwischenspeichert; und die Kohärenzsteuerung (14) konfiguriert ist, um mit den beiden Prozessoren (20, 22) zu kommunizieren, um eine Existenz oder Position der Daten in den beiden Prozessoren (20, 22) zu bestimmen.
  10. Speicherarchitektur gemäß einem der Ansprüche 1 bis 9, bei der: der Speicherbereich konfiguriert ist, um die Daten in einem gemeinschaftlich verwendeten, privaten oder privaten geänderten (dirty) Zustand zu speichern; wobei die Kohärenzsteuerung (14) konfiguriert ist, um: ein Trefferergebnis entlang dem Hauptbus (12) an eine anfordernde Entität auszugeben, falls die Daten gemeinschaftlich verwendet werden und die Datenanforderung eine Leseanforderung ist; ein Treffer/Modifizieren-Ergebnis an den Hauptbus (12) auszugeben, falls die Daten privat geändert sind; ein Fehlschlag-Ergebnis an den Hauptbus (12) auszugeben, falls die Daten privat sind; wobei ein Treffer/Modifizieren-Ergebnis anzeigt, daß eine anfordernde Entität die Daten modifizieren kann; wobei ein Treffer-Ergebnis anzeigt, daß die anfordernde Entität die Daten nur lesen kann; wobei ein Fehlschlag-Ergebnis anzeigt, daß die Daten nicht vorhanden sind; und wobei eine Leseanforderung anzeigt, daß die anfordernde Entität die Daten nur lesen möchte.
  11. Speicherarchitektur gemäß Anspruch 10, bei der die Kohärenzsteuerung (14) konfiguriert ist, um einen Fehlschlag an den Hauptbus (12) auszugeben, falls die Daten gemeinschaftlich verwendet sind und die Datenanforderung eine Lesen-Und-Für-Ungültig-Erklären-Anforderung ist, wobei eine Lesen-Und-Für-Ungültig-Erklären-Anforderung anzeigt, daß die anfordernde Entität die Daten modifizieren möchte.
  12. Speicherarchitektur gemäß einem der Ansprüche 1 bis 11, die ferner folgende Merkmale umfaßt: einen Rückgabepuffer (16), der die Datenübertragung von dem Hauptbus (12) zu dem Cache (18) und dem zumindest einen Prozessor (20, 22) puffert, wobei die Kohärenzsteuerung (14) konfiguriert ist, um mit dem Rückgabepuffer (16) zu kommunizieren, um die Existenz oder Position der Daten in dem Rückgabepuffer (16) zu bestimmen; und eine Lesewarteschlange (26), die konfiguriert ist, um Daten von dem Cache auszugeben, wobei die Kohärenzsteuerung (14) in Kommunikation mit der Lesewarteschlange (26) ist, um die Existenz oder Position der Daten in der Lesewarteschlange (26) zu bestimmen; wobei die Kohärenzsteuerung (14) konfiguriert ist, um die Existenz oder Position der Daten in der Lesewarteschlange (26), dem Rückgabepuffer (16), dem Speicherbereich und dem Cache (18) neu zu bestimmen, falls die Kohärenzsteuerung (14) bestimmt, daß die Daten in dem Rückgabepuffer (16) oder der Lesewarteschlange (26) sind.
  13. Speicherarchitektur, die folgende Merkmale umfaßt: zumindest eine Prozessoreinrichtung (20, 22) zum Speichern von Daten; eine Cache-Speichereinrichtung (18) zum Zwischenspeichern für die zumindest eine Prozessoreinrichtung (20, 22); eine Hauptbuseinrichtung (12) zum Kommunizieren mit der zumindest einen Prozessoreinrichtung (20, 22) und der Cacheeinrichtung (18); und eine Kohärenzsteuereinrichtung zum Kommunizieren mit der Cacheeinrichtung (18) und der zumindest einen Prozessoreinrichtung (20, 22), um eine Existenz oder Position von Daten in der Cacheeinrichtung (18) oder der zumindest einen Prozessoreinrichtung (20, 22) ansprechend auf eine Datenanforderung von der Hauptbuseinrichtung zu bestimmen.
  14. Verfahren zum Durchführen einer Kohärenzsteuerung (14) einer Speicherarchitektur (10), wobei das Verfahren folgende Schritte umfaßt: Empfangen einer Datenanforderung für Daten von einer anfordernden Entität entlang einem Hauptbus (12); Abfragen eines Cache (18) und eines Speicherbereichs eines Prozessors (20, 22) zum Bestimmen einer Existenz oder Position der Daten in dem Cache (18) oder dem Speicherbereich, wobei der Cache (18) für den Prozessor (20, 22) zwischenspeichert; und Ausgeben eines Ergebnisses an die anfordernde Entität entlang dem Hauptbus (12), ansprechend auf den Abfrageschritt.
  15. Verfahren gemäß Anspruch 14, bei dem der Abfrageschritt ferner das Abfragen eines Rückgabepuffers (16) umfaßt, der Daten an den Cache (18) zurückgibt.
  16. Verfahren gemäß Anspruch 15, bei dem der Abfrageschritt ferner das Abfragen einer Lesewarteschlange (26) umfaßt, die Daten von dem Zwischenspeicher (18) an den Prozessor (20, 22) oder den Hauptbus (12) ausgibt.
  17. Verfahren gemäß Anspruch 16, das ferner den Schritt des Durchführens einer zweiten Abfrage umfaßt, um die Existenz oder Position der Daten in dem Rückgabepuffer (16), der Lesewarteschlange (26), dem Speicherbereich und dem Cache (18) zu bestimmen, falls in dem Abfrageschritt bestimmt wird, daß die Daten in der Lesewarteschlange (26) oder dem Rückgabepuffer (16) vorhanden sind.
  18. Verfahren gemäß einem der Ansprüche 14 bis 17, das ferner folgende Schritte umfaßt: Bestimmen in dem Abfrageschritt, ob die Daten als gemeinschaftlich verwendet, privat oder privat geändert gespeichert sind; Bestimmen, ob die Datenanforderung eine Leseanforderung oder eine Lesen-Und-Für-Ungültig-Erklären-Anforderung ist; wobei die Leseanforderung anzeigt, daß die anfordernde Entität die Daten nur lesen möchte; wobei die Lesen-Und-Für-Ungültig-Erklären-Anforderung anzeigt, daß die anfordernde Entität die Daten modifizieren möchte; wobei gemeinschaftlich verwendet anzeigt, daß Kopien der Daten in einer Mehrzahl von Positionen vorhanden sind; wobei privat anzeigt, daß die Daten durch eine Entität in einem nicht modifizierten Zustand gehalten werden; und wobei privat geändert anzeigt, daß die Daten durch eine Entität in einen modifizierten Zustand gehalten werden.
  19. Verfahren gemäß Anspruch 18, bei dem der Ausgabeschritt ferner folgende Schritte umfaßt: Ausgeben eines Treffer-Ergebnisses in dem Ausgabeschritt, falls die Datenanforderung eine Leseanforderung ist und die Daten gemeinschaftlich verwendet werden; Ausgeben eines Modifizieren-Ergebnisses in dem Ausgabeschritt, falls die Daten privat sind; und Ausgeben eines Treffer/Modifizieren-Ergebnisses in dem Ausgabeschritt, falls die Daten privat geändert (dirty) sind; wobei das Fehlschlag-Ergebnis in dem Abfrageschritt anzeigt, daß die Daten nicht vorhanden sind; wobei das Treffer/Modifizieren-Ergebnis anzeigt, daß die anfordernde Entität die Daten modifizieren kann; wobei das Treffer/Modifizieren-Ergebnis anzeigt, daß die anfordernde Entität die Daten nur lesen kann.
  20. Verfahren gemäß Anspruch 19, bei dem der Ausgabeschritt ferner das Ausgeben eines Treffer-Ergebnisses umfaßt, falls die Daten gemeinschaftlich verwendet werden und die Datenanforderung eine Lesen-Und-Für-Ungültig-Erklären-Anforderung ist.
  21. Kohärenzsteuerung (14), die folgende Merkmale umfaßt: eine Kohärenzsteuervorrichtung, die konfiguriert ist, um mit einem Cache (18) und einem Prozessor (20, 22) zu kommunizieren, um eine Existenz oder Position von Daten in dem Cache (18) oder einem Speicherbereich des Prozessors (20, 22) ansprechend auf eine Datenanforderung von einem Hauptbus (12) zu bestimmen; wobei der Cache (18) für den Prozessor (20, 22) zwischenspeichert.
  22. Kohärenzsteuerung (14) gemäß Anspruch 21, wobei die Kohärenzsteuervorrichtung konfiguriert ist, um mit einem Rückgabepuffer (16) zu kommunizieren, der die Datenübertragung von dem Hauptbus (12) zu dem Cache (18) und dem Prozessor (20, 22) puffert, wobei die Kohärenzsteuervorrichtung konfiguriert ist, um mit dem Rückgabepuffer (16) zu kommunizieren, um die Existenz oder Position der Daten in dem Rückgabepuffer (16) zu bestimmen.
  23. Kohärenzsteuerung (14) gemäß Anspruch 21, bei der: die Kohärenzsteuervorrichtung konfiguriert ist, um mit einer Räumungswarteschlange (24) zu kommunizieren, die Daten von dem Cache (18) räumt; und die Kohärenzsteuervorrichtung konfiguriert ist, um mit der Räumungswarteschlange (24) zu kommunizieren, um die Existenz oder Position der Daten in der Räumungswarteschlange (24) zu bestimmen.
  24. Kohärenzsteuerung (14) gemäß Anspruch 21, bei der: die Kohärenzsteuervorrichtung konfiguriert ist, um mit einer Lesewarteschlange (26) zu kommunizieren, die Daten von dem Cache (18) an eine anfordernde Entität ausgibt; die Kohärenzsteuervorrichtung konfiguriert ist, um mit der Lesewarteschlange (26) zu kommunizieren, um die Existenz oder Position der Daten in der Lesewarteschlange (26) zu bestimmen.
  25. Kohärenzsteuerung (14) gemäß Anspruch 21, bei der die Kohärenzsteuervorrichtung konfiguriert ist, um mit zwei Prozessoren (20, 22) zu kommunizieren, für die durch den Cache (18) zwischengespeichert wird, wobei die Kohärenzsteuervorrichtung konfiguriert ist, um eine Existenz oder Position der Daten in den beiden Prozessoren (20, 22) zu bestimmen.
  26. Computerlesbare Speichervorrichtung, die Befehle umfaßt zum: Lesen einer Datenanforderung für Daten von einer anfordernden Entität entlang einem Hauptbus (12); Abfragen eines Caches (18) und eines Speicherbereichs eines Prozessors (20, 22) zum Bestimmen einer Existenz oder Position der Daten in dem Cache (18) oder dem Speicherbereich, wobei der Cache (18) für den Prozessor (20, 22) zwischenspeichert; und Ausgeben eines Ergebnisses an die anfordernde Entität entlang dem Hauptbus (12), ansprechend auf den Abfrageschritt.
  27. Computerlesbare Speichervorrichtung gemäß Anspruch 26, bei der die Befehle zum Abfragen ferner Befehle zum Abfragen eines Rückgabepuffers (16) umfassen, der Daten an den Cache (18) zurückgibt.
  28. Computerlesbare Speichervorrichtung gemäß Anspruch 27, bei der die Befehle zum Abfragen ferner Befehle zum Abfragen einer Lesewarteschlange (26) umfassen, die Daten von dem Cache (18) an den Prozessor (20, 22) oder den Hauptbus (12) ausgeben.
  29. Computerlesbare Speichervorrichtung gemäß Anspruch 28, die ferner Befehle zum Durchführen einer zweiten Abfrage zum Bestimmen der Existenz oder Position der Daten in dem Rückgabepuffer (16), der Lesewarteschlange (26), dem Speicherbereich und dem Cache (18) umfaßt, falls ansprechend auf die Befehle zum Abfragen bestimmt wird, daß die Daten in der Lesewarteschlange (26) oder dem Rückgabepuffer (16) vorhanden sind.
  30. Computerlesbare Speichervorrichtung gemäß einem der Ansprüche 26 bis 29, die ferner Befehle umfaßt zum: Bestimmen, ob die Daten als gemeinschaftlich verwendet, privat oder privat geändert (dirty) gespeichert sind, ansprechend auf die Befehle zum Abfragen; Bestimmen, ob die Datenanforderung eine Leseanforderung oder eine Lesen-Und-Für-Ungültig-Erklären-Anforderung ist; wobei die Leseanforderung anzeigt, daß die anfordernde Entität die Daten nur lesen möchte; wobei die Lesen-Und-Für-Ungültig-Erklären-Anforderung anzeigt, daß die anfordernde Entität die Daten modifizieren möchte; wobei gemeinschaftlich verwendet anzeigt, daß Kopien der Daten an einer Mehrzahl von Positionen vorhanden sind; wobei privat anzeigt, daß die Daten durch eine Entität in einem nichtmodifizierten Zustand gehalten werden; und wobei privat geändert (dirty) anzeigt, daß die Daten durch eine Entität in einem modifizierten Zustand gehalten werden.
  31. Computerlesbare Speichervorrichtung gemäß Anspruch 30, bei der die Befehle zum Ausgeben ferner Befehle umfassen zum: Ausgeben eines Treffer-Ergebnisses, falls die Datenanforderung eine Leseanforderung ist und die Daten gemeinschaftlich verwendet werden; Ausgeben eines Fehlschlag-Ergebnisses, falls die Daten privat sind; und Ausgeben eines Treffer/Modifizieren-Ergebnisses, falls die Daten privat geändert sind; wobei das Fehlschlag-Ergebnis ansprechend auf die Befehle zum Abfragen anzeigt, daß die Daten nicht vorhanden sind; wobei das Treffer/Modifizieren-Ergebnis anzeigt, daß die anfordernde Entität die Daten modifizieren kann; wobei das Treffer-Ergebnis anzeigt, daß die anfordernde Entität die Daten nur lesen kann.
  32. Computerlesbare Speichervorrichtung gemäß Anspruch 31, bei der die Befehle zum Ausgeben ferner Befehle zum Ausgeben eines Treffer-Ergebnisses umfassen, falls die Daten gemeinschaftlich verwendet werden und die Datenanforderung eine Lesen-Und-Für-Ungültig-Erklären-Anforderung ist.
DE10341563A 2002-12-23 2003-09-09 Kohärenzsteuerung für eine Cache-Speicherstruktur Expired - Fee Related DE10341563B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/327778 2002-12-23
US10/327,778 US7032077B2 (en) 2002-12-23 2002-12-23 Multiple cache coherency

Publications (2)

Publication Number Publication Date
DE10341563A1 true DE10341563A1 (de) 2004-07-15
DE10341563B4 DE10341563B4 (de) 2012-11-29

Family

ID=32594337

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10341563A Expired - Fee Related DE10341563B4 (de) 2002-12-23 2003-09-09 Kohärenzsteuerung für eine Cache-Speicherstruktur

Country Status (2)

Country Link
US (1) US7032077B2 (de)
DE (1) DE10341563B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008012979A1 (de) 2008-03-06 2009-09-10 Gip Ag Verfahren und Programm zum Bereitstellen von Datenkohärenz in Netzwerken

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1361518B1 (de) * 2002-05-10 2013-08-07 Texas Instruments Incorporated Verminderung der Zugangsgesuche eines TAG-RAM Speichers und Erhöhung der Cachespeichergeschwindigkeit während eines Cache-Fehltreffers
US20130159630A1 (en) * 2011-12-20 2013-06-20 Ati Technologies Ulc Selective cache for inter-operations in a processor-based environment
US9304926B2 (en) 2013-07-23 2016-04-05 Arm Limited Coherency control message flow
US10795819B1 (en) * 2019-06-26 2020-10-06 Intel Corporation Multi-processor system with configurable cache sub-domains and cross-die memory coherency

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5490261A (en) * 1991-04-03 1996-02-06 International Business Machines Corporation Interlock for controlling processor ownership of pipelined data for a store in cache
US5642494A (en) * 1994-12-21 1997-06-24 Intel Corporation Cache memory with reduced request-blocking
US6047357A (en) * 1995-01-27 2000-04-04 Digital Equipment Corporation High speed method for maintaining cache coherency in a multi-level, set associative cache hierarchy
US6088769A (en) * 1996-10-01 2000-07-11 International Business Machines Corporation Multiprocessor cache coherence directed by combined local and global tables
US5895487A (en) * 1996-11-13 1999-04-20 International Business Machines Corporation Integrated processing and L2 DRAM cache
US6430654B1 (en) * 1998-01-21 2002-08-06 Sun Microsystems, Inc. Apparatus and method for distributed non-blocking multi-level cache
US6272602B1 (en) * 1999-03-08 2001-08-07 Sun Microsystems, Inc. Multiprocessing system employing pending tags to maintain cache coherence
US6385694B1 (en) * 1999-06-25 2002-05-07 International Business Machines Corporation High performance load instruction management via system bus with explicit register load and/or cache reload protocols
US6484238B1 (en) * 1999-12-20 2002-11-19 Hewlett-Packard Company Apparatus and method for detecting snoop hits on victim lines issued to a higher level cache
DE60041444D1 (de) * 2000-08-21 2009-03-12 Texas Instruments Inc Mikroprozessor
US20020169935A1 (en) * 2001-05-10 2002-11-14 Krick Robert F. System of and method for memory arbitration using multiple queues

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102008012979A1 (de) 2008-03-06 2009-09-10 Gip Ag Verfahren und Programm zum Bereitstellen von Datenkohärenz in Netzwerken

Also Published As

Publication number Publication date
US20040123034A1 (en) 2004-06-24
US7032077B2 (en) 2006-04-18
DE10341563B4 (de) 2012-11-29

Similar Documents

Publication Publication Date Title
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69628127T2 (de) Verfahren und Gerät um die Kohärenz in einem Multiprozessorsystem anzuzeigen
DE10394081B4 (de) Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE69628493T2 (de) Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert
DE69531933T2 (de) Busarchitektur in hochgradiger pipeline-ausführung
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE10393919B4 (de) Spekulative verteilte Konfliktauflösung für ein Cache-Kohärenzprotokoll
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69636452T2 (de) Mehrprozessor-cachespeicherkohärenzprotokoll für einen lokalbus
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE69721891T2 (de) Deterministisches Kohärenzprotokoll für verteilten Multicache-Speicher
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE3439302C2 (de)
DE10316725B4 (de) Datenverwaltungsverfahren für ein Distributed Shared Memory-System
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112008002018T5 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20130301

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20150401