human
Quelle est exactement la différence entre les « cœurs » et les « threads » sur un processeur ? Je vois que certains processeurs ont des cœurs égaux aux threads, mais certains ont deux fois plus de threads que de cœurs. Quels sont les fils ici ? Explique comme si j'avais cinq ans.
gpt
Je suis insatisfait de toutes les réponses jusqu'à présent car je ne pense pas qu'elles atteignent l'essentiel de la question, à la "Pourquoi un i7 est-il une machine 4/8 alors qu'un i5 est un 4/4 ?" sont des * composants informatiques physiques * . Considérez chaque cœur comme une puce Pentium complète. Chaque cœur possède toutes les capacités de traitement de ce processeur, y compris sa mémoire cache. Une puce multicœur prend un tas de ces unités de traitement et les place sur une pièce de silicium. Dans le cas des processeurs i5 et i7 d'aujourd'hui, les cœurs sont « liés » avec le cache de niveau le plus élevé, qui est partagé entre tous les cœurs. De l'autre côté de ce cache se trouve l'interface avec le reste du monde : le contrôleur de mémoire, le sous-système graphique intégré et le bus PICe vers les autres périphériques. Un thread , d' autre part , est une * séquence * d' instructions . Comme indiqué ailleurs, un ordinateur multi-tâches a BEAUCOUP de threads exécutés en même temps, et donc les cœurs doivent * * basculer * * entre eux, principalement en fonction du temps dont ils ont besoin. Cependant , ce commutateur est coûteux en temps car l' * état * d' un thread doit être préservé afin que lorsqu'il est rétabli , il puisse redémarrer là où il s'était arrêté . Ainsi , tout le contenu du registre doit être sauvegardé avec un grand nombre de variables d' état invisibles . Une façon d'augmenter les performances est donc d'avoir plusieurs cœurs. Pour un exemple i5/i7 sans multi-threading, de manière simpliste, vos threads s'exécuteront 4 fois plus vite car la commutation se produit 1/4 aussi souvent. ( Ce n'est pas strictement vrai car certains threads ont une priorité plus élevée , et certains threads sont * parqués * sur un noyau et ne sont pas échangés . ) Et maintenant pour la viande : Avec juste quelques ressources supplémentaires ( silicium ) , nous peut dupliquer un grand nombre de registres qui doivent être échangés lors d'un changement de tâche. Cela signifie que les threads de haute priorité s'arrêtent presque instantanément et démarrent instantanément parce que la puce a plus de cœurs logiques. Concrètement, le i5 ne supportant pas le multithreading, ses quatre cœurs physiques supportent quatre threads simultanés car lors du basculement, il doit passer par le cycle de sauvegarde/restauration. Mais le i7, qui prend en charge le multithreading et dont les ressources supplémentaires sont activées, semble * logiquement * avoir huit cœurs. Ainsi, toutes les applications multi-thread s'exécuteront plus rapidement. (Toutes les applications ou *threads* ne peuvent pas tirer parti de plusieurs cœurs.) C'est pourquoi le i5-6600 K à 3,5 GHz obtient une note CPU multi-thread de 7983 tandis que le i7-6700 à 3,4 GHz en obtient 10 035. Mais si vous regardez la vitesse d'un seul thread sur chacun, vous obtenez 2148 et 2160 parce que les cœurs - en minimisant la commutation - sont exactement les mêmes. Pour * que * dans le contexte, Minecraft exécute Java sur un seul cœur et devrait avoir les mêmes performances à la même fréquence d'horloge sur les deux processeurs, toutes choses étant égales par ailleurs. Cependant, si vous ajoutez le mod Optifine, Minecraft hurle maintenant car il peut utiliser plusieurs cœurs * logiques *.