Welche Kerne entsprechen jeder "CPU" unten?
Angenommen, wir haben Core 1, 2, 3 und 4, dann repräsentieren CPU4 und CPU5 Core 3.
Stellen (sagen wir) CPU 6 und CPU 7 unten einen Kern dar? die HT und der wahre Kern?
Es gibt keine Unterscheidung zwischen den beiden - beide haben physikalische Hardwareschnittstellen zur CPU, die logische Schnittstelle ist in Hardware implementiert (siehe Intel Core Prozessor Datenblatt, Band 1 für mehr Details). Grundsätzlich verfügt jeder Core über zwei separate Ausführungseinheiten, die sich jedoch einige gemeinsame Ressourcen teilen. Aus diesem Grund kann Hyperthreading in bestimmten Fällen die Leistung beeinträchtigen.
Wenn z. B. CPU 6 einen realen Kern und CPU 7 einen HT-Kern darstellt, erhält ein Thread, der nur CPU 7 zugewiesen ist, nur die verbleibenden Ressourcen eines realen Kerns? (unter der Annahme, dass der Kern andere Aufgaben ausführt)
Siehe oben. Ein Thread, der NUR CPU6 oder NUR CPU7 zugewiesen ist, wird mit genau derselben Geschwindigkeit ausgeführt (vorausgesetzt, der Thread erledigt die gleiche Arbeit und die anderen Kerne im Prozessor sind im Leerlauf). Windows kennt sich mit HT-fähigen Prozessoren aus, und der Prozessplaner berücksichtigt diese Aspekte.
Wird das Hyperthreading vollständig im Prozessor verwaltet, sodass Threads intern durcheinander gebracht werden? Wenn ja, liegt das am CPU-Bereich oder am Kernbereich? Beispiel: Wenn CPU 6 und 7 einen Kern darstellen, spielt es keine Rolle, welchem Prozess ein Prozess zugewiesen ist, da die CPU einem laufenden Thread die entsprechenden Ressourcen zuweist?
Beide. Die eigentliche Hardware tut dies nicht Planen Sie, auf welchen Kernen Programme ausgeführt werden sollen. Dies ist die Aufgabe des Betriebssystems. Die CPU selbst ist jedoch für die gemeinsame Nutzung von Ressourcen zwischen den tatsächlichen Ausführungseinheiten verantwortlich, und Intel schreibt vor, wie Sie Code schreiben können, um dies so effizient wie möglich zu gestalten.
Ich stelle fest, dass lang andauernde Single-Thread-Prozesse, zumindest laut Task-Manager, ziemlich häufig um Kerne herumlaufen. Bedeutet dies, dass das Zuweisen eines Prozesses zu einem einzelnen Kern die Leistung ein wenig verbessert (durch Vermeiden von Kontextwechseln und Cache-Ungültigkeiten usw.)? Wenn ja, kann ich wissen, dass ich nicht "nur einen virtuellen Kern" zuordne?
Das ist normal und nein, es einem einzelnen Kern zuzuweisen nicht Leistung verbessern. 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", liegt am Prozess-Scheduler. Dies ist ein normales Verhalten, und Sie werden höchstwahrscheinlich Leistungseinbußen feststellen, wenn Sie einschränken, auf welchen Kernen der Prozess ausgeführt werden kann (unabhängig von der Anzahl der Threads), da der Prozess-Scheduler jetzt härter arbeiten muss, damit alles mit den auferlegten Einschränkungen funktioniert. Ja, diese Strafe mag in den meisten Fällen vernachlässigbar sein, aber das Endergebnis ist es es sei denn, Sie haben einen Grund, dies zu tun, nicht !