RISC-禁止的指令序列

时间:2018-11-01 11:30:58

标签: risc

计算机系统手册简介显示了CISC和RISC之间的区别,如下所示。

CISC:隐藏在机器级别的实现工件 程式。 ISA提供了干净的抽象 在程序之间以及如何执行它们之间。

RISC:机器级别的实施工件 程式。一些RISC机器禁止特定 指令序列并执行跳转 在执行以下指令之前不会生效。 编译器被赋予优化任务 在这些限制条件下的效果。

我想知道禁止什么“特定指令序列”,为什么?

1 个答案:

答案 0 :(得分:1)

作者试图传达的是,CISC ISA比RISC更好地向程序员隐藏了微体系结构细节。 CISC ISA公开了表示特定操作的指令,这些指令不一定与微体系结构实现可能执行该操作的方式有关。

比方说,我们想将数据从内存位置A移到另一个B - CISC体系结构会将该操作公开为类似于以下内容的指令:“ mov B,A”(macro-op)。现在,可以在微体系结构级别实现此目标的一种方法是分两步执行,即执行两条指令(micro-ops)-将数据​​从A加载到寄存器,然后从该寄存器存储到内存另一种方法是将数据移动转移到协处理器,这样可以更有效地在内存(DMA引擎)中移动数据。无论哪种方式,程序员都可以将操作编码为一条指令(“ mov”指令),而无需了解如何在微体系结构级别实际执行该操作

另一方面,RISC ISA倾向于(尽管not always)在操作实际在处理器中执行时公开操作(即以微操作的形式),程序员编写这些操作是程序员的工作变成可以执行程序员希望程序执行的操作的更复杂的程序。以上作为示例描述的移动操作必须显式编码为两条指令或使用DMA。

作者作为RISC ISA给出的示例公开了实现细节(“工件”),大约为branch delay slots,其中,无论是否采用分支,分支后的指令将始终独立执行。这是由于pipelining of instructions是一种用于加快执行速度的微体系结构技术。在这种情况下,ISA暴露了程序员需要了解的微体系结构细节,以保证程序的正确性。流水线指令还可以创建其他pipeline hazzards,我认为这是作者所谓的“禁止指令序列”。这些指令序列本身并不被禁止,您可以执行它们,但是它们会产生错误的结果。

希望这会有所帮助。