Speicher Typen TI-Übung 5 Speicher, Caches Andreas I. Schmied (andreas.schmied@uni-ulm.de) AspectIX-Team Abteilung Verteilte Systeme Universität Ulm WS2005 SRAM vs. DRAM (EEP)ROM, NV-RAM, Flash,... Charakteristik Zugriffszeit, Zykluszeit Organisation (Wortkapazität x Wortbreite) Konstruktion Technologie (logisch, technisch) Bits Worte Zusammenschaltung Schreib-/Lesevorgang? Stabilität des Inhalts? Optimierung Überlappung, Synchronität, Burst-Mode EDO-DRAM, (DDR-)SDRAM, RAMBUS Geschwindigkeitsverlust durch Kombination/Caches minderbar andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 1 Speicher SRAM Speicher DRAM Bistabile Kippstufe, Flip-Flop (prinzipiell) Adressiert normalerweise ganze Wörter Zeiten im Bereich 10ns On-Chip noch schneller Schnell, robust, hoher Platz/Energie-Bedarf Caches, hochwertige Anwendungen Kondensator-Speicher Periodischer Refresh/zerstörendes Lesen Adressiert einzelne Bits pro Pane/Matrix Mehrere Panes bilden Wort Zeiten im Bereich 40-70ns Folgezugriffe wesentlich schneller Langsamer, niedriger Platz/Energie-Bedarf Normaler Arbeitsspeicher andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 2 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 3
Speicher Zusammenschaltung Speicher Aufgabe Speicherbreite kombiniere AxB zu Ax(B ) Speichertiefe kombiniere AxB zu (A )xb RAS/CAS selektiv für hohe Adressbits durchstellen Decoder Skizzieren Sie für einen 8-Bit-Prozessor einen gemischten Hauptspeicher aus SRAM und EEPROM Der Prozessor verfügt über 16 Adressleitungen, 8 Datenleitungen, sowie WE/CS Die Speicherbausteine sind als 64kx8 (SRAM) und 16kx8 (EEPROM) ausgelegt Welchen Effekt bemerken Sie im Betrieb? Welches Speicher-Layout wählen Sie? andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 4 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 5 Speicher Skizze Speicher Aufgabe WE 0000 SRAM EEPROM 64k x8 WE 16k x8 D7 D0 A15 A0 A15 A0 CS A13 A0 CS SRAM Skizzieren Sie jeweils ein Zeitdiagramm eines asynchronen Schreibzyklus für einen SRAM-Baustein (Zykluszeit 10ns) für einen DRAM-Baustein (Zykluszeit 60ns) A15 A14 BFFF C000 FFFF EEPROM andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 6 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 7
Speicher SRAM-Schreibzyklus Speicher DRAM-Schreibzyklus SRAM Schreibzyklus DRAM Schreibzyklus Adresse gültig 10ns 60ns Adresse von CPU Adresse CS row column Adresse von Memory Controller RAS WE CAS OE WE t write Daten D in Daten D in Datenübernahme t write Datenübernahme andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 8 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 9 Speicher Aufgabe Speicher Lösung Ein DRAM-Baustein 4Mx8 soll alle 64ms einen Refresh benötigen Die Zykluszeit beträgt 60ns Der Refresh wird als RAS only ausgeführt bei dem der Controller nur das Signal RAS mit der Adresse der aufzufrischenden Zeile ausgibt Wieviele Refresh-Zyklen müssen hier innerhalb der 64ms ausgeführt werden, um den ganzen Baustein aufzufrischen? Wieviel Bandbreite geht durch diese Refresh-Zyklen verloren? Wieviele Refresh-Zyklen innerhalb der 64ms? Organisation 4Mx8 = 2 22 x8 = (2 11 x2 11 )x8 Also 2 11 = 2048 Zyklen Wieviel Bandbreite Verlust? Refreshdauer 2048 60ns = 122, 88µs = 0, 123ms Anteilig 0,123 64 100 = 0, 2% andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 10 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 11
Speicher Aufgabe Speicher Lösung Aus 32-MBit DRAM-Bausteinen 8Mx4 soll ein Hauptspeicher für eine 8-Bit CPU mit 8 Datenleitungen und 24 Adressleitungen aufgebaut werden Wie groß kann der Hauptspeicher für diese CPU maximal werden? Wie viele 32-MBit DRAM-Bausteine werden hierfür benötigt? Skizzieren Sie den Aufbau! Maximale Größe? 2 24 =16MByte addressierbar bei 24 Adressleitungen Anzahl Bausteine? Durch die Organisation 8Mx4 werden für 8Bit Wortbreite zwei Speicherbausteine nebeneinander verschaltet Diese decken 8MBit x8 = 8MByte ab Zusätzlich wird durch ein zweites Paar Bausteine die Speichertiefe auf 16MByte verdoppelt Man benötigt also 4 Bausteine andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 12 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 13 Speicher Skizze Caches Organisationsformen A22 A0 Vollassoziativer Cache (VA) 8Mx4 8Mx4 Bildet jede Speicherzeile auf beliebige Cachezeile ab. Sucht u.u. parallel mit Comparator pro Zeile Direkt-Abbildender Cache (DA) Bildet Gruppe von Speicherzeilen auf gleiche Cachezeile ab. Gruppe ist durch (Adresse mod Anz.Cachezeilen) definiert A23 N-fach teilassoziativer Cache (TAn) RAS CAS 0 1 8Mx4 D7 D4 8Mx4 D3 D0 Mischform aus VA und DA Bildet eine Speicherzeile auf 1 von N verschiedenen Cachezeilen gleichen Index ab. Skizzieren Sie einen TA4-Cache mit zwei aktiven, auf die selbe Cache-Line abgebildeten Datenbereichen andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 14 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 15
Caches Skizze TA4 Caches Vorgehen bei Lesezugriff V TAG DATA Hauptspeicher Hit Miss Wenn Valid/Tag-Vergleich positiv verläuft Gesamte Cachezeile per Burst-Mode laden Address-Alignment auf Zeilenlänge andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 16 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 17 Caches Vorgehen bei Schreibzugriff Caches Übungs- und Klausurfragen (1) Hit - Write Through (WT) Aktualisiert in Cache und nächster Speicherebene Hit - Write Back (WB) Aktualisiert nur in Cache und setzt Dirty-Flag, Aktualisierung in nächster Speicherebene erst bei Verdrängung+Dirty Miss - Write Around Eintrag wird nur in nächster Speicherebene aktualisiert Miss - Fetch on Write Eintrag wird zunächst in den Cache geladen, danach weiter wie bei Hit. Beim L1-Cache eine 3-stufigen Hierarchie wird pro Cache-Zeile ein Valid-Flag gespeichert, welches anzeigt, ob deren Inhalt mit dem zugehörigen Hauptspeicher übereinstimmt Falsch: Valid-Flag zeigt gültige Abbildung zwischen Zeile und nächster Speicherebene (L+1-Cache, HSP) an, die durch Tag identifiziert wird Unterschied Write-Back, Write-Through bei Schreibzugriff WB schreibt nur im Cache und setzt Dirty-Flag (Durchschreiben erst bei Verdrängung) WT schreibt gleich auch in nächste Speicherebene andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 18 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 19
Caches Übungs- und Klausurfragen (2) Caches Übungs- und Klausurfragen (3) Vergleichen Sie Vor- und Nachteile von TA4 ggü. VA gleicher Größe TA4 VA Billiger als VA (nur 4 Komparatoren) (+) Auch für größere Cache-Größen einsetzbar (+) Datum in Teilcache nur in einer Zeile speicherbar (-) Anfälliger für Kollisionen bei Zugriffsmustern (-) Teurere, parallele Komparatorlogik (-) Nur für kleine Cache-Größen ökonomisch (-) Datum in jeder Zeile speicherbar (+) Weniger anfällig für Kollisionen bei Zugriffsmustern (+) Nachteil des Direct-Mapped Cache? Hohe Kollisionswahrscheinlichkeit, da viele Zeilen gemeinsam an nur einer Cacheposition Warum sind L1 oft Write-Through-, L2 oft Write-Back-Caches? L1 oft logisch adressiert und muss bei häufigem Prozesswechsel reinitialisiert werden L1-WT sichert die Daten gleich in L2 L2 oft physikalisch adressiert, größer als L1 L2-WB nutzt dies um möglichst spät prozessunabhängig in HSP durchzugreifen Warum wurde Cache erst für Prozessoren > 20MHz eingesetzt? CPU-DRAM-Entkopplung wirkt sich erst bei DRAM-Grenze 10-20MHz aus andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 20 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 21 Caches Aufgabe (1) Caches Aufgabe (2) Prozessor mit 8-Bit Datenbus, 1MB Hauptspeicher soll einen 1kB Cache mit 8 Byte pro Zeile erhalten Welche Adressleitungen sind relevant? A19-A0 (2 10 =1k, 2 20 =1M) Bedeutung der Adressleitungen für DA-Cache? A2-A0 (2 3 = 8) Byte-Auswahl in Zeile A9-A3 ( 210 2 = 3 27 ) Zeilen-Index A19-A10 Tag Bedeutung der Adressleitungen für VA-Cache? A2-A0 Byte-Auswahl in Zeile A19-A3 Tag Wieviele Tag-Worte welcher Bitlänge muss das RAM des DA-TAG-Speichers enthalten können? Aufgabe Bitlänge = Anz. Adressleitungen für Tag = 10 Anzahl = 2 Anz.Adressleitungenf ürzeilen Index = 2 7 = 128 Größe = 128 10bit = 1,28kbit Ein 32bit-Prozessor mit 32bit-Adressraum soll eine zweistufige Cache-Hierarchie bekommen L1: TA8 mit 8kByte Kapazität, 128 Bit pro Zeile L2: DA mit 256 kbyte Kapazität, 256 Bit pro Zeile Bedeutung der Adressbits A31-A0 in Caches? Bauen Sie den L1 zu einem 4-Wege TA Cache um! andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 22 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 23
Caches Aufgabe (2) Caches Lösung Wieviele Tag-Worte welcher Bitlänge muss das RAM des DA-TAG-Speichers enthalten können? Aufgabe Bitlänge = Anz. Adressleitungen für Tag = 10 Anzahl = 2 Anz.Adressleitungenf ürzeilen Index = 2 7 = 128 Größe = 128 10bit = 1,28kbit Ein 32bit-Prozessor mit 32bit-Adressraum soll eine zweistufige Cache-Hierarchie bekommen L1: TA8 mit 8kByte Kapazität, 128 Bit pro Zeile L2: DA mit 256 kbyte Kapazität, 256 Bit pro Zeile Bedeutung der Adressbits A31-A0 in Caches? Bauen Sie den L1 zu einem 4-Wege TA Cache um! Adressbits L1 (TA8) A3-A0: Byte-Auswahl in Zeile ( 27 2 3 = 24 ) Zunächst als DA konstruiert ( 213 2 = 4 29 ) DA: A12-A4: Zeilen-Index DA: A31-A13: Tag Umwandlung zu TA8 TA: A9-A4: Zeilen-Index (2 3 weniger!) TA: A31-A10: Tag Adressbits L2 (DA) A4-A0: Byte-Auswahl in Zeile A17-A5: Zeilen-Index A31-A18: Tag Adressbits L1-TA4 A10-A4: Zeilen-Index A31-A11: Tag andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 23 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 24 Caches Experiment Die Cache-Größe soll experimentell bestimmt werden Welche Ansatz würden Sie wählen? For-Schleife mit wachsender sequentieller Speicherbelegung andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 25 1 #include <iostream > 2 #include <s t d l i b. h> 3 #include <t i m e. h> 4 5 #define MAXLOOP 1024 1024 6 #define MINCACHE 4096 / / 4 KByte 7 #define MAXCACHE 2 1024 1024 / / 2 MByte 8 #define STRIDE 16 9 10 using namespace s t d ; 11 12 long i n t x[1024 1024]; / / 4 MByte 13 14 i n t main( i n t argc, char argv[ ] ) 15 { 16 c l o c k t s t a r t t i m e ; 17 c l o c k t s t o p t i m e ; 18 long i n t c s i z e ; 19 20 / / z u f a e l l i g e I n i t i a l i s i e r u n g 21 f o r ( i n t j = 0 ; j < 1024 1024; j ++) 22 x[ j ] = j ; 23 24 25 26 andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 25
27 / / T e i l f e l d g r o e s s e v a r i i e r e n 28 f o r ( c s i z e =MINCACHE/ 4 ; csize <=MAXCACHE/ 4 ; c s i z e =c s i z e 2 ) { 29 s t a r t t i m e = c l o c k ( ) ; 30 31 / / W i e d e r h o l t e r Inkrement a l l e r Komponenten im T e i l f e l d 32 f o r ( i n t l o o p = 0 ; l o o p < MAXLOOP/ c s i z e ; l o o p ++) 33 f o r ( i n t i = 0 ; i < 1000; i ++) 34 f o r ( i n t j = 0 ; j < csize; j =j +STRIDE) 35 x[ j ] = x[ j ] + 1 ; 36 37 s t o p t i m e = c l o c k ( ) ; 38 39 c o u t << Cache Size: << c s i z e 4 << Byte ; 40 c o u t << Time: << ( stop time s t a r t t i m e ) 41 / ( f l o a t ) CLOCKS PER SEC; 42 c o u t << s << e n d l ; 43 } 44 } 1 Cache Size: 4096 Byte Time: 0.56s 2 Cache Size: 8192 Byte Time: 0.57s 3... 4 Cache Size: 262144 Byte Time: 0. 6 s 5 Cache Size: 524288 Byte Time: 3.64s 6 Cache Size: 1048576 Byte Time: 5.92s 7 Cache Size: 2097152 Byte Time: 6.08s andreas.schmied@uni-ulm.de TI-Übung 5 (WS2005) 25