La différence de b/w hyper threading et le multithreading?
Je me demandais si quelqu'un pouvait m'expliquer la différence b/w ces deux ? Il a quelque chose à voir avec intel architecture matérielle (HT) ?
double possible de multi-PROCESSEUR multi-core et hyper-thread
OriginalL'auteur SRINI794 | 2013-01-03
Vous devez vous connecter pour publier un commentaire.
L'Hyperthreading est une chose de matériel et de l'image de marque Intel. La plupart des autres gens l'appellent Simultaneous Multithreading (SMT). Pour le programmeur, deux hyperthreads l'apparence de deux cœurs de PROCESSEUR. Du côté du matériel, plusieurs hyperthreads partager un seul cœur. (Dans le cas d'intel, il y a deux hyperthreads par cœur).
Multithreading (ou de la programmation multithread) est généralement considéré comme le concept de l'utilisation de plus d'un contexte de thread (pointeur d'instruction, les registres, pile, etc.) dans un seul programme. (En général dans le même processus ou de l'espace d'adresse virtuelle).
Techniquement "Hyper-Threading" a été appliquée à l'Interrupteur-sur-Événement du Multithreading dans Itanium. Fine multithreading (où les instructions à partir d'un seul fil de commencer l'exécution de chaque cycle) est un autre type de matériel de multithreading (jusqu'à présent, Intel n'a pas utilisé la Technologie Hyper-Threading, le nom de cette dernière).
C'est tout simplement faux. HT sur x86 est SMT. Aller voir le CPUID instrution en x86. Vous pouvez le trouver dans: "Intel® 64 et IA-32 Architectures Manuel de développement: Vol. 2A"
OriginalL'auteur Nathan Binkert
Un processeur physique (PP) est le matériel de mise en œuvre d'une seule unité de traitement. De ce point de vue, une "base" est la base de PP. Parfois, des termes tels que multi-processeur multi-core sont utilisés pour différencier la façon dont les unités de traitement sont organisés en jetons, et ce que d'autres ressources physiques sont partagés entre eux, comme L2, bus, etc. Mais pour répondre à cette question, nous nous sommes intéressés a la base, l'unité de traitement.
Lorsqu'un PP supporte l'hyperthreading (disons simplement utiliser ce terme pour l'instant), le PP est divisé en deux ou plusieurs processeurs logiques (LP). Ceci est fait par le renforcement de l'exécution du pipeline, la duplication PP ressources comme le registre, PC, d'interrompre le mécanisme de gestion, et d'autres. Cela permet à la PP de tenir et d'exécuter plusieurs "contexte d'exécution" à la "même temps". Ces contexte d'exécution sont parfois appelés threads matériels (HT). Si le PP ne supporte pas l'hyperthreading (ou désactivé), le LP est le même que le PP.
Un logiciel de fil (ST) est un contexte d'exécution créé par le logiciel, par exemple avec pthread_create() ou clone(). Ces entités sont prévues par le système d'exploitation sur les processeurs. Un programme multithread est un code dans lequel le programmeur crée explicitement ST. Un programme multithread peut fonctionner sur un processeur qui ne prend pas en charge la technologie hyperthreading. Dans ce cas, le changement de contexte entre ST est coûteux, car il nécessite l'intervention du planificateur et de l'utilisation de la mémoire pour stocker et charger des contextes d'exécution.
Lorsque l'hyperthreading est activé, le système d'exploitation horaires de plusieurs ST à un PP. Habituellement, un SAINT par LP. Le système d'exploitation voit LPs comme si elles étaient réelles PP. Ainsi, chaque ST fonctionner sur un autre LP. Une fois STs ont été programmées, on peut dire qu'ils deviennent des threads matériels (HT) (grosso modo) dans le sens que le PP prend le contrôle. Quand on HT dans les stalles, par exemple sur un cache miss ou d'un pipeline de rinçage, le PP s'exécute d'autres HT. Cette "context-switch" coûte presque rien depuis la HT du contexte est déjà dans le PP. Le système d'exploitation n'est pas impliqué dans ces contexte commutations. Ce qui est le plus pertinent, c'est que ces échoppes et de contexte correspondant-commutateurs peuvent se produire dans de nombreux stades de l'oléoduc. C'est différent de planificateur de base de la commutation de contexte qui se produisent sur l'interruption basé sur des événements, tels que quantum d'expiration, I/O interrompre, annuler, les appels système, etc.
Que Nathan dit dans la réponse précédente, l'hyperthreading est une très précis. Plus général et agnostique terme est "Simultaneous Multithreading (SMT)".
Enfin, je recommande fortement la lecture de:
1) support de système d'Exploitation simultanée multithread processeurs. James R. Bulpin
2) la Microarchitecture des choix et des compromis pour maximiser l'efficacité du traitement. Deborah T. Marr (Tél. D. thèse)
AMD CMT Bulldozer et de la SMT dans Ryzen fonctionnent de la même manière, trop. Voir agner.org/optimize, et d'autres liens le x86 balise wiki pour plus de détails. C'est ce que ces diapositives appel "à grain fin multithreading": cis.upenn.edu/~milom/cis501-Fall05/conférences/12_smt.pdf. Ces diapositives réserver le terme de SMT pour quand les instructions de différents threads question dans le même cycle, qui est le courant dominant de bureau cœurs x86 ne jamais faire. (Et je ne pense pas que Silvermont / Chevalier de l'Atterrissage 4-way SMT n'a que deux).
La première moitié de votre réponse est bonne, cependant. Bienvenue à Débordement de Pile. 🙂 Ah hmm, en fait, ceux-diapositives parlons dans l'ordre des pipelines et leur FGMT ne peut pas mélanger uop à partir de fils après leur problème comme HT peut. Et de la planification de la HT est dynamique; lorsqu'un thread n'ont pas d'uop prêt à problème, l'autre est toute la bande passante. Donc ces diapositives sont dans la description d'une SMT qui est à peu près comme HT.
OriginalL'auteur SavorALinux