DE19602872A1 - Verfahren zum Betreiben einer Adreßumsetzvorrichtung - Google Patents
Verfahren zum Betreiben einer AdreßumsetzvorrichtungInfo
- Publication number
- DE19602872A1 DE19602872A1 DE19602872A DE19602872A DE19602872A1 DE 19602872 A1 DE19602872 A1 DE 19602872A1 DE 19602872 A DE19602872 A DE 19602872A DE 19602872 A DE19602872 A DE 19602872A DE 19602872 A1 DE19602872 A1 DE 19602872A1
- Authority
- DE
- Germany
- Prior art keywords
- address
- guide number
- virtual
- virtual address
- tlb
- 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
Links
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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
Die Erfindung betrifft ein Verfahren zum Betreiben
einer Adreßumsetzvorrichtung zum Umsetzen einer vir
tuellen Adresse in eine Realadresse, wobei die Um
setzvorrichtung in Form eines (direct-mapped oder
n-Wege assoziativen) Translation-Lookaside-Buffers (TLB)
ausgebildet ist und das Verfahren es erlaubt, systema
tisches Clashing zu umgehen.
Moderne Prozessoren benutzen TLBs für die schnelle Um
setzung virtueller in reale Adressen. Typischerweise
befinden sich TLB und Cache auf dem Prozessorchip.
Der TLB ist ein spezieller Cache für die Adreßum
setzung. Zwar werden auch voll-assoziative TLBs einge
setzt, in der Regel sind TLBs jedoch n-Wege assoziativ.
Fig. 4 zeigt einen direct-mapped TLB, d. h. einen I-Wege
assoziativen TLB. Der höherwertige Teil v′ (erster
Adreßteil) der virtuellen Adresse v wird benutzt, um
eine Zeile des TLBs anzuwählen. Dort finden sich (in
einem Markierungsfeld) die zu diesem Eintrag gehörige
virtuelle Seitenadresse v′i, in einem dem Markierungs
feld zugeordneten Datenfeld die reale Seitenadresse r′i
sowie in der Abbildung nicht aufgeführte Statusbits,
die unten anderem angeben, ob der Eintrag gültig ist.
Wenn er gültig ist und v′i mit der aktuellen Seiten
adresse v′ übereinstimmt, liegt ein TLB-Hit vor und die
Realadresse wird aus dem niederwertigen Teil v′′ (zwei
ter Adreßteil) der virtuellen Adresse und der vom TLB
gelieferten realen Seitenadresse r′i zusammengesetzt.
Ein n-Wege assoziativer TLB unterscheidet sich vom
direct-mapped TLB dadurch, daß sich in einem Eintrag
mehrere Markierungs- und Datenfelder befinden, die
gleichzeitig angewählt und parallel gegen v′ geprüft
werden. Ein Treffer liegt dann vor, wenn der Inhalt
eines Markierungsfeldes des indizierten TLB-Eintrags
zutrifft; dessen r′i und Statusbits werden dann zur
Bildung der Realadresse r und zur Validierung des Zu
griffs benutzt.
Für große Adreßräume soll ein direct-mapped oder n-Wege
assoziativer TLB konstruiert werden, der für beliebige
Working-Sets virtueller Seiten es ermöglicht, Clashing
systematisch zu minimieren. Dabei versteht man unter
einem Working-Set die Menge sämtlicher aktuell benutz
ter virtueller Seiten, während "Clashing" einen Kon
flikt zwischen den im TLB abgelegten virtuellen Seiten
meint.
Zur Lösung dieser Aufgabe wird ein Betriebsverfahren
für eine TLB-Adreßumsetzungs-Vorrichtung vorgeschlagen,
dessen Verfahrensschritte im Anspruch 1 angegeben sind.
Die in den Unteransprüchen aufgeführten Verfahrens
schritte betreffen vorteilhafte Ausgestaltungen der
Erfindung.
Das erfindungsgemäße Verfahren dient dem Betrieb einer
Adreßumsetzvorrichtung zum Umsetzen einer virtuellen
Adresse eines mehrere Seiten umfassenden virtuellen
Adreßraumes in eine Realadresse eines mehrere Seiten
umfassenden Realadreßraumes mittels eines
Translation-Lookaside-Buffers und einer Page-Table. Die virtuelle
Adresse läßt sich dabei in einen ersten Adreßteil und
einen zweiten Adreßteil aufteilen. Der virtuellen Adresse
ist erfindungsgemäß eine Leitzahl zugeordnet. Auch die
Realadresse weist einen ersten Adreßteil und einen zwei
ten Adreßteil auf. Bei den beiden Adreßteilen der vir
tuellen Adresse und der Realadresse kann es sich insbe
sondere um den Seitennummern-Adreßteil zum Adressieren
einer Seite im virtuellen bzw. realen Adreßraum und um
den Offset-Adreßteil zum Adressieren innerhalb einer
realen oder virtuellen Seite handeln. Der Translation-Lookaside-Buffer
weist eine Vielzahl von Einträgen auf,
von denen jeder mindestens ein Markierungsfeld und minde
stens ein dem Markierungsfeld zugeordnetes Datenfeld auf
weist (zusätzlich können auch noch weitere Felder für
Steuerinformationen oder dgl., insbesondere ein Gültig
keits-/Ungültigkeitsfeld vorgesehen sein).
Bei der Adreßumsetzung wird nach der Erfindung wie folgt
vorgegangen:
- - zunächst wird der Translation-Lookaside-Buffer mit tels der der virtuellen Adresse zugeordneten Leit zahl oder mittels einer Abbildung der der virtuel len Adresse zugeordneten Leitzahl auf einen Index oder mittels einer Abbildung der der virtuellen Adresse zugeordneten Leitzahl und des ersten Adreß teils der virtuellen Adresse auf einen Index indi ziert. Im Gegensatz zu herkömmlichen TLBs, bei denen zur Indizierung ein Teil der virtuellen Adresse verwendet wird, erfolgt also nach der Er findung die Indizierung des TLBs anhand der Leit zahl, d. h. einer Information, die nicht Be standteil der eigentlichen virtuellen Adresse ist. Gegebenenfalls wird zusätzlich zur Leitzahl auch noch ein Teil der virtuellen Adresse, nämlich deren erster Adreßteil, verwendet. Zumeist wird man ma thematische Abbildungen der Bits der Leitzahl (und ggf. der virtuellen Adresse) verwenden, um den TLB mit einem auf diese Weise erzeugten Index zu indi zieren.
- - Nach der Indizierung wird überprüft, ob der Inhalt eines Markierungsfeldes des indizierten Eintrages des Translation-Lookaside-Buffers mit dem ersten Adreßteil der virtuellen Adresse übereinstimmt. Dies gilt übrigens gleichermaßen für direct-mapped TLBs und n-Wege assoziative TLBs.
- - Existiert ein Markierungsfeld mit einem mit dem ersten Adreßteil der virtuellen Adresse überein stimmenden Inhalt, so liegt ein TLB-Hit vor. In diesem Fall wird die Realadresse aus dem Inhalt des zu diesem Markierungsfeld gehörenden Datenfeldes als erster Adreßteil der Realadresse und aus dem zweiten Adreßteil der virtuellen Adresse zusammen gesetzt.
- - Existiert hingegen kein Markierungsfeld in dem in dizierten Eintrag, dessen Inhalt mit dem ersten Adreßteil der virtuellen Adresse übereinstimmt, so liegt ein TLB-Miss vor. In diesem Fall wird die Page-Table parsiert und der erste Adreßteil der Realadresse aus der Page-Table hergeleitet, wobei die Page-Table anhand der virtuellen Adresse par siert wird und die Realadresse aus dem sich aus der Page-Table ergebenden ersten Adreßteil und aus dem zweiten Adreßteil der virtuellen Adresse zusammen gesetzt wird. Die Page-Table weist sogenannte Ter minal-Einträge auf, die direkt auf eine Datenseite des Realadreßraums verweisen, d. h. einen Teil der Realadresse beinhalten. Der erste Adreßteil der virtuellen Adresse sowie der sich aus der Page-Table ergebende erste Adreßteil der Realadresse werden in den TLB übernommen.
Vorzugsweise ist vorgesehen, daß bei einem TLB-Miss der
erste Adreßteil der virtuellen Adresse und der sich aus
der Page-Table ergebende erste Adreßteil der Realadresse
in denjenigen Eintrag des Translation-Lookaside-Buffers
geladen werden, der bei dem dem TLB-Miss zugrundeliegen
den Zugriff auf den Translation-Lookaside-Buffer indi
ziert worden ist. Der Inhalt des indizierten Eintrages
des TLB wird also hierbei aktualisiert, ohne die der
virtuellen Adresse zugeordnete Leitzahl zu ändern.
Vorzugsweise liefert die Page-Table zusätzlich zu dem er
sten Adreßteil einer Realadresse ein Leitzahlfeld mit
einer Leitzahl. Der Inhalt des sich bei der Parsierung
der Page-Table ergebenden Leitzahlfeldes wird mit der der
virtuellen Adresse zugeordneten Leitzahl verglichen. In
dem Fall, in dem der Inhalt des Leitzahlfeldes nicht mit
der der virtuellen Adresse zugeordneten Leitzahl überein
stimmt, wird der Translation-Lookaside-Buffer anhand des
Inhalts des Leitzahlfeldes oder anhand des Inhalts des
Leitzahlfeldes und des ersten Adreßteils der virtuellen
Adresse indiziert. Kommt es hierbei zu einem TLB-Hit, so
wird das betreffende Datenfeld des Translation-Lookaside-Buffers
als ungültig markiert und die der virtuellen
Adresse zugeordnete Leitzahl in das Leitzahlfeld des
Page-Table-Eintrags abgespeichert. Die zuvor beschriebene
Operation wird auch als TLB-Flush bezeichnet. Unabhängig
davon, ob es zu einem TLB-Flush kommt, werden dann der
erste Adreßteil der virtuellen Adresse und der sich aus
der Page-Table ergebende erste Adreßteil der Realadresse
in denjenigen Eintrag des Translation-Lookaside-Buffers
geladen, der anhand der der virtuellen Adresse zugeord
neten Leitzahl oder anhand der der virtuellen Adresse
zugeordneten Leitzahl und des ersten Adreßteils der vir
tuellen Adresse indiziert worden ist (zur Indizierung
kann hierbei auch wieder eine Abbildungs-(Hash-)Funktion
verwendet werden).
Bei Verwendung einer Page-Table, deren Terminal-Einträge
auch Leitzahlen beinhalten bzw. zugeordnet sind, kann es
vorteilhaft sein, bei einem TLB-Miss die Realadresse nur
dann anhand des sich aus der Page-Table ergebenden ersten
Adreßteils zusammenzusetzen, wenn die von der Page-Table
gelieferte Leitzahl mit der der virtuellen Adresse zuge
ordneten Leitzahl übereinstimmt. Ist dies nicht der Fall,
wird zweckmäßigerweise ein Leitzahl-Fehler signalisiert.
Alternativ kann dann, wenn ein TLB-Miss vorliegt und die
von der Page-Table gelieferte Leitzahl nicht mit der der
virtuellen Adresse zugeordneten Leitzahl übereinstimmt,
der virtuellen Adresse für deren aktuelle Umsetzung und
für deren zukünftige Umsetzungen die von der Page-Table
gelieferte Leitzahl zugeordnet werden.
In vorteilhafter Weiterbildung der Erfindung ist es mög
lich, daß die den virtuellen Adressen zugeordneten Leit
zahlen ein oder mehrere Steuerbits aufweisen, die nicht
zur Indizierung des Translation-Lookaside-Buffers, son
dern zur Verwaltung des Translation-Lookaside-Buffers
verwendet werden. Ein Beispiel für ein derartiges Steuer
bit ist ein sogenanntes Early-Flush-Bit, das in den
TLB-Eintrag - einem Paar aus Markierungs- und Datenfeld zuge
ordnet - abgespeichert wird und, wenn es gesetzt ist,
angibt, daß dieses Paar aus Markierungs- und Datenfeld
geflusht werden kann, wenn dies erforderlich ist.
Vorzugsweise ist die virtuelle Adresse Teil eines Bit
strings, der Bits für den ersten Adreßteil der virtuellen
Adresse, Bits für den zweiten Adreßteil der virtuellen
Adresse und Bits für die der virtuellen Adresse zugeord
neten Leitzahl aufweist. Vom Anwender oder Benutzer
programm oder Betriebsprogramm wird als "virtuelle Adres
se im weiteren Sinne" der obige die eigentliche virtuelle
Adresse und die dieser zugeordnete Leitzahl umfassende
Bitstring geliefert.
Als Alternative ist ferner vorgesehen, daß jeder Eintrag
des TLB mindestens ein einem Markierungsfeld zugeordnetes
Leitzahlfeld aufweist, daß die der virtuellen Adresse
zugeordnete Leitzahl mit dem Inhalt desjenigen Markie
rungsfeldes des indizierten Eintrags des
Translation-Lookaside-Buffers verglichen wird, dessen Inhalt gleich
dem ersten Adreßteil der virtuellen Adresse ist und daß
ein TLB-Hit dann vorliegt, wenn die der virtuellen
Adresse zugeordnete Leitzahl gleich der Leitzahl des
Leitzahlfeldes ist.
Nachfolgend werden anhand der Figuren Ausfüh
rungsbeispiele der Erfindung näher erläutert. Im einzel
nen zeigen:
Fig. 1 schematisch den Aufbau eines Bitstrings, der
eine virtuelle Adresse repräsentierende Bits und
eine dieser virtuellen Adresse zugeordnete Leit
zahl repräsentierende Bits aufweist,
Fig. 2 schematisch den Indizierungsschritt bei einem
direkt mit der Leitzahl indizierten TLB,
Fig. 3 schematisch den Indizierungsschritt bei einem
TLB, der mittels einer Abbildungs-(Hash-)Funk
tion aus der Leitzahl und einem Teil der vir
tuellen Adresse indiziert wird und
Fig. 4 schematisch den Indizierungsschritt bei einem
herkömmlichen direct-mapped TLB.
Im Rahmen dieser Beschreibung wird von großen Adreßräumen
und entsprechend breiten Adressen ausgegangen, beispiels
weise 64-bit breit. Eine Komplettadresse (Bitstring)
besteht dann aber nicht mehr aus einer 64-bit breiten
virtuellen Adresse, sondern setzt sich aus einer Leitzahl
und einer virtuellen Adresse zusammen. Im Beispiel der
Fig. 1 belegt die virtuelle Adresse v die niederwertigen
56-bit der Komplettadresse und die Leitzahl z die höchst
wertigen 8-bit.
Die Memory Management Unit (MMU) benutzt zur eigentlichen
Adreßumsetzung (virtuell → real) nur die virtuelle Adres
se, d. h. der Adreßraum ist 2⁵⁶-byte groß. Die Leitzahl v
ist hierfür redundant.
Logisch ist eine Faltung des Adreßraums. Im Beispiel eine
256-fache Faltung bzw. ein 256-faches Aliasing aller 2⁵⁶-byte
Regionen. Wie man im folgenden Text sehen wird, ist
diese Vorstellung zwar hilfreich, beschreibt
Leitzahl-Adressierung aber nur unvollständig.
Es wird unterschieden zwischen der Adreßumsetzung durch
den TLB und der Adreßumsetzung durch Tabellenparsierung.
Letztere wird immer dann durchgeführt, wenn die Adreßum
setzung durch den TLB gescheitert ist (TLB-Miss). Für die
Adreßumsetzung durch Tabellenparsieren können unter ande
rem Verfahren eingesetzt werden, die Multi-Level
Page-Tables, Inverted (Hashed) Page Tables oder Guarded Page
Tables verwenden. Entscheidend ist nur, daß sie eine
virtuelle Adresse v bei gelungener Umsetzung auf eine
virtuelle Seitennummer v′, einen Offset v′′, eine reale
Seitennummer r′ und eventuell eine Seitengröße s abbil
den. (Natürlich können bei dieser Adreßumsetzung auch
noch weitere Ergebnisse, beispielsweise Access- oder
Statusbits entstehen.) Die virtuelle Adresse v wird damit
auf die Realadresse r = r′ + v′′ abgebildet. Das Paar
(v′, r′), im Falle flexibler Seitengröße das Tripel
(v′, r′, s), kann dann im TLB für nachfolgende Adreßumsetz
ungen abgespeichert werden.
Im Gegensatz zur Adreßumsetzung durch Tabellenparsierung
wird bei der Umsetzung durch den TLB die Leitzahl als
wesentlicher Eingangsparameter verwandt. Beim Leitzahl
direkt-adressierten TLB (Fig. 2) wird ausschließlich die
Leitzahl z zur Indizierung des TLB-Caches benutzt.
Beim Leitzahl-hashed-adressierten TLB (Fig. 3) wird der
Index durch eine Hashfunktion aus Leitzahl z und einem
Teil v′ der virtuellen Adresse gebildet. v′ kann dabei
wie gezeigt die Seitennummer sein, kann aber auch nur ein
Teil davon sein. Eine einfache Hashfunktion ist z. B. (z
xor v′) mod k, wobei k die Zahl der Sets eines n-Wege
assoziativen TLBs bzw. die Zahl der Einträge eines di
rect-mapped TLBs ist.
Fig. 2 und 3 zeigen jeweils einen direct-mapped TLB, um
die Darstellung einfach zu halten. Ein n-Wege TLB kann
entsprechend, ohne Änderung des Adressierungsmechanismus,
verwandt werden.
Durch geeignete Wahl der Leitzahlen können TLB-Clashes
vermieden bzw. ihre Häufigkeit verringert werden.
Nachfolgend soll darauf eingegangen werden, wie ein TLB
in Bezug auf die den virtuellen Adressen zugeordneten
Leitzahlen aktualisiert werden kann.
Bei dieser Methode wird im Falle eines TLB-Miss für den
Eintrag in den TLB die Leitzahl z der ursprünglichen
Komplettadresse verwandt (natürlich neben v′, r′ usw.).
Somit wird bei einem erneuten Zugriff über dieselbe Leit
zahl (d. h. insbesondere auch über dieselbe Komplett
adresse) in der Regel ein TLB-Hit erfolgen.
Zugriffe auf dieselbe Seite über verschiedene Leitzahlen
sind möglich, belegen aber in der Regel unterschiedliche
TLB-Einträge. Zum Flushen einer Seite muß deshalb die
Seite für alle Leitzahlen geflusht werden. Häufig wird
dies ein Flushen des gesamten TLBs nahelegen.
Jeder Page Table Eintrag der letzten Stufe (d. h. der
direkt auf eine Datenseite verweist) enthält ein Leit
zahlfeld z′. Beim TLB-Miss wird die vom Benutzer vorge
gebene Leitzahl z nicht nur für den TLB-Eintrag verwandt,
sondern auch mit z′ im Leitzahlfeld des Page-Table-Ein
trags verglichen. Bei Nichtübereinstimmung (z ≠ z′) wird
ein TLB-Flush mit (z′, v′) durchgeführt, d. h. ein even
tuell vorhandener TLB-Eintrag auf derselben Seite wird
gelöscht. Dann wird die neue Leitzahl im Leitzahlfeld des
Page-Table-Eintrags vermerkt (z′ := z). (Dieser Schreib
zugriff kann natürlich unterbleiben, wenn die im Page
Table Eintrag vermerkte Leitzahl mit der aktuellen über
einstimmt (z = z′)).
Schließlich wird der TLB mit (z, v′, r′) (und eventuell
weiteren Parametern aus der Adreßumsetzung) geladen.
Da sich nun immer höchstens ein Eintrag auf einer Seite
mit der Nummer v′ im TLB befindet, ist Flushing einer
einzelnen Seite damit einfach möglich:
- 1. Zuerst wird mittels der Page-Table eine Adreßumset zung von v′ durchgeführt. Diese liefert unter ande rem die aktuelle für v′ verwandte Leitzahl z′
- 2. Mit der Komplettadresse a = (z′, v′) wird auf den TLB zugegriffen.
- 3. Wurde dabei ein Treffer erzielt, wird der ent sprechende TLB-Eintrag geflusht.
- 4. Die neue Leitzahl wird in den Page-Table-Eintrag übernommen.
Seiten können nach dieser Methode nur geflusht werden,
solange sie über die Page Tables erreichbar sind.
Die Page Table Einträge der letzten Stufe enthalten ein
Leitzahlfeld z′, das vom Systemkern gesetzt wird. Beim
TLB-Miss wird überprüft, ob z = z′ gilt, d. h. ob die
richtige Leitzahl in der Komplettadresse enthalten ist.
Bei Ungleichheit wird ein Leitzahlfehler bzw. eine Excep
tion signalisiert.
Die Page Table Einträge der letzten Stufe enthalten ein
Leitzahlfeld z′, das vom Systemkern gesetzt wird. Beim
TLB-Miss wird überprüft, ob z = z′ gilt, d. h. ob die
richtige Leitzahl in der Komplettadresse enthalten ist.
Bei Ungleichheit wird die Leitzahl aus dem Page-Table
Eintrag übernommen: z := z′. Befindet sich die ur
sprüngliche Adresse (z, v′) in einem Register r, so wird
die neue Leitzahl z′ auch in dieses Register übernommen,
d. h. es gilt dann r = (z′, v′). Ein erneuter Zugriff er
folgt dann automatisch mit der "richtigen" Leitzahl.
Bei allen zuvor genannten Varianten (mit Ausnahme der
ersten) kann eine neue Maschineninstruktion
ldz r, v
implementiert werden, die die aktuelle Leitzahl der durch
die virtuelle Adresse v bestimmten Seite in das Register
r lädt. Wenn das Leitzahl-Laden so implementiert ist, daß
nur die Leitzahlbits des Registers verändert werden, kann
man mit ldz r, [r] eine Komplettadresse mit "richtiger"
Leitzahl bilden.
Man kann die Leitzahlen um ein oder mehrere Steuerbits
erweitern, die nicht direkt zur Indizierung des TLBs
verwendet werden, sondern der TLB-Verwaltung dienen,
beispielsweise festlegen, daß die entsprechenden Einträge
im TLB besonders früh oder besonders spät verdrängt wer
den sollen. Beispielsweise wird Bit 7 der Leitzahl als
early flush bit verwendet. Zur Adressierung des TLBs
werden nur die Bits 0 . . . 6 der Leitzahl verwandt. Bit 7,
das early flush bit, wird in den TLB-Eintrag als Steuer
bit übernommen. Soll dann ein TLB-Eintrag des entspre
chenden TLB-Sets verdrängt werden, wird vorrangig ein
Eintrag mit gesetztem early flush bit ausgewählt.
Claims (8)
1. Verfahren zum Betreiben einer Adreßumsetzvorrichtung
zum Umsetzen einer virtuellen Adresse eines mehrere
Seiten umfassenden virtuellen Adreßraumes in eine
Realadresse eines mehrere Seiten umfassenden Real
adreßraumes mittels eines Translation-Lookaside-Buf
fers und einer Page-Table, wobei
- - die virtuelle Adresse einen ersten Adreßteil und einen zweiten Adreßteil aufweist und der virtuel len Adresse eine Leitzahl zugeordnet ist,
- - die Realadresse einen ersten Adreßteil und einen zweiten Adreßteil aufweist und
- - der Translation-Lookaside-Buffer eine Vielzahl von Einträgen aufweist, von denen jeder mindestens ein Markierungsfeld und mindestens ein dem Markie rungsfeld zugeordnetes Datenfeld aufweist, wobei zur Adreßumsetzung wie folgt vorgegangen wird:
- - der Translation-Lookaside-Buffer wird mittels der der virtuellen Adresse zugeordneten Leitzahl oder mittels einer Abbildung der der virtuellen Adresse zugeordneten Leitzahl auf einen Index oder mittels einer Abbildung der der virtuellen Adresse zuge ordneten Leitzahl und des ersten Adreßteils der virtuellen Adresse auf einen Index indiziert;
- - es wird überprüft, ob der Inhalt eines Markie rungsfeldes des indizierten Eintrages des Trans lation-Lookaside-Buffers mit dem ersten Adreßteil der virtuellen Adresse übereinstimmt;
- - existiert ein Markierungsfeld mit einem mit dem ersten Adreßteil der virtuellen Adresse überein stimmenden Inhalt, so liegt ein TLB-Hit vor und es wird die Realadresse aus dem Inhalt des zu diesem Markierungsfeld gehörenden Datenfeldes als erster Adreßteil der Realadresse und aus dem zweiten Adreßteil der virtuellen Adresse zusammengesetzt;
- - existiert kein Markierungsfeld in dem indizierten Eintrag, dessen Inhalt mit dem ersten Adreßteil der virtuellen Adresse übereinstimmt, so liegt ein TLB-Miss vor und es wird der erste Adreßteil der Realadresse aus der Page-Table hergeleitet, wobei die Page-Table anhand der virtuellen Adresse par siert wird und die Realadresse aus dem sich aus der Page-Table ergebenden ersten Adreßteil und aus dem zweiten Adreßteil der virtuellen Adresse zu sammengesetzt wird und wobei der erste Adreßteil der virtuellen Adresse sowie der sich aus der Pa ge-Table ergebende erste Adreßteil der Realadresse in den TLB übernommen werden.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet,
daß bei einem TLB-Miss der erste Adreßteil der virtu
ellen Adresse und der sich aus der Page-Table erge
bende erste Adreßteil der Realadresse in denjenigen
Eintrag des Translation-Lookaside-Buffers geladen
werden, der bei dem dem TLB-Miss zugrundeliegenden
Zugriff auf den Translation-Lookaside-Buffer indi
ziert worden ist.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekenn
zeichnet,
- - daß die Page-Table zusätzlich zu dem ersten Adreß teil einer Realadresse ein Leitzahlfeld mit einer Leitzahl liefert,
- - daß der Inhalt des sich bei der Parsierung der Page-Table ergebenden Leitzahlfeldes mit der der virtuellen Adresse zugeordneten Leitzahl vergli chen wird,
- - daß in dem Fall, in dem der Inhalt des Leitzahl feldes nicht mit der der virtuellen Adresse zuge ordneten Leitzahl übereinstimmt,
- - der Translation-Lookaside-Buffer anhand des Inhalts des Leitzahlfeldes oder anhand des In halts des Leitzahlfeldes und des ersten Adreß teils der virtuellen Adresse indiziert wird,
- - beim Vorliegen eines TLB-Hits das betreffende Datenfeld des Translation-Lookaside-Buffers als ungültig markiert wird und
- - die der virtuellen Adresse zugeordnete Leitzahl in das Leitzahlfeld des Page-Table-Eintrags abgespeichert wird, und
- - daß der erste Adreßteil der virtuellen Adresse und der sich aus der Page-Table ergebende erste Adreß teil der Realadresse in denjenigen Eintrag des Translation-Lookaside-Buffers geladen werden, der anhand der der virtuellen Adresse zugeordneten Leitzahl oder anhand der der virtuellen Adresse zugeordneten Leitzahl und des ersten Adreßteils der virtuellen Adresse indiziert worden ist.
4. Verfahren nach Anspruch 1 oder 2, dadurch gekenn
zeichnet,
- - daß die Page-Table zusätzlich zu dem ersten Adreß teil einer Realadresse eine Leitzahl liefert, und
- - daß bei einem TLB-Miss die Realadresse nur dann anhand des sich aus der Page-Table ergebenden er sten Adreßteils zusammengesetzt wird, wenn die ebenfalls von der Page-Table gelieferte Leitzahl mit der der virtuellen Adresse zugeordneten Leit zahl übereinstimmt, und andernfalls ein Leitzahl-Fehler signalisiert wird.
5. Verfahren nach Anspruch 1 oder 2, dadurch gekenn
zeichnet,
- - daß die Page-Table zusätzlich zu dem ersten Adreß teil einer Realadresse eine Leitzahl liefert, und
- - daß in dem Fall, in dem ein TLB-Miss vorliegt und die von der Page-Table gelieferte Leitzahl nicht mit der der virtuellen Adresse zugeordneten Leit zahl übereinstimmt, der virtuellen Adresse für deren aktuelle Umsetzung und für deren zukünftige Umsetzungen die von der Page-Table gelieferte Leitzahl zugeordnet wird.
6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch
gekennzeichnet, daß die den virtuellen Adressen zuge
ordneten Leitzahlen ein oder mehrere Steuerbits auf
weisen, die nicht zur Indizierung des
Translation-Lookaside-Buffers, sondern zur Verwaltung des Trans
lation-Lookaside-Buffers verwendet werden.
7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch
gekennzeichnet, daß die virtuelle Adresse Teil eines
Bitstrings ist, der Bits für den ersten Adreßteil der
virtuellen Adresse, Bits für den zweiten Adreßteil
der virtuellen Adresse und Bits für die der virtuel
len Adresse zugeordneten Leitzahl aufweist.
8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch
gekennzeichnet, daß jeder Eintrag des TLB mindestens
ein einem Markierungsfeld zugeordnetes Leitzahlfeld
aufweist, daß die der virtuellen Adresse zugeordnete
Leitzahl mit dem Inhalt desjenigen Markierungsfeldes
des indizierten Eintrags des Translation-Lookaside-Buffers
verglichen wird, dessen Inhalt gleich dem
ersten Adreßteil der virtuellen Adresse ist und daß
ein TLB-Hit dann vorliegt, wenn die der virtuellen
Adresse zugeordnete Leitzahl gleich der Leitzahl des
Leitzahlfeldes ist.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19602872A DE19602872A1 (de) | 1995-01-27 | 1996-01-29 | Verfahren zum Betreiben einer Adreßumsetzvorrichtung |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19502473 | 1995-01-27 | ||
DE19602872A DE19602872A1 (de) | 1995-01-27 | 1996-01-29 | Verfahren zum Betreiben einer Adreßumsetzvorrichtung |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19602872A1 true DE19602872A1 (de) | 1996-08-08 |
Family
ID=7752416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19602872A Withdrawn DE19602872A1 (de) | 1995-01-27 | 1996-01-29 | Verfahren zum Betreiben einer Adreßumsetzvorrichtung |
Country Status (3)
Country | Link |
---|---|
US (1) | US6079004A (de) |
DE (1) | DE19602872A1 (de) |
WO (1) | WO1996023260A1 (de) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6393544B1 (en) * | 1999-10-31 | 2002-05-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for calculating a page table index from a virtual address |
US6625715B1 (en) * | 1999-12-30 | 2003-09-23 | Intel Corporation | System and method for translation buffer accommodating multiple page sizes |
US6598050B1 (en) * | 2000-02-11 | 2003-07-22 | Integrated Device Technology, Inc. | Apparatus and method for limited data sharing in a multi-tasking system |
US7133951B1 (en) | 2000-02-29 | 2006-11-07 | Bourekas Philip A | Alternate set of registers to service critical interrupts and operating system traps |
US6567907B1 (en) * | 2000-10-19 | 2003-05-20 | Hewlett-Packard Development Company L.P. | Avoiding mapping conflicts in a translation look-aside buffer |
KR100450675B1 (ko) * | 2002-03-19 | 2004-10-01 | 삼성전자주식회사 | 성능향상 및 전력소모를 감소시킬 수 있는 tlb |
US20030225992A1 (en) * | 2002-05-29 | 2003-12-04 | Balakrishna Venkatrao | Method and system for compression of address tags in memory structures |
US8924686B2 (en) * | 2009-10-08 | 2014-12-30 | Arm Limited | Memory management unit |
US9342352B2 (en) | 2010-06-23 | 2016-05-17 | International Business Machines Corporation | Guest access to address spaces of adapter |
US8635430B2 (en) * | 2010-06-23 | 2014-01-21 | International Business Machines Corporation | Translation of input/output addresses to memory addresses |
US8615645B2 (en) | 2010-06-23 | 2013-12-24 | International Business Machines Corporation | Controlling the selectively setting of operational parameters for an adapter |
US9588902B2 (en) * | 2012-12-04 | 2017-03-07 | Advanced Micro Devices, Inc. | Flexible page sizes for virtual memory |
US10185731B2 (en) * | 2016-03-31 | 2019-01-22 | Arm Limited | Indexing entries of a storage structure shared between multiple threads |
US11126714B2 (en) | 2017-11-29 | 2021-09-21 | Arm Limited | Encoding of input to storage circuitry |
US10819736B2 (en) | 2017-11-29 | 2020-10-27 | Arm Limited | Encoding of input to branch prediction circuitry |
KR20200013897A (ko) * | 2018-07-31 | 2020-02-10 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
US20230058863A1 (en) * | 2021-08-10 | 2023-02-23 | Baidu Usa Llc | Countermeasures against side-channel attacks on secure encrypted virtualization (sev)-secure nested paging (sev-snp) processors |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0528584A1 (de) * | 1991-08-12 | 1993-02-24 | International Business Machines Corporation | Adressenübersetzungspufferspeicher für ein virtuelles Datenspeichersystem |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR10582E (fr) * | 1970-06-29 | 1909-07-30 | Paul Alexis Victor Lerolle | Jeu de serrures avec passe-partout |
US4376297A (en) * | 1978-04-10 | 1983-03-08 | Signetics Corporation | Virtual memory addressing device |
US4215402A (en) * | 1978-10-23 | 1980-07-29 | International Business Machines Corporation | Hash index table hash generator apparatus |
-
1996
- 1996-01-29 DE DE19602872A patent/DE19602872A1/de not_active Withdrawn
- 1996-01-29 US US08/875,134 patent/US6079004A/en not_active Expired - Fee Related
- 1996-01-29 WO PCT/EP1996/000333 patent/WO1996023260A1/de active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0528584A1 (de) * | 1991-08-12 | 1993-02-24 | International Business Machines Corporation | Adressenübersetzungspufferspeicher für ein virtuelles Datenspeichersystem |
Also Published As
Publication number | Publication date |
---|---|
US6079004A (en) | 2000-06-20 |
WO1996023260A1 (de) | 1996-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19602872A1 (de) | Verfahren zum Betreiben einer Adreßumsetzvorrichtung | |
DE2260353C2 (de) | Schaltungsanordnung für die Adressenumsetzung in einer Datenverarbeitungsanlage | |
DE60320026T2 (de) | Verbessertes speichermanagement für echtzeit-anwendungen | |
DE2807476C2 (de) | Speichereinrichtung mit mehreren virtuellen Adreßräumen | |
DE2227882C2 (de) | Virtuelle Speicheranordnung | |
DE2459006C2 (de) | Einrichtung zum Bilden einer absoluten Adresse in einer Datenverarbeitunsanlage | |
DE3833933C2 (de) | Informationsverarbeitungseinrichtung mit einer Adressenerweiterungsfunktion | |
DE10002120B4 (de) | Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung | |
DE68924833T2 (de) | Verfahren und Anordnung zur Datenabbildung in einem Datenverarbeitungssystem mit virtuellem Speicher. | |
DE68924720T2 (de) | Verfahren und Vorrichtung für Zugriffsrechtensteuerung. | |
DE4410060A1 (de) | Rechenvorrichtung | |
DE102006030879B4 (de) | System zum Reduzieren der Latenzzeit von exklusiven Leseanforderungen in einem symmetrischen Multiprozessorsystem | |
DE2455047A1 (de) | Datenverarbeitungssystem | |
DE69522426T2 (de) | Wort-Wiederauffindungsapparat für ein Wörterbuch | |
EP0755541A1 (de) | Cache-speichervorrichtung zum speichern von daten | |
DE3689276T2 (de) | Verfahren zur Aktualisierung der Informationen in einem Adressenübersetzungspufferspeicher. | |
EP0760134A1 (de) | Speichervorrichtung zum speichern von daten | |
DE69229491T2 (de) | Verfahren und Gerät um die lexikalen Eigenschaften von zusammengesetzten Wörtern zu bestimmen | |
DE3832758A1 (de) | Computerisierte arbeitsstation | |
DE68924557T2 (de) | Seitentabellen in einem virtuellen Speicher. | |
DE3216238C1 (de) | Datenverarbeitungsanlage mit virtueller Teiladressierung des Pufferspeichers | |
DE2613703C2 (de) | Schaltungsanordnung zum Übersetzen von Programmtexten | |
DE19538961C2 (de) | Speichervorrichtung zum Speichern von Daten | |
DE3633227A1 (de) | Anordnung zur umwandlung einer virtuellen adresse in eine physikalische adresse fuer einen in seiten organisierten arbeitsspeicher einer datenverarbeitungsanlage | |
DE10260606B4 (de) | Vorrichtung zur Übersetzung mehrerer virtueller Adressen auf eine einzige physikalische Adresse |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8130 | Withdrawal |