In einem Gespräch mit dem Netzwerkadministrator erwähnte ich, dass mein Computer ein Dual-Core-Computer ist. Er sagte mir, dass es nicht war. Ich habe den Task-Manager aufgerufen, bin zur Registerkarte Leistung gegangen und habe ihm gezeigt, dass es zwei separate Diagramme zur CPU-Auslastung gibt. Ich habe eine Quad-Core-Maschine zu Hause und sie hat vier Grafiken. Er erzählte, dass es auf dieser bestimmten Maschine wegen Hyper-Threading zwei Graphen gab. Früher hatte ich einen Pentium 4-Prozessor mit Hyper-Thread, aber ich habe nie ganz verstanden, was das bedeutet. Was ist der Unterschied zwischen Hyper-Threading und Dual-Core? Und wie sagst du, welche du hast?
quelle
Beim Hyper-Threading gibt Ihr Prozessor vor, 2 physische Prozessorkerne zu haben, verfügt jedoch nur über 1 und etwas zusätzlichen Müll.
Beim Hyperthreading kommt es vor, dass sich beim Ausführen von Code im Prozessor häufig Teile des Prozessors im Leerlauf befinden. Durch das Einfügen eines zusätzlichen Satzes von CPU-Registern kann der Prozessor so wirken, als ob er zwei Kerne hätte, und somit alle Teile des Prozessors parallel verwenden. Wenn die beiden Kerne jeweils eine Komponente des Prozessors benötigen, wartet am Ende natürlich ein Kern. Aus diesem Grund kann es Dual-Core- und solche Prozessoren nicht ersetzen.
Siehe auch: Diese Frage
quelle
Hyperthreading ist eine billigere und langsamere Alternative zu Dual-Cores
Das Intel Manual Volume 3 Systemprogrammierungshandbuch - 325384-056DE September 2015 8.7 "INTEL HYPER-THREADING TECHNOLOGY ARCHITECTURE" beschreibt HT kurz. Es enthält das folgende Diagramm:
TODO ist es langsamer, um wie viel Prozent im Durchschnitt in realen Anwendungen?
Hyperthreading ist möglich, weil moderne Einzel-CPU-Kerne bereits mehrere Anweisungen gleichzeitig mit der Anweisungs-Pipeline https://en.wikipedia.org/wiki/Instruction_pipelining ausführen
Die Anweisungspipeline ist eine Trennung von Funktionen innerhalb eines einzelnen Kerns, um sicherzustellen, dass jeder Teil der Schaltung zu einem bestimmten Zeitpunkt verwendet wird: Lesen des Speichers, Decodieren von Anweisungen, Ausführen von Anweisungen usw.
Hyperthreading trennt Funktionen weiter, indem Folgendes verwendet wird:
ein einzelnes Backend, das die Anweisungen mit seiner Pipeline ausführt.
Dual Core hat zwei Backends, was die höheren Kosten und die höhere Leistung erklärt.
Zwei Front-Ends, die zwei Anweisungsfolgen aufnehmen und so anordnen, dass die Pipeline-Nutzung des einzelnen Back-Ends maximiert wird, indem Gefahren vermieden werden .
Dual Core hätte auch 2 Frontends, eines für jedes Backend.
Es gibt Randfälle, in denen die Neuordnung von Befehlen keinen Nutzen bringt und Hyperthreading unbrauchbar macht. Aber es ergibt sich eine deutliche Verbesserung im Durchschnitt.
Zwei Hyperthreads in einem Kern teilen sich weitere Cache-Ebenen (TODO, wie viele? L1?) Als zwei verschiedene Kerne, die nur L3 gemeinsam haben.
Die Schnittstelle, die jeder Hyperthread dem Betriebssystem zur Verfügung stellt, ähnelt der eines tatsächlichen Kerns, und beide können separat gesteuert werden. So
cat /proc/cpuinfo
zeigt mir 4 Prozessoren, obwohl ich nur 2 Kerne mit je 2 Hyperthreads habe.Betriebssysteme können jedoch den Vorteil nutzen, zu wissen, welche Hyperthreads sich auf demselben Kern befinden, um mehrere Threads eines bestimmten Programms auf einem einzelnen Kern auszuführen, was die Cache-Nutzung verbessern kann.
Dieses LinusTechTips-Video enthält eine unbeschwerte, nicht technische Erklärung: https://www.youtube.com/watch?v=wnS50lJicXc
quelle