HyperThreading в играх
Intel желает, чтобы вы играли в играх на HT 3,06 ГГц Pentium 4. Причина заключается в том, что игры, в отличие от тривиальных приложений MS Office, могут показать вам реальные преимущества технологии Intel HyperThreading (HT).
HT позволяет многопоточному коду выполняться на одном процессоре Pentium 4, как будто в системе существует два независимых Pentium 4 процессора. Однако преимущество новая технология дает лишь при параллельной работе нескольких потоков и их конкуренции за ресурсы процессора – что мы и наблюдаем в случае игр. В качестве примера можно привести высокую нагрузку на двигатель автомобиля: в Porsche 911 режим “турбо” включается только лишь при достижении двигателем определенного числа оборотов. Режим “турбо” имеет смысл при ускорении до 100 километров в час менее чем за шесть секунд, но абсолютно бесполезен при движении со скоростью 60 километров в час между светофорами.
К примеру, если вы играете в Quake III с его многочисленными потоками на системе, оснащенной видеокартой последнего поколения от ATi или nVidia и разогнанном Pentium 4, Intel утверждает, что HT позволит вам получить 20% прирост в частоте кадров.
Но сегодня мы не можем оценить достоверность мнения Intel, ведь игры, специально написанные с поддержкой HT, еще не появились на рынке. Однако факты говорят в поддержку Intel, поскольку HT действительно увеличивает производительность сегодняшних многопоточных игр. С точки зрения перспективы, рациональное использование потоков в игре позволит разработчикам повысить уровень “интеллекта” компьютерных персонажей, что вдохнет новую порцию жизни в ваши любимые игры. Большее число потоков означает присутствие более разумных и самостоятельных игровых персонажей, а также большее число online игроков.
HT обеспечивает более реалистичный Unreal, хотя в мире электронных таблиц новая технология мало что дает.
“Умные” игровые потоки
Разработчики игр смогут добавлять комплексные потоки в будущие игровые приложения, если технология HT получит широкое развитие. Поскольку с повышением числа потоков игра может тормозить процессорные ресурсы, то HT дает разработчикам жизненное пространство для включения большего числа потоков в свои игры без замедления процессора. К примеру, стратегические игры для Pentium 4 с HT смогут обеспечить большее фоновое действие, типа хорошо просчитанной травки, облаков, падающих звезд или колышущейся на поле пшеницы.
В играх, которые сегодня присутствуют в продаже, уже используется несколько потоков, однако не в самой хорошей реализации, считает Бред Ворделл, создать Galactic Civilization. “Мы уже использовали многопоточность в новой версии Galactic Civilization, поскольку наша игра по своей природе многозадачная. Когда вы погружаетесь в компьютерные игры, игровые персонажи должны обладать таким же разумом, что и люди. Для этого вам необходимо использовать несколько потоков, которые позволят компьютерным персонажам думать, в то время как вы будете двигаться”.
Galactic Civilization уже используют несколько потоков.
По словам Ворделла, в однопоточной программе код, заполняющий экран графикой, просит подумать AI, что персонаж будет делать дальше. “Игровые разработчики должны удостовериться, что AI быстро завершит свои вычисления, иначе игра потеряет необходимую частоту кадров. Или пойти более разумным путем: создать фоновый поток, в результате чего заполнение экрана и просчет AI будут выполняться одновременно”.
Ниже показан пример игрового кода без использования многопоточности:
void main()
{
while(true)
{
PaintScreen();
UpdateAI();
}
}
А теперь напишем тот же код с использованием многопоточности:
void main()
{
CreateThread(NULL,0,UpdateAI,NULL, 0, &dThreadID);
while(true)
{
PaintScreen();
}
}
DWORD WINAPI UpdateAI(LPVOID lpParam)
{
//поместите сюда что-либо, сильно нагружающее процессор;
//и пусть данный объект обновляется по мере необходимости
}
На одном процессоре преимущества многопоточности не так заметны, поскольку в один момент времени может выполняться лишь один поток. “Тогда ОС должна отвечать за переключение между AI и заполнением экрана”, считает Вордбелл. “Единственная проблема заключается в том, что диспетчер Windows не славится оптимизацией для многопоточных мультимедиа приложений”.
Однако при включении технологии HT, Windows XP распознает физический процессор как два логических, и ОС должна более эффективно работать с несколькими процессорами, по сравнению с переключением потоков на одном процессоре, утверждает Вордбелл. Конечный результат заключается в том, что фоновый поток AI и заполнение экрана работают более гладко. Время выполнения задания может быть теоретически уменьшено на 25%. “При этом вы убиваете двух зайцев: ваша игра работает плавно, и немного быстрее”, сказал Вордбелл.
Galactic Civilizations и HT
По словам Вордбелла, преимущество HT в Galactic Civilization налицо: в фоне работает поток компьютерного AI, в то время как человек делает свой ход. “Когда вы делаете свой ход, GalCiv прекрасно работает даже на довольно слабой машине”.
“Но преимущества HT выявляются, когда вы владеете, к примеру, тысячей кораблей, все из которых просчитывают свое следующее действие. Когда игрок нажмет кнопку завершения хода, задержка между следующим ходом будет меньше, а игровая анимация будет идти более гладко”.
Вордбелл отметил еще одно преимущество, которое HT дает в GalCiv: в ситуации, когда игра загружается в первый раз и в фоне грузится игровая графика. “Вы заметите, что во время просмотра заставки к вашему жесткому диску идет множество обращений. На слабой машине по этой причине заставка будет дергаться, поскольку игре придется переключаться между демонстрацией видео и загрузкой графики в фоне. Но на компьютере с HT все прекрасно и гладко работает”.
Умные собиратели ягод
Благодаря усложнению потоков, компьютерные игроки, которыми эти потоки управляют, станут более самостоятельными и умными, что в свою очередь привнесет дополнительные элементы реализма в ход игры. С точки зрения программирования, добавление или улучшение работы с потоками не сложно, утверждает Вордбелл. Но разработчики колеблются, поскольку сложно добавить несколько потоков без потери производительности в виде кадров в секунду, хотя технология HT должна уменьшить риск падение производительности.
Воздержание от создания “умных” потоков приводит к тому, что компьютерным игрокам в стратегии часто недостает даже простейшего интеллекта. “Вспомните картину: ваши крестьяне собирают ягоды (или что там они еще могут собирать), в то время как приходят плохие парни и начинают рубить ваших подопечных, причем остальные крестьяне вокруг продолжают собирать ягоды, как ни в чем не бывало”, пояснил Вордбелл.
“Вы остаетесь? Да что вы творите! Убегайте”. С большим количеством потоков ваши крестьяне смогут осмотреться и сказать “пришли плохие парни, пытающиеся нас убить, поэтому давайте разбежимся”.
HT может сделать ваших любимых персонажей более самостоятельными, посмотрите на эту сцену в “The Sims”.
Многозадачность с риском для жизни
Грустный факт: некоторые пользователи под мощным ПК понимают ту машину, которая позволила бы играть в многопользовательский Doom III online во время прослушивания тяжелой музыки, проверки почты и просмотра CNN. В таких ситуациях даже high-end ПК покажет падение частоты кадров. По нашему опыту, подобная многозадачная утечка ресурсов приводит к “празднику фрагов” у ваших соперников.
Выживаемость можно обеспечить при закрытии всех остальных приложений и сосредоточении ресурсов на одной задаче. Возможно, тогда вы сможете осуществить свою месть над другими игроками.
Отражение близкой опасности при одновременной работе трех программ может стать эффективным.
Но с использованием HT подобная утечка многозадачных ресурсов отнюдь не обязательно скажется на частоте кадров вашей игры. Хотя мы еще не успели проверить в тестах, но Intel утверждает, что кодирование MP3 во время игры в Nascar или Unreal не приводит к искажениям звука или потере частоты кадров. Раньше серьезным игрокам в Nascar или Unreal приходилось закрывать все приложения для получения максимальной игровой производительности процессора.
Intel протягивает руку помощи игровым разработчикам
Что касается будущих игр, которые смогут задействовать потенциал технологии HT, Intel рекомендует разработчикам использовать недавно выпущенный компилятор OpenMP. Если не вдаваться в подробности, компилятор Intel просматривает исходный код для определения места размещения инструкций. “Компилятор определяет, где необходимо разделить код на потоки, равно как обеспечивает необходимую семантику”, говорит Ким Паллистер, ответственный за отношения с разработчиками в Intel. “Компилятор говорит программисту ‘эй, здесь в коде есть цикл, в котором происходит умножение множества чисел с плавающей запятой, почему бы не перевести цикл на код ассемблера и не попробовать обрабатывать четыре числа за раз?'”
Компилятор Intel облегчит жизнь программистам многопоточных приложений, как в случае в указанным кодом – считает Intel.
Заключение
HT позволит играм выполняться более гладко при работе других приложений в фоне. Сегодня уже существуют многопоточные игры, в которых мы увидим улучшения производительности. Но действительно поддерживающие HT игры мы встретим лишь в будущем, когда разработчики включат соответствующие элементы в код.
По мере изучения разработчиками возможностей HyperThreading, Intel надеется создать дополнительную шумиху вокруг последнего Pentium 4 с HT, поскольку он нацелен на рынок высокопроизводительных персональных компьютеров. С помощью HT Pentium 4 Intel пытается компенсировать маржу прибыли в не очень прибыльном микропроцессорном секторе. Так что Intel придется немало давить на психологию игроков, особенно тех, кто забывает мытья и спать, и живет только на пиве с орешками во время всенощных праздников Unreal. Это те потребители, которые готовы продать свою электрическую бас-гитару для того, чтобы заплатить $2000 или больше за самым мощный игровой компьютер в мире. Как надеется Intel, эти игроки выберут связку Pentium 4 плюс HT, в результате чего компания будет чувствовать себя богатой и процветающей во время будущих финансовых кварталов.
Конкурент Intel – AMD, без сомнения, будет объяснять, почему технология HyperThreading бесполезна, особенно при продвижении новой архитектуры процессоров Hammer. Разработчики игр весьма сдержанно относятся к увеличению числа потоков в своих проектах, ведь даже по мнению самой Intel, подобный шаг приведет к уменьшению частоты кадров на компьютерах с процессором AMD.
В общем, нам следует запастись терпением и посмотреть, насколько эффективной окажется многопоточная многозадачность во время вашей межгалактической битвы или ночного турнира по Unreal. Будущее покажет, насколько быстро игровые разработчики откликнутся на многопоточные возможности, предлагаемые HT.