NVIDIA GeForce4 Ti 4400 и GeForce4 Ti 4600 (NV25) или "Опять - двадцать пять"
"
На улице опять февраль,
томит нас ожиданьем,
NV справляет 25,
возможно, с опозданьем... "
В наших руках - NV25. Этот чип ждали многие. Кто-то как отголосок славных дел 3dfx (холодно); кто-то
как достойный ответ на ATI RADEON 8500 (теплее); кто-то как вторую, оптимизированную и обогащенную
инкарнацию NV20 (жарко). Пожалуй, на этот раз мы не будем злоупотреблять лирическими отступлениями,
а сразу подойдем к сути вопроса...
Линейка GeForce 4 базируется на двух чипах - NV17 (подробный обзор которого появится на нашем сайте несколько
позже) и NV25 - главном герое этой статьи:
Линейка 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.
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.