-
Hintergrund
-
Die vorliegende Erfindung betrifft ein Verwalten von Arbeitsspeicher-Seitentabellen in einem Verarbeitungssystem und insbesondere ein Verknüpfen von Seitentabelleneinträgen in einem Verarbeitungssystem.
-
Prozessoren, einschließlich Zentraleinheiten (CPUs), können Adressumsetzpuffer (TLB) (Translation Lookaside Buffer) als Zwischenspeicher verwenden, die eine Umsetzungsgeschwindigkeit von virtuellen Adressen verbessern. Die TLBs werden verwendet, um virtuelle und physische Adressräume zuzuordnen und enthalten Seitentabelleneinträge, die die virtuellen Adressen zu den physischen Adressen zuordnen.
-
In Computersystemen werden mehrere Adressumsetzungsmechanismen verwendet. In PowerPC® von IBM wird zum Beispiel eine effektive Adresse in eine entsprechende reale Adresse mittels Seitentabelleneinträgen umgesetzt, die durch Auswählen eines ESID-Tabelleneintrages gefunden werden, die der effektiven Adresse zugehörig sind, und indem der Eintrag verwendet wird, um eine Seitentabelleneintragsgruppe mittels eines Hashalgorithmus zu suchen. In zArchitecture®, ebenfalls von IBM, wird in einem weiteren Beispiel eine effektive Adresse in eine entsprechende reale Adresse mittels einer Hierarchie von Umsetzungstabellen umgesetzt, wobei die Umsetzungstabellen durch einen Abschnitt der effektiven Adresse indexiert sind, um die Adresse der nächsten Umsetzungstabelle der Hierarchie zu suchen, bis eine reale (oder absolute) Adresse erhalten wird. Somit ordnet die PowerPC-Adressumsetzung eine effektive 64-Bit-Adresse (eines großen Bereichs des Arbeitsspeichers (264 Bytes)) in nur 2 Ebenen (einem SLB-Tabelleneintrag und einem Seitentabelleneintrag) zu, während die hierarchische zArchitecture-Adressumsetzung 5 Tabellen benötigt, um einen großen effektiven Adressbereich umzusetzen (264 Bytes). Beide Adressumsetzungsmechanismen stellen Vorteile für jeweilige Betriebssysteme bereit.
-
Die Anmeldung
EP690386A1 vom 03.01.1996, „Address translator and method of operation“ lehrt eine CAM/SRAM-Struktur (44), die Adressumsetzungen ausführt, die mit einer Segmentierungs-/Seitenadressierungsmethode kompatibel sind, aber dennoch nur einen einzigen Suchschritt erfordern. Jeder Eintrag in das Programm zum Umsetzen einer effektiven in eine reale Adresse weist zwei CAM-Felder auf (ESID, EPI), die unabhängig eine Eingabe-Segmentkennung und eine Eingabe-Seitenkennung jeweils mit einer gespeicherten Segmentkennung und einer gespeicherten Seitenkennung vergleichen. Die ERAT (Umsetzung von effektiven in reale Adressen / Effective to Real Address Translation) gibt ein Feld mit einer gespeicherten realen Adresse aus (DATA), das einem Paar aus gespeichertem Segment - gespeicherter Seite zugehörig ist, wenn beide Vergleiche gleichwertig sind. Die ERAT kann gespeicherte Umsetzungen auf der Grundlage einer Segment- oder Seiten-Granularität ungültig machen, indem während eines Vorgangs zum Ungültigmachen jeweils eine Übereinstimmung eines Segments oder eines Seiten-CAM-Felds gefordert wird.
-
Das Patentdokument
US8103851 B2 vom 24.1.2012, „Dynamic address translation with translation table entry format control for identifying format of the translation table entry“ lehrt eine verbesserte dynamische Adressumsetzungseinrichtung. In einer Ausführungsform werden eine virtuelle Adresse, die umgesetzt werden soll, und eine erste ursprüngliche Adresse einer Umsetzungstabelle der Hierarchie von Umsetzungstabellen erhalten. Ein Indexabschnitt der virtuellen Adresse wird zum Verweisen auf einen Eintrag in der Umsetzungstabelle verwendet. Wenn ein Formatsteuerungsfeld in dem Umsetzungstabelleneintrag aktiviert ist, enthält der Tabelleneintrag eine Rahmenadresse eines großen Datenblocks einer Größe von mindestens 1 MB. Die Rahmenadresse wird anschließend mit einem relativen Adressabschnitt der virtuellen Adresse kombiniert, um die umgesetzte Adresse eines kleinen 4-KB-Datenblocks im Hauptspeicher oder Arbeitsspeicher zu bilden.
-
Außerdem beschreibt das Dokument
US 2009 / 0 019 253 A1 ein Datenverarbeitunggssystem mit einer Speicherverwaltungs-Software für Änderungen in der Seitentabelle. Die Speicherverwaltungs-Software konsolidiert zusammenhängende Seitentabelleneinträge in einen oder mehrere Seitentabelleneinträge, die größeren Speicherseitengrößen entsprechen. Außerdem werden Einträge einem Lookaside-Buffer angepasst. Darüber hinaus beschreibt das
US 2011 / 0 225 389 A1 einen Schaltkreis für eine Speicheradressübersetzung, um eine virtuelle Speicheradresse in eine physische Speicheradresse zu übersetzen, wobei Übersetzungsdaten einer Hierarchie von Übersetzungstabellen verwendet werden.
-
Trotzdem gibt es einen weiteren Bedarf an leistungsfähigeren Speicherverwaltungen.
-
Kurzdarstellung der Erfindung
-
Diese Aufgabe wird durch die Gegenstände der unabhängigen Ansprüche gelöst. Weitere Ausführungsformen sind durch die abhängigen Ansprüche beschrieben.
-
Weitere Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung verwirklicht. Weitere Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben. Zum besseren Verständnis der Erfindung mit den Vorteilen und Merkmalen wird auf die Beschreibung und die Zeichnungen verwiesen.
-
Figurenliste
-
Die als die Erfindung betrachtete Thematik wird insbesondere in den Ansprüchen am Ende der Spezifikation dargelegt und eindeutig beansprucht. Die vorgenannten und weitere Merkmale und Vorteile der Erfindung werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den begleitenden Zeichnungen offenkundig, wobei:
- 1 ein Verarbeitungssystem gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
- 2A ein Beispiel einer übergeordneten Ansicht eines virtuellen Arbeitsspeichers (VM) (Virtual Memory) veranschaulicht, der einem physischen Arbeitsspeicher unter Verwendung des Hash-PTE- (PowerPC) Verfahrens zugeordnet ist;
- 2B ein Beispiel eines Verfahrens zum Erzeugen einer virtuellen Adresse veranschaulicht;
- 2C ein Beispiel einer hashverschlüsselten Seitentabellen- (HPT) (Hashed Page Table) Umsetzungsstruktur veranschaulicht, die von der Power-ISA verwendet wird;
- 3 einen hierarchischen Umsetzungsmechanismus darstellt;
- 4 eine Indexierung von übergeordneten Umsetzungstabellen veranschaulicht;
- 5A und 5B eine beispielhafte Seitentabelle gemäß einer Ausführungsform der vorliegenden Erfindung enthalten;
- 5C eine weitere beispielhafte Ausführungsform einer Seitentabelle veranschaulicht;
- 6 ein Blockschaubild eines beispielhaften Verfahrens zum Erstellen von Einträgen in der Seitentabelle von 5A gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
- 7 ein Blockschaubild eines beispielhaften Verfahrens für ein Zugreifen auf einen Arbeitsspeicher-Speicherort unter Verwendung der Seitentabelle von 5B gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
- 8 ein Blockschaubild eines beispielhaften Verfahrens für ein Löschen oder Ungültigmachen eines PTE unter Verwendung der Seitentabelle von 5B gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
- 9 eine weitere beispielhafte Ausführungsform einer Seitentabelle enthält;
- 10 ein Blockschaubild eines beispielhaften Verfahrens für ein Zugreifen auf einen Arbeitsspeicher-Speicherort unter Verwendung der Seitentabelle von 9 veranschaulicht; und
- 11 eine beispielhafte Ausführungsform eines Computerprogrammprodukts veranschaulicht.
-
Ausführliche Beschreibung
-
Bisherige Systeme haben eine Unterstützung sehr großer Seiten verwendet (z.B. Seiten, die größer als 4 KB sind), um zu ermöglichen, dass mehr Arbeitsspeicher ohne Adressumsetzpuffer- (TLB) Fehler umgesetzt werden kann. Bisherige Systeme verwenden jedoch eine direkte Unterstützung von dem Betriebssystem, um große Seiten zu verwenden. Eine derartige Anordnung kann dazu führen, dass Probleme auftreten, wenn verschiedene Seitengrößen in dem System verwendet werden. Die im Folgenden beschriebenen Ausführungsformen ermöglichen es, große Seiten direkt in der Hardware des Systems zu verwalten, sodass das Betriebssystem keine Verwaltung von großen Seiten auf Betriebssystemebene integrieren muss. Somit kann eine umfangreichere Verwendung des TLB erreicht werden, da eine bestimmte Anzahl von TLB-Einträgen einen größeren Adressraum umsetzen kann.
-
In einer weiteren Ausführungsform werden große Seiten direkt durch das Betriebssystem zugeordnet, sind allerdings nicht durch die Seitentabellenformate und -größen darstellbar. Ein Beispiel dafür kann eine große Seite in einer Basistabelle sein, wobei die große Seite einem kleinzahligen Mehrfachen entspricht (und weniger als einem Arbeitsspeicherbereich, der durch eine Ebene in der Basistabelle umgesetzt wurde).
-
Unter folgender Bezugnahme auf 1 wird allgemein eine beispielhafte Ausführungsform eines Prozessorsystems (System) 100 gezeigt. Das System 100 enthält einen Prozessor (CPU) 102, der eine Arbeitsspeicherverwaltungseinheit/einen TLB-Abschnitt 104 und einen Zwischenspeicher 106 enthält. Der Prozessor 102 ist datenübertragungsfähig mit einem Arbeitsspeicherabschnitt 108 verbunden, der einen Zwischenspeicher 110 und einen Eingabe/Ausgabe- (E/A) Abschnitt 112 hat. Der E/A-Abschnitt 112 ist datenübertragungsfähig mit externen E/A-Einheiten 114 verbunden, die zum Beispiel Dateneingabeeinheiten, Sensoren und Ausgabeeinheiten wie beispielsweise Anzeigen enthalten können.
-
2A veranschaulicht ein Beispiel einer übergeordneten Ansicht eines virtuellen Arbeitsspeichers (VM) 201, der einem physischen Arbeitsspeicher 203 unter Verwendung des hashverschlüsselten Seitentabelleneintrag- (PTE) Verfahrens zugeordnet ist, das zum Beispiel von PowerPC verwendet wird. In dem Beispiel verwenden Programme nur die Abschnitte A und B des VM. Alle VM-Segmente werden zu Segment-ID- (SID) Einträgen zugeordnet, die durch effektive Segment-IDs (ESIDs) 205 identifiziert werden (ESIDs für B und ESIDs für A eingeschlossen). Die „effektive Adresse“ 207, die von dem Programm verwendet wird, wählt einen SID-Eintrag, der den ESID-Wert und einen virtuellen Segment-ID- (VSID) Wert hat. Der VSID-Wert stellt die höchstwertigen Bits einer „virtuellen Adresse“ dar, die von einem Hashalgorithmus verwendet werden sollen. Ein hashverschlüsselter Wert auf der Grundlage des VSID wird für ein Suchen nach einem Seitentabelleneintrag (PTE) verwendet. Der Seitentabelleneintrag enthält eine Adresse einer Seite des physischen Arbeitsspeichers 203.
-
2B veranschaulicht ein Beispiel eines Verfahrens für ein Erzeugen einer virtuellen Adresse 202 für ein Hashverfahren. In diesem Zusammenhang wird eine effektive Adresse 204 in einer Arbeitsspeicher-Verwaltungseinheit eines Prozessors empfangen, die ein Feld für effektive Segmentkennung (ESID) 206, ein Seiten-Feld 208 und ein Feld für relative Byteadresse (Byte-Feld) 210 enthält. Auf einen Segmentumsetzpuffer (SLB) (Segment Lookaside Buffer) 212 wird zugegriffen, und ein Eintrag mit der ESID 206 der effektiven Adresse 204 wird in dem SLB 212 gefunden. Der Eintrag mit der ESID 206 enthält eine zugehörige virtuelle Segmentkennung (VSID) 214. Die zugehörige VSID wird verwendet, um die virtuelle Adresse 202, die die VSID 214 in dem SLB 212 enthält, der der ESID 206 der effektiven Adresse 204 zugehörig ist; und die Seite 208 und Byte 210 aus der effektiven Adresse 204 zu erzeugen. Die virtuelle Adresse 202 kann für den Zugriff auf physischen Arbeitsspeicher in dem Arbeitsspeichersystem verwendet werden. In dieser Offenbarung werden die Begriffe physischer Arbeitsspeicher, realer Arbeitsspeicher, Systemarbeitsspeicher und absoluter Arbeitsspeicher untereinander austauschbar verwendet, um auf den Hauptspeicher zu verweisen, auf den von einem Prozessor zugegriffen werden kann.
-
2C veranschaulicht ein Beispiel einer hashverschlüsselten Seitentabellen- (HPT) Umsetzungsstruktur, die von dem PowerPC verwendet wird, wobei die Power ISA ferner ausführlich in der Spezifikation für Power ISA™ Version 2.06 Revision B beschrieben wird. Der ESID-Abschnitt 206 der effektiven Adresse (EA) 204 wird zum Suchen nach einem Eintrag in dem SLB 212 verwendet. Der Eintrag enthält ein VSID-Feld 214. Der Wert des VSID-Felds 214 und ein Abschnitt der EA 204 werden hashverschlüsselt, um einen Hashwert zu erzeugen, der für ein Suchen nach einer Seitentabellengruppe 252 in einer Seitentabelle (HPT) 250 verwendet wird. Die PTEs der Gruppe 252 werden durchsucht, um einen entsprechenden PTE zu finden, der ein Feld hat, das mit einem Wert eines höchstwertigen Abschnitts der VSID übereinstimmt. Wenn ein entsprechender PTE gefunden wird, wird die Adresse der physischen Arbeitsspeicherseite in dem PTE für ein Zugreifen auf physischen Arbeitsspeicher verwendet. Sobald ein PTE gefunden ist, werden der Abschnitt der EA 204 und die Adresse der physischen Arbeitsspeicherseite, die in dem PTE gefunden wurden, für ein Verbessern der Leistung in dem TLB 254 gespeichert, sodass weitere Zugriffe auf dieselbe EA-Seite in dem TLB 254 einen „Treffer“ erzeugen und die PTE-Suche vermeiden. Die Seitentabelle wird durch eine Seitentabelle-Ursprungsadresse gefunden, die durch den Prozessor bereitgestellt wird.
-
Wenn ein PTE in der Gruppe 252 gefunden wird, der dem hashverschlüsselten Wert entspricht, wird die Adresse der physischen Arbeitsspeicherseite in dem PTE für ein Zugreifen auf den physischen Arbeitsspeicher verwendet. Sobald ein PTE gefunden ist, werden der Abschnitt der EA 204 und die Adresse der physischen Arbeitsspeicherseite, die in dem PTE gefunden wurden, für ein Verbessern der Leistung in dem TLB 254 gespeichert, sodass weitere Zugriffe auf dieselbe EA-Seite in dem TLB 254 einen „Treffer“ erzeugen und die PTE-Suche vermeiden. Die Seitentabelle wird durch eine Seitentabelle-Ursprungsadresse gefunden, die durch den Prozessor bereitgestellt wird.
-
Die Dokumente „IBM zArchitecture Principles of Operation SA22-7832-8“ und „Intel Itanium Architecture Software Developer's Manual Band 2: System Architecture, Dokumentnummer: 245318-005“ enthalten Beschreibungen von weiteren Adressumsetzungsverfahren, die hierarchische Umsetzungstabellen verwenden.
-
3 stellt einen beispielhaften hierarchischen Umsetzungsmechanismus für Umsetzungstabellen dar. In diesem Fall werden die Umsetzungstabellen für ein Umsetzen eines gesamten virtuellen Arbeitsspeichers 302 bereitgestellt, obwohl nur die Bereiche A und B verwendet werden sollen. Der Ursprung der höchstwertigen Umsetzungstabelle der hierarchischen Umsetzungstabellen 304 wird zum Beispiel durch ein Steuerregister (CR3) 306 bereitgestellt. Eine effektive Adresse 308 wird für eine Indexierung in jeder Tabelle der hierarchischen Umsetzungstabellen 304 verwendet, um eine Ursprungsadresse der nächsten aufzufindenden Tabelle zu bestimmen, zum Beispiel einen Seitentabelleneintrag (PTE) mit einer Adresse einer Seite eines physischen Arbeitsspeichers 310.
-
4 zeigt, dass die Umsetzungstabelle der obersten Ebene der Hierarchie durch den oberen Abschnitt einer effektiven Adresse 308a „indexiert“ ist, um einen Eintrag 402a einer Tabelle 1 zu suchen, der für ein Suchen nach der nächsten Umsetzungstabelle (Tabelle 2) verwendet wird. Desgleichen wird ein nächster Abschnitt einer effektiven Adresse 308b für ein Indexieren in Tabelle 2 verwendet, um einen Eintrag 402b der Tabelle 2 zu suchen, der die ursprüngliche Adresse von Tabelle 3 hat. Ein nächster Abschnitt einer effektiven Adresse 308c wird für ein Indexieren in der Tabelle 3 verwendet, um einen Eintrag 402c der Tabelle 3 zu suchen, der eine ursprüngliche Adresse einer Tabelle 304 hat. Ein nächster Abschnitt einer effektiven Adresse 308d wird für ein Indexieren in der Tabelle 304 verwendet, um einen Seitentabelleneintrag 402d zu suchen, der die Adresse einer physischen Arbeitsspeicherseite 406 hat. Der Ursprung der Hierarchie von Umsetzungstabellen kann in einer Ausführungsform ein Tabellenauswahlfeld enthalten, um zu bestimmen, auf welche aus der Hierarchie von Umsetzungstabellen der Ursprung angewendet ist. Somit kann die Umsetzung nur eine Untergruppe der Hierarchie erfordern (wobei eine effektive Adresse darauf beschränkt ist, eine vordefinierte Anzahl von höchstwertigen Bits mit einem Nullwert zu enthalten). Eine Umsetzung, die weniger Tabellen verwendet, wird schneller sein als eine, die mehr Tabellen verwendet.
-
5A und 5B enthalten eine beispielhafte Ausführungsform einer Seitentabelle 501, die ein Feld für eine Anzahl von Seitentabelleneinträgen 502, ein Feld für effektive/virtuelle Adresse (virtuelle Adresse) 504, ein Feld für physische Adresse 506, ein Gültigkeitsfeld 508 und ein Markierungsfeld 510 hat. In diesem Zusammenhang dient das Feld für die Anzahl von Seitentabelleneinträgen 502 zu Veranschaulichungszwecken, da es (für das veranschaulichte Beispiel) ein 9-Bit-Index ist, der für ein Zugreifen auf das Array von 512 PTEs (Nr. 0 bis 511) in der Seitentabelle 501 verwendet wird. Das Feld für virtuelle Adresse 504 wird in einer hashverschlüsselten Umgebung verwendet und Hash verwirft Teile der virtuellen Adresse. In einer nicht hashverschlüsselten Umgebung wird die virtuelle Adresse implizit durch ein Schritt-für-Schritt-Durchlaufen des Basisbaums angegeben und muss nicht in dem PTE angegeben werden, (siehe 308a bis d in 4). Das Feld für physische Adresse 506 enthält die physische Adresse, die das Betriebssystem einer bestimmten virtuellen Adresse 504 zugeordnet hat. Das Gültigkeitsfeld 508 gibt an, dass die Inhalte für einen bestimmten, in der Seitentabelle 501 gefundenen PTE gültig sind. 510: Das Markierungs-Bit/-Feld 510 wird im Folgenden ausführlicher beschrieben.
-
Die PTEs von 5A und 5B können zum Beispiel in Verbindung mit einer HPT-Umsetzungsstruktur (von 2C) verwendet werden. Die Intel IA64-Architektur wird ferner ausführlich beschrieben im Intel Itanium Architecture Software Developer's Manual Revision 2.3. Der beispielhafte Betrieb des Systems 100 und die Verwendung der Seitentabelle 501 werden im Folgenden erörtert. Das Feld für virtuelle Adresse 504 ist optional und kann in einer hashverschlüsselten Umgebung verwendet werden.
-
5C veranschaulicht eine Mehrzahl von Seitentabelleneinträgen einer Seitentabelle 304 gemäß einer weiteren Ausführungsform in Verbindung mit der Umsetzung auf der Grundlage eines Basisbaums von 4. Gemäß dieser Ausführungsform enthalten die Seitentabelleneinträge eine physische Adresse 505, ein gültiges Bit 507 und Seiteneigenschaften-Bits (Markierung) 509. In der veranschaulichten Ausführungsform wird ein Seitentabelleneintrag um ein Markierungs-Bit erweitert, um mehrere Seiten als Teil eines virtuellen Adressblocks zu markieren, der einem größeren zusammenhängenden Adressbereich entspricht, der die Größe einer einzelnen Seite überschreitet. Ein einzelner Hardware-Umsetzungseintrag (wie beispielsweise ein Eintrag in einem TLB, einer ERAT oder einer anderen derartigen Umsetzungsstruktur) wird für ein Umsetzen mehrerer Seitentabelleneinträge verwendet, um eine erhöhte Wirksamkeit der Hardware-Umsetzungsstruktur zu erzielen.
-
Obwohl die veranschaulichten Ausführungsformen ein System beschreiben, das 16-KB-Blöcke mit vier zusammenhängenden Einträgen verwendet, können alternative Ausführungsformen jede geeignete Speicheranordnung bzw. jede Methode verwenden, die Blöcke einer beliebigen geeigneten Größe und einer geeigneter Anzahl von Einträgen haben. In einer beispielhaften Ausführungsform wird die Anzahl von Einträgen durch Schreiben in ein Konfigurationsregister (nicht gezeigt) angegeben. In einer weiteren Ausführungsform gibt ein Feld in dem PTE 501 die Anzahl von Einträgen an. In noch einer weiteren beispielhaften Ausführungsform werden mehrere Konfigurationsregister bereitgestellt, die mehreren Basistabellenebenen entsprechen, die eine Mehrfacheintrags-Umsetzungsgranularität erstellen, wenn übergeordnete Verzeichnisse (wie das Page Middle Directory oder das Page Upper Directory) größere Basisseitengrößen für jede Verzeichnisebene separat umsetzen können. Wenn die Anzahl von Einträgen in einer Implementierung als implementierungsspezifisches Merkmal gemäß einer beispielhaften Ausführungsform festgelegt ist, kann eine Abfragefunktion verwendet werden, um die Anzahl von Einträgen in einem Block zu erhalten.
-
In diesem Zusammenhang veranschaulicht 6 ein Blockschaubild eines beispielhaften Verfahrens für ein Erstellen von Einträgen in der Seitentabelle 501 (von 5A) für das System 100 (von 1). Unter Bezugnahme auf 6 wird im Block 602 eine Zuordnungsroutine für eine virtuelle Adresse gestartet. In dem veranschaulichten Beispiel fügt die Zuordnungsroutine eine Zuordnung für die virtuelle Adresse 003000 zu der physischen Adresse 123456780000B000 hinzu. Im Block 604 werden die Einträge in diesem selben virtuellen Adressblock von 16 KB (Blockeinträge 0, 1 und 2) als die virtuelle Adresse 003000 identifiziert. Die physischen Adressen der Einträge werden analysiert, um im Block 606 zu bestimmen, ob die Einträge verknüpft werden können. Die Bestimmung erfolgt zum Beispiel durch Bestätigen, dass die Einträge 0, 1 und 2 gültig sind. Jede in den Einträgen gespeicherte physische Adresse, einschließlich der physischen Adresse, die im Eintrag 3 installiert wird, wird per logischer UND-Verknüpfung dem Wert 3FFF (16383) hinzugefügt, der um ein Byte kleiner ist als die Größe des virtuellen Adressblocks (für einen virtuellen Adressblock von 16 KB). Das Ergebnis von jedem PTE lautet 1234567800008000. Wenn das Ergebnis von jedem PTE dasselbe ist, können die vier PTEs verknüpft werden. Falls nicht, wird für die virtuelle Adresse 003000 ein Seitentabelleneintrag erstellt. In dem veranschaulichten Beispiel können die Seitentabelleneinträge in dem virtuellen Adressblock verknüpft werden. Somit wird im Block 610 ein Seitentabelleneintrag für die virtuelle Adresse 003000 erzeugt, die der physischen Adresse 123456780000B000 zugeordnet ist. TLB-Anweisungen für ein Ungültigmachen werden ausgegeben, um im Block 612 alle gültigen TLB-Einträge ungültig zu machen, die die virtuellen Adressen umfassen, die in dem virtuellen Adressblock enthalten sind. Im Block 614 wird eine Markierung in dem Markierungsfeld 510 für jeden PTE in dem virtuellen Adressblock gesetzt. 5B veranschaulicht eine beispielhafte Ausführungsform der sich daraus ergebenden Seitentabelle 501 in Folge der Ausführung des oben beschriebenen Verfahrens. Wenn die Hardware-Umsetzungssuche nicht erfolgreich ist, kann das Betriebssystem eine Zuordnungsroutine für eine virtuelle Adresse starten.
-
Ein TLB hat eine feste Anzahl von Bereichen, die Seitentabelleneinträge enthalten, die virtuelle Adressen zu physischen Adressen zuordnen. Der virtuelle Arbeitsspeicher ist der von einem Prozess aus gesehene Speicherbereich. Dieser Speicherbereich ist in Seiten einer vorab festgelegten Größe segmentiert. Die Seitentabelle (die im Allgemeinen in den Arbeitsspeicher geladen ist) verfolgt, wohin die virtuellen Seiten in dem physischen Arbeitsspeicher geladen werden. Der TLB ist ein Zwischenspeicher der Seitentabelle; das heißt, nur eine Untergruppe ihres Inhalts wird gespeichert.
-
Der TLB verweist in seiner Tabelle auf physische Arbeitsspeicheradressen. Er kann sich zwischen der CPU und dem CPU-Zwischenspeicher, zwischen dem CPU-Zwischenspeicher und einem primären Arbeitsspeicher der Speichereinheit oder zwischen Ebenen eines Mehrebenen-Zwischenspeichers befinden. Die Platzierung bestimmt, ob der Zwischenspeicher eine physische oder virtuelle Adressierung verwendet. Wenn der Zwischenspeicher virtuell adressiert wird, werden Anforderungen direkt von der CPU zum Zwischenspeicher gesendet, und auf den TLB wird nur im Fall eines Zwischenspeicherfehlers zugegriffen. Wenn der Zwischenspeicher physisch adressiert wird, führt die CPU eine TLB-Suche für jeden Arbeitsspeichervorgang aus, und die sich daraus ergebende physische Adresse wird an den Zwischenspeicher gesendet. Beide Implementierungen weisen Vor- und Nachteile auf. Zwischenspeicher, die eine virtuelle Adressierung verwenden, haben als Schlüssel einen Teil der virtuellen Adresse plus optional einen Schlüssel, der als „Adressraumkennung“ (ASID) bezeichnet wird. Zwischenspeicher, die keine ASIDs aufweisen, müssen in einer Mehrprozessor-Umgebung bei jeder Kontextänderung geleert werden.
-
In einer Harvard-Architektur oder einer Hybridform davon kann ein separater virtueller Adressraum oder eine Hardware für Arbeitsspeicherzugriff für Anweisungen und Daten vorhanden sein. Dies kann zu eindeutigen TLBs für jeden Zugriffstyp führen.
-
7 veranschaulicht ein Blockschaubild eines beispielhaften Verfahrens für ein Zugreifen auf einen Arbeitsspeicher-Speicherort unter Verwendung der Seitentabelle 501 (von 5B). In diesem Zusammenhang wird unter Bezugnahme auf 7 im Block 702 eine Arbeitsspeicher-Zugriffsroutine gestartet, um auf den Arbeitsspeicher-Speicherort 001000 zuzugreifen. Im Block 704 befindet sich der PTE für 001000 und wird dort gelesen. Im Block 705 bestimmt das System 100, ob der PTE gültig ist. Falls nicht, wird im Block 707 das Betriebssystem aufgerufen, um einen PTE-Fehler zu verarbeiten. Das System 100 bestimmt im Block 706, ob in dem Markierungsfeld 510 (von 5B) eine Markierung gesetzt ist. Falls nicht, wird im Block 708 die physische Adresse von dem PTE abgerufen, der der virtuellen Adresse zugehörig ist, und die physische Adresse kann verwendet werden, um durch den Prozessor auf den Arbeitsspeicher-Speicherplatz zuzugreifen. Wenn die Markierung im Block 710 gesetzt ist, wird die Seitengröße bestimmt (auf ähnliche Weise wie vorher erörtert), und der Start-Speicherort der Seite wird für ein Zugreifen auf den Arbeitsspeicher-Speicherplatz an den Prozessor gesendet. Der Start-Speicherplatz der Seite wird identifiziert, wenn die Markierung in dem PTE gesetzt ist, indem eine UND-Operation mit der virtuellen und der physischen Adresse in dem PTE ausgeführt wird mit dem Einerkomplement von eins kleiner als die Größe des virtuellen Adressblocks von 16 KB, um einen virtuellen Adressblock einer zuzuordnenden virtuellen und physischen Adresse zu erhalten. (16384 - 1 = 16383 = 3FFF) Das Einerkomplement lautet FFFFFFFFFFFFC000, das dann per UND-Verknüpfung den virtuellen und physischen Adressen hinzugefügt wird. Im Block 712 wird die physische Adresse für den PTE abgerufen (z.B. zeigt 000000 auf den 16-KB-Block bei 123457800009000), der auf den Start-Speicherort der Seite zeigt. Die virtuellen und physischen Adressen eines virtuellen Adressblocks sind in einem Hardware-Umsetzungseintrag in Verbindung mit Seitentabellenattributen installiert, die in einem PTE gemäß 5C gespeichert sind.
-
Dem Fachmann wird klar sein, dass Attribute für alle durch einen einzigen Hardware-Umsetzungseintrag zugeordneten Adressen konsistent sind, wenn ein virtueller Adressblock durch einen einzelnen Hardware-Eintrag umgesetzt wird.
-
In einem Aspekt einer Ausführungsform wird das Verfahren von 7 erweitert, um auf Äquivalenz zu prüfen. In einer weiteren Ausführungsform wird 7 auf Seiten mit ähnlichen Umsetzungseigenschaften angewendet (z.B. auf Seiten, die Anweisungen in Bezug auf andere Seiten enthalten, die Anweisungen enthalten, oder Seiten, die normale Anwendungsdaten enthalten, die auf zwischenspeicherbare und schreibbare Weise in Bezug auf andere normale Anwendungsdaten zugeordnet sind, die auf zwischenspeicherbare und schreibbare Weise oder zu Nur-Lese-Daten in Bezug auf andere Nur-Lese-Daten zugeordnet sind usw.).
-
In einem Aspekt wird keine Hardware-Prüfung ausgeführt, um konsistente Seiteneigenschaften sicherzustellen. In einem weiteren Aspekt prüft Hardware alle markierten Seiten-PTEs vor einem Installieren eines virtuellen Adressblocks auf kompatible Attribute. Wenn in einer Ausführungsform die Prüfung fehlschlägt, wird eine Umsetzung eines virtuellen Adressblocks nicht als ein Eintrag installiert. In einem Aspekt wird eine Softwarefehlerbenachrichtigung ausgelöst (z.B. mittels einer Ausnahmebedingung, die entweder an ein Betriebssystem oder einen Hypervisor gemeldet wird). In einem weiteren Aspekt wird ein Hardware-Umsetzungseintrag installiert, der einem einzelnen PTE entspricht, und die Markierung wird ignoriert.
-
Dem Fachmann wird klar sein, dass virtuelle und physische Adressen zusammenhängend sein werden, wenn mehrere PTEs verwendet werden, um einen Bereich eines virtuellen Adressblocks zuzuordnen.
-
In einem Aspekt wird keine Hardware-Prüfung ausgeführt, um sicherzustellen, dass zusammenhängende physische Adressen durch PTEs zugeordnet werden, die als Mitglieder eines virtuellen Adressblocks markiert sind.
-
In einem weiteren Aspekt prüft Hardware alle markierten Seiten-PTEs vor einem Installieren eines virtuellen Adressblocks auf zusammenhängende physische Adressen. Wenn in einer Ausführungsform die Prüfung fehlschlägt, wird eine Umsetzung eines virtuellen Adressblocks nicht als ein Eintrag installiert. In einem Aspekt wird eine Softwarefehlerbenachrichtigung ausgelöst (z.B. mittels einer Ausnahmebedingung, die entweder an ein Betriebssystem oder einen Hypervisor gemeldet wird). In einem weiteren Aspekt wird ein Hardware-Umsetzungseintrag installiert, der einem einzelnen PTE entspricht, und die Markierung wird ignoriert.
-
8 veranschaulicht ein Blockschaubild eines beispielhaften Verfahrens für ein Löschen oder Ungültigmachen eines PTE unter Verwendung der Seitentabelle 501 (von 5B). In diesem Zusammenhang wird unter Bezugnahme auf 8 im Block 802 eine Routine für ein Löschen/Ungültigmachen gestartet, die funktionsfähig ist, um eine Umsetzung für die virtuelle Adresse 002000 aus der Seitentabelle 501 zu entfernen. Der PTE für die virtuelle Adresse und der zugehörige Adressblock befinden sich im Block 804. Wenn im Block 806 im Markierungsfeld 510 keine Markierung gesetzt ist, gibt das System im Block 808 eine TLB-Anweisung für ein Ungültigmachen für den PTE mit der virtuellen Adresse aus. Im Block 810 wird der PTE für die virtuelle Adresse in dem Gültigkeitsfeld 508 (von 5B) als ungültig markiert. Wenn die Markierung im Block 812 in dem Markierungsfeld 510 gesetzt ist, wird die Markierung in dem Markierungsfeld 510 für alle PTEs in dem virtuellen Adressblock der virtuellen Adresse (z.B. 0, 1 und 3) nach einer Identifizierung der PTEs in dem virtuellen Adressblock der virtuellen Adresse (z.B. 0, 1, 2, 3) entfernt. Wenn die Markierungen entfernt sind, werden im Block 814 TLB-Anweisungen für ein Ungültigmachen für alle PTEs in dem virtuellen Adressblock des virtuellen Adressblocks ausgegeben. Der PTE der virtuellen Adresse (002000) wird im Block 816 im Gültigkeitsfeld 508 als ungültig markiert.
-
9 enthält eine weitere beispielhafte Ausführungsform einer Seitentabelle 901, die ein Feld für eine Anzahl von Seitentabelleneinträgen 902 hat, ein Feld für effektive/virtuelle Adresse (virtuelle Adresse) 904, ein Feld für physische Adresse 906, ein Gültigkeitsfeld 908 und ein Markierungsfeld 910 und ein Feld für restliche Funktions-Bits 912. Der beispielhafte Betrieb des Systems 100 (von 1) und die Verwendung der Seitentabelle 901 werden im Folgenden erörtert.
-
In der Seitentabelle 901 sind die Markierungsfelder 910 für die PTEs 0 und 1 gesetzt, wodurch angegeben wird, dass der virtuelle Adressblock ein 8-KB-Block ist. Die gesetzte Angabe für die PTEs 0 und 1 gibt dem System 100 an, dass auf die PTEs 0 und 1 als größere PTEs zugegriffen werden sollte, und die Felder, die durch die Angabe „###“ angegeben sind (Felder 906b und 912b) sind verfügbar, um weitere Daten oder Informationen zu speichern. In einer Ausführungsform werden zusätzliche Seiteneigenschaften in den zusätzlichen Bits eines derartigen PTE gespeichert. In einer weiteren Ausführungsform können zusätzliche Bits einer physischen Adresse in diesen zusätzlichen Bits eines derartigen PTE gespeichert werden, was dem System ermöglicht, physische Adressen zu adressieren, auf die anderweitig nicht zugegriffen werden kann. In einem Aspekt der Ausführungsform kann dies verwendet werden, um einen erweiterten Arbeitsspeicherbereich zuzuordnen, der große Seiten verwendet, die durch physische Adressen nicht adressierbar sind, die in einem normalen PTE gespeichert werden können. Die gesetzte Angabe für die PTEs 0 und 1 gibt zusammen mit den gültigen Angaben in dem Gültigkeitsfeld 908 für das System auch an, dass beide PTEs 0 und 1 gelesen werden sollen, wenn eine Arbeitsspeicher-Zugriffsroutine ausgeführt wird.
-
10 veranschaulicht ein Blockschaubild eines beispielhaften Verfahrens für ein Zugreifen auf einen Arbeitsspeicher-Speicherort unter Verwendung der Seitentabelle 701 (von 7). In diesem Zusammenhang wird unter Bezugnahme auf 10 im Block 1002 eine Arbeitsspeicher-Zugriffsroutine gestartet, um auf den Arbeitsspeicher-Speicherort 001000 zuzugreifen. Im Block 1004 befindet sich der PTE für 001000 und wird dort gelesen. Im Block 1005 bestimmt das System 100, ob der PTE gültig ist. Falls nicht, wird im Block 1007 das Betriebssystem aufgerufen, um einen PTE-Fehler zu verarbeiten. Das System 100 bestimmt im Block 1006, ob in dem Markierungsfeld 910 (von 9) eine Markierung gesetzt ist. Falls nicht, wird im Block 1008 die physische Adresse von dem PTE abgerufen, der der virtuellen Adresse zugehörig ist, und die physische Adresse wird an den Prozessor gesendet, um auf den Arbeitsspeicher-Speicherort zuzugreifen. Wenn die Markierung im Block 1010 gesetzt ist, werden die physische Adresse und Attribute und die restlichen Funktions-Bits von allen PTEs abgerufen, die der virtuellen Adresse zugehörig sind, und an den Prozessor gesendet, um auf den Arbeitsspeicher-Speicherort zuzugreifen. Obwohl die veranschaulichten Ausführungsformen ein System beschreiben, das 8-KB-Blöcke mit zwei zusammenhängenden Einträgen verwendet, können alternative Ausführungsformen jede geeignete Arbeitsspeicheranordnung bzw. jede Methode verwenden, die Blöcke einer beliebigen geeigneten Größe und einer geeigneter Anzahl von Einträgen haben. In einer beispielhaften Ausführungsform wird die Anzahl von Einträgen durch Schreiben in ein Konfigurationsregister (nicht gezeigt) angegeben. In einer weiteren Ausführungsform gibt ein Feld in dem PTE 901 die Anzahl von Einträgen an.
-
Obwohl die Ausführungsformen hierin so beschrieben wurden, dass sie mehrere benachbarte separate PTEs durch PTEs, die als Mitglieder eines virtuellen Adressblocks markiert sind, in Antwort auf ein Erfassen ersetzen, dass mehrere Einträge in virtuellen und physischen Arbeitsspeicherbereichen benachbart sind und somit durch einen allgemeinen Hardware-Umsetzungseintrag umgesetzt werden können, wird in Betracht gezogen, dass in mindestens einer Ausführungsform und einem Betriebssystem Arbeitsspeicher-Zuordnungs-Pools verwendet werden, die virtuellen Adressblöcken entsprechen. Gemäß einer derartigen Ausführungsform ordnet das Betriebssystem einen virtuellen Adressblock in Antwort auf Arbeitsspeicheranforderungen durch Software zu, die auf einem System läuft. Wenn ein virtueller Adressblock zugeordnet wird, installiert das Betriebssystem sofort eine Vielzahl von Seitentabelleneinträgen PTEs, die als Mitglieder eines virtuellen Adressblocks markiert sind.
-
11 veranschaulicht eine beispielhafte Ausführungsform eines Computerprogrammprodukts 1100, das ein durch einen Computer verwendbares/lesbares Medium 1102 mit einer darauf geschriebenen Programmcodelogik 1104 enthält.
-
Die technischen Auswirkungen und Vorteile der oben beschriebenen Verfahren und Systeme ermöglichen es, große Seiten direkt in der Hardware des Systems zu verwalten, sodass das Betriebssystem keine Verwaltung von großen Seiten auf Betriebssystemebene integrieren muss. Somit kann eine umfangreichere Verwendung des TLB erreicht werden, da eine bestimmte Anzahl von TLB-Einträgen einen größeren Adressraum umsetzen kann.
-
Wie einem Fachmann klar sein wird, können Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung in der Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform vorliegen, die Software- und Hardware-Aspekte kombiniert, auf die alle hierin allgemein als „Schaltung“, „Modul“ oder „System“ Bezug genommen werden kann. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien mit einem darin ausgeführten computerlesbaren Programmcode verkörpert ist.
-
Jede Kombination von einem oder mehreren computerlesbaren Medien kann verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann zum Beispiel ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine derartige Vorrichtung oder Einheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu spezielleren Beispielen (eine nicht erschöpfende Liste) für das computerlesbare Speichermedium würde Folgendes zählen: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer CD-ROM, eine optische Speichereinheit, eine Magnetspeichereinheit oder jede geeignete Kombination des Vorgenannten. In dem Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes konkrete Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung enthalten oder speichern kann.
-
Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal mit einem darin verkörperten computerlesbaren Programmcode enthalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein derartiges verbreitetes Signal kann jede einer Vielfalt von Formen annehmen, unter anderem elektromagnetisch, optisch oder jede geeignete Kombination davon, es ist aber nicht darauf beschränkt. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Anweisungsausführung übertragen, verbreiten oder transportieren kann.
-
In einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes geeigneten Mediums übertragen werden, unter anderem drahtlos, drahtgebunden, über ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination des Vorgenannten, er ist aber nicht darauf beschränkt.
-
Computerprogrammcode für ein Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in jeder Kombination von einer oder mehreren Programmiersprachen geschrieben werden, einschließlich einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmlichen prozeduralen Programmiersprachen wie der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden werden, einschließlich ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Nutzung eines Internet-Dienstanbieters).
-
Aspekte der vorliegenden Erfindung werden im Folgenden unter Bezugnahme auf Veranschaulichungen eines Ablaufplans und/oder von Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern und Kombinationen von Blöcken in den Veranschaulichungen von Ablaufplänen und/oder den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können für einen Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder andere Vorrichtungen, die programmierbare Daten verarbeiten, ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen erstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsgegenstand erzeugen, einschließlich Anweisungen, die die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegebene Funktion/Handlung umsetzen.
-
Die Computerprogrammanweisungen können auch auf einen Computer, eine andere Vorrichtung, die programmierbare Daten verarbeitet, oder andere Einheiten geladen werden, um die Ausführung einer Serie von Arbeitsschritten auf dem Computer, einer anderen Vorrichtung, die programmierbare Daten ausführt, oder anderen Einheiten zu veranlassen, um einen über den Computer umgesetzten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Handlungen bereitstellen, die in dem Ablaufplan und/oder dem Block oder den Blöcken des Blockschaubilds angegeben sind.
-
Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. Diesbezüglich kann jeder Block in dem Ablaufplan oder in den Blockschaubildern ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Umsetzen der angegebenen logischen Funktion(en) aufweist. Es ist ebenfalls anzumerken, dass in einigen alternativen Umsetzungen die in dem Block angegebenen Funktionen in einer anderen Reihenfolge auftreten können als in den Figuren angegeben. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es wird ebenfalls angemerkt, dass jeder Block in den Blockschaubildern und/oder in der Veranschaulichung des Ablaufplans und Kombinationen von Blöcken in den Blockschaubildern und/oder der Veranschaulichung des Ablaufplans durch spezielle Systeme auf der Grundlage von Hardware, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen umgesetzt werden können.