Архивы: по дате | по разделам | по авторам

nVidia GeForce 8800: масштабируемая архитектура и DirectX 10

АрхивВидео
автор : Олег Нечай   23.11.2006

Новое семейство видеокарт может похвастаться интересной унифицированной потоковой архитектурой, поддержкой массы новых технологий и, по оценкам независимых экспертов, самой высокой на данный момент производительностью.

За последние годы мы привыкли к тому, что в индустрии графических процессоров ничего принципиально нового не происходит: растёт число транзисторов, плавно повышается производительность, появляются системы для параллельной работы двух и четырёх видеокарт. Однако презентация nVidia GeForce 8800 (кодовое название G80) - явление совсем иного порядка. Во-первых, это первый в мире графический ускоритель, полностью поддерживающий новый программный интерфейс DirectX 10, на базе которого строится графика в новейшей операционной системе Windows Vista. Во-вторых, этот видеочип построен на базе принципиально новой архитектуры, чем все графические процессоры последних лет, и главное достоинство этой архитектуры - практически неограниченные возможности масштабируемости.

Этот материал посвящен, прежде всего, именно архитектуре GeForce 8800, а также новым технологиям, реализованным в G80, который первые независимые тестировщики уже успели назвать самым высокопроизводительным "настольным" графическим ускорителем в мире.

DirectX 10

Начнём с первого несомненного достоинства GeForce 8800, на которое делают упор маркетологи nVidia - с программного интерфейса DirectX 10. Прежде всего, что такое "программный интерфейс" и зачем он нужен. Программный интерфейс или API (от английских слов Application Programming Interface - "интерфейс для программирования приложений") представляет собой прикладную программную библиотеку, выступающую в роли стандартного связующего элемента между прикладными программами, например, играми, и низкоуровневыми командами драйвера графического ускорителя. Помимо обеспечения максимальной совместимости различных приложений и систем команд графических процессоров, API позволяет программно эмулировать отдельные функции, не поддерживаемые видеокартой аппаратно, что позволяет гарантировать работоспособность с современными системами даже самых недорогих видеочипов. Проще говоря, программный интерфейс - это именно то, что помогает программистам воссоздать на мониторе задуманную художниками красивую трёхмерную картинку, не обращаясь к средствам низкоуровневого программирования под конкретное "железо".

Что же стоит ожидать от DirectX 10, особенно если учесть, что самые продвинутые программисты, занимающиеся компьютерными играми, ещё только-только освоили возможности DirectX 9, да и то не все? Кстати, благодаря тому, что в DirectX 10 предусмотрена поддержка всех функций DirectX 9, а также унифицированная модель шейдеров, можно предположить, что уже изученные возможности предыдущего программного интерфейса будут реализованы на все сто процентов.

Прежде всего, в DirectX 10 уменьшено число передаваемых вызовов прорисовки (draw calls), изменяющих состояние процессора, из-за чего программный интерфейс девятой версии мог стать фактором, ограничивающим производительность видеосистемы. В новом API расширено число объектов состояния, которые хранят всю информацию для данной конкретной ступени конвейера - всего их пять: InputLayout (буфер входящей вершинной информации), Sampler (сэмплер), Rasterizer (растровый процессор), DepthStencil (модуль глубинных текстур теней) и Blend (модуль смешивания). В этих объектах может быстро изменяться вся информация о состоянии без необходимости отправки множественных вызовов.

Кроме того, появились так называемые постоянные буферы для хранения данных о шейдерах: каждая шейдерная программа имеет теперь доступ к 16 буферам из 4096 постоянных, в то время как в DirectX 9 число регистров не могло превышать 256. При этом каждый буфер обновляется одним вызовом прорисовки, что позволяет снизить нагрузку при обработке информации шейдерной программы. Для хранения шейдерных данных доступны и 128 текстурных массивов, в каждом из которых можно хранить 512 текстур одного размера.

