Двухъядерные процессоры в 3D играх



Распространение двухъядерных процессоров в последние годы привело к тому, что возможности многопроцессорных систем начали использоваться в играх и других непрофессиональных приложениях. До недавнего времени двухъядерные процессоры в настольных компьютерах были весьма редки, их использовали профессионалы и редкие энтузиасты, работающие с такими приложениями, как программы 3D моделирования и анимации, а также программы обработки и кодирования медиаданных, которые изначально создавались с поддержкой нескольких CPU.

Слабая (а точнее даже никакая) поддержка двух- и более процессорных систем в играх была обусловлена малым распространением многопроцессорных систем у игроков из-за их высокой цены. Пару лет назад начали появляться массовые двухъядерники, но их цена какое-то время была слишком высокой для обычного пользователя, и приобретали их те же энтузиасты, просто более массово. С выходом процессоров Intel Pentium D, а также Core 2 Duo и AMD Athlon 64 X2, обе указанные компании, производящие настольные x86 CPU, значительно снизили цены на свои процессоры, что продолжают делать и сейчас. В результате, двухъядерные процессоры стали стоить немногим больше недавних одноядерных моделей, да и развитие x86 процессоров сместилось к многоядерности.

Соответственно, пользователи часто задаются вопросом — а есть ли польза от второго ядра CPU в 3D играх? Данный материал предназначен для того, чтобы показать прирост производительности в современных играх от второго ядра центрального процессора. Причем, не в синтетических условиях с низкими разрешениями и в старых играх, а в более-менее реалистичных, используемых игроками. Также мы постарались максимально снизить возможное влияние мощности видеоподсистемы.

Теоретически, увеличение скорости от второго ядра способно получить только само приложение. Уже существующее, умеющее использовать ресурсы только одного ядра, не заставить ускориться на двухъядерном процессоре. В любом случае, хватает ли ему возможностей одного ядра или нет. Но повышение производительности может быть отмечено даже в случае отсутствия явной поддержки многопроцессорности — при использовании многопоточности со стороны приложения, когда система распределяет их по разным ядрам CPU. Еще одним вариантом повышения производительности игры являются усовершенствования в коде видеодрайвера, который может использовать возможности второго ядра в своих целях. Но это всё теория, а что в современных (и не очень) трехмерных играх получается на однопроцессорных и двухпроцессорных системах, мы увидим ниже по тексту.

Конфигурация и настройки тестовой системы

Использовалась следующая программно-аппаратная конфигурация:

  • Процессоры: AMD Athlon 64 3800+ и AMD Athlon 64 X2 4600+ Socket 939
  • Системная плата: Foxconn WinFast NF4SK8AA-8KRS (Nvidia nForce4 SLI)
  • Оперативная память: 2048 Мб DDR SDRAM PC3200
  • Видеокарта: Nvidia Geforce 8800 GTX 768MB
  • Жесткий диск: Seagate Barracuda 7200.7 120 Gb SATA
  • Операционная система: Microsoft Windows XP Professional SP2
  • Видеодрайвер: Nvidia ForceWare 97.92

В качестве двухъядерного процессора был выбран один из наиболее выгодных на сегодняшний день двухъядерных процессоров AMD — Athlon 64 X2 4600+, а аналогичным одноядерным для него является Athlon 64 3800+, работающий ровно на той же тактовой частоте 2.4 ГГц и обладающий тем же объемом кэш-памяти второго уровня — 512 Кб. Соответственно, два варианта тестовой системы отличаются только количеством процессорных ядер, все остальные параметры и условия равны.

Для двухъядерной системы была сделана модификация файла «boot.ini», добавлен ключ «/usepmtimer», были установлены последние драйверы и для процессоров AMD Athlon 64. Настройки видеодрайвера ForceWare использовались устанавливаемые по умолчанию, кроме качества текстурной фильтрации, оно было выставлено в значение «High quality». Параметр «Threaded optimization», отвечающий за включение многопроцессорных оптимизаций, имеющийся в настройках драйвера, был выставлен в значение «Auto». Использовались два режима видеонастроек: стандартный режим наиболее распространенного разрешения 1280x1024 (или ближайший к нему 1280x960 для игр без поддержки такового) без использования анизотропной фильтрации и антиалиасинга; и режим высокого качества — с разрешением экрана 1920x1200 пикселей (или 1600x1200 при отсутствии поддержки широкоэкранных режимов), с включенными мультисэмплингом 4x и анизотропной фильтрацией максимально возможного уровня — 16x.

Набор игр, использовавшихся в наших тестах, включает как стандартные бенчмарки, часто используемые в статьях, так и некоторые игры, не предоставляющие стандартных средств для измерения производительности. К сожалению, мы вынуждены в очередной раз попенять на то, что разработчики игр не стремятся дать пользователям удобные инструменты для тестов и не делают стандартных бенчмарков в своих играх. Поэтому для части игр использовался имеющий массу недостатков метод измерения производительности при помощи программы FRAPS. В тех играх, где есть возможности записи и просмотра демок, он почти столь же точен, что и встроенные тесты, но среди интересующих нас игр есть и те, в которых такой возможности нет, там погрешность была выше.

Результаты тестирования

Far Cry 1.4

Этой игре уже достаточно много времени, чтобы считать её современной, но из-за её технологического совершенства и модификаций в последующих патчах она остаётся одной из тех игр, которые часто используют в разнообразных сравнениях. В Far Cry производительность рендеринга в помещениях (так называемый indoor) обычно зависит, прежде всего, от видеокарты, а вот открытые пространства (outdoor) с достаточно большим количеством геометрии и алгоритмами изменения уровня детализации (LOD) даже на мощных видеокартах могут зависеть от мощности центрального процессора.

И хотя для сравнения скорости был взят один из outdoor уровней (Research), хорошо нагружающий, в том числе и CPU, мы видим, что существенной разницы в производительности Far Cry на системе с одноядерным процессором и двухъядерным не наблюдается. Разница легко входит в пределы погрешности измерения. Даже оптимизации драйвера не помогают игре показать лучшие результаты на системе с двумя процессорными ядрами. Видимо, сказывается время выхода игры Far Cry, в те времена над оптимизациями под многопроцессорные системы еще никто особо не задумывался.

