CISC和RISC有什么区别?


回答 1:

RISC通常是“加载存储”到寄存器或从寄存器“存储”。 通常使用三个寄存器,例如ADD R1 = R2 + R3,在一条指令中仅使用两个寄存器时,加载和存储可能会或可能不会例外。

CISC通常允许使用内存地址中的值进行计算,而无需先将它们存储到寄存器中。 它还可以具有更多(复杂)的寻址模式,从而允许一个或多个寄存器用于地址生成。

CISC通常是二操作数,例如ADD具有用于目标的相同寄存器(或内存地址),但也用于源之一。

过去这很重要,RISC进行了硬连线,CISC使用了微码。

现在,用于CISC的微体系结构至少为x86(如果不是所有的CISC都在使用中,则意味着IBM大型机是唯一尚存的其他CISC;微控制器可能是个例外)将指令分解为可以调度的微操作(类似于micro / RISC的操作) -order与原始微码不同。

RISC甚至可以做到这一点,例如,更新的ARM(起初不是),因此差异小于以前。

原始ARM没有整数除法指令,因为它太复杂了,更不用说浮点数了。 现在,由于浮点本来就很复杂,并且所有主要的RISC CPU甚至支持平方根和三角指令,因此RISC中R的降低的[复杂性]的应用较少。


回答 2:

CISC经过优化,可以根据给定的指令大小执行尽可能多的工作。 这是因为当时CPU还没有缓存,并且从内存中读取指令将花费多个周期,因此只要状态紧凑,一条具有许多状态更改的复杂指令就不会成为问题。

RISC针对具有指令高速缓存并改变瓶颈的CPU进行了优化:只要对齐,高速缓存可以轻松地在每个周期为您提供64位和128位数据。 突然,只要没有依赖性,您就可以在每个周期中运行1条甚至2条指令,因此仅引起单个状态更改的干净指令变得更快。


回答 3:

CISC经过优化,可以根据给定的指令大小执行尽可能多的工作。 这是因为当时CPU还没有缓存,并且从内存中读取指令将花费多个周期,因此只要状态紧凑,一条具有许多状态更改的复杂指令就不会成为问题。

RISC针对具有指令高速缓存并改变瓶颈的CPU进行了优化:只要对齐,高速缓存可以轻松地在每个周期为您提供64位和128位数据。 突然,只要没有依赖性,您就可以在每个周期中运行1条甚至2条指令,因此仅引起单个状态更改的干净指令变得更快。