RISC与CISC指令集的区别

 

RISC 

RISC

reduced instruction set computer

,精简指令集计算机)是一种执行

较少类型计算机指令的微处理器,

起源于

80 

年代的

MIPS

主机

(即

RISC 

机)

RISC

机中采用的微处理器统称

RISC

处理器。这样一来,它能够以更快的速度

执行操作(每秒执行更多百万条指令,即

MIPS

)。因为计算机执行每个指令类

型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,

执行操作也会更慢。

 

1

 RISC

体系的指令特征

 

 

精简指令集:包含了简单、基本的指令,透过这些简单、基本的指令,就可

以组合成复杂指令。

 

同样长度的指令:每条指令的长度都是相同的,可以在一

个单独操作里完成。

 

单机器周期指令:大多数的指令都可以在一个机器周期里

完成,并且允许处理器在同一时间内执行一系列的指令。

 

 

2

 RISC

体系的优缺点

 

 

优点:在使用相同的晶片技术和相同运行时钟下,

RISC

系统的运行速度将

CISC

2

4

倍。由于

RISC

处理器的指令集是精简的,它的记忆体管理单

元、浮点单元等都能设计在同一块晶片上。

RISC

处理器比相对应的

CISC

处理

器设计更简单,

所需要的时间将变得更短,

并可以比

CISC

处理器应用更多先进

的技术,开发更快的下一代处理器。

 

 

缺点:

多指令的操作使得程式开发者必须小心地选用合适的编译器,

而且编

写的代码量会变得非常大。

另外就是

RISC

体系的处理器需要更快记忆体,

这通

常都集成于处理器内部,就是

L1 Cache

(一级缓存)。

 

二、

CISC 

 

CISC

是复杂指令系统计算机

Complex Instruction Set Computer

的简称,

微处理器是台式计算机系统的基本处理部件,

每个微处理器的核心是运行指令的

电路。

指令由完成任务的多个步骤所组成,

把数值传送进寄存器或进行相加运算。

 

1

CISC

体系的指令特征

 

 

使用微代码。指令集可以直接在微代码记忆体(比主记忆体的速度快很多)

里执行,

新设计的处理器,

只需增加较少的电晶体就可以执行同样的指令集,

可以很快地编写新的指令集程式。

 

庞大的指令集。可以减少编程所需要的代码

行数,减轻程式师的负担。高阶语言对应的指令集:包括双运算元格式、寄存器

到寄存器、寄存器到记忆体以及记忆体到寄存器的指令。

 

 

2

CISC

体系的优缺点

 

 

优点:

能够有效缩短新指令的微代码设计时间,

允许设计师实现

CISC

体系

机器的向上相容。

新的系统可以使用一个包含早期系统的指令超集合,

也就可以

使用较早电脑上使用的相同软体。

另外微程式指令的格式与高阶语言相匹配,

而编译器并不一定要重新编写。

 

 

缺点:

指令集以及晶片的设计比上一代产品更复杂,

不同的指令,

需要不同

的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率

 

三、差别

 

所谓

"

体系结构

"

是指程序员在某

CPU

上进行程序设计时能够使用的处理器

资源,其中最重要的是处理器所提供的指令系统和寄存器组。注意体系结构

 

(architecture)

和组成

(structure

)的区别:前者是处理器的逻辑抽象,是程序员关

注的部分。后者是具体实现,一般为计算机系统设计人员关注。一般来说,

arachitecture

structure

是不同层次的概念,但两者也有一定的联系。

 

以指令系统的设计为例:相同的指令系统可以通过“硬连接”或“微程序”

的方法来实现。

前者通过

CPU

的硬件电路来实现,

后者通过

"

微程序

"

来实现。

果指令集以硬连接实现,那么对于复杂指令来说,电路设计就非常困难;反之,

若用微程序来实现指令集,可以实现复杂指令。现代

CISC

处理器一般都使用微

码来实现。

 

在使用微码技术的处理器中,

实际存在着两套不同层次的指令:

一套是面向

程序员的,高层的指令;一套是面向硬件实现的,底层的微码。在指令与微码之

间存在着一个“解释器”

,它将指令翻译成对应的微码序列。由此可以想象,指

令与微码之间的关系实际上时“子程序调用”思想的推广。

 

对于

CISC

RISC

的实现而言

它们所侧重的复杂性不同

: CISC

处理器的实现

复杂性更高

RISC

编译器的复杂性更高

微码相对于指令的特点:

 

 

 

 

1.

微码代表的都是非常简单的基本操作,而指令可能非常复杂。

 

 

 

 

2.

微码的取指操作很快:所有的微码都位于

ROM

中,而指令位于内存中。

[note_1] 

 

 

 

3.

微码的格式很规则,简单。因此易于译码。

 

 

 

 

4.

