Pourquoi mon processeur dual-core est-il reconnu comme processeur quad-core?

52

Mon processeur est un Intel Core i3-380m . Comme vous pouvez le voir, il s'agit de 2 cœurs et de 4 threads.

Ubuntu 11.04 et Windows 7 semblent penser qu’il s’agit d’un processeur quad-core:

entrez la description de l'image ici

entrez la description de l'image ici

Pourquoi est-ce? Est-ce parce qu'il y a 2 threads par cœur, divisant le CPU en 4 unités de traitement?

sérieux
la source

Réponses:

43

Comme mentionné, vous avez un système dual-core, avec 2 threads par core.

Ceci est commercialisé par Intel comme hyperthreading et a été réalisé de différentes manières au fil des années par différents fabricants.

Pour l'expliquer dans sa forme la plus simple, chaque cœur de CPU se compose d'un "noyau" et d'une architecture variée autour de ce noyau qui conserve les informations d'état et de processus pour chaque thread. Un seul noyau threadé possède l’architecture permettant de conserver 1 thread d’informations d’État détenues à la fois, un noyau hyperthreaded conserve deux ensembles distincts d’informations d’état, permettant ainsi à deux processus distincts de s’exécuter simultanément, à condition qu’ils requièrent des parties différentes du noyau ( ce qui est raisonnablement susceptible de se produire car le noyau est constitué de plusieurs unités de plusieurs types d’unités de traitement différentes).

Pour simplifier la façon dont le processeur est vu par le système, chaque hyperthread est considéré comme un processeur séparé. Un processeur à deux cœurs, à 2 threads par cœur apparaît alors comme un processeur à quatre cœurs.

Il est également possible que le système d'exploitation utilise Core-parking (une fonctionnalité des processeurs Intel plus récents) lui permet de suspendre la moitié d'un cœur hyperthreaded. Ainsi, lorsque les capacités de traitement supplémentaires de l'hyperthreading ne sont pas nécessaires, les performances à thread unique augmente car le noyau ne partage plus son cache sur 2 threads et peut désormais entièrement consacrer le cache sur-core à un seul thread.

Mokubai
la source
Merci pour l'explication. Alors, pouvons-nous dire ici qu'un fil est à un noyau ce qu'un noyau est à un processeur?
seriousdev
2
D'une certaine manière, oui. Le système d'exploitation voit le processeur, sait combien de cœurs se trouvent sur ce processeur et combien de threads sont pris en charge par chaque cœur, à partir du moment où l'utilisation du processeur que vous voyez est désormais "par thread" plutôt que "par core". Ce n'est pas tout à fait aussi simple que cela (comme chaque fil ne semble en fait à une connaissance non hyperthreading OS comme un noyau de CPU à part entière) , mais qui est l'idée générale de celui - ci.
Mokubai
La liaison de stationnement @Mokubai ne fonctionne pas.
Biswapriyo
49

La raison en est l' hyperthreading , que votre processeur prend en charge. L'hyperthreading n'est pas l'équivalent d'un processeur supplémentaire, mais peut vraiment améliorer les performances sur les applications multithreads. Pour chaque cœur de processeur physiquement présent, le système d'exploitation adresse deux processeurs virtuels et partage la charge de travail entre eux lorsque cela est possible.

Keltari
la source
7
Est-ce connu sous le nom de cœur physique vs logique?
xdumaine
11
Oui, un noyau physique est… bien… physique. Vous pouvez le toucher. Les noyaux hyperthreaded ne sont pas réels, donc logiques. Vous pouvez également décomposer des cœurs physiques en cœurs logiques grâce à la virtualisation.
Keltari
3
@Keltari en fait, il y a une partie physique dans celui-ci ... L'hyperthreading est un composant matériel dans un cœur de processeur (et ne peut être désactivé qu'au niveau matériel). Consultez ce livre blanc d'Intel pour plus de détails. Fondamentalement, il partage les ressources d’un noyau entre deux unités d’exécution physique. Techniquement, les deux noyaux vus par le système d'exploitation dans un noyau hyperthreaded sont "logiques", il n'y a pas à la fois de physique et de logique.
Percée
1
vrai, l'hyperthreading est une partie physique du processeur, mais pas un noyau physique.
Keltari
1
La meilleure façon de penser à HT est un "noyau et demi" qui partage beaucoup plus de ressources avec son frère que ne le font les cœurs séparés. Cependant, il est capable d'exécuter un thread "seul" et le système d'exploitation le traite comme une unité d'exécution de thread (que vous avez associée à un noyau).
Crasic
12

