GeForce_980_Ti_garage_system-34.jpg

Для любого вычислительного компонента, будь то процессор или GPU, есть несколько путей развития. Самый банальный — это взять и нарастить частоту. При этом производительность будет расти почти линейно, но вот тепловыделение будет расти по кубическому закону (почему — ответ в этой статье). Второй способ — оптимизация самого процессора: доработка конвейера, оптимизация инструкций, изменение типа транзисторов и так далее. Способ хорош тем, что даже сейчас позволяет поднять производительность на 5-7% за поколение, но это явно не тот прирост, которого все ждут. Ну и третий способ — это уменьшение техпроцесса: при этом снижается и рабочее напряжение процессора, а значит и его тепловыделение, что позволяет, к примеру, увеличить его частоту. Однако чем меньше техпроцесс, тем труднее его сделать еще меньше: к пример, Intel «сидит» на 14 нм уже третий год, и неизвестно, когда перейдет на 10 нм.

Перенесемся на 13 лет назад — времена Pentium 4. Частоту наращивать выше 3.5 ГГц было не эффективно — процессор и так был очень горячим. Перевод его на более низкий техпроцесс и тем более оптимизация — процесс долгий, а AMD со своими Athlon не ждет. И тогда Intel решила зайти с другой стороны — сделать двухядерный процессор, но на несколько более низких частотах. В итоге тепловыделение осталось на том же уровне, а вот производительность повысилась. Позже появились пользовательские 4ядерные процессоры, потом 6ядерные, ну и апогей — 8ядерные Ryzen. И этот процесс, разумеется, будет продолжаться дальше.

А что же происходит на рынке видеокарт? В принципе — тоже самое. «Одноголовых» решений хватало и хватает обычным игрокам, но для про-геймеров компания 3dfx в 1998 сделал тоже, что и Intel 7 годами позже — выпустила «двухголовую» видеокарту.

История появления SLI

Как я уже написал выше, в 1998 году компания 3dfx представила технологию SLI (англ. Scan Line Interleave - чередование строчек), с помощью которой могли работать вместе два чипа Voodoo2:

voodoo_2_sli_2a.jpg

Это давало невероятные по тем временам возможности — запуск игр в разрешении 1024х768. Однако проблем так же хватало — это и повышенное тепловыделение, и цена (600 долларов). Увы — идея не особо прижилась из-за того, что софта, который умел задействовать оба чипа, практически не было, и в итоге через пару лет линейка Voodoo5 оказалась просто провальной — продали всего 200 видеокарт, из которых реально работало около сотни. Это, а также другие ошибки 3dfx, привели к тому, что компания была куплена Nvidia за 110 миллионов долларов в 2001 году. 

В Nvidia, конечно же, оценили SLI, но вот проблема в том, что тогда получил развитие AGP-порт, который был на материнских платах только один, так что идея SLI на двух разных видеокартах, увы, провалилась (хотя видеокарты с двумя графическими чипами все же производились, но, скорее, как исключения).

В 2004 году появилась шина PCI-E, которая активно используется до сих пор. И одним из ее плюсов было деление линий — то есть можно было сделать два порта по х4 или один по х8. Стали появляться материнские платы с двумя портами PCI-E, и тогда же Nvidia «перезапустила» SLI — теперь он расшифровывается как Scalable Link Interface (масштабируемый интерфейс). Увы — изначально (да и сейчас) были все те же проблемы, что и у 3dfx: нужно было оптимизировать драйвера под использование 2 видеокарт, и нужно было «пинать» разработчиков игр, чтобы они оптимизировали их под SLI. Это делали далеко не все, поэтому особого толку от SLI тогда не было: люди переплачивали вдвое, а прирост в играх в лучшем случае был 50-60%, а в некоторых случаях fps от использования SLI даже падал.

Но Nvidia не сдавалась — в 2007 году был представлен Triple-SLI, позволяющий подключать уже 3 видеокарты вместе, и даже годом раньше появился не совсем честный Quad-SLI: можно было подключать вместе две двухчиповых видеокарты (GeForce 7900GX2), что давало 4 работающих вместе GPU. В теории Nvidia обещала, что 3 видеокарты могут работать вместе до 2.5 раз быстрее, чем одна. На практике, увы, все было еще хуже, чем с 2 картами.

Алгоритмы построения изображения с использованием SLI


Самый простой алгоритм — Split Frame Rendering (раздельный рендеринг кадра). Он заключается в том, что кадр делится поровну между всеми видеокартами в системе:
001_sfr.jpg
Плюсы очевидны — картинку можно без проблем поделить и на 2, и на 3, и на 4, и даже на 10 кусков, то есть в теории количество одновременно работающих видеокарт не ограничено. Но проблемы, увы, тоже есть — у каждого участка кадра своя сложность, и поэтому все видеокарты ждут, пока одна из них не обработает свой самый трудный участок. Из-за этого видеокарты временами работают неэффективно, и в итоге fps оказывается ниже того, что мог быть.

Второй алгоритм, вытекающий из первого — Alternate Frame Rendering (чередующийся рендеринг кадра). Он заключается в том, что все видеокарты обрабатывают кадры по очереди: к примеру, если их две, то одна обрабатывает все четные кадры, а другая — все нечетные:
004_afr2.jpg
Плюсы все те же — таким образом можно распараллелить загрузку между любым количеством видеокарт. Минусов тоже хватает — начиная с того, что сложность кадров может быть разной (а значит опять же возможны задержки), и заканчивая тем, что в видеопамяти теперь должен храниться не один кадр как раньше, а уже два — то есть требуется больше видеопамяти (вообще говоря, я несколько утрирую — один кадр это минимум, в современных играх видеокарта может хранить и 5 последующих кадров в буфере).

К слову, в Quad-SLI с двумя двухчиповыми видеокартами используется объединение технологий выше — одна двухчиповая видеокарта использует SFR, то есть разделение кадра на две части, а в сумме обе видеокарты работают по AFR — то есть чередуют кадры. Но, как не трудно догадаться, проблем с организацией всего этого множество, поэтому прирост производительности гораздо ниже ожидаемого 4кратного.

Еще один алгоритм построения изображения, SLI AA (Anti Aliasing, сглаживание), качественно отличается от предыдущих — он заточен не на повышение fps, а на улучшение качества картинки: один кадр генерируется на всех видеокартах, и последовательно частично сглаживается сначала на одной, потом на другой (то есть сглаживание идет с некоторым шагом). В итоге на выходе мы получаем картинку с тем же fps, что и у одиночной видеокарты (ну или несколько выше), но гораздо более четкую — может быть даже х32 сглаживание!

Однако SLI может использоваться не только для прямого распараллеливания нагрузки — к примеру, у Nvidia есть PhysX SLI — он заключается в том, что одна видеокарта (самая мощная) обрабатывает графику, а другая (более слабая) — PhysX-эффекты (дым, огонь, эффекты ткани и так далее). Так же есть так называемый Hybrid SLI — это работа интегрированной в процессор видеокарты вместе с дискретной. Увы — как и следовало ожидать, прироста от этого не было, поэтому эта технология трансформировалась в Nvidia Optimus, где картинку может рендерить или дискретная, или интегрированная видеокарта, ну а на экран картинку всегда выводит интегрированная (чтобы не было заметного переключения между видеокартами).

Требования для системы с видеокартами в SLI

Так как мы подключаем сразу несколько видеокарт, то на материнской плате должно быть столько же слотов PCI-E, сколько будет подключено видеокарт. В принципе для работы одной карты хватает даже х4 скорости, поэтому на современных материнских платах обычно ставят до 3 портов, в итоге получается режим х8+х4+х4. Второе очевидное требование — это блок питания, с, во-первых, достаточной мощностью (700 и выше ватт), и, во-вторых, с нужным количеством 6 и 8-пиновых коннекторов для дополнительного питания видеокарты. Также для работы требуется специальный SLI-мостик для соединения видеокарт напрямую:

55532c131f86d_untitled.jpg

Разумеется, можно передавать данные напрямую через PCI-E, и раньше так делали, но сейчас объем данных настолько велик, что их передача по PCI-E существенно бы снизила производительность (так как сам интерфейс PCI не очень-то и быстрый, особенно если используются всего 4 линии). Также требуются видеокарты с поддержкой SLI — их легко определить по специальным контактам для подсоединения мостика. Еще одно важное требование — мощный процессор: чем выше fps, тем выше нагрузка на процессор, к тому же ему придется синхронизировать видеочипы между собой.

Самое основное — какие видеокарты объединяются в SLI. Во-первых, для корректной работы это должны быть видеокарты одной линейки (но не обязательно одинаковых производителей). Объем памяти ограничивается наименьшим объемом из все видеокарт (только в играх под DX 11 — в DX 12 память может суммироваться). Все остальное — версии BIOS, частоты и так далее — не важно.

Ну и самый главный вопрос — а стоит ли вообще делать SLI? Мой ответ — нет, исключение — вы очень требовательный геймер и хотите играть в 8К60. Посудите сами — самой мощной пользовательской одночиповой видеокарты, 1080 Ti, без проблем хватает на максимальные настройки даже в 2К, в 4К для 60 fps в самых требовательных играх придется чуть убрать сглаживание и эффекты. То есть обычному геймеру этой видеокарты просто заглаза. Заморачиваться с SLI стоит, если у вас, к примеру, 120 гц 4К монитор, или парочка 4К 60 гц мониторов — в таком случае да, SLI имеет смысл для достижения плавности картинки на максимальных настройках в обоих случаях, но и тут нужно понимать, что не во всех играх от SLI будет существенный прирост, поэтому все равно в некоторых играх придется или снижать графику, или «терпеть» fps ниже 60. Так что увы — если в процессорах многоядерность давно стала нормой, в мире видеокарт пока все еще правят «одноголовые» решения.