DE4022885C2 - Verfahren zum Verschieben von Speicherbereichen und Hierarchie-Speichersystem - Google Patents

Verfahren zum Verschieben von Speicherbereichen und Hierarchie-Speichersystem

Info

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
Application number
DE4022885A
Other languages
English (en)
Other versions
DE4022885A1 (de
Inventor
Satoshi Izawa
Masaya Watanabe
Seiji Kaneko
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Microcomputer System Ltd
Hitachi Ltd
Original Assignee
Hitachi Ltd
Hitachi Microcomputer Engineering Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd, Hitachi Microcomputer Engineering Ltd filed Critical Hitachi Ltd
Publication of DE4022885A1 publication Critical patent/DE4022885A1/de
Application granted granted Critical
Publication of DE4022885C2 publication Critical patent/DE4022885C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address 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.
(1) Blockholprozeß
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.
(2) Holprozeß
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.
(3) Speicherprozeß
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.
(4) Neuadressierungs- bzw. Verschiebungsprozeß
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.
DE4022885A 1989-07-18 1990-07-18 Verfahren zum Verschieben von Speicherbereichen und Hierarchie-Speichersystem Expired - Fee Related DE4022885C2 (de)

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)

* Cited by examiner, † Cited by third party
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
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
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
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
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
US9348524B1 (en) 2014-11-19 2016-05-24 International Business Machines Corporation Memory controlled operations under dynamic relocation of storage
US9495107B2 (en) 2014-11-19 2016-11-15 International Business Machines Corporation 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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4719568A (en) * 1982-12-30 1988-01-12 International Business Machines Corporation Hierarchical memory system including separate cache memories for storing data and instructions
USRE37305E1 (en) * 1982-12-30 2001-07-31 International Business Machines Corporation Virtual memory address translation mechanism with controlled data persistence
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

Also Published As

Publication number Publication date
DE4022885A1 (de) 1991-01-31
US5317704A (en) 1994-05-31
JPH0350651A (ja) 1991-03-05
JPH0661068B2 (ja) 1994-08-10

Similar Documents

Publication Publication Date Title
DE4022885C2 (de) Verfahren zum Verschieben von Speicherbereichen und Hierarchie-Speichersystem
DE2231146C3 (de) Datenverarbeitungsanlage mit virtueller Adressierung
DE2260353C2 (de) Schaltungsanordnung für die Adressenumsetzung in einer Datenverarbeitungsanlage
DE2226382C3 (de) Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern
DE2350215C2 (de) Rechenanlage
DE2637054C3 (de) Steuervorrichtung für einen Pufferspeicher
DE2455047A1 (de) Datenverarbeitungssystem
DE1956604A1 (de) Datenverarbeitungsanlage mit einem Speichersystem
DE2630323A1 (de) Datenspeichereinrichtung
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE60132229T2 (de) Speichervorrichtung, speichersteuerverfahren und programm
DE69629331T2 (de) System und Verfahren zur Bereitstellung einer flexiblen Speicherhierarchie
EP0009625B1 (de) Datentransferschalter mit assoziativer Adressauswahl in einem virtuellen Speicher
EP0265636A1 (de) Multiprozessor mit mehreren mit Cache-Speichern ausgerüsteten Prozessoren und einem gemeinsamen Speicher
DE2331394B1 (de) Datenverarbeitungsanlage mit virtueller adressierung
DE69726062T2 (de) Verfahren und Vorrichtung zur Speichervorrichtungssteuerung in einem Informationsverarbeitungssystem
DE102006007258A1 (de) Speicheradressenerzeugungsschaltkreis und Speichersteuereinheit
WO1998044421A1 (de) Schaltungsanordnung mit einem prozessor und einem datenspeicher
DE2525287A1 (de) Assoziativspeicher
DE2355814C2 (de) Kanalzugriffseinrichtung für eine hierarchische Speicheranordnung
DE4021784C2 (de)
DE69637329T2 (de) Speichermanagementsystem und verfahren
DE3932227A1 (de) Multiprozessorsystem
EP0075715B1 (de) Cachespeicher und Verfahren zu seinem Betrieb
EP0556430B1 (de) Verfahren zur Steuerung eines Peripheriesystems

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