Forum: PC Hard- und Software Cache - Verständnisproblem


von ARM_Cache (Gast)


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..

von (prx) A. K. (prx)


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.

: Bearbeitet durch User
von ARM_Cache (Gast)


Lesenswert?

Hallo,

vielen Dank für deine Antwort.
Sehr gut und einfach erklärt. Das bringt erstmal Licht ins Dunkle!

Grüße

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.