Hintergrund der Erfindung
-
In manchen Datenbearbeitungs-Systemen mit "virtuellem
Speicher" wird eine Seitenspeicher-Verwaltungseinheit (paged
memory management unit PMMU) benutzt, um einen Logischen
Abschnitt einer durch einen Prozessor geschaffenen Adresse für
einen Speicher über einen Adreßbus in einen entsprechenden
Abschnitt einer Physikalischen Adresse zu übersetzen. Oft
ist der PMMU ein Übersetzungs-Cache (schneller
Hilfsspeicher) zugeordnet, der eine Vielzahl von Speicherplätzen zum
Speichern letzthin benutzter Übersetzungsworte umfaßt. In
Reaktion auf jede durch den Prozessor geschaffene Logische
Adresse sucht die PMMU den Übersetzungs-Cache für ein
entsprechendes Logisch/Physikalisches Übersetzungswort. Wenn
keines gefunden wird, wird der Prozessor angeleitet, den
Zugriffzyklus abzubrechen und den Systembus zu lösen, so daß
die PMMU auf eine Reihe von in dem Speicher bespeicherten
Übersetzungswort-Tabellen Zugriff nehmen kann, um das
richtige Logisch/Physikalische Adressen-Übersetzungswort zu
bestimmen und es in den Übersetzungs-Cache einzuschreiben. Wenn
daraufhin der Prozessor den abgebrochenen Zugriff-Zyklus neu
startet, benutzt die PMMU das neue Übersetzungswort in dem
Übersetzer-Cache, um die richtige Physikalische Adresse zur
Weitergabe an den Speicher zu bestimmen. Wenn der Prozessor
wieder auf eine Logische Adresse in der gleichen Logischen
Seite Zugriff nimmt, benutzt die PMMU das Übersetzungswort
in dem Übersetzungs-Cache wieder.
-
Bei einfachen virtuellen Speichersystemen besteht nur ein
einziger "logischer Adreßraum", der des gegenwärtig in dem
Prozessor in Ausführung begriffenen Programms. Da die PMMU
nur zu einer einzigen Reihe von Übersetzer-Tabellen Zugriff
hat, werden die gleichen Schutz- und Übersetzungskriterien
bei allen durch das Programm unternommenen Zugriffen
angewendet. Bei manchen Anwendungen ist es jedoch erwünscht,
unterschiedliche Schutz- oder Übersetzungs-Kriterien für gewisse
breite Klassen von Zugriffen zu schaffen, die durch das
Programm benutzt werden können.
-
Bei einigen virtuellen Speichersystemen ist eine Vielzahl
von separaten und bestimmten "Adreßräumen" vorgesehen, und
nötigenfalls bestimmten Programmen zugeordnet.
Beispielsweise schafft in US 4 430 705 der Prozessor eine
"Adreßraumzahl" zusammen mit jeder Logischen Adresse, so daß die PMMU
den auf den diesem Adreßraum zugeordnete Programm
zutreffenden Satz von Übersetzungs-Tabellen zugreifen kann. Damit
können unterschiedliche Schutz- und/oder
Übersetzungs-Kriterien in angemessener Weise an jeden unterschiedlichen
Adreßraum angelegt werden. Da andererseits jedes Programm
typischerweise nur einem einzigen Adreßraum zugeordnet ist, gibt
es immer noch keinen Weg, unterschiedliche Schutz- oder
Übersetzungs-Kriterien anzuwenden in Abhängigkeit von der
Zugriffart, die durch ein bestimmtes Programm getätigt wird.
-
Bei anderen virtuellen Speichersystemen sind nicht nur
unterschiedliche Adreßräume den Überwacher- und
Benutzerprogrammen zugeordnet, sondern es sind auch getrennte Adreßräume
für die Befehle und die Daten jeder dieser
Programmkategorien vorgesehen. Beispielsweise sorgt der Prozessor in US
4 084 226 zusammen mit jeder Logischen Adresse für einen
"Aufgabenamen", um die PMMU anzuweisen, welcher Adreßraum
zum übersetzen dieser Logischen Adresse zu verwenden ist.
Während dieser Mechanismus die Benutzung unterschiedlicher
Schutz- und/oder Übersetzungs-Kriterien für die Anwendungen
zuläßt, die solches erfordern, gibt es für Anwendungen, die
dieses Steuerniveau nicht erfordern, keinen Mechanismus, die
Adreßraum-Abbildung zu sperren. So ziehen alle Anwendungen
automatisch den bei der Adreßraum-Steuerung vorgesehenen
Organisationsaufwand auf sich, auch wenn diese Steuerung
manchmal gar nicht benötigt wird. Es ist deswegen erwünscht, die
PMMU fähig zu machen, wahlweise den
Adreßraum-Abbildungsmechanismus freizugeben.
Zusammenfassung der Erfindung
-
Deswegen ist es ein Ziel der vorliegenden Erfindung, einen
Mechanismus zum wahlweisen Freigeben oder Sperren der
Adreßraumabbildung durch eine Seitenspeicher-Verwaltungseinheit
(PMMU) zu schaffen.
-
Die vorliegende Erfindung schafft eine
Seitenspeicher-Verwaltungseinheit (PMMU) nach Anspruch 1.
Kurzbeschreibung der Zeichnung
-
Fig. 1 ist ein Blockschaltbild eines
Datenbearbeitungs-Systems mit einer nach einer
bevorzugten Ausführung der vorliegenden Erfindung
aufgebauten
Seitenspeicher-Verwaltungseinheit (PMMU).
-
Fig. 2 ist ein Blockschaltbild der PMMU der Fig. 1.
-
Fig. 3 stellt den
Übersetzungstabellen-Durchlaufvorgang der PMMU der Fig. 2 dar.
-
Fig. 4 zeigt die frühe Beendigung des Tabellen-
Durchlaufvorgangs der Fig. 3.
-
Fig. 5 stellt den
Übersetzertabellengrößen-Gültigkeitsmechanismus des
Tabellen-Durchlaufvorgangs der Fig. 3 dar.
Beschreibung der Erfindung
1. Zusammenfassung des Betriebs:
-
Bei einem einfachen Datenbearbeitungs-System ist der
Prozessor direkt mit dem Speicher verbunden. Es ist keine
Speicherabbildung oder Speicherschutz ist erforderlich, da die durch
den Prozessor erzeugten Adressen bereits Physikalische
Adressen sind. In ausgeklügelteren Systemen ist eine
Speicherverwaltungseinheit erforderlich, um die zur Unterstützung des
Anforderungs-Seitenbetriebs nötige Abbildungs-Fähigkeit zu
schaffen. Bei dem in Fig. 1 gezeigten Datenbearbeitungs-
System 10 ist der Adreßbus aufgeteilt in einen von dem
Prozessor 14 kommenden Logischen Adreßbus 12 und einen zu dem
Speicher 18 gehenden Physikalischen Adreßbus 16, wobei eine
Seitenspeicher-Verwaltungseinheit (PMMU) 20 zwischen den
Busen 12 und 16 eingesetzt ist. Im allgemeinen ist die PMMU
20 auch an dem Datenbus 22 und den zugehörigen
Bussteuersignalen 24 angeschlossen.
-
In der in Fig. 2 gezeigten bevorzugten Form der PMMU 20
speichert ein voll assoziativer Adreßübersetzungs-Cache (Address
Translation Cache ATC) 26 eine Vielzahl von beispielsweise
64 zur Zeit verwendeten Übersetzungen von Logikadressen zu
Physikalischen Adressen. Während der Adreß-Übersetzung
vergleicht der ATC 26 gleichzeitig den Logikadreß- und den
Funktionskode an dem Logikadreßbus 12 mit jedem von 64
Einträgen. Wenn ein Eintrag paßt < ein "Treffer") gibt der ATC 26
die gespeicherte Physikalische Adresse nach außen zu dem
externen Physikalischen Adreßbus. Wenn keine
Ausnahmebedingungen erfaßt werden, teilt die PMMU 90 dann einen
Physikalischen Adreßimpuls (PAS) zu, um dem Speicher 18 anzuzeigen,
daß die Physikalische Adresse gültig ist.
-
Zusätzlich zu den Logischen und den Physikalischen Adressen
enthält jeder Eintrag in ATC 26 auch Bits zum Ausführen
einer externen Daten-Cache-Sperre und gewisser
Schreibschutz-Funktionen. Wenn angemessen, kann der ATC 26
ausgewählte
Einträge verriegeln, um zu garantieren, daß die
entsprechenden Adressen immer treffen. Ein Warn-Mechanismus ist
vorgesehen, um das Verriegeln aller Einträge in dem ATC 26
zu verhindern.
-
Um eine verbesserte Cache-Verwendung zu schaffen, hat die
PMMU 20 die Fähigkeit, Einträge für Mehrfachaufgaben
gleichzeitig in den ATC 26 zu speichern. Um dies zu vollbringen,
besitzt der ATC 26 zusätzliche Bits in dem
Logikadreßabschnitt des Cache-Eintrages. Dieses Feld wird die "task
alias (Aufgaben-Parallelbezeichnung)" genannt und benutzt,
um zu bestimmen, ob ein Treffer erfolgt. Die PMMU 20 enthält
auch eine Wurzelzeiger-Tabelle (Root Pointer Table RPT) 28,
welche zur Zeit benutzte Werte des
CPU-Wurzelzeiger-(CRP-)Registers enthält. Wenn das CPU-Wurzelzeiger-Register mit
einem neuen Wert beladen wird, wird in der RPT 28 ein
Eintrag gemacht, ein task-alias-Wert zugeordnet und der ATC 26
von allen Einträgen befreit, die die gleichen task-alias
besitzen. Dieser task-alias-Wert wird benutzt als ein Zusatz
zur Logischen Adresse. Wenn ein Wert in das CRP-Register
eingeladen wird, der sich bereits in der RPT 28 befindet, wird
der alte task-alias-Wert benutzt, und der Cache wird nicht
befreit ("gespült").
-
Falls der ATC 26 keine Übersetzung für eine Logikadresse
besitzt, wirkt eine Mikromaschine 30 mit einer
Ausführungseinheit 32 und einiger zugehöriger Steuerlogik 34 während einer
Suche oder eines "Durchlaufs" durch die
Übersetzungs-Tabellen im Speicher für die korrekte Übersetzung zusammen. Vor
dem Einleiten des Suchens unterbricht die
Bus-Schnittstellen-Einheit (BIU) 36 jedoch den gerade ablaufenden Buszyklus
und entscheidet für die Buse 12, 16 und 22. Die BIU 36 setzt
dann Bussteuersignale durch, die die gegenwärtige Busführung
veranlassen, den laufenden Buszyklus zu beenden, den Bus zu
lösen und auf Wiederholung des abgebrochenen Zyklus zu
warten, sobald seine "Bus-Führung" wieder eingesetzt ist.
Auf die daraufhin erfolgende Aufnahme der Leitung der Buse,
signalisiert BIU 36 der Mikromaschine 30, daß der
Tabellendurchlauf
vorangehen kann. Nachdem der Tabellendurchlauf
vollendet ist, signalisiert die Mikromaschine 30 der BIU 43,
die Buse zu lösen.
-
In der bevorzugten Form besitzen die durch die PMMU 20
gestützten Übersetzungs-Tabellen eine Baumstruktur. Auf die
Wurzel eines Übersetzungs-Tabellenbaums zeigt eins von drei
-
Wurzelzeiger-Registern: CPU, Ablaufsteuerung oder DMA.
Tabelleneinträge an den oberen Pegeln des Baums sind Zeiger zu
anderen Tabellen. Einträge in Blatt-Tabellen sind
Seitenrahmenzahlen. Alle Adressen in den Übersetzungs-Tabellen sind
Physikalische Adressen.
-
Bei der bevorzugten Form kann der Prozessor 14 wahlweise
bestimmte für die Mikromaschine 30 verfügbare
Steuerinformation initialisieren, um verschiedene Aspekte des Tabellen-
Durchgangs zu bestimmen. Z.B. kann, auch wenn die erste
Nachschau in der Tabelle normalerweise durch Funktionskode
geschieht, dies unter Benutzung eines besonderen Befehlsbits
unterdrückt werden. Ein anderes Steuerfeld ist verfügbar, um
anzugeben, daß bis zu 15 Logikadreßbits hoher Ordnung
während des Tabellendurchgangs zu ignorieren sind. Gewisse
andere Steuerfelder sind auch vorgesehen, so daß der
Prozessor 14 die Anzahl von Pegeln von 1 bis 4 in der
Übersetzungstabelle angeben kann und die Anzahl von Logikadreßbits, bis
zu 15, die zum Indexieren in jeden Pegel benutzt werden
können.
2. Koprozessor-Schnittstelle:
-
Bei der bevorzugten Form steht der Prozessor 14 mit der PMMU
20 in erster Linie unter Benutzung der in der anhängigen
Anmeldung Ser.Nr. 631 518 beschriebenen
Koprozessor-Schnittstelle in Verbindung. Im allgemeinen ergibt diese in der
Mikromaschine 30 und der BIU 36 ausgeführte Schnittstelle
Zugriff zu dem PMMU 20-Programmier-Modell, steuert die
Tabellendurchlauf-Funktionen und stützt den Betrieb des
virtuellen Speichers. Die Mikromaschine 30 und BIU 36 führt auch
die CALLM/RTM-Schnittstelle aus, die in der anhängigen
Anmeldung Ser.No. 626 363 beschrieben ist, um Modul-Aufrufe und
-Rückläufe und die zugeordnete Zugriffpegel-Überprüfung zu
stützen.
-
Entsprechend zu der Schnittstelle für den Koprozessor 14
steht der Prozessor 14 mit der PMMU 20 in Verbindung durch
Ausführen von Bus lese- und Schreibvorgängen von/zu einer
Reihe von "Busregistern" in der Ausführungseinheit 32. Die
BIU 36 bestimmt, daß auf die Busregister zugegriffen wird
durch Dekodieren der Logischen Adresse und des
Funktionskodes, die während eines Buszyklus dargeboten werden. Falls
der Funktionskode einen CPU-Raumzugriff (0111) anzeigt und
die angebotene Adresse eine von den in der BIU 36 hart
verdrahteten Adressen ist, läßt die BIU 36 Zugriff auf das
entsprechende Busregister zu. In diesem Fall wird der
Physikalische Adressimpuls (PAS) nicht ausgegeben.
-
Die PMMU 20 enthält zwei Sätze von Busregistern in ihrer
Busschnittstelle: Koprozessor-Schnittstellen-Busregister und
Zugriffpegelsteuerungs-Busregister. Die
Koprozessor-Schnittstellen-Busregister bestehen aus folgenden:
-
Ansprechregister ist ein 16Bit-Register, das durch die PMMU
20 benutzt wird, um vom Prozessor 14 die Ausführung von
Funktionen anzufordern, die ausgeführt werden müssen,
damit die PMMU 20 den Befehl vervollständigen kann. Die
PMMU 20 reagiert immer, wenn auf das Ansprechregister
zugegriffen wird; Zugriffe sind immer gültig und keine
Protokollverletzung kann erfolgen.
-
Steuerregister ist ein 16Bit-Register, auf das durch den
Prozessor zugegriffen wird, um eine Ausnahmeanforderung
der PMMU 20 zu quittieren oder einen Befehl der PMMU 20
abzubrechen, der ein illegales Wirksames Adreßfeld
enthält. Der Prozessor 14 schreibt eine Maske in das
Steuerregister. Eine Maske mit gesetztem Bit 1 quittiert und
löscht, wie nachstehend beschrieben, wartende
Ausnahmen.
Eine Maske mit gesetztem Bit 0 leitet die PMMU 20
an, Bearbeitung des gegenwärtigen Befehls abzubrechen
und in den Zustand Leerlauf-Fertig zurückzukehren.
-
Abspeicherregister ist ein 16Bit-Register, welches, wenn es
durch den Prozessor gelesen wird, die PMMU 20
veranlaßt, einen Abspeichervorgang wie nachstehend
beschrieben zu initiieren. Die durch die PMMU 20 zugeführten
Daten sind ein Wort im 16Bit-Format des internen
Zustandes des PMMU 20. Der Prozessor 14 liest das
Abspeicherregister, bis die PMMU 20 anzeigt, daß sie bereit ist,
die Abspeichersequenz zu einzuleiten.
-
Wiederherstellregister ist ein 16Bit-Register, das, wenn
durch den Prozessor 14 eingeschrieben wird, die PMMU
veranlaßt, unmittelbar jeden aktuellen Betrieb
aufzuschieben und einen wie nachstehend beschriebenen
Wiederherstellbetrieb vorzubereiten. Die durch den Prozessor
14 zugeführten Daten sinsdt das 16Bit-Formatwort des
internen Zustandes des Koprozessors. Nach dem Prüfen des
Formatwortes zeigt die PMMU 20 dem Prozessor 14 an, ob
das Formatwort gültig ist oder nicht durch Einsetzen
eines Kodes in das Ansprech-Register. Zusätzlich kann
die PMMU 20 anzeigen, daß die PMMU 20 mit der
Vorbereitung zur Wiederherstellung beschäftigt ist oder daß die
PMMU 20 für die Übertragung des Restes des Zustandes
bereit ist.
-
Betriebswortregister wird in der bevorzugten Form der PMMU
20 nicht verwirklicht.
-
Befehlsregister ist ein 16Bit-Register, in das der Prozessor
14 einen Befehl zum Initiieren einer PMMU
20-Instruktion einschreibt.
-
Bedingungsregister ist ein 16Bit-Register, in den der
Prozessor 14 einen Bedingungsauswahlkode einschreibt, um eine
durch die PMMU 20 zu bewertende Bedingung zu
spezifizieren.
-
Operandenregister ist ein 32Bit-Register, durch welches der
Prozessor durch die PMMU 20 angeforderte Datenoperanden
überträgt.
-
Registerwähler ist ein 16Bit-Register, durch welches die
PMMU 20 dem Prozessor 14 anzeigen kann, welche der
verschiedenen Register im Prozessor 14 zu der PMMU 20 zu
übertragen sind.
-
Instruktions-Adreßregister wird in der bevorzugten Form der
PMMU 20 nicht verwirklicht.
-
Operanden-Adreßregister ist ein 32Bit-Register, das durch
den Prozessor benutzt wird, um die Quell- oder die
Bestimmungsadresse eines Operanden durchzuleiten, wenn
die PMMU 20 solche Information anfordert.
-
In der bevorzugten Form ist der PMMU 20 immer Koprozessor
Nummer 0 zugeordnet. Dementsprechend dekodiert die BIU 36
intern Logische Adressen $00020000 bis einschließlich
$0002001F, mit einem Funktionskode 0111, als die
Koprozessor-Schnittstellen-Busregister. Da jedoch nicht alle diese
Register gleichzeitig verfügbar zu sein brauchen, enthält
die Ausführungseinheit 32 einen Minimalsatz von
Physikalischen Registern, die wie erforderlich benutzt werden, um
einen oder mehrere dieser Busregister zu verwirklichen. Die
Funktionen dieser Busregister sind in der gleichzeitigen
Anmeldung Ser.Nr. 631 518 im Detail beschrieben.
-
Die PMMU 20 verwirklicht vorzugsweise die nachfolgenden
Koprozessor-Instruktionen:
-
PMOVE bewegt Daten zu oder von Registern der PMMU 20 unter
Benutzung der beim Prozessor 14 verfügbaren
Adressierarten. Der Betrieb geschieht in Byte, Wort, Langwort oder
Doppellangwort, je nach der Größe des betreffenden
Registers
der PMMU 20.
-
PVALID prüft die Zugriffniveaubits einer Logischen
Operanden-Adresse und führt einen vorzeichenlosen Vergleich
mit den Zugriffniveaubits des VAL-Registers aus. Falls
die LA-Bits arithmetisch weniger als die VAL-Bits sind,
verursacht diese Instruktion ein Trap mit dem
Zugriffpegel-Verletzungsvektor.
-
PTEST nimmt eine Logische Adresse und einen zugehörigen
Funktionskode, sucht in der ATC 26 oder den Übersetzungs-
Tabellen nach einem Eintrag, der diese Adresse
übersetzt. Die Ergebnisse dieser Suche sind in dem
Statusregister verfügbar. Wahlweise kann die Adresse des
zuletzt verwendeten Beschreibers zurückgeführt werden.
-
PLOAD nimmt eine Logische Adresse und einen zugehörigen
Funktionskode, durchsucht die Übersetzer-Tabelle und lädt
den ATC mit einem Eintrag zum Übersetzen der Adresse.
-
PFLUSH läßt die PMMU 20 den ATC 26 auf verschiedene Weise
"spülen": Spülen durch Effektive Adresse < ea> , durch
Funktionskode, oder sowohl durch < ea> als auch durch
Funktionskode.
-
PFLUSHR läßt das "Spülen" aller Einträge im ATC 26 zu, die
einem ungültig zu machenden CPU-Wurzelzeiger-Wert
zugeordnet sind. Die so bewertete < ea> wird benutzt, ein
Doppellangwort zu holen, der RPT wird nach diesem Wert
durchsucht und der ATC "gespült", falls der Wert im RPT
gefunden wird.
-
Bedingungsinstruktionen, wie verzweigebedingt und
setzbedingt, schafft Tests für die nachfolgenden Bits im
Statusregister: B, L, S, A, W, I, G und C. Die Negation
der vorstehenden Bedingungen kann auch überprüft
werden.
-
PSAVE unterstützt die virtuelle Speicherfähigkeit durch
Abspeichern des internen Status der PMMU 20, der sich mit
Koprozessorbetrieb befaßt, und der
CALLM/RTM-Funktionen.
-
PRESTORE unterstützt auch die virtuelle Speicherfähigkeit
durch Wiederherstellen des internen Status der PMMU 20,
der mit PSAVE abgespeichert wurde.
-
Alle PMMU 20-Instruktionen sind mit Ausnahme von PVALID
privilegiert. Ein Versuch, irgendeine andere PMMU
20-Instruktion durchzuführen, während der Prozessor 14 sich im
Benutzerzustand befindet, verursacht eine Koprozessor-Privileg-
Ausnahme.
-
Die Zugangssteuerbus-Register erlauben der PMMU 20 die in
der schwebenden Anmeldung Ser.No. 626 363
beschriebenen-Instruktionen CALLM und RTM zu unterstützen. Die BIU 36
dekodiert intern die Adressen $00010000 bis $0001005F mit einem
Funktionskode 0111 als ihre Zugangsniveau-Steuerbusregister.
Die Zugangs-Steuerbus-Register bestehen aus nachfolgenden:
-
Gegenwärtiger Zugriffpegel (CAL) führt, wenn gelesen, den
Wert der CAL- und VAL-Register zurück. Wenn
geschrieben, werden die Daten verworfen und der Buszyklus wird
normal beendet.
-
Zugriffniveau-Status (ALS) führt, wenn gelesen, einen Kode
zurück zu den CALLM- und RTM-Instruktionen, der
anzeigt, welche Aktion bei einem Modulaufruf oder einer
-Rückkehr unternommen werden sollte. Wenn geschrieben,
werden die Daten verworfen und der Buszyklus normal
beendet.
-
Zugriffpegel erhöhen (IAL) veranlaßt, wenn geschrieben, die
PMMU 20, den geschriebenen Wert gegenüber dem aktuellen
Zugriffpegel zu überprüfen, um zu bestimmen, ob der
neue Wert eine gültige Zugriffniveau-Änderung
darstellt.
Das Ergebnis dieser Überprüfung wird im
ALS-Busregister verfügbar gemacht. Dieses Busregister wird
durch die CALLM-Instruktion benutzt.
-
Zugriffniveau vermindern (DAL) veranlaßt, wenn geschrieben,
die PMMU 20, den geschriebenen Wert gegenüber dem
aktuellen Zugriffniveau zu überprüfen, um zu bestimmen,
ob der neue Wert eine gültige Zugriffpegel-Änderung
darstellt. Die Ergebnisse dieser Überprüfung werden in dem
ALS-Busregister verfügbar gemacht. Dieses Busregister
wird durch die RTM-Instruktion benutzt.
-
Beschreiberadressen (DA1-DA8) sind adressierbare Plätze, von
denen jeder einen jeweiligen der 8 Funktionskoden
darstellt. Wenn eine geschrieben wird, überprüft die PMMU
20 die Logische Adresse und den Funktionskode anhand
der Übersetzungs-Tabellen (wie eine PTEST-Instruktion).
Die Testergebnisse sind in dem ALS-Register verfügbar.
3. Register der PMMU 20:
-
Bei der bevorzugten Form der PMMU 20 sind verschiedene
Register in der Ausführungseinheit 32 vorhanden, die zum Steuern
oder Überwachen der Übersetzungs- und Schutzmerkmale der
PMMU 20 benutzt werden: Das CPU-Wurzelzeiger-(DRP)-Register,
das Überwacher-Wurzelzeiger-(SRP)-Register, das
DMA-Wurzelzeiger-(DRP)-Register, das Cache-Status-(CH)-Register, das
Übersetzungs-Steuer-(TC)-Register, das
Zugriffsteuer-(AC)-Register, das aktuelle Zugriffniveau-(CAL)-Register, das
Gültigzugriffniveau-(VAL)-Register, das Stapeländerungs-
Steuer-(SCC)-Register und ein Status-(STATUS)-Register.
-
Alle Register der PMMU 20 sind nur für im Überwachungs-
(supervisor-)-zustand arbeitende Programme direkt
zugänglich, jedoch können gewisse Benutzerinstruktionen in
begrenzter Weise auf einige Register zugreifen. Die CALLM- und
RTM-Instruktionen können CAL und VAL lesen und ändern. Die
PVALID-Instruktion benutzt den Inhalt des VAL-Registers, um
zu bestimmen, ob sie ein Trap verursachen soll.
-
Der CPU-Wurzelzeiger (CRP) ist ein 64Bit-Register, das einen
Zeiger zu der Wurzel des Übersetzungs-Tabellenbaums für die
aktuelle Benutzeraufgabe des Prozessors 14 enthält. In es
wird eingeschrieben bei einer Aufgabenänderung, um für die
neue Aufgabe auf die Wurzel eines Übersetzungsbaumes zu
zeigen. Einschreiben in dieses Register läßt auch das Cache-
Status-Register aktualisieren. Der CPU-Wurzelzeiger steht in
Wechselwirkung mit der Wurzelzeiger-Tabelle (RPT), um die
Benutzung des ATC 26 zu verbessern.
-
Der Überwachungs(supervisor)-Wurzelzeiger (SRP) ist ein
64Bit-Register, welches auf die Wurzel der zum Übersetzen
von Supervisorzugriffen zu benutzenden Übersetzer-Tabelle
zeigt. Jedoch wird der SRP nur benutzt, wenn das SRE-Bit des
Übersetzungs-Steuerregisters gesetzt ist. Nachladen des SRP
verursacht ein Spülen aller ATC 26-Einträge, die als
Supervisor markiert sind. Falls das SRE-Bit des
Übersetzungs-Steuerregisters gelöscht ist, wird das CRP für alle
prozessorinitiierten Tabellendurchläufe benutzt.
-
Der DMA Wurzelzeiger (DRP) ist ein 64Bit-Register, das auf
die Wurzel der Übersetzungs-Tabelle zeigt, welche benutzt
werden kann, wenn ein anderer Logikbusmeister durch die PMMU
20 übersetzt. Die Einträge in dem ATC 26, die geladen sind,
wenn ein anderer Busmeister zu übersetzen beginnt, werden
als solche markiert. Ein Nachladen dieses Registers
verursacht ein Spülen aller ATC 26-Einträge, die unter Benutzung
des DRP gebildet wurden.
-
Das Cache-Status-(CS)Register ist ein 16Bit-Register mit dem
nachfolgenden Format:
UNBENUTZT
-
wobei:
-
F anzeigt, ob Einträge mit dem im TA-Feld gezeigten
task-alias-Wert von dem ATC 26 der PMMU 20 gespült
wurden.
-
0 = nicht gespült
-
1 = gespült
-
LW ein Rastwarnbit, das anzeigt, daß alle Einträge bis
auf einen im ATC 26 gerastet wurden. Keine
zusätzlichen Einträge werden in den ATC 26 gerastet, bis
andere entfernt wurden.
-
0 = Normalbetrieb
-
1 = 63 Einträge im ATC 26 gerastet.
-
TA zeigt den aktuellen Wert der internen task alias.
-
Im allgemeinen ist CS dazu vorgesehen, bei der
Aufrechterhaltung eines externen Logikdaten-Cache zu unterstützen. Die
PMMU 20 hält Aufträge für mehr als eine Aufgabe in dem ATC
26 und einige ihrer internen Daten sind für andere Cache
nützlich. Dieses Register wird aktualisiert, wenn das
CRP-Register geschrieben wird. Der Inhalt gibt die Ergebnisse der
RPT-Suche wieder. Dieses Register kann mit der Instruktion
PMOVE gelesen werden.
-
Das Übersetzungs-Steuerregister (TC) ist ein 32Bit-Register
mit dem folgenden Format:
-
wobei:
-
E (Enable) Adressenübersetzung freigibt oder sperrt.
-
0 = gesperrt
-
1 = freigegeben
-
Bei Freigabe werden eingegebene Logikadressen als
Physikalische Adressen ausgegeben. Reset löscht
dieses Bit.
-
SRE (Supervisor-Wurzelzeiger-Freigabe) anzeigt, ob
Supervisor-Referenzen mit dem SRP übersetzt werden.
-
0 = Supervisor-Wurzelzeiger gesperrt
-
1 = Supervisor-Wurzelzeiger freigegeben.
-
Falls der SRP freigegeben ist, wird der (CRP) für
Supervisor-Übersetzungen benutzt.
-
FCL (Funktionskode-Nachschau) anzeigt, ob die Tabelle
mit oberstem Niveau in dem Übersetzungsbaum mit dem
Funktionskode bei Benutzung des CRP oder SRP
weitergeschaltet werden sollte.
-
0 = Funktionskodenachschau gesperrt
-
1 = Funktionskodenachschau freigegeben.
-
Falls der Funktionskodenachschau unterdrückt ist,
wird die erste Nachschau durchgeführt unter
Benutzung von Bits von der Logischen Adresse als Index.
Falls die Funktionskodenachschau freigegeben ist,
wird das für Übersetzungen benutzte LIMIT-Feld des
Wurzelzeigers ignoriert. Der Funktionskodenachschau
wird immer durchgeführt, wenn der DMA-Wurzelzeiger
für Übersetzungen durch einen anderen Busmeister
benutzt wird.
-
PS (Seitengröße) die aktuelle Seitengröße zeigt, welche
die PMMU 20 unterstützt:
-
1000 256 Byte
-
1001 512 Byte
-
1010 1K Byte
-
1011 2K Byte
-
1100 4K Byte
-
1101 8K Byte
-
1110 16K Byte
-
1111 32K Byte.
-
Es wird immer angenommen, daß das Seitengröße-Bit 3
eine 1 ist. Ein Wert 0 in Bit 3 dieses Feldes ist
für zukünftige Erweiterungen reserviert. Ein
Einschreiben von 0 auf Bit 3 in diesem Feld über die
PMOVE-Instruktion läßt eine Gestaltungs-Ausnahme
signalisieren.
-
IS (Eingangs-Verschiebung) bestimmt, wieviele obere
Logische Adressenbits durch die PMMU 20 während der
Tabellendurchschau ignoriert werden. Der Wert dieses
Feldes wird als eine ganze Zahl von 0 bis 15
genommen, welche die Anzahl von abzulegenden Bits aus der
Logischen Adresse anzeigt, beginnend mit Bit 31.
Dadurch kann die PMMU 20 leicht an Systeme angepaßt
werden, die Logische Adressen von 17 bis 32 Bits
benutzen.
-
TIx (Tabellenindex N) gibt die Anzahl an Bits von
Logischen Adressen an, die als ein Index in die Tabellen
an jedem Niveau zu benutzen sind. In der bevorzugten
Form werden vier Tabellenindices vorgesehen. Die
erste Nachschau unter Benutzung von Logischen
Adreßbits (welches die zweite sein wird, falls die
Nachschau auf Funktionskode nicht unterdrückt wird)
benutzt TIA, die zweite TIB usw. Der Wert des Feldes
ist eine vorzeichenlose ganze Zahl von 0 bis 15,
welche die Anzahl von Bits darstellt, welche von der
Logischen Adresse als ein Index zu nehmen sind. Ein
0-Wert in einem TIx-Feld gibt an, daß keine weiteren
Tabellen für diese Übersetzung zu benutzen sind.
-
Im allgemeinen enthält TC Steuerbits, um die Seitengröße,
die Anzahl von Niveaus in dem Übersetzungsbaum und die Größe
der Tabelle bei jedem Niveau einzustellen. Das IS-
(Eingangsverschiebungs-)Feld steuert, wieviele obere Logische
Adreßbits durch die PMMU 20 am Eingang vor einem
Tabellendurchlauf verworfen werden, was es erlaubt, die PMMU 20 leicht
Systemen mit Logischen Adressen anzupassen, welche kleiner als
32 Bits sind. Die vier TIx-Felder, TIA (Tabellenindex A),
TIB (Tabellenindex B), TIC (Tabellenindex C), und TID
(Tabellenindex D) steuern, wieviele Bits der Logischen Adresse
benutzt werden, um in die Übersetzungstabellen an jedem
Nachschauniveau zu indizieren. Das PS (Seitengröße)-Feld
definiert indirekt die Seitengröße dadurch, daß es steuert,
wieviele untere Logische Adreßbits als die Seitenversetzung
durchzulassen sind. Da in der bevorzugten Form jede Logische
Adresse 32 Bits umfaßt, muß die Anzahl der anfangs
verschobenen Bits plus die Anzahl der zum Indexieren in jede der
Tabellen benutzten Bits plus die Anzahl der Seitenversetzungs-
Bits für die richtige Adressen-Übersetzung gleich 32 sein.
Dementsprechend führt jedesmal, wenn TC geschrieben wird die
PMMU 20 eine Konsistenzüberprüfung der Werte von IS, von TIx
und PS aus, wie in Fig. 3 gezeigt, und signalisiert einen
Konfigurationsfehler an den Prozessor 14, falls die Summe
nicht gleich 32 ist. Wenn erwünscht, kann eines oder können
mehrere TIx-Felder Null sein. Jedoch müssen in einem solchen
Fall alle nachfolgenden TIx-Felder auch Null sein. Das
Schreiben in TC verursacht auch ein Spülen des ATC 26.
-
Das aktuelle Zugriffpegel-(CAL)-Register enthält den
kodierten Zugriffpegel für den aktuellen Modul. Das Register ist
8Bit breit, jedoch sind in der bevorzugten Form nur die
obersten drei Bits besetzt. Die unbesetzten Bits lesen sich als
Nullen. Dieses Register wird automatisch durch die CALLM-
und RTM-Instruktionen geladen. Es kann auch mit der
PMOVE-Instruktion geladen werden.
-
Das gültige Zugriffpegel-(VAL)-Register enthält den
Zugriffpegel für den Aufruf des gegenwärtigen Moduls. Das Register
ist 8 Bit breit, es sind jedoch in der bevorzugten Form nur
die oberen drei Bits aufgefüllt. Unaufgefüllte Bits lesen
sich als Nullen. Dieses Register wird automatisch mit dem
Inhalt des CAL-Registers durch die CALLM-Instruktion geladen
und von dem Stapelrahmen durch die RTM-Instruktion
nachgeladen. Es wird auch durch die PVALID-Instruktion zur
Gültigmachung von Parametern benutzt. Es kann auch mit der
PMOVE-Instruktion
geladen werden.
-
Das Stapeländerungs-Steuer-(SCC)Register ist ein
8Bit-Register, das bestimmt, ob eine Stapeländerung während einer
CALLM-Instruktion erfolgen soll.
-
Das Zugriffsteuer-(AC)Register ist ein 16Bit-Register mit
dem folgenden Format:
-
wobei:
-
MC (Modulsteuerung), wenn gesetzt, einen Modulbetrieb
ermöglicht; falls gelöscht, werden die Module
gesperrt, Einschreibungen in IAL und DAL ändern CAL
nicht und alles Lesen von ALS kehrt zum illegalen
Kode zurück. Das läßt alle CALLM- und
RTM-Instruktionen zu trap kommen. Auch die PVALID-Instruktion wird
immer eine Ausnahme verursachen.
-
0 gesperrt
-
1 freigegeben.
-
ALC (Zugriffpegelsteuerung) bestimmt die Anzahl der
oberen Bits der Logischen Adresse, die als
Zugriffpegel-Information benutzt werden, und ob Zugriffpegel
freigegeben sind. Das Feld wird kodiert als:
-
00 keine Adreßbits: Zugriffpegel gesperrt
-
01 ein Adreßbit: 2 Zugriffpegel von jeweils
2 31 Byte
-
10 zwei Adreßbits: 4 Zugriffpegel von jeweils
2 30 Byte
-
11 drei Adreßbits: 8 Zugriffpegel von jeweils
2 29 Byte.
-
Dieses Feld wird bei einem Reset auf 00
initialisiert.
-
GS (Gate-Größe) bezeichnet die Größe von Gates und
demzufolge die Grenze, bei der ein Gate zu Fallen
zugelassen ist. Das Feld ist wie folgt kodiert:
-
00 keine Gates gültig
-
01 Gates sind 16 Bytes
-
10 Gates sind 32 Bytes
-
11 Gates sind 64 Bytes.
-
Im allgemeinen wird das AC-Register benutzt, verschiedene
Zugriffsteuerungen zu konfigurieren, welche die PMMU 20
unterstützt. Das Register steuert, ob die Zugriffpegel
freigegeben werden, wieviele obere Adreßbits
Zugriffpegel-Information enthalten (bis maximal 3) und bezeichnet auch die Größe
eines Gates und demzufolge die Grenze, bei dem ein Gate zu
Fallen zugelassen ist.
-
Das Status (STATUS)-Register ist ein 16Bit-Register mit dem
folgenden Format:
-
wobei:
-
B (Bus-Fehler) gesetzt wird, wenn ein Bus-Fehler
während des Tabellen-Durchlaufs zur PMMU 20
zurückgeführt wird.
-
L (Grenzwert-Verletzung) gesetzt wird, wenn ein Index
eine Grenzwert bei dem Test überschreitet; sonst
gelöscht.
-
S (Supervisor-Verletzung) gesetzt wird, wenn eine
Supervisor-Verletzung erfaßt wurde; sonst gelöscht.
-
A (Zugriffpegel-Verletzung) gesetzt wird, wenn der
geprüfte Zugriff RAL verletzte, wenn gelesen wurde,
oder WAL oder RAL überschritt, wenn geschrieben
wurden; sonst gelöscht.
-
W (Schreibschutz) gesetzt wird, wenn die Adresse nicht
überschreibbar ist; sonst gelöscht.
-
I (ungültig) gesetzt wird, wenn die Adresse keine
Übersetzung in der Tabelle besitzt; sonst gelöscht.
-
M (modifiziert) gesetzt wird, wenn die Adresse im
Cache gefunden wurde und das M-Bit gesetzt hat.
-
G (Gate) gesetzt wird, wenn die Adresse eine gültige
Gate-Adresse ist.
-
C gesetzt wird, wenn die Adresse global anteilfähig
markiert ist.
-
N (Zahl) auf die Anzahl von bei der Übersetzung einer
Adresse benutzten Tabellen gesetzt wird.
-
Im allgemeinen enthält Status Information, welche den Status
der PMMU 20 betrifft, und wird nur durch die
PTEST-Instruktion beeinflußt. Die Bits wirken jedoch in der folgenden
Weise aufeinander ein: Falls B gesetzt, dann ist I gesetzt
und L, S, A, G und C sind gelöscht; oder wenn L gesetzt ist,
ist auch I gesetzt und S, A, G und C sind gelöscht. Die
unterschiedlichen Fälle haben, wenn sie gesetzt sind,
typischerweise die folgenden Implikationen:
-
B Schlechter Zeiger beim
Tabellen/Hauptspeicher-Versagen
-
L Adressierfehler durch Aufgabe/Anforderung für
Stapelerweiterung
-
S Versuch des Benutzers, Supervisorkode auszuführen
-
A Versuch, den Zugriffpegel zu überschreiten
-
W Versuch, in geschützten Speicher zu schreiben
-
I Seitenfehler
4. Zugriffschutz:
-
Die PMMU 20 schafft Mechanismen, Kode und Daten gegen
unauthorisierten Zugriff zu schützen, um bei unterschiedlichen
Zugriffpegeln laufenden Koden unterschiedliche
Speicherprivilegien zuzulassen und Änderungen im Zugriffpegel zu steuern.
-
Im allgemeinen ergeben Zugriffpegel ein Mittel,
unterschiedlichen Abschnitten einer Benutzeraufgabe unterschiedliche
Privilegien zu dem Raum der Logischen Adresse zuzulassen.
Bei der bevorzugten Form unterstützt die PMMU 20
Zugriffpegel 0, 2, 4 oder 8. Dies wird durch das ALC-Feld des
AC-Registers gesteuert. Die in diesem Feld gesetzten Werte haben
die folgenden Auswirkungen:
-
00 Keine Zugriffpegel. Kein Buszyklus-Privileg geprüft
gegen CAL. Keine Stapeländerung auf
CALLM-Instruktionen angefordert.
-
01 2 Zugriffpegel. Bit 31 der Logischen Adresse, Bit 7
von CAL und Bit 7 von VAL sind die Zugriffpegel-Bits.
Bit 0 des SCC-Registers wird benutzt.
-
10 4 Zugriffpegel. Bits 31-30 der Logischen Adresse. Bits
7-6 von CAL und Bits 7-6 von VAL sind die
Zugriffpegel-Bits. Bits 0, 2 und 4 des SCC-Registers werden
benutzt.
-
11 8 Zugriffpegel. Bits 31-29 der Logischen Adresse, Bits
7-5 von CAL und Bits 7-5 von VAL sind die
Zugriffpegel-Bits.
Bits 0-6 des SCC-Registers werden benutzt.
-
Jeder Buszyklus-Lauf durch den Logischen Busmeister wird
durch die PMMU 20 auf ausreichendes Privileg überprüft. Das
wird dadurch erledigt, daß (ohne Vorzeichen) die
Zugriffpegel-Bits der Logischen Adresse mit den Zugriffpegel-Bits des
gültigen Zugriffpegel-(CAL)-Registers verglichen werden.
Falls die ankommenden Adreßbits geringer als die CAL-Bits
sind, mittels eines numerischen ohne
Vorzeichen-Berücksichtigung durchgeführten Vergleichs festgestellt, und die
Funktionskode einen Benutzer-Raumzugriff anzeigen, fordert der
Buszyklus ein Privileg an, das die Routine nicht hat. In
diesem Fall beendet die PMMU 20 den Buszyklus durch Ausgabe
des BERR-Signals. Falls die Referenz zum Supervisorraum
gehört, wird diese Überprüfung nicht durchgeführt. Es sei
bemerkt, daß eine Aufgabe Adressen erzeugen kann, für die sie
nicht den Benutzungszugriff besitzt, und daß gültige
Übersetzungen in dem ATC 26 von höher privilegierten Routinen übrig
sind. Die Überprüfung garantiert in diesen Fällen Schutz.
-
Die PMMU 20 enthält Unterstützung für Modulaufrufe mit den
Rufmodul-(CALLM)- und Rückkehr vom
Modul-(RTM)-Instruktionen. Modulaufrufe sind einfach das Mittel, durch das ein
Modul einen Betriebszugriff durchführt oder in diesem Falle
auf einen Modul im Speicher zuzugreift. Die
CALLM-Instruktion schafft einen Modulstapelrahmen und speichert den
Zustand des Rufmoduls in diesem Rahmen. Die RTM-Instruktion
gewinnt den Status des Rufmoduls von dem Modulstapelrahmen
zurück, bevor sie zum Rufmodul zurückkehrt. Die Formate des
Modulbeschreibers und des Modulstapelrahmens werden in der
anhängigen Anmeldung Ser.No. 626 363 beschrieben, auf die
hier zur Referenz verwiesen wird. Während der Ausführung der
CALLM-Instruktion erhält der Prozessor 14 den Zugriffpegel
des gerufenen Moduls von dem Modulbeschreiber; und später
gewinnt er den Zugriffpegel des rufenden Moduls von dem
Modulstapel während der Ausführung der RTM-Instruktion. Obwohl
der Prozessor 14 typischerweise diese
Zugriffsteuer-Information nicht interpretiert, verbindet er sich mit der PMMU 20,
wenn die Zugriffsteuerung zu ändern ist, und verläßt sich
auf die PMMU 20, daß sie nachprüft, ob die Änderungen legal
sind. Bei der vorliegenden Erfindung wird diese Verbindung
über eine Busschnittstelle begrenzter Breite ausgeführt.
-
Im allgemeinen unterstützt der Modulmechanismus einen
feineren Pegel von Zugriffsteuerung, als den durch die
Unterscheidung zwischen Benutzer- und Supervisor-Referenzen
geschaffenen. Der Modulmechanismus gestattet einem Modul mit
begrenzten Zugriffrechten, einen Modul mit größeren Zugriffrechten
zu rufen. Mit Hilfe der PMMU 20 kann der Prozessor 14
überprüfen, daß der rufende Modul seine Zugriffrechte erhöhen
darf, und kann Versuche eines rufenden Moduls erfassen,
Zugriffrechte zu erhalten, zu denen er nicht berechtigt ist.
-
Bei der Ausführung von CALLM- oder RTM-Instruktionen, deren
Referenz-Zugriffpegel Modulbeschreiber oder -Rahmen ändern,
geht der Prozessor 14 mit der Zugriff-Steuerlogik der PMMU
20 in Verbindung über Zugriffe in dem CPU-Raum. Falls bei
einem dieser CPU-Raum-Zugriffe während der Ausführung einer
CALLM- oder RTM-Instruktion ein Busfehler auftritt, nimmt
der Prozessor 14 eine Formatfehler-Ausnahme.
-
Im Betrieb kann der Prozessor 14 die Zugriffrechte des
aktuellen Moduls durch Lesen des aktuellen
Zugriffpegel-(CAL)-Busregisters bestimmen. Das erhöhte
Zugriffpegel-(IAL)-Busregister wird durch den Prozessor 14 benutzt, erhöhte
Zugriffrechte anzufordern. Das verminderte
Zugriffpegel-(DAL)-Busregister wird durch den Prozessor 14 benutzt, verminderte
Zugriffrechte anzufordern. Die Formate dieser drei Busregister
sind durch den Prozessor 14 nicht definiert, jedoch nimmt
der Prozessor 14 an, daß aus dem CAL-Busregister ausgelesene
Information bedeutungsvoll in den IAL- oder den
DAL-Busregister eingeschrieben werden kann. Das Zugriffpegelstatus-
(ALS)-Busregister erlaubt dem Prozessor 14, die PMMU 20 nach
der Legalität der beabsichtigten Zugriffpegel-Übergänge wie
folgt zu befragen:
Wert Gültigkeit Betätigung Prozessor 14 ungültig Formatfehler gültig keine Änderung der Zugriffrechte Änderung nur von Zugriffrechten Änderung v. Zugriffr. u. Stapelzeiger andere undefiniert
-
Der Prozessor 14 benutzt die
Beschreiberadressen-(DA)-Busregister während CALLM zur Verbindung mit der Adresse des
Modulbeschreibers. Das läßt die PMMU 20 verifizieren, daß die
Adresse eine gültige Adresse für den Beschreiber ist. Dies
hindert auch einen Modul daran, einen
Zugriffpegel-Änderungsbeschreiber zu schaffen, um unberechtigt seine Zugriffrechte
zu erhöhen.
-
Im allgemeinen wird die CALLM-Instruktion benutzt, sowohl
Zugriffpegel-Änderungs- als auch Nicht-Zugriffpegel-Änderungs-
Modulanrufe herzustellen. Für die letzte Art von
Modulanrufen schafft und füllt der Prozessor 14 einfach den
Modulstapelrahmen oben auf dem aktiven Systemstapel. Die
Bedingungskode des anrufenden Moduls werden in einem entsprechenden
Feld des Rahmens abgespeichert. Je nach gewisser
Steuerinformation kann der Prozessor 14 den Stapelzeiger des anrufenden
Moduls abspeichern oder nicht. Der Prozessor 14 wird jedoch
das Zeigerregister des Moduldatenbereichs abspeichern und
laden, bevor die Ausführung des gerufenen Moduls beginnt.
-
Für den Zugriffänderungstyp des Modulbeschreibers muß der
Prozessor 14 zuerst den aktuellen Zugriffpegel von der PMMU
20 erhalten. Er verifiziert auch, daß der rufende Modul das
Recht hat, aus dem Gebiet auszulesen, auf das der aktuelle
Wert des Stapelzeigers zeigt. Er reicht dann die
Beschreiberadresse und den neuen Zugriffpegel an die PMMU 20 zur
Gültigkeitüberprüfung weiter. Der Prozessor 14 liest dann den
Zugriffstatus, um die Entscheidung der PMMU 20 bezüglich der
Gültigkeit der angeforderten Zugriffpegel-Änderung zu
bestimmen. Falls die PMMU 20 bestimmt, daß die Änderung des
Zugriffpegels nicht gewährt werden sollte, ist der
Zugriffstatus
Null und der Prozessor 14 nimmt eine
Formatfehler-Ausnahme. Keine sichtbaren Register des Prozessors 14 sind
geändert, noch ändert die PMMU 20 den aktuellen Zugriffpegel.
Falls die PMMU 20 bestimmt, daß die Änderung gewährt werden
sollte, ändert die PMMU 20 den aktuellen Zugriffpegel und
läßt den Prozessor 14 fortfahren. Falls der Zugriffstatus
eine Änderung bei dem Stapelzeiger erfordert, lädt der
Prozessor 14 den neuen Wert von dem Modulbeschreiber ein und
kopiert alle Argumente von dem Stapel des rufenden Moduls auf
den neuen Stapel. Schließlich schafft und füllt der
Prozessor 14 den Modulstapelrahmen oben auf dem neuen Stapel. Die
Bedingungskoden des rufenden Moduls werden in einem
zugehörigen Feld des Rahmens abgespeichert. Die Ausführung des
gerufenen Moduls beginnt mit dem Nicht-Zugriffpegel-Änderungstyp
des Modulbeschreibers.
-
Die RTM-Instruktion wird zum Rückkehren von einem Modul
benutzt. Für den Nicht-Zugriffpegel-Änderungstyp des
Modulstapelrahmens lädt der Prozessor die Bedingungskoden, den
Programmzähler und das Moduldatenbereichs-Zeigerregister von
dem Rahmen. Der Rahmen wird dann von der Oberseite des
Stapels entfernt, die Argumentzählung wird zum Stapelzeiger
hinzugefügt und die Ausführung kehrt zu dem rufenden Modul
zurück.
-
Für den Zugriffpegel-Änderungstyp des Modulstapelrahmens
liest der Prozessor 14 den Zugriffpegel, die
Bedingungskoden, den Programmzähler, das abgespeicherte Moduldatengebiet
und den abgespeicherten Stapelzeiger von dem Rahmen. Der
alte Zugriffpegel wird der PMMU 20 zur
Gültigkeitsüberprüfung eingeschrieben. Der Prozessor 14 liest dann den
Zugriffstatus, um die Entscheidung der PMMU 20 bezüglich der
Gültigkeit der angeforderten Zugriffpegeländerung zu bestimmen.
Falls die PMMU 20 bestimmt, daß die Änderung beim
Zugriffpegel nicht gewährt werden sollte, ist der Zugriffstatus Null
und der Prozessor 14 nimmt eine Formatfehler-Ausnahme. Keine
sichtbaren Register des Prozessors 14 werden geändert, noch
ändert die PMMU 20 den gültigen Zugriffpegel. Falls die PMMU
20
bestimmt, daß die Änderung gewährt wird, ändert die PMMU
20 den aktuellen Zugriffpegel und läßt den Prozessor 14
fortfahren. Der Prozessor 14 lädt dann die Werte von dem
Modulstapelrahmen in die entsprechenden Register, für den
Argumentzählwert zu dem neuen Stapelzeigerwert hinzu und kehrt
zu dem rufenden Modul zurück.
-
Wenn der gerufene Modul nicht wünscht, daß der
Moduldatenzeiger in ein Register geladen wird, kann das
RTM-Instruktionswort dies bezeichnen und der geladene Wert wird dann mit dem
korrekten Stapelzeigerwert überlegt.
-
Während der Ausführung der CALLM-Instruktion haben der
Prozessor 14 und die PMMU 20 ganz bestimmte
Verantwortlichkeiten. Anfangs muß der Prozessor 14 den aktuellen Wert in dem
CAL-Register über das CAL-Busregister zurückgewinnen und ihn
in dem Modulstapelrahmen für späteren Gebrauch speichern. In
der bevorzugten Form führt die PMMU 20 Bits 7-5 des
CAL-Registers in Bits 7-5 des CAL-Busregisters zurück, und Bits 7-5
des VAL-Registers in Bits 3-1 des CAL-Busregisters.
-
Als nächstes muß der Prozessor 14 die Adresse des
Modulbeschreibers des gerufenen Moduls in das zugehörige der acht
DA-Busregister schreiben. Wenn ein Wert in eines der
DA-Busregister eingeschrieben ist, wird die aus dem Inhalt des
DA-Busregisters und dem diesem DA-Busregister zugehörigen
Funktionskode bestehende Logische Adresse in den
Übersetzungs-Tabellen und/oder dem Übersetzungs-Cache nachgesehen.
Normalerweise sollte ein Cache-Eintrag für die Adresse
bereitgestellt sein, da die CALLM-Instruktion bereits das
erste Wort des gerufenen Moduls gelesen hat, um den Typ und
die Zugriffpegel-Information zu erhalten. Wenn jedoch kein
Cache-Eintrag lokalisiert wird, wird eine Tabellensuche
unternommen und ein Eintrag in den Cache eingesetzt. Wenn
keine Übersetzung in den Tabellen festgestellt werden kann,
wird der Aufruf unerlaubt gemacht. Eine Adresse ist für ein
Gate gültig, falls die Seite, in der es sich befindet,
zugelassen ist, Gates zu enthalten (d. h. das G-Bit in dem
Beschreiber gesetzt ist), und falls die Adresse gleich
0 Modulo-Gategröße ist (Gategröße wird bestimmt durch das
GS-Feld des AC-Registers). Der Erfolg oder das Versagen der
Beschreiber-Überprüfung wird durch die PMMU 20 zur Verwendung
bei der Rückkehr zu einem Zugriffstatuswert zurückgehalten.
-
Als nächstes fordert der Prozessor 14 die PMMU 20 auf, das
CAL-Register durch Einschreiben des neuen Zugriffpegels zu
dem IAL-Busregister zu aktualisieren. In der bevorzugten
Form vergleicht die PMMU 20 (ohne
Vorzeichen-Berücksichtigung) den in das IAL-Busregister geschriebenen Wert mit den
Zugriffpegel-Bits des CAL-Registers. Falls IAL größer als
CAL, versagt die Zugriffpegel-Überprüfung. Falls IAL kleiner
als CAL ist und das Gate-Bit für die Seite, welche den
Modulbeschreiber des aufgerufenen Moduls enthält, gesetzt ist,
ist die Änderung zugelassen. Falls IAL gleich CAL ist, läuft
die Zugriffpegel-Überprüfung durch. CAL wird auf VAL kopiert
und IAL in CAL eingesetzt. Der Erfolg oder das Versagen der
Zugriffpegel-Änderung wird durch die PMMU 20 für die
Verwendung bei Rückkehr in den Zugriffstatuswert zurückgehalten.
-
Information über Stapeländerungen ist in dem SCC-Register
enthalten. Bei einem erfolgreichen Anwachsen des
Zugriff-Privilegs, werden die Bits im SCC-Register mit
Bitpositionszahl kleiner als der aktuelle Zugriffpegel und größer als
der neue Zugriffpegel oder ihm gleich geprüft. Wenn
irgendeines dieser Bits eine Eins ist, wird eine Stapeländerung
angezeigt. Die Notwendigkeit oder die fehlende Notwendigkeit
für eine Stapeländerung wird intern zur Verwendung bei der
Rückkehr eines Zugriffstatuswertes zurückgehalten.
-
Die durch den Prozessor 14 in einer CALLM-Sequenz
ausgeführte abschließende Aktion ist, das ALS-Busregister der PMMU 20
zu lesen, um den Zugriffstatus zu erhalten. Der
zurückgeführte Wert ist wie oben definiert.
-
Bei einer RTM-Instruktion schreibt der Prozessor 14 den
alten (abgespeicherten) Zugriffpegel in das DAL-Busregister
der PMMU 20. Er prüft dann den Status der
Zugriffpegel-Änderung. Wenn ein Wert in das DAL-Busregister eingeschrieben
ist, vergleicht die PMMU 20 die Zugriffpegel-Bits (ohne
Berücksichtigung der Vorzeichen) mit den Zugriffpegel-Bits des
CAL-Registers. In einer Ausführung der Erfindung wird, wenn
das DAL-Feld größer oder gleich dem CAL-Feld ist, die
Änderung zugelassen und die Bits 7-5 des DAL in CAL eingesetzt
und Bits 3-1 des DAL in VAL gesetzt. Falls das DAL-Feld
kleiner als das CAL-Feld ist, wird die Änderung nicht
zugelassen. Der Erfolg oder das Versagen der Zugriffpegel-Änderung
wird durch die PMMU 20 zur Verwendung bei der Rückkehr eines
Zugriffstatuswertes zurückgehalten.
-
Die abschließende durch den Prozessor 14 bei einer
RTM-Sequenz ausgeführte Aktion ist das Lesen des ALS-Busregisters
der PMMU 20, um den Zugriffstatus zu erhalten. Der
zurückgeführte Wert ist wie vorstehend definiert.
-
Bei der bevorzugten Form schafft die PMMU 20 zusätzlichen
Zugriffschutz. Beispielsweise wird eine Anzeige von
Schreibschutz bei jedem Niveau des Übersetzerbaumes gespeichert.
Eine Seite wird als mit diesem Attribut versehen betrachtet,
wenn irgendeine Tabelle bei irgendeinem Niveau das
Schreibschutz-(WP)-Bit gesetzt hat.
-
Der wirksame Schreibschutz einer Seite wird bestimmt durch
Logisches ODERn der WP-Bits jedes während des
Tabellendurchgangs geholten Beschreibers und überprüfen der Lese- und
Schreib-Zugriffpegel-Bits der Adresse anhand der jeweiligen
RAL- und WAL-Felder (falls Zugriffpegel freigegeben sind).
Am Ende des Tabellendurchgangs wird, wenn die Seite wirksam
schreibgeschützt ist, ein Eintrag für diese Logische Adresse
in dem Beschreiber-Cache mit gesetztem WP-Bit gemacht.
-
Eine Seite kann nur gesperrt sein oder ein Gate enthalten,
falls das entsprechende Bit am untersten Niveau der Tabelle
gesetzt ist. Die Anzeige von modifizierter und von Cache-
Sperre sind auch nur an dem untersten Niveau der Tabelle
vorhanden.
-
Für feinere Steuerung bezüglich der einer Seite zugeordneten
Rechte können Langbeschreiber benutzt werden, um Zugriffe
aufgrund von Benutzer/Supervisor zu begrenzen und 8
Privileg-Niveaus sind sowohl für Lese- wie Schreibzugriffe
verfügbar, um einen wirksamen hierarchischen Schutzmechanismus zu
schaffen. Falls Zugriffrecht-Verletzungen während des
Tabellendurchgangs erfaßt werden, wird ein Eintrag von der
ankommenden Logischen Adresse gebildet, und das BERR- oder das
WP-Bit wird in dem ATC-26-Eintrag gesetzt für Lesezugriff-
Verletzungen bzw. Schreibzugriff-Verletzungen.
Aufeinanderfolgende Zugriffe zu dieser Logischen Adresse verursachen
die Abgabe des BERR-Stiftes, falls ein Treffer in dem AT 26
mit dem gesetzten BERR-Bit des Eintrags auftritt, oder falls
ein Schreibversuch mit dem gesetzten WP-Bit auftritt.
5. Übersetzungs-Tabellen:
-
In der bevorzugten Form sind die Übersetzungs-Tabellen als
ein Baum strukturiert. Diese Baumstruktur verringert die
Größe der Seitentabellen, die für die meisten Programme
aufgesetzt werden müssen, da nur ein Abschnitt des
vollständigen Baumes vorhanden zu sein braucht.
-
Es gibt zwei Arten von Übersetzungs-Tabellen:
Zeiger-Tabellen und Seiten-Tabellen. Zeiger-Tabellen bilden die Zweige
des Übersetzungs-Tabellenbaumes, während Seiten-Tabellen die
Blätter sind. Die Tabellen sind aus Beschreibern
zusammengesetzt. Das Format ist gleichartig für Seiten- wie für
Zeiger-Beschreiber und besteht aus einem Adreßfeld und einem
Steuer/Status-Feld. Im allgemeinen wird das Adreßfeld eines
Seitenbeschreibers benutzt, um die Aufzeichnung Logische
gegen physikalische Adresse einer Seite zu definieren,
während das Adreßfeld eines Zeigerbeschreibers benutzt wird,
auf andere Übersetzungs-Tabellen in dem Baum zu zeigen.
-
Der Wurzelzeiger-Beschreiber wird benutzt, um auf die Wurzel
eines Übersetzer-Baums zu zeigen. Diese Art von Beschreiber
wird nur in den Wurzelzeiger-Registern benutzt. Übersetzer-
Bäume können auf einer aufgabenbezogenen Basis existieren,
oder sie können von Aufgaben gemeinsam benutzt werden,
jenachdem, ob der CPE-Wurzelzeiger (CRP)-Beschreiber an einem
Kontext-Schalter geändert wird. Zusätzlich benutzen für
einen anderen Busmeister ausgeführte Übersetzungen einen
Übersetzer-Baum, auf den durch den DMA-Wurzelzeiger (DRP)
gezeigt wird. Falls erwünscht, können Supervisor-Zugriffe mit
Benutzung eines anderen Übersetzer-Baums übersetzt werden
als dem, auf den durch den CRP gezeigt wird durch Benutzung
des Supervisor-Wurzelzeigers SRP.
-
Jeder Wurzelzeiger hat das folgende Format:
GRENZE STATUS ADRESSE UNBEN.
-
wobei STATUS:
-
Im Falle des ungültigen Wurzelzeiger-Beschreibers ist das
Ausführen von Übersetzungen nicht möglich, und so wird eine
Konfigurations-Fehler-Ausnahme signalisiert, wenn die
Registerbeladung versucht wird. Falls der Wurzelzeiger ein
Seitenbeschreiber ist, wird die Logische Adresse durch die PMMU
20 als die Physikalische Adresse durchgelassen. Die
Gültigkurz- und Gültig-lang-Typen bezeichnen einen gültigen
Wurzelzeiger und bezeichnen auch die Länge der Beschreiber in der
Tabelle beim nächsten Niveau. Es sei bemerkt, daß die
Verwendung von DRP immer eine Nachschau durch Funktionskode an der
Tabelle erstes Niveau mit sich führt und das L/U-Bit und
Grenzfelder werden nicht benutzt, wenn eine Nachschau durch
Funktionskode unter Benutzung irgendeines Wurzelzeigers
ausgeführt wird.
-
Die PMMU 20-Auslegung spezifiziert verschiedene
unterschiedliche Tafelbeschreiber-Typen. Alle Beschreiber haben ein
Element gemeinsam: Bits 0 und 1 des ersten Langwortes aller
Typen sind das DT-Feld des Beschreibers. Der Wert dieser
Bits beeinflußt die Bedeutung der anderen Bits des
Beschreibers.
-
Das Format eines Beschreibers wird bestimmt durch drei
Dinge: den Wert des DT-Feldes des vorhergehenden
Beschreibers, den Wert des DT-Feldes des Beschreibers und den Status
der Tabellensuche. Der Wert des vorhergehenden DT-Feldes
bestimmt, ob der aktuelle Beschreiber von Lang- oder Kurzform
ist. Die anderen zwei Dinge bestimmen seinen Typ nach der
vorliegenden Tabelle:
Suchstatus der aktuellen Tabelle gegenwärtiges DT-Feld mehr TI-Felder zur Verwendung TI-Felder aufgebraucht Indirekt Ungültig Seitenbeschr. Typ 2 KURZ Zeiger Indirekt LANG
-
Der Kurzzeiger-Beschreiber hat das folgende Format:
Tabellen-Adresse STATUS
-
wobei STATUS:
-
Der Langzeiger-Beschreiber hat das folgende Format:
GRENZE STATUS TABELLEN-ADRESSE UNBEN.
-
wobei STATUS:
-
In der bevorzugten Form gibt es zwei Typen von Seiten-
Beschreibern: Typ 1, der nur in Seiten-Tabellen auftritt,
und Typ 2, der nur in Zeiger-Tabellen auftritt. So zeigt,
wie in Fig. 4 dargestellt, die Anwesenheit eines
Seiten-Beschreibers Typ 2 in einer Zeigertabelle, daß die
Tabellensuche zu Ende ist, bevor alle TI-Felder benutzt sind. Auch
wenn keine weiteren Tabelleneinträge abgeholt werden, wird
das nächste TI-Feld mit dem Grenzfeld verglichen. Falls die
Überprüfung versagt, wird ein Übersetzungs-Cacheeintrag für
die Logische Adresse mit gesetztem BERR-Bit hergestellt.
-
Der Kurzseiten-Beschreiber Typ 1 hat das folgende Format:
SEITEN-ADRESSE STATUS
-
wobei STATUS:
-
Der Langseiten-Beschreiber Typ 1 hat das folgende Format:
UNBENUTZT STATUS SEITENADRESSE UNBENUTZT
-
wobei STATUS:
-
Der Kurzseiten-Beschreiber Typ 2 hat das folgende Format:
SEITENADRESSE STATUS
-
wobei STATUS:
-
Der Langseiten-Beschreiber Typ 2 hat das folgende Format:
GRENZE STATUS SEITEN-ADRESSE UNBEN.
-
wobei STATUS:
-
Ungültige Beschreiber halten in Tabellen Plätze für Daten,
die entweder ausgeseitet oder nicht zugeordnet sind.
-
Der Kurz-ungültig-Beschreiber hat das folgende Format:
UNBENUTZT
-
Der Lang-ungültig-Beschreiber hat das folgende Format:
UNBENUTZT
-
Indirekte Beschreiber fügen ein zusätzliches
Nachschau-Niveau hinzu, so daß einzelne Seiten gemeinsam bei Aufgaben
benutzt werden können mit nur einem Satz von Archiv-Bits für
die Seite.
-
Der Kurz-Indirekt-Beschreiber hat das folgende Format:
BESCHREIBER-ADRESSE
-
Der Lang-Indirekt-Beschreiber hat das folgende Format:
UNBENUTZT BESCHREIBERADRESSE UNBEN.
-
Bei den verschiedenen Beschreibern sind die Bits und Felder
wie folgt definiert:
-
L/U (Untere/Obere) zeigt an, ob die Seiten dieses
Speicherbereichs die untersten verfügbaren Adressen oder
die höchsten besetzen. Das führt dazu, daß der
Vergleich des Grenzfeldes mit dem Abschnitt der
Logischen Adresse, der zum Indexieren in die Tabellen
benutzt wird, wie folgt durchgeführt wird: Falls L/U -
0, enthält das Grenzfeld eine obere (vorzeichenlose)
Grenze an dem Index, so daß der Index < = Grenze sein
muß. Falls L/U = 1, enthält das Grenzfeld eine
untere Grenze für den Index, und der Index muß > =
Grenze sein. Falls der Index außerhalb der Grenzen
liegt, wird ein Übersetzungs-Cacheeintrag für die
Logische Adresse mit gesetztem BERR-Bit gemacht.
Sonst wird die Tabellensuche fortgesetzt. (Siehe
Fig. 5).
-
GRENZE bezeichnet den maximalen oder minimalen Wert für den
Index in das nächste Niveau der Tabelle. Dieses Feld
wird benutzt, um die Größe der Tabelle beim nächsten
Niveau zu begrenzen. Siehe vorstehendes L/U-Bit.
-
RAL (Lesezugriff-Pegel) bezeichnet den Zugriffpegel der
Logischen Adresse, der zu einem Zugriff auf einen
Bereich des Logischen Adreßraums erforderlich ist. Es
wird wie folgt kodiert:
-
000 Zugriffpegel 0 oder Supervisor
-
001 Zugriffpegel 1→0 oder Supervisor
-
010 Zugriffpegel 2→0 oder Supervisor
-
011 Zugriffpegel 3→0 oder Supervisor
-
100 Zugriffpegel 4→0 oder Supervisor
-
101 Zugriffpegel 5→0 oder Supervisor
-
110 Zugriffpegel 6→0 oder Supervisor
-
111 Zugriffpegel 7→0 oder Supervisor.
-
Zugriffpegel mit einer kleineren (ohne Vorzeichen)
Kodierung sind privilegierter als die mit einer
höheren (ohne Vorzeichen) Kodierung. Eine Kodierung von
100 erfordert mehr Privileg zum Zugriff zu einem
Beschreiber oder einer Seite als eine Kodierung 101.
Wenn ein Beschreiber eingeladen ist und der Zugriff
ein Benutzerraum-Zugriff ist, wird die Anzahl der
oberen Logischen Adreßbits, die durch das ALC-Feld
im AC-Register bezeichnet sind, mit dem RAL-Feld
jedes Langbeschreibers bei dem Baum-Durchgang
verglichen. Falls irgendein RAL anzeigt, daß der Zugriff
verweigert werden sollte, wird ein Beschreiber
gebildet und mit gesetztem BERR-Bit in den ATC 26
geladen.
-
WAL (Schreibzugriff-Pegel) zeigt den zum Einschreiben in
einen Bereich des Logischen Adreßraums
erforderlichen Zugriffpegel an. Es ist wie folgt kodiert:
-
000 Zugriffpegel 0 oder Supervisor
-
001 Zugriffpegel 1→0 oder Supervisor
-
010 Zugriffpegel 2→0- oder Supervisor
-
011 Zugriffpegel 3→0 oder Supervisor
-
100 Zugriffpegel 4→0 oder Supervisor
-
101 Zugriffpegel 5→0 oder Supervisor
-
110 Zugriffpegel 6→0 oder Supervisor
-
111 Zugriffpegel 7→0 oder Supervisor.
-
Wenn ein Beschreiber eingeladen wird und der Zugriff ein
Benutzerraum-Schreibzugriff ist, wird die durch das ALC-Feld
in dem AC-Register angezeigte Anzahl von oberen Logischen
Adreßbits verglichen mit dem WAL-Feld jedes langen
Beschreibers, der bei dem Tabellen-Durchgang benutzt wird. Falle
irgendein WAL anzeigt, daß Schreiben mit dieser Adresse nicht
zugelassen ist, wird der Beschreiber mit gesetztem WP-Bit
geladen.
-
S (Supervisor) zeigt an, ob die Adresse nach dem
Funktionskode, der verwendet werden kann, beschränkt
ist:
-
0 jede Adreßraum-Referenz
-
1 nur Supervisor-Raumreferenzen.
-
SG (Globale Mitbenutzung) zeigt an, ob dieser Bereich
des Logischen Adreßraumes von allen Aufgaben im
System mitbenutzt (sharing) wird oder nicht. Falls
der Bereich mitbenutzt wird, wird nur ein Eintrag im
ATC 26 gemacht und alle Aufgaben benutzen mit. Das
Bit wird wie folgt definiert:
-
0 nicht mitbenutzt
-
1 mitbenutzt.
-
G (Gate) wird gesetzt, wenn die Seite Gates enthalten
kann; sonst gelöscht.
-
CI (Cache-Sperrung) wird in Systemen mit Daten-Cache
benutzt, um Seiten zu markieren, die nicht gecached
werden sollten, um Probleme mit schwer lesbaren
Daten zu vermeiden. Die PMMU 20 zeigt dieses Bit
während Übersetzungen in dem externen System.
L (Rastung) wird gesetzt, um einen Beschreiber in dem
ATC 26 zu rasten, so daß er zum Ersetzen unverfügbar
gemacht wird. Der ATC 26-Eintrag muß gespült werden,
um den Beschreiber zu entrasten. Die
Wurzelzeiger-Tabelle kann jedoch mit gerasteten Beschreibern in
Wechselwirkung treten.
-
M (modifiziert) wird gesetzt, falls der Seite
zugeschrieben wurde; sonst gelöscht. Die PMMU 20 setzt
M, falls es vorher gelöscht war und eine
Einschreibung zu der Seite dieses Beschreibers vorgekommen
ist. Dieses Bit wird durch die PMMU 20 nicht
gelöscht.
-
U (verwendet) wird gesetzt, wenn das
Beschreiber-Adreßfeld zum Zugriff zu einer Seite oder Tabelle benutzt
wurde; sonst gelöscht. Dieses Bit wird durch die
PMMU 20 gesetzt, wenn es vorher gelöscht war, und
das Beschreiber-Adreßfeld durch die PMMU 20 während
des Übersetzungs-Vorgangs benutzt wurde. Dieses Bit
wird durch die PMMU 20 niemals gelöscht.
-
WP (Schreibschutz) wird gesetzt, wenn die Seite absolut
schreibgeschützt ist; sonst gelöscht. Ein
Beschreiber wird mit gesetztem WP-Bit ausgebildet und in den
ATC 26 geladen. Ein Eintrag kann bedingt
schreibgeschützt werden durch das vor stehend beschriebene
WAL-Feld. Ein versuchtes Schreiben auf eine
schreibgeschützte Seite läßt die PMMU 20 die Übersetzung
durch Ausgeben von BERR abbrechen.
-
DT (Beschreibertyp) bezeichnet den Typ des
Beschreibers. Es tritt in der gleichen Position in einem
Beschreiber auf, ohne Rücksicht auf den Typ. Es wird
benutzt mit dem Wert des vorhergehenden DT-Feldes
und dem Zustand der Tabellensuche, um das
Schreiberformat zu bestimmen.
-
00 UNGÜLTIG: Ein Beschreiber mit diesem DT-Wert ist
immer ungültig. Das kann bezeichnen, daß die
Seite oder Tabelle nicht resistent (ausgeseitet)
ist oder die Logische Adresse außer Bereich ist.
-
Wenn ein ungültiger Beschreiber angetroffen
wird, wird ein Übersetzungs-Cacheeintrag für die
Logische Adresse gemacht mit gesetztem BERR-Bit.
-
01 SEITENBESCHREIBER: Dieser Weg wird benutzt, um
den Tabellendurchgang zu beenden. Er bezeichnet
entweder einen Seitenbeschreiber vom Typ 1 oder
vom Typ 2. Wenn ein Seitenbeschreiber
angetroffen wird, endet der Tabellendurchgang und ein
Eintrag wird für die Logische Adresse im ATC 26
gemacht. Das Physikalische Adreßfeld für den
Eintrag wird gebildet durch Addieren der restlichen
Logischen Adreßbits (die bisher noch nicht als
ein Index in eine Tabelle vorheriger Niveaus
benutzt wurden) Null-erstreckt auf das Seiten-
Adreßfeld des Beschreibers. (Siehe Fig. 4).
-
10 KURZ: dieser Wert bezeichnet, daß der nächste zu
holende Beschreiber von einem kurzen Format ist.
Er kann in einem Zeiger-Beschreiber (kurz oder
lang) oder in einem indirekten Beschreiber (kurz
oder lang) auftreten. Wenn dieser Wert in einem
Zeiger-Beschreiber auftritt, bedeutet das, daß
das Tabellen-Adreßfeld auf eine Tabelle kurzer
Beschreiber zeigt und daß der Index mit 4
multipliziert werden sollte. Wenn ein KURZ-Wert
angetroffen wird und die Logische Adresse erschöpft
wurde (alle TI-Felder benutzt), zeigt dieser
Wert einen Beschreiber vom indirekten Typ an,
der zu einem Kurzbeschreiber zeigt.
-
11 LANG: dieser Wert zeigt an, daß der nächste zu
holende Beschreiber vom Langformat ist. Er kann
in einem Zeiger-Beschreiber (kurz oder lang)
oder in einem indirekten Beschreiber (kurz oder
lang) auftreten. Wenn dieser Wert in einem
Zeiger-Beschreiber auftritt, bedeutet das, daß das
Tabellen-Adreßfeld auf eine Tabelle von langen
Beschreibern zeigt und daß der Index mit 8
multipliziert werden sollte. Wenn ein LANG-Wert
angetroffen wird und die Logische Adresse erschöpft
wurde (alle TI-Felder benutzt), bezeichnet
dieser Wert einen Beschreiber von indirektem
Typ, der auf einen Lang-Beschreiber zeigt.
-
TABELLENADRESSE besteht aus 28 Bits und zeigt immer auf die
Basis einer Beschreiber-Tabelle.
-
SEITENADRESSE enthält die Physikalische Adresse einer Seite
(die Seitenrahmenzahl). Sie besteht aus 24 Bits,
jedoch brauchen nicht alle diese Bits benutzt
sein. Wenn die Seitengröße mehr als 256 Bytes
beträgt, werden nicht alle Bits erforderlich sein.
Insbesondere werden die unteren (Wert des
PS-Feldes des TC-Registers) minus 8 Bits unterer
Ordnung dieses Feldes nicht verwendet.
Beispielsweise wird bei einer Seitengröße von 1024 Bytes der
Wert des PS-Feldes 10 (1010 binär), und so
werden die untersten 10-8 = 2 Bits des
Seitenadreßfeldes nicht benutzt. Die unbenutzten Bits
können durch Software benutzt werden.
-
INDIREKTE ADRESSE besteht aus 30 Bits, die auf einen
individuellen Beschreiber zeigen. Wenn das DT-Feld
LANG anzeigt, dann muß das Bit niedriger Ordnung
dieses Feldes 0 sein.
-
UNBENUTZTe Bits sind durch die PMMU 20 nicht verwendet.
6. Tabellen-Durchgang:
-
Die PMMU 20 holt einen Beschreiber durch Ausführen
aufeinanderfolgender Tabellen-Nachschauen, bis ein Seitenbeschreiber
gefunden ist (oder ein Ausnahmezustand auftritt). Diese
Tabellen-Nachschauen werden ausgeführt durch Benutzen von
Abschnitten der Logischen Adresse, um in eine Tabelle von
Beschreibern an jedem Niveau im Übersetzerbaum zu indexieren.
Auf die Basis der Tabelle wird durch den in der
vorhergehenden Tabelle ein Niveau höher in dem Baum erhaltenen
Beschreiber gezeigt. Die maximale Größe einer Tabelle wird bestimmt
durch die Anzahl von Logischen Adreßbits, die als ein Index
in die Tabelle benutzt werden, wie auch durch die Größe der
Beschreiber in der Tabelle. Tabellen können über ein
Begrenzerfeld in bestimmten Beschreibern auf Größen beschränkt
sein, die kleiner als dieses Maximum sind. Sobald ein
Beschreiber von einer Tabelle erhalten wird, wird er auf
Gültigkeit überprüft. Falls er gültig ist, bestimmt er den Typ
von Beschreibern beim nächsten Niveau des Baumes. Dieser
Nachschau-Vorgang wird fortgesetzt unter Benutzung von
Stükken der restlichen Logischen Adresse, bis ein
Seiten-Beschreiber erhalten wird oder ein Ausnahme auftritt. Sobald
ein Seiten-Beschreiber erhalten ist, wurde die Abbildung
Logisch zu Physikalisch für diese Seite definiert.
-
Wenn DMA-Zugriffe unter Benutzung des DMA-Wurzelzeigers
(DRP) übersetzt werden, wird die Tabelle des ersten Niveaus
immer durch Funktionskode indexiert. Falls der Supervisor-
Wurzelzeiger (SRP) oder der CPU-Wurzelzeiger (CRP) zur
Übersetzung benutzt wird und das FCL (Funktionskode-Nachschau)-
Bit des TC-Registers gesetzt ist, wird die Nachschau im
ersten Niveau durch Funktionskode indexiert. Falls das FCL-
Bit gelöscht ist, wird keine Funktionskode-Nachschau
ausgeführt und die erste Nachschau geschieht wie im nächsten
Absatz beschrieben. Dieser Tabellen-Durchgang ist in Fig. 3
gezeigt. Der Seiten-Beschreiber wird wie folgt abgeholt:
falls Bit 3 des Funktionskodes FC[3] nicht ausgegeben war,
wird der ankommende Wert von FC2-0 benutzt, um in die
Tabelle zu indexieren, auf die das CRP oder SRP-Register zeigt.
Falls FC[3] durch ein anderes Gerät als die PMMU 20
abgegeben wurde, wenn die ATC 26-Fehlsuche auftrat, werden Bits
2-0 des Funktionskodes FC[2-0] benutzt, um in die Tabelle zu
indexieren, auf die durch den DRP gezeigt wird. Ein
Beschreiber wird dann von der Tabelle des oberen Niveaus abgeholt.
Der Typ des zu holenden Beschreibers wird bestimmt durch das
Beschreibertypfeld in dem verwendeten Wurzelzeiger.
Vorausgesetzt, der abgeholte Beschreiber ist gültig, wird das
Adreßfeld des Beschreibers benutzt, um die oberen Bits eines
Zeigers zum nächsten Übersetzungs-Niveau zu bilden.
-
Die Anzahl von oberen Logischen Adreßbits, die durch das
IS-Feld des TC-Registers bezeichnet ist, wird durch die PMMU
20 verworfen. Die Anzahl von Bits, die durch das TIA-Feld
bezeichnet ist, wird von dem oberen Abschnitt der Logischen
Adresse abgenommen. Sie werden als eine nicht mit Vorzeichen
versehene ganze Zahl behandelt. Falls das DT-Feld des
aktuellen Beschreibers (oder Wurzelzeigers, falls dies im ersten
Niveau geschieht) anzeigt, daß der Beschreiber am nächsten
Niveau des Baumes ein Kurzbeschreiber (32 Bit) ist, werden
die Logischen Adreßbits um 2 nach links verschoben und zu
dem Adreßfeld des geholten Beschreibers addiert. Falls das
DT-Feld bezeichnet, daß der Beschreiber beim nächsten Niveau
des Baumes ein Lang-Beschreiber (64 Bits) ist, werden die
Logischen Adreßbits um 3 nach links verschoben und zu dem
Adreßfeld des abgeholten Beschreibers addiert. Dieser Zeiger
wird benutzt, um den Beschreiber beim nächsten Niveau des
Baumes abzuholen.
-
Dieser Vorgang hält an unter Benutzung des Adreßfeldes
dieses neuen Beschreibers, des nächsten TIx-Feldes und der
nächsten oberen Logischen Adreßbits zum Holen eines anderen
Beschreibers usw., bis ein Seiten-Beschreiber abgeholt wird
oder keine TIx-Felder mehr vorhanden sind, oder das nächste
Null ist (oder der Tabellen-Durchgang unterbrochen wird, wie
später diskutiert).
-
Wenn ein Beschreiber lang ist, wird die Grundadresse der
Tabelle des nächsten Niveaus als Bits 31-4 des zweiten
Langwortes genommen. Bits 3-0 werden ignoriert und können durch den
Benutzer für Status- oder andere Funktionen verwendet werden
(sie sind für Adreßberechnungen nullgefüllt). Falls ein
Beschreiber kurz ist, wird die Grundadresse der Tabelle mit
nächstem Niveau als ein einziges Langwort genommen, wobei
die Bits 3-0 (die Statusbits) nullgefüllt sind. Der
Abschnitt, der durch TIx bezeichneten Logischen Adresse, der
nach links verschoben wurde, um auf eine
Beschreiber-Begrenzung zu zeigen, wird zu der Grundadresse der Tabelle
addiert, um den nächsten Beschreiber zu lokalisieren. Da nur
28 Bits Adreßinformation im Beschreiber vorhanden sind,
füllen Adreßrechnungen die vier Statusbits unterer Ordnung
eines Beschreiber-Adreßfeldes mit Nullen.
-
Der Tabellen-Durchgang kann von dem vorstehend beschriebenen
Normalfall aus einer Anzahl von Gründen abweichen:
-
1) Wenn die benutzten und/oder modifizierten Bits eines
Beschreibers nicht gesetzt sind, wird die PMMU 20
sie angemessen setzen und dann das Statusbyte des
Beschreibers aktualisieren. Falls der so aktualisierte
Beschreiber schon das Modifizierungs-Bit gesetzt
hat, wird das Aktualisieren als ein einziger
Lese-Modifiziere-Schreibe-Zyklus erledigt. Sonst wird
einfaches Schreiben benutzt;
-
2) falls das FCL-Bit des TC-Registers gelöscht ist,
geschieht die erste Nachschau durch Logische Adresse;
oder
-
3) falls während des Tabellen-Durchgangs ein
Seiten-Beschreiber angetroffen wird, hört der Durchgang auf
und es wird ein Eintrag für die Logische Adresse im
ATC 26 gemacht. Das Physikalische Adreßfeld für den
Eintrag wird gebildet durch Addieren der restlichen
Anzahl von Logischen Adreßbits (solche, die noch
nicht als ein Index in die Tabelle bei einem
vorherigen Niveau benutzt wurden), nullverlängert, zu dem
Physikalischen Adreßfeld des Beschreibers, wobei die
unteren PS-Bits nullgefüllt sind. Nachdem der
Eintrag gemacht ist und die PMMU 20 den Bus freigibt,
kann der Buszyklus neu versucht werden.
7. ADRESSÜBERSETZER-CACHE
-
Um den Organisationsaufwand des Durchgehens der
Übersetzungstabellen bei jedem Zugriff zu vermeiden, werden in letzter
Zeit benutzte Logisch/Physikalisch-Übersetzer im ATC 26
gehalten. Der ATC 26 ist ausgelegt, eine hohe Trefferrate und
rasche Übersetzungszeit zu schaffen. Wenn der ATC 26
verfehlt, unterbricht die PMMU 20 den aktuellen Buszyklus mit
einer Anzeige an den Busmeister, daß der Zyklus später neu
versucht wird. Die PMMU 20 übernimmt dann für die Logischen
und Physikalischen Buse Verantwortung und sucht in den
Übersetzungs-Tabellen im Speicher nach dem korrekten
Seiten-Beschreiber. Dieser Beschreiber wird dann benutzt, einen
Übersetzer im ATC 26 aufzubauen. Wenn die PMMU 20 die Buse
freigibt, kann der alte Busmeister übernehmen und den
abgebrochenen Buszyklus neu versuchen. Dieses Mal sollte die PMMU 20
im ATC 26 "treffen" und der Buszyklus kann normal
weitergehen.
-
Im ATC 26 besitzt jeder Cache-Eintrag einen Logischen
Abschnitt (Markierung) und einen Physikalischen Abschnitt (der
Markierung entsprechende Information). Der Logische Gehalt
der Einträge ist jedoch nicht benutzer-sichtbar. Der
Logische 31Bit-Abschnitt jedes Eintrages umfaßt die folgenden
Felder:
LOGISCHE ADRESSE
-
wobei:
-
V (gültig) 1 ist, wenn der Eintrag einen gültigen
Übersetzer enthält; sonst gelöscht. Dieses Bit wird
gesetzt, wenn ein Übersetzer in den Eintrag geladen
wird. Es wird gelöscht durch PFLUSH- oder
PFLUSHR-Instruktion, die an einen Übersetzer gepaßt ist, durch
eine PLOAD-Instruktion, die an einen Übersetzer
gepaßt ist, durch eine Spülung, die durch
Neuanordnung eines Wurzelzeiger-Tabelleneintrags an einem
PMOVE nach CRP verursacht wird, und bei Reset.
-
TA (Task Alias) schafft einen Mechanismus zur
Unterscheidung zwischen Zugriffen unterschiedlicher
Aufgaben zu einer sonst identischen Logischen Adresse.
Kombination der Task Alias-Information mit der
Fähigkeit, eine maskierbare Löschung von
Eintrag-Gültigkeits-Bits (maskierbare Spülung von Übersetzern)
durchzuführen, gibt der PMMU 20 die Fähigkeit,
Übersetzer mit Mehrfach-Aufgaben gleichzeitig in dem ATC
26 zu halten. Wenn ein "Task Alias" wieder zu einer
anderen Aufgabe ausgegeben werden muß, werden zuerst
alle dieses Task Alias enthaltenden Übersetzer
gespült. Das stellt sicher, daß die neue Aufgabe nicht
irrigerweise die Übersetzer der vorherigen Aufgabe
benutzt, und beseitigt die Notwendigkeit des Spülens
des gesamten ATC 26 an einer Kontext-Schaltstelle.
Vergleich mit diesem Feld wird unterdrückt, falls
die Tabellensuche, die diesen Übersetzer geladen
hat, einen Beschreiber mit einem gesetzten SG-Bit
antrifft. Das verwirklicht den allgemeinen Teilhabe-
(sharing)-Betrieb.
-
FC (Funktionskode) enthält die Funktionskode-Bits
FC[3 : 0] von dem Buszugriff, der das Einladen des
Übersetzers verursachte.
-
LOGISCHE ADRESSE enthält die Logischen Adreßbits LA[31:8]
des Buszugriffs, der das Laden des Übersetzers
verursachte. Falls die Seitengröße mehr als 256 B-ytes
beträgt, werden einige LA-Bits niedriger Ordnung in
diesem 24Bit-Feld während des im Verlauf der
normalen Übersetzung angestellten Adreßvergleichs nicht
beachtet.
-
Der Physikalische 30Bit-Abschnitt für jeden Eintrag besteht
aus den folgenden Feldern:
PHYSIKALISCHE ADRESSE
-
wobei:
-
L (gerastet) gesetzt wird, wenn der Cache-Eintrag für
Neuverwendung nicht verfügbar ist; sonst gelöscht.
Falls der ATC 26 mit Gültigen Übersetzern gefüllt
ist, muß ein gegenwärtig gültiger Übersetzer bei
einer Übersetzer-Einladung überschrieben werden.
Falls L = 1, ist der Cache-Eintrag zur Neuverwendung
nicht verfügbar. Wenn alle Einträge bis auf einen
gerastet werden, wird das LW-Bit im CS-Register
gesetzt, um diesen Zustand anzuzeigen. Keine weitere
Rastung von Übersetzern wird dann unternommen, ohne
Rücksicht auf das Vorhandensein einer "Rast" -Anzeige
in einem Beschreiber, um ein vollständiges Füllen
des Caches mit gerasteten Übersetzern zu verhindern.
Bis die Übersetzer gespült sind, wird der ATC 26
fortfahren, den gleichen (ungerasteten) Eintrag für
neue Übersetzer bei allen Cache-Fehlversuchen zu
benutzen. Aus diesem Grund muß das Betriebssystem
sorgfältig sein, nicht so viele Übersetzer zu rasten,
daß die Wirksamkeit des Übersetzer-Mechanismus
verringert wird. Ein gerasteter Übersetzer kann
ungültig gemacht werden, wenn er unter Benutzung der CRP
geladen wurde. Wenn ein neuer Eintrag im RPT gemacht
wird, werden alle Übersetzer im ATC 26 mit passendem
TA-Feld ungültig ohne Rücksicht auf den Zustand
ihrer L-Bits. Mit-dem SRP oder DRP
geladene-Übersetzer werden auf diese Weise nicht ungültig.
-
BERR (Busfehler) gesetzt wird, wenn ein Fehler in der
Tabellensuche erfaßt wurde, welche diesen Übersetzer
ergab; sonst gelöscht. Falls BERR = 1, wird die PMMU
20 das BERR Ausgangssignal behaupten, wenn auf die
Seite zugegriffen wird. Kein PAS wird erzeugt. Dies
ergibt einen Mechanismus, dem gegenwärtigen
Busmaster auf den Wiederversuch-Zugang zu einem vorher
fehlerhaften (in dem ATC 26 nicht residenten) Ort,
daß in den Tabellen keine Übersetzung für diese
Adresse besteht. Das ergibt auch einen Mechanismus,
redundante Tabellen-Nachschau-Versuche zu einem
nicht-residenten Platz durch andere Busmaster zu
vermeiden. Das BERR-Bit braucht nicht explizit gelöscht
zu werden. Die Busfehler-Behandlungs-Routine sollte
ein PLOAD für die fehlerhafte Adresse enthalten,
nachdem die Tabellen aktualisiert wurden. Das PLOAD
wird die PMMU 20 veranlassen, gepaßte Übersetzer in
ihrem Cache zu spülen und dann den Cache mit neuen
Daten von den Tabellen zu beladen.
-
CI (Cache-Sperrung) zeigt an, wenn Zugriffe innerhalb
der Seite dagegen zu sperren sind, daß sie in einem
Daten-Cache gespeichert werden. Falls CI = 1, wird
die PMMU 20 das CLI-Ausgangssignal behaupten, wenn
auf die Seite zugegriffen wird, konkurrierend mit
dem Buszyklus, so daß eine Cache-Steuerung Bescheid
weiß, keine "Füllung" zu versuchen, wenn dieser
Buszugriff in dem Cache "verfehlt". Einige typische
Arten von Zugriffen, die unter diese Kategorie
fallen, sind I/O-Zugriffe, Zugriffe zu einem
zeitweiligen Pufferbereich oder Zugriffe zu einem Mailbox-
Bereich.
-
WP (Schreibschutz) gibt den "effektiven" Schreibschutz
einer Seite wieder. Falls WP = 1, sind
Schreibzugriffe zu der Seite nicht legal. Der effektive
Schreibschutz ist das ODER aller während eines Tabellen-
Durchgangs angetroffener WP-Bits (je eines bei jedem
Niveau) und der an allen angetroffenen WAL-Feldern
ausgeführten Überprüfung. Es werde bemerkt, daß das
unterschiedlich zu dem aktuellen Wert des WP-Bits in
dem Übersetzungstabellen-Seitenbeschreiber sein
kann. Falls ein Schreiben unter Benutzung eines
Übersetzers in dem ATC 26 versucht wird, bei dem das
WP-Bit gesetzt wird, wird kein PAS erzeugt und BERR
wird behauptet. Das gleiche trifft für die durch den
Prozessor 14 ausgeführten Lese-Modifiziere-Schreibe-
Zyklen (RMC) zu, die ein RMC-Signal benutzen. Wenn
jedoch der Prozessor 14 kein RMC-Ausgangssignal
besitzt, wird der Leseabschnitt des Buszyklus in der
normalen-Weise übersetzt und ein Schreib-Sperr-
(WIN)-Ausgangssignal wird ggf. behauptet. Wenn der
Prozessor 14 R/W-Signalübergänge abgibt zum Anzeigen
des Schreib-Abschnitts des
Lese-Modifiziere-Schreibe-Zyklus, sollte das WIN-Signal den Übergang des
Physikalischen R/W-Signals blockieren und die PMMU
20 die Schreib-Verletzung erfassen, PAS negieren und
BERR behaupten.
-
M (Modifiziert) wird gesetzt, wenn die Seite
modifiziert worden ist; sonst gelöscht. Falls ein
Schreiben auf eine beschreibbare Seite erfolgt, die kein
M-Bit in dem Übersetzer gesetzt hat, wird die PMMU
20 ein "Lösen und Neuversuchen" an den aktuellen
Busmeister ausgeben. Nach Erhalt des Bus wird die PMMU
20 die Tabellen durchgehen, das M-Bit des
zugehörigen Beschreibers in den Tabellen setzen, den alten
Übersetzer ungültig machen, einen neuen Übersetzer
mit gesetztem Modifiziert-Bit laden und dann den Bus
freigeben. Wenn der vorherige Busmeister den
Schreibzyklus neu versucht, wird die PMMU 20 das M-Bit
gesetzt vorfinden und die Physikalische Adresse und
PAS in der normalen Weise schaffen. Auf diese Weise
wird das Modifiziert-Bit- eines Beschreibers-in den
Seitentabellen auf das erste Schreiben zu dieser
Seite setzen, ob nun der Übersetzer von einem
vorherigen Lesen gecached ist oder nicht.
-
G (Gate) zeigt an, ob diese Seite Gates enthalten kann
oder nicht. Falls G = 1 ist die Seite eine, die
Gates zum Übergang zwischen unterschiedlichen
Privileg-Niveaus enthalten kann. Bei einem Schreiben zu
einem Beschreiberadreß-Busregister prüft die PMMU
20, um zu sehen, ob die durch diese Adresse
bezeichnete Seite das G-Bit gesetzt hat. Falls diese Seite
das Attribut Gates zu enthalten, (G-Bit gesetzt)
nicht hat, wird ein entsprechender Fehlerkode in das
ALS-Register eingegeben.
-
PA (Physikalische Adresse) enthält Bits 31-8 der
Physikalischen Adresse PA[31 : 8], gebildet aus dem Seiten-
Beschreiber der Tabellen-Nachschau. Falls die
Seitengröße größer als 256 Bytes ist, werden nicht alle
gespeicherten 24 Physikalischen Adreßbits zu dem
externen Physikalischen Bus während der Übersetzung
getrieben. Die Physikalischen Adreßbits, welche einen
Bereich innerhalb einer Seite adressieren, werden so
gemultiplext, daß die entsprechenden Logischen
Adreßbits direkt zu dem externen Physikalischen Bus
durchgeleitet werden.
-
Wenn die PMMU 20 einen Reset-Betrieb ausführt, kommt sie mit
gesperrtem ATC 26 "heraus" (E-Bit des TC-Registers
gelöscht). Logische Adressen werden direkt durchgeleitet, um
an dem Physikalischen Adreßbus als eine "transparente
Übersetzung"
ausgegeben zu werden. Das ist notwendig, damit die
Rücksetz-Vektoren von dem Speicher gelesen werden und die
Übersetzer-Tabellen aufgestellt werden können. Zusätzlich
wird die Zugriffpegel-Überprüfung gesperrt, so daß keine
Zugriffe einen Fehler infolge Versuchen, den aktuellen
Zugriffpegel zu überschreiten" erzeugen können. Nachdem die
Tabellen aufgestellt sind, kann das E-Bit gesetzt werden, um
den Betrieb des ATC 26 freizugeben.
-
Falls die PMMU 20 keinen weiteren Betrieb ausführt und der
ATC 26 freigegeben ist, ist sie im
"Übersetzungs-Seitenblick"-Betrieb. Bei dieser Betriebsart führt der ATC 26
einen vorangehenden Vergleich zwischen durch den
gegenwärtigen Busmeister geschaffener Logischer Information und der
entsprechenden, in dem Markierungsbereich jedes Eintrags im
ATC 26 gespeicherten Logischen Information durch. Die
aktuelle Buszyklus-Logische-Information besteht aus einer
ankommenden Logischen Adresse, einem ankommenden Funktionskode, und
der gegenwärtigen Task Alias (Index des gegenwärtigen CRP-
Wertes in der Wurzelzeiger-Tabelle). Es sind entsprechende
Felder in dem Markierungsbereich jedes ATC 26-Eintrags.
Falls die aktuelle Information mit der in einem gültigen
Übersetzer gespeicherten Information paßt, sagt man, der ATC
26 "trifft". Die Übersetzer mit gesetztem SG-Bit werden den
Vergleich zwischen den andere Aufgabe-Feldern "nicht
beachten", um gemeinsame Teilnahme der Übersetzer zuzulassen.
-
Wenn es einen Treffer gibt, wird der ATC 26 die gespeicherte
Physikalische Adresse, die der gepaßten Logischen Adresse
entspricht, zu den PA-Ausgangspuffern durchleiten, während
er die entsprechende Physikalische Zugriffinformation zu
anderen Bewertungsschaltungen oder Ausgangspuffern
durchleitet. Falls der Physikalische Bus von der PMMU 20
wegverwaltet wurde, wird die PMMU 20 den Physikalischen Bus nicht
ansteuern, bis sie wieder Meister des Physikalischen Bus wird.
Die gesamte Zugriffrecht-Überprüfungs-Schaltung und die
zugeordneten Steuersignale arbeiten weiterhin ohne Rücksicht auf
die Identität des aktuellen Physikalischen Busmeisters. Auf
diese Weise ist es möglich, daß eine Logische Busaktivität
besteht, welche Zugriffrechte und Ausnahme-Überprüfung
ausgeführt erhält, parallel zur total weggeordneten
Physikalischen Busaktivität. Zum Beispiel kann der Prozessor 14
Buszyklen aus einem Daten-Cache laufen lassen, der an dem
Logischen Bus residiert und kann seine Zugriffrechte durch die
PMMU 20 überwachen lassen- parallel zu dem Betrieb eines
DMA-Gerätes, das den Physikalischen Bus von der PMMU 20 weg
"verwaltet" hat.
-
Die Physikalische Information von einem "treffenden"
Übersetzer im ATC 26 wird wie folgt geleitet:
-
1) BERR-, WP-, M- und G-Bits zu der
Zugriffrecht-Überprüfungsschaltung;
-
2) Physikalische Adreßbits und Cache-Sperr-Bits zu
Ausgabepuffern.
-
Falls diskrete Zugriffpegel verwirklicht werden, wird der
Zugriffpegel eines bestimmten Buszyklus kodiert, in
Abhängigkeit von der Anzahl der Zugriffniveaus in Logischen
Adressenbits LA[31 : 29], LA[31 : 30] oder LA[31]. Diese Bits werden in
der gleichen Weise verglichen wie die anderen Adreßbits, um
die Passung des Übersetzers zu bestimmen, so daß die
Verwendung von diskreten Zugriffniveaus keine funktionelle
Erfordernis für ATC 26 ist. Ein separater Vergleich wird parallel
zur ATC 26 Nachschau zwischen Adreßbits hoher Ordnung und
den freigegebenen Bits im CAL-Register durchgeführt. Falls
das in der Adresse kodierte Zugriffniveau das im
CAL-Register gespeicherte Zugriffniveau übersteigt, besteht eine
Ausnahme und BERR wird behauptet, um den aktuellen
Zugriffversuch zu beenden. Supervisor-Zugriffe sind eine Ausnahme von
dieser Regel, da alle Supervisor-Zugriffe den
CAL-Prüfmechanismus sperren.
-
Die "Entscheidungs-Zeitablauf"-Schaltung gibt an, durch
welche Taktkanten nach LAS erfaßt (Asynchron-Betrieb) oder
eingesetzt (Synchron-Betrieb) wurde, daß die PMMU 20
ausreichend Zeit besitzt, um zu entscheiden, welches externe
Steuersignal zu behaupten ist. Die
Entscheidungs-Zeitablauf-Taktkante muß nach einem Zeitraum auftreten, der garantiert, daß
die Ausgabe der Zugangsrecht-Überprüfung, Ausnahmeerfassung
und ATC 26 Anpaß-Schaltung an ihren Bestimmungsorten gültig
ist. Falls die Zugriffrecht-Über-prüfungs-,
Ausnahmeerfassungs- oder ATC 26-Passungs-Schaltung zu diesem
Entscheidungs-Zeitpunkt nicht auflöst, kann die PMMU 20 eine irrige
Reaktion erzeugen (die falschen Steuersignalen behaupten).
Die Entscheidungszeit kann von ihrem Minimalwert aus beim
Rücksetz/Konfigurations-Zeitpunkt erhöht werden.
-
Falls es einen Treffer gibt, keine Zugangsrecht-Verletzungen
und keine Ausnahmen erfaßt sind, wird PAS bei der "minimalen
PAS-Behauptungszeit" (von dem Übersetzungsbetrieb abhängig)
behauptet plus irgendwelche Verzögerung, die bei
Rückstellung/Konfigurations-Zeit angegeben sind. PAS wird bis zur
Negierung von LAS angesteuert und wird zu diesem Zeitpunkt
inaktiv gesteuert. Wenn die PMMU 20 Physikalischer
Busmeister ist, wird der Physikalische Adreßbus immer angesteuert
und wird gültig sein, während Logische Adressen und
Funktionskode gültig sind, nachdem Zugriffzeit-Anforderungen
erfüllt sind.
-
Wenn kein Treffer besteht oder Zugriffrechte überschritten
wurden oder aufgetreten ist, wird die PMMU 20 PAS nicht
erzeugen. Stattdessen wird die PMMU 20 die diesem Zustand
angemessenen Steuersignale an der "Zeitablauf"-Taktkante
behaupten. Ausnahmebedingungen oder Zugangsrechts-Verletzungen,
die während des normalen Seitenblick-Betriebs erfaßt werden,
und eine Erzeugung von anderen Reaktionen als Physikalische
Adresse und PAS verursachen, sind:
-
1) von dem Logischen Bus dekodierte
PMMU-Koprozessor-Register-Zugriffe lassen die kodierte Instruktion
ausführen;
-
2) Zugriffe mit Versuchen, den gespeicherten "aktuellen
Zugriffpegel" zu überschreiten, verursachen, falls
freigegeben, die Behauptung von BERR;
-
3) das gesetzte BERR-Bit verursacht die Behauptung von
BERR;
-
4) Schreibzugriff zu einer schreibgeschützten Seite
verursacht Behauptung von BERR;
-
5) kein Treffer in ATC 26 verursacht die Erzeugung von
Steuersignalen für Löse- und Neuversuch-Betrieb;
-
6) Schreibzugriff zu einer vorher unmodifizierten Seite
verursacht die Erzeugung von Steuersignalen für
Löse- und Neuversuch-Betrieb;
-
7) Zugriffe zu PMMU 20-Busregistern durch CALLM/RTM-
Instruktionen;
-
8) CPU-Raumzugriffe (FC = 0111) auf den Logischen
Adreßbus, zu dem Physikalischen Adreßbus durchgeleitet,
erzeugen kein PAS. Falls die Adresse kein
Busregister der PMMU 20 ist, wird CLI mit der normalen
PAS-Zeitgebung behauptet und kann extern mit CPU-
Raumdekodierung konditioniert werden, um einen CPU-
Adreßraum-Impuls zu schaffen. Falls die Adresse ein
Busregister der PMMU 20 ist, wird CLI nicht
behauptet. Der Betrieb wird durch die folgende Tabelle
definiert:
CPU-Raum Übersetzung freigegeben Koprozessor, Modul oder Fixpunkt Abbildg Normale Übersetzung
-
wobei:
-
Y = ja
-
N = nein oder negiert
-
A = behauptet
-
X = nicht beachtet.
8. WURZELZEIGER-TABELLE (RPT):
-
Um die Benutzung des ATC 26 zu verbessern, enthält die PMMU
20 eine Mehrfacheintrag-Wurzelzeiger-Tabelle (RPT) 28, um
Wurzelzeiger für die jüngsten Aufgaben zu halten. Alle
Einträge in dem ATC 26, die mit Durchsuchen des Übersetzungs-
Baums gemacht wurden, auf den durch den CPU-Wurzelzeiger
(CRP) gezeigt wurde, sind mit einer Anzeige des Index des
Eintrages in der RPT 28 markiert, der gegenwärtig angepaßt
ist. Dieser Index wird die Task Alias genannt. Falls das
CRP-Register geschrieben und ein passender Eintrag in der
RPT 28 gefunden ist, können immer noch Einträge in dem ATC
26 sein, die gültig sind. Falls der neue CRP-Wert nicht mit
einem Eintrag in der RPT 28 paßt, wird ein Eintrag in der
RPT 28 ausgewählt und der ATC 26 wird von Einträgen gespült,
die den gleichen Index haben. Zusätzlich wird diese
Information in dem CS-Register geschaffen, so daß ein externer
Daten-Cache in der gleichen Weise wie die RPT 28 gemanagt
werden kann.
-
Die RPT 28 besitzt einen Markierungsabschnitt mit einer
Markierung für jeden Eintrag. Jede Markierung hat die gleichen
Felder wie das CRP-Register. Eine Markierung ist gepaßt,
falls das Adreßfeld der Markierung mit dem Adreßfeld des
CRP-Wertes paßt. Eine gültige Passung tritt auf, wenn das
Adreßfeld paßt und alle anderen Felder passen. Eine
ungültige Passung tritt auf, wenn das Adreßfeld und das L/U-Bit
paßt, jedoch ein anderes Feld oder mehrere andere Felder
nicht passen.
-
Es besteht kein expliziter Datenabschnitt der Tabelle. Bei
einer Passung ist das Ausgangssignal der Tabelle der Index
0-7 des Eintrages, der gepaßt ist. Es liegt in der
Verantwortung der PMMU 20, sicherzustellen, daß mehrfach gepaßte
Einträge niemals gleichzeitig auftreten.
-
Wenn das CRP-Register beschrieben ist, wird die RPT 28 nach
einem Eintrag mit passendem Adreßfeld und L/U-Feld
durchsucht. Falls das DT-Feld in STATUS und das GRENZ-Feld auch
passen, wird die Passung als gültige Passung angesehen. Wenn
jedoch das Adreß- und das L/U-Feld passen, jedoch das DT-
Feld in STATUS und das GRENZ-Feld nicht passen, wird die
Passung als ungültig angesehen.
-
Falls eine gültige Passung vorhanden ist, wird in das TA-
Feld des CS-Registers der Index des Eintrags in der Tabelle
geladen und das F-Bit im CS-Register gelöscht. Das zeigt an,
daß die durch den neuen CRP beschriebene Aufgabe gültige
Einträge in dem ATC 26 haben kann.
-
Wenn eine ungültige Passung vorhanden ist, wird der ATC 26
von allen Einträgen gespült, welche mit dem durch die RPT 28
ausgegebenen Indexwert passen. Das TA-Feld des CS-Registers
wird mit dem Index des Eintrags in der Tabelle beladen, und
das F-Bit im CS-Register gesetzt. Das zeigt an, daß
irgendwelche Einträge in einem externen Daten-Cache mit diesem
Index ungültig gemacht werden sollen.
-
Wenn keine Passung besteht, wird ein Eintrag in der RPT 28
zum Ersetzen durch die PMMU 20 ausgewählt. Der Index des
ausgewählten Eintrags wird zum Spülen des ATC 26 von allen
Einträgen benutzt, die diese Task Alias enthalten. Der neue
Wurzelzeiger-Wert wird dann in die Tabelle geladen, die
Indexnummer wird in das CS-Register gesetzt und das F-Bit wird
gesetzt, um die Tatsache wiederzugeben, daß diese Task Alias
neu gebraucht wird.
-
Falls der gleiche Wurzelzeiger-Wert für eine andere Aufgabe
und einen anderen Übersetzer-Baum neu zu brauchen ist, muß
der ATC 26 zuerst von allen Einträgen befreit (gespült)
werden, dessen Aufgabe mit der dem Eintrag in dem
Wurzelzeiger-Cache zugeordneten paßt, unter Benutzung der
PFLUSHR-Instruktion. Einträge in die RPT 28 werden zum Ersatz unter
Benutzung eines Pseudo-LRU-Algorithmus ausgewählt. Die Ersatz-
und Mehraufgabe-(Multitask-)Behandlung, die durch die RPT 28
geschaffen werden, können durch externe Daten-Caches benutzt
werden. Nach jedem Einschreiben in das CRP-Register sollte
das CS-Register gelesen und sein Inhalt in die Daten-
Cache-Hardware geschrieben werden. Diese externe Daten-
Cache-Hardware sollte mit einer 3Bit-Verlängerung zur
Logischen Adresse konfiguriert werden. Diese Verlängerung sollte
von einem Zwischenspeicher gespeist werden, der mit den
unteren 3 Bits des CS-Registers geladen wird. Nachdem dieser
Zwischenspeicher geladen und das F-Bit im CS-Register gesetzt
ist, sollten alle Einträge in dem Cache, die zu dem Wert im
Zwischenspeicher passen, gelöscht werden.