PatentDe  


Dokumentenidentifikation DE69831775T2 13.07.2006
EP-Veröffentlichungsnummer 0000889412
Titel Verarbeitungsvorrichtung für zerteilte Schreibdaten in Speichersteuerungseinheiten
Anmelder Sun Microsystems, Inc., Santa Clara, Calif., US
Erfinder Webber, Thomas P., Petersham, Massachusetts 01366, US;
Joshi, Ketan P., Fremont, California 94536, US
Vertreter Dr. Weber, Dipl.-Phys. Seiffert, Dr. Lieke, 65183 Wiesbaden
DE-Aktenzeichen 69831775
Vertragsstaaten DE, FR, GB, IT, NL, SE
Sprache des Dokument EN
EP-Anmeldetag 29.06.1998
EP-Aktenzeichen 983050907
EP-Offenlegungsdatum 07.01.1999
EP date of grant 05.10.2005
Veröffentlichungstag im Patentblatt 13.07.2006
IPC-Hauptklasse G06F 13/16(2006.01)A, F, I, 20051017, B, H, EP

Beschreibung[de]
GEBIET DER ERFINDUNG

Die vorliegende Erfindung bezieht sich auf Speichersteuerungen für Computer und insbesondere auf einen besonders effizienten Mechanismus zum Bewirken bzw. Ausführen von Lese- und Schreibvorgängen in einem Speichersystem mit aufgespaltener Transaktion. Ein System nach dem Stand der Technik wird durch die Druckschrift US 5,455,924 offenbart.

HINTERGRUND DER ERFINDUNG

Ein typisches Speichersystem enthält eine Speichereinrichtung und eine Speichersteuerung. Speichereinrichtungen umfassen, ohne hierauf beschränkt zu sein, Speichereinrichtungen mit wahlfreiem Zugriff (RAM) und Speichereinrichtungen, die ein Speichermedium umfassen, wie z.B. magnetische und/oder optische Platten. Ein dynamischer RAM (DRAM) ist ein Beispiel einer Speichereinrichtung, die in Computersystemen üblicherweise verwendet wird.

Speichersteuereinrichtungen empfangen typischerweise Speicherzugriffsanweisungen von einer Prozessoreinheit, wie z.B. einer zentralen Prozessoreinheit (CPU). Programmanweisungen, die durch einen Prozessor ausgeführt werden, erfordern typischerweise, daß Speicherzugriffsanweisungen, die an eine Speichersteuerung ausgegeben werden, durch die Speichersteuerung in der bestimmten Reihenfolge ausgeführt werden, in welcher die Speicherzugriffsanweisungen durch die Speichersteuerung empfangen wurden. Beispielsweise geht man davon aus, daß eine Leseanweisung, welche Daten abruft, die an einer Speicherstelle gespeichert sind, welche durch eine zuvor ausgegebene Schreibanweisung überschrieben wurde, die nach Ausführung dieser Schreibanweisung gespeicherten Daten abrufen soll. Mit anderen Worten, man geht davon aus, daß der vorherige Schreibbefehl vor dem danach ausgegebenen Lesebefehl ausgeführt werden soll. Wenn die relative Reihenfolge der Ausführung der Schreibe- und Leseanweisungen nicht eingehalten wird, hängen die Daten, die durch Ausführung des Lesebefehls abgerufen werden, von der relativen Reihenfolge der Ausführung der Schreib- und Leseanweisungen ab. Dies führt zu einem unvorhersagbaren Verhalten von Computervorgängen. Deshalb werden Speicherzugriffsvorgänge typischerweise der Reihe nach abgearbeitet, um die Datenintegrität und die Vorhersagbarkeit eines Computerprozesses aufrechtzuerhalten.

Bei einer aufgespaltenen Speicherzugriffstransaktion kann ein einzelner Speicherzugriffsbefehl in mehreren Teilen ausgegeben werden. Beispielsweise können eine Anforderung nach einem Speicherzugriff und die entsprechende Speicheradresse beide in einer ersten Transaktion von einem Prozessor an eine Speichersteuerung ausgegeben werden, und Daten, welche der Anforderung und der Speicheradresse entsprechen, können von dem Prozessor an die Speichersteuerung in einer zweiten, nachfolgenden Transaktion ausgegeben werden. Solche aufgespaltenen Transaktionen des Speicherzugriffs sind typischerweise aufgespaltene Schreibanweisungen, da ein Schreibbefehl typischerweise sowohl die Angabe einer Zieladresse als auch von Schreibdaten erfordert, die in die Zieladresse geschrieben werden sollen. Dementsprechend kann die Zieladresse zusammen mit einer Anweisung an eine Speichersteuerung gesendet werden, welche in einer Transaktion einen Schreibvorgang spezifiziert, während die Schreibdaten in einer nachfolgenden Transaktion an die Speichersteuerung gesendet werden können. Leseanweisungen geben typischerweise eine Quelladresse und einen Befehl an, welcher einen Lesevorgang spezifiziert. Das Senden der Lesedaten an die Speichersteuerung ist im allgemeinen unnötig, da die Datenübertragung des Lesevorgangs von dem Speicher zu dem Prozessor ausgeführt wird. Dementsprechend werden Leseanweisungen typischerweise von der Speichersteuerung als vollständig angesehen, da die gesamte Information, die erforderlich ist, um eine Leseanweisung auszuführen, empfangen wird, wenn die Leseanforderung und die Quelladresse empfangen wurden.

Eine aufgespaltene Schreibanweisung erfordert typischerweise, daß die Schreibanweisung vor der Ausführung derselben durch die Speichersteuerung vollständig ist. Insbesondere kann die Speichersteuerung keinen aufgespaltenen Schreibbefehl ausführen, bis die erforderlichen Schreibdaten in einer nachfolgenden Transaktion empfangen wurden. Da die Schreibdaten in einer aufgespaltenen Schreibanweisung oftmals in einer späteren Transaktion als die Schreibanweisung und die Zieladresse bereitgestellt werden, kann das Verarbeiten einer aufgespaltenen Schreibanweisung eine Abwarteperiode für die Schreibdaten erfordern. In dem hier verwendeten Sinn bezeichnet eine Abwarteperiode für Schreibdaten einen Zeitraum der Inaktivität einer Speichersteuerung, während die Speichersteuerung auf den Empfang der Schreibdaten einer aufgespaltenen Schreibanweisung wartet. Umgekehrt können Leseanweisungen in Systemen mit aufgespaltener Transaktion, welche eine Leseanforderung und eine Leseadresse enthalten, durch die Speichersteuerung unmittelbar ohne irgendeine Warteperiode ausgeführt werden.

Aufgespaltene Transaktionen vergrößern die Speicherzugriffseffizienz, indem sie es einem Speichersystem erlauben, eine Speicherschreibanweisung zu initiieren, die erforderlichen entsprechenden Schreibdaten von irgendeiner aus einer Anzahl von Quellen zusammenzuholen und die Verarbeitung der Speicherschreibanweisung abzuschließen, wenn die erforderlichen Schreibdaten anschließend empfangen wurden. Da jedoch Speicherzugriffsvorgänge typischerweise der Reihe nach ausgeführt werden, um die Datenintegrität zu erhalten, müssen nachfolgende Speicherzugriffsanweisungen, die vollständig und für die Ausführung bereit sind, einschließlich von Leseanweisungen, im allgemeinen auf die Ausführung vorangehender aufgespaltener Schreibanweisungen warten, die nicht ausgeführt werden können, bis die erforderlichen Schreibdaten durch die Speichersteuerung empfangen wurden. Dieses Blockieren von nachfolgenden Speicherzugriffsanforderungen während eines anhängigen Empfangs von Schreibdaten, die einer zuvor empfangenen aufgespaltenen Schreibanweisung entsprechen, führt zu einer beträchtlichen Ineffizienz bei konventionellen Speichersteuersystemen mit aufgespaltener Transaktion.

Was benötigt wird, ist ein Mechanismus für das weitere Verbessern der Effizienz und des Durchsatzes von Speichersteuerungen, die eine Folge von aufgespaltenen Speicherzugriffsanweisungen verarbeiten, wobei die Integrität der Daten erhalten bleibt.

ZUSAMMENFASSUNG DER ERFINDUNG

Besondere und bevorzugte Aspekte der Erfindung sind in den beigefügten unabhängigen und abhängigen Ansprüchen dargelegt.

In einer Ausführungsform der vorliegenden Erfindung werden unvollständige Schreibanweisungen in einem Speichersystem mit aufgespaltenen Transaktionen in einem Nebenpuffer [A.d.Ü.: auch als Seitenpuffer bezeichnet] gespeichert. Eine Speichersteuerung empfängt Leseanweisungen und aufgespaltene Schreibanweisungen von einem Prozessor. Eine aufgespaltene Schreibanweisung enthält eine Schreibadresse, eine Schreibanforderung, welche den Befehl als Schreibanweisung kennzeichnet, und Schreibdaten. In einer aufgespaltenen Schreibanweisung können die Schreibadresse und die Schreibanforderung für die Speichersteuerung in einer anfänglichen Transaktion bereitgestellt werden, während die Schreibdaten in einer nachfolgenden Transaktion für die Speichersteuerung bereitgestellt werden können.

Die Speichersteuerung enthält eine First-In-First-Out-Speichereinrichtung (Haupt-FIFO), einen Nebenpuffer und eine Speichersteuerlogik. Unter der Steuerung der Speichersteuerlogik empfängt der Haupt-FIFO eine Folge von aufgespaltenen Speicherzugriffsanweisungen und speichert diese. Die Speichersteuerungslogik ordnet vollständige Schreibanweisungen auf dem Haupt-FIFO in einer Schlange an und holt die vollständigen Anweisungen aus dem Haupt-FIFO, um sie der Reihe nach auszuführen. Außerdem speichert unter der Steuerung der Speichersteuerlogik der Nebenpuffer zeitweise unvollständige Schreibanweisungen. Entsprechend den Prinzipien der vorliegenden Erfindung empfängt die Speichersteuerung eine unvollständige Schreibanweisung und speichert die unvollständige Schreibanweisung in dem Nebenpuffer, solange der Empfang der Schreibdaten auf sich warten läßt, der die unvollständige Schreibanweisung abschließt. Im Anschluß an empfangene Speicherzugriffsanweisungen, die vollständig sind und die nicht in Konflikt mit der unvollständigen Schreibanweisung stehen, d.h. welche nicht auf irgendeine Speicherstelle zugreifen, auf welche auch durch die unvollständige Schreibanweisung zugegriffen wird, werden auf dem Haupt-FIFO für eine unmittelbare Ausführung außerhalb der Reihenfolge bezüglich der unvollständigen Schreibanweisung in einer Schlange angeordnet. Durch Ausführen der Speicherzugriffsanweisungen außerhalb der Reihenfolge wird eine eine Verzögerung bedeutende Warteperiode vermieden, wodurch die Leistungsfähigkeit und der Durchsatz des Speichersystems verbessert werden. Zusätzlich wird, da sichergestellt wird, daß zwischen der vollständigen Speicherzugriffsanweisung und der unvollständigen Schreibanweisung, die in dem Nebenpuffer gespeichert ist, kein Konflikt vorliegt, die Datenintegrität sichergestellt. Auf diese Weise erreicht eine Speichersteuerung gemäß den Prinzipien der vorliegenden Erfindung eine schnellere Ausführung aufeinanderfolgender, aufgespaltener Speicherzugriffsanweisungen, während die Datenintegrität beibehalten wird.

Wenn ein Speicherzugriffskonflikt mit der unvollständigen Schreibanweisung in einer nachfolgend ausgegebenen, vollständigen Speicherzugriffsanweisung erfaßt wird, wird die Ausführung der vollständigen Speicherzugriffsanweisung verschoben, bis die unvollständige Schreibanweisung abgeschlossen und ausgeführt worden ist. Dementsprechend kann eine eine Verzögerung bedeutende Warteperiode auftreten, wenn dies notwendig ist, um die Datenintegrität sicherzustellen. Andere vollständige Speicherzugriffsanweisungen jedoch, die nicht mit der unvollständigen Schreibanweisung in Konflikt sind, und die vor der in Konflikt stehenden, vollständigen Speicherzugriffsanforderung ausgegeben wurden, können vor dem Abschluß der unvollständigen Schreibanweisung verarbeitet und vor dem Verschieben der Verarbeitung der in Konflikt stehenden Speicherzugriffsanweisung ausgeführt werden.

Wenn die Schreibdaten des unvollständigen Schreibbefehls, der in dem Nebenpuffer gespeichert ist, empfangen werden, werden die Schreibdaten mit der unvollständigen Schreibanweisung kombiniert, um eine vollständige Schreibanweisung zu bilden, die von dem Nebenpuffer für die Verarbeitung in den FIFO verschoben wird. Alle anderen Speicherzugriffsanweisungen, welche mit der zuvor unvollständigen Schreibanweisung in Konflikt waren, sind dann für eine unmittelbare Ausführung bereit.

KURZE BESCHREIBUNG DER FIGUREN

Die vorliegende Erfindung wird beispielhaft, jedoch ohne Beschränkungsabsicht in den Figuren der beigefügten Zeichnungen beschrieben, in welchen gleiche Bezugszahlen sich auf ähnliche Elemente beziehen und in denen:

1 ein Blockdiagramm einer Speichersteuerung ist, die einen Nebenpuffer gemäß der vorliegenden Erfindung für eine schnelle Verarbeitung von Speicherzugriffsanweisungen in einem Speichersystem mit aufgespaltenen Transaktionen umfaßt,

2 ein Blockdiagramm einer Ausführungsform einer Struktur eines Nebenpuffers nach 1 ist, um unvollständige Speicherzugriffsanweisungen gemäß den Prinzipien der vorliegenden Erfindung zu speichern,

3 ein logisches Flußdiagramm eines Verfahrens zum Empfangen und anfänglichen Verarbeiten einer Speicherzugriffsanweisung in einem Speichersystem mit aufgespaltener Transaktion gemäß den Prinzipien der vorliegenden Erfindung ist, und

4 ein logisches Flußdiagramm eines Verfahrens zum Empfangen von Speicherschreibdaten ist, welche einem unvollständigen, aufgespaltenen Schreibbefehl entsprechen, der in einem Nebenpuffer in einem Speichersystem mit aufgespaltener Transaktion gemäß den Prinzipien der vorliegenden Erfindung gespeichert ist.

GENAUE BESCHREIBUNG

In der folgenden genauen Beschreibung von Ausführungsformen der vorliegenden Erfindung sind viele spezielle Einzelheiten dargestellt, um ein vollständiges Verständnis der vorliegenden Erfindung zu gewährleisten. Es liegt jedoch für Fachleute auf der Hand, daß die vorliegende Erfindung ohne diese speziellen Einzelheiten oder durch Verwendung alternativer Elemente oder Abläufe ausgeführt werden kann. In anderen Fällen wohlbekannte Prozesse, Vorgänge, Komponenten und Schaltkreise sind nicht im einzelnen beschrieben worden, um Aspekte der vorliegenden Erfindung nicht unnötig zu verschleiern.

In einer Ausführungsform der Erfindung enthält eine Speichersteuerung 107 (1) einen Nebenpuffer 112 zum Speichern unvollständiger Schreibanweisungen, während nachfolgend empfangene, nicht damit in Konflikt stehende, vollständige Speicherzugriffsanweisungen vor einer solchen unvollständigen Schreibanweisung auf einem Haupt-FIFO 114 für die weitere Verarbeitung in einer Schlange angeordnet werden können. Wie in 1 dargestellt, ist die Speichersteuerung 107 ein Teil eines Speichersystems 100. In dem Speichersystem 100 stellt eine synchrone Verbindung 102 eine Kommunikation von Speicherzugriffsanweisungen und Daten zwischen einem Prozessor 104 und einer Speichersteuerung 107 bereit. Der Prozessor 104 enthält einen Cachespeicher 106. In einer Ausführungsform ist der Prozessor 104 ein SPARC-Prozessor, der von Sun Microsystems, Inc. in Mountainview, Kalifornien, erhältlich ist. Zusätzliche Verbindungen 116 sind ebenfalls für die Kommunikation von Daten und Steuersignalen zwischen der Speichersteuerung 107 und einer Speichereinrichtung 108 vorgesehen. Die Speichereinrichtung 108 kann, ohne hierauf beschränkt zu sein, eine Speichereinrichtung mit wahlfreiem Zugriff (RAM) und Speichereinrichtungen, die Speichermedien, wie z.B. magnetische und/oder optische Platten, enthalten, umfassen. In einer Ausführungsform der vorliegenden Erfindung ist die Speichereinrichtung 108 ein dynamischer RAM (DRAM). Der Prozessor 104, die synchrone Verbindung 102 und das Speichersystem 100 können Bestandteile eines Computersystems, wie z.B. des SPARCstation, Workstation-Computersystems sein, das von Sun Microsystems, Inc. in Mountainview, Kalifornien, erhältlich ist. Sun, Sun Microsystems und das Sun-Logo sind Marken oder eingetragene Marken von Sun Microsystems, Inc. in den Vereinigten Staaten und anderen Ländern. Alle SPARC-Marken werden unter Lizenz verwendet und sind Marken von SPARC International, Inc. in den Vereinigten Staaten und anderen Ländern. Produkte, welche SPARC-Marken tragen, beruhen auf einer von Sun Microsystems, Inc. entwickelten Architektur.

Die Speichersteuerung 107 enthält eine Speichersteuerlogik 110, einen Nebenpuffer 110 und einen Haupt-FIFO 114. Die Speichersteuerung 107 empfängt und verarbeitet Speicherzugriffsanweisungen von dem Prozessor 104. Derartige Speicherzugriffsanweisungen können aufgespaltene Schreibanweisungen und Leseanweisungen umfassen.

Eine aufgespaltene Schreibanweisung enthält eine Schreibanforderung, welche den Befehl als Schreibbefehl kennzeichnet, einen Schreibadreßbereich, welcher einen Bereich von Speicherstellen innerhalb der Speichereinrichtung 108 angibt, und Schreibdaten, die in dem Bereich der Speicherstellen gespeichert werden sollen, welche durch den Schreibadreßbereich angegeben wurden. In einer Ausführungsform der vorliegenden Erfindung kann der Prozessor 104 aufgespaltene Schreibanweisungen in zwei Teilen an die Speichersteuerung 107 ausgeben. Der erste Teil einer aufgespaltenen Schreibanweisung umfaßt die Schreibanforderung und den Schreibadreßbereich. Der zweite Teil einer aufgespaltenen Schreibanweisung, der zu einem Zeitpunkt ausgegeben werden kann, der nach der Ausgabe des ersten Teils liegt, enthält die Schreibdaten. Auf die Schreibdaten kann von dem Cache 106 des Prozessors 104 oder von einer anderen Speicherquelle auf Befehl des Prozessors 104 zugegriffen werden. Wenn der Zugriff erfolgt ist, stellt der Prozessor 104 die Schreibdaten für die Speichersteuerung 107 bereit. Die Speichersteuerung 107 kann außerdem vollständige Schreibanweisungen empfangen und verarbeiten, in welchen die Schreibanforderung, der Schreibadreßbereich und die Schreibdaten durch die Speichersteuerung 107 allesamt in einer einzelnen Transaktion über die synchrone Verbindung 102 empfangen wurden. Speicherleseanweisungen, welche durch die Speichersteuerung 107 verarbeitet werden, enthalten im allgemeinen eine Leseanforderung, welche die Anweisung als eine Leseanweisung kennzeichnet, und einen Leseadreßbereich. Der Leseadreßbereich gibt einen Bereich von Speicherstellen innerhalb der Speichereinrichtung 108 an, aus welchem die Daten geholt bzw. abgerufen werden sollen. Die Speichersteuerung 107 empfängt Leseanweisungen in einer vollständigen Form in einer einzigen Transaktion über die synchrone Verbindung 102.

Die Speichersteuerung 107 kann alle vollständigen Speicherzugriffsanweisungen verarbeiten, d.h. alle vollständigen Schreibanweisungen und alle Leseanweisungen, ohne weitere Information von dem Prozessor 104 zu benötigen. Die Speichersteuerung 107 kann jedoch nicht eine unvollständige Schreibanweisung verarbeiten, bis sie vollständig ist, d.h. bis die entsprechenden Schreibdaten angekommen sind. Beispielsweise kann die Speichersteuerung 107 eine Leseanweisung durch Lesen der Daten aus der angegebenen Leseadresse in der Speichereinrichtung 108 ausführen, sobald die Leseanweisung angekommen ist. Im Gegensatz dazu kann eine unvollständige Schreibanweisung, beispielsweise eine Schreibanforderung und ein Schreibadreßbereich ohne Schreibdaten, durch die Speichersteuerung 107 nicht ausgeführt werden, bis die entsprechenden Schreibdaten von dem Prozessor 104 empfangen wurden. Dementsprechend kann eine beträchtliche Verzögerung, die manchmal auch als eine Warteperiode bezeichnet wird, zwischen dem Empfang der unvollständigen Schreibanweisung und den entsprechenden Schreibdaten vergehen. Die Speichersteuerung 107 verwendet jedoch den Nebenpuffer 112, um unvollständige Schreibanweisungen zu speichern, so daß nachfolgend empfangene, nicht damit in Konflikt stehende Speicherzugriffsanweisungen während der Warteperiode auf die unvollständige Schreibanweisung verarbeitet werden können.

Die Speichersteuerung 107 verarbeitet empfangene Speicherzugriffsanweisungen gemäß dem logischen Flußdiagramm 300 (3), in welchem die Verarbeitung mit dem Schritt 302 beginnt. In Schritt 302 empfängt die Speichersteuerung 107 (1) eine Speicherzugriffsanweisung. In einer Ausführungsform verarbeitet die Speichersteuerlogik 110 Speicherzugriffsanweisungen so, wie sie durch die Speichersteuerung von dem Prozessor 104 empfangen wurden und bevor empfangene Speicherzugriffsanweisungen auf dem Haupt-FIFO 114 in einer Schlange angeordnet werden. In einer alternativen Ausführungsform verarbeitet die Speichersteuerlogik 110 Speicherzugriffsanweisungen, wie sie aus dem Haupt-FIFO 114 aus der Schlange aufgelöst wurden, nachdem alle zuvor empfangenen Speicherzugriffsanweisungen verarbeitet worden sind. In jedem Fall wird die Speicherzugriffsanweisung, welche durch die Speichersteuerlogik 110 in den Schritten des logischen Flußdiagramms 300 (3) verarbeitet wird, hier als die in Rede stehende Speicherzugriffsanweisung bezeichnet.

In Schritt 304 (3), in welchem die Verarbeitung von Schritt 302 aus fortschreitet, bestimmt die Speichersteuerlogik 110 (1) der Speichersteuerung 107, ob die in Rede stehende Speicherzugriffsanweisung vollständig ist. Die in Rede stehende Speicherzugriffsanweisung ist vollständig, wenn (i) die in Rede stehende Speicherzugriffsanweisung eine Leseanweisung ist, wie es durch eine Leseanforderung angezeigt wird, und die einen Leseadreßbereich enthält, oder (ii) die in Rede stehende Speicherzugriffsanweisung eine Schreibanweisung ist, wie sie durch eine Schreibanforderung angezeigt wird, und die einen Schreibadreßbereich und Schreibdaten enthält. Wenn die Speichersteuerlogik 110 feststellt, daß die in Rede stehende Speicherzugriffsanweisung vollständig ist, geht die Verarbeitung weiter zu dem Testschritt 308 (3), welcher nachstehend beschrieben wird. Umgekehrt geht, wenn die Speichersteuerlogik 110 (1) feststellt, daß die in Rede stehende Speicherzugriffsanweisung unvollständig ist, die Verarbeitung von dem Testschritt 304 (3) zu dem Testschritt 306.

In dem Testschritt 306 stellt die Speichersteuerlogik 110 (1) fest, ob der Nebenpuffer 112 für eine Speicherung einer unvollständigen Schreibanweisung verfügbar ist. Die Speichersteuerlogik 110 betrifft eine solche Feststellung durch Vergleich von Daten, die in einem Gültigkeitsfeld 206 (2) des Nebenpuffers 112 gespeichert sind, mit Daten, welche anzeigen, daß der Nebenpuffer für die Speicherung einer Speicherzugriffsanweisung verfügbar ist. Der Nebenpuffer 112 und das Gültigkeitsfeld 206 werden unten noch genauer beschrieben. Wenn der Nebenpuffer 112 für eine Speicherung einer unvollständigen Schreibanweisung nicht verfügbar ist, geht die Verarbeitung zurück zu dem Testschritt 306. Die Verarbeitung der in Rede stehenden Speicherzugriffsanweisung wird damit angehalten, bis der Nebenpuffer 112 für eine Speicherung der in Rede stehenden Speicherzugriffsanweisung verfügbar ist. Umgekehrt geht, wenn der Nebenpuffer 112 für die Speicherung einer unvollständigen Schreibanweisung verfügbar ist, die Verarbeitung von dem Testschritt 306 (3) zu Schritt 308.

In Schritt 308 speichert die Speichersteuerlogik 110 (1) die in Rede stehende Speicherzugriffsanweisung, die, wie oben im Kontext des Testschritts 304 (3) beschrieben wurde, als unvollständige Schreibanweisung bestimmt wurde, in dem Nebenpuffer 112 (1). Der Nebenpuffer 112 ist in 2 genauer dargestellt. Der Nebenpuffer 112 enthält Felder 204208 zum Speichern einer Speicherzugriffsanweisung und entsprechender Beschreibungsdaten der Speicherzugriffsanweisung. Die Felder 204208 enthalten ein Adreßfeld 204, ein Gültigkeitsfeld 206 und ein Schreibdatenfeld 208. Jedes der Felder 204208 speichert Daten, die gemeinsam ein bestimmtes Stück einer Information angeben, die sich auf eine Speicherzugriffsanweisung bezieht.

Das Adreßfeld 204 speichert Daten, welche einen Speicheradreßbereich der Speichereinrichtung 108 angeben, der die Zieladresse für eine bestimmte Schreibanweisung ist. Das Gültigkeitsfeld 206 speichert Daten, die ein Gültigkeitstag spezifizieren, welches anzeigt, ob die entsprechende Speicherzugriffsanweisung gültig ist. Insbesondere zeigen Daten, welche in dem Gültigkeitsfeld 206 gespeichert sind, an, ob der Nebenpuffer 112 eine Speicherzugriffsanweisung speichert oder für die Speicherung einer Speicherzugriffsanweisung verfügbar ist. Das Schreibdatenfeld 208 ordnet Speicherraum zum Speichern von Schreibdaten zu, wenn derartige Schreibdaten nachfolgend empfangen werden, um eine unvollständige Schreibanweisung, die in dem Nebenpuffer 112 gespeichert ist, zu vervollständigen.

Im Verlaufe des Ladens der in Rede stehenden Speicherzugriffsanweisung in den Nebenpuffer 112 (1) in Schritt 308 (3) speichert die Speichersteuerlogik 110 (1) (1) die Schreibadresse, die durch die in Rede stehende Speicherzugriffsanweisung angegeben wird, in dem Adreßfeld 204 (2), und (2) setzt das Gültigkeitstag in dem entsprechenden Gültigkeitsfeld 206 (2), um anzuzeigen, daß der Nebenpuffer 112 eine gültige Speicherzugriffsanweisung enthält.

Nach dem Schritt 308 (3) wird die Verarbeitung entsprechend dem logischen Flußdiagramm 300 vervollständigt. Demnach wird, falls die in Rede stehende Speicherzugriffsanweisung eine unvollständige Schreibanweisung ist, die unvollständige Schreibanweisung nicht verarbeitet, sondern wird stattdessen in dem Nebenpuffer 112 (1) gespeichert, bis die erforderlichen Schreibdaten anschließend durch die Speichersteuerung empfangen werden. Die Verarbeitung durch die Speichersteuerung 107 nach dem Empfang der Schreibdaten, welche einer zuvor empfangenen unvollständigen Schreibanweisung entsprechen, verläuft entsprechend dem logischen Flußdiagramm 400 (4), das nachstehend noch genauer beschrieben wird. Es versteht sich, daß die nachfolgend empfangenen Speicherzugriffsanweisungen durch die Speichersteuerlogik 110 (1) entsprechend dem logischen Flußdiagramm 300 (3) vor dem Empfang der erforderlichen Schreibdaten zur Vervollständigung einer unvollständigen Schreibanweisung verarbeitet werden können.

Wenn in dem Testschritt 304 (3) die Speichersteuerlogik 110 (1) feststellt, daß die in Rede stehende Speicherzugriffsanweisung vollständig ist, geht die Verarbeitung von Schritt 304 (3) zu Testschritt 310. In dem Testschritt 310 stellt die Speichersteuerung 110 (1) fest, ob die in Rede stehende Speicherzugriffsanweisung mit irgendeiner Speicherzugriffsanweisung, die in dem Nebenpuffer 112 gespeichert ist, in Konflikt steht, die hier manchmal als die Speicherzugriffsanweisung des Nebenpuffers bezeichnet wird. Da die Speicherzugriffsanweisung des Nebenpuffers in dem Nebenpuffer 112 bei einer vorherigen Ausführung der Schritte des logischen Flußdiagramms 300 (3) gespeichert wurde, ist es wichtig zu verifizieren, daß es keinen Konflikt zwischen der in Rede stehenden Speicherzugriffsanweisung und der Speicherzugriffsanweisung im Nebenpuffer gibt, da dies eine Voraussetzung der Verarbeitung der in Rede stehenden Speicherzugriffsanweisung vor dem Verarbeiten der Speicherzugriffsanweisung im Nebenpuffer ist. Dies erhält die Datenintegrität.

