欢迎光临散文网 会员登陆 & 注册

外设端口是如何获得地址的

2023-03-26 17:51 作者:我爱计算机科学  | 我要投稿

计算机与外设是通过端口来交换信息的,外设的每个端口都必须有自己的地址,cpu才能找到这些端口,那么,这些端口的地址是如何得到的呢?




统一编址和独立编址最重要的区别就在于,在统一编址的时候,外设端口和内存单元完全一样,每个外设端口的地址占用一个内存单元的地址,两者不能重复,也不能区分;独立编址的时候,外设端口的地址和内存地址是分开来的,两者地址可以相同,但使用的读写命令不同。

由上图可以看出,图中的8255芯片地址是90H,91H,等等。由于8255一共四个端口,其中的A1A0用来确定具体哪个端口,而A7-A2我们则可以推出是100100,再假设A1A0就构成地址100100A1A0,也就是90H--93H。这就是端口编址的意思。

上图是8255的四个端口。

上图是8253与cpu的连接。这里8253的地址都是偶地址,因为cpu说的A0地址线一直是低电平有效,而8253的四个端口地址则由CPU的A2A1确定,也就是8253上面的A1A0确定,但要注意的是,最终的地址是以cpu的地址线为准的。

上图是8253结构图。

上面的例子都是独立编址的,因为cpu访问这些端口的指令都是IN和OUT,而不是MOVE。

对于ARM架构的处理器,都是IO与内存统一编址:

(1)类似于访问内存的方式,即把外设的寄存器当作一个内存地址来读写,从而以访问内存相同的方式来操作外设,叫IO与内存统一编址方式

(2)例如ARM架构下,我们写的代码要适应ARM架构的IO与内存统一编址的情况,所有我们访问IO的时候,也就是读写寄存器,读写硬件就是在进行IO,IO和内存一样也有个地址(内核统一编址机制已经做好代码定义),被统一化了。


也就是说。如果是统一编址,就无法在指令上去区分是内存单元还是外设端口。

无论统一还是独立编址,外设端口的地址都来源于cpu的地址线。


外设端口是如何获得地址的的评论 (共 条)

分享到微博请遵守国家法律