CS - Ra.informatik.tu-darmstadt.de
CS - Ra.informatik.tu-darmstadt.de
CS - Ra.informatik.tu-darmstadt.de
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Inhalt Teil 2<br />
6.1 Speicheraufbau und Speicherzugriff<br />
1<br />
6.1.1 Funktionsweise<br />
SRAM asynchron<br />
DRAM asynchron<br />
6.1.2 Aufbau einer Speichereinheit<br />
• RAM-Ansteuerung<br />
• Memory Map<br />
• Adressmaske<br />
• DRAM-Speichermodule<br />
6.1.3 Verschränken von Speicherbänken<br />
6.1.4 Überlappen von Buszyklen<br />
Adresspipelining<br />
Split-Bus-Transaktionen<br />
6.1.5 Blockbuszyklen<br />
6.1.6 Burst-Mo<strong>de</strong>-Techniken bei DRAM und<br />
SRAM<br />
<br />
<br />
<br />
bei asynchronen DRAMs<br />
<br />
Lead-Off-Cycle<br />
bei synchronen DRAMs<br />
<br />
DDR<br />
• bei synchronen SRAMs<br />
• SDR: Flow-through/Pipelined<br />
• DDR<br />
• QDR<br />
Ergänzung<br />
Timing 128Mbit Graphic DDR SDRAM<br />
Measurement DDR333<br />
<br />
<br />
einfacher Speicherschutz<br />
(Zusammenfassung) Begriffe bei <strong>de</strong>r<br />
Speicheradressierug<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
6. Speicherorganisation<br />
6.1 Speicheraufbau und Speicherzugriff<br />
2<br />
Speicherhierarchie<br />
schnell<br />
Register (on-chip)<br />
Cache (on/off-chip)<br />
Hauptspeicher (off/on-chip)<br />
Plattenspeicher<br />
groß<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
6.1.1 Funktionsweise<br />
3<br />
Statisches RAM (SRAM)<br />
asynchron<br />
<strong>CS</strong># = Chip Select<br />
(auch CE# = Chip Enable)<br />
dient zur Auswahl und Aktivierung<br />
WE# = Write Enable<br />
(auch Write# o<strong>de</strong>r RW#)<br />
dient zur Angabe <strong>de</strong>r Zugriffsart<br />
OE#<br />
OE# = Output Enable<br />
dient zum separaten Einschalten <strong>de</strong>s<br />
Ausgangstreibers beim Lesen.<br />
Falls nicht vorhan<strong>de</strong>n, wird <strong>de</strong>r Ausgangstreiber<br />
bereits durch <strong>CS</strong># eingeschaltet.<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
SRAM-Speicherzelle<br />
4<br />
T1, T2 Rückgekoppelte Transistoren<br />
RL Lastwi<strong>de</strong>rstän<strong>de</strong><br />
T3, T4 Durchschalt-Transistoren<br />
Di, Di# komplementäre Lese- o<strong>de</strong>r<br />
Schreibinformation<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Lesezyklus<br />
5<br />
Adressbus<br />
high<br />
=Anfangsadresse<br />
low<br />
<strong>CS</strong>#<br />
RAM<br />
read<br />
CPU<br />
WE#<br />
DOUT<br />
read<br />
tA<strong>CS</strong><br />
tRC<br />
Access Time From Chip Select<br />
Read Cycle Time<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Schreibzyklus<br />
6<br />
Adressbus<br />
high<br />
=Anfangsadresse<br />
low<br />
<strong>CS</strong>#<br />
write<br />
CPU<br />
RAM<br />
WE#<br />
DIN<br />
Datenbus<br />
write<br />
tAS<br />
tWP<br />
tDS<br />
tDH<br />
twc<br />
Address Set Up Time<br />
Write Pulse Width<br />
Data Set Up Time<br />
Data Hold Time<br />
Write Cycle Time<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Beispiel eines SRAM-Bausteins<br />
7<br />
Auf einem Speicherchip sind<br />
die Bits als Matrix<br />
angeordnet.<br />
Adresse = (AH, AL) = (i, j)<br />
(konkateniert)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10<br />
Lesevorgang intern<br />
Auswahl <strong>de</strong>r Zeile AH<br />
durch Vorauswahl<br />
(Deco<strong>de</strong>r)<br />
Lesen <strong>de</strong>r Zeile und in<br />
Flipflops<br />
zwischenspeichern.<br />
Auswahl <strong>de</strong>s Bits AL<br />
dieser Zeile erfolgt<br />
durch Nachauswahl<br />
(Multiplexer)
8<br />
*<br />
not <strong>CS</strong><br />
High-Z<br />
<strong>CS</strong><br />
Read<br />
not OE<br />
OE<br />
High-Z<br />
Output<br />
Write<br />
Input<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Lesezyklus<br />
9<br />
OE# muss aktiviert wer<strong>de</strong>n<br />
Dout bleibt noch für die Hold-<br />
Zeiten gültig<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Schreibzyklus, mit positiver Flanke von WE#<br />
10<br />
Der Schreibvorgang wird<br />
durch die positive Flanke von<br />
WE# ausgelöst.<br />
Din muss t DW vorher und t DH<br />
nachher stabil sein.<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Schreibzyklus, mit positiver Flanke von <strong>CS</strong>#<br />
11<br />
Wenn <strong>CS</strong># vor <strong>de</strong>r<br />
Schreibflanke inaktiv wird,<br />
dann wird <strong>de</strong>r<br />
Schreibvorgang mit dieser<br />
Flanke ausgelöst.<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Deco<strong>de</strong>r<br />
Ein Speichermo<strong>de</strong>ll<br />
12<br />
Din<br />
<strong>CS</strong><br />
<strong>CS</strong><br />
Write<br />
AdrHigh<br />
Speicherzelle<br />
Zweck: Das Speichermo<strong>de</strong>ll soll <strong>de</strong>n<br />
Datenfluss in Abhängigkeit von <strong>de</strong>n<br />
Steuersignalen ver<strong>de</strong>utlichen.<br />
Es ist orientiert an <strong>de</strong>r Realisierung.<br />
Es lässt die zeitlichen Verzögerungen<br />
erkennen.<br />
AdrLow<br />
<strong>CS</strong><br />
Read<br />
Es kann als Ausgangspunkt für ein<br />
zeitbehaftetes Simulationsmo<strong>de</strong>ll benutzt<br />
wer<strong>de</strong>n.<br />
Multiplexer/<br />
Deco<strong>de</strong>r<br />
<strong>CS</strong><br />
<strong>CS</strong><br />
OutputEnable<br />
Dout<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Dynamisches RAM (DRAM)<br />
13<br />
<br />
DRAM-Speicherzelle benötigt nur etwa<br />
1/4 <strong>de</strong>r Chipfläche einer SRAM-<br />
Speicherzelle<br />
höhere Speicherkapazität pro<br />
Speicherchip<br />
Kosten pro Speicherbit niedriger<br />
<br />
<br />
Das Zugriffsprotokoll ist komplizierter,<br />
die Zugriffszeit ist höher.<br />
Adresse wird in zwei Teilen<br />
nacheinan<strong>de</strong>r im Multiplexbetrieb an<br />
<strong>de</strong>n Speicher übergeben und intern<br />
zwischenge-speichert.<br />
<br />
Ladung fließt ab<br />
Wie<strong>de</strong>rauffrischen (refresh)<br />
erfor<strong>de</strong>rlich, ca. alle 64 ms<br />
1. Zeilenadresse (row)<br />
Übernahme durch:<br />
row address strobe RAS<br />
2. Spaltenadresse (column)<br />
Übernahme durch:<br />
column address strobe CAS<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
DRAM-Speicherzelle<br />
14<br />
Durchschalttransistor<br />
Ladungsspeicher<br />
(Transistor)<br />
Vorteil:<br />
Geringer Platzbedarf (ca. ¼<br />
gegenüber SRAM-Zelle)<br />
Spaltenbitlei<strong>tu</strong>ng<br />
Entla<strong>de</strong>n<br />
La<strong>de</strong>n<br />
Nachteil:<br />
Kon<strong>de</strong>nsator entlädt sich<br />
aufgrund von Leckströmen und<br />
muss periodisch aufgefrischt<br />
wer<strong>de</strong>n, falls kein Lese- o<strong>de</strong>r<br />
Schreibzugriff erfolgt<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
DRAM-Baustein<br />
15<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Auffrischen<br />
16<br />
<br />
<br />
<br />
Beim Lesen/Schreiben wird die<br />
angesprochene Zeile automatisch<br />
zurückgeschrieben und damit<br />
aufgefrischt.<br />
Nicht regelmäßig angesprochene Zeilen<br />
müssen explizit unter Benutzung eines<br />
Zeilenzählers (Refresh Counter) zyklisch<br />
angesprochen wer<strong>de</strong>n.<br />
DRAM-Controller außerhalb o<strong>de</strong>r<br />
innerhalb <strong>de</strong>s Speicherbausteins steuert<br />
<strong>de</strong>n Refresh-Vorgang.<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Beschleunigung <strong>de</strong>s Zugriffs<br />
17<br />
<br />
Recovery-Time<br />
Außer <strong>de</strong>r Zugriffszeit t RAS wird die<br />
Recovery-Time t RP benötigt, dadurch ist<br />
die Zykluszeit t RC die Summe dieser<br />
Zeiten:<br />
<br />
<br />
Nach <strong>de</strong>m Auswerten <strong>de</strong>r abgeflossenen<br />
Ladung muss die alte/neue Ladung wie<strong>de</strong>r<br />
zurückgeschrieben wer<strong>de</strong>n.<br />
Zum Auswerten müssen die<br />
Auswertelei<strong>tu</strong>ngen in <strong>de</strong>m vorhergehen<strong>de</strong>n<br />
Zyklus auf ein bestimmtes Potential<br />
voraufgela<strong>de</strong>n (Precharging) wer<strong>de</strong>n.<br />
<br />
Maßnahmen zur Beschleunigung<br />
<br />
<br />
Einbau von Pipelineregistern und<br />
synchrone Arbeitsweise<br />
• Zwischenpuffern <strong>de</strong>r Adressen, Din,<br />
Steuersignale, Dout in Registern<br />
• Synchron Pipelined SDRAM<br />
• Die synchrone Arbeitsweise hat auch<br />
<strong>de</strong>n Vorteil <strong>de</strong>r einfacheren Steuerung<br />
gegenüber <strong>de</strong>n asynchronen<br />
Mehrere verschränkte Speicherbänke<br />
auf <strong>de</strong>m Chip<br />
<br />
Zugriff auf ganze Speicherblöcke,<br />
Blockbuszyklen<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Lese- und Schreibzyklus<br />
18<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
6.1.2 Aufbau einer Speichereinheit<br />
19<br />
AddressLow<br />
Beispiel: 1-MBit-Speicherchip<br />
mit 20 Adresslei<strong>tu</strong>ngen und einer Datenlei<strong>tu</strong>ng.<br />
CE<br />
RW<br />
OE<br />
Din/Dout<br />
1 M X1 Bit-Zellen<br />
AddressLow<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
1 MByte-Speicher, aus 8 Speicherchips (je 1 MBit)<br />
20<br />
Adresse<br />
20<br />
CE<br />
RW<br />
OE<br />
8<br />
Datenbus<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Aufbau eines Wortspeichers<br />
21<br />
AddressLow<br />
20<br />
CE<br />
RW<br />
OE<br />
8<br />
Din/Dout<br />
Gegeben:<br />
Speicherchip 1 MByte<br />
20 Adresslei<strong>tu</strong>ngen<br />
8 Datenlei<strong>tu</strong>ngen<br />
Gesucht:<br />
Wortspeicher 1M x 32Bit<br />
siehe nächste Folie<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
1 M x 32-Speicher, aus 8 Speichermoduln (je 1 MByte)<br />
22<br />
AddressLow<br />
20<br />
RW,OE<br />
BE<br />
3<br />
BE<br />
2<br />
<strong>CS</strong><br />
BE<br />
1<br />
BE = Byte-Enable-<br />
BE<br />
Signal 0vom Prozessor<br />
<strong>CS</strong><br />
32<br />
<strong>CS</strong><br />
Datenbus<br />
<strong>CS</strong><br />
Die Byte-Enable-<br />
Signale vom Prozessor<br />
wer<strong>de</strong>n mit <strong>de</strong>n Chip-<br />
Select-Signalen <strong>de</strong>r<br />
Speichermodule<br />
verbun<strong>de</strong>n.<br />
Dadurch wird nur auf<br />
die Module zugegriffen,<br />
die durch BE i aktiviert<br />
wer<strong>de</strong>n.<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Enable<br />
4 M x 32-Speicher, aus 4 Speichermoduln (je 1 M x 32)<br />
23<br />
== Anfangsadresse<br />
AddressLow<br />
Der Adressraum wird<br />
um die Anzahl <strong>de</strong>r<br />
Module vervielfacht.<br />
(hier 4<br />
Bänke/Speicherseiten)<br />
2<br />
Address<br />
Middle<br />
RW<br />
20<br />
<strong>CS</strong><br />
<strong>CS</strong><br />
<strong>CS</strong><br />
<strong>CS</strong><br />
Die Module wer<strong>de</strong>n<br />
parallel geschaltet<br />
(Adress- und<br />
Datenbus).<br />
Die Auswahl <strong>de</strong>r aktiven<br />
Speicherbank erfolgt<br />
über einen Deco<strong>de</strong>r, <strong>de</strong>r<br />
AddressMiddle<br />
auswertet.<br />
Datenbus<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10<br />
32<br />
Die Ausgänge <strong>de</strong>s<br />
Deco<strong>de</strong>rs wer<strong>de</strong>n nur<br />
aktiv, wenn <strong>de</strong>r Enable-<br />
Eingang aktiv ist.
RAM-Ansteuerung, Prinzip<br />
24<br />
VA (Valid Address)<br />
ByteEnable[3..0]<br />
Adress<strong>de</strong>co<strong>de</strong>r für RAMs<br />
<strong>CS</strong>i = Seitennummer . VA . BEi<br />
High<br />
ADR<br />
Low<br />
<strong>CS</strong>3<br />
<strong>CS</strong>2 <strong>CS</strong>1 <strong>CS</strong>0<br />
CPU<br />
BUSCLK<br />
RW<br />
M3<br />
M2<br />
M1<br />
M0<br />
READY<br />
DATA<br />
8<br />
32<br />
Adresse<br />
ADRHigh ADRLow ADRByte<br />
Seitennummer<br />
Adr. im Speicher<br />
interne Adresse<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Memory Map<br />
25<br />
<br />
Memory Map = Speichertabelle,<br />
Speicherzuordnungstabelle,<br />
Adressraumbelegungsplan<br />
<strong>de</strong>finiert die Zuordnung <strong>de</strong>r<br />
Speicherbereiche <strong>de</strong>r Bausteine<br />
(Speicher, EA-Bausteine, ...) zu<br />
bestimmten Bereichen im gesamten<br />
Adressraum.<br />
Die Bausteine haben meist eine<br />
Kapazität von 2 k verschie<strong>de</strong>nen<br />
Adressen (Lokale Adressen)<br />
aktiviert einen Baustein ab einer<br />
festzulegen<strong>de</strong>n Basisadresse, die<br />
meist ein Vielfaches R von 2 k ist. R<br />
entspricht dann <strong>de</strong>m höherwertigen<br />
Adressteil ADRHigh, <strong>de</strong>r von einem<br />
Deco<strong>de</strong>r ausgewertet wird.<br />
Der Deco<strong>de</strong>r kann zentral o<strong>de</strong>r<br />
<strong>de</strong>zentral (bei <strong>de</strong>n Bausteinen)<br />
angeordnet sein.<br />
<br />
In <strong>de</strong>r Regel wer<strong>de</strong>n die Basisadressen<br />
so gewählt, dass sich die<br />
Speicherbereiche nicht überlappen.<br />
Falls sich die Speicherbereiche in<br />
beson<strong>de</strong>ren Fällen überlappen sollen<br />
(z.B. zum Einblen<strong>de</strong>n kleiner Bereiche<br />
in große), muss <strong>de</strong>r Deco<strong>de</strong>r im<br />
Überlappungsbereich eine<br />
Priorisierung (Vorrangauswahl)<br />
vornehmen.<br />
Im einfachsten Falle wer<strong>de</strong>n drei<br />
Bereiche unterschie<strong>de</strong>n<br />
• ROM-Bereich, <strong>de</strong>r<br />
Initialisierungskonstanten und<br />
Initialisierungsrouten (bootstrap<br />
loa<strong>de</strong>r) enthält.<br />
• RAM-Bereich <strong>de</strong>r die Programme<br />
nach <strong>de</strong>m La<strong>de</strong>n enthält.<br />
• EA-Bereich, <strong>de</strong>r es erlaubt, EA<br />
Zellen anzusprechen<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Beispiel 1<br />
26<br />
Gegeben<br />
Speichertabelle<br />
Speicherbausteine<br />
- ROM 64x32<br />
- ROM 4kB =1k x 32<br />
- RAM 1 MB=256k x 32<br />
Byteadressen<br />
0<br />
255<br />
256<br />
4K-1<br />
ROM Vektortabelle<br />
ROM<br />
(Initialisierungs- und<br />
La<strong>de</strong>routinen)<br />
Gesucht<br />
- Logik zum Anschluss<br />
<strong>de</strong>r Speicherbausteine<br />
1M<br />
unbenutzt<br />
bzw. nicht vorhan<strong>de</strong>n<br />
2M-1<br />
RAM<br />
(Anwendung)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Lösung Beispiel 1<br />
27<br />
Wort# Byte#<br />
0 0<br />
63 255<br />
64 256<br />
a<br />
b<br />
____<br />
<strong>CS</strong>b = VA.(A[31:12]=0).<strong>CS</strong>a<br />
<strong>CS</strong>a = VA.(A[31:8]=0)<br />
6 10 18<br />
<strong>CS</strong>c = VA.(A[31:20]=1)<br />
Adresse<br />
1k-1 4K-1<br />
A[7:2]<br />
A[11:2]<br />
A[19:2]<br />
CPU<br />
a<br />
b<br />
c<br />
frei<br />
RW<br />
256k<br />
1M<br />
512k-1 2M-1<br />
c<br />
Die <strong>CS</strong>-Signale wer<strong>de</strong>n nur aktiv, wenn die<br />
Adresse gültig ist (VA=1).<br />
Data<br />
Speicher b und a überlappen sich. Für die Byte-<br />
Adressen von 0 – 255 wird nur <strong>de</strong>r Speicher a<br />
aktiviert, nicht <strong>de</strong>r Speicher b. (Vorrangschal<strong>tu</strong>ng)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Adressbus: Adressmaske<br />
28<br />
Die Adressmaske <strong>de</strong>finiert,<br />
welche Bits an <strong>de</strong>n Speicherbaustein angeschlossen wer<strong>de</strong>n (lokale Adresse, markiert durch x).<br />
die Anfangsadresse (Basisadresse) <strong>de</strong>s Speicherbausteins im gesamten Adressraum<br />
(ADRHigh_0..0). ADRHigh wird durch einen Deco<strong>de</strong>r ausgewertet und aktiviert über <strong>CS</strong> <strong>de</strong>n<br />
Baustein.<br />
Die nicht benötigten nie<strong>de</strong>rwertigen Adresslei<strong>tu</strong>ngen wer<strong>de</strong>n durch „*“ markiert. Sie <strong>de</strong>finieren<br />
hier das Byte im Wort.<br />
Adressmaske für <strong>de</strong>n Speicherbaustein a<br />
AToMema= 0000 0000 0000 0000 0000 0000 xxxx xx**<br />
Die bei<strong>de</strong>n nie<strong>de</strong>rwertigsten Bits<br />
wer<strong>de</strong>n nicht benutzt, da hier nur<br />
ganze 32-Bit-Worte adressiert<br />
wer<strong>de</strong>n. – Der Prozessor stellt<br />
sie auch nicht zu Verfügung,<br />
dafür aber die BE-Signale<br />
ADRHigh wird <strong>de</strong>codiert,<br />
um <strong>de</strong>n Anfang <strong>de</strong>s<br />
Speicherbereichs<br />
festzulegen<br />
6-Bit-Wortnummer<br />
zum Speicherbaustein<br />
(Lokale Adresse)<br />
<strong>CS</strong>a=VA.(A[31:8]=0)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Adressmasken für die Bausteine c und d<br />
29<br />
AToMemb = 0000 0000 0000 0000 0000 xxxx xxxx xx**<br />
10-Bit-Wortnummer<br />
____<br />
<strong>CS</strong>b = VA.(A[31:12]=0).<strong>CS</strong>a<br />
hex<br />
Basisadresse = $0000000<br />
AToMemc= 0000 0000 0001 xxxx xxxx xxxx xxxx xx**<br />
18-Bit-Wortnummer<br />
<strong>CS</strong>c = VA.(A[31:20]=1)<br />
Basisadresse = $00100000<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Beispielaufgabe 2<br />
30<br />
<br />
<br />
Gegeben<br />
Ein Speicherbaustein ROM 8 kB = 2k x 32<br />
Ein Speicherbaustein RAM 4 MB = 1M x 32<br />
Gesucht<br />
<br />
<br />
<br />
Sinnvolle Speichertabelle<br />
Verbindungen und möglichst einfache Logik zur Aktivierung <strong>de</strong>r Speicherbausteine.<br />
Nebenbedingung: In <strong>de</strong>m Mikroprozessorsystem sollen keine weiteren<br />
Speicherbausteine mehr angeschlossen wer<strong>de</strong>n. Dadurch kann die Decodierlogik<br />
vereinfacht wer<strong>de</strong>n. (Wie, welche Konsequenzen ergeben sich daraus?)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Lösung<br />
Bit 22<br />
AToROM= ---- ---- -1-- ---- ---x xxxx xxxx xx**<br />
11<br />
Wortnummer<br />
Wortin<strong>de</strong>x<br />
(ohne **)<br />
1 M +0<br />
1 M +2K-1<br />
31<br />
ROM<br />
<strong>CS</strong><br />
Bit 23<br />
AToRAM= ---- ---- 1-xx xxxx xxxx xxxx xxxx xx**<br />
2M<br />
Die nicht<br />
angeschlossenen<br />
Adresslei<strong>tu</strong>ngen<br />
sind durch „-“ in<br />
<strong>de</strong>r Adressmaske<br />
markiert.<br />
20<br />
<strong>CS</strong><br />
RAM<br />
RW<br />
3M-1<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Erklärung zur Lösung<br />
32<br />
<br />
<br />
<br />
<br />
Bit 22 und 23 wer<strong>de</strong>n direkt zur Aktivierung benutzt<br />
Bit22 = 1: das ROM wird aktiviert (Anfangsadresse = 1M, wenn alle Striche = 0)<br />
Bit23 = 1: das RAM wird aktiviert (Anfangsadresse = 2M, wenn alle Striche = 0)<br />
Es han<strong>de</strong>lt sich um eine unvollständige Decodierung. Dabei dienen<br />
einzelne höherwertige Adressbits direkt zur Auswahl <strong>de</strong>r Bausteine.<br />
Der Programmierer muss darauf achten, dass nicht mehrere Bausteine<br />
gleichzeitig aktiviert wer<strong>de</strong>n.<br />
Es dürfen keine Adressen im Programm verwen<strong>de</strong>t wer<strong>de</strong>n, bei <strong>de</strong>nen bei<strong>de</strong> Bits 1<br />
sind!<br />
<br />
Der Programmierer verwen<strong>de</strong>t im Programm am besten für die „-“ Adressbits <strong>de</strong>n<br />
Wert 0.<br />
Wenn n Adressbits mit „-“ vorhan<strong>de</strong>n sind, dann vervielfacht (spiegelt) sich <strong>de</strong>r<br />
Adressraum <strong>de</strong>s Speichermoduls 2 n mal im Speicheradressraum. (n = Anzahl<br />
<strong>de</strong>r Striche in <strong>de</strong>r Adressmaske)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
DRAM-Speichermodule<br />
33<br />
DRAM-Module = DRAM-Bausteine auf einer kleinen Steckplatine<br />
SIMM: Single in-line memory module<br />
PS/2-Modul: Datenbreite 32 Bit, 72 Kontakte, bis 64 Mbyte/Modul<br />
DIMM: dual in-line memory module, Datenbreite 64 bit<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
168 Kontakte: SDRAM<br />
184 Kontakte: DDR-SDRAM<br />
240 Kontakte: DDR2-SDRAM<br />
144/200 Kontakte: SODIMM (small outline)<br />
Beispiel<br />
• 256-Mbyte-Modul besteht aus 8 DDR-SRAM-Bausteinen (32M x 8)<br />
ECC-DIMM: zusätzlich 8 Sicherungsbits pro 64 Bit-Wort, single error correction,<br />
double error <strong>de</strong>tection)<br />
Registered DIMM: Adresse und Zugriffskommando wird über Register gepuffert.<br />
Arbeitsweise im Pipeline-Modus. Taktphase kann durch PLL (phase locked loop)<br />
optimal angepasst wer<strong>de</strong>n.<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Qimonda 2008<br />
34<br />
DDR2-SDRAM 256Mb-2Gb<br />
800 Mb/s<br />
Fine Pitch Ball Grid Array<br />
DDR2- Unbuffered DIMMs -240 pin<br />
256MB – 2 GB<br />
DDR2-SO-DIMMs – 200-pin<br />
512MB – 2 GB<br />
DDR2-Registered DIMMs – 240-pin<br />
256MB – 8 GB<br />
http://www.qimonda.<strong>de</strong>/computing-dram/ddr3/in<strong>de</strong>x.html<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Qimonda 2008<br />
35<br />
DDR3-SDRAM 512Mb-1Gb<br />
Fine Pitch Ball Grid Array<br />
1,5V, 1600 Mb/s<br />
DDR3-SO-DIMMs – 200-pin<br />
1GB – 2 GB<br />
DDR3- Unbuffered DIMMs -240 pin<br />
512MB – 2 GB<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
6.1.3 Verschränken von Speicherbänken<br />
36<br />
Wie lassen sich Wartezyklen vermei<strong>de</strong>n?<br />
<br />
Schnelle RAMs: einfach, aber Kosten, Platzbedarf und<br />
Stromverbrauch sind höher als bei DRAMs.<br />
<br />
Verschränken von Speicherbänken: aufeinan<strong>de</strong>rfolgen<strong>de</strong><br />
Zugriffe mit Adressen, die in verschie<strong>de</strong>nen Bänken liegen.<br />
<br />
Überlappen<strong>de</strong> Adressierung (6.1.4): Die nächste Adresse<br />
wird schon vor Abschluss <strong>de</strong>s laufen<strong>de</strong>n Zugriffs ausgegeben.<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Aufeinan<strong>de</strong>rfolgen<strong>de</strong> Lesezugriffe, DRAM<br />
37<br />
(2+1) (2+1)<br />
Eine Bank<br />
(2+0) (2+0)<br />
Zwei Bänke<br />
verschränkt<br />
Recovery muss<br />
nicht abgewartet<br />
wer<strong>de</strong>n<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Verschränken: Implementierung<br />
38<br />
<br />
<br />
Ziel: Aufeinan<strong>de</strong>rfolgen<strong>de</strong> Zugriffe<br />
sollen zu einem Bankwechsel führen.<br />
Einfache Hardware-Lösung: 2 n<br />
Speicherbänke, die durch die n<br />
nie<strong>de</strong>rwertigsten Adressbits selektiert<br />
wer<strong>de</strong>n.<br />
<br />
Wenn die Zugriffsadressen<br />
<br />
<br />
aufeinan<strong>de</strong>r folgen: Inkrementiere die<br />
Adresse Umschalten auf die nächste<br />
Speicherbank (zyklisch). Erholzeit = 1<br />
Zyklus, kein Wartezyklus.<br />
sich zufällig än<strong>de</strong>rn: Wahrscheinlichkeit,<br />
dass <strong>de</strong>r nächste Zugriff in einer gera<strong>de</strong><br />
nicht noch benutzten Speicherbank liegt ist<br />
umso höher, <strong>de</strong>sto mehr Speicherbänke<br />
benutzt wer<strong>de</strong>n.<br />
• Nur wenn auf eine Speicherbank<br />
zugegriffen wird, die sich noch<br />
nicht erholt hat, muss <strong>de</strong>r<br />
Prozessor warten. (WAIT-Signal)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
6.1.4 Überlappen von Buszyklen<br />
Address Pipelining<br />
Voraussetzung: Der Speicher<br />
kann intern parallel arbeiten, z. B.<br />
durch Speicherbänke o<strong>de</strong>r internem<br />
Cache.<br />
DRAM-Controller übernimmt die<br />
Steuerung. Controller for<strong>de</strong>rt mit<br />
Next Address Request NARQ <strong>de</strong>n<br />
Prozessor zum vorzeitigen nächsten<br />
Speicherzugriff auf.<br />
<br />
<br />
Der Prozessor gibt die nächste<br />
Adresse, das Schreib-/Lesesignal<br />
und die Byte-Enable-Signale schon<br />
während <strong>de</strong>s laufen<strong>de</strong>n Buszyklus<br />
aus. Diese Werte wer<strong>de</strong>n in<br />
zusätzlichen Registern<br />
zwischengespeichert. Der Zugriff<br />
beginnt sofort überlappend.<br />
Der Zugriff auf eine gera<strong>de</strong> belegte<br />
Bank (Bankkonflikt) verursacht<br />
Wartezyklen.<br />
39<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Adresspipelining<br />
40<br />
(2+3=5)<br />
Eine Bank<br />
(5-2)<br />
Vier Bänke<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Speicher mit 4 Speicherbänken<br />
41<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
(6.1.4 Überlappen von Buszyklen)<br />
Split-Bus-Transaktionen<br />
42<br />
<br />
<br />
<br />
<br />
Ziel: Überlappen<strong>de</strong> Verwal<strong>tu</strong>ng von<br />
mehreren Transaktionen<br />
Voraussetzung: Getrennter Adressund<br />
Datenbus<br />
Anwendung: In<br />
Mehrprozessorsystemen mit<br />
gemeinsamen Speicher, um während<br />
einer laufen<strong>de</strong>n Transaktion zwischen<br />
einem Master1 und einem Target1<br />
bereits eine weitere Transaktion<br />
zwischen einem Master2 und einem<br />
Target2 anzustoßen: (auch als Inter-<br />
Processor-Pipelining bezeichnet)<br />
Hardware: getrennte, parallele<br />
Verwal<strong>tu</strong>ng für die Zuteilung von<br />
Adressbus und Datenbus.<br />
Wichtiger Son<strong>de</strong>rfall: Target1 =<br />
Target2 = gemeinsamer Speicher<br />
<br />
<br />
<br />
Parken: Bei zu erwarten<strong>de</strong>n<br />
auffeinan<strong>de</strong>rfolgen<strong>de</strong>n Zugriffen eines<br />
Master1 kann dieser auf <strong>de</strong>m Bus<br />
'geparkt' wer<strong>de</strong>n, wodurch die Zeit für<br />
die Buszuteilung entfällt. (entspricht<br />
<strong>de</strong>m herkömmlichen Adress-<br />
Pipelining, auch Intra-Processor-<br />
Pipelining genannt)<br />
Erfor<strong>de</strong>rt zusätzliche Steuer-Logik und<br />
Pufferregister.<br />
PowerPC601, PentiumPro und<br />
folgen<strong>de</strong><br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Split-Bus-Transaktionen<br />
43<br />
Adressbus<br />
Arbitration<br />
Arbitration<br />
Arbitration<br />
Adress-<br />
Adress-<br />
Adress-<br />
Transfer1<br />
Transfer2<br />
Transfer3<br />
Datenbus<br />
Arbitration<br />
Transfer1<br />
Arbitration<br />
Daten-<br />
Daten-<br />
Transfer3<br />
Arbitration<br />
Daten-<br />
Transfer2<br />
Arbitration: Bewerben und Zuteilung eines Busses<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
6.1.5 Blockbuszyklen<br />
44<br />
<br />
<br />
Die Übertragung von Daten zwischen<br />
Hauptspeicher und Cache (o<strong>de</strong>r L2-Cache<br />
und L1-Cache) erfolgt blockweise.<br />
(üblicherweise 4-Wort-Burst)<br />
Nur die Anfangsadresse <strong>de</strong>s Blocks muss<br />
übertragen wer<strong>de</strong>n, dadurch können<br />
Takte gespart wer<strong>de</strong>n (2-1-1-1-Burst).<br />
(Der erste Zugriff benötigt 2 Takte)<br />
<br />
<br />
Mögliche Speicherorganisation:<br />
<br />
<br />
4 verschränkte Speicherbänke (vergl. Bild<br />
6-9) die gleichzeitig adressiert wer<strong>de</strong>n.<br />
Erster Zugriff (Lead-off-Cycle) mit <strong>de</strong>r<br />
Speicherzugriffzeit, Folgezugriffe mit <strong>de</strong>r<br />
Registerzugriffszeit. (Bild 6-13b)<br />
Pipelined-Burst: Während <strong>de</strong>s<br />
laufen<strong>de</strong>n Bursts wird <strong>de</strong>r nächste<br />
schon addressiert.<br />
<br />
Der Speicher muss intern so organisiert<br />
sein, dass er Folgezugriffe beschleunigt<br />
ausführen kann.<br />
<br />
Dadurch Einsparung <strong>de</strong>s Takts für die<br />
Adressierung zwischen zwei Bursts. (Bild<br />
6-13c)<br />
<br />
Die Folgeadressen wer<strong>de</strong>n automatisch<br />
im Speicherbaustein selbst o<strong>de</strong>r in seiner<br />
Nähe durch eine geeignete<br />
Speicheransteuerlogik generiert.<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Burst, Pipelined Burst<br />
45<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
6.1.6 Burst-Mo<strong>de</strong>-Techniken bei DRAM und SRAM<br />
46<br />
<br />
Lead-off-Cycle<br />
<br />
<br />
<br />
Bei <strong>de</strong>m Lesen von 4 Worten (Cacheline) dauert das Lesen <strong>de</strong>s 1. Wortes länger<br />
als ein Takt (siehe nächste Folie)<br />
Erster Zugriff: (Access Time from RAS) + (Access Time from CAS)<br />
Folgezugriff geht schneller, wenn die Zeile noch 'geöffnet' ist, nur (Access Time<br />
from CAS)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Lead-Off-Cycle<br />
47<br />
Lesen von 4 Worten<br />
Die Anzahl <strong>de</strong>r Takte (Beispiel):<br />
Page-Hit: Zeile ist geöffnet, nur Auswahl mit Spaltenadresse j<br />
(geöffnet) 2-1-1-1<br />
Row-Miss: Adresse verursacht einen Zeilenwechsel. Die zuletzt geöffnete<br />
Zeile wur<strong>de</strong> bereits zurück geschrieben.<br />
(nur öffnen) 4-1-1-1<br />
Page-Miss: Adresse verursacht einen Zeilenwechsel, die noch geöffnete<br />
Zeile muss zuerst zurückgeschrieben wer<strong>de</strong>n.<br />
(schließen, öffnen) 6-1-1-1<br />
Back-to-Back-Cycle: Zwei 4-Wort-Zugriffe folgen aufeinan<strong>de</strong>r, die Zeile<br />
und Folgezeile sind bereits geöffnet (Page-Hit), überlappen<strong>de</strong>r<br />
Zugriff<br />
2-1-1-1 - 1-1-1-1<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Burst-Mo<strong>de</strong>s bei asynchronen DRAMs<br />
48<br />
Page- und Fast-Page-Mo<strong>de</strong>-DRAM<br />
erlaubt <strong>de</strong>n wahlfreien Zugriff innerhalb einer geöffneten Zeile ( Page i =const )<br />
Nibble-Mo<strong>de</strong><br />
<br />
Unterstützung <strong>de</strong>s Blockzugriffs auf 4 aufeinan<strong>de</strong>rfolgen<strong>de</strong> Bits, die ausgerichtet<br />
sind (räumlich auf <strong>de</strong>m Chip zusammenhängen)<br />
EDO- und Burst-EDO-DRAM<br />
EDO: Exten<strong>de</strong>d Data Out<br />
<br />
nächste Spaltenadresse lässt sich vorab (überlappend mit <strong>de</strong>m momentanten<br />
Zugriff) angeben beschleunigte Folgezugriffe<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Burst-Mo<strong>de</strong>s bei SDRAMs (synchrones DRAM)<br />
49<br />
<br />
<br />
<br />
<br />
Die internen Abläufe wer<strong>de</strong>n durch<br />
<strong>de</strong>n Bustakt (CLK-Eingang)<br />
synchronisiert, dadurch können die<br />
Ansteuerzeiten reduziert wer<strong>de</strong>n.<br />
DDR = double data rate, bei<strong>de</strong><br />
Taktflanken wer<strong>de</strong>n genutzt<br />
Die Steuersignale wer<strong>de</strong>n zu einem<br />
Steuerwort zusammengefasst.<br />
Aktionen<br />
<br />
<br />
Aktivieren <strong>de</strong>r Zeile i<br />
Lesen/Schreiben <strong>de</strong>s Bits j<br />
<br />
<br />
Intern sind 2 (o<strong>de</strong>r mehr)<br />
Speicherbänke vorhan<strong>de</strong>n, die beim<br />
Zeilenwechsel zyklisch aktiviert<br />
wer<strong>de</strong>n.<br />
Die Bänke wer<strong>de</strong>n überlappend<br />
aktiviert (Ver<strong>de</strong>ckung <strong>de</strong>r Precharge<br />
Time)<br />
unterstützte Blocklängen: 1, 2, 4, 8,<br />
Spaltenzahl (komplette Zeile)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Technische Weiterentwicklung SDRAM<br />
50<br />
Takt: 100 133 200<br />
<br />
<br />
<br />
<br />
effektiver Takt bis 1066 MHz<br />
Single Data <strong>Ra</strong>te (SDR) Double<br />
Data <strong>Ra</strong>te (DDR)<br />
2 4 Bänke<br />
Interne Verdoppelung o<strong>de</strong>r<br />
Vervierfachung <strong>de</strong>r<br />
Speicherdatenbreite, um die externe<br />
Zugriffsrate zu erreichen.<br />
Chip Modul Speichertakt I/O-Takt ² Effektiver Takt ³ Ü-rate pro Modul Ü-rate Dual-Channel<br />
DDR2-800 PC2-6400 200 MHz 400 MHz 800 MHz 6,4 GB/s 12,8 GB/s<br />
DDR3-1066 PC3-8500 133 MHz 533 MHz 1066 MHz 8,5 GB/s 17,0 GB/s<br />
² = Geschwindigkeit <strong>de</strong>r Anbindung an <strong>de</strong>n Speichercontroller von CPU o<strong>de</strong>r<br />
Mainboard<br />
³ = Effektiver Takt im Vergleich zu SDR-SDRAM (theoretisch)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Interne Struk<strong>tu</strong>r eines DDR Speicherchips<br />
51<br />
256 MBit (32Mx8) DDR Chip<br />
4 Bänke<br />
interne Datenbreite 16 Bit<br />
externe Datenbreite 8 Bit<br />
DQS = bidirektionales<br />
Strobesignal zeigt Gültigkeit<br />
<strong>de</strong>r Daten an. Dient zur<br />
Synchronisation<br />
DM = DataInMask<br />
zeigt das zu schreiben<strong>de</strong> Byte<br />
an.<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Burst-Mo<strong>de</strong>s bei Synchronen (statischen) SRAMs<br />
52<br />
<br />
schnellerer, mit <strong>de</strong>m Takt<br />
synchronisierter Zugriff im Vergleich<br />
zu <strong>de</strong>n asynchronen SRAMs<br />
<br />
Hauptanwendung: Realisierung<br />
prozessorexterner Caches (L2-<br />
Cache)<br />
<br />
öffnen und schließen <strong>de</strong>r Zeile<br />
entfällt, direkter Zugriff<br />
<br />
Nebenanwendung: als schnelle<br />
Speicher für Mikroprozessoren und<br />
FPGAs einsetzbar<br />
Unterstützung von 4-Wort und 2-<br />
Wort-Bursts (syncburst SRAM)<br />
<br />
Speichwortbreite 16 o<strong>de</strong>r 32 Bit<br />
<br />
Beispiel für einen SRAM-Modul<br />
<br />
<br />
<br />
<br />
Datenkapazität: 512 kByte<br />
Zugriffsbreite 64 Bit<br />
2 SRAMs mit je 64 K * 32 Bit für die<br />
Daten (Cache-Lines)<br />
zusätzlich 1 SRAM mit 16K * 8 Bit<br />
für das Tag<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
SyncBurst SRAM Varianten<br />
53<br />
<br />
<br />
<br />
Single Data <strong>Ra</strong>te<br />
flow-through: kein Ausgaberegister<br />
pipelined: Ausgaberegister<br />
• erlaubt dadurch höhere Tak<strong>tu</strong>ng<br />
Double Data <strong>Ra</strong>te, DDR-SRAM<br />
höhere externe Taktraten<br />
interne Verbreiterung <strong>de</strong>r Datenpfa<strong>de</strong><br />
Quad Data <strong>Ra</strong>te<br />
Schreib- und Leseport getrennt<br />
paralleles Schreiben und Lesen von Blöcken<br />
adr<br />
din<br />
dout<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Zugriffe, maßstabsgetreu<br />
54<br />
Einzelwort- / 4 Wort-Zugriff<br />
Einzelwort- / 4 Wort-Zugriff<br />
Zwei 4 Wort-Zugriffe<br />
Zwei 4 Wort-Zugriffe<br />
Zwei 4 Wort-Zugriffe Read<br />
Zwei 4 Wort-Zugriffe Write<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Ergänzungen<br />
55<br />
<br />
<br />
<br />
<br />
Timing 128Mbit Graphic DDR SDRAM<br />
Measurement DDR333<br />
einfacher Speicherschutz<br />
Begriffe bei <strong>de</strong>r Speicheradressierung (Zusammenfassung)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Timing 128Mbit Graphic DDR SDRAM<br />
56<br />
Rev 1.1(Nov 2004)<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Measurements at DDR333 SODIMM<br />
57<br />
data<br />
strobe<br />
Altera Stratix Device and Micron DDR333 SODIMM<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Einfacher Speicherschutz<br />
58<br />
Die CPU gibt ein Sta<strong>tu</strong>ssignal User/Supervisor aus.<br />
Der Adressraum wird in zwei Hälften geteilt. In <strong>de</strong>r unteren Hälfte befin<strong>de</strong>t sich <strong>de</strong>r Supervisor-<br />
Speicher, in <strong>de</strong>r oberen <strong>de</strong>r User-Speicher.<br />
Im User-Mo<strong>de</strong> kann nur <strong>de</strong>r User-Speicher aktiviert wer<strong>de</strong>n (durch Adressen mit A31=1)<br />
Im Supervisor-Mo<strong>de</strong> können bei<strong>de</strong> Speicher aktiviert wer<strong>de</strong>n.<br />
Adressbit A31<br />
User/Supervisor<br />
Supervisor<br />
Supervisor Programm/Data<br />
A31=0<br />
CPU<br />
Sta<strong>tu</strong>ssignal<br />
User<br />
User Programm/Data<br />
A31=1<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10
Begriffe bei <strong>de</strong>r Speicheradressierung (Zusammenfassung)<br />
59<br />
Seitennummer<br />
Wortnummer (Adr. im Speicher)<br />
ADRHigh ADRLow ADRByte<br />
Byteadresse<br />
1010 1111 0000 xxxx xxxx xxxx xxxx xx xx<br />
Seite (Seitenadressbereich)<br />
x = 0 o<strong>de</strong>r 1<br />
1010 1111 0000 0000 0000 0000 0000 00 00<br />
Basisadresse<br />
1010 1111 0000 xxxx xxxx xxxx xxxx xx **<br />
12 18 2<br />
Adressmaske<br />
für Speicherbaustein mit<br />
20 Bit Adresse<br />
x = 0 o<strong>de</strong>r 1<br />
* = nicht angeschlossen<br />
R. Hoffmann, TU Darmstadt, FG Rechnerarchitek<strong>tu</strong>r Systementwurf mit Mikroprozessoren WS 09/10