計算機構成論 (Chap. ) @C01 http://www.ngc.is.ritsumei.ac.jp/~ger/lectures/comparch2012/index.html (user=ganbare, passwd = 初回の講義で言いました ) 講義に出るなら 分からないなら質問しよう 単位を取りたいなら 章末問題は自分で全部といておこう ( レポートと考えればいいんです!) ご意見 ご要望 ご質問は 山下個人か ger@cs.ritsumei.ac.jp 受講者全員 ml-ca2012@ml.ritsumei.ac.jp にメールください 情報システム学科次世代コンピューティング研究室山下茂 0
Chap. のセルフチェック 以下の文章の意味がわからないなら 今から, 寝ないで聞いてみましょう 27 パイプライン処理は流れ作業に良くたとえられる 28 パイプライン処理によりスループットは良くなるが レイテンシは良くならない 29 IPSのパイプライン ステージは 5 つある 30 パイプラインのステージ間で情報を伝えるために パイプライン レジスタが必要 31 パイプライン方式の制御線の値は単一サイクルの時と基本的に同じである パイプライン方式の制御線の値は必要があればパイプラインレジスタ経由で伝播する 1
What to learn パイプラインの概要とマルチサイクルとの違い パイプラインの各ステージの詳細 1. IF ステージ ( 命令フェッチ ) Next Topic 2. ID ステージ ( 命令デコードとレジスタフェッチ ) 3. E ステージ ( 命令実行 or アドレス生成 ). Eステージ ( ) 5. WB ステージ ( 書き込み ) パイプライン全体の動作 ( 上記が同時並列的に動作 ) パイプラインの制御 各命令の実行をマルチサイクルで行うことを 複数の行う命令に対して1サイクルずらして同時並列実行 教材 : 教科書 5.5 章と6.6 章 2
マルチサイクルの考え方 Chap3 の復習 命令タイプ命令メモリレジスタ +α 操作データ メモリレジスタ +α 合計時間 R 形式 150 100 100 100 50 語のロード 150 100 100 150 100 600 語のストア 150 100 100 150 500 分岐 150 100 100 350 ジャンプ 150 150 New Idea クロックを150ps にしてもいいかも! 各サイクルで やメモリは一つでいい!( メリット 2) But, 各サイクルの最後に ( 次のサイクルで必要となるデータ ) を覚えるためのレジスタが必要となる ( これが理解できれば マルチサイクルが分かったことになる : 後で確認してください ) 3
命令実行過程のクロック サイクルへの分割 5 段のステップ ( 制御信号については省略 ) これは, マルチサイクルの復習 1. 命令フェッチステップ IR = メモリ []; =+; ( 命令フェッチとの計算 ) 2. 命令デコードとレジスタフェッチのステップ A= レジスタ [IR[25-21]]; B= レジスタ [IR[20-]]; (rs,rt フィールドの読込み ) Out = +( (IR[15-0] <<2)); ( 分岐先の計算 ) 3. 実行 メモリアドレスの計算または分岐の完了ステップ Out = A+ (IR[15-0]); ( メモリ参照の場合 ) Out = A 演算子 B; (R 形式命令の場合 ) if(a==b) =Out; ( 分岐 ) =[31-28] [31 (IR[25-0]<<2); 2); ( ジャンプ ). メモリアクセス またはR 形式命令完了ステップ DR = メモリ [Out]; ( ロードの場合 ) メモリ [Out]=B; ( ストアの場合 ) レジスタ [IR[15-11]]=Out; (R 形式命令の場合 ) 5. メモリし完了ステップレジスタ [IR[20-]]=DR; ( ロード )
お絵かきスペース 5
マルチサイクル v.s. パイプライン 命令タイプ命令メモリレジスタ読み込み 操作データ メモリ合計時間 R 形式 200 100 200 100 600 語のロード 200 100 200 200 100 800 語のストア 200 100 200 200 700 分岐 200 100 200 500 ジャンプ 200 200 p305の例題の類題で以下の問題を考えます 今からの説明を聞いて 後で出てくる自己確認クイズに自分で回答してください 上の状況をマルチサイクル方式とパイプライン方式で実現した時の違いについて述べよ 6
パイプライン処理の考え方 1: ステージに分割 命令タイプ命令メモリレジスタ読み込み 操作データ メモリ合計時間 R 形式 200 100 200 100 600 語のロード 200 100 200 200 100 800 語のストア 200 100 200 200 700 分岐 200 100 200 500 ジャンプ 200 200 IPS の場合 仕事のステップは 5 つにわかれている 仕事のステップのことを パイプライン処理の用語で ステージという 1. 命令メモリアクセス 2. レジスタ読み込み 3. で演算. データメモリアクセス 5. 7
パイプライン処理の考え方 2: 仕事が多い時を考える (1/3) 仕事のステップのことを パイプライン処理の用語で ステージという 1. 命令メモリアクセス 2. レジスタ読み込み 3. で演算. データメモリアクセス 5. IF ステージ ( 命令フェッチ ) ID ステージ ( 命令デコードとレジスタフェッチ ) E ステージ ( 命令実行 or アドレス生成 ) E ステージ ( ) WB ステージ ( 書き込み ) lw 命令を 1 つ実行する時 5 ステージ分の時間でできる ( マルチサイクルだと ) lw 命令を2つ実行する時 10ステージ分の時間でできる ( マルチサイクルだと ) IF ID E E WB IF ID E E WB 最初の命令 2 番目の命令 (Question) もっと早くできないか? 8
パイプライン処理の考え方 2: 仕事が多い時を考える (2/3) パイプライン処理複数のステップ ( ステージ ) からなる仕事を複数個 連続して行う時 各ステップ分ずらしながら 複数の仕事を同時並行的に行う処理 最初の命令 2 番目の命令 3 番目の命令 番目の命令 5 番目の命令 : IF ID E E WB IF ID E E WB IF ID E E WB IF ID E E WB IF ID E E WB IF ID E E WB 1 命令の処理には 5 サイクルを要するが 命令実行のは 1 サイクルごとに得られる 9
パイプライン処理の考え方 2: 仕事が多い時を考える (3/3) レイテンシ一つのタスク ( 今は一つの命令 ) の実行開始から完了までの時間スループット一定時間内に処理できる仕事の量 最初の命令 2 番目の命令 3 番目の命令 番目の命令 5 番目の命令 : パイプライン IF ID E E WB IF ID E E WB IF ID E E WB IF ID E E WB IF ID E E WB IF ID E E WB マルチサイクル レイテンシは 5 サイクル スループットは 1 命令 / サイクル レイテンシは 5 サイクル スループットは 02 0.2 命令 / サイクル 10
自己確認クイズ 1 命令タイプ命令メモリレジスタ読み込み 操作データ メモリ合計時間 R 形式 200 100 200 100 600 語のロード 200 100 200 200 100 800 語のストア 200 100 200 200 700 分岐 200 100 200 500 ジャンプ 200 200 上の状況をマルチサイクル方式とパイプライン方式で実現した時の違いについて述べよ 必ず レイテンシとスループットという用語を用いること例えば 依存関係のない lw 命令が 10 命令連続で続く場合を考えよ ( 注意 ) 教科書は 単一サイクル方式とパイプラインの比較 11
自己確認クイズ 1: 回答の方針 lw 命令が10 命令連続で続く場合 マルチサイクル方式 総実行時間 = 1000x10 = 10000 ps レイテンシ = 1000 ps スループット = 02 0.2 命令 / 200 ps パイプライン方式 総実行時間 = 1000 + 200x9 = 2800ps レイテンシ = 1000 ps スループット = 1 命令 /200ps 非常に多くの命令がある場合 両者の実行時間の比は いくらになるか? ( スループットの比に等しい ) 1000m 1 1 1000 + 200m = 1 1 1 = + m 5 5 5 12
お絵かきスペース 13
単一クロック サイクルのデータパスの 5 分割 IF: 命令フェッチ ID: 命令デコード + レジスタ フェッチ E: 命令実行 or アドレス生成 E: アドレスデータデータメモリ 図 33.33 1
ミニクイズ : もし 5 クロックで行うなら 何を追加しないといけないか? マルチ サイクルの時, 何を追加したか思い出そう 点線のところにレジスタ アドレスデータデータメモリ 図 33.33 15
単一クロック サイクルのデータパスの 5 分割 IF: 命令フェッチ ID: 命令デコード + レジスタ フェッチ E: 命令実行 or アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図 35.35
パイプライン方式のデータパス IF: 命令フェッチ ID: 命令デコード + レジスタ フェッチ E: 命令実行 or アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 17
例外処理を加えたマルチサイクル方式における全データバス Chap3 の再掲 WriteCond Write IorD emread emwrite emtoreg IRWrite 制御 IntCause CauseWrite EWrite Source Op SrcB SrcA RegWrite RegDst [31-28] 命令 [25-0] 0 命令 [31-26] 0 アドレス 1 メモリ 書込みデータ データ 命令 [25-21] 命令 [20-] 命令 [15-0] 命令レジスタ 命令 [15-0] メモリ データレジスタ 命令 [15-11] 0 1 0 1 レジスタ1 レジスタ2 データ 1 データ 2 レジスタ 2ビット左シフト 命令 [5-0] A B 1 0 1 2 3 26 28 2ビット左シフト 制御 ジャンプ先アドレス [31-0] 8000 0180 Out 0 1 0 1 0 1 2 3 E Cause 18
ミニクイズ 1 図.35や図.1を見たときに, マルチサイクルのデータパスの図と比べて, 大きく違うところは何か? 復習 : 単一サイクルとマルチサイクルの違い (Chap3) 命令メモリ データメモリ 1つのメモリ 1つのと2つの器 1つの 主要な機能ユニットの後ろに データ保持用のレジスタを追加 19
用語の確認 パイプライン ステージ IF ステージ ( 命令フェッチ ) ID ステージ ( 命令デコードとレジスタフェッチ ) E ステージ ( 命令実行 or アドレス生成 ) E ステージ ( ) WB ステージ ( 書き込み ) パイプライン レジスタ IF/ID レジスタ ID/E レジスタ E/E レジスタ E/WB レジスタ 後は 各ステージの動作を確認していくだけです ( 楽勝?) 20
自己確認クイズ 2 図.35は 単一クロックのデータパス ( 図.33) を5 分割して その分割の中間にレジスタを挿入している しかし それではパイプラインは正しくは動かないため それを修正した次のページのデータパス ( 図 1).1) でこれから勉強していきます では では 1. 図.35ではうまく処理できない命令は何か? 2. 図 35.35 と図 1.1 の違いは何か?( 修正点は何か?) ( 講義の後に解答を自分で考えてください ) 21
お絵かきスペース 22
What to learn パイプラインの概要とマルチサイクルとの違い パイプラインの各ステージの詳細 Next Topic 1. IF ステージ ( 命令フェッチ ) 2. ID ステージ ( 命令デコードとレジスタフェッチ ) 3. E ステージ ( 命令実行 or アドレス生成 ). Eステージ ( ) 5. WB ステージ ( 書き込み ) パイプライン全体の動作 ( 上記が同時並列的に動作 ) パイプラインの制御 各命令の実行をマルチサイクルで行うことを 複数の行う命令に対して1サイクルずらして同時並列実行 教材 : 教科書 5.5 章と6.6 章 23
重要問題 1 メモリの番地 10000 からの内容が以下のようになっているとする. パイプライン方式で, クロックサイクル 100 で 10000 番地の命令フェッチを開始するとする. 10000 100011 10000 01000 0000000000001100 注意! 101011 01001 01011 0000000000001100 000000 10000 10001 01111 00000 100000 000100 10001 10010 0000000000011001 000010 00000000000010011100010000 これ以降を理解するには,Chap3の内容の理解が必要 2
重要問題 1 10000 番地の命令の実行のみに注目するとして ( この問題では他の命令のことを考えない ), クロックサイクルがクサイクルが 100~1010 の各時点で, 命令の実行に論理的に関わっているモジュールと結線に色を塗り, またその結線の値を答えよ. クロックサイクル100の時点で, $8 から $12 の値は全て 100, $13 から $20 の値は全て200とする. なお, パイプラインレジスタについては, 読みだす場合は右側, 書き込む場合は左側だけを塗ること 25
重要問題 1:clock = 100 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 26
重要問題 1:clock=100 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 27
重要問題 1:clock = 101 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 28
重要問題 1:clock=101 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 29
重要問題 1:clock = 102 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 30
重要問題 1:clock=102 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 31
重要問題 1:clock = 103 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1
重要問題 1:clock=103 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 33
重要問題 1:clock = 10 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 3
重要問題 1:clock=10 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 35
お絵かきスペース 36
自己確認クイズ3 重要問題 1と同じ状況で 1000 番地の命令の実行のみに注目するとして ( この問題では他の命令のことを考えない ), クロックサイクルが 101~105105 の各時点で, 命令の実行に論理的に関わっているモジュールと結線に色を塗り, またその結線の値を答えよ. 37
自己確認クイズ 3:clock = 101 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 38
自己確認クイズ 3:clock=101 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 39
自己確認クイズ 3:clock = 102 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 0
自己確認クイズ 3:clock=102 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 1
自己確認クイズ 3:clock = 103 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 2
自己確認クイズ 3:clock=103 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 3
自己確認クイズ 3:clock = 10 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1
自己確認クイズ 3:clock=10 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 5
自己確認クイズ 3:clock = 105 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 6
自己確認クイズ 3:clock=105 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 7
お絵かきスペース 8
自己確認クイズ 重要問題 1と同じ状況で 10008 番地の命令の実行のみに注目するとして ( この問題では他の命令のことを考えない ), クロックサイクルが 102~106106 の各時点で, 命令の実行に論理的に関わっているモジュールと結線に色を塗り, またその結線の値を答えよ. 9
自己確認クイズ :clock = 102 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 50
自己確認クイズ :clock=102 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 51
自己確認クイズ :clock = 103 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 52
自己確認クイズ :clock=103 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 53
自己確認クイズ :clock = 10 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 5
自己確認クイズ :clock=10 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 55
自己確認クイズ :clock = 105 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 56
自己確認クイズ :clock=105 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 57
自己確認クイズ :clock = 106 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 58
自己確認クイズ :clock=106 ( 予備スライド ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 59
What to learn パイプラインの概要とマルチサイクルとの違い パイプラインの各ステージの詳細 1. IF ステージ ( 命令フェッチ ) 2. ID ステージ ( 命令デコードとレジスタフェッチ ) 3. E ステージ ( 命令実行 or アドレス生成 ). Eステージ ( ) 5. WB ステージ ( 書き込み ) パイプライン全体の動作 ( 上記が同時並列的に動作 ) パイプラインの制御 Next Topic 各命令の実行をマルチサイクルで行うことを 複数の行う命令に対して1サイクルずらして同時並列実行 教材 : 教科書 5.5 章と6.6 章 60
重要問題 2( これは少し難しいけど, 類題が試験に出るかも ) 重要問題 1と同じ状況で, クロックサイクル10の時の, パイプラインのデータパスの図のすべての結線において, 論理的に意味がある値が伝搬されている結線全ての値を示せる結線全値を. 61
パイプラインの実行の全体像ポイントパイプライン実行の全体像は, 実際には ( 最大 )5 命令の処理が同時並行的に行われている. 100 101 102 103 10 105 最初の命令 2 番目の命令 3 番目の命令 番目の命令 5 番目の命令 : IF ID E E WB IF ID E E WB IF ID E E WB IF ID E E WB IF ID E E WB IF ID E E WB 62
お絵かきスペース 63
重要問題 2 回答用スライド :WB IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 6
IF: 命令フェッチ 重要問題 2 回答用スライド :WB ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: 予備 IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 65
重要問題 2 回答用スライド :E IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 66
IF: 命令フェッチ 重要問題 2 回答用スライド :E ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: 予備 IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 67
重要問題 2 回答用スライド :E IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 68
IF: 命令フェッチ 重要問題 2 回答用スライド :E ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: 予備 IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 69
重要問題 2 回答用スライド :ID IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 70
IF: 命令フェッチ 重要問題 2 回答用スライド :ID ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: 予備 IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 71
重要問題 2 回答用スライド :IF IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 72
IF: 命令フェッチ 重要問題 2 回答用スライド :IF ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: 予備 IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 73
重要問題 2 回答用スライド ( 全体の統合 ) IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 7
IF: 命令フェッチ 重要問題 2 回答用スライド ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: 予備 IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 75
What to learn パイプラインの概要とマルチサイクルとの違い パイプラインの各ステージの詳細 1. IF ステージ ( 命令フェッチ ) 2. ID ステージ ( 命令デコードとレジスタフェッチ ) 3. E ステージ ( 命令実行 or アドレス生成 ). Eステージ ( ) 5. WB ステージ ( 書き込み ) パイプライン全体の動作 ( 上記が同時並列的に動作 ) パイプラインの制御 Next Topic 各命令の実行をマルチサイクルで行うことを 複数の行う命令に対して1サイクルずらして同時並列実行 教材 : 教科書 5.5 章と6.6 章 76
まず, 単一サイクルの時の制御の復習 複数レベルによるデコード法 主制御ユニットでopコードから大体の命令のグループを解読し それから 2ビットの op(2 ビット ) を生成 + 他の制御信号を生成 制御ユニットで op(2ビット ) とfunct(6ビット ) から ビットの 制御信号を生成 77
単一サイクルのデータパスと制御 Chap2 の再掲 命令メモリ 命令アドレス 命令 [31-0] 命令 [31-26] 命令 [25-21] 制御 RegDst Branch emread emtoreg Op emwrite Src RegWrite 2ビット左にシフト 0 1 AND 命令 [20-] レジスタ 書込アドレス 0 0 1 操作 命令 [15-11] 1 データメモリ データ 1 0 命令 [15-0] 制御 図 17.17 命令 [5-0] 78
制御入力の構成 (1/2) Chap2 の再掲 命令操作コード Op 命令操作機能コード実行する演算 制御コード lw 00 load word add 0010 sw 00 store word add 0010 branch equal 01 branch equal subtract 0110 R 形式 10 add 100000 add 0010 R 形式 10 subtract t 100010 subtract t 0110 R 形式 10 AND 100100 and 0000 R 形式 10 OR 100101 or 0001 R 形式 10 set on less than 101010 set on less than 0111 79
制御入力の構成 (2/2) Op 機能コードによる 制御入力の真理値表 Chap2 の再掲 Op 機能コード Op1 Op0 F5 F F3 F2 F1 F0 制御入力 ( 操作ビット ) 0 0 0010 1 0110 1 0 0 0 0 0010 1 0 0 1 0 0110 1 0 1 0 0 0000 1 0 1 0 1 0001 1 1 0 1 0 0111 真理値表ができれば回路の合成は可能 80
図. 制御信号の詳細 Chap2 の再掲 信号名ネゲートされたときの働きアサートされたときの働き RegDst 書込みレジスタのディスティネーションレジスタ番号が rt フィールド ( ビット 20:) から得られる 書込みレジスタのディスティネーションレジスタ番号が rd フィールド ( ビット 15:11) から得られる RegWrite なしレジスタにデータが書き込まれる Src の第 2 オペランドがレジスタファイルの第 2 出力 の第 2 オペランドが命令の下位 ビットをしたものになる Src + を計算した器の値が に分岐先を計算した器の値が に emread emwrite emtoreg なし なし しアドレスで指定されたデータメモリの内容がデータ出力へ 書込みアドレスで指定されたデータメモリへデータ入力の内容を書込む レジスタ書込みデータ入力へタ入力 レジスタ書込みデータ入力へ渡される値がタ入力 渡される値がから得られる データメモリから得られる Branch : beq の時 1 となる制御信号 からのと Branch の論理積を Src へ op(2 ビット ) 00:(load,store), 01:beq 10: 機能コード functの演算 (6 ビット ) 81
制御ユニットの仕上げ ( 完全な仕様 ) Chap2の再掲 制御関数の真理値表 ( 完全な仕様 ) 入力 図.22 R lw sw beq ミニクイズ 2 Op5 0 1 1 0 Op 0 0 0 0 Op3 0 0 1 0 Op2 0 0 0 1 Op1 0 1 1 0 各制御線はどのステージで使用されるか? Op0 0 1 1 0 RegDst 1 0 E Src 0 1 1 0 E emtoreg 0 1 WB RegWrite 1 1 0 0 WB 出力 emread 0 1 0 0 E emwrite 0 0 1 0 E Branch 0 0 0 1 E Op1 1 0 0 0 E Op0 0 0 0 1 E 82
お絵かきスペース 83
パイプラインのデータパス with 制御信号 Src 0 1 図.6 RegWrite 命令 [15-0] 命令 [20-] 6 2ビット左にシフト Src 0 0 1 制御 操作 Op Branch AND アドレス emwrite データメモリ データ emread emtoreg 1 0 命令 [15-11] 1 RegDst 8
パイプラインのデータパス with 制御信号 予備 Src 0 1 図.6 RegWrite 命令 [15-0] 命令 [20-] 6 2ビット左にシフト Src 0 0 1 制御 操作 Op Branch AND アドレス emwrite データメモリ データ emread emtoreg 1 0 命令 [15-11] 1 RegDst 85
パイプライン方式の制御 単一サイクルの時と制御の値は同じなお,とパイプライン レジスタに書き込み制御はなし単一サイクルの時, 制御の値はフェッチした命令から生成 パイプラインでは,IFステージでフェッチした命令から生成 必要な制御の値はそれを使用するステージにパイプラインレジスタを通じて供給 自己確認 5: 下図の各制御線の名前を答えよ. IF/ID ID/E E/E E/WB WB WB WB 制御 E E E E E E 86
Chap. のセルフチェック 以下の文章の意味がわからないなら 講義で寝ていた ( 笑 ) かもしれませんね 27 パイプライン処理は流れ作業に良くたとえられる 28 パイプライン処理によりスループットは良くなるが レイテンシは良くならない 29 IPSのパイプライン ステージは 5 つある 30 パイプラインのステージ間で情報を伝えるために パイプライン レジスタが必要 31 パイプライン方式の制御線の値は単一サイクルの時と基本的に同じである パイプライン方式の制御線の値は必要があればパイプラインレジスタ経由で伝播する ちゃんと聞いていたのに, わからなければ質問しましょう! 87
Chap. の試験に出るかもしれない用語集 パイプライン処理 IF ステージ ID ステージ Eステージ Eステージ WBステージ パイプライン レジスタ レイテンシ スループット 88
試験勉強頑張ってください! 重要問題 1 2 ミニクイズ全て 自己確認クイズ全て ( 自分でやるのが基本 ) ( 用語もチェック : 前のページ ) 89
章末問題 1 重要問題 1と同じ状況で 10012 番地の命令の実行のみに注目するとして ( この問題では他の命令のことを考えない ), クロックサイクルが103~107の各時点で, 命令の実行に論理的に関わっているモジュールと結線に色を塗り, またその結線の値を答えよ. 90
自習用 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 91
自習用 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 92
自習用 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 93
自習用 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 9
自習用 IF: 命令フェッチ ID: 命令デコード + E: 命令実行 or レジスタ フェッチ アドレス生成 E: IF/ID ID/E E/E E/WB アドレスデータデータメモリ 図.1 95