女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

AMU與PMU有哪些差異點呢?

Linux閱碼場 ? 來源:Linux閱碼場 ? 2023-01-31 10:40 ? 次閱讀

1. AMU簡介

AMU是ActivityMonitor Unit的縮寫,在Arm v8.4架構(gòu)中引入。從Arm文檔描述來看,AMU與PMU(PerformanceMonitor Unit)有類似的性能監(jiān)控功能,但其設(shè)計初衷是為了系統(tǒng)管理,而PMU的用途是用戶態(tài)程序或者調(diào)試功能。AMU可以為系統(tǒng)性能、功耗管理提供持續(xù)不斷的監(jiān)控并獲取非常有用的信息。

在介紹AMU之前,先介紹下PMU幾個基本概念,對了解AMU會有所幫助。PMU用于跟蹤、統(tǒng)計系統(tǒng)內(nèi)部的一些底層硬件事件,這些事件反映了程序在CPU上執(zhí)行的行為,可以幫助我們對程序進行分析和調(diào)優(yōu):

Event,即事件,例如CPU相關(guān)的事件包括執(zhí)行指令數(shù),時鐘周期等,cache相關(guān)的事件包括各級cache訪問、refill計數(shù)等,以及與TLB有關(guān)的事件等。每個event都有一個特定的eventid。

Counter,事件計數(shù)器,數(shù)量固定,以Cortex-A53為例,一共有1+6個Counter,CycleCounter只用于記錄CPU Cycle數(shù),另外6個Counter是可配置的Counter,根據(jù)配置選擇的Event進行計數(shù)。當(dāng)計數(shù)器發(fā)生溢出時,計數(shù)器會產(chǎn)生overflow中斷。

04c362b2-96ca-11ed-bfe3-dac502259ad0.png

AMUv1架構(gòu)定義(architecturally defined)4個固定的EventCounter,分別是:

04eb2a0e-96ca-11ed-bfe3-dac502259ad0.jpg

既然是架構(gòu)規(guī)定要實現(xiàn)的,那么一定是被經(jīng)常用到的Event。未來可能會增加固定Counter的數(shù)量,AMU最多可支持16個固定Counter。

除了固定Counter,還支持最多16個輔助的Counter,這些Counter可以做成固定的也可以是可配置的,取決于具體實現(xiàn)。所有AMUEvent Counter都是64位的,在溢出時沒有提示或者中斷。

2. AMU寄存器

AMU寄存器如下圖所列,

0510730e-96ca-11ed-bfe3-dac502259ad0.jpg

AMU寄存器通過systemregister接口MRS和MSR指令進行訪問。

訪問控制

可通過配置控制是否允許更低EL級別訪問AMU寄存器。AMUSERENR_EL0.ENbit控制EL0訪問AMU寄存器,可在EL1,EL2,EL3中配置。CPTR_EL2.TAMbit控制來自EL0和EL1的訪問,CPTR_EL3.TAMbit控制來自EL0,EL1和EL2的訪問。其他的配置,只允許在最高的EL級別中進行。

Counter寄存器

0532b4f0-96ca-11ed-bfe3-dac502259ad0.jpg

Counter寄存器都有以下特點:

都是64位寄存器,并且overflow時不產(chǎn)生狀態(tài)提示或者中斷;

CPU復(fù)位后Counter寄存器值恢復(fù)為0;

Event Type寄存器

0641eb9a-96ca-11ed-bfe3-dac502259ad0.jpg

EventType寄存器配置了各Counter對哪個event進行計數(shù),這點與PMU的PMEVTYPER_EL0寄存器類似。

AMCNTENSET0_EL0/AMCNTENCLR0_EL0可對各Counterenable/disable進行控制,其他寄存器含義可參考ARM文檔,這里不一一介紹。

3. 代碼實現(xiàn)

在Kernel中通過CONFIG_ARM64_AMU_EXTN宏進行AMU代碼控制,Kernel最早支持AMU的功能,在這個patch中:

arm64: add support for the AMU extension v1

在arch/arm64/include/asm/sysreg.h中定義了AMU各寄存器的地址

