Чому Apple Activity Monitor повідомляє, що мій Mac з двоядерним процесором Intel i5 Ivy Bridge має 4 ядра?


12

Щойно я отримав новий Apple MacBook Pro 13 ", середина 2012 року, який має двоядерний процесор Intel i5 Ivy Bridge. Коли я запускаю Monitor Monitor і включаю плаваюче вікно процесора, він показує 4-смугову графіку (із зазначенням 4 сердечники).

На моєму старшому MacBook Pro з двоядерним процесором Intel Core 2 Duo, Monitor Monitor показав лише 2-барний графік (із зазначенням 2 ядер).

Чому монітор активності, схоже, вказує на те, що мій Mac має 4 ядра, якщо явно це не відбувається?


4
Я думаю, це ваша відповідь: superuser.com/questions/216110/…
Saaru Lindestøkke

Відповіді:


22

Це технологія під назвою Hyperthreading для підтримки цих чіпів i5.

Це означає, що два потоки можуть працювати одночасно на кожному ядрі, що призводить до двох додаткових віртуальних ядер. Монітор діяльності OS X показує лише віртуальні ядра, а не фізичні ядра. Аналогічно, чотирьохядерний чіп має вісім віртуальних ядер, і ось що представлено в Activity Monitor.

Підсумовуючи це:

  • 1 процесор
  • 2 фізичні ядра
  • 4 віртуальних ядра (2 на фізичне ядро)

Гаразд, але… Якщо дві нитки можуть працювати одночасно, кожен потік може працювати лише з максимальною половиною нормальної швидкості, ні? І я кажу максимум , закон Амдала приходить…
Ніколя Барбулеско

Не так ... виконання інструкції включає в себе кілька кроків (читання з пам'яті, встановлення реєстрів, виконання, зберігання результатів, переключення контексту тощо). Hperthreading дозволяє одночасно працювати на двох стадіях процесу, не втрачаючи швидкості.
Основна

Така поведінка пояснюється технологією SMP від ​​Intel, яку вони називають "Hyper-threading", на що вказував @kremalicious. Також важливо зазначити, що Hyper-Threading не стосується конвеєрного руху (як це запропонував @Basic), а суперскалярного. Ось простий приклад розуміння суперскалярної архітектури: Замість однієї арифметичної одиниці ми маємо, скажімо, дві копії однієї (по одній для кожного віртуального ядра), так що обчислення можна робити паралельно на різних операндах даних. Тому віртуальні сердечники не поділяють час p
AmanNoug

@AmanNoug Ви абсолютно праві. Моя помилка.
Основні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.