假设我有一台计算机,标准 32 位或 64 位架构。我可以在上面安装任何操作系统(*nix、Windows 等)。有没有办法让计算机询问硬件支持的最大 RAM 速度,这样可行吗?普遍地?
所谓“普遍”,我的意思是,即使在它不了解的设备上/在其内部的部件/芯片组/处理器/任何东西字典中,该解决方案也应该有效。现在,我可以dmidecode
在随机 MB 上运行,并且 9/10 次它会给我正确的当前系统规格。但这并没有告诉我支持的最大 RAM 速度,而且它的错误也比我想要的更多:尤其是在运行旧操作系统的较新主板上,以及在奇怪的 UEFI/BIOS 兼容性环境中。
这可能吗?如果不可能,原因何在?
答案1
我想说,证明这是不可能的很容易。
在现代系统中,内存控制器位于 CPU 上。支持的最大内存频率是 CPU 支持的频率和主板支持的频率中较低的一个。如果没有 CPU 数据库,那么唯一能知道 CPU 支持的最大频率的方法就是让 BIOS 告诉你。虽然 BIOS 应该在 DMI 表中报告实际时钟频率,但没有标准条目来表示支持的最大频率。
另一个问题是 DMI 表具有实际时钟频率。如果您正在寻找有效频率(通常报告 RAM 速度的方式),那么还需要程序了解 RAM 技术的有效实际比率。如果准直存储器变得流行起来?您现在能编写一个程序来准确检测尚未作为规范存在的 QDR SDRAM 吗?