如果内存是字节寻址的,那么不应该
2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB
?
常规 Google 搜索会显示最大 8GB 或 16GB。
这是怎么回事?此外,它与操作系统有何关系?
答案1
存在多个相互交织的因素。
首先,您目前无法组装具有 2 64字节(16 艾字节)物理 RAM 的系统。
其次,仅仅因为架构使用 64 位指针,并不意味着这些指针的所有位都得到了实际使用。值得注意的是,当前的 x86-64 CPU(又称 AMD64 和英特尔当前的 64 位芯片)实际上使用 48 位地址线(AMD64)和 42 位地址线(英特尔)(参见http://en.wikipedia.org/wiki/X86_64#Virtual_address_space_details),理论上允许256TB的物理RAM。
其次,主板对它们能够支持的 RAM 数量有自己的限制,无论是物理限制还是逻辑限制。物理上,RAM 可用的插槽数量是有限的。至于“逻辑”限制,我不完全理解为什么 x86-64 仍然如此(内存控制器早已迁移到 CPU 本身),但事实就是如此。大概是为了在设计和制造上节省一些钱,地址线被偷工减料了。
第三,操作系统可能对其能够有效支持的 RAM 数量有内部限制。在某种程度上,这实际上是为了防止需要过大的数据结构来跟踪实际上不存在的内存使用情况。上次我检查时,Linux 在 x86-64 上允许每个进程有 128TB 的虚拟地址空间,理论上可以支持 64TB 的物理 RAM。
第四,一些操作系统(例如 Windows)会人为地限制可以使用的 RAM 数量,以此作为一种策略,让用户在需要更多 RAM 时升级到更昂贵的版本(Windows 7 Starter 限制为 2GB,Home Basic 限制为 8,Home Premium 限制为 16,Professional 及以上版本为 192GB,而 Windows Server 版本的限制则要高得多)。
答案2
如果您使用 MS Windows,则最大内存受操作系统限制。
对于 Windows 7,最大值为:
- 入门级:2GB
- 家庭基本版:8GB
- 家庭高级版:16GB
- 专业版:192GB
- 企业版:192GB
- 旗舰版:192GB
Windows Server 2008 的容量范围从入门级的 8GB 到最高级别的 2TB。
看http://msdn.microsoft.com/en-us/library/aa366778%28VS.85%29.aspx以获得完整列表。
这些限制主要是出于市场原因。通过限制较便宜的版本,他们让高端版本(相对而言)更具吸引力。
我认为最近的 Linux 版本可以使用大约 32TB 的 RAM,尽管并非所有硬件都能支持这一点。
答案3
64 位计算机应该能够寻址最多 2 64个可寻址单元(在过去几十年设计的架构中,可寻址单元始终是字节,也称为八位字节)。如果您将“千兆字节”定义为 2 30 个可寻址单元,那么是的,2 34千兆字节是表达相同计数的另一种方式。
谷歌搜索的哪些内容会产生这些可笑的微小结果?也许您找到的页面正在讨论您可以购买的某个型号的相当便宜的机箱中的 RAM 数量 - 即使在价格远非昂贵的机箱中,您也绝对可以拥有更多的 RAM(当然都是可寻址的)。
操作系统绝对可以并且确实会限制可寻址内存的数量(例如,它们可以通过限制页表的大小来实现这一点,也许可以通过重新编译或以其他方式重新配置操作系统来设置某个可配置的最大值——如果不关注一些问题,很难更具体具体的操作系统组)。
答案4
我认为它可以占用超过 EB 的空间。
看看这个 32 位处理器可以占用 2 32 B = 4 GB,但最多占用 3 GB,“因为它们是 1 GB 用于反向地址”
这意味着 64 位处理器可以使用 2 64 B = 16 EB,但我不知道锁定以进行反向使用的地址是如何使用的。所以我们可以说 64 位处理器占用超过 1 EB。并且这个规范不依赖于 PC 使用的操作系统或其型号。