第三章 处理器Word文档格式.docx
- 文档编号:4425099
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:17
- 大小:118.02KB
第三章 处理器Word文档格式.docx
《第三章 处理器Word文档格式.docx》由会员分享,可在线阅读,更多相关《第三章 处理器Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
指令集中的所有指令操作码的长度有长、有短
(1)规整型操作码
例:
Op码取7位,则操作种类为27=128种
实际操作中一般取8位(1Byte),则操作种类为28=256种
代表机型IBM370、VAX-11
缺点:
平均码长大(各种指令出现的频率不同),生成的代码量大
(2)非规整型操作码
通常为扩展操作码安排
指令字长16位,每4位一组分为四部分,格式如下:
具体编码安排见下表:
代表机型Intel8086、PDP-11
特点:
平均码长短、生成的代码量小,指令译码复杂
0000
0001
1110
15条指令
4位操作码
1111
标识码点
8位操作码
最高4位为1111标识码
12位操作码
最高8位为11111111标识码
16条指令
16位操作码
最高12位为111111111111标识码
3、地址码个数
(1)主存地址操作
地址格式
操作(以ADD为例)
下一条指令
访存次数
四地址
OP∥α/β/γ/δ
[α]+[β][γ]
δPC
1+3=4次
三地址
OP∥α/β/γ
PC+1PC
二地址
OP∥α/β
[α]+[β][α](很少采用)
或[α]+[β]ACC
基本不用
1+2=3次
单地址
OP∥α
ACC+[α]ACC
1+1=2次
零地址
OP∥
数在堆栈里
视具体操作而定
≥1次
(2)寄存器操作
三寄存器地址
OP∥RI/RJ/RK
RI+RJRK
1次
二寄存器地址
OP∥RI/RJ
RI+RJRI
单寄存器地址
OP∥RI
ACC+RIACC
操作数在寄存器中,仅需一次访存取指令,执行时不访存
(3)Reg-Mem类型(通常为双操作数,一个操作数在寄存器里,一个在主存里)
操作描述
Reg作目的
ADDRI,M
RI+[M]RI
Mem作目的
ADDM,RI
[M]+RI[M]
小结:
*采用主存地址需要多次访存,速度慢;
采用Reg作地址,访存次数少,速度快
*主存地址占位数多,代码量大;
Reg地址占位数少,代码量相对较小
*三主存地址格式,编码效率最好,一般在大型机里可以采用
*二地址格式习惯采用Reg-Mem或Reg-Reg,性能最佳,不用Mem-Mem
*零地址仅用在堆栈操作等特定场合
4、操作数类型及对齐方式
(1)操作数类型
*地址(无符号数)//位数视寻址范围而定
*数定点数(整型、通常补码表示)
浮点数(实型、目前常用IEEE754标准)
*字符BCD码(4位)//表示10个阿拉伯数字
ASCII码(8位)//微型机普遍采用的字符编码
GB2312(16位)//常用的汉字编码
*逻辑数据0或1
(2)对齐方式
*32机常用的一些字长单位
Byte(8位)Hword(16位)Word(32位)Dword(64位)
除Byte外,其它单位可能在不同机器上含义不一样,如Word在Intel8086仅指代16位。
*端对齐
例:
以32位存储字长为例(即一个存储字内含4个字节),存放数据12345678H,示例如下:
下例中方格里为地址值,顶端为数据。
*边界对齐
当数据字长小于存储字长时,要求一次访存尽量取出一个数据
地址的特点:
Byte(8位)***********//地址任意
Hword(16位)**********0//取偶数地址,最后一位为0
Word(32位)*********00//地址为4的倍数,最后两位为0
Dword(64位)********000//地址为8的倍数,最后三位为0
5、寻址方式
*操作数寻址(操作数来源:
常数、寄存器、主存和I/O)
*指令逻辑格式(考虑寻址方式,则需要寻址特征位)
特征位用来指示是何种寻址方式,通常在实际指令集中,Op码和特征位I是合并在一起编码的,所以有的指令集看不到特征位;
如果指令集清晰的把Op码和特征位I分离表示,则称该指令集具有正交性,具有该特性的指令集便于编译。
(1)立即寻址
Ad码不是地址,是立即数,本例用“#”表示特征位,示例如下:
指令执行时不访存(速度快)、Ad码的位数决定立即数的范围、汇编后立即数不能修改(即是常数)
(2)直接寻址
Ad码就是操作数的有效地址(EA=Ad)
指令执行时需一次访存(速度慢)、Ad码的位数决定寻址范围、汇编后地址不易修改(不利于程序浮动)
(3)间接寻址
Ad码就是操作数地址的地址(EA=[Ad]),用“@”表示特征位,示例如下左图:
指令执行时需多次访存(速度最慢)
经过多次访存确定地址,可以扩大寻址范围
实质上可提供一个第三方地址,代码具有普遍性
亦可多次间接寻址
现代系统调用多采用此种方法,服务程序首地址放入一个公共区内,调用时计算地址区域,然后从该区域取出首地址。
上右图示意的另一种调用返回的情况,调用前把返回地址放入公共区A内,这样子程序只需一条间接寻址的跳转指令即可返回指定位置,子程序代码具有普遍性。
(4)寄存器寻址
Ad码为寄存器编号,指定对应的寄存器,分为直接方式和间接方式两种,示意如下:
*直接寄存器寻址(数存放在对应的寄存器内,无主存地址)
指令执行时不访存(速度快)、数存放在对应寄存器里、因为Ad码放到是寄存器编号(计算机内寄存器数量不多,所以编码位数较少),所以相应的指令字长短
*间接寄存器寻址(数的地址存放在对应的寄存器内,EA=(Ri))
指令执行需一次访存(比主存间址次数要少)
现在意义上的间址多指寄存器间接寻址,主存间接寻址只在特定场合中使用
(5)基址寻址和变址寻址
Ad码为偏移地址,再加上一个指定寄存器的值构成有效地址(二者形式一致,只是指定寄存器不同,基址指定的称基址寄存器,此处记作BR;
变址指定的称变址寄存器,此处记作IR)。
*基址EA=(BR)+Ad
*变址EA=(IR)+Ad
实质上是寄存器间接寻址的扩展形式,即寄存器内数据加上一个偏移量构成一个访存地址,指令执行时访存一次;
Ad码放的是偏移地址(Ad码的位数决定偏移空间的大小),可以扩大寻址范围,提高编程灵活性。
二者之间的区别
*基址:
BR里放的首址,一般情况下值不变,且有的机器系统直接由操作系统赋值,用户不允许直接赋值,编程时偏移地址(Ad码)可随意改动
*变址:
准确的写法应为EA=Ad+(IR),即给出的Ad码地址为基准地址(一般不变),而IR里的值编程时,是可以随意变动(变址寻址名字的由来)
*现在通用形式为EA=(BR)+(Ri),即用一个通用寄存器作为变址寄存器,基准地址放在基址寄存器内,也成这种寻址为基址变址寻址
(6)相对寻址
Ad码为相对量(可正值亦可为负值),通常相对程序计数器PC而言。
*EA=(PC)+Ad//Ad码位置通常放置一个补码
Ad码放的是一个相对位置(Ad码的位数决定偏移空间的大小),转移类指令广泛采用此种寻址方式,方便程序浮动(代码生成后,Ad码只是一个相对位置,找到当前指令,相对的位置即可找到,与程序具体放置位置无关)。
(7)堆栈寻址
*EA=栈顶指针//所有操作均与堆栈有关,只对栈顶操作
*区别栈(Stack):
编译器自动分配的先进后出空间,通常向低地址扩展
队列(Queue):
先进先出的空间,一端插入数据,另一端删除数据
*指令的寻址(如何顺序的找到下一条指令)
(1)顺序寻址PC=(PC)+1
此处的1为逻辑值,真实值要看该指令具体占用几个地址数
(2)跳跃寻址
PC=(PC)+偏移值//偏移量可正可负,且有偏移范围
PC=新值//当超出偏移范围,直接赋值
6、操作的类型(即一个指令集内包含几类指令)
(1)数据传送类
*按类型分为:
Reg-Mem类、Reg-Reg类、Mem-Mem类
*按方向分为:
LOAD类(装入)、STORE类(存出)
(2)算术运算类(通常只包含定点运算)
加法类、减法类、乘法类、除法类、加1、减1
(3)逻辑运算类
与、或、非、异或、移位(包括算术移位和逻辑移位)
(4)转移类
无条件跳转JMP
分支(即有条件跳转)BRANCH或B×
×
(8086汇编助记为J×
)
转子程序CALL子程序名
系统调用INTn
(5)串操作类
*本质上就是对连续存储区的操作
*最一般的寻址方式:
比例寻址EA=(R1)+偏移地址+(R2)*S
注:
R1为基址寄存器、R2为编址寄存器、S为比例因子
(6)I/O类
IN(输入)、OUT(输出)
(7)其它类
NOP(空操作)、WAIT(等待)以及其它指令(略)
7、指令集设计思想
*一种评价机器性能的方法:
TCPU=IN×
CPI×
TC
TCPU指完成某个功能时,CPU的执行时间
IN指所需的指令总数
CPI称为平均指令周期数(因各类指令执行时间不同,衡量时要计算平均数)
TC是完成每一个微操作所需的时间,即主时钟频率的倒数
(1)复杂指令系统(CISC,ComplexInstructionSetComputer)
*指令集功能复杂化,提供复杂的指令完成复杂的功能(使指令集变得异常庞大)
*是早期计算机的优化思路
早期的编译程序功能有限,可以通过此种思想,使IN总数大幅缩减
另外,早期的计算机硬件提升速度不是很快,所以对TC影响不大
*在现在计算机系统中的问题:
指令集庞大,现代编译系统无法优化编译
某些指令功能过于强大,则执行时间过长,硬件优化困难
某些指令使用频度过低,仅在有限的环境中使用,影响整体指令集的CPI
(2)精简指令系统(RISC,ReducedInstructionSetComputer)
*核心思想:
指令集功能简单化(使指令集中的指令数尽可能少)
*主要设计思想
采用高速器件(射极耦合逻辑电路ECL)和硬连线控制器
选用少数频率高的指令,补充一些必要的指令
CPU中使用更多的寄存器(大于32个),所有计算要求都在寄存器中完成
只允许LOAD、STORE指令访存(优化编译)
固定指令字长(目前普遍32位)
使用较少的数据表示(即数据类型尽可能少),较少的寻址方式
便于实现流水,要求大多数指令均能在1TC内完成(访存、I/O操作除外)
注:
20与80规律20%的指令占处理器80%的处理时间,而其余80%的指令只占处理器20%的处理时间
*问题:
通过精简指令集,在某种程度上能大幅减小CPI(通常可以近似为1),且通过硬件的优化,可使TC也大幅减小,尽管IN可能大幅提高,最后的结果依然可以缩减TCPU,即计算机的性能提升。
但如果一味的精简,则计算机的性能也可能降低。
目前的计算机系统通常是两种思想相融合,共同优化。
二、处理器的结构和功能
1、处理器的功能
(1)从指令执行的角度描述
*控制指令的顺序(用PC控制)
*执行指令(包括三个阶段)
取指令:
根据PC值访存,找出要执行的指令
分析指令:
OP码译码、识别是何种寻址方式、取出相应的操作数
执行指令:
相应的数据进行处理、结果回写到指定位置
*处理异常情况(例如外部中断等情况)
(2)另一种描述
指令控制、操作控制、时间控制、数据加工、处理中断
2、结构图
(1)ALU:
实现算术和逻辑运算
(2)Reg组:
多个寄存器的集合
(3)INT:
中断逻辑,控制处理中断
(4)CU:
控制单元,发出相应的控制信号
3、寄存器的组织
(1)用户可见寄存器(所谓可见即用户汇编语言编程时可以使用)
*通用寄存器(使用时无任何限制,可以装入地址,亦可装入数据)
*专用寄存器(只允许装入一种类型数据,如基址寄存器只允许放基地址)
(2)控制和状态寄存器(汇编编程时不可访问或不可直接访问)
*主要核心寄存器
例如:
MAR、MDR、IR(当前指令寄存器)、PC//只知道存在,不可编程使用
*PSW状态字//不可直接访问
三、指令流水
1、流水处理
*顺序处理(假设把一条指令的处理分为:
取指、分析和执行)
*流水处理
流水处理后,原处理次序改变(流水实际上是乱序执行)
2、流水的性能分析
*时空图描述
*性能分析
(1)流水时间T=k×
t+(n-1)×
t//该公式为理想情况计算值
其中k为流水线的段数(即几个功能段),n为任务总数,t为一个功能段的基本时间
(2)吞吐率:
单位时间内完成的任务数//通常情况下,单位时间取秒为单位
TP=n/T
(3)加速比:
流水处理和非流水处理的性能比值(性能值等于执行时间的倒数)
Sn=T非/T
流水线分的段数越多,性能提升越大,但控制越复杂(超过8段的流水线称为超流水)
(4)效率:
流水线各部件的使用情况
E=(T非×
1)/(T×
k)
3、流水线的相关
*相关:
流水线执行时可能存在的某些制约关系
(1)结构相关(StructureDependence)
*多条指令同时使用同一个部件,造成流水线无法同时处理多条指令
*处理方法:
延迟后续指令(恢复为原处理次序)
多体结构(例如存储器结构相关可设多体存储结构)
(2)数据相关(DataDependence)
*数据引用顺序出现错误,根据先后次序可分为:
先写后读(ReadAfterWrite,RAW)
先读后写(WriteAfterRead,WAR)
写后写(WriteAfterWrite,WAW)
延迟后续指令(恢复为原处理次序)//这是流水处理相关最简单的办法,但影响效率
旁路技术(数据直接送至所需要处,控制相对复杂)
(3)控制相关(ControlDependence)
*由分支指令引起的流水线断流
尽早判断是否跳转
延迟槽技术(转移指令后插入一条无关指令)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 处理器 第三