Question

J'avais vu dans la littérature pour une partie de la CPU tels que de la plus récente Intel Xeon "Nehalem-EX" comme ayant 8 cœurs et 16 threads. Que font-ils parlent ici? J'ai vu mention dans référence pour SPARCS aussi, sûrement ce n'est pas le genre de fils logiques engendrés par le code? Est-ce hyperthreading re-nommé?

Était-ce utile?

La solution

Oui, processeurs Nehalem basés mettre en œuvre Hyper-threading.

Le nouveau Nehalem-EX dont vous référer à a 8 noyaux physiques où chaque noyau peut être considérée comme 2 noyaux logiques pour un total de 16 noyaux logiques, ce qui permet l'exécution des 16 fils d'application sur un processeur unique.

Ceci est la même technologie utilisée dans les Pentium 4 Hyper-Threading activé processeurs, et plus récemment, sur les processeurs Atom. Mon Eee PC dispose d'un processeur Atom single-core qui a deux cœurs logiques - le Gestionnaire des tâches de Windows affiche deux graphiques CPU; une pour chaque noyau logique.

(et le T1) de Sun UltraSPARC T2 permettent également multithreading simultané (dont la mise en œuvre d'Intel est appelé Hyper-Threading - une marque d'Intel) qui permet à un seul noyau pour apparaître comme des noyaux multiples logiques pour exécuter plusieurs threads sur un seul noyau.

L'idée approximative derrière multithreading simultanée est d'avoir plusieurs registres pour stocker l'état du processeur, il semble qu'il y ait en fait plusieurs cœurs dans un seul noyau, car il a plusieurs pleins ensembles de registres matériels.

Alors que les installations physiques telles que l'ALU et FPU ne peuvent pas augmenter, ayant plusieurs ensembles de registres pour exécuter plusieurs threads sur un noyau physique peut conduire à une meilleure utilisation des ressources processeur disponibles. Le noyau peut avoir pas été saturé lors de l'exécution d'un seul fil, mais l'exécution de multiples pourrait saturer toutes les unités à son plein potentiel.

Alors qu'est-ce que cela signifie pour les programmeurs?

Cela signifie que nous aurons encore besoin d'écrire un logiciel multi-thread - ayant un programme qui n'a qu'un seul fil ne sera en mesure d'utiliser un seul noyau logique. Seulement en ayant le code multi-thread bien écrit que nous sommes en mesure de tirer profit du nombre massif de cœurs logiques ces processeurs offrent.

Même avec multithreading simultané, le code est exécuté sur un thread par noyau logique.

Autres conseils

Une extrême d'un processeur multi-fileté est le processeur de barillet. Ceci est une forme de SMT où le processeur divise les fentes entre plusieurs threads également d'une manière à tour de rôle. Pour ce faire, il a besoin que des copies des différents registres tout en utilisant le même ensemble d'unités d'exécution. Ainsi, en 4 cycles d'horloge, il placerait le code de fils 0-3 dans le pipeline.

Vous pouvez penser le reste de ces processeurs travaillant de façon similaire, à un plus ou moins. Au lieu de distribuer des fentes autour de la même manière, il peut simplement utiliser des créneaux qui sont vides en raison de contrôle ou les dangers données dans le processeur.

Par exemple, lorsqu'une branche est prise, les instructions du pipeline pourraient devoir être vidées. Au lieu de chasse d'eau complètement tout, certains des fentes peuvent être utilisées pour d'autres threads. L'idée est d'améliorer les performances de ne pas perdre des cycles CPU.

Voilà comment plusieurs threads travaillent dans le matériel.

Il n'est pas hyper-threading renommé - il est hyper-threading (il est écrit sur cette page Web que vous avez donné lien)

.

Il suffit, dit processeur OS qu'il possède 16 cœurs, il peut donc équilibrer les tâches sur le nombre de cœurs doublé. La technologie Hyper-Threading donner un certain avantage becouse dans certains cas, deux instructions différentes de deux programmes / threads différents peuvent être exécutés sur un noyau simultanément. Mais bien sûr, il ne donnera pas 200% jusqu'à la vitesse. Je ne travaille pas sur ce processeur, mais je pense que vous pouvez obtenir environ 10% à 20% du temps processeur.

Il appartient à chaque modèle de filetage du système d'exploitation à la carte threads au niveau du système d'exploitation pour les threads au niveau du matériel tels que ceux décrits dans la question.

Les fils logiques engendrés par les langages de programmation de haut niveau utilisés par les programmeurs d'applications sont encore un système d'exploitation niveau retiré du matériel, à moins bien sûr que vous parlez du code du système d'exploitation qui fait la mise en correspondance.

Hyperthreading (marque de fabrique INTEL par la voie) permet à chaque fil de fonctionner effectivement en même temps. Donc, dans ce cas, vous pouvez exécuter des threads d'application 8X2 en même temps.

De la brochure ...

Intel Nehalem architecture construit sur le processus unique de la technologie de grille métallique haute k 45nm d'Intel

 Up to **8 cores** per processor
 Up to **16 threads per processor** with Intel® Hyper-threading
 2.3 billion transistors

Comparez cela à une seule unité centrale de traitement, les systèmes de base unique où chaque fil doit être planifiée et au plus un seul thread sera actif -. Que celui qui exécute la tâche liée CPU et les autres qui attendent sur un transfert E / S

threading était à l'origine utilisé soit pour modéliser un ensemble d'activités simultanées (modèle non d'exécution non utilisés en parallèle) ou pour produire l'apparition d'un système qui a été sensible même en faisant d'E / S. Par exemple, sans filetage, votre traitement de texte semble bloquer lors de l'enregistrement d'un doc.

Depuis de nombreuses années, je résisté à l'idée d'avoir plusieurs threads dans mes applications de bureau - compliqué le code et potentiellement une réduction des performances - penser à toutes ces opérations mutex qui nécessitent le noyau du système d'exploitation pour participer. Avec l'avènement de l'exécution en fait parallèle de fils, mes objections sont réduites, mais je crois encore que de multiples processus plutôt que plusieurs threads dans un seul processus est une meilleure approche.

Chris

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top