История и перспективы multi-GPU на рынке игровой графики: от 3dfx Voodoo до наших дней и немного дальше

Началась эта история с нескольких интересных совпадений. В конце 2021 года AMD анонсировала двухчиповые ускорители семейства Instinct MI200. Предназначены они для центров обработки данных, но фактически (что привычно для сегодняшнего состояния дел на этом рынке) базируются на той же архитектуре, что и графические процессоры компании. Особенность — сам «GPU» Aldebaran, построенный на двух кристаллах с суммарным числом потоковых процессоров до 14080 (в старшем Instinct MI250X). Весной прошлого года появилась и половинка Aldebaran: в ускорителе Instinct MI210 лишь один кристалл и 6656 потоковых процессоров. Казалось бы, что́ до этих решений простому пользователю? Но тут как раз подоспел анонс Radeon RX 7000 — и информация об использовании мультичиповых сборок в GPU этой линейки. И все сразу же вспомнили о multi-GPU — о чем за последние годы почти забыли.

Однако прошло немного времени, и в ноябре новые решения AMD были представлены официально. Как и предполагалось, они построены на базе чиплетной архитектуры, так что ничего общего с дедовскими технологиями не имеют. «Симметричные» же Instinct на рынке есть —, но не на массовом рынке. А ведь когда-то подобные решения пытались пробиться и на него, хотя и с переменным успехом. Изначально технология зародилась еще в 90-е, но тогда же первый раз и умерла. Возродилась она в нулевые, и в той или иной степени просуществовала порядка 10 лет. Позднее производители GPU вроде бы пришли к выводу, что недостатков у нее больше, чем достоинств, так что начали полагаться не на параллельную работу нескольких GPU, а на один «мегачип», но с большим количеством потоковых процессоров. Сейчас, как видим, в какой-то степени наблюдается возврат к старым концепциям, но совсем на других архитектурных принципах. Впрочем, и первое «возрождение» multi-GPU тоже было не в том виде, в каком технология первый раз умерла. Истории свойственно развиваться по спирали, и нас ожидает новый ее виток. И поскольку предыдущие витки были интересными, имеет смысл немного освежить память.

3dfx: первые решения multi-GPU из прошлого века

Замечание для заклепочников: мы знаем, что заголовок не совсем корректный — на самом деле термин «GPU» появился заметно позднее многих описываемых событий. Но происходили эти события и давно (по компьютерным меркам), и недавно (по житейским) одновременно, так что во избежание путаницы будем пользоваться современной терминологией.

Самое забавное заключается в том, что идее совместной работы нескольких графических процессоров, причем несимметричных, столько же лет, сколько и вообще 3D-графике. Могло бы получиться по-другому, если бы тогдашним грандам рынка удалось малой кровью превратить 2D- в 3D-акселераторы. Но это требовало многолетней эволюции, вместо которой мы получили революцию. Ее виновником стал мелкий стартап (тоже, в общем-то, термин более позднего времени) 3dfx Interactive. Компания изначально ориентировалась на разработку чипов для игровых автоматов — реликтов 80-х прошлого века. Но эти реликты пользовались спросом: на тот момент обеспечить качественной графикой массовые компьютеры или игровые приставки было невозможно. Точнее, это стоило бы это слишком дорого для одиночного пользователя. А высокая цена игрового автомата никого не пугала, он достаточно быстро окупался при постоянной загрузке пользователями, оплачивающими игровое время. Это был огромный рынок, на который ориентировались и все крупные издатели, и разработчики аппаратных средств.

Однако цена последних постоянно снижалась, так что к 1996 году 3dfx смогла выйти и на ПК-рынок. Как таковых видеокарт компания делать не умела, поэтому и пытаться не стала. Ее первая разработка — Voodoo Graphics — представляла собой дополнительную карту расширения, использующуюся только в 3D-режимах. Для «классики» требовалась обычная видеокарта, а для решения проблем совместимости использовалось сквозное подключение, т. е. Voodoo включался между основным видеоадаптером и монитором. «Благодаря» использованию аналогового видеосигнала это зачастую портило картинку в рабочих режимах, откуда и взялась рекомендация переключать кабели только для игры, бо́льшую часть времени оставляя монитор подключенным к основной «видяшке». Цена решения с несколькими картами оказывалась высокой — при том, что и сам Voodoo стоил далеко не сотню долларов (подешевевший еще не значит дешевый). И всё, что он приносил пользователю — аппаратное 3D-ускорение в низких разрешениях (не более 800×600). Но готовые платить и мириться с неудобствами были, причем в массовых количествах, поскольку визуально спутать Quake и GLQuake было просто невозможно. В итоге 1997 год дал нам само понятие 3D-графики, бурный рост этого рынка, массовый выход 3D-игр на ПК, резкий скачок качества картинки (позднее случалось немало скачков, но таких — уже не было ни одного) и т. п.

Применительно же к основной теме Voodoo интересен тем, что не только породил весь 3D-рынок, но и оказался первым «несимметричным» многочиповым решением. Сам чипсет мог включать до пяти чипов — один FBI и до четырех TMU. FBI (Frame buffer interface) брал на себя взаимодействие с шиной PCI, дисплеем, кадровым буфером и т. п., выполняя основные 3D-алгоритмы, а блоки TMU (Texture mapping unit) специализировались на работе с 3D-текстурами. Но полная конфигурация была бы слишком дорогой, так что обычным делом была связка из FBI, одного TMU и 4 МБ (это не опечатка!) EDO DRAM. Учитывая же необходимость иметь еще и обычный 2D-ускоритель, получаем три графических чипа в системе. Но и это еще не предел: уже первый Voodoo поддерживал такую технологию, как SLI (Scan Line Interleaving) — метод организации работы двух ускорителей, когда один обрабатывает только четные строки изображения, а второй — нечетные.

К сожалению, объединить две серийных карты первого поколения было невозможно, но существовал такой продукт, как Obsidian 100SB компании Quantum3D, где два чипсета с памятью стояли на одной плате. И работали в SLI-режиме, практически удваивая производительность! Причем производительность, повторимся, и без того была по меркам тогдашнего времени очень высокой — ничего сопоставимого даже с одиночным Voodoo прочие компании тогда предложить не могли. Обсидиановские же монстры стоили традиционно более полутора тысяч долларов, но тоже находили своего покупателя.

Позднее появился Voodoo2, где в базовой конфигурации было уже два обновленных TMU, т. е. три микросхемы суммарно. Вышел в свет и Obsidian2 X-24 той же Quantum3D — в виде бутерброда из двух плат с двумя чипсетами. Но это было уже не слишком нужно, поскольку для Voodoo2 поддержка SLI стала базовой. Не обязательно было покупать две платы сразу — можно было купить одну, потом вторую (желательно того же производителя и обязательно с тем же объемом памяти — существовали модификации с 8 и 12 МБ), установить их в компьютер и… Увеличить производительность, а заодно и получить поддержку разрешения 1024×768 вместо 800×600. Решение было не для бедных: один Voodoo2 первое время стоил 350 долларов, пара — соответственно, 700. Плюс 2D-видеокарта, плюс всё остальное… В общем, хороший игровой компьютер уже тогда стал недешевой игрушкой. Но спрос был — и были продажи.

Что случилось потом? Понятно что. Рынком занялись все: и старые игроки, и новые. Схема с отдельным 3D-ускорителем имела очевидные недостатки, так что и сама 3dfx от нее отказалась. А вот победить в конкуренции «комбинированных» решений уже не смогла. Время было такое — в целом из всех имен, гремевших на рынке в 90-е, не осталось никого. Разве что Nvidia — когда-то такой же мелкий стартап, как и 3dfx, но еще и с провальным (в отличие от Voodoo) первым продуктом. Но Nvidia сумела выжить и больше серьезных ошибок не делала. А остальные — не сумели. У 3dfx были очень удачные Voodoo Banshee и Voodoo3 —, но не настолько удачные, чтобы удержать завоеванные после выхода Voodoo три четверти рынка. В качестве оружия победы компания выбрала архитектуру VSA, т. е. Voodoo Scalable Architecture. Слово «масштабируемая» в названии использовалось неспроста: подразумевалась совместная работа в одной системе до 32 чипов одновременно. Как? Так ведь у компании уже была SLI! Правда технологию пришлось доработать: кроме расширения чересстрочного режима на случай более 2 GPU, была добавлена и работа над полосами из соседних строк. Причем ширина полос могла меняться динамически в зависимости от сложности картинки — для более полной загрузки процессоров, расположенных на одной плате. От объединения пары отдельных плат пришлось отказаться: пропускная способность шины PCI стала уже недостаточной для видеокарт, а выделенный порт AGP в системе мог быть только один. С одной стороны, это упростило разработку. С другой — в немалой степени оказалось причиной смерти новых решений, поскольку за такую плату нужно было платить сразу много денег. Но другого выбора у 3dfx не было: на разработку одночипового убер-решения уже не хватало ни времени, ни денег. А вот на выпуск простой GPU VSA-100 они были.

