- Registriert
- Nov. 2009
- Beiträge
- 6.495
Nai schrieb:Tur mir leid aber das ist irgendwo zwischen ungenau und falsch, SMT zunächst nichts mit SIMD bzw logischer/physikalischer SIMD-breite zu tun. Die Grundidee hinter SMT eine andere: Mehrere Threads teilen sich ein und die selben Rechenwerke. Dadurch kann, sofern ein bestimmter Thread gerade keine Aufgabe für ein bestimmtes Rechenwerk hat, mit einer gewissen Wahrscheinlichkeit, ein anderer Thread dem Rechenwerk eine Aufgabe geben, wodurch sich wiederum die Auslastung der Rechenwerke erhöht. Je mehr Threads ein SMT Prozessor also gleichzeitig ausführen kann, umso größer ist auch diese Wahrscheinlichkeit bzw die darin resultierende Auslastung des Rechenwerks.
Dass es ungenau ist, hatte ich ja selbst geschrieben. Natürlich bezieht es sich letztendlich auf die Verfügbarkeit bestimmter Ressourcen im Prozessor, allerdings müssen die Threads immer durch die Verarbeitungspipeline. Ein Befehl kann die gerade von einem anderen Befehl nicht benötigte Ressourcen nutzen. Oder es gibt teilweise auch mehrfach vorhandene Ressourcen für einen Schritt in der Pipeline. Bei letzterem handelt es sich allerdings schon wieder um ein mildes Abweichen vom reinen Hyper Threading, denn wenn die Ressource mehrfach verfügbar ist, dann ist man schon auf "halbem Weg" zu einem echten zweiten Kern. Und es kommt hier aber eben auch zu den "verschiedenen Breiten". Teilweise kann eine Ressource entweder eine 32 Bit breite Anwendung bearbeiten oder parallel auch zwei zu je 16 Bit. Man kann das auch umdeuten dazu, dass es zwei Einheiten gibt, die man auch kombinieren kann für doppelte Breite. Und dann kommt weiterhin hinzu, dass die Befehle immer noch durch die Pipeline müssen. Man kann einen darin befindlichen Befehl ggf. einen Schritt verzögern (PAUSE instruction), aber beliebig lange kann man nicht auf die Ressource warten.