DirectX 12: Невероятный скачок потенциальной производительности
В Microsoft ожидают, что частота кадров при использовании DX12 вырастет по сравнению с DX11 более чем вдвое. Рекламные заявления следует воспринимать с осторожностью.
Gordon Mah Ung. DirectX 12’s potential performance leap is insane. PCWorld.
DirectX 12 заметно повышает производительность игр в среде Windows 10. В Microsoft ожидают, что частота кадров при использовании DX12 вырастет по сравнению с DX11 более чем вдвое. Но если верить новому тесту Futuremark API Overhead Feature, эта оценка представляется слишком консервативной.
Не так давно Microsoft и Futuremark опубликовали последние результаты выполнения теста 3DMark, позволяющего оценить, насколько игровой интерфейс API Microsoft Windows 10 стал эффективнее своего предшественника. Но прежде чем мы отправимся в этот путь, и рекламный поезд с радостными гудками отойдет от станции, позвольте напомнить, что речь идет о чисто теоретическом тесте, который не имеет никакого отношения к реальным игровым движкам.
Как мы тестировали
В нашем тестовом компьютере были установлены процессор Intel Core i7-4770K, системная плата ASUS Z87 Deluxe/Dual, 16 Гбайт оперативной памяти DDR3/1600 и твердотельный накопитель Corsair Neutron емкостью 240 Гбайт. В качестве графической платы использовались модели Gigabyte WindForce Radeon R9 290X и GeForce GTX Titan X. На плате ASUS я отключил функцию Core enhancement, разгоняющую процессор. По рекомендации Microsoft все тесты выполнялись при разрешении 1280×720 точек.
В 3DMark и Microsoft подчеркивают, что новый тест вовсе не является инструментом для сравнения графических процессоров, а лишь предлагает простой способ оценки производительности и эффективности API на одном и том же ПК. Не стоит использовать его для сравнения ПК X с ПК Y или для тестирования графических плат. Речь идет лишь о сравнении DX11 и DX12 в рамках выбранной аппаратной конфигурации.
В ходе тестирования графическому процессору посылаются команды нарисовать что-либо на экране. Эта инструкция передается через API, в роли которого выступает DX11, DX12 или AMD Mantle. Чем менее эффективным проявит себя API при управлении этими запросами, поступающими от центрального процессора к графическому, тем меньше объектов появится на экране. 3DMark быстро наращивает число запросов и объектов до тех пор, пока частота кадров, отображаемых на экране в секунду, не упадет ниже 30 кадр/с.
Первый тест представляет собой сравнение производительности DirectX 11 в однопоточном и многопоточном режиме. Затем тестировался API AMD Mantle (в случае поддержки его оборудованием), и в заключение оценивалась производительность DirectX 12.
Как видно на представленной диаграмме, производительность DirectX11 в однопоточном и многопоточном режиме оставляет желать лучшего, и при установке видеоплаты Gigabyte WindForce Radeon R9 290X едва дотягивает до 900 тыс. запросов, прежде чем частота кадров не упадет ниже 30 кадр/с. При использовании AMD Mantle число обращений возрастает уже до 12,4 млн запросов в секунду.
Трудно сказать, какой из интерфейсов API был разработан первым (я слышал, к примеру, что DirectX 12 проектировался на протяжении нескольких лет, а согласно другим сообщениям, первенство принадлежит AMD), но тест, по крайней мере, раскрывает потенциал обоих API. И здесь DirectX12 показал себя несколько более эффективным — число запросов превысило 13,4 млн.
Споры вокруг Mantle и DirectX в любом случае можно считать законченными, коль скоро сама AMD призывает разработчиков использовать DirectX 12 или Vulkan, преемника OpenGL, ориентированного в первую очередь на игры.
Помните, я отмечал, что Futuremark не рекомендует использовать этот тест для оценки графических плат? Тем не менее было интересно выяснить, как он поведет себя на оборудовании NVIDIA, поэтому все то же самое было проделано повторно после замены платы R9 290X на GeForce GTX Titan X. Естественно, Mantle в этом случае уже не работает — соответствующий интерфейс поддерживается только аппаратными средствами AMD.
Любопытно также оценить эффективность DX12 при использовании интегрированных графических процессоров. Поскольку большинство «игроков» пользуются встроенной графикой Intel чаще, чем дискретными платами AMD и NVIDIA, этот вопрос вполне закономерен, но будем справедливы: игра на интегрированной графике – уже не игра. Поэтому особого смысла в тестировании интегрированных графических компонентов Intel я не видел.
Между тем, Microsoft опубликовала результаты собственного тестирования на машине, оснащенной процессором Core i7-4770R Crystal Well с интегрированной графикой Intel Iris Pro 5200. Этот четырехъядерный чип используется в моноблоках старшего класса и в компьютере Gigabyte Brix Pro. Он обладает наивысшей производительностью из всех существующих сейчас процессоров Intel, поэтому полученные результаты, наверное, заслуживают внимания.
В целом, все выглядело неплохо, если не проводить сравнения с предыдущими диаграммами AMD и NVIDIA.
Но помните, что DirectX обладает более высокой эффективностью и лучше раскрывает свой потенциал на многоядерных процессорах. В данном случае речь идет не о графических платах, а о том, чтобы центральный процессор не стал узким местом для графического.
С учетом всего сказанного решено было проверить, какое влияние оказывает на результаты центральный процессор, варьируя число ядер, процессорных потоков и тактовую частоту в различных конфигурациях. Я отключал у четырехъядерного Core i7-4770K два ядра, включал и отключал режим Hyper-Threading и ограничивал тактовую частоту процессора.
Лучше всего Core i7-4770K проявил себя в конфигурации по умолчанию: с четырьмя ядрами и включенным режимом Hyper-Threading. Все тесты выполнялись на плате GeForce GTX Titan X. Я сравнивал лишь производительность DirectX12, поскольку именно она нас и интересовала.
Какой процессор лучше подходит для DirectX 12?
Я попробовал также варьировать тактовую частоту, число ядер и режим Hyper-Threading на различных процессорах Intel. Это имеет важное значение для выбора комплектующих при покупке или самостоятельной сборки компьютера.
Учтите, что представленные здесь результаты только моделируют реальную производительность. Процессор Core i7-4770K имеет 8 Мбайт кеш-памяти, в то время как Celeron — только 2 Мбайт, а Core i5 — 6 Мбайт. В большинстве тестов объем кеш-памяти не оказывал заметного влияния на производительность. Однако мне специально пришлось уменьшать тактовую частоту, чтобы смоделировать работу Core i5-4670K. Ее минимальное значение составило 3,6 ГГц, что на 200 МГц выше номинальной частоты этого чипа.
Факторы производительности
Из проведенного моделирования можно сделать вывод, что для производительности DirectX 12 количество потоков важнее тактовой частоты.
Посмотрите на результаты моделирования работы двухъядерного Core i3-4330 на частоте 3,5 ГГц без использования Turbo-Boost и Hyper-Threading. Сравните их с результатами более дешевого двухъядерного Pentium G3258, разогнанного до 4,8 ГГц. Чип Pentium K, предназначенный для любителей игр с ограниченным бюджетом, — единственный незаблокированный двухъядерный чип в семействе Intel, предлагаемый за сущие копейки. Разгоняется он очень просто, и при желании любой легко может достичь рубежа в 4,8 ГГц.
Но посмотрите на результаты тестирования. Несмотря на то что тактовая частота у него на 1,3 ГГц выше, чем у моделируемого Core i3, Pentium G3258 при выполнении запросов к DirectX 12 выглядит лишь немногим лучше. Ничего удивительного в этом нет. Еще во время тестировании второго поколения процессоров Core — Sandy Bridge — в 2011 г. я обнаружил, что при выполнении многопоточных задач чип Core i5 с тактовой частотой на 1 ГГц выше демонстрировал примерно ту же производительность, что и Core i7 с включенным режимом Hyper-Threading.
Производительность DX12 заметно возрастает и при увеличении числа ядер. Опять-таки сравните результаты двухъядерного 4-поточного Core i3-4330 и четырехъядерного 8-поточного Core i7-4770K. Они различаются почти в 2 раза.
К сожалению, восьмиядерный процессор Core i7-5960X был занят в других тестах, и мне не удалось испытать его с новым тестовым набором 3DMark. Но я совершенно уверен, что при установке восьмиядерного процессора, поддерживающего Hyper-Threading, рост производительности будет очень существенным.
Ну и, конечно, мы не можем обойти вниманием лучшие процессоры AMD семейства FX, Как правило, при равной тактовой частоте чипы AMD уступают продукции Intel. Четырехъядерный Haswell в большинстве тестов на производительность легко обходит восьмиядерный чип FX. Но при выполнении многопоточных задач процессор FX, несмотря на совместно используемую ядрами кеш-память, заметно приближается к Haswell, а в некоторых случаях и обходит его. Для DirectX 12 это имеет очень существенное значение, поскольку восьмиядерный процессор FX предлагается всего за 153 долл. Когда-нибудь я обязательно протестирую FX и посмотрю, действительно ли он имеет преимущества при работе с DirectX 12.
Из проведенного моделирования можно сделать вывод, что для производительности DirectX 12 количество потоков важнее тактовой частоты.
Вернемся к реальности
Не стоит воспринимать результаты тестирования буквально и ожидать в играх с DirectX 12 десятикратного роста производительности. Вы его не получите. Рекламные заявления следует воспринимать с осторожностью.
А что же на самом деле? Несмотря на заявления Microsoft о 50%-м улучшении, подкрепленные тестами Futuremark, думаю, все будет зависеть от конкретной игры и ее программного кода.
Тесты, пускай и выполненные на основе рекомендаций Microsoft и поставщиков графических плат, демонстрируют только теоретическую производительность. Они раскрывают лишь потенциал, но его еще нужно реализовать в конкретной игре, что весьма непросто.