CPUアーキテクチャとISA
命令セットアーキテクチャ(Instruction Set Architecture)はハードウェアとソフトウェアの境界を定める契約。代表的なISAと、現代CPUの実行機構を扱う。
主要ISA
- x86_64: CISC系。リトルエンディアン。SIMD拡張 parallel-computing の AVX-512 を含む。Intel VT-x で仮想化支援(virtualization-hypervisor)。
- ARM:
ARMv<X>がアーキテクチャ、ARM<X>がプロセッサ。プロファイルは A(サーバ)/R(リアルタイム)/M(組み込み)。v8 から64bit、A64モードは条件付き命令やバレルシフタを持つ。Exception Level(EL0..3)で特権を分離、TrustZone で論理的にメモリを分離(Intel SGX相当)。バイエンディアン。 - MIPS / RISC-V: RISC系の学術・オープンISA。
メモリと整合性
- ハーバードアーキテクチャ: 命令メモリとデータメモリを分離(対するノイマン型は共有)。
- メモリ整合性モデル(Total Store Ordering 等)は Rosetta 2 のような x86→ARM 変換で問題になる。Apple は自社CPUにIntelのメモリオーダを追加し、変換コード実行時にモードを切り替えることで高速化した。
高速化機構
- アウトオブオーダー実行: 依存関係のない命令を先に実行する。
- 投機実行(speculative execution): 分岐予測に基づき先行実行する。これが cpu-architecture-isa (Spectre)の温床になる。
- 算術回路の例として、桁上げ先見加算器(パラレルプリフィックスアダー)である Kogge-Stone Adder / Sklansky Adder がある。
学習リソース
- パタヘネ(『コンピュータの構成と設計』): アーキテクチャの定番教科書。
- CPUエミュレーション・自作の文脈は operating-system-kernel や NES エミュレータ等とも繋がる。
関連: _moc-systems / elf-format / virtualization-hypervisor
サイドチャネル攻撃とCPU脆弱性
本来の入出力経路ではなく、実行時間・消費電力・キャッシュ状態・電磁波などの物理的副作用から秘密情報を推定する攻撃。特に投機実行を持つ現代CPUで深刻な脆弱性が見つかっている。
投機実行に起因する脆弱性
- Spectre: cpu-architecture-isa の投機実行・分岐予測を悪用する。誤予測で投機的に実行されたメモリアクセスの痕跡がキャッシュに残り、それをタイミング測定で読み出すことで本来アクセスできないメモリ内容を漏洩させる。
- アウトオブオーダー実行・投機実行という性能最適化そのものがアタックサーフェスになる点が本質的。
周波数・電力に起因する脆弱性
- Hertzbleed: CPUが負荷に応じて動的に周波数を変える(DVFS)仕組みを使い、命令処理にかかる時間を測ることでデータを抜き取る。x86系プロセッサで実証された。名前は Heartbleed のもじり。
実装バグ由来
- Heartbleed(2014): OpenSSL の脆弱性。境界チェック不備によりメモリ内容(秘密鍵を含む)を読み出せた。ネット史上最悪級とされる。CPUのマイクロアーキテクチャ起因ではなくソフトウェアバグだが、秘密情報漏洩の代表例。
対策の考え方
- 投機実行系は完全な根絶が難しく、ファームウェア・OS・コンパイラ(linux カーネルのmitigation)レベルで緩和する。
- 暗号実装では定数時間化(timing非依存)が重要。