当前位置: 首页 > 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.jsqmd.com/news/2066/

相关文章:

  • HT-SC4PS-33+:小功分大胃口,300 MHz-3 GHz全场通吃
  • [vscode] 快捷键记录
  • Gitee本土化创新实践:中国企业研发效能提升的新引擎
  • 画面拼接后推流/64路画面同时拼接到一路流/指定程序窗口采集推流/另一种解决方案
  • 详细介绍:nvm使用和node使用
  • Markdown的基本语法
  • 软件开发 --- 快速部署web
  • 工业级CAD数据优化工具:PiXYZ Studio 2025 图文安装指南
  • BIM建模利器 Tekla Structures 2025 全流程安装指南
  • containerd离线安装
  • Python3 urllib 详解
  • (转)使用 Embarcadero Delphi FMX 应用程序实现多点触控
  • 百度云服务ubtuntu安装docker
  • YKM-1Z-16
  • ubuntu安装mysql8并切换数据存储目录
  • WCF-双工通讯
  • Create lv of type vdo on RHEL8 9
  • 如何做好研发项目的资源分配
  • Notepad++ 最新破解版下载及安装使用教程
  • 跨网文件安全交换系统:打破数据壁垒的高效之选!
  • 【F#学习】可区分联合 Discriminated Unions
  • Midscene.js - 开源的 AI 操作助手 - 广东靓仔
  • 详细介绍:【Datawhale25年9月组队学习:llm-preview+Task1:大模型介绍与环境配置】
  • Git仓库ssh不同环境配置
  • 超大附件怎么发送的高效解决方案与技巧
  • dm sql 缓存区
  • 给国外传输大文件的最佳策略与解决方案
  • idea mvn package 报错java head space/ java.lang.OutOfMemoryError: Java heap space
  • 大环境不好,这几个赚钱网站可以试试
  • Day20类与对象的小结