一.计算机工作过程
计算机工作的过程,即一条条指令工作的过程:
取指令:
- 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.常见的数据寻址方式
六.说明
由于时间紧的原因,习题就选择性的更新了,主要是知识点!