register Level-1-Cache Level-2-Cache Hauptspeicher Festplattenspeicher Optische Speichermedien Cache: SRAM Unified Cache: Instruktionen und Daten gemischt SSD - Solid State Disk - Auf Basis der Flash-Technologie DRAM: Unterer Milisekundenbereich - Flip-Flop: SRAM - Kondensator: DRAM - Floating-Gate-Transistor: Flash-Speicher MOSFET: Metal Oxid Semiconductor Field Effect Transistor Source (S) Drain (D) Gate (G) Substrat bzw. Bulk (B) eines Transistors Bulk wird oft mit Source Kurz geschlossen Je nachdem ob n-Kanal-Transistor p-Kanal-Transistor Six-Device-Zelle Cache-Speicher Trefferrate Lokalität Zeitliche Lokalität - temporale Localität Örtliche Lokalität - spatiale Lokalität Zeitliche Lokalität - temporale Localität: Der Zugriff auf die gleichen Daten bzw. Programmcode wiederholt sich. Entsprechend steigt die Wahrscheinlichkeit, dass auf die Daten erneut zugegriffen wird Örtliche Lokalität: Elemente einer Matrix Normaler Hauptspeicher: Ortsaddressiert Cache-Speicher: Inhaltsaddressiert Ein Teil der Addresse wird verwendet: Tag Kann an beliebiger Stelle liegen: Vollassoziativer Cache-Speicher Teilweise vorgegebene Stelle: n-Wege-satzassoziativ Direkt abgebildet assoziativer Speicherzugriff Cache-Speicher: Einträge Eintrag: Daten, Tag, Zugriffs-Verwaltungsinformationen - Cache-Block - Cache-Zeilen (Cache Lines) 16 bis 128 Byte Tag: Identifizierung, Überprüfung ob enthalten Nicht enthalten: Cache-Zeile muss eingelagert werden Cache-Hierarchie-Ebene Verdrängung von Cache-Einträgen Cache-Blöcke zu Sätzen zusammengefasst m, Anzahl der Cache-Blöcke n, Cache-Blöcke pro Satz Cache-Speicher mit m/n Sätzen Vollassoziativer Cache m = n Direkt-abgebildent n = 1, genauso viele Sätze, wie Cache-Blöcke n-Wege-satzassoziativ: n zwischen 2 und 8. Maximal m/2 Organisation Anzahl der Sätze Assoziativität vollassoziativ 1 m = n direkt abgebildet m 1 n-Wege-satzassoziativ m/n n Cache-Flattern - Cache Thrashing Ständiges Verdrängen von Einträgen Ideal: vollassoziativ Direkt-Abgebildet: Deutlich größer Anfrage: Tag der Addresse passt zu Tag im Cache-Speicher Cache-Treffer (Cache Hit) Cache-Fehlzugriff (Cache Miss) Trefferrate - T - Hit Rate Trefferate T = 0.9, 90% können bedient werden Fehlzugriffe (Miss Rate) M = 1-T Konflikt Werden in den Cache-Speicher geladen, ist aber bereits belegt vollassoziativ Speicher-Addrese, zwei Teile: 1. Tag 2. Byte-Auswahl Das Tag: 27 Biot Die Byte-Auswahl 5 Bit Ist enthalten? Direkt auf Cache Speicher Ansonsten Datum aus dem Speicher holen 2^5 = 32 - Byte Zeile Tag-RAM Cache-Lines Tag-RAM Speichert sämmtliche Tags zu den entsprechenden Cache-Lines Zu jedem Tag werden 32 Byte gespeichert Cache-Line Cache-Block Satz Jede Cache-Zeile passt in genau einen Block Cache-Zeile wird zwischen Hauptspeicher und Cache-Speicher hin und her transferiert: Die Cache-Line sind also die Daten selber, während der Block, der Speicherplatz ist Es werden mehrere Speicherwörter hinterlegt: Üblich 16 bis 128 Byte Mindestens ein Byte wurde verwednet, es werden aber neben dem eigentlichen Datum auch weitere Daten eingelagert (Also, die gesamte Cache-Zeile) Tag: Zur Identifiziereung Zugriffs- und Verwaltungsinformationen: Cache-Zeile: gültig Verändert Gültigkeit: Valid-Bit - V-Bit Verändert: D-Bit: Dirty Bit Wenn auf ein Datum an einer bestimmten Addresse zugegriffen wird, erfolgt eine Abfrage an den Cache, ob ein Eintrag zu dieser Addresse vorliegt Sonst eingelagert Cache-Blöcke zu Sätzen zusammengefasst n: Anzahl der Cache-Blöcke (Also für den gesamten Cache) m: die Anzahl der Cache-Blöcke pro Satz: Cache-Speicher: m/n: Sätze Vollassoziativ: nur ein Satz der alle Blöcke enthält Direkt abgebildet: Jeder Satz enthält genau einen Block, n = 1 n-Wege-Assoziati Vollassoziativ: Keine Beschränkung bezüglich der Platzierung der Cache-Zeile. Also: Bei einem Block ist nicht festgelegt in welchem Block es steht. Habe ich viele Blöcke in einem Satz, kann es in jedem Block des Satzes stehen. Bei den Sätzen ist es festgelegt - ich vermute zum Beispiel mit Hash-Table. Eine Hash-Table legt ja fest, wo genau das Datum liegt. Diese Hash-Table bezieht sich aber auf den Satz. Gibt es dagegen mehrere Blöcke ist nicht festgelegt, in welchem Block. Was bringt vollassoziativ? Na es kann überall stehen. Das hat einen Vorteil: Wenn mehrere Daten kommen, kann ich sie an unterschiedlicher Stelle speichern. Wenn der Platz aber schon festgelegt ist, wie bei der Hash-Table, bedeutet das, wenn Daten an derselben Stelle gespeichert werden, müssen alte verdrängt werden Bei einem Zugriff auf den Cache-Speicher, wenn er vollassoziativ ist, müssen bei einem Zugriff, sämtliche Tags im Tag-RAM mit dem Tag der angefragten Addresse verglichen werden. Alle! Und zwar gleichzeitig. Das macht die Komplexität beim Vollassoziativen Cache aus - Für jeden Cache-Block wird ein Vergleicher benötigt. Aufwändig ist die vorgeschaltete Logik, um das Tag der Addresse an die große Anzahl von Vergleichern an zu schließen. Verdrängungsstrategiein