Что такое VGA и в чем разница между ним и видеокартой?

Что такое VGA и в чем разница между ним и видеокартой?

Учебники по разработке операционных систем точно определяют достижение данных экрана путем прямой записи в VGA или EGA или Super VGA, но я не понимаю, в чем реальная разница между записью по фиксированному адресу для отображения и прямой записью на видеокарту, как встроенную, так и съемную? Я просто хочу получить базовое разъяснение по поводу моей путаницы в этом вопросе

И поскольку это не такой уж простой случай с переменными в картах, интерфейсами подключения, шинами, архитектурами, системой на чипе, встроенными системами и т. д., мне сложно найти способ понять идею, стоящую за этим на 100%. Будут ли фиксированные адреса отличаться от высокопроизводительного GPU к низкопроизводительному встроенному? Почему и почему нет?

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

ДОПОЛНИТЕЛЬНО: Некоторые из этих текущих ответов говорят об использовании процессора максимально адресуемой памяти в спецификациях на 16 бит. Проблема заключается в некоторых из этих других возникающих вопросов:

1.А как насчет собственной памяти карты? Ей не нужна системная оперативная память для самих данных экрана.

2.А как быть в режимах с более высокой разрядностью? И нельзя ли не игнорировать BIOS в реальном режиме (x86) и по-прежнему адресовать память через AL?

3.Как концепция записи по фиксированному адресу останется неизменной на графическом процессоре с множеством регистров и производительностью на уровне или выше реального микропроцессора?

решение1

Технически VGA означаетВидеографическая матрица, видеостандарт 640x480, представленный в 1987 году. В то время это было относительно высокое разрешение, особенно для цветного дисплея.

ДоБыл представлен VGA, и у нас появилось несколько других графических стандартов, таких какгеркулесна котором отображался либо текст (80 строк по 25 символов), либо монохромная графика относительно высокой четкости (720x348 пикселей).

Другими стандартами того времени были CGA (Цветной графический адаптер), что также позволяло использовать до 16 цветов при разрешении до 640x200 пикселей. Результат этого будет выглядеть так:

введите описание изображения здесь

Наконец, заслуживающим внимания стандартом ПК был усовершенствованный графический адаптер (EGA), который позволял достигать разрешений до 640×350 с 64 цветами.

(Я игнорирую стандарты, не относящиеся к ПК, чтобы сделать этот текст относительно коротким. Если я начну добавлять стандарты Atari или Amiga — до 4096 цветов на тот момент! — то этот текст станет довольно длинным.)

Затем в 1987 году IBM представила компьютер PS2. Он имел несколько примечательных отличий от своих предшественников, включая новые порты для мышей и клавиатур (Раньше мыши использовали 25-контактные последовательные порты или 9-контактные последовательные порты,еслиу вас вообще была мышь); стандартные 3½-дюймовые диски и новый графический адаптер с высоким разрешением и множеством цветов.

Этот графический стандарт называлсяВидеографическая матрица. Он использовал 3-рядный 15-контактный разъем для передачи аналоговых сигналов на монитор. Этот разъем просуществовал до тех пор, пока несколько лет назад его не заменили более совершенные цифровые стандарты, такие как DVI и Display Port.

После VGA

Прогресс не остановился на стандартах VGA. Вскоре после внедрения VGA появились новые стандарты, такие как 800x600Сuper VGA (SVGA), который использовал тот же разъем. (Hercules, CGA, EGA и т. д. имели свои собственные разъемы. Вы не могли подключить монитор CGA к карте VGA, даже если вы пытались отобразить достаточно низкое разрешение).

С тех пор мы перешли на дисплеи с гораздо более высоким разрешением, но наиболее часто используемым названием остается VGA. Хотя правильными названиями были бы SVGA, XVGA, UXGA и т. д. и т. п.

введите описание изображения здесь

(Изображение предоставлено Википедией)


Другая вещь, которая называется 'VGA', это разъем DE15, используемый с оригинальной картой VGA. Этот разъем, как правило, синего цвета, не единственный способ передачи аналоговых 'сигналов VGA' на монитор, но он наиболее распространен.

