06.06.2014 Aufrufe

CS - Ra.informatik.tu-darmstadt.de

CS - Ra.informatik.tu-darmstadt.de

CS - Ra.informatik.tu-darmstadt.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!