【我所认知的BIOS】->反汇编BIOS之Bootblock(2)

本文深入探讨了BIOS启动时CPU微码更新的重要性,解释了为何需要在早期阶段进行微码更新,并提供了CPU微码更新的背景和实例。作者通过反汇编分析了BIOS代码,阐述了如何检查CPU微码是否已加载,以及更新过程的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【我所认知的BIOS->反汇编BIOSBootblock(2)

--CPU micro code update

By Lightseed

5/12/2010

1CPU micro code的背景

先做个铺垫为什么要在BIOS刚刚开始跑的时候就来讲CPUmicro code

以下引用自网络:

-------------------------------------

在十多年前的Pentium时代, INTEL曾经发布过有缺陷的CPU, 因为浮点运算表边界上有几个数据错误, 导致在某些应用会出现错误, 这个错误概率很小, 出错几率小于千万分之一, 但在还是被捅出来了. INTEL为此召回CPU.

Pentium Pro, INTEL决定给CPU留出一个补丁接口, CPU内部有缺陷的时候, 通过加载微码(Microcode), 可以修复CPU的部分缺陷.

INTEL, 他们只测试过的CPU都是加载了微码的, 如果没有加载微码, INTEL不保证会出现什么问题.

现在的CPU有一个CPUID, 通过执行CPUID指令, 可以知道当前CPU的版本和Stepping. 根据这个信息, 再给CPU打相应的补丁.

下图就是CPUID=06D2, Rev.A2

何时给CPU打补丁?

在给CPU初始化的时候, 就需要把INTEL提供的微码写进CPU, 因此, 加载CPU微码就是系统BIOS的任务.

如果系统的CPU是可更换的, 那么其微码也需要更换. 因此, BIOD, 一般要包进若干个IDCPU微码, 以便工厂安排不同的SKU出货. 如果BIOS发布是在CPU发布之前, 那么BIOS里很可能就没有包进最新的微码, 这个系统要使用新CPU的时候, CPU微码是无法加载的.

另外, BIOS ROM容量有限, 一个微码补丁最小有2K, 如果平台兼容的CPU很多, 则微码数量是十分巨大的, 台式机某些主板可能兼容20多个CPU版本, 那么微码的体积很大, BIOS里根本包不下这么多东西, 于是, 厂商不得不缩水, 去掉一些不常用的微码. 这些不常用的微码一般都是早期的CPU, DOTHAN早期的A STEPPING就很可能没有对应的微码包进你的本本中去.

不打补丁会有什么问题?

INTEL说他们没测过不打补丁的CPU,

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值