我正在学习CPU架构,它有点令人困惑。
旧的微编程CISC cpu将ISA指令转换为一系列简单(1周期)微指令是正确的吗?(根据RISC的理念,ISA指令基本上与微指令相同,需要1个周期)根据Wiki:
然而,现代 x86处理器也(通常)解码和分割指令转换成内部缓冲的动态序列微操作…
与旧模型有何不同?
顺便说一句。微指令和微操作是有区别的,还是同义词?
在很久以前。
水平微码通常包含在相当宽的控制存储区中;事实并非如此不常见的是每个字是108位或更多。在a的每一个刻度上时序器时钟的一个微码字被读取、解码,并用于控制组成中央处理器的功能元件
所以对于某些架构来说这是真的。
较新的微码通常用于超标量处理器,因此微码使用问题宽度来并行运行更多的代码,使用其指令的乱序发布,然后重新排序缓冲区确保微码按顺序退役。旧的机器是按顺序工作的,有些还需要一点流水线。
我认为微指令开始微操作
旧的CISC处理器不能翻译。他们直接或通过微码执行ISA。所有cpu都执行一些指令解码(即使它在某些RISC架构中相当微不足道)。在过去,解码会将机器指令一对一地转换为内部微操作。或者机器语言指令会启动一个执行所有步骤的微码序列。
今天,为了从CISC ISA获得良好的性能,执行多种操作的指令(例如,将内存引用与ALU操作相结合)必须被"分解"成多个内部微操作,每个微操作执行更简单的操作。从概念上讲,这与使用微码并没有太大的不同,不同之处在于它是在专用硬件中流水线化的,并且微操作是独立跟踪的,并且相对于其他指令是无序的。此外,您可以将此破解看作是更复杂的指令解码。
正如Timothy所提到的,今天的CISC机器仍然将CISC指令转换为微操作,除了它是以更有效的方式完成的,以允许更积极的乱序执行(更快的时钟速度....等)。
现在,在这些关于指令、微操作、微指令、宏操作、宏/微融合、....等对话中通常抛出的所有术语之间的区别是什么?嗯,这在很大程度上取决于谁在说话:
在AMD的世界里,一个宏操作相当于一个微操作(或uop)在英特尔的世界里。两者都指的是X86指令中断或解码成的微操作之一。两者都是类似risc的指令,很可能是固定长度的。融合是指将两个操作(通常是相互依赖的)融合为一个操作(主要是为了节省解码宽度)。如果这是用实际的x86指令完成的,它被称为M acrofusion ,如果是用微操作完成的,它被称为Micro-Fusion。最后,我认为微指令可以在以前的上下文中用来指微代码的一条指令,或者现在我不明白为什么它不能用来指微操作(或宏操作)。然而,我个人并没有听到很多;我经常听到术语微操作或宏观操作。我希望这对你有帮助