Компьютеры
8 ноября 2006, 00:33

nVIDIA GeForce 8800: революция свершилась! Часть первая: архитектура G80

На протяжении долгих лет архитектура графических процессоров принципиально не изменялась. Такое понятие, как «конвейер», стало доминирующим в описании архитектуры конкретного видеопроцессора, и отличия между ними в основном состояли в количестве отдельных вычислительных блоков. И вот наконец сегодня компания NVIDIA показывает нам другой путь развития.

На протяжении долгих лет архитектура графических процессоров принципиально не изменялась. Такое понятие, как «конвейер», стало доминирующим в описании архитектуры конкретного видеопроцессора, и отличия между ними в основном состояли в количестве отдельных вычислительных блоков. И вот наконец сегодня компания NVIDIA показывает нам другой путь развития.

Заметим сразу, что никаких сравнений с продуктами и особенностями архитектур конкурентов мы проводить не будем в связи с тем, что условия явно не равны: архитектура G80 специально разрабатывалась для DirectX 10, а все присутствующие на рынке продукты ориентированы на предыдущие версии API. Поэтому проводить параллели и искать отличия в реализации конкретных функций некорректно.

Немного теории: классический конвейер и DirectX 10

Начнём с небольшого отступления от сегодняшней темы и расскажем нашим читателям, что же такое пресловутый конвейер, из чего он состоит.

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

pipeline classic

Классический конвейер

Итак, изначально видеопроцессор получает от хоста (центрального процессора) информацию об объекте, который необходимо обработать. В дело вступает вершинный процессор ядра. Он на основании полученных данных строит конкретный объект с фиксированными координатами, называемый вершиной (vertice). На данном этапе проводятся отдельные дополнительные операции над этими вершинами – например, преобразование и освещение, изменение объекта шейдерами и т.п. Кстати, аппаратный Transform & Lighting (T&L) впервые был внедрён NVIDIA в ядро GeForce 256 в 1999 году, затем дополнительные возможности обработки вершин добавлялись с поддержкой новых версий DirectX (программируемые вершинные шейдеры в DirectX 8, пиксельные – в DirectX 9 и т.д.).

Следующая ступень конвейера – сборка (setup). На этом этапе вершины собираются в примитивы – треугольники (полигоны), линии или точки. Подчеркнём, что ни о каком видимом объекте пока речь не идёт, это абстрактная информация о том, что вершины объединены в какой-то геометрический объект.

Эта информация переходит дальше по конвейеру – в пиксельный процессор, который определяет конечные пиксели, которые будут выведены в кадровый буфер, и проводит над ними различные операции: затенение или освещение, текстурирование, присвоение цвета, данных о прозрачности и т.п. В целом эту операцию называют растеризацией, потому что объект разбивается на отдельные фрагменты – пиксели. Понятие «растровый» означает «состоящий из точек», именно такая графика имеет отношение к трёхмерной, существует ещё векторная, объекты в которой представляются математическими формулами. Также в относительно современных графических процессорах на данной стадии на сцену выходят пиксельные шейдеры, способные отобразить специфическое изображение (шейдеры освещения, затенения, блеска и т.п.) Над пикселями проводится Z-тестирование (выясняется глубина каждой точки, так как мы говорим о трёхмерном изображении), и линии сглаживаются (antialiasing). Вся эта информация передаётся на следующую стадию (Z-данные – в Z-буфер).

