首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么x86-64系统只有48位虚拟地址空间?

为什么x86-64系统只有48位虚拟地址空间?
EN

Stack Overflow用户
提问于 2011-07-16 19:09:23
回答 10查看 51.4K关注 0票数 113

在一本书中,我读到了以下内容:

32位处理器有2^32个可能的地址,而当前的64位处理器有48位地址空间

我的预期是,如果它是64位处理器,地址空间也应该是2^64。

所以我想知道这个限制的原因是什么?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-07-16 19:16:43

因为这就是我们所需要的。48位提供256兆兆字节的地址空间。太多了。你不会很快看到一个比这更需要的系统。

所以CPU制造商走了一条捷径。它们使用的指令集允许完整的64位地址空间,但当前的CPU只使用低48位。另一种选择是浪费晶体管来处理更大的地址空间,而这在很多年内都是不需要的。

因此,一旦我们接近48位的限制,就只需要释放处理全部地址空间的CPU,但它不需要对指令集进行任何更改,也不会破坏兼容性。

票数 153
EN

Stack Overflow用户

发布于 2011-07-16 20:34:20

任何涉及总线大小和物理内存的答案都是错误的,因为OP的问题是关于虚拟地址空间的,而不是物理地址空间的。例如,假设对一些386的限制是对它们可以使用的物理内存的限制,而不是对虚拟地址空间的限制,虚拟地址空间始终是完整的32位。原则上,即使只有几MB的物理内存,您也可以使用完整的64位虚拟地址空间;当然,您可以通过交换来做到这一点,或者用于需要在大多数地址映射同一页的特定任务(例如,某些稀疏数据操作)。

我认为真正的答案是AMD只是便宜,希望现在没有人会关心,但我没有引用的参考资料。

票数 19
EN

Stack Overflow用户

发布于 2011-07-16 19:16:30

阅读wikipedia article的限制部分

AMD不能包含4PB的内存(由于当前内存芯片的大小,如果没有其他因素),但

设想了大型服务器,共享内存集群,以及在可预见的未来可能接近这一目标的物理地址空间的其他用途,52位物理地址提供了足够的扩展空间,同时不会产生实现64位物理地址的成本

也就是说,在这一点上实现完整的64位寻址是没有意义的,因为我们不能构建一个可以完全利用这样的地址空间的系统-所以我们选择了对今天(和将来)的系统实用的东西。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6716946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档