笔记本板载内存的 SPD 信息在哪儿?

对于可插拔更换的内存模组来说,通常在内存条上会有一个单独的小芯片,其中存放了内存的 SPD 信息。SPD 是 Serial Presence Detect 的首字母缩写,大概意思为“挨个检测在不在”。

对于板载内存的电脑(例如目前的很多笔记本,这又是苹果开的烂头)来说,既然已经是一体化的设计了,那 SPD 信息就不必要使用单独的芯片去存储访问,也集成在 BIOS 中就好。所以,理论上,BIOS 中会存放一个专门用于描述 SPD 信息的信息块。更进一步,由于同一个型号的笔记本也有配置高低的差异,而且很多时候,板载内存的多少就是差异之一,为了能简洁明了地实现差异化,厂商的做法一般是:将不同配置的内存组合整理为一个表格,存放到 SPD 信息块中,而在主板上用一个电阻阵列来指示本机应该选用哪一个内存组合。这就好像 SPD 数据是一张表,而电阻成为指向该表中数据行的索引,这其实跟之前 IDE 硬盘等设备上的设置的模式跳线一样。例如,知乎的一个帖子里讲了苹果本的扩容方式

但是 TAICHI21 这个本子似乎有点特殊。用 UEFITool 对它的 BIOS 文件进行分析,以及其它模糊查找 SPD 信息的工具进行检索,都没能成功定位到 SPD 信息块所在的位置。

在一个 SPD 相关工具的网站上,找到一个页面,其中有如下描述:

Known issues

Some system vendors ship non standard systems, especially for Laptops. This includes some systems from Dell, HP, ASUS & Lenovo. Some laptops use RAM soldered to the motherboard (as opposed to being in a socket). On these systems the soldered chips might not contain any SPD data, as the corresponding data, that would be in the SPD, is hard coded into the BIOS on the machine instead. On other machines it might not be possible to locate the SMBus on these machines to collect the RAM’s SPD data. (The SMBus is the low speed circuit on the motherboard that connections the CPU to various other components on the motherboard and it is used to transfer the PSD data from a RAM stick to the CPU). Also, you need to be the administrator to run the software.

By default on certain platforms (such as ASUS), the BIOS disables SPD Writes which prevents access to the SPD raw data on the module. Although no actual writes are performed on the SPD, SMBus write operations are required to access the full 1024 SPD bytes. This is because only pages of 128 byte SPD data can accessed at once, and SPD Writes are performed to read all 8 pages. Fortunately, on a few motherboards there is a BIOS setting for enabling SPD writes which should rectify the issue.

翻译过来就是,

“已知问题

某些系统供应商提供非标准系统,尤其是笔记本电脑。这包括戴尔、惠普、华硕和联想的某些系统。有些笔记本电脑使用焊接在主板上的内存(而不是插槽)。在这些系统上,焊接芯片可能不包含任何 SPD 数据,因为 SPD 中的相应数据已被硬编码到机器的 BIOS 中。在其他机器上,可能无法找到这些机器上的 SMBus 来收集 RAM 的 SPD 数据。(SMBus 是主板上连接 CPU 和主板上其他组件的低速电路,用于将 PSD 数据从内存条传输到 CPU)。当然,您还需要以管理员身份才能运行本软件。

在某些平台(如华硕)上,BIOS 默认禁用 SPD 写入功能,这将阻止访问模块上的 SPD 原始数据。虽然不会对 SPD 执行实际写入操作,但需要执行 SMBus 写入操作才能访问完整的 1024 SPD 字节。这是因为一次只能访问 128 字节 SPD 数据的页面,而 SPD 写操作是为了读取所有 8 个页面。幸运的是,在一些主板上,BIOS 设置可以启用 SPD 写入,从而解决了这一问题。”

如果 TAICHI21 是属于仅有一种内存组合的配置,而且写死在了 BIOS 里,那老夫前面要走的路恐怕会很长……

有一个 SPD 相关的 Github 仓库:GitHub – rigred/SPD: Hacking DDR Memory Serial Presence Detect

一条评论


  1. 近期正好遇到了笔记本内存扩容相关问题,能否留个联系方式交流,我的绿色软件:c3VwZXJfYTQwMw==

    回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注