RISC架构要求软件来指定各个操作步骤。上面的例子如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读入寄
存器,相乘和将结果写回内存的操作都必须由软件来实现,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR A
DDRA, A。这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计
有更高的要求。
CISC(Complex Instruction Set Computers,复杂指令集计算集)和RISC(Reduced Instruction Set Computers)是两大类
主流的CPU指令集类型,其中CISC以Intel,AMD的X86 CPU为代表,而RISC以ARM,MIPS,RISC-V,IBM POWER PC
为代表。RISC的设计初衷针对CISC CPU复杂的弊端,选择一些可以在单个CPU周期完成的指令,以降低CPU的复杂度,
将复杂性交给编译器。举一个例子,CISC提供的乘法指令,调用时可完成内存a和内存b中的两个数相乘,结果存入内存a
,需要多个CPU周期才可以完成;而RISC不提供“一站式”的乘法指令,需调用四条单CPU周期指令完成两数相乘:内存
a加载到寄存器,内存b加载到寄存器,两个寄存器中数相乘,寄存器结果存入内存a。按照此思路,早期的设计出的RISC
指令集,指令数是比CISC少些,但后来,很多RISC的指令集中指令数反超了CISC,因此,引用指令的复杂度而非数量来区
分两种指令集。