Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6451
Последний выпуск: 19.06.2015

Vesa 1.2

5. Окна видеопамяти в ОЗУ

Стандартная VGA система имеет 256k байтов памяти и соответствующий механизм адресации этой памяти. Super VGA и их расширенные режимы требуют более 256k байтов памяти и требуют также, чтобы адресное пространство для этой памяти было ограничено стандартным адресным пространством по причинам совместимости. Окна видеопамяти в ОЗУ обеспечивают средство доступа этого расширения памяти VGA к стандартному адресному пространству ОЗУ.

Данный раздел описывает функционирование видеоокон в некоторых аппаратных реализациях, их влияние на разработку прикладных программ и их взаимодействие с математической моделью, описанной в VESA VGA BIOS extensions.

Функции видеоокон VESA были разработаны таким образом, чтобы нестандартные и не влияющие на эффективность аппаратные функции были возложены на BIOS, а стандартные и влияющие на эффективность аппаратные функции - на прикладную программу. Этим достигается гибкость для VGA систем вместе с эффективностью за счет непосредственного доступа к аппаратуре. В частности, VESA BIOS ответственен за размещение видеопамяти в адресном пространстве ОЗУ, а прикладная программа ответственна за эффективность операций чтения и записи из самой памяти.

Эта комбинация аппаратного и программного взаимодействия дополнена средствами информирования программы о параметрах, которые управляют аппаратным механизмом адресации видеопамяти в адресном пространстве ОЗУ и, следовательно, позволяет программам управлять этой адресацией с в рамках этих параметров.

5.1 Аппаратные аспекты

5.1.1 Ограничение адресного пространства 64k/128k

Первый аспект реализации расширенной видеопамяти состоит в организации доступа к памяти из прикладных программ.

На стандартной VGA адресное пространство CPU для 16-цветных графических режимов обычно представляет собой сегмент A000h размером 64k. Тем самым обеспечивается доступ к 256k байтов стандартной VGA, т.е. 64k на слой. Доступ к расширенной видеопамяти достигается за счет размещения порций видеопамяти внутри адресного пространства CPU стандартной VGA.

Каждая аппаратная реализация Super VGA предусматривает некий механизм для задания программным обеспечением смещения относительно начала видеобуфера, которое соответствует началу адресного пространства CPU. Обеспечение доступа к размещаемой таким образом памяти требует необходимого уровня аппаратной поддержки для программ, чтобы они могли манипулировать расширенной видеопамятью.

5.1.2 Пересечение границ окон видеопамяти в ОЗУ

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

Обычно эта операция сопровождается выбором смещения начала видеопамяти в адресном пространстве ОЗУ таким образом, чтобы по крайней мере одна полная строка могла быть обработана без изменения этого смещения. В настоящее время не существует Super VGA, которые позволяли бы задавать это смещение с точностью до байта и имеется широкий разброс в возможностях Super VGA по позиционированию требуемой видеопамяти в адресном пространстве CPU.

Число байтов между двумя ближайшими байтами видеопамяти, которые могут быть размещены на некотором конкретном адресе CPU, называют зернистостью функции размещения окна. На некоторых Super VGA системах допускается размещение в начале адресного пространства CPU блоков видеопамяти с точностью до 4k, в то время, как на других лишь с точностью до 64k. Зернистость этих систем составляет соответственно 4k и 64k. Эта концепция весьма похожа на доступ к байтам в процессорах Intel при 16-битном указателе и изменении значения сегментного регистра (зернистость сегментного регистра равна здесь 16 байтам).

Отметим, что если зернистость равна размеру адресного пространства CPU (т.е. самый младший бит адреса в функции аппаратного размещения окна оказывается старше самого старшего бита в адресе CPU), то во внутреннем цикле должна выполняться проверка на пересечение с началом и концом адресного пространства. Это объясняется тем, что если длина адресного пространства (которая в данном случае равна зернистости) не делится нацело на длину строки, то строка в конце адресного пространства будет находиться в двух различных блоках памяти, которые не могут одновременно размещаться в адресном пространстве CPU.

5.1.3 Обработка данных из разных областей

Иногда требуется или желательно перемещать и комбинировать данные из двух различных областей видеопамяти. Одним из таких примеров является сохранение в видеопамяти меню за пределами высвечиваемой памяти. Это удобно, поскольку на всех VGA имеется аппаратная поддержка пересылки 32-битных видеоданных с помощью 8-битной операции чтения и записи в CPU. Если расстояние между исходным и записываемым блоками превышает размер адресного пространства CPU, то для этого следует использовать два окна, отдельно размещаемых в видеопамяти.

5.1.4 Обработка данных из двух разных окон

В предыдущем примере перемещения данных из одного окна в другое требовался доступ на чтение только к одному окну и доступ на запись только к другому. Иногда удобно иметь доступ на чтение к обоим окнам, а доступ на запись к одному. Примером этого является растровая операция, в результатом которой является логическая комбинация данных исходного и результирующего окон.

5.2 Различные типы аппаратных окон

VESA BIOS extension может поддерживать различные аппаратные реализации окон видеопамяти в CPU. Информация, в которой нуждаются прикладные программы для распознавания типов аппаратной реализации может быть получена ими из BIOS'а. Существует три основных типа реализации аппаратных окон и они описаны ниже.

Описанные ниже типы аппаратных окон не включают различий в зернистости.

Отметим также, что существуют VGA, которые используют 128k адресного пространства CPU, начиная с сегмента A000h.

5.2.1 Однооконнные системы

Некоторые аппаратные реализации предусматривают наличие только одного окна. Это единственное окно доступно как для чтения, так и для записи. Однако, это вызывает значительное снижение эффективности, когда расстояние между перемещаемыми данными превышает размер адресного пространства CPU.

5.2.2 Двухоконные системы

Во многих Super VGA предусмотрено наличие двух окон для облегчения задачи перемещения данных внутри видеопамяти. Существуют два различных метода организации таких окон.

5.2.2.1 Перекрывающиеся окна

Некоторые аппаратные реализации различают окно A и окно B, определяя попытку выполнения операции чтения или записи в CPU. Когда два окна различаются по попытке чтения или записи, они могут (и обычно используют) одно и то же адресное пространство CPU. Однако, одно окно доступно только для чтения, а другое только для записи.

5.2.2.2 Неперекрывающиеся окна

Другой механизм, используемый в двухоконных системах, основан на разделении адресов между окнами A и B в общем адресном пространстве VGA. Когда различие между окнами проводится по их адресам в общем адресном пространстве, окна не могут делить одни и те же адреса, но каждое из них доступно и для чтения, и для записи.


Предыдущая | Оглавление | Следующая

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог