一般来说,大家都知道32位系统最大能支持4G内存(2^32,2的32次方),那么64位系统,真的能支持16EB吗(2^64,2的64次方)?

这个问题的答案只能说,在很远的将来,理论上是可以支持的,为什么这么说,下面仔细解释一下。
当前,这么大的内存,只能说是可望不可及,一是物理条件达不到,现在也没有这么大内存的系统,二是当前的实现上也达不到。
为什么说达不到呢,当前系统内部不是已经支持64位寻址了吗,2的64次方不就是16EB。
这句话,没错,但是理论和现实总是有差距的。
主要是现在的理论上限是扩大了,程序可使用的虚拟地址空间有2^64,但是当前的系统和应用还没有实际能使用到这么大的空间,不止是现在,在可预见的将来,都看不到实际应用的场景,所以暂时没有必要做的这么大,做了也是浪费,稍微了解点内存管理的就知道会带来其它方面的性能损失。等将来有需要的时候,再扩充就行了。
我们来看看当前的实现,当前实际上是使用了48位。

当前高16位,要么取0,要么取1,和47位保持一致,相当于是前16位暂时保持不用,这也就是说当前支持的最大内存是2^48,也就是256TB,后续再分两阶段演进,到56位,再到全部的64位。
实际上,当前系统连256TB估计都用不了,看下当前主流操作系统的支持情况。
这是windows 10的支持情况
| Version | Limit on X86 | Limit on X64 |
|---|---|---|
| Windows 10 Enterprise |
4 GB |
2TB |
| Windows 10 Education |
4 GB |
2TB |
| Windows 10 Pro |
4 GB |
2TB |
| Windows 10 Home |
4 GB |
128GB |
这是Red Hat Enterprise Linux
| Specification | Version 3 | Version 4 | Version 5 | Version 6 | Version 7 |
|---|---|---|---|---|---|
| Maximum memory | |||||
| x86_64 | 128GB | 256GB [1TB] | 1TB | 12TB [64TB] | 12TB [64TB] |
其实想想,可能真的有那么大内存的时候,也许整个计算机体系结构都要大变了。