«Лишние» ядра, или еще раз о ситуации с играми

На прошлой неделе ребята с сайта Bit-tech опубликовали небольшое исследование на предмет того, сколько процессорных ядер нужно популярным играм, чтобы выйти на максимальную производительность. Взяли Crysis, Call of Duty: Modern Warfare и Call of Duty: Modern Warfare 2, Battlefield: Bad Company 2, STALKER: Call of Pripyat, Colin McRae: Dirt 2, Down of War 2 да и прогнали их на моей мечте, шестиядерном Core i7-980X. У процессора на крышке было написано Intel Confidential, а значит он позволял делать с собой всякое. В том числе – отключать ядра по одному. Вот парни и попробовали каждую игру как бы на шести конфигурациях, не меняя процессор.

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

Что же, наши проиграли? Ни в коем случае! В комментариях к статье у авторов едко поинтересовались – а чего ж вы, черти, такую подборку странную сделали? Где в ней GTA4 или FarCry 2, которые с многоядерными процессорами ой как дружат? Почему запускали Battlefield: Bad Company 2 в режиме single, тогда как в multiplayer она как раз и начинает использовать четыре ядра в полный рост? Там еще много чего спрашивают , и с каждым уклончивым ответом держателей ресурса убеждаешься в тенденциозности статьи. Такое ощущение, что сначала придумали вывод, а потом подтянули к нему все остальное.

Конечно, большая доля правды в материале есть – даже новые игрушки порой выходят недоделанными и с правильными процессорами не дружат. Но, как говорится, есть нюанс. В конце своей статьи Bit-tech предупреждают: ситуация, когда двухъядерные процессоры конкурируют в играх с четырех- и шестиядерными долго не продлится. Уже сегодня умные разработчики дорабатывают движки на предмет многопоточности, и завтра четыре ядра станут разумным минимумом. Так что если уже купили двухъядерник — наслаждайтесь им, но если апгрейд еще только в планах – мы вас предупредили.

Меня позабавило, как выводы Bit-tech перевели некоторые отечественные ресурсы. Мол, снова доказано: четыре ядра – зло. Покупайте себе два ядра и все будет очень хорошо! Понятно, что бытие определяет сознание в том числе и у переводчиков, но так передергивать и тешить самолюбие не очень состоятельных читателей, наверное, не очень честно…

И еще одно. Читая описание DirectX 11 на сайте Microsoft, я натолкнулся на интересный фрагмент: «DirectX 11 предлагает множество улучшенных функций. Это средство обеспечивает повышенную эффективность работы, использует мощь современных многоядерных процессоров и предоставляет поддержку для передовых технологий создания теней и текстур, таких как тесселяция». Вот что! Мощь многоядерных процессоров! Википедия уточняет этот тезис:

Как известно, передача команд визуализации через Direct3D предполагает использование дополнительных вычислительных ресурсов CPU. Учитывая тенденцию увеличения числа ядер центрального процессора, вводится поддержка более продвинутой многопоточности, чтобы распределять эту работу между несколькими потоками, тем самым производя её более эффективно.

Direct3D 11 даёт возможность создавать дисплейные списки из нескольких потоков и выполнять их из главного потока визуализации. Кроме того, устройство, которое создаёт ресурсы, было вынесено из контекста, который передаёт команды визуализации. Это позволяет создавать ресурсы асинхронно. Отложенные контексты (Deferred Contexts) используются для создания дисплейных списков и прямой контекст (Immediate Context) для передачи команд визуализации на GPU, включая обработку дисплейных списков, созданных в отложенных контекстах.

В отличие от других возможностей, в Direct3D 11 многопоточная визуализация реализуется программно через драйвер. Соответствующие драйверы D3D10 (возможно, даже D3D9) позволяют выполнять многопоточную визуализацию гораздо эффективней, чем ранее. Определённый уровень многопоточности будет доступен даже без новых драйверов, однако пока неясно, какие ограничения будут в этом случае.

Казалось бы, DirectX 11 должен придти и поправить все сам, да? И ничего делать особенно не надо?

К сожалению, надо. В списке игр, выбранных Bit-tech, добрая половина поддерживает DirectX 11, а Colin McRae: Dirt 2 вообще первая игра, работающая с ним изначально. Так вот «само», как видим, не получается. Все равно без труда не обойтись.

Наверное, с этим стоит просто смириться. И засучить рукава.