DE112004001984T5 - Verfahren und Vorrichtung für effizient geordnete Speicher in einem Verbindungsnetzwerk - Google Patents

Verfahren und Vorrichtung für effizient geordnete Speicher in einem Verbindungsnetzwerk Download PDF

Info

Publication number
DE112004001984T5
DE112004001984T5 DE112004001984T DE112004001984T DE112004001984T5 DE 112004001984 T5 DE112004001984 T5 DE 112004001984T5 DE 112004001984 T DE112004001984 T DE 112004001984T DE 112004001984 T DE112004001984 T DE 112004001984T DE 112004001984 T5 DE112004001984 T5 DE 112004001984T5
Authority
DE
Germany
Prior art keywords
cache
ordered
memory
request
disks
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.)
Withdrawn
Application number
DE112004001984T
Other languages
English (en)
Inventor
Mark Lexington Charney
Ravi Portland Rajwar
Pritpal Waltham Ahuja
Matt Worcester Mattina
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/691,716 external-priority patent/US7338424B2/en
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112004001984T5 publication Critical patent/DE112004001984T5/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0837Cache consistency protocols with software control, e.g. non-cacheable data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache

Abstract

Physisch verteiltes Cache-Speichersystem, welches umfaßt::
– ein Verbindungsnetzwerk;
– Cache-Speicherscheiben einer ersten Ebene, die an das Verbindungsnetzwerk gekoppelt sind, um markierte geordnete Speicheranforderungen zu erzeugen, wobei jede markierte geordnete Speicheranforderung eine Markierung aufweist, die eine Requester-Kennung und ein Speicherfolge-Token enthält; und
– Cache-Speicherscheiben einer zweiten Ebene, die an das Verbindungsnetzwerk gekoppelt sind, um markierte geordnete Speicheranforderungen folgerichtig über ein physisch verteiltes Cache-Speichersystem in Reaktion auf jede Markierung der markierten geordneten Speicheranforderungen auszuführen.

Description

  • 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.

