Введение в графические процессоры

Главным обоснованием добавления SIMD-инструкций к существующим архитектурам послужило то обстоятельство, что многие микропроцессоры в персональных компьютерах и рабочих станциях были подключены к дисплеям, поэтому на графику тратилось все больше вычислительного времени. Поэтому, когда согласно закону Мура количество доступных микропроцессорам транзисторов увеличилось, появился смысл улучшить обработку графики.

Как только закон Мура позволил центральному процессору улучшить обработку графики, он также дал возможность добавить в микросхемы видеографических контроллеров функции ускорения 2D- и ЗD-графики. Более того, в числе самых передовых устройств появились графические карты, как правило, компании Silicon Graphics, которые можно было добавлять к рабочим станциям, что позволяло создавать изображения фотографического качества. Эти самые передовые графические карты были популярны при создании сгенерированных компьютером изображений, что позже было перенесено в телевизионную рекламу, а затем в кинопроизводство. Таким образом, у наращивания рабочих ресурсов видеографических контроллеров была вполне конкретная цель, что во многом было похоже на то, как суперкомпьютеры проложили дорогу микропроцессорам.

Большим стимулом для улучшения обработки графики стала индустрия компьютерных игр, развивавшаяся как на базе персональных компьютеров, так и на специальных игровых консолях, таких как Sony PlayStation. Быстро разраставшийся рынок компьютерных игр подтолкнул многие компании на инвестирование все более крупных средств в развитие быстродействующего графического оборудования, таким образом, темпы развития графической обработки стали более высокими по сравнению с темпами развития вычислений общего назначения в серийно выпускаемых микропроцессорах.

Сообщество разработчиков графических устройств и компьютерных игр имело несколько иные цели, чем сообщество разработчиков микропроцессоров, и выработало свой собственный стиль обработки данных и свою собственную терминологию. Как только графические процессоры стали мощнее, их начали называть графическими процессорными устройствами (Graphics Processing Unit, GPlf), чтобы отличать их от центральных процессорных устройств, CPU. Рассмотрим некоторые ключевые характеристики, благодаря которым графические процессоры – GPU отличаются от центральных процессоров – CPU:

— GPU являются ускорителями, дополняющими CPU, поэтому им не нужно уметь выполнять все задачи, присущие CPU. Эта роль позволяет им посвятить все свои ресурсы графике. Для GPU вполне нормально выполнять некоторые задачи недостаточно хорошо или вообще не выполнять, при условии, что в системе, где есть и CPU, и GPU. CPU может при необходимости эти задачи выполнить. Таким образом, комбинация CPU-GPU является одним из примеров гетерогенной мультипроцессорной обработки, где не все процессоры являются идентичными. (Еще одним примером может послужить архитектура IBM Cell которая также была разработана для ускорения 2D- и ЗD-графики)

— Интерфейсами программирования GPU являются высокоуровневые интерфейсы прикладного программирования (application programming interface, API), такие как OpenGL и разработанный компанией Microsoft DirectX, в совокупности с высокоуровневыми языками графического затенения, или шейдинга (shading), такими как разработанный компанией NVIDIA язык C для графики (Cg) и разработанный компанией Microsoft язык высокого уровня для программирования шейдеров High Level Shader language (HLSL). Компиляторы языков предназначены не для машинных инструкций, а для промежуточных языков, отвечающих промышленным стандартам. Программный драйвер GPU генерирует оптимизированные машинные инструкции, подходящие к конкретному GPU. Хотя эти API и языки развиваются довольно быстро, охватывая все новые GPU-ресурсы, допускаемые законом Мура, отсутствие необходимости соблюдения обратной совместимости по двоичным инструкциям позволяет GPU-разработчикам исследовать новые архитектуры, не испытывая опасения за постоянные неудачи с реализацией. Такая среда способствует более быстрому появлению нововведений в GPU, чем в CPU.

— Обработка графики предполагает рисование точек (вершин) трехмерных геометрических примитивов, таких как линии и треугольники, и затенение (shading) или прорисовку, или рендеринг (rendering), пиксельных фрагментов геометрических примитивов. В видеоиграх, к примеру, рисуется в 20-30 раз больше пикселов, чем вершин.

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

К типам графических данных относятся точки (вершины), состоящие из координат (х, у, z, w), и пикселы, состоящие из цветов (красный – red, зеленый – green, синий – blue, альфа alpha). Графические процессоры представляют каждый компонент точки в виде 32-разрядного числа с плавающей точкой. Каждый из четырех компонентов пикселов сначала был 8-разрядным беззнаковым целым числом, но новые графические процессоры теперь представляют каждый компонент в виде числа с плавающей точкой одинарной точности в диапазоне между 0,0 и 1,0.

Рабочий набор может иметь объем в сотни мегабайт, и он не отличается такой же локальностью, связанной со временем, которая присуща данным в обычных приложениях. Более того, графические задачи отличаются большим уровнем параллелизма данных.





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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: