第一节:重叠方式
知识点1:重叠原理与一次重叠
顺序解释指的是各条指令之间顺序串行(执行完一条指令后才取下条指令)地进行,每条指令内部的各个微操作也顺序串行地进行。
解释一条机器指令的微操作可归并成取指令、分析和执行三部分,时间关系如图5-1所示。
取指是按指令计数器的内容访主存,取出该指令送到指令寄存器。指令的分析是对指令的操作码进行译码,按寻址方式和地址字段形成操作数真地址,并用此真地址去取操作数(可能访主存,也可能访寄存器),为取下一条指令还要形成下一条指令的地址。指令的执行则是对操作数进行运算、处理,或存储运算结果(可能要访主存)。
实现指令的重叠解释必须在计算机组成上满足以下几点要求:
1)要解决访主存的冲突。
2)要解决"分析"与"执行"操作的并行。
3)要解决"分析"与"执行"操作控制上的同步。
4)要解决指令间各种相关的处理。
一次重叠
**"一次重叠"**的定义和好处
任何时候都只是"执行R"与"分析+"重叠。就是说,即使"分析+1"比"执行,"提前结束,"执行,"也不紧接在"分析:1"之后与"执行"重叠进行;同样,即使"执行"比"分析+1"提前结束,"分析+"也不紧接在"执行,"之后与"分析+1"重叠进行。称这种指令分析部件和指令执行部件在任何时候都只有相邻的两条指令在重叠解释的方式为"一次重叠"
"一次重叠"的好处是节省硬件,计算机内指令分析部件和指令执行部件均只需一套,也简化了控制。设计时应适当安排好微操作,使"分析"和"执行"的时间尽量等长,重叠方式才能有较高的效率。
知识点2:相关处理
1、转移指令
标量计算机中的条件转移概率可达10%-30%这样,重叠效率将显著下降。因此,重叠方式的计算机在程序中应尽量减少使用条件转移指令。
如果要用条件转移指令时,可采用延迟转移技术,由编译程序生成目标程序时,将转移指令与条件转移无关的第k-1条指令交换一下位置,这样,即使条件转移成功也不会使重叠效率下降。
2、相关处理与设置
①指令相关:
指令相关是因为机器指令允许修改而引出的。如果规定在程序运行过程中不准修改指令,指令相关就不可能发生。不准修改指令还可以实现程序的可再入和程序的递归调用。但是,为满足程序设计灵活性的需要,在程序运行过程中有时希望修改指令,这时可设置一条"执行"指令来解决。
②主存空间数相关:
主存空间数相关的处理主存空间数相关是相邻两条指令之间出现对主存同一单元要求先写而后读的关联。如果让"执行;"与"分析;+"在时间上重叠,就会使"分析pt1"读出的数不是第k条指令执行完应写人的结果而出错。要想不出错,只有推后"分析t1"的读。
推后读常见的方法是由存控(存储器控制器)给读数、写数申请安排不同的访存优先级来解决。
③通用寄存器组相关:
通用寄存器组相关一般的计算机中,通用寄存器除了存放源操作数、运算结果外,也可能存放形成访存操作数物理地址的变址值或基址值。因此,通用寄存器组的相关又有操作数的相关和变址值或基址值的相关两种。
第二节:流水方式
知识点1:流水方式基本概念
1、流水与重叠的定义
流水与重叠在概念上没有什么差别,流水可以看成是重叠的引申。二者的差别只在于"一次重叠"是把一条指令的解释分为两个子过程,而流水是分为更多个子过程。前者可同时解释两条指令;后者可同时解释4条指令。显然,如果能把一条指令的解释分解成时间相等的m个子过程,则每隔△t=T/m就可以处理一条指令。因此,流水的最大吞吐率取决于子过程的经过时间At,△t越小,流水线的最大吞吐率就越高。
流水的最大吞吐率是指流水线满负荷每隔△t流出一个结果时所达到的吞吐率。实际吞吐率总是低于其最大吞吐率。
2、流水的分类
流水的分类从不同的角度对流水可进行不同的分类。具体如下:
①流水按处理的级别可分为部件级 、处理机级 和系统级。
②从流水线具有功能的多少,可以分为单功能流水线 和多功能流水线。
③按多功能流水线的各段能否允许同时用于多种不同功能连接流水,可把流水线分为静态流水线 和动态流水线。
④从计算机所具有的数据表示角度,可以把流水线处理机分为标量流水机 和向量流水机。
⑤从流水线中各功能段之间是否有反馈回路的角度,可以把流水线分为线性流水线 和非线性流水线。
知识点2:标量流水线的主要性能
1、流水线的性能与计算
标量流水处理机的性能主要是吞吐率T,、加速比S.和效率n。其中吞吐率是流水线单位时间里能流出的任务数或结果数。
由于各个子过程进行的工作不同,所经过的时间也就不一定相同,所以在子过程间设置了接口锁存器,让各锁存器都受同一时钟同步。时钟周期会直接影响流水线的最大吞吐率,总希望它越小越好。如果各个子过程所需的时间分别为△t1、t2、At和△t4,时钟周期应当为
受限于流水线中最慢子过程经过的时间。
[重点]流水线中经过时间最长的子过程称为瓶颈子过程。
如果线性流水线每段经过的时间△ti不等,其中瓶颈段的时间为△tj ,则完成n个任务所能达到的实际吞吐率为:
2、效率
流水线的效率是指流水线中设备的实际使用时间占整个运行时间之比,也称流水线设备的时间利用率。
如果是线性流水线、任务间不相关且各段经过的时间相同,则在T时间里,流水线各段的效率都相同,均为no
因此,从时空图上看,效率实际上就是n个任务占用的时空区面积和m个段总的时空区面积之比。显然,只有当n>>m时,n才趋于1同时还可以看出,对于线性流水且每段经过时间相等,任务间无相关时,流水线的效率才正比于吞吐率,即
对于非线性流水,或线性流水但各段经过的时间不等或任务间有相关时,应通过画实际工作的时空图才能求出吞吐率和效率。
流水线的效率为:
知识点3:标量流水机的相关处理和控制机构
任务在流水线中流动顺序的安排和控制可以有两种方式:
同步流动方式(顺序流动方式)
一种是让任务(指令)流出流水线的顺序保持与流入流水线的顺序一致,称为顺序流动方式或同步流动方式。
异步流动方式
另一种是让流出流水线的任务(指令)顺序可以和流入流水线的顺序不同,称为异步流动方式。
总线式分布方式控制管理
标量流水机对局部性相关的处理一般采用总线式分布方式控制管理,包括:
①相关的判断主要是靠分布于各寄存器的"忙位"标志来管理;
②在分散于各流水线的入、出端处设置若干保存站来缓存信息;
③用站号控制公共数据总线的连接作相关专用通路,使之可为多个子过程的相关所共用;
④.一旦发生相关,用更换站号来推后和控制相关专用通路的连接;
⑤采用多条流水线,每条流水线入端有多组保存站,以便发生相关后,可以采用异步的流动方式。
全局性相关的处理
全局性相关指的是已进入流水线的转移指令(尤其是条件转移指令)和其后续指令之间相关。下面介绍一些常用的处理方法。
①使用猜测法
②加快和提前形成条件码
③采取延迟转移
④加快短循环程序的处理
单功能非线性流水线的任务调度方案
为了对流水线的任务进行优化调度和控制,1971年,提出使用一个二维的预约表。
如果有一个由K段组成的单功能非线性流水线,每个任务通过流水线需要N拍。利用类似画时空图的方法,可以得到该任务使用流水线各段的时间关系表(即预约表)。其中拍号n为任务经过流水线的时钟节拍号。如果任务在第n拍要用到第k段,就在相应第n列第k行的交点处用"√"表示。
由表5-3可知,最小平均延迟为4拍。此时流水线的最大吞吐率Tomax=1/4(任务/拍)。最佳调度方案宜选其中按(1,7)周期性调度的方案。
①按(1,7)调度方案输入6个任务,全部完成的时间为1+7+1+7+1+7=24(拍),实际吞吐率Tp=6/24(任务/拍)。
②若按(3,5)调度方案输入6个任务,全部完成的时间为3+5+3+5+3+7=26(拍),实际吞吐率Tp=6/26(任务/拍)。
③若按(5,3)调度方案输人6个任务,全部完成的时间为5+3+5+3+5+7=28(拍),实际吞吐率T,=6/28(任务/拍)。
可见,最佳的方案应为(1,7)调度方案,输入6个任务的实际吞吐率较其他方案要更高些。
第三节:指令集高度并行的超级处理机
知识点1:处理机的工作原理和结构
自从20世纪80年代RISC兴起之后,出现了提高指令级并行的高性能超级处理机,让单处理机在每个时钟周期里可解释多条指令。
代表性的例子是超标量处理机、超长指令字处理机、超流水线处理机和超标量超流水线处理机。
①超标量处理机
超标量处理机采用多指令流水线,每个At同时流出m条指令(称为度m)。在超标量流水线处理机中配置多套功能部件、指令译码电路和多组总线,寄存器也备有多个端口和多组总线。
程序运行时由指令译码部件检测顺序取出的指令之间是否存在数据相关和功能部件争用,将可并行的相邻指令送往流水线。若并行度为1,就逐条执行。超标量流水机主要靠编译程序来优化编排指令的执行顺序,将可井行的指令搭配成组,硬件不调整指令顺序,这样实现起来比较容易些。
②超长指令处理机
超长指令字(VLIW)结构是将水平型微码和超标量处理两者相结合。指令字长可达数百位,多个功能部件并发工作,共享大容量寄存器堆。
③超流水线处理机
不同于超标量处理机和VLIW处理机,每个△t'仍只流出一条指令,但它的t'值小,一台度为m的超流水线处理机的△t'只是基本机器周期△t的1/m因此,一条指令需花kmAt '的时间,k为一条指令所含的基本机器周期数。只要流水线性能得以充分发挥,其并行度就可达m。
④超标量超流水线处理机
超标量超流水线处理机是超标量流水线与超流水线处理机的结合。在一个△t'(等于△t/n)发射了k条指令(超标量),而每次发射时间错开△t'(超流水),相当于每拍△t流出了nk条指令,即并行度m=kn。
超标量处理机利用资源重复,设置多个执行部件寄存器堆端口。超流水线处理机则着重开发时间并行性,在公共的硬件上采用较短的时钟周期,深度流水来提高速度,需使用多相时钟,时钟频率高达100~500MHz没有高速时钟机制,超流水线处理机是无法实现的。