关于CISC和RISC的一些总结

  • CISC和RISC

首先先来介绍一下两个名词,毕竟我第一次看到这个题目,也有一点点懵,所以,先来讲述一下各自的含义。

  1. CISC (Complex Instruction Set Computer)

    复杂指令计算机

CISC是台式计算机系统的基本处理部件,CISC是一种执行整套计算机指令的微处理器,每个微处理器的核心是运行指令的电路。指令由完成任务的多个步骤所组成,把数值传送进寄存器或进行相加运算。

   CISC早期的计算机部件比较昂贵,主频低,运算速度慢。为了提高运算速度,人们不得不将越来越多的复杂指令加入到指令系统中,以提高计算机的处理效率,这就逐步形成复杂指令集计算机体系。

CISC特点:

  1. 指令系统庞大,指令功能复杂,指令格式、寻址方式多;
  2. 绝大多数指令需多个机器周期完成;
  3. 各种指令都可访问存储器;
  4. 采用微程序控制;
  5. 有专用寄存器,少量;
  6. 难以用优化编译技术生成高效的目标代码程序;

在CISC指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%。

  1. RISC(Reduced Instruction Set Computer)

    精简指令集

精简指令集是计算机中央处理器的一种设计模式,这种设计思路对指令数目和寻址方式都做了精简,使其实现更容易,指令并行执行程度更好,编译器的效率更高。

    这种设计思路最早的产生缘自于有人发现:尽管传统处理器设计了许多特性让代码编写更加便捷,但这些复杂特性需要几个指令周期才能实现,并且常常不被运行程序所采用。此外,处理器和主内存之间运行速度的差别也变得越来越大。

    在这些因素促使下,出现了一系列新技术,使处理器的指令得以流水执行,同时降低处理器访问内存的次数。早期,这种指令集的特点是指令数目少,每条指令都采用标准字长、执行时间短、中央处理器的实现细节对于机器级程序是可见的。

RISC特点:

  1. 统一指令编码(例如,所有指令中的op-code永远位于同样的位元位置、等长指令),可快速解译;
  2. 泛用的暂存器,所有暂存器可用于所有内容,以及编译器设计的单纯化(不过暂存器中区分了整数和浮点数);
  3. 单纯的寻址模式(复杂寻址模式以简单计算指令序列取代);
  4. 硬件中支援少数资料型别(例如,一些CISC电脑中存有处理字节字串的指令。这在RISC电脑中不太可能出现)。

 

  • 二者谁更优秀

    看了一篇文章觉得里面的解释非常通俗易懂:

    他说这两类指令集实际上没有孰优孰劣的分别。他打了个比方,他把指令集比作给一个人吃饭所要下达的指令,吃饭有一些详细的步骤,比如1.拿起筷子 2.伸进碗里 3.夹起米饭 4.送进嘴里 5.咀嚼米饭

——那么对于RISC(精简指令集)而言,就是分别把这五条指令一一放在指令集里面,当一个人需要吃饭的时候,就下达这五条指令以让对象执行。

——CISC(复杂指令集)则是把这五条指令融合为一条,这样只需要下达一条“吃饭”的指令,就可以完成所有五个动作。

CISC认为,这样训练复杂的技能后,那么吃饭就不成问题了,而不需要一条条下达指令。而RISC则认为,这样下达指令具有很大灵活性,况且下达比较简单的数条指令对参与的人而言只需要很少的技能就可以完成吃饭动作,如果下一回需要他去吃菜,那CISC还要重新训练此人吃菜的技能。

如果举办一个吃饭大赛,那么CISC肯定获胜,因为他只需要不停下达“吃饭吃饭吃饭”指令就足以完成比赛且获胜。而RISC每次都需要下达五条指令。——但是,如果只需要这个人拿起筷子,对CISC来说就存在一些问题了。

 

CISC到RISC的演变过程

  1. 发展分歧

计算机指令系统指的是计算机的最低层的机器指令,也就是CPU能够直接识别的指令。

随着计算机系统的复杂,要求计算机指令系统的构造能使计算机的整体性能更快更稳定。最初,人们采用的优化方法是通过设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统实现,以此来提高计算机的执行速度,这种计算机系统就被称为复杂指令系统计算机(CISC)。

另一种优化方法是在20世纪80年代才发展起来的,其基本思想是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,而把较复杂的功能用一段子程序来实现,这种计算机系统就被称为精简指令系统计算机(RISC)。

RISC技术的精华就是通过简化计算机指令功能,使指令的平均执行周期减少,从而提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度。

  1. 提出缘由

日趋庞杂的指令系统不但不易实现。而且还可能降低系统性能。CISC存在许多缺点:

首先,在这种计算机中,各种指令的使用率相差悬殊:一个典型程序的运算过程所使用的80%指令,只占一个处理器指令系统的20%。事实上最频繁使用的指令是取、存和加这些最简单的指令。这样一来,长期致力于复杂指令系统的设计,实际上是在设计一种难得在实践中用得上的指令系统的处理器。

同时,复杂的指令系统必然带来结构的复杂性。这不但增加了设计的时间与成本还容易造成设计失误,很难把CISC的全部硬件做在一个芯片上,这也妨碍单片计算机的发展。

因而。针对CISC的这些弊病。帕特逊等人提出了精简指令的设想即指令系统应当只包含那些使用频率很高的少量指令。并提供一些必要的指令以支持操作系统和高级语言。按照这个原则发展而成的计算机被称为精简指令集计算机(ReducedInstructionSetComputer-RISC)结构。简称RISC。

 

理论上,两者确实有区别。

但是以现在的工业水平,两者的区别实际上不存在。现在的 x86 体系根本不是cisc,他表面上接受cisc指令,实际上通过译码器转化成risc,然后底层运行的都是risc指令,换句话说,在通用cpu领域已经完全是risc的天下,因为x86的译码器已经非常成熟,译码是并行进行,等效于没有译码开销,x86跟risc没有效率上的差异。所以说,二者也可以说是优势互补。

 

  • 放眼未来

    通用处理器架构经历了 CISC,RISC之后, 其架构的发展基本已经停滞了。以x86指令集为代表的CISC架构 为了兼容性,坚守自己的地盘,画地为牢.除了几家公司外,已经没人去发展它了,它自身的结构发展也非常缓慢.,当前已经没有新公司会开发一种纯粹的CISC架构的芯片了。

RISC架构也面临很大的窘境.其理论基础建立在 "一个典型程序的运算过程所使用的80%指令,只占一个处理器指令系统的20%。"的统计结果上的. 但是它并没有"处理器指令系统中不常使用的80%的指令应该怎么处理?"的解决方案,只有具体到芯片设计时,才根据具体情况进行取舍.

随着 晶圆工艺的快速提升,在某个方面基本等效于芯片面积增大, 处理器包含的功能已经不像原来那样锱铢必较。显然,原始的RISC思想已经不再合适了,但是我觉得基于RISC架构基础上发展而来的多条指令重叠执行的流水线技术肯定是需要保留的一个处理器核不够用,可能就在一颗芯片上放置多个处理器核。

虽然很多人说通用处理器架构已经非常成熟,可是晶圆工艺的发展,GPU的快速发展,

在并行运算上远远将通用处理器甩在后面,所以我们应该保持一颗敬畏之心,期待之后的发展。

 

参考文献:

  1.  RISC vs. CISC - Stanford Computer Science
  2. Blem, Emily, Jaikrishnan Menon, and Karthikeyan Sankaralingam. "Power struggles: Revisiting the RISC vs. CISC debate on contemporary ARM and x86 architectures." High Performance Computer Architecture (HPCA2013), 2013 IEEE 19th International Symposium on. IEEE, 2013.
  3. 竹林:通用处理器的发展

猜你喜欢

转载自blog.csdn.net/qq_36028921/article/details/83315873