Видеокарта

Эта статья прошла проверку экспертом
Материал из «Знание.Вики»
Видеокарта Gigabyte GTX 970

Видеокарта, также называемая видеоадаптером — это устройство, которое управляет выводом графики в компьютере. Процессор вычисляет данные, передает их на видеокарту и преобразует данные таким образом, чтобы монитор или проектор могли воспроизводить все в виде изображения. Видеокарты могут быть подключены к материнской плате через систему шин (PCIe, ранее также PCIE и VLB, AGP или ISA), либо включены в один из компонентов материнской платы, например, в набор микросхем или в главный процессор (CPU) как часть SoC.

Основные компоненты современных видеокарт — графический процессор, графическая память[1], RAMDAC и порты для внешних устройств (например, для монитора или графического планшета). Чтобы отличить отдельную видеокарту от интегрированной, они также называются «dGPU» для выделенных и «iGPU» для интегрированных графических процессоров. На рынке также есть внешние видеокарты, которые обычно обозначаются как «eGPU» (от английского external GPU). Но не стоит путать графический процессор и видеокарту, хотя термин графический процессор часто используется в качестве ссылки на видеокарту.

История

Apple II — первый компьютер с отдельным видеочипом

Принцип видеокарты был впервые применен на микрокомпьютере Apple II[2], графические возможности которого можно было улучшить за счет дополнительных подключаемых карт.

Первый IBM PC был выпущен в 1981 году с картой[3], которая позволяла отображать текст только в сплошном цвете (MDA = адаптер для монохромного отображения). Компания Hercules разработала лучшую карту в 1982 году — графическую карту Hercules.

К 1989 году типы цветных видеокарт стали стандартом, который IBM вновь выпустила на рынок:

MDA IBM — первая в истории видеокарта

Компания IBM установила отраслевые стандарты вплоть до PC / AT, которые были приняты индустрией комбинированных систем IBM-PC. Временно режим VGA (640×480 точек в 16 цветах) используется на некоторых компьютерах, поскольку до этого времени программное обеспечение могло управлять аппаратным обеспечением видеокарт ПК единообразно. Однако распространены и более новые стандарты, такие как режимы, стандартизированные Ассоциацией стандартов видеоэлектроники (VESA) (реализованные как расширения VESA BIOS) или UEFI GOP (протокол графического вывода), которые обычно поддерживают режимы с более высоким разрешением и большим количеством цветов, но в большинстве случаев по-прежнему включают режим VGA. Другие обозначения SVGA, XGA и т. д. Больше не являются стандартами видеокарт, а представляют собой краткие обозначения разрешения экрана, например, XGA с разрешением 1024 × 768 точек.

Примерно до 1990 года видеокарты ограничивались преобразованием содержимого графической памяти в выходные сигналы для монитора с помощью модуля RAMDAC[4]. По сути, программист мог использовать только текстовый режим, а в графическом режиме он мог настраивать отдельные пиксели на определённый цвет. Это было первое поколение видеокарт. За ним последовали ещё два: так называемые ускорители Windows и 3D-ускорители.

Программное ускорение

Начиная с 1991 года, видеокарты были преобразованы в автономные небольшие вычислительные блоки с собственным графическим процессором (GPU)[5], получившим название Graphics- или Pixel Engine, или dt. Этот графический процессор был создан для размещения отдельных пикселей и отправки команд для рисования линий, заливки поверхностей (Windows Accelerator). Эта функция значительно ускорила перемещение окон (Windows) графического пользовательского интерфейса. Концепция дополнительных функций получила дальнейшее развитие, например с 1995 года были разработаны функции ускорения воспроизведения видео (например, в формате AVI) и декодирования сжатых видеоданных (например, MPEG). Эти функции ранее предлагались на отдельных присоединяемых платах.

Аппаратное ускорение

3dfx Voodoo 2 (Diamond Monster 3D II, 12MB)

В середине 1990-х годов 3Dfx выпустила первый жизнеспособный 3D-ускоритель — графический чип Voodoo Graphics. 3D-ускоритель позволяет программе в трехмерном пространстве определять геометрические фигуры в виде многоугольников и текстур, которыми должны быть заполнены поверхности многоугольников (рендеринг). Данная задача по-прежнему требовала от процессора больших вычислительных ресурсов в ранних 3D-играх; теперь её можно передать на видеокарту, что значительно повысило производительность игр (лучшее разрешение изображения, более реалистичная графика).

Когда первые 3D-ускорители первого поколения были установлены на собственные подключаемые платы, через которые передавался графический сигнал 2D-видеокарты, то вскоре появились решения объединяющие 2D и 3D функции на одной плате.

Сегодня технология с несколькими графическими процессорами используется для производства двух или более 3D-видеокарт и видеокарт с несколькими графическими процессорами соответственно.

Принцип работы

Видеокарта с интерфейсом PCI Express

Обычно используемый интерфейс видеокарт — PCI Express[6]. Ранее также были распространены ISA, локальная шина VESA, PCI и AGP. Эти интерфейсы представляют собой либо системы шин, либо прямые соединения (AGP, PCI Express), которые соединяют контроллер шины с видеокартой. Поскольку спецификация интерфейсов в основном осуществляется заинтересованными организациями, в которых участвуют как контроллеры, так и видеокарты, соответственно. С некоторыми интерфейсами в прошлом были проблемы, которые ограничивали совместимость. Например, быстрая запись AGP на GP (на платформах Intel это могло повысить производительность, вызвать нестабильность платформы AMD) или проблемы PCI (возможные сбои, зависания или сбои в работе чаще всего являются причиной проблем).

На быстрых внешних интерфейсах таких как Thunderbolt и USB-C, также доступны внешние видеокарты[7]. Обычно они называются eGPU для английского языка external Graphics Processing Unit.

Графическая память

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

Графическая память определяла максимальную глубину цвета и разрешение изображения. Однако пользователю было легко рассчитать объём памяти, необходимый для получения желаемого разрешения и глубины цвета: например, если нужно разрешение 1600 × 1200 с глубиной 24 бита (истинный цвет), сначала вычислите количество точек изображения этого разрешения (всего 1600 по горизонтали и 1200 по вертикали = 1 920 000 пикселей). Глубина цвета «24 бита» означает, что для каждого из этих пикселей имеется 24 бита информации о цвете. В результате количество пикселей умножается на глубину цвета (1 920 000 24 бита = 46 080 000 бит). Теперь требуется только преобразование в байты. Байт состоит из 8 бит, число делится на 8 (46 080 000 байт ÷ 8 = 5 760 001 байт). Поскольку первые видеокарты обычно поставлялись с 4 или 8 МБ графической памяти, для желаемой настройки потребовалась бы видеокарта с объёмом графической памяти не менее 8 МБ.

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

С помощью графического процессора рассчитывается выходной сигнал на экране монитора. Первые 3D-ускорители появились в начале 1990-х годов. Эти графические процессоры были способны самостоятельно выполнять некоторые эффекты и алгоритмы на основе треугольников (такие как Z-буферизация, отображение текстур, среди прочего) и сглаживание. Помимо этого, дополнительные к установленным подключаемым картам (например, 3dfx Voodoo Graphics) способствовали ускорению развития.

Графические процессоры превосходят по вычислительной мощности процессоры, потому что они специализируются на графических вычислениях. Для сравнения, количество транзисторов графического процессора Nvidia (Geforce 8800GTS 512, 754 миллиона) сопоставимо с количеством транзисторов модели Intel (Core 2 Extreme QX9650, 820 миллионов).

Программные графические интерфейсы

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

На многих операционных системах между программами и оборудованием существует уровень абстракции, называемый драйверами устройств. Нет необходимости напрямую обращаться к оборудованию, но из-за различий между видеокартами это привело бы к высокой специализации и большим затратам на программирование для поддержки многих видеокарт. Поскольку драйверы видеокарт также могут предлагать различные функции, со временем были разработаны различные графические API для облегчения доступа к этим функциям. OpenGL, DirectDraw, Direct3D и Quartz — наиболее известные из них. Они позволяют программистам легко и независимо просматривать 2D-графику с видеокарты. DirectX и Quartz интерфейсы не обязательно предполагают аппаратные 3D-возможности видеокарты. Старые 3D-приложения, которые работают на компьютерах с встроенной графикой или простой картой, могут работать относительно медленно или быть менее привлекательными по внешнему виду.

Примечания

WLW Checked Off icon.svg Данная статья имеет статус «готовой». Это не говорит о качестве статьи, однако в ней уже в достаточной степени раскрыта основная тема. Если вы хотите улучшить статью — правьте смело!