64位机器一次可以寻址多少内存?

Moe*_*oeb 35 memory cpu

如果内存是字节可寻址的,不应该是

2^64 / (2^10 * 2^10 * 2^10) = 2^34 GB ?

一般的 Google 搜索显示最大为 8GB 或 16GB。

这是真的吗?另外,它如何依赖于操作系统?

小智 63

存在多种交织因素。

首先,您目前无法组装具有 2 64字节(16 exibytes)物理 RAM 的系统。

其次,仅仅因为架构使用 64 位指针,并不意味着这些指针的所有位都被实际使用。值得注意的是,当前的 x86-64 CPU(又名 AMD64 和 Intel 当前的 64 位芯片)实际上使用 48 位地址线 (AMD64) 和 42 位地址线 (Intel)(请参阅http://en.wikipedia.org/wiki /X86_64#Virtual_address_space_details ),理论上允许 256 TB 的物理 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 版本有更高的限制)。

  • 永远不要把话说绝了。摩尔定律仍然有效,这是我听到的最后一个,因此具有 16 艾字节 RAM 的系统很可能在我们有生之年出现。那么我们都将不得不转向 128 位操作系统...... (25认同)
  • 42 位地址行(由匿名编辑添加)的来源将不胜感激。在那之前,我个人认为该信息不可信。 (3认同)
  • +1 用于提及物理地址线通常是 << 64 位架构上地址寄存器中的位数 (2认同)
  • @MichaelHampton - NecroReply,但无法抗拒:) 每 2 年翻一番(这比最近的趋势快)仍然需要 60 年才能从 16GB 增加到 16EB。到那时,我怀疑关于硅晶体管的“法律”是否有任何相关性;) (2认同)

小智 10

如果您使用 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,尽管并非所有硬件都可以支持。

  • 这些并不是真正的技术限制。这些是出于商业原因引入的人为限制。 (5认同)

Ale*_*lli 8

一台 64 位机器应该能够寻址多达 2 64 个可寻址单元(在过去几十年设计的体系结构中,可寻址单元总是字节,又名八位字节)。如果您将“千兆字节”定义为 2 30 个可寻址单元,那么是的,2 34 GB 将是表示相同计数的另一种方式。

什么 Google 搜索产生了那些可笑的微小结果?也许您找到的页面正在谈论您可以在某种型号的相当便宜的盒子中购买的 RAM 量——即使在远非非常昂贵的盒子中,您也绝对可以拥有更多的 RAM(当然都是可寻址的) .

操作系统绝对可以并且确实限制了可寻址内存的数量(例如,它们可以通过限制页表的大小来做到这一点,也许可以通过重新编译或以其他方式重新配置操作系统来设置一些可配置的最大值——很难更具体,而不关注某些特定的操作系统组)。