Введение
В начале апреля в Москве в гостинице “Космос” прошла КРИ 2007. Это грандиозное событие собрало многих любителей игр и их разработчиков. Развлекательная и ознакомительная часть конференции проходила на стендах разработчиков игр, компаний-издателей, о которых подробнее можно узнать из наших репортажей.
Кроме всего прочего, на этом мероприятии проводились семинары по основным направлениям разработки компьютерных игр: управление проектами, гейм-дизайн, программирование и так далее.
Intel традиционно является постоянным участником данного мероприятия. Однако в этом году, в отличие от всех предыдущих (а это уже пятая конференция), она не является “платиновым спонсором” – её статус несколько понизился до уровня “технологического спонсора”. Видимо сказывается резкое сокращение расходов компании на подобные мероприятия – в этом году в России даже не проходит уже ставший традиционным форум Intel для разработчиков. Стенд компании не выделялся среди середнячков и мерк по сравнению с некоторыми, более обширными по площади и красивыми по декорациям.
Однако, что касается технических семинаров, то тут у Intel всё в порядке – во второй день конференции компания полностью оккупировала пусть и небольшой, но всё же зал “Юпитер”. В нём с самого утра проходили семинары. Всего их было шесть и о каждом из них мы попытаемся рассказать подробно, насколько это возможно.
Стенд Intel
На стенде располагались два прозрачных системных блока, украшенных светодиодной подсветкой: в одном блоке была собрана двуядерная система на базе микро-архитектуры Core, а во втором – четырёхядерная. Вся тематика и цель стенда была заключена в демонстрации посетителям работы игровых приложений, оптимизированных под архитектуру Intel Core.
Первое приложение Destroy the Castle демонстрировало, какие выгоды можно извлечь из оптимизации алгоритмов и распараллеливания обработки каждого кадра игры с помощью библиотеки Intel Threading Building Blocks. В этой игре предлагалось стрелять из пушки ядрами по каменному замку, при этом вокруг по пространству бегали некие существа (только для того, чтобы показать работу AI). Замок является полностью разрушаемым объектом, при попадании ядер образуется огромное количество частиц. Более подробно о данном приложении и применённых подходах к его оптимизации было рассказано на одном из технических семинаров.
Второе приложение было специально разработано для Intel и оптимизировано под микро-архитектуру Core и многопоточность известным разработчиком игровых тестов, компанией Futuremark.
Кроме того, на стенде предлагалось зарегистрироваться в Intel Software Network для получения новостей о деятельности компании в области разработки программного обеспечения.
Архитектура микропроцессоров Intel Core 2 Duo. С этого места подробнее
Докладчики: Максим Перминов, Вадим Сухомлинов.
Этот семинар был призван ознакомить разработчиков с особенностями микро-архитектуры Core, которые так или иначе можно было бы задействовать при разработке игр. Кроме того, упоминались некоторые планы Intel на будущее, особенности проектов с кодовыми именами Penryn и Nehalem.
Что касается микро-архитектуры Core, то здесь не было никаких сюрпризов – она была подробно изложена нами в репортажах с весеннего IDF в прошлом году. На семинаре был подробно рассмотрен процесс обработки инструкций конвейером. На слайде изображена упрощённая схема конвейера.
Нажмите на картинку для увеличения.
Устройство основных блоков было описано с приведением цифр и алгоритмов функционирования. Так, были подробно рассмотрены этапы предсказания переходов, выборки и предекодирования, декодирования, переименования регистров, планирования исполнения инструкций. Кроме того, докладчики чётко сформулировали проблемы, возникновение которых возможно при организации вычислительного процесса, нюансы, которые могут привести к потере производительности, и пути их решения на демонстрируемой микро-архитектуре.
Вся информация была подчёркнута примерами написания оптимального кода программ на ассемблере.
Нажмите на картинку для увеличения.
Далее вниманию посетителей семинара была предложена некоторая информация о дополнениях в наборе команд SSE 4 в грядущих процессорах Penryn и Nehalem. Напомним, что производство процессоров Penryn Intel планирует начать во второй половине текущего года, а процессоров Nehalem – в первой половине 2008 года. Многие новшества данных проектов определяются более тонкой технологией изготовления (45 нм) и применением материалов с высокой диэлектрической проницаемостью, металлических затворов. Кроме того, будут внесены некоторые улучшения в технологию виртуализации, а в архитектуре Nehalem инженеры Intel обещают внести существенные микро-архитектурные улучшения.
Итак, вернёмся к обсуждавшейся на КРИ теме, а именно, к новому, обновлённому расширению системы команд потоковой обработки SSE 4.1. Это расширение впервые появится в семействе Penryn. Позже в Nehalem будет реализовано SSE 4.2, но об этом на семинаре упомянули вскользь, не раскрывая конкретных особенностей.
Нажмите на картинку для увеличения.
Всего в новом расширении 47 инструкций, которые по своей сути являются логичным дополнением стандартного набора инструкций SSE 4. Надо сказать, что отсутствие некоторых инструкций, введённых в Penryn, в начальном наборе SSE 4 вызывало некоторые вопросы у программистов. Например, некоторые удобные инструкции применялись лишь для отдельных типов данных, что заставляло программиста производить преобразование типов, а лишь затем применять инструкцию. Перечень категорий введённых инструкций представлен на слайде ниже.
Нажмите на картинку для увеличения.
Докладчики подробно рассказали об особо примечательных новых инструкциях, проиллюстрировали их работу, преимущества, которые они несут в себе для обработки мультимедиа-данных.
Нажмите на картинку для увеличения.
Нажмите на картинку для увеличения.
Всё также было рассмотрено на примерах. Довольно интересны были примеры кодов, реализующих одну цель, но в первом случае с помощью набора инструкций SSE 3, а во втором – с помощью SSE 4.1.
Нажмите на картинку для увеличения.
Конечно, жизнь программиста упрощается, ведь код становится короче. Однако интересно, насколько с каждым новым набором инструкций становится сложнее устройство блоков предекодирования и декодирования команд?
Поддержка нового набора инструкций уже реализована в некоторых инструментальных средствах разработки, таких, как Intel SSE 4.1 emulator и Intel SSE 4.1 compiler (бета-версия Q1 ’07).
Уровень преподнесения информации на докладе был довольно высоким – иначе и не могло быть, ведь основными слушателями были программисты-разработчики игр.
Многоядерность для многоигровости и многоигровость для многоядерности
Докладчик: Виктория Жислина.
Данная тема звучала довольно странно. Несмотря на довольно раннее время, многие слушатели слегка утомились после почти двух часов предыдущего доклада, поэтому ожидали следующий семинар с некоторой неохотой. Однако, к их счастью, доклад не был перегружен какой-либо “тяжёлой” информацией.
Основной целью доклада было пояснить, какие преимущества несёт развитие многоядерности для разработки игр. Информация носила общий характер, поэтому воспринималась легко. Этому также способствовала и докладчик, Виктория Жислина, старший инженер по приложениям Intel, – манера проведения доклада настраивала на некоторую простоту.
В докладе были приведены некоторые цифры, позволявшие оценить прирост производительности от наращивания количества вычислительных ядер на кристалле. На слайде ниже видно, во сколько раз по сравнению с Pentium 4 EE 3,73 выросла производительность в разных приложениях.
Нажмите на картинку для увеличения.
Было отмечено, что, несмотря на все теоретические блага, которые несёт в себе многоядерность, полностью использовать мощь нескольких ядер довольно сложно – игры нужно грамотно распараллеливать, при этом количество потоков и их вычислительные потребности должны быть сбалансированы. На практике линейное приращение производительности в играх с увеличением количества ядер является скорее утопией, приближение к которой является задачей программистов. На слайде ниже видны приращения производительности от увеличения количества ядер в некоторых ресурсоёмких играх на эталонном стенде Intel (QX6700 2,67 ГГц, GPU nVidia 8800 GTX, 2 Гбайт памяти).
Нажмите на картинку для увеличения.
Вычислительный процесс в играх распределяется по нескольким основным стадиям. К ним относятся просчёт искусственного интеллекта, генерация эффектов, просчёт физики, рендеринг сцен и эффектов. Традиционно все эти стадии выполняются последовательно в одном потоке. Но сейчас, с развитием многоядерности, возникла необходимость разбиения вычислительного процесса по потокам. При этом, конечно же, требуются соответствующие средства синхронизации. На следующем слайде продемонстрированы разные подходы к организации потоков в разных игровых движках.
Нажмите на картинку для увеличения.
Как можно видеть, в Crysis, Black&White 2, World in Conflict в отдельных потоках обрабатывается физика и искусственный интеллект с рендерингом. В Quake4, GRAW2, Maelstrom, наоборот, в отдельный поток запущен рендеринг.
В данном семинаре принял участие также один из разработчиков игры “Морской Охотник” (“Акелла”). На примере этой игры были рассмотрены процесс оптимальной организации потоков при обработке каждого кадра игры, проблемы, возникающие при этом, и пути их решения. Ниже приведены два слайда: первый отражает начальный этап процесса распараллеливания и его результаты, а второй – что получилось в итоге.
Нажмите на картинку для увеличения.
Нажмите на картинку для увеличения.
Далее доклад продолжала Виктория. Было продемонстрировано довольно большое количество комичных слайдов, которые показывали, какие преимущества в итоге на практике можно извлечь из многопоточности в играх. Этот этап доклада изрядно поднял всем присутствующим настроение.
Персонажа ударило током…
…так он упал на стул в классическом случае, при котором не используются все вычислительные мощности многоядерных платформ.
А вот так он может падать, если использовать все преимущества нескольких ядер.
Таким образом, в резюме было сказано, что в дальнейшем Intel продолжит увеличивать количество ядер на кристалле, а к 2008 году четырёхядерные решения обоснуются в mainstream-нише.
Оптимизация и параллелизация современной 3D игры при помощи инструментов Intel
Докладчики: Анатолий Любимов, Валерий Провалов.
Отдельное подразделение Intel занимается разработкой программного обеспечения, которое помогает программистам в их нелёгком труде. Кроме того, всё программное обеспечение “заточено” под микро-архитектуру процессоров Intel, поэтому итоговые продукты оптимизированы соответствующим образом.
Конечно, Intel разрабатывает компиляторы с С/С++, Fortran для своих платформ. Однако этим её деятельность не ограничивается. Год назад, после IDF, нами был рассмотрен пакет программ Intel VTune, с помощью которого разработчики программного обеспечения могут создавать качественные многопоточные приложения. Чтобы узнать подробнее о программных средствах, входящих в пакет Intel VTune, вы можете обратиться к прошлогодней статье.
На семинаре было последовательно рассказано о том, как создаётся многопоточное приложение при помощи инструментов Intel. Были продемонстрированы многочисленные слайды с примерами и скриншотами – всё было “разжёвано” до мелочей.
Использование Intel Threading Building Blocks для разработки многопоточных игр
Докладчики: Антон Пегушин, Дмитрий Ерёмин.
Этот семинар был посвящён очень интересному продукту Intel, который вносит некоторые нововведения в многопоточное программирование. Это библиотека Intel Treading Building Blocks (далее Intel TBB) – библиотека С++ шаблонных классов (аналог STL). Докладчики рассказывали о принципах и особенностях библиотеки, иллюстрируя всё примерами реализации отдельных моментов в коде.
Библиотека заставляет программиста мыслить не потоками, а задачами. Это и то, как реализована работа с задачами в самой библиотеке, даёт довольно ощутимые преимущества по сравнению с обычным многопоточным программированием. Во-первых, исчезает проблема избыточной либо недостаточной загрузки CPU. Во-вторых, создание и удаление объекта “задача” в Intel TBB обходится намного дешевле, чем создание/удаление потока. Это преимущество обусловлено внутренними механизмами библиотеки. В-третьих, библиотека содержит свой собственный планировщик задач, работающий по своим алгоритмам, обеспечивающим оптимальное выполнение вычислительного процесса.
Распределение памяти, применяемое в библиотеке, решает проблемы масштабируемости. Также библиотека содержит потокобезопасные контейнеры, и примитивы низкоуровневой синхронизации (поддерживает атомарные операции, содержит мьютексы).
Нажмите на картинку для увеличения.
В библиотеке поддерживается вложенный параллелизм – порождаются внутренние потоки, при этом количество потоков всегда будет равно количеству процессорных узлов, что обеспечивает оптимальную производительность.
Использование библиотеки описано на примере разработки игры Destroy the Castle, которая упоминалась нами выше. Сначала докладчики продемонстрировали вариант программирования с помощью системных потоков и полученные при этом результаты.
Нажмите на картинку для увеличения.
Затем был продемонстрирован вариант разработки с помощью Intel TBB, представленные результаты оказались значительно лучше.
Нажмите на картинку для увеличения.
Таким образом, резюмируя, можно сказать, что Intel TBB позволяет создавать программы, при выполнении которых оптимальным образом будет нагружаться процессор. При этом программа будет обладать хорошей масштабируемостью.
Сейчас доступна пробная версия библиотеки. Финальная версия будет поставляться на платной основе.
Игры на ноутбуке? На ультрамобильном ПК? Возьмите с собой Intel Laptop Gaming TDK
Докладчик: Александр Лазарев.
Опять же, после довольно сложного технического семинара по Intel TBB народ поутомился и потянулся к выходу. Возможно, мало кто представлял то, о чём должны были поведать на следующем семинаре. Действительно, набор Intel Laptop Gaming Technology Development Kit не так известен среди разработчиков игр. В итоге в аудитории осталась пара человек и ещё несколько подошли по ходу семинара. Надо отдать должное докладчику – несмотря ни на что, он рассказал всё в полном объёме, не смутившись такого “аншлага”. Поэтому семинар, в общем-то, напоминал больше не лекцию, а дружескую беседу с докладчиком – никаких микрофонов и демонстрация слайдов не на проекторе, а на обычном ноутбуке.
Прежде чем перейти к теме семинара, следует задуматься, а нужны ли игры в ноутбуках вообще? Конечно, сейчас каждый уважающий себя производитель ноутбуков имеет в модельном ряду экземпляр, позиционируемый в нишу “замена настольного ПК”. Их производительности хватает для того, чтобы поиграть в самые современные игры. Однако стоимость таких моделей очень высокая. Но при этом вы получаете очень компактный высокопроизводительный ПК, который можно носить с собой (хотя такие ноутбуки намного тяжелее своих менее производительных собратьев).
Тем не менее, продажи ноутбуков растут, а значит, становится актуальной игра на ноутбуке. Игры рассматриваются ведущими производителями средств вычислительной техники как одно из основных маркетинговых направлений будущих мобильных платформ.
Игра на ноутбуке имеет ряд особенностей. Во-первых, поскольку ноутбук – это мобильное решение, при игре должен контролироваться ряд параметров, такие, как состояние питания, сетевых подключений, пропускной способности этих подключений. Во-вторых, при питании от батареи важно увеличение показателя “производительность на ватт”, а программное обеспечение влияет на потребление энергии прямым образом – нерационально организованный вычислительный процесс требует больших мощностей.
Для решения этих проблем Intel предлагает своё решение – средство разработки Intel Laptop Gaming Technology Development Kit (далее Intel Laptop Gaming TDK).
Что же представляет собой средство разработки Intel Laptop Gaming TDK? Прежде всего, это инструмент, при помощи которого разработчики игр могут получить доступ к возможностям мобильных платформ Intel и управлять ими. Intel Laptop Gaming TDK содержит набор простых и высокопроизводительных интерфейсов и библиотек, которые могут быть использованы в играх с минимальными расходами (или совсем без них).
Сам доклад был построен удачно и разделён на две части. Сначала были представлены весьма интересные данные об энергопотреблении современных платформ Intel и их компонентов, о влиянии тех или иных факторов на энергопотребление. Так, например, вниманию присутствующих были представлены графики влияния разрешения, на котором вы играете, на общее энергопотребление системы, влияние качества видеокартинки и частоты кадров. Тесты проводились как в Windows XP, так и в Windows Vista.
Нажмите на картинку для увеличения.
Нажмите на картинку для увеличения.
Нажмите на картинку для увеличения.
Нажмите на картинку для увеличения.
На слайдах “Игра А” – шутер от первого лица с неограниченной частотой кадров, “Игра Б” – шутер от первого лица с ограниченной частотой кадров (fps=60), “Игра В” – стратегия реального времени.
Вторая часть доклада повествовала о том, как можно использовать Intel Laptop Gaming TDK. Данное средство разработки содержит ряд запросов, которые могут сообщить состояние вашей системы. С их помощью вы можете узнать большую часть параметров мобильных систем, необходимых при разработке игр: состояние питания, сетевых подключений, характеристики процессора используемой мобильной платформы. Также средство предлагает широкий набор событий, обработчики на которые вы можете организовать: смену источника питания, изменение уровня беспроводного сигнала, смену частоты процессора, изменение пропускной способности и так далее.
На основании данных, предоставляемых Intel Laptop Gaming TDK, в играх можно показывать состояние системы, изменять их “поведение” при изменении состояния (уменьшать характеристики видео, сохранять состояние, уменьшать трафик сети).
Конечно же, были приведены примеры игр, использующих подобные технологии.
Нажмите на картинку для увеличения.
Нажмите на картинку для увеличения.
Жаль, что посетители семинара были немногочисленны, – тема очень интересная и, судя по всему, становится довольно актуальной.
Интегрированная графика от Intel – продолжение следует
Докладчик: Виктория Жислина.
Напоследок Intel оставила не самый сложный для восприятия доклад на узкую тематику, но, тем не менее, общего характера, без особого углубления в технические подробности.
Прежде всего, целью доклада было освещение некоторых планов Intel на недалёкое будущее в сфере интегрированной графики.
Нажмите на картинку для увеличения.
Конечно, были хорошо освещены существующие решения – чипсеты Intel 945G и G965 Express со встроенным графическим ядром (GMA950 и GMA3000, соответственно). Докладчик рассказал об основных особенностях и технологиях, применяемых в интегрированной графике этих чипсетов.
Подробнее докладчик остановился на графике GMA3000. В данном решении разработчики удачно сбалансировали фиксированные функции конвейера и программируемые.
В GMA3000 заявлена аппаратная поддержка Shader Model 3.0 и HDR, но, как нам разъяснили, к сожалению, она пока есть только на программном уровне. Видимо, у Intel есть какие-то проблемы с реализацией работы аппаратной поддержки в драйвере. Однако присутствующих заверили, что это временная проблема.
Нажмите на картинку для увеличения.
По поводу планов, несмотря на название семинара, было сказано не так много, как хотелось бы. На слайде выше видно, что в 2008 году планируется добавить в интегрированную графику Intel аппаратную поддержку Shader Model 4 и DirectX 10. В общем, семинар повествовал о возможностях существующих решений.
Заключение
Мероприятия масштаба КРИ являются довольно полезными для разработчиков, в немалой степени, благодаря многочисленным семинарам. Эти семинары направлены на то, чтобы ознакомить программистов и интересующихся посетителей с передовыми идеями, поделиться опытом.
В этом году Intel на КРИ не “блистала” своим стендом, однако уровень семинаров и докладов был должным. Вообще последовательность семинаров была выбрана довольно грамотно: доклады чередовались по сложности восприятия, а общая картина оставляла ощущение последовательного изложения. Отдельно хочется отметить доклады по Intel TBB и Intel Laptop Gaming TDK – они, на наш взгляд, были наиболее информативными и предоставили слушателям много интересной и полезной информации.