Quake 4 1.3

А вот разработчики этой игры и её движка уже хвастаются поддержкой многопроцессорных конфигураций, для этого даже есть отдельный параметр в меню настроек. Эта поддержка появилась в Quake 4 не сразу, а в последующих патчах, так что играющим в игру на двухъядерных процессорах рекомендуется обновить её до последней версии. Quake 4 достаточно процессорозависим, так как использует центральный процессор системы в алгоритме расчета и наложения теней, которых в игре предостаточно. Кроме того, процессором в игре рассчитываются и физические взаимодействия. Вероятно, это те задачи, которые и были переложены в разные потоки для увеличения производительности. Проверим это на практике:

Результат просто потрясающий, в «легком» режиме 1280x1024 разница в скорости на системе с одноядерным и двухъядерным процессорами получилась более чем полуторакратная! Причем, это точно не ошибка, результаты были перепроверены три раза. Конечно, в режиме очень высокого разрешения с включенными анизотропной фильтрацией и антиалиасингом, нагружающим видеокарту, от разницы осталось менее 10%, но это и понятно — ограничивающим фактором в этом случае выступает уже видеокарта, даже такая мощная, как Geforce 8800 GTX.

Prey 1.3

Prey основан на том же игровом движке DOOM 3 Engine, что и Quake 4, но его версия, используемая в этой игре, другая. Поэтому и результат может быть иным. Кроме того, для теста Prey был выбран indoor уровень, в то время как для Quake 4 использовалась демка, записанная на открытом пространстве. Это также может вызвать разницу, так как рендеринг открытых пространств традиционно зависит больше от мощности процессора, чем видеокарты.

Итак, мы видим, что результаты здесь не такие впечатляющие, по сравнению с предыдущей игрой. Хотя 17% прибавки от второго ядра в «легком» режиме тоже весьма приятны. Удивительно, что частота кадров на одноядерном процессоре в более тяжелом режиме получилась чуть выше, чем в легком. Этот результат также был трижды перепроверен, так что ошибки тут нет. Видимо, сказываются некие оптимизации (или недооптимизации) видеодрайвера для Geforce 8800. В любом случае, в режиме высокого разрешения и качественных настроек разница получилась в пределах погрешности, так что прирост от второго ядра в Prey есть только в легких режимах.

F.E.A.R.

F.E.A.R. также использует для наложения теней алгоритмы, схожие с теми, что есть в DOOM 3 Engine, но всё же с большими отличиями. Кроме того, эта игра использует CPU и для физических расчетов, поэтому при условии должной оптимизации можно было предполагать её ускорение на многопроцессорных системах. Однако, как мы определили в технологическом обзоре игры, больше всего скорость рендеринга зависит от мощности видеокарты, от филлрейта и пропускной способности памяти. Проверим, какая разница получится при тестировании встроенным бенчмарком на разных процессорах:

А разница в F.E.A.R. получилась… нулевая. Абсолютно одинаковые результаты, что на одноядерной системе, что на двухъядерной. Даже удивительно, оптимизации драйвера ForceWare не добавили к результатам ровно ничего, ни одного лишнего кадра в секунду. Видимо, приложение однопоточное и на такой мощной видеокарте, как наша тестовая, полностью ограничена филлрейтом. Других объяснений найти просто не получилось.

Serious Sam 2

Еще одна игра позапрошлого года, производительность которой больше всего зависит от видеокарты, но на открытых уровнях с большим количеством врагов на неё может повлиять и мощность центрального процессора, который используется для расчетов физики, AI, LOD и др. Никаких данных о том, поддерживаются ли многопроцессорные системы игрой, мы не нашли, поэтому вместо предположений сразу обратимся к практике:

Забегая вперед — это один из наиболее распространенных результатов, после неожиданного с F.E.A.R. Результаты были перепроверены не один раз, были взяты средние значения из полученных. В этой игре получилось так, что двухъядерник совсем чуть-чуть обогнал одноядерный процессор, в «легком» режиме — на 6%, в «тяжелом» — в пределах погрешности (нагрузка увеличилась и основным ограничителем скорости стал CPU). Производительность в двух режимах не слишком сильно отличается, игра явно ограничена производительностью процессора, прежде всего, но… производительностью единственного ядра.

Call of Juarez

Относительно новая игра, отличающаяся весьма технологичным игровым движком. В основном, производительность в Call of Juarez ограничена видеокартой, именно на неё ложится большая нагрузка, в игре много геометрии, пиксельной обработки и отличные shadow map тени. На процессоре «лежат» разве что физические расчеты, несложные и в небольших количествах. Процессор может ограничивать производительность только из-за большого количества вызовов отрисовки, ведь в используемом для тестов уровне количество объектов и соответствующих вызовов особенно велико.

Но видимой разницы опять не получилось. Мизерное преимущество двухъядерника можно объяснить разве что снижением нагрузки на процессор со стороны системных и фоновых процессов. В остальном, игра в очередной раз подтверждает то, что скорость рендеринга в ней почти полностью зависит от мощности видеокарты.

Company of Heroes

Наконец-то шутеры от первого лица закончились (временно). Возможно, в играх других жанров от двухъядерного процессора мы увидим большее преимущество? Хотя встроенный бенчмарк в Company of Heroes не отражает игровой производительности, так как показывает скриптовый ролик, мало похожий на саму игру, будет интересно посмотреть на разницу в производительности между двумя тестовыми процессорами.

Уже лучше, небольшой прирост от второго ядра явно присутствует, хотя и не такой большой, как хотелось бы и какой есть в Quake 4. 5-6% — это подозрительно близко к погрешности измерения, хотя и больше её. Поэтому можно сделать такой вывод: производительность игры Company of Heroes, точнее, её скриптовых роликов, незначительно ускоряется на двухпроцессорных системах за счет оптимизаций драйвера и, возможно, за счет более эффективного распределения нагрузки от фоновых и системных процессов.

