Runtime Telemetry
Chip Management Firmware reserves a region of memory for Metal runtime use.
The buffer is zero-initialized at boot, 32-byte aligned, and located in CSM
(the tensix_sm / ARC memory space, i.e. within NOC0 8-0).
Scratch Registers
As per the scratch register definitions in status_reg.h (SCRATCH_RAM[0..63]):
Register |
SCRATCH_RAM index |
Description |
|---|---|---|
|
22 ( |
CSM address of the runtime telemetry buffer |
|
23 ( |
Size of the runtime telemetry buffer in bytes |
Both values are written once during init and do not change until the next chip reset. For a given CMFW build, the size is fixed at compile time and the address is fixed at link time.
Procedure to Access Runtime Telemetry
Via NOC Access to ARC Memory
Read
reset_unit.SCRATCH_RAM[23]to obtain the buffer size in bytes. If the size is 0, assume the buffer is unavailable and stop. Older CMFW builds leave this register at 0.Read
reset_unit.SCRATCH_RAM[22]to obtain the tile-local address of the buffer.Read or write the buffer via NOC using the address from step 2 and the size from step 1.
Firmware Details
The buffer is placed in the
.bss.runtime_telemetrylinker section and is cleared with the rest of BSS during boot.Size is controlled by
CONFIG_TT_BH_ARC_RUNTIME_TELEMETRY_SIZE(default 1024 bytes). The value must be a positive multiple of 32.Address and size are published via
SYS_INIT_APPinruntime_telemetry.c.