получить половину скорости процессора для одного потока, если HT включен?

1515
Jas

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

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

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

1
Нет; Вся Hyperthreading - это способность одного ядра обрабатывать два отдельных потока одновременно. Пожалуйста, сделайте еще несколько исследований по этому вопросу, прежде чем задавать дополнительные вопросы. Ramhound 10 лет назад 2
возможный дубликат [Hyperthreading Calculation Load] (http://superuser.com/questions/612477/hyperthreading-calculation-load), [Как работает сродство процессоров Windows с многопоточными ЦП?] (http://superuser.com/questions / 347982 / How-делает-Windows-процессор-сходство-работа-с-Hyperthreaded-CPU), или [Что такое потоки и что они делают в процессоре?] (Http://superuser.com/questions/329904 / что-это-ниточный-и-что-делать-они-ду-в-процессор) Breakthrough 10 лет назад 0

2 ответа на вопрос

3
David Schwartz

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

1
Hennes

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

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

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

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

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


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

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

Я понимаю, что вы пытаетесь упростить вещи, но упрощения, которые на самом деле включают ложные утверждения, IMO, не приемлемы. Например, аналогия с платной платой подразумевает, что либо один поток, либо другой продвигается вперед, что не соответствует действительности. Два потока используют разные исполнительные блоки в ядре, поэтому оба выполняются одновременно. David Schwartz 10 лет назад 0
Правда. Я должен придумать лучшую аналогию. * Думает * Может быть, первый человек, считающий деньги (например, используя АЛУ), пока второй человек занят вторым автомобилем. Все еще не велик все же. Может быть, я должен или поцарапать эту часть или значительно расширить ее. Hennes 10 лет назад 0
Может быть, магазин с двумя сотрудниками, но только с одним кассовым аппаратом? David Schwartz 10 лет назад 0

Похожие вопросы