Micro Fusion

微熔合将来自于同一条x86指令的多条微指令熔合成单条复杂的微指令.这条复杂的微指令可以被分发到乱序执行核任意多次,就好象没有进行过微熔合一样(即乱序执行核并不能感知到微熔合机制的存在)。

微熔合机制使得程序员可以使用“存储器到寄存器”这样的操作方式(这种操作在复杂指令集计算机中很常见),来编写程序而不需担心会损失前端译码带宽。微熔合可以整体提升指令从译码到退役的带宽,同时节省电力。

过多的使用单微指令的x86指令来编写程序会增加代码长度,降低传统译码流水线的取指带宽。

下面是一些微熔合的示例,可以被所有的译码器处理。

  • 所有的写存操作,包括写立即数到存储器。在处理器内部,写存操作是两个独立的操作:存储目标地址,和存储数据。

例如,MOV [5000H], 1234H,这条指令将立即数1234H写到存储器地址5000H中(假设基地址是0)。没有微熔合机制的情况下,这条指令会对应两条微指令,存储目标地址5000H,存储数据1234H。有了微熔合机制,这条指令译码后只对应单条的复杂微指令。TODO:这个理解是否正确。

  • 所有的读存加计算操作类型(load + op)都可以微熔合为一条微指令,例如

ADDPS XMM9, OWORD PTR [RSP+40]; todo: how long for OWORD PTR?

FADD DOUBLE PTR [RDI+RSI*8];

XOR RAX, QWORD PTR [RBP+32];

  • 所有的读存加跳转操作类型(load + jump),例如

JMP [RDI+200]

RET ; load instruction pointer and jump

  • CMP/TEST指令使用存储器寻址和立即数

例如,CMP [5000H], 1234H

使用RIP相对寻址的指令在如下的情况下无法进行微熔合:

  • 有一个额外的立即数,例如

CMP [RIP+400], 27

MOV [RIP+3000], 142

  • 控制流指令使用间接目标且目标是RIP相对寻址方式,例如

JMP [RIP+500000000];

对于不能实施微熔合的情况,x86指令只能由复杂译码器进行译码,生成两条微指令;这样会稍微降低译码带宽。

在64位代码中,RIP相对寻址方式经常用于寻址全局数据。由于没有微熔合机制,当移植32位程序到64位上时,频繁访问全局数据的代码性能可能会有所下降。

Macro-Fusion

宏熔合可以将两条x86指令熔合,译码后只生成单条微指令。在Intel Core微架构中,这个硬件优化机制是有较大限制的,只能针对符合特定条件的指令对进行熔合。

  • 第一条指令修改标志寄存器且满足一定条件(参下):

    • Nehalem微架构:CMP, TEST
    • Sandy Bridge微架构:CMP, TEST, ADD, SUB, AND, INC, DEC
    • 具备宏熔合条件的上述指令必须符合以下格式
      • 第一个源/目标操作数是寄存器

注:TEST指令只有两个源操作数;ADD指令第一个是目的操作数,第二个是源操作数;INC只有一个目的操作数。

    • 第二个源操作数(如果存在)是以下任一:立即数,寄存器数,非RIP相对寻址的存储器数
  • 第二条指令是条件转移指令。下表描述了每条指令可以与之熔合的分支指令。

Instructions (2nd↓ \  1st →)

TEST

AND

CMP

ADD

SUB

INC

DEC

JO/JNO

Y

Y

N

N

N

N

N

JC/JB/JAE/JNB

Y

Y

Y

Y

Y

N

N

JE/JZ/JNE/JNZ

Y

Y

Y

Y

Y

Y

Y

JNA/JBE/JA/JNBE

Y

Y

Y

Y

Y

N

N

JS/JNS/JP/JPE/JNP/JPO

Y

Y

N

N

N

N

N

JL/JNGE/JGE/JNL/JNG/JG/JNLE

Y

Y

Y

Y

Y

Y

Y

如果第一条指令结束于缓存行的63字节上(即缓存行行尾),第二条条件分支指令起始于下一个缓存行的0字节上(即缓存行行首),这两条指令不可以做宏熔合。

由于符合宏熔合条件的指令对在各种类型的程序中都很常见,所以即便不重新编译程序,宏熔合机制也能带来性能收益。

