Ускорение построений в интеллектуальном адаптере обеспечивается несколькими факторами. Во-первых, это сокращение объема передачи по магистрали. Во-вторых, во время работы процессора адаптера центральный процессор свободен, что ускоряет работу программ даже в однозадачном режиме. В-третьих, процессор адаптера, в отличие от процессора с самой сложной в мире системой команд — представителя семейства х86, ориентирован на выполнение меньшего количества инструкций, а потому способен выполнять их гораздо быстрее центрального. И, в-четвертых, скорость обмена данных внутри адаптера может повышаться за счет лучшего согласования обращений к видеопамяти для операций построения с процессом регенерации изображения, а также за счет расширения разрядности внутренней шины данных адаптера. В графических адаптерах конца 90-х годов широко применялась двухпортовая видеопамять VRAM и WRAM с разрядностью внутренней шины 64 бит (при 32-битной шине внешнего интерфейса). Современные адаптеры с SD-акселераторами (самые критичные к производительности памяти) строятся на памяти SGRAM (SDRAM) со 128-разрядной шиной, а в самых мощных применяется память с удвоенной частотой передачи DDR SDRAM. Правда, и здесь полная разрядность шины (но уже внутренней) может и не использоваться при малом объеме установленной видеопамяти. Разрядность шины пока дальше не увеличивают, но встречаются адаптеры и с двойной внутренней шиной, способной работать в полнодуплексном режиме.
По отношению к центральному процессору и оперативной памяти компьютера различают графические сопроцессоры и акселераторы. Графический сопроцессор представляет собой специализированный процессор с соответствующим аппаратным окружением, который подключается к шине компьютера и имеет доступ к его оперативной памяти. В процессе своей работы сопроцессор пользуется оперативной памятью, конкурируя с центральным по доступу и к памяти, и к шине. Графический акселератор работает автономно и при решении своей задачи со своим огромным объемом данных может и не выходить на системную шину. Акселераторы являются традиционной составляющей частью практически всех современных графических адаптеров. Акселераторы двумерных операций (2D-accelerators), необходимых для реализации графического интерфейса пользователя GUI (Graphic User Interface), часто называют Windows-акселераторами, поскольку их команды обычно ориентированы на функции этой популярной операционной системы. Более сложные акселераторы выполняют и трехмерные построения, их называют SD-акселераторами.
Для построения сложных трехмерных изображений графическому акселератору будет явно тесно в ограниченном объеме видеопамяти. Для обеспечения доступа к основной памяти компьютера он должен иметь возможность управления шиной (bus mastering). Специально для мощных графических адаптеров в 1996 году появился новый канал связи с памятью — AGP (Accelerated Graphic Port). Обеспечив высокую пропускную способность порта, разработчики AGP предложили технологию DIME (Direct Memory Execute). По этой технологии графический акселератор является мастером шины AGP и может пользоваться основной памятью компьютера для своих нужд при трехмерных построениях. Например, в основной памяти могут храниться текстуры, которые акселератор накладывает на трехмерные поверхности. При этом снимается ограничение на размер описания текстур, которые без AGP приходится держать в ограниченном объеме видеопамяти. На дешевое решение проблемы «тесноты» нацелена и архитектура однородной памяти UMA, которая может быть реализована с помощью AGP. Однако AGP позволяет сохранить и локальную память на графическом адаптере (видеобуфер) и расширение доступной памяти не отзывается снижением производительности.
Итак, мы рассмотрели варианты организации видеопамяти и кратко обсудили способы формирования в ней битовой карты изображения. При регенерации на выходе видеопамяти (или сдвиговых регистров) имеется некоторое количество бит, отвечающих за раскраску текущего выводимого пиксела. Количеством этих бит N определяется максимальное число цветов, присутствующих на экране С = 2N. Однако трактовать эти биты можно по-разному. При одном бите на пиксел и монохромном мониторе трактовка в принципе однозначна (светится — не светится), хотя были мониторы, допускающие реверс изображения. При двух битах на точку возможности цветного монитора, у которого можно управлять тремя цветами, используются ограниченно: монитор обеспечивает по крайней мере 8 цветов, а адаптер может выдать только 4. Для смягчения этого дисбаланса применили так называемую технику палитр (Palette). Ее суть заключается в том, что биты одного пиксела, поступающие с видеопамяти, перед выходом в интерфейс монитора проходят через некоторый управляемый преобразователь. Выход этого преобразователя имеет разрядность, поддерживаемую интерфейсом монитора, и биты видеопамяти задают номер цвета в выбранной палитре цветов. Переключив палитру (или перепрограммировав ее набор цветов), можно получить другую гамму цветов на экране, но одновременно будет присутствовать не более 2м цветов.
3. Текстовый режим
В символьном, или текстовом, режиме формирование изображения происходит несколько иначе. Если в графическом режиме (АРА) каждой точке экрана соответствует своя ячейка видеопамяти, то в текстовом режиме ячейка видеопамяти хранит информацию о символе, занимающем на экране знакоместо определенного формата. Знакоместо представляет собой матрицу точек, в которой может быть отображен один из символов определенного набора. Здесь умышленно применяется слово «точка», а не «пиксел», поскольку пиксел является сознательно используемым элементом изображения, в то время как точки разложения символа, в общем случае, программиста не интересуют. В ячейке видеопамяти хранится код символа, определяющий его индекс в таблице символов, и атрибуты символа, определяющие вид его отображения. К атрибутам относится цвет фона, цвет символа, инверсия, мигание и подчеркивание символа. Поскольку изначально в дисплеях использовали только алфавитно-цифровые символы, такой режим работы иногда сокращенно называют AN (Alpha-Numerical — алфавитно-цифровой), но чаще — TXT (text — текстовый), что корректнее: символы псевдографики, которые-широко применяются для оформления текстовой информации, к алфавитно-цифровым не отнесешь.
В текстовом режиме экран организуется в виде матрицы знакомест, образованной горизонтальными линиями LIN (Line) и вертикальными колонками COL (Column). Этой матрице соответствует аналогичным образом организованная видеопамять. Адаптер, работающий в текстовом режиме, имеет дополнительный блок — знакогенератор. Во время сканирования экрана выборка данных из очередной ячейки видеопамяти происходит при подходе к соответствующему знакоместу (рис. 4), причем одна и та же ячейка видеопамяти будет выбираться при проходе по всем строкам растра, образующим линию знакомест. Считанные данные попадают в знакогенератор, который вырабатывает построчную развертку соответствующего символа — его изображение на экране. Знакогенератор представляет собой запоминающее устройство — ОЗУ или ПЗУ. На его старшие адресные входы поступает код текущего символа из видеопамяти, а на младшие — номер текущей строки в отображаемой линии знакомест. Выходные данные содержат побитную развертку текущей строки разложения символа (в графическом режиме эти данные поступали из видеопамяти). Необходимый объем памяти знакогенератора определяется форматом знакоместа и количеством отображаемых символов. Самый «скромный» знакогенератор имеет формат знакоместа 8 х 8 точек, причем для алфавитно-цифровых символов туда же входят и межсимвольные зазоры, необходимые для читаемости текста. Поскольку в PC принято 8-битное кодирование символов, для такого знакогенератора требуется 8 х 28 = 2К 8-разрядных слов. Лучшую читаемость имеют матрицы 9 х 14 и 9 х 16 символов. Если знакогенератор выполнен на микросхеме ПЗУ, то набор отображаемых символов оказывается жестко фиксированным (в лучшем случае переключаемым, для чего может использоваться несколько выбираемых банков памяти знакогенератора). Для знакогенераторов на ПЗУ изменение таблицы символов (например, русификация) становится сложным делом. Если микросхема ПЗУ установлена в сокет, ее несложно перепрограммировать или просто заменить. Запаянная микросхема знакогенератора дополнительно осложняет эту задачу, а размещение ПЗУ внутри специализированной БИС, что случалось в малогабаритных ПК, делает ее практически невыполнимой. Когда знакогенератор выполняют на микросхеме ОЗУ, естественно, обеспечивают и режим, в котором его содержимое можно по крайней мере программно загрузить. Адаптеры с загружаемым знакогенератором русифицируются чисто программными средствами.
Как уже говорилось, каждому знакоместу в видеопамяти, кроме кода символа, соответствует еще и поле атрибутов, обычно имеющее размер 1 байт. Этого вполне достаточно, чтобы задать цвет и интенсивность воспроизведения символа и его фона. Для монохромных мониторов, допускающих всего три градации яркости, атрибуты можно трактовать иначе, формируя такие эффекты, как подчеркивание, инверсия, повышенная интенсивность и мигание символов в разных сочетаниях.
Рисунок 4. Формирование изображения в текстовом режиме