Intel's Hyper-Threading Technologie

Was verbirgt sich hinter der Hyper-Threading Technologie?

Am 28.08.2001, auf der IDF, lüftete Intel das Geheimnis um die "Jackson" Technologie, um die ja schon längere Zeit Gerüchte durchs Netz schwirren. Hyper-Threading Technologie, da hat die Marketingabteilung wieder ganze Arbeit geleistet. Wie der Name schon andeutet, handelt es sich um eine Technik, die die multithreading
Fähigkeit (das gleichzeitige Ausführen von mehreren Threads oder Porgrammen mit nur einem Thread) der CPU verbessern soll. Ein Thread ist ein Strom von Befehlen - Code Stream. Bisher konnten die CPU's nur auf Befehlsebene mehrere Instruktionen (z.B. mov, inc, ...) gleichzeitig ausführen, was aber nur bei einigen Befehlen funktionierte und auch mit recht hohem Optimierungsaufwand verbunden war, da viele Befehle voneinander abhängen und/oder auf den selben Datenbestand zugreifen. Mit Hyper-Threading wird es erstmals möglich, mit einer physischen CPU,  2 Programme (mit jeweils einem Thread) oder 2 Threads (aus einem oder verscheidenen Porgammen) gleichzeitig auszuführen. Laut Intel, werden bei einem herkömmlichen CPU ca. 35% der Ausführungsressourcen genutzt, was mit der beschränkten Parallelisierungsmöglichkeit der Befehle zusammenhängt.

Performancesteigerung
bessere Ressourcenausnutzung

in Zukunft noch mehr Performance
in der Zukunft soll der Performancegewinn noch steigen


Wie funktionierts?


In einem traditionellen Multiprozessor-System gibt es mehrere Prozessoren, jeder führt einen eigene Thread aus. Wie kann man so etwas mit nur einer physichen CPU erreichen? Eigentlich ganz einfach, man nimmt einfach 2 CPU's und baut sie zu einer zusammen. Die Hyper-Threading-Technologie mach fast genau dies, nur verbaut sie nicht 2 komplette CPU's in eine. Es werden nur die Teile doppelt eingebaut, welche die Software sieht.

duplizierte Einheiten
  • IA-32 Datenregister
  • Segmentregister
  • Steuerregister
  • Debugregister
  • CPU-Zustandsregister (MSR)
  • jede logische CPU besitzt seine eigene "Advanced Programmable Interrupt Controller" (APIC)
nichtduplizierte Einheiten
  • Kernressourcen der physichen CPU, wie die Ausführungseinheit (Execution Engine), die Caches, das Systembus-Interface

2 in 1


Am Beispiel eines Prototypen (Intel P4 Xeon) sieht das folgendermaßen aus:


P4 Xeon Blockdiagramm
ein gewöhnlicher P4 Xeon Kern


Holen & Abliefern
diese Einheiten können jeweils nur von einem logischen CPU benutzt werden, da die Befehle (mov, inc,..) in micro Op's zerlegt werden


Ausführen
hier herrscht wieder freier Wettbewerb zwischen den logischen CPU's da es sich ab hier um µOp's handelt, welche Out-of-order abgearbeitet werden


Caches - 1
die Caches werden ebenfalls gemeinsam benutzt


Caches - 2



Übergabe & Löschen
die Resultate der µOp's müssen wieder in der richtigen Reihenfolge (wie im Programm) übergeben (in die Register geschrieben) werden (da sonst die semantische Befehlsfolge des Programms verfälscht würde), erst dann ist ein Befehle fertig abgearbeitet und kann gelöscht werden (retire)


Zusammenfassung
Zusammenfassung (Fetch & Deliver / Reorder & Retire werden jeweils getrennt benutzt, die Caches & die Rapid Execution Engine werden gleichzeitig geteilt)



Vorteile


Die Vorteile liegen sicherlich auf der Hand, der Durchsatz an Befehlen wird erhöht (>35%), somit werden die Ausführungsressourcen besser genutzt. Intel kann später die Anzahl der logischen CPU's erhöhen.
Es ist wesentlich preiswerter als zwei physich getrennte CPU's. Die Hyper-Threaded CPU meldet sich wie zwei einzelne CPU's beim BIOS, ist also völlig transparent für die Software, die auf dem Rechner läuft. Auch sind nur leichte Modifikationen am OS & den multithreaded Programmen nötig, um das volle Potenzial der Technologie auszuschöpfen. Nur kleine Modifikationen am Chipsatz und am BIOS nötig und es werden keine neuen Pins, Komponenten oder Layoutänderungen an den Mainboards benötigt.
Laut Intel soll Hyper-Threading pro CPU anfänglich (später mehr) ca. 30 Prozent mehr Leistung bringen, als bei einer baugleichen CPU ohne Hyper-Threading

völlig transparent


Nachteile


Hyper-Threading Technologie bringt bisher ca. 30 Prozent mehr Leistung. Ein echtes Dual-Prozessor System kommt auf höhere Performancewerte, gerade bei FPU intensiven Programmen. Auch bringt diese Technik nur etwas, wenn das Programm multithreaded programmiert wurde.


Quelle(n):

http://developer.intel.com/technology/hyperthread/