第七章、指令系统
计算机组成原理—CPU

指令系统在计算机中的地位
1、图解
2、指令系统是硬件和软件的接面

7.1、机器指令
1、指令的格式是什么
这是重点!2、操作码、地址码、寻址方式是机器指令需要考虑的内容是
!作为了解3、指令的字长
4、固定字长、可变字长
7.1.1、指令的一般格式

1、操作码
1、反映机器做什么操作
2、长度固定
1、用于指令子擦汗给你个比较长的情况,RISC
2、例如:IBM370 操作码8位
2、长度可变
1、操作码分散在指令字的不同字段中
2、扩展操作码技术
1、使用保留码点的方式
2、操作码的位数岁地址位数的减少而增加
3、图示

4、短操作码一定不是长操作码的前缀,否则很难识别指令
5、使用1111作为操作码扩展的标记
6、经常出现的操作,用短操作码存储,不经常的操作,用长操作码进行存储
2、地址码
1、四地址

2、PC代替一个地址码字段,增加地址码字段长度,减少地址码字段个数,增大了取值范围
2、三地址
1、程序计数器是PC

3、二地址

4、一地址

5、零地址
1、堆栈类的指令,只需操作码,不需要地址
2、就无需地址码
7.1.2、指令字长

1、指令字长固定
1、指令字长 == 存储字长
2、指令字长可变
1、按字节的倍数变化
7.1.3、小结
1、当用一些硬件资源代替指令中的地址码字段后
1、可以扩大指令的寻址地址
2、可以缩短指令字长
3、这是在固定字长中的
4、减少访存的次数
2、当指令的地址字段为寄存器时
1、可以缩短指令字长
2、

3、指令阶段不访存
7.2、操作数类型和操作类型
7.2.3、操作数类型
1、地址:无符号 正数(绝对地址)、有符号数(相对地址)
2、数字:定点数、浮点数、十进制数
3、字符:ASCII
4、逻辑数:逻辑运算
7.2.2、数据在存储器中的存放方式
1、例子

2、大端存储:
3、小端存储:
1、字节编址,数据在存储器中的存放方式(存储字长64位,机器字长32位)
1、从任意位置开始存储
1、图示

2、优点
1、不浪覅存储资源
3、缺点
1、除了访问一个字节外,访问其他任何类型的字节,都有可能花费两个存储周期的时间。
2、读写控制比较复杂
2、从第一个存储字的起始位置开始访问
1、图示

2、优点
1、无论什么访问类型的数据,在一个周期内都可以完成
2、读写控制很简单
3、缺点
1、浪费了宝贵的存储资源
3、边界对准方法—从地址的整数倍位置开始访问
1、图示

1、双字的字长是8个字节,存储时,起始地址从地址编码是8的倍数的时候开始
2、半字,两个字节,存储时,从偶数的存储地址开始存
3、一个字,长度为4个字节,存储是,从地址编码是4的倍数开始存储
2、结论
1、数据吃饭的起始地址是数据长度(安装字节进行计算)的整数倍
2、这个方案是前两个的折中,即在一个周期内完成更多工作,也减少存储内存的浪费
7.2.3、操作类型
1、数据传送
1、内容

2、算数逻辑操作
1、加减乘除、增1、减1、求补、浮点运算、是静止运算、与或非、异或、位操作、位测试、位清楚、位求反
3、移位操作
1、算数移位、逻辑移位、循环移位(带进位和不带进位)
4、转移
1、无条件转移JMP(直接转移到目标地址)
2、条件转移
1、结果为零转(Z=1) JZ
2、结果溢出转(O=0) JO
3、结果有进位转(C=) JC
4、跳过一条指令 SKP
3、调用和返回
1、例子

4、陷阱(Trap)与陷阱指令
1、意外事故的中断
2、一般不提供给用户直接使用,在出现事故时,由CPU自动产生并执行(隐指令)
3、设置供用户使用的陷阱指令
5、输入输出
1、输入:端口中的内容,输入到CPU的寄存器中
2、输出:将CPU寄存器的内容,输出到端口中
7.3、寻址方式
问题:为什么在指令方式中要设置多种类型的寻址方式
1、寻址地址:确定本条指令的操作数地址,下一条要执行指令的指令地址
2、如何找到指令和数据操作的地址
3、寻址方式:指令寻址、数据寻址
7.3.1、指令寻址
1、顺序
1、取完当前指令,再取下一条指令,所以PC+1,再赋给下一条指令
2、其中+1是要看指令的字长,也有可能是可变字长
2、跳跃
1、由转移指令指出
2、图示

7.3.2、数据寻址

1、形式地址:指令字中的地址
2、有效地址:操作数的真实地址
3、约定(方便讲解):指令字长=存储字长=机器字长
1、立即寻址
1、形式地址A就是操作数
2、图示

3、由#号是立即寻址的特征,后面会跟一个立即数
4、指令执行阶段不访存,因为此时已经把操作数拿到CPU中了
5、A的位数限制了立即数的范围
2、直接寻址
1、EA=A:有效地址由形式地址直接给出
2、图示

3、直接给出内存单元中的地址,然后根据主存,操作数把数据传入ACC寄存器
4、执行阶段访问一次存储器
5、A的位数就决定了该指令操作数的寻址范围
6、操作数的地址不容易修改(必须修改A)
3、隐含寻址
1、将操作数隐含到操作码中
2、图示

3、ADD是加法,需要两个操作数,其中一个操作数隐含在ACC寄存器中,通过A地址去主存单元中拿到操作数,去和ACC寄存器单元中的另外一个操作数进行计算,然后返回给ACC
4、间接寻址
1、一次间接寻址
1、EA=(A) 有效地址由形式地址间接提供
2、@是间接寻址的特征
2、一次寻址图示

3、形式地址A中保留了EA操作数的地址,通过A去主存中寻找EA操作数的地址,找到后再给A拿去寻找真正所需的地址
4、执行指令阶段2次访存
5、可扩大寻址范围
6、方便编制程序(可以改变EA的地址,从而改变操作数的内容)
2、多次间接寻址
1、多次间接地址图示

2、基本流程和一次间接寻址一样,只不过多了几次地址的寻找和跳转
3、间接寻址编程举例

5、寄存器寻址
1、EA=Ri 有效地址即为寄存器编号
2、寄存器寻址图示

3、执行阶段不访存,指访问寄存器,执行速度较快
4、寄存器个数优先,可缩短指令字长
6、寄存器间接寻址
1、EA=(Ri) 有效地址在寄存器中
2、寄存器间接寻址图示
3、就是形式地址Ri在保存在寄存器中,寄存器中保存了主存中Ri操作数的地址,又跑去主存中寻找操作数,然后进行传递然后运算
4、有效地址在寄存器中,操作数在存储器中,执行阶段需要访存
5、非常便于编写循环程序
7、基址寻址
1、采用专门寄存器作基址寄存器
1、EA=(BR)+A
2、基址寻址图示

3、就是用一个BR基址寄存器,再加上形式地址A,然后通过一个加法器,把地址完整融合,再通过这个完整地址去主存寻址操作数
4、可以扩大寻址范围
5、有利于多道程序的编写
6、BR内容由∃系统或管理程序来确定
7、在程序的执行过程中BR的内容是不变的,形式地址A可以改变
2、采用通用寄存器作为基址寄存器
1、Ro是一个基址寄存器
2、通用寄存器的基址寄存器图示

3、和上面专门寄存器作基址寄存器的步骤一样,只是寄存器变成了通用的
4、用户可以指定哪个通用寄存器作为基址寄存器
5、基址寄存器的内容由操作系统确定
6、在程序的执行过程中R0内容不变,形式地址A可以改变
8、变址寻址
1、EA = (IX)+A IX是变址寄存器(专用),通用寄存器也可以作为变址寄存器
2、变址寄存器图示

3、内容和上面基址寻址的步骤是一样的
4、可扩大寻址范围
5、IX的内容由用户给定
6、程序执行过程中IX内容可变,形式地址A不可变
7、便于处理数组问题
8、例子

9、相对寻址
1、内容
1、EA = (PC)+A
2、A是相对于当前指令的位移量(可正可负,补码)
3、相对寻址图示

4、直接使用PC作为寻址,形式地址A作为PC地址的偏移量,PC+A的地址,形成完整地址,就能得到操作数
5、A的位数决定操作数的寻址范围
6、程序浮动
7、广泛用于转移指令
2、相对寻址的例子

3、按字节寻址的相对寻址举例

10、堆栈寻址
1、特点
1、硬堆栈:多个寄存器
2、软堆栈:指定的存储空间
3、都是先进后出(一个出入口),栈顶地址由SP寄存器指出
4、进栈(SP)-1 —>SP
5、出栈(SP)+1 —>SP
6、栈对寻址图示

2、堆栈寻址举例

3、SP的修改与主存编址方法有关

7.4、指令格式举例
7.4.1、要考虑各种因素
1、指令系统的兼容性
1、新旧系统指令的兼容
2、其他因素
1、操作类型:包括指令个数及操作的难易程度
2、数据类型:确定那些数据类型可以参与操作
3、指令格式:指令字长是否固定;操作码位数、是否采用扩展操作码技术;地址码位数、地址个数、寻址方式类型;
4、寻址方式:指令寻址、操作数个数
5、寄存器个数:寄存器的多少直接影响指令执行的时间
3、IBM360
1、指令格式

2、X:变址寄存器
3、B:基址寄存器
4、D:是偏移地址
4、Intel8086

5、例子

7.5、RISC技术
1、精简指令集计算机
7.5.1、RISC的产生和发展
1、80—20规律
1、典型程序中80%的语句仅仅使用处理机20%的指令
2、执行频度高的简单指令,因复杂指令的存在,执行速度无法提高
3、能否用20%的简答指令组合不常用的80%的指令功能
7.5.2、RISC的主要特征
1、选用使用频率较高的一些简单指令,复杂指令的功能由简单指令来组合
2、指令长度固定、指令格式种类少、寻址方式少
3、只有LOAD、STORE指令访存
4、CPU中有多个通用寄存器
5、采用流水技术,一个时钟周期内完成一条指令
6、采用组合逻辑实现控制器
7.5.3、CISC的主要特征
1、系统指令复杂庞大,各种指令使用频度相差大
2、指令长度不固定、指令格式种类多、寻址方式多
3、访存指令不受限制
4、CPU中设有专用寄存器
5、大多数指令需要多个时钟周期执行完毕
6、采用微程序控制器
7.5.4、RISC和CISC的比较
1、RISC更能充分利用VLSI芯片的面积
2、RISC更能提高计算机运算速度、指令格式、寻址方式少、通用寄存器多,采用组合逻辑,便于实现指令流水
3、RISC便于设计、可降低成本,提高可靠性
4、RISC不易实现指令系统兼容
7.5.5、现代处理器中
1、RISC
2、CISC
3、RISC与CISC相结合