Платим блогерам
Редакция
Новости Hardware Sozi
Разработчики должны найти другой подход к CPU, но делать этого они, конечно же, не будут.

реклама

Чуть больше года назад компания AMD вывела на рынок свои процессоры Ryzen, впервые предложив массовому пользователю восемь вычислительных ядер и шестнадцать потоков. Позже компания Intel выпустила процессоры Coffee Lake, которые располагают шестью ядрами и двенадцатью потоками, что также было своего рода прорывом после стольких лет господства 4-ядерных моделей. Но, как известно, если многие рабочие приложения с лёгкостью масштабируются на большое число ядер, то с играми дела обстоят несколько хуже, и отнюдь не все из них способны использовать большое число ядер.

реклама

В рамках конференции GDC 2018 компания Intel совместно с игровыми студиями рассказала о перспективах использования большого числа ядер в играх. Как сообщают наши коллеги из ComputerBase, если до шести ядер в основном масштабируются хорошо, то в случае с восемью и более ядрами, распределение вычислений происходит намного хуже. Но так как рынок развивается в сторону увеличения числа ядер, и если верить слухам, то Intel в этом году также как и AMD выпустит в массовый сегмент 8-ядерные решения, разработчики игр должны последовать наметившемуся тренду.

Как рассказали создатели Total War: Warhammer 2 и Conqueror’s Blade, основное внимание в процессе разработки игр уделяется именно ограничениям, накладываемым видеокартами. Потому что производительность GPU растёт значительно быстрее, чем CPU, где в течение последних лет почти ничего не происходило. Поэтому процессоры должны были сделать шаг вперёд, что и произошло. Но если в некоторых областях задействовать большее число ядер просто, то в других имеются ограничения.

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

Программисты также объяснили, почему SMT или Hyper-Threading иногда могут привести к потерям производительности. Проблема в том, что разделение ядра на два потока предполагает разделение всех имеющихся ресурсов, даже тех, которые доступны в очень ограниченной степени, например, кэш-память первого уровня. Когда оба потока хотят получить доступ к одному и тому же маленькому кэшу, это может привести к увеличению времени доступа. То есть данные отправляются с задержкой. Но в случае, когда потоки заняты разными вещами, и один из них фокусируется на кэше, а второй – на ALU, получается добиться повышения производительности.

В конечном счёте, использование ресурсов процессора всегда будет зависеть от конкретной игры, и стоит ли для неё делать оптимизацию для большого числа ядер и потоков. Очевидно, что в таких играх как Total War, где предполагаются массовые баталии со множеством юнитов на больших картах, оптимизация под множество потоков более чем актуальна. В некоторой степени такой подход может быть реализован и в других жанрах, но с гораздо меньшим эффектом. Проще говоря, разработчикам в первую очередь приходится оптимизировать игры под GPU, и уже потом уделять внимание CPU. Так что, игр, использующих процессор лишь частично, всё ещё будет предостаточно. Ну или просто разработчикам нужно искать абсолютно новый подход.

Показать комментарии (183)

Сейчас обсуждают