-
Die
vorliegende Erfindung betrifft ein Verfahren, um in physikalischer
Adressierungsbetriebsart auf einen Speicherbereich einer Digitalverarbeitungsmaschine
zuzugreifen, auf den in virtueller Adressierungsbetriebsart zugegriffen
werden kann. Die vorliegende Erfindung betrifft auch eine Digitalverarbeitungsmaschine,
die einen Speicherbereich umfaßt,
auf den in physikalischer und in virtueller Adressierungsbetriebsart
zugegriffen werden kann.
-
Die
virtuelle Adressierungsbetriebsart erlaubt es, einem gerade auf
der Maschine ausgeführten
Prozeß ein
oder mehrere virtuelle Speichersegmente in einem virtuellen Adressierungsraum
zuzuweisen. Ein virtuelles Speichersegment besteht traditionellerweise
aus Seiten einer festen Größe, wobei auf
jede mittels einer logischen Seitenzahl zugegriffen werden kann.
Wenn auf einen Speicherbereich der Maschine mittels virtueller Adressen
zugegriffen werden kann, wobei jede aus einer logischen Seitenzahl
und einer relativen Adresse gebildet ist, entspricht eine gegebene
physikalische Seitenzahl während
des Zugriffs der betrachteten logischen Seitenzahl. Die relative
Adresse ist das, was die Adresse im Innern einer logischen Seite
präzisiert.
Die physikalische und die virtuelle Seite sind von gleicher Größe. Der
tatsächliche
Zugriff auf den Speicherbereich der Maschine erfolgt mittels eines
bekannten Mechanismus, der die virtuelle Adresse übersetzt
in eine physikalische Adresse, die sich aus der physikalischen Seitenzahl
und der relativen Adresse zusammensetzt. Ein virtueller Adressierungsraum
ist interessant, weil er eine Adressierungsmöglichkeit für einen Prozeß (process
in Englisch) oder eine Aufgabe (thread in Englisch) dieses Prozesses
bereitstellt, ohne daß es
notwendig ist, sich um die tatsächliche Existenz
einer physikalischen Seite im Speicher zu kümmern, noch um die Lage dieser
Seite im physikalischen Speicher, falls sie existiert. Da der Zusammenhang
zwischen logischer Seitenzahl und physikalischer Seitenzahl über einen
effektiven Zugriff des Prozesses auf die virtuelle Adresse erzeugt
wird, entsprechen zwei aufeinanderfolgende logische Seitenzahlen
nicht unbedingt zwei aufeinanderfolgenden physikalischen Seitenzahlen
im physikalischen Speicher.
-
Die
physikalische Adressierungsbetriebsart erlaubt es einem Prozeß oder einer
Aufgabe dieses Prozesses direkt auf den physikalischen Speicher zuzugreifen,
ohne den Mechanismus zu verwenden, der eine virtuelle Adresse so
wie zuvor erläutert,
in eine physikalische Adresse übersetzt.
Diese Adressierungsbetriebsart ist besonders nützlich für gewisse Funktionen des Betriebssystems
der Maschine. Zum Beispiel kann der vorerwähnte Mechanismus die physikalische
Adressierungsbetriebsart verwenden.
-
Ein
für die
Ausführung
eines Prozesses notwendiger Speicherbereich kann mehr als eine physikalische
Seite der Maschine bedecken. Der Speicherbereich kann z. B. vorgesehen
sein, um ausführbaren
Befehlscode oder Daten wie die eines Stapelspeichers, eines Pufferspeichers
oder eines Verzeichnisses zu enthalten. Um auf den Speicherbereich
zuzugreifen, führt
der Prozeß Adressenberechnungen
durch, die erforderlich werden durch das Lesen einer Befehlszeile,
die einem laufenden Befehl folgt, oder einer Befehlszeile, die durch
eine Verzweigung in dem Falle, in dem der Speicherbereich ausführbaren
Befehlscode enthält,
definiert ist, der Prozeß führt außerdem Adressenberechnungen
durch, die notwendig werden durch das Lesen oder Schreiben eines
Datenwerts, der einem zuvor verarbeiteten Datenwert folgt, oder
eines Datenwertes, der sich in einem festen Abstand zu einem zuvor
verarbeiteten Datenwert befindet.
-
In
virtueller Adressierungsbetriebsart werden diese Berechnungen auf
logischen Adressen durchgeführt.
Auf den Speicherbereich wird mittels logischer Seitenzahlen zugegriffen,
die eine fortlaufende Folge bilden. Auf diese Weise wird die Berechnung einer
neuen Adresse, die einer laufenden Adresse folgt, auf einfache Art
ausgeführt,
indem eine ganze Zahl zur laufenden Adresse hinzugefügt wird.
Der Fall, in dem die neue Adresse aus einer logischen Seitenzahl
besteht, die anders ist als diejenige der laufenden Adresse, stellt
kein besonderes Problem dar. Es ist unwichtig, daß die physikalischen
Seiten, auf die im Speicherbereich zugegriffen wird, eine bruchstückhafte
Gesamtheit bilden. Der Mechanismus zur Verwaltung des virtuellen
Adressenraums kümmert
sich um die passende Zuordnung zwischen logischer Seitenzahl und
physikalischer Seitenzahl.
-
Allerdings
stellt sich in physikalischer Adressierungsbetriebsart des Speicherbereichs
ein Problem, wenn die physikalischen Seitenzahlen, die den Bereich
abdecken, nicht eine fortlaufende Reihe bilden. In der Tat besteht
das Risiko, daß durch
eine simple Addition zu einer laufenden Adresse eine physikalische
Seitenzahl generiert wird, die nicht dem Speicherbereich zugeordnet
ist. Andererseits bewirkt der Mechanismus zur Verwaltung des virtuellen Adressenraums
im allgemeinen, daß sich
die dem Speicherbereich zugeordneten physikalischen Seitenzahlen
während
der Ausführung
der verschiedenen Prozesse auf der Maschine ändern.
-
Eine übliche Lösung besteht
darin, vom Start der Maschine an einen Speicherbereich zu reservieren,
auf den in physikalischer Adressierungsbetriebsart zugegriffen werden
kann, indem eine fortlaufende Reihe von festgelegten physikalischen
Seitenzahlen reserviert wird, d. h. Seitenzahlen, deren Zuordnung durch
den Mechanismus der virtuellen Adressierung nicht verändert werden
kann während
die Maschine läuft.
-
Die übliche Lösung weist
viele Nachteilen auf. Die reservierten Seitenzahlen verringern die Möglichkeiten
des Mechanismus, zur Verwaltung des virtuellen Speichers physikalische
Seitenzahlen logischen Seitenzahlen zuzuordnen. Es entstehen Schwierigkeiten,
in der virtuellen Adressierungsbetriebsart einen Speicherbereich
zu definieren, auf den in physikalischer Adressierungsbetriebsart
zu einem beliebigen Zeitpunkt während
die Maschine läuft,
zugegriffen werden kann, weil der Mechanismus zur Verwaltung des
virtuellen Adressierungsraumes in starkem Maße Gefahr läuft, logischen Seitenzahlen
physikalische Seitenzahlen zuzuordnen, die keine fortlaufende Reihe
bilden.
-
EP-A-0566421 offenbart
Zeiger auf die in einer dafür
vorgesehenen Struktur im Speicher enthaltenen virtuellen und physikalischen
Adressen.
-
Um
die zuvor genannten Nachteile zu überwinden, schlägt die Erfindung
ein Verfahren vor, um in physikalischer Adressierungsbetriebsart
zuzugreifen auf einen Speicherbereich einer Digitalverarbeitungsmaschine,
auf den in virtueller Adressierungsbetriebsart mittels virtueller
Adressen zugegriffen werden kann, von denen jede aus einer logischen Seitenzahl
und einer relativen Adresse gebildet ist, auf eine betrachtete logische
Seitenzahl, die einer gegebenen physikalischen Seitenzahl entspricht
und auf eine an die betrachtete logische Seitenzahl angrenzende
logische Seitenzahl, die einer anderen physikalischen Seitenzahl
entspricht, die nicht notwendigerweise an die genannte gegebene
physikalische Seitennummer angrenzt, dadurch gekennzeichnet, daß das Verfahren
darin besteht, die genannte andere physikalische Seitenzahl an die
Adresse zu schreiben, die gebildet ist aus der betrachteten logischen
Seitenzahl und aus einer relativen Adresse eines ersten bestimmten
Wertes.
-
Es
ist damit möglich,
auf einen gleichen Speicherbereich der Digitalverarbeitungsmaschine zuzugreifen,
unabhängig
davon, ob es sich um die physikalische Adressierungsbetriebsart
oder die virtuelle Adressierungsbetriebsart handelt.
-
Gemäß einem
bestimmten Ausführungsbeispiel
ist das Verfahren dadurch gekennzeichnet, daß jede Inkrementierung einer
früheren
laufenden Adresse, die eine neue relative Adresse erzeugt, einen
Vergleich der neuen relativen Adresse mit dem ersten bestimmten
relativen Adressenwert hervorruft und eine neue laufende Adresse
erzeugt, dergestalt, daß:
- – die
neue laufende Adresse gebildet ist aus der betrachteten logischen
Seitenzahl für
die virtuelle Adressierungsbetriebsart, aus der entsprechenden physikalischen
Seitenzahl für
die physikalische Adressierungsbetriebsart und aus der neuen relativen
Adresse, die erzeugt wird, falls die neue relative Adresse unter
dem ersten bestimmten relativen Adressenwert liegt,
- – die
neue laufende Adresse gebildet ist aus einer logischen Seitenzahl,
die angrenzt an die betrachtete logische Seitenzahl für die virtuelle
Adressierungsbetriebsart, aus der genannten anderen physikalischen
Seitenzahl für
die physikalische Adressierungsbetriebsart und aus einer relativen Adresse
eines zweiten bestimmten Wertes, falls die neue relative Adresse über oder
gleich dem ersten bestimmten relativen Adressenwert ist.
-
Die
angefügten
Zeichnungen illustrieren die Erfindung:
-
1 wiederholt
kurz die Funktionsweise einer segmentierten virtuellen Adressierung,
deren Ausdrücke
nützlich
sein können
zur Erklärung
der Erfindung unter Bezug auf die folgenden Figuren.
-
2 zeigt
einen Speicherbereich, der die Erfindung anwendet.
-
3 und 4 zeigen
eine Maschine, die die Erfindung verwendet.
-
Unter
Bezug auf diese Zeichnungen wird als effektive Adresse EA eine logische
Einheit 113 bezeichnet, die im wesentlichen drei Felder
STE, SPN und SPRA umfaßt.
Das Feld STE enthält
i Bits, um einen Tabelleneintrag des Segments 106 zu kodieren, das
aus 2i Registern besteht. Beispielsweise
enthält die
Tabelle 106 sechzehn Register, falls i den Wert 4 hat.
Jedes Register ist dafür
vorgesehen, eine Anzahl m von Bits zu enthalten, um einen Segmentidentifizierer
SD zu referenzieren. Damit kann ein Adressierungsraum in 2m virtuelle Speichersegmente unterteilt werden.
Beispielsweise erlaubt es der Identifizierer SD sechzehn Mega-Segmente
zu unterscheiden, wenn m den Wert 24 hat. Die Vorsilbe Mega ist
hier im Sinn der Informatik zu verstehen, d. h. 1024 Kilo umfassend,
wobei das Kilo selbst 1024 Einheiten umfaßt. Das Feld SPN enthält j Bits,
um eine Seitenzahl im Segment zu kodieren. Ein Segment kann somit
2j unterschiedliche Seiten des virtuellen
Speichers enthalten, beispielsweise 64 Kilo-Seiten, falls j den
Wert 16 hat. Das Feld SPRA enthält
k Bits, um eine relative Byte-Adresse innerhalb einer Seite zu kodieren, wobei
das Byte die kleinste Einheit von Daten innerhalb der Informatik
ist, im allgemeinen 8 oder 9 Bits, die durch das System adressierbar
ist.
-
Eine
Seite kann somit 2k Informatik-Bytes enthalten,
z. B. 4 Kilo-Bytes, falls k den Wert 12 hat.
-
Eine
Verknüpfung
von Identifizierer des Segments SD und der Seitenzahl SPN ergibt
eine logische Seitenzahl LPN 107. Es ist damit möglich, 2m+j unterschiedliche logische Seiten zu referenzieren, somit
z. B. Tera-Seiten, falls m + j den Wert 40 hat. Indem die Bytes
jeder Seite mittels des Feldes SPRA adressiert werden, ist es somit
möglich,
einen virtuellen Adreßraum
von 4 Peta-Bytes
zu erhalten, wobei die Vorsilben Tera und Peta wieder im Sinne der
Informatik zu verstehen sind.
-
Eine
Tabelle LPT 110 der logischen Seiten erlaubt es, eine physikalische
Seitenzahl PPN einer gegebenen logischen Seitenzahl LPN zuzuordnen. Indem
die physikalische Seitenzahl PPN mit einer relativen Adresse PRA
in der so referenzierten Seite verknüpft wird, erhält man eine
physikalische Byte-Adresse 112. Die relative Adresse PRA
ist eine direkte Abschrift des Feldes SPRA. Falls z. B. die physikalische
Seitenzahl auf 20 Bits kodiert ist, ist es möglich, eine physikalische Adresse
zu erhalten, die auf 32 Bits kodiert ist, um auf einen physikalischen Speicher
von 4 Mega-Byte zuzugreifen.
-
Unter
den verschiedenen möglichen
Mechanismen zur Verwendung der Tabelle
110 kann die aus dem
Patent
US4279014 von
J-C. Cassonnet et al. genannt werden, aus dem verschiedene Bezugszeichen
der
1 bewußt
in der vorliegenden Beschreibung unter Verweis auf diese Figur wiederbenutzt werden.
-
Die
virtuelle Adressierung erlaubt es, einen Adreßraum zu erhalten, der deutlich
größer ist
als der verfügbare
physikalische Adreßraum.
Der Fachmann kennt noch weitere Vorteile, wie beispielsweise das Erleichtern
der dynamischen Herstellung von Verbindungen bei der Ausführung von
Programmen.
-
Die
beachtliche Größe des virtuellen
Adreßraums
bewirkt, daß zu
einem bestimmten Augenblick eine logische Seitenzahl LPN nicht notwendigerweise
in der Tabelle LPT referenziert ist. Es kann jedoch sein, daß eine physikalische
Seitenzahl PPN im physikalischen Speicher existiert, die geeignet
ist, der logischen Seitenzahl LPN zugeordnet zu werden.
-
Unter
Bezugnahme auf 2 kann auf den physikalischen
Speicher 1 einer Datenmaschine in virtueller Adressierungsbetriebsart
mittels eines logischen Raums 2 zugegriffen werden. Ein
Prozeß definiert
im logischen Raum 2, daß ein Speicherbereich, der
beispielsweise aus den Seiten 3 bis 7 besteht,
die zusammenhängenden
logischen Seitenzahlen i, i + 1, i + 2, i + 3, i + 4 hat. Die Seiten 3 bis 7 sind
physikalisch im physikalischen Speicher 1 durch die Seiten 8 bis 12 respektive
repräsentiert.
Die Zahlen der physikalischen Seiten q, s, t, r, u bzw. der Seiten 8 bis 12 sind
nicht notwendigerweise zusammenhängend, denn
die Tabelle 110 ordnet jeder logischen Seitenzahl eine
physikalische Seitenzahl zu in Abhängigkeit von den physikalischen
Seitenzahlen q, r, s, t, u, die zum Zeitpunkt, zu dem die Zuordnung
erfolgt, verfügbar
sind.
-
Die
Zuordnungen zwischen logischen Seitenzahlen i, i + 1, i + 2, i +
3, i + 4 und den physikalischen Seitenzahlen q, s, t, r, u werden
eingefroren, um zu verhindern, daß die physikalischen Seitenzahlen
q, r, s, t, u anderen logischen Seitenzahlen zugeordnet werden können, solange
die Maschine Prozesse ausführt,
die den Speicherbereich verwenden.
-
Gemäß dem Beispiel
der 2, hat die Seite 3 des virtuellen Adreßraums 2 als
physikalische Repräsentation
die Seite 8 im Speicher 1 der Maschine. Die physikalische
Seitenzahl q ist der logischen Seitenzahl i in der Tabelle 110 zugeordnet.
Die Seite 4 des virtuellen Adreßraums 2 hat als physikalische Abbildung
die Seite 9 im Speicher 1 der Maschine. Die physikalische
Seitenzahl s ist der logischen Seitenzahl i + 1 in der Tabelle 110 zugeordnet.
-
Wenn
ein Prozeß,
der durch einen Prozessor in virtueller Adressierungsbetriebsart
ausgeführt wird,
von der Seite 3 auf die Seite 4 übergeht,
genügt es
ihm, die logische Seitenzahl zu inkrementieren. Im Gegensatz dazu
kann ein Prozeß,
der von einem Prozessor in physikalischer Adressierungsbetriebsart
ausgeführt
wird, nicht von der Seite 8 auf die Seite 9 durch
eine einfache Inkrementierung der physikalischen Seitenzahl q übergehen,
denn er würde
dann eine Seite 18 der physikalischen Seitenzahl q + 1 adressieren,
die nicht notwendigerweise der Seite 4 zugeordnet ist.
-
Ein
erfindungsgemäßes Verfahren
besteht darin, die physikalische Seitenzahl s an die Adresse zu
schreiben, die aus der logischen Seitenzahl i und einer relativen
Adresse 13 eines bestimmten Wertes besteht. Durch den Zuordnungsmechanismus
findet sich deshalb die physikalische Seitenzahl an der relativen
Adresse 13 der Seite 8 wieder.
-
Somit
kann ein Prozeß,
der von einem Prozessor in physikalischer Adressierungsbetriebsart ausgeführt wird,
von der Seite 8 auf die Seite 9 übergehen,
indem er zuvor auf der relativen Adresse 13 der Seite 8 die
physikalische Seitenzahl s liest, die darin enthalten ist. Da die
relative Adresse 13 von einem bestimmten Wert ist, wird
der Prozeß dergestalt programmiert
sein, daß er
Kenntnis von diesem bestimmten Wert hat.
-
Da
der in 2 dargestellte Speicherbereich aus den Seiten 3 bis 7 im
virtuellen Adreßraum 2 besteht,
ist es interessant, die physikalischen Seitenzahlen t, r, u an die
Adresse zu schreiben, die aus der logischen Seitenzahl i + 1, i
+ 2, i + 3 und einer relativen Adresse 15, 16, 14 des
bestimmten Werts besteht. Durch den Zuordnungsmechanismus finden sich
damit die physikalischen Seiten t, r, u an der relativen Adresse 15 der
Seite 9, der relativen Adresse 16 der Seite 10 bzw.
an der relativen Adresse 14 der Seite 11 wieder.
Abhängig
von der Nutzung, für
die der Speicherbereich bestimmt ist, kann vorgesehen werden, an
die Adresse, die aus der logischen Seitenzahl i + 4 und einer relativen
Adresse 17 des bestimmten Werts besteht, einen Indikator
für das
Ende des Speicherbereichs für
eine rein sequentielle Verwendung, die physikalische Seitenzahl
q für eine
Verwendung mit zirkularem oder direktem Zugriff auf den Speicherbereich
oder nichts zu schreiben, da keine Seite in virtueller Adressierungsbetriebsart
auf die Seite 7 bzw. auf die Seite 12 in physikalischer
Adressierungsbetriebsart folgt. Selbstverständlich ist der Zugriff in physikalischer
Adressierungsbetriebsart auf den Speicherbereich durch einen Prozeß vereinfacht,
wenn alle relativen Adressen 13 bis 16 oder 17 vom
gleichen bestimmten Wert sind.
-
Bestimmte
Prozesse benutzen einen Speicherbereich durch aufeinanderfolgende
Inkrementierung der Adressen im Speicherbereich. Das ist beispielsweise
der Fall für
Prozesse, die sequentiellen Programmcode ohne Verzweigungen ausführen. Das
ist auch der Fall beispielsweise für Prozesse, die einen Speicherbereich
füllen
oder leeren, der einem Puffer, einem Stapel oder einer Tabelle zugewiesen
ist.
-
Das
erfindungsgemäße Verfahren
bietet einen zusätzlichen
Vorteil für
diese spezielle Art von Prozessen, wenn jede Inkrementierung einer
früheren
laufenden Adresse der logischen Seitenzahl i oder der physikalischen
Seitenzahl q, die eine neue relative Adresse erzeugt, einen Vergleich
der neuen relativen Adresse mit dem ersten bestimmten relativen
Adressenwert 13 hervorruft und eine neue laufende Adresse
erzeugt, dergestalt, daß:
- – die
neue laufende Adresse gebildet ist aus der betrachteten logischen
Seitenzahl i für
die virtuelle Adressierungsbetriebsart, aus der entsprechenden physikalischen
Seitenzahl q für
die physikalische Adressierungsbetriebsart und aus der neuen relativen
Adresse, die erzeugt wird, falls die neue relative Adresse unter
dem ersten bestimmten relativen Adressenwert 13 liegt,
- – die
neue laufende Adresse gebildet ist aus einer logischen Seitenzahl
i + 1, die angrenzt an die betrachtete logische Seitenzahl i für die virtuelle Adressierungsbetriebsart,
aus der anderen physikalischen Seitenzahl s für die physikalische Adressierungsbetriebsart
und aus einer relativen Adresse eines zweiten bestimmten Wertes,
falls die neue relative Adresse über
oder gleich dem ersten bestimmten relativen Adressenwert 13 ist.
-
Indem
man als zweiten bestimmten Wert den Wert Null nimmt, greift die
neue laufende Adresse auf den Anfang der folgenden Seite zu, sobald
sie den ersten bestimmten Wert der Adresse 13 erreicht.
-
Indem
man als ersten bestimmten Wert denjenigen der letzten Adresse nimmt,
auf die von der laufenden Seite zugegriffen werden kann, verwendet man
also in einer Seite, und bevor man auf die folgende Seite übergeht,
die Gesamtheit der Bytes, die sie bilden weniger denen, die notwendig
sind, um die physikalische Seitenzahl der folgenden Seite zu speichern.
-
Unter
Bezugnahme auf 3, umfaßt eine Maschine 19 einen
oder mehrere Prozessoren 20, die auf den Speicher 1 der
Maschine mit Hilfe eines Bussystems 21 zugreifen.
-
Im
nicht einschränkenden
Beispiel besteht ein Speicherbereich im Speicher 1 aus
zwei Reihen von Seiten, wobei jede einen Puffer realisiert, in dem der
Prozessor 20 Daten, die aufeinanderfolgen, schreiben oder
lesen kann. Der erste Puffer besteht aus den Seiten mit den physikalischen
Seitenzahlen d1 bis f1, unter denen die physikalische Seitenzahl
c1 diejenige der laufenden Seite ist, auf die vom Prozessor 20 lesend
oder schreibend zugegriffen wird. Die Zahl c1 kann einen beliebigen
Wert aus denen annehmen, die durch eine Verkettung definiert sind,
die derjenigen, die unter Bezugnahme auf 2 beschrieben
wurde, ähnelt,
einschließlich
der Zahlen d1 und f1, in dem Fall ist die Seite c1 gleich mit der
Seite d1 bzw. f1. Eine Unterbrechung 23 in der Verbindung zwischen
dem Ende der Seite mit der Zahl d1 und dem Anfang der Seite mit
der Zahl c1 stellt die Tatsache dar, daß eine beliebige Anzahl von
Seiten zwischen diesen beiden Seiten verkettet sein kann, einschließlich der
Tatsache, daß diese
Seiten miteinander gleich sein können.
Eine Unterbrechung 24 in der Verbindung zwischen dem Ende
der Seite mit der Zahl c1 und dem Anfang der Seite mit der Zahl
f1 stellt die Tatsache dar, daß eine
beliebige Anzahl von Seiten zwischen diesen beiden Seiten verkettet
sein kann, einschließlich
der Tatsache, daß diese
Seiten miteinander gleich sein können.
-
Entsprechend
besteht der zweite Puffer aus den Seiten mit den physikalischen
Seitenzahlen d2 bis f2, unter denen die physikalische Seitenzahl
c2 die der laufenden Seite ist, auf die durch den Prozessor 20 lesend
oder schreibend zugegriffen wird.
-
Ein
Steuerblock 22 ist auf einer Seite enthalten, die dem Speicherbereich
eigens zugewiesen ist, unterschieden von den zuvor für diesen
Bereich beschriebenen Seiten. Der Steuerblock 22 enthält unter anderem
12 Zeiger.
-
Ein
Zeiger r_beg_wptr enthält
eine reelle Anfangsadresse Ar1, ein Zeiger r_end_wptr enthält eine reelle
Endadresse Ar3 und ein Zeiger r_cur_wptr enthält eine reelle laufende Adresse
Ar2 des Puffers, um schreibend auf diesen Puffer in physikalischer
Adressierungsbetriebsart zuzugreifen.
-
Ein
Zeiger r_beg_rptr enthält
eine reelle Anfangsadresse Ar4, ein Zeiger r_end_rptr enthält eine reelle
Endadresse Ar6 und ein Zeiger r_cur_rptr enthält eine reelle laufende Adresse
Ar5 des Puffers für einen
Lesezugriff auf diesen Puffer in physikalischer Adressierungsbetriebsart.
-
Ein
Zeiger v_beg_wptr enthält
eine effektive Anfangsadresse Av1, ein Zeiger v_end_wptr enthält eine
effektive Endadresse Av3 und ein Zeiger v_cur_wptr enthält eine
effektive laufende Adresse Av2 des Puffers für einen Schreibzugriff auf
diesen Puffer in virtueller Adressierungsbetriebsart.
-
Ein
Zeiger v_beg_rptr enthält
eine effektive Anfangsadresse Av4, ein Zeiger v_end_rptr enthält eine
effektive Endadresse Av6 und ein Zeiger v_cur_rptr enthält eine
effektive laufende Adresse Av5 des Puffers für einen Lesezugriff auf diesen
Puffer in virtueller Adressierungsbetriebsart.
-
Der
Mechanismus für
die virtuelle Adressierung, so wie er mit Bezug auf 1 beschrieben
wurde, ordnet jeder effektiven Adresse 113 der Werte Av1
bis Av6 eine reelle Adresse 112 der respektiven Werte Ar1
bis Ar6 zu. Die Verwendung des erfindungsgemäßen Verfahrens wie unter Bezug
auf 4 beschrieben, erlaubt es, die reellen Adressen Ar1,
Ar2, Ar3, Ar4, Ar5, Ar6 identisch zu machen den Werten, die in den
respektiven Zeigern r_beg_wptr, r_cur_wptr, r_end_wptr, r_beg_rptr,
r_cur_rptr, r_end_rptr enthalten sind.
-
Die
Ausführung
des Verfahrens gemäß 4 ist
besonders nützlich
für alternierende
Füll- und
Entleervorgänge
für zwei
Puffer durch Prozesse, die von Prozessoren sowohl in physikalischer
Adressierungsbetriebsart als auch in virtueller Adressierungsbetriebsart
ausgeführt
werden. Diese Anwendung ist z. B. nützlich, um die Ablaufverfolgung 84 eines
Ereignisses durchzuführen,
die während
der Prozeßausführung durch
die Maschine stattfindet. Die Ablauf verfolgung 84 wird
bei jedem Befehl 77, der vom einem Prozeß generiert
wird, aktiviert.
-
Ein
Vorbereitungsschritt 79 dient dazu, zwei Puffer zu definieren,
die vorübergehend
die protokollierten Ereignisse aufnehmen, bevor sie in einem Massenspeicher
der Maschine abgelegt werden. Ein Speicherbereich von 2n Seiten
wird in virtueller Adressierungsbetriebsart reserviert. Die virtuelle Adressierungsbetriebsart
wird für
die Reservierung der 2n Seiten empfohlen, denn der Schritt 79 findet während des
Betriebs der Maschine statt und die reservierten Seiten werden physikalisch
im Speicher 1 mittels des Mechanismus zur virtuellen Adressierung unter
den verfügbaren
Seiten genommen werden, die eventuell im Speicher 1 verstreut
sind. Eine Anzahl n von Seiten ist für einen laufenden Puffer vorgesehen,
und eine Anzahl n von Seiten ist für einen Hilfspuffer vorgesehen.
Die so reservierten Seiten sind bis zu Ihrer Freigabe festgelegt.
Die Freigabe der Seiten erfolgt beispielsweise, wenn man keine Ereignisse
mehr verfolgen will.
-
Immer
noch in der virtuellen Adressierungsbetriebsart im Schritt 79,
wird der Steuerblock 22 erzeugt. Eine Anfangsadresse Av1
des laufenden Puffers wird in den Zeiger v_beg_wptr und in den Zeiger v_cur_wptr
geschrieben. Eine Endadresse Av3 des laufenden Puffers wird in den
Zeiger v_end_wptr geschrieben. Der Unterschied zwischen den Adreßwerten
Av1 und Av3 ist ungefähr
gleich n Mal dem Inhalt einer Seite. Eine Anfangsadresse Av4 des
Hilfspuffers wird in den Zeiger v_beg_rptr und in den Zeiger v_cur_rptr
geschrieben. Eine Endadresse Av6 des Hilfspuffers wird in den Zeiger
v_end_rptr geschrieben. Der Unterschied zwischen den Adreßwerten Av4
und Av6 ist ungefähr
gleich n Mal dem Inhalt einer Seite. Die physikalischen Adressen,
auch reelle Adressen Ar1, Ar3, Ar4, Ar6 genannt, die den Adressen
in der virtuellen Adressierungsbetriebsart Av1, Av3, Av4 bzw. Av6
entsprechen, werden ausgehend von der Zuordnungstabelle 110 berechnet,
siehe 1. Die Adressen Ar1, Ar3, Ar4, Ar6 werden in die Zeiger
r_beg_wptr und r_cur_wptr, r_end_wptr, r_beg_rptr und r_cur_rptr,
bzw. r_end_rptr geschrieben.
-
Somit
wird der laufende Puffer durch die Zeiger v_beg_wptr, v_cur_wptr,
r_beg_wptr und r_cur_wptr initialisiert, die auf den Anfang der
Seite d1 zeigen, in indirekter Weise für die zwei ersteren und direkt
für die
zwei letzteren und durch die Zeiger v_end_wptr und r_end_wptr, die
auf das Ende der Seite f1 zeigen, indirekt für den ersteren und direkt für den zweiten.
Entsprechend wird der Hilfspuffer initialisiert durch die Zeiger
v_beg_rptr, v_cur_rptr, r_beg_rptr und r_cur_rptr, die auf den Anfang
der Seite d2 zeigen, in indirekter Weise für die zwei ersteren und direkt
für die
zwei letzteren und durch die Zeiger v_end_rptr und r_end_rptr, die
auf das Ende der Seite f2 zeigen, in indirekter Weise für den ersteren
und direkt für
den zweiten.
-
Immer
noch im Schritt 79 in der virtuellen Adressierungsbetriebsart,
erlaubt es ein Lesen der Tabelle 110 jede physikalische
Seitenzahl PPN zu kennen, die einer logischen Seitenzahl LPN des
initialisierten Hilfspuffers und des initialisierten laufenden Puffers
entspricht. Auf die logische Seitenzahl LPN der ersten Seite des
laufenden Puffers folgt eine logische Seitenzahl LPN + 1, der in
der Tabelle 110 eine physikalische Seitenzahl PPN(LPN +
1) entspricht. Eine Adresse, die aus der Zahl PPN(LPN + 1) und einer
relativen Adresse, die Null ist, besteht, wird an das Ende der Seite
mit der logischen Seitenzahl LPN geschrieben. Das Ende der Seite
wird definiert durch eine Adresse mit einem bestimmten Wert wie
beispielsweise der des letzten Bytes der Seite, verringert um die
Anzahl der Bytes, die vorgesehen sind, um je Paket in den laufenden
Puffer geschrieben zu werden. Die vorangegangene Operation wird
für jede Seitenzahl
LPN + i wiederholt bis i = n – 1,
wie PPN(LPN + n – 1)
= f1. Die gleichen Operationen werden für die Seiten des Hilfspuffers
ausgeführt.
-
Nach
dem Schritt 84 testet ein Schritt 85, ob der laufende
Puffer voll ist. Der Test erfolgt sowohl in physikalischer Adressierungsbetriebsart
als auch in virtueller Adressierungsbetriebsart durch das Lesen des
Zeigers v_cur_wptr und des Zeigers v_end_wptr. Liegt der Wert des
Zeigers v_cur_wptr deutlich unter dem Wert des Zeigers v_end_wptr,
so ist der laufende Puffer nicht voll und ein Schritt 86 wird
aktiviert. Ansonsten ist der laufende Puffer voll und ein Schritt 89 wird
aktiviert.
-
In
Schritt 86 erfolgt ein Füllen des laufenden Puffers
durch das Schreiben eines Datenpakets an die Adresse, die in dem
Zeiger v_cur_wptr in virtueller Adressierungsbetriebsart enthalten
ist oder an die Adresse, die in dem Zeiger r_cur_wptr in physikalischer
Adressierungsbetriebsart enthalten ist. Ein Wert, der der Größe der als
Adressen geschriebenen Daten entspricht, ist dem Inhalt der Zeiger v_cur_wptr
und r_cur_wptr hinzugefügt.
Falls der relative Adreßteil
des Inhalts des Zeigers v_cur_wptr oder der Inhalt des Zeigers r_cur_wptr
den relativen Adressenteil der Adresse mit festem Wert (Ende der Seite)
erreicht oder überschreitet,
wird der relative Adressenteil des Inhalts der beiden Zeiger ersetzt durch
einen Wert Null, der Teil logische Seitenzahl des Inhalts des Zeigers
v_cur_wptr wird um eine Einheit inkrementiert und der Teil physikalische
Seitenzahl des Inhalts des Zeigers r_cur_wptr wird ersetzt durch
die physikalische Seitenzahl PPN, die an der Adresse des bestimmten
Wertes enthalten ist. So wie die Zeiger v_cur_wptr und r_cur_wptr
am Ende des Schritts 79, in der virtuellen Adressierungsbetriebsart und
in der physikalischen Adressierungsbetriebsart auf ein gleiches
Byte am Anfang der Seite d1 zeigten, zeigen die Zeiger v_cur_wptr
und r_cur_wptr bei jeder Aktivierung des Schritts 86 in
der virtuellen Adressierungsbetriebsart und in der physikalischen Adressierungsbetriebsart
auf ein gleiches Byte einer laufenden Seite c1.
-
Folgend
auf Schritt 86 überprüft ein Schritt 87,
ob der laufende Puffer voll ist. Der Test erfolgt sowohl in physikalischer
Adressierungsbetriebsart als auch in virtueller Adressierungsbetriebsart
durch Lesen des Zeigers v_cur_wptr und des Zeigers v_end_wptr. Falls
der Wert des Zeigers v_cur_wptr deutlich unter dem Wert des Zeigers
v_end_wptr liegt, ist der laufende Puffer nicht voll und ein Schritt 88 wird
aktiviert. Anderenfalls ist der laufende Puffer voll und ein Schritt 89 wird
aktiviert.
-
Der
Schritt 88 leitet zurück
auf den folgenden Befehl 78 des gerade ausgeführten Prozesses.
-
Der
Schritt 89 überprüft, ob der
Hilfspuffer leer ist. Der Test erfolgt sowohl in der physikalischen Adressierungsbetriebsart
wie auch in der virtuellen Adressierungsbetriebsart durch Lesen
des Zeigers v_cur_rptr und des Zeigers v_beg_rptr. Falls der Wert des
Zeigers v_cur_rptr gleich ist dem Wert des Zeigers v_beg_rptr, ist
der Hilfspuffer leer und ein Schritt 91 wird aktiviert.
Anderenfalls ist der Hilfspuffer nicht leer und der Schritt 88 wird
aktiviert.
-
Der
Schritt 91 bewirkt einen Austausch des Hilfspuffers mit
dem laufenden Puffer, indem der Inhalt der Zeiger r_cur_wptr und
v_cur_wptr durch den Inhalt der Zeiger r_beg_wptr bzw. v_beg_wptr
ersetzt wird, und der Inhalt der Zeiger r_beg_wptr, r_cur_wptr und
r_end_wptr ersetzt wird durch den Inhalt der Zeiger r_beg_rptr,
r_cur_rptr bzw. r_end_rptr und umgekehrt, und indem der Inhalt der
Zeiger v_beg_wptr, v_cur_wptr und v_end_wptr ersetzt wird durch
den Inhalt der Zeiger v_beg_rptr, v_cur_rptr bzw. v_end_rptr und
umgekehrt.
-
Nach
jedem Durchlaufen des Schritts 91, wird der Puffer, der
im Schritt 89 der Hilfspuffer war, der neue laufende Puffer
und der Puffer, der der laufende Puffer war, wird der neue Hilfspuffer.
Nach mehrfachem Durchlaufen des Schritts 91, ist der Zustand
der Maschine 19 z. B. der, der in 3 dargestellt
ist, in dem der neue Hilfstampon aus den Seiten d2, ..., c2, ...,
f2 besteht. Auf Schritt 91 folgt ein Schritt 90.
-
In
Schritt 90 wird ein Leeren des Hilfspuffers in asynchroner
Form aktiviert, d. h., einmal aktiviert, erfolgt das Leeren parallel,
unabhängig
vom Ablauf der Schritte der 4. Das Leeren
erfolgt immer in virtueller Adressierungsbetriebsart: Es wird durchgeführt, indem
ein Datenpaket an der Adresse gelesen wird, die im Zeiger v_cur_rptr
ursprünglich
gleich dem Inhalt des Zeigers v_beg_rptr enthalten ist, und anschließend dieses
Datenpaket in einen Massenspeicher geschrieben wird. Dies wird nach
den darauffolgenden Aktionen wiederholt, bis der Inhalt des Zeigers
v_cur_rptr gleich ist dem Inhalt des Zeigers v_end_rptr. Ein Wert,
der der Größe der in
Form von Adressen gelesenen Daten entspricht, wird dem Inhalt des
Zeigers v_cur_rptr hinzugefügt.
Falls der relative Adressenteil des Inhalts des Zeigers v_cur_rptr den
relativen Adreßteil
der Adresse des bestimmten Werts (Ende der Seite) erreicht oder übersteigt,
wird der relative Adressenteil des Inhalts des Zeigers durch einen
Wert Null ersetzt; der Teil der logischen Seitenzahl des Inhalts
des Zeigers v_cur_rpt wird um eine Einheit inkrementiert. Am Ende
des Schritts 90, werden die Zeiger v_cur_rptr und r_cur_rptr
mit dem Inhalt der Zeiger v_beg_rptr bzw. r_beg_rptr aktualisiert.
Sie zeigen damit in der virtuellen Adressierungsbetriebsart bzw.
in der physikalischen Adressierungsbetriebsart auf ein gleiches
Byte am Anfang der Seite d2.
-
Folgend
auf die Aktivierung des Leerens in Schritt 90 wird der
Schritt 86 aktiviert dergestalt, daß das Datenpaket, das durch
Schritt 84 beschafft wurde, in den neuen laufenden Speicher
geschrieben wird.