[go: up one dir, main page]

DE69429503T2 - Übersetzungsmechanismus für Ein-/Ausgabeadressen - Google Patents

Übersetzungsmechanismus für Ein-/Ausgabeadressen

Info

Publication number
DE69429503T2
DE69429503T2 DE69429503T DE69429503T DE69429503T2 DE 69429503 T2 DE69429503 T2 DE 69429503T2 DE 69429503 T DE69429503 T DE 69429503T DE 69429503 T DE69429503 T DE 69429503T DE 69429503 T2 DE69429503 T2 DE 69429503T2
Authority
DE
Germany
Prior art keywords
input
address
translation
output
bus
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 - Lifetime
Application number
DE69429503T
Other languages
English (en)
Other versions
DE69429503D1 (de
Inventor
Monroe K. Bridges
Robert Brooks
William R. Bryg
Stephen G. Burger
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 DE69429503D1 publication Critical patent/DE69429503D1/de
Application granted granted Critical
Publication of DE69429503T2 publication Critical patent/DE69429503T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/206Memory mapped I/O

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)
  • Bus Control (AREA)
  • Memory System (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf Übersetzungen von Eingabe/Ausgabe- (I/O-; I/O = input/output) Adressen durch einen Eingabe/Ausgabe-Adapter.
  • Es werden häufig Adreßübersetzungskarten verwendet, um I/O- Busadressen in Speicheradressen umzuwandeln. Solche Adreßübersetzungskarten sind verwendet worden, wenn der I/O-Bus- Adreßbereich kleiner als der Speicheradreßbereich ist, so daß I/O-Zugriffe auf jeden Teil des Speichers Bezug nehmen bzw. jeden Teil desselben referenzieren können.
  • In der herkömmlichen Technik sind I/O-Adreßübersetzungskarten durch Software verwaltet worden. Jeder Eintrag in der Adreßübersetzungskarte wird explizit durch die Betriebssystemsoftware zugewiesen und geladen. Die Anzahl von Einträgen in der Adreßübersetzungskarte ist ein begrenztes Betriebsmittel. Folglich muß eine Betriebssystemsoftware, die die Adreßübersetzungskarte verwaltet, die Adreßübersetzungskarte sorgfältig verwalten, um dieses begrenzte Betriebsmittel bestens zu verwenden. Zusätzlich war es erforderlich, daß das Betriebssystem in der Lage war, Fälle zu handhaben, in denen Anforderungen nach einer Benutzung der Adreßübersetzungskarte bei den verfügbaren Adreßübersetzungskartenbetriebsmittel einen Überlauf erzeugt haben.
  • Um die Adreßübersetzungskarte am besten zu verwalten, sind typischerweise I/O-Kartenfehlerunterbrechungen notwendig, um die benötigten Einträge in die Adreßübersetzungstabelle zu laden. Die I/O-Kartenfehlerunterbrechungen sind notwendig, wenn ein Eintrag nicht zu dem Zeitpunkt geladen werden kann, da eine Direktspeicherzugriff- (DMA-; DMA = direct memory access) Transaktion gestartet wird.
  • Wegen der im vorhergehenden erörterten Überlegungen ist die Betriebssystemsoftware zur Unterstützung einer Adreßübersetzungskarte in einem I/O-Adapter im allgemeinen komplex. Zusätzlich erhöht die Verwendung von I/O-Kartenfehlerunterbrechungen, um benötigte Einträge in die Adreßübersetzungstabelle zu laden, den Softwareaufwand, was folglich die Gesamtsystemleistungsfähigkeit reduziert.
  • Die JP-A-61114352 bezieht sich auf ein allgemeines Adreßumwandlungssystem, bei dem ein Kanaldatenprozessor zwischen einem Hauptspeicher und einem Kanal vorgesehen ist. Der Speicher enthält eine Logische/Reale-Adressen- Umwandlungstabelle, wobei der Kanaldatenprozessor einen Umwandlungsmechanismus enthält, der einem Übersetzungsvorgriffpuffer (translation look aside buffer) entspricht. Jeweilige Umwandlungsregister sind vorgesehen, um das Ergebnis einer Umwandlung zwischen der logischen Adresse und einer realen Adresse zu speichern, wobei ein Teilkanalspeicher einen Speicherbereich für die Ergebnisse der Umwandlung enthält.
  • IBM Technical Disclosure Bulletin, Bd. 19, Nr. 1, Juni 1976, Seiten 83 bis 84, beschreibt das Minimieren der Eingabe/Ausgabe-Seitenverankerung bei einem Datenprozessor mit virtueller Speicherung, bei dem jeder I/O-Kanal mit seiner eigenen Hardwareverzeichnisvorgrifftabelle zum Umwandeln von virtuellen Adressen in reale Speicher- oder Hauptspeicher-Adressen versehen ist, wobei die Verwaltung des TLB mittels des Betriebssystems erzielt wird.
  • Die EP-A-0508577 offenbart einen dynamischen Adreßübersetzungsmechanismus, der einen einzigen Übersetzungsvorgriffpuffer für Seiten verschiedener Größen verwendet.
  • Die Aufgabe, die der vorliegenden Erfindung zugrunde liegt, besteht darin, ein verbessertes Computersystem und ein Verfahren zum Durchführen von Übersetzungen von Eingabe/Ausgabe-Adressen zu schaffen, ohne daß die Gesamtsystemleistungsfähigkeit reduziert wird.
  • Diese Aufgabe wird durch ein Computersystem gemäß Anspruch 1 und durch ein Verfahren gemäß Anspruch 8 gelöst.
  • Gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung umfaßt ein Computersystem eine erste Verbindungseinrichtung, eine zweite Verbindungseinrichtung, einen Hauptspeicher und einen Eingabe/Ausgabe-Adapter. Die erste Verbindungseinrichtung liefert eine Informationsübertragung. Die erste Verbindungseinrichtung ist beispielsweise ein Speicherbus. Die zweite Verbindungseinrichtung liefert ebenfalls eine Informationsübertragung. Die zweite Verbindungseinrichtung ist beispielsweise ein Eingabe/Ausgabe- Bus, mit dem Eingabe/Ausgabe-Geräte verbunden sind.
  • Der Hauptspeicher ist mit der ersten Verbindungseinrichtung verbunden. Der Hauptspeicher umfaßt ein Seitenverzeichnis. Das Seitenverzeichnis speichert Übersetzungen. Jede Übersetzung in dem Seitenverzeichnis ist durch einen Abschnitt einer Adresse für Daten indexiert, die über die zweite Verbindungseinrichtung übertragen werden, beispielsweise den Seitenadreßabschnitt einer Eingabe/Ausgabe-Busadresse. Jede Übersetzung in dem Seitenverzeichnis umfaßt einen Abschnitt einer Adresse für eine Speicherposition innerhalb des Hauptspeichers, wie z.B. den Seitenadreßabschnitt der Adresse für die Speicherposition.
  • Der Eingabe/Ausgabe-Adapter ist mit der ersten Verbindungseinrichtung und der zweiten Verbindungseinrichtung verbunden. Der Eingabe/Ausgabe-Adapter umfaßt einen Eingabe/Ausgabe-Übersetzungsvorgriffpuffer. Der Eingabe/Ausgabe- Übersetzungsvorgriffpuffer umfaßt einen Abschnitt der Übersetzungen, die in dem Seitenverzeichnis gespeichert sind.
  • Um auf den Eingabe/Ausgabe-Übersetzungsvorgriffpuffer zuzugreifen, werden die höchstwertigen Bits (genannt der Kettenidentifizierer) einer ersten Adresse von Daten, die über die zweite Verbindungseinrichtung übertragen werden, verwendet, um von dem Eingabe/Ausgabe- Übersetzungsvorgriffpuffer eine erste Übersetzung zu erhalten. Die erste Übersetzung wird überprüft, um zu bestimmen, ob die erste Übersetzung einen Eintrag für die erste Adresse enthält. Dies wird beispielsweise durchgeführt, indem ein Etikettenabschnitt der ersten Übersetzung mit einem entsprechenden Abschnitt der ersten Adresse verglichen wird, um zu bestimmen, ob eine Übereinstimmung besteht.
  • Bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung wird beim Hochfahren eine Adreßgröße für die Daten konfiguriert, die über die zweite Verbindungseinrichtung übertragen werden. Dies wird beispielsweise durchgeführt, indem ein Wert, der eine relative Position des Kettenidentifizierers identifiziert, in ein Maskenregister plaziert wird. Wenn auf Daten zugegriffen wird, wird der Kettenidentifizierer extrahiert, um auf die erste Übersetzung von dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer zuzugreifen. Diese Extrahierung wird durch eine Mehrzahl von Logikgattern durchgeführt, die den Wert in dem Maskenregister verwendet.
  • Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung liefert ein Schema für eine effektive Übersetzung von Adressen in einem Eingabe/Ausgabe-Adapter. Der Hauptspeicherplatz für das Seitenverzeichnis befindet sich in dem Hauptspeicher für das Computersystem. Im allgemeinen ist Speicherplatz in einem Hauptspeicher ein relativ unaufwendiges Betriebsmittel. Ferner ist die Hardwareimplementierung des Eingabe/Ausgabe-Übersetzungsvorgriffpuffers in dem Eingabe/Ausgabe-Puffer relativ unaufwendig.
  • Fig. 1 zeigt ein vereinfachtes Blockdiagramm eines Computersystems mit einem Eingabe/Ausgabe- (I/O-) Adapter gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • Fig. 2 zeigt eine Implementierung eines Eingabe/Ausgabe- (I/O-) Übersetzungsvorgriffpuffers (TLB; TLB = translation 100k aside buffer) in dem I/O-Adapter, der in Fig. 1 gezeigt ist, gemäß einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • Fig. 3 zeigt eine Implementierung eines I/O-TLBs in dem I/O-Adapter, der in Fig. 1 gezeigt ist, gemäß einem alternativen bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • Fig. 4 zeigt eine Kettenidentifikationsextrahierungslogik, die beim Adressieren des I/O-TLBs, der in Fig. 3 gezeigt ist, verwendet wird, gemäß dem alternativen bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • Fig. 5 zeigt ein Teilzustandsdiagramm für den I/O- Adapter, der in Fig. 1 gezeigt ist, gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung.
  • Fig. 1 zeigt ein vereinfachtes Blockdiagramm eines Computersystems. Ein Prozessor 10 und ein Speicher 12 sind derart gezeigt, daß dieselben mit einem Speicherbus 9 verbunden sind. Mit dem Speicherbus 9 ist ferner ein Eingabe/Ausgabe- (I/O-) Adapter 13 verbunden. Der I/O-Adapter 13 ist mit einem I/O-Bus 14 verbunden. Mit dem I/O-Bus 14 sind ebenfalls ein I/O-Gerät 15 und ein I/O-Gerät 16 verbunden. Ein Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (TLB) 19 wird verwendet, um Adressen, die für den I/O-Bus 14 verwendet werden, in Adressen umzuwandeln, die durch den Speicher 12 verwendet werden. Ein vollständiges I/O- Übersetzungsseitenverzeichnis (PDIR; PDIR = page directory = Seitenverzeichnis) 20 ist in dem Speicher 12 gespeichert. Eine I/O-Zustandsmaschine 18 in dem I/O-Adapter 13 liefert eine Hardwaresteuerung von I/O-TLB-Fehlschlägen von Transaktionen auf dem I/O-Bus 14.
  • Fig. 2 zeigt eine Implementierung des I/O-TLB 19 gemäß dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung. Der I/O-TLB 19 wird verwendet, um eine I/O-Busadresse 21 in eine Speicheradresse 23 zu übersetzen. Der I/O-TLB 19 ist als ein Direktabbildungscache von I/O-Übersetzungen implementiert. Alternativ könnte der I/O-TLB 19 als ein vollassoziativer bzw. vollständig inhaltsadressierter Cache oder ein satzassoziativer bzw. satzadressierter Cache implementiert sein. Das Verfahren zum Zuweisen von Adressen basierend auf einer Ketten-ID und einer Block-ID ermöglicht jedoch, daß ein Direktabbildungscache genauso effizient arbeiten kann wie ein Assoziativcache, während er aber einfacher und günstiger ist. Die Betriebssystemsoftware weist jedem gleichzeitigen DMA eine abweichende Ketten-ID zu, um zu ermöglichen, daß der Direktabbildungscache effizient arbeiten kann.
  • Bei dem bevorzugten Ausführungsbeispiel besteht der Seitenadreßabschnitt der I/O-Busadresse 21 aus einem Kettenidentifikationsabschnitt und einem Blockidentifikationsabschnitt. Während einer Übersetzung wird die I/O-Busadresse 21 verwendet, um auf eine entsprechende Speicherseitenadresse innerhalb des I/O-TLB 19 zuzugreifen. Bei dem Ausführungsbeispiel, das in Fig. 2 gezeigt ist, wird der Kettenidentifikationsabschnitt als ein Index in den I/O-TLB 19 verwendet. Ein Komparator 25 vergleicht den Blockidentifikationsabschnitt der I/O-Busadresse 21 mit dem Etikettenabschnitt von dem Übersetzungseintrag, auf den durch den Kettenidentifikationsabschnitt der I/O-Busadresse 21 zugegriffen wird, um zu bestimmen, ob sich die gegenwärtig gesuchte Übersetzung in dem I/O-TLB 19 befindet. Der I/O- Adreßversatzwert ist der gleiche wie der Speicheradreßversatz.
  • Bei dem bevorzugten Ausführungsbeispiel verwendet der I/O- Bus 14 beispielsweise 32-Bit-Adressen, wobei jede Adresse eine 20-Bit-I/O-Seitennummer und einen 12-Bit-Versatzwert aufweist. Die Kettenidentifikation besteht aus den äußersten acht linken Bits der 22-Bit-I/O-Seitennummer. Die Blockidentifikation stellt die zwölf äußersten rechten Bits der 20-Bit-I/O-Seitennummer dar. Der Speicherbus 14 verwendet 40-Bit-Adressen, wobei jede Adresse eine 28-Bit- Speicherseitennummer und einen 12-Bit-Versatzwert aufweist. Bei diesem System sind keine Hash-Bildung oder verkettete Listen notwendig.
  • Bei dem bevorzugten Ausführungsbeispiel kann der I/O-TLB 19 für jeden Übersetzungseintrag ferner zusätzliche Informationen, wie z.B. einen Kohärenzindex, Datenzugriffsattribute und ein Gültigkeitsbit, das anzeigt, ob der Übersetzungseintrag gültig ist, aufweisen.
  • Bei jedem Speicherzugriff von dem I/O-Bus 14 aus verwendet der I/O-Adapter 13 die Kettenidentifikation von der I/O- Busadresse, um auf einen Übersetzungseintrag in dem I/O-TLB 19 zuzugreifen. Falls das Etikett für den Übersetzungseintrag, auf den zugegriffen wurde, von dem I/O-TLB 19 mit der Blockidentifikation von der I/O-Busadresse übereinstimmt, verwendet der I/O-Adapter 13 die übersetzte Adresse und die zusätzlichen Informationen, die in dem I/O-TLB 19 für den Eintrag gespeichert sind, um den Speicherzugriff abzuschließen. Falls das Etikett nicht übereinstimmt, greift der I/O-Adapter 13 auf den geeigneten Übersetzungseintrag von dem I/O-PDIR 20 zu. Der I/O-Adapter 13 plaziert den Übersetzungseintrag von dem I/O-PDIR 20 in den I/O-TLB 19 und führt den ursprünglichen Zugriff durch.
  • Auf einen Übersetzungseintrag kann von dem I/O-PDIR 20 unter Verwendung des Seitenadreßabschnitts der I/O-Busadresse zugegriffen werden. Um die Position des Übersetzungseintrags in dem Speicher 12 zu bestimmen, wird der Seitenadreßabschnitt der I/O-Busadresse für den Übersetzungseintrag mit der Anzahl von Speicherpositionen multipliziert, die durch jeden Übersetzungseintrag in dem I/O-PDIR 20 verwendet werden. Die resultierende Zahl wird zu der Basisadresse für das I/O-PDIR 20 in dem Speicher 12 addiert. Die Basisadresse wird durch Software in einem Register in dem I/O-Adapter 13 initialisiert. Die resultierende Speicheradresse wird verwendet, um auf den Übersetzungseintrag in dem I/O-PDIR 20 zuzugreifen.
  • Fig. 3 zeigt eine alternative Implementierung des I/O-TLB 19 gemäß einem alternativen bevorzugten Ausführungsbeispiel der vorliegenden Erfindung. Bei diesem bevorzugten Ausführungsbeispiel besteht der Seitenadreßabschnitt der I/O- Busadresse 21 ebenfalls aus einem Kettenidentifikationsabschnitt und einem Blockidentifikationsabschnitt. Die Größe des Kettenidentifikationsabschnitts ist durch die Anzahl von Einträgen bestimmt, die in dem I/O-TLB 19 verfügbar sind. Dies bedeutet, daß der Kettenidentifikationsabschnitt nur genügend Bits enthalten muß, um zu ermöglichen, daß jeder Eintrag in dem I/O-TLB 19 durch den Kettenidentifikationsabschnitt einzeln adressiert werden kann. Die Größe des Blockidentifikationsabschnitts ist zum Hochfahrzeitpunkt konfigurierbar. Die Größe des Blockidentifikationsabschnitts ist durch die Anzahl von Einträgen bestimmt, die in dem I/O-PDIR 20 verfügbar sind. Dies bedeutet, daß der Blockidentifikationsabschnitt nur genügend Bits enthalten muß, um zu ermöglichen, daß jeder Eintrag in dem I/O-PDIR 20 durch die Verkettung des Kettenidentifikationsabschnitts mit dem Blockidentifikationsabschnitt einer I/O-Busadresse einzeln adressiert werden kann.
  • Wenn der Blockidentifikationsabschnitt der I/O-Busadresse kleiner als die maximale Größe beträgt, wird ein Abschnitt eines Registers, in das die I/O-Busadresse plaziert wird, nicht verwendet werden bzw. unbenutzt sein. Bei dem bevorzugten Ausführungsbeispiel wird in allen Bits des Registers, die durch die I/O-Busadresse nicht verwendet werden, der Wert Null gespeichert.
  • Während einer Übersetzung wird der Kettenidentifikationsabschnitt der I/O-Busadresse 21 als ein Index in den I/O-TLB 19 verwendet. Die Kettenidentifikationsextrahierungslogik 31 empfängt den gesamten Seitenadreßabschnitt der I/O- Busadresse 21. Der gesamte Seitenadreßabschnitt der I/O- Busadresse 21 umfaßt die Kettenidentifikation, die Blockidentifikation und jeden nicht verwendeten Abschnitt der I/O-Busadresse 21. Die Kettenidentifikationsextrahierungslogik 31 extrahiert die Kettenidentifikation aus dem Seitenadreßabschnitt der I/O-Busadresse 21 für eine Verwendung als ein Index in den I/O-TLB 19.
  • Der Komparator 25 vergleicht den Etikettenabschnitt der I/O-Busadresse 21 mit einem Etikettenabschnitt von dem Übersetzungseintrag, auf den durch den Kettenidentifikationsabschnitt der I/O-Busadresse 21 zugegriffen wird, um zu bestimmen, ob sich die gegenwärtig gesuchte Übersetzung in dem I/O-TLB 19 befindet. Der Etikettenabschnitt der I/O- Busadresse 21 umfaßt den gesamten Seitenadreßabschnitt der I/O-Busadresse 21 weniger bzw. abzüglich einer Anzahl von äußersten linken Bits, die der Größe des Kettenidentifikationsabschnitts entspricht. Der I/O-Adreßversatz ist der selbe wie der Speicheradreßversatz.
  • Bei dem alternativen bevorzugten Ausführungsbeispiel verwendet der I/O-Bus 14 beispielsweise Adressen mit einer maximalen Größe von 32 Bits. Jede Adresse weist einen 12-Bit- Versatzwert und eine I/O-Seitennummer auf, die bezüglich der Größe von 8 bis 20 Bits variiert. Die Kettenidentifikation stellt die acht äußersten linken Bits der I/O- Seitennummer dar. Die Blockidentifikation stellt die äußersten rechten Bits der I/O-Seitennummer dar. Die Blockidentifikation variiert bezüglich der Größe von 0 bis 12 Bits. Wenn die I/O-Seitennummer weniger als 20 Bits aufweist, wird ein Abschnitt links der I/O-Seitennummer nicht verwendet. Der Speicherbus 14 verwendet 40-Bit-Adressen, wobei jede Adresse eine 28-Bit-Speicherseitennummer und einen 12-Bit-Versatzwert aufweist. Bei diesem System sind keine Hash-Bildung oder verkettete Listen notwendig. Der Etikettenabschnitt der I/O-Busadresse 21 stellt die zwölf äußersten rechten Bits des Seitenadreßabschnitts der I/O- Busadresse 21 dar.
  • Fig. 4 zeigt ein Blockdiagramm der Kettenidentifikationsextrahierungslogik 31, die in Fig. 3 gezeigt ist. Zu einem Hochfahrzeitpunkt wird die Größe der I/O-Busadressen konfiguriert, indem ein Wert in ein 20-Bit-Kettenidentifikationsmaskenregister 49 plaziert wird. Logische Einsen werden in die acht Bits in dem Kettenidentifikationsmaskenregister 49 plaziert, die mit der relativen Position des Kettenidentifikationsabschnitts in der I/O-Busadresse übereinstimmen. Logische Nullen werden in die anderen Positionen in dem Kettenidentifikationsmaskenregister 49 geladen.
  • Wann immer ein Zugriff auf den I/O-TLB 19 vorliegt, führen logische UND-Gatter 48 eine logische UND-Verknüpfung auf Bitebene zwischen jedem Bit des Kettenidentifikationsmaskenregisters 49 und jedem entsprechenden Bit der 20 äußersten linken Bits der I/O-Busadresse 21 durch. Die 20 äußersten linken Bits der I/O-Busadresse 21 umfassen jedes Bit des Blockidentifikationsabschnitts, des Kettenidentifikationsabschnitts und jeglichen nicht verwendeten Abschnitt.
  • Jedes der logischen UND-Gatter 48 empfängt ein einzelnes Bit von der Ketten-ID-Maske 49 und ein entsprechendes Bit von der I/O-Busadresse 12 und führt eine logische UND- Verknüpfung durch, um ein einzelnes Ausgangsbit zu erzeugen. Eine logische UND-Verknüpfung wird an einem Bit mit hoher Wertigkeit der Ketten-ID-Maske 49 und einem entsprechenden Bit mit hoher Wertigkeit von der I/O-Busadresse 12 durchgeführt, um ein Bitausgangssignal 50 zu erzeugen. Eine logische UND-Verknüpfung wird an einem Bit einer nächst höheren Wertigkeit der Ketten-ID-Maske 49 und einem entsprechenden Bit einer nächst höheren Wertigkeit von der I/O- Busadresse 12 durchgeführt, um ein Bitausgangssignal 51 zu erzeugen. Die logischen UND-Gatter 48 erzeugen auf entsprechende Weise ein Bitausgangssignal 52, ein Bitausgangssignal 53, ein Bitausgangssignal 54, ein Bitausgangssignal 55, ein Bitausgangssignal 56, ein Bitausgangssignal 57, ein Bitausgangssignal 58, ein Bitausgangssignal 59, ein Bitausgangssignal 60, ein Bitausgangssignal 61, ein Bitausgangssignal 62, ein Bitausgangssignal 63, ein Bitausgangssignal 64, ein Bitausgangssignal 65, ein Bitausgangssignal 66, ein Bitausgangssignal 67, ein Bitausgangssignal 68 und ein Bitausgangssignal 69. Die Bitausgangssignale 50 bis 69 dienen als Eingangssignale zu einem logischen ODER-Gatter 40, einem logischen ODER-Gatter 41, einem logischen ODER-Gatter 42, einem logischen ODER-Gatter 43, einem logischen ODER- Gatter 44, einem logischen ODER-Gatter 45, einem logischen ODER-Gatter 46 und einem logischen ODER-Gatter 47, wie es gezeigt ist. Die logischen ODER-Gatter 40 bis 47 erzeugen die Acht-Bit-Kettenidentifikation an einem Ausgang 70, einem Ausgang 71, einem Ausgang 72, einem Ausgang 73, einem Ausgang 74, einem Ausgang 75, einem Ausgang 76 und einem Ausgang 77, wie es gezeigt ist. Der Kettenidentifikationsabschnitt, der an den Ausgängen 70 bis 77 erzeugt wird, wird abhängig von der Position des Kettenidentifikationsabschnitts in der I/O-Busadresse 21 rotiert bzw. einer Ringverschiebung unterzogen. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung weist diese Ringverschiebung jedoch keine Auswirkung auf die Leistungsfähigkeit auf.
  • Fig. 5 zeigt ein Teilzustandsdiagramm für die I/O-Zustandsmaschine 18 in dem I/O-Adapter 13. Der gezeigte Abschnitt des Zustandsdiagramms handhabt ankommende Meldungen von dem I/O-Bus 14, wenn ein TLB-Fehlschlag vorliegt. Für andere Transaktionen, wie z.B. eine I/O-Transaktion, bei der ein TLB-Treffer vorliegt, gelangt, die I/O-Zustandsmaschine 18 in verschiedene Zustände, die nicht gezeigt sind. Die Zustandsmaschine 18 verbleibt in einem Leerlaufzustand 81, während keine Transaktion auftritt. Wenn eine I/O- Transaktion und ein TLB-Fehlschlag vorliegt, gelangt die Zustandsmaschine 18 in einen ersten TLB-Lesezustand 82. Wenn sich die Zustandsmaschine 18 in dem ersten TLB- Lesezustand 82 befindet, gibt der I/O-Adapter 13 einen Lesevorgang des PDIR 20 in dem Speicher 12 durch den Speicherbus 9 aus, um den fehlenden Eintrag von dem Übersetzungskarten-TLB 19 zu erhalten. Daraufhin gelangt die Zustandsmaschine 18 in einen zweiten TLB-Lesezustand 83. In dem zweiten TLB-Lesezustand 83 wartet der I/O-Adapter 13 darauf, daß der Eintrag von dem PDIR 20 zurückgesendet wird. Bei dem bevorzugten Ausführungsbeispiel schreibt der I/O-Adapter, während sich derselbe in dem zweiten TLB- Lesezustand 83 befindet, ununterbrochen Daten in den Übersetzungskarten-TLB 19 an der Position, in die der Eintrag von dem PDIR 20 geschrieben werden soll. Der letzte Schreibvorgang wird in dem Übersetzungskarten-TLB 19 die korrekten Daten hinterlassen.
  • Wenn der neue Eintrag ankommt, gelangt die Zustandsmaschine 18 in einen Endzustand 84. Nachdem die Aktualisierung des Übersetzungskarten-TLB 19 abgeschlossen ist, kehrt zu Zustandsmaschine 18 in den Leerlaufzustand 81 zurück.

Claims (15)

1. Ein Computersystem mit
einem Speicherbus (9) zum Liefern einer Informationsübertragung;
einem Eingabe/Ausgabe-Bus (14) zum Liefern einer Informationsübertragung;
einem Hauptspeicher (12), der mit dem Speicherbus (9) gekoppelt ist, wobei der Hauptspeicher (12) ein Seitenverzeichnis (20) speichert, wobei das Seitenverzeichnis (20) Übersetzungen von Adressen, die für Datenübertragungen über den Eingabe/Ausgabe-Bus (14) verwendet werden, in Adressen, die verwendet werden, um auf den Hauptspeicher (12) direkt zuzugreifen, speichert, wobei jede Übersetzung durch einen Abschnitt einer Adresse für Daten, die über den Eingabe/Ausgabe-Bus (14) übertragen werden, indexiert wird, und jede Übersetzung einen Abschnitt einer Adresse für eine Speicherposition in dem Hauptspeicher (12) aufweist; und
einem Eingabe/Ausgabe-Adapter (13), der mit dem Speicherbus (9) und dem Eingabe/Ausgabe-Bus (14) gekoppelt ist, wobei der Eingabe/Ausgabe-Adapter (13) einen Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) mit einer Kopie des Abschnitts der Übersetzungen, die in dem Seitenverzeichnis (20) gespeichert sind, aufweist;
wobei bei einem Speicherzugriff der Eingabe/Ausgabe- Adapter (13)
- bestimmt, ob sich die Informationen, die sich auf eine Adresse für den Speicherzugriff beziehen, in dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) befinden;
- in dem Fall eines Treffers auf den Eingabe/Ausgabe- Übersetzungsvorgriffpuffer (19) zugreift und den Speicherzugriff auf der Basis der Informationen, die von dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) hergeleitet werden, abschließt; und
- in dem Fall eines Fehlschlags auf das Seitenverzeichnis (20) zugreift und den Speicherzugriff auf der Basis der Informationen, die von dem Seitenverzeichnis (20) hergeleitet werden, abschließt,
dadurch gekennzeichnet, daß
der Eingabe/Ausgabe-Adapter (13) eine Hardwarezustandsmaschine (18) aufweist, die den Zugriff auf das Seitenverzeichnis verwaltet.
2. Das Computersystem gemäß Anspruch 1, bei dem der Eingabe/Ausgabe-Adapter (13) zusätzlich folgende Merkmale aufweist:
eine Zugriffseinrichtung (31), die mit dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer gekoppelt ist, zum Verwenden der höchstwertigen Bits der Adresse der Daten, die über den Eingabe/Ausgabe-Bus (14) übertragen werden, um auf eine Übersetzung von dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) zuzugreifen; und
eine Überprüfungseinrichtung (25), die mit dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) gekoppelt ist, um zu überprüfen, ob die Übersetzung einen Eintrag für die Adresse enthält.
3. Das Computersystem gemäß Anspruch 2, bei dem die Überprüfungseinrichtung (25) einen Etikettenabschnitt der Übersetzung mit einem entsprechenden Abschnitt der Adresse vergleicht, um zu bestimmen, ob die Übersetzung einen Eintrag für die Adresse enthält.
4. Das Computersystem gemäß Anspruch 3, bei dem der Eingabe/Ausgabe-Adapter folgende Merkmale aufweist:
eine Konfigurierungseinrichtung (49) zum Konfigurieren einer Adreßgröße für die Daten, die über den Eingabe/Ausgabe-Bus (14) übertragen werden; und
eine Extrahierungseinrichtung (48), die mit der Konfigurierungseinrichtung gekoppelt ist, zum Extrahieren der höchstwertigen Bits der Adresse aus der Adresse, die verwendet werden, um auf die Übersetzung von dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) zuzugreifen.
5. Das Computersystem gemäß Anspruch 4, bei dem die Konfigurierungseinrichtung (49) ein Maskenregister (49) aufweist, in dem ein Wert plaziert ist, der eine relative Position des Index in den Adressen der Daten, die über den Eingabe/Ausgabe-Bus (14) übertragen werden, identifiziert.
6. Das Computersystem gemäß Anspruch 5, bei dem die Indexextrahierungseinrichtung (31) zusätzlich folgendes Merkmal aufweist:
eine Mehrzahl von Logikgattern (50-69), die mit dem Maskenregister (49) gekoppelt sind, zum Extrahieren des Index aus den Adressen der Daten, die über den Eingabe/Ausgabe-Bus (14) übertragen werden, basierend auf dem Wert in dem Maskenregister (49).
7. Das Computersystem gemäß Anspruch 1, bei dem unabhängig von der Position in den Adressen die Bitlänge des Index nicht variiert.
8. Ein Verfahren bei einem Computersystem mit einem Speicherbus (9) zum Liefern einer Informationsübertragung und einem Eingabe/Ausgabe-Bus (14) zum Liefern einer Informationsübertragung, wobei das Verfahren folgende Schritte aufweist:
(a) Speichern in einem Seitenverzeichnis (20) in einem Hauptspeicher (12), der mit dem Speicherbus (9) gekoppelt ist, von Übersetzungen von Adressen, die für Datenübertragungen über den Eingabe/Ausgabe-Bus (14) verwendet werden, in Adressen, die verwendet werden, um auf einen Hauptspeicher (12) direkt zuzugreifen, wobei jede Übersetzung durch einen Abschnitt einer Adresse für Daten, die über den Eingabe/Ausgabe-Bus (14) übertragen werden, indexiert wird, und jede Übersetzung einen Abschnitt einer Adresse für eine Speicherposition in dem Hauptspeicher (12) aufweist;
(b) Speichern einer Kopie des Abschnitts der Übersetzungen, die in dem Seitenverzeichnis (20) gespeichert sind, in einem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19), wobei sich der Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) in einem Eingabe/Ausgabe-Adapter (13) befindet, der mit dem Speicherbus (9) und dem Eingabe/Ausgabe- Bus (14) gekoppelt ist;
(c) Bestimmen, ob sich Informationen, die sich auf eine Adresse für den Speicherzugriff beziehen, in dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) befinden;
(d) in dem Fall eines Treffers, Zugreifen auf den Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) und Abschließen des Speicherzugriffs auf der Basis der Informationen, die von dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) hergeleitet werden; und
(e) in dem Fall eines Fehlschlags, Zugreifen auf das Seitenverzeichnis (20) und Abschließen des Speicherzugriffs auf der Basis der Informationen, die von dem Seitenverzeichnis (20) hergeleitet werden,
dadurch gekennzeichnet, daß
der Eingabe/Ausgabe-Adapter (13) eine Hardwarezustandsmaschine (18) aufweist, die den Zugriff auf das Seitenverzeichnis verwaltet.
9. Das Verfahren gemäß Anspruch 8, bei dem der Schritt
(c) folgende Schritte aufweist:
(c1) Zugreifen auf eine Übersetzung von dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer (19) unter Verwendung der höchstwertigen Bits der Adresse der Daten, die über den Eingabe/Ausgabe-Bus (14) übertragen werden; und
(c2) Überprüfen, ob die Übersetzung einen Eintrag für die Adresse enthält.
10. Das Verfahren gemäß Anspruch 9, bei dem der Schritt (c1) folgenden Teilschritt aufweist:
Vergleichen eines Etikettenabschnitts der Übersetzung mit einem entsprechenden Abschnitt der Adresse, um zu bestimmen, ob die Übersetzung einen Eintrag für die Adresse enthält.
11. Das Verfahren gemäß Anspruch 10, das zusätzlich folgenden Schritt aufweist, der vor dem Schritt (a) durchgeführt wird:
Konfigurieren einer Adreßgröße für die Daten, die über den Eingabe/Ausgabe-Bus (14) übertragen werden.
12. Das Verfahren gemäß Anspruch 11, bei dem der Schritt (c1) folgenden Teilschritt aufweist:
Extrahieren der höchstwertigen Bits der Adresse aus der Adresse, die verwendet werden, um auf die Übersetzung von dem Eingabe/Ausgabe-Übersetzungsvorgriffpuffer zuzugreifen, basierend auf der konfigurierten Adreßgröße.
13. Ein Verfahren gemäß Anspruch 12, bei dem der Schritt des Konfigurierens das Plazieren eines Werts in ein Maskenregister (49) aufweist, wobei der Wert eine relative Position der höchstwertigen Bits der Adresse identifiziert.
14. Das Verfahren gemäß Anspruch 13, bei dem der Schritt des Extrahierens unter Verwendung einer Mehrzahl von Logikgattern durchgeführt wird, die die höchstwertigen Bits der Adresse basierend auf dem Wert, der in das Maskenregister (49) plaziert wird, extrahieren.
15. Das Verfahren gemäß Anspruch 14, bei dem der Schritt (e) folgenden Schritt aufweist:
Zugreifen auf eine Übersetzung für die Adresse von dem Seitenverzeichnis (20).
DE69429503T 1994-03-24 1994-09-16 Übersetzungsmechanismus für Ein-/Ausgabeadressen Expired - Lifetime DE69429503T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US21753694A 1994-03-24 1994-03-24

Publications (2)

Publication Number Publication Date
DE69429503D1 DE69429503D1 (de) 2002-01-31
DE69429503T2 true DE69429503T2 (de) 2002-05-16

Family

ID=22811476

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69429503T Expired - Lifetime DE69429503T2 (de) 1994-03-24 1994-09-16 Übersetzungsmechanismus für Ein-/Ausgabeadressen

Country Status (4)

Country Link
US (1) US5784708A (de)
EP (1) EP0674269B1 (de)
JP (1) JPH07281947A (de)
DE (1) DE69429503T2 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983332A (en) * 1996-07-01 1999-11-09 Sun Microsystems, Inc. Asynchronous transfer mode (ATM) segmentation and reassembly unit virtual address translation unit architecture
KR19980032776A (ko) 1996-10-16 1998-07-25 가나이 츠토무 데이타 프로세서 및 데이타 처리시스템
JP3264319B2 (ja) * 1997-06-30 2002-03-11 日本電気株式会社 バスブリッジ
US6266753B1 (en) * 1997-07-10 2001-07-24 Cirrus Logic, Inc. Memory manager for multi-media apparatus and method therefor
US6457068B1 (en) * 1999-08-30 2002-09-24 Intel Corporation Graphics address relocation table (GART) stored entirely in a local memory of an expansion bridge for address translation
US6804741B2 (en) * 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
GB0301448D0 (en) * 2003-01-22 2003-02-19 Falanx Microsystems As Microprocessor systems
US8843727B2 (en) * 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
US7334107B2 (en) * 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US7627716B2 (en) * 2004-11-15 2009-12-01 International Business Machines Corporation Method, system, and program for an adaptor to read and write to system memory

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4155119A (en) * 1977-09-21 1979-05-15 Sperry Rand Corporation Method for providing virtual addressing for externally specified addressed input/output operations
US4403282A (en) * 1978-01-23 1983-09-06 Data General Corporation Data processing system using a high speed data channel for providing direct memory access for block data transfers
US4669043A (en) * 1984-02-17 1987-05-26 Signetics Corporation Memory access controller
JPS61114352A (ja) * 1984-11-07 1986-06-02 Fujitsu Ltd チヤネルアドレス変換方式
US5347636A (en) * 1985-11-08 1994-09-13 Nec Corporation Data processor which efficiently accesses main memory and input/output devices
JP3369580B2 (ja) * 1990-03-12 2003-01-20 ヒューレット・パッカード・カンパニー 直接メモリアクセスを行うためのインターフェース装置及び方法
GB2251102B (en) * 1990-12-21 1995-03-15 Sun Microsystems Inc Translation lookaside buffer
US5263140A (en) * 1991-01-23 1993-11-16 Silicon Graphics, Inc. Variable page size per entry translation look-aside buffer
EP0508577A1 (de) * 1991-03-13 1992-10-14 International Business Machines Corporation Adressübersetzungseinrichtung

