www.wikidata.de-de.nina.az
Der Titel dieses Artikels ist mehrdeutig Weitere Bedeutungen sind unter Cache Begriffsklarung aufgefuhrt Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Viel zu wenig Einzelnachweise aktuell 7 und davon 3 Worterbuch Definitionsbelege fur einen so langen Text Cache kaeʃ auch kaʃ 1 bezeichnet in der Informationstechnik einen schnellen Pufferspeicher der wiederholte Zugriffe auf ein langsames Hintergrundmedium oder aufwendige Neuberechnungen zu vermeiden hilft Daten die bereits einmal geladen oder generiert wurden verbleiben im Cache so dass sie bei spaterem Bedarf schneller aus diesem abgerufen werden konnen Auch konnen Daten die vermutlich bald benotigt werden vorab vom Hintergrundmedium abgerufen und vorerst im Cache bereitgestellt werden read ahead Caches konnen als Hardwarestruktur beispielsweise als Hauptspeicherchips oder Softwarestruktur beispielsweise als temporare Dateien oder reservierter Speicherplatz ausgebildet sein Inhaltsverzeichnis 1 Geschichte 2 Randbedingungen 3 Nutzen 4 Cachehierarchie 5 Strategien 5 1 Cachegrosse 5 2 Lokalitatsausnutzung 6 Organisation 6 1 Cache Line Cache Zeile 6 2 Blocknummer Tags statt Adress Tags 6 2 1 Beispiel 6 3 Block Satz Aufteilung der Tags 6 3 1 Erklarung anhand eines Beispiels 7 Cache Hits und Misses 8 Arbeitsweise 8 1 Verdrangungsstrategien 8 2 Schreibstrategie 8 3 Cache Flush 8 4 Sonstiges 8 4 1 Eintrage im Cache 8 4 2 Heisse und kalte Caches 9 Beispiele 9 1 Prozessor Cache 9 2 Laufwerks Cache 9 3 Software Caches 9 4 Suchmaschinen Cache 10 Weblinks 11 EinzelnachweiseGeschichte BearbeitenDas Konzept eines schnellen Zwischenspeichers wie es hier beschrieben ist wurde erstmals im April 1965 von M V Wilkes vorgestellt 2 Cache ist ein Lehnwort das in diesem Zusammenhang vermutlich erstmals bei IBM in Amerika aus dem Franzosischen entnommen wurde Zumindest wird es bereits 1973 in einem Aufsatz von K R Kaplan einem Mitarbeiter des Department of Computer Science am Livingston College der Rutgers University in New Jersey verwendet 3 Seinen Ursprung hat es im franzosischen cache das eigentlich die Bedeutung Versteck hat 4 5 Der Name verdeutlicht den Umstand dass dem Verwender in der Regel der Cache und seine Ersatzfunktion fur das angesprochene Hintergrundmedium verborgen bleibt Wer das Hintergrundmedium verwendet muss Grosse oder Funktionsweise des Caches prinzipiell nicht kennen denn der Cache wird nicht direkt angesprochen Der Verwender spricht das Hintergrundmedium an stattdessen antwortet jedoch der Cache genau auf die Art und Weise wie auch das Hintergrundmedium geantwortet also Daten geliefert hatte Wegen der Unsichtbarkeit dieser zwischengeschalteten Einheit spricht man auch von Transparenz Praktisch ist er eine gespiegelte Ressource die stellvertretend fur das Original sehr schnell reagiert Randbedingungen BearbeitenGreifen ausser dem den Cache verwendenden Gerat noch weitere auf das Hintergrundmedium zu so kann es zu Inkonsistenzen kommen Um auf ein identisches Datenabbild zugreifen zu konnen ist es notwendig vor dem Zugriff die Anderungen des Caches in das Hintergrundmedium zu ubernehmen Cachestrategien wie Write Through oder Write Back sind hier praktikabel Im Extremfall muss ein kompletter Cache Flush erfolgen Ausserdem muss ggf der Cache informiert werden dass sich Daten auf dem Hintergrundmedium geandert haben und sein Inhalt nicht mehr gultig ist Stellt die Cachelogik das nicht sicher so ergibt sich als Nachteil dass inzwischen im Hintergrundmedium oder im Rechenprogramm erfolgte Anderungen nicht erkannt werden Bei Verdacht auf Anderungen oder um sicherzugehen dass der aktuelle Stand berucksichtigt wird muss der Benutzer explizit eine Cache Aktualisierung veranlassen Nutzen BearbeitenDie Ziele beim Einsatz eines Caches sind eine Verringerung der Zugriffszeit und oder eine Verringerung der Anzahl der Zugriffe auf ein langsames Hintergrundmedium Das bedeutet insbesondere dass sich der Einsatz von Caches nur dort lohnt wo die Zugriffszeit auch signifikanten Einfluss auf die Gesamtleistung hat Wahrend das z B beim Prozessorcache der meisten skalaren Mikroprozessoren der Fall ist trifft es nicht auf Vektorrechner zu wo die Zugriffszeit eine untergeordnete Rolle spielt Deswegen wird dort ublicherweise auf Caches verzichtet weil diese keinen oder nur wenig Nutzen bringen Ein weiterer wichtiger Effekt beim Einsatz von Caches ist die Verringerung der notwendigen Datenubertragungsrate an die Anbindung des Hintergrundmediums siehe z B Speicherhierarchie das Hintergrundmedium kann also langsamer angebunden werden was z B geringere Kosten ergeben kann Weil oft der Grossteil der Anfragen vom Cache beantwortet werden kann Cache Hit s u sinkt die Anzahl der Zugriffe und damit die notwendige Datenubertragungsrate Zum Beispiel wurde ein moderner Mikroprozessor ohne Cache selbst mit sehr kleiner Zugriffszeit des Hauptspeichers dadurch ausgebremst dass nicht genugend Speicherbandbreite zur Verfugung steht weil durch den Wegfall des Caches die Anzahl der Zugriffe auf den Hauptspeicher und damit die Anforderung an die Speicherbandbreite stark zunehmen wurde Bei CPUs kann der Einsatz von Caches somit zum Verringern des Von Neumann Flaschenhalses der Von Neumann Architektur beitragen Die Ausfuhrungsgeschwindigkeit von Programmen kann dadurch im Mittel enorm gesteigert werden Ein Nachteil von Caches ist das schlecht vorhersagbare Zeitverhalten da die Ausfuhrungszeit eines Zugriffs aufgrund von Cache Misses nicht immer konstant ist Sind die Daten nicht im Cache muss der Zugreifende warten bis sie von dem langsamen Hintergrundmedium geladen wurden Bei Prozessoren geschieht das oft bei Zugriffen auf bisher noch nicht verwendete Daten oder beim Laden des nachsten Programmbefehls bei weiten Sprungen Cachehierarchie BearbeitenDa es technisch aufwandig und damit meist wirtschaftlich nicht sinnvoll ist einen Cache zu bauen der sowohl gross als auch schnell ist kann man mehrere Caches verwenden z B einen kleinen schnellen und einen deutlich grosseren jedoch etwas langsameren Cache der aber immer noch viel schneller ist als der zu cachende Hintergrundspeicher Damit kann man die konkurrierenden Ziele von geringer Zugriffszeit und grossem Cacheumfang gemeinsam realisieren Das ist wichtig fur die Hit Rate Existieren mehrere Caches so bilden diese eine Cachehierarchie die Teil der Speicherhierarchie ist Die einzelnen Caches werden nach ihrer Hierarchieebene engl level durchnummeriert also Level 1 bis Level n oder kurz L1 L2 usw Je niedriger die Nummer desto naher liegt der Cache am schnellen Benutzer die niedrigste Nummer bezeichnet daher den Cache mit der schnellsten Zugriffszeit dieser wird als erstes durchsucht Enthalt der L1 Cache die benotigten Daten nicht wird der meist etwas langsamere aber grossere L2 Cache durchsucht usw Das geschieht solange bis die Daten entweder in einer Cacheebene gefunden ein Cache Hit s u oder alle Caches ohne Erfolg durchsucht wurden ein Cache Miss s u In letzterem Fall muss auf den langsamen Hintergrundspeicher zugegriffen werden Tritt ein Cache Hit z B im L3 Cache auf so werden die angeforderten Daten dem Zugreifer geliefert und zugleich in den L1 Cache ubernommen dafur muss dort eine Cache Line weichen die in den L2 Cache absinkt Bei einem inklusiven Cache ist jeder Cache Level fur sich transparent d h eine Cache Line die im L1 Cache ist ist auch im L2 und L3 Cache vorhanden Wird die Cache Line aus dem L1 Cache verdrangt uberschrieben mit Daten einer anderen Adresse so muss sonst nichts unternommen werden sie ist im L2 Cache ja immer noch vorhanden sofern kein Write Back o a notwendig ist Bei einem exklusiven Cache ist eine Cache Line einer Adresse nur einmal in allen Cache Levels vorhanden Eine Cache Line zu Adresse A im L1 Cache ist nicht zusatzlich im L2 oder L3 Cache vorhanden Wird sie aus dem L1 Cache verdrangt so kann sie entweder ganzlich verworfen werden oder muss explizit in den L2 Cache kopiert werden Dort wird somit ebenfalls eine andere Cache Line verdrangt um Platz zu machen fur die absinkende Diese andere sinkt nun ihrerseits in den L3 Cache wo somit eine dritte Cache Line weichen muss Exklusive Cache Hierarchien erzeugen deutlich mehr Datenverkehr zwischen den Caches Dafur konnen so viele Cache Lines bereitgehalten werden wie die Summe von L1 L2 und L3 Cache Grosse wahrend beim inklusiven Cache nur die L3 Cache Grosse massgebend ist Im Hardwarebereich weisen vor allem moderne CPUs zwei oder drei Cacheebenen auf sonstige Gerate besitzen meist nur eine Cacheebene Im Softwarebereich wird meist nur eine Cacheebene benutzt eine prominente Ausnahme bilden Webbrowser die zwei Ebenen nutzen Arbeitsspeicher und Festplattenlaufwerk Strategien BearbeitenCachegrosse Bearbeiten Um den Nutzen des meist um mehrere Zehnerpotenzen kleineren Caches im Vergleich zum Hintergrundspeicher zu maximieren werden bei der Funktionsweise und Organisation eines Caches die Lokalitatseigenschaften der Zugriffsmuster ausgenutzt Beobachtet man beispielsweise die Aktivitat eines laufenden Programms auf einem Prozessor uber ein kurzes Zeitintervall so stellt man fest dass wiederholt auf wenige und immer dieselben kleinen Speicherbereiche z B Code innerhalb von Schleifen Steuervariablen lokale Variablen und Prozedurparameter zugegriffen wird Deshalb konnen bereits kleine Caches mit einigen Kibibytes sehr wirksam sein Verarbeitet ein Algorithmus jedoch standig neue Daten z B Streaming Daten kann ein Cache keine Beschleunigung durch Mehrfach Zugriffe bewirken allenfalls geringfugig durch read ahead Lokalitatsausnutzung Bearbeiten Da Caches schnell sein sollen verwendet man fur sie meist eine andere schnellere Speichertechnologie als fur den zu cachenden Speicher zum Beispiel SRAM gegenuber DRAM DRAM gegenuber Magnetscheibe usw Daher sind Caches meist wesentlich teurer in Bezug auf das Preis Bit Verhaltnis weshalb sie deutlich kleiner ausgelegt werden Das fuhrt dazu dass ein Cache nicht alle Daten gleichzeitig vorratig haben kann Um das Problem zu losen welche Daten im Cache gehalten werden sollen werden die Lokalitatseigenschaften der Zugriffe ausgenutzt Zeitliche temporale Lokalitat Da sich Zugriffe auf Daten wiederholen z B beim Abarbeiten einer Programmschleife ist es eher wahrscheinlich dass auf Daten auf die schon einmal zugegriffen wurde auch noch ein weiteres Mal zugegriffen wird Diese Daten sollten also bevorzugt im Cache gehalten werden Dadurch ergibt sich auch die Notwendigkeit alte Daten die lange nicht benutzt wurden aus dem Cache zu entfernen um Platz fur neuere zu machen Diesen Vorgang nennt man Verdrangung Raumliche spatiale Lokalitat Da Programmcode und daten nicht zufallig verstreut im Adressraum herumliegen sondern hintereinander und teilweise auch nur in bestimmten Adressbereichen angeordnet sind Code Daten Stack Segment Heap usw ist es nach einem Zugriff auf eine bestimmte Adresse wahrscheinlich dass auch auf eine nahegelegene Adresse sprich Betrag der Differenz der beiden Adressen sehr klein zugegriffen wird Bei der Abarbeitung eines Programms wird z B ein Befehl nach dem anderen abgearbeitet wobei diese nacheinander im Speicher liegen wenn kein Sprungbefehl dabei ist Viele Datenstrukturen wie Arrays liegen ebenfalls hintereinander im Speicher Wegen der raumlichen Lokalitat speichern Caches nicht einzelne Bytes sondern Datenblocke Cacheblock oder manchmal auch Cache Line genannt Zusatzlich erleichtert das die Implementierung und verringert Speicheroverhead da man nicht pro Datenbyte eine Adresse speichern muss sondern nur fur jeden Cacheblock Die Wahl der Blockgrosse ist ein wichtiger Designparameter fur einen Cache der die Leistung stark beeinflussen kann Organisation BearbeitenEin Cache besteht aus einer meist festen Anzahl Eintragen jeder Eintrag besteht aus Cache Line Die eigentlichen gecacheten Daten 64 bis 128 Byte bei aktuellen PC Prozessoren Address Tag hoherwerte Adressbits die sich nicht aus der Position in der Cache Line und nicht aus dem Mapping im Cache ergeben 6 Dirty Tags Welche Daten wurden modifiziert und mussen zuruckgeschrieben werden ausser Write Through Caches Valid Tags Welche Daten sind in dieser Cache Line gultig LRU Tags Welche Daten wurden am haufigsten oder vor kurzem benutzt oder auch nicht ausser Direct Mapped Cache Siehe auch unten Eintrage im Cache Cache Line Cache Zeile Bearbeiten Eine Cache Line ist die kleinste Verwaltungseinheit innerhalb des Caches von Prozessoren Es handelt sich dabei um eine Kopie eines Speicherbereichs Die Zugriffe vom Cache Speicher zur CPU oder zum Hauptspeicher erfolgen somit in einem einzigen blockweisen Transfer Die Grosse einer Cache Line betragt 16 Byte Intel 80486 32 Byte Pentium P5 bis Pentium III und 64 Byte Pentium 4 bis aktuelle Core i AMD ZEN Prozessoren im Jahr 2018 Die Minimallange ergibt sich aus der Speicher Busbreite multipliziert mit der Prefetch Tiefe des Hauptspeichers RAM und liegt heutzutage bei 64 Byte oder 128 Byte 7 Blocknummer Tags statt Adress Tags Bearbeiten Im Nachfolgenden wird davon ausgegangen dass Cache Lines immer nur von Adressen gelesen und geschrieben werden deren Adresse durch die Byte Lange der Cache Line teilbar ist Beispiel Bearbeiten Eine Cache Line sei 64 Bytes gross Es sei festgelegt dass Daten nur gelesen und geschrieben werden konnen mit Startadressen z B 0 64 128 192 256 Das Hintergrundmedium ist also aufgeteilt in Blocke die gerade so gross wie eine Cache Line sind Dann muss in den Adress Tags nicht mehr die gesamte Start Adresse der Daten gespeichert werden sondern nur noch der wievielte Datenblock auf dem Hintergrundmedium gecachet ist Durch die Wahl passender Zahlen Zweierpotenzen im Binarsystem lassen sich so die Tags platzsparender speichern das beschleunigt das Prufen ob eine angefragte Adresse im Cache enthalten ist Block Satz Aufteilung der Tags Bearbeiten nbsp Vollassoziativer CacheDie Blocke Cache Lines eines Caches konnen in so genannte Satze zusammengefasst werden Fur eine bestimmte Adresse ist dann immer nur einer der Satze zustandig Innerhalb eines Satzes bedienen alle Blocke also nur einen Teil aller vorhandenen Adressen Im Folgenden stehe die Variable m displaystyle m nbsp fur die Gesamtanzahl der Cacheblocke und n displaystyle n nbsp fur die Anzahl der Blocke pro Satz die so genannte Assoziativitat Dann besteht der Cache also aus m n displaystyle tfrac m n nbsp Satzen Organisation Anzahl der Satze AssoziativitatDM m displaystyle m nbsp 1FA 1 m displaystyle m nbsp n displaystyle n nbsp SA m n displaystyle tfrac m n nbsp n displaystyle n nbsp Je nachdem wie stark man diese Aufteilung vornimmt spricht man von einer der drei Cache Organisationsarten Direkt abgebildet engl direct mapped kurz DM n 1 displaystyle n 1 nbsp d h jeder Block reprasentiert einen eigenen Satz es gibt also so viele Satze wie Blocke Somit ist fur eine gegebene Adresse exakt ein Cacheblock zustandig Es existiert also eine direkte Abbildung zwischen Hintergrundspeicheradresse und Cacheblocken daher der Name Bei einer Anfrage an einen solchen Cache muss man nur einen einzelnen Cacheblock auslesen genauer gesagt den zugehorigen Tag uberprufen s u was den Hardwareaufwand fur die Tag Vergleicher minimiert Im Gegenzug ist die Effizienz des Caches eingeschrankt da moglicherweise freie Cacheblocke vorhanden sind die nicht genutzt werden siehe Conflict Miss unten Vollassoziativ engl fully associative kurz FA n m displaystyle n m nbsp d h es gibt nur einen Satz der alle Blocke beinhaltet Somit kann jede Adresse in jedem Cacheblock gecachet werden Bei einer Anfrage an den Cache ist es daher notwendig alle Cache Tags zu uberprufen Da Caches moglichst schnell sein mussen wird das parallel ausgefuhrt was den notwendigen Hardwareaufwand an Tag Vergleichern vergrossert Der Vorteil ist aber dass der Cache stets Daten aufnehmen kann solange noch ein beliebiger Cacheblock frei ist Satzassoziativ bzw mengenassoziativ engl set associative kurz SA n displaystyle n nbsp wird zwischen 2 und m 2 displaystyle tfrac m 2 nbsp gewahlt d h die Cacheblocke sind in Satzen zu je n displaystyle n nbsp Blocken angeordnet Hier werden also m n displaystyle tfrac m n nbsp direkt abgebildete Caches vollassoziativ also frei angewahlt Diesen Cache nennt man dann n fach satzassoziativ oder kurz n fach assoziativ Diese Cacheform stellt einen Kompromiss aus Hardwareaufwand und Effizienz des Caches dar Gegenuber einem DM Cache gewinnt man Effizienz gegenuber einem FA Cache spart man Hardware Die ersten beiden sind ein Spezialfall des satzassoziativen Caches Der direkt abgebildete und der vollassoziative Cache lassen sich somit vom satzassoziativen Cache ableiten n 1 fuhrt zu einem direkt abgebildeten Cache n m zu einem vollassoziativen Cache Erklarung anhand eines Beispiels Bearbeiten Die wesentlichen Grossen eines Caches sind Die Grosse der gespeicherten Daten d h Grosse des Caches hier im Beispiel 64 KiB Die Grosse des abzudeckenden Adressraumes hier im Beispiel 4 GiB Die Lange einer Cache Zeile hier im Beispiel 64 Byte Die Granularitat der Daten hier im Beispiel 1 Byte Vorhandensein von Dirty und Valid Tags Der Cache besteht unabhangig vom Aufbau aus 64 KiB 64 Byte 1024 Cache ZeilenVollassoziativer Cache 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Lange Adress Tag Byte PositionEs gibt eine Cache Gruppe die alle 1024 Cache Zeilen umfasst Jedes Hauptspeicher Datenwort kann in jeder beliebigen der 1024 Cache Zeilen der einen Cache Gruppe gespeichert werden Es sind 1024 Komparatoren erforderlich die log2 4 GiB 64 Byte log2 4 GiB log2 64 Byte bits 32 6 26 bits vergleichen mussen An jeder Cache Zeile hangen diese 26 Bit als Adress Tag Hardware Aufwand 1024 Komparatoren 1024 64 8 bit eigentlicher Cache 1024 26 bit Adress Tag 1024 64 bit Valid Tags 1024 64 bit Dirty Tags 1024 bit fur die LRU TagsDirect Mapped Cache Einfach oder nicht assoziativer Cache 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Lange Adress Tag benutzte Cache Gruppe Byte PositionEs gibt 1024 Cache Gruppen mit je einer Cache Zeile Jedes Hauptspeicher Datenwort kann nur in dieser zu seiner Adresse gehorenden Cache Zeile gespeichert werden Die Cache Gruppe ergibt sich aus den Bit 15 bis 6 der Adresse Es ist nur ein Komparator erforderlich der log2 4 GiB log2 64 KiB bits 16 bits vergleichen muss An jeder Cache Zeile hangen diese 16 Bit als Adress Tag Hardware Aufwand Ein Komparator 1024 64 8 bit eigentlicher Cache 1024 16 bit Adress Tag 1024 64 bit Valid Tags 1024 64 bit Dirty Tags Keine LRU TagsZweifach assoziativer Cache 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Lange Adress Tag benutzte Cache Gruppe Byte PositionEs gibt 512 Cache Gruppen mit je zwei Cache Zeilen Jedes Hauptspeicher Datenwort kann in einer der beiden zu seiner Adresse gehorenden Cache Zeilen gespeichert werden Die Cache Gruppe ergibt sich aus den Bit 14 bis 6 der Adresse Es sind zwei Komparatoren erforderlich die log2 4 GiB log2 64 KiB 1 bits 17 bits vergleichen mussen An jeder Cache Zeile hangen diese 17 Bit als Adress Tag Hardware Aufwand Zwei Komparatoren 1024 64 8 bit eigentlicher Cache 1024 17 bit Adress Tag 1024 64 bit Valid Tags 1024 64 bit Dirty Tags 1024 1 bit LRU Tags2 n fach assoziativer Cache 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Lange Adress Tag benutzte Cache Gruppe Byte PositionEs gibt 1024 2 n Cache Gruppen mit je 2 n Cache Zeilen Jedes Hauptspeicher Datenwort kann in einer der 2 n zu seiner Adresse gehorenden Cache Zeilen gespeichert werden Die Cache Gruppe ergibt sich aus den Bit 15 n 1 bis 6 der Adresse Es sind 2 n Komparatoren erforderlich die log2 4 GiB log2 64 KiB n bits 16 n 1 bits vergleichen mussen An jeder Cache Zeile hangen diese 16 n 1 Bit als Adress Tag Hardware Aufwand 2 n Komparatoren 1024 64 8 bit eigentlicher Cache 1024 16 n 1 bit Adress Tag 1024 64 bit Valid Tags 1024 64 bit Dirty Tags 1024 mehrere bit LRU TagsCache Hits und Misses BearbeitenDen Vorgang dass die Daten einer Anfrage an einen Cache in selbigem vorratig sind bezeichnet man als Cache Hit dt Cachetreffer den umgekehrten Fall als Cache Miss dt Cache Verfehlen Um quantitative Masszahlen fur die Bewertung der Effizienz eines Caches zu erhalten definiert man zwei Grossen Hit Rate Die Anzahl der Anfragen bei denen ein Cache Hit auftrat geteilt durch die Anzahl der insgesamt an diesen Cache gestellten Anfragen Wie man aus der Definition leicht sehen kann liegt diese Grosse zwischen Null und Eins Eine Hit Rate von z B 0 7 70 bedeutet dass bei 70 aller Anfragen an den Cache dieser die Daten sofort liefern konnte und bei 30 aller Anfragen passen musste Miss Rate Diese ist analog zur Hit Rate als die Anzahl der Anfragen definiert bei denen die Daten nicht im Cache vorhanden waren geteilt durch die Anzahl der gesamten Anfragen Es gilt Miss Rate 1 Hit Rate Drei Arten von Cache Misses werden unterschieden Capacity Der Cache ist zu klein Daten waren im Cache vorratig wurden aber wieder aus ihm entfernt Erfolgt dann ein erneuter Zugriff auf diese Adresse so wird dieser Miss als Capacity Miss bezeichnet Abhilfe schafft nur ein grosserer Cache Conflict Durch die satzassoziative Organisation gilt somit auch fur DM Caches ist es moglich dass in einem Satz nicht mehr genug Platz ist wahrend in anderen Satzen noch freie Cacheblocke vorhanden sind Dann muss in dem uberfullten Satz ein Block entfernt werden obwohl der Cache eigentlich noch Platz hat Wird auf diesen entfernten Block erneut zugegriffen so bezeichnet man diesen Cache Miss als Conflict Miss Abhilfe schafft eine Erhohung der Cacheblocks pro Satz also eine Erhohung der Assoziativitat Bei vollassoziativen Caches welche nur einen Satz haben gibt es prinzipbedingt keine Conflict Misses Compulsory Als Compulsory Miss oder auch Cold Start Miss bezeichnet man den erstmaligen Zugriff auf eine Adresse deren Daten sich noch nicht im Cache befinden und zugleich hat der Cache noch freien Platz Der Unterschied zu den anderen beides Misses ist der dass hier keine Verdrangung stattfindet sondern ein Block zum ersten Mal neu beschrieben wird Er ist nicht oder nur schwer zu verhindern Moderne Prozessoren besitzen Prefetcher Einheiten die selbstandig spekulativ Daten in die Caches laden wenn dort noch Platz ist Damit soll die Anzahl der Compulsory Misses verringert werden Diese drei Typen bezeichnet man auch kurz als Die drei C In Multiprozessorsystemen kann beim Einsatz eines Cache Koharenz Protokolls vom Typ Write Invalidate noch ein viertes C hinzukommen namlich ein Coherency Miss Wenn durch das Schreiben eines Prozessors in einen Cacheblock der gleiche Block im Cache eines zweiten Prozessors hinausgeworfen werden muss so fuhrt der Zugriff des zweiten Prozessors auf eine Adresse die durch diesen entfernten Cacheblock abgedeckt war zu einem Coherency Miss Arbeitsweise BearbeitenBei der Verwaltung des Caches ist es sinnvoll immer nur die Blocke im Cache zu halten auf die auch haufig zugegriffen wird Zu diesem Zweck gibt es verschiedene Ersetzungsstrategien Eine haufig verwendete Variante ist dabei die LRU Strategie engl least recently used bei welcher immer der Block ausgetauscht wird auf den am langsten nicht mehr zugegriffen wurde Moderne Prozessoren z B der AMD Athlon implementieren meist eine Pseudo LRU Ersetzungsstrategie die fast wie echtes LRU arbeitet aber leichter in Hardware zu implementieren ist Verdrangungsstrategien Bearbeiten FIFO First In First Out Der jeweils alteste Eintrag wird verdrangt LRU Least Recently Used Der Eintrag auf den am langsten nicht zugegriffen wurde wird verdrangt LFU Least Frequently Used Der am seltensten gelesene Eintrag wird verdrangt Dabei werden jedoch keine vollstandigen Zeitstempel gespeichert die eine relativ lange Integer Zahl erfordern wurden Vielmehr werden wenige Bits verwendet zwei sind haufig aber auch nur eines ist moglich um einen Cacheeintrag als mehr oder weniger haufig benutzt zu markieren Die Aktualisierung der Bits erfolgt parallel zu einer Verdrangung Random Ein zufalliger Eintrag wird verdrangt CLOCK Daten werden im Cache in der Reihenfolge des Zugriffs abgelegt Wenn auf ein Datum zugegriffen wird wird fur diesen Cacheblock ein Bit gesetzt Bei einem Miss wird von vorne nach hinten nach dem ersten Datum ohne gesetztes Bit gesucht dieses wird ersetzt Bei allen dabei durchgegangenen Daten wird das Bit geloscht Es wird ebenfalls markiert welches Datum zuletzt in den Cache geladen wurde Von dort beginnt die Suche nach einem Datum welches ersetzt werden kann Optimal Das Verfahren von Laszlo Belady bei dem derjenige Speicherbereich verdrangt wird auf den am langsten nicht zugegriffen werden wird ist optimal Es ist allerdings nur dann anwendbar wenn der komplette Programmablauf im Voraus bekannt ist d h er ist ein so genanntes Offline Verfahren im Gegensatz zu FIFO und LRU die Online Verfahren sind Der Programmablauf ist aber fast nie im Voraus bekannt deshalb kann das optimale Verfahren in der Praxis nicht eingesetzt werden Allerdings kann der optimale Algorithmus als Vergleich fur andere Verfahren dienen Schreibstrategie Bearbeiten Bei einem Schreibzugriff auf einen Block der im Cache vorhanden ist gibt es prinzipiell zwei Moglichkeiten Zuruckkopieren write back Beim Schreiben wird der zu schreibende Block nicht sofort in der nachsthoheren Speicherebene abgelegt sondern zunachst im Cache Dabei entsteht eine Inkonsistenz zwischen Cache und zu cachendem Speicher Letzterer enthalt somit veraltete Information Erst wenn das Wort aus dem Cache verdrangt wird wird es auch in die nachsthohere Speicherebene geschrieben Dazu bekommt jeder Cacheblock ein sogenanntes Dirty Bit das anzeigt ob der Block beim Ersetzen zuruckkopiert werden muss Das fuhrt bei Speicherzugriff durch andere Prozessoren oder DMA Gerate zu Problemen weil diese veraltete Informationen lesen wurden Abhilfe schaffen hier Cache Koharenz Protokolle wie z B MESI fur UMA Systeme Durchgangiges Schreiben write through Der zu schreibende Block wird sofort in der nachsthoheren Speicherebene abgelegt Damit ist die Konsistenz gesichert Damit der Prozessor nicht jedes Mal warten muss bis der Block in der nachsthoheren Speicherebene die ja langsamer als der Cache ist abgelegt ist benutzt man einen Pufferspeicher write buffer Wenn dieser voll lauft muss der Prozessor jedoch anhalten und warten Analog zu Obigem gibt es bei einem Schreibzugriff auf einen Block der nicht im Cache vorhanden ist prinzipiell ebenso zwei Moglichkeiten write allocate Wie bei einem normalen Cache Miss wird der Block aus der nachsthoheren Speicherebene geholt Die entsprechenden Bytes die durch den Schreibzugriff geandert wurden werden danach im gerade frisch eingetroffenen Block uberschrieben non write allocate Es wird am Cache vorbei in die nachsthohere Speicherebene geschrieben ohne dass der dazugehorige Block in den Cache geladen wird Das kann fur manche Anwendungen Vorteile bringen bei denen viele geschriebene Daten nie wieder gelesen werden Durch die Verwendung von non write allocate verhindert man das Verdrangen von anderen moglicherweise wichtigen Blocken und reduziert somit die Miss Rate Einige Befehlssatze enthalten Befehle die es dem Programmierer ermoglichen explizit anzugeben ob zu schreibende Daten am Cache vorbeizuschreiben sind Normalerweise wird entweder die Kombination write back mit write allocate oder write through mit non write allocate verwendet Die erste Kombination hat den Vorteil dass aufeinander folgende Schreibzugriffe auf denselben Block Lokalitatsprinzip komplett im Cache abgewickelt werden bis auf den ersten Miss Dies gibt im zweiten Fall keinen Vorteil da sowieso jeder Schreibzugriff zum Hauptspeicher muss weshalb die Kombination write through mit write allocate eher unublich ist 8 Cache Flush Bearbeiten Ein Cache Flush Pufferspeicher Leerung bewirkt das komplette Zuruckschreiben des Cacheinhaltes in den Hintergrundspeicher Dabei bleibt der Cacheinhalt meist unangetastet Ein solches Vorgehen ist notig um die Konsistenz zwischen Cache und Hintergrundspeicher wiederherzustellen Notwendig ist das zum Beispiel immer dann wenn Daten aus dem Hauptspeicher von externen Geraten benotigt werden unter anderem bei Multiprozessor Kommunikation oder bei der Ubergabe eines als Ausgabepuffer benutzten Teils des Hauptspeichers an den DMA Controller Sonstiges Bearbeiten Eintrage im Cache Bearbeiten Fur jeden Cacheblock wird im Cache folgendes gespeichert Die eigentlichen Daten Der Tag ein Teil der Adresse Mehrere Statusbits wie modified bzw dirtyGibt an ob dieser Cacheblock geandert wurde nur beim Write Back Cache diverse Statusbits je nach Cache Koharenz Protokoll z B je ein Bit fur ownerAquivalent zu modified amp shared Gibt an dass der Block geandert wurde und in anderen Caches vorhanden ist Der Owner ist dafur verantwortlich den Hauptspeicher zu aktualisieren wenn er den Block aus seinem Cache entfernt Derjenige Prozessor der zuletzt auf den Cacheblock schreibt wird neuer Owner dd exclusiveGibt an dass der Block nicht geandert wurde und in keinem anderen Cache vorhanden ist dd sharedHat teilweise unterschiedliche Bedeutungen Bei MESI gibt das an dass der Block nicht geandert wurde aber auch in Caches anderer Prozessoren vorhanden ist dort ebenso unverandert Bei MOESI bedeutet es nur dass der Block in anderen Prozessorcaches vorhanden ist Hier ist auch erlaubt dass der Block verandert wurde also inkonsistent zum Hauptspeicher ist In diesem Fall gibt es aber einen Owner s o der fur das Aktualisieren des Hauptspeichers verantwortlich ist dd invalidZeigt an ob der Block frei also mit ungultigen Daten befullt oder belegt also mit gultigen Daten befullt ist dd dd Heisse und kalte Caches Bearbeiten Ein Cache ist heiss wenn er optimal arbeitet also gefullt ist und nur wenige Cache Misses hat ist das nicht der Fall gilt der Cache als kalt Nach Inbetriebnahme ist ein Cache zunachst kalt da er noch keine Daten enthalt und haufig zeitraubend Daten nachladen muss und warmt sich dann zunehmend auf da die zwischengelagerten Daten immer mehr den angeforderten entsprechen und weniger Nachladen erforderlich ist Im Idealzustand werden Datenzugriffe fast ausschliesslich aus dem Cache bedient und das Nachladen kann vernachlassigt werden Beispiele BearbeitenProzessor Cache Bearbeiten Siehe auch Befehlscache Bei CPUs kann der Cache direkt im Prozessor integriert oder extern auf der Hauptplatine fruher weiter verbreitet heute eher untypisch platziert sein Oft gibt es mehrere Ebenen Levels die aufeinander aufbauen Kleinere Level sind dabei typischerweise schneller haben aber aus Kostengrunden eine geringere Grosse Je nach Ort des Caches arbeitet dieser mit unterschiedlichen Taktfrequenzen Der L1 Level 1 am nachsten an der CPU ist fast immer direkt im Prozessor d h auf dem Die integriert und arbeitet daher mit dem vollen Prozessortakt also u U mehreren Gigahertz Ein externer Cache hingegen wird oft nur mit einigen hundert Megahertz getaktet Aktuelle Prozessoren z B AMD Ryzen Intel Core i Serie IBM Power 9 besitzen uberwiegend drei Cache Level L1 L2 und L3 Gangige Grossen fur L1 Caches sind 4 bis 320 KiB pro Prozessorkern meist gibt es einen fur Daten und einen fur Befehle der L2 Cache ist 64 KiB bis 32768 KiB 9 meist ebenfalls pro Kern der L3 Cache 2 bis 768 MiB 10 fur alle Kerne gemeinsam Prozessorcache als Extra Chip auf dem Mainboard wird heute nicht mehr gebaut als Extra Die im selben Chip Gehause siehe Multi Chip Package nur noch selten In jedem Fall ist eine Protokollierung erforderlich um die Koharenz der Daten z B zwischen Caches und Hauptspeicher sicherzustellen Dazu dienen Flags die einen Speicherbereich typischerweise eine ganze line von 64 Byte als dirty also geandert markieren s o bei Schreibstrategie Das Problem verscharft sich bei mehreren Cache Levels und mehreren Prozessoren oder Prozessorkernen Die Cachekonsistenz ist sowohl bei mehreren aktiven Geraten auf dem Datenbus als auch bei mehreren zusammengeschalteten Prozessoren Multiprozessorsysteme zu beachten Bei Mehrprozessorsystemen unterscheidet man u a zwischen SIMD und MIMD Strukturen Single Multiple Instruction Multiple Data Bei MIMD Systemen ist die Wahrscheinlichkeit hoch dass verschiedene Prozessoren auf verschiedene Speicherbereiche zugreifen bei SIMD dagegen kleiner Danach lasst sich die Cache Konfiguration einstellen Moderne Prozessoren haben getrennte L1 Caches fur Programme und Daten Lese und Schreibcache teilweise ist das auch noch beim L2 der Fall Montecito Man spricht hier von einer Harvard Cachearchitektur Das hat den Vorteil dass man fur die unterschiedlichen Zugriffsmuster fur das Laden von Programmcode und Daten unterschiedliche Cachedesigns verwenden kann Ausserdem kann man bei getrennten Caches diese raumlich besser zu den jeweiligen Einheiten auf dem Prozessor Die platzieren und damit die kritischen Pfade beim Prozessorlayout verkurzen Des Weiteren konnen Instruktionen und Daten gleichzeitig gelesen geschrieben werden wodurch der Von Neumann Flaschenhals weiter verringert werden kann Ein Nachteil ist dass selbstmodifizierender Code gesondert behandelt werden muss was seine Ausfuhrung stark verlangsamt Allerdings wird diese Technik aus Sicherheitsgrunden und weil sie oft schwer verstandlich schwer prufbar und daher nur schlecht zu warten ist heute ohnehin nur noch sehr selten verwendet Laufwerks Cache Bearbeiten Bei Festplatten befindet sich der Cache auf der Steuerplatine siehe Festplattencache oder einer separaten Platine dem Festplattenkontroller Die Grosse betragt bei aktuellen Festplatten je nach vom Hersteller vorgesehenen Einsatzzweck der Festplatte zwischen 8 und 64 MiB Stand 2012 Die meisten optischen Laufwerke besitzen Caches um die oft im dreistelligen Millisekundenbereich liegenden Zugriffszeiten und Schwankungen im Datenstrom z B durch Synchronisierungsprobleme aufzufangen Software Caches Bearbeiten Caches konnen auch bei Software genutzt werden dabei ist dasselbe Prinzip wie bei der Hardwareimplementierung gemeint Daten werden fur einen schnelleren Zugriff auf ein schnelleres Medium zwischengespeichert Beispiele Festplattencache vom Betriebssystem verwaltet Festplatte HauptspeicherAnwendungsdaten Memoisation Berechnung HauptspeicherBrowser Cache Netz Festplatte Arbeitsspeicher Webserver Datenbank HTML Datei HTTP Caching Software Caches welche die Festplatte als schnelleres Medium verwenden werden meist in Form von temporaren Dateien angelegt Man spricht auch von Caching wenn ein Betriebssystem gewisse Ressourcen wie z B Funktionsbibliotheken oder Schriftarten vorerst im Arbeitsspeicher belasst obwohl sie nach Ende ihrer Benutzung nicht mehr gebraucht werden Solange kein Speichermangel herrscht konnen sie im Arbeitsspeicher verbleiben um dann ohne Nachladen von der Festplatte sofort zur Verfugung zu stehen wenn sie wieder gebraucht werden Wenn allerdings die Speicherverwaltung des Betriebssystems einen Speichermangel feststellt werden diese Ressourcen als erste geloscht Suchmaschinen Cache Bearbeiten Der Suchmaschinen Cache ist der Lesecache einer Suchmaschine Eine Suchmaschine besitzt drei Kernkomponenten Ein Webcrawler durchsucht das WWW nach neuen oder veranderten Webseiten und ladt sie zusatzlich in den Suchmaschinen Cache uber den regelmassig verschiedene Indizes erstellt werden Uber diese Indizes sucht ein Suchalgorithmus der gemass einer Benutzeranfrage passende Webseiten finden soll Die Inhalte aller Webseiten die die Suchmaschine als Basisdaten fur Benutzeranfragen berucksichtigt werden im Suchmaschinen Cache zwischengespeichert Die Server einer Suchmaschine konnen nicht fur jede Abfrage jede Webseite in Echtzeit auf die aktuellsten Inhalte durchsuchen stattdessen wird in einem Index uber dem Cache gesucht Im Allgemeinen kann ein Webseiten Betreiber Anderungen seiner Webseiten an die Suchmaschine melden dann fragt der Webcrawler die Seite baldmoglichst erneut ab ansonsten pruft der Webcrawler jede Webseite in regelmassigen Abstanden die Cache Inhalte konnen also veraltet sein Eine Webseite kann dem Crawler einen Hinweis geben wie haufig sie sich im Allgemeinen andert Suchmaschinen gehen mit dieser Information mitunter verschieden um Die in Deutschland verbreitetste Suchmaschine ist Google deren Cache Indizier und Suchstrategien wird daher besonders hohes Interesse zuteil Die Webcrawler Frequenz mit der Webseiten gepruft werden liegt bei Google bei den meisten Webseiten zwischen einer und vier Wochen Inhalt wird in der Regel alle 7 Tage aktualisiert 11 Gemeldete Webseiten untersucht der sogenannte Googlebot Weblinks Bearbeiten nbsp Wiktionary Cache Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen Artikel uber CPU Cache bei arstechnica com englisch Cache und Hauptspeicher Online Seminar Kurzuberblick Cache im Elektronik KompendiumEinzelnachweise Bearbeiten Cache auf duden de M V Wilkes Slave Memories and Dynamic Storage Allocation In Institute of Electrical and Electronics Engineers Hrsg IEEE Transactions on Electronic Computers EC 14 April 1965 ISSN 0367 7508 doi 10 1109 PGEC 1965 264263 englisch K R Kaplan R O Winder Cache based Computer Systems In Institute of Electrical and Electronics Engineers Hrsg Computer Band 6 Nr 3 Marz 1973 S 30 36 doi 10 1109 C M 1973 217037 englisch Worterbuch Franzosisch Ubersetzung cache Nicht mehr online verfugbar Editions Larousse archiviert vom Original am 28 Januar 2013 abgerufen am 20 November 2018 cache In Oxford Learner s Dictionaries University of Oxford abgerufen am 9 September 2023 englisch Ein 16 fach assoziativer 16 MByte Cache bei unterstutzten 128 GByte muss hier z B die Adressbits 37 bis 20 insgesamt 18 bit speichern 80486 16 Byte ab Pentium 32 Byte ab Pentium 4 64 Byte Apple M1 64 und 128 Byte John Hennessy David Patterson Computer Architecture A Quantitative Approach 4th Edition Morgan Kaufmann Publishers ISBN 978 0 12 370490 0 engl S C 11 C 12 IBMs Telum Architektur 128 KB L1 Daten 128 KByte L1 Befehle 32 MByte L2 jeweils pro Kern AMD Epyc 7773X 7573X 7473X und 7373X 768 MByte L3 Ein kurzer Einblick in die Funktionalitat des Google Caches Memento vom 28 Juli 2017 im Internet Archive Mit Suchfunktion Normdaten Sachbegriff GND 4362843 6 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Cache amp oldid 237163358