说,今天尝试编译新路由固件的时候(之后再说这个破事……),发现内存居然不够;仔细一看,居然只有16GB?还说只有一条内存条?我当初明明买了 2x16GB啊……
进BIOS一看,好家伙,48GB内存…… 有一条内存居然变成了32GB。当然,内存不会白白变大,Windows应该是机智地发现了这个问题,只用了另一条……
用一些软件(例如CPU-Z)读取内存信息,好消息是另一条内存还能读出来,坏消息是数据略微乱七八糟,比如说变成了32GB啦,序列号乱七八糟啦,牌子变成了奇怪的牌子啦,等等……
其实 SPD 信息损坏倒不是啥新闻,我倒是早就知道这些 SPD 有问题,原因应该就是刚买来没多久折腾 OpenRGB 搞的。根本来说这是个 race condition:OpenRGB 尝试控制内存的 RGB(选择 RGB 控制器地址并写入),而同时另一个程序,例如 HWINFO64,可能会尝试访问内存 SPD(选择 SPD 地址并读取)。这俩如果混一起,那可能就会变成“选择 SPD 地址并写入”,就可能会损坏 SPD……
然而我之前只记得这货好像损坏了 XMP Profile 和内存信息,但是基本上还能用。这次一看,坏了不少的位置……
当然,运气还行,毕竟还有一条基本一样的内存还能用。但是,另一条SPD其实也有损坏,只是恰好没损坏到重要部分……
修复方面嘛,主要是使用了 SPD RW 这个工具(https://github.com/1a2m3/SPD-Reader-Writer)。这货一开始我以为只能用Arduino,所以还找了别的工具,例如Thaiphoon Burner,然而那货不但卖钱,还倒闭了没法买…… 但是之后发现其实 SPD RW 可以直接跑 SMBus,于是就拿来把两边先读出来,然后对照 DDR5 SPD 格式资料(https://github.com/edlf/DDRXMPEditor/blob/main/DDR5SPD/DDR5_SPD.cs),以及某人贴出来的另一条类似内存的SPD(https://www.reddit.com/r/overclocking/comments/1f1d2i4/looking_for_team_group_tforce_vulcan_ddr55600_32/),基本上把SPD的前面一半改对了(后面一半是 XMP 数据 )。之后,再把改完的 SPD 写回去重启,另外的 16GB 就又回来了……
剩下的事情嘛,包括
- 想办法把 XMP 数据也弄回来。这个估计只能去网上找别人的 SPD dump 了,现在看见的 XMP 数据都很扯淡
- 给 SPD RW 作者捐了点钱,毕竟省掉了 RMA/买新内存条的功夫
- 其实现在CRC还是错的…… 我倒是有原始的 CRC,至少能验证是不是全部数据都搞对了
- 内存序列号可能要去看内存上的贴纸了……
反正姑且算是抢救回来了…… 这个事情告诉我们,OpenRGB 的内存光效控制非常危险,用的话至少一定要记得把 BIOS 里的 SPD 写保护开了…… 我估计从前不知道为啥关掉了,然后就坏了……
哦对了,Thaiphoon Burner 这个软件很扯淡;免费版不能写入倒也没啥,这货有一个 SPD dump 集合,居然还要另外卖一块钱……