CHERIアーキテクチャ

Capability Hardware Enhanced RISC Instructions (CHERI)

ポインタをケイパビリティとして扱い、ハードウェアで保護する命令セットアーキテクチャの拡張である。ケンブリッジ大学の解説によれば、CHERIはCapability Hardware Enhanced RISC Instructionsの略で、ハイブリッド型のケイパビリティシステムモデルを実装する。ケイパビリティは仮想アドレスに加えて境界や権限といったメタデータを保持し、ポインタ自体を保護する1ビットのタグを伴う。これによりポインタの生成と使用が制御され、改変できないことと権限委譲の正当性が担保される。

詳細

概要

ポインタをケイパビリティとして扱い、ハードウェアで保護する命令セットアーキテクチャ(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が公開されている。