DE60003273T2 - Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse - Google Patents

Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse Download PDF

Info

Publication number
DE60003273T2
DE60003273T2 DE60003273T DE60003273T DE60003273T2 DE 60003273 T2 DE60003273 T2 DE 60003273T2 DE 60003273 T DE60003273 T DE 60003273T DE 60003273 T DE60003273 T DE 60003273T DE 60003273 T2 DE60003273 T2 DE 60003273T2
Authority
DE
Germany
Prior art keywords
address
page
page table
region
hash
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 - Lifetime
Application number
DE60003273T
Other languages
English (en)
Other versions
DE60003273D1 (de
Inventor
William R. Bryg
Gary N. Hammond
Stephen G. Burger
James O. Hays
Jerome C. Huck
Sunil Saxena
Jonathan K. Ross
Koichi Yamada
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.)
Institute for Development of Emerging Architectures Cupertino LLC
Institute for Development of Emerging Architectures LLC
Original Assignee
Institute for Development of Emerging Architectures Cupertino LLC
Institute for Development of Emerging Architectures LLC
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 Institute for Development of Emerging Architectures Cupertino LLC, Institute for Development of Emerging Architectures LLC filed Critical Institute for Development of Emerging Architectures Cupertino LLC
Publication of DE60003273D1 publication Critical patent/DE60003273D1/de
Application granted granted Critical
Publication of DE60003273T2 publication Critical patent/DE60003273T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf eine Speicherorganisation in Computersystemen. Insbesondere bezieht sich die vorliegende Erfindung auf virtuelle Speichersysteme, die Seitentabellen aufweisen, auf die über eine Hash-Funktion zugegriffen wird.
  • Herkömmliche Computersysteme verwenden eine Technik, die virtueller Speicher genannt wird, die mehr logischen Speicher simuliert als tatsächlich vorhanden ist und es dem Computer ermöglicht, mehrere Programme gleichzeitig unabhängig von ihrer Größe laufenzulassen. Gleichzeitige Benutzerprogramme greifen auf Hauptspeicheradressen über virtuelle Adressen zu, die durch das Betriebssystem zugeteilt sind. Die Abbildung der virtuellen Adressen auf die physischen Adressen des Hauptspeichers ist ein Verfahren, das als virtuelle Adreßübersetzung bekannt ist. Die virtuelle Adreßübersetzung kann durch eine Anzahl von Techniken erzielt werden, wodurch es dem Prozessor ermöglicht wird, auf die erwünschten Informationen in dem Hauptspeicher zuzugreifen.
  • Der virtuelle Adreß- und der physische Adreßraum sind üblicherweise in Speicherblöcke mit gleicher Größe unterteilt, die Seiten genannt werden, wobei eine Seitentabelle die Übersetzung zwischen virtuellen Adressen und physischen Adressen liefert. Jeder Seitentabelleneintrag enthält üblicherweise die virtuelle Adresse und/oder die physische Adresse und Schutz- und Statusinformationen bezüglich der Seite. Ein Status umfaßt üblicherweise Informationen über den Typ von Zugriffen, die bezüglich der Seite durchgeführt wurden. Ein verfälschtes Bit z. B. zeigt an, daß es eine Modifizierung an Daten in der Seite gegeben hat. Da die Seitentabellen üblicherweise groß sind, sind dieselben in einem Speicher gespeichert. Deshalb kann jeder reguläre Speicherzugriff tatsächlich zumindest zwei Zugriffe erfor dern, nämlich einen, um die Übersetzung zu erhalten, und einen zweiten, um auf den physischen Speicherort zuzugreifen.
  • Viele Computersysteme, die eine virtuelle Adreßübersetzung unterstützen, verwenden einen Übersetzungsseitengriffspuffer bzw. -Zwischenspeicher (TLB; TLB = Translation Lookaside Buffer). Der TLB ist üblicherweise ein kleiner, schneller, assoziativer Speicher, der sich üblicherweise auf oder in unmittelbarer Nähe zu der Prozessoreinheit befindet und kürzlich verwendete Paare virtueller und physischer Adressen speichert. Der TLB enthält einen Teilsatz der Übersetzungen in der Seitentabelle und auf ihn kann sehr viel schneller zugegriffen werden. Wenn die Verarbeitungseinheit Informationen aus dem Hauptspeicher benötigt, sendet dieselbe die virtuelle Adresse an den TLB. Der TLB akzeptiert die Virtuelladreßseitenzahl und gibt eine physische Seitenzahl zurück. Die physische Seitenzahl wird mit Adreßinformationen niedriger Ordnung kombiniert, um auf das erwünschte Byte oder Wort in dem 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, deren Übersetzung sich nicht in dem TLB befindet, wird auf die Seitentabelle zugegriffen, um die Übersetzung dieser virtuellen Seitenzahl zu einer physischen Seitenzahl zu bestimmen, und diese Informationen werden in den TLB eingegeben. Ein Zugriff auf die Seitentabelle kann 20 mal länger als ein Zugriff auf den TLB dauern, weshalb eine Programmausführungsgeschwindigkeit dadurch optimiert wird, daß die Übersetzungen in dem TLB verwendet gehalten werden.
  • Die meisten heutigen Computersysteme verwenden eine Art von Massenspeicherung, üblicherweise eine Platte, um den physischen Direktzugriffsspeicher (RAM) in dem Computer zu erhöhen. Diese Erhöhung des Hauptspeichers ermöglicht es, daß größere Programme implementiert werden können, als wenn nur ein Hauptspeicher verfügbar wäre. Zusätzlich ist ein Plattenspeicher wesentlich billiger als ein RAM, jedoch auch um Größenordnungen langsamer. Abhängig von der Länge eines Programms und dem Wettkampf mit anderen Programmen für den Hauptspeicher kann sich zu einem bestimmten Zeitpunkt ein Teil eines Programms in dem Hauptspeicher befinden und ein Teil kann sich auf einer Platte befinden. Die Teile eines Programms, auf die unmittelbar zugegriffen werden muß, werden in den Hauptspeicher gebracht, während die gegenwärtig nicht verwendeten Teile auf der Platte gelassen werden.
  • Es wird z. B. ein einzelnes Programm betrachtet, das 2 Megabytes lang ist und auf einem Computer ausgeführt wird, der ein Megabyte Hauptspeicher aufweist. Das Programm erfordert 2 Megabytes virtuellen Adreßraum. Da der Hauptspeicher nur ein Megabyte halten kann, kann sich maximal die Hälfte des Programms zu einer bestimmten Zeit in dem Hauptspeicher befinden und der Rest des virtuellen Adreßraums ist auf der Platte gespeichert. Ein Zugriff auf die Informationen in dem Hauptspeicher tritt normal auf. Dies bedeutet, daß zuerst auf den TLB geschaut wird, um zu sehen, ob er die Übersetzung hat, wobei, wenn dieselbe nicht in dem TLB ist, der TLB unter Verwendung von Informationen von der Seitentabelle aktualisiert wird und dann wieder auf den TLB verwiesen wird, um die erwünschten Übersetzungsinformationen zu erhalten.
  • Wenn ein Zugriff auf die Informationen, die sich nicht in dem Hauptspeicher befinden, auftritt, wird zuerst auf den TLB für die Übersetzung zugegriffen, die nicht dort sein wird. Dann wird auf die Seitentabelle verwiesen, um die Übersetzungsinformationen zu erhalten, um den TLB zu aktualisieren. Die Seitentabelle weist jedoch nur die Übersetzungen für Informationen in dem Hauptspeicher auf und wird deshalb die erforderlichen Übersetzungsinformationen nicht haben. Dieser Zustand wird ein Seitenfehler genannt. Ansprechend auf einen Seitenfehler findet eine Seitenfehler handhabungsvorrichtung eine freie physische Seite, lädt die physische Seite mit der erforderlichen virtuellen Seite, die auf der Platte gespeichert ist, und fügt die Übersetzung in eine Seitentabelle ein. Wenn bereits alle physischen Seiten anderen virtuellen Seiten zugeordnet wurden, muß die Seitenfehlerhandhabungsvorrichtung auswählen, welche physischen Seiten, die gegenwärtig in dem physischen Speicher gespeichert sind, aus der Platte heraus ausgetauscht werden sollen. Es gibt viele Algorithmen zum Durchführen dieser Aufgabe, wie z. B. den Zuerst-Hinein-Zuerst-Hinaus- und den Zuletzt-Verwendet-Algorithmus. Die Seitenfehlerhandhabungsvorrichtung ist üblicherweise in Software implementiert, während das TLB-Aktualisierungsverfahren entweder durch Hardware oder durch Software gehandhabt werden kann, wie dies in der Technik bekannt ist.
  • 1 stellt das oben beschriebene Verfahren dar. In Schritt 112 wird dem TLB eine virtuelle Adresse vorgelegt. Wenn die Übersetzung für diese virtuelle Adresse in dem TLB ist (ein TLB-Treffer), wird die zugeordnete physische Adresse von dem TLB hergeleitet und verwendet, um auf den physischen Speicher zuzugreifen (Schritt 114). Wenn die Übersetzung für diese virtuelle Adresse nicht in dem TLB ist (ein TLB-Fehlschlag), wird auf die Seitentabelle für die Übersetzung zugegriffen (Schritt 116). Wenn die Übersetzung in der Seitentabelle ist, werden diese Informationen in den TLB eingefügt (Schritt 118) und die virtuelle Adresse wird wieder vorgelegt (Schritt 112). Dieses Mal gibt es einen TLB-Treffer, so daß die resultierende physische Adresse verwendet wird, um auf den physischen Speicher zuzugreifen.
  • Wenn die virtuelle Adresse in einer Seite virtueller Adressen ist, für die keine Seite physischer Adressen zugeordnet ist, gibt es keinen Eintrag für diese Seite in der Seitentabelle und ein Seitenfehler wird auftreten. In dieser Situation teilt eine Softwareseitenfehlerhandhabungsvorrichtung (Schritt 120) der virtuellen Seite eine physische Sei te zu, kopiert die Seite von der Platte an die physische Seite und aktualisiert die Seitentabelle. Dann wird die virtuelle Adresse wieder dem TLB vorgelegt. Da der TLB noch keine Übersetzung aufweist, gibt es einen weiteren TLB-Fehlschlag und der TLB wird aus der Seitentabelle aktualisiert. Danach wird die virtuelle Adresse wieder dem TLB vorgelegt, wobei dieses Mal ein TLB-Treffer sichergestellt ist, und die resultierende physische Adresse wird verwendet, um auf den physischen Speicher zuzugreifen.
  • 2 stellt ein vereinfachtes Verfahren zum Zugreifen auf einen Eintrag in einem Übersetzungsseitengriffspuffer (TLB) ansprechend auf die Vorlage einer virtuellen Adresse dar. Um das Beispiel zu vereinfachen, weist der dargestellte TLB nur einen Eintrag auf, wohingegen ein TLB normalerweise viele Einträge mehr aufweisen würde. Die virtuelle Adresse wird in ein Register 201 geladen. Diese virtuelle Adresse besteht aus zwei Teilen, einer virtuellen Seitenzahl 203 und einem physischen Versatz 205. Der physische Versatz entspricht der Seitengröße. Für ein Computersystem, das eine Seitengröße von 4 Kilobytes aufweist, ist der physische Versatz 205 die unteren 12 Bits (Bits 11–0) der Adresse und spezifiziert ein bestimmtes Byte innerhalb einer Seite. Die verbleibenden Bits in dem Register zeigen die virtuelle Seitenzahl an. Der Ausdruck „Seitenversatz" ist ein Ausdruck, der in der Industrie oft verwendet wird, und ist synonym zu dem Ausdruck „physischer Versatz". Die virtuelle Adresse kann andere Bits umfassen, die beim eindeutigen Spezifizieren einer Übersetzung zu einer physischen Seitenzahl verwendet werden, wie z. B. „Adreßraumidentifizierer"-Bits oder „Regionidentifizierer"-Bits.
  • Für das dargestellte Beispiel wird die virtuelle Seitenzahl das virtuelle Etikett bzw. Tag, das eine Eingabe für den TLB-Komparator 207 liefert. Ein TLB 209 weist zwei verbundene Teile auf, ein TLB-Etikett 211 und eine zugeordnete physische Seitenzahl 213. Das TLB-Etikett 211 liefert die zweite Eingabe an den TLB-Komparator 207 und der Komparator vergleicht das TLB-Etikett mit dem virtuellen Etikett. Wenn die Etiketten übereinstimmen, zeigt der Komparator einen TLB-Treffer an, und die physische Seitenzahl 213 wird mit dem physischen Versatz 205 kombiniert, um die physische (reale) Speicheradresse zu liefern. Wenn die Etiketten nicht übereinstimmen, hat es einen TLB-Fehlschlag gegeben und das in Zuordnung zu 1 beschriebene TLB-Fehlschlagverfahren wird verwendet, um den TLB zu aktualisieren.
  • 3 stellt das Verfahren eines Wiedergewinnens der physischen Seiteninformationen angesichts der virtuellen Seitenzahl dar, wie dies erforderlich wäre, um den TLB nach einem TLB-Fehlschlag zu aktualisieren. Wie oben beschrieben ist, werden die Virtuell-zu-Physisch-Abbildungen in einer Seitentabelle beibehalten. Zum Übersetzen einer bestimmten virtuellen Adresse in eine physische Adresse besteht ein Ansatz darin, eine Viele-zu-Einem- (Hash-) Funktion bezüglich der virtuellen Adresse durchzuführen, um einen Index in die Seitentabelle zu bilden. Dies gibt einen Zeiger auf eine verbundene Liste von Einträgen. Diese Einträge werden dann nach einer Übereinstimmung durchsucht. Um eine Übereinstimmung zu bestimmen, wird die virtuelle Seitenzahl mit einem Eintrag in der Seitentabelle (virtuelles Etikett) verglichen. Wenn die beiden gleich sind, liefert dieser Seitentabelleneintrag die physische Adreßübersetzung.
  • Bei dem dargestellten Beispiel wird eine Hash-Funktion 301 bezüglich der virtuellen Seitenzahl 302 durchgeführt, um einen Index zu bilden. Dieser Index ist ein Versatz in die Seitentabelle 303. Wie gezeigt, ist der Index 0, was bedeutet, daß der Index auf den ersten Eintrag 305 in der Seitentabelle zeigt. Jeder Eintrag in der Seitentabelle besteht aus mehreren Teilen, umfaßt jedoch üblicherweise zumindest ein virtuelles Etikett 307, eine physische Seite 309 und einen Zeiger 311. Wenn die virtuelle Seitenzahl 203 gleich dem virtuellen Etikett 307 ist, gibt die physische Seite 309 die erwünschte physische (reale) Speicherseiten adresse. Wenn das virtuelle Etikett nicht übereinstimmt, zeigt der Zeiger 311 auf eine Kette von Einträgen in einem Speicher, die Virtuell-zu-Physisch-Übersetzungsinformationen enthalten. Die zusätzlichen Informationen, die in der Kette enthalten sind, werden benötigt, da mehr als eine virtuelle Seitenzahl zu dem gleichen Seitentabelleneintrag gehasht werden kann.
  • Wie gezeigt, zeigt der Zeiger 311 auf ein Kettensegment 313. Dieses Kettensegment enthält den gleichen Typ von Informationen wie die anfänglichen Seitentabelleneinträge. Wie zuvor wird die virtuelle Seitenzahl 203 mit dem nächsten virtuellen Etikett 315 verglichen, um zu sehen, ob es eine Übereinstimmung gibt. Wenn eine Übereinstimmung auftritt, gibt die zugeordnete physische Seite 317 die Adresse der erwünschten physischen Speicherseite. Wenn keine Übereinstimmung auftritt, wird der Zeiger 319 geprüft, um das nächste Kettensegment, falls vorhanden, zu lokalisieren. Wenn der Zeiger 319 auf kein weiteres Kettensegment zeigt, wie dies gezeigt ist, ist ein Seitenfehler aufgetreten. Ein Seitenfehler-Softwareprogramm wird dann verwendet, wie in Zuordnung zu 1 beschrieben ist, um die Seitentabelle zu aktualisieren.
  • Das oben beschriebene Verfahren funktioniert gut für Systeme, bei denen das virtuelle Etikett bzw. TAG kleiner oder gleich der grundlegenden Datenpfadgröße des Computers ist. Wenn das virtuelle TAG jedoch größer als die Datenpfadgröße ist, werden zwei Vergleiche benötigt, um zu testen, ob das virtuelle TAG und die virtuelle Seitenzahl gleich sind.
  • Das U.S.-Patent Nr. 5,724,538 von Dale Morris u. a. mit dem Titel „Computer Memory Address Control Apparatus Utilizing Hashed Address Tags in Page Tables Which Are Compared to a Combined Address Tag and Index Which Are Longer than the Basic Data Width of the Associated Computer" offenbart ein Schema zum Reduzieren der Größe des virtuellen Etiketts, wodurch die Anzahl von Vergleichen reduziert wird, die zum Testen benötigt wird, wenn das virtuelle TAG und die virtuelle Seitenzahl gleich sind. Im Grunde genommen haben Morris u. a. erkannt, daß ein Teil der virtuellen Adresse bereits durch den Hash-Index dargestellt wird, weshalb dieser Teil der Adresse nicht durch das virtuelle Etikett dargestellt werden muß.
  • 4 zeigt ein vereinfachtes Blockdiagramm eines Ausführungsbeispiels, das durch Dale Morris u. a. offenbart ist. In 4 enthält die Seitentabelle 413 „Hash-Etiketten" 421 und 423. Ein Hash-Index 409 wird durch ein Nehmen der Virtuellseitenzahlbits 401 und ein Durchführen einer Index-Hash-Funktion 405 bezüglich der Bits gebildet, wobei das Ergebnis nicht größer als die Basisdatenbreite des Computers ist. Ähnlich werden die Hash-Etiketten durch ein Nehmen der Virtuellseitenzahlbits 401 und ein Durchführen einer Etikett-Hash-Funktion 427 gebildet, wobei die resultierenden Hash-Etiketten nicht größer als die Basisdatenbreite des Computers sind. Es ist anzumerken, daß, obwohl 4 keine explizite Verbindung zwischen der Etikett-Hash-Funktion 427 und den Hash-Etiketten 421 und 423 zeigt, der durch die Etikett-Hash-Funktion 427 dargestellte Algorithmus verwendet wird, wenn die Hash-Etiketten 421 und 423 erzeugt und in die Seitentabelle 413 eingesetzt werden.
  • Die Index-Hash-Funktion 405 und die Etikett-Hash-Funktion 427 sind zu dem Grad komplementär, daß für jede bestimmte virtuelle Seitenzahl die Kombination des resultierenden Hash-Index und des resultierenden Hash-Etiketts einzigartig ist. Folglich wird, wenn auf eine virtuelle Seite zugegriffen werden soll, die virtuelle Seitenzahl 401 auf die Index-Hash-Funktion 405 angewendet, um einen Hash-Index zu erzeugen, der auf ein Hash-Etikett (wie z. B. Hash-Etikett 421 oder 423) in der Seitentabelle 413 zeigt. Das Hash-Etikett, das von der Tabelle 413 bereitgestellt wird, wird zu einer Vergleichsfunktion 429 geleitet. Gleichzeitig wird auch die virtuelle Seitenzahl 401 an die Etikett-Hash-Funktion 427 geliefert, um ein Hash-Etikett 425 zu erzeu gen. Wenn das Hash-Etikett 425 und das Hash-Etikett von der Seitentabelle 413 übereinstimmen, wird die physische Seite (wie z. B. die physischen Seiten, die bei den Einträgen 317 und 417 gespeichert sind) verwendet, um die Speicherzugriffsoperation zu vollenden. Wenn die Etiketten nicht übereinstimmen, wird auf die Zeiger des Seitentabelleneintrags (wie z. B. die Zeiger 319 und 419) zugegriffen, um zu sehen, ob ein Kettensegment existiert. Wenn es keine Kettensegmente gibt oder alle Kettensegmente ohne ein Finden einer Übereinstimmung bereits durchsucht wurden, wird die Seitenfehlerhandhabungsvorrichtung des Betriebssystems aufgerufen, wie oben beschrieben ist.
  • Es wird angemerkt, daß auf die Index-Hash-Funktion 405 und die Etikett-Hash-Funktion 427 durch sowohl Hardware als auch Software zugegriffen wird. Eine Hardware muß auf die Hash-Funktionen zugreifen, wenn eine virtuelle Seitenzahl in eine physische Seitenzahl übersetzt wird, und eine Software muß auf die Hash-Funktionen zugreifen, wenn die Seitentabelle initialisiert wird, und wenn auf die Seitentabelle zugegriffen und dieselbe modifiziert wird, wie z. B. benötigt wird, wenn ein Seitenfehler bedient wird. Im Stand der Technik wurden die Hash-Algorithmen grundlegend in zwei Formen bereitgestellt. Eine Computerhardware umfaßte hardwarebasierte Versionen der Hash-Algorithmen, um es zu ermöglichen, daß Virtuell-zu-Physisch-Übersetzungen schnell voranschreiten, und das Betriebssystem umfaßte softwarebasierte Versionen der Hash-Algorithmen, um Virtuell-zu-Physisch-Übersetzungen zu erzeugen, wenn die Seitentabelle initialisiert, auf dieselbe zugegriffen oder dieselbe modifiziert wurde.
  • Einige Computer erweitern das virtuelle Adressierungskonzept durch ein Unterstützen von Regionen. Regionen liefern die Fähigkeit, wirksam unabhängige lokale, gemeinschaftlich verwendete und globale Adreßräume innerhalb des virtuellen Adreßraums durch ein Unterteilen des virtuellen Adreßraums in gleichmäßig dimensionierten Regionen zu erzeugen. Übli cherweise kann nur ein Teilsatz von Regionen zu einem Zeitpunkt aktiv sein. Jeder Region zugeordnet ist ein Regionsidentifizierer, der Adreßübersetzungen bestimmter Regionen eindeutig etikettiert. Wenn der Regionsidentifizierer für eine Region einem bestimmten Verfahren zugeteilt ist, wird dieser Regionsraum für dieses Verfahren lokal. Wenn der Regionsidentifizierer für eine Region gemeinschaftlich unter Verfahren verwendet wird, wird dieser Regionsraum gemeinschaftlich verwendet. Wenn der Regionsidentifizierer für eine Region durch alle Verfahren gemeinschaftlich verwendet wird, wird diese Region global. Ein Verändern der Regionsidentifizierer für die lokalen Regionen tauscht wirksam virtuelle Adressen aus dem lokalen Raum eines Prozesses gegen den lokalen Raum bei einem anderen Prozeß aus. So beseitigen Regionen praktisch den Bedarf, den TLB zu durchspülen, wenn ein Prozeß umgeschaltet wird, wodurch eine Gesamtsystemleistung verbessert wird.
  • Die WO-A-9844419 offenbart die Bildung einer Seitentabelleneintragsadresse aus einer virtuellen Adresse, einschließlich eines Regionsidentifizierers.
  • Die vorliegende Erfindung möchte einen verbesserten Speicherzugriff liefern.
  • Gemäß einem Aspekt der vorliegenden Erfindung wird ein Verfahren zum Bilden einer Eintragsadresse gemäß Anspruch 1 bereitgestellt.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Computersystem gemäß Anspruch 9 bereitgestellt.
  • Das bevorzugte Ausführungsbeispiel schafft ein Verfahren und eine Vorrichtung zum Berechnen eines Seitentabellenindex aus einer virtuellen Adresse, die durch einen kombinierten Hash-Algorithmus implementiert ist, der zwei unterschiedliche Hash-Seitentabellenkonfigurationen in einer einzelnen Computerarchitektur über Konfigurationsregister und vordefinierte Konstanten unterstützt.
  • Dies kann z. B. in Verbindung mit einem virtuellen Adressierungsschema, das eine virtuelle 64-Bit-Adresse aufweist, wobei die oberen drei Bits einen Virtuellregionsabschnitt bilden, verwendet werden. Folglich können acht Regionen zu einem bestimmten Zeitpunkt durch eine virtuelle Adresse spezifiziert sein. Die verbleibenden 61 Bits der virtuellen Adresse werden verwendet, um einen Speicher innerhalb jeder Region zu adressieren, wodurch jeder Region 261 Bytes virtuellen Speichers geliefert werden. Jeder Speicherseite zugeordnet ist ein 24-Bit-Regionsidentifizierer. Deshalb kann das Betriebssystem bis zu 229 einzelne virtuelle Adreßräume zuteilen. Speicherseiten können in ihrer Größe von 4 Kilobytes bis 256 Megabytes variieren.
  • Die erste Hash-Seitentabellenkonfiguration unterstützt eine regionsbasierte lineare Seitentabelle und wird im Folgenden als eine „Kurzformat"-Seitentabelle bezeichnet. Eine Kurzformat-Seitentabelle wird für jede virtuelle Region bereitgestellt, ist linear und weist einen linearen Eintrag für jede Übersetzung in der Region auf. Die Kurzformat-Seitentabelle erfordert keine Kettensegmente und die Kurzformat-Seitentabelle umfaßt keine Hash-Etikett-Einträge. Die zweite Hash-Seitentabellenkonfiguration unterstützt eine einzelne Seitentabelle für das gesamte Computersystem und wird im Folgenden als eine „Langformat"-Seitentabelle bezeichnet. Die Langformat-Seitentabelle unterstützt Kettensegmente und Langformat-Seitentabelleneinträge umfassen ein Hash-Etikett-Feld.
  • Bei einem Ausführungsbeispiel bildet das Verfahren eine Eintragsadresse aus einer virtuellen Adresse, wobei die Eintragsadresse auf einen Eintrag der Seitentabelle verweist. Um die Eintragsadresse zu bilden, wird zuerst eine Hash-Seitenzahl aus der virtuellen Adresse durch ein Verschieben der virtuellen Adresse um J Bits nach rechts ge bildet, wobei die bevorzugte Seitengröße der Region, die dem Regionsabschnitt der virtuellen Adresse zugeordnet ist, 2J Bytes beträgt.
  • Wenn das Computersystem mit Langformat-Seitentabellen arbeitet, besteht der nächste Schritt darin, einen Hash-Index durch ein Kombinieren der Hash-Seitenzahl und des Regionsidentifizierers, auf den durch den Regionsabschnitt der virtuellen Adresse verwiesen wird, zu bilden, und einen Tabellenversatz durch ein Verschieben des Hash-Index um K Bits nach links zu bilden, wobei jeder Langformat-Seitentabelleneintrag 2K Bytes lang ist.
  • Wenn das Computersystem jedoch mit Kurzformat-Seitentabellen arbeitet, besteht der nächste Schritt darin, einen Hash-Index durch ein Setzen des Hash-Index gleich der Hash-Seitenzahl zu bilden, und einen Tabellenversatz durch ein Verschieben des Hash-Index um L Bits nach links zu bilden, wobei jeder Kurzformat-Seitentabelleneintrag 2L Bytes lang ist.
  • Als nächstes wird eine Maske basierend auf der Größe der Seitentabelle gebildet. Ein erster Adreßabschnitt wird dann unter Verwendung der Basisadresse der Tabellenseite und der Maske gebildet und ein zweiter Adreßabschnitt wird unter Verwendung des Tabellenversatzes und der Maske gebildet. Schließlich wird die Eintragsadresse durch ein Kombinieren des ersten und des zweiten Adreßabschnitts gebildet.
  • Bei einem anderen Ausführungsbeispiel wird ein Regionsabschnitt in die Eintragsadresse eingesetzt. Wenn das Format als lang gesetzt ist, wird der Regionsabschnitt aus dem Regionsabschnitt der Basisadresse der Seitentabelle hergeleitet. Wenn die Region jedoch als kurz gesetzt ist, wird der Regionsabschnitt von dem Regionsabschnitt der virtuellen Adresse hergeleitet.
  • Bei noch einem weiteren Ausführungsbeispiel wird die maximale Größe einer Langformat-Seitentabelle durch ein Einsetzen des Regionsabschnitts der virtuellen Adresse in die Hash-Seitenzahl erhöht, wenn das Format als lang gesetzt ist.
  • Die vorliegende Erfindung umfaßt außerdem mehrere Ausführungsbeispiele, die die Menge einer Logik, die zum Implementieren der vorliegenden Erfindung verwendet wird, basierend auf bestimmten implementierungsabhängigen Parametern reduzieren. Durch ein Bereitstellen eines einzelnen Algorithmus, der in der Lage ist, einen Seitentabelleneintrag für sowohl Lang- als auch Kurzformat-Seitentabellen zu erzeugen, reduziert das System die Menge einer Logik, die zum Zugreifen auf beide Seitentabellenformate erforderlich ist, ohne die Ausführungsgeschwindigkeit wesentlich zu beeinflussen.
  • Vorzugsweise wird die Eintragsadresse durch ein Durchführen einer ODER-Operation bezüglich des ersten und des zweiten Adreßabschnitts gebildet.
  • Vorzugsweise weist die Seitentabelleneintrags-Adreßerzeugungseinheit des Prozessors folgendes Merkmal auf:
    eine Seitentabellenregions-Erzeugungsschaltung, die eine Seitentabellenregion durch ein Extrahieren des Regionsabschnitts aus der Seitentabellenbasisadresse bildet, wenn das Format der Seitentabelle als lang gesetzt ist, und die Seitentabellenregion durch ein Extrahieren des Regionsabschnitts aus der virtuellen Adresse bildet, wenn das Format der Seitentabelle als kurz gesetzt ist, und
    wobei die Eintragsadreßerzeugungsschaltung die Eintragsadresse durch ein Kombinieren der Seitentabellenregion und des ersten und des zweiten Adreßabschnitts bildet, wobei die Seitentabellenregion in einen Regionsabschnitt der Eintragsadresse eingesetzt wird.
  • Vorzugsweise bildet die Hash-Seitenzahlerzeugungsschaltung die Hash-Seitenzahl aus der virtuellen Adresse durch ein Verschieben nur der Abschnitte der virtuellen Adresse, die implementiert wurden, um J Bits nach rechts, wobei die bevorzugte Seitengröße der Region, die dem Regionsabschnitt der virtuellen Adresse zugeordnet ist, 2J Bytes beträgt.
  • Bei einem Ausführungsbeispiel bildet die Hash-Indexerzeugungseinheit den Hash-Index durch ein Kombinieren der Hash-Zahl, des Regionsidentifizierers, auf den durch den Regionsabschnitt der virtuellen Adresse verwiesen wird, und des Regionsabschnitts der virtuellen Adresse, wenn das Format der Seite der Seitentabelle als lang gesetzt ist.
  • Vorzugsweise fügt die Hash-Indexerzeugungseinheit außerdem Bits des Regionsabschnitts der virtuellen Adresse in die Hash-Seitenzahl in Bitpositionen der Hash-Seitenzahl, die bekanntermaßen leer sind, basierend auf einer Verschiebung der virtuellen Adresse um j Bits nach rechts ein.
  • Vorzugsweise bildet die Maskenerzeugungseinheit die Maske durch ein Setzen der Maske gleich 2M minus 1, wobei 2M die Größe der Seitentabelle ist.
  • Die Erstadreßabschnitterzeugungsschaltung bildet vorzugsweise den ersten Adreßabschnitt durch ein Durchführen einer UND-Operation bezüglich der Seitentabellenbasisadresse und eines Inversen der Maske und die Zweitadreßabschnitterzeugungsschaltung bildet den zweiten Adreßabschnitt durch ein Durchführen einer UND-Operation bezüglich des Tabellenversatzes und der Maske.
  • Die Eintragsadreßerzeugungsschaltung bildet vorzugsweise die Eintragsadresse durch ein Durchführen einer ODER-Operation bezüglich des ersten und des zweiten Adreßabschnitts.
  • Vorzugsweise bildet die Erstadreßabschnittserzeugungsschaltung, wenn eine minimale Seitentabellengröße von 2N Bytes definiert wurde, den ersten Adreßabschnitt unter Verwendung der Seitentabellenbasisadresse, ausschließlich der unteren N Bits der Seitentabellenbasisadresse, und der Maske, ausschließlich der unteren N Bits der Maske, und die Zweitadreßerzeugungsschaltung bildet den zweiten Adreßabschnitt unter Verwendung des Tabellenversatzes, ausschließlich der unteren N Bits des Tabellenversatzes, und der Maske, ausschließlich der unteren N Bits der Maske, und die Eintragsadreßerzeugungsschaltung bildet die Eintragsadresse durch ein Kombinieren des ersten und des zweiten Adreßabschnitts, um ein Ergebnis zu bilden, ein Verschieben des Ergebnisses um N Bits nach links und ein Kombinieren des Ergebnisses mit den unteren N Bits des Tabellenversatzes.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung wird ein Computersystem bereitgestellt, das eine Architektur aufweist, die einen virtuellen Adreßraum definiert, der durch virtuelle Adressen adressiert wird, die einen Regionsabschnitt umfassen, der auf einen Aktivregionsidentifizierer verweist, der eine Region identifiziert, wobei das Computersystem folgende Merkmale aufweist:
    eine Speichereinheit, die eine Seitentabelle umfaßt, die durch eine Seitentabellenbasisadresse verankert ist, wobei die Seitentabelle in der Lage ist, ein langes Format und ein kurzes Format anzunehmen, und eine minimale Größe von 2N Bits aufweist; und
    einen Prozessor zum Ausführen von Instruktionen, wobei der Prozessor eine Seitentabellen-Eintragsadreßerzeugungseinheit umfaßt, die in der Lage ist, eine Eintragsadresse in die Seitentabelle aus einer virtuellen Adresse zu erzeugen, wobei die Eintragsadreßerzeugungseinheit folgende Merkmale aufweist:
    eine Hash-Seitenzahlerzeugungsschaltung, die eine Hash-Seitenzahl aus der virtuellen Adresse durch ein Verschieben nur der Abschnitte der virtuellen Adresse, die implementiert wurden, um J Bits nach rechts bildet, wobei eine bevorzugte Seitengröße der Region, die dem Regionsabschnitt der virtuellen Adresse zugeordnet ist, 2J Bytes beträgt;
    eine Hash-Indexerzeugungsschaltung, die einen Hash-Index durch ein Kombinieren der Hash-Seitenzahl, des Regionsabschnitts der virtuellen Adresse und des Regionsidentifizierers bildet, auf den durch den Regionsabschnitt der virtuellen Adresse verwiesen wird, wobei der Regionsabschnitt der virtuellen Adresse kombiniert in Bitpositionen der Hash-Seitenzahl, die bekanntermaßen leer sind, basierend auf einem Verschieben der virtuellen Adresse um J Bits nach rechts eingesetzt wird, wenn das Format der Seitentabelle als lang gesetzt ist, und den Hash-Index durch ein Setzen des Hash-Index gleich der Hash-Seitenzahl bildet, wenn das Format der Seitentabelle als kurz gesetzt ist;
    eine Seitentabellenversatzerzeugungsschaltung, die einen Tabellenversatz durch ein Verschieben des Hash-Index um K Bits nach links bildet, wobei jeder Langformat-Seitentabelleneintrag 2K Bytes lang ist, wenn das Format der Seitentabelle als lang gesetzt ist, und den Tabellenversatz durch ein Verschieben des Hash-Index um L Bits nach links bildet, wobei jeder Kurzformat-Seitentabelleneintrag 2L Bytes lang ist, wenn das Format der Seitentabelle als kurz gesetzt ist;
    eine Seitentabellenregionserzeugungsschaltung, die eine Seitentabellenregion durch ein Extrahieren des Regionsabschnitts aus der Seitentabellenbasisadresse bildet, wenn das Format der Seitentabelle als lang gesetzt ist, und die Seitentabellenregion durch ein Extrahieren des Regionsabschnitts aus der virtuellen Adresse bildet, wenn das Format der Seitentabelle als kurz gesetzt ist;
    eine Maskenerzeugungsschaltung, die eine Maske durch ein Potenzieren von 2 mit der Potenz M und ein Subtrahieren von 1 bildet, wobei 2M die Größe der Tabelle ist;
    eine Erstadreßabschnittserzeugungsschaltung, die einen ersten Adreßabschnitt durch ein Durchführen einer UND-Operation bezüglich der Seitentabellenbasisadresse, ausschließlich der unteren N Bits der Seitentabellebasisadresse, und eines Inversen der Maske, ausschließlich der unteren N Bits des Inversen der Maske, bildet;
    eine Zweitadreßabschnittserzeugungsschaltung, die einen zweiten Adreßabschnitt durch ein Durchführen einer UND-Operation bezüglich des Tabellenversatzes, ausschließlich der unteren N Bits des Tabellenversatzes, und der Maske, ausschließlich der unteren N Bits der Maske, bildet; und
    eine Eintragserzeugungsschaltung, die die Eintragsadresse durch ein Durchführen einer UND-Operation bezüglich des ersten und des zweiten Adreßabschnitts, um ein erstes Ergebnis zu bilden, ein Verschieben des ersten Ergebnisses um N Bits nach links, um ein zweites Ergebnis zu bilden, und ein Durchführen einer ODER-Operation bezüglich der Tabellenseitenregion, des zweiten Ergebnisses und der unteren N Bits des Tabellenversatzes bildet, wobei die Seitentabellenregion in einen Regionsabschnitt der Eintragsadresse eingesetzt wird.
  • Es wird außerdem ein Verfahren zur Durchführung der Funktionen dieser Vorrichtung bereitgestellt.
  • Ein Ausführungsbeispiel der vorliegenden Erfindung ist unten lediglich beispielhaft Bezug nehmend auf die beigefügten Zeichnungen beschrieben. Es zeigen:
  • 1 eine Prozedur des Stands der Technik zum Ansprechen auf virtuelle Adressen, die während einer Ausführung eines Programms vorgelegt werden;
  • 2 ein Verfahren des Stands der Technik zum Zugreifen auf einen Eintrag in einem Übersetzungsseitengriffspuffer bzw. -Zwischenspeicher (TLB);
  • 3 ein Verfahren des Stands der Technik zum Wiedergewinnen physischer Seiteninformationen zur Aktualisierung eines TLB nach einem TLB-Fehlschlag;
  • 4 ein Seitentabellenschema des Stands der Technik, bei dem Hash-Etiketten in einer Seitentabelle gespeichert sind;
  • 5 ein virtuelles Adressierungsschema, das durch ein Ausführungsbeispiel der vorliegenden Erfindung unterstützt wird;
  • 6 einen Eintrag einer virtuellen, gehashten „Kurzformat"-Seitentabelle, auf die durch eine Anwendung der Hash-Funktion eines Ausführungsbeispiels der vorliegenden Erfindung zugegriffen werden kann;
  • 7 einen Eintrag einer virtuellen, gehashten „Langformat"-Seitentabelle, auf die durch eine Anwendung der Hash-Funktion eines Ausführungsbeispiels der vorliegenden Erfindung zugegriffen werden kann.
  • Das beschriebene Ausführungsbeispiel berechnet einen Seitentabellenindex und ein Hash-Etikett aus einer virtuellen Adresse und ist durch einen kombinierten Hash-Algorithmus, der zwei unterschiedliche Hash-Tabellenkonfigurationen in einer einzelnen Computerarchitektur über Konfigurationsregister unterstützt, sowie einen Algorithmus implementiert, der ein Hash-Etikett auf einer virtuellen Adresse erzeugt.
  • Bevor das bevorzugte Ausführungsbeispiel detaillierter erläutert wird, betrachten wir zuerst den Architekturrahmen, in dem dasselbe implementiert sein kann. Die JP-A-2000122928 offenbart zwei Instruktionen, die die Hash-Algorithmen, die durch eine Hardware verwendet werden, um auf eine Seitentabelle zuzugreifen, einer Software aussetzen. Die erste Instruktion ist eine Übersetzungs-Gehasht-Eintragsadreß- (THASH-) Instruktion (THASH = Translation Hashed Entry Address) und erzeugt aus der virtuellen Adresse einen Hash-Index, der auf einen Eintrag in der Seitentabelle zeigt. Die zweite Instruktion ist die Übersetzungs-Gehasht-Eintragsetikett- (TTAG-) Instruktion (TTAG = Translation Hashed Entry Tag) und erzeugt aus einer virtuellen Adresse ein Hash-Etikett, das in dem Eintrag der Seitentabelle gespeichert ist, auf die durch den Hash-Index verwiesen wird. Durch ein Bereitstellen dieser beiden Instruktionen lehrten Burger u. a., daß ein Computerbetriebssystem (oder eine andere Systemsoftware) nicht mit den durch die Computerhardware verwendeten Hash-Algorithmen codiert sein muß. Vielmehr liefern die THASH- und die TTAG-Instruktion eine Schnittstelle, die es ermöglicht, daß eine Software auf die durch die Hardware verwendeten Hash-Algorithmen zugreift. Die vorliegende Erfindung bezieht sich dahingehend auf die obige Anwendung, daß das bevorzugte Ausführungsbeispiel einen möglichen Algorithmus liefert, der durch die THASH-Instruktion verwendet werden kann. Zusätzlich ist unten ein möglicher Algorithmus, der durch die TTAG-Instruktion verwendet werden kann, offenbart.
  • Das bevorzugte Ausführungsbeispiel unterstützt das virtuelle Adressierungsschema 501, das in 5 gezeigt ist. Eine virtuelle Adresse 502 ist eine 64-Bit-Adresse. Die oberen drei Bits bilden eine virtuelle Regionszahl (VRN) 503. Folglich können acht Regionen durch eine virtuelle Adresse zu einem bestimmten Zeitpunkt spezifiziert sein. Die verbleibenden 61 Bits der virtuellen Adresse 502 werden verwendet, um einen Speicher innerhalb jeder Region zu adressieren, wodurch jeder Region 261 Bytes virtuellen Speichers geliefert werden. Jeder Speicherseite (wie z. B. einer Seite 504) zugeordnet ist ein 24-Bit-Regionsidentifizierer (RID). Deshalb kann das Betriebssystem bis zu 224 einzelne virtuelle Adreßräume zuweisen. Speicherseiten können größenmäßig von 4 Kilobytes bis 256 Megabytes variieren, wie unten detaillierter beschrieben ist. Zusätzliche Informationen, die virtuelle Regionen beschreiben, sind in der US-A-6230248 mit dem Titel „Method and Apparatus for Pre-validating Regions in a Virtual Addressing Scheme" von Stephan Burger u. a. zu finden.
  • Das bevorzugte Ausführungsbeispiel unterstützt eine Architektur, die zwei Seitentabellenformate bereitstellt. Das erste Format unterstützt eine regionsbasierte lineare Seitentabelle und wird im Folgenden als eine „Kurzformat"-Seitentabelle bezeichnet. Eine Kurzformat-Seitentabelle wird für jede virtuelle Region bereitgestellt, wie in 5 gezeigt ist. Die Kurzformat-Seitentabelle ist linear und weist einen linearen Eintrag für jede Übersetzung in der Region auf. Folglich erfordert die Kurzformat-Seitentabelle keine Kettensegmente und die Kurformat-Seitentabelle umfaßt keine Hash-Etikett-Einträge.
  • Das zweite Format unterstützt eine einzelne große Seitentabelle für das gesamte Computersystem und wird im Folgenden als eine „Langformat"-Seitentabelle bezeichnet. Die Langformat-Seitentabelle unterstützt Kettensegmente und Langformat-Seitentabelleneinträge umfassen ein Hash-Etikett-Feld.
  • 6 zeigt einen Kurzformat-Seitentabelleneintrag 601. Es wird angemerkt, daß der Kurzformat-Eintrag 601 ein einzelnes 64-Bit-Wort aufweist und deshalb eine Gesamtgröße von 8 Bytes aufweist. Die Felder in dem Kurzformat-Eintrag 601 sind unten in Tabelle 1 beschrieben. Tabelle 1
    Eintragsfeld Beschreibung
    p vorliegendes Bit. Zeigt an, ob die abgebildete physische Seite tatsächlich im Speicher ist.
    rv reserviert.
    ma Speicherattribut – beschreibt die Cache-Speicherfähigkeit, Kohärenz, Schreib-Politik und spekulative Attribute der abgebildeten physischen Seite.
    a Bit, auf das zugegriffen wird – spezifiziert, wie Seitenfehler gehandhabt werden.
    d verfälschtes Bit – spezifiziert, wie Fehler, die durch Datenschreibvorgänge an die Seite bewirkt werden, gehandhabt werden.
    pl Privilegebene – spezifiziert die Privilegebene der Seite.
    ar Zugriffsrechte – Seitenebenenlese-, -schreib- und -ausführungserlaubnis und Privilegsteuerungen.
    ppn physische Seitenzahl – höchstwertige Bits der abgebildeten physischen Adresse. Abhängig von der in der Abbildung verwendeten Seitengröße werden einige der niederstwertigen PPN-Bits ignoriert.
    ig Softwarefelder, die für das Betriebssystem verfügbar sind. Durch CPU ignoriert.
    ed Ausnahmeverschiebung – zeigt an, ob eine Ausnahme oder ein Fehler verschoben werden soll.
  • Es wird angemerkt, daß ein Kurzformat-Eintrag für jede Seite in einer Region existiert und die virtuelle Seitenzahl (vpn; vpn = virtual page number) einer Übersetzung durch die Position des Kurzformat-Eintrags in der virtuellen Hash-Seitentabelle (VHPT; VHPT = virtual hash page table) impliziert ist. Es wird auch angemerkt, daß die Seitengröße innerhalb einer Region konstant ist. Deshalb ist die Seitengröße durch ein Zugreifen auf ein Bevorzugte_Seiten_Größe-Feld eines Konfigurationsregisters, das der Region zugeordnet ist, wie unten erläutert ist, verfügbar.
  • 7 zeigt einen Langformat-Seitentabelleneintrag 701. Es wird angemerkt, daß der Langformat-Eintrag 701 vier 64-Bit-Wörter aufweist und deshalb eine Gesamtgröße von 32 Bytes aufweist. Das erste Wort des Langformat-Eintrags 701 ist identisch zu dem Kurzformat-Eintrag 601 und deshalb sind die Felder in dem ersten Wort oben in Tabelle 1 beschrieben. Tabelle 2 unten beschreibt die verbleibenden Felder in dem Langformat-Eintrag 701. Tabelle 2
    Eintragsfeld Beschreibung
    rv reserviert.
    ps Seitengröße – Seitengröße der Abbildung. Für Seitengrößen von mehr als 4 Kilobytes werden die Bits niedriger Ordnung der PPN und VPN ignoriert. Seitengrößen sind als 2ps Bytes definiert.
    key Schutzschlüssel – etikettiert eindeutig die Übersetzung zu einer Schutzdomäne.
    tag Übersetzungsetikett. Dieses Etikett in Verbindung mit dem Langformat-Hash-Index wird verwendet, um die Übersetzung eindeutig zu identifizieren.
    ti Etikett-Ungültig-Bit. Zeigt an, daß das Etikett ungültig ist. Eine Software kann dieses Bit verwenden, um einen Langformat-Eintrag für ungültig zu erklären.
    ig Softwarefelder, die für das Betriebssystem verfügbar sind. Durch die CPU ignoriert. Es wird angemerkt, daß die letzten 64 Bits des Langformat-VHPT-Eintrags (beginnend bei einem Versatz von +24) üblicherweise durch das Betriebssystem verwendet werden, um eine Verbindung zu einem anderen Langformat-VHPT-Eintrag zu speichern, wenn zwei oder mehr Virtuell-zu-Physisch-Übersetzungen zu dem gleichen anfänglichen Eintrag der Langformat-VHPT gehasht werden.
  • Es wird angemerkt, daß eine einzelne Langformat-Seitentabelle für alle virtuellen Einträge verwendet wird, Einträge aneinander gekettet sein können und es üblicherweise keinen anfänglichen Eintrag für jede Seite gibt. Deshalb umfaßt der Langformat-Seitentabelleneintrag zusätzliche Informationen, wie z. B. die Seitengröße (ps; ps = page number) und das Etikett. Die VPN wird eindeutig durch den Hash-Index und das Etikett dargestellt.
  • Schließlich sind, bevor die Algorithmen des bevorzugten Ausführungsbeispiels unten beschrieben sind, die folgenden Felder für die Algorithmen verfügbar. Es wird angemerkt, daß einige dieser Felder programmierbare Variablen darstel len, die in Konfigurationsregistern gespeichert sind, und deshalb durch eine Software, die auf einem bestimmten Computersystem ausgeführt wird, verändert werden können. Andere Felder stellen Konstanten dar, die innerhalb einer bestimmten Implementierung eines Computersystems nicht variieren, und können deshalb in bestimmte Implementierungen der beschriebenen Algorithmen fest codiert sein. Diese Felder sind in Tabelle 3 unten gezeigt. Tabelle 3
    Konfigurationsregisterfeld oder Konstante Beschreibung
    page_table_format (Seiten_Tabellen_Format) zeigt an, ob Langformat- oder Kurzformat-Seitentabellen verwendet werden. Dieses programmierbare Feld ist global und gilt für alle Seiten in dem Speicher.
    preferred_page_size (Bevorzugte_Seiten_Größe) spezifiziert die Zahl von Bytes in einer Seite. Seitengrößen sind als N codiert, wobei die Seitengröße 2N Bytes beträgt. Dieses programmierbare Feld kann für jede Region spezifiziert sein. Es wird angemerkt, daß die Bevorzugte_Seiten_Größe in das (ps)-Feld jedes Langformat-Seitentabelleneintrags kopiert wird.
    page_table_size (Seiten_Tabellen_Größe) dieses programmierbare Feld zeigt die Zahl von Bytes in dem linearen Abschnitt der Seitentabelle an. In einer Kurzformat-Seitentabelle wird die Seiten_Tabel
    len_Größe für jede virtuelle Region bereitgestellt und bestimmt außerdem die Größe der virtuellen Region, da eine Kurzformat-Seitentabelle einen Eintrag für jede Seite in der virtuellen Region aufweisen muß. Da ein Kurztabellen-Format linear ist und nicht wachsen kann, stellt die Seiten_Tabellen_Größe die exakte Größe einer Kurzformat-Seitentabelle dar. In einer Langformat-Seitentabelle zeigt die Seiten_Tabellen_Größe die Länge des linearen Abschnitts der Seitentabelle an und die Seitentabelle kann tiefer wachsen, wenn Kettensegmente hinzugefügt werden. Die Seitentabellengrößen sind als N codiert, wobei die Größe der Seitentabelle 2N Bytes beträgt.
    page_table_base (Seiten_Tabellen_Basis) Dieses programmierbare Feld zeigt die Adresse des Erstseitentabelleneintrags in dem Speicher an. Wenn Kurzformat-Seitentabellen verwendet werden, umfaßt jede virtuelle Region ihre eigene Seitentabelle und die Seiten_Tabellen_Basis wird für jede virtuelle Region bereitgestellt. Wenn Langformat-Seitentabellen verwendet werden, wird eine einzelne Seitentabelle bereitgestellt und eine Einzelseitentabellenbasis zeigt die Adresse des ersten Langformat-Seitentabelleneintrags an. Es wird angemerkt, daß nur
    Bits {63:min pt size} (siehe unten) gespeichert werden müssen. Es wird ebenso angemerkt, daß die Seiten_Tabellen_Basis auf einer 2Seiten_Tabellen_Größe-Grenze liegen muß.
    impl_va_msb Diese Konstante zeigt das höchstwertigste Bit der virtuellen Adresse an, das durch das bestimmte Computersystem unterstützt wird.
    min_pt_size Diese Konstante zeigt die minimale Größe (in Bytes) von sowohl der Lang- als auch der Kurzformat-Seitentabelle an. Die minimale Seitentabellengröße ist als N dargestellt, wobei die minimale Zahlgröße einer Seitentabelle 2N Bytes beträgt.
  • Wie bereits oben erwähnt wurde, befindet sich in dem regionsbasierten Kurzformat die lineare Seitentabelle für jede Region in der Region selbst, auf die verwiesen wird. Als ein Ergebnis besteht die Kurzformat-VHPT aus separaten Pro-Region-Seitentabellen, die in jeder Region durch Bits {60:min_pt_size} der Seiten_Tabellen_Basis verankert sind. Für Regionen, in denen die VHPT aktiviert ist, muß das Betriebssystem eine lineare Pro-Region-Seitentabelle beibehalten. Wie in dem Kurzformat-Algorithmus unten definiert ist, werden die virtuelle Adresse, die zu übersetzen ist (VA), die Bevorzugte_Seiten_Größe, die Seiten_Tabellen_Basis und die Seiten_Tabellen_Größe der Region verwendet, um einen linearen Index in die Kurzformat-VHPT zu berechnen.
  • Die Größe der Kurzformat-VHPT (Seiten_Tabellen_Größe) definiert die Größe des abgebildeten virtuellen Adreßraums. Die maximale Architekturtabellengröße in dem Kurzformat beträgt 252 Bytes pro Region. Um eine gesamte Region (261 Bytes) unter Verwendung von 4 Kilobyte-Seiten abzubilden, müssen 2(61–12) (oder alternativ 249) Seiten abbildbar sein. Ein Kurzformat-VHPT-Eintrag ist 8 Bytes (oder alternativ 23 Bytes) groß. Als ein Ergebnis beträgt die maximale Tabellengröße 2(61–12+3) (oder alternativ 252) Bytes pro Region. Wenn das Kurzformat verwendet wird, um einen Adreßraum von weniger als 261 abzubilden, kann eine kleinere Kurzformat-Tabelle (Seiten_Tabellen_Größe < 52) verwendet werden. Ein Abbilden eines Adreßraums von 2N mit 4 Kilobyte-Seiten erfordert eine minimale Seiten_Tabellen_Größe von (N-9).
  • Wenn die Kurzformat-VHPT verwendet wird, gibt die THASH-Instruktion (oben beschrieben) einen regionsbasierten Kurzformat-Index zurück. Die TTAG-Instruktion, die auch oben beschrieben ist, wird mit dem Kurzformat nicht verwendet. Bei dem Kurzformat-Hashing-Algorithmus unten wird die virtuelle Adresse (VA), für die eine VHPT-Eintragsadresse erwünscht wird, an die Funktion tlb_vhpt_hash_short geleitet. Die Funktion gibt die Adresse (vhpt_addr) des Eintrags zurück, die der virtuellen Adresse entspricht.
  • Kurzformat-Hashing-Algorithmus
    Figure 00270001
  • Figure 00280001
  • In Zeile 1 des Kurzformat-Hashing-Algorithmus wird die Funktion tlb_vhpt_hash_short aufgerufen, wobei die virtuelle Adresse (VA) an die Funktion geleitet wird. In Zeile 3 wird die hash_page_number (Hash_Seiten_Zahl) durch ein Teilen der VA durch die preferred_page_size (Bevorzugte_Seiten_Größe) berechnet. Es wird angemerkt, daß nur die Bits der VA, die durch eine Implementierung eines bestimmten Computersystems verwendet werden (wie durch die Konstante impl_va_msb definiert ist), verwendet werden. Die Teilungsoperation wird durch ein Rechts-Verschieben der VA um N Bits erzielt, wobei die Seitengröße 2N beträgt. Die Rechtsverschiebung ist ohne Vorzeichen. Wie oben erläutert ist, kann bei einem Ausführungsbeispiel die Seitengröße zwischen 4 Kilobytes und 256 Megabytes variieren, so daß die VA um 12 bis 28 Bits nach rechts verschoben wird.
  • In Zeile 4 wird der hash_index (Hash_Index) gleich der hash_page_number (Hash_Seiten_Zahl) gesetzt. Bei dem Kurzformat-Algorithmus ist dieser Schritt zu einem bestimmten Maß redundant, ist jedoch enthalten, um den Kurzformat- und den Langformat-Algorithmus zu harmonisieren, wie unten ersichtlich ist. Wie oben erläutert ist, ist jeder Eintrag in eine Kurzformat-VHPT 8 Bytes breit. Deshalb wird in Zeile 5 ein Versatz (vhpt_offset) in die Seitentabelle durch ein Multiplizieren der Hash_Seiten_Zahl mit 8 berechnet. Dies wird durch ein Links-Verschieben des Hash_Index um drei Bitpositionen durchgeführt.
  • In Zeile 6 wird die Region (vhpt_region) der VHPT berechnet. Wie oben erläutert ist, umfaßt jede Region, wenn Kurzformat-VHPTs verwendet werden, ihre eigene VHPT, so daß die Region der VHPT gleich der Region der VA ist. Folglich ist die Region der VHPT einfach Bits {63:61} der VA.
  • In Zeile 7 wird eine Maske (pmask) durch ein Potenzieren von 2 mit der Potenz der Anzahl von Bits, die der Seiten_Tabellen_Größe entsprechen, und ein Subtrahieren von 1 gebildet. Um z. B. eine gesamte Region (261 Bytes) unter Verwendung der minimalen 4-Kilobyte-Bevorzugten_Seiten_Größe abzubilden, müssen 2(61–12) (oder alternativ 249) Seiten abbildbar sein. Da jeder Kurzformat-VHPT-Eintrag 8 (oder alternativ 23) Bytes beträgt, ist die maximale Seiten_Tabellen_Größe 252. Bei diesem ersten Beispiel sind die obern 12 Bits von pmask „0" und die unteren 52 Bits sind „1". Ähnlich müssen, um eine gesamte Region (261 Bytes) unter Verwendung der maximalen 256-Megabytes-Bevorzugte_Seiten_Größe abzubilden, 2(61–28) (oder alternativ 233) Seiten abbildbar sein. Da jeder Kurzformat-VHPT-Eintrag 8 (oder alternativ 23) Bytes beträgt, ist die minimale Seiten_Tabellen_Größe (wenn eine vollständige Region abgebildet wird) 236. Bei diesem zweiten Beispiel sind die oberen 28 Bits von pmask „0" und die unteren 36 Bits sind „1". Natürlich ist es auch möglich, weniger als die gesamte 261 Bytes-Region abzubilden, was dazu führen kann, daß die Seiten_Tabellen_Größe kleiner als 236 ist, und zwar abhängig von der Bevorzugte_Seiten_Größe. Die Maske wird zur Auswahl der Komponenten verwendet, die die resultierende Adresse des VHPT-Eintrags bilden, der der VA entspricht, wie unten beschrieben ist.
  • In den Zeilen 8–11 wird die Adresse des Eintrags der VHPT, die der VA entspricht (vhpt_addr), dadurch, daß eine Zahl von Komponenten einer ODER-Operation unterzogen wird. Als erstes wird in Zeile 8 die Regionskomponente durch ein Links-Verschieben von vhpt_region um 61 Bits berechnet, wodurch die vhpt_region in die ordnungsgemäße Position von vhpt_addr positioniert wird.
  • Bevor die Zeilen 9–11 erläutert werden, wird betrachtet, daß min_pt_size eine Konstante ist, die für jede Implementierung eines Computersystems definiert ist. Die Konstante min_pt_size wird als N dargestellt, wobei die minimale Größe der Seitentabelle 2N Bytes beträgt. Folglich ist immer bekannt, daß Bits {min_pt_size-1:0} von vhpt_addr durch den vhpt_offset (vhpt_Versatz) bereitgestellt werden. Bits {60:min_pt_size} jedoch können entweder durch die Seiten_Tabellen_Basis oder den vhpt_Versatz basierend auf der Seiten_Tabellen_Größe bereitgestellt werden. Folglich wird pmask, was in Zeile 7 berechnet wurde, verwendet, um die ordnungsgemäßen Bits der Seiten_Tabellen_Basis und von vhpt_Versatz basierend auf der Seiten_Tabellen_Größe auszuwählen.
  • Ein Definieren einer minimalen Seitentabellengröße reduziert (zu einem gewissen Ausmaß) die Menge einer Logik, die zur Implementierung eines Computersystems gemäß der vorliegenden Erfindung erforderlich ist. Das Register z. B., das jede Seiten_Tabellen_Basis hält, muß nur Bits {63:min_pt_size} speichern. Außerdem kann die Breite der UND- und ODER Operation, die unten Bezug nehmend auf die Zeilen 9 und 10 erläutert ist, um min_pt_size Bits reduziert werden. Bei einem Ausführungsbeispiel beträgt min_pt_size 15, was zu einer minimalen Seitentabellengröße von 32 Kilobytes führt.
  • Folglich werden in Zeile 9 Bits {60:min_pt_size} der Seiten_Tabellen_Basis einer UND-Operation mit dem Inversen von Bits {60:min_pt_size} von pmask unterzogen und in Zeile 10 werden Bits {60:min_pt_size} des vhpt Versatzes einer UND-Operation mit Bits {60:min_pt_size} von pmask unterzogen. Die Ergebnisse der beiden UND-Operationen werden durch eine ODER-Operation miteinander verbunden und das Ergebnis wird um min_pt_size Bitpositionen nach links verschoben. Folglich verwenden die Zeilen 9 und 10 pmask und min_pt_size, um die Komponente der vhpt_addr zu bilden, die basierend auf der Größe der VHPT variiert, wobei bekannt ist, daß dies nicht ausschließlich durch vhpt_Versatz basierend auf der min_pt_size bereitgestellt wird. Es wird angemerkt, daß diese Komponente einer ODER-Operation mit der Regionskomponente, die in Zeile 8 berechnet wurde, unterzogen wird.
  • Schließlich wird in Zeile 11 die Komponente der vhpt addr, die nur auf dem vhpt_Versatz basiert (Bits {min_pt_size-1:0}) einer ODER-Operation mit den anderen beiden Komponenten, die oben berechnet wurden, unterzogen, um die vhpt_addr zu erzeugen. In Zeile 12 endet die Funktion tlb_vhpt_hash short und gibt die vhpt_addr an die aufrufende Routine zurück.
  • In der Kurzformat-VHPT entspricht jeder VHPT-Eintrag eindeutig einer virtuellen Adresse. In der Langformat-VHPT jedoch können mehrere virtuelle Adressen einen anfänglichen Eintrag in die VHPT gemeinschaftlich verwenden, wobei nachfolgende Übersetzungen in VHPT-Einträgen gespeichert sind, die durch das Betriebssystem an den anfänglichen Eintrag gekettet sind. Nachdem auf den anfänglichen Eintrag zugegriffen wird, wird die ordnungsgemäße Virtuell-zu-Physisch-Übersetzung durch ein Durchsuchen des anfänglichen und der verbundenen Einträge gefunden, um das Etikett (in 7 gezeigt) zu finden, das der Virtuell-zu-Physisch-Übersetzung entspricht. Der Langformat-Algorithmus ist unten dargelegt. Es wird angemerkt, daß, um eine Verwirrung zu vermeiden, eindeutige Zeilennummern für alle Algorithmen verwendet werden.
  • Langformat-Hashing-Algorithmus
    Figure 00310001
  • Figure 00320001
  • In Zeile 14 des Langformat-Hashing-Algorithmus wird die Funktion tlb_vhpt_hash_long aufgerufen, wobei die virtuelle Adresse (VA) und die 24-Bit-region_id an die Funktion geleitet werden. In Zeile 16 wird die Hash_Seiten_Zahl durch ein Teilen der VA durch die Bevorzugte_Seiten_Größe berechnet. Es wird angemerkt, daß nur diejenigen Bits der VA, die durch eine Implementierung eines bestimmten Computersystems verwendet werden (wie durch impl_va_msb definiert ist) verwendet werden. Die Teilungsoperation wird durch ein Rechts-Verschieben der VA um N Bits erzielt, wobei die Seitengröße 2N beträgt. Die Rechtsverschiebung ist ohne Vorzeichen. Wie oben erläutert ist, kann bei einem Ausführungsbeispiel die Seitengröße zwischen 4 Kilobytes und 256 Megabytes variieren, so daß die VA um 12 bis 28 Bits nach rechts verschoben wird.
  • In Zeile 17 wird der Hash_Index gebildet. Wie oben erläutert ist, wird die Hash_Seiten_Zahl durch ein Rechts-Verschieben der VA um zumindest 12 Bits gebildet. Deshalb beträgt die maximale Zahl von Hash-Seitenzahlen 252 und Bits {64:52} der Hash_Seiten_Zahl sind „0". Der erste Abschnitt der Zeile 17 verschiebt Bits {63:61} der VA (des Regionsabschnitts der VA) um 52 Bits nach links und unterzieht das Ergebnis einer ODER-Operation mit der Hash_Seiten_Zahl. Dies erhöht die maximale potentielle Größe der Langformat-VHPT von 252 Einträgen (dem Maximum von Hash- Seitenzahlen) auf 255 Einträge. Schließlich wird das Ergebnis des ersten Abschnitts von Zeile 17 einer XOR-Operation mit der 24-Bit-region_id unterzogen, um den Hash-Index zu bilden.
  • Wie oben erläutert ist, ist ein Langformat-VHPT-Eintrag 32 (oder alternativ 25) Bytes. Deshalb wird in Zeile 18 der vhpt_Versatz durch ein Links-Verschieben des Hash_Index um 5 Bitpositionen gebildet. In Zeile 19 wird die vhpt_Region durch ein Wiedergewinnen von Bits {63:61} der Seiten_Tabellen_Basis gebildet. Im Gegensatz zu den Kurzformat-VHPTs, die in jeder Region existieren, ist nur eine Langformat-VHPT für das gesamte System definiert.
  • Nach einer Berechnung des Hash_Index, des vhpt_Versatzes und der vhpt_Region in den Zeilen 17 bis 19 werden pmask und vhpt_addr in den Zeilen 20 bis 24 berechnet. Es wird angemerkt, daß die Zeilen 20 bis 24 des Langformat-Algorithmus identisch zu den Zeilen 7 bis 11 des Kurzformat-Algorithmus sind. Folglich wird die vhpt_addr auf die gleiche Weise wie oben Bezug nehmend auf den Kurzformat-Algorithmus beschrieben ist gebildet. Schließlich endet in Zeile 25 die Funktion tlb_vhpt_hash_long und gibt die vhpt_addr an die aufrufende Routine zurück.
  • Es wird angemerkt, daß die vhpt_addr in Kombination mit dem in einem Langformat-VHPT-Eintrag gespeicherten Etikett eindeutig eine Virtuell-zu-Physisch-Übersetzung identifiziert, wenn die Langformat-VHPT verwendet wird. Ein Etikett-Algorithmus, der eine Eindeutigkeit bei dem Langformat-Hashing-Algorithmus sicherstellt, ist unten dargelegt.
  • Etikett- bzw. Tag-Algorithmus
    Figure 00330001
  • Figure 00340001
  • Ein Computersystem, das so entworfen ist, wie hierin gelehrt ist, unterstützt sowohl die Lang- als auch die Kurzformat-VHPT. Wie oben erläutert ist, werden der Lang- und der Kurzformat-Hashing-Algorithmus vorzugsweise in Hardware implementiert. Wie dies in der Technik bekannt ist, ist es immer wünschenswert, die Anzahl von Transistoren, die zur Implementierung einer bestimmten Funktion erforderlich sind, zu minimieren, während die Ausführungsgeschwindigkeit der Funktion maximiert wird.
  • Beim Prüfen des Lang- und des Kurzformat-Algorithmus werden viele Ähnlichkeiten zwischen den Algorithmen bemerkt. Gemäß der vorliegenden Erfindung ist ein kombinierter Kurz- und Langformat-Algorithmus unten bereitgestellt. Durch ein Kombinieren des Kurz- und des Langformat-Algorithmus wird die Anzahl von Transistoren, die zur Implementierung beider Algorithmen erforderlich sind, ohne ein wesentliches Beeinflussen der Ausführungsgeschwindigkeit eines der Algorithmen minimiert. Die kombinierte Hashing-Funktion ist unten dargelegt:
  • Kombinierter Hashing-Algorithmus
    Figure 00340002
  • Figure 00350001
  • Im Grunde genommen kombiniert der kombinierte Hashing-Algorithmus die gemeinsamen Elemente des Lang- und des Kurzformat-Hashing-Algorithmus und die Abschnitte der Algorithmen, die sich unterscheiden, werden innerhalb eines IF-THEN-ELSE-Blocks (WENN-DANN-ANDERNFALLS-Blocks) bereitgestellt, der testet, ob das Seiten_Tabellen_Format als „lang" gesetzt ist. Folglich wird in Zeile 34 des kombinierten Hashing-Algorithmus die Funktion tlb_vhpt_hash_combined aufgerufen, wobei die virtuelle Adresse (VR) und die 24-Bit-region_id an die Funktion geleitet werden. Es wird angemerkt, daß die region_id nicht verwendet wird, wenn das Seiten_Tabellen_Format nicht als „lang" gesetzt ist. In Zeile 36 wird die Hash_Seiten_Zahl durch ein Teilen der VA durch die Bevorzugte_Seiten_Größe berechnet, wie dies in Zeile 3 des Kurzformat-Hashing-Algorithmus und in Zeile 16 des Langformat-Hashing-Algorithmus der Fall ist.
  • In Zeile 37 wird das Seiten_Tabellen_Format getestet, um zu sehen, ob dasselbe als „lang" gesetzt ist. Falls dies der Fall ist, werden Hash_Index, vhpt-Versatz und vhpt_Region in den Zeilen 38, 39 bzw. 40 berechnet, wie dies in den Zeilen 17, 18 bzw. 19 des Langformat-Hashing-Algorithmus der Fall ist. Wenn das Seiten_Tabellen_Format nicht als „lang" gesetzt ist, werden Hash_Index, vhpt_Versatz und vhpt_Region in den Zeilen 43, 44 bzw. 45 berechnet, wie dies der Fall in den Zeilen 4, 5 bzw. 6 des Kurzformat-Hashing-Algorithmus ist. Danach werden pmask und vhpt_addr berechnet und die Funktion endet in den Zeilen 47 bis 52 (vhpt_addr wird an die aufrufende Routine zurückgegeben). Es wird angemerkt, daß die Zeilen 47 bis 52 identisch zu den Zeilen 7 bis 12 des Kurzformat-Hashing-Algorithmus sind und identisch zu den Zeilen 20 bis 25 des Langformat-Hashing-Algorithmus sind.
  • Folglich liefert das bevorzugte Ausführungsbeispiel einen kombinierten Hashing-Algorithmus, der in der Lage ist, einen Index in entweder eine Kurzformat-VHPT (wobei jeder VHPT-Eintrag eindeutig eine Virtuell-zu-Physisch-Übersetzung identifiziert) oder eine Langformat-VHPT (wobei jeder anfängliche VHPT-Eintrag in Kombination mit einem gespeicherten Etikett eindeutig eine Virtuell-zu-Physisch-Übersetzung identifiziert) zu erzeugen. Es wird angemerkt, daß eine Person, die den kombinierten Algorithmus implementiert, außerdem zusätzliche Gemeinsamkeiten in den Abschnitten des kombinierten Hashing-Algorithmus finden kann, die separat für das Lang- und das Kurzformat durchgeführt werden. Die Linksverschiebung z. B., die in den Zeilen 39 und 44 durchgeführt wird, könnte z. B. durch eine einzelne Verschiebungsschaltung implementiert sein, die zwei zusätzliche Bitpositionen nach links verschiebt, wenn das Seiten_Tabellen_Format als „lang" gesetzt ist. Ähnlich könnte die Berechnung der vhpt_Region in den Zeilen 40 und 45 einen Multiplexer verwenden, um Bits 63–61 aus entweder der Seiten_Tabellen_Basis oder der VA basierend auf dem Seiten_Tabellen_Format auszuwählen. Eine Person, die eine Logikschaltung zur Implementierung des kombinierten Hashing-Algorithmus entwirft, kann auch andere Weisen einer Minimierung der erforderlichen Logik erkennen.
  • Obwohl die vorliegende Erfindung Bezug nehmend auf bevorzugte Ausführungsbeispiele beschrieben wurde, ist es für Fachleute auf diesem Gebiet ersichtlich, daß Veränderungen an der Form und Details vorgenommen werden können, ohne von dem Schutzumfang der Erfindung, wie diese beansprucht ist, abzuweichen.

Claims (10)

  1. Verfahren zum Bilden einer Eintragsadresse, die auf einen Eintrag einer Seitentabelle verweist, aus einer virtuellen Adresse (502), wobei die virtuelle Adresse einen Regionsabschnitt umfaßt, der auf einen Aktivregionsidentifizierer (503) verweist, der eine Region identifiziert, und wobei die Seitentabelle in der Lage ist, ein langes Format (701) und ein kurzes Format (601) anzunehmen, wobei das Verfahren folgende Schritte aufweist: Bilden einer Hash-Seitenzahl aus der virtuellen Adresse durch Verschieben der virtuellen Adresse um J Bits nach rechts, wobei eine bevorzugte Seitengröße der Region, die dem Regionsabschnitt der virtuellen Adresse zugeordnet ist, 2J Bytes beträgt; Bilden eines Hash-Index durch Kombinieren der Hash-Seitenzahl und des Regionsidentifizierers, auf den durch den Regionsabschnitt der virtuellen Adresse verwiesen wird, wenn das Format der Seitentabelle als lang gesetzt ist; Bilden eines Tabellenversatzes durch Verschieben des Hash-Index um K Bits nach links, wobei jeder Langformat-Seitentabelleneintrag 2K Bytes lang ist, wenn das Format der Seitentabelle als lang gesetzt ist; Bilden eines Hash-Index durch Setzen des Hash-Index gleich der Hash-Seitenzahl, wenn das Format der Seitentabelle als kurz gesetzt ist; Bilden eines Tabellenversatzes durch Verschieben des Hash-Index um L Bits nach links, wobei jeder Kurzfor mat-Seitentabelleneintrag 2L Bytes lang, wenn das Format der Seitentabelle als kurz gesetzt ist; Bilden einer Maske basierend auf einer Größe der Seitentabelle; Bilden eines ersten Adreßabschnitts unter Verwendung einer Basisadresse der Seitentabelle und der Maske; Bilden eines zweiten Adreßabschnitts unter Verwendung des Tabellenversatzes und der Maske; und Bilden der Eintragsadresse durch Kombinieren des ersten und des zweiten Adreßabschnitts.
  2. Ein Verfahren gemäß Anspruch 1, das folgende Schritte aufweist: Bilden einer Seitentabellenregion durch Extrahieren des Regionsabschnitts aus der Basisadresse der Seitentabelle, wenn das Format der Seitentabelle als lang gesetzt ist; und Bilden einer Seitentabellenregion durch Extrahieren des Regionsabschnitts aus der virtuellen Adresse, wenn das Format der Seitentabelle als kurz gesetzt ist, und bei dem das Bilden der Eintragsadresse folgenden Schritt aufweist: Bilden der Eintragsadresse durch Kombinieren der Seitentabellenregion und des ersten und des zweiten Adreßabschnitts, wobei die Seitentabellenregion in einen Regionsabschnitt der Eintragsadresse eingesetzt wird.
  3. Ein Verfahren gemäß Anspruch 1 oder 2, bei dem das Bilden einer Hash-Seitenzahl aus der virtuellen Adresse folgenden Schritt aufweist: Bilden einer Hash-Seitenzahl aus der virtuellen Adresse durch Verschieben nur derjenigen Abschnitte der virtuellen Adresse, die um J Bits nach rechts implementiert wurden, wobei eine bevorzugte Seitengröße der Region, die dem Regionsabschnitt der virtuellen Adresse zugeordnet ist, 2J Bytes beträgt.
  4. Ein Verfahren gemäß Anspruch 1, bei dem das Bilden eines Hash-Index durch Kombinieren der Hash-Seitenzahl und des Regionsidentifizierers, auf den durch den Regionsabschnitt der virtuellen Adresse verwiesen wird, wenn das Format der Seitentabelle als lang gesetzt ist, ein Kombinieren des Regionsabschnitts der virtuellen Adresse mit der Hash-Seitenzahl umfaßt.
  5. Ein Verfahren gemäß Anspruch 4, bei dem das Kombinieren des Regionsabschnitts der virtuellen Adresse mit der Hash-Seitenzahl ein Einsetzen von Bits des Regionsabschnitts der virtuellen Adresse in die Hash-Seitenzahl in Bitpositionen der Hash-Seitenzahl, die als leer bekannt sind, basierend auf einem Verschieben der virtuellen Adresse um J Bits nach rechts aufweist.
  6. Ein Verfahren gemäß einem der vorhergehenden Ansprüche, bei dem das Bilden einer Maske basierend auf der Größe der Seitentabelle ein Setzen der Maske gleich 2M minus 1 aufweist, wobei 2M die Größe der Seitentabelle ist.
  7. Ein Verfahren gemäß Anspruch 6, bei dem das Bilden eines ersten Adreßabschnitts unter Verwendung einer Basisadresse der Seitentabelle und der Maske folgende Schritte aufweist: Bilden eines ersten Adreßabschnitts durch Durchführen einer UND-Operation hinsichtlich der Basisadresse der Seitentabelle und eines Inversen der Maske; und Bilden eines zweiten Adreßabschnitts unter Verwendung des Tabellenversatzes und der Maske, mit folgendem Schritt: Bilden eines zweiten Adreßabschnitts durch Durchführen einer UND-Operation hinsichtlich des Tabellenversatzes und der Maske.
  8. Ein Verfahren gemäß einem der vorhergehenden Ansprüche, bei dem für eine minimale Seitentabellengröße von 2N Bytes der Schritt des Bildens eines ersten Adreßabschnitts unter Verwendung einer Basisadresse der Seitentabelle und der Maske folgende Schritte aufweist: Bilden eines ersten Adreßabschnitts unter Verwendung der Basisadresse der Seitentabelle, ausschließlich der niedrigeren N Bits der Basisadresse der Seitentabelle, und der Maske, ausschließlich der niedrigeren N Bits der Maske; Bilden eines zweiten Adreßabschnitts unter Verwendung des Tabellenversatzes und der Maske, mit folgendem Schritt: Bilden eines zweiten Adreßabschnitts unter Verwendung des Tabellenversatzes, ausschließlich der niedrigeren N Bits des Tabellenversatzes, und der Maske, ausschließlich der niedrigeren N Bits der Maske; und Bilden der Eintragsadresse durch Kombinieren des ersten und des zweiten Adreßabschnitts, mit folgendem Schritt: Bilden der Eintragsadresse durch Kombinieren des ersten und des zweiten Adreßabschnitts, um ein Ergebnis zu bilden, Verschieben des Ergebnisses um N Bits nach links und Kombinieren des Ergebnisses mit den niedrigeren N Bits des Tabellenversatzes.
  9. Ein Computersystem, das eine Architektur aufweist, die einen virtuellen Adreßraum definiert, der durch virtuelle Adressen (502) adressiert wird, die einen Regionsabschnitt umfassen, der auf einen Aktivregionsidentifizierer (503) verweist, der eine Region identifiziert, wobei das Computersystem folgende Merkmale aufweist: eine Speichereinheit, die eine Seitentabelle umfaßt, die durch eine Seitentabellenbasisadresse verankert ist, wobei die Seitentabelle in der Lage ist, ein langes Format (701) und ein kurzes Format (601) anzunehmen; und einen Prozessor zum Ausführen von Instruktionen, wobei der Prozessor eine Seitentabellen-Eintragsadreßerzeugungseinheit umfaßt, die in der Lage ist, eine Eintragsadresse in die Seitentabelle aus einer virtuellen Adresse zu erzeugen, wobei die Eintragsadreßerzeugungseinheit folgende Merkmale aufweist: eine Hash-Seitenzahlerzeugungsschaltung, die wirksam ist, um eine Hash-Seitenzahl aus der virtuellen Adresse durch Verschieben der virtuellen Adresse um J Bits nach rechts zu bilden, wobei eine bevorzugte Seitengröße der Region, die dem Regionsabschnitt der virtuellen Adresse zugeordnet ist, 2J Bytes beträgt; eine Hash-Indexerzeugungsschaltung, die wirksam ist, um einen Hash-Index durch Kombinieren der Hash-Seitenzahl und des Regionsidentifizierers zu bilden, auf den durch den Regionsabschnitt der virtuellen Adresse verwiesen wird, wenn das Format der Seitentabelle als lang gesetzt ist, und um den Hash-Index durch Setzen des Hash-Index gleich der Hash-Seitenzahl zu bilden, wenn das Format der Seitentabelle als kurz gesetzt ist; eine Tabellenversatzerzeugungsschaltung, die wirksam ist, um einen Tabellenversatz durch Verschieben des Hash-Index um K Bits nach links zu bilden, wobei jeder Langformat-Seitentabelleneintrag 2K Bytes lang ist, wenn das Format der Seitentabelle als lang gesetzt ist, und um den Tabellenversatz durch Verschieben des Hash-Index um L Bits nach links zu bilden, wobei jeder Kurzformat-Seitentabelleneintrag 2L Bytes lang ist, wenn das Format der Seitentabelle als kurz gesetzt ist; eine Maskenerzeugungsschaltung, die wirksam ist, um eine Maske basierend auf einer Größe der Seitentabelle zu bilden; eine Erstadreßabschnittserzeugungsschaltung, die wirksam ist, um einen ersten Adreßabschnitt unter Verwendung der Seitentabellenbasisadresse und der Maske zu bilden; eine Zweitadreßabschnittserzegungsschaltung, die wirksam ist, um einen zweiten Adreßabschnitt unter Verwendung des Tabellenversatzes und der Maske zu bilden; und eine Eintragsadreßerzeugungsschaltung, die wirksam ist, um die Eintragsadresse durch Kombinieren des ersten und des zweiten Adreßabschnitts zu bilden.
  10. Ein Computersystem gemäß Anspruch 9, das Schaltungskomponenten umfaßt, die wirksam sind, um die Schritte eines der Ansprüche 2 bis 8 durchzuführen.
