DE3588166T2 - Entwurf einer Cache-Hierarchie zur Anwendung in einer Speicherverwaltungseinheit - Google Patents
Entwurf einer Cache-Hierarchie zur Anwendung in einer SpeicherverwaltungseinheitInfo
- Publication number
- DE3588166T2 DE3588166T2 DE3588166T DE3588166T DE3588166T2 DE 3588166 T2 DE3588166 T2 DE 3588166T2 DE 3588166 T DE3588166 T DE 3588166T DE 3588166 T DE3588166 T DE 3588166T DE 3588166 T2 DE3588166 T2 DE 3588166T2
- Authority
- DE
- Germany
- Prior art keywords
- cache
- logical
- virtual
- address
- 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
- 238000013461 design Methods 0.000 title description 17
- 230000015654 memory Effects 0.000 claims description 126
- 238000005192 partition Methods 0.000 claims description 54
- 238000013519 translation Methods 0.000 claims description 16
- 230000014616 translation Effects 0.000 description 15
- 230000008901 benefit Effects 0.000 description 13
- 238000013507 mapping Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 9
- 238000000034 method Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 239000000872 buffer Substances 0.000 description 4
- 238000012937 correction Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 244000309464 bull Species 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 102100027152 Dihydrolipoyllysine-residue acetyltransferase component of pyruvate dehydrogenase complex, mitochondrial Human genes 0.000 description 1
- 101001122360 Homo sapiens Dihydrolipoyllysine-residue acetyltransferase component of pyruvate dehydrogenase complex, mitochondrial Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 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
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
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
- Diese Erfindung bezieht sich auf Verbesserungen in Computerspeichersystemen und insbesondere auf Verbesserungen in Cache-Speichern, die Computerspeichersystemen zugeordnet sind.
- Wie in einem Bericht über einige Aspekte des Cache-Speicherentwurfs von A. J. Smith, "Cache Memories", Computing Surveys, Bd. 14, Nr. 3, September 1982, S. 473-530, ausgeführt ist, sind Cache-Speicher kleine Hochgeschwindigkeitsspeicher, die in modernen, Mittel- und Hochgeschwindigkeitscomputern verwendet werden, um diejenigen Abschnitte der Inhalte des Hauptspeichers zu halten, von denen angenommen wird, daß sie derzeit verwendet werden. Da auf Befehle und Daten in Cache-Speichern üblicherweise in 10 bis 25 % der Zeitspanne zugegriffen werden kann, die für einen Zugriff auf den Hauptspeicher benötigt wird, ermöglichen Cache-Speicher eine wesentliche Steigerung der Ausführungsgeschwindigkeit der Maschine.
- Somit muß eine Zentraleinheit (CPU) eines Computers mit einem Cache-Speicher für eine wesentlich kleinere Zeitspanne darauf warten, daß Befehle und Operanden geholt und/oder gespeichert werden. Zum Beispiel kann in typischen großen Hochgeschwindigkeitscomputern (z. B. Amdahl 470V/7, IBM 3033) auf den Hauptspeicher in 300 bis 600 ns zugegriffen werden, während Informationen aus dem Cache in 50 bis 100 ns erhalten werden können. Da die Leistung solcher Maschinen in der Befehlsausführungsrate bereits durch die Cache-Speicherzugriffszeit beschränkt ist, würde das Fehlen jeglichen Cache-Speichers eine wesentliche Senkung der Ausführungsgeschwindigkeit bewirken.
- Nahezu allen modernen großen Computersysteme besitzen Cache- Speicher; z. 8. Amdahl 470, IBM 3081, 3033, 370/168, 360/195, Univac 1100/80 sowie Honeywell 6/80. Ferner besitzen viele mittelgroße und kleine Maschinen Cache-Speicher; z. B. DEC VAX 11/780, 11/750 und PDP-11/70 sowie die Apollo, die den Mikroprozessor Motorola 68000 verwendet. Sogar Mikrocomputer profitieren von einem On-Chip-Cache, da On-Chip-Zugriffszeiten sehr viel kürzer sind als Off-Chip-Zugriffszeiten.
- Der Erfolg der Cache-Speicher wurde mit Bezug auf das "Merkmal der Lokalität" erklärt. Das Lokalitätsmerkmal hat zwei Aspekte, einen zeitlichen und einen räumlichen. Über kurze Zeitspannen verteilt ein Programm seine Speicherzugriffe ungleichmäßig über seinen Adreßraum, während die Abschnitte des Adreßraums, die bevorzugt werden, über lange Zeitspannen ungefähr gleich bleiben. Diese erste Eigenschaft, zeitliche Lokalität oder Lokalität über die Zeit genannt, bedeutet, daß die Informationen, die in naher Zukunft verwendet werden, wahrscheinlich bereits in Verwendung sind. Dieser Verhaltenstyp kann von Programmschleifen erwartet werden, in denen sowohl Daten als auch Befehle wiederverwendet werden. Die zweite Eigenschaft, die räumliche Lokalität, bedeutet, daß die verwendeten Abschnitte des Adreßraums im allgemeinen aus einer relativ kleinen Anzahl einzelner benachbarter Segmente dieses Adreßraums bestehen. Räumliche Lokalität bedeutet dann, daß die Zugriffsorte des Programms in naher Zukunft wahrscheinlich nahe den aktuellen Zugriffsorten liegen. Dieser Verhaltenstyp kann aus dem allgemeinen Wissen über Programme erwartet werden: Verwandte Datenelemente (Variablen, Matrizen) sind üblicherweise zusammenhängend gespeichert, wobei Befehle meist sequentiell ausgeführt werden. Da der Cache-Speicher Segmente der Informationen puffert, die vor kurzem verwendet worden sind, bewirkt die Eigenschaft der Lokalität, daß die benötigten Informationen wahrscheinlich auch im Cache zu finden sind.
- Die Optimierung des Entwurfs eines Cache-Speichers hat im allgemeinen vier Aspekte:
- (1) Maximieren der Wahrscheinlichkeit des Auffindens eines Speicherzugriffsziels im Cache (das Trefferverhältnis);
- (2) Minimieren der Zeitspanne für den Zugriff auf Informationen, die sich tatsächlich im Cache befinden (Zugriffszeit);
- (3) Minimieren der Verzögerung aufgrund eines Fehlgriffs; und
- (4) Minimieren des Verwaltungsaufwands zur Aktualisierung des Hauptspeichers, Aufrechterhalten der Multicache-Konsistenz und dergleichen.
- All dies soll selbstverständlich unter geeigneten Kostenbeschränkungen erreicht werden.
- Es wird insbesondere Bezug genommen auf M. Badel u. a. "Performance evaluation of a cache memory for a minicomputer", Proc. 4th Int. Symp. on Modelling and Performance Evaluation of Computer Systems, Wien, Österreich, Februar 1979; H. Barsamian u. a., "System design considerations of cache memories", Proc. IEEE Computer Society Conference, IEEE, New York, S. 107-110 (1972); D. H. Gibson, "Consideration in block-oriented systems design", Proc. Spring Jt; Computer Conf., Bd. 30, Tompson Books, Washington, D.C., S. 75-80 (1967); und K. R. Kaplan u. a., "Cache-based computer systems", IEEE Computer, Bd. 6, Nr. 3, S. 30-36 (März 1973). Siehe auch D. W. Clark u. a., "The memory system of a high performance personal computer", IEEE Trans. Comput., Bd. TC-3β, Nr. 10, S. 715-733 (Okt. 1981), die die Entwurfseinzelheiten eines echten Cache beschreiben. Siehe auch B. W. Lampson u. a., "A processor for a high-performance personal computer", Proc. 7th Annual Symp. Computer Architecture, ACM, New York, N. Y., S. 146-160 (6-8. Mai).
- Die Beziehung eines Cache-Speichers zur CPU und zum Speicher in einem Computersystem des Standes der Technik ist im Blockschaltbild der Fig. 1 gezeigt. Wie gezeigt, ist somit ein Cache-Speicher 12 gewöhnlich zwischen der CPU 13 und dem Hauptspeicher 14 angeordnet. Ein Sekundärspeicher 17, wie z. B. ein Plattenspeicher oder dergleichen, kann ebenfalls enthalten sein und ist wie gezeigt mit dem Hauptspeicher 14 verbunden.
- In vielen Großrechnern sowie in Minicomputern mit virtuellem Speicher wird der Cache eher mittels realer Adressen als mittels virtueller Adressen adressiert. Beispiele für solche Computer sind der Amdahl 470, der IBM 3081, der Univac 1100/80, der Honeywell 66/80 und der DEC VAX 11/780, 11/750. Dies liegt daran, daß diese Computer mehrere virtuelle Adreß räume besitzen, typischerweise einen je Prozeß. Zum Beispiel besitzt das Betriebssystem seinen eigenen virtuellen Adreßraum, der von denjenigen getrennt ist, die von den Benutzerprozessen verwendet werden. In solchen Maschinen werden die gleichen virtuellen Adressen in unterschiedlichen virtuellen Adreßräumen auf unterschiedliche physikalische Adressen abgebildet; andererseits können unterschiedliche virtuelle Adressen in unterschiedlichen Adreßräumen auf die gleiche physische Adresse abgebildet werden (tatsächlich sind dies die Mechanismen, die es gestatten, Informationen zwischen unterschiedlichen virtuellen Adreßräumen gemeinsam zu nutzen).
- Wenn der Cache in Maschinen mit mehrfachen virtuellen Adreßräumen mittels virtueller Adressen adressiert wird, wird der Cache-Abbildungsmechanismus sehr komplex, da der Abbildungsmechanismus auch den Adreßraum verfolgen muß. Als Folge hiervon bilden die meisten dieser Maschinen älterer Generation zuerst die virtuelle Adresse auf die reale Adresse ab, bevor sie auf die Cache-Abbildung zugreifen. Der Virtuell/Real-Adreßübersetzungsprozeß ist im allgemeinen im Vergleich zur Cache-Zugriffszeit zeitaufwendig und kann hinsichtlich der Leistung zu einem Nadelöhr werden.
- Aufgrund des Problems des mehrfachen virtuellen Adreßraums besitzen nur wenige Computer mit virtuellem Speicher Cache Speicher für virtuelle Adressen. Beispiele für solche Computer sind der MU-5, der S-1, der IBM 801 und der ICL 2900. Der Entwurf eines Cache für virtuelle Adressen wird beschrieben von S. Bederman, "Cache management system using virtual and real tags in the cache directory", IBM Tech. Disclosure Bull., Bd. 21, Nr. 11, 5. 4541 (April 1979) und von A. G. Olbert, "Fast DLAT bad for V = R translations", IBM Tech. Disclosure Bull., Bd. 22, Nr. 4, S. 1434 (September 1979). Es wird deutlich, daß die Erfindung insbesondere geeignet ist für die Verwendung in Verbindung mit Computersystemen wie z. B. denjenigen, die im US-Patent Nr. 4,989,137 mit dem Titel "COMPUTER MEMORY SYSTEM", eingereicht am 12. Juli 1984, und im US-Patent Nr. 4,757,438, mit dem Titel "COMPUTER SYSTEM ENABLING AUTOMATIC MEMORY MANAGEMENT OPERATIONS", eingereicht am 12. Juli 1984, beschrieben sind. Wie dessen Name sagt, wird der Cache für logische Adressen mittels logischer Adressen adressiert, die von der CPU erzeugt werden. Wie in den obenerwähnten US-Patenten Nr. 4,989,137 und 4,757,438 beschrieben ist, ist eine logische Adresse ein Wertepaar (r, Index), wobei "r" die Identifikation eines Bindungs-Registers und "Index" der Index einer Zelle in dem Speicherblock ist, der mit dem Bindungs-Register r verbunden ist. Da keine der bestehenden Maschinen den Begriff logischer Adressen aufweist, besitzen sie keine Cache-Speicher, die mittels logischer Adressen adressiert werden können.
- In der EP-A-0036085 ist die Verwendung einer Operandenzuweisung eines Universalregisters als ein Basisadreßregister offenbart zum Auswählen eines Adreßraums, der dem Universalregister zugeordnet ist, so daß Adreßräume für jeden Operanden leicht gewechselt werden können, ohne daß ein spezieller Befehl erforderlich ist.
- In der US-A-3,902,163 ist ein Datenverarbeitungssystem offenbart, in dem logische Adressen, die von den Programmen verwendet werden, in reale Adressen für die Adressierung des Speichers des Systems unter Verwendung von im Hauptspeicher gespeicherten Übersetzungstabellen übersetzt werden. Jedes Programm besitzt seine eigene Übersetzungstabelle. Die realen Adressen, die durch die Übersetzung erhalten werden, werden vor dem Verarbeiten des Programms in einem schnellen Pufferspeicher gespeichert, um die Zeitspanne zu reduzieren, die für den Programmlauf erforderlich ist. Ein Programmidentifizierer speichert Aufzeichnungen darüber, welche Programme Adressen besitzen, die im Pufferspeicher gespeichert sind.
- Die EP-A-0069250 offenbart ein Datenverarbeitungssystem, das einen Hauptspeicher sowie erste und zweite Ebenen von Cache- Speichern mit einem Übersetzungspuffer zur Unterstützung beim Auffinden bestimmter Einträge im Speicher unter Verwendung virtueller Adressen, realer Adressen und absoluter Adressen enthält. Die Einträge im Cache-Speicher der zweiten Ebene werden gemäß einem Kriterium der letzten Verwendung ersetzt.
- Im Hinblick auf das Obenbeschriebene ist es daher eine Aufgabe der Erfindung, ein verbessertes Cache-Speichersystem zur Verwendung in einem Computerspeichermanagementsystem zu schaffen.
- Es ist eine weitere Aufgabe der Erfindung, einen Cache für logische Adressen zur Verwendung in solchen Computerspeichersystemen zu schaffen.
- Es ist eine weitere Aufgabe der Erfindung, einen Cache für logische Adressen des beschriebenen Typs zu schaffen, der in Verbindung mit einem Cache für virtuelle Adressen in einem solchen Computerspeichersystem verwendet werden kann.
- Diese und weitere Aufgaben, Merkmale und Vorteile werden Fachleuten deutlich beim Lesen der folgenden genauen Beschreibung in Verbindung mit den beigefügten Zeichnungen und den beigefügten Ansprüchen.
- Gemäß der Erfindung wird ein Cache-Speichersystem zur Verwendung mit einer CPU geschaffen, wie es im Anspruch 1 ausgeführt ist.
- Wie erwähnt, wird der Cache für logische Adressen mittels logischer Adressen adressiert, die von der CPU erzeugt werden. Wie in den US-Patenten Nr. 4,989,137 und 4,757,438 beschrieben, ist eine logische Adresse ein Wertepaar (r, Index), wobei "r" die Identifikation eines Bindungs-Registers und "Index" der Index einer Zelle in dem Speicherblock ist, der mit dem Bindungs-Register r verbunden ist.
- Ein Cache-System ist in der MMU enthalten und kann unter Verwendung einer Kombination von zwei der drei Mechanismen, dem "Cache für logische Adressen", dem "Cache für virtuelle Adressen" und dem "Cache für reale Adressen" implementiert werden. Der Cache für logische Adressen erlaubt Cache-Zugriffe mit der kleinsten Verzögerungszeit zwischen der Erzeugung einer logischen Adresse durch die CPU und dem Zugriff auf die adressierte Information im Cache, da der Index in einer logischen Adresse (r, Index) verwendet wird, um auf den Cache zuzugreifen, und da keine Übersetzung der logischen in eine virtuellen Adresse erforderlich ist.
- Der Cache für virtuelle Adressen wird mittels virtueller Adressen adressiert, die durch Übersetzen logischer Adressen erhalten werden und die aus den logische Adressen (r, Index) durch Addieren des Index zur virtuellen Basisadresse, die im Bindungs-Register r gespeichert ist, berechnet werden. Der Cache für reale Adressen wird mittels realer Adressen adressiert, die durch Übersetzen der virtuellen Adressen in reale Adressen erhalten werden.
- Die reale Adresse wird erhalten durch Abbilden der virtuellen Adressen mittels eines Adreßübersetzungsmechanismus wie z. B. einer Seitentabelle. Im Vergleich zum Cache für logische Adressen besitzt der Cache für reale Adressen die größte Zeitverzögerung, da zwei Adreßübersetzungen (die Übersetzungen von der logischen zur virtuellen Adresse und von der virtuellen zur realen Adresse) erforderlich sind, bevor auf den Cache für reale Adressen zugegriffen werden kann.
- In einem Beispiel eines Cache-Speichersystems enthält ein Speichersystem, das einer CPU zugeordnet ist, eine Speichermanagementeinheit und einen Hauptspeicher. Die Speichermanagementeinheit enthält eine Bindungs-Registereinheit zum Verknüpfen des Hauptspeichers mit der CPU und eine Einrichtung, die mehrere Bindungs-Register umfaßt, um logische und virtuelle Adressen zwischen der CPU und dem Hauptspeicher zu übersetzen. Jede logische Adresse enthält ein Registerpaar (r, Index), wobei "r" einen Bindungs-Registeridentifizierer darstellt und "Index" ein Index einer Zelle in einem Speicherblock darstellt, der mit dem von "r" bezeichneten Bindungs-Register verbunden ist. Die Bindungs-Registereinheit enthält ferner einen Cache für logische Adressen, an den logische Adressen angelegt werden, auf die der Cache für logische Adressen antwortet und ausgewählte Informationen zur Verfügung stellt, die in ihm gespeichert sind. Ein Cache für virtuelle Adressen gibt als Antwort auf daran angelegte virtuelle Adressen ausgewählte Informationen wieder, die in ihm gespeichert sind. Es ist eine Einrichtung vorgesehen zum Übersetzen virtueller Adressen in reale Adressen zum Anlegen an den Hauptspeicher, wobei ein Speichermanagementprozessor die Operation der Speichermanagementeinheit steuert.
- Der Cache für logische Adressen umfaßt einen Cache-Speicher, eine Cache-Abbildung sowie ein Bindungsauflösungs-Speicherabbild. Die Cache-Abbildung sowie der Cache-Speicher sind entsprechend der Anzahl der Bindungs-Register des Speichersystems in Partitionen unterteilt. Die Bindungsauflösungs- Speicherabbildung empfängt eine Bindungs-Registeridentifikation der Inhalte ihres Eintrittspunkts in eine Cache-Abbildungspartition sowie eine Cache-Partition. Ferner ist eine Einrichtung vorgesehen, die einen Cache-Treffer oder einen Fehlgriff nach dem Anlegen einer logischen Adresse an die Cache-Abbildung anzeigt.
- Der Cache für virtuelle Adressen umfaßt einen Cache-Speicher sowie eine Cache-Abbildung. Die Cache-Abbildung empfängt einen Abschnitt der virtuellen Adresse, die aus der logischen Adresse übersetzt worden ist, und erzeugt eine Cache-Trefferoder Fehlgriff-Anzeige.
- Die Erfindung ist in den beigefügten Zeichnungen dargestellt, in welchen:
- Eig. 1 ein Blockschaltbild ist, das die Beziehung eines Cache-Speichers zu einer CPU und zu Haupt- und Sekundärspeichern zeigt.
- Fig. 2 ein Blockschaltbild eines Computersystems ist, das die Cache-Hierarchie gemäß der Erfindung aufweist.
- Fig. 3 ein Blockschaltbild eines Cache für logische Adressen ist, der im Computersystem der Fig. 2 gemäß der vorliegenden Erfindung verwendet werden kann.
- Fig. 4 ein Blockschaltbild eines Beispiels eines Cache für virtuelle Adressen für die Verwendung in Verbindung mit dem Cache für logische Adressen der Fig. 3 im Computersystem der Fig. 2 gemäß der Erfindung ist.
- In den verschiedenen Figuren der Zeichnungen werden gleiche Bezugszeichen verwendet, um gleiche oder ähnliche Teile zu bezeichnen.
- Die Erfindung kombiniert die Vorteile von Cache-Speichern für logische und virtuelle Adressen, indem sie eine Cache-Hierarchie darstellt, die einen Cache für logische Adressen enthält, der einen Cache für virtuelle Adressen als Hintergrundspeicher besitzt. Das Ziel ist, den Leistungsvorteil eines großen Cache für logische Adressen und die Flexibilität sowie die effiziente Nutzung der Cache-Kapazität eines großen Cache für virtuelle Adressen zu erreichen, indem ein physikalisch kleiner Cache für logische Adressen mit einem großen Cache für virtuelle Adressen kombiniert wird.
- Es wird angenommen, daß das Konzept und die Verwendung eines Cache für logische Adressen an sich ebenfalls einzigartig ist, da keine bekannten Computer einen Cache für logische Adressen verwenden. Der Cache für virtuelle Adressen wird durch den Hauptspeicher ergänzt. Die Cache-Hierarchie enthält aus den oben erläuterten Gründen keinen Cache für reale Adressen.
- Die Cache-Speicher für logische und virtuelle Adressen gemäß der Erfindung sind in Fig. 2 im Kontext eines Computersystems des Typs gezeigt, der in der obenbeschriebenen Patentanmeldung von Oxley u. a. mit der laufenden Nummer (Aktenzeichen des Patentanwalts TI-9932) beschrieben ist. Wie gezeigt, besitzt die CPU 50 eine zugehörige Speichermanagementeinheit (MMU) 52. Die MMU 52 enthält einen Speichermanagementprozessor (MMP) 54, der die MMU-Funktionen steuert, wie im US- Patent Nr. 4,989,137 beschrieben ist. Eine Bindungs-Registereinheit (BRU) 56, die mehrere Bindungs-Register 57 enthält, verknüpft die CPU 50 und den Hauptspeicher 60 über entsprechende Daten- und Logikadressleitungen 61 und 62. Die logischen Adressen (L. A.), die an die BRU 56 angelegt werden, werden in der BRU in virtuelle Adressen (V. A.) übersetzt, wobei die entstehenden virtuellen Adressen ihrerseits von einem Adreßübersetzungsmechanismus 65 in reale Adressen (R. A.) für die Adressierung des Hauptspeichers 60 übersetzt werden. Wie später genauer beschrieben wird, enthält die BRU 56 einen Cache 68 für logische Adressen gemäß der Erfindung, wobei die MMU selbst zwischen der BRU 56 und dem Hauptspeicher 60 einen Cache 85 für virtuelle Adressen enthält.
- Wie oben beschrieben worden ist und wie im folgenden deutlicher wird, wird der Cache 68 für logische Adressen mittels logischer Adressen adressiert, die von der CPU 50 erzeugt werden. Eine logische Adresse besteht aus einem Adreßpaar (r, Index), wobei "r" die Identifikation eines Bindungs-Registers und "Index" der Index einer Zelle in einem Speicherblock ist, der mit dem Bindungs-Register r verbunden ist. Bei der Organisation des Cache für logische Adressen wird der Indexteil der logischen Adresse zum Adressieren des Cache verwendet. (Eine virtuelle Adresse wird nicht benötigt, um den Cache für logische Adressen zu adressieren, wodurch die Leistungsnachteile vermieden werden, die mit der Berechnung einer virtuellen Adresse aus der logischen Adresse einhergehen.)
- Ein Beispiel des Cache 68 für logische Adressen ist im Blockschaltbild der Fig. 3 genauer gezeigt. Der Cache 68 für logische Adressen enthält einen Cache-Speicherabschnitt 70, der in eine Anzahl von Partitionen 73 unterteilt ist. Die Anzahl der Cache-Partitionen 73 entspricht der Anzahl der Bindungs-Register im System, z. B. 0 bis 31, wie gezeigt ist. Jede Cache-Partition 73 wird verwendet, um einen Speicherblock (oder einen Teil desselben) zu speichern, der mit einem oder mehreren der Bindungs-Register 57 verbunden ist. Somit ist eine Cache-Partition einem Bindungs-Register zugeordnet und speichert den Block, der mit diesem Bindungs-Register verbunden ist. Es ist eine Cache-Abbildung 75 vorhanden, die eine Aufzeichnung der Informationen hält, die im Cache-Speicher 70 vorhanden sind. Die Cache-Abbildung 75 ist ebenfalls in Partitionen 78 unterteilt, die jeweils einer entsprechenden Partition 73 des logischen Cache-Speichers 70 zugeordnet sind. Es gibt daher genauso viele Cache-Abbildungspartitionen 78 wie Speicher-Cache-Partitionen 73, entsprechend der Anzahl der Bindungs-Register. Jede Cache-Abbildungspartition 78 zeigt an, welche Stellen des gespeicherten Blocks in der zugeordneten Cache-Partition 73 gespeichert sind. Wenn zwei oder mehr Bindungs-Register mit demselben Block verbunden sind, sind sie mit einer einzigen Cache-Partition verknüpft, die diesen Block speichert.
- Zusätzlich zur Cache-Abbildung 75 ist eine weitere Abbildung vorgesehen, die als Bindungsauflösungs-Speicherabbildung 80 bezeichnet wird, um eine Abbildung zwischen einem Bindungs- Register und der damit verknüpften Partition des Cache für logische Adressen zu halten. Die Abbildung 80 besitzt genauso viele Einträge, wie Bindungs-Register in der Maschine vorhan den sind. Somit zeigt bei vorgegebener Identifikation eines Bindungs-Registers die Bindungsauflösungs-Speicherabbildung 80 die Identifikation einer Cache-Partition an, die dem Bindungs-Register zugeordnet ist, falls vorhanden. Da jeder Cache-Partition 73 eine Cache-Abbildungspartition 78 zugeord net ist, zeigt bei gegebener Identifikation eines Bindungs- Registers die Bindungsauflösungs-Speicherabbildung 80 ferner die Identifikation einer Cache-Abbildungspartition 78 an, die der Cache-Partition 73 zugeordnet ist.
- Es ist klar, daß ein Abschnitt des Indexabschnitts der logischen Adresse (der "Satz-id"-Abschnitt), der am Cache für logische Adressen anliegt, in der Cache-Abbildung 75 enthalten ist. Wenn die Bindungsauflösungs-Speicherabbildung 80 adressiert wird, werden die Inhalte der Parlition der Cache- Abbildung, die durch die Bindungsauflösungs-Speicherabbildung 80 angegeben werden, in einem Komparator 81 mit dem "Elementid"-Abschnitt des Indexabschnitts der logischen Adresse verglichen, um einen Cache-Treffer oder einen Cache-Fehlgriff anzuzeigen.
- Diese Strategie des Managements des Cache 68 für logische Adressen mittels der Bindungsauflösungs-Speicherabbildung 80 vermeidet Multicache-Konsistenzprobleme, die auftreten können, wenn der Cache-Entwurf eine separate Cache-Partition für jedes Bindungs-Register verwendet. Ein zusätzlicher Vorteil dieser Strategie besteht darin, daß der Cache-Entwurf ermöglicht, einen "warmen" Cache zu erzeugen, wenn eine neue Verbindung für einen bestehenden Block erzeugt wird. Wenn eine neue Verbindung zu einem bestehenden Block erzeugt wird, ist wenigstens ein Teil des bestehenden Blocks in der Cache- Partition vorhanden, die dem Bindungs-Register zugeordnet ist, mit dem der bestehende Block bereits verbunden ist. Somit wird während des Prozesses der Verbindung eines anderen Bindungs-Registers mit dem bestehenden Block das Neuverbindungsregister derselben Cache-Partition zugeordnet, in der wenigstens ein Teil des bestehenden Blocks vorhanden ist. Wenn z. B. ein Block bereits mit einem Bindungs-Register verbunden ist, z. B. dem Bindungs-Register Nr. 3, zeigt der dritte Eintrag der Bindungsauflösungs-Speicherabbildung an, daß die dritte Cache-Partition den Block speichert. Wenn anschließend eine neue Verbindung zu diesem Block in einem weiteren Bindungs-Register erzeugt wird, z. B. im Bindungs- Register Nr. 5, zeigt der fünfte Eintrag der Bindungsauflösungs-Speicherabbildung die dritte Cache-Partition an. Dies erzeugt effektiv einen warmen Cache für das Bindungs-Register 5.
- Eine andere Strategie für das Management des Cache für logische Adressen besteht darin, eine separate Cache-Partition für jedes Bindungs-Register zuzuweisen. Bei einer solchen Strategie ist ein Block, der mit mehreren Bindungs-Registern verbunden ist, gleichzeitig in unterschiedlichen Cache-Partitionen vorhanden. Eine Aktualisierung einer Partition würde dazu führen, daß die anderen Partitionen, die diesen Block speichern, veraltet sind, was zu Multicache-Konsistenzproblemen führt. Diese Strategie wird weniger bevorzugt, da sie Probleme bezüglich der Multicache-Konsistenz mit sich bringt.
- Wie in Fig. 3 gezeigt, kann ein Beispiel des Cache 68 für logische Adressen wie folgt beschaffen sein.
- Ein typisches Beispiel der Organisation des Cache für logische Adressen im Cache-Hierarchieentwurf dieser Erfindung wird im folgenden dargestellt.
- Der in einer logischen Adresse spezifizierte Index kann als aus drei Feldern bestehend betrachtet werden, nämlich der Wort-id, der Satz-id und der Element-id. Dies ist in Tabelle 1 gezeigt. (Es wird ein Index mit einer Breite von 32 Bits angenommen). Tabelle 1
- Es ist zu beachten, daß (e + 5 + w) 32 gilt.
- Die Wortidentifikation (durch die w niedrigstwertigen Bits im Offset spezifiziert) spezifiziert ein Wort in einer Cache- Zeile, die aus 2w Wörtern besteht. (Eine Zeile ist die Einheit der Datenübertragung zwischen dem Cache und dem Hintergrundspeicher. Eine Zeile wird zwischen dem Cache und dem Hintergrundspeicher übertragen, um einen Cache-Fehlgriff zu bedienen.) Wenn eine Zeile nur eine einzelnes Wort enthält, ist w gleich 0. Typische Werte für den Parameter w sind 0, 1 und 2, was zu einer Zeilengröße von 1, 2 bzw. 4 führt.
- Die nächsten 5 Bits im Offset spezifizieren die Satz-id. Wenn eine vollständig assoziative Abbildung verfolgt wird, ist 5 gleich 0. Die Satzidentifikation spezifiziert einen Satz von insgesamt 25 möglichen Sätzen. Typische Werte für den Parameter 5 sind 1, 2 oder 3, was zu einer Satzgröße von 2, 4 bzw. 8 Zeilen führt.
- Der Grad der Satzassoziativität d ist der nächste zu berücksichtigende Parameter. Es ist zu beachten, daß der Parameter d kein Feld im Index ist und somit in Tabelle 1 nicht gezeigt ist. Typische Werte für den Grad der Satzassoziativität sind 1 oder 2. Der Grad 1 führt zu einer sogenannten direkten Abbildung.
- Der letzte Parameter Element-id spezifiziert, wie viele Zeilen des Hintergrundspeichers in jedem Satz abgebildet sind. Eine Elementidentifikation mit einer Breite von e Bit spezifiziert eine Zeile unter 2e Zeilen, die in dem durch die Satz-id spezifizierten Satz abgebildet werden soll. Wenn der Grad der Satzassoziativität gleich d ist, können maximal d Zeilen von 2e Zeilen im Satz vorhanden sein. Wenn d = 1 gilt, d. h. es gilt die direkte Abbildung, kann im Satz maximal eine Zeile vorhanden sein. Typische Wert von e sind 27, 28 oder 29.
- Das Beispiel wird ebenfalls verwendet, um Einzelheiten der Cache-Abbildung und der Operation des Cache für logische Adressen darzustellen. Es wird die (im folgenden beschriebene) Durchschreibepolitik angenommen. Die Entwurfsparameter des Cache sind im folgenden dargestellt.
- Zeilengröße = 2 (w = 1)
- Anzahl der Sätze = 4 (5 = 2)
- Grad der Satzassoziativität = 1 (dies ist die direkte Abbildung)
- Anzahl der Elemente pro Satz = 2²&sup9; (e = 29)
- Somit ist die Größe jeder Cache-Partition 73 gleich 2 4 = 8 Wörter. Da 32 Partitionen vorhanden sind, beträgt die Gesamtgröße des Cache 256 Wörter. Der Cache wird von schnellen statischen RAMs oder von einer Registergruppe gebildet. Die Cache-Steuervorrichtung besteht aus einer Cache-Abbildung 75, einer Bindungsauflösungs-Speicherabbildung 80 und der zugehörigen Steuerlogik (nicht gezeigt).
- Die Cache-Abbildung 75 enthält 32 Partitionen, die jeweils eine Cache-Partition mit einer festen Größe von vier Zeilen verwalten. Somit besitzt jede Cache-Partition vier Einträge, wobei jeder Eintrag wenigstens 29 Bits breit ist. Es ist zu beachten, daß die Größe jeder Cache-Abbildungspartition mit der Anzahl der Sätze übereinstimmt, wobei die Breite jedes Eintrags in einer Cache-Abbildungspartition wenigstens die Elementidentifikation umfaßt. Die Einträge können zusätzliche Bits aufweisen, um verschiedene Steuerinformationen aufzuzeichnen.
- Die Bindungsauflösungs-Speicherabbildung 80 enthält 32 Wörter mit jeweils fünf Bits. Diese Abbildung wird unter Verwendung der Bindungs-Registeridentifikation r, einer logischen Adresse (r, Index), als Adresse adressiert. Der 5-Bit-Inhalt des so adressierten Worts zeigt die Identifikation der Partition der Cache-Abbildung sowie die Identifikation der zu verwendenden Cache-Partition an.
- Die angezeigte Cache-Abbildungspartition wird mittels der Satz-id adressiert, d. h. mittels der Bits (2:1) des Index.
- Die Inhalte der so adressierten Cache-Abbildungspartition werden mit der Element-id, d. h. mit den Bits (31:3) des Index, verglichen. Wenn der Vergleich eine Übereinstimmung anzeigt, liegt ein Cache-Treffer vor, andernfalls ein Cache- Fehlgriff. Es ist zu beachten, daß dann, wenn die Cache Abbildung 75 adressiert wird, die Cache-Partition ebenfalls mittels der Satz-id, d. h. mittels der Bits (2:1) des Index, adressiert wird. Wenn ein Cache-Treffer vorliegt, gibt der Ausgang der Cache-Partition den Ausgang des Cache für logische Adressen an. Der Cache-Ausgang enthält eine Zeile von zwei Wörtern. Aus der Zeile wird das Wort unter Verwendung der Wort-id ausgewählt, die das Bit (0) des Index ist.
- Wie oben beschrieben worden ist, ist die primäre Quelle für Zugriffe auf den Cache 68 für logische Adressen die CPU 50.
- Während des Prozesses der Beseitigung von Datenabfall greift jedoch auch der MMP 54 auf den Cache für logische Adressen zu. Während der Datenmüllbeseitigung bewegt der MMP 54 Speicherblöcke von OLDSPACE zu NEWSPACE im virtuellen Adreßraum (OLDSPACE und NEWSPACE werden in der anhängigen Patent anmeldung von Bartley u. a. mit dem Titel "COMPUTER MEMORY SYSTEM WITH PARALLEL GARBAGE COLLECTION INDEPENDENT FROM AN ASSOCIATED USER PROCESSOR", laufende Nummer 636,187, eingereicht am 31. Juli 1984, (Aktenzeichen des Patentanwalts TI-9928) genauer beschrieben, die dem Anmelder dieser Erfindung zugeteilt ist und hiermit durch Literaturhinweis eingefügt ist). Da der Block im virtuellen Adreßraum und nicht im logischen Adreßraum bewegt wird, muß der Block selbst nur im Cache 85 für virtuelle Adressen, der im folgenden beschrieben wird, bewegt werden und nicht im Cache 68 für logische Adressen. Dies ist ein Vorteil des Cache für logische Adressen gegenüber dem Cache für virtuelle Adressen. Alle Zeiger auf den bewegten Block, die in anderen Blöcken vorhanden sein können, müssen in beiden Cache-Speichern aktualisiert werden. Wenn ein Block, der einen Zeiger auf einen bewegten Block enthält, sich im Cache für logische Adressen befindet, muß auch die Cache-Stelle, die diesen Zeiger hält, mit dem neuen Zeiger aktualisiert werden (d. h. mit der neuen virtuellen Adresse des bewegten Blocks). Der MMP 54 kennt die virtuellen Adressen des Quellblocks, der die Zeiger auf einen bewegten Block enthält. Der MMP 54 durchsucht die Bindungs-Register 57, um herauszufinden, ob irgendwelche Register mit einem Quellblock verbunden sind. Diese Suche kann mit hoher Geschwindigkeit durchgeführt werden, wenn eine (nicht gezeigte) assoziative Such- Hardwareunterstützung für die Bindungs-Register 57 vorhanden ist. Wenn Bindungs-Register mit einem Quellblock verbunden sind, greift der MMP 54 auf die Partition des Cache für logische Adressen zu, die dem Bindungs-Register zugeordnet ist (mit dem Quellblock verbunden ist), unter Verwendung des Index, der dem Wort entspricht, das den alten Zeiger enthält.
- Wenn sich das Wort in der Cache-Partition befindet, aktualisiert der MMP 54 das Wort unter Verwendung der neuen virtuellen Adresse des bewegten Blocks. Es wird erwartet, daß die meisten Blöcke nur wenige auf sich selbst weisende Zeiger in anderen Blöcken besitzen. So muß der MMP 54 vielleicht nur dann wenige Zeiger im Cache für logische Adressen aktualisieren, wenn der Quellblock im Cache 68 für logische Adressen liegt.
- Im folgenden werden einige Nachteile des Cache 68 für logische Adressen dargestellt. Die Partitionierung des Cache in Partitionen mit fester Größe kann zu einem schlechten Trefferverhältnis oder zu einer ineffizienten Nutzung der Cache- Kapazität führen. Zugriffe auf einen Block, der zu groß ist, um in eine Cache-Partition zu passen, können unter einem schlechten Trefferverhältnis leiden, während andere Cache- Partitionen überhaupt nicht verwendet werden. Andererseits können sehr kleine Blöcke die Cache-Kapazität verschwenden, da sie in einen kleinen Abschnitt einer Cache-Partition passen. Somit entsteht das Problem immer dann, wenn eine Fehlanpassung zwischen der Größe der im Cache gepufferten Speicherblöcke und der Größe der Cache-Partition vorliegt.
- Der Cache 68 für logische Adressen sollte nahe bei den Bindungs-Registern 57 implementiert werden, um Leistungsverluste zu vermeiden, da die Cache-Partitionen den Bindungs-Registern eng zugeordnet sind. In ähnlicher Weise ist die Steuerung des Cache 68 für logische Adressen eng mit derjenigen der Bindungs-Register 57 verknüpft. Wenn die CPU 50 mit einer sehr hoch integrierten Technologie (VLSI) implementiert wird, wird angenommen, daß die Bindungs-Register 57 und der Cache 68 für logische Adressen ebenfalls auf demselben (nicht gezeigten) CPU-VLSI-Chip implementiert werden. Aufgrund der Raumbeschränkungen eines solchen Chips wird erwartet, daß nur ein kleiner bis mittelgroßer Cache für logische Adressen aufge nommen wird. Die erwartete Cache-Größe, die durch die aktuelle Schätzung der Chipfläche möglich ist, beträgt ungefähr 256 Wörter, d. h. acht Wörter je Cache-Partition unter der Annahme von 32 Bindungs-Registern in der Maschine. Mit fortschreitender Technologie wird erwartet, daß die Cache-Größe auf 1024 Wörter ansteigt; jedoch ist dies immer noch eine mittlere Cache-Größe. Ein Nachteil des Cache für logische Adressen, der durch technologische Beschränkungen entsteht, ist somit seine kleine Größe, die seinen inhärenten Geschwindigkeitsvorteil aufgrund eines schlechten Trefferverhältnisses, das der kleinen Größe zuzuschreiben ist, teilweise reduzieren kann.
- Zusätzlich zum Cache 68 für logische Adressen, der wie oben beschrieben, konstruiert ist, ist ein Cache 85 für virtuelle Adressen zwischen der Bindungs-Registereinheit 56 und dem Hauptspeicher 60 vorgesehen. Der Cache 85 für virtuelle Adressen ist in Fig. 4 gezeigt. Die von der CPU 50 erzeugte logische Adresse, d. h. das Paar (r, Index) wird verwendet, um die in der Figur oben gezeigte virtuelle Adresse zu berechnen, indem die im Bindungs-Register r des Bindungs-Registersatzes 57 gespeicherte virtuelle Adresse zum Index addiert wird. Die resultierende virtuelle Adresse wird verwendet, um auf den Cache 85 für virtuelle Adressen zuzugreifen. Diese Berechnung enthält zuerst das Lesen der virtuellen Adresse aus dem Bindungs-Register r, gefolgt vom Addieren der virtuellen Adresse zum Index. Die gesamte Berechnung der virtuellen Adresse erfordert erwartungsgemäß wenigstens 60 ns (20 ns für das Lesen des Bindungs-Registers und 40 ns für das Addieren der gelesenen virtuellen Adresse zum Index), was die Cache-Zugriffszeit um wenigstens 60 ns unvorteilhaft erhöht.
- Der Cache 85 für virtuelle Adressen besitzt einige Vorteile. Im Cache 85 für virtuelle Adressen ist der gesamte Cache für jedes Bindungs-Register verfügbar, d. h. die volle Cache- Kapazität kann genutzt werden, wobei keine Einschränkung bei der gemeinsamen Nutzung der Cache-Kapazität zwischen den unterschiedlichen Bindungs-Registern besteht. Dies steht im Gegensatz zum Partitionierungsschema des Cache für logische Adressen, das eine schlechte Leistung oder eine ineffiziente Nutzung der Cache-Kapazität aufweisen kann, wenn eine schwerwiegende Fehlanpassung zwischen der Größe des im Cache gepufferten Speicherblocks und der Größe der Cache-Partition besteht.
- Ein Vorteil, der sich durch den Cache 85 für virtuelle Adressen ergibt, besteht darin, daß im Gegensatz zu dem Fall mit dem Cache 68 für logische Adressen hinsichtlich seiner Größe keine durch die Technologie auferlegte Beschränkung vorhanden ist. Es können statische Serien-Hochgeschwindigkeits- Schreib/Lese-Speicher-(RAM)-Chips (nicht gezeigt) verwendet werden, um mittelgroße bis große Cache für virtuelle Adressen-Speicher zu implementieren.
- Ein weiterer Vorteil des Cache für virtuelle Adressen ist sein im Vergleich zum Cache für logische Adressen einfacherer Steuermechanismus. Es stehen hochintegrierte LSI-Chips zur Verfügung (wie z. B. der Cache-Steuervorrichtungs-Chip TMS 2150 von Texas Instruments), die den Entwurf einer Cache- Steuervorrichtung relativ einfach und kostengünstig machen. Auf der Grundlage eines solchen Chips kann eine Cache-Steuer vorrichtung für den Cache für virtuelle Adressen konstruiert werden, um einen relativ großen Cache für virtuelle Adressen (16k Wörter) zu verwalten.
- Die Tabelle 2 listet die Vorteile und Nachteile der Cache- Speicher für logische und virtuelle Adressen auf. Tabelle 2. Vergleich der Cache-Speicher für logische und virtuelle Adressen
- Wie in Fig. 4 gezeigt, sind ein Beispiel des Cache 85 für virtuelle Adressen und die Einzelheiten der Cache-Abbildung sowie die Operation wie folgt beschaffen. Es wird wiederum eine Durchschreibepolitik angenommen.
- Der Cache 85 für virtuelle Adressen wird mittels der in der BRU 56 erzeugten virtuellen Adresse adressiert. Die virtuelle Adresse wird für die hier vorkommenden Zwecke so definiert, daß sie drei Felder enthält, nämlich die Wort-id, die Satz-id und die Element-id, um auf den Cache für virtuelle Adressen zuzugreifen. Die Entwurfsparameter des Cache sind im folgenden angegeben.
- Zeilengröße = 4 (w = 2)
- Anzahl der Sätze = 2048 (s = 11)
- Grad der Satzassoziativität = 2
- Anzahl der Elemente pro Satz = 2¹&sup9; (e = 19)
- Die Gesamtgröße des Cache beträgt 2 2048 4 = 16k Wörter. Jeder Satz des Zweiwege-Satzassoziativ-Cache besteht aus 8k Wörtern. Der Cache besteht aus statischen Hochgeschwindigkeits-RAMs. Die Cache-Steuervorrichtung umfaßt die Cache- Abbildungen und die zugehörige Steuerlogik.
- Es gibt zwei Abbildungen 90 und 91 des Cache für virtuelle Adressen, wobei jeweils eine einem Satz des Zweiwege-Satzassoziativ-Cache zugeordnet ist. Jede Abbildung enthält 2048 Einträge, die jeweils wenigstens 19 Bits breit sind. Es ist zu beachten, daß die Cache-Abbildungsgräße mit der Anzahl der Sätze übereinstimmt, wobei die Breite jedes Eintrags wenigstens gleich derjenigen der Element-id ist. Die Einträge können zusätzliche Bits enthalten, um verschiedene Steuerinformationen aufzuzeichnen.
- Beide Cache-Abbildungen 90 und 91 werden mittels der Satz-id adressiert, d. h. mittels der Bits (12:2) der virtuellen Adresse. Die Inhalte der beiden so adressierten Cache-Abbildungen werden in den entsprechenden Komparatoren 94 und 95 mit der Element-id verglichen, d. h. mit den Bits (31:13) der virtuellen Adresse. Es wird erwartet, daß ein Vergleich meistens eine Übereinstimmung anzeigt, die zu einem Cache- Treffer führt; wenn kein Vergleich eine Übereinstimmung anzeigt, liegt ein Cache-Fehlgriff vor. Es ist zu beachten, daß, wenn beide Cache-Abbildungen adressiert werden, beide Sätze des Cache ebenfalls mittels der Satz-id adressiert werden, d. h. mittels der Bits (12:1) der virtuellen Adresse. Wenn ein Cache-Treffer vorliegt, zeigt der Ausgang des ausgewählten Satzes der Cache-Partition den Ausgang des Cache für virtuelle Adressen an. Der Cache-Ausgang-enthält eine Zeile von vier Wörtern. Aus der Zeile wird das Wort ausgewählt, in dem die Bits (1:0) der virtuellen Adresse verwendet werden.
- Wie vorher beschrieben worden ist, ist der Cache 68 für logische Adressen den Bindungs-Registern 57 zugeordnet. Wenn die von einer logischen Adresse (r, Index) angegebene Stelle der Cache für logische Adressen ist, d. h. wenn ein Treffer im Cache für logische Adressen vorliegt, kann die Stelle entweder gelesen oder geschrieben werden, in Abhängigkeit davon, ob eine Leseoperation oder eine Schreiboperation vorliegt. Wenn ein Fehlgriff im Cache für logische Adressen vorliegt, wird mit der virtuellen Adresse, die aus der Übersetzung der logischen Adresse erhalten wird, auf den Cache für virtuelle Adressen zugegriffen. Wenn ein Treffer im Cache für virtuelle Adressen vorliegt, kann die Stelle entweder gelesen oder geschrieben werden, in Abhängigkeit davon, ob eine Leseoperation oder eine Schreiboperation vorliegt.
- Wenn ein Fehlgriff im Cache 85 für virtuelle Adressen vorliegt, wird mit der realen Adresse, die aus der Übersetzung der virtuellen Adresse unter Verwendung des Adressübersetzungsmechanismus 65 erhalten wird, auf den Hauptspeicher 60 zugegriffen. Wenn der Adressübersetzungsmechanismus 65 einen Seitenfehler anzeigt, befindet sich die Information selbstverständlich auf dem Hintergrundplattenspeicher 83, wobei die fehlende Seite geholt werden muß, um den Seitenfehler zu beheben.
- Der Cache 68 für logische Adressen wird hauptsächlich von der CPU 50 adressiert. Der Cache 85 für virtuelle Adressen wird verwendet, um Fehlgriffe im Cache 68 für logische Adressen zu bedienen und wird ferner vom MMP 54 adressiert.
- Ein Modell, das die erwartete Leistung der Cache-Hierarchie der Erfindung zeigt, wird im folgenden dargestellt. Es ist zu beachten, daß ein niedriges Trefferverhältnis von 60 % für den Cache für logische Adressen aufgrund seiner erwarteten kleinen Größe angenommen wird.
- Trefferwahrscheinlichkeit für den Cache für logische Adressen 60 %
- Trefferwahrscheinlichkeit für den Cache für virtuelle Adressen 95 %
- Zugriffszeit für den Cache für logische Adressen 50 ns
- Zugriffszeit für den Cache für virtuelle Adressen 100 ns
- Zugriffszeit für den Hauptspeicher 300 ns
- Die effektive Zugriffszeit für das Speichersystem beträgt somit
- {(50 0,6) + (100 0,4)} 0,95 + (300 0,05) = 82 ns.
- Diese erwartete Zugriffszeit steht im Gegensatz zu dem Lösungsansatz, der nur einen Cache für logische Adressen oder nur einen Cache für virtuelle Adressen verwendet. Mit einem größeren Cache für logische Adressen, der ein Trefferverhältnis von 80 % ergibt, beträgt die effektive Zugriffszeit (50 0,8) + (300 0,2) = 100 ns. Mit einem einzigen Cache für virtuelle Adressen beträgt die effektive Zugriffszeit (100 0,95) + (300 0,05) 110 ns.
- Somit ergibt eine Cache-Hierarchie, die einen kleinen Cache für logische Adressen und einen großen Cache für virtuelle Adressen enthält, eine bessere Leistung als ein einzelner großer Cache für logische Adressen bzw. ein einzelner großer Cache für virtuelle Adressen.
- Ein weiteres Merkmal der Erfindung ist, daß sie ermöglicht, daß die Zugriffszählerverwaltung vollständig von der Steuervorrichtung des Cache für virtuelle Adressen und dem MMP 54 in der MMU 52 bewerkstelligt wird. Einzelheiten der Zugriffszählung sind z. B. in der obenerwähnten anhängigen Patentanmeldung mit der laufenden Nummer (Aktenzeichen des Patentanwalts TI-9928) ausgeführt. Die Steuervorrichtung des Cache für logische Adressen ist an jeglicher Organisation, die der Referenzzählung zugeordnet ist, nicht beteiligt, was zu einer höheren Leistung führt, da die CPU-MMU-Schnittstelle freigegeben wird, sobald der Zugriff auf den Cache für logische Adressen beendet ist.
- Die MMU 52 verwendet eine Zugriffszählertechnik für eine schnelle Anzeige eines nicht verfügbaren Speichers. Für jeden Schreibbefehl muß zuerst der bestehende Inhalt der Speicherzelle gelesen werden, um zu ermitteln, ob infolge des Schreibens neuer Daten ein Zeiger zerstört wird, woraufhin die neuen Daten in die Speicherzelle geschrieben werden können. Dies wird als "Lesen-Modifizieren-Schreiben"-Merkmal bezeichnet. In der Maschine der obenerwähnten Patentanmeldung von Oxley u. a. mit der laufenden Nummer (Aktenzeichen des Patentanwalts TI-9932) wird dann, wenn der MMU-Merker der bestehenden Inhalte einen Zeiger angibt, infolge der Schreiboperation ein Zeiger zerstört. Wenn ein bestehender Zeiger zerstört wird, muß anschließend der Vorspann des betreffenden Blocks gelesen werden, um die Referenzzahl wiederzugewinnen, wobei die Referenzzahl um 1 dekrementiert wird, woraufhin schließlich die aktualisierte Referenzzahl in den Vorspann des betreffenden Blocks zurückgespeichert wird.
- In ähnlicher Weise müssen die geschriebenen neuen Daten ebenfalls geprüft werden, um zu ermitteln, ob diese einen Zeiger darstellen. Dies wird ermittelt durch Untersuchen des MMU-Merkers der neuen Daten. Wenn die Daten einen Zeiger darstellen, wird anschließend ein neuer Zeiger erzeugt, was erfordert, daß der Vorspann des betreffenden Blocks gelesen werden muß, um die Referenzzahl wiederzugewinnen, die Referenzzahl um 1 inkrementiert wird und schließlich die aktualisierte Referenzzahl in den Vorspann des betreffenden Blocks zurückgespeichert wird.
- Wenn nur ein Cache für logische Adressen vorhanden ist (d. h. es ist kein Cache für virtuelle Adressen vorhanden), muß dessen Steuervorrichtung entscheiden, ob ein bestehender Zeiger zerstört wird oder ein neuer erzeugt wird, d. h. die Steuervorrichtung muß das Lesen-Modifizieren-Schreiben-Merkmal unterstützen. Dieser Organisationsaufwand setzt die Leistung herab, da die CPU-MMU-Schnittstelle nicht freigegeben werden kann, bis diese Entscheidungen getroffen sind. Mit dem hier offenbarten Cache-Hierarchieentwurf kann der Organisationsaufwand der Entscheidung, ob ein bestehender Zeiger zerstört wird oder ein neuer erzeugt wird, von der Steuervorrichtung des Cache für virtuelle Adressen behandelt werden, d. h. die Steuervorrichtung für den Cache für virtuelle Adressen muß das Lesen-Modifizieren-Schreiben-Merkmal unterstützen. Der MMP sorgt für die aktuelle Inkrementierung und Dekrementierung der Referenzzähler sowie für die Auszeichnung von Datenmüllblöcken. Sobald der Cache für logische Adressen in einem Schreibbefehl mit neuen Daten beschrieben wird, wird die CPU-MMU-Schnittstelle freigegeben, was der CPU ermöglicht, einen neuen Zugriff auf den Speicher einzuleiten. Wie später erläutert wird, ist es notwendig, die "Durchschreibe"-Politik für beide Cache-Speicher zu verwenden, um diese Strategie der Leistungsverbesserung zu unterstützen.
- Es gibt zwei Politiken, um den Cache mit dem Hintergrundspeicher konsistent zu halten. Für den Cache für logische Adressen ist der Cache für virtuelle Adressen der Hintergrundspeicher; für den Cache für virtuelle Adressen ist der Hauptspeicher der Hintergrundspeicher. Die folgende Beschreibung verwendet sowohl den Cache für logische Adressen als auch den Cache für virtuelle Adressen. Die erste Politik wird als "Durchschreibe"-Politik bezeichnet. Wie ihr Name sagt, wird für jeden Schreibzugriff sowohl in den Cache als auch in den Hintergrundspeicher geschrieben. Die zweite Politik wird als "Zurückschreibe"-Politik bezeichnet. Wie ihr Name sagt, wird nur dann in den Hintergrundspeicher geschrieben, wenn die bestehenden Daten im Cache ersetzt werden sollen, um neu eingebrachte Daten aus dem Cache für virtuelle Adressen aufzunehmen, und wenn die bestehenden Daten "schmutzig" sind, d. h. sie sind nicht konsistent mit ihrer Kopie im Hintergrundspeicher. Bei der Durchschreibe-Politik wird der Hintergrundspeicher bei jedem Schreibzyklus aktualisiert und mit dem Cache konsistent gehalten, auf Kosten eines erhöhten Verkehrs zum Hintergrundspeicher.
- Der hier dargestellte Cache-Entwurf verwendet die Durchschreibepolitik sowohl für den Cache für logische Adressen als auch für den Cache für virtuelle Adressen. Die Einzelheiten der Implementierung der Druchschreibepolitik sind im Stand der Technik wohlbekannt und werden hier nicht weiter beschrieben. Hier wird hervorgehoben, daß der Satz von Gründen zur Auswahl der Durchschreibepolitik mit der MMU in Zusammenhang steht.
- Ein Vorteil der Durchschreibepolitik besteht darin, daß beide Cache-Speicher nur eine Fehlererfassungsfähigkeit (keine Korrekturfähigkeit) besitzen müssen. Nach dem Erfassen eines Cache-Fehlers können die richtigen und aktuellen Hauptspeicherdaten geholt werden, um die fehlerhaften Cache-Daten zu korrigieren. Somit wird der Cache-Entwurf einfacher, da er keinen Fehlerkorrekturcode benötigt. Ein Nachteil der Zurückschreibepolitik besteht darin, daß wenigstens der Cache für virtuelle Adressen eine Einzelbit-Fehlerkorrekturfähigkeit besitzen muß, da zum Korrigieren der der Cache-Datenfehler nicht auf die Hauptspeicherdaten zurückgegriffen werden kann. Diese Anforderung verkompliziert den Entwurf des Cache für virtuelle Adressen.
- Die Durchschreibepolitik besitzt weitere Vorteile. Bei der Durchschreibepolitik werden Cache-Fehlgriffe schneller bedient, da die zu ersetzende alte Zeile einfach überschrieben wird. Es gibt einen zusätzlichen Faktor, der die Fehlgriffe des Cache für logische Adressen zu einem teuren Problem für die Zurückschreibepolitik macht. Für den Cache für logische Adressen enthält die Cache-Abbildung die logischen Adressenindizes der Zeilen im Cache. Nach einem Cache-Fehlgriff, wenn eine Zeile ersetzt werden muß, muß zuerst dieser logische Index in eine virtuelle Adresse übersetzt werden. Dieser Übersetzungsprozeß erfordert zusätzlich zwei 32-Bit-Zahlen, was wenigstens 40 ns in Anspruch nimmt.
- Mit der Durchschreibepolitik besitzen sowohl der Cache für virtuelle Adressen als auch der Hauptspeicher immer eine aktuelle Kopie; daher wird der Job des Datenmüllbeseitigungs prozesses, der im MMP läuft, einfacher. Wenn eine Datenmüllbeseitigung bereit ist, Zeiger zu bereinigen, ist sichergestellt, daß die Zeiger aktuell sind. Bevor bei der Zurückschreibepolitik ein Block bereinigt werden kann, muß er andererseits zuerst vom Cache für logische Adressen in den Cache für virtuelle Adressen zurückgeschrieben werden.
- Mit der Durchschreibepolitik muß ein Block dann, wenn er freigegeben wird oder zu Datenmüll wird, nicht vom Cache für logische Adressen in den Cache für virtuelle Adressen zurückgeschrieben werden, da der Cache für virtuelle Adressen eine konsistente Kopie enthält. Die Partition des Cache für logische Adressen, die solchen Blöcken zugeordnet ist, wird einfach freigegeben und reinitialisiert, ohne daß sie zurückgeschrieben werden muß.
- Mit der Durchschreibepolitik muß der Cache für logische Adressen das vorher beschriebene Lesen-Modifizieren-Schreiben-Merkmal nicht unterstützen. In den Cache für logische Adressen wird einfach als Antwort auf Schreibbefehle geschrieben. Aufgrund der Durchschreibepolitik werden die Daten ferner in den Cache für virtuelle Adressen geschrieben. Es ist der Cache für virtuelle Adressen (und nicht der Cache für logische Adressen), das die Lesen-Modifizieren-Schreiben- Merkmal aufweist. Als Folge eines Schreibbefehls berichtet die Steuervorrichtung für den Cache für virtuelle Adressen dann, wenn ein neuer Zeiger erzeugt wird oder ein alter Zeiger zerstört wird, dieses Ereignis dem MMP, der die Referenzzähler entsprechend aktualisiert.
- Somit ist ein Schreibbefehl beendet, sobald die Daten in den Cache für logische Adressen geschrieben worden sind. Zu diesem Zeitpunkt kann die CPU-MMU-Schnittstelle freigegeben werden, so daß die CPU die nächste Speicheranfrage ausgeben kann. Dies ist ein schneller Weg zum Schreiben in den Cache, im Vergleich zu dem Lesen-Modifizieren-Schreiben-Cache-Zyklus, der erforderlich wäre, wenn die Zurückschreibepolitik gewählt worden wäre.
Claims (4)
1. Cache-Speichersystem für die Verwendung mit einer CPU
(50), mit
einem physischen Speicher (60);
einem Raum für virtuelle Adressen (VA), der durch
virtuelle Adressen adressierbar ist,
einen Cache (85) für virtuelle Adressen;
einen Raum für logische Adressen (LA), der durch
logische Adressen adressierbar ist, und
einen Cache (68) für logische Adressen, der durch den
Cache für virtuelle Adressen gesichert ist,
wobei der Cache für logische Adressen einen
Logikcache-Speicher (70), ein Logikcache-Speicherabbild
(75) und ein Bindungsauflösungs-Speicherabbild (80)
enthält;
das Bindungsauflösungs-Speicherabbild so beschaffen
ist, daß es logische Adressen für die Anwendung auf das
Logikcache-Speicherabbild empfängt;
das Logikcache-Speicherabbild eine Identifizierung
der Inhalte des Logikcache-Speichers, eine Einrichtung
zum Adressieren des Logikcache-Speichers sowie eine
Einrichtung für die Angabe von Cache-Treffern und von Cache-
Verfehlungen bei Eingabe wenigstens eines Teils der
logischen Adressen in das Bindungsauflösungs-Speicherabbild
enthält, wobei der Logikcache-Speicher Speicherelemente
besitzt, die in der Weise in Partitionen unterteilt sind,
daß jede Partition einem entsprechenden Bindungsregister
entspricht, und der Logikcache-Speicher durch das
Bindungsauflösungs-Speicherabbild adressierbar ist;
eine Bindungs-Registereinrichtung (57) mit mehreren
Registern, die an die CPU (50) angeschlossen ist, wobei
die CPU so beschaffen ist, daß sie nur auf einen Raum für
logische Adressen mit von der CPU erzeugten logischen
Adressen zugreift, wobei eine logische Adresse eine
Bezugnahme auf eines der mehreren Register der
Bindungsregister-Einrichtung (57) enthält;
wobei der Cache für logische Adressen (68) an die
Bindungsregister-Einrichtung angeschlossen ist, um
logische Adressen von der CPU (50) zu empfangen, und
bestimmen kann, ob Informationen, die einer empfangenen logi
schen Adresse entsprechen, darin gespeichert sind, und
derartige Informationen für die CPU (50) erzeugen kann,
falls die Informationen darin gespeichert sind;
einer Übersetzungseinrichtung (von LA nach VA), die
an die Bindungsregister-Einrichtung (57) angeschlossen
ist und arbeitet, wenn einer logischen Adresse
entsprechende Informationen nicht im Cache für logische Adressen
enthalten sind, um logische Adressen in virtuelle
Adressen zu übersetzen, die in dem Raum für virtuelle Adressen
enthalten sind;
einem Cache für virtuelle Adressen (85) zum Speichern
von virtuellen Adressen entsprechenden Informationen, der
so angeschlossen ist, daß er eine virtuelle Adresse von
der Übersetzungseinrichtung (von LA nach VA) empfängt,
wenn der Cache für logische Adressen (68) feststellt, daß
die einer logischen Adresse entsprechenden Informationen
nicht im Cache für logische Adressen enthalten sind; und
einem Controller (54) für den Cache für virtuelle
Adressen, der an den Cache für virtuelle Adressen (85)
und an den physischen Speicher (60) angeschlossen ist, um
festzustellen, ob einer übersetzten virtuellen Adresse
entsprechende Informationen im Cache für virtuelle
Adressen enthalten sind, und um Informationen vom physischen
Speicher (60) in den Cache für virtuelle Adressen zu
kopieren, falls einer übersetzten virtuellen Adresse
entsprechende Informationen nicht in dem Cache für virtuelle
Adressen enthalten sind.
2. Cache-Speichersystem nach Anspruch 1, in dem jede der
logischen Adressen ein Registerpaar (r, Index) enthält,
wobei "r" einen Bindungsregister-Identifizierer
repräsentiert und "Index" einen Index einer Zelle in einem
Speicherblock
repräsentiert, der an das mit "r" bezeichnete
Bindungsregister gebunden ist.
3. Cache-Speichersystem nach Anspruch 1 oder 2, mit einer
Einrichtung (65) zum Übersetzen von virtuellen Adressen
in reale Adressen für die Eingabe in den physischen
Speicher.
4. Cache-Speichersystem nach irgendeinem der Ansprüche 1 bis
3, in dem der Cache für virtuelle Adressen wenigstens
einen virtuellen Cache-Speicher und ein virtuelles Cache-
Speicherabbild enthält;
wobei das virtuelle Cache-Speicherabbild virtuelle
Adressen empfängt, die aus den logischen Adressen
übersetzt worden sind, und den wenigstens einen virtuellen
Cache-Speicher adressiert, falls die Adresse einen Cache-
Treffer erzeugt.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63619084A | 1984-07-31 | 1984-07-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3588166D1 DE3588166D1 (de) | 1997-11-06 |
DE3588166T2 true DE3588166T2 (de) | 1998-02-12 |
Family
ID=24550837
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE3588166T Expired - Fee Related DE3588166T2 (de) | 1984-07-31 | 1985-07-31 | Entwurf einer Cache-Hierarchie zur Anwendung in einer Speicherverwaltungseinheit |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP0170525B1 (de) |
JP (1) | JPS6194159A (de) |
DE (1) | DE3588166T2 (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2619641B1 (fr) * | 1987-08-22 | 1992-05-07 | Nec Corp | Dispositif de cache hierarchique |
US5878245A (en) * | 1993-10-29 | 1999-03-02 | Advanced Micro Devices, Inc. | High performance load/store functional unit and data cache |
US5689672A (en) * | 1993-10-29 | 1997-11-18 | Advanced Micro Devices, Inc. | Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions |
EP0651332B1 (de) * | 1993-10-29 | 2001-07-18 | Advanced Micro Devices, Inc. | Linearadressierter Mikroprozessorcachespeicher |
EP0651324B1 (de) * | 1993-10-29 | 2006-03-22 | Advanced Micro Devices, Inc. | Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge |
US5737550A (en) * | 1995-03-28 | 1998-04-07 | Advanced Micro Devices, Inc. | Cache memory to processor bus interface and method thereof |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR130806A (de) * | 1973-11-21 | |||
US4145745A (en) * | 1974-12-20 | 1979-03-20 | U.S. Philips Corporation | Address conversion device for secondary memories |
US4355355A (en) * | 1980-03-19 | 1982-10-19 | International Business Machines Corp. | Address generating mechanism for multiple virtual spaces |
US4464712A (en) * | 1981-07-06 | 1984-08-07 | International Business Machines Corporation | Second level cache replacement method and apparatus |
-
1985
- 1985-07-31 DE DE3588166T patent/DE3588166T2/de not_active Expired - Fee Related
- 1985-07-31 JP JP60167865A patent/JPS6194159A/ja active Pending
- 1985-07-31 EP EP85305453A patent/EP0170525B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE3588166D1 (de) | 1997-11-06 |
EP0170525A2 (de) | 1986-02-05 |
JPS6194159A (ja) | 1986-05-13 |
EP0170525B1 (de) | 1997-10-01 |
EP0170525A3 (de) | 1989-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
DE69130086T2 (de) | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien | |
DE69629140T2 (de) | Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index | |
DE69424767T2 (de) | Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers | |
DE69514165T2 (de) | Mehrstufige Cache-Speicheranordnung | |
DE69327387T2 (de) | An einen paketvermittelten Bus gekoppelte Nachschreibsteuerungsschaltung für eine Cachespeichersteuerungsschaltung | |
DE3688192T2 (de) | Seitenorganisierter cachespeicher mit virtueller adressierung. | |
DE2459006C2 (de) | Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage | |
DE2226382C3 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
DE4410060B4 (de) | Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse | |
DE69721368T2 (de) | Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher | |
DE69317729T2 (de) | Cache-Etikettenspeicher | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE68902193T2 (de) | Datenspeicheranordnung. | |
DE3151745C2 (de) | ||
DE68923863T2 (de) | Ein-/Ausgabecachespeicherung. | |
DE69229667T2 (de) | Simulierte cachespeicher-assoziativität | |
DE3852695T2 (de) | Multiprozessorsystem mit mehreren Speichern. | |
DE10219623A1 (de) | System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen | |
DE60001170T2 (de) | Betriebsystemsseitenplazierung zum maximieren der cachedatenwiederverwendung | |
DE10002120A1 (de) | Logikstruktur eines Adressumsetzpuffers | |
DE10006430B4 (de) | Verfahren zur Aufrechterhaltung einer Kohärenz für ein Multi-Prozessor-System | |
DE68925336T2 (de) | Datenverarbeitungsvorrichtung mit Cache-Speicher | |
DE3873388T2 (de) | Cache-speicher. | |
DE69130626T2 (de) | Verfahren zur Verwaltung einer Cache-Speicheranordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |