Memory 如何在x86-64上将虚拟地址转换为物理地址?

Memory 如何在x86-64上将虚拟地址转换为物理地址?,memory,Memory,我在理解x86-64上虚拟地址如何转换为物理地址方面有一些问题。特别是,PTE的39-12位描述了物理页的PFN。这些位的数目是28。虚拟地址的12位(从0到11)描述此物理页中的偏移量。总之,我们有28位(PFN)和12位(offset)。求和我们有40位,但物理地址应该有64位,是吗???我的推理中的错误在哪里???64位CPU不一定有64位地址总线。虚拟地址空间为64位,但物理地址空间只需足够大,以支持最大合理数量的RAM 目前我找不到参考资料,但40位(1 TB)听起来不错。欢迎访问st

我在理解x86-64上虚拟地址如何转换为物理地址方面有一些问题。特别是,PTE的39-12位描述了物理页的PFN。这些位的数目是28。虚拟地址的12位(从0到11)描述此物理页中的偏移量。总之,我们有28位(PFN)和12位(offset)。求和我们有40位,但物理地址应该有64位,是吗???我的推理中的错误在哪里???

64位CPU不一定有64位地址总线。虚拟地址空间为64位,但物理地址空间只需足够大,以支持最大合理数量的RAM


目前我找不到参考资料,但40位(1 TB)听起来不错。

欢迎访问stackoverflow.com:)。我想,russinovich的windows internals book对你有帮助。看一看关于内存的章节-@Kostiashian有一个x86-32的例子,可以,将20位PFN和12位偏移相加,得到32位,这是物理地址。但我只对x86-64有问题当前的x64处理器有40个地址引脚。一TB的RAM对每个人来说都足够了。至少在令人讨厌的磁盘速度问题得到解决之前。@HansPassant非常感谢