从我读到的内容来看,它用于修复CPU中的错误,而无需修改BIOS。根据我对汇编的基本知识,我知道汇编指令在内部由CPU分解为微代码,并相应地执行。但是intel以某种方式可以在系统启动和运行时进行一些更新。
有人有更多信息吗?是否有关于微码可以做什么以及如何使用的文档?
编辑:我读过维基百科的文章:没弄清楚我怎么能自己写一些,以及它有什么用。
在较早的时期,微代码在CPU中大量使用:每条指令都被拆分为微代码。这可以在适度的CPU中启用相对复杂的指令集(考虑到具有许多操作数模式和八个32位寄存器的Motorola
68000可以
安装在40000个晶体管中,而单核现代x86将拥有超过1 亿个
)。这不再是真的。出于性能原因,现在大多数指令都是“硬连线”的:它们的解释是由任何微代码外部的非柔性电路执行的。
在最近的x86中,可能有一些复杂的指令(例如fsin
(在浮点值上计算正弦函数)用微码实现),而简单的指令(包括与imul
进行整数乘法)却没有。这限制了使用自定义微代码可以实现的目标。
话虽这么说,微码格式不仅非常特定于特定的处理器型号(例如,奔腾III和奔腾IV的微码不能彼此自由交换-
而且,当然,将英特尔微码用于AMD处理器已不可行了)问题),但它也是受严格保护的秘密。英特尔已经发布了一种操作系统或主板BIOS可以更新微码的方法(必须在每次硬重置后完成;更新保存在易失性RAM中),但是微码
内容
未记录在案。在英特尔®64和IA-32架构软件开发人员手册(第3a卷)描述了更新过程(第9.11节“微码更新工具”),但指出实际的微码已“加密”并且校验和已满时。措词含糊不清,几乎可以隐藏任何种类的密码保护,但最重要的是,对于除英特尔以外的其他人来说,当前不可能编写和尝试一些自定义微代码。
如果“加密”不包含数字(非对称)签名,并且/或者如果英特尔员工以某种方式破坏了保护系统,那么可以想到,一些非凡的逆向工程工作 可能
使人们能够产生这种微代码,但是鉴于适用性可能有限(由于大多数指令都是硬接线的),就编程能力而言,这样做的机会不大。
本人背景算法工程师,cv方向论文两篇,nlp实习经历。 一轮 25min 自我介绍 询问项目论文 问题:resnet架构、c++程序执行过程 反问 二轮 40min 自我介绍 询问项目论文(论文很细致,结构、损失、数据集、实验结果、创新点) 问题:Transformer架构、核心公式以及采用什么的正则化、BN和LN的区别。其实大部分是根据论文内容发散 反问 三轮HR面 25min 没有自我介绍 问
我正在对代码中性能关键的部分进行微优化,并遇到了指令序列(在 我想我终于有了一个xchg的用例,它可以让我删除指令并编写: 然而,令我惊讶的是,我从Agner Fog的指令表中发现,是一个3微操作指令,在Sandy Bridge、Ivy Bridge、Broadwell、Haswell甚至Skylake上具有2个周期延迟。3个完整的微操作和2个周期的延迟!3个微操作丢弃了我的4-1-1-1节奏,2
众所周知,NaN在算术中传播,但我找不到任何演示,所以我写了一个小测试: 这个例子(在这里实时运行)基本上产生了我所期望的(消极有点奇怪,但它有点道理): 2015年MSVC奥运会产生了类似的东西。然而,英特尔C 15生产: 具体来说,。 这...不可能是对的,对吧?相关标准(ISO C,ISO C,IEEE 754)对此有什么说法,为什么编译器之间的行为会有差异?
在Barry B. Brey的《智能微处理器》一书中写道 在64位模式下不允许,但在32位或16位模式下允许。如果可以在64位模式下允许MOV AL,1,那么MOV AH,1有什么问题?
英特尔建议使用指令前缀来减轻JCC勘误的性能后果。 如果使用QIntel jcc勘误表编译MSVC,则遵循建议,并插入前缀指令,如下所示: 他们说当前缀不可能时,MSVC会求助于NOP。 Clang对此有选项,如果需要,它更喜欢多字节(https://godbolt.org/z/399nc5Msq注意:xchg ax,ax 3E前缀的后果是什么,具体来说: 为什么Intel推荐这一点,而不是多字节
问题内容: 每次与Hotspot一起使用时,都不得不烦恼我,不得不阅读可怕的AT&T语法。 有没有办法告诉它使用英特尔语法? 问题答案: 您所需要做的就是将一些选项解析到dis-asm.h和binutils代码上 对于Intel Asm(我也更喜欢),只需添加以下内容 如果您需要组合选项,请像这样用逗号分隔 任何未被识别为hsdis选项的内容都将被提供给反汇编程序,这些选项与您从中看到的选项相同