-->
Поиск:
Видеокарты

26.02.2008 00:25

В бой идут одни старички, или Обзор middle/low-end видеокарт компании Palit: Radeon HD 2600 Pro Sonic 256 MB, Radeon HD 2400 XT Sonic 256 MB, Radeon H

Не все шейдерные блоки одинаково полезны

Уже с первых анонсов стало ясно, что потоковые процессоры AMD – это какие-то иные потоковые процессоры, нежели те, что использует NVIDIA в G80/G84/G86. Если посмотреть на самую первую блок-схему архитектуры R600/R630/R610, то можно заметить, что шейдерные блоки сгруппированы по пять. Такая группа называется суперскалярным процессором, и именно ее следует считать основным структурным  блоком модуля обработки шейдеров. Однако в целях маркетинга AMD считает каждый отдельный ALU (арифметико-логическое устройство), входящий в суперскалярный процессор, за потоковый процессор, откуда и проистекает красивая цифра 320/120/40 потоковых процессоров. Приглядимся поближе к одному такому суперскалярному процессору.

В

Как мы видим, составляющие его ALU (в дальнейшем мы будем называть потоковые процессоры AMD именно так) совсем не равнозначны. Только один из пяти ALU (он обозначен более толстым "кирпичиком") способен исполнять специальные функции, такие, как синус, логарифм, экспонента и так далее. Остальные четыре арифметико-логических устройства предназначены для выполнения операций сложения-умножения, как и обычные ALU в центральных процессорах. Сходство дополняется также поддержкой этими ALU полной 32-битной точности вычислений и инженерного стандарта IEEE 754. Означает это, что на R600/630/610 без особого труда можно организовать ускоритель определенных видов вычислений, например, различного рода научных или экономических калькуляций. Каждый из 64/24/8 суперскалярных процессоров R600/630/610 дополнительно снабжен блоком предсказания ветвлений (еще одна архитектурная аналогия – префетч у CPU), что повышает эффективность работы на шейдерах с большим числом переходов.

В

Напрямую, например, 64 суперскалярных процессора R600 со 128 скалярными потоковыми процессорами G80 нельзя. Во-первых, все 128 процессоров NVIDIA умеют производить как элементарные функции (сложение-умножение), так и специальные (синус, косинус, экспонента), а также целочисленные операции, в то время как только 20% ALU в R600 могут выполнять весь набор данных действий. Но при этом каждая инструкция, поступающая на модуль потоковых процессоров, должна обрабатываться не менее чем 16 потоковыми процессорами для вершин или 32 для пикселей. Итого получается, что за такт G80 способен отработать до 8 вершин или 4 пикселей на одну инструкцию. Для R600 ситуация такова, что каждый ALU всегда обрабатывает одну инструкцию. Число потоков при этом равно числу суперскалярных процессоров, то есть 64 (против 128 потоков у NVIDIA, но с меньшим в разы числом инструкций). Итого мы получаем не только значительно большую параллельность выполнения для шейдеров в R600, но и гораздо большую зависимость от эффективности компиляции. В идеальной ситуации за такт обрабатывается 320 операций. Но сможет ли компилятор нагрузить каждый из ALU своей операцией в реальных приложениях? В худшем случае мы получим только одну операцию на суперскалярный процессор, то есть 64 за такт, а если учесть вдвое более высокую частоту шейдерного домена у G80, получаем серьезное падение производительности.

В

Таким образом, мы видим, что архитектура шейдерных блоков у AMD дает нам колоссальную разбежку между пиковой и минимальной производительностью, а в реальных приложениях почти все зависит от эффективности поданного на GPU кода. К счастью, почти все обрабатываемые величины (значения цвета пикселей, положения вершин и так далее) обычно являются четырехкомпонентными, и при грамотной компиляции будут задействованы, как минимум, 80% всех ALU. NVIDIA же предлагает абсолютно стабильную производительность шейдеров, которая слабо зависит от характера исполняемого кода. В итоге подход у компаний просто разный, и назвать какой-то из них более удачным просто невозможно. Быть может, некоторые точки над i позволит расставить дальнейшая разработка ПО, использующего мощности GPU для неграфических нужд, но пока о прямом сравнении шейдерных архитектур говорить рано.

Работаем с картинкой

Мы очень много времени отдали описанию шейдерной архитектуры, в то время как основная часть графики в наших любимых играх – это по-прежнему полигоны и натянутые на них текстуры. Фактически впервые AMD отдельным слайдом в своей презентации упоминает текстурный кэш. Кэш первого уровня имеет объем 64 KB, по 32 KB для вершин и текстур (похоже на L1-кэш для данных и инструкций у CPU), общий же кэш второго уровня равен 256 KB. Текстурных блока у R630 всего  только два (у R610 вообще  только один). Это весьма небольшое число, однако в компании решили, что будущее за шейдерами и отдали им большую часть транзисторов на чипе.

В

Вообще говоря, это традиционный для ATI подход – концентрироваться на производительности шейдеров, в R580 также было текстурных блоков меньше, чем у конкурентов. Зато текстурники (TMU) в R630 полностью независимы от шейдеров и подключены параллельно суперскалярным процессорам к диспетчеру потоков. Соответственно, TMU могут получать предварительную выборку данных еще до того, как они попадают на шейдерные блоки.  Текстурные блоки R630 похожи по производительности на TMU у G80. Каждый из них способен делать выборку и билинейную фильтрацию 32-битных текстур без потери производительности (при сравнении с 16-битными), либо с двукратной потерей производительности при отображении текстур в полной 32-битной точности (FP32, 32 бита с плавающей запятой). В каждом из TMU имеется по 8 блоков адресации, 20 блоков выборки и 4 блока фильтрации, причем 4 блока адресации и 4 блока выборки работают с вершинами и не нуждаются в фильтрации текстур. Работу с HDR такая архитектура проделывает (в теории) в семь раз быстрее, чем R580, но все равно медленнее, чем архитектура G80.
Блоков записи в буфер кадра (ROP) мы имеем, как и TMU, два (для R610 – 1). Скорость их работы – по четыре пикселя за такт, записываемых в кадровый буфер. Никаких сюрпризов и коренных отличий от решений, использованных в R580. Отличается только заявленная компрессия стенсил-буфера и Z-буфера: до 16:1 (у R580 было 8:1), и до 128:1 при использовании полноэкранного сглаживания по схеме 8x MSAA.

В

Иерархическая структура z- и стенсил-буферов улучшена, что должно благотворно отразиться на скорости в играх, изобилующих трафаретными тенями (тот же Doom 3, в котором карты ATI традиционно проигрывали решениям NVIDIA).

Больше рельефа, меньше полигонов

Мы уже знакомы с использованием технологий, призванных создавать эффект объемных поверхностей, не затрачивая лишних полигонов. Это карты нормалей, карты неровностей (бампмэппинг) или даже параллаксмэппинг. На сей раз AMD решила применить в своем чипе технологию тесселяции, ранее использованной в чипе Xenos (Xbox 360). Тесселяция применяется для тех же целей, что и все вышеперечисленные "мэппинги", то есть для увеличения геометрической сложности (рельефности) объектов без увеличения числа реальных полигонов модели при помощи наложения карты смещения. Сама технология, мягко говоря, не новая (ее первое серьезное применение на рынке PC-графики произошло с выходом Matrox Parhelia), а для ее использования (помимо собственно карты смещения) необходима модификация вершинных шейдеров в игре.

В

Тут-то и возникает вопрос: а захотят ли разработчики игр "затачивать" свои шейдеры под одну из существующих на рынке архитектур. В случае Xbox 360, где тесселяция была применена ATI, у разработчиков игр под конкретную платформу не было выбора. К слову сказать, до сих пор не вполне понятно, насколько интенсивно будут использовать тессселяцию порты с Xbox 360 на PC.  У разработчиков же игр на PC такой выбор есть, и в пользу тесселяции указывают многие факты.  

В

Во-первых, "экономия" полигонов приводит к повышению производительности – для того чтобы воссоздать сложную геометрически модель вместо массива вершин, достаточно обработать низкополигональную модель и карту смещения – фактически обычную текстуру (причем не более чем 16-битную). 

В

Во-вторых, резко падает потребление видеопамяти (и пропускной способности), что AMD тотчас же проиллюстрировала слайдом.  

В

Ну и, наконец, тесселяция позволяет воссоздавать крупные геометрические детали (рельеф местности, складки тканей), тогда как бампмэппинг ограничивается только неровностями, а нормалмэппинг – мелкими деталями. В сочетании же с бампмэппингом тесселяция в состоянии создать очень сложную геометрию там, где использованы всего тысячи или даже сотни полигонов.

Под перекрестным огнем

Первая реализация режима рендеринга двумя GPU у ATI была ужасна. Необходимость в мастер-карте, ограничения частоты развертки – эти и многие другие причины оставляли технологию CrossFire далеко позади после SLI. В поколении Radeon X1900 большинство проблем уже было решено, и CrossFire начал набирать обороты, поэтому при появлении Radeon HD 2000 AMD достаточно было закрепить успех количественными изменениями. Посмотрим, что произошло со схемой "перекрестного огня".  

В

Как мы и подозревали, ничего по-настоящему существенного. Контроллер многочипового рендеринга встроен в сам графический процессор, поэтому нет никакой необходимости в специальной мастер-карте. Также заявлена поддержка более чем двух GPU (вероятный ответ на Quad SLI, если эта технология NVIDIA станет по-настоящему популярной). Добавился новый режим рендеринга, Alternate Frame Rendering – поочередная обработка картами кадров. Насколько данный режим окажется эффективным, могут показать только тесты.
Ожидаемо появились и новые алгоритмы полноэкранного сглаживания. Только вместо того, чтобы жестко встраивать алгоритм антиалиасинга в ROP, AMD предпочла возложить эту задачу на суперскалярные процессоры. Процесс сглаживания теперь стал программируемым, а новый режим, соответственно, называется CFAA (Custom Filter AA – сглаживание при помощи программируемого фильтра).  

В

Действительно, теперь качество сглаживания может улучшаться при обновлении драйверов, а также силами разработчиков игр. Новый алгоритм усреднения и обнаружения краев (на которых и образуется "лесенка") в сочетании с изменяемым весом пикселя вне зоны сглаживания должны уменьшить проблему "замыливания" картинки при использовании FSAA.


       Опубликовать в twitter.com   Опубликовать в своем блоге livejournal.com           

Рекомендуем прочитать