Введение
Прежде, чем стать изображением на мониторе, двоичные цифровые данные обрабатываются центральным процессором, затем через шину данных направляются в видеоадаптер, где они обрабатываются и преобразуются в аналоговые данные и уже после этого направляются в монитор и формируют изображение. Сначала данные в цифровом виде из шины попадают в видеопроцессор, где они начинают обрабатываться. После этого обработанные цифровые данные направляются в видеопамять, где создается образ изображения, которое должно быть выведено на дисплее. Затем, все еще в цифровом формате, данные, образующие образ, передаются в RAMDAC, где они конвертируются в аналоговый вид, после чего передаются в монитор, на котором выводится требуемое изображение.
Таким образом, почти на всем пути следования цифровых данных над ними производятся различные операции преобразования, сжатия и хранения. Оптимизируя эти операции, можно добиться повышения производительности всей видеоподсистемы. Лишь последний отрезок пути, от RAMDAC до монитора, когда данные имеют аналоговый вид, нельзя оптимизировать.
Рассмотрим подробнее этапы следования данных от центрального процессора системы до монитора.
1. Скорость обмен данными между CPU и графическим процессором напрямую зависит от частоты, на которой работает шина, через которую передаются данные. Рабочая частота шины зависит от чипсета материнской платы. Для видеоадаптеров оптимальными по скорости являются шина PCI и AGP. При существующих версиях чипсетов шина PCI может иметь рабочие частоты от 25Mhz до 66MHz, иногда до 83Mhz (обычно 33MHz) , а шина AGP работает на частотах 66MHz и 133MHz.
Чем выше рабочая частота шины, тем быстрее данные от центрального процессора системы дойдут до графического процессора видеоадаптера.
2. Ключевой момент, влияющий на производительность видеоподсистемы, вне зависимости от специфических функций различных графических процессоров, это передача цифровых данных, обработанных графическим процессором, в видеопамять, а оттуда в RAMDAC. Самое узкое место любой видеокарты - это видеопамять, которая непрерывно обслуживает два главных устройства видеоадаптера, графический процессор и RAMDAC, которые вечно перегружены работой. В любой момент, когда на экране монитора происходят изменения (иногда они происходят в непрерывном режиме, например движение указателя мыши, мигание курсора в редакторе и т.д.) , графический процессор обращается к видеопамяти. В то же время, RAMDAC должен непрерывно считывать данные из видеопамяти, чтобы изображение не пропадало с экрана монитора. Поэтому, чтобы увеличить производительность видеопамяти, производители применяют различные технические решения. Например, используют различные типы памяти, с улучшенными свойствами и продвинутыми возможностями, например VRAM, WRAM, MDRAM, SGRAM, или увеличивают ширину шины данных, по которой графический процессор или RAMDAC обмениваются информацией с видеопамять, используя 32 разрядную, 64 разрядную или 128 разрядную видеошину.
Чем более высокое разрешение экрана используется и чем больше глубина представления цвета, тем больше данных требуется передать из графического процессора в видеопамять и тем быстрее данные должны считываться RAMDAC для передачи аналогового сигнала в монитор. Нетрудно заметить, что для нормальной работы видеопамять должна быть постоянно доступна для графического процессора и RAMDAC, которые должны постоянно осуществлять чтение и запись.
В нормальных условиях доступ RAMDAC к видеопамяти на максимальной частоте возможен лишь после того, как графический процессор завершит обращение к памяти (операцию чтения или записи) , т.е. RAMDAC вынужден дожидаться, когда наступит его очередь обратиться с запросом к видеопамяти для чтения и наоборот.
Архитектура простейших видеоадаптеров
АРХИТЕКТУРА ВИДЕОАДАПТЕРА CGA
Видеоадаптер построен на основе микросхемы Motorola 6845 или ее аналога. Микросхема содержит контроллер ЭЛТ, управляющий форматом экрана, курсором, световым пером и цветовыми характеристиками изображения. Адаптер CGA имеет 16Кбайт видеопамяти, память доступна процессору c адреса B800:0000h. В некоторых режимах память разделена на несколько страниц.
В ТЕКСТОВОМ режиме, отображаемая информация записывается в виде двухбайтовых слов. Младшее слово содержит ASCII код символа, старшее - атрибуты:
· бит 7 - мигание символа или интенсивность фона,
· 6..4 - цвет фона,
· 3 - интенсивность символа,
· 2..0 - цвет символа.
Каждому слову соответствует определенная позиция на экране. При формировании изображения содержимое видеопамяти считывается и преобразуется знакогенератором в двумерный графический эквивалент символа. Таблицы знакогенератора недоступны процессору.
В ГРАФИЧЕСКОМ режиме в видеопамяти хранится информация о каждом пикселе изображения. Информация и содержимом строк с четными и нечетными номерами хранится в разных областях памяти (четные строки с адреса B800:0000h, нечетные - B800:2000h).
В режимах 4 и 5 (320*200) на одну точку отводится два бита. В режиме 6 (640*200) - один; левому верхнему углу соответствуют старшие биты младшего байта области видеопамяти.
В адаптере "HERCULES" видеопамять, в графическом режиме 720*348, поделена на четыре части. Строки изображения последовательно чередуясь выбираются из областей памяти: B800:0000h, B800:2000h, B800:4000h, B800:6000h.
АРХИТЕКТУРА ВИДЕОАДАПТЕРОВ EGA И VGA.
Условно в структуре видеоадпреров можно выделить шесть блоков:
1 Видеопамять. Размер видеопамяти может достигать 256Кбайт и больше. Физически память состоит из четырех блоков, называемых СЛОЯМИ. Слои памяти с точки зрения процессора располагаются в одном и том же адресном пространстве.
2 Графический контроллер. Обеспечивает связь процессора со слоями видеопамяти. Может выполнять над поступившими данными операции И, ИЛИ, ИСКЛ.ИЛИ, ЦИКЛ.СДВИГ. Операция выполняется над поступившим байтом и регистрами-защелками, хранящими результат последнего обращения к буферу.
3 Последовательный преобразователь. Формирует поток битов для отображения на экране ЭЛТ.
4 Контроллер ЭЛТ. Генерирует сигналы управления ЭЛТ, формирует курсор, обслуживает световое перо и осуществляет вертикальную свертку (скроллинг) содержимого экрана.
5 Контроллер атрибутов. Управляет цветом. Значениям цветовых атрибутов ставится в соответствие определенный цвет при помощи таблицы цветовой палитры (Color Lock-up Table). В адаптере VGA по значению цвета далее выбирается один из регистров цифроаналогового преобразователя, который и формирует аналоговый RGB сигнал.
6 Синхронизатор. Осуществляет синхронизацию работы устройств видеоадаптера и управляет непосредственной записью информации в цветовые слои.
Структура видеопамяти
В ТЕКСТОВОМ режиме для кодирования символа используются два байта. ASCII код символа располагается в нулевом цветовом слое, его атрибуты - в первом. Таблица знакогенератора хранится во втором цветовом слое. При непосредственном доступе к памяти байты нулевого и первого цветовых слоев чередуются в адресном пространстве, что обеспечивает совместимости с CGA.
Размер второго цветового слоя позволяет загрузить сразу несколько таблиц знакогенератора. Активными могут быть одновременно две таблицы, что позволяет отображать 512 различных символа. Текущая таблица определяется одним из битов атрибутов символа. Для описания одного символа отводится 32 байта таблицы знакогенератора.
Формат байта атрибутов символа, в целом, совпадает с форматом, принятым для CGA, но бит 3 может использоваться для указания одной из двух активных таблиц знакогенератора.
В ГРАФИЧЕСКОМ режиме использование слоев зависит от установленной разрешающей способности.
РЕГИСТРЫ ВИДЕОАДАПТЕРОВ EGA И VGA
Программирование видеоадаптеров на уровне регистров повышает скорость работы программ, но могут возникнуть проблемы с переносом созданного ПО на другой компьютер в связи с неполным соответствием регистров адаптеров различных фирм по их набору, структуре и расположению в адресном пространстве.
Современные адаптеры эмулируют регистры адаптеров более низкого уровня.
Доступ к большинству регистров осуществляется в два этапа: вначале через один порт указывается номер выбираемого регистра; затем через другой порт выполняется обмен. Такое решение позволяет сократить число портов. Многие регистры доступны только по записи, что приводит к неудобствам в мультизадачных системах. При работе с конкретным видеоадаптером необходимо ознакомиться с соответствующей документацией.
ПРИМЕЧАНИЕ: Далее приведено назначение некоторых регистров адаптеров EGA и VGA.
Внешние регистры
Управляют работой видеоадаптера в целом. Адресуются непосредственно по адресам своих портов.
MOR (Miscellaneous Output Register) - Регистр определения режима работы.
7 - полярность сигнала вертикальной синхронизации (0+, 1-);
6 - полярность сигнала горизонтальной синхронизации (0+, 1-);
5 - используется для перекомпоновки слоев в различные адреса памяти (для текстового режима =1);
4 - =1 дисплей управляется дополнительным устройством;
3..2 - управление тактовой частотой:
00 - 640 или 320 столбцов, 10 - внешний генератор,
01 - 720 столбцов, 11 - резерв.
1 - =0 доступ к видеопамяти запрещен;
0 - выбор диапазона адресов регистров FCR, ISR1 и контроллера ЭЛТ: =0 3Bxh, =1 3Dxh.
FCR (Feature Control Register) - Регистр управления дополнительным устройством. Биты D1, D0 регистра передаются на разъем дополнительного устройства FC1, FC0. Бит D3 =0.
ISR0 (Input Status Register 0) - Регистр состояния 0.
7 - обратный ход кадровой развертки (генерируется прерывание IRQ2);
6..5 - значение выходных линий FEAT1, FEAT0 дополнительного устройства;
4 - значение бита переключателя на плате EGA, номер бита соответствует значениям битов 3..2 регистра MOR. Для VGA бит определяет какой дисплей используется (монохромный или цветной);
3..0 - не используются.
ISR1 (Input Status Register 1) - Регистр состояния 1.
7..6 - не используются;