命令セット
CPU が理解できる命令の仕様。 ISA (Instruction Set Architecture)。 ハードウェアとソフトウェアの契約にあたる。
同じ ISA なら、実装が違っても同じバイナリが動く。 これがソフトウェアの互換性を支えている。
CISC と RISC#
| CISC | RISC | |
|---|---|---|
| 例 | x86 | ARM、RISC-V、MIPS |
| 命令 | 多く、複雑 | 少なく、単純 |
| 命令長 | 可変 | 固定 |
| メモリアクセス | 多くの命令が可能 | load / store 命令のみ |
CISC はメモリもコンパイラも高価だった時代の設計で、 1 命令でできることを増やしてコード密度を上げた。
RISC は命令を単純にして パイプラインを 効率よく回す方針。 命令長が固定だとデコードが簡単になり、並列化しやすい。
現代の x86 プロセッサは、 内部で CISC 命令を RISC 的なマイクロ命令に分解して実行している。 外から見た ISA と内部実装は別物になっている。
命令の種類#
| 種類 | 例 |
|---|---|
| 演算 | add, sub, mul, and, shift |
| データ移動 | load, store, mov |
| 制御 | jump, branch, call, return |
| 特権 | システムコール、割り込み制御 |
RISC-V#
オープンな ISA。仕様が公開され、 ライセンス料なしで実装できる。
基本命令セット(RV32I)は 40 命令程度と小さく、 必要に応じて拡張(乗除算 M、浮動小数点 F/D、ベクトル V)を足す モジュール構成をとる。
教育・研究で広く使われ、商用実装も増えている。
参考文献#
- David A. Patterson, John L. Hennessy. Computer Organization and Design: RISC-V Edition, 2nd ed. Morgan Kaufmann, 2020.
- Andrew Waterman, Krste Asanović (eds.). The RISC-V Instruction Set Manual. https://riscv.org/technical/specifications/
- John L. Hennessy, David A. Patterson. Computer Architecture: A Quantitative Approach, 6th ed. Morgan Kaufmann, 2017.