PSCI Performance Measurement
============================

TF-A provides two instrumentation tools for performing analysis of the PSCI
implementation:

* PSCI STAT
* Runtime Instrumentation

This page explains how they may be enabled and used to perform all varieties of
analysis.

Performance Measurement Framework
---------------------------------

The Performance Measurement Framework `PMF`_ is a framework that provides
mechanisms for collecting and retrieving timestamps at runtime from the
Performance Measurement Unit (`PMU`_). The PMU is a generalized abstraction for
accessing CPU hardware registers used to measure hardware events. This means,
for instance, that the PMU might be used to place instrumentation points at
logical locations in code for tracing purposes.

TF-A utilises the PMF as a backend for the two instrumentation services it
provides--PSCI Statistics and Runtime Instrumentation. The PMF is used by
these services to facilitate collection and retrieval of timestamps.  For
instance, the PSCI Statistics service registers the PMF service
``psci_svc`` to track its residency statistics.

This is reserved a unique ID, name, and space in memory by the PMF. The
framework provides a convenient interface for PSCI Statistics to retrieve
values from ``psci_svc`` at runtime.  Alternatively, the service may be
configured such that the PMF dumps those values to the console. A platform may
choose to expose SMCs that allow retrieval of these timestamps from the
service.

This feature is enabled with the Boolean flag ``ENABLE_PMF``.

PSCI Statistics
---------------

PSCI Statistics is a runtime service that provides residency statistics for
power states used by the platform. The service tracks residency time and
entry count. Residency time is the total time spent in a particular power
state by a PE. The entry count is the number of times the PE has entered
the power state. PSCI Statistics implements the optional functions
``PSCI_STAT_RESIDENCY`` and ``PSCI_STAT_COUNT`` from the `PSCI`_
specification.


.. c:macro:: PSCI_STAT_RESIDENCY

    :param target_cpu: Contains copy of affinity fields in the MPIDR register
      for identifying the target core (See section 5.1.4 of `PSCI`_
      specifications for more details).
    :param power_state: identifier for a specific local
      state. Generally, this parameter takes the same form as the power_state
      parameter described for CPU_SUSPEND in section 5.4.2.

    :returns: Time spent in ``power_state``, in microseconds, by ``target_cpu``
      and the highest level expressed in ``power_state``.


.. c:macro:: PSCI_STAT_COUNT

    :param target_cpu: follows the same format as ``PSCI_STAT_RESIDENCY``.
    :param power_state: follows the same format as ``PSCI_STAT_RESIDENCY``.

    :returns: Number of times the state expressed in ``power_state`` has been
      used by ``target_cpu`` and the highest level expressed in
      ``power_state``.

The implementation provides residency statistics only for low power states,
and does this regardless of the entry mechanism into those states. The
statistics it collects are set to 0 during shutdown or reset.

PSCI Statistics is enabled with the Boolean build flag
``ENABLE_PSCI_STAT``.  All Arm platforms utilise the PMF unless another
collection backend is provided (``ENABLE_PMF`` is implicitly enabled).

Runtime Instrumentation
-----------------------

The Runtime Instrumentation Service is an instrumentation tool that wraps
around the PMF to provide timestamp data. Although the service is not
restricted to PSCI, it is used primarily in TF-A to quantify the total time
spent in the PSCI implementation. The tool can be used to instrument other
components in TF-A as well. It is enabled with the Boolean flag
``ENABLE_RUNTIME_INSTRUMENTATION``, and as with PSCI STAT, requires PMF to
be enabled.

In PSCI, this service provides instrumentation points in the
following code paths:

* Entry into the PSCI SMC handler
* Exit from the PSCI SMC handler
* Entry to low power state
* Exit from low power state
* Entry into cache maintenance operations in PSCI
* Exit from cache maintenance operations in PSCI

The service captures the cycle count, which allows for the time spent in the
implementation to be calculated, given the frequency counter.

PSCI SMC Handler Instrumentation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The timestamp during entry into the handler is captured as early as possible
during the runtime exception, prior to entry into the handler itself. All
timestamps are stored in memory for later retrieval. The exit timestamp is
captured after normal return from the PSCI SMC handler, or, if a low power state
was requested, it is captured in the warm boot path.

*Copyright (c) 2023, Arm Limited. All rights reserved.*

.. _PMF: ../design/firmware-design.html#performance-measurement-framework
.. _PMU: performance-monitoring-unit.html
.. _PSCI: https://developer.arm.com/documentation/den0022/latest/
