-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung betrifft Verwalten von Speicherseitentabellen in einem Datenverarbeitungssystem und insbesondere Übersetzen der Basistabelle von Speicherbereichen in einem Datenverarbeitungssystem.
-
HINTERGRUND
-
In Computersysteme werden verschiedene Adressübersetzungsmechanismen verwendet. In PowerPC® von IBM wird eine effektive Adresse zum Beispiel mittels Einträgen einer Seitentabelle, die durch Auswählen eines der effektiven Adresse zugehörigen Eintrags einer ESID-Tabelle gefunden werden, und unter Verwendung des Eintrags zum Auffinden einer Gruppe von Einträgen der Seitentabelle mittels eines Hash-Algorithmus in eine entsprechende reale Adresse übersetzt. Gemäß einem anderen Beispiel wird in zArchitecture®, ebenfalls von IBM, eine effektive Adresse mittels einer Hierarchie von Umsetzungstabellen in eine entsprechende reale Adresse übersetzt, wobei Übersetzungstabellen durch einen Teil der effektiven Adresse indexiert sind, um die Adresse der nächsten Umsetzungstabelle in der Hierarchie zu finden, bis eine reale (oder absolute) Adresse erhalten wird. Somit wird bei der Adressübersetzung in PowerPC eine effektive 64-Bit-Adresse (eines großen Speicherbereichs (264 Byte)) in nur zwei Ebenen (ein Eintrag der SLB-Tabelle und ein Eintrag der Seitentabelle) zugeordnet, wohingegen bei der hierarchischen Adressübersetzung in zArchitecture zum Übersetzen eines großen Bereichs effektiver Adressen (264 Byte) 5 Tabellen erforderlich sind. Beide Mechanismen zur Adressumsetzung bieten Vorteile für entsprechende Betriebssysteme.
-
In der
EP 0 690 386 A1 vom 03.01.1996 mit dem Titel „Address translator and method of operation“, wird eine CAM/SRAM Struktur (44) zur Adressübersetzung dargelegt, die mit einem Segmentierungs/Paging-Adressierungsschema kompatibel ist, jedoch nur einen einzigen Suchschritt erfordert. Jeder Eintrag in dem Programm zum Übersetzen von effektiven in reale Adressen (ERAT) weist zwei CAM-Felder (ESID, EPI) auf, die unabhängig voneinander eine eingegebene Segmentkennung und eine eingegebene Seitenkennung mit einer gespeicherten Segmentkennung bzw. einer gespeicherten Seitenkennung vergleichen. Das ERAT gibt ein gespeichertes Feld (DATA) einer realen Adresse aus, das einem Paar eines gespeicherten Segments und einer gespeicherten Seite zugehörig ist, wenn beide Vergleiche identisch sind. Das ERAT kann gespeicherte Übersetzungen auf der Grundlage der Segment- oder Seitengliederung annullieren, indem es während einer Annullierungsoperation eine Übereinstimmung für das Segment- beziehungsweise das Seiten-CAM-Feld fordert.
-
In der
US 8 103 851 B2 vom 24.01.2012 mit dem Titel „Dynamic address translation with translation table entry format control for identifying format of the translation table entry“, die durch Bezugnahme hierin aufgenommen ist, wird eine verbesserte Einrichtung zur dynamischen Adressübersetzung dargelegt. Gemäß einer Ausführungsform werden eine zu übersetzende virtuelle Adresse und eine anfängliche Ursprungsadresse einer Übersetzungstabelle der Hierarchie von Übersetzungstabellen erhalten. Ein Indexteil der virtuellen Adresse dient als Verweis auf einen Eintrag in der Übersetzungstabelle. Wenn ein in dem Eintrag der Übersetzungstabelle enthaltenes Formatsteuerungsfeld aktiviert ist, enthält der Tabelleneintrag eine Segmentadresse eines großen Datenblocks mit einer Größe von mindestens 1 MByte. Die Segmentadresse wird dann mit einem Relativzeiger der virtuellen Adresse verknüpft, um die übersetzte Adresse eines kleinen Datenblocks der Größe 4 KByte im Arbeitsspeicher oder Speicher zu bilden.
-
Die
US 2007 / 0 079 106 A1 betrifft einen Seitentabellenmechanismus, der virtuelle Adressen in reale Adressen übersetzt. In einem ersten Aspekt sind die Seitentabelleneinträge in gleich großen Blöcken enthalten, wobei die Einträge innerhalb jedes Blocks fortlaufenden Seiten des virtuellen Adressraums entsprechen. Vorzugsweise ist der gemeinsame höherwertige Teil der virtuellen Adresse in Segmenten enthalten, die auf mehrere Seitentabelleneinträge des Blocks verteilt sind. In einem zweiten Aspekt indiziert die virtuelle Adresse eine Definitionsstruktur in Form eines Binärbaums. Die Dekodierlogik durchläuft einen durch die Definitionsstruktur definierten Binärbaum, indem sie selektive Bits der virtuellen Adresse testet, um ein Blatt des Binärbaums zu erreichen, das den Ort der Daten definiert, die die reale Adresse definieren.
-
Die
US 2011 / 0 225 389 A1 betrifft eine Vorrichtung zum Verarbeiten von Daten, die Folgendes umfasst: eine Speicheradressenumsetzungsschaltungsanordnung, die konfiguriert ist, den Vorgang eines Seitentabellendurchlaufs von oben nach unten durchzuführen, um unter Verwendung von Umsetzungsdaten, die in einer Hierarchie von Umsetzungstabellen gespeichert sind, eine virtuelle Speicheradresse in eine physikalische Speicheradresse umzusetzen; wobei die Umsetzungsdaten Umsetzungen zwischen Seiten mit 2
N zusammenhängenden Bytes von virtuellen Speicheradressen und den zugehörigen Seiten mit 2
N zusammenhängenden Bytes von physikalischen Speicheradressen vorgeben, wobei N eine positive ganze Zahl ist; wobei die Hierarchie der Umsetzungstabellen Umsetzungstabellen in der Größe von 2
N zusammenhängenden Bytes umfasst, so dass eine vollständige Umsetzungstabelle auf einer Seite des physikalischen Speichers gespeichert wird; wobei die Speicheradressenumsetzungsschaltungsanordnung in Reaktion auf eine Seitengrößenvariable, die einen aktuellen Wert von N vorgibt, die Speicheradressenumsetzungsschaltungsanordnung steuert mit einer ausgewählten Größe von Seiten mit physikalischen Speicheradressen, Seiten mit virtuellen Speicheradressen und Umsetzungstabellen zu arbeiten, wobei einem spezifizierten Abschnitt der virtuellen Adresse, der sich von einem Ende der virtuellen Adresse mit dem höchstwertigen Bit erstreckt, eine feste Umsetzung auf einen entsprechenden Abschnitt der physikalischen Adresse zugewiesen wird, ohne einen Seitentabellendurchlauf zu erfordern.
-
KURZDARSTELLUNG
-
Die Erfindung betrifft ein Verfahren und ein Computerprogrammprodukt zum Zugreifen auf einen Speicherplatz in einem Datenverarbeitungssystem und ein Computersystem zum Zugreifen auf einen Speicherplatz, deren Merkmalen in den entsprechenden Hauptansprüchen angegeben sind. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.
-
In einem Beispiel beinhalten ein Verfahren, ein System und ein Computerprogrammprodukt zum Empfangen einer Anforderung für den Zugriff auf einen gewünschten Speicherblock, wobei die Anforderung eine effektive Adresse, die eine effektive Segmentkennung (ESID) und eine lineare Adresse enthält, und die lineare Adresse einen höchstwertigen Teil und einen Byte-Index aufweist; zum Auffinden eines Eintrags in einem Puffer durch einen Prozessor, wobei der Eintrag die ESID der effektiven Adresse enthält; zum Durchführen des angeforderten Zugriffs auf den gewünschten Speicherblock auf der Grundlage des Eintrags, der einen Basisseitentabellen-Zeiger (RPTP) enthält, unter Verwendung des RPTP zum Auffinden einer Übersetzungstabelle einer Hierarchie von Übersetzungstabellen unter Verwendung der gefundenen Übersetzungstabelle zum Übersetzen des höchstwertigen Teils der linearen Adresse, um eine Adresse eines Speicherblocks zu erhalten, und auf der Grundlage der erhaltenen Adresse; zum Durchführen des Auffindens eines Tabelleneintrags aus einer Gruppe von Einträgen einer Übersetzungstabelle unter Verwendung einer Hash-Funktion, um eine Adresse eines Speicherblocks zu erhalten. Das Verwenden der erhaltenen Adresse weist ein Verwenden des Byte-Indexes der linearen Adresse und der erhaltenen Adresse auf, um eine Adresse des gewünschten Speicherblocks zu bilden. Die Tabellenebene der aufgefundenen Übersetzungstabelle der Hierarchie von Übersetzungstabellen wird durch den RPTP angezeigt. Der RPTP gibt die Größe der zu verwendenden linearen Adresse an. Ein Teil der linearen Adresse dient als Index für die Suche nach einem Eintrag in der gefundenen Übersetzungstabelle, wobei der Eintrag der Übersetzungstabelle eine Ursprungsadresse einer Übersetzungstabelle auf der nächsten Ebene der Hierarchie von Übersetzungstabellen aufweist. Die lineare Adresse enthält eine Seitenkennung und eine Kennung für die relative Byte-Adresse.
-
Weitere Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung umgesetzt. Andere Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben und als Teil der beanspruchten Erfindung angesehen. Zum besseren Verständnis der Vorteile und der Merkmale wird auf die Beschreibung und die Zeichnungen verwiesen.
-
Figurenliste
-
Nunmehr werden Ausführungsformen der Erfindung lediglich beispielhaft unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben, wobei:
- 1A ein Beispiel einer Übersichts-Ansicht eines virtuellen Speichers (VM) veranschaulicht, der unter Verwendung des Hash-PTE- (PowerPC) Verfahrens einem physischen Speicher zugeordnet ist;
- 1B ein Beispiel eines Verfahrens zum Erzeugen einer virtuellen Adresse veranschaulicht;
- 1C ein Beispiel einer durch Power ISA verwendeten HPT- (hashed page table) Übersetzungsstruktur veranschaulicht;
- 2 einen hierarchischen Übersetzungsmechanismus zeigt;
- 3 eine Übersicht des Indexierens von Übersetzungstabellen veranschaulicht;
- 4 einen hybriden Übersetzungsmechanismus zeigt;
- 5 einen hybriden Übersetzungsmechanismus zeigt;
- 6 ein Blockschaltbild veranschaulicht, das ein Verfahren zum Auswählen der Anzahl von Bits einer effektiven Adresse zeigt, die mit dem RPTP verwendet werden sollen;
- 7 eine beispielhafte Ausführungsform eines Prozessorsystems veranschaulicht;
- 8 ein beispielhaftes Verfahren zum Zugreifen auf einen Speicherplatz veranschaulicht;
- 9 eine beispielhafte Ausführungsform einer linearen Adresse und von Tabellen (Tabellen/Verzeichnisse) veranschaulicht, die der linearen Adresse entsprechen;
- 10 einen Ablaufplan eines beispielhaften Verfahrens zum Zugreifen auf eine Speicherseite veranschaulicht;
- 11 einen Ablaufplan eines beispielhaften Verfahrens zum Auffinden einer ESID sowie eines zugehörigen RPTP und zum Entnehmen der linearen Adresse aus der effektiven Adresse veranschaulicht; und
- 12 eine beispielhafte Ausführungsform eines Computerprogrammprodukts veranschaulicht.
-
DETAILLIERTE BESCHREIBUNG
-
Prozessoren mit Zentraleinheiten (CPUs) können Segment-Umsetzpuffer (segment lookaside buffers, SLB) als Cachespeicher verwenden, die das Übersetzen von virtuellen Adressen beschleunigen. In früheren Systemen sind zum Zugreifen auf Seiten einzelne Basisseitentabellen-Zeiger (RPTP) unter Verwendung einer linearen Adresse verwendet worden. Solche Systeme verwalten einen einzigen großen Bereich, der im Speicherraum eine große Lücke aufweisen kann. Die im Folgenden beschriebenen Ausführungsformen stellen ein Verfahren, ein System und ein computerlesbares Medium bereit, die die Verwendung einer beliebigen Anzahl von RPTPs zum Übersetzen einer beliebigen Anzahl mehrerer voneinander getrennter virtueller Speicherbereiche ermöglichen.
-
1A veranschaulicht ein Beispiel einer allgemeinen Ansicht eines virtuellen Speichers (VM) 101, der einem physischen Speicher 103 unter Verwendung des Seitentabelleneintrag- (PET) Hash-Verfahrens zugeordnet ist, was zum Beispiel in PowerPC verwendet wird. In dem Beispiel verwenden Programme nur Bereiche A und B des VM. Alle Segmente des VM sind Segment-ID- (SID) Einträgen zugeordnet, die durch effektive Segment-IDs (ESIDs) 105 (darunter ESIDs für B und ESIDs für A) gekennzeichnet sind. Die durch das Programm verwendete „effektive Adresse“ 107 wählt eine SID mit dem ESID-Wert und einem virtuellen Segment-ID (VSID)-Wert aus. Der VSID-Wert stellt die höchstwertigen Bits einer „virtuellen Adresse“ dar, die durch einen Hash-Algorithmus verwendet werden sollen. Ein Hash-Wert auf der Grundlage der VSID wird zum Auffinden eines Eintrags der Seitentabelle (PTE) verwendet. Der Eintrag der Seitentabelle enthält eine Adresse einer Seite des physischen Speichers 103.
-
1B veranschaulicht ein Beispiel eines Verfahrens zum Erzeugen einer virtuellen Adresse 102 für das Hash-Verfahren. Demgemäß wird in einer Speicherverwaltungseinheit eines Prozessors eine effektive Adresse 104 empfangen, die ein Feld der effektiven Segmentkennung (ESID), ein Seitenfeld 108 und ein Feld 110 der relativen Byteadresse (Byte-Feld) enthält. Es wird auf einen Segment-Umsetzpuffer (SLB) 112 zugegriffen und in dem SLB 112 ein Eintrag mit der ESID 106 der effektiven Adresse 104 gefunden. Der Eintrag mit der ESID 106 enthält eine zugehörige virtuelle Segmentkennung (VSID) 114. Die zugehörige VSID dient zum Erzeugen der virtuellen Adresse 102, die die VSID 114 in dem SLB 112 enthält, der der ESID 106 der effektiven Adresse 104 zugehörig ist; und der Seite 108 und des Bytes 110 aus der effektiven Adresse 104. Die virtuelle Adresse 102 kann zum Zugreifen auf den physischen Speicher in dem Speichersystem verwendet werden. In dieser Offenlegung werden die Begriffe physischer Speicher, realer Speicher, Systemspeicher und absoluter Speicher austauschbar verwendet, um den Arbeitsspeicher zu bezeichnen, auf den ein Prozessor zugreifen kann.
-
1C veranschaulicht ein Beispiel einer in PowerPC verwendeten Hash-Seitentabellen- (HPT) Übersetzungsstruktur, wobei die Power-ISA in der Beschreibung der Power ISA™V, Version 2.06, überarbeitete Fassung B, die durch Bezugnahme hierin aufgenommen ist, ausführlich beschrieben wird. Der ESID-Teil 106 der effektiven Adresse (EA) 104 dient zum Auffinden eines Eintrags in dem SLB 112. Der Eintrag enthält ein VSID-Feld 114. Der Wert des VSID-Feldes 114 und ein Teil der EA 104 werden hashverschlüsselt, um ein Hash-Wert zu erzeugen, der zum Auffinden einer Seitentabellengruppe 152 in der Seitentabelle (HPT) 150 dient. Die PTEs der Gruppe 152 werden durchsucht, um einen entsprechenden PTE mit einem Feld zu finden, dessen Wert mit einem höchstwertigen Teil der VSID übereinstimmt. Wenn ein entsprechender PTE gefunden wurde, wird die Adresse der physischen Speicherseite in dem PTE zum Zugreifen auf den physischen Speicher verwendet. Sobald ein PTE-Eintrag gefunden worden ist, werden der Teil 104 der EA und die Adresse der in dem PTE gefundenen physischen Speicherseite zur Leistungssteigerung in dem TLB 154 gespeichert, sodass spätere Zugriffe auf dieselbe EA-Seite zu einem „Treffer“ in dem TLB 154 führen und die PTE-Suche vermeiden. Die Seitentabelle wird durch eine durch den Prozessor bereitgestellte Ursprungsadresse der Seitentabelle gefunden.
-
Wenn ein PTE 152 in der Gruppe gefunden worden ist, die dem Hash-Wert entspricht, wird die Adresse der physischen Speicherseite in dem PTE zum Zugreifen auf den physischen Speicher verwendet. Sobald ein PTE-Eintrag gefunden worden ist, werden der Teil 104 der EA und die Adresse des in dem PTE gefundenen physischen Speicherseite zur Leistungssteigerung in dem TLB 154 gespeichert, sodass spätere Zugriffe auf dieselbe EA-Seite zu einem „Treffer“ in dem TLB 154 führen und die PTE-Suche vermeiden. Die Seitentabelle wird durch eine durch den Prozessor bereitgestellte Ursprungsadresse der Seitentabelle gefunden.
-
Die Arbeitsgrundlagen (Principles of Operation) der IBM zArchitecture SA22-7832-8 und das Handbuch für Softwareentwickler der Intel Itanium Archictecture, Band 2: Systemarchitektur, Dokumentnummer: 245318-005, die beide durch Bezugnahme hierin aufgenommen sind, enthalten Beschreibungen anderer Adressübersetzungssysteme, die eine Hierarchie von Übersetzungstabellen verwenden.
-
2 zeigt einen beispielhaften Übersetzungsmechanismus mit hierarchischen Übersetzungstabellen. In diesem Fall werden Übersetzungstabellen zum Übersetzen des gesamten virtuellen Speichers 202 bereitgestellt, obwohl nur Bereiche A und B verwendet werden sollen. Der Ursprung der höchstwertigen Übersetzungstabelle der hierarchischen Übersetzungstabellen 204 wird beispielsweise durch ein Steuerregister (CR3) 206 bereitgestellt. Die effektive Adresse 208 dient als Index für die Suche in jeder Tabelle der hierarchischen Übersetzungstabellen 204, um eine Ursprungsadresse der nächsten Tabelle zu ermitteln, um zum Beispiel ein Seitentabelleneintrag (PTE) mit einer Adresse einer Seite des physischen Speichers 210 zu finden.
-
3 zeigt, dass der höchstwertige Teil 208a der effektiven Adresse als Index für die höchstwertige Übersetzungstabelle der Hierarchie dient, um einen Eintrag 302a der Tabelle 1 zu finden, der zum Auffinden der nächsten Übersetzungstabelle (Tabelle 2) dient. Desgleichen dient als Index für die Tabelle 2 ein nächster Teil 208b der effektiven Adresse, um einen Eintrag 302b in der Tabelle 2 zu finden, der eine Ursprungsadresse von Tabelle 3 aufweist. Ein nächster Teil 208c der effektiven Adresse dient als Index für die Tabelle 3, um einen Eintrag 302c in der Tabelle 3 zu finden, der eine Ursprungsadresse einer Tabelle 304 aufweist. Ein nächster Teil 208d der effektiven Adresse dient als Index für die Tabelle 304, um einen Eintrag 302d der Seitentabelle zu finden, der die Adresse einer physischen Speicherseite 306 aufweist. Innerhalb der Hierarchie von Übersetzungstabellen kann gemäß einer Ausführungsform ein Tabellenauswahlfeld verwendet werden, um zu ermitteln, welche aus der Hierarchie von Übersetzungstabellen als Ursprung infrage kommt. Somit ist für die Übersetzung gegebenenfalls nur ein Teil der Hierarchie erforderlich (wobei die höchstwertigen Bits mit dem Wert null einer effektiven Adresse auf eine vorgegebene Anzahl begrenzt sind). Eine Übersetzung, die weniger Tabellen verwendet, ist schneller als eine Übersetzung, die mehr Tabellen verwendet.
-
4 zeigt einen hybriden Übersetzungsmechanismus. In dem hybriden Übersetzungsmechanismus dient die effektive Adresse des virtuellen Speichers 208 zum Auffinden eines Eintrags, der der ESID in dem Segment-Umsetzpuffer (SLB) 402 in Block 401 bei dem oben dargestellten Hash-Verfahren entspricht. Bei dem hybriden Übersetzungsmechanismus wird jedoch entweder das herkömmliche Hash-Verfahren zum Auffinden eines PTE oder ein hierarchischer Adressübersetzungsmechanismus verwendet. Die ESID enthält entweder eine VSID zum Verschlüsseln nach dem Hash-Verfahren (Hash Ja) oder einen RPTP zum Auffinden einer Hierarchie von Übersetzungstabellen gemäß Block 403. Wenn nach dem Hash-Verfahren verschlüsselt werden soll, wird ein Seitentabelleneintrag einer Gruppe von Übersetzungstabelleneinträgen unter Verwendung der Hash-Funktion von 1A in Block 405 ausfindig gemacht. Wenn kein Hash-Verfahren angewendet werden soll, wird der unter Verwendung des RPTP gefundene Satz von Übersetzungstabellen dazu verwendet, eine Seite des realen Speichers wie in Block 407 von 2 gezeigt ausfindig zu machen. Gemäß einer Ausführungsform wird nur der Pfad „Hash Nein“ verfolgt.
-
5 zeigt eine Übersichts-Darstellung des hybriden Übersetzungsmechanismus. Bei diesem Mechanismus werden kleine Sätze 502a und 502b von hierarchischen Übersetzungstabellen für entsprechende Teilbereiche (A 504a beziehungsweise B 504b) des virtuellen Speichers 504 verwendet und somit die Anzahl der erforderlichen Übersetzungstabellen sowie die zur Übersetzung erforderliche Hierarchietiefe verringert. Die SID 506 funktioniert wie in 1A, um einen Eintrag zu finden, der keine VSID, sondern die ESID der EA und einen RPTP 508 aufweist. Jeder RPTP 508a und 508b enthält eine Ursprungsadresse einer höchstwertigen Tabelle eines hierarchischen Satzes von Übersetzungstabellen. Gemäß einer Ausführungsform enthält der RPTP 508 eine Auswahlfunktion zum Auswählen, welche Ebene der Übersetzungstabelle 502 als höchstwertige Tabelle verwendet werden soll. Die hierarchischen Übersetzungstabellen 502 werden wie in 2 durchsucht, um zum Beispiel eine Seitenadresse des physischen Speichers 510 zu finden. Gemäß einer Ausführungsform kann eine reale Adresse durch größere Segmente als eine Seite definiert sein. Zum Beispiel stellt zArchitecture die Wahlmöglichkeit zwischen einer Seite der Größe 4 KByte des realen Speichers oder einer wesentlich größeren Seite bereit, die nicht durch den Seitentabelleneintrag, sondern durch einen Segmenttabelleneintrag gefunden wird.
-
Um die kleineren für Bereiche A und B des virtuellen Speichers verwendeten Tabellen zu unterstützen, muss die effektive Adresse für jeden Bereich wirksam gekürzt werden, damit sie nur die Adressbits enthält, die in einer Teilmenge der Übersetzungstabellen verwendet werden. Zum Beispiel werden die Bits für die Indexsuche in Tabelle 1 gleich null gesetzt, wenn die Tabelle 1 nicht verwendet wird.
-
6 veranschaulicht ein Blockschaubild, das ein beispielhaftes Verfahren zum Auswählen der Anzahl Bits einer effektiven Adresse zeigt, die mit dem RPTP 508 in 5 verwendet werden soll, indem es in dem SLB-Eintrag ein Größenfeld 602 gibt und aufeinanderfolgende SLB-Einträge durchsucht werden, zum Beispiel nach einem Eintrag, der der ESID der effektiven Adresse zugehörig ist und zum Zugreifen auf die gewünschte Segmentgröße konfiguriert ist. Gemäß einer anderen Implementierung kann die Information der Größe der virtuellen Adresse (Segmentgröße) in einem einzigen SLB-Eintrag codiert sein, sodass die obige Suche nicht erforderlich ist.
-
Wenn ein SLB-Eintrag gefunden worden ist, wird der RPTP-Teil zum Auffinden der Ursprungsadresse der ersten Übersetzungstabelle der zu verwendenden Hierarchie von Übersetzungstabellen verwendet. Das Größenfeld 602 dient zum Erzeugen einer Segmentgrößenmaske. Die Segmentgrößenmaske schneidet die höchstwertigen Bits der effektiven Adresse (EA) ab, die für die Indexsuche in den Übersetzungstabellen nicht benötigt werden. Die Segmentgrößenmaske dient dazu, den für die Indexsuche verwendeten Teil der EA in einen Block einer realen Speicheradresse zu überführen, wobei die Adresse des Blocks durch die Übersetzungstabellen bereitgestellt wird. Somit wird für jeden RPTP nur eine Mindestanzahl von Übersetzungstabellen benötigt.
-
7 zeigt nunmehr allgemein eine beispielhafte Ausführungsform eines Prozessorsystems (System) 700. Das System 700 beinhaltet einen Prozessor (CPU) 702, der eine Speicherverwaltungseinheit/TLB-Bereich 704 und einen lokalen Cachespeicher 706 enthält. Der Prozessor 702 ist zum Datenaustausch mit einem Speicher-Teilsystem 708, das einen oder mehrere Cachespeicher 710 aufweist, und dem Arbeitsspeicher verbunden. Übersetzungs- (Basis-) Tabellen und SIDs sind üblicherweise im Arbeitsspeicher gespeichert. Der Prozessor ist mit einer Eingabe/Ausgabe- (E/A) Steuereinheit 712 verbunden. Die E/A-Steuereinheit 712 beinhaltet eine E/A-Speicherverwaltungseinheit (E/A-MMU) 716 und ist zum Datenaustausch mit externen E/A-Einheiten 714 verbunden, zu denen zum Beispiel Dateneingabeeinheiten, Sensoren und Ausgabeeinheiten wie beispielsweise Bildschirme gehören können. Gemäß anderen (nicht gezeigten) Ausführungsformen kann der Prozessor 702 eine Schnittstelle zum Speicher 708 aufweisen, die von der E/A-Steuerungsschnittstelle getrennt ist.
-
8 veranschaulicht ein beispielhaftes Verfahren zum Übersetzen einer effektiven Adresse, um den SLB-Eintrag zu erhalten, der den gewünschten Basisseitentabellen-Zeiger RPTP aufweist. Demgemäß wird in der Speicherverwaltungseinheit 704 des Systems 700 (von 7) eine effektive Adresse 802 empfangen. Die effektive Adresse 802 enthält als Teil 804 eine effektive Segmentkennung (ESID) und als Teil 807 eine lineare Adresse, wobei der lineare Adressteil 807 zum Beispiel einen Seitenteil 808 und einen relativen Byteadressteil (Byte) 810 enthält. Es wird auf einen beispielhaften SLB-Puffer 812 zugegriffen. Der Puffer 812 beinhaltet zum Beispiel eine inhaltadressierbare Tabelle, die Einträge mit einem Feld ESID 814, ein Feld gültiger Eintrag (V) 816, ein Feld Basisseitentabellen-Zeiger 818, ein Feld Segmentgröße 820 und ein Feld Segmenteigenschaften 822 enthält. Die Segmenteigenschaften 822 können dem Fachmann Parameter wie beispielsweise Berechtigungen, Zugriffstypen (zwischenspeicherbar, Cachespeicher blockiert, E/A), Baumgeometrie (Anzahl der Ebenen, Anzahl Bits pro Ebene usw.), und eine Anzeige zuletzt verwendet/am längsten nicht verwendet angeben. Die Segmenteigenschaften 822 können Parameter wie beispielsweise Überschreibungen von Feldern, die in den Einträgen der Segmentseitentabelle enthalten sind, sowie Eigenschaften angeben, die Parameter wie beispielsweise den Umgang mit verknüpften Einträgen der Seitentabelle definieren. Bei einer beispielhaften Operation wird ein Eintrag mit der ESID 804 der effektiven Adresse 802 in dem SLB 812 ausfindig gemacht. Der RPTP 801 des gefundenen Eintrags wird vom SLB 812 abgerufen.
-
Der RPTP 801 und die lineare Adresse 807 werden zum Beispiel zum Zugreifen auf einen Speicherplatz unter Verwendung beispielsweise einer Hierarchie von Adressübersetzungstabellen (einer Basistabelle (d.h. ein Basisbaum) wie beispielsweise der unten beschriebenen Basistabelle 711 von 7 verwendet. Jeder Eintrag (SLBE0 ... SLBEn) des SLB 812 wird parallel oder nacheinander oder in einer Kombination beider durchsucht, bis ein SLB-Eintrag gefunden wird, der zu dem ESID passt. Wenn das Gültigkeitsbit 816 für den SLB-Eintrag gesetzt ist, wird die Segmentgröße 820 dazu verwendet, eine Maske zum Entnehmen der ESID 804 und der linearen Adresse 807 zu erstellen. Der Wert „s“ in der effektiven Adresse 802 ist so lange unbekannt, bis es zu einer Übereinstimmung vom SLB 812 kommt. Gemäß einer beispielhaften Ausführungsform ist die Segmentgröße 820 gleich einer ganzzahligen Potenz „n“ zur Basis 2, sodass 2" die Segmentgröße in Byte darstellt. Somit wird für n = 30 als Segmentgröße ein Wert von einem Gigabyte berechnet. Die Größe der zum Entnehmen der linearen Adresse verwendeten Maske ist gleich der Segmentgröße minus ein Byte, also gleich (2n-1). Die zum Entnehmen der ESID 304 verwendete Maske „m“ stellt das Einser-Komplement der zum Entnehmen der linearen Adresse verwendeten Maske „mc“ dar, ist also gleich (~(2n-1)). Die effektive Adresse 802 wird bitweise einer logischen UND-Verknüpfung mit „m“ unterzogen. Die ESID des SLB-Eintrags wird bitweise einer logischen UND-Verknüpfung mit „m“ unterzogen. Wenn die obigen Ergebnisse der logischen Funktionen gleich sind, ist der passende SLB-Eintrag gefunden worden. Der RPTP 801 wird aus dem passenden SLB-Eintrag ausgewählt. Auch die lineare Adresse 807 kann ermittelt werden, da der Wert „s“ mit Sicherheit bekannt ist. Dieser ergibt sich aus der bitweisen logischen UND-Verknüpfung der effektiven Adresse 802 mit „mc“. Wenn die Ergebnisse der logischen Funktion ungleich sind, wird die Suche fortgesetzt. Wenn die Suche erfolglos ist, nachdem alle SLBEs durchsucht worden sind, wird eine System-Interruptroutine oder ein anderer Mechanismus aufgerufen, um eine Fehlerbedingung anzuzeigen.
-
Gemäß einigen beispielhaften Ausführungsformen werden Felder wie beispielsweise die Prozess-ID, die Thread-ID, die Prozessor-ID und die Partitions-ID mit den entsprechenden in den SLBEs gespeicherten Werten verglichen. Diese IDs sind von der effektiven Adresse 802 unabhängig und bilden einen Kontext für die effektive Adresse 802. Anstatt den SLB zu löschen, wenn ein Prozessor zu einem anderen Prozess wechselt (z.B. können beide Prozesse dieselbe Adresse 2000 auf unterschiedliche Weise nutzen), können auf diese Weise beide Prozesse in demselben SLB fortbestehen. Die Thread-, Prozessor- und Partitions-ID erweitern den Kontext über das ausgeführte Programm hinaus, indem sie die aktuelle oder virtualisierte Hardware bezeichnen.
-
Gemäß einer anderen Ausführungsform des oben in 8 beschriebenen Verfahrens enthalten SLBEs ein oder mehrere Felder, die eine auswählbare Übersetzung dergestalt zulassen, dass ein Eintrag einen RPTP auswählt, während ein anderer Eintrag auf der Grundlage der direkten Übersetzung von zusammenhängenden Speicherblöcken, übersetzten Bereichen der hashverschlüsselten Seitentabelle und so weiter ein anderes Übersetzungsschema auswählt.
-
9 veranschaulicht eine beispielhafte Ausführungsform einer linearen Adresse 807 und von Tabellen (Tabellen/Verzeichnissen) 902, die der linearen Adresse 807 entsprechen. Die Tabellen 902 dienen dazu, eine Seitenadresse für den Zugriff auf eine Seite 904 unter Verwendung des RPTP 801 und der linearen Adresse 807 umzusetzen. Die Kennung der Seite 808 der linearen Adresse 807 kann geteilt oder zugewiesen werden, um eine beliebige Anzahl von Verzeichnissen mit einer bestimmten Bezeichnung oder Nomenklatur zu kennzeichnen. Zur Veranschaulichung beinhaltet die beispielhafte Ausführungsform eine Kennung der Seite 808, die in Kennungsabschnitte eingeteilt ist (einen globalen Verzeichnisabschnitt 901, einen oberen Verzeichnisabschnitt 903, einen mittleren Verzeichnisabschnitt 905 und einen Seitentabellenabschnitt 907), die vier Verzeichnissen entsprechen (einem globalen Verzeichnis 906, einem oberen Verzeichnis 908, einem mittleren Verzeichnis 910 und einer Seitentabelle 912).
-
Demgemäß wird an den RPTP 801 eine geeignete Anzahl Nullen angehängt, um einen globalen Verzeichniszeiger zu erzeugen. Die Anzahl der angehängten Nullen entspricht der Größe des globalen Verzeichnisses 906. Bei diesem Beispiel besteht das globale Verzeichnis 906 aus 512 Einträgen mit je 8 Bytes, was insgesamt 4096 Bytes ergibt. Somit werden in diesem Beispiel zwölf Nullen (log2 4096) and den Wert RPTP 801 angehängt. (Alle Tabellen/Verzeichnisse weisen pro Eintrag 8 Bytes auf, was einem Beispiel von 64 Bits entspricht.) Die 36-Bit-Seite 808 ist in vier Gruppen je 9 Bits unterteilt, die sich jeweils durch das globale Verzeichnis 906, das obere Verzeichnis 908, das mittlere Verzeichnis 910 und die Seitentabelle 912 durchziehen. In diesem Beispiel lautet der RPTP 801 0x0000000000100000 und die lineare Adresse 807 0x1234567890AB. Zu Anfang werden dem globalen Verzeichnis 906 die 9 höchstwertigen Bits der linearen Adresse 807 (der Wert 36) entnommen und als Index 0 ... 511 für die Suche im globalen Verzeichnis 906 verwendet, und der Eintrag am Speicherplatz 0x0000000000100000 + 36*8 wird gelesen. Der gelesene Wert wird als Zeiger für das obere Verzeichnis 908 verwendet. (In diesem Beispiel wird die Speicheradresse zurückgegeben.) Die nächsten neun höchstwertigen Bits der linearen Adresse 807 (der Wert 209) werden entnommen und als Index 0 ... 511 für die Suche im oberen Verzeichnis 908 verwendet, und der Eintrag am Speicherplatz 0x0000000000200000 + 209*8 wird gelesen. Der gelesene Wert wird als Zeiger für das mittlere Verzeichnis 410 verwendet. (In diesem Beispiel wird die Adresse 0x0000000000300000 zurückgegeben.) Die nächsten neun höchstwertigen Bits der linearen Adresse 807 (der Wert 179) werden entnommen und als Index 0 ... 511 für die Suche im mittleren Verzeichnis 910 verwendet, und der Eintrag am Speicherplatz 0x0000000000300000 + 179*8 wird gelesen. Der gelesene Wert wird als Zeiger für die Seitentabelle 912 verwendet. (In diesem Beispiel wird die Adresse 0x0000000000400000 zurückgegeben.) Die restlichen neun niedrigstwertigen Bits (der Wert 393) der linearen Adresse 807 werden entnommen und als Index 0 ... 511 für die Suche in der Seitentabelle 912 verwendet, und der Eintrag am Speicherplatz 0x0000000000400000 + 393*8 wird gelesen. Der gelesene Wert wird als Zeiger für die Seite 904 verwendet. (In diesem Beispiel wird die Adresse 0x0000000000500000 zurückgegeben.) Die 12 Bits des Bytes 810 der linearen Adresse 807 (der Wert 171) werden zu dem Wert der Seite 904 (0x0000000000500000) addiert, woraus sich die komplett übersetzte Adresse 0x00000000005000AB ergibt.
-
9 beinhaltet lediglich ein Beispiel einer linearen Adresse und der entsprechenden Tabellen/Verzeichnisse. Andere Beispiele können eine verschiedene Anzahl von Tabellen oder ein Vertauschen, Umkehren oder ein Auslassen von Bits der linearen Adresse beinhalten, was zu einem anderen Tabellenzugriffsmuster führt.
-
In den veranschaulichten Ausführungsformen wird zwar ein System beschrieben, in dem effektive 64-Bit-Adressen 804 verwendet werden, jedoch können auch andere effektive Adressen einer beliebigen anderen Größe verwendet werden.
-
10 veranschaulicht einen Ablaufplan eines beispielhaften Verfahrens zum Zugreifen auf eine Speicherseite mit einem Prozessorsystem wie beispielsweise dem System 700 (von 7). Demgemäß wird in Block 1002 eine effektive Adresse 802 (von 8) in einer Speicherverwaltungseinheit 704 empfangen. Die Speicherverwaltungseinheit 704 ermittelt in Block 1004 einen Eintrag im Puffer 812, der die ESID 804 der effektiven Adresse enthält, und ruft den der ESID 804 zugehörigen RPTP 801 von dem erkannten Puffereintrag ab. Wenn die Suche in allen SLBEs in Block 1007 erfolglos ist, wird in Block 1009 eine System-Interruptroutine aufgerufen, um eine Fehlerbedingung anzuzeigen. In Block 1006 entnimmt die Speicherverwaltungseinheit 704 der effektiven Adresse 802 die lineare Adresse 807. In Block 1007 ermittelt das System 700, ob es sich bei dem Zugriff um einen virtualisierten Zugriff handelt. Wenn dies der Fall ist, wird in Block 1011 unter Verwendung des devirtualisierten Äquivalents des RPTP 801 und des devirtualisierten Äquivalents der linearen Adresse 807 auf den devirtualisierten Speicherplatz in der Seite zugegriffen. In Block 1008 werden der RPTP 801 und die lineare Adresse 807 mit den Tabellen 902 (von 9) dazu verwendet, eine übersetzte Adresse zu erzeugen und (gemäß der obigen Erörterung) auf einen Speicherplatz in einer Seite 904 zuzugreifen. In Block 1010 werden die Daten in den Speicherplätzen, auf die zugegriffen wurde, an den Prozessor 702 gesendet.
-
11 veranschaulicht einen Ablaufplan eines beispielhaften Verfahrens zum Auffinden der ESID und des zugehörigen RPTP und zum Entnehmen der linearen Adresse aus der effektiven Adresse gemäß der obigen Beschreibung in Block 1004 und 1006 von 10. Demgemäß wird in Block 1102 von 11 der erste gültige SLBE ausgewählt. In Block 1104 wird der Wert n der Segmentgröße des SLBE entnommen. In Block 1106 wird die ESID-Maske M durch Berechnen des Wertes (~(2n-1)) erzeugt. Wenn in Block 1108 die ESID der bitweise der UND-Verknüpfung mit M unterzogenen effektiven Adresse nicht gleich der ESID des bitweise der UND-Verknüpfung mit M unterzogenen Puffers ist, wird in Block 1109 der nächste gültige SLBE ausgewählt. Nach Bearbeiten aller SLBEs in Block 1110 wird in Block 1111 eine System-Interruptroutine aufgerufen. In Block 1112 wird der Wert (2"-1) berechnet, um eine Maske Mc der linearen Adresse zu erzeugen. In Block 1114 wird die lineare Adresse zusammengesetzt, indem die Maske Mc bitweise der UND-Verknüpfung mit der effektiven Adresse unterzogen wird. In Block enthält der ausgewählte SLBE die ESID, den RPTP, die Segmentgröße und Segmenteigenschaften.
-
Gemäß der obigen Beschreibung können Ausführungsformen in der Form von computergestützten Prozessen und Vorrichtungen zum Umsetzen dieser Prozesse realisiert werden. Eine Ausführungsform kann ein Computerprogrammprodukt 1200, das in 2 auf einen computerlesbaren/durch Computer nutzbaren Medium 1202 dargestellt ist, mit einer Computerprogrammcode-Logik 1204 beinhalten, deren Anweisungen in einem materiellen Medium als Herstellungsprodukt verkörpert sind. Als beispielhafte Herstellungsprodukte für das computerlesbare/durch Computer nutzbare Medium 1202 kommen infrage: Disketten, CD-ROMs, Festplatten, USB-(universal serial bus) Flashspeicher oder ein beliebiges anderes computerlesbares Speichermedium, wobei aus dem Computer eine Vorrichtung zum Umsetzen der Erfindung wird, wenn die Computerprogrammcode-Logik 1204 in einen Computer geladen und durch diesen ausgeführt wird. Für Ausführungsformen kommt eine Computerprogrammcode-Logik 1204 infrage, die in einem Speichermedium gespeichert ist, in einen Computer geladen und/oder durch diesen ausgeführt wird oder über ein bestimmtes Übertragungsmedium wie beispielsweise über elektrische Leitungen oder Kabel, Lichtwellenleiter oder über elektromagnetische Strahlung übertragen wird, wobei aus dem Computer eine Vorrichtung zum Umsetzen der Erfindung wird, wenn die Computerprogrammcode-Logik 1204 in einen Computer geladen und durch diesen ausgeführt wird. Wenn die Computerprogrammcode-Logik 1204 auf einem Universal-Mikroprozessor installiert ist, wird der Mikroprozessor durch diese so konfiguriert, dass spezielle Logikschaltungen erzeugt werden.
-
Die technischen Folgen und Vorteile der oben beschriebenen Verfahren und Systeme ermöglichen einer beliebigen Anzahl von RPTPs eine beliebige Anzahl von mehreren nicht zusammenhängenden Speicherbereichen zu übersetzen, um auf Daten in Speicherplätzen zuzugreifen.
-
Dem Fachmann ist einsichtig, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt umgesetzt werden können. Demgemäß können Aspekte der vorliegenden Erfindung die Form einer kompletten Hardwareausführungsform, einer kompletten Softwareausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte in sich vereint, die hierin sämtlich allgemein als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können. Darüber hinaus können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darauf gespeicherten computerlesbaren Programmcode verkörpert ist.
-
Es kann eine beliebige Komponente eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel, ohne darauf beschränkt zu sein, um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine entsprechende Vorrichtung oder Einheit oder eine beliebige geeignete Kombination derselben handeln. Als speziellere Beispiele (eine nicht erschöpfende Aufzählung) für das computerlesbare Speichermedium kommen infrage: eine elektrische Verbindung mit einer oder zwei Leitungen, eine austauschbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein austauschbarer Compact Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination derselben. In Verbindung mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges materielles Medium handeln, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen zu enthalten oder zu speichern.
-
Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit einem darin verkörperten computerlesbaren Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches sich ausbreitendes Signal kann eine beliebige aus einer Vielfalt an Formen annehmen, darunter, ohne darauf beschränkt zu sein, elektromagnetisch, optisch oder eine beliebige geeignete Kombination derselben. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weiterverbreiten oder transportieren kann.
-
Ein auf einem computerlesbaren Medium gespeicherter Programmcode kann unter Verwendung eines beliebigen geeigneten Medium übertragen werden, darunter, ohne darauf beschränkt zu sein, drahtlos, leitungsgebunden, Lichtwellenleiter, HF usw. oder eine beliebige geeignete Kombination derselben.
-
Ein Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie beispielsweise Java®, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann komplett auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder komplett auf dem fernen Computer oder Server ausgeführt werden. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers durch einen beliebigen Typ von Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer (zum Beispiel durch das Internet unter Verwendung eines Internetdienstanbieters) hergestellt werden.