русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Недостатки классического графического конвейера


Дата добавления: 2015-08-06; просмотров: 994; Нарушение авторских прав


Описанная классическая архитектура графического конвейера дает наглядное представление об основных этапах формирования изображения видеокартой. При этом нужно отметить, что в графическом процессоре используется не один, а несколько конвейеров, работающих параллельно; чем больше в графическом процессоре таких конвейеров, тем он производительнее. Действительно, если, к примеру, в графическом процессоре реализовано 16 конвейеров, то первый из них обрабатывает 1-й, затем 17-й, потом 33-й пиксел и т.д.; второй — 2-й, 18-й и 34-й соответственно.

История развития графических процессоров до сих пор шла в одном направлении — увеличивалось число конвейеров. Понятие "конвейер" является устойчивым, но его нельзя считать строгим техническим термином. Дело в том, что в графическом процессоре используются разные конвейеры, которые выполняют отличающиеся друг от друга функции. В этом смысле более правильно говорить о вершинных или пиксельных конвейерах, но не о конвейерах вообще. Раньше под конвейером понимали пиксельный процессор, который был подключен к своему блоку наложения текстур (TMU). Например, если у графического процессора (GPU) используется восемь пиксельных процессоров, каждый из которых подключен к своему блоку TMU, то говорят, что у GPU восемь конвейеров. В то же время отождествлять число конвейеров с числом пиксельных процессоров не совсем корректно, поскольку конвейерная обработка подразумевает работу не только с пикселами, но и с вершинами, а значит, необходимо учитывать и число вершинных процессоров. Поэтому число конвейеров может выступать в качестве корректной характеристики графического процессора только в том случае, если количество конвейеров совпадает с числом пиксельных и вершинных процессоров и блоков TMU, то есть когда каждый конвейер включает по одному вершинному и пиксельному процессору, а также по одному блоку TMU. В то же время этот подход к архитектуре графического процессора нельзя признать оптимальным. Дело в том, что такая линейная организация конвейера подразумевает равномерное распределение нагрузки между отдельными стадиями конвейера. В то же время в реальных приложениях нагрузка на отдельные блоки графического процессора может быть различной. Отчасти решить проблему оптимизации нагрузки графического процессора позволяет такая архитектура, при которой количество пиксельных процессоров не совпадает с количеством вершинных процессоров. При этом разработчикам приходится искать золотую середину между количеством вершинных и пиксельных процессоров.



Понятно, что в подобном случае говорить о классическом конвейере не вполне корректно.

К примеру, в графическом процессоре NVIDIA GeForce 6800 используется шесть вершинных процессоров и 16 пиксельных процессоров. Каждый из 16 пиксельных процессоров имеет два блока пиксельных программ и один текстурный модуль TMU. Если первый блок пиксельных программ на каждом конвейере может выполнять как арифметические операции, так и чтение текстур и нормализацию, то второй блок ограничен только арифметикой. Другими словами, первый блок связан с текстурами. Если блок не занимается текстурированием, то он может выполнять (в данный проход) пиксельное затенение. Второй всегда доступен для пиксельного затенения.

Исторически под числом конвейеров в графическом процессоре принято понимать число пиксельных процессоров (хотя это и не вполне корректно). Для рассмотренной архитектуры NVIDIA GeForce 6800, как и для многих других графических процессоров, такой подход вполне приемлем, однако подобная организация лишь отчасти решает проблему сбалансированности нагрузки на GPU. Следующий шаг в этом направлении предложила компания ATI, перейдя на модульную, фрагментированную архитектуру в графических процессорах семейства ATI Radeon X1000.

Рассмотрим, к примеру, процесс формирования изображения в графическом процессоре ATI Radeon X1800 .

Первый этап вполне традиционен — это обработка данных вершинными процессорами, которые вычисляют геометрию трехмерного изображения. На этом этапе данные (Vertex Data) обрабатываются восемью вершинными процессорами (Vertex Shader Processor).

После расчета геометрии вершин, отсечения скрытых поверхностей, обрезки и т.д. данные поступают в блок сборки (setup engine), содержащий блок растеризации геометрии, потом — в процессор распределения данных Ultra-Threading Dispatch Processor. Именно этот новый блок распределения позволяет говорить о мультипоточной концепции архитектуры графического процессора. Процессор распределения Ultra-Threading Dispatch Processor способен распараллеливать шейдерный код на сотни потоков (до 512 потоков), увеличивая эффективность выполнения пиксельных шейдеров.

После прохождения процессора распределения потоки поступают в пиксельные блоки (Quad Pixel Shader Cores). Каждый такой блок (всего в графическом процессоре их четыре) состоит из четырех объединенных вместе пиксельных процессоров, каждый из которых в состоянии обработать шейдер для блока 2x2 пикселов за такт. Соответственно пиксельный блок может обрабатывать шейдер для блока 4x4 пикселов за такт.

Понятно, что в данной архитектуре термин "конвейер", равно как и "пиксельный конвейер", уже утратил свое значение.

В то же время, несмотря на некорректность использования термина "число конвейеров" в архитектуре графических процессоров семейства ATI Radeon X1000, необходимо отметить, что конвейерный способ построения изображения, применение отдельных вершинных и пиксельных процессоров остался неизменным. И хотя проблема оптимального распределения нагрузки между отдельными блоками GPU в архитектуре процессора ATI Radeon X1000 решена (хотя и не кардинально), данная архитектура не позволяет избавиться от еще одного недостатка конвейерной архитектуры GPU. Нередко возникает ситуация, когда уже частично обработанные данные необходимо изменить. Для этого приходится дожидаться завершения всего процесса конвейерной обработки данных, при котором конвейер работает впустую, обрабатывая данные, которые все равно придется изменять и обрабатывать повторно.

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

Список литературы



<== предыдущая лекция | следующая лекция ==>
Графический процессор | Унифицированный графический процессор


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.573 сек.