Графический процессор

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

Компоненты графического процессора

История

1970-е годы

Специализированные графические схемы начали применяться на игровых автоматах с 1970-х годов. Оперативная память для кадровых буферов в раннем оборудовании была дорогой, поэтому видеочипы собирали изображение в процессе вывода на монитор[1].

Специализированная схема barrel shifter помогала ЦП анимировать графику в буфере кадров для ряда игр 1970-х годов (например, 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].

undefined

Atari 2600 (1977) применяла видеошифер Television Interface Adaptor[5]. Atari 8-bit (1979) получила видеопроцессор ANTIC, интерпретировавший специальные инструкции «display list», задающие режимы, отображаемые на каждой строке[6]. ANTIC позволял реализовывать плавную вертикальную и горизонтальную прокрутку без участия центрального процессора[7].

undefined

1980-е годы

NEC μPD7220 стал первой реализацией процессора графического вывода для персональных компьютеров на одном кристалле LSI; он лёг в основу ряда высокопроизводительных видеокарт. Это был первый полностью интегрированный VLSI графический процессор для ПК, поддерживающий разрешения до 1024×1024[8]. Его клоны создавались другими компаниями, включая Intel 82720[9].

undefined

Процессоры-блиттеры для ускорения графики применялись в автоматах Williams Electronics и других компаниях[10].[11].

Hitachi ARTC HD63484 (1984) стал первым массовым CMOS-графическим процессором для ПК, а Amiga (1985) получила кастомный чип с поддержкой блиттера и сопроцессора для работы с видеорегистрами[12].

Texas Instruments TMS34010 (1986) — первый полностью программируемый графический процессор[13].

IBM 8514 — одна из первых видеоадаптеров для ПК с аппаратной поддержкой примитивов. Sharp X68000, FM Towns и другие японские ПК конца 1980-х демонстрировали расширенные графические возможности[14].

Первое специализированное оборудование для полигональной 3D-графики появилось в аркадных автоматах Namco System 21 и Taito Air System (1988)[15].[16].

IBM представила свой графический стандарт VGA в 1987 году. В 1988 году создан консорциум VESA для развития стандарта Super VGA[17].

1990-е годы

В 1991 году S3 Graphics представила ускоритель S3 86C911, за которым последовали массовые 2D-ускорители других производителей[18].

В начале 1990-х ускорение реального времени 3D-графики становится востребованным, что привело к появлению специализированных 3D-чипов в игровых автоматах и домашних консолях (Sega Saturn, PlayStation, Nintendo 64). Аппаратное ускорение T&L появилось в Nintendo 64 Reality Coprocessor (1996) и видеокартах FireGL 4000[19].

Термин «GPU» (graphics processing unit) впервые официально использовала компания Sony для обозначения процессора своей приставки PlayStation (1994)[20].

2000-е годы

В 2002 году ATI Radeon 9700 стал первым ускорителем Direct3D 9.0, с поддержкой сложных шейдеров и операций с плавающей точкой[21].

В 2006—2007 годы появляются универсальные вычисления на GPU (GPGPU), платформы CUDA (Nvidia), OpenCL (Khronos Group), DirectCompute. Графические процессоры стали применять для машинного обучения[22], анализа изображений, линейной алгебры, статистики, 3D-восстановления, ценообразования опционов[23].

2010-е годы

В 2010 году Nvidia начала применять Tegra GPU для автомобильных мультимедийных систем (Audi)[24].

Рынок видеокарт пережил технический прорыв: AMD Radeon HD 6000, Nvidia GeForce серий Kepler, Maxwell, Pascal (28-16 нм), а также внедрение аппаратного трассирования лучей (Nvidia RTX 20, AMD Radeon RX 6000)[25].

Sony PlayStation 4 и Microsoft Xbox One (2013), PlayStation 5 и Xbox Series X/S (2020) используют графические процессоры архитектур семейства AMD Radeon.

2020-е годы

В 2020-х GPU активно используются для массовых параллельных вычислений, в частности для обучения нейронных сетей и языковые модели в искусственном интеллекте. В рабочих станциях появились тензорные ядра для глубокого обучения, достигнув производительности до сотен TFLOPS[26].

Компании-производители графических процессоров

Крупнейшими производителями GPU в XXI веке являются Intel, Nvidia и AMD/ATI Technologies; к ним также относятся Matrox, Jingjia Micro и ряд других (например, китайские производители)[27].

Технические особенности

Производительность GPU определяется топологией соединений, тактовой частотой, количеством и размером кэш-памяти, а также числом вычислительных блоков — потоковых мультипроцессоров (SM) у Nvidia, вычислительных блоков (CU) у AMD, Xe-ядра у Intel. Основной показатель — FLOPS, современные модели достигают производительности в десятки терафлопс[28].

2D-API

Ранние GPU поддерживали низкоуровневые API для ускорения 2D-графики: GDI, DirectDraw и др[29].

Формы графических процессоров

Терминология

Изначально термин «GPU» (graphics processor unit) обозначал самостоятельный программируемый процессор, отвечающий за обработку и вывод графики[30][31] После 1994 года термин прочно закрепился за специализированными микросхемами от Sony, Nvidia, AMD и др[20]. ATI использовала альтернативный термин VPU («визуальный процессор»).

В ПК различают два основных типа GPU[32]:

  • Дискретные (dedicated/discrete) графические процессоры;
  • Интегрированные (integrated/shared, IGP/UMA) решения.

Дискретный графический процессор

Используют выделенную память специального типа (чаще всего GDDR). В многопроцессорных системах (SLI, CrossFire, NVLink) несколько GPU совместно формируют изображение на одном экране, однако подобные конфигурации постепенно утрачивают популярность из-за высокой стоимости и поддержки далеко не всеми играми[33][34][35].

Тем не менее, многографические конфигурации востребованы на суперкомпьютерах (Summit), рабочих станциях для работы с видео и визуальными эффектами, также они находят применение в GPGPU-задачах, рендеринге и ИИ-обучении[36][37][38].

undefined
undefined

Встроенный графический процессор (интегрированная графика)

Интегрированные графические процессоры (IGP/UMA) используют часть системной памяти ПК либо выделенную область на материнской плате. Чаще всего встроены в чипсет (northbridge) или в одно кристалле вместе с ЦП (AMD APU, Intel HD Graphics). Интегрированные GPU в большинстве ПК (данные на 2007 год — около 90 % всех поставок)[39].

Исторически IGP не поддерживали современные игры, но современные интегрированные решения AMD и Intel справляются с 2D и некоторой 3D-графикой. Ограничения таких GPU связаны с меньшей пропускной способностью общей памяти по сравнению с выделенной памятью видеокарт[40].

Ужиная архитектура памяти (UMA) включает совместное использование ЦП и GPU общей памяти и адресного пространства (например, современные процессоры AMD, Intel, Apple, PS5, Xbox Series)[41][42].

Универсальные вычисления на GPU (GPGPU, Stream processing)

Современные GPU применяются не только для графики, но и как stream/openCL-процессоры для запуска вычислительных ядер (kernels), где при большом числе векторных операций достигается ускорение на порядки по сравнению с ЦП. Как AMD, так и Nvidia активно развивают это направление, в том числе для распределённых проектов (например, Folding@home)[43].

GPU также ускоряют высокопроизводительные вычисления — три из десяти самых мощных суперкомпьютеров мира применяют GPU-ускорители[44].

Внешние GPU (eGPU)

Для повышения графической производительности ноутбуков используются внешние корпуса (eGPU), подключаемые по шине PCI Express через специальные порты (ExpressCard, Thunderbolt, OCuLink). Внешние GPU требуют собственного блока питания[45][46].

Энергоэффективность

См. статью Производительность на ватт.

Статистика продаж

В 2013 году было отгружено 438 миллионов GPU, прогноз на 2014—414 миллионов; к третьему кварталу 2022 года поставки составили около 75,5 миллиона, что меньше на 19 % по сравнению с годом ранее[47][48].

См. также

Литература

Примечания