公开课链接:http://www.chinesemooc.org/kvideo.php?do=course_progress&kvideoid=4392&classesid=1967
7.1 流水线的基本原理
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-142.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-144.png)
需要添加流水线寄存器导致单条指令完成的时间更长,但可能可以提高整体吞吐率
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-145.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-146.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-147.png)
7.2 流水线的优化
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-148.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-149.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-150.png)
主流稳定在了15左右
7.3 超标量流水线
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-151.png)
内部并行
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-152.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-153.png)
7.4 流水线的冒险
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-154.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-155.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-156.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-157.png)
万能的空泡
7.5 数据冒险的处理
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-158.png)
用软件解决(容易有软件兼容问题)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-159.png)
硬件插入空泡解决
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-160.png)
数据前递
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-161.png)
前递或旁路的硬件实现示意
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-162.png)
多个位置前递
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-163.png)
前递也无法处理的冒险问题
7.6 控制冒险的处理
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-164.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-165.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-166.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-167.png)
无条件转移通过直接不停顿地在一个周期内获得结果,供下一次取址使用
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-168.png)
间接转移必须停一个周期
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-170.png)
条件转移通过在寄存器上增加比较部件,但依旧需要停一个周期
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-171.png)
![](https://pphkpublicbucket.oss-cn-hongkong.aliyuncs.com/ppblog/2020/09/image-172.png)
延迟转移技术:编译时改变指令顺序