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
+
+ ```
+