Dual Channel - Was passiert ab 51% Belegung?

CaptainPicard

Commander
🎅Rätsel-Elite ’25
Registriert
Juli 2013
Beiträge
2.111
Hallo, liebe Leute!

Ich hab da mal eine Verständnisfrage.
Wir betreiben ja fast alle unseren RAM im Dual Channel.

Angenommen es sind 2 Module a 8 GB verbaut, was passiert ab 51% Speicherbelegung?
Läuft der RAM dann im Single Channel bis die 16 GB voll sind oder werden Daten ausgelagert damit man weiter im Dual Channel bleibt?

Bei ersterem Szenario: Wäre es dann nicht sinnvoll 32 GB RAM zu verbauen, damit man immer im Dual Channel bleibt?

Wäre nett, wenn mir das jemand erklären könnte!

LG, JL
 
  • Gefällt mir
Reaktionen: madmax2010
dann sind beide module 25.5% voll.

was die verteilung von daten im ram angeht, kann ich dir diesen Artikeln empfehlen (lies aber gern die englsiche version. Worte wie Seitenersetzungsstrategien triggern einfach hart:
https://de.wikipedia.org/wiki/Paging
 
  • Gefällt mir
Reaktionen: Otsy, Ned Flanders und Redundanz
Warum sollte es etwas aendern? 50% belegung bei 8 GB Dual Channel bedeutet, dass beide Riegel zu 4GB belegt sind. Also sind noch 4Gb Frei in beiden riegeln.

Anders sieht es bei krummen bestueckungen aus, als 1x8GB und 1x4GB. Hier gibts nach 8Gb belegung nur noch single channel.
 
Wer stellt eigentlich sicher, dass beide Speicherriegel gleichmässig ausgelastet werden? Niemand. Dualchannel heißt lediglich, dass jeder Riegel an einem eigenen Bus hängt.
 
Jongleur666 schrieb:
Wer stellt eigentlich sicher, dass beide Speicherriegel gleichmässig ausgelastet werden?
Meinst nicht, das sich nVidia, intel und AMD da schon einen Kopf drüber zerbrochen haben?
 
  • Gefällt mir
Reaktionen: DarkSoul
@andi_sco
Eher Microsoft, sofern Windows verwendet wird. Speicherverwaltung ist Aufgabe des Betriebssystems. Und es ist überhaupt nicht notwendig, die Speicherauslastung 50:50 aufzuteilen :D
 
Jongleur666 schrieb:
Und es ist überhaupt nicht notwendig, die Speicherauslastung 50:50 aufzuteilen :D
Und wo kommt dann der Geschwindigkeitsvorteil her, wenn sich der Inhalt nicht auf 2 Riegel verteilt? Wenn man die Busbandbreite von 64 auf 128 Bit pro Takt verdoppelt, würden die ersten 64 Datenbits im ersten Riegel landen und die restlichen 64 Bit dann auf dem Teppich? Oder wie stellst Du Dir das vor? Im selben Riegel können sie nicht landen, weil ein Riegel nun mal nur 64 Bit Bandbreite hat. Das würde dann 2 Takte dauern und dann wäre es wieder langsamer -> Single Channel. Der Dual Channel Vorteil wäre dann dahin.

Ich glaube nicht, dass Windows die Riegel wahlweise im Single oder Dual Channel ansteuern kann, das muss doch vom BIOS vorgegeben werden und Windows setzt da nur drauf auf. Hat jemand eine Quelle dazu?
 
DarkSoul schrieb:
Und wo kommt dann der Geschwindigkeitsvorteil her, wenn sich der Inhalt nicht auf 2 Riegel verteilt?
Lesen und verstehen.
Es muss nicht exakt 50/50 verteilt sein.
Natürlich wird auf beide Kanäle verteilt beim Schreiben.
 
CaptainPicard schrieb:
Ich hab da mal eine Verständnisfrage.
Sinnvoller wäre wohl eine Google-Suche gewesen:

https://www.google.com/search?q=wie funktioniert dual channel

-> https://www.compuram.de/blog/dual-channel-betrieb-fur-ddr-basierende-systeme/#:~:text=Vereinfacht gesagt, verdoppelt eine Dual,Speicherzugriff auf die beiden Speicherkanäle.

Denn es sollte ja eigentlich logisch sein, dass der RAM natürlich parallel befüllt wird. Ist halt wie ein Raid 0. :D

Und es können ja auch unterschiedlich große Module kombiniert werden.
 
dualchannel heisst, daß aus zwei jeweils 64bit "breiten" ramriegel ein virtueller 128bit breiter wird.

das macht die firmware (bios/uefi)und die hardware (speicher und speichercontroller).

unterhalb jedes betriebssystems. nun, ein bios ist auch eine art betriebssystem, halt eine sehr rudimentäre.
ein uefi ist schon weit näher an dem, was man ein betriebssystem unterhalb des user-betriebssystems nennen kann.

das "obendrauf "system sieht nur arbeitsspeicher, auf den es einfach zugreift.

und genau deswegen ist auch im system nix dazu zu konfigurieren.
das betriebssystem nimmt den ram, wie der da ist.

bei den consumerplattformen sind es zwei kanäle, und die virtuelle busbreite ist 128bit.
bei den workstation- und server plattformen sind es derzeit vier oder acht kanäle, die virtuelle busbreite demnach 256bit oder 512bit.

klar ließe sich das in der theorie fortsetzen, aber das zusammenspiel wird schwieriger, je mehr im gleichtakt funktionieren muß.
 
Zuletzt bearbeitet:
nuja, warum sollte das bei drei kanälen anders funktionieren?
 
h00bi schrieb:
Lesen und verstehen.
Wenn man keine Ahnung von der zugrunde liegenden Technik hat, mag man zu diesem Fehlschluss kommen.
h00bi schrieb:
Es muss nicht exakt 50/50 verteilt sein.
Natürlich wird auf beide Kanäle verteilt beim Schreiben.
128 Bit sind 2 mal 64 Bit, es kann nicht weniger geschrieben werden. Natürlich werden, wie ich schon erwähnt hatte, 128 Bit immer exakt 50:50 verteilt.
 
DarkSoul schrieb:
Und wo kommt dann der Geschwindigkeitsvorteil her, wenn sich der Inhalt nicht auf 2 Riegel verteilt?

Auf wenn das RAM in DRAM für "Random Access Memory" steht, ist der Zugriff auf DRAMs nicht ganz so "wahlfrei" wie man es sich theoretisch wünschen würde. Um auf eine bestimme Speicheraddresse zuzugreifen, muss im schlechtesten Fall eine recht komplexer Zyklus durchlaufen werden:
  • Row (Zeile) aktivieren. Dabei werden alle Speicherzellen der Zeile in einen RAM internen Pufferspeicher ausgelesen. Leider zerstört diese Vorgang den Inhalt der Zeile
  • Column(Spalte) schreiben oder lesen. Dabei wird aus der Zeile eine Speicheraddresse ausgewählt und an/vom Speichercontroller übertragen
  • Row zurückschreiben in die DRAM Speichermatrix, dabei wird der im ersten Schritt zerstörte Inhalt wiederhergestellt
Diese ganze Zyklus ist, wenn man ihn komplett durchführt, recht langsam, ungefähr 32ns, eine Ewigkeit für moderne Prozessoren. Daher hat man schon vor langem angefangen, dass zu optimieren. Man hält dafür eine Zeile solange wie möglich "offen", greift dann nur noch auf die Spalten zu, und liest außerdem nicht eine einzelne Adresse, sondern eine Folge von Adressen, durch einen sogenannten "Burst". Das geschieht dann mit dem Speichertakt (bzw. bei DDR (Double Data Rate) mit dem doppelten Speichertakt). Daher ist die Cache Latency (CL) zusammen mit dem Speichertakt der wichtigste Wert bei der Klassifizierung von DRAMs,
Eine 3200CL16 Modul braucht 16 Takte um das erste Word eine Spalte zu liefern, dann folgen die weiteren mit eben 3200MT/s dahinter. Erleichtert wird das ganze dadurch, dass die CPU niemals direkt auf das DRAM zugreift, sondern immer über die Caches. Es wird dabei immer mindestens eine Cacheline geschrieben oder gelesen. Eine Cacheline ist meist 64 Bytes groß, das sind 512 Bits. Bei einem 64Bit breiten Modul ist ein Burst mithin mindestens 8 Zyklen lang. Durch DDR sind das 4 Speichertakte. Daran sieht man auch, dass die Wartezeit (CL=16) 4 mal so lang wie die Übertragung ist.

"Teuer" wird es immer dann, wenn man die Row wechseln muss. Daher haben moderne RAMS mehrere Bänke, meist 4, dadurch kann man bis zu 4 Reihen gleichzeitig offen halten. Wenn man dann noch mehrere "Ranks" hat, kann man noch mehr verteilen. Hier muss man beachten, dass all diese Zeilen, Spalten, Bänke und Ranks festen Bits der Speicheraddresse zugordnet sind, d.h. die Frage ob einer neue Aktivierung erforderlich ist, ergibt sich aus dem Zugriff von alleine.

Dual Channel heißt einfach, dass man zwei Speichercontroller hat, die komplett unabhängig voneinander arbeiten. Aber auch hier ist die Adresszuordnung fest eingestellt, man kann sich also nicht aussuchen, ob Kanal 1 oder 2 verwendet wird. Meist werden die beiden Kanäle "interleaved" auf abwechselnden Adressen verwendet, d.h. z.B. Adresse 0-7 liegt in Bank 0, Adresse 8-15 in Bank 1, dann 16-23 wieder in Bank 0, usw.
Achtung: Das ist nur als Beispiel zu verstehen, wie das Channel Interleaving in aktuellen Intel oder AMD Prozessoren aussieht, habe ich jetzt nicht geprüft.

Um die Ausgangsfrage zu beantworten: Durch die Verschränkung der Adressen wird der adressierbare Speicher gleichmäßig auf die RAM Module, Bänke und Kanäle verteilt. Dadurch wird sichergestellt, das, zumindest im statistischen Mittel, die die Hardware gleichmäßig ausgelastet ist.

DarkSoul schrieb:
Ich glaube nicht, dass Windows die Riegel wahlweise im Single oder Dual Channel ansteuern kann, das muss doch vom BIOS vorgegeben werden und Windows setzt da nur drauf auf. Hat jemand eine Quelle dazu?
All das oben beschriebene wird direkt von der Hardware ausgeführt. Windows hat da gar nichts mit zu tun, das "merkt" davon noch nicht mal was. Das BIOS wirkt insofern mit, als dass es die Konfiguration der Hardware (z.B. Memory Timings) übernimmt.

Es gibt nicht "eine" Quelle die das alles beschreibt.
Manches steht die Datasheets der Prozessoren, bei Intel kommt man da über ark.intel.com ganz einfach ran, bei AMD ist es leider nicht so leicht. Von RAM Herstellern wie Micron gibt es auch Datenblätter. Anderes lernt man in Büchern zu Computerarchitektur.

Hier ist ein netter Artikel zu Memory Timings: https://www.gamersnexus.net/guides/3333-memory-timings-defined-cas-latency-trcd-trp-tras
 
  • Gefällt mir
Reaktionen: DarkSoul und up.whatever
Zurück
Oben