-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Das
System und das Verfahren der vorliegenden Erfindung betreffen den
Schutz des Speichers vor einem nicht-autorisierten Zugriff ohne Leistungsbeeinträchtigung.
Insbesondere betreffen das System und das Verfahren der vorliegenden
Erfindung den Schutz des Speichers in einem System, das auf einem
nicht-virtuellen Speicher basiert, wie z. B. eingebettete Controller.
-
2. Technischer Hintergrund
-
So
wie die Computer-Prozessoren und Controller immer komplizierter
werden, wird auch die zum Betreiben der Prozessoren und Controller
verwendete Software immer komplizierter. Um die Prozessoren und
Controller zu programmieren, wird heute typischerweise eine Gruppe
von Programmierern benötigt,
um den Code zum Betreiben des Prozessors oder Controllers zu entwickeln. Üblicherweise
arbeitet ein Team von Programmierern gleichzeitig an der Entwicklung
verschiedener Abschnitte des Codes. Während der Entwicklung treten
oft Fehler auf, und es entstehen Konflikte bezüglich der Speicherverwendung.
Es ist daher wünschenswert,
flexibel spezielle Speicherbereiche schützen zu können. Falls beispielsweise
ein bestimmter Abschnitt des Codes getestet worden ist und es dabei
festgestellt worden ist, daß er
exakt funktioniert, kann es wünschenswert sein,
diesen Code vor einer weiteren beabsichtigten oder unbeabsichtigten Änderung
zu schützen.
Darüber
hinaus ist es wünschenswert,
bestimmte Speicherbereiche, die von bestimmten vom Code verwendeten
Abschnitten verwendet werden, vor dem Zugriff durch andere Abschnitte
des Codes zu schützen,
um die Fehler während
der Entwicklung zu minimieren.
-
In
einem Mikroprozessor-basierten System mit einem virtuellen Speicher
stellt die Speicher-Management-Einheit (MMU) nicht nur die Funktion
des Abbildens von virtuellen Speicher zugriffen auf physikalische
Speicherzugriffe zur Verfügung,
sondern überprüft auch
den Schutz an den verschiedenen Abschnitten des Speichers. Bestimmte
Speicherabschnitte können
daher als gegen bestimmte Zugriffe geschützt spezifiziert werden, so
daß z.
B. bestimmte Prozesse auf bestimmte Abschnitte des Speichers nicht
zugreifen können.
-
Die
MMU verursacht jedoch bedeutendes Overhead bei jedem Zugriff, da
der Prozeß des
Ausführens
einer Übersetzung
von virtuellen in physikalische Adressen recht zeitaufwendig ist.
Dieser Nachteil ist akzeptabel aufgrund des Vorteils, daß dadurch ein
virtueller Speicherzugriff ermöglicht
wird. Eingebettete Controller oder Mikroprozessoren brauchen jedoch
nicht die Flexibilität
des virtuellen Adressierens, da die vom Controller bzw. Mikroprozessor
ausgeführte
Anwendung sehr speziell ist und üblicherweise
nicht so geändert
wird, daß die
Flexibilität
des virtuellen Adressierens benötigt
wird. Die eingebetteten Controller und Mikroprozessoren werden während der
Entwicklung mittels physikalischer Adressen codiert, da dies viel
schneller ist und weniger Hard- und Software-Overhead benötigt wird.
-
Aus
diesem Grund haben nicht alle Mikroprozessoren und Controller eine
MMU, da kein virtuelles Adressieren stattfindet und da diese Mikroprozessoren
bzw. Controller keinen Speicherschutzmechanismus bereitstellen.
Weil der zum Betreiben der Controller bzw. Mikroprozessoren benötigte Code
immer komplexer geworden ist und immer mehr Programmierer daher
benötigt
werden, um den Code zu entwickeln, ist der Bedarf entstanden, irgendeine
Art von Schutzmechanismus bereitzustellen. Darüber hinaus ist es wünschenswert,
daß der
Schutzmechanismus nicht dazu führt,
daß der
Prozessor weniger leistet, oder daß das Bereitstellen dieses
Schutzmechanismus zusätzlichen
Overhead verursacht.
-
-
ZUSAMMENFASSENDE
DARSTELLUNG DER ERFINDUNG
-
Es
ist daher eine Aufgabe der vorliegenden Erfindung, einen Speicherschutzmechanismus
bereitzustellen, der bei einer geringen oder ohne Leistungsbeeinträchtigung
einen nicht-autorisierten
Zugriff auf den Speicher verhindert.
-
Es
ist eine weitere Aufgabe der vorliegenden Erfindung, einen Speicherschutzmechanismus
bereitzustellen, der schnell und kostengünstig ist und nicht-autorisierte
Speicherzugriffe erfaßt
und verhindert.
-
Gemäß der vorliegenden
Erfindung wird eine unaufdringliche Einrichtung zum Bereitstellen
eines Schutzes vor Speicherzugriffsverletzungen mit einer Mehrzahl
von jeweils eine Basisspeicheradresse speichernden Speicherschutzadreßregistern,
einem Überwacher
zum Lesen irgendeiner auf einem mit einem Prozessor gekoppelten
Speicherbus übermittelten
Speicherzugriffsanforderung und einer Mehrzahl von jeweils einem
der Speicherschutzadreßregister zugeordneten
Maskenregister zum Speichern von Maskenbits bereitgestellt, wobei
die Einrichtung dadurch gekennzeichnet ist:
daß die nicht-autorisierten
Speicherzugriffsoperationen durch Betriebsmodus und Zugriffstyp
identifiziert sind;
daß der Überwacher
für jede
Speicherzugriffsanforderung eine Speicheradresse bestimmt, wobei
die Speicherzugriffsanforderung einen zugeordneten Betriebsmodus
und Zugriffstyp aufweist;
daß die Maskenbits zum selektiven
Bestimmen eines mit einem Abschnitt der Speicheradressen zum Feststellen
einer Übereinstimmung
zu vergleichenden Abschnitts der Basisspeicheradressen dienen;
daß ein Moduseingang
zum Empfangen von Signalen vorgesehen ist, die einen Betriebsmodus
und Zugriffstyp für
die Speicherzugriffsanforderung kennzeichnen; und
daß sie einen
Fehlermoduserzeugungsblock aufweist, der ein Fehlersignal an den
Prozessor zur Verfügung
stellt, wobei das Fehlersignal anzeigt, ob die Speicherzugriffsanforderung
eine der nicht-autorisierten Speicherzugriffsoperationen in dem
geschützten
Bereich des Speichers, wie er von den Maskenbits be stimmt ist, in Übereinstimmung
mit dem Betriebsmodus und Zugriffstyp, wie sie von den Attributbits
bestimmt sind, ist, wobei der Fehlermoduserzeugungsblock ferner
ein Abbruchsignal an eine Bussteuereinheit, die mit dem Speicherbus
gekoppelt ist, zur Verfügung
stellt, wenn die Speicherzugriffsanforderungsadresse in dem Bereich
des Speichers liegt und wenn der Speicherzugriffsbetriebsmodus und
Typ des Speicherzugriffs eine der nicht-autorisierten Speicherzugriffsoperationen
anzeigen.
-
Gemäß der vorliegenden
Erfindung wird ferner ein unaufdringliches Verfahren zum Bereitstellen eines
Schutzes vor Speicherzugriffsverletzungen mit den Schritten des Überwachens
eines Speicherbusses zum Erfassen einer Speicherzugriffsanforderung,
des Feststellens einer Speicheradresse aus der Speicherzugriffsanforderung
und des Vergleichens der Speicheradresse mit einer gespeicherten Basisadresse,
welche den geschützten
Speicherbereich identifiziert, um zu bestimmen, ob die Speicheradresse
in dem geschützten
Speicherbereich liegt, bereitgestellt, dadurch gekennzeichnet, daß
- a) ein angeforderter Betriebsmodus für die Speicherzugriffsanforderung
bestimmt wird;
- b) ein Zugriffstyp für
die Speicherzugriffsanforderung bestimmt wird;
- c) selektiv ein Abschnitt der Basisadresse mit einem entsprechenden
Abschnitt der Speicheradresse verglichen wird, um zu bestimmen,
ob eine Übereinstimmung
gegeben ist, wobei die Übereinstimmung
anzeigt, daß die
Speicheradresse in dem geschützten
Speicherbereich liegt;
- d) die folgenden Schritte dann, wenn die Speicheradresse im
geschützten
Speicherbereich liegt, ausgeführt
werden:
- i) Vergleichen des angeforderten Betriebsmodus und Zugriffstyps
mit gespeicherten Attributbits, die ungültige Betriebsmodi und ungültige Zugriffstypen
für den
geschützten
Speicherbereich kennzeichnen; und
- ii) Erzeugen eines Fehlersignals an einen mit dem Speicherbus
gekoppelten Prozessor, wenn der angeforderte Betriebs modus und Zugriffstyp
aufgrund der Attributbits als Speicherzugriffsverletzung identifiziert
werden;
- iii) Ausgeben eines Abbruchsignals auf der Grundlage der aufgrund
der Attributbits bestimmten Verletzung an eine mit dem Speicherbus
gekoppelte Bussteuereinheit, um die Speicherzugriffsanforderung
anzuhalten.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Für einen
Fachmann sind die Aufgaben, Merkmale und Vorteile der vorliegenden
Erfindung anhand der nachstehenden detaillierten Beschreibung offensichtlich,
in der:
-
1 eine
vereinfachte Blockdarstellung des Systems der vorliegenden Erfindung
ist, die einen Prozessor bzw. Controller sowie einen gemäß der Lehre
der vorliegenden Erfindung geschützten Speicher
zeigt.
-
2 ist
eine vereinfachte Blockdarstellung des Prozessors bzw. Controllers,
die die gegen Speicherverletzungen geschützte Speichereinheit zeigt.
-
3a, 3b und 3c sind
vereinfachte Ablaufdiagramme, die Ausführungsformen des Prozesses
der vorliegenden Erfindung zeigen.
-
4 zeigt
eine Blockdarstellung einer Ausführungsform
der geschützten
Speichereinheit der vorliegenden Erfindung.
-
5 ist
eine Blockdarstellung, die eine Ausführungsform eines Fehlererzeugungsblocks
veranschaulicht, der in der geschützten Speichereinheit der in 4 dargestellten
Ausführungsform
gefunden worden ist.
-
6 ist
eine Tabelle, die eine Ausführungsform
der in der geschützten
Speichereinheit gemäß 4 verwendeten
Register veranschaulicht.
-
7 ist
eine Veranschaulichung einer Ausführungsform der Speicherschutzadreßregister,
die in der geschützten
Speichereinheit gemäß 4 verwendet
werden.
-
8 zeigt
eine Tabelle, die das Speichermaskenregister und die potentiellen
Blockgrößen veranschaulicht,
die gemäß der Lehre
der vorliegenden Erfindung geschützt
werden können.
-
9a veranschaulicht
ein Beispiel der Programmierung der Adreßregister, um gegen nicht-autorisierte
Zugriffe zu schützen;
und 9b ist ein zweites Beispiel, das die Programmierung
der Register zeigt, um gegen nicht-autorisierte Adreßzugriffe zu
schützen.
-
10 veranschaulicht
die gemäß de Lehre der
vorliegenden Erfindung für
die Erfassung der Speicherverletzung verwendeten Register.
-
11 veranschaulicht
ein Beispiel der Programmierung der Erfassungsregister, um nicht-autorisierte
Zugriffe zu erfassen.
-
12 veranschaulicht
eine Ausführungsform
des geschützten
Speichereinheitssteuerregisters, das in der geschützten Speichereinheit
der in 4 gezeigten Ausführungsform verwendet wird.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
In
der nachfolgenden Beschreibung sind zu Erläuterungszwecken zahlreiche
Einzelheiten angegeben, damit die vorliegende Erfindung völlig verstanden
wird. Für
einen Fachmann ist es jedoch klar, daß die vorliegende Erfindung
auch ohne diese speziellen Details ausgeführt werden kann. An anderen Stellen
sind bekannte elektrische Strukturen und Schaltungen in Blockdarstellungsform
gezeigt, um die vorliegende Erfindung nicht unnötig zu verdecken.
-
Das
Speicherschutz- und -erfassungssystem der vorliegenden Erfindung
stellt ein Verfahren und Einrichtungen zum Erfassen von Speicherverletzungen
und zum Schutz vor Speicherverletzungen bereit, die unaufdringlich
sind und kein Overhead verursachen. Das System und das Verfahren
werden anhand eines eingebetteten Controllers beschrieben; es ist
jedoch offensichtlich, daß das
System und das Verfahren ohne weiteres auf verschiedene Arten von Mikroprozessoren
und Controllern anwendbar sind, die einen Speichererfassungs- und/oder
-schutzmechanismus benötigen.
-
In 1 ist
eine vereinfachte Blockdarstellung des Systems gezeigt. Der Prozessor
bzw. Controller (der hiernach Prozessor genannt wird) ist mit einem
Speicher 15 gekoppelt. Das System und das Verfahren der
vorliegenden Erfindung werden nicht-autorisierte Zugriffe auf die
Speicher verhindern sowie eventuelle während der Verarbeitung entstehende
Speicherverletzungen erfassen.
-
In 2 ist
eine ausführlichere
Blockdarstellung einer Ausführungsform
des Systems gezeigt. Bei der vorliegenden Ausführungsform besteht die Befehlseinheit 50 aus
einem Befehls-Cache
und einer Befehls-Warteschlange/Scheduler zum Einplanen der Befehle
in den Pipeline-Sequenzierer 55. Bei der vorliegenden Ausführungsform
gibt der Pipeline-Sequenzierer 55 parallel Steuer-, Speicher-
und Registerbefehle an die Mehr-Port-Register 60 zur Verteilung
an die entsprechenden Elemente 65, 70, 75, 100, 95, 90, 85 zur
Ausführung
aus. Bei der vorliegenden Ausführungsform
gehören
zu diesen Elementen ein Unterbrechungs-Controller 65, eine
Multiplizier-/Dividiereinheit 70, eine Ganzzahl-Ausführungseinheit 75,
eine Adreßerzeugungseinheit 100, ein
lokaler Register-Cache/interner Daten-RAM 95, ein Bus-Controller 90 und
eine Daten-Cache-Einheit 85. Es ist für einen Fachmann klar, daß diese
Struktur beispielhaft ist und daß andere Prozessorstrukturen verwendet
werden können.
Der Prozessor enthält außerdem eine
geschützte
Speichereinheit (GMU 80). Die geschützte Speichereinheit 80 ist
auch mit dem Speicherbus 60 so gekoppelt, daß die GMU 80 die
auf dem Bus 60 ausgegebenen Speicherzugriffsanforderungen überwachen
kann.
-
Die
GMU 80 überwacht
die Zugriffe, um zu identifizieren, ob eine Speichererfassungsverletzung geschieht
(Erfassung durch Erzeugung eines Fehlersignals, aber die Speicheroperation
kann vollendet werden) und um Speicherschutzverletzungen zu identifizieren
(Abbruch der Speicheroperation und Ausgabe eines Fehlersignals).
Im Falle einer Speicherschutzverletzung bewirkt die GMU 80 den
Abbruch der gegenwärtigen
Speicheranforderung, um zu verhindern, daß die Speicherverletzung geschieht.
Darüber
hinaus wird ein Fehlersignal an die Befehlseinheit 50 ausgegeben,
damit die Befehlseinheit 50 erfährt, daß eine Speicherschutzverletzung stattgefunden
hat. Bei der vorliegenden Ausführungsform
wird zusätzlich
ein Mechanismus bereitgestellt, um bestimmte Speicherverletzungen
einfach zu erfassen. Falls eine Speicherverletzung erfaßt wird,
wird die Vollendung der Speicheroperation erlaubt, aber ein Fehlersignal
wird von der GMU 80 erzeugt und an die Befehlseinheit 50 ausgegeben,
damit die Befehlseinheit 50 erfährt, daß eine Speicherverletzung erfaßt worden
ist.
-
Der
Prozeß kann
am besten unter Bezugnahme auf die vereinfachten Ablaufdiagramme
der 3a, 3b und 3c erläutert werden. 3a veranschaulicht
den Prozeß zum
Erfassen von Speicherverletzungen. Bei Schritt 150 wird
der Bus auf die Übertragung
von Signalen überwacht,
die die Initiierung einer Speicheroperation, wie z. B. einer Speicheranforderung,
anzeigen. Bei Schritt 152 wird nach dem Erfassen einer
Speicheroperation ein Adressenvergleich durchgeführt, um zu bestimmen, ob die Adresse
der Speicheroperation sich in einem als Speicherverletzung identifizierten
Bereich befindet. Falls die Adresse sich in diesem Adressenbereich befindet,
Schritt 154, werden die Speicheroperationsattribute mit
den eine Verletzung anzeigenden Attributen verglichen, z. B. dem
Operationstyp oder dem Zugriffsmodus. Falls die Attribute übereinstimmen, Schritt 158,
gibt die GMU bei Schritt 160 ein Fehlersignal an die CPU
bzw. bei der vorliegenden Erfindung an die Befehlseinheit der CPU
aus, um die Erfassung einer Speicherverletzung zu melden. In Erwiderung
des Fehlersignals verzweigt der Prozessorkern zu einem Fehlerbearbeitungs-Routing,
um die Speicherverletzung zu adressieren. Das Fehlerbearbeitungs-Routing
kann einfach einen Bericht über
die Verletzung erstellen oder einen bestimmten Prozeß durchführen, um
den Effekt der Speicherverletzung zu minimieren.
-
Der
Speicherschutzprozeß unterscheidet sich
von dem Speichererfassungsprozeß,
da der Speicherschutzprozeß verhindert,
daß bestimmte Speicheroperationen
durchgeführt
werden. Gemäß 3b überwacht
die GMU bei Schritt 170 den Bus auf das Eintreten von Speicheroperationen.
Ein Adressenvergleich wird danach durchgeführt, um zu bestimmen, ob die
Adresse der Speicheroperation sich in dem Bereich geschützter Speicheradressen befindet,
Schritt 172. Falls die Adresse sich in diesem Be reich befindet,
Schritt 174, werden die Attribute der Speicheroperation
bei Schritt 176 mit den eine Speicherverletzung anzeigenden
Attributen verglichen. Falls die Attribute übereinstimmen, hat es eine Schutzverletzung
gegeben, Schritt 178, und die GMU gibt bei Schritt 180 ein
Abbruchsignal aus, um die Ausführung
der Speicheroperation anzuhalten. Bei der bevorzugten Ausführungsform
wird das Abbruchsignal über
die CTRL-Signalleitungen
an die Bussteuereinheit ausgegeben. Nach dem Empfang des Abbruchsignals
bricht die Bussteuereinheit die Speicheroperation ab. Bei Schritt 182 stellt
die GMU ein Fehlersignal aus, um die Speicherschutzverletzung zu
melden, und in Erwiderung des Fehlersignals verzweigt der Prozessor
bei Schritt 184 zu dem entsprechenden Fehlerbearbeitungs-Routing.
-
Das
System führt
vorzugsweise sowohl die Speichererfassung von Verletzungen als auch
den Speicherschutz vor Verletzungen durch. Der Prozeß kann so
initiiert werden, daß der
Speicher bei bestimmten identifizierten Adressen mit bestimmten
Attributen gegen Speicherverletzungen geschützt wird, während Speicherverletzungen
bei anderen Adressen einfach erfaßt und dem Prozessor gemeldet
werden. Dieser Prozeß wird
unter Bezugnahme auf 3c beschrieben. Gemäß 3c überwacht
die GMU bei Schritt 200 den Bus auf Speicheroperationen
und insbesondere auf Speicheranforderungen, die von der Befehlseinheit
ausgegeben werden. Falls eine Speicheranforderung bei Schritt 210 ausgegeben
wird, wird die Adresse der Anforderung mit den Adressen in den sich
in der geschützten
Speichereinheit befindlichen Schutz- und Erfassungsregistern verglichen,
die die Speicheradressen anzeigen, auf die der Zugriff beschränkt ist.
Falls die Adresse nicht eine der Adressen in den Registern ist,
Schritt 220, kann die Speicheranforderung verarbeitet werden und
die geschützte
Speichereinheit überwacht
weiterhin den Bus auf nachfolgende Speicheroperationen. Falls die
Adresse der Speicheranforderung eine der Adressen ist, die in den
Schutz- oder Erfassungsregistern spezifiziert sind, Schritt 230,
werden die Attribute der Speicheroperation mit den in den Schutz- oder
Erfassungsregistern eingestellten Attributen verglichen, um zu bestimmen,
ob der Zugriff autorisiert ist. Sol che Attribute sind beispielsweise,
ob die Operation im Benutzermodus oder im Überwachermodus stattfindet
oder ob eine Lese-, Schreib- oder Ausführungsoperation durchgeführt wird.
-
Falls
es eine Schutzverletzung gibt, Schritt 240, gibt die GMU
ein Abbruchsignal an die Bussteuereinheit aus, um zu verhindern,
daß die
Speicheroperation abgeschlossen wird. Dies schützt den Speicher vor dem tatsächlich nicht-autorisierten
Zugriff, Schritt 250. Falls es eine Erfassungsverletzung
gibt, Schritt 260, darf die Speicheroperation abgeschlossen
werden, und die GMU gibt ein Fehlersignal 270 an den Befehls-Scheduler
des Prozessors aus, um dem Prozessor die Speicherschutzverletzung
zu melden. Entsprechend gibt die GMU ein Fehlersignal an die Befehlseinheit
aus, wenn es eine Schutzverletzung gibt, um auch der Befehlseinheit
die Verletzung zu melden. Die Befehlseinheit verzweigt bei Schritt 280 zu
Fehlerbearbeitungs-Routinen,
um den empfangenen Fehler zu bearbeiten. Auf diese Weise wird ein
einfacher unaufdringlicher, aber effektiver Mechanismus zur Erfassung
von und zum Schutz gegen Speicherverletzungen bereitgestellt.
-
In 4 ist
eine vereinfachte Blockdarstellung einer Ausführungsform der geschützten Speichereinheit
gezeigt. Die geschützte
Speichereinheit enthält
mehrere programmierbare Register 300, die hiernach Speicher-abgebildete
Register (MMR) genannt werden. Die Register 300 werden
programmiert, um die Adressen und weitere Attribute einer Speicheroperation
zu identifizieren, die zu einer Speicherverletzung führt.
-
In 6 ist
eine Ausführungsform
der Speicher-abgebildeten
Register gezeigt. Die Register enthalten vorzugsweise ein Steuerregister,
zwei Speicherschutzregisterpaare und sechs Speichererfassungsregisterpaare.
Es ist offensichtlich, daß die hierin
gezeigte Konfiguration beispielhaft ist und daß andere Konfigurationen verwendet
werden können. Die
Register können
beispielsweise alle Speicherschutzregister sein, wodurch das System
gegen das Auftreten von Speicherverletzungen schützt. In ähnlicher Weise können die
Register ausschließlich
Speichererfassungsregister sein, wobei der Mechanismus Speicherverletzungen
nur erfaßt.
Darüber
hinaus können
bei ent sprechender Konfiguration der Register verschiedene Mengen
von Speicherschutzregistern und Speichererfassungsregistern verwendet
werden.
-
Diese
Register werden von der Steuerschaltung 310 gesteuert und
programmiert, die als Eingabe Adreß- sowie Lese-/Schreibsteuerinformationen empfängt, um
Lese- bzw. Schreiboperationen an den Registern durchzuführen. Bei
der vorliegenden Ausführungsform
empfängt
die Steuerlogikschaltung 310 als Eingangssignal MMR-Lese-,
MMR-Schreib-, MMR-Adreß-,
SFR-Lese-, SFR-Schreib- und SFR-Adreßsignale, damit im Speicher
bzw. in den speziellen Funktionsregistern (SFR) gelesen bzw. an diese(n)
geschrieben werden kann. Darüber
hinaus wird ein Überwacher-/Benutzermodussignal 340 an die
Schaltung 310 sowie an den Fehlererzeugungsblock 350 eingegeben,
um festzustellen, ob der Prozessor sich im Überwacher- oder Benutzermodus
befindet. Die Schaltung 310 empfängt die Eingangssignale und
erzeugt mehrere Freigabesignale an die MMR-Register, um den MMR-
oder SFR-Zugriff durchzuführen,
um die Daten zu oder von den Speicherregistern zu lenken.
-
Der
Speicherregisterblock 330 empfängt als Eingabe den SFR-Datenbus,
den MMR-Datenbus und die Freigabesignale von der Steuerlogikschaltung 310.
Die Freigabesignale steuern die Annahme der an die Register zu schreibenden
Daten bzw. die Ausgabe von Daten, die in den Registern gelesen werden,
an den oder von dem SFR- oder MMR-Datenbus. Vorzugsweise enthält der Speicherregisterblock 330 mehrere
Register, so wie es in 6 definiert ist, und stellt
ein Ausgangssignal an den Fehlermoduserzeugungsblock 350 bereit.
-
Der
Fehlermoduserzeugungsblock 350 empfängt als Eingabe die Speicherregisterwerte
aus dem Speicherregisterblock 330 sowie Informationen über den
gegenwärtigen
zu vergleichenden Buszugriff. Diese Eingabe enthält vorzugsweise das gegenwärtige Zugriffslese-Eingangssignal,
das Schreib-Eingangssignal, das Ausführungseingangssignal, den internen
Adreßbus
und das Benutzer-/Überwacher-Eingangssignal.
Der Fehlererzeugungsblock 350 führt die Vergleiche durch und
gibt das GMU-Abbruch- und das GMU-Fehler-Strobe-Ausgangssignal aus,
wenn eine Verletzung geschieht. Die weitere Aufgliederung dieses
Blocks wird in 5 veranschaulicht.
-
In 5 wird
eine Ausführungsform
des Fehlererzeugungsblocks veranschaulicht. Gemäß 5 besteht
der Block aus mehreren Fehlermodusschaltungen 550, 560, 570 und 580 sowie
aus den Adreßvergleichsschaltungen 555, 565, 575 und 585. Jede
Fehlermodusschaltung empfängt
als Eingabe das Lese-Eingangssignal,
das Schreibe-Eingangssignal, das Ausführungseingangssignal, das Benutzer-/Überwacher-Eingangssignal
sowie die gegenwärtige
interne Adresse, auf die zugegriffen wird. Die Fehlermodusschaltungen
empfangen außerdem
die entsprechenden Speicherschutz-Adreßregisterbits, die Speicheroperationsattributinformationen
enthalten, bei der vorliegenden Ausführungsform Bits 0–6. Die
erste Fehlermodusschaltung 550 empfängt ferner die entsprechenden
Attributinformationen MPAR0 (Bits 0–6) aus den Speicherregistern,
um zu bestimmen, ob die Attribute des gegenwärtigen Zugriffs mit den im
MPAR0-MMR-Register
identifizierten Attributen übereinstimmen.
Falls diese übereinstimmen,
erzeugt die Fehlermodusschaltung ein Freigabe-Ausgangssignal, das
an die entsprechenden Adreßvergleichsschaltungen 555, 565, 575, 585 geht.
-
Der
Adreßvergleichsfehlererzeugungsblock empfängt als
Eingabe ferner die Adresse der durchzuführenden Speicheroperation von
dem internen Adreßbus
sowie den in den Speicherregistern identifizierten Adressenbereich.
Die erste Adreßvergleichsschaltung 555 empfängt beispielsweise
als Eingabe MPAR0 und MPMR0 aus den Speicherregistern, die interne
Adresse und das Freigabesignal aus dem Fehlermodusblock 550.
Der Adreßvergleichsfehlererzeugungsblock
vergleicht die Adresse, und falls die Adresse eine der von den Registern spezifizierten
ist und falls das Freigabesignal ausgegeben worden ist, werden ein
Fehlerausgangssignal sowie ein GMU-Abbruch-Ausgangssignal erzeugt. Die
erste Fehlermodusschaltung 550 und die Adreßvergleichsschaltung 555 dienen
dazu, eine Speicherschutzoperation durchzuführen. Ähnliche Prozesse geschehen
in den Schaltungen, die dazu dienen, eine Speicherverletzungserfassungsoperation durchzuführen. Die
Fehlermodusschaltung 570 und die Adreßver gleichsschaltung 575 dienen
beispielsweise dazu, eine Speicherverletzungserfassungsoperation
durchzuführen.
Falls eine Speicherverletzung erfaßt wird, wird ein Fehlerausgangssignal
erzeugt. Durch das Bereitstellen mehrerer Fehlermoduserfassungsschaltungen 455, 460, 465 und 470 können die
Speichererfassungs- und -schutzvergleiche parallel durchgeführt werden.
Es ist ohne weiteres klar, daß ein
serielles Verfahren und ein serieller Mechanismus bei entsprechender
Anpassung der gezeigten Schaltung auch verwendet werden können.
-
In 7 ist
eine Ausführungsform
der bei dem vorliegenden Ausführungsbeispiel
verwendeten Speicherschutzadreßregister
gezeigt. Bei dem vorliegenden Ausführungsbeispiel enthalten die
Speicherschutzadreßregister
ein Registerpaar, nämlich
ein Speicherschutzadreßregister 600 und
ein Speicherschutzmaskenregister 610. Das Speicherschutzadreßregister 600 enthält mehrere
Bits, die zugewiesen sind, um zu identifizieren, ob bestimmte Modusspeicheroperationen,
wie z. B. die Benutzermoduslese-, die Benutzermodusschreib-, die
Benutzermodusausführungs-,
die Überwachermoduslese-,
die Überwachermodusschreib- und die Überwachermodusausführungsoperation,
zu erlauben sind. Jedes Bit identifiziert, ob ein bestimmter Modus
während der
Speicheroperation einen Fehler erzeugt.
-
Das
Register 600 enthält
außerdem
die zu schützende
Basisadresse; bei dem vorliegenden Ausführungsbeispiel besteht die
Basisadresse aus den oberen 20 Bits einer 32-Bit-Adresse. Es hat
sich gezeigt, daß dies
genügend
Auflösung
für den Schutzmechanismus
schafft. Es ist jedoch offensichtlich, daß die Basisadresse auch durch
32 Bits oder mehr identifiziert werden kann, je nachdem welcher Speicher
verwendet wird.
-
Das
Speicherschutzmaskenregister 610 stellt die Maskenbits
bereit, die verwendet werden, um die Bits zu bestimmen, die mit
der Adresse der Speicheroperation verglichen werden sollen, um zu bestimmen,
ob es eine Speicherschutzverletzung gegeben hat. Das Maskenregister 610 ermöglicht eine wechselnde
Auflösung
des Vergleichs, um die Flexibilität des Mechanismus zu erhöhen. 8 veranschaulicht
verschiedene Blockgrößen, die
durch die Einstellung des entsprechenden Maskenwertes in dem Speicherschutzmaskenregister
erreicht werden können.
-
9a veranschaulicht
ein Beispiel einer Adresse, die gemäß der vorliegenden Erfindung durch
die Einstellung der entsprechenden Bits in dem Speicherschutzadreßregister
und dem Speicherschutzmaskenregister geschützt ist. 9b veranschaulicht
ein alternatives Beispiel, in dem das Speicherschutzmaskenregister
so geändert
ist, daß mehrere
Adressen in 256 K-Byte-Blocks geschützt sind.
-
10 veranschaulicht
ein Ausführungsbeispiel
der Speicherverletzungserfassungsregister. Gemäß 10 besteht
jeder Registersatz aus einem Obergrenzenregister 650 und
einem Untergrenzenregister 660. Das Obergrenzenregister 650 identifiziert
die oberen Grenzen eines zu erfassenden Speicheradressenbereichs;
bei dem vorliegenden Ausführungsbeispiel
werden die oberen 20 Bits der Obergrenzen identifiziert. Das Untergrenzenregister 660 identifiziert
die Untergrenzenadresse des zu erfassenden Adressenbereichs. Es
ist ohne weiteres klar, daß alle
32 Bits oder alternativ andere Auflösungen verwendet werden können. Die
unteren 8 Bits des Registers 650 identifizieren die zu
erfassenden Modi. Diese Modi sind bei dem vorliegenden Ausführungsbeispiel
beispielsweise die Benutzermoduslese-, die Benutzermodusschreib-,
die Benutzermodusausführungs-,
die Überwachermoduslese-,
die Überwachermodusschreib- und die Überwachermodusausführungsoperation.
-
Es
sei angemerkt, daß bei
dem vorliegenden Ausführungsbeispiel
die Konfiguration der Register, die für den Speicherschutz verwendet
werden, sich leicht von der Konfiguration der Register unterscheidet,
die für
die Speichererfassung verwendet werden. Die Konfigurationen unterscheiden
sich leicht wegen der vom System auferlegten Zeitbeschränkungen.
Maskenbits werden insbesondere zusammen mit der gespeicherten Adresse
verwendet, um anwendbare Adressen für den Speicherschutz zu identifizieren,
da die Maskieroperation wenige Taktzyklen für die Vollendung benötigt. Dies
ist wichtig, weil das Abbruchsignal so schnell wie möglich ausgegeben
werden muß,
falls eine Schutzverletzung geschieht, um sicherzustellen, daß die Spei cheroperation
angehalten wird, bevor der Speicher von der Ausführung der Speicheroperation
beeinflußt
wird. Bei einer Speicherverletzungserfassung wird jedoch kein Abbruchsignal
ausgegeben, und die Speicheroperation kann vollständig abgeschlossen
werden; ein Fehler wird einfach gemeldet. Aus diesem Grund kann
ein längeres
Adreßvergleichsverfahren
verwendet werden. Durch das Spezifizieren des Anfangs und des Endes
der Speicheradresse kann bei zusätzlichen
Taktzyklen zur Durchführung
des Adreßvergleichs
eine feinere Auflösung
erreicht werden. Es ist für
einen Fachmann klar, daß die
Konfiguration der für
den Speicherschutz verwendeten Register für die Speichererfassung verwendet
werden könnte
und daß die
Konfigurationen der für
die Speichererfassung verwendeten Register ebenso für den Speicherschutz
verwendet werden könnte.
Darüber
hinaus können
weitere Konfigurationen verwendet werden.
-
11 veranschaulicht
ein Beispiel der Speichererfassungsregister und der zugehörigen Adresse,
die gemäß der Lehre
der vorliegenden Erfindung erfaßt
worden ist. 11 zeigt einen geschützten Bereich
von Adressen und geschützte Operationsarten,
die bei der gezeigten Einstellung auftreten.
-
Die
Speicherregister enthalten außerdem
ein Steuerregister, das einige allgemeine Einstellungen bereitstellt,
die sowohl auf den Schutzmechanismus als auch auf den Erfassungsmechanismus
des Systems anwendbar sind. Bei dem in 12 gezeigten vorliegenden
Ausführungsbeispiel
können
bestimmte Bits gesetzt oder rückgesetzt
werden, um die entsprechenden Speicherschutz- und Speichererfassungsmechanismen
freizugeben und zu sperren.
-
Damit
ist ein effektiver Mechanismus zur Erfassung von und zum Schutz
gegen Speicherverletzungen erläutert
worden. Die Erfindung ist anhand der bevorzugten Ausführungsform
beschrieben worden. Es ist jedoch klar, daß für einen Fachmann auf der Basis
der obigen Beschreibung zahlreiche Alternativen, Änderungen,
Variationen und Verwendungen offensichtlich sind.