Frage

Werden SSE -Register zwischen logischen Prozessoren (Hyper -Threading) geteilt oder dupliziert? Kann ich die gleiche Art von Beschleunigung von der Parallelisierung für ein SSE -Schwerprogramm wie für ein normales Programm erwarten (Intel behauptet 30% für Prozessoren mit Hyper -Threading)?

War es hilfreich?

Lösung

Es ist mir aus der Dokumentation von Intel unklar, wenn Hyperthreading -Prozessoren die Registerdatei zwischen Threads oder zwei unterschiedlichen haben eine Annahme).

In Bezug auf die Beschleunigung hängt es von Ihrer Anweisungsmischung und -planung ab. Denken Sie daran, dass eine HT -CPU keine zusätzlichen Ausführungsressourcen (Alus, Lade-/Speichereinheiten usw.) hat, die Leistungsverbesserung auf eine bessere Nutzung dieser Ressourcen zurückzuführen ist, da typischer Code, insbesondere für einen modernen Prozessor, einen angemessenen Betrag ausgibt Die Zeit blockiert auf Speicherlasten und -speicher, bevor die Ausführung fortgesetzt werden kann. HT ermöglicht es, dass diese Ladungen und Speicher so verschachtelt werden, dass ein einzelner Thread auf einer Lektüre stellt, der andere eingeschaltet werden kann und die zuvor im Leerlauf gesessenen Ausführungsressourcen verwendet werden.

Ich würde erraten, welche Art von Leistungssteigerung Sie mit Multithreading eines SSE -Programms sehen würden, hängt vom Verhältnis von Speicher -Ops zu arithmetischen OPs ab. Wenn beispielsweise Ihr SSE -Programm 4 SSE -Register aus dem Speicher lädt, 10.000 SSE -Operationen auf sie ausführt und dann die 4 Register zurückgeschrieben werden, werden Sie wahrscheinlich keinen großen Vorteil haben, dass HT den Speicherzugriff überlappen kann, weil Sie den Speicherzugriff überlappen können, weil Sie den Speicherzugriff überlappen können, weil Sie den Speicherzugriff überlappen können, weil Sie den Speicherzugriff überlappen können, weil Sie den Speicherzugriff überlappen können, weil Sie den Speicherzugriff überlappen können, weil Sie den Speicherzugriff überlappen können, weil Sie den Speicherzugriff überlappen können, weil 99% der Laufzeit Ihrer Programme werden im Simd Alus und nicht im Speicherzugriff ausgegeben.

Wenn Ihr Programm auf der anderen Seite sehr rechenaufwander ist, kann Multithree Ihr Programm die Leistung bei Multicore-Prozessoren erheblich verbessern und Ihnen möglicherweise eine Verbesserung von 30% verbessern, da Ihr Code in diesem Fall auf die vollständige Ausführungsressourcen von zugreifen kann mehrere Kerne gleichzeitig.

Andere Tipps

Sie sind logisch dupliziert - jeder Thread erhält seinen eigenen Zustand. Physisch können sie geteilt werden - hängt von Ihrer Hyperthread -Implementierung ab.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top