Страница 2: Архитектура Ampere для GeForce GPU

Начнем с основного элемента любой видеокарты GeForce RTX, а именно GPU. Он опирается на архитектуру Ampere, которая отличается от версии для дата-центров в GA100 GPU.

Streaming Multiprocessor (SM) в архитектуре Ampere лишился вычислительных блоков FP64, которые в составе GA100 GPU весьма важны для высокопроизводительных вычислений HPC, чего нельзя сказать о потребительском сегменте. Зато число вычислительных блоков FP32 было удвоено. Вместо 64 блоков FP32 на SM теперь доступны 128, а также 64 блока INT32. Параллельно поддерживается выполнение двух путей данных. Первый путь состоит из 16 блоков FP32. Так что здесь можно выполнять 16 вычислений FP32 за такт. Второй путь состоит из 16 блоков FP32 и INT32. Каждая четверть SM может выполнять либо 32 операции FP32, либо 16 операций FP32 и 16 INT32 за такт. Для SM целиком это означает 128 операций FP32 или 64 операции FP32 и 64 INT32 за такт.

Чтобы удвоенные блоки FP32 успевали получать данные, NVIDIA увеличила кэш L1 с 96 до 128 кбайт. И скорость работы с кэшем L1 вновь была удвоена. NVIDIA уже сделала подобный шаг при переходе с Pascal на Turing. Регистры не изменились, по-прежнему 16.384 записи по 32 бита каждая. То же самое касается и числа блоков Load/Store.

Что касается специальных аппаратных блоков, а именно ядер Tensor и RT, то здесь тоже произошли изменения. Теперь ядер Tensor всего четыре на SM (в случае Turing их было восемь). Но третье поколение ядер Tensor работает быстрее и эффективнее. То же верно и ядер RT, теперь каждый SM содержит только одно ядро RT.

Удвоение вычислительных блоков FP32 - одна из причин, почему the GA10x GPU содержат 28 млрд. транзисторов. У TU102 GPU их число составляло 18,6 млрд. Число транзисторов GA104 GPU - 17,4 млрд. GA102 GPU используется в видеокартах GeForce RTX 3090 и GeForce RTX 3080. А GA104 GPU - в видеокартах GeForce RTX 3070.

Теперь мы знаем и площадь чипов. GA102 GPU занимает 628,4 мм², the GA104 GPU - 392,5 мм². Таким образом, при 8-нм производстве и 28 млрд. транзисторах плотность на GA102 GPU составляет 44,6 млн. транзисторов на квадратный миллиметр (44 MT/мм²). В случае GA104 GPU данный уровень составляет 44,3 MT/мм².

Сравнение производства

GA100GA102 GA104TU102
Техпроцесс 7 нм (TSMC)8 нм (Samsung) 8 нм (Samsung)12 нм (TSMC)
Количество транзисторов 54 млрд.28 млрд. 17,4 млрд.18,6 млрд.
Площадь кристалла 826 мм²628,4 мм²
392,5 мм²
754 мм²
Плотность транзисторов 65,37 MT/мм²44,56 MT/мм² 44,33 MT/мм²24,67 MT/мм²

GA100 GPU производится по 7-нм техпроцессу на заводах TSMC с плотностью транзисторов 65,37 MT/мм², что на 47% больше. По сравнению с поколением Turing, чьи GPU производились TSMC по 12-нм техпроцессу, чипы Ampere меньше по площади, а также имеют большую плотность транзисторов. Конечно, 8-нм техпроцесс Samsung не может состязаться с передовыми техпроцессами, но ему это и не требуется.

Структура GA102 GPU

GA102 GPU содержит шесть кластеров GPC (Graphics Processing Clusters) и пять или шесть кластеров TPC (Texture Processing Clusters) в каждом GPC. В свою очередь, каждый кластер TPC содержит два потоковых мультипроцессора SM (Streaming Multiprocessor). GeForce RTX 3080 GA102 GPU имеет 34 TPC x 2 SM, что дает 8.704 ядра CUDA или потоковых процессоров, поскольку каждый SM содержит 128 ядер CUDA. GA102 GPU в видеокарте GeForce RTX 3090 содержит уже 82 SM, что приводит к 10.496 потоковым процессорам.

Каждый SM имеет четыре ядра Tensor и одно ядро RT. Ниже мы рассмотрим данные функциональные блоки, которые подверглись обновлению. На иллюстрации выше показан GA102 GPU в видеокарте GeForce RTX 3080. Поэтому мы видим меньше TPC и "всего" 68 SM, а также десять контроллеров памяти по 32 бита каждый. Шина памяти 320-битная, к ней подключены 10 Гбайт GDDR6X.

В чипе GeForce RTX 3090 активны уже 12 контроллеров памяти, ширина шины памяти составляет 384 бита. GA102 GPU здесь содержит уже 82 SM и большее число TPC (либо полностью оснащенные TPC).

В зависимости от уровня расширения чипа меняется и размер кэша L2. В случае GeForce RTX 3080 он составляет 5.120 кбайт, у GeForce RTX 3070 - 4.096 кбайт. Для сравнения, у TU102 GPU кэш был 6.144 кбайт.

Второе поколение ядер RT

Второе поколение ядер RT способно выполнять в два раза больше расчетов пересечений, чем первое. Поскольку NVIDIA не изменила число ядер RT на SM, теоретическое масштабирование производительности RT двукратное. Конечно, если у видеокарты будет больше SM, то и производительность будет выше.

Проблема с расчетом пересечений при трассировке лучей возникает в случае движущихся объектов, а также с наложенным эффектом размыванием движения Motion Blur. В случае Turing GPU или их ядер RT здесь могло возникнуть "узкое место" по производительности трассировки лучей. Второе поколение ядер RT имеет параллельные блоки, которые отвечают за интерполяцию с эффектом Motion Blur. Пересечения рассчитываются упреждающе на основе алгоритмов, в результате трассировка лучей выполняется только там, где нужно.

Третье поколение ядер Tensor

Как и предполагалось, NVIDIA продолжила усиливать ядра Tensor третьего поколения. Кроме вычислений INT16 и FP16 они теперь могут выполнять вычисления FP32 и FP64. Что важно, прежде всего, для сегмента HPC, где требуются вычисления с высокой точностью. В случае же GeForce GPU в приоритете остаются вычисления с меньшей точностью.

Ядра Tensor архитектуры Turing могут выполнять 64 операции FP16 Fused Multiply-Add (FMA) на ядро Tensor. В случае Ampere и полностью заполненных матриц (Dense) мы получаем 128 операций на GA102 GPU и даже 256 на GA100 GPU. В случае разреженных матриц (Sparse) производительность составляет 256 FP16 FMA для GA102 GPU и 512 для GA100 GPU. Ядра Tensor архитектуры Turing не поддерживают разреженные матрицы.

Что увеличивает вычислительную производительность ядер Tensor не менее чем в два раза. Сильнее всего здесь должна выиграть производительность DLSS, но теоретически получат прирост и приложения искусственного интеллекта.

GDDR6X

Учитывая большое число потоковых процессоров, высокая пропускная способность памяти имеет первостепенное значение. Иерархия кэшей с каждым поколением ускоряется, то же самое требуется и от памяти. GDDR6 обеспечила бы увеличение пропускной способности только через рост тактовых частот. Либо можно расширить шину памяти. Та же HBM предлагает очень широкий интерфейс памяти, но она слишком сложная и дорогая в производстве. Поэтому для игровых видеокарт не подходит.

NVIDIA объединила усилия с Micron, в итоге была разработана GDDR6X. Память GDDR6X работает на тех же частотах, что и GDDR6, напряжение сравнимое.

У предыдущей памяти GDDR6 использовалась модуляция Non-Return-to-Zero (NRZ). Значения "0" и "1" соответствовали низкому и высокому напряжению. В случае GDDR6X используется уж амплитудно-импульсная модуляция PAM4, несущая разделяется на четыре уровня напряжения с каждым тактовым импульсом. Шаг между уровнями составляет 250 мВ. PAM4 все чаще используется в современных стандартах передачи. PCI Express 5.0 и DDR6 тоже будут опираться на PAM4.

NVIDIA и Micron реализовали ряд хитростей, чтобы гарантировать высокие скорости передачи при выставленных тактовых частотах. Max Transition Avoidance Coding (MTA) гарантирует, что сигнал меняется только до двух уровней напряжения. Если идет переход с самого низкого до самого высокого уровня, то различимость сигнала теряется. С помощью MTA NVIDIA кодирует сигнал нужным образом.

Наконец, NVIDIA дает некоторый динамический допуск, поскольку небольшие отличия по производству PCB и памяти могут привести к различиям по задержкам распространения сигнала. Поэтому алгоритмы дополнительно корректируют передачу сигнала.

Эффективность

8-нм производство Samsung повлияло на эффективность GPU Ampere. NVIDIA внесла и другие изменения. Несколько странными кажутся заявления NVIDIA о том, что новые видеокарты GeForce RTX в x1,9 раза эффективнее предшественников Turing. Здесь стоит взглянуть на диаграмму, чтобы понять, что именно подразумевает NVIDIA под ростом эффективности.

NVIDIA выбрала частоту кадров 60 fps, и в случае видеокарты Turing энергопотребление составило 240 Вт. При этом видеокарте Ampere для этих же 60 fps понадобится всего около 130 Вт. 240 к 130 Вт и дает прирост эффективности в 1,9 раза.

Но NVIDIA все же следует сравнивать производительность при одном уровне энергопотребления. Если вновь взять базу 240 Вт для 60 fps в случае Turing, то у Ampere мы получим на этом же уровне энергопотребления около 90 fps. И увеличение эффективности составляет уже 50%, а не 1,9 раза, как считает NVIDIA.

NVIDIA просто сравнила Turing за пределами идеального окна эффективности с Ampere, где мы находимся в рамках данного окна. При 240 Вт видеокарта на Turing GPU работает далеко не с идеальным сочетанием напряжение/частота, а 240-Вт Ampere GPU все еще находится в диапазоне с хорошей эффективностью.

Новые видеокарты GeForce RTX показывают намного более высокий уровень производительности, но NVIDIA все же перешла на GPU с 28 млрд. транзисторов, а также увеличила TDP GeForce RTX 3090 до 350 Вт, в то время как у GeForce RTX 3080 мы все еще получаем до 320 Вт. Все это следует принимать во внимание при рассмотрении эффективности новых видеокарт. Интересно, что NVIDIA разделила линии напряжений GPU. Одна отвечает за потоковые процессоры, вторая - за подсистему памяти. Две линии контролируются раздельно, что увеличивает эффективность.

Следующий шаг к гибридному конвейеру рендеринга

С архитектурой Turing и возможностью трассировки лучей через ядра RT и масштабирования разрешения через DLSS и ядра Tensor NVIDIA впервые заговорила о гибридном конвейере рендеринга (Hybrid Rendering Pipeline). То есть помимо классического рендеринга через потоковые процессоры добавляется трассировка лучей и DLSS.

На GPU Turing кадр в игре Wolfenstein Youngblood просчитывается 51 мс. В данном случае трассировка лучей выполняется на потоковых процессорах. Если перенести ее на ядра RT, то время просчета кадра снижается до 19 мс. Если добавить масштабирование DLSS, то время можно снизить до 13 мс.

Для Ampere GPU с более высокой производительностью время рендеринга снижается с 13 мс до 7,5 мс. Основная причина - в приросте производительности потоковых процессоров. Но вычисления трассировки лучей и DLSS тоже выполняются быстрее, что приводит к снижению времени рендеринга. Для Ampere NVIDIA использует другой трюк, вычисления DLSS выполняются перед финальным рендерингом. Свою роль здесь играет временная обратная отдача (Temporal Feedback), благодаря которой учитываются результаты рендеринга предыдущих кадров. Собственно, этот шаг и позволил DLSS 2.0 увеличить качество картинки. С новыми чипами Ampere такой подход позволяет уменьшить время рендеринга кадра.

RTX IO

NVIDIA RTX IO работает с грядущим Microsoft DirectStorage API, который будет поддерживаться в играх с 2021 года. Здесь подразумевается архитектура хранения данных нового поколения, ориентированная на игровые ПК с NVMe SSD. DirectStorage API и RTX IO - оптимизированные и высокопараллельные API, разработанные специально для игр, которые значительно снижают избыточную нагрузку ввода/вывода.

Потребность в более скоростном интерфейсе ввода/вывода связана с тем, что игры занимают все больше места, игровые данные становятся более объемными и сложными.

В классических системах игровые данные считываются с SSD/HDD и передаются процессору через SATA или PCI Express. Скоростные PCIe 4.0 SSD могут обеспечивать пропускную способность до 7 Гбайт/с. Процессор располагает данные в оперативной памяти, откуда они затем передаются процессором через интерфейс PCI Express на GPU. Последний сохраняет данные в видеопамяти. В результате мы имеет промежуточный этап с лишней нагрузкой на процессор, да и выше 7 Гбайт/с не подняться.

Но есть возможность передавать процессору данные с накопителя в сжатом виде. Затем процессор их распаковывает в оперативной памяти, и они передаются в распакованном виде через PCI Express в память GPU. Хотя здесь можно получить уже до 14 Гбайт/с, ядра CPU будут заняты распаковкой данных.

RTX IO или DirectStorage позволяет передавать данные с быстрого SSD через интерфейс PCI Express напрямую GPU, который будет размещать их в видеопамяти. Этап процессора и оперативной памяти системы здесь уже отсутствует. Здесь тоже можно достигнуть до 14 Гбайт/с (с учетом расчетного коэффициента сжатия 2:1), но без нагрузки на процессор.

Причем распаковка данных на GPU не влияет на остальную производительность. Опасения насчет предела PCIe 4.0 современных SSD напрасны. Если игра оптимизирована под DirectStorage API, то с SSD считываются только необходимые данные. Что, кстати, уменьшит занятость видеопамяти.

NVIDIA также привела сведения производительности, используя собственную техническую демо Marbles. Демо считывает несжатые данные с жесткого диска более 60 с. В случае сжатых данных и распаковки их на CPU время снижается до 38 с. Если используется NVMe SSD, то время загрузки уменьшается всего до 5 с, но данные распаковываются на процессоре, загружая ядра. В случае RTX IO время загрузки составит всего 1,6 с.

DirectStorage API будет использоваться приставкой Microsoft Xbox Series X, в случае PlayStation 5 реализована схожая концепция. Через RTX IO скорость передачи данных с SSD в видеопамять составит до 14 Гбайт/с. Для сравнения, Sony PlayStation 5 дает 8-9 Гбайт/с, а Microsoft Xbox Series X - 4,8 Гбайт/с. Интересно посмотреть, будет ли AMD поддерживать DirectStorage с архитектурой Big Navi.