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


32

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

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

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

这是怎么回事?另外,它如何依赖于操作系统?


8 GB显然不可用,因为我的工作机有12 GB,可以解决所有问题,再加上1 GB的视频RAM,再加上我所有的硬件以及我所有的虚拟内存,就可以了。

Newegg出售32GB的ram软件包,用于一台计算机。32位支持3.2GB,而128位将支持数百万兆字节,因此我认为64位是32位的两倍多。
tkbx

Answers:


53

有多个交织因素。

首先,您将永远无法组装具有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本身)仍然如此。大概是在地址线上切掉一些角,以节省设计和制造成本。

第三,操作系统可能会对其内部有效限制多少内存。在某种程度上,这实际上是为了防止需要过大的数据结构来跟踪实际上不存在的内存的使用情况。最后我检查了一下,Linux在x86-64上允许每个进程128TB的虚拟地址空间,并且理论上可以支持64TB的物理RAM。

第四,某些操作系统(例如Windows)会人为地限制可以使用多少RAM,作为​​一种策略,如果用户想要更多RAM,则可以升级到更昂贵的版本(Windows 7 Starter限制为2GB,Home Basic限制为8,Home Premium到16,专业版及更高版本为192GB,并且Windows Server版本具有更高的限制)。


1
+1表示物理地址线通常是<<在64位架构上的地址寄存器中的位数
Paul R 2010年

3
42位地址行(由匿名编辑添加)的来源将不胜感激。在此之前,我个人认为该信息不值得信赖。
鲍勃

21
永不说永不。摩尔定律仍然有效,据我所知,因此具有16艾字节RAM的系统很可能会在我们的生命周期内出现。然后,我们所有人都必须转向128位操作系统...
Michael Hampton

物理地址还受到为TLB中的物理地址提供的位数(以及给定物理地址标记的缓存标签的大小)以及页表项中可用于物理地址的位数(如果由x86-64中的架构,它支持带有4KiB页的52位物理地址空间。后者是一个更严格的限制(体系结构不是基于实现的),即使架构也可以更改。
保罗·克莱顿

2
@MichaelHampton-NecroReply,但无法抗拒:)每2年翻一番(这比最近的趋势要快),从16GB到16EB仍需要60年。到那时,我怀疑有关硅晶体管的“法律”将不会有任何意义;)
MatBailie

9

如果使用MS Windows,则最大内存受操作系统限制。

对于Windows 7,最大值为:

  • 入门版:2GB
  • 家庭基本版:8GB
  • 家庭高级版:16GB
  • 专业版:192GB
  • 企业版:192GB
  • 终极版:192GB

Windows Server 2008的范围从入门级的8GB到行首的2TB。

有关完整列表,请参见http://msdn.microsoft.com/zh-cn/library/aa366778%28VS.85%29.aspx

这些限制主要是出于营销原因。通过限制便宜的版本,它们使高端版本(相对)更具吸引力。

我认为最近的Linux构建可以在大约32TB的RAM上工作,尽管并非所有的硬件都可以支持。


4
这些并不是真正的技术限制。这些是出于业务原因而引入的人为限制。
kasperd

8

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

哪些Google搜索产生了这些荒谬的微小结果?也许您找到的页面是关于您可以在某种型号的价格便宜的盒子中购买的RAM数量的信息-您绝对可以拥有更多的RAM(当然都是可寻址的),即使是在价格不算很高的盒子中。

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


为什么2 ^ 30个可寻址单元为1 GB?每个地址单元存储1位,因此2 ^ 30个地址单元存储的位数为0.134217728 GB。我想念什么?
Darshan Chaudhary

1
@DarshanChaudhary 2 ^ 30是不同地址的数量。每个地址标识一个字节的存储器,而不是一位。
David Moles

3

您可以拥有任意数量的RAM,但是这完全取决于您所运行的操作系统和应用程序-如其他人所述。

如果您正在运行占用大量CPU的应用程序,而该应用程序也需要占用其他硬件(例如硬盘)的资源,那么最好在完全独立的计算机中认真考虑使用第二个CPU。例如,在单独的计算机上运行数据库应用程序和电子邮件服务器。

拥有多少内存无关紧要-在当今市场上,整个系统将陷入停顿。单CPU根本无法按您期望的方式处理多任务。

对于一台具有大量内存的计算机,如果您在同一系统上运行多个应用程序,则更好但又不那么出色-无论安装了多少内存。这就是为什么大公司不仅使用64位体系结构来寻址更多内存,而且还要通过两台或更多台服务器平衡整个负载的原因。

如果您真的很在意性能,那么绝对可以使用64位,但也可以考虑使用第二台服务器进行负载平衡。

我一直在走-配置一台具有最大RAM的计算机。但是,当运行多个应用程序时,它仍然像狗一样运行。那是因为CPU本身无法处理它。

我的建议是节省您的内存,购买第二台服务器,然后对两者进行负载平衡。它要简单得多,一旦您掌握了它,就可以在需要更多处理能力和速度时轻松扩展。

同样,一台64位体系结构的计算机可以处理32位软件,但是对于32位计算机,您只能使用32位或更少的应用程序-包括操作系统。

由于整个市场在硬件和软件方面都将朝着64位发展,因此我建议您长期使用64位,但是,请不要忘记将全部压缩到一台具有大量存储负载的计算机上的想法,因为您会失望的。

如果您不确定什么是“负载平衡”,则可以使用它。


2

我认为这可能需要超过一个EB的费用。

看一下这个32位处理器可以占用2 32 B = 4 GB,但是最多只能占用3 GB“因为对于反向地​​址它们是1 GB”

这意味着64位处理器可以占用2 64 B = 16 EB,但是我无法锁定反向使用的地址。因此我们可以说64位处理器占用了超过1 EB。并且此规范不取决于PC使用的操作系统或型号。


1
实际上,64位处理器通常具有48位地址空间,足以容纳256 TB的内存。
465544 2013年

我认为您的意思是exbibyte,而不是exabyte
martineau'6

1

以Intel或AMD CPU为例,物理内存和虚拟内存都有一些限制。其他人谈到了硬件引脚分配和主板限制,但也有内部限制。

MMU中的终端页表条目包含52个有效位的物理地址,并且理论上可以映射多达4096 TB的物理RAM。

MMU实现了一个4级页面表,其顶层由512×512 GB条目组成。因此虚拟内存限制为256 TB。

据我所知,所有64位操作系统都实现了DMAP(直接映射),这非常方便。但是,由于虚拟内存限制为256 TB,因此DMAP的大小也受到限制。通常,为用户模式保留128 TB,为内核保留128 TB。在内核的128 TB中,最多可为DMAP保留一半。由于DMAP的有用性,操作系统通常会将物理内存限制为DMAP可以处理的范围。

因此,大多数(全部?)用于Intel / AMD的64位操作系统所支持的物理内存被限制在64 TB左右,普通内核虚拟内存留给了64 TB,用户虚拟内存留给了128 TB。

-

在CPU内部,CPU缓存对其存储的物理地址位的数量也有限制,因为每个附加地址位占用了缓存标签的更多晶体管。DRAM控制器引脚的限制不一定是硬道理,因为存储器也可以通过DMI链接进行寻址。

不同的CPU体系结构(例如ARM,PowerPC等)将具有不同的限制。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.