GeForce 8800 GTX: дизайн и производительность
Мы вновь возвращаемся к общей блок-схеме GeForce 8800 GTX, где рассмотрим модуль хост-интерфейса, состоящий из буферов приёма команд, вертексных данных и текстур, пересылаемых для обработки GPU с центрального процессора посредством графического драйвера. Следующий модуль – вводный блок ассемблера, собирающий вертексные данные из буферов и конвертирующий их в формат FP32, параллельно генерируя ряд идентификаторов для разметки повторяющихся операций с вертексами и примитивами.
Чип GeForce 8800 GTX включает в себя 128 потоковых процессоров (или просто стрим-процессоров, stream processor, SP), каждый из которых назначается для обработки любой специфической шейдерной операции, при этом данные на выходе SP могут быть перенаправлены на ввод другого стрим-процессора.
Как уже было сказано в начале, каждый потоковый процессор чипа GeForce 8800 GTX работает на тактовой частоте 1,35 ГГц и поддерживает сдвоенную обработку скалярных операций MAD и MUL, что в сумме даёт вчерне производительность порядка 520 гигафлопс (млрд. FP операций в секунду). На деле, это ещё не производительность в чистом виде, поскольку 100% эффективность подразумевается только при работе только со скалярными шейдерами. Тем не менее процесс обработки смешанного скалярного и векторного кода при использовании GeForce 8800 GTX имеет преимущества перед GPU с векторными аппаратными шейдерами, всё из-за выше упомянутых ограничений обработки данных (3+1, 2+2 и пр.). Модули текстурной фильтрации, совершенно не привязанные к потоковым процессорам и работающие на частоте ядра графического процессора (575 МГц для GeForce 8800 GTX), способны обработать до 64 пикселей текстур за такт (против 24 у GeForce 7900 GTX), 32 пикселя текстурной адресации за такт, 32 пикселя 2X анизотропной фильтрации за такт и 32 пикселя при билинейной фильтрации за такт.
Билинейная текстурная FP16 фильтрация с помощью GeForce 8800 выполняется со скоростью 32 пикселя за такт (почти в 5 раз быстрее чем GeForce 7x), анизотропная FP16 2:1 фильтрация - 16 пикселей за такт. С учётом тактовой частоты ядра 575 МГц путём несложных подсчётов можно выяснить, что суммарная производительность при обсчёте билинейно фильтрованных и 2:1 билинейно анизотропно-фильтрованных текселов составит 575 МГц x 32 = 18,4 млрд. текселов в секунду.
Чип GeForce 8800 GTX обладает шестью разделами растровой обработки (Raster Operation, ROP), и каждый раздел в состоянии отрабатывать 4 пикселя (16 суб-пиксельных сэмплов) с общей производительностью до 24 пикселей за такт с обработкой цвета и Z-обработкой. Если выполняется только Z-обработка с применением новой технологии, получается производительность до 192 сэмплов за такт (сэмпл на пиксель) или 48 пикселей за такт (4x мультисэмплированный антиалиазинг).
Подсистема ROP чипов GeForce 8800 поддерживает мультисэмплированный, суперсэмплированный и прозрачный адаптивный антиалиазинг, при этом новые режимы антиагиазинга - 8x, 8xQ, 16x и 16xQ, обеспечивают лучшее качество для современных одночиповых GPU.
Подсистема ROP также поддерживает смешение кадра буфера с FP16 и FP32 рендерингом. Может исполняться одновременный рендеринг до восьми текстур (MRT, Multiple Render Targets), каждый MRT может быть выполнен в разных цветовых форматах, и функция эта также поддерживается в DX10.
Ключевой момент – контроллер памяти. Чипы GeForce 8800 GTX обладают шестью подразделами контроллера памяти, каждый из которых имеет 64-битный интерфейс, что в сумме даёт 384-битную ширину комбинированной интерфейсной шины памяти. Таким образом получается 768 Мб скоростной памяти, при этом поддерживается память стандартов DDR1, DDR2, DDR3, GDDR3 и GDDR4. Видеокарты GeForce 8800 GTX оснащены памятью GDDR3 с тактовой частотой по умолчанию 900 МГц (1800 МГц DDR), что при 384-битной ширине интерфейса даёт пропускную способность до 86,4 Гб/с.
В рамках этой статьи мы не будем останавливаться ни на рассмотрении спецификаций DirectX 10 Shader Model 4, ни на её отличиях от DirectX 9 Shader Model 3, этому будет посвящён один из отдельных материалов нашего сайта, и, скорее всего, не один. Сегодня же необходимо отметить, что унифицированная шейдерная архитектура GeForce 8800 полностью совместима с DirectX 10, плюс обеспечивает отличные результаты в современных DirectX 9 и OpenGL играх. О ключевых DirectX 10 технологиях, реализованных в GeForce 8800, сегодня вкратце.
Потоковый вывод данных (Stream Output), реализованный в GeForce 8800, является важной функцией DirectX 10. Такая организация архитектуры позволяет отправлять данные, генерируемые геометрическими (или вертексными) шейдерами в буферы памяти и затем возвращать их и загружать в начало конвейера GPU для последующей обработки.
Кстати, неоднократно упомянутые выше DirectX 10 геометрические шейдеры, поддерживаемые аппаратно в GeForce 8800, в конченом счёте предназначены для повышения качества анимации и реализма выражения лиц, имитации разливных физических процессов и множества других геометрических операций.
В целом, чипы серии GeForce 8800 в связке с DX10 API обладают широкими возможностями по обработке игровых объектов в пакетном режиме, а также созданию массовых сцен путём отрисовки большого количества динамических объектов при помощи одного вызова драйвера - Geometry Instancing.
В качестве превосходного примера новых DirectX 10 возможностей семейства графических чипов GeForce 8800 можно привести принцип, по которому теперь создаются и анимируются реалистичные волосы. Рендеринг "натуральных" волос в случае DirectX 9 возлагался, главным образом, на CPU, интерполяция и тесселяция контрольных точек физической модели также возлагалась на центральный процессор. В случае использования DirectX 10 физическое моделирование волос возлагается на графический процессор, при этом интерполяция и тесселяция контрольных точек возлагается на геометрический шейдер.