DE10341563A1 - Mehrfachcachekohärenz - Google Patents
Mehrfachcachekohärenz Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped 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 Speicherarchitektur10 gezeigt, mit einer Kohärenzsteuerung gemäß darstellenden Ausführungsbeispielen. Bei dem in1 gezeigten Ausführungsbeispiel umfaßt die Speicherarchitektur 10 im allgemeinen eine Kohärenzsteuerung14 , einen Rückgabepuffer16 , einen L2-Cache18 , eine CPU20 und eine CPU22 . Außerdem ist ein Hauptbus12 vorgesehen, der eine Adreß- und Datenübertragung zwischen der Speicherarchitektur10 und externen Komponenten (nicht dargestellt) ermöglicht, wie zum Beispiel anderen Speicher- oder Verarbeitungsarchitekturen. Die Kohärenzsteuerung14 kommuniziert vorzugsweise mit dem Hauptbus und Elementen der Speicherarchitektur10 , wie zum Beispiel dem Rückgabepuffer16 , dem L2-Cache18 und den CPUs20 und22 , 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 Speicherarchitektur10 befinden, über den Hauptbus12 an eine anfordernde Entität geliefert werden, die außerhalb der Speicherarchitektur10 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 Speicherarchitektur10 näher beschrieben. In2 stellen CPUs20 und22 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-Cache220 und222 erster Ordnung zum Zwischenspeichern von Lese- und Schreibdaten von jeder jeweiligen CPU20 und22 . Die Caches220 und222 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 CPUs20 und22 und auch den Caches220 und222 kopiert. Der L2-Cache18 umfaßt im allgemeinen eine Räumungswarteschlange24 , eine Lesewartesschlange26 , eine Kohärenzwarteschlange141 , eine Kennungspipeline28 , L2-Kennungen30 und einen Speicher32 . Es sollte jedoch klar sein, daß durch darstellende Ausführungsbeispiele andere Cachearchitekturen verwendet werden können. Der Speicher32 ist der Speicher, wo der L2-Cache Lese- und Schreibdaten von den CPUs20 und22 speichert. Der Speicher32 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-Cache18 maximiert. Die Räumungswarteschlange24 wirkt als ein Puffer zum Räumen geänderter oder modifizierter Zeilen von dem Speicher32 zurück zu den CPUs20 oder22 oder einem anderen Hauptspeicher. Die Räumungswarteschlange24 arbeitet vorzugsweise mit der Kennungspipeline28 , um Daten von dem L2-Speicher32 zu spülen. Die Kohärenzwarteschlange141 arbeitet in Verbindung mit der Kohärenzsteuerung14 , 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-Cache18 temporär speichert, die durch die CPUs20 oder22 gelesen werden. Die Lesewarteschlange26 speichert temporär zumindest eine Zeile von dem Speicher32 , bevor dieselbe an ihren Bestimmungsort ausgegeben wird. Dies trägt dazu bei, den Hauptbus12 und andere Busse für die Datenlieferung und -übertragung frei zu machen. - Die Kennungspipeline
28 arbeitet in Verbindung mit L2-Kennungen30 zum Bestimmen, ob sich angeforderte Cachezeilen in dem Speicher32 befinden. L2-Kennungen30 enthalten Kennungen aller Daten, die in dem Speicher32 gespeichert sind. Falls die angeforderte Cachezeile und die Kennungszeile eines Cacheeintrags übereinstimmen, wird die Anforderung an die Lesewarteschlange26 weitergeleitet, zum Ausgeben der zugeordneten Daten an die anfordernde Entität. - Der Hauptbus
12 liefert eine Adreß- und Datenkommunikation zwischen der Speicherarchitektur10 und Geräten außerhalb derselben. Externe Geräte können jede bekannte oder neuartige Verarbeitungs- oder Speicherentität umfassen. Der Rückgabepuffer16 puffert Daten, die von dem Hauptbus12 zu der CPU20 , CPU22 oder dem L2-Cache18 zurückkehren, und kann ein McKinley-Schnittstellenblock (MIB = McKinley Interface block) oder ein anderer Puffer sein. - Mit weiterer Bezugnahme auf
2 wird die Kohärenzsteuerung14 näher beschrieben. Die Kohärenzsteuerung14 kann mit dem L2-Cache18 auf dem Chip sein, oder kann getrennt von dem L2-Cache18 sein. Die Kohärenzsteuerung14 kommuniziert mit dem Rückgabepuffer 16, dem L2-Cache18 , der CPU20 und der CPU22 , um die Existenz und Position angeforderter Daten innerhalb der Speicherarchitektur10 zu bestimmen. Falls dieselben gefunden werden, ermöglicht die Kohärenzsteuerung14 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ärenzsteuerung14 eine Kohärenzantwortsteuerung34 , eine Kohärenzantwortsteuerung36 , eine Kohärenzanforderungswarteschlange38 und eine Kohärenzanforderungseinrichtung39 . Die Kohärenzanforderungseinrichtung39 überwacht den Hauptbus12 nach Datenanforderungen, die entlang demselben übertragen werden. Auf das Empfangen einer Datenanforderung von einer anfordernden Entität entlang dem Hauptbus12 hin überträgt die Kohärenzanforderungseinrichtung Adreßinformationen der Daten an die Kohärenzanforderungswarteschlange38 . - Die Kohärenzanforderungswarteschlange
38 ist ein Puffer, der Datenanforderungen von der Kohärenzanforderungseinrichtung39 beibehält und die Adreßinformationen an Entitäten in der Speicherarchitektur10 ausgibt. Die Kohärenzanforderungswarteschlange38 gibt die Adreßinformationen ansprechend auf die Kohärenzanforderungssteuerung36 aus. - Die Kohärenzanforderungssteuerung
36 kommuniziert mit der Kohärenzanforderungswarteschlange38 zum Anweisen der Kohärenzanforderungswarteschlange38 , Anforderungen an die Speicherarchitektur10 auszugeben. Außerdem kommuniziert die Kohärenzanforderungssteuerung36 mit der Kohärenzantwortsteuerung34 , um den Betrieb der Kohärenzantwortsteuerung34 einzuleiten und eine Rückkopplung von derselben zu empfangen. - Die Kohärenzantwortsteuerung
34 empfängt ein Eingangssignal von der CPU20 , der CPU22 , der Kennungspipeline28 , der Räumungswarteschlange24 , der Lesewarteschlange26 und dem Rückgabepuffer16 zum Bestimmen der Position von Daten, die von einer anfordernden Entität in einer externen Position von der Speicherarchitektur10 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 tektur10 gesendet, die mit dem Hauptbus12 verbunden ist. Die Datenanforderung wird von der Kohärenzanforderungseinrichtung39 empfangen. Die Kohärenzanforderungseinrichtung39 gibt wiederum die Adresse der Datenanforderung an die Kohärenzanforderungswarteschlange38 aus. Die Kohärenzanforderungswarteschlange38 puffert diese Adresse vor der Eingabe in die Speicherarchitektur10 . Das Puffern durch die Anforderungswarteschlange ermöglicht es, daß mehrere Adressen unterschiedlicher Datenanforderungen gespeichert werden, bevor dieselben an die Speicherarchitektur10 ausgegeben werden. - Auf den Empfang der Adresse von der Kohärenzanforderungseinrichtung
39 hin kommuniziert die Kohärenzanforderungswarteschlange38 in Schritt 42 ihre Erfassung der Adresse an die Kohärenzanforderungssteuerung36 . Die Kohärenzanforderungssteuerung36 weist die Kohärenzantwortsteuerung34 an, das Überwachen des Rückgabepufferübereinstimmungssignals26 , des CPU-Übereinstimmungssignals62 , der L1-Kohärenzantwort64 , der L2-Kohärenzantwort66 , der Räumungsübereinstimmung68 , der Leseübereinstimmung70 , des CPU-Signals72 und des CPU-Signals74 zu beginnen. Die Kohärenzantwortsteuerung34 ü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ückgabepuffer16 befinden, gibt der Rückgabepuffer16 ein Rückgabepufferübereinstimmungssignal60 aus, um die Kohärenzantwortsteuerung34 anzuweisen, daß sich die angeforderten Daten in demselben befinden. - Nachfolgend wird in Schritt 46 die Adresse entlang dem Adreßbus
80 an die Kennungspipeline28 ausgegeben. Hier vergleicht die Kennungspipeline28 die Adreßinformationen mit dem L2-Kennungen30 , um zu bestimmen, ob sich die angeforderten Daten in dem Speicher32 befinden. Gleichermaßen wird die Adresse an die CPU20 und die CPU22 ausgegeben, um zu bestimmen, ob sich die angeforderten Daten in dem Cache-Speicher220 und222 der CPU20 beziehungsweise CPU22 befinden. Falls ein Cache220 oder222 die angeforderten Daten nicht enthält, informiert die jeweilige CPU die Kohärenzantwortsteuerung34 über jeweilige CPU-Signale72 bzw.74 entsprechend. Hier umgeht der Cache die Kennungspipeline und gibt die Signale72 und74 direkt an die Kohärenzantwortsteuerung34 aus. Dies ermöglicht es dem Kohärenzschema, das Durchsuchen des Rests der Speicherarchitektur10 fortzusetzen. Falls herausgefunden wird, daß sich die angeforderten Daten in dem Speicher32 befinden, wird das L2-Kohärenzantwortsignal66 an die Kohärenzantwortsteuerung34 ausgegeben, um die Existenz der Daten in demselben anzuzeigen. - Bei einem bevorzugten Ausführungsbeispiel werden die CPUs
20 und22 durch speziell zugewiesene Caches220 beziehungsweise222 zwischengespeichert. Falls bestimmt wird, daß sich die Daten in denselben befinden, informieren die CPUs20 und22 die Kennungspipeline28 über die Existenz der angeforderten Daten. Die Kennungspipeline28 gibt dann das L1-Kohärenzantwortsignal64 aus, um die Kohärenzantwortsteuerung34 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äumungswarteschlange24 und die Lesewarteschlange26 ausgegeben. Die Räumungswarteschlange24 und die Lesewarteschlange26 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äumungswarteschlange24 oder der Lesewarteschlange26 befinden, wird das jeweilige Räumungsübereinstimmungssignal68 oder das Leseübereinstimmungssignal70 an die Kohärenzantwortsteuerung34 ausgegeben. - In Schritt 50 verarbeitet die Kohärenzantwortsteuerung
34 jedes empfangene Rückgabepufferübereinstimmungssignal60 , CPU-Übereinstimmungssignal62 , L1-Kohärenzantwort64 , L2-Kohärenzantwort66 , Räumungsübereinstimmung68 , Leseübereinstimmung70 , CPU-Signal72 oder CPU-Signal74 . Mit Bezugnahme auf4 werden die Antworten auf die Kohärenzantwortsteuerung34 verarbeitet, beginnend mit Schritt 100, wo bestimmt wird, ob sich die angeforderten Daten in der Räumungswarteschlange24 , der CPU20 , der CPU22 oder dem Speicher32 befinden. Falls sich die Daten in einer dieser Positionen befinden wird eine Antwort durch den Hauptbus12 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ückgabepuffer16 oder der Lesewarteschlange26 befinden. Falls sich die Daten in einer dieser Position befinden, wird die Kohärenzanforderung in Schritt 106 erneut ausgeführt. Hier wird der Prozeß von3 und beginnend mit Schritt 42 wiederholt. Die Existenz der Daten in dem Rückgabepuffer16 oder der Lesewarteschlange26 zeigt an, daß eine andere Entität, wie zum Beispiel CPU20 oder CPU22 , derzeit diese Daten besitzt und daher Priorität über die anfordernde Entität hat. Daher ermöglicht es das Wiederholen der Schritte von3 , 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ückgabepuffers16 erlaubt, über den Datenbus130C von2 zu ihrem Bestimmungsort bewegt zu werden. Gleichartig dazu, falls sich die Daten in der Lesewarteschlange26 befinden, werden die Daten entlang dem Datenbus130D von2 zu den CPUs20 und22 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 Speicherarchitektur10 befinden, und durch die Kohärenzantwortsteuerung34 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äumungswarteschlange24 , der CPU20 , der CPU22 oder dem Speicher32 befinden, werden die empfangenen Signale durch die Kohärenzantwortsteuerung34 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 in5 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 CPU20 , der CPU22 oder dem Speicher32 vorhanden sind. Falls die Daten mit Bezug auf5 in einem gemeinschaftlich verwendeten Zustand an einer dieser Position gehalten werden, und die Anforderung nur lautet, die Daten zu lesen, gibt die Kohärenzantwortsteuerung34 über den Hauptbus12 einen Treffer (Hit) an die anfordernde Entität aus, der anzeigt, daß die Speicherarchitektur10 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 Speicherarchitektur10 , 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 Hauptbus12 einen Fehlschlag (Miss) an. Ein Fehlschlag signalisiert der anfordernden Entität, daß kein Abschnitt der Speicherarchitektur10 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 Speicherarchitektur10 privat gespeichert werden, wird gleichermaßen durch die Kohärenzantwortsteuerung34 über den Hauptbus12 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ärenzantwortsteuerung34 über den Hauptbus12 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 Speicherarchitektur10 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 oder222 befinden, werden die Daten in Schritt 52 über den Bus130A an den Bus12 und schließlich an die anfordernde Entität ausgegeben. Falls die Daten durch den L2-Cache18 gehalten werden, werden die Daten in Schritt 52 über die Kohärenzwarteschlange141 an den Hauptbus12 und schließlich an die anfordernde Entität ausgegeben.
Claims (32)
- 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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.
- 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.
- 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.
- 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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. - 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.
- 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.
- 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.
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)
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)
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)
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 |
-
2002
- 2002-12-23 US US10/327,778 patent/US7032077B2/en not_active Expired - Fee Related
-
2003
- 2003-09-09 DE DE10341563A patent/DE10341563B4/de not_active Expired - Fee Related
Cited By (1)
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 |