体系结构要点知识系列五:指令相关、流水方式

一、 指令相关

“相关”处理:推后“分析k+1”和设置“相关专用通路”是解决重叠方式相关处理的两种基本方法(若相关的概率低,就不宜采用相关专用通路法,可以节省设备,重叠效率也不会明显下降)。

1、转移指令的处理:采用延迟转移技术,由编译程序生成目标程序时,将转移指令与条件转移无关的第k-1条指令交换一下位置,即使条件转移成功也不会使重叠效率下降。

2、指令相关的处理:因机器语言程序中邻近指令之间出现了关联,为防止出错让它们不能同时解释的现象称为发生了相关。当指缓可缓冲存放n条指令时,第k条指令与已预取进指缓的第k+1到k+n条指令都有可能发生指令相关。

3、主存空间数相关的处理:主存空间数相关是相邻两条指令之间出现对主存同一单元要求先写而后读的关联。

4、通用寄存器组相关的处理:通用寄存器组相关又有操作数的相关和变址值/基址值相关,主要靠推后读、牺牲速度来避免相关。

标量流水机的相关处理:

1、 局部性相关处理:包括指令相关、访存操作数相关和通用寄存器组相关等。局部性相关都是由于在机器同时解释的多条指令之间出现了对同一主存单元或寄存器要求“先写后读”。处理方法是:推后读、设置相关直接通路。

2、 全局性相关处理:全局性相关指已进入流水线的转移指令,尤其是条件转移指令,和其后续指令之间的相关。处理方法是:猜测法、加快和提前形成条件码、采取延迟转移(用软件方法进行静态指令调度技术)、加快短循环程序的处理。

二、 流水方式

流水是重叠的引申。一次重叠是把一条指令的解释分为两个子过程,流水是分为更多个子过程。1、向下扩展是指把子过程进一步细分,让每个子过程经过的时间都同等程度地减少,吞吐率就会进一步提高,目前计算机功能级流水分割的子过程数很少有超过10的。2、向上扩展是在多个处理机之间流水。

这里引入吞吐率的概念:吞吐率是单位时间内机器所能处理的指令条数或机器能输出的结果数。最大吞吐率是流水线达到稳定状态后可获得的吞吐率。

流水的分类:流水按处理级别可分为部件级、处理机级、系统级;流水按功能可分为单功能流水线和多功能流水线;按多功能流水线的各段能否允许同时用于多种不同功能连接流水,可把流水线分为静态流水线和动态流水线。

比较静态流水线和动态流水线:

1、 静态流水线在某一时间内各段只能按一种功能连接流水,只有等流水线全部流空后,才能切换成按另一种功能连接流水;动态流水线的各功能段在同一时间内可按不同运算或功能连接(前提是不能出现功能段使用冲突)。

2、 从软硬功能分配来看,静态流水线是把功能负担较多地加到软件上,以简化硬件控制;动态流水线则是把功能负担较多地加到硬件控制上,以提高流水的效能。

3、 动态流水线必是多功能流水线;单功能流水线必是静态流水线。

从机器所具有的数据表示可以把流水线处理机分为标量流水机和向量流水机;从流水线中各功能段之间是否有反馈回路,可把流水线分为线性流水和非线性流水。衡量流水处理机的性能指标是吞吐率Tp、加速比Sp和效率。

如果各个子过程所需的时间分别是t1、t2、t3、t4,时钟周期应该为max{ t1、t2、t3、t4},即流水线的最大吞吐率为Tpmax = 1/max{ t1、t2、t3、t4},它受限于流水线中最慢子过程经过的时间,也即是流水线中经过时间最长的子过程是瓶颈子过程。消除瓶颈的办法有:

1、 将瓶颈子过程再细分(并不是所有子过程都能再细分)

2、 通过重复设置多套瓶颈段并联,让它们交叉并行,即每隔t0 时间轮流给其中一个瓶颈段分配任务,使它们仍可每隔t0解释完一条指令。

因为流水过程中不总是满载,存在建立和排空过程,故不能达到最大吞吐率。设一个m段流水线的各段经过时间均为t0 ,则第一条指令从流入到流出需要T0=m* t0 的流水建立时间,之后每隔t0 就可流出一条指令,则完成n个任务的解释共需时间:

T = m* t0 +(n-1)* t0

流水线在这段时间里的实际吞吐率为:

Tp = n / [ m* t0 +(n-1)* t0]

加速比Sp表示流水方式相对于非流水顺序方式速度提高的比值,则非流水顺序方式连续完成n个任务要n*m*t的时间,则

Sp = 顺序方式吞吐率/实际吞吐率 = n*m*t / [ m* t0 +(n-1)* t0]

流水线的效率是指流水线中设备的实际使用时间占整个运行时间之比,也称流水线设备的时间利用率。从时空图上看,效率实际上就是n个任务占用的时空区面积和m个段总的时空区面积之比。

流水机处理中断的关键问题是如何处理好断点现场的保存和恢复,而不是如何缩短流水线的断流时间。

由于非线性流水线段间设置有反馈回路,一个任务在流水的全过程中,可能会多次通过同一段或走过某些段,如果每拍向流水线送入一个新任务,则会发生多个任务争用同一功能段的使用冲突现象。所以,流水线调度要解决的问题是:究竟间隔几拍送入下一个任务,才能既不发生功能段使用冲突,又能使流水线有较高的吞吐率和效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值