第8回講義資料 2009/11/13

CPUの高速化の技術

CPUの高速化
  • クロックの高速化
  • 命令実行のサイクル数を減らす
  • メモリアクセスの時間を短くする
  • 同時に複数の仕事(命令)実行する
クロック
  • CPUをコントロールするタイミングの決定
  • 高速化すればいいが...
    • 命令の粒度の違いでタイミングが会わない
    • 配線の問題
    • 発熱の問題
    • 素子の反応速度の問題
  • 高クロック化はさまざな問題
命令実行のサイクル数
  • 高度な命令は多くのサイクル数を必要とする
    • ループ命令
    • 多倍長演算命令
    • 間接アドレッシング命令
  • 高度な命令はプログラミングには有利
    • プログラムを簡潔に記述可能
    • プログラムの長さを短くできる
  • シンプルな命令は1クロックで実行可能
    • 命令がシンプルならば高速実行可能
    • 命令の流れ作業(パイプライン処理)が可能
メモリアクセスの高速化
  • 命令もデータもメインメモリにある
  • メモリは計算や制御はできない
  • CPUにデータ転送が必要
  • 並列処理にはさらに高速化が必要
並列処理
  • 並列処理を考えたプログラミングが必要
  • 現在のプログラムは逐次処理を基本にしている
  • コンピュータのしくみも逐次処理がベース
現在のコンピュータの本質的な問題
  • 逐次処理プログラム
    • 並列処理対応できない
    • 並列アルゴリズムは難しい
  • メインメモリにプログラムやデータを集中して格納
  • データの転送が必要
    • CPUとメモリが独立分離している
逐次実行型モデル
  • 命令を逐次実行する(順番に実行する)
  • 多くの命令を同時実行はしない
  • メインメモリを読む単位が限られている
ノイマンズボトルネック
  • 現在のCPUの特徴であり、処理能力の限界
  • プログラム内蔵型
    • データもプログラムもCPUへ転送して処理すことで生じる隘路
  • 本質的な方式の変更が必要と言われ続けている
  • 非ノイマン型はなかなか登場しない
非ノイマン型
  • 特的の目的にしか実用化されてはいない
  • データフローマシン
  • リダクションマシン
  • コネクションマシン
現在までの高速化技術
  • CPUの高速化
  • メモリの高速化
  • 並列化
現在のCPU高速化技術
  • パイプライン処理(スーパーパイプライン)
  • 命令処理の並列化(スーパースケーラ)
パイプライン処理
  • CPU処理ステージを流れ作業(パイプライン)で行なう
  • CPUの処理ステージ
    • フェッチ(命令の読み込み)
    • デコード(命令の解釈)
    • 実行(演算等の実行)
    • ライトバック(実行結果の書き出し)
  • 各ステージの処理を同時進行させる
  • 理論的には1クロックに1命令実行できる
パイプライン化のメリット
  • 1ステージの実行速度で実行可能
  • ステージを分割し高速化することで高速処理が可能
パイプライン化のデメリット
  • 1つのデータ(リソース)連続して操作するプログラムはパイプラインを乱してしまう
  • 分岐命令はパイプライン化できない
スーパーパイプライン
  • パイプラインのステージを増やして動作クロックを高める技術
  • 1ステージの処理の単位を小さくする
    • Pentium 5段パイプライン
    • Pentium II, III 12段パイプライン
    • Pentium 4 20段パイプライン
RISCとパイプライン
  • RISCプロセッサは命令がシンプルで単純
  • 1命令1クロックが基本
  • パイプライン化を行ないやすい
    • CISC命令は1命令の実行に複数クロック必要とし、処理が複雑なためパイプラインに向かない
    • RISC化の目的が効率のよいスーパーパイプラインが目的
CISC命令のスーパーパイプライン化
  • そのままの命令単位ではスーパーパイプラインは難しい
  • 命令を内部で小さな命令単位に分解
  • 命令の単位をRISC命令レベルまで分解
スーパーパイプラインの問題
  • 分岐命令によるパイプラインの崩壊
  • レジスタ競合の問題
遅延分岐
  • 分岐を実際の出現場所より遅延して行う
  • パイプラインを考えて、分岐命令の先の命令も実行した後実際の分岐をする
  • RISCプロセッサで用いられた方式
投機的実行
  • 分岐した先の処理をあらかじめ実行
  • 分岐の予測が外れた場合は結果を破棄する
予測分岐
  • 分岐を確率的に予測しながら実行する
  • さまざな予測方式がある
処理の並列化
  • 複数のパイプラインを用意し、命令の並行処理を行う
  • 複数の演算モジュールを利用して演算を行う
  • 1命令をみかけ1クロック以下で実行する技術 → スーパースケーラ
    • cpi → 命令あたり必要平均クロック数
    • 普通は1以上
    • 1cpiを下回るものをスーパースケーラと呼ぶ
レジスタの競合問題
  • RISCプロセッサでは多くのレジスタ(32本〜128本)を用意し競合を避ける
  • レジスタは多いほうがいいが、変更はできない
    • 多重にレジスタを用意する
      • レジスタセット
      • レジスタファイル
  • CISCプロセッサのレジスタ数は少ない
    • レジスタの競合, 無駄のないレジスタ割当の必要性
    • 再利用の頻度が高い
    • パイプライン内で競合が発生
    • 競合を回避するレジスタの動的割当 → レジスタリネーミング
命令の実行順の変更
  • 実行順によるリソースの競合
  • データの依存関係から命令の順序を変更
    • 命令バッファに退避
  • 命令の順序の変更 → アウトオブオーダー実行
VLIW:Very Long Instruction Word
  • 明示的に複数実行できる命令を並列に記述する命令語形式
  • RISCプロセッサの命令の並列化
  • コンパイラによる最適化を前提したアーキテクチャ
  • 複数パイプラインの競合が最初からない
  • 普及はしなかった
Ċ
Hideto Sazuka,
2009/11/12 18:28
Comments