「Linux」- 查找系统支持的最大内存 @20210210

问题描述

机器支持的最大内存除了受操作系统的限制,还受到硬件芯片的寻址限制。如果使用64位操作系统,我们通常不需要担心操作系统限制。作为桌面用户,我们更需要关注硬件的最大内存限制。

本文通过使用命令找到系统硬件支持的最大内存。

关于最大内存限制

在购买笔记本时,商品描述通常会说明最大内存限制,比如 ThinkPad T510 最大支持 8GB 内存,那么为什么会存在“最大内存限制”呢?

来自操作系统的限制

操作系统能够支持的最大内存也是有限的。通常操作系统的文档会注明该系统支持的最大内存。这里不再罗列,细节部分可参考相应文档。

32位操作系统不会超过 4GB,而且这 4GB 内存需要与其他硬件设备共享,因此实际可用内存被缩小到 3 - 3.5GB。而目前(03/09/2020)的操作系统多为64位,我们很少会触及操作系统的最大内存限制。

来自处理器的限制

可添加到笔记本的总内存,取决与内建到处理器中的内存地址寄存器(Memory Address Register)。

大多数 32-bit CPU 寻址只能达到 4GB 而已;但是不管出于何种目的,64-bit CPU 是“无限的”(16EB),因为 64-bit 硬件一次操作64位或8位数据,而在实际中只使用少量的位进行内存寻址。

CPU Maximum Memory Bytes Processed Simultaneously
8-bit 65KB 1
16-bit 1MB 2
32-bit 4GB 4
64-bit 16EB 8

按照目前科技水平,没有计算机可以达到 64-bit 理论最大值。

从这里看,目前处理器并不是最大内存限制的根本原因。

来自芯片组的限制

“主板芯片组可寻址的最大内存” —— 如果想要安装更多内存,那么前提是主板的芯片组能够支持。该因素由制造商决定的,可能出于产品定位或制造成本考虑。需要查看硬件手册获取最大内存信息。这也是“最大内存限制”存在的真正原因。

制造商给出的“最大内存限制”通常为芯片组能够支持的最大内存寻址。但是实际芯片组可寻址的内存会高于产品最大内存限制。也就是说虽然官方给出的最大内存限制为 16G,但是有时安装32G内存也能够识别。但是这并没有得到官方保证,但是在官方声明的最大内存限制内是没有问题的(这也是官方测试的范围)。

如果最大 DIMM 是 2G,在官方规格中表示最大内存 2 x 2GB = 4GB。如果此时换成 1 x 4G,可能无法工作。

方法一、dmidecode(8)

安装命令

#!/bin/sh

# Debian
apt-get install dmidecode

执行命令

执行如下命令,查看物理内存信息:

#!/bin/sh

dmidecode -t 16

命令输出类似如下:

# dmidecode 3.2
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.

Handle 0x0005, DMI type 16, 23 bytes
Physical Memory Array
		Location: System Board Or Motherboard
		Use: System Memory
		Error Correction Type: None
		Maximum Capacity: 16 GB
		Error Information Handle: Not Provided
		Number Of Devices: 2

输出Maximum Capacity字段表示当前支持的最大内存为16G。

相关文章

 

参考文献

How To Find Out Maximum Supported RAM In Linux
Linux / Unix: Find Out Maximum RAM Supported By The Server BIOS and Motherboard
What does "maximum memory" mean?
DIMM (dual in-line memory module)
www.pcmag.com/memory capacity
Wikipedia/Memory address register
What is the Max RAM that Your Computer Can Support?


上一篇:「TLS」- 与 IE 有关的问题 @20210210


下一篇:Net定时器