DE2433377A1 - Einrichtung und verfahren zur auswertung von datenseiten-transportvorgaengen in datenverarbeitungsanlagen - Google Patents

Einrichtung und verfahren zur auswertung von datenseiten-transportvorgaengen in datenverarbeitungsanlagen

Info

Publication number
DE2433377A1
DE2433377A1 DE2433377A DE2433377A DE2433377A1 DE 2433377 A1 DE2433377 A1 DE 2433377A1 DE 2433377 A DE2433377 A DE 2433377A DE 2433377 A DE2433377 A DE 2433377A DE 2433377 A1 DE2433377 A1 DE 2433377A1
Authority
DE
Germany
Prior art keywords
page
list
lru
register
line
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.)
Withdrawn
Application number
DE2433377A
Other languages
English (en)
Inventor
Laszlo Antal Belady
Robert Ingersoll Roth
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 DE2433377A1 publication Critical patent/DE2433377A1/de
Withdrawn 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

Description

Einrichtung und Verfahren zur Auswertung von Datenseiten-Transportvorgängen in Datenverarbeitungsanlagen
Die Erfindung betrifft Datenverarbeitungssysteme, in denen Betriebssysteme nach dem virtuellen Speicherkonzept arbeiten. Insbesondere betrifft sie ein Gerät zum Betrieb und zur Bewertung solcher Speicher im Betrieb.
In den letzten Jahren basierten verschiedene Typen von Datenverarbeitungsgeräten auf dem Konzept des virtuellen Speichers, der eine Kombination aus einem kleineren sehr schnellen Hauptspeicher mit einem größeren relativ langsameren Sekundärspeicher, verwendet. Der virtuelle Speicher benutzt den Sekundärspeicher, indem er ihm virtuelle Adressen gibt, die über den Grenzen des Hauptspeichers liegen. Das Betriebssystem in einem virtuellen Speicher arbeitet, als ob der Sekundärspeicher eine Erweiterung des sehr' schnellen Hauptspeichers wäre, mit Hilfe der "Seitenverschiebung". Unter "Seitenverschiebung" versteht man das Einbringen einer Informationsseite im Sekundärspeicher in den Hauptspeicher zu dem Zeitpunkt, an dem sie benötigt wird.
509807/1012
Gleichzeitig mit virtuellen Speichern, die eine Seitenbedarfstechnik verwenden, wurden auch Austausch-Algorithmen entwickelt, mit denen bestimmt wird, welche Seite aus dem Hauptspeicher zu entfernen und in den Sekundärspeicher zurückzusetzen ist, wenn der Hauptspeicher überlauft. Solche Austausch-Algorithmen benutzten bisher verschiedenen Kriterien zur Bestimmung ihrer Wahl wie beispielsweise die Regel zuerst-Ein-zuerst-Aus (FIFO), am längsten-unbenutzt (LRU) und andere. Bei einem Seitenanforderungssystem steht sehr oft eine benötigte Seite nicht dem Hauptspeicher zur Verfügung und diese NichtVerfügbarkeit nennt man eine "Fehlseite".
Schon zeitig bei der Entwicklung virtueller Maschinen, die die Seitenverschiebung benutzen und der Austausch-Algorithmen in solchen Maschinen wurde erkannt, daß es bei einem durch seine Instruktions-Referenzreihe gegebenen Programm und bei bekannter Hauptspeichergröße nützlich ist, die Mindestzahl von Fehlseiten zu kennen, die notwendig sind, damit das Programm läuft, um Speicherkonfigurationen und/oder Algorithmen auszuwerten. Die Mindestzahl von Fehlseiten dividiert durch die Anzahl von durch einen Austausch-Algorithmus erzeugten Fehlseiten ist dann definiert als der Wirkungsgrad dieses speziellen Algorithmus. Wirkungsgrade wurden bisher extensiv gemessen und dabei fanden sich große Schwankungen zwischen etwa 0,15 und 1,0, wobei der ungefähre Durchschnitt bei 0,4 liegt.
Um die Mindestzahl von Fehlseiten zu bestimmen wurden der sogenannte MIN-Algorithmus und der OPT-Algorithmus entwickelt. Der MIN-Algorithmus ist· genauer beschrieben worden von L. A. Belady, "A Study of Replacement Algorithms for Virtual Storage Computers", IBM Systems Journal, Vol. 5, No. 2, June 1966. Dieser Algorithmus ermöglicht die zusammenhängende Verarbeitung einer Referenzreihe und errechnet bei gegebener fester Speichergröße einen einzigen Mindeswert, indem er bei notwendiger und veränderlicher Verzögerung die Speicherzustände und ihre übergänge konstruiert. Der
YO 973 039
509807/1012
durch diesen MIN-Algorithmus gegebene Nachteil besteht darin, daß er nur jeweils für eine Speichergröße zutrifft.
Um diesen Nachteil zu überwinden wurde der OPT-Algorithmus entwickelt, der beschrieben ist in R. L. Mattson, J. Gecsei, D. R. Slutz, and I. L. Traiger, "Evaluation Techniques for Storage Hierarchies", IBM Systems Journal, Vol.. 9, No. 2, June 19 70. Dieser OPT-Algorithmus errechnet die Mindestzahl von Fehlseiten für den gesamten Bereich von Speiehergrößen im wesentlichen gleichzeitig. Der Nachteil bei der Verwendung des OPT-Algorithmus liegt darin, daß er eine wiederholte Vorausschau benötigt, die dann durch einen vorverarbeitenden ersten Durchgang eliminiert wird» Dieser erste Durchgang ist die Konstruktion der am wenigsten benutzten Distanzreihe die im allgemeinen in umgekehrter Reihenfolge aufgebaut wird. Die resultierende Sequenz wird hinterher durch den OPT-Algorithmus verarbeitet zur Berechnung seiner Distanzreihe, d. h. der Reihenfolge von Speichern mit Mindestkapazität.
Bei der Betrachtung der oben beschriebenen MIN- und OPT-Algorithmen wurde festgestellt, daß beide in bestimmten Situationen nützlich sind. So ist der MIN-Algorithmus eine einfache kontinuierliche und wirksame Technik, wenn nur eine Speichergröße von Interesse ist und kann häufig in Kompilierern für die Registerzuordnung verwendet werden. Eine solche Anwendung ist beschrieben in F. R. A. Hopgood, "Compiling Techniques", MacDonald: London, 1970; pp. 96-99, und in der Veröffentlichung von Dr. Gries, "Compiler Construction for Digital Computers", John Wiley & Sons, New York 19 72. Der OPT-Algorithmus ist jedoch etwas verfeinert und benötigt größere Mengen aufgezeichneter Information, er ist aber insofern wirkungsvoll, als er direkt Information über das gesamte Raum- Zeitverhalten des Programmes liefert. Daher wird der OPT-Algorithmus weitgehend zur Auswertung von Speicherhierarchiekonfigurationen verwendet.
YO 9 73 039
B09807/1012
2A33377
Weder der MIN-Algorithmus noch der OPT-Algorithmus kann jedoch als on-line-Element in einem Betriebssystem benutzt werden. Ihr Einfluß auf Aus tausch-Algorithmen ist daher nur indirekt und erfolgt über die größere Einsicht, die sie über das Programmverhalten vermitteln.
Weitere Entwicklungen in diesem Bereich sind beispielsweise durch die Veröffentlichung von L. P. Horwitz, R. M. Karp, R. E. Miller und S. Winograd, "Index Register Allocation", Journal of the ACM, Vol. 13, No. 1, January 1966, beschriebenen, worin eine elegante Lösung des allgemeinen Problemes der Indexregisterzuordnung beschrieben wird. In der ü. S.-Patentschrift Nr. 3 577 185 vom 4. Mai 1971 wird ebenfalls ein on-line-Element zur Berechnung von Näherungswerten für die Mindest-Fehlseitenzahl beschrieben.
Alle bisherigen Entwicklungen, die oben beschrieben wurden, zur Bestimmung der Mindestzahl von Fehlseiten haben jedoch verschiedene Nachteile, wie die Anwendbarkeit auf eine bestimmte Art von Umgebung, den Bedarf an wiederholter Vorausschau, Komlexität oder Unfähigkeit der Verwendung in einer on-line-Umgebung.
Die Aufgabe der vorliegenden Erfindung besteht daher in der Erstellung eines Gerätes und Verfahrens zur Bestimmung des Verhaltens von Austausch-Algorithmen in einem virtuellen Speichersystem, die on-line benutzt werden können sollen.
Die Lösung dieser Aufgabe ist im Haupt- und Nebenanspruch gekennzeichnet.
Nach dem Erfindungsgedanken ist eine Einrichtung zur Verwendung, in einem Datenverarbeitungsgerät vorgesehen, welches als Seitentransportmaschine betrieben wird und in dem ein Programm als eine Seitenbezugskette oder Reihe betrachtet wird, um die Mindestspeicherkapazitäten für die Seiten der Reihe zu bestimmen. Das Datenverarbeitungsgerät enthält Einrichtungen um eine erste Liste der Namen der Seiten des Programmes festzuhalten, die nach dem Krite-
YO 973 039
509807/1012
rium der am weitesten zurückliegenden Benutzung geordnet und aus den Namen der Seiten und ganzen Zahlen zusammengesetzt ist, die einen von verschiedenen diskreten Werten zwischen 1 und η haben und entsprechend zu jedem Seitennamen nach dem oben genannten Kriterium gehören, wobei η gleich der Gesamtzahl von Seiten im Programm ist. Das System enthält Einrichtungen, um eine zweite Liste von Seitennamen festzuhalten. Diese zweite Liste besteht aus einer geordneten Folge von 1 bis η Adressen, von denen jede wieder einen von verschiedenen diskreten Werten 1 bis η hat und wo an jeder Adresse eine ganze Zahl C steht, aus der die Mindestspeicherkapazität (MMC) der Seite bestimmt werden kann und wo jede der ganzen Zahlen in der zweiten Liste einen anderen Wert zwischen 1 und η hat. Das System enthält weiter Einrichtungen zur Bestimmung der Mindestspeicherkapazität (MMC) einer gegebenen angezogenen Seite, die Einrichtungen enthält, welche auf die Bezugnahme auf eine gegebene Seite reagieren und die zweite Liste in eine erste Gruppe von Adressen mit dem Wert 1 bis (Jl-I) und eine zweite Gruppe von Adressen mit den Werten vonA bis η worin £ gleich dem Wert der ganzen Zahl LRU ist, die zu der angezogenen Seite in der ersten Liste gehört. Die Bestimmungseinrichtung für die Mindestspeicherkapazität enthält weiterhin Einrichtungen zur Erhöhung entsprechender Adressen 2 bis (Jl-I) in der ersten Gruppe um 1, d. h. auf 3 bis auf Jl und Einrichtungen zum Auffinden der Adresse k in der zweiten Gruppe, wobei der niederste ganzzahlige Wert die Mindestspeicherkapazität ist. Außerdem enthält diese Einrichtung Vorkehrungen zur Markierung einer Reihe von Adressen in der zweiten Gruppe, die in der Untergruppe enthalten sind, die die Adressen Jl (Jl+1),... (k-1) enthält, die entsprechend die folgenden Werte haben (£+a), (Jl+b), (Jl+c) usw. nötigenfalls bis zur Adresse (k-1), worin (Jl+a) den kleinsten Adresswert hat, der größer ist alsÄ , so daß C (Jl+a) < C(Jl) ist, worin (Jl+b) den kleinsten Adresswert hat, der größer als U+a) ist und somit ist C(Jl+b) < C(Jl+a) usw. worin C(i) die ganze Zahl an der Adresse i ist. Die die Mindestspeicherkapazität bestimmende Einrichtung enthält außerdem Vorrichtungen zur Erzeugung der kleinsten Fehlzahl in der Gruppe der Zahlen, die von
YO 9 73 039
509807/1012
2 bis (C +1) dient, worin C der größte ganzzahlige Wert C
ITIcIX ITlclX
an den Adressen 2 bis (A-I) ist, und die so erzeugte kleinste Fehlzahl die Mindestspeicherkapazität der angezogenen Seite. In der MMC-Bestimmungseinrichtung sind weiterhin Vorrichtungen vorhanden, um den Adresswert 2 der erzeugten kleinsten Fehlzahl zuzuordnen und Einrichtungen, um jeder markierten Adresse in der Reihe den Wert der nächsten Adresse in der Reihe zuzuordnen wobei der höchste Adresswert in der Reihe den Wert k erhält, und wobei die ursprünglich an der Adresse k stehende ganze Zahl ausscheidet.
Nach dem Erfindungsgedanken ist außerdem ein Verfahren vorgesehen zur Verwendung in einem Datenverarbeitungsgerät, welches als Seitentransport-Maschine betrieben wird, in der ein Programm als eine Seitenbebezugsreihe betrachtet wird, um die Mindestspeicherkapazitäten für die Seiten der Reihe zu bestimmen. Das im Verfahren benutzte Datenverarbeitungsgerät enthält Einrichtungen zum Festhalten einer ersten Liste der Seitennamen des Programmes, die nach dem Kriterium der geringsten Benutzung geordnet ist. Diese erste Liste wird durch die Namen der Seiten bzw. ganzen Zahlen gebildet, wobei zu jedem Namen ein anderer der Werte 1 bis η nach dem Kriterium der geringsten Benutzung (LRU) gehört und η gleich der Gesamtzahl von Seiten im Programm ist. Zum Verfahren gehört auch das Fortschreiben einer zweiten Seitennamenliste, die aus einer geordneten Reihenfolge von η Adressen besteht, wobei jede der Adressen einen anderen Wert zwischen 1 und η hat. An jeder Adresse steht ein anderer Seitenname und eine ganze Zahl C, aus denen die Mindestspeicherkapazität (MMC) der Seite bestimmt werden kann. Jede der ganzen Zahlen in der zweiten Liste hat entsprechende diskrete Werte zwischen 1 und n. In einem weiteren Verfahrensschritt wird die Mindestspeicherkapazität einer gegebenen Bezugsseite bestimmt, wobei dieser Schritt auch wieder aus mehreren Unterschritten besteht. Wenn auf eine gegebene Seite Bezug genommen wird, wird die zweite Liste in eine erste Gruppe von Adressen mit den Werten zwischen 1 und (5,-1) und in eine zweite Adressgruppe mit den Werten I bis η unterteilt, worin %
YO 973 039
50 9807/1012
der Wert der LRü-Zahl ist, die zu der Seite in der ersten Liste gehört. Dann werden die Adressen 2 bis (5,-1) in der ersten Gruppe um 1 erhöht, wodurch sie die entsprechenden Werte 3 bis haben und die Adresse k in der zweiten Gruppe bestätigen, wobei der niedrigste ganzzahlige Wert für Mindestspeicherkapazität vorhanden ist. Zu dem Schritt, in dem die Mindestspeicherkapazität bestimmt wird, gehören weiter die Unterschritte der Markierung der Reihe von Adressen in der zweiten Gruppe, die in den Adressen Z1 U+l), ... (k-1) liegen, die die folgenden Werte haben U+a), (ί,+b), (£+c)... bis zur Adresse (k-1), wenn nötig, worin (£+a) der kleinste Adresswert ist, der größer ist als Z so daß C(£+a) < CU) ist, worin (ί,+b) den kleinsten Adresswert hat, der größer ist als (ί,+a), so daß C(Jl+b) < C(Z) ist usw., worin C(i) der Wert der ganzen Zahl C an der Stelle i ist, und die kleinste fehlende Zahl in der Gruppe der ganzen Zahlen erzeugt, die in die Gruppe 2 bis (C +1) eingeschlossen ist, worin Cmax der größte ganzzahlige Wert C an der Adressposition 2 bis ( jfl) ist, die erzeugte kleinste Fehlzahl die Mindestspeicherkapazität der bezogenen Seite ist. Der Schritt zur Bestimmung der Mindestspeicherkapazität umfaßt auch die Unterschritte der Zuordnung des Adresswertes 2 zur oben erzeugten kleinsten fehlenden Zahl und die Zuordnung zu jeder der Reihen der markierten Adressen der zweiten Gruppe des Wertes der nächsten Adresse in dieser Reihe, wobei die Adresse mit dem höchsten Wert in der Reihe dem Wert k zugeordnet wird. Die ursprünglich auf der Adresse k stehende Zahl wird nicht mehr beachtet .
Die Erfindung hat den Vorteil, daß das angegebene Gerät im Vergleich zu bekannten Einrichtungen einfach ist und mit kleinen Informationsmengen auskommt. Diese Informationen können während der laufenden Datenverarbeitung aufgezeichnet werden, so daß durch diesen on-line Betrieb die herkömmliche Abschaltung der Datenverarbeitungsanlag e entfällt, außerdem macht die Erfindung eine vorausschauende Vorverarbeitung dieser Informationen unnötig.
YO 973 039
509 807/1012
~ O —
Ein Ausführungsbeispiel der Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher beschrieben. Es zeigen:
Fig. 1 In einem Blockdiagramm das Erfindungskonzept;
Fign. 2A-2V zusammengelegt gem. Fig. 2 in Form eines Block-
diagrammes ein Ausführungsbeispiel der Erfindung;
Fig. 3A-3D zusammengelegt gemäß Fig. 3, Beispiele der Stu
fen in dem MIN-Kasten, d. h. den in Fig. 2 gezeigten OPT-Stapel;
Fign. 4A-4U zusammengelegt gemäß Fig. 4 das Blockdiagramm
des MIN-Kastens oder des OPT-Stapels, wobei in dieser Figur die Schaltungen im MIN-Kasten bei der Ausführung der ersten Phase des in Fig. 9 gezeigten Rechenbeispieles verfolgt werden;
Fign. 5A-5I zusammengelegt gemäß Fig. 5, dasselbe Bild wie
die Fign. 4A-4E, jedoch werden in dieser Figur die Schaltungen im MIN-Kasten bei der Ausführung der zweiten Phase des in Fig. 9 gegebenen Rechenbeispieles verfolgt;
die
Fign. 6A-6I dasselbe Bild wie die Fign. 5A-5I, jedoch wer
den hier die Schaltungen im MIN-Kasten bei der Ausführung der dritten Phase des in Fig. 9 gegebenen Rechenbeispieles verfolgt; die
Fign. 7A-7C zusammengelegt gemäß Fig. 7 sind identisch mit
den Fign. 4A-4C, 5A-5C und 6A-6C und hier werden
YO 973 039
509807/1012
die Schaltungen im MIN-Kasten bei der Ausführung der vierten Phase des in Fig. 9 gegebenen Rechenbeispieles verfolgt;
die
Fign. 8A-8U zusammengelegt gemäß Fig. 8 dasselbe Bild wie
die Fign. 4A-4U, jedoch werden in dieser Figur die Schaltung im MIN-Kasten bei der Ausführung der letzten Phase des in Fig. 9 gegebenen Rechenbeispieles verfolgt;
Fig. 9 ein Rechenbeispiel zur Erklärung der Arbeits
weise des MIN-Kastens nach dem Erfindungsgedanken;
Fig. 10 in einem Ablaufdiagramm eine Routine, die zum
Rückstellen des MIN-Kastens aufgerufen wird;
Fig. Ii in einem Ablaufdiagramm eine Routine, die bei
Auftreten einer weiten Ausnahme aufgerufen wird;
Fign. 12A-12B zusammengelegt gemäß Fig. 12 ein Ablaufdiagramm
einer Routine, die nach der Ausführung der Seitenausnahmeroutine der Fig. 11 aufgerufen wird, wo die Speicherkomponente der OPT-Liste in Konsistenz zu bringen, um die die Seitenausηahme in der OPT-Liste verursachende Seite verarbeiten und die LRU-Liste auf den neuesten Stand bringen zu können;
Fig. 13 in einem Ablaufdiagramm die MIN-Kasten-Suchrou-
tine, die in der in Fig. 12 gezeigten Routine verwendet wird;
YO 9 73 039
509807/1012
Fig. 14 ein Ablaufdiagramm der BUBL-Routine (Blasen
sortieren), die in der in Fig. 12 gezeigten Routine verwendet wird und
Fig. 15 ein Ablaufdiagramm der NEWR-Routine (Prozeß
neuer Bezug), die in dem Ablaufdiagramm der Fig. 11 verwendet wird.
In der nachfolgenden Beschreibung der Erfindung soll zuerst ein Programm betrachtet werden, welches durch seine Seitenbezugsreihe R dargestellt ist. Für jeden Ersatz-Algorithmus (Seitenaustausch-Algorithmus) ist eine solche Reihe die Eingabe. Was die Ausgabe betrifft, so erzeugt der oben erwähnte MIN-Algorithmus für eine gegebene Speichergröße einen einzigen Wert, d. h. die kleinste Zahl von Seitenfehlern, die zum Laufen eines Programmes notwendig ist. Der erwähnte OPT-Algorithmus benutzt die Eingabereihe R zuerst zur Erzeugung der LRU-Stapelstreckenfolge und dann benutzt er diese neue Folge als Eingabe für den Prozess, der tatsächlich die Reihenfolge der sogenannten Mindeststapelstrecken (Minimalabstände) herauszieht. In diesem Zusammenhang wird auf die oben erwähnte Veröffentlichung von Mattson und anderen verwiesen zur Definition des Ausdrucks "Stapel". Dabei wird jedes Element der Reihe R, d. h. der Originaleingabe, verbunden mit einer Stapelstrecke. Da eine optimale Stapelstrecke im wesentlichen die Mindestspeichergröße ist, die zu einer Referenz so gehört, derart, daß keine Fehlseite erzeugt wird, läßt sich die Mindestzahl von Fehlern für jede feste Speichergröße aus der Streckenreihe erreichen. Diese Berechnung ist in der erwähnten Mattson-Veröffentlichung beschrieben. In der hier beschriebenen Erfindung ist kein expliziter Stapel im Sinne der Mattson-Veröffentlichung vorgesehen. Die Folge von Mindestspeicherkapazitäten (MMC) wird Ausgabereihe genannt.
Bisher war das Endziel der optimalen Stapelkonstruktion für die Auswertung von Speicherhierarchien die Erzeugung der MMC-Reihe.
YO 9 73 039
509807/1012
In diesem Zusammenhang lassen sich die sogenannten "Trefferverhältnisse", d. h. die normalisierten Seitenfehlerzahlen als Funktion der Speichergröße direkt von der MMC errechnen. Dadurch kann man umfangreiche Aufzeichnungen der MMC-Reihe vermeiden.
In der nachfolgenden Beschreibung ist der zur laufenden Referenz gehörende MMC-Wert an jedem Punkt der Seitenbezugsreihe R eindeutig eine Funktion der vorhergehenden Referenzen, wodurch sich eine Vorausschau erübrigt und demzufolge weggelassen werden kann.
an diesem Punkt der Beschreibung der Erfindung wird für das nötige Hintergrundsmaterial soviel wie nötig vom MIN-Algorithmus beschrieben, wie er in der oben erwähnten Veröffentlichung von L. A. Belady in IBM Systems Journal, June 1966 beschrieben ist. Der Konzeptrahmen dieses Algorithmus ist eine zweidimensionale Markierungs-Matrix, in der eine Zeile zu jeder einzelnen Seite gehört. Ein Satz von KonstruktionsregeIn der Matrix für eine gegebene Speichergröße ρ und eine Bezugsreihe R ist folgender:
Wenn angenommen wird, daß der nächste Bezug in der Seitenbezugsreihe R zur Seite α erfolgt und die äußerste rechte nicht leere Spalte t-1 ist, dann gilt:
wenn Zeile α leer ist, markiere (α , t) und kehre zurück. Sonst finde die äußerste rechte Spalte t mit einer Markierung in Zeile α.
Wenn eine Spalter existiert, ta < τ < t, mit ρ Markierungen^ markiere (α, τ ) und kehre zurück.
Andernfalls markiere alle leeren (α, τ ), ta<T< t, und kehre zurück.
Nach sequentieller Verarbeitung der Eingabereihe R nach den obigen Regeln ist die Anzahl nicht leerer markierter Spalten gleich der Mindestzahl von Seitenzügen, die zum Lauf des Programmes erforderlich sind.
YO 973 Ο39
5 0 9 8 0 7/1012
Es folgt ein Beispiel mit einer Speichergröße ρ = 3 und einer Eingangs- (Referenz)-Reihe ABCDEDBCBDAEEAC von 15 Elementen.
Al 11
B 11111
C 1 111
D 111
Eil
In dem obigen Beispiel verursachen wiederholte Referenzen wie 2. B. EE keine neuen Markierungen für einen Wert von ρ und sind somit redundant. Bei der weiteren Beschreibung der Erfindung werden daher Wiederholungen unterdrückt und als Beispiel wird die folgende Reihe benutzt ABCDEDBCBDAEAC.
Die oben festgelegte Matrix ist relativ leicht zu interpretieren. Lücken in der Reihe stellen einen Seitenbezug von außen dar und Markierungen in einer gegebenen Spalte bezeichnen koexistente Seiten im Speicher. Innerhalb der durch die Speichergröße ρ festgelegten Beschränkung können Lücken mit Markierungen aufgefüllt werden bei einem neuen Bezug zu einer vorherbezogenen Seite, wodurch ein Seitenzug vermieden wird. Tatsächlich stellen p-Markierungen in einer Spalte ein Hindernis für einen Füllversuch dar, d. h. die Lücke ist permanent. Die Spalten der p-Markierungen werden im allgemeinen mit einer Verzögerung aufgebaut.
Da diese Darstellung aus dem Betrieb des MIN-Algorithmus resultiert, ist es jedoch schwierig, Matrizen zu vergleichen und dann zu interpretieren, die von verschiedenen p-Werten erzeugt sind, da die Spalten im allgemeinen nicht aufeinander und auf die Eingabereihe ausgerichtet sind. So wurde für das obige Beispiel und p=5 eine Spalte erzeugt mit lauter markierten Positionen, während die zu p=l gehörende Matrix so viele Spalten hat, wie Seitenbezüge zur Ausgabe sind, während jede Spalte nur eine Markierung hat.
YO 973 039
509807/1012
Nach dem Erfindungsgedanken wird der obige MIN-Algorithmus modifiziert. Wenn in der modifizierten Form der nächste Bezug gegeben wird, werden (α, t) für alle Fälle markiert. Da vor diesem neuen Bezug (α, t) durch Definition leer war, werden Matrizen für alle Speicher mit der Eingabereihe ausgerichtet und t kann als der Zeitindex für die Seitenreferenzreihe R betrachtet werden. Die nächste Referenz χ mit der zugehörigen t-ten Spalte. Zusätzlich zu den obigen Regeln erfolgt die Markierung (α, t) im letzten Schritt. Nachfolgend sind alle fünf Matrizen, d. h. P=I, ... 5 in dem verwendeten Beispiel gezeigt, das mit den modifizierten Regeln arbeitet.
ABCDEDBCBDAEAC
P =
A 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
B 1
C 1 1
η
E 1 1 1 1
A 1 1 1 1 1 1 1 1 1 1 1
B 1
C 1
D 1 1 1
E 1 1 pH
A 1 1 1 1 1 1 1 1 1
B 1 1
C 1 1 1
D
1
ρ = 2
P = 3
Al 111
B 11111111
C 111111111111 ρ = 4
D 1111111 E 11111111
Alllllllllllll
B 11111111
C 111111111111 P = 5
D 1111111
E 11111111
Ähnlich wie in der oben gezeigten Matrix übersteigt die Anzahl von Markierungen in einer Spalte niemals den Wert p, kann aber
YO 973 039
509807/1012
kleiner sein. Die Mindestzahl von zum Laufen des Programmes notwendigen Zügen ist dann gleich der Anzahl von Markierungen, vor denen links keine Markierung, sondern eine Lücke steht.
Die fünf oben gezeigten Matrizen werden jetzt überlagert. Es kann jedoch dabei keine gleichförmige Markierung, d. h. die Zahl 1, verwendet werden, da dieses zu einer nichtschlüssigen Figur führen würde, die mit der Matrix für p=5 identisch ist, welche die Einheit aller fünf Matrizen ist. Erweitert man den Bereich der Zeichen für die Markierung, so werden daher die neuen Zahlen 2, 3 und 4 unter Beachtung der Reihenfolge der ganzen Zahlen, die sie darstellen, eingeführt.
Außer den bisher gegebenen Regeln des erfindungsgemäßen Algorithmus sind noch Regeln erforderlich, um die Benutzung der Zahlen bei der Markierung zu lenken, beispielsweise die Erhaltung von Information über alle Fälle auch nach Überlagerung. Um die Konstruktionsregeln zu zeigen verfährt man wie folgt:
1.) Die alte Zahl 1 wird in der Matrix für p=l verwendet, wodurch das Verfahren für diesen Fall dann unverändert ist und es steht eine 1 in so vielen Spalten wie Bezüge verarbeitet werden. Es wird keine andere Zahl verwendet.
2.) Als nächstes wird festgestellt, daß keine Spalte Doppelzahlen enthält. Mit dieser Feststellung soll das Ziel erreicht werden, zwischen Fällen unterschiedlicher p-Werte nach der überlagerung unterscheiden zu können. Wenn also in einer gegebenen Position die Matrix ρ eine Markierung enthält, die Matrix (p-1) jedoch nicht, unterscheidet eine Zahl, die bisher in der entsprechenden Spalte in der Matrix (p-1) noch nicht benutzt wurde, zwischen diesen beiden Fällen.
YO 9 73 039
50 9807/1012
Jetzt kann man eine kombinierte Matrix aufbauen, indem man die Bezugsreihe kontinuierlich verarbeitet. Beim nächsten Bezug Xfc auf die Seite α, wird die Zahl 1 zur Markierung (α, t) verwendet. Dann beobachtet man eine Lücke links von der neuen Markierung, die an der linken Seite entweder durch den Rand der Matrix (neue Referenz) oder durch eine Zahl 1 (die jüngste vorhergehende Referenz zur Seite α) begrenzt ist. Im ursprünglichen MIN-Algorithmus würde im Gegensatz dazu, die Lücke nur gefüllt werden, wenn für jede Spalte im Bereich der Lücke die Zahl der Markierungen kleiner ist als ein festgelegter Wert für p. Nach dem Erfindungsgedanken wird eine Matrix jedoch für alle möglichen Werte von ρ aufgebaut und daher wird die Zahl für die Markierung verwendet, die in der Position (α ,t-1) den höchsten p-Wert aufweist, für den die Lückenfüllung gültig ist, d. h. für den Markierungen möglich sind zwischen den beiden letzten aufeinanderfolgenden Referenzen oder vor der ersten Referenz zur Seite α.
Da für alle Speichergrößen die Mindestzahl von zum Lauf des Programmes notwendigen Seiten Ausnahmen festgestellt werden soll, müssen die Zahlen in einer bestimmten Reihenfolge verwendet werden. Beginnend mit der äußersten linken Position der Lücke, wird die kleinste noch nicht in dieser Spalte vorhandene Zahl zur Markierung benutzt. Da zu der Zahl auch eine Bedeutung gehört, d. h. sie die p-Größe des Speichers angibt, der die Seite enthalten kann, bildet eine einmal in einer Lücke verwendete Zahl eine untere Grenze nach rechts in derselben Lücke, d. h. bevor die Zahl 1 erreicht wird. Mit anderen Worten eine Zahlenreihe 22 3444 ist gültig, während z. B. eine Zahlenreihe 223443 nicht gültig ist. Der Grund für diese nicht abnehmende Folge in der Zahlenreihe ist offensichtlich. Für die betrachtete Seitenschiebeanforderung heißt das, wenn eine Seite einmal kein Element des Speichers der Größe p, d. h. aus diesem geschoben ist, zieht nur ein anderer Bezug zur Seite sie wieder in alle Speicher zurück, die kleiner oder gleich ρ sind einschließlich des Speichers der Größe 1.
YO 973 039
509807/1012
Eine Lückenfüllreihe aus nur einer Zahl a wird jetzt als a-Reihe bezeichnet. Die mit einer Zahl a beginnende und mit einer Zahl b endende Reihe wird a/b-Reihe genannt. Die obige gültige Reihe ist dann eine 2/4-Reihe. Weiter wird auf den Reihen der Wert der Einsen ausgeklammert. Demzufolge haben a oder b niemals den Wert 1. Es folgt jetzt eine Zusammenfassung des oben gesagten in einem nummerischen Reihen-Algorithmus:
Es wird angenommen, daß der nächste Bezug in der Reihe R,χ zur Seite α verläuft.
Dann folgt die Markierung (α, t) mit einer Zahl 1. Beginnend mit der äußersten rechten nicht leeren Position ta in einer Zeile α ist jede Position (α,τ), ta < τ < t mit einer Zahl P(=t) = max (u, v) zu bezeichnen, worin u = die Mindestfehlzahl in der Spalte τ und ν die Zahl in der Position (α, t-1) ist und dann kehrt man zurück.
Die Anwendung des obigen Regelsatzes auf das weiter oben besprochene Beispiel erzeugt die folgende Zahlenmatrix:
t
ABCDEDBCBDAEAC
A 1234555555121
B 212233121
C 33134441222331
D 4441212331
E 555512344441
2345234235423
Es ist einfach, die gleichförmig markierte Matrix für jeden gegebenen p-Wert herauszuziehen. Eine solche Extraktion kann durch die folgenden beiden Schritte erfolgen:
a) alle a/b-Reihen (zwischen den Einsen) entfernen, für die b > p,
b) alle übrigen Symbole in Einsen verwandeln.
YO 9 73 039
509807/1012
Daraus läßt sich entnehmen, daß die kombinierte Matrix die folgenden Eigenschaften hat; Wenn der t-te Bezug zur Seite α erfolgt, dann ist (a,t) markiert mit 1. Außerdem stellt die Zahl (cx/t-1) , d. h. ρ die Mindestkapazität des Speichers (MMC), der die Seite α enthält, dar vor dem t-ten Bezug. Die Folge dieser MMC-Werte ist unmittelbar unter der Zahlenmatrix wiedergegeben. Für jeden Bezug gibt es einen MMC mit Ausnahme des ersten, der nach Definition die Zahl 1 ist, da jedoch wiederholte Bezugnahmen ausgeschaltet sind, wird dieser erste MMC-Wert unterdrückt.
Demzufolge erübrigt zwar der Algorithmus nach dem Erfindungsgedanken den durch den oben beschriebenen OPT-Algorithmus geforderten ersten Vorausschaudurchgang, erzeugt aber die gesamte durch den MIN-Algorithmus erzeugte Information. Da die Zahlen für (OPT) Stapelstrecke stehen, ist die Reihenfolge der Zahlen in einer gegebenen Zeile die Geschichte der AusSchiebevorgänge aus den Speichern verschiedener Größen. Eine Änderung von a nach b zeigt daher an, daß die Seite vom Speichern der Größe c, a < c < b ausgeschoben wird.
Durch die Leichtigkeit der Matrixkonstruktion wird der Umfang der Matrix jedoch nicht kompensiert, wobei eine ihrer Abnützungen nur durch die Länge von R begrenzt ist. Da ein Hochgeschwindigkeitsspeicher dieser Größe kaum für die automatische Berechnung zur Verfügung steht, ist eine kompaktere Darstellung vorgesehen, die die wesentliche Information zur Erzeugung der MMC-Folge als Antwort auf die Eingabereihe R enthält. Da historische Information praktisch kaum gebraucht wird, wird sie unterdrückt.
Im nummerischen Reihen-Algorithmus wird bei der Präsentation des nächsten Bezuges eine neue Reihe aufgebaut, die der Einschränkung durch bereits frühere ausgebaute Reihen unterliegt. Um eine Kompaktheit zu erzielen, werden die Einschränkungen so zusammengefaßt, daß die neue Reihe ausreichend definiert ist und insbesondere wird die äußerste rechte Zahl dargestellt, die die zur Sei-
YO 973 039
509807/1012
tenreferenz gehörende MMC-Ausgabe bezeichnet.
Am einfachsten konstruiert man hierzu unabhängig für jede Gruppe die kleinste a/b-Reihe oder kurz Mindestreihe unter Anwendung der oben angegebenen Regeln. Im hier gegebenen Beispiel würde der nächste Bezug entweder B oder D eine 4 als Ausgabe erzeugen, während ein Bezug auf E oder A in einer 2 resultieren würde (ein Bezug C wäre eine Wiederholung). Die entsprechenden in der Reihenfolge ihrer Länge oder der gleichwertigen Reihenfolge der am v/eistesten zurückliegenden Benutzung früherer Referenzen ist folgende :
A 2
E 2 2
D 3 4 4 4
B 3 3 4 4 4
Nur eine dieser Reihen würde natürlich zur tatsächlichen Mindestreihe, d. h. diejenige Reihe, die tatsächlich als nächste angezogen wird. Ein neuer Satz potentieller Ausgaben kann dann definiert werden. Dadurch sollen die poteniellen Ausgaben so beschrieben werden, daß bei Kenntnis der nächsten Referenz nicht nur die zugehörige Ausgabe definiert ist, sondern auch die Beschreibung der neuen potentiellen Ausgänge zur Verfügung steht.
Um zu einer solchen Anordnung zu kommen, muß man beachten, daß die Mindestreihe für D im Beispiel eine richtige rechts ausgerichtete Unterreihe der Reihe für B ist; eine ähnlich Beziehung besteht zwischen A und E. Als nächstes stellt man fest, daß in der längsten Lücke für die Reihen nur eine Startzahl auszuwählen ist. In der nächsten längsten Lücke sind zwei freie Zahlen, dann drei usw. Im oben erwähnten Beispiel ist die drei die einzige Wahl für die Startzahl von B, drei und fünf sind aber beide als Startzahlen für D ohne Doppelzahlen in einer Spalte möglich. Ähnlich sind zwei, vier und fünf für E möglich und schließlich alle Zahlen außer eins für A. Unabhängig aufgebaute Mindestreihen
YO 9 73 039
509807/1012
für einzelne Lücken, beginnen natürlich immer mit der kleinstmöglichen Zahl nach Darstellung in der obigen Tabelle.
Zwei Arten von Mindestreihen sind jetzt definiert: Die direkte Mindestreihe IMS und die bedingte Mindestreihe CMS. Die IMS des Elementes α ist die Zahlenreihen, die durch die oben erwähnten Regeln erzeugt wird, wenn die nächste Referenz zum Element A erfolgt. Die oben für A, E, D und B aufgeführten Reihen sind dann nach Definition die IMS.
Eine bedingte Mindestreihe CMS ist andererseits eine Mindestreihe, deren Anfangszahl nicht die kleinstmögliche Zahl ist und es ist entweder eine richtige rechts ausgeschlossene Unterreihe einer IMS oder eine einer längeren Lücke füllende CMS oder sie kann als Mindestreihe aufgebaut werden, nachdem alle größeren Lücken gefüllt sind.
Anschließend werden die IMS und die CMS für das Beispiel aufgeführt:
IMS 2 3 CMS 5
A 22 4 55
E . 3444 44 5555
D 33444
B
Die oben aufgeführten IMS sind mit den vorhergegebenen identisch. Die Reihe 5555 als eine CMS für D ist z. B. aufgebaut worden unter der Annahme, daß die einzige B-Reihe bereits gezogen wurde. Andere CMS's werden ähnlich erzeugt. Es ist zu beachten, daß jede Reihe (IMS oder CMS) die keine Unterreihe in der obigen Liste ist unterstrichen ist, und eine solche Reihe nennt man in geeigneter Weise eine primitive Reihe. Jede andere, nicht unterstrichene Reihe ist dann eine Unterreihe einer solchen primitiven Reihe.
YO 9 73 039
109807/101?
2A33377
Wegen der Reihen/Unterreihen-Einschlußeigenschaft IMS/CMS und durch die oben festgelegten Konstruktionsregeln, gibt es so viele Primitive wie es Lücken gibt. Wenn η die Anzahl von bereits angezogenen Elementen ist, dann gibt es n-1 Primitive. Für das Beispiel werden vier Primitive (in der obigen Liste unterstrichen) nach den folgenden Regeln aufgebaut:
1.) Längste Lücke wählen und ihre Mindestreihe ziehen.
2.) Die nächst kleinere Lücke wählen und die Mindestreihe
unter der Annahme ziehen, daß alle längeren Lücken mit IMS und CMS gefüllt sind.
3.) Die obigen Schritte wiederholen, bis alle Lücken gefüllt sind.
Im allgemeinen enthalten die Bestimmungszahlen der (n-1)-Primitiven alle direkten und bedingten Mindesausgabewerte. Die Liste der Primitiven für das obige Beispiel ist folgende:
E 2
D 5 5 5
B 3 3 4 4
wobei die Endzahlen in einen Block eingeschlossen sind. Diese in der Reihenfolge der am weitesten zurückliegenden Benutzung geordnete Spalte, gebildet durch die Primitiven, ist definiert aus der p-Stapel der Ausgabewerte und wird folgendermaßen interpretiert:
B, das am längste unbenutzte Element hat nur eine Anfangszahl für eine Mindestreihe (IMS) und seine Endzahl ist vier, welches die nächste MMC-Ausgabe ist, wenn B als nächstes angezogen wird.
Als nächstes gibt es zwei mögliche Anfangszahlen für D und durch Konstruktion enden die entsprechenden IMS und CMS bei vier und fünf, die bei bzw. unter D in p-Stapel aufgeführt sind. Da die
YO 973 039
509807/1012
Zahl vier die kleinere der beiden ist, wird sie bei der nächsten Bezugnahme die MMC, die zu D gehört. Ähnlich hat E drei IMS und CMS, die mit zwei, vier und fünf enden und daher wird die kleinste Zahl zwei die Ausgabe, wenn E als nächstes angezogen wird. Die MMC des Elementes A wäre ebenfalls zwei, da sie die kleinste der Endzahlen zwei, drei, vier und fünf ist.
Betrachtet man den p-Stapel der Ausgabewerte in der Reihenfolge' der am weistesten zurückliegenden Benutzung ihrer zugehörigen Elemente an, so läßt sich allgemein der MMC-Wert für das nächste angezogene Element beispielsweise wie folgt berechnen:
Wird als nächstes das in der £-then Reihenfolge angezogene Element herangezogen, so wird als MMC die kleinste Zahl aus dem Satz S der Zahlen bei oder unter der (A-I)-ten Position im p-Stapel gewählt.
Wenn in dem Beispiel das Element E, das dritthäufigste angezogene Element ist und als nächstes angezogen wird, dann ist die Ausgabe zwei, welches die kleinste Zahl an oder unter der zweiten Stapelposition ist. Ähnlich wäre die Ausgabe für das Element D die vier usw.
Anschließend wird erklärt, wie der p-Stapel manipuliert wird, um die neue IMS/CMS-Konfiguration nach Einschluß der nächsten Referenz wiederzugeben.
Die nächste Referenz führt entweder ein Element auf, dessen IMS primitiv ist oder eine richtige ünterreihe, entweder eines IMS oder eines CMS, das zu einem Element gehört, welches früher angezogen wurde. Durch Definition hat außerdem die längste Lücke (des am längsten unbenutzten Elementes) eine IMS, die primitiv ist. In dem Beispiel sind die IMS für B und E primitiv, während die IMS für D oder A eine Unterreihe sind.
YO 973 039
509807/1012
Es wird angenommen, daß jetzt das nächste α angezogen wird. Für den früheren Fall ist IMS dann primitiv. Die IMS und CMS für jedes früher als α angezogene Element (oder in der LRU-Reihenfolge darunter angezogene Element) bleiben unverändert, weil durch Definition der primitiven Reihe keines der längeren IMS oder CMS die eigentlich für α erzeugte Reihe enthält. Die IMS/ CMS der Elemente, die in jüngerer Zeit angezogen wurden als werden jedoch verändert, d. h. , entweder eine IMS oder eine CMS geht für jedes Element in diesem Bereich durch die tatsächliche Reihe in der Zeile α verloren. Das ist gleichwertig mit der Bewegung des neuen Ausgabewertes, d. h., der Endzahl der tatsächlichen Reihe aus ihrer früheren Position nach oben in den p-Stapel.
Wenn im Beispiel E als nächstes angezogen wird, wobei E's IMS primitiv ist, kann der entsprechende Stapelübergang wie folgt gezeigt werden: (Der klareren Erklärung halber sind auch die Namen der Elemente A bis E in der LRU-Reihenfolge aufgeführt).
C 3 I 5 E 2
A 2 4 C 3
E k A
5
D " D 4
B B
In ähnlicher Weise würde ein Bezug auf B (ebenfalls mit einem primitiven IMS) den folgenden übergang auslösen:
C 3 B 4
A 2 C 3
-E 5 L f A 2
D 4 w E 5
» B D
Betrachtet man den letzten Fall, so ist er etwas komplizierter, da die eigentliche Reihe für α nicht primitiv ist. Die IMS/CMS-Konfiguration einiger Elemente, die früher weniger häufig ange-
YO 9 73 039
509807/1012
zogen wurden als α, wird natürlich verändert, da eine die eigentliche Reihe enthaltende IMS richtig existiert. Der ungenutzte Teil dieser einschließenden Reihe muß ebenfalls durch neue Zahlen nach rechts erweitert werden. Unter der Mindestbeschränkung werden diese Zahlen die kleinste (frühere) CMS vonα . Diese CMS von α wiederum kann eine Unterreihe während einer anderen IMS oder CMS sein, wodurch ihre einschließende Reihe durch die nächst kleinste CMS von α herausgezogen wird usw., wie es in folgendem Beispiel gezeigt ist:
A 5 5 5 Jj 4 5 5 5 1 2 i|
B 2 1 J3 3 3 2 1 [3- 3 4 4
C 1 [F 2 2 2 = ==£> 1 £_ 2 2 3 3
D 3 3 T] _5_ 5 3 3 l[ _5_ 5 5
E 4 4 4 4 ι! 4 4 4 4 1 2
In der obigen Darstellung trennen die gezackten Linien die tatsächlichen Reihen von den IMS und CMS.
Die letzte Spalte in der rechten Matrix gibt richtig die neue Ausgabekonfiguration (Endzahl) aller IMS und CMS an. Daraus kann man den entsprechenden Stapelübergang wie folgt herausziehen:
■♦4 5 3 2
Die neue Ausgabe ist eine zwei, die die Endzahl der tatsächlichen Reihe für A ist. Beim übergang wird diese Zahl zwei oben in den Stapel -gesetzt und dadurch angezeigt, daß von jetzt an für einige Zeit keine IMS oder CMS mit der Zahl zwei enden mit Ausnahme einer IMS für das oberste Element E (jetzt das am zweithäufigsten angezogene Element). Da das Element C seine IMS aus 2222 verloren hat, endet seine neue IMS mit einer drei, welches die
YO 9 73 039
509807/1012
kleinste CMS von A ist. Diese Reihe ist jedoch nicht primitiv und daher verliert B seine CMS von 333, die ersetzt wird durch die Reihe 3344, endent mit einer vier, die die nächst kleinste CMS von A war. Nur die Reihe 55 bleibt unberührt.
Es wurde bereits beschrieben, wie man den Ausgabewert MMC im Satz S des p-Stapels findet, wenn die nächste Referenz gegeben wird, um die neuen Bedingungen fortschreiben zu können, muß man an den Ausgabewert aus dem Stapel herausnehmen und anschließend oben hinaussetzen. Die leer gemachte Position'ist dann mit der nächst kleineren Zahl im Satz S des Originalstapels über der leeren Stelle zu füllen. Dadurch wiederum wird eine neue mit der nächst kleineren Zahl in diesem Bereich zu füllende Leerstelle geschaffen usw. Eine genaue Beschreibung dieser Regeln folgt.
Die Arbeitsweise des Systems nach dem Erfindungsgedanken kann im Konzept folgendermaßen dargestellt werden:
-P-
M ^ (KMC)
H^
worin L ein Operator ist, der die Folge R von Seitenreferenzen in einer Folge L von LRU-Positionen umwandelt. Er hält die bereits angezogen Seiten (Seitennamen) in einem LRU-Stapel fest und ist wie folgt definiert:
Wenn die als nächste angezogene Seite nicht im LRU-Stapel steht, wird die neue Seite oben in den Stapel gesetzt, η und die Zahl von Seiten im Stapel um eins erhöht, (n-l) wird ausgegeben und es erfolgt die Rückkehr.
Wenn andererseits die Seite in der k-ten Position des LRU-Stapels gefunden wird, wird diese Seite herausgenommen und oben auf· den Stapel gesetzt, (k-l) wird ausgegeben und es erfolgt die Rückkehr.
YO 9 73 039
509807/1012
M ist ein Operator, der die Folge L der LRU-Positionen in einer Folge M von Mindestspeicherkapazitäten (MMC) transformiert. Frühere Auscjc-ibewerte (Einschränkungen) v/erden dadurch in einem modifizierten LRU-Stapel festgehalten und folgendermaßen definiert: Wenn die nächste Position & Null ist, erfolgt eine Rückkehr. Andernfalls, wenn die & -ste Position im modifizierten Stapel leer ist, wird die Zahl (£+1) = ρ oben in den Stapel gesetzt wobei ρ ausgegeben wird und eine Rückkehr erfolgt. Andernfalls, der kleinste p-l/ert wird bei oder unter der λ-ten Position im modifizierten Stapel gefunden.
Wenn ρ auf der 2,-ten Position steht, wird ρ herausgenommen und oben auf den Stapel gesetzt, ρ wird ausgegeben und es erfolgt eine Rückkehr.
Andernfalls f wird der kleinste Wert p1 über ρ gefunden, der bei oder unter der &-ten Position steht; ρ und p1 werden im modifizierten Stapel ausgetauscht und es erfolgt eine Rückverzweigung zum unmittelbar vorhergehenden Schritt.
Die beiden letzten Schritte sind identisch mit einem Durchlauf der bekannten Blasensortierung, d. h. einer paarweisen Austauschsortierung.
Der M-Operator kann somit allgemein folgendermaßen beschrieben werden: das Auffinden des Mindestwertes ρ im unteren Teil P-Stapels, d. h. die Elemente bei und unter der ί,-ten Position mit Hilfe eines Durchlaufes mit einer Blasensortierung und das anschließende Setzen von ρ oben auf dem Stapel.
Die Richtigkeit des OPT-Algorithmus mit zwei Durchgängen wird in der oben erwähnten Veröffentlichung von Mattson bewiesen. Die nach dem Erfindungsgedanken durchgeführte Operation kann als ein OPT mit einem Durchgang betrachtet werden, wobei die Zahlen (OPT) die Stapelpositionen darstellen.
Es folgt eine formale Beschreibung des OPT-Algorithmus und des YO 9 73 039
509807/1012
neuen durch die Erfindung ausgeführten Algorithmus mit einem Durchgang. In diesen Beschreibungen wird gezeigt, daß der Algorithmus mit einem Durchgang dieselbe Streckenreihe (MMC-s) erzeugt wie der OPT-Algorithmus.
Wie bereits oben beschrieben wurde, werden beim Algorithmus mit einem Durchgang zwei Stapel gehalten. Einer dieser Stapel ist der LRU-Stapel, der die Liste der in der LRU-Reihenfolge angezogenen Seiten darstellt. Die zuletzt angezogene Seite befindet sich also oben im Stapel, d. h. eine Seite α liegt über der Seite β , wenn und nur wenn die Seite β zu einem weiter zurückliegendem Zeitpunkt angezogen wurde als die Seite α.
Der zweite Stapel (P) kann als Pseudo-OPT-Stapel betrachtet werden. Er besteht aus einer Liste von ganzen Zahlen, aus denen die OPT-Stapelstrecke für jede angezogene Seite errechnet werden kann. Wenn eine Seite angezogen wird findet sich ihre Position im LRU-Stapel. Die OPT-Stapelstrecke ist die kleinste ganze Zahl im P-Stapel, die auf oder unter der LRU-Stapelposition steht.
Der LRU-Stapel wird auf den neuesten Stand gebracht, indem man die angezogene Seite oben in den Stapel setzt und jede darüberliegende Seite um eine Position nach unten schiebt.
Der P-Stapel wird wie folgt auf den neuesten Stand gebracht: Der Wert an der LRU-Position wird gerettet und alle Stücke zwischchen diesem Wert und der zweiten Position um eine Position nach unten bewegt. Der gerettete Wert wird mit dem Wert in der nächsten Position verglichen. Der größere dieser beiden Werte wird in diese Position gesetzt und der kleinere Wert gerettet. Der Prozess wird fortgesetzt, bis der Boden des P-Stapels erreicht ist. Der gerettete Wert wird zur OPT-Stapelposition und in die zweite Position des P-Stapels gesetzt.
Dieses Verfahren, die Stapel auf den neuesten Stand zu bringen, kann auch wie folgt beschrieben werden:
YO 9 73 039
509807/1012
Nimmt man an, daß k die LRU-Stapelposition ist, so sind alle Teile zwischen 2 und k-l markiert. Danach ist das nächste markierte Teil dasjenige, welches den kleinsten Wert unter den Teilen hat, die nicht auf oder unter der Position k und über den letzten markierten Teil steht, wenn ein solches existiert. Dieses Verfahren wird fortgesetzt, bis das Teil k markiert ist. Das markierte Teil in der untersten Position ist der OPT-Stapelwert, d. h. die Position. Alle anderen markierten Teile werden in die nächst niedere markierten Position verschoben und der OPT-Stapelwert in die zweite Position des P-Stapels gesetzt. Die Ausgabe ist die LRU-Stapelposition k und die OPT-Stapelposition (MMC).
Um hier einen Vergleich zwischen dem Algorithmus der Erfindung und dem OPT-Algorithmus zu ermöglichen, wie er von Mattson beschrieben wird, wird die Operation des OPT-Algorithmus anschliessend zusammengefaßt.
Bei der Operation dieses Algorithmus wird im ersten Durchlauf der Seitenbahn die Vorwärtsstreckenreihe geschaffen, d. h. die Referenzreihe R=X, X_, ... X^ und die Vorwärtsstreckenreihe F=F, F_, ... F„, wobei die Vorwärtsstreckenreihe effektiv die Zusammenfassung der "Zukunft" der Referenzreihe ist. Der OPT-Algorithmus in sich selbst ist ein Stapel-Algorithmus, der durch eine Prioritätsliste induziert wird. Betrachtet man somit den Stapel Q und die Prioritätsliste L zur Zeit t, wenn X _ die nächste angezogene Seite ist, dann ist ihre Position k im Stapel Q die OPT-Stapelstrecke. Diese nächste angezogene Seite wird Diese nächste angezogene Seite wird in die Ausgabereihe und oben auf den Q-Stapel gesetzt. Die Punkte über dieser nächsten angezogenen Seite werden folgendermaßen umgeordnet: Die Priorität für die verschobene Seite und die Seite in der nächsten Position werden verglichen. Die Seite mit der höchsten Priorität (niedrigste Prioritätzahl) wird in diese Position gesetzt, während die andere Seite verschoben wird. Dieser Vorgang läuft weiter, bis die nächste Seitenposition k ist, dann wird die letzte verschobene Seite in diese Position gesetzt.
YO 973 039
S09807/1012
Die Prioritätsliste L wird wie folgt auf den neuesten Stand gebracht: Alle Prioritäten, die kleiner oder genauso groß wie die Vorwärtsstrecke F, . sind, v/erden um eins reduziert und die Priorität für die angezogene Seite Xt+1 ist Ffc+1·
Im Zusammenhang mit den erfindungsgemäß erzielten Algorithmus wurde oben formlos gezeigt, daß die MMC-Werte in einem Durchlauf erzeugt werden können. Außerdem wurde erwähnt, daß diese MMC-Werte tatsächlich die OPT-Stapeistrecke sind. Im nummerischen Matrix-Algorithmus kann man jedoch eine Folge von OPT-Stapeln halten, die nur teilweise ausgefüllt sind gegenüber dem OPT-Algorithmus mit zwei Durchgängen, der keine Lücken hat sondern in dem die Stapel für alle Zeiten bis zum gegenwärtigen Zeitpunkt festgehalten werden, weil der erste Durchgang alle notwendigen Informationen über die Zukunft liefert.
Die nachfolgende Tabelle basiert auf dem oben erwähnten Beispiel der Referenzreihe ohne die Seite A. In dieser Tabelle werden nur acht aufeinanderfolgende Pveferenzen verwendet. Um mit dem OPT-Algorithmus übereinzustimmen, ist das Zeichen definiert als die zur ersten Referenz zu einer Seite gehörende Ausgabe. In der Tabelle sind für die Zeiten (t-n), (t-n+1), ... (t-1), t in den Spalten Afc und Bfc nur die jüngsten (n+1) Spalten gezeigt.
YO 9 73 039
509807/1012
Seiten- OPT-Stapelreferenz Positionen: Zeit X (frühere Z anti t lenmatrix)
Liste ver- nicht zufügbarer geordnete Ausgafreier Posi- Seitenli- be tionen A.
ste B,
MMC.
B 1
B 1 1 1 1 1 1 2 B
C
B 1 1 3 22 BB
C - 1 2 3 C
D 1 1 1
B 1 1 3 4 1 222 BBB
C - - 3 33 CC
D - 1 2 4 4 D
E 1 1 12 1
B 1 1 2 3 4 1 2244 BBBB
C - - 4 3 333 CCC
D - 1 2 4 2 E
E 2 1 1
B 1 1 2 3 3444 CCCC
C - -■ 3 4 22 EE
D - 1 2 3 D
E 2 - 1
B 1 1 2 222 EEE
C - - 3 33 DD
D - - 1 4 B
E - 2 _
B 1 1 2244 EEEE
C - - 333 DDD
D - 2 C
E
Anschließend wird das oben aufgestellte Matrix-Fortschreibeverfahren mit der OPT-Stapelterminologie interpretiert. Wenn Cz. B. zur Zeit 7 angezogen wird, wird die mit C bezeichnete Zeile für die Zeiten 3, 4, 5, 6 und 7 gefüllt. Für t=3 wird die einzig verfügbare Stapelposition, das ist 3, an C gegeben. Für t=4 muß die Stapelposition 4 als einzig verfügbare vergeben werden. Für t=5 ist der verfügbare Satz (2,4). Somit wird 4 der kleinste Wert
YO 9 73 039
509807/1012
des Satzes, aber nicht kleiner als die vorher zugeordnete Position. In ähnlicher Weise wird die Position 4 für t=6 von den nicht zugeordneten Positionen 4, 2 und 3 ausgewählt. Für t=7 wird C der Stapelpositionswert 1 zugeordnet, da diese Seite zu dem Zeitpunkt angezogen wird. Die OPT-Stapelstrecke für C ist die letzte Stapelposition 4 vor der Referenzzeit t=7.
YO 973 039
5 0 9807/1012
Jetzt folgt eine formale Struktur die festlegt, daß der Algorithmus mit einem Durchgang dieselbe Ausgabe liefert, wie der OPT-Algorithruus mit zwei Durchgängen, der in der oben erwähnten Veröffentlichung von Mattson beschrieben ist. Um diese formale Struktur zu entwickeln, hat man zunächst erweitete Notierungen, die vor her verwendet wurden. Die Zahlenmatrix erscheint jetzt als Teilfunktion H . Die vorher verwendeten Ausdrücke A und B werden jetzt formal definiert. Der Ausdruck k ist irgend eine Stapelposition, der Ausdruck γ ist das τ-the Element einer numerischen S( ) zur Zeit ta# wobei α eine erneut angezogene Seite ist. Der Ausdruck (a, b) ist der Satz von aufeinanderfolgenden ganzen Zahlen a, a+1 ..., b-1, b; a < b.
Die formale Struktur ist folgende:
Die Folgen der Teilfunktionen H sind rekursiv wie folgt zu definieren:
Es wird angenommen, daß H definiert wurde. Wenn Σ der Satz von z. Zt. t angezogenen Seiten und η die Anzahl von Seiten in Σ ist, dann ist definiert:
*t (τ) = M,ntl - ik|jaeIt((T,a) ,k) cHt>. Bt (τ) = It - .{aflke[1,nt]((T,a) ,k)eHt>.
Die Reihe S(α) ist definiert als die Folge {((τ,α),γτ)ta < τ< t+1 , worin t das letzte Mal ist, an dem α angezogen wurde. (Wenn dieses das erste Mal ist, daß α angezogen wird, dann ist t = 0 und Y0 = oo) . Außerdem ist zu definieren:
Yt = 1 und Yt+1 = 1;
α
γ = min {klk > γ _-, und keA. (τ)}
T — TI t
YO 973 039
509807/1012
zur Erfüllung von t < τ <_ t.
Dann ist H .. = HtuS(a).
Mit dieser Definition der Folge H kann man jetzt beweisen Lehrsatz I
Wenn (T,ct,k) en. ist, dann ist k die OPT-Stapelposition für die Seite α zur Zeit τ. Dieser Lehrsatz folgt aus
Hilfssatz I: Wenn H. den stabilen Wert des OPT-Stapels zur Zeit t angibt, dann bestimmt S (ot) die OPT-Stapeleintragun'gen für α = ^t+i für alle Zeiten seit α das letzte Mal angezogen wurde.
Beweis: Wenn α vorher nicht angezogen wurde, dann ist die OPT-Stapelposition für alle τ < t + 1 gleich °° und für τ = t + 1 ist seine Position 1. Wenn α zuletzt zur Zeit t angezogen wurde, dann war seine Stapelposition zu diesem Zeitpunkt 1. Die Position von α zu jedem Zeitpunkt t < τ < t wird in den OPT-Algorithmen wie folgt bestimmt: Wenn α in der Stapelposition γ zur Zeit stand, bleibt es in der Position γ , wenn γ nicht einer anderen Seite zur Zeit τ + 1 zugeordnet wurde, d.h., γ ist der Satz
A, (τ + 1). Andernfalls wird α aus der Position γ verschoben, t 'τ
wenn γ einer anderen Seite zugeordnet wurde, d.h., γ & A. (τ+ 1). In diesem Fall wird seine Stapelposition zur ersten nicht zugeordneten Stapelposition, die größer ist als γ .
Der OPT-Algorithmus kann wie folgt interpretiert werden:
Eine Seite α, deren Stapelpositon zur Zeit τ=γ ist, bleibt in dieser Position zur Zeit τ + 1, weil
1. Die Stapelposition der angezogenen Seite zur Zeit τ + 1 kleiner ist als γ (d.h., α wird nicht aufgerufen) oder
2. wenn α aufgerufen wird, hat es eine höhere Priorität als alle YO 973 039
509807/1012
amaeren Aufrufer für seine Position. Das kann jedoch nur pas- . sieren, wenn γχ keiner Seite mit höherer Priorität zugeordnet wurde-
Wenn laan annimmt, daß α in der Stapelposition Ύτ zur Zeit τ steht und die Seite g zur Zeit τ + 1 angezogen wird und ihre Position Δ ist, dann bleibt α in der Position γ , wenn γ > Δ ist. Die Stapelposition für alle Seiten mit höherer Priorität als γ , wurden bereits durch die Induktionshypothese bestimmt. Somit wird der ersten verfügbaren Position zugeordnet, die > γ ist. Eine Seite kann keine kleinere Stapelposition erreichen, als ihr gegenwärtiger Wert beträgt. Im Kampf um eine gegebene Stapelposition wurden die Positionen für alle Seiten mit einer höheren Priorität als α bereits zugeordnet. Somit kann α um alle Stapelpositionen > γ konkurrieren und gewinnt den ersten Wettbewerb, in dem es eine höhere Priorität hat. Das passiert jedoch nur bei Stapelpositionen, die nicht zugeordnet sind. Die Stapelposition für α zur Zeit τ + 1 ist somit gegeben durch
min {kjk^ γτ und keAt(r +1)}.
In der Definition der Teilfunktionen wurden die Sätze A (τ) und B (τ) für τ £ t eingeführt.
Mit diesen Sätzen wird die Verbindung zu dem OPT-Algorithmus mit einem Durchgang hergestellt. Zuerst sind einige Eigenschaften von Α.,(τ) und B (t) aufgeführt.
1) Bt(T) f. Bt(x + 1)
2) iA
3) |At| Jt|
4) iA t(T) i^At^ + 1} i """^ At(x + 1) = At(i:)u
5) |At(T) J= At(x + D I ---*■ At(T + D = (At(T) - {j})u{k}
6) . (a) At(t) = [2,nt]
(b) Bt(t) =Et - {xt>.
Wenn α vorher angezogen wurde
YO 973 039
509807/1012
7) A t+1fr) - At(T) -ίγτ>
Wenn u vorher nicht angezogen wurde
= Σ . u{a}
und nt+1 (τ) it+ 1 1 <_ τ £ t
At+1 (τ) = At(T) 1 < τ < t
9) Bt+1 des = Bt(T) und des P-Stapels
10) Definition L-Stapels
Den L-Stapel und den P-Stapel erhält man aus den Sätzen A (τ) und Bt (τ), τ 5 t wie folgt:
definiere t. und α. für i = 1 ... η mit den Formeln
z± = min{Sj |Bt(S) j = i} i ■■
i = 1,...,n-1
1) - Bt(ti -
Es ist zu beachten, daß α die zur Zeit t angezogene Seite ist. Für jedes i = 1...n-1 soll S (α.) die Reihe sein, die an die Teilfunktion H angrenzt, nachdem die Reihen S(U1)... S(α. Λ) abge-
U-. I 1-1
grenzt wurden und S (α.) als die zur Zeit t verkürzte Reihe des (α ) definieren. Somit ist
S (u±) ={ (j,^,γ.) J (J1O1 ,γ.)εβ(α±) und j =t±,...,t}.
X soll der Satz [1,t] χ Zfc χ L1,n] und Gfc = Xfc - Hfc sein.
n-1
Dann ist G. = u S (α.).
YO 973 039
509807/1012
Definiere P als Satz von ganzen Zahlen (1, n.) in der durch
1
die Reihen S (α.) induzierten Reihenfolge.
Dann ist
Pt(1) =1
'P. (j) = k wenn und nur wenn
für j = 2"'"n
Definiere außerdem L als Satz von Seiten Σ in der durch die Folge α. ... α induzierten Reihenfolge, d.h. in der LRU-Reihenfolge. Dann ist
Lt(j) = «n_j+1 für j =1, ... η. Mit diesen Definitionen ergeben sich die folgenden Hilfssätze.
Hilfssatz 2: Wenn CtxXZ, zur Zeit t + 1 angezogen wird, ist die Ausgabe yv gegeben durch die Formel
γκ = min{kj3j (t,a.,k)eS1(α ) und j < κ)
= min{Pt(j) I j >n-K-1}
Hilfssatz 3: Wenn P. und L den Paaren A und B entsprechen und ο^,εΣα^ die nächste angezogene Seite ist, dann sind die Stapel P^+1 und L- fortgeschrieben, um das ΟΡΐ-Verfahren mit einem Durchgang dieselben, wie die Stapel P.+1 und L1 entsprechend den Paaren A. ■ und B. *.
Diese beiden Hilfssätze bestätigen die Äquivalenz des OPT-Algorithmus mit einem Durchgang gegenüber deir. OPT-Algorithmus mit zwei Durchgängen. Dieses folgt daraus, daß man für jeden Eingang denselben Ausgang erhält und die fortgeschriebenen Stapel P4.- und 1 t+i
L1 der Teilfunktion Hfc - entsprechen.
YO 973 039
509807/1012
Bevor die Struktur des erfindungsgemäßen Systemes beschrieben wird, sollen an diesem Punkt bestimmte Beobachtungen zur Arbeitsweise der Erfindung gemacht werden.
1. Die Arbeitsweise des Systems ist ein kontinuierlicher Prozeß, der die Reihe von MMOWerten direkt aus der Eingabe erzeugt, ohne daß eine Vorausschau nötig wäre.
2. Die ganze zu speichernde Information ist eine Tabelle in der die Anzahl von Elementen gleich der Programmgröße im Seitenmaß ist.
3. Viele Schritte der Gesamtoperation können als parallele Operation aufgefaßt werden, die z. B. einen Assoziativspeicher verwenden.
4. Das System gestattet den on-line-Betrieb und erübrigt dadurch die Aufzeichnung der Referenzreihe.
Das Systems läßt sich am vorteilhaftesten in einem virtuellen Computer oder einer Seitenmaschine anwenden. Daher verwendet man vorteilhaft einen entwicklungsfähigen Ersatz-Algorithmus, da nicht alle Seiten eines zu prüfenden Programmes im Hauptspeicher stehen. Im Konzept kann daher die Tabelle im System zur Implementierung seiner Operation, d. h. der p-Stapel aus zwei Teilen bestehen, die mit einem ersten oder oberen Teil mit so vielen Eintragungen, wie Seitenrahmen im Hauptspeicher stehen. Wie gewöhnlich ist das Programm jedoch größer als die dafür vorgesehene Hauptspeicherkapazität und der übrige, d. h. zweite überlaufende Teil der Tabelle kann in einem Rückgriffspeicher oder in einem geschützten Bereich des Hauptspeichers gespeichert werden. Wenn eine echte Seitenaufnahme auftritt, kann der Inhalt der beiden Teile der Tabelle auf den neuesten Stand fortgeschrieben werden, so daß er den neuesten Speicherinhalt wiedergibt.
YO 9 73 039
509807/1012
Nach dem Erfindungsgedanken, erfolgt die tatsächliche SeitenVerwaltung in einer virtuellen Maschinen nach dem Kriterium der letzten Benutzung (LRU) .. Dieses Kriterium ermöglicht die oben erwähnte Aufteilung der Tabelle des Systems, da nur diejenigen Seiten im Hauptspeicher stehen, d. h. Seitenrahmen belügen, entsprechende Eintragungen im p-Stapel haben müssen, der mit der Datenverarbeitungsstraße auf den neuesten Stand gebracht wird. Bei dieser Anordnung kann derjenige Teil des Systems, der die Operation des oben beschriebenen Ik-Operators bewirkt, mit ZE-Geschwindigkeit arbeiten und braucht nur groß genug zu sein, um nur die Seiten darzustellen, die Hauptspeicherrahmen belegen.
Der im nachfolgend beschriebenen Ausführungsbeispiel vorgesehene LRU-Stapel wurde genauer beschrieben von W. F. Beausoleil, D. T. Brown, and D. E. Phels, "Magnetic Bubble Memory Organization", IBM Journal of Research and Development, November 1972. Die Erfindung umfaßt in ihrer breitesten Form, also zusätzliche ''-Operatorblocks, die wieder die MMC-Reihe herausziehen. Im Ausführungsbeispiel wird angenommen, daß die Umgebung, d. h. das Datenverarbeitungsgerät, ein virtuelle Maschine ist, wodurch der Pseudo-OPT-Stapel in zwei Teile unterteilt wird, in denen die ganzen Zahlen enthalten sind, die die Mindestspeicherkapazitäten (MMC) der entsprechenden Seiten der Seitenreferenzreihe darstellen. Der erste Teil des Stapels besteht aus einer Anzahl von Registern m, die genauso groß ist wie die Anzahl von Seiten des Programmes, die im ersten Speicher aufgenommen werden können. Im zweiten Teil sind die Seitennamen und die zugehörigen MMC (entweder n-m Seitennamen oder alle η Seitennamen des Programmes) an einer anderen Stelle im Speicher des Datenverarbeitungsgerätes wie einem Sekundärspeicher oder einem geschützten Bereich des Primärspeichers gespeichert. Entsprechend ist der LRU-Stapel in ähnlicher Weise unterteilt, d. h., ein erster Teil des LRU-Stapels besteht aus einer Gruppe von Registern, deren Anzahl genauso groß ist wie die Anzahl von Seiten m des Programmes, die
YO 9 73 039
509807/1012
im Primärspeicher aufgenommen werden können, und in einem zweiten Teil, in dem die Seitennamen und die dazugehörigen LRU-Werte im Sekundärspeicher oder einem anderen geschützten Bereich gespeichert sind. Die Anzahl von dem ersten Teil des LRU-Stapels bildenden Registern ist gleich der Anzahl von dem ersten Teil des Pseüdo-OPT-Stapels bildenden Registern. Beim Betrieb des Systemes mit η Seiten im Programm enthalten die Seitennamen im ersten Teil des LRU-Stapels zu einem gegebenen Zeitpunkt notwendigerweise diejenigen Seiten mit LRU-Werten zwischen 1 und m, und die Seitennamen im zweiten Teil des LRU-Stapels und die zugehörigen LRU-Werte umfassen die LRU-Werte von m+1 bis n.
Da beim Betrieb der Erfindung der erste Teile des Pseudo-OPT-Stapels nicht alle MMC-Werte enthält, die anderen stehen ja an einer anderen Stelle im Speicher, wird zur größeren Vereinfachung und zum schnelleren Betrieb der Erfindung die kleinste fehlende Zahl von den Zahlen, die sich in der Position 2 relativ zur Position genau oberhalb der geretteten LRU-Position befinden, erzeugt, anstatt den kleinsten MMC-Wert unter der Position der geretteten LRU-Position aufzufinden, wie es für den Algorithmus oben beschrieben wurde. Diese erzeugte kleinste fehlende Zahl ist die unterste Mindestspeicherkapazität, die erwünscht ist, und in die zweite Position des Pseudo-OPT-Stapels bei der Umordnung der anderen Positionen in diesem Stapel gesetzt wird, wie es bei der Erklärung des Algorithmus beschrieben wurde und anschließend im Zusammenhang mit dem Ausführungsbeispiel beschrieben wird.
Die Arbeitsweise des Ausführungsbeispieles kann also in Umrissen wie folgt beschrieben werden:
1. Der Ήΐ-Operator ordnet dynamisch alle Seitenreihen um
die Reihenfolge der vergangenen Referenzen wiederzugeben.
YO 9 73 039
509807/1012
a) wenn die als nächste angezogene Seite im LRU-Stapel steht, wird die Stapelposition k der angezogenen Seite an den -Operator gegeben.
b) In anderen Fällen wird ein Seitenfehler erzeugt. Der Seitenrahmen mit dem höchsten LRU-Wert ändert seinen Inhalt. Eine E/R-Operation wird eingeleitet und ein im Speicher stehendes Programm ausgeführt, um die gesamte Information für den Πί-Operator auf den neuesten Stand zu bringen.
2. Der TTi^-Operator erzeugt die kleinste fehlende Zahl.
In Fig. 1 ist in Form eines Blockdiagrammes das Konzept der Erfindung dargestellt. Der Teil im gestrichelten Block soll das Datenverarbeitungsgerät 1 darstellen, welches als Seitenmaschine betrieben wird, una den IfL-operator, der das Zusatzgerät ist, d. h. die Erfindung. Das Datenverarbeitungsgerät enthält eine Zentraleinheit ZE 2, die am besten von einem Vielzweckrechner gebildet wird, der für diejenigen Operationen programmierbar ist, die innerhalb der Möglichkeiten eines Vielzweckrechners liegen. Darstellungsgemäß enthält das Datenverarbeitungsgerät einen Primärspeicher 3 und einen Sekundärspeicher 4, die miteinander über einen geeigneten Datenkanal in Verbindung stehen und Information untereinander und mit der ZE 2 austauschen. Um Information zwischen dem Primaärspeicher 3 und dem Sekundärspeicher 4 auszutauschen ist eine Stufe vorgesehen mit der Beschriftung "programmierbare Einrichtung zur Seitenverlagerung". Obwohl diese Stufe als separates Ganzes dargestellt ist, soll eigentlich gezeigt werden, daß in dem Datenverarbeitungsgerät Einrichtungen vorhanden sind wie z. B. ein Kanal oder innerhalb der ZE 2 Einrichtungen, die die Ausführung der ER Operation zwischen Primär- und Sekundärspeicher übernehmen. Die mit der Zahl 6 und der Beschriftung " programmierbare Einrichtung zum Fortschreiben der LRU-Liste" bezeichnete Stufe wird genauso benutzt wie die Stufe 5
YO 9 73 039
509807/ 1012
und ist eigentlich Teil des Datenverarbeitungsgerätes, welches für die Ausführung der in der Beschriftung festgelegten Operation programmiert wird. Ähnlich sind die Stufen 7 und 8 mit der Beschriftung "programmierbare Einrichtung zum Fortschreiben der OPT-Liste" und "programmierbare Einrichtung zur Behandlung der Seitenausnahme in der OPT-Liste" im Blockdiagramm der Fig. 1 aus denselben Gründen enthalten. Die Stufen 5, 6f 7 und 8 sind ebenfalls im Datenverarbeitungsgerät enthaltene strukturen, die für die Ausführung der in der entsprechenden Beschriftung angegebenen Operation programmiert v/erden. Im Diagramm sind die Stufen 5,6,7 und 8 als durch die ZE 2 gesteuert dargestellt.
Die Stufe 9 mit der Beschriftung ©^-Operator enthält darstellungsgemäß zwei Teile, d. h. eine LRU-Teilliste 11 und eine LRU-Restliste 13. Diese Teile 11 und 13 bilden zusammen die LRU-Liste, wobei der Teil 11 maschinell eingerichtet ist, beispielsweise in Form eines Registerstapels und der Teil 13 irgendwo im Speicher des Datenverarbeitungsgerätes steht. Die LRU-Liste ist bekanntlich eine Liste aller Seitennamen im Programm und die LRU-Gewichtszahlen gehören zu diesen entsprechenden Seiten. Wenn also angenommen wird, daß η Seiten im Programm vorhanden sind, dann hat jede dieser Seiten nach dem Kriterium der jüngsten Benutzung oder dem LRU-Kriterium ein anderes LRU-Gewicht zwichen den Werten 1 bis n. An der Stelle, an der die LRU-Liste in die Teile und 13 nach Darstellung in Fig. 1 aufgeteilt ist, wo der To.il der Stapelteil ist, wird der Teil 11 so gewählt, daß er mindestens so viele Seitennamen m und ihre zugehörigen LRU-Gewichtszahlen enthalten kann, wie Programmseiten im Primärspeicher 3 aufgenommen werden können. Wenn im Teil 11 nur m von η Seitennamen enthalten sind, dann haben die zu den entsprechenden Seiten gehörenden LRU-Gewichts zahlen Werte zwischen 1 und m, und die LRU-Restliste im Speicher, die die Seitennamen (n-m) enthält, übernimmt andere LRU-Werte zwischen (m+1) bis n.
YO 9 73 039
5 0 9 8 0 7/1012
Die Stufe 19 mit der Beschriftung //^-Operator ist die Pseudo-OPT-Liste und die zugehörige Schaltung. Diese Liste enthält darstellungsgemäß im ersten Teil 15 einen Teil der Liste mit der Bezeichnung Pseudo-OPT-Teilliste. Dieser Teil 15, die Pseudo-üPT-Teilliüte, ist maschinell ausgeführt und umfaßt einen Registerstapel, in dem die Register eine geordnete Folge der Adressen 1 bis m bilden. An jeder Adresse, d. h. in jedem Register, steht der Warne der Seite und die zugehörige MMC- oder OPT-Stapelstrecke, wie sie durch den OPT-Stapel-Algorithmus bestimmt wurde. Die Namen der Seiten im Teil 15 der Pseudo-OPT-Teilliste sind diejenigen Namen, die auch in der LRU-Teilliste 11 stehen.'
Das Teil 17 der OPT-Liste kann entweder der Rest der Pseudo-OPT-Liste im Speicher sein, s. h. sie enthält Namen und MMC-Zahlen an den Adresspositionen (m+1) bis n, die die restlichen Seitennamen und die zugehörigen OPT-Stapelstrecken sind. Andererseits kann der Teil 17 auch die gesamte Pseudo-OPT-Liste sein, d. h. die Adresspositionen 1 bis η enthalten und dann steht an jeder dieser Adresspositionen ein Seitenname und die zugehörige OPT-Zahl oder MMC-Zahl.
Wenn beim Betrieb der Erfindung die nächste Referenz von der ZE abgegeben wird und der Seitenname mit der zugehörigen LRü-Zahl in der in der Maschine befindlichen LRU-Teilliste 11 steht, dann ist die Adressposition ^ im Konzept ein Teilerpunkt Pseudo-OPT-Teilliste 15, d. h. diese wird in die Adresspositionen 1 bis (£-1) und ι bis m unterteilt. In der Operation des /ZLr-Operators laufen die folgenden Operationen ab.
1. Die Adresse k unter den Adressen & bis m wird sichergestellt.
2. In den in der Gruppe ^ bis (k-1) enthaltenen Adressen,
sind die folgenden Reihen von Adressen markiert, (£.+a) , (£+b), (£+c)... bis (k-1), wobei ß+a) der kleinste
YO 973 039
509807/1012
Adreßwert ist, der größer ist als I , so daß C (% +k) < C (l) ist, worin (&-b) der kleinste Adresswert ist, der größer ist als Q, +a) , so daß C(£+b) < C(& +a) ist usw., worin C(i) der Wert der ganzen Zahl C an der Adresse ist.
3. Die kleinste fehlende Zahl in den Zahlen zwischen 2 bis
(C +1), worin C der größte ganzzah Adressen 2 bis (&-1) ist, wird erzeugt.
(C +1), worin C der größte ganzzahlige Wert C an den
TQ 3. X ΠΙ el X
4. Die MMC- oder OPT-Zahlen an den Adressen 2 bis (.1-1) v/erden um eine Adresse nach unten verschoben, d. h., diese Zahlen stehen jetzt entsprechend an den Adressen 3 bisS, .
5. Die erzeugte kleinste fehlende Zahl wird auf die Adresse 2 gesetzt.
6. Die MMC-Zahl oder die OPT-Zahl in der Reihe der markierten Adressen wird entsprechend in die nächste Adresse in der Reihe geschoben, und die Zahl in der Uert höchsten Adresse in dieser Reihe wird in die Adresse k geschoben und die Zahl, die ursprünglich an der k stand, wird nicht mehr beachtet.
Die erzeugte kleinste fehlende Zahl ist die MMC- oder OPT-Stapelzahl für die angezogene Seite.
Wenn der Name der angezogenen Seite im Teil 11 der LRU-Liste oder im Teil 15 der OPT-Liste steht, kann die Fortsehreibung des Teiles 15 auf den neuesten Stand zu einer Verdoppelung des MMC-Wertes oder des OPT-Wertes in der OPT-Gesamtliste im Speicher führen. Eine solche Liste kann kontinuierlich auf dem neuesten Stand gehalten werden, um diese Verdoppelungen auszuschalten, oder die Liste kann vorzugsweise jedesmal bei einer Seitenausnahme auf den neuesten Stand gebracht werden, wenn die OPT-Gesamtliste adressiert werden muß. Es folgt daher eine Beschrei-
YO 9 73 039
509807/ 1012
bung der Operationen, die ablaufen, wenn eine Seitenausnahme entsteht, die eine Seite des Programmes anfordert, die im Primärspeicher steht.
Wenn-eine solche Seitenaufnahme auftritt, werden programmierbare Einrichtungen für eine Seitenverlagerung 5, d. h'. das Seitenverlagerungsprogramm aufgerufen und es erfolgt ein Austausch zwischen dem Primärspeicher 3 und dem Sekundarspeicher 4, in dem die am längsten unbenutzte Seite im Primärspeicher in den Sekundärspeicher und die angeforderte Seite dafür in den Primärspeicher gesetzt wird.
Wenn eine Seitenaufnahme auftritt, wird die programmierbare Einrichtung zur Fortschreibung der OPT-Liste 7 betätigt, d. h., es wird ein Programm aufgerufen, welches OPT-Gesamtliste im Speicher konsestent macht, d. h. doppelte MMC- oder OPT-Zahlen werden eliminiert. Die programmierbare Einrichtung zur Fortschreibung der LRU-Liste 6 wird bei Auftreten einer Seitenaufnahme betätigt und die LRU-Liste wird auf den neuesten Stand gebracht oder fortgeschrieben, d. h. , es wird dasjenige Programm aufgerufen, welches den Seitennamen der in den Sekundärspeicher gesetzten Seite in die LRU-Restliste 13 setzt, wo er den LRU-Wert von (m+1) zugeordnet erhält. Der Name der angeforderten Seite wird in die LRU-Teilliste 11 gesetzt und erhält den LRU-Wert 1. Diejenigen Seiten in der LRU-Liste 11, die vor -der Seitenausnahme der LRU-Gewicht 1 bis (m-1) hatten, werden an diesem Verbindungspunkt in ihren LRU-Werten entsprechend um 1 erhöht und haben jetzt die LRU-Gewichte 2 bis m. Gleichzeitig werden auch die LRU-Gewichte derjenigen Seiten in der LRU-Restliste 13, die vor der Seitenausnähme zwischen (m+1) bis zu dem Gewicht, welches eins kleiner ist als das Gewicht der angeforderten Seite, lagen,, entsprechend um eins erhöht.
Jetzt wird eine programmierbare Einrichtung zur Behandlung der Seitenausnahme in der OPT-Liste im Speicher betätigt. Da diese OPT-Liste im Speicher jetzt in Konsestenζ gebracht ist, wird
YO π 73 039
B 0 9 8 0 7 / 1 0 1 Ί
die gesamte OPT-Liste an der Adressposition adressiert, die denselben Wert hat, wie das zu der angeforderten Seite gehörende LRU-Gewicht vor der überträgung in den Primärspeicher. Nachher werden die Operationen auf der gesamten OPT-Liste ausgeführt, die oben in Verbindung mit der Pseudo-OPT-Liste 15 beschrieben wurden, in der der angezogene Seitenname stand. Nach Ausführung dieser Operationen auf der OPT-Liste im Speicher verbleibt die Übertragung der Information an den AdressPositionen 1 bis m in der OPT-Liste im Speicher in die Pseudo-OPT-Teilliste 15. Nach Ausführung dieser Operation, sind sowohl die LRU-Liste als auch die OPT-Liste im Maschinenteil und im Speicher vollständig auf dem neuesten Stand und für die Bezugnahme auf die nächste Seite vorbereitet.
Der maschinelle Teil 11 der LRU-Teilliste, kann in geeigneter Weise einen Stapel von mindestens m Registern enthalten, von denen jedes mindestens die Menge m aufnehmen kann. Der maschinelle Teil 15 der Pseudo-OPT-Liste, kann ebenfalls in geeigneter Weise eine Reihe von mindestens m Registern in einer geordneten Reihenfolge enthalten, wobei jedes dieser Register mindestens die Menge η aufnehmen können soll. Zu den letztgenannten Registern gehören Einrichtungen zum Einschalten der Verschiebung des Inhaltes eines Registers in ein anderes.
Anschließend folgt eine Beschreibung der Struktur und Arbeitsweise eines Ausführungsbeispieles der Erfindung. In dieser Beschreibung wird zuerst Bezug genommen auf die Fign. 2A bis V, zusammengelegt gemäß Fig. 2, worin dieses Ausführungsbeispiel im wesentlichen in Blöckform gezeigt ist.
Die Erfindung wird in Verbindung mit einem Computer verwendet und daher ist in Fig. 2A eine ZE 10, ein Großraum-Sekundärspeicher 12 (Fig. 2B) und ein Primär-Schnellspeicher 14 mit kleiner Kapazität gezeigt. DGr Sekundärspeicher 12, der z. B. von einer Plattendatei gebildet werden kann, ist mit dem Primärspeicher
γθ 973 039
509807/101?
durch einen Kanal 20 (Fig. 2B) verbunden. Der Kanal 20 enthält mehrere Steuerungen und gehört zu der Art von Geräten, die außer ihren anderen Möglichkeiten auch geforderte Puffer- und Steuerfunktionen übernehmen können. Der Kanal 20 empfängt seriell vom Sekundärspeicher 12 angelegte Information, setzt die Bits zu Wörtern zusammen und gibt diese Wörter parallel an den Primärspeicher 14. Der Kanal 20 kann außerdem Wörter parallel vom Primärspeicher 14 empfangen und deren Bits seriell an den Sekundärspeicher 12 übertragen. Außerdem enthält der Kanal 20 geeignete Steuerschaltungen zur Erhöhung der Adressen, von denen Information genommen v/ird, oder an die Information übertragen wird und Anzeigeeinrichtungen zur Anzeige der fertigen übertragung eines Informationsblockes. Ein mit der Nummer 16 allgemein bezeichneter Assoziativspeicher (Fig. 2E und 2F) ist ebenfalls vorgesehen, der eine Eintragung für jede Blockposition im Primärspeicher 14 hat. Jede dieser Eintragungen enthält fünf Felder, die gemäß späterer genauerer Erklärung im Speicherdatenregister 446 (Fign. 2J und 2K) gezeigt sind. Diese Felder sind von links nach rechts ein Ein-Bit großes A-FeId (Änderungsfeld), welches gesetzt wird, wenn der entsprechende Block im Primärspeicher 14 in seinem Inhalt verändert wird; ein Ein-Bit großes R-FeId (Bezugsfeld), welches jedesmal gesetzt wird, wenn der entsprechende Block im Primärspeicher 14 benutzt wird und zurückgestellt wird, wenn alle Eingänge im Assoziativspeicher 16 ihr R-FeId gesetzt haben; ein ID^FeId, welches das Programm in der ZE 10 bezeichnet, in dem der Block in der zugehörigen Position im Primärspeicher 14 verbunden ist mit der Blockadresse im Sekundärspeicher 12 für den Block in der entsprechenden Bolckposition im Primärspeicher 14; die Blockadresse im Primärspeicher 14, der die Eintragung entspricht. Das äußerste rechte Feld einer jeden Eintragung im Assoziativspeicher 16 kann ein Festwertspeicherfeld sein; die anderen Felder im Assoziativspeicher 16 können von Zeit zu Zeit verändert v/erden.
In dem in den Fign. 2E und 2F gezeigten·Assoziativspeicher sind diejenigen Elemente, die mit der Zahl 412 bezeichnet sind dieselben, wie die Elemente in Fig. 5 der US-Patentschrift Nr.
YO 973 039
509807/1012
3 317 89 8 vom 2. Mai 1967. Diese Elemente sind Assoziativspeicher-Lese/Schreib-Speicherelemente. Die Speicherelemente mit der Zahlenbezeichnung 414 im Assoziativspeicher können ebenfalls geeignete Einheiten sein, wie sie in Fig. 5 der erwähnten Patentschrift gezeigt sind, brauchen aber das Assoziativmerkmal nicht aufzuweisen, weil sie nur als Lese- und Schreib-Speicherelernente verwendet werden. Die Speicherelemente im Assoziativspeicher 16 mit der Zahlenbezeichnung 416 sind dieselben, wie sie in der oben erwähnten Patentschrift in Fig. 8 gezeigt sind.
Der in den Fign. 2G bis 2J gezeigte Teil bildet das Argumentenregister und die Argumentenmaske 22. Die zum Assoziativspeicher-Datenregister 446 gehörende Schaltung und Steurung findet sich in den Fign. 2J bis 2L. Der Teil des Assoziativspeichers 16 mit der Beschriftung LRU-FeId bildet den LRU-Kasten, wobei in diesem Ausführungsbeispiel das LRU-Kriterlum angewandt wird. Der Rest des Assoziativspeichers 16 in den Fign. 2E und 2F kann treffenderweise als "Verzeichnisanlage" bezeichnet werden.
Die in den Fig. 2ΓΙ und 2N enthaltene Schaltung, nämlich der Impulsgenerator 24, ist der Taktgeber, der das System nach dem Erfindungsgedanken steuert. Dieser Impulsgenerator enthält mehrere monostabile Kippschaltungen, die im eingeschalteten Zustand entsprechende Signale abgeben. Wenn eine monostabile Kippschaltung aus dem eingeschalteten in den Ruhezustand zurückgeschaltet wird, d. h.', wenn ihre Zeitsperre abläuft, erzeugt sie im allgemeinen ein weiteres Signal. Dieses ist das Einschaltsignal, mit dem die Zeitsteuerung des Systemes geschaltet wird. Es kann jedoch auch das Signal verwendet werden, welches beim Ablauf der Sperrzeit einer monostabilen Kippschaltung erzeugt wird.
In den Fign. 20 bis 2V ist der "MIN-Kasten" gezeigt, der die MIN-Operation, d. h. den MIN-Operator gemäß obiger Beschreibung ausführt. Der MIN-Kasten empfängt seine Eingänge von der LRU-Zahl, wie sie von der Fig. 2G bis 2J gezeigten Schaltung geliefert wird und von dem Impulsgenerator 24. Der MIN-Kasten besteht
YO 973 039
509807/1012
aus acht Registern mit den Zahlenbezeichnungen 152, 154, 156, 158, 160, 162, 164 und 166 (Fign. 2P, 2S, und 2U). Diese Register können binär sortieren, wie es in der US-Patentschrift Nr. 3 191 156 vom 22. Juni 1965 beschrieben ist. Außerdem kann der Inhalt dieser Register wahlweise nach der Beschreibung in der US-Patentanmeldung mit der Seriennummer 258 968 vom 2'. Juni 19 72 verschoben werden.
Wenn im Betrieb des in Fig. 2 gezeigten Systemes die ZE 10 einen Speicherzugriff fordert, lädt sie ein Register 428 und liefert gleichzeitig einen Impuls auf eine Leitung 2 86. Die Leitung 286 endet in einem Kabel 420 und der Impuls wird an das ODER-Glied 422 angelegt, welches die monostabile Kippschaltung Al (Fig. 2M) einschaltet zur Abgabe des Einschaltsignales an die Leitung 288^ Die Leitung 288 endet im Kabel 424, wodurch dieses Signal durch ein ODER-Glied 430 weitergeleitet wird und an dessen Ausgang die das LRU-FeId des Argumentenregisters 22 bildenden Flipflops auf lauter Nullen setzt. Das Einschaltsignal für die monostabile Kippschaltung Al auf Leitung 2 88 wird auch an ein ODER-Glied 432 angelegt, dessen Ausgangssignal in dieser Situation diejenigen, die Blockzahl des Argumentenregisters bildenden Flipflops auf lauter binäre Einsen setzt. Das Signal auf der Leitung 228 wird außerdem an ein Schaltglied 4 34 angelegt, um die Blockzahl vom Register 418 (Fig. 2A) in das Blockzahlenfeld des Argumentenregisters in Fig. 21 zu leiten. Schließlich wird das Signal auf der Leitung 288 auch über das Kabel 424 und dann über das Kabel 436 an das ODER-Glied 438 (Fig. 2C) übertragen, um die Übereinstimmungsanzeiger (Fign. 2C und 2D) in der Assoziativspeichersteuerung 18 auf Eins zu setzen. Das Signal auf der Leitung 288 stellt auch das Leitungsend-Flipflop (EOL) auf Null.
Wenn die monostabile Kippschaltung Al ausgeht, wird ein Signal erzeugt, welches die monostabile Kippschaltung A2 einschaltet und auf eine Leitung 290 erscheint. Die Leitung 290 endet im Kabel 424 und das Signal auf der Leitung 290 wird über die Kabel 424, 426 und 428 an ein ODER-Glied 440 übertragen, wodurch dessen
YO 973 O39
509 807/1012
Ausgang der zugehörige Impuls ist. In diesem Zusammenhang ist zu beachten, daß die Blockzahl verbunden werden soll, um festzustellen, ob diese Blockzahl im Assoziativspeicher steht. Wie in der oben erwähnten Patentschrift erklärt und allgemein bekannt ist, werden die Übereins tiiranungs-/\nzeige-Flipflops in den Fign. 2C und 2D für jedes Wort, bei dem eine Diskrepanz auftritt, zurückgestellt und sie bleiben nur in dem Fall auf Eins gestellt, d. h. eingeschaltet, wenn eine Übereinstimmung vorliegt.
Wenn die monostabile Kippschaltung A2 ausgeht, wird ein Signal erzeugt, welches monostabile Kippschaltung A3 einschaltet, damit sie ihr Einschaltsignal auf eine Leitung 292 gibt. Die Leitung 29 2 endet im Kabel 424 und das Einschaltsignal von der monostabilen Kippschaltung A3 wird über die Kabel 424, 426 und 42 8 übertragen um durch eine Abfrage der Übereinstimmungs-Anzeige-Flipflops festzustellen, ob sie eingeschaltet oder zurückgestellt sind. Wenn alle Übereinstimmungs-Anzeige-Flipflops zurückgestellt sind, wird das EOL-Flipflop auf Eins geschaltet und damit angezeigt, daß im Assoziativspeicher keine Übereinstimmung besteht. Wenn das EOL-Flipflop jedoch durch das Signal von monostabilen Kippschaltung A3 nicht eingeschaltet ist heißt das, daß im Assoziativspeicher Übereinstimmung herrscht.
Wenn die monostabile Kippschaltung A3 ausgeht, wird ein Signal erzeugt, welches monostabile Kippschaltung A4 einschaltet und dadurch ihr Einschaltsignal auf der Leitung 294 erzeugt, die im Kabel 42 4 endet. Das auf dieser Leitung liegende Signal wird über die Kabel 424 und 426 an ein Schaltglied 442 (Fig. 2C) angelegt, und dadurch die Zustandprüfung dos EOL-Flipflop ermöglicht. Wenn das EOL-Plipflop auf Eins steht, erscheint ein Impuls auf der Leitung 298, wenn es auf Null steht, erscheint ein Impuls auf der Leitung 296. Die Leitungen 29 8 und 296 enden beide im Kabel 420. Mit dem Impuls auf der Leitung 296 wird die nonostabile Kippschaltimg Bl eingeschaltet, i'it dem Impuls auf der Leitung 29 8 wird die monostabile Kippschaltung Cl im Impulsgenerator 24 eingeschaltet. Der einfacheren Erklärung halber wird
YO 973 039-
509 807/101?
in der Beschreibung des in Fig. 2 gezeigten Systemes angenommen, daß im Assoziativspeicher eine Übereinstimmung vorliegt und somit v/erden die Vorgänge beschrieben, die folgen, v/enn der Impuls auf der Leitung 296 erscheint.
Wenn die monostabile Kippschaltung Bl eingeschaltet wird, liefert sie ihr Einschaltsignal auf einer Leitung 300, welches dann über die Kabel 424, 426 und 4 36 an ein ODER-Glied 440 geleitet wird. Die Ausgabe des ODER-Gliedes 4 40 bewirkt an diesem Punkt das Lesen des übereinstimmenden Wortes im Assoziativspeicher auf das Speicheldatenregister 446 (Fign. 2K und 2L). Das Signal auf der Leitung 300 wird auch über die Kabel 424, 426 und 428 übertragen und stellt die LRü-Halteregister alle auf Null zurück.
Wenn die monostabile Kippschaltung Bl abschaltet wird ein Signal erzeugt, welches eine monostabile Kippschaltung B2 einschaltet. Das dadurch erzeugte Einsch.altsignal erscheint auf einer Leitung 302 die im Kabel 424 endet. Das Signal auf der Leitung 302 wird über die Kabel 424, 426 und 428 übertragen und betätigt ein Sch.iltglied 448 (Fig. 2L), um den "realen Block" vom Register 446 in den linken Teil des Registers 450 (Fig. 2A) zu leiten. Das Signal auf der Leitung 302 v/ird auch über die Kabel 424 und 426 an ein Schaltglied 452 (Fig. 2Λ) angelegt, um die "Adresse im Block" vom Register 418 auf den rechten Teil des Registers 450 zu leiten. Außerdem wird das Signal auf der Leitung 302 über die KaJ)Gl 424, 126 und 42 8 an ein ODER-Glied 4 3O (Fig. 2J) geleitet, um das LRU-FeId der Argumentenmaske ganz auf Null zurückzustellen. Das Signal auf Leitung 302 wird auch an ein Schaltglied 454 (Fig. 2L) angelegt, um die LRU-Zahl an das LRü-Halteregister zu leiten. Da die LRU-Zahl jetzt im LRü-Halteregister steht (Fig. 2L), kann sie jetzt als Eingabe zum MIH-Kasten benutzt v/erden und ihre Folge kann parallel mit der der verzeichneten Einheit weiterlaufen. Wenn die monostabile Kippschaltung B2 ausschaltet, schaltet das dadurch erzeugte Signal eine monostabile Kippschaltung B3 und eine monostabile Kippschaltung IU ein. Die Arbeitsweise der monostabilen Kippschaltungen mit der
YO 973 039
509807/1012
- 50 Bezeichnung M wird später erklärt.
Wenn die monostabile Kippschaltung B3 eingeschaltet wird, wird das auf der Leitung 304, die in Kabel 424 endet, erscheinende Signal über die Kabel 424, 426 und 436 an das ODER-Glied 438 übertragen, dessen Ausgabe die tJbereinstimmung-Anzeige-Flipflop auf Eins stellt. Das Signal auf der Leitung 304 wird auch über die Kabel 424, und 42 8 und die Leitung 304 an die Leitung 2 82 geleitet. Die im Speicherdatenregister 446 am weitesten links stehenden 8-Bits sind für die LRU-Zahl reserviert. Diese wird durch eine Zahl "1 aus 8" dargestellt. Die LRU-Zahl l wird z. B. dargestellt als 10000000. Die Zahl 2 wird dargestellt Oioooooo usw. bis zur Zahl 8, die dargestellt werden könnte als 00000001.
Die oberste Reihe der UND-Glieder in Fig. 2K direkt links von der Leitung 2 82 werden von der Nullseite eines jeden der acht Flipflop in der LRU-Zahl eingeschaltet. Die unterste Zeile von UND-Gliedern direkt links von der Leitung 282 wird von den l-Seiten dieser Flipflops eingeschaltet. Ein Impuls auf der Leitung 282 läuft also nach links weiter, bis die erste 1 auftritt und in dieser Verbindung wird der Schaltkreis weiter nach unten fortgesetzt auf einer der Leitungen in der Gruppe mit dan Bezeichnungen 456, 458, 460, 462, 464, 466, 468 und 47O. Wenn die LRU-Zahl z. B. eine 6 ist, wird das UND-Glied 474 eingeschaltet und ein Impuls würde auf der Leitung 460 erscheinen. Wegen der ODER-Glieder links von der Leitung 460 würden alle Leitungen 426, 464, 466, 468 und 470 aktiviert. Die aktiven Zustände dieser Leitungen werden über die Kabel 4 72 übertragen, um die 6 am weitesten links liegenden Flipflop der Argumentenmaske (Fign. 2G und 2H) auf 1 zu setzen.
Der Impuls auf der Leitung 304 läuft durch das ODER-Glied 475 (Fig. 2J) und sbellt das Blockzahlenfeld der Argumentenmaske auf lauter Hüllen. Der Impuls auf der Leitung 304 stellt auch das LRU-FeId des Argumentenregisters auf lauter Nullen zurück (Fign. 2G, 2H und 21) .
YO 9 73 039
509807/1012
.Wenn die monostabile Kippschaltung B3 ausgeht, wird dadurch ein Signal auf der Leitung 306 erzeugt, welches über die Kabel 424, 426 und 428 an das ODER-Glied 440 (Fig. 2J) weitergeleitet wird, dessen Ausgabe der Assoziierungsimpuls ist.
Der Assoziierungsimpuls stellt die Übereinstimmungsanzeige für alle Wörter im Assoziativspeicher zurück, deren LRU-Zahlen gleich oder kleiner sind als die LRU-Zahl im Datenregister 446. Diese Operation zu diesem Zeitpunkt, weil alle LRU-Zahlen auf die nächste erhöht v/erden müssen. In diesem Zusammenhang ist zu beachten, daß angelegete Schiebeimpuluse (Fig. 2C und 2D) durch den rückgestellten Zustand der Übereinstimmungs-Anzeige-Flipflops eingeschaltet werden. Die Schiebeoperation erfolgt mit den Speicherelementen 406, 408 und 410.
Zum Verständnis der Schiebeoperation wird auf die Fign. 3Λ, 3B und 3C verwiesen. In Fig. 3A ist ein Ausführungsbeispiel des Speicherelementes 406 gezeigt. In diesem Element ist das Flipflop 480 das Informationsbit, und das Flipflop 486 ist vorgesehen, um Nullen von links einzuleiten. Der erste Schiebeimpuls wird auf die Leitung 476 geleitet und setzt das Flipflop 486 auf Null. In Der Fig. 3B ist ein geeignetes Ausführungsbeispiel eines Speicherelementes 408 gezeigt, in dem das Informationsbit das Flipflop 482 und das Flipflop 4 88 ein Zwischenflipflop ist. Der erste Schiebeimpuls auf der Leitung 4 76 leitet den Inhalt den Flipflop 480 (Fig. 3A) auf das Flipflop 488 (Fig. 3B). In Fig. 3C ist ein geeignetes Beispiel für ein Speicherelement 4IO gezeigt, in dem das Flipflop 484 das Informationsbit und das Flipflop 490 ein Zwischenflipflop ist. Bei Auftreten dieses ersten Schiebeimpulses auf der Leitung 4 76 wird der Inhalt des Flipflops 4 82 (Fig. 3B) auf das Flipflop 490 im Speicherelement 410 (Fig. 3C) geleitet. Der zweite Schiebeimpuls erscheint jetzt auf der Leitung 4 78, die im Speicherelement 406 (Fig. 3A) den Inhalt des Flipflops 486 auf das rlipflop 4 80 leitet. Ähnlich leitet der Schiebeimpuls auf der Leitung 478 im Speicherelement (Fig. 3B) den Inhalt des Flipflops 4 8Ö auf das Flipflop 482 und
YO 973 039
509807/10 t?
im Speicherelement 410 (Fig. 3C) den Inhalt des Flipflops 490 auf das Flipflop 4 84. Auf diese Weise wird die einzige 1 in der LRU-Zahl um eine Position nach rechts verschoben. In die äußerste links Position wird immer eine 0 eingegeben.
Wenn die monostabile Kippschaltung B4 ausgeht, wird dadurch ein Signal erzeugt, welches die monostabile Kippschaltung B5 einschaltet und dieses Einschaltsignal erscheint auf der Leitung 308, die im Kabel 424 endet. Das Signal auf der Leitung 308 wird über die Kabel 424, 426 und 436 an das ODER-Glied 492 geleitet, dessen Ausgang der erste Schiebeimpuls ist.
Wenn die monostabile Kippschaltung B5 ausgeht, schaltet das dadurch erzeugte Signal die monostabile Kippschaltung B6 ein und erzeugt ein Signal auf' der Leitung 310, welches über die Kabel 424, 426 und 436 an das ODER-Glied 494 übertragen wird, dessen Ausgabe an diesem Punkt der zweite Schiebeimpuls ist.
Wenn die monostabile Kippschaltung B6 ausgeht, wird die monostabile Kippschaltung B7 eingeschaltet und erzeugt ein Signal auf der Leitung 312, welches über die Kabel 424, 426 und 436 an ein ODER-Glied 438 übertragen wird, dessen Ausgabe die Übereinstimmungs-Anzeige-Flipflop auf 1 setzt. Das Signal auf der Leitung 312 wird auch an ein ODER-Glied 43O angelegt, dessen Ausgabe das LRU-FeId der Argumentenmaske auf 0 zurückstellt. Schließlich wird das Signal auf der Leitung 312 auch noch an das ODER-Glif 5. 432 angelegt, dessen Ausgabe das Blockzahlenfeld der Argumentenmaske auf lauter Einsen setzt.
Wenn die monostabile Kippschaltung B7 ausgeht, schaltet das dadurch erzeugte Signal eine monostabile Kippschaltung B8 ein, die ein Signal auf der Leitung 314 erzeugt, welche über die Kabel 424, 426 und 428 an ein ODER-Glied 440 (Fig. 2J) angelegt wird zur Erzeugung des Assoziationsimpulses. Mit der Assoziierung zu diesem Zeitpunkt sollen alle tibereinstimmungs-Anzeiger mit Ausnahme des einen zurückgestellt werden, der zu dem Wort im Asso-
YO 973 039
509807/1012
-53- 2A33377
ziativspeicher gehört, welches dieselbe Blockzahl enthält, die auch im Register 446 steht. Diese Blockzahl existiert gleichzeitig im Argumentenregister.
Wenn die monostabile Kippschaltung B8 ausgeht, wird eine monostabile Kippschaltung B9 eingeschaltet und erzeugt ein Signal auf der Leitung 316, welches über das Kabel 428 an das ODER-Glied 49 6 übertragen wird, dessen Ausgabe das LRU-FeId im Register 446 auf 10000000 setzt. Wenn die ZE 10 einen Speicherzugriff anfordert liefert sie auch Information darüber, welcher Block zu verändern ist. Durch diese gelieferte Information wird das Änderungs· Flipflop (Fig. 2A) auf 1 gestellt, wenn der Block zu verändern ist oder das Änderungs-Flipflop wird auf 0 gestellt, wenn der Block nicht zu verändern ist. Ein Signal auf der Leitung 316, erzeugt während der Einschaltzeit der monostabilen Kippschaltung B9, wird auch an das Schaltglied 498 (Fig. 2A) angelegt, um den Zustand des Änderungs-Flipflops zu sichern. Wenn dieses Flipflop auf 1 steht, erscheint ein Impuls auf der Leitung 318, wenn das Anderungs-Flipflop jedoch auf 0 steht, erscheint ein Impuls auf der Leitung 320. Die Leitungen 318 und 320 enden im Kabel 420. Ein Impuls auf der Leitung 318 schaltet die monostabile Kippschaltung BIO ein und ein Impuls auf der Leitung 320 eine monostabile Kippschaltung BIl.
Wenn das Α-Bit des Registers 446 auf 1 gesetzt werden muß, geschieht das durch einen Impuls auf der Leitung 3 32. Der Impuls auf der Leitung 324 wird an ein ODER-Glied 49 8 angelegt, mit dessen Ausgabe der Inhalt des Registers 446 in den Assoziativspeicher zurückgeschrieben wird.
In der bisherigen Beschreibung des Ausführungsbeispieles der Erfindung wurde die Arbeitsweise der Verzeichniseinheit und des LRU-Kastens gezeigt, wenn die angeforderte Blockzahl im Assoziativspeicher steht. Die LRU-Zahl des gewählten Wortes ist jedoch, wie gesagt, immer auf 1 gesetzt und die LRU-Zahlen, die kleiner sind als das gewählte Wort im Assoziativspeicher, werden um 1
YO 973 039
509807/1012
erhöht.
Es folgt die Beschreibung der Arbeitsweise der Verzeichniseinheit und des LRU-Kastens, wenn die gewünschte Blockzahl nicht im Assoziativspeicher steht. In dieser Situation tritt eine Seitenausnahme auf, die durch das Signal auf der Leitung 294 erkannt wird, mit dem der Zustand des EOL-Flipflop geprüft wird. Der eingeschaltete 1-Zustand des EOL-Flipflop löst ein Signal auf einer Leitung 29 8 aus, welches ein monostabile Kippschaltung Cl einschaltet. Der Einschaltzustand der monostabilen Kippschaltung Cl erzeugt ein Signal auf der Leitung 326 und von dort auf der Leitung 456. Durch den Betrieb der in Reihe geschalteten ODER-Glieder erscheint das Einschaltsignal der monostabilen Kippschaltung Cl auch auf den Leitungen 458, 46Or 462, 464, 466, 468 und 470 und setzt das LRU-FeId der Argumentenmaske (Fign. 2G-2J) auf lauter Einsen. Das Signal auf der Leitung 326 wird auch an das ODER-Glied"475 angelegt und stellt das Blockzahlenfeld der Argumenten maske auf lauter Nullen zurück. Außerdem setzt das Signal auf der Leitung 326 das LRU-FeId des Ärgumentenregisters auf den Wert 00000001. Weiterhin wird das Signal auf der Leitung 326 an ein ODER-Glied 438 angelegt, dessen konsequente Ausgabe die übereinstimmungs-Anzeige-Flipflops auf 1 setzt. Die Schaltungen sind jetzt zur Assoziierung einer LRU-Zahl von acht angestellt, da dieses dasjenige Wort im Assoziativspeicher ist, welches durch einen Block ersetzt werden muß.
Wenn die monostabile Kippschaltung Cl ausgeht, schaltet das dadurch erzeugte Signal eine monostabile Kippschaltung C2 ein, die dann ein Signal auf der Leitung 32 8 erzeugt. Das Signal auf der Leitung 32 8 wird an ein ODER-Glied 440 angelegt und die konsequente Ausgabe dieses ODER-Glieder 440 funktioniert als Assoziierungsimpuls . Durch die von ihm ausgelöste Assoziierung werden alle Übereinstimmungs-Anzeiger im Assoziativspeicher zurückgestellt mit Ausnahme desjenigen Anzeigers, der zu dem Wort gehört, das den LRU-Wert acht hat. Jetzt müssen die LRU-Zahlen erhöht werden, deren Wert kleiner als acht ist.
YO 9 73 039
509807/1012
Wenn die monostabile Kippschaltung C2 ausgeht, schaltet das dadurch erzeugte Signal eine monostabile Kippschaltung C3 zur Erzeugung eines Signales auf der Leitung 330 ein. Das Signal auf der Leitung 330 wird an ein ODER-Glied 49 2 (Fig. 2C) angelegt, dessen resultierende Ausgabe als erster Schiebeimpuls wirkt.
Wenn die monostabile Kippschaltung C3 ausgeht, schaltet das dadurch erzeugte Signal die monostabile Kippschaltung C4 ein, die dann ein Signal auf einer Leitung 332 erzeugt. Das Signal auf der Leitung 332 wird an ein ODER-Glied 49 4 angelegt (siehe Fig. 2D), dessen sich dann ergebender Ausgabe als zweiter Schiebeimpuls wirkt.
Wenn die monostabile Kippschaltung C4 ausgeht, schaltet das dadurch erzeugte Signal eine monostabile Kippschaltung C5 ein, die
ein Signal auf der Leitung 334 erzeugt. Dieses Signal wird an. das ODER-Glied 4 44 angelegt, dessen sich dann ergebender Ausgang das übereinstimmende Wort aus dem Assoziativspeicher in das Datenregister 446 liest.
Wenn die monostabile Kippschaltung G5 ausgeht, schaltet das dadurch erzeugte Signal die monostabile Kippschaltung C6 ein, die dann ein Signal auf der Leitung 336 erzeugt, welches an das ODER-Glied 496 angelegt wird (Fig. 2J). Die sich daraus ergebende Ausgabe des ODER-Gliedes 496 schaltet den LRü-Abschnitt des Registers 446 auf 10000000. Außerdem wird das Signal auf der Leitung 336 an ein Schaltglied 499 (Fig. 2K) angelegt, um den Zustand des "A-Bit" im Register 446 zu prüfen. Wenn in dieser Prüfung festgestellt wird, daß das "Α-Bit" auf "1" steht, erscheint ein Signal auf der Leitung 340, wenn das Α-Bit jedoch auf "0" steht, erscheint ein Signal auf der Leitung 338. Die Leitungen 338 und 340 enden in den Kabeln 500 und 420. Mit dem Signal auf der Leitung 338 wird die monostabile Kippschaltung C7 und mit dem Signal auf der Leitung 340 die monostabile Kippschaltung CIl eingeschaltet.
Wenn angenommen wird, daß das Α-Bit auf "0" steht, dann erscheint YO 9 73 039
509807/1012
also ein Signal auf der Leitung 338 und schaltet die itionostabi-Ie Kippschaltung C7 ein, wodurch ein Signal auf der Leitung 342 erzeugt wird, welches an das ODER-Glied 502 (Fig. 2A) angelegt wird. Die Ausgabe des ODER-Gliedes 502 wird an ein Schaltglied 504 angelegt, dessen auf diese Weise erfolgte Bestätigung die Blockzahl vom Register 418 in das Austauschadreßregister leitet. Das Signal auf der Leitung 342 wird außerdem an ein ODER-Glied 5O6 (Fig. 2L) angelegt, dessen Ausgang an ein Schaltglied 508 angelegt wird. Durch Betätigung des Schaltgliedes 5O8 wird der Inhalt des Realblockfeldes des Registers 4 46 in das primäre Adreßregister (Fig. 2B) geleitet. Das Signal auf der Leitung 4 wird außerdem an ein Schaltglied 510 angelegt (Fig. 2L), dessen Betätigung die Blockzahl vom Register 418 (Fig. 2A) in das Blockzahlenfeld des Registers 446 leitet. Außerdem wird das Signal auf der Leitung 342 an ein ODER-Glied 512 geleitet, dessen Ausgabesignale das Α-Bit des Registers 446 auf "0" zurückstellen. Außerdem wird das Signal auf der Leitung 342 an den Austauscheingang für die Kanalsteuerungen 20 (Fig. 2B) angelegt. Schließlich setzt das Signal auf der Leitung 446 das Flipflop 514 (Fig. 2B) auf "1".
Wenn die monostabile Kippschaltung C7 ausgeht, wird dadurch die monostabile Kippschaltung C8 eingeschaltet, die ein Signal auf der Leitung 344 erzeugt, welches an ein ODER-Glied 498 (Fig. 2D) angelegt wird. Das resultierende Ausgabesignal des ODER-Gliedes 49 8 schreibt den Inhalt des Datenregisters 446 in die richtige Stelle im Assoziativspeicher.
Wenn die monostabile Kippschaltung C8 ausgeht, wird das dadurch erzeugte Signal durch ein ODER-Glied 522 übertragen und schaltet eine monostabile Kippschaltung C9 ein, die ein Ausgabesignal auf die Leitung 346 gibt. Dieses Signal wird an ein Schaltglied 518 (Fig. 2B) angelegt, durch dessen Betätigung der Zustand des Flipflop 514 geprüft wird. Wenn das Flipflop 514 auf "1" steht, erscheint ein Signal auf der Leitung 360, wenn es auf "0" steht, erscheint ein Signal auf der Leitung
YO 9 73 039
509807/1012
Mit einem Signal auf der Leitung 360 wird die monostabile Kippschaltung ClO eingeschaltet und das Signal auf der Leitung 362 wird durch ein ODER-Glied 4 22 weitergeleitet zum Einschalten der monostabilen Kippschaltung Al. Das Einschaltsignal von der monostabilen Kippschaltung ClO wird nur zur Verzögerung benutzt und wenn die Zeltsperre der monostabilen Kippschaltung ClO abgelaufen ist, wird ein Signal erzeugt, welches über das ODER-Glied 522 läuft und die monostabile Kippschaltung C9 wieder einschaltet.
Wenn das Schaltglied 498 (Fig. 2D) durch das Signal auf der Leitung 366, welches anzeigt, daß das A-Flipflop zu diesem Zeitpunkt auf "1" steht, betätigt wird, erscheint ein Signal auf der Leitung 340, welches die monostabile Kippschaltung CIl einschaltet zur Erzeugung eines Signales auf der Leitung 348. Das Signal auf der Leitung 348 wird dann an ein Schaltglied 524 (Fig. 2L) angelegt, dessen Betätigung den Inhalt des Blockzahlenfeldes des Datenregisters 446 in das Schreib-Adreßregister (Fig. 2B) leitet.
Wenn die monostabile Kippschaltung CIl ausgeht, schaltet das dadurch erzeugte Signal eine monostabile Kippschaltung C12 ein, die ein Signal auf der Leitung 350 erzeugt. Dieses Signal wird an das ODER-Glied 502 (Fig. 2A) angelegt, dessen Ausgang an ein Schaltglied 504 geleitet wird, durch dessen Betätigung die Blockzahl aus dem Register 418 in das Austauschadreßregister geleitet wird. Das Signal auf der Leitung 350 wird auch an ein ODER-Glied 506 angelegt, dessen Ausgang dann ein Schaltglied 508 betätigt, wodurch der Inhalt des realten Blockfeldes des Registers 446 in das primäre Adreßregister (Fig. 2B) geleitet wird. Außerdem wird das Signal auf der Leitung 35O an ein Schaltglied 510 (Fig. 2L) angelegt und durch dessen Betätigung wird der Inhalt der Blockzahl aus dem Register 418 (Fig. 2A) in das Datenregister 446 "geleitet (Fign. 2K und 2L). Außerdem wird das Signal auf der Leitung 350 an das ODER-Glied 512 angelegt, dessen Ausgabe das "Α-Bit" des Registers 446 auf "0" setzt. Das Signal auf der Lei-
YO 973 039
509807/1012
-se- 243337?
tung 350 wird außerdem an den Eingang "Rückschreiben und Ersetzen" für die Kanalsteuerung 20 (Fig. 2B) angelegt. Schließlich schaltet das Signal auf der Leitung 350 noch das Flipflop 516 (Fig. 2B) auf "1".
Wenn die monostabile Kippschaltung C12 ausgeht, schaltet das dadurch erzeugte Signal eine monostabile Kippschaltung Cl3 ein, die dann ein Signal auf der Leitung 352 erzeugt. Dieses Signal wird an das ODER-Glied 49 8 angelegt, dessen Ausgang den Inhalt des Datenregisters 446 (Fign. 2K und 2L) in den Assoziativspeicher schreibt.
Wenn die monostabile Kippschaltung C13 ausgeht, wird das dadurch erzeugte Signal durch ein ODER-Glied 526 geleitet und schaltet eine monostabile Kippschaltung C14 ein, die ein Signal auf der Leitung 354 erzeugt. Dieses Signal wird an ein Schaltglied 520 (Fig. 2B) angelegt, durch dessen Betätigung der Zustand des Flipflop 516 geprüft wird. Wenn das Flipflop auf "1" steht, erscheint ein Signal auf der Leitung 356, wenn es auf "0" steht, erscheint ein Signal auf der Leitung 35 8. Mit dem Signal auf der Leitung 356 wird eine monostabile Kippschaltung C15 eingeschaltet. Ein Signal auf der Leitung 358 läuft durch ein ODER-Glied 422 und schaltet eine monostabile Kippschaltung Al ein. Die monostabile Kippschaltung C15 dient nur Verzögerung und wenn sie abschaltet, wird ein Signal erzeugt, welches durch das ODER-Glied 526 läuft und die monostabile Kippschaltung Cl4 einschaltet.
Bisher wurde die Arbeitsweise der Verzeichniseinheit und des LRU-Kastens beschrieben, wenn eine Seitenausnahme auftritt. Bei diesem Betrieb kehrt die Steuerung zur Signalfolge zurück, die eingeleitet wird mit dem Einschalten der monostabilen Kippschaltung Al, und diese Folge kann jetzt wirksam werden, da der geforderte Block an dieser Verbindung im Primärspeicher vorhanden ist. An dieser Verbindung befindet sich die die Seitenausnahme auslösende Seite jetzt im Primärspeicher.
YO 9 73 039
509807/1012
Es wurde bereits beschrieben, daß beim Ausschalten der monostabilen Kippschaltung B2 ein Signal erzeugt wird, welches die
monostabile Kippschaltung Ml einschaltet zur Erzeugung eines
Signales auf der Leitung 364, welches an ein UND-Glied 528 angelegt wird. Die LRU-Zahl wird bezeichnet durch den aktiven Zustand einer der Leitungen 530,.532, 534, 536, 538, 540, 542 oder 544. Der aktive Zustand der Leitung 5 30 bezeichnet eine LRU-Zahl 1. Wenn die Leitung 5 30 aktiv ist, ist das UND-Glied 528 nicht
eingeschaltet, wodurch kein Ausgang auf der Leitung 392 erscheint. Wenn die Leitung 532 aktiv ist, bedeutet das eine LRU-Zahl von 2. Wenn das Register 154 (Fig. 2P) auch die Zahl 2 enthält, ist die Leitung 5 46 aktiv und das UND-Glied 548 wird zur Erzeugung eines Ausgangssignales eingeschaltet, welches das UND-Glied 528 an der Abgabe eines Ausgangssignales auf die Leitung 392 hindert. Wenn die Leitung 530 nicht aktiv ist und eine der beiden Leitungen
532 und 546 ebenfalls nicht aktiv ist, erzeugt das UND-Glied 528 ein Ausgangssignal auf der Leitung 392, welches zum Einschalten der monostabilen Kippschaltung M2 benutzt wird. -Mit dieser Anordnung tritt keine M-Signalfolge über das von der monostabilen Kippschaltung Ml erzeugte Signal hinaus auf, wenn auf der Leitung 39 2 kein Ausgabesignal liegt.
Das Signal auf der Leitung 366 wird an ein ODER-Glied 550 (Fig. 2Q) angelegt, um die Flipflops 16 8, 170, 172, 174, 176, 178,
180 und 182 auf "0" zu stellen. Wenn die monostabile Kippschaltung M2 ausgeht, schaltet das dadurch erzeugte Signal die monostabile Kippschaltung M3 ein zur Erzeugung eines Signales auf
der Leitung 36 8, welches an das Schaltglied 246 (Fig. 20) ange legt wird. Durch Einschalten des Schaltgliedes 246 wird jede
LRU-Zahl zwischen 2 und 8 an die Leitungen 186, 188, 190, 192, 19 4, 196 und 19 8 (Fig. 2R) angelegt. Mit dem Signal auf der Leitung 368 werden außerdem die Flipflops 200, 202, 204, 206, 208, 210 und 212 auf "0" gestellt (Fign. 2T und 2V). Die UND-Glieder 552, 554, 556, 558, 560 und 562 werden durch den aktiven Zustand der Leitungen 100, 102, 104, 106, 108 und 110 eingeschaltet. Wenn also z.B. die LRU-Zahl 4 ist, die den aktiven Zustand
YO 973 039
509807/1012
der Leitung 5 36 bezeichnet, so wird die Leitung 19O (Fig. 2R) aktiv und die Leitungen 192, 19 4, 196 und 19 8 werden ebenfalls wegen der Reihenanordnung der UND-Glied 556, 558, 560 und 562 aktiv. Bei dieser Anordnung sind die Register 158, 16O, 16 2, 16 4 und 166 in die Anfangssortierung eingeschlossen, um die kleinste Zahl in diesem Registersatz herauszufinden. Wenn das Register 164 z.B. in diesem Satz die kleinste Zahl enthält, wirr! das Flipflop 180 auf "1" gesetzt.
Dadurch wird die Leitung 108 aktiv und das UND-Glied 560 wird abgeschaltet. Dieser Vorgang bedeutet, daß die Register 164 und (Fig. 2U) jetzt aus dem Sortierprozeß herausgenommen sind und die nächste Sortierung die Register 158, 160 und 162 betrifft. Wenn das Register 162 also die kleinste Zahl der Register 15 8, 160 und 162 enthält, dann wird das Flipflop 178 auf "1" gestellt und die Leitung 106 inaktiv gemacht. Dadurch wird das UND-Glied 558 abgeschaltet und die unteren drei Register 162, 16 4 und aus der Sortierung herausgenommen, so daß die Register 15 8 und 160 übrig bleiben. Wenn angenommen wird, daß das Register 160 die kleinste Zahl der Register 158 und 160 enthält, dann wird das Flipflop 176 auf "1" gesetzt und die Leitung 104 abgeschaltet. Dadurch wiederum wird das UND-Glied 556 abgeschaltet und es bleibt nur das Register 158 in der Sortierung. Wenn das Register 15 8 das einzige in der Sortierung übrig gebliebene Register ist, muß es natürlich die kleinste Zahl enthalten, weil nur eine Zahl zu sortieren ist. Dem zufolge wird das Flipflop 174 auf "1" gesetzt und die Leitung 102 wird inaktiv, wodurch auch das UND-Glied 554 abgeschaltet wird. An diesem Beispiel wurde gezeigt, daß durch ein auf der Leitung 36 8 erscheinendes Signal die Flipflops 180, 178, 176 und 174 auf "1" gesetzt werden.
Kenn die monostabile Kippschaltung 113 ausgeht, wird dadurch ein Signal erzeugt, welches die monostabile Kippschaltung 114 einschaltet zur Erzeugung eines Signales auf der Leitung 370. Das Signal auf der Leitung 370 überträgt die Einereinstellung der Flipflops 170, 172, 174, 176, 178, 18O und 182 auf die Flipflop
YO 973 039
509807/1012
Gruppe 2OO , 2O2, 2Ο4, 2Ο6, 208, 21Ο und 212. Gemäß nachfolgender Erklärung bildet die Flipflop-Gruppe 20O7 202 usw. bis 212 die Maske für die selektive Abwärtsverschiebung der in den Figuren 2P, 2S und 2U gezeigten Register.
Wenn die monostabile Kippschaltung M4 ausgeht, schaltet das daraus resultierende Signal eine monostabile Kippschaltung M5 ein. Dieser liefert im eingeschalteten Zustand ein Signal auf die Leitung 372, mit dem die Flipflops 232, 234, 236, 238, 240 und 242 (Fig. 2R) auf "0" zurückgestellt werden. Das Signal auf der Leitung 372 wird außerdem an das ODER-Glied 550 angelegt, dessen resultierende Ausgabe die Flipflops 168, 170, 172, 174, 176, 178, 180 und 182 (Figuren 2T und 2V) auf "0" zurückstellt. Das Signal auf der Leitung 372 leitet auch das binäre Äquivalent der ganzen Zahl 2 in das Register 152 (Fig. 2P).
Der MIN-Kasten ist jetzt so eingestellt, .daß er die kleinste fehlende Zahl in den Registern über der Zahl herausfindet, die der LRU-Zahl entspricht. Wenn an diesem Übergang z.B. die LRU-Zahl 4 ist, würde das bedeuten, daß die Register 158, 160, 16 2, 16 4 und 16 6 (Fig. 2S und 2U) in die Sortierungen gemäß obiger Beschreibungen eingeschlossen wären.
In die Operation, die die kleinste Zahl in diesem Registersatz findet, sind auch die Register 156 und 154 eingeschlossen. Da die kleinste Zahl, die berücksichtigt werden kann, die Zahl 2 ist, wird dieser Wert in das Register 152 geladen.
An diesem Punkt muß festgestellt werden, ob eines der Register 15 4 und 156 ebenfalls die Zahl 2 enthält. Wenn diese Zahl nicht in den Registern 154 und 156 steht, dann ist 2 die kleinste fehlende Zahl. Wenn angenommen wird, daß das Register 154 die Zahl 2 enthielt und das Register 156 die Zahl 3, dann liegt natürlich in den Registern 15 2 und 154 eine Doppelbedingung vor. In diesem Fall muß der Inhalt des Reg isters 152 auf die Zahl 3 erhöht und dann die Prüfung noch einmal durchgeführt werden. Da jedoch bekannt ist, daß zu diesem Zeitpunkt das Register 156 YO 9 73 0 39
509807/1012
die Zahl 3 enthält, liegt auch hier wieder eine Doppelbedingung vor. Daher wird der Inhalt des Registers 152 auf 4 erhöht und anschließend hat die Prüfung Erfolg, weil die Zahl 4 die kleinste fehlende Zahl der aus den Zahlen 2 und 3 bestehenden Gruppe ist. Das heißt natürlich, daß die Zahl 1 aus dieser Bestimmung ausgeschlossen ist.
Wenn die monostabile Kippschaltung M5 ausgeht, wird durch das dadurch erzeugte Signal die monostabile Kippschaltung H6 eingeschaltet, die ein Signal auf die Leitung 374 gibt. Dieses Signal wird an ein ODER-Glied 564 (Fig. 20) angelegt, dessen Ausgang das Schaltglied 244 einschaltet. In dem oben beschriebenen Beispiel ist die Leitung 5 36 aktiv und dadurch gibt das ODER-Glied 572 ein Ausgang ssignal ab, welches die Leitungen 218, 216 und 214 in den aktiven Zustand versetzt. Das Signal auf der Leitung 214 erscheint auf der Leitung 184, das Signal auf der Leitung 216 erscheint auf der Leitung 186 und das Signal auf der Leitung 218 erscheint auf der Leitung 188.
Die Register 156, 154 und 152 sind demzufolge in die erste Sortierung für die kleinste fehlende Zahl einbezogen. Das Flipflop 168 (Fig. 2T) wird auf "1" gesetzt. Wenn eines der Register 154 oder 156 ebenfalls die Zahl 2 enthält, dann wird das eine oder das andere Flipflop 170 oder 172 (Fig. 2T) ebenfalls auf "1" gesetzt.
Wenn die monostabile Kippschaltung M6 ausgeht, wird dadurch die monostabile Kippschaltung M7 eingeschaltet und erzeugt ein Signal auf der Leitung 376, das an das Schaltglied 566 angelegt wird (Fig. 2Q). Wenn Doppelzahlen vorhanden sind, erscheint ein Signal auf der Leitung 388. Wenn jedoch keine doppelten Zahlen vorhanden sind, arscheint ein Signal auf der Leitung 390. Mit einem Signal auf der Leitung 388 wird die monostabile Kippschaltung M8 und mit einem Signal auf der Leitung 390 die monostabile Kippschaltung MIO eingeschaltet, nimmt man an, daß laufend Doppelzahlen vorhanden waren, so wird die monostabile Kippschaltung M8 eingeschaltet und es erscheint ein Signal auf der Leitung 378, welches an einer
YO 9 73 039
509807/1012
Reihe von UND-Gliedern (Fig. 2Q, 2T und 2V) angelegt wird, die die Einer-Einstellung des Flipflop in der Flipflop-Gruppe 170, 172, 174, 176, 178, 180 und 182 (Fign. 2T und 2V), die wegen der Doppelzahl auf "1" gesetzt wurden, an die Flipflop-Gruppe 2 32, 234, 236, 238, 240 und 242 (Fig. 2R) überträgt. Durch diese Operation wird die Doppelzahl, die z.B. in einem der Register 154 oder 156 gestanden haben kann, aus der nächsten Sortierung herausgenommen, weil entweder die Leitung 186 oder die Leitung 188 abgeschaltet wurde, wenn z.B. eines der Flipflops 2 32 oder 2 34 auf "1" gesetzt war.
Wenn die monostabile Kippschaltung 118 ausgeht, wird eine monostabile Kippschaltung M9 eingeschaltet und erzeugt ein Signal auf der Leitung 380, das an das ODER-Glied 550 (Fig. 2Q) angelegt wird. Die resultierende Ausgabe des ODER-Gliedes 5 50 stellt die Flipflops 168, 170, 172, 174, 176, 180 und 182 auf "0" zurück. Mit dem Signal auf der Leitung 380 kann man auch das Register 152 (Fig. 2P) erhöhen.
Wenn die monostabile Kippschaltung M9 ausgeht, schaltet das dadurch erzeugte Signal die monostabile Kippschaltung M6. Mit diesem Signal wird die Sortierung der kleinsten fehlenden Zahl wiederholt und wenn die Prüfung auf Doppelzahlen anzeigt, daß keine Zahl doppelt vorhanden ist, dann wird die monpstabile Kippschaltung MIO eingeschaltet und ein Signal auf der Leitung 382 erzeugt. Mit dem Signal auf der Leitung 382 wird das Schaltglied 22 8 und das Schaltglied 244 (Fig. 20) eingeschaltet. Im oben beschriebenen Beispiel, in dem die LRU-Zahl 4 ist, werden durch das Einschalten der Schaltglieder 228 und 244 die aktiven Zustände auf den Leitungen 216 und 218 an die Leitungen 112 und 114 (Fig. 20) übertragen. Die aktiven Zustände der Leitungen 112 und 114 setzen die Flipflops 200 und 202 auf "1". Dadurch ist die Einstellung der Maskenflipflops 200, 202, 204, 206, 208, 210 und 212 (Fign. 2T und 2V) beendet. Die Maskenflipflops steuern die selektive Abwärtsverschiebung der Inhaltsregister (Fign. 2P, 2S und 20). Außerdem verlaufen die Leitungen 124 und 126 in Fig. 2T zum Register 15 4. Die Leitungen 12 8 und 130 führen zum Register 156 usw.
YO 973 039
509807/1012
243337?
Das Signal auf der Leitung 382 wird außerdem an ein Schaltglied 2 30 (Fig. 2Q) angelegt, um den Inhalt eines der Zähler (Fig. 2Q) zu erhöhen, das heißt, desjenigen Zählers, der der kleinsten fehlenden Zahl entspricht.
Jetzt müssen noch die beiden Schiebeimpulse angelegt werden. Der erste Schiebeimpuls wird durch das Signal geliefert, das auf der Leitung 384 erzeugt wird, wenn die monostabile. Kippschaltung IUl eingeschaltet wird. Danach wird auf der Leitung 386 der zweite Schiebeimpuls geliefert und erzeugt, wenn die monostabile Kippschaltung M12 einschaltet.
Die Figuren 3A bis 3D zusammengenommen gem. Fig. 3 zeigen geeignete Ausführungsbeispiele der Stufen 406, 408, 410, 412, 414 und 416 und ihre Verbindung.
Anschließend wird ein typisches Rechenbeispiel gegeben, das die Arbeitsweise des MIN-Kastens zeigt. Für die Beschreibung dieser Arbeitsweise wird auf die Figuren 4A bis 4U Bezug genommen, zusammengelegt gem. Fig. 4 und die Figuren 5A bis 51, zusammengelegt gem. Fign. 5, die Figuren 6A bis 61, zusammengelegt gem. Fig. 6, die Figuren 7A bis IC, zusammengelegt gem. Fig. 7, Fign. 8a bis 8ü, zusammengelegt gem. Fig. 8 und die Figur 9. Die Figuren 4 und 8 sind identisch. Die Figuren 5 und 6 sind identisch mit den Figuren 4A bis 41 und 8A bis 81. Die Figur 7 ist identisch mit den Figuren 4A bis 4C, 5A bis 5C, 6A bis 6C und 8A bis 8C. Die Figuren 4, 5, 6 und 7 zeigen die Schaltwegen im MIN-Kasten zur Durchführung des in Fig. 9 gegebenen Rechenbeispieles.
In dem Beispiel in Fig. 9 wird angenommen, daß das Register 154 die Zahl 3, das Register 156 die Zahl 2, das Register 158 die Zahl 4, das Register 160 die Zahl 6, das Register 162 die Zahl 5, das Register 16 4 die Zahl 7 und das Register 16 6 die Zahl 10 enthält. Außerdem wird angenommen, daß die LRU-Eingabe 5 ist und dadurch anzeigt, daß das Register 160 adressiert wird. Die erste Sortierung betrifft daher das Register 16O und die unter ihm ste-
YO 973 039
509807/1012
henden Register, d.h., diejenigen Register, die höhere Bezeichnungszahlen haben, also die Register 162, 164 und 166. Die kleinste Zahl in dieser Registergruppe ist die 5 und sie steht in Register 162. Wenn das System diese Lage feststellt, werden die Register 162, 16 4 und 166 aus der Sortierung herausgenommen und es bleibt nur das Register 160 übrig. Die Zahl im Register 160 ist natürlich die kleinste Zahl in diesem nur das eine Register 160 umfassenden Satz.
Jetzt muß die kleinste nicht in den drei Registern 15 8, 156 und 15 4 direkt oberhalb des Registers 160 enthaltende fehlende Zahl gefunden werden. Diese kleinste fehlende Zahl findet man durch wiederholte Versuche, indem man mit der Zahl 2 beginnt, die in das Register 152 geladen wird (die Zahl ist bekanntlich kein Kanditat für die kleinste fehlende Zahl). Mit dem Laden der Zahl 2 in das Register 152 sind die Register 15 8, 156, 154 und 152 in die erste Sortierung eingeschlossen, die anzeigt, daß die Register 152 und 156 beide die Zahl 2 enthalten. Daher wird das Register 156 jetzt aus der benutzten Registergruppe herausgenommen und der Inhalt des Registers 152 um 1 auf 3 erhöht. Danach folgt die zweite Sortierung und ihr Ergebnis zeigt an, daß Doppelzahlen vorhanden sind, da die Register 152 und 154 beide die Zahl
3 enthalten.
Als nächstes wird daher das Register 154 aus der Sortierung herausgenommen und der Inhalt des Registers 152 wieder um 1 auf
4 erhöht. Es folgt jetzt die dritte Sortierung für die kleinste fehlende Zahl. In diesem Fall enthalten die Register 152 und dieselbe Zahl, nämlich 4. Demzufolge wird das Register 158 aus der Sortierung herausgenommen und der Inhalt des Registers 152 auf 5 erhöht. In der folgenden vierten Sortierung mit der 5 im Register 152 sind keine Duplikate dieser Zahl in den Registern 154, 156 und 15 8 mehr vorhanden.
In Fig. 4 sind nur drei Spalten angegeben, um die Arbeitsweise zu zeigen und zu erklären. In einem wirklichen System sind natürlich mehr als drei Spalten vorhanden. Das oben in Verbin-YO 973 039
509807/1012
dung mit Fig. 9 gezeigte Beispiel verwendet auch nur 4 Bits und nur das untere Register 166 enthielt in der hohen Wertposition eine "1". Das beschriebene Beispiel kann also mit nur drei Spalten gezeigt werden und wird nur im Zusammenhang mit den drei wertniederen Bits betrachtet.
Wie bereits erklärt wurde, sind von der ersten Sortierung die Register 160, 16 2, 16 4 und 16 6 betroffen, wenn die LRU-Zahl die 5 ist. Die Sortierläufe sind in Fig. 4 von links kommend durch die gestrichelten Linien 800 dargestellt (Fig. 4, 5 6 und 7). Keine Sortierfolge läuft in das Register 166, weil dieses durch die "1" in der werthohen Stelle dieser Zahl gesperrt war. Die Sortierfolge, die auf der rechten Seite herauskommt, ist die gestrichelte Linie, die zum Register 162 verläuft und hierbei handelt es sich um diejenige Sortierfolge, die das Flipflop 178 einschaltet (Fig. 2V). Die erste Sortierung schaltet das Flipflop 178. Die Leitung 106 wird abgeschaltet und dadurch die Leitungen 19 4, 196 und 19 8 aus der Sortierung herausgenommen.
Die zweite Sortierung befaßt sich nur mit dem Register 160 und dort ist der Sortierlauf am Anfang durch eine gestrichelte Linie 800 und dann durch eine Strichpunktlinie 8O2 dargestellt, die nach rechts ausläuft und das Flipflop 176 einschaltet (Fig. 2V). Die Leitung 104 wird abgeschaltet und dadurch wiederum die Leitungen 192, 19 4, 19 6 und 19 8 aus der Sortierung genommen. Der Impuls M4 schaltet die Flipflops 206 und 208 ein.
Die erste Sortierung nach der kleinsten fehlenden Zahl (S, M, N) erfolgt, indem man das Register 152 auf die binäre Zahl 0010 setzt, d.h., den die Dezimalzahl 2 darstellenden Binärcode. Die von dieser ersten Sortierung nach der kleinsten fehlenden Zahl betroffenen Register sind die Register 158, 156, 154 und 152. Die Flipflops 168 und 172 werden eingeschaltet. Nach Darstellung in Fig. 4 überquert eine gestrichelte Linie 800 das gesamte Register 156 und das gesamte Register 152 und zeigt dadurch an, daß die Zahl im Register 156 ein Duplikat der Zahl im Register
TO973039 509807/1012
152 ist, wodurch man die Zahl im Register 152 erhöhen und zur zweiten Sortierung nach der kleinsten fehlenden Zahl übergehen muß.
Die Erhöhung des Inhaltes des Registers 152 und die zweite Sortierung nach der SMN sind in Fig. 5 gezeigt. Die Flipflops 16 8 und 170 werden eingeschaltet. Aus Fig. 5 geht hervor, daß der durch die gestrichelten horizontalen Linien 800 dargestellte Sortierlauf durch beide Register 154 und 152 geht und anzeigt, daß die Zahl im Register 154 ein Duplikat der Zahl im Register 152 ist, wodurch die Zahl im Register 152 wieder erhöht werden muß auf 4. Dann wird die Arbeit mit der doppelten Sortierung nach der kleinsten fehlenden Zahl fortgesetzt.
Die Erhöhung der Zahl im Register 152 auf 4 und die Sortierung nach der dritten kleinsten fehlenden Zahl ist in Fig. 6 gezeigt. Die Flipflops 16 8 und 174 sind eingeschaltet. Die durch die horizontalen gestrichelten Linien 800 in Fig. 6 gezeigte Sortierfolge kommt aus den Registern 158 und 152 und zeigt dadurch an, daß die Zahl im Register 158 das Duplikat der Zahlenregister 152 ist. Demnach muß die Zahl im Register 152 wieder erhöht werden, und zwar auf 5, und es folgt die Viertelsortierung nach der kleinsten fehlenden Zahl. Diese Erhöhung in der vierten Sortierung ist in Fig. 7 gezeigt. Das Flipflop 16 8 ist eingeschaltet.
Da in der Sortierfolge in Fig. 7 nur ein Register übrig ist, muß die gestrichelte Linie 800 rechts am Register 152 herauskommen. Das stimmt natürlich nicht, wenn größere Zahlen in den anderen Registern stehen. Es gilt jedoch in diesem Falle, da im gewählten Beispiel alle anderen Register aus der Sortierung herausgenommen wurden, bevor diese letzte oder vierte Sortierung nach der kleinsten fehlenden Zahl erfolgte.
Bevor mit der ausgewählten Abwärtsverschiebung des Inhaltes der Register nach der Darstellung in den Figuren 2P, 2J und 2U wei-
YO 9 73 039
509807/1012
tergearbeitet wird, sei daran erinnert, daß das Schaltglied 22 durch den Impuls auf der Leitung 382 eingeschaltet wird, um die Flipflops 200, 202 und 204 auf "1" zu setzen. Für die gewählte Schiebeoperation sind also alle Ilaskenflipflops mit Ausnahme dar beiden unteren auf "1" gesetzt und die beiden unteren Flipflops bleiben auf "0" stehen.
In Fig. 8 sind die Zustände dieser Ilaskenflipflops wiedergegegeben durch die Bezeichnungszahlen rechts von den. Figuren 8C, 8F, 81, 8L, 8Q, 8R und 8ü. Diese Bezeichnungszahlen, die oben beginnen, sind 126, 124, 130, 128 usw., sind von den Flipflops 200, 202, 204, 206, 208, 210 und 212 nach Darstellung in den Figuren 2T und 2V. Der aktive Zustand dieser Leitungen wird durch die gestrichelte Linie in Fig. 8 dargestellt. In Fig. 8 stehen alle Maskenflipflops von oben hinab einschließlich zum Register 162 auf "1". Die Maskenflipflops für die Register 164 und 166 stehen auf "0". Das unterste Register 166 jedoch wird für die Schiebeoperation nicht gebraucht und ist in Fig. 8 nicht dargestellt.
Der erste durch die gestrichelte Linie dargestellte Schiebeimpuls wird an die Leitungen 384 angelegt. Das Register 152 enthält nur ein Flipflop-Register-Element. Die anderen Register 154, 156, 158, 160, 162, 164 und 166 enthalten zwei Flipflops. Nach Darstellung in Fig. 8 ist eines dieser beiden Flipflops oben am Registerelement ein Zwischenspeicherflipflop und das in der unteren Hälfte liegende Flipflop ist das Speicherflipflop für das Informationsbit. Der erste Schiebeimpuls soll Information vom Speicherflipflop in das Zwischenspeicherflipflop direkt darunterschiebcn oder es in die Umgehungsbahn leiten, um Register zur überspringen. Die einzige Umgehung, die im beschriebenen Beispiel erfolgt, ist die Umgierung in Verbindung mit dem Register 164.
Information aus den Bits im Register 16 2 gelangt über die gestrichelten Linien nach unten und dann über die Umgierungslinie η durch das Schaltglied und abwärts durch das Schaltglied unter
YO 9 73 039
B09807/1012
der Oberseite des Registerelementes des Registers 166. Im Beispiel gelangt die Information vom Register 162 jedoch nicht in das Register 166, weil die Leitung 150 nicht aktiv ist. Die Information im Register 16 2 verschwindet. Die Information in den Registern 16 4 und 166 verändert sich nicht und die Information in den Registern über dem Register 162 bewegt sich insgesamt um jeweils eine Position nach unten, d.h., der Inhalt des Registers 160 gelangt in das Register 162, der Inhalt des Registers 158 gelangt in das Register 80, der Inhalt des Registers 156 gelangt in das Register 15 8, der Inhalt des Register 154 gelangt in das Register 156 und der Inhalt des Registers 152 gelangt in das Register 154.
Die zweite Verschiebung aus den Zwischenflipflops in die Speicherflipflops ist in die Strichpunktlinie dargestellt, und zu diesem Zeitpunkt ist die Leitung 386 erregt.
Die folgende Tabelle zeigt die Beziehung der Operationen unter Steuerung des A-Taktes.
YO 9 73 039
509807/1012
Monostabile
Kipps chaltung
Einschaltbedingungen e inge s ehaltet ausgeführte
Funktion(en)
ausgeschaltet ausgeführte Funktion(en)
Speieherζugriffsanforderung durch ZE (Signal auf Leitung 2 86) . Nullstellung des Flipflop 516.
Einschalten der monostabilen Kippschaltung Al
Einschalten der monostabilen Kippschaltung A2 Rückstellung Einschalten des LRU-Feldes der monostader Argumenten bilen Kippmaske auf "0". schaltung A2, Schalten der Blockzahl der Argumentenmaske auf lauter Einsen. Leiten der Blockzahl aus Register 418 im Blockzahlenfeld des Argumentenregisters. Schalten der überein-Stimmungsanzeiauf "1". Rückstellen des IOL-Flipflop auf "O1V
Erzeugt Assoziie- Einschalrungssignal für ten der Assoziierung auf monostader Blockzahl bilen
Kippschaltung A3.
Abfrage der Übereinstimmungs-Anzeigeflipflops auf Einschaltung oder Nichtein-
Eins chaltung der monostabilen Kippschal-
Ausschalten der monostabilen Kippschaltung A3. schaltung des IOk-tung A4 Flipflop auf Irl"
Prüfung der Schaltstellung des IOL-Flip-Flop
YO 973 039
509807/1012
Die folgende Tabelle zeigt die Operationsbeziehungen unter Steuerung des B-Taktes.
Monostabile
Kippschaltung
Einschaltbedingungen eingeschaltet ausgeführte Funktion(en)
ausgeschaltet ausgeführte Funktion(en)
Nullstellung des EOL-Flipflop
Lesen des über- Einschalten der einstimmungswor- monostabilen tes im Assoziativ- Kippschaltung speicher in das B2. Speicherdatenre-"gister 446. Rückstellung des LRU-Halteregisters auf "0".
Ausschalten der monostabilen Kippschaltung Bl
Ausschalten der monostabilen Kippschaltung B2
YO 973 039
Leiten des realen Einschalten Blockes aus dem der monostabi-Speicherdatenregi- len Kippschalster in den linken tung B3. EinTeil des Speicher- schalten der adreßregisters 450 monostabilen des Primärspei- Kippschaltung chers. Leiten der Ml. "Adresse im Block" aus Register 418 im rechten Teil des Speicheradreßregisters 450. Rückstellung des LRU-feldes der Argumentenmaske auf Nullen. Leiten der LRU-Zahl auf Speicherdatenregister in LRU-HaI-teregister.
Setzen der überein- Einschalten stimmungsanzeigeflip-der monoflops auf "1". Set- stabilen zen des linken Teiles ippschaldes LRU-Feldes der tung B4 Argumentenmaske auf dieselbe Anzahl von Einsen wie die LRU-Zahl im Assoziativspeicher HDR (Speicherdatenregister) enthält. Rückstellung des Blockzah-
509807/1012
Monostabile Einschalt-Kippschaltung bedingungen eingeschaltet ausgeführte Funktion(en)
aus ge s ch a 1 te t ausgeführte Funktion(en)
Ausschalten der monostabilen Kippschaltung B3 lenfeldes der Argumentenmaske auf lauter Nullen. Rückstellung des LRU-Fe1des des Argumentenfeldes auf lauter Nullen.
Lieferung des Einschalten der Assoziationsim- monostabilen Kipppulses zur Rück-schaltung B4. stellung der übereinstimmungsanzeiger für alle Worte im Assoziativspeicher, deren LRU-Zahlen kleiner gleich der LRU-Zahl im Datenregister 4 46 sind.
Ausschalten der monostabilen Kippschaltung B4.
Ausschalten der monostabilen Kippschaltung B5. Lieferung des ersten Schiebeimpulses .
Lieferung des zweiten Schiebeimpulses
Einschalten der monostabilen Kippschaltung B6
Einschalten der monostabilen Kippschaltung B7.
Ausschalten der monostabilen Kippschaltung B6. Setzen der übereinstimmungs anzeige-Flipflops auf "1". Rückstellung des LRU-feldes der Argumentenmaske auf lauter Nullen. Setzen des Blockzahlenfeldes der Argumentenmaske auf lauter Einsen.
Einschalten der monostabilen Kippschaltung B fi,
YO 973 039
509807/1012
Monostabile Einschalt-Kippsehaltung bedingungen
eingeschaltet
ausgeführte
Funktion(en)
ausgeschaltet ausgeführte Funktion(en)
Ausschalten der monostabilen Kippschaltungen B7
Ausschalten der monostabilen Kippschaltung B8 Lieferung des As- Einschalten der soziationsimpul- monostabilen Kippses schaltung B9
Setzen des LRU-feldes des Assoziativspeicherdaten registers auf 10000000. Prüfen der Stellung des Änderungsflipflop.
BIO
BH
Einerstellung des Änderungsflip flop
Setzen des A-Bit des Assoziativspeicherdatenre- gisters auf "1".
Nullstellung Schreiben des Indes Änderungs-haltes des Assoziflipflop ativspeicherdaten-
registers in den Assoziativspeicher zurück.
Die folgende Tabelle zeigt die Beziehungen der Operationen unter Steuerung des C-Taktes.
Monostabile
Kippschaltung
Einschaltbedingungen
Einerstellung des IOL-Flipflop
eingeschaltet
ausgeführte
Funktion(en)
Setzen des LRU-Feldes der Argumentenmaske auf
lauter Einsen.
Die Rückstellung des Blockzahlenfeldes der Argumentenmaske auf
lauter Hüllen.
ausgeschaltet ausgeführte Funktion(en)
Einschalten
der monostabilen
Kippschaltung C2.
YO 973 039
509807/1012
Monostabile Einschalt-Kippsehaltung bedingungen
eingeschaltet axis ge führ te Funktion(en)
Setzen der Übereinstimmungsanzeige flipflops auf "1".
Ausschalten Lieferung des der monostabi- Assoziationslen Kippschal- impulses tung Cl
ausgeschaltet ausgeführte Funktion(en)
Einschalten der monostabilen Kippschaltung C3
Ausschalten der monostabilen Kippschaltung C2. Lieferung des Einschalten der moersten Schiebe- nostabilen Kippimpulses schaltung C4.
Ausschalten der monostabilen Kippschaltung C3, Lieferung des zweiten Schiebeimpulses
Einschalten der monostabilen Kippschaltung C5.
Ausschalten der monostabilen Kippschaltung C4,
Ausschalten der monostabilen Kippschaltung C5 Lesen des über- Einschalten der mo· einstimmenden nostabilen Kipp-Wortes aus dem schaltung C6. Assoziativspeicher in das Assoziativspei cher da tenre gi ster 446
Setzen des LRU-abschnittes des Assoziativspeicherdatenregisters 446 auf 10000000. Prüfung der Stellung des A-Bit im Assoziativspeicherdatenregister 446.
YO 9 73 039
609807/1012
monostabile Einsehalt-Kippsehaltung bedingungen
eingeschaltet ausgeführte Funktion(en)
ausgesehaltet ausgeführte Funktion(en)
Leiten der Block- Einschalten der ζ aiii aus dem Re- monostabilen Kipp-
Das Α-Bit im
Assoziativspeicherdatengister 418 in das schaltung C8.
register 446 steht auf "O1 Aus taus chadreßregister. Leiten des realen Blockfeldes des Assoziativspeicherdaten register s 446 in das Primär adreßregister. Rückstellung des Α-Bit im Assoziativspeicherdaten- register 446 auf 11O". Anlegen des Ersatzeinganges an die Kanalsteuerungen. Setzen des Ersatzflipflop 514 auf "1".
Ausschalten der monostabilen Kippschaltung C7
Schreiben des In- Einschalten der haltes des Assozi- monostabilen ativspeicherda- Kippschaltung tenregisters 4 46 C9. in den Assoziativspeicher
Ausschalten der monostabilen Kippschaltung C8.
Ausschalten der mo- Prüfung der nostabilen Kipp- Stellung des schaltung ClO. Austauschflipflop
ClO
Austauschflipflop 514 steht auf "1".
Nur Verzögerung
Einschalten der monos tab ilen
Kippschaltung C9.
CIl
Das Α-Bit im Assoziativspeicherdatenregister 446 steht auf "1". Leiten des Block- Einschalten zahlenfeldes des der monostabi-Assoziativspeicher- len Kippschaldaten register s 446 tung C12. in das Schreibadreßregister.
YO 973 039
509807/1012
Monostabile Einschalt-Kippschaltung bedingungen
einges ehaltet ausgeführte Funktion(en)
aus ges ehaltet ausgeführte Funktion(en)
Ausschalten der monostabilen Kippschaltung CIl. Leiten der Blockzahl vom ZE-Register 418 in das Austauschadreßregister. Leiten des realen Blockfeldes des Assoziativen Speicherdatenregisters in das Primäradreßregister. Leiten der Blockzahl vom Register 418 in das As s ozi ati vspeicherdatenre- gister 4 46. Setzen des Α-Bit des Assoziativspeicherdatenregis ters 4 46 auf "0". Anlegen der Eingabe "Zurückschreiben und Austauschen" an die Kanalsteuerung. Setzen des Rückschreibe- und Austausch-Flipflop 516 auf
Einschalten der monostabilen Kippschaltung C13.
Ausschalten der monostabilen Kipps chaltung C12.
Schreiben des Inhaltes des Assoziativspeicherdaten- registers 446 in den Assoziativspeicher.
Einschalten der monostabilen Kippschaltung C14.
Ausschalten der monostabilen Kipps chaltung C13. Ausschalten der monostabilen Kipps chaltung C15.
Prüfen der Erstellung des Rückschreibe- und Austausch-Flipflop 516.
YO 973 039
509807/1012
Monostabile Einschalt-Kippschaltung bedingungen eingeschaltet
ausgeführte
Funktion (en)
ausgeschaltet ausgeführte Funktion(en)
Einerstellung des Rückschreibe- und Austauschflipflop 516.
Nur Verzögerung
Einschalten der monostabilen Kippschaltung C14.
Die folgende Tabelle zeigt die Beziehung der Operationen und der Steuerung des M-Taktes.
Monostabile
Kippschaltung
Einschaltbedingungen einges ehaltet
ausgeführte
Funktion(en)
ausgeschaltet ausgeführte Funktion(en)
Ausschalten der V7enn die LRU-Zahl
monostabilen
Kippschaltung
B2.
1 oder 2 ist und
der Inhalt des Registers 154, ist
2, ist damit die
M-Taktfolge beendet.
Aktive Leitung 39 2.
Ausschalten der monostäbilen Kippschaltung M2, Rückstellung der
Flipflops 16 8,
Einschalten der monosta-
170,172, 174, 176, bilen Kipp-178, 180, 182 auf schaltung M3 "0". .
Anlegen der LRU-Zahl im Bereich
von 2 bis 8 an
eine der ausgewählten Leitungen
186, 188, 190,
192,194, 196 und
19 8 (Einschalten
des Schaltgliedes
246). Rückstellung der Flipflops 200,
202, 204, 206, 208, 210 und 212 auf "0".
Einschalten der monostabilen Kippschaltung M4.
YO 973 039
509807/1012
Monostabile Einsehalt-Kippschaltung bedingen
eingeschaltet ausgeführte
Funktion(en)
ausgeschaltet ausgeführte Funktion (en)
Ausschalten der monostabilen Kippschaltung M3.
Ausschalten der monostabilen Kippschaltung M4.
übertragung der Einstellung der Flipflops 170, 172, 174, 176, 178, 180 und 182 auf die Flipflops 200, 202, 204, 206, 208, 210 und 212.
Rückstellung der Flipflops 2 32, 234, 236, 238, 240 und 242 auf "0". Rückstellung Flipflops168, 170, 172, 174, 176, 178, 180 und 182 auf "0". Setzen des Inhaltes des Registers 152 auf 00 010.
Einschalten der
monostabilen
Kippschaltung
M5.
Einschalten der monostabilen Kippschaltung 116.
Ausschalten der monostabilen Kippschaltungen M5 und M9.
Anlegen der LRU-Zahl an die gewählte Leitung 214, 216, 218, 220, 222, 224 und 226. (Einschalten des Schaltgliedes 244).
Einschalten der monostabilen Kippschaltung M7.
Ausschalten der monostabilen Kippschaltung M6.
Bestimmung vor Doppelzahlen. .
Die Feststellung, daß Doppelz ah len vorhanden sind. übertragung der Ein- Einschalstellung der Flipflops ten der 170, 172, 174, 176, 178, monostabi-180 und 182 auf die len Kipp-Flipflops 232, 234, schaltung 236, 238, 240 und 242. M9.
YO 973 039
509807/1012
Monostabile Einsehalt- eingeschaltet ausgeschaltet
Kippschaltung bedingungen ausgeführte ausgeführte
Funktion(en) Funktion(en)
M9 Ausschalten Rückstellung der Einschalten der
der monosta- Flipflops 16 8, monostabilen
bilen Kipp- 170, 172, 174, Kippschaltung
schaltung 176, 178, 180 und
M8. 182 auf "0". Erhö
hung des Inhaltes des Registers 152.
MlO Die Feststel- Einschalten der Einschalten der
lung, daß kei- Schaltglieder 228, monostabilen ne DoppeIzah- 2 30 und 2 44. Kippschaltung
len vorhanden MIl.
sind.
MH Ausschalten Lieferung des er- Einschalten der
der monostabi- sten Schiebeimpul- monostabilen len Kippschal- ses. Kippschaltung
tung MIO. Ml2.
Ml2 Ausschalten
der monosta- Lieferung des zweiten Schiebeimpulses, bilen Kippschaltung MIl.
Anschließend v/erden die Programme beschrieben, die bei einer Seitenausnahme aufgerufen werden, d.h., wenn die angezogene Seite nicht im Primärspeicher steht. Die in diesen Programmen verwendeten Symbole sind folgende:
TABELLEN
T(I,J) ist eine N 2-Matrix, worin N die Anzahl von Seiten im virtuellen Speicher ist. Die erste Spalte dieser Tabelle (J=I) ist die LRU-Zahl und die zweite Spalte (J=2) der OPT-Wert, d.h. die P-Zahl. τ ist nach virtuellen Seiten geordnet.
YO 973 039
509807/1012
CTAB(I) ist eine Tabelle von N Zählern, die den Zahlenwert für das Auftreten eines jedes Ausgabewertes I (als MMC) enthält.
MBOX(I) ist eine Tabelle von 2M Einträgen: 1,...M ist der P-Stapel und 1,...H sind die Zähler. Diese Eintragungen empfangen die Kopien des Inhaltes der entsprechenden Register vom Gerät bei Ausführung einer Sonderinstruktion EXEC(2, LOC), gemäß nachfolgender Erklärung.
VERÄNDERLICHE
K ist die virtuelle Adresse derjenigen Seite, die die Ausnahme auslöst und wird vor dem Aufruf von PGEX geladen.
L ist der temporäre LRU-Index.
BUFF ist die temporäre Lage von MMC.
SMN ist die kleinste fehlende Zahl während einer Suche.
REPL enthält die virtuelle Adresse der Seite, die ausgetauscht wird. (In diesem Zusammenhang wird EXEC (3, LOC) aufgerufen gem. späterer Erklärung.
LMAX ist die ZaIi 1 von bis zu diesem Zeitpunkt angezogenen verschiedenen Seiten.
Alle obigen Veränderlichen sind selbstinitialisiert mit Ausnahme von LIlAX, welches am Anfang Null ist.
KONSTANTEN
M ist die Anzahl von Seitenrahmen im Realspeicher (Maschinengröße) .
N ist die Anzahl von Seiten im virtuellen Speicher. YO 973 039
503807/1012
BESCHRIFTUNGEN
NEVJR Prozeß neuer Bezug
SETH Setzen nächste kleinste fehlende Zahl
COlJS Konsistenzbestiimiung der Tabellen
CURR Prozeß laufender Bezug
ULRU Fortschreibung der LRU-Zahlen
OUTC Ausgabezähler
SERM Suche in der Einheit (MIN box)
BUBL Blasensortierung durchführen
P ROGRAMME
P rogr amins t ruktur
Es gibt vier Unterprogramme, zwei (INIT und PGEX) werden angenommenermaßen durch das zum Datenverarbeitungssystem gehörende Betriebssystem aufgerufen. Das Programm INIT initialisiert das Gerät. Das Programm PGEX wird bei jeder Seitenausnahmeunterbrechung angefangen und ruft das Programm SERM (Suche im Gerät (MIN Kasten) und BUBL (Blasensuche ausführen) auf. Das Programm PGEX empfängt die Veränderliche K als Parameter.
Funktionen (im Sinne der Programmiersprache PL/I)
IND(C,J) führt den Index I der Eintragung T(I, J) zurück, sodaß C = T(I, J) ist.
EXEC (J, LOC) oder EXEC (J) führt besondere Maschineninstruktionen wie folgt aus:
YO 973 039
509807/1012
Beschreibimg von EXEC
1. Setzt den Teil-Pseudo-OPT-Stapel und die Zähler in der Anlage auf null zurück.
2. Liest den Inhalt der Anlage (den Teil Pseudo-OPT-Stapel und die Zähler) in die aufeinanderfolgenden 211 Stellen, beginnend mit LOC.
3. Setzt die virtuelle Adresse der M-ten zuletzt angezogenen Seite in LOC.
4. Schiebt den Teil Pseudo-OPT-Stapel um eine Position herunter und setzt oben die Zahl von
LOC ein.
Die Programme werden jetzt beschrieben. In Fig. 10 besteht die Initialisierungsroutine im wesentlichen aus dem Schritt 602,
d.h. EXEC (1). Nach Darstellung in der obigen Beschreibung von EXEC wird durch den Schritt 602 der Teil Pseudo-OPT-Stapel P
und die Zähler in der Anlage auf null gesetzt, wobei der Kasten 604 die Rückkehr darstellt.
Wenn die Seitenaufnahme auftritt gemäß Darstellung durch Block 606, wird das Programm PGEX (Seitenausnahme) zu einer Seitenausnahmeunterbrechung angefangen). Die K-Operation'liefert die virtuelle Adresse der Seiten, die die Ausnahme verursacht hat, und wird geladen, bevor die PGEX-Routine aufgerufen wird. Durch den Schritt 608 wird der Inhalt des Teil Pseudo-OPT-Stapels und der Zähler in zwei aufeinanderfolgende M Stellen gelesen, beginnend mit der Stelle LOC, d.h. MBOX. Durch den Schritt 610 wird geprüft, ob der Wert von LMAX, d.h. die Zahl der bis zu diesem
Punkt angezogenen unterschiedlichen Seiten kleiner ist als der Wert von M, der eine Konstante und die Zahl der Seitenrahmen
im echten Speicher ist. Falls der Schritt 6IO die Antwort "ja"
erhält, geht das Programm weiter zum Schritt 612, d.h. der Verarbeitung der neuen Referenz (NEWR). Wenn der Schritt 610 jedoch die Antwort "nein" erhält, geht das Programm zum Schritt
YO 973 039
509807/1012
614, wo der Schritt EXEC (3, REPL) ausgeführt wird, d.h., die virtuelle Adresse der M-ten zuletzt angezogenen Seite wird nach REPL gesetzt, wo dann die virtuelle Adresse der ersetzten Seite enthalten ist. Vom Schritt 614 geht das Programm zum Block 616, v/o zuerst in einem Schritt T auf den Wert von M und T (REPL) auf den Wert von MBOX (M) gesetzt wird. Diese beiden Schritte bringen natürlich die T(I, J) Tabelle auf den neuesten Stand. Durch den Schritt 618 wird jetzt geprüft, ob T (K, 1) größer als null ist. Erhält der Schritt 618 die Antowrt "nein", verzweigt das Programm zum Schritt 612 zurück, v/o die neue Referenz verarbeitet wird (NEWR). Wenn der Schritt 618 jedoch die Antwort "ja" erhält, wird die nächste kleinste fehlende Zahl gesetzt (SETO) .
Das Ablaufdiagramm der Fig. 15 zeigt die Operation der NEWR-Routine (Verarbeitung neue Referenz) des Schrittes 612, die Seitenausnahmeroutxne (PGEX), wie sie in dem Ablaufdiagramm der Fig. 11 gezeigt ist. In dieser HEWR-Routine wird der Ausdruck LMAX um eins erhöht, die BUFF-Stelle, d.h., die vorrübergehende Stelle des MMC auf den Viert von LMAX gesetzt und die T Tabelle durch Setzen von T(K, 1) gleich dem Wert von BUFF auf den neuesten Stand gebracht. Diese drei Schritte sind alle im Ablaufdiagramm im Block 623 gezeigt. Wenn sie beendet sind, geht die Routine zum Schritt 624, wo geprüft wird, ob LMAX gleich 1 ist. Lautet die Antwort ja, geht das Programm zum Schritt 6 26, wo die OUTC-Routine, d.h. der Ausgabezählerschritt, ausgeführt wird und eine Eintragung des CTAB um 1 erhöht wird. Wenn die Antwort im Schritt 624 jedoch nein lautet, wird die ULRU-Routine des Schrittes 628 ausgeführt, in der alle LRU-Zahlen in der LRU-Liste auf den neuesten Stand gebracht werden, wie es oben für den LRU-StapeI beschrieben wurde.
Im Ablaufdiagramm der Fig. 12, welches das Programm dafür ist, die genannte OPT-Liste im Speicher in Konsistenz mit der Verarbeitung der die Ausnahme verursachenden Seite zu bringen, hat der Schritt 630 die Bezeichnung SETN, d.h., daß Setzen der näch-
YO 973 039
509807/1012
sten kleinsten fehlenden Zahl SMN auf 1. Durch den Schritt 6 32 wird die Konsistenz der Tabellen festgelegt (CONS) durch Aufruf der SERM-Routine, der Suche in der Anlage (MBOX). Als Antwort auf den Schritt 6 32 wird der Schritt 6 34, d.h. SERM, ausgeführt und dann kehrt das Programm zurück. Im Schritt 6 36 wird I auf 1 gesetzt und im Schritt 638 geprüft, ob T (I, 2) gleich SMN ist. Mit dieser Prüfung soll festgestellt werden, ob der Punkt in Spalte 2 in der T Tabelle gleich dem Wert der kleinsten fehlenden Zahl ist (SMN). Wenn der Schritt 638 die Antwort ja erhält, verzweigt das Programm zurück zum Schritt 632, wo die Konsistenz der Tabellen festgelegt wird (CONS). Wenn der Schritt 6 38 jedoch die Antwort nein erhält, dann läuft das Programm zum Schritt 642, wo der Wert von I um 1 erhöht wird und im Schritt 6 44 wird geprüft, ob der Wert von I den Wert von N, die Anzahl der Seiten im virtuellen Speicher, überschreitet. Danach läuft das Programm durch die Schritte 638, 640, 642 und 644 nacheinander immer wieder in einer Schleife, bis der Schritt 644 das Ergebnis ja bringt, woraufhin das Programm zum Schritt 646 geht.
Im Schritt 6 46 wird geprüft, ob der Wert von LMAX kleiner ist als der Wert von SMN. Lautet die Antwort nein, geht das Programm zum Block 648, wo der Ausdruck L(der vorrübergehende LRü-Index) auf den Wert von M(Anzahl von Seitenrahmen im realen Speicher) gesetzt und die Blasensortierung (BUBL) aufgerufen wird, die durch den Schritt 650 dann ausgeführt wird. Die Blasensortierung erfolgt nach dem oben gegebenen Algorithmus. Das Programm verzweigt zum Schritt 6 32 (CONS) zurück, wodurch die Konsistenz der Tabellen festgelegt ist.
Wenn der Schritt 646 die Antwort ja erhält, geht das Programm zum Block 654 mit der Beschriftung CURR (Prozeß laufender Referenz) , worin der vorrübergehende LRU-Index L auf den Wert T (K, l) -l gesetzt und die Blasensortierung aufgerufen wird, die durch den Schritt 656 ausgeführt wird, und dann kehrt das Programm zurück.
YO 973 039
509807/1012
Im Block 658 erfolgt die ULRU-Operation, d.h., die LRU-Liste wird auf den laufenden Stand gebracht. Zu diesem Zweck wird I auf el gesetzt. Im Block 6 60 wird geprüft, ob T (I, 1) kleiner ist als T (K, 1). Wenn der Schritt 660 die Antwort ja erhält, dann wird im Schritt 662 der Wert T (I, 1) um 1 erhöht. Das Programm geht dann zum Schritt 664, wo I um 1 erhöht wird. Wenn der Schritt 660 jedoch die Antwort nein erhält, geht das Programm direkt vom Schritt 660 zum Schritt 664. Im Schritt 666 wird geprüft, ob der Wert I größer ist als der Wert von N, Anzahl von Seiten im virtuellen Speicher. Wenn der Schritt 666 die Antwort nein erhält, verzweigt das Programm zum Schritt 6 60 zurück. Das Programm durchläuft immerwieder die Schritte 6 60, 6 62, 664 und 666, bis der Schritt 666 die Antwort ja erhält und dann geht das Programm weiter zum Schritt 668. Im Schritt 668 wird T (IND(I, 2), 2) gleich dem Wert von BUFF gesetzt, der im BUBL-Programm festgelegt wurde. Damit ist die ULRU-Operation beendet.
Im Block 670, CTAB (BUFF) wird der durch den BUFF-Wert indexierte Viert in der CTAB-Tabelle um 1 erhöht und die Instruktion EXEC (4, BUFF) ausgeführt, d.h. der OPT-Stapel wird um 1 heruntergesetzt und oben auf die Zahl aus der BUFF-Stelle gesetzt, die T-Tabelleneintragung T (K, ), d.h. beide Eintragungen der Zeile K werden auf 1 gesetzt. Der Block 672 stellt den Rückkehrschritt dar.
Das Programm im Ablaufdiagramm der Fig. 13 zeigt die SERM-Routine, d.h. die Suche im M-Kasten. In dieser Routine wird im Schritt 6 74 der Wert von SMN (kleinste fehlende Zahl v/ährend der Suche) um 1 erhöht und im Schritt 676 der Wert I auf 2 gesetzt. Im Schritt 678 wird geprüft, ob der Wert von SMN gleich dem Wert von MBOX (I) ist. Wenn der Schritt 678 die Antwort ja erbringt, verzweigt das Programm zum Schritt 674 zurück und läuft in einer Schleife immerwieder durch die Schritte 6 74, 6 76 und 678, bis der Schritt 678 die Antwort nein erhält, worauf das Programm zum Schritt 680 weitergeht, wo der Wert um 1 erhöht wird. Im Schritt 6 82 wird geprüft, ob der Wert I den Wert von M übersteigt. (An-
YO 9 73 039
509807/1012
zahl von Seitenrahmen im realen Speicher). Wenn der Schritt 682 die Antwort nein erhält, verzweigt das Programm zurück zum Schritt 674 und läuft in einer Schleife wiederholt durch die Schritte 674, 676, 678, 680 und 682, bis der Schritt 682 die Antwort ja erhält, woraufhin nach Darstellung durch den Block 684 das Programm zurückkehrt.
Das Ablaufdiagramm in Fig. 14 zeigt die Blasensuche (BUBL). Im ersten Schritt 686 dieser Suche wird L (vorrübergehender LRU-Index) um 1 erhöht. Im Schritt 687 wird geprüft, ob die Eintragung in der T-Tabelle (T(IND(L, 1),2) kleiner ist als der Wert von SMN. Wenn der Schritt 686 die Antwort ja erhält, geht das Programm zum Block 688, wo der Wert von BUFF, d.h. die vorrübergehende Stelle des MMC auf den Wert von T (IND, L, 1), 2) und dieser Wert von BUFF gesetzt wird. Das Programm geht dann zum Schritt 690, wo geprüft wird, ob der Wert von L kleiner ist als der Wert von LMAX. Falls der Schritt 687 die Antwort nein erg ibt, geht das Programm direkt von dort zum Schritt 690. Wenn der 'Schritt 690 die Antwort ja erhält, verzweigt das Programm zurück zum Schritt 6 86 und läuft immerwieder in einer Schleife durch die Schritte 686, 687, 688 und 690, bis der Schritt 690 die Antwort nein erhält. An diesem Punkt kehrt das Programm, symbolisch dargestellt durch den Schritt 692, zurück.
YO 973 039
509807/1012

Claims (5)

PATENTANS PRl)CHE
1. Verfahren zum Betrieb und zur Bewertung eines virtuellen Speichers in einer Datenverarbeitungsanlage, deren Programme auf verschiedene Datenseiten Bezug nehmen, sowie zur Bestimmung der minimalen Speicherkapazität für diese Datenseiten, mit einer ersten Liste der Bezeichnungen dieser Datenseiten und einer zugehörigen diskfiten Zahl von 1 bis η (n = Gesaintanzablseiten in diesem Programm) , die angibt, wie weit die letzte Benutzung dieser Seite zurückliegt, dadurch gekennzeichnet, daß eine zweite Liste dieser Namen aufgestellt wird, die aus einer geordneten Reihenfolge von η Adressen besteht, die jede einen ganzzahligen Wert von 1 bis η haben, wobei an jeder dieser Adressen eine Zahl C gespeichert ist, mit der die minimale Speicherkapazität (MMC) dieser Seite bestimmt werden kann und wobei die Zahlen C Werte von 1 bis η aufweisen,
daß zu jeder adressierten Seite diese Mindestspeicherkapazität (MMC) dadurch festgestellt wird, daß die zweite Liste in eine erste Gruppe von Adressen aufgeteilt wird, die Werte von 1 bis (1-1) aufweisen, sowie in eine zweite Gruppe von Adressen, die Werte von 1 bis η aufweisen, worin 1 gleich ist der diskreten Zahl, die zu dieser adressierten Seite in der ersten Liste gehört, und daß die Adresse k in der zweiten Gruppe bestimmt wird, in der der niedrigste Wert MMC gespeichert ist.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Adressenreihe in der zweiten Gruppe festgehalten wird, die sich in der Untergruppe mit den Adressen 1, (1+1), ..., (k-1) befindet und die folgenden Werte hat (1+a), (1+b), (1+c), ..., bis nötigenfalls zur Adresse (k-1), worin die Adresse (1+a) der kleinste Adressenwert ist, der größer ist als 1, derart, daß C (1+a) kleiner ist als C (1), worin (1+b) der kleinste Adressenwert ist, der größer ist als (1+a) derart, daß C (1+b) kleiner ist als C (1+a), usw.,
YO 973 039 A Λ
509807/1012
daß die kleinste Fehlzahl in der Gruppe von Zahlen zwischen 2 bis (C +1) festgestellt wird, worin C die max max
größte Zahl C unter den Zahlen ist, die in den Adressen 2 bis (1-1) enthalten sind, wobei diese kleinste Fehlzahl die Mindestspeicherkapazität der genannten Seite darstellt,
daß jede der Adressen 2 bis (1-1) der ersten Gruppe um 1 erhöht wird,
daß der Adressenwert 2 dieser festgestellten kleinsten Fehlzahl zugeteilt wird,
und daß jeder dieser Reihe von festgestellten Adressen der Wert der nächsten Adresse in der Reihe zugeteilt wird, wobei der höchste Adressenwert in dieser Reihe den Wert k erhält und wobei die Zahl, die ursprünglich an der Adresse k vorhanden war, ausscheidet.
3. Verfahren nach Anspruch 2 mit einem Hauptspeicher zur Speicherung von m Datenseiten und einem Zusatzspeicher zur Speicherung der restlichen (n-m) Seiten, dadurch gekennzeichnet, daß den in der ersten Liste gespeicherten Bezeichnungen gewichtete Zahlen zur Angabe der Zeitspanne, während der die Datenseite unbenutzt blieb, zugeteilt werden, die Werte von 1 bis m annehmen (LRU-Gewichte),
daß in einem zweiten Teil der ersten Liste die Bezeichnungen der restlichen Seiten dieses Programms zusammen mit LRü-Gewichten von (m+1) bis η gespeichert sind, daß die zweite Liste in einem ersten Teil die Zahlen C an den Adressen 1 bis m speichert,
daß in einem zweiten Teil der zweiten Liste Ergänzungsdaten zur gesamten zweiten Liste enthalten sind, und daß bei einem Zugriff zu einer Datenseite im Hauptspeicher der 1. Teil der Liste in eine 1. Adresseng ruppe mit den Werten 1 bis (1-1) und in eine 2. Gruppe mit den Werten 1 bis m unterteilt wird, worin 1 gleich ist dem LRV-Gewicht der adressierten Seite im 1. Teil der 1. Liste
Y0 973039 509807/1012
4. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß beim Feststellen einer Fehlseite (Seite nicht im Hauptspeicher vorhanden) der zweite Teil der zweiten Liste an den Adressen 1 bis m in Übereinstimmung gebracht wird mit der Information in den Adressen 1 bis m im ersten Teil der zweiten Liste,
daß die Bezeichnung der Fehlseite in den ersten Teil der ersten Liste zusammen mit einem LRU-Gewicht von 1 eingeschrieben wird,
daß die Bezeichnung dieser Seite in den zweiten Teil der zweiten Liste eingetragen wird, wobei das LRU-Gewicht von m auf (m+1) geändert wird,
daß die übrigen LRU-Gewichte im ersten Teil um 1 erhöht werden,
daß diejenigen LRU-Gewichte im zweiten Teil der ersten Liste, die Werte hatten von (m+1) bis zu einem Wert der um 1 niedriger liegt als der LRU-Wert der Fehlseite unmittelbar vor dem Feststellen des Fehlens der Seite um 1 erhöht werden und
daß der erste Teil der zweiten Liste fortgeschrieben wird, wobei die Information an den Adressen 1 bis m im ersten Teil in Übereinstimmung gebracht werden mit der Information an den Adressen 1 bis m des zweiten Teiles.
5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß überflüssige LRU-Gewichte entfernt werden und fehlende LRU-Gewichte in die zweite Liste eingesetzt werden.
C )
ίβΛ Einrichtung zur Durchführung des Verfahrens nach den vorhergehenden Ansprüchen, dadurch gekennzeichnet, daß die genannten Listen als zweidimensionale Schieberegister ausgeführt sind (Fig. 2), daß Zähleinrichtungen vorgesehen sind, mit denen die Inhalte der Register erhöht werden können, daß Steuereinrichtungen vorgesehen sind zum Verschieben der Registerinhalte aus einem Teil des Stapels in einen anderen Teil und daß zum Feststellen einer klein-
VO973039 509807/1012
sten Fehlzahl in den Registern ein zusätzlxchers Register vorgesehen ist, in dem Zahlen von 2 bis η gespeichert werden können, die nacheinander mit den Inhalten der einzelnen Register vergleichen werden.
YO 973 039
509807/1012
Leerseite
DE2433377A 1973-08-02 1974-07-11 Einrichtung und verfahren zur auswertung von datenseiten-transportvorgaengen in datenverarbeitungsanlagen Withdrawn DE2433377A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US385222A US3921153A (en) 1973-08-02 1973-08-02 System and method for evaluating paging behavior

Publications (1)

Publication Number Publication Date
DE2433377A1 true DE2433377A1 (de) 1975-02-13

Family

ID=23520534

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2433377A Withdrawn DE2433377A1 (de) 1973-08-02 1974-07-11 Einrichtung und verfahren zur auswertung von datenseiten-transportvorgaengen in datenverarbeitungsanlagen

Country Status (4)

Country Link
US (1) US3921153A (de)
JP (1) JPS5610709B2 (de)
DE (1) DE2433377A1 (de)
GB (1) GB1436488A (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4286330A (en) * 1976-04-07 1981-08-25 Isaacson Joel D Autonomic string-manipulation system
US4056848A (en) * 1976-07-27 1977-11-01 Gilley George C Memory utilization system
JPS58130504U (ja) * 1982-02-27 1983-09-03 日本軽金属株式会社 方立の支持構造
US4511994A (en) * 1982-09-27 1985-04-16 Control Data Corporation Multi-group LRU resolver
JPS6280743A (ja) * 1985-10-01 1987-04-14 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション アドレス変換例外処理方法
JPS6261811U (de) * 1985-10-08 1987-04-17
US4782444A (en) * 1985-12-17 1988-11-01 International Business Machine Corporation Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering
CA2697948A1 (en) * 2007-08-31 2009-03-05 Papier Virtuel Inc./Virtual Paper Inc. System and method for the automated creation of a virtual publication

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3588839A (en) * 1969-01-15 1971-06-28 Ibm Hierarchical memory updating system
US3541529A (en) * 1969-09-22 1970-11-17 Ibm Replacement system
US3577185A (en) * 1969-10-02 1971-05-04 Ibm On-line system for measuring the efficiency of replacement algorithms

Also Published As

Publication number Publication date
JPS5610709B2 (de) 1981-03-10
US3921153A (en) 1975-11-18
JPS5040241A (de) 1975-04-12
GB1436488A (en) 1976-05-19

Similar Documents

Publication Publication Date Title
DE1499244B2 (de) Steuergerät
DE3320213C2 (de)
DE1524225B2 (de) Verfahren zum betriebe einer redigier- und wiedergabeeinrichtung
DE2521436B2 (de) Informationswiedergewinnungsanordnung
DE2023354A1 (de) Programmierbare Einheit und Verfahren zum Betreiben einer programmierbaren Einheit
DE1303071B (de)
DE2551238A1 (de) Informationsuebertragungseinrichtung
DE1449544A1 (de) Datenverarbeitende Maschine mit ueberlappend abrufbarem Speicherwerk
DE2252279A1 (de) Verfahren und anordnung zur aenderung der relativen lage wenigstens eines informationsbits in einem datenstrom
DE2433377A1 (de) Einrichtung und verfahren zur auswertung von datenseiten-transportvorgaengen in datenverarbeitungsanlagen
DE2900586C2 (de) Anordnung zum Decodieren von Codewörtern variabler Länge
DE2506671C3 (de) Binärdaten-Handhabungsnetzwerk
DE3209187A1 (de) Verfahren zur darstellung eines textes auf einer einzeiligen anzeigevorrichtung eines texterstellungsgeraetes
DE2436932A1 (de) Anordnung zur messung der effektivitaet einer datenverarbeitungsanlage mit virtuellem speicher
DE1424706A1 (de) Verfahren zur Auswertung einer Vielzahl von Informationen
DE1774675A1 (de) Elektronisches Rechengeraet
DE2641971A1 (de) Digitale tisch-buchungs- und -rechenmaschine
DE1132747B (de) Elektronische Rechenmaschine
DE1524169A1 (de) Divisionseinrichtung
DE2519195C2 (de) Assoziativspeicher
DE2265696C2 (de) Rechenanordnung
DE4119717C2 (de) Dokumentlayoutverarbeitungsverfahren und Vorrichtung zu dessen Durchführung
DE1090885B (de) Parallel arbeitende, synchrone, elektrische, binaerrechnende Zahlenrechenmaschine, welche die Operation x+yz selbsttaetig auszufuehren vermag
DE1524117C (de) Datenverarbeitungsanlage mit Umlaufregistern
DE2257350C3 (de) Elektronische Rechenmaschine

Legal Events

Date Code Title Description
8141 Disposal/no request for examination