Forum: PC Hard- und Software DDR4-3200 Interner Datenbus zwischen Speicherchip und IO


von Torben S. (Firma: privat) (torben_25)


Lesenswert?

Es geht um das DIMM DDR4-3200.

Weiß jemand, ob der Datenbus zwischen Speicherchip und I/O-Buffer auch 
zwei Transfers pro Taktperiode (Double-Data-Rate-Verfahren) ermöglicht 
oder trifft das nur auf den I/O-Takt zu?

von Achim S. (Gast)


Lesenswert?

Torben S. schrieb:
> ob der Datenbus zwischen Speicherchip und I/O-Buffer auch zwei Transfers
> pro Taktperiode (Double-Data-Rate-Verfahren) ermöglicht

ja, macht er

von Jim M. (turboj)


Lesenswert?

Ja, aber IIRC sind die bei den 3200MHz schon einberechnet.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

DDR4-3200 läuft mit 1600 Mhz und zwei Datentransfers pro Takt. Oft wird 
auch der theoretisch maximal mögliche Datendurchsatz angegeben, das sind 
bei DDR4-3200 25.600MB/s.

von Torben S. (Firma: privat) (torben_25)


Lesenswert?

Durch ein 8-Bit-Prefetching liefert der interne Speicher acht, anstatt 
zwei bzw. 4 Bit pro Taktschritt an ein Ein-/Ausgabe-Puffer. Wie macht 
der das eigentlich? Läuft das mit Zeitmultiplex? Oder ist das QDR?

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Man muß ein wenig aufpassen wie die Begriffe verstanden werden wenn man 
solche Texte liest. DDR4 verwendet ein 8-Bit-Prefetch, also 8 Bit in 4 
Clock-Zyklen, was man als "einen Arbeitstakt" zusammenfassen könnte. 
Sprich man adressiert einmal, startet den Transfer und bekommt 8 Bit 
geliefert - wobei sich "ein Bit" auf die gesamte Busbreite (64 Bit) 
bezieht.

Dabei ist ein DDR4-Modul in mehrere kleinere Bereiche unterteilt, die zu 
verschiedenen Zeiten aktiv sein können. Dadurch können die Dinger solche 
Manöver machen wie Daten lesen und gleichzeitig die nächsten Daten (in 
einem anderen Bereich) adressieren. Der 8-Bit-Prefetch kann auch nach 4 
Bit abgebrochen und Daten aus einem anderen Bereich gelesen werden. Aus 
dem gleichen Bereich geht nicht, da dieser trotz Abbruch für die 
kompletten 8 Bit busy bleibt.

QDR ist im direkten Vergleich mit DDR ein wenig geschummelt, weil das 
nämlich zwei CLK-Leitungen mit phasenversetztem Signal verwendet.

von Torben S. (Firma: privat) (torben_25)


Lesenswert?

Ben B. schrieb:
> startet den Transfer und bekommt 8 Bit
> geliefert - wobei sich "ein Bit" auf die gesamte Busbreite (64 Bit)
> bezieht.

Heißt das, dass jede Taktflanke 64 Bit liefert. Das würde bedeuten der 
interne Speicherbus ist ein paralleler Bus bestehend aus 64 Leitungen?

von Torben S. (Firma: privat) (torben_25)


Lesenswert?

Es klingt ein bisschen seltsam, dass 8 Datenbits in zwei Taktperioden 
ausgelesen und als einen Arbeitstakt zusammengefasst werden. Eigentlich 
müsste dann ausgehen von einem internen 400MHz-Bus die Periodendauer 2 
Taktperioden umfassen, wodurch man den Bus mit 200MHz angeben müsste.

von Achim S. (Gast)


Lesenswert?

Torben S. schrieb:
> Das würde bedeuten der
> interne Speicherbus ist ein paralleler Bus bestehend aus 64 Leitungen?

Versuche die Begriffe möglichst klar zu verwenden. Meinst du mit 
"intern" jetzt intern im DRAM-Chip? (Das würde zu deiner vorheringen 
Frage zum Prefetch passen). Oder meinst du "intern auf dem LR-DIMM"?

Die Verbindung zwischen DIMM und Speichercontroller auf dem PC ist schon 
seit vielen Speichergenerationen auf 64 Bit Busbreite ausgelegt. (Mit 
kleinen Variationen, wenn das DIMM zusätzliche Daten zur 
ECC-Fehlererkennung speichern soll. Und mit einem kurzen 
Konkurrenz-Ansatz, als vor Jahren das RAMBUS-Speicherinterface am Markt 
war). Die 64Bit, die das DIMM auf einmal nach außen liefern muss, sind 
natürlich auch "intern auf dem DIMM" als paralleler Bus vorhanden.

Intern im DRAM-IC müsste man ggf. in die Unterlagen der einzelnen 
Chip-Hersteller schauen (und die werden im Normalfall nicht öffentlich 
machen, wie die genaue, chipinterne Busstruktur aussieht, sondern 
bestenfalls Prinzipbilderchen veröffentlichen). Aber 64Bit breite Busse 
innerhalb eines sind nichts besonderes. Im IC integriert lassen sich 
solche breiten Busse relativ kostengünstig und effizient betreiben.

Torben S. schrieb:
> Eigentlich
> müsste dann ausgehen von einem internen 400MHz-Bus die Periodendauer 2
> Taktperioden umfassen, wodurch man den Bus mit 200MHz angeben müsste.

In dem Bereich wird mit "effektiven Taktraten" und ähnlichen 
Kunstbegriffen schon genug Verwirrung gestiftet. Es gibt genau eine 
"echte" Taktrate eines Taktsignals, uns das ist der Kehrwert der 
tatsächlichen Taktperiode. Ich würde dir empfehlen, dich der Klarheit 
wegen zunächst mal immer auf die Taktrate zu beziehen, die extern am 
DRAM-IC angelegt wird (die man im Prinzip also mit einem Oszi nachmessen 
könnte).

Wenn du z.B. das Datenblatt von folgender Seite runterlädst:
https://www.micron.com/products/dram/ddr4-sdram/part-catalog/mt40a256m16ge-075e-aat
dann kannst du nachlesen, dass das DRAM intern tatsächlich eine 
runtergeteilte Taktfrequenz verwendet. Der Teilerfaktor ist bei DDR4 
sogar über ein Mode-Register Bit einstellbar (siehe Fig. 40).

Was die Frage angeht, wie der interne Bus im DRAM-IC tatsächlich 
aussieht und wie er betrieben wird: da müsste man ggf. in die Unterlagen 
der einzelnen Chip-Hersteller schauen (und die werden im Normalfall 
nicht öffentlich machen, wie die genaue, chipinterne Busstruktur 
aussieht, sondern bestenfalls Prinzipbilderchen veröffentlichen).

Im oben verlinkten Datenblatt siehst du in Fig. 3 ein entsprechendes 
Prinzipbild. Dort sind ist die IC-interne Datenbusbreite mit 128 bit 
angegeben. Die 128bit werden für die x16 Variante des ICs benötigt(die 
pro pro halbem externen Takt gleich 2 Byte liefern können muss)

von Torben S. (Firma: privat) (torben_25)


Angehängte Dateien:

Lesenswert?

Achim S. schrieb:
> Versuche die Begriffe möglichst klar zu verwenden. Meinst du mit
> "intern" jetzt intern im DRAM-Chip? (Das würde zu deiner vorheringen
> Frage zum Prefetch passen). Oder meinst du "intern auf dem LR-DIMM"?

Hallo Achim,

