13 Stimmen

Definition/Bedeutung von Aliasing? (CPU-Cache-Architekturen)

Ich bin etwas verwirrt über die Bedeutung von "Aliasing". zwischen CPU-Cache und physischer Adresse . Zuerst habe ich die Definition auf Wikipedia gefunden:

Die VIVT leidet jedoch unter Aliasing Probleme, bei denen mehrere verschiedene virtuelle Adressen können sich auf dieselbe physische Adresse beziehen . Ein weiteres Problem sind Homonyme, bei denen dieselbe virtuelle Adresse mehreren verschiedenen physischen Adressen zugeordnet ist.

aber nach einer Weile sah ich eine andere Definition in einer Präsentation( ppt ) der DAC'05: "Energieeffiziente physikalisch markierte Caches für eingebettete Prozessoren mit virtuellem Speicher"

Cache-Aliasing und Synonyme:

Alias : Dieselbe virtuelle Adresse aus verschiedenen Kontexten, die auf verschiedene physische Adressen abgebildet wird Synonym: Unterschiedliche virtuelle Adressen, die auf dieselbe physikalische Adresse abgebildet werden (Data Sharing)

Da ich kein Muttersprachler bin, weiß ich nicht, was richtig ist, aber ich glaube, dass die Wiki-Definition richtig ist.

Edit :

Der Begriff "Aliasing" im CPU-Cache bedeutet in der Regel "Synonym", das Gegenteil ist "Homonym". Auf einer allgemeineren Ebene bedeutet "Aliasing" "Verwirrung" oder "Chaos" oder etwas Ähnliches. Meiner Meinung nach bedeutet "Aliasing" genau genommen, dass die Abbildung von (X->Y) "nicht bijektiv" ist, wobei

"X" = die Teilmenge der physischen Adresseinheiten, die zwischengespeichert wurde. (jedes Element ist eine Zeile von Bytes)

"Y" = die Menge der gültigen Cache-Zeilen. (Elemente a auch "Zeile")

14voto

user541686 Punkte 196656

Sie müssen sich erst über den virtuellen Speicher informieren, aber im Grunde geht es um Folgendes:

  • Die Speicheradressen, die Ihr Programm verwendet, sind nicht die physisch Adressen, die der RAM verwendet; sie sind virtuell Adressen kartiert zu physikalischen Adressen durch die CPU.

  • Mehrere virtuelle Adressen können auf dieselbe physikalische Adresse verweisen.

Das bedeutet, dass Sie zwei Kopien der gleichen Daten in verschiedenen Teilen des Caches haben können, ohne es zu wissen... und sie würden nicht korrekt aktualisiert werden, so dass Sie falsche Ergebnisse erhalten würden.


Edit :

Auszug aus Referenz :

Cache-Aliasing tritt auf, wenn mehrere Zuordnungen zu einer physischen Seite des Speichers widersprüchliche Caching-Zustände haben, z. B. zwischengespeichert und nicht zwischengespeichert. Aufgrund dieser widersprüchlichen Zustände können die Daten in dieser physischen Seite beschädigt werden, wenn der Cache des Prozessors geleert wird. Wenn diese Seite von einem Treiber für DMA verwendet wird, kann dies zu Problemen mit der Hardwarestabilität und zu Systemstillständen führen.


Für diejenigen, die immer noch nicht überzeugt sind :

Auf ARMv4- und ARMv5-Prozessoren ist der Cache als virtuell-indizierter, virtuell-gekennzeichneter (VIVT) Cache organisiert, bei dem sowohl der Index als auch das Tag auf der virtuellen Adresse basieren. Der Hauptvorteil dieser Methode besteht darin, dass Cache-Lookups schneller sind, da der Translation-Look-Aside-Buffer (TLB) beim Abgleich von Cache-Zeilen für eine virtuelle Adresse nicht beteiligt ist. Allerdings erfordert diese Caching-Methode häufigere Cache-Leerungen. wegen des Cache-Alias, bei dem dieselbe physische Adresse kann auf mehrere virtuelle Adressen abgebildet werden .

8voto

Aater Suleman Punkte 2190

@Wu Ja, man muss den virtuellen Speicher ein wenig verstehen, um Aliasing zu verstehen. Lassen Sie mich Ihnen zuerst ein paar Zeilen erklären:

Nehmen wir an, ich habe einen RAM (physischen Speicher) von 1 GB. Wenn ich meinem Programmierer eine Ansicht präsentieren möchte, dass ich 4 GB Speicher habe, dann verwende ich virtuellen Speicher. Im virtuellen Speicher denkt der Programmierer, dass er/sie 4 GB hat und schreibt sein Programm aus dieser Perspektive. Er braucht nicht zu wissen, wie viel physischer Speicher vorhanden ist. Der Vorteil ist, dass das Programm auf Computern mit unterschiedlich viel RAM läuft. Außerdem kann das Programm auf einem Computer zusammen mit anderen Programmen ausgeführt werden (die ebenfalls physischen Speicher verbrauchen).

So wird der virtuelle Speicher implementiert. Ich werde ein einfaches 1-stufiges virtuelles Speichersystem angeben (Intel hat ein 2/3-stufiges System, das es nur zur Erklärung kompliziert macht.

Unser Problem ist, dass der Programmierer 4 Milliarden Adressen hat und wir nur 1 Milliarde Plätze haben, um diese 4 Milliarden Adressen unterzubringen. Daher müssen die Adressen aus dem virtuellen Adressraum in den physischen Adressraum eingeordnet werden. Dies geschieht mit Hilfe einer einfachen Indextabelle, die Page Table genannt wird. Wenn Sie mit einer virtuellen Adresse auf eine Seitentabelle zugreifen, erhalten Sie die physische Adresse dieses Speicherplatzes.

Einige Details: Denken Sie daran, dass der physische Speicherplatz nur 1 GB groß ist, so dass das System nur die 1 GB, auf die zuletzt zugegriffen wurde, im physischen Speicher aufbewahrt und den Rest auf der Systemplatte. Wenn das Programm eine bestimmte Adresse anfordert, wird zunächst geprüft, ob sie sich bereits im physischen Speicher befindet. Wenn ja, wird sie an das Programm zurückgegeben. Wenn nicht, wird sie von der Festplatte in den physischen Speicher geholt und dann an das Programm zurückgegeben. Letzteres wird als Page Fault bezeichnet.

Zurück zu Aliasing im Zusammenhang mit virtuellem Speicher: Da es eine Zuordnung zwischen virtuellen -> physischen Adressen gibt, ist es möglich, zwei virtuelle Adressen auf dieselbe physische Adresse abzubilden. Adresse X und Y ansehe, erhalte ich in BEIDEN Fällen dieselbe physische Adresse.

Im Folgenden zeige ich ein einfaches Beispiel für eine Seitentabelle mit 8 Einträgen. Angenommen, es gibt 8 virtuelle Adressen und nur 3 physikalische Adressen. Die Seitentabelle sieht wie folgt aus:

     0:    1
     1:   On disk
     2:    2
     3:    1
     4:   On disk
     5:   On disk
     6:   On disk
     7:    0

This mean that if virtual address 4 is accessed, you will get a page fault. 
If virtual addresses 3 is accessed, you will get the physical address 1
In this case, virtual addresses 0 and 3 are aliasing to the same physical address 1 for both of them

HINWEIS: Zur Vereinfachung des Konzepts habe ich überall die Begriffe physische und virtuelle Adressen verwendet. In einem realen System erfolgt die Zuordnung von virtueller zu physischer Adresse nicht auf der Basis einzelner Adressen. Stattdessen werden Teile des virtuellen Raums dem physischen Raum zugeordnet. Jedes Stück wird als Seite bezeichnet (deshalb heißt die Zuordnungstabelle auch Seitentabelle), und die Größe des Stücks ist eine Eigenschaft des ISA, z. B. hat Intel x86 4 KByte-Seiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X