enfrdepluk
Search find 4120  disqus socia  tg2 f2 lin2 in2 X icon 3 y2  p2 tik steam2

GeForce 3 особенности архитектуры

Презентация видеокарты GeForce3 состоялась 22 февраля 2001 года на выставке MacWorld Expo в Токио. Заочно поприсутствовать на ней мог любой желающий, так как видеозапись этого события была выложена в Интернет. Монстр графических движков", "живая легенда" Джон Кармак из ID Software, расхваливая возможности нового чипа заметил, что его не следовало называть "GeForce3". В том смысле, что число нововведений достигло того критического предела, при котором вместо порядкового номера нужно давать новое имя. Почему?
GeForce 3 логотип

Совершенно новый чип
Потому, что при разработке GeForce3 инженеры nVidia применили новый для себя подход. Ранее производительность улучшалась за счет "грубой силы": наращивалась вычислительная мощь, повышались частоты, удваивались конвейеры и вычислительные блоки, а архитектура в целом оставалась прежней. Возрастал только fillrate, то есть скорость заполнения пикселями трехмерной сцены. Поскольку технологии изготовления микросхем имеют определенный предел, видеокарты nVidia вскоре потеряли сбалансированность. Появился эффект недостаточной пропускной способности шины памяти, когда дальнейшее повышение производительности сдерживается низкой скоростью поступления данных.
Особенно это стало заметно после выхода видеокарт ATI Radeon. Они базировались на чипе Rage6C, у которого число 3D-конвейеров вдвое меньше, чем у GeForce2 (NV15). Однако Radeon отнюдь не вдвое отставал от соперника, а в некоторых случаях способен вплотную к нему приблизиться. А все потому, что инженеры ATI с самого начала ориентировались на улучшение баланса и нейтрализацию "узких мест" в архитектуре.
GeForce3 стал первой серьезной попыткой улучшения архитектуры для достижения лучшего баланса. Кроме того, в нем появились новые блоки, дающие разработчикам возможность задействовать множество ранее недоступных возможностей.

Характеристики GeForce 3
Наименование GeForce 3
Ядро NV20
Техпроцесс (мкм) 0,15
Транзисторов (млн) 60
Частота работы ядра 200
Частота работы памяти (DDR) 230 (460)
Шина и тип памяти DDR-128 bit
ПСП (Гб/с) 7,3
Пиксельных конвейеров 4
TMU на конвейер 2
Текстур за такт 8
Текстур за проход 4
Вершинных конвейеров 1
Pixel Shaders 1,1
Vertex Shaders 1,1
Fill Rate (Mpix/s) 800
Fill Rate (Mtex/s) 1600
DirectX 8.0
Anti-Aliasing (Max) MS - 4x
Анизотропная фильтрация (Max) 8x
Объем памяти 64 / 128 MB
Интерфейс AGP 4x
RAMDAC 350 MHz

GPU - это Graphics Processing Unit
Когда был объявлен GeForce256, nVidia утверждала, что это первый в мире графический процессор - GPU. Однако в отличие от центрального процессора - CPU, у него практически отсутствовала возможность настоящего программирования. Конечно, определенный набор операций он мог выполнять, но этот набор был жесткого задан разработчиками чипа, а не самими программистами. Операции аппаратного преобразования координат, освещения (блок T&L) и комбинирования текстур (блок NSR - растеризатор) не всегда подходили для тех задач, которые ставили перед собой разработчики игр. Поэтому полноценная поддержка T&L до сих пор встречается нечасто.
С выходом GeForce3 ситуация изменилась коренным образом. Технология nfiniteFX (от двух слов - Infinite и Effects) предусматривала наличие двух новых механизмов - Vertex Processor и Pixel Processor, каждый из которых позволял с помощью набора низкоуровневых команд создавать всевозможные спецэффекты, число которых (утверждала nVidia) бесконечно.
Vertex Processor работаел на этапе преобразования координат вершин треугольников (вертексов) в пригодную для последующей обработки форму. С помощью набора команд вертексного процессора разработчики могли создавать эффекты освещения, морфинга, анимации по ключевым кадрам и многое другое. Чтобы создать, например, одну фазу анимации, им достаточно было указать начальную и конечную координаты, а все остальное рассчитает GPU. Пример достаточно условный, но идея, я думаю, понятна.
Также впервые 3D-ускоритель мог работать не только с полигонами, но и с кривыми второго и более высокого порядка. Разработчику не нужно было заботиться о разбиении криволинейной поверхности на составляющие треугольники - это сделает Vertex Processor с заданной степенью точности.
Pixel Processor - дальнейшее развитие технологии NSR (nVidia Shading Rasterizer). Процесс наложения нескольких текстур (например, для получения освещения или объема) полностью программировался, позволяя комбинировать до восьми различных текстур с разных линий конвейера. Кроме того, пиксельный процессор мог работать с текстурами, задающими не только цвет, но и другие свойства поверхности: отражающую способность, например, или рельеф. Особенную пользу это приносил при имитации водной поверхности - GeForce3 мог моделировать воду в реальном времени, что и демонстрировалось на оптимизированных под него бенчмарках.
Все вышеперечисленные возможности реализовывались с помощью набора команд интерфейса DirectX 8, который специально разрабатывался для 3D-ускорителей нового поколения. Видеокарты, не имеющие полной аппаратной поддержки DirectX 8 (а это все, кроме GeForce3), могли реализовывать вертексные операции средствами процессора, а пиксельные операции им были недоступны. Интерфейс OpenGL тоже не остался в стороне: в его состав недавно были добавлены все необходимые расширения.