宏熔合后的指令都只需要一次分发即可投入执行(因为只生成一条微指令)。这样既降低了执行延迟,也节省了执行资源。同时,还可以获得更高的重命名和指令退役带宽,增加虚拟存储容量(即更高的存储密度),以及用更少的比特位表示更多的操作,从而更加节能。

Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (6) - 流水线前端微熔合/宏熔合相关推荐

  1. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (1) - 特性概述

    Intel Sandy Bridge/Ivy Bridge Microarchitecture Intel Sandy Bridge微架构继承了Intel Core微架构与Nehalem微架构的成功之 ...

  2. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (20) - IvyBridge微架构

    Intel® Ivy Bridge Microarchitecture 第三代Intel Core处理器是基于Ivy Bridge微架构的.上述的Sandy Bridge微架构的特性也都适用于Ivy ...

  3. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (19) - 系统代理

    System Agent 在Sandy Bridge微架构中实现的系统代理包括了如下的组件: 一个总裁器,用于管理所有的访问请求,并将这些请求路由(即转发)到正确的位置上.访问请求可能来自于环域(ri ...

  4. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (18) - 数据预取

    Data Prefetching 使用软件预取指令,硬件预取机制,或者两者的任意组合,都可以将数据投机式地加载到L1D中. 程序员可以使用4条SSE预取指令来实施软件控制的预取操作.这些指令给处理器提 ...

  5. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (17) - 互联环路LLC

    Ring Interconnect and Last Level Cache 片上系统设计提供了一个高带宽的双向环路总线,用于连接IA处理器核与核外的各子系统.在第二代Intel Core处理器2xx ...

  6. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (12) - 执行核

    The Execution Core 执行核的特点是1)超标量,2)乱序处理指令.通过高效处理最常用的操作,同时最小化潜在的时延,执行核优化了总体执行性能. 相比起前代微架构,Sandy Bridge ...

  7. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (5) - 流水线前端传统译码器

    Legacy Decode Pipeline 传统的译码流水线由下列部件/单元构成:指令地址转换旁查缓冲区ITLB,指令缓存,指令预译码器,指令译码单元(一个复杂译码器/三个简单译码器). Instr ...

  8. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (4) - 流水线前端概述

    The Front End 本节讲述流水线前端的关键特征.下表列出了前端的主要部件,以及对应的功能和所面临的性能挑战. 表:Intel Sandy Bridge微架构的前端部件 部件 功能 性能挑战 ...

  9. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (3) - 流水线概述

    Intel Sandy Bridge微架构的指令流水线主要由下列3部分构成: 有序发射前端,负责取指(x86指令)并将其译码为微指令(也叫微操作).前端给流水线中的后续阶段提供稳定的微指令流,这些微指 ...

最新文章

  1. 转:ASP.NET状态保存方法
  2. 什么是区块链智能合约?
  3. 【总结整理】数据可视化
  4. 特征图大小_新手向快速了解图神经网络
  5. 复盘王者荣耀手游开发全过程,Unity引擎使用帧同步放弃状态同步
  6. 氨氮吹脱法脱与php有关系吗,吹脱法处理氨氮废水的原理及优缺点分析
  7. 第三次学JAVA再学不好就吃翔(part32)--方法重写
  8. 微信小程序的一些数据调用方式
  9. python 将图片与字符串相互转换
  10. 命令折叠代码的所有部分?
  11. UOJ424 Count 生成函数、多项式求逆、矩阵快速幂
  12. WINDOWS如何编写注册表文件
  13. CTF-Crypto-RSA整理
  14. 物流前沿理论与方法1
  15. 手机怎么投屏到电脑?小技能分享
  16. Excel文档保护密码破解
  17. redis层级结构存储键值对
  18. 【数学建模】三维曲面绘图 | matlab
  19. Kali 编译 Android 源码
  20. 第1章 java EE应用

热门文章

  1. WORD图片批量居中?
  2. MongoDB数据库操作---mongoose操作
  3. 在哪里买铁甲格斗机器人_铁甲雄心Ⅱ火了 优必选“超变铁甲”掀起闯关赢免单热潮...
  4. 计算机技能鉴定操作试题,计算机操作员中级操作技能考核试卷职业技能鉴定国家题库...
  5. Java流程控制01 用户交互Scanner
  6. android button imagebutton 区别,android - 可点击的ImageView和ImageButton之间的区别
  7. java freemarker 模版_Java模版引擎Freemarker
  8. java后台 ajax_ajax提交到java后台之后处理数据的实现
  9. 内存条上面参数详解_价格极低的国产颗粒内存条:光威弈系列Pro评测,超频表现超稳定...
  10. 计算机工程学院迎新晚会,计算机与信息工程学院2016级迎新晚会举行