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.11-rc0`_ 10- `TFTF v2.11-rc0`_ 11- SCP/MCP `Prebuilt Images`_ 12 13Please see the Runtime Instrumentation :ref:`Testing Methodology 14<Runtime Instrumentation Methodology>` page for more details. 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 parallel (v2.11) 96 97 +---------+------+----------------+--------+----------------+ 98 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 99 +---------+------+----------------+--------+----------------+ 100 | 0 | 0 | 3.0 (+41.51%) | 23.14 | 1.2 (+185.71%) | 101 +---------+------+----------------+--------+----------------+ 102 | 0 | 0 | 4.6 | 35.86 | 0.3 | 103 +---------+------+----------------+--------+----------------+ 104 | 1 | 0 | 3.68 (+33.33%) | 33.36 | 0.3 | 105 +---------+------+----------------+--------+----------------+ 106 | 1 | 0 | 3.7 (+40.15%) | 38.1 | 0.28 | 107 +---------+------+----------------+--------+----------------+ 108 109.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 110 parallel (v2.10) 111 112 +---------+------+----------------+------------------+-----------------+ 113 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 114 +---------+------+----------------+------------------+-----------------+ 115 | 0 | 0 | 2.12 | 23.94 (+137.50%) | 0.42 (-47.50%) | 116 +---------+------+----------------+------------------+-----------------+ 117 | 0 | 0 | 3.52 | 42.08 (+164.32%) | 0.26 (+62.50%) | 118 +---------+------+----------------+------------------+-----------------+ 119 | 1 | 0 | 2.76 (-25.00%) | 38.3 (+195.52%) | 0.26 (+62.50%) | 120 +---------+------+----------------+------------------+-----------------+ 121 | 1 | 0 | 2.64 | 44.56 (+139.83%) | 0.36 (+100.00%) | 122 +---------+------+----------------+------------------+-----------------+ 123 124.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in serial (v2.11) 125 126 +---------+------+-----------+--------+-------------+ 127 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 128 +---------+------+-----------+--------+-------------+ 129 | 0 | 0 | 1.7 | 22.46 | 0.3 | 130 +---------+------+-----------+--------+-------------+ 131 | 0 | 0 | 2.28 | 22.5 | 0.3 | 132 +---------+------+-----------+--------+-------------+ 133 | 1 | 0 | 2.14 | 21.5 | 0.32 | 134 +---------+------+-----------+--------+-------------+ 135 | 1 | 0 | 2.24 | 22.66 | 0.3 | 136 +---------+------+-----------+--------+-------------+ 137 138.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 139 serial (v2.10) 140 141 +---------+------+-----------+------------------+----------------+ 142 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 143 +---------+------+-----------+------------------+----------------+ 144 | 0 | 0 | 1.74 | 23.7 (+138.91%) | 0.3 | 145 +---------+------+-----------+------------------+----------------+ 146 | 0 | 0 | 2.08 | 23.96 (+128.63%) | 0.26 (-27.78%) | 147 +---------+------+-----------+------------------+----------------+ 148 | 1 | 0 | 1.9 | 23.62 (+143.00%) | 0.28 (+75.00%) | 149 +---------+------+-----------+------------------+----------------+ 150 | 1 | 0 | 2.06 | 23.92 (+129.12%) | 0.26 (+62.50%) | 151 +---------+------+-----------+------------------+----------------+ 152 153``CPU_SUSPEND`` to power level 0 154~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 156.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in parallel (v2.11) 157 158 +---------+------+----------------+--------+-------------+ 159 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 160 +---------+------+----------------+--------+-------------+ 161 | 0 | 0 | 0.94 (-37.33%) | 30.36 | 0.3 | 162 +---------+------+----------------+--------+-------------+ 163 | 0 | 0 | 2.12 | 33.12 | 0.28 | 164 +---------+------+----------------+--------+-------------+ 165 | 1 | 0 | 2.08 | 32.56 | 0.3 | 166 +---------+------+----------------+--------+-------------+ 167 | 1 | 0 | 2.14 | 21.92 | 0.28 | 168 +---------+------+----------------+--------+-------------+ 169 170.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in 171 parallel (v2.10) 172 173 +---------+------+---------------+------------------+----------------+ 174 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 175 +---------+------+---------------+------------------+----------------+ 176 | 0 | 0 | 1.5 (+70.45%) | 35.02 (+184.25%) | 0.24 | 177 +---------+------+---------------+------------------+----------------+ 178 | 0 | 0 | 1.92 | 38.12 (+160.74%) | 0.28 | 179 +---------+------+---------------+------------------+----------------+ 180 | 1 | 0 | 1.88 | 38.1 (+169.45%) | 0.26 (+62.50%) | 181 +---------+------+---------------+------------------+----------------+ 182 | 1 | 0 | 2.04 | 23.1 (+144.70%) | 0.24 | 183 +---------+------+---------------+------------------+----------------+ 184 185.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in serial (v2.11) 186 187 +---------+------+-----------+--------+-------------+ 188 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 189 +---------+------+-----------+--------+-------------+ 190 | 0 | 0 | 1.64 | 21.88 | 0.34 | 191 +---------+------+-----------+--------+-------------+ 192 | 0 | 0 | 2.42 | 21.76 | 0.34 | 193 +---------+------+-----------+--------+-------------+ 194 | 1 | 0 | 2.02 | 21.14 | 0.32 | 195 +---------+------+-----------+--------+-------------+ 196 | 1 | 0 | 2.18 | 22.3 | 0.34 | 197 +---------+------+-----------+--------+-------------+ 198 199.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in serial (v2.10) 200 201 +---------+------+-----------+------------------+-----------------+ 202 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 203 +---------+------+-----------+------------------+-----------------+ 204 | 0 | 0 | 1.52 | 23.08 (+145.53%) | 0.3 | 205 +---------+------+-----------+------------------+-----------------+ 206 | 0 | 0 | 1.98 | 23.68 (+141.63%) | 0.28 (+55.56%) | 207 +---------+------+-----------+------------------+-----------------+ 208 | 1 | 0 | 1.84 | 23.86 (+148.54%) | 0.28 (+100.00%) | 209 +---------+------+-----------+------------------+-----------------+ 210 | 1 | 0 | 1.98 | 23.68 (+142.13%) | 0.28 (+55.56%) | 211 +---------+------+-----------+------------------+-----------------+ 212 213``CPU_OFF`` on all non-lead CPUs 214~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 215 216``CPU_OFF`` on all non-lead CPUs in sequence then, ``CPU_SUSPEND`` on the lead 217core to the deepest power level. 218 219.. table:: ``CPU_OFF`` latencies (µs) on all non-lead CPUs (v2.11) 220 221 +---------+------+-----------+--------+----------------+ 222 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 223 +---------+------+-----------+--------+----------------+ 224 | 0 | 0 | 1.96 | 22.44 | 0.38 | 225 +---------+------+-----------+--------+----------------+ 226 | 0 | 0 | 13.76 | 30.34 | 0.26 | 227 +---------+------+-----------+--------+----------------+ 228 | 1 | 0 | 13.46 | 28.28 | 0.24 | 229 +---------+------+-----------+--------+----------------+ 230 | 1 | 0 | 13.84 | 30.06 | 0.28 (-60.00%) | 231 +---------+------+-----------+--------+----------------+ 232 233.. table:: ``CPU_OFF`` latencies (µs) on all non-lead CPUs (v2.10) 234 235 +---------+------+-----------+------------------+----------------+ 236 | Cluster | Core | Powerdown | Wakeup | Cache Flush | 237 +---------+------+-----------+------------------+----------------+ 238 | 0 | 0 | 1.78 | 23.7 (+138.43%) | 0.3 | 239 +---------+------+-----------+------------------+----------------+ 240 | 0 | 0 | 13.96 | 31.16 (+137.86%) | 0.34 (-32.00%) | 241 +---------+------+-----------+------------------+----------------+ 242 | 1 | 0 | 13.54 | 30.24 (+144.66%) | 0.26 (-38.10%) | 243 +---------+------+-----------+------------------+----------------+ 244 | 1 | 0 | 14.46 | 31.12 (+134.69%) | 0.7 (+34.62%) | 245 +---------+------+-----------+------------------+----------------+ 246 247``CPU_VERSION`` in parallel 248~~~~~~~~~~~~~~~~~~~~~~~~~~~ 249 250.. table:: ``CPU_VERSION`` latency (µs) in parallel on all cores (v2.11) 251 252 +-------------+--------+--------------+ 253 | Cluster | Core | Latency | 254 +-------------+--------+--------------+ 255 | 0 | 0 | 0.12 | 256 +-------------+--------+--------------+ 257 | 0 | 0 | 0.24 | 258 +-------------+--------+--------------+ 259 | 1 | 0 | 0.2 | 260 +-------------+--------+--------------+ 261 | 1 | 0 | 0.26 | 262 +-------------+--------+--------------+ 263 264.. table:: ``CPU_VERSION`` latency (µs) in parallel on all cores (v2.10) 265 266 +----------------------------------------------+ 267 | test_rt_instr_psci_version_parallel (latest) | 268 +-------------+--------+-----------------------+ 269 | Cluster | Core | Latency | 270 +-------------+--------+-----------------------+ 271 | 0 | 0 | 0.14 (+75.00%) | 272 +-------------+--------+-----------------------+ 273 | 0 | 0 | 0.22 | 274 +-------------+--------+-----------------------+ 275 | 1 | 0 | 0.2 | 276 +-------------+--------+-----------------------+ 277 | 1 | 0 | 0.26 | 278 +-------------+--------+-----------------------+ 279 280-------------- 281 282*Copyright (c) 2023-2024, Arm Limited. All rights reserved.* 283 284.. _TF-A v2.11-rc0: https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/refs/tags/v2.11-rc0 285.. _TFTF v2.11-rc0: https://review.trustedfirmware.org/plugins/gitiles/TF-A/tf-a-tests/+/refs/tags/v2.11-rc0 286.. _user guide: https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/n1sdp/user-guide.rst 287.. _Prebuilt Images: https://downloads.trustedfirmware.org/tf-a/css_scp_2.11.0/n1sdp/release/ 288.. _N1SDP: https://developer.arm.com/documentation/101489/latest 289