DE60003273T 1999-10-31 2000-10-30 Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse Expired - Lifetime DE60003273T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US430793 1999-10-31
US09/430,793 US6393544B1 (en) 1999-10-31 1999-10-31 Method and apparatus for calculating a page table index from a virtual address

Publications (2)

Publication Number Publication Date
DE60003273D1 DE60003273D1 (de) 2003-07-17
DE60003273T2 true DE60003273T2 (de) 2004-05-06

Family

ID=23709057

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60003273T Expired - Lifetime DE60003273T2 (de) 1999-10-31 2000-10-30 Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse

Country Status (5)

Country Link
US (1) US6393544B1 (de)
EP (1) EP1096385B1 (de)
JP (1) JP4268332B2 (de)
CN (1) CN1186729C (de)
DE (1) DE60003273T2 (de)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725366B1 (en) * 2000-09-07 2004-04-20 International Business Machines, Corporation System and method for 32 bit code branching to 64 bit targets
US6947970B2 (en) * 2000-12-19 2005-09-20 Intel Corporation Method and apparatus for multilevel translation and protection table
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US6807616B1 (en) * 2001-08-09 2004-10-19 Advanced Micro Devices, Inc. Memory address checking in a proccesor that support both a segmented and a unsegmented address space
US7382637B1 (en) 2002-02-01 2008-06-03 Netlogic Microsystems, Inc. Block-writable content addressable memory device
US6934796B1 (en) * 2002-02-01 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with hashing function
US6697276B1 (en) 2002-02-01 2004-02-24 Netlogic Microsystems, Inc. Content addressable memory device
US7937554B2 (en) 2002-11-12 2011-05-03 Broadcom Corporation System and method for managing memory
KR20040046465A (ko) * 2002-11-27 2004-06-05 한국전자통신연구원 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법
US7093099B2 (en) * 2002-12-12 2006-08-15 Alacritech, Inc. Native lookup instruction for file-access processor searching a three-level lookup cache for variable-length keys
US7143272B2 (en) * 2002-12-27 2006-11-28 Intel Corporation Using computation histories to make predictions
US7069268B1 (en) 2003-01-13 2006-06-27 Cisco Technology, Inc. System and method for identifying data using parallel hashing
US6983355B2 (en) * 2003-06-09 2006-01-03 International Business Machines Corporation Virtualization of physical storage using size optimized hierarchical tables
US7581010B2 (en) * 2003-07-14 2009-08-25 Microsoft Corporation Virtual connectivity with local connection translation
US7509473B2 (en) * 2003-08-27 2009-03-24 Adaptec, Inc. Segmented storage system mapping
US7720930B2 (en) * 2003-12-30 2010-05-18 Intel Corporation Systems and methods using NIC-based prefetching for host TCP context lookup
US7272654B1 (en) * 2004-03-04 2007-09-18 Sandbox Networks, Inc. Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names
US7266670B2 (en) * 2004-06-04 2007-09-04 Faraday Technology Corp. Method of determining whether a virtual address corresponds to a physical address in a translation lookaside buffer
US20060090034A1 (en) * 2004-10-22 2006-04-27 Fujitsu Limited System and method for providing a way memoization in a processing environment
US7685400B2 (en) * 2004-12-15 2010-03-23 International Business Machines Corporation Storage of data blocks of logical volumes in a virtual disk storage subsystem
US7886126B2 (en) 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
JP4573710B2 (ja) * 2005-06-16 2010-11-04 日本電信電話株式会社 データベース管理装置、データベース管理方法及びデータベース管理プログラム
US7657725B2 (en) * 2005-06-24 2010-02-02 Sigmatel, Inc. Integrated circuit with memory-less page table
FR2902208B1 (fr) * 2006-06-12 2009-07-17 Touret Richard Procede de structuration polymorphe et systemique de la memoire associative via un gestionnaire tiers
US20080021865A1 (en) * 2006-07-20 2008-01-24 International Business Machines Corporation Method, system, and computer program product for dynamically determining data placement
US7555628B2 (en) 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US9690790B2 (en) 2007-03-05 2017-06-27 Dell Software Inc. Method and apparatus for efficiently merging, storing and retrieving incremental data
CN101645043B (zh) * 2009-09-08 2012-01-04 成都市华为赛门铁克科技有限公司 写数据的方法、读数据的方法及存储设备
US8473684B2 (en) 2009-12-22 2013-06-25 International Business Machines Corporation Delayed replacement of cache entries
US8862859B2 (en) * 2010-05-07 2014-10-14 International Business Machines Corporation Efficient support of multiple page size segments
US8745307B2 (en) 2010-05-13 2014-06-03 International Business Machines Corporation Multiple page size segment encoding
US8478740B2 (en) 2010-12-16 2013-07-02 Microsoft Corporation Deriving document similarity indices
WO2012114525A1 (ja) * 2011-02-25 2012-08-30 三菱電機株式会社 制御装置、制御システムおよび通信方法
GB2498571A (en) 2012-01-20 2013-07-24 Intellectual Ventures Holding 81 Llc Base station able to communicate with a second device type on a narrow subset frequency band contained within a first main band
US9058268B1 (en) 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9280488B2 (en) 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9740624B2 (en) 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US10216642B2 (en) * 2013-03-15 2019-02-26 International Business Machines Corporation Hardware-based pre-page walk virtual address transformation where the virtual address is shifted by current page size and a minimum page size
CN103942161B (zh) * 2014-04-24 2017-02-15 杭州冰特科技有限公司 只读缓存的去冗余系统及方法以及缓存的去冗余方法
JP6406283B2 (ja) * 2016-03-01 2018-10-17 日本電気株式会社 ストレージ装置およびストレージ方法
US10528353B2 (en) 2016-05-24 2020-01-07 International Business Machines Corporation Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor
US10467008B2 (en) 2016-05-31 2019-11-05 International Business Machines Corporation Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor
US10248555B2 (en) 2016-05-31 2019-04-02 International Business Machines Corporation Managing an effective address table in a multi-slice processor
US11341058B2 (en) * 2018-07-26 2022-05-24 Vmware Inc. Handling software page faults using data from hierarchical data structures
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US20200073822A1 (en) * 2018-08-30 2020-03-05 Micron Technology, Inc. Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space
US11544069B2 (en) 2018-10-25 2023-01-03 Micron Technology, Inc. Universal pointers for data exchange in a computer system having independent processors
CN110365806B (zh) * 2019-06-06 2022-05-10 无线生活(杭州)信息科技有限公司 网址转换方法及装置
CN113726661B (zh) * 2021-08-27 2022-10-18 西安微电子技术研究所 一种高性能低功耗的路由哈希器及其控制方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649142A (en) * 1991-10-24 1997-07-15 Intel Corporation Method and apparatus for translating addresses using mask and replacement value registers and for accessing a service routine in response to a page fault
US5826057A (en) * 1992-01-16 1998-10-20 Kabushiki Kaisha Toshiba Method for managing virtual address space at improved space utilization efficiency
US5555387A (en) * 1995-06-06 1996-09-10 International Business Machines Corporation Method and apparatus for implementing virtual memory having multiple selected page sizes
DE4410060B4 (de) 1993-04-08 2006-02-09 Hewlett-Packard Development Co., L.P., Houston Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
US5630087A (en) * 1994-11-02 1997-05-13 Sun Microsystems, Inc. Apparatus and method for efficient sharing of virtual memory translations
DE19602872A1 (de) * 1995-01-27 1996-08-08 Gmd Gmbh Verfahren zum Betreiben einer Adreßumsetzvorrichtung
US5946716A (en) * 1996-05-30 1999-08-31 Hewlett-Packard Company Sectored virtual memory management system and translation look-aside buffer (TLB) for the same
AUPO194696A0 (en) * 1996-08-28 1996-09-19 Canon Information Systems Research Australia Pty Ltd A method of efficiently updating hashed page tables
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
US5918251A (en) * 1996-12-23 1999-06-29 Intel Corporation Method and apparatus for preloading different default address translation attributes
US6088780A (en) * 1997-03-31 2000-07-11 Institute For The Development Of Emerging Architecture, L.L.C. Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address
US6012132A (en) * 1997-03-31 2000-01-04 Intel Corporation Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table
US6557121B1 (en) 1997-03-31 2003-04-29 International Business Machines Corporation Method and system for fault isolation for PCI bus errors

