24 цилиндра от nVidia
Хорошо помню свое первое знакомство с ускорителями трехмерной графики. У одного из отцовских знакомых на компьютере глючили и упорно не желали запускаться какие-то программы - и меня попросили с этой проблемой разобраться. Корень зла, как вскоре выяснилось, крылся в недавно приобретенной крутейшей по тем временам плате Voodoo 2, а "программами" оказались Quake 2 и еще какие-то игрушки: худо-бедно разобраться с ними удалось методом научного тыка, особого интереса они для меня все равно не представляли. Но в комплекте к "Вуду" шел еще небольшой набор демонстрационных программок - и вот они казались чем-то фантастическим, невозможным, нереальным. Хотелось бросить все, наскрести необходимые для покупки 300 долларов, которые тогда этот ускоритель стоил, и немедленно поставить в свою машину такое же чудо.
С тех пор прошло немало лет и сменилось немало поколений ускорителей трехмерной графики. Демки, показывающие преимущества той или иной видеокарты, год от года становились все красивее и красивее (и добрались уже до якобы кинематографического качества), однако ощущение чуда, которое сопутствовало той самой, первой демонстрации, - уже не повторялось. Романтическая эпоха, когда каждый новый ускоритель был знаменательным событием, а на тематических форумах бушевали яростные споры фанатов той или иной графической компании, ушла в прошлое, и ушла, наверное, окончательно и бесповоротно. Видеокарта ли от ATI, видеокарта ли от nVidia - единственных по-настоящему выживших в те годы игроков этого рынка, - разница между ними сегодня сводится лишь к малозаметным отличиям в качестве получаемой картинки, уровне шума да производительности в приложениях. Быть может, ускорители будущего и новые поколения графических движков этот тезис опровергнут, а пока - рассмотрим очередной "сугубо эволюционный" продукт "игровой" индустрии.
Конфигурация тестового стенда:
процессор: AMD Athlon 64 FX 57 2,8 ГГц (200x14);
материнская плата: ASUS A8N SLI Deluxe;
оперативная память: 2x512 Кбайт Patriot XBLK (2-2-2-10);
жесткий диск: 2xWD Raptor 74 Гбайт, 10000 об./мин., RAID 0;
операционная система: Microsoft Windows XP SP2;
драйверы: последние официальные на момент написания статьи.
GeForce 6800 + восемь пиксельных конвейеров = ?
Кодовое название нового графического чипа nVidia - G70, "принципиально новое" для компании… и не несущее практически никакой информационной нагрузки. Однако если заглянуть в прошлое, выяснится, что вплоть до последнего момента (когда компания вдруг отказалась от традиционной маркировки своих чипов кодами NVxx) GPU GeForce 7800 именовался иначе - NV47. По принятой в nVidia схеме это означает, что GPU архитектурно относится к тому же поколению NV4x, что и чипы семейства GeForce 6xxx (напомню, что GeForce FX - это семейство NV3x; GeForce 3 и 4 - семейство NV2x; а GeForce 1 и 2 - семейство NV1x). Так что ничего принципиально новаторского в новом кристалле мы не увидим: перед нами все тот же классический GPU поколения DirectX 9.0c, поддерживающий шейдеры третьей версии (Shader Model 3.0), эдакий доработанный GeForce 6800 Ultra. Но что же тогда изменилось по сравнению с предыдущим поколением?
Во-первых, в полтора раза увеличилось количество пиксельных конвейеров - с 16 до 24. Уже одно это должно было при прочих равных увеличить теоретическую производительность G70 относительно NV40 примерно в полтора раза; однако инженеры nVidia пошли еще дальше и повысили производительность каждого отдельно взятого конвейера, добавив к каждому стандартному векторному ALU[Arithmetic & Logic Unit, базовое устройство, выполняющее основные вычислительные операции] "вспомогательное" упрощенное ALU, способное одновременно с "главным" выполнять некоторые простые операции. Такая схема позволяет, например, выполнять на конвейерах 7800GTX весьма популярную в шейдерах операцию MAD (Multiply Add, поэлементное умножение двух 4-компонентных векторов с прибавкой к полученному вектору третьего вектора) за один такт, а не за два. И это лишь одна из довольно большого числа ситуаций, когда за счет переноса некоторых операций на "упрощенные" ALU удается достичь двукратного прироста производительности. Инженеры nVidia говорят о полуторакратном (в среднем) приросте производительности на каждый пиксельный конвейер. Вкупе с полуторакратным же приростом числа пиксельных конвейеров получается, что предполагаемая пиковая производительность G70 более чем вдвое выше, нежели у предыдущего флагмана nVidia - NV40, и, похоже, именно это дало основание разработчикам заявить, что 7800GTX будет более быстрым решением, чем пара GeForce 6800 Ultra, работающих в режиме SLI. Кстати, 7800GTX тоже поддерживает технологию SLI.
Во-вторых, увеличилось число вершинных конвейеров (с 6 до 8), и была немного поднята тактовая частота ядра. Причем полной неожиданностью стало то, что в G70 тактовых частот теперь несколько: пиксельные и вершинные конвейеры тактируются раздельно и функционируют асинхронно[Строго говоря, в GPU этих частот даже не две, а три: в отличие от предыдущих поколений, G70 использует еще и "более независимые" блоки пиксельных операций (ROP). Они выполняют такие "вспомогательные" операции, как блендинг, z-тест на отсечение невидимых пикселов, вычисление итогового цвета при антиалиасинге и запись "готового продукта" в видеопамять и фрейм-буфер акселератора. У большинства предыдущих ускорителей Nvidia было по одному блоку ROP на пиксельный конвейер; в G70 компания отошла от этой традиции и поставила 16 ROP, подключающихся через специальный быстродействующий "свитч", при 24 пиксельных конвейерах. Тактовая частота ROP сегодня совпадает с тактовой частотой пиксельных конвейеров, однако в последующих поколениях GPU и даже в последующих вариациях G70 ситуация может измениться]. "Основная" тактовая частота, на которой работают пиксельные конвейеры, составляет 430 МГц; "вторая основная", на которой работают вершинные конвейеры, - 470 МГц. Сводя эти данные воедино, получаем, что теоретически GeForce 7800GTX должен примерно в 2,42 раза (!) по "пиксельной" и 1,57 раза по "вершинной" производительности превосходить 6800 Ultra. Совсем неплохо для "старой" архитектуры, не правда ли? И это еще не предел: судя по названию и поразительно удачным оверклокерским экспериментам[В нашей тестовой лаборатории мы разогнали 7800GTX до частот 500/1320 МГц], nVidia может выпустить заметно более быструю GeForce 7800 Ultra[Еще одна интересная особенность G70: пиксельные конвейеры тактируются не как бог на душу положит, а с шагом 27 МГц. К примеру, 16x27 = 432 МГц, базовая частота 7800 GTX. Тактовые частоты пиксельных конвейеров свеженькой GeForce 7800GT составляют 15x27 = 405 МГц. Резонно предположить, что тактовая частота пиксельных конвейеров "Ультры", буде она появится, будет не меньше 17x27 = 459 (460), а то и 486 (490) МГц].
В-третьих, слегка возросла производительность оперативной памяти. G70 работает с 256-разрядной шиной памяти стандарта GDDR3, причем на ускорители 7800GTX рекомендовано устанавливать модули с частотой передачи данных 1200 МГц (у NV40 aka GeForce 6800 Ultra - 1100 МГц). Поскольку существуют и более быстрые микросхемы памяти, вполне возможно, что некоторые производители со временем выпустят и "оверклокерские" варианты 7800GTX, снабдив их, скажем, чипами с временем выборки 1,4 нс (частоты до 1400 МГц)[Именно такую память планируется использовать в R520 - асимметричном ответе канадской ATI на рассматриваемые сегодня новинки от Nvidia]. Кстати, оперативной памяти на плату теперь можно устанавливать аж до гигабайта. Общение с "системной" оперативной памятью и чипсетом осуществляется исключительно по шине PCI-Express x16 (скорее всего, переходник HSI больше использоваться не будет).
В-четвертых, nVidia добавила в G70 блок аппаратного ускорения воспроизведения HDTV-видео (видео высокого разрешения), включая ускорение обработки сигнала, сжатого кодеками MPEG-2, а также WMV-HD- и H.264-сигнала. Прибавьте сюда аппаратный деинтерлейсинг, аппаратное масштабирование картинки и цветовую коррекцию - и получится nVidia PureVideo, совсем небесполезная в свете скорого выхода HD-DVD- и Blu-Ray-приводов фича. Для вывода "высокого" видео на телевизор в G70, помимо обычного TV-out, встроен специальный HDTV-out. Поддержка двух независимых выходов на монитор (VGA или DVI-I), разумеется, сохранилась.
В-пятых, изменилась технология изготовления GPU. Если NV40 выпускались на основе 130-нм техпроцесса, то G70 производится на мощностях тайваньской TSMC по более компактному (примерно на 40%) 110-нанометровому. Правда, возросла и сложность чипа (302 млн. транзисторов!), так что кристалл G70 получился даже более крупным, а значит, и более дорогим, нежели NV40. Несмотря на резко возросшую сложность и слегка увеличенные тактовые частоты, энергопотребление платы на GeForce 7800GTX не превышает "скромные" 110 Вт. В итоге для системы с одной платой рекомендованы блоки питания мощностью всего 350 Вт (сравните с 480 Вт для 6800 Ultra!). SLI-системам подойдут типовые БП на 500 Вт против нереальных 600 Вт (и выше), кои требует 6800 Ultra.
Наконец, в G70 реализован новый гибридный режим полноэкранного сглаживания - TAA (Transparent AntiAliasing), позволяющий получать качественную картинку с меньшими потерями производительности (подробности - во врезке).
Практика: Reference GeForce 7800GTX
В нашу тестовую лабораторию попал типовой экземпляр GeForce 7800GTX - референс-плата от самой Nvidia. В продажу они, разумеется, не пойдут, однако платы других производителей едва ли будут отличаться от референса чем-то, кроме системы охлаждения да повышенных тактовых частот графического процессора и видеопамяти на единичных экземплярах[Собственно, получается так потому, что для топовых ускорителей и ATI, и Nvidia, как правило, продают не столько графические чипы, сколько почти полностью собранные "полуфабрикаты" видеокарт. Поскольку "топов" продается относительно немного, а прибыль они приносят огромную (до 40% от общего дохода компаний!), такая тактика не вызывает серьезных производственных проблем, одновременно гарантируя, что топовые акселераторы заведомо не будут иметь проблем с некачественной разводкой или неудачной технологией производства. Так что можете смело покупать какой-нибудь Palit или даже noname: от брэндового ASUSTeK’а, который на $50–100 дороже, их будет отличать только более скромный набор прилагающегося ПО да, возможно, "менее оверклокерский" радиатор]. Так что все нижесказанное можно смело распространять на большинство видеокарт 7800GTX.
Итак, референс. Первое, что бросается в глаза, - это очень скромные размеры ускорителя. Стандартные 10 см ширины - чуть больше, чем у 6800 Ultra и X800/X850, но все же приемлемо для Hi-End-ускорителей. А вот высота новинки "нестандартна": видеокарта по высоте занимает всего один слот расширения, а не ставшие уже привычными два или три.
Видеовыходы - два коннектора DVI-I (переходник на привычный D-Sub, очевидно, прилагается); есть TV-out и TV-in, совмещенные в 11-штырьковом коннекторе. TV-in реализован на чипе Philips SAA7115HL; TV-out совмещен с HDTV-out. Видеопамять (256 Мбайт), в отличие от 256-мегабайтных вариантов GeForce 6800, установлена по обеим сторонам видеокарты, причем предусмотрены посадочные места для вдвое большего числа микросхем памяти (G70, напомню, может иметь до 1 Гбайт видеопамяти); память с двух сторон охлаждается алюминиевыми радиаторами.
Очень сильно по сравнению с GeForce 6800 переработана схема питания графического процессора - видимо, более тонкий технологический процесс привел не только к резкому снижению энергопотребления G70, но и существенно повысил требования к схемам питания. Именно из-за увеличившихся размеров VRM видеокарта и получилась более длинной. Критичные к охлаждению компоненты схемы питания закрыты внушительных размеров алюминиевым радиатором.
Для тестирования мы постарались взять новейшие и трудные для современных ускорителей игры. Результаты тестирования производительности приведены в таблице.
Даже беглого взгляда достаточно, чтобы сказать: GeForce 7800GTX - безоговорочный лидер по производительности.
Преимущество над GeForce 6800 Ultra составляет в среднем 41–45% (с включенным/выключенным четырехкратном антиалиасингом); преимущество над более быстрым (на 8–12%) Radeon X850 Platinum Edition - в среднем 27–30%, причем выигрыш имеет место на всех тестах, в том числе и на горячо любимом канадцами Half-Life 2. В общем-то не так уж и много, но и немало, если принять во внимание далеко не идеальную масштабируемость современных игр[У наших коллег из других изданий цифры получились чуть больше - порядка 35–40%]. Тем более что особенно большое преимущество 7800GTX наблюдается в самых тяжелых тестах - буквально только что вышедших Battlefield 2 (на 70%) и SplinterCell 3 (почти двукратный отрыв). Во всех тестах (включая режим 1600x1200 4x FSAA) видеокарта 7800GTX показала скорость рендеринга не менее 50 fps (то есть заведомо играбельную). Без антиалиасинга результаты повыше: не менее 70 fps; средние потери производительности от включения AA - 28%.
На удивление эффективно работает режим SLI: при установке двух видеокарт удается выжать из 7800GTX еще 27–37%. При этом преимущество GeForce 7800GTX SLI над "радеонами" доходит до 120% (!) - и наверстать столь солидное отставание ATI будет ой как непросто. Вероятнее всего запоздавший на полгода R520, работающий на частотах до 600–700 МГц, но снабженный всего шестнадцатью пиксельными конвейерами[Которые вдобавок вроде бы поддерживают непонятно как сказывающиеся на их производительности шейдеры третьей версии (а по истории с GeForce FX хорошо известно, что реализация обязательных для SM3 динамических переходов в шейдерах, может замедлять работу акселератора едва ли не в разы)], сумеет-таки догнать GeForce 7800GTX, а наконец-то появившаяся у ATI поддержка технологии CrossFire (альтернатива SLI) позволит "сравнять счет" и в парных конфигурациях. Однако солидное тепловыделение (уже известно, что кулер для R520 будет "двухэтажный"), шум, высокая цена (той же 1400-МГц памяти), скорее всего, сохранят небольшой перевес за продуктами Nvidia. Очень жаль, что из-за отсутствия R520 и CrossFire проверить эти предположения мы не можем.
Зато можем уверенно сказать, что благодаря низкому тепловыделению, небольшому шуму, а главное, цене (в Москве - порядка $580!!!) GeForce 7800GTX - очевидный хит сезона. Редчайший случай - придраться здесь действительно не к чему.
Прозрачный антиалиасинг
Антиалиасинг - это способ повышения качества выстраиваемого 3D-ускорителем изображения, позволяющий избавиться от эффекта ступенчатости границ полигонов. Дело в том, что если для "внутренних" пикселов цвет каждого из них обычно вычисляется с учетом нескольких субпикселов соответствующей текстуры, натянутой на полигон (анизотропная, трилинейная или билинейная фильтрация) и дающей плавную и более или менее точную и резкую картинку (чем выше степень анизотропной фильтрации, тем выше точность и резкость изображения), то без использования антиалиасинга каждый пиксел в картинке может "принадлежать" одному и только одному полигону, хотя в действительности часть пиксела относится к одному полигону, а часть - к другому, и его цвет должен определяться как некоторая смесь цветов обоих полигонов. В итоге каждое ребро полигона рисуется как характерная, резко очерченная ступенчатая (а зачастую и вовсе прерывистая, если рисуется, скажем, тонкий полигон, изображающий в сцене далеко расположенные провод, кабель или веревку) линия. Если вы еще не сталкивались ни с чем подобным, сравните, как рисуют линии MS Paint и Adobe Photoshop, - и вы поймете, что я имею в виду. Эта ступенчатость и есть алиасинг; а методы борьбы с нею соответственно называются антиалиасингом. На сегодняшний день существуют два способа полноэкранного сглаживания - суперсэмплинг (SuperSampling AntiAliasing, SSAA) и мультисэмплинг (MultiSampling AntiAliasing, MSAA). В первом случае для того, чтобы на картинке, которую генерирует ускоритель, не было резких цветовых переходов между полигонами, картинка, грубо говоря, вначале рендерится с размерами, в несколько раз превышающими необходимые для вывода на экран, а затем приводится к требующемуся размеру. При этом для определения цвета каждого "итогового" пиксела вычисляется цвет нескольких составляющих его "субпикселов", и картинка получается более реалистичной, а главное - лишенной бросающихся в глаза ступенчатых линий. Однако SSAA - довольно жадный до ресурсов метод, поэтому куда чаще используется MSAA, при котором сглаживаются только те пикселы, которые находятся в непосредственной близости от граней полигонов, присутствующих в сцене. Если мы рисуем на экране, скажем, кубик, то в "подробном" варианте будут рассчитаны только несколько процентов пикселов, составляющих ближайшие окрестности ребер кубика. Поскольку именно здесь, как правило, и встречаются требующие сглаживания ступеньки, то производительность при таком способе рендеринга падает несильно, и качество картинки получается высоким. Конечно, и у MSAA есть недостатки: зачастую дизайнеры сцен предпочитают не плодить в ней множество полигонов, а использовать разнообразные прозрачные текстуры. Всяческие стекла, зеркала и прозрачная вода не в счет: речь идет о куда более "приземленных" и очень часто встречающихся листьях деревьев (на одном полигоне простой формы рисуется один или несколько листьев сложной формы) и всевозможных решетках (на паре полигонов рисуется изображение решетки). Края таких "граней" MSAA, естественно, обработать не в состоянии - он о них попросту не догадывается.
Решение Nvidia напрашивается само собой: использовать сглаживание не только вблизи граней, но и внутри прозрачных и полупрозрачных полигонов. Кроме того, поддерживается такая модная сегодня фича, как антиалиасинг с повернутой решеткой - когда субпикселы при сглаживании берутся не из более мелкой решетки, полученной разбиением стандартной "пиксельной решетки" вертикальными и горизонтальными линиями на одинаковые субпикселы, а из мелкой сетки, повернутой относительно горизонтали на некоторый угол (обычно 20–30°). Этот способ дает лучшие результаты при отображении близких к горизонтальным и вертикальным линий, для которых эффекты алиасинга особенно заметны. Текущие драйверы, правда, слегка глючат при определении полупрозрачных полигонов (сглаживается не все, что нужно), однако надо полагать, что вскоре эти мелкие недочеты будут исправлены.
Автор: Сергей Озеров
Источник: www.terralab.ru
|