[go: up one dir, main page]

DE19516949A1 - Speichervorrichtung zum Speichern von Daten - Google Patents

Speichervorrichtung zum Speichern von Daten

Info

Publication number
DE19516949A1
DE19516949A1 DE19516949A DE19516949A DE19516949A1 DE 19516949 A1 DE19516949 A1 DE 19516949A1 DE 19516949 A DE19516949 A DE 19516949A DE 19516949 A DE19516949 A DE 19516949A DE 19516949 A1 DE19516949 A1 DE 19516949A1
Authority
DE
Germany
Prior art keywords
memory
auxiliary memory
entry
address space
address
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.)
Withdrawn
Application number
DE19516949A
Other languages
English (en)
Inventor
Jochen Liedtke
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GMD GmbH
Original Assignee
GMD GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GMD GmbH filed Critical GMD GmbH
Priority to DE19516949A priority Critical patent/DE19516949A1/de
Publication of DE19516949A1 publication Critical patent/DE19516949A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

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 Erfindung betrifft eine Speichervorrichtung zum Speichern von Daten. Insbesondere betrifft die Erfin­ dung einen Cache oder einen Translation Lookaside Buffer (TLB) wobei die Neuerung in einem insbesondere parallel arbeitenden Flush-Buffer besteht, der Flushing größerer und kleinerer Bereiche erlaubt, ohne daß so­ fort der ganze Cache bzw. TLB geflusht werden muß.
Moderne Prozessoren benutzen TLBs für die schnelle Um­ setzung virtueller in reale Adressen. Typischerweise befinden sich TLB und Cache auf dem Prozessorchip. Bei real indizierten Caches sind sie serial angeordnet (Fig. 4), bei virtuell indizierten, real markierten Caches parallel (Fig. 5).
Der TLB ist dabei ein spezieller Cache für die Adreßum­ setzung. Zwar werden auch voll-assoziative TLBs einge­ setzt, in der Regel sind TLBs jedoch n-Wege assoziativ. Fig. 6 zeigt einen direct-mapped TLB, also einen 1-Wege assoziativen TLB. Der höherwertige Teil v′ der virtuel­ len Adresse v wird benutzt, um eine Zeile (Speicher- Eintrag) des TLBs anzuwählen. Dort finden sich die zu diesem Eintrag gehörige virtuelle Seitenadresse v′i, die reale Seitenadresse r′i sowie in Fig. 6 nicht auf­ geführte Statusbits, die unter anderem angeben, ob der Eintrag überhaupt gültig ist. Wenn er gültig ist und v′i mit der aktuellen Seitenadresse v′ übereinstimmt, liegt ein TLB-Treffer vor und die Realadresse wird aus dem niederwertigen Teil v′′ der virtuellen Adresse und der vom TLB gelieferten realen Seitenadresse r′i zusam­ mengesetzt.
Ein n-Wege assoziativer TLB unterscheidet sich vom direct-mapped TLB dadurch, daß sich in einer Zeile meh­ rere Einträge befinden, die gleichzeitig angewählt und parallel gegen v′ geprüft werden. Ein Treffer liegt dann vor, wenn einer dieser Einträge zutrifft; dessen r′i und Statusbits werden dann zur Bildung der Real­ adresse r und Validierung des Zugriffs benutzt.
TLBs kürzen den Vorgang der Adreßumsetzung ab. Wird die definierende Adreßabbildung, d. h. eine oder mehrere Page Table Einträge, verändert, müssen aus Konsistenz­ gründen diejenigen TLB-Einträge ungültig gemacht "(ge­ flusht") oder entsprechend verändert werden, die von der Änderung tangiert sind.
Bezieht sich die Änderung in der Adreßabbildung nur auf eine Seite, reicht es aus, den entsprechenden Eintrag zu flushen oder abzuändern, sofern er im TLB ist. Da es sich dabei um höchstens einen TLB-Eintrag handelt, ist der Aufwand mit einem normalen Umsetzschritt des TLBs vergleichbar: der TLB wird mit der virtuellen Seiten­ adresse angesprochen, und bei einem Treffer wird der Eintrag ungültig gemacht oder verändert.
Bei Änderungen, die größere Bereiche umfassen, wird dieses Verfahren schnell zu aufwendig. Für einen vir­ tuellen Bereich mit m Seiten würde man nämlich m Schritte benötigen. Bei voll-assoziativen TLBs läßt sich das Problem effizient lösen, indem man bedingtes Flushing parallel auf allen TLB-Einträgen ausführt. Leider ist der Hardware-Aufwand dafür in der Regel zu groß.
Bei n-Wege assoziativen TLBs ist die Durchmusterung des gesamten TLBs teuer und nicht skalierbar, k/n Schritte bei einem TLB mit k Einträgen. Deshalb wird in solchen Fällen üblicherweise der gesamte TLB geflusht, was sich in einem Schritt realisieren läßt. Mit zunehmender TLB- Größe wird das wegen der dadurch induzierten TLB-Misses immer uninteressanter.
Der Erfindung liegt die Aufgage zugrunde, eine Speichervorrichtung, insbesondere n-Wege assoziativer Cache bzw. TLB anzugeben, die Flushing größerer Adreß­ raum-Bereiche (virtueller Regionen) effizient ermög­ licht.
Zur Lösung dieser Aufgabe wird mit der Erfindung eine Speichervorrichtung mit den Merkmalen des Anspruchs 1 vorgeschlagen. Die Merkmale vorteilhafter Weiterbildun­ gen der Erfindung sind jeweils in den Unteransprüchen angegeben.
Die erfindungsgemäße Speichervorrichtung ist mit einem Nutzspeicher versehen, der mehrere mittels Adressen adressierbare Speicher-Einträge aufweist. Bei diesem Nutzspeicher kann es sich beispielsweise um einen Cache-Speicher oder um einen Translation-Lookaside- Buffer handeln, der als spezieller Cache-Speicher für die Adreßumsetzung aufgefaßt werden kann. Der Nutz­ speicher der erfindungsgemäßen Vorrichtung weist insbe­ sondere wesentlich weniger Speicher-Einträge auf als der Adreßraum Adressen zur Adressierung des Nutz­ speichers umfaßt. Jeder Speicher-Eintrag ist mit einem Datenfeld versehen, in dem ein oder mehrere Datenwörter abspeicherbar sind. Zusätzlich zu dem Datenfeld weist jeder Speicher-Eintrag ein Statusfeld auf, das in min­ destens einen Einschränk-Zustand zum Einschränken eines Schreib/Lese-Zugriffs auf das Datenfeld und in min­ destens einen Nichteinschränk-Zustand zum Nichtein­ schränken eines Schreib/Lese-Zugriffs auf das Datenfeld überführbar ist. Jeder Speicher-Eintrag weist darüber hinaus weitere Felder auf, insbesondere ein Markie­ rungsfeld und ein Gültigkeits-/Ungültigkeits-Feld. Beim Ansprechen des Nutzspeichers wird die Adresse oder Teile davon mit dem Inhalt der Markierungsfelder sämt­ licher adressierter Nutzspeicher-Einträge verglichen. Im Falle einer Übereinstimmung mit einem Markierungs­ feld kann dann ein Schreib/Lese-Zugriff auf das Daten­ feld erfolgen, wenn dieses einerseits durch das Gültig­ keits-/Ungültigkeits-Feld als gültig markiert ist und entweder sich das Statusfeld in einem Nichteinschränk- Zustand befindet oder sich das Statusfeld in einem Ein­ schränk-Zustand befindet sowie die beim Ansprechen des Nutzspeichers verwendete Adresse nicht Teil mindestens eines im Hilfsspeicher abgespeicherten Adreßraum-Be­ reichs ist.
Ferner ist die erfindungsgemäße Speichervorrichtung mit einem Hilfsspeicher versehen, der ein oder mehrere Speicher-Einträge aufweist, in die Daten abspeicherbar sind, welche einen Bereich des Adreßraums spezifizie­ ren. Mittels dieses Hilfsspeichers (nachfolgend auch als Flush-Lookaside-Buffer, abgekürzt FLB, bezeichnet) läßt sich der Nutzspeicher effizient bereichsselektiv flushen, nämlich durch einen einzigen Operations­ schritt.
Die Verfahrensweise zum bereichsselektiven Flushen des Nutzspeichers ist wie folgt: Sobald in den Hilfs­ speicher ein Adreßraum-Bereich abgespeichert wird, wer­ den die Statusfelder sämtlicher Nutzspeicher-Einträge in einen Einschränk-Zustand überführt. Bei einer danach erfolgenden Adressierung eines Nutzspeicher-Eintrages kann dann nicht auf das Datenfeld dieses Nutzspeicher- Eintrages ein Schreib/Lese-Zugriff erfolgen, wenn die Adresse innerhalb mindestens eines im Hilfsspeicher gespeicherten Adreßraum-Bereichs liegt und sich das Statusfeld in einem Einschränk-Zustand befindet. Um dies zu Ermitteln, wird die zur Adressierung des Nutz­ speicher-Eintrages verwendete Adresse daraufhin über­ prüft, ob sie von mindestens einem im Hilfsspeicher gespeicherten Adreßraum-Bereich umfaßt ist. Ist dies der Fall, so gibt der Hilfsspeicher ein diesen Zustand anzeigendes Signal (nachfolgend auch Fhit genannt) aus. Anders herum ausgedrückt kann nach einem Flushing des Nutzspeichers weiterhin auf die Datenfelder sämtlicher derjenigen Nutzspeicher-Einträge zugegriffen werden, die mittels einer Adresse adressierbar sind, welche nicht von mindestens einem im Hilfsspeicher gespeicher­ ten Adreßraum-Bereich umfaßt ist. Bei der Realisierung des Nutzspeichers als TLB oder Cache können also zeit­ aufwendige Table Walk bzw. Hauptspeicherzugriffe für die nicht von dem selektiven Flushing betroffenen Nutz­ speicher-Einträge vermieden werden, und zwar bei ver­ hältnismäßig geringem Hard- und Software-Aufwand, da lediglich ein Hilfsspeicher neben dem Nutzspeicher vor­ gesehen werden muß und die Speicher-Einträge des Nutz­ speichers um das Statusfeld ergänzt werden müssen, wobei diese Statusfelder im Bedarfsfall auf einen zen­ tralen Befehl hin simultan in einen Einschränk-Zustand und selektiv in einen Nichteinschränk-Zustand überführ­ bar sind.
Vorteilhafterweise wird beim Laden eines Nutzspeicher- Eintrages, bei dem dieser initialisiert wird (im Regel­ fall werden dabei Daten in den Nutzspeicher-Eintrag ge­ schrieben und dieser dann als gültig markiert), das Statusfeld des betreffenden Nutzspeicher-Eintrages genau dann in einen Einschränk-Zustand überführt, wenn die Adresse, mit der der Nutzspeicher-Eintrag adres­ siert worden ist, nicht Teil mindestens eines im Hilfs­ speicher gespeicherten Adreßraum-Bereichs ist. Ist hin­ gegen die Adresse Teil mindestens eines in dem Hilfs­ speicher gespeicherten Adreßraum-Bereichs, so wird das Statusfeld des adressierten Nutzspeicher-Eintrages in einen Nichteinschränk-Zustand überführt.
Alternativ dazu kann vorgesehen sein, das Statusfeld eines adressierten Nutzspeicher-Eintrags bei einem Lade-Zugriff stets in einen Nichteinschränk-Zustand zu überführen, und zwar unabhängig davon, ob die zur Adressierung verwendete Adresse Teil mindestens eines in dem Hilfsspeicher gespeicherten Adreßraum-Bereichs ist oder nicht. Befindet sich das Statusfeld eines adressierten Nutzspeicher-Eintrages vor einer Adressie­ rung in einem Einschränk-Zustand (was insbesondere bei der Initialisierung des Nutzspeichers oder nach jedem Flushing der Fall ist) und ist die zur Adressierung verwendete Adresse nicht Teil mindestens eines im Hilfsspeicher gespeicherten Adreßraum-Bereichs, so wird das Statusfeld bei der Adressierung in einen Nichtein­ schränk-Zustand überführt, so daß von da ab bis zum Überführen des Statusfeldes in den Einschränk-Zustand eine Abfrage des Hilfsspeichers bei Ansprache des Nutz­ speicher-Eintrages nicht mehr notwendig ist.
Zweckmäßigerweise werden beim Einschreiben von einen Bereich des Adreßraums spezifizierenden Daten in einen Hilfsspeicher-Eintrag die Statusfelder sämtlicher Nutz­ speicher-Einträge in einen Einschränk-Zustand über­ führt. Vorzugsweise ist der Hilfsspeicher mit mehreren Speicher-Einträgen versehen. Beim Überlaufen des Hilfs­ speichers wird vorteilhafterweise derart verfahren, daß sämtliche Nutzspeicher-Einträge und sämtliche Hilfs­ speicher-Einträge als nicht gültig markiert werden. An dieser Stelle sei angemerkt, daß in der schaltungstech­ nischen Realisierung jeder Hilfsspeicher-Eintrag ein Valid-Bit aufweist, das anzeigt, ob die im Hilfs­ speicher-Eintrag gespeicherten Daten gültig sind oder nicht. Ein derartiges Valid-Bit ist auch bei jedem Nutzspeicher-Eintrag vorgesehen (oben als Gültig­ keits-/Ungültigkeits-Feld bezeichnet).
Vorteilhafterweise wird vor jedem Abspeichern eines Adreßraum-Bereichs in einen Hilfsspeicher-Eintrag der neu abzuspeichernde Adreßraum-Bereich auf Überschnei­ dungen mit bereits im Hilfsspeicher abgespeicherten Adreßraum-Bereichen untersucht. Ist die Schnittmenge der Vereinigung aller im Hilfsspeicher gespeicherter Adreßraum-Bereiche mit dem neu abzuspeichernden Adreß­ raum-Bereich gleich diesem, so braucht der neue Adreß­ raum-Bereich nicht erneut im Hilfsspeicher abge­ speichert zu werden; es reicht vielmehr aus, die Statusfelder sämtlicher Nutzspeicher-Einträge in einen Einschränk-Zustand zu überführen. Der Hilfsspeicher kann dann unverändert weiterbenutzt werden. Ist hin­ gegen beispielsweise im Hilfsspeicher ein Adreßraum- Bereich abgespeichert, der vollständig innerhalb des zusätzlich abzuspeichernden Adreßraum-Bereichs liegt, wobei dieser größer ist als der bereits abgespeicherte Adreßraum-Bereich, oder der sich mit dem neu abzu­ speichernden Adreßraum-Bereich überlappt oder sich an diesen (mit oder ohne Abstand) anschließt, so kann der­ jenige Hilfsspeicher-Eintrag, in dem der bereits abge­ speicherte Adreßraum-Bereich abgelegt ist, mit den den neu abzuspeichernden Adreßraum-Bereich spezifizierenden Daten überschrieben werden. In gewohnter Weise wird der Nutzspeicher wiederum selektiv geflusht, indem die Statusfelder sämtlicher Nutzspeicher-Eintrage in einen Einschränk-Zustand überführt werden. Die obigen Über­ legungen gelten entsprechend in Bezug auf einen Ver­ gleich des neu abzuspeichernden Adreßraum-Bereichs mit der Vereinigungsmenge sämtlicher bereits im Hilfs­ speicher gespeicherter Adreßraum-Bereiche.
Die vorstehend beschriebenen Operationen auf dem Hilfs­ speicher verfolgen den Zweck, den Hilfsspeicher optimal auszunutzen, um ein zu schnelles Überlaufen des Hilfs­ speichers zu verhindern. Mit anderen Worten werden bei dieser Weiterbildung der Erfindung der oder die be­ stehenden Hilfsspeicher-Einträge und/oder der neue Hilfsspeicher-Eintrag stets derart aktualisiert bzw. gewählt, daß im Hilfsspeicher stets mindestens sämt­ liche durch die bisherigen und die neuen Daten spezi­ fizierte Adreßraum-Bereiche abgespeichert sind.
Vorzugsweise lassen sich die Statusfelder sämtlicher Nutzspeicher-Einträge gleichzeitig in einen Einschränk- Zustand überführen, und zwar unabhängig von einer Ope­ ration auf dem Hilfsspeicher und unabhängig von dessen Zustand.
Bei der einfachsten Form der Realisierung des Status­ feldes ist dieses als ein 1-Bit-Feld ausgeführt, welches zur Spezifizierung des Einschränk- bzw. Nicht­ einschränk-Zustandes setzbar bzw. rücksetzbar ist.
Eine zur zuvor genannten Weiterbildung alternative Realisierung des Statusfeldes besteht darin, daß das Statusfeld mehrere Bits umfaßt und daß sich in das Statusfeld "Generationsnummern" abspeichern lassen. Hierbei weist die erfindungsgemäße Speichervorrichtung einen Generationsnummern-Zähler auf, der bei jeder Ab­ speicherung eines Adreßraum-Bereichs in einen Hilfs­ speicher-Eintrag inkrementiert wird. Jeder Hilfs­ speicher-Eintrag ist um ein Generationsnummernfeld er­ gänzt. Das Generationsnummernfeld eines Hilfsspeicher- Eintrages wird in dem Augenblick, in dem in diesen Hilfsspeicher-Eintrag ein Adreßraum-Bereich abge­ speichert wird, auf den vor der Inkrementierung vorlie­ genden Wert des Generationsnummern-Zählers gesetzt. Das Statusfeld eines Nutzspeicher-Eintrages, auf den ein Lade-Zugriff erfolgt, wird auf den aktuellen Wert des Generationsnummern-Zählers gesetzt. Ob sich das Status­ feld eines adressierten Nutzspeicher-Eintrages im Ein­ schränk- oder Nichteinschränk-Zustand befindet, wird dann durch Vergleich des Wertes des Statusfeldes mit dem Wert des Generationsnummernfeldes desjenigen Hilfs­ speicher-Eintrages entschieden, in dem der die zur Adressierung des Nutzspeicher-Eintrages verwendete Adresse umfassende Adreßraum-Bereich gespeichert ist. Der Nichteinschränk-Zustand liegt genau dann vor, wenn der Wert des Statusfeldes größer ist als der Wert des Generationsnummernfeldes des betreffenden Hilfs­ speicher-Eintrages. Die Statusfeld-Werte der Nutz­ speicher-Einträge und die Generationsnummernfeld-Werte der Hilfsspeicher-Einträge geben also stets an, welche der beiden Einträge aktueller ist (Hilfspeicher-Eintrag oder der Nutzspeicher-Eintrag mit derjenigen Adresse, die innerhalb des durch den Hilfsspeicher-Eintrag spezifizierten Adreßraum-Bereichs liegt). In Abhängig­ keit davon befindet sich das Statusfeld in einem Nicht­ einschränk- oder in einem Einschränk-Zustand.
Nach der Erfindung ist es grundsätzlich möglich, daß die Adresse, mit der ein Nutspeicher-Eintrag adressiert wird, innerhalb mehrerer im Hilfsspeicher abgespeicher­ ter Adreßraum-Bereiche liegt. Bei der Realisierung der Nichteinschränk- bzw. Einschränk-Zustände der Status­ felder durch Vergleich von Generationsnummern des Nutz­ speichers und des Hilfsspeichers befindet sich in dem Fall, in dem die Adresse eines adressierten Nutz­ speicher-Eintrages innerhalb der durch die Daten mehre­ rer Hilfsspeicher-Einträge spezifizierten Adreßraum- Bereiche liegt, das Statusfeld des adressierten Nutz­ speicher-Eintrages in einem Nichteinschränk-Zustand, wenn der Wert des Statusfeldes größer ist als der größ­ te in den Generationsnummernfeldern derjenigen Hilfs­ speicher-Einträge gespeicherten Generationsnummern, in denen die zur Adressierung des Nutzspeicher-Eintrags verwendete Adresse umfassende Adreßraum-Bereiche abge­ speichert sind. Andernfalls befindet sich das Status­ feld des adressierten Nutzspeicher-Eintrages in einem Einschränk-Zustand.
Vorzugsweise wird der Generationsnummern-Zähler bei einer Abspeicherung eines Adreßraum-Bereichs in einen Hilfsspeicher-Eintrag nur dann inkrementiert, wenn der Adreßraum-Bereich Überschneidungen mit einem oder meh­ reren bereits im Hilfsspeicher abgespeicherten Adreß­ raum-Bereichen aufweist. Hierdurch kann die Anzahl an insgesamt zu vergebenden Generationsnummern reduziert werden, was wiederum den Vorteil hat, daß die ent­ sprechenden Generationsnummernfelder des Hilfsspeichers und Statusfelder des Nutzspeichers verkleinert werden können.
Sämtliche Nutz- und Hilfsspeicher-Einträge werden als nicht gültig markiert und zusätzlich wird der Genera­ tionsnummern-Zähler rückgesetzt, wenn der Hilfsspeicher überläuft, d. h. weitere Adreßraum-Bereiche in den Hilfsspeicher nicht mehr abspeicherbar sind. Ein Rück­ setzen des Generationsnummern-Zählers und die Markie­ rung sämtlicher Nutz- und Hilfsspeicher-Einträge als nicht gültig erfolgt auch dann, wenn der Generations­ nummern-Zähler einen vorgebbaren Maximalwert über­ steigt.
Nachfolgend werden anhand der Figuren Ausführungsbei­ spiele der Erfindung näher erläutert. Im einzelnen zei­ gen:
Fig. 1 schematisch den Aufbau eines "Flush-Lookaside- Buffer", als Ergänzung für ein bestehendes TLB/ Cache-System,
Fig. 2 den Aufbau eines TLB mit als Collision-Sensi­ tive-Bit ausgeführtem Statusfeld,
Fig. 3 ein Blockschaltbild von FLB und TLB mit Logik- Beschaltung,
Fig. 4 schematisch den Aufbau eines FLB mit Genera­ tionsnummern zur Kennzeichnung eines Ein­ schränk- und Nichteinschränk-Zustandes,
Fig. 5 den Aufbau eines FLB mit Generationsnummern und ohne Valid-Bit und Fhit-Signal,
Fig. 6 einen TLB mit Generationsnummern,
Fig. 7 ein Blockschaltbild von FLB und TLB jeweils mit Generationsnummern und mit Logik-Beschaltung der Ausgänge,
Fig. 8 den Aufbau eines TLB ohne Valid-Bit und Thit- Signal,
Fig. 9 den Aufbau (als Blockschaltbild) von FLB und TLB ohne Valid- und Thit-Signal,
Fig. 10 einen TLB mit maskiertem FLB (als Blockschalt­ bild),
Fig. 11 den grundsätzlichen Aufbau eines einfachen FLB mit Aktivitätsvermerk,
Fig. 12 den Aufbau eines Schatten-TLB,
Fig. 13 als Blockschaltbild ein System aus TLB und FLB mit "Write-Protect",
Fig. 14 den grundsätzlichen Aufbau eines aus TLB und Cache bestehenden seriell arbeitenden Cache- Speichersystems,
Fig. 15 den Aufbau eines aus TLB und Cache bestehenden, parallel arbeitenden Cache-Speichersystems und
Fig. 16 einen direct-mapped TLB (grundsätzlicher Auf­ bau).
1. Flush Lookaside Buffer 1.1 Ein einfacher FLB
Nachfolgend wird anhand der Fig. 1 bis 3 ein erstes Ausführungsbeispiel einer erfindungsgemäßen Speicher­ vorrichtung näher erläutert, und zwar anhand eines TLB- Speichersystems. Sämtliche nachfolgend aufgeführten Überlegungen (dies gilt für sämtliche Ausführungsbei­ spiele) lassen sich in analoger Weise auch auf ein Cache-Speichersystem übertragen. Dabei ist zu beachten, daß es sich bei einem TLB physikalisch um einen Cache­ speicher handelt.
Um bei einem TLB-System die Erfindung verwirklichen zu können, wird dieses TLB-System um einen kleinen, voll­ assoziativen Flush-Lookaside-Buffer (nachfolgend FLB genannt) erweitert. Jeder Eintrag des FLB umfaßt ein Valid-Bit und kann die Spezifikation einer Region ρj aufnehmen (Fig. 1).
Dabei kann eine Region beispielsweise durch Anfangs- und Endadresse bzw. Länge spezifiziert sein, aber auch durch Adresse und eine Maske, die angibt, welche Adreß­ bits zur Trefferprüfung benutzt und welche ignoriert werden sollen.
Der FLB signalisiert einen Treffer Fhit, wenn es min­ destens einen Eintrag j gibt, der gültig ist (validj) und dessen Bereich ρj die virtuelle Adresse v enthält.
Der TLB wird um ein Collision-Sensitive-Bit csi er­ weitert, das pro Eintrag angibt, ob Kollision mit einem FLB-Treffer hierbei beachtet (cs) werden soll, d. h. ein Einschränk-Zustand vorliegt, oder ignoriert () werden soll, d. h. ein Nichteinschränk-Zustand vorliegt. Bei einem Treffer signalisiert der TLB Thit und liefert die Realadresse r′ sowie das Collision-Sensitive-Bit cs aus dem Treffereintrag.
Liegen bei einer Umsetzung TLB- und FLB-Treffer vor (Thit ∧ Fhit), wird von einer Kollision gesprochen. Die Kollision ist echt, wenn zusätzlich cs gesetzt ist; andernfalls ist sie unecht. Das Gesamtsystem ignoriert TLB-Treffer bei echten Kollisionen, d. h. genau dann, wenn auch ein FLB-Treffer gemeldet wird und das Colli­ sion-Sensitive-Bit gesetzt ist, d. h.
hit = Thit ∧ ¬ (Fhit ≁ cs).
Zur Verdeutlichung dieses Treffer-Aspekts siehe Fig. 3.
Immer dann, wenn ein TLB-Eintrag neu geladen wird, wird das Collision-Sensitive-Bit csi dabei genau dann ge­ setzt, wenn die entsprechende virtuelle Adresse keinen FLB-Treffer auslöst. Andernfalls wird csi dabei zurück­ gesetzt. Da TLB-Einträge normalerweise aufgrund eines TLB-Miss geladen werden (Lade-Zugriff) und in diesem Fall die entsprechende virtuelle Adresse v′ parallel zum TLB-Schritt vom FLB verarbeitet wurde, wird als csi des neuen TLB-Eintrags auf = ¬Fhit gesetzt, ge­ nauer auf den Wert von , der beim TLB-Miss auftrat. Man beachte, daß das unabhängig davon ist, ob ein ech­ ter TLB-Miss () oder eine echte Kollision vorliegt.
Bei einem TLB-Hit mit echter Kollision wird
  • 1. der entsprechende TLB-Eintrag geflusht (validi:= false),
  • 2. ein TLB-Miss signalisiert und ein MMU-Table-Walk durchgeführt,
  • 3. da Fhit beim TLB-Miss gesetzt war, wird das Colli­ sion-Sensitive-Bit csi des verwandten Eintrags beim erneuten Laden zurückgesetzt.
Ein erneutes Ansprechen derselben virtuellen Adresse führt dann nur zu einer unechten Kollision.
Bei der Darstellung des Zusammenspiels der Hit-Signale sind im folgenden jeweils links von die Voraussetzun­ gen für die rechts davon beschriebenen Operationen auf­ geführt. Zur Anwahl einer Alternative müssen alle dafür aufgeführten Voraussetzungen erfüllt sein (UND-Ver­ knüpfung). Alle durch Komma getrennte Operationen er­ folgen parallel. Überstreichung (wie ) bezeichnet die Negation eines Signals bzw. eines Bits, "!" das Setzen und "⁻!" das Zurücksetzen eines Signals bzw. eines Bits.
Methode der FLB-Nutzung:
  • - Wenn eine Region ρ sich mit keiner schon im FLB vermerkten Region ρj überschneidet und noch min­ destens ein FLB-Eintrag frei ist, kann die Region geflusht werden, indem ρ in einen freien Eintrag geladen und dieser gültig gesetzt wird.
  • - Beim Überlaufen des FLB oder bei Überschneidung
    • (a) können FLB und TLB vollständig geflusht wer­ den, in der Regel durch gleichzeitiges Rück­ setzen aller Valid-Bits,
    • (b) oder der TLB wird lediglich wieder kollisions­ sensitiviert, indem alle Collision-Sensitive- Bits csi gleichzeitig gesetzt werden, der TLB sonst aber intakt bleibt. Der FLB kann dann unverändert bleiben oder so verändert werden, daß die Vereinigungsmenge der Regionen aller gültigen FLB-Einträge nach der Änderung die entsprechende Menge vor der Veränderung um­ faßt.
1.2 FLB mit Generationsnummern
Nachfolgend wird anhand der Fig. 1 bis 6 ein zweites Ausführungsbeispiel der Erfindung beschrieben, bei dem die Statusinformation bzw. der Inhalt des Statusfeldes, die bzw. der angibt, ob auf das Datenfeld eines adres­ sierten TLB-Speichereintrages, der mittels einer Adres­ se, welche Teil eines im FLB abgespeicherten Adreßraum- Bereichs ist, adressiert ist, zugegriffen werden darf oder nicht.
Der einfache FLB wird pro Eintrag um ein Generations­ nummernfeld Gj erweitert. Sind keine Überschneidungen von Regionen im FLB zulässig, wird bei einem FLB-Hit die Generationsnummer Gj des zutreffenden Eintrags in G geliefert. Bei überschneidenden Regionen wird beim FLB- Hit die größte Generationsnummer Gj aller zutreffender (v′ ∈ ρj) gültiger Einträge in G geliefert.
Eine in Fig. 5 gezeigte Alternative verzichtet auf das Valid-Bit und Fhit-Signal. Hierbei wird Ungültigkeit durch eine reservierte minimale Generationsnummer -∞ angezeigt. FLB-Einträge werden durch Gj = -∞ als ungül­ tig gekennzeichnet. Außerdem liefert der FLB G = -∞, wenn kein Treffer vorliegt. Um die Darstellung in den Figuren und die Beschreibung einfacher zu halten, wird im folgenden immer diese zweite Realisierung angenom­ men. Eine Realisierung mit Valid-Bit und Fhit-Signal, die schaltungstechnisch unter Umständen einfacher oder schneller ist, kann auf einfache Weise aus diesen Be­ schreibungen abgeleitet werden.
Der TLB erhält anstelle eines Collision-Sensitive-Bits pro Eintrag eine Generationsnummer gi (Fig. 6). Bei einem TLB-Treffer wird dann die entsprechende Genera­ tionsnummer in g geliefert. Es gibt ein Register γ, das die jeweils aktuelle Generation angibt. Initial bzw. nach jedem FLB-Flush erhält es beispielsweise den Wert 1. Bei jeder Änderung des FLB-Inhalts wird die Genera­ tion um eins erhöht. Bei jedem Laden eines TLB-Eintrags wird seine Generationsnummer auf die aktuelle Genera­ tion gesetzt, gi:= γ.
Eine Kollision liegt bei Thit ∧ G < -∞ vor. Sie ist genau dann echt, wenn G g gilt, siehe Fig. 7. Bei geeigneter Verwendung von γ und der FLB-Felder Gj führt erneutes Ansprechen derselben virtuellen Adresse dann nur zu einer unechten Kollision, es gilt also:
Verwendet man 0 als Repräsentation von -∞ und hat k Bits für jedes Generationsnummerfeld gi im TLB zur Ver­ fügung, können als gültige Generationswerte 1 bis 2k-1 benutzt werden.
Methoden der FLB-Verwaltung
Die konkrete Flush-Semantik wird wesentlich durch die Verwaltung des FLB definiert. Als Beispiel werden hier zwei Methoden skizziert.
  • (a) Wenn die Generationsnummernfelder ausreichend breit sind, kann man bei jedem neuen FLB-Eintrag den Wert von γ in Gj übernehmen und danach das Register γ um 1 inkrementieren. Überlappung mit anderen FLB-Einträgen spielt dann keine Rolle mehr. Läuft der FLB über, wird er und der TLB ge­ flusht sowie γ zurückgesetzt.
  • (b) In vielen Fällen kann man aber mit Hilfe einer Erweiterung der unter 1.1 beschriebenen Methode auch mit schmaleren Generationsnummernfeldern aus­ kommen. Dabei wird Gj eines neuen FLB-Eintrags stets auf γ gesetzt, danach wird das Register γ aber nur dann um 1 inkrementiert, wenn eine Über­ lappung der neu einzutragenden Region ρ mit min­ destens einer der gültigen ρj auftritt. Andern­ falls bleibt γ unverändert. Falls der FLB über­ läuft oder die aktuelle Generationsnummer γ zu groß wird, werden FLB und TLB geflusht sowie γ zurückgesetzt.
