控制器
负责协调并控制计算机各部件执行程序的指令序列,包括取指令,分析指令、执行指令。控制程序的输入和结果的输出(控制主机和IO设备交换信息)和对总线的管理。指令控制,操作控制,时间控制。
指令周期:CPU取出并执行一条指令所需要的全部时间,称为指令周期
机器周期:指令周期每个阶段所需的时间
时钟周期:T周期,时钟频率的倒数。
//==取指周期==每个指令的取指周期完全一致
(PC)->MAR,1->R;//PUSH 发送指令地址信息
M(MAR)->MDR,(PC)+1->PC;//PULL 拉取指令内容
(MDR)->IR,OP(IR)->CU.ID,1->IND/EX;//execute 指令分析//切换工作周期;
//==间址周期==间址寻址,多一次访存
Ad(IR)->MAR,1->R;//push T
M(MAR)->MDR;//pull T
(MDR)->Ad(IR),1->EX;//exe T
//执行周期
乘法时间多于加法多于无条件转移
取操作数和执行操作
由于各操作的执行周期不同,所以各种指令的指令周期不同
/*==中断周期==
采用中断方式实现主存和IO交换信息时
CPU在每条指令的执行周期结束前,都要发出中断查询信号,检测是否有IO提出请求。
如果有请求,则CPU进入中断响应阶段,又称为中断周期
/
0 -> MAR;
1 -> W;
(PC) -> MDR;
向量地址 -> PC;
0 -> EINT;
PC用户可见IR用户透明:OP送往CU,Ad送往MAR。MDR用户透明MAR用户透明CUOP(IR)
控制信号
SIGNAL:上条指令的结果,来产生相应的控制符号CLK时钟信号,通过时钟脉冲来解决同步问题中断请求标记触发器、
DMA控制总线的控制信号片内控制信号:主要用于CPU内寄存器之间的传送和控制
ALU实现不同的操作控制总线信号:命令主存或者IO读写、中断响应等输出信号
控制方式
同步控制方式:所有控制信号均来自统一的时钟信号,通常以最长的微操作序列和最烦琐的微操作(定长方式)为标准。控制电路简单,运行速度慢
异步控制方式:由专门的应答线路控制,电路复杂,速度快,一般用于主机和IO设备之间的传送控制
联合控制方式:大部分同步,小部分异步。单总线结构在一个时钟周期内只能传输一种控制信号
控制单元CU
硬布线控制器
硬布线CU的设计步骤:
安排微操作节拍时注意微操作次序
被控制对象不同的微操作尽可能在一个节拍中完成
占时不长的微操作也把它们安排在一个节拍内完成,允许其实现先后次序
微程序控制器
程序是指令集合,指令≈微程序,微程序是微指令集合,微指令是若干微命令的集合,微命令执行微操作。
//自动执行取指微程序
0 -> CMAR -> CM -> CMDR -> push signal
//OP指令(OP微程序)通过微地址形成部件映射为微程序入口地址开始循环执行该微程序
OP(IR) -> micro-program.map(OP) -> CMAR -> CM -> CMDR
loop(next): CMDR.next -> CMAR -> CM -> CMDR -> push signal
微指令编码方式:
直接编码
字段直接编码方式:互斥性微命令在一个字段,相容性微命令在不同字段。000表示不操作
字段间接编码方式:一个字段的微命令需要另一个字段中的某些微命令来解释。
混合编码方式水平型微指令:用较短的微指令结构换取较短的微程序结构,很好的并行性,微指令数少垂直型微指令:用较长的微程序结构换取较短的微指令结构,和机器指令比较相似
地址形成方式
断定方式
nextOP(IR)在指令译码器中译码,得到该机器指令的首地址增量计数器法
(CMAR) + 1 -> CMAR分支转移:条件转移
硬件产生微程序入口地址
流水线
时间上并行:流水线,空间上并行:超标量。
执行方案:同一时刻有多条指令在CPU的不同功能部件中并发执行。并不能缩短单条指令的执行时间,但是对于整个程序来说,执行效率得到了大幅度的提高。
设计原则:流水段的个数以最复杂指令所用的功能段个数为准,流水段的长度以最复杂的操作所花的时间为准。
流水线指令集的特点:
指令长度尽量一致
指令格式尽量规整
采用
load/store指令,其他指令都不能访问存储器,这样可以把LOAD/STORE指令的地址计算和运算指令的执行步骤规整在同一个周期中,有利于减少操作步骤数据和指令在存储器中对齐存放
指令冒险
资源冒险:多条指令进入流水线后同一时钟周期使用了同一个功能部件所发生的冲突
停顿一个时钟
指令和数据分开存储,
L1cache分开
数据冒险:如果一个程序中,必须等前一条指令执行完毕后,才能执行后一条指令,那么这两条指令就是数据相关。
写后读
RAW:应该写后读,但是先读了旧数据;读后写
WAR:读了新数据;写后写
WAW:写的顺序错了
一般使用数据旁路技术解决数据相关。设置相关专用的通路,不等前一条指令把计算结果写回寄存器组,而是直接把钱一条指令的计算结果作为输入数据给下一条需要此结果的指令,是本来需要暂停的操作变得可以继续执行。
控制冒险:转移指令转移到新的目标地址取址导致断流,
高级流水线
超标量技术:配置了多个功能部件,每个时钟周期可以并发独立执行多条独立指令的某个阶段。
超级流水线:多级流水线(n>5)
超长指令字:采用多个处理部件,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字
动态流水线:多种运算可以同时进行