命令セット

命令セット

執筆済 コンピュータアーキテクチャ

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.
ノート一覧を閉じる