Speicherarchitekturen
This commit is contained in:
parent
db2fdf9855
commit
107e9537e8
BIN
Assets/RA2_2-wege-cache.png
Normal file
BIN
Assets/RA2_2-wege-cache.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 65 KiB |
BIN
Assets/RA2_Adresspipelining.png
Normal file
BIN
Assets/RA2_Adresspipelining.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
BIN
Assets/RA2_Cachehit.png
Normal file
BIN
Assets/RA2_Cachehit.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
BIN
Assets/RA2_Interleaving.png
Normal file
BIN
Assets/RA2_Interleaving.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
BIN
Assets/RA2_cache-write-trough-vs-back.png
Normal file
BIN
Assets/RA2_cache-write-trough-vs-back.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 43 KiB |
@ -564,6 +564,126 @@ Ansätze zur Effizienzsteigerung durch Mikroparallelität
|
|||||||
| Out of Order | Hardware | Dynamisch | Dynamisch mit Spekulation | Out of Order mit Spekulation | Pentium III, Pentium 4, MIPS 10000 |
|
| Out of Order | Hardware | Dynamisch | Dynamisch mit Spekulation | Out of Order mit Spekulation | Pentium III, Pentium 4, MIPS 10000 |
|
||||||
| VLIW | Software | Statisch | Statisch | Keine Konflikte | Trimedia, diverse DSPs |
|
| VLIW | Software | Statisch | Statisch | Keine Konflikte | Trimedia, diverse DSPs |
|
||||||
|
|
||||||
|
# Speicherarchitektur
|
||||||
|
## Speicherhierarchie
|
||||||
|
- Große Speicher sind langsam
|
||||||
|
- Anwendung verhalten sich üblicherweise lokal
|
||||||
|
- Häufig benötigte Speicherinhalte in kleinen Speichern, seltener benötigte Inhalte in großen Speichern ablegen!
|
||||||
|
- Einführung einer „Speicherhierarchie“
|
||||||
|
- Illusion eines großen Speichers mit (durchschnittlich) kleinen Zugriffszeiten
|
||||||
|
- Bis zu sechs Ebenen in modernen Systemen unterscheidbar
|
||||||
|
Ebene | Latenz | Kapazität
|
||||||
|
-- | -- | --
|
||||||
|
Register | 100ps | 1 KByte
|
||||||
|
Cache | 1ns | 12 MByte
|
||||||
|
Hauptspeicher/RAM | 10ns | 8 GByte
|
||||||
|
Festplatte | 10ms | 1 TByte
|
||||||
|
CD-ROM/DVD/BlueRay | 100ms | 50 GByte
|
||||||
|
Magnetbänder | 100s | 5 TByte
|
||||||
|
- Adresspipelining
|
||||||
|

