30

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

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

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

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

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

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

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

4 ответа4

65

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

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

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

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

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

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

Этот графический стандарт назывался Video Graphics Array. Для передачи аналоговых сигналов на монитор использовался 3-рядный 15-контактный разъем. Этот разъем просуществовал до нескольких лет назад, когда его заменили превосходные цифровые стандарты, такие как DVI и порт дисплея.

После VGA

Прогресс не остановился на стандартах VGA. Вскоре после введения VGA возникли новые стандарты, такие как 800x600 S 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 = Graphics Mode Video RAM
  M = Monochrome Text Mode Video RAM
  C = Color Text Mode Video RAM
  V = Video ROM BIOS (would be "a" in PS/2)
  a = Adapter board ROM and special-purpose RAM (free UMA space)
  r = Additional PS/2 Motherboard ROM BIOS (free UMA in non-PS/2 systems)
  R = Motherboard ROM BIOS
  b = IBM Cassette BASIC ROM (would be "R" in IBM compatibles)
  h = High Memory Area (HMA), if HIMEM.SYS is loaded.

Conventional (Base) Memory:   
First 512KB (or 8 chunks of 64KiB). 

Upper Memory Area (UMA):

0A0000: GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
0B0000: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
0C0000: VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0D0000: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0E0000: rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
0F0000: RRRRRRRRRRRRRRRRRRRRRRRRbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbRRRRRRRR

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

10

Запись по "фиксированному адресу" - это, по сути, запись непосредственно на видеокарту. Все эти видеокарты ISA (CGA, EGA, VGA) по существу имели некоторый объем ОЗУ (и регистров), отображаемый непосредственно в память ЦП и пространство ввода / вывода.

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

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

3

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

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

2

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .