Часть 1: Теория и архитектура
Мы все знаем, что первые ускорители с поддержкой DirectX 10 появились еще в конце 2006 года, это были топовые продукты Nvidia (Geforce 8800 GTX и по сей день остается самым быстрым (даже вышла его разогнанная ревизия под названием 8800 Ultra)). Калифорнийская компания уже успела выпустить и акселераторы среднего класса с поддержкой DX10, а конкурент все молчит. Уже почти полтора года ничего нового нет от ATI в области топовых продуктов.
Мы понимаем все сложности, связанные с объединением с AMD, решение организационных и кадровых вопросов потребовало определенного времени, что замедлило ход подготовки к выпуску R600. К моменту, когда уже почти все было «на мази», некие головы в AMD решили объединить выпуск топового продукта с выпуском целой линейки ускорителей среднего уровня. И потому снова задержка с анонсом.
И вот, наконец-то дождались! Однако у канадцев (или как их теперь величать — американцами?) снова проблемы — теперь уже со средними картами.. Сегодня мы о них расскажем лишь в общих чертах, познакомим с теорией. Узнать же в реальности, какие возможности принесут эти продукты, мы сможем лишь в июле.
Не хочется высказывать грустных мыслей, однако события последних лет нам наглядно показывают, что бизнес видеокарт у ATI (AMD) медленно, но угасает. Это доказывают и отчеты по анализу рынка, периодически публикуемые авторитетными компаниями. Приобретение ATI компанией AMD имеет дальнюю цель — сфокусироваться на интегрированных решениях, за которыми стоит будущее. Поэтому мы видим — с каким скрипом появилось DX10-семейство от ATI… При этом нет самого топового продукта, традиционно сражающегося с быстрейшим ускорителем от Nvidia. HD 2900 XT (R600) появился в виде, способном соперничать только с Geforce 8800 GTS, впрочем цена будет соответствовать. Справедливости ради надо сказать, что пока нет практически игровых приложений под DX10, поэтому мы еще не знаем, какой будет расклад сил в новых играх.
В общем, выводы делать рано, быть может, новая линейка ATI придется по вкусу многим, в т.ч. и по цене, и опоздание канадского подразделения AMD не будет фатальным.
А пока передаем слово Алексею Берилло, он расскажет обо всех новшествах в архитектуре:
В недавнем обзоре G84 и G86 мы посетовали на то, что Nvidia давно выпустила решения верхнего ценового диапазона и остальные чипы на базе унифицированной архитектуры G8x весной подтянулись, а аналогичные DirectX 10 решения от AMD еще даже не объявлены. И вот, настал этот долгожданный момент, сегодня AMD анонсирует почти полноценную линейку. «Почти» потому что без самого быстрого решения для конкуренции в верхнем сегменте high-end, а акцент на слове «анонсирует» потому что видеокарты на новых чипах среднего и нижнего уровней будут доступны несколько позже, сегодня мы дадим о них только теоретические данные. Основным отличием чипов RV630 и RV610 от топового R600 является технология производства 65 нм, которая позволяет снизить себестоимость, важную для недорогих продуктов, и которая, вероятно, повлияла на сроки выхода соответствующих решений на рынок.
Перед прочтением материала мы традиционно рекомендуем внимательно ознакомиться с базовыми теоретическими материалами DX Current, DX Next и Longhorn, описывающими различные аспекты современных аппаратных ускорителей графики и архитектурные особенности продукции Nvidia и ATI(AMD). Эти материалы достаточно точно спрогнозировали текущую ситуацию с архитектурами видеочипов, оправдались многие предположения о будущих решениях.
- [06.06.05] Longhorn ускорители и шейдеры для DirectX 10
- [01.03.05] DirectX.Update Ускорители 3D-графики: полшага вперед
- [09.04.04] DX.Next: ближайшее и ближнее будущее аппаратного ускорения 3D-графики
- [22.09.03] Аппаратная графическая подсистема будущего
Для AMD(ATI) это уже второе поколение унифицированной архитектуры, если брать не только решения для ПК, ведь первый подобный видеочип от ATI был разработан специально для игровой консоли Microsoft Xbox 360. Все новые решения для ПК являются функционально идентичными, в отличие от решений Nvidia, вся линейка чипов AMD обладает одинаковыми возможностями и в 3D и в декодировании видеоданных. Итак, сегодня мы познакомимся с первыми DirectX 10 чипами компании AMD на базе унифицированной архитектуры R6xx.
Графический ускоритель RADEON HD 2900 XT
- Кодовое имя чипа R600
- Технология 80 нм
- ~700 миллионов транзисторов
- Унифицированная архитектура с массивом общих процессоров для потоковой обработки вершин и пикселей, а также других видов данных
- Аппаратная поддержка DirectX 10, в том числе и новой шейдерной модели Shader Model 4.0, генерации геометрии и записи промежуточных данных из шейдеров (stream output)
- 512-бит шина памяти, восемь контроллеров шириной 64 бита, соединенных шиной ring bus
- Частота ядра 750 МГц
- 320 скалярных ALU с плавающей точкой (целочисленные и плавающие форматы, поддержка FP32 точности в рамках стандарта IEEE 754)
- 4 текстурных блока, поддержка FP16 и FP32 компонент в текстурах
- 32 блока текстурной адресации (см. подробности)
- 80 блоков текстурной выборки (см. подробности)
- 16 блоков билинейной фильтрации с возможностью фильтрации FP16 текстур на полной скорости и поддержкой трилинейной и анизотропной фильтрации для всех текстурных форматов
- Возможность динамических ветвлений в пиксельных и вершинных шейдерах
- 16 блоков ROP с поддержкой режимов антиалиасинга с возможностью программируемой выборки более чем 16 сэмплов на пиксель, в том числе при FP16 или FP32 формате буфера кадра. Пиковая производительность до 16 отсчетов за такт, в режиме без цвета (Z only) 32 отсчета за такт
- Запись результатов до 8 буферов кадра одновременно (MRT)
- Интегрированная поддержка двух RAMDAC, двух портов Dual Link DVI, HDMI (со звуком), HDTV
Спецификации референсной карты RADEON HD 2900 XT
- Частота ядра 750 МГц
- Количество универсальных процессоров 320
- Количество текстурных блоков 16, блоков блендинга 16
- Эффективная частота памяти 1650 МГц (2*825 МГц)
- Тип памяти GDDR3
- Объем памяти 512 мегабайт
- Пропускная способность памяти 106 гигабайт в сек.
- Теоретическая максимальная скорость закраски 12.0 гигапикселя в сек.
- Теоретическая скорость выборки текстур 12.0 гигатекселя в сек.
- CrossFire разъем
- Шина PCI-Express 16х
- Два DVI-I Dual Link разъема, поддерживается вывод в разрешениях до 2560х1600
- TV-Out, HDTV-Out, поддержка HDCP, HDMI адаптер
- Энергопотребление до 215 Вт
- Рекомендуемая цена $399
Графические ускорители RADEON HD 2600 PRO и HD 2600 XT
- Кодовое имя чипа RV630
- Технология 65 нм
- 390 миллионов транзисторов
- Унифицированная архитектура с массивом общих процессоров для потоковой обработки вершин и пикселей, а также других видов данных
- Аппаратная поддержка DirectX 10, в том числе и новой шейдерной модели Shader Model 4.0, генерации геометрии и записи промежуточных данных из шейдеров (stream output)
- 128-бит шина памяти, два контроллера шириной 64 бита
- Частота ядра 600-800 МГц
- 120 скалярных ALU с плавающей точкой (целочисленные и плавающие форматы, поддержка FP32 точности в рамках стандарта IEEE 754)
- 2 текстурных блока, поддержка FP16 и FP32 компонент в текстурах
- 16 блоков текстурной адресации (см. подробности)
- 40 блоков текстурной выборки (см. подробности)
- 8 блоков билинейной фильтрации с возможностью фильтрации FP16 текстур на полной скорости и поддержкой трилинейной и анизотропной фильтрации для всех текстурных форматов
- Возможность динамических ветвлений в пиксельных и вершинных шейдерах
- 4 блока ROP с поддержкой режимов антиалиасинга с возможностью программируемой выборки более чем 16 сэмплов на пиксель, в том числе при FP16 или FP32 формате буфера кадра. Пиковая производительность до 4 отсчетов за такт, в режиме без цвета (Z only) 8 отсчетов за такт
- Запись результатов до 8 буферов кадра одновременно (MRT)
- Интегрированная поддержка двух RAMDAC, двух портов Dual Link DVI, HDMI, HDTV
Спецификации карты RADEON HD 2600 XT
- Частота ядра 800 МГц
- Количество универсальных процессоров 120
- Количество текстурных блоков 8, блоков блендинга 4
- Эффективная частота памяти 2200 МГц (2*1100 МГц)
- Тип памяти GDDR3/GDDR4
- Объем памяти 256 мегабайт
- Пропускная способность памяти ~35 гигабайт в сек.
- Теоретическая максимальная скорость закраски 3.2 гигапикселя в сек.
- Теоретическая скорость выборки текстур 6.4 гигатекселя в сек.
- CrossFire разъем
- Шина PCI-Express 16х
- Два DVI-I Dual Link разъема, поддерживается вывод в разрешениях до 2560х1600
- TV-Out, HDTV-Out, поддержка HDCP, HDMI адаптер
- Энергопотребление около 45 Вт
- Рекомендуемая цена $199
Спецификации карты RADEON HD 2600 PRO
- Частота ядра 600 МГц
- Количество универсальных процессоров 120
- Количество текстурных блоков 8, блоков блендинга 4
- Эффективная частота памяти 800 МГц (2*400 МГц)
- Тип памяти DDR2/GDDR3
- Объем памяти 256 мегабайт
- Пропускная способность памяти ~13 гигабайт в сек.
- Теоретическая максимальная скорость закраски 2.4 гигапикселя в сек.
- Теоретическая скорость выборки текстур 4.8 гигатекселя в сек.
- CrossFire разъем
- Шина PCI-Express 16х
- Два DVI-I Dual Link разъема, поддерживается вывод в разрешениях до 2560х1600
- TV-Out, HDTV-Out, поддержка HDCP, HDMI адаптер
- Энергопотребление менее 45 Вт
- Рекомендуемая цена $99
Графические ускорители RADEON HD 2400 PRO и HD 2400 XT
- Кодовое имя чипа RV610
- Технология 65 нм
- 180 миллионов транзисторов
- Унифицированная архитектура с массивом общих процессоров для потоковой обработки вершин и пикселей, а также других видов данных
- Аппаратная поддержка DirectX 10, в том числе и новой шейдерной модели Shader Model 4.0, генерации геометрии и записи промежуточных данных из шейдеров (stream output)
- 64-бит шина памяти, один контроллер шириной 64 бита
- Частота ядра 525-700 МГц
- 40 скалярных ALU с плавающей точкой (целочисленные и плавающие форматы, поддержка FP32 точности в рамках стандарта IEEE 754)
- 1 текстурный блок, поддержка FP16 и FP32 компонент в текстурах
- 8 блоков текстурной адресации (см. подробности)
- 20 блоков текстурной выборки (см. подробности)
- 4 блока билинейной фильтрации с возможностью фильтрации FP16 текстур на полной скорости и поддержкой трилинейной и анизотропной фильтрации для всех текстурных форматов
- Возможность динамических ветвлений в пиксельных и вершинных шейдерах
- 4 блока ROP с поддержкой режимов антиалиасинга с возможностью программируемой выборки более чем 16 сэмплов на пиксель, в том числе при FP16 или FP32 формате буфера кадра. Пиковая производительность до 4 отсчетов за такт, в режиме без цвета (Z only) 8 отсчетов за такт
- Запись результатов до 8 буферов кадра одновременно (MRT)
- Интегрированная поддержка двух RAMDAC, двух портов Dual Link DVI, HDMI, HDTV
Спецификации карты RADEON HD 2400 XT
- Частота ядра 700 МГц
- Количество универсальных процессоров 40
- Количество текстурных блоков 4, блоков блендинга 4
- Эффективная частота памяти 1600 МГц (2*800 МГц)
- Тип памяти GDDR3
- Объем памяти 256 мегабайт
- Пропускная способность памяти ~13 гигабайт в сек.
- Теоретическая максимальная скорость закраски 2.8 гигапикселя в сек.
- Теоретическая скорость выборки текстур 2.8 гигатекселя в сек.
- Шина PCI-Express 16х
- Один DVI-I Dual Link разъем, поддерживается вывод в разрешениях до 2560х1600
- TV-Out, HDTV-Out, поддержка HDCP, HDMI адаптер
- Энергопотребление около 25 Вт
- Рекомендуемая цена <$99
Спецификации карты RADEON HD 2400 PRO
- Частота ядра 525 МГц
- Количество универсальных процессоров 40
- Количество текстурных блоков 4, блоков блендинга 4
- Эффективная частота памяти 800 МГц (2*400 МГц)
- Тип памяти DDR2
- Объем памяти 128/256 мегабайт
- Пропускная способность памяти 6.4 гигабайт в сек.
- Теоретическая максимальная скорость закраски 2.1 гигапикселя в сек.
- Теоретическая скорость выборки текстур 2.1 гигатекселя в сек.
- Шина PCI-Express 16х
- Один DVI-I Dual Link разъем, поддерживается вывод в разрешениях до 2560х1600
- TV-Out, HDTV-Out, поддержка HDCP, HDMI адаптер
- Энергопотребление менее 25 Вт
- Рекомендуемая цена <$99
Главные особенности верхнего решения R600: около 700 миллионов транзисторов, 512-битная шина памяти, 320 потоковых процессоров, программируемый аппаратный тесселятор, улучшенная поддержка декодирования видео Avivo HD, «родная» поддержка CrossFire. Архитектура новых чипов унифицированная, все они обладают полноценной поддержкой DirectX 10 и даже больше некоторых возможностей, которые появятся в следующих версиях этого API.
Судя по срокам анонсов, AMD должна первой выйти на рынок с решениями среднего и нижнего уровней, чипы которых выполнены по 65 нм технологическим нормам. Это важно по многим причинам, технологический процесс 65 нм дает несколько преимуществ. Он позволит добиться большей плотности (меньшего размера ядра или большего количества транзисторов при неизменной площади). Это должно увеличить частотный потенциал чипов и процент выхода годных на высоких тактовых частотах, снизив себестоимость производства уже в ближайшем будущем. И, наконец, новые mid-end и low-end чипы AMD будут потреблять значительно меньшее количество энергии, и, соответственно, выделять меньше тепла, что увеличит их привлекательность в глазах потенциальных пользователей, и также может сказаться на себестоимости производства.
Архитектура
Архитектура R6xx сочетает в себе некоторые решения из предыдущих: R5xx и Xenos (видеочипа консоли Microsoft Xbox 360), дополняя их различными нововведениями: более мощным диспетчером потоков, суперскалярной архитектурой шейдерных процессоров с выделенными блоками ветвления, обновленной 512-битной шиной ring bus. Вот так выглядит архитектура топового чипа R600:
На схеме видно, что основной вычислительной мощью являются 64 суперскалярных потоковых процессора, каждый из которых содержит по 5 ALU и выделенному блоку выполнения ветвлений. AMD предпочитает указывать их количество в целом как 320 потоковых процессора. Все мы знаем, как любят производители указывать большие цифры, вот и пиковую производительность они насчитали 475 GigaFLOPS для одиночного R600. Вряд ли эта цифра достижима в реальных алгоритмах.
Диспетчер потоков (Ultra-Threaded Dispatch Processor) управляет выполнением потоков на исполнительных блоках, именно он решает, какой работой будет заниматься тот или иной блок в зависимости от потребностей и приоритетов. Новый диспетчер потоков, реализованный в R6xx, способен обслуживать тысячи потоков одновременно, вот его подробная схема:
Из других изменений, по сравнению с предыдущими поколениями чипов, можно привести командный процессор (Command Processor), который служит для обработки команд видеодрайвера. Он выполняет микрокод, разгружая центральный процессор, увеличивая производительность в условиях большого количества вызовов функций отрисовки с малым количеством обрабатываемой геометрии (известная проблема small batch в Direct3D). Заявлено, что эффект от командного процессора есть в Direct3D 9 и Direct3D 10 приложениях. Теоретически, снижение потерь времени на разнообразные проверки может вызвать выигрыш до 30%, но реальные цифры ускорения, конечно же, будут значительно меньшими.
Похоже, что новая архитектура хорошо масштабируется в обе стороны, что мы и видим на примере low-end и mid-end решений. Схемы чипов RV630 и RV610 выглядят так:
Хорошо видно, что RV630 отличается от R600 только количеством разнообразных блоков: ALU, ROP, TMU, во всем остальном он повторяет старшего брата. Вот у RV610 отличий больше, они не только количественные (блоков ALU и TMU стало еще меньше), но и качественные: нет иерархического Z-буфера, нет второго уровня текстурного кэша, а единственный уровень совмещает кэширование вершинных и пиксельных данных. Основные количественные изменения: число шейдерных процессоров снижено до 24 (120 процессоров) у RV630 и до 8 (40 процессоров) у RV610, число блоков текстурирования до 8 и 4, соответственно, а блоков ROP у младших чипов по четыре у каждого. Естественно, всё это сделано в угоду меньшему числу транзисторов и скажется на производительности. Этот вопрос мы рассмотрим в будущем материале, посвященном новым решениям AMD среднего и нижнего уровней.
Интересно, как в реальных приложениях будет балансироваться нагрузка между исполнением вершинных, пиксельных и геометрических шейдеров, ведь при использовании унифицированной архитектуры нужно думать об эффективном распределении общей мощности потоковых процессоров между разными типами шейдеров. Так, при ограничении производительности пиксельными расчётами, увеличение нагрузки на вершинные блоки в традиционной архитектуре не приводит к падению производительности, а в унифицированной вызовет изменение баланса и уменьшение количества ресурсов, свободных для пиксельных расчетов.
Шейдерные процессоры (ALU)
Уже в прошлом поколении своих чипов ATI сделала решение, отличающееся от того, что было общепринято ранее и использовалось компанией Nvidia, в R580 реализовали 48 исполнительных шейдерных блоков и 16 блоков текстурирования, тогда как в G70 было 24 блоков TMU и пиксельных процессоров и 16 блоков ROP. Вообще говоря, подобная разница в подходе стала очевидной еще со времени выхода чипов RV530 и RV560, в которых было подобное же соотношение TMU и шейдерных процессоров. Nvidia традиционно уделяет чуть больше внимания текстурированию и скорости заполнения, а AMD(ATI) операциям над пикселями и вершинами.
Итак, если в предыдущих решениях ATI шейдерные процессоры содержали векторные и скалярные исполнительные блоки, которые могли выполнять по две инструкции за такт над 3+1 или 4+1 компонентами, то теперь каждый процессор из 64 может выполнять по 5 инструкций над 5 компонентами. Каждый потоковый процессор состоит из пяти независимых скалярных ALU, которые могут выполнить пять MAD (Multiply-Add) инструкций за такт, а один из пяти ALU способен выполнить более сложную инструкцию: SIN, COS, LOG, EXP и др. Отдельным блоком в процессоре является блок ветвлений и условных переходов, освобождающий основные ALU от этих задач и нивелирующий потери от переходов на ветвящемся коде шейдера.
По функциональности ALU у R6xx стандартны для DirectX 10 решений, точность всех расчетов составляет FP32, есть поддержка вычислений в новых целочисленных форматах, при реализации соблюден стандарт IEEE 754, важный для научных, статистических, экономических и других вычислений.
Число таких исполнительных блоков в R600 очень велико, но при сравнении с конкурирующим решением от Nvidia нужно учитывать удвоенную частоту шейдерных процессоров у последнего. Осторожно нужно относиться и к сравнению скалярной и суперскалярной архитектур, у обеих есть как слабые, так и сильные стороны. Так, суперскалярная отличается тем, что каждый блок может обрабатывать сразу по несколько независимых инструкций (до пяти математических и одну инструкцию ветвления в нашем случае) за один такт.
Но слабая сторона такой архитектуры в том, что приложение и драйвер должны выдавать ей постоянно как можно больше независимых инструкций, чтобы блоки не простаивали и КПД был высоким. У скалярной архитектуры такого ограничения нет, она более гибкая, её КПД всегда будет выше, так как 3D приложения используют разные комбинации команд, многие из которых зависят от выполнения предыдущих, и набирать по 4-5 независимых не так уж просто. Для повышения эффективности суперскалярной архитектуры нужен качественный оптимизирующий рекомпилятор шейдеров и оптимизации со стороны приложений. Ярким примером в данном случае является суперскалярная архитектура NV3x, которой рекомпилятор и оптимизации очень сильно помогали. Конечно, у R6xx нет таких явных узких мест, как у NV3x, но это не избавляет архитектуру от полезности оптимизаций.
Вообще, сравнивать настолько разные современные архитектуры только по количеству исполнительных блоков неправильно. Нужно пользоваться исключительно анализом результатов синтетических и игровых тестов, чётко понимая, что они значат, и какие блоки в каком тесте служат ограничителем производительности. А все эти большие цифры важны скорее для маркетинга, чем для определения реальной скорости.
Текстурные блоки (TMU)
Текстурные блоки (точнее, блоки выборки текстурных и вершинных данных в унифицированных чипах) в архитектуре R6xx используются новые, они полностью отделены от потоковых процессоров, что позволяет начинать выборку данных еще до того, как они запрошены шейдерным блоком (ведь всем управляет диспетчер потоков, он и может дать упреждающее задание), что теоретически может повысить производительность. Текстурные модули R6xx, на примере старшего чипа R600, имеют следующую конфигурацию:
Всего имеется четыре текстурных блока, каждый из которых состоит из: 8 блоков адресации (всего в чипе 32), 20 блоков выборки (всего в чипе 80), 4 блоков фильтрации (всего в чипе 16). Выборка вершин и текстур обычно выполняется отдельно, часть блоков адресации и выборки у TMU предназначена для вершин (на схеме они не соединены с блоками фильтрации) или для нефильтруемых текстур.
4 блока адресации и 4 блока выборки в каждом из TMU относятся к вершинным выборкам, которые не нуждаются в блоках фильтрации, а оставшиеся 4 блока адресации, 16 блоков выборки и 4 блока фильтрации к текстурным, для которых и нужна фильтрация. То есть, 64 из 80 блоков выборки выбирают 16 пикселей для 16 блоков фильтрации, а оставшиеся 16 выбирают данные вершин (или текстур без фильтрации). Пользуясь тем, что TMU блоки у R6xx полностью отделены от ALU, за один такт они могут выбирать и вершины и пиксели.
Каждый блок выборки может выбирать одно значение за такт, а блок текстурной фильтрации фильтровать по одному 64-битному значению за такт или по одному 128-битному каждые два такта. Из-за указанных выше деталей реализации блоков, для каждого из них возможна выборка до двух текселей за такт, если для одного из них не требуется фильтрация.
Как видно на схеме, для текстурных выборок используется двухуровневая реализация кэш-памяти. Текстурные кэши второго уровня, указанные на диаграмме, имеют следующие размеры: 256 Кбайт у R600, 128 Кбайт у RV630, а на RV610 используется один уровень кэша, общий для вершинных и текстурных данных. Заявлено, что вершинный кэш R600 увеличен в восемь раз, по сравнению с применяемым в R580. Это решение обосновано тем, что производительность универсальных процессоров позволяет обрабатывать данные в несколько раз быстрее, по сравнению с выделенными блоками геометрических шейдеров в предыдущих архитектурах.
Текстурные блоки в чипах R6xx усовершенствованы, одно из главных достоинств в том, что они могут выбирать и билинейно фильтровать FP16 текстуры на той же скорости, что и 32-битные, а FP32 на половинной, то есть, как и на G80. Поддерживаются новые 32-битные HDR форматы текстур, которые появились в DirectX 10, декларируется поддержка трилинейной и анизотропной фильтраций для всех поддерживаемых текстурных форматов. Максимальное разрешение текстур стало 8192x8192 (как и у G80), представители компании говорят об улучшенном качестве текстурной фильтрации, которое мы проверим в одной из следующих частей этой статьи. Кстати, в материалах AMD не говорится о бесплатной трилинейной фильтрации, так что, скорее всего, она снижает пиковую производительность TMU, как во всех чипах, кроме G80.
Текстурные блоки в RV630 и RV610 имеют точно такую же функциональность, что и блоки верхнего решения линейки (за исключением реализации кэша в RV610), но меньшее их количество. Как раз в количестве TMU видится и одна из потенциальных слабых сторон нового семейства чипов. Высокая вычислительная производительность это очень хорошо, конечно, но ведь она сама по себе нужна разве что для неграфических расчетов. А для 3D графики до сих пор очень важна скорость выборки из текстур и скорость их фильтрации. Современные игры используют не только сложные пиксельные и вершинные расчеты, они еще и накладывают по несколько текстур на пиксель: основные текстуры, specular текстуры, карты нормалей, карты высот, кубические карты отражений и преломлений и др. И вполне возможно, что 16-ти текстурных блоков такому мощному чипу, как R600, будет недостаточно, чтобы раскрыть даже свой расчетный потенциал. Мы проверим это далее в синтетических и игровых тестах.
Блоки записи в буфер кадра (ROP)
Блоки ROP в R6xx претерпели не так уж много изменений по сравнению с предыдущими чипами. В R600 их четыре, каждый из которых записывает по четыре пикселя, всего получается 16 обрабатываемых и записываемых пикселей в буфер кадра. У RV630 и RV610 по одному блоку ROP и всего по четыре записываемых пикселя. Блоками ROP поддерживается двойная производительность при записи данных без цвета, то есть 32 пикселя для R600 и 8 для RV610/RV630, соответственно. Возможно использование до восьми MRT (буферов рендеринга) с поддержкой мультисэмплинга, это требование DirectX 10 и других цифр здесь ждать не приходится. Конечно же, есть полноценная поддержка рендеринга в FP16 и FP32 форматы буфера кадров, включая антиалиасинг.
Из интересных нововведений в реализации блоков ROP отметим, что компанией AMD декларируются улучшения в сжатии Z и stencil буферов, до 16:1 против 8:1 у предыдущих решений, и до 128:1 при MSAA с количеством сэмплов 8x. Данные Z и stencil буферов сжимаются отдельно друг от друга, что должно увеличить эффективность компрессии. Также традиционно увеличен порог разрешения, при котором работает сжатие, если раньше значение было ограничено пятью мегапикселями, то теперь граница явно не указывается. Сделано и множество оптимизаций по работе с Z буфером, большая часть которых направлена на ускорение стенсильных теней в распространенных приложениях (DOOM 3, F.E.A.R., Unreal Engine 3 и др.), производительность R600 в которых мы проверим в нашей статье.
Новые режимы антиалиасинга
Чипами R6xx поддерживается мультисэмплинг с максимальным количеством выборок, равным восьми. Чтобы не отставать от конкурентов, которые сделали хитрый ход с CSAA, были введены новые режимы с количеством сэмплов до 24 штук, названные Custom Filter Anti-Aliasing (CFAA). Это специальные режимы постобработки, направленные на дальнейшее улучшение качества антиалиасинга, с программируемым расположением субпикселей, выборкой вне границ пикселей, и разными весами для выборок.
В зависимости от выбранного режима, методом CFAA выбирается от четырех до восьми соседних сэмплов вне пикселя. Несмотря на то, что вес этих выборок меньше, чем у внутренних, метод всё равно будет вызывать размытие всей картинки. И чем больше выборок вне пикселя, тем больше размоется изображение. Одним из основных преимуществ такого подхода является улучшение качества антиалиасинга при помощи обновлений драйвера, кроме того, возможность управления мультисэмплингом появится у разработчиков приложений в следующих версиях DirectX. Естественно, что все ранее введенные возможности: адаптивный антиалиасинг, temporal antialiasing, гамма-коррекция для MSAA и другие также поддерживаются новыми чипами.
Самый главный недостаток подхода CFAA в том, что дополнительные выборки за границами пикселя могут снижать итоговое качество картинки. Вспомните специальный режим антиалиасинга у Nvidia под названием Quincunx, он тоже использовал выборку вне пикселя и снижал четкость картинки, за что не был любим основной массой пользователей. У AMD подход, конечно же, более гибкий, выборкам вне пикселя будет даваться меньший вес, чем внутренним, но размазывания картинки не избежать всё равно. Будет ли это помехой для притязательного глаза мы рассмотрим в разделе статьи, посвященному качеству рендеринга.
С нашей точки зрения, гораздо более интересно еще одно нововведение в антиалиасинге R6xx, которое пока что не доработано в текущих драйверах антиалиасинг с применением адаптивного фильтра edge detect. При этом методе производится проход фильтра edge detection по отрендеренному изображению, для определенных фильтром пикселей с высокими частотами (границы полигонов и резкие переходы на некоторых текстурах, которые обычно и нуждаются в сглаживании) используется более качественный метод антиалиасинга с большим количеством сэмплов, а для остальных с меньшим. Этот подход похож на тот, что применялся в методе антиалиасинга FAA видеокартой Matrox Parhelia и интересен тем, что теоретически должен показывать отличные результаты, как по качеству сглаживания, так и по производительности, ведь он работает больше именно там, где это нужно, снижает текстурный шум и вместе с тем не должен ухудшать детализацию. Но это теория, а практику мы рассмотрим в разделе качества.
512-битная шина памяти ring bus
Одним из несомненных преимуществ чипа R600 является 512-битная шина памяти ring bus, это первый видеочип с поддержкой 512-битного доступа к видеопамяти. Теперь шина ring bus включает восемь 64-битных каналов, соединенных внутренней 1024-битной шиной (два направления по 512-бит), центральный хаб отсутствует. Решение хорошо масштабируется и обеспечивает очень высокую эффективную пропускную способность. Для первых видеокарт на базе R600 она составляет более 100 Гбайт/с при условии обычной и не самой быстрой GDDR3 памяти. В будущих решениях это значение может вырасти ещё, ведь контроллер поддерживает быструю GDDR4 память.
Представители AMD уверяют, что в реализации ring bus были проведены изменения, направленные на дальнейшее увеличение её эффективности. Конечно, таких цифр можно добиться и с 384-битной шиной, что сделала Nvidia в своей Geforce 8800 Ultra, но для этого нужна гораздо более дорогая и редкая память. С другой стороны, у 512-битности есть и недостаток сложность PCB увеличивается, как и стоимость остальных производственных работ по сборке плат. Зато большая пропускная способность обязательно скажется в высоких разрешениях, при больших уровнях антиалиасинга и HDR рендеринге. Именно в таких режимах можно ожидать большого преимущества от RADEON HD 2900 XT по сравнению с конкурирующими решениями Nvidia.
Программируемый блок тесселяции
Наследственность R6xx в виде консольного чипа Xenos сказалась в том, что все решения серии RADEON HD 2000 содержат программируемый блок тесселяции, новый для ПК. Базовые теоретические данные по тесселяции вы можете прочитать в статьях:
Тесселяция используется для увеличения геометрической сложности моделей, когда из низкополигональной получается более сложная. Использование тесселяции может снизить затраты на анимацию, с небольшими затратами производительности увеличить детализацию моделей, улучшить алгоритмы уровня детализации (LOD). Полностью аппаратное решение позволяет разработчикам посылать в GPU данные с меньшей детализацией, затем видеочипом тесселировать их до нужной сложности и выполнять смещение вершин при помощи специальных текстур (displacement mapping, см. по ссылке выше). Это снижает нагрузку на центральный процессор и уменьшает количество данных, передаваемых по шинам.
Разбиение поверхностей (тесселяция) не имеет единственного алгоритма, оно может выполняться по нескольким правилам. Есть несколько типов поверхностей высокого уровня (higher order surfaces): Bezier, N-Patches, B-Spline, NURBs, subdivision surfaces, которые могут разбиваться на полигоны видеочипом. И, так как тесселятор в R6xx программируемый, его можно использовать для разных алгоритмов, что дает большую гибкость и контроль 3D разработчикам. AMD дает такую схему работы конвейера:
Заявлено, что для использования тесселятора в R6xx не нужно новых типов шейдеров в API, что необходимый вершинный шейдер пишется самими разработчиками. Немного непонятно, каким образом в обычном вершинном шейдере выполнять тесселяцию, но главное, чтобы это знали игровые разработчики.
Преимущества, которые можно получить при использовании возможностей программируемого тесселятора, достаточно велики. Тесселяция поможет увеличить геометрическую детализацию сцены без большого увеличения нагрузки на шины и центральный процессор системы, тесселяция особенно эффективна в сочетании с displacement mapping. Но это всё в теории, практика обычно не такая радужная. Есть вопросы о том, каким образом можно использовать возможности тесселятора в разнообразных API (Direct3D 9, Direct3D 10, OpenGL), но самый важный вопрос в том, будут ли разработчиками использоваться возможности чипов одного из двух вендоров? Понятно, что портированным играм с Xbox 360, которые на родной платформе используют тесселяцию, это может быть полезно, но как быть с остальными видеокартами?
Улучшенная поддержка CrossFire
В описании особенностей новых решений компании AMD необходимо упомянуть и улучшенную поддержку CrossFire, все новые чипы не требуют использования специальных мастер-карт. Наконец-то, начиная с этой линейки, в чипах для всех ценовых диапазонов встроена «родная» поддержка CrossFire. Как и в случае с картами на базе чипов RV570, можно будет объединять обычные платы при помощи мостиков, похожих на те, что давно используются для Nvidia SLI.
Новыми чипами поддерживаются все те же старые знакомые режимы рендеринга: Alternate Frame Rendering, SuperTile, Scissor, SuperAA. Максимально возможное разрешение в режимах CrossFire 2560x2048 при частоте обновления 60 Гц. Самое любопытное в описании обновленного CrossFire в том, что там уже заявлена поддержка более чем двух чипов, одновременно работающих над рендерингом одной картинки. С удовольствием протестируем таковую, когда у нас появится подобная возможность.
ATI Avivo HD
Что касается мультимедийных возможностей новых видеочипов, то и здесь не обошлось без изменений в лучшую сторону. Все чипы серии R6xx содержат специализированные блоки: UVD (Universal Video Decoder универсальный видеодекодер) и AVP (Advanced Video Processor видеопроцессор). Технология ATI Avivo никуда не исчезла, как и PureVideo у основного конкурента, она развивается и расширяется, получив модную приставку ATI Avivo HD.
Прошлое поколение видеочипов способно ускорять лишь часть этапов декодирования видео, оставляя самые затратные части для центрального процессора. В новом поколении чипов внедрен выделенный блок для декодирования видео (UVD), который выполняет всю основную работу: аппаратное статистическое декодирование VLC/CAVLC/CABAC, iDCT, компенсацию движения и деблокинг (удаление артефактов блочности), разгружая и CPU и 3D конвейер видеочипа. Последнее особенно важно для Windows Vista, которая использует 3D возможности видеокарт для отрисовки интерфейса Aero.
Всё семейство новых чипов поддерживает обновленную технологию, они обеспечивают полностью аппаратное ускорение декодирования требовательных к ресурсам видео форматов H.264 и VC-1 с максимально высоким битрейтом, которые являются одними из основных для дисков форматов Blu-ray и HD-DVD. Поддержка аппаратного декодирования видео расширена при помощи указанных новых блоков, которые отличаются от предыдущих поколений Avivo аппаратным выполнением функций статистического декодирования, особенно важных для современных видеоформатов. Новая технология ATI Avivo HD позволяет декодировать все указанные форматы с разрешением до 1920x1080 и битрейтами до 30-40 Мбит/с, и всё необходимое для этого поддерживается всеми видеочипами линейки.
При сравнении возможностей своих чипов с конкурирующими, AMD приводит такую таблицу:
Утверждается, что в отличие от аналогичных блоков обработки видео в чипах Nvidia G84 и G86, решениями AMD поддерживается аппаратное статистическое декодирование для формата VC-1. Компания приводит примерно такие же цифры загрузки процессора, что и Nvidia ранее, по их данным, при декодировании HD DVD диска полностью программным методом, современный двухъядерный процессор будет загружен работой примерно на 80%, с аппаратным ускорением на чипах предыдущего поколения на 60-70%, ну а полностью аппаратное решение с UVD обеспечивает загрузку CPU всего лишь чуть больше 10%, что позволяет воспроизводить все существующие диски даже на средних по мощности ПК. В соответствующих материалах мы постараемся проверить это, а пока остается поверить на слово.
Неграфические расчеты
Огромная производительность математических расчетов с плавающей запятой у современных видеоускорителей и гибкость унифицированных архитектур дали толчок применениям GPU в расчетах физики в игровых приложениях и более серьезных задачах: математического и физического моделирования, экономических и статистических моделей и расчетов, распознавания образов, обработки изображений, научной графики и др.
Поэтому в последнее время всеми производителями GPU уделяется много внимания неграфическим расчетам на видеокартах. На базе чипов прошлого поколения ATI(AMD) выпустила специализированные карты на основе RADEON X1900 (Stream Processor) с чипом R580 и гигабайтом GDDR3 памяти. Новые чипы, конечно же, обладают всем необходимым для создания таких продуктов, ещё большая мощь по расчетам с плавающей запятой которых может использоваться в большом количестве применений: физические расчеты в играх, обработка медиаданных (например, перекодирование из одного формата в другой, захват и кодирование видео высокого разрешения) и изображений, распознавание речи и изображений, медицинские задачи (виртуальная эндоскопия, интерактивная визуализация), метеорология, динамика жидкостей и газов и многое другое.
Вероятно, через некоторое время после анонса графических карт серии RADEON HD 2000, последует запуск новых продуктов категории «Stream Processor» на базе R600 с поддержкой вычислений с плавающей запятой и целочисленных вычислений, появившихся в новой архитектуре, которые будут использовать значительно увеличенную мощь 320 потоковых процессоров. Неполный список нововведений, появившихся в чипах серии R6xx, важных для неграфических расчетов: целочисленные операции, поддержка текстур размером до 8192x8192 пикселей, неограниченная длина шейдера, неограниченная память для регистров, специальный командный процессор для снижения потерь времени на проверку правильности вызовов и состояний.
В небольшом отступлении мы в очередной раз посетуем на то, что реальных примеров физических вычислений в играх, переложенных на GPU, мы так до сих пор и не увидели. Даже не хочется в очередной раз приводить картинки, предоставленные производителями видеочипов, ведь для обычных пользователей так ничего и не изменилось никакого толка от GPU в неграфических расчетах в современных играх нет, к сожалению.
Поддержка HDMI и других внешних интерфейсов
Одним из ожидаемых решений в серии HD 2000 стал встроенный аудиочип, нужный для поддержки передачи звука по HDMI. С применением решений на чипах R600, RV610 и RV630 необходимость во внешнем аудио и соответствующих соединительных кабелях отпадает, передавать аудиосигнал с интегрированной на системную плату или внешней звуковой карты не нужно. Да и сертификация Vista Premium требует, чтобы весь аудиотракт был интегрированным и HDCP-защищенным. Решение AMD поддерживает следующие 16-битные форматы PCM данных: 32 кГц, 44.1 кГц и 48 кГц, а также AC3 сжатые потоки, такие как Dolby Digital и DTS.
Передача видео- и аудиосигнала по одному HDMI разъему во многих случаях может быть удобным решением, нет нужды во множестве проводов, прекрасно заменяемых единственным. Интересно, что у карт серии HD 2000 нет установленных разъемов HDMI, только DVI. И для вывода HDMI сигнала в комплекте с ними поставляется специальный DVI-to-HDMI переходник, который используется и для передачи аудиоданных (ведь формат цифровой, его полосы пропускания хватит и на видео и на звук одновременно), чего не могут предложить обычные переходники. В свою очередь, новые переходники совместимы и с обычными DVI разъемами без вывода звука.
Эта новая возможность реально полезна, но не во всех случаях. Она скорее будет востребована для карт среднего и низшего уровней, которые можно устанавливать в маленькие и тихие баребоны, используемые в качестве медиацентров. Ведь нет смысла в покупке high-end видеокарты только лишь для просмотра видео на большом HDTV экране. Вполне вероятно, что именно из-за встроенного аудио, видеокарты RADEON HD 2400 и HD 2600 будут иметь определенный успех среди сборщиков подобных систем мультимедийных центров, так как эти решения предлагают отличные возможности по декодированию видео, а также передачу защищенных видео- и аудиоданных по одному HDMI разъему.
В отличие от Nvidia Geforce 8800, всеми новыми решениями AMD поддерживаются Dual-Link DVI выходы с одновременной поддержкой HDCP, аналогично Geforce 8600 GTS, которая стала первой видеокартой с подобными возможностями. На старших картах устанавливается по два DVI выхода, к которым прилагаются соответствующие специальные DVI-to-HDMI переходники, а для младших используется консервативное решение один D-Sub и один DVI разъем.
Далее будет практическая часть исследования, в которой мы узнаем, как производительность чипа R600 соотносится со скоростью конкурирующего решения от Nvidia. К сожалению, тестов RV610 и RV630 пока не будет, и узнать, как сильно скажется «урезание» количества исполнительных блоков на производительности этих решений, мы пока что не сможем.