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?
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
Ja, aber IIRC sind die bei den 3200MHz schon einberechnet.
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.
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
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.
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?
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.
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)
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
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.
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".
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!
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.
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.