-
Die
vorliegende Erfindung bezieht sich auf eine Anordnung zum Erzeugen
von effektiven Speicherattributsignalen für eine Speichermanagementschaltung
eines Prozessors eines Computersystems.
-
Der
von der Intel Corporation hergestellte Pentium®Pro-Prozessor enthält zwei
wechselwirkende Mechanismen, die zusammen verwendet werden, um den
effektiven Speichertyp eines bestimmten Abschnitts des Speichers
einzustellen. Die Speichertypbereichsregister (MTRRs – Memory
Type Range Registers) definieren die Speicherattribute für physikalische
Adreßbereiche.
Die Seitentabellen gestatten, daß Speicherattribute dynamisch
linear adressierten Seiten des Speichers zugewiesen werden. Die
MTRRs sind zum Beschreiben statischer physikalischer Bereiche mit
speziellen Ausrichtungs- und Längeneinschränkungen,
die üblicherweise
von dem BIOS eingerichtet werden, ausreichend, sind aber nicht in
der Lage, die dynamischen linear adressierten Datenstrukturen von
Programmen zu beschreiben. Die Seitentabellen gestatten, daß Speicherattribute
dynamisch linear adressierten Seiten des Speichers zugewiesen werden.
Dies gibt dem Betriebssystem (OS) und Anwendungen eine Flexibilität bei der
Verwendung von Speicherattributen für irgendwelche Datenstrukturen.
-
Die
Seitentabellen in dem Pentium®Pro-Prozessor bieten nur
eine Untermenge (Subset) sämtlicher Speicherattribute
einschließlich
Durchschreiben (WT – write
through) und nicht-cache-speicherbar
(UC – uncacheable).
Die Seitenverzeichnis- und
Seitentabelleneinträge
enthalten zwei Bits, Seiten-Cache-Sperren (PCD – page cache disable) und Seiten-Durchschreiben
(PWT – page
write through), um Speichertypen auszuwählen. Während die verbleibenden zwei
Speichertypen unter Benutzung des einzig verbleibenden reservierten
Bits spezifiziert werden könnten,
würde dies
die Einführung
neuer Speicherattribute in der Zukunft verhindern.
-
Aufgabe
der Erfindung ist es, die Seitentabellenspeichertypcodierungen für lineare
Speicherbereiche auf eine flexible und erweiterbare Weise bereitzustellen.
-
Diese
Aufgabe wird erfindungsgemäß durch
eine Anordnung mit den Merkmalen des Anspruchs 1 gelöst.
-
Die
Anordnung weist eine Speicherattributpalette auf, die Speicherattributindexsignale
empfängt
und Linearspeicherattributsignale in Abhängigkeit von den Speicherattributindexsignalen
auswählt.
Ein Selektor (Auswähler)
der effektiven Speicherattribute empfängt die Linearspeicherattributsignale
und wählt
effektive Speicherattributsignale in Abhängigkeit von den Linearspeicherattributsignalen
aus. Ferner werden Attributsignale physikalischen Speichers an den
Selektor der effektiven Speicherattribute bereitgestellt, wobei
der Selektor die effektiven Speicherattributsignale in Abhängigkeit
von den linearen und den physikalischen Speicherattributsignalen
auswählt.
Eine Speichermanagementschaltung empfängt die effektiven Speicherattributsignale
und stellt Speichermanagementsignale in Abhängigkeit von den effektiven
Speicherattributsignalen zur Verfügung.
-
Bei
einem bevorzugten Ausführungsbeispiel
der Erfindung können
die Linearspeicherattribute in ein Register oder mehrere Register
eingeschrieben werden. Dies ermöglicht
dem Programmierer eines Programms oder Betriebssystems eine Flexibilität bei der
Auswahl der Speicherattribute, einschließlich zukünftiger Speicherattribute.
Die Erfindung ermöglicht
es einem Programm, ein Speicherattribut nach Wahl für einen bestimmten
Abschnitt des Speichers anzuwenden, wodurch es dem Computersystem
gestattet wird, eine höhere
Leistung zur Verfügung
zu stellen.
-
Weitere
vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind
in den Unteransprüchen gekennzeichnet.
-
Die
Erfindung schafft ein flexibles, programmierbares und erweiterbares
Mittel, um sämtliche
gegenwärtigen
und zukünftigen
Speicherattribute sowohl für
das Betriebssystem als auch Anwendungen verfügbar zu machen. Sie stellt
darüber
hinaus ein konsistentes Speicherattributverwendungsmodell für das Betriebssystem
zur Verfügung,
indem sämtliche
Speicherattribute über
einen einzigen Mechanismus verfügbar
gemacht werden, statt einen Teil der Funktionalität in den
Seitentabellen und einen Teil in den MTRRs zu haben.
-
1 ist
eine schematische Blockdarstellung eines Beispielcomputersystems.
-
2 ist
eine schematische Blockdarstellung bestimmter Komponenten eines
Beispielprozessors bei dem Computersystem gemäß 1.
-
3 ist
ein Diagramm, das ein Speicherattributtabellenindexschema für eine Seitenwechselhierarchie
gemäß einem
Ausführungsbeispiel
der Erfindung veranschaulicht.
-
Bei
einem bevorzugten Ausführungsbeispiel
befindet sich die Speicherattributpalette in einem Mikroprozessor.
Die Erfindung ist nicht auf die Verwendung bei einem bestimmten
Typ eines Mikroprozessors eingeschränkt. Tatsächlich wird die Erfindung in
Verbindung mit allgemein bekannten Strukturen und Signalen von Mikroprozessoren
und Speichern beschrieben. Spezielle Ausführungsbeispiele der Erfindung
jedoch umfassen Strukturen, die gegenwärtig bei dem von der Intel
Corporation vermarkteten Pentium®Pro-Mikroprozessor und
bei verwandten Chipsätzen
verwendet werden. Jedoch ist die vorliegende Erfindung nicht auf
eine Verwendung in Verbindung mit den unten genannten Strukturen
und Signalen, wie sie bei dem Pentium®Pro-Mikroprozessor
verwendet werden, eingeschränkt.
Die grundlegende Struktur und die Signale des Pentium®Pro-Mikroprozessors sind
in dem Pentium® Pro
Family Developer's
Manual, Band 1: Specification, Band 2: Programmer's Reference Manual,
und Band 3: Operating System Writer's Manual (insbesondere Band 3, Kapitel
11) (Intel Corporation, 1996) beschrieben. So wie er im folgenden
verwendet wird, umfaßt
der Begriff "Speicherattribute" das, was als "Speichertyp" in Verbindung mit
dem Pentium®Pro-Prozessor
bezeichnet wird, ist aber darauf nicht beschränkt.
-
Gemäß 1 umfaßt ein Computersystem 10 einen
Prozessor 14, welcher auch Mikroprozessor genannt werden
kann. Das Computersystem 10 enthält verschiedene Speicher mit
unter schiedlichen Größen und
Zugriffsgeschwindigkeiten in Bezug auf den Prozessor 14.
Die Speicher umfassen den Hauptspeicher 16, einen L2-Cache 20 und
Peripherieeinrichtungen 22, die beispielsweise ein Festplattenlaufwerk
umfassen. Daten können
darüber
hinaus aus einem L1-Cache gelesen bzw. in diesen geschrieben werden,
welcher sich im Inneren des Prozessors 14 befindet. Darüber hinaus
kann das Computersystem 10 einen oder mehrere zusätzliche
Prozessoren enthalten, welche durch den Prozessor 26 repräsentiert
werden. Prozessor 26 kann sich den Hauptspeicher 16 mit
Prozessor 14 teilen. Die Daten werden über verschiedene Busse übermittelt, die
einen Prozessorbus 28, einen PCI-Bus 30, einen
Rückseitenbus 34 und
einen Bus 36 umfassen. Eine Speichersteuereinrichtung 38 kontrolliert
die Datenübertragung
zwischen den verschiedenen Speichern und dem Prozessor 14 sowie
gegebenenfalls dem Prozessor 26. Das Computersystem 10 ist
bloß ein
Beispiel. Ein Computersystem muß nicht
sämtliche
der Komponenten des Computersystems 10 (beispielsweise
keinen separaten L2-Cache) enthalten. Darüber hinaus ist die Speichersteuereinrichtung 38 nicht
auf eine bestimmte Anordnung eingeschränkt, wie beispielsweise eine
Look-Aside-, eine Look-Through-, eine Rückschreib- oder eine Durchschreib-Cache-Anordnung.
-
Gemäß 2 empfängt eine
Speicherattributpalette (MAP) 50 Speicherattributindexsignale.
Bei einem bevorzugten Ausführungsbeispiel
empfängt
die MAP drei Speicherattributindexsignale: PCD, PWT und MAP-Indexsignale
auf den Leitungen 54, 56 und 58. PCD
(page cache disable) und PWT (page write through) werden bei dem
Pentium®Pro-Prozessor
benutzt. Bei dem Pentium®Pro-Prozessor sind das
PCD- und das PWT-Signal die Flag-Bits 4 bzw. 3 des Steuerregisters
CR3. Bei dem Pentium®Pro-Prozessor wird das
Register CR3 als Seitenverzeichnisbasisadreßregister bezeichnet ausgenommen
dann, wenn das CR4-physikalische-Adreßerweiterung(PAE)-Bit gesetzt
ist, weil in diesem Fall das CR3-Register als Seitenverzeichniszeigertabelle
bezeichnet wird.
-
Die
Bits PCD und PWT werden an den Seitenverzeichniseintrag und Seitentabelleneintrag
angelegt. Das MAP-Indexsignal ist ein drittes Indexsignal, das an
der Stelle eines reservierten Bits im Steuerregister CR3, dem Seitenverzeichniseintrag
und dem Seitentabelleneintrag angelegt werden könnte. Beispielsweise kann das
MAP-Signalbit das Bit 7 bei kleinen (z. B. 4K) Seitentabelleneinträgen und
das Bit 12 für
Seitenverzeichniseinträge,
die große
(z. B. 2M/4M) Seiten abbilden, sein. Das MAP-Indexbit ist für das Register
CR3, Seitenverzeichniseinträge
oder Seitenverzeichniszeigereinträge nicht definiert, und es
wird deshalb angenommen, daß es
Null ist. Selbstverständlich
ist es nicht erforderlich, daß die
Speicherattributindexsignale als PCD, PWT und MAP-Signale bezeichnet
oder in Verbindung mit dem CR3-Register, dem Seitenverzeichniseintrag oder
dem Seitentabelleneintrag angelegt werden.
-
Ein
Selektor 52 in der MAP 50 wählt eines von bis zu 8 in einem
Register 60 gespeicherten Linearspeicherattributen aus,
wobei das Register 60 in acht Linearattributregister R0,
R1,... R7 unterteilt ist. Der Selektor 52, welcher ein
Multiplexer sein kann, liefert auf der Grundlage des Zustands der
Indexsignale PCD, PWT und MAP auf den Leitungen 54, 56 und 58 den
Inhalt eines der Register R0, R1... R7 an die Leitungen 82 (irgendeine
von beliebigen Multiplextechniken kann verwendet werden). Register 60 könnte die
MSR-Adresse 0x277 (MSR = Model Specific Register) sein, welche als
Parameter über
das ECX-Register beim Ring 0/OS an die Befehle "rdmsr" (read model specific register – Lese modellspezifisches
Register) und "wrmsr" (write model specific
register – Schreib
modellspezifisches Register), wie beim Pentium®Pro-Prozessor,
weitergeleitet wird. Dementsprechend kann der Inhalt des Registers 60 oder
eines Teils davon während
der Operation eines Programms geändert
werden, was einem Programmierer eine Flexibilität bei der Auswahl von Speicherattributen ermöglicht.
Das Register 60 kann in der Architektur definiert sein.
Bei alternativen Ausführungsbeispielen
der Erfindung kann auf verschiedene Attribute durch eine geringere
Anzahl, wie ein oder zwei Indexsignale, zugegriffen werden.
-
Register 60 kann
ein Lese/Schreib-zugreifbares modellspezifisches 64-Bit-Register
(MSR) sein. Alternativ können
die Linearattributregister R0, R1,...R7 durch abweichende Adressen
voneinander getrennt sein. Daten können aus einem Register 64 über einen
Bus 62 in das Register 60 geschrieben werden.
Wie in 2 veranschaulicht, kann ein Register 64 ein
internes Register eines Mikroprozessors sein, wie beispielsweise das
ECX-Register. Alternativ kann Register 64 ein Speicherplatz
in einem Speicher sein, der sich innerhalb oder außerhalb
eines Mikroprozessors befindet. Register 64 kann eine Gruppe
von Registern mit unterschiedlichen Speicherplätzen repräsentieren. Auf die Attributdaten
kann über
auf den Speicher weisende Zeiger zugegriffen werden, welche das
Register 64 darstellen kann. Es kann eine zusätzliche
Schaltung zwischen Register 64 und Register 60 vorgesehen
sein, welche nicht dargestellt ist. Attributdaten können aus
dem Register 60 über
die Leiter 66, 68,... 80 gelesen werden.
Bei einem bevorzugten Ausführungsbeispiel
sind die Leiter 66, 68...80 N Bits breit. N kann
drei, acht oder irgendeine andere Zahl sein. Bus 62 und
Leiter 66, 68,... 80 repräsentieren
darüber
hinaus eine geeignete Lese- und/oder Schreibschaltung. Das Register 60 kann
als Palettenregister bezeichnet werden, weil der Selektor 52 einen
unmittelbaren Zugriff auf dieses Register hat. Register 64 kann
hier (unabhängig
davon, ob es sich außerhalb
des Prozessors 14 befindet) als externes Register bezeichnet
werden, weil es sich außerhalb
(extern) der MAP 50 befindet.
-
Im
folgenden ist ein Beispiel des Registers
60 angegeben:
-
Bei
diesem Beispiel des Registers 60, umfassen die Bits 0–7 das Register
R0, die Bits 8–15
das Register R1,..., die Bits 56–63 das Register 7.
(In diesem Sinne läßt sich
Register 60 als aus mehreren Registern bestehend denken.
Darüber
hinaus können
sich, wie dargelegt, die Register an unterschiedlichen Adressen aufhalten.)
Die Speicherattribute 0 (MA0 – Memory
Attribute 0) befinden sich innerhalb der Bits 0–2 des Registers 0. MA0, MA1,...
MA7 spezifizieren acht in dem Register 60 enthaltene Speicherattribute,
die über
MAP 50 verfügbar
sind. Als solches ist die MAP 50 eine programmierbare Tabelle
mit acht Einträgen
von 8 Bit Breite. Bei dem Beispiel sind Rsvd die am höchsten bewerteten
Bits für
jedes Seitenattribut und sind für
zukünftige Erweiterungen
reserviert. Selbstverständlich
können
die Speicherattribute MA0, MA1,... MA7 durch mehr oder weniger als
drei Bits dargestellt werden. Bei einigen Implementierungen der
Struktur gemäß 2 können weniger
als acht Speicherattribute vorhanden sein. In derartigen Fällen könnten einige
Attribute in mehr als einem Eintrag des Registers 60 enthalten
sein. Alternativ könnte
zu erwarten sein, daß bestimmte
Kombinationen von Indexsignalen nicht angelegt werden.
-
Die
physikalischen Attributregister 84 stellen physikalische
Speicherattributsignale auf den Leitungen 86 an den Selektor 88 der
effektiven Speicherattribute zur Verfügung. Die physikalischen Speicherattributsignale
stellen physikalische Speicherattribute dar. Physikalische Attributregister 84 können MTRRs
sein und die physikalischen Speicherattributsignale können MTRR-Speichertypsignale
sein. Der Selektor 88 der effektiven Speicherattribute
empfängt
darüber
hinaus Linearspeicherattributsignale auf den Leitungen 82 von
dem Selektor 52. Die Linearspeicherattributsignale repräsentieren
Linearspeicherattribute. Der Selektor 88 der effektiven
Speicherattribute folgt Behandlungsregeln, um effektive Speicherattributsignale
auf den Leitungen 92 zu erzeugen, welche von der Speichermanagementschaltung 90 empfangen
werden. Die Speichermanagementschaltung 90 legt Speichermanagementsignale
auf den Leitungen 94 in Abhängigkeit von den effektiven
Speicherattributsignalen an. Wie veranschaulicht, ist die Speichermanagementschaltung 90 im
Prozessor 14 enthalten, könnte sich aber alternativ außerhalb
des Prozessors befinden. Die Speichermanagementsignale werden zur
Steuerung der Speicheroperationen verwendet, wie sie beispielsweise
unten in Tabelle 1 umrissen sind.
-
Die
Kompatibilität
mit Prozessoren der Intel Corporation, einschließlich dem Intel-486-Prozessor,
dem Pentium
®-Prozessor
und dem Pentium
®Pro-Prozessor,
und mit vorhandener Software, die auf diesen Prozessoren läuft, kann
aufrechterhalten werden, indem die richtigen Werte in das Register
60,
beispielsweise beim Rücksetzen,
eingeschrieben werden. Diese Anfangswerte können so programmiert werden,
daß sie
vollständige
Rückwärtskompatibilität mit den
zuvor existierenden Seitentabellenspeichertypen und MTRRs bereitstellen.
Zusätzlich
schafft die Standardeinstellung eine Kompatibilität für den Fall,
daß die
Software die für
MAP
50 definierten reservierten Seitentabellenbits benutzt.
Im Register
60 könnten
die drei Bits jedes der MA0–MA7 beispielsweise
ein Speicherattribut mit der gleichen Codierung spezifizieren, wie
sie für
die MTRRs des Pentium
®Pro-Prozessors verwendet
wird, wie es in Tabelle 2 gezeigt ist (aus dem Pentium
®Pro
Family Developer's Manual,
Band 3, Tabelle 11-5, Seiten 11–14),
welche unten als Tabelle 1 dieser Beschreibung wiedergegeben wird:
TABELLE
1
-
Eine
Modifikation der Tabelle 1 besteht darin, daß die Codierung '000 UC ist und die
Codierung '111 UC-
ist, wie unten beschrieben ist. Bei einem Ausführungsbeispiel der Erfindung
bleibt die Codierung '111
für die
variablen MTRRs (VMTRRS) undefiniert, und Schreibversuche erzeugen
fortgesetzt einen allgemeinen Schutzfehler (GP fault – general
protection fault). Versuche, eine nicht-definierte Speichertypcodierung
in die MAP zu schreiben, können
einen GP-Fehler wie bei variablen MTRRs erzeugen. Tabelle 1 veranschaulicht darüber hinaus
ein Beispiel von MTRR-Speicherattributen und ihren Eigenschaften
gemäß einem
Ausführungsbeispiel
der Erfindung.
-
Tabelle
2 unten zeigt, wie die MAP-, PCD- und PWT-Indexsignale verwendet
werden, um in die MAP 50 zu indexieren und was das Register 60 nach
dem Rücksetzen
enthalten kann.
-
-
WB
(Rückschreiben)
und WT (Durchschreiben) sind in Tabelle 1 definiert. UC- und UC
sind Beispiele von UC (nicht-cache-speicherbar), das in Tabelle 1 definiert
ist. UC- tritt auf, wenn PCD, PWT = 10. UC tritt auf, wenn PCD,
PWT = 11. Wie unten in Tabelle 3 veranschaulicht wird, behauptet
sich bei dem Selektor 88 der effektiven Speicherattribute
ein WC aus physikalischen Attributregistern 84 gegenüber UC-
aus der MAP 50. Im Vergleich dazu behauptet sich bei dem
Selektor 88 der effektiven Speicherattribute UC aus der
MAP 50 gegenüber
WC aus physikalischen Attributregistern 84.
-
Bei
einem bevorzugten Ausführungsbeispiel
sind sämtliche
acht Einträge
in Register 60 zum Beschreiben des 4K/2M/4M-Seitenrahmens verfügbar. Das
MAP-Indexbit ist nicht definiert in dem CR3-Register (den Seitenverzeichniszeigertabellen,
wenn die physikalische Adreßerweiterung
(PAE) freigegeben ist) oder dem Seitenverzeichnis, wenn es nicht
eine große
Seite beschreibt. In diesen Fällen
werden nur die Indexsignale PCD und PWT verwendet, um in die MAP 50 zu
indexieren, was das OS auf die Verwendung nur der ersten vier Einträge des Registers 60 zum
Beschreiben der Speicherattribute der Seitenhierarchie (Paging-Hierarchie)
einschränkt.
Ein Beispiel des MAP-Indexierschemas
für jede
Ebene der Seitenwechselhierarchie ist in 3 gezeigt.
Reservierte Bit-Fehler sind für
Werte ungleich 0 für
das MAP-Indexbit gesperrt, bleiben aber für sämtliche anderen reservierten
Bits präsent.
Das kann für
jede der ModeA/B-4K-Seiten, ModeB-4MB-Seiten und ModeC-4K/2MB-Seiten der Fall sein.
-
Der
Selektor
88 der effektiven Speicherattribute verwendet
eine Abbildung, um auf der Grundlage des Linearspeicherattributs
und des physikalischen Speicherattributs die an die Leitungen
62 anzulegenden
effektiven Speicherattributssignale auszuwählen. Ein Beispiel der Abbildung
ist in Tabelle 3 unten angegeben:
TABELLE
3
-
Die
Abbildung gemäß Tabelle
3 unterstellt, daß das
cache-gesperrt(CD)-
und das Nichtdurchschreib(NW)-Flag im Register CR0, sofern sie vorhanden
sind, auf Null gesetzt sind. Bei dem speziellen Ausführungsbeispiel
gemäß Tabelle
3 ist das effektive Speicherattribut in dem Fall undefiniert, wenn
das Linearspeicherattribut WT und das physikalische Speicherattribut
WP oder WC ist. Darüber
hinaus ist das effektive Speicherattribut in dem Fall nicht definiert,
wenn das Linearspeicherattribut WP und das physikalische Speicherattribut
WC oder WT ist. Jedoch könnten
bei anderen Aus führungsbeispielen
die effektiven Speicherattribute in derartigen Fällen definiert sein. UC_MTRR
zeigt an, daß das
UC-Attribut aus
den MTRRs kam und daß die
Prozessoren nicht gezwungen sind, eine Snoop-Operation in ihren
Caches durchzuführen,
da die Daten niemals cache-gespeichert sein konnten. Dies wird aus
Leistungsgründen
bevorzugt. UC_PAGE zeigt an, daß das
UC-Attribut aus den Seitentabellen kam und daß die Prozessoren ihre Cache-Speicher überprüfen müssen, da
Daten aus einem Seiten-Aliasing cache-gespeichert sein können. Im
allgemeinen zeigt die Terminologie "XX_PAGE" an, daß das Attribut XX aus den Seitentabellen
herrührt,
wobei die Seitentabellen gegenüber den
MTRRs Vorrang haben. Die Terminologie "XX_MTRR" zeigt an, daß das Attribut XX aus den MTRRs
herrührt,
wobei die MTRRs Vorrang gegenüber
den Seitentabellen haben. Die folgende Anmerkung gilt für Tabelle 3
und spezielle Ausführungsbeispiele
der Erfindung, die für
eine Zusammenarbeit mit Microsoft-OSs vorgesehen sind. Bei einigen
Microsoft-OSs vor Windows NT 4.0 Service Pack 3 (z. B. für DOS, Windows
3.0, Windows 95, frühere
Windows NT-Versionen) wird es Software, beispielsweise einem Programm
fastvid.exe, gestattet, den Speichertyp der MTRRs von UC zu WC zu ändern, ohne
das Betriebssystem darüber
zu informieren, wenn das Betriebssystem die Codierung UC- für nicht-cache-speicherbaren
Speicher verwendet. In einem solchen Fall hat WC den Vorrang über UC.
Das Betriebssystem NT 4.0 Service Pack 3 verwendet UC an Stelle von
UC- in den Seitentabellen, um den Vorrang über WC in den MTRRs zu erlangen.
UC- und UC werden oben in Verbindung mit Tabelle 1 beschrieben.
-
Das
Sperren der MTRRs auf den Pentium®Pro-Prozessor
führte
zu einem effektiven Speichertyp UC unabhängig von der Freigabe des Seitenwechsels
(Paging) und dem Setzen der Indexbits PCD und PWT. Bei Prozessoren,
bei denen MAP freigegeben ist, kann dieses Verhalten geändert werden.
Wenn ein Paging und die MTRRs nicht freigegeben sind, dann ist der
effektive Speichertyp UC. Sofern die MTRRs nicht freigegeben sind
und ein Paging freigegeben ist, kann der effektive Speichertyp aus
den Seitentabellen/MAP verwendet werden.
-
Das
MAP-Merkmal kann von dem Betriebssystem durch die Verwendung des
CPUID-Befehls erfaßt werden.
Insbesondere kann das Betriebssystem den CPUID-Befehl mit dem Wert
1 in dem Register EDX ausführen
und dann die Unterstützung
dieses Merkmals bestimmen, indem das Bit 16 des EDX-Register-Rückgabewerts
betrachtet wird. Sofern MAP unterstützt wird, wird dem Betriebssystem
gestattet, das modellspezifische Register zu benutzen, das für die Programmierung
der Seitenattributtabelle spezifiziert ist, ebenso wie Gebrauch
von den früher
in den Seitentabellen reservierten MAP-Indexbits zu machen.
-
Das
Betriebssystem kann dafür
verantwortlich sein, zu sichern, daß Änderungen an einem MAP-Eintrag
auf eine Weise auftreten, die die Konsistenz der Prozessor-Cache-Speicher
und Übersetzungsnachschlagepuffer
(TLB) einschließlich
beispielsweise einer speziellen Sequenz von Operationen, die das
Spülen
(Flushing) der Cache-Speicher und TLBs des Prozessors bzw. der Prozessoren
umfaßt,
aufrechterhält.
-
Bei
einem Ausführungsbeispiel
der Erfindung, die eine Alternative gegenüber der in Verbindung mit 2 beschriebenen
darstellt, erzeugt eine Speicherattributpalette in Erwiderung bestimmter
Zustände
der Indexsignale PCD, PWT und MAP einzelne Bits auf parallelen Leitungen.
Wenn es beispielsweise acht Attribute gäbe, könnten acht parallele Leitungen
verwendet werden, wobei jeweils nur einer beaufschlagt würde. Ein
Selektor des effektiven Speicherattributs würde die parallelen Leitungen
empfangen und in geeigneter Weise auf die darauf anliegenden Signale
antworten.
-
Die
MAP kann gestatten, daß ein
beliebiger Speichertyp in den Seitentabellen spezifiziert wird,
und folglich ist es möglich,
daß eine
einzelne physikalische Seite durch zwei unterschiedliche lineare
Seiten abgebildet wird, die unterschiedliche Speichertypen aufweisen.
Diese Praxis kann zu nicht definierten Ergebnissen führen und
wird folglich mißbilligt.
Insbesondere ist es vorzuziehen, daß eine WC-Seite nicht auf eine
cache-speicherbare Seite durch Aliasing abgebildet wird, da WC-Schreiboperationen
die Prozessor-Cache-Speicher
nicht zu überprüfen brauchen.
-
Betriebssysteme,
welche es nicht wünschen,
die MAP im Kontext umzuschalten, können äquivalente MAP-Eintragswerte
auf sämtlichen
Prozessoren aufweisen.
-
Betriebssysteme,
die ein Seitenverzeichnis als Seitentabelle verwenden und Seitengrößenerweiterungen
(PSE – page
size extensions) oder physikalische Adreßerweiterungen (PAE – physical
address extensions) ermöglichen,
sollten sorgfältig
die Verwendung des MAP-Index für
4KB-Seitentabelleneinträge
(PTEs – Page
Table Entries) überprüfen. Das
Betriebssystem kann nur MAP-Einträge MA0-3 für einen 4KByte-Seitentabelleneintrag
(PTE) benutzen, der außerdem
als PDE verwendet wird, da das MAP-Indexbit für den Seitentabelleneintrag
(Bit 7) die Seitengröße repräsentiert.
Sofern das Betriebssystem versucht, auf MAP-Einträge MA4-7
zuzugreifen, wenn dieser Speicher als PTE verwendet wird, kann es
versehentlich das PS-Bit
dann setzen, wenn auf diesen Speicher als PDE zugegriffen wird.
-
Sofern
das Betriebssystem es wünscht,
daß der
Seitentabellenspeichertyp, wie er in der MAP definiert ist, stets
der effektive Speichertyp ist, so kann es dann den Standard-MTRR-Speichertyp
auf Rückschreiben setzen
und die MTRRs sperren, die diejenigen Bereiche abdecken, die das
Betriebssystem allein durch die Verwendung von Seitentabellen zu
verwalten wünscht,
oder sämtliche
MTRRs sperren.
-
Bei
einem bevorzugten Ausführungsbeispiel
ist die MAP 50 stets auf sämtlichen Prozessoren, die sie unterstützen, freigegeben,
und das Seitentabellennachschlagen tritt immer dann auf, wenn ein
Seitenwechsel (Paging) freigegeben ist sowie für sämtliche Seitenwechselmodi (z.
B. PSE, PAE).
-
Die
MAP 50 könnte
als Seitenattributtabelle bezeichnet werden.
-
Bei
der vorliegenden Erfindung soll der lineare Speicher derart interpretiert
werden, daß er
lineare, logische und virtuelle Adressen einschließt.
-
Es
wird vorgezogen, daß die
Linearspeicherattributsignale nur jeweils ein lineares Speicherattribut
repräsentieren,
die physikalischen Speicherattributsignale jeweils nur ein physikalisches
Speicherattribut und die effektiven Speicherattributsignale jeweils
nur ein effektives Speicherattribut repräsentieren. Alternativ könnten ein
Signal oder mehrere dieser Signale gleichzeitig mehr als ein Attribut
repräsentieren.
-
Eine
zusätzliche
MAP-Implementierung umfaßt
Prioritätsbits.
Die Implementierung kann einen besonderen Wert bei der Testung und
der zukünftigen
Erweiterung von Attributen haben. Jeder Eintrag in der MAP enthält zwei
Prioritätsbits,
die es ermöglichen,
daß der
Eintrag stets Vorrang gegenüber
den MTRRs oder die MTRRs stets Vorrang gegenüber dem Eintrag haben. Eine
Zwei-Bit-Prioritätscodierung
für jeden
Eintrag ist in Tabelle 4 dargestellt:
TABELLE
4
-
Alternativ
könnte
ein Einzelbit verwendet werden, wie in Tabelle 5 gezeigt:
TABELLE
5
-
Schließlich könnten die
zwei Bits oder das Einzelbit für
die gesamte MAP-Tabelle vorhanden sein. Die Lösungen gemäß Tabellen 4 und 5 sind nicht
erforderlich. Sofern das Betriebssystem wünscht, daß die MAP 50 stets
den Vorrang hat, könnte
das Betriebssystem die MTRRs sperren.
-
Das
Betriebssystem kann die acht nützlichsten
Speicherattributkombinationen auswählen und diese für das gesamte
System auf sämtlichen
Prozessoren verwenden. Dies könnte
jedoch einmal pro Prozeß geändert werden.
Es könnte
ein spezielles Befehlspaar geben, um die gesamte MAP auf einmal
zu sichern/wiederherzustellen.
-
Ein
neues Bit MAP[2] könnte
für CR3
und die Seitenverzeichniszeigertabelle (PDPT – page directory pointer table)
definiert werden und drei Bits verwenden, um MAP0-7 zu indexieren,
wenn immer das möglich ist.
Bei einigen Ausführungsbeispielen
kann es sein, daß dies
in jedem Fall mit Ausnahme eines 4K-Seitenverzeichnisses im Modus
B oder Modus C arbeitet, bei dem es keine reservierten Bits gibt
und Bit 7 per Definition 0 ist. Das Betriebssystem könnte folglich
seine Seitenwechselstrukturen unter Verwendung sämtlicher acht MAP-Einträge beschreiben
mit Ausnahme des Falls, wenn die Seitentabellen in diesen zwei Modi
beschrieben werden.
-
Register 60 braucht
nicht im Prozessor 14 zu sein, sondern könnte statt
dessen beispielsweise im Hauptspeicher 16 enthalten sein.