Почему Apple Activity Monitor сообщает, что мой Mac с двухъядерным процессором Intel i5 Ivy Bridge имеет 4 ядра?


12

Я только что получил новый Apple MacBook Pro 13 ", середина 2012 года, в котором установлен двухъядерный процессор Intel i5 Ivy Bridge. Когда я запускаю Activity Monitor и включаю окно плавающего процессора, на нем отображается 4-полосная диаграмма (обозначающая 4 ядра).

На моем старом MacBook Pro с двухъядерным процессором Intel Core 2 Duo Activity Monitor отображал только 2-столбчатую диаграмму (обозначающую 2 ядра).

Почему Activity Monitor, кажется, указывает на то, что мой Mac имеет 4 ядра, а на самом деле его нет?


4
Я думаю, что это ваш ответ: superuser.com/questions/216110/…
Саару Lindestøkke

Ответы:


22

Эта технология называется Hyperthreading для поддержки этих чипов i5.

Это означает, что два потока могут работать одновременно на каждом ядре, что приводит к двум дополнительным виртуальным ядрам. Монитор активности OS X показывает только виртуальные ядра, а не физические ядра. Аналогично, четырехъядерный чип имеет восемь виртуальных ядер, и это то, что представлено в Activity Monitor.

Подвести итог:

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

Хорошо, но ... Если два потока могут работать одновременно, каждый поток может работать только с максимальной половиной нормальной скорости, не так ли? И я говорю максимум , закон Амдаля приходит ...
Николас Барбулеско

Не так ... выполнение инструкции включает в себя несколько шагов (чтение из памяти, установка регистров, выполнение, сохранение результатов, переключение контекста и т. Д.). Гиперпоточность позволяет одновременно выполнять 2 потока на разных этапах процесса без потери скорости.
Основное

Такое поведение связано с технологией Intel SMP, которую они называют «Hyper-threading», как указывает @kremalicious. Также важно отметить, что Hyper-threading не относится к конвейерной обработке (как предложено @Basic), а суперскалярен. Вот простой пример для понимания суперскалярной архитектуры: вместо одной арифметической единицы мы имеем, скажем, две копии одной и той же (по одной для каждого виртуального ядра), так что вычисления могут выполняться параллельно для разных операндов данных. Поэтому виртуальные ядра не делят время п
AmanNoug

@ AmanNoug Ты совершенно прав. Моя ошибка.
Базовый
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.