DE2332603A1 - Virtuelle speichereinrichtung - Google Patents
Virtuelle speichereinrichtungInfo
- Publication number
- DE2332603A1 DE2332603A1 DE2332603A DE2332603A DE2332603A1 DE 2332603 A1 DE2332603 A1 DE 2332603A1 DE 2332603 A DE2332603 A DE 2332603A DE 2332603 A DE2332603 A DE 2332603A DE 2332603 A1 DE2332603 A1 DE 2332603A1
- Authority
- DE
- Germany
- Prior art keywords
- address
- real
- translation
- memory
- virtual
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
Description
Böblingen, den 15. Juni 1973 lw-aa/fr
Anmelderin: International Business Machines
Corporation, Armonk, N.Y. 10504
Amtliches Aktenzeichen: Heüanmeldung
Aktenzeichen der Anmelderin: PO 971 06 4 ZOOZOUO
Die Erfindung betrifft eine virtuelle Speichereinrichtung, worin Daten von einer zentralen Verarbeitungseinheit durch eine virtuelle
Adresse angefordert werden, die aus einem virtuellen und einem realen Teil besteht, mit einem durch reale Adressen adressierten
Hauptspeicher, mit einer Einrichtung zur dynamischen übersetzung der virtuellen Adressen in die realen Hauptspeicheradressen,
wobei ZuordnungstabeIlen im Hauptspeicher verwendet
werden, sowie mit einer schnell zugreifbaren und bei jeder Anforderung adressierten Übersetzungsnebentabelle.
Eine derartige Einrichtung ist in der US-Patentschrift 3 533 075 und in ähnlicher Form, d.h. mit ZuordnungstabeIlen, die sich
außerhalb des Hauptspeichers befinden, auch in der DT-OS 18 15 234 beschrieben.
In Datenverarbeitungsanlagen, in denen mehrere Programme von einer
oder mehreren Verarbeitungseinheiten ausgeführt werden, besteht stets ein großer Bedarf an Speicherraum. Dieser Speicherraum übersteigt
im Normalfall die Kapazitäten der gebräulichen Hauptspeicher, die zumeist als Magnetkernspeicher ausgeführt sind. Um diese Vielzahl
der Programme im Zeitteilungsverfahren ausführen zu können, ist die Verwendung von virtuellen Adressen bekanntgeworden, welche
die Verwendung von großen Unterstützungsspeichern, wie z.B.
409808/1033
Magnetplattenspeicher, sehr erleichtert haben. Als Beispiel kann z.B. eine Systemadresse von 24 Bits genannt werden, mit der also
16 Millionen Bytes des virtuellen Speichers adressiert werden können.
Wegen der Vielzahl der Programme und aus Organisationsgründen ist es vorteilhaft, den virtuellen Speicher in Segmente zu unterteilen,
wobei jedes Segment mehrere Datenseiten enthält. Eine Seite weist stets eine bestimmte Anzahl von Bytes auf. Die Segment-
und Seitenadressen stellen dann z.B. die Adressen im Unterstützungsspeicher
dar und weisen keinen direkten Zusammenhang mit bestimmten Hauptspeicherstellen auf. Vielmehr können sich die durch
virtuelle Adressen bestimmten Seiten irgendwo im Hauptspeicher befinden und zu verschiedenen Zeiten auch an verschiedenen Stellen
im Hauptspeicher gespeichert sein. Je nach Bedarf werden die notwendigen Seiten vom Unterstützungsspeicher in den Hauptspeicher
übertragen und nicht mehr gebrauchte Seiten vom Hauptspeicher zurück
zum Unterstützungsspeicher übertragen. Da also kein fester Zusammenhang zwischen virtuellen und realen Adressen besteht,
müssen die in einer Datenanforderung enthaltenen virtuellen Adressen zuerst in die entsprechenden realen Hauptspeicheradressen
übersetzt werden. Dies geschieht mit Hilfe von Seiten- und Segmenttabellen. In einer Seitentabelle sind dabei die realen Speicherstellen
aller Seiten eines bestimmten Segmentes gespeichert. Andere Seitentabellen geben die realen Hauptspeicherstellen für
die Seiten anderer Segmente an. Da auch die Seitentabellen nicht immer an einem bestimmten Platz im Hauptspeicher gespeichert sind,
muß die Beginnadresse einer jeden Seitentabelle in einer Segmenttabelle gespeichert werden. Eine typische virtuelle Adresse besteht
aus einem Segmentteil, einem Seitenteil und einem Byteteil. Der Byteteil ist schon die reale Adresse eines bestimmten Bytes
innerhalb einer bestimmten Seite im Hauptspeicher. Es brauchen also nur der Segmentteil und der Seitenteil in eine reale Adresse
übersetzt und diese mit dem schon vorhanden realen Byteteil zusammengefügt werden, um den gewünschten Zugriff zum Hauptspeicher
durchführen zu können. Eine solche übersetzung erfordert im Nor-
PO 971 064 40 98 08/1033
·"■ J ™"
malfall zwei Hauptspeicherzugriffe, und zwar einmal zur Segmenttabelle
und dann zur Seitentabelle. Um diesen zeitraubenden übersetzungsprozeß
nicht für jede Datenanforderung ausführen zu müssen, werden die Übersetzungen zu den laufend verwendeten virtuellen
Adressen in einem besonderen Speicher gespeichert, der als Übersetzungsnebentabelle bezeichnet werden kann. Die gewünschte
übersetzung kann also Von diesem schnell zugreifbaren Speicher rasch erhalten werden. Die Unterteilung der virtuellen Adresse
in einen Segmentteil und einen Seitenteil, welche insbesondere für große virtuelle Speicherräume und Mulitprozessoranlagen notwendig
ist, ist wohl nach der genannten US-Patentschrift, jedoch nicht nach der genannten Deutschen Offenlegungsschrift möglich.
Die in der US-Patentschrift verwendete Übersetzungsnebentabelle hat jedoch den Nachteil, daß für jede übersetzung der gesamte
virtuelle Adressenteil gespeichert werden muß, wobei bei jedem Zugriff zu dieser Nebentabelle alle gespeicherten virtuellen
Adreßteile mit der angebotenen virtuellen Adresse verglichen werden müssen. Im Falle der US-Patentschrift stellt dies keinen besonders
schwerwiegenden Nachteil dar, da darin die Nebentabelle insgesamt nur aus acht Registern besteht. Die Wirksamkeit einer
solchen kurzen Übersetzungsnebentabelle ist jedoch äußerst begrenzt und die Tabellenlänge sollte zumindest das 5- bis 10-fache betragen.
Bei einer Übersetzungsnebentabelle jedoch von solcher Größe würde ein Vergleich der angebotenen virtuellen Adresse mit allen
gespeicherten virtuellen Adreßteilen zu lange dauern.
Ein weiteres Problem ergibt sich daraus, daß in den modernen Datenverarbeitungsanlagen
mit hoher Verarbeitungsgeschwindigkeit die Zugriffe der zentralen Verarbeitungseinheit nicht zum Hauptspeicher.-
sondern zu einem schnellen Pufferspeicher erfolgen. Der
Zweck eines solchen Pufferspeichers besteht also darin, die Geschwindigkeit
der Erledigung von Datenanforderungen zu erhöhen. Der Pufferspeicher speichert vorzugsweise eine bestimmte Anzahl
von Datenblocks, deren Größe vorzugsweise gleich ist den verwendeten
Datenseiten. Wenn der Datenblock, welcher die angeforderten Daten enthält, sich im Pufferspeicher befindet, kann die Datenan-
po 971 064 409808/ 1 033
förderung sofort ausgeführt werden. Falls der Block nicht im
Pufferspeicher vorhanden ist, muß er erst aus dem Hauptspeicher in den Pufferspeicher übertragen werden, wobei zugleich auch die
gewünschten Daten sofort zur zentralen Verarbeitungseinheit übertragen werden können.
Bei Verwendung eines solchen Pufferspeichers werden die Datenanforderungen
der zentralen Verarbeitungseinheit stets zuerst mit den in einem Zuordnungsspeicher enthaltenen Bezeichnungen aller
im Pufferspeicher gespeicherten Datenblocks verglichen. Bei Datenanforderungen,
welche das Speichern von Daten im Pufferspeicher beinhalten, werden diese Daten zugleich auch im Hauptspeicher
gespeichert. Bei Kanalanforderungen ist es auch möglich, Abrufanforderungen
nur zum Hauptspeicher zu leiten, hingegen Schreibvorgänge sowohl im Hauptspeicher als auch im Pufferspeicher
durchzuführen, falls der betreffende Datenblock auch im Pufferspeicher gespeichert ist.
Eine Anordnung mit einem externen Unterstützungsspeicher,
mit einem Hauptspeicher und einem schnellen Pufferspeicher ist z.B. in der Deutschen Offenlegungsschrlft 1 9 56 604 beschrieben.
Im Pufferspeicher ist ein Adressenbereich und ein entsprechender Datenbereich vorgesehen. Der Datenbereich enthält z.B. Datenblocks
zu 32 Bytes oder vier Doppelworten, während der Adressenbereich kongruent zum Datenbereich aufgebaut ist und in den entsprechenden
Speicherstellen eine Bezeichnung, z.B. die Adresse, der in den entsprechenden Speicherstellen des Datenbereiches
gespeicherten Datenblöcke enthält. In der genannten Einrichtung werden keine virtuellen Adressen verwendet, so daß der Blockadressenteil
der Adresse von der zentralen Verarbeitungseinheit oder vom Kanal direkt mit den im Adressenbereich gespeicherten
Blockadressen verglichen werden kann, um zu bestimmen, ob der betreffende Datenblock Im Pufferspeicher gespeichert ist. Wenn
jedoch die zentrale Verarbeitungseinheit virtuelle Adressen und
ein Kanal reale Adressen verwendet, ergeben sich Schwierigkeiten bei der Bestimmung, ob der Datenblock mit der bestimmten der
PO 971 O64 AO 9808/ 1033
virtuellen Adresse entsprechenden realen Adresse im Pufferspeicher
gespeichert ist.
Wenn der Pufferspeicher so aufgebaut wird, daß die Speicherstelle eines Datenblocks im Pufferspeicher eine direkte Beziehung zu
der virtuellen Adresse dieses Datenblocks hat, entfällt naturgemäß eine übersetzung der von der zentralen Verarbeitungseinheit
gelieferten virtuellen Adresse eines Datenblocks in seine reale Adresse. Verzögerungen ergeben sich wohl dann, wenn sich der Datenblock
nicht im Pufferspeicher befindet und entweder vom Hauptspeicher oder vom Unterstützungsspeicher geholt werden muß. Insgesamt
könnte jedoch ein Zeitgewinn deshalb erzielt werden, weil Zugriffe der zentralen Verarbeitungseinheit zum Pufferspeicher
weitaus häufiger sind, als die oben genannte Blockübertragung.
Es ergeben sich jedoch große Schwierigkeiten bei der in einem
virtuellen Speichersystem stets notwendigen übertragung von Datenseiten
zwischen dem Hauptspeicher und dem Unterstutzungsspeicher.
Wenn sich nämlich zwei verschiedene virtuelle Adressen auf die gleiche reale Adresse beziehen, wird der virtue11-orientierte
Pufferspeicher die Daten vom realen Hauptspeicher für jede verschiedene virtuelle Adresse in verschiedenen Speicherstellen
speichern. Es wäre deshalb notwendig, alle Anforderungen zunächst in einer besonderen wechselseitigen Überprüfungseinrichtung zu
prüfen.
Ein anderes Problem entsteht bei der Entfernung von Eintragungen in der Segment- oder Seitentabelle. Die Daten im Pufferspeicher,
welche sich auf solche zu entfernende Eintragungen beziehen, müssen nämlich ihren Zusammenhang zum Unterstützungsspeicher behalten,
d.h. ihre reale Speicherstelle muß aufbewahrt werden. Dies macht eine Abtastung und überprüfung des virtuell orientierten
Pufferspeichers bei jeder Veränderung in den Segment- oder Seitentabellen notwendig.
Schließlich ergeben sich auch bei Verwendung eines virtuell orientierten
Pufferspeichers Schwierigkeiten bei der Verwendung von
po 971 064 409808/1033
Speicherschutz-Schlüsselworten. Solche Schlüsselworte sind nämlich
realadressenorientiert und müssen bei jeder Datenanforderung der zentralen Verarbeitungseinheit überprüft werden. Da jedoch
die Verarbeitungseinheit virtuelle Adressen liefert, erfordert die überprüfung der Schlüsselworte eine umständliche Behandlung
.
Der Erfindung liegt daher die Aufgabe zugrunde, in einer virtuellen
Speichereinrichtung der eingangs beschriebenen Art eine dreistufige Speicherhierachie bei Verwendung von virtuellen Adressen
anzugeben, sowie den Zugriff zum Pufferspeicher, die übertragung von Datenblocks und die Verwendung von Speicherschlüsselworten
zu vereinfachen und zu beschleunigen.
Diese Aufgabe wird durch die im Kennzeichnen des Hauptanspruches beschriebene Einrichtung gelöst.
Da die Adressierung des Pufferspeichers gemäß der Erfindung mit realen Adressen erfolgt, entfällt die Notwendigkeit der Verwendung
einer speziellen Überprüfungseinrichtung, wie sie bei Verwendung eines virtuell orientierten Pufferspeichers notwendig
wäre. Da ferner die Daten im Pufferspeicher mit ihrer realen Adresse
adressiert werden, entfällt auch die Notwendigkeit der Abtastung des Pufferspeichers, wenn Eintragungen in der Segment- oder
Seitentabelle verändert werden sollen. Ebenso ergibt sich hierdurch eine Vereinfachung bei der Verwendung von realadressorientierten
Speicherschlüsselworten.
Da die übersetzungsnebentabelle mit einem virtuellen Teil der
von der zentralen Verarbeitungseinheit gelieferten virtuellen Datenadresse adressiert wird, entfällt oder verringert sich zumindest
der notwendige Zeitaufwand zum Vergleich der angebotenen virtuellen Adresse mit evtl. gespeicherten virtuellen Adressenbits.
Die Verwendung von realen Bezeichnungen für die im Pufferspeicher gespeicherten Datenblocks vereinfacht den Vergleich dieser Be-
po 971 064 409808/1033
zeichnungen mit den aus dem Zuordnungsspeicher ausgelesenen realen
Adressen, da beide sofort ohne weitere übersetzung miteinander verglichen werden können.
Insgesamt ermöglicht also die Erfindung eine ganz wesentliche Zeiteinsparung bei Zugriffen zum schnellen Pufferspeicher.
Ein Ausführungsbeispiel, der Erfindung soll nun anhand von Figuren
beschrieben werden.
Es zeigen:
Fig. 1 das Format einer virtuellen Adresse, Fig. 2 eine Einrichtung zur übersetzung von virtuellen
Adressen in reale Adressen,
Fig. 3 das Format von Eintragungen in Segmenttabellen
und Seitentabellen,
Fig. 4 eine bevorzugte Ausführungsform der Erfindung,
Fig. 5 ein Zeitdiagramm zur Darstellung der in der
Einrichtung nach Fig. 4 ablaufenden Vorgänge,
Fig. 6 das Format von Eintragungen in einer Übersetzungsnebentabelle,
und
Fig. 7 die genauere Darstellung der erfindungsgemäßen
Übersetzungseinrichtung.
In Fig. 1 ist ein bevorzugtes Format einer virtuellen Adresse gezeigt. Die 24 Bits der virtuellen Adresse sind in drei Felder
unterteilt: Ein Segmentfeld (SX), welches die Bits 8-15 umfaßt
po 971 064 409808/1033
ein Seitenfeld (PX), welches aus den Bits 16-20 besteht und ein Bytefeld, welches die Bits 21-31 enthält. Gemäß diesem Format
besteht der virtuelle Speicher aus 256 Segmenten, von denen jedes bis zu 32 Seiten aufweisen kann. Eine Seite kann bis zu
2048 Bytes enthalten. Die Aufteilung der Adressenbits auf die einzelnen Felder könnte jedoch auch in anderer Weise erfolgen,
z.B. können für das Seitenfeld die Bits 8-11 und für das Segmentfeld die Bits 12-19 vorgesehen werden. Für das Bytefeld würden
dann die Bits 20-31 zur Verfügung stehen. Gemäß einem solchen Format würde der virtuelle Speicher aus 16 Segmenten zu je maximal
256 Seiten zu je maximal 4096 Bytes bestehen. Die Bits 0-7 werden in der gezeigten Ausführungsform nicht benutzt. Sie können
dazu dienen, den virtuellen Speicherbereich bis auf eine 32-Bitadresse auszuweiten. In einem solchen erweiterten Speichersystem
könnten über 4 Milliarden Bytes gespeichert werden.
Mit dem Segmentfeld wird eine Speicherstelle in der Segmenttabelle
adressiert. In dieser Speicherstelle ist ein Wert gespeichert, welcher die Beginnadresse derjenigen Seitentabelle angibt, welche
zu dem vom Segmentfeld definierten Segment gehört. Mit dem Seitenfeld wird eine SpeichersteHe in der Seitentabelle adressiert.
In dieser Speicherstelle ist ein Wert gespeichert, welcher die reale Adresse der Seite im Hauptspeicher angibt. Bei der dynamischen
Adressenübersetzung einer virtuellen Adresse in eine reale Adresse wird das Bytefeld der virtuellen Adresse nicht verändert,
sondern ergibt zusammen mit der durch die übersetzung gefundenen realen Adresse der Seite die gesuchte reale Adresse eines Bytes
im Hauptspeicher.
Der Übersetzungsvorgang soll nun anhand von Fig. 2 erläutert werden.
Die übersetzung erfolgt in zwei aufeinanderfolgenden Schritten, wobei zunächst die Segmenttabelle und dann die Seitentabelle
adressiert wird. Der Segmentteil SX der virtuellen Adresse wird zur Beginnadresse STO, welche im Steuerregister 2 gespeichert ist.
PO 971 064 409808/1033
hinzuaddiert. Mit der somit erhaltenen Adresse wird die Speicherstelle
4 der Segmenttabelle 6 ausgelesen. In dieser Speicherstelle
ist die Beginnadresse PTO der Seitentabelle gespeichert, zu der der Seitenteil der virtuellen Adresse hinzuaddiert wird. Mit
der somit erhaltenen Adresse wird die Speicherstelle 8 der Seitentabelle IO adressiert. In dieser Speicherstelle ist die gesuchte
reale Adresse dieser Seite im Kernspeicher enthalten und diese reale Seitenadresse und die reale Byteadresse werden nun aneinandergereiht
und ergeben damit die gesuchte reale Byteadresse.
Um nicht bei jedem Zugriff zum Hauptspeicher einen solchen zweistufigen
Übersetzungsvorgang durchführen zu müssen, ist eine Nebentabelle vorgesehen. In dieser Nebentabelle werden die Segment-
und Seitenteile von virtuelle Adressen zusammen mit den dazugehörigen realen Adressen, welche aus der Seitentabelle ausgelesen
wurden, gespeichert. Die Nebentabelle wird dabei dauernd auf den neuesten Stand gebracht und speichert die zugehörigen
virtuellen und realen Adressen von Seiten, zu denen kürzlich ein Zugriff erfolgte. Zum Beginn einer Adressenübersetzung wird daher
die Nebentabelle anhand der verlangten virtuellen Adresse überprüft, um festzustellen, ob die dazugehörige reale Adresse nicht
leicht bereits in der Nebentabelle gespeichert ist. Wenn dies der Fall ist, wird die reale Adresse aus der Nebentabelle ausgelesen
und mit dem realen Byteteil der virtuellen Adresse zusammengefügt und damit der Hauptspeicher adressiert. Wenn zu der angebotenen
virtuellen Adresse keine Eintragung in der Nebentabelle gefunden wird, wird der oben beschriebene zweistufige Übersetzungsvorgang durchgeführt und die gefundene übersetzung daraufhin in
der Nebentabelle gespeichert.
In Fig. 3 sind bevorzugte Formate für die Segmenttabelleneintragungen
4 und Seitentabelleneintragungen 8 gezeigt. Zu jedem virtuellen Adressenraum gibt es eine Segmenttabelle und die dazugehörige
Seitentabelle. Die Beginnadresse und die Länge der gerade aktiven Segmenttabelle sind im Steuerregister (Fig. 2) gespeichert.
Die Sebmenttabelleneintragung 4 enthält ein Langenfeld (LTH)
PO971064 409808/1033
— XO —
in den Bits 0-3, welches die Länge der Seitentabelle in Inkrenienten
angibt, welche gleich sind einem sechzentel der maximalen
Größe. Das Bit 31, das I-Bitf zeigt an, ob die Information, welche
in der Segmenttabelleneintragung enthalten ist, gültig ist. Wenn das I-Bit 1 ist, kann die Eintragung nicht zu einer übersetzung
benutzt werden. Die Seitentabelleneintragung 8 enthält in den Bitpositionen 0-12 die 13 hochwertigen Bits der realen
Adresse. Wie bereits beschrieben, werden die niederwertigen Bits der virtuellen Adressen, welche die reale Byteadresse darstellen,
neben die hochwertigen Bits von der Seitentabelle gesetzt und geben somit die Byteverschiebung innerhalb der Seite an. In jeder
Seitentabelleneintragung ist außerdem ein Gültigkeitsbit vorgesehen. Wenn dieses Bit 1 ist, kann die Eintragung nicht zu einer
übersetzung verwendet werden.
Die obigen Ausführungen bezogen sich auf bekannte Einrichtungen, welche in dem Ausführungsbeispiel der Erfindung Verwendung finden.
Im folgenden sollen nun die Teile des Ausführungsbeispieles beschrieben werden, welche eine Verbesserung der bekannten
dynamischen Übersetzungseinrichtungen und der dazu notwendigen Datenübertragungseinrichtungen ergeben.
In Fig. 4 sind die wesentlichsten Teile des Ausführungsbeispieles der Erfindung gezeigt. Die von der zentralen Verarbeitungseinheit
CPU angebotene virtuelle Adresse 12 wird gleichzeitig dazu benutzt, die Übersetzungsnebentabelle (TLAT) 14 und den
Zuordnungsspeicher 16 zu adressieren. In der Übersetzungsnebentabelle
14 sind Übersetzungen der kürzlich verwendeten virtuellen Adressen gespeichert, während der Zuordnungsspeicher 16 die
realen Adressen von Daten enthält, welche sich gerade im schnellen Pufferspeicher befinden. Der Aufbau der Übersetzungsnebentabelle
und des Zuordnungsspeichers kann auf verschiedene bekannte Arten erfolgen. Z.B. können hierzu assoziative Speicher
verwendet werden. Es ist aber auch möglich, die Tabellen durch Adressenbits der virtuellen Adresse zu adressieren. Dabei kann
po 971 064 409808/ 1033
— LX"
die Übersetzungsnebentabelle durch Teile des virtuellen Teiles d.h. des Segmentteiles und des Seitenteiles, der virtuellen
Adresse und der Zuordnungsspeicher durch Bits des realen Teiles d.h. des Byteteiles, der virtuellen Adresse adressiert werden.
Im allgemeinen ist es vorteilhaft, nur einen Teil der virtuellen Adresse als Zugriffsadresse zur Übersetzungsnebentabelle zu benutzen.
In diesem Falle wird der Teil der virtuellen Adresse, welcher nicht als Zugriffsadresse zur Übersetzungsnebentabelle
benutzt wurde, von dem virtuellen Teil der Übersetzungsnebentabelle ausgelesen und mit dem übereinstimmenden Teil der von der
zentralen Verarbeitungseinheit gelieferten virtuellen Adresse durch einen Vergleicher 18 verglichen.
Um sicherzustellen, daß es sich bei den im Pufferspeicher gespeicherten
Daten auch wirklich um die Daten handelt, welche von der virtuellen Adresse 12 verlangt werden, wird die reale
Adresse, welche von der übersttzungsnebentabelle 14 ausgelesen
wurde, mit der realen Adresse, welche von dem Zuordnungsspeicher 16 ausgelesen wurde, in einem Vergleicher 20 verglichen. Die
Ausgangssignale der Vergleicher 18 und 20 bilden die Eingangssignale eines UND-Gliedes 22, welches ein Ausgangssignal auf
der Leitung 24 erzeugt, wenn sich die gewünschten Daten im Pufferspeicher befinden. Die geeigneten Teile der virtuellen
Adresse und der realen Adresse werden auf den Leitungen 26 und 28 zum Pufferspeicheradressenregister 30 gebracht, so daß nunmehr
ein Zugriff zu den gewünschten Daten im Pufferspeicher erfolgen kann.
Wenn die reale Adresse, welche der virtuellen Adresse 12 entspricht,
sich in der Übersetzungsnebentabelle 14 befindet, die Daten jedoch nicht im Pufferspeicher vorhanden sind, wird durch
das durch- den Inverter 32 invertierte Aus gangs signal des Vergleichers
20, zusammen mit dem Ausgangssignal des Vergleichers 18 ein UND-Glied 34 angesteuert, welches auf der Leitung 36 ein
Signal erzeugt, das anzeigt, daß ein Hauptspeicherzugriff durchgeführt werden muß.
PO 971 064 409808/1033
Wenn die virtuelle Adresse 12 nicht gleich ist einer der in der Übersetzungsnebentabelle 14 gespeicherten virtuellen Adressen,
wird durch das Ausgangssignal des Vergleichers 18 und das Inverter-UND-Glied
38 ein Signal auf der Leitung 40 erzeugt, welches anzeigt, daß der oben im Zusammenhang mit der Fig. 2 beschriebene
Übersetzungsvorgang durchgeführt werden muß.
In Fig. 5 ist die Arbeitsweise der Einrichtung nach Fig. 4 noch
einmal in zeitlicher Reihenfolge zusammengefaßt. Aus Fig. 5 ist auch ersichtlich, welche Vorgänge zu gleicher Zeit ablaufen. Die
virtuelle Adresse von der zentralen Verarbeitungseinheit wird zugleich der Übersetzungsnebentabelle TLAT und dem Zuordnungsspeicher angeboten. Hierauf wird zu gleicher Zeit die in der
übersetzungsnebentabelle enthaltene virtuelle Adresse mit der
angebotenen virtuellen Adresse und die von der Übersetzungsnebentabelle ausgelesene reale Adresse mit der vom Zuordnungsspeicher ausgelesenen realen Adresse verglichen. Wenn in beiden
Vergleichen eine Gleichheit festgestellt wird, kann der gewünschte Zugriff (Lesen oder Schreiben) zum Pufferspeicher durchgeführt
werden.
In einer bevorzugten Ausführungsform enthält die Übersetzungsnebentabelle
64 Wörter, wobei in jedem Wort zwei virtuelle Adressen zusammen mit den entsprechenden realen Adressen gespeichert
sind. Jedes Wort weist Eintragungen für eine geradzahlige Seite und Eintragungen für die darauffolgende ungeradzahlige
Seite auf. Wenn ein Zugriff zur Übersetzungsnebentabelle durchgeführt wird, wird die geeignete Hälfte des adressierten
Wortes durch das niederwertige Bit (Bit 20) des Seitenteiles der virtuellen Adresse ausgelesen. In Fig. 6 sind Einzelheiten
des Formates der in der Übersetzungsnebentabelle gespeicherten Worte gezeigt. Beide Hälften dieser Worte sind gleich im Format.
Wie gezeigt, enthält eine Hälfte 27 Bits. Wie bereits oben erwähnt, enthalten der Segmentteil und der Seitenteil der virtuellen
Adresse zusammen 13 Bits. In einer bevorzugten Ausführungsform werden sechs dieser Bits dazu gebraucht, die über-
PO 971 064 409808/1033
setzungsnebentabelle zu adressieren und wird ein siebentes Bit,
wie oben erwähnt, dazu benutzt, die geeignete Hälfte des adressierten Wortes auszuwählen. Es brauchen also nur sechs Bits der
virtuellen Adresse, welche in Fig. 6 mit VIR bezeichnet sind, in einer Speicherstelle der Übersetzungsnebentabelle gespeichert
werden. Ein aus zwölf Bits bestehender Teil des Wortes enthält die zehn realen Adressenbits, welche die übersetzung des virtuellen
Segment- und Seitenteiles darstellen, sowie ein I-Bit und
ein Paritätsbit (P). Sechs Bits, welche in Fig. 6 ST PRO bezeichnet sind, können für Speicherschutzzwecke verwendet werden.
Außerdem enthält jede Eintragung in der Ubersetzungsnebentabelle
zwei codierte Gültigkeitsbits, welche in Fig. 6 mit STO bezeichnet
sind. Diese Bits zeigen an, ob eine Eintragung gültig ist oder ungültig. Eine gültige Eintragung kann sich auf einen von drei
verschiedenen Adressenräumen, je nach Wert der codierten STO-Bits, beziehen. Die Beginnadressen der Seitentabellen, welche den
codierten Bits entsprechen, werden in einem speziellen Register gespeichert. Ihre Zuweisung erfolgt z.B. unter Steuerung des
Mikroprogramms. Die vier durch die codierten STO-Bits angegebenen Werte haben folgende Bedeutung: OO zeigt eine ungültige Eintragung
an; 01 zeigt eine gültige Eintragung an, welche zu dem ersten STO-Wert, welcher in dem genannten Register gespeichert
ist, gehört; 10 zeigt eine gültige mit einem zweiten STO-Wert verbundene Eintragung an und 11 zeigt eine mit einem dritten
STO-Wert verbundene Eintragung an. Sobald das Steuerregister 2 (siehe Fig. 2) mit der Beginnadresse einer Segmenttabelle
geladen wird, wird durch das Mikroprogramm festgelegt, ob sich diese Segmenttabelle auf einen der drei STO-Werte in dem speziellen
Register bezieht. Wenn die Segmenttabellen-Beginnadresse, welche in das Steuerregister 2 geladen wird, nicht einem bestehenden
STO-Wert entspricht, erfolgt eine Zuweisung. Wenn alle drei codierten STO-Werte aktiv sind, und keiner davon gleich
ist dem neuen, in das Steuerregister 2 geladenen Wert, wird der älteste Wert in der Ubersetzungsnebentabelle gelöscht, indem
das STO-Bit, welches sich auf diese Tabelle bezog, auf 00 gesetzt
po 971 064 409808/1033
wird, und die codierten Bits erfahren eine neue Zuweisung zu dem neuen Wert.
Zur Adressierung der übersetzungsnebentabelle werden drei virtuelle
Adressenbits des Segmentteiles (Bits 13, 14 und 15) und drei virtuellen Adressenbits des Seitenteiles (Bits 17, 18 und 19)
verwendet und damit eine der 64 Speicherstellen ausgewählt. Das
niedrigste Segmentteilbit (Bit 20) wählt zwischen dem ungeraden oder geraden Teil der Eintragungen aus. Die in der übersetzungsnebentabelle
gespeicherten Bits sind nach der gezeigten bevorzugten Ausführungsform die Bits 8, 9, 10, 11, 12 und 16. Um eine
virtuelle Adresse zu übersetzen, wird die übersetzungsnebentabelle
an einer der 64 Adressen angesteuert und die ungerade oder gerade Eintragung ausgewählt. Die übrigen hochwertigen
virtuellen Bits in der von der zentralen Verarbeitungseinheit gelieferten Adresse werden mit den hochwertigen virtuellen Bits,
welche von der Tabelle ausgelesen wurden, verglichen. Bei Gleichheit wird der entsprechende reale Adressenteil von der Tabelle
ausgelesen. Diese reale Adresse wird dann mit der vom Zuordnungsspeicher erhaltenen realen Adresse verglichen, um zu bestimmen,
ob die gewünschten Daten im Pufferspeicher gespeichert sind. Wenn dies nicht der Fall ist, muß ein Zugriff zum Hauptspeicher
durchgeführt werden.
Wenn in der übersetzungsnebentabelle keine Eintragung zu der
gewünschten virtuellen Adresse gefunden wurde, muß die eingangs geschilderte Adressenübersetzung (siehe Fig. 2) durchgeführt
und das Ergebnis in der übersetzungsnebentabelle abgespeichert werden. Zu gleicher Zeit wird nach der bevorzugten Ausführungsform die entsprechende ungerade oder gerade Seite auch übersetzt
(wenn sie gültig ist) und das Ergebnis in der übersetzungsnebentabelle
gespeichert, so daß zwei Übersetzungen zugleich ausgeführt werden.
Weitere Einzelheiten der gezeigten Ausführungsform sind aus Fig. 7 ersichtlich. Die Bits 8-31 der von der zentralen Ver-
PO 971 064 4Q9808/1033
- is - 23326Q3
arbeitungseinheit gelieferten virtuellen Adresse werden auf eine Speichersammelleitung 44 gegeben und damit innerhalb der Datenverarbeitungsanlage
verteilt. Die Bits 13-15 und 17-19 werden zur Adressierung der Übersetzungsnebentabelle 46, welche die
virtuellen Adressenbits 8-12 und 16 gespeichert hat, verwendet. Der Teil der Übersetzungsnebentabelle, welcher Übersetzungen für
gerade virtuelle Adressen enthält, liefert diese virtuellen Adressenbits zu einer Torschaltung 48, während der Teil der Tabelle,
welcher ungeradzahlige virtuelle Adressen enthält, die betreffenden virtuellen Adressenbits an eine Torschaltung 50 liefert.
Wenn das Bit 20 der virtuellen Adresse Null ist, wird die Torschaltung 48 angesteuert und damit die sechs virtuellen Adressenbits
zu einem Vergleicher 52 gesendet. Wenn das Bit 20 Eins ist, wird die Torschaltung 50 geöffnet und kommen die virtuellen
Adressenbits des ungeraden Teiles der Übersetzungsnebentabelle zum Vergleicher 52. Die Bits 8-12 und 16 der virtuellen Adresse
werden auch einem Eingang des Vergleichers 52 zugeführt. Wenn der Vergleicher 52 Gleichheit feststellt, wird ein Signal auf
der Leitung 54 erzeugt. Zur gleichen Zeit, in der ein Zugriff zur Übersetzungsnebentabelle durchgeführt wird, wird auch ein
Zugriff zum Zuordnungsspeicher durchgeführt, indem die Bits 21
bis 26 der von der zentralen Verarbeitungseinheit gelieferten virtuellen Adresse als Zugriffsadresse verwendet werden. Diese
bits der virtuellen Adresse stellen schon eine reale Hauptspeicheradresse dar. Daher ist ihr Gebrauch zur Adressierung des
Zuordnungsspeichers 56 vereinbar mit der Realadressen-Orientierung des Pufferspeichers.
In einer bevorzugten Ausführungsform enthält der Zuordnungsspeicher 128 Worte, wobei in jedem Wort zwei reale Adressen gespeichert
sind. Mit den Bits 21-26 kann deshalb ein Zugriff zu zwei realen Adressen durchgeführt werden. Die Auswahl unter
diesen beiden Adressen wird dadurch getroffen, daß das Ausgangssignal des Zuordnungsspeiehers 56 mit dem Bit 20 der realen
Adresse decodiert wird.
po 971 064 4 0 9808/1033
Wie aus Fig. 7 ersichtlich ist, wird das Bit 20 der virtuellen
Adresse dazu verwendet, eine der beiden Torschaltungen 62 oder 64 zu öffnen und damit eine Auswahl des geraden oder ungeraden
Teils der Übersetzungsnebentabelle zu treffen. Nach dieser Auswahl wird das Bit 20 dem Adressendecoder des ZuordnungsSpeichers
56 zugeführt. Sobald das Bit 20 festgestellt ist, wird eine der beiden realen Adressen des ZuordnungsSpeichers 56 zu einem zugehörigen
Vergleicher 58 oder 60 ausgelesen. Im wesentlichen zur gleichen Zeit wird eine reale Adresse von dem entsprechenden (geraden
oder ungeraden) Teil der Übersetzungsnebentabelle 46 über die Torschaltungen 62 oder 64 (je nachdem ob Bit 20 Null oder
Eins ist) zu einem der Vergleicher 58 oder 60 gebracht. Wenn einer der beiden Vergleicher Gleichheit der Eingangssignale feststellt,
wird vom Codierer 66, je nachdem welcher der beiden Vergleicher Gleichheit festgestellt hat, ein bestimmter Wert
des Bit 19 der realen Adresse zum Pufferspeicheradressenregister 68 übertragen.
Im wesentlichen zur gleichen Zeit wird das Bit 20 der realen Adresse über die Leitung 70 von der Übersetzungsnebentabelle
zum Adressenregister 68 und die Bits 21-28 der realen Adresse übeßdie Leitung 72 von der SpeicherSammelleitung 44 zum Adressenregister
68 gebracht. Die Bits 19-28, welche nunmehr im Speicheradressenregister 68 gespeichert sind, werden nun dazu
verwendet, eines der 1024 Worte, welche im schnellen Pufferspeicher 74 gespeichert sind, zur zentralen Verarbeitungseinheit
zu übertragen. Die Bits 29-31 (die niederwertigen realen Adressenbits) der virtuellen Adresse brauchen nicht dazu verwendet werden,
einen Zugriff zum Pufferspeicher 74 durchzuführen, da in der bevorzugten Ausführungsform jedes Wort im Pufferspeicher
acht Datenbytes enthält, wobei jedes Byte aus acht Datenbits und einem Paritätsbit besteht. Die zentrale Verarbeitungseinheit
verwendet die drei niederwertigen Bits (Bits 29-31) dazu, um eines der acht vom Pufferspeicher ausgelesenen Bytes auszuwählen.
Wenn von keinem der beiden Vergleicher 58 oder 60 Gleichheit PO 971 064 £09808/1033
festgestellt wurde, d.h., wenn die Daten sich nicht im Pufferspeicher
74 befinden, oder wenn der Vergleicher 52 nicht Gleichheit festgestellt hat, d.h., daß eine übersetzung nicht sofort
ohne die zweistufige Obersetzung erhältlich ist, muß die Situation,
wie oben im Zusammenhang mit Fig. 4 beschrieben, behandelt werden.
Wenn im beschriebenen Ausführungsbeispiel Werte angegeben wurden, bedeutet das selbstverständlich nicht, daß die Erfindung auf
Einrichtungen mit z.B. dem gezeigten Adressenformat oder den gezeigten Speichergrößen beschränkt ist. Die Größe des virtuellen
Speichers betrug im beschriebenen Ausführungsbeispiel über 16 Millionen Bytes und 13 Bits der virtuellen Adresse wurden in
zehn Bits einer realen Adresse umgewandelt. Der reale Speicherraum beträgt also etwas über 2 Millionen Bytes.
Selbstverständlich kann auch ein Zugriff zum Pufferspeicher 74 bereits begonnen werden, wenn die Adressenübersetzung und die
Adressenvergleiche noch nicht beendet sind. Der Zugriff zum Pufferspeicher könnte z.B. durch die virtuelle Adresse begonnen
werden, und zwar abhängig vom Resultat der Adressenvergleiche und der Gebrauch der vom Pufferspeicher ausgelesenen Daten könnte
bei nicht erfolgreichem Vergleich verhindert werden. Auch in einem solchen System wäre der Pufferspeicher realadressen-orientiert,
d.h. der Zuordnungsspeicher würde reale Adressen speichern.
Die Wirkungsweise des Ausführungsbeispieles der Erfindung kann wie folgt zusammengefaßt werden.
Der schnelle Pufferspeicher 74 ist realadressen-orientiert. Der Byteteil der virtuellen Adresse, welcher eine reale Speicherstelle
im Hauptspeicher angibt, wird zu einem Zugriff zum Zuordnungsspeicher, welcher reale Hauptspeicheradressen enthält, verwendet,
während zugleich die Segment- und Seitenteile der virtuellen Adresse zu einem Zugriff zur Übersetzungsnebentabelle, welche
die neuesten Übersetzungen von virtuellen Adressen in reale
PO 971 064 4 09808/1033
Adressen enthält, verwendet werden.
Wenn die Übersetzungsnebentabelle bestimmte virtuelle Adressenbits
enthält, welche gleich sind den entsprechenden Bits der gewünschten virtuellen Adresse und wenn die an der adressierten Speicherstelle
der Übersetzungsnebentabelle ausgelesenen realen Adressenbits den aus dem Zuordnungsspeicher ausgelesenen realen Adressenbits gleich
sind, wird die reale Adresse zu einem Zugriff zum Pufferspeicher verwendet.
Wenn die von der Übersetzungsnebentabelle ausgelesenen realen Adressenbits nicht gleich sind den aus dem Zuordnungsspeicher
ausgelesenen realen Adressenbits, bedeutet dies, daß die Daten nicht im Pufferspeicher sind und aus dem Hauptspeicher geholt
werden müssen. Da jedoch die reale Adresse im Hauptspeicher bereits zur Verfügung steht, braucht keine zusätzliche Adressenübersetzung
ausgeführt werden.
Wenn die Übersetzungsnebentabelle keine Adressenbits enthält/ welche den von der zentralen Verarbeitungseinheit gelieferten
virtuellen Adressenbits gleich sind, muß eine übersetzung der virtuellen in eine reale Adresse ausgeführt werden. Ferner
muß das Resultat der übersetzung in der Übersetzungsnebentabelle abgespeichert, ein Zugriff zu den Daten ausgeführt und die
Daten im Pufferspeicher abgespeichert werden.
Damit können die systematischen Nachteile der bekannten Einrichtungen
verhindert werden und wird ferner erreicht, daß die reale Adresse bereits ohne übersetzung zur Verfügung steht, wenn
eine Datenübertragung notwendig wird.
971 O64 4 09 8 08/1033
Claims (4)
- PATENTANSPRÜCHEVirtuelle Speichereinrichtung/ worin Daten von einer zentralen Verarbeitungseinheit durch eine virtuelle Adresse angefordert werden, die aus einem virtuellen und einem realen Teil besteht/ mit einem durch reale Adressen adressierten Hauptspeicher/ mit einer Einrichtung zur dynamischen übersetzung der virtuellen Adressen in die realen Hauptspeicheradressen/ wobei ZuordnungstabeIlen im Hauptspeicher verwendet werden, sowie mit einer schnell zugreifbaren und bei jeder Anforderung adressierten Übersetzungsnebentabelle, dadurch gekennzeichnet, daß Zugriffe der zentralen Verarbeitungseinheit (CPU) nicht zum Hauptspeicher, sondern zu einem schnellen Pufferspeicher (74) erfolgen,daß ein Zuordnungsspeicher (56) vorgesehen ist, der für die in Pufferspeicher vorhandenen Daten eine reale Adressenangabe speichert, daß der Zuordnungsspeicher durch reale Adressenbits der virtuellen Adresse adressiert wird,daß die Übersetzungsnebentabelle (46) durch virtuelle Adressenbits der virtuellen Adresse adressiert wird und die ausgelesene übersetzte reale Adresse mit der vom Zuordnungsspeicher ausgelesenen realen Adresse verglichen wird,und daß bei Gleichheit der Zugriff zum Pufferspeicher ausgeführt wird.
- 2. Einrichtung nach Anspruch 1, dadurch gekennzeichnet, daß zum Adressieren der Übersetzungsnebentabelle (46) nur ein Teil der virtuellen Adressenbits (13-15, 17-19) verwendet wird und der restliche Teil (VIR 8-12, 16 zusammen mit der dazugehörigen realen Adresse (REAL 11-20) in der Übersetzungsnebentabelle gespeichert ist und daß dieser restliche Teil auch ausgelesen und mit den entsprechenden Bits der virtuellen Adresse verglichen wird,po 971 064 4098Q8/1033wobei der Zugriff zum Pufferspeicher (74) nur bei Gleichheit ausgeführt wird (VGL 52, Signal 54).
- 3. Einrichtung nach Anspruch 2, dadurch gekennzeichnet, daß die Übersetzungsnebentabelle (46) in einen Teil (GER) für geradzahlige Seiten und einen Teil (UNGER) für ungeradzahlige Seiten unterteilt ist, wobei Torschaltungen (48, 62, 50, 64) vorgesehen sind, welche das Auslesen eines der beiden Teile vom Wert des niedrigsten virtuellen Adressenbits (20) abhängig machen und daß bei einer notwendigen übersetzung einer virtuellen Adresse in eine reale Adresse zugleich die übersetzung der entsprechenden benachbarten Seite in der Übersetzungsnebentabelle in der gleichen Speicherstelle aufgenommen wird.
- 4. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß auch der Zuordnungsspeicher (56) in zwei Teile unterteilt ist, wobei die Auswahl eines der beiden Teile durch das niederste Bit der in der Übersetzungsnebentabelle (46) gespeicherten realen Adresse erfolgt und die beiden Teile zu zwei zugehörigen Vergleichern (58, 60) ausgelesen werden, und daß ein Codierer (66) vorgesehen ist, der ein zusätzliches Adressenbit zur Adressierung des Pufferspeichers(74) erzeugt, dessen Wert davon abhängt, welcher Vergleicher ein Gleichheitssignal liefert.064 409808/1033VtLeerseite
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US00274771A US3829840A (en) | 1972-07-24 | 1972-07-24 | Virtual memory system |
US27477172 | 1972-07-24 |
Publications (3)
Publication Number | Publication Date |
---|---|
DE2332603A1 true DE2332603A1 (de) | 1974-02-21 |
DE2332603B2 DE2332603B2 (de) | 1974-11-21 |
DE2332603C3 DE2332603C3 (de) | 1977-02-24 |
Family
ID=
Also Published As
Publication number | Publication date |
---|---|
DE2332603B2 (de) | 1974-11-21 |
FR2237549A5 (de) | 1975-02-07 |
US3829840A (en) | 1974-08-13 |
CA989521A (en) | 1976-05-18 |
JPS4953339A (de) | 1974-05-23 |
IT988998B (it) | 1975-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2227882C2 (de) | Virtuelle Speicheranordnung | |
DE2235841C2 (de) | Datenverarbeitungsanlage mit Speichersteuerung für mindestens einen Prozessor und diesen zugeordneten Pufferspeichern | |
DE4410060B4 (de) | Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse | |
DE3011552C2 (de) | ||
DE2260353C2 (de) | Schaltungsanordnung für die Adressenumsetzung in einer Datenverarbeitungsanlage | |
DE2226382C3 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
DE2455047C2 (de) | Datenverarbeitungssystem mit einem Informationsspeicher | |
DE2231146C3 (de) | Datenverarbeitungsanlage mit virtueller Adressierung | |
EP0013737B1 (de) | Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem | |
DE2131066C3 (de) | Anordnung zum Adressieren eines Tabellenspeichers | |
DE1956604C3 (de) | Datenverarbeitungsanlage | |
DE3151745C2 (de) | ||
DE2302074A1 (de) | Speicherschutzanordnung in einem multiprozessorsystem | |
DE2346525A1 (de) | Virtuelle speichereinrichtung | |
DE2230266A1 (de) | Datenverarbeitungsanlagen mit einer zentraleinheit unter verwendung virtueller adressierung | |
DE2241257B2 (de) | Datenverarbeitende Anlage | |
DE2726488A1 (de) | Adressenuebersetzungseinrichtung | |
DE2856133A1 (de) | Verarbeitungssystem fuer einen assoziativspeicher | |
DE3833933A1 (de) | Informationsverarbeitungseinrichtung mit einer adressenerweiterungsfunktion | |
DE3618163A1 (de) | Speicher-management fuer ein mikroprozessorsystem | |
DE2939411C2 (de) | Datenverarbeitungsanlage mit virtueller Speicheradressierung | |
DE1574502B2 (de) | Assoziativspeicher | |
CH495584A (de) | Datenverarbeitungsanlage | |
DE2332603C3 (de) | Virtuelle Speichereinrichtung mit zusätzlichem Pufferspeicher | |
DE2355814C2 (de) | Kanalzugriffseinrichtung für eine hierarchische Speicheranordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C3 | Grant after two publication steps (3rd publication) | ||
E77 | Valid patent as to the heymanns-index 1977 | ||
8339 | Ceased/non-payment of the annual fee |