![]()
Справочная информация о семействе видеокарт NV4X Справочная информация о семействе видеокарт G7X Справочная информация о семействе видеокарт G8X/G9X Спецификации чипов семейства NV4X
Спецификации референсных карт на базе семейств NV4X
Подробности: NV40/NV45, семейство GeForce 6800Спецификации NV40/NV45
Спецификации референсной карты GeForce 6800 Ultra AGP
Архитектура чипа
Приведем блок схему вершинного процессора NV40: ![]() Собственно сам процессор на схеме обозначен желтым прямоугольником, остальные окружающие его блоки показаны для более полной картины. Заявлено, что NV40 содержит 6 независимых процессоров (мысленно скопируем желтый блок 6 раз), каждый из которых исполняет свои команды и имеет собственную контрольную логику (то есть разные процессоры могут одновременно исполнять различные ветки условий над разными вершинами). За один такт вершинный процессор NV40 может выполнить одну векторную операцию (до четырех компонент FP32) одну скалярную FP32 операцию и осуществить один доступ к текстуре. Поддерживаются целочисленные и плавающие форматы текстур и мип-маппинг. В одном вершинном шейдере может быть задействовано до четырех различных текстур. Однако фильтрация не производится – возможен только самый простой, дискретный доступ к ближайшему значению по заданным координатам.
Так выглядит сводная табличка параметров вершинного процессора NV40 с точки зрения вершинных шейдеров DX9 в сравнении
с семействами R3XX и NV3X:
Рассмотрим пиксельную архитектуру NV40 в порядке следования данных: ![]() Остановимся на самых интересных фактах. Во-первых, если ранее в NV3X был лишь один процессор квадов, обрабатывающий за такт блок из четырех пикселей (2х2), то теперь таких процессоров стало четыре. Они полностью независимы и каждый из них может исключаться из работы (например, для создания облегченной версии чипа с тремя процессорами при наличии брака в одном из них). По-прежнему сохранилась очередь для «карусели» квадов (см. DX Current), своя в каждом процессоре. Соответственно, сохранился и схожий с NV3X подход на исполнение пиксельных шейдеров: прогон через одну настройку (операцию) более чем сотни квадов и последующей смены настройки в соответствии с кодом шейдера. Но есть и заметные отличия. В первую очередь – это число TMU – теперь у нас только по одному TMU на каждый пиксель квада. Всего у нас 4 процессора квадов, в каждом по 4 TMU, таким образом, всего их 16. Новые TMU поддерживают анизотропную фильтрацию с соотношением сторон до 16:1 включительно (так называемые 16х, у NV3X было до 8х) и, наконец-то, научились выполнять все виды фильтрации с плавающими форматами текстур. Правда, при условии 16 битной точности компонент (FP16). Для FP32 фильтрация по-прежнему недоступна, однако и FP16 можно считать заметным прогрессом – теперь плавающие текстуры станут «полноправной» альтернативой целочисленным в любых применениях, тем более что сама фильтрация FP16 текстур происходит без снижения скорости (впрочем, повышенный поток данных может и должен сказаться на производительности реальных приложений). Отметим двухуровневую организацию кэширования текстур – каждый процессор квада имеет свой собственный кэш текстур первого уровня. Необходимость наличия оного вызвана двумя фактами – четырехкратным увеличением числа обрабатываемых одновременно квадов (очередь квадов в одном процессоре не выросла, но процессоров теперь четыре) и наличием конкурентного доступа к кэшу текстур из вершинных процессоров. На каждый пиксель приходится по два ALU, причем каждое из них может выполнить две различные(!) операции над разным числом произвольно выбираемых компонент вектора (до 4х). То есть, возможны схемы 4, 1+1, 2+1, 3+1 (как в R3XX), и новая конфигурация 2+2, ранее недоступная. Подробнее об этом вопросе см. DX Current. Поддерживается произвольное маскирование и перестановка компонент после операции. Кроме того, ALU способно выполнять нормализацию вектора как одну операцию, что может существенно сказаться на производительности некоторых алгоритмов. Аппаратное вычисление значений SIN и COS было изъято из новой архитектуры NVIDIA – опыт показал, что израсходованные на эту возможность транзисторы были потрачены зря – все равно доступ по простейшей таблице (1D текстуре) способен дать лучшие результаты с точки зрения скорости, тем более, учитывая отсутствие такой поддержки у ATI. Таким образом, в зависимости от кода, может быть выполнено от одной до четырех различных FP32 операций за такт, над векторами и скалярами. На схеме видно, что первое ALU задействуется для служебных операций во время выборки значений текстур, таким образом, за один такт мы можем либо выбрать одно значение текстуры и задействовать второе ALU для одной или двух операций, либо задействовать оба ALU, если мы не выбираем текстуру в этот заход. Производительность такой связки напрямую зависит от компилятора и кода, но очевидно, что мы имеем Минимум: одну выборку текстуры за такт По некоторым данным, число временных регистров для каждого квада было увеличено вдвое, то есть теперь мы имеем 4 временных FP32 регистра на пиксель или 8 временных FP16 регистров. Этот факт должен существенно увеличить производительность сложных шейдеров. Кроме того, сняты какие-либо аппаратные ограничения на длину пиксельных шейдеров и число выборок текстур – теперь все будет зависеть только от API. Самое главное усовершенствование – поддержка динамического управления исполнением. А теперь – сводная таблица возможностей:
А теперь вернемся к нашей схеме и обратим внимание на ее нижнюю часть. Там расположен блок, отвечающий за сравнение и модификацию значений цвета, прозрачности, глубины и буфера шаблонов. Всего у нас 16 таких блоков. Ввиду достаточной однотипности задачи сравнения и модификации, мы можем использовать этот блок в двух режимах: Стандартный (за один такт производится):
Турбо режим (за один такт производится):
Разумеется, что последний режим возможен только в случае отсутствия вычисленного и записываемого значения цвета. Вот откуда в спецификации указано, что в случае отсутствия цвета чип может закрасить (точнее заполнить) 32 пикселя за один такт, причем рассчитывается как значение глубины, так и значение буфера шаблонов. Подобный «турбо» режим полезен в первую очередь для ускорения построения теней на основе буфера шаблонов (алгоритм, принятый в Doom III), и для предварительного прохода рендеринга, в котором рассчитывается только Z буфер (зачастую такая техника позволяет сэкономить время на длинных шейдерах, так как фактор перекрытия будет гарантированно уменьшен до единицы). Наконец-то исправлено досадное упущение с отсутствием в семействе NV3X поддержки MRT (Multiple Render Targets – рендеринг в несколько буферов) – то есть возможности расчета и записи в одном пиксельном шейдере до четырех различных значений цвета, которые будут затем помещены в разные буфера (одинакового размера). Отсутствие такой функции у NV3X было серьезным аргументом в пользу R3XX для разработчиков. Теперь, в NV40, эта возможность появилась. Еще одно важное отличие от предыдущих поколений – интенсивная поддержка этим блоком плавающей арифметики. Все операции по сравнению, блендингу и записи цвета могут проходить в формате компонент FP16. Наконец-то мы имеем, что называется, полную (ортогональную) поддержку операций с 16 битной плавающей точкой – как в плане фильтрации и выборки текстур, так и в плане работы с буфером кадра. На очереди FP32, но, видимо, это вопрос следующего поколения. Еще один интересный факт – поддержка MSAA. Как и его предшественники (NV 2Х и NV 3 X), NV40 может осуществлять 2 x MSAA без потери скорости (генерируется и сравнивается два значения глубины на один пиксель) а в случае 4 x MSAA необходимо добавить один штрафной такт (впрочем, на практике нет необходимости вычислять все четыре значения за такт – все равно будет проблематично записать в буфер глубины и кадра столько информации за один такт – полоса пропускания памяти достаточно ограничена). Более 4х MSAA не поддерживается – как и в предыдущем семействе, все более сложные режимы гибриды между 4х MSAA и последующим SSAA того или иного размера. Но теперь, наконец-то, поддерживается RGMS (повернутая решетка отсчетов MSAA): ![]() Вот такой отдельный программируемый блок NV40 берет на себя задачи обработки видеопотоков: ![]() Процессор содержит четыре функциональных блока (целочисленное ALU, векторное целочисленное ALU с 16 компонентами, блок загрузки и выгрузки данных и блок управления переходами и условиями) и может таким образом выполнять до четырех различных операций за такт. Формат данных – целые числа, видимо, 16 битной или 32 битной точности (точно неизвестно, но для некоторых алгоритмов 8 бит было бы недостаточно). Для удобства процессор включает специальные возможности выборки, коммутации и записи потоков данных. Классические задачи декодирования и кодирования видео (IDCT, деинтерлейсинг, преобразование цветовых моделей и т.д.) могут быть выполнены без участия CPU. Однако управление со стороны центрального процессора все равно требуется – подготовку данных и выбор параметров преобразований надо выполнять на CPU, особенно в случае достаточно сложных алгоритмов сжатия, включающих в себя распаковку как один из промежуточных шагов. Такой процессор способен существенно разгрузить CPU, особенно в случае больших разрешений видео, таких, как все более набирающие популярность форматы HDTV. Неизвестно, используются ли возможности этого процессора для ускорения 2D графики, особенно некоторых достаточно сложных функций GDI+ — было бы логично задействовать его на этом поприще, но точной информации об этом аспекте у нас нет. Как бы там ни было, NV40 соответствует высочайшим требованиям к аппаратному ускорению 2D – все необходимые вычислительно интенсивные функции GDI и GDI+ выполняются аппаратно.
Подробности: NV43, GeForce 6600[GT]Спецификации NV43
Спецификации референсной карты GeForce 6600 GT
Архитектура чипа NV43
Особых архитектурных отличий от NV40 нет, что, впрочем, не удивительно – NV43 является масштабированным (путем уменьшения числа вершинных и пиксельных процессоров и каналов контроллера памяти) решением, основанным на архитектуре NV40. Отличия количественные (на схеме выделены жирным), а не качественные – с точки зрения архитектуры чип практически не изменился. Итак, в наличии три (было шесть) вершинных процессоров, и два (было четыре) независимых пиксельных процессора, каждый из которых работает с одним квадом (фрагментом 2х2 пикселя). Интересно, что на сей раз поддержка шинного интерфейса PCI-Express стала "родной" (то есть реализованной в чипе), а AGP 8х платы будут содержать дополнительный двусторонний мост PCI-Ex <-> AGP (показан пунктиром), подробно описанный нами ранее. Кроме того, отметим очень важный ограничивающий момент – двухканальный контроллер и 128 битную шину памяти – этот факт подробно рассмотрен в обзоре. Архитектура вершинных и пиксельных процессоров осталась прежней – эти элементы были детально описаны выше в секции NV40/NV45. Вершинные и пиксельные процессоры в NV43 остались неизменными, а вот внутренние кэши могли быть уменьшены пропорционально числу конвейеров. Впрочем, число транзисторов не дает особых поводов для беспокойства — учитывая не столь большие размеры кэшей, было бы разумнее оставить их такими же, как у NV40, скомпенсировав тем самым заметный недостаток пропускной полосы памяти. Довольно крупный по размеру и транзисторам массив ALU, осуществляющий постобработку, проверку, генерацию Z и блендинг пикселей для записи результатов в буфер кадра также был уменьшен на каждом конвейере по сравнению с NV40 — все равно уменьшенная полоса памяти не позволит записать 4 полных гигапикселя в секунду, и потенциал закраски (8 конвейеров на 500 МГц) может быть полноценно использован только на более-менее сложных шейдерах, с более чем двумя текстурами и сопутствующими математическими вычислениями. Подробности: NV44, семейство GeForce 6200Спецификации NV44
Спецификации референсных карт GeForce 6200 TC-16/TC-32
Архитектура чипа NV44
Какие-либо глобальные архитектурные отличия от NV40 и NV43 отсутствуют, есть некоторые новшества в пиксельном конвейере, нацеленные на более эффективную работу с системной памятью в качестве буфера кадра. В общем же NV44 является масштабированным (путем уменьшения числа вершинных и пиксельных процессоров и каналов контроллера памяти) решением, основанным на архитектуре NV40. Отличия количественные (на схеме выделены жирным), а не качественные с точки зрения архитектуры чип практически не изменился, если не считать единственное исключение отсутствие FP16 блендинга. В наличии три вершинных процессора, как у NV43, и один (было два) независимый пиксельный процессор, работающий с одним квадом (фрагментом 2х2 пикселя). PCI-Express стал "родным", реализованным на чипе, как и в случае NV43, AGP 8х плат с этим чипом, в варианте TC (TurboCache), не производятся, так как сама идея эффективного использования системной памяти для рендеринга требует адекватной пропускной способности графической шины в обе стороны. Очень важным ограничивающим моментом является двухканальный контроллер с 64-битной шиной памяти, его ограничения подробно рассмотрены в обзорных статьях. Причем, судя по корпусу чипа и числу выводов, 64 бит это аппаратный предел для NV44 и 128 битных карт на его основе быть не может, в семействе 6200 они реализованы на NV43. Архитектура вершинных и пиксельных процессоров, а также видеопроцессора осталась прежней эти элементы были детально описаны нами выше. Если не считать декларируемых доработок для эффективной адресации системной памяти из блоков текстурирования и блендинга. Однако это то, что озвучивается реально есть причины считать, что все эти возможности, не такие принципиальные, и реализуемые скорее на уровне менеджера общего кэша и кроссбара, изначально были заложены в семейство NV4X. Просто нет смысла использовать их на уровне драйверов у старших карт с более скоростной и емкой локальной памятью. Также нет смысла в такой технологии у карт с AGP интерфейсом, который станет узким местом, так как скажется низкая скорость записи в системную память, сравнимая со скоростью PCI.
Вот так поясняет эти различия NVIDIA в своих материалах:
… обычная схема и NV44 с TurboCache:
Очевидна разница, связанная с подачей данных для текстур и дополнительным путем для записи данных кадра (блендинга) в системную память. Однако исходная схема чипа с кроссбаром, трактующим графическую шину практически как пятый канал контроллера памяти, может быть изначально способна на такое (начиная с NV40 и даже ранее). И сложно сказать, действительно ли в NV44 есть архитектурные изменения в плане работы с записью и чтением данных или эти возможности просто задействуются на уровне драйвера. С другой стороны, не будем отрицать, что оптимальным было бы некое страничное MMU и динамическая подкачка данных из системной памяти в локальную, которая трактовалась бы как кэш третьего уровня. Если реализована такая схема — все становится на свои места. И эффективность будет заметно выше дискретного размещения объектов там или там, и наличие небольших аппаратных переделок оправдано. Тем более что, обкатав этот страничный блок подкачки, можно будет задействовать его в будущих архитектурах, которые, судя по всему, будут в обязательном порядке снабжены такими блоками. Справочная информация о семействе видеокарт NV4X Справочная информация о семействе видеокарт G7X Справочная информация о семействе видеокарт G8X/G9X Александр Медведев (unclesam@ixbt.com)
|
Обсудить в конференции (комментариев: 46) |
| Комментарии? Поправки? Дополнения? anvakams@ixbt.com
| ![]()
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||