Kategorien
Webentwicklung Wordpress

Cache

Ein Cache – ausgesprochen CASH – ist eine Hardware oder Software, die verwendet wird, um etwas, normalerweise Daten, temporär in einer Computerumgebung zu speichern.

Ein kleiner Teil des schnelleren und teureren Speichers wird verwendet, um die Leistung von Daten zu verbessern, auf die kürzlich oder häufig zugegriffen wurde. Diese Daten werden vorübergehend in einem schnell zugänglichen Speichermedium gespeichert, das lokal zum Cache-Client und getrennt vom Massenspeicher ist. Cache wird häufig von Cache-Clients verwendet, wie z.B. der CPU, Anwendungen, Webbrowsern oder Betriebssystemen (OSes).

Der Cache wird verwendet, weil der Hauptspeicher nicht mit den Anforderungen der Cache-Clients mithalten kann. Cache verkürzt die Datenzugriffszeiten, reduziert die Latenz und verbessert die Ein-/Ausgabe (I/O). Da fast alle Anwendungsworkloads von I/O-Operationen abhängen, verbessert Caching die Anwendungsleistung.

Wie Cache funktioniert
Wenn ein Cache-Client auf Daten zugreifen muss, überprüft er zuerst den Cache. Wenn die angeforderten Daten im Cache gefunden werden, nennt man das einen Cache-Treffer. Der Prozentsatz der Versuche, die zu einem Cache-Treffer führen, wird als Cache-Treffer-Rate oder Ratio bezeichnet.

Wenn die angeforderten Daten nicht im Cache gefunden werden – eine Situation, die als Cache Miss bekannt ist – werden sie aus dem Hauptspeicher geholt und in den Cache kopiert. Wie dies geschieht und welche Daten aus dem Cache entfernt werden, um Platz für die neuen Daten zu schaffen, hängt von dem Caching-Algorithmus oder den Richtlinien ab, die das System verwendet.

Cache-Speicher
Webbrowser, wie Internet Explorer, Firefox, Safari und Chrome, verwenden einen Browser-Cache, um die Leistung von häufig aufgerufenen Webseiten zu verbessern. Wenn du eine Webseite besuchst, werden die angeforderten Dateien in deinem Rechenspeicher im Cache des Browsers gespeichert.

Wenn du zurückklickst und zu einer vorherigen Seite zurückkehrst, kann dein Browser die meisten der benötigten Dateien aus dem Cache abrufen, anstatt sie alle vom Webserver neu zu senden. Dieser Ansatz wird Read Cache genannt. Der Browser kann Daten aus dem Browser-Cache viel schneller lesen, als er die Dateien von der Webseite neu einlesen kann.

Cache ist aus einer Reihe von Gründen wichtig.

Die Verwendung von Cache reduziert die Latenzzeit für aktive Daten. Dies führt zu einer höheren Leistung für ein System oder eine Anwendung.
Außerdem werden I/Os in den Cache umgeleitet, was I/O-Operationen auf externen Speicher reduziert und den SAN-Traffic verringert.
Daten können dauerhaft auf traditionellem Speicher oder externen Speicher-Arrays verbleiben. Dadurch wird die Konsistenz und Integrität der Daten mithilfe der vom Array bereitgestellten Funktionen, wie Snapshots oder Replikation, aufrechterhalten.
Flash wird nur für den Teil des Workloads verwendet, der von der geringeren Latenz profitiert. Dies führt zu einer kosteneffizienten Nutzung von teurerem Speicher.
Der Cache-Speicher ist entweder in der CPU enthalten oder in einem Chip auf der Systemplatine eingebettet. Bei neueren Maschinen ist die einzige Möglichkeit, den Cache-Speicher zu erhöhen, ein Upgrade des Systemboards und der CPU auf eine neuere Generation. Ältere Systemplatinen können leere Steckplätze haben, die genutzt werden können, um den Cache-Speicher zu erhöhen, aber die meisten neueren Systemplatinen haben diese Option nicht.

Cache Algorithmen
Anweisungen, wie der Cache verwaltet werden soll, werden von Cache-Algorithmen geliefert. Einige Beispiele für Cache-Algorithmen sind:

Least Frequently Used (LFU) hält fest, wie oft auf einen Eintrag zugegriffen wird. Der Eintrag mit der niedrigsten Anzahl wird zuerst entfernt.
Least Recently Used (LRU) platziert die Einträge, auf die kürzlich zugegriffen wurde, an den Anfang des Caches. Wenn der Cache sein Limit erreicht, werden die am wenigsten genutzten Einträge entfernt.
Most Recently Used (MRU) entfernt die Elemente, auf die zuletzt zugegriffen wurde, zuerst. Dieser Ansatz ist am besten geeignet, wenn ältere Elemente eher benutzt werden.
Cache Richtlinien
Der Write-Around-Cache schreibt Operationen in den Speicher und überspringt den Cache komplett. Dies verhindert, dass der Cache überflutet wird, wenn es große Mengen an Schreib-I/O gibt. Der Nachteil dieses Ansatzes ist, dass die Daten nicht in den Cache geschrieben werden, wenn sie nicht vom Speicher gelesen werden. Das bedeutet, dass der Lesevorgang relativ langsam ist, da die Daten nicht gecached wurden.

Der Write-Through-Cache schreibt Daten in den Cache und den Speicher. Der Vorteil hierbei ist, dass neu geschriebene Daten immer zwischengespeichert werden und somit schnell gelesen werden können. Der Nachteil ist, dass Schreibvorgänge nicht als vollständig angesehen werden, bis die Daten sowohl in den Cache als auch in den Primärspeicher geschrieben wurden. Dies kann dazu führen, dass Schreiboperationen durch das Caching mit Latenz verbunden sind.

Caching Vorteile
Write-Back-Cache ist ähnlich wie Write-Through-Caching, da alle Schreiboperationen in den Cache geleitet werden. Allerdings wird beim Write-Back-Cache der Schreibvorgang als abgeschlossen betrachtet, nachdem die Daten im Cache gespeichert wurden. Später werden die Daten aus dem Cache in den Speicher kopiert.

Mit diesem Ansatz haben sowohl Lese- als auch Schreiboperationen eine geringe Latenzzeit. Der Nachteil ist, dass die Daten, je nach Cache-Mechanismus, anfällig für Verluste sind, bis sie auf den Speicher übertragen werden.

Beliebte Anwendungen für Cache
Cache-Server: Ein spezieller Netzwerkserver oder Dienst, der als Server oder Webserver fungiert und Webseiten oder andere Internetinhalte lokal speichert. Ein Cache-Server wird manchmal auch als Proxy-Cache bezeichnet.

Festplatten-Cache: Hält kürzlich gelesene Daten und vielleicht angrenzende Datenbereiche, auf die wahrscheinlich bald zugegriffen werden wird. Einige Festplatten-Caches cachen Daten basierend darauf, wie häufig sie gelesen werden. Häufig gelesene Speicherblöcke werden als Hot Blocks bezeichnet und automatisch an den Cache gesendet.

Cache-Speicher: Speicher mit wahlfreiem Zugriff, oder RAM, auf den ein Mikroprozessor schneller zugreifen kann als auf den normalen RAM. Cache-Speicher ist oft direkt mit der CPU verbunden und wird verwendet, um Anweisungen zu cachen, auf die häufig zugegriffen wird. Ein RAM-Cache ist viel schneller als ein festplattenbasierter Cache, aber Cache-Speicher ist viel schneller als ein RAM-Cache, weil er so nah an der CPU ist.

Flash-Cache: Temporäre Speicherung von Daten auf NAND-Flash-Speicherchips – oft unter Verwendung von Solid-State-Drives (SSDs) – um Datenanforderungen schneller zu erfüllen, als es möglich wäre, wenn der Cache auf einer traditionellen Festplatte (HDD) oder einem Teil des Backup-Speichers liegen würde.

Martin: SSD als Cache nutzen
In diesem Segment seiner Storage Decisions Präsentation bespricht Dennis Martin von Demartek die Vorteile der Verwendung von SSD als Cache.
Abspielen
Stummschalten

Bild-im-Bild
Fullscreen
Dennis Martin, Präsident von Demartek, erklärt die Vorteile der Verwendung von SSDs als Cache.

Persistenter Cache: Wird als tatsächliche Speicherkapazität betrachtet, bei der die Daten im Falle eines Systemneustarts oder -absturzes nicht verloren gehen. Zum Schutz der Daten wird ein Batterie-Backup verwendet oder die Daten werden in einen batteriegepufferten dynamischen Arbeitsspeicher (DRAM) als zusätzlichen Schutz vor Datenverlust gespült.

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, ohne dass eine Verzögerung beim Lesen aus dem RAM entsteht.

Cache in der Speicherhierarchie
Cache ist hilfreich, weil die CPU eines Computers normalerweise eine viel höhere Taktrate hat als der Systembus, der sie mit dem RAM verbindet. Daher begrenzt die Taktgeschwindigkeit des Systembusses die Fähigkeit der CPU, Daten aus dem RAM zu lesen. Zusätzlich zu der langsamen Geschwindigkeit beim Lesen von Daten aus dem RAM, werden die gleichen Daten oft mehrfach gelesen, wenn die CPU ein Programm ausführt.

Mit 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 Geschwindigkeit des Systembusses und ist viel schneller als RAM. Die zugrundeliegende Prämisse des Caches ist, dass Daten, die einmal angefordert wurden, wahrscheinlich wieder angefordert werden.

CPU-Caches haben zwei oder mehr Schichten oder Ebenen. Es hat sich gezeigt, dass die Verwendung von zwei kleinen Caches die Leistung effektiver erhöht als ein großer Cache.

Die zuletzt angeforderten Daten sind typischerweise die Daten, die wieder benötigt werden. Daher überprüft die CPU zuerst den Level 1 (L1) Cache. Wenn die angeforderten Daten gefunden werden, prüft die CPU nicht den Level 2 (L2) Cache. Das spart Zeit, weil die CPU nicht den gesamten Cache-Speicher durchsuchen muss.

Der L1-Cache ist normalerweise auf dem Mikroprozessor-Chip eingebaut. L2-Cache ist auf der CPU eingebettet oder befindet sich auf einem separaten Chip oder Koprozessor und kann einen alternativen Hochgeschwindigkeits-Systembus haben, der den Cache und die CPU verbindet. Level 3 (L3) Cache ist ein spezieller Speicher, der entwickelt wurde, um die L1 und L2 Leistung zu verbessern. L4-Cache kann von der CPU und der Grafikverarbeitungseinheit (GPU) gemeinsam genutzt werden.

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

Der Translation Lookaside Buffer (TLB) ist ein Speichercache, der die letzten Übersetzungen von virtuellem Speicher in physikalische Adressen speichert und die Operationen im virtuellen Speicher beschleunigt.

Wenn ein Programm auf eine virtuelle Adresse verweist, ist der erste Ort, an dem es nachschaut, die CPU. Wenn die benötigte Speicheradresse nicht gefunden wird, sucht das System nach der physischen Adresse des Speichers, wobei es zuerst den TLB überprüft. Wenn die Adresse nicht in der TLB gefunden wird, wird der physische Speicher durchsucht.

Wenn virtuelle Speicheradressen übersetzt werden, werden sie der TLB hinzugefügt. Sie können schneller aus der TLB abgerufen werden, da sie sich auf dem Prozessor befindet, was die Latenzzeit reduziert. Die TLB kann auch die Vorteile der hohen Taktfrequenzen moderner CPUs ausnutzen.

TLBs unterstützen Multiuser-Computer mit einem User- und einem Supervisor-Modus, und sie verwenden Berechtigungen auf Lese- und Schreibbits, um eine gemeinsame Nutzung zu ermöglichen. Allerdings können Multitasking und Codefehler zu Leistungsproblemen führen. Diese Leistungsverschlechterung, bekannt als Cache Thrash, wird durch Computeraktivitäten verursacht, die aufgrund von übermäßiger Ressourcennutzung oder Konflikten mit dem Cache-System nicht vorankommen.

Cache vs. RAM
Cache-Speicher und RAM platzieren beide Daten näher am Prozessor, um die Antwortzeit-Latenz zu reduzieren. Cache-Speicher ist in der Regel Teil der CPU oder Teil eines Komplexes, der die CPU und einen angrenzenden Chipsatz umfasst, in dem Speicher für häufig abgerufene Daten und Anweisungen verwendet wird.

Ein RAM-Cache hingegen umfasst in der Regel permanenten Speicher, der auf dem Mainboard eingebettet ist, sowie Speichermodule, die in dedizierten Steckplätzen oder Aufsteckplätzen installiert werden können. Der Mainboard-Bus ermöglicht den Zugriff auf diese Speicher.

CPU-Cache-Speicher ist zwischen 10 und 100 Mal schneller als RAM und benötigt nur wenige Nanosekunden, um auf die CPU-Anfrage zu reagieren. RAM-Cache ist jedoch schneller in seiner Reaktionszeit als magnetische Medien, die I/O mit Raten im Millisekundenbereich liefern.

Cache vs. Puffer
Ein Puffer ist ein gemeinsam genutzter Bereich, in dem Hardwaregeräte oder Programmprozesse, die mit unterschiedlichen Geschwindigkeiten oder Prioritäten arbeiten, Daten temporär speichern können. Der Puffer ermöglicht es jedem Gerät oder Prozess zu arbeiten, ohne von den anderen verzögert zu werden.

Puffer und Cache bieten beide einen temporären Speicherplatz für Daten. Sie verwenden beide Algorithmen, um die Bewegung von Daten in und aus dem Datenhaltebereich zu kontrollieren.

Allerdings unterscheiden sich Puffer und Cache in ihren Gründen für das temporäre Halten von Daten. Der Cache tut dies, um Prozesse und Operationen zu beschleunigen. Ein Puffer zielt darauf ab, Geräte und Prozesse getrennt voneinander arbeiten zu lassen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

zwölf − acht =