Один чрезвычайно интересный элемент в DirectX 10 носит название "view", что в этом случае можно понимать как "точка зрения": благодаря ему одни и те же данные могут интерпретироваться по-разному. К примеру, пиксельный шейдер может использовать вершинные данные для рендеринга текстуры, а затем вершинный шейдер, "взглянув на них со своей стороны", отправит их в вершинный буфер. Такие "точки зрения" позволяют разработчикам ПО оптимальным образом загрузить конвейеры и, тем самым, повысить скорость формирования изображения.

Команда DrawAuto позволяет перерисовывать объект без обращения к центральному процессору. Эта команда, а также технология предикативного рендеринга позволяет существенно снизить влияние большого числа вызовов прорисовки на общий уровень производительности, что происходило в DirectX 9.

Наконец, в DirectX 10 вместо традиционного строго последовательного конвейера применена система потокового вывода, смысл которой заключается в том, что данные шейдеров могут через специальный потоковый выход (stream output) передаваться через буфер для последующей обработки - это позволяет не дожидаться окончания полной обработки шейдера, как это принято в обычном конвейере, и повысить производительность. Схема такого конвейера отлично понятна из слайда, предоставленного nVidia:

Помимо вершинных и пиксельных шейдеров, в DirectX 10 появились и так называемые геометрические. Они дают возможность работать с геометрическими операциями, к примеру, целиком обрабатывать линии, что, по сравнению с вершинными шейдерами, описывающими лишь вершины, обеспечивает существенный уровень производительности наряду с повышением реалистичности изображения и снижением нагрузки на процессор. Как подчёркивают в nVidia, геометрические шейдеры впервые в истории позволят графическим процессорам самостоятельно генерировать данные, а не только обрабатывать существующие.

Отличия четвёртой версии шейдеров от третьей наглядно представлены в таблице:

Безусловно, всех особенностей DirectX 10 в коротком обзоре мы коснуться не можем, но главные из них стоит выделить особо: это система потоковой обработки данных; оптимизация использования вычислительных ресурсов за счёт снижения числа вызовов прорисовки и снижения их влияния на общую производительность, а также ввода геометрических шейдеров; увеличение и унификация числа инструкций.

Архитектура G80

Графический процессор с кодовым названием G80 - микрочип, полностью поддерживающий DirectX 10, и это не могло не сказаться на его архитектуре. Прежде всего, этот чип позволяет обрабатывать любые шейдеры на одних и тех же вычислительных модулях. Иными словами, блоки обработки в новом процессоре унифицированы, что соответствует философии DirectX 10, согласно которой система потокового вывода позволяет неоднократно обрабатывать данные с одного модуля другим. Взглянем на блок-схему процессора G80:

Микросхема состоит из 128 процессоров, объединённых в 8 больших блоков, в каждом из которых содержится по 16 блоков целочисленных вычислений (или арифметико-логического процессора - ALU) - они выделены зелёным цветом и именуются здесь как SP - Stream Processors, то есть "потоковые процессоры". При этом с каждым из восьми блоков работают по 4 блока текстурирования (или текстурного процессора - TMU), состоящие из 4 модулей адресации (TA) и восьми модулей фильтрации (TF) - они на схеме синего цвета.

Каждый из 8 блоков оснащён кэш-памятью первого уровня. Блоки целочисленных вычислений не векторные, а скалярные, при этом они унифицированы, что позволяет при необходимости использовать для любых типов вычислений любые свободные процессоры. Такая схема позволяет если не полностью исключить, то свести к минимуму ситуации, когда блоки обработки пиксельных шейдеров простаивают, в то время как блоки вершинные шейдеров не справляются с нагрузкой.

Кроме того, чип оснащён 6 блоками растеризации (ROP), каждый из которых способен обрабатывать 4 пикселя (или 16 субпикселей, как показано на схеме) за такт, что означает возможность обработки всего 24 пикселей за один такт в цвете и с Z-буфером (т.е. с данными о глубине). При работе только с Z-буфером специальная технология обеспечивает обработку до 192 сэмплов за такт, при условии, что один сэмпл соответствует одному пикселю. При включении 4х полноэкранного сглаживания возможна обработка в Z-буфере до 48 пикселей за такт.

