Lines Matching refs:CPU

1 NUMA-Aware Per-CPU Framework
15 CPUs on remote nodes. In TF-A's current implementation, per-CPU data (for
22 node may be insufficient to hold per-CPU data for all CPUs. This constraint
38 traversal. When per-CPU data is centralized on a single node, CPUs on remote
44 To address these challenges, TF-A provides the NUMA-Aware Per-CPU Framework. The
45 framework optimizes the allocation and access of per-CPU objects by letting
52 **allocating**, **defining**, and **accessing** per-CPU data in a NUMA-aware
60 to **allocate** per-CPU global variables and ensure that these objects reside in
61 the local memory of each NUMA node. The figure below illustrates how per-CPU
71 \`.bss\` and \`xlat\` to represent per-CPU data allocation, while
73 per-CPU memory regions.
83 multi-CPU systems known as **false sharing**. This issue arises when multiple
93 :alt: Diagram showing three CPUs (CPU 1, CPU 2, and CPU 3) each with their
95 address 0x1000, CPU 2's cache holds data values D1, D2, D3, and D4
96 representing per-CPU data objects, while CPU 1 and CPU 3 have that
97 cache line marked as invalid. CPU 3 is attempting to read from its own
98 per-CPU data object, triggering a coherence transaction over the
107 - Places all per-CPU variables into a **dedicated, aligned** section
115 The NUMA-Aware Per-CPU Framework provides a set of macros to define and declare
116 per-CPU objects efficiently in multi-node systems.
120 Declares an external per-CPU object so that other translation units can refer
125 Defines a per-CPU object and assigns it to ``PER_CPU_SECTION_NAME`` so the
131 The NUMA-Aware Per-CPU Framework also provides macros to access per-CPU objects
134 - ``PER_CPU_BY_INDEX(NAME, CPU)``
136 Returns a pointer to the per-CPU object ``NAME`` for the specified CPU by
141 Returns a pointer to the per-CPU object ``NAME`` for the current CPU.
146 calculation. It accepts the label of the per-CPU object and optional register
147 arguments (destination and clobber) to materialize the per-CPU pointer without
154 requirements in order for the runtime to correctly set up per-CPU sections on
161 makefile to enable NUMA-aware per-CPU support:
165 PLATFORM_NODE_COUNT := 2 # >= 2 enables NUMA-aware per-CPU support
171 2. Provide Per-CPU Section Base Address Data
175 for each node and CPU when implementing ``plat_per_cpu_node_base`` and
185 return ``UINT64_MAX`` to signal that no per-CPU section exists for that node.
190 hooks translate a node or CPU identifier into the base address of the
193 Platform-defined regions that hold remote per-CPU sections must have
195 which requires page alignment for mapped entries. The per-CPU section itself
205 Returns the base address of the ``.per_cpu`` section for the specified CPU.
213 Cleans the entire per-CPU section from the data cache. This ensures that any
214 modifications made to per-CPU data are written back to memory, making them
223 https://www.trustedfirmware.org/docs/NUMA-aware-PER-CPU-framework-18Jul24.pdf