学习笔记——计组—流水线

 简介

        流水线(Pipeline)是一种将任务分解为多个小步骤,并让多个不同任务的各个小步骤重叠,从而实现多个任务并行处理,以加速程序运行速度的技术。

       为了实现流水线,首先将输入的任务分割成一系列子任务,使各子任务能在流水线的各个阶段并发地执行。将任务源源不断地输入流水线,从而实现了子任务级的并行。流水线对于计算机系统是非常必要的。

       在CPU内部,取指令、译码、执行都是由不同部件完成的,所以,以此为例。

1.非流水线时空图:

若不采用流水线,则3个部件在同一时间间隔内,只能有一个执行,其余两个部件处于闲置状态。

2.流水线时空图:

若采用流水线,当任务饱满时,即从第2时刻开始,3个部件同时执行,而且互不干扰。

        在流水线中,原则上要求各个阶段的处理时间都相同。若某一阶段的处理时间较长,势必造成其他阶段的空转等待。对子任务的划分,是决定流水线性能的一个关键因素。因此,执行的总时间主要取决于流水操作步骤中最长时间的那个操作。据此:设  流水线由N个操作组成,每段所需时间为_{T i}(1<=i<=k),完成M个任务的实际时间为\sum_{i=1}^{N}_{T i}+(M-1)*_{T j},其中_{T j}为流水操作步骤中最长的段时间。

       在流水线处理过程中,当任务饱满时,任务源源不断地输入流水线,不论有多少级过程,每隔一个时钟周期都能输出一个任务。从理论上说,一个具有k级过程的流水线处理n个任务需要的时钟周期数为_{T l}=k+(n-1)。其中k个时钟周期用于处理第一个任务。k个周期后,流水线被装满,剩余的n-1个任务只需要n-1个周期就完成了。若用非流水线的硬件处理这n个任务,时间上只能串行,则所需的时钟周期数为_{T k}=n*k。将_{T l}_{T k}的比值定义为k级流水线的加速比_{C k}=_{T l}/_{T k}=(n*k)/(k+(n-1))。 

例题

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值