Need for Speed: Carbon

NFS: Carbon — это первая игра в нашем тестировании с отсутствующими возможностями измерения производительности. У неё нет даже возможности записи и проигрывания проведенных гонок, поэтому приходится действовать описанными в статье по FRAPS методами, привносящими большую погрешность. Однако, игра весьма интересна с точки зрения темы статьи, так как она мультиплатформенна и современна, поэтому может получать преимущество на многопроцессорных системах.

Так и есть, в простом режиме 1280x1024 преимущество у двухъядерного процессора перед одноядерным получилось вполне приличным — 18%, что уже явно не спишешь на одни лишь оптимизации драйвера. Вероятно, приложение использует несколько потоков, которые эффективно распределяются системой между ядрами процессора. Конечно, в тяжелом режиме от значительного преимущества остались лишь следы, но почти 10% выигрыша в таких условиях также не позволяют усомниться в специальных оптимизациях под двухъядерники. Рассмотрим графики частоты кадров, чтобы понять, где и как получилось это преимущество:

Need for Speed: Carbon


Хорошо видно, что двухъядерный процессор всегда обеспечивал большую производительность, чем одноядерный. И минимальная частота кадров на двухъядернике была выше и просадки FPS не такие сильные, как у одноядерника. Весьма вероятно, что часть работы универсального процессора в игре выделена в отдельный поток, из-за этого и получается прирост производительности.

GTR 2

Еще одна игра в жанре автогонок, но весьма сильно отличающаяся от серии Need for Speed. GTR 2 — это уже полноценный автосимулятор, со сложными физическими расчётами и др. Игра не отличается сверхсовременной графикой, хотя сложность геометрии моделей автомобилей велика и при наличии в кадре сразу нескольких десятков машин, получается очень большая нагрузка и на видеокарту и на центральный процессор. Особенно на CPU, так как видеокарта в нашем случае использовалась максимально производительная.

В этот раз преимущество от двухъядерности не такое большое, но оно есть. Вероятно, игра сама по себе не оптимизирована под многопроцессорные системы, но видеодрайвер Nvidia и меньшая нагрузка от фоновых процессоров таки делают небольшое преимущество реальным. Вряд ли разница 5-7% может кого-то сподвигнуть на приобретение двухъядерного процессора вместо одноядерного прямо сейчас, но при условии скорого вытеснения одноядерников даже с таким преимуществом нужно считаться. Посмотрим на график FPS:

GTR 2


Отлично видно, как скачет частота кадров. При тестировании использовался FRAPS и просмотр заранее записанной гонки с большим количеством автомобилей в кадре. Поэтому, в моменты, когда в кадре мало гоночных болидов, частота кадров растёт, а когда видеокамера снимает общий план, и в него входят десяток и более автомобилей, тогда FPS падает до очень низкого значения. К сожалению, двухъядерник тут не спасает, прирост частоты кадров от него достигается за счет высоких значений, когда не так важно, 100 там FPS или 110.

Gothic 3

Один из самых неоднозначных релизов прошлого года с точки зрения отлаженности кода и его оптимизации. Игра очень требовательна к системе, ко всем её частям, и к процессору и к видеокарте. Так как тестовая видеокарта довольно мощна, можно предположить, что основным ограничителем производительности у нас будет как раз CPU. Gothic 3 — игра медлительная и новая, именно поэтому интересно узнать, получает ли она преимущество от второго процессора в системе или нет.

Да уж, частота кадров не радует совсем. Конечно, это максимальные настройки, ну так и тестовая система ведь достаточно мощная! Прирост от второго ядра есть, хотя и не такой большой — 13% в «легком» режиме и 7% — в «тяжелом». Производительность игры явно не упирается в видеокарту. Посмотрим на график, может быть он покажет что-то интересное:

Gothic 3


И точно — весьма интересная ситуация. Посмотрите, двухъядерник хотя и немного проваливался почти в тех же местах, что и процессор с одним ядром, но эти провалы далеко не такие, как в последнем случае. И минимальная частота кадров сильно отличается, сравните 5 и 20 FPS. Вероятно, в игре используется отдельный поток для подгрузки данных по мере прохождения в игре. И, так как на одноядерном процессоре эти потоки выполняются совместно, один из них не получает нужного времени и игра тормозит. В случае с двухъядерным процессором проще — потоки выполняются параллельно на разных процессорах и не мешают друг другу.

Отдельно нужно отметить то, что в игре, к сожалению, нет ни встроенных средств по измерению производительности, ни средств для записи демок, поэтому погрешность проведенных тестов весьма велика, так что к полученным нами результатам в Gothic 3 нужно относиться с определенной долей скептицизма.

Armed Assault

В этой игре также нет средств по измерению производительности, погрешность проведенных тестов также могла быть весьма и весьма велика. Кроме того, Armed Assault легко может поспорить с предыдущей игрой по количеству разнообразных ошибок и нестабильности частоты кадров. Но с исследовательской точки зрения игра интересна и технологична. Она сильно нагружает как CPU, так и видеокарту, и частота кадров на максимальных настройках просто непристойно низка для столь мощной тестовой системы.

Явного упора в производительность видеокарты и процессора не видно, разница между разными режимами качества невелика, хотя и есть. Прироста от двухъядерности не заметно, разница укладывается в пределы погрешности. Рассмотрим график ежесекундной частоты кадров, может быть, хотя бы он покажет что-то любопытное:

Armed Assault


Ровно ничего интересного, на наш взгляд, игра явно не использует возможности двухъядерной системы, хотя частота кадров на ней иногда и отличается в большую сторону. Это, скорее всего, связано с оптимизациями драйвера под мультипроцессорные системы, чем с самой игрой. А жаль. Такая неоптимизированная игра… хотя бы за счет ресурсов второго процессора попытались бы получить прирост скорости.

