Machine-readable data

November 6, 2020 ยท View on GitHub

pmu

This repository contains JSON descriptions of hardware performance events for Arm cores.

This repository is currently "beta" quality. Arm encourages use and evaluation but the data, and the data format, are subject to change.

Arm welcomes feedback on this repository via the issue tracker.

PMU data schema

The JSON schema is in pmu/pmu-schema.json. Briefly, each JSON file contains a list of events, each event being described by a JSON object:

        {
            "code": 1,
            "name": "L1I_CACHE_REFILL",
            "architectural": false,
            "type": "UEVT",
            "subtype": "REFILL",
            "component": "L1I",
            "event_bits": 1,
            "event_lsb": 0,
            "trace_lsb": 1,
            "description": "Level 1 instruction cache refill"
        },

The "type" field classfies the event:

typemeaning
INSInstruction of a certain type executed
UEVTMicroarchitectural event
CYCLECounts number of cycles during which a condition is true
EXCException of a certain type

For microarchitectural events the "component" field indicates the core component that the event relates to:

component
L1IL1 I-cache
L1DL1 D-cache
L2L2 cache
BPUBranch predictor
L1ITLBL1 instruction TLB
L1DTLBL1 data TLB
BUSCore bus interface

The "subtype" field may be present to classify the event further, e.g. into READ, WRITE, ACCESS and REFILL cache events.

For events exported on the external event bus, and/or to the ETM, the position of the event on the bus is shown.