Обзор NVIDIA GeForce FX 5800 Ultra

Автор: Tim
Дата: 24.03.2003
Все фото статьи

Введение или “Муки рождения”


К окончанию зимы наконец-то завершился самый впечатляющий и многообещающий долгострой современной истории видеокарт, и мир увидел новое творение от NVIDIA: графический процессор GeForce FX, известный в девичестве как NV30.
В то время, как в стенах NVIDIA новый чип обретал суть и плоть, внешний мир довольствовался лишь только слухами и домыслами о нем. Смакованием и сравнением слухов о NV30 от NVIDIA и R300 от ATI не занимались лишь самые ленивые. По всему выходило, что NV30 будет одновременно более функциональным, гибким и быстрым в сравнении с соперником.
Однако, судя по всему, высота планки, которую поставила перед собой компания, оказалась слишком высока для того, чтобы одолеть её в течение стандартного полугодового (для новых архитектур - годового) цикла разработки и выпуска новых продуктов. Одновременный переход на совершенно новую архитектуру и более прогрессивный технологический процесс, 0.13 мкм, потребовал гораздо больших усилий, чем планировалось.
Пока компания разбиралась со своими проблемами, её "заклятый друг", компания ATI, выпустила в свет чипы RADEON 9700 / RADEON 9700 Pro. Используя давно отлаженный технологический процесс 0.15 мкм и наработки, частично реализованные еще в RADEON 9000 (RV250), ATI получила возможность первой объявить о доступности DirectX9 – совместимых ускорителей. Что произошло впоследствии, известно всем: компания ATI, не ожидавшая такого успеха от «пробного шара», R300, в спешном порядке создала целую линейку чипов, основанных на той же архитектуре. Более того, ради экономии сил и времени компания не стала разрабатывать «бюджетные» версии R300, а выстроила всю линейку по сути на одном чипе, использовав для снижения производительности отключение функциональных блоков чипа и сужение шины памяти. Такой подход оказался стратегически верным, но привел к неожиданным результатам: в отсутствие достойной конкуренции от NVIDIA, популярность видеокарт на новых чипах от ATI становилась всё выше и выше, и компания уже сейчас столкнулась с проблемой их нехватки.
А что же NVIDIA? Если принять на веру ранние слухи о NV30 и сравнить их с финальными спецификациями, то можно предположить, что на пути к физическому воплощению появилось слишком много проблем, чип NV30 неоднократно изменялся, упрощался, и в конечном итоге «в кремнии» был реализован далеко не весь задуманный потенциал. Тем не менее, противникам NVIDIA не стоит обольщаться: выпускать чип, неспособный обойти RADEON 9700 Pro, было бы для NVIDIA недопустимо с любой точки зрения. Иначе он бы просто не был выпущен.

Итак, что же это за зверь, которого мы все так ждали – GeForceFX?

Чип GeForce FX и архитектура CineFX




GeForce FX - первый чип от NVIDIA, соответствующий спецификациям Microsoft DirectX 9. Выход GeForce FX компания NVIDIA назвала "началом эпохи кинематографической графики" (The Dawn of Cinematic Computing), а архитектуру NV30 - CineFX, говоря о том, что отныне, с появлением GeForce FX, кинематографические спецэффекты стали доступны в реальном времени. Попробуем разобраться, что же такого скрывается за названием CineFX, что позволяет NVIDIA делать столь смелые заявления.
Архитектура NV30 отличается от "классической" архитектуры графических чипов, поэтому немалая часть в списке основных характеристик GeForce FX потребует дополнительных объяснений. Ниже приведены основные характеристики GeForce FX (NV30) в сравнении с NVIDIA GeForce4 Ti4800 (NV28) и ATI RADEON 9700 Pro (R300):

  NVIDIA GeForce 4 Ti 4800 (NV28) ATI RADEON 9700 Pro (R300) NVIDIA GeForce FX (NV30)
 Технология производства 0.15 мкм 0.15 мкм 0.13 мкм
 Количество транзисторов 67 млн 110 млн 125 млн
 Тактовая частота 300 МГц 325 МГц 500 МГц
 Контроллер видеопамяти 128 бит DDR SDRAM 256 бит DDR SDRAM 128 бит DDR II SDRAM
 Тактовая частота видеопамяти 650 (325 DDR) МГц 620 (310 DDR) МГц 1000 (500 DDR) МГц
 Пиковая пропускная способность шины видеопамяти 9,9 ГБ/сек 18,9 ГБ/сек 15,2 ГБ/сек
 Максимальный объем видеопамяти 128 МБ 256 МБ 256 МБ
 Интерфейс AGP AGP 3.0 4x/8x AGP 3.0 4x/8x AGP 3.0 4x/8x
 Пиксельные конвейеры, пиксельные шейдеры   
 Количество пиксельных конвейеров 4 8 8 [1]
 Количество текстурных модулей в конвейере 2 1 1[1]
 Максимальное количество текстур при мультитекстурировании 4 8 8
 Типы фильтрации текстур  билинейная,
анизотропная,
трилинейная,
трилинейная + анизотропная
 билинейная,
анизотропная,
трилинейная,
трилинейная + анизотропная
 билинейная,
анизотропная,
трилинейная,
трилинейная + анизотропная
 Максимальная степень анизотропии 8 16 8
 Версия пиксельных шейдеров  1.3 2.0 2.0+
 Ветвления, подпрограммы и циклы нет нет нет
 Максимальное количество текстур в шейдере 4 16 16
 Максимальное количество текстурных инструкций 4 32 1024
 Максимальное количество арифметических инструкций  8 64 (+64) [2] 1024
 Максимальное количество инструкций в шейдере 12 96 (+64)[2] 1024 [2]
 Регистры 2 регистра цвета,
8 регистров констант,
4 регистра текстур,
2 временных регистра
 2 регистра цвета,
32 регистра констант,
8 регистров текстурных координат,
16 регистров идентификации блоков выборки текстур,
12 временных регистров,

4 выходных регистра цвета,
1 выходной регистр Z
 2 регистра цвета,
512(1024) регистров констант [3],
8 регистров текстурных координат,
16 регистров идентификации блоков выборки текстур,
16(32) временных регистров [3],

4 выходных регистра цвета,
1 выходной регистр Z
 Форматы представления данных [4] фиксированная точка фиксированная точка,
16 бит плавающая точка,
32 бит плавающая точка
 фиксированная точка,
16 бит плавающая точка,
32 бит плавающая точка
 Вершинные конвейеры, вершинные шейдеры    
 Количество вершинных конвейеров 2 4 3
 Версия вершинных шейдеров 1.1 2.0 2.0+
 Ветвления, подпрограммы и циклы нет статические динамические
 Максимальное количество инструкций в шейдере 128 256 256
 Максимальное количество инструкций с учетом разворачивания циклов 128 65536 65536
 Регистры 16 входных регистров,
12 временных регистров,
96 регистров констант с плавающей точкой,
1 регистр адреса,

8 выходных регистров текстурных координат,
1 выходной регистр цвета тумана,
1 выходной регистр позиции вершины,
1 выходной регистр размера точки,
2 выходных регистра диффузной/зеркальной составляющей цвета
 16 входных регистров,
12 временных регистров,
256 регистров констант с плавающей точкой,
16 целочисленных регистров констант,
16 булевских регистров,
1 регистр адреса,
1 регистр - счетчик циклов,

8 выходных регистров текстурных координат,
1 выходной регистр цвета тумана,
1 выходной регистр позиции вершины,
1 выходной регистр размера точки,
2 выходных регистра диффузной/зеркальной составляющей цвета
 16 входных регистров,
16 временных регистров,
256 регистров констант с плавающей точкой,
256 целочисленных регистров констант,
256 булевских регистров,
1 регистр адреса,
1 регистр - счетчик циклов,

8 выходных регистров текстурных координат,
1 выходной регистр цвета тумана,
1 выходной регистр позиции вершины,
1 выходной регистр размера точки,
2 выходных регистра диффузной/зеркальной составляющей цвета
 Форматы представления данных  32 бит плавающая точка 32 бит плавающая точка 32 бит плавающая точка
 Полноэкранное сглаживание   
 Методы полноэкранного сглаживания  суперсэмплинг, мультисэмплинг на упорядоченной сетке (OGSS, OGMS) мультисэмплинг на повернутой сетке (RGMS) суперсэмплинг, мультисэмплинг на упорядоченной сетке (OGSS, OGMS)
 Число сэмплов 2 (OGSS, OGMS),
Quincunx,
4 (OGSS, OGMS, OGSS+OGMS, только в Direct3D)
 2,4,6 2 (OGSS, OGMS),
Quincunx,
4 (OGSS, OGMS, OGSS+OGMS - только в Direct3D ),
6 (OGSS+OGMS, только в Direct3D),
8 (OGSS+OGMS, только в Direct3D)
 Технологии повышения эффективности использования пропускной способности памяти   
 Удаление невидимых поверхностей (HSR) [5] есть есть есть
 Компрессия буфера кадра [6] нет есть есть
 Компрессия Z-буфера [7] есть есть есть

Примечания:

[1]: Первая и самая примечательная особенность архитектуры GeForce FX (NV30) - отсутствие понятия "пиксельный конвейер" в его классическом понимании. Например, 8 "классических" пиксельных конвейеров ATI RADEON 9700 Pro - это восемь работающих параллельно независимых функциональных блоков, каждый из которых включает в себя пиксельный процессор, блок выборки текстур, ввода-вывода и т.д.
Архитектура NV30 не подразумевает разделение вычислительных ресурсов чипа на пиксельные конвейеры. Вместо пиксельных конвейеров NV30 имеет набор арифметических процессоров (ALU), блоков выборки текстур, управляющих и связывающих элементов и т.д., которые могут образовывать теоретически любые комбинации, построение которых осуществляется исходя из условия максимально эффективного выполнения тех или иных задач. Эти комбинации уже можно с некоторой осторожностью называть пиксельными "конвейерами". Исходя из того, что в сумме GeForce FX имеет 8 блоков выборки текстур, можно предположить, что для чипа доступны комбинации 8x1 - 8 пиксельных "конвейеров" с 1 блоком выборки текстур в каждом, 4х2 - 4 "конвейера" с двумя блоками выборки текстур в каждом, и т.д.
С точки зрения производительности такая повышенная гибкость может оказаться как преимуществом GeForce FX, так и недостатком - всё будет зависеть от конкретной задачи.
Как GeForce FX будет организовывать свою архитектуру, и как она будет вести себя в различных условиях - мы постараемся выяснить при тестировании. А пока можно сразу сказать, что не всё получается так гладко, как может показаться.

[2]: Максимальное количество инструкций в шейдере характеризуется числом "instuction slots" ("ячеек инструкций"), инструкции могут занимать несколько "ячеек".
R300 поддерживает параллельное исполнение скалярных и векторных арифметических инструкций, в результате чего максимальное количество ячеек инструкций в пиксельном шейдере составляет 160.
GeForce FX имеет универсальные ячейки инструкций, поэтому максимальная длина шейдера не равна сумме числа ячеек текстурных и арифметических инструкций.

[3]: Регистры констант и временные регистры пиксельных шейдеров GeForce FX могут хранить как 16-битные четырехкомпонентные значения, так и 32-битные. При хранении 16-битных значений, занимающих вдвое меньше места, количество доступных регистров удваивается.

[4]: NVIDIA GeForce FX поддерживает два формата представления данных с плавающей точкой - 16 бит на компоненту и 32 бит на компоненту. Вычисления с 32-битной точностью GeForce FX производит вдвое медленнее, чем с 16-битной точностью - для 32-битных вычислений его 16-битные арифметические процессоры вынуждены объединяться попарно.
ATI RADEON 9700 Pro поддерживает как 16-битную, так и 32-битную точность представления данных, но все вычисления с плавающей точкой всегда проводит с 24-битной точностью. Полученные результаты могуть быть переведены в 16-битный формат или расширены до 32-битного формата.

[5]: HSR, Hidden Surface Removal, удаление невидимых поверхностей - метод повышения эффективности использования доступной пропускной способности шины видеопамяти. Чипы NVIDIA GeForce4 и GeForce FX перед отрисовкой пиксела проверяют его значение Z (удаленности), сравнивая значение Z со значением, сохраненным в Z-буфере, и если значение Z пиксела оказывается больше, то нет смысла его отрисовывать. Таким образом сокращается число операций чтения и записи в буфер кадра, и уменьшается количество передаваемых текстурных данных - то есть, доступная пропускная способность памяти используется более эффективно.
При использовании полноэкранного сглаживания GeForce FX производит те же самые операции сравнения и "отбрасывания", но уже не с пикселами, а с блоками субпикселов - например, 2х2 для метода полноэкранного сглаживания 4х и т.д.
ATI RADEON 9700 Pro использует более сложный алгоритм HSR, основанный на идее иерархического тайлового Z-буфера - технологию HyperZ III. Потенциально HyperZ III может иметь более высокую эффективность, так как здесь применяется "отбрасывание" целых групп пикселов. Подробнее о HyperZ III можно прочитать в обзоре ATI RADEON 9700 Pro.

[6]: Компресссия буфера кадра используется при полноэкранном сглаживании методом мультисэмплинга (мультисэмплинг и суперсэмплинг описаны в статье "На пути к Идеальной Картинке" или антиалиасинг на современных игровых видеокартах). Используя тот факт, что при мультисэмплинге у пикселов, находящихся не на границе полигонов, цвета всех субпикселов одинаковы, чипы NVIDIA GeForce FX и ATI RADEON 9700 Pro могут записывать в буфер кадра всего лишь одно значение цвета. К сожалению, эта техника неприменима для пикселов, лежащих на границах полигона, ведь для них цвета каждого из субпикселов могут быть разными. Однако, пикселы, лежащие на границах полигонов, составляют небольшую часть изображения, и в целом сокращение объема передаваемых данных достигает значительных величин - например, при мультсэмплинге 4х объем данных, передаваемых в буфер кадра, может уменьшиться до четверти от исходного.

[7]: Компрессия Z-буфера построена по тому же принципу, что и компресиия буфера кадра. Здесь выделяется лишь ATI RADEON 9700 Pro, использующий более сложную схему работы с Z-буфером и, как следствие - потенциально более эффективный алгоритм компресии Z-буфера.
Чуть позже мы на деле оценим результаты действия технологий, повышающих эффективность использования доступной пропускной способности шины видеопамяти.


Не вызывает сомнения то, что спецификации GeForce FX значительно превосходят базовые требования, выдвигаемые Microsoft DirectX9 к аппаратной части, в отличие от ATI RADEON 9700 Pro, практически "слово в слово" соответствующего спецификациям пиксельных и вершинных шейдеров версии 2.0.
Расширенная гибкость и программируемость GeForce FX, которую компания подчеркивает, обозначая версии вершинных и пиксельных шейдеров как "2.0+" - и есть архитектура CineFX, "ударная" позиция нового чипа от NVIDIA.
Посмотрим, в чем же GeForce FX превосходит базовые спецификации DirectX9.

Пиксельные шейдеры
В части пиксельных шейдеров GeForce FX превосходит базовые спецификации лишь в количественном плане. Но насколько превосходит!..
Во-первых, максимальная длина пиксельного шейдера составляет не 96, а 2048 инструкций. Во-вторых, в процессе исполнения шейдера пиксельный процессор может использовать не 32, а до 1024 заранее заданных констант и использовать большее количество временных регистров - их число увелично с 12 до 32.
Очевидно, что для GeForce FX доступно исполнение гораздо более сложных пиксельных шейдеров в сравнении с RADEON 9700 Pro. Сложнейшие процедурные текстуры, имитирующие различные неоднородные материалы, например, дерево, мрамор и т.д., или естественное отображение натуральных природных поверхностей, например, человеческой кожи, физически корректный рендеринг всевозможных оптических эффектов и сложных преломлений/отражений света - лишь малая область применения для "продвинутых" пиксельных шейдеров CineFX.
До появления таких красот в играх должен пройти еще долгий срок, но уже сейчас можно "вживую" увидеть крылатую эльфийку из знаменитой демонстрационной программы:





Вершинные шейдеры
В части вершинных шейдеров GeForce FX предлагает как количественные, так и качественные изменения. Количественные изменения - увеличение числа регистров, позволяющее программировать более сложные шейдеры.
Качественные изменения - динамические переходы и циклы в теле шейдера. ATI RADEON 9700 Pro тоже позволяет использовать в вершинных шейдерах подпрограммы, циклы и ветвления. Однако, все эти переходы - статические. Это значит, что какими бы ни были промежуточные результаты в процессе выполнения шейдера, последовательность исполнения его инструкций раз и навсегда задана входными переменными. То есть, по сути, несмотря на наличие переходов и циклов, подразумевающих нелинейность, шейдер выполняется линейно. Аппаратная часть R300 рассчитана как раз на такое исполнение шейдера, и, например, при загрузке в вершинный процессор шейдера с циклами компилятор просто разворачивает циклы, превращая их в цепочку из одинаковых блоков команд.
GeForce FX предлагает "настоящие", динамические переходы: переменные, на основании которых принимаются решения, могут быть изменены в любой момент выполнения программы. Это значит, что в любой момент на основании данных, полученных в процессе выполнения шейдера или входных данных, можно выбрать и выполнить нужную часть кода или подпрограмму.
С появлением динамических переходов вершинные шейдеры становятся по-настоящему мощным и удобным инструментом. Например, теперь не обязательно использовать разные вершинные шейдеры для разных ситуаций, теряя время на перезагрузку шейдеров в вершинный процессор - достаточно одного большого вершинного шейдера, в котором организована проверка условий и выполнение своего участка кода для каждой конкретной ситуации.

Итак, очевидно, что по гибкости и программируемости NVIDIA GeForce FX значительно опережает самые современные существующие стандарты. Однако, для долгой и счастливой жизни мало выпустить самый гибкий и программируемый чип - помимо этого он должен быть еще и быстрым.
Глядя лишь на спецификации и цифры, приведенные в таблице, можно предположить преимущество NVIDIA GeForce FX 5800 Ultra в вычислительном плане (500 МГц - не шутка!) и небольшой проигрыш в режимах, интенсивно загружающих шину видеопамяти.
Однако, известно, сколь сильное влияние на производительность могут оказать методы повышения эффективности использования пропускной способности шины видеопамяти, различия в подходах NVIDIA и ATI к анизотропной фильтрации, или, наконец, всевозможные оптимизации драйверов... Поэтому пока не будем расставлять приоритеты и определять сильные и слабые места противников, а приступим к тестированию.
Но для начала стоит поговорить о новой плате - поверьте, это достойно отдельного рассказа :).

Видеокарта NVIDIA GeForce FX 5800 Ultra


Новый чип от NVIDIA в нашей тестовой лаборатории представляет референс-плата NVIDIA GeForce FX 5800 Ultra:



Внушительно выглядит, не правда ли? Если печатная плата на вид не выделяется ничем необычным, то система охлаждения - это настоящий "монстр" из меди и пластика:


Из-за наличия такой системы охлаждения плате уже недостаточно одного стандартного посадочного места - она занимает две "планки" на задней стенке системного блока. На одной из "планок" находятся разъемы VGA, TV-Out и DVI, а на второй - отверстия для забора и выхлопа воздуха.
Система охлаждения видеокарты состоит из двух частей: на лицевой стороне размещена активная система охлаждения графического ядра и части микросхем видеопамяти, а на обратной стороне - радиатор, накрывающий оставшуюся часть микросхем видеопамяти:


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



На подошве системы охлаждения установлены "подушечки" для обеспечения надежного теплового контакта с микросхемами памяти и слой пластичного материала - термоинтерфейс графического ядра:



Радиатор, расположенный на обратной строне видеокарты, оснащен такими же теплопроводящими "подушечками" толщиной около миллиметра:



Прокачку воздуха через радиатор системы охлаждения обеспечивает центробежный воздушный вентилятор, аналогичный вентилятору, примененому компанией ABIT в видеокартах с системой охлаждения OTES:


Этот вентилятор - главный источник шума, который издает GeForce FX 5800 Ultra при работе. Сильный и неприятный шум, за который плату уже успели прозвать "феном", "пылесосом" и прочими нелестными эпитетами - действительно, самое неприятное свойство этой видеокарты. Даже то, что вентилятор включается только при работе в 3D-приложениях, не спасает ситуацию - такие видеокарты будут покупать именно для 3D, а не для работы в офисных приложениях. Что примечательно, даже этот шум - ничто по сравнению с теми звуками, которые можно слышать при остановке вентилятора. Управляющие цепи, расположенные на плате, останавливают вентилятор не сразу, а постепенно, снижая обороты ступенчато до нуля. Во время остановки вентилятора плата, по всей видимости, вместо плавного снижения напряжения питания подает на него периодические импульсы полного напряжения питания, ступенчато изменяя их скважность. В результате частота собственного вращения вентилятора накладывается на частоту следования питающих импульсов, возникают биения, а плата в судорогах рождает роскошную феерию звуков, способных вернуть из мира мертвых даже 3dfx :).
Ради чего же всё это было затеяно? Для того, чтобы отвести тепло от 125 миллионов транзисторов графического ядра:


Тактовая частота графического ядра GeForce FX составляет 500 МГц, что более чем в полтора раза выше, чем у главного конкурента, ATI RADEON 9700 Pro. Очевидно, достижение такой высокой тактовой частоты - следствие применения более тонкого технологического процесса. Например, предельные частоты для чипов R300, выполненных по технологии 0.15 мкм, лежат в районе 400 МГц. Для того, чтобы дальше повышать частоты, ATI рано или поздно придется переходить на более тонкий технологический процесс, в то время как для NVIDIA это - уже пройденный шаг.
Примечательно, что для GeForce FX компания NVIDIA не стала использовать 256-битный контроллер памяти DDR. Вместо этого используется менее сложный, но позволяющий достичь более высоких частот 128-битный контроллер памяти DDR II. Новый тип памяти разрабатывался специально для работы на высоких частотах, и это видно по тактовой частоте видеопамяти на GeForce FX 5800 Ultra - 1000 (500 DDR) МГц. В результате пиковая пропускная способность 128-битной шины видеопамяти у GeForce FX 5800 Ultra составляет 15,2 ГБ/сек., что лишь немногим ниже, чем 18,9 ГБ/сек. у RADEON 9700 Pro с его 256-битной шиной.
Однако, вернемся к видеокарте. На плате установлено 8 микросхем DDR II от Samsung с временем цикла 2 нс:


При работе эти микросхемы очень сильно греются: радиатор на обратной стороне платы, контактирующий только с чипами памяти, за несколько минут разогревается до того, что к нему невозможно прикоснуться. Учитывая то, что радиатор на обратной стороне платы принудительно не обдувается, можно сказать, что корпус с хорошей вентиляцией - необходимое условие для устойчивой работы GeForce FX 5800 Ultra.

Плата NVIDIA GeForce FX 5800 Ultra, как и видеокарты на базе ATI RADEON 9700 Pro, требует подключения дополнительного питания. Однако, в отличие от них, GeForce FX 5800 Ultra сохраняет работоспособность в том случае, когда дополнительное питание не подключено, но при этом тактовые частоты платы снижаются до 250/500 МГц.

Драйверы


При тестировании NVIDIA GeForce FX 5800 Ultra использовалcя драйвер версии 42.68. После инсталляции драйвера панель настроек видеокарты, как обычно, помещается в отдельную закладку "Свойств экрана":


Большинство панелей драйвера выглядит стандартно и не представляет особого интереса, но на некоторых можно заметить настройки, свойственные только для NVIDIA GeForce FX.
В первую очередь это установки тактовых частот платы:


Для GeForce FX 5800 Ultra частоты графического ядра и видеопамяти можно устанавливать раздельно для 2D- и для 3D-режимов. По умолчанию тактовые частоты платы составляют 300/600 МГц в 2D-режиме и 500/1000 МГц в 3D-приложениях.
Еще одна интересная закладка - настройки, касающиеся работы платы в 3D-приложениях:


Здесь можно выбрать один из трех режимов, отвечающих за соотношение "скорость-качество" - Application, Balanced и Aggressive (различиям между этими режимами и работе платы в каждом и этих режимов посвящена отдельная часть статьи). Также здесь можно форсировать полноэкранное сглаживание (2х, Quincunx, 4x, и режимы, доступные только в Direct3D - 4xS, 6xS и 8xS) и анизотропную фильтрацию (2x, 4x, 8x).



Первая часть: Архитектура CineFX, чип NV30 и плата GeForce FX 5800 Ultra.
Вторая часть: Тестовая система. Синтетические тесты
Третья часть: Режимы "Application", "Balanced" и "Aggressive", антиалиасинг и анизотропная фильтрация
Четвертая часть: Тестирование в играх
Пятая часть: Игровые тесты 3DMark 2001 и 3DMark 03, Заключение