CPU微码介绍

微码作用

微码是指令和实现电路之间的隔离。
指令对不同的CPU可以是相同的,但是微码确是对于特定的电路结构而言的,不同电路结构对应的微码不一样,是特定设计的CPU的一部分。
微码可以保存在ROM中,也可以保存在内存中。
微码的加载可以由BIOS进行,也可以在操作系统加载时由操作系统进行。

读取方法
cat /proc/cpuinfo

在这里插入图片描述

详细介绍与背景

在十多年前的Pentium时代,intel曾经发布过有缺陷的cpu,因为浮点运算表边界上有几个数据错误,导致在某些应用会出现错误,这个错误概率很小,出错概率小于千万分之一,但还是被捅了出来,intel为此召回cpu。为了避免此类事件再次发生,intel决定给cpu留一个补丁接口,当cpu内部有缺陷的时候,通过加载微码(Microcode),可以修复CPU的部分缺陷。

微指令(英语:microcode),又称微码,是在CISC结构下,运行一些功能复杂的指令时,所分解一系列相对简单的指令。相关的概念最早在1947年开始出现。

微指令的作用是将机器指令与相关的电路实现分离,这样一来机器指令可以更自由的进行设计与修改,而不用考虑到实际的电路架构。与其他方式比较起来,使用微指令架构可以在降低电路复杂度的同时,建构出复杂的多步骤机器指令。撰写微指令一般称为微程序设计(microprogramming),而特定架构下的处理器实做中微指令有时会称为微程序(microprogram)。

现代的微指令通常由CPU工程师在设计阶段编写,并且存储在只读内存(ROM, read-only-memory)或可编程逻辑数组(PLA, programmable logic array)中。然而有些机器会将微指令存储在静态随机存取内存(SRAM)或是闪存(flash memory)中。它通常对普通程序员甚至是汇编语言程序员来说是不可见的,也是无法修改的。与机器指令不同的是,机器指令必须在一系列不同的处理器之间维持兼容性,而微指令只设计成在特定的电路架构下运行,成为特定处理器设计的一部分。

在给CPU初始化的时候, 就需要把INTEL提供的微码写进CPU去,因此 加载CPU微码就是系统BIOS的任务,在这种情况下,当操作系统还没有开始运行时,微码已经由BIOS加载到CPU中。Linux 的内核可以在引导时更新 CPU 固件,而无需 BIOS 更新。处理器的微码保存在内存中,在每次启动系统时,内核可以更新这个微码。这些来自 Intel/AMD 的微码的更新可以去修复 bug 或者使用补丁来防范 bug,这种方式是在操作系统开始启动后进行加载微码。

参考文献:

https://blog.csdn.net/vic_qxz/article/details/79723072

https://www.sohu.com/a/251871710_100060134

https://wenku.baidu.com/view/f23b94d4360cba1aa811da49.html

https://blog.csdn.net/dengjinge

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值