Funktionsweise Dual-Channel

sharptooth

Admiral Special
Mitglied seit
11.11.2001
Beiträge
1.766
Renomée
15
Hallo,

ich behaupte von mir, mich ziemlich gut mit Computern auszukennen. Aber eins verstehe ich nicht so ganz, und da konnte auch Wikipedia & Co mir nicht weiterhelfen. Wie genau funktioniert Dual-Channel? Sagen wir, wir haben 2 Speicherriegel, je 2 GB und mit je 64 bit angebunden. Wieso steigt nun die Speicher(band-)breite auf 128 bit im DC? Sagen wir, die CPU benötigt bestimmte Daten, welche physisch im 1. Speichermodul liegen. Dann greift sie ja trotzdem nur mit 64 bit drauf zu, oder? Was nützt es, dass theoretisch 128 bit anliegen? Oder bei einer IGP, welche ja sehr stark von DC profitieren. Wenn deren Grafikspeicher physisch im 2. Speichermodul liegt, die CPU aber auch Daten aus dem 2. Modul benötigt, kommen sie sich ja trotzdem in die Quere, oder? Was nützt dann eine theoretische Speicheranbindung von 128 bit? DC wird oft mit Raid 0 verglichen, aber dort werden die Daten ja zerstückelt und auf die Festplatten verteilt, so dass die Lese- und Schreibvorgänge tatsächlich stark beschleunigt werden. Aber bei DC liegen die benötigten Daten immer nur in einem der beiden Module, oder? Woher also die erhöhte Geschwindigkeit (wenn auch teilweise nur minimal)?

Grüße
Sharpy
 
Zuletzt bearbeitet:
Es findet schon eine Art Stripping statt; ähnlich wie bei einem RAID0. Bereits dadurch, dass sich Speicheradressen über mehrere Bänke erstrecken können. Das nennt man Interleaving und diese Technik wurde eingeführt bevor überhaupt an Dual Channel gedacht wurde, da sie auch bei Single Channel Vorteile bietet. Die Blöcke werden also schon seit geraumer Zeit nicht am Stück geschrieben, sondern verschachtelt. Außerdem darfst du nicht vergessen, dass eine CPU mehrere Threads parallel arbeitet. Besonders in einer "Unganged"-Konfiguration bieten mehrere Kanäle dann Vorteile.
 
Zuletzt bearbeitet:
Danke für Deine Antwort. Ich habe nun nach dem Stichwort interleaved memory recherchiert. Manchmal wird der Begriff DC und interleaved memory synonym genutzt. Es scheint in der Tat so, dass die beiden Speichermodule mit "gestrippten" Daten abwechselnd beschrieben bzw. gelesen werden. Bei welchen Chipsätzen das Interleaving auch innerhalb des gleichen Speichermoduls geschieht, konnte ich nicht in Erfahrung bringen. Sollte es bei allen aktuelleren Chipsets der Fall sein, wird dann durch DC ein zusätzliches Interleaving eingeführt? Also wie Festplatten, welche bei SC zwar auch im Raid 0 laufen, aber alle am gleichen Controller hängen und dann bei DC die gleiche Anzahl an Festplatten dazukommt, ebenfalls untereinander im Raid 0 verbunden, aber dann an einem zweiten Controller hängen und so die Gesamtleistung steigern, weil simultan von beiden Controllern gelesen / geschrieben werden kann, zusätzlichen zu den Controllerinternen Raid 0 Verbünden? Das ist mal eine lange Frage :) Wird denn der Grafikspeicher der IGPs auch gestrippt? Mich wundert es aber, dass trotz dieses Strippings die Leistungszuwächse durch DC so gering sind.

Grüße
Sharpy
 
Zuletzt bearbeitet:
Mich wundert es aber, dass trotz dieses Strippings die Leistungszuwächse durch DC so gering sind.
Sind sie das denn? Speicherzugriffe finden ja immerhin fast doppelt so schnell statt.
Wahrscheinlich liegt es eher daran, dass Speicherzugriffe allgemein einen eher geringen Einfluß auf die Gesamtleistung des Systems haben.
 
Kann sein, dass es daran liegt. Also dass DC die Speicherzugriffe schon stark beschleunigt, aber insgesamt macht das nicht so viel aus.
Interessant ist es, dass es dem Betriebssystem, den Programmen und der IGP völlig wurscht ist, ob ihr Speicher auf einem Riegel oder gestripet auf 2 Riegeln verteilt liegt, dass es also da zu keinen Abstürzen kommt. Liegt wohl an dem logischen statt physikalischem Speicherzugriff.