Но! Один чип использовался в Voodoo4 4500, который по сути и по производительности являлся аналогом Voodoo3, только с поддержкой современных (на тот момент) технологий. В начале 1999 года это было бы отличным и конкурентоспособным решением, которого тогда так не хватало 3dfx. В 2000 году Voodoo4 4500 уже проигрывал «стодолларовым» конкурентам, хотя сам стоил дороже. А двухчиповые Voodoo5 проиграли своим конкурентам, тоже опоздав на год.

Монстр коллекции Voodoo5 6000 с четырьмя чипами VSA-100 так и не был выпущен. Изучение опытных образцов позднее показало, что он и правда мог бы стать самой быстрой видеокартой 2000 года. Но при цене 600 долларов это уже не имело особого значения. Времена изменились: пару Voodoo2 за 700 долларов покупали ввиду отсутствия вменяемых альтернатив, а тут слишком уж невелико было бы превосходство над куда более дешевыми GeForce 2 Ultra и Radeon 7500.

Возможно, что 3dfx сумела бы выплыть с новыми разработками. Однако, посмотрев на «успехи» Voodoo4 и Voodoo5, некоторые кредиторы решили не рисковать — и началась процедура банкротства. Все имеющие ценность активы купила Nvidia, большинство разработчиков ушло туда же, некоторых собрали конкуренты. На чем история, казалось бы, и закончилась.

Nvidia: SLI умер — да здравствует SLI

Но это только казалось. В нулевые был анонсирован переход от AGP/PCI к универсальной шине PCIe — и сразу же Nvidia заявила, что новые GPU среднего и высокого класса смогут работать совместно. А называлось это SLI — как встарь. Расшифровывалось, правда, уже как Scalable Link Interface, но принципиально не отличалось от последних разработок 3dfx. Да и немудрено: их Nvidia целиком и полностью получила после банкротства конкурента.

Сначала идея показалась покупателям очень привлекательной. Действительно, зачем менять видеокарту, когда можно докупить такую же и увеличить производительность? На деле же всё оказалось не так просто. Во-первых, требовалась специальная системная плата — за поддержку SLI приходилось платить. Во-вторых, видеокарты в то время слишком быстро устаревали. Купишь какой-нибудь GeForce 6600GT —, а через три года новых на рынке уже нет, так что только на барахолках искать. А примерно за прежнюю стоимость GeForce 6600GT продается уже GeForce GTX 460, который мало того, что быстрее пары старичков в старых играх, так еще и с новыми играми гораздо лучше совместим. И у него всё более предсказуемо и с производительностью, и со всем остальным. Если же новые игры не нужны и б/у не пугает (а если пугает, то «старую» карту в пару все равно не купишь), так можно просто приобрести какой-нибудь изрядно подешевевший GeForce 7800GT — и всё. И не надо заранее готовиться к SLI, покупая специальную системную плату, которая дороже «неспециальной».

