CPU性能优化--微操作

x86 架构处理器吧复杂的CISC指令转为简单的RISC微操作。这样做最大的优势是微操作可以乱序执行,一条简单的相加指令--比如ADD,EAX, EBX,只产生一个微操作,而很多复杂指令--比如ADD, EAX 可能会产生两个微操作,一个将数据从内存读取到临时寄存器,另一个则吧临时寄存器的内容与EAX相加。指令ADDMEM1, EAX可能会产生三个微操作,一个从内存读取数据,另一个执行加法操作,最有一个把结果存回内存。需要注意的是,指令间的关系及其转化为微操作的方式在不同代系的CPU之间差别会非常大。

与CISC转化为RISC相反,微操作也可以融合,现代Intel CPU中,两种融合类型

1 微融合 相同的机器指令转化而来的微操作,微融合只能应用在两种类型,内存写操作/读操作和修改操作。

2 宏融合 解码器可以把算术或者逻辑指令与后续的条件跳转指令融合为一个单独的计算加分支跳转微操作。

微融合和宏融合能够节省流水线从解码到退休的所有阶段的带宽。融合的操作在顺序重排缓冲区ROB中共享一个单独的条目,当融合的微操作只用一个条目时,ROB将会被扩容。这个单独的ROB条目代表两个操作,这两个操作需要被两个不同的执行单元处理。融合ROB条目会被分发到两个不同的执行单元。

linux perf工具的用户可以通过如下命令互殴去负载程序微操作的发射,执行和退休数量。

x86微架构上指令时延,吞吐量,端口使用方法和对应的微操作数量,都可以在uops.info网站找到。

4.5 流水线槽位

一个流水线槽位代表处理一个微操作所需要的硬件资源,可以在每个时钟周期执行4个微操作,几乎所有现代x86 CPU流水线都是四发射的。途中6个连续时钟周期内,只有一般的槽位呗利用了,从微架构角度来看。执行此类代码的效率只有50%

流水线槽位时自顶向下微架构分析的核心指标之一,例如,前端绑定和后端绑定 指标由闲置流水线槽位的百分比表示。

4.6 核时钟周期和参考时钟周期

大部分CPU使用时钟信号同步他们的顺序操作,时钟信号由外部发生器产生,发生器每秒提供固定数量的脉冲,时钟脉冲的频率决定了CPU执行指令的速率,因此CPU时钟越快,每秒执行的指令就越多。

频率 = 时钟计数/时间

现代的CPU都没有固定的运行频率,使用动态频率调整技术,Intel上称为时Turbo Boost。Skylake i7-6000处理器上的一个实验,CPU的基础频率时3.4GHz

指标perf-cycles统计的时钟周期数量,不受动态频率调整的影响,外部时钟在设置的时候频率时100MHz, 如果我们通过时钟倍频器调整它,则可以获得处理器的基础频率。Skylake i7-6000处理器的时钟倍频器倍数时34,这意味着对于每一个外部的脉冲。CPU在基础频率上运行时可执行34个内部时钟周期。

4.7 缓存未命中

某层级的任何缓存未命中都会被更高层的缓存或者DRAM所承载,意味着内存访问类型的时延会有明显的增加,表3中给出了各种内存子系统组建的典型时延数据。缓存未命中非常影响性能,当访问最后一层缓存LLC且发生未命中而直接访问主存DRAM的时候,Intel内存时延价差工具MLC,测量内存时延核带宽以及系统在增加家在动作时 他们如何变化为的工具。

|---------|------------|
| 内存子系统组件 | 时延 |
| L1缓存 | 4个时钟周期 |
| L2缓存 | 10-25个时钟周期 |
| L3缓存 | 约40个时钟周期 |
| 主存 | 200多个时钟周期 |

指令和数据都可以发生缓存未命中。根据TMA分析方法,指令缓存未命中呗归类为前端停滞,数据缓存未命中呗归类为后端停滞。当获取指令时发生指令缓存未命中,会被归类为前端问题。相应的。当请求数据时在数据缓存中并没有找到的话,就是后端问题。

4.8 分支预测错误

现代CPU会试着去预测分支跳转指令的结果,例如,当处理器看到如下代码时。

dec eax

jz .zero

其中指令jz时分支跳转指令,为了提高性能,会投机执行这个分支。如果预测错误,然后CPU需要增加撤销它最近投机执行的所有工作,通常会有10-20个时钟周期的损失。

perf stat -s branches, branch-missees -- a.exe

相关推荐
福大大架构师每日一题34 分钟前
DeepSpeed v0.19.1 版本更新:性能优化、稳定性修复与关键功能增强全解析
性能优化·deepspeed
高心星2 小时前
鸿蒙6.0应用开发——应用内存占用优化
性能优化·生命周期·内存优化·图片处理·鸿蒙6.0·harmonyos6.0
UWA2 小时前
5 月刊|GPM 2.0 实现全场景可视化溯源、多维度数据解析与根因精准定位
性能优化·游戏开发·uwa
Raink老师2 小时前
【AI面试临阵磨枪-93】Skill 性能优化:冷启动、并发、内存、IO、缓存?
人工智能·面试·性能优化
cfm_291412 小时前
Redis缓存规范设计与全方位性能优化实战
redis·缓存·性能优化
ct97817 小时前
Three.js 性能优化(测量-定位-优化)
javascript·性能优化·three
爱喝水的鱼丶1 天前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇) 第五篇:SAP 报表多格式输出:Excel/PDF 批量导出功能实现
学习·性能优化·pdf·excel·sap·abap
unicrom_深圳市由你创科技1 天前
一套仓库管理多站点:性能优化与搜索友好全链路指南
性能优化
千里马学框架1 天前
深入剖析安卓布局uiautomator抓取工具原理
android·智能手机·性能优化·perfetto·view·安卓framework开发·布局抓取
SilentSamsara1 天前
文件与数据处理:CSV/JSON/Excel/Parquet 高效操作与内存优化
开发语言·python·青少年编程·性能优化·json·excel