Архитектура 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) и сниженным задержкам.
Кэш 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, но довольно важной.