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

Опять двойка

Архив
автор : Сергей Озеров   10.03.2005

Большинство задач компьютерной графики очень хорошо распараллеливаются.

Большинство задач компьютерной графики очень хорошо распараллеливаются. Основная задача любого 3D-ускорителя — определение цвета каждого пиксела в предварительно просчитанном треугольнике на экране. Причем пикселов на экране сотни тысяч, а определять их цвет, как правило, можно абсолютно независимо.

К примеру, новейшие ускорители Nvidia и ATI одновременно просчитывают по 12–16 точек за такт (А по правде говоря, счет одновременно вычисляемых точек с учетом конвейера идет уже на десятки и даже сотни). Наращивать число конвейеров рендеринга в одном чипе дорого и сложно (по количеству транзисторов и площади кристаллы GeForce и Radeon «догнали и перегнали» даже навороченные модели центральных процессоров). Но никто и не требует, чтобы все конвейеры размещались на одном кристалле: графических процессоров, одновременно обрабатывающих сцену (теоретически), можно поставить сколько угодно. Вопрос только в сложности такого решения.

Ранние ускорители 3Dfx (Voodoo и Voodoo2) не могли работать в «нетрехмерном» режиме. В те времена трехмерный ускоритель был сугубо трехмерным ускорителем, а плоскую, «офисную» картинку обеспечивала отдельная видеокарта. Впрочем, и она не являлась каким-то особым, выделенным компонентом компьютера, а вставлялась в любой стандартный PCI-слот. Способ увеличения производительности установкой одного, двух, трех… ускорителей в одну систему так и напрашивался: если одна карта ускоряет графику, то две — ускоряют вдвое, три — втрое и т. д. Просто и логично. Все, что требовалось для одновременной работы нескольких ускорителей, —обеспечить их синхронную работу (соединить специальным ленточным кабелем). Каждый ускоритель брал на себя расчет определенных строк изображения. Скажем, одна из карт выводила на экран четные строки изображения, а вторая — нечетные. И все это вместе называлось Scan Line Interleaving (SLI). Соединить больше двух карт было невозможно по чисто «технологическим» причинам (а платы «первого» Voodoo нельзя было объединять в принципе), однако можно было поставить на одну плату больше одного чипа 3Dfx — подобные профессиональные ускорители серии Obsidian выпускала компания Quantum3D (их, в частности, использовали в своих симуляторах американские военные).

Все шло замечательно, пока на рынке графических ускорителей не появился новый игрок — Nvidia. В силу разных причин через какое-то время производство графических процессоров у 3Dfx «разладилось» — реализация «в кремнии» и отладка уже полностью разработанного и анонсированного чипа (VSA-100) затянулась на неопределенно долгое время. Время, за которое конкуренты ушли далеко вперед. В результате к концу 1999 года из роскоши и символа бесспорного лидерства режим SLI превратился в жесткую необходимость. Появившийся к тому времени интерфейс AGP 4x уже не предполагал возможности установки более чем одной видеокарты в систему, поэтому технологию доработали, оптимизировали для режима с несколькими графическими процессорами на одной плате и выпустили на рынок под названием Voodoo Scalable Architecture (VSA). Ускорители Voodoo 4 4500 (один чип VSA-100), Voodoo 5 5000 и 5500 (четыре чипа VSA-100) и Voodoo 6 6000 (четыре чипа VSA-100) стали «лебединой песней» 3Dfx. Проблемы с производством, высокая цена, отличные решения конкурентов… Старшие видеокарты этих линеек, «опередив время», впервые потребовали для себя дополнительного питания — к Voodoo 6000 даже прилагался специальный внешний блок питания.