Хорошо, идея поэтапной модернизации отпадает. Ставит ли это крест на SLI? Нет. Остается сфера применения, которая была у этой технологии изначально, еще во времена Voodoo2: очевидно, что пара топовых видеокарт мощнее одиночной. А может оказаться и так, что пара не топовых, но достаточно производительных видеокарт будет быстрее и уже не слишком дороже топовой. И тут есть за что побороться! Для покупателя проще всего, если пара GPU установлена на одной плате, хотя это и дорого, так что на рынке стараниями партнеров Nvidia появились «сдвоенные» модели. Позднее и сама компания не раз прибегала к их выпуску — именно в качестве топовых имиджевых решений, в том числе для демонстрации некоторых недоступных иными способами возможностей. Например, SLI поддерживал до трех видеокарт, но до четырех GPU. Причем первое всегда было доступно лишь в HEDT-системах (за очень редкими исключениями), а вот второе на паре «двухголовых» видеокарт уже могло бы оказаться куда более массовым решением. По крайней мере, в теории. На практике и одна такая карта стоит слишком дорого.

Точнее, стоила, потому что последним «фирменным» решением для игрового рынка оказался GeForce GTX 690, появившийся 10 лет назад. А вообще последний двухчиповый адаптер на «стандартных» GPU был выпущен для профессионального рынка — им стал Titan Z образца 2014 года. С тех пор утекло много воды и кремния, но к концепции multi-GPU Nvidia уже не возвращалась. Хотя формально поддержка SLI в новых семействах всё еще сохраняется, но, например, среди всех GeForce RTX 30 работать в таком режиме может только GeForce RTX 3090 — и лишь две карты, а не три, как ранее. С учетом нынешних цен считать это ограничением сложно, но сам факт забавен. Ведь, в конце концов, цены не всегда были такими: последний майнинговый бум начался как раз после выхода в свет 30-го семейства, а к multi-GPU Nvidia начала охладевать раньше. Нельзя сказать, что процесс был монотонным: например, GeForce RTX 2070 тоже не поддерживала SLI, а вот в GeForce RTX 2070 Super совместимость с данной технологией вернули. И вообще, из драйверов никто поддержку не убирал, хотя можно было бы разгрузить программистов.

С чем это связано? Возможно, станет понятнее, если мы посмотрим на второго игрока рынка. По иронии судьбы, в вопросе multi-GPU он не раз оказывался именно вторым, хотя в свое время сделал для популяризации темы больше всех.

AMD: мы пойдем другим путем

Главным моментом в деятельности ATi (а затем и AMD) следует считать то, что компания всегда рассматривала multi-GPU не как способ ставить рекорды, а как возможность обойтись без слишком больших и сложных процессоров. Идея очень похожа на 3dfx «на излете», да и начало ей было положено тогда же. Первой разработкой стал ATi Rage Fury Maxx — по сути, две Rage Fury Pro на одной плате. Придумывать нечто подобное пришлось, поскольку GPU компании Rage 128 как в обычной, так и в Pro-модификации, несмотря на все амбиции, лидером на рынке не стал. Более того, вывод его на рынок занял столько времени, что целевые конкуренты сменились. То есть разрабатывали чип, чтобы обогнать Riva TNT2 Ultra, однако даже его не обогнали, а с выпуском поспели прямо к выходу GeForce 256 — со всеми вытекающими. Решить проблему должна была как раз технология Maxx, но в первой своей инкарнации она вообще нормально не заработала — худо-бедно чего-то добиться можно было лишь под управлением Windows 9x, а работоспособный драйвер для NT-линейки так и не вышел.

Однако была у Maxx и серьезная отличительная особенность: если прочие технологии первое время оперировали строками или полосами одного кадра, то тут сразу же всё началось с AFR-рендеринга, когда каждый процессор занимается своим кадром целиком. Позднее на этот же вариант рендеринга пришлось перейти и Nvidia: современные технологии оказались практически несовместимы с попиксельной работой образца девяностых и нулевых. Особенно явно это начало́ проявляться после массового внедрения полноэкранного сглаживания — в этом случае пытаться делить экран на отдельные части чревато артефактами на стыках. Поэтому именно к Alternate Frame Rendering со временем пришли все производители. Но первой AFR внедрила именно ATi.

Первая проба, как уже было сказано, вышла неудачной, так что о Maxx все быстро забыли. Снова к multi-GPU в ATi вернулись в 2005 году — уже под маркой CrossFire. Первыми GPU с ее поддержкой стали присутствовавшие на тот момент на рынке Radeon X800 и Radeon X850, однако такое внедрение «по живому» не позволяло просто взять и объединить любую пару продающихся карт — в качестве «главной» требовалась специальная Radeon Х8×0 CrossFire Edition. Впрочем, это стало всего лишь издержками переходного этапа, а в дальнейшем всё необходимое для работы «встраивалось» непосредственно в новые GPU. Так что технически подход оказался очень похож на Nvidia SLI — ответом на которую технология CrossFire и считалась.

По ряду причин ответ оказался более мощным. Например, ATi очень лояльно подошла к лицензированию технологии, предлагая ее поддержку производителям чипсетов бесплатно. Кроме того, в отличие от Nvidia, компания вообще не слишком много требовала от производителей системных плат. Для SLI обязательным было симметричное подключение, что реализовывалось в основном в топовых чипсетах. CrossFire же прекрасно работал и по несимметричной схеме. Например, одну видеокарту можно было подключить к северному мосту при помощи PCIe Gen2×16, а вторую — к южному через PCIe Gen1×4. И расположение слотов ничему не мешало: в отличие от SLI, CrossFire изначально могла обходиться без соединения видеокарт отдельными мостиками, передавая данные для синхронизации через шину. Да, компания не рекомендовала этим злоупотреблять, постоянно повторяя, что наилучших результатов можно добиться при симметричной организации работы и наличии мостика. И вообще, лучше покупать плату на одном из чипсетов именно ATi. Но это было лишь рекомендацией, а не «обязаловкой». В итоге, хоть SLI и появилась на рынке немного раньше, однако вскоре систем с поддержкой CrossFire стало намного больше.

Впрочем, принципиально это ничего не изменило. Как уже было сказано выше, в условиях быстрой смены стандартов и вообще бурного прогресса поэтапный апгрейд видеосистемы не имел смысла. Единственное применение технологии виделось в том, чтобы собрать сразу нечто рекордно мощное. Но для этого нужно было взять пару-тройку самых мощных видеокарт. А вот с этим в те годы лучше обстояли дела у Nvidia, так что на деле SLI-сборки встречались чаще. За поддержку SLI нужно было платить, но готовые платить находились. Чтобы переломить ситуацию, нужно было выпускать топовые в полном смысле слова GPU, но с этим у ATi были сложности. И покупка ATi компанией AMD в 2006 году положение дел не слишком изменила. Даже наоборот: на время был задекларирован отказ от монолитных GPU высокой мощности. Логичное обоснование заключалось в том, что процесс разработки сложный, производство — тоже непростое, да и брака при выпуске чипов большой площади оказывается много. Поэтому топовые GPU стоят дорого, а нужны в очень ограниченных количествах. Значит, имеет смысл сконцентрироваться на GPU для массового сегмента, а топовые ускорители в обязательном порядке должны быть двухчиповыми — для чего у компании есть все необходимые технологии.

Первой реализацией данной концепции стало семейство Radeon HD 4000, где двухчиповых карт было даже две: Radeon HD 4850×2 и Radeon HD 4870×2. Посмотрев на результат, в AMD решили больше так не делать: все-таки у CrossFire были свои недостатки, да и не везде технология работала (что в полной мере относилось и к SLI), так что выпуск карты с парой нетоповых чипов лишь отвлекал на себя ресурсы без особой пользы. В дальнейшем двухчиповыми остались только настоящие флагманы: Radeon HD 5970 сменил Radeon HD 4870×2, а позднее уступил место Radeon HD 6990. Затем на смену пришел Radeon HD 7990, потом Radeon HD 8990, а в 2014 году всё закончилось Radeon R9 295×2. Nvidia, напомним, остановилась на GeForce GTX 690 в 2012 году, то есть чуть раньше, чем вышел Radeon HD 8990. Впрочем, если учитывать Titan Z, то попадаем в тот же 2014-й — и с преимуществом AMD, поскольку производительность этих видеокарт в играх оказалась практически равной, а вот цена отличалась раза этак в два (понятно, в чью пользу). Но продолжать выпуск двухчиповых карт после Radeon R9 295×2 AMD тоже не стала. Несмотря на то, что почти весь 2015 год в этих ваших интернетах бродили слухи о скором выходе Radeon R9 Fury X2, ничего подобного не произошло.

Почему? На деле предпосылок было несколько. Если говорить о банальных технических причинах, то для выпуска Radeon R9 295×2 уже пришлось штатно использовать жидкостное охлаждение, а энергопотребление карты достигало фантастических (не только по тем временам) 500 Вт. Это показывало, что не так уж просто создавать топовые видеокарты на «нетоповых» GPU. К тому же, и популярность AFR к тому времени начала падать. Во многом это было связано с необходимостью очень тщательно «вылизывать» драйвера и прочее программное обеспечение, причем результат всё равно нередко оказывался далек от идеального и по качеству изображения, и по количеству fps. При этом стоили «двухстволки» очень дорого, но первое время давали пользователю слишком мало, если сравнивать с их «половинками», а к моменту, когда игры становились сложнее и, казалось бы, можно было начать всех побеждать… К этому моменту уже выходило новое поколение видеокарт — более мощное и технологичное.

Еще одной серьезной проблемой оказался общий рост цен на видеокарты и сами GPU. Обратная сторона технического прогресса и конкуренции: когда на рынке остаются два разработчика, каждый год пытающиеся прыгнуть выше головы, их топовые продукты становятся всё более дорогими по объективным причинам. 350 долларов несколько пугали первых покупателей Voodoo2, а позднее — и других выбирающих топовое решение, но ввиду отсутствия вменяемых альтернатив те расходы не казались неподъемными. После 2010-го цена одной топовой видеокарты уже оказывалась сопоставима с Voodoo2 SLI. Сколько могла стоить двухчиповая модель? Как минимум, вдвое дороже. На самом деле — в два-три раза дороже, поскольку объединить всё на одной плате сложнее, чем выпустить две отдельные. А тут уже сыграли и старания AMD по расширению ассортимента систем «CrossFire-ready». Зачем покупать Radeon R9 295×2 за 1500 долларов, когда практически в любой пригодный для нее компьютер можно установить пару Radeon R9 290X, получив тот же эффект примерно за 1100 долларов. Теоретически, четыре Radeon R9 290Х влезали в куда меньшее количество систем, нежели пара Radeon R9 295×2, но… узок их круг, страшно далеки они от народа. В общем, экономия на разработке топовых GPU в пользу топовых видеокарт с двумя GPU оказалась фикцией.

Близкой же к народу в AMD попробовали сделать технологию Hybrid CrossFire, предназначенную для объединения усилий бюджетных видеокарт и интегрированного видео. Типичный win-win: по отдельности ни то, ни другое игровым решением считать не выходит, а вот вместе может получиться что-то путное. Особый интерес представляло второе поколение этой технологии, сменившее название на Dual Graphics и появившееся после переезда интегрированного GPU непосредственно в процессоры. Сопровождалось это резким увеличением производительности интегрированного GPU — до сопоставимого с младшими дискретками уровня. А объединение двух устройств равной мощности производительность фактически удваивает.

На бумаге всё выглядело гладко. Практическое же изучение вопроса показало, что сама по себе интегрированная графика первых APU AMD хороша (по меркам этого класса решений), объединение ее с младшими дискретными видеокартами производительность увеличивает, но… в ноутбуке это еще может дать какой-то эффект, а в настольной системе бесполезно. Из-за выбранной AMD ценовой политики процессоры с графикой стоили намного дороже, чем без таковой — настолько, что проще было купить «без» и видеокарту помощнее, уложившись в тот же суммарный бюджет. Производительность оказывалась более высокой и, главное, предсказуемой — в отличие от Dual Graphics, унаследовавшей все проблемы CrossFire и SLI (ведь технологически это одно и то же). А дальше дискретные GPU начали развиваться намного быстрее, чем интегрированные (у AMD традиционно ресурсов на все сегменты рынка не хватало), так что вскоре подходящие для сдвоенных конфигураций видеокарты просто исчезли с рынка.

Положение дел могло бы измениться четыре года назад, когда после долгого перерыва появились APU Ryzen. Встроенные в них GPU опять «подтянулись» до уровня младших дискретных видеокарт, так что можно было бы вернуться и к идее Dual Graphics. Теоретически. На практике старшие интегрированные Radeon Vega сопоставимы по производительности лишь с Radeon RX 550, который использует более раннюю графическую архитектуру, так что организация их совместной работы классическими методами была бы затруднительной. «Медленных» же дискретных Vega AMD разрабатывать не стала. Да и вообще бюджетные видеокарты вскоре оказались заброшены обоими игроками рынка, поскольку в условиях майнингового бума и дефицита производственных мощностей компании не справлялись с поставками даже более маржинальных решений. Так что не надо просить нас провести тесты APU Ryzen при совместной работе с дискретной видеокартой — они Dual Graphics попросту не поддерживают. Возможно, потому, что в 2018 году типовые технологии multi-GPU уже заведомо зашли в тупик. И выход из этого тупика нужно искать совсем в другом месте.

Будущее multi-GPU: DirectX 12 и Vulkan

В чем основной недостаток классических методов? Они слишком простые и прямолинейные. Первое время (когда вся 3D-графика была простой и прямолинейной) этот подход был правильным: игровые приложения вовсе не обязаны как-то специально поддерживать SLI-режим, поскольку пара Voodoo и без их ведома будет отлично рендерить картинку по строкам. Но чем сложнее и «глобальнее» становились 3D-функции, тем больше недостатков появлялось у методов с чередованием строк или областей рендеринга. В конечном итоге AMD и Nvidia пришлось целиком и полностью перейти на AFR-рейтинг: только метод чередования полных кадров позволял сохранить тот же метод грубой силы — ускоряем приложения без их ведома. Причем работало это уровнем ниже не только самих приложений, но и API высокого уровня.

Однако несколько лет назад и AFR начал пасовать, поскольку оказался несовместим с новейшими технологиями, которые применяются уже даже не к каждому кадру, а к целой их последовательности — так, например, работают современные методы масштабирования разрешения, вроде DLSS. Кроме того, у AFR есть немалое количество собственных недостатков. «Построчное сканирование» удваивало производительность без побочных эффектов, а вот последовательная обработка кадров так не может: разные кадры могут просчитываться разное время. В итоге средняя частота кадров растет, но картинка получается дерганной. К тому же, AFR добавляет задержку (в ответ на действия пользователя) как минимум на один кадр, который генерируется на фоне «в буфер». Если же мы объединим не два ускорителя, а три-четыре, то и лаги увеличатся пропорционально. И вот этот эффект неустраним в принципе, а сочетание упомянутых факторов может привести к тому, что игровой комфорт в AFR-режиме снизится по сравнению даже с одиночной видеокартой.

И это еще не всё. Вспомним: одной из ключевых возможностей Voodoo2 SLI являлось увеличение разрешения. Это было важно уже на тот момент времени, поскольку 800×600 многим не хватало: мониторы умели больше. И сейчас повторяется та же ситуация, но AFR не позволяет в общем случае взять и увеличить разрешение. Да, производительность двух объединенных GPU выше. Однако для работы в более высоком разрешении каждый GPU должен иметь достаточное количество памяти, поскольку ему приходится обрабатывать полные кадры и хранить все текстуры. Можно бы, конечно, снизить разрешение и включить одну из технологий его масштабирования, но они ориентированы на последовательности кадров, так что со SLI/CrossFire несовместимы по своей природе. И это снова тот случай, когда одиночный GPU, если задействован DLSS, способен потенциально обойти пару аналогичных и по скорости, и по качеству картинки.

Словом, работать совсем без ведома игровых приложений сейчас не выходит. А сами они в последнее время чаще всего использование SLI и CrossFire запрещают. Да и пользователю еще надо умудриться обзавестись подходящей для multi-GPU системой: что творится со SLI, мы описали выше, а AMD просто убрала поддержку CrossFire начиная с GPU семейства Navi. Так что даже если раздобыть пару карт линейки Radeon RX 5000 или Radeon RX 6000, то заставить их работать совместно не удастся. А более старые карты ничем не помогут, поскольку новые игры откажутся работать в режиме SLI или CrossFire. Таковы, например, все игры с поддержкой трассировки лучей или тех же технологий масштабирования разрешения.

По крайней мере, ничего не получится, если продолжать оперировать классическими методами. Почему это не мешает тем же Instinct? По той же причине, по которой SLI или CrossFire не нужны майнерам, а вот большое количество видеокарт им было нужно :) Дело в том, что при использовании GPU для расчетов не требуются технологии их объединения. Организация работы — дело самих приложений, которые способны настраиваться на любое количество чипов и потоковых процессоров. И не обязательно одинаковых. Тот же код OpenCL может одновременно крутиться на ядрах центрального процессора и нагружать работой несколько GPU (можно разных).

А нет ли возможности заставить так же работать игровые приложения? Когда-то — не было. Поэтому производители и разрабатывали технологии создания «виртуального» видеоадаптера, чтобы задействовать несколько физических видеокарт силами существовавших API. Как только выяснилось, что этот путь завел в тупик, за дело взялись программисты, которые приступили именно к доработке API. В итоге DirectX 12 и Vulkan практически одновременно получили поддержку многопроцессорной работы. В смысле — «много-графически-процессорной», поскольку они теперь умеют работать не с одним рендер-устройством (что было верно для ранних версий DirectX и OpenGL), а с любым их количеством (и качеством). По сути, новые возможности API полностью заменяют не только SLI/CrossFire в стандартном виде, но и Dual Graphics, причем может одновременно использоваться продукция разных производителей: так, бюджетной видеокарте AMD или Nvidia сможет помогать интегрированный GPU в процессоре AMD или Intel. Понятно, что сильно «перекошенные» конфигурации большого смысла не имеют, однако «интеграшка» сможет разгрузить даже небюджетный GPU от какой-то побочной деятельности, а это в нынешних условиях уже немало. Особенно это важно в ноутбуках, коих давно продается намного больше, чем настольных систем, в том числе и потому, что многие геймеры переехали на портативные системы (что еще лет 15 назад казалось невозможным — не говоря уже о 25).

Словом, всё замечательно. Но есть нюансы. Ведь для поддержки новых возможностей придется полностью перейти на новые API. И, соответственно, на новые движки — что обычно происходит с задержкой. Например, разные гоночные симуляторы до сих пор используют движок EGO 4.0, появившийся еще в 2015 году. С тех пор к нему «прикрутили» поддержку DirectX 11, а затем и DirectX 12, однако это сказалось лишь на качестве картинки, да и то не слишком. Сама же механика рендеринга остается неизменной на протяжении нескольких лет.

В общем, для полной реализации новых возможностей потребуется обновить все игровые движки и, возможно, дорабатывать сами игровые приложения. Так что цена относительно высока. Но здесь хотя бы есть за что бороться, поскольку это multi-GPU на новом уровне. В частности, речь не идет уже о паре GPU одного производителя — совместно смогут работать разные, причем в любых количествах. И, кстати, можно вернуться от AFR, со всеми его недостатками, к SFR (Split Frame Rendering), когда видеокарты выполняют рендеринг разных частей одного кадра. Почему это важно? Потому что SFR позволяет «сложить» не только производительность, но и память отдельных видеокарт, что необходимо для перехода к высоким разрешениям. И теоретически мы получим ту самую возможность поэтапной модернизации, которая так манила в нулевые, но несколько раз оказывалась обманкой. Ведь раньше она требовала идентичности видеокарт — в отличие от multi-GPU силами API. В итоге, правда, может пострадать вторичный рынок, но производителям его точно не жалко.

А теперь еще об одном совпадении (из разряда Совпадение? Не думаю! ). Информация о потенциальном светлом будущем стала просачиваться в массы с 2015 года. Напомним: и AMD, и Nvidia начали сворачивать классические технологии multi-GPU с 2014-го. Во всяком случае, именно тогда вышли последние двухпроцессорные «бытовые» видеокарты обоих производителей. В дальнейшем они несколько лет не мешали пользователям собирать такие конфигурации самостоятельно, но теперь уже и способствовать этому перестали. Зато дружно начали заниматься развитием технологий, со SLI и CrossFire просто несовместимых. Логика простая: зачем пытаться развивать явно тупиковое решение «на уровне драйвера», когда предложено более гибкое

Полный текст статьи читайте на iXBT прочитано 53067 раз