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