xref: /arm-trusted-firmware/docs/perf/psci-performance-n1sdp.rst (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700SchasingluluRuntime Instrumentation Testing - N1SDP
2*91f16700Schasinglulu=======================================
3*91f16700Schasinglulu
4*91f16700SchasingluluFor this test we used the N1 System Development Platform (`N1SDP`_), which
5*91f16700Schasinglulucontains an SoC consisting of two dual-core Arm N1 clusters.
6*91f16700Schasinglulu
7*91f16700SchasingluluThe following source trees and binaries were used:
8*91f16700Schasinglulu
9*91f16700Schasinglulu- TF-A [`v2.9-rc0-16-g666aec401`_]
10*91f16700Schasinglulu- TFTF [`v2.9-rc0`_]
11*91f16700Schasinglulu- SCP/MCP `Prebuilt Images`_
12*91f16700Schasinglulu
13*91f16700SchasingluluPlease see the Runtime Instrumentation :ref:`Testing Methodology
14*91f16700Schasinglulu<Runtime Instrumentation Methodology>` page for more details.
15*91f16700Schasinglulu
16*91f16700SchasingluluProcedure
17*91f16700Schasinglulu---------
18*91f16700Schasinglulu
19*91f16700Schasinglulu#. Build TFTF with runtime instrumentation enabled:
20*91f16700Schasinglulu
21*91f16700Schasinglulu    .. code:: shell
22*91f16700Schasinglulu
23*91f16700Schasinglulu        make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \
24*91f16700Schasinglulu            TESTS=runtime-instrumentation all
25*91f16700Schasinglulu
26*91f16700Schasinglulu#. Build TF-A with the following build options:
27*91f16700Schasinglulu
28*91f16700Schasinglulu    .. code:: shell
29*91f16700Schasinglulu
30*91f16700Schasinglulu        make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \
31*91f16700Schasinglulu            ENABLE_RUNTIME_INSTRUMENTATION=1 fiptool all
32*91f16700Schasinglulu
33*91f16700Schasinglulu#. Fetch the SCP firmware images:
34*91f16700Schasinglulu
35*91f16700Schasinglulu    .. code:: shell
36*91f16700Schasinglulu
37*91f16700Schasinglulu        curl --fail --connect-timeout 5 --retry 5 \
38*91f16700Schasinglulu            -sLS -o build/n1sdp/release/scp_rom.bin \
39*91f16700Schasinglulu            https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl1.bin
40*91f16700Schasinglulu        curl --fail --connect-timeout 5 \
41*91f16700Schasinglulu            --retry 5 -sLS -o build/n1sdp/release/scp_ram.bin \
42*91f16700Schasinglulu            https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl2.bin
43*91f16700Schasinglulu
44*91f16700Schasinglulu#. Fetch the MCP firmware images:
45*91f16700Schasinglulu
46*91f16700Schasinglulu    .. code:: shell
47*91f16700Schasinglulu
48*91f16700Schasinglulu        curl --fail --connect-timeout 5 --retry 5 \
49*91f16700Schasinglulu            -sLS -o build/n1sdp/release/mcp_rom.bin \
50*91f16700Schasinglulu            https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl1.bin
51*91f16700Schasinglulu        curl --fail --connect-timeout 5 --retry 5 \
52*91f16700Schasinglulu            -sLS -o build/n1sdp/release/mcp_ram.bin \
53*91f16700Schasinglulu            https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl2.bin
54*91f16700Schasinglulu
55*91f16700Schasinglulu#. Using the fiptool, create a new FIP package and append the SCP ram image onto
56*91f16700Schasinglulu   it.
57*91f16700Schasinglulu
58*91f16700Schasinglulu    .. code:: shell
59*91f16700Schasinglulu
60*91f16700Schasinglulu        ./tools/fiptool/fiptool create --blob \
61*91f16700Schasinglulu                uuid=cfacc2c4-15e8-4668-82be-430a38fad705,file=build/n1sdp/release/bl1.bin \
62*91f16700Schasinglulu                --scp-fw build/n1sdp/release/scp_ram.bin build/n1sdp/release/scp_fw.bin
63*91f16700Schasinglulu
64*91f16700Schasinglulu#. Append the MCP image to the FIP.
65*91f16700Schasinglulu
66*91f16700Schasinglulu    .. code:: shell
67*91f16700Schasinglulu
68*91f16700Schasinglulu        ./tools/fiptool/fiptool create \
69*91f16700Schasinglulu            --blob uuid=54464222-a4cf-4bf8-b1b6-cee7dade539e,file=build/n1sdp/release/mcp_ram.bin \
70*91f16700Schasinglulu            build/n1sdp/release/mcp_fw.bin
71*91f16700Schasinglulu
72*91f16700Schasinglulu#. Then, add TFTF as the Non-Secure workload in the FIP image:
73*91f16700Schasinglulu
74*91f16700Schasinglulu    .. code:: shell
75*91f16700Schasinglulu
76*91f16700Schasinglulu        make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \
77*91f16700Schasinglulu            ENABLE_RUNTIME_INSTRUMENTATION=1 SCP_BL2=/dev/null \
78*91f16700Schasinglulu            BL33=<path/to/tftf.bin>  fip
79*91f16700Schasinglulu
80*91f16700Schasinglulu#. Load the following images onto the development board: ``fip.bin``,
81*91f16700Schasinglulu   ``scp_rom.bin``, ``scp_ram.bin``, ``mcp_rom.bin``, and ``mcp_ram.bin``.
82*91f16700Schasinglulu
83*91f16700Schasinglulu.. note::
84*91f16700Schasinglulu
85*91f16700Schasinglulu    These instructions presume you have a complete firmware stack. The N1SDP
86*91f16700Schasinglulu    `user guide`_ provides a detailed explanation on how to get setup from
87*91f16700Schasinglulu    scratch.
88*91f16700Schasinglulu
89*91f16700SchasingluluResults
90*91f16700Schasinglulu-------
91*91f16700Schasinglulu
92*91f16700Schasinglulu``CPU_SUSPEND`` to deepest power level
93*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
94*91f16700Schasinglulu
95*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in
96*91f16700Schasinglulu        parallel (v2.9)
97*91f16700Schasinglulu
98*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
99*91f16700Schasinglulu    | Cluster | Core | Powerdown | Wakeup | Cache Flush |
100*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
101*91f16700Schasinglulu    |    0    |  0   |    2.80   | 10.08  |     0.80    |
102*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
103*91f16700Schasinglulu    |    0    |  0   |    4.14   | 15.92  |     0.16    |
104*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
105*91f16700Schasinglulu    |    1    |  0   |    3.68   | 12.96  |     0.16    |
106*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
107*91f16700Schasinglulu    |    1    |  0   |    3.36   | 18.58  |     0.18    |
108*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
109*91f16700Schasinglulu
110*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in
111*91f16700Schasinglulu        parallel (v2.10)
112*91f16700Schasinglulu
113*91f16700Schasinglulu    +---------+------+----------------+------------------+-----------------+
114*91f16700Schasinglulu    | Cluster | Core |   Powerdown    |      Wakeup      |   Cache Flush   |
115*91f16700Schasinglulu    +---------+------+----------------+------------------+-----------------+
116*91f16700Schasinglulu    |    0    |  0   |      2.12      | 23.94 (+137.50%) |  0.42 (-47.50%) |
117*91f16700Schasinglulu    +---------+------+----------------+------------------+-----------------+
118*91f16700Schasinglulu    |    0    |  0   |      3.52      | 42.08 (+164.32%) |  0.26 (+62.50%) |
119*91f16700Schasinglulu    +---------+------+----------------+------------------+-----------------+
120*91f16700Schasinglulu    |    1    |  0   | 2.76 (-25.00%) | 38.3 (+195.52%)  |  0.26 (+62.50%) |
121*91f16700Schasinglulu    +---------+------+----------------+------------------+-----------------+
122*91f16700Schasinglulu    |    1    |  0   |      2.64      | 44.56 (+139.83%) | 0.36 (+100.00%) |
123*91f16700Schasinglulu    +---------+------+----------------+------------------+-----------------+
124*91f16700Schasinglulu
125*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in
126*91f16700Schasinglulu        serial (v2.9)
127*91f16700Schasinglulu
128*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
129*91f16700Schasinglulu    | Cluster | Core | Powerdown | Wakeup | Cache Flush |
130*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
131*91f16700Schasinglulu    |    0    |  0   |    1.86   |  9.92  |     0.32    |
132*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
133*91f16700Schasinglulu    |    0    |  0   |    2.70   | 10.48  |     0.36    |
134*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
135*91f16700Schasinglulu    |    1    |  0   |    1.78   |  9.72  |     0.16    |
136*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
137*91f16700Schasinglulu    |    1    |  0   |    1.94   | 10.44  |     0.16    |
138*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
139*91f16700Schasinglulu
140*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in
141*91f16700Schasinglulu        serial (v2.10)
142*91f16700Schasinglulu
143*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
144*91f16700Schasinglulu    | Cluster | Core | Powerdown |      Wakeup      |  Cache Flush   |
145*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
146*91f16700Schasinglulu    |    0    |  0   |    1.74   | 23.7 (+138.91%)  |      0.3       |
147*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
148*91f16700Schasinglulu    |    0    |  0   |    2.08   | 23.96 (+128.63%) | 0.26 (-27.78%) |
149*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
150*91f16700Schasinglulu    |    1    |  0   |    1.9    | 23.62 (+143.00%) | 0.28 (+75.00%) |
151*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
152*91f16700Schasinglulu    |    1    |  0   |    2.06   | 23.92 (+129.12%) | 0.26 (+62.50%) |
153*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
154*91f16700Schasinglulu
155*91f16700Schasinglulu``CPU_SUSPEND`` to power level 0
156*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
157*91f16700Schasinglulu
158*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in
159*91f16700Schasinglulu        parallel (v2.9)
160*91f16700Schasinglulu
161*91f16700Schasinglulu    +---------------------------------------------------+
162*91f16700Schasinglulu    |          test_rt_instr_cpu_susp_parallel          |
163*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
164*91f16700Schasinglulu    | Cluster | Core | Powerdown | Wakeup | Cache Flush |
165*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
166*91f16700Schasinglulu    |    0    |  0   |    0.88   | 12.32  |     0.26    |
167*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
168*91f16700Schasinglulu    |    0    |  0   |    2.12   | 14.62  |     0.26    |
169*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
170*91f16700Schasinglulu    |    1    |  0   |    1.86   | 14.14  |     0.16    |
171*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
172*91f16700Schasinglulu    |    1    |  0   |    1.92   |  9.44  |     0.18    |
173*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
174*91f16700Schasinglulu
175*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in
176*91f16700Schasinglulu        parallel (v2.10)
177*91f16700Schasinglulu
178*91f16700Schasinglulu    +---------+------+---------------+------------------+----------------+
179*91f16700Schasinglulu    | Cluster | Core |   Powerdown   |      Wakeup      |  Cache Flush   |
180*91f16700Schasinglulu    +---------+------+---------------+------------------+----------------+
181*91f16700Schasinglulu    |    0    |  0   | 1.5 (+70.45%) | 35.02 (+184.25%) |      0.24      |
182*91f16700Schasinglulu    +---------+------+---------------+------------------+----------------+
183*91f16700Schasinglulu    |    0    |  0   |      1.92     | 38.12 (+160.74%) |      0.28      |
184*91f16700Schasinglulu    +---------+------+---------------+------------------+----------------+
185*91f16700Schasinglulu    |    1    |  0   |      1.88     | 38.1 (+169.45%)  | 0.26 (+62.50%) |
186*91f16700Schasinglulu    +---------+------+---------------+------------------+----------------+
187*91f16700Schasinglulu    |    1    |  0   |      2.04     | 23.1 (+144.70%)  |      0.24      |
188*91f16700Schasinglulu    +---------+------+---------------+------------------+----------------+
189*91f16700Schasinglulu
190*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in serial (v2.9)
191*91f16700Schasinglulu
192*91f16700Schasinglulu    +---------------------------------------------------+
193*91f16700Schasinglulu    |           test_rt_instr_cpu_susp_serial           |
194*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
195*91f16700Schasinglulu    | Cluster | Core | Powerdown | Wakeup | Cache Flush |
196*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
197*91f16700Schasinglulu    |    0    |  0   |    1.52   |  9.40  |     0.30    |
198*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
199*91f16700Schasinglulu    |    0    |  0   |    1.92   |  9.80  |     0.18    |
200*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
201*91f16700Schasinglulu    |    1    |  0   |    2.20   |  9.60  |     0.14    |
202*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
203*91f16700Schasinglulu    |    1    |  0   |    1.82   |  9.78  |     0.18    |
204*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
205*91f16700Schasinglulu
206*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in serial (v2.10)
207*91f16700Schasinglulu
208*91f16700Schasinglulu    +---------+------+-----------+------------------+-----------------+
209*91f16700Schasinglulu    | Cluster | Core | Powerdown |      Wakeup      |   Cache Flush   |
210*91f16700Schasinglulu    +---------+------+-----------+------------------+-----------------+
211*91f16700Schasinglulu    |    0    |  0   |    1.52   | 23.08 (+145.53%) |       0.3       |
212*91f16700Schasinglulu    +---------+------+-----------+------------------+-----------------+
213*91f16700Schasinglulu    |    0    |  0   |    1.98   | 23.68 (+141.63%) |  0.28 (+55.56%) |
214*91f16700Schasinglulu    +---------+------+-----------+------------------+-----------------+
215*91f16700Schasinglulu    |    1    |  0   |    1.84   | 23.86 (+148.54%) | 0.28 (+100.00%) |
216*91f16700Schasinglulu    +---------+------+-----------+------------------+-----------------+
217*91f16700Schasinglulu    |    1    |  0   |    1.98   | 23.68 (+142.13%) |  0.28 (+55.56%) |
218*91f16700Schasinglulu    +---------+------+-----------+------------------+-----------------+
219*91f16700Schasinglulu
220*91f16700Schasinglulu``CPU_OFF`` on all non-lead CPUs
221*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
222*91f16700Schasinglulu
223*91f16700Schasinglulu``CPU_OFF`` on all non-lead CPUs in sequence then, ``CPU_SUSPEND`` on the lead
224*91f16700Schasinglulucore to the deepest power level.
225*91f16700Schasinglulu
226*91f16700Schasinglulu.. table:: ``CPU_OFF`` latencies (µs) on all non-lead CPUs (v2.9)
227*91f16700Schasinglulu
228*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
229*91f16700Schasinglulu    | Cluster | Core | Powerdown | Wakeup | Cache Flush |
230*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
231*91f16700Schasinglulu    |    0    |  0   |    1.84   |  9.94  |     0.32    |
232*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
233*91f16700Schasinglulu    |    0    |  0   |   14.20   | 13.10  |     0.50    |
234*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
235*91f16700Schasinglulu    |    1    |  0   |   13.88   | 12.36  |     0.42    |
236*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
237*91f16700Schasinglulu    |    1    |  0   |   14.40   | 13.26  |     0.52    |
238*91f16700Schasinglulu    +---------+------+-----------+--------+-------------+
239*91f16700Schasinglulu
240*91f16700Schasinglulu.. table:: ``CPU_OFF`` latencies (µs) on all non-lead CPUs (v2.10)
241*91f16700Schasinglulu
242*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
243*91f16700Schasinglulu    | Cluster | Core | Powerdown |      Wakeup      |  Cache Flush   |
244*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
245*91f16700Schasinglulu    |    0    |  0   |    1.78   | 23.7 (+138.43%)  |      0.3       |
246*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
247*91f16700Schasinglulu    |    0    |  0   |   13.96   | 31.16 (+137.86%) | 0.34 (-32.00%) |
248*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
249*91f16700Schasinglulu    |    1    |  0   |   13.54   | 30.24 (+144.66%) | 0.26 (-38.10%) |
250*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
251*91f16700Schasinglulu    |    1    |  0   |   14.46   | 31.12 (+134.69%) | 0.7 (+34.62%)  |
252*91f16700Schasinglulu    +---------+------+-----------+------------------+----------------+
253*91f16700Schasinglulu
254*91f16700Schasinglulu``CPU_VERSION`` in parallel
255*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~
256*91f16700Schasinglulu
257*91f16700Schasinglulu.. table:: ``CPU_VERSION`` latency (µs) in parallel on all cores (v2.9)
258*91f16700Schasinglulu
259*91f16700Schasinglulu    +------------------------------------+
260*91f16700Schasinglulu    | test_rt_instr_psci_version_parallel|
261*91f16700Schasinglulu    +-------------+--------+-------------+
262*91f16700Schasinglulu    |   Cluster   |  Core  |   Latency   |
263*91f16700Schasinglulu    +-------------+--------+-------------+
264*91f16700Schasinglulu    |      0      |   0    |     0.08    |
265*91f16700Schasinglulu    +-------------+--------+-------------+
266*91f16700Schasinglulu    |      0      |   0    |     0.26    |
267*91f16700Schasinglulu    +-------------+--------+-------------+
268*91f16700Schasinglulu    |      1      |   0    |     0.20    |
269*91f16700Schasinglulu    +-------------+--------+-------------+
270*91f16700Schasinglulu    |      1      |   0    |     0.26    |
271*91f16700Schasinglulu    +-------------+--------+-------------+
272*91f16700Schasinglulu
273*91f16700Schasinglulu.. table:: ``CPU_VERSION`` latency (µs) in parallel on all cores (v2.10)
274*91f16700Schasinglulu
275*91f16700Schasinglulu    +----------------------------------------------+
276*91f16700Schasinglulu    | test_rt_instr_psci_version_parallel (latest) |
277*91f16700Schasinglulu    +-------------+--------+-----------------------+
278*91f16700Schasinglulu    |   Cluster   |  Core  |        Latency        |
279*91f16700Schasinglulu    +-------------+--------+-----------------------+
280*91f16700Schasinglulu    |      0      |   0    |     0.14 (+75.00%)    |
281*91f16700Schasinglulu    +-------------+--------+-----------------------+
282*91f16700Schasinglulu    |      0      |   0    |          0.22         |
283*91f16700Schasinglulu    +-------------+--------+-----------------------+
284*91f16700Schasinglulu    |      1      |   0    |          0.2          |
285*91f16700Schasinglulu    +-------------+--------+-----------------------+
286*91f16700Schasinglulu    |      1      |   0    |          0.26         |
287*91f16700Schasinglulu    +-------------+--------+-----------------------+
288*91f16700Schasinglulu
289*91f16700Schasinglulu--------------
290*91f16700Schasinglulu
291*91f16700Schasinglulu*Copyright (c) 2023, Arm Limited. All rights reserved.*
292*91f16700Schasinglulu
293*91f16700Schasinglulu.. _v2.9-rc0-16-g666aec401: https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/refs/heads/v2.9-rc0-16-g666aec401
294*91f16700Schasinglulu.. _v2.9-rc0: https://review.trustedfirmware.org/plugins/gitiles/TF-A/tf-a-tests/+/refs/tags/v2.9-rc0
295*91f16700Schasinglulu.. _user guide: https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/n1sdp/user-guide.rst
296*91f16700Schasinglulu.. _Prebuilt Images:  https://downloads.trustedfirmware.org/tf-a/css_scp_2.11.0/n1sdp/release/
297*91f16700Schasinglulu.. _N1SDP: https://developer.arm.com/documentation/101489/latest
298