# 2020-10-07 #「Linux」- 查找系统支持的最大内存

    科技2024-04-22  15

    问题描述

    机器支持的最大内存除了受操作系统的限制,还受到硬件芯片的寻址限制。如果使用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位数据,而在实际中只使用少量的位进行内存寻址。

    CPUMaximum MemoryBytes Processed Simultaneously8-bit65KB116-bit1MB232-bit4GB464-bit16EB8

    按照目前科技水平,没有计算机可以达到 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。

    参考文献

     

    K4NZ / 查找系统支持的最大内存How To Find Out Maximum Supported RAM In LinuxLinux / Unix: Find Out Maximum RAM Supported By The Server BIOS and MotherboardWhat does "maximum memory" mean?DIMM (dual in-line memory module)www.pcmag.com/memory capacityWikipedia/Memory address registerWhat is the Max RAM that Your Computer Can Support?

     

    Processed: 0.017, SQL: 8