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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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
    18 264
    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 : 18 264
    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 confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 771
    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 771
    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 confirmé
    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
    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
    18 264
    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 : 18 264
    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 confirmé
    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
    Par défaut
    Merci pour votre réponse.

+ 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