Claims (40)

  1. Physisch verteiltes Cache-Speichersystem, welches umfaßt:: – ein Verbindungsnetzwerk; – Cache-Speicherscheiben einer ersten Ebene, die an das Verbindungsnetzwerk gekoppelt sind, um markierte geordnete Speicheranforderungen zu erzeugen, wobei jede markierte geordnete Speicheranforderung eine Markierung aufweist, die eine Requester-Kennung und ein Speicherfolge-Token enthält; und – Cache-Speicherscheiben einer zweiten Ebene, die an das Verbindungsnetzwerk gekoppelt sind, um markierte geordnete Speicheranforderungen folgerichtig über ein physisch verteiltes Cache-Speichersystem in Reaktion auf jede Markierung der markierten geordneten Speicheranforderungen auszuführen.
  2. Physisch verteiltes Cache-Speichersystem nach Anspruch 1, wobei eine oder mehrere der markierten geordneten Speicheranforderungen von mindestens einer der Cache-Speicherscheiben der zweiten Ebene nicht folgerichtig empfangen wurden.
  3. Physisch verteiltes Cache-Speichersystem nach Anspruch 1, wobei jede der Cache-Speicherscheiben der ersten Ebene eine eindeutige Requesterkennung und ein Folge-Token-Register zur Erzeugung markierter geordneter Speicheranforderungen aufweist.
  4. Physisch verteiltes Cache-Speichersystem nach Anspruch 1, wobei jede der Cache-Speicherscheiben der zweiten Ebene eine Cache-Folgeanordnung aufweist, um die geordneten Speicheranforderungen folgerichtig über das physisch verteilte Cache-Speichersystem auszuführen.
  5. Physisch verteiltes Cache-Speichersystem nach Anspruch 4, wobei die Cache-Folgeanordnung enthält: eine Cache-Folgeanordnungstabelle zum Speichern des mit geordneten Speicheranforderungen verknüpften Speicherfolge-Tokens als Cache-Folgeeintrag, wobei der Cache-Folgeeintrag einen oder mehrere geordnete Speicheranforderungen bezeichnet, die die Cache-Speicherscheibe aktuell ausführen kann.
  6. Physisch verteiltes Cache-Speichersystem nach Anspruch 4, wobei jede der Cache-Speicherscheiben der zweiten Ebene ferner mit der Cache-Folgeanordnung verknüpfte Steuerlogik aufweist, wobei die Steuerlogik die folgerichtige Ausführung der geordneten Speicheranforderungen steuert und eine Cache-Folgeanordnungs-Aktualisierung zur Aktualisierung der Cache-Speicherscheiben der zweiten Ebene erzeugt.
  7. Physisch verteiltes Cache-Speichersystem nach Anspruch 1, wobei die Cache-Speicherscheiben der ersten Ebene jeweils an einen Prozessor gekoppelt sind, um die markierten geordneten Speicheranforderungen zu erzeugen.
  8. Physisch verteiltes Cache-Speichersystem nach Anspruch 7, wobei der Prozessor einen internen Cache-Speicher enthält, um die markierten geordneten Speicheranforderungen zu erzeugen.
  9. Physisch verteiltes Cache-Speichersystem nach Anspruch 1, das ferner einen an einen oder mehrere Prozessoren gekoppelten Cache-Speicher einer höheren Ebene umfaßt.
  10. Physisch verteiltes Cache-Speichersystem nach Anspruch 9, wobei der oder die Prozessoren einen internen Cache-Speicher umfassen, um markierte geordnete Speicheranforderungen zu erzeugen.
  11. Physisch verteiltes Cache-Speichersystem nach Anspruch 9, wobei der Cache-Speicher einer höheren Ebene die markierten geordneten Speicheranforderungen erzeugt.
  12. Verfahren für geordnete Speicheranforderungen in einem verteilten Cache-Speichersystem, welches umfaßt: – Anhängen einer Markierung an eine geordnete Speicheranforderung, die eine Requester-Kennung und eine Speicherfolgenummer angibt; – Senden der geordneten Speicheranforderung an eine Cache-Speicherscheibe im verteilten Cache-Speichersystem; – Vergleichen der Speicherfolgenummer mit einer erwarteten Folgenummer, die mit der Requester-Kennung verknüpft ist; und – falls sich die Speicherfolgenummer mit der erwarteten Folgenummer deckt, Ausführen der geordneten Speicheranforderung.
  13. Verfahren nach Anspruch 12, das ferner umfaßt: falls sich die Speicherfolgenummer nicht mit der erwarteten Folgenummer deckt, dann Speichern der markierten geordneten Speicheranforderung zur späteren Ausführung.
  14. Verfahren nach Anspruch 12, das ferner umfaßt: Aktualisieren der mit der Requester-Kennung verknüpften erwarteten Folgenummer in Reaktion auf die Ausführung der geordneten Speicheranforderung.
  15. Verfahren nach Anspruch 12, das ferner umfaßt: vor dem Ausführen der geordneten Speicheranforderung Bestimmen, ob frühere geordnete Speicheranforderungen des Requesters ausgeführt wurden, und falls ja, Ausführen der geordneten Speicheranforderung.
  16. Verfahren nach Anspruch 15, wobei der Schritt des Bestimmens festlegt, ob die mit den früheren geordneten Speicheranforderungen und der Requester-Kennung verknüpften Speicherfolgenummern von der Cache-Speicherscheibe empfangen wurden, um die geordnete Speicheranforderung auszuführen.
  17. Verfahren nach Anspruch 15, wobei bestimmt wird, daß nicht alle früheren geordneten Speicheranforderungen des Requesters ausgeführt wurden, und die Ausführung der aktuellen geordneten Speicheranforderung verzögert wird, bis alle früheren geordneten Speicheranforderungen ausgeführt wurden.
  18. Datensignalfluß, der zur folgerichtigen Ausführung von geordneten Speicheranforderungen in einen Cache-Speicher gekoppelt ist, umfassend: – eine Requester-Kennung, die einen Requester bezeichnet, der eine geordnete Speicheranforderung initiiert hat; – einen Tokenwert, der eine Folge der geordneten Speicheranforderung bezeichnet; und – eine Nachrichtenkennung, die angibt, daß die Requester-Kennung und der Tokenwert zum Lesen aus dem Cache-Speicher verfügbar sind.
  19. Datensignalfluß nach Anspruch 18, wobei die Nachrichtenkennung ferner angibt, daß die Requester-Kennung und der Tokenwert an eine geordnete Speicheranforderung angehängt sind.
  20. Datensignalfluß nach Anspruch 18, der ferner umfaßt: – die geordnete Speicheranforderung; – eine Adresse zum Speichern von Daten; und – Daten der geordneten Speicheranforderung, die gespeichert werden soll.
  21. Datensignalfluß nach Anspruch 18, wobeidie Nachrichtenkennung ferner angibt, daß die Requester-Kennung und der Tokenwert zum Aktualisieren einer Cache-Folgeanordnung dienen.
  22. Verarbeitungseinheit, die umfaßt: – eine Mehrzahl von Prozessoren, wobei jeder der Prozessoren eine oder mehrere Ebenen eines Prozessor-Cache-Speicher enthält; – ein an die Mehrzahl der Prozessoren gekoppeltes verteiltes Cache-Speichersystem, wobei das verteilte Cache-Speichersystem enthält: – ein primäres Verbindungsnetzwerk und – eine an das primäre Verbindungsnetzwerk gekoppelte Mehrzahl von Cache-Speicherscheiben; – eine Mehrzahl von Cache-Speichern, die zwischen der Mehrzahl von Prozessoren und dem primären Verbindungsnetzwerk des verteilten Cache-Speichersystems gekoppelt sind; wobei die Prozessoren oder Cache-Speicher eine eindeutige Requester-Kennung und ein Folge-Token-Register aufweisen, um eine Markierung zu erzeugen, die an geordnete Speicheranforderungen für die Mehrzahl der Cache-Speicherscheiben des verteilten Cache-Speichersystems angehängt werden soll, und die Markierung eine Requester-Kennung und ein mit der Requester-Kennung verknüpftes Folge-Token-Register enthält; und wobei jede Cache-Speicherscheibe eine Cache-Folgeanordnung aufweist, um geordnete Speicheranforderungen im verteilten Cache-Speichersystem folgerichtig auszuführen.
  23. Verarbeitungseinheit nach Anspruch 22, wobei eine oder mehrere geordnete Speicheranforderungen für die Mehrzahl von Cache-Speicherscheiben nicht folgerichtig von mindestens einer Cache-Speicherscheibe empfangen werden.
  24. Verarbeitungseinheit nach Anspruch 22, wobeidie Cache-Folgeanordnung eine Cache-Folgeanordnungstabelle zum Speichern von mit geordneten Speicheranforderungen verknüpften Folge-Tokens als Cache-Folgeeintrag enthält, wobei der Cache-Folgeeintrag die geordnete Speicheranforderung angibt, die die Cache-Speicherscheibe aktuell ausführen kann.
  25. Verarbeitungseinheit nach Anspruch 24, wobei eine der Cache-Speicherscheiben aus der Mehrzahl von Cache-Speicherscheiben eine geordnete Speicheranforderung empfängt, die ein Folge-Token aufweist, das sich mit dem Cache-Folgeeintrag für den jeweiligen Requester deckt, was angibt, daß es folgerichtig ist, und die eine Cache-Speicherscheibe die aktuelle geordnete Speicheranforderung ausführt.
  26. Verarbeitungseinheit nach Anspruch 25, wobeidie eine Cache-Speicherscheibe ferner den Cache-Folgeeintrag in der Mehrzahl von Cache-Speicherscheiben aktualisiert.
  27. Verarbeitungseinheit nach Anspruch 24, wobei eine der Cache-Speicherscheiben aus der Mehrzahl der Cache-Speicherscheiben eine geordnete Speicheranforderung mit einem Folge-Token empfängt, das sich nicht mit dem Cache-Folgeeintrag für den jeweiligen Requester deckt, was angibt, daß es nicht folgerichtig ist, und die eine Cache-Speicherscheibe die geordnete Speicheranforderung zur späteren folgerichtigen Ausführung mit anderen geordneten Speicheranforderungen speichert.
  28. Computersystem, welches umfaßt: – ein Eingabe-/Ausgabegerät; – einen dynamischen Direktzugriffsspeicher; und – einen Mehrprozessor-Prozessor, der mit dem dynamischen Direktzugriffsspeicher und dem Eingabe-/Ausgabegerät gekoppelt ist, wobei der Mehrprozessor-Prozessor enthält: – eine Mehrzahl von Prozessoren, die jeweils eine oder mehrere Ebenen mit Prozessor-Cache-Speicher enthalten; – ein verteiltes Cache-Speichersystem, das an die Mehrzahl der Prozessoren gekoppelt ist, wobei das verteilte Cache-Speichersystem ein Verbindungsnetzwerk und eine Mehrzahl von an das Verbindungsnetzwerk gekoppelten Cache-Speicherscheiben enthält; – eine Mehrzahl von Cache-Speichern, die zwischen der Mehrzahl von Prozessoren und dem Verbindungsnetzwerk gekoppelt sind; wobei die Prozessoren oder Cache-Speicher eine eindeutige Requester-Kennung und ein Folge-Token-Register zur Erzeugung einer Markierung aufweisen, die an geordnete Speicheranforderungen für die Mehrzahl von Cache-Speicherscheiben des verteilten Cache-Speichersystems angehängt werden soll, wobei die Markierung eine Requester-Kennung und ein mit der Requester-Kennung verknüpftes Folge-Token enthält; und wobei jede Cache-Speicherscheibe eine Cache-Folgeanordnung aufweist, um die geordneten Speicheranforderungen folgerichtig auf dem verteilten Cache-Speichersystem auszuführen.
  29. Computersystem nach Anspruch 28, wobei eine aus der Mehrzahl von Cache-Speicherscheiben eine geordnete Speicheranforderung mit einem Folge-Token empfängt, das sich mit einem Cache-Folgeeintrag für den jeweiligen Requester deckt, was bedeutet, daß es folgerichtig ist, und die eine Cache-Speicherscheibe die aktuelle geordnete Speicheranforderung ausführt.
  30. Computersystem nach Anspruch 29, wobei die eine Cache-Speicherscheibe ferner den Cache-Folgeeintrag in der Mehrzahl von Cache-Speicherscheiben aktualisiert.
  31. Computersystem nach Anspruch 28, wobei eine geordnete Speicheranforderung eine Speicheranforderung eines Requesters ist, die folgerichtig mit Bezug auf andere geordnete Speicheranforderungen auszuführen ist.
  32. Computersystem nach Anspruch 31, wobei frühere geordnete Speicheranforderungen zu verarbeiten sind, bevor eine aktuelle geordnete Speicheranforderung verarbeitet werden kann.
  33. Computersystem nach Anspruch 30, wobei eine ungeordnete Speicheranforderung eine Speicheranforderung eines Requesters ist, die außerhalb der Reihenfolge mit Bezug auf andere geordnete Speicheranforderungen ausgeführt werden kann.
  34. Ein Mehrprozessor, der eine integrierte Schaltung umfaßt, die enthält: – ein Verbindungsnetzwerk; – eine Mehrzahl von an das Verbindungsnetzwerk gekoppelten Prozessoren, die zum Koppeln von markierten geordneten Speicheranforderungen in das Verbindungsnetzwerk dienen, wobei jede markierte geordnete Speicheranforderung eine Markierung aufweist, die eine Requester-Kennung und ein Speicherfolge-Token aufweist; und – eine Mehrzahl von an das Verbindungsnetzwerk gekoppelten Cache-Speicherscheiben, die zur folgerichtigen Ausführung geordneter Speicheranforderungen der Mehrzahl von Prozessoren in Antwort auf jede Markierung der markierten geordneten Speicheranforderungen dienen.
  35. Mehrprozessor nach Anspruch 34, wobeieine geordnete Speicheranforderung eine Speicheranforderung ist, die mit Bezug auf andere geordnete Speicheranforderungen des Prozessors folgerichtig auszuführen sind.
  36. Mehrprozessor nach Anspruch 35, wobei frühere geordnete Speicheranforderungen zu verarbeiten sind, bevor eine aktuelle geordnete Speicheranforderung verarbeitet werden kann.
  37. Mehrprozessor nach Anspruch 35, wobei eine ungeordnete Speicheranforderung eine Speicheranforderung ist, die außerhalb der Reihenfolge mit Bezug auf andere geordnete Speicheranforderungen ausgeführt werden kann.
  38. Mehrprozessor nach Anspruch 34, wobei jede der Mehrzahl von Cache-Speicherscheiben eine Cache-Folgeanordnung aufweist, die zur folgerichtigen Ausführung der geordneten Speicheranforderungen auf dem Verbindungsnetzwerk dient.
  39. Mehrprozessor nach Anspruch 38, wobei die Cache-Speicheranordnung enthält: eine Cache-Folgeanordnungstabelle zum Speichern des mit den geordneten Speicheranforderungen verknüpften Speicherfolge-Tokens als Cache-Folgeeintrag, wobei der Cache-Folgeeintrag die geordnete Speicheranforderung angibt, die die Cache-Speicherscheibe aktuell ausführen kann.
  40. Mehrprozessor nach Anspruch 34, wobei die Mehrzahl der an das Verbindungsnetzwerk gekoppelten Cache-Speicherscheiben ein verteiltes Cache-Speichersystem bilden, die von der Mehrzahl der Prozessoren gemeinsam benutzt werden.
