CISC与RISC

CPU架构

我们要明白CPU是一个执行部件,它之所以能执行,也是因为人们在里面制作了执行各种功能的硬件电路,然后再用一定的逻辑让它按照一定的顺序工作,这样就能完成人们给它的任务。也就是说,如果把CPU看作一个人,首先它要有正常的工作能力(既执行能力),然后又有足够的逻辑能力(能明白做事的顺序),最后还要听的懂别人的话(既指令集),才能正常工作。而这些集中在一起就构成了所谓的“架构”,它可以理解为一套“工具”、“方法”和“规范”的集合。不同的架构之间,工具可能不同,方法可能不同,规范也可能不同,这也造成了它们之间的不兼容——你给一个意大利泥瓦匠看一份中文写成的烹饪指南,他当然不知道应该干什么了。

简而言之,CPU 架构就是 CPU 的硬件架构,又叫微架构。它其实就是是一堆硬件电路,去实现指令集所规定的操作运算。因为处理器架构就是用硬件电路实现指令集,因此可以说指令集决定了处理器的架构。但是具体用什么样的处理器架构,设计怎样的硬件电路,每个人设计的都可以不一样。因此 CPU 会有不同的架构。百度百科对 CPU 架构的概念定于如下:

CPU 架构是 CPU 厂商给属于同一系列的 CPU 产品定的一个规范,主要目的是为了区分不同类型的CPU 。

CISC 和 RISC 的简单介绍

从CPU发明到现在,有非常多种架构,从我们熟悉的 X86、ARM,到不太熟悉的 MIPS、IA64,它们之间的差距都非常大。但是如果从最基本的逻辑角度来分类的话,它们可以被分为两大类,即所谓的“复杂指令集”与“精简指令集”系统,也就是经常看到的“CISC”与“RISC”。属于这两种类中的各种架构之间最大的区别,在于它们的设计者考虑问题方式的不同。

我们可以举个例子,比如说我们要命令一个人吃饭,那么我们应该怎么命令呢?我们可以直接对他下达“吃饭”的命令,也可以命令他“先拿勺子,然后舀起一勺饭,然后张嘴,然后送到嘴里,最后咽下去”。从这里可以看到,对于命令别人做事这样一件事情,不同的人有不同的理解,有人认为,如果我首先给接受命令的人以足够的训练,让他掌握各种复杂技能(即在硬件中实现对应的复杂功能),那么以后就可以用非常简单的命令让他去做很复杂的事情——比如只要说一句“吃饭”,他就会吃饭。但是也有人认为这样会让事情变的太复杂,毕竟接受命令的人要做的事情很复杂,如果你这时候想让他吃菜怎么办?难道继续训练他吃菜的方法?我们为什么不可以把事情分为许多非常基本的步骤,这样只需要接受命令的人懂得很少的基本技能,就可以完成同样的工作,无非是下达命令的人稍微累一点——比如现在我要他吃菜,只需要把刚刚吃饭命令里的“舀起一勺饭”改成“舀起一勺菜”,问题就解决了。

这就是“复杂指令集”和“精简指令集”的逻辑区别。可能有人觉得明显是精简指令集好,但是我们不好去判断它们之间到底谁好谁坏,因为目前这两种指令集都在蓬勃发展,而且都很成功 —— X86 是复杂指令集(CISC)的代表,而 ARM 则是精简指令集(RISC)的代表,甚至 ARM 的名字就直接表明了它的技术:Advanced RISC Machine——高级 RISC 机。

比较 RISC 和 CISC 的性能没有意义

RISC 和 CISC 之间不好直接比较性能,因为它们之间的设计思路差异太大。这样的思路导致了 CISC 和 RISC 分道扬镳 — 前者更加专注于高性能但同时高功耗的实现,而后者则专注于小尺寸低功耗领域。实际上也有很多事情 CISC 更加合适,而另外一些事情则是 RISC 更加合适,比如在执行高密度的运算任务的时候 CISC 就更具备优势,而在执行简单重复劳动的时候 RISC 就能占到上风,比如假设我们是在举办吃饭大赛,那么 CISC 只需要不停的喊“吃饭吃饭吃饭”就行了,而 RISC 则要一遍一遍重复吃饭流程,负责喊话的人如果嘴巴不够快(即内存带宽不够大),那么 RISC 就很难吃的过 CISC。但是如果我们只是要两个人把饭舀出来,那么 CISC 就麻烦得多,因为 CISC 里没有这么简单的舀饭动作,而RISC就只需要不停喊“舀饭舀饭舀饭”就 OK 了。

CISC 概念

长期来,计算机性能的提高往往是通过增加硬件的复杂性来获得。随着集成电路技术,特别是 VLSI(超大规模集成电路)技术的迅速发展,为了软件编程方便和提高程序的运行速度,硬件工程师采用的办法是不断增加可实现复杂功能的指令和多种灵活的编址方式,甚至某些指令可支持高级语言语句归类后的复杂操作,至使硬件越来越复杂,造价也相应提高。为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外,还通过存于只读存贮器(ROM)中的微程序来实现其极强的功能 ,微处理器在分析每一条指令之后执行一系列初级指令运算来完成所需的功能,这种设计的型式被称为复杂指令集计算机(Complex Instruction Set Computer-CISC)结构。一般 CISC 计算机所含的指令数目至少 300 条以上,有的甚至超过 500 条。

RISC 概念

采用复杂指令系统的计算机有着较强的处理高级语言的能力,这对提高计算机的性能是有益的。当计算机的设计沿着这条道路发展时,有些人没有随波逐流。他们回过头去看一看过去走过的道路,开始怀疑这种传统的做法:IBM 公司设在纽约 Yorktown 的 JhomasI Wason 研究中心于 1975 年组织力量研究指令系统的合理性问题。因为当时已感到,日趋庞杂的指令系统不但不易实现,而且还可能降低系统性能。1979 年以帕特逊教授为首的一批科学家也开始在美国加册大学伯克莱分校开展这一研究。结果表明,CISC 存在许多缺点。

首先,在这种计算机中,各种指令的使用率相差悬殊:一个典型程序的运算过程所使用的 80% 指令,只占一个处理器指令系统的 20%。事实上最频繁使用的指令是取、存和加这些最简单的指令。这样一来,长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器。同时,复杂的指令系统必然带来结构的复杂性,这不但增加了设计的时间与成本还容易造成设计失误。此外,尽管 VLSI 技术现在已达到很高的水平,但也很难把 CISC 的全部硬件做在一个芯片上。这也妨碍单片计算机的发展。在 CISC 中,许多复杂指令需要极复杂的操作,这类指令多数是某种高级语言的直接翻版,因而通用性差。由于采用二级的微码执行方式,它也降低了那些被频繁调用的简单指令系统的运行速度。因而,针对 CISC 的这些弊病,帕特逊等人提出了精简指令的设想,即指令系统应当只包含那些使用频率很高的少量指令,并提供一些必要的指令以支持操作系统和高级语言。按照这个原则发展而成的计算机被称为精简指令集计算机(Reduced Instruction Set Computer-RISC)结构,简称 RISC。

微码/微指令:在使用微码技术的处理器中,实际存在着两套不同层次的指令:一套是面向程序员的,高层的指令;一套是面向硬件实现的,底层的微码。在指令与微码之间存在着一个“解释器”,它将指令翻译成对应的微码序列。其中,微码位于 ROM 中,指令位于内存中。CPU执行时,会经历“取值-译码-执行阶段”。指令在进入 CPU 后,会被译码成微码。

CISC 和 RISC 的区别

我们经常谈论有关”PC”与”Mac”的话题,但是又有多少人知道以 Intel 公司 X86 为核心的 PC 系列正是基于 CISC 体系结构,而 Apple 公司的 Mac 则是基于 RISC 体系结构,CISC 与 RISC 到底有何区别?

从硬件角度来看 CISC 处理的是不等长指令集,它必须对不等长指令进行分割,因此在执行单一指令的时候需要进行较多的处理工作。而 RISC 执行的是等长精简指令集,CPU 在执行指令的时候速度较快且性能稳定。因此在并行处理方面 RISC 明显优于 CISC。RISC 可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交由多个处理器同时执行。由于 RISC 执行的是精简指令集,所以它的制造工艺简单且成本低廉。

此外,CISC 结构的计算机数据线和指令线是分时复用的,即所谓的冯·诺依曼结构(Von Neumann),也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起统一编址的存储器结构。采用 RISC 结构的单片机数据线和指令线分离,即所谓的哈佛结构(Harvard),处理器取指令和取数据可同时进行。

从软件角度来看,CISC 运行的则是我们所熟识的 DOS、Windows 操作系统,而且它拥有大量的应用程序。因为全世界有 65% 以上的软件厂商都理为基于 CISC 体系结构的 PC 及其兼容机服务的,像赫赫有名的 Microsoft 就是其中的一家。而 RISC 在此方面却显得有些势单力薄。虽然在 RISC 上也可运行 DOS、Windows,但是需要一个翻译过程,所以运行速度要慢许多。

目前 CISC 与 RISC 正在逐步走向融合,Pentium Pro、Nx586、K5就是一个最明显的例子,它们的内核都是基于 RISC 体系结构的。他们接受 CISC 指令后将其分解分类成 RISC 指令以便在一时间内能够执行多条指令。由此可见,下一代的 CPU 将融合 CISC 与 RIS C两种技术,从软件与硬件方面看二者会取长补短。

参考文献

[1] ARM与X86不具备可比性 性能差距可大上千倍
[2] CPU 的指令集存放在什么地方

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值