ARM CPU 之 PMU部件(性能监控单元)

本文详细介绍了Cortex-A7处理器的性能监控单元(PMU),包括其功能、寄存器描述、事件和中断机制,以及与外部硬件的交互。重点涵盖了PMU的计数器、控制寄存器和如何通过CP15协处理器进行操作。
摘要由CSDN通过智能技术生成

目录

11 PMU性能监控单元

11.1 关于PMU

11.2 PMU功能描述

11.3 PMU寄存器汇总

11.4 PMU寄存器描述

11.4.1 PMCR性能监控寄存器

11.4.2 性能监控辅助识别寄存器

11.4.3 性能监视组件识别寄存器PMCID

11.5 事件

11.6 中断

11.7 导出PMU事件

11.7.1 外部硬件

11.7.2 调试跟踪硬件

CPU相关术语:



11 PMU性能监控单元


11.1 关于PMU


       基于PMUv2架构,A7处理器在运行时可以收集关于处理器和内存的各种统计信息。对于处理器来说这些统计信息中的事件非常有用,你可以利用它们来调试或者剖析代码。

       处理器PMU部件提供了4个计数器。每个计数器都可以对处理器的任何事件(可用的)计数。


11.2 PMU功能描述


       主要包含三部分,eventinterface,CP15 and APB interface,Counters

上图为PMU部件的组成,主要是那5个计数器。

Eventinterface

       Events from all other units from acrossthe design are provided to the PMU.

       提供给PMU部件的所有事件,这些事件全部来自其他的部件。

CP15 andAPB interface

The PMUregisters can be programmed using the CP15 system control coprocessor orexternal APB interface.

       PMU 寄存器可以通过CP15 协处理器和外部APB接口来编程。

Counters计数器

       PMU含有4个随事件增加32位计数器。

       PMU含有1个随处理器时钟周期增加的循环计数器。


11.3 PMU寄存器汇总


       访问方式:PMU计数器和PMU控制寄存器可以通过CP15协处理器和APB接口来访问。

       表11-1为Cortex-A7MPCore PMU 寄存器。

表11-1 PMU 寄存器汇总

操作PMU部件需要通过mrc和mcr指令来操作cp15协处理器。


11.4 PMU寄存器描述


本章节描述cortex-a7 MPCorePMU寄存器。表11-1已经给出了关于PMU寄存器的概述。

11.4.1 PMCR性能监控寄存器


访问方式:

要访问PMCR寄存器,需要采用以下方式读或者写CP15寄存器:

MRC p15,0, <Rt>, c9, c12, 0; 读PMCR

MCR p15,0, <Rt>, c9, c12, 0; 写PMCR

PMCR特征表现在以下4个方面:

目的:

提供监控性能的各种细节行为(包含计数器)

              配置和控制计数器

使用限制:

              一个可读可写的寄存器。

              对于安全和非安全模式是公共的。

              PL1或者更高级别可访问。

              在PMUSERENR.EN位被置1时可以在用户模式下访问。

配置:

              所有的配置都可用

属性:

              参见PMU寄存器汇总表11-1

图11-2及表11-2展示了PMCR寄存器的位分布图

图11-2 PMCR位分布图

11.4.2 性能监控辅助识别寄存器


性能监控辅助识别寄存器提供了适用于所有部件符合ARM PMUv2 架构的标准信息。他们是一组寄存器,参见表11-3。

每个PMPID的[0,7]位可使用,[8,31]位是保留位。8个PMPID寄存器定义了一个64位的辅助识别寄存器。

ARMArchitecture Reference Manual该手册详细描述了这些寄存器。

11.4.3 性能监视组件识别寄存器PMCID


有4个只读的性能监视组件识别寄存器,从ID0到ID3。表11-4展示了这些寄存器。

性能监视组件识别寄存器PMCID将性能监视器视为ARMPMUv2架构。

ARM Architecture Reference Manual该手册详细描述了这些寄存器。

11.5 事件


表11-5展示了PMU使用的事件号,还展示了每个事件在事件总线上的“位”位置。未列出的事件号留作它用。

11.6 中断


当PMU产生中断时,Cortex-A7 MPCore 处理器可以判断n个PMUIRQ信号。你可以将这个信号发送给一个中断控制器以便于优化和屏蔽。这是发送中断信号到处理器的唯一机制。

11.7 导出PMU事件


11.7.1 外部硬件


除了处理器中的计数器,表11-5还展示了基于PMUEVENT总线的事件,通过这些事件你可以和外部硬件联系。

11.7.2 调试跟踪硬件


表11-5中的某些事件可以导出到其他外部硬件(可调试或可跟踪)。参见CoreSight SoC Technical Reference Manual以获取更多信息。

CPU相关术语:


1.内存屏障(memory barriers)是一组处理器指令,用于实现对内存操作的顺序限制。

2.缓冲行(cache line)CPU高速缓存中可以分配的最小存储单位。处理器填写缓存行时会加载整个缓存行,现在CPU需要执行几百次CPU指令。

3.原子操作(atomicoperations)不可中断的一个或一系列操作。

4.缓存行填充(cache line fill)当处理器识别到从内存中读取操作数是可缓存的,处理器填写整个高速缓存行到适当的缓存(L1,L2,L3的或所有)。

5.缓存命中(cache hit)如果进行高速缓存行填充操作的内存位置仍然是下次处理器访问的地址时,处理器从缓存中读取操作数,而不是从内存读取。

6.写命中(write hit)当处理器将操作数写回到一个内存缓存的区域时,它首先会检查这个缓存的内存地址是否存在行中,如果存在一个有效的缓存行,则处理器将这个操作数写回到缓存,而不是写回到内存,这个操作被称为写命中。

7.写缺失(write misses thecache)一个有效的缓存行被写入到不存在的内存区域。

8.比较并交换(compare andswap)CAS操作需要输入两个数值,一个旧值(期望操作前的值)和一个新值,在操作期间先比较旧值有没有发生变化,如果没有发生变化,才交换成新值,发生了变化则不交换。

9.CPU流水线(CPU pipeline)CPU流水线的工作方式就像工业生产上的装配流水线,在CPU中由5-6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5-6步后再由这些电路单元分别执行,这样就能实现一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。

10.内存顺序冲突(Memory orderviolation)内存顺序冲突一般是由假共享引起的,假共享是指多个CPU同时修改一个缓存行的不同部分引起其中一个CPU的操作无效,当出现这个内存顺序冲突时,CPU必须清空流水线。【1】

                        
原文链接:https://blog.csdn.net/chichi123137/article/details/80145914

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值