DE112004001984T 2003-10-22 2004-10-15 Verfahren und Vorrichtung für effizient geordnete Speicher in einem Verbindungsnetzwerk Withdrawn DE112004001984T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/691,716 2003-10-22
US10/691,716 US7338424B2 (en) 2002-10-25 2003-10-22 Packaging machine
PCT/US2004/034147 WO2005041047A2 (en) 2003-10-22 2004-10-15 Method and apparatus for efficient ordered stores over an interconnection network

Publications (1)

Publication Number Publication Date
DE112004001984T5 true DE112004001984T5 (de) 2006-08-17

Family

ID=34521922

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112004001984T Withdrawn DE112004001984T5 (de) 2003-10-22 2004-10-15 Verfahren und Vorrichtung für effizient geordnete Speicher in einem Verbindungsnetzwerk

Country Status (4)

Country Link
JP (1) JP4658064B2 (de)
KR (1) KR100841130B1 (de)
DE (1) DE112004001984T5 (de)
WO (1) WO2005041047A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190820B2 (en) 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8433851B2 (en) 2007-08-16 2013-04-30 International Business Machines Corporation Reducing wiring congestion in a cache subsystem utilizing sectored caches with discontiguous addressing
JP4703738B2 (ja) * 2009-03-18 2011-06-15 富士通株式会社 ストレージ装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05143373A (ja) * 1991-11-18 1993-06-11 Nec Corp 共有データ制御方式
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
JP3505728B2 (ja) * 1993-01-13 2004-03-15 株式会社日立製作所 記憶制御装置
JPH07114515A (ja) * 1993-10-19 1995-05-02 Hitachi Chem Co Ltd 同期通信用ネットワークを有する分散メモリ計算機
US5893165A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. System and method for parallel execution of memory transactions using multiple memory models, including SSO, TSO, PSO and RMO
US5930822A (en) * 1996-09-27 1999-07-27 Hewlett-Packard Co. Method and system for maintaining strong ordering in a coherent memory system
US6529999B1 (en) * 1999-10-27 2003-03-04 Advanced Micro Devices, Inc. Computer system implementing system and method for ordering write operations and maintaining memory coherency
US6748501B2 (en) * 2000-12-30 2004-06-08 International Business Machines Corporation Microprocessor reservation mechanism for a hashed address system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190820B2 (en) 2008-06-13 2012-05-29 Intel Corporation Optimizing concurrent accesses in a directory-based coherency protocol
DE102009023898B4 (de) 2008-06-13 2020-06-18 Intel Corporation Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll

Also Published As

Publication number Publication date
JP2007509439A (ja) 2007-04-12
KR100841130B1 (ko) 2008-06-24
WO2005041047A2 (en) 2005-05-06
KR20060063994A (ko) 2006-06-12
WO2005041047A3 (en) 2005-08-18
JP4658064B2 (ja) 2011-03-23

Similar Documents

Publication Publication Date Title
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE69722079T2 (de) Ein Mehrrechnersystem mit Anordnung zum Durchführen von Blockkopieroperationen
DE69721640T2 (de) Multiprozessor-Rechnersystem und Verfahren zur Steuerung des Verkehrsflusses
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69724354T2 (de) Ein Mehrprozessorrechnersystem mit lokalen und globalen Adressräumen und mehreren Zugriffsmoden
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE69724353T2 (de) Mehrrechnersystem mit einem Drei-Sprung-Kommunikationsprotokoll
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE60202926T2 (de) Multicomputersystem mit konfigurierbaren Schnittstellen für flexible Systemkonfigurationen
DE69832943T2 (de) Sequenzsteuerungsmechanismus für ein switch-basiertes Mehrprozessorsystem
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
DE69729243T2 (de) Multiprozessorsystem mit Vorrichtung zur Optimierung von Spin-Lock-Operationen
DE69727856T2 (de) Multiprozessorsystem mit Konsistenzfehler-Registrierung mit entsprechendem Verfahren
DE102008048630B4 (de) Speicheranordnung und Speichersystem
DE102007052853B4 (de) Zeilentauschschema zur Verringerung von Rückinvalidierungen in einem Snoopfilter
DE112006002565T5 (de) Befehlsunterstützte Cache-Verwaltung für den effizienten Einsatz von Cache und Speicher
DE60205231T2 (de) Vorrichtung und verfahren zur effizienten zuteilung von speicherbandbreite in einem netzwerkprozessor
DE112005002364T5 (de) Heterogene Prozessoren mit gemeinsamem Cache
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112006001167T5 (de) Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken
DE10232926A1 (de) Cachesystem mit Leitungsgruppen und mit Kohärenz sowohl für einzelne Leitungen als auch Gruppen von Leitungen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 112004001984

Country of ref document: DE

Date of ref document: 20060817

Kind code of ref document: P

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

Effective date: 20140501