如果我理解这两篇文章,那么英特尔架构的最低级别已经过渡到使用 RISC 指令,而不是英特尔众所周知的传统 CISC 指令集:
http://www.hardwaresecrets.com/article/235/4
http://www.tomshardware.com/reviews/intel,264-6.html
如果是这样,那么 x86/x64 芯片是否仍然是微程序化的,或者它是否像传统的 RISC 芯片一样使用硬连线控制?我猜它仍然是微程序的,但想要验证。
如果我理解这两篇文章,那么英特尔架构的最低级别已经过渡到使用 RISC 指令,而不是英特尔众所周知的传统 CISC 指令集:
http://www.hardwaresecrets.com/article/235/4
http://www.tomshardware.com/reviews/intel,264-6.html
如果是这样,那么 x86/x64 芯片是否仍然是微程序化的,或者它是否像传统的 RISC 芯片一样使用硬连线控制?我猜它仍然是微程序的,但想要验证。
微码已经存在了很长时间,如果这就是您所指的。所以我不知道 HardwareSecrets 文章是关于什么的,除非英特尔现在在 CISC 处理器之上构建 RISC 处理器。
甚至 HardwareSecrets 文章也称它们为微指令。土豆,土豆。
在现代 x86 处理器上,大多数指令在没有微码 (*) 的情况下执行,但一些复杂或不经常执行的指令确实使用微码。
(*) 不要与微操作混淆——在 x86 乱序处理器中,x86 指令通常被解码为一个或多个微操作,然后排队等待执行(没有微代码!) -订单执行管道。
值得注意的是,现代 x86 处理器具有修补/更新微码的功能,以便在现场修复勘误表。
刚刚找到答案。参考 Andrew Tanenbaum 的“计算机系统组织”,第 54 页至第 59 页。英特尔芯片是基于 CISC 的,所有基于 CISC 的芯片都有一个解释器(微代码),可以将复杂的指令分解为小步骤。早些时候,所有芯片都包含微程序。在 1980 年 David Patterson 和 Carlo Sequin 引入 RISC 概念之前,没有 CISC 术语。RISC 代表精简指令集计算机。在今天的时间里,指令集的大小并不重要。RISC 设计中重要的是指令的简单性,但名称“reduced”被卡住了。RISC 设计是关于快速发出越来越简单的指令。一条指令花了多长时间比每秒可以启动多少条指令更重要。同样,使用更快的 CPU ROM 比使用较慢的主存储器 CISC 设计的优势也因同样更快的主存储器的出现而消失。RISC 在性能方面绝对优于 CISC。那么为什么芯片制造商英特尔没有转向 RISC 呢?有两个原因。首先,存在向后兼容性的问题,公司已经为英特尔线投资了数十亿美元的软件。其次,英特尔可以设法在其 CISC 芯片中使用 RISC 的概念。从 486 开始,英特尔 CPU 包含一个 RISC 内核,该内核在单个数据路径周期中执行最简单和最常见的指令,同时以通常的 CISC 方式解释更复杂的指令。我猜英特尔表面上转向了混合方法,以使市场上的面子/名声/商誉与技术进步保持一致。
当前的 x86 CPU 仍然使用微码,因为 x86 指令集相对于典型的 RISC 处理器非常复杂。至少对于某些指令是这样。
在内部,复杂的指令被分解成简单的类 RISC 指令,然后由复杂的类 RISC 内核处理。类似 RISC 的指令有时会重新排序或并行执行。
微编码指令的典型示例是除法和乘法,CISC 和 RISC 都是这种情况。考虑到(相对)很少使用它,在硬件中实现除法是不值得的。乘法实现起来要简单得多,但也可以进行微编码,当然程度不同。根据this document Instruction Latencies and Throughput for ... x86 ProcessorsK10 处理器的 mul 和 div 延迟为 5 和 77 或 15.4X。对于 intel SBR(?),对应的值为 4 和 92 或 23X。关于它们相对复杂性的另一个见解是它们各自的吞吐量:在 K10 上,可以维持每隔一个时钟周期进行一次乘法(2.5 - 5/2 - 同时运行),但每 77 个时钟周期只能维持一次除法(与除法延迟相同) .
其他例子是 sh?d (shift ? double) 和 bs? (位扫描?)。