Lines Matching +full:cpu +full:- +full:capacity
2 CPU capacity bindings
6 1 - Introduction
15 2 - CPU capacity definition
18 CPU capacity is a number that provides the scheduler information about CPUs
19 heterogeneity. Such heterogeneity can come from micro-architectural differences
23 capture a first-order approximation of the relative performance of CPUs.
25 CPU capacities are obtained by running a suitable benchmark. This binding makes
27 final capacity should, however, be:
29 * A "single-threaded" or CPU affine benchmark
30 * Divided by the running frequency of the CPU executing the benchmark
31 * Not subject to dynamic frequency scaling of the CPU
36 CPU capacities are obtained by running the Dhrystone benchmark on each CPU at
43 3 - capacity-dmips-mhz
46 capacity-dmips-mhz is an optional cpu node [1] property: u32 value
47 representing CPU capacity expressed in normalized DMIPS/MHz. At boot time, the
48 maximum frequency available to the cpu is then used to calculate the capacity
51 capacity-dmips-mhz property is all-or-nothing: if it is specified for a cpu
52 node, it has to be specified for every other cpu nodes, or the system will
53 fall back to the default capacity value for every CPU. If cpufreq is not
54 available, final capacities are calculated by directly using capacity-dmips-
58 4 - Examples
61 Example 1 (ARM 64-bit, 6-cpu system, two clusters):
62 The capacities-dmips-mhz or DMIPS/MHz values (scaled to 1024)
64 is done by the operating system based on cluster0@max-freq=1100 and
65 cluster1@max-freq=850, final capacities are 1024 for cluster0 and
69 #address-cells = <2>;
70 #size-cells = <0>;
72 cpu-map {
75 cpu = <&A57_0>;
78 cpu = <&A57_1>;
84 cpu = <&A53_0>;
87 cpu = <&A53_1>;
90 cpu = <&A53_2>;
93 cpu = <&A53_3>;
98 idle-states {
99 entry-method = "psci";
101 CPU_SLEEP_0: cpu-sleep-0 {
102 compatible = "arm,idle-state";
103 arm,psci-suspend-param = <0x0010000>;
104 local-timer-stop;
105 entry-latency-us = <100>;
106 exit-latency-us = <250>;
107 min-residency-us = <150>;
110 CLUSTER_SLEEP_0: cluster-sleep-0 {
111 compatible = "arm,idle-state";
112 arm,psci-suspend-param = <0x1010000>;
113 local-timer-stop;
114 entry-latency-us = <800>;
115 exit-latency-us = <700>;
116 min-residency-us = <2500>;
120 A57_0: cpu@0 {
121 compatible = "arm,cortex-a57";
123 device_type = "cpu";
124 enable-method = "psci";
125 next-level-cache = <&A57_L2>;
127 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
128 capacity-dmips-mhz = <1024>;
131 A57_1: cpu@1 {
132 compatible = "arm,cortex-a57";
134 device_type = "cpu";
135 enable-method = "psci";
136 next-level-cache = <&A57_L2>;
138 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
139 capacity-dmips-mhz = <1024>;
142 A53_0: cpu@100 {
143 compatible = "arm,cortex-a53";
145 device_type = "cpu";
146 enable-method = "psci";
147 next-level-cache = <&A53_L2>;
149 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
150 capacity-dmips-mhz = <578>;
153 A53_1: cpu@101 {
154 compatible = "arm,cortex-a53";
156 device_type = "cpu";
157 enable-method = "psci";
158 next-level-cache = <&A53_L2>;
160 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
161 capacity-dmips-mhz = <578>;
164 A53_2: cpu@102 {
165 compatible = "arm,cortex-a53";
167 device_type = "cpu";
168 enable-method = "psci";
169 next-level-cache = <&A53_L2>;
171 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
172 capacity-dmips-mhz = <578>;
175 A53_3: cpu@103 {
176 compatible = "arm,cortex-a53";
178 device_type = "cpu";
179 enable-method = "psci";
180 next-level-cache = <&A53_L2>;
182 cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
183 capacity-dmips-mhz = <578>;
186 A57_L2: l2-cache0 {
190 A53_L2: l2-cache1 {
195 Example 2 (ARM 32-bit, 4-cpu system, two clusters,
197 capacities-dmips-mhz are scaled w.r.t. 2 (cpu@0 and cpu@1), this means that first
198 cpu@0 and cpu@1 are twice fast than cpu@2 and cpu@3 (at the same frequency)
201 #address-cells = <1>;
202 #size-cells = <0>;
204 cpu0: cpu@0 {
205 device_type = "cpu";
206 compatible = "arm,cortex-a15";
208 capacity-dmips-mhz = <2>;
211 cpu1: cpu@1 {
212 device_type = "cpu";
213 compatible = "arm,cortex-a15";
215 capacity-dmips-mhz = <2>;
218 cpu2: cpu@2 {
219 device_type = "cpu";
220 compatible = "arm,cortex-a15";
222 capacity-dmips-mhz = <1>;
225 cpu3: cpu@3 {
226 device_type = "cpu";
227 compatible = "arm,cortex-a15";
229 capacity-dmips-mhz = <1>;
234 5 - References
237 [1] ARM Linux Kernel documentation - CPUs bindings