RISC和CISC指令集以及对应架构芯片

一、引言

        指令集的不同会导致一个处理器的基础结构不同。

        计算机发展至今,CPU 一直是计算机性能提高的关键部件,到目前为止,一共有两大主流的 CPU 架构设计思想,分别是 CISC(复杂指令集计算机)和 RISC (精简指令集计算机)。其中 CISC 是最早出现的架构设计思想,其特点主要是指令编码不等长,指令集复杂,硬件实现,研发成本高;而采用精简指令集(一种比复杂指令集指令条数和复杂程度小得多的指令集)是 RISC 的主要特点,通过大量使用通用寄存器有效减少指令实现的硬件成本,并提高了运算速率。

本文将会先分析两种技术的简介,再从起源,历史发展分析到市场占比,并最终展望未来。

        最早的 CPU 出现在 20 世纪 70 年代,当时的集成电路技术制约了一块芯片上能实现什么,所以它们的指令集都非常有限;以 8 位 CPU 为主,Intel 8080、MOS 6502、MC 6800 就是其中的代表。之后随着超大规模集成电路技术的发展,微处理器发展得非常迅速,指令集也越来越复杂;并且出现了将处理器、RAM、ROM 和 I/O接口等计算机基本部件集成到一个芯片上的微控制器(MCU),这就是 单片机,Intel 的 MCS-51 系列就是其中的代表。

       

现代计算机按照处理器的 指令集架构(Instruction Set Architecture,ISA)主要可以分为两种:

CISC(Complex Instruction Set Computer,复杂指令集计算机)

RISC(Reduced Instruction Set Computer,精简指令集计算机)

        面对越来越多的需求,计算机需要完成的任务越来越重,对计算机性能的要求也越来越高。关于如何提升计算机性能,两种指令集架构代表了不同的思路。

二、CICS和RISC技术的简介

1. CICS

CICS(complex instruction set computer)是复杂指令系统计算机的简称,它的意思就是微处理器架构方式采用不定长的指令集,即复杂指令集的计算机。在计算机微处理器和指令集发展之初,人们就采用复杂指令集的方式。人们通过不断的增加新的复杂指令或增强原有指令的功能来实现一些本来由软件实现的一些功能,简而言之,就是用大量硬件的组合来实现本来通过软件的一系列指令来实现的功能。

在计算机刚出现的前几十年,计算机的性能和成本不成正比,运算速度和主频率都很低,人们为了提高计算机的性能,就逐步的增加复杂指令的条数,这才逐渐形成的 CISC,在早期,复杂指令集运算速度是满足人们的需求的,即使成本较高。但是到了 20 世纪 70 年代,人们逐渐发现随着指令集的越来越复杂,指令条数越来越多,会造成了很严重的“指令浪费现象”。因为在实际应用中,在这大量指令中,只有大约 20%的指令在代码中经常出现,而其他 80%的指令在一般的程序中基本都不会出现一次,这 80%的指令既占用了 CPU 的编译能力,又没有发挥该有的效果,这种现象急需被人们解决。

        CISC 通过设置更多、更复杂的指令来实现更多的功能,这样就可以减少运行程序所需的指令数,依靠硬件提升运行速度。

        这种架构的代表公司就是 Intel,它在 1978 年推出了著名的 16 位微处理器 8086,此后又推出了 80286 和 32 位的 80386、80486 以及 奔腾(Pentium)处理器,因而这一系列的处理器都被称为 “ x86 架构 ”。如今已经进入 64 位时代,这一家族采用的指令集架构称为 “ x86-64 ” 或简称 “ x64 ”,代表就是酷睿(Core)处理器。AMD 公司生产的 CPU 主要也是 x86/64 架构。

