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

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.lryc.cn/news/494690.html

相关文章:

  • Idea使用Maven连接MySQL数据库
  • 《深入浅出HTTPS》读书笔记(13):块密码算法之迭代模式(续)
  • 使用Cmake导入OpenCV库的大坑记录
  • UE5 打包报错 Unknown structure 的解决方法
  • MySQL之单行函数
  • spring-boot自定义ApplicationListener及源码分析
  • C语言:深入理解指针
  • 【WPF实现RichTextBox添加文本、自动滚动】
  • 量化交易系统开发-实时行情自动化交易-8.4.MT4/MT5平台
  • 【HarmonyOS】@Observed和@ObjectLink嵌套对象属性更改UI不刷新问题
  • 什么是默克尔树(Merkle Tree)?如何计算默克尔根?
  • 眼部按摩仪WT2605音频蓝牙语音芯片方案 单芯片实现语音提示及控制/手机无线音频传输功能
  • python打包深度学习虚拟环境
  • springboot358智慧社区居家养老健康管理系统(论文+源码)_kaic
  • 复杂网络(二)
  • Kubernetes 01
  • node修改文件名称
  • ArcGIS 软件中路网数据的制作
  • transformers microsoft--table-transformer 表格识别
  • 【Spark源码分析】规则框架-草稿
  • 迪米特原则的理解和实践
  • jQuery零基础入门速通(中)
  • 【设计模式系列】中介者模式(十八)
  • PDF版地形图矢量出现的问题
  • 小迪安全第四十二天笔记 简单的mysql注入 mysql的基础知识 用户管理数据库模式 mysql 写入与读取 跨库查询
  • 11.25.2024刷华为OD
  • 你真的会用饼图吗?JVS-智能BI饼图组件深度解析
  • HarmonyOS Next 模拟器安装与探索
  • 医学机器学习:数据预处理、超参数调优与模型比较的实用分析
  • 单片机知识总结(完整)