引起cpu流水线阻塞的三个原因

引起cpu流水线阻塞的三个原因1、多个任务在同一时间周期内争用同一个流水段(资源冲突)例如,假如在指令流水线中,如果数据和指令是放在同一个储存器中,并且访问接口也只有一个,那么,两条指令就会争用储存器;在一些算数流水线中,有些运算会同时访问一个运算部件。2、数据依赖(数据相关)比如,A运算必须得到B运算的结果,但是,B运算还没有开始,A运算动作就必须等待,直到A运算完成,两次运算不能同时执行。3、 条件转移的影响(条件转移)如…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
1、多个任务在同一时间周期内争用同一个流水段(资源冲突)


例如,假如在
指令流水线
中,如果数据和指令是放在同一个储存器中,并且访问接口也只有一个,那么,两条指令就会争用储存器;在一些算数流水线中,有些运算会同时访问一个运算部件。


2、数据依赖(数据相关)


比如,A运算必须得到B运算的结果,但是,B运算还没有开始,A运算动作就必须等待,直到A运算完成,两次运算不能同时执行。


3、 条件转移的影响(条件转移)


如果第一条指令是一个
条件转移指令
,那么系统就会不清楚下面应该执行那一条指令。这时就必须等第一条指令的判断结果出来才能执行第二条指令。条件转移所造成的流水线停顿甚至比相关还要严重的多。


越是长的流水线,相关和转移两大问题也越严重,所以,流水线并不是越长越好,超标量也不是越多越好,找到一个速度与效率的平衡点才是最重要的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171380.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • RS232电平和TTL电平

    结论:TTL电平和RS232电平,无论是在电压范围还是在极性上(RS232是负逻辑)都有很大的不同。显然,这两种电平是不能直接相连的。为了把单片机的TTL电平转换成RS232电平,通常我们需要一个专用的转换芯片,比如SP3232。RS232是工业上常用的串口标准,无论是PLC的RS232串口模块,还是工控机的串口(COM),输出的电平都称为RS232电平。同时我们知道这些模块的内部控制单元都是…

  • Request对象获取数据「建议收藏」

    Request对象获取数据「建议收藏」Request(.NET中的内置对象)总结了对对象中集合的理解,以及向集合中存取数据的规则

  • UML一一 类图关系 (泛化、实现、依赖、关联、聚合、组合)[通俗易懂]

    UML一一 类图关系 (泛化、实现、依赖、关联、聚合、组合)[通俗易懂]目录类图关系概述面向对象是符合人们对现实世界的思维模式,利用面向对象设计,特别是采用各种设计模式来解决问题时,会设计多个类,然后创建多个对象,一个设计良好的类,应该是兼顾信息和行为并且高内聚。而不同的类之间,应该做到松耦合。当面对应用系统或者需要解决的问题经常是复杂的、高度抽象的,我们创建的多个对象往往是有联系的,通常对象之间的关系可以分为以下几类:泛化关系实现关系依赖关…

  • Sobel算子的理解

    Sobel算子的理解sobel算子主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。原理算子使用两个33的矩阵(图1)算子使用两个33的矩阵(图1)去和原始图片作卷积,分别得到横向G(x)和纵向G(y)的梯度值,如果梯度值大于某一个阈值,则认为该点为边缘点Gx方向的相关模板:Gy方向的相关模板:看了网上的很多资料,都把卷积和相关的概念给弄糊了,书上

  • MAP遍历_map容器遍历

    MAP遍历_map容器遍历Iterator<Map.Entry<String,String>>iterator=map.entrySet().iterator();while(iterator.hasNext()){ Map.Entry<String,String>entry=iterator.next(); entry.getKey(); entry.ge…

  • C语言描述 动态规划 背包问题

    C语言描述 动态规划 背包问题动态规划作为不同于其他类型的问题,有着它自己的解题思路以及模型,以下将围绕模型以及解题思路两方面进行讲解。1.模型:有已知推到未知,是我们常用的解题思路,好比数独中如果我们有了1~8那么剩下的格子必然是9了。动态规划也是这样的思路,眼下我们有一堆货物和一个容量有限的背包,那么如何装才能利益最大化便是我们需要考虑的问题。也就是背包问题。仔细思考,不难发现,每个物品都只有0与1(0表示不装,1表示装入)两个状态,那么一串二进制数就可以表示物品的装配方案(如0101表示只带上第2、4件物品)由此必有2

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号