也许这是一个基本的理论问题,但我不知道答案,也没有找到有关这方面的信息。
操作系统(例如 Windows 或 Linux 发行版)是否需要知道它们是在一种微架构还是另一种微架构中执行(例如在 Intel Sandy Bridge 架构还是在 Intel Haswell 架构上)?或者操作系统对这些细节一无所知?
操作系统是用户和微处理器架构之间的“桥梁”,这一事实让我认为操作系统确实需要知道这些细节,因为操作系统的某些方面在 Intel Sandy Bridge 和 AMD Bulldozer 上的运行可能并不完全相同。
如果答案是肯定的,那么硬件如何与操作系统(即它的架构)进行通信?
答案1
就操作系统而言,Intel 和 AMD x86(以及 x86_64)是相同的处理器“架构”。“核心”指令集相同,并定义了最低级别的处理器功能。
处理器的运作方式可能完全不同内部甚至身体上,但就指令的机器代码(十六进制字节)而言,它们是相同的。它们具有相同的外部架构(x86),但不同内部的架构(通常称为 uArch 或微架构)。
因此,从系统固件 (UEFI)(负责基本的主板启动和处理器初始化)到操作系统的初始移交在 AMD 和 Intel 上是相同的,因为加载字节和选择代码路径的指令是相同的。一旦启动代码运行,它就可以开始加载库,这些库可以检测 CPU 扩展并根据找到的内容运行优化的代码。
ARM 和 x86 在内部和外部都是完全不同的架构,相同的机器代码字节将产生完全不同或不起作用的代码,因此必须编译引导可执行文件以针对其运行的特定架构,以便生成正确的机器代码。