linux 中的 IO 端口映射和 IO 内存映射
(CPU)地址空间
(一)地址的概念
1)物理地址:CPU 地址总线传来的地址,由硬件(电路)控
制其具体含义。物理地址中很大一部分是留给内存条中的内存的,
但也常被映射到其他存储器上(如显存、B(IOS)等)。在程序指
令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这
个物理地址被放到 CPU 的地址线上。
物理地址空间,一部分给物理(RAM)(内存)用,一部分给
总线用,这是由硬件设计来决定的,因此在 32bits 地址线的 x86
处理器中,物理地址空间是 2 的 32 次方,即 4GB,但物理 RAM 一
般不能上到 4GB,因为还有一部分要给总线用(总线上还挂着别的
许多设备)。在 PC 机中,一般是把低端物理地址给 RAM 用,高端
物理地址给总线用。
2)总线地址:总线的地址线或在地址周期上产生的信号。外设
使用的是总线地址,CPU 使用的是物理地址。
物理地址与总线地址之间的关系由系统的设计决定的。在 x86
平台上,物理地址就是总线地址,这是因为它们共享相同的地址空
间——这句话有点难理解,详见下面的“独立编址”。在其他平台上,
可能需要转换/映射。比如:CPU 需要访问物理地址是 0xfa000 的
单元,那么在 x86 平台上,会产生一个 PCI 总线上对 0xfa000 地
址的访问。因为物理地址和总线地址相同,所以凭眼睛看是不能确
定这个地址是用在哪儿的,它或者在内存中,或者是某个卡上的存
评论0
最新资源