【发布时间】:2011-10-06 17:07:12
【问题描述】:
在一本书中,我读到了以下内容:
32 位处理器有 2^32 个可能的地址,而当前的 64 位处理器有 48 位地址空间
我的预期是,如果是 64 位处理器,地址空间也应该是 2^64。
所以我想知道这个限制的原因是什么?
【问题讨论】:
-
这本书一定是专门讲了AMD64架构(x86-64)的当前实现。仅使用低 48 位。不过,这不是硬件限制——所有 64 位都可用。
-
识别这本书总是一个好主意。
-
我猜物理地址线不是空闲的(你至少需要 16 个额外的 CPU 引脚)。而且我还不知道有任何硬件可以在同一处理器上用物理 RAM 芯片填充 48 位空间。当这变得可行时,我确信 AMD 会添加缺失的 16 个引脚 :)
-
甚至,
The 32-bit processors have 2^32 possible addresses不一定正确,可以存在只有 24 个“引脚”用于寻址内存的 32 位 cpu。例如。 68EC020(更便宜的 68020 版本)是 32 位 CPU,但有 24 位用于寻址内存。 -
64 位物理寻址存在一个非常现实的问题,虚拟内存页面太小。这会在每次上下文切换时产生巨大的页面目录和极其昂贵的 TLB 缓存刷新。从 4KB 页面移动到 4MB 页面是一种选择,但与当前的操作系统非常不兼容。
标签: x86-64 virtual-memory cpu-architecture