Je souhaiterais savoir comment on implémente plusieurs cœurs dans un même CPU. Si on se réfère à cette architecture, je ne vois pas comment il est possible de l'implementer !
D'autre part, comment le système d'exploitation "voit" il les processeurs multi-cœurs : comme plusieurs processeurs mono-cœur, ou bien ne fait-il pas la différence ?
Merci d'avance pour vos réponses
Parce que c'est bien plus complexe que ça, il y a déjà des pipelines en plus et ... enfin vraiment beaucoup de chose en plus.
En gros tu as un système de répartition des taches. Et l'OS connais comment contrôler le répartiteur de taches et il voit plusieurs processeur, tu n'as jamais vu ? rien quand faisant un ctrl+alt+del sur Windows et en ouvrant le gestionnaire des taches on voit plusieurs courbes.
09/05/2012 - 11h26
Hdecharn
Date d'inscription
février 2012
Messages
30
Re : Fonctionnement multi-cœur
Oui, mais comment repartir les tâches sur chaque cœur ? Je ne vois aucune instruction et/ou artifice le mettant en jeu en ASM ou en C !
09/05/2012 - 11h49
Lytharan
Date d'inscription
octobre 2011
Localisation
Suisse
Âge
26
Messages
691
Re : Fonctionnement multi-cœur
Quel assembleur ?! Chaque processeur a son propre langage assembleur, donc oui il y a des instructions qui "redirige" les calcules pour des processeurs qui ont plusieurs cœurs.
En C ? C'est normal car c'est ton OS qui gère l'utilisation de cœurs, ton programme en C est compilé pour et tourne sur ton OS.
09/05/2012 - 12h27
Hdecharn
Date d'inscription
février 2012
Messages
30
Re : Fonctionnement multi-cœur
Quand je parlais du C, je ne parlais pas des programmes mais de l'OS (puisqu'en majorité écrit en C).
Ensuite, quelle sont les "instructions qui redirigent les calculs" pour les CPUs multi cœur ?
Non c'est pas que du C en tout cas pas Windows, Linux par contre c'est bien possible que oui. Mais même, ça ne change rien, c'est le compilateur et les libraires qui te donnes les fonctions pour ça.
Les instructions je ne les connais pas, de toute façon elles demande des connaissances extrêmement étendue dans le domaine et faut connaitre le processeur.
Tiens si tu veux vraiment savoir je t’aiguille un peu : http://www.intel.com/content/www/us/...Resources.html
09/05/2012 - 14h03
Hdecharn
Date d'inscription
février 2012
Messages
30
Re : Fonctionnement multi-cœur
Certes, un OS, ce n'est pas que du C… par contre, lorsque tu créés un système, le compile ne te donne aucune fonction (tu peux toujours te gratter pour avoir OpenMP) ! C'était un peu ma question… savoir comment repérer les cores/threads, et comment "dispatcher" (lorsqu'on est l'OS) les processus sur ces threads (sur un single core, l'OS alloue un temps défini à chaque programme, alors que, si je ne me trompe, le principe d'un multi core est de pouvoir excecuter plusieurs threads en même temps) ?
09/05/2012 - 19h11
Lytharan
Date d'inscription
octobre 2011
Localisation
Suisse
Âge
26
Messages
691
Re : Fonctionnement multi-cœur
moui... mais enfait tu veux faire quoi exactement ?
09/05/2012 - 19h34
Hdecharn
Date d'inscription
février 2012
Messages
30
Re : Fonctionnement multi-cœur
Comprendre comment sont implementés les cœurs dans un CPU (de vrais explications… éventuellement accompagnées de schéma en porte logique, ou VHDL), et comment les systèmes d'exploitations gèrent le multi-core ! Simple curiosité !
Je sais qu'il existe des projets opencores, mais ils n'expliquent pas comment ils implémentent les cores…
Dernière modification par Hdecharn ; 09/05/2012 à 19h35.
09/05/2012 - 20h25
jiherve
Date d'inscription
juin 2006
Localisation
gironde
Âge
61
Messages
8 638
Re : Fonctionnement multi-cœur
Bonsoir,
Le multicœur c'est une approche du parallélisme plus radicale que le multithreading (l'un n’empêchant pas l'autre), ici les taches s'effectuent sur des UC séparées mais qui ont tout de même des ressources communes, il existe donc des mécanismes d'arbitrage et de cohérence assurés par le hard pour les accès aux périphériques, cache L2 et + et RAM, et c'est beaucoup plus compliqué avec un multicoeur car si des taches presque indépendantes doivent échanger des informations l'aspect séquentiel résiduel du multithreading( chaque taches utilise une partie du temps CPU) disparait et n'importe quoi peu arriver n'importe quand.
L'OS gérera les affectations de ces taches en fonction de la disponibilité des cœurs, mais cela ne peut se faire que si les taches sont indépendantes ou bien conçues pour ce parallélisme.
En clair une tache non parallélisable, car non conçue pour, ne s’exécutera pas plus vite sur un multicœur que sur un simple cœur.
D'un point de vue hard c'est, pour simplifier, comme plusieurs processeurs en // ayant des périphériques communs.
Pour tout savoir chercher avec OCCAM et Transputer , et oui cela a déjà plus de trente ans, encore un exemple de : il ne faut pas avoir raison trop tôt.
JR
l'électronique c'est pas du vaudou!
10/05/2012 - 07h32
Lytharan
Date d'inscription
octobre 2011
Localisation
Suisse
Âge
26
Messages
691
Re : Fonctionnement multi-cœur
On ne peux pas t'expliquer plus en détails, pour ça il te faut lire de bouquins et des dizaine de millier de page pour l'utilisation d'un CPU. On ne peux pas simplifier par un schéma logique ou un code VHDL pour des truc avec 2.2 milliards de transistors...