研究 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
起初,这似乎是一种效率更低的完成操作的方式。 由于代码行数较多,需要更多的 RAM 来存储汇编级指令。 编译器也必须执行更多的工作,才能将高级语言语句转换成这种形式的代码。
不过,RISC 策略也带来了一些非常重要的优势。 由于每条指令的执行只需要一个时钟周期,因此整个程序的执行时间与多周期 "MULT "指令的执行时间大致相同。 与复杂指令相比,这些 RISC "精简指令 "所需的硬件晶体管空间更少,从而为通用寄存器留出了更多空间。 由于所有指令的执行时间一致(即一个时钟),因此流水线操作成为可能。
CISC | RISC |
---|---|
强调硬件 | 强调软件 |
包括多时钟复杂指令 | 单时钟,仅精简指令 |
内存到内存:指令中包含 "LOAD "和 “STORE” | 寄存器到寄存器:"LOAD "和 "STORE "是独立指令 |
代码量小,每秒周期多 | 每秒周期少,代码量大 |
用于存储复杂指令的晶体管 | 在内存寄存器上花费更多晶体管 |
将 "LOAD "和 "STORE "指令分开实际上减少了计算机必须执行的工作量。 在执行 CISC 风格的 "MULT "指令后,处理器会自动擦除寄存器。 如果其中一个操作数需要用于另一次计算,处理器必须将数据从内存库重新加载到寄存器中。 在 RISC 中,操作数将保留在寄存器中,直到另一个值被加载到位。
性能公式
下式常用来表示计算机的性能:
t
i
m
e
p
r
o
g
r
a
m
=
t
i
m
e
c
y
c
l
e
x
c
y
c
l
e
s
i
n
s
t
r
u
c
t
i
o
n
x
i
n
s
t
r
u
c
t
i
o
n
s
p
r
o
g
r
a
m
\frac{\mathrm{time}}{\mathrm{program}}\quad=\frac{\mathrm{time}}{\mathrm{cycle}} \mathrm{x}\quad\frac{\mathrm{cycles}}{\mathrm{instruction}}\quad\mathrm{x}\quad\frac{\mathrm{instructions}}{\mathrm{program}}
programtime=cycletimexinstructioncyclesxprograminstructions
CISC 方法试图尽量减少每条程序的指令数,但却牺牲了每条指令的周期数。 RISC 的做法恰恰相反,它以牺牲每条指令的周期数为代价来减少每条指令的周期数。
RISC 路障
尽管基于 RISC 的处理技术具有诸多优势,但 RISC 芯片却花了十多年时间才在商业领域站稳脚跟。 这主要是由于缺乏软件支持。
尽管苹果公司的 Power Macintosh 系列采用了基于 RISC 的芯片,Windows NT 也与 RISC 兼容,但 Windows 3.1 和 Windows 95 在设计时考虑到了 CISC 处理器。 许多公司不愿冒险采用新兴的 RISC 技术。 由于缺乏商业利益,处理器开发商无法大量生产 RISC 芯片,使其价格具有竞争力。
另一个重大挫折是英特尔公司的出现。 虽然英特尔的 CISC 芯片越来越笨重,开发难度也越来越大,但英特尔却有足够的资源进行研发,生产出功能强大的处理器。 尽管 RISC 芯片在某些领域可能会超越英特尔的努力,但两者之间的差距还不足以说服买家改变技术。
RISC 的整体优势
如今,英特尔 x86 可以说是唯一保留 CISC 架构的芯片。 这主要归功于计算机技术其他领域的进步。 内存的价格大幅下降。 1977 年,1MB DRAM 的价格约为 5,000 美元。 到 1994 年,同样数量的内存只需 6 美元(根据通货膨胀率调整)。 编译器技术也日趋成熟,因此,RISC 使用 RAM 和强调软件已成为理想选择。