Les choses sont beaucoup plus complexes qu’elles ne l’étaient à l’époque d’une instruction cpu par cycle d’horloge.

Il existe maintenant un pipeline pour chaque instruction qui comprend un certain nombre d'étapes. J'ai entendu jusqu'à 41 personnes, bien que cela se soit passé il y a un certain temps et que je n'ai aucune idée de ce à quoi ressemblent les pipelines de processeurs. Je sais que si le pipeline est suffisamment long, vous pouvez commencer une nouvelle instruction avant la fin de la dernière instruction, parfois selon le même cycle d'horloge, de sorte que votre cœur exécute effectivement deux choses à la fois.

Il y a un truc ici, cependant. Vous ne pouvez pas simplement vous en servir pour accélérer la vitesse à laquelle votre processeur exécute les instructions d'un programme spécifique. Il y a un problème de correction: la prochaine instruction peut dépendre du résultat non encore déterminé de la précédente. Pour tirer parti du long pipeline en toute sécurité , la puce présentera deux cœurs de processeur distincts au planificateur de système d'exploitation, ainsi que des instructions en alternance envoyées à chaque cœur, de sorte que deux instructions destinées au même "noyau" ne soient jamais dans le pipeline en même temps. De cette façon, nous pouvons être sûrs que les instructions exécutées simultanément n'interféreront pas les unes avec les autres. Ceci s'appelle l' hyperthreading .

Il convient de noter ici que si l'hyperthreading peut augmenter considérablement la quantité de travail que vous effectuez sur votre processeur, il est loin d'être aussi bon que d'avoir autant de cœurs physiques. Selon votre charge de travail, cela peut signifier une amélioration minimale de 15% ou de 40%. Dans certaines circonstances, vous pouvez même vouloir désactiver la fonctionnalité afin que les autres cœurs disposent d'un accès exclusif et exclusif au cache L1 / L2 pour ce cœur (cela se fait parfois avec des serveurs de base de données dédiés).

Lorsque votre puce annonce avoir 2 cœurs avec 4 threads, cela signifie qu’il s’agit d’un processeur bicœur qui prend en charge l’hyperthreading.

Joel Coehoorn
la source
2

Jetez un coup d'œil à cette page d'informations - elle contient de nombreuses animations montrant comment l'hyperthreading accélère vos tâches.

La Utilization of Processor Resourcesest la meilleure animation, regardez-la et cliquez sur le bouton "avancer".

woliveirajr
la source
1

Pourquoi est-ce? Est-ce parce qu'il y a 2 threads par cœur, divisant le CPU en 4 unités de traitement?

En termes simples, la réponse est oui. Chaque cœur de votre processeur peut supporter deux threads indépendants, soit 4 au total. Mais cela ne signifie pas qu'il a les mêmes performances qu'un processeur à un seul thread quad-core. pratiquement, les performances d'un processeur double-cœur double-cœur sont inférieures à celles d'un processeur simple cœur double-cœur. Comme le AMD Phenom X4.

aminfar
la source
Est-ce que tu sais pourquoi?
seriousdev
1
La raison en est que dans un cœur à double thread, les ressources matérielles (comme le tampon de réorganisation) sont partagées entre deux threads, alors que dans un processeur à un seul thread, toutes les ressources sont dédiées à un seul cœur. Il vaut la peine de mentionner qu’avoir un noyau à filetage multiple augmente l’utilisation de votre matériel et votre débit, mais qu’il est mauvais pour la latence. Il y a beaucoup de compromis à faire. Donc, le mot «performance» est vraiment vague ici. Pour les gens ordinaires, cela signifie la latence d'un seul thread.
Aminfar