52

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

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

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

5 ответов5

49

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

43

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

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

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

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

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

12

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

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

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

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

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

2

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

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

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .