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 |  | ||||
| | 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 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user