IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hardware Discussion :

Fonctionnement d'un processeur multi-coeur ou un système multi-processeur.


Sujet :

Hardware

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 108
    Points : 143
    Points
    143
    Par défaut Fonctionnement d'un processeur multi-coeur ou un système multi-processeur.
    Bonjour,

    Comment fonctionne un processeur multi-cœur?
    Plus exactement:
    • Que font les autres cœur dans une exécution mono-processus mono-thread? Est-ce qu'ils attendent "des ordres" ou est-ce que tous les threads exécutent le même code simultanément?
    • Est-ce qu'il y a un cœur "maître" qui "contrôlent" les autres? Ou est ce que c'est les instructions qui permettent de choisir quelle cœur concerné (j'ai des doutes)?


    Même questions pour les ordinateurs multi-processeur.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 453
    Points : 43 106
    Points
    43 106
    Par défaut
    C'est l'ordonnanceur de l'OS qui va répartir les différents processus sur les différents cœurs. L'ordonnanceur sera exécuté sur un seul cœur évidemment.

    Pour les threads, ou processus légers, il s'agit d'une "subdivision logicielle", un processus s’exécute sur un seul cœur en même temps, donc plusieurs threads d'un même processus s'executerons sur un seul cœur.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Pour rebondir sur la réponse de @chrtophe , il y a 2 parties.

    La partie matérielle (hardware) :
    Pour un processeur multi-cores, tu vas avoir dans le die plusieurs cores (<- lien wiki en français)
    Mais chaque core va avoir un cache (peut-être la mémoire cache L1 ) et la mémoire cache L2 va être partagée entre les cores.
    Par contre entre AMD et Intel, la gestion de cette mémoire partagée diffère.
    Tu as aussi la mémoire cache L3 qui doit être comme avant entre la L2 et la mémoire centrale, et dans dans le processeur.
    Et pour en rajouter avec Intel tu as l'hyper threading, avec une notion de core virtuel/ logique.

    Pour un système multiprocesseur, tu as 2 architectures : l'ancienne SMP (Symmetric shared memory multiprocessor) et la nouvelle NUMA (Non uniform memory access) (<- liens wiki en français)
    Je soupçonne que les cartes mères doivent avoir des conceptions différentes en fonction de l'1 ou de l'autre

    La partie logicielle :
    Parce que pour tirer parti du multi-core ou du multiprocesseur, c'est le système d'exploitation qui va l'exploiter : c'est la réponse ci-dessus de @chrtophe.
    D'ailleurs si tu t'intéresses à Linux , Linux supporte les architectures NUMA.

    Mais je rajouterai que j'ai vu une vidéo de LinusTech qui s'amusait avec une carte mère bi processeurs, bi Xeons.
    Et dans cette vidéo, il a utilisé un logiciel qui permet d'avoir "virtuellement" 2 machines en attribuant des tâches précises à chaque processeur (le nom du logiciel je ne sais pas )
    Donc des logiciels peuvent aussi permettre de s'amuser avec la matériel.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 108
    Points : 143
    Points
    143
    Par défaut
    Merci pour vos réponse mais ce n'est pas vraiment ce que j'attendais.

    Je vais donc essayer de reformuler ma question:

    J'ai un processeur avec 4 cœurs physiques et 1 thread par cœur pour faire simple (pas de différence entre cœur physique et logique).
    Mon système d'exploitation est mono-tâche, mono-utilisateur, donc un seul cœur suffit, dans ce cas que font les 3 autres cœurs? Est-ce qu'ils sont inactifs jusqu'à ce qu'un signal particulier les réveils? Ils font quoi concrètement? Ils consomment de l’énergie, etc...?

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 453
    Points : 43 106
    Points
    43 106
    Par défaut
    Ils ne font rien, ils sont en attente. Je pense qu'il doivent être comme en mode veilleet donc consommer à minima, à moins qu'ils ne soient même pas alimenté. Je ne sais pas.

    Quand l'ordi démarre, un seul CPU reçoit le signal de démarrage. Il va alors exécuter le code contenu dans le BIOS/UEFI. Ce code va paramétrer l'APIC qui va alors initialiser les autres CPU. Chaque CPU aura alors son local APIC paramétré pour gérer ses entrées-sorties. Des interruptions matérielles inter-processeurs peuvent être déclenchés, un CPU pourra donc en asservir un autre (asservir au sens asservissement en automatisme) Les autres CPU vont alors démarrer et vont pouvoir traiter les interruptions qu'ils reçoivent et donc faire les traitement qu'on leur demande.

    Ceci est valable pour l’architecture SMP, pour l'architecture NUMA évoqué, la grosse différence de ce que j'en est compris, c'est que tout l'espace mémoire accessible peut être sur différents bus (sans passerelle). On s'approche du clustering mais le principe reste le même, un "chef d'orchestre" va gérer le tout.

    De toute façon, il faut bien un système de contrôle, sinon autant avoir plusieurs machines avec un seul processeur et chacun fait le job qu'on lui donne, il faudra bien ensuite faire le dispatching du travail à faire.

    Même sur un système mono-processeur, tu auras toujours plusieurs processus démarrés en parallèle, la différence étant que le temps CPU sera partagées entre ces différents processus.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 108
    Points : 143
    Points
    143
    Par défaut
    Merci pour votre réponse.

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Je ne pense pas qu'un cœur puisse être "arrêté" indépendamment des autres. Par contre, lorsque le CPU n'a rien à faire, il rentre en "veille" par le changement de son état "C-State" (Intel) (explication en anglais).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 453
    Points : 43 106
    Points
    43 106
    Par défaut
    Je ne pense pas qu'un cœur puisse être "arrêté" indépendamment des autres
    Par contre, il est peut-être possible sur une carte mère multi-procsseur qu'un CPU ne démarre pas tant qu'il ne reçoit pas de signal de l'APIC, mais je ne sais pas comment c'est conçu.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 108
    Points : 143
    Points
    143
    Par défaut
    Si je comprends bien pour la question posé, ce qui s'applique au multi-processeur s'applique au multi-cœur, à la différence que pour le multi-cœur tout tient sur une seul die?

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par baragouine Voir le message
    Si je comprends bien pour la question posé, ce qui s'applique au multi-processeur s'applique au multi-cœur, à la différence que pour le multi-cœur tout tient sur une seul die?
    À 2 différences majeures près

    Effectivement , que ce soit les processeurs multi-cores ou les systèmes multiprocesseur, on peut voir cela comme plusieurs (1 processeur/ core avec sa mémoire) qui sont reliés à de la mémoire (cache/ centrale).
    Différentes stratégies de connexion sont utilisées (bus général, bus privé, bus qui relie une grappe, ...), mais schématiquement c'est équivalent

    Mais les grosses différences sont :
    • la distance. Dans un processeur multi-cores toute la communication est instantanée. De souvenirs , lorsque les processeurs multi-cores sont arrivés, Linux avait repris une gestion système multiprocesseur. Mais au final, ce n'était pas efficace et il a été obligé de la revoir.
    • la quantité de mémoire centrale (MC). Les cores se partageront toujours la MC (dans 1 sens, c'est juste un processeur). À l'inverse avec les systèmes multiprocesseur et en particulier NUMA, chaque processeur à sa MC. Avec les systèmes multiprocesseur, on peut réellement avoir l'impression d'avoir plusieurs machines avec 1 processeur.

  11. #11
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 453
    Points : 43 106
    Points
    43 106
    Par défaut
    En complément de la réponse de Foetus, je rajouterais qu’au niveau OS et ordonnanceur, celui-ci voit des processeurs. Je ne sais pas si les ordonnanceurs sont suffisamment évolués pour être capable de choisir le die "le plus près".
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  12. #12
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 108
    Points : 143
    Points
    143
    Par défaut
    Avec les systèmes multiprocesseur, on peut réellement avoir l'impression d'avoir plusieurs machines avec 1 processeur.
    Je n'ai pas bien compris ce point.

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par baragouine Voir le message
    Je n'ai pas bien compris ce point.
    Simple tu as un système avec plusieurs processeurs.

    Mais tu peux allouer des tâches lourdes à un processeur spécifiquement (*) : par exemple, un processeur qui fait de l'encodage 4K x265 et sur 1 autre processeur un gros serveur avec une base de données.
    Et donc c'est comme si tu avais 1 ordinateur spécial encodage, et 1 ordinateur spécial serveur.

    Parce qu'il ne faut oublier que seuls les processeurs Intel Xeon peuvent être utilisés dans un système multiprocesseur (Intel bloque tous les autres, sans parler de la mémoire ECC ... et pour AMD je ne sais pas )
    Et les Xeon sont aussi des processeurs multi-cores avec [nettement] plus de cores (8, 10, 14, 16, 18, 22, 24).
    De plus, dans une architecture NUMA, chaque processeur a sa propre mémoire centrale. Mais on parle de 32Go, 64Go, 128Go voire plus pour chaque processeur.

    Et donc , qu'au delà de leur "faire manger énormément de processus", c'est aussi très intéressant de pouvoir les isoler 1 à 1.


    * : je parlais dans mon premier message d'un logiciel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fork() et processeur multi-coeur
    Par LaurentD88 dans le forum Débuter
    Réponses: 3
    Dernier message: 05/03/2010, 18h06
  2. Réponses: 12
    Dernier message: 06/01/2009, 18h43
  3. Comment fonctionne access en utilisation multi-utilisateurs
    Par okparanoid dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/10/2006, 07h28
  4. Comprendre le "coeur" de mon système
    Par karabe dans le forum Windows
    Réponses: 5
    Dernier message: 24/08/2006, 21h47
  5. Fonctionnement du Pré-Processeur
    Par Coelacanthe dans le forum C++
    Réponses: 10
    Dernier message: 31/12/2005, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo