Влияние различных характеристик на быстродействие процессоров современных архитектур. Часть 3: Intel Core i7, технологии Turbo Boost и Hyper-Threading



Закончив в предыдущей части исследовать особенности функционирования AMD Phenom II, мы переходим к самой новой платформе от Intel: Core i7. Нужно сказать, что с точки зрения исследователя Core i7 будет даже поинтереснее: понятно, что мы, как и в случае с Phenom II, «поиграемся» с количеством ядер, однако если у Phenom II из «игрушек для взрослых мальчиков» мы наблюдаем лишь переключение режимов работы контроллера памяти, то у Core i7 таких игрушек целых две: технология Turbo Boost и технология Hyper-Threading. Напомним вкратце, что они собой представляют (более подробно об архитектуре Core i7 рассказывается в материале, который был посвящён анонсу данной линейки процессоров).

Turbo Boost

Эта технология позволяет переводить некоторые ядра на более высокую частоту работы (выше номинальной), если текущее энергопотребление процессора свидетельствует о том, что он «недогружен» работой. Таким образом, по идее, Turbo Boost должен оказывать положительное влияние на скорость работы в основном старого, однопоточного ПО: именно в этом случае велика вероятность простоя «лишних» ядер. Более подробно механизм функционирования Turbo Boost описан в статье «Процессоры Core i7 в конструктиве LGA1366».

Hyper-Threading

Эта технология нам известна ещё со времён Pentium 4. Правда, в вышедших позднее Core 2 Duo/Quad и Pentium Dual Core, о ней благополучно «забыли» — ну а вот в Core i7 снова вернули в строй. Hyper-Threading (далее просто HT) позволяет эмулировать два логических (видимых операционной системой) ядра на базе одного физического за счёт отправки на исполнение физическому ядру команд из двух параллельно исполняемых потоков. Основная идея состоит в том, что некоторое количество исполнительных устройств в ядре почти всегда простаивает т.к. для них «не находится» нужных команд. Если же мы будем на одном ядре исполнять сразу два потока — шансы на то, что все исполнительные устройства будут загружены работой, увеличатся, и общая производительность системы возрастёт. Вот только есть одно маленькое «но»: при практической реализации этой весьма гладко выглядящей на бумаге идеи, Intel пришлось кое-чем пожертвовать — не все блоки удалось сделать распределяемыми между двумя виртуальными ядрами динамически. В частности, load/store/reorder буферы при включении HT просто делятся между двумя виртуальными ядрами пополам. Таким образом, технические характеристики виртуального ядра, даже при полностью простаивающем «соседе» — всё-таки хуже, чем у одиночного физического ядра при выключенной HT, и производительность его по совершенно объективным причинам в некоторых случаях может быть меньше. Intel оптимистично утверждает, что таких случаев достаточно мало. Что ж, у нас есть прекрасный шанс убедиться в этом на практике!

Тестирование

Имеет смысл напомнить нашим читателям, что аналогичное по смыслу тестирование нами уже проводилось, только там использовались процессор Intel Core i7 920 и предыдущая версия методики тестирования процессоров (образца 2008 года). Скажем сразу: решение провести тесты ещё раз на базе обновлённой методики оказалось по факту очень правильным: результаты получились совершенно непохожие на предыдущие.

Конфигурация тестового стенда

  • Процессор: Intel Core i7 950;
  • Кулер: ASUS Triton 81;
  • Системная плата: ASUS P6T SE (чипсет Intel X58);
  • Память: 3 модуля по 2 ГБ Corsair DDR3-1800 в режиме DDR3-1600;
  • Видеокарта: Palit GeForce GTX 275
  • БП: Cooler Master Real Power M1000.

Все тесты проводились на одном тестовом стенде, изменению подвергались только установки BIOS системной платы: сначала мы отключили и Turbo Boost, и Hyper-Threading, потом включили Turbo Boost, потом отключили Turbo Boost и включили Hyper-Threading, и, наконец-таки, включили поддержку обеих технологий. Как и в прошлых сериях, в данном материале мы используем одновременно диаграммы со средним баллом по подгруппе и таблицы с результатами конкретных приложений. Такая тяга к подробностям вполне объяснима: мы исследуем технологии, которые могут очень по-разному отражаться на скорости работы реального ПО, и, собственно, именно ради выяснения этих подробностей и затевался весь «сериал».

Также, традиционно, мы даём любознательным читателям ссылку на таблицу в формате Microsoft Excel, в которой приведены все результаты тестов в самом подробном виде, а также, для удобства их анализа, присутствует дополнительная закладка — «Compare». На ней, как и в таблицах, присутствующих в статье, произведено сравнение четырёх рассматриваемых ситуация в процентном отношении. В таблицах все системы сравниваются с одной и той же конфигурацией — с выключенными Turbo Boost и Hyper-Threading (крайний левый столбец). Раскраска таблиц в статье традиционна: ярко-голубой цвет фона означает некое выдающееся положительное достижение (в данном случае мы считали таким достижением прирост производительности в 10 и более процентов), красный цвет фона сигнализирует о недостатках: там, где должен был быть прирост (ну или хотя бы ничего) — наблюдается падение производительности.

3D-визуализация


  TB & HT
Disabled
TB
Enabled
HT
Enabled
TB & HT
Enabled
3ds max ↑* 15,42 16,87 9% 16,43 7% 18,01 17%
Lightwave ↓ 14,29 12,02 19% 12,87 11% 12,57 14%
Maya ↑ 3,85 4,44 15% 4,22 10% 4,58 19%
SolidWorks ↓ 55,33 48,04 15% 57,8 -4% 50,74 9%
Pro/ENGINEER ↓ 1024 978 5% 1023 0% 1020 0%
UGS NX ↑ 3,06 3,07 0% 3,23 6% 3,05 0%
Group Score ↑ 134 148 10% 140 4% 147 10%

* — здесь и далее в таблицах стрелочкой вверх (↑) помечены те тесты, где лучшим является больший результат, стрелочкой вниз (↓) — тесты, где лучшим является меньший результат.

Визуализация и на физические-то ядра не очень бодро реагирует, поэтому результат от включения HT даже радует: ну, хоть что-то… Правда, огорчает поведение инженерного пакета SolidWorks: получив внушительную 15-процентную прибавку от TB, он отрицательно отреагировал на включение HT, в результате чего при штатном режиме работы процессора (когда включены и TB, и HT), пакет «недополучит» прибавку производительности: без HT она бы равнялась 15%, а так будет только 9. А вот на примере 3ds max, мы видим образцовое сотрудничество технологий: +9% от TB и +7% от HT в сумме дают +17% к скорости (видимо, на единицу больше получилось в результате округления). В целом же, достаточно слабо многопоточно оптимизированная группа 3D-визуализации, больше пользы получает от Turbo Boost. Это вполне соответствует нашим изначальным предположениям.

Трёхмерный рендеринг


  TB & HT
Disabled
TB
Enabled
HT
Enabled
TB & HT
Enabled
3ds max ↑ 15,6 16,18 4% 17,6 13% 18,69 20%
Lightwave ↓ 94,48 90,87 4% 74,41 27% 71,5 32%
Maya ↑ 02:44 02:35 6% 02:13 23% 02:09 27%
Group Score ↑ 143 150 5% 173 21% 181 27%

Как и следовало ожидать, такой образцово параллелящийся процесс, как рендеринг, с наибольшим энтузиазмом встретил технологию Hyper-Threading. С другой стороны: именно хорошей распараллеленностью наверняка объясняются не очень впечатляющие результаты от включения Turbo Boost: когда все 4 ядра загружены работой, тепловыделение близко к максимальному, и повышать частоту нецелесообразно. Чемпионом по выжимке всех соков из процессора, является пакет для работы с трёхмерной графикой Lightwave. Не знаем, читают ли нас программисты, работающие над этим пакетом, но хочется искренне их поблагодарить: ну просто-таки образцово оптимизированное ПО, можно в пример приводить.

Научные и инженерные расчёты


  TB & HT
Disabled
TB
Enabled
HT
Enabled
TB & HT
Enabled
Maya ↑ 9,49 10,17 7% 9,82 3% 10,24 8%
SolidWorks ↓ 38,55 35,56 8% 40,96 -6% 35,78 8%
Pro/ENGINEER ↓ 1554 1445 8% 1539 1% 1491 4%
UGS NX ↑ 5,41 5,78 7% 5,57 3% 5,72 6%
MAPLE ↑ 0,2197 0,2279 4% 0,2197 0% 0,2227 1%
Mathematica ↑ 3,2357 3,371 4% 3,0364 -6% 3,1403 -3%
MATLAB ↓ 0,038867 0,036974 5% 0,040566 -4% 0,03898 0%
Group Score ↑ 139 148 6% 137 -1% 144 4%

Ни одного «голубого флажка», зато целых 4 красных, и 3 из них — у технологии Hyper-Threading. Общий балл отчаянно, изо всех сил вытягивает в плюс технология Turbo Boost, но иногда даже ей не удаётся справиться с особенно сильной просадкой производительности от включения HT: обратите внимание на результаты Mathematica. Инженерные пакеты вообще ведут себя как-то странно: у SolidWorks +8% от TB и -6% от HT преобразовались… во всё те же +8% при включении поддержки обеих технологий. Как будто без Turbo Boost Hyper-Threading на производительность в этом приложении влияет плохо, но только включи TB — и сразу плохо влиять перестаёт вообще. Pro/ENGINEER тоже демонстрирует странности: прирост от TB равен 8%, прирост от HT — 1%, а суммарный… всего 4%.

Растровая графика


  TB & HT
Disabled
TB
Enabled
HT
Enabled
TB & HT
Enabled
ACDSee ↓ 05:04 05:08 -1% 05:21 -5% 04:45 7%
Paint.NET ↓ 00:18 00:17 6% 00:15 20% 00:14 29%
PaintShop Pro ↓ 09:20 08:41 7% 09:48 -5% 08:46 6%
PhotoImpact ↓ 06:20 06:04 4% 06:33 -3% 06:10 3%
Photoshop ↓ 05:46 05:05 13% 05:50 -1% 04:53 18%
Group Score ↑ 138 146 6% 138 0% 154 12%

Платформа Microsoft.NET снова подверждает своё положительное отношение ко всевозможным «ускорялкам» (в лице своего представителя Paint.NET), однако в целом в группе растровой графики картинка не очень радостная: ACDSee ведёт себя попросту странно, PaitShop Pro, PhotoImpact и Photoshop на включение HT реагируют отрицательно. Один только Photoshop умудрился воспользоваться потенциалом TB как следует — несмотря на то, что он же является весьма неплохо многопоточно оптимизированным приложением. И опять мы наблюдаем результаты, совершенно лишённые логики и здравого смысла: два минуса у ACDSee при «сложении» дают плюс, да и у Photoshop арифметика весьма занимательная: 13 минус 1 почему-то равно 18. :)

Сжатие данных без потерь


  TB & HT
Disabled
TB
Enabled
HT
Enabled
TB & HT
Enabled
7-Zip ↓ 03:45 03:37 4% 03:46 0% 03:37 4%
WinRAR ↓ 01:19 01:09 14% 01:15 5% 01:07 18%
Group Score ↑ 138 151 9% 142 3% 153 11%

Картина вполне логичная: больше двух потоков ни один архиватор при сжатии в собственный формат использовать не умеет, поэтому пользы от Turbo Boost намного больше, чем от Hyper-Threading. Правда, последняя опять приподнесла нам сюрприз: совершенно необъяснимо выглядит прирост от включения HT у WinRAR — хотя мы точно знаем, что этот архиватор и четыре-то ядра использовать не умеет, не то что 8.

Вообще, вы, наверное, уже заметили, что изучение особенностей взаимодействия HT и TB с реальным ПО чем-то напоминает езду на норовистой лошади: что у неё в мозгах, и куда она поскачет в следующую секунду — никому не ведомо, поэтому иногда остаётся лишь расслабиться и осматривать окрестности, пытаясь при этом остаться в седле. :)

Компиляция


Новый тест компиляции вполне неплохо умеет задействовать 4 физических ядра, не погнушался он и 8-ю виртуальными: прирост от включения Hyper-Threading составляет 23%.

Кодирование аудио


Параллельно запускаемые по числу процессорных ядер аудиокодеки должны были являться идеальной средой для проявления всех положительных черт Hyper-Threading: как мы уже выяснили по косвенным признакам, их вычислительное ядро, скорее всего, помещается в кэш, а используемые алгоритмы должны очень хорошо ложиться на концепцию HT. Резльтаты тестирования подтверждают наши предположения: прирост от включения HT составляет 28%. Turbo Boost даёт несколько меньший прирост, но тоже неплохой. Но, конечно, особенно удачным у этих технологий получился результат совместной деятельности: 45% прироста производительности! Рекорд данного тестирования, между прочим…

Кодирование видео


  TB & HT
Disabled
TB
Enabled
HT
Enabled
TB & HT
Enabled
Canopus ProCoder ↓ 03:09 02:59 6% 03:18 -5% 03:02 4%
DivX ↓ 03:37 03:30 3% 03:53 -7% 03:40 -1%
Mainconcept ↓ 05:49 05:37 4% 05:26 7% 05:08 13%
x264 ↓ 07:43 07:25 4% 06:10 25% 05:57 30%
XviD ↓ 02:37 02:33 3% 02:22 11% 02:17 15%
Group Score ↑ 146 152 4% 154 5% 163 12%

Скромные результаты TB объяснимы, т.к. в данной группе собралось в основном довольно неплохо многопоточно опимизированное ПО. Вот только реакция на HT оказалась очень разной, и если достаточно старенькому Canopus ProCoder его негатив ещё можно простить (в те времена, когда разрабатывалась эта версия, про HT на Pentium 4 уже успели забыть, а про HT на Core i7 ещё не начали говорить), то реакция вполне современного кодека DivX по меньшей мере странная. За честь группы пришлось воевать x264: этот прекрасно многопоточно оптимизированный кодек и от Hyper-Threading умудрился получить довольно весомую прибавку к производительности. Приятно порадовал и XviD — а ведь в тестировании с изменением количества физических ядер он, скажем прямо, не блистал.

Java

В данном тесте всё очевидно и лежит на поверхности: SPECjvm очень хорошо относится к наращиванию количества физических ядер, это мы знаем по прошлым тестам — как видите, ядра виртуальные ему тоже вполне по вкусу. Малый эффект от TB, по сути, именно вышенаписанным и объясняется (мы уже говорили об этом, когда обсуждали результаты в группе рендеринга и кодирования аудио).

Трёхмерные игры


  TB & HT
Disabled
TB
Enabled
HT
Enabled
TB & HT
Enabled
STALKER: Clear Sky ↑ 60 61 2% 60 0% 61 2%
Devil May Cry 4 ↑ 198 201 1% 202 2% 196 -1%
Far Cry 2 ↑ 64 65 2% 65 2% 67 5%
Grand Theft Auto 4 ↑ 66 66 0% 66 0% 66 0%
Lost Planet ↑ 43 43 0% 43 0% 43 0%
Unreal Tournament 3 ↑ 161 163 1% 165 2% 166 3%
Crysis: Warhead ↑ 54 57 6% 56 4% 56 4%
World in Conflict ↑ 55 55 0% 50 -9% 53 -4%
Group Score ↑ 118 120 2% 118 0% 120 2%

При взгляде что на диаграмму, что на табличку, в голове возникает одно довольно-таки простонародное, но зато очень меткое определение: «облом по всем позициям». Ни чудесно многопоточно оптимизированная World in Conflict, ни спорная, но всё же реагирующая на увеличенние количества ядер Grand Theft Auto 4 — никакого оптимизма по поводу HT не обнаруживают. Более того: Turbo Boost, зачастую оказывающаяся весьма эффективной там, где пасует Hyper-Threading — в данном случае тоже совершенно не впечатляет. Пожалуй, если назначать места, то игровая подгруппа может быть названа «самой индифферентной» по отношению к обеим технологиям повышения производительности. Так сказать, «первое место снизу». :)

Заключение


Итак, в среднем всё ровно, как по линеечке: Turbo Boost даёт в 7% прироста производительности, Hyper-Threading — 10%, а обе технологии вместе — 18%. То есть в целом получается, что технологии полезные: согласитесь, при взгляде на финальную диаграмму, достаточно трудно было бы убедить кого-либо считать «вредными» технологии, которые в сумме способны увеличить среднее быстродействие процессора на 18%.

