Qua*_*mis 75 linux assembly intel
根据我的阅读,它用于修复CPU中的错误而无需修改BIOS.根据我对汇编的基本知识,我知道汇编指令在内部由CPU分成微码并相应地执行.但是,在系统启动并运行时,intel会以某种方式提供访问以进行一些更新.
有人有更多的信息吗?有没有关于微码可以做些什么以及如何使用它们的文件?
编辑:我已经阅读了维基百科的文章:没有弄清楚我怎么能自己写一些,以及它会有什么用处.
Tho*_*nin 76
在较旧的时代,微代码在CPU中被大量使用:每条指令都被分成微码.这使得适度CPU中的指令集相对复杂(考虑到具有许多操作数模式和8个32位寄存器的Motorola 68000适用于40000个晶体管,而单核现代x86将拥有超过1 亿个).这不再适用.出于性能原因,大多数指令现在都是"硬连线":它们的解释是由任何微码之外的不灵活电路执行的.
在最近的x86中,有些复杂的指令fsin(例如计算浮点值的正弦函数)是用微码实现的,但是简单的指令(包括整数乘法imul)不是.这限制了定制微码可以实现的目标.
话虽这么说,微代码格式不仅非常特定于特定的处理器型号(例如,Pentium III和Pentium IV的微代码不能互相自由交换 - 当然,使用Intel微处理器的AMD处理器不在问题),但它也是一个受到严密保护的秘密.英特尔发布了操作系统或主板BIOS可以更新微码的方法(必须在每次硬复位后完成;更新保存在易失性RAM中),但微代码内容没有记录.在英特尔®64和IA-32架构软件开发人员手册(卷3a)描述了更新过程(第9.11节"微码更新设施"),但声明实际的微码是"加密的"并且是时钟满的校验和.措辞很模糊,几乎可以隐藏任何类型的加密保护,但最重要的是,对于英特尔以外的人来说,目前不可能编写和尝试一些自定义微码.
如果"加密"不包括数字(非对称)签名和/或如果英特尔人以某种方式破坏保护系统,则可以想象一些显着的逆向工程努力可能使人们能够生产这样的微码,但是鉴于可能有限的适用性(因为大多数指令都是硬连线的),就编程能力而言,可能性不会太大.
old*_*mer 17
想一想虚拟机或模拟器,例如qemu-arm可以模拟x86主机上的arm处理器,理想情况下,模拟臂上运行的软件不知道它不是真正的手臂.将这个想法提升到整个芯片设计的水平,使得它看起来总是像x86,软件永远不会知道芯片内部有一些可编程项目.而其他一些处理器在某种程度上是为了实现/模拟x86而设计的.据说流行的AMD 29000产品线刚刚消失,因为硬件团队和处理器/核心成为早期x86克隆的核心.Linus工作的Transmeta有一个vliw处理器,它被制作成低功耗的x86.在那种情况下,翻译层不是(尽可能多)秘密.Vliw,很长的指令词,
不,它不像我暗示的那么多仿真层,没有一些linux在每个芯片内部运行qemu程序.它介于硬连线之间,中间没有软件/微代码和完全打击模拟.可编程位可能像一个FPGA,可编程门,也可能是软件或可编程状态机,这意味着不可编程门,正是在栅极运行是可编程的.
您的非x86,非大铁型处理器.以ARM为例,是硬连线,没有微码.微控制器,PIC,MSP430,AVR,假设这些不是微编码的.基本上不要假设所有处理器都是微编码的,如果有任何处理器系列则很少.只是我们在PC上处理的那些已经存在并且可能仍然存在,所以可能感觉它们都是.
作为乐趣,因为它听起来可能与此微打,很可能非常具体的处理器系列,你可能永远不会访问它是如何工作的,除非你的Intel或AMD,每个可能有自己的内部工作.所以,你需要在这两个中的一个找到工作,然后通过沟渠你的工作方式成为可能什么是一个精英团队,做这项工作之一.一旦你的职业生涯陷入困境,你的技能可能仅限于一家公司的一份工作.你可能有一个显卡上更有趣的编程单独的GPU,这东西是记录或至少具有工具,是你今天可以不用在AMD或英特尔花费10年的时间可能一事无成.
你通常不会写微代码.要做到这一点,需要熟悉CPU微架构.英特尔不会一般性地发布有关其微架构或其微代码的任何信息.
| 归档时间: |
|
| 查看次数: |
94022 次 |
| 最近记录: |