Ein Cache ist Hardware oder Software, welche verwendet wird, um etwas, in der Regel Daten, vorübergehend in einer Computerumgebung zu speichern.

Eine kleine Menge an schnellerem, teurerem Speicher wird verwendet, um die Leistung von kürzlich oder häufig abgerufenen Daten zu verbessern, die vorübergehend auf einem schnell zugänglichen Speichermedium gespeichert werden, das lokal für den Cache-Client und getrennt vom Massenspeicher ist. Der Cache wird häufig von Cache Clients wie GPU, Anwendungen, Webbrowsern oder Betriebssystemen (Oses) verwendet.

Der Cache wird verwendet, weil der Massen- oder Hauptspeicher nicht mit den Anforderungen der Cache Clients Schritt halten kann. Der Cache verkürzt die Datenzugriffszeiten, reduziert die Latenzzeiten und verbessert die Ein- und Ausgabe (I/O). Da fast alle Anwendungs-Workloads von I/O-Operationen abhängen, verbessert das Cache die Anwendungsleistung.

So funktioniert der Cache.

Wenn ein Cache-Client auf Daten zugreifen muss, prüft er zunächst den Cache. Wenn die angeforderten Daten in einem Cache gefunden werden, spricht man von einem Cache-Treffer. Der Prozentsatz der Versuche, die zu Cache-Treffern führen, wird als Cache-Trefferrate oder -verhältnis bezeichnet.

Wenn die angeforderten Daten nicht im Cache gefunden werden – eine Situation, die als Cache-Miss bezeichnet wird – werden sie aus dem Hauptspeicher gezogen und in den Cache kopiert. Wie dies geschieht und welche Daten aus dem Cache ausgeworfen werden, um Platz für die neuen Daten zu schaffen, hängt vom Caching-Algorithmus oder den vom System verwendeten Richtlinien ab.

Webbrowser wie Edge, Firefox, Safari oder Chrome verwenden einen Browser-Cache, um die Leistung von häufig aufgerufenen Webseiten zu verbessern. Wenn Sie eine Webseite besuchen, werden die angeforderten Dateien in ihrem Computerspeicher im Cache des Browsers gespeichert.

Durch Anklicken und Zurückkehren zu einer vorherigen Seite kann ihr Browser die meisten der benötigten Dateien aus dem Cache abrufen, anstatt sie alle erneut vom Webserver senden zu lassen. Dieser Ansatz wird als Read-Cache bezeichnet. Der Browser kann Daten aus dem Browser-Cache viel schneller lesen, als die Dateien von der Webseite neu zu lesen.

Der Cache ist aus verschiedenen Gründen wichtig:

  • Die Verwendung von Cache reduziert die Latenzzeit für aktive Daten. Dies führt zu einer höheren Performance für ein System oder eine Anwendung.
  • Es leitet auch I/Os in den Cache um und reduziert I/O-Operationen auf externen Speicher und niedrigere SAN-Datenströme.
  • Die Daten können dauerhaft auf traditionellen oder externen Speicher-Arrays gespeichert bleiben. Dadurch wird die Konsistenz und Integrität der Daten durch die Verwendung von Funktionen des Arrays wie Snapshots oder Replikation gewährleistet.
  • Flash wird nur für den Teil des Workloads verwendet, der von einer geringeren Latenzzeit profitiert. Dies führt zu einem kostengünstigen Einsatz von teurerem Speicher.

Der Cache-Speicher ist entweder auf der CPU enthalten oder in einen Chip auf der Systemplatine eingebettet. Bei neueren Maschinen ist der einzige Weg, den Cache-Speicher zu erhöhen, ein Upgrade der Systemplatine und der CPU auf eine neuere Generation. Ältere System Boards können leere Steckplätze haben, die verwendet werden können, um den Cache-Speicher zu vergrößern, aber die meisten neueren System Boards bieten diese Option nicht an.

Cache Algorithmen.

Anweisungen, wie der Cache gepflegt werden soll, werden durch Cache-Algorithmen gegeben. Einige Beispiele für Cache-Algorithmen sind:

  • Last Frequently Used (LFU) verfolgt, wie oft auf einen Eintrag zugegriffen wird. Der Gegenstand mit der niedrigsten Anzahl wird zuerst entfernt.
  • Die am wenigsten genutzte LRU (Last Recently Used) legt die zuletzt aufgerufenen Elemente oben im Cache ab. Wenn der Cache sein Limit erreicht hat, werden die zuletzt aufgerufenen Elemente entfernt.
  • Most Recently Used (MRU) entfernt zuerst die zuletzt aufgerufenen Elemente. Dieser Ansatz ist am besten geeignet, wenn ältere Gegenstände eher verwendet werden.

Cache Richtlinien.

Write-around-Cache schreibt Operationen auf den Speicher und überspringt den Cache vollständig. Dadurch wird verhindert, dass der Cache bei großen Mengen an Schreib-I/Os überflutet wird. Der Nachteil dieses Ansatzes ist, dass Daten nicht zwischengespeichert werden, es sei denn, sie werden aus dem Speicher gelesen. Das bedeutet, dass der Lesevorgang relativ langsam ist, da die Daten nicht zwischengespeichert wurden.

Write-Through-Cache schreibt Daten in den Cache und Speicher. Der Vorteil dabei ist, dass neu geschriebene Daten, da sie immer zwischengespeichert werden, schnell gelesen werden können. Ein Nachteil ist, dass Schreiboperationen erst dann als abgeschlossen gelten, wenn die Daten sowohl in den Cache als auch in den Primärspeicher geschrieben werden. Dies kann dazu führen, dass Write-Through Caching die Latenz die Schreiboperationen einführt.

Der Write-back-Cache ähnelt dem Write-Through-Caching, da alle Schreibvorgänge auf den Cache gerichtet sind. Beim Write-back-Cache gilt der Schreibvorgang jedoch nach dem Zwischenspeichern der Daten als abgeschlossen. Später werden die Daten aus dem Cache in den Speicher kopiert.

Mit diesem Ansatz weisen sowohl Lese- als auch Schreibvorgänge eine geringe Latenz auf. Der Nachteil ist, dass, je nachdem, welcher Caching-Mechanismus verwendet wird, die Daten anfällig für Verluste bleiben, bis sie auf den Speicher übertragen werden.

Beliebte Anwendungen für den Cache.

Cache-Server: Ein dedizierter Netzwerkserver oder Dienst, der als Server oder Webserver fungiert und Webseiten oder andere Internetinhalte lokal speichert. Ein Cache-Server wird manchmal als Proxy-Cache bezeichnet.

Disk Cache: Enthält kürzlich gelesene Daten und möglicherweise angrenzende Datenbereiche, auf die wahrscheinlich bald zugegriffen werden kann. Einige Disk Caches speichern Daten im Cache, je nachdem, wie oft sie gelesen werden. Häufig gelesene Speicherblöcke werden als Hot Blocks bezeichnet und automatisch an den Cache gesendet.

Cache Memory: Random Access Memory (RAM), auf den ein Mikroprozessor schneller zugreifen kann als auf normales RAM. Der Cache-Speicher ist oft direkt an die CPU gebunden und wird zum Caching von Anweisungen verwendet, auf die häufig zugegriffen wird. Ein RAM-Cache ist viel schneller als ein plattenbasierter Cache, aber der Cache-Speicher ist viel schneller als ein RAM-Cache, weil er so nah an der CPU liegt.

Flash-Cache: Temporäre Speicherung von Daten auf NAND-Flash-Speicherchips – oft unter der Verwendung von Solit-State-Laufwerken (SSDs) -, um Datenanforderungen schneller zu erfüllen, als es möglich wäre, wenn sich der Cache auf einer herkömmlichen Festplatte (HDD) oder einem Teil des Backup-Speichers befände.

Persistenter Cache: Berücksichtigt die tatsächliche Speicherkapazität, bei der im Falle eines Systemsneustarts oder -absturzes keine Daten verloren gehen. Zum Schutz der Daten wird ein Batterie-Backup verwendet oder die Daten werden als zusätzlicher Schutz vor Datenverlust in ein batteriegepuffertes dynamisches RAM (DRAM) übertragen.

Arten von Hardware-Cache.

Beim CPU-Caching werden aktuelle oder häufig angeforderte Daten an einem leicht zugänglichen Ort zwischengespeichert. Auf diese Daten kann schnell zugegriffen werden, wodurch die Verzögerung beim Lesen aus dem RAM vermieden wird.

Der Cache ist hilfreich, da die CPU eines Computers typischerweise eine viel höhere Taktfrequenz hat als der Systembus, über den er mit dem RAM verbunden ist. Infolgedessen begrenzt die Taktfrequenz des Systembusses die Fähigkeit der CPU, Daten aus dem RAM zu lesen. Zusätzlich zur langsamen Geschwindigkeit beim Lesen von Daten aus dem RAM werden oft die gleichen Daten mehrfach gelesen, wenn die CPU ein Programm ausführt.

Bei einem CPU-Cache wird eine kleine Menge an Speicher direkt auf der CPU platziert. Dieser Speicher arbeitet mit der Geschwindigkeit der CPU und nicht mit der Systembusgeschwindigkeit und ist viel schneller als RAM. Die zugrunde liegende Prämisse des Cache ist, dass Daten, die einmal angeordert wurden, wahrscheinlich erneut angefordert werden.

CPU-Caches haben zwei oder mehr Schichten oder Ebenen. Es wurde festgestellt, dass die Verwendung von zwei kleinen Caches die Performance effektiver erhöht als ein großer Cache.

Die zuletzt angeforderten Daten sind in der Regel die Daten, die wieder benötigt werden. Daher überprüft die CPU zuerst den Level 1 (L1) Cache. Wenn die angeforderten Daten gefunden werden, überprüft die CPU nicht den Level 2 (L2) Cache. Dies spart Zeit, da die CPU nicht im gesamten Cache-Speicher suchen muss.

Der L1-Cache ist in der Regel auf dem Mikroprozessorchip aufgebaut. Der L2-Cache ist in die CPU eingebettet oder befindet sich auf einem separaten Chip oder Koprozessor und kann einen schnellen alternativen Systembus haben, der den Cache mit der CPU verbindet. Level (L3) Cache ist ein spezieller Speicher, der entwickelt wurde, um die L1- und L2-Leistung zu verbessern. Auf den L4-Cache kann zugegriffen und von der CPU und der Graffikprozessoreinheit (GPU) gemeinsam genutzt werden.

L1, L2 und L3 Caches wurden in der Vergangenheit mit kombinierten Prozessor- und Mainboard-Komponenten erstellt. In letzter Zeit geht der Trend dahin, die drei Ebenen auf der CPU selbst zu konsolidieren. Aufgrund dieser Änderung hat sich die Hauptmethode zu Erhöhung der Cache-Größe auf den Kauf einer CPU mit der richtigen Menge an integriertem L1, L2 und L3 Cache verlagert.

Die Translation Lookaside Buffer (TLB) ist ein Speicher-Cache, der die letzten Übersetzungen von virtuellem Speicher in physische Adressen speichert und virtuelle Speicheroperationen beschleunigt.

Wenn virtuelle Speicheradressen übersetzt werden, werden sie dem TLB hinzugefügt. Sie können schneller aus der TLB abgerufen werden, da sie sich auf dem Prozessor befinden, was die Latenzzeit reduziert. Der TLB kann auch die Vorteile der Hochfrequenzen moderner CPUs nutzen.

TLBs unterstützen Multiuser Computer mit einem Benutzer- und einem Supervisor-Modus und sie verwenden Berechtigungen für Lese- und Schreibbits, um die Freigabe zu ermöglichen. Multitasking und Codefehler können jedoch zu Performance-Problemen führen. Diese Leistungseinbußen, bekannt als Cache Trash, werden durch Computeraktivitäten verursacht, die aufgrund von übermäßigem Ressourcenverbrauch oder Caching-Systemkonflikten nicht vorankommen.

Cache vs. RAM.

Cache-Speicher und RAM platzieren beide Daten näher am Prozessor, um die Latenzzeit zu verkürzen. Der Cache-Speicher ist normalerweise Teil der CPU oder Teil eines Komplexes, der die CPU und einen angrenzenden Chipsatz beinhaltet, in dem der Speicher verwendet wird, um häufig abgerufene Daten und Anweisungen zu speichern.

Ein RAM-Cache hingegen beinhaltet in der Regel einen permanenten Speicher, welcher auf dem Motherboard eingebettet ist und Speichermodule, die in dedizierten Steckplätzen oder Attachment Locations installiert werden können. Der Mainboard-Bus ermöglicht den Zugriff auf diese Speicher.

Der CPU-Cache-Speicher ist 10 bis 100 mal schneller als der RAM-Speicher und benötigt nur wenige Nanosekunden, um auf die CPU-Anfrage zu reagieren. Der RAM-Cache ist jedoch in seiner Antwortzeit schneller als magnetische Medien, die I/Os mit Raten in Millisekunden liefern.

Cache vs. Puffer.

Ein Puffer ist ein gemeinsamer Bereich, in dem Hardwaregeräte oder Programmprozesse, die mit unterschiedlichen Geschwindigkeiten oder mit unterschiedlichen Prioritäten arbeiten, Daten zwischenspeichern können. Der Puffer ermöglicht es jedem Gerät oder Prozess, ohne Verzögerung durch die anderen zu arbeiten.

Sowohl Puffer als auch Cache bieten einen temporären Speicherplatz für Daten. Beide verwenden auch Algorithmen, um die Bewegung von Daten in und aus der Data Holding Area zu steuern.

Puffer und Cache unterscheiden sich jedoch in ihren Gründen für die vorübergehende Datenhaltung. Der Cache tut dies, um Prozesse und Operationen zu beschleunigen. Ein Puffer zielt darauf ab, Geräte und Prozesse getrennt voneinander arbeiten zu lassen.