Графический процессор ( GPU ) — это специализированная электронная схема, изначально разработанная для цифровой обработки изображений и ускорения компьютерной графики , присутствующая либо как дискретная видеокарта , либо встроенная в материнские платы , мобильные телефоны , персональные компьютеры , рабочие станции и игровые консоли . После своего первоначального проектирования графические процессоры оказались полезными для неграфических вычислений, включающих в себя ошеломляюще параллельные задачи из-за их параллельной структуры . Другие неграфические применения включают обучение нейронных сетей и майнинг криптовалют .
Платы игровых автоматов использовали специализированные графические схемы с 1970-х годов. В ранних видеоигровых аппаратных средствах ОЗУ для буферов кадров было дорогим, поэтому видеочипы компоновали данные вместе, пока изображение сканировалось на мониторе. [1]
Специализированная схема смещения барреля помогала центральному процессору анимировать графику кадрового буфера для различных аркадных видеоигр 1970-х годов от Midway и Taito , таких как Gun Fight (1975), Sea Wolf (1976) и Space Invaders (1978). [2] Аркадная система Namco Galaxian в 1979 году использовала специализированное графическое оборудование , которое поддерживало цвет RGB , многоцветные спрайты и фоны тайловой карты . [3] Аппаратное обеспечение Galaxian широко использовалось в золотой век аркадных видеоигр такими игровыми компаниями, как Namco , Centuri , Gremlin , Irem , Konami , Midway, Nichibutsu , Sega и Taito. [4]
Atari 2600 в 1977 году использовал видеопереключатель, называемый адаптером телевизионного интерфейса . [5] 8-битные компьютеры Atari (1979) имели ANTIC , видеопроцессор, который интерпретировал инструкции, описывающие « список отображения » — способ отображения строк развертки на определенные растровые или символьные режимы и место хранения памяти (поэтому не было необходимости в непрерывном буфере кадров). [ необходимо пояснение ] [6] Подпрограммы машинного кода 6502 могли запускаться на строках развертки путем установки бита в инструкции списка отображения. [ необходимо пояснение ] [7] ANTIC также поддерживал плавную вертикальную и горизонтальную прокрутку независимо от ЦП. [8]
NEC μPD7220 был первой реализацией графического процессора дисплея персонального компьютера в виде единого чипа интегральной схемы с большой интеграцией (LSI) . Это позволило разработать недорогие, высокопроизводительные видеокарты, такие как от Number Nine Visual Technology . Он стал самым известным графическим процессором до середины 1980-х годов. [9] Это был первый полностью интегрированный графический процессор дисплея VLSI (очень большой интеграции) на основе металл-оксид-полупроводника ( NMOS ) для ПК, поддерживающий разрешение до 1024×1024 и заложивший основы для формирующегося рынка графики для ПК. Он использовался в ряде графических карт и был лицензирован для клонов, таких как Intel 82720, первый из графических процессоров Intel . [10] Аркадные игры Williams Electronics Robotron 2084 , Joust , Sinistar и Bubbles , выпущенные в 1982 году, содержат специальные чипы блиттера для работы с 16-цветными растровыми изображениями. [11] [12]
В 1984 году Hitachi выпустила ARTC HD63484, первый крупный графический процессор CMOS для персональных компьютеров. ARTC мог отображать разрешение до 4K в монохромном режиме. Он использовался в ряде графических карт и терминалов в конце 1980-х годов. [13] В 1985 году Amiga была выпущена с пользовательским графическим чипом, включающим блиттер для обработки растровых изображений, рисования линий и заполнения областей. Он также включал сопроцессор с собственным простым набором инструкций, который был способен манипулировать регистрами графического оборудования синхронно с видеолучом (например, для переключения палитры на каждую строку развертки, мультиплексирования спрайтов и аппаратного управления окнами) или управлять блиттером. В 1986 году Texas Instruments выпустила TMS34010 , первый полностью программируемый графический процессор. [14] Он мог выполнять код общего назначения, но имел набор инструкций, ориентированный на графику. В 1990–1992 годах этот чип стал основой ускорительных карт Windows компании Texas Instruments Graphics Architecture («TIGA») .
В 1987 году была выпущена графическая система IBM 8514. Это была одна из первых видеокарт для IBM PC-совместимых компьютеров, которая реализовала фиксированные функции 2D-примитивов в электронном оборудовании . X68000 от Sharp , выпущенная в 1987 году, использовала специальный графический чипсет [15] с палитрой из 65 536 цветов и аппаратной поддержкой спрайтов, прокрутки и нескольких игровых полей. [16] Она служила в качестве машины для разработки аркадной платы CP System от Capcom . Компьютер FM Towns от Fujitsu , выпущенный в 1989 году, поддерживал палитру из 16 777 216 цветов. [17] В 1988 году в аркадных залах были представлены первые специализированные полигональные 3D- графические платы с Namco System 21 [18] и Taito Air System. [19]
IBM представила свой фирменный стандарт отображения Video Graphics Array (VGA) в 1987 году с максимальным разрешением 640×480 пикселей. В ноябре 1988 года NEC Home Electronics объявила о создании Ассоциации стандартов видеоэлектроники (VESA) для разработки и продвижения стандарта компьютерного отображения Super VGA (SVGA) в качестве преемника VGA. Super VGA позволил графическим дисплеям достигать разрешений до 800×600 пикселей , что на 36% больше. [20]
В 1991 году компания S3 Graphics представила S3 86C911 , названный ее конструкторами в честь Porsche 911, что указывало на обещанное ею увеличение производительности. [21] 86C911 породил множество подражателей: к 1995 году все основные производители графических чипов для ПК добавили в свои чипы поддержку 2D -ускорения. [22] Ускорители Windows с фиксированными функциями превзошли дорогие графические сопроцессоры общего назначения по производительности Windows, и такие сопроцессоры исчезли с рынка ПК.
В течение 1990-х годов ускорение 2D GUI развивалось. По мере улучшения производственных возможностей рос и уровень интеграции графических чипов. Появились дополнительные интерфейсы прикладного программирования (API) для различных задач, такие как графическая библиотека WinG от Microsoft для Windows 3.x и их более поздний интерфейс DirectDraw для аппаратного ускорения 2D-игр в Windows 95 и более поздних версиях.
В начале и середине 1990-х годов 3D-графика в реальном времени стала все более распространенной в аркадных, компьютерных и консольных играх, что привело к увеличению общественного спроса на аппаратно ускоренную 3D-графику. Ранние примеры аппаратного обеспечения 3D-графики для массового рынка можно найти в игровых платах, таких как Sega Model 1 , Namco System 22 и Sega Model 2 , а также в игровых консолях пятого поколения, таких как Saturn , PlayStation и Nintendo 64. Аркадные системы, такие как Sega Model 2 и Namco Magic Edge Hornet Simulator на базе SGI Onyx в 1993 году, были способны выполнять аппаратные T&L ( преобразование, обрезка и освещение ) за годы до появления в потребительских видеокартах. [23] [24] Другим ранним примером является чип Super FX , графический чип на картридже на базе RISC, используемый в некоторых играх SNES , в частности, Doom и Star Fox . Некоторые системы использовали DSP для ускорения преобразований. Fujitsu , работавшая над аркадной системой Sega Model 2, [25] начала работать над интеграцией T&L в единое решение LSI для использования в домашних компьютерах в 1995 году; [26] Fujitsu Pinolite, первый процессор 3D-геометрии для персональных компьютеров, выпущенный в 1997 году. [27] Первым аппаратным T&L GPU на домашних игровых консолях был Reality Coprocessor для Nintendo 64 , выпущенный в 1996 году. [28] В 1997 году Mitsubishi выпустила 3Dpro/2MP , графический процессор, способный к трансформации и освещению, для рабочих станций и настольных компьютеров Windows NT ; [29] ATi использовала его для своей графической карты FireGL 4000 , выпущенной в 1997 году . [30]
Термин «GPU» был придуман Sony в отношении 32-битного графического процессора Sony (разработанного Toshiba ) в игровой консоли PlayStation , выпущенной в 1994 году. [31]
В мире ПК, заметные неудачные попытки создания недорогих 3D-графических чипов включали S3 ViRGE , ATI Rage и Matrox Mystique . Эти чипы по сути были 2D-ускорителями предыдущего поколения с прикрученными 3D-функциями. Многие из них были совместимы по выводам с чипами предыдущего поколения для простоты реализации и минимальной стоимости. Первоначально 3D-графика была возможна только с дискретными платами, предназначенными для ускорения 3D-функций (и полностью лишенными ускорения 2D-графического пользовательского интерфейса (GUI)), такими как PowerVR и 3dfx Voodoo . Однако по мере того, как производственные технологии продолжали развиваться, видео, ускорение 2D-графического пользовательского интерфейса и 3D-функциональность были интегрированы в один чип. Чипсеты Verite от Rendition были одними из первых, кто сделал это хорошо. В 1997 году Rendition сотрудничала с Hercules и Fujitsu в проекте «Thriller Conspiracy», в котором геометрический процессор Fujitsu FXG-1 Pinolite был объединен с ядром Vérité V2200 для создания видеокарты с полноценным движком T&L за несколько лет до GeForce 256 от Nvidia ; эта карта, разработанная для снижения нагрузки на центральный процессор системы, так и не вышла на рынок. [ необходима цитата ] NVIDIA RIVA 128 была одним из первых потребительских графических процессоров, в которых на одном кристалле был интегрирован 3D-процессор и 2D-процессор.
OpenGL был представлен в начале 90-х годов компанией SGI как профессиональный графический API с собственной аппаратной поддержкой 3D-растеризации. В 1994 году Microsoft приобрела Softimage , доминирующий инструмент для производства фильмов CGI, использовавшийся для ранних хитов CGI-фильмов, таких как «Парк Юрского периода», «Терминатор 2» и «Титаник». С этой сделкой пришли стратегические отношения с SGI и коммерческая лицензия библиотек OpenGL от SGI, что позволило Microsoft перенести API на ОС Windows NT, но не на предстоящий выпуск Windows '95. Хотя в то время это было малоизвестно, SGI заключила контракт с Microsoft на переход с Unix на будущую ОС Windows NT, сделка, подписанная в 1995 году, не была публично объявлена до 1998 года. В промежуточный период Microsoft тесно сотрудничала с SGI для переноса OpenGL на Windows NT. В ту эпоху у OpenGL не было стандартной модели драйвера для конкурирующих аппаратных ускорителей, чтобы конкурировать на основе поддержки более высокого уровня 3D-текстурирования и функциональности освещения. В 1994 году Microsoft анонсировала DirectX 1.0 и поддержку игр в будущей потребительской ОС Windows '95, в '95 году Microsoft объявила о приобретении британской компании Rendermorphics Ltd и модели драйвера Direct3D для ускорения потребительской 3D-графики. Модель драйвера Direct3D поставлялась с DirectX 2.0 в 1996 году. Она включала стандарты и спецификации для производителей 3D-чипов, чтобы конкурировать за поддержку 3D-текстур, освещения и Z-буферизации. ATI, которая позже была приобретена AMD, начала разработку первых графических процессоров Direct3D. Nvidia быстро перешла от неудачной сделки с Sega в 1996 году к агрессивному принятию поддержки Direct3D. В эту эпоху Microsoft объединила свои внутренние команды Direct3D и OpenGL и тесно сотрудничала с SGI, чтобы унифицировать стандарты драйверов как для промышленных, так и для потребительских аппаратных ускорителей 3D-графики. Microsoft проводила ежегодные мероприятия для производителей 3D-чипов под названием «Meltdowns», чтобы протестировать их 3D-оборудование и драйверы для работы как с Direct3D, так и с OpenGL. Именно в этот период сильного влияния Microsoft на 3D-стандарты 3D-карты ускорителей вышли за рамки простых растеризаторов и стали более мощными процессорами общего назначения, поскольку поддержка аппаратного ускорения текстурного отображения, освещения, Z-буферизации и вычислений создала современный GPU. В этот период та же команда Microsoft, которая отвечала за стандартизацию драйверов Direct3D и OpenGL, представила свой собственный дизайн Microsoft 3D-чипа под названием Talisman . Подробности этой эпохи подробно описаны в книгах: «Game of X» v.1 и v.2 Рассела Демарии, «Renegades of the Empire» Майка Драммонда, «Opening the Xbox» Дина Такахаши и «Masters of Doom» Дэвида Кушнера. Nvidia GeForce 256(также известная как NV10) была первой потребительской видеокартой с аппаратным ускорением T&L; в то время как API OpenGL обеспечивал программную поддержку для наложения текстур и освещения, первое аппаратное ускорение 3D для этих функций появилось вместе с первыми потребительскими графическими процессорами с ускорением Direct3D .
Nvidia была первой, кто выпустил чип, способный программировать затенение : GeForce 3. Каждый пиксель теперь мог быть обработан короткой программой, которая могла включать дополнительные текстуры изображения в качестве входных данных, и каждая геометрическая вершина также могла быть обработана короткой программой перед тем, как она была спроецирована на экран. Используемый в консоли Xbox , этот чип конкурировал с чипом в PlayStation 2 , который использовал специальный векторный блок для аппаратно ускоренной обработки вершин (обычно называемый VU0/VU1). Самые ранние воплощения движков выполнения шейдеров, используемые в Xbox, не были универсальными и не могли выполнять произвольный пиксельный код. Вершины и пиксели обрабатывались разными блоками, которые имели свои собственные ресурсы, при этом пиксельные шейдеры имели более жесткие ограничения (потому что они выполнялись на более высоких частотах, чем вершины). Движки пиксельного затенения на самом деле были больше похожи на высоконастраиваемый функциональный блок и на самом деле не «запускали» программу. Многие из этих различий между вершинным и пиксельным затенением не были устранены до появления унифицированной модели шейдеров .
В октябре 2002 года с появлением ATI Radeon 9700 (также известного как R300), первого в мире ускорителя Direct3D 9.0, пиксельные и вершинные шейдеры могли реализовывать циклы и длинную математику с плавающей точкой , и быстро становились такими же гибкими, как центральные процессоры, но на порядки быстрее для операций с массивами изображений. Пиксельное затенение часто используется для рельефного отображения , которое добавляет текстуру, чтобы объект выглядел блестящим, тусклым, грубым или даже круглым или выдавленным. [32]
С появлением серии Nvidia GeForce 8 и новых универсальных потоковых процессоров графические процессоры стали более обобщенными вычислительными устройствами. Параллельные графические процессоры совершают вычислительные набеги на центральный процессор, и подобласть исследований, названная вычислениями на графическом процессоре или GPGPU для вычислений общего назначения на графическом процессоре , нашла применение в таких разнообразных областях, как машинное обучение , [33] разведка нефти , научная обработка изображений , линейная алгебра , [34] статистика , [35] 3D-реконструкция и ценообразование фондовых опционов . GPGPU был предшественником того, что сейчас называется вычислительным шейдером (например, CUDA, OpenCL, DirectCompute), и фактически в некоторой степени злоупотреблял аппаратным обеспечением, обрабатывая данные, переданные алгоритмам, как текстурные карты и выполняя алгоритмы, рисуя треугольник или четырехугольник с помощью соответствующего пиксельного шейдера. [ необходимо разъяснение ] Это влечет за собой некоторые накладные расходы, поскольку такие блоки, как скан-конвертер, задействованы там, где они не нужны (да и манипуляции с треугольниками даже не являются проблемой — за исключением вызова пиксельного шейдера). [ необходимо разъяснение ]
Платформа CUDA от Nvidia , впервые представленная в 2007 году, [36] была самой ранней широко принятой моделью программирования для вычислений на GPU. OpenCL — это открытый стандарт, определенный Khronos Group , который позволяет разрабатывать код как для GPU, так и для CPU с упором на переносимость. [37] Решения OpenCL поддерживаются Intel, AMD, Nvidia и ARM, и согласно отчету Evans Data за 2011 год, OpenCL стал вторым по популярности инструментом HPC. [38]
В 2010 году Nvidia заключила партнерское соглашение с Audi для питания приборных панелей своих автомобилей, используя графический процессор Tegra для предоставления расширенной функциональности навигационным и развлекательным системам автомобилей. [39] Достижения в области технологий графических процессоров в автомобилях помогли продвинуть технологию автономного вождения . [40] Карты серии Radeon HD 6000 от AMD были выпущены в 2010 году, а в 2011 году AMD выпустила дискретные графические процессоры серии 6000M для мобильных устройств. [41] Линейка графических карт Kepler от Nvidia была выпущена в 2012 году и использовалась в картах серий 600 и 700 от Nvidia. Функция этой микроархитектуры графического процессора включала GPU boost, технологию, которая регулирует тактовую частоту видеокарты, увеличивая или уменьшая ее в соответствии с ее энергопотреблением. [42] Микроархитектура Kepler была изготовлена по 28-нм техпроцессу [ необходимо разъяснение ] .
PS4 и Xbox One были выпущены в 2013 году; они оба используют графические процессоры на основе AMD Radeon HD 7850 и 7790. [ 43] За линейкой графических процессоров Kepler от Nvidia последовала линейка Maxwell , изготовленная по тому же процессу. 28-нм чипы Nvidia были изготовлены TSMC на Тайване с использованием 28-нм процесса. По сравнению с 40-нм технологией прошлого, этот производственный процесс позволил на 20 процентов повысить производительность при меньшем потреблении энергии. [44] [45] Гарнитуры виртуальной реальности имеют высокие системные требования; производители рекомендовали GTX 970 и R9 290X или лучше на момент их выпуска. [46] [47] Карты на основе микроархитектуры Pascal были выпущены в 2016 году . Серия карт GeForce 10 относится к этому поколению графических карт. Они производятся с использованием 16-нм производственного процесса, который улучшает предыдущие микроархитектуры. [48] Nvidia выпустила одну не потребительскую карту на новой архитектуре Volta , Titan V. Изменения по сравнению с Titan XP, высокопроизводительной картой Pascal, включают увеличение количества ядер CUDA, добавление тензорных ядер и HBM2 . Тензорные ядра предназначены для глубокого обучения, в то время как высокоскоростная память — это встроенная, стекированная, низкочастотная память, которая предлагает чрезвычайно широкую шину памяти. Чтобы подчеркнуть, что Titan V не является игровой картой, Nvidia удалила суффикс «GeForce GTX», который она добавляет к потребительским игровым картам.
В 2018 году Nvidia выпустила графические процессоры серии RTX 20, которые добавили ядра трассировки лучей к графическим процессорам, улучшив их производительность при обработке световых эффектов. [49] Графические процессоры Polaris 11 и Polaris 10 от AMD производятся по 14-нм техпроцессу. Их выпуск привел к существенному увеличению производительности на ватт видеокарт AMD. [50] AMD также выпустила серию графических процессоров Vega для рынка high-end в качестве конкурента высокопроизводительным картам Pascal от Nvidia, также оснащенным HBM2, как Titan V.
В 2019 году AMD выпустила преемника своей микроархитектуры/набора инструкций Graphics Core Next (GCN). Названный RDNA, первым продуктом с ним стала серия видеокарт Radeon RX 5000. [51]
Компания объявила, что преемник микроархитектуры RDNA будет инкрементным (т. е. обновлением). AMD представила серию Radeon RX 6000 , свои видеокарты RDNA 2 с поддержкой аппаратного ускорения трассировки лучей. [52] Серия продуктов, запущенная в конце 2020 года, состояла из RX 6800, RX 6800 XT и RX 6900 XT. [53] [54] RX 6700 XT, основанная на Navi 22, была запущена в начале 2021 года. [55]
PlayStation 5 и Xbox Series X и Series S были выпущены в 2020 году; они обе используют графические процессоры на основе микроархитектуры RDNA 2 с постепенными улучшениями и различными конфигурациями графических процессоров в реализации каждой системы. [56] [57] [58]
Intel впервые вышла на рынок графических процессоров в конце 1990-х годов, но выпустила посредственные 3D-ускорители по сравнению с конкурентами того времени. Вместо того чтобы пытаться конкурировать с производителями высокого класса Nvidia и ATI/AMD, они начали интегрировать графические процессоры Intel Graphics Technology в чипсеты материнских плат, начиная с Intel 810 для Pentium III, а затем и в центральные процессоры. Они начали с процессора для ноутбуков Intel Atom «Pineview» в 2009 году, продолжив в 2010 году процессорами для настольных ПК в первом поколении линейки Intel Core и современными Pentium и Celeron. Это привело к большой номинальной доле рынка, поскольку большинство компьютеров с центральным процессором Intel также имели этот встроенный графический процессор. Они, как правило, отставали от дискретных процессоров по производительности. Intel снова вышла на рынок дискретных графических процессоров в 2022 году со своей серией Arc , которая конкурировала с текущими на тот момент картами серий GeForce 30 и Radeon 6000 по конкурентоспособным ценам. [ необходима ссылка ]
В 2020-х годах графические процессоры все чаще использовались для вычислений, включающих ошеломляюще параллельные задачи, такие как обучение нейронных сетей на огромных наборах данных, которые необходимы для больших языковых моделей . Специализированные ядра обработки на некоторых современных графических процессорах рабочих станций предназначены для глубокого обучения, поскольку они имеют значительное увеличение производительности FLOPS, используя умножение и деление матриц 4×4, что приводит к производительности оборудования до 128 TFLOPS в некоторых приложениях. [59] Ожидается, что эти тензорные ядра появятся и в потребительских картах. [ требуется обновление ] [60]
Многие компании выпускали графические процессоры под разными торговыми марками. В 2009 году [ требуется обновление ] Intel , Nvidia и AMD / ATI были лидерами по доле рынка с 49,4%, 27,8% и 20,6% долей рынка соответственно. Кроме того, графические процессоры производит Matrox [61] . Современные смартфоны в основном используют графические процессоры Adreno от Qualcomm , графические процессоры PowerVR от Imagination Technologies и графические процессоры Mali от ARM .
Современные графические процессоры традиционно используют большую часть своих транзисторов для выполнения вычислений, связанных с 3D-графикой . В дополнение к 3D-оборудованию, современные графические процессоры включают базовые возможности 2D-ускорения и кадрового буфера (обычно с режимом совместимости с VGA). Более новые карты, такие как AMD/ATI HD5000–HD7000, не имеют выделенного 2D-ускорения; оно эмулируется 3D-оборудованием. Первоначально графические процессоры использовались для ускорения интенсивной работы памяти по отображению текстур и рендерингу полигонов. Позже были добавлены блоки [ необходимо разъяснение ] для ускорения геометрических вычислений, таких как вращение и перевод вершин в различные системы координат . Последние разработки в области графических процессоров включают поддержку программируемых шейдеров , которые могут манипулировать вершинами и текстурами с помощью многих из тех же операций, которые поддерживаются центральными процессорами , методы избыточной выборки и интерполяции для уменьшения алиасинга и очень высокоточные цветовые пространства .
Несколько факторов конструкции графического процессора влияют на производительность карты для рендеринга в реальном времени, такие как размер соединительных путей при изготовлении полупроводникового устройства , частота тактового сигнала , а также количество и размер различных кэшей памяти на кристалле . На производительность также влияет количество потоковых мультипроцессоров (SM) для графических процессоров NVidia или вычислительных блоков (CU) для графических процессоров AMD или ядер Xe для дискретных графических процессоров Intel, которые описывают количество ядерных процессорных блоков на кремнии в чипе графического процессора, которые выполняют основные вычисления, как правило, работая параллельно с другими SM/CU на графическом процессоре. Производительность графического процессора обычно измеряется в операциях с плавающей точкой в секунду ( FLOPS ); графические процессоры в 2010-х и 2020-х годах обычно обеспечивают производительность, измеряемую в терафлопсах (TFLOPS). Это оценочная мера производительности, поскольку другие факторы могут влиять на фактическую скорость отображения. [62]
Большинство графических процессоров, выпущенных с 1995 года, поддерживают цветовое пространство YUV и аппаратные наложения , важные для воспроизведения цифрового видео , а многие графические процессоры, выпущенные с 2000 года, также поддерживают примитивы MPEG, такие как компенсация движения и iDCT . Это аппаратно-ускоренное декодирование видео, при котором части процесса декодирования видео и постобработки видео выгружаются на аппаратное обеспечение графического процессора, обычно называют «ускоренным видеодекодированием GPU», «декодированием видео с помощью GPU», «аппаратно-ускоренным видеодекодированием GPU» или «аппаратно-ускоренным видеодекодированием GPU».
Современные видеокарты декодируют видео высокой четкости на карте, разгружая центральный процессор. Наиболее распространенными API для декодирования видео с ускорением GPU являются DxVA для операционных систем Microsoft Windows и VDPAU , VAAPI , XvMC и XvBA для операционных систем на базе Linux и UNIX. Все, кроме XvMC, способны декодировать видео, закодированные с помощью кодеков MPEG-1 , MPEG-2 , MPEG-4 ASP (MPEG-4 Part 2) , MPEG-4 AVC (H.264 / DivX 6), VC-1 , WMV3 / WMV9 , Xvid / OpenDivX (DivX 4) и DivX 5 , в то время как XvMC способен декодировать только MPEG-1 и MPEG-2.
Существует несколько специализированных аппаратных решений для декодирования и кодирования видео .
Процессы декодирования видео, которые можно ускорить с помощью современного оборудования GPU:
Эти операции также применяются при редактировании, кодировании и перекодировании видео.
Более ранние графические процессоры могут поддерживать один или несколько API 2D-графики для ускорения 2D, таких как GDI и DirectDraw . [63]
Графический процессор может поддерживать один или несколько API 3D-графики, таких как DirectX , Metal , OpenGL , OpenGL ES , Vulkan .
В 1970-х годах термин «GPU» изначально означал графический процессор и описывал программируемый процессор, работающий независимо от центрального процессора, который отвечал за обработку и вывод графики. [64] [65] В 1994 году Sony использовала этот термин (теперь означающий графический процессор ) в отношении разработанного Toshiba графического процессора Sony для консоли PlayStation . [31] Термин был популяризирован Nvidia в 1999 году, которая позиционировала GeForce 256 как «первый в мире графический процессор». [66] Он был представлен как «однокристальный процессор с интегрированными движками преобразования, освещения, настройки/отсечения треугольников и рендеринга». [67] Конкурирующая компания ATI Technologies ввела термин « визуальный процессор » или VPU с выпуском Radeon 9700 в 2002 году. [68] AMD Alveo MA35D оснащен двумя VPU, каждый из которых использует 5-нм техпроцесс в 2023 году. [69]
В персональных компьютерах есть две основные формы графических процессоров. У каждой есть много синонимов: [70]
Большинство графических процессоров предназначены для конкретного использования: 3D-графики в реальном времени или других массовых вычислений:
Выделенные графические процессоры используют ОЗУ , выделенную для графического процессора, а не полагаясь на основную системную память компьютера. Эта ОЗУ обычно специально выбирается для ожидаемой последовательной рабочей нагрузки графической карты (см. GDDR ). Иногда системы с выделенными дискретными графическими процессорами назывались системами «DIS» в отличие от систем «UMA» (см. следующий раздел). [71]
Выделенные графические процессоры не обязательно являются съемными и не обязательно взаимодействуют с материнской платой стандартным образом. Термин «выделенный» относится к тому факту, что графические карты имеют ОЗУ, выделенную для использования картой, а не к тому факту, что большинство выделенных графических процессоров являются съемными. Выделенные графические процессоры для портативных компьютеров чаще всего подключаются через нестандартный и часто фирменный слот из-за ограничений по размеру и весу. Такие порты по-прежнему могут считаться PCIe или AGP с точки зрения их логического интерфейса хоста, даже если они физически не взаимозаменяемы со своими аналогами.
Видеокарты с выделенными графическими процессорами обычно взаимодействуют с материнской платой посредством слота расширения , такого как PCI Express (PCIe) или Accelerated Graphics Port (AGP). Обычно их можно заменить или модернизировать с относительной легкостью, предполагая, что материнская плата способна поддерживать обновление. Некоторые видеокарты все еще используют слоты Peripheral Component Interconnect (PCI), но их пропускная способность настолько ограничена, что они обычно используются только тогда, когда слот PCIe или AGP недоступен.
Такие технологии, как Scan-Line Interleave от 3dfx, SLI и NVLink от Nvidia и CrossFire от AMD, позволяют нескольким графическим процессорам одновременно рисовать изображения для одного экрана, увеличивая вычислительную мощность, доступную для графики. Однако эти технологии становятся все более редкими; большинство игр не полностью используют несколько графических процессоров, поскольку большинство пользователей не могут себе их позволить. [72] [73] [74] Несколько графических процессоров по-прежнему используются на суперкомпьютерах (например, в Summit ), на рабочих станциях для ускорения видео (одновременной обработки нескольких видео) [75] [76] [77] и 3D-рендеринга, [78] для VFX , [79] рабочих нагрузок GPGPU и для моделирования, [80] и в ИИ для ускорения обучения, как в случае с линейкой рабочих станций и серверов DGX от Nvidia, графическими процессорами Tesla и графическими процессорами Ponte Vecchio от Intel.
Интегрированные графические процессоры (IGPU), интегрированная графика , общие графические решения , интегрированные графические процессоры (IGP) или унифицированные архитектуры памяти (UMA) используют часть системной оперативной памяти компьютера, а не выделенную графическую память. IGP могут быть интегрированы в материнскую плату как часть ее набора микросхем северного моста [81] или на одном кристалле (интегральной схеме) с ЦП (например , AMD APU или Intel HD Graphics ). На некоторых материнских платах [82] IGP от AMD могут использовать выделенную память sideport: отдельный фиксированный блок высокопроизводительной памяти, выделенный для использования графическим процессором. По состоянию на начало 2007 года [обновлять]компьютеры со встроенной графикой составляли около 90% всех поставок ПК. [83] [ требуется обновление ] Они менее затратны в реализации, чем выделенная графическая обработка, но, как правило, менее производительны. Исторически интегрированная обработка считалась неподходящей для 3D-игр или графически интенсивных программ, но могла запускать менее интенсивные программы, такие как Adobe Flash. Примерами таких IGP могут служить предложения от SiS и VIA примерно 2004 года. [84] Однако современные интегрированные графические процессоры, такие как AMD Accelerated Processing Unit и Intel Graphics Technology (HD, UHD, Iris, Iris Pro, Iris Plus и Xe-LP ), могут обрабатывать 2D-графику или нетребовательную 3D-графику.
Поскольку вычисления на GPU требуют большого объема памяти, интегрированная обработка может конкурировать с CPU за относительно медленную системную оперативную память, поскольку она имеет минимальную или не имеет выделенной видеопамяти. IGP используют системную память с пропускной способностью до текущего максимума в 128 ГБ/с, тогда как дискретная графическая карта может иметь пропускную способность более 1000 ГБ/с между ее VRAM и ядром GPU. Эта пропускная способность шины памяти может ограничивать производительность GPU, хотя многоканальная память может смягчить этот недостаток. [85] Старые интегрированные графические чипсеты не имели аппаратного преобразования и освещения , но более новые включают их. [86] [87]
В системах с «Unified Memory Architecture» (UMA), включая современные процессоры AMD с интегрированной графикой, [88] современные процессоры Intel с интегрированной графикой, [89] процессоры Apple, PS5 и Xbox Series (среди прочих), ядра ЦП и блок ГП совместно используют один и тот же пул ОЗУ и адресное пространство памяти. Это позволяет системе динамически распределять память между ядрами ЦП и блоком ГП на основе потребностей в памяти (без необходимости большого статического разделения ОЗУ) и благодаря нулевым передачам копирования устраняет необходимость либо копирования данных по шине (вычисления) между физически отдельными пулами ОЗУ, либо копирования между отдельными адресными пространствами в одном физическом пуле ОЗУ, что позволяет более эффективно передавать данные.
Гибридные графические процессоры конкурируют с интегрированной графикой на рынках настольных ПК и ноутбуков начального уровня. Наиболее распространенными реализациями этого являются HyperMemory от ATI и TurboCache от Nvidia .
Гибридные графические карты несколько дороже интегрированной графики, но намного дешевле выделенных графических карт. Они разделяют память с системой и имеют небольшой выделенный кэш памяти, чтобы компенсировать высокую задержку системной оперативной памяти. Технологии PCI Express делают это возможным. Хотя эти решения иногда рекламируются как имеющие до 768 МБ оперативной памяти, это относится к тому, сколько может быть разделено с системной памятью.
Обычно используется универсальный графический процессор (GPGPU) в качестве модифицированной формы потокового процессора (или векторного процессора ), запускающего вычислительные ядра . Это превращает огромную вычислительную мощность шейдерного конвейера современного графического ускорителя в универсальную вычислительную мощность. В некоторых приложениях, требующих массивных векторных операций, это может обеспечить на несколько порядков более высокую производительность, чем обычный ЦП. Два крупнейших дискретных (см. «Выделенный графический процессор» выше) разработчика графических процессоров, AMD и Nvidia , используют этот подход в ряде приложений. И Nvidia, и AMD объединились со Стэнфордским университетом для создания клиента на базе графического процессора для проекта распределенных вычислений Folding@home для вычислений сворачивания белков. В определенных обстоятельствах графический процессор вычисляет в сорок раз быстрее, чем ЦП, традиционно используемые такими приложениями. [90] [91]
GPGPU могут использоваться для многих типов ошеломляюще параллельных задач, включая трассировку лучей . Они, как правило, подходят для высокопроизводительных вычислений, которые демонстрируют параллелизм данных для использования архитектуры SIMD с широкой векторной шириной графического процессора.
Высокопроизводительные компьютеры на базе GPU играют важную роль в крупномасштабном моделировании. Три из десяти самых мощных суперкомпьютеров в мире используют ускорение GPU. [92]
Графические процессоры поддерживают расширения API для языка программирования C , такие как OpenCL и OpenMP . Кроме того, каждый поставщик графических процессоров представил свой собственный API, который работает только с их картами: AMD APP SDK от AMD и CUDA от Nvidia. Они позволяют функциям, называемым вычислительными ядрами, работать на потоковых процессорах графического процессора. Это позволяет программам на языке C использовать возможность графического процессора работать с большими буферами параллельно, при этом по-прежнему используя центральный процессор, когда это необходимо. CUDA был первым API, который позволял приложениям на базе центрального процессора напрямую получать доступ к ресурсам графического процессора для более общих вычислений без ограничений использования графического API. [ необходима цитата ]
С 2005 года появился интерес к использованию производительности, предлагаемой графическими процессорами, для эволюционных вычислений в целом и для ускорения оценки пригодности в генетическом программировании в частности. Большинство подходов компилируют линейные или древовидные программы на хост-компьютере и передают исполняемый файл на графический процессор для запуска. Обычно преимущество в производительности достигается только при запуске одной активной программы одновременно на многих примерах задач параллельно, используя архитектуру SIMD графического процессора . [93] Однако существенное ускорение также может быть получено, если не компилировать программы, а вместо этого передавать их на графический процессор для интерпретации там. [94] Затем ускорение может быть получено либо путем одновременной интерпретации нескольких программ, либо одновременного запуска нескольких примеров задач, либо комбинацией того и другого. Современный графический процессор может одновременно интерпретировать сотни тысяч очень маленьких программ.
Внешний графический процессор — это графический процессор, расположенный вне корпуса компьютера, похожий на большой внешний жесткий диск. Внешние графические процессоры иногда используются с ноутбуками. Ноутбуки могут иметь значительный объем оперативной памяти и достаточно мощный центральный процессор (ЦП), но часто не имеют мощного графического процессора и вместо этого имеют менее мощный, но более энергоэффективный встроенный графический чип. Встроенные графические чипы часто недостаточно мощны для видеоигр или других графически интенсивных задач, таких как редактирование видео или 3D-анимация/рендеринг.
Поэтому желательно подключить графический процессор к какой-либо внешней шине ноутбука. PCI Express — единственная шина, используемая для этой цели. Порт может быть, например, портом ExpressCard или mPCIe (PCIe ×1, до 5 или 2,5 Гбит/с соответственно), портом Thunderbolt 1, 2 или 3 (PCIe ×4, до 10, 20 или 40 Гбит/с соответственно), портом USB4 с совместимостью с Thunderbolt или портом OCuLink . Эти порты доступны только на определенных ноутбуках. [95] [96] Корпуса eGPU включают собственный блок питания (PSU), поскольку мощные графические процессоры могут потреблять сотни ватт. [97]
Официальная поддержка внешних графических процессоров со стороны поставщиков набирает обороты. Важной вехой стало решение Apple поддерживать внешние графические процессоры в MacOS High Sierra 10.13.4. [98] Несколько крупных поставщиков оборудования (HP, Razer) выпустили корпуса Thunderbolt 3 eGPU. [99] [100] Эта поддержка подпитывает внедрение eGPU энтузиастами. [ необходимо разъяснение ] [101]
Графические процессоры (GPU) продолжают увеличивать потребление энергии, в то время как разработчики CPU недавно [ когда? ] сосредоточились на улучшении производительности на ватт. Высокопроизводительные GPU могут потреблять большое количество энергии, поэтому требуются интеллектуальные методы для управления потреблением энергии GPU. Такие показатели, как оценка на ватт в 3DMark2006, могут помочь определить более эффективные GPU. [102] Однако это может не в полной мере включать эффективность при типичном использовании, когда много времени тратится на выполнение менее сложных задач. [103]
В современных графических процессорах потребление энергии является важным ограничением максимальных вычислительных возможностей, которые могут быть достигнуты. Конструкции графических процессоров обычно обладают высокой масштабируемостью, что позволяет производителю размещать несколько чипов на одной видеокарте или использовать несколько видеокарт, работающих параллельно. Пиковая производительность любой системы по сути ограничена количеством потребляемой ею мощности и количеством рассеиваемого ею тепла. Следовательно, производительность на ватт конструкции графического процессора напрямую переводится в пиковую производительность системы, использующей эту конструкцию.
Поскольку графические процессоры также могут использоваться для некоторых вычислений общего назначения , иногда их производительность измеряется в терминах, также применяемых к центральным процессорам, например, в FLOPS на ватт.В 2013 году в мире было отгружено 438,3 млн графических процессоров, а прогноз на 2014 год составлял 414,2 млн. Однако к третьему кварталу 2022 года поставки интегрированных графических процессоров составили около 75,5 млн единиц, что на 19% меньше, чем в предыдущем году. [104] [ требуется обновление ] [105]
Пожалуй, самым известным из них является NEC 7220.