DE69418852T2 - Kohärenzindexerzeugung für Ein-/Ausgabeanschluss - Google Patents
Kohärenzindexerzeugung für Ein-/AusgabeanschlussInfo
- Publication number
- DE69418852T2 DE69418852T2 DE69418852T DE69418852T DE69418852T2 DE 69418852 T2 DE69418852 T2 DE 69418852T2 DE 69418852 T DE69418852 T DE 69418852T DE 69418852 T DE69418852 T DE 69418852T DE 69418852 T2 DE69418852 T2 DE 69418852T2
- Authority
- DE
- Germany
- Prior art keywords
- register
- index
- processor
- coherence
- space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000013519 translation Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 5
- 238000012546 transfer Methods 0.000 claims description 5
- 230000014616 translation Effects 0.000 description 28
- 230000001427 coherent effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0835—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Die vorliegende Erfindung betrifft die Erzeugung eines Kohärenzindex für die Verwendung durch einen Eingabe/Ausgabe- Adapter.
- Die meisten modernen Computersysteme umfassen eine zentrale Verarbeitungseinheit (CPU; CPU = Central Processing Unit) und einen Hauptspeicher. Die Geschwindigkeit, mit der die CPU Befehle und Operanden decodieren und ausführen kann, hängt von der Rate ab, mit der die Befehle und Operanden von dem Hauptspeicher zu der CPU übertragen werden können. Bei einem Versuch die Zeit zu reduzieren, die durch die CPU erforderlich ist, um die Befehle und Operanden von dem Hauptspeicher zu erhalten, umfassen viele Computersysteme einen Cachespeicher zwischen der CPU und dem Hauptspeicher.
- Ein Cachespeicher ist ein kleiner Hochgeschwindigkeitspufferspeicher, der verwendet wird, um vorübergehend jene Abschnitte der Inhalte des Hauptspeichers zu halten, von denen angenommen wird, daß dieselben in der nahen Zukunft durch die CPU verwendet werden. Der Hauptzweck eines Cachespeichers besteht darin, die Zeit zu verkürzen, die notwendig ist, um Speicherzugriffe, entweder für das Daten- oder Befehls-Holen, durchzuführen. Auf die Informationen, die in dem Cachespeicher positioniert sind, kann mit wesentlich weniger Zeitaufwand zugegriffen werden als auf Informationen, die in dem Hauptspeicher positioniert sind. Folglich verbraucht eine CPU mit einem Cachespeicher wesentlich weniger Zeit beim Warten auf Befehle und Operanden, die geholt und/oder gespeichert werden müssen.
- Ein Cachespeicher besteht aus vielen Blöcken von einem oder mehreren Datenwörtern. Jedem Block ist ein Adreßetikett zugeordnet, das einzigartig identifiziert, von welchem Block des Hauptspeichers derselbe eine Kopie ist. Jedesmal wenn der Prozessor einen Speicherbezug durchführt, wird ein Adreßetikettvergleich durchgeführt, um festzustellen, ob eine Kopie der angeforderten Daten in dem Cachespeicher liegt. Wenn sich der gewünschte Speicherblock nicht in dem Cachespeicher befindet, wird der Block aus dem Hauptspeicher wiedergewonnen, in dem Cachespeicher gespeichert und zu dem Prozessor zugeführt.
- Zusätzlich zu dem Verwenden eines Cachespeichers, um Daten von dem Hauptspeicher wiederzugewinnen, kann die CPU ferner Daten in den Cachespeicher, anstatt direkt in den Hauptspeicher, schreiben. Wenn der Prozessor Daten in den Speicher schreiben möchte, führt der Cachespeicher einen Adreßetikettvergleich aus, um festzustellen, ob der Datenblock, in den die Daten geschrieben werden sollen, in dem Cachespeicher liegt. Wenn der Datenblock in dem Cachespeicher existiert, werden die Daten in den Datenblock in dem Cachespeicher geschrieben. Bei vielen Systemen wird dann ein "unsauberes Datenbit" für den Datenblock eingestellt. Das unsaubere Bit zeigt an, daß die Daten in dem Datenblock unsauber sind (d. h. sie wurden modifiziert), und folglich müssen die modifizierten Daten in den Hauptspeicher geschrieben werden, bevor der Datenblock aus dem Cachespeicher gelöscht wird. Wenn der Datenblock, in den Daten geschrieben werden sollen, nicht in dem Cachespeicher existiert, muß der Datenblock in den Cachespeicher geholt werden, oder die Daten müssen direkt in den Hauptspeicher geschrieben werden. Ein Datenblock, der überschrieben oder aus dem Cachespeicher kopiert wird, wenn neue Daten in dem Cachespeicher plaziert werden, wird als ein Opferblock oder als eine Opferzeile bezeichnet.
- Wenn ein E/A-Adapter auf den Hauptspeicher in einem System zugreift, in dem ein Prozessor oder mehrere Prozessoren einen Cachespeicher verwenden, ist es notwendig, Schritte vorzunehmen, um die Integrität der Daten, auf die in dem Speicher zugegriffen wird, sicherzustellen. Wenn der E/A- Adapter beispielsweise auf Daten von dem Speicher zugreift (schreibt oder liest), ist es wichtig zu bestimmen, ob eine aktualisierte Version der Daten in dem Cachespeicher eines Prozessors in dem System liegt. Wenn eine aktualisierte Version der Daten existiert, muß etwas getan werden, um sicherzustellen, daß der E/A-Adapter auf die aktualisierte Version der Daten zugreift. Eine Operation, die sicherstellt, daß die aktualisierte Version der Daten in einem Speicherbezug verwendet wird, wird hierin als eine Kohärenzoperation bezeichnet.
- Es gibt viele Faktoren, die berücksichtigt werden müssen, um sicherzustellen, daß eine Kohärenzoperation erfolgreich ist. Beispielsweise wird bei vielen Systemen auf Daten, die in einem Cachespeicher gespeichert sind, allgemein unter Verwendung eines Index Bezug genommen, der aus einer virtuellen Adresse abgeleitet ist. Ferner wird oftmals ein Hashing- Algorithmus verwendet, um Daten innerhalb des Cachespeichers zu verteilen. Zugriffe von dem Systemspeicher werden jedoch unter Verwendung einer realen Adresse durchgeführt.
- Verschiedene Schemata wurden vorgeschlagen, um die Kohärenz von Daten sicherzustellen, auf die durch einen E/A-Adapter von dem Systemspeicher zugegriffen wird. Beispielsweise besteht eine Lösung darin, daß Software explizit den Cachespeicher für jeden Prozessor in dem System immer dann räumt, wenn auf Daten von dem Hauptspeicher zugegriffen wird. Das Räumen des Cachespeichers wird sicherstellen, daß eine aktualisierte Version der Daten zu dem Hauptspeicher zurückgegeben wird, bevor auf die Daten durch den E/A-Adapter zugegriffen wird. Dieses Schema kann jedoch erheblich den Gesamtaufwand eines Speicherzugriffs durch den E/A-Adapter erhöhen.
- Bei einem weiteren Schema umfaßt jeder Systemprozessor eine "BLT"-Tabelle, die reale Adressen in virtuelle Adressen übersetzt. Wenn der E/A-Adapter auf den Systemspeicher zugreift, übersetzt jeder Systemprozessor die reale Adresse in eine virtuelle Adresse und greift auf den Cachespeicher desselben zu, um zu bestimmen, ob sich die Daten, auf die zugegriffen wird, in dem Cachespeicher befinden. Wenn dies der Fall ist, werden die Daten, auf die zugegriffen wird, zu dem Speicher geräumt, bevor der E/A-Adapter den Zugriff abschließt. Alternativ kann der E/A-Adapter auf die Daten direkt von dem Cachespeicher zugreifen.
- Bei einem weiteren Schema leitet der E/A-Adapter zu jedem Prozessor einen Kohärenzindex weiter, wenn der E/A-Adapter auf den Speicher zugreift. Der Kohärenzindex wird durch jeden Prozessor verwendet, um auf den Cachespeicher zuzugreifen, der dem Prozessor zugeordnet ist, um zu bestimmen, ob sich die Daten, auf die zugegriffen wird, in dem Cachespeicher befinden. Wenn dies der Fall ist, werden die Daten, auf die zugegriffen wird, in den Speicher geräumt, bevor der E/A-Adapter den Zugriff abschließt. Alternativ kann der E/A-Adapter auf die Daten direkt von dem Cachespeicher zugreifen.
- Kohärenzindizes für Speicherzugriffe können in einer Übersetzungstabelle innerhalb des E/A-Adapters gespeichert werden. Ein Prozessor, der einen E/A-Zugriff einleitet, kann die geeigneten Indizes innerhalb der Übersetzungstabelle innerhalb des E/A-Adapters plazieren. Bei einem Computersystem, bei dem auf einen Prozessorcache unter Verwendung eines Abschnitts der virtuellen Adresse zugegriffen wird, kann das Plazieren der ordnungsgemäßen Indizes innerhalb der Übersetzungstabelle innerhalb des E/A-Adapters eine Sache des Extrahierens des Cacheindex aus einer virtuellen Adresse und des Durchführens einer Datenübertragung des Index zu der Übersetzungstabelle innerhalb des E/A-Adapters sein. Dies ist beispielsweise durch das Scatter/Gather-Mapping-Schema dargestellt, das auf der Seite 452 des Dokuments PROCEEDINGS OF THE SPRING COMPUTER SOCIETY INTERNATIONAL CONFERENCE (COMPCON), SAN FRANCISCO, 22.-26. Februar 1993, Konferenz-Nr. 38, 22. Februar 1993, IEEE, S. 449-455, DUTTON T. A., offenbart ist. Bei einem Computersystem, bei dem je doch ein Cacheindex durch Hashing der virtuellen Adresse abgeleitet wird, kann das Erhalten eines Kohärenzindex mehrere zusätzliche Operationen erfordern, um die Hashing- Operation durchzuführen. Dies kann erheblich den Gesamtaufwand eines Speicherzugriffs durch den E/A-Adapter erhöhen.
- Gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung, wie es in dem Verfahren gemäß Anspruch 1 und der Vorrichtung gemäß Anspruch 6 definiert ist, umfaßt ein Computersystem eine Verbindungseinrichtung, einen Hauptspeicher, einen Eingabe/Ausgabe- (E/A-) Adapter und einen Prozessor. Bei dem bevorzugten Ausführungsbeispiel ist die Verbindungseinrichtung ein Bus. Alternativ kann die Verbindungseinrichtung ein Ringnetz, Kreuzschienenschalter oder eine beliebige Speicherverbindung sein, die eine kohärente Eingabe/Ausgabe verwendet.
- Der Hauptspeicher, der E/A-Adapter und der Prozessor sind mit dem Bus verbunden. Der E/A-Adapter umfaßt eine Übersetzungstabelle. Die Übersetzungstabelle bildet die E/A-Seitennummern auf Speicheradreßseitennummern ab. Die Übersetzungstabelle umfaßt Kohärenzindizes. Der Prozessor umfaßt einen Cachespeicher und eine Befehlsausführungseinrichtung. Die Befehlsausführungseinrichtung erzeugt Kohärenzindizes, die in der Übersetzungstabelle gespeichert werden sollen. Die Befehlsausführungseinrichtung führt mittels Hardware eine Hash-Operation durch, um die Kohärenzindizes zu erzeugen.
- Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung führt die Befehlsausführungseinrichtung einen Befehl Kohärenzindex Laden aus. Der Befehl Kohärenzindex Laden umfaßt als Parameter ein Basisregister, ein Indexregister, eine Raumregisterauswahl und ein Zielregister. Die Befehlsausführung erzeugt ansprechend auf den Befehl Ko härenzindex Laden und die begleitenden Parameter eine virtuelle Adresse. Die Befehlsausführung führt dann eine Hash- Operation an einem Teilsatz von Bits von der virtuellen Adresse durch, um einen Kohärenzindex zu erzeugen.
- Bei dem bevorzugten Ausführungsbeispiel ist die virtuelle Adresse unter Verwendung einer Raumidentifikation aus Informationen gebildet, die in dem Basisregister und der Raumregisterauswahl gespeichert sind. Die Bildung der virtuellen Adresse verwendet ferner einen Versatz von Informationen, die in dem Basisregister gespeichert sind, und von Informationen, die in dem Indexregister gespeichert sind. Die virtuelle Adresse ist die Verkettung der Raumidentifikation und des Versatzes.
- Bei dem bevorzugten Ausführungsbeispiel ist das Basisregister ein erstes allgemeines Register, das aktuell einen Basiswert speichert. Das Indexregister ist ein zweites allgemeines Register, das aktuell einen Indexwert speichert. Das Zielregister ist ein drittes allgemeines Register, das den Kohärenzindex empfangen wird.
- Sobald der Kohärenzindex erzeugt ist, wird derselbe in der Übersetzungstabelle innerhalb des E/A-Adapters gespeichert. Wenn eine Datenübertragung durchgeführt wird, leitet der E/A-Adapter einen geeigneten Kohärenzindex zu dem Prozessor weiter. Wenn der Prozessor den Kohärenzindex von dem E/A- Adapter empfängt, verwendet der Prozessor den Kohärenzindex, um auf Daten innerhalb des Cachespeichers zuzugreifen.
- Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung ermöglicht die Erzeugung eines Kohärenzindex für eine Übersetzungstabelle innerhalb eines Eingabe/Ausgabe- (E/A-) Adapters mit einem minimalen Gesamtaufwand. Die Implementation der vorliegenden Erfindung erfordert eine minimale Modifikation der existierenden Hardware, wenn die Hardware, die verwendet wird, um Cacheindizes zu erzeugen, ferner verwendet wird, um den Kohärenzindex ansprechend auf den Befehl Kohärenzindex Laden zu erzeugen.
- Fig. 1 zeigt ein vereinfachtes Blockdiagramm eines Computersystems mit einem Eingabe/Ausgabe- (E/A-) Adapter gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
- Fig. 2 zeigt eine Implementation einer Übersetzungstabelle innerhalb des E/A-Adapters, der in Fig. 1 gezeigt ist, gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
- Fig. 3 stellt eine Erzeugung eines Cache/Kohärenz-Index für das Computersystem dar, das in Fig. 1 gezeigt ist, gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
- Fig. 4 zeigt das Format für einen vereinfachten Befehl, um einen Kohärenzindex zu erzeugen, und eine Hardwareimplementation der Operation, die durch den Befehl dargestellt ist, gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
- Fig. 5 zeigt ein weiteres Ausführungsbeispiel des Formats für einen Befehl, um einen Kohärenzindex gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zu erzeugen.
- Fig. 6 stellt eine Erzeugung einer virtuellen Adresse gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung dar.
- Fig. 1 zeigt ein vereinfachtes Blockdiagramm eines Computersystems. Ein Prozessor 10, ein Prozessor 11 und ein Speicher 12 sind mit einem Speicherbus 9 verbunden gezeigt. Der Prozessor 10 verwendet einen Datencachespeicher 17. Der Prozessor 11 verwendet einen Datencachespeicher 18. Ferner ist mit dem Speicherbus 9 ein Eingabe/Ausgabe- (E/A-) Adapter 13 verbunden. Der E/A-Adapter 13 ist mit einem E/A-Bus 14 verbunden. Ferner ist mit dem E/A-Bus 14 eine E/A-Vorrichtung 15 und eine E/A-Vorrichtung 16 verbunden. Eine Übersetzungstabelle 19 wird verwendet, um Adressen, die für den E/A-Bus 14 verwendet werden, in Adressen umzuwandeln, die durch den Speicher 12 verwendet werden.
- Fig. 2 zeigt eine Implementation der Übersetzungstabelle 19 gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung. Die Übersetzungstabelle 19 wird verwendet, um eine E/A-Busadresse 21 in eine Speicheradresse 23 zu übersetzen. Die Übersetzungstabelle 19 ist als ein direkt tabellierter Cachespeicher von E/A-Übersetzungen implementiert. Alternativ könnte die Übersetzungstabelle 19 als ein vollständig assoziativer Cachespeicher, ein satzassoziativer Cachespeicher oder als eine vollständig besetzte Tabelle von E/A-Seitenübersetzungen implementiert sein. Jede der Implementationen ist für Fachleute offensichtlich.
- Bei dem bevorzugten Ausführungsbeispiel wird während einer Übersetzung eine E/A-Seite verwendet, um auf eine entsprechende Speicherseite innerhalb der Übersetzungstabelle 19 zuzugreifen. Bei dem Ausführungsbeispiel, das in Fig. 2 gezeigt ist, wird ein erster Abschnitt von E/A-Seitenbits als ein Index in die Übersetzungstabelle 19 verwendet, und ein zweiter Abschnitt der E/A-Seitenbits wird durch einen Komparator 25 verwendet, um zu bestimmen, ob sich die aktuell gesuchte Übersetzung innerhalb der Übersetzungstabelle 19 befindet. Der E/A-Adressenversatz ist der gleiche wie der Speicheradressenversatz. Beispielsweise verwendet der E/A- Bus 14 bei dem bevorzugten Ausführungsbeispiel 32-Bit- Adressen, wobei jede Adresse eine 20-Bit-E/A-Seitennummer und einen 12-Bit-Versatz aufweist. Der Speicherbus 9 verwendet 40-Bit-Adressen, wobei jede Adresse eine 28-Bit-Speicherseitennummer und einen 12-Bit-Versatz aufweist.
- Bei dem bevorzugten Ausführungsbeispiel umfaßt die Übersetzungstabelle 19 für jede Speicherseite ferner einen Kohärenzindex. Der Kohärenzindex ist ein Abschnitt, der aus einer virtuellen Adresse abgeleitet ist, und der verwendet wird, um den Cachespeicher 17 innerhalb des Prozessors 10 und den Cachespeicher 18 innerhalb des Prozessors 11 zu indizieren. Wenn der Kohärenzindex als Teil einer Speicherzugriffstransaktion weitergeleitet wird, ermöglicht derselbe den Prozesssoren 10 und 11 ohne weiteres Informationen in dem Cachespeicher 17 bzw. 18 für mögliche Kohärenzkonflikte nachzuschauen.
- Die Betriebssystemsoftware, die in dem Prozessor 10 oder Prozessor 11 läuft, lädt Adressenübersetzungsinformationen in die Übersetzungstabelle 19 innerhalb des E/A-Adapters 13. Diese Informationen umfassen den Kohärenzindex. Beispielsweise zeigt Fig. 3 eine virtuelle Adresse 31. Die virtuelle Adresse 31 umfaßt einen virtuellen Abschnitt und einen physischen Abschnitt. Bei einem System, das nicht durch Hashing verarbeitete virtuelle Cacheindizes verwendet, wird ein Kohärenzindex 32 unter Verwendung eines Teilsatzes der Bits erzeugt, die den virtuellen Abschnitt der virtuellen Adresse 31 bilden. Ein Cacheindex 38 wird unter Verwendung eines Teilsatzes der Bits, die den virtuellen Abschnitt der virtuellen Adresse 31 bilden, zusätzlich zu einem Teilsatz der Bits des physischen Abschnitts erzeugt. Bei einem derartigen System ist der virtuelle Abschnitt eines Cacheindex der Kohärenzindex, den das Betriebssystem direkt aus der virtuellen Adresse extrahieren und in der Übersetzungstabelle 19 innerhalb des E/A-Adapters 13 speichern kann.
- Fig. 3 zeigt ferner eine virtuelle Adresse 33. Die virtuelle Adresse 33 umfaßt einen Raumidentifikationsabschnitt, einen virtuellen Seitenabschnitt und einen physischen Abschnitt. Bei diesem System wird ein Cacheindex 39 durch Hashing eines Teilsatzes der Bits, die die Raumidentifikation der virtuellen Adresse 33 bilden, mit einem Teilsatz der Bits, die den virtuellen Abschnitt der virtuellen Adresse 33 bilden, unter Verwendung der Hashing-Hardware 36 erzeugt, der mit einem Teilsatz des physischen Abschnitts der virtuellen Adresse verkettet ist. Ein Kohärenzindex 37 wird auf die gleiche Art und Weise erzeugt, wie der virtuelle Abschnitt des Cacheindex 39, wie es in Fig. 3 gezeigt ist.
- In der folgenden Beschreibung sind Bits in einem "Big-Endian"-Format numeriert, wobei sich das Bit 0 auf der linken Seite oder an dem höchstwertigsten Ende und das Bit mit der hohen Nummer auf der rechten Seite oder an dem niedrigstwertigsten Ende befindet.
- Beispielsweise ist bei dem bevorzugten Ausführungsbeispiel die virtuelle Adresse 33 eine 48-Bit-Adresse. Die Bits 0 bis 15 (Raum[16, 17, ..., 31]) spezifizieren die Raumidentifikation. Die Bits 16 bis 35 (Virt[0, 1, ..., 19]) spezifizieren die virtuelle Seitennummer. Die Bits 36 bis 47 (Virt[20, 21, 31]) spezifizieren den physischen Abschnitt der Adresse. Die Cacheadreßbits (Cach[12, 13, ..., 26]) werden verwendet, um auf den Cachespeicher 17 zuzugreifen, und werden, wie in Tabelle 1 im folgenden dargestellt, abgeleitet: Tabelle 1
- Wie es aus Tabelle 1 im vorhergehenden sichtbar ist, erfordert das Hashing, das bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung verwendet wird, eine logische "Exklusiv-Oder"- (XOR-) Funktion, die durchgeführt werden muß, um acht der Cachebits (Cach[12 ... 19]) zu erzeugen. Die Leistung des Hashings in Software erfordert mehrere Softwarebefehle, um den Cacheindex zu erzeugen. Ferner können unterschiedliche Generationen von Prozessoren unterschiedliche Hashes verwenden, um auf ihren Cachespeicher zuzugreifen. Folglich ist es für die Software notwendig, eine unterschiedliche Berechnung abhängig von dem Prozessortyp oder der Prozessorrevision durchzuführen.
- Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung umfassen jedoch der Prozessor 10 und der Prozessor 11 jeweils innerhalb ihres Befehlssatzes einen Prozessorbefehl, um die virtuelle kohärente E/A zu unterstützen. Fig. 4 zeigt einen vereinfachten Entwurf für einen derartigen Prozessorbefehl. Der Befehl umfaßt einen Operationscode, einen Bezug auf ein erstes Quellregister (R1), das eine Raumidentifikation umfaßt, einen Bezug auf ein zweites Quellregister (R2), das einen virtuellen Versatz (virtuelle Seite plus physischen Abschnitt) umfaßt, und ein Zielregister (Z), in das der Zielwert (Kohärenzindex) plaziert wird. Wie es Fachleuten offensichtlich sein wird, kann bei bestimmten Prozessorarchitekturen die virtuelle Adresse unter Verwendung eines einzigen Registers spezifiziert werden.
- Sobald der Kohärenzindex erzeugt ist, kann derselbe innerhalb der Übersetzungstabelle 19 innerhalb des E/A-Adapters 13 gespeichert werden. Bei dem bevorzugten Ausführungsbeispiel verwenden der Prozessor 10 und der Prozessor 11, wenn der Befehl ausgeführt wird, jeweils Hardware, um die Kohärenzindizes zu erzeugen. Beispielsweise verwendet der Prozessor 10 Hardware 30, um Kohärenzindizes zu erzeugen. Hardware 36 wird ferner durch den Prozessor 10 verwendet, um Cacheindizes für einen Zugriff in den Cachespeicher 17 zu erzeugen. Die bevorzugte Implementation der Operation, um einen Kohärenzindex zu erzeugen, verwendet daher die Funktion, die in Tabelle 2 im folgenden dargestellt ist. Bei der Implementation unter Verwendung der Funktion, die in Tabelle 2 dargestellt ist, entsprechen die acht Bits von definierten Resultaten der Berechnung, die verwendet wird, um den durch Hashing verarbeiteten Abschnitt des Cacheindex zu erzeugen. Tabelle 2
- Fig. 5 zeigt ein weiteres Ausführungsbeispiel des Formats für einen Befehl, um einen Kohärenzindex gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung zu erzeugen. Der Assemblersprachenaufruf für den Befehl Kohärenzindex Laden 50, der in Fig. 5 gezeigt ist, ist LCI x(s,b),t. Der Befehlsbezug "LCI" bestimmt die Werte, die in dem Opcode-Feld 51, dem Opcode-Feld 55, dem Opcode-Feld 56 gespeichert werden sollen. Bei dem bevorzugten Ausführungsbeispiel wird der hexadezimale Wert 01 in dem 6- Bit-Opcode-Feld 51 gespeichert, der hexadezimale Wert 4C wird in dem 8-Bit-Opcode-Feld 55 gespeichert, und der hexadezimale Wert 0 wird in dem 1-Bit-Opcode-Feld 56 gespeichert. Zusätzlich wird das allgemeine Register [x], das einen Indexwert speichert, in einem 5-Bit-Parameterfeld 53 spezifiziert, das allgemeine Register [b], das einen Basiswert speichert, ist in einem 5-Bit-Parameterfeld 52 spezifiziert, das allgemeine Register [t], das den Zielwert empfängt, ist in einem 5-Bit-Parameterfeld 57 definiert, und ein Raumregisterauswahlwert [s] ist in einem 2-Bit-Parameterfeld 54 spezifiziert. Ein Raumregisterauswahlfeld 54 wird bei der Erzeugung einer 48-Bit-Adresse verwendet.
- Die Raumidentifikation für die virtuelle Adresse wird als eine Funktion des Basiswerts, der in dem allgemeinen Register [b] gespeichert ist, und dem Raumregisterauswahlwert [s] erzeugt. Der Versatz wird als eine Funktion des Basiswerts, der in dem allgemeinen Register [b] gespeichert ist, und des Indexwerts, der in dem allgemeinen Register [x] gespeichert ist, erzeugt. Aus dem Raum und dem Versatz wird der Kohärenzindex berechnet und als der Zielwert in dem allgemeinen Register [t] plaziert. Siehe beispielsweise Tabelle 2, in der der Zielwert (Zielbits[0 ... 31]) erzeugt ist.
- Fig. 6 stellt dar, wie eine virtuelle 48-Bit-Adresse 60 aus dem Befehl Kohärenzindex Laden 50 gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung erzeugt wird. Die virtuelle 48-Bit-Adresse 60 weist einen 16-Bit-Raumidentifizierer 61 und einen 32-Bit-Versatz 62 auf. Der Basiswert in dem 5-Bit-Parameterfeld 52 wird als ein Index in die allgemeinen Register 70 verwendet. Die allgemeinen Register 70 weisen 32 Register mit jeweils 32 Bits auf. Das allgemeine Register, das durch den Basiswert in dem 5-Bit-Parameterfeld 52 ausgewählt wird, liefert die Basisregisterdaten 68. Der Indexwert, der in dem 5-Bit-Parameterfeld 53 spezifiziert ist, wird ebenfalls als ein Index in die allgemeinen Register 70 verwendet. Das allgemeine Register, das durch den Indexwert ausgewählt ist, der in dem 5-Bit-Parameterfeld 53 spezifiziert ist, liefert Indexregisterdaten 69. Ein Addierer 64 addiert die Basisregisterdaten 68 und die Indexregisterdaten 69, um einen Versatz 62 zu erzeugen.
- Der Wert des Raumidentifizierers 61 wird durch eines von acht Raumregistern 63 geliefert. Jedes Raumregister besteht aus 16 Bits. Für den Befehl Kohärenzindex Laden 50 wird das Raumregister wie folgt ausgewählt. Wenn der Raumregisterauswahlwert in dem 2-Bit-Parameterfeld 54 nicht gleich Null ist, wie es durch einen Komparator 66 bestimmt wird, verwendet eine Auswahlvorrichtung 67 den Raumregisterauswahlwert in dem 2-Bit-Parameterfeld 54 als den Index, um das Raumregister aus den Raumregistern 63 auszuwählen, um den Wert des Raumidentifizierers 61 zu liefern. Wenn der Raumregisterauswahlwert in dem 2-Bit-Parameterfeld 54 gleich Null ist, wie es durch den Komparator 66 bestimmt wird, verwendet eine Auswahlvorrichtung 67 die zwei höchstwertigsten Bits der Basisregisterdaten 68, zu denen 4 hinzuaddiert ist, als den Index, um das Raumregister aus den Raumregistern 63 auszuwählen, um den Wert des Raumidentifizierers 61 zu liefern.
- Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung erleichtert die Verwendung des Kohärenzindex bei den Datenübertragungen die Notwendigkeit der Software, Daten aus dem Datencachespeicher 17 oder dem Datencachespeicher 18 zu räumen oder zu löschen, wenn die Daten mit dem E/A-Adapter 13 zusammen verwendet werden. Für die E/A-Ausgabe (z. B. Übertragungen von dem Speicher 12 zu einer E/A-Vorrichtung durch den E/A-Adapter 13) führt der E/A-Adapter 13 kohärente Leseoperationen durch, die die Daten von dem Speicher oder einem Datencache des Prozessors abhängig davon lesen werden, wo die aktuellste Datenkopie positioniert ist. Für die E/A- Eingabe führt der E/A-Adapter 13 kohärente Schreiboperatio nen durch, die die Daten zu dem Speicher schreiben und ferner Anpassungszeilen in den Cachespeicher 17 innerhalb des Prozessor 10 oder in den Cachespeicher 18 innerhalb des Prozessors 11 aktualisieren oder ungültig machen. Für weitere Informationen bezüglich kohärenter Lese- und Schreib-Operationen siehe David A. Patterson, John L. Hennessy, Computer Architecture A Quantitative Approach, Morgan Kauffman Publishers, Inc., San Mateo, Kalifornien, 1990, Kapitel 8, S. 466-474.
- Die vorhergehende Erörterung offenbart und beschreibt lediglich exemplarische Verfahren und Ausführungsbeispiele der vorliegenden Erfindung. Wie es für Fachleute offensichtlich sein wird, kann die Erfindung in anderen spezifischen Formen ausgeführt sein, ohne von dem Schutzbereich der Erfindung abzuweichen, der in den folgenden Ansprüchen dargelegt ist.
Claims (10)
1. Ein Verfahren in einem Computersystem, mit folgenden
Schritten:
(a) Erzeugen eines Kohärenzindex (37) durch einen
Prozessor (10, 11) mit folgendem Teilschritt:
(a.1) ansprechend auf einen Befehl Kohärenzindex
Laden (50), Durchführen einer
Hash-Operation in Hardware (36), um den
Kohärenzindex (37) zu erzeugen;
(b) Speichern des Kohärenzindex (37) in einer
Übersetzungstabelle (19) innerhalb eines
Eingabe/Ausgabe- (E/A-) Adapters (13);
(c) Weiterleiten des Kohärenzindex (37) von dem E/A-
Adapter (13) zu dem Prozessor (10, 11) beim
Durchführen einer Datenübertragung; und
(d) beim Empfangen des Kohärenzindex (37) durch den
Prozessor (10, 11) von dem E/A-Adapter (13) in
dem Schritt (c), Verwenden des Kohärenzindex (37)
durch den Prozessor (10, 11), um auf Daten
innerhalb eines Cachespeichers (17, 18) innerhalb des
Prozessors (10, 11) zuzugreifen.
2. Ein Verfahren gemäß Anspruch 1, bei dem in dem
Teilschritt (a.1) der Befehl Kohärenzindex Laden (50) eine
Operation Kohärenzindex Laden, einen
Virtueller-Speicher-Versatz und eine Raumidentifikation spezifiziert,
und bei dem der Teilschritt (a.1) das Durchführen
einer Hash-Operation auf einen Teilsatz von Bits aus dem
Virtueller-Speicher-Versatz und auf einen Teilsatz von
Bits aus der Raumidentifikation aufweist, um den
Kohärenzindex (37) zu erzeugen.
3. Ein Verfahren gemäß Anspruch 2, bei dem in dem
Teilschritt (a.1) der Virtueller-Speicher-Versatz in einem
ersten allgemeinen Register (70, 42) gespeichert ist,
die Raumidentifikation in einem zweiten allgemeinen
Register (70, 41) gespeichert ist, und der
Kohärenzindex (37) in einem allgemeinen Zielregister (70, 43)
plaziert ist.
4. Ein Verfahren gemäß Anspruch 3, bei dem in dem
Teilschritt (a.1) das Befehlsregister den
Virtueller-Speicher-Versatz durch Identifizieren des ersten
allgemeinen Registers (70, 42) spezifiziert, die
Raumidentifikation durch Identifizieren des zweiten allgemeinen
Registers (70, 41) spezifiziert, und das allgemeine
Zielregister (70, 43) spezifiziert.
5. Ein Verfahren gemäß Anspruch 1, bei dem in dem
Teilschritt (a.1) der Befehl Kohärenzindex Laden (50) ein
Basisregister, ein Indexregister, eine
Raumregisterauswahl und ein Zielregister spezifiziert, und bei dem
der Teilschritt (a.1) das Erzeugen einer
Raumidentifikation aus Informationen, die in dem Basisregister und
der Raumregisterauswahl gespeichert sind, das Erzeugen
eines Versatzes aus Informationen, die in dem
Basisregister gespeichert sind, und aus Informationen, die
in dem Indexregister gespeichert sind, und das
Durchführen einer Hash-Operation auf einen Teilsatz von
Bits aus dem Versatz und auf einen Teilsatz von Bits
aus der Raumidentifikation aufweist, um den
Kohärenzindex (37) zu erzeugen.
6. Ein Prozessor (10, 11) zum Ausführen des Verfahrens
gemäß Anspruch 1, mit folgenden Merkmalen:
einem Cachespeicher (17, 18); und
einer Befehlsausführungseinrichtung, die mit dem
Cachespeicher (17, 18) gekoppelt ist, zum Erzeugen
eines Kohärenzindex (37), der in einer
Übersetzungstabelle (90) innerhalb eines E/A-Adapters (13)
gespeichert werden soll, wobei die
Befehlsausführungseinrichtung in Hardware (36) eine Hash-Operation
durchführt, um den Kohärenzindex ansprechend auf einen
Befehl Kohärenzindex Laden (50) zu erzeugen.
7. Ein Prozessor (10, 11) gemäß Anspruch 6, bei dem die
Befehlsausführungseinrichtung ansprechend auf den
Befehl Kohärenzindex Laden (50), der eine Operation
Kohärenzindex Laden, einen Virtueller-Speicher-Versatz
und eine Raumidentifikation spezifiziert, eine Hash-
Operation auf einen Teilsatz von Bits aus dem
virtuellen Speicherversatz und auf einen Teilsatz von Bits
aus der Raumidentifikation durchführt, um den
Kohärenzindex (37) zu erzeugen.
8. Ein Prozessor (10, 11) gemäß Anspruch 7, bei dem der
Virtueller-Speicher-Versatz in einem ersten
allgemeinen Register (70, 42) gespeichert ist, die
Raumidentifikation in einem zweiten allgemeinen Register
(70, 41) gespeichert ist, und der Kohärenzindex (37)
in einem allgemeinen Zielregister (70, 43) gespeichert
ist.
9. Ein Prozessor (10, 11) gemäß Anspruch 8, bei dem das
Befehlsregister den Virtueller-Speicher-Versatz durch
Identifizieren des ersten allgemeinen Registers (70,
42) spezifiziert, die Raumidentifikation durch
Identifizieren des zweiten allgemeinen Registers (70, 41)
spezifiziert, und das allgemeine Zielregister (70, 43)
spezifiziert.
10. Ein Prozessor (10, 11) gemäß Anspruch 6, bei dem die
Befehlsausführungseinrichtung ansprechend auf den
Be
fehl Kohärenzindex Laden (50), der ein Basisregister,
ein Indexregister, eine Raumregisterauswahl und ein
Zielregister spezifiziert, eine Raumidentifikation aus
Informationen erzeugt, die in dem Basisregister und
der Raumregisterauswahl gespeichert sind, einen
Versatz aus Informationen, die in dem Basisregister
gespeichert sind, und aus Informationen, die in dem
Indexregister gespeichert sind, erzeugt, die
Hash-Operation auf einen Teilsatz von Bits aus dem Versatz und
auf einen Teilsatz von Bits aus der Raumidentifikation
durchführt, um den Kohärenzindex (37) zu erzeugen.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/201,433 US5515522A (en) | 1994-02-24 | 1994-02-24 | Coherence index generation for use by an input/output adapter located outside of the processor to detect whether the updated version of data resides within the cache |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69418852D1 DE69418852D1 (de) | 1999-07-08 |
DE69418852T2 true DE69418852T2 (de) | 1999-12-30 |
Family
ID=22745800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69418852T Expired - Fee Related DE69418852T2 (de) | 1994-02-24 | 1994-10-12 | Kohärenzindexerzeugung für Ein-/Ausgabeanschluss |
Country Status (4)
Country | Link |
---|---|
US (1) | US5515522A (de) |
EP (1) | EP0669579B1 (de) |
JP (1) | JP3662619B2 (de) |
DE (1) | DE69418852T2 (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5754819A (en) * | 1994-07-28 | 1998-05-19 | Sun Microsystems, Inc. | Low-latency memory indexing method and structure |
US5787476A (en) * | 1995-05-05 | 1998-07-28 | Silicon Graphics, Inc. | System and method for maintaining coherency of virtual-to-physical memory translations in a multiprocessor computer |
US5951657A (en) * | 1996-06-19 | 1999-09-14 | Wisconsin Alumni Research Foundation | Cacheable interface control registers for high speed data transfer |
US5991819A (en) * | 1996-12-03 | 1999-11-23 | Intel Corporation | Dual-ported memory controller which maintains cache coherency using a memory line status table |
GB9704542D0 (en) * | 1997-03-05 | 1997-04-23 | Sgs Thomson Microelectronics | A cache coherency mechanism |
US6253285B1 (en) * | 1998-04-16 | 2001-06-26 | Compaq Computer Corporation | Method and apparatus for minimizing dcache index match aliasing using hashing in synonym/subset processing |
US6253301B1 (en) * | 1998-04-16 | 2001-06-26 | Compaq Computer Corporation | Method and apparatus for a dedicated physically indexed copy of the data cache tag arrays |
EP1030243B1 (de) * | 1999-02-18 | 2002-10-30 | Texas Instruments France | Optimierte Hardware-Reinigungsfunktion für einen Daten-Cache-Speicher mit virtuellen Indizes und Tags |
US7058667B2 (en) * | 2000-12-27 | 2006-06-06 | Microsoft Corporation | Method and system for creating and maintaining version-specific properties in a file |
US6598060B2 (en) * | 2000-12-27 | 2003-07-22 | Microsoft Corporation | Method and system for creating and maintaining version-specific properties in a distributed environment |
US20020083150A1 (en) * | 2000-12-27 | 2002-06-27 | Linden Minnick | Accessing information from memory |
US6895013B1 (en) * | 2001-02-23 | 2005-05-17 | Cisco Technology, Inc. | Coherent access to and update of configuration information in multiprocessor environment |
US7120747B2 (en) * | 2004-03-15 | 2006-10-10 | International Business Machines Corporation | Lower overhead shared cache invalidations |
US7581042B2 (en) * | 2004-12-29 | 2009-08-25 | Intel Corporation | I/O hub resident cache line monitor and device register update |
US9026698B2 (en) * | 2013-03-15 | 2015-05-05 | Intel Corporation | Apparatus, system and method for providing access to a device function |
JP6179355B2 (ja) * | 2013-10-31 | 2017-08-16 | 富士通株式会社 | 情報処理装置、データ転送制御方法及びデータ転送制御プログラム |
US9760492B2 (en) * | 2014-11-21 | 2017-09-12 | Mediatek Singapore Pte. Ltd. | Method for controlling access of cache through using programmable hashing address and related cache controller |
KR102710288B1 (ko) * | 2018-11-07 | 2024-09-25 | 에스케이하이닉스 주식회사 | 비트 카운터를 이용하는 컴퓨팅 시스템 및 방법 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4727482A (en) * | 1983-08-30 | 1988-02-23 | Amdahl Corporation | Apparatus for enhancing searches of data tables |
US4680700A (en) * | 1983-12-07 | 1987-07-14 | International Business Machines Corporation | Virtual memory address translation mechanism with combined hash address table and inverted page table |
JPH083805B2 (ja) * | 1985-06-28 | 1996-01-17 | ヒューレット・パッカード・カンパニー | Tlb制御方法 |
US4885680A (en) * | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
US4797817A (en) * | 1986-12-10 | 1989-01-10 | Ncr Corporation | Single cycle store operations in a virtual memory |
GB2200483B (en) * | 1987-01-22 | 1991-10-16 | Nat Semiconductor Corp | Memory referencing in a high performance microprocessor |
US5029070A (en) * | 1988-08-25 | 1991-07-02 | Edge Computer Corporation | Coherent cache structures and methods |
US5025365A (en) * | 1988-11-14 | 1991-06-18 | Unisys Corporation | Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors |
US5197133A (en) * | 1988-12-19 | 1993-03-23 | Bull Hn Information Systems Inc. | Control store addressing from multiple sources |
US5155843A (en) * | 1990-06-29 | 1992-10-13 | Digital Equipment Corporation | Error transition mode for multi-processor system |
CA2124333A1 (en) * | 1992-02-27 | 1993-09-02 | John A. Saba | Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability |
-
1994
- 1994-02-24 US US08/201,433 patent/US5515522A/en not_active Expired - Lifetime
- 1994-10-12 DE DE69418852T patent/DE69418852T2/de not_active Expired - Fee Related
- 1994-10-12 EP EP94116110A patent/EP0669579B1/de not_active Expired - Lifetime
-
1995
- 1995-02-15 JP JP02636295A patent/JP3662619B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69418852D1 (de) | 1999-07-08 |
EP0669579B1 (de) | 1999-06-02 |
JPH0822415A (ja) | 1996-01-23 |
US5515522A (en) | 1996-05-07 |
JP3662619B2 (ja) | 2005-06-22 |
EP0669579A2 (de) | 1995-08-30 |
EP0669579A3 (de) | 1995-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69418852T2 (de) | Kohärenzindexerzeugung für Ein-/Ausgabeanschluss | |
DE69424767T2 (de) | Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers | |
DE69526996T2 (de) | Ein-/Ausgabeadressübersetzungsmechanismen | |
DE69514165T2 (de) | Mehrstufige Cache-Speicheranordnung | |
DE60003273T2 (de) | Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse | |
DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
DE10262164B4 (de) | Computersystem mit einer hierarchischen Cacheanordnung | |
DE69027253T2 (de) | Multiprozessor-Cachespeichersystem | |
DE69032276T2 (de) | Verfahren und Anordnung zur Verbesserung der Datenspeicherungsgeschwindigkeit eines Computersystems | |
DE112005002405B4 (de) | Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung | |
DE3486161T2 (de) | Datenverarbeitungssystem mit Datenkohärenz. | |
DE69025658T2 (de) | Verfahren zur Verbesserung der Leistung eines mehrstufigen Cachespeichers durch erzwungene Fehlgriffe | |
DE112017001027B4 (de) | Seitenfehlerbehebung | |
DE69738101T2 (de) | Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen | |
DE69732181T2 (de) | Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen | |
DE69029173T2 (de) | Mikroprozessor | |
DE60036960T2 (de) | Unterscheidung von feinkorntranslation | |
DE112007000812T5 (de) | Transaktionalspeicher in Out-of-Order-Prozessoren | |
DE112007001171T5 (de) | Verfahren für virtualisierten Transaktionsspeicher bei globalem Überlauf | |
DE112004000464T5 (de) | Ungültigmachen von Speichereinträgen, Löschen von Pufferspeicher-Einträgen | |
DE112005003243T5 (de) | System und Verfahren für die Cache-Kohärenz bei einem Cache mit unterschiedlichen Längen für die Cache-Orte | |
DE112008001666T5 (de) | Hierarchische Cache-Tag-Architektur | |
DE112018002032T5 (de) | Gemeinsames nutzen von virtuellen und realen übersetzungen in einem virtuellen cache | |
DE112018002028T5 (de) | Umsetzungsunterstützung für einen virtuellen cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE), |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
8339 | Ceased/non-payment of the annual fee |