存储器映射输入输出 内存映射输入输出英語Memorymapped IO MMIO简称为内存映射IO以及端口映射输入输出portmapped IO PMIO也叫作独立输入输出isolated IO是PC机在中央处理器CPU和外部设备之间执行输入输出操作的两种方法这两种方法互为补充除此之外执行输入输出操作也可以使用专用输入输出处理器dedicated IO processors这通常是指大型電腦上的通道输入输出Channel IO这些专用处理器执行自有的指令集 内存映射IO不要和内存映射文件的输入输出混淆使用相同的地址总线来寻址內存和输入输出设备简称IO设备前提是IO设备上的设备内存和寄存器都已经被映射到内存空间的某个地址这样当CPU访问某个地址的时候可能是要访问某一部份物理內存也可能是要访问IO设备上的内存因此设备内存也可以通过内存访问指令来完成读写每个IO设备监测CPU的地址总线并且在发现CPU访问被分配到本设备的地址区域的时候做出响应建立数据总线和相应设备寄存器之间的连接为了实现CPU对MMIO设备的访问相应的地址空间必须给这些设备保留 并且不能再分配给系统物理内存这可以是永久保留也可以是暂时性的保留通常来说X架构都是永久保留的而在Commodore 中由于采用了IO设备和普通内存之间的堆交换技术bank switching可以做到暂时性保留 PMIO通常使用一组专门为IO设计的CPU指令来执行IO操作比如在基于x和x架构的微处理器中使用inout指令这两条指令有一些不同的形式分别用来在CPU的EAX寄存器或高位低位高位低位和IO设备的某个端口之间完成对单字节双字节四字节数据的操作比如对out指令分别有outb outw和outl IO设备有一个和内存地址空间相互独立的IO地址空间IO设备通过专用IO针脚或者专用的总线和CPU相连因为这个IO地址空间和内存地址空间相互独立所以有时候称为独立IO