DE4022885C2 - Verfahren zum Verschieben von Speicherbereichen und Hierarchie-Speichersystem - Google Patents
Verfahren zum Verschieben von Speicherbereichen und Hierarchie-SpeichersystemInfo
- Publication number
- DE4022885C2 DE4022885C2 DE4022885A DE4022885A DE4022885C2 DE 4022885 C2 DE4022885 C2 DE 4022885C2 DE 4022885 A DE4022885 A DE 4022885A DE 4022885 A DE4022885 A DE 4022885A DE 4022885 C2 DE4022885 C2 DE 4022885C2
- Authority
- DE
- Germany
- Prior art keywords
- address
- memory
- block
- data
- cache
- 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
Links
- 238000000034 method Methods 0.000 title claims description 72
- 230000008569 process Effects 0.000 claims description 55
- 230000008859 change Effects 0.000 claims description 43
- 230000009471 action Effects 0.000 description 12
- 238000013519 translation Methods 0.000 description 11
- 238000011835 investigation Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
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/1063—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 virtually addressed
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
Die Erfindung betrifft ein Verfahren nach Anspruch 1 zum Verschieben von
Speicherbereichen und ein Hierarchie-Speichersystem nach Anspruch 6.
Viele der existierenden großen Computer sind mit einer Übersetzungstabelle,
die relatives Adressenregister genannt wird, zum Übersetz einer logischen
Adresse in eine physikalische Adresse ausgestattet und können jede vorbestimmte
Teileinheit eines absoluten Adressenraums einem willkürlichen
physikalischen Speicherelement zuordnen. Dieses Merkmal ist beispielsweise
zum Beibehalten von Speichereinheiten nützlich. Im allgemeinen kann das
relative Adressenregister nur geändert werden, während ein System nicht
arbeitet.
Aus DE-OS 38 32 912 A1 ist eine Arbeitsstation mit virtueller Adressierung
bekannt, bei der ein Rückschreib-Cache als eine Systemkomponente verwendet
wird. Bei dieser Lösung müssen nachteilig alle ausgewählten Datenblöcke
aus dem Cache entfernt werden, bevor eine neue Adressenzuordnung
erfolgen kann.
Wenn man ein relatives Adressenregister ändern will, während das System
arbeitet, sind folgende Schritte notwendig, um irgendeinen Fehlbetrieb zu
verhindern: zuerst wird ein Zugriff auf einen Speicher zeitweise gestoppt,
dann werden physikalische Adressen geändert und Speicherdaten werden von
alten physikalischen Adressen zu neuen physikalischen Adressen übertragen,
woraufhin ein Zugriff zu dem Speicher neu gestartet wird.
Eine derartige frühere Technologie ist auch in der japanischen Patentveröffentlichung
Nr. 21222/1988 und in der japanischen Patent-Offenlegungsschrift
Nr. 290550/1986 offenbart.
Bei dem voranstehend genannten Stand der Technik ist es während eines
Verschiebens der gespeicherten Daten unter Ändern der physikalischen
Adressen notwendig, den Zugriff zu dem Speicher zu stoppen. Während
dieser Zeit würde daher der Betrieb eines Gerätes, das den Speicher benutzt,
gestoppt werden.
Bei einigen Gerätetypen besteht auch das Problem, daß die Antwortgeschwindigkeit
des Speichers aufgrund dieses Anhaltens erniedrigt werden
würde.
Es ist daher Aufgabe dieser Erfindung, ein Verfahren zum Verschieben von
Speicheradressen in einem Hauptspeicher und ein Hierarchie-Speichersystem
zu schaffen, wobei die Zeitspanne, während der das Speichersystem für
Speicheroperationen außer Betrieb gesetzt ist, möglichst gering ist.
Diese Aufgabe wird mit dem im Patentanspruch 1 angegebenen Verfahren
und dem im Patentanspruch 6 angegebenen Hierarchie-Speichersystem gelöst.
Weitere vorteilhafte Weiterbildungen der Erfindung sind in den Patentansprüchen
2 bis 5 angegeben.
In der Beschreibung bedeutet der Ausdruck "absolute Adresse" eine
Adresse, die mit einer physikalischen Adresse eines Speichers durch die
Adressenübersetzungseinrichtung, d. h. das relative Adressenregister, verbunden
werden muß, und die beispielsweise in einem großen Computer
durch Übersetzen einer virtuellen Adresse mit einem bekannten dynamischen
Adressenübersetzungsmechanismus zu erhalten ist, um eine reale Adresse zu
erhalten, und danach durch Durchführen einer bekannten vorangestellten
Übersetzung der realen Adresse. Bei einem System ohne vorangestellte
Übersetzung ist eine reale Adresse selbst eine logische Adresse.
Im Betrieb ist der Cachespeicher ein Speicher geringer Kapazität und mit
hoher Geschwindigkeit, der eine Kopie eines Teils eines Speichers (z. B.
eines Hauptspeichers) speichern kann, um eine effektive Geschwindigkeit
eines Holens von und eines Speicherns in den Speicher durch ein Hostgerät
(z. B. eine zentrale Prozeßeinheit) zu verbessern. Wenn ein Ziel, auf das
während des Zugriffs des Speichers zugegriffen werden soll, in dem Cachespeicher
existiert, kann auf den Cachespeicher anstelle des Speichers zugegriffen
werden. Mit diesem Merkmal des Cachespeichers ersonnen die
Erfinder, daß durch Benutzen eines Cachespeichers ein Verschieben eines
Speichers durchgeführt werden kann, während das System arbeitet. Insbesondere
um die Speicherneuadressierung durchzuführen, werden Daten des
Bereichs physikalischer Adressen eines Ziels, die neu zu adressieren sind,
in einen Block des Cachespeichers geholt, und dann werden den logischen
Adressen, denen die alten physikalischen Adressen zugeordnet worden sind,
neue physikalische Adressen des Speichers zugeordnet. Als Einrichtung zum
Ändern dieser Zuordnung von Adressen kann bisher eine Adressenübersetzungseinrichtung
(z. B. das zuvorgenannte relative Adressenregister), die eine
logische Adresse mit einer physikalischen Adresse verbindet, benutzt werden,
um seinen Inhalt dynamisch zu ändern.
Da vor einem Ändern einer physikalischen Adresse die Daten in einem
Quellenbereich, der neu zu adressieren ist, nämlich Daten in dem Adressenbereich,
der ein Ziel zum Ändern der physikalischen Adressen ist, die
zugeordnet werden müssen, in bestimmte abslolute Adressen in den Cachespeicher
geholt werden, ist das Lesen/Schreiben der in dem Zieladressenbereich
gespeicherten Daten erlaubt, der neu adressiert werden muß, sogar
während der Änderung der physikalischen Adresse, und zwar durch Benutzen
von Daten, die in dem Cachespeicher gespeichert sind. Während des Verschiebens
bzw. Neuadressierens ist es nicht nötig, ein Lesen/Schreiben zu
verbieten oder normale Prozesse zu verzögern. Um die Speicherneuadressierung
zu beenden, ist es notwendig, die Zieldaten, die in einen Block des
Cachespeichers geholt sind, zurück in den Bestimmungsadressenbereich des
Speichers zu schreiben. Dieses Rückschreiben kann gemäß einem Vertauschungsalgorithmus
des Cachespeichers durchgeführt werden, wenn der Block
als Ziel einer Vertauschung gewählt worden ist. Aus diesem Grund ist es
vorzuziehen, einen Cachespeicher zu verwenden. Der Cachespeicher hat ein
Änderungsbit in jedem Block, und zwar zum Halten einer Information (die
anzeigt, daß der Inhalt geändert worden ist) darüber, ob der Inhalt eines
Blocks verschieden ist von dem Inhalt eines Speichers oder nicht. Beim
Neuadressieren, wenn die Zieldaten in einem bestimmten Block geholt sind,
wird ein Änderungsbit, das mit einem Block verbunden ist, dazu veranlaßt,
in einem "geänderten" Zustand zu sein. Danach, wenn der Block ein Ziel
für eine Vertauschung ist, wird der Inhalt des Blocks automatisch in einen
neuen physikalischen Adressenbereich des Speichers zurückgeschrieben werden.
Daher endet ein Verschiebungsprozeß praktisch bei der Stufe, wo Daten
in dem Zieladressenbereich, der neu adressiert werden muß, in den Cachespeicher
geholt worden sind, um das Änderungsbit und die physikalischen
Adressen zu ändern. Eine aktive Übertragung von Daten von einem alten
physikalischen Adressenbereich zu einem neuen physikalischen Adressenbereich,
der bei dem Stand der Technik nötig war, wird nämlich nicht mehr
nötig sein.
Wenn die Teilspeichereinheit, nämlich eine neuadressierbare Einheit, größer
ist als ein Block des Cachespeichers, werden die Inhalte vieler Blöcke in
der Teilspeichereinheit aufeinanderfolgend zu dem Cachespeicher übertragen.
Beim Übergang während dieser Neuadressierung ändert sich der physikalische
Adressenbereich, der damit zu verbinden ist, in Abhängigkeit davon, ob
Zugriffsadressen zu einem nicht neuadressierten Block oder einem neuadressierten
Block zugeteilt werden, auch wenn sie zu einer Teilspeichereinheit
eines gemeinsamen absoluten Adressenbereichs zugeteilt werden.
Begleitet von einer Neuadressierung für jeden Block, wird die Grenze
logischer Adressenbereiche vor und nach einer Neuadressierung aufeinanderfolgend
aktualisiert, und eine Entscheidung wird darüber getroffen, auf
welcher Seite der Grenze eine Zugriffsadresse angeordnet ist, und eine alte
physikalische Adresse oder eine neue physikalische Adresse wird gemäß
diesem Entscheidungsergebnis ausgewählt und ausgegeben. Als Folge davon
ist es möglich, die gesamte Teilspeichereinheit neu zu adressieren, auch
wenn die Teilspeichereinheit größer als die Blockkapazität des Cachespeichers
ist.
Wie oben beschrieben ist, ist es gemäß dieser Erfindung möglich, mit den
Daten, die in den Cachespeicher geholt sind, in bezug auf den Bereich zu
lesen/schreiben, der neuadressiert ist, auch während eines Durchführens einer
Verschiebung bzw. Neuadressierung von in einem Hauptspeicher gespeicherten
Daten. Daher wird, verglichen mit dem Stand der Technik, weniger Zeit
benötigt, während der der Betrieb eines Programmlaufs für ein Neuadressieren
gestoppt wird. Da die Daten, die neuadressiert werden müssen, in einem
Hierarchie-Speichersystem übertragen werden, ist zusätzlich die Verarbeitungszeit
kurz.
Da, verglichen mit dem Stand der Technik, die Funktion eines Hostgeräts,
das ein Speichersystem benutzt, darüber hinaus nur weniger häufig
benutzt wird für das Übertragen von Daten, die neuadressiert werden müssen,
wird dies nicht die ursprüngliche Arbeit des Hostgeräts verhindern.
Sogar in einem Speicher, der eine Adressenfolge der Adressenübersetzungseinrichtung
benutzt, deren Zuordnungsadresseneinheit größer ist als die
Kapazität eines Cachespeicherblocks, ist eine Quantität der Hardware, die für
die obigen Effekte erforderlich ist, kleiner, verglichen mit dem Verfahren
nach dem Stand der Technik, wonach die Kapazität der Adresseneinheit
erhöht wird, um die Größe der Teilspeichereinheit zu verringern.
Weitere Vorteile, Merkmale und Anwendungsmöglichkeiten der vorliegenden
Erfindung ergeben sich aus den Unteransprüchen und aus der nachfolgenden
Beschreibung von Ausführungsbeispielen in Verbindung mit der Zeichnung.
Fig. 1 ist ein Blockdiagramm eines Hierarchie-Speichersystems gemäß
einem ersten Ausführungsbeispiel dieser Erfindung;
Fig. 2 ist ein Blockdiagramm eines weiteren Hierarchie-Speichersystems
gemäß einem zweiten Ausführungsbeispiel;
Fig. 3 ist ein Diagramm, das die Beziehung zwischen einem absoluten
Adressenraum und einem physikalischen Adressenraum eines Hauptspeichers
bei dem zweiten Ausführungsbeispiel zeigt;
Fig. 3B ist ein Diagramm ähnlich dem aus der Fig. 3A, das die Beziehung
zwischen einem absoluten Adressenraum und einem physikalischen
Adressenraum eines Hauptspeichers bei dem zweiten Ausführungsbeispiel
zeigt;
Fig. 4A bis 4D sind jeweils Flußdiagramme, die verschiedene Prozesse des ersten
Ausführungsbeispiels zeigen; und
Fig. 5A und 5B sind Flußdiagramme, die jeweils zwei Prozesse des zweiten Ausführungsbeispiels
zeigen.
Fig. 1 zeigt ein Hierarchie-Speichersystem gemäß einem ersten Ausführungsbeispiel
dieser Erfindung. In der folgenden Beschreibung sind die Parameter
N, B und U natürliche Zahlen.
Das Hierarchie-Speichersystem des ersten Ausführungsbeispiels weist ein
Adressenregister 1, ein Speicherflag 2, ein Neuadressierungsflag 3, ein
Speicherdatenregister 4, ein Datenholregister 5, einen Cachespeicher 20,
einen Adressenübersetzer 50 und einen Hauptspeicher 80 auf.
Das Adressenregister 1 ist ein N-Bit-Register zum Einstellen einer logischen
Adresse von deren Stelle ein Wort gelesen wird oder in den ein Wort
eingeschrieben wird. Das Hierarchie-Speichersystem kann drei Arten von
Anfragen beantworten, d. h. eine Holanfrage, eine Speicheranfrage und eine
Neuadressierungsanfrage; das Speicherflag 2 und das Verschiebungs- bzw.
Neuadressierungsflag 3 sind Flags zum Auswählen einer Anfrage aus den
obigen drei Anfragen. Das Speicherflag 2 ist "0" in den Fällen der Holanfrage
und der Speicheranfrage, und "1" in dem Fall der Neuadressierungsanfrage.
Weiterhin ist das Neuadressierungsflag 3 "1" in dem Fall einer
Neuadressierungsanfrage und "0" in den übrigen Fällen. Das Speicherdatenregister
4 ist ein Register zum Einstellen von Daten von zu speichernden
Worten. Das Datenholregister 5 ist ein Register zum Einstellen geholter
Daten.
Der Cachespeicher 20 enthält eine Datenfolge 23 zum Speichern einer Vielzahl
von Blöcken von je 2B Worten, eine Änderungsbitfolge 22 mit einer Vielzahl
von Positionen, die den Positionen der Datenfolge 23 entsprechen, eine
Steuerschaltung 21 zum Erzeugen von Steuersignalen an diesen einen Teil
bildenden Elementen, Gatter 26 bis 30 und Auswahlvorrichtungen 24 und
25; der Cachespeicher 20 gibt ein Adressensignal 6 und ein Neuadressierungssignal
7 und ein Datenschreibsignal 8 aus, und empfängt ein Datenlesesignal
9 von dem Hauptspeicher 80.
Der Adressenübersetzer 50 ist das oben beschriebene relative Adressenregister
und führt eine Adressenübersetzung für jede Hauptspeicherteileinheit
derselben Größe wie die Cacheblöcke bei diesem Ausführungsbeispiel durch
und übersetzt eine absolute Adresse des Adressensignals 6 in eine physikalische
Adresse, um die letztere als ein Adressensignal 10 zu dem Hauptspeicher
80 zu geben. In Antwort auf das Neuadressierungssignal 7 wird
eine Neuadressierung einer Hauptspeicherteileinheit durchgeführt.
Der Hauptspeicher 80 hat eine Speicherkapazität von 2N Worten, gibt
während des Lesens als ein Datenlesesignal 9 Daten des durch das Adressensignal
10 bestimmten Blocks aus, und speichert Daten eines Datenschreibsignals
während des Speicherns in den durch das Adressensignal 10
bestimmten Block.
Wenn Blockdaten, die an einer Position gespeichert sind, verschieden von
Daten des entsprechenden Blocks in dem Hauptspeicher 80 sind, wird in
dem Datenfeld 23 die Position der Änderungsbitfolge 22, die mit dem Block
verbunden ist, "1" sein. Wenn sie gleich sind, wird jene Position "0" sein.
Ein Speichern in die Änderungsbitfolge 22 wird durch ein Änderungsbitsignal
37 und ein Schreibsignal 38 gesteuert. Wenn das Schreibsignal 38 in "1"
umgewandelt wird, wird der Wert des Änderungsbitsignals 37 an der durch
ein Positionsauswahlsignal 31 bestimmten Position gespeichert werden. Die
Steuerschaltung 21 hält logische Adressen der Blöcke, die an jeder Position
des Datenfeldes 23 gespeichert sind. Das Datenfeld 23 ermöglicht ein
Lesen/Schreiben eines ganzen Datenblocks, der dem Block entspricht, der an
der durch das Positionsauswahlsignal 31 bestimmten Position gespeichert ist,
und es ermöglicht auch ein Lesen/Schreiben eines Wortes in den Block. Die
Auswahlvorrichtung 24 wählt in dem Datenfeld 23 einzugebende Daten aus.
Die Auswahlvorrichtung 25 wählt in das Datenholregister 5 einzugebende
Daten aus. Ein ODER-Gatter 26, ein UND-Gatter 27 und ein ODER-Gatter
28 bilden gemeinsam eine Schaltung zum Steuern des Aktualisierens der
Änderungsbitfolge 22.
Ein ODER-Gatter 29 und ein UND-Gatter 30 steuern einen Neuadressierungs-
bzw. Verschiebungsprozeß in einem Adressenübersetzer 50.
Der Adressenübersetzer 50 enthält ein Adressenfeld 51 und ein physikalisches
Adressenregister 52. Die Adressenfolge 51 ist ein RAM zum Speichern einer
Adressenzuordnungsinformation an jeder Position, und zwar mit oberen (N-B) Bits
der logischen Adresse, die als eine Zugriffsadresse vorgesehen ist. Das physikalische
Adressenregister 52 speichert eine Adressenzuordnungsinformation, die nach
einer Neuadressierung bzw. Verschiebung zu einer Hauptspeicherteileinheit gegeben
werden muß. Die Hauptspeicherteileinheit ist eine minimale Einheit des
Hauptspeichers, der durch den Adressenübersetzer 50 verschiebbar ist.
Die Adressenzuordnungsinformationen sind obere (N-B) Bits einer physikalischen
Adresse. Die physikalische Adresse kann durch Verbinden der Adressenzuordnungsinformation
mit dem unteren B Bit der logischen Adresse erhalten werden.
Nimmt man an, daß der Wert des Verschiebungssignals 7 in "1" umgewandelt wird,
wird darüber hinaus der Inhalt des physikalischen Adressenregisters 52 in die
Position des Adressenfeldes gespeichert, die durch das Adressensignal 6 bestimmt ist,
so daß es möglich ist, den Ort der entsprechenden Hauptspeicherteileinheit zu
verändern. Diese Adressenübersetzungsaktion selbst ist in Verbindung mit dem
relativen Adressenregister bekannt, aber der Adressenübersetzer 50 hat eine zusätzliche Funktion zum
Aktualisieren der Position gemäß dem physikalischen Adressenregister 52 und dem
Verschiebungssignal 7.
Die Verbindung zwischen dem Datenfeld 23, der Hauptspeicherteileinheit, dem
Adressenfeld 5, dem Hauptspeicher 80, usw. bei diesem Ausführungsbeispiel wird
in Fig. 3A gezeigt. Die Positionszahl des Datenfeldes 23 ist für eine vereinfachte Darstellung in Fig. 3A "3",
sie ist aber in Wirklichkeit größer. In Fig. 3A ist z. B. ein
Block 91 des Datenfeldes 23 mit einem Block 93 des absoluten Adressenraums
verbunden, und dieser Block 91 wird der Reihe nach mit einem Block 95 des
Hauptspeichers 80 durch den Adressenübersetzer 50 verbunden. Wenn der Block
93 des absoluten Adressenraums von dem Block des Hauptspeichers 80 in einen
Block 97 verschoben werden muß, werden die Daten des Blocks 95 in einen Block
91 des Cachespeichers 20 gelesen, während das entsprechende Änderungsbit
veranlaßt wird, "1" zu sein. Auch der Inhalt der Position 94 des Adressenfeldes
51 in dem Adressenübersetzer 50, bei dem die Position dem Block 93 der logischen
Adresse entspricht, wird wieder in eine physikalische Adresse geschrieben, die mit
einem neuen Block 97 verbunden ist, und so wird eine Neuadressierung bzw.
Verschiebung erreicht. Anschließend, wenn der Block 91 des Cachespeichers
20 als ein Ziel für eine Verschiebung ausgewählt ist, werden die Daten des Blocks
91 in den Block 97 des Hauptspeichers 80 eher als in den Block 95 zurückgeschrieben.
Drei Anfrageprozesse, d. h. die Holanfrage, die Speicheranfrage und die Neuadressierungs- bzw. Verschiebungsanfrage, werden beschrieben.
Als erstes wird ein Blockholprozeß beschrieben, der bei diesen drei
Anfragen gemeinsam durchgeführt werden muß. Dann werden der Holprozeß, der
Speicherprozeß und der Verschiebungsprozeß beschrieben. Die drei
Prozesse, d. h. der Blockholprozeß, der Holprozeß und der Speicherprozeß bilden
gemeinsam einen Algorithmus eines sogenannten Caches.
Fig. 4A ist ein Flußdiagramm des Blockholprozesses. Wenn ein Blockholen
durchgeführt werden muß, wählt die Steuerschaltung 21 eine geeignete Position des
Datenfeldes 23 (S11) aus, um den zu holenden Block zu speichern, und sie
untersucht (S12), ob die Position der Änderungsbitfolge 22, die der gewählten
Position entspricht, "1" ist oder nicht. Wenn die Position "1" ist, wird eine
Blockzurückschreibaktion durchgeführt, um die an der Position gespeicherten
Blockdaten zu sichern. Die Blockzurückschreibaktion legt eine logische Adresse,
die mit dem Block verbunden ist, über die Auswahlvorrichtung 34 an den
Adressenübersetzer 50, übersetzt die logische Adresse über den Adressenübersetzer
50 in eine physikalische Adresse und sendet die physikalische Adresse zu dem
Hauptspeicher 80 (S13). Nachdem Daten des Blocks von dem Datenfeld 23 gelesen
sind und als ein Datenschreibsignal 8 zu dem Hauptspeicher 80 gesendet wird,
wird ein Speicherbefehl zu dem Hauptspeicher 80 gegeben, um die Blockdaten
zurück zu dem Hauptspeicher 80 zu schreiben (S14).
Dann wählt die Auswahlvorrichtung 34 den Ausgang des Adressenregisters 1 aus,
um denselben Ausgang als ein Adressensignal 6 auszugeben, während die
Steuerschaltung 21 dem Hauptspeicher 80 befiehlt, den Block zu lesen. Danach
wird die Position des Adressenfeldes 51 gelesen, wobei die Position mit der in dem
Adressenregister 1 gespeicherten logischen Adresse verbunden ist, und sie
wird als ein Adressensignal 10 zusammen mit einem unteren B Bit der absoluten
Adresse ausgegeben (S15). Der Block in dem Hauptspeicher 80, der durch das
Adressensignal bestimmt ist, wird als Lesedaten gelesen (S16). Die als ein
Datenlesesignal 9 von dem Hauptspeicher 80 erhaltenen Daten werden über die
Auswahlvorrichtung 24 an der gewählten Position der Datenfolge 23 gespeichert
(S17).
Wenn alle Daten des Blocks an der gewählten Position gespeichert sind, veranlaßt
die Steuerschaltung 21 das Holbeendigungssignal 36 "1" zu sein. Durch die Aktion
des ODER-Gatters 28 wird das Schreibsignal 38 "1" sein. Die Änderungsbitfolge
23 speichert (S18) den Wert des Änderungsbitsignals 37 an der Position, die durch
das Positionsauswahlsignal 31 gewählt ist. Der Wert des Änderungsbitsignals 37
ändert sich in Abhängigkeit von der Anfrage, die verarbeitet werden muß. In
dieser Art ist der Blockholprozeß beendet worden.
Fig. 4B ist ein Flußdiagramm des Holprozesses. Die Holanfrage stellt in dem
Adressenregister 1 eine logische Adresse des zu lesenden Wortes ein, und sie
stellt auch eine "0" sowohl bei dem Speicherflag als auch bei dem Verschiebungsflag 3 ein,
woraufhin ein Operationsbefehl befiehlt, den Holanfrage-Prozeß zu beginnen (S21).
Dann wird eine Untersuchung durchgeführt (S22), ob die Daten des Wortes, das
durch das Adressenregister 1 bestimmt ist, in dem Cachespeicher
20 gespeichert sind oder nicht. Wenn sie gespeichert sind, gibt die Steuerschaltung
21 das Positionsauswahlsignal 31 aus, das die Position, die die Daten enthält, mit
einem in eine "1" umgewandelten Treffersignal 35 bestimmt. Das Datenfeld 23 gibt
dann das als das Blockdatensignal 32 Daten des Blocks aus, der durch das
Positionsauswahlsignal 31 bestimmt ist (S23). Die Auswahlvorrichtung 25 wählt aus
dem Blockdatensignal 32 Daten des Wortes aus, das durch das Adressenregister
1 bestimmt ist und speichert die ausgewählten Daten in dem Datenholregister 5
(S24).
Wenn die Daten in dem Schritt S22 nicht gespeichert sind, wird der oben
beschriebene Blockholprozeß durchgeführt (S25). Die Auswahlvorrichtung 25 wählt
aus den Blockdaten, die als das Datenlesesignal 9 enthalten sind, Daten des
Wortes aus, das durch das Adressenregister 1 bestimmt ist, und speichert die
ausgewählten Daten in dem Datenholregister 5 (S26). Da sowohl das Speicherflag
2 und das Verschiebungsflag bzw. Neuadressierungsflag 3 "0" sind, ist darüberhinaus
das Änderungsbitsignal 37 "0". Demgemäß wird als das Ergebnis des Blockholprozesses
eine "0" in die Position der Änderungsbitfolge 22 gespeichert, deren
entsprechende Position der Datenfolge die Blockdaten geladen hat, und prägt sich
so ein, daß der Inhalt des Blocks, der in dem Cachespeicher 20
gespeichert ist, mit dem Inhalt des Blocks übereinstimmt, der in dem Hauptspeicher
gespeichert ist. Auf diese Art ist der Holprozeß beendet worden.
Fig. 4C ist ein Flußdiagramm eines Speicherprozesses. Die Speicheranfrage stellt
in dem Adressenregister 1 eine absolute Adresse des zu lesenden Wortes ein, und
sie stellt auch die gespeicherten Daten in dem Datenspeicherregister 4 ein und
stellt eine "1" und "0" jeweils in dem Speicherflag 2 und dem Verschiebungsflag
3 ein, woraufhin ein Operationsbefehl ausgegeben wird, um den Speicherprozeß zu
beginnen (S31).
Dann wird eine Untersuchung durchgeführt (S32), ob die Daten des Wortes, das
durch das Adressenregister 1 bestimmt ist, in dem Cachespeicher
20 gespeichert sind oder nicht. Wenn sie gespeichert sind, gibt die Steuerschaltung
21 ein Signal als das Positionsauswahlsignal 31 aus, das die Position bestimmt, in
der die Daten gespeichert sind, und sie gibt auch eine "1" als das Treffersignal
35 aus. Die Auswahlvorrichtung 24 wählt den Ausgang des Datenspeicherregisters
4 aus und sendet den gewählten Ausgang zu dem Datenfeld 23. Wie oben
beschrieben ist, sind Daten des durch das Adressenregister 1 bestimmten Wortes
in dem Block enthalten, der an der durch das Positionsauswahlsignal 31
bestimmten Position gespeichert ist, und das Datenfeld 23 ersetzt die Daten mit
den durch die Auswahlvorrichtung 24 ausgegebenen Daten (S34). In der Zwischenzeit
wird das Änderungsbitsignal 34 durch die Wirkung des ODER-Gatters 26 "1" sein,
und sowohl das UND-Gatter 27 als auch das ODER-Gatter 28 werden dazu
dienen, ein Schreibsignal 38 in eine "1" umzuwandeln. Deshalb wird eine "1" an
der Position gespeichert, die durch das Positionsauswahlsignal 31 der Änderungsbitfolge
22 bestimmt ist (S35). Auf diese Art ist der Speicherprozeß beendet
worden.
Bei dem Schritt 32 wird, wenn die Daten des Wortes, das durch das Adressenregister
1 bestimmt ist, nicht in dem Cachespeicher 20 gespeichert
sind, der oben beschriebene Blockholprozeß durchgeführt werden (S33). Zu jener
Zeit wird, da der Inhalt des Speicherflags 2 "1" ist, der Wert des Änderungsbitsignals
37 durch die Wirkung des ODER-Gatters 26 "1" werden.
Als das Ergebnis des Blockholprozesses wird eine "1" an der Position der
Änderungsbitfolge 22 gespeichert, und zwar bei der Datenfolgeposition, entsprechend
der die Datensicherung durchgeführt wird, woraufhin derselbe Prozeß wie
in dem Fall durchgeführt wird, bei dem das bestimmte Wort in dem
Cachespeicher 20 gespeichert wird, wodurch der Speicherprozeß
beendet wird.
Fig. 4D ist ein Flußdiagramm eines Verschiebungsprozesses. Die Verschiebungsanfrage
stellt in dem Adressenregister 1 eine führende oder erste Adresse des zu
verschiebenden Blocks ein und stellt auch eine "0" und eine "1" jeweils in dem
Speicherflag 2 und dem Verschiebungsflag 3 ein, woraufhin ein Operationsbefehl
ausgegeben wird, um den Verschiebungsprozeß zu beginnen (S41). Daraufhin wird
eine Untersuchung durchgeführt (S42), ob Daten des durch das Adressenregister
1 bestimmten Wortes in dem Cachespeicher 20 gespeichert sind
oder nicht. Wenn sie gespeichert sind, gibt die Steuerschaltung 21 ein Signal als das
Positionsauswahlsignal 31 aus, das die Position bestimmt, an der die
Daten gespeichert werden, und sie gibt auch eine "1" als das Treffersignal 35 aus.
Da der Inhalt des Verschiebungsflags "1" ist, wird darüber hinaus der Wert des
Änderungsbitsignals 37 durch die Wirkung des ODER-Gatters 26 "1" werden. Da
sowohl die Werte des Treffersignals 35 und des Änderungsbitsignals 37 "1" sind,
wird in der Zwischenzeit das Schreibsignal durch die Wirkung des UND-Gatters
27 und des ODER-Gatters 28 "1" werden, so daß eine "1" an der Position
gespeichert werden wird, die durch das Positionsauswahlsignal 31 der Änderungsbitfolge
22 bestimmt ist (S46). Zu jener Zeit wird das Verschiebungssignal 7 durch
die Wirkung des ODER-Gatters 29 und des UND-Gatters 30 in eine "1"
umgewandelt (S44). Wenn das Verschiebungssignal 7 "1" wird, speichert die
Adressenfolge 51 den Inhalt des physikalischen Adressenregisters 52 in die Position
der Adressenfolge 51, die durch das Adressensignal 6 bestimmt ist (S45). Als ein
Ergebnis wird der Block, der durch das Adressenregister 1 bestimmt ist, verschoben
werden.
In der Zwischenzeit wird bei Schritt 42, wenn die Daten des Wortes, das durch
das Adressenregister 1 bestimmt ist, nicht in dem Cachespeicher
20 gespeichert sind, der oben beschriebene Blockholprozeß durchgeführt werden
(S43). Da der Inhalt des Verschiebungsflags 3 "1" ist, wird zu jener Zeit der Wert
des Änderungsbitsignals 37 durch die Wirkung des ODER-Gatters 26 "1" werden.
Als das Ergebnis des oben beschriebenen Blockholprozesses wird eine "1" an der
Position gespeichert werden, die durch das Positionsauswahlsignal 31 der
Änderungsbitfolge 22 bestimmt ist. Darüber hinaus wird, da das Holbeendigungssignal
36 bei dem Blockholprozeß "1" sein wird, das Verschiebungssignal 7 durch
die Wirkung des ODER-Gatters 29 und des UND-Gatters 30 in eine "1"
umgewandelt werden (S44). Die Adressenfolge 51 speichert dann den Inhalt des
physikalischen Adressenregisters 52 in die Position der Adressenfolge 51, wobei die
Position durch das Adressensignal 6 bestimmt ist (S45). Als ein Ergebnis wird der
Block verschoben, der durch das Adressenregister 1 bestimmt ist. Der schraffierte
Teil in Fig. 3A stellt einen Zielblock dar, der verschoben werden muß, wenn das
Verschiebungssignal 7 "1" ist.
Bei dem vorangehenden Verschiebungsprozeß wird ein Speichern des verschobenen Blocks in den
Hauptspeicher nicht durchgeführt, wobei bedeutungslose
Daten noch in dem entsprechenden Block in dem Hauptspeicher 80 gelassen
werden. Da jedoch das Änderungsbit, das dem Block entspricht, "1" ist, wird der
Block, der in dem Cachespeicher gespeichert ist, als die einzig
korrekten Daten angesehen, und die Daten in dem Hauptspeicher 80 werden nicht
beachtet, und zwar gemäß dem Algorithmus des Cachespeichers,
was keinen Widerspruch erzeugt.
Es gibt keine Beschränkung bezüglich der Beziehung zwischen einem Bereich,
bevor er geändert worden ist, und einem Bereich, nachdem er geändert worden
ist; d. h. es kann eine Überlappung der Bereiche auftreten.
Fig. 2 zeigt ein geändertes Hierarchie-Speichersystem mit einer Rangordnung gemäß einem
zweiten Ausführungsbeispiel der vorliegenden Erfindung, das im Aufbau mit dem
ersten Ausführungsbeispiel identisch ist, mit der Ausnahme eines Adressenübersetzers
50.
Verschiedene einen Teil bildende Elemente des Adressenübersetzers 50 werden
nun beschrieben. Bei diesem Ausführungsbeispiel ist die Größe der
Hauptspeicherteileinheit 2U Worte, nämlich U < B. Deshalb enthält die Hauptspeicherteileinheit
2(U-B) Blöcke. Weiterhin ist eine Adressenzuordnungsinformation
ein oberes (N-U) Bit der physikalischen Adresse, und die
physikalische Adresse kann erhalten werden durch Verbinden der Adressenzuordnungsinformation
von (N-U) Bits mit den unteren U-Bits der absoluten Adresse.
Die Adressenfolge 51 ist ein RAM zum Speichern der Adressenzuordnungsinformation
an jeder Position davon, und zwar mit den oberen (N-U) Bits der
absoluten Adresse, die als eine Adresse angelegt ist, und sie ist zu dem
herkömmlichen relativen Adressenregister, wie dem ersten Ausführungsbeispiel, äquivalent. Ein
Verschiebungsbereichsregister 56 speichert die oberen (N-U) Bits einer führenden
logischen Adresse der zu verschiebenden Hauptspeicherteileinheit. Das physikalische
Adressenregister 52 speichert eine zu gebende Adressenzuordnungsinformation,
nachdem die Hauptspeicherteileinheit, die durch das Verschiebungsbereichsregister
56 bestimmt ist, verschoben worden ist; d. h. das physikalische Adressenregister 52
speichert die oberen (N-U) Bits der physikalischen Adresse. Ein Grenzadressenregister
57 speichert eine Grenzadresse von N Bits und stellt den Ausgang
eines Grenzadressenaddierers 60 in Antwort auf den Befehl des Verschiebungssignals
7 ein. Ein Komparator 58 vergleicht die oberen (N-U) Bits des Inhalts
des Adressenregisters 1 mit dem Verschiebungsbereichsregister 56, gibt eine "1" aus,
wenn ihre Werte dieselben sind, und gibt eine "0" aus, wenn ihre Werte
unterschiedlich sind. Ein Komparator 59 vergleicht den Inhalt des Adressenregisters
1 mit dem Inhalt des Grenzadressenregisters 57, gibt eine "1" aus, wenn die
Zugriffsadresse kleiner ist als die Grenzadresse und gibt andererseits eine "0" aus.
Der Grenzadressenaddierer 60 gibt eine logische Adresse aus, die die Grenzadresse
ist, zu der 2B addiert ist. Die Auswahlvorrichtung 62 ist eine Auswahlschaltung
zum Auswählen des Ausgangs der Adressenfolge 51, wenn der Ausgang des UND-
Gatters 61 "0" ist, und zum Auswählen des Ausgangs des physikalischen
Adressenregisters 52, wenn der Ausgang des UND-Gatters 61 "1" ist. Das gültige
Bit 55 ist ein Flag, das anzeigt, daß der Adressenübersetzer 50 in einem
Verschiebungsausführmode ist. Wenn der Inhalt des gültigen Bits 55 "1" ist,
ist es der Verschiebungsmode; wenn der Inhalt "0" ist, ist es nicht der Verschiebungsmode.
Weiterhin ist das Schreibsignal 11 ein Signal, das ein Speichern in der Adressenfolge
51 bestimmt. Wenn der Wert "1" ist, wird der Inhalt des physikalischen
Adressenregisters 52 in der Position der Adressenfolge 51 gespeichert werden,
wobei die Position durch das Adressensignal 6 bestimmt wird.
Die Beziehung zwischen der Datenfolge, der Hauptspeicherteileinheit, der
Adressenfolge, dem Speicher 80, usw. bei dem zweiten Ausführungsbeispiel, wird
in der Fig. 3B gezeigt. Auch in der Fig. 3B ist die Positionszahl der Datenfolge
23 nur "3", und zwar der Klarheit halber. Bei diesem Ausführungsbeispiel ist
beabsichtigt, daß ein Block (2B Worte) des Cachespeichers 20 kleiner ist als die
Hauptspeicherteileinheit (2U Worte). Weil jedoch eine Verschiebung durch den
Cachespeicher 20 nur in einer Blockeinheit durchgeführt werden kann, ist es
unmöglich, eine Teileinheit des Hauptspeichers 80 auf einmal zu verschieben. Bei
einer Verschiebung einer Teileinheit des Hauptspeichers 80 werden daher viele
Blöcke, die in der Teileinheit enthalten sind, aufeinanderfolgend auf einer Block-für-Block-Basis
verschoben werden. Während dieser Verschiebung existieren Blöcke,
bevor sie verschoben worden sind, und andere Blöcke nachdem sie verschoben
worden sind, zeitweise in derselben Hauptspeicherteileinheit.
Mit anderen Worten muß sogar in demselben absoluten Adressenbereich die
originale physikalische Adresse an die nicht verschobenen Blöcke angepaßt werden,
und eine neue physikalische Adresse muß an die verschobenen Blöcke angepaßt
werden. Der Adressenübersetzer 50 der Fig. 2 kann diese Anforderung erfüllen.
Beim Betrieb, wenn eine Verschiebung nicht durchgeführt werden darf, da das
gültige Bit 55 "0" ist, kann nur die Adressenzuordnungsinformation, die aus der
Adressenfolge 51 durch das UND-Gatter 61 und die Auswahlvorrichtung 62
ausgegeben ist, für eine Adressenübersetzung benutzt werden.
Danach, während eine Verschiebung durchgeführt wird, da das gültige Bit 55 "1"
ist, wenn der Inhalt des Adressenregisters 1 in der Hauptspeicherteileinheit
enthalten ist, die durch das Verschiebungsbereichsregister 56 bestimmt ist, und
wenn der Inhalt des Adressenregisters 1 kleiner ist als die Grenzadresse, wird der
Ausgang des physikalischen Adressenregisters 52 für eine Adressenübersetzung
benutzt, und sonst wird der Ausgang des Adressenfeldes 51 für die Adressenübersetzung
durch die Wirkung des Komparators 58, des Komparators 59, des UND-
Gatters 61 und der Auswahlvorrichtung 62 benutzt. Wenn daher das gültige Bit
"1" ist, wird die Speichereinheit einer Adressenzuordnung bei der Grenzadresse in
zwei Hälften geteilt, so daß den jeweiligen Hälften der Speichereinheit einer
Adressenzuteilung verschiedene physikalische Adressen zugeordnet werden können.
Mit dem Verschiebungssignal 7 von "1", wird der Inhalt des Grenzadressenregisters
57 um die Größe des Blocks erhöht, während die physikalische Adresse des
Blocks, die vor dem Erhöhen durch die Grenzadresse bestimmt worden ist, von
jener verändert werden wird, die durch die Adressenfolge 51 bestimmt ist, und
zwar zu jener, die durch das physikalische Adressenregister 52 bestimmt ist. Diese
Veränderung ist der Veränderung der physikalischen Adresse äquivalent, die in
Antwort auf das Verschiebungssignal 7 bei dem Verschiebungsprozeß des ersten
Ausführungsbeispiels gemacht ist. Eine Zuteilung einer physikalischen Adresse zu
einer logischen Adresse der Hauptspeicherteileinheit entspricht dem Ausgang des
Adressenfeldes 51, wenn die Grenzadresse am Anschlag der Hauptspeicherteileinheit
ist, und entspricht dem Ausgang des physikalischen Adressenregisters 52, wenn die
Grenzadresse größer ist als die maximale absolute Adresse der Hauptspeicherteileinheit.
Das Hierarchie-Speichersystem dieses Ausführungsbeispiels kann wie
das erste Ausführungsbeispiel drei Anfragen ausführen, d. h. eine Holanfrage, eine
Speicheranfrage und eine Verschiebungsanfrage. Die Prozesse für die Hol- und
Speicheranfragen sind mit jenen des ersten Ausführungsbeispiels identisch, und
daher wird hier eine Beschreibung der Klarheit halber weggelassen. Die
Verschiebungsanfrage erfolgt, um einen Block wie bei dem ersten Ausführungsbeispiel
zu verschieben; jedoch wird die Verschiebungsanfrage nur als ein Schritt des
ganzen Verschiebungsprozesses der Hauptspeicherteileinheit verwendet, und folglich
wird der Verschiebungsprozeß in der Beschreibung des Verschiebungsprozesses
beschrieben.
Fig. 5A ist ein Flußdiagramm eines Blockholprozesses. Bei dem Blockholprozeß
wird zuerst die Position der Datenadresse 23 geeignet gewählt, um den Block zu
speichern, der das bestimmte Wort enthält (S51). Dann wird eine Untersuchung
durchgeführt (S52), ob die Position der Änderungsbitfolge 22 "1" ist oder nicht,
wobei die Position der ausgewählten Position entspricht. Wenn sie "1" ist, bedeutet
dies, daß der Inhalt verändert worden ist; daher ist es notwendig, zurück zu dem
Hauptspeicher zu schreiben. Danach wird eine Untersuchung durchgeführt (S53),
ob die oberen (N-U) Bits der logischen Adresse des Blocks, der an der
ausgewählten Position gespeichert ist, dem Inhalt des Verschiebungsbereichsregisters
56 gleich sind oder nicht, und ob die logische Adresse kleiner ist als der Inhalt
des Grenzregisters 57 oder nicht. Bei diesem Schritt wird in anderen Worten eine
Untersuchung durchgeführt, ob der Block dem Verschobenen zugeteilt ist oder
nicht. Wenn das Ergebnis positiv ist, wird der Inhalt zusammen mit den unteren
U Bits der absoluten Adresse ausgegeben (S54). Wenn es negativ ist, wird die
Position des Adressenfeldes 51 gelesen, die der logischen Adresse entspricht, und
die Auslesedaten werden als ein Adressensignal 10 zusammen mit den unteren U Bits
der logischen Adresse ausgegeben (S61). Dann werden Daten des Blocks zu
der Adresse des Hauptspeichers 80 geschrieben, wobei die Adresse durch das
Adressensignal 10 bestimmt werden muß (S55). Wenn bei dem Schritt 52 die
Position der Änderungsbitfolge 22 "0" ist, weist der Inhalt des Blocks keine
Änderung auf, und daher werden die Schritte S52 bis S55 und S61 zum
Zurückschreiben ausgelassen.
Danach wird eine Untersuchung durchgeführt (S56), ob die oberen (N-U) Bits
der logischen Adresse, die in dem Adressenregisters 1 gespeichert sind, dem Inhalt
des Verschiebungsbereichsregisters 56 gleich sind oder nicht, und auch, ob die
logische Adresse kleiner ist als jene in dem Grenzregister 57 oder nicht. Dieser
Schritt entspricht dem Schritt 53. Wenn das Ergebnis positiv ist, wird der Inhalt
des physikalischen Adressenregisters 52 als ein Adressensignal 10 zusammen mit
den unteren U Bits der logischen Adresse ausgegeben (S57). Wenn es negativ ist,
wird die Position des Adressenfeldes 51 gelesen werden, die der logischen Adresse
entspricht, und Daten der Position werden als ein Adressensignal 10 zusammen mit
den unteren U Bits der logischen Adresse ausgegeben. Danach wird der
Block in dem Hauptspeicher 80 als ein Datenlesesignal 9 gelesen werden, wobei
der Block durch das Adressensignal 10 bestimmt ist (S58). Die Daten des
Datenlesesignals 9 werden in der ausgewählten Position des Datenfeldes (S59)
gespeichert, und der Wert des Änderungsbitsignals 37 wird in der ausgewählten
Position der Änderungsbitfolge 22 gespeichert (S60). Auf diese Art ist der
Blockholprozeß beendet worden.
Der Verschiebungsprozeß der Hauptspeichereinheit gemäß dem zweiten
Ausführungsbeispiel wird nun beschrieben. Dieser Verschiebungsprozeß wird
durch aufeinanderfolgendes Ausführen der folgenden Verfahren 1) bis 7)
durchgeführt werden, und zwar durch ein Verarbeitungsgerät, das das Speichersystem
mit einer Rangordnung benutzt. Fig. 5B ist ein Flußdiagramm des
Verschiebungsprozesses.
Bei dem Verschiebungsprozeß wird eine Verschiebung der Hauptspeicherteileinheit,
die aus mehreren Blöcken zusammengesetzt ist, durch Wiederholen der Verschiebung
eines Blocks durch eine Verschiebungsanfrage durchgeführt.
- 1) Die oberen (N-U) Bits der logischen Adresse der zu verschiebenden Hauptspeicherteileinheit werden in dem Verschiebungsbereichsregister 56 eingestellt.
- 2) Die oberen (N-U) Bits der physikalischen Adresse, in der die Hauptspeicherteileinheit neu angeordnet wird, werden in dem physikalischen Adressenregister 52 eingestellt.
- 3) Die führende logische Adresse der zu verschiebenden Hauptspeicherteileinheit wird in dem Grenzadressenregister 57 eingestellt.
- 4) Das gültige Bit 55 wird umgewandelt, um "1" zu sein (vorangehende Verfahren 1) bis 4): S71).
- 5) Der folgende Verschiebungsanfrageprozeß wird 2(U-B) Male wiederholt (S72
bis S77 und S81).
Die logische Adresse, die jener gleich ist, die in dem Grenzadressenregister 57 gehalten ist, wird in dem Adressenregister 1 eingestellt, das Speicherflag 2 wird auf "0" gesetzt, und der Verschiebungsflag 3 wird auf die "1" gesetzt und dadurch wird das Hierarchie-Speichersystem gestartet. - 6) Das Schreibsignal 11 muß "1" sein (S78), worauf der Inhalt des physikalischen Registers 52 in der Position gespeichert wird, die durch das Adressenregister bestimmt ist (S79).
- 7) Das gültige Bit wird umgewandelt, um "0" zu sein (S80).
Die Verfahren 1) bis 4) sind Initialisierungen der in dem Verschiebungsgerät zu
benutzenden Register. Für die Blöcke, die eine Hauptspeicherteileinheit bilden, die
durch das Verschiebungsbereichsregister 56 bestimmt ist, wiederholt das Verfahren
5) den Verschiebungsprozeß, der in Verbindung mit dem ersten Ausführungsbeispiel
erläutert ist, und es verschiebt alle Blöcke in der Hauptspeicherteileinheit in der
physikalischen Adresse, die durch das physikalische Adressenregister 52 bestimmt
ist. Bei dem Verschiebungsprozeß von jedem Block unternimmt der
Cachespeicher 20 dieselben Schritte wie der oben in Verbindung mit dem
ersten Ausführungsbeispiel diskutierte Verschiebungsanfrageprozeß. Das Verschiebungssignal 7
erhöht den Inhalt des Grenzadressenregisters 57, anstatt die
Position des Adressenfeldes 51 neu zu laden. Das Ergebnis bei diesem Ausführungsbeispiel
ist jedoch ähnlich zu jenem bei dem ersten Ausführungsbeispiel.
Das Verfahren 6) speichert den Inhalt des physikalischen Adressenregisters 52 in
dem Adressenfeld 51, das durch das Adressensignal 6 bestimmt ist, und spiegelt
die Verschiebung wieder, die durch das Verfahren 5) in der Adressenfolge 51
erzielt ist. Da durch diesen Prozeß der Inhalt der Adressenfolge 51 mit dem
Inhalt des physikalischen Adressenregisters 52 übereinstimmt, kann das gültige Bit
55 in "0" umgewandelt werden.
Der Prozeß 7) gibt Register zur Verschiebung frei, die in dem Adressenübersetzer
50 enthalten sind, und ermöglicht eine Verschiebung einer weiteren Hauptspeicherteileinheit.
Bei dem ersten Ausführungsbeispiel ist die Größe der Hauptspeicherteileinheit
dieselbe wie die Blockgröße des Cachespeichers. Diese Erfindung sollte keinesfalls
auf dieses besondere Beispiel begrenzt sein. Beispielsweise kann diese Erfindung
anders angewendet werden, wie das zweite Ausführungsbeispiel, bei dem vorgesehen
ist, daß die Größe der Hauptspeicherteileinheit ein ganzzahliges Vielfaches der
Blockgröße ist und kleiner ist als die Kapazität des Cachespeichers.
Obwohl bei dem ersten und dem zweiten Ausführungsbeispiel die Adressenzuteilungsinformation
obere Bits der physikalischen Adresse sind, kann irgendeine
Information benutzt werden, wenn sie die logischen Adressen in der Hauptspeicherteileinheit
mit den physikalischen Adressen des Hauptspeichers in einer
Eins-zu-Eins-Beziehung verbindet. Wenn z. B. die Hauptspeicherteileinheit in dem
Hauptspeicher verschachtelt ist, können Daten die Information enthalten, die ein
Verschachtelungsmuster bestimmt.
Weiterhin ist die Hauptspeicherteileinheit bei dem ersten und zweiten Ausführungsbeispiel
konstant in der Größe. Die Größe der Hauptspeicherteileinheit kann
jedoch variieren.
Bei dem zweiten Ausführungsbeispiel werden die Blöcke innerhalb des Hauptspeicherteils in dem Cachespeicher in aufsteigender Adressenreihenfolge gespeichert.
Andere Reihenfolgen können möglich sein, wenn der Komparator 59 und der
Grenzadressenaddierer 60 eingerichtet werden, um sich für jene Reihenfolge zu
eignen.
Auch das zweite Ausführungsbeispiel benutzt das gültige Bit. Wenn das Verschiebungsbereichsregister 56 und das Grenzregister 57 "0" sind, ist es möglich,
dasselbe Ergebnis wie "gültiges Bit = 0" zu erreichen. Daher ist das gültige Bit
kein wesentlicher Faktor.
Sogar während eine Verschiebung der Daten, die in dem Hauptspeicher gespeichert
sind, durchgeführt wird, ist es gemäß dieser Erfindung möglich, in bezug auf den
Bereich, der verschoben ist, zu lesen/schreiben, und zwar unter Verwendung von
Daten, die in einem Cachespeicher gespeichert sind. Daher ist es nicht nötig, das
laufende Programm zeitweise für eine Verschiebung anzuhalten, und deshalb ist es
möglich, eine Verschiebung des Hauptspeichers durchzuführen, während das System
arbeitet.
Claims (6)
1. Verfahren zum Verschieben von Speicherbereichen in einem Hauptspeicher
(80) eines Speichersystems, das neben dem Hauptspeicher (80)
einen Cachespeicher (20) und einen Adressenübersetzer (50) aufweist,
der logische Adressen in physikalische Adressen übersetzt, mit folgenden
Schritten:
- (a) Zuordnen der logischen Adressen, mit denen der Cachespeicher (20) adressiert wird, zu physikalischen Adressen des zu verschiebenden Speicherbereichs des Hauptspeichers (80);
- (b) Holen des Inhalts dieses Speicherbereichs aus dem Hauptspeicher (80) und Abspeichern in dem Cachespeicher (20) unter den logischen Adressen;
- (c) Zuordnen der logischen Adresse des Cachespeichers (20), unter der der Speicherbereich abgespeichert ist, zu einer neuen physikalischen Adresse des Hauptspeichers (80), in die der Speicherbereich zu verschieben ist; und
- (d) Einschreiben des in dem Cachespeicher (2) unter den logischen Adressen gespeicherten Inhalts in den Speicherbereich mit der neuen physikalischen Adresse des Hauptspeichers (80).
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß beim Holen
des Inhalts des neu zu verschiebenden Speicherbereichs in den Block
des Cachespeichers ein jedem Block des Cachespeichers zugeordnetes
Änderungsbit geändert wird.
3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß das Änderungsbit
zu einem "1"-Bit geändert wird.
4. Verfahren nach Anspruch 2 oder 3, dadurch gekennzeichnet, daß vor
dem Holen des Inhalts des zu verschiebenden Speicherbereichs geprüft
wird, ob das Änderungsbit schon geändert worden ist, was anzeigt, daß
der Holprozeß schon durchgeführt wurde.
5. Verfahren nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet,
daß das Verschieben gemäß einer Anfrage zum Verschieben
von einem Hostgerät erfolgt.
6. Hierarchie-Speichersystem zur Durchführung des Verfahrens nach einem
der vorstehenden Ansprüche, dadurch gekennzeichnet, daß der Cachespeicher
ein Datenfeld (23), das aus den Blöcken zusammengesetzt ist,
und ein Änderungsbit (22) zum Speichern des Änderungsbits aufweist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1185749A JPH0661068B2 (ja) | 1989-07-18 | 1989-07-18 | 記憶再配置方法および階層化記憶システム |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4022885A1 DE4022885A1 (de) | 1991-01-31 |
DE4022885C2 true DE4022885C2 (de) | 1996-12-12 |
Family
ID=16176193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4022885A Expired - Fee Related DE4022885C2 (de) | 1989-07-18 | 1990-07-18 | Verfahren zum Verschieben von Speicherbereichen und Hierarchie-Speichersystem |
Country Status (3)
Country | Link |
---|---|
US (1) | US5317704A (de) |
JP (1) | JPH0661068B2 (de) |
DE (1) | DE4022885C2 (de) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH087717B2 (ja) * | 1991-09-03 | 1996-01-29 | 富士通株式会社 | 動的アドレス変換処理装置 |
JP2737820B2 (ja) * | 1992-09-24 | 1998-04-08 | インターナショナル・ビジネス・マシーンズ・コーポレイション | メモリアクセス方法およびシステム |
US5873126A (en) * | 1995-06-12 | 1999-02-16 | International Business Machines Corporation | Memory array based data reorganizer |
US6742080B1 (en) | 1996-09-06 | 2004-05-25 | Intel Corporation | Disk block allocation optimization methodology and application |
US6105117A (en) * | 1997-06-30 | 2000-08-15 | Intel Corporation | Source oriented data block relocation methodology and applications |
GB9920916D0 (en) | 1999-09-03 | 1999-11-10 | Sgs Thomson Microelectronics | A relocation format for linking |
GB2358491A (en) * | 1999-09-03 | 2001-07-25 | Sgs Thomson Microelectronics | A relocation format for linking |
JP2001142773A (ja) | 1999-11-17 | 2001-05-25 | Fujitsu Ltd | 交換システムのデータ管理装置及び記録媒体 |
US6252821B1 (en) * | 1999-12-29 | 2001-06-26 | Intel Corporation | Method and apparatus for memory address decode in memory subsystems supporting a large number of memory devices |
US6745313B2 (en) | 2002-01-09 | 2004-06-01 | International Business Machines Corporation | Absolute address bits kept in branch history table |
GB2395824B (en) * | 2002-02-07 | 2004-08-25 | Sun Microsystems Inc | Object addressed memory hierarchy |
US6859868B2 (en) * | 2002-02-07 | 2005-02-22 | Sun Microsystems, Inc. | Object addressed memory hierarchy |
GB0301448D0 (en) * | 2003-01-22 | 2003-02-19 | Falanx Microsystems As | Microprocessor systems |
US7685399B2 (en) * | 2007-01-07 | 2010-03-23 | International Business Machines Corporation | Method, system, and computer program products for data movement within processor storage |
US8132131B2 (en) * | 2007-12-18 | 2012-03-06 | International Business Machines Corporation | Design structure including failing address register and compare logic for multi-pass repair of memory arrays |
US20090154270A1 (en) * | 2007-12-18 | 2009-06-18 | Barth Jr John E | Failing address register and compare logic for multi-pass repair of memory arrays |
US7917806B2 (en) * | 2007-12-18 | 2011-03-29 | International Business Machines Corporation | System and method for indicating status of an on-chip power supply system |
US8661169B2 (en) * | 2010-09-15 | 2014-02-25 | Lsi Corporation | Copying data to a cache using direct memory access |
US9436606B2 (en) * | 2014-01-02 | 2016-09-06 | Qualcomm Incorporated | System and method to defragment a memory |
US9495107B2 (en) | 2014-11-19 | 2016-11-15 | International Business Machines Corporation | Dynamic relocation of storage |
US9348524B1 (en) | 2014-11-19 | 2016-05-24 | International Business Machines Corporation | Memory controlled operations under dynamic relocation of storage |
US9459998B2 (en) | 2015-02-04 | 2016-10-04 | International Business Machines Corporation | Operations interlock under dynamic relocation of storage |
US10552340B2 (en) | 2017-02-28 | 2020-02-04 | Oracle International Corporation | Input/output direct memory access during live memory relocation |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4638426A (en) * | 1982-12-30 | 1987-01-20 | International Business Machines Corporation | Virtual memory address translation mechanism with controlled data persistence |
US4719568A (en) * | 1982-12-30 | 1988-01-12 | International Business Machines Corporation | Hierarchical memory system including separate cache memories for storing data and instructions |
US4612612A (en) * | 1983-08-30 | 1986-09-16 | Amdahl Corporation | Virtually addressed cache |
US4680700A (en) * | 1983-12-07 | 1987-07-14 | International Business Machines Corporation | Virtual memory address translation mechanism with combined hash address table and inverted page table |
US4860192A (en) * | 1985-02-22 | 1989-08-22 | Intergraph Corporation | Quadword boundary cache system |
JPS61290550A (ja) * | 1985-06-19 | 1986-12-20 | Hitachi Ltd | 階層記憶制御方式 |
US4928239A (en) * | 1986-06-27 | 1990-05-22 | Hewlett-Packard Company | Cache memory with variable fetch and replacement schemes |
JPS6321222A (ja) * | 1986-07-10 | 1988-01-28 | Nippon Kokan Kk <Nkk> | オキシ塩化ジルコニウムの製造方法 |
US4885680A (en) * | 1986-07-25 | 1989-12-05 | International Business Machines Corporation | Method and apparatus for efficiently handling temporarily cacheable data |
GB2210480B (en) * | 1987-10-02 | 1992-01-29 | Sun Microsystems Inc | Flush support |
US4991088A (en) * | 1988-11-30 | 1991-02-05 | Vlsi Technology, Inc. | Method for optimizing utilization of a cache memory |
US5131087A (en) * | 1988-12-29 | 1992-07-14 | Storage Technology Corporation | Computer system having apparatus for automatically redistributing data records stored therein |
US5067078A (en) * | 1989-04-17 | 1991-11-19 | Motorola, Inc. | Cache which provides status information |
-
1989
- 1989-07-18 JP JP1185749A patent/JPH0661068B2/ja not_active Expired - Fee Related
-
1990
- 1990-07-18 DE DE4022885A patent/DE4022885C2/de not_active Expired - Fee Related
- 1990-07-18 US US07/553,699 patent/US5317704A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5317704A (en) | 1994-05-31 |
JPH0661068B2 (ja) | 1994-08-10 |
DE4022885A1 (de) | 1991-01-31 |
JPH0350651A (ja) | 1991-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4022885C2 (de) | Verfahren zum Verschieben von Speicherbereichen und Hierarchie-Speichersystem | |
DE2231146C3 (de) | Datenverarbeitungsanlage mit virtueller Adressierung | |
DE2856133C2 (de) | Datenverarbeitungsvorrichtung mit einem Hauptspeicher und einem Assoziativspeicher als Pufferspeicher | |
DE69527594T2 (de) | Flashspeicherkarte | |
DE69131972T2 (de) | Speichersteuerungseinheit und Speichereinheit | |
DE2637054C3 (de) | Steuervorrichtung für einen Pufferspeicher | |
DE2455047A1 (de) | Datenverarbeitungssystem | |
DE3885594T2 (de) | Speicherprüfgerät. | |
DE2226382B2 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
DE1956604A1 (de) | Datenverarbeitungsanlage mit einem Speichersystem | |
DE2630323A1 (de) | Datenspeichereinrichtung | |
EP0013737A1 (de) | Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem | |
DE3011552A1 (de) | Datenverarbeitungsanlage mit einem hauptspeicher sowie wenigsten einem datenprozessor mit zugeordnetem adressenumformer | |
DE2939411C2 (de) | Datenverarbeitungsanlage mit virtueller Speicheradressierung | |
DE60132229T2 (de) | Speichervorrichtung, speichersteuerverfahren und programm | |
DE3588061T2 (de) | Speicherzugriffs-Steuerungssystem und -Verfahren für ein Informationsverarbeitungsgerät. | |
DE69227740T2 (de) | Verarbeitungsanordnung zur dynamischen Adressübersetzung in einem Datenverarbeitungssystem | |
DE69629331T2 (de) | System und Verfahren zur Bereitstellung einer flexiblen Speicherhierarchie | |
DE3789912T2 (de) | System und Verfahren zur Bildverarbeitung. | |
DE4323929A1 (de) | Software-geführtes Mehrebenen-Cache-Speichersystem | |
DE69224489T2 (de) | Speicherzugriffssteuerung | |
DE2331394B1 (de) | Datenverarbeitungsanlage mit virtueller adressierung | |
DE102006007258A1 (de) | Speicheradressenerzeugungsschaltkreis und Speichersteuereinheit | |
WO1998044421A1 (de) | Schaltungsanordnung mit einem prozessor und einem datenspeicher | |
DE2525287A1 (de) | Assoziativspeicher |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |