1

Например, если у меня будет одно ядро с частотой 2,6 ГГц, это будет означать, что при гиперпоточности у меня будет только 1,3 ГГц для одного потока, который есть у моего приложения, или он используется по требованию, только если я буду его использовать (допустим, мое приложение работает на компе ... ради дела ни ос не бегает)

однопотоковый одноядерный без HT: поток работает на 2,6 ГГц однопоточный одноядерный с HT: поток работает на 1,3 ГГц?

если это не половина скорости, при условии, что у меня работает только один поток, насколько он ухудшается при включенном HT? 10%? еще?

2 ответа2

3

Нет, тактовые частоты просто так не работают. Исполнительные блоки в ядре работают с одинаковой скоростью независимо от того, от какого потока они работают, от имени или от того, включен или отключен HT на физическом ядре.

1

Нет, это не значит. Каждая задача может выполняться в одном потоке на полной скорости ядра. Когда один из них блокируется (например, во время ожидания относительно медленного ввода-вывода из основной памяти), другой поток может работать на полной скорости ядра.

Обратите внимание, что при использовании двухъядерной установки с одним ядром вы можете одновременно использовать только некоторые ресурсы в одном потоке. Например, если вам нужно запустить два потока и оба должны прочитать данные из основной памяти, то это может сделать только один поток. Другим придется подождать. Если у вас есть два потока, и один из них выполняет что-то исключительно на кристалле (например, используя ALU), в то время как другой выполняет чтение из основной памяти, то оба могут работать одновременно.

Думайте об этом как о наличии магазина с двумя сотрудниками, но только с одним кассовым аппаратом. Если оба должны получить доступ к кассовому аппарату, тогда придется ждать (ничего не делать). Или, если повезет, только один должен получить доступ к кассовому аппарату, а другой занят разговором со следующим клиентом, пока первый человек управляет регистром. (Таким образом, делая две вещи одновременно).

если это не половина скорости, при условии, что у меня работает только один поток, насколько он ухудшается при включенном HT? 10%? еще?

Это зависит от программы. Наихудший живой случай, который я слышал, - это общее замедление на 30% * 2 (как на самом деле медленнее при включенном HT). Лучший теоретический случай - это почти 100% прирост. На практике, кажется, в среднем около 30% выигрыша в скорости по сравнению с без HT.


* 2: 30% замедление было в реальном производственном коде веб-паука. Но худшие вещи возможны. Например, база данных допускает только два потока в двухъядерном, четырехпотоковом процессоре и планировщике, который постоянно планирует оба потока в одном и том же физическом ядре.

10-09-2014: добавлены две ссылки с соответствующей информацией:
Википедия: Hyper-Threading
Википедия: одновременная многопоточность

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