Почему Hyper-Threading предоставляет 2 виртуальных ядра, но не более?

вот объяснение гиперпоточности, найденной на Википедия:

для каждого физически присутствующего процессорного ядра операционная система обращается к двум виртуальным (логическим) ядрам и по возможности распределяет между ними рабочую нагрузку.

Мне интересно, почему у нас нет Hyper-Threading, которые обеспечивают 3 или 4 логических ядра на физическое ядро?

26
задан A.L
01.03.2023 20:34 Количество просмотров материала 2806
Распечатать страницу

4 ответа

руководство Intel Hyper-Threading Technology техническое руководство пользователя содержит некоторые подсказки о том, почему Intel не пытался более двух потоков на ядро в своих потребительских процессоров, что он и сделал в некоторых серверных процессорах.

объясняя технологию Hyper-Threading, он говорит:

каждый логический процессор

  • имеет свое собственное состояние архитектуры
  • выполняет свой собственный поток кода одновременно
  • можно прервать и остановить независимо

два логических процессоров одинаковые

  • выполнение движка и кэш
  • прошивка и интерфейс системной шины

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

Intel подсчитала средний прирост производительности по потокам следующим образом:

процессор с технологией Hyper-Threading может обеспечить производительность увеличение 30 процентов при выполнении многопоточной операционной системы и код приложения по сравним архитектуру Intel процессор без технологии Hyper-Threading.

статистический выигрыш двух потоков по сравнению с одним, следовательно, только в порядке 30%, что очень далеко от 100%, что можно было бы ожидать, если два потока на таком же ядре смогл сделать двойную работу одного.

поэтому я бы оценил, что если бы Intel включил, скажем, 3 потока на ядре, статистически увеличение были бы гораздо ниже, может быть порядка 10% или менее.

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

для эффективного Hyper-Threading, Intel пришлось бы увеличить число однотипных внутри каждого ядра. Оно делал как раз то в микроархитектуру Haswell что имеет 4 порта для нагрузки / магазинов, 4 для целого числа и 2 для ветви, так даже два потока с одинаковыми целочисленными рабочими нагрузками, вероятно, не представят много споров. Тем не менее, Intel до сих пор сохранил модель из двух гипер-потоков на ядро, я думаю, наверное, в целях экономии на оборудование, необходимое для обеспечения большего количества гиперпотоков, или, может быть, даже потому, что современные операционные системы не могут эффективно использовать такую архитектуру.

1
отвечен harrymc 2023-03-03 04:22

эта дискуссия была поднята на ServerFault SE: сколько процессоров следует использовать с Hyperthreading?

при наличие двух разных потоков приводит к тому, что работать хуже?

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

логическое ядро не может сделать много, но оно обеспечивает немного больший параллелизм. Это далеко не реальные ядра. Фактически, он предлагает около 30% производительности реального физического ядра.

его целью было просто увеличить параллелизм в мире, где доминируют Ввода/вывода (не ресурсоемкие) процессов. Когда процессор интенсивный (CPU поток переключается на одно из этих ядер, его производительность будет существенно ухудшать.

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

источник: Когда HyperThreading Больно

1
отвечен xavier_fakerat 2023-03-03 06:39

Мне интересно, почему у нас нет Hyper-Threading, которые обеспечивают 3 или 4 логических ядер на физическое ядро?

причина в том, что инженеры Intel разработали технологию Intel Hyper-Threading, которая при включении обрабатывает только 2 потока на физическое ядро.

вот официальное описание этой функции от Intel:

технологии многопоточности (технологии HT) обеспечивает два обработка потоков на физический сердечник. Многопоточные приложения могут выполняйте больше работы параллельно, быстрее выполняя задания.

enter image description here

источник: Процессор Intel® Core™ i7-4770 - Нажать на кнопку ? рядом со списком функций на странице спецификации любого процессора Intel.

0
отвечен Ramhound 2023-03-03 08:56

Почему не 3 или 4 нитки? Или 8? Снижение отдачи. Sun сделал 8 потоков на ядро и для вещей, которые нуждаются во многих потоках, но не высокой производительности, это работало хорошо, но вы заметите, что тактовая частота была намного ниже, чем чипы Intel того же времени. Дублирование части ядра в несколько потоков способствует дополнительному перегреву. Новые чипы от Sun и теперь Oracle имеют возможность динамически отключать некоторые или все другие потоки на данном ядре, чтобы обеспечить высокий производительность для однопоточной задачи.

0
отвечен otislafayette 2023-03-03 11:13

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх