DE3333894C2 - - Google Patents

Info

Publication number
DE3333894C2
DE3333894C2 DE3333894A DE3333894A DE3333894C2 DE 3333894 C2 DE3333894 C2 DE 3333894C2 DE 3333894 A DE3333894 A DE 3333894A DE 3333894 A DE3333894 A DE 3333894A DE 3333894 C2 DE3333894 C2 DE 3333894C2
Authority
DE
Germany
Prior art keywords
memory
access
mmu
address
main memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE3333894A
Other languages
English (en)
Other versions
DE3333894A1 (de
Inventor
Paul A. Los Altos Calif. Us Baker
Gary L. Cupertino Calif. Us Marten
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of DE3333894A1 publication Critical patent/DE3333894A1/de
Application granted granted Critical
Publication of DE3333894C2 publication Critical patent/DE3333894C2/de
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

Die Erfindung bezieht sich auf ein Computersystem nach dem Oberbegriff des Anspruchs 1.
In den meisten Computern steht eine Zentraleinheit (CPU) sowohl mit einem Adreßbus als auch mit einem Datenbus in direkter Verbindung. Diese Busse sind mit einem Hauptspeicher oder Haupt­ speichersystemen sowie mit zahlreichen anderen Komponenten, wie Ein/Ausgabeeinheiten, Spezialprozessoren, DMA-Einheiten usw. gekoppelt. Der Computer-Hauptspeicher ist meistens die teuerste Komponente des Computers, insbesondere wenn man dessen Preis mit neuerdings erhältlichen Mikroprozessoren, wie dem 8080, 8086, 6800 und 68 000 vergleicht. Es ist daher wichtig, den Hauptspeicher des Computers mit hohem Wirkungsgrad auszunutzen.
Speichermanagementeinheiten (MMU's) dienen nach dem Stand der Technik zum wirksamen Ausnutzen des Hauptspeichers des Computers. Derartige Einheiten übernehmen Organisations- und Ver­ waltungsfunktionen, wie Neueinteilung der Speicherbereiche usw. Häufig weist eine MMU einen Speicher auf, der eine Ver­ schiebungsbasis speichert. Die Bits höherer Ordnung der logischen Adresse aus dem Prozessor (CPU) dienen zum Adressieren des MMU-Speichers. Aus der Sicht der CPU wird beispielsweise durch diese Bits ein Segment des Hauptspeichers ausgewählt. Die ausgewählte CPU-Segmentnummer wird durch eine neue Nummer aus dem MMU-Speicher ersetzt, wobei im Ergebnis eine Verschiebung zwischen der logischen Adresse aus der CPU und der zum Zugriff auf den Hauptspeicher verwendeten physikalischen Adresse auf­ tritt.
Eine andere, von bekannten MMU's erfüllte Funktion besteht darin, die Adressen aus der CPU darauf zu überprüfen, ob sie in vorgegebene Bereiche fallen. Eine im MMU-Speicher gespeicherte Grenzzahl wird mit Bits niedriger Ordnung oder Stellen der logischen Adresse (z. B. dem Seitenoffset) verglichen, um sicherzugehen, daß das Seitenoffset in einen vorgegebenen Adressenbereich der ausgewählten Segmentnummer fällt. Dadurch wird beispiels­ weise verhindert, daß "Daten" zufällig aus Speicherplätzen gelesen werden, in die sie nicht eingesetzt worden sind. In der DE-PS 26 25 113 ist beispielsweise eine Speicherschutzein­ richtung mit Adressenvergleich beschrieben, bei der eine Zugriffs­ adresse dahingehend überprüft wird, ob sie einen vorgegebenen Grenzwert überschreitet. Dies geschieht durch Subtraktion der Zugriffsadresse von dem Grenzwert und Prüfen eines bei Überschreiten entstehenden Übertragssignals.
Die DE-PS 28 37 241 beschreibt eine Einrichtung zum Sichern von Daten gegen unberechtigten Zugriff. Diese Einrichtung weist einen individuellen Hilfsspeicher in Form von Zugriffsrechtstafeln auf. In dem Hilfsspeicher sind alle im Hauptspeicher abgelegten sogenannten Schutzobjekte (d. h. gespeicherte Datenblöcke) mit ihren für den jeweiligen Prozeß (d. h. z. B. ein An­ wendungsprogramm) zugeordneten Schutzklassen (d. h. Zugriffsbe­ rechtigungen) abgelegt. Eine Adreßübersetzungseinrichtung speichert in Adreßübersetzungsspeichern die realen oder pysikalischen Adressen, die kurz zuvor aus den virtuellen oder logischen Adressen übersetzt wurden. In den Adreßübersetzungsspeichern ist ein Feld für Schutzinformation vorgesehen. Im Laufe der Adreßübersetzung wird die Schutzinformation aus der vom ab­ laufenden Prozeß (oder Programm) adressierten Eintragszeile des ausgewählten Hilfsspeichers gelesen und in das Feld des Adreß­ übersetzungsspeichers nur die Schreib/Lese-Zugriffsrechte der kurz vorher übersetzten virtuellen Adressen abgelegt. Daher erfordert ein Wechsel des Prozesses (oder des Programms) mehrere Speicherzyklen, um die Zugriffsrechte neuer virtueller Adressen in den Adreßübersetzungsspeicher zu laden.
In der US-PS 40 37 215 ist eine Adreßübersetzungseinrichtung zum Übersetzen einer logischen Adresse in eine physikalische Adresse beschrieben. Einige höchstwertige Bits der logischen Adresse bilden einen Auswahlschlüssel zum Auswählen eines von mehreren Speicherbereichen eines Speichers der Adreßübersetzungs­ einrichtung. In den Speicherbereichen sind jeweils mehrere Segmentadressen abgelegt, auf die über einen zweiten Teil der logischen Adresse zugegriffen wird. Die Segmentadressen und ein dritter Teil (der am niedrigsten bewertete Teil) der logischen Adresse werden dann zur physikalischen Adresse zusammengesetzt. Folglich wird durch die Auswahlschlüssel-Bits ein Segmentadressen- Satz und somit ein durch die adressierbaren Segmente gebildeter physikalischer Adreßraum im Hauptspeicher ausgewählt.
Der Erfindung liegt die Aufgabe zugrunde, ein Computersystem mit einer verbesserten Speichermanagementeinheit (MMU) zu schaffen, welches das Abarbeiten mehrerer Prozesse ohne Umprogrammierung des MMU-Speichers bei gleichzeitig verbessertem Zu­ griffsschutz ermöglicht.
Diese Aufgabe wird erfindungsgemäß durch ein Computersystem nach Anspruch 1 gelöst.
Kern der Erfindung ist eine verbesserte Speichermanagementeinheit (MMU) zur Verwendung mit einem Computer, der eine CPU und einen Hauptspeicher aufweist. Die MMU enthält eine Verschiebungs­ basis und liefert bei Empfang erster Adressensignale aus dem Prozessor zweite Adressensignale für den Zugriff zum Speicher.
Die MMU weist auch Speichermittel zur Aufnahme und Speicherung von Signalen auf, die für die an Plätzen im Hauptspeicher gespeicherten Informationsarten repräsentativ sind. Zugriffsmit­ tel sind vorgesehen, welche einen Zugriff zu diesen gespeicherten Signalen ermöglichen, wenn auf die entsprechenden Plätze im Hauptspeicher zugegriffen wird. Die gespeicherten Signale aus den Speichermitteln werden zum Hauptspeicher übertragen, um beispielsweise eine Zugriffsgrenze zu gewissen Datenarten im Hauptspeicher, z. B. Betriebssystemen, zu setzen. Diese Signale können auch dazu dienen, eine Nur-Lese-Operation bei Programmen und ein Lesen und Schreiben von Daten zu ermöglichen.
Bei dem bevorzugten Ausführungsbeispiel der Erfindung sind die Speichermittel integraler Bestandteil des MMU-Speichers. Der MMU-Speicher weist das Vierfache der Kapazität auf, die dazu benötigt wird, die Verschiebungsbasisnummern und Grenzzahlen für den gesamten Hauptspeicher zur Verfügung zu stellen. Wie nachfolgend noch genauer beschrieben wird, ermöglicht diese zusätzliche Kapazität eine Art von "Bankumschaltung" und die Durchführung verschiedener Prozesse über den Computer ohne Um­ programmierung des MMU-Speichers.
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteran­ sprüchen gekennzeichnet.
Im folgenden wird die Erfindung anhand eines in der Zeichnung dargestellten Ausführungsbeispiels näher erläutert. In der Zeichnung zeigen:
Fig. 1 ein generelles Blockdiagramm mit einer Zentral­ einheit bzw. einem Prozessor (CPU), einer Speichermanagementeinheit (MMU), einem Haupt­ speicher und deren Verbindungen in einem Computer;
Fig. 2 ein Organisationsschaubild der im Speicher der MMU gespeicherten Daten;
Fig. 3 ein Blockschaltbild der MMU; und
Fig. 4 ein Schaubild zur Beschreibung der verschiedenen Kontexte, die beim Betrieb der MMU verwendet werden und der resultierenden Organisation der im Computer-Hauptspeicher gespeicherten Information.
Beschrieben wird eine Speichermanagementeinheit (MMU) zur Verwendung in einem Digitalrechner, der einen Prozessor (CPU) und einen Hauptspeicher aufweist. In der folgenden Beschreibung werden zahlreiche Einzelheiten (z. B. spezielle Speicher­ größen, Teilnummern usw.) zur Erleichterung des Verständnisses der Erfindung angegeben. Für den Fachmann ist klar, daß diese Einzelheiten zur Ausführung der vorliegenden Erfindung nicht erforderlich sind. In anderen Fällen werden bekannte Schaltungen usw. nicht im einzelnen beschrieben, um die Erläuterungen der Erfindung nicht mit überflüssigen Einzelheiten zu belasten.
In Fig. 1 ist die Kopplung zwischen einer MMU, einem Prozessor (CPU) und einem Hauptspeicher veranschaulicht. Dieses Kopp­ lungsschema ist bei der Erfindung ähnlich demjenigen des Standes der Technik. Der Computer gemäß Fig. 1 weist einen bidirektionalen Datenbus 16 auf, der mit der CPU 10, dem Hauptspeicher 14 und der MMU 12 in Verbindung steht. Der Adressenbus 18 nimmt Adressensignale aus der CPU 10 auf und überträgt einen Teil dieser Adressen zur MMU 12 und einen Teil zum Hauptspeicher 14. Andere Steuersignale werden entsprechend der Darstellung durch die Leitungen 35 und 37 zwischen der CPU 10 und der MMU 12 übertragen. Weitere Verbindungen bestehen zwischen der MMU 12 und dem Hauptspeicher 14, wie durch die Leitungen 57 veranschaulicht ist.
Die MMU 12 wird aus der CPU 10 über den Datenbus 16 programmiert. Adressen werden über den Bus 18 von der CPU 10 zur MMU übertragen und ermöglichen das Laden der MMU 12.
Bei dem beschriebenen Ausführungsbeispiel enthält die CPU 10 einen 68000-Prozessor. Für diesen Prozessor liefert die CPU 10 24-Bit-Adressen. (Tatsächlich ist das Bit niedrigster Ordnung physikalisch nicht als solches vorhanden, sondern in andere Signale kodiert; zum Zwecke der Erläuterung sei jedoch angenommen, daß auch dieses Bit ein gewöhnliches Adressen­ bit ist). Es sei außerdem hier angenommen, daß die sieben am höchsten bewerteten Bits jeder logischen Adresse aus der CPU ein Segment im Speicher auswählen, daß die nächsten acht niedriger bewerteten Bits ein Seitenoffset enthalten und daß die am niedrigsten bewerteten neun Bits ein Offset beinhalten.
Bei dem beschriebenen Ausführungsbeispiel werden das Segment und das Seitenoffset jeder Adresse zur MMU 12 übertragen. Die MMU liefert durch Austausch der Segmentnummer aus der CPU 10 mit einer in der MMU 12 gespeicherten Segmentnummer eine Verschiebungsbasis. Insbesondere adressiert die Segmentnummer aus der CPU 10 einen Speicher innerhalb der MMU 12, und dieser Speicher liefert eine Segmentenbasis zum Adressieren des Hauptspeichers 14. Der Seitenoffsetteil der Adresse aus der CPU 10 wird überprüft, um festzustellen, ob das Seitenoffset in einen vorgegebenen Bereich des Segments fällt. Dies würde beispielsweise verhindern, daß lauter Nullen aus einem ungebrauchten Raum im Hauptspeicher gelesen und als Daten interpretiert werden. Die Segmentenbasis aus der MMU wird zusammen mit dem Seitenoffset addiert und danach auf dem Bus 18a und 18b der Fig. 1 zum Hauptspeicher 14 übertragen. Die neun am niedrigsten bewerteten Bits werden direkt über den Bus 18c aus der CPU zum Hauptspeicher geleitet.
Im folgenden wird auf Fig. 3 Bezug genommen. Bei dem beschriebenen Ausführungsbeispiel enthält die MMU einen MMU-Speicher 20. Dieser Speicher ist ein Speicher mit direktem Zugriff, der aus im Handel erhältlichen statischen MOS-RAM's hergestellt ist. In einer realisierten Ausführung werden drei 2148-RAM's als Speicher 20 verwendet, wodurch sich eine Gesamtkapazität von 12 k Bits ergibt. Die Organisation des MMU-Speichers wird in Verbindung mit Fig. 2 genauer erläutert.
Die Adresse aus der CPU ist im obersten Teil der Fig. 3 als 24-Bit-Adresse (logische Adresse) gezeigt. Die sieben am höchsten bewerteten Bits dieser Adresse werden über den Bus 18a zum MMU-Speicher übertragen und zum Adressieren des MMU- Speichers verwendet. Die nächstniedriger bewerteten Bits (Bus 18b) werden an eine Addierstufe 27 angelegt, und die am niedrigsten bewerteten neun Bits (Offset) werden über den Bus 18c an ein Register 28 angelegt. Der Ausgang des MMU-Speichers besteht aus zwei 12-Bit-Worten (Bus 22 und 23). Diese Worte werden über einen Multiplexer 25 zu einem 12-Bit-Bus 30 übertragen. Eines der 12-Bit-Worte aus dem Speicher 20 bildet die Segmentbasis aus der gespeicherten Verschiebungsbasis. Die zweiten 12-Bits bestehen auch acht Bits zur Grenzüberprüfung des Seitenoffset und vier zusätzlichen Bits, denen die Erfindung besondere Funktionen zuordnet.
(Bei dem beschriebenen Ausführungsbeispiel gibt es keinen physikalisch getrennten Multiplexer 25, sondern der Ausgang des Speichers 20 wird im Zeitmultiplex verarbeitet. Zum Zwecke der Erläuterung ist es jedoch leichter, einen besonderen Multiplexer 25 darzustellen.)
Der Multiplexer 25 dient auch zum Laden von Information aus dem Bus 16 in den Speicher 20. Das Signal auf der Leitung 47 kommt aus einer Zugriffsprüflogik 40 und schafft ebenso Zugriff zum Speicher 20 wie die Signale auf einer Leitung 35. Das Signal auf einer Leitung 37 steuert die Multiplexverarbeitung der Daten zwischen entweder dem Bus 22 oder dem Bus 23.
Der 12-Bit-Bus 30 vom Multiplexer 25 ist mit der Addierstufe 27 gekoppelt. Diese Addierstufe erhält auch die acht Bits über den Bus 18b. Wie nachfolgend beschrieben werden wird, bestimmt der Addierer 27, wenn das Seitenoffset in einen vor­ gegebenen Bereich des ausgewählten bzw. angesteuerten Segments fällt. Die Addierstufe 27 kombinert auch die Verschiebungsbasis (Seg­ mentenbasis) aus dem MMU-Speicher mit dem Seitenoffset, um die zwölf am höchsten bewerteten Bits der physikalischen Ad­ resse zu bilden. Diese zwölf Bits werden zusammen mit den neun Bits vom Bus 18c an das Register 28 angelegt, um eine 21-Bit-Adresse zu schaffen, welche zum Hauptspeicher 14 übertragen wird. (Das Register 28 existiert bei dem beschriebenen Ausführungsbeispiel an sich nicht, wird aber zu Erläuterungs­ zwecken gezeigt.)
Die vier Zugriffsprüfbits werden vom Multiplexer 25 über die Leitung 45 zur Zugriffslogik 40 übertragen. Hier werden die Signale dekodiert, um ein Hauptspeicher-Steuersignal und andere Steuersignale wie folgt zu bilden: ein Bit steuert die Art des Hauptspeicherzugriffs (1 = Nur-Lese- Zugriff, 0 = Lese/Schreib-Zugriff). Das zweite Bit steuert den Ein-/Ausgabezugriff (1 = Ein/Ausgabe-Zugriff, 0 = kein Ein-/ Ausgabe-Zugriff). Das dritte Bit steuert den Hauptspeicherzugriff (1 = Hauptspeicherzugriff, 0 = kein Hauptspeicherzugriff). Das vierte Bit steuert die Stapelung (stacking) (1 = Stapelsegment - keine Überlaufkontrolle, 0 = Normal­ segment - Kontrolle auf Überlauf). Die Zugriffsprüflogik 40 ist in Fig. 3 mit der Hauptspeichersteuerung über eine Leitung 47 gekoppelt und steuert den Speicherzugriff und die Art der zulässigen Zugriffe (d. h. Lese- oder Lese/Schreib). Die Logik 40 ist mit der Addierstufe 27 über Überlauf/Übertrags­ leitungen und mit dem Speicher 20 über die Leitung 47 zur Freigabe des Zugriffs auf den Speicher 20 gekoppelt.
Das besondere Zugriffssteuerbitmuster, das bei dem geschriebenen Ausführungsbeispiel Verwendung findet, ist nachfolgend gezeigt.
Zugriffssteuerbits
Es sei zunächst angenommen, daß der Speicher 20 aus der CPU programmiert worden ist. Für die erste Stufe der Erläuterung des MMU-Betriebs soll die Funktion der zwei Bits auf Leitungen 35 ignoriert werden. Wenn die CPU den Hauptspeicher adressiert, adressieren die am höchsten bewerteten sieben Bits den MMU-Speicher 20. Die zwölf Bits aus dem Verschiebungsbasis­ segment werden über Bus 22 und Bus 30 zur Addierstufe 27 übertragen. Dort werden sie mit dem Seitenoffset (Bus 18b) kombiniert, und die sich ergebende Adresse wird mit den neuen Bits des Offset im Register 28 zur Gewinnung der endgültigen physikalischen Adresse kombiniert. Dieser Teil des MMU arbeitet ähnlich bekannten MMU's. Daher können die Ver­ schiebungsbasis-Daten in den Speicher (unter Ignorierung der Leitung 35) in bekannter Weise programmiert werden.
Die die Grenz- und Zugriffsdaten bildenden zwölf Bits werden über Bus 23 durch den Multiplexer 25 geleitet. Die acht Bits der Grenzdaten werden an den Addierer 27 angelegt. Die vier Bits der Zugriffsdaten werden über Leitung 45 an die Logik 40 angelegt. Die Grenzdaten werden bei dem beschriebenen Aus­ führungsbeispiel in Einer-Komplementform im Speicher 20 für ein Nicht-Segment gespeichert. Für Stapel-Segmente ist die gespeicherte Grenze "Länge minus 1" (beispielsweise würde ein Zwei-Seiten-Segment als 0000 0001 im Speicher 20 gespeichert). Wenn diese Grenzdaten zum Seitenoffset in der Addierstufe 27 addiert werden, bestimmt das Ergebnis dieser Addition, ob der Seitenoffset in den vorgegebenen Bereich des Segments fällt oder nicht. Hierin liegt eine Verbesserung gegenüber bekannten Grenzprüfungen, wo zusätzliche Logikschritte erforderlich waren.
Nicht-Stapel-Beispiel
Im folgenden wird kurz auf Fig. 4 Bezug genommen, in der eine Darstellung des Hauptspeichers 14 des Computers zu sehen ist. Es sei angenommen, daß Daten an Plätzen 50 gespeichert sind. Es ist ferner angenommen, daß der höchste Seitenoffset (1111 1111) für Daten 50 sich zum Platz 52 erstreckt und daß sich innerhalb dieses Segmentes Daten bis zu einem Seitenoffset von 1110 0000 (Linie 51) erstrecken. Für diesen Seitenoffset wird das Einerkomplement von 1110 0000 (0001 1111) im Speicher 20 der Fig. 3 gespeichert. Wenn dieses Segment adressiert wird und unter der Annahme, daß die Seitenoffsetadresse 1111 1111 ist (d. h. in den freien Raum des Speichers), addiert die Addierstufe 27 1111 1111 zur gespeicherten Zahl 0001 1111. Ein Überlauf ergibt sich aus der Addierstufe 27, und diese Überlaufbedingung wird von der Logik 40 in Fig. 3 abgetastet. Bei diesem Beispiel zeigt ein Überlauf an, daß der Seitenoffset nicht innerhalb des Bereichs liegt, und es wird auf der Leitung 57 ein Signal entwickelt, um zu zeigen, daß die Adresse fehlerhaft ist. Die Logik 40 verhindert über Leitung 57 einen Zugriff zum Hauptspeicher, und/oder es wird ein Fehlersignal erzeugt.
Wiederum unter Bezugnahme auf Fig. 4 sei angenommen, daß ein Programm an den Plätzen 53 gespeichert ist und daß der höchste Seitenoffset (1111 1111) für Programm 53 zum Platz 50 reicht, der außerhalb des am Platz 54 endenden tatsächlichen Programms liegt. Wenn der Seitenoffset für den Platz 54 0011 0000 ist, dann wird 1100 1111 im Speicher 20 der Fig. 3 für dasjenige Segment gespeichert, das am Platz 55 beginnt. Wenn dieses Segment adressiert wird und der Seitenoffset 0000 0001 ist, (Adressieren des Programms) addiert die Addier­ stufe 27 1100 1111 und 0000 0001. Diese Mal tritt kein Überlauf auf, und kein Signal wird an die Logik 40 angelegt, was bedeutet, daß der Zugriff frei ist. Zu beachten ist, daß bei einem Seitenoffset von 0100 0000 (nicht innerhalb des Bereichs) und Addition dieser Zahl zur gespeicherten Zahl von 1100 1111 ein Überlauf auftritt. Dieser Überlauf zeigt der Logik 40 an, daß der Seitenoffset nicht im Bereich liegt und der Speicherzugriff gesperrt ist.
Stapel-Beispiel
Für einige Programmiersprachen (z. B. Pascal) sind Stapel (im Speicher) sehr erwünscht. Stapel können durch Aufwärts­ bewegen von Daten allerdings sehr zeitraubend gebildet werden. Bei dem beschriebenen System wird zugelassen, daß Stapel im Speicher mit einem anderen Grenzprüfverfahren abwärts wachsen.
Es sei ein Ein-Seiten-Stapelelement angenommen. Im Speicher 20 ist die Grenzzahl als das Einer-Komplement des Seiten­ offset (1111 1111 → 0000 0000) gespeichert, die die gleiche ist wie die Größe minus Eins (0000 0001 → 0000 0000). Die Zugriffsprüfbits sorgen dafür, daß die Logik 40 einen Übertrag (carry-in) von 1 liefert. Wenn der Seitenoffset 1111 1111 ist, tritt ein Überlauf ein. Dieser Überlauf wird von der Logik 40 abgetastet und als richtig (innerhalb des Bereichs)-Bedingung interpretiert. Wenn der Seitenoffset 1111 1110 (Stapel zu stark gewachsen) wäre, tritt kein Überlauf auf, und dies wird als eine Adresse außerhalb des Bereichs interpretiert.
In ähnlicher Weise wird 0000 0001 im Speicher 20 gespeichert, wenn der Stapel ein Zwei-Seiten-Segment ist. Wiederum wird der Übertrag auf eine Eins gesetzt. Ein Seitenoffset von 1111 1110 würde zu einem Überlauf führen, der eine im Bereich liegende Adresse anzeigt, während bei einem Seitenoffset von 1111 1100 kein Überlauf auftreten würde, also eine Adresse außerhalb des Bereichs angezeigt würde.
Fig. 4 Beispiel
Im folgenden wird auf die Fig. 4 Bezug genommen, wobei an­ genommen wird, daß ein Prozeß (Programm und Daten) im Hauptspeicher 14 zwischen den Plätzen 0 und 500 KB gespeichert ist. Die drei restlichen Zugriffsbits im Speicher 20 entsprechend den Segmentadressen für die Plätze 0-500 KB dienen, wie erwähnt, zur Schaffung einer besonderen Steuerung. So ist beispielsweise für diejenigen Segmente, die nur Programm enthalten, nur ein Lesen des Speichers zugelassen. Dies verhindert natürlich ein zufälliges Schreiben in das Programm. Dagegen können sowohl Lese- als auch Schreibbefehle in diejenigen Segmente zugelassen werden, welche Daten enthalten. Dies ergibt sich aus den Angaben rechts vom Programm 49 und Daten 60 in Fig. 4.
Der Speicher 20 wird programmiert (d. h. Zugriffsprüfbits), um ein Lesen einiger Segmente des Hauptspeichers, ausgenommen bei gewissen Betriebsarten (z. B. Überwachungsbetrieb) zu verhindern. Dies geschieht beispielsweise dann, wenn verhindert werden soll, daß ein Benutzer ein Betriebssystem liest und danach kopiert. Wenn das Programm 59 abläuft, ist kein Zugriff zum Speicher 20 zugelassen, da ein solcher Zugriff dazu führen könnte, daß die Verschiebungsbasis, die Grenzdaten oder die Zugriffsdaten zufällig geändert werden. Daher schützen die vier Zugriffsdaten das im Hauptspeicher gespeicherte Programm und begrenzen auch den Zugriff zu gewissen im Speicher gespeicherten Informationen. In einem typischen Anwendungsfall wird ein Betriebssystem aus einer Platte in den Hauptspeicher geladen. Sobald es im Hauptspeicher ist, kann die CPU auf das Betriebs­ system in Überwachungsmoden zugreifen, während der Benutzer an einem Zugriff und damit an einer Kopiermöglichkeit des Betriebssystems gehindert ist.
Bei der Erfindung hat der Speicher vierfach diejenige Kapazität, die gewöhnlich zur Schaffung einer Verschiebungsbasis und für die Grenz- und Zugriffsdaten für den Hauptspeicher benötigt wird. Die Signale aus der CPU auf Leitungen 35 ermöglichen die Auswahl bzw. Ansteuerung jedes Quadranten des Speichers 20. Jeder dieser Quadranten wird in der folgenden Beschreibung als ein Kontext (Kontext 0-3) bezeichnet.
In Fig. 2 ist die Organisation des MMU-Speichers 20 dargestellt als vier getrennte Quadranten: 20a (Kontext 0), 20b (Kontext 1), 20c (Kontext 2) und 20d (Kontext 3). Kontext 1, 2 und 3 sind jeweils in einer 256×12 Bit-Anordnung organisiert (128×12 Bits für die Verschiebungsbasis und 128×12 Bits für die Grenz- und Zugriffsdaten). Kontext 0 wird von der CPU während des Kontrollbetriebs bzw. Supervisor-Modus ausgewählt bzw. angesteuert, und dieser Kontext speichert Managementdaten, die sich auf das Betriebssystem beziehen. Zu beachten ist, daß jeder Kontext zur Speicherung von Informationen geeignet ist, die den gesamten Hauptspeicher überspannen, so daß es drei überlappende MMU-Speicher für Benutzeroperationen gibt.
Der Nutzen dieser überlappenden Speicher ist am besten aus Fig. 4 zu sehen. Der Hauptspeicher 14 ist als programmiert mit 3 Prozessen P1, P2 und P3 gezeigt. Prozeß 1 ist zwischen 0 und 500 kB, Prozeß 2 zwischen 600 kB und 1 MB und Prozeß 3 zwischen 1,2 MB und 1,5 MB gespeichert. Daten, die sich auf das Betriebssystem beziehen, sind zwischen 1,8 MB und 2 MB gespeichert. Eine geeignete Verschiebungsbasis ist im Speicher 20 so gespeichert, daß die Adressen 0-200 kB während der Kontrollbetriebe automatisch 1,8 mB bis 2 mB im Hauptspeicher auswählen. Auch geeignete Grenzen sind geladen, um sicherzustellen, daß während des Kontrollbetriebs der freie Raum im Speicher nicht zugegriffen wird. Während des Kontrollbetriebs (Kontext 0) ist, wie in Fig. 4 unter der Überschrift "Kontext 0" dargestellt ist, ein vollständiger Zugriff zum MMU-Speicher und zum Hauptspeicher möglich (ausgenommen für Zugriffsbits, welche das Schreiben in das im Hauptspeicher gespeicherte Betriebs­ system verhindern, wodurch das Programm vor Schäden aufgrund eines Programmfehlers geschützt wird). Da der MMU-Speicher zu dieser Zeit zugreifbar ist, kann er über den Bus 16 ent­ sprechend Darstellung in Fig. 3 und vorhergehender Erläuterung programmiert werden.
Es sei angenommen, daß Kontext 1 für Programm 59 und Daten 60 benutzt werden soll; ein Quadrant des MMU-Speichers 20 entsprechend dem Kontext 1 ist programmiert, um den Platz des Programms 59 und der Daten 60 anzugeben. Die Grenz- und Zugriffsbits werden gesetzt, wie unter Kontext 1 angegeben ist. Wenn daher Kontext 1 angesteuert bzw. gewählt wird, kann Programm 59 (nur) gelesen werden, und das Lesen und Schreiben von Daten 60 ist zugelassen. Kein anderer Zugriff zu anderen Speicherplätzen ist möglich, und es kann auch nicht in den MMU-Speicher geschrieben werden.
Ein zweiter Prozeß kann im Speicher gespeichert werden. Das Betriebssystem kennt den Platz des ersten Prozesses und kann einen anderen Quadranten des Speichers 20 für Prozeß 2 programmieren. Die Verschiebungsbasis wird so programmiert, daß dann, wenn die CPU-Plätze entsprechend 0-400 KB adressiert, Plätze 600 KB bis 1 mB für den Hauptspeicher vorgesehen werden. Wie unter der Überschrift Kontext 2 in Fig. 4 gezeigt ist, sind die Zugriffsbits so programmiert, daß sie ein Lesen und Schreiben in die Daten 50 und ein Nur-Lesen des Programms 53 ermöglichen. Es ist außerdem kein Zugriff (zum Schreiben) in den MMU-Speicher zugelassen, noch ist kein Zugriff zu anderen Plätzen im Hauptspeicher möglich. In ähnlicher Weise kann ein dritter Prozeß im Hauptspeicher für Kontext 4 entsprechend Darstellung in Fig. 4 gespeichert werden.
Der Vorteil der Anordnung gemäß Fig. 4 besteht darin, daß drei getrennte Prozesse innerhalb des Hauptspeichers gespeichert sind und daß jeder Prozeß durch den MMU-Speicher leicht aus­ gewählt werden kann, d. h. durch Ansteuern bzw. Auswahl von Kontext 1, 2 oder 3. Ein separater Kontext (Kontext 0) ist als Ausgangspunkt für das Betriebssystem bei dem beschriebenen Ausführungsbeispiel reserviert. Dies ermöglicht die Ausführung dreier separater Programme ohne eine Umprogrammierung des MMU-Speichers. Diese Vielseitigkeit wird aufgrund der überlappenden Speichermanagementkapazität des MMU-Speichers erreicht.

Claims (4)

1. Computersystem mit einer CPU (10), einem Hauptspeicher (14) und einer mit der CPU (10) und dem Hauptspeicher (14) gekoppelten Speichermanagementeinheit (MMU) (12) zum Übersetzen einer logischen Adresse von der CPU (10) in eine physikalische Adresse für den Zugriff auf den Hauptspeicher (14) mit einem mit der MMU gekoppelten MMU-Speicher (20) zum Speichern einer Vielzahl von Verschiebungsbasisadressen der in Abschnitte (Kontexte) (20a-20d) unterteilt ist, wobei jedem Kontext zumindest eine Verschiebungsbasisadresse sowie zugeordnete Zugriffsbits zugeordnet sind, und wobei die MMU (12) Steuersignale (35, 37) von der CPU zum Auswählen eines vorgegebenen Kontextes (20a-20d) empfängt, wenn die logische Adresse von der CPU geliefert wird;
dadurch gekennzeichnet,
daß jeder Verschiebungsbasisadresse außerdem Grenzwert-Bits zugeordnet sind, die ebenfalls im MMU-Speicher (20) gespeichert sind;
daß der MMU-Speicher einen ersten Teil der logischen Adresse von der CPU empfängt und der erste Teil der logischen Adresse auf eine gespeicherte Verschiebungsbasisadresse eines ausgewählten Kontextes zugreift und mit den entsprechenden Grenzwert- und Zugriffs-Bits korrespondert;
daß die Speichermanagementeinheit einen mit dem MMU-Speicher gekoppelten Addierer (27) zum Empfangen der ausgewählten Verschiebungsbasisadresse des ausgewählten Kontextes und Kombinieren der Verschiebungsbasisadresse mit einem zweiten Teil der logischen Adresse, um die physikalische Adresse zum Zugreifen auf den Hauptspeicher (14) auszugeben, aufweist;
daß der Addierer (27) außerdem so angekoppelt ist, daß er die mit der Verschiebungsbasisadresse korrespondierenden Grenzwert- Bits empfängt und sie zu dem zweiten Teil der logischen Adresse addiert und ein Anzeigesignal erzeugt, wenn der zweite Teil der logischen Adresse einen durch die Grenzwert-Bits gesetzten Wert überschreitet;
daß logische Zugriffsprüfmittel (40) mit dem MMU-Speicher (20) und dem Addierer (27) gekoppelt sind, um die mit der Ver­ schiebungsbasisadresse, auf die zugegriffen wird, korrespondierenden Zugriffs-Bits zu empfangen und zu bestimmen, ob die Zugriffs- Bits einen Zugriff auf den Hauptspeicher für den von der CPU angeforderten Zugriffstyp gestattet, und um ein Fehlersignal zum Verhindern des Zugriffs auf den Hauptspeicher zu erzeugen, wenn ein illegaler Zugriff auf den Hauptspeicher versucht wird;
daß die logischen Zugriffsprüfmittel (40) auch dann das Fehlersignal erzeugen, wenn das Anzeigesignal von dem Addierer empfangen wird;
daß die Verschiebungsbasisadresse auf eine korrespondierend abgebildete Basisadresse im Hauptspeicher hinzeigt, so daß eine vorgegebene logische Adresse auf eine Vielzahl von physikalischen Adressen abgebildet werden kann, wobei zumindest eine physikalische Adresse für jeden Kontext zur Verfügung gestellt wird;
wobei auf die ausgewählten physikalischen Adressen des Hauptspeichers durch mehr als einen Kontext zugegriffen werden kann.
2. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß einer der MMU-Speicher-Kontexte (20a-20d) als ein Supervisor- Kontext (20a) ausgewählt wird, wenn sich die CPU (10) in einem Supervisor-Modus befindet, wobei der Supervisor-Kontext (20a) auf den gesamten Hauptspeicher (14) zugreift.
3. Computersystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der Addierer (27) die Grenzwert-Zahl (Bits), welche ein Binärkomplement eines Offsets relativ zu seiner Verschiebungs­ basisadresse ist, empfängt, so daß, wenn das Binär­ komplement zu dem zweiten Teil der logischen Adresse addiert wird, das Anzeigesignal bei Auftreten eines Überlaufs des Addierers erzeugt wird.
4. Computersystem nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß der MMU-Speicher (20) die Verschiebungsbasis­ adressen, die Grenzwert-Bits und die Zugriffs-Bits von der CPU während eines MMU-Befehlszyklus speichert.
DE19833333894 1982-09-29 1983-09-20 Speichermanagementeinheit Granted DE3333894A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US42686982A 1982-09-29 1982-09-29

Publications (2)

Publication Number Publication Date
DE3333894A1 DE3333894A1 (de) 1984-03-29
DE3333894C2 true DE3333894C2 (de) 1993-04-01

Family

ID=23692542

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19833333894 Granted DE3333894A1 (de) 1982-09-29 1983-09-20 Speichermanagementeinheit

Country Status (12)

Country Link
JP (1) JPS5979367A (de)
AU (1) AU559067B2 (de)
CA (1) CA1197020A (de)
DE (1) DE3333894A1 (de)
FR (1) FR2533736A1 (de)
GB (1) GB2127994B (de)
IL (1) IL69784A (de)
IN (1) IN161125B (de)
IT (1) IT1221741B (de)
NZ (1) NZ205486A (de)
SE (1) SE464052B (de)
ZA (1) ZA836384B (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2176918B (en) * 1985-06-13 1989-11-01 Intel Corp Memory management for microprocessor system
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
JP2522248B2 (ja) * 1986-05-24 1996-08-07 株式会社日立製作所 記憶装置アクセス機構
EP0321493A4 (en) * 1986-08-22 1991-11-21 Commonwealth Scientific And Industrial Research Organisation A content-addressable memory system
EP0262486B1 (de) * 1986-09-25 1993-11-18 Siemens Aktiengesellschaft Adressenverwaltungseinheit einer Multiprozessor-Zentralsteuereinheit eines Nachrichten-Vermittlungssystems
FR2618578A1 (fr) * 1987-07-21 1989-01-27 Digilog Systeme informatique modulaire embarque a memoire virtuelle integree
DE3901457A1 (de) * 1989-01-19 1990-08-02 Strahlen Umweltforsch Gmbh Verfahren zur adressbereichsueberwachung bei datenverarbeitungsgeraeten in echtzeit
US5617554A (en) * 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5752275A (en) * 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
JP2005100262A (ja) 2003-09-26 2005-04-14 Seiko Epson Corp メモリ管理装置およびメモリ管理プログラム、並びにメモリ管理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5315779B2 (de) * 1973-08-16 1978-05-27
GB1498116A (en) * 1974-04-18 1978-01-18 Honeywell Inf Systems Data processing systems
US3938100A (en) * 1974-06-07 1976-02-10 Control Data Corporation Virtual addressing apparatus for addressing the memory of a computer utilizing associative addressing techniques
US3999052A (en) * 1975-06-18 1976-12-21 International Business Machines Corporation Upper bounds address checking system for providing storage protection for a digital data processor
US4037215A (en) * 1976-04-30 1977-07-19 International Business Machines Corporation Key controlled address relocation translation system
GB1585960A (en) * 1976-07-30 1981-03-11 Plessey Co Ltd Information flow security mechanisms for data processing systems
US4093986A (en) * 1976-12-27 1978-06-06 International Business Machines Corporation Address translation with storage protection
JPS5436144A (en) * 1977-08-26 1979-03-16 Toshiba Corp Address conversion unit
DE2837241C2 (de) * 1978-08-25 1982-05-06 Siemens AG, 1000 Berlin und 8000 München Einrichtung zum Sichern von Daten gegen unberechtigten Zugriff
US4366537A (en) * 1980-05-23 1982-12-28 International Business Machines Corp. Authorization mechanism for transfer of program control or data between different address spaces having different storage protect keys

Also Published As

Publication number Publication date
SE8305290D0 (sv) 1983-09-29
ZA836384B (en) 1984-05-30
IT8322960A0 (it) 1983-09-22
GB2127994B (en) 1987-01-21
AU1894083A (en) 1984-04-05
NZ205486A (en) 1987-02-20
JPS5979367A (ja) 1984-05-08
IL69784A (en) 1986-12-31
GB8316129D0 (en) 1983-07-20
SE8305290L (sv) 1984-03-30
DE3333894A1 (de) 1984-03-29
IL69784A0 (en) 1983-12-30
CA1197020A (en) 1985-11-19
GB2127994A (en) 1984-04-18
AU559067B2 (en) 1987-02-19
FR2533736A1 (fr) 1984-03-30
SE464052B (sv) 1991-02-25
IT1221741B (it) 1990-07-12
IN161125B (de) 1987-10-10

Similar Documents

Publication Publication Date Title
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE2725718C2 (de) Datenverarbeitungsanordnung zum Übersetzen von virtuellen Adressen
DE2515696C2 (de) Datenverarbeitungssystem
EP0512542B1 (de) Datenschützende Mikroprozessorschaltung für tragbare Datenträger, beispielsweise Kreditkarten
DE3587694T2 (de) Speicherzugriffssteuergerät zur Realisierung von geschützten Gebieten in einem Speicher, und mit solchem Speicherzugriffssteuergerät ausgerüsteter Speicher.
DE2637054C3 (de) Steuervorrichtung für einen Pufferspeicher
DE102005022893B3 (de) Verfahren zum Zugreifen auf Speicherbereiche einer Speicherkarte durch eine anfordernde Anwendung und Speicherkarte
DE2364408A1 (de) System zur erstellung von schaltungsanordnungen aus hochintegrierten chips
EP1065598A1 (de) Verfahren zum Zugriff auf einen Speicher und Speichereinrichtung hierfür
DE2054830C3 (de) Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge
DE3333894C2 (de)
DE2718551C3 (de) Adressenumsetzer
DE3888438T2 (de) Cachespeichersteuerungsvorrichtung für eine Datenverarbeitungsanordnung mit virtuellem Speicher.
DE2758829A1 (de) Multiprozessor-datenverarbeitungssystem
DE3689217T2 (de) Datenverarbeitungseinrichtung mit einer Schaltung zur Prüfung der Adressgrenzen in einem virtuellen Speicher.
DE68926158T2 (de) Einchip-Mikrorechner mit EPROM
CH495584A (de) Datenverarbeitungsanlage
DE3000012A1 (de) Schaltungsanordnung zur ausfuehrung eines uebertragungsbefehls in einer datenverarbeitungsanlage
EP1559111B1 (de) Verfahren zum betreiben einer speicheranordnung
DE69025268T2 (de) Schaltungsanordnung zur erweiterten Adressierung
EP0771463B1 (de) Verfahren und vorrichtung zum speichern und drehen von bitmustern
DE3236524A1 (de) Byteweise adressierbare speicheranordnung fuer befehle und daten mit variabler laenge
WO1998040821A1 (de) Mikrocomputer mit einer speicherverwaltungseinheit
DE4114545C2 (de) Schaltungsanordnung für einen Mikrocomputer
DE19612439A1 (de) Halbleiterspeichervorrichtung

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 12/14

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee