Почему мой двухъядерный процессор распознается как четырехъядерный?

52

Мой процессор - Intel Core i3-380m . Как видите, это 2 ядра и 4 потока.

Хотя и Ubuntu 11.04, и Windows 7, похоже, думают, что это четырехъядерный процессор:

введите описание изображения здесь

введите описание изображения здесь

Почему это? Это потому, что на каждое ядро ​​приходится 2 потока, которые делят процессор на 4 процессора?

seriousdev
источник

Ответы:

43

Как уже упоминалось, у вас есть двухъядерная система с 2 потоками на ядро.

Intel позиционирует это как гиперпоточность и в разные годы делала это разными способами.

Чтобы объяснить это в своей простейшей форме, каждое ядро ​​ЦП состоит из «ядра» и различной архитектуры вокруг этого ядра, которая хранит информацию о состоянии и процессе для каждого потока. Однопоточное ядро ​​имеет архитектуру, позволяющую хранить информацию о состоянии в 1 потоке за раз, гиперпоточное ядро ​​хранит два разных набора информации о состоянии, позволяя двум отдельным процессам запускаться одновременно, если им требуются разные части ядра ( что вполне вероятно произойдет, так как ядро ​​состоит из нескольких блоков нескольких различных типов блоков обработки).

Чтобы упростить восприятие ЦП в системе, каждый гиперпоток рассматривается как отдельный ЦП, поэтому двухъядерный двухпоточный процессор на ядро ​​выглядит как четырехъядерный процессор.

Также возможно для операционной системы использовать Core-парковку (функция в новых процессорах Intel) позволяет операционная система приостановить одну половины hyperthreaded сердечника так , что , когда дополнительные возможности обработки гиперпоточности не требуются , а затем одинарная производительность резьбы увеличивается, поскольку ядро ​​больше не разделяет свой кэш между 2 потоками и теперь может полностью выделить кэш на ядре одному потоку.

Мокубай
источник
Спасибо за объяснение. Итак, можем ли мы сказать, что поток для ядра - это ядро ​​для процессора?
Серьезный
2
В некотором смысле, да. ОС видит процессор, знает, сколько ядер на этом процессоре и, в свою очередь, сколько потоков поддерживает каждое ядро, из-за того, что загрузка процессора, которую вы видите, теперь «на поток», а не «на ядро». Это не так просто (поскольку каждый поток действительно представляется ОС, не поддерживающей гиперпоточность, как полноценное ядро ​​ЦП), но это общая идея.
Мокубай
@Mokubai core-стоянка не работает.
Biswapriyo
49

Причина - гиперпоточность , которую поддерживает ваш процессор. Гиперпоточность не является эквивалентом дополнительного процессора, но может реально повысить производительность в многопоточных приложениях. Для каждого физического процессорного ядра операционная система обращается к двум виртуальным процессорам и делит рабочую нагрузку между ними, когда это возможно.

Keltari
источник
7
Это известно как физические против логических ядер?
xdumaine
11
Да, физическое ядро ​​- ну ... физическое. Вы можете коснуться этого. Гиперпоточные ядра не реальны, а значит логичны. Вы также можете разбить физические ядра на логические ядра с помощью виртуализации.
Келтари
3
@Keltari на самом деле, есть физическая часть ... Гиперпоточность является аппаратным компонентом в ядре процессора (и может быть отключена только на аппаратном уровне). См. Этот технический документ Intel для деталей. По сути, он разделяет ресурсы ядра между двумя физическими исполнительными блоками. Технически, оба ядра, которые ОС видит в многопоточном ядре, являются «логическими», физического и логического нет.
Прорыв
1
правда, гиперпоточность - это физическая часть процессора, а не физическое ядро.
Келтари
1
Лучший способ думать о HT - это «ядро с половиной», которое делит с братом гораздо больше ресурсов, чем отдельные ядра. Однако он способен выполнять поток «сам по себе», и ОС рассматривает его как модуль выполнения потока (который вы связали с ядром).
авария
12

Все гораздо сложнее, чем в те дни, когда одна команда процессора выполнялась за один такт.

Теперь для каждой инструкции есть конвейер , состоящий из нескольких шагов. Я слышал целых 41, хотя это было некоторое время назад, и я понятия не имею, как выглядят текущие конвейеры ЦП. Я знаю, что если конвейер достаточно длинный, вы можете запустить новую инструкцию в конвейере до того, как последняя инструкция будет завершена, иногда в одном и том же тактовом цикле, так что ваше одно ядро ​​эффективно выполняет две вещи одновременно.

Здесь есть хитрость. Вы не можете просто использовать это, чтобы ускорить скорость, с которой ваш процессор обрабатывает инструкции определенной программы. Существует проблема правильности: следующая инструкция может зависеть от еще не определенного результата предыдущей инструкции. Для того, чтобы воспользоваться преимуществами длинного конвейера безопасно , чип представит два отдельных процессорных ядер в планировщиком операционной системы, а также дополнительные команды , посылаемые для каждого ядра , так что две команды в одной и той же «ядро» никогда в трубопроводе , в то же время. Таким образом, мы можем быть уверены, что любые инструкции, выполняемые одновременно, не будут мешать друг другу. Это называется гиперпоточностью .

Здесь стоит отметить, что хотя гиперпоточность может значительно увеличить объем работы, выполняемой вашим процессором, это далеко не так хорошо, как наличие такого большого количества физических ядер. В зависимости от вашей рабочей нагрузки, это может означать всего лишь 15% улучшение или 40% улучшение. В некоторых случаях вы можете даже захотеть отключить эту функцию, чтобы оставшиеся ядра имели полный эксклюзивный доступ к кешу L1 / L2 для этого ядра (это иногда делается с выделенными серверами баз данных).

Когда ваш чип объявляет себя имеющим 2 ядра с 4 потоками, это означает, что это двухъядерный процессор, поддерживающий гиперпоточность.

Джоэл Коухорн
источник
2

Взгляните на эту страницу с информацией о Intel - она ​​содержит множество анимаций, показывающих, как гиперпоточность ускоряет выполнение ваших задач.

Это Utilization of Processor Resourcesлучшая анимация, посмотрите на нее и нажмите кнопку «продвинуть».

woliveirajr
источник
1

Почему это? Это потому, что на каждое ядро ​​приходится 2 потока, которые делят процессор на 4 процессора?

Проще говоря, ответ - да. Каждое ядро ​​вашего процессора может поддерживать два независимых потока, всего 4. Но это не значит, что он имеет ту же производительность, что и четырехъядерный однопоточный процессор. практически производительность двухъядерного двухпоточного процессора ниже, чем у четырехъядерного однопоточного процессора. Как и AMD Phenom X4.

aminfar
источник
Ты знаешь почему?
Серьезный
1
Причина в том, что в двухпоточном ядре аппаратные ресурсы (например, буфер переупорядочения) распределяются между двумя потоками, тогда как в однопоточном процессоре все ресурсы выделяются одному ядру. Стоит отметить, что наличие многопоточного ядра увеличивает нагрузку на ваше оборудование и производительность, но это плохо сказывается на задержке. Есть много компромиссов. Так что слово «производительность» здесь действительно расплывчато. Для обычных людей это означает задержку одного потока.
Аминфар