/media/sda-magnetic/david/Extern-Magnetic-2022-06-29/Extern01/Dokumente-11-2021-07-05/informatik-math/mips/speicher.txt


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