Затем фрагменты с присвоенными им координатами цветности (RGBA, где A – alpha, обозначающая дополнительную характеристику пикселя (прозрачность) обрабатываются блоком ROP (Raster Operations). Из Z-буфера вычитываются данные о расположении конкретных пикселей, чтобы отбросить те, которые будут скрыты другими объектами и не видны пользователю. Фрагменты снова собираются в полигоны, состоящие из отдельных пикселей, и весь массив уже обработанной картинки передаётся в кадровый буфер для последующей выборки и вывода на экран.

Вот такой процесс, собственно, и называется конвейером. В характеристиках графических процессоров указывают условные конвейеры, что означает, сколько одновременно обработок может проводить ядро. Например, возьмём GeForce 7600GT: 12 пиксельных конвейеров по одному TMU на каждый, 5 вершинных процессоров. Понимать это следует так: за один такт ядро способно обработать 5 наборов данных о вершинах и построить 5 вершин, одновременно после растеризации обрабатываются 12 пикселей, на каждый из которых может быть наложена текстура. Иногда делается упор на мультитекстурирование, когда на один пиксель накладывается несколько текстур, в таком случае в ядре предусматривается кратное количество пиксельных процессоров и TMU (например 4/8). Если TMU меньше, чем пиксельных процессоров, то текстурирование проходит за несколько тактов.

Проблема подобной организации обработки графики состоит в том, что если уже обработанные данные нужно снова запросить и изменить, приходится дождаться завершения всего конвейера и заново вычитать их из кадрового буфера – или вообще снова получить от хоста. Если речь идёт об изменении на поздней стадии (например, работа пиксельного шейдера, скажем, освещение), то все предыдущие стадии конвейера заново обрабатываются почем зря, тратя на это вычислительную мощность других блоков. Также разделение функциональных блоков ядра на отдельные группы (пиксельный, вершинный процессоры) очень сильно ограничивает разработчиков графических приложений. Им приходится думать, как бы не переборщить с геометрическими характеристиками и не «положить» видеокарты, снабжённые малым количеством вершинных процессоров, или, наоборот, «наступать на горло песне» и урезать красоты, получаемые мультитекстурированием и сложными пиксельными шейдерами во благо обладателей видеокарт с уклоном в геометрию, а не работу с растром.

Теперь рассмотрим DirectX 10 API.

Стоит сразу отметить, что новая версия API от Microsoft, также известная как WGF 2.0 (Windows Graphics Foundation), в чём-то является развитием предыдущих версий, а в чём-то это очень большой прорыв.

Поясним для читателей, не разбирающихся в 3D-программировании, как работает DirectX да и любой API. Фактически это виртуальная машина, внутри которой выполняется код приложения (игры и т.п.). Преимущество такого подхода состоит в том, что разработчик игры не должен задумываться о том, как же в конкретной видеокарте реализована та или иная функция, он лишь пишет универсальный код на языках Microsoft High Level Shader Language или NVIDIA Cg. Этот код в рамках работающей виртуальной машины API компилируется в понятный конкретному GPU набор машинных команд с помощью компилятора Just-In-Time (JIT). При смене конкретных типов инструкций ядро виртуальной машины меняет модель работы, это выполняется центральным процессором на уровне драйвера.

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

В Shader Model 4 включено большое количество новых инструкций и унифицирован их набор, введены новые регистры и константы и многое другое. Таблица изменений – в следующей иллюстрации:

SM4 compare

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

stream

Потоковый вывод данных даёт возможность намного быстрее отослать на повторную обработку данные, уже прошедшие через вершинный или геометрический шейдер, с помощью специального потокового буфера (stream buffer). Благодаря этому не тратится время на ожидание завершения работы пиксельного шейдера и растеризации.

Отметим ещё одну новацию в DirectX 10: введён новый вид шейдеров – geometry shaders. Они позволяют работать с геометрией не на уровне отдельной вершины, как в случае с вершинными шейдерами, а на уровне примитивов. Это означает, что не нужно больше менять каждую вершину, собираемую затем в линию, можно геометрическим шейдером изменить всю линию. Это должно серьёзно разгрузить центральный процессор и предоставить ему работу только с движком игры и AI. Работа с геометрическим шейдером позволит затрачивать намного меньшее количество тактов графического процессора на просчёт сложных геометрических преобразований, в частности, всеми любимых реалистичных волос. Также геометрические шейдеры помогут увеличить реалистичность изображения воды за счёт возможностей тесселяции (разбиения полигонов на более мелкие).

Приводим таблицу сравнения алгоритмов обработки волос в DirectX 9 и 10:

hair

Заметим, что в работе с физическими эффектами графический процессор намного эффективнее центрального. На иллюстрации видно, как перенос физики на GPU увеличивает производительность в 10 (!) раз:

physics

В DirectX 10 акцентируется внимание и на вершинном текстурировании, возможном как для вершинных, так и для геометрических шейдеров. Благодаря вершинному текстурированию можно изменять позиции и формы объектов путем выгрузки из памяти карт смещений (displacement maps) и внесения содержащихся в них изменений в координаты вершин и примитивов.

В DirectX 10, кроме нововведений, значительно улучшена и расширена функциональность. Данная информация не рассматривается в нашем материале, поэтому интересующимся советуем ознакомиться с документом «Direct3D 10 System» (David Blythe, Microsoft Corp.), доступным на сайте Microsoft, а также «Technical Brief. Microsoft DirectX 10. The next generation graphics API.» с сайта NVIDIA.

Архитектура NVIDIA G80: концепция

Итак, NVIDIA наконец предлагает унифицировать функциональные блоки графического процессора, с тем чтобы они были способны обрабатывать любые виды данных (и даже более, о чём далее) без существенных потерь производительности. Сейчас мы подробно разберём архитектуру ядра G80.

architecture

Структурная схема ядра G80

Прежде всего сообщим, что основной упор при разработке этого ядра делался на поддержку DirectX 10 и Shader Model 4, и, соответственно, новый принцип обработки графики применим именно в этом API. Не стоит пугаться: игры, написанные на предыдущих версиях DirectX, тоже отлично обрабатываются. Кстати, по словам представителей NVIDIA, G80 не просто разрабатывался для поддержки DirectX 10, эти видеокарты были тестовым оборудованием, на котором этот самый API отлаживался!

Как уже было сказано, в DirectX 10 появляется новое понятие – поток данных (stream). Поток может быть входящим и исходящим (input stream и output stream), причём исходящий поток одного процессора может с лёгкостью стать входящим потоком другого.

Сделано это вот для чего:

unified vs classic

Сравнение классического конвейера и унифицированного дизайна

Унифицируя блоки обработки, разработчик графики получает возможность повторно обрабатывать данные, выведенные одним блоком, с помощью другого блока. В классическом конвейере данные сначала должны пройти до конца и быть выведены в кадровый буфер. Пример нового принципа обработки: вершинный процессор создает куб, который одновременно передаётся на дальнейшее текстурирование и выгружается в память, откуда его выбирает другой процессор и с помощью вершинного шейдера превращает в шар. Если же повторная обработка не требуется (что в современных играх случается не так уж и часто), то блоки способны работать как классическое ядро, одновременно обрабатывая несколько наборов данных.

Итак, NVIDIA создает в ядре 128 так называемых потоковых процессоров (streaming processor). Они являются унифицированными, то есть способны обрабатывать как пиксельные, так и вершинные шейдеры. Это сделано для того, чтобы динамически изменять производительность ядра в отдельных моделях работы, будь то обработка геометрии или сложная работа с цветом/светом/блеском/прозрачностью/etc. Мы наглядно продемонстрируем, зачем унифицировать блоки.

Классический дизайн ядра с фиксированным количеством вершинных и пиксельных процессоров (4/8 в данном случае):

unify

Как видим, сложная многополигональная сцена заставляет вершинные процессоры (которых всего 4) работать «не щадя живота своего», пиксельные процессоры простаивают. А вот бушующее море кладёт на все 16 лопаток пиксельные процессоры за счёт сложного шейдера, в то время как геометрии тут не очень много. Сразу все дружно вспомнили демо NVIDIA с боевым кораблём на фоне волнующейся воды.

Теперь посмотрим, как дело обстоит у архитектуры с унифицированными шейдерами:

unify2

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

Что ж, концепция понятна и приятна. Рассмотрим детально процесс обработки графики этой архитектурой.

Революционный конвейер

Host Inteface принимает данные о вершинах и примитивах от графического драйвера и передаёт их в Input assembler. Тот считывает данные из буфера хоста и переводит в формат FP 32 (между прочим, новый уровень детализации обработки, раньше применялся FP 16). Каждой вершине и примитиву присваивается идентификатор ID, чтобы в дальнейшем диспетчер мог направлять их на повторную обработку. Затем данные разделяются на потоки (streams) и передаются непосредственно в потоковые процессоры, которые их и обрабатывают.

После обработки в потоковых процессорах (подробнее о них – в части «Особенности архитектуры и нововведения») примитивы передаются в 6 блоков ROP, каждый из которых обрабатывает 4 пикселя (16 субпикселей RGBA). После растеризации данные выгружаются в кадровый буфер и затем выводятся на экран.

Новации в GeForce 8800

Теперь пройдёмся по особенностям и нововведениям в новой архитектуре от NVIDIA.

Начнём с потоковых процессоров (Stream processors).

Итак, 128 потоковых процессоров объединены по 8 и работают на частоте 1350 МГц. Они обрабатывают сырые данные и передают их блокам текстурирования. На каждые 4 потоковых процессора приходится 1 юнит адресации текстур и 2 юнита фильтрации текстур. То есть на каждый функциональный блок в ядре, как видим по диаграмме, приходится 16 потоковых процессоров, 4 юнита адресации текстур и 8 юнитов фильтрации текстур. Нововведение: каждому такому блоку выделен кэш первого уровня. Текстурные блоки и кэш работают на частоте ядра 575 МГц.

sp

Это сделано как раз для обеспечения потоковой обработки данных. Данные, обработанные одним потоковым процессором и выгруженные в кэш (это и есть stream output), могут быть вычитаны с помощью диспетчера ветвлений GigaThread другим процессором и заново обработаны (stream input), без ожидания выгрузки в кадровый буфер.

Что также изменено в G80: все потоковые процессоры – скалярные. Мы уже на протяжении нескольких лет наблюдаем постепенный переход от векторных вычислений к скалярным (от цвета к математике), однако в рамках классической архитектуры одновременно проводить оба типа вычислений было невозможно. Для этого процессорные единицы разделялись, потому как скалярные вычисления на векторных процессорах выполняются очень неэффективно. Применялись даже такие экзотические решения, как динамическое перепрофилирование с векторных на скалярные вычисления.

GeForce 8800 полностью построен из скалярных процессоров в связи с тем, что все больше вычислений проводятся на шейдерной основе. Инженеры NVIDIA небезосновательно решили, что 128 скалярных процессоров будут более эффективны, чем 32 векторных конвейера по 4 (3 + 1) единицы. В случае необходимости выполнения векторных вычислений векторный код переводится в скалярный в самом ядре G80 для максимальной эффективности. Процессоры способны одновременно выполнять инструкции MUL и MAD и обеспечивают до 520 гигафлоп производительности.

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

math+tex

Более того, заметно улучшенный по сравнению с G7x диспетчер ветвлений шейдера под названием GigaThread позволяет выполнять вычисление нескольких ветвлений шейдера одновременно, а не последовательно, как в случае с G7x. Причём, по сообщениям NVIDIA, отличная эффективность сохраняется при granularity ветвления в 16 пикселей, а иногда и 32 пикселя. Идеальным случаем для ветвления в G80 является тайл в 4х4 когерентных пикселя:

branching

Текстурные блоки способны текстурировать до 64 пикселей за такт и адресовать до 32 текселей. При включении билинейной фильтрации или анизотропной фильтрации 2х скорость текстурирования падает до 32 пикселей за такт (на самом деле она не падает, скорость текстурирования уравнивается со скоростью адресации текстур).

Таким образом, билинейная фильтрация и 2x AF выполняются в G80 вообще без потерь производительности. Билинейная фильтрация FP16-текстур выполняется также со скоростью 32 пикселя/такт, что в 5 раз быстрее G70, а двукратную анизотропную фильтрацию TMU выполняет на скорости 16 пикселей за такт.

filtering perf

Сравнение скорости фильтрации G7x и G80

Скорость заполнения текстур в режимах билинейной и двукратной анизотропной фильтрации равна 575 МГц*32 текселя за такт = 18,4 млрд текселей за такт. Однако если учесть, что 2xAF выполняется без потерь производительности и требует двукратной билинейной фильтрации, эффективная скорость заполнения сцены составляет уже 36,8 млрд текселей. Уже и в графике появляется понятие «эффективная скорость», как в памяти DDR для частоты.

Изменения в следующей стадии обработки – растеризации – достойны отдельного рассмотрения – в частности, способы сглаживания картинки. Поддерживаются все существующие методы: мультисэмплинг, суперсэмплинг и адаптивное сглаживание. Введены новые профили сглаживания: 8x, 8xQ, 16x и 16xQ. 

Ещё одно нововведение в архитектуре G80: вместо того чтобы проводить выборку Z-данных уже в процессе обработки в ROP, отсеивание пикселей, которые не будут видны на сцене, проводится сразу после входа данных для пиксельной обработки (так по привычке и крутится в голове «пиксельный процессор»). Это должно очень сильно повлиять на производительность, потому что в сложных сценах с большим количеством объектов традиционные архитектуры просчитывают огромное количество точек, которые уже после прохождения всех вычислительных блоков будут просто выброшены ROP. А ведь это немалые задержки в ядре, которых можно избежать, если сразу определить, над чем работать, а что проигнорировать.

Эту способность NVIDIA называет Early-Z , а сам метод отсеивания невидимых пикселей – Z-Cull, он уже присутствовал и в GeForce 6x. Заявленная скорость отсеивания в 4 раза больше, чем в GeForce 7900GTX.

early-z

Наконец мы видим первую видеокарту, способную без ухищрений обрабатывать HDR -графику одновременно с полноэкранным сглаживанием. ROP ядра способны обрабатывать текстуры в формате как FP16, так и FP32, причём возможно одновременное использование обоих типов текстур. Они могут использоваться для мультисэмплинга. В ROP заложены новые технологии сжатия данных, что должно улучшить работу с цветом и Z-буфером.

Каждый из ROP обеспечивает 64-битный интерфейс доступа к кадровому буферу, то есть суммарная шина доступа к памяти имеет разрядность 384 бит. На видеокарты GeForce 8800GTX устанавливаются чипы ёмкостью 512 Мбит, что в сумме и даёт 768 Мбайт памяти, о которой было столько пересудов. Поддерживаются типы памяти DDR1, DDR2, GDDR3 и GDDR4. На GeForce 8800GTX устанавливаются чипы GDDR3, работающие на частоте 900 МГц. Таким образом, полоса пропускания шины памяти составляет 86,4 Гбайт/с. Кроме того, каждый блок ROP снабжен кэшем L2 для все той же поддержки stream input/stream output. Довольно логичный ход, поскольку этот кэш намного быстрее кадрового буфера.

Теперь отвлечёмся от «железных» нововведений и рассмотрим новые технологии обработки графики.

NVIDIA вместе с GeForce 8800 представляет технологию Lumenex Engine. В неё входят новые методы сглаживания (8xQ, 16xQ), которые выполняются на скорости, сравнимой со скоростью 4xFSAA традиционным мультисэмплингом.

Детализация обработки FP-текстур сильно выросла, и теперь просчёт HDR выполняется со 128-битной точностью, по 32 бит на компонент. Если подобная точность будет реализована в играх или хотя бы в тестовых приложениях, мы сможем наблюдать различимые детали как на очень тёмных, так и на очень светлых поверхностях и забудем о деталях с тенями. Причём HDR-обработка как в формате FP16, так и в формате FP32 проводится одновременно с полноэкранным сглаживанием мультисэмплингом без каких-либо ограничений. Фильтрация текстур больше не имеет «неудобных» углов обзора и выполняется одинаково качественно на любом объекте. Для подтверждения качества фильтрации текстур приводим скриншот сравнения GeForce 7900GTX и GeForce 8800GTX:

AF

Для своего нового символа NVIDIA выбрала реального человека: модель и актрису Эдриенн Керри (Adrianne Curry), известную в основном американским жителям по телепередаче «America’s Next Top Model», телесериалу «My Fair Brady» и по публикациям в журнале Playboy, как же без этого. Однако в лучших традициях производителей видеокарт её не просто сфотографировали, но и оцифровали, и теперь на сайте NVIDIA гордо красуется электронный клон американской красавицы. Ну а мы с нетерпением ждём демо с этой барышней.

Итак, приводим пару иллюстраций того, с какой детализацией Lumenex Engine позволил смоделировать лицо Эдриенн:

Arrows-left
Arrows-right
Reload
1 / 2

adrianne1

Lumenex Engine использует 10-битную адресацию цветовых координат, что позволяет включить в отображаемую палитру более миллиарда оттенков, в то время как традиционная 8-битная адресация дает 16,7 млн оттенков. Впрочем, мониторов, способных отображать такое количество оттенков, пока не существует, но это неплохой задел на будущее для NVIDIA и стимул для производителей мониторов.

Ещё одна технология, введённая в GeForce 8800: Quantum Effects. Это технология обработки физики средствами самого графического процессора. Она позволяет разгрузить центральный процессор и значительно повысить реалистичность в играх. Основные типы эффектов, обрабатываемых Quantum Effects, – огонь, дым, взрыв, столкновения мелких объектов, а также реалистичная отработка волос, меха и воды.

quantum

Реализуется поддержка Quantum Effects путем написания специальных программ, включаемых в игровое приложение. Поскольку NVIDIA позиционирует технологию как конкурента AGEIA, логично предположить, что основана она на API Havok FX, что не может не радовать, поскольку этот же API рассматривался и ATi, и хоть тут у нас не будет войны стандартов. Между прочим, стоит подумать о жизнеспособности Ageia в свете поддержки конкурента двумя основными производителями видеопроцессоров.

Для любителей просмотра видео высокого разрешения NVIDIA подготовила и внедрила в ядро поддержку технологий PureVideo и PureVideo HD. Если о PureVideo уже довольно давно и подробно рассказывалось на просторах Сети, то PureVideo HD – это новая инкарнация технологии, лишь около недели назад появившаяся в арсенале средств NVIDIA. Упор в ней делается на поддержку новых стандартов HD DVD и Blu-ray. Аппаратная составляющая представлена встроенным в ядро декодером видео, сжатого с использованием кодеков H.264, VC-1, WMV/WMV-HD и MPEG-2 HD. Это решение позволяет не нагружать центральный процессор декодированием видеопотока, оставив на его плечах только постобработку и разделение аудио/видеопотока. По сообщению NVIDIA, в тестовом пакете HQV Benchmark, оценивающем производительность видеокарт в декодировании видео, GeForce 8800 получили 128 очков из 130 возможных, что является рекордом.

С помощью PureVideo HD можно просматривать видео Blu-ray и HD DVD, защищённое технологией AACS (с использованием совместимых с PureVideo программных проигрывателей от таких разработчиков, как CyberLink, Intervideo и Nero).

Постобработка с помощью PureVideo HD позволяет сгладить картинку и провести тонкую настройку цветности в видео высокого разрешения, а главное – устранить шумы, на которые жалуются многие пользователи. Для сравнения – иллюстрация.

purevideo

Продолжает парад инноваций технология Extreme High Definition Gaming (XHD). Эта технология позволяет играть в трёхмерные игры на широкоэкранных мониторах в разрешениях до 2560х1600. При этом заявляется, что чёткость изображения до 7 раз превосходит данную характеристику в видео стандарта 1080i и вдвое – 1080p. Для этого необходимо подключать монитор по Dual-Link DVI. А для того чтобы получить ещё и приемлемую производительность, NVIDIA рекомендует массивы из 2 видеокарт в SLI, благо для них NVIDIA сегодня представила и новые чипсеты, о чём в отдельном материале вам расскажет мой коллега.

XHD

Вывод

Итак, можно сказать, что у NVIDIA получилось сойти с пути эволюции и начать революционный этап в развитии графических процессоров. Во многом это заслуга не только этой компании, но и Microsoft, разработавшей новый API DirectX 10, однако как «железо» ничто без программ, так и программы ничто без оборудования, способного их исполнять. Планка производительности в очередной раз поднята на невиданный ранее уровень, а новые идеи будут развиваться на протяжении нескольких лет, как до сегодняшнего дня развивались традиционные архитектуры. Нам лишь осталось дождаться выхода игр, поддерживающих все те возможности, что предоставила разработчикам NVIDIA, и наслаждаться наконец так давно обещанной кинематографической графикой.

Ознакомиться с результатами теста nVIDIA GeForce 8800GTX.

Что такое новый чипсет NVIDIA nForce 600i?