270 likes | 675 Views
計算機システム Ⅱ パイプライン処理. 和田俊和. 講義計画. コンピュータ の歴史 1 コンピュータ の歴史 2 コンピュータ の歴史 3 論理 回路と記憶,計算:レジスタと ALU 主 記憶装置とALU,レジスタの 制御 命令セットアーキテクチャ 演習 問題 パイプライン処理 ( ← 本日 ) メモリ 階層:キャッシュと仮想記憶 命令 レベル並列処理 命令 実行順序の変更 入出力 と周辺装置:DMA,割り込み処理 演習 問題 現代的 な計算機アーキテクチャの 解説 総括と試験
E N D
計算機システムⅡパイプライン処理 和田俊和
講義計画 • コンピュータの歴史1 • コンピュータの歴史2 • コンピュータの歴史3 • 論理回路と記憶,計算:レジスタとALU • 主記憶装置とALU,レジスタの制御 • 命令セットアーキテクチャ • 演習問題 • パイプライン処理(←本日) • メモリ階層:キャッシュと仮想記憶 • 命令レベル並列処理 • 命令実行順序の変更 • 入出力と周辺装置:DMA,割り込み処理 • 演習問題 • 現代的な計算機アーキテクチャの解説 • 総括と試験 • 教科書:坂井修一著:電子情報通信学会レクチャーシリーズC−9,コンピュータアーキテクチャ,コロナ社 • 最終回の試験によって成績評価を行う.5回以上欠席で不合格とする.
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.1 オーバヘッド • 阻害要因1. 最も時間のかかるステージの処理時間で全体のスループットが決まる. • 阻害要因2. パイプラインレジスタによる遅延. • できるだけ高速なレジスタを使うことが唯一の解決策. • これによって,最大のステージ数が決まる.
4.2.2 ハザード(hazard) • 阻害要因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.1 フォワーディングによるデータハザードの解消 • データの依存関係は消せないが,直前の命令のEステージの結果が,直後の命令で参照できれば解消できる.
フォワーディングが組み込まれたパイプラインフォワーディングが組み込まれたパイプライン 直後の命令のEステージで,直前の命令のEステージの結果が参照できるようになる.
4.3.2 命令アドレス生成のタイミング • 無条件分岐の場合,Dステージ直後にPCを更新すれば制御ハザードが緩和できる. • 条件分岐では使えない.
4.3.3 遅延分岐 分岐のあるなしにかかわらず,実行する命令を「遅延分岐命令」の直後に入れておくと,ストールが防げる.
4.3.4 分岐予測 • 分岐するかどうかを予測して実行し,「予測が外れた場合に分岐命令以下の命令を破棄する」方法. • 外れた場合,F,D,Eステージに入っている命令をフラッシュする.
分岐予測 • 固定予測 • 命令アドレスが小さくなる方を予測 • 動的予測 右の状態遷移図に 従って動作する. この状態遷移を各 分岐命令毎に管理 するために,分岐 命令アドレスでイン デックス付けされた 分岐履歴テーブル を持つ.飽和カウンタ
2レベル適応予測器 • 各分岐命令毎に,過去の分岐の有無を記録した「大域分岐履歴レジスタ」を持っておき,この履歴のパターン毎に,飽和カウンタによる予測を行う.
4.3.5 命令スケジューリング • 依存関係にある命令を,プログラム中で出来るだけ離した位置に置くように並べ替える.