Видеосистема PC
Видеоподсистема компьютера является одной из самых важных и
сложных систем. Особенно активно она стала развиваться в последнее время в
условиях стремительного роста производительности ПК. В целом, состав
видеоподсистемы за последнее время изменился незначительно. Она включает в себя
устройство отображения информации, устройство формирования и преобразования
сигналов и интерфейсы соединения. Ранее эта видеосистема представляла собой
лишь преобразователь цифрового изображения, записанного в кадровый буфер, в
аналоговый видеосигнал, подаваемый на монитор и собственно сам монитор.
Безусловно, основной элемент видеоподсистемы – видеоадаптер.
В последнее время именно он развивался наиболее активно, что вызвало некоторую
путаницу в поколениях и особенностях отображения информации видеоадаптеров
различных типов. Современный
видеоадаптер – это сложное почти самостоятельное устройство, представляющее
собой мини-компьютер. Помимо своей основной задачи он способен выполнять ряд
дополнительных функций: аппаратное ускорение 2D и 3D-графики, обработку видеоданных, прием теле- и видеосигналов и
многое другое. Раньше все эти дополнительные функции реализовывались на
отдельных платах и подсоединялись к видеоадаптеру как дочерние карты или с
помощью локальных интерфейсных шин. Сейчас используется метод интеграции all-in-one, когда все эти функции реализуются в одном графическом чипе
видеоадаптера. Современный видеоадаптер значительно отличается по своему
функциональному составу от видеоадаптера VGA (о более старых речь даже не идет),
но его основное назначение осталось прежним: сканирование и цифро-аналоговое
преобразование содержимого кадрового буфера с последующим формированием
непрерывного трехканального RGB-сигнала.
Видеоадаптер, является важнейшим элементом видеосистемы,
поскольку определяет следующие ее характеристики:
·
Максимальное разрешение и частоты разверток
(также зависит от возможностей монитора)
·
Максимальное количество отображаемых цветов и
оттенков (палитра)
·
Скорость обработки и передачи видеоданных
Видеоадаптер VGA
То, что мы привыкли называть видеоадаптером, не следует
считать стандартным видеоадаптером VGA – на самом деле стандартный адаптер предназначался для IBM PC и имел шину MCA. То, что мы привыкли
использовать в современной компьютерной технике, является VGA-совместимым видеоадаптером, который
теперь принято сокращенно называть видеоадаптером
VGA.
Чтобы понять принцип работы видеоподсистемы, мы начнем ее
рассмотрение с описания видеоадаптера VGA, имеющего с современными адаптерами очень большое сходство.
Видеоадаптер VGA
содержит следующие основные элементы:
·
Графический контроллер
·
Контроллер
ЭЛТ (CRTC, Cathode Ray
Tube Controller)
·
Видеопамять
·
ROM
Video BIOS (расширение
BIOS)
·
Контроллер атрибутов
·
Секвенсор (sequencer)
·
ЦАП (цифро-аналоговый преобразователь)
или RAMDAC (RAM
Digital-to-Analog Converter)
·
Синхронизатор
·
Тактовые генераторы
·
Интерфейс
Видеоадаптер VGA
был пассивным устройством, не принимавшем участие в формировании содержимого
кадрового буфера и не обрабатывавшем микрокоманды преобразования цифровых
данных. Современный
интегрированный видеоадаптер также использует:
·
Графические акселераторы обработки двумерной и
трехмерно графики большой разрядности
·
Быстродействующую видеопамять
·
Высокоскоростные шины интерфейса
Такой видеоадаптер в последнее время часто называют видеокартой, хотя это название не совсем
правильно и неточно.
Большинство из перечисленных элементов видеоадаптера
содержат специальные регистры (8 разрядов и более), доступные центральному
процессору (CPU) для
чтения и записи данных. Эти регистры содержат конфигурационную и статусную
информацию и предназначены для управления работой соответствующих элементов
видеоадаптера. Модифицируя их содержимое, CPU может управлять работой видеоадаптера.
Помимо этих регистров, в состав элементов видеоадаптера
входят несколько специальных регистров. Выходной регистр предназначен
для задания адресов портов ввода/вывода, а также начальных адресов кадрового
буфера и выбора тактового генератора. Регистр состояния используется для
синхронизации процесса обновления кадрового буфера с сигналами обратного хода
кадровой развертки.
Все элементы, за исключением видеопамяти, Video BIOS, тактовых генераторов и
шин интерфейса реализованы в одной микросхеме. Чтобы достичь такой степени
интеграции, новейшие видеоадаптеры (Radeon 9700, GeForce FX)
используют технологию производства чипов 0,13 мкм.
Общий принцип работы видеосистемы относительно прост. Через
внешний интерфейс видеоадаптер общается с компьютером. Центральный процессор,
используя микрокоманды, записанные в Video BIOS «общается» с видеосистемой при инициализации видеокарты и ее
настроек. После обработки данных он выставляет на шину адреса портов для
обращения к видеопамяти, конфигурирует регистры видеоадаптера для настройки на
определенный режим работы, загружает данные в видеопамять и позволяет
графическому контроллеру (процессору) их обработать. Часть обработки, конечно,
возлагается на сам CPU.
Далее обработанные данные в видеопамяти поступают в секвенсор, который
обеспечивает последовательную их адресацию и передачу в контроллер атрибутов и
далее – в RAMDAC. RAMDAC
преобразует цвет пикселя в аналоговый сигнал. В это время контроллер ЭЛТ
формирует сигналы синхронизации, инкремента счетчиков, стробирования чтения и
записи видеопамяти и развертки. Эти аналоговые сигналы с RAMDAC и CRTC поступают в виде трехканального
сигнала RGB к монитору.
Недавно появилась возможность выводить цифровой сигнал через DVI, что естественно улучшает его
качество.
Для большего понимания процесса получения видеоизображения рассмотрим
каждый из этих элементов в отдельности.
Графический контроллер
Графический контроллер предназначен для управления обменом
данными между CPU и
видеопамятью, а также для выполнения элементарных преобразований этих данных.
Вместе с графическим акселератором он в современных видеоадаптерах представляет
собой графический процессор (GPU)
или видеочипсет. Этот контроллер помогает CPU осуществлять множество мелких операций, требующих
множественных пересылок между центральным процессором и видеопамятью (кадровым
буфером). Он берет на себя запись пикселей по определенному адресу, считывание
цвета пикселей, при этом выполняя простейшие логические операции «И», «ИЛИ»,
«исключающее ИЛИ» и циклические сдвиги. Также он может осуществлять поиск
пикселя в кадровом буфере. В итоге это позволяет реализовать построение
примитивов – прямых линий, окружностей и пр. Графический контроллер состоит из
10 регистров, один из которых индексный, а остальные отображены в порт 3CFh,
четырех регистров-защелок, выполняющих роль буферных
регистров при операциях чтения и записи в битовых плоскостях и АЛУ. Доступ к
графическому контроллеру осуществляется через порт 3CFh: в начале в
индексный регистр по этому адресу записывается номер выбранного регистра, а
затем уже осуществляется обращение к нему.
При обращении CPU к видеопамяти, он и «не подозревает» о ее двумерной
организации, поэтому одной из основных задач графического контроллера является
преобразование двумерных координат пикселя в одномерные, которые могут быть
помещены в регистры CPU.
Отметим, что CPU не
может обращаться к содержимому кадрового буфера, минуя регистры-защелки.
Видеопамять
Не меньшей, а то и большей по значимости в видеокарте
является видеопамять. Это один из самых больших и ответственных блоков в
видеоадаптере и от его объема и быстродействия зависят многие параметры
видеоадаптера. Видеопамять – это ОЗУ, размещенное на плате видеоадаптера и
предназначенное для хранения цифрового образа формируемого изображения.
Видеопамять также иногда называют видеобуфером или Video RAM (VRAM не тоже самое).
Часто для построения изображения также используется системное ОЗУ – такая
память называется локальной.
Объем видеопамяти определяет максимально возможное
разрешение и цветность. К примеру, при 16-цветовой палитре и разрядности 4
бита на пиксель для получения разрешения 640х480 требуется 150 Кбайт. Для
получения цветности True Color
при разрешении 1280х1024 требуется не менее 5 Мбайт видеопамяти. Если в наличии
есть удвоенное значение памяти, то можно организовать двухстраничный режим с
переключением буферов.
Как известно, размер адресного пространства определяется
разрядностью шины адреса. Изначально, 20-разрядная шина адреса IBM PC позволяла адресовать 1
Мбайт памяти, поэтому в этом диапазоне выделялся участок памяти под VGA, размером в 128 Кбайт.
Выставляя на шине адреса в диапазоне A0000h-BFFFFh,
CPU получал доступ к
кадровому буферу, таблицам загружаемых шрифтов и другим данным из локальной
памяти компьютера. После увеличения адресной шины видеоадаптера до 16 бит
появилась возможность увеличить объем видеопамяти до 1 Мбайта (использовались 4
Мбитные микросхемы с организацией 512Кх8). При
использовании 2 Мбайт видеопамяти появилась возможность работать с
32-разрядными видеочипсетами. Далее в последующем
сегменте загружается Video BIOS
по адресам C0000-C7FFFh, для VGA его объем составляет 32
Кбайт. Эта область памяти называет Shadow Memory (теневая память), которая копируется сюда из ROM Video BIOS при загрузке, если в CMOS включена соответствующая
опция.
Область видеопамяти, используемая для хранения цифрового
образа изображения. Называется кадровым буфером. Как правило, размер
кадрового буфера меньше размера видеопамяти. В графических режимах, для
реализации которых требуется более 128 Кбайт видеопамяти, линейная адресация кадрового
буфера невозможна. Для того, чтобы CPU смог обратиться к любой ячейке,
видеопамять разбивается на отдельные области, именуемые банками или
страницами. По этой технологии CPU формирует адрес в пределах допустимого диапазона,
одновременно обращаясь ко всем одинаковым ячейкам во всех банках, номер нужного
банка определяется содержимым регистров графического контроллера и секвенсора.
Перед каждым обращением к памяти содержимое этих регистров обновляется. Это
режим использовался при 16-цветном графическом режиме. Современные графические
адаптеры имеют возможность переадресации видеопамяти в область старших адресов
(выше границы 16 Мбайт). Поэтому никогда не включайте опцию Hole at 15-16M в CMOS – она предназначена для старых видеоадаптеров.
Также существует архитектура унифицированной памяти UMA (Unified Memory Architecture). При таком
подходе под видеобуфер выделяется область системного ОЗУ. Таким образом,
значительно снижается производительность не только видеосистемы, но всего
компьютера. Такой подход Intel
начала применять, выпустив чипсет i810 со встроенной графикой i752.
Video BIOS
С целью упрощения процедуру конфигурирования видеоадаптера и
разгрузки CPU все
наборы команд (микропрограмм) CPU,
реализующие графические функции. Помещаются в специальное ПЗУ (ROM), расположенное на плате
видеоадаптера. Набор этих команд принято называть видеосервисом
BIOS. Он реализуется с
помощью программного прерывания INT
10h, которое имеет
несколько десятков функций управления изображением на экране монитора.
Существует и альтернативный, более быстрый способ управления
регистрами видеоадаптера: их может изменять прикладная программа (например,
драйвер). Часто для тонкой настройки используется программа PowerStrip, которая
позволяет менять содержимое регистров контроллеров и управлять контроллером
ЭЛТ. Для видеокарт nVidia существует специализированная программа RivaTuner.
Контроллер ЭЛТ
Контроллер ЭЛТ формирует сигналы горизонтальной и
вертикальной синхронизации, сигналы инкремента счетчика адреса ячеек
видеопамяти, в которых хранится образ видеоизображения, а также стробирующие
сигналы чтения и записи в видеопамять. Эти сигналы формируются таким образом,
что движение луча по экрану ЭЛТ осуществляется синхронно с процессом
сканирования ячеек видеопамяти, причем цвет пикселя на экране соответствует
коду, содержащемуся в соответствующей ячейке кадрового буфера.
Работа контроллера ЭЛТ синхронизируется сигналами одного из
двух тактовых генераторов (Dot Clock или Pixel Clock), установленных на плате видеоадаптера. Их частоты равны
28,322 и 25,175 МГц соответственно. Выбор синхросигнала производится
программно.
Контроллер ЭЛТ имеет 26 программно управляемых регистров.
Доступ центрального процессора к регистрам контроллера ЭЛТ осуществляется через
два порта ввода/вывода. При работе видеосистемы в цветном режиме они имеют
адреса 3D4h и 3D5h, а в монохромном – 3B4h и
3B5h (для обеспечения
совместимости с программами, написанными для видеосистемы MDA). По адресу 3D4h располагается так называемый индексный (адресный) регистр, предназначенный
для управления обменом данными со всеми остальными регистрами контроллера ЭЛТ.
Индексный регистр отображается в порт 3D4h, а
все остальные регистры контроллера ЭЛТ – в порт 3D5h.
Для задания координат текущего символа или пикселя на экране
контроллер ЭЛТ имеет два счетчика: счетчик символов, определяющий
горизонтальную координату пикселя и содержащий номер текущей символьной
позиции, и счетчик строк, определяющий вертикальную координату и содержащий
номер текущей строки растра. В моменты, когда значения этих счетчиков совпадают
с числами, записанными в определенных регистрах контроллера ЭЛТ, начинают
формироваться сигналы горизонтальной и вертикальной синхронизации, а также
стробирующие сигналы чтения/записи видеопамяти. Хранящиеся в регистрах контроллера
ЭЛТ значения полностью определяют параметры растра на экране монитора:
разрешение, частоту кадров, размеры знакоместа и т.д. Смена видеорежима
реализуется путем записи в эти регистры новых значений, соответствующих
выбранному режиму.
RAMDAC
Основная задача RAMDAC – преобразование кода цвета пикселя в аналоговый сигнал.
Главным элементом RAMDAC
является трехканальный 6-разрядный ЦАП, количество каналов которого равно
количеству основных цветов. Работа ЦАП синхронизируется сигналом Dot Clock тактового генератора
видеоадаптера (по этой частоте определяется верхняя граничная частота спектра
сигнала). На входы WFG
подаются 6-разрядные коды 3 различных цветов. На выходе каждого канала ЦАП
можно получить 26 = 64 значения выходного напряжения от 0 до 0,7 В. Разрядность
ЦАП определяет количество оттенков цветов, которые потенциально может
сформировать видеоадаптер VGA.
Второй наиболее важной частью RAMDAC является RAM, оперативная память, состоящая из
256 18-разрядных регистров цвета. Регистры цвета ЦАП допускают
программное изменение своего содержимого, т.е. CPU может как
считывать, так и записывать в них данные. Благодаря этому прикладная программа
может изменять текущую палитру, частично компенсируя ее ограниченность.
Для реализации этой возможности используется устройство адресации ЦАП.
Секвенсор
Секвенсор, или указатель последовательности, предназначен
для генерации сигналов, необходимых для сканирования видеопамяти. Другими
словами, он обеспечивает последовательную адресацию и считывание содержимого ячеек
видеопамяти и передачу их содержимого в RAMDAC. Работа секвенсора синхронизуется
стробирующими сигналами, формируемыми контроллером
ЭЛТ. Кроме того, он позволяет переключаться между 8 различными таблицами
национальных шрифтов.
Синхронизатор
Как уже отмечалось, видеопамять используется двумя
устройствами: CPU при обновлении
кадрового буфера и самим видеоадаптером, точнее секвенсором при считывании
цифрового образа изображения в процессе сканирования видеопамяти, т.е. во время
хода прямого хода луча развертки. В связи с этим, на обновление кадрового
буфера остается только интервал времени, равный длительности периода гашения.
Для синхронизации обращения CPU к кадровому буферу используется синхронизатор.
Он разрешает обновление кадрового буфера только во время действия сигнала
гашения. В результате устраняется основная причина конфликтов при работе с
видеопамятью – асинхронность обращения к ней CPU и внутренних систем видеоадаптера. Также для этой цели
используется регистр состояния
Тактовые генераторы
Работа всех устройств видеоадаптера синхронизуется
сигналом Dot Clock
и производимыми им тактовыми сигналами. Частота Dot Clock равна верхней граничной
частоте выходного видеосигнала. При заданной частоте этой же частотой
определяются значения частот строчной и кадровой синхронизации. Этот генератор
имеет 2 фиксированные частоты 25,175 и 28,322 МГц. Частота сигнала Dot Clock должна соответствовать
значению полосы пропускания видеотракта подключенного к видеоадаптеру монитора.
В современных видеоадаптерах, помимо сигнала Dot Clock используется
дополнительный генератор, формирующий сигнал Memory Clock, предназначенный для синхронизации работы видеопамяти и
чипсета видеоадаптера. Частота этого сигнала может изменяться в широких
пределах, т.к. разная память имеет разную скорость быстродействия. На этой
возможности основана процедура разгона видеопамяти путем увеличения ее
пропускной способности. Примером таких программ слажат
MCLK и PowerStrip.