-
TECHNISCHES GEBIET
-
Ausführungsbeispiele
der Erfindung beziehen sich auf das Gebiet von Computer und insbesondere,
nicht aber ausschließlich,
virtuelle Übersetzungspuffer.
-
HINTERGRUND
-
Moderne
Computer nutzen virtuelle Speicher. Virtuelle Speicher erlauben
es, dass der Speicheradressraum eines Computersystems größer ist als
der verfügbare
physikalische Speicherraum. Teile der Programme und der Daten, die
gegenwärtig
in Verwendung sind, können
in dem Speicher gehalten werden, während nicht verwendete Teile
auf einer Platte gespeichert werden, bis sie benötigt werden.
-
Die
Beziehung virtueller Adressen zu physikalischen Adressen können unter
Verwendung von Seitentabellen verwaltet werden. Seitentabellen werden
verwendet, um Speicher in Einheiten von Seiten zu beeinflussen.
Die Übersetzung
zwischen virtuellen Adressen und physikalischen Adressen kann von einer
Memory Management Unit (MMU) durchgeführt werden.
-
Die
Verwendung kann einen Translation Lookaside Buffer (TLB) (Übersetzungspuffer)
verwenden, der Adressinformation bezüglich der Seiten, auf die gerade
Zugriff genommen worden ist, speichert. Der TLB kann die Ausführungszeit
erhöhen,
da die MMU schneller eine Adressinformation von dem TLB als von
Seitentabellen gewinnen kann. Bei der heutigen Ausbildung von Speichern
verringert ein TLB Fehler das Betriebsverhalten von Computersystemen.
-
KURZE ERLÄUTERUNG DER ZEICHNUNGEN
-
Nicht
begrenzende und nicht erschöpfende Ausführungsbeispiele
der vorliegenden Erfindung werden unter Bezugnahme auf die nachfolgenden
Figuren beschrieben, wobei gleiche Bezugszeichen in den verschiedenen
Ansichten einander entsprechende Teile angeben, wenn dies nicht
anders angegeben ist.
-
1 ist
ein Diagramm, das ein Computersystem mit einem virtuellen TLB in Übereinstimmung mit
einem Ausführungsbeispiel
der Erfindung zeigt.
-
2 ist
ein Diagramm, das das Kompilieren eines Bytecodeverfahrens in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung zeigt.
-
3 ist
ein Diagramm, das das Ausführen eines
kompilierten Bytecodeverfahrens in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung zeigt.
-
4 ist
ein Diagramm, das das Ausführen eines
kompilierten Bytecodeverfahrens in Übereinstimmung mit einem Ausführungsbeispiel
der vorliegenden Erfindung zeigt.
-
5 ist
ein Flussdiagramm, das die Logik und Operationen eines virtuellen
TLB in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung zeigt.
-
6 ist
ein Diagramm, das einen virtuellen TLB in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung zeigt.
-
7 ist
ein Diagramm, das ein virtuelles TLB in Übereinstimmung mit einem Ausführungsbeispiel
der Erfindung zeigt.
-
8 zeigt
Ausführungsbeispiele
eines Computersystems zum Implementieren von Ausführungsbeispielen
der Erfindung.
-
EINGEHENDE BESCHREIBUNG
-
In
der nachfolgenden Beschreibung werden verschiedene spezifische Einzelheiten
wiedergegeben, um ein vollständiges
Verständnis
der Beispiele der Erfindung zu ermöglichen. Der Fachmann wird
jedoch erkennen, dass Ausführungsbeispiele
der Erfindung ohne ein oder mehrere der spezifischen Einzelheiten
verwirklicht werden kann, oder aber mit anderen Verfahren, Komponenten,
Materialien usw. In anderen Beispielen sind allgemein bekannte Strukturen,
Materialien oder Operationen nicht gezeigt oder in ihren Einzelheiten
beschrieben, um das Verständnis
dieser Beschreibung nicht zu erschweren.
-
In
dieser Beschreibung bedeutet „ein
Ausführungsbeispiel" oder „das Ausführungsbeispiel", dass ein bestimmtes
Merkmal oder eine Struktur oder eine beschriebene Eigenschaft in
Verbindung mit dem Ausführungsbeispiel
in wenigstens einem Ausführungsbeispiel
der vorliegenden Erfindung vorhanden ist. Das Auftreten der Ausdrücke „in einem
Ausführungsbeispiel" oder „in dem
Ausführungsbeispiel" an verschiedenen
Orten in dieser Beschreibung bezieht sich nicht notwendigerweise
immer auf dasselbe Ausführungsbeispiel.
Die bestimmten Merkmale, Strukturen oder Eigenschaften können in
jeder geeigneten Weise in einem oder mehreren Ausführungsbeispielen
kombiniert sein.
-
In
der nachfolgenden Beschreibung oder den Ansprüchen kann der Ausdruck „gekoppelt" und seine Ableitungen
verwendet werden. „Gekoppelt" kann bedeuten, dass
zwei oder mehrere Elemente in direktem Kontakt (physikalisch, elektrisch,
magnetisch, optisch usw.) sind. „Gekoppelt" kann auch meinen, dass zwei oder mehr
Elemente nicht in direktem Kontakt miteinander sind, jedoch miteinander
zusammenwirken oder interagieren.
-
Es
wird jetzt auf 1 Bezug genommen, in der ein
Computersystem 100 in Übereinstimmung
mit einem Ausführungsbeispiel
der Erfindung gezeigt ist. Das Computersystem 100 weist
ein Prozessor 101 auf, der mit dem Speicher 102 über einen
Bus 104 gekoppelt ist. Ausführungsbeispiele eines Computersystems 100 können ein
mobiles Gerät,
etwa ein mobiles Telefon, einen PDA (Personal Digital Assistant), ein
Abspielgerät
oder ein ähnliches
Gerät mit
einer in dem Gerät
befindlichen Verarbeitungsfähigkeit
und der Fähigkeit
zur drahtlosen Kommunikation, die von einer Batterie gespeist wird,
aufweisen. Weitere Ausführungsbeispiele
eines Computersystems sind unten in Verbindung mit 8 beschrieben.
Bei einem Ausführungsbeispiel
kann der Prozessor 101 mit einer Intel® XScaleTM Kernarchitektur übereinstimmen. Während Ausführungsbeispiele
der Erfindung hier in Bezug auf einen XScaleTM Kern
beschrieben worden sind, versteht es sich, dass Ausführungsbeispiele hier
in verschiedenen Prozessorausbildungen implementiert sein können. Komponenten
des unten beschriebenen Prozessors 101 können miteinander über einen
oder mehrere Busse (nicht gezeigt) gekoppelt sein. Andere Komponenten
des Prozessors 101, etwa Puffer, ein Leistungsmanagement
Controller, eine Fehlersucheinheit usw. sind aus Gründen der
Klarheit nicht gezeigt.
-
Der
Prozessor 101 weist einen Instruktionscache 106 zum
Speichern lokaler Kopien von Instruktionen auf. Der Prozessor 101 weist
einen Datencache 108 zum Speichern von lokalen Kopien von
Daten und einen Mini-Datencache 101 zum Vermeiden einer
Zerstörung
des Datencache 108 für
einen häufigen
Datenaustausch auf.
-
Der
Prozessor 101 kann einen Ausführungskern 122 zum
Ausführen
von Befehlen aufweisen. Ein Befehl kann einen Mikrobefehl oder dergleichen beinhalten.
Bei einem Ausführungsbeispiel
kann der Prozessor 101 in Übereinstimmung mit einem Advanced
RIC (Reduced Instruction Set Computer) Maschinen (ARM®) Befehlssatz
einschließlich
Thumb (T) odser Long Multiply (M) Varianten ausführen.
-
Bei
einem Ausführungsbeispiel
weist der Prozessor 101 eine Intel® XScaleTM Kernarchitektur auf, die einen ARM® Befehlssatzversion
5TE ausführen
kann. Der Prozessor 101 kann Register 124 zum Halten
von Befehlen oder Daten beinhalten.
-
Der
Prozessor 101 kann eine Instruction Management Unit (IMMU) 112 mit
einem Instruktions-TLB (TLB) 118 beinhalten. Eine Datenspeicher Management
Unit (DMMU) 114 kann ein Daten-TLB (DTLB) 120 aufweisen.
Bei einem Ausführungsbeispiel
wird die IMMU 112 bei der Adressenübersetzung für Befehlszugriffe
verwendet, während
die DMMU 114 bei der Adressenübersetzung von Datenzugriffen
verwendet wird. Der Begriff „Zugriff", wie er hier verwendet
wird, kann ein Lesen oder ein Schreiben beinhalten.
-
Bei
einem Ausführungsbeispiel
kann ITLB 118 und DTLB 120 strukturiert sein als
ein virtuelles TLB (VTLB) 116. Hier beschriebene Ausführungsbeispiele
liefern eine Nachschlagadressinformation im ITLB 118 und
DTLB 120 simultan, um TLB Fehler zu reduzieren und infolgedessen
die Arbeitsleistung des Systems zu erhöhen.
-
Wenn
eine MM, etwa die IMMU 112 oder DMMU 114, eine
virtuelle Adresse für
die Übersetzung
empfängt,
kann die MMU zunächst
in der virtuellen TLB 116 suchen, um die entsprechende
physikalische Adresse zu bestimmen. Die MMU kann eine Übersetzungsanforderung
in Antwort auf eine Speicherzugriffsanforderung empfangen. Bei einem
Ausführungsbeispiel
teilen die IMMU 112 und DMMU 114 den Zugriff auf
den Virtual TLB 116.
-
Wenn
der Virtual TLB 116 nicht die notwendige Seiteninformation
zur Übersetzung
beinhaltet (bezeichnet als ein TLB-Fehler) kann die MMU ein Seitentabellennachschlagen
initiieren. Ein Seitentabellennachschlagen verwendet eine oder mehrere
Seitentabellen zum Bestimmen der physikalischen Adresse entsprechend
einer virtuellen Adresse. Wenn ein TLB-Fehler auftritt, kann die
Information von der oder die Seitentabelle(n) verwendet werden, um
den virtuellen TLB 116 aufzufrischen, so dass der virtuelle
TLB 116 eine Information bezüglich der gerade nachgeschlagenen
Seiten beinhaltet. Bei einem Ausführungsbeispiel werden wenigstens
ein Teil einer oder mehrerer Tabellenseiten in dem Speicher 102 gespeichert.
Die verbleibenden Seitentabellenteile (wenn gegeben) können lokal
gespeichert werden, etwa auf einer Festplatte. Bei einem Ausführungsbeispiel
weist eine virtuelle Adresse eine virtuelle Seitenzahl und einen
Offset auf. Der Offset wird zum Identifizieren einer bestimmten
Adresse mit der virtuellen Seite verwendet. Der virtuelle TLB 116 kann
eine physikalische Seitenzahl speichern, die einer gegebenen Seitenzahl
entspricht. Bei einem Ausführungsbeispiel
sind eine virtuelle Seite und eine physikalische Seite gleich groß, etwa,
ohne darauf begrenzt zu sein, 512 Bytes, 4 Kilobytes (KB), 64 KB oder ähnlich.
Ein MMU kann den Offset (vorgesehen in der virtuellen Adresse) mit
der Basisadresse der physikalischen Seitenzahl kombinieren, um die
physikalische Adresse zu bestimmen.
-
Beispielsweise
kann eine virtuelle Adresse 8020 eine virtuelle Seitenzahl 1 (mit
einer Basisadresse von 8000) und Offset 20 beinhalten. Die virtuelle
Seitenzahl kann zur physikalischen Seite 5 übersetzen (die eine Basisadresse
von 10000 hat). Die physikalische Adresse übersetzt so zu 10020 (Basisadresse
10000 + Offset 20).
-
Bei
anderen Ausführungsbeispielen
können die
TLB Eingänge
eine andere Information, etwa ein Seitenmodifikationsfeld halten,
um anzugeben, ob die Seite modifiziert worden ist, ob ein gültiges Feld zum
Angeben der Seite in Verwendung ist, ob ein Schutzfeld zum Angeben
von Lese-/Schreibeinstellungen der Seiten, ein Prozessidentifikationsfeld
zum Angeben eines Prozesses, der der Seite zugehörig ist, oder dergleichen.
-
Ausführungsbeispiele
der Erfindung können TLB
Fehler reduzieren und das Betriebsverhalten von Managed Runtime
Environment (MRTE) verbessern. Ein Managed Runtime Environment (MRTE) wird
zunehmend in Systemen, etwa tragbaren Geräten wichtig. Gleichzeitig kann
das Laufen eines MRTE auf einem mobilen Prozessor eine Beschränkung des
mobilen Prozessors bewirken.
-
MRTEs
laden dynamisch Codes und führen diese
aus. Der Code und andere bezogene Daten können von Klassendateien geladen
werden. Jede Klassendatei kann eine einzige Klasse beschreiben, die
Klassenvariable und Klassenverfahren beinhaltet. Bei einem Ausführungsbeispiel
definiert eine Klassenvariable einen Datentyp, während ein Klassenverfahren
eine Funktion definiert.
-
Ein
MRTE erlaubt Anwendungsprogramme aufzubauen, die auf jeder Plattform
laufen können, ohne
dass diese für
jede bestimmte Plattform neu zu beschreiben oder neu zu kompilieren
ist. Der MRTE Code kann kompiliert werden zum Erzeugen eines Bytecodes.
Der Bytecode ist ein von der Maschine unabhängiger Code. Bei der Ausführung wird
der Bytecode in einen Maschinencode für eine Zielplattform konvertiert
einfach durch einen Just-In-Time (JIT) Compiler, der auf der Plattform
des Verwenders arbeitet. Der Plattformprozessor kann sodann den kompilierten
Bytecode ausführen.
Der JIT Compiler kennt die spezifischen Befehle und andere Besonderheiten
des Plattformprozessors.
-
Ein üblicher
MRTE ist die JAVATM Sprache, die auf einer
Java Virtual Machine (JVMTM) läuft. Bei einem
Ausführungsbeispiel
kann das Computersystem 100 auf einer Java 2 Plattform,
MicroEdition (J2METM) laufen.
-
Zwei
Aspekte der Java Virtual Machine, die auf einem Intel® XScaleTM Plattform läuft, kann zu TLB Fehlern führen: für Hotspot-Implementationen und
wortgetreue Implementationen. Diese Aspekte werden unten in Verbindung
mit den 2–4 beschrieben.
-
Es
wird wieder auf 2 Bezug genommen. Ein Verfahren 202 in
Bytecode wird durch einen JIT Compiler 204 kompiliert.
Der kompilierte Bytecode wird in einem virtuellen Adressraum 204 in
dem kompilierten Codebereich 206 gespeichert. Bei einem Ausführungsbeispiel
weist das Verfahren 202 ein JavaTM Verfahren
und der JIT Compiler 204 weist einen JIT Compiler mit einer
Hot Spot Optimierung, etwa einen JVM JIT Compiler auf.
-
Untersuchungen
haben gezeigt, dass der größte Teil
der Zeit eines Programms bei der Ausführung eines kleinen Teiles
des Codes verbraucht wird, der als Hot Spot bezeichnet wird. Der
JIT Compiler 204 kann den Bytecode analysieren, um zu bestimmen,
wo diese Hot Spots in dem Code sind. Der JET Compiler 204 kann
sodann Optimierungstechniken an den Hot Spots ausführen statt
Zeit zu verschwenden mit dem Versuch, das gesamte Programm zu optimieren.
Weiter kann die Hot Spot Optimierung dynamisch fortgesetzt werden,
wenn das Programm ausgeführt
wird, so dass der JIT Compiler 204 Optimierungstechniken
an neuen Hot Spots anwenden kann.
-
Wenn
das Verfahren kompiliert wird, wird der kompilierte Code als Daten
in den virtuellen Adressraum 205 geschrieben. Das Verfahren 204 kann
als ein Hot Spot identifiziert werden, das heißt, es ist ein „gefährdetes" Verfahren. Der kompilierte
Codebereich 206 wird Seiten 208 des virtuellen
Adressraums 205 angeordnet. Bei dem Ausführungsbeispiel
von 2 ist jede Seite 4 Kilobytes (KB) groß, andere Ausführungsbeispiele
können
andere Seitengrößen verwenden.
Bei einem Ausführungsbeispiel
wird der kompilierte Bytecode in den kompilierten Codebereich 206 eingeschrieben
unter Verwendung eines Store Register (STR) Befehls des ARM Befehlssatzes.
Der STR Befehl wird zum Speichern eines Worts von einem Register
in eine Speicheradresse verwendet.
-
Das
Zugreifen (in diesem Fall „Schreiben") auf den Speicher
führt zu
einem Auffrischen des DTLB 120, wie bei 220 gezeigt.
Da die Seiten 208 als Daten geschrieben sind, werden die
DTLB Einträge 210 der
DTLB 120 mit einer Seiteninformation aufgefrischt, die
den Seiten 208 entspricht. Wie in 2 gezeigt,
hat jede Seite 208 einen entsprechenden Eintrag 210 in
dem DTLB 120.
-
Es
wird jetzt auf 3 Bezug genommen. Wenn das Verfahren 202 durch
den Ausführungskern 122 auszuführen ist,
werden der kompilierte Bytecode (d. h. Befehle) entsprechend dem
Verfahren 202 abgerufen. Bei einem Ausführungsbeispiel hält ein Programmzähler 202 die
Speicheradresse des als nächstes
auszuführenden
Befehls. Der Programmzähler 302 kann
ein Register des Prozessors 100 sein. Nachdem der Befehl,
auf den von dem Programmzähler 302 hingewiesen
worden ist, geholt worden ist, wird der Programmzähler 802 mit
der Speicheradresse für
den als nächstes
zu holenden Befehl aufgefrischt.
-
Die
Befehle werden unter Verwendung des ITLB 118 geholt, wie
in Figur 320 gezeigt. Dieses Holen führt zu TLB Fehlern, da das
ITLB 118 zunächst die
Seiteninformation zur Übersetzung
nicht beinhaltet. Wie in 2 gezeigt, wurde die Seiteninformation
zu dem Kompilierungszeitpunkt in den DTLB 120 eingesetzt.
Wenn der Programmzähler 320 die
IMMU 112 zur Adressübersetzung
währen
des Holens des Befehls aufruft, hält der ITLB 118 nicht
die Seiteninformation und ein TLB Fehler tritt auf.
-
Es
wird auf 4 Bezug genommen. Die Kompilation
von Buchstaben kann ebenfalls zu TLB-Fehlern führen. Kurz gesagt, weist ein
Buchstabe eine Konstante auf, die für ein Verfahren durch Einschluss
in dem ausführbaren
Code verfügbar
ist. Gewöhnlich
ist der Wert der Konstante der Kompilierungszeit konstant. Wenn
ein Kompilierverfahren 202 Schreibfehler hat, können diese
Schreibfehler nicht direkt in der XScaleTM Befehlen
repräsentiert
werden. Diese Schreibfehler können
in den Befehlen als Daten eingemischt sein.
-
In 4 weisen
Seiten 404 in einem virtuellen Adressraum 205 sowohl
Daten als auch Befehle auf. Der ITLB 118 kann eine Seiteninformation
in Eintzrägen 402 entsprechend
den Seiten 404 aufweisen und das DTLB 120 kann
eine Seiteninformation in Einträgen 406 entsprechend
den Seiten 404, die Daten halten, aufweisen.
-
Der
Zugriff auf solche Buchstaben kann DTLB 120 verwenden,
die Befehle können
aber unter Verwendung von ITLB 118 zugreifbar sein. Beispielsweise
ist der ARM Befehl LDR r1, [r5] ein Load Register Befehl zum Laden
des Register r1 mit Daten, die an die Adresse in dem Register r5
gespeichert ist. Die Ausführung
des LDR Befehls wird das Gewinnen eines Befehls bewirken (ITLB 118)
und die Datenadresse bei r5 wird einen Datenzugriff bewirken (DTLB 120),
Auf diese Weise verwendet dieselbe Seite einen DTLB Eintrag und
einen ITLB Eintrag, wenn das Verfahren ausgeführt wird. Zusätzlich können TLB Fehler
bei dem Übersetzen
von virtuellen Adressen für
andere Seiten auftreten, da es weniger verbleibende Einträge in DTLB 120 und
ITLB 118 für
diese anderen Seiten gibt.
-
Es
wird jetzt auf 5 Bezug genommen. Hier ist ein
Flussdiagramm 500 eines Ausführungsbeispiels der Erfindung
gezeigt. Das Flussdiagramm 500 kann unter Verwendung einer
Software, Hardware oder jeder Kombination daraus implementiert werden.
Das Flussdiagramm 500 wird in Bezug auf 6 diskutiert,
es versteht sich jedoch, dass das Flussdiagramm 500 nicht
durch das in 6 gezeigt Ausführungsbeispiel
eingeschränkt
wird.
-
Ausgehend
von Block 502 wird eine virtuelle Seitenzahl (Nachschlaganforderung)
an dem virtuellen TLB empfangen. In 6 wird eine
virtuelle Seitenzahl von dem virtuellen TLB 116 empfangen,
wie bei 610 gezeigt ist. Das Nachschlagen der virtuellen Seitenzahl
kann einen Befehlszugriff oder einen Datenzugriff betreffen.
-
Bei
dem Ausführungsbeispiel
von 6 hat das virtuelle TLB 116 64 TLB Einträge, was
eine Kombination von 32 Einträgen
des ITLB 118 und 32 Einträge des DTLB 120 ist.
Während
das ITLB 118 und das DTLB 120 physikalisch in
dem IMMU 112 beziehungsweise dem DMMU 114 angeordnet
sind, kann das TLB 116 logisch als ein einziges TLB betrachtet
werden. Die zusätzliche
Logik, die als virtuelle TLB Nachschlaglogik 602 gezeigt
ist, bindet das ITLB 118 und das DTLB 120 zusammen
zum Ermöglichen
eines TLB Nachschlagens, das in dem ITLB 118 und dem DTLB 120 zur
selben Zeit auszuführen ist.
Die virtuelle TLB Nachschlaglogik 602 kann als eine Hardware,
Software oder jede Kombination daraus implementiert werden.
-
Fortschreitend
zu einem Block 504 wird ein virtuelles Seitenzahlennachschlagen
in dem virtuellen TLB ausgeführt.
In 6 führt
die virtuelle TLB Nachschlaglogik 602 das Nachschlagen
der virtuellen Seitenzahl in dem DTLB 120 und dem ITLB 118 aus.
Bei einem Ausführungsbeispiel
weist ein Nachschlagen der virtuellen Seitennummer das Suchen der
Eingaben DTLB 120 und ITLB 118 für eine virtuelle
Seitenzahl auf, die mit der virtuellen Seitenzahl der empfangenen
virtuellen Adresse übereinstimmt. Wenn
eine übereinstimmende
virtuelle Seitenzahl gefunden ist, kann das TLB die entsprechende
physikalische Seitennummer erzeugen. Das Nachschlagen der virtuellen
Seitenzahl wird in dem DTLB 120 und dem ITLB 118 gleichzeitig
durchgeführt.
Auf diese Weise wird, wenn die virtuelle Adresse entweder in dem
DTLB 120 oder dem ITLB 118 gefunden wird, ein
TLB Treffer auftreten.
-
In 6 schreitet
die Logik fort zu einem Entscheidungsblock 506, um zu entscheiden,
ob die virtuelle Seitenzahl in dem virtuellen TLB 116 gefunden
worden ist. Wenn die Antwort an den Entscheidungsblock 506 Ja
ist, wird die physikalische Seitenzahl zurückgegeben. Wie in 6 bei 612 gezeigt, kann
die physikalische Seitenzahl durch das virtuelle TLB 116 in
dem Fall eines TLB Treffers rückgegeben werden.
Bei einem Ausführungsbeispiel
wird die MMU (IMMU 112 oder DMMU 114) die das
Nachschlagen der virtuellen Seitenzahl verlangt, die zurückgegebene
physikalische Seitenzahl zum Übersetzen
der virtuellen Adresse in eine physikalische Adresse verwenden.
-
Wenn
die Antwort an dem Entscheidungsblock Nein ist, schreitet die Logik
zu einem Block 510 fort zum Ausführen eines Nachschlagens einer
Seitentabelle in einem oder mehreren Seitentabellen. Bei einem Ausführungsbeispiel
wird das Nachschlagen der Seitentabelle durch ein Betriebssystem durchgeführt.
-
Sodann
wird in einem Entscheidungsblock 512 die Logik bestimmen,
ob die verlangte Seite Daten oder einen Befehl(e) beinhaltet. Wenn
die Seite einen Befehl(e) hält,
setzt die Logik bei einem Block 514 fort zum Auffrischen
des ITLB. Wenn die Seite Daten hält,
setzt die Logik bei einem Block 516 zum Auffrischen des
DTLB fort.
-
Bei
einem Ausführungsbeispiel
bestimmt die Logik des Entscheidungsblocks 512, ob der
Zugriff auf Daten oder auf einen Befehl war wie folgt. Wenn die
Speicheradressenanforderung von dem Programmzählerregister kam, war der Zugriff
auf einen Befehl. In einem Intel® XScaleTM Ausführungsbeispiel kann
der Speicher in einem Register 15 (r15) beibehalten werden.
-
In
dem Fall eines Datenzugriffs erfolgt der Datenzugriff durch den
spezifischen Befehl selbst, etwa einem LDR oder STR. Felder derartiger
Befehle, die die Datenadresse beinhalten, werden ein Register angeben,
das nicht das Programmzählerregister
ist. Beispielsweise ist, wie oben beschrieben, der ARM Befehl LDR
r1, [r5] ein Load Register Befehl zum Laden des Registers r1 mit
Daten, die an der Adresse in Register r5 gespeichert sind. Die Logik wird
realisieren, dass der Zugriff von dem Befehl selbst unter Verwendung
eines anderen Register als des Programmzählerregisters erfolgt und der
Zugriff daher ein Datenzugriff ist.
-
Das
Auffrischen eines TLB kann das Ersetzen (wie durch Überschreiben)
eines gegenwärtigen Eintrags
des TLB mit einer Information von dem Speichertabellen nachschlagen
einschließen.
Der TLB speichert die virtuelle Seitenzahl und die entsprechende
physikalische Seitenzahl der gerade zugegriffenen Seiten. Der Begriff „Zugriff", wie er hier verwendet
wird, schließt
das Lesen oder das Schreiben ein.
-
Bei
einem Ausführungsbeispiel
kann das ITLB 116 und das DTLB 120 aufgefrischt
werden unter Verwendung eines Round-Robin-Algorithmus. Bei einem
Ausführungsbeispiel
beinhaltet der Round-Robin Algorithmus einen Zeiger auf den nächsten TLB Eintrag,
der zu ersetzen ist. Der nächste
TLB Eintrag, der zu ersetzen ist, ist der TLB Eintrag, der sequentiell
dem letzten TLB Eintrag, der geschrieben worden ist, folgt. Wenn
der Zeiger den letzten TLB Eintrag erreicht, kann der Zeiger zurückkehren
zu dem ersten TLB Eintrag.
-
Es
wird jetzt auf 7 Bezug genommen, in der ein
Ausführungsbeispiel
der vorliegenden Erfindung gezeigt ist. 7 zeigt
eine Rechnerumgebung mit einer Hardwareebene 702 und einer
Softwareebene 704. Es versteht sich, dass alternative Ausführungsbeispiele
der Hard wareebene 702 oder der Softwareebene 704 zum
Implementieren eines virtuellen TLB, wie es hier beschrieben worden
ist, verwendet werden kann.
-
Eine
virtuelle Adresse 706 wird an einem MMU, etwa dem IMMU 112 oder
dem DMMU 114 zum Übersetzen
empfangen. Die virtuelle Adresse 706 kann einen Process
Identifier (PID), eine Virtual Page Number (VPN) und einen Offset
beinhalten. Der PID wird verwendet, um den Speicheradressraum zwischen
unterschiedlichen Prozessen zu unterscheiden. Der VPN ist für das virtuelle
TLB 116 zum Nachschlagen vorgesehen.
-
7 zeigt
ein Ausführungsbeispiel
des DTLB 120 und ITLB 118. Das DTLB 120 weist
32 TLB Einträge
auf. Die Einträge,
die in Figur 708 gezeigt sind, weisen PIDs und VPNs auf.
Das DTLB 120 weist auch Einträge auf, gezeigt bei 712,
die Physical Page Numbers (PPNs) entsprechend den PIDs und VPNs
bei 708 entsprechen. Das ITLB 118 weist entsprechend
32 TLB Einträge
auf. Die bei 714 gezeigten Einträge weisen PIDs und VPNs auf
und die bei 718 gezeigten Einträge weisen entsprechende PPNs auf.
-
Bei
einem TLB Nachschlagen, wird der VPN mit den VPNs in dem DTLB 120 unter
Verwendung eines Comparator (CMP) 710 und mit den VPNs
in ITLB 118 unter Verwendung des CMP 716 verglichen.
Wenn die empfangene VPN entweder in dem DTLB 120 oder in
ITLB 118 gefunden wird, können entsprechende PPN identifiziert
werden.
-
Die
DTLB 120 und die ITLB 118 geben an, wenn die empfangene
VPN in einem der TLB gefunden worden ist. Wenn die VPN gefunden
worden ist, wird die physikalische Adressübersetzung der empfangenen
virtuellen Adresse von dem MMU (DMMU 112 und IMMU 114)
durchgeführt.
Wenn die empfangene VPN weder in dem DTLB 120 noch in dem
ITLB 118 gefunden worden ist, wird ein TLB-Fehler durch den
virtuellen TLB 116 angegeben.
-
Wie
in 7 gezeigt ist, erzeugt sowohl der DTLB 120 als
auch der ITLB 118 jeweils Angaben an ein OR-Gatter 720,
die angeben, ob ein VPN erzeugt worden ist, und zwar ein logisches „1", wenn das VPN gefunden
worden ist und ein logisches „0", wenn das VPN in
den jeweiligen TLBs nicht gefunden worden ist. Das OR-Gatter 720 gibt
ein logisches „1" aus, wenn die VPN
entweder in dem DTLB 120 oder dem ITLB 118 gefunden
worden ist. In die sem Fall wird die PPN entsprechend der VPN mit
dem Offset von der virtuellen Adresse zur Bildung einer physikalischen Adresse 720 kombiniert.
-
Wenn
weder das DTLB 120 noch das ITLB 118 den VPN gespeichert
haben, wird das OR-Gatter 720 ein
logisches „0" ausgeben, um einen
TLB-Fehler anzugeben. Der TLB-Fehler wird das OS 722 veranlassen,
eine Seitentabellen-Lesung (d. h. ein Nachschlagen) zu führen, wie
in Figur 724 gezeigt, um die PPN zu finden, die dem VPN
entspricht. Nach dem Lesen der Seitentabelle 724 wird die
Softwareebene zu einem Entscheidungsblock 726 fortschreiten.
-
In
dem Entscheidungsblock 726 bestimmt die Logik, ob eine
virtuelle/physikalische Adresse ein Befehlsadressenzugriff ist oder
ein Datenadressenzugriff. Wenn der Adressenzugriff eine Datenadresse ist,
schreitet die Logik zu einem Block 728 fort, um den DTLB 120 unter
Verwendung eines Round-Robin-Algorithmus aufzufrischen. Wenn der
Adressenzugriff ein Befehlszugriff ist, schreitet die Logik zu einem
Block 730 fort, um das ITLB 118 unter Verwendung
eines Round-Robin-Algorithmus aufzufrischen.
-
Ausführungsbeispiele
der vorliegenden Erfindung schaffen ein virtuelles TLB, das ein
ITLB und ein DTLB einschließt.
Ein TLB Nachschlagen für
eine physikalische Seitenzahl entsprechend einer gegebenen virtuellen
Seitenzahl kann gleichzeitig an dem ITLB und dem DTLB durchgeführt werden.
Ausführungsbeispiele
der Erfindung können
implementiert sein auf einer Intel® XScaleTM Plattform, die ein MRT abfährt, etwa
JVMTM zum Verbessern der Systemleistung
aufgrund weniger TLB-Fehler.
-
AUSFÜHRUNGSBEISPIELE EINES RECHNERSYSTEMS
-
8 zeigt
Ausführungsbeispiele
eines Computersystems 800, auf dem Ausführungsbeispiele der vorliegenden
Erfindung implementiert werden können.
Das Computersystem 800 weist einen Prozessor 802 und
einen Speicher 804 auf, die mit einem Chipsatz 808 gekoppelt
sind. Der Massenspeicher 812, der Nicht-Flüchtige Speicher
(NVS) 806, die Netzwerkschnittstelle (I/F) 814 und
das Eingabe-/Ausgabe (I/O) 818 können ebenfalls mit dem Chipsatz 808 gekoppelt
sein. Ausführungsbeispiele eines
Computersystems 800 weisen, ohne darauf begrenzt zu sein,
einen Desktoprechner, einen Notebookrechner, einen Surfer ein mobiles
Gerät,
etwa ein Pocket Personal Computer (PC), ein mobiles Telefon, ein
Abspielgerät
oder dergleichen auf. Bei einem Ausführungsbeispiel weist das Computersystem 800 einen
Prozessor 802 auf, der mit dem Speicher 804 gekoppelt
ist, wobei der Prozessor 802 Befehle ausführt, die
in dem Speicher 804 gespeichert sind. Der Prozessor 802 kann
Ausführungsbeispiele
des virtuellen TLB 116 beinhalten, wie hier beschrieben.
-
Der
Prozessor 802 kann, ohne darauf begrenzt zu sein, ein Intel® Corporation
x86, Pentium®, XScaleTM Familienrechner oder dergleichen aufweisen.
Bei einem Ausführungsbeispiel
kann das Computersystem 800 mehrere Prozessoren aufweisen. Bei
einem weiteren Ausführungsbeispiel
kann der Prozessor 802 zwei oder mehr Prozessorkerne aufweisen.
-
Der
Speicher 804 kann, ohne darauf begrenzt zu sein, einen
Dynamic Random Access Memory (DRAM), ein Static Random Access Memory (SRAM),
ein Synchronized Dynamic Random Access Memory (SDRAM) oder dergleichen
aufweisen. Bei einem Ausführungsbeispiel
kann der Speicher 804 eine oder mehrere Speichereinheiten
aufweisen, die nicht aufzufrischen sind.
-
Der
Chipsatz 808 kann einen Speichercontroller, etwa ein Memory
Controller Hub (MCH), einen Eingabe-/Ausgabecontroller, etwa einen
Input/Output Controller Hub (ICH) oder dergleichen aufweisen. Bei einem
alternativen Ausführungsbeispiel
kann der Speichercontroller 804 in denselben Chip wie der Prozessor 802.
Der Chipsatz 808 kann auch eine Eingangssystemtaktsystemunterstützung, eine
Leistungsmanagementunterstützung,
eine Audiounterstützung,
eine Graphikunterstützung
oder dergleichen aufweisen. Bei einem Ausführungsbeispiel ist der Chipsatz 808 mit
einer Platine gekoppelt, die Stecker für den Prozessor 802 und
den Speicher 804 aufweist.
-
Komponenten
des Computersystems 800 können durch verschiedene Verbindungen
verbunden sein, etwa einem Bus. Bei einem Ausführungsbeispiel kann eine Verbindung
Punkt-zu-Punkt zwischen
zwei Komponenten sein, bei anderen Ausführungsbeispielen kann die Verbindung
mehr als zwei Komponenten verbinden. Solche Verbindungen können ein
Peripheral Component Interconnect (PCI), wie ein PCI Express, ein
System Management Bus (SMBUS), ein Low Pin Count (LPC) Bus, ein
Serial Peripheral Interface (SPI) Bus, eine Accelerated Graphic
Port (AGP) Schnittstelle aufweisen. Die I/O Gerät 818 kann eine Tastatur,
eine Maus, ein Display, einen Drucker, einen Scanner oder dergleichen
aufweisen.
-
Das
Rechnersystem kann 800 kann mit externen Systemen verbinden über eine
Netzwerkschnittstelle 814 unter Verwendung einer verdrahteten
Verbindung, einer drahtlosen Verbindung oder jeder Kommunikation
daraus. Die Netzwerkschnittstelle 814 kann, ohne darauf
begrenzt zu sein, ein Modem, eine Network Interface Card (NIC) oder
dergleichen aufweisen. Ein Trägerwellensignal 822 kann empfangen/übertragen
werden von der Netzwerkschnittstelle 814. Bei dem in 8 gezeigten
Ausführungsbeispiel
wird das Trägerwellensignal 822 verwendet
zum Verbinden des Computersystems 800 mit einem Netzwerk 824,
etwa einem Local Area Network (LAN) zu einem Wide Area Network (WAN), dem
Internet oder jeden Kombination daraus. Bei einem Ausführungsbeispiel
ist das Netzwerk 824 weiter mit einem Computersystem 824 gekoppelt
derart, dass das Computersystem 800 das und das Computersystem 826 über das
Netzwerk 824 kommunizieren können.
-
Das
Computersystem 800 kann ein Modul zur drahtlosen Kommunikation
aufweisen. Das Modul zur drahtlosen Kommunikation kann ein Wireless Application
Protocol verwenden zum Erstellen eines drahtlosen Kommunikationskanals.
Das Modul zur drahtlosen Kommunikation kann einen drahtlosen Netzwerkstandard
implementieren wie dem Institute of Electrical and Electronics Engineers
(IEEE) 802.11 Standard, IEEE std. 802.11-1999, das von dem IEEE 1999
veröffentlicht
worden ist.
-
Das
Computersystem 800 weist weiter einen nicht-flüchtigen
Speicher 806 auf, auf dem eine Firmware gespeichert sein
kann. Nicht-flüchtige
Speichereinheiten weisen, ohne darauf begrenzt zu sein, ein Read-Only
Memory (ROM), einen Flash Speicher, einen Erasable Programmable
Read Only Memory (EPROM), einen Electronically Erasable Programmable
Read Only Memory (EEPROM), ein Non-Volatile Random Access Memory
(NVRAM) oder dergleichen auf.
-
Der
Massenspeicher 812 weist, ohne darauf begrenzt zu sein,
eine magnetische Platte, etwa eine Festplatte, eine Magnetbandaufzeichnung,
eine optische Platte oder dergleichen auf. Es ist berücksichtigt,
dass die Befehle, die von dem Prozessor 802 ausführbar sind,
in dem Massenspeicher 812, dem Speicher 804, dem
nicht-flüchtigen
Speicher 806 angeordnet sein können oder übertragen oder empfangen werden
können über die
Netzwerkschnittstelle 814.
-
Bei
einem Ausführungsbeispiel
kann das Computersystem 800 ein Betriebssystem (OS) ausführen. Ausführungsbeispiele
eines OS weisen Microsoft Windows®, das
Apple Macintosh® Betriebssystem,
das Linux® Betriebssystem,
das Unix® oder
dergleichen auf.
-
Für die Zwecke
dieser Beschreibung weist ein maschinenlesbares Medium jeden Mechanismus auf,
der Information in einer Form, die von der Maschine (beispielsweise
einem Rechner, einer Netzwerkeinheit, einem Personal Digital Assistant,
einem Herstellungswerkzeug, jedes Gerät mit einem Satz von einem
oder mehreren Prozessoren usw.) schafft (d. h. speichert oder überträgt). Beispielsweise
weist ein maschinenlesbares Medium ohne darauf begrenzt zu sein,
ein beschreibbares/nicht-beschreibbares Medium (beispielsweise ein
Read-Only Memory (ROM), Random Access Memory (RAM), magnetisches
Plattenspeichermedium, optisches Speichermedium, eine Flash-Speicher
Einheit usw. auf.) Zusätzlich
kann ein maschinenlesbares Medium voranschreitende Signale wie elektrische,
optische, akustische oder andere Formen von voranschreitenden Signalen
aufweisen. (beispielsweise Trägerwellen,
Infrarotsignale, digitale Signale usw.).
-
Verschiedene
Arbeitsweisen von Ausführungsbeispielen
der vorliegenden Erfindung werden hier beschrieben. Diese Operationen
können
implementiert werden unter Verwendung einer Hardware, Software oder
jede Kombination daraus. Diese Operationen können implementiert werden durch
eine Maschine unter Verwendung eines Prozessors, eines Application
Specific Integrated Circuit (ASIC), einem Field Programmable Gate
Array (FPGA), oder dergleichen. Bei einem Ausführungsbeispiel können eine
oder mehrere der beschriebenen Operationen Befehle geben, die auf
einem maschinenlesbaren Medium gespeichert werden, die bei einer
Ausführung
durch die Maschine die Maschine dazu veranlassen, die beschriebenen
Operationen auszuführen. Die
Reihenfolge, in der einige oder alle der Operationen beschrieben
worden sind, bedeutet nicht, dass diese Operationen notwendigerweise
von der Reihenfolge abhängen.
Eine alternative Reihenfolge versteht sich für den Fachmann, der diese Beschreibung gelesen
hat. Es versteht sich weiter, dass nicht alle Operationen notwendigerweise
in jedem Ausführungsbeispiel
der Erfindung vorhanden sind.
-
Die
obige Beschreibung der dargestellten Ausführungsbeispiele der Erfindung,
einschließlich dessen,
was in der Zusammenfassung beschrieben worden ist, soll nicht abschließend sein
oder die Ausführungsbeispiele
auf die genaue offenbarte Form beschränken. Obwohl bestimmte Ausführungsformen
von und Beispiele der Erfindung hier beschrieben worden sind zum
Zwecke der Illustration, sind äquivalente
Abwandlungen möglich,
wie der Fachmann erkennen wird. Diese Modifikationen können bei
Ausführungsbeispielen
der Erfindung im Lichte der obigen eingehenden Beschreibung gemacht
werden. Die in den nachfolgenden Ansprüchen verwendeten Begriffe sollten
nicht verstanden werden als die Erfindung auf die bestimmten Ausführungsbeispiele, die
in der Beschreibung offenbart sind, zu begrenzen. Die nachfolgenden
Ansprüche
sind formuliert in Entsprechung mit den anerkannten Regeln der Anspruchsinterpretation.
-
ZUSAMMENFASSUNG
-
Eine
virtuelle Seitenzahl-Nachschlaganforderung wird von einem virtuellen
Translation Lookaside Buffer TLB empfangen, wobei die virtuelle
TLB eine Befehls-TLB oder eine Daten-TLB aufweist. Ein Nachschlagen der virtuellen
Seitenzahl in dem virtuellen TLB wird ausgeführt. Eine physikalischen Seitenzahl
entsprechend der virtuellen Seitenzahl in dem virtuellen TLB wird
ausgegeben.