Архитектура видеокарты что это

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

Предисловие

Появление видеокарт на основе графических процессоров NVIDIA G80 и ATI R600 обозначило начало нового этапа развития индустрии компьютерных игр: появилась поддержка нового интерфейса прикладного программирования (API, Application Programming Interface) от Microsoft — DirectX 10.

Ключевым условием поддержки DirectX 10 является унифицированная шейдерная архитектура графического процессора. Первой видеокартой, соответствовавшей данному требованию, была GeForce 8800 GTX на основе графического процессора G80 с его 128-ю унифицированными шейдерными конвейерами. Ответом компании ATI стал продукт под названием Radeon HD 2900 XT на основе графического процессора R600, обладающего 320-ю шейдерными конвейерами.

Исходя из характеристик вышеупомянутых видеокарт, несложно определить их теоретическую пиковую шейдерную производительность. Шейдерная подсистема R600 работает с той же тактовой частотой, что и остальная логика (740 МГц), в то время как у G80 частота этой подсистемы значительно выше (1,35 ГГц). Теоретическая пиковая шейдерная производительность Radeon HD 2900 XT равна 236,8 млрд. условных скалярных операций в секунду, а GeForce 8800 GTX — только 172,8 млрд. операций в секунду. Однако по результатам первых тестов, несмотря на преимущество в шейдерной производительности, видеокарта на основе R600 проиграла конкуренту от NVIDIA.

Многие пользователи, не ориентирующиеся в особенностях архитектуры современных графических процессоров, озадачены одним и тем же вопросом: почему видеокарта, обладающая в 2,5 раза большим количеством шейдерных конвейеров, проигрывает своему конкуренту? Ответом на данный вопрос послужит эта небольшая статья.

Архитектура графического процессора NVIDIA G80

Cвой новый графический процессор под кодовым названием G80 компания NVIDIA спроектировала на основе принципов скалярной унифицированной шейдерной архитектуры. Что характерно, каждый из его 128-и потоковых скалярных конвейеров (процессоров; см. справочник) может обрабатывать всего лишь по одной операции (команде) за такт. Несмотря на то, что ещё несколько лет назад казалось, что и 20-и конвейеров вполне достаточно, но необходимость в столь большом количестве всё же возникла. Особенность скалярных конвейеров состоит в том, что они могут производить вычисления лишь над одним операндом в некоторый момент времени, а традиционные конвейеры проектируются для одновременной параллельной (векторизированной) обработки 4 операндов.

Собственно, архитектура на основе унифицированных (универсальных) шейдерных конвейеров уже сама по себе способствует увеличению реальной производительности графического процессора. При использовании специализированных конвейеров, то есть когда одни предназначены исключительно для обработки вершинных (геометрических) шейдеров, а другие — пиксельных (см. справочник), часто возникают ситуации, когда при расчёте сцены основная нагрузка ложится на пиксельные конвейеры, а вершинные частично простаивают. Или наоборот. Унифицированная архитектура избавлена от этих недостатков, так как каждый шейдерный конвейер может обрабатывать как вершинные, так и пиксельные команды.

Блок-схема графического процессора NVIDIA G80 выглядит следующим образом:

Архитектура видеокарты что это. s1. Архитектура видеокарты что это фото. Архитектура видеокарты что это-s1. картинка Архитектура видеокарты что это. картинка s1.

Как уже было сказано выше, G80 — это первый графический процессор с поддержкой DirectX 10. Вслед за ним NVIDIA выпустила графические процессоры под кодовыми названиями G86, G84, а также серии G9x и GT200. Все они обладают унифицированной скалярной шейдерной архитектурой.

Сравнительная таблица видеокарт GeForce 8 Series:

ВидеокартаЧипТех-
про-
цесс
Кон-
вейеры
ЧастотаПамятьFill Rate
нмядрашейдер.
блоков
ОбъемТипЧастота
(эфф.)
Ширина
шины
ПСПMtex/sMpix/s
МГцМГцМБМГцбитГБ/c
8800 UltraG80901286121512768GDDR32160384103,61958414688
8800 GTXG80901285751350768GDDR3180038486,41840013800
8800 GTSG8090965001200320 / 640GDDR3160032064,01200010000
8800 GTSG92651286501625512 / 1024GDDR3200025664,04160010400
8800 GTG92651126001500256 / 512 / 1024GDDR3180025657,6336009600
8800 GSG9265965501375384 / 768GDDR3160019238,4264008800
8600 GTSG8480326751450256 / 512GDDR3200012832,0108005400
8600 GTG8480325401180256 / 512GDDR3140012822,486404320
8500 GTG868016450900256 / 512DDR280012812,836003600
8400 GSG868016450900128 / 256 / 512DDR2800646,436003600
8300 GSG86808450900128 / 256 / 512DDR2800646,418003600