|
||||||
|
- Matrixaufbau eines Speichers
|
||||||
|
- Aufteilen der Speicheradresse in Zeilen- und Spaltenadresse
|
||||||
|
- Lesezugriff auf Speicher
|
||||||
|
- Dekodierung der Zeilenadresse bestimmt Select-Leitung
|
||||||
|
- Komplette Zeile wird in den Zeilenpuffer geschrieben
|
||||||
|
- Durch Dekodierung der Spaltenadresse wird das gewünscht Datenwort ausgewählt
|
||||||
|
- Blocktransfer (Burst): Auslesen des kompletten Zeilenpuffers durch automatisches Inkrementieren der Spaltenadresse
|
||||||
|
|
||||||
|
Typischer DRAM-Speicher
|
||||||
|
- Matrixaufbau eines DRAM-Speichers
|
||||||
|
- Adressleitungen werden i.d.R. gemultiplext
|
||||||
|
- Die gleichen Adressleitungen werden einmal zur Auswahl der Zeile verwendet, danach zur Auswahl der Spalte
|
||||||
|
- Einsparung von Leitungen, gerade für große Speicher wichtig
|
||||||
|
- Steuerleitungen RAS/CAS codieren, ob Adressleitungen Zeile oder Spalte auswählen
|
||||||
|
- RAS (Row Address Strobe): Bei einer fallenden Flanke auf RAS wird die anliegende Adresse als Zeilenadresse interpretiert
|
||||||
|
- CAS (Column Address Strobe): Bei einer fallenden Flanke auf CAS wird die anliegende Adresse als Spaltenadresse interpretiert
|
||||||
|
- Zugriff auf DRAM
|
||||||
|
- Erster Schritt
|
||||||
|
- Zeilenadressdecoder liefert Select-Leitung für eine Zeile
|
||||||
|
- Komplette Zeile wird in einen Zwischenpuffer übernommen
|
||||||
|
- Und zurückgeschrieben!
|
||||||
|
- Zweiter Schritt
|
||||||
|
- Aus dem Zwischenpuffer wird ein Wort ausgelesen
|
||||||
|
- Schritt kann mehrfach wiederholt werden (mehrere aufeinanderfolgende Wörter können gelesen werden)
|
||||||
|
- Auffrischung
|
||||||
|
- Heute auf dem DRAM-Speicher integriert
|
||||||
|
- Früher durch externe Bausteine ausgelöst
|
||||||
|
- DRAM-Eigenschaften
|
||||||
|
- Weniger Platzbedarf
|
||||||
|
- Nur 1 Transistor und 1 Kondensator pro Speicherzelle, statt 6 Transistoren bei SRAM
|
||||||
|
- Integrationsdichte Faktor 4 höher als bei SRAMs
|
||||||
|
- Langsamerer Zugriff
|
||||||
|
- Insbes. Lesezugriff wegen Zwischenspeicherung und Auffrischung
|
||||||
|
- Multiplexen der Adressleitungen
|
||||||
|
- Auf DRAM-Zeile kann während Auffrischung nicht zugegriffen werden
|
||||||
|
- Hoher Energieverbrauch sowohl bei Aktivität als auch bei Inaktivität
|
||||||
|
- Ausgleich des Ladungsverlusts durch periodische Auffrischung
|
||||||
|
- Zwischenpuffer und Logik zur Auffrischung
|
||||||
|
|
||||||
|
Interleaving
|
||||||
|

|
||||||
|
|
||||||
|
Caches
|
||||||
|
- Cache = schneller Speicher, der vor einen größeren, langsamen Speicher geschaltet wird
|
||||||
|
- Im weiteren Sinn: Puffer zur Aufnahme häufig benötigter Daten
|
||||||
|
- Für Daten die schon mal gelesen wurden oder in der Nähe von diesen liegen
|
||||||
|
- 90% der Zeit verbringt ein Programm in 10% des Codes
|
||||||
|
- Im engeren Sinn: Puffer zwischen Hauptspeicher und Prozessor
|
||||||
|
- Ursprung: cacher (frz.) – verstecken („versteckter Speicher“)
|
||||||
|
- Organisation von Caches
|
||||||
|
- Prüfung anhand der Adresse, ob benötigte Daten im Cache vorhanden sind („Treffer“; cache hit)
|
||||||
|
- Falls nicht (cache miss): Zugriff auf den (Haupt-) Speicher, Eintrag in den Cache
|
||||||
|
- Prinzip eines Cache (Hit) 
|
||||||
|
- Cache-Strategien und Organisationen
|
||||||
|
- Wo kann ein Block im Cache abgelegt werden?
|
||||||
|
- Platzierung abhängig von der Organisationsform
|
||||||
|
- Organisationsform: direkt, mengenassoziativ, vollassoziativ
|
||||||
|
- Welcher Speicherblock sollte bei einem Fehlzugriff ersetzt werden?
|
||||||
|
- Ersetzungsstrategie: Zufällig, FIFO, LRU
|
||||||
|
- Was passiert beim Schreiben von Daten in den Cache?
|
||||||
|
- Schreibstrategie: write-back, write-through
|
||||||
|
- Direkt abgebildeter Cache
|
||||||
|
- Such-Einheit im Cache: Cache-Zeile (cache line).
|
||||||
|
- Weniger tag bits, als wenn man jedem Wort tag bits zuordnen würde.
|
||||||
|
- Cache-Blöcke, cache blocks
|
||||||
|
- Die Blockgröße ist die Anzahl der Worte, die im Fall eines cache misses aus dem Speicher nachgeladen werden.
|
||||||
|
- Beispiel: (Blockgröße = line size)
|
||||||
|
- Wenn block size < line size, dann sind zusätzliche Gültigkeitsbits erforderlich. Beispiel: (Blockgröße = line size / 2)
|
||||||
|
- Wenn block size > line size, dann werden bei jedem miss mehrere Zeilen nachgeladen.
|
||||||
|
- Stets wird zuerst das gesuchte Wort, dann der Rest des Blocks geladen.
|
||||||
|
- Verbindung Speicher ↔ Cache ist so entworfen, dass der Speicher durch das zusätzliche Lesen nicht langsamer wird.
|
||||||
|
- Methoden dazu:
|
||||||
|
1. Schnelles Lesen aufeinanderfolgender Speicherzellen (Burst-Modus der Speicher)
|
||||||
|
2. Interleaving (mehrere Speicher ICs mit überlappenden Zugriffen)
|
||||||
|
3. Fließbandzugriff auf den Speicher (EDO-RAM, SDRAM)
|
||||||
|
4. Breite Speicher, die mehrere Worte parallel übertragen können
|
||||||
|
- 2-Wege Cache (Datensicht)
|
||||||
|

