Instruction-Level Pipelining

Posted 菜菜粥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Instruction-Level Pipelining相关的知识,希望对你有一定的参考价值。

The speed of execution programs is influenced by many factors

  • One way to improve performance is to use faster circuit technology to build the processor and the main memory.
    通过用效率更高的电路技术来构建处理器和内存,提高性能,
  • Another way is that more than one operation can be performed at the same time.
    在相同的时间内,让更多的操作,被执行

程序执行(有很多的fetch-excete指令组成)

指令

clock   1         2          3         4
     Fetch1     Exec1
                Fetch2      Exec2
                            Fetch3    Exec3

分析:

  • 没有用 pipelining,执行这段程序需要6个时钟单位
  • 使用后,执行这段程序,只要4个时钟单位
  • 这是因为后一条指令可以和前一条指令同时进行(当然 each separate hardware unit has
    individual control logic 如果指令之间相互影响,那么这里也就不可以同时进行了
    还有就是每个微操作的时间要差不多, 否则就会产生等待,同样效果也是不佳的)
  • 为什么不是起头并进,因为bus总线,每次只能一条指令使用的,这是cpu和计算机的结构限制,如果你用多总线,那么成本,复杂性,都会增加好多

要求

  • The pipeline consists several sequential stages.(因为跳转执行的情况,效果不是很好,这也是为什么c语言要尽量小用goto语句,因为你要重复重新的构建流水线,这样效率就低了)
  • Each stage is implemented by special hardware unit.
  • The required time of implement the operation of each stage is same.

指令流水线的时空图 x轴表示时间 y轴表示 m条指令,每条指令n个微操作

  • Fill time:从开始执行第一条指令,到最后一条指令的执行执行,为什么,是这样,因为你只有判断到后面没有指令了,才能确定是不是full time(构建时间),所以区间是这样子,和Drain time 不对称
  • Drain time:从 第一条指令的末尾,到程序的结束的这段时间是,排空时间
  • Total time: 这个当然就是程序执行所有的时间
  • Throughput rate:每一个时钟周期,执行的指令的条数 (吞吐率)
  • Speedup ratio: 没用了pipeinling的程序执行时间/用pipeinling的程序执行时间(加速率)
  • Efficiency: 没用pipeinling的总时间/ 总区域的时间(相当于用长方形包住区域 每条指令加上等待时间).

Suppose we have a m-stage pipeline, the clock cycle time is ∆t, that is, it takes ∆t time per stage. Assume also we have n instruction to process.
- Fill time: m ∆t
- Drain time: (m-1) ∆t
- Total time: T= (n+m-1) ∆t
- Throughput rate: n / 【(n+m-1) ∆t】
- Speedup ratio: n*m*∆t/【(n+m-1) ∆t】 显然>=1
- Efficiency:E = n*m*∆t/(m*T) 即 Throughput rate 乘上一个 ∆t

以上是关于Instruction-Level Pipelining的主要内容,如果未能解决你的问题,请参考以下文章

18-Jenkisn-Pipelin-声明式流水线语法-triggers/stage/tool

play 源码分析

Jenkins

Mongodb聚合操作之读书笔记

流式缓冲区 - Google BigQuery

Hadoop架构: 流水线(PipeLine)