Grüße
Sharpy
 
128 Bit sind nur im Ganged Modus verfügbar, kann aber dafür quasi nur 1 Task abgearbeitet werden, macht Sinn bei z.b On-Board Grafik um einen höheren Durchsatz. Im Unganged Modus können 2 Task a 64-Bit genutzt werden, bei geringerer Bandbreite, dies als kleiner Zusatz einfach ausgedrückt.
 
Inwieweit tangiert das Feature "Channel Interleaving" das hier Besprochene? Mit dem von SPINA genannten Interleaving ist es ja nicht identisch?
 
Ich vermute, dass das mem interleaving beim channel interleaving erhalten bleibt und ergänzt wird. Angenommen, wir haben beim SC 2 Blöcke, 1 und 2, welche abwechselnd beschrieben werden (Bl 1 hat z b. die Adressen 1-64, Bl 2 65 - 128, Bl 1 129-192, Bl 2 193-256 usw.). Wenn dann ein weiterer RAM-Riegel dazukommt und beide im DC arbeiten, liegt Block 2 auf dem 2. Riegel, Block 3 auf dem 1. Riegel und Block 4 auf dem 2. Riegel, weil durch den 2. Riegel 2 neue Blöcke hinzugekommen sind. BL 1 = 1 - 64, BL 2 = 65 - 128, BL 3 = 129 - 192, BL 4 = 193 - 256 etc.
Ist das so korrekt?

Sharpy
 
Das der Leistungszuwachs durch Dual-Channel im allgemeinen sehr gering ausfällt hat meines Wissens nach damit zu tun das bei den heutigen Prozessoren viele Berechnungen innerhalb der immer grösser werdenen Caches stattfinden. Zudem kommt hinzu das moderne CPUs auch immer effizientere Sprungvorhersagen haben.

Die allergrösste Anzahl an Berechnungen findet mit den Daten im CPU-internen Register statt.
Werden dort Daten gefordert die sich nicht in den Registern befinden werden sie im L1 Cache gesucht und zumeist auch gefunden.
Sind sie dort auch nicht zu finden wird im L2 Cache gesucht, usw. .....L3 Cache.

Die Sprungvorhersage dient dazu bei einem ablaufenden Programm welches ja eigentlich immer irgendwelche Schleifen etc. enthält
die Daten die am Ende der Schleife gebraucht werden aus dem Ram in die schnelleren Speicher zu kopieren, damit gar nicht erst eine Wartezeit entsteht.
siehe auch "Cache hit", "Cache miss"
Für die CPU sind 10ns Wartezeit für neue Daten damit die Berechnung weitergehen kann eine Ewigkeit.

Das ist der Grund warum doppelte Speicherbandbreite nicht doppelt so viel Rechenpower bringt.
In einem Praxisbericht wo es mal untersucht wurde war der Performancegewinn im besten Falle etwa 5% und unterhalb der Messtoleranz im schlechtesen Fall.
 
Zuletzt bearbeitet:
Es kommt außerdem immer darauf an, ob Integer oder Floating Point Berechnungen überwiegen.

Und die L2/L3-Caches puffern zwar eine ganze Reihe Zugriffe, sind jedoch in der Größe beschränkt.
Gerade bei extensiven Floating Point Berechnungen (+ SIMD), können sie schnell "überlaufen".

Dann spielt die doppelte Speicherbandbreite durchaus ihren vollen Nutzen aus.
 
Zuletzt bearbeitet:
Interessante Erläuterungen mit den Caches und der Sprungvorhersage. Das ist eine gute Erklärung für den geringen Leistungsvorteil bei nicht-SIMD Vorgängen. Da die älteren IGPs keinen Cache haben, profitieren sie besonders stark von DC.

Sharpy
 
Also, um mal die ursprüngliche Frage zu beantworten:

Zumindest seit den 486er Zeiten laden Prozessoren mehr Daten, als sie gerade aktuell brauchen. In der Regel immer mindestens eine Cache-line. Das erfolgt im sog. burst mode, den wie gesagt schon der 486 beherrschte. Im K8 ist die cache-line 64 byte groß. Bei 64 bit breitem Speicherkanal sind dann 8 Lesezugriffe nötig, mit 128 bit nur noch die Hälfte. Das spart aber nicht unbedingt die Hälfte der Zeit ein, weil der erste Zugriff prinzipiell länger dauert und auch im dual-channel nicht schneller wird.

Im unganged mode ist die Idee, dass zwei Speicherkontroller unabhängig von einander jeweils 64bittig arbeiten und damit gleichzeitig aus verschiedenen Speicherstellen Daten liefern können. In modernen multi-threaded Umgebungen ist das offensichtlich etwas schneller, als ganged mode.
 
Offensichtlich? Ich dachte immer, ganged sei die bessere Wahl. Deswegen wurde an ASRock-(AMD-(?))-Mainboards letztens öfter rumgenörgelt - dort wird die Wahl zwischen ganged und unganged automatisch getroffen.

Andere Meinungen zu ganged vs. unganged?
 
Der Speichercontroller der FX Serie ist noch nicht vollständig erklärbar, er gehört wohl zu den gehüteten Bereich der Programmierer.
Hier wurde mal ein Vergleich mit einem Phenom II gemacht, inwiefern das auch auf den FX zutrifft weiß ich nicht: http://www.ilsistemista.net/index.p...-the-ganged-vs-unganged-question.html?start=1

Ich vermute mal, ob ganged oder unganged, wird dem/r Programmierer/in überlassen.
Das würde auch erklären, warum es kein Unterschied bei Speicher Benchmarks zwischen u-ganged & ganged gibt.
Das selbe gilt auch für die FX-8 FPU (4x256Bit oder 8x128Bit) .
 
Zuletzt bearbeitet:
Ich hab mal eine ganz dumme Frage: Speicher arbeitet ja auch dann im DC, wenn er nicht komplett adressierbar ist, oder? Konkret: ich hab einen Laptop mit einem C2D und einem 965er Chipsatz, 2x2 GB Ram, welches im DC angesprochen werden müsste. Habe als BS Vista 32 bit, welches nur 3 GB adressieren kann. Die DC-Fähigkeit ist ja davon nicht betroffen, oder? Also es ist nicht so eine Art Flexmode wie bei 1+2 GB Ram, wo nur 2 GB im DC laufen. Also ich meine, dem Speicherkontroller ist es ja egal, das da ein OS läuft, welches nicht die vollen 4 GB nutzen kann, oder? Die kompletten 3 GB müssten ja im DC laufen, auch die dahinter liegende Ramdisk.

Sharpy
 
Zuletzt bearbeitet:
Hallo,

Ob der Speicher im Dualchannel läuft, spielt sich im Chipsatz und der CPU ab. Das Betriebssystem kommt erst dahinter. Das Betriebssystem adressiert seinen ihm zu Verfügung stehenden Speicher, wie schnell darauf zugegriffen wird, machen CPU, Chipsatz und die Einstellungen im BIOS aus. Also auch mit Vista 32bit und 3,3 GB verfügbarem Speicher von 4 GB läuft der RAM im Dualchannel-Modus.

Gruß
 
Wer sich unsicher ist unter Windows kann das auch einfach mit cpu-z kontrollieren.
 
@WU 134: genau diese Antwort habe ich erwartet, vielen Dank.

@eratte: CPU-Z kann ich da nicht trauen, sowohl mit 2x2 GB als auch mit 1+2 GB (Flex-Mode) stand da Dual Symetric, was aber beim Flex-Mode nicht stimmt. Auch HWInfo32 meldete in beiden Fällen DC, was zwar im Prinzip stimmt, aber der Flex-Mode ist kein richtiger DC.

Sharpy

Übrigens, der Flex-Mode ist eine Funktion mancher Intel-Chipsätze, auch bei ungleicher Speicherbestückung teilweise im DC zu arbeiten und zwar arbeitet der kleinere Riegel im DC mit dem gleich großen Bereich des größeren Riegels, der Rest arbeitet im SC. Bei 1+2 GB arbeiten 1+1 GB im DC, die restlichen 1 GB des 2 GB Riegels arbeiten im SC.
 
Zuletzt bearbeitet:
Ok solche Speicherkombis habe ich immer gemieden.

Laut Wiki müsste es in deinem Fall Dual Channel Asymmetric heißen.
 
Deswegen und auch wegen der Ramdisk habe ich mir einen 2. 2 GB Riegel hier im Forum gekauft. Es werden zwar nur 3 GB von Vista erkannt, aber die laufen jetzt komplett im DC (wie von WU 134 bestätigt) und ich habe noch eine 1 GB große Ramdisk zusätzlich.

Sharpy
 
Zurück
Oben Unten