DE69626070T2 - Verfahren und Vorrichtung zum Etikettieren eines Mehrweg-assoziativen Cache-Speichers - Google Patents
Verfahren und Vorrichtung zum Etikettieren eines Mehrweg-assoziativen Cache-SpeichersInfo
- Publication number
- DE69626070T2 DE69626070T2 DE69626070T DE69626070T DE69626070T2 DE 69626070 T2 DE69626070 T2 DE 69626070T2 DE 69626070 T DE69626070 T DE 69626070T DE 69626070 T DE69626070 T DE 69626070T DE 69626070 T2 DE69626070 T2 DE 69626070T2
- Authority
- DE
- Germany
- Prior art keywords
- buffer
- entry
- main memory
- att
- field
- 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
- 238000000034 method Methods 0.000 title claims description 10
- 238000002372 labelling Methods 0.000 title description 6
- 239000000872 buffer Substances 0.000 claims description 210
- 230000015654 memory Effects 0.000 claims description 104
- 238000013519 translation Methods 0.000 claims description 7
- 230000006978 adaptation Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 9
- 230000036541 health Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 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/1054—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 physically 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
- G06F2212/6082—Way prediction in set-associative cache
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 bezieht sich auf das Gebiet der Pufferspeicher. Insbesondere bezieht sich die Erfindung auf wirksame Pufferspeicher- Etikettierschemen.
- Fig. 1 ist ein Blockdiagramm eines Uniprozessor-Computersystems 100, umfassend einen Prozessor 110, eine Systemverbindung 120, einen Hauptspeicher 130, eine Massenspeichereinrichtung 140, einen Monitor 160 und eine Tastatur/Maus 170. In einem herkömmlichen Computersystem, wie zu dem Computersystem 100, werden Befehle und Datenstrukturen eines Programmes vor der Programmausführung von der Massenspeichereinrichtung 140, typischerweise einem Plattenspeicherantrieb, in den Hauptspeicher 130 geladen, der typischerweise ein billiger, aber langsamer dynamischer Speicher mit wahlfreiem Zugriff (DRAM) ist. Nachfolgend greift während der Programmausführung der Prozessor 110 in der geforderten Weise über die Systemverbindung 120 auf die in dem Hauptspeicher 130 gespeicherten Befehle und Daten zu.
- Wenn die Bearbeitungsfähigkeit des Prozessors 110 für Befehle/Daten anwächst, wird die Verarbeitungsfähigkeit des Computersystems 100 für Befehle/Daten anstatt von dem Prozessor von dem Speicher abhängig. Dies ist teilweise darauf zurückzuführen, dass aufgrund der technischen Fortschritte, die die Zugriffsgeschwindigkeit des Hauptspeichers 130 erhöht haben, nicht mit den Fortschritten Schritt gehalten haben, die die interne Verarbeitungsfähigkeit des Prozessors 110 für Befehle/Daten erhöht haben. Infolgedessen wird die Wirksamkeit des Prozessors 110 durch die Geschwindigkeit beeinträchtigt, mit der Daten und Befehle zwischen dem Hauptspeicher 130 und dem Prozessor 110 über die Systemverbindung 120 übertragen werden können.
- Der gleiche Speicher-Engpass liegt bei Multi-Prozessorsystemen vor. Fig. 2 ist ein Blockdiagramm eines solchen Multi-Prozessor-Computersystems 200 mit mehreren Prozessoren 211, 212, ... 219, die miteinander und mit einem Hauptspeicher 130 und einer Massenspeichereinrichtung 140 über eine gemeinsame Systemverbindung 120 verbunden sind.
- Eine Teillösung der Speicher-Engpässe der Systeme 100, 200 liegt in der Einführung eines kleineren schnelleren, aber teueren Pufferspeichers, typischerweise eines statischen Speichers mit wahlfreiem Zugriff (SRAM), der direkt an die entsprechenden Prozessoren angeschlossen ist. Wie in den Fig. 1 und 2 gezeigt, ist jeder Prozessor einem Pufferspeicher zugeordnet. Z. B. ist der Prozessor 211 mit dem Pufferspeicher 251 verbunden. In Abhängigkeit von der Verwirklichung können die Pufferspeicher 150, 251, 252, ... 259 ebenfalls direkt an die Systemverbindung 120 angeschlossen sein.
- Fig. 3A zeigt eine beispielhafte Verwirklichung eines herkömmlichen assoziativen Pufferspeichers 310a mit C-Pufferspeicherzeilen. Jede Pufferspeicherzeile umfaßt zwei Felder, ein Adresshinweis("AT")-Feld und ein Datenfeld, das dem AT Feld assoziativ zugeordnet ist. Bei diesem Schema besitzt die physikalische Adresse einer jeden Pufferspeicherzeile entsprechende AT- und Index-Teile. Der Pufferspeicher 300a ist veranschaulichend für den Pufferspeicher 150 oder irgendeinem der Pufferspeicher 251, 252, ... 259.
- Ein Prozessor, z. B. der Prozessor 110, nimmt auf eine Ziel-Pufferspeicherzeile, z. B. die n.te-Pufferspeicherzeile, Zugriff durch Verwendung des Indexteiles der physikalischen Adresse (PA) als ein Offset in Bezug auf die Oberseite des Pufferspeichers 310a, um die Ziel-Pufferspeicherzeile zu lokalisieren. Als nächstes wird der AT-Teil der physikalischen Adresse der Pufferspeicherzeile mit dem Inhalt des AT Feldes der Ziel-Pufferspeicherzeile verglichen. Wenn eine Übereinstimmung zwischen den entsprechenden AT Werten vorliegt, so liegt ein "Pufferspeicher-Treffer" vor und das Datenfeld der Ziel-Pufferspeicherzeile wird an den Prozessor 110 geliefert.
- Um die Wahrscheinlichkeit eines Pufferspeicher-Treffers zu erhöhen, kann der Pufferspeicher mit erhöhter Assoziativität erweitert werden. Bezugnehmend nunmehr auf das Blockdiagramm von Fig. 3B besitzt ein assoziativer Zweiweg- Pufferspeicher 310b C-Pufferspeicherzeilen. Jede Pufferspeicherzeile umfaßt ein Paar von AT- und Datenfeldern, wobei jedes Datenfeld assoziativ mit dem entsprechenden AT-Feld verbunden ist, wodurch die Trefferwahrscheinlichkeit des Pufferspeichers erhöht wird. Der Pufferspeicher 300b umfaßt ebenfalls Komparatoren 311, 312 und einen Multiplexer (MUX) 313. Der Pufferspeicher 310b kann irgendeiner der Pufferspeicher 150, 251, 252, ... 259 sein. Die Arbeitsweise des assoziativen Zweiweg-Pufferspeichers 310b ist wie folgt.
- Wenn ein Prozessor, z. B. der Prozessor 211, eine physikalische Adresse verwendet, um auf den Pufferspeicher 310b Zugriff zu nehmen, so wird der Pufferspeicher-Indexteil der Adresse als ein Offset verwendet, um ein Paar von Ziel-Pufferspeicherzeilen zu lokalisieren. Bei dieser Verwirklichung werden beide indizierte AT-Felder der Ziel-Pufferspeicherzeilen aufgesucht und mit dem AT- Teil der physikalischen Adresse durch die Komparatoren 311, 312 verglichen. Wenn ein Pufferspeicher-Treffer mit irgendeiner der Ziel-Pufferspeicherzeilen vorliegt, so wird durch den MUX313 unter Steuerung der Komparatoren 311, 312 das geeignete Datenfeld ausgewählt und das ausgewählte Datenfeld dem anfordernden Prozessor 211 vorgegeben. In Abhängigkeit von der spezifischen Verwirklichung können die untere Bits der physikalischen Byte-Adresse verwendet werden, um ein interessierendes Byte innerhalb der Ziel- Pufferspeicherzeile herauszuziehen, wodurch die Bitbreite des MUX313 vermindert wird.
- Somit arbeiten die Pufferspeicher 150, 251, 252, ... 259 als Hochgeschwindigkeitsablagen zwischen dem Hauptspeicher 130 und den entsprechenden Prozessoren 110, 211, 212, ... 219 durch Vorteilnahme aus der temporär räumlichen Örtlichkeit in dem mittleren Zugriffsmuster der Prozessoren. Die räumliche Örtlichkeit wird immer dann ausgewertet, wenn ein Pufferspeicher Daten benachbart zu den angeforderten Daten während eines Zugriffs zu einer Pufferspeicherzeile abruft. Wenn somit die Pufferspeicher 150, 251, 252, ... 259 zusammen mit Techniken verwendet werden, wie z. B. einer Befehlsabruf- Vorhersage für den Vorabruf von Befehlen/Daten, die wahrscheinlich zu verwenden sind und wahrscheinlich wiederzuverwendende Befehle/Daten zurückbehält, so werden die zuvor beschriebenen Speicher-Engpässe der Computersysteme 100, 200 teilweise vermieden.
- Fig. 4 zeigt einen beispielhaften TLB 420 des Standes der Technik, eine virtuelle Adresse 430 und eine entsprechende physikalische Adresse 440 für den Zugriff auf einen assoziativen 7-Weg-Pufferspeicher 410. Der TLB 420 kann irgendeiner der TLB's 110a, 211a, 212a, ... 219 sein. Typischerweise sind der Hauptspeicher 130 und der TLB 420 seitenorientiert, während der Pufferspeicher 410 unter Verwendung von Pufferspeicherzeilen organisiert ist. In einer vollständig assoziativen Verwirklichung des TLB 420 wird eine "TLB-Aufsuche" in der folgenden Weise ausgeführt.
- Zunächst vergleicht ein Prozessor, z. B. der Prozessor 211, die entsprechenden virtuellen Adress(VA)-Felder von jedem Eintrag in dem TLB 420 mit dem Seiten- Indexteil der VA 430. Bei diesem in Fig. 4 gezeigten Beispiel wird, wenn ein Treffer vorliegt, z. B. mit dem TLB-Eintrag 420a ein 8-Bitteil des PA Wertes des TLB-Eintrages 420a mit einem 7-Bit-Seiten-Offsetteil der VA 430 kombiniert, um einen 15-Bit-Index für den Zugriff eines jeden Segmentes des Pufferspeichers 410 zu bilden.
- Auch nach einem TLB-Eintrag Treffer besitzt unglücklicherweise der Prozessor 211 keine Kenntnis, welches der sieben Segmente 411, 412, 413, ... 417 des Pufferspeichers 410 die Ziel-Pufferspeicherzeile enthalten könnte. Dies ist darauf zurückzuführen, dass die Weginformation, d. h. die Segmentidentifikation entsprechend der Ziel-Pufferspeicherzeile zuvor durch den Prozessor 211 gestrichen wurde, als die Ziel-Pufferspeicherzeile zuerst gepuffert wurde und es ferner keinen Mechanismus bei dem herkömmlichen TLB 420 gibt, um Weginformation zu speichern oder zu verwenden.
- Demzufolge muß eine zweite Gruppe von sieben Vergleichen zwischen den entsprechenden AT Feldern der aufgesuchten Pufferspeicherzeilen 411a, 412a, 413a, ... 417a und dem verbleibenden Teil des PA Wertes von dem TLB-Eintrag 420a durch die entsprechenden Komparatoren 451, 452, ... 457 in einem Versuch ausgeführt werden, die Ziel-Pufferspeicherzeile zu lokalisieren. Wenn es eine Übereinstimmung gibt, d. h. einen Pufferspeichertreffer, so wird das Datenfeld der übereinstimmenden Pufferspeicherzeile aufgesucht und dem Prozessor 211 zugeführt.
- Somit liegt ein Hauptnachteil des herkömmlichen "TLB-Aufsuch"-Schemas in dem Erfordernis des Prozessors 211, zwei unterschiedliche Vergleichspegel auszuführen. Ferner kann der zweite Pegel die mehrfachen Vergleiche nicht beginnen, bis der erste Pegel der Vergleiche vervollständigt ist.
- Ein Weg zur Erhöhung der Geschwindigkeit der Komparatoren 451, 452, 453, ... 457 liegt in der physikalischen Anordnung der Komparatoren 451, 452, 453, ... 457 und von jedem RT Feld des Pufferspeichers 410 auf dem gleichen IC wie der Prozessor. Solch eine Anordnung erhöht jedoch wesentlich die Größe des Prozessor-IC's und beeinträchtigt die Produktionsausbeute des Prozessors.
- Somit gibt es ein Bedürfnis für ein wirksames Pufferspeicher-Etikettierschema, das sowohl für Uni-Prozessoren als auch für Multi-Prozessor-Computersysteme geeignet ist und das Vorteil aus der Weginformation zieht, um schnell und effizient gepufferte Information aufzusuchen, was in einer kompakten Form ohne massive Erhöherung der Größe des Prozessors verwirklicht werden kann.
- Mehr Information über TLB's kann gefunden werden in "MIPSR4000 Microprocessor Users Manual", Joe Heinrich, 1994, MIPS Technologies, Mountain View CA, USA.
- Die vorliegende Erfindung, wie sie durch die angefügten Ansprüche definiert ist, gibt einen Pufferspeicherverwalter (cm) zur Verwendung mit einer Adressen- Umsetzungstabelle (ATT) vor, die von Weginformation vorteilhaft Gebrauch macht, welche verfügbar ist, wenn eine Pufferspeicherzeile zuerst aufgesucht wird, um wirksam auf einen Mehrweg-Pufferspeicher eines Computersystems zuzugreifen, das einen Hauptspeicher und einen oder mehrere Prozessoren besitzt. Der Hauptspeicher und die ATT sind seitenorientiert, während der Pufferspeicher unter Verwendung von Pufferspeicherzeilen organisiert ist. Der CM verfolgt den Inhalt des Mehrweg-Pufferspeichers über die ATT. Der Pufferspeicher umfaßt mehrere Pufferspeicherzeilen, die in eine Anzahl von Segmenten entsprechend der Anzahl von "Wegen" unterteilt sind. Jede Pufferspeicherzeile umfaßt ein Adressenhinweis ("AT")-Feld und ein Datenfeld.
- Gemäß der vorliegenden Erfindung wird, anstatt nützliche Weginformation zu streichen, die verfügbar ist, wenn auf eine Pufferspeicherzeile zuerst zugegriffen wird, die Weginformation in der ATT für einen späteren Pufferspeicherzugriff gespeichert. Bei dieser Verwirklichung geben "Wegelemente" einen wirksamen Mechanismus für die Speicherung der Weginformation immer dann vor, wenn auf eine Pufferspeicherzeile zugegriffen wird. Dementsprechend enthält jeder Tabelleneintrag der ATT ein virtuelles Adress("VA")-Feld, ein physikalisches Adress("PA")-Feld und mehrere Wegelemente, die jedem Paar von ("VA")- und ("PA")-Feldern zugeordnet sind. Andere Mittel zur Speicherung der Weginformation sind möglich. Nachfolgend können die Wegelemente verwendet werden, um direkt ein einzelnes Segment des Pufferspeichers schnell zu indizieren, anstatt auf jedes und alle Segmente des Pufferspeichers Zugriff zu nehmen.
- Die Anzahl der Bits in jedem Wegelement ist abhängig von der Anzahl der "Wege". Ein Wegelement-Wert ist für einen ungültigen Wert reserviert. Bei dieser Verwirklichung ist die Anzahl der Wegelement-Bit(s) gleich dem Logarithmus mit der Basis 2 der Anzahl der Weg(e) plus I (log&sub2;(Weg + 1)). Zum Beispiel wird ein Einbit-Wegelement benötigt für einen Einweg-Pufferspeicher und ein Zweibit-Wegelement wird benötigt für einen Zweiweg-Pufferspeicher oder einen Dreiweg-Pufferspeicher.
- Der Zugriff zu dem Pufferspeicher über die ATT durch den CM ergibt sich wie folgt. Beim Empfang eine virtuellen Adresse einer Ziel-Pufferspeicherzeile versucht der CM, ein virtuelles Adressfeld von einem der ATT-Einträge mit einem Seiten-Indexteil der virtuellen Adresse abzugleichen. Wenn ein Abgleich vorliegt, wird ein Wegelement des ATT Eintrages unter Verwendung eines Seiten-Offsetteiles der virtuellen Adresse aufgesucht. Wenn der Wegelement-Wert gültig ist, indiziert der CM direkt eine einzelne Pufferspeicherzeile unter Verwendung des Wegelement-Wertes, des physikalischen Adressfeldes des ATT- Eintrages und des Seiten-Offsetteiles der virtuellen Adresse.
- Ein Versuch wird sodann gemacht, das AT-Feld der aufgesuchten Pufferspeicherzeile mit einem Teil des physikalischen Adressfeldes des ATT- Eintrages abzugleichen, d. h. eine "Gesundheits"-Prüfung durchzuführen. Wenn das AT Feld übereinstimmt, so sucht der Prozessor das Datenfeld der Pufferspeicherzeile unter Verwendung des Seiten-Offsetteiles der VA auf. Wenn das AT Feld nicht übereinstimmt, so wird die Ziel-Pufferspeicherzeile aus dem Hauptspeicher aufgesucht und der Wegelement-Wert sowohl in der ATT als auch in dem Hauptspeicher wird fortgeschrieben. In dem Fall, wo keine verfügbare Pufferspeicherzeile vorliegt, d. h. wo die sieben entsprechenden "Wege" besetzt sind, wird eine alte Pufferspeicherzeile für den Ersatz ausgewählt. Bei dieser Verwirklichung werden "schmutzige", d. h. modifizierte Pufferspeicherzeilen in den Hauptspeicher zurück geschrieben, wenn sie aus den Pufferspeicher ausgespühlt werden.
- Umgekehrt wird, wenn keine Übereinstimmung zwischen dem virtuellen Adressfeld von einem der ATT Einträge und einem Seiten-Indexzeil der virtuellen Adresse vorliegt, ein Versuch unternommen, den ATT-Eintrag aus dem Hauptspeicher aufzusuchen. Beim Abruf des ATT-Eintrages aus dem Hauptspeicher wird auf den Pufferspeicher, wie zuvor beschrieben, Zugriff genommen. Wenn jedoch der ATT-Eintrag nicht in dem Hauptspeicher vorliegt, d. h. ein Seitenfehler vorliegt, so muß ein neuer ATT-Eintrag gebildet werden.
- Zusammengefasst geben Wegelemente vorteilhaft einen effizienten und kompakten Mechanismus zum direkten Indizieren einer einzelnen Pufferspeicherzeile vor, wodurch in großem Umfang ein zweiter Pegel von Vergleichen von mehreren AT-Werten auf eine einzige "Gesundheits"-Prüfung reduziert wird, unabhängig von der Anzahl von Segmenten in dem Pufferspeicher. Ein Vorabruf von Daten aus der indizierten Pufferspeicherzeile ist nunmehr möglich, was den Aufsuchprozess weiter geradlinig macht und die Pufferspeicher- Zugriffsgeschwindigkeit wesentlich erhöht. Zusätzlich kann die kompakte ATT als Teil des Prozessor-IC's hergestellt werden, ohne dass die Prozessorausbeute wesentlich vermindert wird.
- Die Ziele, Merkmale und Vorteile des Systems der vorliegenden Erfindung gehen aus der folgenden Beschreibungen hervor, wobei:
- Fig. 1 ein Blockdiagramm eines Uni-Prozessor-Computersystems ist.
- Fig. 2 ein Blockdiagramm eines Multi-Prozessor-Computersystems ist.
- Fig. 3A ein Blockdiagramm ist, das einen Einweg-Pufferspeicher veranschaulicht.
- Fig. 3B ein Aussuchen von Daten aus einem Zweiweg-Pufferspeicher veranschaulicht.
- Fig. 4 ein Aussuchen von Daten aus einem 7-Weg-Pufferspeicher unter Verwendung einer virtuellen Adresse veranschaulicht.
- Fig. 5 und 6 Blockdiagramme eines Uni-Prozessor-Computersystems und eines Multi-Prozessor-Computersystems der vorliegenden Erfindung sind.
- Fig. 7 ein Blockdiagramm ist, das ein Ausführungsbeispiel einer kompakten Adressen-Umsetzungstabelle (ATT) veranschaulicht, die geeignet für den Einschluss in die Prozessoren der Fig. 5 und 6 ist und dem Zugriff eines Mehrweg-Pufferspeichers dient.
- Fig. 8A, 8B und 8C Flussdiagramme sind, die ein Verfahren zum Zugriff eines Mehrweg-Pufferspeichers unter Verwendung der ATT von Fig. 7 veranschaulichen.
- In der folgenden Beschreibung geben zahlreiche Einzelheiten ein sorgfältiges Verständnis der Erfindung vor. Diese Einzelheiten umfassen Funktionsblöcke und eine beispielhafte Adressen-Umsetzungstabelle (ATT,) um einen Designer bei der Verwirklichung eines wirksamen Pufferspeicher-Etikettierschemas zu unterstützen. Während das Pufferspeicher-Etikettierschema der vorliegenden Erfindung unter Bezugnahme auf spezifische Pufferspeicher- und Computer-Architekturen beschrieben wird, ist die Erfindung zusätzlich auf einen weiten Bereich von Speicher- und System-Architekturen anwendbar. Andererseits werden wohlbekannte Schaltkreise und Strukturen nicht in Einzelheiten beschrieben, um die Erfindung nicht unnötigerweise undeutlich zu machen.
- Obgleich die vorliegende Erfindung nützlich im Zusammenhang sowohl mit einem Uni-Prozessor-System 500 als auch mit einem Multi-Prozessor-System 600 der Fig. 5 und 6 ist, wird für die Zwecke der Erläuterung die ATT im Zusammenhang mit dem Uni-Prozessor-System 500 veranschaulicht. Computersysteme 500, 600 umfassen einen Hauptspeicher 510, 610, eine Systemverbindung 120, einen Hauptspeicher 130, eine Massenspeichereinrichtung 140, einen Monitor 160 und eine Tastatur/Maus 170.
- Gemäß der Erfindung umfassen Systeme 500, 600 ebenfalls einen Pufferspeicherverwalter (cm) 510a und CM's 611a, 612a, ... 619a zur Verwendung mit den entsprechenden ATT's 510b und 611b, 612b, ... 619b. In diesem Beispiel ist der Hauptspeicher 530 logisch in 8K-Byte-Seiten unterteilt. Virtuelle Adressen umfassen einen 51-Bit-Indexteil zum Indizieren von einer Abgrenzung einer ausgewählten Seite und einen 13-Bit-Offsetteil zum Zugriff auf ein Zielbyte innerhalb der ausgewählten Seite. In gleicher Weise umfassen physikalische Adressen einen 31-Bit-Seitenindexteil und einen 13-Bit- Seitenoffsetteil.
- Fig. 7 zeigt eine beispielhafte kompakte Adressen-Umsetztabelle (ATT) 720, eine virtuelle Adresse (VA) 830 und eine physikalische Adresse (PA) 740 zum wirksamen Zugriff auf einen 7Weg-Pufferspeicher 710. Die ATT 720 und der Pufferspeicher 710 sind entsprechend repräsentativ für die ATT S 10b und den Pufferspeicher 550.
- Gemäß der vorliegenden Erfindung wird anstelle des Streichens von nützlicher Weginformation, die verfügbar ist, wenn eine Pufferspeicherzeile erstmals in dem Pufferspeicher 710 gespeichert wird, die Weginformation in der ATT 720 für eine spätere Verwendung gespeichert. Bei dieser Verwirklichung geben "Wegelemente" der ATT 720 einen wirksamen Mechanismus für die Speicherung der Weginformation vor. Demgemäß umfaßt jeder der 512 Einträge der ATT 720, z. B. der Eintrag 720a ein Identifizierfeld, z. B. ein VA-Feld und ein PA Feld und zwei oder mehr Wegelemente. Da der Hauptspeicher 530 und die ATT 720 seitenorientiert sind, während der Pufferspeicher 710 unter Verwendung von Pufferspeicherzeilen organisiert ist, entspricht die Anzahl der Wegelemente in jedem ATT-Eintrag dem Verhältnis von Pufferspeicherzeilen zu einer Speicherseite. In diesem Beispiel umfaßt jeder Eintrag der ATT 720 128 Wegelemente. Es sei vermerkt, dass die Wegelemente entweder in der gleichen RAM-Struktur wie die VA- und PA Felder oder in einer getrennten RAM- Struktur gespeichert werden können.
- Die Anzahl der Bits in jedem Wegelement ist abhängig von der Anzahl von "Wegen". Ein Wegelement-Wert ist für einen ungültigen Wert reserviert. Somit ist die Anzahl der Weg-Bit(s) gleich dem Log 2 der Anzahl von Weg(en) plus eins (Log&sub2;(Weg + 1)). In diesem Beispiel werden Dreibit-Wegeelemente verwendet, um einen 7-Weg-Pufferspeicher 710 zu unterstützen.
- Der Pufferspeicher 710 ist ein assoziativer 7-Weg-Pufferspeicher, der in sieben wegorientierte Segmente 711, 712, ... 717 mit zwei Megabyte unterteilt ist. Jedes Segment umfaßt 32K-Pufferspeicherzeilen, wobei jede Pufferspeicherzeile 64 Byte lang ist. Um auf den Pufferspeicher 710 rasch zuzugreifen, kann der CM 510a als Teil des Prozessors 510 hergestellt sein, wie dies in Fig. 5 gezeigt ist. Ferner ist die ATT 720 kompakt in der Größe und kann ebenfalls als ATT 510b in dem Prozessor-IC enthalten sein.
- Bezugnehmend nunmehr auf das Flußdiagramm der Fig. 8a wird, wenn der Prozessor 510 einen Zugriff auf einen Speicherplatz in dem Hauptspeicher 630 benötigt, eine anfängliche Suche in dem Pufferspeicher 710 unternommen. Zunächst vergleicht der CM 510a den Seitenindexteil der virtuellen Adresse (VA) 730 mit dem VA-Feld eines jeden Eintrages in der ATT 720 (Schritt 820).
- Wenn eine Übereinstimmung in der ATT 720 (Schritt 825) vorliegt, z. B. eine Übereinstimmung mit dem ATT Eintrag 720a, so sucht sodann der CM 510a ein Wegelement aus dem Eintrag 720a unter Verwendung des Seitenoffsetteiles von VA 730 (Schritt 840) auf. Der Wegelement-Wert wird sodann auf Gültigkeit getestet (Schritt 850). In diesem Beispiel sind gültige binäre Bitwerte für Wegelemente "000b", "001b", ... "110b" entsprechend dem ersten Segment 711, dem zweiten Segment 712 und dem siebten Segment 717 des Pufferspeichers 710. Der Wegelement-Wert "111b" ist ungültig und zeigt einen Pufferspeicher (Zeilen)-Fehltreffer an. Speicher-Fehltreffer werden in einer Weise gehandhabt, wie es unten im Schritt 880 beschrieben wird.
- Wenn der Wegelement-Wert gültig ist, indiziert der CM 510a eine Ziel- Pufferspeicherzeile, z. B. die Zeile 712a unter Verwendung des Wegelement- Wertes, des PA Feldes, des ATT-Eintrages 720a und des Seitenoffsetteiles von VA 730 (Schritt 860). Als nächstes wird eine "Gesundheits"-Prüfung ausgeführt durch Vergleich des Adressenhinweis(AT)-Feldes der Ziel-Pufferspeicherzeile mit dem PA-Feld des ATT-Eintrages 720a (Schritt 870). Unterdessen kann der CM 510a wahlweise spekulativ das Datenfeld der Ziel-Pufferspeicherzeile 712a von dem Pufferspeicher 710 bei Vorwegnahme eines Pufferspeichertreffers abrufen. Es sei vermerkt, dass die Gesundheitsüberprüfung nur mit dem AT-Feld einer einzigen Pufferspeicherzeile 712a erfolgt, unabhängig von der Anzahl der Segmente in dem Pufferspeicher 710 (Schritt 875).
- Nach dem Durchlauf der Gesundheitsprüfung, d. h. bei einem Pufferspeicher (Zeilen) Treffer wird das spekulativ abgerufene Datenfeld der Ziel- Pufferspeicherzeile 712a dem anfordernden Prozessor 510 vorgegeben (Schritt 890). Wenn die Gesundheitsprüfung fehlschlägt, d. h. ein Pufferspeicher- Fehltreffer vorliegt, müßte dann eine neue Ziel-Pufferspeicherzeile aus dem Hauptspeicher 530 aufgesucht werden, wie dies unten beschrieben wird (s. Schritt 880, der unten in Einzelheiten beschrieben ist).
- Wenn umgekehrt ein übereinstimmender ATT-Eintrag nicht in der ATT 720 vorliegt (Schritt 825), wird ein Versuch unternommen, einen übereinstimmenden ATT-Eintrag aus dem Hauptspeicher 530 abzurufen (830). In dem Fall, wo ein übereinstimmender ATT-Eintrag in dem Hauptspeicher 530 aufgefunden wird (835), wird die ATT 720 fortgeschrieben (s. Schritt 838, der in Einzelheiten unten beschrieben wird). Als nächstes führt der CM 510a den Schritt 840 über den Schritt 880 aus, wie oben beschrieben wurde.
- Rückkehrend zu dem Test 835 wird, wenn ein übereinstimmender ATT-Eintrag im Hauptspeicher 530 nicht lokalisiert werden kann, d. h. wenn ein Seitenfehler vorliegt, ein neuer ATT-Eintrag für die Tabelle 720 in der unten beschriebenen Weise gebildet (s. Schritt 837, der unten in Einzelheiten beschrieben wird).
- Fig. 8b ist ein detailliertes Flußdiagramm, das den Prozeß der Fortschreibung eines Eintrages in der ATT 720 veranschaulicht. Zunächst tastet der CM 510a die ATT 720 bei der Suche nach einem freien ATT-Eintrag ab (Schritt 630a). Wenn die ATT 720 voll ist, wird ein alter (vorliegender) ATT-Eintrag für den Ersatz ausgewählt (Schritt 838b). Eine Anzahl wohlbekannter Algorithmen kann verwendet werden, um den alten ATT-Eintrag auszuwählen, z. B. den zuletzt benutzten (LRU). Der ausgewählte alte ATT-Eintrag wird sodann zurück in den Hauptspeicher 530 geschrieben (Schritt 838c).
- In jedem Fall (Test 838a) wird der übereinstimmende oder neue ATT-Eintrag in die ATT 720 geschrieben (Schritt 838d).
- Es sei vermerkt, dass der alte ATT-Eintrag temporär durch den CM 510a gerade in dem Fall zurückgehalten werden kann, wo eine (schmutzige) Pufferspeicherzeile in den Hauptspeicher 530 zurückgeschrieben werden muß. Eine Pufferspeicherzeile ist "schmutzig", wenn ihr Inhalt sich von der älteren Kopie im Hauptspeicher 530 unterscheidet. Bei dieser Verwirklichung wird jedoch zum Zwecke der Wirksamkeit die Pufferspeicherzeile (n), die dem alten ATT-Eintrag zugeordnet ist, nicht in den Hauptspeicher 530 zurückgeschrieben, es sei denn die Pufferspeicherzeile (n) ist sowohl "schmutzig" als auch nachfolgend von dem Pufferspeicher 710 ausgespült.
- Fig. 8C ist ein detailliertes Flußdiagramm, das einen Ersatz einer Pufferspeicherzeile im Pufferspeicher 710 veranschaulicht. Wenn die Ziel- Pufferspeicherzeile nicht in dem Pufferspeicher 710 aufgefunden wird, d. h. bei einem Pufferspeicher-Fehltreffer, muß die Ziel-Pufferspeicherzeile aus dem Hauptspeicher 530 aufgesucht werden (881). Da das Datenfeld der aufgesuchten (neuen) Ziel-Pufferspeicherzeile rasch den Prozessor 510 vorgegeben werden kann (Schritt 882), kann das Puffern der neuen Ziel-Pufferspeicherzeile in dem Pufferspeicher 710 neben dem kritischen Weg in bezug auf den Prozessor 110 vervollständigt werden.
- Der CM 510a sucht nach einem geeigneten Speicherort in dem Pufferspeicher 710 aus sieben möglichen Pufferspeicherzeilen entsprechend den sieben Segmenten 711, 712, ... 717 zum Puffern der Ziel(neuen)-Pufferspeicherzeile (Schritt 883). Bei dieser Verwirklichung wird der geeignete Pufferspeicher-Speicherplatz für den Ersatz ausgewählt durch Verwendung eines Algorithmus aus einer Anzahl wohlbekannter Algorithmen, z. B. LRU. Wenn der Inhalt der ausgewählten Pufferspeicherzeile, d. h. die alte Pufferspeicherzeile "schmutzig" ist, z. B. wenn das "Zustands"-Bit gesetzt ist, so muß die alte Pufferspeicherzeile zurück in den Hauptspeicher 530 unter Verwendung des PA-Feldes der ATT 720 (Schritt 884) kopiert werden.
- Die Ziel(neue)-Pufferspeicherzeile kann nun in dem ausgewählten Speicherplatz der Pufferspeicherzeile gespeichert werden (Schritt 885).
- Als nächstes wird der Wegelement-Wert des übereinstimmenden/fortgeschriebenen ATT-Eintrages fortgeschrieben (Schritt 886). Zusätzlich wird der gleiche Wegelement-Wert im Hauptspeicher 530 gespeichert, um die Ziel-Pufferspeicherzeile als "zuvor gepuffert" zu markieren (Schritt 887).
- Die Speicherung des Wegelement-Wertes im Hauptspeicher 530 zur Markierung einer zuvor gepufferten Pufferspeicherzeile verhindert ein "Pseudonym"-Problem. Das Pseudonym-Problem tritt auf, wenn der CM 510a versucht, eine zweite Pufferspeicherzeile zu puffern, die eine unterschiedliche VA aber eine identische PA besitzt. In einer solchen Situation sollten beide ATT-Einträge den gleichen Wegelement-Wert beinhalten, entsprechend der gemeinsamen Pufferspeicherzeile. Somit wird durch Speicherung des Wegelement-Wertes im Hauptspeicher 530 jedesmal, wenn eine Pufferspeicherzeile gepuffert wird, später wenn der CM 510a die gleiche Pufferspeicherzeile zu erreichen versucht (d. h. gleiche PA aber unterschiedliche VA), der CM 510a in die Lage versetzt, den gleichen Wegelement-Wert dem zweiten ATT Eintrag zuzuordnen, so dass beide ATT- Einträge die einzige Kopie der gepufferten Zeile im gepufferten Speicher 710 indexieren können.
- In einem anderen Ausführungsbeispiel werden anstelle der Speicherung von Wegelementen im Hauptspeicher 530 jedesmal, wenn ein ATT-Eintrag in die ATT 720 geladen wird, alle entsprechenden Wegelemente ungültig gemacht. Nachfolgend werden Pufferspeicherzeilen-Fehltreffer auftreten und die Wegelemente werden fortgeschrieben. Dies eliminiert das Erfordernis der Speicherung der Wegelement-Information im Hauptspeicher 530, wenn ein ATT- Eintrag ersetzt wird.
- In noch einem weiteren Ausführungsbeispiel werden zusätzlich zu dem "Wegelement ungültig"-Zustand, Zustände wie z. B. "gemeinsam" benutzt zu jedem Wegelement in der ATT 720 gespeichert. Eine gemeinsam benutzte Pufferspeicherzeile kann nur durch den CM 510a gelesen werden und somit niemals "schmutzig" sein. Somit verursachen duplizierte gemeinsam benutzte Pufferspeicherzeilen kein Pseudonym-Problem. Wenn nachfolgend das Bedürfnis zum Schreiben in gemeinsam benutzte Pufferspeicherzeilen entsteht, muß der CM 510a zunächst abgetastet werden, um duplizierte Kopien der Ziel- Pufferspeicherzeile zu eliminieren (invalidieren), bevor über die (einzige) verbleibende gemeinsam benutzte Pufferspeicherzeile geschrieben wird und ihr Zustand von gemeinsam benutzt in schmutzig geändert wird.
- In einem noch weiteren Ausführungsbeispiel wird die Weginformation nicht in dem Hauptspeicher 530 gespeichert. Stattdessen wird bei einem Pufferspeicher- Fehltreffer das Pseudonym-Problem vermieden durch Vergleich des AT-Feldes aller sieben Wege mit der angeforderten Adresse, um herauszufinden, ob die angeforderte Pufferspeicherzeile bereits in dem Pufferspeicher 710 vorliegt. Diese Vergleiche können parallel mit dem Speicherzugriff erfolgen. Das Schema ist effektiver als der Stand der Technik, da der Mehrweg-Vergleich nur benötigt wird, wenn die Wegelement-Information nicht aus der ATT 720 verfügbar ist.
- Ein Seitenfehler tritt auf, wenn ein übereinstimmender Tabelleneintrag nicht im Hauptspeicher 530 aufgefunden werden kann und ein neuer ATT-Eintrag, z. B. der Eintrag 720a in der ATT 720 gebildet werden kann. Nachfolgend wird die ATT 720 fortgeschrieben, wie im Schritt 838 zuvor beschrieben wurde. Die Ziel- Pufferspeicherzeile wird sodann aus dem Hauptspeicher 530 aufgesucht, die Daten dem Prozessor 510 vorgegeben und das entsprechende Wegelement des ATT-Eintrages 720a wird fortgeschrieben, wie dies im Schritt 880 zuvor beschrieben wurde. In dem Fall, wo die Zielseite nicht in dem Hauptspeicher 530 aufgefunden wird, wird die Zielseite aus der Massenspeichereinrichtung 140 aufgesucht und im Hauptspeicher 530 gespeichert.
- Wegelemente der vorliegenden Erfindung bieten eine Anzahl von Vorteilen gegenüber dem Stand der Technik.
- Diese Wegelemente bilden eine wirksame und kompakte Ablage für Weginformation des Pufferspeichers 710 und ermöglichen die Herstellung der ATT 720 als Teil des Prozessors 510 ohne wesentliche Erhöhung der Größe des Prozessor-IC's, während die Zugriffsgeschwindigkeit des Pufferspeichers 710 erhöht wird.
- Zusätzlich wird der zweite Pegel der Vergleiche von AT-Werten in großem Maß ebenfalls vereinfacht. Da die Wegelemente einen direkten Index zu einer einzelnen Ziel-Pufferspeicherzeile eines einzelnen Segmentes vorgeben, z. B. dem Segment 712 des Pufferspeichers 710, muß nur ein einziger Vergleich des ATT- Wertes der Pufferspeicherzeile, d. h. eine einzige Gesundheitsprüfung durchgeführt werden, unabhängig von der Anzahl der Segmente in dem beispielhaften Pufferspeicher 710. Ferner ist ein Vorabruf des Datenteiles der Ziel-Pufferspeicherzeile nunmehr möglich, was ferner den Aufsuchprozeß vereinfacht und die Pufferspeicher-Zugriffsgeschwindigkeit wesentlich erhöht.
- Während die Erfindung unter Bezugnahme auf spezifische Ausführungsbeispiele beschrieben worden ist, sind zahlreiche Hinzufügungen und Modifikationen möglich, ohne dass von dem Rahmen der Erfindung abgewichen wird, wie er durch die folgenden Ansprüche definiert ist. Z. B. kann die Anzahl der Wege größer oder kleiner sein. Zusätzlich kann die Größe der Pufferspeicherzeile und der Seite ebenfalls kleiner oder größer sein.
Claims (7)
1. Ein Verfahren zum Zugriff auf einen Mehrweg-Pufferspeicher (550, 710), der
einem Computersystem (500) mit einem Prozessor (510) und einem
Hauptspeicher (530) zugeordnet ist, wobei der Mehrweg-Pufferspeicher
mehrere Pufferzeilen (711) besitzt, die in zwei- oder mehr Segmente
entsprechend der Zahl der Wege des Mehrweg-Pufferspeichers unterteilt sind,
wobei das Verfahren die Schritte umfasst::
Empfang einer virtuellen Adresse (730), einer Ziel-Pufferspeicherzeile, wobei
die virtuelle Adresse der Ziel-Pufferspeicherzeile einen Seiten-Indexteil und
einen Seiten-Offsetteil besitzt;
Anpassung (825) eines virtuellen Adressfeldes eines Adressen-
Übersetzungstabellen (ATT)-Eintrages (720a) an den Seiten-Indexteil;
Wiederauffinden (840) eines Wegelementes des ATT-Eintrages unter
Verwendung des Seiten-Offsetteiles;
Indizierung (860) einer einzelnen Pufferspeicherzeile eines Einzelsegmentes
des Mehrweg-Pufferspeichers unter Verwendung des Wegelementes, eines
physikalischen Adressfeldes des ATT-Eintrages und des Seiten-Offsetteiles;
Anpassung (870) eines Adressenhinweis (AT-Feldes) der einzelnen
Pufferspeicherzeile an das physikalische Adressfeld; und
Wiederauffinden (890) eines Datenfeldes der einzelnen Pufferspeicherzeile
unter Verwendung des Seiten-Offsetteiles.
2. Verfahren nach Anspruch 1, wobei der Schritt der Anpassung des virtuellen
Adressfeldes den Schritt umfasst::
Wiederauffinden des Inhaltes des ATT-Eintrages aus dem
Hauptspeicher;
Auswahl eines alten ATT-Eintrages zum Rückschreiben in den
Hauptspeicher; und
Rückschreiben des ausgewählten alten ATT-Eintrages in den
Hauptspeicher.
3. Verfahren nach Anspruch 1, wobei der Schritt der Anpassung des AT-Feldes
den Schritt umfasst::
Wiederauffinden des Inhaltes der einzelnen Pufferspeicherzeile aus dem
Hauptspeicher und Fortschreiben des Wegelementes; Auswahl einer alten
Pufferspeicherzeile des Mehrweg-Pufferspeichers zum Rückschreiben in den
Hauptspeicher; und
Rückschreiben der ausgewählten alten Pufferspeicherzeile in den
Hauptspeicher.
4. Computersystem (500) aufweisend:
einen Prozessor (510), der an einen Mehrweg-Pufferspeicher (550, 710) mit
mehreren Pufferspeicherzeilen (711) angeschlossen ist, die in zwei oder mehr
Segmente entsprechend der Anzahl der Wege des Mehrweg-Pufferspeichers
unterteilt sind, wobei der Prozessor umfasst:
eine Adressen-Übersetzungstabelle (ATT) (510b, 720) mit mehreren
Einträgen, wobei jeder Eintrag ein Identifizierfeld und ein Weginformationsfeld
umfasst, das Weginformationsfeld ein Wegelement ist und das Identifizierfeld
des einen Eintrages eine virtuelles Adressfeld und ein physikalisches
Adressfeld umfasst; und
einen Pufferspeicherverwalter (510a) (cm), der konfiguriert ist, um
eine Adresse einer Ziel-Pufferspeicherzeile zu empfangen, wobei die Adresse
der Ziel-Pufferspeicherzeile einen Seiten-Indexteil und einen Seiten-Offsetteil
besitzt und die Adresse der Ziel-Pufferspeicherzeile eine virtuelle Adresse ist;
das Adressfeld des einen Eintrages der Adressen-Übersetzungstabelle an den
Seiten-Indexteil anzupassen;
das Weginformationsfeld des einen Eintrages unter Verwendung des Seiten-
Offsetteiles wiederaufzufinden; und
eine einzige Pufferspeicherzeile eines einzigen Segmentes des Mehrweg-
Pufferspeichers unter Verwendung des Wegelementes, des physikalischen
Adressfeldes des einen Eintrages und des Seiten-Offsetteiles zu indizieren;
eine Systemverbindung (120), die an den Prozessor angeschlossen ist; und
einen Hauptspeicher (530), der an die Systemverbindung angeschlossen ist.
5. Computersystem nach Anspruch 4, wobei der Pufferspeicherverwalter
konfiguriert ist, um
ein Adresshinweis (AT)-Feld der Pufferspeicherzeile an einen Teil des
physikalischen Adressfeldes des einen Eintrages anzupassen; ein Datenfeld
der Pufferspeicherzeile unter Verwendung des Seiten-Offsetteiles wieder
aufzusuchen; und
das Datenfeld an den Prozessor vorzugeben.
6. Computersystem nach Anspruch 4, wobei der Pufferspeicherverwalter ferner
konfiguriert ist, um:
den Inhalt des einen Eintrages von dem Hauptspeicher wieder aufzusuchen;
einen alten Eintrag zum Rückschreiben in den Hauptspeicher auszuwählen;
und
den ausgewählten alten Eintrag in den Hauptspeicher zurückzuschreiben.
7. Computersystem nach Anspruch 5, wobei der Pufferspeicherverwalter ferner
konfiguriert ist, um:
den Inhalt der Pufferspeicherzeile von dem Hauptspeicher wieder aufzufinden
und das Wegelement fortzuschreiben;
eine alte Pufferspeicherzeile des Mehrweg-Pufferspeichers zum
Rückschreiben in den Hauptspeicher auszuwählen; und
die ausgewählte alte Pufferspeicherzeile in den Hauptspeicher
zurückzuschreiben.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/499,590 US5778427A (en) | 1995-07-07 | 1995-07-07 | Method and apparatus for selecting a way of a multi-way associative cache by storing waylets in a translation structure |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69626070D1 DE69626070D1 (de) | 2003-03-13 |
DE69626070T2 true DE69626070T2 (de) | 2003-09-25 |
Family
ID=23985861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69626070T Expired - Fee Related DE69626070T2 (de) | 1995-07-07 | 1996-07-05 | Verfahren und Vorrichtung zum Etikettieren eines Mehrweg-assoziativen Cache-Speichers |
Country Status (4)
Country | Link |
---|---|
US (1) | US5778427A (de) |
EP (1) | EP0752662B1 (de) |
JP (1) | JPH09223067A (de) |
DE (1) | DE69626070T2 (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6026413A (en) * | 1997-08-01 | 2000-02-15 | International Business Machines Corporation | Determining how changes to underlying data affect cached objects |
US6256712B1 (en) | 1997-08-01 | 2001-07-03 | International Business Machines Corporation | Scaleable method for maintaining and making consistent updates to caches |
US6212602B1 (en) * | 1997-12-17 | 2001-04-03 | Sun Microsystems, Inc. | Cache tag caching |
US6622208B2 (en) * | 2001-03-30 | 2003-09-16 | Cirrus Logic, Inc. | System and methods using a system-on-a-chip with soft cache |
KR100389867B1 (ko) * | 2001-06-04 | 2003-07-04 | 삼성전자주식회사 | 플래시 메모리 관리방법 |
US6678792B2 (en) | 2001-06-22 | 2004-01-13 | Koninklijke Philips Electronics N.V. | Fast and accurate cache way selection |
DE10158393A1 (de) | 2001-11-28 | 2003-06-12 | Infineon Technologies Ag | Speicher für die Zentraleinheit einer Rechenanlage, Rechenanlage und Verfahren zum Synchronisieren eines Speichers mit dem Hauptspeicher einer Rechenanlage |
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
JP2005215911A (ja) * | 2004-01-29 | 2005-08-11 | Hitachi Ltd | 情報処理装置 |
US7237067B2 (en) * | 2004-04-22 | 2007-06-26 | Hewlett-Packard Development Company, L.P. | Managing a multi-way associative cache |
US7725620B2 (en) * | 2005-10-07 | 2010-05-25 | International Business Machines Corporation | Handling DMA requests in a virtual memory environment |
US7533198B2 (en) * | 2005-10-07 | 2009-05-12 | International Business Machines Corporation | Memory controller and method for handling DMA operations during a page copy |
TWI377473B (en) * | 2008-11-21 | 2012-11-21 | Sunplus Innovation Technology Inc | Serial interface cache controller, control method and micro-controller system using the same |
US8806137B2 (en) * | 2011-06-17 | 2014-08-12 | Lsi Corporation | Cache replacement using active cache line counters |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
US10671543B2 (en) * | 2013-11-21 | 2020-06-02 | Samsung Electronics Co., Ltd. | Systems and methods for reducing first level cache energy by eliminating cache address tags |
US10019368B2 (en) | 2014-05-29 | 2018-07-10 | Samsung Electronics Co., Ltd. | Placement policy for memory hierarchies |
CN105208596A (zh) * | 2014-06-17 | 2015-12-30 | 中兴通讯股份有限公司 | 一种表头压缩方法、解压方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3699533A (en) * | 1970-10-29 | 1972-10-17 | Rca Corp | Memory system including buffer memories |
US5341483A (en) * | 1987-12-22 | 1994-08-23 | Kendall Square Research Corporation | Dynamic hierarchial associative memory |
US5055999A (en) * | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
EP0461926B1 (de) * | 1990-06-15 | 1998-09-02 | Compaq Computer Corporation | Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien |
US5235697A (en) * | 1990-06-29 | 1993-08-10 | Digital Equipment | Set prediction cache memory system using bits of the main memory address |
US5418922A (en) * | 1992-04-30 | 1995-05-23 | International Business Machines Corporation | History table for set prediction for accessing a set associative cache |
US5640532A (en) * | 1994-10-14 | 1997-06-17 | Compaq Computer Corporation | Microprocessor cache memory way prediction based on the way of previous memory read |
-
1995
- 1995-07-07 US US08/499,590 patent/US5778427A/en not_active Expired - Lifetime
-
1996
- 1996-07-05 EP EP96304967A patent/EP0752662B1/de not_active Expired - Lifetime
- 1996-07-05 DE DE69626070T patent/DE69626070T2/de not_active Expired - Fee Related
- 1996-07-08 JP JP8195285A patent/JPH09223067A/ja not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
JPH09223067A (ja) | 1997-08-26 |
EP0752662B1 (de) | 2003-02-05 |
DE69626070D1 (de) | 2003-03-13 |
US5778427A (en) | 1998-07-07 |
EP0752662A1 (de) | 1997-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69626070T2 (de) | Verfahren und Vorrichtung zum Etikettieren eines Mehrweg-assoziativen Cache-Speichers | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE69518676T2 (de) | Cache-Speicheranordnung für einen Speicher | |
DE69637294T2 (de) | Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung | |
DE69424767T2 (de) | Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers | |
DE69629800T2 (de) | Adressenübersetzungsbuffer in einem rechnersystem | |
DE60320026T2 (de) | Verbessertes speichermanagement für echtzeit-anwendungen | |
DE3688192T2 (de) | Seitenorganisierter cachespeicher mit virtueller adressierung. | |
DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
DE69317729T2 (de) | Cache-Etikettenspeicher | |
DE69030945T2 (de) | Zweistufiger Adressübersetzungspufferspeicher mit partiellen Adressen zur Geschwindigkeitserhöhung | |
DE69721590T2 (de) | Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung | |
DE3586635T2 (de) | Vorausholungsanordnung fuer einen schnellpufferspeicher. | |
DE69616223T2 (de) | Datenstromvorausladepufferspeicher mit Datenstromfilters | |
DE69132005T2 (de) | Vorrichtung und Verfahren für einen raumsparenden Adressenübersetzungspuffer für inhaltsadressierbaren Speicher | |
DE69629140T2 (de) | Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index | |
DE69616465T2 (de) | Cachespeicher mit Datenvorausladung | |
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE68923437T2 (de) | Adressenübersetzung für Seiten mehrfacher Grösse. | |
DE69029173T2 (de) | Mikroprozessor | |
DE68902193T2 (de) | Datenspeicheranordnung. | |
DE69229667T2 (de) | Simulierte cachespeicher-assoziativität | |
DE10002120B4 (de) | Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung | |
DE202017104841U1 (de) | Hybriddatenspeichermanagement | |
DE112008001666T5 (de) | Hierarchische Cache-Tag-Architektur |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |