В предыдущей статье мы рассмотрели технологию объединения несколько видеокарт для их совместной работы от Nvidia — SLI (советую ознакомиться с ней, потому что я буду на нее ссылаться), теперь же рассмотрим схожую технологию от их конкурентов — AMD CrossFireX.
История ATI CrossFire
В конце 90ых дела у ATI шли не очень хорошо — в 1999 Nvidia представила за один год аж два новых поколения — Riva TNT2 и GeForce 256. 3dfx, второй конкурент, в 1998 году представил технологию SLI, позволяющую объединять две видеокарты Voodoo2 вместе на одном ПК. А вот ATI смогла представить лишь RAGE 128 (и чуть позже разогнанную версию PRO), в которых ничего инновационного не было. Поняв, что так и вылететь с рынка видеокарт недолго, они решили скопировать технологию SLI у 3dfx и выпустили «двухголовую» видеокарту ATI RAGE FURY MAXX, которая включала в себя два GPU RAGE 128 PRO. Сама технология объединения видеочипов называлась MAXX (Multiple ASIC Technology), и была чисто программной: каждый из графических процессоров полностью готовит один кадр, и при выводе на экран они чередуются. По сути это была вылитая технология AFR (Alternate Frame Rendering), которая применяется до сих пор.
Но, однако, видеокарта FURY MAXX просто имела два GPU, объединять две видеокарты от ATI было нельзя — в те времена была шина AGP, и этот порт на материнских платах был только один. В 2004 году была представлена шина PCI Express, которая позволяла делить линии — а значит и делать несколько портов и подключать несколько видеокарт. Этим воспользовалась и Nvidia, представив новую технологию SLI, и ATI, сменившая название MAXX на CrossFire.
Отличий между ними тогда хватало: для создания CrossFire нужна была так называемая мастер-карта — она имела внутри чип наложения, позволяющий получать данные с карты-слэйва (slave) и сочетать их попиксельно с основной картой. Объединение происходило через специальный кабель DVI-DMS, а подключение монитора — через еще один коннектор DVI, отходящий от мастер-карты:
Это было жутко неудобно, и в будущем ATI пришла к тому же, что и Nvidia сразу — данные передаются через специальный мостик, и такого понятия как master или slave больше нет (а еще дальше уже компания AMD, купившая ATI, вообще отказалась от мостиков). И если это первое отличие было в минус ATI, то вот второе наоборот, в плюс: если в SLI можно объединять видеокарты только одной серии, то в случае с ATI видеокарты могут быть даже разных поколений.
В дальнейшем, в 2008 году, компания AMD представили Quad CrossFireX — технологию, позволяющую объединять до четырех видеокарт вместе, и сейчас технология объединения видеокарт называется AMD CrossFireX (или, сокращенно, CF).
Алгоритмы построения изображения с использованием CF
Первый алгоритм не является новым — его так же успешно применяет и Nvidia. Называется он Slicing (Нарезка), и заключается в том, что кадр делится на две части — одну обрабатывает одна видеокарта, другую — другая:
Причем части не обязательно могут быть одинаковыми: все зависит от сложности сцены, и области рендеринга для каждой видеокарты могут быть свои. Для игр этот алгоритм подходит слабо, потому что заранее просчитать сложность кадра невозможно.
Второй алгоритм ATI/AMD придумали сами. Он называется Tiling (от англ. tile — плитка). Суть алгоритма в том, что весь кадр делится на «плитки» по 32х32 пикселя каждая, и каждая видеокарта в шахматном порядке готовит свою половину плиток:
Плюс этого метода — на каждую из двух видеокарт будет приходиться в среднем половина нагрузки, то есть нет такого, как в Slicing, когда одной видеокарте досталось в игре небо и она подготовила кадр за 5 мс, а другой досталась куча текстур земли, зданий и так далее, и она подготовила кадр за 20 мс: тут каждой из видеокарт досталось и небо, и текстуры земли и других объектов. Но, как и следовало ожидать, есть и минусы: во-первых, требуется максимально точное соответствие характеристик видеокарт: если в Slicing кадр можно делить пропорционально производительности каждой из GPU, то в Tiling разделение нагрузки идет ровно пополам, поэтому видеокарты должны быть полностью идентичны. Во-вторых, между картами не делится геометрическая нагрузка, но в играх обычно она невысокая и проблем с этим не бывает.
Третий алгоритм, AFR, общий с Nvidia — каждая из видеокарт готовит кадры поочередно:
Плюсы те же — никаких артефактов при отрисовке кадра, можно легко распараллелить нагрузку и на 4 GPU. Минус — все кадры имеют разную сложность, что может привести к дерганой картинки при низком fps.
И последний алгоритм «честного» CrossFire — это SuperAA (супер-сглаживание). Принцип схож с таковым у SLI AA — каждая видеокарта сглаживает картинку с некоторым шагом относительно другой, и потом полученные картинки склеиваются в один кадр. Однако отличия от SLI AA все же есть — в случае с Nvidia используется MSAA сглаживание, в случае с AMD — SSAA (оно дает картинку чуть лучше, но и требует больше ресурсов). Доступны режимы сглаживания от х8 до х14 (напомню, что у Nvidia максимум это х32).
В случае с ноутбуками на APU от AMD, включающих в себя как процессор, так и встроенную графику, AMD поступила хитрее Nvidia: если в ноутбуке есть дискретная графика от AMD, то ее можно объединить с интегрированной в режиме Dual Graphics, когда работают обе видеокарты (напомню, что у Nvidia есть технология Optimus, которая позволяет использовать или дискретную графику, или интегрированную, но никак не вместе). Однако у этого метода есть свои ограничения: во-первых, он работает только с DirectX 10 и выше (в принципе, с учетом того, что игры с DirectX 9 старые и нетребовательные по современным меркам — CF там и не нужен). Во-вторых, разница в производительности дискретной и интегрированной видеокарт не может быть больше двухкратной, то есть объединить вместе интегрированную в APU графику с какой-нибудь R9 M390 увы, не получится (опять же — тут интегрированная графика как пятое колесо в телеге и будет только мешаться, так что AMD в принципе поступили правильно).
Системные требования для CrossFireX
Здесь почти все тоже, что и для SLI от Nvidia (поэтому второй раз переписывать требования я не буду), однако есть одно важное различие — вообще не нужны мостики для связи видеокарт (забавно — в тысячной линейке Nvidia не только не отказалась от мостиков для SLI — она ввела новые, еще более быстрые), контроллер CF теперь находится на самой плате видеокарты, а данные передаются через PCI-E. Больше существенных различий нет — все так же подключаются видеокарты одной серии, все так же объем памяти ограничивается таковым у самой слабой видеокарты в DX 11 и суммируется в DX 12.
И самый главный вопрос — имеет ли смысл делать CF? Да, имеет. Тут все просто — приверженцы «зеленых» могут купить одну GTX 1080 Ti, которой за запасом хватит для всех современных игр, поэтому SLI для игр в принципе не нужен. У AMD пока что самая мощная графика это RX 580, которая вообще говоря находится на уровне обновленных GTX 1060, и которой хватает лишь для FHD (в 2К придется существенно снижать настройки, или же играть с 30-40 fps). Так что тут CF имеет смысл — две RX 580 позволят нормально играть в 2К на ультра-настройках графики.