指令系统

Download Report

Transcript 指令系统

第二章 指令系统
1
第一节
指令系统设计概述
一、指令系统概述
1、指令系统概念
*机器指令:计算机硬件直接实现某种运算或操作的命令
*指令系统:所有机器指令的集合 第1种: OP1 A1 A2
*指令系统与软/硬件的关系:
第2种: OP2 A
…
…
第n种: OPn
A1
A2
相互一致
应用需求
计算机软件
形成
(按约定)
执行
计算机硬件
实现
(按约定)
应用结果
指令系统
*指令系统的实质:软/硬件之间的交界面!
2
2、指令系统涉及内容
(1)指令格式相关参数
操作(OP)、操作数(OPD)、下条指令地址
③地址个数?
OP
A1
①OP类型?
④A1/A2/X?
A2
⑥下条指令地址?
目的OPD←(A1) OPER (A2)
⑤OPD地址?
②OPD类型、长度?
(2)指令系统涉及内容
*指令集结构:指令集风格,OPD存放部件、REG数量等
*指令集功能:支持的操作类型
*数据表示:支持的数据类型(含格式、参数)
*寻址方式:支持的(数据/指令)地址形成规则
*指令格式:指令相关参数的表示组织
3
二、指令系统的性能
*指令系统性能的实质:基于指令系统的程序,执行时的性能
1、代码效率
指指令系统对软件的支持程度(减少指令数及指令长度)
减少指令数—操作功能强、地址码个数多,
寻址方式多、寻址范围大、对称性好等
缩短指令长度—地址码个数少、地址码短,冗余空间小等
例1—32位运算频率较高时,若指令系统仅支持8/16位运算,则
代码效率不高(需将32位运算拆分为多个16位运算)
例2—数组操作频率较高时,若指令系统仅支持基址/变址、不支
持基址+变址寻址方式,则代码效率不高(地址码较长)
4
回下页
2、执行效率
指指令系统对硬件的支持程度(减少译码时间及执行时间)
减少译码时间—指令格式规整、地址码译码并行、
地址形成简单等
减少执行时间—指令功能弱,存/取操作数快
例3—指令格式中字段长度不规整,译码速度慢(需多次译码)
第i种指令格式: OPi(7位) IMME(9位)
OPi(8位)
IMME(8位)
第j种指令格式: OPj(8位)
OPj(8位)
IMME(8位)
IMME(8位)
例4—指令格式中MEM操作数多,执行时间长(存/取数据慢)
指令格式: OPi
DFM
A1
DFR A2
T目的=MEM=TM+TR+TOP+TM
T目的=REG=TM+TR+TOP+TR
△代码效率与执行效率的矛盾处理:常采用折中方法
5
转上页
三、指令系统的设计
1、设计的基本原则
完整性、规整性、正交性、兼容性
(~功能)
(~性能)
(~可移植性)
2、设计的基本过程
*指令集结构设计:确定指令集风格、
指令字结构、显式OPD个数、REG数量等
第1种: OP1 A1 A2
第2种: OP2 A
…
…
第n种: OPn A1 A2
*指令集功能设计及优化:确定支持的操作类型
*数据表示设计:确定支持的OPD数据类型(含长度)
*寻址方式设计:确定部件编址方法、支持的OPD寻址方式
*指令格式设计及优化:确定各指令字格式,并进行优化
6
第二节
指令集结构设计
一、指令集结构分类
1、指令集结构分类
*分类方法:按CPU中操作数的存储方法
*结构类型:堆栈型、累加器型、通用寄存器型(GPR)
不同点—代码效率、执行效率、硬件成本方面有所不同
*GPR型风格:R-M型(CISC风格)、R-R型(RISC风格)
趋势—R-R型
又称载入-存储型
2、指令集结构参数
指令集类型(含风格),
指令字结构,显式OPD个数(含MEM-OPD个数),REG数量等
7
二、指令集结构设计
*设计基础:应用需求,性能及性能/价格需求
*设计内容:确定指令集类型、
指令字结构、显式OPD个数、REG数量等
1、指令集类型的确定
*类型:堆栈型、累加器型、通用寄存器型(R-M或R-R)
*影响因素:应用特征、器件成本、性能及性能/价格
*趋势:R-R风格的通用寄存器型,如MIPS
2、指令字结构的确定
*类型:定长指令字—所有指令的指令字长完全相同
变长指令字—不同指令的指令字长不尽相同
*趋势:R-M风格为变长结构,R-R风格为定长结构
8
指ALU型指令
3、显式OPD个数的确定
*个数:堆栈型0个,累加器型1个,寄存器型≥2个
*影响因素:指令集类型、指令集风格(CISC/RISC)
最大OPD个数 MEM型OPD数 GPR子类型
示例
3
0
R-R
MIPS、PowerPC、ARM
2
1
R-M
80x86、Motorola 68000
2、3
2、3
M-M
PDP-11、VAX
4、寄存器数量的确定
*专用REG数量:取决于OS、组成,与指令系统无关
例如:控制REG、状态REG等, REG常在操作码中表示
*通用REG数量:由编译程序确定
影响因素—程序特征(哪些变量分配REG最优)、REG分配算法
例如:8086的AX~DI等8个REG,REG需在地址码中表示
9
第三节
指令集功能设计及优化
*设计基础:①应用需求的典型程序
②已确定的指令集结构及风格
*设计内容:确定拟支持的基本操作
*指令中操作的常规分类:
操作类型
算逻运算
数据传送
控制
系统
浮点
十进制
字符串
图形
实例
整数加、减等,逻辑与、或、非等
Load、Store,In、Out
分支、跳转、调用和返回、自陷等
OS调用、虚存管理等
浮点加、乘等
十进制加、乘等
字符串拷贝、移动、比较、搜索等
象素操作、压缩/解压操作等
10
一、 CISC风格指令集的功能设计及优化
1、CISC的功能设计
*设计方法:
①将应用需求典型程序的所有操作分解成基本操作;
②对所有基本操作进行分类;
③统计各基本操作的使用频率;
④选择拟支持的基本操作(含数据类型)
*CISC目标:侧重强化指令功能,减少目标代码长度
*设计结果:支持频率较高的基本操作
11
回下页
回14页
例1—某系统应用需求的基本操作及使用频率统计如下:
操作类型
加减
算
术 乘除
加减1
与
逻 或
辑 非
异或
频率
0.150
0.100
0.050
0.040
0.040
0.020
0.005
操作类型
传 取
送 存
分支
跳转
控
制 调用
返回
自陷
频率
0.060
0.050
0.100
0.050
0.020
0.020
0.015
操作类型
加减
浮
点 乘除
加减1
叠加
图 反色
形 压缩
解压
频率
0.060
0.039
0.001
0.005
0.003
0.001
0.001
操作类型
十 加减
进 乘除
制 加减1
字 拷贝
符 比较
串 移动
系统
频率
0.008
0.007
0.005
0.004
0.004
0.002
0.140
拟支持操作的选择:操作的使用频率≥1%
说明--①同一类操作中,只选择频率较高的操作
如:逻辑类的“异或”频率较低,不选
②同一操作中,只选择频率较高的数据类型
如:浮点类的“加减1” 频率较低,不选
12
转上页
回下页
回14页
回15页
回17页
2、CISC的功能设计优化
用静态频度分析和动态频度分析法,在空间和时间上改进
(1)面向目标程序改进
增强指令功能,以减少代码空间;
设置新功能指令,取代高频的指令串
(2)面向高级语言和编译程序改进
设置新功能指令,取代高频的语句串;
如:INC
如:REP前缀
如:LOOP
强化指令的规整及对称性,优化代码生成 如:R或M←R+M
(3)面向OS改进
设置专用指令,优化OS的执行效率
如:系统工作状态切换、进程同步与互斥等专用指令
13
转上页
二、 RISC风格指令集的功能设计及优化
1、CISC的主要问题
提高指令效率,导致指令格式、编译、体系结构的复杂化;
不同指令的功能不平衡,不利于并行处理技术的实现;
指令格式复杂,导致控制器复杂、不利于VLSI的实现
2、RISC的功能设计
*设计方法:同CISC的功能设计方法
*RISC目标:侧重简化指令功能,以提高执行速度、简化体
系结构、适应并行处理及VLSI
*设计结果:支持频率很高的基本操作
例2—对例1而言,RISC支持操作的使用频率≥3.8%
14
转11页
转12页
3、RISC的功能设计优化
·保留功能不易取代的操作,提高效率;
如:逻辑类的NOT
·增加指令功能,以支持高级语言和编译程序;
如:利用冗余位增加子功能,增加OPD个数
·设置专用指令,以支持OS;
·关注各指令的功能平衡性,使执行在单周期内完成
如:指令均为R-R方式,Load/Store指令除外
4、RISC与CISC的比较
程序的CPU时间:TCPU=IN×CPI×TC
CISC—强化指令功能,减小了IN、增加了CPI
RISC—简化指令功能,减小了CPI、增加了IN
*总体结果:RISC占有(利于并行处理、VLSI)
15
转12页
第四节
数据表示设计
一、数据表示设计概述
1、数据结构与数据表示
*数据类型:具有一组值的集合,及对该集合的操作集
*数据结构:计算机软件能够直接识别和引用的数据类型
*数据表示:计算机硬件能够直接识别和引用的数据类型
*相互关系:数据表示是数据结构的子集
数据结构实现
软件映像方法(1-x%)
直接使用方法(x%)
数据表示实现
*数据表示的实质:是软/硬件之间的交界面
16
2、数据表示设计
*设计内容:确定支持的数据类型及其参数(如格式、长度)
(1)数据表示分类
*基本数据表示:定点数、浮点数、逻辑数、字符等
*高级数据表示:堆栈、数组、向量、树、链表、指针等
(2)数据表示设计
*设计目标:缩小语言间语义差别,提高系统性能/价格
*设计方法:统计应用需求程序数据类型的使用频率,
选择拟支持的数据类型及其参数
*设计结果:支持频率较高的数据类型及其参数
例1—对于上节例1,指令系统支持的数据表示应有整数、浮点
数、逻辑数、字符;而十进制、字符串等应作为软件映像处理
思考—确定整数长度的种类及值的依据是什么?
转12页
17
二、数据表示设计举例—浮点数
1、浮点数的表示
*表示方法:定点格式的纯小数尾数+纯整数指数(阶)
p'
N  M  rm E , M  ( 1) Sm

( rmi  rmi ), E  ( 1) Se  (
i 1
q ' 1

rej  rej )
j 0
其中:p'  ( p  1)  log2 r, q'  ( q  1)  log2 re
尾数M (长度为p)
符号Sm
尾数m
指数E (长度为q)
符号Se
指数e
*格式参数:尾数和指数的码制、基rm及re、长度p及q
*浮点表示的设计内容:
格式参数设计、操作处理设计
18
2、浮点表示的参数设计
*数制的设计:尾数为纯小数,指数为整数
(1)码制的设计
*依据:方便浮点运算的硬件实现
*选择范围:原码、补码、反码、移码等
*结果:尾数码制—常为原码或补码 ←便于硬件运算
指数码制—常为移码
←便于实现对阶
(2)基(进制)的设计
*依据:p、q一定时,表示的范围、精度、效率较好
注—效率=规格化数个数/全部浮点数个数
*选择范围:2、3、4、5、…
19
回下页
*指数的基re的设计:
∵re不影响指数的范围及精度,re≠2x时对阶实现困难
(整数仅与q有关)
∴re通常取为2
(如20BCD-1=19BCD )
←利于对阶
*尾数的基rm的设计:
∵rm↑,浮点数的范围↑、精度↓、效率↑,
而浮点数的范围主要由q决定
注—可参考郑纬民或李学干的《计算机系统结构》
∴rm通常取为2
←利于提高精度,其他问题用多种长度处理
20
转上页
(3)尾数及指数长度的设计
*依据:表示数的范围、精度可满足应用需求(接近100%)
*选择范围:p+q为存储字长的整数倍
*设计方法:统计数的精度及范围对应的p、q频率分布,
选择频率较高的p、q,可有多种长度
*结果:若频率分布无明显拐点,p、q只有一种,否则多种
使用频率
使用频率
100%
100%
p+q
(a)无明显拐点
p+q
(b)有一个明显拐点
3、操作处理设计
*涉及内容:警戒位数、舍入方法的选择
*警戒位数选择:参见郑纬民《计算机系统结构》(第2版)
21
*舍入方法选择:指标—最大误差、平均误差、实现成本
100
011
010
001
000
表示
实际
00:1
00:0 01:0
11:1
11:0 100:0
截断法(xy:z→xy)
100
011
010
001
000
100
011
010
001
000
00:1
00:0 01:0
11:1
11:0 100:0
舍入法(x0:0→xy、x0:1→x1)
100
011
010
001
000
00:1
00:0 01:0
11:1
11:0 100:0
恒置“1”法(xy:z→x1)
00:1
00:0 01:0
11:1
11:0 100:0
查表舍入法(11:11→11,其余舍入)
比较—舍入法及查表舍入法较好,后者实现成本稍高
22
第五节
寻址方式设计
*设计内容:确定OPD存储部件编址方式、OPD寻址方式
OPD存储部件—由指令集结构确定,
常有MEM、I/O、REG、堆栈
(CPU外)
(CPU内)
一、编址方式
*设计内容:
①编址单位—部件地址对应的数据长度
②编址方式—不同部件编址的相互关系
*设计目标:
指令/数据的存储空间及访问时间均小
bitX … bit0
0
…
…
A-1
Y
…
Y+B-1
23
1、MEM编址单位
*OPD长度特征:逻辑数(1位)、其它(n种)
*指标:存储效率(冗余位少)、访问效率(1个OPD/次)
*编址单位类型:二进制位、机器字长、折中长度
地址 数据(1位)
0000H 0
0001H 1
…
…
地址 数据(设int为16位)
0000H 0000100011110000
0001H 0000000010001111
…
…
地址 数据(8位)
0000H 00001000
0001H 10001111
…
…
*编址单位设计:常为折中长度(2n位)
MEM编址单位—=min{各种数据表示的长度}
通常=字节
机器字长—
←ASCII码字符
=max{各种数据表示的长度}
通常指整数
←早期浮点∈FPU
24
*OPD存放方式设计:
N
N+1
N+2
N+3
OPD地址—OPD存放在连续单元中,
用最小单元地址表示
B
B
B
B
数
据
长
度
OPD存放的次序—大端、小端方式,任选一种
N
N+1
N+2
N+3
B3
B2
B1
B0
大端方式(N~MSB)
N
N+1
N+2
N+3
B0
B1
B2
B3
小端方式(N~LSB)
OPD存放的边界—不对齐、对齐方式,现均为对齐方式
地址
多体存储器
C(N=3)
B(N=1)
A(N=0) 3~ 0
7~ 4
D(N=7)
C(续)
数F(N=10)
E(N=9) D(续) 11~ 8
15~12
不对齐方式
多体存储器
B(N=2)
A(N=0)
C(N=4)
E(N=10)
D(N=8)
F(N=12)
对齐方式(N=长度的倍数)
25
2、其它部件编址单位
*I/O设备编址单位:与MEM一致
←均通过BUS访问
*REG编址单位:有多种(与OPD长度对应)
←暂存OPD所需
3、编址方式
指不同部件(如MEM与I/O)编址的相互关系
*编址方式类型:独立编址、统一编址、隐含编址
*编址方式设计:
通常采用独立编址方式,辅以隐含编址方式
思考—不同编址方式寻址对指令系统的要求是什么?
26
二、寻址方式
*种类:立即、REG、直接、REG间接、基址、变址、相对等
*设计内容:确定支持的寻址方式及其参数(如长度)
*设计目标:代码效率高、支持编译程序
1、寻址方式种类的确定
*设计方法:使用频带分析法,选择高频率的寻址方式
*设计结果:CISC—尽可能多的寻址方式,增加灵活性
RISC--尽量少的寻址方式,简化硬件
27
例1—VAX指令集机器中,运行gcc、Spice和Tex基准程序,各种寻
址方式的分布如下图:
70%
60%
50%
40%
30%
20%
10%
0%
Tex
1%
6%
16%
1%
存储器间
接寻址
55%
gcc
Spice
43%
24%
6%
0%
缩放寻址
3%
11%
寄存器间
接寻址
39%
40%
32%
17%
立即寻址
偏移寻址
选择结果—
①偏移(基址/变址/相对)、立即、寄存器间接须支持(高频)
②其他寻址方式,根据CISC/RISC风格进一步选择
28
2、寻址方式参数的确定
*设计方法:使用频带分析法,选择可满足绝大多数需求(不
同系统规定不同)的参数
例2—某R-R机器上,运行SPECint92和SPECfp92程序,偏移寻址
结果分布如下:
SPECfp92
SPECint92
30%
方占
式 偏 20%
百移
分 寻 10%
比址
0%
0
2
4
6
8
10
12
14
16
Log2(偏移量大小)
选择结果—12~16位偏移量可满足75%~99%的访问,长度选择
12~16位(由指令字长度最终确定)
29
第六节
指令格式设计及优化
一、操作码设计及优化
*设计基础:指令集功能设计选定的操作类型及使用频率
(含OPD类型/长度)
*设计内容:确定操作码的编码方式、具体编码
(定长/变长) (OP、OPD类型/长度)
*设计目标:平均码长较小(代码空间小)、
规整性较好(便于译码实现)
*设计方法:
①操作码设计—采用哈夫曼编码方式,使平均码长最小
②操作码优化—采用扩展编码方式,使规整性较好
30
1、操作码设计
*编码方法: 定长编码—按序编码,长度L= log2操作种类
变长编码—按频率分布编码(如哈夫曼编码)
例1—所有操作(7种)的使用频率分别为0.4、0.26、0.15、
0.06、0.05、0.04、0.04,请进行操作码编码
1.00
1
0.60
1
0.34
1
0.08
1
0.19
0
0
0
0
0.11
1
0 1
0
0.04 0.04 0.05 0.06 0.15 0.26 0.40
I7
I6
I5
I4
I3
I2
I1
操作Ii 频率Pi 定长码 哈夫曼码
I1
0.40
000
0
I2
0.26
001
10
I3
0.15
010
110
I4
0.06
011
11100
I5
0.05
100
11101
I6
0.04
101
11110
I7
0.04
110
11111
∑PiIi
3.00
2.32
码长段数
1段
4段
*编码性能:不能兼顾平均码长、规整性
31
2、操作码优化
*基本思想:将哈夫曼编码扩展成有限几种长度的编码
*扩展方法:根据所有操作的频带(频率分布)进行扩展
扩展长度—等长、不等长2种,常为等长
*扩展类型:横向扩展、纵向扩展、混合扩展
横向扩展
纵向扩展
OP数
扩展后编码
OP数 扩展后编码
0000
15种 …
4种 0xx
1110
1111 0000
…
15种 …
16种 1xx 0xx
1111 1110
1111 1111 0000
…
… 64种 1xx 1xx 0xx
15种 …
1111 1111 1110
OP分布1:1:1
OP分布1:4:16
混合扩展
OP数 扩展后编码
0000
10种 …
1001
1010 00
20种 … …
1110 11
1111 00 0000
64种 … … …
1111 11 1111
OP分布1:2:5
思考—两种操作码为0100及010011,硬件能识别出是不同操作?
32
二、指令字设计及优化
*设计基础:选定的指令集结构、操作码、寻址方式(对应OP)
*设计内容:设计出各种指令(操作)的指令格式
*指令格式参数:
OP码(含OPD类型/长度)+{地址码(含寻址方式)}+目的OPD
注—不同OP对应OPD的类型/长度、个数不同;
下条指令地址为显式或隐含寻址方式
第i种指令格式:
第j种指令格式:
OPi
DTi DF AF1
OPj
AF1
A1
AF2
A2
A1
其中,DT—OPD属性,DF—目的OPD表示,AF—寻址方式
33
回下页
回35页
*指令格式设计:形成指令字
①指令字长为MEM编址单位的倍数;
←利于指令寻址
②除OP码外,其它为定长编码;
←利于实现
③OPD个数超出时,简化功能或隐含OPD; ←如X←X+Y
④隐含表示值唯一的字段(OPD属性/寻址/目的OPD);
仅一种长度时
OPi
DTi AF1
OPj DF AF1
A1
MA1
OPi AF1
RA2
OPj AF1
A1
MA1
RA2
目的OPD仅为MEM时
⑤移动冗余位,对齐同类字段
←利于规整性
⑥预留部分OP编码
←利于兼容性
34
转上页
*指令格式优化: 简单化设计,以优化性能
①分开存放操作码;
OPi AF1
OPj
A1
AF2
OPi AF1
A2
OPj1 AF2
②隐含部分地址码;
OPi AF1
A1
OPj AF1
A1
RA2
仅REG寻址时
A1
DF2
A1
Opj2
A2
←利于规整性/码长、不利于编程
OPi AF1
A1
OPj AF1
A1
约定:RA2为特定REG(如R1)
③寻址方式位前移;
OPi DF1
←利于规整性
A2
T译码=TDF1+TA1+TDF2+TA2
←利于并行译码
OPi DF12
A1
A2
T译码=TDF12+max{TA1,TA2}
35
转33页
三、x86指令系统分析
1、基本特征
*指令集结构:GPR型(R-M风格),变长指令字、
≤2个显式OPD(≤1个MEM-OPD)、8个GPR
*数据表示:整数(s/u、8/16/32b)、浮点数(S/D),BCD数,
逻辑数(8/16/32b),位域,串,指针(N/F)
*寻址方式:编址—MEM按字节编址、小端次序,I/O独立编址
数据寻址—立即、REG、直接/REG间接/基址+变址/REG相对/
相对基址+变址/比例变址{EA=[(B)]+[(I)*S]+[A]}
程序寻址—相对、直接、间接{IP=EA或(B/I)}
*指令集功能:传送(含I/O)、运算(含BCD)、逻辑、移位、
串操作、转移控制(4种)、机器控制
36
回下页
回41页 回38页
回39页
2、指令格式
“[ ]”指可缺省
*指令字格式:[{指令前缀}+]指令本身
0B/1B
指令前缀
功能前缀
1B/2B
0B/1B
0B/1B
0B/1B
0B/1B
段超越前缀 OPD长度前缀 地址长度前缀
0B/1B
0B/1B/2B/4B 0B/1B/2B/4B
指令本身 操作码 寻址方式 变址基址参数 偏移量参数 立即数参数
MOD REG/OP R/M
2b
3b
3b
*指令前缀格式:
SS INDEX BASE
2b
3b
3b
兼容性的一种实现
功能—LOCK(F0H)、REPNZ(F2H)、REP/REPZ(F3H),不可缺省
段超越—CS:~SS:(2EH/3EH/26H/36H),不可缺省
OPD长度—66H,切换为16b或32b,可缺省(2种长度均可)
地址长度—67H,切换为16b或32b,可缺省(2种长度均可)
思考—指令前缀编码可与操作码相同吗?
37
转上页 回下页
*指令本身格式:
操作码字段编码—含OPD类型/长度,扩展编码、分开放置
8位或16位OPD时
8位和16位OPD时
8/16位和32位OPD时
OPD长度前缀
OPi
OPj
OPj
W
W
地址码字段编码—≤2个地址码,3种OPD(REG/MEM/IMME)
OPD组合—R-R、R-M、R-I、M-I,R、M
地址码组织—REG、R/M、IMME,REG、R/M位置固定,
OP码决定OPD个数及组合类型
REG-REG/MEM型: MOD REG
R/M
DISP
IMME-REG/MEM型: MOD 空闲
R/M
DISP
REG/MEM型: MOD 空闲
R/M
DISP
1B
0~4B
IMME
1~4B
寻址方式表示—REG隐含,R/M用MOD,IMME隐含/显式
支持R-R/M和I-R/M时
回下页 转上页
转36页
38
R/M型地址码编码—MOD+R/M [+DISP],REG型同MOD=11
R/M
码
000
001
010
011
100
101
110
111
MOD=11
W=0 W=1
AL
AX
CL
CX
DL
DX
BL
BX
AH
SP
CH
BP
DH
SI
BH
DI
MOD=00,01,10
MOD=00
MOD=01
MOD=10
BX+SI
BX+SI+DISP8 BX+SI+DISP16
BX+DI
BX+DI+DISP8 BX+DI+DISP16
BP+SI
BP+SI+DISP8 BP+SI+DISP16
BP+DI
BP+DI+DISP8 BP+DI+DISP16
SI
SI+DISP8
SI+DISP16
DI
DI+DISP8
DI+DISP16
直接寻址 BP+DISP8
BP+DISP16
BX
BX+DISP8
BX+DISP16
思考—单OPD指令地址码C7H、07H及4770H的OPD或其EA?
双OPD指令地址码C7H、07H的OPD或其EA?
目的OPD表示—REG、R/M均可时显式(如D位),否则隐含
可为REG和R/M时
仅为REG或R/M时
OPi
OPi
D W MOD
REG
R/M
W MOD
REG
R/M
39
转上页
转36页
3、x86指令系统优化分析
SHL R/M,v
110100vw mod 100 r/m disp(mod=01或10)
SHR R/M,v
110100vw mod 101 r/m
MOV R←→R/M
100010dw mod reg r/m
MOV R/M←I
1000111w mod 000 r/m
INC R
01000reg
Data
v=1或CL
Data(w=1)
*从代码效率方面优化:
扩展OP码,地址码长可变,指令前缀,
*从执行效率方面优化:
OP码分开存放,隐含地址码/寻址方式,
相同OP或OPD相同约定,≤1个MEM-OPD
*x86指令格式参考文献:Intel8086ASMCode.doc
40
四、MIPS指令系统分析
1、基本特征
*指令集结构:GPR型(R-R风格),
定长指令字(32b)、≤4个显式OPD、32个GPR
*数据表示:整数(s/u、8/16/32b),浮点数(S/D),
逻辑数(8/16/32b)
*寻址方式:编址—MEM按字节编址、大端次序,I/O统一编址
数据寻址—立即、REG、偏移(直接/REG间接/基址)
程序寻址—相对(16b)、直接(PC31~28及28b)
*指令集功能:传送(定点/浮点)、算术、浮点、逻辑(含移位)、
转移控制
41
回下页
转36页
2、指令格式
共3种格式,每条指令1~2种格式
R-型指令
I-型指令
J-型指令
6b
5b
5b
5b
OPER
OPER
OPER
RS
RS
RT
RT
RD
5b
SHAMT
IMME/DISP
OFFSET
6b
FUNC
OPER—操作码,FUNC—操作码扩展,RS—源REG号,RD—目标REG号
SHAMT—移位位数,IMME—立即数,DISP—偏移量,OFFSET—偏移地址
*操作码字段编码:含OPD类型/长度,含指令格式、寻址方式
扩展编码、分开放置
*地址码字段编码:≤4个地址码,3种OPD(REG/MEM/IMME)
OPD组合—Load/Store为R-M,其余为R-R、R-I、R
地址码组织—REG、IMME、MEM,OPER决定OPD个数及组合类型
寻址方式表示—用OPER表示(1~2个OPER)
*目标OPD表示:隐含(指令格式确定)
转上页
回下页
42
3、MIPS指令系统优化分析
R-型指令
(000000)
I-型指令
(其余)
J-型指令
(00001*)
000000
000000
001000
000100
000010
000011
rs
rs
rs
rs
rt
rd
00000 00000
rt
rt
(250)10
(250)10
00000 100000
rd=rs+rt
00000 001000
PC=rs
IMME
rt=rs+IMME
DISP
rs=rt时PC+=4+DISP
PC[27..0]=250<<4
$31=PC+4,同上
*从代码效率方面优化:
指令种类少(高频/通用)、功能强(OPD多),
地址码个数多、码长短
*从执行效率方面优化:
指令格式少,地址码定长、寻址方式少,寻址方式隐含,
大多数指令为R-R型
43
转上页
第二章课后复习思考题
⑴指令系统与软硬件的关系是什么?指令系统包含哪些内容?
⑵指令系统的性能有哪些?指令系统设计的基本步骤是什么?
⑶指令集结构有哪些类型?包含哪些内容?CISC/RISC风格对其有哪些影响?
⑷指令系统功能集设计方法?CISC/RISC风格对功能集设计及优化的影响?
⑸数据表示与数据结构的关系?数据表示设计的内容、目标、方法?
⑹数据存储部件可有哪些?确定编址单位的方法?寻址方式设计的内容、目
标、方法?
⑺x86及MIPS指令系统的基本特征、指令格式的优化方法?
44