我有一台i5-2430M CPU 的Asus U31SD笔记本电脑。华硕网站说最大RAM是8 GB,但是英特尔说我的CPU支持16 GB。在Ubuntu下可以在此系统上使用的最大RAM是多少?
我有一台i5-2430M CPU 的Asus U31SD笔记本电脑。华硕网站说最大RAM是8 GB,但是英特尔说我的CPU支持16 GB。在Ubuntu下可以在此系统上使用的最大RAM是多少?
Answers:
限制实际上在您的硬件(主板内存支持和其中的插槽数量)与Ubuntu版本(32位,32位+ PAE,x32ABI,64位)之间
如果您的主板最多支持4GB,则使用32位,32位PAE或64位都没有关系,因为硬件限制为4GB。
但是,如果您购买支持更高内存量的主板,则可以试用具有以下最大支持内存的Ubuntu版本:
Ubuntu 32位 -4GB RAM
Ubuntu 32位+ PAE(物理地址扩展) -64GB RAM
Ubuntu x32ABI -4GB RAM(这是针对64位硬件上运行的64位增强功能进行修改的32位体系结构。尚不可用。)
Ubuntu 64位 -很多!(实际上是2 ^ 64),但是由于硬件限制和实际计算机的限制,该限制大约为1TB(1024GB RAM)
因此,当您使用超过4GB的RAM时,应该使用有关内存限制的问题。在这种情况下,您将需要支持非常大的内存大小的32位PAE或64位。
还要注意,如果您现在有例如4GB,并且购买了16GB的ram,则无需重新安装Ubuntu或进行任何更改。只需更改记忆,Ubuntu就应该立即阅读并使用它们。无需配置。如果您具有32位和4 GB RAM,并且安装了16GB或RAM,Ubuntu将自动从32位变为32位PAE。我可以保证这一点,因为我在今年年初从4GB迁移到16GB。
这是对Ubuntu有关32/64中内存的很好解释的链接:https : //help.ubuntu.com/community/32bit_and_64bit#Memory
更新 -忘记添加某些主板具有BIOS更新,这些更新可启用,更正或增强支持的最大内存。例如,过去某些英特尔主板在使用它们支持的最大容量时存在问题。BIOS更新修复了此问题。由于BIOS问题,其他主板支持4GB,升级后它们支持的内存超过4GB。
同时比较CPU和主板支持的最大内存,您可以拥有的最大内存是其中任何一个的最小值。因此,例如:
案例1
CPU最大支持内存-16GB
主板最大支持内存-8GB
最大支持内存-8GB(因为这是CPU和主板之间的最小值)
CASE 2
CPU最大支持内存-16GB
主板最大支持内存-32GB
您最大支持内存-16GB(因为这是CPU和主板之间的最小值)
情况3
CPU最大支持内存-16GB
主板最大支持内存-64GB
最大支持内存-16GB(因为这是CPU和主板之间的最小值)
与CPU的内存限制关系背后的原因是因为英特尔对最新的Core CPU进行了技术修改。
因此,根据您的情况,您有一块支持8GB的主板和一个支持16GB的CPU。这意味着您可以使用的最大容量为8GB,具体取决于主板上的插槽数量。在该华硕中,您有2个插槽,这意味着您可以有两个4GB的RAM来完成最大8GB的内存。
有关x32abi的更多信息:
KernelNewbies - http://kernelnewbies.org/Linux_3.4#head-039c9d273884c9639937c10d68b4a3214869eb4b
LWN - https : //lwn.net/Articles/456731/(推荐阅读注释,以方便了解有关内存限制的说明)
Google - http://sites.google.com/site/x32abi/
最后,从Ubuntu 12.04开始,Ubuntu的所有32位版本默认都激活了PAE,因此所有32位版本最多支持64 GB的RAM。如果您使用的是12.04+,并且想知道要使用哪种体系结构,那么现在您知道只要遵循一些建议,就可以使用其中的任何一种:
如果您有512 MB或更少的RAM,则强烈建议使用32位
如果您的RAM小于4 GB但大于512 MB,建议使用32位(但是您仍然可以使用64位)
如果您有4 GB RAM,建议使用32位(但是您仍然可以使用64位)
如果您具有4 GB或RAM到64 GB的RAM,则可以使用32位或64位,但是建议使用64位。
如果您有超过64 GB的RAM,则需要使用64位
对于32位,理论限制为2 ^ 32 = 4096 MB,但默认情况下,PAE(物理地址扩展)上的Ubuntu 12.04已打开,限制为2 ^ 36 = 64 GB。
对于64位,理论上应为2 ^ 64 = 16777216 TB(是TB)。实际上,RAM的数量限制为2 ^ 48,即256 TB RAM。
由于普通笔记本电脑实际上无法达到理论极限,因此实际限制是笔记本电脑中的内存插槽数量(通常为1-2个)以及芯片组的支持。如果您愿意为8 GB的模块付出大量的金钱,那么8-16 GB在这里是现实的。
有很多问题决定了指针的大小。基本上,您可以说这是处理器架构,
x86 -> 4 bytes pointer -> can address 4,294,967,296 locations = 4GB (it is the limit)
x64 -> 8 bytes pointer -> can address 1.84467440737e+19 locations (it is the limit, big, eh)
要寻址8GB的RAM,您需要8,589,934,592个映射,大小为4个字节的指针无法寻址所有可能的值。因此,这就是为什么我在x86架构上不能拥有超过4GB RAM的原因。
RAM的数量不受体系结构(32或64位)的限制。架构仅决定一次操作系统及其上运行的程序一次可以寻址多少内存。在32位计算机(即具有32位宽的内存总线的计算机)上,操作系统和程序只能“看到” 4 GB的内存。但这并不意味着只有4 GB的RAM。如果制造商提供了此功能,则可以有16 GB或4x4 GB的RAM。在那种情况下,将有另外2条“隐藏”地址线,并且还会有硬编码逻辑来决定这两条线的电平,从而选择任何可用的4 GB RAM-00 01 10 11。这些“隐藏”地址位未被软件层使用,因此对于这些层,它们只能使用4字节指针。这些“隐藏”的数量
这只是一个例子。这取决于供应商,他们如何决定提供额外的RAM。
也可以看看:
在通常情况下,指针的大小足以容纳比系统内存单位更多的地址。这引入了一种可能性,即程序可能尝试访问不对应于任何内存单元的地址,原因是没有安装足够的内存(即,超出了可用内存的范围),或者体系结构不支持此类地址。在某些平台(例如Intel x86架构)中,第一种情况可能称为分段错误(segfault)。在当前的AMD64实现中,第二种情况是可能的,其中指针的长度为64位,而地址仅扩展为48位。在那里,指针必须符合某些规则(规范地址),因此,如果取消引用非规范指针,则处理器会引发一般性保护错误。
另一方面,某些系统具有比地址更多的内存单元。在这种情况下,将采用更复杂的方案(如内存分段或分页)在不同时间使用内存的不同部分。x86体系结构的最后一个版本支持多达36位的物理内存地址,这些地址通过PAE分页机制映射到32位线性地址空间。因此,一次只能访问可能的总内存的1/16。同一计算机系列中的另一个示例是80286处理器的16位保护模式,该模式虽然仅支持16 MiB的物理内存,但最多可以访问1 GiB的虚拟内存,但是16位地址和段的组合寄存器使得在一种数据结构中访问超过64 KiB变得很麻烦。
为了提供一致的接口,某些体系结构提供了内存映射的I / O,该体系结构允许某些地址引用内存单元,而其他地址引用计算机中其他设备的设备寄存器。有类似的概念,例如文件偏移量,数组索引和远程对象引用,它们的某些目的与其他类型对象的地址相同。
(更多在这里)