Однако ознакомление с нюансами (тем, кто сразу пролистал статью до заключения, мы всё же настоятельно рекомендуем это сделать) создаёт несколько иное впечатление: даже в неплохо многопоточно оптимизированных приложениях, на физических ядрах ведущих себя вполне прилично, технология Hyper-Threading иногда вызывает достаточно сильные «взбрыки», и в этих случаях возникает впечатление, что основная задача работающей по соседству Turbo Boost состоит уже не столько в ускорении системы, сколько в компенсации, по возможности, этих самых взбрыков, чтобы производительность хотя бы в минус не ушла (кстати — иногда всё равно уходит, и не так уж редко). Конечно, очень трогательно, что Intel подобрала для HT «стабилизирующую компаньонку», однако, помнится, в презентациях Core i7 нам роль Turbo Boost объясняли несколько иначе. ;)

Впрочем, практические рекомендации от этого не изменятся: совместное применение HT и TB следует считать вполне оправданным, т.к. мы не раз имели возможность убедиться, что Turbo Boost оказывается весьма кстати именно тогда, когда Hyper-Threading ничего не даёт или начинает «шалить». Можно, конечно, помечтать о некой интеллектуальной схеме, которая бы переключалась между TB и HT «на лету», в зависимости от того, какая технология в данный момент приносит больший эффект, однако на сегодняшний день это скорее из области фантастики (например, вполне логично предположить, что от частого включения/выключения HT может «сойти с ума» планировщик операционной системы). Поэтому в целом разумным решением Intel является держать обе технологии включёнными — авось какая-то из двух да пригодится.

С точки зрения количества создаваемых проблем — чемпионом, безусловно, является технология Hyper-Threading. Она получила намного больше «красных карточек», свидетельствующих о падении производительности при её включении, чем Turbo Boost (собственно, у TB красная карточка всего одна, да и то на 1%, что вполне может быть объяснено погрешностью измерений). С другой стороны — от HT и пользы намного больше (когда она есть). Вот такое вот единство и борьба противоположностей: в среднем более полезная HT, в то же время чаще оказывается вредной. Впрочем, мы уже объяснили, почему: при включении HT ресурсы одного физического ядра начинают разделяться между двумя виртуальными (иногда ещё и не динамически, а строго пополам) — в результате чего производительность одного «виртуального» ядра в некоторых случаях оказывается объективно меньше, чем если бы это ядро было физическим.

Однако даже с учётом всех вышеприведенных «рассуждалок», всё равно следует констатировать тот факт, что некоторые результаты нашего сегодняшнего эксперимента никаким логическим объяснениям не поддаются в принципе. Это, разумеется, не означает, что внутрь Core i7 встроен генератор случайных чисел, управляющий производительностью*. :) Просто современный процессор — и так довольно сложная штука. А когда ему на каждое физическое ядро вешают по два виртуальных, доведя общее количество до восьми, да ещё при этом динамически управляют частотой каждой пары по отдельности — даже вообразить трудно, сколько «презабавнейших» ситуаций может возникать. Вычислить их, конечно же, можно — но времени на вычисление всех понадобится столько, что успеем как раз к снятию процессорной линейки с производства. Так что, по всей видимости, и к такому понятию как «плавающая производительность», нам тоже придётся постепенно привыкать.

* — На самом деле, есть сведения из секретных источников, что имеет место хитрый биодатчик, который подстраивает частоту шины в зависимости от пульса ближайшего человека. Но это Страшная Тайна, и рассказывать её никому нельзя, иначе Core i7 тут же превратится в тыкву.

В целом же, у Intel всё-таки скорее «получилось», чем нет. Обе технологии пусть и сыроваты местами, но причин забросить их в дальний угол не наблюдается — наоборот, нужно совершенствовать и устранять выявленные недостатки. Несомненно и то, что избавиться от них совсем, видимо, не удастся — реализация HT совсем без потерь, по сложности вплотную приблизится к обычным двум физическим ядрам. Однако если рассматривать ситуацию с высоты птичьего полёта, не особенно отвлекаясь на досадные мелочи, то можно констатировать, что, как говорил герой одного старого преферансного анекдота: «…И так неплохо вышло». :)

Следующая серия будет посвящена ещё одному, более подробному исследованию особенностей функционирования технологии Hyper-Threading, в котором мы постараемся смоделировать максимально прозрачную по условиям ситуацию, и посмотрим, как она себя в ней поведёт.

Следующая статья серии: Intel Core i7, Hyper-Threading «в чистом виде»



Модули памяти для тестовых стендов предоставлены Corsair Memory
Процессор Intel Core i7 950 и плата ASUS P6T SE предоставлены компанией Ulmart



Дополнительно

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.