微码的执行速度很快,而指令相对较慢。

 

 

 

 

从处理器架构来看,可以将使用微码技术的现代

CISC

的基本单元视为一个

快速的

RISC

内核。这样问题就出来了

:

如果不引入“解释器”

,而直接使用

 

RISC

微码作为指令,那会怎样呢?——这正是

RISC

的思想。

 

 

 

 

下面我们来看看使用微码实现的

CISC

指令集的优缺点:

 

 

 

 

CISC

指令集又复杂化的倾向,

即向高级语言看齐,

处理器厂商纷纷提供一些

功能强大的复杂指令,例如:

Intel

针对

X86

处理器在

MOVE

基础上提供了

 

“成

串”

MOVE

指令,可以将内存中数据按字节成块复制,相当于

while (n--) *dest++ = *src++; 

 

 

 

这方便于复制数据结构。

对于其他的复杂操作,

也可以通过一条指令就实现。

CISC

复杂指令的寻址方式也种类繁多,

操作数可以直接来自内存。

但复杂指令为

现代处理器技术中广泛使用的流水线技术引入了问题:

在微处理器中指令的执行

一般分为

“预指”

“取操作数”

“运算”

“存放”

等操作。

对于

CISC 

复杂指令,

他们的执行时间各不相同

[note_2]

(有的可在

4

5

个时钟周期内完成,

有的却需

要几十个,

即便对于简单指令,

也会由于寻址方式的不同造成不同的执行时间)

更糟糕的是,

指令长度也不一致,

同一指令的长度也会因不同的寻址方式而变化。

针对这些指令,

如何设计流水线长度呢?若按最短指令设计流水线,

当碰到复杂

指令时流水线就会发生中断;

若按最长指令设计流水线,

执行较短指令时就会跳

过某些工位,使流水线不能完全充满。

 

 

 

 

针对上述情况,以及

20

80

定律(

80

%的情况下执行的是占指令集

20

%的

常用指令)

。多数复杂指令很少用到。当使用高级语言进行程序设计时,编译器

为了兼容早期的

CPU

一般不会生成特殊的复杂指令。

如果舍弃这些不常用的复

杂指令,就能简化

CPU

的设计。这正是

RISC

的出发点。

 

RISC

的特点

 

1.RISC

指令系统较小:种类的数量较少,只提供简单指令。这些指令大多都能

4

5

个时钟周期内完成。

 

2.

指令的操作数必须预存于寄存器中,这样取指操作的时间也统一了。

 

3.

指令长度,寻址方式,格式都整齐划一:这样可以充分利用流水线,基本上

可实现一个时钟脉冲执行一条指令的目标。

 

4.RISC

的子程序调用与

CISC

的不同:在

CISC

中,程序调用、返回时需将上下文

保存在堆栈中,需要内存操作。而

RISC

将它们存放在寄存器中,而且参数也使

用寄存器传递。

(

若存在嵌套的子程序调用,中间调用过程中的上下文还是要从

寄存器

"

溅出

"(spill)

到堆栈中,而

"

"

子程序不需要。

5.RISC

中断可视为特殊的子程序链接:

CISC

中发生中断时,所有的寄存器内容

都被压入堆栈,而

RISC

对中断进行区分对待,分为轻量级和重量级。对轻量级

中断只保存需要保存的寄存器内容;对重量级中断的处理如同常规中断。

 

6.RISC

都采用流水线、高速缓存、不使用微码。

 

 

 

 

当然,

RISC

也有它的缺点:代码密度不高,可执行文件体积较大,汇编代码

可读性较差。代码密度不高是个值得关注的问题:若不使用

cache

,会需要更大

的指令存储空间,

取指时也占用更大的存储器带宽。

若采用

cache

又会降低

cache

的命中率。

 

RISC 

CISC 

的差异主要有:

 

1. 

内核结构

 

CISC

结构的计算机数据线和指令线是分时复用的,

即所谓的冯

.

诺依曼

Von 

Neumann

)结构,也称普里斯顿结构,是一种将程序指令存储器和数据存储器

合并在一起统一编址的存储器结构。

 

 

采用

RISC

结构的单片机数据线和指令线分离,即所谓的哈佛(

Harward

结构。处理器取指令和取数据可同时进行。

 

2. 

处理器指令集

 

CISC

处理的是不等长指令集,它必须对不等长指令进行分割,因此在执行

单一指令的时候需要进行较多的处理工作。

 

 

RISC

执行的是等长精简指令集,

CPU

在执行指令的时候速度较快且性能稳

定。

RISC

可同时执行多条指令,它可将一条指令分割成若干个进程或线程,交

由多个处理器同时执行,因此在并行处理方面

RISC

明显优于

CISC

 

3. 

指令系统

 

RISC 

设计者把主要精力放在那些经常使用的指令上,

尽量使它们具有简单

高效的特色。对不常用的功能,常通过组合指令来完成。因此,在

RISC 

机器

上实现特殊功能时,

效率可能较低。

但可以利用流水技术和超标量技术加以改进

和弥补。

CISC 

计算机的指令系统比较丰富,

有专用指令来完成特定的功能。

因此,处理特殊任务效率较高。

 

4. 

指令的形成

 

CISC

因指令复杂,故采微指令码控制单元的设计,而

RISC

的指令

90%

由硬体直接完成,只有

10%

的指令是由软体以组合的方式完成,因此指令执行

时间上

RISC

较短,但

RISC

所须

ROM

空间相对的比较大,至于

RAM

使用大

小应该与程序的应用比较有关系。

 

5. 

定址模式

 

CISC

的需要较多的定址模式,而

RISC

只有少数的定址模式,因此

CPU

在计算记忆体有效位址时,

CISC

占用的汇流排周期较多。

 

6. 

指令周期

 

CISC

指令的格式长短不一,执行时的周期次数也不统一,而

RISC

结构刚

好相反,

故适合采用管线处理架构的设计,

进而可以达到平均一周期完成一指令

的方向努力。

 

显然的,在设计上

RISC

CISC

简单,同时因为

CISC

的执行步骤过多,

闲置的单元电路等待时间增长,不利于平行处理的设计,所以就效能而言

RISC

CISC

还是站了上风,但

RISC

因指令精简化后造成应用程式码变大,需要较

大的程式记忆体空间,且存在指令种类较多等等的缺点。

 

7. 

存储器操作

 

RISC 

对存储器操作有限制,

使控制简单化;

CISC 

机器的存储器操作指

令多,操作直接。

 

8. 

程序

 

RISC 

汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,

不易设计。

 

CISC 

汇编语言程序编程相对简单,

科学计算及复杂操作的程序社设计相对

容易,效率较高。

 

9. 

中断

 

RISC 

机器在一条指令执行的适当地方可以响应中断。

 

CISC 

机器是在一条指令执行结束后响应中断。

 

10. 

CPU 

 

RISC CPU 

包含有较少的单元电路,因而面积小、功耗低。

 

CISC CPU 

包含有丰富的电路单元,因而功能强、面积大、功耗大。

 

11. 

设计周期

 

RISC 

微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术。

 

CISC 

微处理器结构复杂,设计周期长。

 

12. 

用户使用

 

RISC 

微处理器结构简单,指令规整,性能容易把握,易学易用。

 

CISC

微处理器结构复杂,功能强大,实现特殊功能容易。

 

13. 

应用范围

 

由于

RISC 

指令系统的确定与特定的应用领域有关,故

RISC 

机器更适合于

专用机。

 

CISC 

机器则更适合于通用机。

 

 

 

 

 

 

 

小结

 

因此,大量的复杂指令、可变的指令长度、多种的寻址方式这些

CISC

的特点,也是

CISC

的缺点,因为这些都大大增加了解码的难度,而在现在的高

速硬件发展下,

复杂指令所带来的速度提升早已不及在解码上浪费点的时间。

了个人

PC

市场还在用

X86

指令集外,

服务器以及更大的系统都早已不用

CISC

了。

x86

仍然存在的理由就是为了兼容大量的

x86

平台上的软件,同时,它的体系结

构组成的实现不太困难。

 

RISC

体系的

ARM

指令最大特点是指令长度固定,

指令格式种类少,

寻址方式种类少,

大多数是简单指令且都能在一个时钟周期内

完成,易于设计超标量与流水线,寄存器数量多,大量操作在寄存器之间进行。

优点是不言而喻的,因此,

ARM

处理器才成为是当前最流行的处理器系列,是

几种主流的嵌入式处理体系结构之一。

 

RISC

目前正如日中天,

Intel

似乎也将最

终抛弃

x86

而转向

RISC

结构。

 

而实际上,

随着

RISC

处理器在嵌入式领域中大放

异彩,传统的

X86

系列

CISC

处理器在

Intel

公司的积极改进下也克服了功耗过高

的问题,成为一些高性能嵌入式设备的最佳选择,发展到今天,

CISC

RISC

间的界限已经不再是那么泾渭分明,

RISC

自身的设计正在变得越来越复杂

(当然

并不是完全依着

CISC

的思路变复杂)

因为所有实际使用的

CPU

都需要不断提高

性能,

所以在体系结构中加入新特点就在所难免。

另一方面,

原来被认为是

CISC

体系结构的处理器也吸收了许多

RISC

的优点,比如

Pentium

处理器在内部的实

现中也是采用的

RISC

的架构,复杂的指令在内部由微码分解为多条精简指令来

运行,但是对于处理器外部来说,为了保持兼容性还是以

CISC

风格的指令集展

示出来。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值