Peter Ulbrich
From Chapter 02, we already know:
Now we examine how operations and data accesses are organized inside the platform.
The familiar sensing pipeline needs both execution units and data delivery.
Where are the operations executed? Where do their operands come from?
Useful processing includes movement, storage, computation, and timely handoff.
First, organize operations and instruction streams, then track contention for shared resources.
| Form | What proceeds concurrently? | Small example |
|---|---|---|
| SIMD | The same operation on several data elements | Add four pixel values |
| VLIW / EPIC | Explicitly scheduled independent operations | Arithmetic and a load |
| Multicore | Several instruction streams or tasks | Control and image analysis |
| FPGA datapath | Spatially instantiated operations and stages | A pipelined filter |
These mechanisms can coexist: each core may itself contain SIMD units.
Marwedel (2021), Sections 3.3.2â3.3.3. A conceptual comparison, not mutually exclusive product classes.
SIMD: single instruction, multiple data. Narrow values share a wide register; examples include SSE and Arm Neon.
Vectorization must preserve overflow, rounding, and reduction semantics.
Marwedel (2021), Section 3.3.2, p.154, Fig.3.24. Lane count is an example, not a universal SIMD width.
VLIW = very long instruction word; EPIC = explicitly parallel instruction set computer. Marwedel (2021), pp.155â156, Fig.3.25. Lower connection is schematic, not a specific register-file topology.
More operations per cycle require more simultaneous register accesses.
Parallel execution creates a data-supply problem inside the processor.
TI C6xxx diagram via Chen (2024); Marwedel (2021), p.156 and Section 3.4.3, p.170.
Small controllers are often sufficient for sensing and control. Complexity follows the workload and system requirements.
A microcontroller can itself be a SoC and multicore. These labels describe different properties.
Generic functional diagrams.
More instruction streams share a finite memory and I/O infrastructure.
Generic teaching model after Marwedel (2021), pp.157â163. Private/shared cache levels and coherence depend on the actual platform.
Possible roles: application processing, time-critical control, and specialized computation.
NXP IMX93IEC, Rev.8, July 2026, Table 1/Fig.2; simplified i.MX9352 overview. Features vary across derivatives. TCM = tightly coupled memory; NPU = neural processing unit.
SMP: one OS instance manages eligible cores together. AMP: separate software instances cooperate explicitly.
Hardware heterogeneity and software organization are different distinctions.
SMP/AMP = symmetric/asymmetric multiprocessing; IPC = interprocessor communication. Marwedel (2021), pp.158â160; Zephyr SMP documentation. Illustrative OS allocation.
\[S(2)=\frac{10\,\mathrm{ms}}{2\,\mathrm{ms}+8\,\mathrm{ms}/2}\approx1.67\]
Latency: time for one result. Throughput: completed results per unit time.
Teaching model: 20% serial work; ideal split of the remainder; no communication, synchronization, or contention cost. This is not an end-to-end timing bound.
Timing depends on hardware state and competing activity.
| Timing source | Mechanism | Consequence |
|---|---|---|
| Core-local state | Pipeline, predictor, cache / TLB history | Different execution time even without another task |
| Intra-core task interference | Another task runs on the same core and changes local state | Additional cache / TLB reloads after resumption |
| Inter-core interference | Other cores use shared caches, interconnect, or memory controller | Extra lower-level requests and / or longer service |
DMA and accelerators are additional requesters, even when CPU cores are dedicated.
Distinguish more requests from more waiting per request.
TLB: translation lookaside buffer. MaĂŻza et al., timing-verification survey, 2019, Sections 1â3; EASA AMC 20-193, 2022, pp.6â8.
Task on core 0: \(C=1000\) compute cycles; \(n=20\) blocking requests, each requiring \(s=20\) service cycles.
\[T_{\mathrm{alone}}=C+ns=1000+20\cdot20=1400\ \text{cycles}\] \[W_{\max}\le s,\qquad T_{\mathrm{shared}}\le C+n(s+s)=1800\ \text{cycles}\]
Two requesters, one request per turn. Fixed request count; no computationâmemory overlap or additional delays.
Own model: service time \(s=20\) cycles; two requesters; at most one foreign request ahead of each own request. Round-robin, one request per turn; no other delays, overlap, or change in request count. \(W_{\max}\): waiting before service. Diagram shows four of the twenty requests, excluding computation.
Example: 640 Ă 480 pixels, 1 B/pixel, 30 frames/s.
DMA avoids a CPU copy loop, but still uses bandwidth and service time.
Own transfer-count model; MB = 10â¶ B, KiB = 1024 B. Assumes all seven transfers reach external memory; excludes protocol overhead and other traffic. DMA guide.
Software schedules operations on existing units. FPGA configuration defines the functions and connections of a datapath.
A field-programmable gate array (FPGA) configures functions and connections to implement an application-specific data path.
Reconfigurability trades development cost, flexibility, performance, and energy efficiency.
Marwedel (2021), Section 3.3.3, p.165. The diagram is schematic; efficiency depends on workload and implementation.
Dedicated blocks add RAM, DSP arithmetic, and I/O. A CPU may be a hard core in silicon or a soft core mapped to the fabric.
The bitstream configures both logic functions and connections.
Original Xilinx diagram, DS060_09_041901, via Chen (2024). Architecture-specific routing example, not a universal floorplan. Marwedel §3.3.3, pp.165â167.
A look-up table (LUT) stores \(2^k\) output bits for \(k\) inputs. Multiplexers combine functions; registers hold working state.
Original Xilinx CLB image, UG002_c2_019_081600, via Chen (2024); one slice enlarged without changing its wiring. k: LUT input count; MUX: multiplexer; Reg: register. Four slices and four-input LUTs are specific to this example, not all FPGAs. Marwedel §3.3.3, pp.166â167.
Example: inputs 01 yield 1 with XOR, but 0 with AND. Changing the LUT table changes the function, not the input samples.
Logic-plane image credited via Chen (2024) to Kalenteridis et al., Microprocessors and Microsystems, 2005. Configuration and storage layers reconstructed. SRAM-based example; bits and loading path are schematic. Marwedel §3.3.3, pp.165â167.
Partial reconfiguration replaces one region while the static design remains configured. Switching also requires safe handoff of data and state.
Reuse over time saves resources only when reconfiguration costs fit the workload.
Video-encoder functions and partial-reconfiguration example after Chen (2024). Phase widths are schematic. Transfer time â„ S/B: S is bitstream size [B], B configuration bandwidth [B/s]; switching may add drain/state-transfer time.
The execution units are in place. Their operands still need capacity, bandwidth, and predictable access.
Memory Organization
| Technology | Typical role | Important trade-off |
|---|---|---|
| SRAM | Registers, caches, local memory / SPM | Fast access; limited density; volatile |
| DRAM | Larger working memory | Capacity; refresh and access-service costs |
| Flash | Code, boot images, persistent data | Persistence; erase/program constraints |
Capacity, latency, bandwidth, access energy, cost, and predictable service can conflict.
Cache and scratchpad are organizations, not separate semiconductor technologies.
Marwedel (2021), Sections 3.4.1â3.4.2, pp.168â170. Qualitative comparison.
Larger arrays require longer wiring, decoding, and data paths.
Small is beautiful when frequently used information can stay close to computation.
Marwedel (2021), p.168, Fig.3.40, CACTI model; register-file detail Fig.3.42, p.170. Model-specific values, not current device specifications.
Combine a small fast working set with larger storage; not every system needs every level.
Marwedel (2021), Section 3.4.2, pp.169â170. The historical memory-wall argument motivates hierarchy; throughput and latency remain separate constraints.
| Property | Access pattern | Consequence |
|---|---|---|
| Temporal locality | Reuse the same coefficients or samples | Retain useful data near the core |
| Spatial locality | Traverse adjacent array elements | Use the rest of a fetched line |
| Working set | Data and code active in a phase | Capacity must fit the relevant phase |
For a sliding filter, neighboring outputs reuse much of the same input window.
Memory behavior depends on layout and access order, not program size alone.
Marwedel (2021), Section 3.4.4, pp.170â172. Activates computer-organization knowledge.
A hit uses a matching valid line. A miss requests a line from the next memory level.
Marwedel (2021), Section 3.4.4. Corrected reconstruction includes the line offset; it does not search all sets in parallel.
Both caches: 64 B = four 16 B line slots. A: address 0, block 0. B: address 64, block 4.
\(\text{block}=\lfloor\text{address}/16\rfloor\), \(\text{set}=\text{block}\bmod\text{number of sets}\). Blocks 0 and 4 select set 0 in both caches.
Three empty slots, but A must be reloaded: only its own set can hold it.
Own trace; Marwedel §3.4.4. Initially empty, read-only, no prefetch; capacity excludes metadata. A subsequent B also misses on the left and hits on the right.
Direct-mapped cache: 64 B data, 16 B lines. Addresses 0 and 64 select set 0.
| Task A reads address 0 twice | Aâs first read | Aâs second read |
|---|---|---|
| A runs alone | Miss | Hit |
| B reads address 64 between Aâs reads | Miss | Miss |
One extra reload costs \(t_{\mathrm{miss}}-t_{\mathrm{hit}}\) in this blocking model, in addition to Bâs CPU time.
Own trace: initially empty, read-only cache; no prefetch or overlap. \(t\): access latency. Intra-core example: B runs during Aâs preemption. Inter-core analogue: conflicts in a shared cache, when requests reach it. MaĂŻza et al., 2019, Section 1; Rouizi et al., ECRTS 2025, p.19:2.
Marwedel (2021), p.172, Fig.3.44, Drepperâs Pentium-4 experiment. NPAD: additional 64-bit words per list element. Mean cycles/access, not a WCET bound or a current benchmark.
Generic noncoherent case, not an assertion about the i.MX9352 path. Linux DMA guide; memory barriers, âCache coherency vs DMAâ.
Software, compiler, and linker place selected code or data into the SPM address range.
SPM access is explicitly addressed; it has no cache-style automatic replacement or refill.
Marwedel (2021), Section 3.4.5, pp.172â173, Fig.3.45. Concrete TCM interfaces and accessibility are device-specific.
More control can improve predictability, but placement quality still matters.
P. Marwedel et al., ASPDAC 2004, via Chen (2024). Technology-specific access-energy comparison; 2x/4x denote ways. See also Marwedel (2021), Fig.3.46, p.173.
8 KiB SPM. Each replaced main-memory access saves 3 nJ in this model.
| Object | Size | Accesses / run | Saving if placed |
|---|---|---|---|
| A | 4 KiB | 1000 | 3000 nJ |
| B | 4 KiB | 100 | 300 nJ |
| C | 8 KiB | 1500 | 4500 nJ |
Feasible choices: none, A, B, A+B, or C. A+B: 3300 nJ; C: 4500 nJ.
Choose C in this model. Access frequency must be considered together with object size and total benefit.
Own static-placement example after Marwedel (2021), Sections 3.4.5 and 7.3.3. Ignores initial loading and any cache; real transfer costs require separate accounting.
| Mechanism | What it controls | What still needs analysis |
|---|---|---|
| Dedicated core | CPU-time sharing with other tasks | Shared cache, interconnect, memory, DMA |
| Cache partitioning | Cross-partition capacity evictions | Shared cache service and downstream memory traffic |
| Memory-access budget \(Q\) per \(P\) | Request volume over a regulation window | Bursts, enforcement delay, unregulated requesters |
| Local SPM / TCM placement | Selected accesses avoid a shared path | Remaining code, buffers, transfers, and actual local-memory connectivity |
A timing argument must cover all relevant interference channels and the service they receive.
\(Q\): permitted memory transactions; \(P\): regulation interval. TCM: tightly coupled memory. MaĂŻza et al., 2019; Zuepke et al., MemPol, 2024. Model limits: Rouizi et al., 2025.
Same target, different bursts: MemGuard uses a 1 ms period; MemPol polls every 6.25 ”s with a 50 ”s sliding window. Similar long-term bandwidth does not establish the same per-request delay bound.
Which bottlenecks or correctness problems would more CPU cores alone fail to remove?
Trace operations, transfers, handoffs, and shared resources before claiming a timing result.
Hardware organization connects functional correctness, resource cost, and timing.
Q1 · Execution
How can SIMD and multicore execution coexist?
Q2 · SoC
Which resources are private, shared, or independently managed?
Q3 · Timing
Derive the 1800-cycle bound. What changes with a third requester? Which channel survives cache partitioning?
Q4 · FPGA
What changes during reconfiguration? What remains ordinary working data?
Q5 · Cache
Trace AâBâAâB in both caches. Why can B add a miss to A without changing Aâs own reads?
Q6 · Data delivery
Which object belongs in the 8 KiB SPM? Is DMA completion enough for safe access?
Fourth edition (2021)
Technical documentation: NXP i.MX 93, Rev.8, 2026; Linux DMA guide and memory barriers.