DE10394081T5 - Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher - Google Patents

Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher Download PDF

Info

Publication number
DE10394081T5
DE10394081T5 DE10394081T DE10394081T DE10394081T5 DE 10394081 T5 DE10394081 T5 DE 10394081T5 DE 10394081 T DE10394081 T DE 10394081T DE 10394081 T DE10394081 T DE 10394081T DE 10394081 T5 DE10394081 T5 DE 10394081T5
Authority
DE
Germany
Prior art keywords
data
buffer
memory
write
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE10394081T
Other languages
English (en)
Other versions
DE10394081B4 (de
Inventor
William A. Hughes
Patrick Conway
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of DE10394081T5 publication Critical patent/DE10394081T5/de
Application granted granted Critical
Publication of DE10394081B4 publication Critical patent/DE10394081B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Communication Control (AREA)

Abstract

Ein Datenverarbeitungssystem (100, 600) besitzt eine Speicherhierarchie mit einem Pufferspeicher (124, 624) und einem niedriger rangigen Speichersystem (170, 650). Ein Datenelement mit einem speziellen „Schreiben mit Einprägen”-Attribut wird von einem Datenerzeuger (160, 640) empfangen, etwa einer Ethernet-Steuerung. Das Datenelement wird zu dem Pufferspeicher (124, 624) weitergeleitet, ohne auf das niedriger rangige Speichersystem 170, 650) zuzugreifen. Nachfolgend wird mindestens eine Pufferspeicherzeile, die das Datenelement enthält, in dem Pufferspeicher (124, 624) aktualisiert.

