Руководство Техническое руководство пользователя технологии Intel Hyper-Threading содержит некоторые подсказки о том, почему Intel не пыталась использовать более двух потоков на ядро в своих потребительских ЦП, что она и делала в некоторых серверных ЦП.
Объясняя технологию Hyper-Threading, он говорит:
Каждый логический процессор
- Имеет собственное архитектурное состояние
- Выполняет свой собственный поток кода одновременно
- Может быть прервано и остановлено независимо
Два логических процессора совместно используют
- Исполнение движка и кешей
- Прошивка и интерфейс системной шины
Важной частью является то, что два логических процессора совместно используют один и тот же механизм выполнения, а это означает, что блоки, составляющие ядро, не дублируются. Когда, например, арифметическая единица используется одним потоком, она не может использоваться другим потоком.
Это предотвращает полный параллелизм, поэтому не позволяет двум потокам выполнять параллельные инструкции одного и того же типа - один должен ждать завершения другого.
Intel количественно оценил средний прирост производительности по потокам следующим образом:
Процессор с технологией Hyper-Threading может обеспечить прирост производительности на 30 процентов при выполнении многопоточной операционной системы и кода приложения по сравнению с аналогичным процессором архитектуры Intel без технологии Hyper-Threading.
Таким образом, статистический выигрыш двух потоков против одного составляет лишь порядка 30%, что очень далеко от тех 100%, которые можно было бы ожидать, если бы два потока на одном ядре могли удвоить работу одного.
Поэтому я бы посчитал, что если бы Intel включила, скажем, три потока в ядре, статистический выигрыш был бы намного ниже, может быть, порядка 10% или меньше.
Учитывая тот факт, что некоторые аппаратные средства должны дублироваться для каждого потока, а именно состояния архитектуры и логики прерываний, выигрыш, вероятно, не стоит затрат, которые это дополнительное оборудование добавило бы к цене ядра.
Для эффективной Hyper-Threading Intel пришлось бы увеличить количество блоков одного типа внутри каждого ядра.
Это было сделано именно в микроархитектуре Haswell, которая имеет 4 порта для загрузки / хранения, 4 для целого числа и 2 для филиала, поэтому даже два потока, выполняющих идентичные целочисленные рабочие нагрузки, вероятно, не вызовут большого спора. Тем не менее, Intel по-прежнему придерживается модели двух гиперпотоков на ядро, я думаю, вероятно, для того, чтобы сэкономить на оборудовании, необходимом для большего количества гиперпотоков, или, возможно, даже потому, что современные операционные системы не могут эффективно использовать такие архитектура.