Definition

Cache-Speicher

Was ist Cache-Speicher?

Der Cache-Speicher oder Cache Memory ist eine chipbasierte Computerkomponente, die das Abrufen von Daten aus dem Speicher des Computers effizienter macht. Er dient als temporärer Speicherbereich, aus dem der Prozessor des Computers Daten leicht abrufen kann. Dieser temporäre Speicherbereich, der als Cache bezeichnet wird, steht dem Prozessor leichter und schneller zur Verfügung als der Hauptarbeitsspeicher (Main Memory) des Computers, normalerweise eine Form von DRAM.

Der Cache-Speicher wird manchmal auch als CPU-Speicher (Central Processing Unit) bezeichnet, da er normalerweise direkt in den CPU-Chip integriert oder auf einem separaten Chip platziert ist, der über eine separate Busverbindung mit der CPU verfügt. Daher ist er für den Prozessor leichter zugänglich und kann die Effizienz steigern, da er sich physisch in der Nähe des Prozessors befindet.

Um in der Nähe des Prozessors zu sein, muss der Cache-Speicher viel kleiner als das Main Memory sein. Folglich hat er weniger Speicherplatz. Außerdem ist er teurer als der Hauptarbeitsspeicher, da es sich um einen komplexeren Chip handelt, der eine höhere Leistung erbringt.

Was er an Größe und Preis verlangt, macht er an Geschwindigkeit wieder wett. Cache-Speicher arbeitet 10 bis 100 Mal schneller als RAM und benötigt nur wenige Nanosekunden, um auf eine CPU-Anforderung zu reagieren.

Der Name der eigentlichen Hardware, die für den Cache-Speicher verwendet wird, ist Static Random Access Memory(SRAM). Der Name der Hardware, die im Hauptarbeitsspeicher eines Computers verwendet wird, ist Dynamic Random Access Memory (DRAM).

Cache Memory ist nicht mit dem umfassenderen Begriff Cache zu verwechseln. Caches sind temporäre Speicher von Daten, die sowohl in der Hardware als auch in der Software vorhanden sein können. Cache-Speicher bezieht sich auf die spezifische Hardwarekomponente, die es Computern ermöglicht, Caches auf verschiedenen Ebenen des Netzwerks zu erstellen.

Arten von Cache Memory

Cache-Speicher ist schnell und teuer. Traditionell wird er in „Ebenen“ (Levels) kategorisiert, die seine Nähe und Zugänglichkeit zum Mikroprozessor beschreiben. Es gibt drei allgemeine Cache-Ebenen:

Der L1-Cache oder primäre Cache ist extrem schnell, aber relativ klein und wird normalerweise als CPU-Cache in den Prozessor-Chip eingebettet.

Der L2-Cache oder sekundäre Cache ist oft umfangreicher als der L1-Cache. Der L2-Cache kann in die CPU eingebettet sein, oder er kann sich auf einem separaten Chip oder Ko-Prozessor befinden und über einen alternativen Hochgeschwindigkeits-Systembus verfügen, der den Cache und die CPU verbindet. Auf diese Weise wird er nicht durch den Verkehr auf dem Hauptsystembus verlangsamt.

Der Cache der Ebene 3 (L3) ist ein spezialisierter Arbeitsspeicher, der entwickelt wurde, um die Leistung von L1 und L2 zu verbessern. L1 oder L2 können wesentlich schneller sein als L3, obwohl L3 normalerweise doppelt so schnell wie DRAM ist. Bei Mehrkernprozessoren kann jeder Kern (Core) über einen dedizierten L1- und L2-Cache verfügen, aber sie können sich einen L3-Cache teilen. Wenn ein L3-Cache auf eine Anweisung verweist, wird er normalerweise auf eine höhere Cache-Ebene angehoben.

In der Vergangenheit wurden L1-, L2- und L3-Caches mit kombinierten Prozessor- und Mainboard-Komponenten erstellt. In letzter Zeit geht der Trend dahin, alle drei Ebenen des Memory-Cachings auf der CPU selbst zu konsolidieren. Aus diesem Grund hat sich die Hauptmethode zur Erhöhung der Cache-Größe von der Anschaffung einer bestimmten Hauptplatine mit verschiedenen Chipsätzen und Busarchitekturen auf die Anschaffung einer CPU mit der richtigen Menge an integriertem L1-, L2- und L3-Cache verlagert.

