Welche Kerne entsprechen jeder "CPU" unten?
Angenommen, wir haben Core 1, 2, 3 und 4, CPU4 und CPU5 repräsentieren Core 3.
Stehen (sagen wir) die CPU 6 und die CPU 7 unten für einen Kern; die HT und der reale Kern?
Es gibt keinen Unterschied zwischen den beiden - sie verfügen beide über physische Hardwareschnittstellen zur CPU, die logische Schnittstelle ist in Hardware implementiert ( weitere Informationen finden Sie im Intel Core-Prozessor-Datenblatt, Band 1 ). Grundsätzlich besteht jeder Kern aus zwei separaten Ausführungseinheiten, teilt jedoch einige gemeinsame Ressourcen. Aus diesem Grund kann Hyperthreading in bestimmten Fällen die Leistung beeinträchtigen.
Wenn die CPU 6 beispielsweise einen realen Kern und die CPU 7 einen HT-Kern darstellt, erhält ein Thread, der nur der CPU7 zugewiesen ist, nur die verbleibenden Ressourcen eines realen Kerns? (vorausgesetzt, der Kern führt andere Aufgaben aus)
Siehe oben. Ein Thread, der NUR CPU6 oder ONLY CPU7 zugewiesen ist, wird mit der gleichen Geschwindigkeit ausgeführt (vorausgesetzt, der Thread führt die gleiche Arbeit aus und die anderen Kerne im Prozessor befinden sich im Leerlauf). Windows kennt sich mit HT-fähigen Prozessoren aus, und der Prozessplaner berücksichtigt dies.
Wird das Hyperthreading vollständig innerhalb des Prozessors verwaltet, sodass Threads intern jongliert werden? Wenn ja, liegt das am CPU-Umfang oder am Kernbereich? Beispiel: Wenn CPU 6 und 7 einen Kern darstellen, spielt es keine Rolle, welchem Prozess ein Prozess zugewiesen wird, weil die CPU einem laufenden Thread Ressourcen entsprechend zuweist?
Beide. Die eigentliche Hardware selbst plant nicht, auf welchen Kernen Programme ausgeführt werden. Dies ist die Aufgabe des Betriebssystems. Die CPU selbst ist jedoch dafür verantwortlich, Ressourcen zwischen den eigentlichen Ausführungseinheiten aufzuteilen, und Intel legt fest, wie Sie Code schreiben können, um diesen Vorgang so effizient wie möglich zu gestalten.
Ich stelle fest, dass langlebige Single-Threading-Prozesse, zumindest laut Task-Manager, ziemlich stark um Kerne herumprallen. Bedeutet das, dass die Zuweisung eines Prozesses zu einem einzelnen Kern die Leistung ein wenig verbessert (indem Kontextwechsel und Cache-Ungültigmachungen usw. vermieden werden)? Wenn ja, kann ich wissen, dass ich nicht "nur einen virtuellen Kern" zuweise?
Dies ist ein normales Verhalten, und nein, wenn Sie es einem einzelnen Kern zuweisen, wird die Leistung nicht verbessert. Wenn Sie jedoch aus irgendeinem Grund sicherstellen möchten, dass ein einzelner Prozess nur auf einem einzelnen physischen Kern ausgeführt wird, weisen Sie ihn einem einzelnen logischen Prozessor zu.
Der Grund, warum der Prozess "herumspringt", ist auf den Prozess-Scheduler zurückzuführen. Dies ist ein normales Verhalten, und Sie werden wahrscheinlich die Leistung reduzieren, wenn Sie beschränken, auf welchen Prozessorkernen der Prozess ausgeführt werden kann (unabhängig von der Anzahl der Threads), da der Prozesszeitplaner jetzt härter arbeiten muss, damit alles mit den auferlegten Einschränkungen funktioniert. Ja, diese Strafe ist in den meisten Fällen vernachlässigbar, aber das Endergebnis ist, es sei denn, Sie haben einen Grund, dies zu tun .