目录
一、控制器的功能与工作原理
1.控制器的设计思路
2.控制器的分类
硬布线工作原理:微操作控制信号由组合逻辑电路根据当前的指令码、状态和时序,既时产生。
微程序工作原理:事先把微程序控制信号存储在一个专门的存储器(控制存储器)中,将每一条机器指令编写成一个微程序,这些微程序可以存到一个控制存储器中,用寻址用户程序机器指令的办法来寻址每个微程序中的微指令。
3.微程序
3.1微命令
控制部件向执行部件发出的各种控制命令叫做微命令,它是构成控制序列的最小单元。
微命令是控制计算机各部件完成某个基本微操作的命令。
3.2微操作
即微命令的操作过程。
微命令与微操作的关系:
微命令与微操作的一一对应的。
微命令是微操作的控制信号,而微操作是微命令的操作过程。
微操作是执行部件中最基本的操作。
3.3微指令
把在同一CPU周期内并行执行的微操作控制信息,存储在控制存储器里,称为一条微指令。
微指令是微命令的组合,微指令存储在控制器中的控制存储器中。
一条微指令通常至少包含两大部分:
1.操作控制字段,又称微操作码字段,用以产生某一步操作所需的各个微操作控制信号。
2.顺序控制字段。又称微地址码字段,用以控制产生下一条要执行的微指令地址。
3.4微程序
一系列微指令的有序集合就是微程序。
一段微程序对应一条机器指令。
3.5微地址
就是存放微指令的控制存储器的单元地址
4.控制方式
4.1同步控制方式
任何一条指令或指令中的任一微操作均由统一基准时标的时序信号控制。
4.2异步控制方式
无基准时标信号
无固定的周期节拍和严格的时钟同步
采用 应答方式
4.3联合控制方式
同步与异步相结合
4.4人工控制方式
连续和单条指令执行转换开关
符合停机开关
二、微指令
5.微指令的编码方式
5.1直接编码方式
在微指令的操作控制字段中,每一位代表一个微操作命令,某位为“1”表示该控制信号有效。
5.2字段直接编码方式(显式编码)
将微指令的控制字段分成若干 “段”,每段经译码后发出控制信号。(执行速度较慢)
注:
每个字段中的命令是互斥的
缩短了微指令字长但增加了译码时间
微命令字段分段原则:
1.互斥性微命令分在同一段内,相容性微命令分在不同段内。
2.每个小段中包含的信息位不能太多,否则将增加译码线路的复杂性和译码时间。
3.一般每个小段还要留出一个转态,表示本字段不发出任何微命令。
5.3字段间接编码方式(隐式编码)
5.4混合编码
直接编码与字段编码混合使用
6.微指令序列地址的形成
1.微指令的下地址字段指出
2.根据机器指令的操作码形成
(当机器指令取至指令寄存器后,微指令的地址由操作码经微地址形成部件形成)
3.增量计数器:(CMAR)+1 -> CMAR
4.分支转移
转移方式:指明判别条件
转移地址:指明转移成功后的去向
5.通过测试网络
6.由硬件产生微程序入口地址
第一条微指令地址由专门硬件产生
中断周期由硬件产生 中断周期微程序首地址
7.微指令格式
7.1.水平型微指令
一次能定义并执行多个并行操作
- 直接编码
- 字段直接编码
- 字段间接编码
- 直接和字段混合编码
7.2.垂直型微指令
- 类似机器指令操作码 的方式
- 由微操作码字段规定微指令的功能
7.3.两种微指令格式的比较(重要)
- (1) 水平型微指令比垂直型微指令 并行操作能力强 ,
灵活性强 - (2) 水平型微指令执行一条机器指令所要的
微指令 数目少,速度快 - (3) 水平型微指令 用较短的微程序结构换取较长的
微指令结构 - (4) 水平型微指令与机器指令 差别大
三、指令流水
1.指令流水原理
可以将指令周期简单分为:IF取指、ID指令译码、EX执行 、WD写回
取指令由取指部件完成,执行指令由执行部件完成,如果采用串行化执行,则在执行指令1时,取指部件是空闲的。
2.流水线的表示方法
3.流水线性能
3.1吞吐率
单位时间内流水线完成指令或输出结果数量
最大吞吐率:流水线达到稳定状态后可获得的吞吐率
这个值是固定的的:
实际吞吐率:流水线完成n条指令实际吞吐率
3.2加速比
m段流水线速度与等功能非流水线速度之比
3.3效率
流水线中各功能段利用率
E=(流水线各段处于工作时间时空区)/(流水线中各段总时空区)
即在执行一段程序中,对CPU的有效利用率
在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与n个任务所用的时间与k个流水段所围成的时空区总面积之比
4.影响流水线的因素
4.1结构相关(资源冲突)
由于多条指令进入流水线后在同一时钟周期内争用同一功能部件。
解决方法:
1.后一相关指令暂停一周期
2.资源重复配置:数据存储器+指令存储器
4.2数据相关(数据冲突)
不同指令重叠操作,可能改变对操作数的读写访问顺序.
数据基本操作:读(R)、写(W)
主要数据相关冲突类型:
RAW(Read After Write)
后面指令用到前面指令所写的数据
WAW(Write After Write)
两条指令写同一个单元
在简单流水线中没有此类相关,因为不会乱序执行
WAR(Write After Read)
后面指令覆盖前面指令所读的单元
在简单流水线中没有此类相关
解决方法:
1.后推法:遇到数据相关时,停顿后继指令运行,直到前面指令结果已经生成
2.设置相关的直接通路“Forwarding”:定向技术 旁路技术 将某条指令执行结果不送回寄存器而是直接送到其他指令所需的地方
4.3控制相关(控制冲突)
当流水线遇到转移指令和其它改变PC值的指令而造成断流时,会引起控制相关.
由转移指令引起 若是条件转移指令,则转移目标地址可能发生跳转,影响流水线效率。
解决方法: