英特尔处理器是怎样运行的

英特尔处理器是怎样运行的,第1张

英特尔处理器是怎样运行的?当我们打开计算机时,它会在能够加载 *** 作系统之前经过一系列步骤。在这篇文章中,我们将看到典型的x86处理器如何启动。这是一个非常复杂且涉及的过程。我们只提出一个基本的整体结构。此外,处理器实际上采用何种路径来达到可以加载OS的状态,这取决于引导固件。

施加电源之前

让我们从BIOS芯片开始,也称为引导ROM。BIOS芯片是计算机主板上的一块硅片,它可以存储字节。它有两个我们感兴趣的特征。首先,它(或其中的一部分)是内存映射到CPU的地址空间,这意味着CPU可以像访问RAM一样访问它。特别是,CPU可以将其指令指针指向BIOS芯片内的执行代码。其次,BIOS芯片存储的字节代表CPU执行的第一个指令。BIOSchop还包含其他代码和数据。典型的BIOS包含闪存描述符(BIOS芯片的内容表),BIOS区域(要执行的第一条指令),IntelME(Intel管理引擎)和GbE(千兆以太网)。如你看到的,

通电时

现代英特尔芯片配备了所谓的英特尔管理引擎。只要有电源-通过电池或电源-IntelME就会出现。它执行自己的初始化,要求它读取BIOS的闪存描述符以查找IntelME区域的位置,然后从BIOS的IntelME区域读取代码和配置数据。接下来,当我们按下计算机上的电源按钮时,CPU会亮起。在多处理器系统上,始终存在一个名为BootstrapProcessor(BSP)的指定处理器。在任何一种情况下,处理器总是以所谓的16位实模式启动,其中insrucTIon指针指向地址0xffff.fff0,即复位向量。在此初始模式下,处理器有前12个地址线被断言,因此任何地址都看起来像0xfffx.xxxx。

BIOS芯片也以这样的方式设置,即从BIOS执行的第一条指令位于处理器的物理地址0xffff.fff0。因此,处理器能够从BIOS芯片的BIOS区域执行第一条指令。该区域包含所谓的引导固件。引导固件的示例是UEFI实现,coreboot和经典BIOS。

引导固件的第一件事就是切换到32位模式。它也是“保护模式”,即打开分段,并且可以使用不同的访问权限管理处理器地址空间的各个段。然而,启动固件只有一个段,有效地关闭了分段。这称为平面模式。

早期的初始化

值得注意的是,在启动过程的这一点上,DRAM不可用。DRAM初始化是启动固件的主要目标之一。但在它初始化DRAM之前,它需要做一些准备。

当然所有这些都是由某人编写的代码固件完成的。现在我们知道的大多数代码都使用堆栈。但我们已经提到DRAM尚未初始化,因此没有内存。那么这段代码是如何编写和运行的呢?答案是这是无堆栈代码。要么它是手写的x86汇编,要么就像coreboot一样,它是用C语言编写的,并使用称为ROMCC的特殊编译器进行编译,该编译器将C转换为无堆栈汇编指令。这当然有一些限制,所以ROMCC编译代码不是我们想要执行的所有内容。我们需要尽快堆叠。

责任编辑:ct

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2508176.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存