Skip to content

Design Space & PPA ​

DULI was not built as one frozen design. Each mechanism has a cheap and an aggressive implementation, and the evaluation walks the curve from a drop-in extension to a minimum-latency one. This page is the map of that curve.

Baseline ​

The extension is explored on a purpose-built RISC-V real-time core, so the measurements show the cost of the mechanism rather than the quirks of a commercial pipeline:

PropertyValue
ISA / pipelineRV32IM, 3-stage in-order, static branch prediction
MemoryHarvard, 64-bit instruction bus, 64-bit AHB-Lite data bus, no cache
Protection8-entry PMP, NAPOT and TOR
Performance2.77 CoreMark/MHz
Frequency / process200 MHz typical, 240 MHz max, Nangate 45 nm
Core area0.0715 mm²
Kernel-level interrupt5 cycles (hardware), 634 cycles through the microkernel

The four dials ​

DialCheap endFast endWhat it costs
IID lookupRAM tableCPU CAMLatency vs. core area
Domain tablesMain SRAMDedicated TCMBus contention vs. an extra memory port
Context switchStack to SRAMRegister bank + spill fallbackStacking latency vs. area
Preempted kernel PMPSpill to memoryShadow bankA few cycles vs. a shadow register set

The five variants are the successive bottlenecks: first table lookup, then context stacking, then bus contention, then the IID itself.

V1 — minimal complexity ​

IID as a RAM table, context stacked to main SRAM, all tables in the same memory, no new bus port. The kernel-managed PMP is shadow-banked.

37 cycles, +23% core area (0.0878 mm²), 1.89 mW static, 22.4 µW/MHz dynamic. This is the variant for a core that must keep its existing memory interface. It is already 3× faster than the best software scheme when the target is dormant, and it costs about 3% more dynamic power in normal computation.

V2 — hiding the table latency ​

One dedicated TCM port holds the context stack, the longest operation. PMP and budget table accesses now overlap with stacking instead of competing with it.

29 cycles, +27% (0.0905 mm²), 1.90 mW, 23.9 µW/MHz. The added port costs little area and power; this is the sweet spot for cores that already have TCM. It is the fallback mode of V5 when its register banks are exhausted.

V3 — removing the stacking bottleneck ​

A register bank makes context switching zero-latency; the TCM stack stays for unbounded nesting.

17 cycles, +48% (0.1057 mm²), 2.23 mW, 23.95 µW/MHz. This matches the interrupt latency of a Cortex-R4. A second bank pushes area to +70% for nesting depth only.

V4 — resolving table contention ​

The PMP table moves to its own TCM port, in parallel with the budget load.

14 cycles, +51% (0.1077 mm²), 2.23 mW, 23.95 µW/MHz. This matches the kernel-level interrupt latency of a Cortex-M0 — while remaining fully isolated.

V5 — zero-latency identification ​

The IID becomes a CAM that is consulted inside the interrupt acknowledge cycle; 16 entries cover the six-to-eight-process consolidation scenarios the design targets.

11 cycles modeled, 15 cycles measured, +66% (0.1186 mm²), 2.53 mW, 23.6 µW/MHz. It is faster than a Cortex-M3's interrupt entry and, notably, has lower dynamic power than V3/V4 because the IID unit no longer sits on the data path. Halving the CAM to 8 entries costs +57% area; doubling to 32 costs +81%.

All variants together ​

VariantLatency (cycles)Core area (mm²)Area vs. baseStatic (mW)Dynamic compute (µW/MHz)Dynamic back-to-back (µW/MHz)
Base core5 (kernel-level)0.0715100%1.5021.7512.80
V1370.0878123%1.8922.4025.00
V2290.0905127%1.9023.9025.90
V3170.1057148%2.2323.9528.65
V4140.1077151%2.2323.9529.30
V5110.1186166%2.5323.6026.60
Kernel path634—————

Latency values for V1–V5 in the table are the hardware model; V5 measures 15 cycles end-to-end on FPGA at 50 MHz.

Area vs. latency (core area overhead vs. interrupt latency)0102030400%20%40%60%Core area overhead (%)Interrupt latency (cycles)BaseV1V2V3V4V5
VariantArea overheadLatency (cycles)
Base0%5
V1+23%37
V2+27%29
V3+48%17
V4+51%14
V5+66%11
V1–V5 latency is the hardware model; V5 measures 15 cycles end-to-end on FPGA.

The back-to-back column is the extension actually working: the base core's dynamic power is 12.8 µW/MHz, and continuous interrupt delivery roughly doubles it. In ordinary computation the extension is inactive, which is why V1's dynamic overhead is only about 3%.

Area in a real SoC ​

The core is a small part of a microcontroller. Measuring four decapped 40 nm SoCs (a smaller process than the 45 nm test chip) puts the extension in perspective:

SoCDie area (mm²)Core shareV1 extraV2 extraV5 extra
STM32H743 (general)23.780.3%0.07%0.08%0.20%
LPC55S69 (security)8.060.9%0.20%0.24%0.58%
ESP32-C3 (Wi-Fi IoT)5.181.4%0.31%0.37%0.91%
TC387 (automotive)56.460.1%0.03%0.03%0.08%

Even on an imaginary 1 mm² die, V1 adds under 2% and V5 about 5%. On real silicon the extension is a rounding error next to flash, SRAM and peripherals.

Choosing a variant ​

If you need…PickWhy
No changes to the memory interfaceV137 cycles, +23% area, drop-in
A native TCM already existsV229 cycles for +4% more area than V1
Minimum latency, area is secondaryV511 cycles modeled / 15 measured
Deep nesting on a budgetV2Unbounded nesting, deterministic spill
A middle pointV3 / V417 / 14 cycles at +48% / +51%

All variants keep the same software API and the same isolation semantics. The choice is purely a PPA decision.

A research hardware extension for deterministic user-level interrupts.

DULI·Deterministic user-level interrupts·Artifact