Core Qaud à un seul fil vs Dual Core hyper-threading [doublon]

10

Disons que nous avons deux processeurs, l'un est quadricœur 3,2 GHz avec 4 cœurs et nous avons un double cœur 3,2 GHz avec 2 cœurs avec 2 threads dans chaque cœur (Hyper-Threading). Mon hypothèse en tant que programmeur sera, les 4 cœurs et 4 threads devraient fonctionner plus rapidement que 2 cœurs et 4 threads, car le deuxième processeur doit basculer entre les threads pour émuler 4 cœurs tandis que le premier n'a pas besoin d'effectuer une telle commutation comme chacun core peut fonctionner indépendamment et individuellement.

Je veux confirmer que mon hypothèse est vraie, sinon expliquez pourquoi l'un est meilleur que l'autre.

David
la source
3
Downvote car une courte recherche sur Google (Wikipedia) aurait donné la réponse.
Werner Henze
4
@WernerHenze alors que ce que vous dites est vrai, nous aimerions que les gens voient les résultats de SuperUser lorsqu'ils recherchent ce genre de choses sur Google :)
Shekhar

Réponses:

10

Je pense que c'est vrai - puisque l'hyper threading partage certains éléments - en particulier les principales ressources d'exécution, vous pourrez exécuter 4 threads complets à la fois, plutôt que d'attendre que ces ressources soient libérées.

Le but de HT est d'obtenir de meilleures performances avec une plus petite utilisation de la zone de matrice - votre quad core serait généralement une puce plus grande - disons presque deux fois plus grande qu'une puce dual core non HT, tandis qu'une puce dual core HT serait d'environ 5% plus grand. Le quadricœur pourrait voir jusqu'à deux fois la vitesse sous la bonne charge de travail (cependant, peu probable car vous n'utiliserez probablement pas 4 threads à pleine capacité dans la plupart des cas), tandis que le processeur HT double cœur verrait 15 à 30% mieux performances ( selon wikipedia ) qu'un processeur non HT dual core.

Des cœurs plus réels sont généralement meilleurs.

Compagnon Geek
la source
1
Le processeur HT verrait 15-30% ... Ils cliquent ici. HT n'est pas un remplacement pour un véritable deuxième cœur (ou 2, ou 4, etc.)
Austin T French
1
Plus de processeurs, avec plus de cœurs, avec de l'hyper-threading serait encore mieux ...: D
Keltari
Il est important de noter que la principale raison de l'amélioration des performances avec HT est que le processeur est rarement complètement chargé; c'est-à-dire qu'un seul thread traitera rarement les données à chaque cycle de CPU. HT permet au CPU de planifier un deuxième thread pendant ces cycles autrement inutilisés. Pour basculer entre Facebook et e-mail, cela peut être très efficace, mais plus chaque thread est gourmand en CPU, plus les performances seront faibles.
Thomas
1

De Wikipédia :

L'hyper-threading fonctionne en dupliquant certaines sections du processeur - celles qui stockent l'état architectural - mais pas en dupliquant les principales ressources d'exécution. Cela permet à un processeur hyper-threading d'apparaître comme le processeur "physique" habituel et un processeur "logique" supplémentaire pour le système d'exploitation hôte (les systèmes d'exploitation non compatibles HTT voient deux processeurs "physiques"), permettant au système d'exploitation de planifier deux threads ou traite simultanément et de manière appropriée. Lorsque les ressources d'exécution ne sont pas utilisées par la tâche en cours dans un processeur sans hyper-threading, et en particulier lorsque le processeur est bloqué, un processeur équipé d'hyper-threading peut utiliser ces ressources d'exécution pour exécuter une autre tâche planifiée. (Le processeur peut se bloquer en raison d'un échec de cache, d'une mauvaise prédiction de branche,

Si vous avez un système quad core, 4 threads peuvent s'exécuter chacun sur un core complet. Si vous avez un système d'hyperthreading dual core, alors 2 threads pourraient s'exécuter chacun sur un core complet, mais avec 4 threads, les threads 1 et 2 partageront un core et les threads 3 et 4 partageront l'autre core. L'hyperthreading permet à deux threads de s'exécuter en parallèle (uniquement) s'ils n'utilisent pas les mêmes ressources de processeur. Donc, dans un cas idéal, vous pourriez obtenir un degré élevé de parallélisation, mais comme Wikipedia l'indique, le gain de performances n'est pas de 100%, mais seulement de 15 à 30%.

Werner Henze
la source
1

En hyper-threading, le temps d'inactivité du noyau pour la tâche A (ledit noyau aurait pu envoyer une demande de données au disque, attendre que le disque recherche la zone des plateaux, lire les données et les renvoyer au noyau ) est exploitée pour effectuer une autre tâcheB. Ainsi, lorsque taskB est desservie par le soi-disant thread 2, et si la demande d'extraction de données par taskA est terminée, taskA doit encore attendre que le core termine le thread 2. Les deux threads ne peuvent pas être exécutés simultanément dans un core. Encore une fois, HT exploite l'inadéquation de la vitesse entre le cœur / processeur et les différents sous-systèmes de votre ordinateur. HT utilise vos cœurs à pleine capacité ... c'est comme l'utilisation à pleine capacité. Donc, si vous ouvrez quatre onglets dans votre navigateur, chaque onglet aura un cœur dans un système à 4 cœurs et deux onglets devront partager un cœur dans un système à 2 cœurs.

Siva
la source