Аппаратные интерфейсы ПК

         

Инструкции ввода-вывода


Для обращения программы к пространству ввода-вывода предназначены всего четыре инструкции процессора: IN (ввод из порта в регистр процессора), OUT (вы­вод в порт из регистра процессора), INS (ввод из порта в элемент строки памяти) и OUTS (вывод элемента из строки памяти в порт). Последние две инструкции, появившиеся с процессором 80286, могут использоваться с префиксом повтора REP, что обеспечивает быструю пересылку блоков данных между портом и памя­тью. Обмен данными с портами, при котором применяют строковые инструкции ввода-вывода, получил название PIO(Programmed Input/Output — программиро­ванный ввод-вывод). Скорость такого обмена превышает скорость стандартного канала прямого доступа (DMA), правда, DMA в отличие от PIO почти не занимает процессорного времени.

474       Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

Разрядность слова, передаваемого за одну инструкцию ввода-вывода, может со­ставлять 8, 16 или 32 бита. В зависимости от «выровненности» адреса по границе слова и разрядности данных используемой шины это слово может передаваться за один или несколько циклов шины с указанием соответствующего нарастающего адреса в каждом цикле обращения к памяти. Инструкции ввода-вывода порожда­ют шинные циклы обмена, в которых вырабатываются сигналы чтения порта/за­писи в порт. На шине ISA это сигналы IORD* и IOWR* соответственно; они и отли­чают пространство ввода-вывода от пространства памяти, где соответствующие операции чтения и записи вырабатывают сигналы MEMRD* и MEMWR*. На шине PCI разделение памяти и пространства ввода-вывода происходит иначе — здесь тип операции кодируется четырехбайтной командой, в зависимости от типа ин­струкции, выполняемой процессором.

Во избежание недоразумений и для экономии шинных циклов рекомендуется выравнивать адреса 16-битных портов по границе слова, а 32-битных — по грани­це двойного слова. Обращения по выровненным адресам выполняется за один цикл системной шины. Обращение по невыровненным адресам выполняется за несколько циклов, причем однозначная последовательность адресов обращений (которая зависит от модели процессора) не гарантируется.
Так, например, одна инструкция вывода слова по нечетному адресу приведет к генерации двух смеж­ных шинных циклов записи. При программировании обращений следует учиты­вать специфику устройств ввода-вывода. Если, например, устройство допускает только 16-разрядные обращения, то старший байт его регистров будет доступен лишь при вводе-выводе слова по четному адресу.

Некоторую сумятицу в стройную систему адресации вводят регистры AT А. Здесь регистр 1FO (1 канал) является 16-битным регистром данных, но в то же время есть и совершенно независимый от него 8-битный регистр 1F1. В Serial ATA эта тема развита — здесь имеются еще четыре 16-битных регистра с адресами (относи­тельно базового адреса блока командных регистров) 2, 3, 4 и 5, которые раньше были 8-битными.

В реальном режиме процессора программе доступно все пространство адресов ввода-вывода. В защищенном режиме 32-разрядных процессоров (частным случаем ко­торого является и виртуальный режим V86) имеется возможность программного ограничения доступного пространства ввода-вывода, определяя его максималь­ный размер (начиная с нулевого адреса и в пределах 64 К), а внутри разрешенной области доступ может быть разрешен или запрещен для каждого конкретного ад­реса. Размер области и карта разрешенных портов (Ю Permission Bitmap) задает­ся операционной системой в дескрипторе сегмента состояния задачи (TSS). При обращении по неразрешенному адресу вырабатывается исключение процессора, а поведение его обработчика определяется операционной системой. Возможно снятие задачи-нарушителя (знаменитое сообщение «приложение... выполнило недо­пустимую операцию и будет закрыто»). Возможен и другой вариант, когда по об­ращению к порту монитор операционной системы выполняет некоторые действия, создавая для программы иллюзию реальной операции ввода-вывода. Таким обра­зом виртуальная машина по операциям ввода-вывода может общаться с виртуаль-

12.5. Процессоры х86________________________________________________ 475

ными устройствами. Заметим, что ОС Windows 9x не особо заботится о виртуа­лизации и защите ввода-вывода; здесь, например, из DOS-окна можно обращать­ся к любым портам, даже к портам устройств, занятых операционной системой.


Содержание раздела