-
Notifications
You must be signed in to change notification settings - Fork 0
计算机系统结构(1月27日)
I1 0
I2 10
I3 110
I4 1110
I5 11110
I6 111110
I7 111111
采用Huffman编码法的操作码平均长度为:
H = 0.451+0.302+0.153+0.054+0.035+0.016+0.01*6 = 1.97位
操作码的最短平均长度为:H = 0.451.152+0.301.737+0.152.737+0.054.322+0.035.059+0.016.644+0.01*6.644 = 1.95 位
采用3位固定长操作码的信息冗余量为: R=1-1.97/3 约= 35%
Huffman编码法的信息冗余量: R= 1-1.95/1.97 约= 1.0%
与3位固定长操作码的信息冗余量35%相比要小得多
3、扩展编码法
Huffman操作码的主要缺点:操作码长度很不规整,硬件译码困难,与地址码共同组成固定长的指令比较困难
扩展编码法:由固定长操作码与Huffman编码法相结合形成
将上例改为1-2-3-5扩展编码法,操作码最短平均长度为:H=0.451+0.302+0.15*3+(0.05+0.03+0.01+0.01)*5 = 2.00
信息冗余量:R=1-1.95/2.00 = 2.5%
例:改为2-4等长扩展编码法,操作码最短平均长度为: H=(0.45+0.30+0.15)*2+(0.05+0.03+0.01+0.01)*4=2.20
2-4等长扩展编码法信息冗余量为:R = 1- 1.95/2.20 = 11.4%
地址码的优化表示
1、地址码个数的选择
地址码个数通常有3个、2个、1个及0个等4种情况,评价指令中地址码个数应该取多少的标准有两个:程序存储容量,包括操作码和地址码;程序执行速度,以程序执行过程中访问主存的信息量为代表
通过一个典型例子来分析:
例如,计算一个典型的算术表达式
x = (a×b+c-d)/(e+f)
用三地址指令编写的程序如下:
MUL X,A,B ;X<-(A)*(B)
ADD X,X,C ;X<-(X)+(C)
SUB X,X,D ;分子的计算结果在中
ADD Y,E,F ;计算分母,存入Y
DIV X,X,Y ;最后结果在X单元中
用普通二地址指令编写的程序:
MOVE X,A ;复制临时变量到X中
MUL X,B ;
ADD X,C ;
SUB X,D ;X中存放分子运算结果
MOVE Y,E ;复制临时变量到Y中
ADD Y,F ;Y中存放分母运算结果
DIV X,Y ;最后结果在X单元中
用多寄存器结构的二地址指令编写程序:
MOVE R1,A ;操作数a取到寄存器R1中
MUL R1,B ;
ADD R1,C ;
SUB R1,D ;R1中存放分子运算结果
MOVE R2,E ;
ADD R2,F ;R2中存放分母运算结果
DIV R1,R2 ;最后结果在R1中
MOVE X,R1 ;最后结果存入X中
关于地址码个数结论:
对于一般商用处理机,采用多寄存器结构的二地址指令是最理想的
如果强调硬件结构简单,并且以连续运算(如求累加和等)为主,宜采用一地址结构
对于以向量、矩阵运算为主的处理机,最好采用三地址结构
RISC处理机采用三地址指令
1、对于解决递归问题为主的处理机,宜采用零地址结构。编程容易,节省程序存储量
缩短地址码长度的方法:用一个短地址码表示一个大地址空间
用间接寻址方式缩短地址码长度,方法:在主存储器的低端开辟一个专门存放间接地址的区域
用变址寻址方式缩短地址码长度:变址寻址方式中的地址偏移量比较短
用寄存器间接寻址方式缩短地址码长度:例如,16个间址寄存器,用4位地址码就能表示很长的逻辑地址空间
指令系统的功能设计
基本指令系统:通用计算机必须有5类基本指令:数据传送类指令、运算类指令、程序控制指令、输入输出指令、处理机控制和调试指令
指令系统的性能:完整性、规整性、高效率和兼容性
指令系统的优化设计:CISC、RISC和VLIW
数据传送类指令:
由如下三个主要因素决定:
1、数据存储设备的种类;2、数据单位:字、字节、位、数据块等;3、采用的寻址方式
例如,考虑数据存储设备的种类:
寄存器->寄存器 寄存器 ->主存储器 寄存器-> 堆栈 主存储器->寄存器 主存储器 ->主存储器 主存储器 ->堆栈 堆栈 ->寄存器 堆栈 ->主存储器
运算类指令:
考虑四个因数的组合:
操作种类:加、减、乘、除、与、或、非、异或、比较、移位、检索、转换、匹配、清除、置位等
数据表示:定点、浮点、逻辑、十进制、字符串、向量等
数据长度:字、双字、半字、字节、位、数据块等
数据存储设备:寄存器、主存储器、堆栈等
以寄存器加法为例,一般设置如下几种:
寄存器-寄存器型的定点单字长加法指令
寄存器-寄存器型的定点双字长加法指令
寄存器-寄存器型的定点半字加法指令
寄存器-寄存器型的字节加法指令
寄存器-寄存器型的浮点单字长加法指令
寄存器-寄存器型的浮点双字长加法指令
寄存器-寄存器型的单字长逻辑加法指令
寄存器-寄存器型的定点向量加法指令
寄存器-寄存器型的浮点向量加法指令
以移位指令为例:
需要组合一下三个因素:
1、移位方向:左移(L)、右移(R)
2、移位种类:算术移位(A)、逻辑移位(L)、循环移位(R)
3、移位长度:单字长(S)、双字长(D)
组合起来共有:322=12种
其中,逻辑左移与算术左移相同
一般机器中要设置10条移位指令
SLAS 单字长算术左移
SRAS 单字长算术右移
SLLS(SRLS) 单字长逻辑左移,单字长逻辑右移
SLRS 单字长循环左移
SRRS 单字长循环右移
SLAD 双字长算术左移
SRAD 双字长算术右移
SLLD(SRLD) 双字长逻辑左移,双字长逻辑右移
SLRD 双字长循环左移
SRRD 双字长循环右移
程序控制指令
有多种转移指令:
无条件转移,条件转移指令
调用与返回指令
循环控制指令
......
转移指令:
零(Z)、正负(N)、进位(C)、溢出(V)及其组合
由条件转移指令之前的指令产生条件码
由条件转移指令本身产生转移条件
多组条件码
条件转移指令举例:
一般条件转移指令:
条件码由转移指令之前的指令产生,对指令流水线的影响小
例如:
BEQ ADR ;等于零转移
BLS ADR ;小于转移
BLEQ ADR ;小于等于转移
BLSU ADR ;不带符号小于转移
BLEQU ADR ;不带符号小于等于转移
BCC ADR ;没有进位转移
BVC ADR ;没有溢出转移
IBM370系列机的转移指令:
条件码占用状态字PWS的34、 35
PWS34 PWS35 条件 对应的屏蔽码
0 0 = 1000
0 1 > 0100
1 0 < 0010
1 1 溢出 0001
主要转移指令有2条:
BC M, ADR; 若屏蔽码M符合,转向ADR
BCR M, R ; 若屏蔽码M符合,转向(R)
举例:
指令 助记符 M
等于转移(零转移) BE(BZ) 1000
低于转移(负转移) BL(BM) 0100
高于转移(正转移) BH(BP) 0010
溢出转移 BO 0001
非等于转移(非零转移) BNE(BNZ) 0111
非高于转移(非正转移) BNH(BNP) 1101
非低于转移(非负转移) BNL(BNM) 1011
无条件转移 B 1111
复合条件转移指令
代替2条指令,首先进行运算,并根据运算的结果决定是否转移
不需要条件码,与高级语言一致
例如:
DNB R ADR ; R <- (R)-1 ,如果R不等于0转移
INB R ADR ; R <- (R)+1 ,如果R不等于0转移
JEQ R1,R2,ADR ; 如果(R1)=(R2)转移
JAD EQ,Rd,Rs,ADR ; Rd <- (Rd) +(Rs) ,如果(Rd)=0转移
循环控制指令
用1条指令完成循环的控制
代替3条指令的功能:运算、比较和转移
例如:JL Rs,Rz,Ri,ADR
Rs中存放循环变量,Rz中存放循环终值,Ri中存放循环的步长
地址个数太多时,可以把其中的1个或几个地址隐含起来,例如,在IBM370系列机中,Ri隐含,循环步长放在与Rz紧相邻的下一个寄存器中
隐含转移指令
应用场合:用于特殊的IF..THEN..结构中,THEN部分只有一条指令
实现方法:把IF条件取反,如果取反后的条件成立则取消下条指令,否则执行下条指令
例子: IF(a < b) THEN b = b+1,
COMP >=, Ra,Rb ; 若(Ra)>=(Rb)则取消
INC Rb
达到的效果:
不需要专门的转移指令,程序执行效率高
程序调用和返回指令
本身可以不带条件,也可以带条件
CALL 转入子程序
RETURN 从子程序返回
CALL CC 当条件CC满足时转入子程序
RETURN CC 当条件CC满足时从子程序返回
中断控制指令:
开中断、关中断
改变屏蔽
中断返回
自陷等
输入输出指令
启动、停止、测试设备、数据输入、输出等
采用单一的直接寻址方式
在多用户或多任务环境下,输入输出指令属于特权指令
处理机控制和调试指令
处理机状态切换指令,处理机有多个状态
硬件和软件的调试指令
硬件调试指令:开关状态读取等
软件调试指令:断点设置、跟踪、自陷指令等
指令系统的性能:
完整性、规整性、高效率和兼容性
1、完整性是指应该具备的基本指令种类:如通用计算机必须有5类基本指令
2、规整性包括对称性和均匀性
对称性:所有的寄存器同等对待,操作码的设置等都要对称,如A-B与B-A
均匀性:不同的数据类型、字长、存储设备、操作种类要设置相同的指令
高效率:
指令的执行速度要快
指令的使用频度要高
各类指令要有一定的比例,如,运算类指令占40%以上,数据传送类指令占30%等
兼容性:
在同一系列机内,指令系统,包括寻址方式和数据表示等保持基本不变
可以适当增加指令、增加寻址方式、增加数据表示等,但不能减少任何已有的...
设计计算机:
步骤一:对这个问题进行研究,把问题确定下来;
步骤二:将问题进行分解,确定基本的操作,用什么样的硬件,什么样的软件来解决;
步骤三:确定指令集
步骤四:指令集怎么实现,硬件的实现、软件的实现
处理器设计,确定指令集,编写编译器,编写相应的操作系统,对我们的应用加以支持,对硬件加以调度,然后运行一些Benchmark,确定设计是否优,模拟的方法或其它的方法,确定编译输出
影响计算机系统性能好坏:CPU(频率快慢)、存储器
Cache结构和性能评价