Transcript CS2-8

計算機システムⅡ
パイプライン処理
和田俊和
講義計画
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
コンピュータの歴史1
コンピュータの歴史2
コンピュータの歴史3
論理回路と記憶,計算:レジスタとALU
主記憶装置とALU,レジスタの制御
命令セットアーキテクチャ
演習問題
パイプライン処理(←本日)
メモリ階層:キャッシュと仮想記憶
命令レベル並列処理
命令実行順序の変更
入出力と周辺装置:DMA,割り込み処理
演習問題
現代的な計算機アーキテクチャの解説
総括と試験
•
教科書:坂井修一著:電子情報通信学会レクチャーシリーズC−9,コンピュータアー
キテクチャ,コロナ社
•
最終回の試験によって成績評価を行う.5回以上欠席で不合格とする.
本日の講義の範囲
3.1 命令パイプライン
4.1.1 パイプラインの原理
•
•
•
•
自動車製造の工程(ステージ)数N
各工程(ステージ)の所要時間(全工程で同じ)T
1台の自動車作成に要する時間 N×T (実行時間)
単位時間当たりに製造される車の台数 1/T
(スループット)
4.1.2 命令パイプラインの基本
• 一つの命令の処理時間: N×T
• スループット: 1/T
–
–
–
–
命令フェッチ: (instruction fetch, F)
命令デコード:(instruction decode, D)
演算実行:(execution, E)
結果の格納:(write back, W)
4.1.3 基本命令パイプラインの実現
• 図2.12をパイプライン実行順序に従って(ステー
ジ毎に)書き直したもの
基本命令パイプラインの実現(続き)
• 各ステージ間でデータを保持しないといけない.
パイプラインレジスタの導入
4.2 基本命令パイプラインの阻害要因
4.2.1 オーバヘッド
• 阻害要因1. 最も時間のかかるステージの処
理時間で全体のスループット 1 / Tが決まる.
max
N
N
NT - åT = å (T - T )
i
max
i=1
max
i
i=1
• 阻害要因2. パイプラインレジスタによる遅延.
– できるだけ高速なレジスタを使うことが唯一の解決
策.
– これによって,最大のステージ数が決まる.
4.2.2 ハザード(hazard)
• 阻害要因3. 命令をクロック毎にパイプライン
動作させられない状態を「パイプラインハザー
ド」もしくは「ハザード」と呼ぶ.
1. 構造ハザード
2. データハザード
3. 制御ハザード
4.2.3 構造ハザード(structural hazard)
• コンピュータの内部構成が原因のハザード.
例:命令フェッチと,メモリの読み書きが同時に実行で
きない場合に,下記のようなストールが起きる.これ
は,命令メモリとデータメモリの区別がなく,並列アク
セスが出来ない場合などに起きる.
資源の多
重化によっ
て,解決が
可能である.
4.2.4 データハザード(data hazard)
• 命令間の依存関係(dependency)が原因のハザード.
例:命令Aで生成されるデータが命令Bで使われるケー
ス.(producer-consumer関係)
N=5で,4ステー
ジなので,8クロッ
クで終了するはず
だが,
16クロック必要に
なる.
データハザードの他の例
• 2命令離れてもデータハザードは起こりうる.
(ステージ数−1)間
離れた命令の間で
は,データハザード
は起こらない.
左図の場合,8クロッ
クで終了する筈の処
理が,10クロックか
かっている.
4.2.5 制御ハザード
• 分岐命令とそれ以降の命令間には「制御依存」
の関係がある.4ステージの場合,制御依存によ
り,分岐命令後に3クロックのストールが起きる.
4.3 ハザードの解決方法
4.3.1 フォワーディングによる
データハザードの解消
• データの依存関係は消せないが,直前の命
令のEステージの結果が,直後の命令で参照
できれば解消できる.
フォワーディングが組み込まれた
パイプライン
直後の命
令のEス
テージで,
直前の命
令のEス
テージの
結果が参
照できるよ
うになる.
4.3.2 命令アドレス生成のタイミング
• 無条件分岐の場合,Dステージ直後にPCを更新
すれば制御ハザードが緩和できる.
• 条件分岐では使えない.
4.3.3 遅延分岐
分岐のあるな
しにかかわら
ず,実行する
命令を「遅延
分岐命令」の
直後に入れ
ておくと,ス
トールが防げ
る.
4.3.4 分岐予測
• 分岐するかどうかを予測して実行し,「予測が外れ
た場合に分岐命令以下の命令を破棄する」方法.
• 外れた場合,F,D,Eステージに入っている命令をフ
ラッシュする.
分岐予測
• 固定予測
• 命令アドレスが小さくなる方を予測
• 動的予測
右の状態遷移図に
従って動作する.
この状態遷移を各
分岐命令毎に管理
するために,分岐
命令アドレスでイン
デックス付けされた
分岐履歴テーブル
を持つ.飽和カウンタ
2レベル適応予測器
• 各分岐命令
毎に,過去の
分岐の有無
を記録した
「大域分岐履
歴レジスタ」を
持っておき,
この履歴のパ
ターン毎に,
飽和カウンタ
による予測を
行う.
4.3.5 命令スケジューリング
• 依存関係にある命令を,プログラム中で出来る
だけ離した位置に置くように並べ替える.
本日の講義の範囲