-
ALLGEMEINER STAND DER
TECHNIK
-
1. Erfindungsgebiet
-
Die
Erfindung bezieht sich allgemein auf ein Cache-Speichermanagement
und insbesondere auf die Bereitstellung von geordneten Speichern
für ein gemeinsam
benutztes verteiltes Cache-Speichersystem
in einem ungeordneten Netzwerk.
-
2. Hintergrundinformation
-
Es
ist bekannt, einen schnellen Cache-Speicher zwischen einem Prozessor
und einem langsamen Hauptspeicher einzusetzen, um die durchschnittliche
Zugriffszeit auf den langsamen Hauptspeicher zu verbessern. Durch
den Einsatz von Cache-Speichern kann die Ausführungsleistung eines Prozessors
verbessert werden. Ursprünglich
lag der Cache-Speicher vom Prozessor getrennt, wurde aber später infolge
des technologischen Fortschritts in den Prozessor integriert. Da
der Cache-Speicher heute ein integrales Teil des Prozessors ist,
konnten die Zugriffszeiten auf den Cache-Speicher weiter reduziert
werden.
-
Zwischen
dem Prozessor und dem Hauptspeicher wurden mehrere Cache-Speicherebenen eingeführt. Typisch
wurde der Cache-Speicher umso schneller, je näher er dem Prozessor war, während dagegen
seine Größe abnahm.
Anders ausgedrückt läßt sich
sagen, je größer der
Cache-Speicher und
je länger
die Zugriffszeit, umso weiter ist er vom Prozessor entfernt. Mehrere
Cache-Speicherebenen machten das Cache-Management jedoch kompliziert,
besonders dann, wenn Anweisungen sich verzweigten oder zu einer
anderen Anweisung oder Adresse im Speicher sprangen.
-
Ein
Speicher-Controller oder Cache-Controller, der innerhalb oder außerhalb
des Prozessors angeordnet sein kann, wurde für das Cache-Management des
zwischen dem Hauptspeicher und dem Prozessor liegenden Cache-Speichers
eingesetzt. Es wurden verschiedene Cache-Speichermanagement-Algorithmen eingeführt, um
die Benutzung des Cache-Speichers weitestgehend zu erhöhen und
die Anzahl der fehlgeschlagenen Cache-Zugriffe zu reduzieren, so
daß der
Prozessor genötigt
war, Daten/Anweisungen aus dem langsamen Hauptspeicher zu lesen oder
dieselben auf den langsamen Hauptspeicher zu schreiben. Cache-Kohärenzprotokolle
wurden eingeführt,
um durch Verfolgung des Zustands der gemeinsam nutzbaren Datenblöcke die Kohärenz der
in Cache-Speichern gespeicherten Daten aufrechtzuerhalten. Ferner
wurden andere Cache-Speichermanagement-Algorithmen eingeführt.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 stellt
ein Blockdiagramm eines typischen Computersystems dar, in dem die
Erfindung eingesetzt werden kann.
-
2A stellt
ein Blockdiagramm einer zentralen Verarbeitungseinheit dar, in der
die Erfindung eingesetzt werden kann.
-
2B stellt
ein Blockdiagramm einer zentralen Mehrprozessor-Verarbeitungseinheit
dar, in der die Erfindung eingesetzt werden kann.
-
3A stellt
ein Blockdiagramm einer Ausführungsform
eines Mehrprozessorsystems dar in dem die Erfindung eingesetzt werden
kann.
-
3B stellt
ein Blockdiagramm einer anderen Ausführungsform eines Mehrprozessorsystems dar,
in dem die Erfindung eingesetzt werden kann.
-
3C stellt
ein Blockdiagramm einer anderen Ausführungsform eines Mehrprozessorsystems dar,
in dem die Erfindung eingesetzt werden kann.
-
4 stellt
ein Blockdiagramm eines logisch gemeinsamen, physisch verteilten
Cache-Speichersystems
dar.
-
5A stellt
ein Diagramm typischer Felder einer markierten geordneten Speicheranforderung dar.
-
5B stellt
ein Diagramm typischer Felder einer CSA-Aktualisierung dar.
-
6A stellt
ein Blockdiagramm einer Cache-Speicherscheibe (cache memory slice)
dar.
-
6B stellt
ein Blockdiagramm einer Cache-Folgeanordnung (CSA – Cache
Sequence Array) dar.
-
7 stellt
ein Blockdiagramm mit einer beispielhaften In-Reihe-Ausführung einer
geordneten Speicheranforderung dar.
-
8 stellt
ein Ablaufdiagramm von Steuerfunktionen dar, die von der Steuerlogik
eines Requesters zur Unterstützung
von markierten geordneten Speicheranforderungen durchgeführt werden.
-
9A stellt
ein Ablaufdiagramm von Steuerfunktionen dar, die von der Steuerlogik
jeder Cache-Speicherscheibe durchgeführt werden, um zu bestimmen,
ob geordnete Speicheranforderungen verarbeitet werden können oder
nicht.
-
9B stellt
ein Ablaufdiagramm von Steuerfunktionen dar, die von der Steuerlogik
jeder Cache-Speicherscheibe zur Handhabung von Aktualisierungen
durchgeführt
werden.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
In
der folgenden ausführlichen
Beschreibung der Erfindung werden zahlreiche spezifische Details erklärt, um ein
gründliches
Verständnis
der Erfindung zu vermitteln. Für
einen Fachmann ist es jedoch offensichtlich, daß die Erfindung auch ohne diese
spezifischen Details praktiziert werden kann. In anderen Fällen wurden
Verfahren, Prozeduren, Komponenten und Schaltkreise nicht im Detail
beschrieben, um Aspekte der Erfindung nicht unnötig zu verschleiern.
-
Eine
Ausführungsform
der Erfindung beschreibt ein System mit einer Mehrzahl von Prozessoren,
die sich ein logisch gemeinsames, aber physisch verteiltes Cache
teilen. Die Mehrzahl der Prozessoren kommuniziert mit den physisch
verteilten Caches über
ein Verbindungsnetzwerk. Das Verbindungsnetzwerk ist ein ungeordnetes
Netzwerk, indem die Reihenfolge der Anforderungen eines Prozessors
oder Caches (des Requesters) an das gleiche oder an andere Caches
nicht eingehalten wird. Auch die Reihenfolge der Nachrichten, die
ein Cache über
das Verbindungsnetzwerk an ein anderes Cache sendet, wird vom Netzwerk
nicht eingehalten. Es kann jedoch sein, daß die Nachrichten in der gleichen Reihenfolge,
in der sie von einem Requester gesendet werden, ausgeführt werden
sollen. Diese Nachrichten können
als geordnete Anforderungen bezeichnet werden. Nachrichten, die
nicht folgerichtig ausgeführt
werden müssen,
können
als ungeordnete Anforderungen bezeichnet werden. Eine Speicheranforderung
eines Requesters kann eine geordnete oder eine ungeordnete Speicheranforderung
sein.
-
Ein
Subsatz von geordneten Anforderungen ist eine geordnete Speicheranforderung.
Eine unten näher
beschriebene geordnete Speicheranforderung ist eine Speicheranforderung
eines Requesters, die mit Bezug auf andere von einem Requester ausgegebenen
geordneten Anforderungen folgerichtig auszuführen ist. Frühere geordnete
Speicheranforderungen sind zu verarbeiten, bevor eine aktuelle geordnete
Speicheranforderung verarbeitet werden kann. Das heißt, die
aktuelle geordnete Speicheranforderung ist zu verarbeiten, bevor
spätere
geordnete Speicheranforderungen verarbeitet werden. Eine ungeordnete
Speicheranforderung ist eine Speicheranforderung eines Requesters,
die mit Bezug auf andere geordnete Speicheranforderungen des Requesters
außerhalb
der Reihenfolge ausgeführt
werden kann.
-
Der
logisch gemeinsame Cache-Speicher kann partitioniert werden, damit
bestimmte Adressblöcke
des Cache-Speichers von verschiedenen Teilen des physisch verteilten
Cache-Speichers
gemanagt werden können.
-
In
einer anderen Ausführungsform
bezieht sich das Cache-Management der logisch gemeinsam benutzten
Cache-Adressen auf die Reihenfolgeanforderungen, die bestimmte Speicherkonsistenzmodelle
an die Verarbeitung bestimmter Speicher aus dem Prozessor in den
Hauptspeicher stellen. Bestimmte Speicher, die eine spezielle folgerichtige Verarbeitung
erfordern, werden in dieser Schrift als „geordnete Speicher" oder „geordnete
Speicheranforderungen" bezeichnet.
In anderen Fällen
wird vielleicht von den Speichern keine spezielle folgerichtige Verarbeitung
verlangt, und diese werden als „ungeordnete Speicher", „ungeordnete
Speicheranforderungen" oder „nicht-geordnete
Speicheranforderungen" bezeichnet.
Diese nicht-geordneten Speicheranforderungen können außerhalb der Reihenfolge ausgeführt oder
verarbeitet werden. Die Verarbeitung von geordneten Speicheranforderungen
setzt voraus, daß frühere geordnete
Speicheranforderungen, die vor einer aktuellen geordneten Speicheranforderung
ausgegeben wurden, vollständig
verarbeitet werden, bevor die Ausführung der aktuellen geordneten
Speicheranforderung stattfinden kann.
-
Ein
einfaches leistungsschwaches Verfahren zur Handhabung von geordneten
Speicheranforderungen eines Prozessors besteht darin, den Prozessor
so lange an der Ausgabe von neuen geordneten Speicheranforderungen
zu hindern, bis alle vorherigen geordneten Speicheranforderungen
dieses Prozessors vom Cache-Speichersystem verarbeitet wurden. In
einem Mehrprozessorsystem ist jedoch die Handhabung von geordneten
Speicheranforderungen einer Mehrzahl von Prozessoren nicht so einfach.
Das Verfahren zur Handhabung von geordneten Speicheranforderungen
einer Mehrzahl von Prozessoren in einem Mehrprozessorsystem ist
komplizierter.
-
In
einer erfindungsgemäßen Ausführungsform
wird das einfache leistungsschwache Verfahren zur Handhabung von
geordneten Speicheranforderungen in einem Mehrprozessorsystem dadurch
verbessert, daß zur
Verstärkung
der Parallelität
in einem Netzwerk von Prozessoren mit gemeinsamem Speichersystem
eine Mehrzahl von Prozessoren hinzugefügt werden, und eine kleine
Menge von Verfolgungshardware für
zusätzliche
Anforderungen verwendet wird. In einer weiteren erfindungsgemäßen Ausführungsform
wird infolge der Parallelität
der vernetzten Prozessoren die Handhabung mehrerer geordneter Speicheranforderungen
eines Prozessors im Netzwerk zur gleichen Zeit oder in überlappenden
Zeitintervallen ermöglicht.
Der eine Prozessor muß nicht warten,
bis frühere
geordnete Speicheranforderungen vollständig verarbeitet sind, bevor
er neue geordnete Speicheranforderungen über das ungeordnete Netzwerk
an das Cache-System
sendet.
-
Bezugnehmend
auf 1 ist ein Blockdiagramm eines typischen Computersystems 100 dargestellt,
in dem die Erfindung eingesetzt werden kann. Das Computersystem 100 enthält eine
zentrale Verarbeitungseinheit (CPU) 101; Eingabe-/Ausgabegeräte (I/O) 102 wie
Tastatur, Modem, Drucker, externe Speichergeräte und dergleichen; Überwachungsgeräte (M) 103 wie
eine CRT oder eine Grafikanzeige; und Speicher 104 zum
Speichern von Information. Die Überwachungsgeräte (M) 103 stellen
Computerinformation in einem menschlich verständlichen Format wie in Video-
oder Audioformaten bereit. Das System 100 kann aus einer
Anzahl verschiedener Systeme einschließlich eines Computersystems
oder eines Netzwerkverarbeitungssystems wie eines MAC (Media Access
Controller) bestehen.
-
Bezugnehmend
auf 2A ist ein Blockdiagramm einer zentralen Verarbeitungseinheit
(CPU) 101A dargestellt, in dem eine erfindungsgemäße Ausführungsform
eingesetzt werden kann. Die zentrale Verarbeitungseinheit 101A enthält einen
Mikroprozessor 201, einen Hauptspeicher 202 zum
Speichern von Programmanweisungen und ein Diskspeichergerät 203,
die wie gezeigt und dargestellt aneinander gekoppelt sind. Der Mikroprozessor 201 enthält eine
oder mehrere Ausführungseinheiten 210, mindestens
einen Cache-Speicher 212 und einen Cache-Controller 214.
Der Mikroprozessor 201 kann einen separaten Speicher-Controller 216 zur
Steuerung des Zugriffs auf den Hauptspeicher 202 enthalten.
In diesem Fall bildet der Speicher-Controller die Schnittstelle
zum Hauptspeicher 202 und zu den anderen Elementen des
Mikroprozessors 201. Idealerweise liest/schreibt die Ausführungseinheit 210 Daten
in den Cache-Speicher 212, ohne direkten Zugriff auf den
langsameren Hauptspeicher 202 nehmen zu müssen. Das
heißt,
es ist wünschenswert
für die
Ausführungseinheit,
Fehlzugriffe auf den Cache-Speicher 212 zu vermeiden. Die
Größe des Cache-Speichers 212 ist
physikalisch begrenzt. In einem Mehrprozessorsystem kann das System
jedoch so ausgelegt werden, daß Cache-Speicher 212 innerhalb
jedes Prozessors logisch gemeinsam benutzt werden können. In
einer weiteren Ausführungsform
können zusätzlich zu
dem einen oder den mehreren internen Cache-Speichern innerhalb eines
Prozessors ein oder mehrere externe Cache-Speicher bereitgestellt und
von der Mehrzahl von Prozessoren über ein Verbindungsnetzwerk
logisch gemeinsam in einem Mehrprozessorsystem benutzt werden.
-
Das
Diskspeichergerät 203 kann
eine Diskette, Zip-Disk, DVD-Disk Festplatte, überschreibbare optische Platte,
ein Flash-Speicher oder ein anderes nichtflüchtiges Speichergerät sein.
Der Mikroprozessor 201 und das Diskspeichergerät 203 können beide über einen
Speicherbus Information aus dem Speicher lesen und auf ihn schreiben.
Somit können sowohl
der Mikroprozessor 201 als auch das Diskspeichergerät 203 Speicherorte
innerhalb des Speichers 202 während der Programmausführung ändern. Um
dem Diskspeichergerät 203 Änderungen auf
dem Direktweg zu ermöglichen,
enthält
es einen Disk-Controller mit Direktspeicherzugriff, der Speichervorgänge im Speicher
vornehmen und dadurch Code modifizieren kann. Da der Controller
direkt auf den Speicher zugreifen kann, ist er ein Beispiel eines Direktspeicherzugriffsagenten
(Direct Memory Access (DMA)). Andere Geräte mit Direktzugriff zum Speichern
von Information im Speicher sind ebenfalls DMA-Agenten. Speicher 202 ist
typisch ein dynamischer Direktzugriffsspeicher (DRAM), es können aber
auch andere überschreibbare
Speichertypen verwendet werden.
-
Nach
anfänglicher
Ausführung
eines auf dem Diskspeichergerät 203 oder
in einer anderen Quelle wie I/O-Geräten 102 gespeicherten
Programms liest der Mikroprozessor 201 die auf dem Diskspeichergerät 203 oder
in einer anderen Quelle gespeicherten Programmanweisungen und schreibt sie
auf den Speicher 202. Eine oder mehrere Seiten oder Bruchteile
der im Speicher 202 gehaltenen Programmanweisungen werden
vom Mikroprozessor 201 gelesen (das heißt, "geholt"), um in einem Anweisungs-Cache (in 3 nicht dargestellt) gespeichert zu werden.
Einige der im Anweisungs-Cache gespeicherten Programmanweisungen
können
in eine (nicht dargestellte) Anweisungs-Pipeline zur Ausführung durch
den Mikroprozessor 201 eingelesen werden. Eine oder mehrere
Seiten oder Bruchteile der im Speicher 202 gehaltenen Daten
können
von dem Mikroprozessor 201 gelesen (das heißt „geholt") und in einem Daten-Cache
gespeichert werden. In einer weiteren Ausführungsform können sowohl
Anweisungen als auch Daten im gleichen Cache-Speicher gespeichert
werden.
-
Bezugnehmend
auf 2B ist ein Blockdiagramm eines Mehrprozessorsystems 101B dargestellt,
in dem eine erfindungsgemäße Ausführungsform
eingesetzt werden kann. Das Mehrprozessorsystem 101B kann
eine zentrale Mehrprozessorverarbeitungseinheit sein. Das Mehrprozessorsystem 101B enthält eine
Mehrzahl von Prozessoren 201A-201J. Jeder der
Mehrzahl von Prozessoren 201A-201J enthält eine
oder mehrere Ausführungseinheiten 210A-210N. Jeder
der Mehrzahl von Prozessoren 201A-201J kann ferner
eine oder mehrere Ebenen von internen Cache-Speicherscheiben (CMS) 212A-212M enthalten,
die an die eine oder die mehreren Ausführungseinheiten 210A-210J gekoppelt
sind. Jeder der Mehrzahl von Prozessoren 201A-201J kann
an I/O-Geräte
und/oder Überwachungsgeräte gekoppelt
sein.
-
Das
Mehrprozessorsystem 101B enthält ferner eine oder mehrere
Ebenen externer Cache-Speicherscheiben
(CMS) 212A'-212L', die über ein
Verbindungsnetzwerk 250 aneinander und an die Mehrzahl
der Prozessoren 201A-201J gekoppelt sind. Das
Mehrprozessorsystem 101B kann ferner einen oder mehrere
Hauptspeicher 202A-202K enthalten, die an das
Verbindungsnetzwerk 250 und an ein Diskspeichergerät 203 gekoppelt
sind, welches an das Verbindungsnetzwerk 250 gekoppelt
ist.
-
Die
Prozessoren 202A-202J, die Cache-Speicherscheiben 212A'-212L' und das Diskspeichergerät 203 können Information
direkt in die Hauptspeicher 202A-202K einlesen
und schreiben. Das heißt,
die Hauptspeicher 202A-202K können von den Prozessoren 202A-201J,
den Cache-Speicherscheiben 212A'-212L' und dem Diskspeichergerät 203 gemeinsam
benutzt werden. Außerdem
können
Nachrichten über
das Verbindungsnetzwerk 250 zwischen den Prozessoren 202A-201J,
den Hauptspeichern 202A-202K, den Cache-Speicherscheiben 212A'-212L' und dem Diskspeichergerät 203 verschickt
werden. Durch Verwendung von Messaging auf dem Verbindungsnetzwerk 250 kann
die folgerichtige Ausführung
oder Verarbeitung geordneter Speicheranforderungen im Mehrprozessorsystem 101B bereitgestellt
werden.
-
Bezugnehmend
auf 3A ist ein Blockdiagramm eines Mehrprozessorsystems 101C veranschaulicht.
Das Mehrprozessorsystem 101C kann enthalten: ein primäres Verbindungsnetzwerk 300A, eine
Mehrzahl von Prozessoren 301A-301J mit je einem
internen Cache-Speicher 312A, einen oder mehrere Cache-Speicher
einer höheren
Ebene 312B (auch "Höherebenen-Cache-Speicher"), die zwischen der
Mehrzahl von Prozessoren 301A-301J und dem Verbindungsnetzwerk 300A gekoppelt
sind, eine Ebene von Cache-Speicherscheiben 312C, die an
das Verbindungsnetzwerk 300A gekoppelt sind, eine weitere
Ebene von Cache-Speicherscheiben 312D,
die an das Verbindungsnetzwerk 300A gekoppelt sind, und
eine wiederum weitere Ebene von Cache-Speicherscheiben 312E,
die über
ein sekundäres
Verbindungsnetzwerk 300B an das primäre Verbindungsnetzwerk 300A gekoppelt
sind.
-
Das
Mehrprozessorsystem 101C kann ferner einen oder mehrere
Hauptspeicher 302A, 302B und/oder 302C enthalten.
Der Hauptspeicher 302A kann direkt an das primäre Verbindungsnetzwerk 300A gekoppelt
sein. Der Hauptspeicher 302B kann über das sekundäre Verbindungsnetzwerk 300B an das
primäre
Verbindungsnetzwerk 300A gekoppelt sein. Der Hauptspeicher 302C kann über das
sekundäre
Verbindungsnetzwerk 300B an eine Niederebenen-Cache-Speicherscheibe 312E und
das primäre Verbindungsnetzwerk 300A gekoppelt
sein.
-
Der
interne Cache-Speicher 312A, der oder die Cache-Speicher 312B einer
höheren
Ebene (Höherebenen-Cache-Speicher),
die Ebene der Cache-Speicherscheiben 312C, die Ebene der
Cache-Speicherscheiben 312D und die Ebene der Cache-Speicherscheiben 312E können eine
Ausführungsform
eines physisch verteilten Mehrebenen-Cache-Speichersystems bilden.
Durch die Cache-Speicherscheiben zusammen mit dem Hauptspeicher 302A, 302B wird
eine Ausführungsform
eines physisch verteilten Mehrebenen-Speichersystems bereitgestellt.
-
Die
Prozessoren, die Cache-Speicherscheiben und der Hauptspeicher können als
Knoten des Verbindungsnetzwerks betrachtet werden. Nachrichten können über das
Verbindungsnetzwerk von einem zu einem anderen Knoten fließen oder
von einem zu allen anderen Knoten gesendet werden. Die Topologie
des Mehrprozessorsystems 101C und der Verbindungsnetzwerke 300A und 300B kann
somit eine Busnetzwerk-Topologie, eine Baumnetzwerk-Topologie, eine
Ringnetzwerk-Topologie, eine Gitter- oder Maschennetzwerk-Topologie,
eine Torusnetzwerk-Topologie,
eine Hyperkubus-Netzwerk-Topologie, eine Vollverbindungs-Topologie
oder eine Kombination derselben sein.
-
Die
Verbindungsnetzwerke 300A und 300B können aus
Drahtspuren, die über
eine integrierte Schaltung geroutet werden, Bussen in der gleichen integrierten
Schaltung und/oder einem oder mehreren Schaltern zwischen Funktionsblöcken der
gleichen integrierten Schaltung bestehen. Die Verbindungsnetzwerke 300A und 300B können aber
auch aus Drahtspuren, die zwischen integrierten Schaltungen geroutet
werden, Bussen zwischen integrierten Schaltungen und/oder einem
oder mehreren Schaltern zwischen integrierten Schaltungen bestehen. Ein
Schalter, eine Brücke
oder ein Router (nicht dargestellt) kann zum Verbinden des primären Verbindungsnetzwerks 300A mit
dem sekundären
Verbindungsnetzwerk 300B verwendet werden, damit die Nachrichten
entsprechend hin- und zurückfließen können.
-
Während des
Fließens
der Nachrichten über das
Verbindungsnetzwerk können
beim Routen von Knoten zu Knoten oder von einem Knoten zu allen Knoten
verschieden lange Verzögerungen
vorkommen. Diese verschieden langen Verzögerungen können eine ungeordnete Nachrichtenübertragungsfolge verursachen.
Das heißt,
für die
folgerichtige Verarbeitung von Speicheranforderungen ist das Verbindungsnetzwerk
ein ungeordnetes Netzwerk.
-
Bezugnehmend
auf 3B ist ein Blockdiagramm eines Mehrprozessorsystems 101C' dargestellt. 3B veranschaulicht,
wie das System 101C von 3A einschließlich des
primären
Verbindungsnetzwerks 300A zur Hauptsache Teil eines einzigen
monolithischen IC-Chips 350 (IC – integrierte Schaltung)
sein kann. Das heißt,
abgesehen vom Hauptspeicher 302C können die Elemente des Systems 101C,
wie im System 101C' veranschaulicht, auf
einem einzigen Siliziumchip 350 integriert werden.
-
Bezugnehmend
auf 3C ist ein Blockdiagramm eines Mehrprozessorsystems 101C'' dargestellt. 3C veranschaulicht,
daß das
System 101C über
integrierte Schaltungsgrenzen hinweg partitioniert werden kann,
wobei das primäre
Verbindungsnetzwerk 300A Teil einer Mehrzahl von IC-Chips 360A-360B ist.
Elemente des Systems 101C können zusammen auf einer Mehrzahl
von Siliziumchips integriert werden. Die Elemente des Mehrprozessorsystems 101C'' können aber auch aus einer oder
aus mehreren gedruckten Schaltungsplatten bestehen, die zum Beispiel über eine
gemeinsame Rückwandplatine
oder Spuren einer Hauptplatinen-Leiterplatte (PCB)
zusammengekoppelt sind.
-
Bezugnehmend
auf 4 ist eine logische Ansicht eines Blockdiagramms
eines physisch verteilten Cache-Speichersystems 400 dargestellt.
Das physisch verteilte Cache-Speichersystem 400 enthält Adressen-Hash-Steuerlogik 404 zur
Erzeugung von Hash-Adressen und eine oder mehrere Cache-Speicherscheiben 412A-412K zum
Empfang von Nachrichten an einer Hash-Adresse über das primäre Verbindungsnetzwerk 300A oder
das primäre
Verbindungsnetzwerk 300A und das sekundäre Verbindungsnetzwerk 300B.
Jede der einen oder der mehreren Cache-Speicherscheiben 412A-412K enthält einen
oder mehrere Blöcke
von Speicherzellen 414A-414K.
-
Das
physisch verteilte Cache-Speichersystem 400 wird gemeinsam
von Requestern wie Prozessoren oder Cache-Speichern benutzt. Das
physisch verteilte Cache-Speichersystem 400 kann auf verschiedene
Weise partitioniert werden, derart, daß ein Adreßblock von Speicherzellen einer
Cache-Speicherscheibe zugeordnet ist und der nächste Adreßblock von Speicherzellen einer
anderen Cache-Speicherscheibe zugeordnet ist. Die Adressen 402 eines
Requesters werden von der Adressen-Hash-Logik 404 gehasht,
um eine Cache-Speicherscheibe und einen oder mehrere Blöcke von
darin enthaltenen Speicherzellen auszuwählen.
-
Bezugnehmend
auf 3A und 4 können einer oder mehrere der
Prozessoren 301A-301K anfordern, daß eine geordnete
Speicheranforderung vom physisch verteilten Cache-Speichersystem 400 durchgeführt wird.
Oder ein oder mehrere Cache-Speicher 312A, 312B oder
Cache-Speicherscheiben auf einer höheren Ebene der Hierarchie
des verteilten Cache-Speichersystems 400 können anfordern,
daß eine
geordnete Speicheranforderung von anderen Ebenen des verteilten
Cache-Speichersystems 400 durchgeführt wird. Die Cache-Speicherscheiben,
die diese Anforderungen ausgeben, liegen typisch in der Nähe der Prozessoren.
Zu den Cache-Speicherscheiben, die diese Anforderungen ausgeben,
können
die internen Cache-Speicher 312A der Prozessoren oder die
Höherebenen-Cache-Speicher 312B gehören. Die
Prozessoren, Cache-Speicher und Cash-Speicherscheiben, die geordnete
Speicheranforderungen ausgeben, können kollektiv als Requesters
bezeichnet werden. Jeder Requester weist Steuerlogik und andere
Hardwareelemente zur Erzeugung geordneter Speicheranforderungen
auf. In den hier folgenden Diskussionen bedeutet „Nc" die Anzahl der Cache-Speicherscheiben, aus
denen sich das physisch verteilte Cache zusammensetzt, und „Np" bedeutet die Anzahl
der Requesters, die das verteilte Cache gemeinsam benutzen.
-
Unter
momentaner Bezugnahme auf 7 ist ein
Prozessor-/Cache-Requester 701 auf einer Ebene der Speicherhierarchie
dargestellt, der auf einer anderen Ebene der Speicherhierarchie
mit Cache-Speicherscheiben 702A und 702B kommuniziert,
die fähig
sind, eine folgerichtige Ausführung
einer geordneten Speicheranforderung vorzunehmen.
-
Jeder
Prozessor-/Cache-Requester 701 besitzt eine eindeutige
Requester-Kennung (RID) 704, die einen konstanten Wert
von „j" aufweist, und ein einzelnes
Token-Register (TR) 706, das einen variablen Wert von "t" aufweist. Die eindeutige Requester-Kennung
kann auch als eindeutige Requester-Identifikation bezeichnet werden.
Das Token-Register kann als Folge-Token-Register bezeichnet werden, und
der Tokenwert „t" kann als Speicherfolge-Token
oder Speicherfolgenummer bezeichnet werden. Das Token-Register (TR) 706 ist „b" Bits breit und kann
abhängig
von der Anzahl der ausstehenden geordneten Speicheranforderungen,
die vom Prozessor/Requester unterstützt werden sollen, 2b Bitwerte aufweisen. Angenommen, „S" bedeutet die Anzahl
der von jedem Prozessor unterstützten
ausstehenden geordneten Speicheranforderungen, dann kann die Anzahl
der Bits im Token-Register anhand der Gleichung „b" = Decke [log2(S)]
bestimmt werden. Der im Token-Register gehaltene Wert kann auch
mit Requesterfolge-Token bezeichnet werden. Während der Erzeugung geordneter
Speicheranforderungen läuft
das Token-Register und zählt.
Das Token-Register kann sich auch auf seinen Anfangswert (typisch Null)
zurücksetzen
(das heißt
zurückrollen),
wenn es über
den Höchstwert
hinaus gezählt
hat. In einer Ausführungsform
sind jedoch „S" sowie die Anzahl der
Bits „b" im Verhältnis zur
maximalen Netzwerklatenz (das heißt, maximale Netzwerkverzögerung)
so groß,
daß bis
zu der Zeit, zu der sich das Token-Register zurückrollen würde, ein Prozessor bereits
alles verarbeitet hat. In einer weiteren Ausführungsform fragt der Prozessor/Requester
mit dem TR-Register, das fast den Punkt erreicht hat, an dem es
sich zurücksetzt,
jede Cache-Speicherscheibe ab, um zu bestimmen, ob jede Scheibe
alle markierten Speicheranforderungen verarbeitet und S – 1 erreicht
hat. Wenn alle Cache-Speicherscheiben dem Prozessor antworten, daß sie fertig
sind, kann der Prozessor seinem jeweiligen TR-Register erlauben
sich zurückzusetzen.
-
Der
Wert „j" der Requester-Kennung
(RID) 704 ist eindeutig. Das heißt, keine zwei Requester-Kennungswerte im
gleichen Mehrprozessorsystem mit verteiltem Cache-Speichersystem
sind einander gleich. Da der Wert „j" jeder Requester-Kennung (RID) 704 eindeutig
ist, können
die Werte „t" der Token-Register
in jedem Requester 701 eindeutig gemacht werden, indem „j" und „t" zusammen angehängt werden.
Das heißt,
das Token-Register TR wird durch Hinzufügen der Requester-Kennung „vereindeutigt", bevor es über das
Verbindungsnetzwerk zum verteilten Cache-Speichersystem gesendet wird.
-
Alle
Cache-Speicherscheiben in der Speicherhierarchie des verteilten
Cache-Speichers, die fähig
sind, eine folgerichtige Ausführung
der geordneten Speicheranforderung vorzunehmen, wie zum Beispiel
die Cache-Speicherscheiben 702A und 702B, weisen
eine Cache-Folgeanordnung (CSA) 712 auf. Die Cache-Folgeanordnung
(CSA) 712 ist eine Tabelle mit „Np" Einträgen, die „b" Bits breit sind. Die Cache-Folgeanordnung
(CSA) 712 bestimmt die Identität der nächsten geordneten Speicheranforderung,
die von der jeweiligen Cache-Speicherscheibe im verteilten Cache-System
für jede
Requester-Kennung (RID) 704 verarbeitet werden kann. Da
Np-Requesters vorhanden
sind, gibt es Np-Einträge
in der Cache-Folgeanordnung (CSA) 712.
-
Jetzt
wird Bezug auf die 5A-5B genommen. 5A ist
ein Diagramm typischer Felder einer markierten geordneten Speicheranforderung 500.
Figur 500B veranschaulicht ein Diagramm typischer Felder
einer CSA-Aktualisierung 510. Zur Unterstützung geordneter
Speicheranforderungen werden die Bit-Felder von Requester-Kennungfeld
(RID) 501 (der „j" Wert), ein Token-Registerwertfeld 502 (der „t" Wert) und das Nachrichtenkennungsfeld (MID) 504 sowohl
in der markierten geordneten Speicheranforderung 500 als
auch in der CSA-Aktualisierung 510 verwendet.
Die Bit-Felder des Requester-Kennungsfeldes (RID) 501 (der „j" Wert) und ein Token-Registerwertfeld 502 (der „t" Wert) werden kollektiv
mit TRU 503 bezeichnet. Das heißt, TR 503 steht für die Verkettung
der Requester-Kennung „j" und des Werts „t" des Token-Registers
TR von Requester j. Der Wert von TRU 503 kann mit „j.t" bezeichnet werden,
wobei j die Requester-Kennung und „t" der Wert des Token-Registers TR von
Requester j ist.
-
Das
Nachrichtenkennungsfeld (MID) 504 ist ein Code, der eine
geordnete Speicheranforderung (OSR) 504A oder eine CSA-Aktualisierung 504B anzeigt.
Es können
andere Codes für
das Nachrichtenkennungsfeld 504 verwendet werden, um andere Nachrichtentypen
anzuzeigen.
-
Wenn
das Nachrichtenkennungsfeld 504 den Code 504A einer
markierten geordneten Speicheranforderung (OSR) 500 anzeigt,
werden ein Adreßfeld 505 und
ein Datenfeld 506 mit in die markierte geordnete Speicheranforderung 500 aufgenommen.
In anderen Worten, die Bit-Felder
des Requester-Kennungsfeldes (RID) 501 (der „j" Wert) und das Token-Registerwertfeld 502 (der „t" Wert) werden miteinander
verkettet und an den Code 504A der geordneten Speicheranforderung
angehängt,
der eine Adresse 505 und Daten 506 enthält, die
zu speichern sind. Auf diese Weise wird die markierte geordnete Speicheranforderung 500 gebildet.
-
Wenn
das Nachrichtenkennungsfeld 504 einen CSA-Aktualisierungscode 504B,
nicht einen Code 504A einer geordneten Speicheranforderung (OSR)
anzeigt, dann werden das Adreßfeld 505 und das
Datenfeld 506 nicht in die Nachricht aufgenommen, die an
das verteilte Cache-Speichersystem 400 gesendet
wird. In diesem Fall basieren die Bit-Felder des Requester-Kennungsfeldes (RID) 501 (der "j" Wert) und des Token-Registerwertfeldes 502 (der „t" Wert) auf der geordneten
Speicheranforderung, die verarbeitet wurde, und sie werden an den
CSA-Aktualisierungscode 504B angehängt.
-
In
einer Ausführungsform
können
die Datenbitfelder der markierten geordneten Speicheranforderung 500 und
die CSA-Aktualisierung 501 in Paketen über das Verbindungsnetzwerk 400A, 300B vom Requester
zu Cache-Speicherscheiben oder von einer Cache-Speicherscheibe zu
anderen Cache-Speicherscheiben fließen. In einer anderen Ausführungsform
fließen
die Datenbitfelder der markierten geordneten Speicheranforderung 500 und
der CSA-Aktualisierung 501 parallel zueinander über einen
parallelen Verbindungsbus des Verbindungsnetzwerks. In einer wiederum
anderen Ausführungsform
können die
Datenbitfelder der markierten geordneten Speicheranforderung 500 und
der CSA-Aktualisierung 501 in Serie über eine serielle Verbindung
des Verbindungsnetzwerks fließen.
In einer wiederum anderen Ausführungsform
können
die Datenbitfelder der markierten geordneten Speicheranforderung 500 und
der CSA-Aktualisierung 501 mittels Kombination eines oder
mehrerer Pakete parallel zueinander oder in Serie über das
Verbindungsnetzwerk fließen.
In jedem Fall werden die markierten geordneten Speicheranforderungen 500 erzeugt
und vom Requester in das Verbindungsnetzwerk gesendet, und die CSA-Aktualisierungen 510 werden
erzeugt und von der Cache-Speicherscheibe, die eine geordnete Speicheranforderung
ausgeführt
hat, in das Verbindungsnetzwerk gesendet.
-
Bezugnehmend
auf 6A ist ein Blockdiagram einer Cache-Speicherscheibe 602 dargestellt. Die
Cache-Speicherscheibe 602 veranschaulicht eine einzelne
Instanz einer Cache-Speicherscheibe. Die Cache-Speicherscheibe 602 enthält eine
Cache-Folgeanordnung 604 und Cache-Steuerlogik 606 zur Unterstützung der
folgerichtigen Ausführung von
geordneten Speicheranforderungen. Die Cache-Steuerlogik 606 kann
ferner die mit Cache-Speichern verknüpften typischen Cache-Steuerfunktionen
bereitstellen. Die Cache-Speicherscheibe 602 enthält ferner
einen Anforderungspuffer 608, Cache-Markierungsbits 610,
eine Cache-Datenanordnung 612,
Markierungs-Deckungslogik 614 und eine Spaltenwahl 616,
die wie in 6A dargestellt und veranschaulicht
zusammengekoppelt sind.
-
Der
Anforderungspuffer 608 hält zu verarbeitende Cache-Speicheranforderungen
vorübergehend
in einer Warteschlange. Die Cache-Markierungsbits 610 sind
typisch die oberen Adreßbits,
die zusammen mit den gültigen
Bits und anderen Statusbits zur Identifizierung des Inhalts einer
Cache-Zeile von Speicherzellen beitragen. Die Cache-Datenanordnung 612 ist
eine in Reihen und Spalten ausgelegte Anordnung von Speicherzellen
zum Speichern von Daten. Die Markierungs-Deckungslogik 614 hat zu
bestimmen, ob der Zugriff auf die jeweilige Cache-Speicherscheibe erfolgreich
war (Hit) oder versagt hat (Miss). Ein Hit zeigt an, daß die gewünschten
Daten in der Cache-Datenanordnung 612 der jeweiligen Cache-Speicherscheibe
gespeichert wurden. Ein Miss zeigt an, daß die gewünschten Daten nicht in der
Cache-Datenanordnung 612 gespeichert wurden, und daß die Anforderung
an die nächste Ebene
der Hierarchie im verteilten Cache-Speichersystem weiterzugeben
ist. Die Spaltenwahl 616 reagiert auf die Anzeige eines
Hit oder Miss, indem sie eine Spalte von Speicherzellen aus der
Cache-Datenanordnung 612 auswählt oder
nicht auswählt.
-
Die
Cache-Folgeanordnung 604 gestattet der Cache-Speicherscheibe 602,
geordnete Speicheranforderungen folgerichtig im physisch verteilten Cache-Speichersystem
auszuführen.
Die Cache-Folgeanordnung 604 speichert ein oder mehrere
mit einer oder mehreren geordneten Speicheranforderungen verknüpfte Speicherfolge-Tokens
als Cache-Folgeeinträge.
Der Cache-Folgeeintrag
gibt die geordnete Speicheranforderung an, die jede Cache-Speicherscheibe 602 aktuell
für jeden
Requester ausführen
kann.
-
Bezugnehmend
auf 6B ist ein Blockdiagramm einer Cache-Folgeanordnung
(CSA) 604 dargestellt. Die Cache-Folgeanordnung (CSA) 604 enthält eine
Cache-Folgeanordnungstabelle (CSA) 632. Die Cache-Folgeanordnungstabelle
(CSA) 632 speichert die Speicherfolge-Tokens t für jeden
Requester j. Die Requester-Kennung j fungiert als Adresse in der
Cache-Folgeanordnungstabelle
(CSA) 632, damit die so adressierten Daten an die Cache-Steuerlogik 606 gesendet
werden können.
-
Jeder
Cache-Folgeeintrag in der Cache-Folgeanordnungstabelle (CSA) 632 gibt
dir von einem gegebenen Requester j kommende aktuelle Speicherfolge-Markierung
t an, das die jeweilige Cache-Speicherscheibe folgerichtig ausführen kann. Wenn
eine geordnete Speicheranforderung mit der betreffenden Cache-Speicherscheibe 602 gehasht wird,
die sich mit dem Cache-Folgeeintrag
für diesen Requester
j deckt, führt
die Cache-Speicherscheibe die geordnete Speicheranforderung aus.
Wenn eine andere geordnete Speicheranforderung mit der betreffenden
Cache-Speicherscheibe 602 gehasht wird, die sich nicht
mit dem Cache-Folgeeintrag für diesen
Requester j deckt, führt
die Cache-Speicherscheibe aktuell nicht die geordnete Speicheranforderung
aus, sondern hält
sie im Anforderungspuffer 608 einer anderen Warteschlange
zur späteren
Verarbeitung fest. Auf diese Weise kann die geordnete Speicheranforderung
in Reihe ausgeführt
werden.
-
Die
Cache-Folgeanordnungstabelle (CSA) 632 innerhalb einer
Cache-Speicherscheibe unterhält
eine geordnete Speicheranforderung für jeden Requester. Auf diese
Weise kann jede Cache-Speicherscheibe
eine Reihenfolge der Ausführung
von geordneten Speicheranforderungen für jeden Requester j unterhalten.
-
Bezugnehmend
auf 7 ist ein Blockdiagramm darstellt, das eine beispielhafte
Folge der folgerichtigen Ausführung
einer geordneten Speicheranforderung veranschaulicht, einschließlich Erzeugung
einer markierten geordneten Speicheranforderung, Ausführung der
geordneten Speicheranforderung und Ausgabe einer Cache-Folge-Aktualisierungsnachricht.
-
Wie
an früherer
Stelle besprochen, hat jeder Prozessor/Cache-Requester 701 eine
eindeutige Requester-Kennung (RID) 704, die einen Wert
von „j" aufweist, und ein
einzelnes Token-Register
(TR) 706, das einen Wert von „t" aufweist. Jeder Prozessor/Cache-Requester 701 enthält ferner
eine Arbeitswarteschlange 707 zur Speicherung von geordneten
Speicheranforderungen (zum Beispiel ST.REL A, ST.REL B) und Steuerlogik 708 zur
Steuerung der Erzeugung der markierten geordneten Speicheranforderung 500 und
zum Hashen der Adresse zur Auswahl der entsprechenden Cache-Speicherscheibe
und der darin enthaltenen Speicherzellen.
-
Wie
an früherer
Stelle besprochen, weist jede Cache-Speicherscheibe in der Speicherhierarchie
des verteilten Cache-Speichers, die fähig ist eine folgerichtige
Ausführung
der geordneten Speicheranforderung vorzunehmen, eine Cache-Folgeanordnung
(CSA) auf. 7 veranschaulicht die Cache-Speicherscheibe
k 702A und die Cache-Speicherscheibe m 702B mit
jeweils einer Cache-Folgeanordnung (CSA) 712.
-
Im
Betrieb erzeugt der Requester j 701 eine markierte geordnete
Speicheranforderung 500 unter Einsatz einer Adresse einer
der geordneten Speicheranforderungen in Warteschlange 707,
wobei die Requester-Kennung j und der aktuelle Token-Registerwert
t angehängt
werden. Der Controller 708 des Requesters j 701 gibt
die markierte geordnete Speicheranforderung 500 aus. Die
geordnete Speicheranforderung ist mit dem Wert „j.t" markiert. Zum Zeitpunkt X wird die
markierte geordnete Speicheranforderung für ST.REL A an die Cache-Scheibe
k 702A gesendet, wie durch Pfeil 721 angezeigt.
Innerhalb Requester j 701, nachdem die markierte geordnete Speicheranforderung
für ST.REL.
A an die Cache-Scheibe k 702A gesendet wurde, steigt das
Token-Register 706 auf den Wert (t + 1) an.
-
Beispielsweise
sei angenommen, daß Requester
j 701 zwei mit „ST.REL
A" und „ST.REL
B" bezeichnete geordnete
Speicheranforderungen aufweist, die bereit sind, markiert zu werden
und als markierte geordnete Speicheranforderungen an verschiedene
Adressen „A" und „B" im physisch verteilte Cache-Speichersystem
ausgegeben zu werden. Die geordnete Speicheranforderung „ST.REL
A" ist älter als
die geordnete Speicheranforderung „ST.REL B" und sollte zur Erzielung von folgerichtiger
Ausführung
zuerst verarbeitet werden. Wegen der verschiedenen Adressen „A" und „B" werden die beiden
geordneten Speicheranforderungen jedoch von verschiedenen Partitionen,
Cache-Speicherscheibe k 702A und Cache-Speicherscheibe m 702B des
physisch verteilten Cache-Speichersystems, verarbeitet.
-
Requester
j 701 gibt als erstes eine markierte geordnete Speicheranforderung
an die Cache-Speicherscheibe
k 702A aus, wobei die geordnete Speicheranforderung „ST.REL
A", wie durch Pfeil 721 angezeigt,
mit „j.t" markiert ist. Wenn
die Cache-Speicherscheibe k 702A diese markierte geordnete
Speicheranforderung verarbeitet, führt sie die Speicherung und
dann eine Aktualisierung durch. Das heißt, die Cache-Speicherscheibe
k 702A sendet die Aktualisierung der Cache-Folgeanordnung
(CSA) mit „j.x" an alle anderen
Cache-Speicherscheiben aus, wie durch Pfeil 722 angezeigt.
Der Wert von x ist gleich t + 1. Die Cache-Speicherscheibe k 702A erhöht ihren eigenen
CSA[j] Eintrag entsprechend Requester j, um darin die CSA-Aktualisierung
durchzuführen.
-
Nach
Empfang der markierten geordneten Speicheranforderung für ST.REL
A bestimmt die Cache-Speicherscheibe k 702A, ob sie die
markierte geordnete Speicheranforderung in Reihe ausführen kann
oder nicht. Zu diesem Zweck sieht sich die Cache-Scheibe k 702A ihre
Cache-Folgeanordnung (CSA) 712 und
den Eintrag für
Requester j 701 an. Wie eine Cache-Speicherscheibe k 702A bestimmt, ob
sie eine markierte geordnete Speicheranforderung folgerichtig ausführen kann
oder nicht, wird an späterer
Stelle mit Bezug auf die 9A und 9B beschrieben.
Angenommen, die Cache-Speicherscheibe k 702A bestimmt,
sie kann die markierte geordnete Speicheranforderung folgerichtig
ausführen, so
tut sie das. Nachdem die Cache-Speicherscheibe k 702A die
markierte geordnete Speicheranforderung für ST.REL A verarbeitet oder
ausgeführt
hat, steigt der Wert t auf (t + 1) und wird zusammen mit der Requester-Kennung
j angehängt,
um eine CSA-Aktualisierung 510 mit dem Wert j.t + 1 zu
erzeugen und an alle anderen Cache-Speicherscheiben auszugeben.
Die Pfeile 722 zeigen an, daß die CSA-Aktualisierung an
alle anderen Cache-Speicherscheiben einschließlich der Cache-Speicherscheibe m 702B gesendet
wird. So wissen die Caches, die die CSA-Aktualisierung empfangen
haben, daß sie
nun eine markierte geordnete Speicheranforderung mit einem „j.t +
1" Wert verarbeiten
können.
-
Aus
verschiedenen Gründen
können
markierte geordnete Speicheranforderungen an einer gegebenen Cache-Speicherscheibe
die Reihenfolge verlassen. Zum Beispiel kann eine markierte geordnete
Speicheranforderung die Reihenfolge verlassen, weil eine CSA-Aktualisierung
nicht zeitgerecht an einer gegebenen Cache-Speicherscheibe empfangen
wurde. Als weiteres Beispiel kann eine markierte geordnete Speicheranforderung
die Reihenfolge verlassen, weil eine andere markierte geordnete Speicheranforderung
ausgegeben wurde, bevor die Verarbeitung der früheren geordneten Speicheranforderung
abgeschlossen war und bevor eine CSA-Aktualisierung ausgegeben wurde. Als
wiederum weiteres Beispiel kann eine markierte geordnete Speicheranforderung
die Reihenfolge verlassen, weil eine spätere markierte geordnete Speicheranforderung
empfangen wurde, bevor alle CSA-Aktualisierungen von anderen Cache-Speicherscheiben
für einen
gegebenen Requester j empfangen wurden.
-
Im
Weitergang unseres Beispiels gibt Requester j zum Zeitpunkt X +
e, wobei e positiv ist, die markierte geordnete Speicheranforderung
einschließlich
der mit „j.(t
+ 1)" markierten
geordneten Speicheranforderung „ST.REL B" an die Cache-Speicherscheibe m 702B aus,
wie durch Pfeil 723 angezeigt. Innerhalb von Requester
j 701, nachdem die markierte geordnete Speicheranforderung
für ST.REL
B an die Cache-Scheibe m 702B gesendet wurde, steigt das
Token-Register 706 auf einen Wert von (t + 2).
-
Nach
Empfang der markierten geordneten Speicheranforderung für ST.REL
B bestimmt die Cache-Speicherscheibe m 702B, ob sie die
markierte geordnete Speicheranforderung in Reihe ausführen kann.
Zu diesem Zweck sieht sich die Cache-Scheibe m 702B ihre
Cache-Folgeanordnung
(CSA) 712 und den Eintrag für Requester j 701 an.
-
Die
Cache-Speicherscheibe m 702B prüft, ob ihr Eintrag für CSA[j]
für Requester
j in der CSA 712 gleich (t + 1) ist. Angenommen, daß in diesem Fall
die Cache-Speicherscheibe k 702A bereits die geordnete
Speicheranforderung „ST.REL
B" verarbeitet hat
und die Cache-Speicherscheibe m 702B die entsprechende
CSA-Aktualisierung erhalten hat, kann die Cache-Speicherscheibe 702B m
(300) die „ST.REL
B" verarbeiten,
weil ihr Eintrag für
CSA[j] für Requester
j gleich (t + 1) ist.
-
Jetzt
sei jedoch angenommen, daß Requester
j die geordnete Speicheranforderung „ST.REL A" ausgibt, bevor die CSA-Aktualisierung
von der Cache-Speicherscheibe k 702A die Cache-Speicherscheibe m 702B erreicht,
dann hält
die Cache-Speicherscheibe m 702B die markierte geordnete
Speicheranforderung, die „ST.REL
B" enthält, in einem Netzwerk
oder lokalen Puffer fest, bis die CSA-Aktualisierung mit dem Token „j.x" ankommt. In diesem Fall
liegt die CSA-Aktualisierung
außerhalb
der Reihenfolge, und die Cache-Speicherscheibe muß die von
ihr zur Verarbeitung gehaltenen geordneten Speicheranforderungen
entsprechend handhaben.
-
In
der Annahme, daß die
Cache-Speicherscheibe m 702B bestimmt, daß sie die
markierte geordnete Speicheranforderung folgerichtig ausführen kann,
tut sie das. Nachdem die Cache-Speicherscheibe
m 702B die markierte geordnete Speicheranforderung für ST.REL
B verarbeitet oder ausgeführt
hat, steigt der Wert von (t + 1) auf (t + 2) und wird mit der Requester-Kennung
j angehängt,
um eine CSA-Aktualisierung 510 mit dem Wert j.t + 2 zu
erzeugen und an alle anderen Cache-Speicherscheiben auszugeben.
Pfeile 725 zeigen an, daß die CSA-Aktualisierung an
alle anderen Cache-Speicherscheiben einschließlich der Cache-Speicherscheibe
m 702A gesendet wird. Dadurch wissen die Caches, die die
CSA-Aktualisierung empfangen haben, daß sie jetzt eine markierte
geordnete Speicheranforderung mit einem „j.t + 2" Wert verarbeiten können.
-
In
der Annahme, daß die
Cache-Speicherscheibe m 702B keine CSA-Aktualisierung mit
einem Wert von „j.t
+ 2" empfangen hat,
wäre sie
nicht in der Lage gewesen, eine markierte geordnete Speicheranforderung
mit einem Wert von „j.t
+ 2" folgerichtig auszuführen. Die
Cache-Speicherscheibe
m 702B hätte
bis zum Empfang einer CSA-Aktualisierung mit einem Wert von „j.t +
1" warten müssen, bevor
sie eine markierte geordnete Speicheranforderung mit einem Wert
von „j.t
+ 1" hätte ausführen können.
-
Bezugnehmend
auf 8 ist ein Ablaufdiagramm der Steuerfunktionen
dargestellt, die von der Steuerlogik 708 des Requesters
j 701 zur Unterstützung
markierter geordneter Speicheranforderungen durchgeführt werden.
In dieser Diskussion, wie bereits früher besprochen, bedeutet die
Nummer "Np" die Anzahl der Prozessoren,
die das verteilte Cache gemeinsam benutzen.
-
Bei 800 wird
das System initialisiert oder zurückgesetzt. Bei 802 setzen
alle Prozessor- und Cache-Requesters j 701 ihre Token-Register
TR 706 und den Tokenwert „t" auf einen Startwert wie Null. Wie an
späterer
Stelle besprochen, werden alle Einträge der Cache-Folgeanordnung
in jeder Cache-Speicherscheibe, wie der Cache-Folgeanordnung 712 in
den Cache-Speicherscheiben 702A, 702B,
in gleicher Weise auf den gleichen anfänglichen Startwert für „t", wie Null, gesetzt.
-
Bei 804 bestimmt
die Steuerlogik, ob Requester j 701 bereit ist, eine geordnete
Speicheranforderung in das physisch verteilte Cache-Speichersystem
zu senden. Wenn nicht, geht die Steuerlogik zurück zu 804 und wartet
im wesentlichen auf die Ausgabe einer geordneten Speicheranforderung. Wenn
eine geordnete Speicheranforderung zur Verarbeitung an das physisch
verteilte Cache-Speichersystem gesendet werden soll, geht die Steuerlogik
zu 806.
-
Bei 806 wird
die geordnete Speicheranforderung mit dem aktuellen Wert der TRU
Markierung 503 einschließlich der RID „j" 501 und
des Token-Registerwerts „t" 502 markiert,
wie in 5A dargestellt. Der Wert der
TRU Markierung 503 wird mit „j.t" bezeichnet. Die Steuerlogik geht nun
zu 808.
-
Bei 808 wird
durch die Steuerlogik 708 des Requesters j 701 das
Token-Register 706 erhöht,
so daß dem
aktuellen Wert t der Wert t + 1 zum späteren Einsatz mit der nächsten geordneten
Speicheranforderung zugeordnet wird. Dann geht die Steuerlogik zu 810.
-
Bei 810 wird
die markierte geordnete Speicheranforderung 500 an das
physisch verteilte Cache-Speichersystem
ausgegeben. Die Adresse der markierten geordneten Speicheranforderung
wird gehasht, und die markierte geordnete Speicheranforderung wird
an die entsprechende Cache-Speicherscheibe,
wie die Cache-Speicherscheibe k 702A, geschickt.
-
9 ist ein erstes Ablaufdiagramm der von der
Steuerlogik 714 jeder Cache-Speicherscheibe zur Unterstützung markierter
geordneter Speicheranforderungen durchgeführten Steuerfunktionen. 9B ist
ein zweites Ablaufdiagramm der von der Steuerlogik 714 jeder
Cache-Speicherscheibe
zur Unterstützung
markierter geordneter Speicheranforderungen durchgeführten Steuerfunktionen.
-
Bezugnehmend
auf 9A ist ein Ablaufdiagramm der von der Steuerlogik 714 jeder
Cache-Speicherscheibe
durchgeführten
Steuerfunktionen dargestellt, um zu bestimmen, ob geordnete Speicheranforderungen
verarbeitet werden können oder
nicht. Bei 900 wird das System initialisiert oder zurückgesetzt,
wie bereits bei 800 besprochen. Bei 902 werden
alle Einträge
der Cache-Folgeanordnung 712 in jeder Cache-Speicherscheibe
auf den anfänglichen
Startwert für „t", wie Null, gesetzt.
Dieser deckt sich mit dem Token-Startwert „t", den jeder Requester j 701 für sein Token-Register
TR 706 hat. Die Steuerlogik geht jetzt zu 904.
-
Bei 904 bestimmt
die Steuerlogik jeder Cache-Speicherscheibe, ob sie eine markierte
geordnete Speicheranforderung 501 von einem Requester empfangen
hat. Wenn nicht, geht die Steuerlogik zurück zu 904 und wartet
im wesentlichen auf die Ausgabe einer markierten geordneten Speicheranforderung.
Wenn eine markierte geordnete Speicheranforderung zur Verarbeitung
empfangen wurde, geht die Steuerlogik zu 906.
-
Bei 906 wird
die TRU Markierung j.t der markierten geordneten Speicheranforderung
entnommen, um zu bestimmen, ob die geordnete Speicheranforderung
von der gegebenen Cache-Speicherscheibe verarbeitet werden kann.
Für den
Wert der empfangenen Requester-Kennung „j" liest die Cache-Speicherscheibe
den Cache-Folgeeintrag für den
Prozessor, der den Wert der geordneten Speicheranforderung erstellte,
den CSA-Wert [j], wobei j Werte von 0 bis (S – 1) annimmt, unter Annahme
eines Startwerts von Null. Es sei daran erinnert, daß „S" für die Anzahl
der ausstehenden geordneten Speicheranforderungen steht, die jeder
Prozessor unterstützt.
-
Bei 908 wird
der CSA[j] Eintrag, die erwartete Folgenummer, für den Requester j mit dem „t" Teil der Markierung
in der geordneten Speicheranforderung verglichen. Wenn sich CSA
[j] mit dem „t" Teil der Markierung
in der geordneten Speicheranforderung deckt, wird die Anforderung
verarbeitet. Wenn sich CSA [j] nicht mit dem „t" Teil der Markierung deckt, stimmt die
Markierung nicht überein
und die Steuerlogik geht zu 913. Wenn sich CSA [j] mit
dem „t" Teil der Markierung
deckt, stimmt die Markierung überein,
und die Steuerlogik geht zu 912.
-
Bei 913 wird
die entsprechende markierte geordnete Speicheranforderung (einschließlich der Markierung)
in der normalen Arbeitswarteschlange des Caches zur späteren Verarbeitung
gespeichert.
-
Bei 912,
wenn sich die Markierung deckt (CSA[j] = t), verarbeitet das Cache
die geordnete Speicheranforderung und geht zu 914.
-
Bei 914 steigt
der CSA [j] Eintrag für
den gegebenen Requester, und die Steuerlogik geht zu 916.
-
Bei 916 wird
eine CSA-Aktualisierung für
alle anderen Cache-Speicherscheiben ausgegeben. Die gegebene Cache-Speicherscheibe,
die die markierten geordneten Speicheranforderungen ausgegeben hat,
gibt Token j.(t + 1) an alle anderen Cache-Speicherscheiben im System
aus und zeigt dadurch an, daß sie
Nachrichten von Requester j, die den Tokens mit dem Wert t + 1 entsprechen,
verarbeiten können (falls
sie welche haben). Der Requestor, dessen eigenes Token ebenfalls
steigt, prüft
seine Warteschlange auf sich deckende Anforderungen nach einer CSA-Aktualisierung.
-
Jetzt
soll die Handhabung von CSA-Aktualisierungen, die außerhalb
der Reihenfolge liegen, beschrieben werden. Wie an früherer Stelle
besprochen, kann das Netzwerk der physisch verteilten Cache-Speicherscheiben
markierte geordnete Speicheranforderungen umordnen, so daß sie folgerichtig verarbeitet
werden können.
Das Netzwerk der physisch verteilten Cache- Speicherscheiben kann jedoch auch CSA-Aktualisierungen
umordnen, die ebenfalls von jeder Cache-Speicherscheibe empfangen
wurden.
-
Unter
momentaner Bezugnahme auf 7 sei zum
Beispiel angenommen, daß Cache-Speicherscheibe 702A zwei
CSA-Aktualisierungen einschließlich
Markierungsaktualisierungen j.(t + 1) und j.(t + 2) schnell nacheinander
an die in der Nähe
gelegenen Caches aussendet, und diese kommen ungeordnet bei Cache-Speicherscheibe 702B an.
Ferner sei angenommen, daß Cache-Speicherscheibe 702B markierte
geordnete Speicheranforderungen hat, die auf CSA-Aktualisierungen einschließlich Markierungsaktualisierungen
j.(t + 1) und j.(t + 2) warten müssen,
aber daß sie
nur eine CSA-Aktualisierung von Cache-Speicherscheibe 702A empfängt, die
die Markierungsaktualisierung j.t + 2 angibt. In diesem Szenario
ist die CSA Aktualisierung nicht folgerichtig.
-
Wenn
eine Cache-Speicherscheibe die Markierungsaktualisierungen ungeordnet
in den CSA-Aktualisierungsnachrichten
empfängt – wenn sie
zum Beispiel Markierungsaktualisierung j.t + 5 vor den Markierungsaktualisierungen
j.t + 1, j.t + 2, j.t + 3 und j.t + 4 empfangen hat – muß eine andere
Cache-Speicherscheibe j.t + 1 folgerichtig empfangen haben, um j.t
+ 2 zu erzeugen und j.t + 3 auszulösen, usw. um die Ausgabe einer
Markierungsaktualisierung j.t + 5 auszulösen. Wenn demnach eine Cache-Speicherscheibe
eine Markierungsaktualisierung j.t + n empfängt, ohne die früheren Aktualisierungen
empfangen zu haben, ist es sicher für ein Cache, nach Empfang der
Markierungsaktualisierung j.t + n, alle geordneten Speicheranforderungen
bis einschließlich
j.t + n zu verarbeiten.
-
Der
Additionsvorgang t + n wird Modulo 2b durchgeführt, wobei
b die Anzahl der Bits im Zählerteil
der Markierung ist. Da der Zähler
eine begrenzte Anzahl von b Bits aufweist, kann der Additionsvorgang
den maximalen Zählerwert überschreiten
und sich auf einen niedrigeren Wert zurückrollen. Es ist darauf zu
achten, negative Effekte einer Zurückrollbedingung zu vermeiden.
In einer Ausführungsform ist
die Anzahl der Bits „b" im Verhältnis zur
maximalen Netzwerklatenz (das heißt der Netzwerkverzögerung)
so groß,
daß zum
Zeitpunkt des Zurückrollens des
Token-Registers ein Prozessor alle früheren geordneten Speicheranforderungen
verarbeitet haben würde.
In einer weiteren Ausführungsform
fragt der Prozessor/Requester mit dem TR-Register, welches den Zurückrollpunkt
erreicht hat, jede Cache-Speicherscheibe ab, um zu bestimmen, ob
jede Scheibe alle markierten Speicheranforderungen verarbeitet und
S – 1
erreicht hat. Wenn alle Cache-Speicherscheiben dem Prozessor antworten,
daß sie
fertig sind, kann der Prozessor dann seinem gegebenen TR-Register
erlauben sich zurückzusetzen.
-
Der
TR-Zähler
in jedem Requester weist eine begrenzte Anzahl von Bits, „b" bits, auf und erzeugt entsprechend
Markierungen mit „b" Bits. Das heißt, der
maximale Zählerwert
und das "t" einer Markierung
ist 2b – 1.
-
Angenommen,
die Cache-Speicherscheibe k 702A empfängt eine CSA-Aktualisierung
mit einer Markierung von j.2b – 2, empfängt aber
keine anderen CSA-Aktualisierungen einschließlich solcher mit einem Markierungswert
von j.0 bis j.2b – 3. Weiter sei angenommen,
daß Cache-Speicherscheibe k 702A alle
ihre geordnetem Speicheranforderungen verarbeitet und dann eine
CSA-Aktualisierung mit einer Markierungsaktualisierung von j.2b – 1
aussendet. Die Ausgabe einer CSA-Aktualisierung mit einer Markierungsaktualisierung
von j.2b –1 kann eine andere Cache-Speicherscheibe,
wie Cache-Speicherscheibe m 702B, auslösen, um eine markierte geordnete Speicheranforderung
mit j.2b – 1 zu verarbeiten, ohne auf
irgendeine andere CSA-Aktualisierung
zu warten. Anschließend
kann die Cache-Speicherscheibe m 702B eine CSA-Aktualisierungsnachricht
mit einer Markierungsaktualisierung von j.0 ausgeben, da j.0 der
nächste
Zählerwert
nach j.2b – 1 ist.
-
Bezugnehmend
auf 9B ist ein Ablaufdiagramm der Steuerfunktionen,
die von der Steuerlogik der Cache-Speicherscheibe zur Handhabung
von Markierungsaktualisierungen durchgeführt werden, dargestellt.
-
Bei 950 wird
die CSA-Aktualisierungsroutine, die von der Steuerlogik jeder Cache-Speicherscheibe durchgeführt wird,
beim Hochfahren oder Zurücksetzen
initialisiert.
-
Bei 952 bestimmt
die Steuerlogik, ob die Cache-Speicherscheibe eine CSA-Aktualisierungsnachricht
mit einer Markierungsaktualisierung j.t empfangen hat. Wenn nicht,
geht die Steuerlogik zurück
zu 952, sie wartet also im wesentlichen darauf, eine Markierungsaktualisierung
zu empfangen. Wenn eine CSA-Aktualisierungsnachricht mit einer Markierungsaktualisierung
j.t empfangen wurde, geht die Steuerlogik zu 972.
-
Bei 972 aktualisiert
die Steuerlogik den aktuellen Eintrag in der Cache-Folgeanordnungstabelle, indem
sie CSA[j] mit t gleichsetzt. Als Nächstes bewirkt die Steuerlogik
bei 974, daß die
Cache- Speicherscheibe
alle anstehenden geordneten Speicheranforderungen mit einer Markierung
von „j.t" verarbeitet. Nach
Verarbeitung der geordneten Speicheranforderungen kehrt die Steuerlogik
bei 980 zurück zu 952,
wo sie auf den Empfang der nächsten
Aktualisierung wartet.
-
Obwohl
bestimmte beispielhafte Ausführungsformen
beschrieben und in den beigefügten Zeichnungen
dargestellt wurden, versteht es sich, daß diese Ausführungsformen
rein illustrativ sind und nicht die Erfindung im breiteren Sinne
einschränken, und
daß diese
Erfindung nicht auf die spezifischen dargestellten und beschriebenen
Konstruktionen und Arrangements beschränkt ist, da dem Fachmann verschiedene
andere Modifikationen einfallen werden. Zum Beispiel ist es möglich, die
Erfindung oder einige ihrer Merkmale in Hardware, Firmware, Software oder
einer Kombination derselben zu implementieren, wobei die Software
in einem prozessorlesbaren Medium wie einem magnetischen, optischen
oder Halbleiterspeicher bereitgestellt wird.
-
VERFAHREN UND VORRICHTUNG
FÜR EFFIZIENT
GEORDNETE SPEICHER IN EINEM VERBINDUNGSNETZWERK
-
ZUSAMMENFASSUNG
-
Ein
physisch verteiltes Cache-Speichersystem enthält ein Verbindungsnetzwerk,
Cache-Speicherscheiben
einer ersten Ebene und Cache-Speicherscheiben einer zweiten Ebene.
Die Cache-Speicherscheiben der ersten Ebene sind an das Verbindungsnetzwerk
gekoppelt, um markierte geordnete Speicheranforderungen zu erzeugen.
Jede markierte geordnete Speicheranforderung weist eine Markierung
auf, die eine Requester-Kennung und ein Speicherfolge-Token enthält. Die
Cache-Speicherscheiben der zweiten Ebene sind an das Verbindungsnetzwerk
gekoppelt, um geordnete Speicheranforderungen folgerichtig über das
physisch verteilte Cache-Speichersystem in Antwort auf jede Markierung der
markierten geordneten Speicheranforderungen auszuführen.