购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 x86处理器的物理地址空间

现在看来,INTEL x86处理器的演进过程实际上分为三个阶段。第一个阶段是16位处理器,如8086和80286;第二个阶段是IA-32架构,从80386开始,此后生产了众多型号的32位处理器,并最终形成一个具有代表性的体系和架构。第三个阶段就是从IA-32架构上扩展出x64架构,这也是我们这本书的内容。

这一节的目标是了解处理器的地址空间,而处理器的地址空间由处理器的地址线数量决定,但需要明确的是,处理器的地址线数量与处理器架构无关,这就好比是你有两条腿和两只眼睛,和你是男是女没有关系。

还需要明确的是,在任何时候,程序可以访问的物理内存数量与架构有关,因为程序访问内存需要用段地址和有效地址,但处理器架构决定了段地址的长度和有效地址的长度。

我们已经学过保护模式的课程,回忆一下,8086有20根地址线,最多可以访问1MB字节的物理内存;80286处理器有24根地址线,最多可以访问16MB的物理内存;80386处理器有32根地址线,可以发出32位的物理地址,访问4GB的物理内存。

在80386的时代,4GB内存是非常大的,但是随着时间的推移和技术的进步,4GB内存慢慢变得不足。所以后来的处理器陆续拥有36根、40根和52根地址线。

36根地址线最多可以访问64GB的物理内存,这很容易算出来。那么40根地址线呢?答案是1TB;而52根地址线则最多可以访问4PB的物理内存。在这里出现了TB和PB这两个单位,基本的换算关系是

你可能会问,为什么不干脆安装64根地址线呢?我们现在还生产不出64根地址线可以访问的那么多物理内存,技术进步是渐进的,产品的普及总是落后于技术发展速度的。跑得太快既用不上,还增加制造成本,市场也不容易接受。而且较少的地址线可以节省占用的芯片面积,少集成一些用于寻址的晶体管。

那么,如何知道处理器的物理地址位数呢?你可以把处理器取出来数一数。但是,如果想要编写程序获取物理地址的数位,该怎么办呢?我们可以通过执行CPUID指令,用功能号0x80000008来获取:

CPUID指令执行后,处理器用寄存器EAX的位0到位7,也就是低字节,返回物理地址的位数。 PUzS6tKW7QxkgO0H9VJhHXMq34oUMLODaKUW4QHSTZWnpvl6EZKYQDnNW+Sfxqmq

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开