Also Published As

Publication number Publication date
JPH07281947A (ja) 1995-10-27
DE69429503D1 (de) 2002-01-31
EP0674269A3 (de) 1996-06-26
US5784708A (en) 1998-07-21
EP0674269B1 (de) 2001-12-19
EP0674269A2 (de) 1995-09-27

Similar Documents

Publication Publication Date Title
DE69408922T2 (de) Adressumsetzungscache-Speicher zur Umwandlung von virtuellen Adressen in physikalische Adressen, der mehrere Seitengrössen unterstützt
DE3786967T2 (de) Protokoll zum Ungültigerklären eines Cachespeichers für ein digitales Datenverarbeitungssystem.
DE69132005T2 (de) Vorrichtung und Verfahren für einen raumsparenden Adressenübersetzungspuffer für inhaltsadressierbaren Speicher
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE3687307T2 (de) Computeranordnungen mit cache-speichern.
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE69428881T2 (de) Logisch adressierbarer physikalischer Speicher für ein Rechnersystem mit virtuellem Speicher, das mehrere Seitengrössen unterstützt
DE69132300T2 (de) Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen
DE69029173T2 (de) Mikroprozessor
DE69432314T2 (de) Cachespeicher mit aufgeteiltem pegel
DE68902193T2 (de) Datenspeicheranordnung.
DE60320026T2 (de) Verbessertes speichermanagement für echtzeit-anwendungen
DE69424767T2 (de) Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers
DE3832912C2 (de) Virtuell adressierbare Cache-Speichereinrichtung
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE10002120B4 (de) Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE3852695T2 (de) Multiprozessorsystem mit mehreren Speichern.
DE3587031T2 (de) Zugriffpruefungseinrichtung fuer digitale datenverarbeitungsanordnung, welche einen speicher mit seitenabruf hat.
DE68925336T2 (de) Datenverarbeitungsvorrichtung mit Cache-Speicher
DE69429503T2 (de) Übersetzungsmechanismus für Ein-/Ausgabeadressen
DE69027919T2 (de) Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher
DE4234695C2 (de) Computer-Speichersystem und Verfahren zur Aufrechterhaltung der Cache-Kohärenz zwischen einem Daten-Cache und einem Segmentdeskriptor-Cache
DE3832758C2 (de) Verfahren zum Adressieren eines im Rückschreib-Modus betriebenen virtuellen Cache-Speichers

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 DEVELOPMENT CO., L.P., HOUSTON, TE