Задумка инженеров 3Dfx действительно поражала: попробуйте представить восьмипроцессорную (!) видеокарту AAlchemy 8164 для профессиональных рабочих станций («Heavy metal» от Quantum3D). Представили? А теперь приплюсуйте сюда возможность одновременного использования четырех таких плат (VSA позволяла объединять до 32 графических процессоров). Но и это еще не все: следующим после VSA-100 решением 3Dfx должен был стать гораздо более мощный чип, известный под кодовым именем «Rampage». Платы на нем обещали выглядеть настоящей плиткой из микросхем: к уже имеющимся чипам, отвечающим за закраску сцены (кстати, с поддержкой шейдеров первой версии), и микросхемам видеопамяти там должны были присоединиться еще и чипы отдельных геометрических сопроцессоров. Однако история рассудила иначе: с GeForce 3 и тем более GeForce 4 конкурировать многопроцессорным монстрам оказалось не под силу. В декабре 2000 года Nvidia купила находящуюся на грани банкротства 3Dfx со всеми ее разработками, технологиями и патентами.

С тех пор за многопроцессорными графическими видеокартами закрепилась репутация средства, к которому прибегают только в крайнем случае, когда ничего другого уже не остается. Так, в январе 2000 года на «двухпроцессорном» поле попробовала сыграть ATI, выпустившая вслед не слишком удачному Rage 128 Pro «сдвоенную» Rage Fury MAXX. Только в отличие от специалистов из 3Dfx ее инженеры не стали пытаться разработать что-то очень навороченное, а попросту развели на одном куске текстолита две почти обычные видеокарты, считавшие кадры «по очереди». Одна из видеокарт обсчитывала четные кадры видеопотока, вторая — нечетные, причем вся «модернизация» стандартных чипов, по большому счету, состояла в специальных драйверах, загружавших видеокарты работой. Однако что-то у ATI не заладилось — глючные драйверы, высокая цена, недостаточная функциональность и относительно небольшая производительность загубили этот проект практически на корню. А в феврале 2004 года опыт 3Dfx попробовала перенять компания XGI. Единственный продукт подобного рода — очень сложная видеокарта Volari V8 Duo Ultra, за гигантские размеры, впечатляющую потребляемую мощность и невысокую производительность получившая в народе прозвище «паровоза». На фоне таких «дизелей» и «электровозов», как GeForce FX и Radeon 9xxx, светлое будущее ей явно не грозило.

В конце 2004 года как гром среди ясного неба на компьютерных обозревателей свалилась… новая SLI. На сей раз — от игрока, особенных проблем с производительностью своих продуктов не испытывающего, — от Nvidia.

Парный разряд

Снова вернемся на четыре года назад. С покупкой 3Dfx компания Nvidia получила в свое распоряжение не только все разработки и патенты легенды рынка 3D-акселераторов, но и наиболее квалифицированных ее разработчиков, а также права на все торговые марки. Правда, линейка GeForce FX (FX, естественно, с намеком на 3Dfx), созданная с их участием, оказалась довольно неудачной. Со стороны могло показаться, что над многострадальной 3Dfx даже в составе Nvidia тяготеет какое-то проклятие; корпорация благополучно ухитрилась наступить примерно на те же самые «грабли VSA-100»: задержки с выпуском чипов, низкие рабочие частоты, невостребованная функциональность, потеря лидерства на рынке. Впрочем, американцы не унывали, и в следующем поколении своих графических решений большинство проблем сумели исправить. Правда, все упоминания о 3Dfx применительно к новой линейке все-таки вырезали. На всякий случай. А когда компании понадобился термин для обозначения режима совместной работы нескольких видеочипов, маркетологи Nvidia без особых колебаний использовали раскрученный 3Dfx брэнд. Однако «старая» и «новая» SLI расшифровываются по-разному. SLI от 3Dfx — это Scan Line Interleaving, «режим чередования строк». А SLI от Nvidia — это Scalable Link Interface, «масштабируемый интерфейс связи».

В этом месте полагается сделать умное лицо и начать объяснять, что решение Nvidia основано на совершенно новых технологиях, что раньше ничего подобного сконструировать было нельзя, что отличия разительны и т. д. Однако я делать этого не буду, поскольку ничего принципиально нового по сравнению с дремучей Voodoo2 здесь нет. Просто две видеокарты Voodoo делили между собой изображения по принципу четных и нечетных строк (а позднее — чередующихся полос), а две видеокарты GeForce 6xxx делят между собой верхнюю и нижнюю половину изображения (см. скриншот). Это немного сложнее технически, но зато позволяет использовать ресурсы обоих ускорителей более эффективно. В остальном — на смену старым PCI и AGP пришла шина PCI Express; на смену фирменному шлейфику а-ля FDD — пластиковый коннектор и проприетарная шина с громким названием SLI, на смену одним драйверам — другие. Те же лица, только в новых декорациях и с менее понятными спецификациями (К примеру, неизвестно даже, поддерживает ли SLI-режим установку четырех графических ядер. А двухпроцессорные одноплатные конфигурации вообще являются нестандартными и нуждаются в специальных материнских платах). К сожалению, Nvidia дает очень мало комментариев по данной тематике — все, относящееся к SLI, практически засекречено.

Рассмотрим основные составляющие новой SLI. Первый принципиальный компонент — графическая шина PCI Express 16x. И хотя в свое время я писал (См. www.computerra.ru/offline/2004/547/34176), что современные ускорители едва ли получат от ее использования заметные преимущества, старая проверенная шина AGP просто не позволяет использовать в системе больше одной видеокарты, это не поддерживается стандартом (Если быть максимально точным, то в стандарте AGP 8x есть упоминание о поддержке через специальный свитч в одной системе двух видеокарт этого стандарта. Однако подобные материнские платы никогда не выпускались). А вот PCI Express, будучи универсальной шиной общего назначения [Уже есть чипсеты, скажем, nForce Professional, одновременно поддерживающие более 32 линий PCI Express (и, соответственно, устройств)] допускающей гибкое конфигурирование, — позволяет. Не обязательно даже, чтобы чипсет позволял организовать две полноценные графические шины — достаточно развести стандартные 16 линий (линков) одного слота для видеокарты по двум независимым слотам (8 + 8 линков). Заметного падения производительности от работы видеокарты в режиме PCI Express 8x все равно не наблюдается (по производительности это примерно эквивалентно AGP 8x), а пользователь получает желанные «два графических слота по цене одного» — именно таким образом реализуется поддержка двух видеокарт в системах на nForce 4 SLI. Менее эффективное, более простое, но тоже вполне работоспособное решение — развести помимо «основного» PCI Express 16x еще и «вспомогательный» слот из «остатка» линий PCI-E, поддерживаемых чипсетом. В качестве «доступного» примера можно назвать, например, Gigabyte GA-8I915P Dual Graphics — на этой плате в дополнение к традиционному слоту PCI Express 16x разведен еще один графический слот. Правда, северный мост i915P поддерживает не так уж много линков PCI Express, поэтому на второй слот их осталось всего два. Пропускная способность такого слота — примерно как у AGP 2x, производительность видеокарт в SLI-режиме — пропорционально невысокая. Буквально на днях Nvidia, однако, объявила, что уже наверняка выпустит SLI-чипсет и для Pentium 4.

В серверном сегменте дела со SLI обстоят интереснее. Хотя впервые эта технология демонстрировалась на материнских платах на чипсете Intel E7525, реализована она там в виде слотов PCI Express 16x + PCI Express 4x, что заметно лучше, чем у GA-8I915P, но столь же заметно хуже, чем у любой серийной платы на nForce 4 SLI. Что же касается AMD, то ей повезло дважды. Во-первых, Nvidia до сих пор выпускает свои чипсеты только для ее процессоров. Во-вторых, крайне гибкая в использовании шина HyperTransport (и архитектура K8 в целом) чрезвычайно сильно расширяет возможности разработчиков. Можно, например, использовать для одно- и многопроцессорных материнских плат для Opteron все тот же nForce 4 SLI. Или nForce Professional, который позволяет организовать два полноценных, а не урезанных слота PCI Express 16x (это даже лучше, чем у nForce 4 SLI). Самое остроумное решение, пожалуй, принадлежит Tyan: в материнской плате Thunder K8WEX используется три (!) чипсета одновременно. NForce 4 Ultra, еще один nForce 4 («обычный») и туннель 8131 от самой AMD. Два чипсета от Nvidia организуют два же полноценных слота PCI Express 16x (даже вдвойне полноценных, ибо каждый из слотов подключен по своей персональной шине HyperTransport к персональному процессору) и обеспечивают всю остальную весьма навороченную периферию. Чип AMD понадобился для организации слотов PCI-X. Оказывается, что стоит такая необычная конструкция заметно дешевле (а производительность ее — выше).

Результаты тестов.*
 * Система: процессор AMD Athlon 64 4000+, материнская плата Gigabyte GA-K8NXP-SLI (nForce 4 SLI), память Patriot PC3200+XBLK общим объемом 512 Мбайт с таймингами 2-2-2-5 (любезно предоставлена компанией «Никс», www.nix.ru; для Doom 3 добавлялись еще два модуля по 256 Мбайт), жесткий диск Seagate ST3160021A, корпус WaveMaster от CoolerMaster (PSU Antec на 420 Вт), ОС Windows XP Professional SP1 English. Системные драйверы к nForce 4 версии 4.58; графический драйвер ForceWare 71.24 (от 15.12.2004).

Возможность поставить в системный блок с материнской платой, поддерживающей SLI, две видеокарты занимательна сама по себе, даже без учета возможности совместной работы плат над трехмерной графикой. Текущие драйверы Nvidia позволяют при этом в полной мере использовать двухмерную графику обеих видеокарт — к примеру, подключить к компьютеру сразу четыре монитора или выводить изображение на два телевизора. В принципе, по мере совершенствования драйверов, в системных блоках можно будет увидеть одновременно работающими, скажем, профессиональную видеокарту Matrox, используемую для работы с «нетрехмерной» графикой, и профессиональный ускоритель Quadro — персонально для трехмерной.

Однако интереснее все-таки режим, в котором обе видеокарты работают согласованно. Чисто теоретически они могут «переговариваться» между собой и через свои стандартные графические шины, но на практике инженеры предпочли, как и прежде, использовать для синхронизации видеокарт специальную выделенную шину, которой они напрямую соединяются. Шина эта (Scalable Link Interface) формально и дала название технологии; однако каких-либо подробностей о ее устройстве не сообщается (Весьма вероятно, что SLI использует какую-либо разновидность шины Hyper-Transport (www.computerra.ru/offline/2004/547/34188): входящая в консорциум разработчиков этой шины (HTC) Nvidia ранее предпочитала использовать для внутренних связей в своих чипсетах именно ее. Впрочем, с не меньшим успехом это может быть вариация на тему PCI Express или вообще какая-нибудь сугубо проприетарная шина). Внешне SLI-соединение выглядит как небольшая плата (коннектор SLI) с двумя слотами, напоминающими слоты PCI Express 1x (Вообще говоря, расстояние между слотами видеокарт может варьироваться. На Gigabyte GA-K8NXP-SLI между ними располагается один слот PCI Express, а на ASUS AN8-SLI — два слота. Поэтому «универсального» SLI-коннектора не существует — к конкретной материнской плате прилагается и его конкретная «разновидность» подходящей длины). Для ее подключения у ускорителей на основе GeForce 6600GT и GeForce 6800 предусмотрены соответствующие разъемы. SLI-коннектор просто надевается поверх этих разъемов и таким образом соединяет видеокарты. При этом одна из них (установленная в первый графический слот PCI Express) объявляется главной, а вторая — подчиненной. Именно главная карта строит окончательное, результирующее изображение из двух «полуфабрикатов», которые выдают графические чипы; соответственно, видеокабель, идущий к монитору, подключается только к главному ускорителю. Все видеовыходы подчиненной карты отключаются: использовать одновременно SLI и вывод сигнала на четыре монитора вы не сможете. Кроме того, для нормальной работы SLI-режима требуется, чтобы установленные в систему видеокарты были идентичны (по крайней мере — на одном и том же графическом чипе и от одного производителя [Равносильные видеокарты от разных производителей, в принципе, могут заработать вместе, но уповать на это я бы не стал]).
В текущих драйверах Nvidia режим SLI активируется переключателем на отдельной вкладке. Там же можно включить специальный «наглядный» режим, показывающий, какая видеокарта какую часть изображения обрабатывает, а также загрузку процессоров каждой платы. Впрочем, зрелище это довольно быстро надоедает: хотя теоретически платы распределяют нагрузку так, чтобы на каждую из них приходился примерно одинаковый объем работы, на практике отклонений от режима, в котором каждая видеокарта рендерит ровно половину экрана, мне заметить не удалось.

Двое на одного

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

Во-первых, как показывают синтетические тесты на предельную скорость закраски сцены, прирост «потенциальной» производительности ускорителей в режиме SLI действительно получается почти двухкратным (90-95%), то есть потери на синхронизацию совместной работы обеих плат составляют порядка 5-10% от максимально возможной производительности.

Во-вторых, чем «старше» игра и чем меньше графических «наворотов» она использует, тем меньше получается выигрыш от использования SLI. В старом добром 3Dmark 2001 SE, например, FPS и так исчисляется сотнями кадров в секунду и от добавления второй видеокарты итоговый результат увеличивается всего лишь на 10-15%. Столь же скромные показатели демонстрирует и базирующийся на хоть и новом, но довольно консервативном движке Half-Life 2. В игре Unreal 2 результаты SLI-систем вообще оказались на 15% хуже, чем у одиночной видеокарты, но это уже целиком на совести драйвера 71.24: во время прохождения теста сквозь игровую сцену постоянно мерцал Рабочий стол.

Игры и тесты, базирующиеся на более «тяжелых» движках — Far Cry и Aquamark образовали вторую группу программ, выигрывающих от включения SLI примерно 30% скорости. Судя по всему, им не хватило мощности то ли центрального процессора, то ли сравнительно слабого геометрического сопроцессора 6600GT (Тем более что в SLI-режиме не очень понятно, как Nvidia распараллеливает работу геометрических сопроцессоров. Возможно, что никак, то есть производительность вершинных шейдеров и T&L двух плат в режиме SLI остается на прежнем уровне). В общем, впечатляющих результатов на них получить не удалось. Doom 3 с его сверхсовременным движком, удачно использующим особые «фичи» видеокарт Nvidia, показал несколько лучший результат — 54%. И только 3Dmark’03, не нагружающий центральный и геометрический сопроцессоры и, особенно, 3Dmark`05, использующий сложную для ускорителей технику Shadow Maps, смогли наконец-то задействовать вторую видеокарту на полную мощность: от 70 до 95% преимущества над «одноголовым» вариантом! Впрочем, положа руку на сердце, все-таки остается признать, что в наиболее востребованных и популярных играх без использования анизотропной фильтрации и антиалиасинга, прирост производительности колеблется около отметки в 30%. А это очень немного.

В-третьих, включение анизотропной фильтрации восьмого уровня и антиалиасинг четвертого (aniso 8x, FSAA 4x) резко увеличивают нагрузку именно на столь хорошо распараллеливающиеся блоки закраски, поэтому в этих режимах прирост производительности в режиме SLI получается значительно большим — даже в Half-Life 2 он составил более 40%, а в Doom 3 и вовсе 75%. При этом играбельность даже в таких тяжелых условиях остается вполне приемлимой: не скажу, что пара 6600GT при этом «летает», однако и слайд-шоу не наблюдается.

В-четвертых, GV-3D1 за счет значительно более быстрой памяти во всех тестах на 5-10% обогнал аналогичную пару из двух 6600GT.

Двойственное впечатление

Есть ли практическая польза от применения двухпроцессорных конфигураций в наше время? Несомненно. Если вы предпочитаете играть в большом разрешении, с максимальными настройками качества, при включенной анизотропии и антиалиасинге, то использование двух видеокарт вместо одной (или «спаренной» видеокарты типа 3D1) позволит за довольно скромные деньги поднять производительность системы на 45–75%, а в некоторых случаях и больше. Пара недорогих 6600GT или 3D1, скорее всего, обойдутся дешевле, чем какая-нибудь Radeon X850 Platinum Edition аналогичной производительности. Подобная конфигурация даже на «тяжелых» настройках будет вполне играбельной. Только не следует забывать, что для получения хороших показателей необходим еще и мощный процессор. Во всех остальных случаях пара видеокарт лишь образует систему колоссальной избыточной мощности, которую не удастся использовать даже на 70%. То есть, проще говоря, SLI от Nvidia, равно как и «классический» SLI от 3Dfx, является скорее роскошью, чем необходимостью. Однако эта технология все равно очень интересна — хотя бы возможностью использовать четыре видеовыхода с двух видеокарт; возможностью «апгрейда» существующей системы путем простой установки второй видеокарты, аналогичной уже имеющейся; возможностью существования двухпроцессорных плат на относительно недорогих чипах (которые, вероятно, будут стоить несколько дешевле, а работать — быстрее своих однопроцессорных «топовых» собратьев).


SLIтно или раздельно?


Если чип допускает одновременную работу двух видеокарт, значит, вполне допустимо из этих двух «логических» видеокарт сделать единую плату.

Что успешно демонстрирует нам компания Gigabyte, объединившая в карте GV-3D1 два графических чипа GeForce 6600GT. Правда, в случае с Voodoo (и тем более — с VSA) подобная схема работы считалась «законной» и официальной, а в случае с 3D1 Gigabyte соорудила весьма нетривиальную и нестандартную конструкцию. Начнем с того, что каждой из двух образующих 3D1 видеокарт требуется своя графическая шина. Соединяющий карты интерфейс SLI — штука, конечно, хорошая, однако похоже на то, что, в отличие от 3Dfx, для работы графического чипа отнюдь не достаточная. Как эту задачу решали инженеры Gigabyte, становится понятно при детальном изучении разводки разъема PCI Express 16x: к первому графическому процессору подключается только примерно половина проводников, тогда как вторая половина уходит ко второму процессору. То есть Gigabyte просто-напросто механически объединила два разъема 8x со всеми вытекающими отсюда последствиями:

- Видеокарта типа GV-3D1 требует материнской платы с поддержкой SLI и при правильном подключении распознается системой как две видеокарты на чипах GeForce 6600GT. При этом «мама» должна быть настроена как работающая в режиме с одной видеокартой (то есть один из слотов должен быть задействован в полноценном 16x-режиме), и подключить к компьютеру еще одну видеокарту, несмотря на наличие свободного разъема, невозможно.

- Поскольку стандарт PCI Express 16x и стандарт Nvidia на SLI-системы не предусматривает организации графических слотов «два-в-одном», то для полноценной работы GV-3D1 требуется и специальная материнская плата. На момент написания обзора единственной (!) подходящей платой для этих целей была Gigabyte GA-K8NXP-SLI. Попытка установить ее в ASUS AN8-SLI окончилась неудачей. Видеокарта, собственно, и продается пока лишь в комплекте со «своей» материнской платой (хотя обратное неверно: GA-K8NXP-SLI можно купить отдельно и использовать вместе с обычными видеокартами).

Поначалу кажется, что 3D1 — крупногабаритная плата. Однако это впечатление обманчиво: по размерам она даже меньше, чем, например, референсная Nvida GeForce 5900 Ultra. Кстати, как и последняя, 3D1 из-за высокого энергопотребления требует мощного блока питания и подключения специального дополнительного коннектора питания для видеокарты. Подобный коннектор есть, например, в новых дорогих БП высокой мощности (впрочем, к видеокарте прилагается и переходник на подключение двух стандартных «винчестерных» разъемов питания.

Тактовые частоты памяти на GV-3D1 несколько выше, чем у GeForce 6600GT (1140 против 1000 МГц), — и, как показали тесты, этого вполне достаточно, чтобы 3D1 оказывалась чуть быстрее обычных SLI-решений из двух 6600GT. Конкуренты, впрочем, тоже не дремлют, и по Сети уже гуляют слухи о выходе аналогичного 3D1 решения от ASUSTeK (EN6600GT Dual). Станут ли подобные решения популярными и будут ли они стандартизованы — покажет только время.

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