2. CISC体系的优缺点
% W* F8 z7 K* I3 a! {9 y+ e! X/ w- w
1) 优点:能够有效缩短新指令的微代码设计时间,允许设计师实现 CISC 体系机器的向上兼容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软件。另外微程序指令的格式与高级语言相匹配,因而编译器并不一定要重新编写。
$ B; T! G' M+ ~ Y- L; r5 W( g( l' [; x# P; n+ T) a+ W- h
7 N8 e6 X. l0 R) I e
2) 缺点:指令集以及芯片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。
3 Q0 `8 k3 u3 @# T$ n* P/ n2 J7 g/ l8 d% m+ V, M% A
0 }) ?: V8 j4 b* ~
5 W+ |, D+ I$ H# S/ D三、RISC; g, B4 c% S- C* Y
$ z1 z* q* g/ B, G0 r$ Z; I9 |# p1. RISC体系的指令特征
% R; K7 g, t, z$ h7 u7 z/ V
1) 精简指令集:包含了简单、基本的指令,通过这些简单、基本的指令,就可以组合成复杂指令。
4 z% r2 q, N8 X" I
7 ^) v$ N5 H' \8 q5 z# s# z) g7 T+ R& N( ?1 L7 p
' ` L, R7 ~( V
; Q" T2 G! ~$ _" W( @- i2) 同样长度的指令:每条指令的长度都是相同的,可以在一个单独操作里完成。
) K6 z# b# \7 \9 F
: [- Y$ y2 ]6 Y: h1 Q( Y( [* s
% e7 D X) R, R+ {
" v2 }* D4 J: T. \3) 单机器周期指令:大多数的指令都可以在一个机器周期里完成,并且允许处理器在同一时间内执行一系列的指令。
# |7 e8 R: ^/ v& p# t8 r
& c$ a) Q" j( W' o- p. R2 z
' W, p* L. ^) V8 o
8 J V L) j7 v* Z i E( `8 w W) @0 j; |- c
2. RISC体系的优缺点
: D( q1 @3 _ m7 o
1) 优点:在使用相同的芯片技术和相同运行时钟下,RISC 系统的运行速度将是 CISC 的2~4倍。由于RISC处理器的指令集是精简的,它的内存管理单元、浮点单元等都能设计在同一块芯片上。RISC 处理器比相对应的 CISC 处理器设计更简单,所需要的时间将变得更短,并可以比CISC处理器应用更多先进的技术,开发更快的下一代处理器。
4 A# \6 W2 v* s3 d2 Q+ M$ y: H$ ]7 F8 Y
8 H* ]; V$ V' W" I9 I
& U! c& c5 C* V$ c; H$ ^6 X
: J+ q- s$ x% m! ~9 @# I& D
2) 缺点:多指令的操作使得程序开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC体系的处理器需要更快的存储器,这通常都集成于处理器内部,就是L1 Cache(一级缓存)。
" p. }3 n8 k5 N; K
+ x! O0 x3 k! U) y& _
( j) Q% ~, q& F/ Z5 l; F
0 `! N- S2 M$ P, ~8 z m! J* D四、综合对比CISC和RISC
$ s$ Y" o+ v+ w# W8 l, b
1. 指令的形成:CISC 因指令复杂,故采用微指令码控制单元的设计,而RISC的指令90%是由硬件直接完成,只有10%的指令是由软件以组合的方式完成,因此指令执行时间上RISC较短,但RISC所须ROM空间相对的比较大,至于RAM使用大小应该与程序的应用比较有关系。
1 [+ v5 O; B3 U; L# }: B. g& o9 o
8 R k; R1 T' D8 v7 H" I! l$ l; W. L
/ l; m) \. O5 `1 z9 G( o1 \' K. ]2. 寻址模式:CISC的需要较多的寻址模式,而RISC只有少数的寻址模式,因此CPU在计算存储器有效位址时,CISC占用的汇流排周期较多。
$ ?6 o. f" ] o4 L1 i {1 W) S
0 \" K6 x6 _. c: \7 C) ^
- v0 s4 R3 x* D) P
3 z# @: ~7 e0 \3. 指令的执行:CISC指令的格式长短不一,执行时的周期次数也不统一,而RISC结构刚好相反,故适合采用流水线处理架构的设计,进而可以达到平均一周期完成一指令的方向努力。显然的,在设计上RISC较CISC简单,同时因为CISC的执行步骤过多,闲置的单元电路等待时间增长,不利于平行处理的设计,所以就效能而言RISC较CISC还是占了上风,但RISC因指令精简化后造成应用程式码变大,需要较大的存储器空间,且存在指令种类较多等等的缺点。
4 e c( \7 M6 ~/ _
8 n; [' o r# @7 S7 u% D) G
8 S$ ?4 ]* p4 L4 {, a$ N" `- Y/ I" g! l: v7 a, J I% A5 X1 }
五、x86指令集和ARM指令集/ ]8 r8 o% ?, u, w% t5 ?$ c. u: z
2 r1 H0 M- A/ ]+ f1. X86指令集
; L7 ]+ P) ^( Y. |6 q
X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,后来的电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器以及使用X87指令,以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容。
% {9 C+ [( [- u. r3 d8 X% B3 O. B4 ?2 n# s- Z$ F `" D
( A7 ?' Y+ T' A8 E, C- h) j$ F
3 ?. V8 B+ `; a! m( `
2 s8 g X" u& t" F除了具备上述CISC的诸多特性外,X86指令集有以下几个突出的缺点:
" q+ v" ?4 }$ z2 B
% B! E# i* E6 w! q8 C
, ^$ `; D b. X4 L$ F: e4 v0 v
通用寄存器组——对CPU内核结构的影响。X86指令集只有8个通用寄存器,所以,CISC的CPU执行是大多数时间是在访问存储器中的数据,而不是寄存器中的。这就拖慢了整个系统的速度。RISC系统往往具有非常多的通用寄存器,并采用了重叠寄存器窗口和寄存器堆等技术使寄存器资源得到充分的利用。
+ @& \; }& M. I6 X8 e8 \" o3 l; `7 |5 l3 D$ P+ H% v8 r
, W5 a0 G4 G# f9 R
# @+ h0 z% m4 c解码——对CPU的外核的影响。解码器(Decode Unit),这是x86 CPU才有的东西。其作用是把长度不定的x86指令转换为长度固定的类似于RISC的指令,并交给RISC内核。解码分为硬件解码和微解码,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。Athlon也好,PIII也好,老式的CISC的X86指令集严重制约了他们的性能表现。
+ o# f1 r f Y+ [7 ^" R
0 Z: a( s3 r, j8 J. u, [: X _5 j$ l* p9 q5 L' E6 k/ \. {- d. W; y. W+ l; |
0 \8 I, P8 [# R+ [
9 A/ `, ]' Z8 N5 N M) c! x4 f寻址范围小——约束了用户需要。即使AMD研发出X86-64架构时,虽然也解决了传统X86固有的一些缺点,比如寻址范围的扩大,但这种改善并不能直接带来性能上的提升。
V9 ^9 _+ v/ i2 }
7 Z$ u1 ~' U; d9 l
! H# M1 s$ P$ b( U7 p: p: f) B1 z1 x1 @
2.ARM指令集
# f7 Y* ~! ?, o相比而言,以RISC为架构体系的ARM指令集的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高很多。ARM处理器都是所谓的精简指令集处理机(RISC)。其所有指令都是利用一些简单的指令组成的,简单的指令意味着相应硬件线路可以尽量做到最佳化,而提高执行速率,相对的使得一个指令所需的时间减到最短。而因为指令集的精简,许多工作都必须组合简单的指令来完成,而针对较复杂组合的工作便需要由编译器(compiler) 来执行,而 CISC 体系的X86指令集因为硬体所提供的指令集较多,所以许多工作都能够以一个或是数个指令来代替,编译器的工作因而减少许多。
, C8 A' I/ m4 ?& n- O4 L$ H
8 [3 G$ Y; M. j9 K6 T
' J% F" f" X9 R: z" H8 R# U, p: S4 h- M, s j; |- H! z/ _3 E
除了具备上述RISC的诸多特性之外,可以总结ARM指令集架构的其它一些特点如下:
! \4 h# ?: W+ [- ~0 m! {
- b& H# k- \( Z6 M, [+ b r
7 o( a; o/ L# Y$ _7 F$ C4 w$ I7 p" f0 s# B
ARM的特点:
2 X' R [2 k3 ~5 a6 ?1 L
P& H w) N4 s' o" N# h ?; ?4 ?
+ M1 N! v! ?$ l! X& ~1 Z9 f1 M B) f0 X! E2 k' U7 Y, r
ARM的一些非RISC思想的指令架构:
* _5 S- _3 g$ o' [
! E# k8 A( { ?6 Z+ a" \9 U0 i+ e6 Y* m
3 I" `, h$ [) ~) P
六、小结
8 m1 U! d- Y6 T ^$ A, a, n5 d
因此,大量的复杂指令、可变的指令长度、多种的寻址方式这些CISC的特点,也是CISC的缺点,因为这些都大大增加了解码的难度,而在现在的高速硬件发展下,复杂指令所带来的速度提升早已不及在解码上浪费的时间。
& i2 W# ?+ q0 J5 p3 l" N* e$ X: G/ m9 ?. c4 x3 S4 j. s5 [ w" X
0 I4 W4 Z+ I+ { ?8 B
: i6 o3 S7 v; y& Q除了个人PC市场还在用X86指令集外,服务器以及更大的系统都早已不用CISC了。x86仍然存在的理由就是为了兼容大量的x86平台上的软件。同时,它的体系结构组成的实现不太困难。
0 e4 S: x4 v$ q: c" ?, W6 W
. I! Q9 A/ G, W; v
g! S9 J) S& d. X' ?, u! C
而RISC体系的ARM指令最大特点是指令长度固定,指令格式种类少,寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线,寄存器数量多,大量操作在寄存器之间进行。优点是不言而喻的,因此,ARM处理器才成为是当前最流行的处理器系列,是几种主流的嵌入式处理体系结构之一。