Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (6) - 流水线前端微熔合/宏熔合
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) - 流水线前端微熔合/宏熔合相关推荐
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (1) - 特性概述
Intel Sandy Bridge/Ivy Bridge Microarchitecture Intel Sandy Bridge微架构继承了Intel Core微架构与Nehalem微架构的成功之 ...
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (20) - IvyBridge微架构
Intel® Ivy Bridge Microarchitecture 第三代Intel Core处理器是基于Ivy Bridge微架构的.上述的Sandy Bridge微架构的特性也都适用于Ivy ...
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (19) - 系统代理
System Agent 在Sandy Bridge微架构中实现的系统代理包括了如下的组件: 一个总裁器,用于管理所有的访问请求,并将这些请求路由(即转发)到正确的位置上.访问请求可能来自于环域(ri ...
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (18) - 数据预取
Data Prefetching 使用软件预取指令,硬件预取机制,或者两者的任意组合,都可以将数据投机式地加载到L1D中. 程序员可以使用4条SSE预取指令来实施软件控制的预取操作.这些指令给处理器提 ...
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (17) - 互联环路LLC
Ring Interconnect and Last Level Cache 片上系统设计提供了一个高带宽的双向环路总线,用于连接IA处理器核与核外的各子系统.在第二代Intel Core处理器2xx ...
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (12) - 执行核
The Execution Core 执行核的特点是1)超标量,2)乱序处理指令.通过高效处理最常用的操作,同时最小化潜在的时延,执行核优化了总体执行性能. 相比起前代微架构,Sandy Bridge ...
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (5) - 流水线前端传统译码器
Legacy Decode Pipeline 传统的译码流水线由下列部件/单元构成:指令地址转换旁查缓冲区ITLB,指令缓存,指令预译码器,指令译码单元(一个复杂译码器/三个简单译码器). Instr ...
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (4) - 流水线前端概述
The Front End 本节讲述流水线前端的关键特征.下表列出了前端的主要部件,以及对应的功能和所面临的性能挑战. 表:Intel Sandy Bridge微架构的前端部件 部件 功能 性能挑战 ...
- Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (3) - 流水线概述
Intel Sandy Bridge微架构的指令流水线主要由下列3部分构成: 有序发射前端,负责取指(x86指令)并将其译码为微指令(也叫微操作).前端给流水线中的后续阶段提供稳定的微指令流,这些微指 ...
最新文章
- 转:ASP.NET状态保存方法
- 什么是区块链智能合约?
- 【总结整理】数据可视化
- 特征图大小_新手向快速了解图神经网络
- 复盘王者荣耀手游开发全过程,Unity引擎使用帧同步放弃状态同步
- 氨氮吹脱法脱与php有关系吗,吹脱法处理氨氮废水的原理及优缺点分析
- 第三次学JAVA再学不好就吃翔(part32)--方法重写
- 微信小程序的一些数据调用方式
- python 将图片与字符串相互转换
- 命令折叠代码的所有部分?
- UOJ424 Count 生成函数、多项式求逆、矩阵快速幂
- WINDOWS如何编写注册表文件
- CTF-Crypto-RSA整理
- 物流前沿理论与方法1
- 手机怎么投屏到电脑?小技能分享
- Excel文档保护密码破解
- redis层级结构存储键值对
- 【数学建模】三维曲面绘图 | matlab
- Kali 编译 Android 源码
- 第1章 java EE应用
热门文章
- WORD图片批量居中?
- MongoDB数据库操作---mongoose操作
- 在哪里买铁甲格斗机器人_铁甲雄心Ⅱ火了 优必选“超变铁甲”掀起闯关赢免单热潮...
- 计算机技能鉴定操作试题,计算机操作员中级操作技能考核试卷职业技能鉴定国家题库...
- Java流程控制01 用户交互Scanner
- android button imagebutton 区别,android - 可点击的ImageView和ImageButton之间的区别
- java freemarker 模版_Java模版引擎Freemarker
- java后台 ajax_ajax提交到java后台之后处理数据的实现
- 内存条上面参数详解_价格极低的国产颗粒内存条:光威弈系列Pro评测,超频表现超稳定...
- 计算机工程学院迎新晚会,计算机与信息工程学院2016级迎新晚会举行