/* Definitions for system register interface to AMU for ARMv8.4
onwards */
#define SYS_AM_EL0(crm, op2) sys_reg(3,
3, 13, (crm), (op2))
#define SYS_AMCR_EL0 SYS_AM_EL0(2,
0)
#define SYS_AMCFGR_EL0        SYS_AM_EL0(2, 1)
#define SYS_AMCGCR_EL0        SYS_AM_EL0(2, 2)
#define SYS_AMUSERENR_EL0        SYS_AM_EL0(2, 3)
#define SYS_AMCNTENCLR0_EL0  SYS_AM_EL0(2, 4)
#define SYS_AMCNTENSET0_EL0        SYS_AM_EL0(2, 5)
#define SYS_AMCNTENCLR1_EL0  SYS_AM_EL0(3, 0)
#define SYS_AMCNTENSET1_EL0        SYS_AM_EL0(3, 1)
#define SYS_AMEVCNTR0_EL0(n)  SYS_AM_EL0(4 + ((n) >> 3), (n)
& 7)
#define SYS_AMEVTYPER0_EL0(n)        SYS_AM_EL0(6 + ((n) >> 3), (n)
& 7)
#define SYS_AMEVCNTR1_EL0(n)  SYS_AM_EL0(12 + ((n) >> 3), (n)
& 7)
#define SYS_AMEVTYPER1_EL0(n)        SYS_AM_EL0(14 + ((n) >> 3), (n)
& 7)
/* AMU v1: Fixed (architecturally defined) activity monitors */
#define SYS_AMEVCNTR0_CORE_EL0        SYS_AMEVCNTR0_EL0(0)
#define SYS_AMEVCNTR0_CONST_EL0        SYS_AMEVCNTR0_EL0(1)
#define SYS_AMEVCNTR0_INST_RET_EL0 SYS_AMEVCNTR0_EL0(2)
#define SYS_AMEVCNTR0_MEM_STALL        SYS_AMEVCNTR0_EL0(3)

在arm-trusted-firmware中,也有AMU寄存器讀寫相關(guān)代碼,還包括上下電時AMU備份恢復(fù)的操作,代碼主要在lib/extensions/amu/aarch64/和lib/cpus/aarch64/cpuamu_helpers.S。

4. AMU的應(yīng)用

在內(nèi)核中有這么一個patch,目的是為了讓調(diào)度LoadTracking的FIE計算更準(zhǔn)確,

arm64: use activity monitors for frequency invariance

在此之前,Kernel中的freq scale計算都是通過cpufreq模塊記錄的當(dāng)前頻率和最大頻率來計算的,但是實際頻率可能在Kernel之外的地方發(fā)生變化,與Kernel cpufreq模塊記錄的當(dāng)前頻率不同,或者支持ACPI的cpufreq driver是不知道當(dāng)前頻率的。因此AMU就為獲取CPU平均頻率提供了一個方法。通過CPU_CYCLES和CNT_CYCLES的Counter計數(shù)來計算CPU頻率,具體代碼如下。

arch/arm64/kernel/topology.c

/* Initialize counter reference per-cpu variables for the current
CPU */
void init_cpu_freq_invariance_counters(void)
{
this_cpu_write(arch_core_cycles_prev,
        read_sysreg_s(SYS_AMEVCNTR0_CORE_EL0));
this_cpu_write(arch_const_cycles_prev,
        read_sysreg_s(SYS_AMEVCNTR0_CONST_EL0));
}
void topology_scale_freq_tick(void)
{
u64 prev_core_cnt, prev_const_cnt;
u64 core_cnt, const_cnt, scale;
int cpu =
smp_processor_id();
if
(!amu_freq_invariant())
return;
if
(!cpumask_test_cpu(cpu, amu_fie_cpus))
return;
const_cnt =
read_sysreg_s(SYS_AMEVCNTR0_CONST_EL0);
core_cnt = read_sysreg_s(SYS_AMEVCNTR0_CORE_EL0);
prev_const_cnt =
this_cpu_read(arch_const_cycles_prev);
prev_core_cnt =
this_cpu_read(arch_core_cycles_prev);
if (unlikely(core_cnt
<= prev_core_cnt ||
      const_cnt <= prev_const_cnt))
goto
store_and_exit;
/*
  *        /core   arch_max_freq_scale
  * scale = ------- * --------------------
  *        /const  SCHED_CAPACITY_SCALE
  *
  * See validate_cpu_freq_invariance_counters()
for details on
  * arch_max_freq_scale and the use of
SCHED_CAPACITY_SHIFT。
  */
scale = core_cnt -
prev_core_cnt;
scale *=
this_cpu_read(arch_max_freq_scale);
scale = div64_u64(scale
>> SCHED_CAPACITY_SHIFT,
   const_cnt - prev_const_cnt);
scale = min_t(unsigned
long, scale, SCHED_CAPACITY_SCALE);
this_cpu_write(freq_scale, (unsigned long)scale);
store_and_exit:
this_cpu_write(arch_core_cycles_prev, core_cnt);
this_cpu_write(arch_const_cycles_prev, const_cnt);
}

5. AMU與PMU的區(qū)別

前文提到AMU與PMU的設(shè)計目的不同。除此之外,還有哪些差異點呢?

AMU與PMU具有類似的特性,設(shè)計的目的有所不同,AMU是為了系統(tǒng)功耗性能管理,PMU是為了用戶態(tài)程序或者調(diào)試目的。從硬件角度都是對事件進行計數(shù),我們同樣也可以使用PMU的統(tǒng)計結(jié)果進行功耗和性能管理,為什么還要再引入AMU呢?

可能的原因是,PMU有多個使用場景,如果在性能功耗管理方案上使用了PMU,那么在性能調(diào)試時也要獲取PMU信息就可能產(chǎn)生沖突,例如使用強大的perf工具抓取PMU信息,尤其在Counter數(shù)量有限的情況下,沖突概率更大。引入AMU是為了給固定的資源專門用來做系統(tǒng)控制方案,從而釋放PMU資源用作其他目的。