CISC 的主要特点如下:

  • 指令数目庞大且复杂。Intel 描述全套指令的文档有 1200 多页;
  • 指令字长是可变的。x86-64 的指令长度可以是 1 ~ 15 个字节;
  • 每个指令可以执行若干简单操作,例如存储器读取、存储、计算操作等,因此很多指令都能进行访存操作,可以对内存中的操作数直接进行算术和逻辑运算;
  • 寻址方式丰富。内存中操作数的指示符可以有各种组合,包括偏移量、基址和变址寄存器以及伸缩因子;
  • 逻辑控制电路复杂,寄存器较少,使用主存中的软堆栈来实现堆栈寻址;
  • 对机器级程序来说,实现细节是不可见的,全部由硬件完成。

 因此,CISC 有着非常明显的优缺点。

优点:

运行程序所需的指令数少,有效提升性能;

更加依赖硬件实现功能,编写软件代码较为简单。

缺点:

指令执行时间差异很大,复杂的指令需要若干时钟周期才可以实现;

指令的使用频率差异很大,很多复杂指令的使用率并不高;

有些指令非常复杂,以至于无法通过组合逻辑电路直接完成,所以需要采用 微程序控制;

编译器能做的优化有限。

2.RISC

鉴于CISC这种指令多而复杂以及“资源浪费”现象,于是人们开始了对指令系统合理性的研究,试图通过 “做减法” 来从另一个角度提升效率,这样就产生了 RISC。

        RISC 的主要思路是减少指令种类、简化指令功能,通过降低单个指令的执行周期数(CPI)来提高 MIPS,从而提升运行速度。

        由于简化了指令集,CPU 芯片就不需要太大的空间来制作逻辑控制电路,而可以加入更多的寄存器,这样就可以让数据运算更快。基于这样的想法,IBM 公司开发出了第一代 RISC 架构计算机;与此同时,斯坦福大学的 RISC 研究课题 MIPS,考虑到了对处理器流水线的优化,研究结果转化成了后来 MIPS 公司的 R 系列产品。

        1985 年,Acom 公司设计出了基于 RISC 指令集的 32 位计算机,简称 ARM(Acorn RISC Machine)。1990 年,Acom 改组为 ARM 公司,专门研发芯片架构、出售芯片技术授权,它的指令集架构就被称为 “ ARM 架构 ”。由于 ARM 架构低功耗、低成本的特点,在嵌入式处理器中得到了非常广泛的应用:智能手机、智能汽车、智能家居等各种领域都可以看到 ARM 架构处理器的身影。

如今 RISC 架构已经发展到第五代,称为 RISC-V,这是一个完全开源的指令集架构,采用宽松的 BSD 协议,企业可以完全自由免费使用,同时也容许企业添加自有指令集进行拓展。

RISC 的主要特点有:

  • 指令数量比 CISC 要少得多;只使用频度较高的简单指令,通过简单指令的组合实现复杂指令功能。早期的 RISC 指令通常少于 100 个;
  • 指令字长是固定的。早期的 RISC 通常将所有的指令都编码为 4 个字节;
  • 允许访存的指令只有 load 和 store,这被称为 load / store 体系结构。因此只能对寄存器中的操作数进行算术和逻辑运算,不能直接对内存中的操作数进行运算;
  • 寻址方式简单,一般所有的 load / store 都通过寄存器中的内容和指令字段中的偏移量来实现;
  • 逻辑控制电路比较简单,有大量的通用寄存器,可以使用硬堆栈来实现堆栈寻址。
  • 对机器级程序来说,实现细节是可见的。因此编译器需要在一些约束条件下进行性能优化;

因此,RISC 的优缺点和 CISC 相比也是非常明显的。

优点:

CPI (执行一条指令所需要的时间)大大降低,并且通过大量寄存器减少了访存次数,有效提升性能;

采用流水线技术,大部分指令在一个时钟周期完成;采用超标量和超流水线技术,可以使每条指令的平均执行时间小于一个时钟周期;

控制器便于设计和实现,采用组合逻辑控制(硬布线),不用微程序控制;

可以利用编译器对程序性能进行优化。

低功耗、低成本

缺点:

指令的种类和寻址方式都比较少,编写软件比较麻烦;有些早期的 RISC 机器甚至没有乘法指令,需要用一系列加法来实现;

