Was ist Hyperthreading?

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Im Prinzip ist HT eine Form der Prozessoptimierung. Je nach exaktem Aufbau hast Du heute in einem CPU-Kern, keine einheitliche ALU mehr, sondern verschiedene Rechennetze, die eine bestimmte Gruppe an Operationen ausführen können. Sie sind also spezialisiert.

Wenn jetzt also die Instruktionen reinkommen, dann ordne ich diese den entsprechenden Ausführungseinheiten zu. Das kann aber dazu führen, da je nach Programmcode manche Einheiten Däumchen drehen. Außerdem müssen Einheiten mitunter auf Ergebnisse anderer warten, was auch ein Leerlauf wäre.

Bei HT nehme ich nun einfach 2 Ausführungsstränge, gebe jedem die notwendigen Resourcen wie Registersatz, während sie sich den Rest mehr oder minder teilen. Dadurch kann ich die ausführenden Einheiten besser auslasten und schaffe insgesamt einen höheren Durchsatz an Instruktionen.

-----

Jetzt nennen wir die Ausführungseinheiten mal Bauarbeiter, die unterschiedliche Aufgaben erledigen. Lasse ich den ganzen Trupp ein Wohnhaus auf einer Baustelle bauen, dann haben verschiedene Gewerke immer mal Leerlauf - Habe ich auf einer Bausteller mehrere Gebäude, dann ändert sich das schlagartig, weil freie Arbeiter ihnen mögliche Aufgaben bei anderen Gebäuden übernehmen können. Das heißt zwar nicht, daß ich 2 Häuser in der gleichen Zeit wie eines bauen kann, aber ich brauche definitiv weniger Zeit als für den Bau nacheinander.

Prozessoren haben eine Pipeline, das heißt, auf einer Seite kommen befehle rein auf der anderen Seite kommt da Ergebnis raus, dazwischen passiert eine Menge.

Nun, nicht jeder Befehl benötigt alle resourcen dieser pipeline.

Hyperthreading bedeutet im Prinzip dass sich eine Pipeline an einer Stelle teilt, und so einige Prozessor Ressourcen von zwei Threads gemeinsam verwendet werden.

So werden die Ressourcen der CPU effizienter genutzt und man erhält mehr Leistung für nur minimal mehr Stromverbrauch.


Die Maschineninstruktionen mehrerer Threads werden von der CPU automatisch so eingeplant, dass die CPU optimaler ausgenutzt wird.

Ist so ziemlich überall ein Vorteil, wo du mehr als einen Thread laufen hast und nicht selber dafür gesorgt hast, dass die CPU optimal genutzt wird.