CISC 和 RISC 架构的对比

打印 上一主题 下一主题

主题 546|帖子 546|积分 1638

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

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

CISC 架构

CISC 架构的重要目标是用尽可能少的汇编行完成任务。 实现这一目标的方法是构建能够理解并执行一系列操作的处置惩罚器硬件。 对于这项特殊任务,CISC 处置惩罚器会准备一条特定的指令(我们称之为 “MULT”)。 执行该指令时,会将两个数值分别载入不同的寄存器,在执行单元中将操作数相乘,然后将乘积存储在相应的寄存器中。 如许,整个两数相乘的任务只需一条指令即可完成:
  1. MULT 2:3, 5:2
复制代码
MULT 是所谓的 “复杂指令”。 它直接在计算机内存库中运行,不需要程序员明确调用任何加载或存储功能。 它与高级语言中的下令非常相似。 比方,如果我们让 "a "代表 2:3 的值,让 "b "代表 5:2 的值,那么这条下令与 C 语句 "a = a * b "完全相同。
这种体系的重要优点之一是,编译器只需做很少的工作就能将高级语言语句翻译成汇编语言。 由于代码长度相对较短,因此只需要很少的 RAM 来存储指令。 重点在于直接在硬件中构建复杂的指令。
RISC 架构

RISC 处置惩罚器只使用可在一个时钟周期内执行的简单指令。 因此,上述 "MULT "指令可分为三条单独的指令: "LOAD "下令将数据从内存库移至寄存器,"ROD "下令查找寄存器中两个操作数的乘积,"STORE "下令将数据从寄存器移至内存库。 为了准确执行 CISC 方法中描述的一系列步骤,程序员需要编写四行汇编程序:
  1. LOAD A, 2:3
  2. LOAD B, 5:2
  3. PROD A, B
  4. STORE 2:3, A
复制代码
起初,这似乎是一种效率更低的完成操作的方式。 由于代码行数较多,需要更多的 RAM 来存储汇编级指令。 编译器也必须执行更多的工作,才能将高级语言语句转换成这种形式的代码。
不过,RISC 计谋也带来了一些非常重要的上风。 由于每条指令的执行只需要一个时钟周期,因此整个程序的执行时间与多周期 "MULT "指令的执行时间大致相同。 与复杂指令相比,这些 RISC "精简指令 "所需的硬件晶体管空间更少,从而为通用寄存器留出了更多空间。 由于全部指令的执行时间划一(即一个时钟),因此流水线操作成为可能。
CISCRISC强调硬件强调软件包罗多时钟复杂指令单时钟,仅精简指令内存到内存:指令中包含 "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​=cycletime​xinstructioncycles​xprograminstructions​
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 和强调软件已成为理想选择。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

欢乐狗

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表