-
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
-
-
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
-
-
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
-
-
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
-
-
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.