Das Handbuch für das technische Benutzerhandbuch für die Intel Hyper-Threading-Technologie enthält einige Hinweise, warum Intel nicht mehr als zwei Threads pro Core in seinen Consumer-CPUs versucht, was bei einigen Server-CPUs der Fall war.
Bei der Erklärung der Hyper-Threading-Technologie heißt es:
Jeder logische Prozessor
- Hat einen eigenen Architekturzustand
- Führt gleichzeitig einen eigenen Code-Stream aus
- Kann unabhängig unterbrochen und angehalten werden
Die beiden logischen Prozessoren haben dasselbe
- Ausführungs-Engine und die Caches
- Firmware- und Systembus-Schnittstelle
Der wichtige Teil ist, dass die beiden logischen Prozessoren dieselbe Execution Engine verwenden, was bedeutet, dass die Einheiten, aus denen der Kern besteht, nicht doppelt vorhanden sind. Sobald die Recheneinheit beispielsweise von einem Thread verwendet wird, kann sie nicht von dem anderen Thread verwendet werden. Dadurch wird eine vollständige Parallelität verhindert, sodass zwei Threads nicht in parallelen Anweisungen desselben Typs ausgeführt werden können - einer muss warten, bis der andere fertig ist.
Intel hat den durchschnittlichen Leistungsgewinn der Threads wie folgt quantifiziert:
Ein Prozessor mit Hyper-Threading-Technologie kann bei der Ausführung von Multi-Threading-Betriebssystem und Anwendungscode gegenüber einem vergleichbaren Prozessor mit Intel-Architektur ohne Hyper-Threading-Technologie eine Leistungssteigerung von 30 Prozent erzielen.
Der statistische Gewinn von zwei Threads gegenüber einem liegt daher nur in der Größenordnung von 30%, was sehr weit von den 100% entfernt ist, die man erwarten würde, wenn zwei Threads auf demselben Kern die Arbeit eines Threads verdoppeln könnten.
Ich würde daher schätzen, dass, wenn Intel drei Threads auf dem Kern aktiviert hätte, der statistische Gewinn viel niedriger wäre, vielleicht in der Größenordnung von 10% oder weniger.
In Anbetracht der Tatsache, dass einige Hardware für jeden Thread dupliziert werden muss, nämlich den Architekturstatus und die Interrupt-Logik, ist der Gewinn wahrscheinlich nicht die Kosten wert, die diese zusätzliche Hardware zum Preis des Kerns hinzufügen würde.
Für ein effektives Hyper-Threading hätte Intel die Anzahl der Einheiten desselben Typs in jedem Kern erhöhen müssen. In der Haswell-Mikroarchitektur, die 4 Ports für Laden / Speichern, 4 für Ganzzahl und 2 für Verzweigungen aufweist, hat dies genau das getan, so dass selbst zwei Threads, die identische Ganzzahl-Workloads ausführen, wahrscheinlich keine großen Konflikte verursachen würden. Allerdings hat sich Intel immer noch an das Modell von zwei Hyper-Threads pro Kern gehalten. Ich würde wahrscheinlich annehmen, um die Hardware zu sparen, die benötigt wird, um mehr Hyper-Threads zuzulassen, oder vielleicht sogar, weil moderne Betriebssysteme einen solchen nicht wirklich effizient nutzen können die Architektur.