Die Dinge sind viel komplexer als zu Zeiten eines CPU-Befehls pro Taktzyklus.
Es gibt jetzt eine Pipeline für jede Anweisung, die aus mehreren Schritten besteht. Ich habe bis zu 41 gehört, obwohl das vor einer Weile war und ich habe keine Ahnung, wie aktuelle CPU-Pipelines aussehen. Ich weiß, dass Sie, wenn die Pipeline lang genug ist, einen neuen Befehl in der Pipeline beginnen können, bevor der letzte Befehl abgeschlossen ist, manchmal im selben Taktzyklus, sodass Ihr einzelner Kern effektiv zwei Dinge gleichzeitig ausführt.
Hier gibt es jedoch einen Trick. Sie können dies nicht nur verwenden, um die Geschwindigkeit zu beschleunigen, mit der Ihr Prozessor Anweisungen aus einem bestimmten Programm abbaut. Es liegt ein Korrektheitsproblem vor: Die nächste Anweisung kann vom noch unbestimmten Ergebnis der vorherigen Anweisung abhängen. Um die Vorteile der langen Pipeline sicher zu nutzen , präsentiert der Chip dem Betriebssystem-Scheduler zwei separate Prozessorkerne und alternative Anweisungen, die an jeden Kern gesendet werden, so dass sich nie zwei Anweisungen an denselben "Kern" gleichzeitig in der Pipeline befinden. Auf diese Weise können wir sicher sein, dass sich gleichzeitig ausgeführte Anweisungen nicht gegenseitig stören. Dies wird als Hyperthreading bezeichnet .
Es ist erwähnenswert, dass Hyperthreading zwar die Menge an Arbeit, die Sie aus Ihrer CPU herausholen, erheblich erhöhen kann, aber bei weitem nicht so gut ist, wie dass es so viele physische Kerne gibt. Abhängig von Ihrer Arbeitsbelastung bedeutet dies möglicherweise nur eine geringe Verbesserung um 15% oder sogar eine Verbesserung um 40%. Unter bestimmten Umständen möchten Sie die Funktion möglicherweise sogar deaktivieren, damit die verbleibenden Kerne den vollständigen exklusiven Zugriff auf den L1 / L2-Cache für diesen Kern haben (dies wird manchmal mit dedizierten Datenbankservern durchgeführt).
Wenn Ihr Chip 2 Kerne mit 4 Threads anzeigt, bedeutet dies, dass es sich um einen Dual-Core-Prozessor handelt, der Hyperthreading unterstützt.