3. 物理地址的产生
物理地址空间(Phyiscal address space)的大小从36位到MAXPHYADDR值,这个值可以由CPUID.80000008H:EAX[7:0]来查询(详情参考第4章)。MAXPHYADDR值一般都会是36位,Intel64和AMD64实现了最高为52位的物理地址。
下面是物理地址形成的示意图,logic address经过段式转换后形成linear address,当关闭paging管理时,线性地址将映射到物理地址空间。否则linear address是Virtual address(虚拟地址),需要经过页式转换形成物理地址。
关于物理地址空间,read/write的内存设备RAM(DRAM),read-only的内存设备ROM(EPROM),以及memory mapped I/O设备都可以映射到物理地址空间上。
典型的ROM设备映射到物理地址空间的高端和低端位置,处理器第1条指令的指令存放在这个ROM设备里。Video和IGD设备的buffer映射到A0000H到BFFFFH的物理地址空间上。PCIe等设备映射到物理地址空间的E0000000H位置上,I/O APIC设备映射到FEC00000H以上的位置,等等。
经过页式转换形成的物理地址,可以映射到DRAM或外部存储设备Disk上,可以实现更多的memory访问。