|
||||||
|
- 2-fach satz-assoziativer Cache
|
||||||
|
- Organisationsformen von Caches
|
||||||
|
- Direkt abgebildet (Direct mapping): Für caching von Befehlen besonders sinnvoll, weil bei Befehlen Aliasing sehr unwahrscheinlich ist
|
||||||
|
- Satz-assoziativ abgebildet (Set-associative mapping): Sehr häufige Organisationsform, mit Set-Größe = 2, 4 oder 8
|
||||||
|
- Vollassoziativ abgebildet (Associative mapping): Wegen der Größe moderner Caches kommt diese Organisationsform kaum in Frage
|
||||||
|
- Ersetzungs-Strategien
|
||||||
|
- Zufallsverfahren: Hier wird der zu ersetzende Block innerhalb des Satzes zufällig ausgewählt.
|
||||||
|
- FIFO-Verfahren: Beim FIFO-Verfahren (engl. First In, First Out) wird der älteste Block ersetzt, auch wenn auf diesem gerade erst noch zugegriffen wurde
|
||||||
|
- LRU-Verfahren: Beim LRU-Verfahren (engl. least recently used ) wird der Block ersetzt, auf den am längsten nicht mehr zugegriffen wurde
|
||||||
|
- LFU-Verfahren: Beim LFU-Verfahren (engl. least frequently used ) wird der am seltensten gelesene Block ersetzt
|
||||||
|
- CLOCK-Verfahren: Hier werden alle Platzierungen gedanklich im Kreis auf einem Ziffernblatt angeordnet. Ein Zeiger wird im Uhrzeigersinn weiterbewegt und zeigt den zu ersetzenden Eintrag an.
|
||||||
|
|
||||||
|
Schreibverfahren: Strategien zum Rückschreiben Cache → (Haupt-) Speicher
|
||||||
|
- Write-Through (Durchschreiben):
|
||||||
|
- Jeder Schreibvorgang in den Cache führt zu einer unmittelbaren Aktualisierung des (Haupt-) Speichers
|
||||||
|
- Speicher wird Engpass, es sei denn, der Anteil an Schreiboperationen ist klein oder der (Haupt-) Speicher ist nur wenig langsamer als der Cache.
|
||||||
|
- Copy-Back, conflicting use write back
|
||||||
|
- Rückschreiben erfolgt erst, wenn Cache-Zeile bei Miss verdrängt wird
|
||||||
|
- Funktioniert auch bei großen Geschwindigkeitsunterschieden zwischen Cache und Speicher. Vorkehrungen erforderlich, damit keine veralteten Werte aus dem Speicher kopiert werden.
|
||||||
|

|
||||||
|
|
||||||
|
Trefferquote $T=\frac{N_C}{N_G}$ mit $N_G$ Gesamtzahl der Zugriffe auf Speicher und $N_C$ Anzahl der Zugriffe mit Hit auf Cache
|
||||||
|
|
||||||
|
|
||||||
# Microcontroller und Digitale Signalprozessoren
|
# Microcontroller und Digitale Signalprozessoren
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user