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