Так получилось, что после некоторого затишья последних лет, когда компьютерные платформы совершенствовались в целом эволюционно, нынешнее лето, а за ним и осень, принесли целый ряд потрясений, что называется, революционного характера. За последние несколько месяцев окончательно вступила в свои права оперативная память стандарта DDR2, массовые платформы для настольных и мобильных ПК обзавелись поддержкой ряда малодоступных ранее функций (RAID, SATA-II, Gigabit Ethernet, etc.), процессоры бесповоротно вступили в эпоху многоядерности…
Сегодня и графической подсистеме ПК пришёл черёд вступить в неведомый ранее этап своего развития. Представляя сегодня нашим читателям семейство NVIDIA GeForce 8800 и первые результаты тестирования нового поколения графических карт на этих чипах, мы не просто говорим о более производительных решениях, но впервые представляем совершенно новую 3D архитектуру, на основе базовых разработок которой - в этом нет сомнений, будет выпущено не одно поколение последующих решений. Более того, семейство GeForce 8800 - это практически первое поколение 3D графики унифицированной (Unified) архитектуры с поддержкой DirectX 10, которой предстоит показать всю свою мощь в работе с приложениями и играми совершенно неведомого доселе класса.
Вот почему рекомендую всем нашим читателям не только просмотреть результаты тестирования, но также с достаточной долей внимания отнестись к описанию архитектуры семейства NVIDIA GeForce 8800. Подобное эпохальное явление действительно бывает не каждый год, и по значимости его можно сравнить разве что с новой архитектурой Intel Core да с грядущим выходом в свет операционной платформы Microsoft Windows Vista.
Завершая вступление также хотелось бы надеяться, что критика статьи будет по возможности благожелательной. Не стреляйте в пианиста, потому как для автора столь обширный материал по теме 3D видео всё же дебютный.
Архитектура NVIDIA GeForce 8800
Приступая к разработке нового поколения 3D архитектуры далёким летом 2002 года, перед инженерами NVIDIA был поставлен ряд ключевых требований. Помимо классической задачи разработки более производительного GPU с улучшенным качеством изображения, также был взят прицел на возможность обработки физических эффектов и интенсивных вычислений с плавающей запятой. В то же время, в содружестве с Microsoft, была поставлена цель придания новых качеств конвейерам GPU при работе с потоками и геометрией, определение ключевых функций нового поколения Direct X (для Windows Vista - DirectX 10), разумеется, с учётом достижения максимальной производительности при работе с приложениями, использующими прежние OpenGL, DirectX 9 и ранние версии DirectX.
Конечным итогом разработки архитектуры GeForce 8800 стал выпуск двух чипов - high-end решения GeForce 8800 GTX и более "скромного" варианта GeForce 8800 GTS. Первыми представителями новой архитектуры 3D графики NVIDIA GeForce 8800, которые появится на прилавках магазинов, станут видеокарты на чипе NVIDIA GeForce 8800 GTX, поэтому сегодня рассказ будет вестись, в основном, вокруг их особенностей. Чипы GeForce 8800 GTX являются действительно первыми в индустрии DirectX 10 совместимыми решениями, обладающими поддержкой Extreme High Definition (XHD) разрешения экрана с высокой производительностью при наиболее "тяжёлых" максимальных режимах работы.
Обязательно стоит отметить интересный факт: анонс архитектуры NVIDIA GeForce 8800 практически совпадает с новой рыночной стратегией компании NVIDIA, которая теперь переходит на продвижение платформенных решений. Это совсем не означает, что новая графика не будет работать с чипсетами других компаний, однако максимальные результаты NVIDIA обещает именно в результате использования платформ на базе видеокарт GeForce 8800 GTX, в том числе, в конфигурации SLI, и новых high-end чипсетов серии nForce 600 SLI. Одновременно с графикой GeForce 8800 компания NVIDIA анонсировала чипсет nForce 680i SLI для платформы Intel, но нет сомнений, что со временем подобные решения будут представлены и для работы с процессорами AMD.
Пожалуй, самое сильное впечатление от новой архитектуры – это унифицированная сущность её конвейеров. Все теоретические споры о возможности или невозможности реализации дизайна унифицированных конвейеров в обозримом будущем заканчиваются сегодня, ибо решения семейства GeForce 8800 обладают мощной параллельной архитектурой унифицированных шейдеров и состоит из 128 обособленных, совершенно самостоятельных потоковых процессоров с тактовой частотой до 1,35 ГГц. Каждый конвейер-процессор, в свою очередь, способен динамически переназначаться для обработки вершинных, пиксельных, геометрических или физических операций, обеспечивая таким образом пиковую загрузку ресурсов GPU и максимальную сбалансированную гибкость при обработке шейдерных задач.
Взглянем на блок-схему чипа GeForce 8800 GTX, сегодня нам частенько придётся возвращаться к этой иллюстрации. Одноядерный дизайн GeForce 8800 GTX позволяет значительно увеличить производительность при работе с современными приложениями и масштабировать некоторые шейдерные операции – те самые, которые будут наиболее интенсивно задействованы в будущих играх.
Для более понятного объяснения сути архитектуры унифицированных конвейеров, для начала вспомним принцип работы классической модели конвейера, задействованного на обработку потока шейдерных данных с рядом атрибутов, индексов, команд и текстур, направляемых центральным процессором в графический чип. Основные этапы обработки – вершинные и пиксельные шейдеры, растрирование и финальная запись пикселей во фреймовый буфер, производится в однообразной линейной последовательности, при этом у чипов класса GeForce 7 на каждой основной этап обработки задействуется множество физических конвейеров – до 200 последовательных стадий конвейера на каждый этап обработки пиксельного шейдера.
В отличие от классического дискретного дизайна, в случае унифицированной конвейерной и шейдерной архитектуры GeForce 8800, появляется возможность значительным образом снизить количество задействованных стадий конвейера и изменить линейную последовательность обработки потока данных, придав ей более цикличный характер. Таким образом, входящие данные поступают на вход унифицированного шейдерного модуля, по выходу записываются в регистры и затем вновь подаются на вход модуля для исполнения следующей операции обработки. На иллюстрации ниже классические конвейеры, обрабатывающие дискретные шейдеры, представлены разными цветами.
Предполагается, что заложенное в архитектуру GeForce 8800 количество аппаратных шейдерных модулей будет особенно востребовано при работе с 3D играми DirectX 10. Нет, унифицированная шейдерная архитектура совсем не является обязательным условием работы с унифицированным набором инструкций DirectX 10, однако разработчики NVIDIA GeForce 8800 полагают, что такая архитектура окажется более удачной при сбалансированном распределении нагрузки, для эффективной загрузки чипа при работе под DirectX 10. Разумеется, унифицированная шейдерная архитектура GeForce 8800 также эффективна при работе с OpenGL и DirectX 9 и ранее, поскольку не заложено никаких ограничений или фиксированного числа унифицированных шейдеров для обработки пиксельных и вершинных шейдеров с любой моделью API.
Попробуем более наглядно представить преимущества унифицированной шейдерной архитектуры на следующем примере. Допустим, по ходу действия нам требуется интенсивная прорисовка геометрии – мощная обработка вертексных шейдеров, и в этом случае производительность упрётся в максимальное количество вертексных модулей. Сценарий ниже, где требуется более сложная обработка световых эффектов на воде, напротив, требует более интенсивной работы пиксельных шейдеров, и здесь максимальная производительность также упрётся в количество модулей обработки пиксельных шейдеров. В обоих случаях до полной загрузки чипа и рачительного расхода энергии ой как далеко, поскольку часть чипа так или иначе простаивает.
В случае унифицированной шейдерной архитектуры возрастает не только эффективность загрузки чипа, но также и производительность – за счёт полного перераспределения ресурсов на требуемую в данный момент задачу - обработку пиксельных или вертексных шейдеров.
Унифицированные потоковые процессоры (Unified Streaming Processors, SP) ядра чипа GeForce 8800, представляющие собой процессоры общего назначения для обработки данных с плавающей запятой, могут обрабатывать геометрические, вертексные, пиксельные шейдеры, физические эффекты – без разницы.
Архитектура унифицированных потоковых процессоров (SP)
Итак, вековая мечта всех времён и народов – гибкое распараллеливание обработки шейдерных операций, решена в архитектуре GeForce 8800 с помощью множества скалярных потоковых процессоров, обрабатывающих входящие потоки данных и генерирующие выходящие потоки, которые в свою очередь, могут быть использованы для дальнейшей обработки другими SP. Объединяясь в группы, такие процессорные движки способны обеспечить впечатляющую параллельную вычислительную мощь.
Иллюстрация ниже наглядно показывает сбалансированный дизайн архитектуры GeForce 8800, где блок потоковых процессоров SP объединён с блоками кэша, фильтрации текстур (Texture Filtering, TF) и адресации текстур (Texture Addressing, TA). Представьте себе 128 таких вот универсальных потоковых процессорных конвейера, объединённых в "подмножества" – именно столько их в чипе GeForce 8800 GTX.
Почему именно скалярная архитектура? На ранних стадиях разработки архитектуры GeForce 8800, инженеры NVIDIA проанализировали сотни шейдерных программ и пришли к выводу, что традиционная векторная архитектура менее эффективно использует вычислительные ресурсы, нежели скалярный дизайн процессорных модулей, особенно в случае обработки сложных смешанных шейдеров, сочетающих векторные и скалярные инструкции. Тем более, что достаточно сложно добиться эффективной обработки и компиляции скалярных вычислений с помощью векторных конвейеров. Несмотря на тот факт, что до сих пор в большинстве современных графических процессоров использовались преимущественно векторные исполнительные модули – по причине преобладающего количества графических операций с векторными данными (такие как компонентная R-G-B-A обработка в пиксельных шейдерах или геометрическое преобразование 4x4 матриц в вертексных шейдерах), скалярные операции можно назвать также вполне типичным случаем.
Традиционные векторные графические чипы - как от NVIDIA, так и от ATI, обладают аппаратной реализацией шейдеров с поддержкой двойного исполнения инструкций. Так, современные чипы ATI с дизайном "3+1" допускают исполнение единой 4-элементной векторной инструкции или парной операции из трёхэлементной векторной инструкции и скалярной инструкции. Чипы серий NVIDIA GeForce 6x и GeForce 7x поддерживают парное исполнение инструкций вида 3+1 и 2+2, но им также далеко до эффективности архитектуры GeForce 8800, которая позволяет загружать скалярными инструкциями скалярные модули чипа со 100% эффективностью. Отметим, что векторный шейдерный программный код преобразуется в скалярные операции непосредственно чипом GeForce 8800. Таким образом, с помощью скалярной архитектуры на базе 128 скалярных вычислительных модулей теоретически можно добиться 2-кратного увеличения производительности против системы из 32 4-компонентных векторных процессорных модулей.