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.
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.
la source
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.
la source
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 Resources
est la meilleure animation, regardez-la et cliquez sur le bouton "avancer".la source
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.
la source