Mir geht es um den Takt der in der angehängten Grafik zwischen Chip-Kern 
und I/O-Buffer angegeben ist. Das ist eine Grafik aus einem Schulbuch. 
DDR4 wird dort noch nicht berücksichtigt. Bei DDR4-3200 beträgt der 
Prefetch-Faktor ja 8. Meinem Verständnis nach wird dabei die geringe 
Taktfrequenz von 400 MHz ein 8-fach-Prefetch benutzt, um effektiv 1600 
MT/s zu realisieren, was mit der Taktrate des I/O-Buffers dann wieder 
kompatibel wäre.  Wir Schüler wollten nach einer Präsentation wissen, 
wie dieser 8-fach-Pretech realisiert wird. Hier gab es unterschiedliche 
Meinungen. Eine Theorie lautet, es werden 8 Bit pro Taktperiode 
übertragen, aber wie soll das bitte funktionieren bei zwei Taktflanken?

: Bearbeitet durch User
von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

Torben S. schrieb:
> Mir geht es um den Takt der in der angehängten Grafik zwischen Chip-Kern
> und I/O-Buffer angegeben ist.

Ok. Du musst dir bewusst sein, dass das eine sehr abstrakte 
Prinzipskizze ist. Wie die einzelnen DRAM-Hersteller tatsächlich den Bus 
bauen und betreiben, kann sie auch nur "im Prinzip" wiedergeben.

Torben S. schrieb:
> Eine Theorie lautet, es werden 8 Bit pro Taktperiode
> übertragen, aber wie soll das bitte funktionieren bei zwei Taktflanken?

Ja: das reicht nicht für die benötigte Datenrate. Wenn wir ein DRAM in 
x8-Organisation betrachten (also mit 8 Datenpins), dann muss das pro 
externem Takt 2*8=16 Bit an Daten liefern.

Wenn der interne Takt beim Zugriff aufs Array um einen Faktor 4 
langsamer ist als der externe Takt, dann muss der interne Bus 
entsprechend breiter sein. Also einen Faktor 4 breiter wegen der 4-fach 
Taktteilung. Und dann noch mal einen Faktor 2 breiter wenn intern mit 
single data rate gearbeitet wird, extern mit double data rate. Damit 
kommst du auf die 4*2*8=64 Bit, die du selbst ja schon vermutet hast.

Ob es jetzt wirklich 64 Bit sind, wirst du im Normalfall nicht 
rauskriegen. Es kann genau so gut sein, dass es in Wirklichkeit 128Bit 
sind (weil das selbe IC auch als x16-Baustein konfiguriert und verkauft 
werden kann und dann doppelt so viele Daten pro externem Takt liefern 
muss). Oder es wäre theoretisch auch denkbar, dass der interne Bus nur 
halb so breit ist und ebenfalls in double data rate (also bei beiden 
Taktflanken) genutzt wird. Das ist zwar ziemlich unwahrscheinlich, aber 
wirklich wissen kann das nur jemand, der Einblick in die 
Designunterlagen der Hersteller hat. Ein normaler Kunde hat das nicht.

Deswegen kann man sich bestenfalls an die Prinzipschaltbilder in den 
Datenblättern halten. Micron schreibt für DRAM üblicherweise recht gut 
gestaltete Datenblätter, daher in meinem letzten Beitrag der Link 
dorthin. Im Anhang ein Bild aus den Micron-Datenblatt, das für den 
Baustein in x8 gilt. Du siehst, dass der Chip-interne Datenbus dort mit 
64 Bit Breite angegeben ist. Beim x16-Chip ist im entsprechenden 
Diagramm von Micron eine Busbreite von 128 angegeben. Ob da wirklich 
zwei unterschiedliche Chips mit zwei unterschiedlichen internen 
Busbreiten verwendet werden (unwahrscheinlich), oder ob in Wirklichkeit 
beide male die Busbreite 128 beträgt, aber bei x8-DRAM nur die Hälfte 
des Busses genutzt wird, kann nur Micron selbst genau wissen.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Die Speicher-ICs laufen intern soweit ich weiß mit dem vollen extern 
anliegenden Takt, also kein Puffern von seriell verarbeiteten Bits. Das 
ist auch seit vielen Jahren die technische Grenze, an der DDR-DRAM 
betrieben wird: Welcher Takt kann bei welcher Verlustleistung erreicht 
werden bzw. welche Verlustleistung ist akzeptabel und welchen Takt 
erreiche ich damit. Daher sinkt die Betriebsspannung immer weiter ab 
(DDR1 2,5V, DDR2 1,8V, DDR3 1,5V, DDR4 1,2V) und dadurch kann die 
Taktrate bei gleicher Verlustleistung weiter gesteigert werden. 
Gleichzeitig wird auch noch ein wenig getrickst, die Adressleitungen 
werden Chip-intern mit 2,5V "geboostet", damit die Pegel noch ein wenig 
schneller anliegen.

