4.控制器的功能和工作原理
4.1.硬布线控制器(硬件控制)
1.一个时钟周期内可以并行的完成多个不会引发冲突的微操作
2.同一个微操作可能在不同阶段被使用到
3.选择定长的机器周期,如果实际所需的时钟周期较少,则安排在机器周期的末尾执行
4.硬布线控制器根据指令操作码、目前的机器周期、节拍信号、机器状态条件等确定当前节拍下应该发出哪些微命令:
①指令操作码:操作码译码器根据IR的n位操作码,选通操作码译码器连接CU导线(n位对应n条导线),从而判断当前指令将要执行什么操作
②目前的机器周期:根据四个触发器当前哪个值为1判断当前处于什么机器周期(取址、间址、执行、中断)
③目前的节拍:每个机器周期都有相等的节拍数,节拍发生器通过控制信号控制m+1条与CU相连的线使其能够判断当前处于该机器周期的第几个节拍
④机器状态条件:即各种执行单元的反馈信息,例如PSW、ACC标志位等
5.CU的每一条输出线对应一个微操作:微操的判断可以由多个输入端加上与/或/非门电路实现
6.硬布线控制器特点:
①指令越多,电路越复杂→适用于RISC(指令少)
②扩种指令困难(需要大改电路
③纯硬件控制→执行速度快
4.2.微程序控制器(软件控制)
4.2.1.微程序控制器的基本原理
1.微程序:与指令一一对应,由一系列微指令序列组成
微指令:由一系列微操作组成
微操作(微命令):最小具体操作单位,可以并行完成且不违反顺序的微操作集合成一个微指令
2.微指令格式:由操作控制(操作码)和顺序控制(地址码)组成
3.控制存储器CM(Control Memory):用于存放微程序(若干个微指令,按顺序存放),由ROM组成(非易事性、读取快),实现存储程序
CMAR(CM Address Register):小PC,存放微指令的地址
地址译码:将CMDR中的地址转换为控制信号
CMDR(CM Data Register):小IR,存放从CM中取出的微指令。由实现当前微指令的控制信号(操作码)和下一条微指令的地址(地址码)组成
微地址形成部件:根据CPU中IR的OP部分形成实现OP操作的微指令序列的首地址
顺序逻辑:控制微指令序列执行的顺序(当前应该执行哪一条微指令)
4.取值周期、间址周期、中断周期的微指令序列通常公用,仅需存储一份;执行周期各不相同,需要单独存储
4.2.2.微指令的设计
1.微指令的格式
2.微指令的编码方式
3.微指令的地址形成方式
4.微程序控制单元的设计
①第一个微指令从CM的#0出取址
②每个微指令的执行结束后,都需要进行一次把下一条微指令的地址(若是该微程序的最后一条微指令,则将下一个微程序的首个微指令的地址)放入CMAR的时钟周期
4.3.硬布线控制器和微程序控制器的比较
5.指令流水线
5.1.流水线的基本概念
5.1.1.指令流水的定义1.一次重叠:总耗时 = 第 1 条指令的完整周期(3) + 剩余(n - 1)条指令每条两个周期
2.二次重叠:总耗时 = 第 1 条指令的完整周期(3) + 剩余(n - 1)条指令每条一个周期
5.1.2.流水线的表示方法
5.1.3.流水线的性能指标1.吞吐率:吞吐率TP = 任务数n / 总用时T
总用时T = 第一条指令的完整用时 + (n - 1)个指令执行阶段耗时(理想情况,取一个时钟周期)= kt + (n - 1)t = (k + n - 1)t
装入时间:第一条指令从开始到结束的时间
排空时间:最后一条指令从开始到结束的时间
2.加速比
3.加速比
5.2.指令流水线的影响因素和分类
5.2.1.机器周期的设置
①划分为五个周期
IF(Instruction Fetch)取值:根据PC所指向的位置到Instruction Cache中找出当前要执行的指令,然后将该指令放到IF阶段的锁存器中
ID(Instruction Decode)译码:该阶段除了完成指令译码外,还会完成取操作数(从通用寄存器中取出),然后将操作数分别放入ID阶段的锁存器A、B中(或指令中包含立即数,则放入IMM)
EX(Execute)执行:对ID阶段的锁存器中储存的两个操作数进行计算,并将结果放入EX阶段的锁存器中
MEM(Memory)访存
WB(WriteBack)写回:可能将数据写回通用寄存器中
(IF和MEM阶段中的Cache分别是指令Cache和数据Cache,将Cache分为指令和数据两个独立的部分,可以使得IF和MEM的部件并行工作)
Cache不命中将会导致指令流水线断流(需要访存)
②每条指令被划分为五个机器周期,就算某条指令在实际执行过程中的某个周期不需要做任何事(例如不需要访存、不需要写回),但它仍然需要经历这个周期(无法跳过)
③每个机器周期设置为同一周期:每个机器周期所需的时间实际上可能并不相同(100、80、70、50、50),取最长的耗时为统一的机器周期
为了使得能够统一机器周期,需要在某个功能部件后添加数据缓冲器:例如图中ID阶段仅需要80ns,而统一的机器周期为100ns,即ID的功能部件执行完成后,还剩余20ns,则ID执行后需先将数据存放到ID部件后的数据缓冲器中,经过20ns后,再将数据从数据缓冲器中输出,此时就能控制ID的机器周期为100ns
5.2.2.影响流水线的因素
1.结构相关(资源冲突):多条指令在同一时间争用统一资源
①IF和MEM阶段可能访问同一内存空间;ID和WB阶段可能访问同一通用寄存器
②解决方法:后访问/数据和指令分开存储
2.数据相关(数据冲突):必须等待前一条指令完成才能执行后一条指令
①SUB、AND和OR指令在ADD指令将指令执行结果放回r1之前就从r1中取出数据,产生数据冲突
②XOR指令在ADD指令将指令执行结果放回r1后才取出数据,未发生数据冲突
③解决方法:硬件——添加气泡节拍延后产生数据冲突的指令软件——在产生数据冲突的指令间插入若干条空指控(NOP,需要完整的五个机器周期)
数据旁路——把前一条指令的ALU计算结果作为后一条指令的ALU输入
编译优化——调整指令执行顺序(将不发生冲突的指令提前,发生冲突的指令延后)
3.控制相关(控制冲突):遇到转移指令和其他改变PC值得指令产生断流
解决:①简单预测:永远猜正确/错误
动态预测:根据历史情况动态调整
②将正确和错误的控制流的指令都预先取出
③加快和提前形成条件码(类似加法器的思想——增加一条电路将结果输入到后面的加法器中)