研究 RISC 架构优缺点的最简单方法是将其与其前身进行对比: CISC(复杂指令集计算机)架构。
内存中的两个数字相乘
右图表示一台普通计算机的存储方案。 主存储器被划分为编号从(行)1:(列)1 到(行)6:(列)4 的位置。 执行单元负责执行所有计算。 但是,执行单元只能对装入六个寄存器(A、B、C、D、E 或 F)之一的数据进行运算。 比方说,我们想求两个数字的乘积(一个存储在 2:3 位置,另一个存储在 5:2 位置),然后将乘积存回 2:3 位置。
CISC 架构
CISC 架构的主要目标是用尽可能少的汇编行完成任务。 实现这一目标的方法是构建能够理解并执行一系列操作的处理器硬件。 对于这项特殊任务,CISC 处理器会准备一条特定的指令(我们称之为 “MULT”)。 执行该指令时,会将两个数值分别载入不同的寄存器,在执行单元中将操作数相乘,然后将乘积存储在相应的寄存器中。 这样,整个两数相乘的任务只需一条指令即可完成:
MULT 2:3, 5:2
MULT 是所谓的 “复杂指令”。 它直接在计算机内存库中运行,不需要程序员明确调用任何加载或存储功能。 它与高级语言中的命令非常相似。 例如,如果我们让 "a "代表 2:3 的值,让 "b "代表 5:2 的值,那么这条命令与 C 语句 "a = a * b "完全相同。
这种系统的主要优点之一是,编译器只需做很少的工作就能将高级语言语句翻译成汇编语言。 由于代码长度相对较短,因此只需要很少的 RAM 来存储指令。 重点在于直接在硬件中构建复杂的指令。
RISC 架构
RISC 处理器只使用可在一个时钟周期内执行的简单指令。 因此,上述 "MULT "指令可分为三条单独的指令: "LOAD "命令将数据从内存库移至寄存器,"PROD "命令查找寄存器中两个操作数的乘积,"STORE "命令将数据从寄存器移至内存库。 为了准确执行 CISC 方法中描述的一系列步骤,程序员需要编写四行汇编程序:
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A
起初,这似乎是一种效率更低的完成操作的方式。