Bei Methode (b) kann anstelle eines totalen TLB Flushs auch der TLB nur wieder kollisions-sensitiviert werden, indem alle Generationsnummern gi gleichzeitig zurückge­ setzt werden, z. B. auf 1. Der FLB kann dann unverändert bleiben oder so verändert werden, daß die Gesamtheit aller gültigen FLB-Einträge nach der Änderung min­ destens die entsprechenden vor der Veränderung gültigen Regionen überdeckt.
Ohne Valid-Bits und Thit-Signal
Auch beim TLB kann man mit Hilfe der reservierten mini­ malen Generationsnummer -∞ auf Valid-Bit und Thit-Sig­ nal verzichten, indem man gi = -∞ bei ungültigen TLB- Einträgen setzt, im Falle von mehr-Wege assoziativen TLBs nur Einträge mit gi < -∞ berücksichtigt und in jedem Fall -∞ in g liefert, wenn kein Treffer vorliegt. Dieses Modell ist in den Fig. 8 und 9 gezeigt.
Es gilt:
Interessant bei diesem Modell ist insbesondere, daß im TLB ein Bit pro Eintrag gespart wird. Wenn beispiels­ weise anstatt der beiden Bits csi und validi ein 2-Bit Feld gi verwandt und der Wert 0 als -∞ benutzt wird, sind mit demselben Speicheraufwand schon 3 echte Gene­ rationen möglich.
Allerdings ist Kollisions-Sensitivierung durch Rück­ setzen aller gültigen (gi < 0) Generationsnummern jetzt schaltungstechnisch nicht mehr einfach.
1.3 FLB und TLB mit Generationsmasken
Anstelle der Generationsnummern können auch Bit-Masken verwandt werden; statt des arithmetischen Vergleichs < wird dann "bitweises UNDen" nötig.
1.4 TLB mit maskiertem FLB
Ist die Generationsnummer bzw. Maske genügend breit, kann man auf die Generationsinformation Gj beim FLB verzichten und gi als Adressen von FLB-Einträgen auf­ fassen. Wie in Fig. 10 dargestellt, liefert der FLB dann für jeden Eintrag j ein Signal Fhitj. Alle diese Signale werden maskiert geODERt, bei k FLB-Einträgen:
Xhit = (Fhit₀ ∧ m₀) ∨ (Fhit₁ ∧ m₁) ∨ . . . ∨ (Fhitk-1 ∧ mk-1)
Dabei wird die Maske (m₀, m₁, . . . mk-1) entweder direkt im TLB-Eintrag gespeichert und als g geliefert, oder aus dem gelieferten g erzeugt, beispielsweise als -2g. Bei ¬Xhit ∧ Thit liegt ein Treffer (hit), bei Xhit ∧ Thit eine echte Kollision vor. Es gilt:
1.5 FLB mit Aktivitätsvermerk
Einige FLB-Betriebsarten flushen den TLB oder machen ihn wieder vollständig kollisions-sensitiv, wenn eine neu in den FLB einzutragende Region sich mit schon darin befindlichen überlappt. Um die Häufigkeit solcher Ereignisse zu reduzieren, kann man aktive und inaktive Eintrage im FLB unterscheiden: jeder Eintrag wird erst aktiv, wenn er zum ersten Mal eine echte Kollision be­ wirkt. Inaktive Einträge können dann erweitert oder für ein erneutes Flushing verwandt werden, ohne daß ein echter FLB- und TLB-Flush erforderlich ist.
Jeder FLB-Eintrag wird um ein Aktivitätsbit actvj er­ weitert. Fig. 11 zeigt das für den einfachen FLB, mit Valid-Bits und ohne Generationsnummern. Die anderen FLB-Typen werden genauso durch Hinzufügen der Aktivi­ tätsbits erweitert. Beim Neuladen eines FLB-Eintrags wird der Aktivitätsvermerk stets zurückgesetzt. Erst bei einer echten Kollision werden die Aktivitätsbits aller matchenden (v′∈ρj : actvj!) FLB-Einträge ge­ setzt, wobei allerdings ungültige Einträge ignoriert werden können. Man beachte, daß nur dann mehrere Akti­ vitätsbits gesetzt werden müssen, wenn Überlappungen von Regionen im FLB auftreten können. Andernfalls gibt es bei einer echten Kollision nur genau einen zutref­ fenden FLB-Eintrag.
Bei einfachem FLB und TLB mit Collision-Sensitive- und Valid-Bits gilt:
Bei FLB mit Generationsnummern Gj und TLB mit Genera­ tionsnummern gi sowie Valid-Bits gilt:
Bei FLB mit Generationsnummern Gj und TLB mit Genera­ tionsnummern gi ohne Valid-Bits gilt:
Bei TLB mit maskiertem FLB gilt:
Wenn eine Region ρ sich mit keiner schon im FLB ver­ merkten Region ρj überschneidet, die auch aktiv ist (actvj) und noch mindestens ein FLB-Eintrag frei ist, kann die Region geflusht werden, indem ρ in einen frei­ en Eintrag geladen und dieser gültig gesetzt wird.
Außerdem können nichtaktive (actvj) FLB-Einträge modifiziert oder freigegeben werden. Voraussetzung für die Einhaltung der Flush-Semantik ist nur, daß die Ge­ samtheit aller gültigen FLB-Einträge nach der Änderung mindestens die entsprechenden vor der Veränderung gül­ tigen Regionen überdeckt.
2. Weitere FLB-Möglichkeiten 2.1 Selektives TLB-Flushing
Der TLB kann selektiv geflusht werden, indem sequen­ tiell die Felder v′i aller gültigen TLB-Einträge gegen den FLB getestet werden. Falls der FLB bei vi einen Treffer meldet, wird dieser TLB-Eintrag invalidiert. Ist der gesamte TLB in dieser Art durchgemustert, kön­ nen alle FLB-Einträge freigegeben werden, die seit Be­ ginn dieser Durchmusterung nicht verändert wurden. Ins­ besondere kann der gesamte FLB geflusht werden, wenn keine FLB-Änderungen während der Durchmusterung auftra­ gen.
Die TLB-Durchmusterung kann für n-Wege TLBs um den Fak­ tor n beschleunigt werden, indem parallel die jeweils n zusammengehörigen TLB-Einträge getestet werden. Je nach Geschwindigkeit des FLB muß dieser dazu vervielfacht werden.
Um parallel zur Durchmusterung normale Adreßumsetzung durch den TLB zu ermöglichen, kann man das System um einen "Schatten"-TLB ergänzen, siehe Fig. 12. Im Gegen­ satz zu TLB ist der Schatten TLB kein assoziativer son­ dern ein direkt adressierter Speicher. Bei Updates auf­ grund von TLB-Änderungen können die TLB-Adressen über­ nommen werden. Der Schatten-TLB dupliziert virtuelle Adresse, Gültigkeits- und Kollisionsinformation jedes TLB-Eintrages. Bei TLBs mit Collision-Sensitive-Bit gilt für die Einträge des Schatten-TLB (siehe Fig. 12):
wi = vi, xi = validi ∧ csi
bei TLBs mit Generationsnummer und Valid-Bit gilt
wi = vi, xi = (validi, gi),
und bei TLBs mit Generationsnummer ohne Valid-Bit
wi = vi, xi = gi.
Änderungen in den entsprechenden TLB-Feldern werden sofort zum Schatten-TLB propagiert. Selektives Flushing geschieht vermittels Durchmusterung des Schatten-TLBs. Wenn dabei ein zu flushender Eintrag gefunden wird, wird die Flush-Operation auf Schatten- und eigentlichem TLB ausgeführt.
2.2 FLB als temporärer TLB
Man kann FLB-Einträge um Felder erweitern, die auch im TLB gehalten werden, beispielsweise Zugriffsattribute. Wenn diese dann für eine Region verändert (einge­ schränkt) werden, reicht es bei einem Fhit aus, die entsprechende Information vom FLB zu übernehmen. Ein Table-Walk wird unnötig.
Fig. 13 zeigt als Beispiel einen FLB, der auch ein Write-Protect-Signal pro Region mitführt, das bei einem FLB-Treffer in Fwp geliefert wird. Das endgültige Write-Protect-Signal wp wird als Twp ∨ (Fhit ∧ Fwp) ge­ bildet, wobei Twp das vom TLB gelieferte Write-Protect- Signal ist. Damit kann eine Region temporär schreibge­ schützt werden, ohne daß zusätzliche TLB-Misses und damit Table-Walks erforderlich werden.
Diese Methode kann auch für virtuelles Aliasing und Call-on-Reference genutzt werden. Das in 2.1 beschrie­ bene Verfahren kann so erweitert werden, daß TLB-Ein­ träge falls möglich nicht geflusht werden, sondern an­ hand der vom FLB gelieferten Information verändert wer­ den.
2.3 Überlappungen im FLB
Bei größeren FLBs kann es aufwendig werden, fest­ zustellen, ob eine neue Region ρ = [ ] sich mit schon gültig eingetragenen Regionen ρj = [ j, j] überschnei­ det. Als voll-assoziatives Element kann der FLB diese Entscheidung unabhängig von seiner Größe in 2 Schritten treffen; allerdings steigen Komplexität und damit auch Kosten des FLB hierdurch.
Jeder FLB-Eintrag wird um das Bit lowj erweitert. Zu Beginn einer Untersuchung auf Überschneidung werden alle lowj-Bits sowie das Fhit-Signal zurückgesetzt. Dem FLB wird die Untergrenze des neuen Bereichs angeboten und jedes Element führt Schritt 1 gemäß folgender Vor­ schrift durch:
Dann wird dem FLB die Obergrenze angeboten und jedes Element führt Schritt 2 gemäß folgender Vorschrift durch:
Ist nach Schritt 2 das Signal Fhit gesetzt, liegt eine Überlappung vor.
2.4 Caches
Alle aufgeführten Methoden lassen sich genau so mit Caches anstelle der TLBs einsetzen. Anstelle eines Table-Walks mit neuem Laden eines TLB-Eintrags tritt dann ein Hauptspeicher-Zugriff.

Claims (15)

1. Speichervorrichtung zum Speichern von Daten, ins­ besondere Cache-Speichervorrichtung oder Trans­ lation-Lookaside-Buffer, mit
  • - einem Nutzspeicher, der mehrere mittels Adres­ sen eines Adreßraums adressierbare Speicher- Einträge aufweist, von denen jeder ein als gültig oder nicht gültig markiertes Datenfeld und ein veränderbares Statusfeld aufweist, das in mindestens einen Einschränk-Zustand zum Einschränken eines Schreib/Lese-Zugriffs auf das gültige Datenfeld und in mindestens einen Nichteinschränk-Zustand zum Nichteinschränken eines Schreib/Lese-Zugriffs auf das gültige Datenfeld überführbar ist, und
  • - einem Hilfsspeicher mit mindestens einem Speicher-Eintrag zum Speichern von einen Be­ reich des Adreßraums spezifizierenden Daten,
  • - wobei der Schreib/Lese-Zugriff auf das Daten­ feld eines adressierten Nutzspeicher-Eintrages dann nicht erlaubt ist, wenn die Adresse innerhalb mindestens eines im Hilfsspeicher gespeicherten Adreßraum-Bereichs liegt und das Statusfeld des Nutzspeicher-Eintrags den Schreib/Lese-Zugriff einschränkt.
