Архитектура графических процессоров - Turing - Студенческий научный форум

XIII Международная студенческая научная конференция Студенческий научный форум - 2021

Архитектура графических процессоров - Turing

Мамедов Р.Р. 1
1БИТИ НИЯУ МИФИ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

ВВЕДЕНИЕ

С момента изобретения своего первого графического процессора в 1999 году компания Nvidia находится в авангарде трехмерной графики и вычислений с ускорением на графическом процессоре. Каждая архитектура компании Nvidia тщательно разработана для обеспечения революционного уровня производительности и эффективности.

Главной особенностью архитектуры Turing является новый тип процессора, называемый RT Core, который ускоряет процесс рендеринга, известный как трассировка лучей. Трассировка лучей создает невероятно фотореалистичные изображения, но это дорогостоящий метод с точки зрения вычислений. Обещание новых ядер RT Turing заключается в их способности выполнять трассировку лучей в реальном времени.

1 ТРАССИРОВКА ЛУЧЕЙ И ТЕХНОЛОГИЯ DLSS

Работа графического процессора состоит в том, чтобы получить информацию о 3D-сцене, например, о положении группы многоугольников, и превратить ее в 2D-представление, подходящее для монитора вашего компьютера. Традиционно это достигается с помощью метода рендеринга, называемого растеризацией [5]. Растеризация включает в себя серию вычислений для учета информации о положении, освещении, цвете и текстуре для каждого пикселя на экране. Сегодняшние графические процессоры используют высокоэффективные алгоритмы растеризации, которые позволяют обновлять сложные сцены десятки раз в секунду, например, в игровых приложениях. Растеризация позволяет получать изображения высокого качества, но плохо работает при визуализации таких визуальных элементов, как отражения и тени.

Альтернативой растеризации является метод рендеринга, называемый трассировкой лучей.  Этот метод назван так потому, что он основан на физике световых лучей [5]. По аналогии с тем, как наши собственные глазные яблоки собирают информацию о трехмерном мире вокруг нас, трассировка лучей использует смоделированные световые лучи для сбора информации о трехмерной сцене. Обычно (и в отличие от наших глазных яблок) эти лучи проецируются камерой на сцену, где они отражаются от различных объектов, пока не попадут в источник света. Каждый луч и каждый отскок дают ценную информацию о том, как должна выглядеть сцена. На рисунке 1 представлена иллюстрация трассировки лучей.

Рисунок 1 – Иллюстрация трассировки лучей

Поскольку трассировка лучей основана на физической реальности, она создает чрезвычайно фотореалистичные изображения с неповрежденными тенями и отражениями [2]. Однако из-за большого количества смоделированных световых лучей, необходимых для достижения такого уровня фотореализма, трассировка лучей требует большого количества вычислений, а большое количество вычислений требует много времени. По этой причине трассировка лучей используется только в приложениях, которые могут сэкономить это время. Блокбастеры с большим бюджетом могут использовать трассировку лучей для визуализации своих визуальных эффектов, но видеоигры, которым требуется более 30 визуализаций в секунду, не могут позволить себе ждать.

Вот почему компания Nvidia так взволнована архитектурой Turing и новыми видеокартами серии RTX. Благодаря тому, что ядра RT ускоряют эти вычисления трассировки лучей, этот метод теперь можно выполнять в реальном времени. Его можно использовать в видеоиграх для улучшения качества графики; его можно использовать в САПР или архитектурной визуализации для более быстрых и лучших результатов; он может обеспечить более фотореалистичный опыт виртуальной реальности; это может сократить время рендеринга для кинематографистов - и этот список можно продолжить.

Хотя трассировка лучей и обеспечивает более высокое качество картинки, но в сравнение с растеризацией, она весьма требовательна к ресурсам компьютера и ее применение ограничено возможностями аппаратного обеспечения. Анонсирование технологии RTX и аппаратно поддерживающих ее графических процессоров дал разработчикам возможность начать внедрение алгоритмов, использующих трассировку лучей, что является самым значительным изменением в графике реального времени за последние несколько лет. Со временем эта технология кардинально изменит подход к рендерингу 3D-сцен, но это будет происходить постепенно [2]. Поначалу использование трассировки будет гибридным, то есть сочетание трассировки лучей и растеризации, но затем дело дойдет и до полной трассировки сцены, которая станет доступной через несколько лет.

Трассировка лучей работает в среде Windows 10 (начиная с версии 1809) через API DirectX Raytracing (DXR), который является расширением DirectX 12 [3]. На сегодня трассировка лучей доступна во многих игр.

Оптимальным решением для трассировки лучей являются видеокарты компании Nvidia серии GeForce RTX, имеющие аппаратные улучшения для ускорения соответствующих операций, в частности, дополнительные блоки RT. При этом все функции API DXR поддерживаются и старыми видеокартами архитектуры Pascal, что позволяет включить новые эффекты на GeForce GTX 1080 Ti и других видеокартах этой серии. Но без соответствующих аппаратных оптимизаций трассировка лучей дается им с огромными потерями в производительности.

Технология Nvidia DLSS не связана с трассировкой напрямую, поэтому может использоваться в играх без новых эффектов. Этот метод рендеринга используется для ускорения производительности, что критично при активации RTX-эффектов. Поскольку DLSS использует аппаратные особенности графических процессоров с архитектурой Turing, то технология работает исключительно на видеокартах серии GeForce RTX.

2 АРХИТЕКТУРА TURING И ОСОБЕННОСТИ ВИДЕОКАРТ СЕРИИ GEFORCERTX

В графических процессорах с архитектурой Turing можно выделить несколько ключевых изменений. В первую очередь это появление новых вычислительных блоков – тензорных и RT-ядер, сетчатые шейдеры, шейдинг с переменной скоростью, а также ускоренная обработка шейдеров. На рисунке 2 будет представлена характеристика графических процессоров архитектуры Pascal и Turing.

Рисунок 2 – Характеристика графических процессоров

По сравнению с частями предыдущего поколения Pascal архитектура Turing имеет аналогичные тактовые частоты, но увеличивает количество ядер CUDA на 15-20 процентов по всей линии. Также добавляются ядра Tensor и ядра RT к изображению, а отдельные SM (потоковые мультипроцессоры) претерпели значительные изменения.

Еще одно большое изменение заключается в том, что Nvidia одновременно запускает три совершенно разных графических процессора для сегмента высокого класса и энтузиастов. Ранее 1070/1080 и 970/980 были построены из одного и того же кристалла, причем меньшая часть использовала частично отключенную версию. В 2080 и 2080 Ti все еще используются заготовленные матрицы, но 2070 получает отдельный и полный графический процессор TU106. Это также оставляет место для будущих промежуточных графических процессоров, таких как 2070 Ti и TitanRTX, естественно. Чистая пропускная способность памяти также значительно улучшилась благодаря GDDR6.

Рисунок 3 – Блок-схема архитектур Turing

Выше приведена полная блок-схема архитектур Turing TU102 / TU104 / TU106. TU102 состоит из шести GPC (кластеров обработки графики), каждый из которых содержит шесть TPC (кластеров обработки текстур), механизм PolyMorph и выделенный механизм растеризации. Каждый TPC, в свою очередь, связан с двумя SM (потоковыми мультипроцессорами) [3].

Наряду с GPC, на высоком уровне TU102 включает в себя 12 32-битных контроллеров памяти GDDR6 (всего 384-бит), которые можно отключить независимо. Контроллеры памяти также содержат ROP (выходы рендеринга), поэтому RTX 2080 Ti с 11 контроллерами памяти также имеет 88 ROP. Хост-интерфейс PCIe 3.0 и другие элементы также находятся за пределами GPC. 

Интересно, что GPC не одинаковы для всех графических процессоров архитектуры Turing. TU104 также имеет шесть GPC, но каждый GPC в TU104 имеет восемь SM, где GPC TU102 и TU106 имеют 12 SM. Однако оба TU104 и TU106 имеют восемь 32-разрядных контроллеров памяти (всего 256-разрядное) вместе с различными другими функциональными блоками.

Интересно, что GPC не одинаковы для всех графических процессоров архитектуры Turing [4]. TU104 также имеет шесть GPC, но каждый GPC в TU104 имеет восемь SM, где GPC TU102 и TU106 имеют 12 SM. Однако оба TU104 и TU106 имеют восемь 32-разрядных контроллеров памяти (всего 256-разрядное) вместе с различными другими функциональными блоками.

Рисунок 4 – Потоковый мультипроцессор

В основе каждого графического процессора лежит фундаментальный строительный блок. Nvidia называет это потоковым мультипроцессором (SM), в то время как AMD называет его вычислительным модулем (CU) [5].

SM архитектуры Turing содержат планировщики, графические ядра, кэш L1 / L2, модули текстурирования и многое другое. Nvidia кардинально изменила архитектуру Turing SM по сравнению с предыдущими архитектурами Pascal и Maxwell.

Во-первых, число ядер CUDA на SM теперь составляет 64 вместо 128 в Pascal. За последнее десятилетие Nvidia выросла примерно с 32 до 192 ядер CUDA на SM, но Nvidia говорит, что с другими архитектурными изменениями 64 ядра теперь более эффективны.

Архитектура Turing также добавляет встроенную поддержку FP16 «быстрой упаковки» в ядра CUDA, что ранее наблюдалось в GP100 и GV100. Производительность для рабочих нагрузок FP16 вдвое выше, чем для ядер FP32, хотя в играх преимущественно используется FP32. На приведенной выше блок-схеме SM не показаны ядра FP64 CUDA, которые отделены от ядер FP32. Для обеспечения совместимости имеется два ядра FP64 на SM, поэтому производительность FP64 составляет 1/32 производительности FP32. (Volta GV100 и Pascal GP100 поддерживают половинную скорость FP64, что полезно во многих суперкомпьютерных рабочих нагрузках).

Рисунок 5 – Одновременное исполнение

Новым для архитектуры Turing является выделенный целочисленный конвейер, который может работать одновременно с ядрами с плавающей запятой [4].

На предыдущих архитектурах ядрам FP приходилось останавливать свою работу, пока графический процессор обрабатывал инструкции INT, но теперь планировщик может отправлять оба на независимые пути. Это обеспечивает теоретическое немедленное улучшение производительности на 35 процентов на ядро.

Это делает ядра GPU в архитектуре Turing более похожими на современные архитектуры ЦП, и планировщик может отправлять две инструкции за такт. Эти инструкции могут быть также для ядер RT и ядер Tensor.

Более быстрые графические процессоры также требуют большей пропускной способности памяти. Чтобы обеспечить загрузку графических процессоров данными, компания Nvidia переместилась в память GDDR6 и переработала подсистему кэша и памяти в архитектуре Turing. Пропускная способность кэша L1 удваивается, и теперь кэш L1 может работать как с общей памятью L1 и 64 КБ, так и с общей памятью L1 и 32 КБ 64 КБ. Это потенциально увеличивает размер кэша L1 на 167 процентов по сравнению с Pascal. Размер кэша L2 также был удвоен, и Nvidia заявляет, что кэш L2 также обеспечивает «значительно более высокую пропускную способность».

Помогут улучшенные тактовые частоты GDDR6 по сравнению с GDDR5 и GDDR5X, но архитектура Turing на этом не останавливается.  У архитектуры Pascal уже было несколько доступных методов сжатия памяти без потерь, и архитектура Turing продолжает улучшаться в этой области. Компания Nvidia не предоставляет конкретных сведений о том, что изменилось, но более крупные кэши и улучшенное сжатие увеличивают эффективную пропускную способность на 20-35 процентов по сравнению с графическими процессорами Pascal.

В совокупности GeForce RTX 2080 Ti имеет в среднем на 50 процентов более эффективную полосу пропускания, чем GTX 1080 Ti, хотя скорость памяти только на 27 процентов выше. RTX 2080 и 2070 должны показать еще большие улучшения, поскольку тактовые частоты памяти увеличились на 40 и 75 процентов соответственно.

Сетчатые шейдеры – это следующая итерация вершинных, геометрических и тесселяционных шейдеров [5]. Основная идея здесь состоит в том, чтобы перенести расчеты LOD (уровня детализации) из ЦП в графический процессор. Это может улучшить производительность на несколько порядков, и Nvidia продемонстрировала демонстрацию корабля, летящего через массивное поле астероидов с помощью сетчатых шейдеров, позволяющих в реальном времени использовать «триллионы» полигонов. Суть в том, что масштабирование LOD сводит это число к более управляемому, в миллионах, а не в триллионах. В настоящее время сетевые шейдеры будут расширением существующих графических API, поэтому они вряд ли будут широко использоваться до тех пор, пока не будут напрямую интегрированы в API DIrectX / Vulkan.

Шейдинг с переменной скоростью (VRS) – следующая новая функция, которая позволяет играм использовать больше шейдеров там, где это необходимо, и меньше шейдеров, где это не важно. Цель состоит в том, чтобы обеспечить эквивалентное качество изображения с лучшей производительностью, и Nvidia предложила увеличить производительность на 15 процентов. VRS также можно использовать несколькими способами, например, MAS (адаптивное затенение движения), где быстро движущимся объектам не требуется столько деталей (потому что они в конечном итоге становятся размытыми), и CAS (адаптивное затенение контента), где больше усилий затрачивается на сложные Поверхности, как автомобиль, в игре на вождение, и на простых поверхностях, таких как дорога, в той же игре используется меньше усилий.

Помимо улучшения графического процессора и памяти, Nvidia также работала над улучшением NVENC, аппаратного обеспечения, используемого для кодирования / декодирования видео. Графические процессоры Pascal обеспечивают хорошую производительность, но качество получаемых видео не всегда было таким же хорошим, как даже профиль x264 Fast, работающий на процессоре. С архитектурой Turing Nvidia заявляет, что обеспечивает лучшее качество, чем x264 Fast, практически без нагрузки на процессор.

Наконец, Nvidia кратко обсудила еще две функции в архитектуре Turing: Multi-View Rendering (MVR), улучшенную версию одновременной мульти-проекции (SMP), которая уже была функцией в Pascal, и Texture Space Shading (TSS). В тех случаях, когда SMP в основном сосредоточен на двух видах и приложениях VR, MVP может выполнять четыре вида за проход и удаляет некоторые атрибуты, зависящие от вида. Это должно способствовать дальнейшему повышению производительности в приложениях VR, особенно с некоторыми новыми гарнитурами VR, которые имеют более широкое поле зрения.

Тем временем TSS имеет еще меньше смысла для тех, кто не пишет игровые движки. Компания Nvidia заявляет, что может позволить разработчикам использовать избыточность пространственного и временного рендеринга, эффективно уменьшая объем работы шейдера, который необходимо выполнить. В техническом описании архитектуры Turing есть несколько страниц, описывающих варианты использования TSS, но, как и в случае с предыдущими технологиями, такими как SMP и VXAO, еще неизвестно, сколько разработчиков будет использовать эту функцию.

ЗАКЛЮЧЕНИЕ

Архитектура Turing — передовая графическая архитектура, которая расширяет возможности привычного рендеринга, добавляя трассировку лучей в реальном времени и возможность использовать нейронные сети для вспомогательных функций. Новые аппаратные возможности обеспечивают поддержку совершенно новых технологий и графических эффектов.

Появление архитектуры Turing стало знаковым событием, которое обозначает старт новой эры и постепенную интеграцию трассировки в игровую индустрию. Уже есть первые проекты, где будет поддержка эффектов на базе трассировки Nvidia RTX. Еще больше игр получат поддержку нового сглаживания Nvidia DLSS. Также в архитектуре Turing есть много улучшений для ускорения традиционного рендеринга.

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

Архитектура Turing – [Электронный ресурс] URL: https://www.overclockers.ua/video/nvidia-turing-geforce-rtx/all/. (Дата обращения: 29.09.2020);

Архитектура Turing - [Электронный ресурс] URL: http://www.thg.ru/graphic/nvidia_turing_architektura/index.html. (Дата обращения: 29.09.2020);

Раскрывая тайны архитектуры Turing - [Электронный ресурс] URL: https://habr.com/ru/company/ua-hosting/blog/422773/. (Дата обращения: 29.09.2020);

NvidiaTuring - [Электронный ресурс] URL: https://sheffieldjungle.com/nvidia-turing-arhitektura-glubokogo-pogruzheniya/. (Дата обращения: 29.09.2020);

TheTuringGPUarchitecture - [Электронный ресурс] URL: https://www.engineering.com/Hardware/ArticleID/18626/The-Turing-GPU-Architecture-and-NVIDIAs-RTX-Graphics-Cards.aspx. (Дата обращения: 29.09.2020);

Просмотров работы: 74