1Runtime Instrumentation Testing - N1SDP 2======================================= 3 4For this test we used the N1 System Development Platform (`N1SDP`_), which 5contains an SoC consisting of two dual-core Arm N1 clusters. 6 7The following source trees and binaries were used: 8 9- TF-A [`v2.9-rc0-16-g666aec401`_] 10- TFTF [`v2.9-rc0`_] 11- SCP/MCP `Prebuilt Images`_ 12 13Please see the Runtime Instrumentation `Testing Methodology`_ page for more 14details. 15 16Procedure 17--------- 18 19#. Build TFTF with runtime instrumentation enabled: 20 21 .. code:: shell 22 23 make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 24 TESTS=runtime-instrumentation all 25 26#. Build TF-A with the following build options: 27 28 .. code:: shell 29 30 make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 31 ENABLE_RUNTIME_INSTRUMENTATION=1 fiptool all 32 33#. Fetch the SCP firmware images: 34 35 .. code:: shell 36 37 curl --fail --connect-timeout 5 --retry 5 \ 38 -sLS -o build/n1sdp/release/scp_rom.bin \ 39 https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl1.bin 40 curl --fail --connect-timeout 5 \ 41 --retry 5 -sLS -o build/n1sdp/release/scp_ram.bin \ 42 https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl2.bin 43 44#. Fetch the MCP firmware images: 45 46 .. code:: shell 47 48 curl --fail --connect-timeout 5 --retry 5 \ 49 -sLS -o build/n1sdp/release/mcp_rom.bin \ 50 https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl1.bin 51 curl --fail --connect-timeout 5 --retry 5 \ 52 -sLS -o build/n1sdp/release/mcp_ram.bin \ 53 https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl2.bin 54 55#. Using the fiptool, create a new FIP package and append the SCP ram image onto 56 it. 57 58 .. code:: shell 59 60 ./tools/fiptool/fiptool create --blob \ 61 uuid=cfacc2c4-15e8-4668-82be-430a38fad705,file=build/n1sdp/release/bl1.bin \ 62 --scp-fw build/n1sdp/release/scp_ram.bin build/n1sdp/release/scp_fw.bin 63 64#. Append the MCP image to the FIP. 65 66 .. code:: shell 67 68 ./tools/fiptool/fiptool create \ 69 --blob uuid=54464222-a4cf-4bf8-b1b6-cee7dade539e,file=build/n1sdp/release/mcp_ram.bin \ 70 build/n1sdp/release/mcp_fw.bin 71 72#. Then, add TFTF as the Non-Secure workload in the FIP image: 73 74 .. code:: shell 75 76 make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 77 ENABLE_RUNTIME_INSTRUMENTATION=1 SCP_BL2=/dev/null \ 78 BL33=<path/to/tftf.bin> fip 79 80#. Load the following images onto the development board: ``fip.bin``, 81 ``scp_rom.bin``, ``scp_ram.bin``, ``mcp_rom.bin``, and ``mcp_ram.bin``. 82 83.. note:: 84 85 These instructions presume you have a complete firmware stack. The N1SDP 86 `user guide`_ provides a detailed explanation on how to get setup from 87 scratch. 88 89Results 90------- 91 92``CPU_SUSPEND`` to deepest power level 93~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 94 95.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 96 parallel 97 98 +---------+------+-----------+---------+-------------+ 99 | Cluster | Core | Powerdown | Wakekup | Cache Flush | 100 +=========+======+===========+=========+=============+ 101 | 0 | 0 | 3.44 | 10.04 | 0.4 | 102 +---------+------+-----------+---------+-------------+ 103 | 0 | 1 | 4.98 | 12.72 | 0.16 | 104 +---------+------+-----------+---------+-------------+ 105 | 1 | 0 | 3.58 | 15.42 | 0.2 | 106 +---------+------+-----------+---------+-------------+ 107 | 1 | 1 | 5.24 | 17.78 | 0.18 | 108 +---------+------+-----------+---------+-------------+ 109 110.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 111 serial 112 113 +---------+------+-----------+---------+-------------+ 114 | Cluster | Core | Powerdown | Wakekup | Cache Flush | 115 +=========+======+===========+=========+=============+ 116 | 0 | 0 | 1.82 | 9.98 | 0.32 | 117 +---------+------+-----------+---------+-------------+ 118 | 0 | 1 | 1.96 | 9.96 | 0.18 | 119 +---------+------+-----------+---------+-------------+ 120 | 1 | 0 | 2.0 | 10.5 | 0.16 | 121 +---------+------+-----------+---------+-------------+ 122 | 1 | 1 | 2.22 | 10.56 | 0.16 | 123 +---------+------+-----------+---------+-------------+ 124 125``CPU_SUSPEND`` to power level 0 126~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127 128.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in 129 parallel 130 131 +---------+------+-----------+---------+-------------+ 132 | Cluster | Core | Powerdown | Wakekup | Cache Flush | 133 +=========+======+===========+=========+=============+ 134 | 0 | 0 | 1.52 | 11.84 | 0.34 | 135 +---------+------+-----------+---------+-------------+ 136 | 0 | 1 | 1.1 | 13.66 | 0.14 | 137 +---------+------+-----------+---------+-------------+ 138 | 1 | 0 | 2.18 | 9.48 | 0.18 | 139 +---------+------+-----------+---------+-------------+ 140 | 1 | 1 | 2.06 | 14.4 | 0.16 | 141 +---------+------+-----------+---------+-------------+ 142 143.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in serial 144 145 +---------+------+-----------+---------+-------------+ 146 | Cluster | Core | Powerdown | Wakekup | Cache Flush | 147 +=========+======+===========+=========+=============+ 148 | 0 | 0 | 1.54 | 9.34 | 0.3 | 149 +---------+------+-----------+---------+-------------+ 150 | 0 | 1 | 1.88 | 9.5 | 0.16 | 151 +---------+------+-----------+---------+-------------+ 152 | 1 | 0 | 1.86 | 9.86 | 0.2 | 153 +---------+------+-----------+---------+-------------+ 154 | 1 | 1 | 2.02 | 9.64 | 0.18 | 155 +---------+------+-----------+---------+-------------+ 156 157``CPU_OFF`` on all non-lead CPUs 158~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 159 160``CPU_OFF`` on all non-lead CPUs in sequence then, ``CPU_SUSPEND`` on the lead 161core to the deepest power level. 162 163.. table:: ``CPU_OFF`` latencies (µs) on all non-lead CPUs 164 165 +---------+------+-----------+---------+-------------+ 166 | Cluster | Core | Powerdown | Wakekup | Cache Flush | 167 +=========+======+===========+=========+=============+ 168 | 0 | 0 | 1.86 | 9.88 | 0.32 | 169 +---------+------+-----------+---------+-------------+ 170 | 0 | 1 | 21.1 | 12.44 | 0.42 | 171 +---------+------+-----------+---------+-------------+ 172 | 1 | 0 | 21.22 | 13.2 | 0.32 | 173 +---------+------+-----------+---------+-------------+ 174 | 1 | 1 | 21.56 | 13.18 | 0.54 | 175 +---------+------+-----------+---------+-------------+ 176 177``CPU_VERSION`` in parallel 178~~~~~~~~~~~~~~~~~~~~~~~~~~~ 179 180.. table:: ``CPU_VERSION`` latency (µs) in parallel on all cores 181 182 +-------------+--------+--------------+ 183 | Cluster | Core | Latency | 184 +=============+========+==============+ 185 | 0 | 0 | 0.08 | 186 +-------------+--------+--------------+ 187 | 0 | 1 | 0.22 | 188 +-------------+--------+--------------+ 189 | 1 | 0 | 0.28 | 190 +-------------+--------+--------------+ 191 | 1 | 1 | 0.26 | 192 +-------------+--------+--------------+ 193 194-------------- 195 196*Copyright (c) 2023, Arm Limited. All rights reserved.* 197 198.. _v2.9-rc0-16-g666aec401: https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/refs/heads/v2.9-rc0-16-g666aec401 199.. _v2.9-rc0: https://review.trustedfirmware.org/plugins/gitiles/TF-A/tf-a-tests/+/refs/tags/v2.9-rc0 200.. _user guide: https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/n1sdp/user-guide.rst 201.. _Prebuilt Images: https://downloads.trustedfirmware.org/tf-a/css_scp_2.11.0/n1sdp/release/ 202.. _N1SDP: https://developer.arm.com/documentation/101489/latest 203.. _Testing Methodology: ../perf/psci-performance-methodology.html