Слева: DB5HD Справа: Альтернативные разъемы VGA, обычно используемые для лучшего качества) введите описание изображения здесь


Третий способ использования 'VGA' - это описание графической карты, даже если эта карта может выдавать совершенно иные разрешения, чем VGA. Использование технически неверно, или, по крайней мере, должно быть 'VGA-совместимая карта', но обычная речь не делает этой разницы.


Это оставляетзапись на VGA

Это происходит из-за того, как была разделена память на IBM XT. ЦП мог получить доступ к памяти объемом до 1 МБ (1024 КБ). Нижние 512 КБ были зарезервированы для ОЗУ, верхние 512 КБ для карт расширения, ПЗУ и т. д.

Эта верхняя область — то место, куда была сопоставлена ​​память VGA-карт. Вы могли напрямую писать в нее, и результат отображался на дисплее.

Это использовалось не только для VGA, но и для альтернатив того же поколения.

  G = Графический режим Видеопамять
  M = Видеопамять в режиме монохромного текста
  C = Видеопамять цветного текстового режима
  V = Video ROM BIOS (будет «a» в PS/2)
  a = ПЗУ платы адаптера и специализированное ОЗУ (свободное пространство UMA)
  r = Дополнительная память BIOS материнской платы PS/2 (бесплатная UMA в системах, отличных от PS/2)
  R = ПЗУ BIOS материнской платы
  b = IBM Cassette BASIC ROM (будет обозначено как «R» в IBM-совместимых устройствах)
  h = Область верхней памяти (HMA), если загружен HIMEM.SYS.

Обычная (базовая) память:   
Первые 512 КБ (или 8 фрагментов по 64 КБ).

Верхняя область памяти (UMA):

0A0000: GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
0C0000: VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0D0000: аа ...
0E0000: рр ...
0F0000: RRRRRRRRRRRRRRRRRRRRRRbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbRRRRRRRR

(Источниккарты ASCII).

решение2

Написание на «фиксированный адрес»былпо сути, запись напрямую на видеокарту. Все эти видеокарты ISA (CGA, EGA, VGA) по сути имели некоторую оперативную память (и регистры), отображенную непосредственно в память ЦП и пространство ввода-вывода.

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

Сегодня все это выглядит очень запутанным, особенно учитывая, что современные видеокарты иногда называют VGA (и они имеют сходство с «настоящими» VGA-картами 1990-х годов). Однако даже современные карты эмулируют некоторые функции этих старых разработок (вы можете загрузить DOS на большинстве современных ПК и использовать программы DOS, которые напрямую записывают в видеопамять). Конечно, сейчас все это эмулируется в прошивке видеокарты.

решение3

На самом деле разницы нет: если вы записываете по адресу видеопамяти, то оборудование направит его на видеокарту.

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

решение4

До сих пор ответы объясняли, что старые видеокарты работали, имея видеопамять, отображенную в адресное пространство процессора. Это была собственная память карты. Северный мост знает, что нужно перенаправлять запросы на эту отображенную память на устройство VGA.

Затем, вдобавок ко всему, появились многочисленные расширения и новые режимы для карт, совместимых с VGA. Это привело к созданию VESA BIOS Extensions (VBE), которые работают через int 10h. Это поддерживает базовое 2D-ускорение (BitBlt), аппаратные курсоры, двойную/тройную буферизацию и т. д. Это основной метод для полноцветного отображения при любом поддерживаемом разрешении (включая высокие разрешения). Обычно это также использовало внутреннюю память карты, а северный мост выполнял перенаправление, как в классическом VGA. Это самый простой способ использовать полноцветную/полноразмерную графику.

Далее мы рассмотрим прямой метод доступа к GPU без использования BIOS, который обеспечивает доступ к тем же функциям, что и VBE, и, возможно, к дополнительным. Мое понимание здесь довольно размыто. Я думаю, что этот интерфейс специфичен для устройства, но я совсем в этом не уверен.

Затем идет интерфейс графического процессора, который может поддерживать 3D-ускорение/вычисления GP-GPU и т. д. Для полноценного использования определенно требуются предоставленные производителем драйверы или спецификации, и зачастую даже между устройствами одного и того же производителя имеются существенные различия.

Связанный контент