⇡#Graphic Processing Cluster
Графический процессор GF100 построен на базе масштабируемой архитектуры, в основе которой лежит применение объединенных в кластеры GPC (Graphic Processing Cluster – кластеры обработки графики) потоковых мультипроцессоров (SM, Streaming Multiprocessor). Каждый такой кластер содержит четыре мультипроцессора, а также все необходимые блоки для обработки геометрических данных и текстурирования. Фактически, каждый GPC представляет собой самостоятельный ГП, не имеющий лишь собственной подсистемы памяти. GF100 состоит из четырех таких кластеров, совместно использующих шесть контроллеров памяти, шесть модулей ROP (по 8 блоков ROP в каждом) и L2-кеш. Очевидно, что младшие (а со временем, возможно, и старшие) модели ГП будут получены изменением количества «кубиков» этого «конструктора».
⇡#PolyMorph Engine
Использование теселляции фундаментальным образом изменило распределение нагрузки внутри графического процессора и вынудило инженеров NVIDIA несколько изменить компоновку вычислительных блоков и ввести новый тип блока – PolyMorph Engine. Каждый графический кластер (GPC) оснащен четырьмя такими блоками – по одному на каждый мультипроцессор (SM). Каждый PolyMorph Engine выполняет пять стадий: выбор вершин, тесселяция, преобразование координат, преобразование атрибутов, потоковый вывод.
На первом этапе вершины выбираются из глобального буфера, после этого вершина отправляется в мультипроцессор, где ее координаты преобразуются в координаты сцены и определяется уровень тесселяции (аналог уровня детализации, LOD). После этого вершина передается на второй этап – тесселяцию. На этом этапе полигон разбивается на несколько новых, более мелких, по карте смещения определяются их координаты. Полученные новые вершины вновь обрабатываются в мультипроцессоре и передаются через потоковый вывод в память для дальнейшей обработки.
⇡#Raster Engine
После того, как геометрические данные обработаны в PolyMorph Engine они передаются для растеризации в Raster Engine. В этом блоке отфильтровываются невидимые примитивы (т.н. обратные поверхности), затем геометрические данные преобразуются в экранные точки, которые в свою очередь сортируются и фильтруются по Z-координате. Каждый кластер (GPC) оснащен одним блоком растеризации, обрабатывающим до 8 точек за такт, то есть суммарная производительность GF100 составляет 32 точки за такт – это в 8 раз больше, чем обеспечивал GT200.
⇡#Streaming Multiprocessor третьего поколения
Каждый мультипроцессор состоит из 32 вычислительных блоков CUDA – четырехкратное преимущество в сравнении с предыдущими архитектурами. Как и прежде, ядра CUDA имеют скалярную архитектуру, что позволяет добиться максимальной загрузки, независимо от типа обрабатываемых данных – будь то операции с z-буфером или обработка текстур. Каждый процессор CUDA оснащен одним логическим блоком ALU и одним FPU.
Кроме того, каждый мультипроцессор оснащен 16 Load/Store-блоками, позволяющими определить адреса данных в кеше или памяти для 16 потоков за каждый такт. Предусмотрены и четыре блока специальных функций (SFU, Special Function Unit), выполняющих такие операции как синус, косинус, квадратный корень. Каждый SFU выполняет одну операцию на поток за такт, так что ветвь (warp, 32 потока) выполняется за 8 тактов. Мультипроцессор организует потоки в ветви по 32 потока, для управления этими ветвями используется два планировщика ветвей – две ветви могут выполняться на одном мультипроцессоре одновременно. Планировщики GF100 передают по одной инструкции от каждой ветви группе из 16 ядер CUDA, 16 блоков LD/ST или четырех SFU. Кроме того, каждый SM оснащен четырьмя текстурными блоками – каждый из них отбирает до четырех текстурных семплов за такт, результат может быть сразу же отфильтрован – предусмотрена билинейная, трилинейная и анизотропная фильтрация. В отличие от GT200, в GF100 блоки текстурирования работают на частоте, большей частоты ядра. Текстурные блоки GF100 поддерживают форматы BC6H и BC7, реализованные в DX11 и позволяющие снизить загрузку подсистемы памяти при обработке HDR-текстур.
Общая память и кеши
Общая память – это быстрая, программируемая, расположенная в микросхеме память, позволяющая максимально оптимизировать обмен данными внутри потока. В GF100 помимо общей памяти используется также L1-кеш, собственный внутри каждого мультипроцессора (SM). L1-кеш работает в паре с общей памятью, в то время как общая память предназначена для алгоритмов с упорядоченным доступом к памяти, L1-кеш ускоряет те алгоритмы, где адреса данных не известны заранее.
В GF100 каждый мультипроцессор оборудован 64 Кб памяти, которая может быть поделена на 48 Кб общей памяти и 16 Кб L1-кеша или наоборот. Кроме того, предусмотрен унифицированный L2-кеш объемом 768 Кб. Он обеспечивает максимально быстрый обмен данными между различными блоками ГП.
Блоки ROP
Блоки ROP в GF100 организованы партициями по восемь блоков в каждом. Каждый блок может вывести 32-бит целое значение за такт, либо FP16 за два такта, либо FP32 – за четыре. Благодаря улучшенным алгоритмам сжатия и увеличенному количеству ROP заметно ускорено сглаживание 4x и 8xMSAA – оно выполняется соответственно в 1,6 и 2,3 раза быстрее, чем GT200. Стоит отметить, что GF100 выполняет сглаживание 8xAA лишь на 9% медленнее, чем 4хАА. Кроме того, в GF100 реализован новый режим сглаживания – 32хCSAA (Coverage Sample Antialiasing).
⇡#Дополнительные возможности
В заключение стоит сказать о эффектах следующего поколения – основанных не на традиционной попиксельной обработке, а на вычислениях с помощью архитектуры CUDA. Подобные вычисления позволяют реализовать гораздо более сложные алгоритмы визуализации, как хорошо уже знакомые нам физические эффекты PhysX, так и более продвинутые техники, например, трассировка лучей (Ray Tracing) и даже реализация искусственного интеллекта средствами ГП. Круг задач, которые позволяет решить GF100 гораздо шире, чем у обычного графического процессора, однако применение новых возможностей – безусловно, вопрос завтрашнего дня, так как в настоящее время разработчики игр еще не готовы использовать весь арсенал этого процессора. Впрочем, темой одного из докладов на прошедшей в Лас-Вегасе конференции как раз стало сотрудничество компании NVIDIA с разработчиками игр, так что есть все поводы надеяться, что уже в этом году появятся первые игры, способные максимально активно использовать возможности GF100.
Благодарим российское представительство компании NVIDIA за помощь в организации поездки на выставку CES'2010 и участие в NVIDIA GF100 Deep Dive
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.