对编译器的要求比较高,编译器采用不同的优化策略可以显著改变运行性能;

不同指令系统间兼容性差。

下表中详细列出了 CISC 和 RISC 的特点对比:

对比项目 CISC RISC
指令数量 较少
指令字长 不固定 固定
可访存指令 无限制 Load / Store
各种指令使用频率 相差很大 相差不大
各种指令执行时间 相差较大 绝大多数在一个时钟周期内完成
寻址方式
通用寄存器数量 较少
堆栈寻址 软堆栈 硬堆栈
控制方式 微程序控制 组合逻辑控制(硬布线)
机器级程序实现细节 不可见 可见
编译器 难以优化 需要优化
指令流水线 可以通过一定的方式实现 必须实现
功耗 较高 较低
兼容性 较好 较差
主要应用领域 PC 和服务器 嵌入式设备

 如今,RISC 机器在发展进化的过程中,逐渐引入了更多的指令;而 CISC 机器也会充分利用高性能的流水线结构。商品化的计算机一般都会将 RISC 和 CISC 结合起来,取长补短。

三、CISC 和 RISC 的历史[3]

随着计算机的越加发展,人们逐渐无法容忍大约 80%的指令浪费,IBM 研究院的 John Cocke(后来因为 RISC 获得了图灵奖)首先意识到一个简洁明了的指令系统将使处理器的硬件实现更为简单、有效,不仅如此,编译器对于代码的优化工作也会变得更加简单,于是他带着他的研究小组最先开始这个课题的研究。紧随其后,几位斯坦福大学的教授也认识到这个问题,其中后来举足轻重一位大佬就是当时在伯克利任教的年轻教师 David Patterson 决定带着他的学生们开始研究这个新项目,想要设计出一款比原来的指令集更为简单明了的微处理器来验证自己的猜想,但是他比较着急,在研发成功之前的 1980 年,他就将他对 CISC 的设计的不合理之处的意见发表在了《计算机结构体系通讯》杂志上,这个时候正是 CISC 如日中天的时期,这种反对意见当然会引来许多 CISC 方面大佬的反驳,于是乎引发了 RISC 和 CISC 的第一次“战争”。

由于 David 的研究成果还未做出和 CISC 设计者的权威性,这第一次几乎是以 RISC 的惨败而告终的,加之他的第一组学生做出的处理器并没有达到预期的效果,更是使得 RISC 雪上加霜,招到行业的嘲笑,不过幸运的是,一个较为成功的设计终于是被他的另外一组学生做了出来。1983 年,David 和他的学生们带着他们的成果登上了国际固态电子电路大会(ISSCC)向整个行业介绍了这个优秀的设计。在这里,David 赢得大家的掌声,虽然他们所设计的 CPU 在一系列硬件和技术都落后于同时期的 Intel 设计的 80286 芯片,但是最终他们研究出来的 RISC 架构的 CPU 却在编译器等辅助下,在性能上超过了 Intel 同时期的芯片。

这一结果引起了当时业界的震惊,RISC 也第一次在与 CISC 的竞争中占据上分。

鉴于 RISC 在设计上的优越性,RISC 的设计理念被越来越多的人接受,一大批公司也开始用 RISC 的理念来设计 CPU,在此期间,诞生一大批人们耳熟能详的产品:DEC Alpha、MIPS 和现在统治嵌入式市场的 ARM。RISC 和 CISC 的争论被这一系列的以 RISC 架构的处理器将推向了巅峰,因为 RISC 表现出的潜力,连一直做 CISC 兼容所有产品的 Intel 都犹豫不决,并且在同时期推出了以 RISC 架构的处理器。

在 RISC 最巅峰的时期,服务器市场一度被 RISC 处理器占领,但是好景不长,拥有大量技术积累的 Intel 公司在 20 世纪 90 年代中期通过研发一系列技术弥补了 CISC 的缺点,实现了性能上和 RISC 比肩的 CISC 芯片,为了更好的发展,差不多还是 90 年代中期 ARM 公司也在他们的产品中融入了具有 CISC 元素的 Thumb 指令集。他们的 RISC 处理器也有了 CISC 元素。尽管这个时候仍有人争论这场“战争”到底是谁获胜了,但是这只不过是 RISC 和 CISC 的相互融合罢了。

随着科技的进步,体系结构和微电子技术不断地发展进步,CISC 和 RISC 在指令集结构上造成的性能的差距越来越小,CISC 阵容发起了反击,在服务器市场上,逐渐成了 CISC 阵容的领域。

1. CISC 的优点

(1) CISC 芯片的兼容性。由于人们从一开始就采用的 CISC 架构,所以可以在 DOS,Windows 等操作系统上完美运行,并且拥有大量兼容的应用程序。

(2) CISC 硬件上的要求不严格。因为 CISC 采用的复杂指令集里的指令是不定长的,简而言之不定长就意味着指令设计可以按照怎么好实现怎么设计,要求并不严格。

2. CISC 的缺点

(1) CISC 硬件消耗大。由于指令条数多且冗杂,结构复杂,所以在指令执行速度上不尽人意。

(2) CISC 型 CPU 功耗大,面积大。由于指令条数多,包含的单元电路就多,要想将这些电路串联起来,就需要极其复杂的电路,这就造成了 CPU 的面积偏大,功耗偏大。

(3) 程序执行麻烦。上下文在程序执行过程中需要被保存在堆栈中否则会造成程序执行错误,某些时候甚至还需要调用内存。

3. RISC 的优点

(1) RISC 指令简明扼要,设计方便、简单。采用精简指令集,指令长度定长,且指令格式和寻址方式为了简单,只设计出了几个种类罢了。

(2) 指令执行速度快。只有两个指令(LOAD,STRORE)需要调用内存,其他都在通用寄存器中执行。并且运用了流水线和高速缓存(cache)技术来帮助程序执行,使指令执行速度进一步提高

(3) 编译程序对程序优化能力强。

(4) CPU 面积小,功耗小。单元电路少,构成结构不复杂。

4. RISC 的缺点

(1) 虽然也能在 DOS,WINDOWS 上运行,但是由于人们最开始设计操作系统时并没有考虑 RISC,所以 RISC 在这些操作系统上运行时需要翻译成操作系统能看懂额指令,导致程序执行速度较慢。

(2) 由于面向高级语言,高级语言在编译时需要转换为大量的汇编语言,这些汇编语言需要大量的空间来存储,同时因为优化能力更强,所以设计难度相应变大。

5. 总结

虽然 RISC 和 CISC 有着很多在之前认为相互独立的优缺点,但是随着科技发展和相互融合,现在的两种架构都不是最初的样子了,本身的缺点在融合对方的优点后趋于完美,但是因为材料,物理等学科的局限超大规模集成电路的发展也陷入了瓶颈,只有两者联合在一起相互促进才是新时代科技的发展的正确方向。五、当前市场分析[4]

在 RISC 尚未得到充分发展的早期,它在和 CISC 的竞争中,虽然总体上来看难分难舍,但是很多时候还是 CISC 阵容站上风。ARM 公司在 RISC 阵营中充当主力,而 Intel 公司则是 CISC 阵营的主力,从他们两个公司的产品的市场份额,我们可以推断出 RISC 和 CISC 的竞争情况。

我们首先不得不承认 Intel 的 CPU 的强大,作为 CPU 界的老大哥,在目前来说,他们生产的 CPU 在性能上是优与 ARM 架构的芯片的(来源于不断地积累和对外界的技术壁垒),但是从目前的局面来看却是 Intel 公司和 ARM 公司各分半壁江山。

x86 构架的 CPU 是 Intel 公司的代表产品,他们的产品在 PC 和服务器处理器的市场中占据大约 99%的市场份额,丝毫没有给 ARM 芯片插足的余地,原因有以下两点:

(1) 强大的性能。虽然在设计上来说 RISC 的设计理念比 CISC 更为先进,但是由于其他种种原因,如:制造工艺等。在性能上来看,Intel 的 CPU 是明显优与 ARM 的 CPU 的,这也是为什么很多人选择 Intel 的理由。

