Раскрыт главный секрет эффективности новых архитектур NVIDIA

Одной из наиболее успешных за последнее время графических архитектур на рынке игрового 3D можно без сомнений назвать NVIDIA Maxwell. В сравнении с предшествующей ей архитектурой Kepler она показала огромные улучшения по всем пунктам: от чистой производительности до производительности в пересчёте на ватт. И это несмотря на использование того же 28-нм техпроцесса. Любопытно, что и площадь новых графических ядер Maxwell выросла незначительно.

До недавних пор причина столь серьёзного прорыва была неизвестной, а NVIDIA говорила лишь об улучшениях в структуре потоковых процессоров, оптимизациях низкого уровня (на уровне транзисторов) и существенном увеличении объёма кеша второго уровня. Многие, в том числе и наши зарубежные коллеги с ресурса AnandTech, подозревали NVIDIA в использовании мобильных технологий; в конце-концов, Maxwell с самого начала создавалась как универсальная архитектура, пригодная в равной степени для использования в ноутбуках и настольных игровых ПК. Но как показали исследования, проведённые энтузиастами, есть и ещё одна причина, причём, вероятно, самая главная и в равной степени относящаяся к Maxwell и Pascal.

Скриншот анализатора, с помощью которого была раскрыта тайна NVIDIA

Скриншот анализатора, с помощью которого была раскрыта тайна NVIDIA

Дело в том, что начиная с Maxwell, NVIDIA решила использовать так называемый тайловый метод рендеринга (Tile Based Rendering). Он известен нам, в частности, по мобильным графическим ядрам PowerVR и ARM Mali. Главное преимущество тайлового метода заключается в разбиении сцены на небольшие плитки (тайлы), каждая из которых может обрабатываться целиком ресурсами графического процессора, без дополнительных обращений к внешней видеопамяти. А это означает как увеличение производительности (кеш гораздо быстрее внешней памяти), так и экономию энергии за счёт сокращения количества обращений к видеопамяти. Как правило, тайлы имеют размер 16 × 16 или 32 × 32 пикселя; этот метод великолепно чувствует себя в среде современных ГП, представляющих собой огромные параллельные массивы одинаковых вычислительных ядер. Проблема заключается в том, что практически все игры разрабатываются под другую, традиционную для ПК модель рендеринга — IMR (Immediate Mode Rendering), когда весь кадр обрабатывается целиком.

Инженерам и программистам NVIDIA пришлось пойти на ряд ухищрений, чтобы совместить тайловую архитектуру с программным обеспечением, рассчитанным на IMR. Одним из таких ухищрений является специальный код-прослойка DirectX, ответственный за растеризацию треугольников. Как всем нам уже известно, совмещение методов рендеринга не просто удалось разработчикам, но позволило им создать две наиболее эффективные графические архитектуры за последние несколько лет — Maxwell и Pascal. Но если бы разработчики игр сразу ориентировались на тайловый метод, то их эффективность могла бы оказаться ещё более высокой. Программа, с помощью которой удалось проанализировать архитектуры NVIDIA, доступна на GitHub.

Неясно, почему NVIDIA решила умолчать о такой детали в своих новых архитектурах — ведь ничего плохого в использовании тайлового метода нет; напротив, упоминание о преимуществах такого подхода могло бы быть неплохим рекламным ходом. Кроме того, встаёт естественный вопрос: какие ухищрения использует в своих продуктах AMD Radeon Technologies Group и входит ли в их число тайловый рендеринг?

Источник:

#nvidia, Immediate Mode Rendering, maxwell, Pascal, Tile Based Rendering, архитектуры, видеокарты, графические карты, графические процессоры, рендеринг

Читайте также