Zum Inhalt springen

Cache

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. Dezember 2004 um 15:16 Uhr durch 141.30.71.91 (Diskussion) (Cachetechniken). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Cache bezeichnet in der EDV einen besonders schnellen Speicher, der bei CPUs meist direkt auf dem Prozessor-Die integriert ist. Bei Festplatten liegt er auf der Steuerplatine. In ihm werden Daten und Programminstruktionen zwischengelagert, so dass diese bei einem Zugriff durch die CPU schnell zur Bearbeitung bereitstehen. Ziel des Cache-Speichers ist die Verringerung der Anzahl der Speicherzugriffe.

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

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“. Aus den Quotes-of-the-day eines Linux Betriebssystems: „Cache: A very expensive part of the memory system of a computer that no one is supposed to know is there.“

Das Funktionieren des Caches beruht auf der so genannten Lokalitätseigenschaft.

Cachetypen

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.

Ebenfalls wird unterschieden zwischen Hardwarecaches und Softwarecaches und das ist sehr wichtig

Cachetechniken

Alle Hardwarecaches gehören zu den assoziativen Speichern und sind damit inhaltsadressierbar. Während frühere Caches Abbilder einzelner Speicherzellen bildeten, sind neuere Caches burstadressierbar bzw. paged. Dies bedeutet, dass 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 (hit) 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 beschleunigen.

Cache-Techniken werden auch von Anwenderprogrammen wie Webbrowsern angeboten, welche zum Beispiel aus dem Web geladene Bilder oder Webseiten in einem Cache zwischenlagern können, so dass diese bei einem erneuten Aufruf nicht noch einmal über die langsamere Verbindung aus dem Web geholt werden müssen. Das wäre ein Beispiel für einen Softwarecache, eine Software, ein Computerprogramm, der Webbrowser, welcher sich eines Speichers bedient, z.B. einer Festplatte oder das RAM, um Daten zwischenzulagern.

Cacheverwaltung

Für eine korrekte Verarbeitung der zwischengespeicherten Daten bedarf es ausgeklügelter Cache-Algorithmen zur Verwaltung des Caches. Diese stellen 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 gar nicht angefordert werden, aus dem Cache entfernt werden, da nur ein Teil der Gesamtmenge vorgehalten werden kann.

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.

Die Größe und die Stufung des Caches kann bei Prozessoren (CPUs) die Verarbeitungsgeschwindigkeit der Daten beeinflussen. Aktuelle Modelle verfügen über zwei bis drei Cache-Stufen:

Cachelevel

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

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 512 und 2048 KB 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 in der Ansteuerungselektonik (Controller oder im Laufwerksgehäuse))
    • b) die Daten werden magnetisch/optisch gelesen
  • 7. die Daten müssen noch (z.B. per Scanner oder Tastatur) eingegeben werden.

Siehe auch