Графические процессоры gpu реферат

Обновлено: 05.07.2024

Графический процессор (англ. graphics processing unit , GPU) — отдельное устройство персонального компьютера или игровой приставки, выполняющее графический рендеринг. Современные графические процессоры очень эффективно обрабатывают и отображают компьютерную графику. Благодаря специализированной конвейерной архитектуре они намного эффективнее в обработке графической информации, чем типичный центральный процессор. Графический процессор в современных видеоадаптерах применяется в качестве ускорителя трёхмерной графики.

Может применятся как в составе дискретной видеокарты, так и в интегрированных решениях (встроенных в северный мост либо в гибридный процессор).

Содержание

Описание

Отличительными особенностями по сравнению с ЦП являются:

  • архитектура, максимально нацеленная на увеличение скорости расчёта текстур и сложных графических объектов; .

Высокая вычислительная мощность GPU объясняется особенностями архитектуры. Если современные CPU содержат несколько ядер (на большинстве современных систем от 2 до 6, по состоянию на 2012 г.), графический процессор изначально создавался как многоядерная структура, в которой количество ядер может достигать сотен. Разница в архитектуре обусловливает и разницу в принципах работы. Если архитектура CPU предполагает последовательную обработку информации, то GPU исторически предназначался для обработки компьютерной графики, поэтому рассчитан на массивно параллельные вычисления [1] .

Каждая из этих двух архитектур имеет свои достоинства. CPU лучше работает с последовательными задачами. При большом объеме обрабатываемой информации очевидное преимущество имеет GPU. Условие только одно — в задаче должен наблюдаться параллелизм.

GPUs have evolved to the point where many real-world applications are easily implemented on them and run significantly faster than on multi-core systems. Future computing architectures will be hybrid systems with parallel-core GPUs working in tandem with multi-core CPUs [3] .

Профессор Джек Донгарра (Jack Dongarra)
Директор Innovative Computing Laboratory
Университет штата Теннесси

Некоторые модели графических процессоров (в составе видеоадаптера) также могут применяться, в некоторых случаях, и для общих вычислений (см. GPGPU). Примерами таковых могут служить чипы HD6990 (от AMD) или GTX590 (от nVidia).

История

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

Программное обеспечение

На программном уровне видеопроцессор для своей организации вычислений (расчётов трёхмерной графики) использует тот или иной интерфейс прикладного программирования (API).

Самые первые ускорители использовали Glide — API для трёхмерной графики, разработанный 3dfx Interactive для видеокарт на основе собственных графических процессоров Voodoo Graphics.

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

См. также

Примечания

  1. ↑Гибридные вычислительные системы на основе графических процессоров NVIDIA Tesla
  2. ↑Вычисления на GPU. Архивировано из первоисточника 31 мая 2012.Проверено 13 сентября 2011. .
  3. ↑What is GPU Computing? (англ.) . Архивировано из первоисточника 31 мая 2012.Проверено 13 сентября 2011.

Ссылки

  • Технологии процессоров
  • Компьютерное аппаратное обеспечение

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое "Графический процессор" в других словарях:

ГРАФИЧЕСКИЙ ПРОЦЕССОР — (Graphics Processing Unit, GPU) микропроцессор (см. МИКРОПРОЦЕССОР), специализированный для обработки графической информации. Он берет на себя часть функций по формированию трехмерного (3D) изображения и позволяет разгрузить центральный… … Энциклопедический словарь

графический процессор — grafinis procesorius statusas T sritis automatika atitikmenys: angl. graphic job processor; graphics processor vok. Graphicprozessor, m; graphische Verarbeitungseinheit, f; graphischer Jobprozessor, m rus. графический процессор, m pranc.… … Automatikos terminų žodynas

Встроенный графический процессор — Встроенные графические процессоры Основная статья: Встроенный графический процессор IGP (сокр. от англ. Integrated Graphics Processor, дословно – интегрированный графический процессор) графический процессор (GPU), встроенный… … Википедия

Графический конвейер — Графический конвейер аппаратно программный комплекс визуализации трёхмерной графики. Содержание 1 Элементы трехмерной сцены 1.1 Аппаратные средства 1.2 Программные интерфейсы … Википедия

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

Графический акселератор — Видеокарта семейства GeForce 4, с кулером Видеокарта (известна также как графическая плата, графическая карта, видеоадаптер) (англ. videocard) устройство, преобразующее изображение, находящееся в памяти компьютера, в видеосигнал для монитора.… … Википедия

Графический адаптер — Видеокарта семейства GeForce 4, с кулером Видеокарта (известна также как графическая плата, графическая карта, видеоадаптер) (англ. videocard) устройство, преобразующее изображение, находящееся в памяти компьютера, в видеосигнал для монитора.… … Википедия

Графический ускоритель — Видеокарта семейства GeForce 4, с кулером Видеокарта (известна также как графическая плата, графическая карта, видеоадаптер) (англ. videocard) устройство, преобразующее изображение, находящееся в памяти компьютера, в видеосигнал для монитора.… … Википедия

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

Обычно видеокарта является платой расширения и вставляется в разъём расширения, универсальный (PCI-Express, PCI, ISA, VLB, EISA, MCA) или специализированный (AGP), но бывает и встроенной (интегрированной) в системную плату (как в виде отдельного чипа, так и в качестве составляющей части северного моста чипсета или ЦПУ).

Современные видеокарты не ограничиваются простым выводом изображения, они имеют встроенный графический микропроцессор, который может производить дополнительную обработку, разгружая от этих задач центральный процессор компьютера. Например, все современные видеокарты Nvidia и AMD (ATi) поддерживают приложения OpenGL на аппаратном уровне. В последнее время также имеет место тенденция использовать вычислительные способности графического процессора для решения неграфических задач

1.1.Устройство

Современная видеокарта состоит из следующих частей:

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

2. видеоконтроллер — отвечает за формирование изображения в видеопамяти, даёт команды RAMDAC на формирование сигналов развёртки для монитора и осуществляет обработку запросов центрального процессора. Кроме этого, обычно присутствуют контроллер внешней шины данных (например, PCI или AGP), контроллер внутренней шины данных и контроллер видеопамяти. Современные графические адаптеры (ATI, NVidia) обычно имеют не менее двух видеоконтроллеров, работающих независимо друг от друга и управляющих одновременно одним или несколькими дисплеями каждый.

3.видеопамять — выполняет роль кадрового буфера, в котором хранится изображение, генерируемое и постоянно изменяемое графическим процессором и выводимое на экран монитора (или нескольких мониторов). В видеопамяти хранятся также промежуточные невидимые на экране элементы изображения и другие данные. Видеопамять бывает нескольких типов, различающихся по скорости доступа и рабочей частоте. Современные видеокарты комплектуются памятью типа DDR, DDR2, GDDR3, GDDR4 и GDDR5. Следует также иметь в виду, что помимо видеопамяти, находящейся на видеокарте, современные графические процессоры обычно используют в своей работе часть общей системной памяти компьютера, прямой доступ к которой организуется драйвером видеоадаптера через шину AGP или PCIE

4.цифро-аналоговый преобразователь (ЦАП, RAMDAC — Random Access Memory Digital-to-Analog Converter) — служит для преобразования изображения, формируемого видеоконтроллером, в уровни интенсивности цвета, подаваемые на аналоговый монитор. Возможный диапазон цветности изображения определяется только параметрами RAMDAC. Чаще всего RAMDAC имеет четыре основных блока — три цифроаналоговых преобразователя, по одному на каждый цветовой канал (красный, зелёный, синий, RGB), и SRAM для хранения данных о гамма-коррекции. Большинство ЦАП имеют разрядность 8 бит на канал — получается по 256 уровней яркости на каждый основной цвет, что в сумме дает 16,7 млн цветов (а за счёт гамма-коррекции есть возможность отображать исходные 16,7 млн цветов в гораздо большее цветовое пространство). Некоторые RAMDAC имеют разрядность по каждому каналу 10 бит (1024 уровня яркости), что позволяет сразу отображать более 1 млрд цветов.

5.видео-ПЗУ (Video ROM) — постоянное запоминающее устройство, в которое записаны видео-BIOS, экранные шрифты, служебные таблицы и т. п. ПЗУ не используется видеоконтроллером напрямую — к нему обращается только центральный процессор. Хранящийся в ПЗУ видео-BIOS обеспечивает инициализацию и работу видеокарты до загрузки основной операционной системы, а также содержит системные данные, которые могут читаться и интерпретироваться видео-драйвером в процессе работы (в зависимости от применяемого метода разделения ответственности между драйвером и BIOS). На многих современных картах устанавливаются электрически перепрограммируемые ПЗУ (EEPROM, Flash ROM), допускающие перезапись видео-BIOS самим пользователем при помощи специальной программы.

6.система охлаждения — предназначена для сохранения температурного режима видеопроцессора и видеопамяти в допустимых пределах.

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

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

1.2.Характеристики

1.ширина шины памяти, измеряется в битах — количество бит информации, передаваемой за такт. Важный параметр в производительности карты.

2.объём видеопамяти, измеряется в мегабайтах — объём собственной оперативной памяти видеокарты.

Видеокарты, интегрированные в набор системной логики материнской платы или являющиеся частью ЦПУ, обычно не имеют собственной видеопамяти и используют для своих нужд часть оперативной памяти компьютера (UMA — Unified Memory Access).

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

4.текстурная и пиксельная скорость заполнения, измеряется в млн. пикселов в секунду, показывает количество выводимой информации в единицу времени.

1.3.Виды современных видеокарт

На данный момент есть только два производителя графических процессоров, которые заслуживают внимания. Это Nvidia и ATI (AMD). У каждого, соответственно, имеется свой модельный ряд. Последние модели каждого производителя:

1. Видеокарта AMD Radeon HD5870

Видеокарта AMD ATI Radeon HD5870 имеет одно из самых высоких значений производительности однопроцессорного решения на базе последних графических процессоров AMD. Примененная в данной модели система охлаждения, по сравнению с системой, установленной на рефересных видеокартах предыдущей серии Radeon HD4870/HD4890, претерпела существенные изменения. Длина печатной платы и вместе с ней системы охлаждения увеличилась, при этом вес видеокарты уменьшился. В верхней части платы на привычном месте расположены два 6-контактных разъема питания. На этой же части платы, но ближе к интерфейсам находятся разъемы Crossfire для связки двух видеокарт. Система охлаждения построена на основе 4-контактного управляемого вентилятора, выполненного в виде турбины. Воздух от вентилятора охлаждает алюминиевый радиатор, который накрывает собой графический процессор и микросхемы памяти. При этом радиатор имеет медное окончание, которое и соприкасается с графическим чипом.

В этой модели используются микросхемы памяти GDDR5 производства компании Samsung, которые имеют маркировку K4G10325FE-HC04. Время выборки этих микросхем равно 0,4 нс, а номинальная частота составляет 1,25 ГГц (5 ГГц QDR). Соответственно, поскольку микросхемы памяти в видеокарте работают на частоте 1,2 (4,8 ГГц QDR) ГГц, у нее есть запас по небольшому разгону. Задняя часть видеокарты, на которой расположены интерфейсы, имеет два разъема DVI, а также HDMI и Display-Port.

Отметим, что по сравнению с предыдущими референсными системами охлаждения от AMD новая система охлаждения стала работать гораздо тише. Температура при максимальной нагрузке и режиме простоя тоже снизилась по сравнению с референсными видеокартами Radeon HD4870 и HD4890.

2. Видеокарта MSI Radeon HD5870 Lightning

В комплекте с видеокартой идут специальные драйверы, а также эксклюзивное программное обеспечение Afterburner для разгона, которое создано на основе утилиты Rivatuner. Эта утилита может не только разгонять частоту ядра и видеопамяти, но и изменять напряжение питания графического процессора и микросхем памяти.

Новая модель поддерживает API DirectX 11. Изначально тактовая частота графического ядра немного завышена и составляет 900 МГц вместо стандартных 850 МГц. Память работает с частотой 4,8 ГГц. Объем GDDR5 составляет 1 Гбайт.

Видеокарта XFX Radeon HD5830

Видеокарта XFX Radeon HD5830 отличается от стандартной референсной модели, представленной компанией AMD, прежде всего тем, что в ней используется нестандартная система охлаждения. Остальные характеристики этой модели совпадают с референсной видеокартой AMD Radeon HD5830. Первоначально данная модель анонсировалась как видеокарта с укороченным размером по отношению к референсной модели, но в конечном счете размер текстолита не был изменен. Используемая система охлаждения построена на основе алюминиевого радиатора с двумя тепловыми трубками. Охлаждение радиатора производится с помощью неуправляемого 60-миллиметрового вентилятора. При этом кулером охлаждается лишь графический процессор — микросхемы памяти остаются без дополнительного охлаждения, что исключает экстремальный разгон данной модели. Чипы памяти GDDR5 представлены восемью микросхемами K4G10325FE-HC04 производства компании Samsung.

Видеокарты Sapphire Radeon HD5770 Vapor-X и Radeon HD5750 Vapor-X

Компания Sapphire хорошо известна российским пользователям как один из ведущих поставщиков видеокарт на базе графических процессоров AMD. В нашем тестировании приняли участие две модели видеокарт, которые относятся к среднему ценовому сегменту рынка, сочетая в себе высокую производительность и достойное качество изображения при относительно низкой цене. Обе модели — Sapphire Radeon HD5770 Vapor-X и Radeon HD5750 Vapor-X — отличаются от референсных моделей, представленных AMD, системой охлаждения.

В видеокарте Sapphire Radeon HD5770 Vapor-X используется полноценная версия системы охлаждения, в которой применяется фирменная двухслотовая система охлаждения Vapor-X с технологией испарительной камеры Vapor Chamber Technology. В обеих видеокартах используется восемь микросхем памяти Hynix H5GQ1H24AFA T2C, которые не имеют дополнительного охлаждения, что исключает их экстремальный разгон.

Бюджетные видеокарты

Видеокарта MSI Radeon HD5670

Видеокарта MSI Radeon HD5670 имеет нештатную систему охлаждения, отличающуюся от референсной. Технические характеристики этой видеокарты такие же, как у референсной модели, представленной компанией AMD.Относясь в большей степени к бюджетному классу, данная видеокарта не имеет разъема для дополнительного питания, поскольку в ней установлен достаточно слабый графический процессор.

Система охлаждения представляет собой алюминиевый радиатор, охлаждаемый двухконтактным вентилятором диаметром 50 мм. Увы, по высоте видеокарта за счет кулера занимает два слота, что ограничивает использование данной модели в небольших медиацентрах. Этот кулер охлаждет только сам графический процессор. Чипы памяти GDDR5, представленные микросхемами K4G10325FE-HC05 производства компании Samsung, не имеют дополнительного охлаждения. При максимальной нагрузке на графическое ядро его температура не превышала 69 °С.

Видеокарта AMD Radeon HD5570

Данная модель относится к бюджетному классу. Видеокарта AMD Radeon HD5570 имеет штатную систему охлаждения и представлена в низкопрофильном варианте. При этом стоит отметить, что медный кулер в этой модели охлаждает не только сам графический чип, но и память GDDR3, которая представлена восемью микросхемами Samsung K4W1G1646E-HC11. Поскольку радиатор в данной модели полностью сделан из меди, эта видеокарта довольно тяжелая.В целом это отличный вариант для построения домашних медацентров.

Видеокарта AMD Radeon HD5450

Данная видеокарта имеет низкопрофильную конструкцию и однослотовую систему охлаждения. Маленький алюминиевый кулер охлаждает только графический процессор. Другая референсная модель этой видеокарты и вовсе оснащена пассивной системой охлаждения. В данной модели используются такие же чипы памяти, как и в видеокарте AMD Radeon HD5570. Данная видеокарта относится к классу сверхбюджетных видеокарт и является идеальным вариантом для построения HTPC.

Конечно, если вы покупаете компьютер для офиса или только для работы в текстовых редакторах, то мощность видеокарты для вас не так уж и существенна, однако, большинство пользователей играют в игры и работают в сложных графических приложениях, для которых нужна хорошая видеокарта. Мощь видеокарты нужна в основном для игр с хорошей графикой, а для программ, просмотра фильмов, и простеньких игр подойдет и слабая. Видеокарта, по-другому ее называют графический процессор, формирует изображение и выводит его на монитор. Она так же должна подходить материнской плате. Если вы думаете при слабой видеокарте качество изображения на мониторе будет плохое, то вы ошибаетесь. Сейчас все, даже самые дешевые видеокарты обеспечивают хорошее изображение. Ну а дорогие и мощные видеокарты нужны для того чтобы можно было играть в новые игры с 3D графикой. Может быть для кого-то это будет новостью, но современный графический процессор в несколько раз сложнее современного же центрального процессора, поэтому очень часто хорошая видеокарта может стоить половину от стоимости всего компьютера.


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

Если говорить о параметрах, то они у графических процессоров весьма схожи с центральными процессорами. Это уже известные всем параметры, такие как микроархитектура процессора, тактовая частота работы ядра, техпроцесс производства. Но у них имеются и довольно специфические характеристики. Например, немаловажная характеристика графического процессора – это количество пиксельных конвейеров (Pixel Pipelines). Эта характеристика определяет количество обрабатываемых пикселей за один такт роботы GPU.

Пиксельный конвейер занимается тем, что просчитывает каждый последующий пиксель очередного изображения, с учётом его особенностей. Для ускорения процесса просчёта используется несколько параллельно работающих конвейеров, которые просчитывают разные пиксели одного и того же изображения.

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

Помимо пиксельных конвейеров, различают ещё так называемых текстурные блоки в каждом конвейере. Чем больше текстурных блоков, тем больше текстур может быть наложено за один проход конвейера, что также влияет на общую производительность всей видеосистемы.

Графический процессор от центрального отличает так же разница в архитектуре. Современные CPU содержат несколько ядер, тогда как графический процессор изначально создавался как многопоточная структура с множеством ядер. Разница в архитектуре обусловливает и разницу в принципах работы. Если архитектура CPU предполагает последовательную обработку информации, то GPU исторически предназначался для обработки компьютерной графики, поэтому рассчитан на массивно параллельные вычисления. Каждая из этих двух архитектур имеет свои достоинства. CPU лучше работает с последовательными задачами. При большом объёме обрабатываемой информации очевидное преимущество имеет GPU. Условие только одно - в задаче должен наблюдаться параллелизм.

eGPU - Это понятие расшифровывается, как External Graphics Processing Untit. По-другому – внешняя видеокарта. Обычно, это может быть не конкретно графический адаптер, а внешний интерфейс, который совместим со множеством видеокарт

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

Поэтому желательно иметь возможность подключать графический процессор к некоторой внешней шине ноутбука. PCI Express - единственная шина, обычно используемая для этой цели. Порт может представлять собой, к примеру, порт ExpressCard или mPCIe (PCIe×1, до 5 или 2,5 Гбит / с соответственно) или порт Thunderbolt 1, 2 или 3 (PCIe×4, до 10, 20 или 40 Гбит / с соответственно). Эти порты доступны только для некоторых ноутбуков.

Разработка eGPU не получила широкой поддержки от производителей, но пользовалась популярностью у пользователей ноутбуков.

Особенности развития графических процессоров

История современных 3 D -акселераторов, предназначенных для домашнего, а не профессионального использования, всерьез началась с компании 3 Dfx . Видеокарты на основе процессора Voodoo Graphics (он же Voodoo 1) производства 3 Dfx появились в продаже в 1997 году и надолго сделали название производящей их компании синонимом слова 3 D -акселератор. Платы на этом процессоре были видеоакселераторами в чистом виде, то есть для работы требовали уже установленной в системе видеокарты. Типичное рабочее разрешение для Voodoo I составляло 512х384 пикселов, максимальное – 640х480 при 16-битной глубине цвета, поддерживалось до 4 МБ видеопамяти.

Конкуренцию 3 Dfx составляла с самого начала присутствовавшая на этом рынке компания ATI , хотя ее первый процессор — Rage 3 D — проигрывал Voodoo I . Но в 1999 году в продаже появились карты на базе чипа Rage 128 и Rage 128 PRO (они же Rage Fury и Rage Fury PRO ). PRO представлял собой разогнанный вариант обычного Rage 128 (частоты 140/160 и 103/103 МГц соответственно). В них впервые появилась аппаратная поддержка MPEG-2.

Еще один игрок на этом рынке — компания nVidia , начинавшая с весьма приличного процессора Riva 128 и Riva 128 ZX , в 1999 году выпустила серьезный чипсет Riva TNT , в котором появилась поддержка шины AGP , 32-битного цвета, разрешения до 1920х1440 пикселов. А на процессорах TNT 2 выпускался знаменитый видеоакселератор Creative 3 DBlaster TNT 2 Ultra .

Термин GPU был впервые использован компанией nVidia в августе 1999 в отношении главного чипа видеокарты нового поколения GeForce 256. От предшествующих графических чипов его отличала поддержка технологии Transform & Lighting . Эта технология заключалась в преобразовании координат виртуальных трехмерных объектов в плоские координаты, отображаемые на мониторе, и вычислении освещенности этих объектов. Это очень ресурсоемкие и сложные вычисления, особенно при большом количестве объектов. Ранее они выполнялись на центральном процессоре, отнимая значительную часть процессорного времени, либо на отдельных процессорах освещения и трансформации. Поэтому, благодаря появлению графических процессоров, с одной стороны, с CPU снималась часть нагрузки, что позволяло использовать его для решения других задач. С другой стороны, появилась возможность увеличения количества объектов и степени их прорисовки, что позволило добиться нового уровня реалистичности в 3 D -приложениях, особенно в компьютерных играх.
Плата GeForce 256 была дорогой и непроизводительной на приложениях, которые не использовали возможностей аппаратного T & L , и по-прежнему пользовались услугами ЦП для ручных вычислений. Поэтому другие производители видеокарт, например, ATI , 3 dfx Interactive , Matrox , не поддержали новой технологии и пророчили ей скорое забвение. Ситуация изменилась с выходом игр, поддерживающих аппаратно реализованную технологию T & L — Quake III Arena , Unreal Tournament и др. Ввиду неоспоримых преимуществ аппаратного T & L перед программным вскоре он стал де-факто стандартом при программировании трехмерных игр. Компания ATI выпустила платы Radeon с его поддержкой, а два других конкурента вынуждены были уйти с рынка игровых видеоадаптеров.
Новым этапом в развитии графических процессоров стало появление пиксельных и вершинных шейдеров. Шейдеры представляют собой программы, написанные на языке, похожем на язык ассемблера, и позволяющие непосредственно управлять GPU , которые ранее не были программируемыми. Вершинные шейдеры позволяют определять параметры пикселя (освещенность, прозрачность, отражающую способность, координаты, текстуру и т.д.), исходя из параметров вершин треугольника, содержащего его. Пиксельные шейдеры позволяют работать с каждым пикселем индивидуально, уже после проведения геометрических преобразований. Поддержка программируемых шейдеров на аппаратном уровне впервые была реализована в 2000 году, в GPU nVidia GeForce 2 и ATI Radeon R 100 (позднее переименован в Radeon 7200). Однако программная часть поддержки была плохо реализована. В результате, после согласования спецификаций, программируемые шейдеры стали поддерживаться DirectX 8.0, и первыми видеокартами, в которых можно было в полной мере пользоваться их преимуществами, стали видеокарты с чипами GeForce 3 и Radeon 8500.

Дальнейшее развитие графических процессоров обоих производителей происходило эволюционным путем: увеличивались тактовые частоты, добавлялась поддержка новых шейдерных моделей, улучшались технологии фильтрования и сглаживания. Все это позволяло добиваться новых уровней реалистичности при прорисовке объемных сцен.

На 2006 основными производителями графических процессоров для домашних ПК являются ATI Technologies и nVidia . Процессоры 2006 изготавливаются, как правило, по 130 или 90 нм технологии и работают на частоте 400-600 МГц.

1. Таненбаум Э. Архитектура компьютера / Э. Таненбаум, Т. Остин. – СПб: Питер, 2013. – 816 с.

Введение в модель программирования на Graphic Processor Unit. Архитектура графических адаптеров Nvidia. Характеристика модели платформы OpenCL. Возможности вершинного процессора при работе с графикой. Схематичное изображение графического адаптера.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 23.11.2015
Размер файла 916,9 K

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

1. Преимущества GPGPU

Современные GPU обладают высокой скоростью доступа к своей собственной оперативной памяти, которая обычно именуется текстурной памятью, и имеют высокую вычислительную мощность.

Для примера приведем некоторые числа (см. [1]):

Если у Intel 3.0 GHz Pentium 4 пиковая вычислительная мощность оценивается как 12 GFLOPs, то у видеокарты ATI Radeon X1800XT 120 GFLOPs, для этого же оборудования пиковая скорость обмена данными между процессором и соответствующей памятью составляет соответственно 5.96 GB/s у CPU против 42 GB/s у GPU.

Но GPU не только быстры и мощны, но и что важно, их мощности растут очень быстрыми темпами. Так в [2] приводятся следующие данные:

Годовой рост производительности CPU - 1.4 раза, а для GPU - 1.7 раз для фрагментного процессора и 2.3 раза для вершинного.

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

· преобразования нормали, нормализации;

· генерирования текстурных координат;

· преобразования текстурных координат;

· наложения цвета материала.

Фрагментный процессор - программируемый модуль, который выполняет операции над фрагментами и другими связанными с ними данными. Фрагментный процессор может выполнять следующие стандартные графические операции:

· операции над интерполированными значениями;

· доступ к текстурам;

· создание эффекта дымки;

Если учесть при этом относительно низкую стоимость видеокарт по сравнению с равномощными CPU, то станет понятно зачем использовать видеокарты для вычислений общего назначения.

2. Программируемость и гибкость

3. Архитектура GPU

3.1 Конвейер GPU

Архитектура GPU определилась благодаря специфическим потребностям компьютерной графики. Именно это определило высокий параллелизм архитектуры и ее специфику, благодаря специфической архитектуре GPU выполняют поставленные перед ними задачи гораздо эффективнее, чем классические процессоры.

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

На вход подается набор вершин, поступающий из приложения затем вершины обрабатываются в вершинных процессорах классифицируемых как MIMD, программа для вершинных процессоров называется вершинным шейдером. После этого результат работы вершинного шейдера поступает на сборку примитивов, таких как полигоны или линии, далее следует тесты видимости отсечения и прочие стандартные операции компьютерной графики, после них данные поступают на растеризацию. Здесь объемное изображение проецируется на плоский экран, и полученная картинка масштабируется в соответствии-с параметрами окна приложения. Результатом этой операции является картинка, текстура представляющая из себя прямоугольный массив так называемых пикселей. Пиксель может быть представлен 1-4 числами, например, в формате RGBA, те red, green, blue, alpha (коэфицент прозрачности).

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

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

3.2 Введение в модель программирования на GPU

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

Рассмотрим основные общие моменты структуры программы использующей описываемую технологию :

Разработчик определяет модель параллелизуемых процессов. Он разрабатывает вычислительное ядро программы, те ту часть программного кода, которая выполняет основные вычисления, именно эта часть и пишется непосредственно для видеокарты, для чего используется язык шейдеров. Каждое вычислительное ядро представляет собой набор команд языка шейдеров, причем каждое ядро работает независимо от другого, на вход шейдера поступают такие данные как текстуры (только на чтение) скаляры массивы чисел, на выход подается один тексел (максимум 4 float числа ) и глубина ( 1 float число ). Результат работы каждого ядра не может быть использован другим ядром, те данные на выходе только на запись. Другими словами данные текстуры на выходе образуют потоки, параллелизм которых обеспечивается ядром выполняемым на каждом процессоре независимо от другого. После того как ядра и потоки были определены, необходимо задать поток выходных данных. Для этого необходимо сделать несколько необычные для программиста не связанного с компьютерной графикой действия, а именно нарисовать некоторый графический примитив на экран средствами используемого графического API. Для целей GPGPU обычно рисуется четырехугольник, величиной с используемое окно, которое лучше назвать просто буфером кадра, т.к. собственно окно в привычном смысле не создается, т.е. на экран ничего не выводится, но выделяется область памяти на GPU, предназначенная для хранения результатов вычислений, эта область является ничем иным как буфером кадра в привычной терминологии компьютерной графики. Здесь же отмечу, что память на видеокарте не линейно адресуема, но двумерна и, хотя можно использовать одномерные тектуры, а так же трехмерные, все же наиболее быстрая работа обеспечивается именно для двумерных текстур, так же одно - и трехмерные текстуры существенно ограничены по размеру. После того как вами был нарисован примитив, растерайзер разбивает его на фрагменты, причем если четырехугольник размером с окно, то каждому пикселю соответствует единственный фрагмент. Фрагменты поступают в фрагментные процессоры и обрабатываются там фрагментным (он же пиксельный) шейдером. В итоге мы имеем некоторые данные в буфере кадра которые можно копировать в текстуру если тектуры не была определена как буфер кадра, что позволяют сделать некоторые расширения API например для OpenGL. Далее данные, хранимые в текстуре могут быть переданы в оперативную память или поступить на вход шейдера для дальнейших вычислений.

3.3 Модель памяти GPU

Графические процессоры имеют свою собственную иерархию памяти, во многом схожую с применяемой на обычных процессорах, но все отличную от обычной, т. к. архитектура памяти GPU создавалась из расчета на максимальное ускорение работы алгоритмов компьютерной графики.

GPU так же как CPU имеет свои собственные регистры и кэш, для ускорения доступа к данным во время вычислений. Помимо этого GPU имеет свою собственную основную память (графическая память), поэтому для того, чтобы программист мог выполнять вычисления на GPU он должен предварительно передать данные из оперативной памяти CPU в память GPU. Эта операция традиционно является достаточно дорогостоящей с точки зрения производительности ввиду относительно не высокой скорости передачи данных между памятью приложения и памятью видеокарты, хотя современны шины PCI Express и специальные чипы на материнской плате ( такие как NV3 и NV4 ) заметно ускорили этот процесс.

В отличие от памяти CPU память GPU имеет некоторые серьезные ограничения, и доступ к ней может быть осуществлен только посредством некоторых абстракций графического программного интерфейса. Каждая такая абстракция может мыслиться как тип потока со своим собственным набором правил доступа. Таких потоков непосредственно доступных для программиста может быть выделено 4 - потоки вершин потоки фрагментов потоки буфера кадров потоки текстур.

4. Архитектура графических адаптеров Nvidia

Одним из наиболее распространенных видов гибридных машин является гибридная машина на основе графических адаптеров компании Nvidia. Для того чтобы эффективно уметь программировать под такого рода машины необходимо детально понимать устройство графического адаптера с аппаратной точки зрения. Любая графическая карта может быть схематически изображена следующим образом (Рис. 1).

Рисунок 1 Схематичное изображение графического адаптера

программирование адаптер графический

Все вычислительные ядра на графическом адаптере объединены в независимые блоки TPC (Texture process cluster) количество которых зависит как от версии чипа (G80 - максимум 8, G200 - максимум 10), так и просто от конкретной видеокарты внутри чипа (GeForce 220GT - 2, GeForce 275 - 10). Так же, как от видеокарты к видеокарте может меняться количество TPC, так же может меняться и количество DRAM партиций и соот ветственно общий объем оперативной памяти. DRAM партиции имеют кэш второго уровня и объединены между собой коммуникационной сетью, в которую, так же подключены все TPC. Любая видеокарта одключается к CPU через мост, который может быть, как интегрирован в CPU (Intel Core i7), так и дискретным (Intel Core 2 Duo). От чипа к чипу (от G80 до G200) менялись детали в TPC, а общая архитектура оставалась одинаковой. В новом чипе Fermi произошли изменения и в общей архитектуре, поэтому о нем речь пойдет отдельно.

5. Архитектура чипа G80

Основные составляющие TPC:

· TEX - логика работы с текстурами, содержит в себе участки конвейера, предназначенные для обработки особой текстурной памяти о которой речь пойдет позже.

· SM - потоковый мультипроцессор, самостоятельный вычислительный модуль, именно на нем осуществляется выполнение блока. В архитектуре чипа G80 в одном TPC находится 2 SM.

Основные составляющие SM:

· SP - потоковый процессор, непосредственно вычислительный модуль, способен совершать арифметические операции с целочисленными операндами и с операндами с плавающей точкой (одинарная точность). Не является самостоятельной единицей, управляется SM.

· SFU - модуль сложных математических функций. Проводит вычисления сложных математических функций (exp, sqr, log). Использует вычислительные мощности SP.

· Регистровый файл - единый банк регистров, на каждом SM имеется 32Кб. Самый быстрый тип памяти на графическом адаптере.

· Разделяемая память - специальный тип памяти, предназначенный для совместного использования данных тредов из одного блока. На каждом SM - 16Кб разделяемой памяти.

· Кэш констант - место кэширования особого типа памяти (константной). Об особенностях применения речь пойдет позже.

· Кэш инструкций, блок выборки инструкций - управляющая система SM. Не играет роли при программировании.

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

CUDA (англ. Compute Unified Device Architecture) -- программно-аппаратная архитектура параллельных вычислений, которая позволяет существенно увеличить вычислительную производительность благодаря использованию графических процессоров фирмы Nvidia.

OpenCL (Open Computing Language) -- открытый стандарт параллельного программирования для гетерогенных платформ (в частности, для GPGPU), включающих центральные, графические процессоры и другие дискретные вычислительные устройства. OpenCL позволил использовать мощности GPU на различных программных и аппаратных платформах.

Для технологии CUDA существует два API:

· CUDA RunTime API (Программа и вычислительные ядра компилируются компилято-ром, графический ускоритель получает уже готовый PTX код для себя)

· CUDA Driver API (Программа компилируется компилятором, ядра компилируются драй-вером устройства)

Для OpenCl существует только один API - OpenCL Driver API (OpenCL).

CUDA Driver API является более сложным, но при этом в большинстве научных задач в нем нет необходимости, поэтому он не будет рассмотрен

CUDA Driver API:

1. Инициализация драйвера

2. Выбор устройства (GPU)

3. Создание контекста

1. Выбор платформы

2. Создание контекста, привязанного к платформе

3. Выбор устройства из контекста

Как видно, идеологически эти два процесса очень похожи, они различаются лишь в терминологии первого этапа. Дело в том, что в случае CUDA платформа может быть только одна - NVIDIA, в случае OpenCL выбор платформы означает инициализацию драйвера для соответствующего устройства.

7. Модель платформы OpenCL

Модель платформы (platform model) дает высокоуровневое описание гетерогенной системы. Центральным элементом данной модели выступает понятие хоста (host) - первичного устройства, которое управляет OpenCL-вычислениями и осуществляет все взаимодействия с пользователем. Хост всегда представлен в единственном экземпляре, в то время как OpenCL-устройства (devices), на которых выполняются OpenCL-инструкции могут быть представлены во множественном числе. OpenCL-устройством может быть CPU, GPU, DSP или любой другой процессор в системе, поддерживающийся установленными в системе OpenCL-драйверами. OpenCL-устройства логически делятся моделью на вычислительные модули (compute units), которые в свою очередь делятся на обрабатывающие элементы (processing elements). Вычисления на OpenCL-устройствах в действительности происходят на обрабатывающих элементах. На рис. 12 схематически изображена OpenCL-платформа из 3-х устройств.

8. Подробное рассмотрение OpenCL

OpenCL первоначально был разработан в компании Apple Inc. Apple внесла предложения по разработке спецификации в комитет Khronos. Вскоре компания AMD решила поддержать разработку OpenCL (и DirectX 11), который должен заменить фреймворк Close to Metal.

18 ноября 2008 г. - OpenCL 1.0

14 июня 2010 г. - OpenCL 1.1

15 ноября 2011 г. - OpenCL 1.2

2 июля 2013 г. - OpenCL 2.0

Ядро (kernel) -- функция, исполняемая устройством. Имеет в описании спецификацию __kernel.

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

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

Команда (command) -- операция OpenCL, предназначенная для исполнения (исполнение ядра на устройстве, манипуляции с памятью и т. д.)

Объект (object) -- абстрактное представление ресурса, управляемого OpenCL API (объект ядра, памяти и т. д.)

Дескриптор (handle) -- непрозрачный тип, ссылающийся на объект, выделяемый OpenCL. Любая операция с объектом выполняется через дескриптор.

Очередь команд (command-queue) -- объект, содержащий команды для исполнения на устройстве.

Объект ядра (kernel object) -- хранит отдельную функцию ядра программы вместе со значениями аргументов.

Объект события (event object) -- хранит состояние команды. Предназначен для синхронизации.

Объект буфера (buffer object) -- последовательный набор байт. Доступен из ядра через указатель и из управляющего узла при помощи вызовов API.

Объект памяти (memory object) -- ссылается на область глобальной памяти.

Рабочий элемент (work-item) -- набор параллельно исполняемых ядер на устройстве, вызванных при помощи команды.

Рабочая группа (work-group) -- набор взаимодействующих рабочих элементов, исполняющихся на одном устройстве. Исполняют одно и то же ядро, разделяют локальную память и барьеры рабочей группы.

Обрабатывающий элемент (processing element) -- виртуальный скалярный процессор. Рабочий элемент может выполняться на одном или нескольких обрабатывающих элементах.

Вычислительный узел (compute unit) -- исполняет одну рабочую группу. Устройство может состоять из одного или нескольких вычислительных элементов.

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

§ память, доступную устройствам;

§ одну или несколько очередей команд.

Объект программы (program object) -- включает:

§ ссылку на связанный контекст;

§ исходный текст или двоичное представление;

§ последний удачно собранный код, список устройств, для которых он собран, настройки и журнал сборки;

Читайте также: