1Valla7Foldum4A
Aktives Mitglied
Thread Starter
- Dabei seit
- 13.07.2014
- Beiträge
- 1.079
- Reaktionspunkte
- 42
Aber es wurde nur einer von vier virtuellen Kernen ausgenutzt.
Folgen Sie dem Video unten, um zu sehen, wie Sie unsere Website als Icon auf Ihrem Homescreen erstellen.
Anmerkung: This feature may not be available in some browsers.
Die 12 % sind der Zeitvorteil wenn zwei threads gleichzeitig meine Testarbeit verrichten. Der Core1Duo hatte 2 Kerne. Jeder Kern kann einen thread bedienen, anders als bei neueren Dualcore CPU´s wie dem i5, wo jeder Kern 2 threads also vier bedienen kann. Ist doch ganz einfach.
(Unterstreichung von mir.)Gehen wir also von einer Single-Threaded-Applikation aus.
Eine Single-Core CPU wird zu 100% ausgelastet.
Eine Dual-Core CPU hat EINEN ihrer Kerne zu 100% ausgelastet, ist also zu 50% ausgelastet.
Hat diese CPU nun HT, bedeutet dass lediglich, dass jeder Kern zur Performancesteigerung in zwei virtuelle Kerne aufgeteilt werden kann.
Die Dual-Core HT CPU würde nun ebenfalls nur einen physischen Kern zu 100% auslasten.
Da es sich ja schließlich eine Single-Threaded-Applikation handelt, läuft das Ganze natürlich auch nur auf einem virtuellen Kern. Der zweite virtuelle Kern des physisch zu 100% ausgelasteten Kerns ist dann auch nicht mehr zu berücksichtigen.
HT führt also keinesfalls zu Leistungseinbußen, alles bleibt beim alten. Es gibt nur die Chance, Programme mit mehreren Threads effizienter abzuarbeiten.
Es war nicht meine Absicht, die jeweilige CPU voll auszulasten. Ich wollte nur sehen, um wieviel die Aufgabe schneller erledigt wird, wenn zwei threads je die Hälfte der Arbeit bzw. zusammen die ganze Arbeit erledigen.
Tut aber nichts zur Sache, weil es um HT geht. Wenn deine Anwendung auf zwei physischen Kernen nur 12% schneller ist als auf einem physischen Kern, dann ist sie schlecht parallelisiert. Du musst die selbe Aufgabe sooft gleichzeitig laufen lassen wie du physische Kerne hast, dann noch mal in der Anzahl der logischen Kerne.
Nein, sie ist garnicht parallelisiert, die 12% bessere Leistung bekommt er, weil das Betriebssystem jetzt auf den ersten Kern läuft und die Anwendung den zweiten Kern vollständig alleine nutzen kann.
Der Begriff Multithreading (auch Nebenläufigkeit, Mehrsträngigkeit oder Mehrfädigkeit genannt) bezeichnet das gleichzeitige Abarbeiten mehrerer Threads (Ausführungsstränge) innerhalb eines einzelnen Prozesses oder eines Tasks (ein Anwendungsprogramm).
Im Gegensatz zum Multitasking, bei dem mehrere unabhängige Programme voneinander abgeschottet quasi-gleichzeitig ausgeführt werden, sind die Threads eines Anwendungsprogramms nicht voneinander abgeschottet und können somit durch sogenannte Race Conditions Fehler verursachen, die durch Synchronisation vermieden werden müssen.
Hyper-Threading Technology (kurz HTT, üblicherweise nur Hyper-Threading genannt) ist die Implementierung von hardwareseitigem Multithreading in Intel-Prozessoren. Durch mehrere vollständige Registersätze und ein komplexes Steuerwerk werden intern parallel arbeitende Pipeline-Stufen mehreren parallelen Befehls- und Datenströmen zugeteilt. Hyper-Threading ist damit Parallelverarbeitung auf der Ebene des Simultaneous Multithreadings (SMT).
Zu beachten: Der „eigentliche“ Prozessorkern und der Hyper-Threading-Kern können verschiedene Prozesse bearbeiten, benötigen somit jeweils eigene Seitentabellen und implementieren Multiprocessing. Dennoch können sie auch verschiedene Threads desselben Prozesses bearbeiten und somit im selben Prozesskontext rechnen.