一.计算机工作过程
计算机工作的过程,即一条条指令工作的过程:
取指令:
1.(PC)—>MAR,把PC存放的指令存储地址传送给MAR
3.M(MAR)—>MDR,主存根据地址取出指令存放到MDR中
4.(MDR)—>IR,指令从MDR传到IR中
分析指令:
5.OP(IR)—>CU, 把指令操作码送到CU中
执行指令:
6.Ad(IR)—>MAR,把指令的地址码送到MAR
8.M(MAR)—>MDR,主存再根据地址取出操作数存放到MDR中
9.(MDR)—>ACC,再把操作数送到ACC中进行运算
二.数据通路
同位词:微操作序列、所需控制信号、指令流程
其实这些词都是要你画出数据通路。
例如,基于上面的图,分析ADD (R0),R1的指令流程和控制信号:
取指周期:
时序 微操作 有效控制信号 注释
1 (PC)—>MAR PCout ,MARin 把PC存放的指令存储地址传送给MAR
2 M(MAR)—>MDR MemR,MARout ,MDRin E 主存通过数据总线将MAR所指单元的内容送至MDR
3 (MDR)—>IR MDRout ,IRin 将MDR的内容送至IR
4 指令译码 - 操作字开始控制CU
5 (PC)+1—>PC - 当PC+1有效时,使PC内容加1
间址周期:
时序 微操作 有效控制信号 注释
1 (R0)—>MAR R0out ,MARin 将(R0)中的(形式)地址送至存储器地址寄存器
2 M(MAR)—>MDR MemR,MARout,MDRin E 主存通过数据总线将MAR所指单元的内容(有效地址)送至MDR中
3 (MDR)—>Y MDRout , Yin 将MDR中数据通过数据总线送至Y
执行周期:
时序 微操作 有效控制信号 注释
1 (R1)+(Y)—>Z - R1的内容和Y的内容相加,结果送至寄存器Z
2 (Z)—>MDR - 将运算结果送至MDR
3 (MDR)—>M(MAR) - 向主存写入数据
三.指令流水线的影响因素
1.结构相关
由于多条指令在同一时刻争用同一资源而形成的冲突称为结构相关。
解决方法:
- 1.后一相关指令暂停一周期
- 2.资源重复配置:数据存储器+指令存储器
2.数据相关
数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,则这两条指令即为数据相关。
解决办法:
1.把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执行。可分为硬件阻塞(stal)和软件插入“NOP”两种方法。
2.数据旁路技术。
3.编译优化:通过编译器调整指令顺序来解决数据相关。
3.控制相关
当流水线遇到转移指令和其他改变PC值得指令而造成断流时,会引起控制相关。
解决办法:
1.转移指令分支预测。简单预测(永远猜ture或false)、动态预测(根据
历史情况动态调整)
2预取转移成功和不成功两个控制流方向上的目标指令。
3.加快和提前形成条件码
4.提高转移方向得猜准率
四.指令系统
1.相关概念
指令:指示计算机执行某种操作的命令
指令系统(指令集):一台计算机的所有指令的集合
指令集体系结构(ISA):指令系统是ISA中最核心的部分
IS规定的内容主要包括:指令格式,数据类型和格式,操作数的存放方式,程序可访问的寄存器个数、位数和编号,存储空间的大小和编制方式,寻址方式,指令执行过程的控制方式等。
2.指令的基本格式
操作码字段 地址吗字段
通常,把指令长度等于机器字长的指令称为单字长指令,指令长度等于半个机器字长的指令称为半字长指令,指令长度等于两个机器字长的指令称为双字长指令。
(关于机器字长、存储字长和指令字长的关系,可以查看我本专栏的第一篇文章机器字长、存储字长和指令字长的关系
3.指令格式
在计算机程序设计中,指令的地址通常包含了要进行的操作和数据的地址。根据指令所携带的地址数目不同,指令可以分为三类:零地址指令、一地址指令和二地址指令。
零地址指令: 零地址指令没有任何地址,它们适用于对数据堆栈进行操作的指令。例如,“PUSH”指令将一个值压入堆栈中,“POP”指令将堆栈顶部的值弹出。
一地址指令: 一地址指令接受一个地址参数,并且在该地址上执行操作。一地址指令通常用于处理数组或结构体。例如,“INC X”指令将X地址处的值增加1。
二地址指令: 二地址指令接受两个地址参数,第一个参数是源地址,第二个参数是目标地址。它们通常用于进行算术或逻辑运算。例如,“ADD A, B”指令将B地址处的值加到A地址处的值上。
不同的编程语言和指令集架构使用不同的指令格式,具体的指令格式应该参考对应的文档和手册。
五.指令的寻址方式
1.符号理解
- (A):表示地址为A的数值,括号相当于取值符号
- A:既可以是寄存器编号也可以是内存地址
- EA:操作数在存储器中的真实地址
2.常见的数据寻址方式
六.说明
由于时间紧的原因,习题就选择性的更新了,主要是知识点!