为什么虚拟地址是48位而不是64位?

问题描述

我正在读一本关于虚拟内存的书:

Intel Core i7支持 48 位(256 TB)虚拟地址空间和 52 位(4 PB)物理地址空间

enter image description here

以下是我的问题

由于我们主要使用64位计算机,所以为什么Q1-虚拟地址只有48位?它也不应该是64位虚拟内存吗?
编者注:此部分与Why do x86-64 systems have only a 48 bit virtual address space?

完全相同

(编者注:此部分与Why in x86-64 the virtual address are 4 bits shorter than physical (48 bits vs. 52 long)?完全相同)
Q2-为什么物理内存的地址空间(52位)大于虚拟内存的地址空间(48位),难道不是虚拟内存的地址空间应该大于物理内存的地址空间吗?

(编者注:这部分是几个问题的重复,包括Is a process' page table mapped to Kernel address space?Where is page table located?
问题3:我的理解是:存储在内核内存中的所有页表对于用户都是不可见的,我的理解正确吗?

解决方法

这是经济学!

  1. 建造一台足够大以容纳足够的RAM来支持64位虚拟寻址的机器的成本实在是太高了。 (甚至对于国家安全局来说也可能!)因此,我们可以得出结论,实际上将支持此功能的芯片组的需求很小。

  2. 物理地址空间的每一位对应于CPU芯片上的引脚,支持该芯片的硅片,PC板上的导线...以及每个内存DIMM上的引脚。这些都直接或间接地增加了制造成本。

  3. 要求客户支付99.999%+的客户不需要且无法使用的功能的溢价在商业上没有意义。这样做,您的竞争对手将能够在价格/性能指标上击败您。


由于我们主要使用64位计算机,所以为什么Q1-虚拟地址只有48位?也不应该是64位虚拟内存吗?

由于您没有足够的RAM来有效使用64位虚拟空间,因此没有意义。

Q2-为什么物理内存的地址空间(52位)大于虚拟内存的地址空间(48位),难道不是虚拟内存的地址空间应该大于物理内存的地址空间吗?

不确定这一点。您将需要与设计师讨论此事。但是出于与上述相同的原因,这没有什么意义。

我对Q3的理解是:用户看不见的所有存储在内核内存中的页表,我的理解正确吗?

是的(在设计合理的多用户操作系统中)是正确的,尽管我看不到这与其余问题有什么关系。

,

虚拟地址最近主要用于进程隔离。借助虚拟内存管理,我们可以提供硬盘存储作为交换内存,但它的速度很慢,而且不是重点。

https://en.wikipedia.org/wiki/Virtual_address_space

如果我们生活在硬盘比RAM快的世界中,那么虚拟地址位可能大于物理地址位。

但是,如果我们不能用实际的RAM支持64位地址空间,那么更大的虚拟地址位就毫无意义。

我不太了解,但是保存了4位(52-48 = 4)可能用于地址转换或TLB访问。因此,实际上不可能使用更大的虚拟地址位。