内存映射IO(MMIO)

CPU的访问范围

CPU能够访问哪些位置?CPU是如何实现访问这些位置的?
CPU能够访问的资源只有两种:物理内存 (physical memory)和寄存器(register)。

物理内存 (physical memory ):这里需要注意的第一个定义 不仅仅指日常最经常说的主存(main memory),还包括了其他各种各样的ROM,比如BIOS的ROM PCIE设备上的ROM等。

寄存器register:也分为两种:内部寄存器和外设寄存器。一般来说内部寄存器指的就是CPU内部的寄存器,如EX DX寄存器等。
而外设寄存器就比较特殊了,外设寄存器一般指的是主板上除了CPU外其他位置上分部的能够让CPU直接操作以方便CPU对外部设备进行访问的寄存器,我们常说的端口Port 本质上就是指这些外设寄存器。

IO接口和port

IO接口:解决外设和主机之间的连接问题,IO interface从物理上最直观的例子就是主板上的对外接口,这些接口中的接口芯片就起到了沟通CPU和外设的功能。比如最最常见的USB 接口 PCIe接口。

IO接口为了能够实现上述的功能,其内部就需要许多的寄存器。这些寄存器根据功能大致分为三类:

  1. 控制寄存器 : CPU通过总线读写控制寄存器告知设备自己想要进行的操作
  2. 状态寄存器:设备通过状态寄存器告知CPU自己是否准备好进行操作
  3. 数据寄存器:CPU通过读写状态寄存器来决定是否将准备传送的数据放到数据寄存器中
    一次数据的传输过程中,可以发现控制寄存器只在第一步告知操作的时候用到,所以往往将控制寄存器和状态寄存区进行合并节约空间,这样就只剩下数据寄存器和控制寄存器两个了

本质上CPU对外部设备的控制就是对外设(控制器)对应的寄存器的控制。

我们平时所说的外设的端口(Port),指的就是IO接口中的能够被CPU直接访问的寄存器。

我们所说的统一编址和独立编址就是给这些Port进行编址。
IO接口包含port并且有些是直观看到的接口形态,而port指io接口中的寄存器

地址空间

前面已经详尽的讨论了CPU能够访问的位置有哪些,接下来的问题就是CPU如何访问这些位置。
一个思路就是对这些存储单元、寄存器进行“编号”。在计算机中,也确实是这样做的,只不过这种给地址单元、寄存器赋予特定“号码”的动作在计算机中被称为编址操作,而这些号码也被称为地址

对physical memory依次进行“编号”,得到的“号码”就是物理地址physical address.
物理地址最大能够达到的范围,就被称为物理地址空间physical address space

物理地址空间和位数

首先建立基础的正确认知,32位 、64位CPU中,32 64指的是CPU寄存器的位宽而并非地址线位数,而且CPU地址线位数与CPU寄存器的位宽没有任何关系!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charles Ray

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值