PMU和AMU的軟件使用方式上,也有很大的不同。AMU通過system register interface就可以訪問,而PMU需要通過內(nèi)核的perf接口,軟件開銷遠(yuǎn)超過AMU。

下圖列出了兩者功能上的一些差異,

066e2066-96ca-11ed-bfe3-dac502259ad0.jpg






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5421

    瀏覽量

    123245
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11031

    瀏覽量

    215901
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2284

    瀏覽量

    96010
  • Cortex-A53
    +關(guān)注

    關(guān)注

    0

    文章

    33

    瀏覽量

    21536

原文標(biāo)題:Perf monitor:從PMU到AMU

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    eMMC與UFS它們之間到底什么差異?

    eMMC是什么意思?UFS是什么意思?eMMC與UFS它們之間到底什么差異
    發(fā)表于 06-18 08:06

    STM32的三種Boot模式差異

    STM32的三種Boot模式差異?如何去驗證這種差異?
    發(fā)表于 11-26 07:15

    STM8和STM32的內(nèi)核什么差異

    STM8和STM32的內(nèi)核什么差異?STM8和STM32的片上外設(shè)有什么差異?
    發(fā)表于 02-23 07:39

    如何對Android 7.1 RK3288 PMU進行調(diào)試

    如何對Android 7.1 RK3288 PMU進行調(diào)試
    發(fā)表于 03-04 06:28

    那么AMUPMU什么不同

    的事件類似,那么AMUPMU什么不同?AMUPMU的區(qū)別在于:
    發(fā)表于 02-03 15:09

    一文淺析AMUPMU的區(qū)別

    的事件類似,那么AMUPMU什么不同AMUPMU的區(qū)別在于:
    發(fā)表于 02-15 11:35

    Revere AMU系統(tǒng)架構(gòu)參考指南

    本節(jié)定義了硬件加速器的可選引腳級接口,該接口對軟件不可見,但允許重用AHA和AMU的標(biāo)準(zhǔn)IP實現(xiàn)。 本節(jié)介紹了以下程序: ?管理與硬件代理(AHA)的連接?在AHA中配置AMI-HW和AMS?通過
    發(fā)表于 08-10 06:59

    TinyM0配套例程 PMU例程

    【TinyM0配套例程】PMU例程 PMU例程
    發(fā)表于 11-15 16:53 ?0次下載

    PMU基本介紹

    PMU基本介紹
    發(fā)表于 01-22 19:37 ?54次下載

    PMU測試儀的設(shè)計與研究

    隨著pmu在電力系統(tǒng)中的廣泛應(yīng)用,需要現(xiàn)場對pmu裝置進行測試,保證其測量數(shù)據(jù)的可靠性,然而pmu的檢測不同于rtu的檢測,也不用于保護裝置的暫態(tài)檢測,需要進行動態(tài)檢測,因此就提出了pmu
    發(fā)表于 08-29 21:29 ?4次下載
    <b class='flag-5'>PMU</b>測試儀的設(shè)計與研究

    PMU量測優(yōu)化配置新方法

    同步相量測量裝置(Phasor Measurement Unit,PMU)是基于GPS衛(wèi)星同步時鐘實現(xiàn)同步測量電網(wǎng)母線電壓和線路電流相量的裝置,應(yīng)用于配電網(wǎng)全網(wǎng)運行監(jiān)測控制、區(qū)域保護控制和電力系統(tǒng)
    發(fā)表于 04-17 10:21 ?5次下載
    <b class='flag-5'>PMU</b>量測<b class='flag-5'>點</b>優(yōu)化配置新方法

    如何使用WEBENCH PMU優(yōu)化電源設(shè)計?

    WEBENCH PMU Power Architect-使用PMU優(yōu)化您的電源設(shè)計
    的頭像 發(fā)表于 08-20 00:13 ?3706次閱讀

    你知道PMUPMU也是區(qū)別的嗎

    在半導(dǎo)體芯片行業(yè)中,一個詞是我們經(jīng)常能看到的,那就是PMU??墒悄阒?b class='flag-5'>PMUPMU也是區(qū)別的嗎?通常,在半導(dǎo)體行業(yè)中,
    的頭像 發(fā)表于 10-25 11:06 ?1.5w次閱讀

    雷達信號什么特點?和通信信號的差異在哪里?

    先學(xué)好數(shù)字信號處理的知識,才能慢慢的理解雷達信號處理!先來看看雷達信號什么特點?和通信信號的差異在哪里?載波的信息都是有用的,但各自用的肯定不一樣!
    的頭像 發(fā)表于 03-04 11:03 ?1.5w次閱讀

    什么是UVLED光源及其特點和應(yīng)用哪些?

    什么是UVLED光源?以及它的特點和應(yīng)用案例哪些?下面由柯依努小編為您簡單概述以下幾點。
    的頭像 發(fā)表于 12-14 13:54 ?3962次閱讀