7.4.5.2. Интерфейс с устройствами
ввода-вывода
Микропроцессор 80386 поддерживает 8-, 16- и 32-разрядные
устройства ввода-вывода,
где ввод-вывод может быть отображен либо в 4-Гбайт пространство физических адресов памяти с использованием
обычных команд манипуляции операндами либо в 64-Кбайт пространство адресов устройств
ввода-вывода с использованием специальных команд ввода-вывода. Отображение в
пространство ввода-вывода и отображение в пространство памяти имеют три главных отличия:
Отображение в пространство памяти обеспечивает больше
гибкости по защите, чем отображение в
пространство ввода-вывода, поскольку отображенные устройства защищаются механизмом защиты и управления памятью. В
зависимости от того, в какое место
памяти отображается устройство, это устройство может быть недоступным для задачи, может быть видимо, но
защищено, или же быть полностью
доступным. Разбиение на страницы дает те же самые уровни защиты для каждой страницы в 4 Кбайт и показывает, можно или
нет выполнять запись в данную
страницу.
Селектор адреса, необходимый для выработки сигналов
выбора микросхем для
отображенных в пространство ввода-вывода устройств, обычно проще, чем для устройств, отображенных в
пространство памяти. К тому же отображенные в пространство ввода-вывода устройства находятся в 64-Кбайт пространстве,
тогда как отображенные в пространство памяти
устройства находятся в намного большем,
4-Гбайт пространстве памяти, что заставляет использовать больше адресных линий.
К отображенным в пространство памяти устройствам можно
получить доступ с
помощью любой команды МП 80386. Это позволяет эффективно программировать передачи из устройства
в память, из памяти в устройство и между двумя устройствами ввода-вывода. К отображенным в
пространство ввода-вывода устройствам можно получить доступ с помощью четырех команд: IN, INS, OUT,OUTS. Все обмены с устройствами ввода-вывода
осуществляются через регистрыAL
(8-разрядный), АХ (16-разрядный) или ЕАХ (32-разрядный). Первые 256 байт пространства ввода-вывода адресуемы прямо, а
полное 64-Кбайт пространство ввода-вывода адресуемо косвенно через
регистр DX.
Интерфейс с периферийными устройствами зависит не только
от разрядности данных,
но также и от требований устройства к сигналам, и от его места в пространстве памяти или
ввода-вывода. Независимо от того, отображено ли данное устройство в
пространство памяти или в пространство ввода-вывода, необходима селекция адреса для выработки
правильных сигналов выбора микросхем. Внутри пространства ввода-вывода или памяти устройствам
могут быть присвоены произвольные адреса. Эти адреса следует выбирать так, чтобы минимизировать
количество
необходимых адресных линий.
Процессор имеет изолированное пространство адресов
ввода-вывода, которое отличается от
физической памяти и используется для внешних 16-разрядных устройств. Адресное пространство ввода-вывода
образуют до 216 (64К) индивидуально адресуемых 8-разрядных
портов. С любыми соседними 8-разрядными портами с четным адресом можно
обращаться, как с 16-разрядным портом, а с любыми соседними 8-разрядными
портами с адресом двойного слова можно обращаться, как с 32-разрядным портом.
Это означает, что полное адресное пространство
ввода-вывода вмещает до 64К 8-разрядных портов (пронумерованных от 0 до 65535), до 32К 16-разрядных портов
(пронумерованных 0, 2, 4 и так до 65534) или 16К 32-разрядных портов (пронумерованных 0, 4, 8 и так до 65532).
Отображение в пространство памяти устройств ввода-вывода
дает гибкость в программировании. Любая команда со ссылкой в память может
использоваться для доступа к порту ввода-вывода в пространстве памяти. Доступ к
таким устройствам осуществляется
с использованием полного набора команд и всех режимов адресации для выбора требуемого устройства
ввода-вывода. Вместе с тем ссылка на отображенное в пространство памяти
устройство ввода-вывода, подобно любой другой ссылке в память, остается объектом защиты и управления доступом во время
исполнения в защищенном режиме.