~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/translations/zh_CN/arch/arm64/amu.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 .. include:: ../../disclaimer-zh_CN.rst
  2 
  3 :Original: :ref:`Documentation/arch/arm64/amu.rst <amu_index>`
  4 
  5 Translator: Bailu Lin <bailu.lin@vivo.com>
  6 
  7 ==================================
  8 AArch64 Linux 中扩展的活动监控单元
  9 ==================================
 10 
 11 作者: Ionela Voinescu <ionela.voinescu@arm.com>
 12 
 13 日期: 2019-09-10
 14 
 15 本文档简要描述了 AArch64 Linux 支持的活动监控单元的规范。
 16 
 17 
 18 架构总述
 19 --------
 20 
 21 活动监控是 ARMv8.4 CPU 架构引入的一个可选扩展特性。
 22 
 23 活动监控单元(在每个 CPU 中实现)为系统管理提供了性能计数器。既可以通
 24 过系统寄存器的方式访问计数器,同时也支持外部内存映射的方式访问计数器。
 25 
 26 AMUv1 架构实现了一个由4个固定的64位事件计数器组成的计数器组。
 27 
 28   - CPU 周期计数器:同 CPU 的频率增长
 29   - 常量计数器:同固定的系统时钟频率增长
 30   - 淘汰指令计数器: 同每次架构指令执行增长
 31   - 内存停顿周期计数器:计算由在时钟域内的最后一级缓存中未命中而引起
 32     的指令调度停顿周期数
 33 
 34 当处于 WFI 或者 WFE 状态时,计数器不会增长。
 35 
 36 AMU 架构提供了一个高达16位的事件计数器空间,未来新的 AMU 版本中可能
 37 用它来实现新增的事件计数器。
 38 
 39 另外,AMUv1 实现了一个多达16个64位辅助事件计数器的计数器组。
 40 
 41 冷复位时所有的计数器会清零。
 42 
 43 
 44 基本支持
 45 --------
 46 
 47 内核可以安全地运行在支持 AMU 和不支持 AMU 的 CPU 组合中。
 48 因此,当配置 CONFIG_ARM64_AMU_EXTN 后我们无条件使能后续
 49 (secondary or hotplugged) CPU 检测和使用这个特性。
 50 
 51 当在 CPU 上检测到该特性时,我们会标记为特性可用但是不能保证计数器的功能,
 52 仅表明有扩展属性。
 53 
 54 固件(代码运行在高异常级别,例如 arm-tf )需支持以下功能:
 55 
 56  - 提供低异常级别(EL2 和 EL1)访问 AMU 寄存器的能力。
 57  - 使能计数器。如果未使能,它的值应为 0。
 58  - 在从电源关闭状态启动 CPU 前或后保存或者恢复计数器。
 59 
 60 当使用使能了该特性的内核启动但固件损坏时,访问计数器寄存器可能会遭遇
 61 panic 或者死锁。即使未发现这些症状,计数器寄存器返回的数据结果并不一
 62 定能反映真实情况。通常,计数器会返回 0,表明他们未被使能。
 63 
 64 如果固件没有提供适当的支持最好关闭 CONFIG_ARM64_AMU_EXTN。
 65 值得注意的是,出于安全原因,不要绕过 AMUSERRENR_EL0 设置而捕获从
 66 EL0(用户空间) 访问 EL1(内核空间)。 因此,固件应该确保访问 AMU寄存器
 67 不会困在 EL2或EL3。
 68 
 69 AMUv1 的固定计数器可以通过如下系统寄存器访问:
 70 
 71  - SYS_AMEVCNTR0_CORE_EL0
 72  - SYS_AMEVCNTR0_CONST_EL0
 73  - SYS_AMEVCNTR0_INST_RET_EL0
 74  - SYS_AMEVCNTR0_MEM_STALL_EL0
 75 
 76 特定辅助计数器可以通过 SYS_AMEVCNTR1_EL0(n) 访问,其中n介于0到15。
 77 
 78 详细信息定义在目录:arch/arm64/include/asm/sysreg.h。
 79 
 80 
 81 用户空间访问
 82 ------------
 83 
 84 由于以下原因,当前禁止从用户空间访问 AMU 的寄存器:
 85 
 86   - 安全因数:可能会暴露处于安全模式执行的代码信息。
 87   - 意愿:AMU 是用于系统管理的。
 88 
 89 同样,该功能对用户空间不可见。
 90 
 91 
 92 虚拟化
 93 ------
 94 
 95 由于以下原因,当前禁止从 KVM 客户端的用户空间(EL0)和内核空间(EL1)
 96 访问 AMU 的寄存器:
 97 
 98   - 安全因数:可能会暴露给其他客户端或主机端执行的代码信息。
 99 
100 任何试图访问 AMU 寄存器的行为都会触发一个注册在客户端的未定义异常。

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php