Entgegen der landläufigen Meinung wird die Implementierung von Flash oder mehr dynamischem RAM (DRAM) in einem System den Cache-Speicher nicht erhöhen. Dies kann verwirrend sein, da die Begriffe Memory Caching (Festplattenpufferung) und Cache Memory oft synonym verwendet werden. Das Speicher-Caching, bei dem DRAM oder Flash zur Pufferung von Leseoperationen auf Festplatten verwendet wird, soll die Speicher-I/Os verbessern, indem Daten, die häufig in einem Puffer vor einer langsameren Magnetplatte oder einem Magnetband referenziert werden, zwischengespeichert werden. Cache-Speicher hingegen bietet Lesepufferung für die CPU.

Aufbau des Cache Memory.
Aufbau des Cache Memory.

Cache Memory Mapping

Die Cache-Konfigurationen entwickeln sich ständig weiter, aber der Cache-Speicher funktioniert traditionell in drei verschiedenen Konfigurationen:

    • Beim Direct Mapped Cache wird jeder Block genau einer Cache-Speicherstelle zugeordnet. Vom Konzept her ist ein direkt zugeordneter Cache wie die Zeilen einer Tabelle mit drei Spalten: der Cache-Block, der die tatsächlich geholten und gespeicherten Daten enthält, ein Tag mit der gesamten oder einem Teil der Adresse der geholten Daten und ein Flag-Bit, das das Vorhandensein eines gültigen Datenbits im Zeileneintrag anzeigt.

Dieses Video-Tutorial von CompTIA A+ erklärt den Cache-Speicher.
  • Das vollständig assoziative Cache Mapping ist in ihrer Struktur der direkten Zuordnung ähnlich, ermöglicht jedoch die Zuordnung eines Speicherblocks zu einer beliebigen Cache-Speicherstelle und nicht, wie bei der direkten Zuordnung, zu einer vordefinierten Cache-Speicherstelle.
  • Das assoziative Cache Mapping kann als Kompromiss zwischen dem direkten und dem vollständig assoziativen Mapping angesehen werden, bei der jeder Block auf eine Untergruppe von Cache-Speicherstellen abgebildet wird. Sie wird manchmal als N-Wege-Set-Assoziativ-Mapping bezeichnet, bei der eine Stelle im Hauptspeicher auf eine von „N“ Stellen im L1-Cache zwischengespeichert wird.

Richtlinien für das Schreiben von Daten

Daten können mit einer Vielzahl von Techniken in den Speicher geschrieben werden, aber die beiden wichtigsten sind die Cache-Speicher:

  • Write-Through. Die Daten werden gleichzeitig in den Cache und in den Hauptspeicher geschrieben.
  • Write-back. Daten werden nur anfänglich in den Cache geschrieben. Danach können Daten in den Hauptspeicher geschrieben werden, aber dies muss nicht geschehen und behindert die Interaktion nicht.

Die Art und Weise, wie Daten in den Cache geschrieben werden, wirkt sich auf die Datenkonsistenz und -effizienz aus. Bei der Verwendung von Write-Through muss beispielsweise mehr geschrieben werden, was zu einer Latenz im Voraus führt. Bei der Verwendung von Write-Back sind die Operationen möglicherweise effizienter, aber die Daten sind möglicherweise nicht zwischen Haupt- und Cache-Speicher konsistent.

Eine Möglichkeit, wie ein Computer die Datenkonsistenz bestimmt, ist die Untersuchung des Dirty Bits im Speicher. Das Dirty Bit ist ein zusätzliches Bit, das in Speicherblöcken enthalten ist und anzeigt, ob die Informationen geändert wurden. Wenn Daten die Registerdatei des Prozessors mit einem aktiven Dirty Bit erreichen, bedeutet dies, dass sie nicht aktuell sind und dass es an anderer Stelle neuere Versionen gibt. Dieses Szenario tritt eher in einem Write-Back-Szenario auf, da die Daten asynchron in die beiden Speicherbereiche geschrieben werden.

Spezialisierung und Funktionalität

Zusätzlich zu den Befehls- und Daten-Caches sind andere Caches so konzipiert, dass sie spezielle Systemfunktionen bereitstellen. Nach einigen Definitionen ist der L3-Cache aufgrund seines gemeinsamen Designs ein spezialisierter Cache. Andere Definitionen halten den Befehls-Cache und den Daten-Cache getrennt und bezeichnen beide als spezialisierte Caches.

Translations-Lookaside-Puffer (TLBs) sind ebenfalls spezialisierte Speicher-Caches, deren Funktion darin besteht, Übersetzungen von virtuellen Adressen in physische Adressen aufzuzeichnen.

