Comment fonctionne le dual channel?

Comment fonctionne le dual channel? - Mémoire - Hardware

Marsh Posté le 17-04-2018 à 22:02:07    

Bonjour à tous.
je cherche à comprendre le fonctionnement des échanges entre le processeur et la mémoire vive en dual channel.
 
je sais qu'en dual channel (pour un système 64 bits), la bande passante est couplée pour être à 128 bits. par contre j'arrive pas à comprendre le mécanisme sachant que les registres du processeur sont en 64 bits.
 
C'est peut être peu clair ce que j'écris, j'espère pouvoir éclaircir en échangeant.
 
Merci par avance pour la culture que vous m'apporterez  :(

Reply

Marsh Posté le 17-04-2018 à 22:02:07   

Reply

Marsh Posté le 18-04-2018 à 07:15:49    

Salut,

 

Le fonctionnement n'est pas vraiment différent du mode single channel.
Comme tu l'as dit, on se retrouve avec 128 bit par ligne d'adresse ce qui théoriquement double la bande passante.

 

Après il faut bien voir que les données ne sont pas directement utilisées par le CPU. Il y a les caches entre les registres internes du CPU et la mémoire.
Même en octo channel à 2400mhz, la mémoire externe reste très lente.

 

Les caches (L1, L2, L3 voire L4) sont là pour compenser cette "faible" performance. En interne le CPU va récupérer à partir de la L1I (instructions 64b/ligne) et la L1D (data 64b/ligne) les données à placer dans ses registres et effectuer les calculs à partir de là.

 

Chaque donnée exécutée passe forcément par ces caches (en dehors de certains codes bien spécifiques) sur les configurations modernes.

 

Donc avoir une interface mémoire de 64b (single), 128b (dual), 256 (quad)... ne change pas vraiment le mapping interne du CPU.

 

Ceci peut t'amener à te renseigner sur le domaine très intéressant et complexe qu'est la "cohérence de cache" :)


Message édité par Nono0000 le 18-04-2018 à 08:40:27

---------------
CPU: 6950X 4.3Ghz (Uncore: 3.7Ghz) WC HM -- Mem: 4x8Go 3200Mhz 14-16-17-32-1T -- Mobo: Asus X99 Deluxe -- GPU: 4080 (GPU: 3015Mhz, VRAM: 12200Mhz) -- Carte Son: X-Fi Titanium Fatal1ty Professional -- SSD: M.2 PCIE XP941 -- Ecran: DELL AW3423DW QD-OLED
Reply

Marsh Posté le 18-04-2018 à 16:22:12    

Donc, si on part d'un processeur Sigle core et mono thread. le processeur récupère 3 éléments (2 L1D + 1 L1I).
 
Si le processeur est à 3Ghz, et la RAM en dual 2,4Ghz (soit équivalent à 4,8Ghz à 64 bits). Ça veut dire que la bande passante apporte plus de données que le processeur ne peut traiter. c'est bien ça?
 
Si je poursuis, le dual channel devient alors intéressant pour le multi-core et multi-threading.


---------------
http://hai.tech.free.fr
Reply

Marsh Posté le 18-04-2018 à 17:28:12    

Ton calcul sur la RAM est beaucoup trop simpliste. Il n'y a clairement pas un accès par période d'horloge ;)
La CAS, la RAS to CAS, RAS pre... et j'en passe, impacte énormément la vitesse des transferts:
http://www.pcstats.com/articleimages/CrucialDDR_timingsDDR.gif

 

Une vue plus complète:
https://upload.wikimedia.org/wikipedia/ja/thumb/c/ca/Ddr3_sdram_timing_spec_at_writing_jp.png/800px-Ddr3_sdram_timing_spec_at_writing_jp.png

 

De plus la mémoire DDR ne fonctionne réellement qu'avec une fréquence /2 par rapport à la valeur commerciale (valeur Double Data Rate)
https://upload.wikimedia.org/wikipedia/commons/thumb/8/81/SDR_DDR_QDR.svg/401px-SDR_DDR_QDR.svg.png

 

Cela joue sur les commandes qui, il me semble, ne sont pas DDR...

 

Sur un CPU récent, je ne sais pas si l'ALU peut être saturée avec des données ne venant que de la RAM (uniquement des "cache misses" donc) même en dual channel.

 

Cela dit le multi-channel prend effectivement de l'importance si le nombre de cœurs augmente.
Mais il ne faut pas perdre de vu que plus il y a de cœurs, plus il peut y avoir un goulot d’étranglement au niveau du contrôleur mémoire car si le débit des accès est augmenté, le nombre d’accès maximum en parallèle reste le même...

 

Encore une fois les caches sont là pour limiter la casse...


Message édité par Nono0000 le 20-04-2018 à 10:58:22

---------------
CPU: 6950X 4.3Ghz (Uncore: 3.7Ghz) WC HM -- Mem: 4x8Go 3200Mhz 14-16-17-32-1T -- Mobo: Asus X99 Deluxe -- GPU: 4080 (GPU: 3015Mhz, VRAM: 12200Mhz) -- Carte Son: X-Fi Titanium Fatal1ty Professional -- SSD: M.2 PCIE XP941 -- Ecran: DELL AW3423DW QD-OLED
Reply

Marsh Posté le 18-04-2018 à 18:24:16    

oui, avec La CAS, la RAS -> CAS, RAS on a un nombre de cycles d'horloge entre la commande et le retour de l'info. ce n'est donc pas immédiat.
 
Ca commence à s'éclaircir.
 
mais alors, si on veut 128 bits en single channel ca implique deux commandes vers la RAM au lieu d'une en dual channel?


---------------
http://hai.tech.free.fr
Reply

Marsh Posté le 18-04-2018 à 20:28:06    

Il n'y a pas que de la latence. Un changement de page nécessite un temps d'attente par exemple, tout comme le rafraîchissement de la mémoire (très long). Il me semble aussi qu'après une écriture, il y a un temps d'attente avant de pouvoir faire une lecture...

 

Pour ce qui est des 128 bits en single channel. Ce n'est pas tout à fait ça, car il y a les bursts ;)
Donc une seule commande de lecture ou d'écriture va être envoyée et deux transferts de données vont être faits sur chaque front. C'est ce que l'on voit sur le premier diagramme.
Mais il faut effectivement deux fronts pour transférer 128b en single channel, alors qu'un seul est nécessaire en dual.


Message édité par Nono0000 le 18-04-2018 à 20:40:53

---------------
CPU: 6950X 4.3Ghz (Uncore: 3.7Ghz) WC HM -- Mem: 4x8Go 3200Mhz 14-16-17-32-1T -- Mobo: Asus X99 Deluxe -- GPU: 4080 (GPU: 3015Mhz, VRAM: 12200Mhz) -- Carte Son: X-Fi Titanium Fatal1ty Professional -- SSD: M.2 PCIE XP941 -- Ecran: DELL AW3423DW QD-OLED
Reply

Marsh Posté le 19-04-2018 à 10:44:40    

ok d'acc, ca s'éclairci dans mon esprit.
merci d'avoir attisé ma curiosité. ;)


---------------
http://hai.tech.free.fr
Reply

Marsh Posté le 19-04-2018 à 11:45:29    

De rien  :jap:  
N’hésite pas à regarder le fonctionnent des caches car cela est indissociable du système mémoire externe sur les implémentations actuelles ;)


---------------
CPU: 6950X 4.3Ghz (Uncore: 3.7Ghz) WC HM -- Mem: 4x8Go 3200Mhz 14-16-17-32-1T -- Mobo: Asus X99 Deluxe -- GPU: 4080 (GPU: 3015Mhz, VRAM: 12200Mhz) -- Carte Son: X-Fi Titanium Fatal1ty Professional -- SSD: M.2 PCIE XP941 -- Ecran: DELL AW3423DW QD-OLED
Reply

Marsh Posté le 19-04-2018 à 12:01:54    

sur les mémoires cache je sais que la L3 > L2 > L1
Je sais aussi que la L1 est la mémoire la plus proche des registres et la plus rapide.
 
également que la mémoire L2 contient une copie de la L1 et que la L3 contient une copie de la L2 et L1.
 
;)


---------------
http://hai.tech.free.fr
Reply

Marsh Posté le 19-04-2018 à 12:06:17    

Et le challenge est de maintenir tout ça cohérent quand deux (ou plus) threads travaillent sur les mêmes données. Le tout en minimisant l'impact sur les performances et donc les écritures et les lectures en mémoire externe :)


Message édité par Nono0000 le 19-04-2018 à 12:06:44

---------------
CPU: 6950X 4.3Ghz (Uncore: 3.7Ghz) WC HM -- Mem: 4x8Go 3200Mhz 14-16-17-32-1T -- Mobo: Asus X99 Deluxe -- GPU: 4080 (GPU: 3015Mhz, VRAM: 12200Mhz) -- Carte Son: X-Fi Titanium Fatal1ty Professional -- SSD: M.2 PCIE XP941 -- Ecran: DELL AW3423DW QD-OLED
Reply

Marsh Posté le 19-04-2018 à 12:06:17   

Reply

Marsh Posté le 19-04-2018 à 18:22:18    

oui c'est clair. sachant qu'un processeur monocore et multi-threadé à 2 fois plus de registres.
 
Mais au fait.
sachant que pour une opération on a besoin de 3 éléments de 64 bits (data, instruction, data)
en tout on récupère 192 bits
 
La première commande en dual channel renvoi 128b, ça veut dire que la deuxième commande ne récupère que 64b en laissant 64b vide?


---------------
http://hai.tech.free.fr
Reply

Marsh Posté le 19-04-2018 à 21:38:46    

Sur x86 (ou x64), la plus petite valeur adressable en mémoire c'est l'octet (8 bit).
Que tu veuilles récupérer un, deux , trois... octets, le CPU récupèrera toujours la ligne complète et invalidera (masquera) les données dont il n'a pas besoin.
Les applications n'utilisent pas forcement 32bit ou 64bit de données pour leurs variables.
Il y a aussi la fragmentation de la mémoire qui fait que les données utiles ne sont pas nécessairement les unes après les autres... (même si l'OS veille à minimiser cela)

 

Dans ces cas c'est contre productif en effet :)
C'est pour ça que le dual channel ne donne pas forcement de meilleurs résultats suivant les applications...


Message édité par Nono0000 le 20-04-2018 à 07:17:47

---------------
CPU: 6950X 4.3Ghz (Uncore: 3.7Ghz) WC HM -- Mem: 4x8Go 3200Mhz 14-16-17-32-1T -- Mobo: Asus X99 Deluxe -- GPU: 4080 (GPU: 3015Mhz, VRAM: 12200Mhz) -- Carte Son: X-Fi Titanium Fatal1ty Professional -- SSD: M.2 PCIE XP941 -- Ecran: DELL AW3423DW QD-OLED
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed