GPU (Graphics Processing Unit)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 13:54, 18 декабря 2016.

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

История

В конце 1980-х возникновение графических операционных систем семейства Windows дает толчок для появления процессоров нового типа. В начале 1990-х годов обрели популярность ускорители двумерной графики. Эти ускорители были спроектированы для операций с растровыми изображениями, тем самым, делая работу с графической операционной системой более комфортной. В те былые времена, когда видеоадаптеры, специализировались в основном на ускорении вывода 2D-графики. В то время считалось, что обработка трехмерных данных просто не целесообразна. Отметим, что данной тенденции не придерживалась компания Silicon Graphics, которая старалась вывести трехмерную графику на различные рынки, в том числе приложения для военных, правительства, эффекты в кино, визуализация научных данных. Результатом её трудов стало открытие данной компанией программного интерфейса к своему оборудованию. В 1992 году компания выпустила библиотеку OpenGL.

Большой скачок в развитии графических ускорителей произошел в середине 90-х годов в ответ на возрастающее потребление вычислительных ресурсов компьютерными играми. Данные видеокарты являлись специализированными процессорами для ускорения операций с трехмерной графикой и предназначались для построения двумерных изображений трехмерных сцен в режиме реального времени. Для ускорения операций использовались аппаратная реализация алгоритмов, в том числе отсечения невидимых поверхностей при помощи буфера глубины, и аппаратное распараллеливание. Ускорители принимали на вход описание трехмерной сцены в виде массивов вершин и треугольников, а также параметры наблюдателя, и строили по ним на экране двумерное изображение сцены для этого наблюдателя. Поддерживалось отсечение невидимых граней, задание цвета вершин и интерполяционная закраска, а также текстуры объектов и вычисление освещенности без учета теней. Тени можно было добавить при помощи алгоритмов расчета теней на ускоритель, таких как теневые карты или теневые объемы. Из-за увеличения спроса на трехмерную графику и взаимной конкуренции такие компании NVIDIA, ATI Technologies, 3dfx Interactive, начали выпускать доступные по цене графические ускорители. Данный факт закрепил за трехмерной графикой ведущее место на рынке перспективных технологий.

Сам термин GPU впервые был использован в августе 1999 года в отношении главного чипа видеокарты модели nVidia GeForce 256, основная функция которого заключалась в ускорении вывода трехмерной графики. Впервые вычисление геометрических преобразований и освещения сцены стало возможно проводить на самом графическом процессоре. Дальнейший прорыв принадлежит также компании NVIDIA, которая выпустила серия GeForce 3 в 2001 году. В данной серии появилась микросхема, в которой был реализован всем известный ныне, а тогда еще новый стандарт Microsoft DirectX 8.0. Данный стандарт добавил возможности программирования к GPU. Изначально фиксированный алгоритм вычисления освещенности и преобразования координат вершин был заменен на алгоритм, задаваемый пользователем. Затем появилась возможность писать программы для вычисления цвета пиксела на экране. По этой причине программы для GPU стали называть шейдерами, от английского shade — закрашивать. Первые шейдеры писались на ассемблере GPU, их длина не превосходила 20 команд, не было поддержки команд переходов, а вычисления производились в формате с фиксированной точкой. По мере роста популярности использования шейдеров появлялись высокоуровневые шейдерные языки, например, Cg от NVidia и HLSL от Microsoft, увеличивалась максимальная длина шейдера. В 2003 году на GPU впервые появилась поддержка вычислений с 32-разрядной точностью. В качестве основного интерфейса программирования выделился Direct3D, первым обеспечивший поддержку шейдеров. Обозначились основные производители дискретных графических процессоров: компании ATI и NVidia. Появились первые приложения, использующие GPU для высокопроизводительных вычислений, начало складываться направление GPGPU. GPGPU (General-Purpose computing on Graphic Processing Units) — использование графических процессоров для решения произвольных вычислительных задач. Для программирования GPU предложен подход потокового программирования. Этот подход предполагает разбиение программы на относительно небольшие этапы (ядра), которые обрабатывают элементы потоков данных. Ядра отображаются на шейдеры, а потоки данных — на текстуры в GPU.

Виды GPU

В персональных компьютерах есть две основных формы GPU:

  • Выделенная видеокарты - также названа дискретной
  • Интегрированная видеокарты - также ее называют интегрированный графический процессор (IGP)

Обе эти формы описаны ниже.

Дискретная видеокарта

Рис.1. Пример дискретного GPU

GPU самого мощного класса обычно взаимодействуют с системной платой посредством слота расширения, такого как PCI Express (PCIe) или Ускоренного графического порта (AGP) и могут обычно заменяться или обновляться с относительной простотой, предполагая, что системная плата поддерживает обновления. Несколько видеокарт все еще используют слоты Peripheral Component Interconnect (PCI), но их пропускная способность настолько ограничена, что они обычно используются только когда слот PCIe или AGP не доступен.

Специальный GPU не обязательно съемный, и при этом он необязательно взаимодействует через интерфейс с системной платой стандартным способом. Термин "посвященный" говорит о том, что у выделенных видеокарт есть RAM, которая выделена под использование картой, а не о том, что самые GPU съемные. Более того, эта RAM обычно специально выбирается для обеспечения ожидаемой последовательной рабочей нагрузки видеокарты. Выделенные GPU для портативных компьютеров обычно соединяют через нестандартный и часто собственный слот из-за ограничений веса и размера. Такие порты можно все еще считать PCIe или AGP с точки зрения их логического интерфейса узла, даже если они не физически взаимозаменяемые своими дубликатами.

Технологии, такие как SLI Nvidia и CrossFire AMD позволяют нескольким GPU отрисовывать изображения одновременно для одного экрана, увеличивая вычислительную мощность, доступную для графики.

Интегрированная видеокарта

Рис.2. Пример интегрированного GPU

Интегрированная графика, совместно используемые графические решения, интегрированные графические процессоры (IGP) или объединенная архитектура памяти (UMA) используют часть RAM компьютера, а не выделенной видеопамяти. IGP может быть интегрирован в материнскую плату в качестве части чипсета. На определенных системных платах AMD IGP может использовать выделенную sideport память. Это - отдельный фиксированный блок высокопроизводительной памяти, которая выделена для работы с GPU. Исторически, интегрированную обработку считали неподходящей для того, чтобы играть в 3D игры или запускать графически насыщенные программы, но она подходила для выполнения менее графическиемких приложений, например Adobe Flash. Однако современные интегрированные графические процессоры, такие как AMD Accelerated Processing Unit и Intel HD Graphics более чем способны к обработке 2D графики или 3D графики.

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

Гибридная обработка графики

Этот новый класс GPU конкурирует с интегрированной графикой в низкопроизводительных ноутбуках и персональных компьютерах. Наиболее распространенными представителями этого класса являются ATI's HyperMemory и Nvidia's TurboCache. Гибридные видеокарты несколько более дорогие, чем интегрированная графика, но намного менее дорогие, чем дискретные видеокарты. Они совместно используют память с системой и имеют маленькую специальную кэш-память, чтобы восполнить высокую задержку системной RAM. Технологии в PCI Express могут сделать это возможным.

Рис.3. Пример гибридной видеокарты

Внешние GPU

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

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

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

  • Большие вычислительные требования. Рендеринг в реальном времени требует биллионов пикселей в секунду, и каждый пиксель требует сотни, если не больше, операций. GPU придется осуществить огромное количество вычислений, чтобы удовлетворить требования сложных приложений, работающих в реальном времени
  • Пропускная способность (характеристика важнее задержки). Реализации GPU графического конвейера приоритезируют пропускную способность по задержке. Зрительная система человека выполняет операции за миллисекунды, в то время как операции в современном процессоре занимают наносекунды. Этот разрыв времени на 6 порядков означает, что задержка любой отдельной операции неважна. Как следствие графический конвейер довольно глубок, возможно сотни к тысячам циклов, с тысячами примитивов в полете в любой момент времени.[2]

Функции

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

В дополнение к 3D аппаратным средствам сегодняшние GPUs включают основное 2D ускорение и возможности кадрового буфера (обычно с режимом эмуляции VGA). Более новые карты как AMD/ATI HD5000-HD7000 даже испытывают недостаток в 2D ускорении; это приходится возлагать на 3D аппаратные средства.

До того, как они были программируемы, GPU имел стандартные функции и мог только сделать ограниченное количество предопределенных задач. Чтобы предоставить больше управления разработчикам, поставщики оборудования добавили несколько “этапов”, куда данные могли поступать и быть обработаны. Каждый этап мог быть установлен независимо и при помощи нескольких стадий, можно было обеспечить появление ограниченной программируемости. Чем больше было этапов, тем более “программируемыми” выглядели вещи, но в конце концов, это не было моделью, которая могла масштабироваться к полной программируемости. В целом аппаратные средства стандартной функции быстрее и более эффективны питанием, чем программируемые аппаратные средства общего назначения. Даже сегодня у современного GPU все еще есть много стандартных функций, таких как фильтрация текстуры или смешивание кадрового буфера. Именно поэтому нельзя создать большой GPU, только добавив ядер. Даже если разработчики часто выражали желание полностью управлять такими функциями, потеря производительности как результат создания их программируемыми перевесила преимущества более высокой гибкости. Билинейная фильтрация и отображение текстур были среди первой стандартной функции, к которой CPU даже не мог приблизиться с точки зрения производительности. Вплоть до точки рисование заштрихованных плоскостью треугольников было все еще в разумной досягаемости.[3]

Основные функции GPU:

  • 2-D или 3-D графика
  • Цифровой выход к мониторам плоскопанельного дисплея
  • Отображение текстур
  • Поддержка приложения графического программного обеспечения высокой интенсивности, такого как AutoCAD
  • Рендеринг многоугольников
  • Поддержка цветового пространства YUV
  • Аппаратные оверлейные программы
  • Декодирование MPEG[4]

Ускоренная видеообработка

Большинство GPU, сделанные с 1995 года, поддерживает цветовое пространство YUV, важные для воспроизведения цифрового видео, и много GPU, сделанные с 2000 также, поддерживают примитивы MPEG, такие как компенсация движения и iDCT. Этот процесс аппаратно ускоренного видеодекодирования, где части процесса декодирования видео и последующей его обработки разгружены к аппаратным средствам GPU, обычно называют "GPU ускорял видеодекодирование", "GPU помогал видеодекодированию", "GPU аппаратно ускорял декодирование видео", или "аппаратные средства GPU помогали декодированию видео".

Новые видеокарты даже декодируют видео высокой четкости на карте, разгружая центральный процессор. Наиболее распространенные API для GPU, ускоряющие видеодекодирование, DxVA для операционной системы Microsoft Windows и VDPAU, VAAPI, XvMC и XvBA для Linux-ориентированных и UNIX-подобных операционных систем. Все кроме XvMC, могут декодировать видео, закодированное с MPEG 1, MPEG 2, MPEG 4 ASP (часть 2 MPEG 4), MPEG 4 AVC (H.264 / DivX 6), VC 1, WMV3/WMV9, Xvid / OpenDivX (DivX 4) и DivX 5 кодеками, в то время как XvMC только способен к декодированию MPEG 1 и MPEG 2.

Есть целый ряд процессов в видеодекодировании, которые могут быть ускорены:

  • Компенсация движения
  • Обратное дискретное косинусное преобразование
  • Инверсия модифицированного дискретного косинусного преобразования
  • Внутрицикловая разблокировка фильтра
  • Внутрикадровый прогноз
  • Обратное квантование
  • Декодированное переменной длины
  • Пространственно-временный деинтерлейсинг и автоматическое чередование / прогрессивное исходное обнаружение
  • Обработка потока битов (Адаптивная контекстом переменная длина coding/Context-adaptive кодирование двоичной арифметики) и совершенное пиксельное расположение)

Ускоренные вычисления

Рис.4 Как GPU ускоряет работу

Ускоренные GPU вычисления - это использование графического процессора (GPU) вместе с центральным процессором (CPU), чтобы ускорить изучение, аналитику и разработку приложений. Впервые представленные в 2007 году компанией NVIDIA, GPU ускорители сейчас используются в энергосберегающих центрах данных, правительственных лабораториях, университетах, корпорациях и малом и среднем бизнесе по всему миру. Они играют огромную роль в ускорении приложений на платформах в пределах от искусственного интеллекта до автомобилей, беспилотников и роботов. Ускоренные GPU вычисления обсчитывают большие части приложения, в то время как остаток кода все еще работает на CPU. С точки зрения пользователя, приложения просто работают намного быстрее.

Отличия от CPU

Простой способ понять различие между GPU и CPU состоит в том, чтобы сравнить, как они обрабатывают задачи. CPU состоит из нескольких ядер, оптимизированных для последовательной серийной обработки, в то время как у GPU есть архитектура с массовым параллелизмом, состоящая из тысяч меньших, более эффективных ядер, разработанных для обработки нескольких задач одновременно.[5]

Рис.5 Различие в устройстве CPU и GPU

Применение

  • Игры: PC GPUs был первоначально изобретен для 3D игр на PC. Используя современный GPU также позволил разработчикам V Цивилизации создать анимированные символы, которые добавляют "живучести" на карты. Все это графическое совершенство обернуто в исключительно востребованную игру, предлагающую богатый геймплей и устойчивую реиграбельность
  • Производительность: Microsoft Office 2010 теперь предлагает ускорение GPU для некоторых его графических элементов, например PowerPoint и WordArt. Технология Eyefinity AMD дает возможность запустить офис на трех - шести дисплеях, использующих всего одну включенную Radeon HD 5000 или 6000 серийную карту. Комбинация ускорения GPU для основных элементов Office 2010 плюс AMD с тремя мониторами технология Eyefinity является мощной. Имея Excel, Word и PowerPoint на больших мониторах, каждое на его собственном мониторе, делает интеграцию данных через многочисленные приложения проще и быстрее чем когда-либо
  • Редактирование видео: это требует интенсивного использования системных ресурсов даже на высококачественных ПК. Потребительские приложения, как Adobe Premiere Elements 9, предлагают функции, ранее доступные только профессионалам. Переходы как завихрение страницы, сфера или зеркальное отражение карты все ускорены GPU. Эффекты как преломление и пульсация также ускорены GPU. Видеокарта с AMD Radeon GPU ускорит предварительный просмотр и заключительный рендеринг, делая создание видео увлекательнее и быстрее.

Источники

  1. Википедия [Электронный ресурс]: Graphics processing unit — материал из Википедии — свободной энциклопедии: Версия 753891506, сохранённая в 19:16, 9 декабря 2016. / Авторы Википедии // Википедия, свободная энциклопедия. — Электрон. дан. — Сан-Франциско: Фонд Викимедиа, 2016. — Режим доступа: https://en.wikipedia.org/wiki/Graphics_processing_unit#Dedicated_graphics_cards
  2. Wikibooks [Электронный ресурс] : Microprocessor Design GPU / Дата обращения: 17 декабря 2016 - Режим доступа: https://en.wikibooks.org/wiki/Microprocessor_Design/GPU
  3. Ubergizmo [Электронный ресурс] : GPU (Graphics Processing Unit) / Дата обращения: 17 декабря 2016 - Режим доступа: http://www.ubergizmo.com/what-is/gpu-graphics-processing-unit/
  4. Techopedia [Электронный ресурс] : Graphics Processing Unit (GPU) / Дата обращения: 17 декабря 2016 - Режим доступа: https://www.techopedia.com/definition/24862/graphics-processing-unit-gpu
  5. NVIDIA [Электронный ресурс] : What is GPU accelerated computing? / Дата обращения: 17 декабря 2016 - Режим доступа: http://www.nvidia.com/object/what-is-gpu-computing.html