Архитектура Turing: более крупные тайлы TBR из-за большего кэша

Опубликовано:

turing-gpuАрхитектура Turing предлагает новые ядра RT и Tensor, которые обеспечивают весьма обширные возможности аппаратного ускорения. Конечно, на слуху у геймеров такие функции, как эффекты RTX и Deep Learning Super Sampling, но потоковые процессоры Turing тоже были значительно улучшены. Здесь можно отметить выделенные вычислительные блоки INT32, более крупные и эффективные кэши, оптимизацию Variable Rate Shading (VRS), которую NVIDIA реализовала как Adaptive Shading (NAS).

По всей видимости, NVIDIA сделала самый крупный шаг по эффективности растеризаторов в Maxwell и Pascal по сравнению с архитектурами Fermi и Kepler. С первого поколения Maxwell NVIDIA реализовала поддержку тайлового рендеринга/растеризации (Tile Based Rendering или Tile Based Rasterization). Она была оптимизирована в архитектурах Pascal и Volta. В случае архитектуры Turing NVIDIA вновь внесла улучшения благодаря более крупным кэшам (L1 и L2) и сниженным задержкам.

Размер кэша архитектур NVIDIA GPU
Кэш L2
GF100 (Fermi)768 kB
GK107 (Kepler) 256 kB
GK104 (Kepler) 512 kB
GM107 (Maxwell) 2.080 kB
GM204 (Maxwell)2.048 kB
GM200 (Maxwell) 3.072 kB
GP104 (Pascal) 2.048 kB
GP102 (Pascal) 3.072 kB
GP100 (Pascal) 4.096 kB
GV100 (Volta) 6.144 kB
TU102 (Turing) 6.144 kB
TU106 (Turing) 4.096 kB
TU116 (Turing) 1.536 kB

Тайловый рендеринг нельзя назвать новой технологией, и поддерживает его далеко не только NVIDIA. Та же Imagination Technology или ARM уже давно использует тайловый рендеринг в дизайнах PowerVR и Mali. Концепция Tile Based Rendering является противоположностью рендерингу Immediate Mode Rendering, который чаще всего используют NVIDIA и AMD. Процесс растеризации IMR выполняется для всего кадра, в случае же TBR кадр разделяется на множество прямоугольных блоков, и процесс растеризации выполняется уже отдельно для тайлов.

Immediate Mode Rendering на GPU AMD

Tile Based Rendering на GPU NVIDIA Maxwell

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

В таблице выше показано изменение размеров кэша L2 на протяжении нескольких поколений и вариантов чипов. 768 кбайт кэша у GF100 на архитектуре Fermi в то время казалось огромным объемом, но позднее мы получили 3.072 кбайт у крупного GM200 второго поколения Maxwell и 6.144 кбайт у старших вариантов Volta и Turing. GPU TU102 содержит в два раза больше кэша L2, чем GPU GP102. В результате тайлы TBR оказываются в два-четыре раза больше. Кэш, размер которого увеличился в два раза, оказывает лишь частичное влияние на выбор размера тайлов растеризатором. Здесь также сказываются и меньшие задержки.

Пока сложно сказать, какое влияние окажет кэш L2 у TU116 GPU видеокарты GeForce GTX 1660 Ti, который имеет объем только 1.536 кбайт. По сравнению с GPU TU106 с объемом кэша 4.096 кбайт NVIDIA существенно урезала размер кэша GPU TU116 до 1.536 кбайт. Почему для GPU TU116 выбран столь малый кэш L2 - неизвестно.

Immediate Mode Rendering на GPU AMD

Tile Based Rendering на GPU NVIDIA Maxwell

В любом случае, после добавления поддержки тайлового рендеринга в архитектуру Maxwell в феврале 2014 года произошло немало событий. С архитектурами Maxwell и Pascal NVIDIA реализовала ряд оптимизаций, чтобы повысить эффективность тайлового рендеринга. Здесь можно отметить и специальный код DirectX по обработке растеризации треугольников. Между тем ситуация на рынке изменилась, и TBR стал весьма актуальным методом растеризации.

Конечно, геймера вряд ли интересует размер тайлов, работа растеризатора и объем кэшей, что в конечном итоге приводит к более эффективному тайловому рендерингу. Но с технической точки зрения весьма любопытно оценить изменения в механизме TBR и реакции растеризатора на более крупные кэши. Что в какой-то степени может привести к общему росту производительности. TBR можно назвать еще одной шестеренкой в механизме современного GPU, но довольно важной.