DE69027919T2 - Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher - Google Patents
Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-SpeicherInfo
- Publication number
- DE69027919T2 DE69027919T2 DE69027919T DE69027919T DE69027919T2 DE 69027919 T2 DE69027919 T2 DE 69027919T2 DE 69027919 T DE69027919 T DE 69027919T DE 69027919 T DE69027919 T DE 69027919T DE 69027919 T2 DE69027919 T2 DE 69027919T2
- Authority
- DE
- Germany
- Prior art keywords
- input
- cache
- output device
- register
- addresses
- 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
- 230000015654 memory Effects 0.000 title claims description 62
- 238000000034 method Methods 0.000 title claims description 18
- 238000012545 processing Methods 0.000 claims description 36
- 238000013507 mapping Methods 0.000 claims description 7
- 238000012546 transfer Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002699 waste material Substances 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
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
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 im allgemeinen ein System und ein Verfahren zum Verbessern der Effizienz von programmierten Eingabe/Ausgabe-Interfaces (PE/A-Interfaces) und zum Abfragen (Pollen) von Eingabe/Ausgabe-Interfaces (E/A-Interfaces) in einem System mit großen Direktabbildungs-Datencaches. Die Erfindung betrifft insbesondere ein System und ein Verfahren, für welche die Verwendung von expliziten Cache-Managementbefehlen nicht erforderlich ist. Außerdem betrifft die Erfindung insbesondere ein solches System und Verfahren, bei dem die Verwendung von Direktabbildungs-Caches, eine große Anzahl von Cache-Leitungen, hohe Cache-Fehltreffer-Strafen im Bezug auf die Befehlszeiten und ein Fehlen von direkten Speicherzugriffs- (DMA-) Eingabe/Ausgabe-Einrichtungen miteinander kombiniert werden.
- In einem Computersystem gibt es verschiedene Möglichkeiten, Eingabe/Ausgabeoperationen durchzuführen. Eine Möglichkeit, die häufig Gefallen findet, ist die sogenannte "Speicherabbildungs"-Eingabe/Ausgabe, wobei Register von Eingabe/Ausgabe-Einrichtungen im selben physikalischen Adreßraum wie der Hauptspeicher auftreten und auf sie daher über normale Lade-/Speicherbefehle zugegriffen werden kann. Speicherabbildungs-Eingabe/Ausgabe-Einrichtungen decodieren typischerweise physikalische Speicheradressen und reagieren auf Adressen in spezifischen Bereichen.
- Bei der Verwendung von Prozessoren mit Datencaches liegt ein Problem darin, daß das Ziel des Caches, die Referenzierung an den Hauptspeicher zu unterdrücken, mit dem Ziel der Befehle in Konflikt geraten, die für den Zugriff auf die Register der Eingabe/Ausgabe-Einrichtungen verwendet werden, d.h. einen Eingabe/Ausgabe-Zugriff für jeden Lade- oder Speicherbefehl verursachen. Eine weitere Art, dieses Problem darzulegen, ist, daß die Software, die das Register einer Eingabe/Ausgabe-Einrichtung abfragt, garantieren muß, daß die abgefragte Adresse im Datencache ungültig ist, anderenfalls erkennt die Software nicht den tatsächlichen Wert des Registers.
- Typische Arten, mit diesem Problem umzugehen, sind:
- Cache-freie Zonen des physikalischen Adreßraums für die Register der Eingabe/Ausgabe-Einrichtungen; der Cache wird deaktiviert.
- Explizite Cache-Managementoperationen, bei denen die Eingabe/Ausgabe- Software anfordern kann, daß eine bestimmte Cache-Zeile deaktiviert wird, was möglicherweise ein Write-back verursacht.
- Indirekte Cache-Managementbefehle, die für Direktabbildungs-Caches nützlich sind und bei denen die Software eine Referenzierung eines Bereichs des physikalischen Adreßraums erzeugt, von dem bekannt ist, daß er mit der Cache- Zeile, die verwaltet wird, in Kollision gerät, und dadurch verursacht, daß die Zeile deaktiviert wird. Dieser andere Bereich kann als "reservierter" Bereich bezeichnet werden, obwohl er unabhängig davon als normaler Speicher benutzt werden kann.
- Der gegenwärtige Trend beim Prozessordesign ist die Veränderung mehrerer Systemparameter. Die Cache-Zeilen werden größer. Die Systeme der nächsten Generation haben möglicherweise eine Second-level-Cache-Zeile von 256 Byte. Dies impliziert, daß eher Write-back-Caches als Write-through-Caches verwendet werden. Die Speicherlatenzzeiten werden, verglichen mit der Befehlsgeschwindigkeit, länger. Die Cache-Auffüllzeit bei den Systemen der nächsten Generation kann 200 Befehlszyklen lang werden.
- Diese Veränderungen wirken sich auf die Leistung von herkömmlichen Einrichtungen im Umgang mit dem Speicherabbildungs-Eingabe/Ausgabe-Problem aus. Die Verwendung von Cache-freien Adressen ist einfach, aber weil dabei ein Cache-Fehltreffer für jeden Eingabe/Ausgabe-Befehl erzeugt wird, ist die Bandbreite für die programmierte Eingabe/Ausgabe-Datenübertragung auf einen kleinen Teil der Speichersystem-Bandbreite reduziert. In den Systemen der nächsten Generation kann dieser Teil 1/32 der ursprünglichen Bandbreite sein.
- Explizite Cache-Managementbefehle können eine genaue Steuerung über die Verteilung der Cache-Zeilen liefern, verursachen aber, daß die Zentraleinheit (CPU) und Cache-Ausführungen noch komplexer werden, und sind nicht in allen Architekturen vorhanden. Ein implizites Cache-Management leidet unter hohen Latenzzeiten, weil sie im allgemeinen eine Referenzierung des reservierten Bereichs für jede Referenzierung eines Eingabe/Ausgabe-Registers benötigt. Sie benötigt daher zwei Cache-Fehltreffer und füllt bei Eingabe/Ausgabe-Referenzierung auf. Für eine programmierte Eingabe/Ausgabe-Datenübertragung ist es besser, das Datenpufferregister der Eingabe/Ausgabe-Einrichtung so groß wie eine Cache-Zeile zu machen. Dann steht fast die Hälfte der Bandbreite des Speichersystems für die Datenübertragung zur Verfügung. Die andere Hälfte wird immer noch für das Auffüllen aus dem reservierten Bereich verwendet. Aus dieser Diskussion wird klar, daß Üir die Verwendung in Computersystemen der nächsten Generation eine Verbesserung der herkömmlichen Mittel im Umgang mit Speicherabbildungs-Eingabe/Ausgabe-Einrichtungen nötig ist.
- Computer Architecture News, Band 17, Nr. 9, September 1989, S. 16-23, liefert eine allgemeine Diskussion von Überlegungen zum DMA-Design bei RISC- Workstations und beinhaltet als in Betracht gezogene Alternative eine programmierte Eingabe/Ausgabe in einem System mit Zentraleinheit, Cache, Hauptspeicher und einer Cache-freien Speicherabbildungs-Eingabe/Ausgabe-Einrichtung.
- Ein erfindungsgemäßes System für den Zugriff auf Eingabe/Ausgabe-Einrichtungen über große Direktabbildungs-Caches weist eine Zentraleinheit, einen Hauptspeicher, mindestens eine Eingabe/Ausgabe-Einrichtung und einen Direktabbildungs-Cache auf, der zwischen die Zentraleinheit und die mindestens eine Eingabe/Ausgabe-Einrichtung geschaltet ist. Die mindestens eine Eingabe/Ausgabe-Einrichtung hat mindestens ein Register, das mit einer ersten und mit einer zweiten Adresse adressiert werden kann, die so gewählt sind, daß sie im Direktabbildungs-Cache kollidieren. Der Ausdruck "kollidieren", wie er hier verwendet wird, heißt, daß die die beiden Adressen beide dasselbe Wort in einem Cache abbilden. Der Cache kann nicht gleichzeitig den Inhalt der beiden Speicherplätze beim selben Wort enthalten. Der Direktabbildungs-Cache, der Hauptspeicher und die mindestens eine Eingabe/Ausgabe-Einrichtung können mit Adressen mit einer gemeinsamen Form adressiert werden. Die Zentraleinheit arbeitet durch die Steuerung eines Eingabe/Ausgabe-Programms und adressiert die mindestens eine Eingabe/Ausgabe-Einheit abwechselnd mit der ersten und der zweiten Adresse, die so gewählt sind, daß sie im Direktabbildungs-Cache kollidieren. Dies ermöglicht, daß jeder Cache-Fehltreffer, der von einem Register der Eingabe/Ausgabe- Einrichtung aufgefüllt wird, nützliche Information vermittelt und gleichzeitig garantiert, daß der im Cache gespeicherte Wert nicht "veraltet" ist.
- Ein erfindungsgemäßes Verfahren für den Zugriff auf Eingabe/Ausgabe- Einrichtungen über große Direktabbildungs-Caches beinhaltet das Adressieren des Direktabbildungs-Caches, des Hauptspeichers und der mindestens einen Eingabe/Ausgabe-Einrichtung mit Adressen in einer gemeinsamen Form. Die mindestens eine Eingabe/Ausgabe-Einrichtung hat mindestens ein Register, das abwechselnd mit einer ersten und einer zweiten Adresse adressiert wird, die so gewählt sind, daß sie im Direktabbildungs-Cache kollidieren.
- Was durch das Vorstehende und weitere Vorteile und Merkmale erreicht wird, wird für den wohl Fachmann deutlicher, nachdem er sich mit der nachfolgenden detaillierteren Beschreibung der Erfindung zusammen mit den Zeichnungen näher beschäftigt hat, in denen:
- Fig. 1 ein Blockdiagramm eines erfindungsgemäßen Systems darstellt,
- Fig. 2 ein detaillierteres Blockdiagramm eines Teils des Systems aus Fig. 1 darstellt;
- Fig. 3 ein Diagramm eines Speicheradressen-Formats für das System der Figuren 1 und 2 ist;
- Fig. 4 ein Diagramm ist, das zeigt, wie Zeilen eines Caches auf einen Hauptspeicher im in den Figuren 1 und 2 gezeigten System abgebildet werden;
- Fig. 5 ein Flußdiagramm ist, das die Arbeitsweise einer Form des erfindungsgemäßen Verfahrens mit dem System aus Figuren 1 und 2 zeigt;
- Fig. 6 ein weiteres Flußdiagramm ist, das die Arbeitsweise einer weiteren Form des erfindungsgemäßen Verfahrens mit dem System aus Figuren 1 und 2 zeigt.
- Nun wird auf die Zeichnungen Bezug genommen, insbesondere auf Fig. 1; dort ist ein System 10 gezeigt, das bei der vorliegenden Erfindung verwendet wird. Das System 10 beinhaltet eine Zentraleinheit 12, die mit einem Direktabbildungs- Cache 14 über einen Adreßbus 16 und einen Datenbus 18 verbunden ist. Der Cache 14 umfaßt einen First-level-Cache 20, der über einen Adreßbus 24 und einen Datenbus 26 mit einem Second-level-Cache 22 verbunden ist. Der Cache 14 könnte auch mit einem einstufigen Cache oder mit einem Cache mit mehr als zwei Stufen ausgeführt werden. Der Second-level-Cache 22 des Caches 14 ist mit einem Adreßbus 28 und einem Datenbus 30 über einen Adreßbus 32 und einen Datenbus 34 verbunden. Die Adreß- und Datenbusse 28 und 30 sind mit einem Speicher 36 und einer Eingabe/Ausgabe-Einrichtung 41 über einen Adreßbus 40, einen Datenbus 42 bzw. einen Adreßbus 44 und einen Datenbus 46 verbunden. Im System 10 ist die Zugriffszeitverzögerung zwischen der Zentraleinheit 12 und dem Cache 14 wesentlich geringer als die Zugriffszeitverzögerung zwischen dem Cache 14 und dem Speicher 36. Für einen erfolgreichen Zugriff oder "Treffer" ist beispielsweise beim Frist-level-Cache ein Zyklus nötig. Für einen Fehltreffer beim First-level-Cache und einen Treffer beim Second-level-Cache wären 10 Zyklen nötig. Für einen Fehltreffer beim Second-level-Cache, wofür ein Zugriff auf Speicher 36 erforderlich wäre, wären 100 bis 200 Zyklen nötig. Bei diesen Verhältnissen wird einen Zykluszeit von 2 Nanosekunden angenommen. Wenn die Basiszykluszeit abfällt, könnte das Verhältnis von 1:10:100 beispielsweise auf 1:30:1000 ansteigen. Eine Gleitkomma-Einheit (FPU) 48 ist mit der Zentraleinheit 12 über einen Bus 49 verbunden.
- In der Praxis ist das System 10 mit einem "integrierten" Prozessor ausgeführt, d.h. die Zentraleinheit 12, die Gleitkomma-Einheit 48 und der First-level-Cache 20 sind zusammen auf einem einzigen IC-Chip 21 vorgesehen. Wenn dies bei Hochgeschwindigkeitstechnologie angewendet wird, wie beispielsweise bei emittergekoppelten Logikschaltungen (ECL) oder bei einem Galliumarsenid- (GaAs) Halbleiter-IC, wird eine extrem niedrige Zykluszeit geschaffen, d.h. ein extrem schneller Computer. Es ist leider viel schwieriger, die Latenzzeit des Zugriffs auf den Hauptspeicher proportional zu reduzieren. Es scheint sich daher allgemein zu bewahrheiten, daß das, was ein Cache-Fehltreffer ausgedrückt in der Anzahl an verschwendeten Befehlszyklen jeweils kostet, sich allmählich verschlimmert. In der Technologie der späten 70er Jahre kostete ein Cache-Fehltreffer ungefähr eine Befehlszeit. Bei der gegenwärtigen Technologie kostet ein Cache-Fehltreffer ungefähr 10 Befehlszeiten. In der absehbaren Zukunft werden Cache-Fehltreffer wohl 100 bis 1000 Befehlszeiten kosten.
- Um einen Teil dieser verschwendeten Zeit zu verbergen bzw. zu vermeiden, verwendet das System 10 einen großen Second-level-Cache 22 zwischen dem Zentraleinheit-Chip 12 und dem Hauptspeicher 36. Es kann sich eine vernünftige Zugriffszeit von der Zentraleinheit 12 auf den Cache 22 ergeben, da der Second- level-Cache 22 klein genug ist, um in teurer Technologie gebaut zu sein. Die Zeilen 50 des Second-level-Caches (Fig. 3) können groß genug gemacht werden, so daß die effektive Bandbreite vom Hauptspeicher 36 groß genug ist, um die Anforderungen der Zentraleinheit 12 zu erfüllen, vorausgesetzt, der Second-level- Cache 22 ist ebenfalls groß genug, um eine ausreichend hohe Trefferrate aufzuweisen.
- Studien haben ergeben, daß man, wenn die Caches groß werden, bei einer gegebenen Investition eine bessere Leistung erhält, wenn eher große Direktabbildungs-Caches 20 und 22 verwendet werden als nicht ganz so große Assoziativ-Caches. Die erhöhte Trefferrate von Assoziativ-Caches ist unbedeutend, die Erhöhung der Cache-Zugriffszeit ist dagegen von Bedeutung.
- Um die Caches 20 und 22 schnell zu machen, ist es wünschenswert, zu viel Komplexität zu vermeiden. Eine Quelle der Komplexität ist, daß die Kohärenz zwischen dem Cache-Inhalt und dem tatsächlichen Wert der Daten erhalten bleiben muß. In einem Multiprozessorsystem müssen die vielen einbezogenen Caches irgendwie in Übereinstimmung gehalten werden. Es gibt jedoch viele Gründe, warum man lieber einen Einzelprozessor bauen würde, denn bei einem Einzelprozessor ist es nicht nötig, die Caches von mehreren Zentraleinheiten in Übereinstimmung zu halten. Es ist jedoch immer noch notwendig, die Cache- Übereinstimmung aufrechtzuhalten, wenn das System Eingabe/Ausgabe-Einrichtungen 41 aufweist, die als Speicherzellen auftreten, d.h. Speicherzellen, deren Werte sich ändern können, ohne daß sie von der Zentraleinheit 12 über den Cache 14 beschrieben werden. Wenn dies ohne übermäßige Komplexität der Hardware erreicht werden kann, wird der Preis und/oder die Leistung des Systems 10 sich verbessern.
- Im System 10, decodiert das Eingabe/Ausgabe-Interface 38 physikalische Speicheradressen und reagiert auf Adressen in bestimmten Bereichen unter Verwendung mindestens eines Registers 39. Jedes Register 39 einer Eingabe/Ausgabe-Einrichtung reagiert auf eine von zwei unterschiedlichen physikalischen Adressen, die so gewählt sind, daß sie im Datencache 14 kollidieren. Die Eingabe/Ausgabe-Software wechselt zwischen den beiden Adressen für das Register 39 ab, anstatt wie bei bekannten Systemen zwischen einer Einrichtungs-Registeradresse und einer reservierten Bereichs-Adresse abzuwechseln. Das bedeutet, daß jeder Auffüll- oder Zurückschreib-Vorgang des Caches 14 "nützlich" ist in dem Sinn, daß der Vorgang das Register 39 der betreffenden Einrichtung referenziert. Diese Lösung arbeitet ohne Veränderungen der Befehlsarchitektur und ist einfach durchzuführen und zu programmieren. (Lese- oder Schreib-) Abfragen benötigen nur eine Cache-Wiederauffüll-Latenzzeit. Die Leseübertragung bei programmierter Eingabe/Ausgabe geht bei voller Speichersystem-Bandbreite vor sich.
- Das Eingabe/Ausgabe-Interface 38 so einzurichten, daß es auf diese Weise reagiert, ist nicht schwierig. Da der Direktabbildungs-Cache 14 eine Potenz von 2 groß ist, kann jedes Paar von Adressen kollidieren, die in mindestens einem Bit, das eine höhere Zahl als der Basis-2-Logarithmus der Größe des Caches 14 aufweist, unterschiedlich sind. Das Eingabe/Ausgabe-Interface 38 ignoriert ein solches Adreßbit, wie das hochwertige Bit des Eingabe/Ausgabe-Bereichs des physikalischen Adreßraums, um dieses Ergebnis zu erzielen. Wenn das zu ignorierende Bit sorgfältig ausgewählt wird, braucht weder der Interface-Hardware 38 noch der Eingabe/Ausgabe-Software die tatsächliche Größe des Caches 14 bekannt zu sein.
- Fig. 2 zeigt eine Form der Hardware, mit der diese Art der Adressierung durchgeführt werden kann. Ein Adressenerkenner 45 ist mit dem Adreßbus 28 über einen Bus 47 verbunden. Die Adressen auf dem Adreßbus 28 werden an einen Vergleicher 49 geliefert, wo sie mit einem konstanten Wert bbxbbbbb, der die Adresse des Registers 39 darstellt, verglichen werden, wobei das Bit "x" des Werts einen Wert "nicht beachten" (don't care) darstellt, so daß es in der Adresse ignoriert wird. Der Ausgang des Vergleichers 49 ist als Steuereingang geschaltet, um das Register 39 freizugeben. Das bedeutet, daß zwei unterschiedliche Adressen auf dem Adreßbus 28 das Register 39 auswählen, so daß die Daten auf dem Datenbus 30 über das Register 39 an die Eingabe/Ausgabe-Einrichtung 41 geliefert werden. Obwohl ein einziges Register 39 für die Erfindung geeignet ist, kann das Register 39 auch als eine große Anzahl von Registern in Form eines Pufferspeichers ausgeführt sein, so daß das Register 39 viele Male für eine einzige Eingabe/Ausgabe-Einrichtung 41 repliziert werden kann.
- Figuren 3 und 4 zeigen ein Speicheradressen-Format 52, das im System 10 verwendet wird, und wie die Zeilen 50 des Caches 14 auf den Hauptspeicher 36 im System 10 abgebildet werden. Das Speicheradressen-Format 52 weist ein 12-Bit- Kennzeichnungsfeld (Tag-Feld) 54, ein 12-Bit-Zeilennummernfeld 56 und ein 8-Bit Byte-Offset-Feld 58 auf. Wie gezeigt ist, werden die Cache-Zeilen 50 mit den Nummern 0 bis 4095 auf den Hauptspeicher-Zeilen 60 mit den Nummern 0 bis 4095, 4096 bis 8191 usw. abhängig von deren Tag 62 abgebildet. Die Zeilen 50 und 60 sind 256-Byte-Zeilen, die ein 8-Bit Byte-Offset Feld 58 benötigen. Das 4096-Zeilen-Cache 14 erfordert ein 12-Bit-Zeilennummernfeld 56. Dieses Speicheradressen-Format ist für die Arbeitsweise der Erfindung kennzeichnend, es könnte jedoch auch eine große Vielzahl von anderen Speicheradressen-Formaten verwendet werden.
- Die Erfindung wird noch verständlicher, wenn man vier Fälle von Eingabe/Ausgabe-Operationen im System 10 betrachtet: Lesen eines Zustandsregisters, Beschreiben eines Zustandsregisters, Ausführen einer programmierten Eingabe/Ausgabe-Übertragung bei der Dateneingabe und Ausführen einer programmierten Eingabe/Ausgabe-Übertragung bei der Datenausgabe. Bei der folgenden Erörterung sind die Beispiele in der Programmiersprache C gegeben. Die Erfindung kann natürlich auch mit jeder anderen geeigneten Programmiersprache ausgeführt werden.
- Figuren 5 und 6 liefern das Hintergrundverständnis für die Arbeitsweise eines Direktabbildungs-Write-back-Caches, das nötig ist, um verstehen zu können, wie programmierte Eingabe/Ausgabe-Operationen von der Arbeitsweise eines Caches abhängen. Fig. 5 ist ein Flußdiagramm, das die Schritte einer Leseoperation vorn Direktabbildungs-Cache 14 unter Einsatz von Write-back zeigt. Die von der Zentraleinheit 12 gelieferte Zeilennummer 56 und Kennzeichnung (Tag) 54 von Adresse 52 werden in Schritt 70 verwendet, um die geeignete Zeile 50 aus dem Cache 14 auszuwählen. Die Kennzeichnung der zu lesenden Adresse wird im Schritt 72 mit der im Cache 14 gefundenen Kennzeichnung 62 verglichen. Wenn im Schritt 74 die Kennzeichnungen übereinstimmen, wird im Schritt 76 die Zeiennummer 56 aus dem Cache 14 mit dem Byte-Offset 58 zur Wahl (Schritt 78) von Bytes aus der spezifischen Zeile 50 des Caches 14 verwendet. Wenn in Schritt 74 die Kenn zeichnungen nicht übereinstimmen, wird im Schritt 80 ein Test nach einer "schlechten" Zeile durchgeführt. Eine "schlechte" Zeile ist eine Zeile im Cache 14, deren Wert durch eine Schreiboperation von der Zentraleinheit 12 geändert und der neue Wert noch nicht im Hauptspeicher 36 aktualisiert wurde. Wenn die Zeile 50 "schlecht", also modifiziert, ist, wird die Zeile im Schritt 82 in den Speicher 36 geschrieben. Wenn die Zeile 50 nicht "schlecht" ist oder wenn die Zeile, sofern sie "schlecht" war, in den Speicher geschrieben ist, wird im Schritt 84 eine Zeile 60 vom Speicher 36 erhalten. Die Zeile 60 und die Kennzeichnungen 62 werden im Schritt 86 im Cache 14 gespeichert. Die Zeilennummer 56 vom Cache 14 und das Byte-Offset 58 werden dann verwendet, um wie vorher Bytes aus Zeile 50 beim Schritt 78 auszuwählen. Die ausgewählten Bytes werden dann im Schritt 88 dem Prozessor 12 zurückgegeben.
- Wenn ein einzelnes Register 39 des Eingabe/Ausgabe-Interfaces 38 gelesen wird, führt die Eingabe/Ausgabe-Software folgendes durch:
- int *regaddr;
- int value;
- ...
- value = regaddr[0];
- regaddr = XOR(regaddr, COLLIDEMASK);
- wobei COLLIDEMASK eine Bitmaske mit einem 1-Bit, an dem das Eingabe/Ausgabe-Interface 38 das physikalische Adreßbit ignoriert, und mit 0-Bits an anderen Stellen ist. Die Eingabe/Ausgabe-Software wechselt so zwischen den beiden Ansichten des Interfaces 38 ab und benötigt nie ein zusätzliches Cache- Auffüllen, bis für eine andere Aktivität diese Cache-Zeile 50 benötigt wird.
- Wenn mehrere Register, die in einer einzigen Operation sicher gelesen werden können, gelesen werden, führt die Eingabe/Ausgabe-Software folgendes durch:
- value0 = regaddr[0];
- value1 = regaddr[1];
- value2 = regaddr[2];
- regaddr = XOR(regaddr, COLLIDEMASK);
- Hier ist für die drei Leseoperationen nur ein Cache-Auffüllen nötig, wenn alle drei Register dieselbe Cache-Zeile 50 abbilden. Die Verwendung eines Cachefreien Adreßmechanismus würde dreimaliges Auffüllen nötig machen.
- Wie in Fig. 6 gezeigt ist, ist eine Schreiboperation in den Direktabbildungs- Cache 14 mit einem Write-back ähnlich. Die Zeilennummer 56 und die Kennzeichnung 54 werden in Schritt 90 für das Auswählen der geeigneten Zeile 50 aus dem Cache 14 verwendet. Die Kennzeichnung der zu schreibenden Adresse wird im Schritt 92 mit der im Cache 14 gefundenen Kennzeichnung 62 verglichen. Wenn die Kennzeichnungen im Schritt 94 übereinstimmen, wird die Zeile 50 im Schritt 96 für im Schritt 95 zu schreibende Daten ausgewählt mit dem Byte-Offset 58, um neue Bytes im Schritt 98 in Zeile 50 einzufügen. Wenn im Schritt 94 die Kennzeichnungen nicht übereinstimmen, wird im Schritt 100 ein Test für eine "schlechte" Zeile 50 durchgeführt. Wenn die Zeile 50 "schlecht" ist, wird die Zeile im Schritt 102 in den Speicher 36 geschrieben. Wenn die Zeile 50 nicht "schlecht" ist oder nachdem die Zeile, falls sie "schlecht" war, in den Speicher geschrieben ist, wird eine Zeile 60 vom Speicher 36 im Schritt 104 erhalten. Die Zeile 60 und die Kennzeichnungen 62 werden im Schritt 106 im Cache 14 gespeichert. Die Zeilennummer 56 vom Cache 14 und das Byte-Offset 58 werden dann zum Schreiben von Daten in der Zeile 50 im Schritt 98 und Speichern der Zeile 60 und der Kennzeichnungen 62 im Cache 14 verwendet wie zuvor.
- Wenn die Eingabe/Ausgabe-Software das Register 39 einer Eingabe/Ausgabe-Einrichtung im System 10 beschreibt, führt sie folgendes aus:
- regaddr[0] = value;
- regaddr = XOR(regaddr, COLLIDEMASK);
- value = regaddr[0];
- Die zweite Referenzierung ist nötig, um zu verursachen, daß die Zeile aus dem Cache 14 gelesen wird, da der Cache 14 kein Write-through-Cache ist. Es sei zu bemerken, daß, dadurch daß der normale Cache-Mechanismus verwendet wird und weil die Cache-Zeile größer als das Register 39 ist, das Cache-System unbedingt jede Cache-Zeile 50 lesen wird, bevor sie sie schreibt. Dies hat die doppelte Latenzzeit zur Folge, als sie bei expliziten Cache-Managementbefehlen nötig wäre. Es sei jedoch ebenfalls zu bemerken, daß für den nächsten Schreibzugriff auf das Register 39 wahrscheinlich keine zusätzliche Auffüll-Operation nötig ist, da die zweite Referenzierung zur Folge hat, daß die entsprechende Adresse im Cache 14 gültig ist. Wenn der nächste Zugriff auf das Eingabe/Ausgabe-Interface 38 eine Lesereferenz wäre und der Inhalt des Registers 39 der Einrichtung sich in der Zwischenzeit ändern könnte, muß diese Adresse nochmals geändert werden. Wie im Fall "Lesen" kann, wenn mehrere, sich dieselbe Cache-Zeile 50 teilende Register sicher sofort beschrieben werden können, die Adressenänderung zeitlich verschoben werden, wodurch sich der Overhead amortisiert.
- Ein Beispiel für eine programmierten Eingabe/Ausgabe-Lesedatenübertragung ist das Lesen eines Puffers aus einem Platten-Controller. Bei herkömmlichen programmierten Eingabe/Ausgabe-Designs ist das Datenpufferregister der Einrichtung ein Wort breit. Für die beste Leistung wird bei der vorliegenden Erfindung stattdessen ein Pufferregister verwendet, das so breit wie eine Cache-Zeile so ist. Dieses Pufferregister kann wie N nebeneinander liegende Register behandelt werden mit N = Zeilenbreite/Wortbreite. Um einen Plattenpuffer zu übertragen, könnte man schreiben:
- int buffer [BUFERSIZE];
- linewords = LINESIZE/WORDSIZE;
- for (i = 0; i < BUFERSIZE; i += linewords) {
- for (j = 0, j < linewords; j++) {
- buffer[i+j] = regaddr[j],
- }
- regaddr = XOR(regaddr, COLLIDEMASK);
- }
- Die innere Schleife benötigt eine Cache-Auffüllung für jede Instanz der gesamten inneren Schleife (nicht jede Iteration) und überträgt eine Datenzeile von der Einrichtung zu einem Speicherpuffer. Es sollte angestrebt werden sicherzustellen, daß der Puffer nicht mit dem Register der Einrichtung kollidiert, zumindest im Second-level-Cache 22. Da alle Cache-Auffüllungen nütztliche Daten betreffen, erfolgt die Übertragung mehr oder weniger über die ganze verfügbare Bandbreite.
- Bei einer programmierten Eingabe/Ausgabe-Schreibdatenübertragung wie dem Beschreiben eines Plattenpuffers, vorausgesetzt ein Write-back-Cache ist vorhanden, wird das folgende ausgeführt;
- int buffer[BUFERSIZE];
- linewords = LINESIZE/WORDSIZE;
- for (i = 0; i < BUFERSIZE; i += linewords) {
- for (j = 0, j < linewords; j++) {
- regaddr[j] = buffer[i+j];
- }
- regaddr = XOR(regaddr, COLLIDEMASK);
- }
- dummy = regaddr[0];
- /* cause "dirty miss" on last line */
- Ein "dirty miss" (schlechter Fehltreffer) ist eine Referenzierung des Caches 14, der vom derzeitigen Inhalt des Caches nicht genüge geleistet werden kann, wobei die Zeile, die für das Halten des referenzierten Wortes, wenn es aus dem Hauptspeicher geholt worden ist, verwendet wird, gegenwärtig "schlecht" ist. Das heißt, die Zeile enthält einen Wert, der in den Hauptspeicher 36 zurückgeschrieben werden muß, bevor die Zeile für das Halten des für die gegenwärtige Referenzierung benötigten Wertes verwendet werden kann. Da das Cache-System bei jedem ersten Beschreiben jeder neuen Cache-Zeile 50 auffüllt, "vergeuden" auf diese Weise durchgeführte Schreibübertragungen ungefähr die Hälfte der Speicherbandbreite, indem sie unnütze Leseoperationen aus dem Register 39 der Einrichtung 41 durchführen. Diese Leistung ist schlechter als die mit expliziten Cache-Managementbefehlen erreichte Leistung, bei denen keine verschwendeten Leseoperationen auftreten, aber besser als die mit dem Verfahren des reservierten Bereichs erzielte Leistung, bei der zwei verschwendete Leseoperationen pro beschriebene Zeile auftreten. Es ist auch zu bemerken, daß das Datenpufferregister der Einrichtung so konzipiert sein muß, daß diese Leseoperationen zum Cache-Auffüllen keine Probleme macht. So ein Problem kann manchmal beim praktischen Aufbau von Einrichtungs-Registern auftreten und eine Lesereferenzierung dann "Nebenwirkungen" haben, d.h. das Lesen des Registers verursacht irgendeine Operation neben dem einfachen Zurückgeben des Wertes. In einigen Fällen sind die Nebenwirkungen die Folge von mangelhaften Designentscheidungen, wie wenn beispielsweise das Lesen aus dem Register verursacht, daß die Einrichtung physikalisch zu operieren beginnt. Eine ganz natürliche Lösung ist jedoch oft die Verwendung eines Datenregisters als ein "Fenster" zu einem ganzen Puffer. Jedes Mal, wenn das Register gelesen wird, geht es automatisch durch den Puffer. Die obigen Beispiele gehen in der Tat von so einer Organisation aus. Im Fall der Lese-Übertragung, gibt es kein Problem, weil wir es so einrichten, daß genau die richtige Anzahl der Lesevorgänge vom Register in der richtigen Reihenfolge vorliegen. Im Fall der Schreib-Übertragung führen wir genau die richtige Anzahl an Schreibvorgängen durch, der Cache kann jedoch auch Auffüll- Leseoperationen bei jedem der "dirty misses" durchführen. Wir müssen daher das Schreibpufferregister so konzipieren, daß Lesereferenzierung, ungleich der Schreibreferenzierungen, nicht durch den darunterliegenden Pufferspeicher hindurch muß.
- Es sollte für den Fachmann deutlich sein, daß verschiedene Änderungen in der Form und den Details der Erfindung, so wie sie gezeigt und beschrieben wurde, gemacht werden können. Solche Änderungen sollen in den Schutzumfang der nachfolgenden Ansprüche fallen.
Claims (19)
1. Datenverarbeitungssystem mit einer Zentraleinheit (CPU, 12), einem
Hauptspeicher (36), mindestens einer Eingabe/Ausgabe-Einrichtung (41) und
einem Direktabbildungs-Cache (20, 22), der zwischen die Zentraleinheit und den
Hauptspeicher und zwischen die Zentraleinheit und die mindestens eine
Eingabe/Ausgabe-Einrichtung geschaltet ist, wobei die mindestens eine
Eingabe/Ausgabe-Einrichtung mindestens ein Register (39) aufweist, das mit einer ersten und
einer zweiten Adresse adressiert werden kann, wobei die erste und die zweite
Adresse so gewählt sind, daß sie im Direktabbildungs-Cache kollidieren, wobei der
Direktabbildungs-Cache, der Hauptspeicher und die mindestens eine
Eingabe/Ausgabe-Einrichtung mit Adressen in einer gemeinsamen Form adressiert werden
können und wobei die Zentraleinheit gesteuert durch ein Eingabe/Ausgabe-
Programm zur Adressierung der mindestens einen Eingabe/Ausgabe-Einrichtung
alternierend mit der ersten und zweiten Adresse betrieben werden kann, die so
gewählt sind, daß sie im Direktabbildungs-Cache kollidieren.
2. Datenverarbeitungssystem nach Anspruch 1, wobei der
Direktabbildungs-Cache einen Cache einer ersten Stufe (20) und einen Cache einer zweiten
Stufe (22) umfaßt.
3. Datenverarbeitungssystem nach Anspruch 2, wobei eine Zugriffszeit
zwischen der Zentraleinheit (12) und dem Cache der ersten Stufe (20) im Vergleich
zu einer Zugriffszeit zwischen dem Cache der zweiten Stufe (22) und dem
Hauptspeicher kurz ist.
4. Datenverarbeitungssystem nach Anspruch 2, das des weiteren eine
Gleitkomma-Einheit (48) umfaßt, die mit der Zentraleinheit (12) verbunden ist.
5. Datenverarbeitungssystem nach Anspruch 4, wobei die Zentraleinheit
(12), die Gleitkomma-Einheit (48) und der Cache der ersten Stufe (20) zusammen
auf einem einzigen integrierten Schaltungschip (IC-Chip, 21) ausgeführt sind.
6. Datenverarbeitungssystem nach Anspruch 1, wobei die Zentraleinheit
(12) mit dem Direktabbildungs-Cache (20, 22) über einen ersten Adreßbus (16, 24)
und einen ersten Datenbus (18, 26) verbunden ist und der Direktabbildungs-Cache
(20, 22) mit dem Hauptspeicher (36) und der mindestens einen Eingabe/Ausgabe-
Einrichtung (41) über einen zweiten Adreßbus (28) und einen zweiten Datenbus
(30) verbunden ist.
7. Datenverarbeitungssystem nach Anspruch 1, wobei das System mit
Speicheradressen arbeiten kann, die ein Format mit einem Kennzeichnungsfeld
(54), einem Zeilenfeld (56) und einem Byte-Offset-Feld (58) aufweisen.
8. Datenverarbeitungssystem nach Anspruch 7, wobei die
Speicheradressen für die mindestens eine Eingabe/Ausgabe-Einrichtung (41) eine Bitposition
aufweisen, die von der mindestens einen Eingabe/Ausgabe-Einrichtung ignoriert
wird, und die Zentraleinheit mit einer Bitmaske arbeitet, um die von der mindestens
einen Eingabe/Ausgabe-Einrichtung ignorierte Bitposition zur Adressierung der
mindestens einen Eingabe/Ausgabe-Einrichtung alternierend mit der ersten und
der zweiten Adresse zu verwenden.
9. Datenverarbeitungssystem nach Anspruch 8, wobei der Cache (20, 22)
und ein Register des mindestens einen Eingabe/Ausgabe-Registers (39) eine
gleiche Zeilenlänge aufweisen.
10. Datenverarbeitungssystem nach Anspruch 1, wobei die mindestens eine
Eingabe/Ausgabe-Einrichtung (41) mit dem Direktabbildungs-Cache (20, 22) über
einen Adreßbus (28) und einen Datenbus (30) verbunden ist und wobei das
System des weiteren einen Adressenerkenner (45) aufweist, der mit dem Adreßbus
verbunden ist und einen Vergleicher (49) enthält, der so geschaltet ist, daß er die
Adressen auf dem Adreßbus als eine erste Eingabe sowie einen Wert, der den
mindestens ein Register adressiert, als eine zweite Eingabe zum Vergleich mit der
ersten Eingabe erhält, wobei der Vergeicher so aufgebaut ist, daß er ein Bit in den
Adressen ignoriert, wobei ein Ausgang des Vergleichers als ein Steuereingang in
das mindestens eine Register (39) geschaltet ist und wobei das mindestens eine
Register mit dem Datenbus verbunden ist.
11. Datenverarbeitungssystem nach Anspruch 1, wobei das mindestens
eine Register (39) der mindestens einen Eingabe/Ausgabe-Einrichtung (41) ein
Pufferspeicher mit einer Vielzahl von Registern ist.
12. Adressierungsverfahren für ein Datenverarbeitungssystem, wobei das
Datenverarbeitungssystem eine Zentraleinheit (CPU, 12), einen Hauptspeicher
(36), mindestens eine Eingabe/Ausgabe-Einrichtung (41) und einen
Direktabbildungs-Cache (20, 22), der zwischen die Zentraleinheit und die mindestens eine
Eingabe/Ausgabe-Einrichtung geschaltet ist, enthält, wobei die mindestens eine
Eingabe/Ausgabe-Einrichtung mindestens ein Register (39) aufweist; und wobei
das Verfahren die folgenden Schritte umfaßt:
Adressieren des Direktabbildungs-Caches, des Hauptspeichers und der
mindestens einen Eingabe/Ausgabe-Einrichtung unter Verwendung von Adressen
mit einer gemeinsamen Form;
Anpassen des Registers, so daß er von einer ersten und einer zweiten
Adresse adressiert werden kann, und Auswählen der ersten und der zweiten
Adresse, so daß sie im Direktabbildungs-Cache kollidieren;
sukzessives Adressieren der Eingabe/Ausgabe-Einrichtung durch die
Zentraleinheit durch die Steuerung eines Eingabe/Ausgabe-Programms alternierend mit
der ersten und der zweiten Adresse.
13. Adressierungsverfahren nach Anspruch 12, das des weiteren den Schritt
des Zurverfügungstellens des Direktabbildungs-Caches als einen Cache der ersten
Stufe (20) und einen Cache der zweiten Stufe (22) umfaßt.
14. Adressierungsverfahren nach Anspruch 13, das des weiteren den Schritt
des Zurverfügungstellens einer Zugriffszeit zwischen der Zentraleinheit und dem
Cache der ersten Stufe umfaßt, die im Vergleich zu einer Zugriffszeit zwischen dem
Cache der zweiten Stufe und dem Hauptspeicher klein ist.
15. Adressierungsverfahren nach Anspruch 12, das den Schritt der
Adressierung des Caches, des Hauptspeichers und des mindestens einen Registers der
mindestens einen Eingabe/Ausgabe-Einrichtung mit Speicheradressen umfaßt, die
ein Format mit einem Kennzeichnungsfeld (54), einem Zeilenfeld (56) und einem
Byte-Offset-Feld (58) aufweisen.
16. Adressierungsverfahren nach Anspruch 15, wobei die Speicheradressen
für das mindestens eine Register (39) der mindestens einen Eingabe/Ausgabe-
Einrichtung (41) eine Bitposition aufweisen, die von dem mindestens einen
Register der mindestens einen Eingabe/Ausgabe-Einrichtung ignoriert wird, und
wobei das Verfahren des weiteren den Schritt des Anwendens der
Speicheradressen mit einer Bitmaske umfaßt, um die von dem mindestens einen Register
der mindestens einen Eingabe/Ausgabe-Einrichtung ignorierten Bitposition zur
Adressierung des mindestens einen Registers der mindestens einen
Eingabe/Ausgabe-Einrichtung alternierend mit der ersten und der zweiten Adresse zu
verwenden.
17. Adressierungsverfahren nach Anspruch 16, das den Schritt des
Zurverfügungstellens des Caches (20, 22) und des mindestens einen Registers (39) der
mindestens einen Eingabe/Ausgabe-Einrichtung (41) mit gleichen Zeilen längen
umfaßt.
18. Adressierungsverfahren nach Anspruch 12, das den Schritt der
Adressierung des mindestens einen Registers (39) der mindestens einen
Eingabe/Ausgabe-Einrichtung (41) mit der ersten und der zweiten Adresse beinhaltet, wobei die
Adressen mit einem Wert verglichen werden, der die Adresse des mindestens
einen Registers darstellt, wobei ein Bit in der ersten und in der zweiten Adresse
während dem Adressenvergeich ignoriert wird und wobei das mindestens eine
Register freigegeben wird, wenn der Wert und die Adresse übereinstimmen.
19. Adressierungsverfahren nach Anspruch 12, das den Schritt des
Zurverfügungstellens des mindestens einen Registers als einen Pufferspeicher mit einer
Vielzahl von Registern umfaßt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/459,445 US5253353A (en) | 1990-01-02 | 1990-01-02 | System and method for efficiently supporting access to I/O devices through large direct-mapped data caches |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69027919D1 DE69027919D1 (de) | 1996-08-29 |
DE69027919T2 true DE69027919T2 (de) | 1997-02-20 |
Family
ID=23824801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69027919T Expired - Fee Related DE69027919T2 (de) | 1990-01-02 | 1990-11-30 | Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher |
Country Status (5)
Country | Link |
---|---|
US (1) | US5253353A (de) |
EP (1) | EP0436305B1 (de) |
JP (1) | JPH04102948A (de) |
KR (1) | KR910014816A (de) |
DE (1) | DE69027919T2 (de) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0461926B1 (de) * | 1990-06-15 | 1998-09-02 | Compaq Computer Corporation | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien |
US5359723A (en) * | 1991-12-16 | 1994-10-25 | Intel Corporation | Cache memory hierarchy having a large write through first level that allocates for CPU read misses only and a small write back second level that allocates for CPU write misses only |
DE4410060B4 (de) * | 1993-04-08 | 2006-02-09 | Hewlett-Packard Development Co., L.P., Houston | Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse |
US5636365A (en) * | 1993-10-05 | 1997-06-03 | Nec Corporation | Hierarchical buffer memories for selectively controlling data coherence including coherence control request means |
JPH07210537A (ja) * | 1993-12-10 | 1995-08-11 | Advanced Micro Devicds Inc | コンピュータシステム |
US5905997A (en) * | 1994-04-29 | 1999-05-18 | Amd Inc. | Set-associative cache memory utilizing a single bank of physical memory |
US5826052A (en) * | 1994-04-29 | 1998-10-20 | Advanced Micro Devices, Inc. | Method and apparatus for concurrent access to multiple physical caches |
DE69529250T2 (de) * | 1994-07-01 | 2003-10-30 | Sun Microsystems, Inc. | Rechnersystem mit einem multiplexierten Adressenbus und Pipeline-Schreiboperationen |
JP3127796B2 (ja) * | 1994-10-07 | 2001-01-29 | 松下電器産業株式会社 | 情報記録再生装置 |
US5611074A (en) * | 1994-12-14 | 1997-03-11 | International Business Machines Corporation | Efficient polling technique using cache coherent protocol |
US5687329A (en) * | 1995-09-29 | 1997-11-11 | International Business Machines Corporation | Information handling system including a data bus management unit, an address management unit for isolating processor buses from I/O and memory |
US6122711A (en) | 1997-01-07 | 2000-09-19 | Unisys Corporation | Method of and apparatus for store-in second level cache flush |
US6324598B1 (en) | 1999-01-11 | 2001-11-27 | Oak Technology | Software enlarged tag register and method thereof for noting the completion of a DMA transfer within a chain of DMA transfers |
EP1111511B1 (de) * | 1999-12-06 | 2017-09-27 | Texas Instruments France | Cachespeicher mit mehreren Füllungsmoden |
SE517705C2 (sv) * | 1999-12-08 | 2002-07-09 | Axis Ab | I/O Metod och anordning för optiska lagringsmedia |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4802085A (en) * | 1987-01-22 | 1989-01-31 | National Semiconductor Corporation | Apparatus and method for detecting and handling memory-mapped I/O by a pipelined microprocessor |
-
1990
- 1990-01-02 US US07/459,445 patent/US5253353A/en not_active Expired - Lifetime
- 1990-11-30 DE DE69027919T patent/DE69027919T2/de not_active Expired - Fee Related
- 1990-11-30 EP EP90313057A patent/EP0436305B1/de not_active Expired - Lifetime
- 1990-12-27 JP JP2408247A patent/JPH04102948A/ja active Pending
- 1990-12-31 KR KR1019900023045A patent/KR910014816A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
EP0436305A2 (de) | 1991-07-10 |
JPH04102948A (ja) | 1992-04-03 |
KR910014816A (ko) | 1991-08-31 |
EP0436305B1 (de) | 1996-07-24 |
EP0436305A3 (en) | 1992-07-29 |
DE69027919D1 (de) | 1996-08-29 |
US5253353A (en) | 1993-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3687307T2 (de) | Computeranordnungen mit cache-speichern. | |
DE3586389T2 (de) | Dynamisch zugeordnete lokale/globale speicheranordnung. | |
DE69132186T2 (de) | Cache-Speicherverwaltungsanordnung | |
DE69025302T2 (de) | Hochleistungsrasterpuffer- und -cachespeicheranordnung | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE69327387T2 (de) | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung | |
DE69132300T2 (de) | Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen | |
DE68924306T2 (de) | Mehrprozessorrechneranordnungen mit gemeinsamem Speicher und privaten Cache-Speichern. | |
DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
DE3650532T2 (de) | Speicher mit programmierbarem Zugang | |
DE3782335T2 (de) | Speichersteuersystem. | |
DE69130086T2 (de) | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien | |
DE69228679T2 (de) | Speicher, speichersteuerungsvorrichtung und speichersteuerungsverfahren zur anwendung mit einem copy-back-cachespeichersystem | |
DE69317729T2 (de) | Cache-Etikettenspeicher | |
DE69701078T2 (de) | Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedener Prozessoren | |
DE69900797T2 (de) | Cache-Speicherkohärenzprotokoll mit unabhängiger Implementierung von optimierten Cache-Speicheroperationen | |
DE3724317C2 (de) | ||
DE69127111T2 (de) | Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher | |
DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
DE69715328T2 (de) | System und Verfahren zur Parallelisierung der Durchführung von Speichertransaktionen mittels mehreren Speichermodellen | |
DE3689488T2 (de) | Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher. | |
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE69027919T2 (de) | Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher | |
DE69029173T2 (de) | Mikroprozessor | |
DE68923863T2 (de) | Ein-/Ausgabecachespeicherung. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8328 | Change in the person/name/address of the agent |
Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN |
|
8339 | Ceased/non-payment of the annual fee |