NVIDIA GeForce 6800 Ultra (NV40)

Часть 1 — особенности архитектуры и синтетические тесты в D3D RightMark

Ждали.
И вот новая архитектура перед нами:
работа над ошибками прошлого и
одновременно уверенный задел
на будущее. В какой степени?
Сегодня мы исследуем оба аспекта.




СОДЕРЖАНИЕ

  1. Официальные спецификации
  2. Архитектура
  3. 2D и видеопроцессор
  4. Особенности видеокарты
  5. Синтетические тесты в D3D RightMark
  6. Качество трилинейной фильтрации и анизотропии
  7. Выводы

Синтетические тесты 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 его не спасут. Что собственно и происходит на втором графике. В реальных приложениях баланс может склониться как в ту, так и в иную сторону, в зависимости от шейдеров, числа и размера текстур и прочих параметров сцены.

Итак, в общем и целом, можно констатировать два факта:

  1. NV40 чемпион по закраске и выборке текстур, 16 пикселей за такт, 16 TMU, да и легендарная эффективность работы TMU и буфера кадра от NVIDIA по прежнему в силе.
  2. Досадные неравномерности поведения предыдущего поколения NVIDIA на пиксельных шейдерах 2.0 устранены.

Тест Geometry Processing Speed

Самый простой шейдер — предельная пропускная способность по треугольникам:

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

Более сложный шейдер — один простой точечный источник света:

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

Усложняем задачу далее:

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

А теперь самая сложная задача, три источника света, причем, для сравнения в вариантах без переходов, со статическим и динамическим управлением исполнением:

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

Итак :

  1. FFP значительно быстрее на чипах NVIDIA, зачастую вдвое.
  2. Характер зависимости от типа шейдера одинаковые для NV38 и NV40 — видимо архитектура вершинных процессоров очень близка.
  3. Статические переходы на ускорителях NVIDIA исполняются не оптимально.

Тест Pixel Shaders

Первая группа шейдеров — достаточно простых для исполнения в реальном времени, 1.1, 1.4 и 2.0:

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

Посмотрим, каков прирост при использовании 16 битной точности плавающих чисел:

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

А теперь посмотрим на действительно сложные, « кинематографичные» шейдеры:

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

На последок, исследуем зависимость скорости от использования арифметических или табличных методов вычисления sin, pow и нормализации векторов, отдельно для всех чипов:



Общая мораль такова :

  1. Лучше 16 бит, чем 32
  2. Лучше таблицы, чем арифметические вычисления для NVIDIA (эффективная выборка текстур)
  3. Лучше вычисления, чем таблицы для ATI (выборка текстур менее эффективна)

Итого, по пиксельным шейдерам :

  1. Производительность вне конкуренции, с печальным прошлым предыдущего поколения покончено.
  2. Наличие возможности динамического управления вычислениями не сказалось на производительности обычных шейдеров в худшую сторону.
  3. Исправлены слабые места, связанные с временными переменными, но все еще можно ждать прироста от компилятора в новых версиях драйверов — он пока не столь эффективен, как у NV38

Тест HSR

Для начала пиковая эффективность (без текстур и с текстурами) в зависимости от сложности геометрии:

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

Характер зависимости показывает, что алгоритм со времен NV38 не изменился. Зато абсолютные цифры существенно возросли:


Видно, что NV40 вне конкуренции, как минимум вдвое опережая других участников.

Вывод :

  1. Алгоритм HSR не претерпел серьезных изменений
  2. Но его общая производительность увеличилась, что нормально, учитывая большее число отправляемых на отрисовку (или отбрасываемых) за такт квадов.

Тест Point Sprites.


Я думаю, читателям не составит труда самим сделать выводы. Спрайты давно перестали быть популярным новшеством и зачастую проигрывают треугольникам по скорости вывода.

[ Предыдущая часть (2) ]

[ Следующая часть (4) ]





Дополнительно

