首页 > 其他分享 >【《硬件架构的艺术》读书笔记】06 流水线的艺术(3)

【《硬件架构的艺术》读书笔记】06 流水线的艺术(3)

时间:2022-12-17 18:22:06浏览次数:47  
标签:艺术 06 读书笔记 MEM 指令 寄存器 流水线 冒险 6.9

6.9 流水线冒险

冒险会干扰流水线并阻止下一条指令在目标时钟周期内的执行。冒险会降低流水线在理想情况下所能带来的速度提升。

冒险分类:

1、结构冒险:资源冲突导致硬件无法支持所有可能的指令组合同时执行。

2、数据冒险:指令执行需要之前指令计算结果,而这个结果还在流水线中没计算出来。

3、控制冒险:分支的流水线的其他指令改变程序计数器的值。

通用方法:停止流水线直至风险消除,在流水线中插入多个“气泡”。

6.9.1 结构冒险

 

 如图,MEM在一个周期内被两个指令使用,产生冲突。

解决方法:如图,停一个周期,待对MEM的冲突解除后再恢复流水线。

另一种方法:IF和MEM阶段使用不同的存储器来避免同时访问同一块存储器。缺点:消耗更多资源。

6.9.2 数据冒险

对于下面指令:

 

 

 

 如图,ADD之后的指令无法得到正确的执行结果,因为后续指令的ID阶段都需要ADD指令的结果。

 

 解决方法:数据/寄存器转移。大概意思就是把第一个指令的ALU寄存后直接输出到下一级ALU的输入。对于两个、三个周期后的指令,则需要把MEM输出、REG输出直接连接到后续流水线。

 

 对于下面指令:

 

 

 

 如图6.20,路径1永远无法实现,因为XOR指令需要在ALU输入端使用R1寄存器的值,该值在LW指令执行后才能更新。

简单的方法:使用纵向旗袍,将ALU周期延一个时钟。

 

 除了使用硬件技术,也可以使用基于编译器调度的软件方式来解决数据冒险的问题。这时,编译器跟踪每个寄存器中的数据,并重新安排指令次序阻止数据冒险的产生。

6.9.3 控制冒险

如下指令:

 

 T2在执行第二条指令时就需要PC值,但是该值要在第二条指令的MEM操作后才可能。

解决方法:分支语句中用新的PC值重新获取下一条指令。这种情况下,需要将流水线停止几个周期,直到重新获取下一条指令。如图:

 

 

 

 6.9.4 其他风险

指令获取或在数据读写时会访问存储器,指令获取时,数据应该由PC寄存器保持稳定。该值应该一直保持到把获取的指令写入IF/ID流水线寄存器的IR域为止。因此,对IF/ID寄存器的IR操作必须在PC写操作之前。

数据读写时,有效地址在EX阶段由ALU计算得到。在将存储器中的数据存入LMD寄存器或存储器写信号被激活使数据写入存储器之前,该地址不能变化。

6.10 ADC流水线——一个例子

 

 该ADC有四级流水线,每级流水线提供三位数字量,所以一共是12位ADC。每级流水线采样并得到差值传递到下一级,提高了ADC的处理能力。

标签:艺术,06,读书笔记,MEM,指令,寄存器,流水线,冒险,6.9
From: https://www.cnblogs.com/magnolia666/p/16989204.html

相关文章

  • 前端开发系列106-小程序篇之衣橱商城首页功能实现
    title:'前端开发系列106-小程序篇之衣橱商城首页功能实现'tags:categories:[]date:2018-12-2118:30:39本文简单说明衣橱商城首页界面的实现过程,包括对商城首页的......
  • 【《硬件架构的艺术》读书笔记】06 流水线的艺术(2)
    6.6DLX指令集的实现这节开始将指令集相关内容,没学过相关知识,看不太懂,就快速浏览一下好了。DLX指令集包括五个部分:1、指令获取(IF)IR<=MEM[PC]NPC<=PC+4从存储器......
  • P2466 [SDOI2006]Sue的小球
    我们注意到,这道题要求小球最大价值和,并且即使权值变为负的也要算上。因此,状态转移时只要维护所有小球损失的价值“最小即可。这是一道典型的区间dp,因此我们可以设值状态......
  • day36_0654.最大二叉树
    0654.最大二叉树该题部分没思路部分有思路但不会写代码因为自己写不出完整代码所以笔记就看卡哥解答过程吧详细通俗易懂我这里简单记录一下我都卡在什么地......
  • day37_0617.合并二叉树
    0617.合并二叉树classSolution{public:TreeNode*mergeTrees(TreeNode*root1,TreeNode*root2){intval1=0,val2=0;if(root1!=NUL......
  • 【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
    前言明天就是拥抱情人节,情侣们会在公开的场合拥抱,向世人宣告你俩的爱意,也让这个寒冷的冬天变得格外温馨。到了年底依然能热情拥抱,也见证了两人情意如昔。今天子川就给大......
  • 《代码大全》读书笔记下篇
    Subsections ​数据名称变量常量基本数据类型条件语句​循环语句代码调整调试集成​ (一)、数据命名   (1)、......
  • [读书笔记]Python编程:从入门到实践读后感
    0x00前言说句实在话,你买这本书根本就是一个错误。如果,你只是把它束之高阁,就认为自己学会了Python的话。诚如编辑所言,我自己买下这本书已经有一年多了,但真正把它读起来,......
  • 【《硬件架构的艺术》读书笔记】06 流水线的艺术(1)
    6.1介绍流水线通过在较长的组合逻辑路径中插入寄存器降低了组合逻辑延迟,增加了时钟频率并提高了性能。 图中分别为插入流水线前后的逻辑。长路径插入寄存器后最大时钟......
  • Jenkins实践指南-06-Jenkins pipeline 语法02
    3.2.6parameters  [作者:Surpassme]parameters又称参数化,通过参数化可以决定pipeline运行期的行为。pipeline主要支持两种形式的参数化parameters命令参数化和插件参......