Графический адаптер 8514/a фирмы IBM
Вывод текстов
В адаптере 8514/A вывод текстов может осуществляться в двух режимах, которые можно условно назвать графическим и алфавитно-цифровым. В графическом режиме символы могут задаваться либо битовым образом, либо в векторном виде и могут размещаться в произвольном месте экрана. Символы, представленные битовыми образами могут, быть как монохромными, так и цветными. При выводе на экран символьной информации, так же как и при выводе изображений, допускается применение операций смешивания. Если символы представлены в виде битовых образов, предоставляется возможность их пропорционального размещения на экране. Расстояние между символами задается специальной таблицей.
Не допускается поворот символов, их усечение или какие-либо другие преобразования над ними, что предполагает необходимость использования нескольких типов шрифтов, задаваемых либо в векторном виде, либо битовыми образами. Поворот символов в форме битовых образов представляет собой трудную задачу, в связи с чем мало кто ожидает наличие такой возможности в адаптерах класса 8514/A. Что касается шрифтов в векторной форме, то они специально создаются с той целью, чтобы символы можно было поворачивать на произвольный угол и масштабировать. Отсутствие в адаптере 8514/A возможности выполнения подобных действий над символами в векторной форме является существенным недостатком и делает наличие такого представления практически не нужным.
В алфавитно-цифровом режиме весь экран разбивается на ячейки, называемые знакоместами, в которые и помещаются выводимые символы. Этот режим используется для моделирования алфавитно-цифровых дисплеев, а также для быстрого вывода текстов на экран. В один и тот же момент времени могут быть активными до четырех 256-символьных шрифтов, т.е. каждый отображаемый символ может быть выведен на экран с использованием любого из этих шрифтов. Ввиду того, что при выводе символа допускается применение операций смешивания после чего считывание символа с экрана становится невозможным, символы могут только выводиться на экран и не могут быть с него считаны.
Символы на вход адаптера поступают либо в виде пары <атрибут,код символа> (как это делается в цветном графическом адаптере - CGA) или в 4-байтовом формате IBM 3270. Использование 4-байтового формата позволяет осуществлять независимый выбор шрифта для каждого символа и обеспечивает более широкие возможности управления выводом. Для обоих форматов сами шрифты хранятся в основной памяти ПЭВМ и управление их местоположением должно осуществляться прикладной программой. Адаптер не сохраняет информацию о выводимом на экран символе. Для него вывод символа на экран представляется просто операцией рисования, в связи с чем изменение цветов символов или шрифта после вывода символа на экран не оказывает на его изображение никакого влияния. Для изменения изображения символа на экране необходимо повторно выполнить операцию вывода этого символа на экран.
Другие операции
Адаптер 8514/A обеспечивает выполнение целого ряда других операций, используемых при разработке прикладного программного обеспечения. Аппаратура позволяет выполнять операцию "вырезания" прямоугольной области изображения на экране, когда при выводе изображения на экране появляются только пикселы, лежащие внутри заданной прямоугольной области экрана. Если задан режим вырезания, при интерпретации некоторой команды, аппаратурой генерируются все пикселы определяемые значениями параметров команды, а выводятся на экран только пикселы из заданной прямоугольной области. Поэтому если такой прямоугольник мал, вывод будет осуществляться достаточно медленно. В этом случае рекомендуется задавать такие значения параметров в команде вывода, чтобы число избыточных действий по генерации пикселов сводилось к минимуму.
Функция | Назначение |
---|---|
HLINE | Провести ломаную, заданную абсолютными координатами |
HCLINE | Провести ломаную, заданную абсолютными координатами, начиная с текущей позиции на экране |
HRLINE | Провести ломаную, заданную в относительных координатах, начиная с точки, заданной абсолютными координатами |
HRCLINE | Провести ломаную, заданную в относительных координатах, начиная с точки, определяемой текущей позицией на экране |
HBAR | Начать закрашиваемую область |
HEAR | Закончить закраску области |
HRECT | Вывод закрашенного прямоугольника |
HMRK | Вывод маркера в заданной абсолютной позиции |
HCMRK | Вывод маркера в текущей позиции |
HBBW | Задание абсолютной позиции начала области, в которую будет производиться копирование |
HCBBW | Задание относительной позиции начала области, в которую будет производиться копирование |
HBBR | Задание абсолютной позиции начала копируемой области |
HBBCHN | Копирование из/в основную память |
HBBC | Копирование области дисплейной памяти в дисплейную память |
HOPEN | Инициализировать интерфейс дисплейного адаптера |
HCLOSE | Прекратить работу интерфейса дисплейного адаптера |
HCSP | Установить текущую позицию экрана в позицию, заданную абсолютными координатами |
HQCP | Запрос к адаптеру на получение координат текущей позиции |
HQDFPAL | Запрос к адаптеру на получение цветов текущей палитры |
HINIT | Инициализация буфера состояния задачи |
HSYNC | Установить параметры адаптера в соответствии со значениями из буфера состояния задачи |
HINT | Ожидание вертикального обратного хода луча |
HSMODE | Установить режим работы дисплейного адаптера |
HQMODE | Определение режима работы дисплейного адаптера |
HQMODES | Определение всех режимов, в которых может использоваться дисплейный адаптер |
HEGS | Очистка экрана |
HSGQ | Задание типа выводимой линии |
HSHS | Задание прямоугольной области вывода на экране |
HLDPAL | Загрузка цветовой палитры |
HSPAL | Сохранение цветовой палитры |
HRPAL | Восстановление цветовой палитры |
HSLPC | Сохранение образца для вывода линии |
HRLPC | Восстановление образца вывода линии |
HSBP | Управление битовыми плоскостями (маскирование, разрешение отображения) |
HQCOORD | Определение типа координат |
HSCOORD | Задание типа координат |
HESC | Прекратить работу адаптера |
HQDPS | Определить размер буфера состояния задачи |
HSMARK | Установить форму маркера |
HSPATT | Задание образца закраски |
HSPATTO | Установить точку начала закраски для текущего образца |
HSLT | Задание текущего типа линии |
HSLW | Задание текущей толщины линии |
HSCOL | Задание текущего цвета вывода |
HSBCOL | Задание текущего цвета фона |
HSMX | Режим выполнения операции вывода на экран (операции смешивания) |
HSCMP | Установить регистр сравнения цвета |
HSCS | Задание шрифта |
HCHST | Вывести текст с заданной абсолютной позиции |
HCCHST | Вывести текст, начиная с текущей позиции |
HXLATE | Назначить таблицу индексов цветов для текста |
ABLOCKMFI | Вывод символов в "алфавитно-цифровом" режиме |
ABLOCKCGA | Вывод символов в "алфавитно-цифровом" режиме в формате CGA |
AERASE | Очистка знакоместа |
ASCROLL | Скроллинг |
ACURSOR | В "алфавитно-цифровом" режиме установить позицию курсора |
ASCUR | Установить форму курсора "алфавитно-цифрового" режима |
ASFONT | Задание шрифта для "алфавитно-цифрового" режима |
AXLATE | Задание таблицы цветов символов в "алфавитно цифровом режиме |
В 16-цветном режиме при разрешении 640 x 480 в адаптере могут храниться две дисплейные страницы. В каждый момент времени на экране отображается только одна страница, хотя вывод может производиться в любую из них. Возможность хранения двух страниц в памяти адаптера обуславливается наличием механизмов разрешения/запрета записи и отображения битовых плоскостей: любой набор битовых плоскостей может быть защищен от изменения и любой набор битовых плоскостей может быть отключен при выводе содержимого дисплейной памяти на экран.
Адаптер 8514/A особенно удобно применять в тех случаях, когда для достижения различных зрительных эффектов используется маскирование битовых плоскостей. Прикладная программа может поместить в каждую из 8 битовых плоскостей отдельное изображение, а затем, используя маскирование, выводить их на экран по одному (в монохроме). В некоторых приложениях может оказаться целесообразным использовать 128-цветные изображения (для этого потребуются 7 битовых плоскостей), а в восьмой битовой плоскости могут быть размещены сообщения контекстно-зависимой подсказки. При обращении к экрану подсказки отключаются первые 7 битовых плоскостей и дается разрешение на вывод восьмой битовой плоскости. После окончания работы в режиме подсказки производятся обратные действия.
Производительность системы
Ввиду отсутствия информации об аппаратном интерфейсе адаптера, трудно установить какие действия при формировании и выводе изображения на экран выполняются аппаратурно, а какие программным путем. Поэтому оценка производительности системы является не простой задачей. Для получения информации о производительности собственно аппаратуры адаптера, были проведены измерения скорости работы системы на IBM PS/2 модели 60 с тактовой частотой 10 МГц и на PS/2 модели 80 с частотой 20 МГц. При расчете реальной производительности системы всегда необходимо учитывать наличие программного интерфейса к адаптеру 8514/A.
Скорость вывода
Для тестирования использовалась программа 8514TEST.C, доступная по сети PCTECH. Содержащиеся в этой программе тесты разработаны скорее с целью изучения работы системы, а не для измерения ее производительности. При оценке производительности системы необходимо проанализировать временные характеристики всех графических примитивов адаптера, тогда как программа 8514TEST.C может быть использована для тестирования только некоторых, хотя и наиболее распространенных, графических операций. В каждом тесте дважды выполняются одни и те же действия: в цикле без всяких задержек между командами интерфейса и в таком же цикле, только с временными задержками между командами. Тест выполнялся на моделях 60 и 80 PS/2. В результате были получены не только некоторые оценки производительности, но и выявлены некоторые аспекты взаимодействия программ интерфейса с аппаратурой адаптера.
При выполнении таких операций, когда программный интерфейс должен выполнить значительный объем подготовительной работы, выдать команду аппаратуре и, в то время как адаптер отрабатывает команду, передать управление прикладной программе, следует ожидать существенно различной производительности для этих двух типов тестов. Если подобные команды быстро следуют одна за другой, то в то время, когда адаптер отрабатывает предыдущую команду, центральный процессор PS/2 ведет подготовительные действия для выполнения следующей команды адаптера. Такой параллелизм в выполнении должен выявить увеличение производительности системы при последовательном выполнении операций по сравнению с производительностью, достигаемой при интерпретации отдельных команд дисплейного адаптера.
Ниже приводится описание использованных в процессе тестирования системы операций. Каждая операция выполнялась в четырех режимах: замена пикселов на экране соответствующими пикселами выводимого изображения, использование при выводе на экран операции XOR (исключающее ИЛИ), операции сложения и усреднения с содержимым экрана.
- Вывод горизонтальных линий. Весь экран заполнялся горизонтальными линиями. Этот тест позволяет измерить максимальную скорость вывода линий на экран.
- Вывод вертикальных линий. Весь экран заполнялся вертикальными линиями. Скорость вывода таких линий может быть примерно такой же как и скорость вывода произвольно направленных линий. Однако, можно было бы ожидать, что процесс вывода вертикальных линий оптимизируется аппаратурой адаптера. Если при выводе вертикальных и произвольно направленных линий не будут выявлены различия в скорости вывода, то из этого будет следовать, что никакие действия по оптимизации вывода вертикальных линий в аппаратуре не предусмотрены.
- Очистка экрана - закраска всего экрана одним цветом. Этот тест позволяет определить максимальную скорость обновления экрана.
- Вывод длинных произвольно направленных линий - выводится 10000 линий длиной 768 пикселов. Этот тест позволяет измерить производительность системы при выводе произвольно направленных линий и сравнить ее со скоростью вывода вертикальных линий.
- Вывод произвольно направленных линий средней длины - выводится 10000 линий длиной 40 пикселов. Использование таких линий является типичным при выполнении чертежных работ. Этот тест наиболее точно моделирует производительность системы в реальных приложениях.
- Вывод произвольно направленных коротких линий. Выводится 10000 линий, каждая длиной 4 пиксела. Этот тест позволяет оценить время, затрачиваемое интерфейсными программами на выполнение подготовительных действий для вывода линии, т.к. время, затрачиваемое адаптером на собственно вывод линии, в данном случае ничтожно мало.
- Вывод произвольных закрашенных прямоугольников - выводится 1000 закрашенных прямоугольников, что позволяет определить максимальную скорость вывода пикселов.
Для более точной оценки производительности адаптера 8514/A на ПЭВМ со встроенным адаптером VGA был разработан специализированный программный интерфейс VGALOAD.COM к VGA. Программами этого интерфейса моделируется небольшая часть функций интерфейса адаптера 8514/A применительно к VGA. Такой тест поэволяет провести сравнительный анализ адаптеров 8514/A и VGA. Отметим, что программы интерфейса VGALOAD были подготовлены так, чтобы оптимизировать по времени выполнение перечисленных выше операций. Если бы был реализован программный интерфейс полностью моделирующий набор операций 8514/A, то его производительность была бы несколько ниже производительности VGALOAD.
Результаты сравнительного анализа приведены в табл. 4 и показывают, что адаптер 8514/A существенно превосходит по своей производительности VGA: при выводе горизонтальных прямых производительность 8514/A примерно в 2 раза выше чем у VGA, а при выводе длинных произвольно направленных прямых - примерно в 100 раз. Общая производительность адаптера 8514/A при выполнениии различных операций изменяется в довольно широком диапазоне.
Все функции вывода, как это было сказано выше, тестировались в четырех режимах: изменения, XOR и суммирование с содержимым экрана, а также взятие среднего от записываемого значения и содержимого соответствующего пиксела на экране. Теоретически, скорость вывода в режиме замены должна быть примерно в два раза выше чем в остальных режимах. Отличие состоит в том, что в этих трех режимах необходимо сначала прочитать содержимое дисплейной памяти, а затем обратно записать полученное в результате выполнения операции значение в память и, следовательно, для выполнения операции требуются два обращения к памяти. На самом же деле в режиме изменения также используются два обращения к памяти. При выводе произвольно направленно прямой для замены одного пиксела в байте необходимо считать требуемый байт из памяти, модифицировать его и снова записать в память адаптера. Единственным исключением может быть случай, когда допускается маскирование памяти, что дает возможность осуществлять запись в память без предварительного чтения ее содержимого.
При выводе вертикальных линий, произвольно направленных линий, произвольных прямоугольников и закраске экрана адаптер показывает большую производительность в режиме замены. Это наблюдение согласуется с количеством требуемых обращений к памяти для различных режимов выполнения операции, хотя скорость вывода в режиме замены, ввиду необходимости выполнения подготовительных действий перед выдачей соответствующей команды адаптеру, возрастает менее чем в два раза. Во всех четырех режимах скорость вывода коротких линий примерно одинакова. Аналогичное утверждение справедливо и для линий средней длины. При этом скорость вывода линий средней длины в 10 раз выше скорости вывода коротких линий. Анализ результатов показывает, что количество линий, которые могут быть выведены за единицу времени, практически не зависит от их протяженности, а, т.к. количество пикселов в коротких линиях и линиях средней длины различается в 10 раз, то при выводе коротких линий соответственно уменьшается и производительность системы, измеренная в количестве выводимых пикселов за одну секунду.
Линейное уменьшение скорости вывода пикселов при уменьшении длины линии говорит о том, что возможности аппаратуры адаптера используются не в полной мере. В большинстве случаев, фактором, ограничивающим производительность системы является недостаточно высокая скорость функционирования программного интерфейса, вследствие чего, независимо от длины линии, система затрачивает на ее вывод примерно одно и то же время. Этот вывод подтверждается также тем наблюдением, что скорость вывода линий средней длины и коротких линий, а также длинных линий с небольшими углами наклона возрастает в два раза при переходе от модели 60 к модели 80. Т.к. скорость работы адаптера 8514/A при этом не изменяется, весь прирост производительности можно отнести за счет ускорения работы интерфейсных программ. Подытоживая сказанное выше, можно заключить, что программный интерфейс адаптера 8514/A является наиболее узким местом, ограничивающим общую производительность графической системы.
Тестирование графического адаптера VGA с использованием программного интерфейса VGALOAD не привело к каким-либо неожиданным результатам, за исключением различий в производительности при выводе горизонтальных линий, произвольных прямоугольников и очистки экрана в режиме исключающего ИЛИ. Т.к. в VGA аппаратно реализованы возможности выполнения операций в режимах замены и исключающего ИЛИ (однако, отсутствует аппаратная реализация режимов суммирования и усреднения), то в обоих этих режимах производительность системы при выполнении операций, требующих большого количества обращений к памяти, примерно одинакова. Тестирование системы не выявило каких-либо различий в производительности при выводе коротких и длинных линий, чего, собственно, и следовало ожидать, т.к. в данном случае, скорость вывода определяется не временем обращения к памяти, а эффективностью алгоритма рисования линии.