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

指令流水线的影响因素

机器周期的设置

为了方便流水线设计,每个阶段耗时都设置成一样的,以最长耗时为准

影响流水线的因素

结构相关(资源冲突)

多条指令在同一个时间争夺使用同一个资源而形成的冲突称为结构相关

例子在书本第257页第一张图

这种冲突的解决方案是:1.让后一个相关的指令暂停一周期

2.资源重复配置:数据存储器+指令存储器 (Data cache 和 Instruction cache)

分别放在这两个存储体中,就可以防止冲突

【与操作系统的互斥是一个路子】

数据相关(数据冲突)

指令相关指在一个程序中,存在必须等前一条指令执行完,才能执行后一条指令的情况,则这两条指令即为数据相关

例子在257页的最下方的图

解决方法:

1.把遇到数据相关的指令以及后续指令都暂停1至n个时钟周期,知道数据相关问题消失后再继续执行,课分为硬件阻塞stall和软件插入NOP两种方法

2.数据旁路技术

3.编译优化:通过编译器调整指令顺序来解决数据相关【比起等待,先做后面的事情更加效率】

控制相关(控制冲突)

当流水线遇到转移指令和其它改变pc值当指令而造成断流时,会引起控制相关

Pg259

解决方法:

1.转移指令分支预测

​ 简单预测(永远猜true 或者false)动态预测(根据历史情况动态调整)

2.预取转移成功和不成功两个控制流方向上的目标指令

3.加快和提前形成条件码

4.优化第一种方法,提高猜准率

流水线多发技术

1.超标量技术

每个时钟周期可以并发多条独立指令

要配置多个功能部件

不能调整指令的执行顺序

通过编译优化技术,把可以并行执行的指令搭配起来

2.超流水技术

把一个时钟周期再分三段

再一个时钟周期内 一个功能部件可能被使用多次

3.超长指令字

由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字(可达到几百位)

采用多个处理部件

http://www.rkmt.cn/news/10096.html

相关文章:

  • [vscode] 快捷键记录
  • 工业级CAD数据优化工具:PiXYZ Studio 2025 图文安装指南
  • (转)使用 Embarcadero Delphi FMX 应用程序实现多点触控
  • YKM-1Z-16
  • 如何做好研发项目的资源分配
  • Midscene.js - 开源的 AI 操作助手 - 广东靓仔
  • Day20类与对象的小结
  • 克服getLocation获取当前的地理位置,报错:getLocation:fail auth deny及方法封装
  • 电流探头的测试原理
  • p1-1002
  • Java中 String、StringBuilder 和 StringBuffer 的区别? - 指南
  • 解析 Authenticode 部分代码。
  • 实用指南:力扣2132. 用邮票贴满网格图
  • ONCHAINID源码分析(二)
  • 鸿蒙应用开发从入门到实战(十二):ArkUI组件ButtonToggle
  • 从视觉、文案到交互:三步彻底去除产品AI味
  • 剑指offer-32、把数组排成最⼩的数
  • python微博舆情分析系统 情感分析 爬虫 机器学习 新浪微博 信息采集 大数据工艺(源码)✅
  • C# 中的 ReferenceEquals 方法 - 教程
  • 【一周AI资讯】Claude自动抓取网页;美团发布生活Agent;阿里通义发布双模型 - 详解
  • 读人形机器人20财富再分配
  • Java 与人工智能的深度融合:从数据到推理服务
  • 基于 Vite7 与 Vue3 的 WebOS 后台系统架构实践
  • pycharm环境配置
  • 为什么 TCP 是3次握手4次挥手?
  • java中的浮点数计算
  • XYCTF2025复现(WEB)
  • 发布/订阅(Publish/Subscribe)与交换机(Exchange)
  • 线性结构之链表
  • lc1033-移动石子直到连续