Capability Hardware Enhanced RISC Instructions (CHERI)
ポインタをケイパビリティとして扱い、ハードウェアで保護する命令セットアーキテクチャ(ISA)の拡張である。出典はCHERIをCapability Hardware Enhanced RISC Instructionsの略とし、ハイブリッド型のケイパビリティシステムモデルを実装するISA拡張と説明する。
ケイパビリティは、仮想アドレスと、そのポインタが指すメモリ資源を記述するメタデータ(境界や権限など)を保持し、さらにポインタ自体を保護する1ビットのタグを備える。これによってポインタの生成と使用が制御され、改変できないことと権限委譲の正当性が担保される。ハイブリッド型とは、UNIXカーネルやRISCプロセッサといった従来の設計を活かしつつ、一部のコードだけをケイパビリティシステムの制約下に置く方式を指す。従来のリング型特権機構やMMUによる仮想記憶と明確に統合され、C/C++コンパイラから利用でき、段階的な導入が可能とされる。実装面では128ビットの圧縮ケイパビリティ形式が用いられ、境界を表す2つの64ビット仮想アドレスと64ビットのポインタとの間の冗長性を利用する。タグ付きメモリのために128ビットまたは256ビットのデータごとに1ビットを追加し、メモリのオーバーヘッドは1%未満とされる。
出典によればISAごとの整備状況は異なり、CHERI-MIPSは詳細なISA仕様、形式モデル、実行可能なQEMUモデルを備える。CHERI-RISC-Vは32ビットと64ビットの双方で利用でき、CHERI-x86-64はアーキテクチャの素案の段階とされる。ソフトウェア側では、FreeBSDを適応させたCheriBSDと、LLVMコンパイラ群を適応させたCHERI Clang/LLVMが公開されている。