Алгоритм - Учебный центр

Версия сайта для слабовидящих
Заполните форму ниже! Мы вам перезвоним!

Нажав на кнопку "Отправить", Я даю своё согласие на автоматизированную обработку указанной информации, распространяющейся на осуществление всех действий с ней, включая сбор, передачу по сетям связи общего назначения, накопление, хранение, обновление, изменение, использование, обезличивание, блокирование, уничтожение и обработку посредством внесения в электронную базу данных, систематизации, включения в списки и отчетные формы.


Архитектура графического унифицированного потокового процессора (пример).

Архитектура графического унифицированного потокового процессора (пример).

В основу новой унифицированной архитектуры легла концепция потоковой обработки данных, благодаря которой появилась возможность отправки данных на повторную обработку без ожидания завершения всех стадий конвейера. Также был добавлен новый вид шейдеров – геометрический, работающий с геометрией на уровне примитивов, а не вершин, что способствует разгрузке центрального процессора от лишней работы. И, конечно же, отказ от разделения на пиксельные и вершинные процессоры – теперь они общие, получили новое название – потоковые процессоры (стрим-процессоры) и в любой момент могут быть перепрограммированы под конкретные нужды приложения. Если необходим просчёт «скелета» сцены, то для текстурирования и пиксельной работы выделяется необходимое число блоков, а остальное идёт на вершинные операции. Если же, например, необходимо воссоздать бушующее море, всё наоборот: все силы бросаются на пиксельную обработку, а для геометрии, естественно, только необходимое.

В архитектуре унифицированных процессоров (рис. 1) не существует отдельных вершинных или пиксельных процессоров, а есть процессоры общего назначения, способные исполнять как вершинные, так и пиксельные шейдеры. Для унифицированных процессоров потребовались и новые программы обработки (то есть шейдеры (Shader Model, SM). Унифицированные процессоры поддерживались уже в API DirectX 10.

 

Рис. 1. Унифицированная архитектура

Как уже отмечалось, одно из центральных мест в архитектуре графического процессора, например, NVIDIA GeForce 8800 занимает унифицированный процессор, что позволяет избежать главного недостатка классической архитектуры— невозможности достижения сбалансированной нагрузки вершинных и пиксельных шейдеров.

Рассмотрим в чем заключается сущность унифицированного процессора, реализованного компанией NVIDIA. Предположим, что в воображаемом графическом процессоре с классической архитектурой присутствуют четыре вершинных и восемь пиксельных процессоров. Если, к примеру, в игре используются преимущественно вершинные шейдеры (трехмерные модели с насыщенной геометрией), то может возникнуть ситуация, что будут заняты все четыре вершинных процессора и только один пиксельный процессор, а оставшиеся семь пиксельных процессоров будут бездействовать. В этом случае производительность всего графического процессора определяется производительностью и количеством вершинных процессоров. В случае если в игре используются преимущественно пиксельные шейдеры (трехмерные модели с насыщенными пиксельными эффектами), то может возникнуть обратная ситуация, когда будут заняты только один вершинный процессор и все семь пиксельных процессоров. В этом случае производительность всего графического процессора определяется производительностью и количеством пиксельных процессоров.

Данной проблемы можно избежать, если вместо четырех вершинных и восьми пиксельных процессоров (в сумме 12) использовать 12 унифицированных процессоров, которые могли бы выполнять как вершинные, так и пиксельные шейдеры.

Впрочем, говорить, что главная особенность унифицированных процессоров NVIDIA заключается только в том, что они способны выполнять как вершинные, так и пиксельные шейдеры, было бы не вполне корректно. Унифицированные процессоры способны выполнять геометрические (Geometry) и физические (Physics) расчеты, чего вообще не было предусмотрено в графических процессорах предыдущих поколений.

Унифицированные процессоры NVIDIA называются унифицированными потоковыми процессорами (Unified Streaming Processors - SP) и представляют собой скалярные процессоры общего назначения для обработки данных с плавающей запятой. Напомним, что традиционно в процессорах существует два типа математики: векторная и скалярная.

В случае векторной математики данные (операнды) представляются в виде n-мерных векторов, при этом над большим массивом данных проводится всего одна операция. Самый простой пример— задание цвета пиксела в виде четырехмерного вектора с координатами R, G, B, A, где первые три координаты (R, G, B) задают цвет пиксела, а последняя— его прозрачность. В качестве простого примера векторной операции можно рассмотреть сложение цвета двух пикселов. При этом одна операция осуществляется одновременно над восемью операндами (двумя 4-мерными векторами).

В скалярной математике операции осуществляются над парой чисел. Понятно, что векторная обработка увеличивает скорость и эффективность обработки за счет того, что обработка целого набора (вектора) данных выполняется одной командой.

В графическом процессоре NVIDIA GeForce 8800 были реализованы унифицированные скалярные процессоры, а не векторные. Дело в том, что векторная архитектура является в какой-то степени традиционной для графических процессоров по причине преобладающего количества операций с векторными данными, такими как компонентная R-G-B-A-обработка в пиксельных шейдерах или геометрическое преобразование 4x4-матриц в вершинных шейдерах.

В последнее время наблюдается переход от векторных к скалярным вычислениям. Так, проанализировав сотни шейдерных программ, разработчики NVIDIA пришли к выводу, что традиционная векторная архитектура менее эффективно использует вычислительные ресурсы, нежели скалярный дизайн процессорных модулей, особенно в случае обработки сложных смешанных шейдеров, сочетающих векторные и скалярные инструкции. Кроме того, достаточно сложно добиться эффективной обработки скалярных вычислений с помощью векторных исполнительных модулей. Поэтому в унифицированных процессорах NVIDIA применяются скалярные исполнительные блоки. При этом векторный шейдерный программный код преобразуется в скалярные операции непосредственно графическим процессором GeForce 8800 (в графическом процессоре NVIDIA GeForce 8800 используются 128 скалярных унифицированных процессоров, применение такого количества скалярных процессоров дает двукратный прирост производительности в сравнении с 32 векторными процессорами, функционирующими по схеме «3+1»).

В графическом процессоре NVIDIA GeForce 8800 применяются 128 потоковых унифицированных процессоров, каждый их которых работает на тактовой частоте 1,35 ГГц. Структурная схема GPU NVIDIA GeForce 8800 представлена на рис. 2.

 

Рис. 2. Структурная схема графического процессора NVIDIA GeForce 8800.

Потоковые процессоры сгруппированы в восемь блоков по 16 штук, каждый из которых оснащен четырьмя текстурными модулями и общим L1-кэшем. Каждый блок представляет собой два шейдерных процессора (состоящих из восьми потоковых процессоров каждый), при этом все восемь блоков имеют доступ к любому из шести L2-кэшей и к любому из шести массивов регистров общего назначения. Таким образом, обработанные одним шейдерным процессором данные могут быть использованы другим шейдерным процессором.

На каждые четыре потоковых процессора приходится один текстурный блок, включающий один блок адресации текстур (Texture Address Unit, TA) и два блока фильтрации текстур (Texture Filtering Unit, TF) (рис. 3). При этом текстурные блоки и кэш работают на частоте 575 МГц.

 

Рис. 3. Организация блоков унифицированных потоковых процессоров.

Графический процессор GeForce 8800 GTX обладает шестью разделами растровых операций (ROP). Каждый раздел ROP способен обрабатывать четыре пиксела за такт с общей производительностью 24 пиксела за такт с обработкой цвета и Z-обработкой.

Блоки растровых операций поддерживают мультисэмплированный, суперсэмплированный и прозрачный адаптивный антиалиасинг. Важно отметить, что добавлены и новые режимы антиалиасинга — 8x, 8xQ, 16x и 16xQ, пока лишь отметим, что новый графический процессор поддерживает сглаживание как в формате FP16, так и в формате FP32, так что проблема, свойственная архитектурам GeForce 6х и GeForce 7х, заключавшаяся в невозможности одновременного использования полноэкранного сглаживания и режима HDR, в GeForce 8800 была полностью решена.

Еще одной ключевой особенностью архитектуры графического процессора GeForce 8800 является возможность потоковой циклической обработки данных, что позволяет устранить уже упоминавшийся недостаток классической конвейерной схемы графического процессора — неоптимальное использование ресурсов в случае повторной обработки данных.

В архитектуре GeForce 8800 входящие данные (input stream) поступают на вход одного унифицированного процессора, обрабатываются им, по выходе (output stream) записываются в регистры, а затем вновь подаются на вход другого процессора для исполнения следующей операции обработки. Возможность такой циклической потоковой обработки данных одновременно с унифицированными процессорами позволяет решить проблему их повторной обработки, довольно часто встречающуюся в современных играх.

Потоковая обработка данных, реализованная в GPU GeForce 8800, является составной частью API DirectX 10. Такая архитектура позволяет отправлять в буфер памяти данные, обработанные вершинным или геометрическим шейдером, а затем вновь использовать их либо для последующей, либо для повторной обработки.

Как уже отмечалось, новый графический процессор GeForce 8800 поддерживает множество новых функций и технологий, среди которых:

- новые режимы антиалиасинга и анизотропной фильтрации

- поддержка геометрических шейдеров, реализованных в DirectX 10;

- режим HDR;

- технология расчета физических эффектов NVIDIA Quantum Effects;

- поддержка режима Extreme High Definition Gaming;

- технология PureVideo и PureVideo HD.

 


Лицензия