Vielleicht schaust Du Dir mal RDRAM (Rambus) an. Diese ICs verwenden 
intern einen 100Mhz Datenbus mit 128 Bit, der auf externe 800Mhz mit 16 
Bit abgebildet wird. Also ein Trick, wie man damals so hohe Taktraten 
ohne zu starke Erwärmung erreichen konnte, da nur die externe Buslogik 
mit so hohem Takt laufen mußte. Dennoch sind auch diese ICs bereits 
verlustleistungslimitiert, vor allem bei Bursts auf die gleichen nahe 
beieinander liegenden Adressen wird der entsprechende IC (alleine) 
extrem heiß und alle PC-Module brauchten Kühlkörper. Allerdings war 
schon das Design meiner Meinung nach zu knapp auf Kante genäht. 16 Bit 
Busbreite waren damals schon lange nicht mehr zeitgemäß. Den gleichen 
Fehler hat nVidia ein paar Jahre später beim NV30 gemacht, der hatte nur 
128 Bit Busbreite, während die Konkurrenz (ATI R300) 256 Bit verwendete. 
Um das auszugleichen, mußte er extrem hoch getaktet werden, wurde 
entsprechend heiß und gerüchteweise im Bundle mit Atomkraftwerken 
angeboten. Die FX5800-Karten sind heute noch für ihre Lautstärke berühmt 
und berüchtigt ("die mit dem Föhn").

Das wesentlich einfacher aufgebaute DDR-DRAM verwendete damals schon 64 
Bit externe Busbreite, die auf dem Modul über die ICs verteilt werden 
(z.B. 8 ICs auf dem Modul ergibt 8 Bit Daten pro IC, 8 dieser ICs 
parallel und man hat 64 Bit). In Verbindung mit dem DDR-Trick reichten 
100 Mhz, um einem Rambus-Modul gleichzukommen, 133MHz (DDR-266) waren 
quasi sofort verfügbar und Rambus damit "am Arsch".

von Torben S. (Firma: privat) (torben_25)


Lesenswert?

Hallo Achim, hallo Ben,

ich bin euch unheimlich dankbar, dass ihr mir hier so ausführlich 
geholfen habt. Ich hatte mir schon tagelang darüber den Kopf zerbrochen.

Ein tolles Forum!

von Achim S. (Gast)


Lesenswert?

Ben B. schrieb:
> Die Speicher-ICs laufen intern soweit ich weiß mit dem vollen extern
> anliegenden Takt

die reinen Logik-Teile des ich ICs vielleicht schon. aber die Zugriffe 
auf das Cell-Array, die"halb analog" sind, nicht. da geht man den Weg 
über größere Parallelität und langsamer getaktete Zugriffe.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> Ein tolles Forum!
Nö, leider nicht, das sieht man an den Bewertungen wenn man sich Mühe 
gibt und zu helfen probiert. Wenn man will, daß die Bewertungen zum 
Inhalt des Beitrages passen, darf man von Anfang an nur Scheiße 
schreiben. Also alles andere als ein tolles Forum!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.