The first industrial-scale CHERI silicon: a Neoverse N1 retrofitted with 128-bit capabilities, the closeout of UK DSbD.
§1 Provenance
- Arm Morello programme overview. https://www.arm.com/architecture/cpu/morello
- UKRI, “DSbD Final Impact Evaluation Report”, published October 2025. https://www.ukri.org/wp-content/uploads/2025/10/IUK-131025-2025-07-04_DSbD-Final-Impact-Evaluation-Report.pdf
- Watson et al., “CHERI: Hardware-Enabled C/C++ Memory Protection at Scale,” IEEE S&P Magazine, July/Aug 2024. https://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/20240419-ieeesp-cheri-memory-safety.pdf
- Grisenthwaite et al., “The Arm Morello Evaluation Platform: Validating CHERI-based Security in a High-performance System.” IEEE Micro, 2023. https://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/202305ieeemicro-morello-platform.pdf
- Morello Platform Open Source Software portal. https://www.morello-project.org/
- arXiv:2504.17904 (April 2025): “Adoption of the Arm Morello CHERI Platform in Defence: Lessons from a NATO Industrial Demonstrator.” https://arxiv.org/pdf/2504.17904
- Sewell et al., “Verified Security for the Morello Capability-enhanced Prototype Arm Architecture.” ESOP 2022. https://www.cl.cam.ac.uk/~pes20/morello-proofs-esop2022.pdf
§2 Mechanism
Morello adapts an Armv8.2-A Neoverse N1 SoC by adding the CHERI capability model as a new architectural state. The N1 cores are extended with:
- Capability registers
C0-C30,CSP,PCC,DDC(the “default data capability” used to relocate legacy non-cap loads/stores) — 129 bits wide including tag. - New instructions:
LDR/STRvariants that take a capability base,SCBNDSto shrink bounds,SEAL/UNSEAL,BLRvia sealed sentry, etc. - A tag-storage controller in the memory subsystem keeping one tag bit per 128-bit DRAM granule, stored in a reserved physical region.
The capability layout is the canonical CHERI Concentrate 128-bit format: ~18 bits permissions, ~16 bits otype, ~20 bits compressed bounds (mantissa+exponent), 64 bits cursor, plus the side-band tag. Morello drove two ISAv9 design choices: (i) non-monotonic modification clears the tag instead of trapping, (ii) DDC/PCC do not relocate legacy memory accesses by default.
The SoC is dual-cluster, 4-core Cortex-A-class with the Morello extensions, packaged on a development board with 16 GB DDR4 and full peripherals.
§3 Threat model + guarantees
Same as CHERI ISA in §1 file:
- Spatial safety on every pointer, including pointers crossing DMA via the SMMU when properly configured.
- Pointer integrity via the side-band tag; no software-readable encoding.
- Compartmentalisation via sealed sentries.
- Temporal safety only with a revocation runtime (Cornucopia / Cornucopia Reloaded), not with bare Morello.
- Spectre v1/v2/v4 mitigations are inherited from Neoverse N1; no new side-channel protection from CHERI.
- The April 2025 NATO ICMCIS paper identifies five new failure modes specific to Morello deployment if mis-configured: state leaks, memory leaks, UAF, unsafe defaults, and toolchain instability.
Morello does not protect against: confidentiality leaks (tag is integrity-only), uninitialised reads, type confusion at the language level, or in-compartment logic bugs.
§4 Production status (May 2026)
Morello was always a research prototype, not a product. As of May 2026:
- The Morello board (silicon date 2021, distribution since early 2022) shipped in the low hundreds of units to academic and industrial partners — Google, Microsoft, Cambridge, Edinburgh, multiple UK SMEs.
- The UK DSbD programme (Innovate UK, EPSRC, Arm, total ~£200M public+private 2019-2024) closed out in October 2025 with the Final Impact Evaluation Report. Headline numbers: 405 new jobs created (vs. 100 target), £29.6M projected GVA, 80% of TAP survey respondents would consider the Morello board for future products, and a programme-level claim that “DSbD technology can mitigate 70% of known memory-safety vulnerabilities.”
- No follow-on commercial Morello silicon from Arm. The capability-ISA torch for Arm itself has effectively passed to (a) CHERIoT for embedded and (b) the upstream RISC-V CHERI standardisation work. Arm publicly remains a CHERI Alliance member but has not, as of May 2026, announced a roadmap silicon product carrying Morello-style capabilities.
- The “Morello Industrial Demonstrator” projects (a TAP cohort funded by DSbD) ran 2023-2024 and produced about a dozen ports of real codebases (PostgreSQL, Nginx, parts of FreeBSD userspace, an automotive AUTOSAR stack). Reported porting effort is single-digit percent of LoC changed for clean modern C, growing for code with heavy pointer-int aliasing or DMA.
- IEEE CS awarded the 2024 Best Paper to the CHERI / Morello team’s S&P Magazine paper (announced Aug 2025).
§5 Software emulation cost
Approximating Morello’s guarantees in software (e.g., a port of CheriABI to QEMU TCG, or SoftBound+CETS-style instrumentation) costs roughly:
- 2-3x slowdown on pointer-heavy SPEC workloads with full bounds+temporal checks (CETS+SoftBound).
- ~25% memory overhead for shadow-pointer metadata (vs. <1% on Morello which uses sideband tag bits).
- ~50-100% slowdown for QEMU-instrumented capability semantics (this is largely interpreter overhead, not the safety per se).
The Morello papers report typical 0-5% perf overhead on hardware for spatial safety alone, climbing to 10-30% with temporal-safety via Cornucopia. That gap is the canonical “what the hardware buys you” number for any software runtime trying to approximate the same guarantee.
§6 Mochi adaptation note
Morello’s main relevance to vm3 is as the upper bound on what is possible rather than as a target. Three takeaways:
- Morello’s 128-bit fat pointer with sideband tag is more expressive than the 8-byte vm3 Cell, but vm3 trades expressiveness for fixed-shape arena/slab indexing: bounds are implicit (slot size), provenance is the generation. We are essentially Morello-with-omitted-fields, optimised for a single-process managed runtime.
- Morello’s “clears tag on non-monotonic modify” behaviour maps directly to vm3’s “stale generation on slot reuse” — we just bump rather than clear. The user-visible effect (next dereference traps) is the same.
- Where vm3 falls short of Morello: per-pointer permissions (no PE/PW/PR/Pseal in our Cell) and compartmentalisation (sealed sentries). If MEP-41 wants either, it should look at carving permission bits out of the arena-tag nibble or out of the unused high bits of the slab index, not at widening the Cell.
We should not aim to match Morello’s compartment story in software; that’s MEP-15 effects’ job. We should match its spatial-and-provenance story exactly, which we already do, and document the missing “permissions on the handle” as a deliberate omission justified by the type system.
Reference MEP-40 (handle layout: 4-bit arena tag, 12-bit gen, 32-bit slab index) and MEP-15 (effects as the compartment substitute).
§7 Open questions for MEP-41 design
- Should
mochi buildever target a Morello/X730 backend that maps Cells onto real 128-bit capabilities and elides the software generation check? What’s the conformance story? - The Morello programme’s “70% of CVEs” headline number was a programme-level claim across multiple TAP cohorts, not a per-vuln measurement; can we set a more concrete vm3 acceptance target (e.g., “trap 100% of OSV-DB use-after-free PoCs in a Mochi standard-library port of CPython’s
_ctypes”)? - Morello’s lessons on DMA and SMMU integration: do we need an “untrusted memory” arena class in vm3 for, e.g.,
mmap’d files or shared memory with native peers? - Should the Morello porting blockers (state leaks, unsafe defaults, toolchain instability) inform MEP-41’s defaults? In particular, should vm3 default to deny on any operation that would clear or skip a generation check?
- Given that Arm has not committed to a Morello follow-on, do we treat Morello as historical and orient MEP-41 toward CHERI-RISC-V (X730/Sonata) instead?