DE19905541A1 - Verfahren zum Steuern des Speicherzugriffs in einer Maschine mit einem Speicher mit ungleichmäßigem Zugriff und Maschine zur Ausführung eines solchen Verfahrens - Google Patents
Verfahren zum Steuern des Speicherzugriffs in einer Maschine mit einem Speicher mit ungleichmäßigem Zugriff und Maschine zur Ausführung eines solchen VerfahrensInfo
- Publication number
- DE19905541A1 DE19905541A1 DE19905541A DE19905541A DE19905541A1 DE 19905541 A1 DE19905541 A1 DE 19905541A1 DE 19905541 A DE19905541 A DE 19905541A DE 19905541 A DE19905541 A DE 19905541A DE 19905541 A1 DE19905541 A1 DE 19905541A1
- Authority
- DE
- Germany
- Prior art keywords
- memory
- machine
- physical
- access
- page
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 70
- 230000008569 process Effects 0.000 claims description 55
- 230000006870 function Effects 0.000 claims description 42
- 239000000872 buffer Substances 0.000 claims description 37
- 230000003213 activating effect Effects 0.000 claims description 3
- 238000011068 loading method Methods 0.000 abstract 1
- 230000005055 memory storage Effects 0.000 abstract 1
- 230000007246 mechanism Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000004913 activation Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000009795 derivation Methods 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 241000384969 Priva Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 210000003608 fece Anatomy 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Description
Im Gebiet der Datenverarbeitung ist es möglich, die Leistung
einer Maschine durch Erhöhen der Anzahl der Prozessoren, aus
denen sie aufgebaut ist, zu erhöhen. Ein Typ von Maschinen,
der unter dem Namen SMP bekannt ist, ermöglicht den verschie
denen Prozessoren derselben Maschine, mittels eines Systembus
ses in symmetrischer Weise auf ihren Speicher zuzugreifen.
Hierbei handelt es sich um Maschinen mit einem Speicher mit
gleichmäßigem Zugriff in dem Sinne, daß die Zugriffszeit auf
den Speicher für sämtliche Daten, auf die zugegriffen wird, im
wesentlichen gleich ist. Die Leistungskurve derartiger Maschi
nen wächst jedoch nicht linear mit der Anzahl der Prozessoren
an. Eine hohe Anzahl von Prozessoren bewirkt, daß die Maschine
mehr Probleme der Zugreifbarkeit auf ihre Betriebsmittel
verwaltet als daß sie Anwendungen ausführt. Dies hat zur
Folge, daß die Leistungskurve deutlich einknickt, wenn die
Anzahl der Prozessoren einen optimalen Wert überschreitet, der
oftmals auf einen Wert in der Größenordnung von vier geschätzt
wird. Der Stand der Technik schlägt verschiedene Lösungen für
dieses Problem vor.
Eine bekannte Lösung besteht darin, mehrere Maschinen zu
Clustern zu gruppieren, derart, daß sie untereinander mittels
eines Netzes kommunizieren. Jede Maschine besitzt eine opti
male Anzahl von Prozessoren, beispielsweise vier, und ihr
eigenes Betriebssystem. Sie stellt eine Kommunikation mit
einer anderen Maschine immer dann her, wenn sie eine Verarbei
tung an Daten ausführt, die von dieser anderen Maschine auf
dem aktuellen Stand gehalten worden sind. Die Zeit, die für
diese Kommunikationen notwendig ist, und die Notwendigkeit, an
kohärenten Daten zu arbeiten, schaffen Probleme hinsichtlich
der Latenzzeit für umfangreiche Anwendungen wie beispielsweise
verteilte Anwendungen, die zahlreiche Kommunikationen erfor
dern. Die Latenzzeit ist die Dauer, die den Zeitpunkt des
Sendens einer Zugriffsanforderung an den Speicher von dem
Zeitpunkt trennt, zu dem die Antwort auf diese Anforderung
empfangen wird.
Eine andere bekannte Lösung ist jene der Maschinen des Typs
NUMA. Hierbei handelt es sich um Maschinen mit einem Speicher
mit ungleichmäßigem Zugriff (Non Uniform Memory Access im
Englischen) in dem Sinne, daß die Zugriffs zeit auf den Spei
cher je nach dem Ort der Daten, auf die zugegriffen wird,
unterschiedlich ist. Eine Maschine des Typs NUMA ist aus
mehreren Modulen gebildet, wovon jedes eine optimale Anzahl
von Prozessoren und einen physischen Anteil des Gesamtspei
chers der Maschine enthält. Eine solche Maschine besitzt einen
ungleichmäßigen Speicherzugriff, weil ein Modul im allgemeinen
leichter auf einen physischen Teil des Speichers zugreift, den
es nicht mit einem anderen Modul gemeinsam nutzt, als auf
einen Teil, den es gemeinsam nutzt. Obwohl jedes Modul einen
privaten Systembus besitzt, der seine Prozessoren und seinen
physischen Speicher verbindet, ermöglicht ein sämtlichen
Modulen gemeinsames Betriebssystem, die Gesamtheit der priva
ten Bussysteme als ein einziges Bussystem der Maschine anzuse
hen. Eine logische Adressierung weist einen Aufenthaltsort
einer bestimmten physischen Speicherstelle eines Moduls zu.
Für einen betrachteten Prozessor werden die Zugriffe auf einen
lokalen Speicherabschnitt, der sich physisch im selben Modul
wie der Prozessor befindet, von Zugriffen auf einen entfernten
Speicherabschnitt unterschieden, der sich physisch in einem
oder mehreren anderen Modulen als jenem befindet, in dem sich
der Prozessor befindet.
Ein besonderer Typ der NUMA-Maschinen ist der Typ CCNUMA,
d. h. jene Maschinen mit Cache-Kohärenz (Cache Coherency im
Englischen). Ein gemeinsam genutzter Cache-Mechanismus be
wirkt, daß sich zu einem gegebenen Zeitpunkt eine gültige,
d. h. aktualisierte Kopie dieses Blocks nicht notwendig an
ihrer physischen Aufenthaltsspeicherstelle befindet. Eine oder
mehrere aktualisierte Kopien des Blocks können somit abhängig
von Anwendungsanforderungen und Systemaufrufen von einem Modul
zum nächsten wandern. Der physische Speicher, der sich in
einem betrachteten Modul befindet, ist jener, auf den das
betrachtete Modul am schnellsten, weil direkt mittels seines
lokalen Systembusses, zugreift. Der physische Speicher, der in
einem anderen Modul entfernt ist, ist jener, auf den das
betrachtete Modul am langsamsten zugreift, weil eine oder
mehrere Transaktionen zwischen Modulen notwendig sind. Der
physische Speicher, der sich lokal im betrachteten Modul
befindet, enthält einen ersten Teil, der speziell den in
diesem Modul sich befindenden Daten zugewiesen ist, und einen
zweiten Teil, der speziell den Kopien von in anderen Modulen
sich befindenden Blöcken zugewiesen ist. Der zweite Teil des
physischen Speichers bildet einen entfernten Cache-Speicher
der anderen Module.
Ein im ersten Teil des physischen Speichers befindlicher Block
ist nicht sofort verfügbar, wenn sein Inhalt keine aktuali
sierte Kopie darstellt, was beispielsweise der Fall ist, wenn
ein oder mehrere andere Module diesen Block gemeinsam nutzen
und wenn eines dieser anderen Module im Rahmen einer Speicher-
Kohärenz eine Kopie hiervon auf dem aktuellen Stand hält. Um
die gemeinsame Nutzung von in seinem ersten Teil des physi
schen Speichers befindlichen Blöcken mit anderen Modulen zu
verwalten, verwendet das betrachtete Modul eine Fern-Cache-
Steuereinrichtung RCC (Remote Cache Controller im Englischen).
Der Nutzen von Maschinen mit einem Speicher mit ungleichmäßi
gem Zugriff und mit Cache-Kohärenz besteht darin, daß jedes
Modul an Blöcken von Daten, die sich in einem ersten Teil
seines lokalen Speichers befinden, oder an Kopien in einem
zweiten Teil seines lokalen Speichers von Blöcken, die sich in
einem ersten Teil des Speichers eines anderen Moduls befinden,
arbeitet. Ein betrachtetes Modul muß daher mit anderen Modulen
nur kommunizieren, um an aktualisierten Kopien zu arbeiten, um
eine Datenkohärenz sicherzustellen. Im Betrieb ist es daher
zunächst unwichtig, ob sich ein Datenblock in einem Modul oder
in einem anderen befindet, da jedes Modul, falls notwendig, in
deinem lokalen Speicher Kopien von Blöcken hält, die es benö
tigt. Bei einer Ausführung des gemeinsamen Betriebssystems in
sämtlichen Modulen oder bestimmter Anwendungen des verteilten
Typs kann es indessen vorkommen, daß bestimmte Daten häufig
von sämtlichen Module gebraucht werden. Diese Daten betreffen
in einem nicht beschränkenden Beispiel Prozeßzuweisungstabel
len, Tabellen offener Dateien oder Tabellen von Sperrensetzun
gen für gemeinsam genutzte Betriebsmittel. Die Kohärenz dieser
Daten bringt die Gefahr mit sich, daß zahlreiche Austauschvor
gänge zwischen Modulen notwendig sind und daß somit die von
solchen Maschinen erwartete Erhöhung der Leistung gestört
wird.
Andererseits ist es günstig, einen virtuellen Adressierungsmo
dus zu verwenden, um Prozesse von einer Datenverarbeitungsma
schine auszuführen. Wie im Stand der Technik bekannt ist, ist
jedem von der Maschine ausgeführten Prozeß ein virtueller
Adressierungsraum zugewiesen. Der virtuelle Adressierungsraum
ermöglicht die Beseitigung von Speichergrößenbeschränkungen,
die in einem physischen Adressierungsraum auftreten können.
Die Prozesse (Process im Englischen) und die Prozeßstränge
(Thread im Englischen) innerhalb eines Prozesses greifen auf
ihren virtuellen Adressierungsraum mittels effektiver Adressen
zu, die Nummern logischer Seiten erzeugen, wovon für jede
durch die Maschine eine entsprechende Nummer einer physischen
Seite (Frame im Englischen) geschaffen wird, auf die im physi
schen Speicher nach Maßgabe des wirklichen Zugriffsbedarfs
zugegriffen werden kann. Der virtuelle Speichermechanismus ist
vom Cache-Speicher-Kohärenzmechanismus unabhängig. Falls
jedoch ein Prozeßstrang des Prozesses in einem Prozessor
ausgeführt wird, der sich in einem Modul befindet, das von dem
Modul verschieden ist, in dessen Speicher sich die physische
Seite befindet, auf die durch diesen Prozeßstrang zugegriffen
wird, bringt die Ausführung des Cachespeicher-Kohärenzproto
kolls zwischen Modulen die Gefahr mit sich, die Speicherzu
griffe zu verlangsamen und die Leistungen des Systems zu
beeinträchtigen.
Die Komplexität der Korrespondenzmechanismen und des Bedarfs
an physischem Speicher der von der Maschine ausgeführten
zahlreichen Prozesse hat zur Folge, daß es schwierig ist, im
voraus die Verteilung der physischen Seiten auf die Module zu
erfassen, damit sie logischen Seiten entsprechen.
Die Erfindung schlägt ein Verfahren zum Steuern des Speicher
zugriffs in einer Maschine mit einem Speicher mit ungleichmä
ßigem Zugriff vor, der auf mehrere Module verteilt ist, wovon
jedes einen oder mehrere Prozessoren CPU enthält, um Prozeß
stränge in einem virtuellen oder physischen Adressierungsraum
mittels effektiver Adressen EA auszuführen, für die mittels
einer Korrespondenztabelle eine Entsprechung mit Nummern PPN
physischer Seiten im Speicher hergestellt werden kann, wobei
eine Erzeugung der Nummer LPN einer logischen Seite eine
Ausnahme des Typs Seitenfehler erster Stufe hervorruft, wenn
die Nummer LPN der logischen Seite in der Korrespondenztabelle
fehlt, dadurch gekennzeichnet, daß es einen Schritt enthält,
in dem nach jeder Ausnahme des Typs Seitenfehler erster Stufe
eine Aufzeichnungs-Funktion aktiviert wird, die den Wert der
effektiven Adresse EA, die die Nummer LPN der logischen Seite
erzeugt hat, welche die Ausnahme hervorgerufen hat, die Zeit,
zu der die Ausnahme hervorgerufen worden ist, den Identifizie
rer des Prozeßstrangs, der die effektive Adresse EA verwendet,
den Identifizierer des Prozessors, der den Prozeßstrang aus
führt, sowie die Nummer PPN der physischen Seite, die der
Nummer der logischen Seite entspricht, die die Ausnahme her
vorgerufen hat, konsigniert (aufzeichnet bzw. zuordnet).
Die Aktivierung der Aufzeichnungs-Funktion bei jeder Ausnahme
des Typs Seitenfehler erster Stufe ermöglicht die Erfassung
jedes neuen ersten Zugriffs eines Prozessors auf eine Seite
des physischen Speichers unabhängig davon, ob diese Seite
abgeschlossen ist oder nicht. Der Identifizierer des Prozes
sors und die Nummer der physischen Seite ermöglichen die
Kenntnis, in welchem Modul sich die physische Seite und der
Prozessor befinden. Zwischen dem Prozessor und dem physischen
Speicher ist eine gute Affinität vorhanden, falls sie sich im
selben Modul befinden. Das Datum ermöglicht die Definition des
Zeitpunkts, zu dem dieser neue erste Zugriff entsteht, es
ermöglicht die Korrelation der Spurergebnisse untereinander
oder mit anderen Ergebnissen, die anderswo erhalten wurden.
Der Prozeßstrang-Identifizierer ermöglicht die Kenntnis, mit
welchem Prozeßstrang der Speicherzugriff verbunden ist, und
somit die Korrelation verschiedener Speicherzugriffe, die mit
demselben Prozeßstrang verbunden sind, der beispielsweise im
Lauf der Zeit in verschiedenen Prozessoren ausgeführt werden
kann. Der Wert der effektiven Adresse ermöglicht die Präzisie
rung des Adressierungstyps, der für den Prozeßstrang verwendet
wird, wobei sich die Nummer der physischen Seite, die dersel
ben effektiven Adresse zugewiesen ist, im Lauf der Zeit ent
wickeln kann, falls die physische Seite nicht verriegelt ist.
Für die Kommunikation können verschiedene Prozeßstränge die
selbe effektive Adresse verwenden.
Beim Starten des Verfahrens gleichzeitig zur Ausführung von
Prozessen in der Maschine ist somit sichergestellt, daß sämt
liche Zugriffskonfigurationen auf den physischen Speicher
erfaßt werden. Bei einem vom Start der Ausführung der Prozesse
in der Maschine unabhängigen Start des Verfahrens schlägt die
Erfindung vor, sämtliche Einträge in der Korrespondenztabelle
LPT beim Start des Verfahrens ungültig zu machen.
Die Erfindung schlägt außerdem eine Maschine zur Ausführung
des Speicherzugriff-Steuerverfahrens vor, die versehen ist mit
ersten Mitteln zum Aktivieren einer Funktion, die eine Nummer
LPN der logischen Seite entsprechend einer Nummer PPN einer
physischen Seite in einer Korrespondenztabelle einführt,
nachdem eine Ausnahme durch das Fehlen eines gültigen Eintrags
mit der Nummer LPN der logischen Seite in der Korrespondenz
tabelle hervorgerufen wurde, dadurch gekennzeichnet, daß sie
enthält:
- - zweite Mittel, die die ersten Mittel durch dritte Mittel ersetzen, die eine Aufzeichnungs-Funktion aktivieren.
Die Erfindung wird besser verständlich mit Hilfe der Beschrei
bung eines Ausführungsbeispiels mit Bezug auf die Figuren.
Fig. 1 erinnert kurz an die Funktionsweise einer segmentierten
virtuellen Adressierung,
Fig. 2 zeigt Korrespondenztabellen zwischen Nummern physischer
Seiten und Nummern logischer Seiten,
Fig. 3 zeigt verschiedene Stufen von Seitenfehlern sowie die
Hauptaktionen, die sich daraus gewöhnlich ergeben,
Fig. 4 zeigt Abwandlungen von Fig. 3 gemäß der Erfindung,
Fig. 5 zeigt ein Beispiel einer Datenverarbeitungsmaschine zur
Ausführung der Erfindung,
Fig. 6 zeigt eine Tafel gemäß dem Steuerverfahren der Erfin
dung,
Fig. 7 zeigt weitere Schritte des Verfahrens in Übereinstim
mung mit der Maschine.
Fig. 1 erinnert kurz an die Funktionsweise einer segmentierten
virtuellen Adressierung, deren Begriffe für die Erläuterung
der Erfindung mit Bezug auf die folgenden Figuren nützlich
sein können.
Effektive Adresse EA wird eine logische Entität 113 genannt,
die im wesentlichen drei Felder STE, SPN und SPRA umfaßt. Das
Feld STE enthält eine Anzahl i von Bits, um einen Eintrag
einer Segmenttabelle 106, die aus 2i Registern gebildet ist,
zu codieren. Beispielsweise enthält die Tabelle 106 sechzehn
Register, wenn der Wert von i vier ist. Jedes Register ist
dazu vorgesehen, eine Anzahl m von Bits zu halten, um auf
einen Segmentidentifizierer SD Bezug zu nehmen. Dies ermög
licht die Segmentierung eines Adressierungsraums in 2m Seg
mente des virtuellen Speichers. Beispielsweise ermöglicht der
Identifizierer SD die Unterscheidung von sechzehn Megasegmen
ten, wenn der Wert von m vierundzwanzig ist. Das Präfix "Mega"
ist hier im Sinne der Datenverarbeitung zu verstehen, d. h.,
es gibt den Wert eintausendvierundzwanzig Kilo an, wobei Kilo
seinerseits den Wert von eintausendvierundzwanzig Einheiten
besitzt. Das Feld SPN enthält eine Anzahl j von Bits, um eine
Seitennummer in einem Segment zu codieren. Ein Segment kann
somit 2j verschiedene Seiten des virtuellen Speichers enthal
ten, beispielsweise vierundsechzig Kilo Seiten, wenn der Wert
von j sechzehn ist. Das Feld SPRA enthält eine Anzahl k von
Bits, um eine auf ein Byte bezogene Adresse in einer Seite zu
codieren, wobei das Byte die kleinste Datenentität ist, im
allgemeinen acht oder neun Bits, die durch das System adres
sierbar sind. Eine Seite kann somit 2k Bytes enthalten, bei
spielsweise vier Kilobytes, falls der Wert von k zwölf ist.
Eine Verknüpfung des Segmentidentifizierers SD und der Seiten
nummer SPN ergibt eine Nummer LPN 107 der logischen Seite. Es
ist dann möglich, auf 2m+j verschiedene logische Seiten Bezug
zu nehmen, beispielsweise auf ein Tera Seiten, wenn der Wert
von m + j vierzig ist. Wenn die Bytes jeder Seite mittels des
Feldes SPRA adressiert werden, kann somit ein virtueller
Adressenraum mit vier Peta Bytes erhalten werden, wobei die
Präfixe Tera und Peta im informationstechnischen Wortsinn zu
verstehen sind.
Eine Tabelle LPT 110 für logische Seiten ermöglicht die Her
stellung einer Entsprechung zwischen einer Nummer PPN einer
physischen Seite und einer gegebenen Nummer LPN einer logi
schen Seite. Durch Verknüpfen der Nummer PPN der physischen
Seite mit einer relativen Adresse PRA in der Seite, auf die
somit Bezug genommen wird, wird eine physische Adresse 112
eines Bytes erhalten. Die relative Adresse PRA ist eine di
rekte Kopie des Feldes SPRA. Wenn beispielsweise die Nummer
der physischen Seite mit zwanzig Bits codiert ist, ist es
möglich, eine physische Adresse zu erhalten, die mit zweiund
dreißig Bits codiert ist, um auf einen physischen Speicher mit
vier Megabytes zuzugreifen.
Von den verschiedenen möglichen Mechanismen für die Nutzung
der Tabelle 110 kann derjenige des Patents US 4279014 von J.C.
Cassonnet u. a. erwähnt werden, wovon bestimmte Bezugnahmen
von Fig. 1 in der vorliegenden Beschreibung mit Bezugnahme auf
diese Figur beliebig aufgenommen worden sind.
Die virtuelle Adressierung ermöglicht, einen Adressierungsraum
zu erhalten, der deutlich größer als der verfügbare physische
Adressierungsraum ist. Der Fachmann kennt noch weitere Vor
teile wie etwa jenen, das die dynamische Änderung von Verbin
dungen mit der Ausführung von Programmen erleichtert wird.
Die erhebliche Größe des virtuellen Adressenraums bewirkt, daß
zu einem gegebenen Zeitpunkt auf eine logische Seite mit
Nummer LPN nicht notwendig in der Tabelle LPT Bezug genommen
wird. Es kann indessen vorkommen, daß eine physische Seite mit
Nummer PPN im physischen Speicher vorhanden ist, die der
logischen Seite mit Nummer LPN entspricht. Fig. 2 zeigt eine
Tabelle PPT 55 mit inverser Korrespondenz, worin auf jeden
Eintrag durch eine Nummer PPN einer physischen Seite Bezug
genommen wird, derart, daß der gesamte verwendete physische
Adressierungsraum abgedeckt wird.
Jeder Eintrag der Tabelle 55 ermöglicht einen Zugriff auf eine
Nummer LPN der logischen Seite, die der Nummer PPN der physi
schen Seite entspricht, sowie auf eine Gesamtheit von Eigen
schaften der physischen Seite PPN, beispielsweise auf einen
Indikator Pin, einen Indikator Lib und einen Indikator ES. Ein
Zustand Y des Indikators Pin bedeutet, daß die physische Seite
mit Nummer PPN im physischen Speicher verriegelt ist, d. h.,
daß sie durch den Inhalt einer anderen physischen Seite nicht
ersetzt werden kann. Ein Zustand N des Indikators Pin gibt an,
daß die physische Seite mit Nummer PPN nicht im physischen
Speicher verriegelt ist, d. h., daß sie durch den Inhalt einer
anderen physischen Seite ersetzt werden kann, beispielsweise
dann, wenn die Größe des physischen Speichers nicht ausreicht,
um sämtliche Korrespondenzen zwischen logischen Seiten und
physischen Seiten zu erfüllen. Ein Zustand Y des Indikators
Lib gibt an, daß die physische Seite mit Nummer PPN frei ist,
d. h., daß sie für eine Entsprechung mit einer eventuellen
logischen Seite mit neuer Nummer LPN verfügbar ist. Ein Zu
stand Y des Indikators ES gibt an, daß die physische Seite mit
Nummer PPN momentan mittels einer Eingabe/Ausgabe-Vorrichtung
ersetzt wird, die mit einem Massenspeicher in Kommunikation
steht, und daß diese physische Seite daher nicht verfügbar
ist.
Fig. 3a zeigt, wie ein Prozessor CPU wie beispielsweise einer
jener, die später mit Bezug auf Fig. 5 dargestellt werden, auf
eine physische Seite mit Nummer PPN zugreift, die der logi
schen Seite mit Nummer LPN entspricht, die er in Übereinstim
mung mit den Erläuterungen mit Bezug auf Fig. 1 adressiert.
Ein Zugriff auf die Nummer LPN einer logischen Seite im
Schritt 59 ruft eine Abfrage der Tabelle 110 hervor, bei
spielsweise gemäß einem Modus, der jenem ähnlich ist, der in
dem Patent US 4279014 mit Bezug auf deren Fig. 3c erläutert
wird. Falls der Prozessor CPU im Schritt 60 feststellt, daß
ein gültiger Eintrag der Tabelle LPT die Nummer LPN der logi
schen Seite enthält, greift er im Schritt 61 direkt auf die
entsprechende physische Seite mit Nummer PPN zu. Andernfalls
ruft der Prozessor CPU im Schritt 82 eine Ausnahme hervor, die
Seitenfehler erster Stufe genannt wird, um zu melden, daß die
Nummer LPN der logischen Seite in der Tabelle LPT 110 fehlt.
Die im Schritt 62 hervorgerufene Ausnahme hat die Wirkung, die
Softwarefunktion V_Neuladen im Schritt 63 zu aktivieren. Die
Funktion V_Neuladen wird im physischen Adressierungsmodus in
der Weise aktiviert, daß der Inhalt der Tabelle LPT modifi
ziert wird, damit eine Nummer PPN einer physischen Seite der
Nummer LPN der logischen Seite entspricht. Der physische
Adressierungsmodus besteht darin, direkt die Adresse 112 zu
verwenden, ohne den Mechanismus von Fig. 1 zu durchlaufen. Ein
Schritt 69 prüft anschließend, ob die Rückkehr der Funktion
V_Neuladen erfolgreich ist, d. h. ob die Seite mit Nummer PPN
im physischen Speicher vorhanden ist. Der Prozessor CPU kann
dann auf die physische Seite mit Nummer PPN im Schritt 61
zugreifen. Andernfalls liegt der Fall eines Seitenfehlers
zweiter Stufe vor. Der Prozessor CPU ruft dann im Schritt 70
die Aktivierung einer Softwarefunktion hervor, die p_erhalten
genannt wird. Es ist möglich, die Funktion p_erhalten im
virtuellen Adressierungsmodus in der Weise zu aktivieren, daß
der Inhalt der Tabelle PPT modifiziert wird, damit eine Nummer
PPN einer physischen Seite einer Nummer LPN einer logischen
Seite entspricht. Der virtuelle Adressierungsmodus vereinfacht
die Ausführung komplexer Algorithmen, die den Rahmen der
vorliegenden Erfindung verlassen. Die Funktion p_erhalten
aktiviert im Schritt 71 eine Funktion, die p_eingeben genannt
wird, im virtuellen Adressierungsmodus. Die Funktion
p_erhalten enthält außerdem andere Schritte, die nicht gezeigt
sind, weil sie für das Verständnis der Erfindung nicht direkt
von Nutzen sind. Beispielsweise werden nach einer Freigabe der
physischen Seite mit Nummer PPN, um ihre Stelle der logischen
Seite mit Nummer LPN zuzuweisen, samtliche Einträge der Ta
belle 110, die vorher eine Entsprechung mit dieser Nummer PPN
der physischen Seite gebildet haben, ungültig gemacht. Es
sollte angemerkt werden, daß nur die nicht abgeschlossenen
physischen Seiten freigegeben werden können. Nach der Ausfüh
rung des Schrittes 71 kann der Prozessor CPU dann auf die
physische Seite mit Nummer PPN im Schritt 61 zugreifen.
Fig. 3d zeigt die wesentlichen Schritte der Funktion
V_Neuladen, um den Seitenfehler erster Stufe aufzulösen. Im
Schritt 64 fragt die Funktion V_Neuladen die Tabelle PPT 55
ab. Wenn die Funktion V_Neuladen im Schritt 65 eine Nummer PPN
einer physischen Seite findet (56), die auf die Nummer LPN der
logischen Seite Bezug nimmt, die den Fehler in der Tabelle LPT
erzeugte, aktiviert die Funktion V_Neuladen im physischen
Adressierungsmodus die Funktion p_eingeben im Schritt 66.
Andernfalls endet die Funktion V_Neuladen im Schritt 68 und
leitet ein Abbruchsignal zurück, um das Fehlen eines erfolg
reichen Zugriffs auf die Tabelle PPT 55 zu melden. Nach der
Ausführung des Schrittes 66 endet die Funktion V_Neuladen im
Schritt 67, indem sie ein Erfolgssignal zurückleitet, um zu
melden, daß in der Tabelle LPT eine Entsprechung für die
Nummer LPN der logischen Seite geschaffen worden ist.
Fig. 3c erläutert die wesentlichen Aktionen der Funktion
p_eingeben, die im Schritt 74 beginnt. Im Schritt 75 wird die
Nummer LPN der logischen Seite, die sich aus den Schritten vor
dem Schritt 74 ergibt, in die Tabelle LPT 110 mit (58) der
entsprechenden Nummer PPN der physischen Seite eingegeben
(57).
Die Fig. 4a und 4b sind den Fig. 3a bzw. 3b bis auf die
Schritte 71 und 66 ähnlich, die durch die Schritte 72 bzw. 73
ersetzt sind, die eine Funktion P_Eingeben aktivieren, die von
der Funktion p_eingeben verschieden ist und die in der Be
schreibung mit Hilfe von Großbuchstaben unterschieden wird.
Fig. 4c erläutert die wesentlichen Aktionen der Funktion
P_Eingeben, die im Schritt 76 beginnt. Im Schritt 77 aktiviert
die Funktion P_Eingeben eine Aufzeichnungs-Funktion (Trace),
die in der folgenden Beschreibung erläutert wird. Im Schritt
78 aktiviert die Funktion P_Eingeben die ursprüngliche Funk
tion p_eingeben. Diese Ausführung ist jene, die eine gute
Anpaßbarkeit des Aufzeichnungs-Verfahrens an einen beliebigen
Maschinentyp ermöglicht, indem sie die Funktionsweise der
Maschine, auf die sie angewendet wird, so wenig wie möglich
stört. Es könnte nämlich in Betracht gezogen werden, einen
besonderen Prozeß für die Ausführung der Aufzeichnung zu
erzeugen. Dieser Prozeß brächte indessen die Gefahr mit sich,
die Maßnahmen durch die Betriebsmittel zu stören, insbesondere
was den Speicher und die Prozessoren betrifft, die ihm zuge
wiesen sind. Es könnte auch in Betracht gezogen werden, eine
Hardware-Vorrichtung zu verwenden, die die Speicherzugriffe
erkundet, etwa einen spezifischen Bus-Controller. Indessen
wäre diese Vorrichtung notwendig mit dem Hardware-Aufbau der
Maschine verbunden, für die sie entworfen worden wäre. Im
Gegensatz dazu bildet jede Ausführung der Aufzeichnungs-Funk
tion einen integralen Bestandteil des Prozeßstrangs, für den
sie eine Kopie der Speicherzugriffe bildet.
Fig. 5 zeigt ein Beispiel der Datenverarbeitungsmaschine 17,
die mehrere Module 14, 15 enthält, die durch einen Bus 16 in
der Weise verbunden sind, daß dasselbe Betriebssystem in
sämtlichen Modulen läuft. Das Modul 14 enthält mehrere Prozes
soren 0, 1, 2, 3, während das Modul 15 mehrere Prozessoren 4,
5, 6, 7 enthält, wobei diese Prozessoren im folgenden mit CPU
bezeichnet werden. Jeder Prozessor CPU enthält mehrere interne
Register, wovon in der folgenden Beschreibung eine Beschrän
kung auf ein Befehlsadressenregister IAR, ein Verbindungsregi
ster LR, ein Verzweigungsregister CTR und ein Zeitbasisregi
ster TBR vorgenommen wird. Die Register IAR, LR und CTR dienen
dem Prozessor CPU, zu dem sie gehören, dazu, Befehlsfolgen
während der Ausführung eines Prozeßstrangs Th, der dem Prozes
sor CPU unterliegt, auszuführen. Das Register TBR dient dem
Prozessor CPU, zu dem es gehört, dazu, bei Bedarf ein während
der Ausführung auftretendes Ereignis zu datieren. Jedes Modul
14, 15 enthält eine physische Speichereinheit 8, 9, und ein
Fernsteuerelement RCC 10, 11 für Cache-Kohärenz, das durch den
Bus 16 mit dem oder den anderen Modulen kommuniziert.
Ein Prozessor CPU des Moduls 14 kann mittels eines Busses 12
direkte lokale Zugriffe auf die physische Speichereinheit 8
und direkte entfernte Zugriffe auf die physische Speicherein
heit 9 über die Steuerelemente 10, 11 und den Bus 16 ausfüh
ren. Ebenso kann ein Prozessor CPU jedes anderen Moduls 15
mittels eines Busses 13 lokale direkte Zugriffe auf den physi
schen Speicher 9 und entfernte direkte Zugriffe auf die physi
sche Speichereinheit 8 über die Steuerelemente 11, 10 und den
Bus 16 ausführen. Die Gesamtheit der Speichereinheiten 8, 9
bildet den physischen Speicher der Maschine, der durch ein
einziges Betriebssystem verwaltet wird, das sämtlichen Modulen
gemeinsam ist. Da die entfernten Zugriffe länger als die
lokalen Zugriffe dauern, ist die Maschine vom Typ NUMA, d. h.
mit ungleichmäßigen Speicherzugriff.
Jeder Prozessor besitzt einen Identifizierer, der ihn von den
anderen Prozessoren unterscheidet, wobei ihm dieser Identifi
zierer in Abhängigkeit vom Modul zugewiesen ist, in dem er
sich befindet, beispielsweise eine Zahl von 0 bis 3 für das
Modul 14, eine Zahl von 4 bis 7 für das Modul 15 usw. Die
Nummer einer physischen Seite schafft eine Unterscheidung des
Moduls, in dem sie sich befindet, beispielsweise die Hexadezi
malzahlen 0 bis FFFF im Modul 14, falls der Speicher 8 zwei
hundertsechsundfünfzig Megabytes enthält, die Zahlen 10 000 bis
2FFFF im Modul 15, falls der Speicher 9 fünfhundertzwölf
Megabytes enthält, usw.
Die Maschine 17 enthält verschiedene Mittel für die Ausführung
der in den Fig. 3 und 4 gezeigten Schritte. Die Schritte 59
bis 62 werden durch Hardware-Mittel wie etwa Logikgatterschal
tungen und Mikrosoftware-Mittel ausgeführt. Diese Mittel
finden sich in jedem Prozessor CPU der Maschine. Die Korres
pondenztabellen 110 und 55 befinden sich im physischen Spei
cher 8, 9 der Maschine. Auf die Korrespondenztabelle 110 kann
jeder Prozessor CPU im physischen Adressierungsmodus direkt
zugreifen. Die Korrespondenztabelle 110 befindet sich in einem
einzigen Modul oder ist auf mehrere Module verteilt. Der
Schritt 63 ruft Software-Mittel auf, d. h. Mittel, die aus
Befehlsfolgen gebildet sind, die in Form eines im physischen
Speicher 8, 9 der Maschine befindlichen Textes codiert sind,
auf den jeder Prozessor CPU im physischen Adressierungsmodus
zugreift, weil dieser Schritt einen direkten Eingriff in die
Korrespondenztabelle 110 auslöst, die daher zu diesem Zeit
punkt nicht in einem virtuellen Adressierungsmodus verwendet
werden kann. Die Schritte 64 bis 68 sind daher durch Software-
Mittel verwirklicht, die den physischen Adressierungsmodus
verwenden. Der Schritt 70 nimmt andere Software-Mittel in
Anspruch, die den virtuellen Adressierungsmodus verwenden. Der
virtuelle Adressierungsmodus erleichtert eine Ausführung
komplexer Funktionen, Listendurchläufe, Zugriffe auf Massen
speicher über Eingänge/Ausgänge usw. Er wird durch das Fehlen
eines direkten Eingriffs in die Elemente des virtuellen Spei
chermechanismus, wie er mit Bezug auf Fig. 1 beschrieben
worden ist, ermöglicht. Die Schritte 74 und 75 werden durch
Software-Mittel ausgeführt, die den physischen Adressierungs
modus oder den virtuellen Adressierungsmodus in einer Adres
sierungsraum-Zone verwenden, in der Nummern LPN logischer
Seiten und Nummern PPN physischer Seiten übereinstimmen und in
der Tabelle PPT verriegelt sind.
Die Mittel der Schritte 63 bis 75 sind nicht ausschließlich
aus Codezeilen gebildet, die sich im Speicher der Maschine
befinden, sondern außerdem aus Schaltungen, die sich in jedem
Prozessor befinden, um diese Codezeilen zu interpretieren und
um die Aktionsfolgen auszulösen, die sich aus dieser Interpre
tation ergeben. Dies ist im Stand der Technik vollkommen
bekannt.
Fig. 6 zeigt eine Tafel, die aus mehreren Spalten gebildet
ist. Die erste Spalte enthält eine Folge von Zeitangaben, die
in Stunden, Minuten, Sekunden und Nanosekunden ausgedrückt
sind. Jeder Zeitangabe entspricht eine Aufzeichnung, die in
den folgenden Spalten im einzelnen angegeben ist und, die zu
der in derselben Zeile der ersten Spalte verzeichneten Zeit
vorgenommen wurde. Die Zeitangabe ermöglicht die Bildung von
Korrelationen mit den sonstigen erhaltenen Ergebnissen.
Die zweite Spalte enthält den Namen Pnom des Prozesses. Dieser
Name des Prozesses ermöglicht die makroskopische Erkennung des
Prozesses, der einen Speicherzugriff ausgeführt hat, woraus
sich die Spur ergibt. Diese Spalte ist optional.
Die dritte Spalte enthält einen Identifizierer Pid des obenge
nannten Prozesses, der im allgemeinen durch das Betriebssystem
für jeden erzeugten Prozeß automatisch zugewiesen wird.
Die vierte Spalte enthält einen Prozeßstrang-Identifizierer
Tid, der vom in der dritten Spalte identifizierten Prozeß, der
insbesondere für die Aufzeichnung verantwortlich ist, ausge
führt wird.
Die fünfte, Spalte enthält einen Identifizierer des Prozessors
CPU, der dem in der vierten Spalte angegebenen Prozeßstrang zu
der Zeit ausführte, zu der die Aufzeichnung erfolgte. Die
Kenntnis dieses Identifizierers ermöglicht die Bestimmung des
Moduls, in dem sich der Prozessor CPU befindet. Beispielsweise
gibt ein Wert von 0 bis 3 an, daß sich der Prozessor im Modul
14 befindet, ein Wert von 4 bis 7 gibt an, daß sich der Pro
zessor im Modul 15 befindet. Bei Hinzufügung eines weiteren
Moduls mit sechs Prozessoren gibt ein Wert zwischen 8 und 13
an, daß sich der Prozessor in diesem zusätzlichen Modul befin
det. Eine gemeinsame Auswertung der fünften und der vierten
Spalte ermöglicht die Bestimmung, wie die Prozeßstränge in den
Modulen verteilt sind.
Die sechste Spalte enthält ein Signal IT, dessen Wert Y einen
Unterbrechungseingriff angibt. Im anderen Fall ist der Wert N.
Ein Wert Y gibt an, daß die Informationen, die den in der
vierten Spalte identifizierten Prozeßstrang betreffen, nicht
signifikant sind. Die zum Zeitpunkt des Seitenfehlers ausge
führten Befehle sind nämlich eigentlich nicht jene des Prozeß
strangs, sondern jene einer Unterbrechungssteuerung.
Die siebte Spalte enthält den hexadezimal codierten Wert des
Registers LR des Prozessors CPU, auf den in der fünften Spalte
derselben Zeile Bezug genommen wird. Der Wert des Registers LR
ist die Adresse des Befehls, der in einer Codesequenz einem
Funktionsaufruf folgt, der dem vom Prozessor CPU ausgeführten
momentanen Befehl folgt.
Die achte Spalte enthält den hexadezimal codierten Wert des
Registers IAR des Prozessors CPU, auf den in der fünften
Spalte derselben Zeile Bezug genommen wird. Der Wert des
Registers IAR ist die Adresse des vom Prozessor CPU ausgeführ
ten momentanen Befehls in der Codesequenz. Die Werte der
Register LR und IAR ermöglichen beispielsweise die Ableitung,
ob der Prozeßstrang Tid im Kernmodus ausgeführt wird, d. h.,
daß infolge eines Systemaufrufs die Codesequenz einer Kern
funktion und nicht eine zum Prozeßstrang Tid gehörende Codese
quenz selbst ausgeführt wird. Diese Werte ermöglichen daher
die Herstellung einer Beziehung zwischen einer Zuweisung einer
Seite zum Prozeßstrang Tid und ihrem Ausgangspunkt als logi
scher Entität, dem dem Prozeßstrang eigenen Code oder dem dem
Kern eigenen Code. In einem Verfahren zur Optimierung der
Maschine ermöglichen die in der siebten und in der achten
Spalte erhaltenen Werte im Vergleich zu jenen, die in den
anderen Spalten erhalten werden, beispielsweise die Entschei
dung, den Code umzuorganisieren.
Die neunte Spalte enthält die hexadezimal codierte effektive
Adresse EA, auf die der Prozeßstrang, auf den in der vierten
Spalte derselben Zeile Bezug genommen wird, zugreift. Falls
jedes Register der Segmenttabelle 106 dazu vorgesehen ist,
einen besonderen Segmenttyp, Daten, Text, gemeinsam genutzte
Bibliothek usw. zu erhalten, kann aus dem Feld STE der von der
Spur betroffene Bereich des virtuellen Adressierungsraums
abgeleitet werden. Auf ein Textsegment, das ausführbaren Code
betrifft, wird im allgemeinen beim Lesen zugegriffen. Die
Kenntnis des Segmenttyps ermöglicht daher, verschiedene Stra
tegien in Betracht zu ziehen, um die Leistungen der Maschine
zu erhöhen, etwa ein Kopieren oder ein Wandern von Seiten im
Modul, das den Prozessor enthält, auf den in der fünften
Spalte derselben Zeile Bezug genommen wird. Wenn in einem
Textsegment viele heiße Seiten, d. h. Seiten, auf die oft
zugegriffen wird, erfaßt werden, vermeidet eine Reproduktion
der Seiten in verschiedenen Modulen Latenzzeiten, die durch
einen Zugriff auf den physischen Speicher eines entfernten
Moduls hervorgerufen werden. Dies ist in dem Maß möglich, in
dem auf dieses Textsegment ausschließlich zum Lesen zugegrif
fen wird. Wenn viele heiße Seiten in einem Datensegment für
die Ausführung eines Prozeßstrangs erfaßt werden und wenn
diese Seiten physisch auf mehrere Module verteilt sind, ver
meidet ein Wandern der Seiten und des Prozeßstrangs selbst in
einem einzigen Modul die Latenzzeiten, die durch einen Zugriff
auf den physischen Speicher eines entfernten Moduls hervorge
rufen werden. Diese Lösung ist vorteilhaft, weil auf ein
Datensegment sowohl beim Lesen als auch beim Schreiben zuge
griffen werden kann. Wenn mehrere Prozeßstränge, die auf
verschiedene Module verteilt sind, dieselbe gemeinsam genutzte
Bibliothek verwenden, ist es nützlich, die dieser Bibliothek
zugeordneten Seiten in jedem der betreffenden Module zu repro
duzieren.
Das Feld SPRA ermöglicht die präzisere Ableitung, auf welche
Adresse im virtuellen Adressenraum zugegriffen wird. Da sie
mit dem Wert des Feldes PRA im physischen Adressierungsraum
identisch ist, ermöglicht sie die Kenntnis, ob sich die Spei
cherstelle am Anfang, am Ende oder innerhalb einer physischen
Seite befindet.
Die zehnte Spalte enthält die hexadezimal codierte Nummer PPN
der physischen Seite, die der effektiven Adresse entspricht,
auf die in der neunten Spalte derselben Zeile Bezug genommen
wird. Die Kenntnis dieser Seitennummer ermöglicht die Ablei
tung des Moduls, in der sich die physische Seite befindet.
Beispielsweise ermöglicht eine Kapazität von zweihundertsechs
undfünfzig Megabytes für die Speichereinheit 8, auf Nummern
PPN physischer Seiten Bezug zu nehmen, die von 0 bis FFFF
laufen; die physischen Seiten, auf die in dieser Weise Bezug
genommen wird, befinden sich dann im Modul 14. Eine Kapazität
von fünfhundertzwölf Megabytes für die Speichereinheit 9
ermöglicht, auf Nummern PPN physischer Seiten Bezug zu nehmen,
die von 10 000 bis 2FFFF laufen; die physischen Seiten, auf die
in dieser Weise Bezug genommen wird, befinden sich dann im
Modul 15. Wenn ein zusätzliches Modul hinzugefügt wird, das
mit dem Bus 16 verbunden ist, ist es möglich, auf Nummern PPN
von über 30 000 bis zu einem Wert Bezug zu nehmen, der von der
Kapazität der Speichereinheit dieses Moduls abhängt, usw. bis
FFFFF je nach Anzahl der hinzugefügten Module und der Kapazi
tät ihrer jeweiligen Speichereinheit.
Die zwölfte Spalte enthält den hexadezimal codierten Segment
identifizierer SD, der der effektiven Adresse entspricht, auf
die in der neunten Spalte derselben Zeile Bezug genommen wird.
Der Wert dieses Identifizierers, der mit dem Wert des Feldes
SPN verknüpft ist, verschafft eine Nummer LPN einer logischen
Seite. Wenn die Nummer LPN der logischen Seite dem Prozeß
strang-Identifizierer Tid hinzugefügt wird, der in der vierten
Spalte erhalten wird, ist die Eindeutigkeit der virtuellen
Seite sichergestellt. Es ist somit möglich, Nummern logischer
Seiten zu erkennen, die von mehreren Prozeßsträngen verwendet
werden.
Die zwölfte Spalte enthält den Wert des Indikators Pin, der
der physischen Seite hinzugefügt ist, auf die in derselben
Zeile in der zehnten Spalte Bezug genommen wird. Ein Zustand Y
entspricht im allgemeinen im Speicher verriegelten Seiten.
Wenn in einem Modul, das von jenem verschieden ist, in dem
sich der den Prozeßstrang Tid aus führende Prozessor befindet,
eine unverschiebbare physische Seite vorhanden ist, ist die
Zugriffszeit auf dieser Seite länger als wenn der Prozessor
sich in demselben Modul befindet. Ein zu häufiger Zustand Y
des Indikators Pin ist daher für die Leistungen der Maschine
nachteilig.
Wenn daher die Speicherseiten, auf die oft, jedoch ausschließ
lich zum Lesen, zugegriffen wird, in mehreren Modulen dupli
ziert sind, indem die Seiten zu dem Modul wandern, in dem auf
sie am häufigsten zugegriffen wird, oder indem der Code in der
Weise umorganisiert wird, daß dadurch die Ausführung erleich
tert wird, kann die Funktionsweise der Maschine optimiert
werden.
Fig. 7 zeigt weitere Schritte des Verfahrens in Übereinstim
mung mit der Maschine. Das Verfahren beginnt durch eine Vorbe
reitungsphase, die durch die Schritte 79, 80 und 83 gebildet
ist. Im Speicher 8, 9 der Maschine ist eine Zone reserviert,
in der die in der Tafel von Fig. 6 nach Maßgabe ihres Auftre
tens verzeichneten Daten vorübergehend festgehalten werden.
Vorteilhaft ist die Speicherzone der Maschine in zwei Puffer
81, 82 für jeden Prozessor CPU unterteilt. Diese Puffer werden
für den Prozessor CPU abwechselnd gefüllt und geleert. Die
Hinzufügung eines Pufferpaares zu jedem Prozessor CPU der
Maschine 17 vermeidet konkurrierende Zugriffe auf diese Puffer
durch verschiedene Prozessoren. Somit bleibt ihr Inhalt ohne
Verwendung von Sperren kohärent.
Im Initialisierungsschritt 79 wird einer der Puffer, bei
spielsweise der Puffer 81, als regulärer Puffer qualifiziert,
während der andere Puffer, in diesem Fall der Puffer 82, als
Sicherungspuffer qualifiziert wird. Der reguläre Puffer ist
derjenige, in den die Spurdaten nach Maßgabe ihrer Protokol
lierung geschrieben werden. Der Sicherungspuffer ist dazu
vorgesehen, zum neuen regulären Puffer zu werden, wenn der
aktuelle reguläre Puffer voll ist.
Im Ersetzungsschritt 80 werden die Schritte 66 und 71 durch
die Schritte 73 bzw. 72 ersetzt. Somit ruft jede Aktivierung
des Schrittes 77 eine Aktivierung des Schrittes 84 hervor, der
die Aufzeichnungs-Funktion beginnt.
Im Invalidierungsschritt 83 werden sämtliche Einträge der
Tabelle 110 ungültig gemacht. In dieser Weise werden die
Zugriffe auf logische Seiten, deren Nummer bereits eine Ent
sprechung mit der Nummer der physischen Seite vor dem Start
des Aufzeichnungs-Prozesses besaß, dennoch protokolliert.
Dadurch ist sichergestellt, daß eine Aufzeichnung sämtlicher
Zugriffstypen auf den physischen Speicher der Maschine beibe
halten wird.
Um ihre Ausführung zu erleichtern, kann die Vorbereitungsphase
im virtuellen Adressierungsmodus verwirklicht werden.
Im Schritt 85 wird der Zustand des regulären Puffers geprüft.
Falls der reguläre Puffer voll ist, wird im Schritt 89 der
Zustand des Sicherungspuffers geprüft. Falls der reguläre
Puffer nicht voll ist, wird dieser im Schritt 86 mit Daten
gefüllt, die mit Bezug auf Fig. 6 erwähnt worden sind. Auf den
regulären Puffer wird im virtuellen Adressierungsmodus zuge
griffen, falls der Schritt 77 eine Aktivierung des Schrittes
72 zum Ergebnis hat. Auf den regulären Puffer wird im physi
schen Adressierungsmodus zugegriffen, falls der Schritt 77
eine Aktivierung des Schrittes 73 zum Ergebnis hat.
Im Schritt 87 wird der Zustand des regulären Puffers geprüft.
Falls der reguläre Puffer voll ist, wird der Zustand des
Sicherungspuffers im Schritt 89 geprüft. Falls der reguläre
Puffer nicht voll ist, endet die Aufzeichnungs-Funktion im
Schritt 88, um zum Schritt 78 zurückzuspringen.
Falls im Schritt 89 der Sicherungspuffer nicht leer ist, endet
die Aufzeichnungs-Funktion im Schritt 88, um zum Schritt 78
zurückzuspringen. Der reguläre Puffer bleibt voll und andere
Seitenfehler könnten zu einem positiven Ergebnis bei der
Prüfung im Schritt 85 führen. Falls der Sicherungspuffer leer
ist, wird im Schritt 90 die Leerung des regulären Puffers
aktiviert. Der virtuelle Adressierungsmodus erleichtert die
Leerung der Speicherzone und die Übertragung ihres Inhalts an
die Massenspeicher wie etwa an Platten.
Im Schritt 91 erlaubt eine Permutation, in der der Sicherungs
puffer, der dann leer ist, zum regulären Puffer für spätere
Befüllungen wird, die Qualifizierung des früheren Puffers als
Sicherungspuffer, der dann seinerseits für spätere Befüllungen
verfügbar wird, sobald er geleert worden ist, wobei die Spur-
Funktion im Schritt 88 endet, um zum Schritt 78 zurückzusprin
gen.
In dem Maß, in dem die Spur-Funktion im virtuellen Adressie
rungsmodus vorbereitet wird, um dadurch die Codierung in der
Maschine zu erleichtern, ist es günstig, daß der erhaltene
Code auf den Beginn der virtuellen Seite ausgerichtet wird und
seine Vollständigkeit in einer virtuellen Seite beibehält.
Dieser Code wird nämlich anschließend aus Gründen, die oben
erläutert worden sind, im physischen Adressierungsmodus ausge
führt, wobei es günstig ist, daß er die Größe einer physischen
Seite nicht übersteigt.
Claims (11)
1. Verfahren zum Steuern des Speicherzugriffs in einer
Maschine mit einem Speicher (8, 9) mit ungleichmäßigem Zu
griff, der auf mehrere Module (14, 15) verteilt ist, wovon
jedes einen oder mehrere Prozessoren CPU (4, 5, 6, 7) enthält,
um Prozeßstränge in einem virtuellen oder physischen Adressie
rungsraum mittels effektiver Adressen EA (113) auszuführen,
für die mittels einer Korrespondenztabelle (110) eine Entspre
chung mit Nummern PPN physischer Seiten im Speicher (8, 9)
hergestellt werden kann, wobei eine Erzeugung der Nummer LPN
einer logischen Seite eine Ausnahme des Typs Seitenfehler
erster Stufe hervorruft, wenn die Nummer LPN der logischen
Seite in der Korrespondenztabelle (110) fehlt, dadurch gekenn
zeichnet, daß es einen Schritt (72) enthält, in dem nach jeder
Ausnahme des Typs Seitenfehler erster Stufe eine Funktion
(Trace) aktiviert wird, die den Wert der effektiven Adresse
EA, die die Nummer LPN der logischen Seite erzeugt hat, welche
die Ausnahme hervorgerufen hat, die Zeit, zu der die Ausnahme
hervorgerufen worden ist, den Identifizierer (Tid) des Prozeß
strangs, der die effektive Adresse EA verwendet, den Identifi
zierer (CPU) des Prozessors, der den Prozeßstrang ausführt,
sowie die Nummer PPN der physischen Seite, die der Nummer der
logischen Seite entspricht, die die Ausnahme hervorgerufen
hat, konsigniert.
2. Verfahren zum Steuern des Speicherzugriffs in einer
Maschine mit einem Speicher (8, 9) mit ungleichmäßigem Zugriff
nach Anspruch 1, dadurch gekennzeichnet, daß bei seinem Beginn
sämtliche Einträge der Korrespondenztabelle (110) ungültig
gemacht werden.
3. Verfahren zum Steuern des Speicherzugriffs in einer
Maschine mit einem Speicher (8, 9) mit ungleichmäßigem Zugriff
nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Funk
tion (Trace) gleichzeitig einen Indikator (Pin) konsigniert,
der meldet, ob die physische Seite abgeschlossen oder nicht
abgeschlossen ist.
4. Verfahren zum Steuern des Speicherzugriffs in einer
Maschine mit einem Speicher (8, 9) mit ungleichmäßigem Zugriff
nach einem der vorangehenden Ansprüche, dadurch gekennzeich
net, daß der Schritt (72) einen Schritt (65) ersetzt, der
anfangs vorgesehen ist, um nach einem Seitenfehler erster
Stufe einfach eine neue Korrespondenz in der Tabelle (110) zu
bewerkstelligen.
5. Verfahren zum Steuern des Speicherzugriffs in einer
Maschine mit einem Speicher (8, 9) mit ungleichmäßigem Zugriff
nach einem der vorangehenden Ansprüche, dadurch gekennzeich
net, daß die aufgefundenen Daten in einer Speicherzone gesi
chert werden, auf die unterschiedslos im virtuellen Adressie
rungsmodus oder im physischen Adressierungsmodus zugegriffen
werden kann.
6. Verfahren zum Steuern des Speicherzugriffs in einer
Maschine mit einem Speicher (8, 9) mit ungleichmäßigem Zugriff
nach einem der vorangehenden Ansprüche, dadurch gekennzeich
net, daß der Code der Funktion (Trace) und die Daten, die
hierfür notwendig sind, die Größe einer virtuellen Seite nicht
übersteigen und daß dieser Code auf einen Beginn der virtuel
len Seite ausgerichtet wird.
7. Maschine zum Ausführen des Verfahrens nach einem der
vorangehenden Ansprüche, mit ersten Mitteln (65) zum Aktivie
ren einer Funktion, die eine Nummer LPN einer logischen Seite
entsprechend einer Nummer PPN einer physischen Seite in einer
Korrespondenztabelle (110) einführt, nachdem eine Ausnahme
durch das Fehlen eines gültigen Eintrags mit der Nummer LPN
der logischen Seite in der Korrespondenztabelle (110) hervor
gerufen wurde, dadurch gekennzeichnet, daß sie enthält:
- - zweite Mittel, die die ersten Mittel (75) durch dritte Mittel (70) ersetzen, die eine Funktion (Trace) aktivieren.
8. Maschine nach Anspruch 7, dadurch gekennzeichnet, daß
sie vierte Mittel enthält, die die Einträge der Korrespondenz
tabelle (110) vor der Inbetriebnahme der zweiten Mittel ungül
tig machen.
9. Maschine nach Anspruch 7 oder 8, dadurch gekennzeich
net, daß sie zwei Puffer zum vorübergehenden Sichern der
aufgefundenen Daten enthält, wobei abwechselnd ein Puffer in
einen Massenspeicher entleert wird, während der andere Puffer
mit den Ergebnissen der Aufzeichnungs-Funktion gefüllt wird.
10. Maschine nach Anspruch 9, dadurch gekennzeichnet, daß
jedem Prozessor ein anderes Pufferpaar (81, 82) zugewiesen
ist, um konkurrierende Zugriffe auf die Puffer während der
Leerung und der Befüllung zu vermeiden.
11. Verfahren nach einem der Ansprüche 1 bis 6, dadurch
gekennzeichnet, daß es zum Duplizieren oder zum Bewirken eines
Wanderns von Speicherseiten verwendet wird, derart, daß die
Funktionsweise der Maschine, auf die es angewendet wird,
optimiert wird.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9801701A FR2774788B1 (fr) | 1998-02-12 | 1998-02-12 | Procede de controle d'acces memoire sur une machine avec memoire a acces non uniforme et machine pour mettre en oeuvre ce procede |
FR9801701 | 1998-02-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19905541A1 true DE19905541A1 (de) | 1999-08-19 |
DE19905541B4 DE19905541B4 (de) | 2005-12-22 |
Family
ID=9522906
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19905541A Expired - Lifetime DE19905541B4 (de) | 1998-02-12 | 1999-02-10 | Verfahren zum Steuern des Speicherzugriffs in einer Maschine mit einem Speicher mit ungleichmäßigem Zugriff und Maschine zur Ausführung eines solchen Verfahrens |
Country Status (5)
Country | Link |
---|---|
US (1) | US6473848B2 (de) |
DE (1) | DE19905541B4 (de) |
FR (1) | FR2774788B1 (de) |
GB (1) | GB2337614B (de) |
IT (1) | IT1309544B1 (de) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2795196B1 (fr) | 1999-06-21 | 2001-08-10 | Bull Sa | Processus de liberation de pages physiques pour mecanisme d'adressage virtuel |
KR100628201B1 (ko) * | 2000-10-16 | 2006-09-26 | 엘지전자 주식회사 | 터보 디코딩 방법 |
US7313734B2 (en) * | 2002-01-14 | 2007-12-25 | International Business Machines Corporation | Method and system for instruction tracing with enhanced interrupt avoidance |
JP4028444B2 (ja) * | 2003-06-27 | 2007-12-26 | 株式会社東芝 | スケジューリング方法およびリアルタイム処理システム |
CN102043594A (zh) * | 2010-12-31 | 2011-05-04 | 中科海量存储技术(北京)有限公司 | 分布式环境下实现输入输出踪迹收集回放的***和方法 |
DE102014116865B4 (de) * | 2014-11-18 | 2020-08-13 | Phoenix Contact Gmbh & Co. Kg | Analysevorrichtung zur Analyse und Manipulation einer Kommunikationssequenz |
US11275721B2 (en) * | 2015-07-17 | 2022-03-15 | Sap Se | Adaptive table placement in NUMA architectures |
KR20180009217A (ko) * | 2016-07-18 | 2018-01-26 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법 |
US10642751B2 (en) * | 2017-07-20 | 2020-05-05 | Vmware, Inc. | Hardware-assisted guest address space scanning in a virtualized computing system |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2400729A1 (fr) * | 1977-08-17 | 1979-03-16 | Cii Honeywell Bull | Dispositif pour la transformation d'adresses virtuelles en adresses physiques dans un systeme de traitement de donnees |
IN169636B (de) * | 1987-07-01 | 1991-11-23 | Digital Equipment Corp | |
JP2625385B2 (ja) | 1994-06-30 | 1997-07-02 | 日本電気株式会社 | マルチプロセッサシステム |
US5721917A (en) * | 1995-01-30 | 1998-02-24 | Hewlett-Packard Company | System and method for determining a process's actual working set and relating same to high level data structures |
US5787476A (en) * | 1995-05-05 | 1998-07-28 | Silicon Graphics, Inc. | System and method for maintaining coherency of virtual-to-physical memory translations in a multiprocessor computer |
US6105053A (en) * | 1995-06-23 | 2000-08-15 | Emc Corporation | Operating system for a non-uniform memory access multiprocessor system |
US5897664A (en) * | 1996-07-01 | 1999-04-27 | Sun Microsystems, Inc. | Multiprocessor system having mapping table in each node to map global physical addresses to local physical addresses of page copies |
FR2767939B1 (fr) | 1997-09-04 | 2001-11-02 | Bull Sa | Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur |
-
1998
- 1998-02-12 FR FR9801701A patent/FR2774788B1/fr not_active Expired - Fee Related
-
1999
- 1999-02-03 US US09/243,119 patent/US6473848B2/en not_active Expired - Lifetime
- 1999-02-09 IT IT1999MI000250A patent/IT1309544B1/it active
- 1999-02-10 DE DE19905541A patent/DE19905541B4/de not_active Expired - Lifetime
- 1999-02-11 GB GB9903120A patent/GB2337614B/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
FR2774788B1 (fr) | 2000-03-24 |
GB9903120D0 (en) | 1999-04-07 |
US6473848B2 (en) | 2002-10-29 |
IT1309544B1 (it) | 2002-01-23 |
GB2337614B (en) | 2002-08-14 |
ITMI990250A1 (it) | 2000-08-09 |
US20020062432A1 (en) | 2002-05-23 |
FR2774788A1 (fr) | 1999-08-13 |
GB2337614A (en) | 1999-11-24 |
DE19905541B4 (de) | 2005-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2226382C3 (de) | Datenverarbeitungsanlage mit mehreren Prozessoren und diesen zugeordneten Pufferspeichern | |
DE60030872T2 (de) | Verfahren und anordnung um atomische aktualisierungen durchzuführen durch verwendung eines logischen flaschspeichergerätes | |
DE69635865T2 (de) | Adressentransformation in einem cluster-computersystem | |
EP0013737A1 (de) | Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem | |
DE3011552A1 (de) | Datenverarbeitungsanlage mit einem hauptspeicher sowie wenigsten einem datenprozessor mit zugeordnetem adressenumformer | |
DE2841041A1 (de) | Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren | |
DE3932675A1 (de) | Virtuelles maschinensystem | |
DE69816714T2 (de) | Instrumentationsanordnung für eine Maschine mit nichtuniformen Speicherzugriffen | |
DE4207158A1 (de) | Speicher-zugriffssteuerung | |
DE2641722A1 (de) | Hierarchisch geordnetes speichersystem fuer eine datenverarbeitende anlage mit virtueller adressierung | |
DE3502147A1 (de) | Datenverarbeitungssystem mit verbesserter pufferspeichersteuerung | |
DE69822364T2 (de) | Aufspürung von heissen Stellen in einer Maschine mit nichtuniformen Speicherzugriffen | |
DE69726795T2 (de) | Kodierungsverfahren des Verzeichnisstatus in einem gemeinsamen, verteilten Speichersystem mit koherenten Pufferspeichern | |
DE112019000627T5 (de) | Speicherstrukturbasiertes Coherency Directory Cache | |
DE19905541A1 (de) | Verfahren zum Steuern des Speicherzugriffs in einer Maschine mit einem Speicher mit ungleichmäßigem Zugriff und Maschine zur Ausführung eines solchen Verfahrens | |
DE3887843T2 (de) | Verfahren zur Bedienung einer Mehrprozessoranordnung zur Datenübertragung zwischen Prozessoreinheiten. | |
DE2710477A1 (de) | Anordnung zur kohaerenten leitung des informationsaustauschs zwischen zwei aneinanderstossenden niveaus einer speicherhierarchie | |
DE3142504A1 (de) | Mehrfachplattenspeicher-uebertragungssystem | |
DE60036667T2 (de) | Prozess zur Seitenfreigebung für virtuellen Adressierungsmechanismus | |
DE68928782T2 (de) | Datenverwaltungssystem | |
EP0265636A1 (de) | Multiprozessor mit mehreren mit Cache-Speichern ausgerüsteten Prozessoren und einem gemeinsamen Speicher | |
DE2842288A1 (de) | Datentransferschalter mit assoziativer adressauswahl in einem virtuellen speicher | |
DE2523795C3 (de) | Verfahren zum wiederholten Ausführen von Maschinenbefehlen durch eine festverdrahtete Steuerung in einer Verarbeitungseinheit einer Datenverarbeitungsanlage | |
DE3426902A1 (de) | Schaltungsanordnung zum konfigurieren von peripherieeinheiten in einer datenverarbeitungsanlage | |
EP1675010A2 (de) | Verfahren zur Aktualisierung von Einträgen von Adressumsetzpuffern in einem Mehrprozessor-Computersystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8127 | New person/name/address of the applicant |
Owner name: BULL S.A., LES CLAYES SOUS BOIS, FR |
|
8364 | No opposition during term of opposition | ||
R071 | Expiry of right |