Молниеносная архитектура памяти
Таков перевод еще одной архитектурной новинки, впервые примененной в GeForce3. Lightspeed Memory Architecture (LMA) - набор технологий, призванных скомпенсировать невысокую (по технологическим причинам) производительность шины локальной видеопамяти. Основной недостаток существовавших до GF3 графических чипов nVidia - было отсутствие баланса между графическим ядром и подсистемой памяти. Скорость в 16-битных видеорежимах намного превышала скорость в 32-битных, поскольку память просто не справлялась с возложенной на нее нагрузкой по выдаче огромных объемов данных. GeForce3 имел несколько механизмов, призванных увеличить эффективность работы с памятью.
Crossbar Memory Controller - совершенно новый принцип организации шины памяти. GeForce3 имел в своем составе не один 128-битный контроллер, а четыре 32-битных, каждый из которых работал независимо от соседей. Зачем это нужно? Для оптимизации обращений к памяти. Если чип запрашивал два блока данных по 32 бита, расположенных в памяти не подряд, он получал их сразу - от двух контроллеров. Ждать, пока сначала будет прочитано одно 256-битное слово, а потом - другое, уже было не нужно.
Подобная архитектура особенно была важна при обработке сильно детализированных трехмерных сцен, когда каждый объект состоял из множества мелких (размером в пару пикселей) треугольников. Чтобы получить текстуру для двух пикселей, не приходилось вхолостую прогонять по шине большие объемы данных.
Кроме нового контроллера, были использованы кэши большого размера, способные удовлетворять запросы работающих конвейеров без обращения к шине. Точные размеры кэшей и механизмы их работы не будем уточнять, но об их наличии косвенно говорит большое количество использованных транзисторов.
Visibility Subsystem - набор методов для повышения эффективности работы с Z-буфером. Как известно, каждый объект на экране имеет третью координату - Z, задающую удаление его от наблюдателя. В соответствии с ней объекты отрисовываются на экране, начиная с самых удаленных. Очевидно, что некоторые из них полностью закрываются другими и совершенно не видны. Но 3D-ускоритель все равно тратит на них драгоценное время, "честно" заполняя текстурами. Это явление называется overdraw. Коэффициент overdraw в современных играх составляет от 1.3 до 3.5 в зависимости от количества объектов.
Впервые технологию оптимизации Z-буфера применила ATI, назвав ее HyperZ. Именно благодаря ей Radeon в высоких разрешениях способен поспорить с GeForce2. В GeForce3 тоже применялась такая оптимизация. Z-Occlusion Culling - механизм отбрасывания невидимых объектов, исключения их из постановки на обработку.

Механизм компрессии Z-буфера, применяемый в Radeon, нашел воплощение и в ядре GeForce3. По утверждениям разработчиков чипа, он позволял вчетверо уменьшать объем данных в этом буфере.
Зато быстрая очистка (Fast Z-clear) использовалась только в Radeon. nVidia посчитала ненужным создавать что-либо подобное. Впрочем, ей было виднее.

GeForce 3

Сглаживание ещё быстрее
Самым заметным недостатком картинки, генерируемой 3D-ускорителем, можно назвать эффект "лестницы" (aliasing) на краях треугольников, из которых состоит изображение. Это неизбежное явление, связанное с тем, что экран монитора состоит из прямоугольной матрицы пикселей, и линии на нем получаются ломанными. Для того чтобы сгладить края объектов, нужно либо повысить разрешение (тогда пиксели станут меньше), либо применить метод FSAA (Full Screen Anti-Aliasing), при котором цвета соседних пикселей усредняются по всему экрану. Все предшествующие 3D-ускорители использовали механизм суперсэмплинга. Это решение задачи "в лоб": в буфере строится изображение с увеличенным в несколько раз разрешением по вертикали, горизонтали или сразу по обоим направлениям. После этого цвет пикселя (сэмпла) получается усреднением цветов соседних пикселей на укрупненном изображении. При этом возникают два неприятных эффекта: во-первых, изображение заметно "размазывается", во-вторых, резко падает скорость, так как фактически 3D-ускоритель работает в более высоком разрешении.
GeForce3 использовал два новых механизма. Первый - алгоритм с непроизносимым названием Quincunx. Суть - использование не простой 2- или 4-сэмпловой маски соседних пикселей, а 5-сэмпловой. Т.е. берется блок 3х3, и результирующее значение вычисляется на основе пяти, а не девяти пикселей этого блока. В итоге при затратах как на 2-сэмпловый FSAA мы получали качество 4-сэмплового FSAA.
Второй алгоритм - мультисэмплинг, который nVidia назвала HRAA (High-Resolution Anti-Aliasing). В его основе лежит генерация того же изображения с высоким разрешением, только цвет пикселей, которые в результате все равно сольются в один, не вычисляется каждый раз заново. Если группа пикселей, которая должна быть свернута в один, лежит внутри треугольника, то она заполняется одним и тем же значением цвета. Если же группа лежит на границе, она рассчитывается обычным образом. Тем самым количество расчетов при проведении HRAA сократилось в несколько раз, а качество улучшилось, так как внутри треугольников текстуры не сглаживаются.

GeForce3 - был революцией в мире видеоускорителей. Множество нововведений, радикально улучшающих архитектуру чипа. Множество новых возможностей для разработчиков. Высокая производительность, которую путем разгона можно было нарастить еще немного , отлаженные драйверы.

Max Payne

Max Payne