2. Speichervorrichtung nach Anspruch 1, dadurch ge­ kennzeichnet, daß bei einem Lade-Zugriff, mit dem der Nutzspeicher-Eintrag initialisiert wird, das Statusfeld eines adressierten Nutzspeicher-Ein­ trags
  • - in einen Einschränk-Zustand überführt wird, wenn die Adresse nicht Teil mindestens eines in dem Hilfsspeicher gespeicherten Adreßraum- Bereichs ist, und
  • - andernfalls in einen Nichteinschränk-Zustand überführt wird, wenn die Adresse Teil min­ destens eines in dem Hilfsspeicher gespeicher­ ten Adreßraum-Bereichs ist.
3. Speichervorrichtung nach Anspruch 1, dadurch ge­ kennzeichnet, daß das Statusfeld eines adressier­ ten Nutzspeicher-Eintrags bei einem Lade-Zugriff, mit dem der Nutzspeicher-Eintrag initialisiert wird, in einen Nichteinschränk-Zustand überführt wird.
4. Speichervorrichtung nach Anspruch 3, dadurch ge­ kennzeichnet, daß das Statusfeld eines adressier­ ten Nutzspeicher-Eintrags bei dessen Adressierung in einen Nichtschränk-Zustand überführt wird, wenn es zuvor in einem Einschränk-Zustand war und die zur Adressierung verwendete Adresse nicht Teil mindestens eines im Hilfsspeicher gespeicherten Adreßraum-Bereichs ist.
5. Speichervorrichtung nach einem der Ansprüche 2 bis 4, dadurch gekennzeichnet, daß beim Einschreiben von einen Bereich des Adreßraums spezifizierenden Daten in einen Hilfsspeicher-Eintrag die Status­ felder sämtlicher Nutzspeicher-Einträge in einen Einschränk- Zustand überführt werden.
6. Speichervorrichtung nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß der Hilfsspeicher mehrere Speicher-Einträge aufweist.
7. Speichervorrichtung nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß in dem Fall, daß sich in sämtlichen Hilfsspeicher-Eintragen jeweils einen Bereich des Adreßraums spezifizierende Daten befinden und weitere einen Bereich des Adreßraums spezifizierende Daten in den Hilfsspeicher abge­ speichert werden sollen, sämtliche Nutzspeicher- Einträge und Hilfsspeicher-Einträge als nicht gül­ tig markiert werden.
8. Speichervorrichtung nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß vor dem Abspeichern von einen Bereich des Adreßraums spezifizierenden Daten in einen Hilfsspeicher-Eintrag dieser Adreß­ raum-Bereich auf Überschneidungen mit bereits im Hilfsspeicher abgespeicherten Adreßraum-Bereichen untersucht wird und der oder die gegebenenfalls bestehenden Hilfsspeicher-Einträge und/oder der neue Hilfsspeicher-Eintrag derart aktualisiert bzw. gewählt wird/werden, daß im Hilfsspeicher sämtliche durch die bisherigen und die neuen Daten spezifizierte Adreßraum-Bereiche abgespeichert sind und die Statusfelder sämtlicher Nutzspeicher- Einträge in einen Einschränk-Zustand überführt werden.
9. Speichervorrichtung nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, daß die Statusfelder sämtlicher Nutzspeicher-Einträge gleichzeitig in einen Einschränk-Zustand überführbar sind, und zwar unabhängig von einer Operation auf dem Hilfs­ speicher oder dessen Zustand.
10. Speichervorrichtung nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet, daß das Statusfeld eines Nutzspeicher-Eintrages ein einziges Bit umfaßt, welches zur Spezifizierung des Einschränk- und des Nichteinschränk-Zustandes setzbar und rücksetzbar ist.
11. Speichervorrichtung nach einem der Ansprüche 1 bis 9, dadurch gekennzeichnet,
  • - daß jeder Hilfsspeicher-Eintrag ein Genera­ tionsnummernfeld aufweist,
  • - daß ein Generationsnummern-Zähler vorgesehen ist, der bei jeder Abspeicherung von einen Adreßraum-Bereich spezifizierenden Daten in einen Hilfsspeicher-Eintrag inkrementierbar ist, wobei das Generationsnummernfeld eines Hilfsspeicher-Eintrags auf den vor der Inkre­ mentierung vorliegenden Wert des Generations­ nummern-Zählers setzbar ist, wenn in diesen Hilfsspeicher-Eintrag einen Adreßraum-Bereich spezifizierende Daten abgespeichert werden, und wobei das Statusfeld eines Nutzspeicher- Eintrags auf den aktuellen Wert des Genera­ tionsnummern-Zählers setzbar ist, wenn auf den Nutzspeicher-Eintrag ein diesen initialisie­ render Lade-Zugriff erfolgt, und
  • - daß sich das Statusfeld eines adressierten Nutzspeicher-Eintrags
  • - in einem Nichteinschränk-Zustand befindet, wenn der Wert des Statusfeldes größer ist als der Wert des Generationsnummernfeldes desjenigen Hilfsspeicher-Eintrages, der die Adresse des adressierten Nutzspeicher-Ein­ trages umfaßt, und
  • - andernfalls in einem Einschränk-Zustand be­ findet.
