控制器:协调并控制计算机各部件执行程序的指令序列,基本功能是取指令,分析指令和执行指令。
(1)通用寄存器
(2)数据寄存器
(3)地址寄存器
(4)条件码寄存器
MAR,MDR,PC,IR。
为了给在早期计算机上编写的程序提供向上的兼容性,在新计算机的设计上经常保留原适合合计的寄存器组织形式。
现代的x86_64的寄存器组织:
CU是提供完成计算机全部指令操作的微操作命令序列部件,分为两种:
CPU每取出并执行一条指令所需的全部时间。
CU检查IR中的内容,以确定是否有间址操作。
不同的指令多种多样。
(1)提高器件的性能。
(2)改进系统的结构,开发系统的并行性。
并行性的四个级别:
取下一条指令和执行当前指令的操作同时进行,指令的二级流水:
二级流水面临的问题:
指令过程可以分解为更细的几个阶段:
假设上述各段时间都是相等的,可得六级流水时序:
存在的问题:
在某个时钟周期内,流水线既要完成某条指令对操作数的存储器访问操作,又要完成另一条指令的取指操作,就会发生访存冲突。
解决方法1:让流水线在完成前一条指令对数据的存储器访问时,暂停(一个CLK)取后一条指令的操作。
解决方法2:设置两个独立的存储器分别存放操作数和指令,以避免取指令和取操作数同时进行时互相冲突。
还可以采用指令预取技术,将指令预先取到指令队列中。
流水线中的各条指令因重叠操作,可能改变堆操作数的读写访问顺序,从而导致数据相关冲突。
例如流水线执行下列指令序列:
出现了RAW相关,采用后推法:
或者采用定向技术,又称旁路技术或相关专用通路技术:不必等待某条指令的执行结果送回寄存器后,再从寄存器中取出该结果,作为下一条指令的源操作数,而是直接将执行结果送到其他指令所需要的地方。
数据相关冲突分为3类:
主要由转移指令引起。
下面的指令3是转移指令:
单位时间内流水线所完成指令或输出结果的数量。
最大吞吐率:流水线在连续流动达到稳定状态后所获得的吞吐率。
m段流水线的速度与等功能的非流水线的速度之比。
最大加速比=流水线段数。
流水线中各功能段的利用率。
通常用流水线各段处于工作时间的时空区与流水线中各段总的时空区之比来衡量流水线的效率。
设法在一个时钟周期内,产生更多条指令的结果。
在每个时钟周期同时并发多条独立指令。
将一些流水线寄存器插入到流水线段中,好比将流水线再分段。
由编译程序在编译时挖掘出指令间潜在的并行性后,把多条能并行操作的指令组合成一条具有多个操作码字段的超长指令。
将指令的整个执行过程用流水线进行分段处理。
将流水技术用于部件级:
(1)人为设置的中断
称为自愿中断,如8086asm的int type
,用来完成系统调用。
(2)程序性事故
(3)硬件故障
(4)IO设备
(5)外部事件
中断分为两类:
设置中断请求标记触发器,简称中断请求触发器,记作INTR
。
(1)硬件排队
硬件向量法和软件查询法
当查到某一中断源有中断请求时,安排一条转移指令,直接指向此中断源的中断服务程序入口地址。
允许中断触发器=1.
CPU在指令执行周期结束时刻统一向所有中断源发出中断查询信号。
(1)保护程序断点
(2)寻找中断服务程序的入口地址
(3)关中断
上面3步都是在中断周期内由一条中断隐指令完成。
程序断点的现场由中断隐指令自动完成。
各寄存器内的现场可在中断服务程序中由用户编程实现。
(1)屏蔽触发器与屏蔽字
所有屏蔽触发器组合在一起,构成屏蔽寄存器,其中内容称为屏蔽字。
(2)屏蔽技术可改变优先等级
处理次序与响应次序一致:
灵活控制程序