Warum meldet Apple Activity Monitor, dass mein Mac mit einer Intel i5 Ivy Bridge-CPU mit zwei Kernen über 4 Kerne verfügt?

12

Ich habe Mitte 2012 ein neues Apple MacBook Pro 13 "mit einer Intel i5 Ivy Bridge-CPU mit zwei Kernen erhalten. Wenn ich Activity Monitor starte und das Floating CPU-Fenster einschalte, wird ein 4-Balkendiagramm angezeigt (Anzeige 4) Kerne).

Auf meinem älteren MacBook Pro mit einem Intel Core 2 Duo Dual-Core-Prozessor zeigte Activity Monitor nur ein 2-Balkendiagramm (mit 2 Kernen).

Warum scheint der Aktivitätsmonitor anzuzeigen, dass mein Mac über 4 Kerne verfügt, obwohl dies eindeutig nicht der Fall ist?

Cajunluke
quelle
4
Ich denke , dies ist Ihr anwer: superuser.com/questions/216110/...
SAARU Lindestøkke

Antworten:

22

Dies ist eine Technologie namens Hyperthreading, die diese i5-Chips unterstützt.

Dies bedeutet, dass zwei Threads gleichzeitig auf jedem Kern ausgeführt werden können, was zu zwei zusätzlichen virtuellen Kernen führt. Der Aktivitätsmonitor von OS X zeigt nur virtuelle Kerne an, keine physischen Kerne. Ebenso verfügt ein Quad-Core-Chip über acht virtuelle Kerne. Dies wird im Aktivitätsmonitor dargestellt.

Etwas zusammenfassen:

  • 1 CPU
  • 2 physische Kerne
  • 4 virtuelle Kerne (2 pro physischem Kern)
kremalicious
quelle
OK, aber ... Wenn zwei Threads gleichzeitig ausgeführt werden können, kann jeder Thread nur mit maximal der Hälfte der normalen Geschwindigkeit ausgeführt werden, nicht wahr? Und ich sage maximal , Amdahls Gesetz kommt herein ...
Nicolas Barbulesco
Nicht so ... Das Ausführen eines Befehls umfasst mehrere Schritte (Lesen aus dem Speicher, Festlegen von Registern, Ausführen, Speichern von Ergebnissen, Kontextwechsel usw.). Durch das Hperthreading können zwei Threads gleichzeitig in verschiedenen Phasen des Prozesses ausgeführt werden, ohne an Geschwindigkeit zu verlieren.
Basic
Dieses Verhalten ist auf die SMP-Technologie von Intel zurückzuführen, die als "Hyper-Threading" bezeichnet wird, wie von @kremalicious hervorgehoben. Es ist auch wichtig darauf hinzuweisen, dass Hyper-Threading sich nicht auf Pipelining bezieht (wie von @Basic vorgeschlagen), sondern auf Superskalar. Hier ist ein einfaches Beispiel, um die superskalare Architektur zu verstehen: Anstelle einer Recheneinheit haben wir beispielsweise zwei Kopien derselben (eine für jeden virtuellen Kern), sodass die Berechnungen parallel für verschiedene Datenoperanden durchgeführt werden können. Daher teilen sich die virtuellen Kerne das p
AmanNoug
@AmanNoug Du hast ganz recht. Mein Fehler.
Basic