12. Speichervorrichtung nach Anspruch 11, dadurch ge­ kennzeichnet, daß in dem Fall, daß die Adresse eines adressierten Nutzspeicher-Eintrages inner­ halb der durch die Daten mehrerer Hilfsspeicher- Einträge spezifizierten Adreßraum-Bereiche liegt, sich das Statusfeld des adressierten Nutzspeicher- Eintrages
  • - in einem Nichteinschränk-Zustand befindet, wenn der Wert des Statusfeldes größer ist als der größte in den Generationsnummernfeldern der betreffenden Hilfsspeicher-Einträge gespeicher­ ten Generationsnummern, und
  • - andernfalls in einem Einschränk-Zustand befin­ det.
13. Speichervorrichtung nach Anspruch 11 oder 12, da­ durch gekennzeichnet, daß der Generationsnummern- Zähler bei einer Abspeicherung von einen Adreß­ raum-Bereich spezifizierenden Daten in einen Hilfsspeicher-Eintrag nur dann inkrementiert wird, wenn der durch diese Daten spezifizierte Adreß­ raum-Bereich Überschneidungen mit einem oder mehreren bereits im Hilfsspeicher abgespeicherten Adreßraum-Bereichen aufweist.
14. Speichervorrichtung nach einem der Ansprüche 11 bis 13, dadurch gekennzeichnet, daß sämtliche Nutz- und Hilfsspeicher-Einträge als nicht gültig markiert werden und der Generationsnummern-Zähler rückgesetzt wird, wenn weitere einen Adreßraum- Bereich spezifizierende Daten in dem Hilfsspeicher nicht mehr abspeicherbar sind.
15. Speichervorrichtung nach einem der Ansprüche 11 bis 14, dadurch gekennzeichnet, daß sämtliche Nutz- und Hilfsspeicher-Einträge als nicht gültig markiert werden und der Generationsnummern-Zähler rückgesetzt wird, wenn der Generationsnummern-Zäh­ ler einen vorgebbaren Maximalwert übersteigt.
DE19516949A 1994-05-11 1995-05-11 Speichervorrichtung zum Speichern von Daten Withdrawn DE19516949A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE19516949A DE19516949A1 (de) 1994-05-11 1995-05-11 Speichervorrichtung zum Speichern von Daten

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE4416658 1994-05-11
DE19516949A DE19516949A1 (de) 1994-05-11 1995-05-11 Speichervorrichtung zum Speichern von Daten

