Merge branch 'bugfix/perfmon_s3_v4.4' into 'release/v4.4'

perfmon: re-enable example for ESP32-S3, remove warning from the docs (v4.4)

See merge request espressif/esp-idf!17042
This commit is contained in:
Krzysztof Budzynski
2022-02-09 03:28:01 +00:00
2 changed files with 333 additions and 341 deletions

View File

@@ -1,15 +1,7 @@
Performance Monitor Performance Monitor
=================== ===================
.. only:: esp32s3 The Performance Monitor component provides APIs to use {IDF_TARGET_NAME} internal performance counters to profile functions and applications.
.. 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.
Application Example Application Example
------------------- -------------------

View File

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