Огляд відеокарти AMD Radeon RX Vega 64
Відеокарти на основі GPU сімейства Polaris добре проявили себе як доступний масовий продукт та допомогли графічному підрозділу AMD повернути ринкові позиції, втрачені картами Radeon 300 серії. Тим не менш, AMD спочатку дала зрозуміти, що Polaris, на відміну від попередніх архітектур, не розвиватиметься у бік великих чіпів, якими були ядра Hawaii і потім Fiji в епоху 28 нм.
Дійсно, хоча Polaris виграла в енергоефективності від переходу на норму 14 нм FinFET, вона все ще має багато спільних рис зі старими продуктами AMD (Tonga та Fiji), які завадили так само ефективно розпорядитися перевагами прогресивного техпроцесу. І хоча AMD виправила положення шляхом оптимізації виробництва та схемотехніки GPU у другому поколінні Polaris, карти Radeon RX 500-ї серії, як і раніше, обмежені в потенціалі тактових частот і позбавлені архітектурних переваг, які могли б наростити швидкодію в інструкціях за такт. Як мікроархітектура GCN, що лежить в основі чіпів AMD, так і організація блоків усередині графічного процесора вимагали перегляду, і це завдання лягло на майбутнє сімейство Vega.

⇡#Архітектура AMD Vega
NCU - Next-generation Compute Unit
p align="justify"> Основним будівельним блоком в архітектурі Graphics Core Next є Compute Unit, який в даному випадку позначається абревіатурою NCU (Next-generation Compute Unit). З часів першої реалізації GCN понад п'ять років тому AMD не вносила кардинальних змін до структури CU. Як і в попередніх ітераціях, NCU у складі Vega, як і раніше, містить 64 шейдерних ALU, які здатні виконати 128 операцій одинарної точності (FP32) за такт. Об'єм кеша першого рівня і пам'яті, що розділяється всередині NCU, також залишився незмінним з часів GCN 1.0. Тимне менше, якщо в GCN версії 1.3, до якої відносяться чіпи Polaris, CU лише зазнав оптимізації, що сприяють збільшенню питомої продуктивності порівняно з CU в GCN 1.2 (Tonga та Fiji), і дві версії архітектури навіть залишилися сумісні на рівні ISA, розробники Vega впровадили масу нових інструкцій та форматів даних, за рахунок яких GCN п'ятого покоління можна розцінювати як найглибше перетворення шейдерної мікроархітектури Graphics Core Next на сьогоднішній день.

Але найголовніше — це те, що NCU у складі Vega здатний комбінувати операції зниженої розрядності, таким чином збільшуючи пропускну здатність. Наприклад, замість 128 операцій за такт над числами FP32, які виконує окремий NCU, може бути виконано 256 операцій FP16 або 512 операцій FP8. Єдиним із інших GPU, який наділений такою функцією, на сьогоднішній день є GP100 від NVIDIA. Таким чином, Vega, крім високопродуктивної ігрової архітектури, є універсальним рішенням для розрахунків широкого призначення — у всьому, крім подвійної точності, т.к. пропускна спроможність FP64 обмежена значенням 1/16 від FP32.
Тайловий рендеринг та підтримка Direct3D feature level 12_1
Наступна область, у якій Vega зробила великий крок уперед, – це пропускна спроможність у пікселах. Після NVIDIA, AMD використовує в Vega тайловий рендеринг - технологію, яка широко використовується в мобільній графіці і дозволяє скоротити кількість звернень до даних, що знаходяться за межами кеш-пам'яті GPU. Аналогічно працює механізм Draw-Stream Binning Rasterizer (DSBR) у складі Vega.
Класичний тайловий рендеринг, широко поширений у мобільних GPU, має на увазі обробку кадру в два проходи. Спочаткудрайвер поділяє екранний простір на тайли (дільниці з типовим розміром 16 × 16 або 32 × 32 пікселі) і складає індекс полігонів, що знаходяться в проекції кожного тайлу. Потім послідовно в межах кожного тайлу повністю виконується процедура рендерингу - від трансформації та перетину полігонів до заповнення текстур та виконання шейдерів - і кінцевий результат всіх тайлів зшивається в єдину картинку. Перевага такого методу полягає в тому, що будь-які проміжні операції в межах тайлу оперують єдиним масивом даних, який повністю міститься в кеш GPU, а отже, скорочується частота звернень до оперативної пам'яті.
Тим не менш, необхідність у двох проходах обробки геометрії сцени сама по собі витрачає пропускну здатність RAM, оскільки GPU необхідно спочатку записати у зовнішню пам'ять інформацію про полігони, що потрапляють у той чи інший тайл, а потім, виконуючи рендеринг від тайла до тайла, витягувати її назад. Як наслідок, ефективність тайлового рендерингу в кінцевому рахунку залежить від того, чи економія ПСП переважує на швидкості заповнення пікселів її втрати на двопрохідну проекцію геометрії. У мобільних додатках, що відрізняються простою геометрією, тайловий рендеринг виправдовує себе, але для сучасних десктопних ігор краще підходить стандартний метод миттєвого (immediate) рендерингу, за якого в єдиному екранному просторі відбувається послідовна розтеризація одного полігону за іншим.
Реалізація тайлового рендерингу в чіпах Maxwell/Pascal та Vega відрізняється. У NVIDIA відсутня етап сортування полігонів, оскільки трансформація геометрії відбувається єдиним проходом. AMD, навпаки, здійснює сортування, але витрата тактів на цю операцію знижується шляхом динамічного вибору розміру тайлу та партії (batch) примітивівзалежно від складності конкретної сцени.
Крім того, сортування та угруповання примітивів у партії дозволяє найбільш ефективно запобігати накладенню піксельних шейдерів на невидимі пікселі, перекриті полігонами, найближчими до площини екрану. Окремі вибірки пікселів Vega поміщає в чергу, яка вказує на якій глибині від екрану вони знаходяться, а т.к. ця черга має кінцевий розмір, доцільно використовувати тайловий рендеринг, щоб у межах окремого тайла вкластися в її межі.

Vega може похвалитися підтримкою можливостей, передбачених Direct3D рівня 12_1. Фактично серед сучасних GPU Vega має найбільш повний набір функцій, включаючи ряд опціональних.

Оптимізований front-end
Чіпи Polaris не відчувають гострої нестачі швидкодії на ранніх етапах рендерингу, проте в порівнянні з конкуруючою архітектурою AMD було над чим попрацювати і в цій галузі. Vega, як і раніше, містить по одному блоку обробки геометрії на кожен Shader Engine (найбільшу структуру в схемі GPU, яка об'єднує всі стадії конвеєра рендерингу), але розробники знайшли можливість збільшити граничну пропускну здатність front-end'а з чотирьох до 17 примітивів за такт .
Для цього AMD представила альтернативний режим роботи геометричного движка, в якому деякі зі стадій фіксованої функціональності були заміщені програмованими "шейдерами примітивів" - так само, як у чіпах NVIDIA Pascal конвеєр геометрії є частково програмованим. Крім того, що шейдери примітивів власними силами виконуються більш економно в порівнянні з аналогічними стадіями фіксованого конвеєра, вони дозволяють відсікати невидимі примітиви на більш ранніх стадіях. Шейдерипримітивів у майбутньому можна буде задіяти для тесселяції та багатьох інших функцій, включаючи одночасну проекцію сцени з різних точок огляду та в різній роздільній здатності. Поки, однак, незрозуміло, чи потрібно для того, щоб активувати програмований конвеєр геометрії Vega будь-яку участь з боку додатків або цю функцію бере на себе драйвер.

Крім безпосередньої оптимізації геометричного конвеєра AMD вжила заходів для того, щоб гарантувати повне завантаження двигунів в межах GPU. Додатковий блок під назвою Intelligent Workload Distributor (IWD) забезпечує балансування навантаження між кількома геометричними двигунами, планування операцій з метою мінімізувати зміну контексту та угруповання кількох інстанцій дрібного примітиву в єдиній SIMD-інструкції.
High-Bandwidth Cache Controller
У складі Vega AMD представила інноваційну організацію пам'яті, в рамках якої GPU оперує приблизно так, як центральний процесор ПК. У стандартній архітектурі GPU розглядає вміст локальної оперативної пам'яті як сукупність структур, що відповідають даним різного типу, текстури, масиви вершин і т.д. Як наслідок, оскільки ці структури можуть мати великий розмір, їхнє переміщення із системою пам'яті в локальну пам'ять суттєво знижує швидкість рендерингу. Як правило, розробники додатків прагнуть зарезервувати якомога більший обсяг локальної пам'яті і тримати всі необхідні дані ближче до GPU, хоча є й такі методи, як Tiled Resources, за допомогою яких можна підвантажувати дані з системної пам'яті невеликими порціями (на зразок того, як працює технологія Mega Texture в двигунах id Software).


⇡#GPU Vega 10
Єдиний GPU сімейства Vega, який зараз випустила AMD, за конфігурацією обчислювальних блоків відповідає процесору Fiji: 4096 шейдерних ALU, 256 блоків накладання текстур і 64 ROP. Тим не менш, число транзисторів у чіпі збільшилося з 8,9 до 12,5 млрд. У той же час завдяки техпроцесу 14 нм FinFET площа кристала вдалося скоротити з 596 до 486 мм2. Таким чином, Vega 10 - на 72% щільніший чіп, ніж Fiji, і навіть у порівнянні з Polaris площа використовується на 5% ефективніше.
Частина транзисторного бюджету, яким Vega 10 відрізняється від Fiji, витрачена на подвоєний обсяг кеш-пам'яті другого рівня (4 проти 2 Мбайт Fiji) на нові функції рендерингу, описані вище, але левова частка елементів, розподілених у схемі GPU, служить основою для додаткових стадії конвеєра, які AMD довелося впровадити, щоб забезпечити стабільну роботу на підвищених тактових частотах. Однак розробники запевнили, що додаткові стадії з'явилися тільки на тих ділянках, де користь від високої частоти переважує латентність, що зросла. В іншому випадку використовувалися більш витончені методи, включаючи зменшення довжини внутрішніх з'єднань або повну переробку тих чи інших функціональних блоків.

Регістри внутрішньої пам'яті Vega побудовані із застосуванням статичної пам'яті, спочатку створеної для процесорів Ryzen, яка, за даними AMD, забезпечує економію площі обсягом 18%, зниження потужності на 43% і латентності на 8% проти стандартними рішеннями.
До речі, ROP усередині Vega тепер є клієнтами кеша другого рівня, а не контролера пам'яті. Це збільшить продуктивність движків відкладеного рендерингу, оскільки результат окремого проходу буде записаний безпосередньо в L2 замістьоперативної пам'яті та буде негайно доступний текстурним модулям для наступних операцій.
Для комунікацій усередині чіпа між власне GPU та uncore-компонентами (контролером RAM, шини PCI Express, мультимедійним блоком тощо) Vega використовує інтерфейс Infinity Fabric, який також є частиною процесорів архітектури Zen. Завдяки їй AMD у майбутньому зможе легко інтегрувати ядро Vega в APU нового покоління.
У Vega знову використовується пам'ять типу HBM, але оскільки друга версія технології дозволяє випускати складання об'ємом аж до 8 Гбайт, AMD одночасно отримала можливість збільшити об'єм локальної пам'яті GPU та спростити конструкцію за рахунок меншої кількості мікросхем та спрощеного розведення з'єднань. Кремнієва підкладка Vega 10 об'єднує кристал GPU з двома зборками HBM2 по 4 Гбайт 2048-бітною шиною, але за рахунок практично подвоєної частоти HBM2 процесор зберіг "сиру" пропускну здатність пам'яті, порівнянну з характеристиками Fiji.

⇡#Технічні характеристики, комплект постачання, ціна
AMD представила три прискорювачі на основі Vega 10, крім Radeon RX Vega Frontier Edition. Топовою моделлю в сімействі є Radeon RX Vega 64, доступна у варіантах з повітряним кулером та системою рідинного охолодження. Число в назві вказує на 64 активні NCU у складі повністю розблокованого чіпа. Оскільки Radeon R9 Fury X має таку ж конфігурацію, додаткову продуктивність RX Vega, крім оптимізації конвеєра, витягує з більш високих тактових частот.
Зважаючи на масштаб оптимізацій, які містить Vega 10, розміри чіпа та його потужність, було б логічно очікувати від Radeon RX Vega 64 продуктивності на рівні GeForce GTX 1080 Ti або вище. Принаймні поТеоретична пропускна здатність операцій FP32 Radeon RX Vega 64 випереджає топовий прискорювач конкурента. Але судячи з цін, AMD не така впевнена в потенціалі свого флагмана. Дійсно, версія з повітряним охолодженням надійде у продаж за рекомендованою ціною $499 – аналогічно GeForce GTX 1080. Рекомендована ціна Radeon RX Vega 64 Liquid Cooled Edition – $699, що відповідає поточній ціні GeForce GTX 1080 Ti.