Введение

Способ связи процессора с устройствами ввода/вывода

Отображение памяти (MMIO) и отображение портов (PMIO) – это два взаимодополняющих метода выполнения ввода/вывода (В/В) между центральным процессором (ЦП) и периферийными устройствами в компьютере (часто осуществляемый через чипсет). Альтернативным подходом является использование выделенных процессоров ввода/вывода, обычно известных как каналы в мэйнфреймах, которые выполняют собственные инструкции. Отображение памяти использует единое адресное пространство для адресации как основной памяти, так и устройств ввода/вывода.

Обзор

Различные методы связи между процессором и устройством, такие как отображение памяти, не влияют на прямой доступ к памяти (DMA) устройства, поскольку DMA, по определению, является методом связи между памятью и устройством, обходящим процессор. Аппаратные прерывания – это еще один метод связи между процессором и периферийными устройствами, однако по ряду причин прерывания всегда рассматриваются отдельно. Прерывание инициируется устройством, в отличие от вышеупомянутых методов, инициируемых процессором. Оно также однонаправленное, поскольку информация передается только от устройства к процессору. Наконец, каждая линия прерывания передает только один бит информации с фиксированным значением, а именно: «в устройстве на этой линии прерывания произошло событие, требующее внимания». Операции ввода-вывода могут замедлить доступ к памяти, если совместно используются адресная и шина данных. Это связано с тем, что периферийные устройства обычно значительно медленнее основной памяти. В некоторых архитектурах портный ввод-вывод (port mapped I/O) работает через выделенную шину ввода-вывода, что смягчает эту проблему. Одним из достоинств отображения памяти в ввод-вывод (memory mapped I/O) является то, что, избавляясь от дополнительной сложности, присущей портному вводу-выводу, процессору требуется меньше внутренней логики, что делает его более дешевым, быстрым, простым в производстве, энергоэффективным и компактным. Это соответствует основным принципам архитектуры с упрощенным набором команд (RISC) и также выгодно для встраиваемых систем. Другое преимущество заключается в том, что поскольку для адресации устройств используются стандартные инструкции памяти, все режимы адресации процессора доступны как для ввода-вывода, так и для памяти. Инструкции, выполняющие операции АЛУ непосредственно над операндом памяти (загрузка операнда из ячейки памяти, сохранение результата в ячейку памяти или и то, и другое), также могут использоваться с регистрами устройств ввода-вывода. В отличие от этого, инструкции портного ввода-вывода часто весьма ограничены, обычно предоставляя лишь простые операции загрузки и сохранения между регистрами процессора и портами ввода-вывода. Например, для добавления константы к регистру устройства с портным отображением потребуется три инструкции: чтение порта в регистр процессора, добавление константы к регистру процессора и запись результата обратно в порт. Поскольку 16-битные процессоры устарели и были заменены 32-битными и 64-битными в общем применении, резервирование диапазонов адресного пространства памяти для ввода-вывода стало менее проблематичным, поскольку адресное пространство процессора обычно намного больше, чем пространство, необходимое для всей памяти и устройств ввода-вывода в системе. Поэтому все чаще становится целесообразным использовать преимущества отображения памяти в ввод-вывод. Однако, даже если адресное пространство больше не является серьезной проблемой, ни один из методов отображения ввода-вывода не является универсально превосходящим другой, и будут случаи, когда использование портного ввода-вывода все еще предпочтительнее.

x86

В архитектурах на базе x86 предпочтительнее использовать ввод-вывод с отображением в память, поскольку инструкции, выполняющие ввод-вывод через порты, ограничены одним регистром: EAX, AX и AL – единственные регистры, используемые для передачи данных, а либо непосредственное значение размера байта в инструкции, либо значение в регистре DX определяет, какой порт является портом источником или портом назначения передачи.