CPUアーキテクチャと命令セットの比較

CPUアーキテクチャと命令セットの比較

序論

CPUの命令実行は「命令セット → 機械語 → マイクロコード(またはハードワイヤ制御)」という三層構造で成立している。
この節では、歴史的CPUの例や現代CPUのCISC/RISCアーキテクチャの違い、
バイナリ互換性やFPU搭載の事例まで含めて整理する。

本論

1. 三層構造の原則

Human   : ADD R1, R2       ; 命令セット(ISA)
Machine : 0001 0001 0010   ; 機械語(ビット列)
Micro   : ALU_ADD R1,R2    ; CPU内部制御信号(マイクロコード)

– CISC: 複雑な命令をマイクロコードで分解して実行
– RISC: 単純命令を直接ハードワイヤで実行

2. バイナリ互換と拡張命令

8080 CPU       : original ISA
Z80 CPU        : 8080互換 + 独自命令
PC-8001        : Z80搭載、FPU子プロセッサ追加可能

– Z80は8080の機械語互換性を持ちながら独自命令を追加
– これにより旧ソフトとの互換性を保持しつつ性能向上
– PC-8001ではZ80にFPUを搭載可能で、浮動小数点演算を高速化

3. 代表的CPUのCISC/RISC比較

MC68000 (Motorola) : 16/32bit CISC
   - 複雑命令多数
   - マイクロコードまたはハードワイヤ制御

x86 (Intel)        : CISC
   - 複雑命令、多段マイクロコード
   - 後方互換重視

ARM                : RISC 32bit/64bit
   - 単純命令セット
   - ハードワイヤで直接実行

– CISCは1命令で複数操作を行えるためマイクロコードが重要
– RISCは命令が単純で高速、マイクロコード不要
– 内部演算(加算器、レジスタ、フラグ)は共通だが、命令解釈の流れが異なる

4. 命令実行フロー(ASCII)

Fetch:
  PC -> MAR
  MEM[PC] -> IR

Decode:
  IR[Opcode] -> Microcode / Control

Execute:
  Microcode -> ALU, Regs, Flags   (CISC)
  Hardwired -> ALU, Regs, Flags   (RISC / ARM)

Writeback:
  ALU -> Destination

– CISC: 複雑命令をマイクロコードに分解して実行
– RISC/ARM: 単純命令を直接ハードワイヤで実行
– Z80: 8080互換機械語 + 独自命令をマイクロコードで処理
– FPU子プロセッサ: 浮動小数点演算専用の命令セットを独立実行

Q&A

Q1. CISCとRISCの違いは何ですか?

A1. CISCは複雑命令を1つで複数操作するため、マイクロコードで分解して実行する。
RISCは単純命令を直接ハードワイヤで実行する。

Q2. バイナリ互換とは何ですか?

A2. あるCPUの機械語を別のCPUでもそのまま実行できること。
Z80は8080互換であり、独自命令も追加されている。

Q3. FPU子プロセッサはなぜ搭載されるのですか?

A3. 浮動小数点演算などCPU本体で遅い計算を専用ハードで処理するため。
PC-8001ではZ80にFPUを追加して高速演算を実現した。

Q4. MC68000やx86とARMの動作の違いは?

A4. MC68000やx86はCISCで複雑命令をマイクロコードまたはハードワイヤで実行。
ARMはRISCで単純命令を直接ハードワイヤで実行する。