-
ALLGEMEINER STAND DER TECHNIK
-
GEBIET DER ERFINDUNG
-
Diese
Erfindung betrifft Computersysteme, und, insbesondere, Verfahren
und Vorrichtungen zum Erkennen von Versuchen, durch einen Mikroprozessor,
welcher dynamisch Instruktionen aus einem Ziel- in einen Hostinstruktionensatz übersetzt,
in einen Speicher zu schreiben, welcher Zielinstruktionen speichert,
welche bereits übersetzt
worden sind.
-
GESCHICHTE DES STANDES DER
TECHNIK
-
Vor
kurzem wurde ein neuer Mikroprozessor entwickelt, welcher einen
einfachen, jedoch sehr schnellen Hostprozessor (bezeichnet als "Morph Host") und Software (bezeichnet
als "Code Morphing Software") kombiniert, um
Anwendungsprogramme auszuführen,
welche für
einen Prozessor entworfen sind, welcher einen Instruktionensatz
aufweist, welcher anders ist als der Instruktionensatz des Morph-Host-Prozessors.
Der Morph-Host-Prozessor führt
die Code Morphing Software aus, welche die Anwendungsprogramme dynamisch
in Hostprozessorinstruktionen übersetzt,
welche in der Lage sind, den Zweck der Originalsoftware zu erfüllen. Sowie die
Instruktionen übersetzt
sind, werden sie in einem Übersetzungspuffer
gespeichert, wo sie ohne weitere Übersetzung ausgeführt werden
können.
Wenngleich die ursprüngliche Übersetzung
eines Programms langsam ist, werden, einmal übersetzt, viele der Schritte,
welche normalerweise für
Hardware erforderlich sind, um ein Programm auszuführen, eliminiert.
Der neue Mikroprozessor hat sich als in der Lage erwiesen, übersetzte "Zielprogramme" ebenso schnell auszuführen wie
der "Zielprozessor", für welchen
die Programme gestaltet worden sind.
-
Der
Morph-Host-Prozessor umfasst eine Anzahl an Hardwareverbesserungen,
welche zulassen, dass Sequenzen von Zielinstruktionen, welche über bekannte
Zustände
des Zielprozessors reichen, in Hostinstruktionen übersetzt,
zur weiteren Verwendung in dem Übersetzungspuffer
gespeichert und geprüft
werden, um zu bestimmen, ob die übersetzten Instruktionen
korrekt auszuführen
sind. Diese Hardwareverbesserungen lassen das Puffern der Effekte der
Ausführung
von Übersetzungen
zu, bis die Ausführung
erfolgreich ist. Abspeicherungen und Zielprozessorzustand werden
bei erfolgreicher Ausführung in
einem Prozess, bezeichnet als "Commit", aktualisiert. Diese
Hardwareverbesserungen ermöglichen die
rasche und exakte Behandlung von Ausnahmen, welche während der
Ausführung
der Sequenzen der Hostinstruktionen auftreten, durch Rückführen der Ausführung zum
Anfang einer Sequenz von Instruktionen, an welchem ein bekannter
Zustand des Zielprozessors existiert. Rückführen der Operationen an einen
Punkt in der Ausführung,
an welchem ein Zielzustand bekannt ist, wird als "Rollback" bezeichnet. Der
neue Mikroprozessor ist ausführlich
beschrieben in der
US-Patentschrift
5,832,205 : Memory Controller For A Microprozessor For Detecting
A Failure Of Speculation On The Physical Nature Of A Component Being
Addressed, Kelly et al, 3. November 1998, übertragen an den Inhaber der
vorliegenden Erfindung.
-
Ein
Problem, welches mit dem neuen Prozessor auftreten kann, besteht
darin, dass es mit einigen Betriebssystemen und Anwendungen für einen Zielprozessor
möglich
ist, in Zielinstruktionen zu schreiben, welche im Speicher gespeichert
sind. Wenn das passiert, sind die Hostinstruktionen, welche Übersetzungen
der Zielinstruktionen sind, welche überschrieben worden sind, nicht
länger
gültig. Um
sicherzustellen, dass ungültige
Hostübersetzungen
nicht verwendet werden, benutzt der neue Prozessor einen Indikator,
bezeichnet als ein "T-Bit". Das T-Bit wird
mit einer physikalischen Seitenadresse in einem Translation-Lookaside-Puffer
(TLB) gespeichert. Ein Lookaside-Puffer speichert Einträge, welche
sowohl die virtuellen als auch die physikalischen Speicheradressen
aktueller Speicherzugriffe enthalten, was zulässt, dass auf einen Speicher
rascher zugegriffen werden kann als durch Seitentabellen. Jeder
Eintrag in dem TLB des neuen Prozessors enthält ein T-Bit, welches immer
dann gesetzt wird, wenn Instruktionen auf der adressierten Speicherseite
in Hostinstruktionen übersetzt
worden sind. Wenn ein Schreibvorgang in eine Speicherseite versucht
wird, welche durch ein T-Bit geschützt ist, wird eine T-Bit-Ausnahme
erzeugt. Eine T-Bit-Ausnahme bewirkt, dass eine Ausnahmebehandlung
eine Datenstruktur nachschlägt,
welche Bezüge
zu Adressen von Hostinstruktionen beinhaltet, welche aus den Zielinstruktionen übersetzt
worden sind, auf der Seite, welche durch das T-Bit geschützt ist.
Die Ausnahmebehandlung macht diese Übersetzungen ungültig, durch
Aufheben des T-Bit-Schutzes für
den TLB-Eintrag.
-
Die
Anordnung zum Benutzen von T-Bits ist ausführlich in der
US-Patentschrift 6,199,152 beschrieben,
mit dem Titel: Translated Memory Protection Apparatus For An Advanced
Microprocessor, Kelly et al, vom 22. August 1996, und übertragen
an den Inhaber der vorliegenden Erfindung.
-
Wenngleich
die Anordnung, welche T-Bits in TLB-Einträgen benutzt, in den meisten
Situationen effizient funktioniert, bleiben doch einige Probleme
im Betrieb. Eines dieser Probleme besteht darin, dass bestimmte
Zielprozessoren Betriebssysteme einsetzen, welche nicht unterscheiden
zwischen Bereichen, in welchen Instruktionen und Daten gespeichert
sind. Zum Beispiel lässt
Microsoft Windows zu, dass Segmente, welche für Instruktionen ausgewiesen
sind und andere Segmente, welche für Daten ausgewiesen sind, auf
denselben Speicherseiten gespeichert werden.
-
Wenn
das auftritt, erzeugt ein Versuch, in die Daten einer derartigen
Speicherseite zu schreiben, einen T-Bit-Fehler. Die resultierende
Ausnahme bewirkt, dass alle Übersetzungen
von Zielinstruktionen auf der Speicherseite, welche von dem konkreten T-Bit
geschützt
ist, ungültig
gemacht werden, selbst wenn ein Schreibvorgang in Daten nicht anzeigt, dass
irgendeine Zielinstruktion sich geändert hat. Das Ungültigmachen
korrekter Übersetzungen
auf der Speicherseite verlangsamt den Betrieb des neuen Mikroprozessors
signifikant.
-
Es
ist wünschenswert,
die Betriebsgeschwindigkeit des neuen Mikroprozessors zu verbessern,
durch Eliminieren des Ungültigmachens
von Übersetzungen,
welche nicht von Schreibvorgängen in
Speicherseiten, welche von T-Bits geschützt sind, betroffen sind, und
durch Reduzieren der Anzahl von ausgeführten T-Bit-Traps, welche nicht
das Ungültigmachen
von Übersetzungen
bewirken.
-
Die
US-Patentschrift 4,794,522 offenbart
die Verwendung von Lock Bits, um Speicherabschnitte zu schützen, welche
kleiner sind als eine Seite, um Zielinstruktionen zu schützen, welche
in Hostinstruktionen übersetzt
worden sind, welche im Speicher gespeichert sind.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Es
ist daher wünschenswert,
einen schnelleren Mikroprozessor vorzulegen, welcher kompatibel ist
mit Anwendungsprogrammen und Betriebssystemen, welche für andere
Mikroprozessoren gestaltet sind, und welcher in der Lage ist, diese
auszuführen, bei
einer höheren
Geschwindigkeit als jene anderen Mikroprozessoren.
-
Aspekte
der Erfindung sind in den beigefügten
Ansprüchen
dargelegt. Eine Ausführungsform der
Erfindung betrifft einen Computer, welcher Instruktionen aus einem Zielinstruktionensatz
in einen Hostinstruktionensatz übersetzt,
durch ein Verfahren zum Bestimmen, ob Schreibvorgänge in eine
Speicherseite auf Zielinstruktionen gerichtet sind, welche in Host-Instruktionen übersetzt
worden sind, in einem Computer, welcher Instruktionen aus einem
Zielinstruktionensatz in einen Hostinstruktionensatz übersetzt,
umfassend die Schritte des Erkennens eines Schreibvorgangs in eine
Speicherseite, welche Zielinstruktionen speichert, welche in Hostinstruktionen übersetzt
worden sind, des Erkennens, ob ein Unterbereich der Speicherseite,
an welchen der Schreibvorgang adressiert ist, Zielinstruktionen
speichert, welche übersetzt
worden sind, und des Ungültigmachens
von Hostinstruktionen, welche aus adressierten Zielinstruktionen übersetzt
sind.
-
Die
Erfindung wird besser zu verstehen sein, mit Bezug auf die ausführliche
Beschreibung, die nun folgt, welche gemeinsam zu sehen ist mit den
Zeichnungen, in welchen gleiche Elemente, durch die mehreren Ansichten
hindurch, mit den gleichen Bezeichnungen benannt sind.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm, welches einen Mikroprozessor illustriert, welcher
eine Ausführungsform
der vorliegenden Erfindung benutzt.
-
2 ist
ein Blockdiagramm, welches eine Hardwareimplementierung einer Ausführungsform der
vorliegenden Erfindung illustriert.
-
3 ist
ein Ablaufdiagramm, welches den Betrieb einer Ausführungsform
der vorliegenden Erfindung illustriert.
-
4 ist
ein Blockdiagramm, welches die Datenstrukturen im Hostspeicher für eine Implementierung
einer Ausführungsform
der vorliegenden Erfindung illustriert.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 illustriert
einen Mikroprozessor
11, welcher Ausführungsformen der vorliegenden
Erfindung benutzen kann. Der abgebildete Mikroprozessor ist ausführlich in
der
US-Patentschrift 5,832,205 beschrieben.
Der Mikroprozessor umfasst eine Gleitkommaeinheit
12, eine
Ganzzahleneinheit
13, einen Übersetzungspuffer
14,
welcher ein Teil des Systemspeichers ist, Zielspeicher
15,
welcher ein weiterer Teil des Systemspeichers ist, und einen Translation-Lookaside-Puffer
16,
welcher ein Teil einer Speicherverwaltungseinheit ist.
-
Wie
oben beschrieben, verwendet der neue Mikroprozessor ein einzigartiges
Verfahren, um sicherzustellen, dass übersetzte Instruktionen konsistent
bleiben mit den Zielinstruktionen, aus welchen sie übersetzt
worden sind. Das Verfahren wird als eine "T-Bit-Ausnahme" bezeichnet. Ein T-Bit wird im Eintrag
in dem Translation-Lookaside-Puffer 16 abgelegt,
um zu signalisieren, dass eine Speicherseite im Zielspeicher 15,
in welche ein Schreibvorgang versucht wird, Zielinstruktionen speichert,
welche in Hostinstruktionen übersetzt
worden sind, welche im Übersetzungspuffer 14 gespeichert
sind. Eine T-Bit-Ausnahme
wird erzeugt, wenn es einen Versuch gibt, in eine Speicherseite
zu schreiben, welche die Zielinstruktionen speichert, welche übersetzt
worden sind.
-
Der
Zweck des T-Bits besteht darin, zuzulassen, dass übersetzte
Hostinstruktionen ungültig
gemacht werden, sodass die Übersetzung
nicht verwendet wird (oder wenigstens vor Verwenden geprüft wird,
um zu bestimmen, ob sie noch gültig
ist), wenn die Zielinstruktionen, aus welchen die Übersetzung erzeugt
worden ist, sich ändern. "Ungültigmachen" ist in dieser Spezifikation
so verwendet, dass beide Bedeutungen inkludiert sind. Allerdings
ist mit einigen Zielprozessoren (besonders der X86-Familie) zulässig, dass
Speicherseiten existieren, welche sowohl übersetzte Instruktionen als
auch Daten enthalten. Das Schreiben von Daten in eine Speicherseite ändert Instruktionen
auf der Seite nicht, also besteht kein Grund, Hostinstruktionen
ungültig
zu machen, welche aus Instruktionen auf der Speicherseite übersetzt
worden sind. Folglich ist ein neuer Prozess erdacht worden, mittels
dessen die Code Morphing Software bestimmen kann, ob ein versuchter Schreibvorgang
in eine Speicherseite in übersetzte Instruktionen
erfolgt oder in Daten, und Schreibvorgänge in Daten zulassen, ohne
die Übersetzungen von
Instruktionen auf dieser Seite ungültig zu machen. Der neue Prozess
limitiert auch die Effekte von Schreibvorgängen in Instruktionen auf der
Seite auf tatsächlich
beschriebene Bereiche der Speicherseite.
-
Der
Prozess von Ausführungsformen
der vorliegenden Erfindung, durch welchen das erreicht wird, sieht
eine feinkörnigere
Unterteilung von Speicherseiten vor, welche durch ein T-Bit geschützt sind. Der
Prozess teilt geschützte
Seiten in mehrere Unterbereiche von gleicher Größe und speichert Indikatoren
für jeden
der Unterbereiche einer derartigen Speicherseite. In einer Ausführungsform
bilden die Indikatoren eine Maske, welche ein Bit vorsieht, für jeden
der mehreren Unterbereiche, wobei die Maske gespeichert werden kann
als ein Teil der Speicherseite, welche T-Bit-geschützt ist.
Die Indikatoren für
jeden Unterbereich, welcher geschützt ist, werden als "Fine-Grain-T-Bits" bezeichnet. In einer
Ausführungsform
ist die Maske ein 32-Bit-Wort, sodass jedes "Fine-Grain-T-Bit" einen 128-Byte-Unterbereich einer 4096-Byte-Speicherseite
schützt.
Für jeden
Unterbereich, welcher Zielinstruktionen enthält, wird ein Fine-Grain-T-Bit
gesetzt. Wenn eine T-Bit-Ausnahme auftritt,
prüft die
Ausnahmebehandlung die Indikatoren, um zu bestimmen, ob Fine-Grain-T-Bit-Schutz für die Speicherseite
vorgesehen worden ist, in welche der Schreibvorgang versucht wird.
-
Um
das Prüfen
zu beschleunigen, werden die zwölf
niedrigstwertigen Bits der Adresse, auf welche zugegriffen wird,
verwendet, um eine Maske zu erzeugen. Diese Maske weist eine Eins
auf, an der Position des adressierten Bytes (und, wenn die gespeicherten
Daten lang genug sind, um in den nächsten Unterbereich zu verlaufen,
eine Eins in der nächsten
Bit-Position in Folge). Die Maske der niedrigstwertigen Adressbits
und die Fine-Grain-T-Bit-Maske werden UND-verknüpft. Eine Null, welche an irgendeiner
Stelle resultiert, gibt an, dass ein Fine-Grain-T-Bit für diesen
Unterbereich gesetzt ist, sodass die T-Bit-Ausnahme erzeugt werden sollte.
-
Wenn
die Speicherseite nicht in Unterbereiche geteilt worden ist (d.
h. nur Zielinstruktionen sind auf die Seite geschrieben worden),
wird die T-Bit-Ausnahme bestätigt,
welche Übersetzungen
in dem Übersetzungspuffer
ungültig
macht, welche sich auf diese Seite beziehen. Wenn die Speicherseite
in Unterbereiche geteilt worden ist, sodass Fine-Grain-T-Bit-Indikatoren
existieren, und das Nachschlagen zeigt, dass der Schreibvorgang
in einen oder mehrere Unterbereiche erfolgt, welche nicht durch
ein Fine-Grain-T-Bit
ausgewiesen sind, dann wird die ursprüngliche T-Bit-Ausnahme durch
die Software ignoriert. Wenn die Speicherseite in Unterbereiche
geteilt worden ist, und das Nachschlagen zeigt, dass der Schreibvorgang
in einen oder mehrere Unterbereiche erfolgt, welche durch ein Fine-Grain-T-Bit ausgewiesen
sind (ein Bereich, welcher Instruktionen speichert), dann wird die
ursprüngliche
T-Bit-Ausnahme bestätigt;
und die Ausnahmebehandlung macht die Hostinstruktionen ungültig, welche
in dem Übersetzungspuffer
gespeichert sind, welche übersetzt
sind aus Zielinstruktionen, welche in dem konkreten Unterbereich
auf der geschützten
Speicherseite gespeichert sind.
-
Wie
sich zeigt, eliminiert Fine-Grain-T-Bit-Schutz einen signifikanten
Teil der T-Bit-Ausnahmen, welche von dem neuen Prozessor erzeugt
werden. Fine-Grain-T-Bit-Schutz limitiert auch die verworfenen Übersetzungen
auf jene, welche Instruktionen in den beschriebenen Unterbereichen übersetzen.
Also ist der erfindungsgemäße Prozess
viel schneller als ständiges
Verwerfen der gesamten Speicherseite.
-
Selbst
wenn der Prozess, welcher die Code Morphing Software und eine Software-Ausnahmebehandlung
verwendet, schneller ist als Basis-T-Bit-Schutz, kann er weiter
beschleunigt werden. Um den Prozess von Ausführungsformen der Erfindung
schneller werden zu lassen, wurde eine Hardware-Ausführungsform,
illustriert in 2, konstruiert. Diese Ausführungsform
umfasst eine Schaltung 20, welche einen ersten TLB 21 aufweist,
konstruiert in der Art des bereits erörterten TLB. Dieser TLB sieht
Positionen vor, zum Speichern von Einträgen, wobei jeder die virtuelle
Adresse einer Speicherseite enthält,
eine physikalische Seitenadresse, an welcher die durch die virtuelle
Speicheradresse adressierte Information tatsächlich gespeichert ist, und
ein T-Bit. Wenn eine gültige
Speicherseite Zielinstruktionen speichert, welche übersetzt
worden sind, wird das T-Bit für
den Eintrag in dem TLB 21 gesetzt.
-
Die
Schaltung 20 enthält
auch eine zweite TLB-artige Struktur 23, welche als eine "Fine-Grain-T-Bit-Nachschlagetabelle" bezeichnet wird. Die
Fine-Grain-T-Bit-Nachschlagetabelle 23 weist
typischerweise eine kleinere Anzahl an Einträgen auf als TLB 21,
da von wenigen Speicherseiten, welche Zielinstruktionen speichern,
die übersetzt
worden sind, erwartet werden kann, dass sie auch Daten speichern.
Die Tabelle 23 sieht Positionen vor, zum Speichern von
Einträgen,
von denen jeder die physikalische Seitenadresse einer Speicherseite
enthält, welche
sowohl Daten als auch Zielinstruktionen, welche übersetzt worden sind, enthält. Jeder
Eintrag der Tabelle 23 speichert auch denselben Satz von
Indikatoren, welche in der Software-Ausführungsform
(z. B. einer 32-Bit-Wortmaske) benutzt werden, welche die Unterbereiche
angeben, welche tatsächlich
durch Fine-Grain-T-Bits geschützt
sind.
-
Der
Betrieb der Schaltung 20 ist durch das Ablaufdiagramm in 3 illustriert.
Wenn ein Schreibvorgang in eine Speicherseite versucht wird, wird
die Tabelle 23 durchsucht, um zu bestimmen, ob ein Eintrag
für die
adressierte Speicherseite in der Tabelle existiert. Um das zu erreichen,
wird eine Suche nach einem Eintrag durchgeführt, welcher die virtuelle
Speicheradresse enthält.
Wenn ein derartiger Eintrag existiert, wird die physikalische Adresse
der Seite gefunden, und der Zustand des T-Bits für die Seite wird bestimmt.
Wenn das T-Bit nicht gesetzt ist, ist die Speicherseite keine Seite,
welche Zielinstruktionen speichert, welche übersetzt worden sind, sodass
sie eigentlich keine Seite ist, welche T-Bit-Schutz aufweist. Wenn die Speicherseite
Zielinstruktionen speichert, welche übersetzt worden sind, sodass
sie durch ein T-Bit geschützt
ist, welches gesetzt ist, wird ein T-Bit-Trap für die Seite erzeugt; und die
physikalische Adresse des Eintrags wird an die Fine-Grain-T-Bit-Nachschlagetabelle 23 gesendet.
-
Eine
Suche wird in der Tabelle 23 durchgeführt, nach einem Eintrag, welcher
die physikalische Adresse enthält.
Wenn ein Eintrag, welcher die physikalische Adresse enthält, nicht
in der Tabelle 23 existiert, speichert (1) die Speicherseite
nicht sowohl Daten als auch übersetzte
Zielinstruktionen, oder (2) die Speicherseite speichert sowohl Daten
als auch übersetzte
Zielinstruktionen, jedoch ist ein Eintrag für die Speicherseite nicht in
Tabelle 23 eingegeben worden. In der ersten Situation wird,
da das gesetzte T-Bit in dem Eintrag in TLB 21 anzeigt,
dass die Seite übersetzte
Zielinstruktionen enthält,
eine T-Bit-Trap-Ausnahme
erzeugt, welche die Übersetzungen
ungültig
macht, welche in dem Übersetzungspuffer
gespeichert sind, welche sich auf diese Seite beziehen. In der zweiten
Situation wird der Eintrag für
die physikalische Adresse in die Tabelle 23 geladen, und
der Schreibvorgang wird erneut versucht.
-
Wenn
es einen Treffer in der Fine-Grain-T-Bit-Nachschlagetabelle 23 gibt,
wird eine Prüfung
für den
konkreten Unterbereich der Seite durchgeführt, um zu bestimmen, ob der
adressierte Unterbereich von einem Fine-Grain-T-Bit geschützt ist. Wenn ein Fine-Grain-T-Bit
nicht für
den Unterbereich gesetzt ist, wird keine T-Bit-Trap-Ausnahme erzeugt,
und Daten werden auf der Speicherseite gespeichert. Wenn ein Fine-Grain-T-Bit
für den
Unterbereich gesetzt ist, wird eine T-Bit-Trap-Ausnahme erzeugt,
welche den konkreten Unterbereich der Speicherseite, den Eintrag
in dem TLB 21 und die Übersetzungen,
welche in dem Übersetzungspuffer gespeichert
sind, welche sich auf den konkreten Unterbereich dieser Speicherseite
beziehen, ungültig macht.
-
Um
zu bestimmen, ob ein Fine-Grain-T-Bit für den adressierten Bereich
gesetzt ist, bewirkt eine Übereinstimmung
der physikalischen Adresse in der Tabelle 23 der Schaltung 20,
dass die Maske, welche die durch Fine-Grain-T-Bits geschützten Unterbereiche anzeigt,
in einem Register 25 abgelegt wird, in einer Ausführungsform
der Erfindung. Die niedrigerwertigen Bits der virtuellen Adresse
werden danach verwendet, um zu bestimmen, ob die adressierten Unterbereiche
durch Fine-Grain-T-Bits geschützt sind.
Diese niedrigerwertigen Bits definieren die Adresse, auf welche
durch den Schreibzugriff zugegriffen wird, innerhalb der adressierten
Speicherseite. Die konkreten Unterbereiche der Seite, an welche der Schreibzugriff
adressiert ist, werden mit dem 32-Bit-T-Bit-Indikator der Maske in Register 25 auf Übereinstimmung
geprüft,
um zu bestimmen, ob die Adresse, sich innerhalb eines oder mehrerer
Unterbereiche befindet, welche durch ein Fine-Grain-T-Bit geschützt sind.
Wenn der Schreibvorgang in einen Unterbereich erfolgt, welcher durch
ein Fine-Grain-T-Bit geschützt
ist, dann bewirkt der Trap, dass eine T-Bit-Ausnahme erzeugt wird,
welche die konkreten Unterbereiche, die Übersetzungen von Instruktionen,
welche in diesem Unterbereichen gespeichert sind, und den adressierten
Eintrag in dem TLB 21 ungültig macht.
-
Um
zu bestimmen, ob ein adressierter Unterbereich einer Speicherseite
Eine-Grain-T-Bit-Schutz aufweist, benutzt eine Ausführungsform
der vorliegenden Erfindung die fünf
höchstwertigen
Bits der zwölf
niedrigstwertigen Adressbits, um zu bestimmen, welcher der 32 Unterbereiche
betroffen ist. Jeder derartige Unterbereich enthält 128 Bytes für eine Seite
von 4096 Bytes. Wenn der konkrete adressierte Unterbereich bestimmt
worden ist, werden die sieben niedrigstwertigen Bits der Adresse
verwendet, um das spezifische, in dem Unterbereich adressierte Byte
zu bestimmen. Wenn das adressierte Byte bestimmt worden ist, wird
die Bitposition, welche den Indikator für den adressierten Unterbereich
beinhaltet, in der Maske, welche die Unterbereiche anzeigt, welche
durch Fine-Grain-T-Bits geschützt
sind (die Maske in Register 25) geprüft, um zu bestimmen, ob ein Eine-Grain-T-Bit
gesetzt ist. Da es in einer Ausführungsform
sein kann, dass ein Schreibvorgang nicht weniger als acht Bytes
ausmacht, wird die Länge
der gespeicherten Daten (minus eins) zu der beginnenden Byteadresse
addiert, innerhalb des Unterbereichs, um zu bestimmen, ob der Schreibvorgang
in den nächsten
Unterbereich hineinreicht. Wenn der Schreibvorgang in den nächsten Unterbereich
hineinreicht, wird die Maske ebenfalls geprüft, um zu bestimmen, ob ein
Fine-Grain-T-Bit für
den nächsten Unterbereich
gesetzt ist.
-
Die
Hardware nimmt den Bitvektor, welcher in dem T-Bit-Maskenregister abgelegt
ist, und verschiebt ihn nach unten, um die oberen fünf der zwölf Bits
Seitenoffset. Das bewegt das Bit für den konkreten Unterbereich,
welcher beschrieben worden ist, in die niedrigstwertige Bitposition,
und das Bit für
den nächsten
Unterbereich, in die nächste
niedrigstwertige Bitposition. Das eine (oder, wenn der nächste Unterbereich
beschrieben worden ist, die zwei) niedrigstwertige(n) Bit(s) wird/werden
danach geprüft.
Wenn eines davon gesetzt ist, wird eine T-Bit-Ausnahme aufgestellt.
-
Der
Basis-T-Bit-Schutz, welcher in
US-Patentschrift
6,199,152 beschrieben ist, benutzt eine Datenstruktur,
welche Adressen von Host-Instruktionen enthält, welche aus Zielinstruktionen übersetzt worden
sind, welche in durch T-Bits
geschützten
Bereichen gespeichert sind. Um die Fine-Grain-Aspekte des T-Bit-Schutzes zu
nutzen, welche durch Ausführungsformen
der vorliegenden Erfindung optimal geleistet werden, wird diese
Datenstruktur modifiziert, auf eine Weise, wie illustriert in
4.
Die Code Morphing Software benutzt eine Reihe von Einträgen, bezeichnet
als ein Map physikalischer Seiten. Der Eintrag in das Map physikalischer
Seiten ist durch die höchstwertigen
Bits der physikalischen Adresse indiziert. Jeder Eintrag ist ein
Zeiger auf die Datenstrukturen, welche die Übersetzungen identifizieren,
welche Zielinstruktionen übersetzen,
aus der entsprechenden physikalischen Seite. Jede Übersetzung von
Zielinstruktionen auf der physikalischen Seite weist einen Fine-Grain-T-Bit-Indikator
auf (z. B. die Zweiunddreißig-Bit-Wortmaske),
welche Unterbereiche der Speicherseite identifiziert, welche übersetzte Zielinstruktionen
speichert, welche durch Fine-Grain-T-Bits geschützt sind. Wenn es eine T-Bit-Ausnahme
gibt, wird die Maske, welche aus den niedrigstwertigen Bits der
Speicherungsadresse und der Größe der Speicherung
erzeugt wird, auf die oben beschriebene Weise verwendet, um für jede Übersetzung
zu bestimmen, ob sie Instruktionen aus dem Unterbereich der physikalischen
Seite übersetzt,
auf welchen zugegriffen wird.
-
Jeder
Eintrag in dem Map physikalischer Seiten zeigt auf eine Liste von
Zeigern auf Übersetzungen.
Jeder Übersetzung
ordnet er eine T-Bit-Maske zu. Wenn die T-Bit-Masken für die Übersetzungen auf
einer derartigen Liste für
eine Seite ODER-verknüpft
werden, wird eine T-Bit-Maske für
die Seite gebildet. Diese können
gespeichert werden und verwendet, um die Tabelle 23 rasch
zu füllen,
und um eine neue Seite in die Tabelle 23 zu laden; die
Masken werden immer dann neu berechnet, wenn eine neue Übersetzung
zu der Liste hinzugefügt
wird, oder immer dann, wenn eine Übersetzung auf der Liste ungültig gemacht
wird.
-
Hier
ist anzumerken, dass, wenn eine Zielinstruktion oder eine Sequenz
von Zielinstruktionen übersetzt
wird, eine Sequenz von Hostinstruktionen erzeugt wird. Oft werden
diese Hostinstruktionen neu geordnet und gereiht, um die Betriebsgeschwindigkeit
des Computers zu erhöhen.
Folglich wird, in einer Ausführungsform
der Erfindung, wenn eine Übersetzung
wegen einer Speicherung ungültig
gemacht wird, die gesamte Folge der Hostinstruktionen, welche der Übersetzung
zugeordnet sind, ungültig
gemacht, selbst jene, welche Zielinstruktionen aus Bereichen übersetzen,
auf welche von der Speicherung nicht zugegriffen wird.
-
Es
gibt verschiedenen alternative Ausführungsformen, welche verwendet
werden können,
an Stelle der bevorzugten Ausführungsform,
welche illustriert ist. Zum Beispiel könnte auf den T-Bit-Puffer 23 unter
Verwendung virtueller an Stelle von physikalischen Adressen zugegriffen
werden. Eine derartige Modifikation würde zulassen, dass auf die
Puffer 21 und 23 in demselben Takt zugegriffen
würde.
Eine weitere Ausführungsform
ist außerdem
möglich,
welche den Puffer 23 eliminieren und die gesamte T-Bit-Maske
speichern würde,
an Stelle eines einzelnen Bits in dem TLB 21. Andere spezifische
Ausführungsformen
werden sich in Fachkreisen ergeben.
-
Ausführungsformen
der Erfindung können ferner
verbessert werden durch Schaffen von Unterbereichen unterschiedlicher
Größe, für welche
Fine-Grain-T-Bit-Schutz geleistet wird. Eine Ausführungsform
zum Erreichen dieses Resultats teilt ferner die Unterbereiche in
kleinere Unterbereiche, welche ebenfalls mit Eine-Grain-T-Bit-Schutz
versehen sind, auf dieselbe Weise wie die großen Unterbereiche, welche oben
beschrieben sind, und liefert Schaltungen, welche eine zusätzliche
Tabelle schaffen, welche der Tabelle 23 ähnlich ist,
und zugeordnete Schaltungen, zum Bestimmen, ob versuchte Speicherungen
in geschützte
der kleineren Unterbereiche erfolgen.
-
Wenngleich
die vorliegende Erfindung anhand einer bevorzugten Ausführungsform
beschrieben worden ist, versteht es sich, dass verschiedene Modifikationen
und Änderungen
in Fachkreisen vorgenommen werden könnten.