up
ua ru
menu


chieftec_ban_160.gif

logo minifile

::>Відеокарти > 2014 > 09 > ...

Версія для друку
Переопублікувати статтю

19-09-2014


rss

Знайомство з мікроархітектурою NVIDIA Maxwell і новими технологіями для обробки графіки

Незважаючи на те, що частка ринку десктопних рішень потроху зменшується, поступаючи  свої позиції мобільним платформам і консолям, у ПК дотепер залишається величезна армія шанувальників. Відповідно, виробникам комплектуючих є зміст далі розвивати цей напрямок і вкладати свої ресурси в розробку нових пристроїв. Звичайно, тут ще велику роль зіграла й ігрова індустрія. Адже в 95% випадках ми купуємо комп'ютер саме заради «іграшок».

NVIDIA Maxwell

NVIDIA Maxwell

Хоча в цьому немає нічого дивного. Популяризація онлайн-проектів зробила свою справу й втягнула користувачів у глобальну індустрію, де проводяться турніри, транслюються геймерські баталії, публікуються звіти про бої та, звичайно ж, заробляють гроші. За даними компанії NVIDIA, щомісячна аудиторія ігрового відеосервісу Twitch нараховує вже 55 мільйонів, а світовий чемпіонат з гри League of Legends дивилося більше людей, аніж змагання з баскетболу й бейсболу. Фінали ж геймерських турнірів і зовсім збирають цілі стадіони.

Такі показники говорять самі за себе: інтерес із боку користувачів тільки росте. Однак ростуть і вимоги самих ігор. Розробники з кожним роком намагаються зробити якомога більш реалістичною графіку, а для її обробки потрібно все більше комп'ютерних ресурсів, у першу чергу відеокарти. Напевно, саме тому галузь графічних прискорювачів розвивається чи не найшвидшими темпами в IT-індустрії. 

NVIDIA Maxwell

Ще свіжі в пам'яті результати моделей NVIDIA GeForce GTX 680 і NVIDIA GeForce GTX 780, а компанія вже підготувала нову пару високопродуктивних рішень - NVIDIA GeForce GTX 980 і NVIDIA GeForce GTX 970, в основі яких лежить передова мікроархітектура NVIDIA Maxwell.

Особливості мікроархітектури

Основні відмінності між відеокартами на основі NVIDIA Maxwell і NVIDIA Kepler 

NVIDIA Maxwell

Структурна схема чіпа NVIDIA GM204 (NVIDIA Maxwell)

NVIDIA Maxwell

Структурна схема чіпа NVIDIA GK104 (NVIDIA Kepler)

Як видно із представлених вище схем, при переході з мікроархітектури NVIDIA Kepler на NVIDIA Maxwell загальна організація відеоядра не перетерпіла змін. У його основі як і раніше лежить модульний принцип, де складеними блоками виступають графічні процесорні кластери (Graphics Processing Cluster, скорочено GPC), потокові мультипроцесори (Streaming Multiprocessor, скорочено SM) і контролери пам'яті. Така структура дозволяє простіше масштабувати конфігурацію ядра, тим самим створювати більш-менш потужну відеокарту. Усі переваги такого підходу добре прослідковуються на прикладі моделі NVIDIA GeForce GTX 780 Ti, яка була отримана з NVIDIA GeForce GTX 780 шляхом збільшення кількості тих самих блоків у графічному процесорі. Тому є всі основи вважати, що подібна картина спостерігатиметься й при формуванні модельного ряду 9-ої серії відеокарт NVIDIA GeForce GTX.

У максимальній конфігурації GPU NVIDIA GM204 включає до свого складу 4 графічні процесорні кластери (GPC) і 16 потокових мультипроцесорів Maxwell (SMM), тобто по 4 SMM на один GPC. Також кожен кластер оснащений окремим растровим движком (Raster Engine), який є фінальним блоком растеризації. Кожен же потоковий мультипроцесор (SMM) у свою чергу має 128 ядер CUDA (CUDA cores), виділений поліморфний движок (PolyMorph Engine, скорочено PE) і 8 текстурних блоків (Texture Unit, скорочено TU).

Тобто в цілому флагманський чіп NVIDIA GM204 включає до свого складу 2048 ядер CUDA і 128 текстурних блоків (TU). Саме його ми побачимо в основі найпродуктивнішої відеокарти нового сімейства − NVIDIA GeForce GTX 980. Нагадаємо, що в NVIDIA GeForce GTX 680 при схожій організації чіпа NVIDIA GK104 (також 4 графічні процесорні кластери) було на 512 ядер CUDA менше. Кількість же текстурних блоків не змінилася. Як говоритися, прогрес на обличчя.

Модернізації піддалися й контролери пам'яті. Тепер за кожним із них закріплено по 16 модулів растеризації (Raster Operations Pipeline, скорочено ROP) і по 512 КБ кеш-пам'яті L2. У сумі ми одержуємо 64 ROP і 2 МБ кешу другого рівня. В NVIDIA GK104 ці показники були куди скромнішими - 32 ROP і 512 КБ. Навіть оптимізована версія NVIDIA GK104 (чіп NVIDIA GK110-300-A1, який лежав в основі моделі NVIDIA GeForce GTX 780) не могла похвалитися такими показниками. 

NVIDIA Maxwell

Єдине, що в порівнянні з NVIDIA GK104 не змінилося, − це кількість самих контролерів пам'яті: їх як і раніше 4 штуки. Враховуючи розрядність кожного з них (64 біта), у цілому ми маємо шину в 256 біт. Конкуренти з AMD у топових відеокартах уже давно перейшли на 512-бітний стандарт. При великих обсягах відеопам'яті (в NVIDIA GeForce GTX 980 планується використовувати 4 ГБ) шина може стати вузьким місцем у продуктивності графічного адаптера. Однак у компанії NVIDIA знайшли простий спосіб рішення даної проблеми: встановлення більш швидких чіпів пам'яті. У результаті це позитивним чином відобразилося на пропускній здатності всієї підсистеми.    

Така реорганізація чіпа вплинула й на його складність. Так, кількість транзисторів зросла з 3,54 до 5,2 млрд., а площа кристала - з 294 до 398 мм2. При всьому цьому рівень TDP не тільки не збільшився, а навіть знизився на 30 Вт (з 195 до 165 Вт). Ось він, NVIDIA Maxwell у всій красі: більша продуктивність при меншому тепловиділенні, причому без зміни техпроцесу.

Але ж це не тільки зниження навантаження на блок живлення й систему охолодження, але й відмінний заділ для побудови потужніших рішень, наприклад, якої-небудь NVIDIA GeForce GTX 980 Ti зі збільшеною кількістю процесорних кластерів. При цих словах згадується модель AMD Radeon R9 295X2 з її божевільним рівнем TDP в 500 Вт. Та й одночіпова AMD Radeon R9 290X виглядає на тлі NVIDIA GeForce GTX 980 не інакше, як «грубкою».

NVIDIA Maxwell

В цілому ж флагман нової серії демонструє феноменальні результати при перерахунку FPS на ват. У більшості випадків за показником «продуктивність/енергоефективність» він має дворазову перевагу над NVIDIA GeForce GTX 680. При цьому потрібно розуміти, що подібна ситуація спостерігатиметься не тільки в топової моделі, але й у всіх рішень, основаних на графічному процесорі NVIDIA Maxwell. Одне підтвердження ми вже бачили на практиці - відеокарти на базі NVIDIA GeForce GTX 750 і NVIDIA GeForce GTX 750 Ti. У референсному варіанті для них навіть не потрібне приєднання додаткового кабелю живлення.

Як же інженерам компанії NVIDIA вдалося досягнути таких результатів? Відповідь ховається в структурі потокового мультипроцесора (SMM).

SMM замість SMX: не просто зміна назви

NVIDIA Maxwell

Структурна схема мультипроцесора (SMM) в GPU NVIDIA GM204 (NVIDIA Maxwell)

NVIDIA Maxwell

Структурна схема мультипроцесора (SMX) в GPU NVIDIA GK104 (NVIDIA Kepler)

Виробник ґрунтовно змінив компонування SMM (у мікроархітектурі NVIDIA Kepler даний блок називався SMX), зокрема керуючої логіки. Тут як і раніше використовуються 4 планувальники (Warp Scheduler), але тепер вони не є загальними для всіх ядер CUDA, а працюють тільки з певною групою, що складається з 32 штук. Причому кожна з груп одержала окремий буфер для зберігання стека інструкцій. Такий поділ значно поліпшив балансування навантаження в порівнянні з минулим варіантом. Також ряд заходів був прийнятий для оптимізації механізму вибірки інструкцій, внаслідок чого зменшилася витрати енергії при плануванні завдань. При цьому збереглася можливість виконання двох операцій за такт (наприклад, одночасна операція з ядром CUDA і блоком для завантаження/зберігання даних).

У порівнянні з мікроархітектурою NVIDIA Kepler, в NVIDIA Maxwell змінилася й ієрархія внутрішньої пам'яті. Роздільне компонування (48 КБ для кластери та 16 КБ для кешу L1) змінилася однією загальною структурою обсягом 96 КБ.

В результаті різниця в продуктивності при перерахуванні на ядро CUDA між потоковими процесорами SMX і SMM може досягати 40% на користь мікроархітектури NVIDIA Maxwell.

Новий поліморфний движок версії 3.0

NVIDIA Maxwell

Одним із основних нововведень в API DirectX 11 стало впровадження механізму тесселяції − технології поліпшення деталізації об'єкта шляхом збільшення кількості примітивів у полігоні. Розробникам ігор з’явилася можливість створювати добре промальовані моделі без великих витрат системних ресурсів. Природно, від виробників графічних чіпів також була потрібна підтримка, але вже на апаратному рівні. Очевидно, що чим краще працює блок тесселяції, тим більше FPS на екрані зможе одержати користувач під час промальовування сцени.

Цей блок входить до складу так званого поліморфного движка (PolyMorph Engine), невід'ємного структурного елемента потокового мультипроцесора ще з часів мікроархітектури NVIDIA Fermi. В GPU NVIDIA Maxwell використовується його третя ревізія (3.0).

NVIDIA Maxwell

В результаті усіх вдосконалень, а також подвоєння кількості блоків тесселяції в графічному процесорі NVIDIA GM204 у порівнянні з NVIDIA GK104, зросла й загальна продуктивність відеокарти NVIDIA GeForce GTX 980 у завданнях, пов'язаних з деталізацією сцени. На графіку ми можемо спостерігати дворазовий відрив від NVIDIA GeForce GTX 680, що іноді доходить навіть до трьохкратного. Звичайно, на практиці різниця у швидкодії буде не настільки значною, оскільки дана технологія використовується далеко не у всіх випадках рендерингу моделей, але кілька зайвих FPS вам гарантовані. Причому, чим більшу роздільну здатність ви будете встановлювати на екрані, тим відчутніше механізм апаратної тесселяції об'єктів впливатиме на продуктивність відеокарти в грі.  

Збільшення кількості модулів растеризації

Графічний процесор NVIDIA GK104 обладнаний 32 модулями растеризації (ROP), тоді як в NVIDIA GM204 їхня кількість подвоєна. Таким чином, за один такт може оброблятися у два рази більше кольорових зразків. Знову ж, це позитивним чином відіб'ється на швидкодії відеокарти при запуску ігор у високій роздільній здатності та при використанні прогресивних методів згладжування (Anti-Aliasing).

Поліпшення в підсистемі відеопам'яті

Як ми вже писали вище, чіп NVIDIA GM204 одержав 2 МБ кеш-пам'яті L2 і 4 ГБ зовнішньої відеопам'яті типу GDDR5. Нарощування обсягів дозволить значно знизити кількість звертань до цих блоків, а також за один раз завантажувати більші масиви даних. Особливо це актуально під час процесу текстурування сцен у високій роздільній здатності, оскільки набагато рідше задіюються ресурси системи з порівняно низькою продуктивністю, такі як оперативна пам'ять і накопичувач.

В NVIDIA GeForce GTX 980 підсистема відеопам'яті набрана із чіпів з ефективною частотою роботи 7000 МГц, тоді як в NVIDIA GeForce GTX 680 цей показник рівнявся 6000 МГц. У результаті при однаковій ширині шини пам'яті (256 біт) флагман 9-ої серії NVIDIA GeForce GTX має на 17% більшу пропускну здатність (224 ГБ/с проти 192 ГБ/с), що дасть певний приріст швидкодії в іграх, які запускаються у форматі WQHD (2560 х 1440) або 4K Ultra HD (3840 x 2160). 

Однак додаткові 17% (224 ГБ/с в абсолютному еквіваленті) не дозволяють говорити, що інженерам компанії NVIDIA вдалося повністю позбутися «пляшкового горлечка». Скажімо так, вони його просто розширили.

NVIDIA Maxwell

Тому додаткові зусилля були спрямовані й на поліпшення ефективності механізму компресії даних перед їхнім надсиланням в пам’ять. Він чимось нагадує алгоритм стиснення растрових зображень: група пікселів однакового кольору позначається як один піксель того ж кольору. У мікроархітектурі NVIDIA Maxwell, як і NVIDIA Kepler, використовуються тільки два трафарети (тайли): 4 х 2 пікселі та 2 х 2 пікселі. У результаті при пересиланні нескладних текстур можна досягнути коефіцієнта стиснення 8:1 або 4:1 відповідно.

Однак такий механізм буде малоефективним при роботі з більш якісними текстурами, де прилеглі пікселі найчастіше мають не однаковий відтінок, а його градації. У цьому випадку використовується метод компресії на основі різниці кольору (delta color compression). Його суть полягає в наступному: у кожному блоці вираховується різниця (дельта) між обраним пікселем і його сусідом, а потім GPU намагається запакувати це значення з використанням мінімальної кількості пам'яті. Наприклад: піксель «А» червоного кольору має значення «253», яке кодується 8 бітами. Піксель «B» - теж червоного кольору, але вже трохи іншого відтінку зі значенням «250», що також виражається у вигляді 8-бітного ключа. Однак різниця між «253» і «250» рівна «3», а для кодування цього результату можна буде обійтися й 2 бітами.

Очевидно, що при такому підході дуже важливо, який піксель вибирається з самого початку для обчислення різниці кольору. У мікроархітектурі NVIDIA Maxwell використовується нова версія алгоритму delta color compression 3.0, де піддався модернізації сам метод вибірки: для аналізу надходять кілька значень дельт різних пікселів і серед них вибирається найоптимальніше.

NVIDIA Maxwell

У результаті всіх поліпшень обсяг даних, що пересилаються через відеопам'ять під час промальовування одного кадру, скоротився приблизно на 25%. Тест проводився в ряді сучасних ігор, і у всіх випадках графічний адаптер на основі мікроархітектури NVIDIA Maxwell демонстрував кращу ефективність використання шини пам'яті, аніж її аналог на основі NVIDIA Kepler.

Підтримка нових форматів виведення зображення

Впровадження високих роздільних здатностей в ігрові проекти привело до росту популярності пристроїв, здатних відобразити картинку високої чіткості, зокрема у форматі 4K Ultra HD. У компанії NVIDIA пішли ще далі, і вже пропонують підтримку роздільної здатності 5K Ultra HD (5120 x 2880). Відповідні відеодвижки з'являться в топових рішеннях, основаних на мікроархітектурі NVIDIA Maxwell. Щоправда, чи впораються самі графічні адаптери із промальовуванням таких складних сцен і скільки при цьому ми побачимо FPS на екрані? Залишимо поки що це питання осторонь.

З інших важливих нововведень відзначимо підтримку інтерфейсу HDMI 2.0. Покупці відеокарт NVIDIA GeForce GTX 980 і NVIDIA GeForce GTX 970 першими у світі зможуть оцінити його переваги. У порівнянні зі стандартом HDMI 1.4, де виведення картинки в роздільній здатності 4K Ultra HD здійснювався в режимі 30 Гц, в HDMI 2.0 така якість стане доступною й із частотою дискретизації 60 Гц.

NVIDIA Maxwell

Флагманська модель нової серії одержить наступний набір інтерфейсів:

  • 1 х DVI-I Dual-Link;
  • 1 x HDMI 2.0;
  • 3 x DisplayPort 1.2.

Як і у випадку з NVIDIA GeForce GTX 680, в NVIDIA GeForce GTX 980 передбачене виведення зображення одночасно на 4 незалежні пристрої. Однак у режимі MST (Multi Stream Transport) можливе підключення відразу 7 моніторів, тоді як в NVIDIA GeForce GTX 680 ця кількість обмежувалася 6-ма.

У всіх GPU серії NVIDIA GM2xx виробник додав підтримку кодека H.265. В порівнянні з кодеком H.264, тепер процес компресії відео вимагатиме менше ресурсів, у тому числі й смуги пропускання, при тій же якості картинки. Це може бути актуально для тих, хто часто веде інтернет-трансляції або стрімить через хмарні сервіси. Нагадаємо, що весь процес кодування здійснюється апаратним способом на стороні GPU.

Нікуди не поділася й підтримка H.264. Більше того, ефективність кодування з використанням цього стандарту в мікроархітектурі NVIDIA Maxwell зросла в 2,5 рази в порівнянні з NVIDIA Kepler.

Нові алгоритми післяобробки графіки та демонстрація використання деяких візуальних ефектів на практиці

Як можна переконатися з першої частини матеріалу, мікроархітектура NVIDIA Maxwell принесла з собою багато вдосконалень на структурному рівні, що повинно позитивним чином вплинути на продуктивність відеокарт, основаних на новому чіпі. Однак швидке промальовування кадру - це тільки половина справи. Не менш важливим завданням є післяобробка графіки, щоб на екрані користувач бачив картинку, максимально наближену до реальності.

Для цих цілей виробник додав нові алгоритми й удосконалив деякі зі старих. Давайте подивимося, як усе це виглядає на практиці.

Voxel Global Illumination

Багато користувачів помилково вважаються, що чим більше полігонів містять у собі об'єкти й чим більш фотореалістичні використовуються текстури, тим якісніше виглядатиме зображення на екрані. Однак при неправильній обробці світла та накладення тіней сцена виходить неприродно двомірною та «неживою». Саме гра світла й тіні надає глибину й реалістичність картинці, дозволяє поринути в події, що відбуваються на екрані. Тому якісна післяобробка цих ефектів є досить важливим завданням, але в той же час однією з найбільш ресурсовитратних.

У компанії NVIDIA вирішили перейти до апаратної підтримки нового й найбільш реалістичного принципу, відомого під назвою «Global Illumination». У вільному перекладі це звучить як «глобальне освітлення». Суть його полягає в тому, що освітлення об'єкта формується не тільки на основі прямих променів від джерел світла, але також враховуються й відбиті промені від граней інших моделей, що присутні у сцені. Саме такий процес ми можемо спостерігати й у природі.

NVIDIA Maxwell

Технологія Global Illumination не використовується

NVIDIA Maxwell

Технологія Global Illumination використовується

Наведені вище скріншоти чітко демонструють різницю між традиційним методом освітлення й з використанням принципу Global Illumination. В останньому випадку ми можемо спостерігати більш м'які тіні, а також розпливчасті відображення на поверхнях. Звичайно, подібного ефекту можна досягнути й звичайним способом, однак для цього доведеться витрачати значно більше ресурсів або навіть проводити попередні розрахунки освітлення. І навіть у такому випадку ефект вийде статичним. У динаміці ж, коли положення об'єкта постійно змінюється, необхідного результату вже просто не досягнути. Або ж доведеться ставити цілі «ферми» з відеокарт, як це робиться для рендерингу спецефектів для голлівудських блокбастерів.

Таким чином, виходить, що для створення максимально наближеного до реальності освітлення принципу Global Illumination немає рівних (принаймні, поки). Залишається тільки «подружити» його з апаратною частиною, оскільки сам по собі він також досить ресурсовитратний. Давай коротенько розглянемо основні кроки алгоритму, щоб краще розуміти на якому етапі використовується його апаратне прискорення, впроваджене в мікроархітектурі NVIDIA Maxwell. До речі, у компанії NVIDIA процес післяобробки глобального освітлення одержав назву Voxel Global Illumination.

NVIDIA Maxwell

На першій стадії об'єкти розбиваються на так звані вокселі − об'ємні елементи простору. Тут доречно провести аналогію із двомірним простором. В 2D складовій його частиною є пікселі, в 3D же вони представлені вокселями. Уся модель розбивається на дрібні «кубики», іншими словами проводиться її «вокселізація» (Voxelization).

NVIDIA Maxwell

NVIDIA Maxwell

У результаті розрахунок освітлення здійснюється вже не для цілого об'єкта, а для набору тривимірних примітивів. Причому калькулювання проводиться для конусоподібної групи променів, які проходять через воксельну сітку. У такий спосіб можна відмовитися від сотень тисяч обчислень відбитих прямих променів. А змінюючи лише тип «дзеркальності» поверхні, легко досягнути різних ефектів освітлення.

NVIDIA Maxwell

Останнім етапом є збір результатів і фінальний рендеринг. На обох картинках добре помітні м'які, розмиті тіні освітлених об'єктів. Саме такий ефект ми можемо спостерігати й у реальному житті.

NVIDIA Maxwell

NVIDIA Maxwell

Апаратне прискорення алгоритму в основному відбувається на етапі розбивки об'єктів на вокселі. У цьому випадку досягається 6-кратне збільшення швидкодії. У цілому ж швидкість рендерингу сцени із застосуванням апаратної підтримки GPU збільшується більш ніж в 3 рази в порівнянні з програмним способом.

До слова, передовий ігровий движок Unreal Engine 4.0 уже використовує метод розрахунків глобального освітлення. А незабаром подібний принцип ми зможемо побачити й у всіх AАА-іграх (великобюджетних проектах) з реалістичною графікою.


Социальные комментарии Cackle
Пошук на сайті
Поштова розсилка
facebook vk YouTube
google+ twitter rss
top10

vote

Голосування