Сравнительная таблица видеокарт GeForce 9 Series:

ВидеокартаЧипТех-
про-
цесс
Кон-
вейеры
ЧастотаПамятьFill Rate
нмядрашейдер.
блоков
ОбъемТипЧастота
(эфф.)
Ширина
шины
ПСПMtex/sMpix/s
МГцМГцМБМГцбитГБ/c
9800 GX22x G92652x 12860015122x 512GDDR320002x 2562x 64,02x 384002x 9600
9800 GTX+G92b551287381836512 / 1024GDDR3220025670,44723211808
9800 GTXG92651286751688512 / 1024GDDR3220025670,44320010800
9800 GTG92
G92b
65
55
1126001500512 / 1024GDDR3180025657,6336009600
9600 GTG9465 / 5564600
650
1500
1635
256 / 512 / 1024GDDR3180025657,619200
20800
9600
10400
9600 GSOG9265965501375384 / 768GDDR3160019238,4264008800
9500 GTG9665 / 55325501400256 / 512 / 1024DDR2
GDDR3
1000
1600
12816,0
25,6
88004400
9400 GTG9665 / 55165501400256 / 512 / 1024DDR280012812,844004400

Сравнительная таблица видеокарт GeForce 200 Series:

ВидеокартаЧипТех-
про-
цесс
Кон-
вейеры
ЧастотаПамятьFill Rate
нмядрашейдер.
блоков
ОбъемТипЧастота
(эфф.)
Ширина
шины
ПСПMtex/sMpix/s
МГцМГцМБМГцбитГБ/c
GTX 2952x GT200b552x 24057612422x 896GDDR320002x 4482x 111,92x 460802x 16128
GTX 285GT200b5524064814761024 / 2048GDDR32484512159,05184020736
GTX 280GT2006524060212961024GDDR32214512141,74816019264
GTX 275GT200b552406331404896 / 1792GDDR32268448127,05064017724
GTX 260GT200
GT200
GT200b
65
65
55
192
216
216
5761242896 / 1792GDDR32000448111,936864
41472
41472
16128
GTS 250G92b551287381836512 / 1024 / 2048GDDR3220025670,44723211808

Архитектура графического процессора ATI R600

Компания ATI выпустила свой ответ с запозданием примерно на полгода. За это время NVIDIA успела выпустить на рынок несколько видеокарт на основе G80.

Как уже было упомянуто, новый продукт под названием Radeon HD 2900 XT основан на графическом процессоре с кодовым названием R600, который обладает 320-ю унифицированными шейдерными конвейерами. Стоит отметить, что нельзя непосредственно сравнивать эти 320 конвейеров R600 со 128-ю конвейерами G80, поскольку отличия в их архитектуре более чем существенны. Об этом и в подробностях.

Как и в случае G80, каждый из шейдерных конвейеров R600 может выполнять одну операцию за такт. Дело в том, что конвейеры R600 не являются скалярными в широком смысле этого слова, так как они группируются в блоки по 5 штук. Каждый из этих 64 суперскалярных блоков может выполнять за такт одну скалярную операцию и одну векторизированную на 4-х конвейерах сразу. Теоретически одна такая векторизированная команда эквивалентна 4-м скалярным, но не всегда. Говоря простым языком, 4 одинаковые скалярные операции можно преобразовать в 1 векторизированную. Если же эти 4 скалярные операции отличаются по характеру, то такое преобразование невозможно. Это не имело бы никакого значения, если бы все операции с шейдерами были векторизированными, но на деле всё обстоит иначе, и прямая аналогия между 5-ю конвейерами ATI типа Vec 4+1 и 5-ю скалярными конвейерами NVIDIA просматривается далеко не всегда, поскольку в реальных приложениях доля независимых скалярных расчётов довольно значительна. Очевидно, что это негативно отражается на реальной производительности R600.

