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