Nehmen wir an, wir haben zwei CPUs, eine ist Quad Core 3,2 GHz mit 4 Kernen und wir haben einen Dual Core 3,2 GHz mit 2 Kernen mit 2 Threads in jedem Kern (Hyper-Threading). Als Programmierer gehe ich davon aus, dass die 4-Kerne-4-Threads schneller als die 2-Kerne-4-Threads arbeiten sollten, da die zweite CPU zwischen den Threads wechseln muss, um 4 Kerne zu emulieren, während die erste keine solche Umschaltung durchführen muss Kern kann unabhängig und individuell durchführen.
Ich möchte bestätigen, dass meine Annahme wahr ist. Wenn nicht, erklären Sie bitte, warum einer besser ist als der andere.
Antworten:
Ich glaube, das ist wahr - da Hyper-Threading einige Elemente gemeinsam hat - insbesondere die Hauptausführungsressourcen -, können Sie 4 vollständige Threads gleichzeitig ausführen, anstatt darauf zu warten, dass diese Ressourcen freigegeben werden.
Der Punkt von HT ist, eine bessere Leistung mit einer geringeren Nutzung der Chipfläche zu erzielen - Ihr Quad-Core wäre im Allgemeinen ein größerer Chip - etwa doppelt so groß wie ein Nicht-HT-Dual-Core-Chip, während ein HT-Dual-Core-Chip ungefähr wäre 5% größer. Der Quad-Core könnte unter der richtigen Arbeitslast bis zu doppelt so schnell sein (allerdings unwahrscheinlich, da in den meisten Fällen wahrscheinlich nicht 4 Threads mit voller Kapazität ausgeführt werden), während der Dual-Core-HT-Prozessor 15 bis 30% besser sehen würde Leistung ( laut Wikipedia ) als ein Dual-Core-Nicht-HT-Prozessor.
Mehr tatsächliche Kerne sind normalerweise besser.
quelle
Aus Wikipedia :
Wenn Sie ein Quad-Core-System haben, können jeweils 4 Threads auf einem vollständigen Core ausgeführt werden. Wenn Sie ein Dual-Core-Hyperthreading-System haben, können jeweils 2 Threads auf einem vollständigen Kern ausgeführt werden. Bei 4 Threads teilen sich die Threads 1 und 2 einen Kern und die Threads 3 und 4 den anderen Kern. Durch Hyperthreading können zwei Threads (nur) parallel ausgeführt werden, wenn sie nicht dieselben Prozessorressourcen verwenden. Im Idealfall erhalten Sie möglicherweise einen hohen Grad an Parallelisierung, aber laut Wikipedia beträgt der Leistungsgewinn nicht 100%, sondern nur 15 bis 30%.
quelle
Beim Hyper-Threading die Leerlaufzeit des Kerns für Aufgabe A (der Kern hätte eine Anforderung an die Festplatte senden können, um zu warten, bis die Festplatte den Bereich der Platten durchsucht, die Daten gelesen und an den Kern zurückgesendet hat ) wird ausgenutzt, um eine andere Aufgabe auszuführenB. Wenn TaskB vom sogenannten Thread 2 bedient wird und die Datenabrufanforderung von TaskA abgeschlossen ist, muss TaskA noch warten, bis der Kern Thread 2 beendet hat. Beide Threads können nicht gleichzeitig in einem Kern ausgeführt werden. Auch hier nutzt HT die Geschwindigkeitsinkongruenz zwischen dem Kern / Prozessor und den verschiedenen Subsystemen in Ihrem Computer aus. HT nutzt Ihre Kerne mit voller Kapazität ... es ist wie mit voller Kapazität ausgelastet. Wenn Sie also vier Registerkarten in Ihrem Browser öffnen, hat jede Registerkarte einen Kern in einem 4-Kern-System und zwei Registerkarten müssen einen Kern in einem 2-Kern-System gemeinsam nutzen.
quelle