NVIDIA GeForce 6800 Ultra (NV40)
Часть 1 — особенности архитектуры и синтетические тесты в D3D RightMark
И вот новая архитектура перед нами:
работа над ошибками прошлого и
одновременно уверенный задел
на будущее. В какой степени?
Сегодня мы исследуем оба аспекта.

СОДЕРЖАНИЕ
- Официальные спецификации
- Архитектура
- 2D и видеопроцессор
- Особенности видеокарты
- Синтетические тесты в D3D RightMark
- Качество трилинейной фильтрации и анизотропии
- Выводы
Синтетические тесты D3D RightMark
Использованная нами версия пакета синтетических тестов D3D RightMark Beta 4 (1050) и ее описание доступна на сайте 3d.rightmark.orgКонфигурации тестовых стендов:
- Компьютер на базе Pentium 4 3200 MHz:
- процессор Intel Pentium 4 3200 МГц;
- системная плата ASUS P4C800 Delux (i875P);
- оперативная память 1024 MB DDR SDRAM;
- жесткий диск Seagate Barracuda IV 40GB;
- операционная система Windows XP SP1; DirectX 9.0b;
- мониторы
ViewSonic P810 (21") иMitsubishi Diamond Pro 2070SB (21"); - драйверы NVIDIA верии 60.72;
- драйверы ATI версии 6.436 (CATALYST 4.4).
Для начала исследуем соответствие заявленных характеристик (16 пикселей за такт, 16 TMU и т.д.) действительности. Итак :
Тест Pixel Filling
Пиковая производительность выборки текстур (texelrate), режим FFP, для разного числа текстур накладываемых на один пиксель:

Теоретический максимум NV40 в этом тесте 6.4 гигатекселов в секунду. В действительности мы почти достигли 6 гигатекселов, что однозначно свидетельствует о наличии 16 текстурных модулей. В случае одной текстуры результат чуть меньше чем в случае двух — видимо мы страдаем от недостаточной полосы пропускания буфера кадра, а далее на лицо плавная зависимость — с каждой новой текстурой скорость закраски постепенно падает. Скачков между четными и нечетными числами (как у NV38) свойственных конфигурациям с двумя TMU на пиксель нет, и наоборот, картина очень похожа на R360. Таким образом, можно сделать вывод о соответствии схемы 16х1 действительности. Интересно, что максимум достигается R360 на трех текстурах, а NV40 на двух — это говорит о более оптимальной работе последней с буфером кадра при закраске. Интересно, что по мере роста числа текстур NV38 догоняет старший чип — в случае четного числа текстур эффективность выборки NV38 близка к теоретическому пределу. Однако, мы помним, что в реальных задачах все не так просто — более слабый на выборке текстур R360 порою выигрывал у NV38 числом конвейеров и вычислительной мощью. Далее мы посмотрим как с этим обстоят дела у NV40.
А сейчас — скорость закраски буфера кадра (fillrate, pixelrate), режим FFP, для разного числа текстур накладываемых на один пиксель:

Итак, NV40 новый король горы. Пиковая скорость работы с буфером кадра (0 текстур –закраска цветом и одна текстура) вдвое выше, чем у R360 и в два с половиной раза выше, чем у NV38. Впрочем, на четном числе текстур (2 и более) этот чип реабилитирует себя. И, хотя теоретический предел 6.4 гигапикселя в секунду не достигнут, налицо возможность записывать 16 пикселей за такт. Итак, обрабатывается целых 4 квада (2х2) за один такт, т.е. 16 пикселей. Интересно, что с увеличением числа текстур скорость закраски падает быстрее, чем у предыдущего поколения — сказывается небольшая частота ядра и увеличение числа текстурных блоков вдвое, по сравнению с пикселями, число которых возросло вчетверо.
Посмотрим, как скорость закраски зависит от версии шейдеров:

та же картина что и в случае FFP,

Посмотрите на курьез судьбы, на родном детище ATI, шейдерах 1.4 ныне NVIDIA является четким лидером. Такова селяви.

