Cache - Verständnisproblem

Gast #3926275
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
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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.