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

CPU性能优化-CPU特性

现代CPU持续添加新特性使用这些特性可以大大简化找到底层问题方法

1 自顶向下微架构分析TMA是一种识别应用程序低效使用CPU微架构强大技术识别负载瓶颈定位出现问题代码具体位置封装了CPU微架构复杂技术点

2 最后分支记录(last branch record)LBR在执行过程中连续记录最新分支结果机制通常用来采集调用热点分支计算每个分支错误预测概率等等

3 基于处理器事件采样是一种增强采样技术主要优势降低采样开销提供精确事件能力精确事件可以定位导致特定性能事件具体指令

4 Intel 处理器追踪是一种基于每条指令时间戳记录重建程序执行过程工具主要用途性能故障进行事后分析根因定位

6.1 自顶向下微架构分析技术

TMA识别程序CPU性能瓶颈一种非常强大技术不需要开发者CPu微架构PMC有深入理解就能有效找到CPU性能瓶颈

TMA识别程序每个热点停滞执行原因导致停滞瓶颈可能前端绑定后端绑定退休错误投机有关28描述了TMA性能瓶颈分类概念我们知道CPU内存缓冲区它们持续跟踪正在执行指令信息只要指令取地址或者译码都在回在这些缓冲区记录新的条目如果指定执行周期中指令对应微操作没有被分配可能有两种原因不能对它进行地址译码后端负载过重导致无法新的微操作分配资源被分配调度执行但是没有退休微操作错误投机相关

TMA通过采集特定指标观察程序执行情况基于这些指标通过应用程序关联某个分类表征类型每个分类嵌套更细分类可以更好细分程序中CPU性能瓶颈我们多次运行被测试程序每次都关注特定指标往下直到找到详细性能瓶颈分类

TMA 槽位

停滞 停滞

退休 错误投机 前端绑定 后端绑定

基础轻量 微码序列 分支预测错误 机器清理 读取延迟 读取带宽 绑定 内存绑定

浮点算数运算 其他 辅助 ITLB未命中 指令缓冲未命中 分支重定向 读取源1读取2 除法器 执行端口利用率 存储绑定L1缓存绑定 L2缓存绑定 Ln缓存绑定 外存绑定

标量运算向量运算 3+ 端口12端口 0端口内存带宽内存延迟

在真实应用场景性能可能受限于多种因素TMA需要同时下钻多个类别确定每个类别瓶颈程序性能影响分析工具Intel Vtune Profiler AMD uprof 可以一次基准测试运行计算所有相关指标

前两层TMA指标都是通过所有流水线槽位利用率来表示

6.1.1 Intel Vtune ProfilerTMA

TMA最新的Intel Vtune Profiler微架构搜索分析体现30展示7.zip基准测试分析总结从图可以看到CPU错误投机导致了显著执行时间浪费

该工具精妙之处就是可以单击自己感兴趣指标可以展示该指标相关函数例如 单击错误投机指标你将会看到31展示内容

如果双击Lzma_DecodeReal2函数,Intel Vtune Profiler会展示代码视图如图32所示高亮显示代码LzmaDec_DecodeReal2函数分支预测错误贡献最大

32 微架构搜索源代码汇编指令视图

6.1.2 linux perfTMA

linux内核4.8开始perf增加一个 --topdown参数可以perf stat命令打印TMA第一层指标该层只有4类别

retiring bad speculat FE bound BE bound

为了获得高层TMA指标linux perf需要剖析整个系统-a, 所以我们可以看到所有CPU指标但是通过taskset -c 0可以将基准测试绑定core 0, 所以可以看到第一行也就是s0-c0对应这一行

可以使用toplev工具获得TMA 23其他指标


http://www.kler.cn/a/416665.html

相关文章:

  • AI实践项目——图片视频自动上色系统,让旧照片焕然一新
  • 【嵌入式——QT】QT制作安装包
  • 家校通小程序实战教程04教师管理
  • 基于若依框架和Vue2 + Element-UI 实现图片上传组件的重写与优化
  • 跨平台应用开发框架(4)----Qt(系统篇)
  • Hot100 - 搜索二维矩阵II
  • 求100之内的素数-多语言
  • 分布式锁的实现原理
  • HarmonyOS-中级(一)
  • 嵌入式QT学习第4天:Qt 信号与槽
  • 无人机数据处理系统:原理与核心系统
  • 12 设计模式之工厂方法模式
  • 华为OD机试真题-数组组成的最小数-2024年OD统一考试(E卷)
  • 管家婆工贸ERP BR042.存货自定义项虚拟库存状况表
  • mysql--二进制安装编译安装yum安装
  • vue3项目搭建-6-axios 基础配置
  • SmartSQL:一款方便、快捷的数据库文档查询、导出工具
  • Vue.js 组件开发进阶:构建可扩展的组件库
  • MySQL授权外部设备访问本地数据库
  • 设计模式 外观模式 门面模式
  • A02、数据库性能调优
  • SpringBoot源码-SpringBoot内嵌Tomcat原理
  • 科研小白成长记41——享受大起大落
  • 【真正离线安装】Adobe Flash Player 32.0.0.156 插件离线安装包下载(无需联网安装)
  • c++学习——list容器的使用学习
  • 【C++】LeetCode:LCR 077. 排序链表