Рядом с блоками растеризации размешена кэш-память второго уровня (оранжевого цвета).

На схеме также выделены шесть блоков графической памяти (он же - кадровый буфер или FB), каждый из которых имеет 64-разрядный интерфейс, что в сумме даёт 384-битную ширину шины памяти. В результате применения столь широкой шины пропускная способность видеопамяти достигает 86,3 Гб/с. Процессор GeForce 8800 GTX рассчитан на работу с 768 Мб видеопамяти типа GDDR3 с нормативной тактовой частотой 900 МГц (эффективная частота - 1800 МГц). Поддерживается также память типов DDR1, DDR2, DDR3 и GDDR4. Кстати, в nVidia воспользовались именно памятью типа GDDR3, а не новейшей GDDR4 потому, что при гораздо более высокой цене она практически не даёт прироста производительности по сравнению с уже весьма распространённой "третьей" GDDR.

Сверху на схеме серыми прямоугольниками представлены управляющие блоки, которые, несмотря на подписи, фактически могут являться универсальными, о чём свидетельствует их взаимосвязь и назначение. Непосредственно с восемью большими вычислительными блоками взаимодействуют модули вершинных, геометрических и пиксельных потоков; модуль Setup/Raster/ZCull отвечает за растеризацию треугольников в пиксели, а модуль Input Assembler фильтрует и "собирает" надлежащим образом поступающие для обработки в графический процессор данные.

На схеме прекрасно видно, что графический процессор G80 отлично масштабируем, ведь по сути любой из восьми модулей можно попросту убрать, или добавить к имеющимся ещё вычислительных модулей без необходимости внесения каких-либо изменений в саму архитектуру всего процессора. Если же учесть унифицированность конвейеров и улучшенный диспетчер ветвлений GigaThread, обеспечивающий одновременное вычисление нескольких ветвлений шейдера, то можно сказать, что новый полностью готов практически к любым условиям рендеринга, при условии, разумеется, соразмерности вычислительной мощности возлагаемым задачам.

Технологии G80

Кратко опишем фирменные технологии, без которых G80 не был бы самим собой.

Прежде всего, это встроенный в чип движок Lumenex, отвечающий за сглаживание, анизотропную фильтрацию и вывод картинки с широким динамическим диапазоном (HDR). Благодаря Lumenex владелец GeForce 8800 GTX доступ к новой технологии сглаживания 16х Coverage Sampling Antialiasing (CSAA) с поддержкой четырёх профилей 8x, 8xQ, 16x и 16xQ, анизотропной фильтрации с качеством 16х вне зависимости от угла обзора, 16- и 32-разрядной фильтрации текстур с плавающей запятой и полностью прямоугольному (т.е. без искажений плоскости) 128-разрядному режиму HDR, работающему одновременно со всеми перечисленными выше функциями.

Технология Quantum Effects призвана имитировать множество новых физических эффектов. Как утверждают в nVidia, GeForce 8800 со своими 128 потоковыми процессорами обеспечивет достаточный уровень производительность для вычислений с плавающей запятой, создавая вполне реалистичную имитацию эффекты дыма, огня, взрывов, движения волос, меха или течения воды.

Технология Early-Z обеспечивает фильтрацию невидимых на экране пикселей, обработка которых всё равно обычно осуществлялась видеопроцессором и отнимала немало вычислительных ресурсов, ещё до попадания данных в блок растеризации (ROP), в Z-буфере. Подобная технология применялась ещё в GeForce 6xхх, однако, как утверждают в nVidia, по скорости фильтрации G80 вчетверо превосходит GeForce 7900GTX.

В чипе реализованы технологии высококачественного воспроизведения видео PureVideo и PureVideo HD, при этом PureVideo HD поддерживает форматы высокого разрешения H.264, VC-1, WMV/WMV-HD и MPEG-2 HD, а PureVideo - обычные видеоформаты WMV и MPEG-2. Все графические ускорители семейства GeForce 8800 поддерживают систему зашиты контента HDCP для видео высокого разрешения, реализованную в форматах нового поколения Blu-ray Disc и HD DVD, что позволяет воспроизводить зашифрованное видео на совместимых с этой системой мониторах.

Все карты GeForce 8800 поддерживают технологию Extreme High Definition Gaming (XHD), которая позволяет играть в трёхмерные игры на широкоэкранных мониторах с разрешением вплоть до до 2560х1600 пикселей, что в семь раз превосходит качество картинки высокого разрешения телестандарта 1080i с чересстрочной развёрткой и вдвое - стандарта 1080p с прогрессивной развёрткой. Чтобы воспользоваться этим режимом, необходимо подключать монитор через двойной цифровой видеоинтерфейс Dual-Link DVI.

Краткие технические характеристики G80:
  • Кодовое название G80, товарная марка GeForce 8800
  • Технология производства - 0,09-микронная
  • 681 миллион транзисторов (GTX)
  • Унифицированная архитектура из 128 (GTX) или 96 (GTS) универсальных потоковых процессоров
  • Полная поддержка DirectX 10, включая шейдеры версии 4
  • Тактовая частота ядра - 575 МГц (GTX) или 500 МГц (GTS), потоковые процессоры работают на частоте 1350 (GTX) или 1200 (GTS) МГц
  • Оперативная память типа GDDR объёмом 768 (GTX) или 640 (GTS) Мб с эффективной частотой 1800 (GTX) или 1600 МГц (GTS)
  • 384- или 320-разрядная шина памяти
  • Отдельная микросхема интерфейсного контроллера NVIO (интерфейсы 2 RAMDAC, 2 Dual DVI, HDMI и HDTV)

Видеокарты серии GeForce 8800

Пока на рынке официально представлены две карты серии 8800 - топовая GeForce 8800 GTX и её младшая сестра GeForce 8800 GTS, которые отличаются как самими процессорами (в старшем 8, а в младшем - 6 больших вычислительных блоков), так и шиной и объёмом памяти (см. спецификации). Как видим, уже при анонсе nVidia продемонстрировала возможности масштабирования новой унифицированной архитектуры. Неожиданное новшество - выделение интерфейсов из общего чипа (который получился, к слову, весьма внушительных размеров) в отдельную микросхему NVIO. Референсные карты уже традиционно для высокопроизводительных моделей большие по габаритам, "двухэтажны" и имеют мощную систему охлаждения, так что чип NVIO не слишком бросается в глаза, тем более что теоретически такое дискретное решение способно свести к минимуму возможные помехи и наводки.

Карта с интерфейсом PCI Express x16 снабжена двумя дополнительными разъёмами питания (8- и 6-контактным), двумя цифровыми видеовыходами DVI и выходом S-Video. Разумеется, на карточках предусмотрены разъёмы для подключения в режиме SLI.

Заключение

Первые независимые тесты, которые несложно найти в интернете, показали, что GeForce 8800 GTX с внушительным перевесом выигрывает как у своих предшественниц из серии GeForce 7900 и 7950, так и у непосредственного конкурента ATI Radeon X1950 XTX. Очевидно, что ATI, которая не так давно полностью перешла во владение AMD, будет непросто отвоёвывать место в ряду производителей "самых-самых" графических процессоров. В несомненном активе G80 - первая в мире поддержка программного интерфейса DirectX 10, разработанного для операционной системы Windows Vista и унифицированная потоковая архитектура. С другой стороны, у ATI есть время проанализировать возможные ошибки nVidia (а их не может не быть, тем более у модели принципиально нового типа) и выпустить более привлекательный для потребителя продукт. А пока можно просто поздравить nVidia с удачным дебютом нового семейства графических процессоров и пожелать, чтобы столь мощные решения как можно быстрее стали бы доступны простым любителям компьютерных игр.

© ООО "Компьютерра-Онлайн", 1997-2019
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.