NVIDIA GeForce 6800 Ultra (NV40). Часть 1 — особенности архитектуры и синтетические тесты в D3D RightMark

NVIDIA GeForce 6800 Ultra (NV40)

Часть 1 — особенности архитектуры и синтетические тесты в D3D RightMark

Ждали.
И вот новая архитектура перед нами:
работа над ошибками прошлого и
одновременно уверенный задел
на будущее. В какой степени?
Сегодня мы исследуем оба аспекта.




СОДЕРЖАНИЕ

  1. Официальные спецификации
  2. Архитектура
  3. 2D и видеопроцессор
  4. Особенности видеокарты
  5. Синтетические тесты в D3D RightMark
  6. Качество трилинейной фильтрации и анизотропии
  7. Выводы

Синтетические тесты 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 его не спасут. Что собственно и происходит на втором графике. В реальных приложениях баланс может склониться как в ту, так и в иную сторону, в зависимости от шейдеров, числа и размера текстур и прочих параметров сцены.

Итак, в общем и целом, можно констатировать два факта:

  1. NV40 чемпион по закраске и выборке текстур, 16 пикселей за такт, 16 TMU, да и легендарная эффективность работы TMU и буфера кадра от NVIDIA по прежнему в силе.
  2. Досадные неравномерности поведения предыдущего поколения NVIDIA на пиксельных шейдерах 2.0 устранены.

Тест Geometry Processing Speed

Самый простой шейдер — предельная пропускная способность по треугольникам:

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

Более сложный шейдер — один простой точечный источник света:

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

Усложняем задачу далее:

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

А теперь самая сложная задача, три источника света, причем, для сравнения в вариантах без переходов, со статическим и динамическим управлением исполнением:

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

Итак :

  1. FFP значительно быстрее на чипах NVIDIA, зачастую вдвое.
  2. Характер зависимости от типа шейдера одинаковые для NV38 и NV40 — видимо архитектура вершинных процессоров очень близка.
  3. Статические переходы на ускорителях NVIDIA исполняются не оптимально.

Тест Pixel Shaders

Первая группа шейдеров — достаточно простых для исполнения в реальном времени, 1.1, 1.4 и 2.0:

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

Посмотрим, каков прирост при использовании 16 битной точности плавающих чисел:

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

А теперь посмотрим на действительно сложные, « кинематографичные» шейдеры:

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

На последок, исследуем зависимость скорости от использования арифметических или табличных методов вычисления sin, pow и нормализации векторов, отдельно для всех чипов:



Общая мораль такова :

  1. Лучше 16 бит, чем 32
  2. Лучше таблицы, чем арифметические вычисления для NVIDIA (эффективная выборка текстур)
  3. Лучше вычисления, чем таблицы для ATI (выборка текстур менее эффективна)

Итого, по пиксельным шейдерам :

  1. Производительность вне конкуренции, с печальным прошлым предыдущего поколения покончено.
  2. Наличие возможности динамического управления вычислениями не сказалось на производительности обычных шейдеров в худшую сторону.
  3. Исправлены слабые места, связанные с временными переменными, но все еще можно ждать прироста от компилятора в новых версиях драйверов — он пока не столь эффективен, как у NV38

Тест HSR

Для начала пиковая эффективность (без текстур и с текстурами) в зависимости от сложности геометрии:

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

Характер зависимости показывает, что алгоритм со времен NV38 не изменился. Зато абсолютные цифры существенно возросли:


Видно, что NV40 вне конкуренции, как минимум вдвое опережая других участников.

Вывод :

  1. Алгоритм HSR не претерпел серьезных изменений
  2. Но его общая производительность увеличилась, что нормально, учитывая большее число отправляемых на отрисовку (или отбрасываемых) за такт квадов.

Тест Point Sprites.


Я думаю, читателям не составит труда самим сделать выводы. Спрайты давно перестали быть популярным новшеством и зачастую проигрывают треугольникам по скорости вывода.

[ Предыдущая часть (2) ]

[ Следующая часть (4) ]