Also Published As

Publication number Publication date
JP2001175536A (ja) 2001-06-29
DE60003273D1 (de) 2003-07-17
EP1096385A1 (de) 2001-05-02
CN1296224A (zh) 2001-05-23
US6393544B1 (en) 2002-05-21
EP1096385B1 (de) 2003-06-11
JP4268332B2 (ja) 2009-05-27
CN1186729C (zh) 2005-01-26

Similar Documents

Publication Publication Date Title
DE60003273T2 (de) Verfahren und Vorrichtung zur Erzeugung einer Eingabeadresse
DE4410060B4 (de) Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
DE69427625T2 (de) Adressübersetzungsmechanismus für Rechnersystem mit virtuellen Speicher, der eine Vielzahl von Seitengrössen unterstützt
DE69724572T2 (de) Verfahren und Vorrichtung zur Vorladung von verschiedenen vorgegebenen Adressenübersetzungsattributen
DE69424767T2 (de) Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE69814579T2 (de) Parallel arbeitende exklusiv-oder-einheit
DE3151745C2 (de)
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE69323863T2 (de) Verfahren und Vorrichtung zur Adressübersetzung
DE69732181T2 (de) Verfahren und gerät zum zwischenspeichern von systemverwaltungsinformationen mit anderen informationen
DE3805107C2 (de)
DE60320026T2 (de) Verbessertes speichermanagement für echtzeit-anwendungen
DE60036960T2 (de) Unterscheidung von feinkorntranslation
DE69229667T2 (de) Simulierte cachespeicher-assoziativität
DE69033064T2 (de) Verfahren zur Zuordnung von reellen Seiten zu virtuellen Seiten mit davon verschiedenen Seitengrössen
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE69230211T2 (de) Integrierter Speicher, Verwaltungsverfahren und resultierendes Informationssystem
DE69231611T2 (de) Verfahren zu grosser logischer Adressierung
DE3932675A1 (de) Virtuelles maschinensystem
DE10002120A1 (de) Logikstruktur eines Adressumsetzpuffers
DE102006039747A1 (de) Verfahren für Kontextzustandsmanagement
DE112018003032T5 (de) Cachestruktur, die ein logisches verzeichnis verwendet
DE69030072T2 (de) Schneller Durchschreib-Cache-Speicher

Legal Events

Date Code Title Description
8364 No opposition during term of opposition