第四章 数据表示和指令系统
数据类型和表示
指令系统设计原理和优化
RISC计算机本章要点
浮点数据表示 IEEE标准及应用
自定义数据表示定义,分类及优点
哈夫曼概念及在计算机中应用,操作码编码法
指令系统编码方法,指令系统设计原则
两种指令系统风格,特点 ( RISC、
CISC)
简述 RISC的主要技术
4.1 引言
( 1)考虑计算机面向的应用领域,程序设计语言,编译程序,操作系统直到硬件构成等诸多因素。
( 2)如何继承软件资产,保证软件向后兼容和向上兼容也是要加以考虑的现实问题。
指令系统,又称指令集( instruction set) 是计算机体系结构设计的核心,是计算机软、硬件接口,是用机器语言汇编语言编写程序的用户所能看到的计算机基本属性。
4,1,1 传统计算机指令系统的设计技术总之要对执行性能,软、硬件开发费用,可靠性等各种因素间的矛盾,综合权衡考虑。设计一种新的指令系统,从提出指令系统的编码到实现这种指令系统的硬件要经过几次反复。
( 1)根据计算机未来用途及通常机器指令集拟出初步指令系统设计及实现,
( 2)编出这套指令系统设计的编译程序,
( 3)进行模拟测试,研究这套指令操作码,寻址方式及其他效能,
( 4)进行指令系统的优化。
( 5)如此反复进行,要充分考虑计算机应用和对各类高级语言执行效率,并对大量算法进行测试,使机器效能最高。
计算机指令系统的设计技术基本过程:
现代计算机指令系统设计必须由 编译程序设计人员 同 系统结构设计人员 共同配合进行传统计算机指令系统的设计。
完备性,要求计算机的所有功能操作都包含在指令系统中,指令系统愈丰富,功能愈强,编译程序愈好写好用,
运用范围愈广。
指令系统设计规则:
规整性,均匀性,要使相似的操作具有相同的规定,所有操作都均匀对称地在存储器和寄存器单元间进行,尽可能甚至不出现例外情况和特殊用法。
正交性,编译程序设计人员希望数据类型、寻址方式、
操作类型都互相独立,这样便于处理,也减轻编译负担。
可组合性对称性,指令系统对所有的寻址方式和所有数据类型都能适用,减化编译程序的代码生成。
从系统结构设计人员角度出发,指令系统还应考虑到:
兼容性,指令系统设计多次反复,注意简单周到,还应注意系列机中软件兼容性.
可扩性,保留一定余量的操作码空间,为以后扩展用,
并适应工艺技术的新发展。
指令码高密度性,对于那些频度高的指令串可以进行优化,设计新指令代替,提高指令码密度,减少存储容量和访问存储器次数,以提高效率。
4.1.2 指令系统发展的两种途径 CISC,RISC
(一 )复杂指令集计算机( CISC)
(二 )精简指令系统计算机( RISC)
通过减少指令总数和简化指令的功能来降低硬件设计的复杂程度,提高指令执行速度,使指令简单,有效可行。
指令系统庞大 硬件复杂、庞大 执行速度低编译程序复杂、长 部分指令使用效率低
PENTIUM处理器:
RISC特征,某些指令以硬连线来实现,并能在一个时钟周期执行完;
CISC特征,用微代码实现,需要 2-3个时钟周期的执行时间,有多种寻址方式,多种指令长度,为数不多的通用寄存器 。
4.2 数据类型和数据表示
4.2.1 数据类型计算机中常用数据有三类:
用户定义的数据
系统数据
指令数据数据类型,指一组数据值的集合,还定义了可作用于这个集合上的操作集 。
从系统结构看有基本数据类型,结构数据类型,抽象数据类型和访问指针 。
用户定义系统数据类型
4.2.2 基本数据表示数据表示,指在计算机中能由硬件直接辩认,指令系统可以直接调用的数据类型 。
数据结构,结构化数据的组织方式,它反应了应用中各种数据元或信息元间的结构关系 。 它必须通过软件映象,变换成机器中所具有的 ( 存储于一维存储器内 ) 各种数据表示来实现的 。
数据表示实质上是一个软、硬件取舍的问题。
4.2.4 二进制定点,浮点,数据表示
IEEE754 浮点数据表示标准:
1 8 23
S符号位
E M
指数 尾数
32位单精度形式
1 11 52
S 符号位
E M
指数 尾数
64位双精度形式
32位浮点单精度数据形式:
,无穷大为,则且为非数值,则,且当
,规格化数为,数值当
,非规格化数(为,则数值且当为,则数值且当
)(
)(





1
2)1(
21
0255
0M255E
).1(2540
).000
000
1 2 7
1 2 6
s
E
S
ES
NME
N
MNE
MNME
NME
4.2.5 自定义数据表示为了缩短机器语言同高级语言对数据属性的说明之间的语义差距 。
目的:
自定义数据表示,由数据本身来表明数据类型,使计算机内的数据具有自定义能力。
分类:
带标志符的数据表示
数据描述符带标志符的数据表示,描述简单数据,标志符是和每个数据值相连,存在同一存贮单元内。
数据标志位 数据值优点,( 1) 简化了指令系统。
( 2)容易检出程序编制中的错误。
( 3)简化了编译程序。
( 4) 支持数据库系统 。
( 5)简化程序设计 。
( 6)便于软件测试。
缺点:
① 每个字都增加了标志位,使字长增长。
但另一方面,缩短了目的程序长度。
操作码总数减少导致操作码位数减少。
② 降低指令的执行速度。
但,编制时间、调试时间减少,编制时间 +调试时间 +执行时间减少。
与其他计算机的兼容性差,硬件复杂。
数据描述符,用来描述复杂和多维数据,如向量、数组、记录等,描述符专用来描述所要访问数据的特性,它和数据字分开存储,机器经描述符形成访问每个元素的地址及其他信息,增加一级以上寻址,(描述符或数据字)而数据字本身又是带标志符数据表示。
与带标志符数据表示不同之处:
标志符要与每个数据相连,两者合存在一个存储器单元中;而描述符则和数据分开放;
要访问数据集中的元素时,必须先访问描述符,这就至少要增加一级寻址;
描述符可看成是程序一部分,而不是数据一部分,因为它是专门来描述要访问的数据的特性。
现以 B6500,7500为例进行自定义数据表示的说明数据
000 数值描述符
101 P C I S R T D 长度 地址
3 1 111 202 2011
数据描述符
0:单精度数据
1:双精度数据
1:不连续数据
0:连续数据
1:数据集中的一个
0:数据集的全体
1:在主存中
0:不在主存中只准读出的数据
00:数据描述符写其他描述符
101 3
101 4
101 4
101 4
000
000
000
000
000
000
000
000
000
000
000
000
用数据描述符描述一个 3*4二维阵列:
三元素向量四元素向量块内的元素个数四元素向量四元素向量描述符读取操作数过程操作码 X Y
101
101
101
地址形成逻辑
000
000
101
指令寄存器描述符描述符主存储器
(数据)
(数据)


CDCSTAR-100计算机对每一个 向量数据用基地址,长度和位移量三个参量表示,其中对于指令,操作向量的起始地址 =基址 +位移量,操作向量有效长度 =向量长度 -位移量向量加 X A Y B Z C
其中 X,Y,Z各区段表示寄存器号,分别表示源向量 A,
B和结果向量的位移量,而 A,B,C各区段分别存放源向量 A,B和结果向量 C的基地址及长度。
4.2.6 向量数据表示向量,指具有 n个数据的数组。
特点,各个数据称为数组的元素,而每个数据应具有相同的数据类型,(如实数或逻辑数 );相同的数据表示(如字长、字的格式相同);进行相同的操作;而各数据之间是独立无关的,这样的一个数组称为向量。
基地址向量长度向量数据表示的参数起始地址
(基地址十位移量)
向量有效长度位移量
.
..
.
..
..
A0 A1 A2 A3 A4 A5 A6 A7
A0 1 0 0 1 1 0 0 1
A3
A2(0)
A1(0)
A4
A7
A6(0)
A5(0)
A0
A7
A4
A3
0
1
2
3
4
5
6
7
稀疏向量 压缩向量排序向量稀疏向量的压缩表示
4.3 指令系统设计原理指令系统中指令编码方法:
1,正交法指令中的每个分段(包括操作码、操作数地址等) 相互独立,
操作数地址的编码同操作码无关,反之亦然 。
优点,对流水机特别适用,微程序控制数量减少。
2,整体法指令中各个分段在译码时相互有关,操作码同操作数地址的分界线并不清楚。
优点,可以把使用频度高的操作码同操作数地址码组合起来,
加以缩短优化,而使用频度低的可以较长些,这样可以节省存贮容量 。
缺点,在用微程序控制时,微程序数量较多,需要有较大的微程序控制存贮器 。
3,混合法这种方法把上两种方法的优点结合起来。
(二)指令系统及结构的分类指令系统也可以按下面几个准则分类:
1,每条指令中显式指明的操作数个数
2,CPU中存放操作数部件的类型
3,数据类型和数据表示
4,ALU指令的操作数个数和位置基本思想,计算机系统中的一些基本操作(包括操作系统和高级语言的操作)应由硬件实现还是由软件实现;某些复杂操作是由一条指令实现还是由一串指令实现。
堆栈机主要操作,是压入和弹出,主要是以后进先出的方式。
优点,面向堆栈,指令短,表达式求值简单;可以有较高的编码密度。
缺点,不能随机访问和编译技术不匹配,很难高速执行:这类机器的例子 Burroughs 5500,HP3000。
主要依据:在 CPU中以何种存储方式来存放操作数 。
指令系统集结构的分类分类:
堆栈型
累加器型
通用寄存器型
R-R
R-M
M-M
累加器为基础的指令系统
累加器型机器是有一个隐含操作数的机器,指令能够直接装卸或存储的累加器中。操作时取一个操作数,
另一个操作数取自累加器,结果放回到累加器
累加器类的基本优缺点与堆栈机相同。这类机器的例子是 PDP-8。
寄存器为基础的指令系统( GPR机):
优点:
( 1)由于数据在寄存器中,减少了对存储器的存取,速度更快一些。
( 2)数值表示有很强的适应性。
缺点,指令格式必须包含寄存器指针空间。
GPR机类型:有三类 GPR机,它们是寄存器 -寄存器型机和寄存器 -存储器型机。还有存储器 -存储器型机取 /存寄存器或存储器寄存器或存储器
2/3IBM360/370
DEC VAX-11
RISC机寄存器集取 /存累加器累加器1PDP-8
MC 6800
累加器进栈或退栈堆栈0B5500/6500
HP3000
Transputer
堆栈访问显式操作数的过程结果存放目的地每条 ALU
指令需指明的显式操作数机器型号CPU中存储部件形式三种不同的指令系统集结构
PDP-11,IBM360/370的 SS型指令
2M-M2
VAX-11系列机3M-M3
PDP-10,MC 68000,IBM
360/370中 RX型指令
IBM360/370中的 RS型指令
2
3
R-M1
IBM RT-PC,IBM360/370中
RR型指令
SPARC,MIPS,HP PA 等
RISC机
2
3
R-R0
计算机实例ALU指令中可能使用的操作数个数结构类型ALU指令访存操作数个数典型计算机中 ALU指令所使用的访存操作数的个数
4.3.2 寻址技术一,访问方式
按地址访问,串行顺序访问,按指定 地址读取代码(地址可是通用寄存器,专用寄存器,内存)
地址概念:逻辑地址,物理地址地址编址方式采用三种:统一编址,局部编址,隐含编址具体可按面向对象和寻址方式来区分
按内容访问,给出欲访问单元内容,其主要特点是以并行方式查找所需信息内容。(联想存储器)
寻址技术,指的是指令按什么方式寻找(或访问)到所需的操作数或信息。它影响主存规模速度及存取方式。寻址方式对应用程序员是透明的。
二 程序定位方式
直接定位方式直接使用实际贮存物理地址来编写或编译程序,目前大多不用这种方式。
静态定位方式专门用装入程序来完成,一旦装入主存就不能再变动了,
这种方式实现简单,但不够灵活,主存利用率不高,多个用户不能共享主存。
动态定位方式利用类似变址寻址方法,有硬件支持完成。只把主存的起始地址装入该程序对应的基址寄存器中,指令的地址不需全部修改。
优点,主存利用率高,多个用户可以共享同一个程序段,
支持虚拟存储器实现。
缺点,需要硬件支持,实现的算法比较复杂。
4.3.3 指令系统功能设计设计指令时,要考虑三个因素:速度,价格,灵活性通用计算机指令分为五类:
数据传送类指令
运算类指令
程序控制类指令
输入输出指令
处理机控制和调试指令
4.3.4 指令格式的优化哈夫曼压缩的基本思想:
当各种事件发生的概率不均时,采用优化技术对发生概率最高的事件用最短的位数(时间)来表示(处理),而对出现概率较低的,用较长的位数(时间)来表示(处理),就会导致表示(处理)的平均位数(时间)的缩短。
指令的优化通过操作码优化和地址码优化进行。
指令格式优化的目的:
如何用最短的位数表示指令的操作信息和地址信息,用最短的时间处理频度高的指令,使二者之间有最佳配合以减少指令字中冗余信息以及用最少信息位来表示所需的操作信息和地址信息 。
用哈夫曼压缩概念进行编码的步骤:
( 1) 将要编码的字符按出现频率的次序排列,频率相等的符号可任意排列;
( 2) 把出现频率最小的两个符号合并,并将其频率相加,
按相加后的频率次序重新排序;
( 3) 继续过程 ( 2),直至只剩下两个频率,此后以相反过程进行编码;
( 4) 对最后两个频率分别指定代码 0和 1;
( 5) 若某一频率由两个频率相加而成,则分别指定这两个频的下一个代码为 0或 1;
( 6) 继续过程 ( 5),直到所有符号均已指定不同代码为止 。
现设一台模型机,共有 7种不同的指令,使用频度如表所示。
若用定长操作码表示,则需要 3位。
I1 0.40
I2 0.30
I3 0.15
I4 0.05
I5 0.04
I6 0.03
I7 0.03
指令 使用频度操作码表示的平均长度
L= ∑li*Pi Li,第 i个操作码的长度
H=-∑Pilog2Pi=0.40*1.32+0.30*1.74+0.15*2.74+0.05*4.32+0.04
*4.64+0.03*5.06+0.03*5.06=2.17
则 信息冗余量 K=1-H/操作码的实际平均长度 =1-2.17/3=0.28
(即 28%)
操作码的信息源熵,信息源所包含的平均最短信息量,
H=-∑Pilog2Pi,其中 Pi为第 i个信息源的频度
∑Pili=0.40*1+0.30*2+0.15*3+0.05*5+0.04*5+0.03*5+0.03*5
=2.20(位 )
这种编码的信息冗余为 K=1-2.17/2.20≈1.36%
1.00
0.60
0.30
0.15
0.06 0.09
0.03 0.03 0.04 0.05 0.15 0.30 0.40
1
1
1
1
1 1
0
0
0
0
0
0
为减少此信息冗余量,改用哈夫曼树,
I7 I6 I5 I4 I3 I2 I1
41 1 1 151 1 1 1 10.03I7
41 1 1 051 1 1 1 00.03I6
41 1 0 151 1 1 0 10.04I5
41 1 0 051 1 1 0 00.05I4
21 031 1 00.15I3
20 1 2 1 00.30I2
20 0100.40I1
OP长度
li
用哈夫曼概念的扩展操作码
OP长度
li
操作码 OP
使用哈夫曼编码频 度
( Pi)指 令操作码的扩展(等长扩展)
0001
0000
1110
15
0000
0001.
..
1110
15
1111.
..
1111
1111
..
.
0000
0001
1110
15
1111.
..
1111
1111
..
.
1111
1111
1111
...
8
0 000
0 001.
..
0 111
64
1 000
1 000.
..
1 111
512
1 000
1 000.
..
1 111
0 000
0 001
0 111
1 000
1 000
1 111
0 000
0 001
0 111
..
.
..
.
15/15/15 8/64/512编码法指令格式的优化地址码表示和寻址方式采取相应优化措施,程序所需总位数才得以减少。由于操作数地址是随机的无规律可循,归结为指令格式的优化。
地址码优化时应注意的问题:
( 1) 操作数地址码长度可在很宽的范围内变化,只要恰当安排就可与变长操作码很好合成定长指令 。 这样地址码宽度应随不同指令,其宽度可以变化;
( 2) 通过改变指令字中的地址数和地址码的长度,以使单地址,双地址甚至三地址都可以在指令中使用;
( 3)设法利用空白处存放立即操作数或常数。
( 4)丰富多彩的寻址方式。
VAX-11指令格式和寻址方式
2到 6个附加的操作数描述码和它们的扩充字节
1到 8个字节操作数描述码 描述码 1可能带的扩充字节 操作数描述码 1 操作码
15 8 7 0
2到 6个可能有的附加的操作数描述码和它们的扩充字节地址增大
VAX-11基本指令格式寄存器 寻址方式寻址方式 寄存器
0 0 直接量
7 4 3 0
7 5 0
指明 12种寻址方式之一,但不包括直接量方式指明 16个寄存器
6位直接量
VAX-1操作数描述码格式
6
a,立即方式
b,绝对方式
c,寄存器直接方式
d,寄存器间接寻址方式
e,自增寻址方式
f,自减寻址方式
g,变址寻址方式
VAX-11的主要寻址方式
i.变址的位移寻址方式
j.自增变址寻址方式
k.自减变址寻址方式
l,基址寻址方式
m,基址变址寻址方式
h,位移寻址方式
4.3.5 指令系统的执行和优化
面向目标程序优化实现
面向操作系统优化实现
面向高级语言优化实现
( 一 ) 指令的控制和执行计算机的控制过程,取指令,分析指令 ( 译码,取操作数 ),
执行指令,再取下一条指令的周而复始过程 。
程序的执行过程,顺序执行、转移(条件转移或无条件转移)
和进程的调用和返回。
(二)指令系统的优化和改进由计算机系统的层次结构看,指令系统应对于各层的工作给于有力的支持,这样计算机效率才能更高。
面向目标程序的优化实现来改进静态使用频度,对程序中出现的各种指令以及指令串进行统计得出的百分比 。
动态使用频度,在目标程序执行过程中对出现的各种指令和指令串进行统计得出的百分比。
基本思路,对于那些频度高的常用指令,可以考虑增强其功能,加快其执行速度,缩短其指令字长;而对于那些使用频度很低的指令就可以考虑将其取消,或将其功能合并到某些频度较高的指令中去 。
优化传送类指令:如成组传送指令、自增循环( LDIR)
自减循环( LDDR) 等
优化转移类指令:如屏蔽码( IBM370),多种转移指令等
优化运算类 指令:如多项式运算指令 POLY
Z80微型计算机的自增循环指令 LDIR长度为 2个字节,时钟周期传送一个数椐为 5个或 4个周期(当 BC计数值为 0时)因此,当传送 100个数时,需 499个周期。如没有该条指令,则需如下指令串
,字节 周期
LOOP,LD A ( HL); 1 2
LD ( DE) A; 1 2
INC HL ; 1 1
INC DE ; 1 1
DEC BC; 1 1
JP NZ LOOP 2 2
该指令串统计完成当传送 100个数时,
需 899个周期。
POLY指令完成 P(X)=C(0)+X*(C(1)+X*(C(2)+……X*C(d))….) 运算
OP arg degree tbladdr
优化运算类指令:
OP 操作码
arg 变量值
degree 多项式的阶
tbladdr 系数表地址目标,尽可能缩短高级语言和机器语言的语义差距,以利于支持高级语言编译系统,缩短编译程序的长度和编译所需的时间。
面向高级语言和编译程序改进指令系统
对使用频度高语句采取增加相应功能指令提高编译速度和执行速度
增强系统结构的规整性,正交性,可组合性,统一性和全面性等
直接执行系统结构( DEA) 能直接执行高级语言源码,不需要经过中间翻译。
设置特权指令支持操作系统可靠运行
增加支持工作状态和 访问方式 转换指令,如 VAX-11操作系统分四层,每层有不同访问特权,利用 CHMX指令增加访问权和
RET返回指令改变访问方式,减少转换开销,内核方式( K),
执行方式( E),管理方式( S),用户方式( V)
支持进程转换指令如 VAX-11设保存进程关联指令 SVPCTX,
恢复进程关联指令 LDPCTX
设置用来支持进程同步和互斥的指令
设置中断系统指令指令对操作系统的支持目标,如何缩短操作系统与计算机系统结构之间的语义差距,以利于进一步减少运行操作系统所需要的辅助操作时间和节省操作系统软件所占用的存储空间。
4.4 RISC计算机
(一) RISC设计思想的起源
20%-80%定律
系统设计中硬件和软件之间折衷
VLSI工艺技术发展
4.4.1 RISC计算机的设计原理
( 二 ) RISC结构设计原则
( 1) 选择 使用频度高 的指令,增加少量支持操作系统和高级语言实现及其他功能的有用指令,寻址方式 也取最基本的一,两种,使指令 条数少,格式简单,并具有 相同长度 。
( 2) 提高处理速度,采用 流水技术 使每一条指令都在一个机器周期内完成 。 大部分指令操作在 寄存器 之间进行,采用硬件逻辑控制实现操作,只有少量使用微程序实现 。
( 3) 简化编译 工作,一个周期完成一条指令操作,编译器易于调整指令流 。
美国卡内基梅隆( Canegic Mellon) 大学定义
(1) 指令系统中的大多数指令只需执行简单和基本功能,其执行过程是在单个机器周期期内完成 。
(2) 只保留 LOAD指令和 STORE指令 。 面向运算的操作都经过
LOAD指令和 STORE指令,从内存储器预先放在寄存器堆内,
加快执行速度 。
(3) 芯片逻辑不采用或少采用微码技术,而硬布线逻辑,减少指令解释的开销 。
(4) 减少指令数和寻址方式,使控制部件简化,加快执行速度 。
(5) 指令格式固定,指令译码简化 。
(6) 编译开销很大,应尽可能优化 。
(三) RISC主要特征
1) 指令格式简单化规整化(寄存器 -寄存器型)
2) 基本是单调周期操作(指令功能和执行周期权和选择)
3) 分开的存取指令数据,引入多级 Cache
4) 面向寄存器堆的结构
5) 充分提高流水线效率(用各种技术减少相关阻塞)
6) 采用硬逻辑控制方式(少数采用微程序设计)
7) 采用优化编译技术,很好支持高级语言
(四) RISC的 CPI讨论
Tcpu=IN*CPI*Tc
其中 Tc:表示时钟周期。 IN:表示 CPU执行某一程序中所包含的指令总数。 CPI:表示执行每条指令所需的平均时钟周期数。
33~52~151CISC
10~21.1~1.41.3~1.4RISC
时钟周期
Tc(ns)
指令平均周期( CPI)
指令条数( IN)类型
可以看出 RISC结构的 Tcpu值远比 CISC结构小,RISC
是通过减少 CPI值,简化结构来减少 Tcpu,而 CISC是通过减少 IN值来减少 Tcpu的。
(五) RISC体系结构
1.数据类型
(1) 字长 32位发展到 64位
(2) 整形数据:包括无符号和有符号字节,半字,全字数据
(3) 浮点数据:支持 ANSI/IEEE浮点数据类型,也就是单精度,双精度符点数
(4) 除以上基本数据类型外,为支持不同应用往往支持一些附加数据类型,如 i860支持 8位,16位与 32位像素以提供高性能图像处理
( 一) RISC的体系结构
2.寻址方式
RISC 体系结构一般支持最常用的简单寻址方式,以优化程序密集度与速度,常用的有:
立即寻址方式
寄存器直接寻址方式
寄存器间接寻址方式
相对寻址方式
变址寻址方式
位移量方式
3.寄存器模型和寄存器管理
现 现在的 RISC差不多都采用寄存器体系结构,理由是寄存器比存储器快,代码生成有通用性,编译程序更容易有效的使用寄存器。大量的(不少于 32个) CPU寄存器的好处是:
( 1) 减少 CPU与存储器之间的传送而加快操作
( 2) 在 CPU内支持过程参数传递
( 3) 在 CPU内支持多任务上下文转换和中断处理
RRISC中寄存器管理方式由三类模型:窗口( Windows) 模型,Cache模型、矩阵模型
4,存储器管理
首 (1) 虚拟地址空间的大小。现在的 32位 RISC目前都取满
4G字节。
其 (2) 其次是页面大小,页面大小和主存容量及系统应用程序大小有关系,i860与 SPARC都支持 4K字节的页面大小。
第 (3) 映射大小是由操作系统内核所隐藏的,具有 64个页的典型 TLB实现只能映射 64*4K字节。
RISC都是二级或三级存储层次,即在贮存和 CPU之间加一级或二级高速缓冲存储器( Cache)。
(二 ) 指令系统
RISC指令条数很少,格式简单,规整,基本上都在一个周期完成;
指令规整化要求 RISC的指令基本上是一个字节,而且指令中的操作码字段与操作数字段最好是正交并具有统一规格,
这有利于流水线执行,还可以提高译码操作效率,使译码控制逻辑电路简化;
RISC有利于支持高级语言,使用逻辑控制,不再使用微代码,体现了用硬件取代软件。 RISC强调优化编译技术,不仅是生成代码,而且要优化代码。
对于指令系统的具体选择,可以通过对现有体系结构进行静态测试和动态测试,即在程序运行时计算指令出现次数来进行。
4.4.3 RISC的主要技术
( 一 ) 流水线结构和指令调度
RISC主要特点之一是充分提高流水线效率流水线执行和相关性
IF ID EX WR
IF ID EX WR
IF ID EX WR
IF ID 气泡 EX WR
IF 冲刷
IF –取指令 ID-指令译码 EX-执行指令 WR-写回结果
n
n+1
n+2
n+3
n+4
(二)寄存器窗口芯片上有大量通用寄存器,在执行程序时可以存放更多的操作数或公用参数,采用寄存器窗口技术还可以更好支持过程的调用和返回,提高机器工作效率。
寄存器窗口技术,就是把整个寄存器组分成很多小组,每个过程分配一个寄存器小组,当发生过程调用时,自动地把 CPU转换到不同的寄存器小组使用,不再需要作保存和恢复的操作,这个寄存器小组就叫做寄存器窗口,相邻的寄存器窗口间有部分是重叠的,便于调用参数传送。
RISC有八个寄存器窗口,代表八个过程,重叠窗口之间构成类似环形缓冲器,窗口之间转换时通过改变硬件指针内容实现的,当超过八个过程调用时,将一个窗口内容传送到内存,以腾出一个窗口,返回时,再一个个返回。
参数 A137
132
本地 A131
122
参数 A/参数 B121
116
本地 B115
106
参数 B/参数 C105
100
本地 C99
90
暂存 C89
84,
.
.
全局9
0 R9AR0A
R31A
R26A
R25A
R16A
R15A
R10A
R31B
R26B
R25B
R16B
R15B
R10B
R31C
R26C
R25C
R16C
R15C
R10C
R9B
R0B
R9C
R0C
过程 A 过程 B 过程 C
RISCII的寄存器窗口高区本区低区
RISC机中所采用的编译技术突出了两点:一是如何最佳分配寄存器堆中的寄存器,从而减少对存储器的 访问;
二是设法对程序中的指令序列在保持原来语义 基础上进行重新排序和调度。
(三) 优化编译技术优点:
RISC指令系统条数少,简单对称,这减轻了编译程序的负担,;
RISC寻址方式简单,只有 LOAD和 STORE指令访问存储器。其它操作均在通用寄存器中进行,这简化了寻址方式和访存操作 ;
大多数指令在一个周期内完成,为优化编译器进行调整指令流序列,减少相关,提高并行度带来了方便;
RISC对优化编译器带来的困难:
优化编译器必须选择变量存放位置,在哪个通用寄存器中以便充分发挥通用寄存器效率 。
优化编译器要进行数据相关和控制相关进行分析处理,
和硬件配合实现指令延迟转移或取消或重新排序 。
对于 RISC要设计复杂的子程序库,因为在 CISC中一些复杂指令在 RISC中是由一级子程序来实现的 。
编译优化要和机器的体系结构,编译程序技术结合进行 。 如对于每个时钟周期能发送多条独立指令的超标量计算机编译程序必须正确分析,合理调度,才能更好的提高效率 。
4.4.4 RISC机指令系统示例
(一) 加州大学的 RISCII机
1,指令系统指令数 39条,其中 ALU指令 12条,LOAD/STORE指令
16条,控制转移指令 6条,辅助指令 5条。
指令格式两种,短立即数格式和长立即数格式主要两种访存寻址方式,变址型和 PC相对型
2 采用优化延迟转移技术
3 采用多寄存器和窗口重叠技术流水方式采用三级:取指和译码,读数和执行,写回。
采用优化延迟转移,相关通路技术处理相关。
(二) 斯坦福大学的 MIPS和 MIPS R3000机
1,指令系统指令数 91 条,其中 ALU指令 32条,LOAD/STORE指令 12条,
控制转移指令 2条,浮点指令 17条,协处理指令 16条。
指令格式 三种,立即数型,转移型和寄存器型。字长为 32位寻址方式 有基址加 16位位移量的访存,立即数寻址和寄存器寻址
2,采用优化编译器进行指令序列的重新安排技术
3,有 32个寄存器但不采用窗口重叠技术,而采用延迟优化技术
4,采用“比较转移”指令,进行优化编译。
流水方式分为取指,译码及读数,执行,访存,写回共 5级。
分开指令数据 CACHE的结构