GeForce 6 и 3DMark05: какой прок от вертексных юнитов?

31 октября 2004, воскресенье 01:04
для раздела Лаборатория

Эта работа была прислана на наш "бессрочный" конкурс статей и автор получил приз - кулер Gigabyte 3D Cooler Ultra.


О делах неоконченных.

Сегодня мы займёмся изучением вопросов, которые остались неясными при тестировании с помощью DooM 3. Коротко напомню, какие именно вопросы предстоит прояснить:

  1. в самом ли деле архитектура GeForce 6 нечувствительна к скорости памяти
  2. нужно ли большое количество вертексных юнитов

Кроме того, «великий и ужасный» Unwinder сумел таки найти способ разблокировать аппаратно замаскированные пиксельные и вертексные юниты GeForce 6. С помощью RivaTuner 2.0RC15.2 мы теперь можем управлять абсолютно всеми ресурсами GeForce 6800, чем я не преминул воспользоваться. К сожалению, я не попал в число везунчиков, кому достались карточки с работоспособным четвёртым пиксельным юнитом, зато шестой вертексный юнит заработал как ни в чём не бывало. Правда в DooM 3 это никак не повлияло на производительность и мы уже говорили о причинах этого. Была нужна дополнительная проверка другими тестовыми приложениями.

Поскольку DooM 3 обладает достаточно уникальным графическим движком, строить выводы на основании только его результатов было бы неосмотрительно. К счастью, как раз в тот момент, когда появилась необходимость в совершенно непохожем на DooM 3 бенчмарке, он появился! Полагаю, что с его помощью мы сможем максимально осветить все спорные моменты. Итак, встречайте!

О 3DMark05.

Новейшая версия ставшего уже классикой 3DMark сильно отличается не только от DooM 3, но и от всех своих предыдущих инкарнаций. Начнём с того, что он полностью построен на шейдерах DirectX 9, т.е. для его работы необходима видеокарта с поддержкой шейдеров модели 2.0 или большей. Потом, все шейдеры компилируются с языка высокого уровня HLSL, что позволяет почти полностью отстраниться от претензий в ангажированности, заточенности под конкретную архитектуру графических акселераторов и т.д. и т.п. Есть все основания полагать, что такая политика окажется максимально близкой к политике разработчиков игр, и 3DMark05 действительно будет отражать быстродействие игр ближайшего будущего.

Из отличий, которые интересны нам в данный момент, необходимо отметить совершенно новую модель затенения, основанную не на буфере шаблонов, который являются узким местом большинства видеокарт, а на принципе дополнительного обсчета сцены с позиций источников света. Второе существенное отличие от DooM 3 – массированная геометрия. В игровых тестах 3DMark05 великое множество полигонов и он создаёт серьёзную нагрузку не только на блоки текстурирования, но и на вершинные конвейеры. Как раз то, что нам нужно!





Подробнее ознакомиться с новым тестом вы сможете в материале Tim-а, а пока, с вашего позволения, перейдём к самому интересному – результатам тестов. Тестирование проводилось в режиме «по умолчанию»: 1024х768, AA – no, AF – auto.

Тестовая система осталась прежней:

  • Athlon 1800+ @ 2.20 ГГц (192х11,5)
  • EPoX 8RDA rev. 1.1
  • 512 МБ dual channel PC3500, 11-2-2-2CL @ 192 МГц
  • Axle GeForce 6800 128 MB (325/800)

Видеодрайвер обновлён до версии 66.51.

О скорости памяти.

В первую очередь предлагаю проверить, как отреагирует на изменение частоты памяти 3DMark05. Напомню, что драйвер не позволяет выставить частоту ниже 700 DDR МГц, а значительно выше 800 память не разгоняется. При этом в DooM 3 даже в самых тяжёлых режимах разница получалась минимальной.

Как видите, уже второй бенчмарк оказывается равнодушным к частоте памяти GeForce 6800. Падение результатов при уменьшении скорости памяти на 12% составляет единицы процентов. Острее всего отреагировал синтетический тест скорости обработки геометрии, в котором на экране вращаются несколько одинаковых моделек монстров, что вполне логично – пять вершинных конвейеров борются между собой за обладание памятью. Но даже в этом случае разница составила менее 5%, в большинстве же остальных тестов она и вовсе пренебрежимо мала.

Скорость простого текстурирования снизилась очень незначительно, а мультитекстурирования и вовсе не изменилась. Причина в том, что при мультитекстурировании с максимальной эффективностью задействуются текстурные кэши и обращения к видеопамяти очень редки. Соответственно, в двух из трёх игровых тестов падение результатов оказалось чисто номинальным, и лишь в третьем игровом тесте, в котором используется та же монструозная модель морского чудовища, что и в тесте Simple Vertex Shader, можно уже говорить о небольшом понижении скорости.

Да, теперь мы полностью убедились, что архитектура GeForce 6 просто уникальна, когда речь идёт о взаимодействии с памятью, и можно с чистой совестью углубиться в изучение масштабируемости по количеству вертексных юнитов.

3 пиксельных юнита.





Начнём с «паспортной» для GeForce 6800 конфигурации: 3 пиксельных юнита с четырьмя пиксельными конвейерами в каждом. Изменяя количество активных вертексных юнитов проследим изменение производительности.

Для удобства выявления тенденций все результаты отобразим на диаграмме.

Наибольшее падение результатов от отключения вертексных юнитов, как и положено, показали тесты обработки геометрии. Что интересно, разница между пятью и шестью юнитами в Simple Vertex Shader практически отсутствует, тогда как в Complex Vertex Shader и игровых тестах она есть. Возможно, это объясняется тем, что на экране крутятся четыре модельки монстров, поэтому пятый и шестой вертексные юниты оказываются «не у дел».

В целом производительность плавно снижается по мере уменьшения количества вертексных юнитов, т.е. наблюдается прямая зависимость от количества блоков геометрии. При этом, из-за очень серьёзной геометрической сложности игровых сцен, скорость во втором и третьем игровых тестах также плавно снижается. Самое заметное падение результатов произошло при переходе от 4 вертексных юнитов к трём, что полностью совпадает с нашими наблюдениями по DooM 3: один блок геометрии не может своевременно обеспечить полигонами один блок текстурирования.

Оценить процентное падение результатов от уменьшения количества вертексных юнитов вдвое можно по следующей таблице.

Скорость комплексного шейдера упала почти вдвое, игровые тесты, кроме Return to Proxycon, потеряли треть производительности, что тоже весьма чувствительно. А первый игровой тест явно упирается не в геометрическую производительность, а во что-то другое. Во что именно, нам предстоит выяснить, а пока давайте посмотрим, как увеличивается производительность при разгоне ядра. Оставим активными три вертексных юнита, чтобы создать наиболее жёсткие условия тестирования и увеличим частоту ядра с 325 МГц до 375, т.е. на 16%.





Максимальный рост производительности опять показали тесты вертексных шейдеров, причём скорость увеличилась чуть ли не сильнее, чем частота! Списать это на погрешность измерений вряд ли возможно, остаётся предположить какие-то нюансы при взаимодействии с памятью. Остальные тесты показали хорошую масштабируемость, кроме, опять же, GT1 – Return to Proxycon! Очень странный игровой тест, ни скорость памяти, ни частота ядра, ни количество вертексных юнитов не оказывают на него значительного влияния.

Что ж, остаётся исследовать производительность при отключении одного из пиксельных юнитов.

2 пиксельных юнита.

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

По снижению интегрального показателя 3DMarks уже можно видеть, что этот тест крайне охоч и до пиксельной производительности – снижение скорости в игровых тестах составляет от 16 до 20 процентов. Теоретическое снижение показателей при переходе от трёх пиксельных юнитов к двум составляет одну треть, то есть 33%, и скорость мультитекстурирования снизилась точно на эту величину. Тест Pixel Shader тоже существенно замедлился. Скорость Vertex Shader, вполне ожидаемо, нисколько не изменилась. Самое время исследовать, какого количества вертексных юнитов достаточно для существенно более медленного варианта GeForce 6.

И опять построим диаграмму, которая наглядно всё продемонстрирует.

Несмотря на значительно снизившуюся пиксельную мощь акселератора, тенденции остались неизменными. 3DMark05 оказался просто ненасытным по части вершинной производительности – даже при двух пиксельных юнитах он чётко реагирует на «сокращение» вершинных конвейеров. Давайте снова посчитаем процентное выражение падения результатов от сокращения количества вертексных юнитов вдвое.





Скорость Vertex Shaders уменьшилась ровно настолько же, сколько и в варианте с тремя пиксельными юнитами. Это говорит о высокой «добротности» теста, т.е. о его слабой зависимости от различных побочных факторов. Таким образом, эти тесты можно признать достаточно объективным для сравнения вершинной производительности различных графических акселераторов.

Падение скорости в игровых тестах стало лишь немногим меньше, чем при трёх пиксельных юнитах. Выходит, что 3DMark05 в равной степени упирается и в пиксельную, и в геометрическую производительность. Таким образом, этот бенчмарк станет хорошим тестом и для следующих поколений графических акселераторов, которые, без сомнения, поднимут планку производительности ещё выше.

Последнее на сегодня испытание – разгон при двух пиксельных и шести вертексных юнитах. Целью испытания является дополнительное изучение масштабируемости отдельных блоков по частоте.

Сравнивая рост производительности от разгона ядра на 16% с предыдущими результатами, можно отметить значительно меньший рост вершинной производительности и, наоборот, прямо пропорциональный увеличению частоты рост скорости текстурирования. Скорость пиксельных шейдеров также возросла очень сильно, как и результаты двух игровых тестов из трёх. Загадочный GT1 - Return To Proxycon опять упирается во что-то неизвестное. Можно было бы предположить недостаточность частоты центрального процессора, но тогда чем объяснить заметно большие результаты при трёх пиксельных юнитах? Как бы то ни было, нам ещё предстоит выявить закономерности изменения остальных результатов. Значительный рост скорости текстурирования говорит о том, что никаких ограничивающих факторов, вроде дефицита пропускной способности памяти, нет. Напротив, шесть вершинных конвейеров явно упёрлись в скорость памяти, поэтому показатели теста Vertex Shaders выросли не так заметно.

Кардинальное отличие от варианта с тремя пиксельными юнитами состоит в том, что скорость простого текстурирования и скорость мультитекстурирования оказались равны. Это говорит о том, что двум пиксельным юнитам «за глаза» хватает скорости памяти с частотой 800 DDR МГц, потому что именно при наложении одной текстуры на полигон происходят наиболее частые обращения к памяти. Если вспомнить результаты тестов текстурирования из предыдущего раздела, то можно сделать немного более точный вывод о достаточности скорости памяти. Но об этом – в выводах.

Выводы.

Главный вывод из второй части изучения GeForce 6 таков: вершинной производительности много не бывает. Её может быть достаточно для конкретной игры, как это получилось с DooM 3, но как только разработчики игр осмелеют ещё больше, возникнет дефицит. И если недостаток пиксельной производительности мы можем скомпенсировать, например, уменьшением разрешения, то геометрическую производительность кроме как большим количеством вершинных конвейеров не увеличить. Таким образом, можно только приветствовать инициативу инженеров ATI, которые решили сохранить в своих новых разработках среднего ценового диапазона (Radeon X700) 6 блоков исполнения vertex shaders. Хотя на сегодняшний день для архитектуры GeForce 6 минимально-достаточным является количество вертексных юнитов на один больше, чем пиксельных, в перспективе геометрическая производительность может стать слабым местом GeForce 6600 в сравнении с конкурирующими продуктами.

Теперь резюмируем собранные данные о влиянии скорости памяти на производительность GeForce 6800. Если рассматривать отдельно работу пиксельных и вертексных конвейеров, то наблюдаются следующие закономерности.

  • Для пиксельных конвейеров требования к частоте памяти оказывается примерно «мегагерц в мегагерц». Например, два пиксельных юнита не испытывают «кислородного» голодания от DDR памяти (с удвоением пропускной способности) равной тактовой частоты.
  • Для вертексных юнитов скорость памяти тоже важна, и, чем тяжелее геометрия в графическом приложении, тем сильнее влияние скорости памяти. Приблизительное соотношение – 1.5:1, то есть DDR память «удовлетворяет» 3 вертексных юнита с той же тактовой частотой. Напомню, что эффективная частота для памяти DDR, типично указываемая во всех спецификациях, равна удвоенной тактовой.

Исходя из этих соотношений мы, теоретически, можем вычислить максимальную частоту памяти, на которой GeForce 6 не будет испытывать нужды в пропускной способности памяти ни при каких обстоятельствах (а точнее при чрезвычайно сложной геометрии и одиночном текстурировании, когда на каждый полигон накладывается своя текстура). Например, для испытуемого GeForce 6800 пиковая потребность в частоте памяти может достигать 325*(3+5/1.5) = 2058 МГц, но, поскольку такого количества текстур никто делать не будет, а в играх в подавляющем большинстве случаев используется мультитекстурирование, не оказывающее существенной нагрузки на память, эту цифру можно смело делить на три. В результате мы приходим к той самой частоте 700 DDR МГц, выбранной производителем для этой модели графического акселератора. Теперь давайте ещё немного посчитаем и определим минимально-допустимую частоту памяти ещё для нескольких моделей GeForce 6.

GeForce 6800GT имеет 4 пиксельных и 6 вертексных юнита, работающих на частоте 350 МГц. Частота памяти – 1000 DDR МГц, тогда как минимально-достаточная частота, посчитанная по вышеприведённой методике, составляет 933 DDR МГц. Получается, что пропускная способность памяти также выбрана с некоторым запасом и производительность данного варианта заведомо не ограничивается памятью. Причём запас по частоте памяти несколько больше, чем у GeForce 6800 Ultra и «простого» GeForce 6800. У GeForce 6600GT два пиксельных и три вертексных юнита, частоты 500/1000 МГц, но память имеет 128-битный интерфейс, поэтому расчетную цифру необходимо удвоить. После несложных расчетов получается, что для этого графического акселератора необходима память с эффективной частотой не менее 1333 МГц, то есть производительность этого варианта GeForce 6 всё же «упирается» в скорость памяти. Как видите, расчеты очень неплохо кореллируют со значениями, выбранными производителем, а все варианты GeForce 6800 отлично сбалансированы по частотам памяти и ядра, чего не скажешь о GeForce 6600GT.

Что же касается 3DMark05, то он показал великолепную масштабируемость по всем без исключения параметрам графических акселераторов, а результаты синтетических тестов практически не зависят от побочных факторов, позволяя с весьма высокой точностью измерять производительность их отдельных узлов. Этой аккуратности очень не хватало предыдущим воплощениям 3DMark, поэтому последнюю версию можно без зазрений совести назвать лучшим тестом из когда-либо созданных командой FutureMark.


Ждём Ваших комментариев в специально созданной ветке конференции.

Страницы материала
Страница 1 из 0
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают