对于英特尔来说,有以下信息微代码更新指南.pdf和发行公告,我找不到有关 AMD CPU 微码更新的类似信息。
它在任何地方都可以使用吗?
答案1
我能找到最接近的东西是这个针对 Intel、VIA 和 AMD 处理器的社区运行的微代码存储库:https://github.com/platomav/CPUMicrocodes/
AMD 微码列表(带有版本号)如下: https://github.com/platomav/CPUMicrocodes/tree/master/AMD
文件名的解释在第一个链接中。简而言之,它包含:
- CPUID
- 修订(微码更新修订计数器)
- 日期(公开发布日期)
- 校验和
答案2
@david 的回答很有帮助。不过我花了很多时间才弄清楚。
因此,我找不到在 Linux 或 Windows 上获取正确 CPUID 的方法。最后,我查找了http://instlatx64.atw.hu/(在MC Extractor 自述文件) 并发现 Ryzen 3600 有 ID 00870F10
。
我可以从 BIOS 中看到当前的微码,,,,(在dmesg
Windows上dmidecode
/proc/cpuinfo
cpuid
信息和CPUz也显示了这一点)。对我来说是这样的8701030
(主板有 AGESA 1.2.0.B,而 zenbleed 修复应该在 1.2.0.C,请参阅AMD 公告)。
然后在CPU微代码根据 CPUID,我看到 repo 中还有一个较新的08701033
微代码,希望它包含 zenbleed 修复程序。
更新,我知道如何查看此 CPUID,输出为cpuid -r
。对于我的 CPU,这是eax
和。对于其他 CPU0x00000001
来说0x80000001
可能应该也一样。
如何加载它?这超出了范围,但基本上你将原始微码打包成一个内核可以理解的文件,然后将其合并到(或替换)原始微码文件中,就我的情况而言/usr/lib/firmware/amd-ucode/microcode_amd_fam17h.bin
。
为此,您可以使用两个工具 -amd-ucodegen和ucode 信息。
我写了一篇博客来讲述整个事情: https://rboci.blogspot.com/2024/04/zenbleed-microcode-update-on-amd-ryzen.html
总而言之,我执行此练习的特定原因是不值得的,因为一个简单的测试实际上显示多线程性能结果略有下降,而单线程只有微不足道的改善。
但这通常是在 Linux 上查找和部署较新的 AMD 微码的方法。