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

CPU指令融合技术概述

什么是指令融合?

  • 某些指令,例如add $3,$2,0, 只会使用rd/rs两个字段,但是这条指令却占用了全部32个bit, 这样会使得代码密度不高,指令域的有效利用率不高;
  • 这样,在实现某些功能的情况下,会使得CPU花费更多的时钟周期来处理;
  • 因此,引入了指令融合技术:
    • 指的是,将符合融合条件的相邻两条,或者多条指令,进行合并;
    • 一条融合指令的执行,相当于多条被融合的指令同时发射,执行;
    • 这样可以使得CPU花费更少的时间来完成相同的工作;
    • 对于指令来讲,也可以提升指令域段的有效利用率;
  • 根据宏融合的基本思想,如果某条指令的空闲指令域足够多,足以容纳另一条指令的所有有效指令域,则可以将这两条或多条相邻的指令融合.
    • 例如,add 的有效寄存器索引是 rs、rt 和 rd,sa 闲置,而jr只有rs有效,因此可以将这两条指令融合.

指令融合原理简介

        为了实现宏融合,fetch阶段预取到指令后,对指令进行扫描,如果连续两条指令的全部有效指令域,经优化可以由单独一条指令容纳,则将这两条指令融合成一条“融合指令”。

        在判断指令是否能够融合时会碰到两个问题:

  • 已有指令的空闲指令域不多甚至没有;
  • 相邻的两条指令之间有数据依赖关系;

 MIPS指令融合举例

addsll_v1

        从图3可以看到,存在WAW (Write AfterWrite)冲突,并且融合条件要求 rt 与rd一样,限制太紧,实际意义不大。

        一条指令所涉及到的寄存器个数,MIPS通常是3个,Intel X86 通常是2个MIPS:

  • add $rl, $r2, $r3; r3=rl+r2;
  • X86: add Sr1, $r2;rl=rl+r2;

        各有好处,但是当MIPS指令涉及到相同寄存器时,如add, $r1, $r1, $r1,就严重浪费用于寄存器索引的指令域了,而指令融合关键在于提高指令域的利用率,为此对MIPS指令作第一次扩展.

        所以,下面讲的融合方式,是在对基础的指令集,进行扩展之后,才能使用更好的一些指令融合技术;

addsll_v2

LWSLL2


http://www.mrgr.cn/news/47938.html

相关文章:

  • GIT 企业级开发学习 1
  • Java项目实战II基于小程序的驾校管理系统(开发文档+数据库+源码)
  • Spring实现输出带动态标签的日志
  • 简单使用linux
  • html+css+js网页设计 美食 美食天下2个页面
  • SpringMVC(1)——SpringMVC配置和基本原理
  • 机电液一体化与先进机器人控制技术国际学术会议
  • 如何使用ssm实现办公OA系统0
  • 学习​Redis 高可用性​
  • C++11 新特性 学习笔记
  • OBOO鸥柏丨深圳科学展馆液晶拼接屏中控互动大屏全新上线!
  • Java_EE ( IO 流技术)
  • 在 Windows 11 安卓子系统中安装 APK 的操作指南
  • 【阅读笔记】水果轻微损伤的无损检测技术应用
  • golang语法
  • 共享旅游卡,优势与不足并存,如何合理选择?
  • 高级java每日一道面试题-2024年10月10日-中间件篇[设计篇]-结合项目场景问如何设计一个消息中间件?
  • 应对专利过期的有效方法与补救措施
  • 【数据结构】string(C++模拟实现)
  • 一点基础没有可以参加TRIZ创新方法培训吗?
  • 进程的其他概念
  • Linux基础命令rm详解
  • 云渲染农场可以用哪些CG软件!
  • 基于vue框架的蛋糕销售网站miugx(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 提升企业的微信管理神器
  • Java读取Excel文件_详细可执行_低内存占用