【发布时间】:2019-07-15 01:27:26
【问题描述】:
我一直在研究微码,想知道术语。
微码的“经典”用法是用微码代替处理器控制逻辑来生成处理器控制信号。但是有一些系统走得更远,用微码实现操作系统的低级部分,最著名的是 Xerox Alto,还有像 Datapoint 6600 和较小范围内的 IBM 360 这样的系统。在这些系统中,执行指令只是微码的一项任务,而不是微码的重点。这种风格的微码有什么说法吗? “微编程”几乎适合,但一般用于微代码编程。
我想知道的第二个维度:在某些系统中,微架构与程序员级别的架构几乎相同,可能有一些额外的内部寄存器,例如 68000。但在其他系统中,可见的架构在微架构中本质上是无法识别的。例如,不同的 IBM 360 模型具有完全不同的微体系结构,但具有相同的程序员级体系结构。我的第二个问题是,是否有一个术语来描述微架构与可见架构完全不同的系统?
(我知道垂直微码和水平微码,但这是不同的。另外,我使用的示例很旧,但这不是逆向计算问题。)
【问题讨论】:
-
也相关:“微码”的现代含义,其中大多数指令解码为单个内部操作并直接执行,但少数指令是微码的。尤其是现代 x86,例如内存目标添加并不是真正的微编码,而是解码为单独的加载/添加和存储微指令。但是英特尔对
idiv的实现就像是微码定序器的10 uop。 What is a microcoded instruction?。而rep movs在内部循环。当然,像syscall这样的指令也被微编码了尽可能多的微指令。 -
@PeterCordes en.wikipedia.org/wiki/… 怎么样?这就是他所说的一个例子,对吧?
-
@JerryJeremiah:
PCLMULQDQ在支持它的早期 CPU 中被微编码(例如,Sandybridge 上的 18 微指令:agner.org/optimize 指令表),只是为了获得兼容性并仍然获得一些加速。一旦使用它的软件开始变得更加普遍,晶体管预算攀升,英特尔添加了更专业的硬件,可以在 Haswell 上以 3 uop 的方式运行它(从这个意义上说, -
@JerryJeremiah:AESENC / AESDEC 指令从未被大量微编码;他们每条指令只执行一轮 AES,因此由软件来循环循环,而不是微码。如果它们被大量微编码,它将破坏性能目的。按键设置指令不必很快并且是微编码的。例如Sandybridge AESENC/DEC 是 2 uop,AESKEYGENASSIST 是 11。Haswell/Skylake AESENC/DEC 是 1 uop,而 AESKEYGENASSIST 仍然是 10 或 13 uop。 Skylake 改进了延迟,以使不会在多个流上交错工作的代码受益。
-
@JerryJeremiah:如果你的意思是“与内部架构不同的可见架构”,再次不。这只是单个指令的实现。他们操作的寄存器仍然是架构 x86 SIMD 寄存器。 (它们在内部重命名为物理寄存器文件(或 P6 系列中的 ROB),但这是通过固定硬件而不是微码来完成的,以便能够在每个时钟重命名 4 个寄存器。)使用可能使用的微码模拟单个复杂指令tmp regs 就像 OP 所说的 68000。那个 ucode 可以被固定功能的硬件替换。
标签: cpu-architecture terminology microcoding