Какова же теоретическая производительность R600 с 64-ю шейдерными блоками Vec 4+1? Получается, что 47,3 млрд. векторных и столько же скалярных операций в секунду. В таком случае, в зависимости от соотношения количества скалярных и векторных операций в программе, превосходство R600 над G80 с его 43,2 млрд. векторных операций в секунду составит 9-19% при полной векторной нагрузке, а при полностью скалярной примерно двукратное превосходство получит G80. Как показывает практика, в общем случае суперскалярная архитектура R600 не имеет явного преимущества над скалярной архитектурой G80.

Блок-схема графического процессора ATI R600:

Архитектура видеокарты что это. s2. Архитектура видеокарты что это фото. Архитектура видеокарты что это-s2. картинка Архитектура видеокарты что это. картинка s2.

Суперскалярную архитектуру R600 унаследовали и новые графические процессоры, которые принадлежат к следующим поколениям видеокарт ATI, то есть HD 3xxx и HD 4xxx.

Сравнительная характеристика видеокарт HD 2xxx:

ВидеокартаЧипТех-
про-
цесс
Кон-
вейеры
Частота
ядра
ПамятьFill Rate
нмМГцОбъемТипЧастота
(эфф.)
Ширина
шины
ПСПMtex/sMpix/s
МБМГцбитГБ/c
HD 2900 XTR60080320740
740
825
512
1024
1024
GDDR3
GDDR4
GDDR4
1650
2000
2100
512105,6
128,0
134,4
11800
11800
13200
11800
11800
13200
HD 2900 ProR60080320600512
512
1024
GDDR3
GDDR3
GDDR4
1600
1600
1850
512
256
512
102,4
51,2
118,4
96009600
HD 2900 GTR60080240600256GDDR3160025651,296009600
HD 2600 XTRV63065120800256 / 512GDDR4
GDDR3
2200
1400
12835,2
22,4
64003200
HD 2600 ProRV63065120700
600
256 / 512GDDR3
DDR2
1400
800
12822,4
12,8
5600
4800
2800
2400
HD 2400 XTRV6106540700256 / 512GDDR314006411,228002800
HD 2400 ProRV6106540525256 / 512DDR2800646,421002100

Сравнительная характеристика видеокарт HD 3xxx:

ВидеокартаЧипТех-
про-
цесс
Кон-
вейеры
Частота
ядра
ПамятьFill Rate
нмМГцОбъемТипЧастота
(эфф.)
Ширина
шины
ПСПMtex/sMpix/s
МБМГцбитГБ/c
HD 3870 X2RV670552x 3208252x 512GDDR3
GDDR4
1800
2250
2x 2562x 57,4
2x 72,0
2x 132002x 13200
HD 3850 X2RV670553206702x 512GDDR316602x 2562x 53,12x 107202x 10720
HD 3870RV67055320775512 / 1024GDDR3
GDDR4
1800
2250
25657,6
72,0
1240012400
HD 3850RV67055320670256 / 512GDDR3166025653,11072010720
HD 3650RV63555120725256 / 512GDDR3
DDR2
1600
1000
12825,6
16,0
58002900
HD 3470RV6205540800256
256
512
GDDR3
GDDR3
DDR2
1900
1400
1000
6415,2
11,2
8,0
32003200
HD 3450RV6205540500256 / 512DDR21000648,024002400

Сравнительная характеристика видеокарт HD 4xxx:

ВидеокартаЧипТех-
про-
цесс
Кон-
вейеры
Частота
ядра
ПамятьFill Rate
нмМГцОбъемТипЧастота
(эфф.)
Ширина
шины
ПСПMtex/sMpix/s
МБМГцбитГБ/c
HD 4870 X2RV770552x 8007502x 1024GDDR536002x 2562x 115,22x 300002x 12000
HD 4850 X2RV770558006252x 512 / 2x 1024GDDR320002x 2562x 64,02x 250002x 10000
HD 4890RV79055800850512 / 1024 / 2048GDDR53900256124,83400013600
HD 4870RV77055800750512 / 1024 / 2048GDDR53600
4000
256115,2
128,0
3000012000
HD 4850RV77055800625512 / 1024GDDR3200025664,02500010000
HD 4830RV77055640575512 / 1024GDDR3180025657,6184009200
HD 4770RV74040640750512 / 1024GDDR5320012851,22400012000
HD 4650RV73055320750512
512
1024
GDDR4
GDDR3
GDDR3
2200
2000
1800
12835,2
32,0
28,8
240006000
HD 4650RV73055320600512 / 1024
512
DDR2
GDDR3
1000
1400
12816,0
22,4
192004800
HD 4550RV7105580600256 / 512GDDR316006412,848002400
HD 4350RV7105580575256 / 512DDR21000648,048002400

Выводы

Несмотря на свою теоретическую шейдерную мощь видеокарты ATI на практике не столь сильны, как может показаться на первый взгляд. В современных играх значительную часть времени занимают скалярные расчёты, что снижает реальную производительность систем на основе видеокарт ATI. С другой стороны, оптимизация шейдерного кода позволяет минимизировать этот недостаток.

Примером может послужить сравнение видеокарт GeForce GTX 295 и Radeon HD 4870 X2. Продукт от NVIDIA основан на двух графических процессорах GT200b с 240-ю унифицированными скалярными шейдерными конвейерами каждый, в то время как решение от ATI содержит по 800 конвейеров в каждом из своих двух графических процессоров RV770. Но на самом деле HD4870 X2 имеет только 320 шейдерных блоков (по 160 на графический процессор), производительность которых на скалярных операциях существенно уступает производительности конкурента.

Отсюда ответ на вопрос, почему видеокарта с 480-ю шейдерными конвейерами побеждает видеокарту, у которой их 1600, звучит примерно так: видеокарты ATI Radeon обладают суперскалярной архитектурой, в отличие от видеокарт NVIDIA GeForce с их скалярной архитектурой, и реальное количество шейдерных блоков у видеокарт ATI значительно меньше заявленного количества конвейеров.

Однако тот факт, что в 3D-приложениях, выпущенных к моменту выхода R600, суперскалярная архитектура не оправдала ожиданий, вовсе не означает, что в ATI неверно выбрали направление и создали ущербную базовую архитектуру. Во время разработки R600 основной акцент был сделан именно на вычисления, а не на скорость текстурирования или скорость заполнения (fill rate) — R600 показывает отличные результаты почти по всех синтетических тестах, особенно в геометрических, а также в тестах сложных пиксельных шейдеров с ветвлениями. Поэтому количество блоков текстурирования и растеризации не столь значительно, как ранее предполагалось. Превосходство R600 в шейдерной производительности будет тем значительнее, чем сложнее (векторизированнее) будут шейдерные операции.

Послесловие

В данной статье было произведено сравнение архитектуры графических процессоров NVIDIA G80 и ATI R600. Аналогичное сравнение применимо и для последующих поколений видеокарт со скалярной (GeForce 8 / 9 / GTX) и суперскалярной (Radeon HD 2xxx / HD 3xxx / HD 4xxx) архитектурой.

С рассмотрением блоков текстурирования этих графических процессоров можно ознакомиться в статье Игоря Лагунова «Блоки адресации, выборки и фильтрации текстур в составе современных графических чипов».

Краткий справочник терминов, упоминающихся в статье

Шейдер (shader) — это программа для одной из ступеней графического конвейера, используемая в трёхмерной графике для определения окончательных параметров объекта или изображения. Она может включать в себя произвольной сложности описание поглощения и рассеяния света, наложения текстуры, отражение и преломление, затенение, смещение поверхности и эффекты пост-обработки.

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

Вершинный шейдер (vertex shader) оперирует данными, сопоставленными с вершинами многогранников. К таким данным, в частности, относятся координаты вершины в пространстве, текстурные координаты, тангенс-вектор, вектор бинормали, вектор нормали. Вершинный шейдер может быть использован для видового и перспективного преобразования вершин, генерации текстурных координат, расчета освещения и т. д.

Геометрический шейдер (geometry shader), в отличие от вершинного, способен обработать не только одну вершину, но и целый примитив. Это может быть отрезок (две вершины) и треугольник (три вершины), а при наличии информации о смежных вершинах (adjacency) может быть обработано до шести вершин для треугольного примитива. Кроме того, геометрический шейдер способен генерировать примитивы «на лету», не задействуя при этом центральный процессор.

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

Блок растеризации (ROP, Raster Operator) — устройство, выполняющее Z-буферизацию, сглаживание и запись обработанного изображения в буфер кадра видеокарты.

Блок текстурирования (TMU, Texture Mapping Unit) — устройство, отвечающее за наложение изображений (текстур) на поверхности геометрических объектов.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *