第7回講義資料 2009/11/06

CPUの実現方式

内部アーキテクチャ
  • CPU内部の実現方式
  • 外部アーキテクチャの実現のためのしくみ
  • マイクロアーキテクチャとも呼ぶ
  • 命令は同じでも異なるハードウェア方式
  • ソフトウェア互換、ハードウェア互換
x86アーキテクチャ(同じ外部アーキテクチャ、異なる内部アーキテクチャ)
  • Intel
    • i80386
    • i486
    • Pentium
    • Pentium Pro
    • Pentium II
    • Celeron
    • Pentium III
    • Pentium 4
    • Pentium M
    • Core
    • Core 2
    • Core i7
    • Core i5
    • Atom
  • AMD
    • Am386(80386ピン互換)
    • Am486 (i486ピン互換)
    • Am5x86 (i486ピン互換)
    • K5 (Pentiumピン互換)
    • K6
    • K6-2
    • K6 III
    • Athlon
    • Duron
    • Athlon MP
    • Athlon XP
    • Opteron
    • Athlon 64
    • Athlon 64 X2
    • Turion 64
    • Turion 64 X2
    • Phenom
    • Phenom II
    • Athlon II
    • Sempron
    • Geode
  • Cyrix
    • Cx5x86 (i486ピン互換)
    • 6x86(Pentiumピン互換)
    • Cyrix MII
    • Cyrix MIII
CPU実現の基本
  • バス(共通線)アーキテクチャ
  • 共通線を利用し、タイミングを合わせてアクセス
  • バス
    • アドレスバス -  メモリやI/Oのアドレスを選択
    • データバス - メモリやI/Oのデータを転送
  • その他
    • タイミング選択ライン
    • 割り込み信号
    • クロック信号
CPUの基本機能
  1. フェッチ
  2. デコード
  3. 実行(演算、メモリリード)
  4. ライトバック
CPUの基本構造
  • 命令フェッチユニット
  • 命令でコードユニット
  • レジスタユニット
  • 演算ユニット(ALU)
  • メモリアクセスユニット

命令フェッチ
  • プログラムカウンタが指すアドレスをアクセス
  • 命令レジスタへの読み込み
デコード
  • 命令コードをデコード
  • オペランドをデコード
  • 各ユニット動作を設定
レジスタ
  • データを保持
  • 各ユニットへのデータ転送
  • 演算
  • アドレスデータの生成
演算ユニット
  • 演算命令の実行
  • 整数演算ユニット
  • 浮動小数点数演算ユニット
メモリアクセスユニット
  • データの読み込み
  • データのライトバック

実現方式
  • ワイヤードロジック方式
    • 命令制御をハードウェアロジックで実現
  • マイクロプログラム方式
    • 命令制御を内部のマイクロプログラム制御で実現
    • 内部ユニットを制御するマイクロコードを解釈実行
ワイヤードロジック方式
  • すべて配線により実現する方式
  • 処理は高速
  • 複雑な命令の処理は構造を複雑化(限界性能に影響)
  • 現在のマイクロプロセッサはワイヤードロジック
マイクロプログラム方式
  • CPU内部のユニットを制御をマイクロプログラムで制御
  • IBM System360の下位機種の実現
    • 上位機種の命令セットをマイクロプログラムで実現
    • 性能は低いが簡単な構造で高機能を実現
  • マイクロプログラムの方式
    • 水平型マイクロプログラム
      • 機能指定を各ユニットごと命令のビットにマップ
    • 垂直型マイクロプログラム
      • 一般の機械語に似た命令(デコードが必要)
ダイナミックアーキテクチャ
  • マイクロプログラムで命令をダイナミックに定義可能
  • 頻繁に利用される処理をマイクロプログラムで命令化
高機能プロセッサ
  • 高級言語の機能を機械語命令で実現
  • 人間がプログラムしやすい機械語命令(アセンブリ言語)
  • CISC:Complex Instruction Set Computer
  • マイクロプログラムを駆使した高機能化
    • ループ命令
    • メモリーメモリ演算命令
    • 多倍長演算命令
  • 複数の命令を組み合わせて1つの命令として実現
マイクロプログラムの応用
  • 命令アーキテクチャの共通化
  • 下位互換性の実現
  • 命令の拡張
    • ダイナミックに命令を定義
    • 高級言語プロセッサ
      • Lispプロセッサ
      • Prologプロセッサ
マイクロプログラムの問題
  • 高速化への障害
    • マイクロプログラムの高速実行の課題
  • 高度な命令の必要性に疑問?
    • コンパイラが利用しない命令
    • コンパイラにとって不要な機能
    • 高性能コンパイラ作成の障壁
      • 命令の実行速度を予測できない
      • コード生成の複雑化
  • RISCマシンの登場
    • ワイヤードロジックによる性能向上を重視
    • コンパイラによる最適化
高性能から高速プロセッサへ
  • 高機能プロセッサのメリット
    • プログラムステップ数の短縮
    • プログラムの記述しやすさ
  • 高機能プロセッサのデメリット
    • ワイヤードロジックによる実現が難しい
    • クロックの高速化が難しい
    • コンパイラが生成できない命令が多く存在
RISCアプローチ
  • ワイヤードロジック化
  • 1クロック実行
  • レジスタ間演算
    • 転送命令と演算命令の分離
    • 命令数の縮小
  • コンパイラによる最適化を前提
    • 遅延分岐による最適化
CISCのRISC化
  • CISC命令の高速化の必要性
    • 互換性からRISC化できないCPU, x86
    • RISC陣営の追い上げ
  • RISCのテクノロジーの導入
    • 内部での命令変換(命令の細分化)
    • レジスタリネーミング(レジスタ多重化)
アーキテクチャは性能重視へ
  • プログラムの生産性より速度
  • 外部アーキテクチャは互換性
  • 内部アーキテクチャは高速化
  • コンピュータの命令は人の目にふれないものに...

Ċ
Hideto Sazuka,
2009/11/05 6:56
Comments