.. SPDX-License-Identifier: GPL-2.0 .. include:: ../../disclaimer-zh_TW.rst :Original: :ref:`Documentation/arch/arm64/amu.rst <amu_index>` Translator: Bailu Lin <bailu.lin@vivo.com> Hu Haowen <2023002089@link.tyut.edu.cn> ================================== AArch64 Linux 䏿“´å±•的活動監控單元 ================================== 作者: Ionela Voinescu <ionela.voinescu@arm.com> 日期: 2019-09-10 æœ¬æ–‡æª”ç°¡è¦æè¿°äº† AArch64 Linux 支æŒçš„æ´»å‹•監控單元的è¦ç¯„。 架構總述 -------- 活動監控是 ARMv8.4 CPU 架構引入的一個å¯é¸æ“´å±•特性。 活動監控單元(在æ¯å€‹ CPU ä¸å¯¦ç¾)çˆ²ç³»çµ±ç®¡ç†æä¾›äº†æ€§èƒ½è¨ˆæ•¸å™¨ã€‚æ—¢å¯ä»¥é€š éŽç³»çµ±å¯„å˜å™¨çš„æ–¹å¼è¨ªå•è¨ˆæ•¸å™¨ï¼ŒåŒæ™‚也支æŒå¤–éƒ¨å…§å˜æ˜ 射的方å¼è¨ªå•計數器。 AMUv1 架構實ç¾äº†ä¸€å€‹ç”±4個固定的64ä½äº‹ä»¶è¨ˆæ•¸å™¨çµ„æˆçš„計數器組。 - CPU é€±æœŸè¨ˆæ•¸å™¨ï¼šåŒ CPU çš„é »çŽ‡å¢žé•· - 常é‡è¨ˆæ•¸å™¨ï¼šåŒå›ºå®šçš„系統時é˜é »çŽ‡å¢žé•· - 淘汰指令計數器: åŒæ¯æ¬¡æž¶æ§‹æŒ‡ä»¤åŸ·è¡Œå¢žé•· - å…§å˜åœé “週期計數器:計算由在時é˜åŸŸå…§çš„æœ€å¾Œä¸€ç´šç·©å˜ä¸æœªå‘½ä¸è€Œå¼•èµ· 的指令調度åœé “週期數 當處於 WFI 或者 WFE ç‹€æ…‹æ™‚ï¼Œè¨ˆæ•¸å™¨ä¸æœƒå¢žé•·ã€‚ AMU æž¶æ§‹æä¾›äº†ä¸€å€‹é«˜é”16ä½çš„事件計數器空間,未來新的 AMU 版本ä¸å¯èƒ½ ç”¨å®ƒä¾†å¯¦ç¾æ–°å¢žçš„事件計數器。 å¦å¤–,AMUv1 實ç¾äº†ä¸€å€‹å¤šé”16個64ä½è¼”助事件計數器的計數器組。 冷復使™‚所有的計數器會清零。 åŸºæœ¬æ”¯æŒ -------- å…§æ ¸å¯ä»¥å®‰å…¨åœ°é‹è¡Œåœ¨æ”¯æŒ AMU å’Œä¸æ”¯æŒ AMU çš„ CPU 組åˆä¸ã€‚ å› æ¤ï¼Œç•¶é…ç½® CONFIG_ARM64_AMU_EXTN 後我們無æ¢ä»¶ä½¿èƒ½å¾ŒçºŒ (secondary or hotplugged) CPU 檢測和使用這個特性。 當在 CPU 上檢測到該特性時,我們會標記爲特性å¯ç”¨ä½†æ˜¯ä¸èƒ½ä¿è‰è¨ˆæ•¸å™¨çš„功能, 僅表明有擴展屬性。 固件(代碼é‹è¡Œåœ¨é«˜ç•°å¸¸ç´šåˆ¥ï¼Œä¾‹å¦‚ arm-tf )需支æŒä»¥ä¸‹åŠŸèƒ½ï¼š - æä¾›ä½Žç•°å¸¸ç´šåˆ¥(EL2 å’Œ EL1)è¨ªå• AMU 寄å˜å™¨çš„能力。 - 使能計數器。如果未使能,它的值應爲 0。 - 在從電æºé—œé–‰ç‹€æ…‹å•“å‹• CPU 剿ˆ–後ä¿å˜æˆ–者æ¢å¾©è¨ˆæ•¸å™¨ã€‚ ç•¶ä½¿ç”¨ä½¿èƒ½äº†è©²ç‰¹æ€§çš„å…§æ ¸å•“å‹•ä½†å›ºä»¶æå£žæ™‚,訪å•計數器寄å˜å™¨å¯èƒ½æœƒéé‡ panic 或者æ»éŽ–ã€‚å³ä½¿æœªç™¼ç¾é€™äº›ç—‡ç‹€ï¼Œè¨ˆæ•¸å™¨å¯„å˜å™¨è¿”å›žçš„æ•¸æ“šçµæžœä¸¦ä¸ä¸€ å®šèƒ½åæ˜ 真實情æ³ã€‚通常,計數器會返回 0,表明他們未被使能。 如果固件沒有æä¾›é©ç•¶çš„æ”¯æŒæœ€å¥½é—œé–‰ CONFIG_ARM64_AMU_EXTN。 值得注æ„çš„æ˜¯ï¼Œå‡ºæ–¼å®‰å…¨åŽŸå› ï¼Œä¸è¦ç¹žéŽ AMUSERRENR_EL0 è¨ç½®è€Œæ•ç²å¾ž EL0(用戶空間) è¨ªå• EL1(å…§æ ¸ç©ºé–“)。 å› æ¤ï¼Œå›ºä»¶æ‡‰è©²ç¢ºä¿è¨ªå• AMU寄å˜å™¨ 䏿œƒå›°åœ¨ EL2或EL3。 AMUv1 的固定計數器å¯ä»¥é€šéŽå¦‚下系統寄å˜å™¨è¨ªå•: - SYS_AMEVCNTR0_CORE_EL0 - SYS_AMEVCNTR0_CONST_EL0 - SYS_AMEVCNTR0_INST_RET_EL0 - SYS_AMEVCNTR0_MEM_STALL_EL0 特定輔助計數器å¯ä»¥é€šéŽ SYS_AMEVCNTR1_EL0(n) 訪å•,其ä¸n介於0到15。 詳細信æ¯å®šç¾©åœ¨ç›®éŒ„:arch/arm64/include/asm/sysreg.h。 ç”¨æˆ¶ç©ºé–“è¨ªå• ------------ ç”±æ–¼ä»¥ä¸‹åŽŸå› ï¼Œç•¶å‰ç¦æ¢å¾žç”¨æˆ¶ç©ºé–“è¨ªå• AMU 的寄å˜å™¨ï¼š - å®‰å…¨å› æ•¸ï¼šå¯èƒ½æœƒæš´éœ²è™•於安全模å¼åŸ·è¡Œçš„代碼信æ¯ã€‚ - æ„願:AMU 是用於系統管ç†çš„。 åŒæ¨£ï¼Œè©²åŠŸèƒ½å°ç”¨æˆ¶ç©ºé–“ä¸å¯è¦‹ã€‚ 虛擬化 ------ ç”±æ–¼ä»¥ä¸‹åŽŸå› ï¼Œç•¶å‰ç¦æ¢å¾ž KVM 客戶端的用戶空間(EL0)å’Œå…§æ ¸ç©ºé–“(EL1) è¨ªå• AMU 的寄å˜å™¨ï¼š - å®‰å…¨å› æ•¸ï¼šå¯èƒ½æœƒæš´éœ²çµ¦å…¶ä»–客戶端或主機端執行的代碼信æ¯ã€‚ ä»»ä½•è©¦åœ–è¨ªå• AMU 寄å˜å™¨çš„行爲都會觸發一個註冊在客戶端的未定義異常。