diff --git a/docs/en/api-reference/system/perfmon.rst b/docs/en/api-reference/system/perfmon.rst index 1dcabaa5e9..92da08f22c 100644 --- a/docs/en/api-reference/system/perfmon.rst +++ b/docs/en/api-reference/system/perfmon.rst @@ -1,15 +1,7 @@ Performance Monitor =================== -.. only:: esp32s3 - - .. warning:: - - This feature is not supported in v4.4 - - -The Performance Monitor component provides APIs to use {IDF_TARGET_NAME} internal performance counters to profile functions and -applications. +The Performance Monitor component provides APIs to use {IDF_TARGET_NAME} internal performance counters to profile functions and applications. Application Example ------------------- diff --git a/examples/system/perfmon/README.md b/examples/system/perfmon/README.md index f205097860..91fe6bf09b 100644 --- a/examples/system/perfmon/README.md +++ b/examples/system/perfmon/README.md @@ -1,5 +1,5 @@ -| Supported Targets | ESP32 | ESP32-S2 | -| ----------------- | ----- | -------- | +| Supported Targets | ESP32 | ESP32-S2 | ESP32-S3 | +| ----------------- | ----- | -------- | -------- | # Performance Monitor (`perfmon`) example @@ -16,13 +16,7 @@ The example contain test function that will be executed with perfmon component a ### Hardware Required -Example should be able to run on any commonly available ESP32 development board. - -### Configure the project - -``` -idf.py menuconfig -``` +Example should be able to run on any commonly available ESP32, ESP32-S2 or ESP32-S3 development board. `perfmon` component isn't supported on Espressif chips with RISC-V CPU architecture. ### Build and Flash @@ -36,333 +30,339 @@ See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/l ## Example Output -1. Example starts and call first test. The first test call test function 'exec_test_function' +1. Example starts and calls the first test. This test calls the test function `exec_test_function` 200 times and collects all CPU performance metrics. - ```bash -I (288) example: Start -I (288) example: Start test with printing all available statistic -Value = 750, select = 0, mask = 0001. Counts cycles. - Amount of cycles -Value = 0, select = 1, mask = 0001. Overflow of counter. - Overflow counter -Value = 0, select = 2, mask = 0001. Successfully Retired Instructions. - - JX instructions -Value = 0, select = 2, mask = 0002. Successfully Retired Instructions. - - CALLXn instructions -Value = 3, select = 2, mask = 0004. Successfully Retired Instructions. - - return instructions (RET, RETW, ...) -Value = 0, select = 2, mask = 0008. Successfully Retired Instructions. - - supervisor return instructions (RFDE, RFE, RFI, RFWO, RFWU) -Value = 100, select = 2, mask = 0010. Successfully Retired Instructions. - - Conditional branch instructions where execution - transfers to the target (aka. taken branch), - or loopgtz/loopnez instr where execution skips - the loop (aka. not-taken loop) -Value = 0, select = 2, mask = 0020. Successfully Retired Instructions. - - J instr -Value = 1, select = 2, mask = 0040. Successfully Retired Instructions. - - CALLn instr -Value = 0, select = 2, mask = 0080. Successfully Retired Instructions. - - Conditional branch instr where execution - falls through (aka. not-taken branch) -Value = 0, select = 2, mask = 0100. Successfully Retired Instructions. - - Loop instr where execution falls into loop (aka. taken loop) -Value = 0, select = 2, mask = 0400. Successfully Retired Instructions. - - Last inst of loop and execution transfers - to LBEG (aka. loopback taken) -Value = 0, select = 2, mask = 0800. Successfully Retired Instructions. - - Last inst of loop and execution falls - through to LEND (aka. loopback fallthrough) -Value = 309, select = 2, mask = 8000. Successfully Retired Instructions. - - Non-branch instr (aka. non-CTI) -Value = 0, select = 3, mask = 0002. Data-related GlobalStall cycles. - Store buffer full stall -Value = 0, select = 3, mask = 0004. Data-related GlobalStall cycles. - Store buffer conflict stall -Value = 0, select = 3, mask = 0008. Data-related GlobalStall cycles. - Data Cache-miss stall (unused) -Value = 0, select = 3, mask = 0010. Data-related GlobalStall cycles. - Data RAM/ROM/XLMI busy stall -Value = 0, select = 3, mask = 0020. Data-related GlobalStall cycles. - Data inbound-PIF request stall (includes s32c1i) -Value = 0, select = 3, mask = 0040. Data-related GlobalStall cycles. - MHT lookup stall -Value = 0, select = 3, mask = 0080. Data-related GlobalStall cycles. - Uncached load stall (included in MHT lookup stall below) -Value = 0, select = 3, mask = 0100. Data-related GlobalStall cycles. - Bank-conflict stall -Value = 0, select = 4, mask = 0001. Instruction-related and Other Glob -alStall cycles. - ICache-miss stall -Value = 0, select = 4, mask = 0002. Instruction-related and Other Glob -alStall cycles. - Instruction RAM/ROM busy stall -Value = 0, select = 4, mask = 0004. Instruction-related and Other Glob -alStall cycles. - Instruction RAM inbound-PIF request stall -Value = 0, select = 4, mask = 0008. Instruction-related and Other Glob -alStall cycles. - TIE port stall -Value = 0, select = 4, mask = 0010. Instruction-related and Other Glob -alStall cycles. - External RunStall signal status -Value = 0, select = 4, mask = 0020. Instruction-related and Other Glob -alStall cycles. - Uncached fetch stall -Value = 1, select = 4, mask = 0040. Instruction-related and Other Glob -alStall cycles. - FastL32R stall -Value = 0, select = 4, mask = 0080. Instruction-related and Other Glob -alStall cycles. - Iterative multiply stall -Value = 0, select = 4, mask = 0100. Instruction-related and Other Glob -alStall cycles. - Iterative divide stall -Value = 0, select = 5, mask = 0001. Exceptions and Pipeline Replays. - Other Pipeline Replay (i.e. excludes cache miss etc.) -Value = 0, select = 5, mask = 0002. Exceptions and Pipeline Replays. - Level-1 interrupt -Value = 0, select = 5, mask = 0004. Exceptions and Pipeline Replays. - Greater-than-level-1 interrupt -Value = 0, select = 5, mask = 0008. Exceptions and Pipeline Replays. - Debug exception -Value = 0, select = 5, mask = 0010. Exceptions and Pipeline Replays. - NMI -Value = 0, select = 5, mask = 0020. Exceptions and Pipeline Replays. - Window exception -Value = 0, select = 5, mask = 0040. Exceptions and Pipeline Replays. - Allocate exception -Value = 0, select = 5, mask = 0080. Exceptions and Pipeline Replays. - Other exceptions -Value = 0, select = 5, mask = 0100. Exceptions and Pipeline Replays. - HW-corrected memory error -Value = 0, select = 6, mask = 0001. Hold and Other Bubble cycles. - Processor domain PSO bubble -Value = 0, select = 6, mask = 0004. Hold and Other Bubble cycles. - R hold caused by Data Cache miss(unused) -Value = 0, select = 6, mask = 0008. Hold and Other Bubble cycles. - R hold caused by Store release -Value = 0, select = 6, mask = 0010. Hold and Other Bubble cycles. - R hold caused by register dependency -Value = 0, select = 6, mask = 0020. Hold and Other Bubble cycles. - R hold caused by MEMW, EXTW or EXCW -Value = 0, select = 6, mask = 0040. Hold and Other Bubble cycles. - R hold caused by Halt instruction (TX only) -Value = 322, select = 6, mask = 0080. Hold and Other Bubble cycles. - CTI bubble (e.g. branch delay slot) -Value = 0, select = 6, mask = 0100. Hold and Other Bubble cycles. - WAITI bubble i.e. a cycle spent in WaitI power down mode. -Value = 417, select = 7, mask = 0001. Instruction TLB Accesses (per inst -ruction retiring). - ITLB Hit -Value = 0, select = 7, mask = 0002. Instruction TLB Accesses (per inst -ruction retiring). - Replay of instruction due to ITLB miss -Value = 0, select = 7, mask = 0004. Instruction TLB Accesses (per inst -ruction retiring). - HW-assisted TLB Refill completes -Value = 0, select = 7, mask = 0008. Instruction TLB Accesses (per inst -ruction retiring). - ITLB Miss Exception -Value = 0, select = 8, mask = 0001. Instruction Memory Accesses (per i -nstruction retiring). - Instruction Cache Hit -Value = 0, select = 8, mask = 0002. Instruction Memory Accesses (per i -nstruction retiring). - Instruction Cache Miss -Value = 420, select = 8, mask = 0004. Instruction Memory Accesses (per i -nstruction retiring). - All InstRAM or InstROM accesses -Value = 0, select = 8, mask = 0008. Instruction Memory Accesses (per i -nstruction retiring). - Bypass (i.e. uncached) fetch -Value = 3, select = 9, mask = 0001. Data TLB Accesses. - DTLB Hit -Value = 0, select = 9, mask = 0002. Data TLB Accesses. - Replay of load/store due to DTLB miss -Value = 0, select = 9, mask = 0004. Data TLB Accesses. - HW-assisted TLB Refill completes -Value = 0, select = 9, mask = 0008. Data TLB Accesses. - DTLB Miss Exception -Value = 0, select = 10, mask = 0001. Load Instruction (Data Memory). - Data Cache Hit(unused) -Value = 0, select = 10, mask = 0002. Load Instruction (Data Memory). - Data Cache Miss(unused) -Value = 3, select = 10, mask = 0004. Load Instruction (Data Memory). - Load from local memory i.e. DataRAM, DataROM, InstRAM, InstROM - -Value = 0, select = 10, mask = 0008. Load Instruction (Data Memory). - Bypass (i.e. uncached) load -Value = 0, select = 13, mask = 0001. Load Instruction (Data Memory). - Data Cache Hit(unused) -Value = 0, select = 13, mask = 0002. Load Instruction (Data Memory). - Data Cache Miss(unused) -Value = 0, select = 13, mask = 0004. Load Instruction (Data Memory). - Load from local memory i.e. DataRAM, DataROM, InstRAM, InstROM - -Value = 0, select = 13, mask = 0008. Load Instruction (Data Memory). - Bypass (i.e. uncached) load -Value = 0, select = 16, mask = 0001. Load Instruction (Data Memory). - Data Cache Hit (unused) -Value = 0, select = 16, mask = 0002. Load Instruction (Data Memory). - Data Cache Miss (unused) -Value = 0, select = 16, mask = 0004. Load Instruction (Data Memory). - Load from local memory i.e. DataRAM, DataROM, InstRAM, InstROM - -Value = 0, select = 16, mask = 0008. Load Instruction (Data Memory). - Bypass (i.e. uncached) load -Value = 0, select = 11, mask = 0001. Store Instruction (Data Memory). - Data Cache Hit (unused) -Value = 0, select = 11, mask = 0002. Store Instruction (Data Memory). - Data Cache Miss (unused) -Value = 0, select = 11, mask = 0004. Store Instruction (Data Memory). - Store to local memory i.e. DataRAM, InstRAM -Value = 0, select = 11, mask = 0008. Store Instruction (Data Memory). - PIF Store -Value = 0, select = 14, mask = 0001. Store Instruction (Data Memory). - Data Cache Hit(unused) -Value = 0, select = 14, mask = 0002. Store Instruction (Data Memory). - Data Cache Miss(unused) -Value = 0, select = 14, mask = 0004. Store Instruction (Data Memory). - Store to local memory i.e. DataRAM, InstRAM -Value = 0, select = 14, mask = 0008. Store Instruction (Data Memory). - PIF Store -Value = 0, select = 17, mask = 0001. Store Instruction (Data Memory). - Data Cache Hit (unused) -Value = 0, select = 17, mask = 0002. Store Instruction (Data Memory). - Data Cache Miss (unused) -Value = 0, select = 17, mask = 0004. Store Instruction (Data Memory). - Store to local memory i.e. DataRAM, InstRAM -Value = 0, select = 17, mask = 0008. Store Instruction (Data Memory). - PIF Store -Value = 0, select = 12, mask = 0001. Accesses to Data Memory (Load, Sto -re, S32C1I, ...). - Cache Miss -Value = 0, select = 15, mask = 0001. Accesses to Data Memory (Load, Sto -re, S32C1I, ...). - Cache Miss -Value = 0, select = 18, mask = 0001. Accesses to Data Memory (Load, Sto -re, S32C1I, ...). - Cache Miss -Value = 415, select = 22, mask = 0001. Multiple Load/Store. - 0 stores and 0 loads -Value = 3, select = 22, mask = 0002. Multiple Load/Store. - 0 stores and 1 loads -Value = 0, select = 22, mask = 0004. Multiple Load/Store. - 1 stores and 0 loads -Value = 0, select = 22, mask = 0008. Multiple Load/Store. - 1 stores and 1 loads -Value = 0, select = 22, mask = 0010. Multiple Load/Store. - 0 stores and 2 loads -Value = 0, select = 22, mask = 0020. Multiple Load/Store. - 2 stores and 0 loads -Value = 0, select = 23, mask = 0001. Outbound PIF. - Castout -Value = 0, select = 23, mask = 0002. Outbound PIF. - Prefetch -Value = 0, select = 24, mask = 0001. Inbound PIF. - Data DMA -Value = 0, select = 24, mask = 0002. Inbound PIF. - Instruction DMA -Value = 0, select = 26, mask = 0001. Prefetch. - I prefetch-buffer-lookup hit -Value = 0, select = 26, mask = 0002. Prefetch. - D prefetch-buffer-lookup hit -Value = 0, select = 26, mask = 0004. Prefetch. - I prefetch-buffer-lookup miss -Value = 0, select = 26, mask = 0008. Prefetch. - D prefetch-buffer-lookup miss -Value = 0, select = 26, mask = 0020. Prefetch. - Direct fill to (L1) Data Cache (unused) -Value = 0, select = 27, mask = 0001. iDMA. - active cycles -Value = 0, select = 28, mask = 0001. Length of Instructions. - 16-bit -Value = 0, select = 28, mask = 0002. Length of Instructions. - 24-bit -Value = 0, select = 28, mask = 0004. Length of Instructions. - 32-bit -Value = 0, select = 28, mask = 0008. Length of Instructions. - 40-bit -Value = 0, select = 28, mask = 0010. Length of Instructions. - 48-bit -Value = 0, select = 28, mask = 0020. Length of Instructions. - 56-bit -Value = 0, select = 28, mask = 0040. Length of Instructions. - 64-bit -Value = 0, select = 28, mask = 0080. Length of Instructions. - 72-bit -Value = 0, select = 28, mask = 0100. Length of Instructions. - 80-bit -Value = 0, select = 28, mask = 0200. Length of Instructions. - 88-bit -Value = 0, select = 28, mask = 0400. Length of Instructions. - 96-bit -Value = 0, select = 28, mask = 0800. Length of Instructions. - 104-bit -Value = 0, select = 28, mask = 1000. Length of Instructions. - 112-bit -Value = 0, select = 28, mask = 2000. Length of Instructions. - 120-bit -Value = 0, select = 28, mask = 4000. Length of Instructions. - 128-bit - ``` - -2. Example calls second test. +
Example log output: ``` -I (1588) example: Start test with user defined statistic -Value = 743, select = 0, mask = 0001. Counts cycles. - Amount of cycles -Value = 417, select = 2, mask = 8dff. Successfully Retired Instructions. + I (288) example: Start + I (288) example: Start test with printing all available statistic + Value = 750, select = 0, mask = 0001. Counts cycles. + Amount of cycles + Value = 0, select = 1, mask = 0001. Overflow of counter. + Overflow counter + Value = 0, select = 2, mask = 0001. Successfully Retired Instructions. + + JX instructions + Value = 0, select = 2, mask = 0002. Successfully Retired Instructions. + + CALLXn instructions + Value = 3, select = 2, mask = 0004. Successfully Retired Instructions. + + return instructions (RET, RETW, ...) + Value = 0, select = 2, mask = 0008. Successfully Retired Instructions. + + supervisor return instructions (RFDE, RFE, RFI, RFWO, RFWU) + Value = 100, select = 2, mask = 0010. Successfully Retired Instructions. + + Conditional branch instructions where execution + transfers to the target (aka. taken branch), + or loopgtz/loopnez instr where execution skips + the loop (aka. not-taken loop) + Value = 0, select = 2, mask = 0020. Successfully Retired Instructions. + + J instr + Value = 1, select = 2, mask = 0040. Successfully Retired Instructions. + + CALLn instr + Value = 0, select = 2, mask = 0080. Successfully Retired Instructions. + + Conditional branch instr where execution + falls through (aka. not-taken branch) + Value = 0, select = 2, mask = 0100. Successfully Retired Instructions. + + Loop instr where execution falls into loop (aka. taken loop) + Value = 0, select = 2, mask = 0400. Successfully Retired Instructions. + + Last inst of loop and execution transfers + to LBEG (aka. loopback taken) + Value = 0, select = 2, mask = 0800. Successfully Retired Instructions. + + Last inst of loop and execution falls + through to LEND (aka. loopback fallthrough) + Value = 309, select = 2, mask = 8000. Successfully Retired Instructions. + + Non-branch instr (aka. non-CTI) + Value = 0, select = 3, mask = 0002. Data-related GlobalStall cycles. + Store buffer full stall + Value = 0, select = 3, mask = 0004. Data-related GlobalStall cycles. + Store buffer conflict stall + Value = 0, select = 3, mask = 0008. Data-related GlobalStall cycles. + Data Cache-miss stall (unused) + Value = 0, select = 3, mask = 0010. Data-related GlobalStall cycles. + Data RAM/ROM/XLMI busy stall + Value = 0, select = 3, mask = 0020. Data-related GlobalStall cycles. + Data inbound-PIF request stall (includes s32c1i) + Value = 0, select = 3, mask = 0040. Data-related GlobalStall cycles. + MHT lookup stall + Value = 0, select = 3, mask = 0080. Data-related GlobalStall cycles. + Uncached load stall (included in MHT lookup stall below) + Value = 0, select = 3, mask = 0100. Data-related GlobalStall cycles. + Bank-conflict stall + Value = 0, select = 4, mask = 0001. Instruction-related and Other Glob + alStall cycles. + ICache-miss stall + Value = 0, select = 4, mask = 0002. Instruction-related and Other Glob + alStall cycles. + Instruction RAM/ROM busy stall + Value = 0, select = 4, mask = 0004. Instruction-related and Other Glob + alStall cycles. + Instruction RAM inbound-PIF request stall + Value = 0, select = 4, mask = 0008. Instruction-related and Other Glob + alStall cycles. + TIE port stall + Value = 0, select = 4, mask = 0010. Instruction-related and Other Glob + alStall cycles. + External RunStall signal status + Value = 0, select = 4, mask = 0020. Instruction-related and Other Glob + alStall cycles. + Uncached fetch stall + Value = 1, select = 4, mask = 0040. Instruction-related and Other Glob + alStall cycles. + FastL32R stall + Value = 0, select = 4, mask = 0080. Instruction-related and Other Glob + alStall cycles. + Iterative multiply stall + Value = 0, select = 4, mask = 0100. Instruction-related and Other Glob + alStall cycles. + Iterative divide stall + Value = 0, select = 5, mask = 0001. Exceptions and Pipeline Replays. + Other Pipeline Replay (i.e. excludes cache miss etc.) + Value = 0, select = 5, mask = 0002. Exceptions and Pipeline Replays. + Level-1 interrupt + Value = 0, select = 5, mask = 0004. Exceptions and Pipeline Replays. + Greater-than-level-1 interrupt + Value = 0, select = 5, mask = 0008. Exceptions and Pipeline Replays. + Debug exception + Value = 0, select = 5, mask = 0010. Exceptions and Pipeline Replays. + NMI + Value = 0, select = 5, mask = 0020. Exceptions and Pipeline Replays. + Window exception + Value = 0, select = 5, mask = 0040. Exceptions and Pipeline Replays. + Allocate exception + Value = 0, select = 5, mask = 0080. Exceptions and Pipeline Replays. + Other exceptions + Value = 0, select = 5, mask = 0100. Exceptions and Pipeline Replays. + HW-corrected memory error + Value = 0, select = 6, mask = 0001. Hold and Other Bubble cycles. + Processor domain PSO bubble + Value = 0, select = 6, mask = 0004. Hold and Other Bubble cycles. + R hold caused by Data Cache miss(unused) + Value = 0, select = 6, mask = 0008. Hold and Other Bubble cycles. + R hold caused by Store release + Value = 0, select = 6, mask = 0010. Hold and Other Bubble cycles. + R hold caused by register dependency + Value = 0, select = 6, mask = 0020. Hold and Other Bubble cycles. + R hold caused by MEMW, EXTW or EXCW + Value = 0, select = 6, mask = 0040. Hold and Other Bubble cycles. + R hold caused by Halt instruction (TX only) + Value = 322, select = 6, mask = 0080. Hold and Other Bubble cycles. + CTI bubble (e.g. branch delay slot) + Value = 0, select = 6, mask = 0100. Hold and Other Bubble cycles. + WAITI bubble i.e. a cycle spent in WaitI power down mode. + Value = 417, select = 7, mask = 0001. Instruction TLB Accesses (per inst + ruction retiring). + ITLB Hit + Value = 0, select = 7, mask = 0002. Instruction TLB Accesses (per inst + ruction retiring). + Replay of instruction due to ITLB miss + Value = 0, select = 7, mask = 0004. Instruction TLB Accesses (per inst + ruction retiring). + HW-assisted TLB Refill completes + Value = 0, select = 7, mask = 0008. Instruction TLB Accesses (per inst + ruction retiring). + ITLB Miss Exception + Value = 0, select = 8, mask = 0001. Instruction Memory Accesses (per i + nstruction retiring). + Instruction Cache Hit + Value = 0, select = 8, mask = 0002. Instruction Memory Accesses (per i + nstruction retiring). + Instruction Cache Miss + Value = 420, select = 8, mask = 0004. Instruction Memory Accesses (per i + nstruction retiring). + All InstRAM or InstROM accesses + Value = 0, select = 8, mask = 0008. Instruction Memory Accesses (per i + nstruction retiring). + Bypass (i.e. uncached) fetch + Value = 3, select = 9, mask = 0001. Data TLB Accesses. + DTLB Hit + Value = 0, select = 9, mask = 0002. Data TLB Accesses. + Replay of load/store due to DTLB miss + Value = 0, select = 9, mask = 0004. Data TLB Accesses. + HW-assisted TLB Refill completes + Value = 0, select = 9, mask = 0008. Data TLB Accesses. + DTLB Miss Exception + Value = 0, select = 10, mask = 0001. Load Instruction (Data Memory). + Data Cache Hit(unused) + Value = 0, select = 10, mask = 0002. Load Instruction (Data Memory). + Data Cache Miss(unused) + Value = 3, select = 10, mask = 0004. Load Instruction (Data Memory). + Load from local memory i.e. DataRAM, DataROM, InstRAM, InstROM + + Value = 0, select = 10, mask = 0008. Load Instruction (Data Memory). + Bypass (i.e. uncached) load + Value = 0, select = 13, mask = 0001. Load Instruction (Data Memory). + Data Cache Hit(unused) + Value = 0, select = 13, mask = 0002. Load Instruction (Data Memory). + Data Cache Miss(unused) + Value = 0, select = 13, mask = 0004. Load Instruction (Data Memory). + Load from local memory i.e. DataRAM, DataROM, InstRAM, InstROM + + Value = 0, select = 13, mask = 0008. Load Instruction (Data Memory). + Bypass (i.e. uncached) load + Value = 0, select = 16, mask = 0001. Load Instruction (Data Memory). + Data Cache Hit (unused) + Value = 0, select = 16, mask = 0002. Load Instruction (Data Memory). + Data Cache Miss (unused) + Value = 0, select = 16, mask = 0004. Load Instruction (Data Memory). + Load from local memory i.e. DataRAM, DataROM, InstRAM, InstROM + + Value = 0, select = 16, mask = 0008. Load Instruction (Data Memory). + Bypass (i.e. uncached) load + Value = 0, select = 11, mask = 0001. Store Instruction (Data Memory). + Data Cache Hit (unused) + Value = 0, select = 11, mask = 0002. Store Instruction (Data Memory). + Data Cache Miss (unused) + Value = 0, select = 11, mask = 0004. Store Instruction (Data Memory). + Store to local memory i.e. DataRAM, InstRAM + Value = 0, select = 11, mask = 0008. Store Instruction (Data Memory). + PIF Store + Value = 0, select = 14, mask = 0001. Store Instruction (Data Memory). + Data Cache Hit(unused) + Value = 0, select = 14, mask = 0002. Store Instruction (Data Memory). + Data Cache Miss(unused) + Value = 0, select = 14, mask = 0004. Store Instruction (Data Memory). + Store to local memory i.e. DataRAM, InstRAM + Value = 0, select = 14, mask = 0008. Store Instruction (Data Memory). + PIF Store + Value = 0, select = 17, mask = 0001. Store Instruction (Data Memory). + Data Cache Hit (unused) + Value = 0, select = 17, mask = 0002. Store Instruction (Data Memory). + Data Cache Miss (unused) + Value = 0, select = 17, mask = 0004. Store Instruction (Data Memory). + Store to local memory i.e. DataRAM, InstRAM + Value = 0, select = 17, mask = 0008. Store Instruction (Data Memory). + PIF Store + Value = 0, select = 12, mask = 0001. Accesses to Data Memory (Load, Sto + re, S32C1I, ...). + Cache Miss + Value = 0, select = 15, mask = 0001. Accesses to Data Memory (Load, Sto + re, S32C1I, ...). + Cache Miss + Value = 0, select = 18, mask = 0001. Accesses to Data Memory (Load, Sto + re, S32C1I, ...). + Cache Miss + Value = 415, select = 22, mask = 0001. Multiple Load/Store. + 0 stores and 0 loads + Value = 3, select = 22, mask = 0002. Multiple Load/Store. + 0 stores and 1 loads + Value = 0, select = 22, mask = 0004. Multiple Load/Store. + 1 stores and 0 loads + Value = 0, select = 22, mask = 0008. Multiple Load/Store. + 1 stores and 1 loads + Value = 0, select = 22, mask = 0010. Multiple Load/Store. + 0 stores and 2 loads + Value = 0, select = 22, mask = 0020. Multiple Load/Store. + 2 stores and 0 loads + Value = 0, select = 23, mask = 0001. Outbound PIF. + Castout + Value = 0, select = 23, mask = 0002. Outbound PIF. + Prefetch + Value = 0, select = 24, mask = 0001. Inbound PIF. + Data DMA + Value = 0, select = 24, mask = 0002. Inbound PIF. + Instruction DMA + Value = 0, select = 26, mask = 0001. Prefetch. + I prefetch-buffer-lookup hit + Value = 0, select = 26, mask = 0002. Prefetch. + D prefetch-buffer-lookup hit + Value = 0, select = 26, mask = 0004. Prefetch. + I prefetch-buffer-lookup miss + Value = 0, select = 26, mask = 0008. Prefetch. + D prefetch-buffer-lookup miss + Value = 0, select = 26, mask = 0020. Prefetch. + Direct fill to (L1) Data Cache (unused) + Value = 0, select = 27, mask = 0001. iDMA. + active cycles + Value = 0, select = 28, mask = 0001. Length of Instructions. + 16-bit + Value = 0, select = 28, mask = 0002. Length of Instructions. + 24-bit + Value = 0, select = 28, mask = 0004. Length of Instructions. + 32-bit + Value = 0, select = 28, mask = 0008. Length of Instructions. + 40-bit + Value = 0, select = 28, mask = 0010. Length of Instructions. + 48-bit + Value = 0, select = 28, mask = 0020. Length of Instructions. + 56-bit + Value = 0, select = 28, mask = 0040. Length of Instructions. + 64-bit + Value = 0, select = 28, mask = 0080. Length of Instructions. + 72-bit + Value = 0, select = 28, mask = 0100. Length of Instructions. + 80-bit + Value = 0, select = 28, mask = 0200. Length of Instructions. + 88-bit + Value = 0, select = 28, mask = 0400. Length of Instructions. + 96-bit + Value = 0, select = 28, mask = 0800. Length of Instructions. + 104-bit + Value = 0, select = 28, mask = 1000. Length of Instructions. + 112-bit + Value = 0, select = 28, mask = 2000. Length of Instructions. + 120-bit + Value = 0, select = 28, mask = 4000. Length of Instructions. + 128-bit + ``` +
- JX instructions - CALLXn instructions - return instructions (RET, RETW, ...) - supervisor return instructions (RFDE, RFE, RFI, RFWO, RFWU) - Conditional branch instructions where execution - transfers to the target (aka. taken branch), - or loopgtz/loopnez instr where execution skips - the loop (aka. not-taken loop) - J instr - CALLn instr - Conditional branch instr where execution - falls through (aka. not-taken branch) - Loop instr where execution falls into loop (aka. taken loop) - Last inst of loop and execution transfers - to LBEG (aka. loopback taken) - Last inst of loop and execution falls - through to LEND (aka. loopback fallthrough) - Non-branch instr (aka. non-CTI) -Value = 3, select = 10, mask = 0004. Load Instruction (Data Memory). - Load from local memory i.e. DataRAM, DataROM, InstRAM, InstROM +2. Example calls the second test, which runs the same function under tests. This time, a user-provided list of metrics is measured. -Value = 0, select = 11, mask = 0004. Store Instruction (Data Memory). - Store to local memory i.e. DataRAM, InstRAM -Value = 321, select = 6, mask = 01ed. Hold and Other Bubble cycles. - Processor domain PSO bubble - R hold caused by Data Cache miss(unused) - R hold caused by Store release - R hold caused by MEMW, EXTW or EXCW - R hold caused by Halt instruction (TX only) - CTI bubble (e.g. branch delay slot) - WAITI bubble i.e. a cycle spent in WaitI power down mode. -Value = 0, select = 6, mask = 0010. Hold and Other Bubble cycles. - R hold caused by register dependency -Value = 0, select = 1, mask = 0001. Overflow of counter. - Overflow counter -I (1788) example: The End +
Example log output: ``` + I (1588) example: Start test with user defined statistic + Value = 743, select = 0, mask = 0001. Counts cycles. + Amount of cycles + Value = 417, select = 2, mask = 8dff. Successfully Retired Instructions. + + JX instructions + CALLXn instructions + return instructions (RET, RETW, ...) + supervisor return instructions (RFDE, RFE, RFI, RFWO, RFWU) + Conditional branch instructions where execution + transfers to the target (aka. taken branch), + or loopgtz/loopnez instr where execution skips + the loop (aka. not-taken loop) + J instr + CALLn instr + Conditional branch instr where execution + falls through (aka. not-taken branch) + Loop instr where execution falls into loop (aka. taken loop) + Last inst of loop and execution transfers + to LBEG (aka. loopback taken) + Last inst of loop and execution falls + through to LEND (aka. loopback fallthrough) + Non-branch instr (aka. non-CTI) + Value = 3, select = 10, mask = 0004. Load Instruction (Data Memory). + Load from local memory i.e. DataRAM, DataROM, InstRAM, InstROM + + Value = 0, select = 11, mask = 0004. Store Instruction (Data Memory). + Store to local memory i.e. DataRAM, InstRAM + Value = 321, select = 6, mask = 01ed. Hold and Other Bubble cycles. + Processor domain PSO bubble + R hold caused by Data Cache miss(unused) + R hold caused by Store release + R hold caused by MEMW, EXTW or EXCW + R hold caused by Halt instruction (TX only) + CTI bubble (e.g. branch delay slot) + WAITI bubble i.e. a cycle spent in WaitI power down mode. + Value = 0, select = 6, mask = 0010. Hold and Other Bubble cycles. + R hold caused by register dependency + Value = 0, select = 1, mask = 0001. Overflow of counter. + Overflow counter + I (1788) example: The End + + ``` +