Top-Down性能分析

article/2025/11/5 10:27:08

2014年Ahmand Yasin在它的IEEE论文《A top-down method for performance analysis and counter architercture》中,革命性地给出了一个从CPU指令执行的顺畅程度来评估和发现瓶颈的方法,允许我们从黑盒的角度来看问题。

TMAM:自顶向下的微体系架构分析方法(Top-Down Microarchitecture AnalysisMethod,TMAM)

TMA:  Top-down Microarchitecture Analysis Method

PMU:性能监控单元(Performance Monitoring Unit, PMU)。当前各CPU都提供PMU,用来支持TopDown的性能分析。

topdown.PNG

 其中涉及的一些主要名词如下:

uOps micro-ops,micro-operations,微指令

         比如ADD eax,[mem1] 就可以解码成两条微指令,一条是从内存[mem1]加载数据到临时寄存器,另外一条就是执行运算,这样就可以在加载数据的时候运算单元可以执行另外一条指令的运算uops,多个不同的资源单元可以并行工作。

cpu时钟周期

        时钟周期也称为振荡周期,定义为时钟频率的倒数,受电子器件的物理性质所决定。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。        

pipeline slots 流水线宽度。

          一个时钟周期可以同时运行的微指令条数。一个pipeline slot代表了处理一个微操作所需要的全部硬件资源。一个核配合其他的硬件电路可以拥有多个pipeline slot,比如4个。pipeline slots与指令执行被分为几级流水线是不同的概念。

Retiring

         表示运行有效的uOps的pipeline slots与总的pipeline slots的占比。它可以用于评估程序对CPU的相对比较真实的有效率。需要注意的是,Retiring这一分类的占比高并不意味着没有优化的空间。例如retiring中Microcode assists的类别实际上是对性能有损耗的,我们需要避免这类操作。

前端(Front-end)和后端(Back-end)

         Front-end 负责获取程序代码指令,并将其解码为一个或多个称为微操作(uOps)的底层硬件指令。uOps 被分配给 Back-end 进行执行,Back-end 负责监控 uOp 的数据何时可用,并在可用的执行单元中执行 uOp。

Stall停顿

    如果在一个 CPU 周期内某个 pipeline slot 是空的,称之为一次停顿(stall)。

Bad Speculation

         表示由于分支预测错误导致的 pipeline slot 被浪费,主要包括 (1) 执行最终被取消的 uOps 的 pipeline slot,以及 (2) 由于从先前的错误猜测中恢复而导致阻塞的 pipeline slot。

Front-end Bound

表示 pipeline 的 Front-end 不足以供应 Back-end。

Back-end Bound

表示由于缺乏接受执行新操作所需的后端资源而导致停顿的 pipeline slot。

IPC英文全称"Instruction Per Clock"

就是每个时钟的指令,即CPU单核在每个时钟周期执行的微指令条数。其上限是pipeline slots。

Icache dcache

icache用来缓存指令, dcache用来缓存数据。

推荐书籍:

Denis Bakhvalov - Performance Analysis and Tuning on Modern CPUs


http://chatgpt.dhexx.cn/article/5GYVM3CL.shtml

相关文章

TOP-K

目录 TOP-K介绍 TOP-K实现 源码 TOP-K介绍 什么是TOP-K? 贴近生活来说,点外卖,打游戏。比如某团,你点一个美食,选你选在城市后,你选择按评分排序,那么它会将这个城市里所有美食店铺评分最高的…

AIX系统 topas查看系统各项指标性能

AIX系统 topas查看系统各项指标性能 topas命令默认2秒更新一次 一、topas命令以区域形式表现系统各项指标性能 如下图: 1、 CPU:反应CPU性能区域,如果有多个 CPU,按 c 键两次就可显示 CPU 列表。仅按 c 键一次会关闭此区域 Us…

top 与 htop

top 与 htop 区别 一、相同点 两者均是可以查看cpu使用情况的命令 二、不同点 top 在linux系统中,top 命令用来显示系统中正在运行的进程的实时状态,它显示了一些非常有用的信息,比如 CPU 利用情况、内存消耗情况,以及每个进…

top cpu

我们有时会把%CPU和us%搞晕,也就是下图所示在top的时候查看cpu的信息。 这时有人会问:这两个CPU到底哪个是对的。 其实都是对的,只是表达的意思不一样。 官方解释如下 Cpu(s):34.0% us: 用户空间占用CPU百分比 %CPU&#xff1…

TOP TOPAS

在IBM的OS AIX中,root用户输入topas可以查看系统的运行情况(有的OS是使用top查看),如图: (此图截于IBM eServer p5 590)Kernel:内存使用百分率 Network:网络信息区User: 用户进程使用百分率 Disk: 存储信息区Wait: …

安装TOPAS RTion extension, 出现的问题及解决方法

TOPAS MC上有安装general extension的教程,在To add User Extensions部分中。GitHub dicom-interface的readme应该是由于长时间没有更新,所以有些错误。本文是在Linux系统下安装RTion extension,其他系统应该也能借鉴。计算机小白&#xff0c…

TOPAS详解

原文出处:http://www.blogjava.net/freeman1984/archive/2011/12/08/365848.html 上一张我们测试机的topas的图(aix 5.3):然后后面附上解释: topas命令用于监控各种系统资源,如CPU的使用情况,CPU事件和队列&#xff0…

AIX之topas命令详解

AIX基本命令topas简介 Posted on 2015 年 11 月 11 日 by xiaoyu 由于最近工作需要涉及到AIX主机、存储层面,就对这方面的内容做个简要的笔记,以供后续参考。 topas命令利用System Performance Measurement Interface(SPMI) API获得有关信…

AIX topas命令详解

topas命令默认2秒更新一次 一、topas命令以区域形式表现系统各项指标性能, 如下图: 1、 CPU:反应CPU性能区域,如果有多个 CPU,按 c 键两次就可显示 CPU 列表。仅按 c 键一次会关闭此区域 User%:用户进程占…

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具 关于Topas学习前提 安装Topas获取topas.tar.gz获取方法一获取方法二 配置unix环境安装Topas安装Geant4设置Geant4环境 使用Topas一个简单的 HelloWorld 程序 OneBox.txtTopas中txt参数文件的编写规则(1&#xff…

java给时间设置格式化_java怎样给时间格式化

java怎样给时间格式化 【提要】本篇《java如何给时间格式化》特别为需要格式编程学习的朋友收集整理的,仅供参考。内容如下: java中如何格式化的时间,这是一个很简单的问题,在实际的编程中经常用,以下是小编为大家搜索…

Java时间格式化与解析

Java中自带的类库是十分强大的,今天来介绍一个时间的格式化与解析的功能以及用法,说明时间的格式化和解析就离不开一个类:SimpleDateFormat这个类,这类中有两个比较重要的方法,也是这次主要用到的方法parse方法和forma…

Java格式化日期 微秒

Java格式化日期 微秒 Date、LocalDateTime格式化微秒值Date、LocalDateTime互转 本文主要讲述Java日期格式化及格式化日期到微秒 Date、LocalDateTime格式化微秒值 java代码TestTime.java如下 package com.dongao.test;import com.dongao.project.common.util.DateUtils;impo…

java日期格式_java日期和时间的格式化

在编写程序时,经常需要对日期进行格式化输出。使用String类的format方法可以实现对日期和时间的格式化输出。 日期的格式化输出 Java提供了日期格式化转换符用于支持日期的格式化输出,格式化转换符如下表所示: 案例1:使用API库的Date类获取当前日期和时间信息,并用format(…

java时间格式化函数

时间格式化类位于java.text下 DateFormat和SimpleDateFormat是用来格式化一个日期的,不是用来生成一个日期的 如果要生成一个日期可以用Date类或者Calendar类 DateFormate类 是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间。…

JAVA 日期格式化

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 最近项目中需要用到SimpleDateFormat 格式化日期,但是因为对日期格式的不熟练多花了十分钟左右的时间在日期格式化上面&#…

Java格式化日期,时间(三种方法,建议收藏)

1.String.format() 在java中String类格式化的方法,是静态format()用于创建格式化的字符串。 format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。 format(Locale locale, String format, Ob…

Linux开发工具使用

文章目录 Linux编译器-gcc/g使用背景知识gcc如何完成预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)链接(生成可执行文件或库文件)函数库静态函数库与动态函数库gcc选项 Linux调试器-gdb使用背…

linux c 开发

在很多人的眼里,C语言和linux常常是分不开的。这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品。当然,linux操作系统本身对C语言的支持也是相当到位的。作为一个真正的程序员来说,如果没有在linux下面用…

Linux开发工具的使用

Linux开发工具🍬 目录 Linux开发工具🍬💻 Linux安装软件💻💻 Linux软件包管理器 yum 💻💻Linux编辑器-vim的使用💻普通模式 📖末行模式📖vim配置&#x1f4d6…