Description

  • Technisches Gebiet
  • Die vorliegende Erfindung betrifft im Allgemeinen Datenverarbeitungssysteme und betrifft insbesondere Datenverarbeitungssysteme mit Cache- bzw. Pufferspeichern.
  • Hintergrund der Erfindung
  • Eine bekannte Art, die Leistung eines Computersystems zu erhöhen, besteht darin, einen lokalen Hochgeschwindigkeitsspeicher einzurichten, der als ein Cache- bzw. Pufferspeicher bekannt ist. Ein Pufferspeicher erhöht die Systemleistungsfähigkeit, da eine hohe Wahrscheinlichkeit besteht, dass sobald die zentrale Recheneinheit (CPU) auf ein Datenelement in einer speziellen Adresse zugreift, sie auch anschließend auf eine benachbarte Adresse zugreift. Der Pufferspeicher liest Daten aus und speichert diese, die benachbart zu dem von einem langsameren Hauptspeicher oder Pufferspeicher mit geringerer Priorität angeforderten Datenelement angeordnet sind. In Computersystemen mit äußerst hoher Leistungsfähigkeit können diverse Pufferspeicher in einer hierarchischen Anordnung vorgesehen sein. Der Pufferspeicher, der der CPU am nächsten ist, ist als der Cache- bzw. Pufferspeicher der oberen Ebene oder „L1”-Pufferspeicher bekannt, und ist der Pufferspeicher mit höchster Priorität in der Hierarchie und ist im Allgemeinen der schnellste. Andere im Allgemeinen langsamere Pufferspeicher werden dann in absteigender Reihenfolge in der Hierarchie angeordnet, wobei mit dem „L2”-Pufferspeicher, etc. begonnen wird, bis der Pufferspeicher mit geringster Priorität erreicht wird, der mit dem Hauptspeicher verbunden ist.
  • Ein Pufferspeicher folgt gewissen Strategien, wenn Daten gespeichert und verworfen werden. Beispielsweise folgen viele Prozessoren einer „Zuweisen beim Schreiben” Politik, die vorgibt, dass die Pufferspeicherzeile, die den Speicherplätzen entspricht, die von der CPU beschrieben werden, in dem Pufferspeicher gespeichert wird. Typischerweise folgen Pufferspeicher einer Politik, die als „am längsten nicht benutzt” (LRU) bekannt ist, um zu bestimmen, welcher Platz zu verwerfen ist, um für ein neues Datenelement Platz zu schaffen, wenn alle Speicherplätze belegt sind.
  • Pufferspeicher enthalten typischerweise mehrere Statusbits, um den Status der Pufferspeicherzeile zu kennzeichnen, um die Datenkohärenz im ganzen System aufrecht zu erhalten. Ein übliches Kohärenzprotokoll ist bekannt als „MOESI”-Protokoll. Gemäß diesem Protokoll enthält jede Pufferspeicherzeile Statusbits, um anzuzeigen, in welchem MOESI-Zustand sich die Zeile befindet, worin Bits eingeschlossen sind, die anzeigen, dass die Speicherzeile modifiziert wurde (M), dass die Speicherzeile exklusiv (E) oder gemeinsam (S) ist, oder dass die Speicherzeile unzulässig (I) ist. Der zugehörige (O) Zustand zeigt an, dass die Zeile in einem einzelnen Pufferspeicher modifiziert ist, dass es mehrere gemeinsame Kopien in anderen Pufferspeichern geben kann und dass die Daten im Speicher veraltet sind.
  • In einer typischen Konfiguration werden alle Pufferspeicher mit der CPU in der gleichen integrierten Schaltung kombiniert und der Hauptspeicher ist außerhalb des Chips angeordnet. Der Hauptspeicher ist der langsamste und kostengünstigste Speicher in dem System und kann aus kostengünstigen aber relativ langsamen dynamischen Speicherchips mit wahlfreiem Zugriff (DRAM) aufgebaut werden. Diese Eigenschaft führt zu einem Engpass beim Zugriff auf den außerhalb des Chips angeordneten DRAM-Hauptspeicher und es ist wünschenswert, diese Engpässe wenn möglich zu vermeiden. Fernen stiegen in den vergangenen Jahren die Mikroprozessorgeschwindigkeiten schneller an als die DRAM-Zugriffsgeschwindigkeiten, wodurch das Problem der Engpässe, die sogenannte „Speicherwand”, noch verschärft wurde. Es ist daher ein Verfahren und ein Datenprozessor erforderlich, die die Zugriffsanforderungen für den Hauptspeicher reduzieren können, um das Systemleistungsverhalten zu verbessern. Ein derartiges Verfahren und ein derartiger Datenprozessor werden durch die vorliegende Erfindung bereitgestellt, deren Merkmale und Vorteile deutlicher aus der folgenden detaillierten Beschreibung hervorgehen, wenn diese in Verbindung mit den begleitenden Zeichnungen studiert wird.
  • Überblick über die Erfindung
  • Die vorliegende Erfindung stellt in einem Aspekt ein Verfahren zur Verwendung in einem Datenverarbeitungssystem bereit, das eine Speicherhierarchie mit einem Cache- bzw. Pufferspeicher und einem niedriger rangigem Speichersystem aufweist. Ein Datenelement mit einem speziellen „Schreiben mit Einprägen”-Attribut wird von einem Datenerzeuger empfangen. Das Datenelement wird zu dem Pufferspeicher weitergeleitet, ohne auf das niedrig rangige Speichersystem zuzugreifen. Anschließend wird mindestens eine Speicherzeile, die das Datenelement enthält, in dem Pufferspeicher aktualisiert.
  • In einem weiteren Aspekt der vorliegenden Erfindung wird ein Verfahren zur Verwendung in einem Datenverarbeitungssystem mit mehreren Knotenpunkten bereitgestellt, wovon jeder eine zentrale Recheneinheit und einen zugeordneten Pufferspeicher aufweist. Ein „Schreiben mit Einprägen”-Paket mit einem dazugehörigen Datenelement wird von einem Datenerzeuger empfangen. Ein Verzeichnis wird überprüft, um zu erkennen, ob das Datenelement bereits in dem Verzeichnis in einem vorbestimmten Zustand anwesend ist. Wenn das Datenelement in dem Verzeichnis in dem vorbestimmten Zustand nicht vorhanden ist, wird ein Verzeichniseintrag für das Datenelement erzeugt und das Datenelement wird in ein niedriger rangiges Speichersystem geschrieben. Wenn das Datenelement bereits in dem Verzeichnis in dem vorbestimmten Zustand vorhanden ist, wird das Datenelement zu einem Pufferspeicher weitergeleitet, der der Besitzer des Datenelements ist, ohne dass auf das niedriger rangige Speichersystem zugegriffen wird.
  • In einem weiteren Aspekt der vorliegenden Erfindung wird ein Datenprozessor mit einer zentralen Recheneinheit mit einem Pufferspeicher, einer Host- bzw. Leitrechnerbrücke und einer Speichersteuerung bereitgestellt. Die zentrale Recheneinheit ist ausgebildet, einen Vor-Auslesevorgang in Reaktion auf das Empfangen eines Sondierungs-Vorauslese-Vorgangs zu initiieren. Die Leitrechnerbrücke ist mit der zentralen Recheneinheit gekoppelt und ist ausgebildet, ein „Schreiben mit Einprägen”-Paket für ein Datenelement von einem Datenerzeuger zu empfangen. Die Speichersteuerung ist mit der zentralen Recheneinheit und der Leitrechnerbrücke gekoppelt und ist ausgebildet, mit einem niedriger rangigen Speichersystem verbunden zu werden und besitzt einen Ausgang, der mit der zentralen Recheneinheit verbunden ist. Die Speichersteuerung umfasst einen Puffer und speichert das Datenelement von der Leitrechnerbrücke in dem Puffer. Die Speichersteuerung liefert die Sondierungs-Vorauslese-Anforderung zu der zentralen Recheneinheit in Reaktion auf den Empfang des Datenelements und liefert das Datenelement von dem Puffer in Reaktion auf das Lesen der Vor-Auslese-Anforderung durch die zentrale Recheneinheit.
  • In einem noch weiteren Aspekt der vorliegenden Erfindung stellt diese einen Datenprozessor mit einer zentralen Recheneinheit mit einem Pufferspeicher, einer Leitrechnerbrücke und einer Verzeichnis/Speichersteuerung bereit. Die Leitrechnerbrücke ist mit der zentralen Recheneinheit gekoppelt und ist ausgebildet, ein „Schreiben mit Einprägen”-Paket für ein Datenelement von einem Datenerzeuger zu empfangen. Die Verzeichnis/Speicher-Steuerung ist mit der zentralen Recheneinheit und der Leitrechnerbrücke verbunden und ist ausgebildet, mit einem niedriger rangigen Speichersystem verbunden zu werden, und besitzt ferner einen Ausgang, der mit der zentralen Recheneinheit verbunden ist. Die Verzeichnis/Speichersteuerung reagiert auf das „Schreiben mit Einprägen”-Paket, um ein Verzeichnis davon zu überprüfen, um zu erkennen, ob ein Speicherzustand einer mit dem Datenelement verknüpften Zeile in einem vorbestimmten Zustand ist. Wenn dies der Fall ist, sendet die Verzeichnis/Speichersteuerung das Datenelement zu der zentralen Recheneinheit zur Speicherung in dem Pufferspeicher, ohne auf das niedriger rangige Speichersystem zuzugreifen.
  • In einer noch weiteren Form der vorliegenden Erfindung wird ein Datenprozessor mit einer zentralen Recheneinheit mit einem Pufferspeicher, einer Leitrechnerbrücke und einer Einrichtung zum Weiterleiten bereitgestellt. Die Leitrechnerbrücke ist mit der zentralen Recheneinheit gekoppelt und ist ausgebildet, ein „Schreiben mit Einprägen”-Paket für ein Datenelement von einem Datenerzeuger zu empfangen. Die Einrichtung zum Weiterleiten ist mit der zentralen Recheneinheit, der Leitrechnerbrücke und einem niedriger rangigen Speichersystem gekoppelt und leitet das Datenelement zu der zentralen Recheneinheit zur Speicherung in dem Pufferspeicher weiter, ohne auf das niedriger rangige Speichersystem zuzugreifen.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Erfindung wird im Folgenden in Verbindung mit den angefügten Zeichnungen beschrieben, wobei gleiche Bezugszeichen gleiche Elemente bezeichnen, und:
  • 1 ein Zeitablaufdiagramm zeigt, das mit dem Datenstrom und den Steuersignalen in einem sondierungsbasierten Datenverarbeitungssystem gemäß dem Stand der Technik verknüpft ist;
  • 2 ein Zeitablaufdiagramm zeigt, das mit dem Datenstrom und Steuersignalen in einem sondierungsbasierten Datenverarbeitungssystem gemäß der folgenden Erfindung verknüpft ist;
  • 3 eine Blockansicht eines sondierungsbasierten Datenverarbeitungssystems mit mehreren Prozessoren gemäß der vorliegenden Erfindung zeigt;
  • 4 eine Blockansicht eines sondierungsbasierten Datenverarbeitungssystem mit einem einzelnen Prozessor gemäß der vorliegenden Erfindung zeigt;
  • 5 eine Blockansicht des Datenverarbeitungssystems aus 4 zeigt, wobei der Datenstrom während des Ausführens eines „Schreibvorgangs mit Einprägen” gezeigt ist;
  • 6 eine Blockansicht eines Teils des Datenverarbeitungssystems aus 4 ist, das eine Speichersteuerung beinhaltet;
  • 7 eine Blockansicht eines Teils der zentralen Recheneinheit aus 4 mit dem Pufferspeicher zeigt;
  • 8 eine Codierungstabelle eines Hypertransport-Pakets zeigt, das zur Bildung eines „Schreiben mit Einprägen”-Pakets verwendet werden kann;
  • 9 ein Zeitablaufdiagramm zeigt, das mit dem Datenstrom und Steuersignalen in einem verzeichnisbasierten Datenverarbeitungssystem gemäß der vorliegenden Erfindung verknüpft ist;
  • 10 eine Blockansicht eines verzeichnisbasierten Datenverarbeitungssystems gemäß der vorliegenden Erfindung zeigt; und
  • 11 eine Eingabe in die Verzeichnis/Speichersteuerung aus 10 zeigt.
  • Art bzw. Arten zum Ausführen der Erfindung
  • 1 zeigt ein Zeitablaufdiagramm 10 im Zusammenhang mit dem Datenstrom und Steuersignalen in einem sondierungsbasierten Datenverarbeitungssystem gemäß dem Stand der Technik. Wie in 1 gezeigt ist, repräsentiert die vertikale Achse die Zeit, wobei diese von oben nach unten verläuft. 1 zeigt drei Bauelemente (Knotenpunkte) als vertikale Linien, die entlang der horizontalen Richtung angeordnet sind. Ein erster Knotenpunkt, der als „Knotenpunkt C” bezeichnet ist, ist ein Datenerzeuger. Beispielsweise kann der Knotenpunkt C einem Eingabe/Ausgabe-Gerät, etwa einem Empfänger eines Datenkommunikationskanals entsprechen. In diesem Beispiel kann der Knotenpunkt C eine zugeordnete Direktspeicherzugriffs-(DMA)Steuerung aufweisen, um den Datenfluss zu unterstützen. Ein zweiter Knotenpunkt, der als „Knotenpunkt B” bezeichnet ist, ist ein niedriger rangiges Speichersystem und umfasst einen Hauptspeicher und möglicherweise einen oder mehrere Pufferspeicher mit geringerer Priorität. Ein dritter Knotenpunkt, der als „Knotenpunkt A” bezeichnet ist, ist ein Datenverbraucher mit einem Pufferspeicher, etwa einer zentralen Recheneinheit, auf der ein Anwenderprogramm läuft. Im Zusammenhang mit der Datenkommunikation würde der Knotenpunkt C Daten in Rahmen bzw. Blöcken empfangen und die Daten in dem Speicher im Knotenpunkt B speichern, um diese damit für den Prozessor im Knotenpunkt A verfügbar zu halten, wo sie dann nach Bedarf durch das Anwenderprogramm angewendet werden.
  • Es werden nun der Datenfluss und die Steuersignale beschrieben. Zunächst empfängt das I/O-Gerät im Knotenpunkt C einen Datenrahmen über dessen Kommunikationsverbindung. Die zugeordnete DMA-Steuerung im Knotenpunkt C schreibt die Daten für den Rahmen, indem ein DMA-Schreibvorgang zu einer Speicherstelle durchgeführt wird, wie dies durch einen Pfeil 12 dargestellt ist. Während einer Zeitdauer 14 schreibt die Speichersteuerung im Knotenpunkt B die Daten in den Speicher und gibt gleichzeitig eine Invalidisierungssondierung an den Knotenpunkt A aus, wie dies durch einen Pfeil 16 gezeigt ist. Diese Invalisierungssondierung informiert den Pufferspeicher im Knotenpunkt A, dass die Daten modifiziert werden, und wenn der Knotenpunkt A eine Kopie der zugeordneten Speicherzeile oder -zeilen aufweist, bringt er sie in den unzulässigen Zustand. Der Knotenpunkt A antwortet mit einer Sondierungsantwort, wie dies durch einen Pfeil 18 gezeigt ist. Später wird die Anwendungssoftware, die auf dem Knotenpunkt A läuft, eine Leseanforderung für die Daten initiieren, wie dies durch die Linie 20 repräsentiert ist. Die Speichersteuerung im Knotenpunkt B liest die Daten während einer Zeitdauer 22, nach welcher sie die Daten an den Knotenpunkt A liefert, wie dies durch den Pfeil 24 gezeigt ist. Schließlich schließt der Knotenpunkt A das Füllen der Speicherzeile während einer Zeitdauer 26 ab.
  • Zu beachten ist, dass dieser konventionelle Vorgang einen Schreibvorgang und einen Lesevorgang in dem Hauptspeicher erfordert und damit den Hauptspeicherbus während der Zeitdauern 24 und 22 besetzt. Für ein System, in dem ein Kommunikationsprotokoll mit großer Bandbreite eingerichtet ist, würde dieser Vorgang häufig wiederholt werden, wodurch ein merklicher Anteil der verfügbaren Bandbreite aufgebraucht wird. In vergangenen Jahren ist die Arbeitsgeschwindigkeit von Hauptspeichern angestiegen, jedoch nicht so schnell wie die Prozessorgeschwindigkeiten und es ist daher eine Verringerung der Hauptspeicherbusbandbreite, die für diesen Vorgang erforderlich ist, wünschenswert.
  • Um die Anforderungen hinsichtlich der Hauptspeicherbusbandbreite zu verringern, erkannten die Erfinder, dass die Kommunikationsaktivität ein Spezialfall ist, wobei auf den Daten lediglich innerhalb des Pufferspeichers des Prozessors operiert werden kann, wobei die Notwendigkeit zur Datenspeicherung in dem Hauptspeicher vollkommen vermieden werden kann. Genauer gesagt, Datenkommunikationsempfangspuffer sind typischerweise Ringpuffer im Speichersystem, in die der Datenerzeuger Daten schreibt und aus denen ein Eingangs/Ausgangstreiber Datenkopfprotokollinformationen (Verbraucher 1) ausliest und aus denen die Anwenderprogramme Nutzdaten (Verbraucher 2) auslesen. Um eine Speicherung der Daten in dem Hauptspeicher zu vermeiden, haben die Erfinder ein Verfahren und ein entsprechendes Datenverarbeitungssystem erdacht, um einen derartigen Zustand zu kennzeichnen und um zu verhindern, dass überhaupt auf den Hauptspeicher zugegriffen wird. Dies kann durch eine einfache Modifizierung eines Datenprozessors verwirklicht werden, so dass dieser ein spezielles „Schreiben mit Einprägen”-Attribut in einem empfangenen Datenpaket erkennt und darauf durch Unterdrücken des Zugriffs auf den Hauptspeicher und Weiterleiten der Daten direkt zu dem Pufferspeicher der CPU und durch Versetzen der Speicherzeile in einen gewissen Zustand reagiert. Ein derartiges Verfahren kann mit Bezug zu 2 verstanden werden, das ein Zeitablaufdiagramm 50 zeigt, das mit dem Datenfluss und Steuersignalen in einem sondierungsbasierten Datenverarbeitungssystem gemäß der vorliegenden Erfindung assoziiert ist. Wie bei 1 repräsentiert auch hier die vertikale Achse die Zeit, wobei die Zeit von oben nach unten verläuft, und die horizontale Achse zeigt die gleichen drei Knotenpunkte, die zuvor beschrieben sind.
  • Der Vorgang beginnt mit einer speziellen DMA-Schreibanforderung 52, die als ein „Schreiben mit Einführung” Paket bekannt ist, zwischen dem I/O-Gerät am Knotenpunkt C und der Speichersteuerung am Knotenpunkt B. In Reaktion auf diese spezielle Schreibanforderung führt die Speichersteuerung am Knotenpunkt B das Lesen eines Verzeichnisses während einer Zeitdauer 54 durch und sendet dann eine Rundfunksondierungsvoranfrage, die auch als eine „Schnüffel”-Voranfrage bezeichnet ist und die als ein Pfeil 56 dargestellt ist, an den Knotenpunkt A und alle anderen Prozessoren in dem System, um diese über die Anwesenheit von Daten zu informieren, die in den Pufferspeicher beim Knotenpunkt A einzuprägen sind. Der Knotenpunkt A, der bereits die Speicheradresse für seinen lokalen Pufferspeicher belegt hat, reagiert mit einer Sondierungsantwort, die durch einen Pfeil 58 bezeichnet ist. Die Daten werden in einem Speicherpuffer in der Speichersteuerung gehalten und das Schreiben in niedriger rangige Speichersysteme wird verzögert. Später sendet der Datenprozessor im Knotenpunkt A eine Vorabholungsausleseanforderung an den Knotenpunkt B, wie dies durch einen Pfeil 60 gekennzeichnet ist. Die Speichersteuerung des Knotenpunkts B reagiert darauf so, dass das Datenelement aus dem Speicherpuffer während einer Zeitdauer 62 ausgelesen wird und die Daten zu dem Knotenpunkt A gesendet werden, wie dies durch einen Pfeil 64 dargestellt ist. Wenn der Datenprozessor am Knotenpunkt A in der Lage ist, die Vorabholungsleseanforderung normal zu senden, ist die Speichersteuerung am Knotenpunkt B in der Lage, die Daten zu senden, ohne überhaupt auf den Hauptspeicher zuzugreifen. Wenn jedoch die Speichersteuerung im Knotenpunkt B den Speicherpuffer für einen anderen Zweck erneut verwenden muss, um etwa eine normale Schreibanforderung zu erfüllen, wenn alle anderen Puffer voll sind, bevor der Prozessor die Vorabholungslese anforderung sendet, dann schreibt die Speichersteuerung die Daten stattdessen in den Speicher. Schließlich vervollständig der Knotenpunkt A das Füllen der Pufferspeicherzeile während einer Zeitdauer 66. Wenn die Daten nachfolgend in dem Knotenpunkt A verwendet werden, ist die Pufferspeicherzeile für die Aufhebung der Zuordnung während des normalen Prozessablaufes verfügbar, wobei eine entsprechende Strategie des Speichers für die Aufhebung der Zuordnung verwendet wird, etwa die am weitest zurückliegende Verwendung. Da das Datenelement von dem Prozessor lediglich ein mal verwendet wird, wird die Zeile in dem Pufferspeicher nicht modifiziert und es besteht kein Bedarf, die Zeile zurück in den Hauptspeicher zu schreiben. Somit verhindert dieses Verfahren normalerweise jegliche Schreibaktivitäten in den Hauptspeicher und verbraucht lediglich einen geringen Anteil an Bandbreite für die Speichersteuerung am Knotenpunkt B, um die Verzeichnisauslese und die Lesepuffervorgänge auszuführen.
  • 3 zeigt eine Blockansicht eines sondierungsbasierten Datenverarbeitungssystems 80 mit mehreren Prozessoren gemäß der vorliegenden Erfindung. Das Datenverarbeitungssystem 80 umfasst einzelne Prozessoren 81 bis 84, die als „A”, „B”, „C” und „D” bezeichnet sind und die in einer Ringanordnung verbunden sind, wobei die sogenannte kohärente Form des Hypertransport-Kommunikationsprotokolls verwendet ist. Wie in 3 gezeigt ist, besitzen die Prozessoren 81 bis 84 entsprechende Datenerzeuger in Form von I/O-Steuerungen 85 bis 88, die entsprechend zugeordnet sind und die als „I/O A”, „I/O B”, „I/O C” und „I/O D” bezeichnet sind, wobei diese mit einem jeweiligen der Prozessoren 81 bis 84 in direkter Weise verbunden sind, wobei die sogenannte nicht kohärente Form des Hypertransport-Protokolls verwendet ist. Des weiteren ist jedem der Prozessoren 81 bis 84 ein entsprechender lokaler Speicher 91 bis 94 zugewiesen. Das Hypertransport-Protokoll ermöglicht es, dass die Verarbeitung an verschiedene Punkte um den Ring herum verteilt wird. Beispielsweise kann die I/O-Steuerung 87 einen „Schreiben mit Einprägen”-Vorgang an ihrem zugeordneten lokalen Prozessor 83 initiieren, und die Speichersteuerung an dem Heimknotenpunkt im Prozessor 83 sendet eine Sondierungsanfrage nicht nur für die Daten in ihrem lokalen Pufferspeicher, sondern unter Verwendung des kohärenten HyperTransport-Protokolls für alle Pufferspeicher in dem System. In einem weiteren Beispiel kann der I/O-Treiber oder die Anwendung auf einem weiteren Prozessor 81 laufen, und der Heimknotenpunkt für die Daten kann ein noch weiterer Prozessor, etwa der Prozessor 82, sein. Wie in 3 gezeigt ist, kann die I/O-Steuerung 87 diejenige sein, die tatsächlich ein „Schreiben mit Einprägen”-Paket zu dem Prozessor 83 sendet.
  • 4 zeigt eine Blockansicht eines sondierungsbasierten Datenverarbeitungssystems 100 mit einem einzelnen Prozessor gemäß der vorliegenden Erfindung. Das Datenverarbeitungssystem 100 umfasst im Allgemeinen einen Datenprozessor in Form eines Einzelchipmikroprozessors 120, eine Eingabe/Ausgabe-(I/O)Einrichtung 160 und einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM) 170. Der Mikroprozessor 120 umfasst im Allgemeinen eine zentrale Recheneinheit (CPU) 122, eine Speichersteuerung 126, einen Querstrichschalter, der als „XBAR” 128 bezeichnet ist, und drei Leitrechnerbrücken 130, 140 und 150, die jeweils mit „HT” für Hypertransport bezeichnet sind, was im Folgenden detaillierter erläutert ist. Die CPU 122 ist ein Prozessor, der ausgebildet ist, Anweisungen des sogenannten x86 Instruktionssatzes auszuführen. Der x86 Instruktionssatz basiert auf dem Instruktionssatz des 8086 Mikroprozessors, der zuerst von Intel Corporation, Santa Clara, Kalifornien, hergestellt wurde. Die CPU 122 umfasst jedoch viele anspruchsvolle Funktionen für eine äußerst leistungsfähige Ausführung von x86-Programmen, einschließlich einer „Pipeline”- und Superscalar-Struktur. Die CPU 122 umfasst mindestens einen Pufferspeicher 124 zur Speicherung häufig verwendeter Daten. In einer bevorzugten Ausführungsform weist die CPU tatsächlich zwei L1-Pufferspeicher auf, einen für Instruktionen und den anderen für Daten, und weist einen L2-Pufferspeicher auf, der gemeinsam für die Instruktions- und Datenströme verwendet wird. In dieser Form speichert der gemeinsame L2-Pufferspeicher die Daten, die mit dem „Schreiben mit Einprägen”-Attribut versehen sind.
  • Jedoch ist die Erfindung auf eine beliebige CPU mit mindestens einem Pufferspeicher anwendbar.
  • Die Speichersteuerung 126 ist der Mechanismus für den Datentransfer zwischen dem Mikroprozessor 120 und dem DRAM 170. Die Speichersteuerung 126 entlastet die Aufgabe zur Initiierung und zeitlichen Steuerung von Speicherzugriffen für die CPU 122. Sie enthält interne Warteschlangen, um eine effiziente Nutzung des externen Busses zu dem DRAM 170 zu ermöglichen. In anderen Ausführungsformen kann der DRAM 170 durch ein niedriger rangiges Speichersystem mit einem oder mehreren zusätzlichen Pufferspeichern und einem Hauptspeicher ersetzt werden durch ein statisches RAM, einen nicht flüchtigen Speicher, etc.
  • XBAR 128 ist eine Schalt/Multiplex-Schaltung, die so gestaltet ist, um die internen Busse des Mikroprozessors 120 miteinander zu verbinden.
  • Die Leitrechnerbrücken 130, 140 und 150 sind mit Einrichtungen außerhalb des Mikroprozessors 120 über Ausgangskanäle 122, 142 und 152 und über Eingangskanäle 124, 144, 154 verbunden. Jede der Leitrechnerbrücken 130, 140 und 150 ist kompatibel mit der HyperTransport-I/O-Verbindungsspezifikation, Revision 103, 2001, HyperTransport Technology Consortium, und ist in der Lage, einen Durchsatz von 3,2 GB/Sekunde zu erreichen, wenn eine 1600 MHz-Datenrate angewendet wird. Die Hypertransport-Technologie ist eine paketbezogene Verbindung, die auf zwei unabhängigen unidirektionalen Kabelsätzen eingerichtet ist. So steht beispielsweise die Leitrechnerbrücke 130 mit der I/O-Einrichtung 160 über eine Ausgangsverbindung 132 und eine Eingangsverbindung 124 in Verbindung. Die Hypertransportverbindung ist normalerweise von Punkt zu Punkt und verbindet zwei Geräte bzw. Einrichtungen. Es können auch Ketten aus Hypertransport-Verbindungen als ein I/O-Kanal verwendet werden, der diese I/O-Geräte und die Brücken mit einem Leitrechnersystem verbindet.
  • Die Hypertransport-Verbindung ist so gestaltet, um eine äußerst leistungsfähige und skalierbare Verbindung zwischen CPU, Speicher und I/O-Einrichtungen bereitzustellen. Die Hypertransport-Verbindung verwendet eine differenzielle Signalform mit chipinternem differenziellen Anschluss, um sehr hohe Datenraten zu erreichen. Die Hypertransport-Verbindung verwendet skalierbare Frequenz- und Datenbreiten, um eine skalierbare Bandbreite zu erhalten.
  • Die I/O-Einrichtung 160 ist eine Eingabe/Ausgabe-Einrichtung, die als ein Erzeuger von Daten fungiert. In der dargestellten Ausführungsform ist die I/O-Einrichtung 160 eine Steuerung, die das Kommunikationsprotokoll für Nahbereichsnetzwerke einrichtet, das von dem Institut für elektrische und elektronische Ingenieursarbeit (IEEE) unter der Federführung des IEEE 802.3 Komitees standardisiert wurde und allgemein als „Ethernet” bezeichnet wird. Jedoch ist die vorliegende Erfindung auch auf andere Datenerzeuger anwendbar.
  • Im Betrieb empfängt die I/O-Einrichtung 160 periodisch Datenrahmen, wobei das Ethernet-Protokoll ausgeführt wird. Wenn ein Rahmen empfangen wurde, schreibt eine DMA-Steuerung in der I/O-Einrichtung 160 die Daten in den Pufferspeicher 124, indem ein spezielles „Schreiben mit Einführern”-Paket gesendet wird. In diesem Falle besteht der Datenrahmen aus zwei Bereichen, wobei einer die Protokolldatenkopfinformation und der andere die Nutzdaten aufweist. In einer weiteren Ausführungsform kann ein Mikroprozessor für das Verarbeiten der Datenkopfinformation verantwortlich sein, während ein weiterer Prozessor die Nutzdaten „konsumiert”. In dem Ein-Prozessorsystem, das in 4 gezeigt ist, laufen jedoch der I/O-Treiber und das Anwenderprogramm auf der CPU 120.
  • Der DMA-Schreibvorgang wird unter Anwendung des Hypertransport-Protokolls über den Eingang 124 ausgeführt. Die Leitrechnerbrücke 130 ist für das Empfangen der Daten und für das Zuleiten dieser Daten zu der Speichersteuerung 126 über XBAR 128 verantwortlich. Die Speichersteuerung 128 erkennt dann das „Schreiben mit Einprägen” Attribut des Pakets und speichert die Daten in einem lokalen Puffer. Die Speichersteuerung 126 sendet eine Sondierung an die CPU 122, um diese über die Anwesenheit von Daten zu informieren, die in den Pufferspeicher 124 zu schreiben sind. In Reaktion auf ein nachfolgendes Vorabholungsauslesesignal von der CPU 122 leitet die Speichersteuerung 126 die Daten an die CPU 122 zum Speichern in dem Pufferspeicher 124 weiter, ohne eine Schreibaktion in und eine nachfolgende Ausleseaktion von dem DRAM 170 auszuführen.
  • Dieser Vorgang kann besser unter Bezugnahme auf die 5 verstanden werden, die eine Blockansicht 180 eines Datenverarbeitungssystems 100 aus 4 darstellt, wobei der Datenstrom gezeigt ist, während ein „Schreiben mit Einprägen”-Vorgang ausgeführt wird. 5 zeigt den Datenstrom als gestrichelte Linien. Somit beginnt der Datenfluss von der I/O-Einrichtung 160 zur Leitrechnerbrücke 130, über XBAR 128 zu der Speichersteuerung 126 und schließlich von der Speichersteuerung 126 über XBAR 128 zu der CPU 122.
  • Der Datenfluss während des Vorgangs „Schreiben mit Einprägen” in der Speichersteuerung 126 ist detaillierter in 6 beschrieben, die eine Blockansicht eines Teils des Datenverarbeitungssystems 100 der 4 einschließlich der Speichersteuerung 126 zeigt. Die Speichersteuerung 126 umfasst im Allgemeinen einen Satz an Leseanforderungspuffern 222, einen Satz an Schreibanforderungspuffern 224, einen Multiplexer 226, eine DRAM-Steuerung 228, einen Treiber 230, einen Schreibdatenpuffer 242, einen Anforderungsordnungspuffer 262, einen Steuerblock 264, Treiber 244 und 246, einen Lesedatenpuffer 248 und einen Multiplexer 250. Wenn die Speichersteuerung 126 eine Speicherzugriffsanforderung von XBAR 128 empfängt, wird die Anforderung in die Leseanforderungspuffer 222 oder Schreibanforderungspuffer 224, je nach Bedarf, und in den Anforderungsordnungspuffer 262 abgelegt. Diese Puffer speichern Adressen und Sequenzinformationen über die Zugriffe. Der Steuerblock 264 steuert dann die Reihenfolge, in der die Anforderungen aus den Puffern 222 und 224 ausgelesen und der DRAM-Steuerung 228 zugeleitet werden. Dieser Mechanismus ermöglicht es der Speichersteuerung 126, eine Strategie zur Überholung älterer Schreibvorgänge durch Lesevorgänge einzurichten, da eine derartige Strategie das allgemeine Leistungsverhalten verbessert. Wenn die Zugriffsanforderung ein Schreibzugriff ist, speichert ein entsprechender Puffer in den Schreibpuffern 242 die in den Speicher zu schreibenden Daten. Der Steuerblock 246 verwendet die Anforderungsordnungspuffer 262, um die Zugriffe in geeigneter Weise anzuordnen. Der Treiber 230 gibt Adressen an den DRAM 170 aus. Schreibdaten werden aus den Puffern 242 ausgelesen und von dem Treiber 244 auf den DRAM-Datenbus mit der entsprechenden Adresse gelegt. Während Auslesevorgänge werden gelesene Eingangsdaten von dem DRAM 170 über den Eingangstreiber 246 empfangen und in dem Lesedatenpuffer 248 abgelegt. Der Steuerblock 246 veranlasst, dass diese auf diese Weise gespeicherten Lesedaten zu der CPU 122 über XBAR 128 weitergeleitet werden, indem der zweite Eingang des Multiplexers 250 ausgewählt wird.
  • In Reaktion auf das Empfangen eines „Schreiben mit Einprägen”-Pakets speichert die Speichersteuerung 126 die Schreibadresse und schreibt Daten in die Puffer 224 bzw. 242. Der Schreibpuffer kombiniert Schreibanforderungen an die gleiche Adresse und prüft kurz alle Leseanforderungen. Wichtig dabei ist, dass wenn eine Leseanforderung in dem Schreibpuffer auftritt, die Daten zu XBAR 128 über den Multiplexer 250 zurückgeliefert werden und die Zuordnung des Schreibpuffereintrags wieder aufgehoben wird. Wenn der Schreibpuffer sich füllt und der Schreibvorgang ausgeführt wird, bevor die Vorabholleseanforderung die Speichersteuerung 126 erreicht, dann fährt die Speichersteuerung 126 einfach fort, die Daten von dem DRAM 170 auszulesen. Das eigentliche Speichern der Daten in dem DRAM 170 wird jedoch nicht als ein gemeinsames Ereignis erachtet, wenn der Schreibpuffer ausreichend groß ist.
  • 7 zeigt eine Blockansicht eines Teils 300 der zentralen Recheneinheit 122 aus 4 mit dem Pufferspeicher 124. Der Bereich 300 umfasst eine Vorabholungseinrichtung 302, eine Lade/Speichereinheit 304, einen Multiplexer 306, einen Sondierungspuffer 308, einen Anforderungsaußenstandspuffer 310, einen Opfer- bzw. Zielpuffer 312, einen Sondierungsantwortdatenpuffer 314, einen Multiplexer 316, einen Leseantwortdatenpuffer 318, einen Speicherdatenpuffer 320, einen Multiplexer 322. Sondierungen werden von XBAR 128 empfangen und in dem Puffer 308 abgelegt. Beim Abarbeiten können diese zu einer Leseanforderung von dem Pufferspeicher 124 über den Multiplexer 306 führen. Wenn die Daten in dem Pufferspeicher vorhanden sind, ergibt dies einen Sondierungstreffer. Zusätzlich zu den sondierungsinitiierten Zugriffen auf den Pufferspeicher 124 präsentiert der Multiplexer 306 auch Pufferspeicherleseanforderungen, die von der Lade/Speichereinheit 304 für den Leseeingang des Pufferspeichers 124 erzeugt werden. Im Falle von Schreibanforderungen liefert die Lade/Speichereinheit 304 die Adresse an den Schreibanschluss des Pufferspeichers 124 und legt die Speicherdaten in dem Speicherpuffer 320 ab, von wo sie in den Pufferspeicher 124 über den Multiplexer 322 eingespeist werden. Der Pufferspeicher 124 empfängt ferner Leseantwortdaten als Ergebnis von Lesevorgängen des niedriger rangigen Speichersystems und speichert derartige Daten in dem Leseantwortdatenpuffer 318, wo diese in den Schreibdatenanschluss des Pufferspeichers 124 über den ersten Eingang des Multiplexers 322 eingespeist werden.
  • Eine Sondierungsvorabholungsanforderung, die in Reaktion auf ein „Schreiben mit Einprägen”-Paket ausgegeben wird, folgt dem Weg, der durch die gestrichelte Linie angedeutet ist, d. h. über den Sondierungspuffer 308 in die Vorabholungseinrichtung 302. In Reaktion auf die Vorabholungssondierungsanfrage gibt die CPU 122 zunächst eine Sondierungsantwort über den Sondierungsantwortdatenpuffer 314 heraus und gibt dann eine Vorabholungsladeanforderung zu der Speichersteuerung 126 aus. Wenn die Vorabholungslesedaten zurückgegeben werden, werden diese im Puffer 318 abgelegt und danach in den Pufferspeicher 124 über den ersten Eingang des Multiplexers 322 geschrieben und in der geeigneten Pufferspeicherzeile in dem modifizierten (M) Zustand abgelegt. Diese werden dann bald danach von der I/O-Treibersoftware verwendet. Die Zeile ist in dem N-Zustand installiert, um sicherzustellen, dass diese in den Speicher geschrieben wird, wenn die Zuordnung aufgehoben wird unter Anwendung der normalen Austauschstrategie des Pufferspeichers, etwa LRU („am längsten nicht verwendet”).
  • Tabelle 1 zeigt diverse Arten von Sondierungsanfragen und ihren zugeordneten Antworten, die in dem Mikroprozessor 120 verfügbar sind.
    Sondierungsart Einführungsattribut Treffer Zielzustand Opfer zurückschreiben Installationszustand DRAM-Schreiben Aktion
    Sondierung unzulässig N N ungeändert Y keine Einführung
    Sondierung unzulässig Y MOES N I Y keine Einführung
    Sondierung Vorabholung N ESI N M N Invalidisieren der Zielzeile im Pufferspeicher, Installieren der Zeile im Pufferspeicher
    Sondierung Vorabholung N MO Y M N Zurückschreiben des Ziels, Installieren der Zeile im Pufferspeicher
    Sondierung Vorabholung Y MOESI N M N Aktualisieren der Zeile im Pufferspeicher
    Sondierung Vorabholung bei Treffer Y MOES N M N Aktualisieren der Zeile im Kernspeicher
    Sondierung Vorabholung bei Treffer N N ungeändert Y Zeile nicht im Pufferspeicher
  • Die Speichersteuerung 126 gibt eine Sondierung heraus mit dem „Vorabholungs-”Attribut, das in Reaktion auf das „Schreiben mit Einprägen”-Paket gesetzt wird. Die von dem Pufferspeicher 124 vorgenommene Aktion hängt von dem Opfer- bzw. Zielzustand ab, wie dies in Tabelle 1 gezeigt ist.
  • 8 zeigt eine Ansicht eines Hypertransport-Pakets 200, mit der die I/O-Einrichtung 160 ein „Schreiben mit Einprägen”-Paket bilden kann. Die verwendete Paketstruktur ist als das Anforderungspaket mit Adresse bekannt. Das Paket ist 4 Bytes lang mit einer zusätzlichen 4 Byte-Adressenerweiterug. Gemäß der vorliegenden Erfindung zeigt die I/O-Einrichtung 160 ein „Schreiben mit Einprägen”-Attribut an, indem eine neue „Schreiben mit Einprägen”-Codierung in dem Befehlsfeld hinzugefügt wird, wie dies nachfolgend beschrieben ist.
  • Die diversen mit diesem Paket verknüpften Felder werden nunmehr beschrieben. SeqID[3:0] (wird durch Verknüpfen der Bits 7 und 6 der Bit-Zeit 0 mit den Bits 6 und 5 der Bit-Zeit 1 gebildet) wird verwendet, um Gruppen von Anforderungen zu kennzeichnen, die als ein Teil einer geordneten Sequenz von einer Einrichtung ausgegeben wurden und die innerhalb eines virtuellen Kanals gut geordnet bleiben müssen. Alle Anforderungen innerhalb des gleichen I/O-Stroms und virtuellen Kanals, die übereinstimmende Seq ID-Felder ungleich Null aufweisen, müssen ihre Ordnung beibehalten. Der Seq ID-Wert von 0 × 0 ist reserviert, um anzudeuten, dass eine Transaktion nicht Teil einer Sequenz ist. Transaktionen mit diesem Wert besitzen keine Einschränkungen hinsichtlich der Sequenzreihenfolge, obwohl diese im Hinblick auf andere Gründe geordnet sein können, wie dies im Kapitel 6 des Hypertransport-Standards beschrieben ist.
  • Das Cmd[5:0]-Feld wird verwendet, um diverse Befehle in dem Hypertransport-Protokoll anzuzeigen. Der 2001 Hypertransport-Standard definiert diverse Codierungen des Cmd[5:0]-Felds und reserviert andere Codierungen. Tabelle 2 zeigt die definierten und reservierten Codierungen: Tabelle 2
    Code Vchan Befehl Kommentare/Optionen Paketart
    000000 - NOP Null-Paket. Enthält Flusssteuerungsinformation Info
    000001 Reserved-HOST
    000010 NPC Flush Löschen der aufgegebenen Schreibanforderungen Anforderung
    000011 0001xx Reserved-HOST
    x01xxx x01xxx NPC oder PC (Bit 5) Wr (sized) Schreibanforderung [5] definiert, ob Anforderung aufgegeben ist 0: nicht aufgegeben 1: aufgegeben [2] definiert die Datenlänge: 0: Byte 1: Doppelwort [1] definiert Bandbreite (Latenzanforderungen) 0: normal 1: isochron [0] zeigt an, ob Zugriff RechnerPufferspeicherkohärenz erfordert (wird ignoriert, wenn Zugriff nicht auf Rechnerspeicher erfolgt: 0: nicht kohärent 1: kohärent Anforderung/Adressen/Daten
    01xxxx 01xxxx NPC Rd (sized) Leseanforderung [3] definiert Ordnungserfordernisse für Antwort 0: Antwort darf aufgegebene Anforderungen nicht passierten 1: Antwort darf aufgegebene Anforderungen passieren [2] definiert die Datenlänge: 0: Byte 1: Doppelwort [1] definiert Bandbreite (Latenzanforderungen) 0: normal 1: isochron [0] zeigt an, ob Zugriff RechnerPufferspeicherkohärenz erfordert (wird ignoriert, wenn Zugriff nicht auf Rechnerspeicher erfolgt: 0: nicht kohärent 1: kohärent Anforderung/Adressen/
    100xxx Reserved-I/O
    110000 R RdResponse Leseantwort Anforderung/Daten
    110001 110010 Reserved-HOST
    110011 R tgtDone Mitteilung an die Quelle der Anforderung, das Ziel gefüllt ist Antwort
    11010x Reserved-HOST
    11010x Reserved-HOST
    11011x Reserved-I/O
    11100x Reserved-HOST
    11100x Reserved-HOST
    11100x Reserved-HOST
    111010 PC Broadcast Nachricht an alle Anforderung/Adresse
    111011 Reserved-HOST
    111100 PC Fence abgegrenzte aufgegebene Anforderungen Anforderung
    111101 NPC Atomic RMW atomare Lese-Modifzierungs-Schreibaktion Anforderung/Adresse/Daten
    111110 Reserved-I/O
    111111 - Sync/Error Verbindungssynchronisations- und Fehlerpaket Info
  • PassPW zeigt an, das dieses Paket Pakete in dem Kanal für aufgegebene Anforderungen des gleichen I/O-Stroms passieren darf. Ansonsten muss dieses Paket der Reihenfolge entsprechend dahinter bleiben. Dieses Bit sollte zurückgesetzt werden, um das standardmäßige Ordnungsmodell für Personalcomputerschnittstellen (PCI) der Hypertransport-Technologie zu bewahren. Systeme, die keine PCI-artige Ordnung erfordern, können PassPW setzen, um eine höhere Leistungsfähigkeit zu erreichen.
  • Das UnitID [4:0] Feld dient, dazu, Teilnehmer an einer Transaktion zu identifizieren. Da alle Pakete zu oder von der Leitrechnerbrücke am Ende der Anordnung transferiert werden, wird entweder der Quell- oder Zielknotenpunkt festgelegt. Der Wert Null ist für die UnitID der Leitrechnerbrücke reserviert. Siehe Abschnitt 4.2 des 2001 Hypertransport-Standards für weitere Details hinsichtlich der Verwendung von UnitID. Knotenpunkte mit mehreren logischen I/O-Strömen können eigene mehrfache UnitID-Werte besitzen.
  • Das HyperTransport-Protokoll reserviert 2 Bytes, die während der Bitzeiten 2 und 3 übertragen werden, und die speziell für den Befehl sind.
  • Addr [39:2] repräsentiert eine Doppelwortadresse, auf die von der Anforderung zugegriffen wird. Es sind nicht alle Adressenbits in allen Anforderungsarten enthalten. Wenn eine feinere Auflösung erforderlich ist, können Byte-Masken verwendet werden.
  • Die I/O-Einrichtung 160 zeigt vorzugsweise die „Schreiben mit Einprägen”-Anforderung an, indem eine beliebige der Cmd [5:0] Felddefinitionen verwendet wird, die als „Reserved-I/O” markiert sind. Da ferner sehr wenige reservierte Befehlscodierungen für I/O-Einrichtungen vorhanden sind, kann jedoch das neue „Schreiben mit Einprägen”-Paket vorzugsweise mit anderen neuen Paketformaten kombiniert werden, in denen lediglich eine reservierte-I/O-Befehlscodierung verwendet ist. Dies wird erreicht, indem das 4-Bit SeqID-Feld verwendet wird, um weitere Bedingungen zum Unterscheiden zwischen den anderen neuen Paketarten zu codieren.
  • 9 zeigt ein Zeitablaufdiagramm 500, das mit dem Datenfluss und Steuersignalen in einem verzeichnisbasierten Datenverarbeitungssystem gemäß der vorliegenden Erfindung verknüpft ist. In dieser Ausführungsform bewahrt das niedriger rangige Speichersystem am Knotenpunkt B ein verzeichnisbasiertes Pufferspeicherkohärenzprotokoll. Wie zuvor können der Datenerzeuger, das niedriger rangige Speichersystem und der Prozessor mit Pufferspeicher jeweils unterschiedliche Knotenpunkte besetzen.
  • In Reaktion auf einen Datenerzeuger am Knotenpunkt C, der ein „Schreiben mit Einprägen”-Paket bereitstellt, wie dies durch einen Teil 502 gezeigt ist, überprüft eine Verzeichnis/Speicher-Steuerung am Knotenpunkt B ihr Verzeichnis im Hinblick auf die Anwesenheit der adressierten Zeile in ihrem zugeordneten Pufferspeicher oder Pufferspeichern (das im Folgenden erläutert wird) während einer Zeitdauer 504. Wenn der Eintrag bereits einen derartigen Pufferspeicher oder Pufferspeichern zugeordnet ist und in einem speziellen Zustand ist (modifiziert oder exklusiv), wie dies für einen Ringpuffer, der für einen Kommunikationsempfänger verwendet wird, der Fall ist, dann sendet die Speichersteuerung eine Sondierungsvorabholungsanforderung, die durch einen Pfeil 506 repräsentiert ist, an den Knotenpunkt A, um diesen über die Anwesenheit von Daten zu informieren, die in den Pufferspeicher beim Knotenpunkt A einzuführen sind. Anders als bei dem System aus 2 verfolgt jedoch das verzeichnisbasierte System aus 9, welcher Prozessor von allen Prozessoren in dem System die Daten in seinem Pufferspeicher hält und sendet eine zielgerichtete Vorabholungsanforderung an den Besitzer der Daten, anstatt die Vorabholungsanforderung an alle zu versehen. Der Knotenpunkt A (der Besitzer der Daten) antwortet auf eine Sondierungsantwort, die durch einen Pfeil 508 bezeichnet ist. Die Daten werden in einem Speicherpuffer in der Speichersteuerung gehalten und das „Schreiben in das niedriger rangige Speichersystem wird verzögert. Später sendet der Datenprozessor im Knotenpunkt A eine Vorabholungsleseanforderung für den Knotenpunkt B, wie dies durch einen Pfeil 510 repräsentiert ist. Die Speichersteuerung des Knotenpunkts B antwortet, indem das Datenelement von dem Speicherpuffer während einer Zeitdauer 512 ausgelesen wird, und indem die Daten zu dem Knotenpunkt A gesendet werden, wie dies durch einen Pfeil 514 dargestellt ist. Wenn der Datenprozessor im Knotenpunkt A in der Lage ist, die Vorabholungsleseanforderung normal zu senden, kann die Speichersteuerung im Knotenpunkt B die Daten senden, ohne auf den Hauptspeicher zuzugreifen. Wenn jedoch die Speichersteuerung im Knotenpunkt B den Speicherpuffer für andere Zwecke wieder verwenden muss, etwa um eine normale Schreibanforderung abzuarbeiten, wenn alle anderen Schreibpuffer voll sind, bevor der Prozessor die Vorabholungsleseanforderung beendet, dann schreibt die Speichersteuerung die Daten stattdessen in den Speicher. Schließlich komplettiert der Knotenpunkt A die Pufferspeicherzeilenauffüllung während einer Zeitdauer 516. Wenn die Daten nachfolgend im Knotenpunkt A verwendet werden, ist die Pufferspeicherzeile für eine Aufhebung der Zuordnung während des normalen Prozessablaufes unter Anwendung der Strategie für die Zuordnungsaufhebung, etwa „am längsten nicht verwendet”, verfügbar. Da das Datenelement von dem Prozessor lediglich ein mal verwendet wird, wird die Zeile in dem Pufferspeicher nicht modifiziert und es besteht kein Bedarf, die Zeile zurück in den Hauptspeicher zu schreiben. Somit vermeidet dieses Verfahren normalerweise Schreibvorgänge in den Hauptspeicher und verbraucht lediglich einen kleinen Anteil der Bandbreite zu der Speichersteuerung am Knotenpunkt B, um die Verzeichnislese- und Lesepufferoperationen auszuführen.
  • 10 zeigt eine Blockansicht eines verzeichnisbasierten Datenverarbeitungssystems 600 gemäß der vorliegenden Erfindung. Das Datenverarbeitungssystem 600 umfasst N Knotenpunkte, die durch eine Systemverbindung 602 miteinander verbunden sind. In 10 sind beispielhafte Knotenpunkte dargestellt, zu denen Knotenpunkte 604, 606, 608, 610 und 612 gehören, die als „Knotenpunkt 1”, „Knotenpunkt 2”, „Knotenpunkt 3”, „Knotenpunkt N-1” und „Knotenpunkt N” bezeichnet sind. Als Beispiel ist der Knotenpunkt 608 detaillierter dargestellt. Der Knotenpunkt 608 umfasst einen Mikroprozessor 620 mit zwei CPU-Kernen 622 und 626 mit zugeordneten Pufferspeichern 624 und 628, einem „Querstrich-”schalter bzw. Invertierschalter, der als „XBAR” 630 bezeichnet ist, einer I/O-Steuerung, die als „HT” 632 bezeichnet ist, einer Netzwerkschnittstelle 634 und einer Verzeichnis/Speichersteuerung 636. Die I/O-Steuerung 632 ist mittels einer externen Schnittstelle mit einer zugeordneten Eingabe/Ausgabe-Einrichtung 640 verbunden. Die I/O-Steuerung 632 richtet das sogenannte nicht kohärente Hypertransport-Protokoll ein. Die Netzwerkschnittstelle 634 ist mit der Systemverbindung 602 verbunden und richtet das sogenannte kohärente Hypertransport-Protokoll ein. Die Verzeichnis/Speichersteuerung 626 ist mit einem niedriger rangigen Speichersystem in Form eines DRAMs 650 verbunden.
  • Während des Betriebs richtet der Knotenpunkt 608 eine Pufferspeicherkohärente nicht gleichförmige Speicherzugriffs-(„CC NUMA”)Architektur ein. Jeder Knotenpunkt in dem System, wie der Knotenpunkt 608, enthält Prozessoren mit CPUs mit Pufferspeichern, DRAM-Steuerungen, Verzeichnissteuerungen und Eingabe/Ausgabeeinrichtungen wie der Prozessor 620. Der Knotenpunkt 608 kann Schreibdaten direkt in einen lokalen Pufferspeicher Einprägen oder indirekt über die Systemverbindung 602 zu einem Pufferspeicher, der in einem anderen Knotenpunkt angeordnet ist, wenn die Daten bereits in dem modifizierten (M) oder exklusiven (E) Zustand im Pufferspeicher abgelegt sind. Der Pufferspeicher, der die Daten speichert, ist zuständig, um nachfolgende Lese- oder Schreibanforderungen für diese Speicherzeile zu erfüllen. Der Zweck dieses Pufferspeichermechanismus besteht darin, die Anforderungen für die DRAM-Speicherbandbreite zu verringern, wie in 9 gezeigt ist, und um DMA-Schreibdaten zu einem beliebigen Pufferspeicher in dem System zu liefern, wenn die Zeile bereits in dem Pufferspeicher vorhanden ist, wobei die bereits in dem Pufferspeicher vorhandenen Daten aktualisiert werden.
  • Der Knoten-Punkt 608 unterstützt drei Grundzustände für jede in dem Verzeichnis vorhandene Zeile. Der unzulässige (I) Zustand zeigt an, dass die Zeile nicht in einem Pufferspeichernden System abgelegt ist. Eine Leseanforderung für eine Zeile in dem I-Zustand führt zu einem Zugriff auf das niedriger rangige Speichersystem. Der nicht im Pufferspeicher abgelegte Zustand (U) zeigt an, dass die Zeile von einem auf den Pufferspeicher wirkenden Mittel für einen NUR-Lesezugriff, der auf das niedriger rangige Speichersystem zurückgeschrieben ist, gelesen wurde und in keinem anderen Pufferspeichernden System abgelegt ist. Der modifizierte/exklusive (ME) Zustand zeigt an, dass die Zeile von einem auf den Pufferspeicher wirkenden Mittel für einen Lese/Schreib-Zugriff gelesen wurde. Wenn der Verzeichniseintrag für eine spezielle Pufferspeicherzeile in dem ME-Zustand ist, kann das auf den Pufferspeicher wirkende Mittel die Daten in dem E-Zustand oder dem N-Zustand in seinem lokalen Pufferspeicher enthalten. Wenn das auf den Pufferspeicher wirkende Mittel die Zeile in dem E-Zustand aufweist, dann hat es Lese/Schreib-Erlaubnis für seine Kopie der Zeile, aber es hat die Zeile noch nicht geschrieben. Wenn das auf den Pufferspeicher wirkende Mittel die Zeile in dem N-Zustand aufweist, dann hat es die Lese/Schreib-Erlaubnis für seine im Pufferspeicher abgelegte Kopie der Zeile und es hat bereits die Daten modifiziert. Wenn das auf den Pufferspeicher wirkende Mittel die Zeile in dem N-Zustand in seinem Pufferspeicher aufweist, dann sind die Daten in dem Speicher veraltet. Die Zeile wird zuerst in dem auf den Pufferspeicher wirkenden Mittel in dem E-Zustand installiert und geht nachfolgend in den N-Zustand über, wenn diese modifiziert werden. Genau ein Knotenpunkt in dem System kann einen Lese/Schreib-Zugriff auf die Zeile aufweisen. Eine beliebige Leseanforderung auf eine Zeile in dem ME-Zustand in dem Verzeichnis muss zuerst prüfen, wo die aktuellste Kopie in dem System ist. Wenn sich die jüngsten Daten in dem ProzessorPufferspeicher befinden, muss dieser Prozessor die Zeile liefern. Wenn der Prozessor die Pufferspeicherzeile in dem E-Zustand besitzt, dann wird die Zeile invalidisiert bzw. als unzulässig erklärt (in den I-Zustand versetzt) in dem Prozessorpufferspeicher und wird von dem Speichermittel zur Verfügung gestellt.
  • Wenn eine Zeile im ME-Zustand gelesen wird, geht der Verzeichniseintrag in den Besitz-(O)Zustand über, um anzuzeigen, dass die Daten in dem Speicher veraltet sind und dass es gemeinsame Nutzer gibt.
  • Wenn ein Pufferspeicher lediglich eine Kopie der Daten gelesen hat, wird kein Verzeichniseintrag zugewiesen. Das Fehlen eines Verzeichniseintrages zeigt an, dass eine Zeile in dem System im Pufferspeicher abgelegt sein kann. Daher sendet ein Speichervorgang, der in dem klein gehaltenen Verzeichnispufferspeicher fehlt, Sondierungsanfragen an alle Pufferspeicher, um gemeinsam genutzte Kopien als unzulässig zu deklarieren.
  • Die Verfügbarkeit des Verzeichnisses ermöglicht es dem Prozessor 620, einen allgemeineren Fall zu unterstützten, in welchem der Knotenpunkt A, der Knotenpunkt B und der Knotenpunkt C in 9 unterschiedlich sind, ohne dass Sondierungsanfragen an alle gesendet werden, um alle Pufferspeicher in dem System zu veranlassen, die Anwesenheit von Daten zu überprüfen. Der Prozessor 620 verwendet das Verzeichnis in der Verzeichnis/Speichersteuerung 636, um zu bestimmen, wo die Zeile gegenwärtig im Pufferspeicher enthalten ist. Wenn die Zeile im Pufferspeicher ist und sich in dem M- oder E-Zustand befindet, werden die Daten von der I/O-Einrichtung 640 in den geeigneten Pufferspeicher übertragen. Ansonsten werden diese in den Speicher geschrieben.
  • Insbesondere richtet die Verzeichnis/Speichersteuerung 636 neue Verzeichniszustände ein, um diesen Mechanismus zu unterstützen. In Reaktion darauf, dass die I/O-Steuerung 632 ein „Schreiben mit Einprägen”-Paket für eine Zeile ohne Verzeichniseintrag empfängt, schreibt die Verzeichnis/Speichersteuerung 636 die Zeile in den DRAM 650. Nur wenn ein Verzeichniseintrag ohne Ausweisung eines Pufferspeichereintrags geschaffen werden kann (d. h. durch Ersetzen eines U- oder I-Eintrags), wird der Verzeichniseintrag in einem neuen Zustand erzeugt, d. h. der „geschriebene” Zustand (W). Eine weiche Zuweisung „von Verzeichniseinträgen” wird in diesem Falle angewendet, um die Möglichkeit des Hervorrufens eines Leistungsproblems zu vermeiden auf Grund der Schreibeinführung, die den Arbeitssatz in dem Pufferspeicher vernichten könnte. Wenn die CPU nachfolgend die Zeile ausliest, wird die Zeile in einem anderen neuen Zustand installiert, dem „Reservierungs-”(R)Zustand und der Verzeichniseintrag geht von dem W-Zustand in den R-Zustand über. Ein nachfolgender Schreibvorgang in eine Zeile, die in dem R-Zustand installiert ist, wird direkt in den ProzessorPufferspeicher eingeführt und der Verzeichniseintrag geht in einen noch weiteren neuen Verzeichniszustand, den „modifizierten” (M) Zustand über, ohne dass eine Schreibvorgang in den Hauptspeicher ausgeführt wird. Der Prozessor liefert eine Information über das Austauschen, sobald ein R-Eintrag in seinen Pufferspeicher beschrieben wird.
  • 11 zeigt einen Eintrag 650 in der Verzeichnis/Speichersteuerung 624 aus 10. Jeder Eintrag, wie etwa der Eintrag 650, besitzt drei Felder: ein Kennzeichenfeld 652, ein Zustandsfeld 654 und ein Besitzerfeld 656. Das Kennzeichenfeld wird verwendet, um einen Verzeichniseintrag mit einer physikalischen Adresse zu verknüpfen. Das Besitzerfeld kennzeichnet den Besitzer, wenn die Zeile sich in dem ME- oder O-Zustand befindet. Drei weitere Verzeichniszustände sind erforderlich, um diesen „Schreiben mit Einprägen”-Mechanismus einzurichten: Der W-Zustand, der R-Zustand und der M-Zustand. Der vollständige Satz an Verzeichniszuständen, der durch das Zustandsfeld gekennzeichnet ist, ist in der folgenden Tabelle 3 aufgeführt, in welcher neue Zustände durch kursive Schriftart gekennzeichnet sind: Tabelle 3
    Zustand Abkürzung Beschreibung
    unzulässig (Invalid) I Nicht im Pufferspeicher oder saubere im Pufferspeicher abgelegte Kopie.
    geschrieben W Nicht im Pufferspeicher. Die Zeile wurde zuletzt von einem Datenerzeuger in den Hauptspeicher geschrieben.
    Reservierung R Es gibt genau eine saubere Kopie der Daten in dem Pufferspeicher des Prozessors. Eine Benachrichtigung für den Austausch ist erforderlich.
    modifiziert M Die Zeile ist in dem Pufferspeicher des Besitzers modifiziert. Daten in dem Speicher sind alt.
    modifiziert oder exklusiv ME Die Zeile ist modifiziert oder exklusiv beim Besitzer.
    Besitzer O Die Zeile wird gemeinsam genutzt, aber Speicher ist veraltert. Eine Zeile im O-Zustand beim Besitzer muss bei Austausch Rückgeschrieben werden.
    nicht im Pufferspeicher U Eine M-Zeile wurde zurückgeschrieben oder eine E-Zeile wurde ersetzt, somit ist die Zeile mit Sicherheit nicht anderen Orts in dem System in einem Pufferspeicher.
  • Um diesen verzeichnisbasierten Mechanismus zu unterstützen, wird ein weiterer zusätzlicher ProzessorpufferSpeicherzustand eingeführt, der R-Zustand. Der vollständige Satz der Prozessorpufferspeicherzustände ist in Tabelle 4 aufgeführt, in welcher der neue Zustand kursiv gedruckt ist. Tabelle 4
    Zustand Abkürzung Beschreibung
    unzulässig (Invalid) I Nicht im Pufferspeicher oder saubere Kopie im Pufferspeicher.
    Reservierung R Es gibt genau eine saubere Kopie der Daten in dem Pufferspeicher des Prozessors. Eine Benachrichtigung für den Austausch ist erforderlich.
    modifiziert M Die Zeile ist in dem Pufferspeicher des Besitzers modifiziert. Daten in dem Speicher sind alt.
    exklusiv E Die Zeile ist exklusiv beim Besitzer. Der Besitzer hat die Erlaubnis, die Daten ohne Erzeugung einer Bustransaktion zu modifizieren.
    gemeinsam genutzt S Die Zeile ist eine NUR-Lesezeile. Gemeinsam genutzte Kopien können existieren. Die Daten in dem Hauptspeicher sind aktuell.
  • Es sollte klar sein, dass die vorhergehende Erläuterung der Anzeige des „Schreiben mit Einprägens” speziell für das HyperTransport-Protokoll ist. In anderen Ausführungsformen der vorliegenden Erfindung können jedoch andere Verfahren zum Kennzeichnen des „Schreiben mit Einprägen”-Zustands verwendet werden. Beispielsweise können spezielle Codierungen von Bit-Feldern, bestehende oder zusätzliche Eingabe/Ausgabe-Anschlüsse und dergleichen verwendet werden, um den „Schreiben mit Einprägen”-Zustand zu kennzeichnen. Das Anzeigen des „Schreiben mit Einprägen” kann auf anderen I/O-Bussen, etwa PCI, PCI-X, PCIE, bewerkstelligt werden, indem reservierte oder herstellerspezifische Felder in dem I/O-DMA-Leseanforderungspaket verwendet werden.
  • Obwohl die Erfindung im Zusammenhang mit einer bevorzugten Ausführungsform beschrieben ist, sind für den Fachmann diverse Modifizierungen offenkundig. Beispielsweise kann ein Datenverarbeitungssystem unter Anwendung des offenbarten Verfahrens auf Systeme anwendbar sein, die direkt mit einem Hauptspeicher verbunden sind, sowie auf einen niedriger rangigen Pufferspeicher. Ferner ist die Erfindung auf Systeme mit einem oder mehreren höher rangigen Pufferspeichern anwendbar. Hauptspeicher können unter Anwendung DRAM, SRAM, einem nicht flüchtigen Speicher oder einer beliebigen anderen Art an Speicher aufgebaut sein. Des weiteren sind diverse Verfahren zum temporären Speichern von Daten möglich, während auf die Vorabholungsleseanforderung gewartet wird. Daher ist durch die angefügten Patentansprüche beabsichtigt, alle Modifizierungen der Erfindung abzudecken, die innerhalb des tatsächlichen Schutzbereichs der Erfindung liegen.
  • Bezugszeichenliste
  • Fig. 1
  • Stand der Technik
    Zeit
    Knotenpunkt C Datenerzeuger
    Knotenpunkt B niedriger rangiges Speichersystem
    Knotenpunkt A Datenprozessor mit Pufferspeicher
    Fig. 2
    wie 1
    Fig. 4
    160
    I/O-Einrichtung
    124
    Pufferspeicher
    126
    Speichersteuerung
    Fig. 5
    wie 4
    Fig. 6
    von XBAR 128
    zu XBAR 128
    264
    Steuerung
    228
    DRAM-Steuerung
    Fig. 7
    302
    Vorabholungseinrichtung
    304
    Lade/Speichereinheit
    310
    Anforderungsaußenstandspuffer
    fehlt
    124
    Pufferspeicher
    Lesedaten
    Schreibdaten
    von XBAR 128
    zu XBAR 128
    Fig. 8
    Bit-Zeit
    2,3: befehlsspezifisch
    Fig. 11
    652
    Kennzeichnung
    654
    Zustand
    656
    Besitzer
    Fig. 9
    wie 1
    Fig. 10
    602
    Systemverbindung
    604, ... 612
    Knotenpunkt 1, ..., Knotenpunkt N
    640
    I/O-Einrichtung
    628
    Pufferspeicher
    636
    Verzeichnis/Speichersteuerung
    634
    Netzwerkschnittstelle
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • IEEE 802.3 [0035]

Claims (10)

  1. In einem Datenverarbeitungssystem (100, 600) mit einer Speicherhierarchie einschließlich eines Pufferspeichers (124, 624) und einem niedriger rangigen Speichersystem (170, 650) umfasst ein Verfahren die Schritte: Empfangen (52, 502) eines Datenelements mit einem damit verknüpften „Schreiben mit Einprägen”-Attribut von einem Datenerzeuger (160, 640); Weiterleiten (54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514) des Datenelements an den Pufferspeicher (124, 524), ohne auf das niedriger rangige Speichersystem (140, 650) zuzugreifen; und Aktualisieren (66, 516) mindestens einer Pufferspeicherzeile, die das Datenelement enthält, in dem Pufferspeicher (124, 624).
  2. Verfahren nach Anspruch 1, wobei der Schritt des Empfanges (52, 502) des Datenelements den Schritt umfasst: Empfangen (52, 502) des Datenelements mit dem „Schreiben mit Einprägen”-Attribut unter Verwendung einer Verbindung, die im Wesentlichen mit der Hypertransport-I/O-Verbindungsspezifizierung, Revision 1.03 kompatibel ist.
  3. Verfahren nach Anspruch 3, wobei der Schritt des Empfangens (52, 502) ferner den Schritt umfasst: Erfassen des „Schreiben mit Einprägen”-Attributs aus einer Codierung eines reservierten Befehlsfeldes in einem Anforderungspaket.
  4. Verfahren nach Anspruch 1, wobei der Schritt des Weiterleitens (54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514) den Schritt des temporären Speicherns (54, 504) des Datenelements in einem Puffer (242) umfasst.
  5. Verfahren nach Anspruch 4, das ferner den Schritt umfasst: Ausführen des Schritts des Weiterleitens (54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514) abhängig davon, ob das Datenverarbeitungssystem (100, 600) den Puffer (242) für einen anderen Zweck benötigt, bevor der Schritt des Weiterleitens (54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514) aufgeführt wird.
  6. Verfahren nach Anspruch 4, wobei der Schritt des Weiterleitens (54, 56, 58, 60, 62, 64, 504, 506, 508, 510, 512, 514) ferner den Schritt umfasst: Senden (56, 506) einer Sondierungsvorabholungsanforderung zu einer zentralen Recheneinheit (122, 622), die mit dem Pufferspeicher (124, 624) verbunden ist; Herausgeben (60, 510) einer Leseanforderung durch die zentrale Recheneinheit (122, 622) in Reaktion auf die Sondierungsvorabholungsanforderung; Senden (64, 514) des Datenelements zu dem Pufferspeicher (124, 624) in Reaktion auf die Leseanforderung; und Entfernen (62, 512) des Datenelements aus dem Puffer (242).
  7. Datenprozessor (120, 620) mit: einer zentralen Recheneinheit (122, 622) mit einem Pufferspeicher (124, 624); und einer Leitrechnerbrücke (130, 632), die mit der zentralen Recheneinheit (122) verbunden und ausgebildet ist, ein „Schreiben mit Einprägen”-Paket für ein Datenelement von einem Datenerzeuger (160, 640) zu empfangen; und einer Einrichtung (126, 626), die mit der zentralen Recheneinheit (122), der Leitrechnerbrücke (120) und einem niedriger rangigen Speichersystem (170, 650) verbunden ist, um das Datenelement zu der zentralen Recheneinheit (122, 622) zur Speicherung in dem Pufferspeicher (124, 624) weiterzuleiten, ohne auf das niedriger rangige Speichersystem (170, 650) zuzugreifen.
  8. Datenprozessor (120) nach Anspruch 7, wobei die zentrale Recheneinheit (122) ausgebildet ist, eine Vorabholungsleseanforderung in Reaktion auf das Empfangen einer Sondierungsvorabholungsanforderung zu initiieren und wobei die Einrichtung zum Weiterleiten (126) eine Speichersteuerung (126) mit einem Puffer (242) aufweist, wobei die Speichersteuerung (126) das Datenelement von der Leitrechnerbrücke in dem Puffer (242) speichert, die Sondierungsvorabholungsforderung zu der zentralen Recheneinheit (122) in Reaktion auf das Empfangen des Datenelements zuleitet und das Datenelement von dem Puffer (242) in Reaktion auf die Vorabholungsleseanforderung von der zentralen Recheneinheit (122) bereitstellt.
  9. Datenprozessor (120) nach Anspruch 7, wobei die Einrichtung zum Weiterleiten (126) eine Verzeichnis/Speichersteuerung (636) aufweist, wobei die Verzeichnis/Speichersteuerung (636) zur Reaktion auf das „Schreiben mit Einprägen”-Paket ausgebildet ist, um ein Verzeichnis davon zu überprüfen, um zu erkennen, ob ein Pufferspeicherzustand einer Zeile, die mit dem Datenelement verknüpft ist, in einem vorbestimmten Zustand ist und Eigentum von dem Pufferspeicher (624) ist, und wenn dies der Fall ist, um das Datenelement zu der zentralen Recheneinheit (622) zur Speicherung in dem Pufferspeicher (624) zu senden, ohne auf das niedriger rangige Speichersystem (650) zuzugreifen.
  10. Datenprozessor (120, 620) nach Anspruch 7, wobei die Leitrechnerbrücke (120) ausgebildet ist, mit dem Datenerzeuger (160, 640) unter Verwendung einer Verbindung verbunden zu werden, die im Wesentlichen mit der Hypertransport-I/O-Verbindungsspezifizierung, Revision 1.03 kompatibel ist.
DE10394081T 2003-01-27 2003-12-22 Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher Expired - Lifetime DE10394081B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/353,216 US7155572B2 (en) 2003-01-27 2003-01-27 Method and apparatus for injecting write data into a cache
US10/353,216 2003-01-27
PCT/US2003/041180 WO2004070519A2 (en) 2003-01-27 2003-12-22 Method and apparatus for injecting write data into a cache

Publications (2)

Publication Number Publication Date
DE10394081T5 true DE10394081T5 (de) 2011-12-29
DE10394081B4 DE10394081B4 (de) 2013-05-29

Family

ID=32736135

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10394081T Expired - Lifetime DE10394081B4 (de) 2003-01-27 2003-12-22 Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher

Country Status (9)

Country Link
US (1) US7155572B2 (de)
JP (1) JP4663329B2 (de)
KR (1) KR101089810B1 (de)
CN (1) CN100424656C (de)
AU (1) AU2003300342A1 (de)
DE (1) DE10394081B4 (de)
GB (1) GB2413879B (de)
TW (1) TWI341462B (de)
WO (1) WO2004070519A2 (de)

Families Citing this family (69)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040019704A1 (en) * 2002-05-15 2004-01-29 Barton Sano Multiple processor integrated circuit having configurable packet-based interfaces
US7334102B1 (en) 2003-05-09 2008-02-19 Advanced Micro Devices, Inc. Apparatus and method for balanced spinlock support in NUMA systems
JP4508608B2 (ja) * 2003-11-13 2010-07-21 株式会社日立製作所 統合キャッシュを備えた記憶装置アダプタ
US7231470B2 (en) * 2003-12-16 2007-06-12 Intel Corporation Dynamically setting routing information to transfer input output data directly into processor caches in a multi processor system
US7373466B1 (en) * 2004-04-07 2008-05-13 Advanced Micro Devices, Inc. Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US7366845B2 (en) * 2004-06-29 2008-04-29 Intel Corporation Pushing of clean data to one or more processors in a system having a coherency protocol
US20060004965A1 (en) * 2004-06-30 2006-01-05 Tu Steven J Direct processor cache access within a system having a coherent multi-processor protocol
US7290107B2 (en) * 2004-10-28 2007-10-30 International Business Machines Corporation Direct deposit using locking cache
US7395375B2 (en) * 2004-11-08 2008-07-01 International Business Machines Corporation Prefetch miss indicator for cache coherence directory misses on external caches
US9026744B2 (en) 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US20070094432A1 (en) * 2005-10-24 2007-04-26 Silicon Integrated Systems Corp. Request transmission mechanism and method thereof
CN100396059C (zh) * 2006-03-03 2008-06-18 清华大学 分裂式网络处理器控制信息高速缓冲存储器
JP2007241612A (ja) * 2006-03-08 2007-09-20 Matsushita Electric Ind Co Ltd マルチマスタシステム
US8009566B2 (en) * 2006-06-26 2011-08-30 Palo Alto Networks, Inc. Packet classification in a network security device
US8316199B2 (en) * 2006-11-07 2012-11-20 Hitachi Solutions, Ltd. Data processing control method, information processing apparatus, and data processing control system
US20080109604A1 (en) * 2006-11-08 2008-05-08 Sicortex, Inc Systems and methods for remote direct memory access to processor caches for RDMA reads and writes
US7774554B2 (en) * 2007-02-20 2010-08-10 International Business Machines Corporation System and method for intelligent software-controlled cache injection
US7752395B1 (en) * 2007-02-28 2010-07-06 Network Appliance, Inc. Intelligent caching of data in a storage server victim cache
US8594085B2 (en) 2007-04-11 2013-11-26 Palo Alto Networks, Inc. L2/L3 multi-mode switch including policy processing
US20080295097A1 (en) * 2007-05-24 2008-11-27 Advanced Micro Devices, Inc. Techniques for sharing resources among multiple devices in a processor system
US20110004732A1 (en) * 2007-06-06 2011-01-06 3Leaf Networks, Inc. DMA in Distributed Shared Memory System
US20090006668A1 (en) * 2007-06-28 2009-01-01 Anil Vasudevan Performing direct data transactions with a cache memory
US7856530B1 (en) * 2007-10-31 2010-12-21 Network Appliance, Inc. System and method for implementing a dynamic cache for a data storage system
GB0722707D0 (en) * 2007-11-19 2007-12-27 St Microelectronics Res & Dev Cache memory
GB2454809B (en) * 2007-11-19 2012-12-19 St Microelectronics Res & Dev Cache memory system
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US7865668B2 (en) * 2007-12-18 2011-01-04 International Business Machines Corporation Two-sided, dynamic cache injection control
US8099557B2 (en) * 2008-02-26 2012-01-17 Globalfoundries Inc. Push for sharing instruction
US8209489B2 (en) * 2008-10-22 2012-06-26 International Business Machines Corporation Victim cache prefetching
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
US8225045B2 (en) * 2008-12-16 2012-07-17 International Business Machines Corporation Lateral cache-to-cache cast-in
US8117397B2 (en) * 2008-12-16 2012-02-14 International Business Machines Corporation Victim cache line selection
US8499124B2 (en) * 2008-12-16 2013-07-30 International Business Machines Corporation Handling castout cache lines in a victim cache
US8489819B2 (en) * 2008-12-19 2013-07-16 International Business Machines Corporation Victim cache lateral castout targeting
US8873556B1 (en) 2008-12-24 2014-10-28 Palo Alto Networks, Inc. Application based packet forwarding
US8769664B1 (en) 2009-01-30 2014-07-01 Palo Alto Networks, Inc. Security processing in active security devices
US8719499B2 (en) * 2009-02-10 2014-05-06 International Business Machines Corporation Cache-line based notification
US8949540B2 (en) * 2009-03-11 2015-02-03 International Business Machines Corporation Lateral castout (LCO) of victim cache line in data-invalid state
US8285939B2 (en) * 2009-04-08 2012-10-09 International Business Machines Corporation Lateral castout target selection
US8312220B2 (en) * 2009-04-09 2012-11-13 International Business Machines Corporation Mode-based castout destination selection
US8347036B2 (en) * 2009-04-09 2013-01-01 International Business Machines Corporation Empirically based dynamic control of transmission of victim cache lateral castouts
US8327073B2 (en) * 2009-04-09 2012-12-04 International Business Machines Corporation Empirically based dynamic control of acceptance of victim cache lateral castouts
US20110228674A1 (en) * 2010-03-18 2011-09-22 Alon Pais Packet processing optimization
US9189403B2 (en) * 2009-12-30 2015-11-17 International Business Machines Corporation Selective cache-to-cache lateral castouts
IL211490A (en) 2010-03-02 2016-09-29 Marvell Israel(M I S L ) Ltd Early next packets of information
US8327047B2 (en) 2010-03-18 2012-12-04 Marvell World Trade Ltd. Buffer manager and methods for managing memory
AU2010201718B2 (en) * 2010-04-29 2012-08-23 Canon Kabushiki Kaisha Method, system and apparatus for identifying a cache line
US8751714B2 (en) * 2010-09-24 2014-06-10 Intel Corporation Implementing quickpath interconnect protocol over a PCIe interface
US9098203B1 (en) 2011-03-01 2015-08-04 Marvell Israel (M.I.S.L) Ltd. Multi-input memory command prioritization
US9047441B2 (en) 2011-05-24 2015-06-02 Palo Alto Networks, Inc. Malware analysis system
US8695096B1 (en) 2011-05-24 2014-04-08 Palo Alto Networks, Inc. Automatic signature generation for malicious PDF files
DE112011105911T5 (de) * 2011-12-01 2014-09-11 Intel Corporation Server mit Switch-Schaltungen
US9268732B2 (en) 2012-06-08 2016-02-23 Advanced Micro Devices, Inc. Tunnel suitable for multi-segment communication links and method therefor
JP6028470B2 (ja) * 2012-08-31 2016-11-16 富士通株式会社 演算処理装置、情報処理装置および演算処理装置の制御方法
US9218291B2 (en) 2013-07-25 2015-12-22 International Business Machines Corporation Implementing selective cache injection
KR102238650B1 (ko) * 2014-04-30 2021-04-09 삼성전자주식회사 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법
JP6248809B2 (ja) * 2014-05-23 2017-12-20 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN103995786B (zh) * 2014-06-04 2017-05-17 龙芯中科技术有限公司 高速缓存一致性消息的传输方法和装置
US9594521B2 (en) 2015-02-23 2017-03-14 Advanced Micro Devices, Inc. Scheduling of data migration
US9792210B2 (en) * 2015-12-22 2017-10-17 Advanced Micro Devices, Inc. Region probe filter for distributed memory system
JP6565729B2 (ja) * 2016-02-17 2019-08-28 富士通株式会社 演算処理装置、制御装置、情報処理装置及び情報処理装置の制御方法
US10042762B2 (en) 2016-09-14 2018-08-07 Advanced Micro Devices, Inc. Light-weight cache coherence for data processors with limited data sharing
WO2020038466A1 (zh) 2018-08-24 2020-02-27 华为技术有限公司 数据预取方法及装置
US10761986B2 (en) 2018-10-23 2020-09-01 Advanced Micro Devices, Inc. Redirecting data to improve page locality in a scalable data fabric
US11036658B2 (en) 2019-01-16 2021-06-15 Advanced Micro Devices, Inc. Light-weight memory expansion in a coherent memory system
CN110727612B (zh) * 2019-09-09 2021-01-15 无锡江南计算技术研究所 一种基于精确预取的计算缓存装置
US11914517B2 (en) 2020-09-25 2024-02-27 Advanced Micro Devices, Inc. Method and apparatus for monitoring memory access traffic
US11874783B2 (en) 2021-12-21 2024-01-16 Advanced Micro Devices, Inc. Coherent block read fulfillment
US20240078197A1 (en) * 2022-09-01 2024-03-07 Advanced Micro Devices, Inc. Locality-based data processing

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4197580A (en) * 1978-06-08 1980-04-08 Bell Telephone Laboratories, Incorporated Data processing system including a cache memory
US4503497A (en) * 1982-05-27 1985-03-05 International Business Machines Corporation System for independent cache-to-cache transfer
US5262385A (en) 1990-07-24 1993-11-16 Mitsubishi Petrochemical Co., Ltd. Halogen-containing compounds, herbicidal composition containing the same as an active ingredient, and intermediary compounds therefor
JPH04190436A (ja) * 1990-11-26 1992-07-08 Mitsubishi Electric Corp マイクロプロセッサ内蔵キャッシュメモリ回路
JPH04195576A (ja) * 1990-11-28 1992-07-15 Nec Corp キャッシュメモリ方式
US5375216A (en) 1992-02-28 1994-12-20 Motorola, Inc. Apparatus and method for optimizing performance of a cache memory in a data processing system
US5535116A (en) * 1993-05-18 1996-07-09 Stanford University Flat cache-only multi-processor architectures
US5579503A (en) * 1993-11-16 1996-11-26 Mitsubishi Electric Information Technology Direct cache coupled network interface for low latency
CA2148186A1 (en) * 1994-05-04 1995-11-05 Michael T. Jackson Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system
US5553265A (en) * 1994-10-21 1996-09-03 International Business Machines Corporation Methods and system for merging data during cache checking and write-back cycles for memory reads and writes
US6101574A (en) * 1995-02-16 2000-08-08 Fujitsu Limited Disk control unit for holding track data in non-volatile cache memory
US5680576A (en) * 1995-05-05 1997-10-21 Silicon Graphics, Inc. Directory-based coherence protocol allowing efficient dropping of clean-exclusive data
WO1996035169A1 (en) * 1995-05-05 1996-11-07 Silicon Graphics, Inc. Page migration in a non-uniform memory access (numa) system
US5850534A (en) * 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US5829028A (en) * 1996-05-06 1998-10-27 Advanced Micro Devices, Inc. Data cache configured to store data in a use-once manner
JP3782178B2 (ja) * 1996-11-26 2006-06-07 富士通株式会社 情報処理装置
US5829025A (en) * 1996-12-17 1998-10-27 Intel Corporation Computer system and method of allocating cache memories in a multilevel cache hierarchy utilizing a locality hint within an instruction
US5996048A (en) * 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache
US6044438A (en) * 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
US6223258B1 (en) * 1998-03-31 2001-04-24 Intel Corporation Method and apparatus for implementing non-temporal loads
US6212568B1 (en) * 1998-05-06 2001-04-03 Creare Inc. Ring buffered network bus data management system
JP2000082011A (ja) * 1998-05-13 2000-03-21 Axis Ab Dmaユニットによる改良されたメモリ・アクセスをする方法及びコンピュ―タ・システム
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory
US6654953B1 (en) * 1998-10-09 2003-11-25 Microsoft Corporation Extending program languages with source-program attribute tags
US6108764A (en) * 1998-12-17 2000-08-22 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system with multiple caches concurrently holding data in a recent state from which data can be sourced by shared intervention
US6631401B1 (en) * 1998-12-21 2003-10-07 Advanced Micro Devices, Inc. Flexible probe/probe response routing for maintaining coherency
US6442666B1 (en) * 1999-01-28 2002-08-27 Infineon Technologies Ag Techniques for improving memory access in a virtual memory system
US6502171B1 (en) * 1999-08-04 2002-12-31 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data
US6549961B1 (en) * 1999-10-27 2003-04-15 Infineon Technologies North America Corporation Semaphore access in a multiprocessor system
US6427188B1 (en) * 2000-02-09 2002-07-30 Hewlett-Packard Company Method and system for early tag accesses for lower-level caches in parallel with first-level cache
US6751684B2 (en) * 2000-12-21 2004-06-15 Jonathan M. Owen System and method of allocating bandwidth to a plurality of devices interconnected by a plurality of point-to-point communication links
US7017008B2 (en) * 2000-12-29 2006-03-21 Intel Corporation Method and apparatus for optimizing data streaming in a computer system utilizing random access memory in a system logic device
JP4822598B2 (ja) * 2001-03-21 2011-11-24 ルネサスエレクトロニクス株式会社 キャッシュメモリ装置およびそれを含むデータ処理装置
US20030014596A1 (en) * 2001-07-10 2003-01-16 Naohiko Irie Streaming data cache for multimedia processor
US7100001B2 (en) * 2002-01-24 2006-08-29 Intel Corporation Methods and apparatus for cache intervention
US20040022094A1 (en) * 2002-02-25 2004-02-05 Sivakumar Radhakrishnan Cache usage for concurrent multiple streams
US6839816B2 (en) * 2002-02-26 2005-01-04 International Business Machines Corporation Shared cache line update mechanism
US6944719B2 (en) * 2002-05-15 2005-09-13 Broadcom Corp. Scalable cache coherent distributed shared memory processing system
US20040019704A1 (en) * 2002-05-15 2004-01-29 Barton Sano Multiple processor integrated circuit having configurable packet-based interfaces
JP2004005287A (ja) * 2002-06-03 2004-01-08 Hitachi Ltd コプロセッサを搭載したプロセッサシステム
US7062610B2 (en) * 2002-09-30 2006-06-13 Advanced Micro Devices, Inc. Method and apparatus for reducing overhead in a data processing system with a cache
US8533401B2 (en) * 2002-12-30 2013-09-10 Intel Corporation Implementing direct access caches in coherent multiprocessors

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE 802.3

Also Published As

Publication number Publication date
DE10394081B4 (de) 2013-05-29
AU2003300342A1 (en) 2004-08-30
WO2004070519A2 (en) 2004-08-19
TW200421089A (en) 2004-10-16
JP4663329B2 (ja) 2011-04-06
CN1754158A (zh) 2006-03-29
GB2413879A (en) 2005-11-09
CN100424656C (zh) 2008-10-08
JP2006513510A (ja) 2006-04-20
US20040148473A1 (en) 2004-07-29
KR20050107402A (ko) 2005-11-11
GB0516391D0 (en) 2005-09-14
KR101089810B1 (ko) 2011-12-12
GB2413879B (en) 2006-08-16
TWI341462B (en) 2011-05-01
WO2004070519A3 (en) 2005-08-04
US7155572B2 (en) 2006-12-26
AU2003300342A8 (en) 2004-08-30

Similar Documents

Publication Publication Date Title
DE10394081B4 (de) Verfahren und Vorrichtung zum Einprägen von Schreibdaten in einen Cache-Speicher
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE69721643T2 (de) Multiprozessorsystem ausgestaltet zur effizienten Ausführung von Schreiboperationen
DE10262164B4 (de) Computersystem mit einer hierarchischen Cacheanordnung
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE69906585T2 (de) Datenverarbeitungssystem mit nichtuniformen speicherzugriffen (numa) mit spekulativer weiterleitung einer leseanforderung an einen entfernten verarbeitungsknoten
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE112013000889B4 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE102009022151B4 (de) Verringern von Invalidierungstransaktionen aus einem Snoop-Filter
DE112017001959T5 (de) Cachespeicher-Zugriff
DE69628493T2 (de) Cache-kohärentes Computersystem, das Entwertungs- und Rückschreiboperationen minimiert
DE69736544T2 (de) Verfahren zur Verminderung der Anzahl von Kohärenz-Zyklen in einem verzeichnisbasierten Cachekohärenz-Speichersystem unter Verwendung eines Speicherzustands-Cachespeichers
DE69721891T2 (de) Deterministisches Kohärenzprotokoll für verteilten Multicache-Speicher
DE10393919B4 (de) Spekulative verteilte Konfliktauflösung für ein Cache-Kohärenzprotokoll
DE69722512T2 (de) Mehrrechnersystem mit einem die Anzahl der Antworten enthaltenden Kohärenzprotokoll
DE102013204414B4 (de) Daten-Cachespeicherblock-Freigabeanforderungen in einer Cachespeicherhierarchie mit mehreren Ebenen
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE112005002268T5 (de) Verfahren und Vorrichtung für eine vorwärtslaufende Victim-Auswahl zum Verringern eines unerwünschten Ersatzverhaltens in inklusiven Caches
DE3724730A1 (de) Cache-steuereinrichtung
DE112019000629B4 (de) Koordination von cacheoperationen
DE60212142T2 (de) Verfahren und vorrichtung zur übertragung von paketen in einem symmetrischen mehrprozessorsystem
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE4213073A1 (de) Cache-steuergeraet und verfahren zur auswahl eines pfades eines cache-verzeichnisses bei einem zeilen-fuell-zyklus
DE69724879T2 (de) Verfahren und Vorrichtung für einen Kohärenzumwandler zur Verbindung von Rechnersystemkohärenzdomänen

Legal Events

Date Code Title Description
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20130830

R071 Expiry of right