Die Speichersteuerlogik 110 (1) stellt fest, ob die in Rede stehende Speicherzugriffsanweisung mit der Speicherzugriffsanweisung im Nebenpuffer in Konflikt steht, indem sie den Schreibadreßbereich der Speicherzugriffsanweisung im Nebenpuffer mit dem Adreßbereich der in Rede stehenden Speicherzugriffsanweisung vergleicht. Der Adreßbereich der in Rede stehenden Speicherzugriffsanweisung ist ein Leseadreßbereich, wenn die in Rede stehende Speicherzugriffsanweisung eine Leseanweisung ist, und sie ist ein Schreibadreßbereich, wenn die in Rede stehende Speicherzugriffsanweisung eine Schreibanweisung ist. Beim Vergleichen der jeweiligen Adreßbereiche stellt die Speichersteuerlogik 110 fest, ob eine oder mehrere Speicheradressen beiden Adreßbereichen gemeinsam sind. Daher stellt die Speicherlogik 110 (1) im Testschritt 310 (3) fest, ob die in Rede stehende Speicherzugriffsanweisung mit der Speicherzugriffsanweisung des Nebenpuffers in Konflikt steht, indem sie bestimmt, ob die entsprechenden Adreßbereiche eine oder mehrere Adressen gemeinsam haben.

Wenn die Speichersteuerlogik 110 (1) in dem Testschritt 310 (3) feststellt, daß die in Rede stehende Speicherzugriffsanweisung mit der Speicherzugriffsanweisung des Nebenpuffers in Konflikt steht, führt eine Verarbeitung entsprechend dem logischen Flußdiagramm 300 dazu, daß der Testschritt 310 wiederholt ausgeführt wird, oder anderenfalls abgewartet wird, bis der unvollständige Schreibbefehl, der in dem Nebenpuffer 112 gespeichert ist, abgeschlossen und verarbeitet ist. Nachdem die in dem Nebenpuffer 112 gespeicherte Schreibanweisung abgeschlossen und verarbeitet ist, steht der in Rede stehende Speicherzugriff nicht mehr in Konflikt mit der Speicherzugriffsanweisung des Nebenpuffers und die Verarbeitung entsprechend dem logischen Flußdiagramm 300 (3) geht weiter zu Schritt 312, der nachstehend beschrieben wird. Wenn die Speichersteuerlogik 110 (1) in dem Testschritt 310 feststellt, daß die in Rede stehende Speicherzugriffsanweisung nicht mit der Speicherzugriffsanweisung im Nebenpuffer in Konflikt steht, geht die Verarbeitung entsprechend dem logischen Flußdiagramm 300 (3) von dem Testschritt 310 zu dem Schritt 312 weiter.

In Schritt 312 (3) verarbeitet die Speichersteuerlogik 110 (1) die in Rede stehende Speicherzugriffsanweisung. In der beispielhaften Ausführungsform, in welcher die Speichersteuerung 107 die in Rede stehende Speicherzugriffsanweisung in Schritt 302 empfängt, verarbeitet die Speichersteuerlogik 110 die in Rede stehende Speicherzugriffsanweisung in Schritt 312, indem sie die in Rede stehende Speicherzugriffsanweisung auf dem Haupt-FIFO 114 für eine nachfolgende Verarbeitung in einer Schlange anordnet, was ein Bewirken der Datenübertragung innerhalb der Speichersteuereinrichtung 108 entsprechend der in Rede stehenden Speicherzugriffsanweisung einschließt. In der alternativen Ausführungsform, in welcher die in Rede stehende Speicherzugriffsanweisung in Schritt 302 aus dem Haupt-FIFO 114 aus der Schlange genommen wird, verarbeitet die Speichersteuerlogik 110 (1) die in Rede stehende Speicherzugriffsanweisung, indem sie die Datenübertragung innerhalb der Speichereinrichtung 108 gemäß der in Rede stehenden Speicherzugriffsanweisung bewirkt.

Demnach wird die in Rede stehende Speicherzugrffsanweisung, welche durch die Speichersteuerung 107 nach dem Empfang der Speicherzugriffsanweisung des Nebenpuffers empfangen wird, vor der Speicherzugriffsanweisung des Nebenpuffers verarbeitet, wenn die in Rede stehende Speicherzugriffsanweisung und die des Nebenpuffers nicht in Konflikt miteinander sind. Im Ergebnis wird die Verarbeitung von nicht in Konflikt stehenden Leseanweisungen während des Wartens auf die Vervollständigung einer zuvor empfangenen, unvollständigen Schreibanweisung nicht verschoben. Dementsprechend erkennt man gemäß der Erfindung eine beträchtliche Verbesserung hinsichtlich der Verarbeitung der Speicherzugriffsanweisung und hinsichtlich des Durchsatzes.

Die Speichersteuerung 107 verarbeitet Schreibdaten, die von dem Prozessor 104 über die synchrone Verbindung 102 empfangen wurden, wie es in dem logischen Flußdiagramm 400 (4) dargestellt wird, in welchem die Verarbeitung mit dem Schritt 402 beginnt. In Schritt 402 empfängt die Speichersteuerlogik 110 (1) Schreibdaten. Von Schritt 402 (4) geht die Verarbeitung weiter zu Schritt 404, in welchem die Speichersteuerlogik 110 (1) eine zuvor empfangene, unvollständige Schreibanweisung vorfindet, die in dem Nebenpuffer 112 gespeichert ist und welcher die aktuell empfangenen Schreibdaten entsprechen.

In Schritt 406 (4) bildet die Speichersteuerlogik 110 (1) eine vollständige Schreibanweisung, indem sie die empfangenen Schreibdaten und die unvollständige Schreibanweisung miteinander kombiniert, die den empfangenen Schreibdaten entspricht. Die Verarbeitung geht weiter zu Schritt 408 (4), in welchem die Speichersteuerlogik 110 (1) die nunmehr vervollständigte Speicherzugriffsanweisung des Nebenpuffers in der Weise verarbeitet, die oben in Verbindung mit Schritt 312 (3) beschrieben wurde. Zusätzlich wird nach Schritt 408 (4) jegliche Speicherzugriffsanweisung, die in Testschritten 306 und/oder 310 in Anbetracht der anhängigen Verarbeitung der Speicherzugriffsanweisung des Nebenpuffers angehalten wurde, freigegeben. Insbesondere wird jede unvollständige Schreibanweisung, die in Testschritt 306 angehalten wurde, in Schritt 308 in dem Nebenpuffer 112 gespeichert, und jede vollständige Speicherzugriffsanweisung, die in Konflikt mit der Speicherzugrffsanweisung des Nebenpuffers war und daher in Testschritt 310 angehalten wurde, wird in Schritt 312 verarbeitet, wie oben beschrieben.

Durch Verwenden des Nebenpuffers 112 für das zeitweilige Speichern unvollständiger Schreibanweisungen kann die Verarbeitung nachfolgend ausgegebener Speicherzugriffsanweisungen fortgeführt werden, solange derartige nachfolgend ausgegebene Speicherzugriffsanweisungen nicht in Konflikt mit der Speicherzugriffsanweisung des Nebenpuffers sind. Die Verwendung des Nebenpuffers 112 in der oben beschriebenen Weise verbessert die Leistungsfähigkeit und den Speicherzugriffsdurchsatz einer Speichersteuerung in einem System mit aufgespaltener Transaktion beträchtlich.

Es versteht sich, daß die obige Beschreibung lediglich beispielhaft und nicht beschränkend ist.


Anspruch[de]
  1. Verfahren zum Verarbeiten von Speicherzugriffsanweisungen in einem Computer, welcher einen Speicher enthält, wobei das Verfahren aufweist:

    Empfangen einer ersten Speicherzugriffsanweisung, die einem ersten Zugriff auf Daten innerhalb des Speichers in einem ersten Bereich von Speicheradressen entspricht,

    Feststellen, daß die erste Speicherzugriffsanweisung unvollständig ist,

    Speichern der ersten Speicherzugriffsanweisung in einem Nebenpuffer,

    Empfangen einer zweiten Speicherzugriffsanweisung, welche einem zweiten Zugriff auf Daten innerhalb des Speichers in einem zweiten Bereich von Speicheradressen entspricht,

    Verarbeiten der zweiten Speicherzugriffsanweisung, um den zweiten Zugriff auf Daten innerhalb des Speichers in dem zweiten Bereich von Speicheradressen zu bewirken,

    Empfangen von Daten, die die erste Speicherzugriffsanforderung vervollständigen,

    Kombinieren der empfangenen Daten mit der ersten Speicherzugriffsanweisung, um eine vollständige Speicherzugriffsanweisung zu bilden, und

    Verarbeiten der vollständigen Speicherzugriffsanweisung, um den ersten Zugriff auf Daten innerhalb des Speichers in dem ersten Bereich von Speicheradressen zu bewirken.
  2. Verfahren nach Anspruch 1, wobei die erste Speicherzugriffsanweisung eine Schreibeanweisung ist, welche einem Speichern von Daten innerhalb des Speichers entspricht, und wobei weiterhin die Daten, welche die erste Speicherzugriffsanweisung vervollständigen, Schreibdaten sind.
  3. Verfahren nach Anspruch 1, wobei die zweite Speicherzugriffsanweisung eine Leseanweisung ist.
  4. Verfahren nach Anspruch 1, wobei die zweite Speicherzugriffsanweisung eine vollständige Schreibanweisung ist.
  5. Verfahren nach Anspruch 1, wobei der Schritt des Verarbeitens der zweiten Speicherzugriffsanweisung aufweist:

    Feststellen, ob die ersten und zweiten Bereiche von Speicheradressen eine oder mehrere Speicheradressen gemeinsam haben,

    in dem Fall, in welchem die ersten und zweiten Bereiche von Speicheradressen eine oder mehrere Speicheradressen gemeinsam haben, Aufschieben des Schrittes der Verarbeitung der zweiten Speicherzugriffsanweisung bis nach der Durchführung des Schrittes der Verarbeitung der ersten Speicherzugriffsanweisung, und

    in dem Fall, in welchem die ersten und zweiten Bereiche von Speicheradressen keine gemeinsamen Speicheradressen aufweisen, Durchführen des Schrittes der Verarbeitung der zweiten Speicherzugrffsanweisung vor dem Ausführen des Schrittes der Verarbeitung der ersten Speicherzugriffsanweisung.
  6. Verfahren nach Anspruch 1, wobei der Schritt des Speicherns der ersten Speicherzugriffsanweisung in dem Nebenpuffer aufweist:

    Feststellen, daß der Nebenpuffer mit einer oder mehreren anderen nicht vollständigen Speicherzugriffsanweisungen voll ist, und

    Verschieben des Speicherns der ersten Speicherzugriffsanweisung in dem Nebenpuffer, bis eine oder mehrere der unvollständigen Speicherzugriffsanweisungen abgeschlossen und aus dem Nebenpuffer geholt worden ist.
  7. Computerlesbares Medium, welches in Verbindung mit einem Computer nutzbar ist, welcher einen Prozessor und einen Speicher aufweist, wobei das computerlesbare Medium Computeranweisungen enthält, die so ausgestaltet sind, daß sie einen Computer veranlassen, Speicherzugriffsanweisungen zu verarbeiten, indem er die Schritte ausführt:

    Empfangen einer ersten Speicherzugriffsanweisung, welche einem ersten Zugriff auf Daten innerhalb des Speichers in einem ersten Bereich von Speicheradressen entspricht,

    Feststellen, daß die erste Speicherzugrffsanweisung unvollständig ist,

    Speichern der ersten Speicherzugriffsanweisung in einem Nebenpuffer,

    Empfangen einer zweiten Speicherzugriffsanweisung, welche einem zweiten Zugriff auf Daten innerhalb des Speichers in einem zweiten Bereich von Speicheradressen entspricht,

    Verarbeiten der zweiten Speicherzugriffsanweisung, um den zweiten Zugriff von Daten innerhalb des Speichers in dem zweiten Bereich von Speicheradressen zu bewirken,

    Empfangen von Daten, welche die erste Speicherzugrffsanweisung vervollständigen,

    Kombinieren der empfangenen Daten mit der ersten Speicherzugrffsanweisung, um eine vollständige Speicherzugriffsanweisung zu bilden, und

    Verarbeiten der vollständigen Speicherzugriffsanweisung, um den ersten Zugriff auf Daten innerhalb des Speichers in einem ersten Bereich von Speicheradressen zu bewirken.
  8. Computerlesbares Medium nach Anspruch 7, wobei die erste Speicherzugrffsanweisung eine Schreibanweisung ist, welche dem Speichern von Daten innerhalb des Speichers entspricht, und wobei weiterhin die Daten, welche die erste Speicherzugrffsanweisung vervollständigen, Schreibdaten sind.
  9. Computerlesbares Medium nach Anspruch 7, wobei die zweite Speicherzugriffsanweisung eine Leseanweisung ist.
  10. Computerlesbares Medium nach Anspruch 7, wobei die zweite Speicherzugriffsanweisung eine vollständige bzw. abgeschlossene Schreibanweisung ist.
  11. Computerlesbares Medium nach Anspruch 7, wobei der Schritt des Verarbeitens der zweiten Speicherzugriffsanweisung aufweist:

    Bestimmen, ob die ersten und zweiten Bereiche von Speicheradressen eine oder mehrere Speicheradressen gemeinsam verwenden,

    in dem Fall, in welchem die ersten und zweiten Bereiche von Speicheradressen eine oder mehrere Speicheradressen gemeinsam verwenden, Verschieben des Schrittes der Verarbeitung der zweiten Speicherzugriffsanweisung bis nach der Durchführung des Schrittes der Verarbeitung der ersten Speicherzugriffsanweisung, und

    in dem Fall, in welchem die ersten und zweiten Bereiche von Speicheradressen keine gemeinsamen Speicheradressen aufweisen, Durchführen des Schrittes der Verarbeitung der zweiten Speicherzugriffsanweisung vor der Ausführung des Schrittes der Verarbeitung der ersten Speicherzugriffsanweisung.
  12. Computerlesbares Medium nach Anspruch 7, wobei der Schritt des Speicherns der ersten Speicherzugriffsanweisung in dem Nebenpuffer aufweist:

    Feststellen, daß der Nebenpuffer mit einer oder mehreren unvollständigen Speicherzugriffsanweisungen voll ist, und

    Verschieben des Speicherns der ersten Speicherzugriffsanweisung in dem Nebenpuffer, bis eine oder mehrere der unvollständigen Speicherzugriffsanweisungen abgeschlossen und aus dem Nebenpuffer geholt worden ist.
  13. Computersystem, welches aufweist:

    einen Prozessor,

    einen Speicher, und

    eine Speichersteuerung, die zwischen den Prozessor und den Speicher geschaltet ist und die Speicherzugriffsanweisungen verarbeitet, indem sie die Schritte ausführt:

    Empfangen einer ersten Speicherzugriffsanweisung von dem Prozessor, welche einem ersten Zugriff auf Daten innerhalb des Speichers in einem ersten Bereich von Speicheradressen entspricht,

    Feststellen, daß die erste Speicherzugriffsanweisung unvollständig ist,

    Speichern der ersten Speicherzugriffsanweisung in einem Nebenpuffer,

    Empfangen einer zweiten Speicherzugrffsanweisung von dem Prozessor, welche einem zweiten Zugriff auf Daten innerhalb des Speichers in einem zweiten Bereich von Speicheradressen entspricht,

    Verarbeiten der zweiten Speicherzugriffsanweisung, um den zweiten Zugriff auf Daten innerhalb des Speichers in dem zweiten Bereich von Speicheradressen zu bewirken,

    Empfangen von Daten, welche die erste Speicherzugriffsanweisung vervollständigen,

    Kombinieren der empfangenen Daten mit der ersten Speicherzugriffsanweisung, um eine vollständige Speicherzugriffsanweisung zu bilden, und

    Verarbeiten der vollständigen Speicherzugriffsanweisung, um den ersten Zugriff auf Daten innerhalb des Speichers in einem ersten Bereich von Speicheradressen zu bewirken.
  14. Computer nach Anspruch 13, wobei die erste Speicherzugriffsanweisung eine Schreibanweisung ist, welche dem Speichern von Daten innerhalb des Speichers entspricht, und wobei weiterhin die Daten, welche die erste Speicherzugriffsanweisung abschließen, Schreibdaten sind.
  15. Computersystem nach Anspruch 13, wobei die zweite Speicherzugriffsanweisung eine Leseanweisung ist.
  16. Computersystem nach Anspruch 13, wobei die zweite Speicherzugriffsanweisung eine vollständige Schreibanweisung ist.
  17. Computersystem nach Anspruch 13, wobei der Schritt des Verarbeitens der zweiten Speicherzugriffsanweisung aufweist:

    Feststellen, ob die ersten und zweiten Bereiche von Speicheradressen eine oder mehrere Speicheradressen gemeinsam haben,

    in dem Fall, in welchem die ersten und zweiten Bereiche von Speicheradressen eine oder mehrere Adressen gemeinsam haben, Verschieben des Schrittes der Verarbeitung der zweiten Speicherzugriffsanweisung bis nach der Ausführung des Schrittes der Verarbeitung der ersten Speicherzugriffsanweisung, und

    in dem Fall, in welchem die ersten und zweiten Bereiche von Speicheradressen keine Speicheradressen gemeinsam haben, Ausführen des Schrittes der Verarbeitung der zweiten Speicherzugriffsanweisung vor der Ausführung des Schrittes der Verarbeitung der ersten Speicherzugriffsanweisung.
  18. Computersystem nach Anspruch 13, wobei der Schritt des Speicherns der ersten Speicherzugriffsanweisung in dem Nebenpuffer aufweist:

    Feststellen, daß der Nebenpuffer mit einer oder mehreren anderen unvollständigen Speicherzugriffsanweisungen voll ist, und

    Verschieben des Speicherns der ersten Speicherzugriffsanweisung in dem Nebenpuffer, bis eine oder mehrere unvollständige Speicherzugriffsanweisungen abgeschlossen und aus dem Nebenpuffer geholt worden sind.
Es folgen 4 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com