Страница 2: Асинхронные шейдеры - часть 2
Асинхронные шейдеры уже входят в архитектуру GCN, так что AMD разрабатывала архитектуру с прицелом на будущее. Разработчикам CPU и GPU всегда приходится буквально предсказывать будущее, ориентируясь на программные решения, которые появятся только через несколько лет.
Блоки ACE входят в состав архитектуры "Graphics Core Next". В случае GPU "Hawaii" используется восемь блоков ACE, которые могут обрабатывать восемь очередей команд. Все видеокарты AMD с архитектурой GCN должны оснащаться блоками ACE, но их число зависит от конкретной реализации архитектуры.
В GPU "Hawaii" используется восемь блоков ACE (Asynchronous Compute Engines), все они работают независимо. Каждый блок ACE может, в свою очередь, обрабатывать восемь независимых очередей команд. Для быстрого доступа ко всем данным ACE напрямую работают с кэшем L2. А черед два движка DMA возможно обращение к памяти. Здесь используется полная пропускная способность PCI Express 3.0 16 Гбайт/с.
Асинхронные шейдеры позволяют не только улучшить базовую производительность современных архитектур и работу движков рендеринга, но и обеспечивают выигрыш в некоторых областях. Популяризация технологий виртуальной реальности поставила перед всеми производителями новые задачи, которые приходится решать, во многом, идентично – и AMD, и NVIDIA. Чтобы обеспечить полное погружение в виртуальную реальность, то есть виртуальный мир не отличался бы от реального, необходимо выполнить ряд критериев.
Самые высокие разрешения дисплеев с самой высокой частотой кадров требуют высокой вычислительной производительности. Оптимальным пока считается разрешение UltraHD на каждый глаз и частота 90 кадров в секунду. Необходимую производительность как раз могут обеспечить асинхронные шейдеры. Кроме того, должна уменьшиться задержка между вводом пользователя и выводом на дисплей, что критично для полного погружения в виртуальную реальность.
Асинхронные шейдеры открывают путь и другим технологиям. Здесь можно отметить технологии преобразования изображения (Image Warping) и (Asynchronous) Timewarp, которые мы детально поясняли в других статьях. Здесь появляющиеся проблемы и их решения у AMD и NVIDIA довольно близки.
Возникает вопрос: получат ли геймеры ощутимые преимущества от асинхронных шейдеров? Практических примеров мы пока привести не можем, и пока что тесты DirectX 12 не дают общей картины, тестируя определенные части конвейера рендеринга. Например, вернёмся к тем же операциям Draw Calls, число которых у Mantle / DirectX 12 выросло очень значительно по сравнению с DirectX 11, но степень их влияния на весь конвейер рендеринга пока не совсем понятна.
Вероятно, нам предстоит дождаться появления первых игр с "родной" поддержкой DirectX 12, чтобы оценить эффект. Конечно, AMD постаралась провести внутренние тесты, чтобы показать влияние асинхронных шейдеров на производительность. Например, без асинхронных шейдеров включение эффектов пост-обработки приводит к падению производительности примера SDK LiquidVR с 245 до 158 fps. Включение асинхронных шейдеров позволяет вернуться к уровню производительности, который наблюдался без эффектов пост-обработки.
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 описывает работу асинхронных шейдеров и проводит демонстрацию на следующих двух видеороликах: