Cache - Verständnisproblem

Gast #3926275
Lesenswert?

Hallo..

Als ich mir die Architektur eines ARM A9 Kerns genauer angeschaut habe, 
fehlte mir ein wenig Verständnis für die Funktionsweise des Caches.

Woher weiß der Prozessor welche Daten er in den Cache ablegen soll und 
welche nicht? Wird das zur Laufzeit vom Prozessor entschieden oder wird 
das schon beim Kompilieren festgelegt?

Außerdem:
Angenommen der Prozessor braucht zum Weiterarbeiten eine neue Variable. 
Der Linker hat ja für diese Variable eine Adresse im RAM freigehalten 
(ob Virtuell oder Physikalisch ist jetzt erstmal egal). Woher weiß der 
Prozessor nun also, ob diese Variable auch im Cache vorhanden ist oder 
nicht ?

Ich hoffe ihr könnt mir da ein Paar Denkanstöße geben...

Grüße..
#3926294
Lesenswert?

ARM_Cache schrieb:
> Wird das zur Laufzeit vom Prozessor entschieden oder wird
> das schon beim Kompilieren festgelegt?

Zur Laufzeit.

> Woher weiß der
> Prozessor nun also, ob diese Variable auch im Cache vorhanden ist oder
> nicht ?

Zu jeder Cache-Line gehört eine Identifikation, das Tag. Das ist die 
Adresse dieser Line im Speicher.

Mindestens bei Lesezugriffen landet alles im Cache, was von der 
Speicheranordung und -verwaltung her als cachable definiert ist. Also 
jeglicher normaler Speicher. I/O Bereiche und gelegentlich auch 
Spiegeladressbereiche normalen Speichers sind entweder automatisch oder 
per Speicherverwaltung davon ausgeschlussen.

Für das Verhalten von Schreibzugriffen gibt es verschiedene Strategien 
der Implementierung von Caches. Zwei verbreitete: "write though" 
schreibt stets ins RAM durch, "write allocate" liest falls nötig den 
Inhalt vom RAM in eine neue Cache-Line und schreibt die zu speichernden 
Daten dann dort hinein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren