Аппаратные интерфейсы ПК - [209]

Шрифт
Интервал

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

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

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

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

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

В реальном режиме процессора программе доступно все пространство адресов ввода- вывода. В защищенном режиме 32-разрядных процессоров (частным случаем которого является и виртуальный режим V86) имеется возможность программного ограничения доступного пространства ввода-вывода, определяя его максимальный размер (начиная с нулевого адреса и в пределах 64 К), а внутри разрешенной области доступ может быть разрешен или запрещен для каждого конкретного адреса. Размер области и карта разрешенных портов (IO Permission Bitmap) задается операционной системой в дескрипторе сегмента состояния задачи (TSS). При обращении по неразрешенному адресу вырабатывается исключение процессора, а поведение его обработчика определяется операционной системой. Возможно снятие задачи-нарушителя (знаменитое сообщение «приложение… выполнило недопустимую операцию и будет закрыто»). Возможен и другой вариант, когда по обращению к порту монитор операционной системы выполняет некоторые действия, создавая для программы иллюзию реальной операции ввода-вывода. Таким образом виртуальная машина по операциям ввода-вывода может общаться с виртуальными устройствами. Заметим, что ОС Windows 9x не особо заботится о виртуализации и защите ввода-вывода; здесь, например, из DOS-окна можно обращаться к любым портам, даже к портам устройств, занятых операционной системой.

12.5.4. Прерывания

В процессорах х86 используются аппаратные прерывания, программные прерывания и исключения. Аппаратные прерывания были описаны выше; кроме того, к ним относится и специфичное (и неиспользуемое прикладными программами) прерывание >SMI для входа в режим системного управления (SMM). Программные прерывания по сути прерываниями и не являются — это лишь короткая форма дальнего вызова ограниченного количества процедур, выполняемая инструкцией >Int N (N=0-255). Программные прерывания, в частности, используются для вызовов сервисов BIOS и DOS. Исключения генерируются процессором и сопроцессором, когда при исполнении инструкций возникают особые условия (например, деление на ноль или срабатывание защиты). Исключения занимают векторы прерываний 0-31, которые частично пересекаются с векторами аппаратных прерываний ведущего контроллера и NMI, а также с векторами сервисов BIOS. В процессорах 8086/88 исключения назывались внутренними прерываниями, их было совсем мало. По мере «взросления» процессоров добавлялись новые исключения; исключениями особо богаты современные процессоры при работе в защищенном режиме. На исключениях строится защита и виртуальная память в многозадачных ОС защищенного режима.


Рекомендуем почитать
Удаление предустановленной Windows 8

На первый взгляд процедура удаления Windows 8 ничем не отличается от вполне обычного форматирования винчестера с последующей установкой системы. К сожалению, все гораздо сложней.


Программируем Arduino. Профессиональная работа со скетчами.

Arduino — стандартный микроконтроллер, получивший широкое признание у инженеров, мастеров и преподавателей благодаря своей простоте, невысокой стоимости и большому разнообразию плат расширения. Платы расширения, подключаемые к основной плате Arduino, позволяют выходить в Интернет, управлять роботами и домашней автоматикой.Простые проекты на основе Arduino не вызывают сложностей в реализации. Но, вступив на территорию, не охваченную вводными руководствами, и увеличивая сложность проектов, вы быстро столкнетесь с проблемой нехватки знаний — врагом всех программистов.Эта книга задумана как продолжение бестселлера «Programming Arduino: Getting Started with Sketches».


Работаем на нетбуке. Начали!

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


1001 совет по обустройству компьютера

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


Элементы схемотехники цифровых устройств обработки информации

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


Wi-Fi: Все, что Вы хотели знать, но боялись спросить

Жизнь современного человека — это движение. Мобильность для нас становится одним из самых важных моментов для работы, для общения, для жизни. Многие из нас сейчас уже не представляют жизнь без сотовых телефонов, которые из средства роскоши превратились в предмет, без которого жизнь современного человека стала просто немыслима. Многие уже оценили все преимущества Bluetooth, GPRS. Эти устройства превратили наши телефоны из средств связи в незаменимых помощников в работе. К сожалению, один из самых главных недостатков этих беспроводных технологий — малый радиус действия и низкая скорость передачи данных, что сейчас становится очень важным фактором для всех нас.