Недавно мы упомянули в наших новостях о двух пресс-релизах, выпущенных NVIDIA по поводу оптимизации работы GeForce3 с самыми производительными процессорами — Intel Pentium4 и AMD Athlon. Велик соблазн собственноручно подтвердить (или опровергнуть) наличие подобной оптимизации и исследовать ее эффективность.
Почему от процессора все еще что-то зависит
Казалось бы — чем мощнее T&L современного ускорителя, тем менее он зависит от процессора. Это не так. Существует множество аспектов, пожирающих процессорную мощность в реальных приложениях, несмотря на наличие "аппаратного" T&L. В частности, в прямой зависимости от сложности сцены. Как правило, все эти вычисления производятся конкретными приложениями и не имеют прямого отношения к драйверам. А что же тогда, спросите вы, можно оптимизировать на уровне драйверов? Ответ:
- Передачу исходной геометрической информации для последующей обработки T&L блоком в ускоритель.
- Преобразование неподдерживаемых аппаратно форматов вершин, прочая предварительная обработка.
- Оптимизация моделей (сортировка и группировка треугольников) ускоряющая их последующий вывод.
- Компрессия текстур.
- Размещение и менеджмент текстур.
Практика показывает, что здесь есть где развернуться, даже драйверам самых современных ускорителей (таких как GeForce3). Огромное число полигонов и текстур, которые столь успешно перевариваются современными акселераторами надо не только создать (сгенерировать) но и передать ускорителю. Причем, что самое обидное, передавать геометрическую информацию приходится каждый кадр. Подобная нагрузка способна с головой поглотить средний процессор, пытающийся обеспечить ненасытный GeForce3 данными. Скажем, 4-10 миллионов полигонов в секунду (вполне реальная для GF2 Ultra или GF3 и будущих приложений цифра). Грубо оценим объем геометрических данных: 10 миллионов треугольников * 1.5 вершины в среднем на треугольник. Каждая вершина — это не только XYZ координаты в плавающем формате, но и координаты текстур (по 2 на каждую), и, возможно, вектор нормали или два произвольных вектора атрибутов (цвета). Мы получаем цифры порядка пол гигабайта в секунду. И это без учета текстур! Лимитирующий фактор налицо — при таком раскладе все зависит от процессора, чипсета и AGP (т.е. платформы). Многие современные игры (в их число входят и Q3, почти не использующий T&L и Unreal/Unreal Tournament) совершенно бездарно гоняют геометрическую информацию по шине и их спасает лишь невысокое число треугольников. Но что будет завтра? Напрашивается очевидный выход — хранить все геометрические данные в локальной памяти ускорителя, и там же их обрабатывать. Сей подход успешно начинает применятся в DX8 (pure hardware vp), но все равно, реальному приложению приходится регулярно обновлять данные, да и не все задумки создателей способны свершится только молитвами T&L, пускай даже столь гибкого, как в случае GeForce3. Кстати, API также является существенным ограничителем — OpenGL в своем девственно чистом виде (без различных расширений, компиляции списков вершин и пр.) не способен протолкнуть и десятой доли упомянутого числа треугольников. Здесь, на уровне OpenGL ICD, оптимизация драйвера под определенную платформу играет очень существенную роль.
Именно вопрос пропиретарных расширений и их использования породил плотное обсуждение в нашей видеоконференции недавно вышедшего теста GLmark. Код, ориентированный на новые расширения NVIDIA, созданные для эффективной обработки списков вершин, получил огромный выигрыш на ускорителях данной фирмы. Не будем решать, кто здесь виноват, кто поступил нечестно или ноборот верно. Но заметим, что подобная программа уже не может претендовать на звание всеобщего теста. Сам по себе GL Mark являет прообраз OGL программ будущего — ориентированных на большой объем геометрии и соответствующие расширения, которые вскоре выйдут из ранга пропиретарных.
Тестирование
Тестирование проводилось на драйверах версии 10.80 (Developers Release for GeForce 3). Операционная система и прочие параметры платформы соответствуют нашим 3DGiТогам (Windows98 SE2 + DX8). Как я и думал, существенного прироста производительности, по сравнению с более ранними 10.50/10.70 (и 10.40 для w2k) драйверами не наблюдается, а совместимость с различными приложениями и стабильность существенно возросли. Непонятным остался один единственный факт — по прежнему отсутствует поддержка объемных текстур. Хотя, заметны следы ее наличия в драйвере, она по-прежнему заблокирована. Мы использовали следующие
Тестовые стенды
- Компьютер на базе Pentium III — 1000 MHz:
- процессор Intel Pentium III — 1000EB (133 MHz FSB);
- системная плата Chaintech 6OJV (i815);
- оперативная память 256 MB PC133 (2xDIMM Transcend);
- жесткий диск IBM DPTA 20GB UltraDMA/66;
- Компьютер на базе Athlon — 1.2 GHz:
- процессор AMD Athlon Thunderbird — 1.2GHz (266MHz FSB);
- системная плата Soltek 75KAV-X (VIA KT133A);
- оперативная память 256 MB PC133 (2xDIMM Hyundai);
- жесткий диск Fujitsu 10GB UltraDMA/66
- Компьютер на базе Pentium4 — 1.5 GHz:
- процессор Intel Pentium 4 — 1.5 GHz;
- системная плата ASUS P4T (i850);
- оперативная память 256 MB ECC PC800 RDRAM (2x RIMM Buffalo);
- жесткий диск 45Gb IBM Deskstar GXP75
3D Mark 2000




Налицо существенная зависимость от платформы. Максимальный выигрыш наблюдается для P4, на втором месте Athlon. Интересно, что тест Game1 существенно выигрывает в случае GeForce3 у GeForce2 Ultra, а вот Game2 явно не лучший аргумент для покупки этой карты. Впрочем, с учетом скорого выхода 3D Mark 2001, можно не придавать результатам этих "псевдоигровых" тестов особенного внимания - моделируемые игры слишком завязаны на DX7. А вот синтетические тесты остаются прекрасным показателем. Давайте взглянем на результаты "валового" T&L теста:

4 источника освещения

8 источников освещения

В случае одного источника света нас ожидает приятный сюрприз — GeForce3 масштабируется, увеличивая свой результат на более мощных процессорах и обгоняет GeForce2 Ultra T&L которой как мы знаем, работает на более высокой частоте. Никакого чуда нет — улучшенное кеширование и более совершенная выборка треугольников помогают GeForce3 реализовать весь потенциал более мощных процессоров, более успешно организовав взаимодействие с ними (прокачку геометрии). Но, при увеличении числа источников света все преимущество тает - основная задержка — расчет освещения и производительность этого блока GF3 ниже GF2 Ultra (с учетом неравенства частот). Но, несмотря ни на что заметна существенная оптимизация новых драйверов для современных (P4/Athlon) платформ. Прирост в полтора раза, пускай и на синтетическом тесте нельзя сбрасывать со счетов. Кроме того, обнаружился скрытый потенциал валовой T&L производительности GeForce3 в некоторых задачах, использовать который пока также способны лишь самые современные процессоры. Но, геометрия не единственный род данных подаваемых от процессора или из основной памяти в ускоритель. Есть еще и текстуры:

Текстуры 32 мегабайта

Текстуры 64 мегабайта

Здесь GeForce3 в явном фаворе:
- По производительности закраски для малых объемов текстур (16-32МБ), когда все помещается в локальный буфер и роль играют лишь эффективность кеширования и алгоритмы работы ускорителя со своей локальной памятью), а OverDraw же в тестовой сцене отсутствует и HSR не вмешивается в результаты.
- По получаемому на передовых процессорах преимуществу от более высокой скорости обработки и загрузки в локальную память текстур (тест с 64 МБ).
Quake3 Arena




Здесь, результаты практически не требуют комментариев, очевидно, что зависимость от процессора существует, и владельцам GeForce3 стоит задуматься на эту тему. Картина уже знакома нам по 3D Mark — впереди Pentium4 со своей очень эффективной и "широкой" шиной, на втором месте Athlon, затем Pentium III. В полном соответствии с пропускной способностью FSB и чипсета. С повышением разрешения преимущество нивелируется, но в самом "игровом" для подобных карт разрешении (1024) оно все еще существенно.
Как бы там ни было, необходимо дождаться нового поколения игр и тестов (например 3D Mark 2001). Тогда мы сможем определить, возрастет ли зависимость от процессора или наоборот уменьшится. А, кстати, возможны оба сценария — более сложная геометрия игр на одной чаши весов будет компенсирована применением шейдеров, хранением геометрии в локальной памяти и более оптимизированными для высокой пропускной способности карт API. Делаем ставки господа, 11-й Детонатор и 3D Mark 2001 будут с недели на неделю.