томит нас ожиданьем,
NV справляет 25,
возможно, с опозданьем… "
В наших руках — NV25. Этот чип ждали многие. Кто-то как отголосок славных дел 3dfx (холодно); кто-то как достойный ответ на ATI RADEON 8500 (теплее); кто-то как вторую, оптимизированную и обогащенную инкарнацию NV20 (жарко). Пожалуй, на этот раз мы не будем злоупотреблять лирическими отступлениями, а сразу подойдем к сути вопроса…
Внимание! Прежде, чем приступить к прочтению данного материала, рекомендуем ознакомится с предыдущими полновесными обзорами NVIDIA GeForce3 (NV20) и ATI Radeon 8500 (R200). Линейка продуктов
Линейка GeForce 4 базируется на двух чипах — NV17 (подробный обзор которого появится на нашем сайте несколько позже) и NV25 — главном герое этой статьи:
- GeForce 4 Ti4600 — NV25 300 МГц ядро, 128 МБ 325(650) МГц 128 бит DDR памяти.
- GeForce 4 Ti4400 — NV25 275 МГц ядро, 128 МБ 275(550) МГц 128 бит DDR памяти.
- Еще одна, младшая карта на базе NV25, будет анонсирована позже.
- GeForce 4 MX460 — 300 МГц ядро, 64 МБ 275(550) МГц 128 бит DDR памяти.
- GeForce 4 MX440 — 270 МГц ядро, 64 МБ 200(400) МГц 128 бит DDR памяти.
- GeForce 4 MX420 — 200 МГц ядро, 64 МБ 166 МГц 128 бит SDR памяти.
- Линейка GeForce 3 будет максимально быстро заменена новой GeForce 4 линейкой.
- NV17 не поддерживает (и не будет поддерживать) пиксельные и вершинные шейдеры.
- NV17 будет иметь аппаратный декодер MPEG2 и систему динамического управления питанием, а NV25 нет.
- NV17 имеет только два конвейера закраски, а NV25 четыре.
- NV25 имеет суперскалярный (двойной) T&L, NV17 только один.
- NV17 и NV25 имеют схожие контроллеры памяти (двухканальный у NV17 и четырехканальный у NV25).
- Оба чипа снабжены одинаковым набором систем повышения эффективной пропускной полосы памяти второго поколения (сжатие и быстрая очистка Z буффера, MSAA, HSR).
- NV17 имеет два встроенных контроллера LCD панелей.
- Оба чипа имеют два независимых RAMDAC, CRTC контроллера, интегрированные TV-Out и DVI интерфейс.
Вот такой "милый" вервольф будет оказывать наглядную силовую поддержку анонсу продуктов на базе NV25, демонстрируя передовые возможности мягкого освещения, скелетной анимации, сгенерированной вершинными шейдерами шерсти и попиксельного рельефа:
Теория
Структурная схема NV25
Основные архитектурные новшества NV25 (в сравнении с NV20)
Для начала посмотрим, каким предстает перед нами новый чип после прочтения массы сопутствующих его анонсу спецификаций и кратких обзоров технологий:
- Два независимых контроллера отображения (CRTC). Гибкая поддержка всевозможных режимов с выводом двух независимых по разрешению и содержанию буферов кадра на любые доступные приемники сигнала.
- Два полноценных интегрированных в чип 350 МГц RAMDAC (с 10 битной палитрой).
- Интегрированный в чип интерфейс TV-Out.
- Интегрированный в чип TDMS трансмиттер (для DVI интерфейса).
- Два блока интерпретации и исполнения вершинных шейдеров. Они сулят существенное увеличение скорости обработки сцен со сложной геометрией. Блоки не могут испольнять различный микрокод шейдеров, единственное назначение подобного дублирования — обработка двух вершин одновременно — служит для увеличения производительности.
- Усовершенствованные конвейеры закраски обеспечивают аппаратную поддержку пиксельных шейдеров до версии 1.3 включительно.
- По заявлениям NVIDIA, увеличена эффективная скорость закраски в режимах MSAA, теперь режимы 2x AA и Quincunx AA вызовут существенно меньшее падение производительности. Немного усовершенствован Quincunx AA (смещены позиции выборки семплов). Появился новый метод AA — 4xS.
- Усовершенствованная система раздельного кеширования (4 раздельных кеша для геометрии, текстур, буфера кадра и Z буфера).
- Усовершенствованное сжатие без потерь (1:4) и быстрая очистка Z буфера.
- Усовершенствованный алгоритм отброса невидимых поверхностей (Z Cull HSR).
Далее, по ходу нашего повествования, мы тщательно сверим, проверим и замерим все декларированные здесь преимущества нового чипа, дабы собственноручно убедится в степени их реальной эффективности.
Подводя итог этого списка, хочется отметить скорее эволюционный, нежели революционный характер изменений в сравнении с предыдущим творением NVIDIA (NV20). Впрочем, это неудивительно — исторически NVIDIA вначале предлагала продукт, несущий множество новых технологий, а затем выпускала более совершенный (оптимизированный) вариант на его основе, устраняя привлекшие основное внимание (за время присутствия продукта на рынке) недостатки. Вспомним TNT и TNT2, GF256 и GF2 — точно такой же парой являются на наш взгляд GF3 и GF4. И, как показывает практика предыдущих "пар", именно вторую, доведенную версию архитектуры ждет наибольший успех и признание, а следовательно и долгая (скажем так, сравнительно долгая :-) ) жизнь.
Тактико-технические характеристики
Для начала небольшое пояснение:
- Ускоритель нельзя рассматривать в отрыве от драйверов. Для конкретных приложений любые возможности чипа существуют лишь в меру их поддержки драйверами для двух основных API. Многие из приведенных в этой таблице характеристик могут зависеть от драйверов и верны в первую очередь для указанной версии. Более того, некоторые возможности, о наличии которых драйверы не сообщают, на проверку оказываются доступными для приложений (например, плоскости отсечения в D3D для карт NVIDIA). Мы все равно будем считать эти возможности отсутствующими — корректно написанные приложения не должны пытаться использовать вызовы и параметры, о наличии которых не отрапортовал драйвер.
- Большинство информации относится к Direct3D, в OpenGL эти параметры могут иметь иные значения (впрочем, это происходит крайне редко). Тому есть несколько причин, в том числе и более тесное взаимодействие этого игрового API с железом ускорителей. А также тот факт, что возможности современных ускорителей достаточно четко продиктованы спецификацией D3D.
А теперь — сводная таблица ключевых ТТХ участвующих в дальнейшем тестировании чипов и карт. Отметим, что в ближайший календарный квартал следует рассматривать ATI RADEON 8500 как основного конкурента карт на базе NV25 (GeForce 4 Ti 4600 и Ti 4600) ввиду отложенного (возможно, навсегда) запуска RADEON 8500XT и достаточно существенного промежутка времени, оставшегося до выхода первых продуктов на базе R300.
Название карты | GeForce3 Ti 500 | RADEON 8500 | GeForce 4 Ti 4600 (GeForce 4 Ti 4400) |
---|---|---|---|
Чип, ревизия, версия драйверов | |||
Чип | NV20 | R200 | NV25 |
Ревизия | A5 | A23 | A03 |
Версия драйверов | 27.30 | 6.018 | 27.30 |
Основные параметры | |||
Число конвейеров | 4 | 4 | 4 |
Текстурных блоков на конвейер | 2 | 2 | 2 |
Текстур за проход | 4 | 6 | 4 |
Частота ядра, МГц | 240 | 275 | 300 (275) |
Филрэйт (млн. пикселей) | 960 | 1100 | 1200 (1100) |
Филрэйт (млн. текселей) | 1920 | 2200 | 2400 |
RAMDAC, МГц | 350 | 400 (+внешний 240) | 350*2 |
Параметры локальной памяти | |||
Частота памяти, МГц | 250 | 275 | 325 (275) |
Шина памяти, бит | 128 (DDR) | 128 (DDR) | 128 (DDR) |
Технология, мкм | 0.15 | 0.15 | 0.15 |
Объем памяти, МБ | 64 | 64 | 128 |
Скорость памяти, нс | 3.8 | 3.6 | 2.8 (3.6) |
Версия OpenGL | 1.3 | 1.3 | 1.3 |
Версия DirectX | 8.1 | 8.1 | 8.1 |
Ускорение GDI+ | Да | Да | Да |
Пиксельный конвейер | |||
Пиксельные шейдеры | 1.0, 1.1 | 1.0.,1.4 | 1.0.,1.3 |
Диапазон вычисляемых значений цвета | -1.0..+1.0 | -8.0..+8.0 | -1.0..+1.0 |
Текстурных стадий | 4 | 8 | 4 |
Комбинационных стадий | 8 | 8 | 8 |
Multisampling | 2,3,4 сэмпла | Нет | 2,3,4 сэмпла |
Число плоскостей отсечения | 0 | 6 | 0 |
Вершинный конвейер | |||
Вершинные шейдеры | 1.0, 1.1 | 1.0, 1.1 | 1.0, 1.1 |
Число потоков вершин | 16 | 8 | 16 |
Число констант вершинного шейдера | 96 | 192 | 96 |
Максимум матриц для блендинга | 4 | 4 | 4 |
Индексированный блендинг | Нет | До 57 матриц | Нет |
Число источников света | 8 | 8 | 8 |
N-Patches | Нет | Да | Нет |
RT-Patches | Нет | Нет | Нет |
Число примитивов | 1048575 | 65536 | 1048575 |
Число вершин | 1048575 | 16777215 | 1048575 |
Прочие параметры | |||
Pure Device | Да | Да | Да |
Масштабирование спрайтов до | 64 | 256 | 8192 |
3D текстуры | Да (с анизотропией) | Да (без MIPMAP) | Да (с анизотропией) |
Карты отражения (среды) | Да (с анизотропией) | Да (без MIPMAP) | Да (с анизотропией) |
Анизотропная фильтрация | Да | Да (только билинейная) | Да |
Степень анизотропии до | 2,3,4 би/три линейных выборки | 2,3 упрощенных билинейных выборки | 2,3,4 би/три линейных выборки |
Туман | FOGVERTEX FOGRANGE FOGTABLE | FOGVERTEX FOGRANGE | FOGVERTEX FOGRANGE FOGTABLE |
Буфер кадра | |||
Форматы буфера рендеринга | A8R8G8B8 X8R8G8B8 R5G6B5 X1R5G5B5 | A8R8G8B8 X8R8G8B8 R5G6B5 A1R5G5B5 A4R4G4B4 R3G3B2 | A8R8G8B8 X8R8G8B8 R5G6B5 X1R5G5B5 |
Форматы буфера глубины | D32 D24S8 D16 D24X8 | D32 D24S8 D16 D24X8 | D32 D24S8 D16 D24X8 |
Форматы текстур | |||
Максимальный размер текстур (максимальный повтор) | 4096x4096(8192) | 2048x2048(2048) | 4096x4096(8192) |
Форматы 2D текстур | A8R8G8B8 X8R8G8B8 R5G6B5 X1R5G5B5 A1R5G5B5 A4R4G4B4 P8 V8U8 L6V5U5 X8L8V8U8 DXT1 DXT2 DXT3 DXT4 DXT5 D24S8 D16 D24X8 | A8R8G8B8 X8R8G8B8 R5G6B5 X1R5G5B5 A1R5G5B5 A4R4G4B4 R3G3B2 L8 A8L8 V8U8 L6V5U5 X8L8V8U8 Q8W8V8U8 V16U16 W11V11U10 DXT1 DXT2 DXT3 DXT4 DXT5 | A8R8G8B8 X8R8G8B8 R5G6B5 X1R5G5B5 A1R5G5B5 A4R4G4B4 P8 V8U8 L6V5U5 X8L8V8U8 DXT1 DXT2 DXT3 DXT4 DXT5 D24S8 D16 D24X8 |
Форматы 3D текстур | A8R8G8B8 X8R8G8B8 R5G6B5 X1R5G5B5 A1R5G5B5 A4R4G4B4 P8 | A8R8G8B8 X8R8G8B8 R5G6B5 X1R5G5B5 A1R5G5B5 A4R4G4B4 R3G3B2 L8 A8L8 Q8W8V8U8 W11V11U10 DXT1 DXT2 DXT3 DXT4 DXT5 | A8R8G8B8 X8R8G8B8 R5G6B5 X1R5G5B5 A1R5G5B5 A4R4G4B4 P8 |
Прокомментируем существенные пункты:
- GeForce4 Ti4600 обладает более высокой тактовой частотой ядра и памяти, нежели RADEON 8500. GeForce4 Ti4400 обладает равной тактовой частотой ядра и памяти по отношению к RADEON 8500.
- Наконец-то, передовые продукты NVIDIA получили полноценную поддержку вывода изображений на два монитора, причем, в отличие от R200, оба полноценных 350 МГц RAMDAC интегрированы в чип NV25.
- Более низкая у NV25 частота RAMDAC по сравнению с первичным RAMDAC R200 (350 против 400 МГц)
- Схожая с NV20 и R200 организация внутренней архитектуры NV25 — 4 конвейера закраски, по два текстурных блока на каждом. Однако у R200 результаты их работы могут накапливаться два раза, в результате чего мы получаем возможность комбинировать до 6 текстур за один проход, а у NV25 мы по прежнему ограничены 4 текстурами. Впрочем, пока на рынке нет ни одного игрового приложения, способного получить существенное преимущество при использовании 6 текстур за проход. По слухам, в будущем на роль такого приложения претендует Next Doom.
- NVIDIA по-прежнему не поддерживает пиксельные шейдеры 1.4 (подробнее о них см. в превью R200) и, следовательно, более гибкий механизм зависимой выборки значений текстур. Реально шейдеры транслируются в настройки конвейеров выборки и комбинации, число стадий конвейера выборки текстур осталось прежним - 4 у NV25/NV20 против 8 у R200; Небольшие изменения комбинационного конвейера позволили аппаратно поддержать шейдеры 1.2 и 1.3. Отличия последних от шейдеров 1.1 не имеют отношения к организации более гибкой зависимой выборки (как хотелось бы), а связаны в основном с использованием и модификацией значений Z и другими мелкими "удобствами".
- Комбинационные конвейеры всех чипов имеют 8 стадий и поддерживают все декларированные DirectX 8.1 операции.
- Несмотря на ожидания, в доступных на данный момент драйверах для NV25 не увеличено ни число констант, которые можно задействовать в вершинных шейдерах (все так же 96 против 192 у R200), ни число команд вершинного шейдера (все так же 128). Судя по всему, никаких существенных качественных изменений, кроме дублирования T&L блока (он же интерпретатор вершинных шейдеров в одном лице) в геометрический конвейер не внесено.
- Ликвидировано отставание от R200 в плане стабильной работы контроллера памяти на близких к номинальным частотах — память NV25 успешно работает на одинаковой с R200 частоте при том же номинальном времени доступа. Само по себе это еще не говорит о равной эффективности — подходы R200 и NV20/NV25 в вопросах работы с памятью существенно разнятся. NV25 предпочитает мелкие блоки и эффективный четырех канальный перекрестный контроллер, R200 — крупные блоки и интенсивное совместное кеширование. Какой из подходов оказался более жизнеспособен в современных тестах и приложениях, мы увидим далее.
- Все карты имеют полноценные DirectX 8.1 и OpenGL 1.3 драйверы. Общепризнано, что OpenGL драйвер ATI не столь эффективен, как творение программистов NVIDIA. Однако различие между ними постепенно сокращается, и в данный момент во многом определяется тем, как работает с геометрией OpenGL программа и использует ли она индексные буферы — сам по себе R200 заметно менее эффективен в вопросах передачи геометрии через AGP нежели NV20/NV25.
- У NV20 и NV25 сложилась достаточно интересная ситуация в области плоскостей отсечения. По той или иной причине текущие драйверы рапортуют, что плоскостей отсечения нет, хотя на поверку оказывается, что они прекрасно работают. Причина столь странного поведения следующая: для реализации плоскостей отсечения NVIDIA использует специальный пиксельный шейдер. Т.е. при этом задействуется большая часть слотов комбинационного конвейера и приложение теряет возможность использовать собственный пиксельный шейдер и некоторые другие ресурсы. Что, в свою очередь, не соответствует стандарту DirectX — именно поэтому плоскости отсечения и были отключены на уровне рапортуемых драйвером возможностей.
- В NV25 по прежнему не реализована аппаратная поддержка N-Patches, скорее всего, по политическим соображениям.
- Драйверы NV20 и NV25 уже достаточно давно перестали поддерживать аппаратную тесселяцию гладких поверхностей (HOS на основе RT-Patches). Причина этого кроется в DirectX — в случае, когда карта не поддерживает аппаратно N-Patches, API пытается эмулировать их с помощью RT-Patches. Что, несомненно, вызывает очень медленную работу N-Patches, даже более медленную чем толковая программная эмуляция. NVIDIA была вынуждена отключить RT-Patches, дабы игры с поддержкой N-Patches не впадали в трудно объяснимый для рядового пользователя ступор на ее последних продуктах.
- NV25, как и NV20, не поддерживает индексированный матричный блендинг — приоритет в этом вопросе отдан шейдерам, через них можно гибко организовать любые схемы матричного блендинга.
- Multisampling не претерпел никаких изменений по сравнению с NV20 — все те же 2..4 сэмпла, на которые R200 по-прежнему не способен.
- Реализация анизотропии у NV25/NV20 и R200 существенно различаются, и каждый подход имеет свои преимущества и недостатки. Чуть далее мы уделим этому вопросу больше внимания.
- Диапазон значений пиксельных шейдеров NV25 по-прежнему от -1.0 до 1.0 — повышенная точность R200 осталась без ответа.
- Все карты поддерживают стандартный джентельменский набор форматов текстур, однако, в дополнение к нему, R200 имеет поддержку нескольких экзотических форматов для использования в шейдерах дополнительных данных (карт нормалей и смещений) с повышенной точностью передачи компонент (11 и 16 бит - V16U16, W11V11U10); NV25 и NV20, в свою очередь, позволяют использовать текстуры с форматом буфера глубины (D32, D24S8, D16, D24X8), необходимые для реализации алгоритмов затенения на основе буфера глубины (Depth Buffer Shadows). То, как этот специфичный для продуктов NVIDIA алгоритм используется приложениями в драйверах для DirectX, является некоторым отступлением от стандарта — своеобразным хаком.
- NV25 по-прежнему не позволяет сжимать объемные текстуры. Учитывая существенные размеры 3D-текстур, этот факт можно считать заметным недостатком драйверов или чипа. По крайней мере, когда эти пресловутые объемные текстуры наконец начнут применяться в реальных приложениях :-). В то же время, OpenGL драйвер NVIDIA предоставляет свой собственный формат сжатия 3D-текстур.
- NV25 поддерживает все разновидности тумана, как и NV20.
Приведем, для полноты картины, полный список OpenGL расширений поддерживаемых NV25 с текущими драйверами:
GL_VENDOR: NVIDIA Corporation
GL_RENDERER: GeForce4 Ti 4400/AGP/SSE2
GL_VERSION: 1.3.1
GL_EXTENSIONS:
- GL_ARB_imaging
- GL_ARB_multisample
- GL_ARB_multitexture
- GL_ARB_texture_border_clamp
- GL_ARB_texture_compression
- GL_ARB_texture_cube_map
- GL_ARB_texture_env_add
- GL_ARB_texture_env_combine
- GL_ARB_texture_env_dot3
- GL_ARB_transpose_matrix
- GL_S3_s3tc
- GL_EXT_abgr
- GL_EXT_bgra
- GL_EXT_blend_color
- GL_EXT_blend_minmax
- GL_EXT_blend_subtract
- GL_EXT_compiled_vertex_array
- GL_EXT_draw_range_elements
- GL_EXT_fog_coord
- GL_EXT_multi_draw_arrays
- GL_EXT_packed_pixels
- GL_EXT_paletted_texture
- GL_EXT_point_parameters
- GL_EXT_rescale_normal
- GL_EXT_secondary_color
- GL_EXT_separate_specular_color
- GL_EXT_shared_texture_palette
- GL_EXT_stencil_wrap
- GL_EXT_texture3D
- GL_EXT_texture_compression_s3tc
- GL_EXT_texture_edge_clamp
- GL_EXT_texture_env_add
- GL_EXT_texture_env_combine
- GL_EXT_texture_env_dot3
- GL_EXT_texture_cube_map
- GL_EXT_texture_filter_anisotropic
- GL_EXT_texture_lod
- GL_EXT_texture_lod_bias
- GL_EXT_texture_object
- GL_EXT_vertex_array
- GL_EXT_vertex_weighting
- GL_HP_occlusion_test
- GL_IBM_texture_mirrored_repeat
- GL_KTX_buffer_region
- GL_NV_blend_square
- GL_NV_copy_depth_to_color
- GL_NV_evaluators
- GL_NV_fence
- GL_NV_fog_distance
- GL_NV_light_max_exponent
- GL_NV_multisample_filter_hint
- GL_NV_occlusion_query
- GL_NV_packed_depth_stencil
- GL_NV_point_sprite
- GL_NV_register_combiners
- GL_NV_register_combiners2
- GL_NV_texgen_reflection
- GL_NV_texture_compression_vtc
- GL_NV_texture_env_combine4
- GL_NV_texture_rectangle
- GL_NV_texture_shader
- GL_NV_texture_shader2
- GL_NV_texture_shader3
- GL_NV_vertex_array_range
- GL_NV_vertex_array_range2
- GL_NV_vertex_program
- GL_NV_vertex_program1_1
- GL_SGIS_generate_mipmap
- GL_SGIS_multitexture
- GL_SGIS_texture_lod
- GL_SGIX_depth_texture
- GL_SGIX_shadow
- GL_WIN_swap_hint
- WGL_EXT_swap_control
И, для сравнения, такой же список в исполнении последних драйверов R200:
GL_VENDOR: ATI Technologies Inc.
GL_RENDERER: Radeon 8500 DDR x86/SSE2
GL_VERSION: 1.3.2475 WinXP Release
GL_EXTENSIONS:
- GL_ARB_multitexture
- GL_ARB_texture_border_clamp
- GL_ARB_texture_compression
- GL_ARB_texture_cube_map
- GL_ARB_texture_env_add
- GL_ARB_texture_env_combine
- GL_ARB_texture_env_crossbar
- GL_ARB_texture_env_dot3
- GL_ARB_transpose_matrix
- GL_ARB_vertex_blend
- GL_ARB_window_pos
- GL_S3_s3tc
- GL_ATI_element_array
- GL_ATI_envmap_bumpmap
- GL_ATI_fragment_shader
- GL_ATI_map_object_buffer
- GL_ATI_pn_triangles
- GL_ATI_texture_mirror_once
- GL_ATI_vertex_array_object
- GL_ATI_vertex_streams
- GL_ATIX_texture_env_combine3
- GL_ATIX_texture_env_route
- GL_ATIX_vertex_shader_output_point_size
- GL_EXT_abgr
- GL_EXT_bgra
- GL_EXT_blend_color
- GL_EXT_blend_func_separate
- GL_EXT_blend_minmax
- GL_EXT_blend_subtract
- GL_EXT_clip_volume_hint
- GL_EXT_compiled_vertex_array
- GL_EXT_draw_range_elements
- GL_EXT_fog_coord
- GL_EXT_packed_pixels
- GL_EXT_point_parameters
- GL_ARB_point_parameters
- GL_EXT_rescale_normal
- GL_EXT_secondary_color
- GL_EXT_separate_specular_color
- GL_EXT_stencil_wrap
- GL_EXT_texgen_reflection
- GL_EXT_texture_env_add
- GL_EXT_texture3D
- GL_EXT_texture_compression_s3tc
- GL_EXT_texture_cube_map
- GL_EXT_texture_edge_clamp
- GL_EXT_texture_env_combine
- GL_EXT_texture_env_dot3
- GL_EXT_texture_lod_bias
- GL_EXT_texture_filter_anisotropic
- GL_EXT_texture_object
- GL_EXT_vertex_array
- GL_EXT_vertex_shader
- GL_KTX_buffer_region
- GL_NV_texgen_reflection
- GL_NV_blend_square
- GL_SGI_texture_edge_clamp
- GL_SGIS_texture_border_clamp
- GL_SGIS_texture_lod
- GL_SGIS_generate_mipmap
- GL_SGIS_multitexture
- GL_WIN_swap_hint
- WGL_EXT_extensions_string
- WGL_EXT_swap_control
Закончив с представлением новых графических процессоров, обратим внимание на видеоплаты, которые базируются на двух вариантах NV25: GeForce4 Ti 4400 и 4600.