Publications (1)

Publication Number Publication Date
DE19516949A1 true DE19516949A1 (de) 1996-02-15

Family

ID=6517893

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19516949A Withdrawn DE19516949A1 (de) 1994-05-11 1995-05-11 Speichervorrichtung zum Speichern von Daten

Country Status (5)

Country Link
US (1) US6260130B1 (de)
EP (1) EP0760134A1 (de)
JP (1) JPH10500235A (de)
DE (1) DE19516949A1 (de)
WO (1) WO1995031783A1 (de)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000075785A1 (en) * 1999-06-08 2000-12-14 Arm Limited Status bits for cache memory
WO2001097043A1 (en) * 2000-06-15 2001-12-20 Advanced Micro Devices, Inc. A translation lookaside buffer flush filter
US7890731B2 (en) 2003-05-12 2011-02-15 International Business Machines Corporation Clearing selected storage translation buffer entries based on table origin address
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control
US9454490B2 (en) 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6978357B1 (en) 1998-07-24 2005-12-20 Intel Corporation Method and apparatus for performing cache segment flush and cache segment invalidation operations
US7530067B2 (en) * 2003-05-12 2009-05-05 International Business Machines Corporation Filtering processor requests based on identifiers
US20050182903A1 (en) * 2004-02-12 2005-08-18 Mips Technologies, Inc. Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer
JP5459006B2 (ja) * 2010-03-24 2014-04-02 富士通株式会社 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
US20140006747A1 (en) * 2012-06-29 2014-01-02 Broadcom Corporation Systems and methods for processing instructions when utilizing an extended translation look-aside buffer having a hybrid memory structure
US9892060B2 (en) 2015-12-02 2018-02-13 International Business Machines Corporation Identifying stale entries in address translation cache

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS51115737A (en) * 1975-03-24 1976-10-12 Hitachi Ltd Adress conversion versus control system
US4053948A (en) * 1976-06-21 1977-10-11 Ibm Corporation Look aside array invalidation mechanism
JPS6091462A (ja) * 1983-10-26 1985-05-22 Toshiba Corp 演算制御装置
US4885680A (en) * 1986-07-25 1989-12-05 International Business Machines Corporation Method and apparatus for efficiently handling temporarily cacheable data
EP0348628A3 (de) * 1988-06-28 1991-01-02 International Business Machines Corporation Cache-Speicheranordnung
US5265227A (en) * 1989-11-14 1993-11-23 Intel Corporation Parallel protection checking in an address translation look-aside buffer
US5282274A (en) * 1990-05-24 1994-01-25 International Business Machines Corporation Translation of multiple virtual pages upon a TLB miss
US5491806A (en) * 1990-06-26 1996-02-13 Lsi Logic Corporation Optimized translation lookaside buffer slice having stored mask bits
US5222222A (en) * 1990-12-18 1993-06-22 Sun Microsystems, Inc. Apparatus and method for a space saving translation lookaside buffer for content addressable memory
US5627987A (en) * 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5428757A (en) * 1992-04-29 1995-06-27 International Business Machines Corporation Method for reducing translation look aside buffer purges in a multitasking system
DE69637294T2 (de) * 1995-03-03 2008-05-08 Fujitsu Ltd., Kawasaki Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung
US5764944A (en) * 1995-09-08 1998-06-09 United Microelectronics Corp. Method and apparatus for TLB invalidation mechanism for protective page fault
US5802568A (en) * 1996-06-06 1998-09-01 Sun Microsystems, Inc. Simplified least-recently-used entry replacement in associative cache memories and translation lookaside buffers

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000075785A1 (en) * 1999-06-08 2000-12-14 Arm Limited Status bits for cache memory
US6272033B1 (en) 1999-06-08 2001-08-07 Arm Limited Status bits for cache memory
WO2001097043A1 (en) * 2000-06-15 2001-12-20 Advanced Micro Devices, Inc. A translation lookaside buffer flush filter
CN1304962C (zh) * 2000-06-15 2007-03-14 先进微装置公司 转译后备缓冲器清除滤波器
KR100804285B1 (ko) * 2000-06-15 2008-02-18 어드밴스드 마이크로 디바이시즈, 인코포레이티드 변환 색인 버퍼 플러시 필터
US7890731B2 (en) 2003-05-12 2011-02-15 International Business Machines Corporation Clearing selected storage translation buffer entries based on table origin address
US8122224B2 (en) 2003-05-12 2012-02-21 International Business Machines Corporation Clearing selected storage translation buffer entries bases on table origin address
US8452942B2 (en) 2003-05-12 2013-05-28 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
US9454490B2 (en) 2003-05-12 2016-09-27 International Business Machines Corporation Invalidating a range of two or more translation table entries and instruction therefore
US9182984B2 (en) 2012-06-15 2015-11-10 International Business Machines Corporation Local clearing control

Also Published As

Publication number Publication date
EP0760134A1 (de) 1997-03-05
JPH10500235A (ja) 1998-01-06
WO1995031783A1 (de) 1995-11-23
US6260130B1 (en) 2001-07-10

Similar Documents

Publication Publication Date Title
DE69518676T2 (de) Cache-Speicheranordnung für einen Speicher
DE112005003863B3 (de) Verwalten von Prozessorressourcen während Architekturereignissen
DE69130086T2 (de) Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
DE69322683T2 (de) Verfahren und Vorrichtung zur Durchführung eines pseudo-LRU Cachespeicherersetzungsschemas mit einer Verriegelungsfunktion
DE69529374T2 (de) Datenprozessor mit Teilassoziativer Einheit
DE60320026T2 (de) Verbessertes speichermanagement für echtzeit-anwendungen
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE10002120B4 (de) Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
DE3688978T2 (de) Seitenspeicherverwaltungseinheit mit der fähigkeit nach wahl mehrere adressräume zu unterstützen.
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE112008001666T5 (de) Hierarchische Cache-Tag-Architektur
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE102008048627A1 (de) Zuteilen von Platz in dedizierten Cache-Wegen
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE69900611T2 (de) Cache-Speicherkohärenzprotokoll mit einem Schwebezustand (H) mit einem genauen und einem ungenauen Modus
DE69930983T2 (de) Pseudo-genaue I-Cache-Speichereinschliessbarkeit für vertikale Cache-Speicher
DE19516949A1 (de) Speichervorrichtung zum Speichern von Daten
DE69030072T2 (de) Schneller Durchschreib-Cache-Speicher
DE112006000339B4 (de) System für einen beschränkten Cache-Zugriff während des Datentransfers und Verfahren dazu
DE102021116489A1 (de) Verwaltung von Prefetch-Anfragen auf Basis von Stream-Informationen für zuvor erkannte Streams
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung
WO1996023260A1 (de) Verfahren zum betreiben einer adressumsetzvorrichtung
DE69032519T2 (de) Datenverarbeitungseinrichtung zur Kohärenzaufrechthaltung von gespeicherten Daten im Hauptspeicher, externem Cachespeicher und internem Cachespeicher
DE112006002908T5 (de) Technik für die Kommunikation und Synchronisation von Threads
DE3650021T2 (de) Cache-Speicherübereinstimmungsvorrichtung mit Verriegelung.

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee