CISC 和 RISC 架构的对比

研究 RISC 架构优缺点的最简单方法是将其与其前身进行对比: CISC(复杂指令集计算机)架构。

内存中的两个数字相乘

右图表示一台普通计算机的存储方案。 主存储器被划分为编号从(行)1:(列)1 到(行)6:(列)4 的位置。 执行单元负责执行所有计算。 但是,执行单元只能对装入六个寄存器(A、B、C、D、E 或 F)之一的数据进行运算。 比方说,我们想求两个数字的乘积(一个存储在 2:3 位置,另一个存储在 5:2 位置),然后将乘积存回 2:3 位置。

CISC 架构

CISC 架构的主要目标是用尽可能少的汇编行完成任务。 实现这一目标的方法是构建能够理解并执行一系列操作的处理器硬件。 对于这项特殊任务,CISC 处理器会准备一条特定的指令(我们称之为 "MULT")。 执行该指令时,会将两个数值分别载入不同的寄存器,在执行单元中将操作数相乘,然后将乘积存储在相应的寄存器中。 这样,整个两数相乘的任务只需一条指令即可完成:

c 复制代码
MULT 2:3, 5:2

MULT 是所谓的 "复杂指令"。 它直接在计算机内存库中运行,不需要程序员明确调用任何加载或存储功能。 它与高级语言中的命令非常相似。 例如,如果我们让 "a "代表 2:3 的值,让 "b "代表 5:2 的值,那么这条命令与 C 语句 "a = a * b "完全相同。

这种系统的主要优点之一是,编译器只需做很少的工作就能将高级语言语句翻译成汇编语言。 由于代码长度相对较短,因此只需要很少的 RAM 来存储指令。 重点在于直接在硬件中构建复杂的指令。

RISC 架构

RISC 处理器只使用可在一个时钟周期内执行的简单指令。 因此,上述 "MULT "指令可分为三条单独的指令: "LOAD "命令将数据从内存库移至寄存器,"PROD "命令查找寄存器中两个操作数的乘积,"STORE "命令将数据从寄存器移至内存库。 为了准确执行 CISC 方法中描述的一系列步骤,程序员需要编写四行汇编程序:

c 复制代码
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 和强调软件已成为理想选择。

相关推荐
Splashtop高性能远程控制软件18 小时前
本地部署 vs 公有云 vs 混合架构:一份可对照落地的 IT 架构选型指南
运维·架构·远程控制·splashtop
Sirius Wu18 小时前
OpenClaw 并发安全完整详解
网络·人工智能·安全·ai·架构·aigc
Coffeeee18 小时前
Android功耗优化,哪些代码会让你的机子发热又耗电
android·架构·kotlin
拥抱太阳061618 小时前
HarmonyOS 应用开发《掌上英语》第7篇-项目演进路线从单页面到多模块架构升级
架构
ai_coder_ai18 小时前
论模型驱动分析方法及应用
微服务·云原生·架构
咖啡八杯18 小时前
GoF设计模式——状态模式
java·面试·架构
Briwisdom19 小时前
LLM 推理引擎架构:vLLM / SGLang 的核心设计
架构·vllm·sglang·pagedattention·radixattention
禅思院19 小时前
AI对话前端从入门到崩溃:一个长对话引发的五层优化战争【五】
前端·架构·前端框架
herosunly1 天前
60ms 不是启动快,而是不用重新启动:CubeSandbox 极速冷启动架构拆解
架构·cube sandbox
zlinear数据采集卡1 天前
从气动比例阀到任意波形:硬核拆解ZLinear采集卡的DAC输出架构与工业闭环控制实战
arm开发·架构