(2) 历史原因。由于人们从一开始就是用的是 CISC 来设计芯片,其他的一系列配套设施,如:操作系统(Windows)等对 CISC 芯片是非常兼容的,而对其他的处理器就需要一个翻译的过程,这就会使处理的速度变慢,人们往往因为这种捆绑,而选择 Intel。

但是为什么在移动端的市场上,Intel 却败给了 ARM 呢?

因为在乔布斯刚开始研发 iphone 时,曾想用 Intel 的芯片,但是由于当时移动市场菜刚刚起步,Intel 并没有看得上这块“小蛋糕”,再到后来想进去这个行业也进不来了。更具体的原因也分为以下两点:

(1) Intel 在 PC 和服务器市场的垄断引起了行业的不满。由于在 PC 和服务器市场山,没有人是 Intel 公司的有力竞争对手,包括 AMD 公司,所以 CPU 的价格是 Intel 想定多高就定多高,这就引发了行业的“众怒”,以至于在后来的移动设备市场上,只要能其他的选择,厂商们都不会选择 Intel。

(2) 当然 RISC 在移动端的表现也是可圈可点的。ARM 芯片在手机等智能设备上具有 Intel 芯片难以具备的优势,更关键的是,ARM 是开放的构架,对所有厂商开放架构技术,以致于使得 Intel 陷入“人民战争”的海洋中,这才使得 ARM 芯片在移动端的市场占有度达到 90%以上。

讨论了在移动端、PC 端和服务器端的 Intel 和 ARM 之争,除此之外,在其他领域这两个公司也有竞争,比如工业领域。

在工业控制领域,ARM 处理器在市场份额上占据着巨大的优势,因为 ARM 处理器在对 Intel 处理器的优势主要在于低价和低耗。因为 ARM 处理器的指令集简单,执行功耗低,所以体现在具体层面就有两个巨大的优势:1.开机速度快 2. 能耗低,常年开机还能保持常温并正常运行。ARM 在工业控制领域较之 Intel 处理器有着不小的优势。但是并不是说 ARM 处理器就可以完全取代 Intel 处理器。

Intel 处理器也有很多 ARM 处理器不曾具有的优势。X86 架构的处理器较之 ARM 处理器来说,优势在于功能的多样性和扩展的灵活性。在工业控制领域中有相当一部分地方需要更为人性化的控制,这种地方,X86 架构处理器就比 ARM 处理器具有更大的优势。所以根据市场调研发现,X86 架构处理器在工业领域仍有很大的生存空间。

鉴于 Intel 公司强大的技术,且由于技术的发展,CISC 和 RISC 的界限不再是那么清楚明了了,Intel 的继续强大并在接下来的一段时间内仍然会在 CPU 市场占据统治地位是可以预料的,但是至于 ARM 的未来发展前景,它有着很大的潜力,将来会不会超过 Intel 还是值得讨论的一件事。

六、Intel 公司和 ARM 公司前景分析

由于精简指令集计算机和复杂指令集计算机的争论很大程度上受到以上两家公司的影响,所以接下来,我们分析一下这两家公司的发展前景来展望精简指令计算机和复杂指令集算计的未来。

1. Intel

提到 Intel 公司,我们想到的就是它强大的科研能力,和强大性能的产品。从

1978 年 Intel 与 IBM 公司的交易开始,Intel 着力于个人电脑项目上,推出 8086,

8088 微处理器,8088 微处理器的成功使 Intel 公司进入了世界 500 强,从此一发不可收拾,研发的微处理器对世界的微处理器发展都有举足轻重的作用。

著名的摩尔定律便是 Intel 对世界做的贡献,更有 Intel 公司钟摆理论的带领,奇数年就会推出精密制造新的制造工艺,偶数年推出 CPU 新的架构方式,使世界的处理器研发工作循序渐进的得以发展。

即便做出很多贡献,但是由于它对于行业的垄断行为,如果不改变公司战略的话,很容易被 ARM 超过。就目前而言,虽然 Intel 公司在世界的微处理器行业占领着绝大的优势,但是由于它在移动项目进入与否的决策错误,导致它失去了移动市场这个大市场。再加上 ARM 的强烈攻势,我对未来 Intel 公司的发展前景呈消极态度。

2. ARM

ARM(曾命名 CPU 公司)公司于 1978 年成立,当时由于想要得到 80286 芯片的制造技术遭到拒绝后被迫开始研发芯片。

ARM 公司并不是一个以生产处理器来牟利的公司,它只是将处理器的技术授权给其他厂家,得技术专利费,这导致 ARM 处理器近乎开源,得到大量厂商的支持,并且在移动端市场占领领导地位,是 RISC 国际标准的制定者。

虽然目前来看,ARM 公司的体量比不过 Intel 公司,但是随着 2011 年微软宣布和它的合作,和后来宣布进入服务器,数据中心行业的一系列举动来看,ARM 公司在接下来的发展中有着明确的目标和方向,看得出来会有一个良好的发展前景。更关键的是,总体来说 RISC 的设计理念是比 CISC 更加优秀的,所以我对 ARM 公司的发展前景呈乐观态度。

七、CPU 未来发展展望

伴随着架构体系和微电子技术的发展和进步,精简指令集计算机和复杂指令集计算机在性能(因为架构方式的不同)上差距并不大了,而且,在这么多年的争论中,两者也在不断的相互融合,举个例子来说,CISC 的代表 Intel 公司的产品中都有着明显的 RISC 痕迹,且 ARM 也在吸收 CISC 的优点,比如较新的架构就可以看出其中也有着明显的 CISC 的痕迹。

目前而言,想要单独走一个方向来实现技术突破是一件很难的事,因为受到材料科学和物理学基础等的限制,所以吸取同行的优势来实现自身的进步是一个大势。比较精简指令集和复杂指令集这两者的优缺点都是可以通过相互融合解决的,精简指令集,精简是精简了,代码也等长了,执行也变快了,但是他的缺点也明显,由于代码格式过于规整,硬件实现,设计有困难,并且具有代码密度低的缺点。而复杂指令集的缺点就更加明显了:指令条数多,有几十上百条,指令格式也复杂难懂,编译器难以精确识别和执行,执行速度慢。

目前市场上的 CPU 大都融合了两种 CPU 的长处,一般采用外围 CISC 架构,内部 RISC 架构。两者相互的取长补短使得在硬件和软件方面都有长足的进步,形成了目前的 CPU 设计理念。

为了更好的融合这两种指令集的长处,目前业界有种名为超长指令集的现世,这种指新的令集结合了复杂指令集和精简指令集各自的长处,未来 CPU 发展的方向之一就是这种超长指令级,值得我们去研究。这种技术会使我们 CPU 程序并行能力和处理能力得到进一步加强。

八、结语

因为随着科技的发展,CISC 和 RISC 在架构层面的差距几乎可以忽略不计,所以我们不必纠结于谁比谁更加优秀,处理器的性能的进一步提高,必须从结合

CISC 和 RISC 两者的优点入手。

参考文献:

[1]CISC 和 RISC 技术与计算机性能间的关系_徐默

[2]浅谈 CISC 和 RISC 技术与计算机性能间的关系_布合力其木·艾尔肯

[3] RICS 与 CISC 的纠结_黄博文

[4]以 CPU、操作系统为核心的国内外信息技术产品生态体系现状对比分析_董哲一,王超

[1] CISC 和 RISC 技术与计算机性能间的关系_徐 默

[2] 浅谈 CISC 和 RISC 技术与计算机性能间的关系_布合力其木·艾尔肯

[3] RICS 与 CISC 的纠结_黄博文

[4] 以CPU、操作系统为核心的国内外信息技术产品生态体系现状对比分析 董哲一 ,王超

猜你喜欢

转载自blog.csdn.net/m0_69914734/article/details/143200516