接口的地址及译码
输入输出接口包含一组称为I/O端口的寄存器。为了让CPU能够访问这些I/O端口,每个I/O端口都需有自己的端口地址(或端口号)。那么在一个微型计算机系统中,如何编排这些I/O接口的端口地址,即所谓I/O端口的编址方式?常见的I/O端口编址方式有两种,一种是I/O端口和存储器统一编址,也称存储器映像(Memory-Mapping)方式:另一种是I/O端口和存储器分开单独编址,也称I/O映像(I/O-Mapping)方式。
1.I/O端口和存储器统一编址
这种编址方式,是把整个存储地址空间的一部分作为/0设备的地址空间,给每个I/O端口分配一个存储器地址,把每个I/O端口看成一个存储单元,纳入统一的存储器地址空间。CPU可以利用访问存储器的指令来访问I/O端口,使在指令系统上对存储器和I/O端口不加区别,因而不需设置专门的I/O指令。这时,存储单元和I/O端口之间的惟一区别是所占用的地址不同。
这种编址方式的优点是,由于CPU对I/O端口的访问是使用访问存储器的指令,而访问存储器的指令功能比较齐全,不仅有一般的传送指令,还有算术、逻辑运算指令,以及各种移位、比较指令等,因而可以实现直接对I/O端口内的数据进行处理,而不必采取先把数据送入CPU寄存器等步骤。这样,可以使访问I/O端口进行输入/输出的操作灵活、方便,有利于改善程序效率,提高总的输入/输出处理速度;另外,这种编址方式也可使CPU的I/O控制逻辑比较简单,其引脚数目也可以减少一些。
这种编址方式的缺点是,由于I/O端口占用了一部分存储器地址,因而使用户的存储地址空间相对减小;另外,由于利用访问存储器的指令来进行I/O操作,指令的长度通常比单独I/O指令要长,因而指令的执行时间也较长。
微处理机MC6800系列、6502系列以及MC68000系列采用这种编址方式。