DE69418852T2 - Kohärenzindexerzeugung für Ein-/Ausgabeanschluss - Google Patents

Kohärenzindexerzeugung für Ein-/Ausgabeanschluss

Info

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
Application number
DE69418852T
Other languages
English (en)
Other versions
DE69418852D1 (de
Inventor
K.Monroe Bridges
William R. Bryg
Stephen G. Burger
James M. Hull
Michael L. Ziegler
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69418852D1 publication Critical patent/DE69418852D1/de
Application granted granted Critical
Publication of DE69418852T2 publication Critical patent/DE69418852T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

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

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

    HINTERGRUND DER ERFINDUNG
  • 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.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • 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.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 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.
  • BESCHREIBUNG DES BEVORZUGTEN AUSFÜHRUNGSBEISPIELS
  • 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.
DE69418852T 1994-02-24 1994-10-12 Kohärenzindexerzeugung für Ein-/Ausgabeanschluss Expired - Fee Related DE69418852T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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