Intel 64位x86 CPU,四级页表,每级页表可包含512个条目,页面大小为4KB。虚拟内存和物理内存的最大大小是多少?
我认为最大虚拟内存应该是 2^48,因为有 9 位用于引用页表的位置,并且有 4 个页表。因此 4*9+12=48(4KB 偏移量)。但我不确定如何计算最大物理内存。或者它只是无法从这些信息中判断?
答案1
有趣的理论问题。
首先,让我们明确一点:英特尔的 64 位架构实际上是 AMD 对英特尔 32 位架构的 64 位扩展。这就是 非常专业的术语的由来x86_64
。那么,您是在问“英特尔”专用 CPU,还是问 x86_64 架构?其次,您是否正在编写或编辑此条目的维基百科文章?如果是,我们应该避免使用维基百科来帮助寻找答案 :)
为什么理论上的最大虚拟内存大小不受地址指针的 64 位字长的限制?根据维基百科文章,“AMD 决定只使用最少的 48 位”。架构的未来版本允许对此进行扩展。所以实际上,“理论上的最大”可能2^64。所以现在我们谈论的不是理论的东西。
x86_64 的“长模式”寻址允许2 MB 页面即 2^21 而不仅仅是 4KB(2^12)页面,相差 2^9,所以我得到(从你的计算中)2^57。但这超过了架构当前允许的数量,因此它仍然“仅”是 2^48。
对于物理内存,同样来自 Wikipedia,“当前 AMD64 实现支持高达 2^48 字节 RAM 的物理地址空间”。好的,但也许其他地方还规定了其他界限。在最低端,我们有主板制造商,他们通常根据插槽数量来设置。在中间,我们有内存控制器,如今它实际上集成在 CPU 中(但并非总是如此,也不一定——所以再次强调,这个问题的理论性有多强)。内存控制器还将限制地址空间或它们控制的可能芯片的数量。