如果开发了一个操作系统,比如说“Linux”,那么针对不同的微架构(Intel Pentium 和 AMD Athlon)的需要(配置)的编写方式是否会略有不同?
我从一个堆栈交换线程中看到,AMD x64 的 Linux 二进制文件也可以在 Intel x64 架构上运行 在此处输入链接描述
也就是说,即使 Intel Pentium 和 AMD Athlon 共享相同的 ISA (x86),难道它们的 Linux 源代码不应该有所不同吗?原因是它们的 ISA 实现不同,使用不同的控制和数据寄存器组!
答案1
我无法理解这个概念的核心,但是收集了足够的信息来让我相信操作系统是基于 ISA(例如:x86 和 x64)而不是微架构(Intel Pentium 和 AMD Athlon)而不同的。
一个简单的类比是 -
ISA就好像C 语言;‘标准’,做某事时须遵循的标准。
然而微架构就好像C 编译器;“一项实施”来执行这些规则或标准。
摘自维基百科 -微架构
给定的 ISA 可以用不同的微架构来实现;由于给定设计的不同目标或技术的变化,实现可能有所不同。
ISA 大致与汇编语言程序员或编译器编写者所看到的处理器的编程模型相同。ISA 包括执行模型、处理器寄存器、地址和数据格式等。微架构包括处理器的组成部分以及它们如何互连和互操作以实现 ISA。
具有不同微架构的机器可能具有相同的指令集架构,因此能够执行相同的程序。新的微架构和/或电路解决方案以及半导体制造技术的进步使得新一代处理器在使用相同 ISA 时能够实现更高的性能。
区分不同微架构但仍实现相同 ISA 的因素包括:
执行单元对于微架构也至关重要。执行单元包括算术逻辑单元 (ALU)、浮点单元 (FPU)、加载/存储单元、分支预测和 SIMD。这些单元执行处理器的操作或计算。执行单元的数量、延迟和吞吐量的选择是微架构设计的核心任务。系统内内存的大小、延迟、吞吐量和连接性也是微架构决策。
系统级设计决策(例如是否包含外设,如内存控制器)可视为微架构设计过程的一部分。这包括对这些外设的性能级别和连接性的决策。