Wieder andere Caches sind technisch gesehen überhaupt keine Speicher-Caches. Platten-Caches können beispielsweise DRAM oder Flash-Speicher verwenden, um Daten zwischenzuspeichern, ähnlich wie es Speicher-Caches mit CPU-Anweisungen tun. Wenn auf Daten häufig von der Festplatte zugegriffen wird, werden sie in DRAM oder Flash-basierter Silizium-Speichertechnologie zwischengespeichert, um eine schnellere Zugriffszeit und Reaktion zu ermöglichen.

Spezielle Caches sind auch für Anwendungen wie Webbrowser, Datenbanken, Netzwerkadressbindung und clientseitige Unterstützung des NFS-Protokolls verfügbar. Diese Arten von Caches können über mehrere vernetzte Hosts verteilt werden, um einer Anwendung, die sie verwendet, eine größere Skalierbarkeit oder Leistung zu bieten.

So sieht die Hierarchie eines Arbeitsspeichers aus.
So sieht die Hierarchie eines Arbeitsspeichers aus.

Lokalität

Die Fähigkeit des Cache-Speichers, die Leistung eines Computers zu verbessern, beruht auf dem Konzept der Lokalität der Referenz. Der Begriff „Lokalität“ beschreibt verschiedene Situationen, die ein System vorhersehbarer machen. Der Cache-Speicher nutzt diese Situationen, um ein Muster für den Speicherzugriff zu schaffen, auf das er sich verlassen kann.

Es gibt verschiedene Arten von Lokalität. Zwei Schlüsseltypen für den Cache-Speicher sind:

  • Temporale Lokalität. Dies ist der Fall, wenn in kurzer Zeit wiederholt auf dieselben Ressourcen zugegriffen wird.
  • Räumliche Lokalität. Dies bezieht sich auf den Zugriff auf verschiedene Daten oder Ressourcen, die nahe beieinander liegen.

Leistung

Cache Memory ist wichtig, weil er die Effizienz der Datenabfrage verbessert. Er speichert Programmanweisungen und Daten, die beim Betrieb von Programmen wiederholt verwendet werden, oder Informationen, die die CPU wahrscheinlich als nächstes benötigt. Der Computerprozessor kann aus dem Cache schneller auf diese Informationen zugreifen als aus dem Hauptspeicher. Der schnelle Zugriff auf diese Anweisungen erhöht die Gesamtgeschwindigkeit des Programms.

Abgesehen von seiner Hauptfunktion der Leistungsverbesserung ist der Cache-Speicher eine wertvolle Ressource zur Bewertung der Gesamtleistung eines Computers. Benutzer können dies tun, indem sie sich das Hit-to-Miss-Verhältnis des Caches ansehen. Cache-Treffer (Hit) sind Fälle, in denen das System erfolgreich Daten aus dem Cache abruft. Ein Cache-Fehltreffer (Miss) ist, wenn das System nach den Daten im Cache sucht, sie nicht finden kann und stattdessen woanders sucht. In einigen Fällen können Benutzer das Hit-Miss-Verhältnis verbessern, indem sie die Cache-Speicherblockgröße - die Größe der gespeicherten Dateneinheiten - anpassen. 

Bei der Verbesserung der Leistung und der Fähigkeit, die Leistung zu überwachen, geht es nicht nur darum, den allgemeinen Komfort für den Benutzer zu verbessern. Mit dem Fortschritt der Technologie und der zunehmenden Verlässlichkeit in unternehmenskritischen Szenarien werden Geschwindigkeit und Zuverlässigkeit immer wichtiger. Selbst einige Millisekunden Latenzzeit können je nach Situation zu enormen Kosten führen.

Memory-Typen im Vergleich.
Memory-Typen im Vergleich.

Cache vs. Hauptspeicher

DRAM dient als Hauptspeicher eines Computers und führt Berechnungen mit den aus dem Speicher abgerufenen Daten durch. Sowohl DRAM als auch Cache-Speicher sind flüchtige Speicher, die ihren Inhalt verlieren, wenn der Strom abgeschaltet wird. DRAM ist auf der Hauptplatine installiert, und die CPU greift über eine Busverbindung darauf zu.

DRAM ist in der Regel etwa halb so schnell wie L1-, L2- oder L3-Cache-Speicher und wesentlich kostengünstiger. Es bietet einen schnelleren Datenzugriff als Flash-Speicher, Festplattenlaufwerke (HDD) und Bandspeicher. Es wurde in den letzten Jahrzehnten als Speicherplatz für häufig abgerufene Festplattendaten zur Verbesserung der I/O-Leistung eingesetzt.

DRAM muss alle paar Millisekunden aktualisiert werden. Cache-Speicher, der ebenfalls eine Art von Speicher mit wahlfreiem Zugriff ist, muss nicht aktualisiert werden. Er ist direkt in die CPU eingebaut, um dem Prozessor den schnellstmöglichen Zugriff auf Speicherplätze zu ermöglichen, und bietet eine Zugriffszeit im Nanosekundenbereich auf häufig referenzierte Befehle und Daten. SRAM ist schneller als DRAM, aber da es sich um einen komplexeren Chip handelt, ist er auch teurer in der Herstellung.

Dynamischer RAM.
Dynamischer RAM.

Cache vs. virtueller Speicher

Ein Computer hat eine begrenzte Menge an DRAM und noch weniger Cache-Speicher. Wenn ein großes Programm oder mehrere Programme ausgeführt werden, kann der Speicher voll genutzt werden. Um einen Mangel an physischem Speicher auszugleichen, kann das Betriebssystem des Computers virtuellen Speicher erstellen.

Dazu überträgt das Betriebssystem vorübergehend inaktive Daten vom DRAM auf den Plattenspeicher. Dieser Ansatz vergrößert den virtuellen Adressraum, indem der aktive Speicher im DRAM und der inaktive Speicher in den Festplatten verwendet wird, um zusammenhängende Adressen zu bilden, die sowohl eine Anwendung als auch deren Daten enthalten. Mit dem virtuellen Speicher kann ein Computer größere Programme oder mehrere Programme gleichzeitig ausführen, und jedes Programm arbeitet so, als ob es über unbegrenzten Speicher verfügt.

Um den virtuellen Speicher in den physischen Speicher zu kopieren, teilt das Betriebssystem den Speicher in Page Files oder Swap Files auf, die eine bestimmte Anzahl von Adressen enthalten. Diese Seiten werden auf einem Datenträger gespeichert, und wenn sie benötigt werden, kopiert das Betriebssystem sie vom Datenträger in den Hauptspeicher und übersetzt die Adresse des virtuellen Speichers in eine physische Adresse. Diese Übersetzungen werden von einer Memory Management Unit (MMU) durchgeführt.

Implementierung und Geschichte

Großrechner verwendeten eine frühe Version des Cache-Speichers, aber die Technologie, wie sie heute bekannt ist, begann mit dem Aufkommen von Mikrocomputern entwickelt zu werden. Bei den frühen PCs stieg die Prozessorleistung viel schneller als die Speicherleistung, und der Speicher wurde zu einem Engpass, der die Systeme verlangsamte.

In den 1980er Jahren setzte sich die Idee durch, dass eine kleine Menge teureren, schnelleren SRAMs verwendet werden könnte, um die Leistung des weniger teuren, langsameren Hauptspeichers zu verbessern. Ursprünglich war der Speicher-Cache vom Systemprozessor getrennt und nicht immer im Chipsatz enthalten. Frühe PCs hatten in der Regel 16 KB bis 128 KB Cache-Speicher.

Bei 486 Prozessoren fügte Intel der CPU 8 KB Speicher als Level 1 (L1)-Speicher hinzu. In diesen Systemen wurden bis zu 256 KB externer Level 2 (L2)-Cache-Speicher verwendet. Bei den Pentium-Prozessoren verdoppelte sich der externe Cache-Speicher nochmals auf 512 KB im High-End-Bereich. Außerdem teilten sie den internen Cache-Speicher in zwei Caches auf: einen für Anweisungen und einen für Daten.

Prozessoren, die auf Intels P6-Mikroarchitektur basieren, die 1995 eingeführt wurden, waren die ersten, die L2-Cache-Speicher in die CPU integrierten und es ermöglichten, dass der gesamte Cache-Speicher eines Systems mit der gleichen Taktrate wie der Prozessor lief. Vor dem P6 wurde auf den L2-Speicher außerhalb der CPU mit einer viel langsameren Taktrate zugegriffen als der Prozessor, was die Systemleistung erheblich verlangsamte.

Frühe Speicher-Cache-Controller verwendeten eine Write-Through-Cache-Architektur, bei der in den Cache geschriebene Daten auch sofort im RAM aktualisiert wurden. Dadurch wurden Datenverluste minimiert, aber auch Operationen verlangsamt. Bei späteren 486-basierten PCs wurde die Write-Back-Cache-Architektur entwickelt, bei der der RAM nicht sofort aktualisiert wird. Stattdessen werden die Daten im Cache gespeichert, und der RAM wird nur in bestimmten Intervallen oder unter bestimmten Umständen aktualisiert, wenn Daten fehlen oder veraltet sind.

Diese Definition wurde zuletzt im März 2020 aktualisiert

Erfahren Sie mehr über Disk-Systeme

ComputerWeekly.de
Close