S.T.A.L.K.E.R.: Shadow of Chernobyl

Об этой новейшей игре, наверное, слышали вообще все. Именно её популярность и свежесть и стали теми причинами, которые побудили автора включить S.T.A.L.K.E.R.: Shadow of Chernobyl в статью. Тем более, что совсем недавно появилась возможность тестирования производительности при помощи кем-то заботливо написанной демки. К сожалению, разработчики игры в очередной раз посчитали, что игроки и тестеры недостойны возможностей записи и проигрывания демок и соответствующего тестирования производительности. Остаётся ждать патчей, в которых эти возможности обещают добавить, а пока пользоваться демкой, в которой большую часть времени показывается небо, а остальное время — обширная территория с высоты птичьего полета, что к геймплею игры почти не имеет отношения.

Итак, S.T.A.L.K.E.R. явно получает некоторое преимущество от второго ядра процессора, в том числе и в более тяжелом для видеокарты режиме. Частота кадров при разных настройках разрешения экрана не сильно отличается, такое впечатление, что производительность упёрта в скорость процессора или пропускную способность оперативной памяти. Но не в видеокарту. В крайнем случае — в её недоработанные драйверы. Полученное преимущество от второго ядра CPU достигло 8-9%, что не позволяет явно упомянуть оптимизации под многопроцессорные системы, скорее всего, в ускорении виноват драйвер видеокарты, который может использовать мощности второго ядра для своих целей.

S.T.A.L.K.E.R.: Shadow of Chernobyl


График FPS показывает, что увеличение средней частоты кадров происходит в основном за счет пиков максимальных значений, минимальная частота кадров поднимается, но не слишком сильно. Поэтому, считаем, что вывод об отсутствии специальной многопроцессорной оптимизации в S.T.A.L.K.E.R. подтверждается.

Rainbow Six: Vegas

Ну и, наконец, последней игрой в материале будет Rainbow Six: Vegas — одна из первых игр на базе известного игрового движка Unreal Engine 3, который заочно славится поддержкой многопроцессорных конфигураций. Проверим, так ли это на самом деле. Игра интересна еще и тем, что она мультиплатформенна и довольно медлительна на многих не особенно мощных ПК, что вызывает много жалоб со стороны игроков. Проверим, спасут ли их двухъядерники:

Спасти может и не спасут, но что они игрой (точнее, движком) поддерживаются неплохо, это можно сказать со 100% уверенностью! Разница в производительности между однопроцессорной системой и двухпроцессорной хоть и не достигла той, что мы увидели в Quake 4, но всё же это вполне весомые 38% в сравнительно легком режиме, и 17% в более тяжелом (правда, не стоит забывать, что игры на движке UE3 не поддерживают антиалиасинг, поэтому режим для Geforce 8800 GTX получается не таким уж и тяжелым). Посмотрим, как наличие второго ядра CPU повлияло на среднесекундные показатели FPS в этой игре:

Rainbow Six: Vegas


Самый интересный график, не правда ли? Такое впечатление, что второе ядро в Rainbow Six: Vegas всегда занято полезной для игры работой (потоком) и всегда увеличивает производительность. Вырос мгновенный FPS, минимальный FPS, средний FPS, вообще все значения. Налицо отличная оптимизация движка под мультипроцессорные системы. Вспомнив количество игр, анонсировавших применение движка Unreal Engine 3, теперь можно легко вывести главную причину крайней желательности двухъядерного процессора в игровых компьютерах, предназначенных для современных игр и игр самого ближайшего будущего.

Выводы

Надо сказать, что полученные в тестах результаты не всегда соответствовали нашим ожиданиям. Мы увидели как ускорение в тех приложениях, где его никак не ждали, так и отсутствие прироста производительности в играх, где его можно было предполагать. В первом случае явно «виновата» оптимизация видеодрайвера Nvidia ForceWare для работы с двухъядерными процессорами. Как нам кажется, неожиданные повышения производительности связаны именно с этим. По тестам видно, что двухъядерные процессоры могут увеличивать производительность современных игр по сравнению с одноядерниками, даже в тех случаях, когда приложения писались в расчете на одноядерные процессоры.

Итак, два основных вывода, полученных при анализе результатов тестирования:

  1. На данный момент, увеличение производительности, привносимое вторым ядром CPU, в среднем относительно невелико — около 10-15%. В большом количестве игр прироста от второго ядра или совсем нет или он крайне невелик — 5-7% и меньше. Это небольшое увеличение производительности достигается при помощи оптимизаций видеодрайверов и более эффективного распределения нагрузки на CPU от фоновых и системных процессов. Лишь специально написанные многопоточные игровые приложения обеспечивают значительный рост производительности в случае установки двухъядерного процессора, вплоть до 40-50% в режимах, не ограниченных исключительно производительностью видеокарты.


  2. Наблюдается определенная зависимость от времени выхода игры — более новые приложения явно эффективнее используют второе ядро CPU и умеют получать от него большую выгоду. Возможно, небольшое увеличение производительности также стоит отнести на счет оптимизации видеодрайверов под двухъядерные процессоры, но примеры таких игр, как Rainbow Six: Vegas на движке Unreal Engine 3 и Quake 4 на специально оптимизированном под многопроцессорные конфигурации движке DOOM 3, явно показывают важность второго ядра CPU для игр ближайшего будущего. То есть, мало того, что игры с поддержкой многоядерности уже существуют, но их число в дальнейшем будет только расти.

    Тем более, если речь касается мультиплатформенных движков и игр, которые выходят, в том числе на игровых консолях текущего поколения: Microsoft Xbox 360 и Sony PlayStation 3. Вполне вероятно, что такие игры смогут получить преимущества от многоядерных чипов в полном объеме, так как в консолях также используются многоядерные центральные процессоры. Мы будем стараться держать вас в курсе, и возможно, это не последнее исследование по теме многопроцессорности в играх. Уже ведь массовые четырехъядерники на подходе! :)




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

Двухъядерные процессоры в 3D играх

Двухъядерные процессоры в 3D играх


Распространение двухъядерных процессоров в последние годы привело к тому, что возможности многопроцессорных систем начали использоваться в играх и других непрофессиональных приложениях. До недавнего времени двухъядерные процессоры в настольных компьютерах были весьма редки, их использовали профессионалы и редкие энтузиасты, работающие с такими приложениями, как программы 3D моделирования и анимации, а также программы обработки и кодирования медиаданных, которые изначально создавались с поддержкой нескольких CPU.

Слабая (а точнее даже никакая) поддержка двух- и более процессорных систем в играх была обусловлена малым распространением многопроцессорных систем у игроков из-за их высокой цены. Пару лет назад начали появляться массовые двухъядерники, но их цена какое-то время была слишком высокой для обычного пользователя, и приобретали их те же энтузиасты, просто более массово. С выходом процессоров Intel Pentium D, а также Core 2 Duo и AMD Athlon 64 X2, обе указанные компании, производящие настольные x86 CPU, значительно снизили цены на свои процессоры, что продолжают делать и сейчас. В результате, двухъядерные процессоры стали стоить немногим больше недавних одноядерных моделей, да и развитие x86 процессоров сместилось к многоядерности.

Соответственно, пользователи часто задаются вопросом — а есть ли польза от второго ядра CPU в 3D играх? Данный материал предназначен для того, чтобы показать прирост производительности в современных играх от второго ядра центрального процессора. Причем, не в синтетических условиях с низкими разрешениями и в старых играх, а в более-менее реалистичных, используемых игроками. Также мы постарались максимально снизить возможное влияние мощности видеоподсистемы.

Теоретически, увеличение скорости от второго ядра способно получить только само приложение. Уже существующее, умеющее использовать ресурсы только одного ядра, не заставить ускориться на двухъядерном процессоре. В любом случае, хватает ли ему возможностей одного ядра или нет. Но повышение производительности может быть отмечено даже в случае отсутствия явной поддержки многопроцессорности — при использовании многопоточности со стороны приложения, когда система распределяет их по разным ядрам CPU. Еще одним вариантом повышения производительности игры являются усовершенствования в коде видеодрайвера, который может использовать возможности второго ядра в своих целях. Но это всё теория, а что в современных (и не очень) трехмерных играх получается на однопроцессорных и двухпроцессорных системах, мы увидим ниже по тексту.

Конфигурация и настройки тестовой системы

Использовалась следующая программно-аппаратная конфигурация:

  • Процессоры: AMD Athlon 64 3800+ и AMD Athlon 64 X2 4600+ Socket 939
  • Системная плата: Foxconn WinFast NF4SK8AA-8KRS (Nvidia nForce4 SLI)
  • Оперативная память: 2048 Мб DDR SDRAM PC3200
  • Видеокарта: Nvidia Geforce 8800 GTX 768MB
  • Жесткий диск: Seagate Barracuda 7200.7 120 Gb SATA
  • Операционная система: Microsoft Windows XP Professional SP2
  • Видеодрайвер: Nvidia ForceWare 97.92

В качестве двухъядерного процессора был выбран один из наиболее выгодных на сегодняшний день двухъядерных процессоров AMD — Athlon 64 X2 4600+, а аналогичным одноядерным для него является Athlon 64 3800+, работающий ровно на той же тактовой частоте 2.4 ГГц и обладающий тем же объемом кэш-памяти второго уровня — 512 Кб. Соответственно, два варианта тестовой системы отличаются только количеством процессорных ядер, все остальные параметры и условия равны.

Для двухъядерной системы была сделана модификация файла «boot.ini», добавлен ключ «/usepmtimer», были установлены последние драйверы и для процессоров AMD Athlon 64. Настройки видеодрайвера ForceWare использовались устанавливаемые по умолчанию, кроме качества текстурной фильтрации, оно было выставлено в значение «High quality». Параметр «Threaded optimization», отвечающий за включение многопроцессорных оптимизаций, имеющийся в настройках драйвера, был выставлен в значение «Auto». Использовались два режима видеонастроек: стандартный режим наиболее распространенного разрешения 1280x1024 (или ближайший к нему 1280x960 для игр без поддержки такового) без использования анизотропной фильтрации и антиалиасинга; и режим высокого качества — с разрешением экрана 1920x1200 пикселей (или 1600x1200 при отсутствии поддержки широкоэкранных режимов), с включенными мультисэмплингом 4x и анизотропной фильтрацией максимально возможного уровня — 16x.

Набор игр, использовавшихся в наших тестах, включает как стандартные бенчмарки, часто используемые в статьях, так и некоторые игры, не предоставляющие стандартных средств для измерения производительности. К сожалению, мы вынуждены в очередной раз попенять на то, что разработчики игр не стремятся дать пользователям удобные инструменты для тестов и не делают стандартных бенчмарков в своих играх. Поэтому для части игр использовался имеющий массу недостатков метод измерения производительности при помощи программы FRAPS. В тех играх, где есть возможности записи и просмотра демок, он почти столь же точен, что и встроенные тесты, но среди интересующих нас игр есть и те, в которых такой возможности нет, там погрешность была выше.

Результаты тестирования

Far Cry 1.4

Этой игре уже достаточно много времени, чтобы считать её современной, но из-за её технологического совершенства и модификаций в последующих патчах она остаётся одной из тех игр, которые часто используют в разнообразных сравнениях. В Far Cry производительность рендеринга в помещениях (так называемый indoor) обычно зависит, прежде всего, от видеокарты, а вот открытые пространства (outdoor) с достаточно большим количеством геометрии и алгоритмами изменения уровня детализации (LOD) даже на мощных видеокартах могут зависеть от мощности центрального процессора.

И хотя для сравнения скорости был взят один из outdoor уровней (Research), хорошо нагружающий, в том числе и CPU, мы видим, что существенной разницы в производительности Far Cry на системе с одноядерным процессором и двухъядерным не наблюдается. Разница легко входит в пределы погрешности измерения. Даже оптимизации драйвера не помогают игре показать лучшие результаты на системе с двумя процессорными ядрами. Видимо, сказывается время выхода игры Far Cry, в те времена над оптимизациями под многопроцессорные системы еще никто особо не задумывался.

Quake 4 1.3

А вот разработчики этой игры и её движка уже хвастаются поддержкой многопроцессорных конфигураций, для этого даже есть отдельный параметр в меню настроек. Эта поддержка появилась в Quake 4 не сразу, а в последующих патчах, так что играющим в игру на двухъядерных процессорах рекомендуется обновить её до последней версии. Quake 4 достаточно процессорозависим, так как использует центральный процессор системы в алгоритме расчета и наложения теней, которых в игре предостаточно. Кроме того, процессором в игре рассчитываются и физические взаимодействия. Вероятно, это те задачи, которые и были переложены в разные потоки для увеличения производительности. Проверим это на практике:

Результат просто потрясающий, в «легком» режиме 1280x1024 разница в скорости на системе с одноядерным и двухъядерным процессорами получилась более чем полуторакратная! Причем, это точно не ошибка, результаты были перепроверены три раза. Конечно, в режиме очень высокого разрешения с включенными анизотропной фильтрацией и антиалиасингом, нагружающим видеокарту, от разницы осталось менее 10%, но это и понятно — ограничивающим фактором в этом случае выступает уже видеокарта, даже такая мощная, как Geforce 8800 GTX.

Prey 1.3

Prey основан на том же игровом движке DOOM 3 Engine, что и Quake 4, но его версия, используемая в этой игре, другая. Поэтому и результат может быть иным. Кроме того, для теста Prey был выбран indoor уровень, в то время как для Quake 4 использовалась демка, записанная на открытом пространстве. Это также может вызвать разницу, так как рендеринг открытых пространств традиционно зависит больше от мощности процессора, чем видеокарты.

Итак, мы видим, что результаты здесь не такие впечатляющие, по сравнению с предыдущей игрой. Хотя 17% прибавки от второго ядра в «легком» режиме тоже весьма приятны. Удивительно, что частота кадров на одноядерном процессоре в более тяжелом режиме получилась чуть выше, чем в легком. Этот результат также был трижды перепроверен, так что ошибки тут нет. Видимо, сказываются некие оптимизации (или недооптимизации) видеодрайвера для Geforce 8800. В любом случае, в режиме высокого разрешения и качественных настроек разница получилась в пределах погрешности, так что прирост от второго ядра в Prey есть только в легких режимах.

F.E.A.R.

F.E.A.R. также использует для наложения теней алгоритмы, схожие с теми, что есть в DOOM 3 Engine, но всё же с большими отличиями. Кроме того, эта игра использует CPU и для физических расчетов, поэтому при условии должной оптимизации можно было предполагать её ускорение на многопроцессорных системах. Однако, как мы определили в технологическом обзоре игры, больше всего скорость рендеринга зависит от мощности видеокарты, от филлрейта и пропускной способности памяти. Проверим, какая разница получится при тестировании встроенным бенчмарком на разных процессорах:

А разница в F.E.A.R. получилась… нулевая. Абсолютно одинаковые результаты, что на одноядерной системе, что на двухъядерной. Даже удивительно, оптимизации драйвера ForceWare не добавили к результатам ровно ничего, ни одного лишнего кадра в секунду. Видимо, приложение однопоточное и на такой мощной видеокарте, как наша тестовая, полностью ограничена филлрейтом. Других объяснений найти просто не получилось.

Serious Sam 2

Еще одна игра позапрошлого года, производительность которой больше всего зависит от видеокарты, но на открытых уровнях с большим количеством врагов на неё может повлиять и мощность центрального процессора, который используется для расчетов физики, AI, LOD и др. Никаких данных о том, поддерживаются ли многопроцессорные системы игрой, мы не нашли, поэтому вместо предположений сразу обратимся к практике:

Забегая вперед — это один из наиболее распространенных результатов, после неожиданного с F.E.A.R. Результаты были перепроверены не один раз, были взяты средние значения из полученных. В этой игре получилось так, что двухъядерник совсем чуть-чуть обогнал одноядерный процессор, в «легком» режиме — на 6%, в «тяжелом» — в пределах погрешности (нагрузка увеличилась и основным ограничителем скорости стал CPU). Производительность в двух режимах не слишком сильно отличается, игра явно ограничена производительностью процессора, прежде всего, но… производительностью единственного ядра.

Call of Juarez

Относительно новая игра, отличающаяся весьма технологичным игровым движком. В основном, производительность в Call of Juarez ограничена видеокартой, именно на неё ложится большая нагрузка, в игре много геометрии, пиксельной обработки и отличные shadow map тени. На процессоре «лежат» разве что физические расчеты, несложные и в небольших количествах. Процессор может ограничивать производительность только из-за большого количества вызовов отрисовки, ведь в используемом для тестов уровне количество объектов и соответствующих вызовов особенно велико.

Но видимой разницы опять не получилось. Мизерное преимущество двухъядерника можно объяснить разве что снижением нагрузки на процессор со стороны системных и фоновых процессов. В остальном, игра в очередной раз подтверждает то, что скорость рендеринга в ней почти полностью зависит от мощности видеокарты.

Company of Heroes

Наконец-то шутеры от первого лица закончились (временно). Возможно, в играх других жанров от двухъядерного процессора мы увидим большее преимущество? Хотя встроенный бенчмарк в Company of Heroes не отражает игровой производительности, так как показывает скриптовый ролик, мало похожий на саму игру, будет интересно посмотреть на разницу в производительности между двумя тестовыми процессорами.

Уже лучше, небольшой прирост от второго ядра явно присутствует, хотя и не такой большой, как хотелось бы и какой есть в Quake 4. 5-6% — это подозрительно близко к погрешности измерения, хотя и больше её. Поэтому можно сделать такой вывод: производительность игры Company of Heroes, точнее, её скриптовых роликов, незначительно ускоряется на двухпроцессорных системах за счет оптимизаций драйвера и, возможно, за счет более эффективного распределения нагрузки от фоновых и системных процессов.

