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