当前位置: 首页 > article >正文

高性能计算——流水线的危害

流水线的危害

流水线允许你通过并发执行指令来隐藏指令的延迟,但也创造了一些自身的潜在障碍——特征性地称为流水线危害,即下一条指令不能在下一个时钟周期执行的情况。

这可能发生的方式有多种:

  • 结构危害:发生在两条或更多指令需要CPU的同一部分(例如,一个执行单元)时。
  • 数据危害:发生在你必须等待某个操作数从之前的步骤计算出来时。
  • 控制危害:发生在CPU无法判断它接下来需要执行哪些指令时。

解决危害的唯一方法是进行流水线停顿:在拥塞的原因消失之前停止所有之前步骤的进展。这在流水线中创造了气泡——类似于流体管道中的气泡——一种时间传播的状态,当执行单元空闲且没有有效工作完成时。

在这里插入图片描述

不同的危害有不同的代价:

  • 在结构危害中,你必须等待(通常是多一个周期)直到执行单元准备好。它们是性能的基本瓶颈,无法避免——你必须围绕它们进行工程设计。
  • 在数据危害中,你必须等待所需数据被计算出来(关键路径的延迟)。数据危害通过重构计算来解决,以便关键路径更短。
  • 在控制危害中,你通常必须清空整个流水线并重新开始,浪费整整15-20个周期。它们通过完全移除分支或使分支可预测来解决,以便CPU可以有效地推测接下来将执行什么。

由于它们对性能有非常不同的影响,我们将以相反的顺序开始,从更严重的问题开始讨论。


http://www.kler.cn/a/272117.html

相关文章:

  • C#性能优化技巧:利用Lazy<T>实现集合元素的延迟加载
  • 汇编与逆向(二)-汇编基础
  • Docker 部署 mysql
  • html简单项目案例
  • PyQt5 超详细入门级教程上篇
  • Linux Bash 中使用重定向运算符的 5 种方法
  • 封装Axios
  • MySQL的启停登陆与退出
  • Ubuntu系统Psi4 使用conda安装及编译安装
  • 前端基础——HTML傻瓜式入门(2)
  • 使用verilog编写一个猜数游戏设计及其testbench
  • vue框架渲染原理
  • 软考78-上午题-【面向对象技术3-设计模式】-结构型设计模式01
  • 进程学习--02
  • Vue2前端权限控制实战
  • reverse_iterator实现
  • cesium.js加载模型后,重新设置旋转角度属性值
  • 管理类联考–复试–英文面试–问题--规划介绍原因做法
  • FFmpeg查看所有支持的编码/解码器/封装/解封装/媒体格式/滤镜
  • Wireshark抓包工具的使用
  • 【PyTorch】基础学习:一文详细介绍 torch.save() 的用法和应用
  • Dockerfile 语法详解
  • 免费开源软件:思通数科舆情系统应对社会热点事件
  • 设计模式 — — 单例模式
  • 【回归预测】基于SSA-BP(麻雀搜索算法优化BP神经网络)的回归预测 多输入单输出【Matlab代码#69】
  • 腾讯云2核2G免费服务器申请流程,2024免费服务器入口