Отлично, если NV38 в силу своих архитектурных тонкостей досадно замедлялся в этом тесте на пиксельных шейдерах 2.0 (дополнительные такты уходили на некоторые команды шейдеров 2.0 реализованные в NV38 как макросы) что делало более выгодным использование на NV38 шейдеров 1.4, чем 2.0 (вот парадокс — на R360 все наоборот, 2.0 производительнее 1.4). Теперь справедливость восстановлена, а просчеты исправлены — NV40 показывает себя ровно во всех версиях шейдеров. Отметим, что старичок R360 не так уж и плохо смотрится на фоне NV40.
Сводный график NV38 и NV40 для некоторого числа текстур, как доказательство успешной работы над ошибками:

Итак, вырисовывается следующая картина предпочтений:
Версия |
1.1 |
1.4 |
2.0 |
NV40 |
Оптимально |
Оптимально |
Оптимально |
NV38 |
Оптимально |
Оптимально |
Не оптимально |
R360 |
Оптимально |
Не оптимально |
Оптимально |
А теперь посмотрим, как текстурные модули справляются с кэшированием и билинейной фильтрацией реальных текстур различных размеров:

Приведены данные для разных размеров текстур, одна и две текстуры на пиксель. На размерах вплоть до 512х512 преимущество 16 текстурных модулей NV40 налицо. Результаты близки к теоретическому пределу. А далее, по мере роста размера текстур, все упирается в пропускную полосу памяти. Эффективность кэширования достойна похвал — на самом ходовом размере 128х128 мы достигаем более чем четырех гигатекселей. Посмотрим, как изменится картина в случае трилинейной фильтрации:

Вот это да! Здесь преимущество NV40 еще более заметно. Все правильно — больше текстурных блоков — больше результатов трилинейной фильтрации, кроме того, наличие мип уровней позволяет эффективно кэшировать данные текстур. А двукратное преимущество однозначно показывает, что в этом аспекте NV40 пока нет равных.
Напоследок предельный случай восьми трилинейно фильтруемых текстур:

Лишний раз показывает нам, что реализация выборки текстур — сильная сторона NVIDIA.
А теперь посмотрим на зависимость производительности текстурных модулей от формата текстур:

Больше размер:

Интересная картина. Почему R360 так выигрывает, даже у NV40 в случае больших размеров сжатых текстур? Ответ прост — в текстурном кэше NVIDIA хранятся уже распакованные текстуры, приведенные к формату 32 бита. В текстурном кэше ATI — все еще сжатые. С одной стороны эффективность выборки текстур NVIDIA будет выше — меньше простоев во время распаковки, меньше задержка, с другой стороны при большом размере текстур фактор занимаемого ими места может вывести ATI в лидеры — NV40 упрется в пропускную полосу памяти и даже 16 TMU его не спасут. Что собственно и происходит на втором графике. В реальных приложениях баланс может склониться как в ту, так и в иную сторону, в зависимости от шейдеров, числа и размера текстур и прочих параметров сцены.
Итак, в общем и целом, можно констатировать два факта:
- NV40 чемпион по закраске и выборке текстур, 16 пикселей за такт, 16 TMU, да и легендарная эффективность работы TMU и буфера кадра от NVIDIA по прежнему в силе.
- Досадные неравномерности поведения предыдущего поколения NVIDIA на пиксельных шейдерах 2.0 устранены.
Тест Geometry Processing Speed
Самый простой шейдер — предельная пропускная способность по треугольникам:

Почему результаты NV40 почти не превышают предыдущего поколения? Вопрос сложный. Судя по всему вершинные процессоры чипа просто не разворачиваются в полную силу на столь примитивной задаче. Проверим наше предположение далее, на более сложных задачах. А пока отметим, что характер зависимости скорости NV40 от версии шейдера очень точно повторяет NV38 — как мы уже предполагали, может оказаться, что в вершинных процессорах этих чипов много общего.
Более сложный шейдер — один простой точечный источник света:

Вот здесь преимущество NV40 уже начинает проявляться. Все верно, слишком короткий шейдер просто упирался в скорость работы буферов и механизма выборки вершин, а здесь у вершинного процессора NV40 появилась возможность поработать в плане вычислений и результат не замедлил сказаться. Интересно, что по-прежнему FFP является лучшим вариантом для NVIDIA и худшим для ATI — сказываются дополнительные аппаратные блоки для ускорения расчета освещения в рамках стандартных требований FFP.
Усложняем задачу далее:

Здесь FFP лидер даже в случае ATI — алгоритм FFP несколько проще того, что был использован в вершинном шейдере. Здесь NV40 явный лидер.
А теперь самая сложная задача, три источника света, причем, для сравнения в вариантах без переходов, со статическим и динамическим управлением исполнением:

Статические переходы заметно ударяют по чипам NVIDIA . Причем, характер падения одинаковый как в NV38, так и в NV40 — можно предположить, что их вершинные процессоры устроены в этом плане одинаково. Парадокс в том, что динамические переходы на чипах от NVIDIA выгоднее статических. В случае ATI все достаточно ровно.
Итак :
- FFP значительно быстрее на чипах NVIDIA, зачастую вдвое.
- Характер зависимости от типа шейдера одинаковые для NV38 и NV40 — видимо архитектура вершинных процессоров очень близка.
- Статические переходы на ускорителях NVIDIA исполняются не оптимально.
Тест Pixel Shaders
Первая группа шейдеров — достаточно простых для исполнения в реальном времени, 1.1, 1.4 и 2.0:

Что еще сказать — свершилось. Четкое преимущество NV40 и соответственно работа над ошибками NV38 налицо. Новая топология пиксельного процессора, новые ALU и текстурный модуль прекрасно справляются с различными версиями шейдеров.
Посмотрим, каков прирост при использовании 16 битной точности плавающих чисел:

Преимущество 16 битной точности для NV40 есть, в некоторых шейдерах больше, в некоторых меньше. И, что самое интересное, порой более заметное чем в случае NV38. Впрочем, здесь может играть роль компилятор — со временем, по мере его оптимизации, будет уменьшаеться число задействованных временных переменных и проходов карусели пиксельного процессора и, как следствие, разница может уменьшиться — FP32 подтянется к результатам FP16.
А теперь посмотрим на действительно сложные, « кинематографичные» шейдеры:

Здесь NV40 демонстрирует просто феноменальную производительность в несколько раз превышающую результаты предыдущего поколения. Есть где развернуться — десятки зависимых выборок текстур, множество временных переменных, сложный код. Вот почем разница 16 и 32 бит столь заметна.
На последок, исследуем зависимость скорости от использования арифметических или табличных методов вычисления sin, pow и нормализации векторов, отдельно для всех чипов:



Общая мораль такова :
- Лучше 16 бит, чем 32
- Лучше таблицы, чем арифметические вычисления для NVIDIA (эффективная выборка текстур)
- Лучше вычисления, чем таблицы для ATI (выборка текстур менее эффективна)
Итого, по пиксельным шейдерам :
- Производительность вне конкуренции, с печальным прошлым предыдущего поколения покончено.
- Наличие возможности динамического управления вычислениями не сказалось на производительности обычных шейдеров в худшую сторону.
- Исправлены слабые места, связанные с временными переменными, но все еще можно ждать прироста от компилятора в новых версиях драйверов — он пока не столь эффективен, как у NV38
Тест HSR
Для начала пиковая эффективность (без текстур и с текстурами) в зависимости от сложности геометрии:

Заметно, что ATI лучше переносит средние и сложные сцены — сказывается наличие двух уровней уменьшенных Z буферов (кроме базового). У NVIDIA традиционно один дополнительный уровень, поэтому эффективность HSR в случае оптимального баланса сцены (средняя сложность) несколько ниже. Кроме того, более эффективная закраска и текстурирование также снижает пиковую эффективность HSR (точнее уменьшается штраф за не отброшенные зоны).
Характер зависимости показывает, что алгоритм со времен NV38 не изменился. Зато абсолютные цифры существенно возросли:


Видно, что NV40 вне конкуренции, как минимум вдвое опережая других участников.
Вывод :
- Алгоритм HSR не претерпел серьезных изменений
- Но его общая производительность увеличилась, что нормально, учитывая большее число отправляемых на отрисовку (или отбрасываемых) за такт квадов.
Тест Point Sprites.


Я думаю, читателям не составит труда самим сделать выводы. Спрайты давно перестали быть популярным новшеством и зачастую проигрывают треугольникам по скорости вывода.
[ Предыдущая часть (2) ]
[ Следующая часть (4) ]
Дополнительно |
|