Need for Speed: Carbon

NFS: Carbon — это первая игра в нашем тестировании с отсутствующими возможностями измерения производительности. У неё нет даже возможности записи и проигрывания проведенных гонок, поэтому приходится действовать описанными в статье по FRAPS методами, привносящими большую погрешность. Однако, игра весьма интересна с точки зрения темы статьи, так как она мультиплатформенна и современна, поэтому может получать преимущество на многопроцессорных системах.

Так и есть, в простом режиме 1280x1024 преимущество у двухъядерного процессора перед одноядерным получилось вполне приличным — 18%, что уже явно не спишешь на одни лишь оптимизации драйвера. Вероятно, приложение использует несколько потоков, которые эффективно распределяются системой между ядрами процессора. Конечно, в тяжелом режиме от значительного преимущества остались лишь следы, но почти 10% выигрыша в таких условиях также не позволяют усомниться в специальных оптимизациях под двухъядерники. Рассмотрим графики частоты кадров, чтобы понять, где и как получилось это преимущество:

Need for Speed: Carbon


Хорошо видно, что двухъядерный процессор всегда обеспечивал большую производительность, чем одноядерный. И минимальная частота кадров на двухъядернике была выше и просадки FPS не такие сильные, как у одноядерника. Весьма вероятно, что часть работы универсального процессора в игре выделена в отдельный поток, из-за этого и получается прирост производительности.

GTR 2

Еще одна игра в жанре автогонок, но весьма сильно отличающаяся от серии Need for Speed. GTR 2 — это уже полноценный автосимулятор, со сложными физическими расчётами и др. Игра не отличается сверхсовременной графикой, хотя сложность геометрии моделей автомобилей велика и при наличии в кадре сразу нескольких десятков машин, получается очень большая нагрузка и на видеокарту и на центральный процессор. Особенно на CPU, так как видеокарта в нашем случае использовалась максимально производительная.

В этот раз преимущество от двухъядерности не такое большое, но оно есть. Вероятно, игра сама по себе не оптимизирована под многопроцессорные системы, но видеодрайвер Nvidia и меньшая нагрузка от фоновых процессоров таки делают небольшое преимущество реальным. Вряд ли разница 5-7% может кого-то сподвигнуть на приобретение двухъядерного процессора вместо одноядерного прямо сейчас, но при условии скорого вытеснения одноядерников даже с таким преимуществом нужно считаться. Посмотрим на график FPS:

GTR 2


Отлично видно, как скачет частота кадров. При тестировании использовался FRAPS и просмотр заранее записанной гонки с большим количеством автомобилей в кадре. Поэтому, в моменты, когда в кадре мало гоночных болидов, частота кадров растёт, а когда видеокамера снимает общий план, и в него входят десяток и более автомобилей, тогда FPS падает до очень низкого значения. К сожалению, двухъядерник тут не спасает, прирост частоты кадров от него достигается за счет высоких значений, когда не так важно, 100 там FPS или 110.

Gothic 3

Один из самых неоднозначных релизов прошлого года с точки зрения отлаженности кода и его оптимизации. Игра очень требовательна к системе, ко всем её частям, и к процессору и к видеокарте. Так как тестовая видеокарта довольно мощна, можно предположить, что основным ограничителем производительности у нас будет как раз CPU. Gothic 3 — игра медлительная и новая, именно поэтому интересно узнать, получает ли она преимущество от второго процессора в системе или нет.

Да уж, частота кадров не радует совсем. Конечно, это максимальные настройки, ну так и тестовая система ведь достаточно мощная! Прирост от второго ядра есть, хотя и не такой большой — 13% в «легком» режиме и 7% — в «тяжелом». Производительность игры явно не упирается в видеокарту. Посмотрим на график, может быть он покажет что-то интересное:

Gothic 3


И точно — весьма интересная ситуация. Посмотрите, двухъядерник хотя и немного проваливался почти в тех же местах, что и процессор с одним ядром, но эти провалы далеко не такие, как в последнем случае. И минимальная частота кадров сильно отличается, сравните 5 и 20 FPS. Вероятно, в игре используется отдельный поток для подгрузки данных по мере прохождения в игре. И, так как на одноядерном процессоре эти потоки выполняются совместно, один из них не получает нужного времени и игра тормозит. В случае с двухъядерным процессором проще — потоки выполняются параллельно на разных процессорах и не мешают друг другу.

Отдельно нужно отметить то, что в игре, к сожалению, нет ни встроенных средств по измерению производительности, ни средств для записи демок, поэтому погрешность проведенных тестов весьма велика, так что к полученным нами результатам в Gothic 3 нужно относиться с определенной долей скептицизма.

Armed Assault

В этой игре также нет средств по измерению производительности, погрешность проведенных тестов также могла быть весьма и весьма велика. Кроме того, Armed Assault легко может поспорить с предыдущей игрой по количеству разнообразных ошибок и нестабильности частоты кадров. Но с исследовательской точки зрения игра интересна и технологична. Она сильно нагружает как CPU, так и видеокарту, и частота кадров на максимальных настройках просто непристойно низка для столь мощной тестовой системы.

Явного упора в производительность видеокарты и процессора не видно, разница между разными режимами качества невелика, хотя и есть. Прироста от двухъядерности не заметно, разница укладывается в пределы погрешности. Рассмотрим график ежесекундной частоты кадров, может быть, хотя бы он покажет что-то любопытное:

Armed Assault


Ровно ничего интересного, на наш взгляд, игра явно не использует возможности двухъядерной системы, хотя частота кадров на ней иногда и отличается в большую сторону. Это, скорее всего, связано с оптимизациями драйвера под мультипроцессорные системы, чем с самой игрой. А жаль. Такая неоптимизированная игра… хотя бы за счет ресурсов второго процессора попытались бы получить прирост скорости.

S.T.A.L.K.E.R.: Shadow of Chernobyl

Об этой новейшей игре, наверное, слышали вообще все. Именно её популярность и свежесть и стали теми причинами, которые побудили автора включить S.T.A.L.K.E.R.: Shadow of Chernobyl в статью. Тем более, что совсем недавно появилась возможность тестирования производительности при помощи кем-то заботливо написанной демки. К сожалению, разработчики игры в очередной раз посчитали, что игроки и тестеры недостойны возможностей записи и проигрывания демок и соответствующего тестирования производительности. Остаётся ждать патчей, в которых эти возможности обещают добавить, а пока пользоваться демкой, в которой большую часть времени показывается небо, а остальное время — обширная территория с высоты птичьего полета, что к геймплею игры почти не имеет отношения.

Итак, S.T.A.L.K.E.R. явно получает некоторое преимущество от второго ядра процессора, в том числе и в более тяжелом для видеокарты режиме. Частота кадров при разных настройках разрешения экрана не сильно отличается, такое впечатление, что производительность упёрта в скорость процессора или пропускную способность оперативной памяти. Но не в видеокарту. В крайнем случае — в её недоработанные драйверы. Полученное преимущество от второго ядра CPU достигло 8-9%, что не позволяет явно упомянуть оптимизации под многопроцессорные системы, скорее всего, в ускорении виноват драйвер видеокарты, который может использовать мощности второго ядра для своих целей.

S.T.A.L.K.E.R.: Shadow of Chernobyl


График FPS показывает, что увеличение средней частоты кадров происходит в основном за счет пиков максимальных значений, минимальная частота кадров поднимается, но не слишком сильно. Поэтому, считаем, что вывод об отсутствии специальной многопроцессорной оптимизации в S.T.A.L.K.E.R. подтверждается.

Rainbow Six: Vegas

Ну и, наконец, последней игрой в материале будет Rainbow Six: Vegas — одна из первых игр на базе известного игрового движка Unreal Engine 3, который заочно славится поддержкой многопроцессорных конфигураций. Проверим, так ли это на самом деле. Игра интересна еще и тем, что она мультиплатформенна и довольно медлительна на многих не особенно мощных ПК, что вызывает много жалоб со стороны игроков. Проверим, спасут ли их двухъядерники:

Спасти может и не спасут, но что они игрой (точнее, движком) поддерживаются неплохо, это можно сказать со 100% уверенностью! Разница в производительности между однопроцессорной системой и двухпроцессорной хоть и не достигла той, что мы увидели в Quake 4, но всё же это вполне весомые 38% в сравнительно легком режиме, и 17% в более тяжелом (правда, не стоит забывать, что игры на движке UE3 не поддерживают антиалиасинг, поэтому режим для Geforce 8800 GTX получается не таким уж и тяжелым). Посмотрим, как наличие второго ядра CPU повлияло на среднесекундные показатели FPS в этой игре:

Rainbow Six: Vegas


Самый интересный график, не правда ли? Такое впечатление, что второе ядро в Rainbow Six: Vegas всегда занято полезной для игры работой (потоком) и всегда увеличивает производительность. Вырос мгновенный FPS, минимальный FPS, средний FPS, вообще все значения. Налицо отличная оптимизация движка под мультипроцессорные системы. Вспомнив количество игр, анонсировавших применение движка Unreal Engine 3, теперь можно легко вывести главную причину крайней желательности двухъядерного процессора в игровых компьютерах, предназначенных для современных игр и игр самого ближайшего будущего.

Выводы

Надо сказать, что полученные в тестах результаты не всегда соответствовали нашим ожиданиям. Мы увидели как ускорение в тех приложениях, где его никак не ждали, так и отсутствие прироста производительности в играх, где его можно было предполагать. В первом случае явно «виновата» оптимизация видеодрайвера Nvidia ForceWare для работы с двухъядерными процессорами. Как нам кажется, неожиданные повышения производительности связаны именно с этим. По тестам видно, что двухъядерные процессоры могут увеличивать производительность современных игр по сравнению с одноядерниками, даже в тех случаях, когда приложения писались в расчете на одноядерные процессоры.

Итак, два основных вывода, полученных при анализе результатов тестирования:

  1. На данный момент, увеличение производительности, привносимое вторым ядром CPU, в среднем относительно невелико — около 10-15%. В большом количестве игр прироста от второго ядра или совсем нет или он крайне невелик — 5-7% и меньше. Это небольшое увеличение производительности достигается при помощи оптимизаций видеодрайверов и более эффективного распределения нагрузки на CPU от фоновых и системных процессов. Лишь специально написанные многопоточные игровые приложения обеспечивают значительный рост производительности в случае установки двухъядерного процессора, вплоть до 40-50% в режимах, не ограниченных исключительно производительностью видеокарты.


  2. Наблюдается определенная зависимость от времени выхода игры — более новые приложения явно эффективнее используют второе ядро CPU и умеют получать от него большую выгоду. Возможно, небольшое увеличение производительности также стоит отнести на счет оптимизации видеодрайверов под двухъядерные процессоры, но примеры таких игр, как Rainbow Six: Vegas на движке Unreal Engine 3 и Quake 4 на специально оптимизированном под многопроцессорные конфигурации движке DOOM 3, явно показывают важность второго ядра CPU для игр ближайшего будущего. То есть, мало того, что игры с поддержкой многоядерности уже существуют, но их число в дальнейшем будет только расти.

    Тем более, если речь касается мультиплатформенных движков и игр, которые выходят, в том числе на игровых консолях текущего поколения: Microsoft Xbox 360 и Sony PlayStation 3. Вполне вероятно, что такие игры смогут получить преимущества от многоядерных чипов в полном объеме, так как в консолях также используются многоядерные центральные процессоры. Мы будем стараться держать вас в курсе, и возможно, это не последнее исследование по теме многопроцессорности в играх. Уже ведь массовые четырехъядерники на подходе! :)