Capability Tag Bit
A capability tag bit is a single-bit validity marker that travels alongside a capability to enforce that the capability has not been forged or corrupted. In capability-based architectures such as CHERI, the tag bit is the mechanism by which the hardware distinguishes a legitimate capability from an arbitrary bit pattern that merely resembles one.
Role and Purpose
The tag bit exists to protect capability integrity and derivation in both registers and memory. Because capabilities carry metadata (such as bounds and permissions) that govern how an address may be used, the architecture must be able to prove at the hardware level that a given value was produced by a sanctioned capability-derivation operation rather than constructed by arbitrary data manipulation. The tag bit is that proof: its presence attests that the associated capability is valid.
Storage and Atomicity
The tag bit has the following structural properties:
- Out-of-band: The tag is stored separately from the normal data payload of the capability rather than being encoded within the capability's address or metadata bits.
- Atomically bound to the capability: The tag cannot be split from its capability through normal load/store or register operations; the architecture guarantees that tag and data move together.
- Validates the capability: Hardware consults the tag when a capability is loaded or used, refusing to treat an untagged value as a capability.
Concrete Form in CHERI
In the CHERI architecture described in the ASP-DAC 2026 presentation "A RISC-V CHERI VP: Enabling System-Level Evaluation of the Capability-Based CHERI Architecture":
- A CHERI capability extends the integer memory address to 128 bits, comprising a 64-bit address plus 64 bits of metadata (bounds, permissions, object type, etc.).
- General-purpose registers are widened to 129 bits, consisting of the 64-bit address, the 64-bit metadata word, and a 1-bit validity tag that is the capability tag bit.
- Tagged memory protects capability-sized and capability-aligned words in DRAM by adding a validity tag to each such word.
- The system bus architecture is extended to transport these out-of-band tags alongside normal data, so the tag remains bound to its capability across register files, caches, and main memory.
The ISA is extended with CHERI-specific instructions that enforce monotonicity of capabilities and guarded manipulation, with the tag bit serving as the hardware-level invariant those instructions rely upon.
Why a Tag Rather Than Encoded Metadata
Storing the tag out-of-band (rather than, for example, reserving a bit inside the 128-bit capability word) allows the tag to be managed by dedicated hardware paths without consuming the in-band bits used for address and metadata encoding. It also means that ordinary data values can occupy capability-sized, capability-aligned words in memory without risk of being misinterpreted as capabilities — only locations whose tag is set are treated as capabilities on load.
See Also
- CHERI — the capability-based architecture in which this tag bit mechanism is defined.