-
Gebiet der Erfindung
-
Die
vorliegende Erfindung bezieht sich auf eine Datenverarbeitungsvorrichtung
und ein Verfahren zum Zugriff auf einen Speicher mit einer Mehrzahl
von Speicherplätzen
zum Speichern von Datenwerten, und genauer gesagt auf eine solche
Datenverarbeitungsvorrichtung und ein Verfahren, das Speicherzugriffe
schützt.
Der Begriff 'Datenwert' wird hier verwendet,
um sowohl Befehle als auch Einträge oder
Blöcke
von Daten wie Datenworte zu bezeichnen.
-
Beschreibung des Standes
der Technik
-
Es
ist bekannt, Arbeitsspeicher in eine Anzahl von separaten logischen
Bereichen zu segmentieren und Schutzattribute für jeden der Bereiche zu spezifizieren
wie z. B., ob die Bereiche nur im Supervisormodus zugreifbar sind,
ob die Bereiche im Cache abgelegt werden dürfen, in einem Cache-basierten
System gepuffert werden dürfen,
etc., um den Zugriff auf diese Speicherbereiche zu steuern. Somit können, wenn
ein Prozessor eine Speicheradresse ausgibt, die in einen bestimmten
Speicherbereich fällt,
dann die Schutzattribute für
diesen Bereich verwendet werden, um festzustellen, ob der Prozessor in
seinem aktuellen Betriebsmodus berechtigt ist, auf diese Speicheradresse
zuzugreifen, und um festzustellen, ob von diesem Speicherbereich
abgeholte Datenwerte im Cache ablegbar sind, ob Datenwerte, die
in diesen Speicherbereich geschrieben werden sollen, gepuffert werden
dürfen,
etc. Oft, aber nicht ausschließlich
werden solche Schutzmechanismen in virtuellen Speichersystemen in
Verbindung mit der Übersetzung
von virtuellen in physikalische Adressen verwendet.
-
In
den meisten Implementierungen ist eine eingeschränkte Flexibilität zum Definieren
der logischen Bereiche vorgesehen. Die logischen Bereiche können typischerweise
von einer festen Größe wie 4 kb-Bereiche
sein, obwohl einige Techniken die Flexibilität in gewissem Maße verbessern,
indem einige wenige Bereiche mit unterschiedlicher Größe wie 1 kb-,
2 kb- und 4 kb-Bereiche zur Verfügung
gestellt werden. Wenn Bereiche mit unterschiedlicher Größe vorgesehen
werden, sind sie typischerweise darauf beschränkt, um Potenzen von zwei zu
variieren, da die Hardware, die zum Vergleichen von Adressen notwendig
ist, um die diese Adressen beinhaltenden logischen Bereiche zu bestimmen,
weniger komplex sein kann, wenn die Bereiche auf Größen beschränkt sind,
die um eine Potenz von zwei variieren.
-
Mit
dem obigen Ansatz ist es möglich,
Benutzerbereiche des Speichers und Supervisorbereiche des Speichers
zu spezifizieren. Betrachtet man zum Beispiel den Fall, in dem logische
Bereiche von der festen Größe von 4
kb vorgesehen sind, und das System 4 kb Supervisorcode und 12 kb
Benutzercode benötigt,
die beide in ein 16 kb RAM abgebildet werden müssen. Es müssen vier logische Bereiche definiert
werden, um dies zu erreichen, d. h. ein 4 kb-Bereich für den Supervisorcode
und drei 4 kb-Bereiche für
den Benutzercode.
-
Es
wäre wünschenswert,
die obige Funktionalität
bereitzustellen, während
weniger Bereiche definiert werden, als mit der oben beschriebenen
Methode nach dem Stand der Technik benötigt werden, um dadurch die
Flexibilität
des Systems zu verbessern.
-
EP-A-0.700.002
beschreibt einen modularen Chipauswahl-Steuerschaltkreis für einen
Mikroprozessor. Der Chipauswahlschaltkreis ist in der Lage, eine überlappende
Speicherkarte bzw. -abbildung zu implementieren, so daß ein Unterblock
des Speichers die Grenzen eines Hauptblocks entweder überlappen
oder vollständig
innerhalb der Grenzen liegen kann. Dekoder werden für jeden
Speicherblock verwendet, und ein Schaltkreis zum Durchsetzen einer Priorität ist dafür ausgelegt,
die Ausgaben der Dekoder zu empfangen und basierend auf einem Prioritätsmechanismus
zu bestimmen, ob ein externes Steuersignal wie ein Chipaktivierungssignal
zu aktivieren ist.
-
EP-A-0.656.592
beschreibt eine Speichenrerwaltungseinheit (Memory Management Unit, MMU),
die einen Betriebsmodus hat, in dem Übersetzungsattributbits entweder
von einem ersten transparenten Übersetzungsregister
(Transparent Translation Register, TTR), einem zweiten TTR oder
einer Standardspeicherstelle geliefert werden. Von den TTRs kann
jedes unterschiedliche Adreßräume und unterschiedliche
adressierte Speichergrößen abbilden,
und die Standardspeicherstelle deckt jedweden Speicher ab, der nicht
von einem der TTRs abgebildet wird.
-
US-A-3.827.029
beschreibt ein Digitalcomputersystem kleiner Größe, das so ausgelegt ist, daß ein Hardware-Subsystem
zum Schutz gegen Speicherverletzung als eine Hardware-Option zu
dem Computersystem hinzugefügt
werden kann.
-
Zusammenfassung
der Erfindung
-
Unter
einem ersten Aspekt betrachtet stellt die vorliegende Erfindung
eine Datenverarbeitungsvorrichtung zur Zugriffssteuerung auf einen
Speicher mit einer Mehrzahl von Speicherstellen zum Speichern von
Datenwerten bereit, wobei jede Speicherstelle eine entsprechende
Adresse hat, wobei die Vorrichtung aufweist: einen Adreßbereichsspeicher zum
Speichern von Information, die Adreßbereiche für eine Mehrzahl von logischen
Bereichen innerhalb des Arbeitsspeichers identifiziert; einen Attributspeicher
zum Speichern von Attributen für
jeden logischen Bereich, die zur Zugriffssteuerung auf Speicherstellen
innerhalb der logischen Bereiche verwendet werden; eine Adreßvergleicherlogik
zum Vergleichen einer von einem Prozessor ausgegebenen Adresse,
die einer der Speicherstellen entspricht, mit den Adreßbereichen
für die
Mehrzahl von logischen Bereichen und für den Fall, daß eine oder
mehrere der logischen Bereiche die Adresse enthält, zum Erzeugen eines Signal,
das diese logischen Bereiche anzeigt, die diese Adresse beinhalten;
eine Attributbestimmungslogik, die auf das von der Adreßvergleicherlogik
erzeugte Signal zur Anwendung zuvor festgelegter Prioritätskriterien
reagiert, um zu bestimmen, welcher logische Bereich, der die Adresse
enthält,
die höchste
Priorität
hat, und die Ausgabe der Attribute in dem Attributspeicher, der
diesem Bereich höchster
Priorität
entspricht, zur Verwendung bei der Zugriffssteuerung auf die von
der Adresse angegebene Speicherstelle zu veranlassen: wobei einer
der logischen Bereiche ein Hintergrundbereich ist, der den gesamten
Arbeitsspeicher abdeckt und die niedrigste Priorität der logischen
Bereich hat, wobei dann, wenn die von dem Prozessor ausgegebene
Adresse einer Speicherstelle entspricht, die nicht innerhalb irgendeiner
der anderen logischen Bereich liegt, die Attri butbestimmungslogik
dafür ausgelegt
ist, die Ausgabe der mit dem Hintergrundbereich verbundenen Attribute
zu veranlassen.
-
Gemäß der vorliegenden
Erfindung können überlappende
logische Bereiche definiert werden, und relative Prioritäten können jedem
logischen Bereich zugewiesen werden. Wenn der Prozessor eine Adresse
spezifiziert, die in zwei oder mehr logische Bereiche fällt, dann
werden die Prioritätskriterien
verwendet, um zu bestimmen, welcher logische Bereich die höchste Priorität hat. Jeder
logische Bereich hat eine Anzahl von Attributen für diesen
Bereich angegeben, die zur Steuerung des Zugriffs auf die Speicherstellen
in diesem logischen Bereich verwendet werden. Basierend auf dieser
Bestimmung, welcher Bereich die höchste Priorität hat, werden
daraufhin die Attribute für
diesen Bereich mit der höchsten
Priorität
verwendet, um den Zugriff auf von dem Prozessor angegebene, spezifische
Speicherstellen zu steuern.
-
Folglich
kann unter Bezug auf das zuvor erwähnte Beispiel, bei dem es gewünscht war,
4 kb von Supervisorcode und 12 kb von Benutzercode in einem 16 kb
RAM zur Verfügung
zu stellen, dies gemäß der vorliegenden
Erfindung durch Bereitstellen zweier überlappender Bereiche erreicht
werden, eines 4 kb Bereiches für
den Supervisorcode und eines 16 kb Bereiches für den Benutzercode. Für den Supervisorbereich
würde eine
höhere
Priorität
als für den
Benutzerbereich festgelegt werden, wodurch sichergestellt würde, daß jeder
Versuch eines Zugriffs auf den 4 kb überlappenden Bereich durch
die mit dem Supervisorbereich verbundenen Attribute bestimmt würde. Folglich
brauchen gemäß der vorliegenden
Erfindung in diesem Beispiel nur zwei Bereiche definiert zu werden
statt der vier Bereiche, die gemäß der Methode
nach dem Stand der Technik definiert werden mußten.
-
In
der vorliegenden Erfindung wird einer der logischen Bereiche als
ein Hintergrundbereich verwendet, der den gesamten Speicher abdeckt
und die niedrigste Priorität
der logischen Bereich hat, wobei in dem Fall, daß die von dem Prozessor ausgegebene
Adresse einer Speicherstelle entspricht, die nicht in irgendeinem
der anderen logischen Bereiche liegt, dann die mit dem Hintergrundbereich
verbundenen Attribute verwendet werden, um den Zugriff auf die durch
diese Adresse angegebene Speicherstelle zu regeln.
-
Es
ist möglich,
daß die
definierten Speicherbereiche den Adreßraum des Speichers nicht vollständig ausfüllen und
es daher "Löcher" in der Adreßabbildung
gibt. Indem jedoch der Bereich mit der niedrigsten Priorität so eingerichtet
wird, daß er
den gesamten Speicheradreßbereich
abdeckt, und passende Attribute für diesen logischen Speicherbereich angegeben
werden, ist es dann möglich
zu definieren, was passiert, wenn ein Zugriff auf ein Loch erfolgt
(zum Beispiel könnten
die Attribute auf vollen Zugriff oder keinen Zugriff gesetzt werden).
-
Nach
bevorzugten Ausführungsformen
sind die Adreßbereiche
für die
logischen Bereiche durch eine Basisadresse spezifiziert, die angibt,
an welcher Speicherstelle der logische Bereich anfängt, und
ein Größenattribut,
welches die Größe des logischen
Bereiches angibt. Nach bevorzugten Ausführungsformen wird die Basisadresse
als eine Funktion des Größenattributs
bestimmt, so daß ein
Speicherbereich der Größe X eine
Basisadresse haben muß,
die ein Vielfaches des Wertes X ist. Dieser Ansatz dient dazu, die
Hardwareanforderungen zu vereinfachen. Die Basisadresse und das
Größenattribut
sind typischerweise benutzerprogrammierbar. Als eine Alternative
zum Verwenden einer Basisadresse und eines Größenattributs können die
Adreßbereiche
für die
logischen Bereiche durch eine Startadresse und eine Endadresse spezifiziert
werden, die den Beginn und das Ende des logischen Bereiches angeben.
-
Die
Adreßvergleicherlogik
kann in jeder geeigneten Weise eingerichtet werden. Nach bevorzugten
Ausführungsformen
weist die Adreßvergleicherlogik
eine Anzahl von Vergleichern auf, einen für jeden Adreßbereich.
-
Der
Adreßbereichspeicher
kann durch jede geeignete Speichereinrichtung bereitgestellt werden. Jedoch
weist der Adreßbereichspeicher
nach bevorzugten Ausführungsformen
eine Anzahl von Registern auf. Vorzugsweise sind separate Register
jedem Vergleicher der Adreßvergleicherlogik
zugeordnet.
-
Der
Attributspeicher kann jede passende Form annehmen. Jedoch weist
der Attributspeicher nach bevorzugten Ausführungsformen eine Mehrzahl von
Attributregistern auf, die an einen Multiplexer angeschlossen sind,
wobei jedes Register die Attribute für einen logischen Bereich enthält, wobei
die Attributbestimmungslogik ein Signal an den Multiplexer ausgibt,
um den Multiplexer zu veranlassen, die Attribute aus dem Attributregister
auszugeben, das dem die Adresse enthaltenden Bereich mit der höchsten Priorität entspricht.
-
Nach
bevorzugten Ausführungsformen
hat die Adreßvergleicherlogik
eine Mehrzahl von Ausgaben bzw. Ausgängen, wobei ein Ausgang für jeden logischen
Bereich bereitgestellt wird und ein Signal auf den Ausgängen erzeugt
wird, um anzuzeigen, ob der zugehörige logische Bereich die Adresse
enthält, wobei
die Attributbestimmungslogik eine entsprechende Mehrzahl von Eingängen bzw.
Eingaben zum Empfang der Signale von der Mehrzahl von Ausgängen hat
und die Mehrzahl von Eingängen über relative
Prioritäten
verfügen,
die von der Attributbestimmungslogik verwendet werden, um die zuvor
festgelegten Prioritätskriterien
anzuwenden.
-
Man
erkennt jedoch, daß auch
alternative Techniken zum Anwenden der zuvor festgelegten Prioritätskriterien
verwendet werden könnten.
Zum Beispiel können
die zuvor festgelegten Prioritätskriterien
als eine Prioritätsinformation
in einem Speicher gespeichert werden, auf den die Attributbestimmungslogik
zugreifen kann, wobei die Prioritätsinformation die relativen
Prioritäten
der logischen Bereiche angibt.
-
Nach
bevorzugten Ausführungsformen
weist die Datenverarbeitungsvorrichtung ferner einen Prozessorkern
zur Ausgabe von Adressen, die Speicherstellen innerhalb des Speichers
entsprechen, auf, wo von dem Prozessor benötigte Datenwerte gespeichert
sind, oder wo von dem Prozessor verarbeitete Datenwerte gespeichert
werden sollen. Darüber
hinaus kann der Datenverarbeitungsschaltkreis einen Cachespeicher
zum Speichern von Datenwerten aufweisen, auf die der Prozessorkern
zugreifen kann. In einer solchen Anordnung erfolgt die Bestimmung
der Attribute für
den Bereich mit der höchsten
Priorität zum
Verbessern der Effizienz vorzugsweise, während ein Nachsehen im Cache
stattfindet.
-
Ein
einzelner Cachespeicher kann sowohl zum Speichern der Befehle als
auch der Daten vorgesehen werden, wobei ein solcher Cachespeicher oft
als ein Cachespeicher mit einer Von- Neumann-Cachearchitektur bezeichnet
wird. Jedoch kann alternativ ein erster Cachespeicher zum Speichern
von Befehlen und ein zweiter Cachespeicher zum Speichern von Daten
vorgesehen werden, wobei ein solcher Cachespeicher oft als ein Cachespeicher
mit einer Harvard-Architektur bezeichnet wird, wobei die Adreßvergleicherlogik
und die Attributbestimmungslogik für jeden der ersten und zweiten
Cachespeicher repliziert wird. Wenn separate Daten- und Befehlscachespeicher
verwendet werden, werden folglich die Elemente des Datenverarbeitungsschaltkreises,
die zum Bestimmen der Attribute benötigt werden, die zum Steuern
des Zugriffs auf den Speicher verwendet werden, vorzugsweise für jeden Cachespeicher
repliziert. Wie zuvor erwähnt
erfolgt das Bestimmen der Attribute für den Bereich mit der höchsten Priorität vorzugsweise,
während
ein Nachsehen im Cache stattfindet. Wenn es zwei Cachespeicher gibt,
kann ein Nachsehen im Datencachespeicher erfolgen, während eine
Operation zum Nachsehen auch in dem Befehlscachespeicher stattfindet,
und somit werden zwei Sätze
von Schaltkreisen zum Bestimmen der Attribute benötigt, die
für den
Zugriff auf Speicheradressen verwendet werden, die sowohl in dem
Befehls- als auch in dem Datencachespeicher den Operationen zum
Nachsehen entsprechen.
-
Unter
einem zweiten Aspekt betrachtet stellt die vorliegende Erfindung
ein Verfahren für
den Betrieb einer Datenverarbeitungsvorrichtung zur Verfügung, um
den Zugriff auf einen Speicher mit einer Mehrzahl von Speicherstellen
zum Speichern von Datenwerten zu steuern, wobei jede Speicherstelle eine
zugehörige
Adresse hat und wobei das Verfahren die folgenden Schritte aufweist:
(a) Speichern von Information, die Adreßbereiche für eine Mehrzahl von logischen
Bereichen innerhalb des Speichers angibt; (b) Speichern von Attributen
für jeden
logischen Bereich, wobei die Attribute zum Steuern des Zugriffs auf
Speicherstellen innerhalb dieser logischen Bereiche verwendet werden;
(c) Vergleichen einer von einem Prozessor ausgegebenen Adresse,
die einer dieser Speicherstellen entspricht, mit den Adreßbereichen
für diese
Mehrzahl von logischen Bereichen; (d) falls einer oder mehrere der
logischen Bereiche diese Adresse enthält, Generieren eines Signals,
das diese logischen Bereiche angibt, die diese Adresse enthalten;
(e) in Reaktion auf das in Schritt (d) erzeugte Signal Anwenden
von zuvor festgelegten Prioritätskriterien,
um festzustellen, welcher logische Bereich, der diese Adresse enthält, die
höchste
Priorität
hat; und (f) Ausgeben der gespeicherten Attribute, die diesem Bereich
mit der höchsten
Priorität
entsprechen, zur Verwendung beim Steuern des Zugriffs auf die Speicherstelle,
die von der Adresse spezifiziert wird; wobei einer der logischen
Bereiche ein Hintergrundbereich ist, der den gesamten Speicher überdeckt
und die niedrigste Priorität
dieser logischen Bereiche hat, wobei für den Fall, daß das bei Schritt
(d) erzeugte Signal anzeigt, daß die
von dem Prozessor ausgegebene Adresse einer Speicherstelle entspricht,
die nicht innerhalb irgendeines der anderen logischen Bereiche liegt,
dann bei Schritt (f) die mit dem Hintergrundbereich verbundenen,
gespeicherten Attribute ausgegeben werden.
-
Kurzbeschreibung
der Zeichnungen
-
Eine
Ausführungsform
der Erfindung wird nachstehend nur als Beispiel unter Bezug auf
die beigefügten
Zeichnungen beschrieben, in denen gleiche Bezugszeichen für gleiche
Merkmale verwendet werden und in denen:
-
1 ein Blockdiagramm ist,
das eine Datenverarbeitungsvorrichtung gemäß der bevorzugten Ausführungsform
der vorliegenden Erfindung veranschaulicht;
-
2 eine Tabelle ist, die
veranschaulicht, wie logische Bereiche unterschiedlicher Größe innerhalb
des Speichers durch ein Größenfeld
von fünf Bits
gemäß bevorzugter
Ausführungsformen
der vorliegenden Erfindung angegeben werden können;
-
3 ein Flußdiagramm
ist, das die Verarbeitungsschritte veranschaulicht, die gemäß bevorzugter
Ausführungsformen
der vorliegenden Erfindung durchgeführt werden, um die Attribute
zu bestimmen, die zum Steuern des Zugriffs auf einen Speicher verwendet
werden; und
-
4A und 4B Ausführungsformen der vorliegenden
Erfindung veranschaulichen, in denen separate Daten- und Befehlscachespeicher
verwendet werden.
-
Beschreibung
einer bevorzugten Ausführungsform
-
Ein
Datenverarbeitungsschaltkreis gemäß der bevorzugten Ausführungsform
der vorliegenden Erfindung wird hier unter Bezug auf das Blockdiagramm
von 1 beschrieben. Wie
in 1 gezeigt, hat der
Datenverarbeitungsschaltkreis einen Prozessorkern 10, der
darauf ausgerichtet ist, von dem Speicher 120 empfangene
Befehle zu verarbeiten. Daten, die von dem Prozessorkern 10 zum
Ausführen
dieser Befehle benötigt
werden, können
auch aus dem Speicher 120 geholt werden. Ein Cachespeicher 30 zum
Speichern von aus dem Speicher 120 geholten Daten und Befehlen
steht zur Verfügung,
so daß sie
anschließend
leicht für
den Prozessorkern 10 verfügbar sind. Die Cachesteuereinheit 40 steht
auch zur Verfügung,
um die Speicherung von Befehlen und Daten in dem Cachespeicher 30 zu
steuern, und das Abholen von Daten und Befehlen aus dem Cachespeicher
zu steuern.
-
Gemäß bevorzugten
Ausführungsformen
der vorliegenden Erfindung kann eine Mehrzahl von logischen Bereichen
innerhalb des Speichers 120 definiert werden, wobei jeder
logische Bereich eine unabhängig
programmierbare Größe hat.
Zum Zweck der Beschreibung einer bevorzugten Ausführungsform
wird ein Speicher 120 mit einem Adreßraum von 4 GB betrachtet und
es wird angenommen, daß 8
logische Bereiche innerhalb des Adreßbereiches definiert werden
können.
Natürlich
ist es den Fachleuten auf diesem Gebiet klar, daß die tatsächliche Größe des Speichers und die Anzahl
von definierbaren logischen Bereichen nach Bedarf verändert werden kann,
um spezielle Anforderungen des Datenverarbeitungsschaltkreises zu
erfüllen.
-
Jeder
logische Bereich ist vorzugsweise durch eine Basisadresse definiert,
die angibt, wo der Bereich im Speicher beginnt, und durch ein Größenfeld,
das die Größe dieses
logischen Bereiches definiert. Um die Hardwareanforderungen des
Vergleichers innerhalb der Schutzeinheit (die Schutzeinheit wird
später
genauer diskutiert) zu vereinfachen, wird eine Einschränkung auferlegt,
daß die
Basisadresse einer "Größen"grenze entsprechen
muß. Demnach würde zum
Beispiel ein logischer Bereich mit einer Größe von 1 MB so eingerichtet
werden, daß er
bei einer Basisadresse, die einer 1 MB-Grenze innerhalb des Speichers
entspricht, beginnt. Fachleute auf diesem Gebiet erkennen, daß diese
der Basisadresse in bevorzugten Ausführungsformen auferlegte Einschränkung nicht
wesentlich ist, und daß es
durch Bereitstellen komplexerer Hardware in der Schutzeinheit möglich wäre zuzulassen,
daß die
Basisadresse bei einer anderen Speicherstelle als einer Größengrenze
beginnt.
-
Gemäß bevorzugten
Ausführungsformen kann
die Größe eines
logischen Bereiches innerhalb des Bereiches von 4 KB bis 4 GB gewählt werden. Man
sieht jedoch, daß diese
Wahl des Bereiches je nach Wunsch geändert werden kann. 2 veranschaulicht eine Tabelle,
die zeigt, wie ein Größenregister
mit einem 5-Bit-Feld für
unterschiedliche Speichergrößen programmiert
werden kann. In dem in 2 dargestellten
Beispiel kann die Größe um Potenzen
von zwei variieren. Jedoch ist es Fachleuten auf diesem Gebiet klar,
daß es
keine Notwendigkeit gibt, die Größe in der
Weise zu beschränken,
daß sie um
Potenzen von zwei variiert, und daß es durch Bereitstellen eines
Größenregisters
mit einer größeren Anzahl
von Bits möglich
ist, zusätzliche
Flexibilität
bei der Programmierung der Größe jedes
Bereiches bereitzustellen.
-
Als
eine Alternative zur Verwendung von Basis- und Größenregistern
können
auch Start- und
Enderegister verwendet werden, um die logischen Bereiche zu definieren.
In solchen Fällen
würde die
Information, die den tatsächlichen
Adressen des Beginns und des Endes jedes logischen Bereiches entspricht,
statt der Basisadresse und der Größe des Bereichs in Registern
gespeichert werden.
-
Indem
es ermöglicht
wird, die logischen Bereiche mittels entweder der Basis- und Größenregister
oder der Start- und Enderegister zu definieren, wie oben diskutiert,
ist der Benutzer in der Lage, überlappende
logische Bereiche im Speicher zu definieren. Nach bevorzugten Ausführungsformen
der vorliegenden Erfindung hat jeder logische Bereich unabhängige Attribute
wie damit verbundene Schutzattribute, im Cache speicherbare und
pufferbare Attribute. Mit der Möglichkeit
von überlappenden
logischen Bereichen ist es natürlich
wichtig, daß jeder
Zugriff auf den Speicher in einer vorhersehbaren Weise behandelt
wird. Nach bevorzugten Ausführungsformen
wird dies durch Verwenden der in 1 dargestellten
Schutzeinheit 20 erreicht, und die Funktionsweise dieser
Schutzeinheit wird nun genauer beschrieben.
-
Wenn
der Prozessorkern 10 einen Befehl oder ein Datenelement
(im Anschluß werden
sowohl Befehle als auch Daten als Datenwerte bezeichnet) benötigt, stellt
er die Speicheradresse dieses Datenwertes auf die Busleitung 54 des
Prozessorbusses 50. Darüber
hinaus gibt der Prozessorkern 10 ein Prozessorsteuersignal
auf der Busleitung 52 aus. Das Prozessorsteuersignal umfaßt Information
wie diejenige, ob die Adresse einer Lese- oder einer Schreibanforderung
entspricht, die Art des Zugriffs (z. B. sequentiell), die Größe des Zugriffs
(z. B. Wort, Byte), die Betriebsart des Prozessors (z. B. Supervisor
oder Benutzer), etc. Dieses Prozessorsteuersignal wird von der Cachesteuereinheit 40 empfangen und
fordert die Cachesteuereinheit auf, zu bestimmen, ob der angeforderte
Datenwert innerhalb des Cachespeichers 30 gespeichert ist.
Die Cachesteuereinheit 40 weist den Cachespeicher 30 an,
die Adresse auf der Busleitung 54 mit den Adressen in dem
Cachespeicher zu vergleichen, um festzustellen, ob der Datenwert,
der dieser Adresse entspricht, in dem Cachespeicher gespeichert
ist. Falls ja, wird der Datenwert aus dem Cachespeicher 30 auf
der Datenbusleitung 56 ausgegeben, aus der er dann von
dem Prozessorkern 10 gelesen wird. Wenn der Datenwert,
der der Adresse entspricht, nicht im Cachespeicher 30 ist,
dann übergibt
die Cachesteu ereinheit 40 ein Signal über die Leitung 130 an
die Busschnittstelleneinheit 95, um anzuzeigen, daß der Datenwert
aus dem Speicher 120 geholt werden muß.
-
Während dieser
Vorgang des Nachsehens im Cachespeicher stattfindet, empfängt die
Schutzsteuerung 150 innerhalb der Schutzeinheit 20 auch das
Prozessorsteuersignal auf der Busleitung 52 und beim Feststellen,
daß sich
das Prozessorsteuersignal auf einen möglichen Lese- oder Schreibzugriff
auf den Speicher 120 oder den Cachespeicher 30 bezieht,
weist er die Adreßvergleicher 70 an,
die von dem Prozessorkern 10 auf die Busleitung 54 gestellte Adresse
zu prüfen.
Nach bevorzugten Ausführungsformen
gibt es einen Adreßvergleicher
für jeden
logischen Bereich und jeder der Vergleicher hat ein zugeordnetes
Register, das den Adreßbereich
für einen bestimmten
logischen Bereich enthält.
Jeder Vergleicher ist darauf ausgerichtet, diesen Adreßbereich
mit der speziellen Adresse auf der Busleitung 54 zu vergleichen,
um festzustellen, ob die Adresse in dem zugehörigen logischen Bereich enthalten
ist. Jedesmal wenn ein Vergleicher feststellt, daß die Adresse
in dem Adreßbereich
des logischen Bereiches liegt, gibt er ein Treffersignal an den
Prioritätskodierer 75 über eine
entsprechende Leitung 160 aus.
-
Der
Prioritätskodierer 75 empfängt die
Signale, die von allen Vergleichern 70 ausgegeben werden.
Wenn der Prioritätskodierer
ein einziges Treffersignal empfängt,
dann zeigt dies an, daß die
Adresse nur innerhalb eines logischen Bereichs liegt. In diesem
Fall sendet der Prioritätskodierer 75 ein
Signal an den Multiplexer 80, um den Multiplexer 80 anzuweisen,
aus den Attributregistern 85 die diesem logischen Bereich
entsprechenden Attribute auszuwählen.
Diese Attribute werden danach verwendet, um den Zugriff auf den
Speicher 120 oder die Verwendung der aus dem Cachespeicher 30 geholten
Datenwertes zu steuern. Nach bevorzugten Ausführungsformen gibt es immer
mindestens ein erzeugtes Treffersignal, da einer der logischen Bereiche
ein Hintergrundbereich ist, der den gesamten Adreßraum des
Speichers 120 abdeckt. Es ist jedoch nicht wesentlich,
daß ein
Hintergrundbereich definiert ist, und somit ist es nach alternativen
Ausführungsformen
möglich,
daß kein
Treffersignal von den Adreßvergleichern 70 erzeugt
werden kann. In diesem Fall wird der Prioritätskodierer 75 darauf
ausgerichtet, ein Signal zu erzeugen, das angibt, daß keine
Treffer entdeckt wurden, und dieses Signal wird von dem Prioritätskodierer 75 an
die Logik 90 ausgegeben. Wie der Datenverarbeitungsschaltkreis
auf diesen Fall reagiert, würde
davon abhängen,
wie die Logik 90 eingerichtet ist. Zum Beispiel kann die
Logik so eingerichtet werden, daß jeder Versuch, auf eine Adresse
zuzugreifen, die nicht innerhalb irgendeines der logischen Bereiche
enthalten ist, in einem Abbruchsignal resultiert, das an den Prozessorkern 10 über die
Leitung 140 zurückgeliefert
wird.
-
Angenommen
mehr als ein Treffersignal wird durch die Adreßvergleicher 70 ausgegeben,
dann ist der Prioritätskodierer 75 darauf
ausgelegt, Prioritätskriterien
anzuwenden, um die relativen Prioritäten jedes der definierten logischen
Bereiche zu bestimmen. Die Prioritätsinformation, die sich auf
jeden logischen Bereich bezieht, kann innerhalb der Schutzeinheit 20 gespeichert
sein, und für
jeden logischen Bereich, für
den die Adreßvergleicher
ein Treffersignal erzeugt haben, kann der Prioritätskodierer
darauf ausgelegt sein, die entsprechende Prioritätsinformation zu verwenden,
um festzustellen, welcher logische Bereich die höchste Priorität hat.
-
Nach
bevorzugten Ausführungsformen
werden die relativen Prioritäten
der logischen Bereiche jedoch durch die Anordnung der Eingaben an
bzw. Eingänge
zu dem Prioritätskodierer 75 festgelegt. Wenn
es acht Adreßvergleicher 70 (Vergleicher
0–7) gibt,
die acht logischen Bereichen (logische Bereiche 0–7) entsprechen,
dann gibt es vorzugsweise acht entsprechende Drähte 160, die mit acht
Eingängen (Eingänge 0–7) an dem
Prioritätskodierer 75 verbunden
sind. Den Eingängen,
die den logischen Bereichen entsprechen, können dann Prioritäten zugewiesen
werden, so daß die
Priorität
mit der Eingangsnummer ansteigt, d. h. die Eingangsnummer 7 hat
die höchste
Priorität,
die Eingangsnummer 0 hat die niedrigste Priorität.
-
Der
Prioritätskodierer
ist dann dafür
ausgelegt, bedingte Logik anzuwenden, indem er zuerst bestimmt,
ob ein Treffersignal an dem dem logischen Bereich 7 entsprechenden
Eingang Nummer 7 empfangen wurde. Wenn ja, dann wird von dem Prioritätskodierer 75 ein
Signal an den Multiplexer 80 ausgegeben, das anzeigt, daß die Attribute
für den
logischen Bereich 7 aus den Attributregistern 85 ausgegeben
werden sollten. Wenn kein Treffersignal am dem logischen Bereich
7 entsprechenden Eingang empfangen wurde, stellt der Prioritätskodierer 75 fest,
ob ein Treffersignal am dem logischen Bereich 6 entsprechenden Eingang
6 empfangen wurde. Falls ja, dann wird von dem Prioritätskodierer 75 ein
Signal an den Multiplexer 80 ausgegeben, das anzeigt, daß die Attribute
für den
logischen Bereich 6 aus den Attributregistern 85 ausgegeben
werden sollten. Wenn kein Treffersignal am dem logischen Bereich
6 entsprechenden Eingang empfangen wurde, dann wird derselbe Vorgang
für jeden
Eingang nacheinander wiederholt, bis ein Eingang mit einem Treffersignal gefunden
wird. Wenngleich die obige Beschreibung den Vorgang in logischen
Begriffen angibt, wird eingeräumt,
daß der
tatsächliche
Vorgang typischerweise nicht wie beschrieben sequentiell durchgeführt würde, sondern
stattdessen eine passende Logik vorgesehen würde, um alle acht Eingänge zusammen
zu empfangen und eine Ausgabe zu erzeugen, die den Bereich mit der
höchsten
Priorität
angibt.
-
Nach
bevorzugten Ausführungsformen
gibt es immer ein Treffersignal in dem Bereich mit der niedrigsten
Priorität
(Bereich 0), da dieser als ein Hintergrundbereich eingerichtet wird,
der den gesamten Speicheradreßraum
abdeckt. Somit führt
die von dem Prioritätskodierer 75 durchgeführte Verarbeitung
zu einem Signal, das an den Multiplexer 80 gesendet wird
und den Multiplexer anweist, die Attribute aus den Attributregistern 85 zu
holen, die demjenigen Bereich mit der höchsten Priorität entsprechen,
der die von dem Prozessorkern 10 ausgegebene Adresse enthält. Die
von dem Multiplexer 80 ausgegebenen Attribute werden dann
der Logikeinheit 90 und der Busschnittstelleneinheit 95 übergeben.
Die Logikeinheit 90 empfängt auch das Prozessorsteuersignal
von der Busleitung 52. Dieses Prozessorsteuersignal definiert
unter anderem die Betriebsart des Prozessorkerns 10. Daher
kann die Logik 90 diese Information verwenden, um zu bestimmen,
ob die von dem Multiplexer 80 ausgegebenen Attribute es
dem Prozessorkern 10 in seiner aktuellen Betriebsart erlauben,
auf die angeforderte Speicheradresse zuzugreifen. Wenn zum Beispiel
die Logikeinheit 90 ermittelt, daß der Prozessorkern 10 in
einem Benutzermodus ist und die von dem Multiplexer 80 ausgegebenen
Attribute anzeigen, daß auf
die Speicheradresse nur im Supervisormodus zugegrif fen werden kann, dann
kann die Logik 90 dafür
ausgelegt sein, ein Abbruchsignal auf dem Pfad 140 an den
Prozessorkern 10 und auf dem Pfad 170 an die Busschnittstelleneinheit 95 zu
erzeugen.
-
Die
von der Schutzeinheit 20 durchgeführte Verarbeitung geschieht
vorzugsweise zur selben Zeit wie der Vorgang des Nachsehens im Cachespeicher, um
eine ausreichende Verarbeitungsgeschwindigkeit aufrecht zu erhalten.
Wenn der angeforderte Datenwert in dem Cachespeicher 30 verfügbar ist
und die Logikeinheit 90 kein Abbruchsignal auf der Leitung 140 erzeugt,
dann verwendet der Prozessorkern 10 die aus dem Cachespeicher 30 geholten
Daten. Wenn jedoch der angeforderte Datenwert nicht im Cachespeicher
verfügbar
ist, dann wird, wie zuvor diskutiert, ein Signal über den
Pfad 130 gesendet, das die Busschnittstelleneinheit (Bus
Interface Unit, BIU) 95 anweist, für den Datenwert auf den Speicher 120 zuzugreifen.
-
Die
BIU 95 prüft
das Prozessorsteuersignal auf der Busleitung 52, um festzustellen,
ob der von dem Prozessorkern 10 ausgegebene Befehl ein
Lese- oder Schreibbefehl ist. Angenommen, es ist ein Lesebefehl
und es wird kein Abbruchsignal über
den Pfad 170 aus der Logik 90 empfangen, dann
weist die BIU 95 den Multiplexer 100 an, die Adresse
von der Busleitung 54 an die externe Adreßbusleitung 64 von
Bus 60 zu übergeben
(das heißt
anzunehmen, daß keine
anhängigen
Schreibbefehle auf den Speicher 120 in dem Schreibpuffer 105 anhängig sind – wenn irgendwelche
solchen anhängigen
Schreibbefehle vorhanden sind, werden diese vor dem Lesebefehl zu
Ende geführt.
Die Aktion des Schreibpuffers wird später genauer diskutiert). Ein
Steuersignal wird auch auf die Busleitung 62 eingestellt,
das von der Speichersteuerung 180 verwendet wird, um den
Zugriff auf den Speicher 120 zu steuern. Die Speichersteuerung 180 stellt
aus dem Steuersignal auf der Busleitung 62 fest, daß ein Speicherlesevorgang
angefordert ist, und weist den Speicher an, die Daten an der auf
der Adreßbusleitung 64 angegebenen
Adresse auf der Datenbusleitung 66 auszugeben.
-
Die
BIU 95 sendet ein Signal an den Puffer 110, um
den Puffer 110 zu veranlassen, die von dem Speicher 120 auf
die externe Busleitung 66 eingestellten Daten an die Prozessorbusleitung 56 zu übergeben.
Darüber
hinaus wird dann die BIU 95, wenn die von der BIU 95 aus
dem Multiplexer 80 der Schutzeinheit 20 empfangenen
Attribute anzeigen, daß die
Adresse einen im Cache speicherbaren Datenwert enthält, ein
Signal über
den Pfad 135 an die Cachesteuerung 40 senden,
um die Cachesteuerung anzuweisen, den geholten Datenwert in dem
Cachespeicher 30 zu speichern. Der aus dem Speicher 120 geholte
und auf die Busleitung 56 eingestellte Datenwert wird danach
in dem Cachespeicher 30 gespeichert und auch an den Prozessorkern 10 übergeben. Anschließend kann
auf diesen Datenwert von dem Prozessorkern 10 einfach aus
dem Cachespeicher zugegriffen werden. Wenn die von der BIU 95 empfangenen
Attribute anzeigen, daß der
Datenwert nicht im Cache speicherbar ist, dann werden die Daten
nicht im Cachespeicher gespeichert, und der Prozessorkern 10 liest
den Datenwert von der Busleitung 56.
-
Die
obige Beschreibung hat verdeutlicht, wie die Schutzeinheit 20 verwendet
wird, um den Zugriff auf den Speicher 120 zum Zweck des
Lesens von Datenwerten aus dem Speicher 120 zu steuern.
Für den
Fall, daß die
von dem Prozessorkern 10 ausgegebene Adresse eine Adresse
ist, auf die der Prozessor einen Datenwert schreiben will, so findet
die folgende Prozedur statt.
-
Der
Prozessorkern stellt ein Prozessorsteuersignal auf die Busleitung 52,
eine Adresse auf die Busleitung 54 und den zu speichernden
Datenwert auf die Busleitung 56. Die Schutzsteuerung 150 innerhalb
der Schutzeinheit 20 prüft
das Prozessorsteuersignal auf der Busleitung 52 und beim
Feststellen, daß sich
das Prozessorsteuersignal auf einen Schreibzugriff auf den Speicher 120 bezieht,
weist sie die Adreßvergleicher 70 an,
die von dem Prozessorkern 10 auf die Busleitung 54 eingestellte
Adresse zu überprüfen. Die
Schutzeinheit führt
dann dieselbe Prozedur wie zuvor unter Bezug auf einen Schreibbefehl
beschrieben aus, um den logischen Bereich mit der höchsten Priorität, der diese
Adresse enthält,
zu ermitteln. Das führt
dazu, daß die
diesem Bereich entsprechenden Attribute an die BIU 95 und
die Logik 90 ausgegeben werden.
-
Die
BIU 95 überprüft das Prozessorsteuersignal
auf der Busleitung 52, um festzustellen, ob der von dem
Prozessorkern 10 ausgegebene Befehl ein Lese- oder ein
Schreibbefehl ist. Angenommen es ist ein Schreibbefehl, dann stellt
die BIU fest, daß ein Schreibvorgang
angewendet werden muß und
verwendet die von der Schutzeinheit 20 empfangene Attributinformation,
um diesen Schreibvorgang zu steuern.
-
Die
Logikeinheit 90 hat aus den von dem Multiplexer 80 ausgegebenen
Attributen und aus dem Prozessorsteuersignal ermittelt, ob der Prozessorkern
in der Lage ist, in seiner aktuellen Betriebsart auf die spezielle
Adresse zu schreiben, und hat, falls nicht, ein Abbruchsignal ausgegeben.
Jegliches Abbruchsignal wird über
den Pfad 170 an die BIU 95 gesendet, um sie anzuweisen,
den Schreibbefehl zu ignorieren, und auch über den Pfad 140 an
den Prozessorkern 10 gesendet, um zu veranlassen, daß die Daten,
die Adresse und die Steuerinformation von den Busleitungen 56, 54 bzw. 52 weggenommen werden,
und den Prozessorkern 10 in die Lage zu versetzen, irgendeine
Ausnahmeprozedur auszuführen,
die im Fall eines solchen Abbruchs erforderlich ist.
-
Angenommen
jedoch, der Prozessorkem ist berechtigt, auf die auf die Busleitung 54 eingestellte Adresse
zu schreiben, und empfängt
demnach von der BIU 95 kein Abbruchsignal, dann verwendet
die BIU 95 die Attributinformation von dem Multiplexer 80,
um festzustellen, ob die zu schreibenden Daten gepuffert werden
können
oder nicht. Wenn die Daten gepuffert werden können, dann weist die BIU 95 den Schreibpuffer 105 an,
die Daten, die Adresse und die Steuersignale vom Bus 50 zu
holen. Sobald dies erfolgt ist, kann der nächste Befehl von dem Prozessorkern 10 verarbeitet
werden, ohne darauf zu warten, daß der Schreibbefehl abgeschlossen
ist.
-
Der
Schreibpuffer ist vorzugsweise ein FIFO-Puffer. Wenn der externe
Bus 60 frei ist, weist die BIU 95 den Multiplexer 100 an,
den nächsten
Eintrag aus dem Schreibpuffer auf den externen Bus 60 auszugeben.
Der Multiplexer 100 gibt daraufhin die notwendigen Steuer-,
Adreß- und Datensignale
auf die Busleitungen 62, 64 bzw. 66 aus,
wobei die Speichersteuerung 180 das Steuersignal verwendet,
um den Schreibzugriff auf den Speicher 120 zu steuern. Zu
diesem Zeitpunkt werden die Daten in dem Speicher 120 gespeichert.
Da die zu speichernden Daten aus dem Schreibpuffer 105 sequentiell
verarbeitet werden, werden demnach zu einem gewissen Zeitpunkt die
Daten, die der von dem Prozessor auf der Busleitung 54 ausgegebenen
Adresse entsprechen, in dem Speicher 120 gespeichert sein.
-
Wenn
jedoch die Busschnittstelleneinheit 95 feststellt, daß die Adresse,
auf die die Daten zu speichern sind, nicht gepuftert werden kann,
dann weist die Busschnittstelleneinheit 95 den Multiplexer 100 an,
die Prozessorsteuer-, Adreß-
und Dateninformation aus den Busleitungen 52, 54 und 56 direkt
auszuwählen.
Der Multiplexer 100 gibt dann diese Information auf den
externen Bus 60 aus, um zu veranlassen, daß die Daten
an der entsprechenden Adresse in dem Speicher 120 gespeichert
werden. Jedoch bevor dies erfolgt, würde der Schreibpuffer 105 typischerweise
von allen Einträgen
in ihm geleert werden, um dadurch sicherzustellen, daß die Schreibbefehle
in der richtigen Reihenfolge verarbeitet werden. Sobald die nicht
pufferbaren Daten, die dem aktuellen Schreibbefehl entsprechen,
gespeichert wurden, kann danach der nächste Befehl verarbeitet werden.
-
Der
Vorgang, der von der Schutzeinheit 20 durchgeführt wird,
wird nun unter Bezug auf 3 diskutiert,
die ein Flußdiagramm
der innerhalb der Schutzeinheit 20 durchgeführten Verarbeitungsschritte
ist. Bei Schritt 300 wartet die Schutzeinheit 20 darauf,
daß die
Adresse von dem Prozessorkern 10 auf die Adreßbusleitung 54 eingestellt
wird. Wie zuvor erwähnt,
reagiert die Schutzsteuerung 150 innerhalb der Schutzeinheit 20 auf
ein Steuersignal auf dem PC-Bus 52, um die Adreßvergleicher 70 anzuweisen,
die von dem Prozessorkern 10 auf die Busleitung 54 gestellte
Adresse zu überprüfen. Nach
bevorzugten Ausführungsformen
ist ein Adreßvergleicher
für jeden
logischen Bereich vorgesehen und somit gibt es in bevorzugten Ausführungsformen
acht Adreßvergleicher
innerhalb des Adreßvergleicherblocks 70.
Jeder Adreßvergleicher
besitzt ein zugeordnetes Adreßregister,
das den Adreßbereich
für den
zugehörigen
logischen Bereich enthält.
Die aus der Adreßleitung 54 empfangene
Adresse wird bei Schritt 310 mit dem Adreßbereich
in dem zugeordneten Adreßregister
verglichen, und wenn die Adresse innerhalb dieses Adreßbereiches
liegt, wird ein "Treffer"-Signal von diesem
Adreßvergleicher
bei Schritt 320 auf einem zugehörigen Draht 160 ausgegeben.
-
Alle
von den Adreßvergleichern 70 erzeugten
Signale werden dem Prioritätskodierer 75 übergeben,
wo bei Schritt 330 die Prioritätskriterien angewandt werden,
um den die Adresse enthaltenden logischen Bereich zu ermitteln,
der die höchste
Priorität hat.
Wie zuvor erwähnt,
wird dies nach bevorzugten Ausführungsformen
dadurch ausgeführt,
daß der
Prioritätskodierer
dafür ausgelegt
wird, bedingte Logik anzuwenden, indem zuerst ermittelt wird, ob
ein Treffersignal auf dem Eingang, der dem Bereich mit der höchsten Priorität entspricht,
empfangen wurde. Falls nicht, wird der Eingang, der dem Bereich
mit der nächst
höchsten
Priorität
entspricht, geprüft
und so weiter, bis ein Treffersignal erkannt wird. Da der Prioritätskodierer 75 die
Eingänge
logisch in der Reihenfolge abnehmender Priorität prüft, entspricht das erste erkannte
Treffersignal dem logischen Bereich mit der höchsten Priorität, der die
von dem Prozessorkern 10 ausgegebene Adresse enthält. Man
erkennt, daß dieser
Vorgang nicht sequentiell Eingang für Eingang durchgeführt werden
muß und
daß nach
bevorzugten Ausführungsformen
eine geeignete Logik vorgesehen werden würde, um alle acht Eingänge zusammen
zu empfangen und eine Ausgabe zu erzeugen, die den Bereich mit der
höchsten
Priorität
angibt.
-
Nach
bevorzugten Ausführungsformen
gibt es immer mindestens ein Treffersignal, da entweder der gesamte
Adreßraum
von den verschiedenen logischen Bereichen überdeckt wird oder einer der
logischen Bereiche ein Hintergrundbereich ist, der den gesamten
Adreßraum
des Speichers 120 abdeckt. Jedoch ist es nicht notwendig,
daß ein
logischer Hintergrundbereich definiert ist, und somit ist es möglich, daß ein Treffersignal
nicht erzeugt werden kann, womit angezeigt wird, daß die von
dem Prozessorkern 10 ausgegebene Adresse einem "Loch" im Speicher 120 entspricht.
In solchen Fällen,
wenn ein Hintergrundbereich fehlt, wird das System typischerweise hart
verdrahtet, um festzulegen, wie Zugriffe auf Löcher behandelt werden; zum
Beispiel kann es dafür ausgelegt
sein, daß jeder
Zugriff auf ein Loch zu einem Abbruchsignal führt, das von der Logik 90 erzeugt
wird. Wenn andererseits ein logischer Hintergrundbereich definiert
ist, dann gibt es keine Notwendigkeit, sich darauf zu verlassen,
da die Attribute, die diesem Hintergrundbereich entsprechen, zur
Steuerung des Zugriffs verwendet werden.
-
Angenommen
ein Hintergrundbereich soll als der Bereich mit der niedrigsten
Priorität
definiert werden, dann kann dieser Hintergrundbereich hart verdrahtet
werden, um den gesamten Adreßraum
zu überdecken.
Dann kann dieser Bereich mit der niedrigsten Priorität von dem
Vergleichsprozeß,
der von den Adreßvergleichern 70 durchgeführt wird,
ausgeschlossen werden, was zu einem Vergleicher weniger und einem
Draht 160 weniger zu dem Prioritätskodierer 75 führt. Für den Fall,
daß von
den Adreßvergleichern 70 keine
Treffersignale erzeugt werden, was anzeigt, daß keiner der anderen logischen
Bereich die Adresse enthält,
kann dann der Prioritätskodierer 75 dafür ausgelegt
sein, ein Signal an den Multiplexer 80 zu senden, um ihn
anzuweisen, die mit dem Bereich niedrigster Priorität verbundenen
Attribute auszuwählen.
Dieser Ansatz kann die Effizienz verbessern, wenngleich dadurch
die Flexibilität
leicht reduziert wird, da die Adreßvergleicher die Adresse nicht
mit dem Adreßbereich
für den
Bereich mit der niedrigsten Priorität vergleichen, weshalb die
Attribute für
diesen Bereich mit der niedrigsten Priorität als eine direkte Konsequenz
daraus verwendet werden, daß die
Adreßvergleicher
feststellen, daß kein
anderer logischer Bereich die Adresse enthält.
-
Sobald
der Prioritätskodierer 75 festgestellt hat,
welcher die Adresse enthaltende logische Bereich die höchste Priorität hat, gibt
er ein Signal an den Multiplexer 80 aus, um den Multiplexer
anzuweisen, bei Schritt 340 die Attribute aus demjenigen
Attributregister 85 auszuwählen, das die Attribute für diesen
logischen Bereich enthält.
Sobald die Attribute von dem Multiplexer 80 ausgewählt sind,
werden diese Attribute bei Schritt 350 zur Verwendung bei der
Steuerung des Speicher- oder
Cachespeicherzugriffs ausgegeben.
-
Nach
bevorzugten Ausführungsformen
wird von der Logikeinheit 90 eine abschließende Prüfung durchgeführt, ob
die bei Schritt 350 ausgegebenen Attribute anzeigen, daß der Prozessorkern 10 in
seiner aktuellen Betriebsart keinen Zugriff auf die Speicheradresse
innerhalb des logischen Bereiches definiert durch diese Attribute
haben sollte. Wenn zum Beispiel der Prozessorkern 10 in
einem Benutzermodus arbeitet und eines der bei Schritt 370 ausgegebenen
Attribute anzeigt, daß auf
die Adresse nur im Supervisormodus zugegriffen werden darf, gibt
die Logikeinheit 90 ein Abbruchsignal über den Pfad 140 an den
Prozessorkern 10 aus, um anzuzeigen, daß der Prozessorkern 10 nicht
auf diesen Speicherbereich zugreifen kann, und sendet das Abbruchsignal
auch über
den Pfad 170 an die BIU 95.
-
Die
obenstehende Beschreibung hat eine Datenverarbeitungsvorrichtung
diskutiert, in der eine Mehrzahl von logischen Speicherbereichen
variabler Größe definiert
werden kann und in der sich diese logischen Bereiche überlappen
können,
um die Flexibilität
der Vorrichtung zu verbessern.
-
Obwohl
hier eine bestimmte Ausführungsform
beschrieben wurde, erkennt man, daß die Erfindung nicht hierauf
beschränkt
ist und daß viele
Abwandlungen und Ergänzungen
hierzu innerhalb des Anwendungs- bzw. Geltungsbereiches der Erfindung vorgenommen
werden können.
Zum Beispiel kann der Cachespeicher 30 verwendet werden,
um sowohl Befehle als auch Daten wie in 1 dargestellt zu speichern, oder alternativ
kann ein Cachespeicher zum Speichern von Befehlen und ein separater
Cachespeicher zum Speichern von Daten vorgesehen werden. In diesem
letzteren Fall würden
vorzugsweise zwei Schutzeinheiten 20 verwendet werden,
eine für
Befehle und eine für
Daten. Zwei Möglichkeiten, wie
dies implementiert werden könnte,
sind in den 4A und 4B dargestellt.
-
In 4A kann auf den Befehlscachespeicher 430 und
den Datencachespeicher 440 von dem Prozessorkern 10 gleichzeitig
zugegriffen werden. Wenn eine Befehlsadresse für ein Nachsehen in dem Befehlscachespeicher 430 verwendet
wird, wird diese Adresse auch für
die Schutzeinheit 400 angewandt, um die Attribute zu bestimmen,
die zur Zugriffssteuerung auf den Speicher verwendet werden sollten,
falls erforderlich. In ähnlicher
Weise wird, wenn eine Datenadresse für ein Nachsehen in dem Datencachespeicher 440 verwendet
wird, diese Adresse auch auf die Schutzeinheit 410 angewandt, um
die Attribute zu bestimmen, die zur Zugriffssteuerung auf den Speicher
verwendet werden sollten, falls benötigt. Die Schutzeinheiten 400 und 410 sind vorzugsweise
dieselben wie die in 1 dargestellte Schutzeinheit 20,
mit der Ausnahme, daß die
Attributregister und die Register, die die logischen Bereiche definieren,
nun durch einen Satz von Registern 420 bereitgestellt werden.
Somit werden in 4A dieselben
logischen Bereiche und Attribute sowohl für Daten- als auch Befehlszugriffe
auf den Speicher verwendet.
-
Ein
alternativer, in 4B dargestellter
Ansatz ist jedoch, daß die
Schutzeinheiten 400 und 410 separate Register 450 bzw. 460 haben,
wodurch es möglich
wird, logische Bereiche unterschiedlicher Größe mit unterschiedlichen Attributen
für Zugriffe auf
Daten und Befehle zu spezifizieren. Dies stellt eine größere Flexibilität zur Verfügung, da
es zum Beispiel einen Bedarf für
Datenbereiche mit anderer Größe als bei
Befehlsbereichen geben kann.