web-dev-qa-db-fra.com

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

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:

enter image description here

enter image description here

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

52
seriousdev

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

Ceci est commercialisé par Intel sous le nom hyperthreading et a été réalisé de différentes manières au fil des ans 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 double cœur, à 2 threads par cœur apparaît alors comme un processeur quad core.

Il est également possible pour le système d'exploitation d'utiliser Core-parking (une fonctionnalité des processeurs Intel plus récents), ce qui permet au système d'exploitation de suspendre la moitié d'un noyau hyperthreaded de manière à ce que la capacité de traitement supplémentaire de l'hyperthreading soit réduite. non nécessaire, les performances du thread unique sont augmentées 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.

43
Mokubai

La raison en est 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.

49
Keltari

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 composée d'un certain nombre d'étapes. J'en ai entendu jusqu'à 41, 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 du système d’exploitation, ainsi que des instructions alternées envoyées à chaque cœur afin que deux instructions adressées au même "noyau" ne sont jamais programmées simultanément. 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 hyperthreading.

Il convient de noter ici que si l'hyperthreading peut augmenter considérablement la quantité de travail que vous effectuez avec 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 souhaiterez peut-être même désactiver la fonctionnalité afin que les cœurs restants 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.

12
Joel Coehoorn

Jetez un oeil sur cette page intel - il contient de nombreuses animations montrant comment l'hyperthreading accélère vos tâches.

Le Utilization of Processor Resources est la meilleure animation, regardez-la et cliquez sur le bouton "avancer".

2
woliveirajr

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 unité centrale peut prendre en charge 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.

1
aminfar