IO系统之统一编址和独立编址

统一编址

统一编址是将主存地址空间分出一部分用于对I/O端口(外设)进行编址。统一编址将I/O端口映射至主存空间的某些地址上,又称为存储映射I/O(或I/O内存)方式。

优点

  • 无需专门的I/O指令,用访问主存的指令即可访问I/O端口。
  • 访问I/O端口和访问主存的指令相同,所以它的保护机制可由分段或分页存储管理来实现,而无需另外专门的保护机制。
  • 给编程提供了非常大的灵活性。任何访问内存的指令都可被用来访问位于主存空间中的I/O端口,并且所有与主存相关的寻址方式都适用于I/O端口。例如,可用MOV指令实现寄存器和I/O端口的数据传送,可用AND、OR或TEST等指令直接操作I/O接口中的控制寄存器或状态寄存器。
  • 由于外设和I/O寄存器的数目几乎不受限制,这种编制方式还便于扩大系统吞吐量,这在大型控制或数据通信系统等特殊场合很有用。

缺点

  • I/O端口使用了部分原本用于主存(通常为内存)的地址空间,导致能够使用的主存容量减少。

独立编址

独立编址是将I/O端口单独进行编址,使I/O端口和主存的地址空间相互独立。独立编址也称为“I/O端口”方式,外设寄存器位于“I/O(地址)空间”。

优点

  • I/O端口不占用主存的地址空间,不影响主存的容量。

缺点

  • CPU访问I/O端口时需使用专用的I/O指令。

操作系统对编址方式的兼容方式

对于某一既定的系统,编址方式是唯一确定的。要么是独立编址、要么是统一编址,具体采用哪一种则取决于CPU的体系结构。 如,PowerPC、m68k等采用统一编址,而X86等则采用独立编址。目前,大多数嵌入式微控制器如ARM、PowerPC等并不提供I/O空间,仅有内存空间,可直接用地址、指针访问。
对于Linux内核而言,可能用于不同的CPU,它必须考虑兼容这两种方式。于是它采用一种新的方法,将独立编址或统一编址的I/O端口通称为“I/O区域”(I/O region)。不论你采用哪种方式,都要先申请IO区域:request_resource(),并在结束时释放它:release_resource()。

参考资料

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值