计算机操作系统(四) --- 流水线的通用原理

计算流水线

         下面的图就可以知道流水线的思维了,I1 ,I2 ,I3 为需要经过ABC 组合逻辑的信号,可以看到当I1 到了 B 时,I2 已经到了A 了,

同理 I3也一样,流水线的思维提高了工作效率.

流水线

             这里说一下吞吐量 , 延迟 , 时间周期的计算,下图为例,可以看到, 假如我们的时间周期为 70ps. 那么下面一个信号走完就需要 6*70 = 420ps , 那么 420ps 就是延迟, 吞吐量就是单位时间内可以处理的信号量,可以知道用一除以70乘以一个时间单位得到 14.29 GIPS .即是时间周期的倒数.

延迟

 

流水线的局限性

  • 不一致的划分

流水线局限

           我们可以看到以B 为周期(以为B里的延迟最大,思考一下要是选AC会是怎么样的),那么AC中会有空闲的地方.

 

  • 流水线过深,收益反而下降

lsx

 

流水线的改进

电路重定时( circuit retiming )

       将计算PC的部分移到时序的开头.具体的查看下面的链接

 

分支预测

       当出现分支的时候, 猜测分支的方向并根据猜测的方向进行预测.

 

流水线冒险

       流水线冒险

       一个准备写入的时候,一个提前先拿了出来就会造成数据错误,解决这个问题可以通过以下的方式

  • 用暂停来比避免数据冒险(stalling)

stallingrisk

          但是这样会暂停三个周期,严重影响了性能.

 

  • 用转发来避免数据冒险

           还是上图的那种情况,一个写入,一个读取,读取的时候发现这个值需要被其他操作写入,那么读取的操作直接就拿写入的值就够了,不再等其他操作写入后,我再读取了(仔细想想,类型于并发中的可视性啊!!)

bypass

 

  • 加载/使用数据冒险

加载使用冒险

         下面为暂停+转发的方式来解决加载/使用冒险

互锁

 

 

参考资料:

posted @ 2018-11-13 21:45  float123  阅读(1814)  评论(0编辑  收藏  举报