Страница 2: Асинхронные шейдеры - часть 2

Асинхронные шейдеры уже входят в архитектуру GCN, так что AMD разрабатывала архитектуру с прицелом на будущее. Разработчикам CPU и GPU всегда приходится буквально предсказывать будущее, ориентируясь на программные решения, которые появятся только через несколько лет.

Asynchronous Shader от AMD
Asynchronous Shader от AMD

Блоки ACE входят в состав архитектуры "Graphics Core Next". В случае GPU "Hawaii" используется восемь блоков ACE, которые могут обрабатывать восемь очередей команд. Все видеокарты AMD с архитектурой GCN должны оснащаться блоками ACE, но их число зависит от конкретной реализации архитектуры.

Asynchronous Shader от AMD
Asynchronous Shader от AMD

В GPU "Hawaii" используется восемь блоков ACE (Asynchronous Compute Engines), все они работают независимо. Каждый блок ACE может, в свою очередь, обрабатывать восемь независимых очередей команд. Для быстрого доступа ко всем данным ACE напрямую работают с кэшем L2. А черед два движка DMA возможно обращение к памяти. Здесь используется полная пропускная способность PCI Express 3.0 16 Гбайт/с.

Asynchronous Shader от AMD
Asynchronous Shader от AMD

Асинхронные шейдеры позволяют не только улучшить базовую производительность современных архитектур и работу движков рендеринга, но и обеспечивают выигрыш в некоторых областях. Популяризация технологий виртуальной реальности поставила перед всеми производителями новые задачи, которые приходится решать, во многом, идентично – и AMD, и NVIDIA. Чтобы обеспечить полное погружение в виртуальную реальность, то есть виртуальный мир не отличался бы от реального, необходимо выполнить ряд критериев.

Самые высокие разрешения дисплеев с самой высокой частотой кадров требуют высокой вычислительной производительности. Оптимальным пока считается разрешение UltraHD на каждый глаз и частота 90 кадров в секунду. Необходимую производительность как раз могут обеспечить асинхронные шейдеры. Кроме того, должна уменьшиться задержка между вводом пользователя и выводом на дисплей, что критично для полного погружения в виртуальную реальность.

Асинхронные шейдеры открывают путь и другим технологиям. Здесь можно отметить технологии преобразования изображения (Image Warping) и (Asynchronous) Timewarp, которые мы детально поясняли в других статьях. Здесь появляющиеся проблемы и их решения у AMD и NVIDIA довольно близки.

Asynchronous Shader от AMD
Asynchronous Shader от AMD

Возникает вопрос: получат ли геймеры ощутимые преимущества от асинхронных шейдеров? Практических примеров мы пока привести не можем, и пока что тесты DirectX 12 не дают общей картины, тестируя определенные части конвейера рендеринга. Например, вернёмся к тем же операциям Draw Calls, число которых у Mantle / DirectX 12 выросло очень значительно по сравнению с DirectX 11, но степень их влияния на весь конвейер рендеринга пока не совсем понятна.

Вероятно, нам предстоит дождаться появления первых игр с "родной" поддержкой DirectX 12, чтобы оценить эффект. Конечно, AMD постаралась провести внутренние тесты, чтобы показать влияние асинхронных шейдеров на производительность. Например, без асинхронных шейдеров включение эффектов пост-обработки приводит к падению производительности примера SDK LiquidVR с 245 до 158 fps. Включение асинхронных шейдеров позволяет вернуться к уровню производительности, который наблюдался без эффектов пост-обработки.

Asynchronous Shader от AMD
Asynchronous Shader от AMD

AMD объяснила в теории, почему мы можем ждать прироста производительности под DirectX 12 на существующих видеокартах. Но пока что мы не можем подтвердить теорию конкретными практическими примерами. Синтетические тесты – это одно, здесь мы получаем прирост на несколько сотен процентов. Но они тестируют какие-либо определенные характеристики платформы, а не её общую производительность в целом. Впрочем, сегодня таким путём идёт не только AMD, но и все предполагаемые поставщики видеокарт DirectX 12. С Windows 10 Technical Preview и соответствующими драйверами появилась базовая техническая платформа, теперь осталось дождаться игр и программного обеспечения.

Хотя по поводу аппаратной поддержки остаются вопросы. Скорее всего, мы вновь получим несколько уровней поддержки DirectX 12. В случае DirectX 11 нам уже приходилось бороться с разными уровнями реализации поддержки, и не хотелось бы вновь столкнуться с этой проблемой уже под DirectX 12. Но AMD и NVIDIA указывают, что, по крайней мере, два последних поколения GPU совместимы с DirectX 12. Но в какой степени обеспечивается совместимость – пока неизвестно.

С асинхронными шейдерами AMD позволяет оценить потенциал улучшения производительности под DirectX 12. Конечно, у нынешних видеокарт имеется приличный потенциал улучшения, но его необходимо реализовать. Так что будем ждать выхода Windows 10 этим летом, а также обновления игр под DirectX 12 (и "родных" движков DirectX 12) в результате усилий AMD и NVIDIA.

Обновление:

Нам удалось узнать, какие GPU поддерживают асинхронные шейдеры и в каком виде.

Поддержка асинхронных шейдеров
Архитектура Смешанный режим Вычисления на GPU
AMD GCN 1.2 (R9 285) 1x Grafik + 7x Compute 8x Compute
AMD GCN 1.1 (R9-290-Series) 1x Grafik + 7x Compute 8x Compute
AMD GCN 1.1 (R7-260-Series) 1x Grafik + 1x Compute 2x Compute
AMD GCN 1.0 (HD-7000 и остальная линейка 200) 1x Grafik + 1x Compute 2x Compute
NVIDIA Maxwell 2. Generation (GTX-900-Series) 1x Grafik + 31x Compute 32x Compute
NVIDIA Maxwell 1. Generation (GTX-750-Series) 1x Grafik 32x Compute
NVIDIA Kepler (GK110) 1x Grafik 32x Compute
NVIDIA Kepler (GK10x) 1x Grafik 1x Compute

Конечно, NVIDIA работает над схожей технологией, представив в 2012 году HyperQ для профессионального сегмента. По сравнению с "Fermi" в архитектуре "Kepler" была реализована не просто рабочая очередь. Технология позволяет создать до 32 виртуальных ядер GPU, которые будут обрабатывать данные. Реализация у AMD и NVIDIA отличается, поэтому мы бы не стали сравнивать числа напрямую.

AMD описывает работу асинхронных шейдеров и проводит демонстрацию на следующих двух видеороликах: