DE68923437T2 - Adressenübersetzung für Seiten mehrfacher Grösse. - Google Patents

Adressenübersetzung für Seiten mehrfacher Grösse.

Info

Publication number
DE68923437T2
DE68923437T2 DE68923437T DE68923437T DE68923437T2 DE 68923437 T2 DE68923437 T2 DE 68923437T2 DE 68923437 T DE68923437 T DE 68923437T DE 68923437 T DE68923437 T DE 68923437T DE 68923437 T2 DE68923437 T2 DE 68923437T2
Authority
DE
Germany
Prior art keywords
page
dlat
pages
virtual
address
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
DE68923437T
Other languages
English (en)
Other versions
DE68923437D1 (de
Inventor
Steven Wayne White
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE68923437D1 publication Critical patent/DE68923437D1/de
Application granted granted Critical
Publication of DE68923437T2 publication Critical patent/DE68923437T2/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/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

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 vorliegende Erfindung bezieht sich auf eine Vorrichtung und ein Verfahren zur Adressenübersetzung für Seiten mehrfacher Größe wie diese in den anhängenden Ansprüchen ausgeführt ist.
  • Die vorliegende Erfindung liefert ebenfalls das entsprechende Subsystem, System und Verfahren. Einige oder alle der folgenden Einrichtungen sind dazu gedacht, Vorteile zu bringen, unter besonderen Umständen einige mehr als andere - wobei das System so angeordnet ist, daß es keine Überlappung zwischen Seiten gleich welcher Größe gibt; der Speicher so angeordnet ist, daß Seiten, insbesondere größere Seiten, sich innerhalb der natürlichen Grenzen befinden; wobei die Seitengrößen so angeordnet werden, daß diese den natürlichen Systemadressenpartitionen entsprechen - d.h. Systemsegmenten und Systemseiten; und die Directory-Look-Aside-Tables, DLAT's, angeordnet sind, um assoziativ eingesetzt zu werden.
  • Die dynamische Adressenübersetzung liefert die Fähigkeit, die Ausführung eines Programms zu unterbrechen, dieses sowie dessen Daten in einem Hilfsspeicher, zum Beispiel einem Direktzugriffsspeicher (DASD), aufzuzeichnen und das Programm und die Daten zu einem späteren Zeitpunkt in verschiedene Hauptspeicherplätze zur Wiederaufnahme der Ausführung zurückzuführen. Diese kann einem Benutzer ein System bereitstellen, in dem der Speicher größer als der Hauptspeicher zu sein scheint. Dieser offensichtliche Speicher (virtuell) benutzt virtuelle Adressen, um darin Speicherplätze bereitzustellen, und wird normalerweise in einem Hilfsspeicher gehalten. Dieser kommt in Blöcken mit Adressen, aufgerufenen Seiten vor und nur die zuletzt bezeichneten Seiten werden zugeordnet, um Blöcke des physischen Hauptspeichers zu belegen.
  • Da sich der Benutzer auf Seiten des virtuellen Speichers bezieht, die nicht in dem Hauptspeicher erscheinen, werden diese eingebracht, um Seiten im Hauptspeicher zu ersetzen, die in naher Zukunft wahrscheinlich weniger gebraucht werden.
  • Virtuelle Adressierung wurde zu einer Schlüsseleinrichtung in der Architektur von sehr großen Computern. Virtuelle Adressierung ermöglicht es Programmen, dem Benutzer logisch zusammenhängend zu erscheinen, obwohl diese in dem Speichersystem physisch nicht zusammenhängen. Teile des virtuellen Raums, auf die kürzlich zugegriffen wurde, werden in der Hauptspeichereinheit abgebildet. Die Abbildungsinformation wird in einem Verzeichnis, das eine Segmenttabelle mit Eingaben entsprechend den angrenzenden 1MB (Megabyte) Segmenten und Seitentabellen mit Eingaben für 4KB (Kilobyte) Seiten innerhalb eines Segments enthält, oft hierarchisch gespeichert.
  • Zur Übersetzung der virtuellen Adresse in eine echte Adresse wird die Abbildungsinformation benötigt, die durch Suchen des geeigneten Segments und der geeigneten Seitentabellen erhalten wird. Da dieses Suchverfahren zeitraubend ist, wird die Anzahl von vollständigen Suchvorgängen reduziert, indem die Information für einige der jüngsten Übersetzungen in einer Directory- Look-Aside-Table (DLAT) festgehalten wird. Für virtuelle Adressen, die von der DLAT abgedeckt werden, benötigt das Übersetzungsverfahren, das für fast jeden Speicherzugriff erforderlich ist, nur ein paar Maschinenzyklen. Für Adressen,
  • KIg-86-017 die von der DLAT nicht abgedeckt werden, erstreckt sich das Verfahren zum Suchen des Verzeichnisses über etwa 15 bis 60 Zyklen, wenn Segment und Seitentabellen im Hauptspeicher sind. Jede DLAT Eingabe enthält die Information zur Abbildung einer ganzen Speicherseite, häufig 4KB. Das von der DLAT abgedeckte Speichervolumen hängt von der Anzahl der Eingaben in die DLAT und der Größe der Seite ab.
  • Wenn die optimale Größe für eine Seite bestimmt ist, wird zwischen einer Seite, die groß genug ist, um die Organisation von auszutauschenden Seiten aufzufangen und einer Seite, die klein genug ist, um eine minimale Verschlechterung infolge der Körnung zu erleiden, ein Kompromiß getroffen; d.h. keine Vergeudung von Speicherplatz, indem eine große Seite für ein kleines Objekt festgelegt wird. Während die Abbildung von kleinen (4KB) Seiten für Codesegmente (Befehle) und kleine Datenobjekte geeignet ist, ziehen wissenschaftliche und technische Hochleistungsmaschinen den Nutzen oft aus großen Seiten. In den letzten Jahren haben sowohl Datenobjekte als auch Speicherkapazitäten wesentlich zugenommen; jetzt ist eine große Seite oft effizienter. Verglichen mit Datenobjekten, die aus Hunderten von Megabytes bestehen, bietet eine 1 MB Seite eine ausreichend feine Körnung.
  • Mit der Einführung von schnellen Massenspeichereinrichtungen in der Größenordnung von einem oder mehreren Gigabytes (GB), wie zum Beispiel dem erweiterten Speicher von IBM, wurden außerdem die Datenübertragungszeiten für eine 4KB und eine 1MB Seite um Zehnerzyklen bzw. um Tausende von Zyklen reduziert. Mit den Tausenden von Zyklen der Software-Organisation, die bei der Beseitigung eines Seitenfehlers anfällt, kann die Beseitigung eines 1MB Seitenfehlers nur drei- bis fünfmal solange wie ein 4KB Seitenfehler dauern. Für Übertragungen von großen, zusammenhängenden Datenblöcken wird ein 4KB Seitensystem die Organisation hundertmal erleiden als bei Seitenfehlern in einem 1MB Seitensystem.
  • Große Seiten bieten zahlreiche Seitenvorteile. Vektorabrufe und Vektorspeicher profitieren zum Beispiel von großen Seiten, indem einfach die Anzahl von möglichen Seitenkreuzungen reduziert wird. Sogar wenn die nächste geforderte Seite in einem physischen Speicher resident ist, kann die Vektorleitung an einer Seitenkreuzung unterbrochen werden, um zu überprüfen, ob die Seite in den Speicher eingebracht wurde. Diese Unterbrechung kann in einer bemerkenswerten Leistungsverschlechterung resultieren.
  • Große Seiten in der Größenordnung von 1MB können als mögliche Lösung bei wissenschaftlichen Anwendungen, welche eine Leistungsverschlechterung als Ergebnis der Verwendung von kleinen Seiten erfahren, hilfreich sein. Um die Seitengröße für eine Anwendung oder für einen Teil davon zu optimieren, sind Seiten mehrfacher Größe wünschenswert. Bis heute werden bekannte DLATS konzipiert, um Seiten einer einzelnen Größe zu handhaben. Um andere Größen als eine einheitliche Seitengröße zu unterstützen, sind Änderungen in den derzeitigen DLAT(s) selbst erforderlich.
  • Die CDC (Warenzeichen der Control Data Corporation) 7600 und die CYBER 205 haben sowohl kleine als auch große Seiten. Die CYBER 205 bietet kleine (4KB, 16KB und 64KB) Seiten, in dem die Auswahl der Seitengröße "über einen Software-Installationsparameter im Betriebssystem" erfolgen muß. Deshalb kann eine vorgegebene Arbeit nur eine Größe der kleinen Seite erlauben. Eine große Seite (512KB) ist jedoch ebenfalls erlaubt. Die CYBER Übersetzungseinheit handhabt Seiten mehrfacher Größe, indem eine Liste mit "assoziativen Wörtern" erstellt wird. Jedes Wort enthält Informationen, die ähnlich einer DLAT Eingabe sind. Diese Liste wird im Hauptspeicher gespeichert und die oberen (zuletzt benutzten) 16 Eingaben können mittels Befehl in einen internen Satz Register geladen werden. Der Übersetzungsprozeß besteht zuerst darin, innerhalb des internen Registers zu suchen. Wenn eine Übereinstimmung (ein "Treffer") festgestellt wird, wird die Eingabe in der Liste nach oben bewegt und die Adresse aufgelöst. Wenn keine Übereinstimmung in den ersten 16 Eingaben festgestellt wird, wird der Rest der Liste im Speicher, zwei Eingaben gleichzeitig, durchsucht. Wenn eine übereinstimmende Eingabe gefunden wird, wird diese in der Liste nach oben bewegt. Andernfalls wird ein Seitenfehler generiert. Dies kann eine große Anzahl von Maschinenzyklen erfordern.
  • Obwohl das CYBER Schema eine Übersetzungstabelle zur Handhabung von Eingaben zuläßt, die nicht von einheitlicher Größe sind, ist dies keine attraktive Lösung auf dem zukünftigen Markt von wissenschaftlichen Hochleistungsprozessoren. Die Liste der assoziativen Wörtern definiert alle Seiten in dem physischen Speicher. Obwohl dies für kleine Speicheranforderungen praktisch sein kann, erfordern zukünftige Arbeiten wesentlich mehr Speicher als dieser in der CYBER vorhanden ist. Einige Hersteller sehen Hauptspeicher von 256MB und sogar 2GB (Gigabytes) vor. Diese großen, echten Speicher implizieren sogar größere Datenobjektformate und größere virtuelle Räume, um diese aufzunehmen. Sogar bei 1MB Seiten, würde das 1GB Datenobjekt 1000 Seiten benötigen; das Suchen von 2 Eingaben pro Zyklus kann die Leistung wesentlich verschlechtern. Der Anstieg der Anzahl von Eingaben, die in den assoziativen Registern enthalten sind, kann - basierend auf den Mengen erforderlicher Logik - untragbar sein.
  • Die US Patentschrift #4,285,040 zeigt die Unterstützung von Seiten mehrfacher Größe (zwei), 128B und 4KB. Die patentierte Lösung weist zahlreiche Unzulänglichkeiten auf. Mit großen Adreßräumen, zum Beispiel mit denjenigen, die in wissenschaftlichen und technischen Hochleistungsprozessoren erforderlich sind, ist dies nicht machbar. Die beschriebene Implementierung erfordert, daß Register verfügbar sind, um gleichzeitig die Basisadreßwerte für alle Segmente in dem virtuellen Adreßraum zu behalten. Sogar bei großen Seiten, zum Beispiel 1MB, benötigen die aktuellen Adreßräume (2GB) 2048 solcher Register. Es wird außerdem erwartet, daß die Anforderungen der Benutzer die Designer zwingen, wesentlich größere Adreßräume in naher Zukunft zuzulassen, wodurch die Anzahl von Segmentregistern, die für das in dem Patent beschriebene Verfahren erforderlich sind, dramatisch ansteigt.
  • Infolge der "cache-ähnlichen" Struktur, die verwendet wird, um diese Segmentinformation (1MB) in der beschriebenen Anordnung zu behalten, kann die Anzahl von äquivalenten Registern deutlich um vierzig oder fünfzig reduziert werden und liefert noch akzeptable "Trefferquoten", wodurch eine nahezu optimale Leistung gewährleistet wird.
  • Für Zugriffe auf Daten in kleinen Seiten sind zusätzliche Speicherzugriffe für das in dem Patent beschriebene Verfahren erforderlich. Indem von fast ganz oben der mit "3" markierten Spalte zitiert wird, "sind die Sub-Segment Deskriptoren in einer Tabelle enthalten, welche in dem Speicher des Systems gespeichert ist. Wenn der Mechanismus in dem zweiten Modus oder Sub-Segmentmodus arbeitet, ist es deshalb notwendig, einen Extra-Zyklus auszuführen, um einen der Sub-Segment Deskriptoren auszuwählen und abzurufen." Dieser "Extra-Zyklus" ist ein Speicherreferenzzyklus und in zahlreichen Prozessoren (mit großem Speichervolumen) wird dieser in zahlreiche Prozessorzyklen übersetzt.
  • Aufgrund der mehrfachen "cache-ähnlichen" Strukturen der beschriebenen Anordnung ist die zuletzt benutzte "Seiteninformation" (Sub-Segment Deskriptoren) ohne weiteres verfügbar, was in einer deutlichen Leistungsverbesserung resultiert. Im allgemeinen ist nur ein einzelner Suchzyklus erforderlich.
  • Obwohl das in dem Patent beschriebene Design gute Leistungen beim Zugriff auf "große" Seiten zeigt, ist die Anzahl von Registern, die erforderlich sind, um alle Segment-Hinweisadressen zu behalten, für große Adreßräume unattraktiv. Aufgrund der exponentiell großen Anzahl von Seitentabelleneingaben müssen diese Eingaben außerdem im Systemspeicher gespeichert werden. Bei Zugriffen auf kleine Seiten resultiert deshalb jeder "Benutzer" Speicherzugriff in zwei "echten" Speicherzugriffen, in einem für den nachfolgenden Deskriptor und in einem für die Benutzerdaten. Da Speicherverzögerungen und Speicherkonkurrenzbetrieb sehr zur Leistungsverschlechterung des Systems beitragen, würde ein solches Verfahren ein Mittel in einem Hochleistungsprozessor stark benachteiligen.
  • Die US Patentschrift #3,675,215 beschreibt ein sequentielles Suchverfahren, das "mit der Zählung, die bei jeder fehlenden Übereinstimmung um eins inkrementiert wird, fortfährt, bis die ID der aufgerufenen Eingabe mit der angeforderten virtuellen Adresse übereinstimmt oder bis die Zählung die Anzahl von Adressen in der Untermenge überschreitet, wobei in diesem Fall eine fehlende Adreßausnahme auftritt". Ein Satz "Ketten" mit Übersetzungsinformation wird behalten. Das virtuelle Adressenübersetzungsverfahren besteht darin, eine Kette zu suchen. Für jeden "Seitenfehler" wird eine ganze Kette gesucht, um das Auftreten des Seitenfehlers zu erkennen.
  • Die Vorrichtung zur Datenspeicherung ist bekannt und enthält einen virtuellen Adreßspeicher, eine externe Datenübertragungsschnittstelle und Steuerlogik, wobei die Vorrichtung angeordnet wird, um in Betrieb die Anforderungen zur Speicherdatenübertragung entweder sofort oder nach der Datenübertragung über die externe Datenübertragungsschnittstelle zu erfüllen, wobei die Einheit zur Datenübertragung eine Seite ist, bei der wenigstens einige der residenten Seiten durch Bezug auf die Directory-Look-Aside-Tables DLAT, die von der Steuerlogik gehalten wird, identifizierbar ist. Die Vorrichtung wird zum Beispiel in EP-A-239359 und in Electronic Design 35 (1987) April, No 9, pp107-113, beschrieben.
  • Diese Erfindung liefert eine Vorrichtung dieses Typs, die dadurch gekennzeichnet wird, daß eine aktuell übertragene Seite eine aus einer zuvor bestimmten Vielzahl von Größen sein kann und die Steuerlogik angeordnet ist, um eine unabhängige DLAT für jede Seitengröße zu halten und, wenn eine virtuelle Seite abgebildet wird, eine virtuelle Speicheradreßeingabe in nur eine der DLAT's zu ermöglichen, indem ein Größenwert allen virtuellen Adressen auf dieser Seite zugewiesen wird, und somit die parallele Abfrage von allen potentiell geeigneten DLAT Eingaben zu gewähren, wenn versucht wird, schnell eine empfangene Datenanforderung zu erfüllen.
  • Der DLAT Zugriff von dieser Anordnung ist immer so schnell (manchmal zehnmal schneller) wie das Kettenverfahren, indem die Information geliefert wird, die zur Übersetzung der virtuellen Adresse erforderlich ist. Dies liegt primär an der assoziativen (parallelen) Suche in der DLAT Struktur, wobei die "Ketten" struktur eine serielle Suche erforderlich macht. Die minimale und maximale Anzahl von Zyklen, um eine übersetzte Seite in der "cache-ähnlichen" Struktur der beschriebenen Anordnung zu finden, beträgt etwa zwei Zyklen. Bei Auftreten eines Seitenfehlers ist die Erkennung des Fehlers außerdem mit dem DLAT-/Segment-/Seitentabellenschema erheblich schneller als mit dem Kettenverfahren.
  • Im einzelnen enthält die beschriebene Anordnung eine satz-assoziative Anordnung, die in Systemen wie zum Beispiel die 308X und 3090 Serien benutzt wird, die von International Business Machines, Inc. vertrieben werden. Satz-assoziative Anordnungen sind bekannt; und werden zum Beispiel in den Strukturen benutzt, die in den US Patentschriften 4,638,426 und 4,695,950 beschrieben wurden. Einige der virtuellen Adreßbits werden benutzt, um einen Satz Eingaben auszuwählen; der Satz Eingaben (gewöhnlich zwei) wird dann assoziativ gesucht. Die satz-assoziative Anordnung ermöglicht schnellen Zugriff auf eine große Anzahl von Angaben (gewöhnlich 256 bis 512), erfordert jedoch eine kleine assoziative Suche (gewöhnlich zwei oder vier Eingaben). Das Problem bei Anwendung dieses Verfahrens, um Seiten mehrfacher Größe einzuschließen, liegt in der Auswahl der Bits, die benutzt werden, um den Satz Eingaben auszuwählen. Wenn DLAT Eingaben verschiedene Seitengrößen abdecken können, müssen die Bits aus denen ausgewählt werden, die zwischen Speichersegmenten, die wenigstens so groß wie die größte Seite sind, unterscheiden. Wenn jedoch diese Bits benutzt werden, um einen Satz von DLAT Eingaben auszuwählen, und wenn die Eingaben für kleine Seiten sind, kann nur ein kleiner zusammenhängender Speicherblock abgedeckt werden. Wenn ein 2-Wege, satzassoziatives Schema sowohl für 4KB als auch für 1MB Seiten benutzt wird, muß die Kongruenzklasse ein zusammenhängendes Segment abdecken, das wenigstens 1MB hat. Wenn jedoch die Eingaben 4KB entsprechen, können nur 8KB (zwei Eingaben) von dem zusammenhängenden Raum von 1MB abgedeckt werden.
  • Die beschriebene Anordnung hat eine DLAT Struktur, die gleichzeitig Seiten mehrfacher Größe handhaben kann. Zum Zwecke der Erläuterung haben die beiden Seitengrößen, die in dieser Beschreibung verwendet werden, 4KB und 1MB. Es wird eine 1MB Seite betrachtet, da diese das Äquivalent eines nicht-auslagerbaren Segments ist und Segmente gegenwärtig Teil des bevorzugten Übersetzungsprozeßes sind. Sobald die Segment-Information eingegangen ist, wird eher als der Prozeß (Bestimmung einer Seite innerhalb eines Segments) fortgesetzt wird, ein ganzes Segment als eine einzelne Größe betrachtet. Da Segmente auf 1MB virtuellen Grenzen sind, zwingt dies die lMB virtuellen Seiten auflMB Grenzen. Dies verringert das Fragmentierungsproblem, das in Systemen für Seiten mehrfacher Größe angetroffen wird, ermöglicht der vereinfachten Hardware, daß die niederwertigen Seitenausgleichsbits einfach unverändert durchlaufen.
  • Da die IBM 3090 eine bekannte Maschine ist, wird deren DLAT Einrichtung benutzt, um Aspekte der beschriebenen Anordnung zu beschreiben. Die DLAT ist 2-Wege satz-assoziativ mit 128 Paar Eingaben, wobei jede Eingabe eine 4KB Seite darstellt. Um der DLAT zu ermöglichen, einen großen, zusammenhängenden Teil des Speichers abzudecken, wird das Paar von DLAT Eingaben ausgewählt, indem die Kongruenzklassen-Auswahladreßbits unmittelbar über den Ausgleichbits verwendet werden, um die Wörter innerhalb einer Seite zu definieren, d.h. benachbarte Seiten werden von verschiedenen DLAT Paaren abgedeckt. Die 128 Paare von Eingaben liefern jedoch nur die Deckung für einen kleinen Teil (z.B. 1024KB in einer Anordnung) eines angenommenen 2GB Raums.
  • Ohne daß die Vielseitigkeit verlorengeht, wird diese Implementierung der DLAT angenommen, mit Ausnahme, daß Eingaben sowohl für 4KB als auch 1MB zulässig sind. Anstatt einer einzelnen 128-Paar-DLAT in der 3090 werden zwei 64-Paar-DLAT-Strukturen benutzt, eine für 4KB Seiten und eine für 1MB Seiten. Ein natürlicher Vorteil von großen Seiten ist, daß eine einzelne 1MB Seite Deckung für einen großen zusammenhängenden Teil des Speichers mit einer einzelnen Eingabe liefert, wodurch die Wahrscheinlichkeit für einen DLAT Treffer erhöht wird und die kostspielige Suche durch Segment- und Seitentabellen entfällt.
  • Diese Anordnung sieht in Hochleistungs-Datenverarbeitungssystemen mit sehr großen schnellen Hauptspeichereinrichtungen einen dynamischen Adressenübersetzungsmechanismus vor, der zu noch größerer Leistung fähig ist, als diejenige, die in dem Stand der Technik beschrieben wird.
  • Die vorliegende Erfindung wird nun außerdem anhand von Beispielen mit Bezug auf ein Ausführungsbeispiel beschrieben, das in den beiliegenden Zeichnungen abgebildet ist, in denen
  • Fig. 1 in Form eines Diagramms die Abbildung von 4KB und 1MB virtuellen Seiten in 4KB und 1lMB echten Adreßräumen zeigt; Fig. 2 in Form eines Diagramms Fragmente der 4K DLAT Anordnung und der entsprechenden Eingaben zeigt, die gemäß der Abbildung von Fig. 1 gefunden wurden;
  • Fig. 3 in Form eines Diagramms Fragmente der 1MB DLAT Anordnung und der entsprechenden Eingaben zeigt, die gemäß der Abbildung von Fig. 1 gefunden wurden;
  • Fig. 4 in Form eines Diagramms/Schemas die DLAT Anordnung und Hardware-Logik zeigt, die zur Übersetzung der dargestellten virtuellen Adressen in echte Adressen zur Darstellung in einem Hauptspeicher benutzt wurden; und
  • Fig. 5 ein Blockdiagramm zeigt, das eine bevorzugte Form des dynamischen Adressenübersetzungsmechanismus darstellt, welcher Segmenttabellen und Seitentabellen zusammen mit der verbesserten DLAT Einheit für schnelle Übersetzungen von kürzlich benutzten, virtuellen Adressen benutzt.
  • Mit Bezug auf Fig. 1 wird festgestellt, daß sowohl der virtuelle Adreßraum 1 als auch der echte Adreßraum 2 in eine Anzahl von 1MB Blöcken von 0MB bis nMB aufgeteilt wird. Die virtuellen Raumblöcke 3 und 4, die mit 0MB und 50MB Adreßwerten beginnen, werden in Gruppen zu 256 4KB Seiten 3-0 bis 3-255 und 4-0 bis 4-255 aufgeteilt. Andererseits definieren die 1MB Blöcke 5-8 mit den virtuellen Anfangsadressen von 1MB, 63MB, 64MB und 65MB die 1MB Seiten in dem virtuellen Adreßraum. Die Blöcke 5-8 werden jeweils in den echten Adreßblöcken 9-12 abgebildet.
  • Einige der 4KB Seiten in den Blöcken 3 und 4 werden in den jeweiligen 4KB Seitenrahmen 13-0 bis 13-255 und 14-0 bis 14-255 der echten Adreßblöcke 13 und 14 abgebildet.
  • Nur zu Zwecken der Abbildung wird angenommen, daß alle der virtuellen Seiten, die oben beschrieben wurden, von DASD (ohne Abbildung) in den (abgebildeten) Hauptspeicher 2 (des echten Adreßraums) übertragen wurden. Es wird außerdem angenommen, daß einige der virtuellen Seiten in Raum 1, welche durch die Pfeile 15-1 bis 15-n mit den jeweiligen Seitenrahmen in dem Hauptspeicher 2 verbunden sind, Seiten sind, auf die in allerjüngster Zeit in ihren Kongruenzklassen hingewiesen wurde und die deshalb als Eingaben in der 4K Seite DLAT 20 (Fig. 2) und der 1MB Seite DLAT 21 (Fig. 3) gefunden werden. Die Hardware (ohne Abbildung) lädt die DLAT Eingaben, wie angefordert, aus den Seitentabellen in den Hauptspeicher 2 um.
  • Die Kongruenzklassen 0-63 werden für DLAT 20 den Seitenadressen 0, 4K, 8K ... 252K zugeordnet; für DLAT 21 den Seitenadressen 0, 1M, 2M, 3M ... 63M.
  • Jede DLAT 20 und 21 der beschriebenen Anordnung ist vorzugsweise eine 2-Wege satz-assoziative Anordnung mit vierundsechzig (64) Paar Eingaben (22-0 bis 22-63 und 23-0 bis 23-63), wobei jedes Paar eine Kongruenzklasse für 4KB bzw. 1MB Seiten darstellt. Die beiden Eingaben für jedes Paar werden mit A bzw. B gekennzeichnet.
  • Das DLAT Paar 22-0 (Fig. 2) enthält in Eingabe B (1) einen Adreßwert von 50M8, den Wert von TAG-Bits A0-A13 der virtuellen Seite 4-0 von Fig. 1, (2) den echten Seitenadreßwert 3MB + 4KB der Seite in Hauptspeicher 2, in welchem die in der virtuellen Seite enthaltene Information (d.h. die Inhalte davon) gespeichert ist, und (3) ein gültiges Bit = 1.
  • Eingabe A von Paar 22-0 enthält (1) den Wert (0MB + 256KB) der TAG-Bits A0-A13 für die virtuelle Seite 3-64 (Fig. 1), (2) die echte Seitenadresse (3MB + 16KB) in Hauptspeicher 2, in welchem die virtuelle Seite abgebildet wurde und (3) ein gültiges Bit = 1.
  • Ähnlich enthalten die DLAT Eingabepaare 22-1 und 22-63 gültige Eingaben (TAG-Bitwerte und echte Seitenadressen) für virtuelle Seiten 4-1, 3-65, 3-255 und 3-63 von Fig. 1 und die Seitenrahinen aus Hauptspeicher 2, in welche deren Inhalte gespeichert wurden.
  • In dem Eingabepaar 23-0 der DLAT 21 wurde Eingabe B ungültig gemacht (gültiges Bit = 0) und Eingabe A enthält die gültige Eingabe (TAG-Feldwert = 64MB und echte Seitenadresse = 4MB) für die virtuelle Seite 7, in welcher die Inhalte der virtuellen Seite 7 gespeichert wurden.
  • Ähnlich enthalten Eingabepaar 23-1A, B und Eingabe 23-63A gültige Eingaben für die virtuellen Seiten 5, 8 bzw. 6 und die Hauptspeicherseiten 9, 12 und 10, in denen deren Inhalte gespeichert wurden.
  • Wenn (während der Programmausführung) ein Prozessor den DLAT's 20 und 21 eine virtuelle Adresse präsentiert, wählen virtuelle Adreßbits A14-A19 (Fig. 4) ein Paar Eingaben aus der DLAT 20 und die virtuellen Adreßbits A6 bis A11 (Fig. 4) wählen ein Paar Eingaben aus der DLAT 21. Das Betriebssystem ermöglicht jedoch, wenn es einen virtuellen Block (4K oder 1MB) abbildet, eine virtuelle Speichereingabe in nur eine der DLAT's 20 und 21, indem eine Blockgröße (4KB oder 1MB) in alle der virtuellen Adressen in diesem Block (Seite) zugeordnet wird. Wenn eine neue Eingabe für eine zugegriffene virtuelle Adresse erfolgt, notiert somit die Hardware (ohne Abbildung) die Seitengröße, ordnet die virtuelle Seite der entsprechenden DLAT 20 oder 21 zu und speichert die passenden TAG-Bits A0-A13 in DLAT 20 oder A0-A5 in DLAT 21.
  • Demgemäß kann, wenn eine präsentierte, virtuelle Adresse die Auswahl von einem Paar Eingaben veranlaßt (wie oben beschrieben), möglicherweise nur ein Paar aus einer DLAT die passenden TAG-Bits für einen DLAT "Treffer" enthalten.
  • Es wird Bezug auf Fig. 4 genommen, welche die DLAT's 20 und 21 und die virtuellen Adreßbits A0-A31 zeigt, die in den Adreßbusleitungen B0-B31 des Prozessors empfangen wurden.
  • Kongruenzauswahlbits A14-A19 und A6-A11 werden über die Busleitungen B14-B19 und B6-B11 in den DLAT's 20 und 21 angelegt. Die DLAT 20 hat Eingang A und B, die Ausgänge 25, 26, 27 und 28, 29 und 30. DLAT 21 hat Eingang A und B, die Ausgänge 31, 32, 33 und 34, 35, 36. TAG-Bits A0-A13 der virtuellen Adresse in einem Paar von A und B DLAT Eingängen, die von den Kongruenzklassenbits A14-19 ausgewählt werden, werden an die Ausgänge 25 und 28 angelegt; gültige Bits in dem Eingangspaar werden an die Ausgänge 26 und 29 angelegt; und echte Adreßbits werden an die Ausgänge 27 und 30 angelegt.
  • Ähnlich werden TAG-Bits, gültige und echte Adreßbits in einem DLAT Eingangspaar, welche von den Kongruenzklassenbits A6-A11 ausgewählt werden, an die Ausgänge 31, 34 und 32, 35 und 33, 36 von DLAT 21 angelegt.
  • Die Ausgänge 25 und 28 bilden Eingänge in Vergleichsschaltkreisen 40 bzw. 41; Busleitungen B0-B13 bilden zweite Eingänge in den Vergleichsschaltkreisen 40, 41. Die Ausgänge 42, 43 der Vergleichsschaltkreise 40, 41 bilden Eingänge in logischen UND-Schaltkreisen 44, 45 und Eingang A und B mit den gültigen Ausgängen 26, 27 bilden zweite Eingänge in den UND-Schaltkreisen 44, 45.
  • Die Ausgänge 46, 47 der UND-Schaltkreise 44, 45 werden in einem logischen ODER-Schaltkreis 48 angelegt; und Ausgang 46 bildet einen Auswahleingang in einen Multiplexer 50. Die echten Adreßausgänge 27 und 30 bilden Eingänge in dem Multiplexer 50. Der Ausgang 51 des Multiplexers 50 wird mit den Busleitungen B20-B31 des Ausgleichbits an der Zusammenführung 52 verkettet und an einen Eingang in einem Multiplexer 53 angelegt.
  • Identische logische Mittel und Verbindungen werden für DLAT 21 bereitgestellt, welche Eingang A und B, Vergleichsschaltkreise 55, 56, UND-Gates 57, 58, ODER-Schaltkreise 59 und den Multiplexer 60 enthält. Der Ausgang des Multiplexers 60 wird an der Zusammenführung 61 mit den Busleitungen B12-B31 des Seitenausgleichsbits verkettet und beide werden mit den zweiten Eingängen in dem Multiplexer 53 verbunden.
  • Die Ausgänge 62 und 63 der ODER-Schaltkreise 48 und 59 werden für Gate-Signale in den Leitungen an der Zusammenführung 52 oder 61 über den Multiplexer 53 zu den echten Adreßleitungen A0-A31, Speicheradreßbus 64 von Hauptspeicher 1, benutzt.
  • Dies tritt jedoch während eines DLAT Zugriffs auf, d.h. der ODER-Schaltkreis 48 erzeugt ein logisches "1" Signal in der der Trefferzeile 63 der 4KB Seite oder der ODER-Schaltkreis 59 erzeugt ein logisches "1" Signal in der Trefferzeile 63 der 1MB Seite, nur wenn ein Vergleich in einem der Schaltkreise 40, 41 oder 55, 56 übereinstimmend auftritt und das gültige Bit (entsprechend dem einen Vergleichsschaltkreis) "1" ausgleicht.
  • Jetzt wird die Funktion der DLAT Einrichtungen in Fig. 4 beschrieben. Wenn ein Prozessor (ohne Abbildung) einen Befehl ausgibt, um Daten aus dem Hauptspeicher 2 zu lesen oder in diesen zu schreiben, werden die virtuellen Adreßbits A0-A31 in die Busleitungen B0-B31 plaziert. Die Kongruenzklassenbits A14-A19 und A6-A11 wählen entsprechende Paare von Eingaben in die DLAT's 20 und 21. Vergleichsschaltkreise 40 und 41 vergleichen die TAG-Bits A0-A13 in den Busleitungen B0-813; und die Schaltkreise 55, 56 vergleichen die TAG-Bits von A0-A5, die in den ausgewählten Eingängen A und B der DLAT 21 gespeichert sind, mit den virtuellen Adreßbits AO-A5 in den Busleitungen B0-B5.
  • Wenn einer der Schaltkreise 40, 41, 55, 56 einen übereinstimmenden Vergleich feststellt und das entsprechende gültige Bit "1" ausgleicht, dann erzeugt das entsprechende UND-Gate 44, 45, 57 oder 58 ein logisches "1" Ausgangssignal, das von einem der ODER-Schaltkreise 48 oder 59 auf die "Trefferzeile" 62 oder 63 der Seite angelegt wird. Beide Multiplexer 50 und 60 schalten durch einen der beiden echten Seitenrahmenadressen, die an ihre Eingänge angelegt werden, was von der logischen "1" oder "0" des Ausgangsstatus von UND-Gate 44 und UND-Gate 57 abhängt.
  • Die Ausgänge in den Leitungen 62, 63 informieren den Prozessor (ohne Abbildung), daß (1) ein Verzeichnis-"Treffer" (DLAT) auf einer 4KB oder 1MB Seite erfolgte und die echte Adresse in Bus 64 ist oder (2) kein Verzeichnis-"Treffer" erfolgte; und die echte Adresse kann nur erhalten werden, wenn Segment- und Seitentabellen im Hauptspeicher (wie in Fig. 5 abgebildet) durchsucht werden. Solche Tabellensuchvorgänge sind bekannt; Abbildung und Beschreibung finden sich auf Seite 205 einer "Introduction to Operating Systems" von HM Deitel, Nachdruck 1984, und ausführlicher in "IBM System/370 Principles of Operation (GA22-7000-10)", Beginn auf Seite 3-20, die im September 1987 von International Business Machines veröffentlicht wurde.
  • Im Falle eines Seitenfehlers, d.h. die gewünschte Seite hat keine Eingabe in den Segmentseitentabellen, weil die Seite nicht im Hauptspeicher 2 ist, muß der Prozessor von einer Zusatzeinrichtung, zum Beispiel von DASD, über eine E/A Operation auf die Seite zugreifen.
  • Kurz eine DLAT Einheit 70 (Fig. 5) besteht aus DLAT Anordnungen und zugehöriger Hardware-Logik; Abbildung und Beschreibung hierzu siehe Fig. 4. Die Einheit 70 ist mit einer Quelle 71 von der virtuellen Adresse für eine gewünschte Informationseinheit verbunden. Die virtuelle Adresse enthält eine Segmentnummer (Bits A0-A11), eine Seitennummer (Bits A12-A19) und einen Verschiebe- (oder Ausgleichs-)Adreßwert (Bits A20-A31). Dies setzt voraus, daß Segmente auf den 1MB Grenzen in dem virtuellen Adreßraum sind und Seiten auf den 4KB Grenzen sind. Adreßbits A0-A31 werden auf die DLAT Einheit 70 auf Weise angelegt, die mit Bezug auf Fig. 4 beschrieben wurde. Wenn ein DLAT "Treffer" auftritt, werden die echten Adreßbits RA0-RA31 über Bus 64 auf eine echte Zieladresse 72 angelegt.
  • Wenn kein DLAT "Treffer" auftritt, wird der Segment-/Seitentabellenmechanismus von Fig. 5 aktiviert, um die gewünschte Seite zu lokalisieren. Die Segmentnummer wird bei 73 in einer Segmenttabelle zu dem Originalwert in Register 74 addiert, um auf eine Eingabe 75 in einer Segmenttabelle 76 im Hauptspeicher 2 zuzugreifen.
  • Die weitere Aktion hängt davon ab, ob die virtuelle Adresse auf einer 1MB oder einer 4KB Seite ist. Bei 1MB Seiten wird die Eingabe 75 mit den echten (physischen) Seitenadreßbits RA0-RA11 aufgefüllt, welche ohne weiteren Suchvorgang in der Tabelle zu Bestimmung 72 geleitet werden; und die Seitennummernbits RA12-RA19 und die Verschiebebits 20-31 bilden zusammen den Ausgleich für die gewünschten Daten in der 1MB Seite, auf die von Eingabe 75 zugegriffen wird.
  • Bei 4KB Seiten wird die Eingabe 75 mit der Anfangsadresse von der Seitentabelle 79 des Segments aufgefüllt, das von der Eingabe 75 definiert wird.
  • Der Adreßwert in Eingabe 75 wird mit der Seitennummer bei 77 verkettet, um auf eine Eingabe 78 in einer Seitentabelle 79 im Hauptspeicher 2 zuzugreifen. Die Eingabe 78 enthält die Seitenrahmenbits RA0-RA19 der echten Adresse der gewünschten Seite. Die Seitenausgleichsbits RA20-RA31 werden mit den Bits RA0-RA19 bei 72 verkettet. Dies setzt voraus, daß die gewünschte Seite eine gültige Seite ist, die zuvor im Hauptspeicher 2 gefunden wurde. Wenn die Seite durch diesen Tabellensuchvorgang nicht im Hauptspeicher 2 gefunden wird, tritt ein Seitenfehler auf; und auf die Seite muß von einer Zusatzspeichereinrichtung über E/A Operationen zugegriffen werden.
  • Somit liefert die beschriebene Anordnung eine DLAT Einrichtung für 4KB Seiten und eine zweite DLAT Einrichtung für 1MB Seiten. Jede DLAT ist eine 2-Wege satz-assoziative Anordnung, jeweils mit 64 Paar Eingaben. Obwohl die Partitionen für die beiden Einrichtungen unterschiedlich sind, wird die virtuelle Adresse in drei Felder partitioniert. Die niederwertigen Bits, welche ein Byte innerhalb einer Seite beschreiben, sind die Verschiebebits (A20-A31 für 4KB Seiten und A12-31 für die 1MB Seiten). Die 6 Bits, welche an die Verschiebebits angrenzen, sind die Kongruenzklassen-Auswahlbits. Diese Bits (A14-A19 für 4KB und A6-A11 für 1MB Seiten) bestimmen, welche Eingabepaare in jeder DLAT Einrichtung gekennzeichnet werden. Die verbleibenden (höherwertigen) Bits sind "TAG"-Feldbits.
  • In jeder DLAT Einrichtung wird ein Paar Eingaben den Seiten zugeordnet, die ein Kongruenzklassen-Auswahlfeld von "0" haben. Ein zweites Paar von Eingaben wird jeder Seite zugewiesen, die ein Kongruenzklassen-Auswahlfeld von "1" hat, ein weiteres Paar für "2" und so weiter, bis zu dem letzten Paar von Eingaben, die jeder Seite in der "63" Kongruenzklasse zugewiesen werden. Durch Benutzung der Kongruenzklassen-Auswahlbits von jeder Adresse, die zu übersetzen ist, um ein Paar Eingaben in jeder DLAT Einrichtung zu adressieren, ist es möglich, zu bestimmen, ob die Übersetzungsinformation für die Adresse in diesen DLATS vorhanden ist oder nicht. Jede Eingabe in die DLAT enthält einen ersten Teil, der aus den Bits des TAG-Felds der entsprechenden virtuellen Seite besteht, einen zweiten Teil, der die echte Seitenrahmenadresse dieser Seite im echten Speicher enthält; und ein dritter Teil enthält einen Gültigkeitsbit, der angibt, ob der TAG und die zugehörige echte Seitenrahmennummer tatsächlich gültig sind oder nicht, d.h. eine solche Seite existiert zuvor im Hauptspeicher. Nicht zugehörige DLAT Felder, wie Schlüssel, usw., sind in der vorliegenden Beschreibung nicht enthalten.
  • Wenn eine virtuelle Seitenadresse von dem Systemprozessor den DLAT's präsentiert wird, lesen die jeweiligen Kongruenzklassen-Auswahlbits (A14-19 oder A6-11) ein Paar Eingaben aus der jeweiligen DLAT, und die Logik vergleicht das TAG-Feld von jeder Eingabe mit den entsprechenden Bits der virtuellen Adresse, die den DLAT's präsentiert wird. Wenn es einen übereinstimmenden Vergleich gibt, d.h. einen Verzeichnis- "Treffer", und das gültige Bit ist "ON", wird die echte Seitenadresse der Eingabe, welche den Treffer verursachte, in dem echten Adreßbus des Systems zum Zugriff auf den Hauptspeicher plaziert. Zur gleichen Zeit werden die Verschiebeadreßbits mit der echten Seitenadresse zur Adressierung der ausgewählten Bits oder Bytes im Hauptspeicher verknüpft.
  • Da durch die virtuelle Adresse gleichzeitig auf beide DLAT's zugegriffen wird, und da deren Eingabepaare ausgelesen und zur gleichen Zeit mit den ausgewählten virtuellen Adreßbits verglichen werden, gibt es keinen Leistungsverlust in der DLAT Struktur, durch daß zwei anstatt nur eine DLAT vorhanden ist. Falls es keinen DLAT Treffer gibt, wird eine konventionelle Segment-/Seitentabellen-Übersetzungssequenz initiiert. 4KB Seiten und 1MB Seiten werden ausschließlich nur mit einer DLAT benutzt. Jede Seite hat eine Eingabe in nur einer der DLAT's; eine Adresse (virtuell oder echt) ist in jeder 4KB Seite oder 1MB Seite. Die Hardware erlaubt es, daß 4KB und 1MB Seitentabelleneingaben nur für 4KB bzw. 1MB Seiten in der DLAT plaziert werden. Deshalb garantiert ein Treffer in einer der beiden DLAT's einen Nichttreffer in der anderen DLAT.
  • Wie in irgendeinem Speicherverwaltungssystem für Seiten mehrfacher Größe spielt das Betriebssystem eine Rolle bei der Durchsetzung bestimmter Einschränkungen. Es wird angenommen, daß das Betriebssystem 1MB Seiten (echt und virtuell) in 1MB Grenzen halten wird. Gegenwärtig werden 4KB Seiten (echt und virtuell) in 4KB Grenzen gehalten. Die 1MB Seitengröße wird bevorzugt, da System 370 Betriebssysteme 1MB Segmente unterstützen. Eine 1MB Seite (virtuell) ist deshalb stets äquivalent zu vorhandenen Segmenten in diesen Betriebssystemen, die in 1MB Grenzen liegen.
  • Die wesentliche Änderung in den Betriebssystemen besteht darin, echten Adreßraum zu verlangen, um 1MB Seiten in Megabyte Grenzen zu haben. Zur Zeit gibt es nur 4KB Seitenrahmen, die in 4KB Grenzen vorhanden sind. Durch Änderung der Betriebssysteme, um physischen Speicher in 1MB Partitionsseiten eher als in 4KB auszuschließen, können verschiedene Vorteile erlangt werden. Einige der 1MB Blöcke können benutzt werden, um 1MB Seiten zu sichern, während der Rest der 1MB Blöcke in 256 4KB Seiten partitioniert wird. Das Betriebssystem kann deshalb eine Anzahl von 4KB Seiten und eine Anzahl von 1MB Seiten verwalten. Wenn die Anzahl von 1MB und 4KB Seiten statisch bestimmt wird, können mit gegenwärtig benutzten Algorithmen 4KB und 1MB Seiten verwaltet werden. Zukünftige Verwaltungsschemata können eine effizientere, dynamische Umwandlung zwischen einem 1MB Block mit 4KB Seitenrahmen und einer 1MB Seite des physischen Speichers ermöglichen. Da mehr Seiten von einer vorgegebenen Größe erforderlich sind, können einige Seiten der anderen Größe konvertiert werden. Um beim Sammeln ständig "freier" 4KB Seiten zu helfen, damit eine 1MB Seite gebildet werden kann, kann eine begriffliche Trennlinie (die variieren kann) verwendet werden, um den oberen Teil des Speichers (1MB Seiten) von dem unteren Teil (4KB Seiten) zu partitionieren.
  • Wenn 1MB Seiten in 1MB Grenzen gehalten werden, so reduziert dies Fragmentierungsprobleme. Diese Einschränkung vereinfacht auch bedeutend die Hardware. Die niederwertigen Bits (die Bytes innerhalb einer Seite auswählen) können die Übersetzungseinheit einfach ohne Änderung durchlaufen. Desweiteren wird die Bitanzahl, die für jede Eingabe in die Seiten-/Segmenttabellen und in die DLAT erforderlich ist, reduziert.

Claims (9)

1. Datenspeicherungsvorrichtung mit einem virtuellen Adreßspeicher, einer externen Datenübertragungsschnittstelle und Steuerlogik, wobei die Vorrichtung angeordnet wird, um in Betrieb die Anforderungen zur Speicherdatenübertragung entweder sofort oder nach der Datenübertragung über die externe Datenübertragungsschnittstelle zu erfüllen, wobei die Einheit zur Datenübertragung eine Seite ist, bei der wenigstens einige der residenten Seiten durch Bezug auf die Directory-Look-Aside-Tables DLAT (20, 21), die von der Steuerlogik gehalten wird, identifizierbar ist, und in der Seiten sind, von denen sich wenigstens eine von den zuvor bestimmten Größen unterscheidet, dadurch gekennzeichnet, daß eine aktuell übertragene Seite eine aus einer zuvor bestimmten Vielzahl von Größen sein kann und die Steuerlogik angeordnet ist, um eine unabhängige DLAT für jede Seitengröße zu halten und, wenn eine virtuelle Seite abgebildet wird, eine virtuelle Speicheradreßeingabe in nur eine der DLAT's zu ermöglichen, indem ein Größenwert allen virtuellen Adressen auf dieser Seite zugewiesen wird, und somit die parallele Abfrage von allen potentiell geeigneten DLAT Eingaben zu gewähren, wenn versucht wird, schnell eine empfangene Datenanforderung zu erfüllen.
2. Vorrichtung wie in Anspruch 1 angemeldet, wobei die behaltenen DLAT's satz-assoziativ sind, und die Steuerlogik angeordnet ist, um einen unterschiedlichen Teil von der Adresse aus der aktuellen Datenanforderung zur Satzbestimmung zu kombinieren, die für jede DLAT passend ist.
3. Vorrichtung wie in Anspruch 1 oder Anspruch 2 angemeldet, wobei jede DLAT Eingabe in jedem Satz ein "gültiges" Bit enthält, und teilweise den Zugriff auf die Inhalte der angegebenen echten Seite ermöglicht.
4. Vorrichtung wie in irgendeinem vorhergehenden Anspruch angemeldet, wobei die Steuerlogik angeordnet ist, um einen Ausgleichsteil von den angeforderten Adreßdaten mit der echten Adresse zu verketten.
5. Vorrichtung wie in irgendeinem vorhergehenden Anspruch angemeldet, wobei eine der Seitengrößen 1MB beträgt und eine andere Seitengröße 4KB beträgt.
6. Ein Speicher-Subsystem, das eine Vorrichtung wie in irgendeinem vorhergehenden Anspruch und Massenspeichereinrichtungen enthält, die mit der externen Datenübertragungsschnittstelle verbunden sind.
7. Ein Subsystem wie in Anspruch 8 angemeldet, wobei die Seitendaten in passenden Grenzen gespeichert werden.
8. Ein Datenverarbeitungssystem mit einem Subsystem wie in Anspruch 6 oder Anspruch 7 angemeldet, das einen Prozessor enthält, der mit der externen Datenübertragungsschnittstelle verbunden ist, wobei das System so angeordnet ist, daß es, ungeachtet der Seitengröße, keine Seitenüberlappung gibt.
9. Ein Verfahren zum Zugriff auf virtuell adressierte, satzassoziative Speicherdatenseiten von unterschiedlichen, zuvor bestimmten Größen in einem Datenverarbeitungssystem mit Massenspeicher und Seitenspeicher, wobei Daten über virtuelle Adresse angefordert werden und auf den Seitenspeicher über die echten Adressen zugegriffen wird,
wobei das Verfahren dadurch gekennzeichnet wird, daß
für jede Seitengröße eine Directory-Look-Aside-Table DLAT (20, 21) bereitgestellt wird;
bei Abbildung einer virtuellen Seite, eine virtuelle Speicheradreßeingabe in nur eine der DLAT's ermöglicht wird, indem ein Größenwert allen virtuellen Adressen in einer Speicherdatenseite, die abzubilden ist, zugewiesen wird, und somit die parallele Abfrage von allen potentiell geeigneten DLAT Eingaben zu gewähren, wobei nur eine DLAT auf die parallele Abfrage reagieren wird, indem ein einzelner Zugriff auf die gesuchte Seite geliefert wird.
DE68923437T 1988-12-15 1989-11-23 Adressenübersetzung für Seiten mehrfacher Grösse. Expired - Fee Related DE68923437T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/285,176 US5058003A (en) 1988-12-15 1988-12-15 Virtual storage dynamic address translation mechanism for multiple-sized pages

Publications (2)

Publication Number Publication Date
DE68923437D1 DE68923437D1 (de) 1995-08-17
DE68923437T2 true DE68923437T2 (de) 1996-03-07

Family

ID=23093089

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68923437T Expired - Fee Related DE68923437T2 (de) 1988-12-15 1989-11-23 Adressenübersetzung für Seiten mehrfacher Grösse.

Country Status (5)

Country Link
US (1) US5058003A (de)
EP (1) EP0373780B1 (de)
JP (1) JPH02189659A (de)
CA (1) CA2005463C (de)
DE (1) DE68923437T2 (de)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2858795B2 (ja) * 1989-07-14 1999-02-17 株式会社日立製作所 実記憶割り当て方法
CA2045789A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Granularity hint for translation buffer in high performance processor
US5222222A (en) * 1990-12-18 1993-06-22 Sun Microsystems, Inc. Apparatus and method for a space saving translation lookaside buffer for content addressable memory
US5263140A (en) * 1991-01-23 1993-11-16 Silicon Graphics, Inc. Variable page size per entry translation look-aside buffer
EP0508577A1 (de) * 1991-03-13 1992-10-14 International Business Machines Corporation Adressübersetzungseinrichtung
EP0506236A1 (de) * 1991-03-13 1992-09-30 International Business Machines Corporation Adressübersetzungseinrichtung
JPH04360252A (ja) * 1991-06-06 1992-12-14 Mitsubishi Electric Corp 計算機の仮想記憶におけるアドレス変換方式
JPH0546447A (ja) * 1991-08-08 1993-02-26 Hitachi Ltd 空き領域検索方法
JPH0581133A (ja) * 1991-09-19 1993-04-02 Nec Corp 情報処理装置
GB2260628A (en) * 1991-10-11 1993-04-21 Intel Corp Line buffer for cache memory
CA2285096C (en) * 1991-11-12 2000-05-09 Ibm Canada Limited-Ibm Canada Limitee Logical mapping of data objects using data spaces
JPH05165715A (ja) * 1991-12-12 1993-07-02 Nec Corp 情報処理装置
JP3183719B2 (ja) * 1992-08-26 2001-07-09 三菱電機株式会社 アレイ型記録装置
US5712998A (en) * 1993-07-13 1998-01-27 Intel Corporation Fast fully associative translation lookaside buffer with the ability to store and manage information pertaining to at least two different page sizes
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5526504A (en) * 1993-12-15 1996-06-11 Silicon Graphics, Inc. Variable page size translation lookaside buffer
JPH07182239A (ja) * 1993-12-24 1995-07-21 Nec Corp セグメント分割管理システム
DE69428881T2 (de) * 1994-01-12 2002-07-18 Sun Microsystems, Inc. Logisch adressierbarer physikalischer Speicher für ein Rechnersystem mit virtuellem Speicher, das mehrere Seitengrössen unterstützt
US5440710A (en) * 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5652872A (en) * 1994-03-08 1997-07-29 Exponential Technology, Inc. Translator having segment bounds encoding for storage in a TLB
DE19524925A1 (de) * 1994-07-09 1996-02-01 Gmd Gmbh Verfahren zum Umsetzen einer virtuellen Adresse in eine reale Adresse
US5907867A (en) * 1994-09-09 1999-05-25 Hitachi, Ltd. Translation lookaside buffer supporting multiple page sizes
US5946715A (en) * 1994-09-23 1999-08-31 Ati Technologies Inc. Page address space with varying page size and boundaries
US5682495A (en) * 1994-12-09 1997-10-28 International Business Machines Corporation Fully associative address translation buffer having separate segment and page invalidation
US5752275A (en) * 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5802594A (en) * 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
US5784701A (en) * 1995-09-19 1998-07-21 International Business Machines Corporation Method and system for dynamically changing the size of a hardware system area
US5708790A (en) * 1995-12-12 1998-01-13 International Business Machines Corporation Virtual memory mapping method and system for address translation mapping of logical memory partitions for BAT and TLB entries in a data processing system
US6026476A (en) * 1996-03-19 2000-02-15 Intel Corporation Fast fully associative translation lookaside buffer
US5765190A (en) * 1996-04-12 1998-06-09 Motorola Inc. Cache memory in a data processing system
US5918251A (en) * 1996-12-23 1999-06-29 Intel Corporation Method and apparatus for preloading different default address translation attributes
US5930830A (en) * 1997-01-13 1999-07-27 International Business Machines Corporation System and method for concatenating discontiguous memory pages
US6088780A (en) * 1997-03-31 2000-07-11 Institute For The Development Of Emerging Architecture, L.L.C. Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address
US6012132A (en) * 1997-03-31 2000-01-04 Intel Corporation Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table
US6000014A (en) * 1997-04-14 1999-12-07 International Business Machines Corporation Software-managed programmable congruence class caching mechanism
US6026470A (en) * 1997-04-14 2000-02-15 International Business Machines Corporation Software-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels
US5983322A (en) * 1997-04-14 1999-11-09 International Business Machines Corporation Hardware-managed programmable congruence class caching mechanism
US6112285A (en) * 1997-09-23 2000-08-29 Silicon Graphics, Inc. Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support
US6182089B1 (en) 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
JP2000276404A (ja) * 1999-03-29 2000-10-06 Nec Corp 仮想記憶装置および仮想記憶方法、並びに記録媒体
US6857058B1 (en) * 1999-10-04 2005-02-15 Intel Corporation Apparatus to map pages of disparate sizes and associated methods
US6970992B2 (en) * 1999-10-04 2005-11-29 Intel Corporation Apparatus to map virtual pages to disparate-sized, non-contiguous real pages and methods relating thereto
US6665785B1 (en) * 2000-10-19 2003-12-16 International Business Machines, Corporation System and method for automating page space optimization
US6760826B2 (en) * 2000-12-01 2004-07-06 Wind River Systems, Inc. Store data in the system memory of a computing device
US7028139B1 (en) 2003-07-03 2006-04-11 Veritas Operating Corporation Application-assisted recovery from data corruption in parity RAID storage using successive re-reads
US7076632B2 (en) 2003-10-16 2006-07-11 International Business Machines Corporation Fast paging of a large memory block
US7278008B1 (en) 2004-01-30 2007-10-02 Nvidia Corporation Virtual address translation system with caching of variable-range translation clusters
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
US7334108B1 (en) 2004-01-30 2008-02-19 Nvidia Corporation Multi-client virtual address translation system with translation units of variable-range size
US7475219B2 (en) * 2004-08-27 2009-01-06 Marvell International Ltd. Serially indexing a cache memory
US20080028181A1 (en) * 2006-07-31 2008-01-31 Nvidia Corporation Dedicated mechanism for page mapping in a gpu
JP2009009545A (ja) * 2007-01-31 2009-01-15 Hewlett-Packard Development Co Lp データ処理システム及び方法
US8037278B2 (en) * 2008-01-11 2011-10-11 International Business Machines Corporation Dynamic address translation with format control
US8082405B2 (en) * 2008-01-11 2011-12-20 International Business Machines Corporation Dynamic address translation with fetch protection
US8041922B2 (en) * 2008-01-11 2011-10-18 International Business Machines Corporation Enhanced dynamic address translation with load real address function
US8019964B2 (en) * 2008-01-11 2011-09-13 International Buisness Machines Corporation Dynamic address translation with DAT protection
US8041923B2 (en) 2008-01-11 2011-10-18 International Business Machines Corporation Load page table entry address instruction execution based on an address translation format control field
US8677098B2 (en) 2008-01-11 2014-03-18 International Business Machines Corporation Dynamic address translation with fetch protection
US8151083B2 (en) * 2008-01-11 2012-04-03 International Business Machines Corporation Dynamic address translation with frame management
US8417916B2 (en) * 2008-01-11 2013-04-09 International Business Machines Corporation Perform frame management function instruction for setting storage keys and clearing blocks of main storage
US8335906B2 (en) * 2008-01-11 2012-12-18 International Business Machines Corporation Perform frame management function instruction for clearing blocks of main storage
US8117417B2 (en) 2008-01-11 2012-02-14 International Business Machines Corporation Dynamic address translation with change record override
US8103851B2 (en) * 2008-01-11 2012-01-24 International Business Machines Corporation Dynamic address translation with translation table entry format control for indentifying format of the translation table entry
US8086811B2 (en) 2008-02-25 2011-12-27 International Business Machines Corporation Optimizations of a perform frame management function issued by pageable guests
US8095773B2 (en) 2008-02-26 2012-01-10 International Business Machines Corporation Dynamic address translation with translation exception qualifier
US8862859B2 (en) * 2010-05-07 2014-10-14 International Business Machines Corporation Efficient support of multiple page size segments
US8745307B2 (en) 2010-05-13 2014-06-03 International Business Machines Corporation Multiple page size segment encoding
US20150378904A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Allocating read blocks to a thread in a transaction using user specified logical addresses
US10114752B2 (en) 2014-06-27 2018-10-30 International Business Machines Corporation Detecting cache conflicts by utilizing logical address comparisons in a transactional memory
KR20220048864A (ko) * 2020-10-13 2022-04-20 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE37305E1 (en) * 1982-12-30 2001-07-31 International Business Machines Corporation Virtual memory address translation mechanism with controlled data persistence
US4823259A (en) * 1984-06-29 1989-04-18 International Business Machines Corporation High speed buffer store arrangement for quick wide transfer of data
US4695950A (en) * 1984-09-17 1987-09-22 International Business Machines Corporation Fast two-level dynamic address translation method and means
JPS61148551A (ja) * 1984-12-24 1986-07-07 Hitachi Ltd アドレス変換方式
JPH0656594B2 (ja) * 1985-05-07 1994-07-27 株式会社日立製作所 ベクトルプロセツサ
JPS62222344A (ja) * 1986-03-25 1987-09-30 Hitachi Ltd アドレス変換機構
US4774659A (en) * 1986-04-16 1988-09-27 Astronautics Corporation Of America Computer system employing virtual memory
US4797814A (en) * 1986-05-01 1989-01-10 International Business Machines Corporation Variable address mode cache
JPH0812636B2 (ja) * 1986-12-24 1996-02-07 株式会社東芝 仮想記憶制御方式の計算機システム
US4914577A (en) * 1987-07-16 1990-04-03 Icon International, Inc. Dynamic memory management system and method
US4980816A (en) * 1987-12-18 1990-12-25 Nec Corporation Translation look-aside buffer control system with multiple prioritized buffers
US4905141A (en) * 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification

Also Published As

Publication number Publication date
EP0373780A3 (de) 1991-04-10
JPH02189659A (ja) 1990-07-25
JPH0555900B2 (de) 1993-08-18
CA2005463C (en) 1995-06-27
DE68923437D1 (de) 1995-08-17
EP0373780B1 (de) 1995-07-12
EP0373780A2 (de) 1990-06-20
CA2005463A1 (en) 1990-06-15
US5058003A (en) 1991-10-15

Similar Documents

Publication Publication Date Title
DE68923437T2 (de) Adressenübersetzung für Seiten mehrfacher Grösse.
DE69132005T2 (de) Vorrichtung und Verfahren für einen raumsparenden Adressenübersetzungspuffer für inhaltsadressierbaren Speicher
DE69408922T2 (de) Adressumsetzungscache-Speicher zur Umwandlung von virtuellen Adressen in physikalische Adressen, der mehrere Seitengrössen unterstützt
DE3688192T2 (de) Seitenorganisierter cachespeicher mit virtueller adressierung.
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE69528615T2 (de) Verfahren und Struktur zur Indexierung eines Speichers mit niedriger Latenzzeit
DE69229667T2 (de) Simulierte cachespeicher-assoziativität
DE3587694T2 (de) Speicherzugriffssteuergerät zur Realisierung von geschützten Gebieten in einem Speicher, und mit solchem Speicherzugriffssteuergerät ausgerüsteter Speicher.
DE112011102487B4 (de) Zuordnen von logischen zu physischen Adressen in Halbleiterspeichereinheiten aufweisenden Speichersystemen
DE69530776T2 (de) Zweiwege set-assoziativer cache-speicher
DE69529374T2 (de) Datenprozessor mit Teilassoziativer Einheit
DE2459006C2 (de) Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage
DE69424767T2 (de) Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers
DE69225622T2 (de) Adressenübersetzungspufferspeicher mit per Eingabe veränderlicher Seitengrösse
DE69031978T2 (de) Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE69421370T2 (de) Verfahren und Vorrichtung zur Datenspeicherung
DE102014014076A1 (de) Reduzierte Adressenkonvertierung mit mehreren Seitengrößen
DE69424745T2 (de) Schnelle Datenbereitstellung aus physikalisch adressierten Datenspeicherstrukturen mittels Vorhersagemerkmalen von Seitengrenzenüberschreitungen
DE3852695T2 (de) Multiprozessorsystem mit mehreren Speichern.
DE19526960A1 (de) Eine Übersetzungs-Querzuordnungs-Puffer-Organisation mit variabler Seitengrößenabbildung und Opfer-Cache-Speicherung
DE69130942T2 (de) Vorrichtung zur Erhöhung der Leistung eines Adressenübersetzungspuffers
DE68925336T2 (de) Datenverarbeitungsvorrichtung mit Cache-Speicher
DE112018003032T5 (de) Cachestruktur, die ein logisches verzeichnis verwendet

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee