Cache
Wörtlich aus dem Englischen übersetzt bedeutet Cache (gesprochen: kæʃ, wie das Bargeld - cash, entlehnt aus dem französischen cacher - verbergen, caché - verborgen) soviel wie "geheimes Lager".
Cache bezeichnet in der EDV die besondere Form eines Speichers, in dem Kopien von Daten und Programminstruktionen zwischengelagert werden, so dass diese bei einem Zugriff durch die CPU schnell zur Bearbeitung bereitstehen. Den Namen verdankt der Cache der Tatsache, dass er als Teil des Steuerwerks im Verborgenen arbeitet. Nur selten spricht ein Programmierer den Cache explizit an, etwa um ihn zu leeren (Flush).
Das Funktionieren des Caches beruht auf der so genannten Lokalitätseigenschaft.
Man unterscheidet Read-Only- (nur zum Lesen vorhalten), Read-Write- (zum Lesen und Verändern vorhalten) und Write-Through-Cache (beim Verändern werden die Originale direkt erneuert). Auch mehrstufige Verfahren (Second-Level-Cache) sind möglich. Dabei werden Daten über mehrere Stufen durchgereicht bzw. vorgehalten. Meist ist der Cache im Vergleich zum Hauptspeicher sehr klein. Auf die Elemente kann aber sehr schnell und einfach zugegriffen werden. Der Zwischenspeicher wird zwischen einem entfernteren oder aufwändig erreichbaren oder langsameren Bereich und einer (schnellen) Verarbeitungseinheit geschaltet und vermindert die operative Distanz zu den Verarbeitungsobjekten.
Man unterscheidet zwischen Hardwarecaches und Softwarecaches.
Alle Hardwarecaches gehören zu assoziativen Speichen und sind damit inhaltsadressierbar. Während frühere Caches Abbilder einzelner Speicherzellen bildeten, sind neuere Caches burstadressierbar bzw. paged. Dies bedeutet, daß wenn der Prozessor auf einen externen Speicherblock zugreift, wird dieser während des Lesens zusätzlich in den Cache kopiert, um bei wiederholtem Zugriff besonders schnell zur Verfügung zu stehen. Hierbei vergleicht die Cachelogik eine anliegende Adresse mit den Adressen (Indizes) der gecachten Speichersegmente, und bei einem Treffer (match) wird anstelle eines externen Speicherzugriffs der Inhalt des Caches aktiviert. Dasselbe gilt auch beim Schreiben: Wird eine bestimmte Speicherzelle oft geschrieben, wird zunächst nur der Inhalt des Caches verändert und erst zu einem günstigen Zeitpunkt (etwa, wenn gerade eine Leseoperation auf den Cache stattfindet und der externe Speicher entlastet ist) der Inhalt des Caches in den externen Speicher kopiert. Dies kann die Befehlsausführung erheblich verschnellern.
Cache-Techniken werden auch von Anwenderprogrammen wie Webbrowsern angeboten.
Für eine korrekte Verarbeitung der zwischengespeicherten Daten bedarf es einer ausgeklügelten Cache-Verwaltung. Diese stellt die notwendige Korrespondenz zwischen den Kopien und den Originalen her. Einerseits müssen nicht im Cache vorhandene aber dennoch angeforderte Elemente aus dem Originalbereich nachgeladen werden und es müssen im Falle von Änderungen diese auf jeden Fall aus dem Cache in die Originale übertragen werden. Möglicherweise können oder müssen Elemente, die selten oder garnicht angefordert werden, aus dem Cache entfernt werden, denn es kann nur ein Teil der Gesamtmenge vorgehalten werden.
Die Einrichtung eines Cache bietet Vorteile unter der Annahme, dass der erreichbare Performancegewinn den Aufwand für das Kopien/Original-Update-Management übertrifft - etwa bei häufigen und wiederholten Zugriffen. Dieser Vorteil schwindet naturgemäß, je mehr Elemente zwischengespeichert werden.
Im Cache liegende Daten lassen sich mit einer bestimmten Menge von Büchern oder Unterlagen auf einem Schreibtisch vergleichen, die dort für die Erledigung einer bestimmten Arbeit griffbereit liegen (vielleicht auch in Kopie). Nach einer entsprechenden Erledigung wandern diese Dinge wieder zurück in ein Regal oder in einen möglichweise in einem anderen Zimmer stehenden Aktenschrank.
Bei Prozessoren (CPUs] wird die Verarbeitungsgeschwindigkeit stark durch die Größe und die Stufung des Caches beeinflusst. Die aktuellen Modelle verfügen über zwei bis drei Cache-Stufen:
Der Level-1-Cache hält die aktuellen Adressen, Befehle und Zwischenergebnisse auf Vorrat, damit diese nicht langwierig aus "entfernterem" Speicher aufgerufen werden müssen. Dieser Cache liegt stets direkt im Prozessorkern und hat in der Regel eine Größe von 8 bis 128kB.
Der Level-2-Cache puffert größere aktuell zu verarbeitete Datenbestände, auch unter Umständen ganze Programmabschnitte. In der günstigsten Anordnung liegt dieser Cache wie der Level-1-Cache auf dem Prozessorchip (on-Die) und wird mit der vollen Prozessortaktrate angesprochen. Liegt der L2-Cache außerhalb der CPU, also z.B. auf einer "entfernteren" Platine, so muss die Taktrate in der Regel halbiert werden. Der L2-Cache ist in der Regel zwischen 8 und 1024kB groß.
Insbesondere wenn der L2-Cache on-Die vorliegt, kann eine weitere Stufe, der Level-3-Cache noch einmal eine Beschleunigung des Speicherzugriffs bedeuten.
Stufung des Datenzugriffs im Computer
...sortiert von schnell nach "langsam":
- 1. die Daten liegen in einem Register des Prozessors
- 2. die Daten liegen im Level-1-Cache des Prozessors
- 3. die Daten liegen im Level-2-Cache
- a) on-Die
- b) nicht on-Die, auf einer "entfernteren" Platine
- 4. die Daten liegen im Level-3-Cache (nicht on-Die)
- 5. die Daten müssen aus dem regulären Arbeitsspeicher gelesen werden
- 6. die Daten müssen extern gelesen werden (von z.B. der Festplatte)
- a) die Daten liegen in einem Laufwerks-Cache (Speicher im Laufwerksgehäuse)
- b) die Daten werden magnetisch/optisch gelesen
- 7. die Daten müssen noch (z.B. per Scanner oder Tastatur) eingegeben werden.