我读这条在64位计算,它提到:
例如,截至2011年的AMD64架构允许52位用于物理内存,48位用于虚拟内存
我认为允许更多的虚拟内存而不是物理内存更有意义,那么为什么实际上却相反呢?
额外的问题:在64位架构上“允许” 52或48位意味着什么?其他位还有什么用?
我读这条在64位计算,它提到:
例如,截至2011年的AMD64架构允许52位用于物理内存,48位用于虚拟内存
我认为允许更多的虚拟内存而不是物理内存更有意义,那么为什么实际上却相反呢?
额外的问题:在64位架构上“允许” 52或48位意味着什么?其他位还有什么用?
Answers:
这是AMD64页表的图片(摘自《 AMD体系结构程序员指南》,第2卷,修订版3.23,2013年,第132页)。
AMD64体系结构中页面的“自然”大小为2 12 = 4096字节。(在某些模式下,您可以拥有2 21 = 2Mbyte页,但现在我们将忽略它们。)
每个页表项(PTE)(或取决于称为PDE,PDPE或PML4E的级别)为64位= 2 3字节。因此,每页有2 9个条目。因此,每页进程的4个级别的页表为您提供4x9 + 12 = 48位虚拟地址。遍历页表非常昂贵,因此除非/直到有消费者需求,否则它们不会扩展到5或6级。
我不确定他们为什么决定使用52位物理地址限制。将来可以扩展到63位。以2013年10月的价格(4Gbit芯片约为1美元/千兆位),构建2 52字节内存的成本将超过32,000,000.00美元,因此要增加物理地址限制的需求还需要一段时间。为什么要使物理地址保持尽可能小有多种原因:例如,TLB和缓存标记必须保留物理地址。
物理内存多于虚拟内存并不一定要倒退。虚拟内存是按进程分配的,而物理内存则由所有进程共享。因此,具有48位虚拟地址和2 52个字节的内存的服务器可以支持16个同时进行的进程,并且仍然保证不需要交换。
需要考虑的几点是,物理RAM昂贵。现在肯定可以确定16 GB的价格便宜,因为几年前只有4 GB,但是2 ^ 64(16艾字节)大得离谱。
因此,AMD通过限制寄存器将x86的x64扩展扩展为“允许”最大2 ^ 52 。这有两件事,可以降低处理器成本并提高性能。更多未使用的寄存器意味着在操作过程中仍然必须考虑很多空白空间。
而且,如果您不是一个数学家...三种尺寸之间的差异非常大!我不是数学专家,但十进制的52位大约是64位的.02%。48位是52中的6%。(有人检查我的数学吗?)
至于为什么AMD允许更多的物理RAM而不是虚拟的,文章指出这是因为AMD在考虑服务器。服务器需要大量的物理RAM。虚拟RAM太慢,无法支持数百或数千名员工的平均服务器应用程序。
我自己的想法:我们离开了RAM很小的时代,而硬盘必须支持RAM。RAM中的价格已下降到普通角色可以容纳足够多RAM的程度。以典型的应用程序为例,例如需要1-2GB RAM的Office。我7年前的电脑可以解决这个问题。尽管具有对磁盘的读写速度,但我希望我永远不必从虚拟内存中检索7GB文件(使用旧的PM * 2.5原理)。
我还只能假设AMD希望为使用物理RAM寄存器的寄存器(例如集成GPU上的RAM)留出空间。