BsRa - 06: CPU-Cache Platzierungs- und Ersetzungs-Regeln, k-Wege-Assoziativ, Direkt Abgebildet, .. chriss code support https://www.youtube.com/watch?v=LqrQsmrB8vw Transkript (automatisch erstellt) 0:00 der cpu-cache ist ein temporärer Speicher zwischen dem Prozessor und dem Hauptspeicher die Kapazität eines solchen Cashs ist die gesamte Menge an 0:09 Daten die aus dem Hauptspeicher in den Cash geladen werden können beim Laden von Daten in den Cash wird zwischen 3 unterschiedlichen platzierungsverfahren 0:19 Unterschieden dem direkten vollständig assoziativen und z-assoziativen abbilden bei allen drei Strategien liegen Speicherblöcke im Cash die einzelnen 0:30 Zellen des speicherblocks werden Wörter genannt in diesem Beispiel besitzt jeder Speicherblock vier Wörter und wird innerhalb des speicherblocks daher mit 0:40 zwei Bits identifiziert auch als word of Set bezeichnet jedes Wort hat eine Länge von 8 Bit oder zwei hexadezimalzeichen in diesem Beispiel ist die 0:49 Gesamtkapazität 16 mal 8 Bit und jede Zeile besitzt 4 mal 8 Bit die zweite Koordinate ist der Linien auf set 1:00 neben diesen beiden Koordinaten besitzt jede Speicheradresse einen Tag dieser Tag identifiziert einen Speicherblock aus dem RAM und macht zusammen mit dem 1:10 Linien und dem Word Offset die gesamte Speicheradresse aus alle Speicheradressen mit derselben Linien und word-id teilen sich dieselbe 1:19 cash-zeile in einem direkt abgebildeten Cache beim Laden eines Wortes in den CPU wird im Cash geprüft ob der benötigte Speicheradresse bereits dort gespeichert 1:30 ist das vorfinden ist ein Cash shit und sollte an der korrespondierenden und dann muss die benötigte Zeile aus dem Hauptspeicher geladen werden 1:45 benötigt der CPU die folgende Speicheradresse wird entsprechend die cash-zeile auf dieses Tag überprüft üblicherweise wird der Linien und word 1:55 of Z an den höchsten oder niedrigsten Stellen der Adresse festgelegt in diesem Beispiel sind die niedrigsten zwei Bits die word-id und die nächsten beiden Bits 2:03 die linien-id die restlichen Bits sind das Tag beim anfordern dieser Speicheradresse würde die Zeile 01 überprüft werden ob sich dort dieser 2:13 Speicherblock mit dem Tag 5 B2 befindet und ist das nicht der Fall wird dieser eben geladen und der alte Speicherblock fliegt raus bei einem direkt 2:24 abgebildeten Cash gibt es daher auch keine weiteren ersetzungsstrategien denn jeder Speicheradresse ist genau einer Zeile zugeteilt 2:32 anders verhält sich das bei den zwei weiteren platzierungsstrategien die Set assoziative und die vollständig assoziative Cash 2:41 speicherplatzierungsstrategie dieser erlauben das Verwenden von der setzungsstrategien da jede Zeile aus dem Hauptspeicher mehreren Cash Zahlen 2:49 zugeordnet werden kann der Set assoziative Cache ist üblicherweise in zwei hoch irgendwas viele Zeilen per Set aufgeteilt also zwei vier acht oder mehr 3:00 zahlen perfekt oder per Menge in diesem Beispiel besitzt jedes Set zwei Zeilen ein Speicherblock wird durch den Set Index und das Deck identifiziert 3:12 wenn der CPU einen Speicherblock anfordert der sich nicht im Cash befindet muss eine der beiden Zeilen überschrieben werden dafür gibt es eben 3:21 verschiedene Strategien eine Möglichkeit ist das zufällige Auswählen einer der beiden Zeilen klingt erstmal nicht besonders elegant jedoch 3:29 ist es sehr einfach und es wird kein weiteres Bild als Fleck benötigt oder weitere Daten wir wählen einfach einen zufällig aus bei vielen anderen 3:38 Strategien werden weitere Bits für Flex benötigt bei der Warteschlangen oder der Stack Strategie oder eben first in first out last in first out 3:51 bei diesen muss irgendwie ja festgestellt werden welche Zeile eliminiere ich und das kann anhand einer Fleck geschehen bei einem zweiwege Cash 4:00 würde die dann auch einfach Alter ihren wenn eine Zeile überschrieben wird es gibt viele weitere Strategien hier die Auflistung bei Wikipedia 4:09 Cash können linienhaft als Diagramm abgebildet werden jedoch wird weiterhin von Cash Zeilen gesprochen dann sind in jeder Zeile mehrere cashallen wie rechts 4:20 zu sehen ist bei dieser Aufgabe steht in der Angabe dass der gesamte Cash eine Kapazität von 128 Kilobyte besitzt nochmal dies 4:32 besteht sich stets nur auf die gespeicherten Wörter also die Summe aller cashzahlen ohne Text oder Flex jede cash-zeile ist 16 Byte groß es 4:42 handelt sich um einen zweiwege assoziativen Cache somit kann jedes Set 32 weit speichern eben zwei Cash Zeilen zur Ermittlung der Anzahl der 4:52 cash-zahlen wird die gesamte Kapazität durch die Cash zeilengröße dividiert am schnellsten ist das zu lösen indem die Angaben in Zweierpotenzen übersetzt 5:01 werden Kilobyte entspricht 2 hoch 10 und die Kapazität von 128 Kilobyte ist somit 2 hoch 17 5:11 diese Gesamtkapazität 2 hoch 17 geteilt durch 2 hoch 4 weit Cash Cash zeilengröße ergibt die Gesamtanzahl von 2 hoch 13 cash-zahlen bei einem zweiwege 5:23 assoziativen Cash wäre es halb so viele Sets wie cash-zahlen in einem vierwege Cash werden es ein Viertel der gesamten cash-zahlen Anzahl da jedes Set 4 Cash 5:36 Zeilen enthält und so weiter zuletzt und ganz fix der vollständig assoziative Cash bei dem jeder Speicherblock jede Zeile besetzen kann 5:46 da es nur ein einziges Set für alle Tags gibt die Speicheradressen bei vollständig assoziativen Caches sind in zwei Teile 5:56 aufgeteilt der Tag und der world of Set hier stehen dann die vorher kurz angesprochenen ersetzungsstrategien im Vordergrund da jede Speicheradresse sich 6:07 in jeder cashzeile befinden kann müssen alle überprüft werden dabei handelt es sich nicht um eine lahme lineare suche sondern dieser fordert viele busähnliche 6:18 Verbindungen daher sind solche Cashs teuer in Bezug auf die Hardware und Elektrizität und die hitzeproduktion