从计算机出现,特别是1964年,IBM360系列计算机推出之后,人们一直在改进计算机的结构,不断增强指令系统功能。到了70年代,许多典型计算机的指令系统已经非常庞大,指令的功能相当复杂。表3.6列出了当时四种典型计算机的结构特点。
表3.6 四种典型CISC处理机的结构特点
机型
(生产年代)
IBM370/168
(1973)
VAX-11
(1978)
iAPX 432
(1982)
Dorado
(1978)
指令种类 208 303 222 270
微程序容量 420K 480K 64K 136K
指令长度 16-48 16-456 6-321 8-24
采用的工艺 ECL MSI TTL MSI NMOS VLSI ECL MSI
指令操作类型 存储器-存储器存储器-寄存器寄存器-寄存器 存储器-存储器存储器-寄存器寄存器-寄存器 面向堆栈
存储器-存储器
面向堆栈
cache容量 64KB 64KB 0 64KB
  从表3.6中看到,当时计算机的结构已经非常复杂。指令种类很多,寻址方式复杂,有大量的访问主存储器的指令,许多复杂指令的实现不得不借助于微程序,从而造成微出现容量大幅度增加。
  1975年,IBM公司率先组织力量,开始研究指令系统的合理性问题。在John Coche领导下,于1979年研制出一种用于电话交换系统的32位小型计算机IBM 801,它有120条指令,工作速度10MIPS,这是世界上第一台采用RISC思想的计算机系统。1986年,IBM正式推出采用RISC体系结构的工作站IBM RT PC,并采用了新的虚拟存储技术。
  从1979开始,美国加洲伯克利分校以David Patterson为首的研究小组开展了这方面的研究工作,他们指出CISC存在有多方面的缺点。
  归纳起来,CISC指令系统主要存在如下三方面的问题:
  1.20%与80%定律
  在CISC中,各种指令的使用频度相差很悬殊,大量的统计数字表明,大约有20%的指令使用频度比较大,占据了80%的处理机时间。换句话说,有80%的指令只在20%的处理机运行时间内才被用到。
  我们对Intel8088处理机的指令系统进行了分析研究。在C语言编译程序和PROLOG解释程序中,各种指令的使用频度和执行时间的分布情况见表3.7所示。其中,指令使用频度是指某一种指令在整个程序存储空间中所占的比例,它是静态的。指令执行时间是指某一种指令在整个程序的运行过程中所占的时间比例,这是动态的。
表3.7 Intel8088处理机指令系统使用频度和执行时间统计
指令使用频度 指令执行时间
序号 指令名称 占百分比 累计百分比 序号 指令名称 占百分比 累计百分比
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
MOV
PUSH
CMP
JMPcc
ADD
POP
RET
CALL
JUMP
SUB
INC
LES
REPN
IMUL
DEC
XOR
REPNZ
CLD
LOOPcc
TEST
24.85
10.36
10.28
9.03
6.80
4.14
3.92
3.89
2.70
2.43
2.37
1.98
1.92
1.69
1.37
1.13
0.78
0.54
0.52
0.40
24.85
35.21
45.49
54.52
61.63
65.46
69.38
73.27
75.97
78.40
80.77
82.75
84.67
86.36
87.73
88.86
89.64
90.18
90.70
91.10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
IMUL
MOV
PUSH
JMPcc
CMP
CALL
RET
ADD
JMP
LES
POP
DEC
SUB
XOR
INC
LOOPcc
LDS
CMPS
MOVS
JCXZ
19.55
17.44
11.11
10.55
7.80
7.27
4.85
3.27
3.26
2.83
2.61
1.49
1.18
1.04
0.99
0.64
0.64
0.44
0.39
0.37
19.55
36.99
48.10
58.65
66.45
73.72
78.57
81.84
85.10
87.93
90.54
92.03
93.21
94.25
95.24
95.88
96.52
96.96
97.35
97.72

21
22
23
24
25
26
27
28
29
30

SYI
LDS
LODS
AND
SHR
STOS
MOVS
JCXZ
SH/AL
CMPS
0.40
0.39
0.35
0.35
0.33
0.31
0.29
0.29
0.27
0.27
91.50
91.89
92.24
92.59
92.92
93.23
93.52
93.81
94.08
94.35
21
22
23
24
25
26
27
28
29
30
LODS
REPN
INTcc
STOS
SHR
LEA
OR
REPNZ
AND
TEST
0.31
0.28
0.26
0.25
0.23
0.12
0.11
0.11
0.09
0.09
98.03
98.31
98.57
98.82
99.05
99.17
99.28
99.39
99.48
99.57