Реализации отличаются во многих отношениях.Но основная идея заключается в том, что когда происходит чтение или запись для адреса памяти, микропроцессор выводит адрес на своей шине.Аппаратное обеспечение (называемое «декодер адресов») обнаруживает, что адрес предназначен для конкретного устройства ввода-вывода с отображением в памяти, и включает это устройство в качестве цели операции.
Как правило, ОС ничего не делаетспециальный.На некоторых платформах BIOS или операционной системе может потребоваться настроить определенные параметры для правильной работы оборудования.
Например, диапазон может быть установлен как не кэшируемый, чтобы предотвратить изменение порядка операций логики кэширования на устройствах.что заботиться о порядке, в котором все происходит.(Представьте себе, если одна запись сообщает аппаратному обеспечению, какую операцию выполнять, а другая запись указывает аппаратному обеспечению на запуск. Переупорядочивание может привести к катастрофическим последствиям.)
На некоторых платформах операционной системе или BIOS может потребоваться установить определенную памятьотображенные диапазоны ввода / вывода как «медленные» путем добавления состояний ожидания.Это связано с тем, что аппаратное обеспечение, являющееся целью операции, может быть не таким быстрым, как системная память.
Некоторые устройства могут разрешать операционной системе выбирать место в памяти для сопоставления устройства.Это типично для новых устройств plug-and-play на платформе ПК.
В некоторых устройствах, таких как микроконтроллеры, все это делается целиком внутри одного чипа.Запись на определенный адрес аппаратно направляется на определенный порт или регистр.Это может включать в себя регистры ввода-вывода общего назначения, которые взаимодействуют с выводами на чипе.