“用微码加速”其实包含了两件完全不同的事一件是CPU硬件如何用微码来执行复杂指令另一件是用户如何通过更新微码来修复问题、提升性能。硬件微码为执行复杂指令而“加速”可以把微码理解为CPU内部的“翻译官”或“解释器”。它位于编写的x86汇编指令和CPU硬件控制信号之间将一条复杂的指令拆解成CPU能直接执行的、最简单的内部操作微操作/uops序列。何时用微码执行指令当指令很“复杂”时像REP MOVS批量数据移动或整数除法DIV这类指令硬件电路如果直接实现会非常复杂。采用微码就是用一系列简单的微操作如“加载”、“加法”、“存储”、“跳转”组合来实现它。执行频率较低时对于一些不常使用的冷门指令或特定数据类型操作用微码实现可以节省宝贵的芯片面积而执行这些指令时的少量性能损失对整个系统影响不大。“加速”从何而来这里“加速”是相对于纯软件模拟或更早期的微码设计而言的。使用微码让CPU硬件能够以更快的速度相较于软件解释执行复杂的指令并且可以共享硬件资源。但这本质上是用速度换灵活性相比那些用纯硬件电路硬连线直接实现的简单指令微码执行会更慢。现代高性能CPU为了加速通常会把最常用的指令如add、mov用硬连线逻辑直接解码而对少数复杂指令才使用微码。微码更新为修复和优化而“加速”另一个层面微码Microcode本身是可以被更新的文件。用户更新微码的场景修复Bug当CPU存在设计缺陷时厂商如Intel会发布新的微码通过主板BIOS更新或操作系统加载在CPU通电瞬间就修复了问题无需更换硬件。提升性能厂商也可能通过优化微码中的电压-频率VF行为等策略来提升特定场景下的性能。所以微码作为CPU内部硬件和外部指令间的“胶水层”在硬件层面为执行复杂指令提供了实现基础在软件/固件层面为修正和提升性能提供了可能。前者是微架构设计的选择后者则是用户能感知到的维护更新。