Latency hiding and throughput
These cores are designed to be inexpensive. There is no branch predictor, out of order execution, or superscalar instruction issue. The microarchitecture is best described as a barrel processor. It keeps several hardware thread contexts and selects a ready thread each cycle. When one thread stalls, another can use the pipeline. This hides latency without spending hardware to predict or avoid it. The same broad principle appears when a CUDA streaming multiprocessor selects another ready warp.
This study measures instructions per cycle (IPC), retirement behavior, and utilization of the major shared resources. The main limits are one 64 bit instruction port and one 64 bit data port.
Reproduce the study
The benchmark is provided as source, and the complete interactive report contains the sweep data and utilization timelines.
Workload model: one program, many thread contexts
The benchmark uses the SPMD model, meaning single program, multiple data. Every hardware thread runs the same program, obtains its own thread ID, and operates on a distinct row of packet data. SPMD describes the software execution model. It is not the same as one SIMD instruction operating on several packed elements.
The fetch ceiling
Instructions are fixed at 32 bits while the instruction memory port is 64 bits wide, so one accepted fetch can carry at most two adjacent instructions. Under an ideal backend and perfectly useful sequential fetches (and no instruction cache inside the core), the architectural upper bound is therefore 2 IPC. Branches, redirects, dependencies, finite queues, and memory contention can only reduce the sustained result.
More threads fill idle pipeline slots
With one thread, dependencies and memory latency leave long idle gaps.
At sixteen threads, ready work keeps instruction traffic almost continuous. Data traffic remains bursty because it follows the program's load and store mix.
Commit rate
IPC is calculated as total committed instructions divided by elapsed cycles. Commit is the architectural retirement point: only instructions that complete and become visible count toward IPC. The heatmap shows the distribution of commits per cycle moving right as thread count increases.
More than one retirement in a cycle does not make this a conventional superscalar core. The extra commits come from different hardware threads completing through different functional units in parallel, rather than multiple independently issued scalar lanes from one thread.