Baal Netbeck schrieb:
Also wenn ich das richtig verstehe, hat mit DDR5 jeder Dimm statt 1x64Bit nun 2x32Bit Anbindung.....mit doppelter Frequenz also eine doppelte (theoretische-Peak)Bandbreite und weil die Bursts länger sind, sogar noch etwas mehr.
Richtig, aber die doppelte Bandbreite hat man nur im ganged Modus, ganged oder unganged war früher schon bei AMD ein großes Thema, google mal danach, denn genau das ist das Thema wenn man von RAM Performance redet. Man kann es sich vorstellen wie bei 2 HDDs die man entweder im RAID 0 oder als JBOD (BIG) laufen. Bei RAID 0 erfolgt im Prinzip jeder Zugriff auf beide Platten, dafür hat man bessere Transferraten aber wenn zwei Zugriffe zeitgleich erfolgen sollen, muss einer warten bis der andere erfolgt ist. Beim JBOD (BIG= ist die erste Hälfte des Adressraums auf der Platte und die zweite Hälfte auf der zweiten, jeder Zugriff geht im Prinzip nur auf eine Platte, aber wenn zwei Zugriffe erfolgen und der eine auf die erste Hälfte des Adressraums des Volumens und der zweite auf die zweite Hälfte, dann können beide wirklich zeitgleich erfolgen, ohne Wartezeit für den Zweiten bis der Erste beendet ist.
Genauso ist es beim ganged oder unganged und auch da hängt es von der Anwendung ab, welcher schneller ist, auch wenn in den üblichen Benchmarks der RAM Bandbreite der ganged vorne liegt bzw. damals lag, denn dies ist ein altes Thema und meistens wird heute automatisch der ganged Modus aktiviert, wenn die Slots entsprechend bestückt sind.
Baal Netbeck schrieb:
Aber diese 2x32 pro Dimm laufen nicht im dualchannel miteinander? oder?
Dualchannel ist das falsche Wort, theoretisch könnten wohl auch beide an einem Channel hängen, als DIMM1 und DIMM2, also 2 DIMM pro Channel. Außerdem ist die eigentlich Frage eben ganged oder unganged.
Baal Netbeck schrieb:
Es ist also keine quadchannel-Bandbreite, sondern zwei verfügbare dual channel Bandbreiten.
Auch das ist so nicht richtig, egal ob ganged oder unganged ist die Bandbreite gleich, wenn man es richtig bencht. Bei Dual Channel unganged wurden bisher pro Zugriff nur halb so viele Bytes geladen, weil ja nur 64 Bit breit zugegriffen wurde, eben bisher mit 64 Bit, bei ganged aber mit 128 Bit. Bencht man singlethreaded, so ist die Bandbreite nur halb so hoch, bencht man mit zwei Threads auf entsprechend passende RAM Adressen, dann bekommt man in der Summe die gleiche Bandbreite.
Was besser ist, hängt von der Anwendung ab. Bei BL8 und 64 Bit Datenbreite werden mit jedem Zugriff 64 Byte geladen, im ganged Modus mit 128 Bit Datenbreite (Dual Channel bis DDR4) sind es entsprechend 128 Byte, werden davon aber weniger als die 64 Byte gebraucht die auch im unganged Modus geladen worden wären, dürfte bei einer Multithreadlast bei der ein anderer Kerne Daten aus einem ganz anderen Adressbereich braucht, die Wartezeit auf den anderen Zugriff eindeutig schlechter sein als die Tatsache in der gleichen Zeit zusätzliche Daten geladen zu haben die dann doch nicht benötigt werden. Dagegen ist eine Anwendung die alleine läuft und große RAM Bereiche sequentiell abarbeitet natürlich im ganged Modus im Vorteil, weil dabei mit jedem Zugriff mehr Daten geladen (oder speichert) werden und man damit weniger Verzögerungen durch die Zugriffe hat. Bei so groß 50ns Latenz der RAM Zugriffe und 5GHz CPU Takt reden wir hier von 250 CPU Takten. Klar versucht man dies in den CPUs durch Vorhersagen zu vermeiden, aber auch die sind nie perfekt, wurde nicht korrekt vorhergesagt welche Daten benötigt werden, muss die CPUs Takte unnötig verbummeln und wurden die falschen Daten vorhergesagt, muss ggf. auch noch gewartet werden bis der unnötige RAM Zugriff abgearbeitet wurde.
Baal Netbeck schrieb:
Das wäre erstmal ziemlich cool, bedeutet aber auch, dass die Bandbreite des einzelnen CPU-Kerns nicht unbedingt doppelt so hoch liegen würde....
Deswegen hängt es eben von der Anwendung ab. Tendenziell geht der Trend ja zu immer mehr CPU Kernen und die Software wird sich dem anpassen (müssen) und dies macht auch nur Sinn, wenn jeder Kern möglichst auf einem eigenen Teil der Daten arbeiten kann, man sieht es bei Cinebench ja schön wie jeder Thread einen Teil des Bildes bearbeitet, weil sonst zu viel Overhead beim der Synchronisierung zwischen den Thread entsteht. Damit greift aber auch jeder Thread auf andere Adressbereiche im RAM zu und der unganged Modus ist dann tendenziell im Vorteil, eben weil Zugriffe auf das RAM damit wirklich parallel möglich sind. Ob die wirklich parallel erfolgen können, hängt natürlich auch davon ab auf jede RAM Adressen jeweils zugegriffen wird.
Baal Netbeck schrieb:
Es sei denn das ganze ist so variabel, dass eine Anfrage auch auf alle vier Channel aufgeteilt werden kann....
Nein, denn jede RAM Adresse ist ja auch bei unganged auf einen bestimmten RAM Riegel zugewiesen, der an einem bestimmten Channel hängt.
Baal Netbeck schrieb:
Das würde zusätzliche Logik bedeuten, die entscheidet, ob Schreibanfragen im dual oder quadchannel bearbeitet werden....viel zu viel Latenz....und beim Lesen würde es nur Vorteile durch eine Parallelisierung geben, wenn auch beide Anfragen vorher im "dual channel" geschrieben wurden...
Nein, da die Daten ja immer an der gleichen RAM Adresse stehen und die Riegel ja fest an einem Channel hängen. Denk an das Beispiel oben mit RAID und JBOD (BIG), da stehen Daten auch fix an einer Adresse und damit auf einer der beiden Platten und wenn man dazwischen wechseln wollte, müssen man alle Daten verschieben.
Nochmal: Im ganged Modus ist RAM wie ein RAID 0 mit einer Stripesize von 8 Byte (bis einschl. DDR4) und im unganged Modus wie ein JBOD (BIG) mit z.B. 2 x 8GB, wo die ersten 8GB auf dem einen Riegel liegen und anderen 8 GB auf dem anderen Riegel. Würde man auf dem einen in den anderen Modus wechseln wollen, unganged auf ganged könnte man die ersten 8 Byte im ersten Riegel da lassen wo sie sind, die nächsten 8 Byte dort müsste dann aber die ersten 8 Byte im zweiten Riegel sein und die Bytes 8 bis 15 im ersten Riegel müssten wiederum auf die Adressen 17 bis 23 verschoben werden usw., also total langsam und damit unpraktisch.
Baal Netbeck schrieb:
Ich sehe da gerade für Spiele einen brauchbaren Vorteil, da die effektiven Latenzen damit sinken dürften.
Nur wenn dabei auf sehr unterschiedliche Adressen zugegriffen wird. Hat die Graka zu wenig RAM und es müssen ständig Daten zwischen dem RAM der Graka und der CPU ausgetauscht werden, dann dürfte es sich wohl eher ins Gegenteil umkehren. Die Gamer dürften aber sowieso weniger im Fokus dieser Entwicklung gestanden haben.
Diese Entwicklung macht nur Sinn, wenn man an den unganged Modus denkt und Multithreadanwendungen im Sinn hat. Denk dran, AMD hat mit dem 3950X und dem TR 3970X 8 Kerne pro RAM Channel eingeführt, beim 3990X sogar 16! Vor gar nicht so vielen Jahren waren beim Mainstream mit 4 Kernen und Dualchannel 2 Kerne pro Channel üblich. Im Sockel 1356 (Ivy Bridge-EN) gab es maximal 10 Kerne, also 3,3 pro RAM Channel, bei 2011-3 22 und bei 2066 maximal 18 Kerne für 4 Channels, also sagen wir mal 5 Kerne/Channel, beim LGA 3647 bis 28 Kerne für 6 Channels, mit 4,667 pro Kern also sogar etwas weniger. Natürlich helfen höhere RAM Frequenzen die Zeit für einen RAM Zugriff und damit Wartezeit auf den nächsten zu verringern, aber typische Multithreadlasten zeichnen sich eben dadurch aus, dass jeder Thread auf einen anderen RAM Bereich zugreift und dabei sind mehr RAM Channel sie unabhängig arbeiten (unganged Modus), eben von Vorteil.
Auch hier sieht man eben: Es ist nicht einfach und gelingt selten die maximale Singlethreadperformance mit der maximalen Multithreadperformance unter einen Hut zu bekommen!