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.
Réponses:
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.
la source
De Wikipédia :
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%.
la source
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.
la source