DE4410060B4 - Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse - Google Patents

Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse Download PDF

Info

Publication number
DE4410060B4
DE4410060B4 DE4410060A DE4410060A DE4410060B4 DE 4410060 B4 DE4410060 B4 DE 4410060B4 DE 4410060 A DE4410060 A DE 4410060A DE 4410060 A DE4410060 A DE 4410060A DE 4410060 B4 DE4410060 B4 DE 4410060B4
Authority
DE
Germany
Prior art keywords
virtual
tag
page
address
bits
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
Application number
DE4410060A
Other languages
English (en)
Other versions
DE4410060A1 (de
Inventor
Dale C. Menlo Park Morris
Jerome C. Palo Alto Huck
William R. Saratoga Bryg
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE4410060A1 publication Critical patent/DE4410060A1/de
Application granted granted Critical
Publication of DE4410060B4 publication Critical patent/DE4410060B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables

Abstract

Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse, mit einer Seitentabelle (413) mit einem Adressregister zum Speichern eines virtuellen Tags (203), wobei die Anzahl der Bits des virtuellen Tags die Adressenbreite des Rechners überschreitet,
wobei der virtuelle Tag (203) einen verminderten Tagabschnitt (401), dessen Bitbreite gleich oder kleiner als die Adressenbreite des Rechners ist, und einen Indexabschnitt (403) aufweist, welcher die restlichen Bits des virtuellen Tags umfaßt,
eine erste Hash-Funktion (405) eine erste Ausgangsfolge (407) aus den Bits des verminderten Tagabschnitts (401) erzeugen kann,
ein Seitentabellen-Index (409; 507) aus der ersten Ausgangsfolge (407) und der Information des Indexabschnittes (403) kombiniert wird und verschiedene Sets in der Seitentabelle (413) indiziert, und
wobei die Sets mindestens ein Paar aus einem verminderten Tag-Eintrag (307, 415) und der zugeordneten physikalischen Adresse und mindestens einen Zeiger (41) aufweisen.

Description

  • Die Erfindung betrifft eine Übersetzungsvorrichtung für die Übersetzung virtueller Adressen in physische Adressen.
  • Herkömmliche Rechnersysteme verwenden einen virtuellen Speicher, welcher mehr Speicher simuliert, als tatsächlich vorhanden ist, und ermöglicht, daß der Rechner unabhängig von deren Größe mehrere Programme gleichzeitig abarbeitet. Simultane Benutzerprogramme greifen auf Hauptspeicher-Adressen über virtuelle Adressen zu, welche von dem Betriebssystem zugewiesen worden sind. Die Abbildung der virtuellen Adresse auf den Hauptspeicher oder die physische Adresse ist ein Vorgang, der als virtuelle Adressenübersetzung oder Adreßumrechnung bekannt ist. Die virtuelle Speicherübersetzung kann mit einer großen Anzahl von Techniken erreicht werden, so daß der Prozessor auf die gewünschte Information im Hauptspeicher zugreifen kann.
  • Die virtuellen Adreß- und die physischen Adreßbereiche werden normalerweise in gleichgroße Speicherblöcke aufgeteilt, welche Seiten genannt werden, und eine Seitentabelle sieht die Übersetzung oder Umrechnung zwischen der virtuellen Adresse und der physischen Adresse vor. Seitentabellen können gemäß verschiedenen Strukturen organi siert werden. Auf "vorwärts-abgebildete" Tabellen wird am leichtesten zugegriffen, indem die virtuelle Seitennummer als ein Zeiger zu dem Tabelleneintrag verwendet wird, der die Übersetzung enthält. Auf "rückwärts-abgebildete" Tabelle wird am leichtesten zugegriffen, indem die physische Seitennummer als ein Zeiger zu dem Tabelleneintrag verwendet wird, welcher die Übersetzung enthält. Da es wesentlich mehr mögliche virtuelle Seitennummern als physische Seitennummern gibt, können die vorwärtsabgebildeten Tabellen sehr groß und dünn besetzt sein, sie sind jedoch recht leicht absuchbar, wenn die virtuelle Seitennummer gegeben ist. Eine rückwärts-abgebildete Tabelle enthält einen Eintrag für jede Seite des physischen Speichers. Da es eine begrenzte Anzahl von physischen Seiten, im Vergleich zu virtuellen Seiten, gibt, haben rückwärtsabgebildete Tabellen tendenziell einen effizienteren Speicheraufbau, der Zugriff auf sie ist jedoch schwieriger, wenn nur die virtuelle Seitennummer gegeben ist.
  • Jeder Seitentabellen-Eintrag enthält im allgemeinen die virtuelle Adresse und die physische Adresse und Schutz- und Zustandsinformationen, welche diese Seite betrifft. Der Zustand umfaßt im allgemeinen Information über die Art der Zugriffe, welche diese Seite erfahren hat. Ein "schmutziges" oder Modifikations-Bit (dirty bit) zeigt beispielsweise an, daß Daten in der Seite modifiziert worden sind. Da die Seitentabellen im allgemeinen groß sind, werden sie im Hauptspeicher gespeichert. Jeder vorschriftsmäßige Speicherzugriff kann daher tatsächlich zwei Zugriffe erfordern, einen, um die Übersetzung zu erhalten, und einen zweiten, um auf die physische Speicherstelle zuzugreifen.
  • Viele Rechnersysteme, welche eine virtuelle Adressenübersetzung unterstützen, benutzen Übersetzungs-Vorgriff-Puffer (TLB). Der TLB ist ein kleiner, schneller, assoziativer (inhaltsorientierter) Speicher, der normalerweise auf oder in unmittelbarer Nähe der Prozessoreinheit angeordnet ist und gerade verwendete Paare von virtuellen und physischen Adressen speichert. Der TLB enthält eine Untermenge der Übersetzungen in der Seitentabelle, und auf ihn kann wesentlich schneller zugegriffen werden. Wenn die Verarbeitungseinheit Information vom Hauptspeicher braucht, sendet sie die virtuelle Adresse zum TLB. Der TLB nimmt die Seitennummer der virtuellen Adresse entgegen und gibt eine physische Seitennummer zurück. Die physische Seitennummer wird mit der niederwertigen Adresseninformation kombiniert, um auf das gewünschte Byte oder Wort im Hauptspeicher zuzugreifen.
  • In den meisten Fällen kann der TLB nicht die gesamte Seitentabelle enthalten, so daß Prozeduren implementiert werden müssen, um den TLB zu aktualisieren. Wenn auf eine virtuelle Seite zugegriffen wird, für welche die Übersetzung nicht im TLB vorhanden ist, wird auf die Seitentabelle zugegriffen, um die Übersetzung dieser virtuellen Seitennummer in eine physische Seitennummer zu ermitteln, und diese Information wird in den TLB eingegeben. Der Zugriff auf die Seitentabelle kann zwanzig mal länger dauern als der Zugriff auf den TLB, und die Programmausführungsgeschwindigkeit wird daher optimiert, wenn die gerade verwendeten Übersetzungen im TLB aufbewahrt werden.
  • Die meisten Rechnersysteme verwenden heute irgendeine Art von Massenspeicher, im allgemeinen eine Platte, um den physischen Direktzugriffsspeicher (RAM) im Rechner zu vergrößern. Diese Vergrößerung des Hauptspeichers ermöglicht, daß größere Programme implementiert werden, als wenn nur der Hauptspeicher zur Verfügung stünde. Zusätzlich ist ein Plattenspeicher wesentlich weniger teuer als ein RAM, er ist jedoch auch hundert mal langsamer. Abhängig von der Länge eines Programmes und dem Wettbewerb mit anderen Programmen um den Hauptspeicher kann sich zu einem bestimmten Zeitpunkt ein Teil eines Programmes im Hauptspeicher befinden, und ein Teil kann im Plattenspeicher vorhanden sein. Die Teile eines Programmes, auf welche sofort zugegriffen werden muß, werden in den Haupt speicher gebracht, während die Teile, welche momentan nicht benötigt werden, im Plattenspeicher gelassen werden.
  • Wenn beispielsweise ein einzelnes Programm zwei Megabyte lang ist und auf einem Rechner eingesetzt wird, der einen Hauptspeicher von einem Megabyte hat, wird das Programm zwei Megabyte virtueller Adressen verwenden. Da der Hauptspeicher nur Information von einem Megabyte enthalten kann, würde die verbleibende Programminformation von einem Megabyte in dem Plattenspeichersystem gespeichert werden. Zu jedem Zeitpunkt kann dann eine Hälfte der virtuellen Adressen auf Programminformation im Hauptspeicher abgebildet werden, und eine Hälfte kann nicht abgebildet werden, da eine Hälfte des Programms den vorhandenen physischen Speicher füllt. Der Zugriff auf die Information im Hauptspeicher läuft normal ab. D.h., zunächst wird in dem TLB gesucht, um zu sehen, ob er die Übersetzung enthält, und wenn er sie nicht enthält, wird der TLB mit der Information in der Seitentabelle aktualisiert, und dann wird wieder auf den TLB Bezug genommen, um die Übersetzungs-Information zu bekommen.
  • Wenn ein Zugriff auf Information erfolgt, die nicht im Hauptspeicher ist, wird zuerst im TLB nach der Übersetzung gesucht, die darin nicht enthalten sein wird. Dann wird auf die Seitentabelle Bezug genommen, um die Übersetzungs-Information zu bekommen, um den TLB zu aktualisieren. Die Seitentabelle enthält jedoch nur die Übersetzungen für die Information im Hauptspeicher, und daher wird sie nicht die erforderliche Übersetzungs-Information enthalten. Dieser Umstand wird Seitenfehler genannt. Abhängig von einem Seitenfehler wird der virtuellen Seite, auf welche Bezug genommen wurde, eine physische Seite zugeordnet, und diese Information wird in das Seitenverzeichnis eingefügt. Wenn alle physischen Seiten bereits mit anderen virtuellen Seiten verbunden worden sind, dann muß die Seitenfehler-Steuerung (handler) wählen, welche der physischen Seiten der Seite mit der virtuellen Adres se, auf welche momentan Bezug genommen wird, neu zugeordnet werden soll. Es gibt viele Algorithmen für eine derartige Auswahl, beispielsweise FIFO (first-in-first-out)-Algorithmen und am wenigsten-zuletzt-verwendet (least-recently-used)-Algorithmen. Die Seitenfehler-Steuerung ist im allgemeinen in Software implementiert, während das TLB-Aktualisierungsverfahren entweder mittels Hardware oder mittels Software gehandhabt werden kann, wie in der Industrie allgemein bekannt ist.
  • 1 zeigt das oben beschriebene Verfahren. In Schritt 112 wird dem TLB eine virtuelle Adresse vorgegeben. Wenn die Übersetzung für diese virtuelle Adresse im TLB vorhanden ist (TLB-Treffer), wird die zugeordnete physische Adresse vom TLB abgeleitet und für den Zugriff auf den physischen Speicher (Schritt 114) verwendet. Wenn die Übersetzung für diese virtuelle Adresse nicht im TLB ist (TLB-Fehltreffer), wird die Übersetzung für diese Adresse in dem Seitenverzeichnis/Tabelle gesucht bzw. nachgeschlagen (Schritt 116). Wenn die Übersetzung im Seitenverzeichnis ist, wird diese Information in den TLB eingefügt (Schritt 118), und die virtuelle Adresse wird erneut vorgegeben (Schritt 112). Diesmal gibt es einen TLB-Treffer, so daß die sich ergebende physische Adresse für den Zugriff auf den physischen Speicher verwendet wird.
  • Wenn die virtuelle Adresse in einer Seite von virtuellen Adressen ist, der keine Seite von physischen Adressen zugeordnet ist, dann gibt es keinen Eintrag für diese Seite im Seitenverzeichnis, und es wird ein Seitenfehler auftreten. In dieser Situation wird eine Software-Seitenfehler-Steuerung (Schritt 120) der virtuellen Seite eine physische Seite zuordnen und die Seitentabelle aktualisieren. Diese virtuelle Adresse wird dann wiederum dem TLB vorgegeben, wobei der TLB die Übersetzung noch nicht enthält, so daß ein TLB-Fehltreffer auftritt, und der TLB wird aus dem Seitenverzeichnis aktualisiert. Dann wird die virtuelle Adresse dem TLB wieder vorgegeben, und diesmal ist ein TLB-Treffer sichergestellt, so daß die sich ergebende physische Adresse für den Zugriff auf den physischen Speicher verwendet wird.
  • 2 zeigt ein vereinfachtes Verfahren zum Zugreifen auf einen Eintrag in einem Übersetzungs-Vorgriff-Puffer (TLB) abhängig von der Vorgabe einer virtuellen Adresse. Zu Zwecken der Erläuterung hat der gezeigte TLB nur einen Eintrag, wohingegen ein TLB normalerweise sehr viel mehr Einträge aufweisen würde. Die virtuelle Adresse wird in ein Register 201 geladen. Diese virtuelle Adresse ist aus zwei Teilen zusammengesetzt, einer virtuellen Seitennummer 203 und einem physischen Offset 205. Der physische Offset 205 wird normalerweise durch die unteren 12 Bit (Bits 11 – 0) der Adresse gebildet, welche ein bestimmtes Byte innerhalb einer Seite spezifizieren. Die übrigen Bits in dem Register geben die virtuelle Seitennummer an.
  • Der Begriff "Seitenoffset" ist ein Begriff, der in der Industrie häufig verwendet wird, und er verhält sich zu dem Begriff "physischer Offset" synonym, welcher bei der Beschreibung der vorliegenden Erfindung verwendet wird. Andere Bits werden häufig verwendet, um eine Übersetzung oder Umsetzung in eine physische Seitennummer eindeutig zu spezifizieren. Solche Bits umfassen beispielsweise "Adreßbereich-Identifikations"-Bits. Für die Zwecke der vorliegenden Erfindung können alle diese Bits jedoch als ein Teil der virtuellen Seitennummer betrachtet werden.
  • Bei dem gezeigten Beispiel wird die virtuelle Seitennummer zum virtuellen (Identifizierungs-)Tag, welche ein Eingangssignal für den TLB-Vergleicher 207 liefert. Ein TLB 209 enthält zwei miteinander verknüpfte Teile, einen TLB-Tag 211 und eine zugeordnete physische Seitennummer 213. Der TLB-Tag 211 liefert das zweite Eingangssignal für den TLB-Vergleicher 207, und der Vergleicher vergleicht den TLB-Tag mit der virtuellen Tag. Wenn die Tags übereinstimmen, zeigt der Vergleicher einen TLB-Treffer an, und die physische Seitennummer 213 wird mit dem physischen Offset 205 kombiniert, um die physische (echte) Speicheradresse vorzusehen. Wenn die Tags nicht übereinstimmen, ist ein TLB-Fehltreffer aufgetreten, und das TLB-Fehltreffer-Verfahren, welches in Verbindung mit 1 beschrieben wurde, wird zum Aktualisieren des TLB eingesetzt.
  • 3 zeigt das Verfahren zum Wiedergewinnen der physischen Seiteninformation, wenn die virtuelle Seitennummer gegeben ist, so wie es zum Aktualisieren des TLB nach einem TLB-Fehltreffer erforderlich wäre. Wie oben beschrieben, werden die Abbildungen von virtuellen auf physische Adressen in einer Seitentabelle aufbewahrt. Ein Lösungsweg, um eine gegebene virtuelle Adresse in eine physische Adresse zu übersetzen, ist, eine Hash-Funktion mit der virtuellen Adresse durchzuführen, um einen Index für die Seitentabelle zu bilden. Dies erzeugt einen Zeiger zu einer verknüpften Liste von Einträgen. Diese Einträge werden dann nach einem passenden Eintrag abgesucht. Um ein Gegenstück zu ermitteln, wird die virtuelle Seitennummer mit einem Eintrag in der Seitentabelle (virtueller Tag) verglichen. Wenn die beiden gleich sind, sieht dieser Seitentabelleneintrag die physische Adressenübersetzung vor.
  • Bei dem gezeigten Beispiel wird eine Hash-Funktion 301 mit der virtuellen Seitennummer 203 durchgeführt, um einen Index zu bilden. Dieser Index ist ein Offset in die Seitentabelle 303 hinein. Bei dem gezeigten Beispiel ist der Index 0, d.h., der Index zeigt zum ersten Eintrag 305 in der Seitentabelle. Jeder Eintrag in der Seitentabelle besteht aus mehreren Teilen, er enthält jedoch typischerweise mindestens einen virtuellen Tag 307, eine physische Seite 309 und einen Zeiger 311. Wenn die virtuelle Seitennummer 203 gleich dem virtuellen Tag 307 ist, dann gibt die physische Seite 309 die gewünschte physische (echte) Speicherseiten-Adresse an. Wenn der virtuelle Tag nicht paßt, zeigt der Zeiger 311 zu einer Kette von Einträgen im Speicher, welche Information zur Übersetzung virtueller in physische Adressen enthält. Diese zusätzli che in der Kette enthaltene Information wird benötigt, weil mehr als eine virtuelle Seitennummer zum selben Seitentabellen-Eintrag zeigen kann (Hash-Code-Anwendung).
  • Wie gezeigt, zeigt der Zeiger 311 zu einem Kettensegment 313. Dieses Kettensegment enthält dieselbe Art von Information wie die Seitentabelle. Wie zuvor wird die virtuelle Seitennummer 203 mit dem nächsten virtuellen Tag 315 verglichen, um festzustellen, ob es ein Gegenstück gibt. Wenn ein übereinstimmendes Gegenstück da ist, gibt die zugeordnete physische Seite 317 die Adresse der gewünschten physischen Speicherseite an. Wenn kein passendes Gegenstück da ist, wird der Zeiger 319 untersucht, um das nächste Kettensegment zu ermitteln, wenn eines vorhanden ist. Wenn der Zeiger 319, wie gezeigt, nicht zu einem anderen Kettensegment zeigt, dann ist ein Seitenfehler aufgetreten. In diesem Fall wird ein Seitenfehler-Softwareprogramm verwendet, wie in Verbindung mit 1 beschrieben, um die Seitentabelle zu aktualisieren.
  • Ein Verfahren dieser Art ist aus US 5,060,137 bekannt.
  • Das oben beschriebene Verfahren arbeitet gut für Systeme, bei dem der virtuelle Tag kleiner ist als die Adressbreite des Computers, oder für Systeme mit nur einer Zentraleinheit (CPU). Wenn der virtuelle Tag jedoch größer ist als die Adressbreite, werden zwei Vergleiche benötigt, um zu überprüfen, ob der virtuelle Tag und die virtuelle Seitennummer dieselben sind. Dieser zusätzliche Vergleichsschritt vermindert die Geschwindigkeit des Rechnersystems. Ferner muß bei Systemen mit mehreren CPUs große Sorgfalt darauf verwendet werden, zu gewährleisten, daß eine CPU nicht denselben Seitentabellen-Eintrag aktualisiert, welchen eine andere CPU überprüft. Sonst wäre es möglich, daß eine erste CPU einen Seitentabellen-Eintrag modifiziert, während eine zweite CPU den zweiten Vergleichsschritt mit demselben Seitentabellen-Eintrag durchführt. Dies wäre ein unannehmbares Ergebnis, und daher wäre zusätzliche Hardware notwendig, um sicherzustellen, daß keine Konflikte auftreten.
  • Aufgabe der Erfindung ist es, eine Übersetzungsvorrichtung anzugeben, bei der die Bitbreite der virtuellen Tags größer ist als die Adressbreite des Rechnersystems, ohne bei Seitentabellen-Operationen mehrere Vergleichsschritte durchführen zu müssen.
  • Diese Aufgabe wird durch die Übersetzungsvorrichtung nach Anspruch 1 erfüllt.
  • Die Unteransprüche 2 – 6 sind vorteilhafte Ausführungen der erfindungsgemäßen Übersetzungsvorrichtung.
  • Durch die erfindungemäße Übersetzungsvorrichtung können virtuelle Tags verwendet werden, die größer sind als die Adressbreite eines Rechners, ohne daß mehrere Vergleichsoperationen nötig sind. Anstatt den gesamten Tag in den Seitentabellen-Einträgen zu speichern, werden mehrere Vergleiche vermieden, indem ein verminderter Tag gespeichert wird. Der verminderte Tag ist nicht größer als die Adressbreite, so daß nur eine einzige Vergleichsoperation benötigt wird. Der verminderte Tag wird aus der virtuellen Adresse des Systems gebildet, indem einige Bits entfernt werden, wodurch ein kleinerer Tag gebildet wird. Um die Eindeutigkeit der Seitentabelle-Einträge zu erhalten, werden die von der virtuellen Adresse entfernten Bits verwendet, um einen Index in die Seitentabelle einzuführen.
  • Ferner können die Bits, die nicht zum Bilden des verminderten Tags verwendet werden, mit anderen Bits aus der virtuellen Adresse kombiniert werden, um einen Hash-Index zu bilden. Dieser Hash-Index gewährleistet eine gleichmäßige Verteilung der Einträge in der Seitentabelle.
  • Zudem kann ein Hash-Tag aus den Bits der virtuellen Seitennummer und den Indexbits gebildet werden. Dieser Hash- Tag ist nicht größer als die Adressbreite des Rechners, und er wird in der Seitentabelle an der Stelle des verminderten Tags gespeichert.
  • Die Erfindung hat den Vorteil, daß große virtuelle Adressen verwendet werden können, ohne daß mehrere Vergleichsschritte notwendig wären. Rechner, welche die vorliegende Erfindung benutzen, genießen daher die Vorteile eines großen Adressbereiches ohne die Nachteile und Probleme für die Leistungsfähigkeit bei Konstruktionen nach dem Stand der Technik. Dies ist ein besonders wichtiger Fortschritt für Hochleistungs-Rechnersysteme, welche mehrere CPUs verwenden, die jeweils auf einen gemeinsamen physischen Speicher Zugriff haben.
  • Die Erfindung ist im folgenden anhand bevorzugter Ausführungsbeispiele mit Bezug auf die Zeichnung näher erläutert. Es zeigen:
  • 1 ein Verfahren nach dem Stand der Technik, das zeigt, wie auf virtuelle Adressen reagiert wird, welche während der Ausführung eines Programmes übergeben werden,
  • 2 ein Verfahren nach dem Stand der Technik zum Zugreifen auf einen Eintrag in einem Übersetzungs-Vorgriff-Puffer,
  • 3 ein Verfahren nach dem Stand der Technik zum Wiedergewinnen physischer Seiteninformation, um einen TLB nach einem TLB-Fehltreffer zu aktualisieren,
  • 4 eine erste bevorzugte Ausführungsform der vorliegenden Erfindung, bei der Indexbits mit einem Hash-Tag kombiniert werden, um auf die Seitentabelle zuzugreifen,
  • 5 eine zweite bevorzugte Ausführungsform der vorliegenden Erfindung, bei der Hash-Indexbits mit einem Hash-Tag kombiniert werden, um einen Zugriff auf die Seitentabelle vorzusehen,
  • 6 eine dritte bevorzugte Ausführungsform der vorliegenden Erfindung, bei der Hash-Tags in der Seitentabelle gespeichert werden, und
  • 7 ein zweites Seitentabellenformat.
  • Ein Grundmerkmal der vorliegenden Erfindung ist das Aufspalten der virtuellen Seitennummer 203 in zwei Teile. Einen ersten Teil, welcher der verminderte Tag wird, und einen zweiten Teil, welcher als ein Index verwendet wird. Der verminderte Tag wird dadurch gebildet, daß die für den Tag verwendeten Bits auf nicht mehr als die Adressbreite des Rechners begrenzt werden. Wenn das Rechnersystem beispielsweise eine Datenbreite von 32 Bit hat, würde das verminderte Tag nicht mehr als 32 Bit enthalten. Alle Bits, die nicht zum Bilden des verminderten Tags verwendet werden, werden dann zum Bilden eines Rest-Indexes verwendet.
  • 4 zeigt eine bevorzugte Realisierung der vorliegenden Erfindung zum Wiedergewinnen der physischen Seiteninformation nach einem TLB-Fehltreffer. Wie gezeigt, wird die virtuelle Seitennummer 203 in zwei Teile aufgespaltet; ein vermindertes Tag 401 und ein Rest-Index 403. Der verminderte Tag 401 besteht aus nicht mehr Bits als die Adressbreite des Rechners. Die zum Bilden des verminderten Tags nicht verwendeten Bits bilden den Rest-Index 403. Wenn also die virtuelle Seitennummer 203 eine Länge von 36 Bits hat, wäre der verminderte Tag 401 32 Bit lang, und der Rest-Index 403 hätte eine Länge von 4 Bit, wenn man annimmt, daß die Datenbreite des Rechners 32 Bit beträgt.
  • Eine Hash-Funktion 405 wird mit dem verminderten Tag 401 durchgeführt, um einen Tagindex 407 zu erzeugen. Der Tagindex 407 wird mit dem Rest-Index 403 kombiniert, beispielsweise durch Verkettung, um einen Seitentabellen-Index 409 zu bilden. Wie gezeigt, ist der Seitentabellen-Index Eins und zeigt zum zweiten Eintrag 411 der Seitentabelle 413. Jeder Eintrag in der Tabelle besteht aus mehreren Teilen, wie bereits in Verbindung mit 3 beschrieben. Wenn der verminderte Tag 401 gleich dem verminderten Tag 415 ist, gibt die physische Seite 417 die physische (echte) gewünschte Speicherseiten-Adresse an. Wenn die Tags 401 und 415 nicht übereinstimmen, wird der Zeiger 419 untersucht, um das nächste Glied in der Kette zu finden, soweit vorhanden, wie oben beschrieben.
  • Dieses Verfahren und die Vorrichtung erfordern, daß die Seitentabelle eine minimale Anzahl von Indizes aufweist. Da der Rest-Index 403 eine Größe von 4 Bit hat, muß die Seitentabelle bei diesem Beispiel mindestens 16 Einträge aufweisen. Da die Größe von Seitentabellen im allgemeinen wesentlich größer ist, macht diese Beschränkung keine Schwierigkeiten.
  • 5 zeigt eine zweite bevorzugte Ausführungsform der vorliegenden Erfindung. Wie zuvor, ist die virtuelle Seitennummer 203 in einen verminderten Tag 401 und einen Rest-Index 403 aufgespaltet. Der verminderten Tag 401 ist so breit wie die Adressbreite des Rechners. Bits, welche nicht zum Bilden des verminderten Tags verwendet werden, bilden den Rest-Index 403. Bei dem gezeigten Beispiel hat der Rest-Index eine Länge von 4 Bit, und der verminderte Tag 401 hat eine Länge von 32 Bit.
  • Die 32 Bits des verminderten Tags 401 werden über eine Hash-Funktion 405 verarbeitet, um einen Markenindex 407 zu erzeugen. Eine zweite Hash-Funktion 501 wird mit dem Rest-Index 403 durchgeführt, und "n" Bits 503 bilden den virtuelle Tag 401, wobei "n" einen Wert von 0 bis zur maximalen Anzahl der Bits in dem verminderten Tag haben kann. Die Ausgabe 505 der zweiten Hash-Funktion 501 wird mit dem Markenindex 407 kombiniert, beispielsweise durch eine Verkettung, um einen Seitentabellen-Index 507 zu bilden.
  • Durch Verwenden einer zweiten Hash-Funktion 501 ist eine gleichmäßigere Verteilung der Seitentabellen-Indizes mög lich, als wenn nur die Bits des Rest-Indexes 403 verwendet würden. Im Idealfall wäre die Verteilung so, daß der erste Index zur Seitentabelle einen Treffer ergäbe. Aufgrund von Größenbeschränkungen für die Seitentabelle ist jedoch eine Suchlänge in die Seitentabelle hinein von 1,1 typischer, und sie gewährt eine vernünftige Seitentabellengröße.
  • Die Organisation und Funktion der Seitentabelle 509 ist im wesentlichen wie in Verbindung mit 3 und 4 beschrieben. Die Größe der Seitentabelle wird dagegen durch die Anzahl von Bits des Ausgangs 505 der zweiten Hash-Funktion bestimmt. In einem Minimalfall besteht die Ausgabe 505 aus der Anzahl von Bits im Rest-Index 403. In dem Minimalfall, bei dem der Rest-Index eine Länge von vier Bit hat und "n" = 0, hat die Seitentabelle 16 Einträge und arbeitet wie in Verbindung mit 4 beschrieben. Wenn "n" > 0, dann ist die Ausgabe 505 größer als 4 Bit, und die Seitentabelle hat 2m Eintragsbereiche, wobei m die Anzahl der Bits in der Ausgabe 505 ist. Es muß nicht notwendigerweise eine direkte Beziehung zwischen "n" und "m" geben, da die zweite Hash-Funktion eine beliebige Anzahl von Bits von dem verminderten Tag entnehmen kann und eines oder mehrere zusätzliche Bits zur Kombination mit den Bits des Rest-Indexes 403 erzeugen kann. Je mehr Bits die Ausgabe 505 hat, desto gleichmäßiger sind die Seiten in der Seitentabelle verteilt.
  • Die "n" Bits von dem verminderten Tag können über Software konfigurierbar sein, so daß die Anzahl der Bits, und die einzelnen verwendeten Bits, mittels Software ausgewählt werden können. Dies ermöglicht die intelligente Konfiguration des Rechnersystems, was wünschenswert ist, wenn die virtuelle Adresse 203 wesentlich größer als die Datenwegbreite ist und wenn daher die Zwangsbedingungen für die Seitentabellengröße zu einem Problem werden.
  • 6 zeigt eine weitere Ausführungsform der vorliegenden Erfindung. Der Betrieb des Seitentabellen-Nachschla ge-verfahrens läuft mit den folgenden Ausnahmen im wesentlichen genauso ab, wie in Verbindung mit 4 beschrieben.
  • Die Seitentabelle 413 enthält "Hash-Tags" 601 und 603 anstelle der verminderten Tags von 4. Diese Hash-Tags werden gebildet, indem die Indexbits 403 und die Bits 401 der virtuellen Seitennummer genommen werden und eine Hash-Funktion mit diesen Bits durchgeführt wird, wobei das Ergebnis nicht größer als die Adressbreite des Rechners ist. Dieses Hash-Ergebnis wird dann in der Seitentabelle (601 und 603) anstelle der zuvor beschriebenen verminderten Tags gespeichert.
  • Im Betrieb wird ein Seitentabellen-Index 409, wie zuvor erläutert, gebildet. Gleichzeitig mit dem Bilden des Seitentabellen-Indexes wird ein Hash-Ergebnis 605 gebildet, indem eine Hash-Funktion 607 mit den Indexbits 403 und den Bits 401 der virtuellen Seitennummer durchgeführt wird. Diese Hash-Funktion ist dieselbe wie die, die zum Erzeugen aller Hash-Tags verwendet wurde, welche in der Seitentabelle gespeichert wurden. Der Seitentabellen-Index zeigt zu einem Eintrag 411 in der Seitentabelle 413, und der Hash-Tag 603 wird mit dem Hash-Ergebnis 605 verglichen (609). Wenn der Tag 603 und das Ergebnis 605 übereinstimmen, gibt eine physische Seite 417 die gewünschte Adresse der physischen Speicherseite an. Wenn es kein passendes Gegenstück gibt, wird der Zeiger 419 untersucht, um das nächste Glied in der Kette, soweit vorhanden, herauszufinden.
  • Diese Vorrichtung zum Erzeugen eines Seitentabellen-Tags ist besonders vorteilhaft, wenn das Betriebssystem des Rechners gewährleisten kann, daß hochwertige Bits in der virtuellen Seitennummer Null sind. Wenn beispielsweise der gesamte virtuelle Adressbereich nicht benötigt wird, können einige Bits immer Null sein. Dieses Verfahren und die Vorrichtung erlauben also eine Verminderung der Größe des IDX-Indexes, wodurch die Effi zienz der Seitentabelle verbessert wird, da die minimale Größe der Seitentabelle vermindert wird.
  • 7 zeigt eine von vielen möglichen anderen Seitentabellen-Organisationsformen, welche verwendet werden können, ohne den Bereich der vorliegenden Erfindung zu verlassen. Bei diesem Beispiel ist ein Eintrag 701 in einer Seitentabelle gezeigt. Dieser Eintrag hat drei Sätze (703, 705 und 707) von verminderten Tags und physischen Seiteneinträgen. Der Betrieb dieser Seitentabelle ist im wesentlichen derselbe, wie in Verbindung mit 4 beschrieben, außer daß drei verminderte Tags (709, 711 und 713) mit der virtuellen Seitennummer 401 verglichen werden, bevor der Zeiger 715 untersucht wird, um das nächste Glied, soweit vorhanden, aufzufinden.

Claims (6)

  1. Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse, mit einer Seitentabelle (413) mit einem Adressregister zum Speichern eines virtuellen Tags (203), wobei die Anzahl der Bits des virtuellen Tags die Adressenbreite des Rechners überschreitet, wobei der virtuelle Tag (203) einen verminderten Tagabschnitt (401), dessen Bitbreite gleich oder kleiner als die Adressenbreite des Rechners ist, und einen Indexabschnitt (403) aufweist, welcher die restlichen Bits des virtuellen Tags umfaßt, eine erste Hash-Funktion (405) eine erste Ausgangsfolge (407) aus den Bits des verminderten Tagabschnitts (401) erzeugen kann, ein Seitentabellen-Index (409; 507) aus der ersten Ausgangsfolge (407) und der Information des Indexabschnittes (403) kombiniert wird und verschiedene Sets in der Seitentabelle (413) indiziert, und wobei die Sets mindestens ein Paar aus einem verminderten Tag-Eintrag (307, 415) und der zugeordneten physikalischen Adresse und mindestens einen Zeiger (41) aufweisen.
  2. Übersetzungsvorrichtung nach Anspruch 1, bei der die Seitentabelle (413) 2I verminderte Tag-Einträge aufweist, wobei "I" gleich der Anzahl von Bits im Indexabschnitt (403) ist.
  3. Übersetzungsvorrichtung nach Anspruch 1, wobei die aus der Seitentabelle (413) gewonnene physikalische Seitenadresse und die virtuelle Seitennummer in einem Translation-Lookaside-Puffer (TLB) abgespeichert werden.
  4. Übersetzungsvorrichtung nach einem der vorangehenden Ansprüche, bei der der Seitentabellen-Index (409; 507) aus der ersten Ausgangsfolge und der Ausgabe (505) einer zweiten Hash-Funktion (501) kombiniert wird, wobei die zweite Hash-Funktion die gesamte Information des Indexabschnitts (403) und Bits des verminderten Tagabschnitts (401) als Eingabe empfängt.
  5. Übersetzungsvorrichtung nach einem der vorangehenden Ansprüche, mit einer dritten Hash-Funktion (607) zur Bildung eines Hash-Ergebnisses (605) aus dem verminderten Tagabschnitt (401) und dem Indexabschnitt (403), und mit einem Vergleicher (609) zum Vergleichen des Hash-Ergebnisses (605) mit einem in der Seitentabelle (413) gespeicherten Hash-Tag (603).
  6. Übersetzungsvorrichtung nach Anspruch 5, wobei dann, wenn die Hash-Tag und das Hash-Ergebnis übereinstimmen, der dem Hash-Tag-Eintrag zugeordnete physikalische Seiten-Eintrag in dem TLB gespeichert wird.
DE4410060A 1993-04-08 1994-03-23 Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse Expired - Fee Related DE4410060B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US4485493A 1993-04-08 1993-04-08
US08/044,854 1993-04-08

Publications (2)

Publication Number Publication Date
DE4410060A1 DE4410060A1 (de) 1994-10-13
DE4410060B4 true DE4410060B4 (de) 2006-02-09

Family

ID=21934684

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4410060A Expired - Fee Related DE4410060B4 (de) 1993-04-08 1994-03-23 Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse

Country Status (4)

Country Link
US (1) US5724538A (de)
JP (1) JP3640978B2 (de)
KR (1) KR100297454B1 (de)
DE (1) DE4410060B4 (de)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809563A (en) * 1996-11-12 1998-09-15 Institute For The Development Of Emerging Architectures, Llc Method and apparatus utilizing a region based page table walk bit
US5787431A (en) * 1996-12-16 1998-07-28 Borland International, Inc. Database development system with methods for java-string reference lookups of column names
US6073226A (en) * 1997-03-19 2000-06-06 Microsoft Corporation System and method for minimizing page tables in virtual memory systems
US6065010A (en) * 1997-06-10 2000-05-16 Daikin Us Corporation Computer implemented method of generating virtual files for sharing information of physical information file
JP3680142B2 (ja) * 1997-12-05 2005-08-10 東京エレクトロンデバイス株式会社 記憶装置及びアクセス方法
US6633922B1 (en) * 1997-12-15 2003-10-14 International Business Machines Corporation Object access mechanism that dynamically switches between multiple distributed access models
US7953931B2 (en) * 1999-08-04 2011-05-31 Super Talent Electronics, Inc. High endurance non-volatile memory devices
US6393544B1 (en) * 1999-10-31 2002-05-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for calculating a page table index from a virtual address
US8019943B2 (en) * 2000-01-06 2011-09-13 Super Talent Electronics, Inc. High endurance non-volatile memory devices
US6480950B1 (en) * 2000-01-24 2002-11-12 Oracle International Corporation Software paging system
US6671645B2 (en) * 2001-09-28 2003-12-30 Ciena Corporation Method for in-service RAM testing
US6934796B1 (en) * 2002-02-01 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with hashing function
US7382637B1 (en) 2002-02-01 2008-06-03 Netlogic Microsystems, Inc. Block-writable content addressable memory device
US6697276B1 (en) 2002-02-01 2004-02-24 Netlogic Microsystems, Inc. Content addressable memory device
US20030225992A1 (en) * 2002-05-29 2003-12-04 Balakrishna Venkatrao Method and system for compression of address tags in memory structures
US7197620B1 (en) * 2002-12-10 2007-03-27 Unisys Corporation Sparse matrix paging system
US7343477B1 (en) * 2003-12-29 2008-03-11 Sun Microsystems, Inc. Efficient read after write bypass
US7555634B1 (en) 2004-04-22 2009-06-30 Sun Microsystems, Inc. Multiple data hazards detection and resolution unit
US7606994B1 (en) * 2004-11-10 2009-10-20 Sun Microsystems, Inc. Cache memory system including a partially hashed index
JP3894335B1 (ja) * 2005-10-04 2007-03-22 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースの整合性を判断する装置、およびその方法
US8464024B2 (en) * 2007-04-27 2013-06-11 Hewlett-Packard Development Company, L.P. Virtual address hashing
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009072104A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
US8359516B2 (en) 2007-12-12 2013-01-22 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
WO2009118720A2 (en) 2008-03-25 2009-10-01 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) * 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US8429377B2 (en) * 2010-01-08 2013-04-23 International Business Machines Corporation Optimizing TLB entries for mixed page size storage in contiguous memory
US9037777B2 (en) * 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
DE112010004565B4 (de) 2009-12-25 2021-07-01 International Business Machines Corporation System, Verfahren und Programm zur Prüfung der Konsistenz von Zeigern in einer Hierarchischen Datenbank
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8621321B2 (en) 2010-07-01 2013-12-31 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US8478740B2 (en) * 2010-12-16 2013-07-02 Microsoft Corporation Deriving document similarity indices
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US20120265962A1 (en) * 2011-04-17 2012-10-18 Anobit Technologies Ltd. High-performance sas target
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) * 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US10387324B2 (en) * 2011-12-08 2019-08-20 Intel Corporation Method, apparatus, and system for efficiently handling multiple virtual address mappings during transactional execution canceling the transactional execution upon conflict between physical addresses of transactional accesses within the transactional execution
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9081672B1 (en) 2013-05-30 2015-07-14 Richard Michael Nemes Methods and apparatus for information storage and retrieval using a caching technique with external-chain hashing and dynamic resource-dependent data shedding
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9367454B2 (en) * 2013-08-15 2016-06-14 Applied Micro Circuits Corporation Address index recovery using hash-based exclusive or
US9229874B2 (en) * 2013-09-27 2016-01-05 Intel Corporation Apparatus and method for compressing a memory address
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US20150256601A1 (en) * 2014-03-10 2015-09-10 Palo Alto Research Center Incorporated System and method for efficient content caching in a streaming storage
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
US10025722B2 (en) * 2015-10-28 2018-07-17 International Business Machines Corporation Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US11544069B2 (en) * 2018-10-25 2023-01-03 Micron Technology, Inc. Universal pointers for data exchange in a computer system having independent processors
US10846239B2 (en) * 2018-11-29 2020-11-24 Marvell Asia Pte, Ltd. Managing translation lookaside buffer entries based on associativity and page size

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
EP0212129A2 (de) * 1985-06-28 1987-03-04 Hewlett-Packard Company Verfahren zur Aktualisierung der Informationen in einem Adressenübersetzungspufferspeicher
US5060137A (en) * 1985-06-28 1991-10-22 Hewlett-Packard Company Explicit instructions for control of translation lookaside buffers

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5687282A (en) * 1979-12-14 1981-07-15 Nec Corp Data processor
US4682281A (en) * 1983-08-30 1987-07-21 Amdahl Corporation Data storage unit employing translation lookaside buffer pointer
US4731740A (en) * 1984-06-30 1988-03-15 Kabushiki Kaisha Toshiba Translation lookaside buffer control system in computer or virtual memory control scheme
US5253353A (en) * 1990-01-02 1993-10-12 Digital Equipment Corporation System and method for efficiently supporting access to I/O devices through large direct-mapped data caches

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
EP0212129A2 (de) * 1985-06-28 1987-03-04 Hewlett-Packard Company Verfahren zur Aktualisierung der Informationen in einem Adressenübersetzungspufferspeicher
US5060137A (en) * 1985-06-28 1991-10-22 Hewlett-Packard Company Explicit instructions for control of translation lookaside buffers

Also Published As

Publication number Publication date
JP3640978B2 (ja) 2005-04-20
JPH0749812A (ja) 1995-02-21
KR100297454B1 (ko) 2001-10-24
DE4410060A1 (de) 1994-10-13
US5724538A (en) 1998-03-03
KR940024591A (ko) 1994-11-18

Similar Documents

Publication Publication Date Title
DE4410060B4 (de) Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
DE3151745C2 (de)
DE69637294T2 (de) Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE60003273T2 (de) Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE2227882C2 (de) Virtuelle Speicheranordnung
DE69629800T2 (de) Adressenübersetzungsbuffer in einem rechnersystem
DE3131341C2 (de)
DE3833933C2 (de) Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion
DE2235841C2 (de) Datenverarbeitungsanlage mit Speichersteuerung für mindestens einen Prozessor und diesen zugeordneten Pufferspeichern
DE69629140T2 (de) Cachefähigkeitsattribut für virtuelle Adressen in Cachespeichern mit sowohl virtuellen als auch physikalischem Index
DE102006030879B4 (de) System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem
DE60036960T2 (de) Unterscheidung von feinkorntranslation
DE10002120B4 (de) Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
DE3805107A1 (de) Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers
DE2346525A1 (de) Virtuelle speichereinrichtung
DE2302074A1 (de) Speicherschutzanordnung in einem multiprozessorsystem
DE2260353A1 (de) Verfahren und vorrichtung zur speichersteuerung und adressenumsetzung
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112018003032T5 (de) Cachestruktur, die ein logisches verzeichnis verwendet
DE112018002032T5 (de) Gemeinsames nutzen von virtuellen und realen übersetzungen in einem virtuellen cache
DE4123550A1 (de) Informationsverarbeitungssystem mit direktem speicherzugriff
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung
DE4234695C2 (de) Computer-Speichersystem und Verfahren zur Aufrechterhaltung der Cache-Kohärenz zwischen einem Daten-Cache und einem Segmentdeskriptor-Cache

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee