【计算机体系结构】流水线冲突

流水线冲突

流水线冲突:由于相关等原因的存在,使得指令流中的吓一跳指令不能在指定的时钟周期执行。
 
分类

  1. 结构冲突:因硬件资源满足不了指令重叠执行的要求而发生的冲突。
  2. 数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的重发。
  3. 控制冲突:流水线遇到分支指令和其他会改变PC值的指令所引起的冲突。

解决流水线冲突的基本方法是暂停部分指令执行。

结构冲突:某种指令组合因为资源冲突而不能正常执行
常见的导致结构冲突的原因:1. 功能部件不是完全流水。2.资源份数不够。

  • 一般解决方法:
    ① 通过拉开两条冲突指令在流水线之间的距离来避免冲突的发生的。
    ② 通过设置相互独立的存储器(分别存储指令和数据)
    原理:通过增加资源数量,来避免访同一资源导致的冲突。

数据冲突:当相关的指令靠得足够近时-重叠执行、重新排序会导致指令的读写操作数的顺序。
可分为三个子类:写后读冲突、写后写冲突、读后写冲突
读后写冲突:
在这里插入图片描述
而对于写后写冲突、读后写冲突
可用反相关与输出相关的解决方法:换名技术,来避免这两种相关的出现,也就能避免读后写、写后写冲突的发生。
 
 
着重解决读后写
定向技术是一种缓解数据冲突(介绍冲突引起的停顿时间)的典型方法。
定向技术并不能解决所有数据冲突。
 
定向:是基于硬件的运行时解决方案。
 
指令调度:通过让编译器重新组织指令顺序来消除冲突。
 
定向技术的关键思想是在计算结构尚未出来之前,后面等待使用该结果的指令并不真正立即需要该计算结果。如果能够将该计算结果从其产生的地方直接送到其他指令需要它的地方。这样,就可以避免停顿。
在这里插入图片描述
在这里插入图片描述

控制冲突:由分支指令引起的指令延迟。

  • 最简单的解决方法:冻结或排空流水线。
  • 控制冲突的改善 基于编译器的软件方法:① 总是预测分支失败 ② 预测分支总是成功 ③ 延迟分支
  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
很抱歉,作为人工智能,我无法提供思维导图。但我可以为您介绍一下流水线工作原理和冲突处理方法。 计算机体系结构流水线的工作原理: 流水线是一种计算机结构,用于提高指令处理速度。流水线将一个指令处理分成若干个流水段,每个流水段负责执行一个指令处理的一部分。同时,多条指令可以在不同的流水段同时处理,从而提高了处理效率。 流水线中一般包含以下五个流水段: 1. 取指令(IF):从内存中读取指令。 2. 指令译码(ID):将指令翻译为计算机可以理解的指令。 3. 执行指令(EX):执行指令的操作。 4. 存储访问(MEM):访问内存来获取数据。 5. 写回结果(WB):将执行的结果写回内存或寄存器中。 冲突处理方法: 1. 数据相关(Data Hazards):当一条指令需要用到另一条指令才能执行时,就会出现数据相关。 解决方法: ① 前推技术(Forwarding):让结果直接流动到需要的地方,绕过数据相关的指令。 ② 排队技术(Stalling):将流水线暂停,等待需要的数据指令完成。 2. 控制相关(Control Hazards):当分支指令的结果未知时,即分支指令的条件尚未满足,就会出现控制相关。 解决方法: ① 预测分支指令的结果,提前预测好接下来的指令,以减少等待时间。 ② 延迟槽技术(Delayed Branch):在分支指令之后加入一个无操作指令,使得下一条指令一定会执行。 以上是计算机体系结构流水线的相关与冲突处理方法的介绍,希望对您有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南方者

你的鼓励将驱动我的开源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值