計算機構成論 (Chap 5) @C306(Chap. 5) @C306Chap. 5のセルフチェック...

72
計算機構成論 (Chap 5) @C306 計算機構成論 (Chap. 5) @C306 http://www.ngc.is.ritsumei.ac.jp/~ger/Lectures/CompArch2012/index.html (user=ganbare, passwd = 初回の講義で言いました) 講義に出るなら、分からないなら質問しよう。 単位を取りたいなら、章末問題は自分で全部といておこう (レポトと考えればいいんです!) ご意見、ご要望、ご質問は、 山下個人か [email protected] (レポ トと考えればいいんです!) 山下 受講者全員 にメールください。 [email protected] [email protected] 0 情報システム学科 次世代コンピューティング研究室 山下

Transcript of 計算機構成論 (Chap 5) @C306(Chap. 5) @C306Chap. 5のセルフチェック...

  • 計算機構成論 (Chap 5) @C306計算機構成論 (Chap. 5) @C306

    http://www.ngc.is.ritsumei.ac.jp/~ger/Lectures/CompArch2012/index.html(user=ganbare, passwd = 初回の講義で言いました)

    講義に出るなら、分からないなら質問しよう。単位を取りたいなら、章末問題は自分で全部といておこう(レポートと考えればいいんです!)

    ご意見、ご要望、ご質問は、山下個人か [email protected]

    (レポ トと考えればいいんです!)

    山下 茂

    山下個人か受講者全員にメールください。

    [email protected]@cs.ritsumei.ac.jp

    0

    情報システム学科 次世代コンピューティング研究室 山下 茂

  • パイプライン処理の考え方②:仕事が多い時を考える(3/3)Chap4のスライド再掲

    一つのタスク(今は一つの命令)の実行開始から完了までの時間

    レイテンシ

    一定時間内に処理できる仕事の量

    スループット

    最初の命令

    2番目の命令

    IF ID EX MEM WB

    IF ID EX MEM WB

    実はこれは理想うまくいかない現実をこれから勉強2番目の命令

    3番目の命令

    4番目の命令

    番 命令

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    これから勉強

    5番目の命令

    IF ID EX MEM WB

    IF ID EX MEM WB

    パイプライン マルチサイクル

    • レイテンシは、5サイクルスル プ トは 1命令/サイクル

    パイプライン

    • レイテンシは、5サイクルスル プットは 0 2命令/サイクル

    マルチサイクル

    1

    • スループットは、1命令/サイクル • スループットは、0.2命令/サイクル

  • Chap. 5のセルフチェック以下の文章の意味がわからないなら、今から,寝ないで聞いてみましょう。聞いてみましょう。

    33 パイプライン処理が理想通りにいかない事態をハザードと呼ぶ.

    34 ハザードにはデータハザードと制御ハザードがある.

    35 デ タ ザ ドはほとんどの場合フ ワ デ ングによりスト ルする必要がない35 データハザードはほとんどの場合フォワーディングによりストールする必要がない.

    36 ストールするために,nop命令を使う.

    37 制御ハザードに対処するために,動的分岐予測が使われる.

    2

  • What to learn パイプライン処理が理想通りにいかない2つの事象とその対処方法

    ハザード=パイプライン処理において次のクロック・サイクルで次の

    • データハザード

    ハザード=パイプライン処理において次のクロック・サイクルで次の命令が実行できない事態

    N t T i• データハザード1. MEMハザードの条件とフォワーディング2. EXハザードの条件とフォワーディング

    Next Topic

    3. フォワーディングでは対処不可能な条件とストール• 制御ハザード(分岐ハザード)

    1 常に分岐が成立しないと予測して後続命令をフ チ1. 常に分岐が成立しないと予測して後続命令をフェッチ2. 動的分岐予測に分岐先命令をフェッチ– いずれの場合も予測がはずれるとパイプライン上で実行してず 場合 予測 ず ラ 実行

    はいけない命令をフラッシュ

    教材

    3• 教科書4.7~4.8

  • 教科書P335の例データハザードとは?

    命令の実行に必要なデータがまだ利用可能になっていないために予定している命令が実行できない状況

    以下の例でデータハザードは3タイプある!それぞれの条件と対策方法が分かれば,OK

    sub $2, $1, $3 #$2に引き算の結果を格納and $12 $2 $5 #第1オペランドがsubに依存and $12, $2, $5 #第1オペランドがsubに依存or $13, $6, $2 #第2オペランドがsubに依存add $14 $2 $2 #第1 2オペランドがsubに依存add $14, $2, $2 #第1, 2オペランドがsubに依存sw $15, 100($2) #インデックスがsubに依存

    b命令が$2の値を更新し 後続命令がそれを使用ポイ ト sub命令が$2の値を更新し,後続命令がそれを使用ポイント

    簡単な方法:and命令以降の実行を遅らせる( ストール )

    4

    簡単な方法:and命令以降の実行を遅らせる( スト ル )

  • お絵かきスペース

    5

  • データをレジスタに読み/書きするステージは?

    • 新しいレジスタの値が決定するのは,EX ステージ値を ジ タ 格納す は ジ

    レジスタの値を更新する命令 sub $2, $1, $3

    レジスタの値を使用する命令

    • その値をレジスタに格納するのは,WB ステージ

    subの後続命令

    • 必要なオペランドをレジスタからロードするのは,ID ステージ• 実際にそのデータを使うのは EX ステージ

    レジスタの値を使用する命令 subの後続命令

    実際にそのデ タを使うのは,EX ステ ジ

    b $2 $1 $3

    ミニミニクイズこのままでは,どの命令の

    CC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    sub $2, $1, $3and $12, $2, $5or $13, $6, $2

    , 命令実行結果が所望と違うか?

    IF ID EX MEM WB

    IF ID EX MEM WBadd $14, $2, $2sw $15, 100($2)

    6

  • お絵かきスペース

    7

  • ミニクイズ1: CC5の時点のパイプラインの様子を下図で説明せよ

    命令デ ド 命令実行IF: 命令フェッチ

    ID: 命令デコード+レジスタ・フェッチ

    EX: 命令実行 orアドレス生成

    MEM: データ・メモリ・アクセス

    WB:レジスタ書き込み

    4加算

    加算IF/ID EX/MEM MEM/WBID/EX

    読出 読出

    命令アドレスPC

    2ビット左にシフト

    MUX

    レジスタ

    読出reg1

    ALUALU結果

    読出reg2書込reg

    読出reg1

    読出reg2

    ゼロ判定

    読出デ タ

    アドレス

    命令

    命令メモリ M 結果reg書込データ

    データメモリ

    書込データ

    データ命令 M

    UX

    MUX

    符号拡張

    3216

    図4.41

    8

  • お絵かきスペース

    9

  • 3つ前の命令の結果を使う場合 (CC5)

    • レジスタの値を更新するのは,WBステージ

    レジスタの値を更新する命令 sub $2, $1, $3 今WBステージ

    レジスタの値を使用する命令 add $14, $2, $2 今IDステージ

    • 必要なオペランドをレジスタからロードするのは,IDステージCC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    sub $2, $1, $3and $12, $2, $5or $13 $6 $2 IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    or $13, $6, $2add $14, $2, $2sw $15, 100($2)

    レジスタはクロックサイクルの前半で読み込み,すぐ値を更新するタイプを使うWBステ ジの前半で書き込んでも それをIDステ ジの後半で読みだせる

    解決策

    10

    → WBステージの前半で書き込んでも,それをIDステージの後半で読みだせる.

  • お絵かきスペース

    11

  • 2つ前の命令の結果を使う場合: MEMハザード (CC5)

    • 更新するレジスタの値は,MEM/WB レジスタに格納

    レジスタの値を更新する命令 sub $2, $1, $3 今WBステージ

    レジスタの値を使用する命令 or $13, $6, $2 今EXステージ

    • 必要なオペランドを使うのは,EXステージCC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    sub $2, $1, $3and $12, $2, $5or $13 $6 $2 IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    or $13, $6, $2add $14, $2, $2sw $15, 100($2)

    MEMの結果(MEM/WBレジスタから)をALUの入力に転送(フォワーディング)する

    解決策

    12

  • お絵かきスペース

    13

  • ミニクイズ2: CC4の時点のパイプラインの様子を下図で説明せよ

    命令デ ド 命令実行IF: 命令フェッチ

    ID: 命令デコード+レジスタ・フェッチ

    EX: 命令実行 orアドレス生成

    MEM: データ・メモリ・アクセス

    WB:レジスタ書き込み

    4加算

    加算IF/ID EX/MEM MEM/WBID/EX

    読出 読出

    命令アドレスPC

    2ビット左にシフト

    MUX

    レジスタ

    読出reg1

    ALUALU結果

    読出reg2書込reg

    読出reg1

    読出reg2

    ゼロ判定

    読出デ タ

    アドレス

    命令

    命令メモリ M 結果reg書込データ

    データメモリ

    書込データ

    データ命令 M

    UX

    MUX

    符号拡張

    3216

    図4.41

    14

  • お絵かきスペース

    15

  • 1つ前の命令の結果を使う場合: EXハザード (CC4)

    レジスタの値を更新する命令 sub $2, $1, $3 今MEMステージ

    • 更新するレジスタの値は,EX/MEM レジスタに格納

    レジスタの値を使用する命令 and $12, $2, $5 今EXステージ

    • 必要なオペランドを使うのは,EXステージCC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    sub $2, $1, $3and $12, $2, $5or $13 $6 $2 IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    or $13, $6, $2add $14, $2, $2sw $15, 100($2)

    EXの結果(EX/MEMレジスタから)をALUの入力に転送(フォワーディング)する

    解決策

    16

  • お絵かきスペース

    17

  • パイプライン・レジスタの各フィールドの呼び方

    add $t0 $s0 $s1add $t0 $s0 $s1 ($t0=$s0+$s1)

    000000 10000

    add $t0, $s0, $s1

    10001 01000 00000 100000op rs rt rd shamt funct

    000000

    add $t0, $s0, $s1

    01000 00000 100000op rs rt rd shamt funct

    ($t0=$s0+$s1)

    $s0 $s1 $t0000000 10000 10001 01000 00000 100000

    add $s0 $s1 $t0000000 01000 00000 100000

    add

    lw $t0, 12($s0)op rs rt address

    *配布資料から、rs, rt, rdフィールドがどこか読み取れるように

    100011 000000000000110001000$t0

    10000$s0 +12lw

    rs rtrdrt

    読みだすレジスタ番号は、

    書き込む可能性があるレジスタ番号は、

    IF/ID.RegisterRd: IF/IDレジスタの中のrdの情報

    18*他も同様に指定(図4.60参照)

  • フォワーディング制御の概要図

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    19図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • ミニクイズ3EXハザード(1つ前の命令の結果を必要とする状況)が発生する条件を2つ挙EXハザード(1つ前の命令の結果を必要とする状況)が発生する条件を2つ挙げよ.また、それぞれの時に、制御線ForwardA, ForwardBはどのように設定すれば良いか?(回答)(回答)①EX/MEM.RegWrite=1 かつEX/MEM.RegisterRd = ID/EX.RegisterRsこの時,ForwardA = 10と制御すれば良い.②② EX/MEM.RegWrite=1 かつEX/MEM.RegisterRd = ID/EX.RegisterRtこの時,ForwardB = 10と制御すれば良い.(解説)( )•EX/MEM.RegisterRdは,今MEMステージにある命令(先行命令)の書き込みレジスタ番号

    •ID/EX.RegisterRsは,ID/EX.RegisterRsは,今EXステージにある命令(後続命令)のALUの上側の入力データを供給するレジスタ番号

    •ID/EX RegisterRtは•ID/EX.RegisterRtは,今EXステージにある命令(後続命令)のALUの下側の入力データを供給するレジスタ番号

    20*教科書にはEX/MEM.RegisterRd≠0も条件に書かれていますが,本質でないので割愛します.

  • お絵かきスペース

    21

  • ミニクイズ4MEMハザード(2つ前の命令の結果を必要とする状況)が発生する条件を2つMEMハザード(2つ前の命令の結果を必要とする状況)が発生する条件を2つ挙げよ.また、それぞれの時に、制御線ForwardA, ForwardBはどのように設定すれば良いか?

    (回答)①MEM/WB.RegWrite=1 かつMEM/WB.RegisterRd = ID/EX.RegisterRs

    ばこの時,ForwardA = 01と制御すれば良い.②MEM/WB.RegWrite=1 かつMEM/WB.RegisterRd = ID/EX.RegisterRtこの時,ForwardB = 01と制御すれば良い.

    (解説)•MEM/WB.RegisterRdは,MEM/WB.RegisterRdは,今WBステージにある命令(先行命令)の書き込みレジスタ番号

    22*教科書にはMEM/WB.RegisterRd≠0も条件に書かれていますが,本質でないので割愛します.

  • お絵かきスペース

    23

  • ミニクイズ5前ページのミニクイズ4の回答は 実は不完全です どのような場合に前ページのミニクイズ4の回答は,実は不完全です.どのような場合に正しく動作しないか?そして,正しい回答を示せ.

    (回答)(回答)①MEM/WB.RegWrite=1 かつMEM/WB.RegisterRd = ID/EX.RegisterRsに加えて, EX/MEM.RegisterRd≠ID/EX.RegisterRsこの時,ForwardA = 01と制御すれば良い.

    ②MEM/WB.RegWrite=1 かつMEM/WB.RegisterRd = ID/EX.RegisterRt② g g gに加えて, EX/MEM.RegisterRd ≠ ID/EX.RegisterRtこの時,ForwardB = 01と制御すれば良い.

    (前ページのままではうまくいかない例)

    ①add $1, $1, $2②add $1, $1, $3③add $1 $1 $4

    ③の実行時に,フォワードしないといけないのは,①それとも②どちらの結果でしょう?

    24

    ③add $1, $1, $4

  • お絵かきスペース

    25

  • 重要問題1

    クロックサイクル1000で,以下の命令列の最初のsub命令のフェッチを開始するとする。最初に$2=10, $1=20, $3=30であったとする それ以前の命令は全て無視することにするする。それ以前の命令は全て無視することにする。クロックサイクル1001,1002,1003,1004のそれぞれの時刻に,図4 60の回路の各結線の値とレジスタ$2の値を述べよ図4.60の回路の各結線の値とレジスタ$2の値を述べよまた,ALUの入力となっているMUXが何を選択しているかも回答せよ.

    sub $2, $1, $3 #$2に引き算の結果を格納

    (この問題の設定だけでは値が不明な結線は答える必要はない)

    and $12, $2, $5 #第1オペランドがsubに依存or $13, $6, $2 #第2オペランドがsubに依存add $14, $2, $2 #第1, 2オペランドがsubに依存sw $15, 100($2) #インデックスがsubに依存

    26

    , ( )

  • お絵かきスペース

    27

  • 重要問題1回答 clock=1001

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    28図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • 重要問題1回答 clock=1001 (予備)

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    29図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • 重要問題1回答 clock=1002

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    30図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • 重要問題1回答 clock=1002 (予備)

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    31図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • 重要問題1回答 clock=1003

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    32図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • 重要問題1回答 clock=1003 (予備)

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    33図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • 重要問題1回答 clock=1004

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    34図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • 重要問題1回答 clock=1004 (予備)

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    35図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • What to learn パイプライン処理が理想通りにいかない2つの事象とその対処方法

    ハザード=パイプライン処理において次のクロック・サイクルで次の

    • データハザード

    ハザード=パイプライン処理において次のクロック・サイクルで次の命令が実行できない事態

    • データハザード1. MEMハザードの条件とフォワーディング2. EXハザードの条件とフォワーディング3. フォワーディングでは対処不可能な条件とストール

    • 制御ハザード(分岐ハザード)1 常に分岐が成立しないと予測して後続命令をフ チ

    Next Topic

    1. 常に分岐が成立しないと予測して後続命令をフェッチ2. 動的分岐予測に分岐先命令をフェッチ– いずれの場合も予測がはずれるとパイプライン上で実行してず 場合 予測 ず ラ 実行

    はいけない命令をフラッシュ

    教材

    36• 教科書4.7~4.8

  • フォワーディングでは対処不可能な条件とストール

    以下の場合は,フォワーディングではうまくいない.理由を考えよ

    lw $2 20($1)

    理由を考えよ.

    lw $2, 20($1)and $4, $2, $5or $8 $6 $2or $8, $6, $2add $14, $2, $2sw $15 100($2)sw $15, 100($2)

    37

  • lwの結果をすぐ次の命令が使用するとき

    レジスタの値を更新する命令 lw $2, 20($1) 今MEMステージ

    • 更新するレジスタの値は,MEMステージで決定

    レジスタの値を使用する命令 and $4, $2, $5 今EXステージ

    • 必要なオペランドを使うのは,EXステージ

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    lw $2, 20($1)and $4, $2, $5or $8 $6 $2 IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    or $8, $6, $2add $14, $2, $2sw $15, 100($2)

    解決策

    フォワーディングではうまくいかないので,ストールする

    38

  • お絵かきスペース

    39

  • ストールの実行の仕方

    後続命令のIDステージで,ストールすべきか判断可能(ミニクイズ6参照)(図中のハザード検出ユニットで判定をする)

    ストール:nop命令(何もしない命令)を挿入して,後続命令をその分遅らせる

    IF ID EX MEM WBl $2 20($1)

    CC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    lw $2, 20($1)and $4, $2, $5or $8, $6, $2add $14 $2 $2 IF ID EX MEM WB

    IF ID EX MEM WB

    add $14, $2, $2sw $15, 100($2)

    • CC3でand命令はすぐに実行できないと判断し,nop命令に変更(ID/EXレジスタの内容をすべて0 にする)

    以下で CC3以降の様子の概略を見ていきましょう

    40

    以下で,CC3以降の様子の概略を見ていきましょう.

  • お絵かきスペース前ページでストールが必要な命令数は?

    41

  • ストールの実行例 (CC3)CC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WBlw $2, 20($1)

    CC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    and $4, $2, $5or $8, $6, $2add $14, $2, $2

    $ $ IF ID EX MEM WBsw $15, 100($2)

    ID/EX EX/MEM MEM/WBIF/IDIFステージ IDステージ EXステージ MEMステージ WBステージ

    lwandor lwandor

    • CC3でand命令はすぐに実行できないと判断したら,1. ID/EXレジスタの内容をすべて0にする.2. IF/IDレジスタの内容を変更しない

    ⇒フラッシュ

    42

    容を変更3. PCを変更しない(+4しない)

  • お絵かきスペース

    43

  • ストールの実行例 (CC4)CC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WBlw $2, 20($1)

    CC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    nopand $4, $2, $5or $8, $6, $2

    $ $ $ IF ID EX MEM WBadd $14, $2, $2sw $15, 100($2)

    ID/EX EX/MEM MEM/WBIF/IDIFステージ IDステージ EXステージ MEMステージ WBステージIFステ ジ IDステ ジ EXステ ジ MEMステ ジ WBステ ジ

    lwandor nopp

    44

  • ストールの実行例 (CC5)CC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WBlw $2, 20($1)

    CC1 CC2 CC3 CC4 CC5 CC6

    IF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    nopand $4, $2, $5or $8, $6, $2

    $ $ $ IF ID EX MEM WBadd $14, $2, $2sw $15, 100($2)

    ID/EX EX/MEM MEM/WBIF/IDIFステージ IDステージ EXステージ MEMステージ WBステージIFステ ジ IDステ ジ EXステ ジ MEMステ ジ WBステ ジ

    lwandor nopadd p

    フォワ ディング

    45

    フォワーディング

  • ミニクイズ6データハザードによりストールしなければならない状況が発生する条件を述べよデータハザードによりストールしなければならない状況が発生する条件を述べよ.

    (回答)ID/EX M R d 1 かつID/EX.MemRead=1 かつ

    ID/EX.RegisterRt = IF/ID.RegisterRsまたはID/EX.RegisterRt = IF/ID.RegisterRt

    この時,パイプラインをストールさせる(解説)( )•ID/EX.MemRead=1は,先行命令がlw であることを意味する•ID/EX.RegisterRtは,今EXステージにある命令(先行命令)の書き込みレジスタ番号今EXステ ジにある命令(先行命令)の書き込みレジスタ番号

    •IF/ID.RegisterRsは,今IDステージにある命令(後続命令)のALUの上側の入力データを供給するレジスタ番号供給するレジスタ番号

    •F/ID.RegisterRtは,今IDステージにある命令(後続命令)のALUの下側の入力データを供給するレジスタ番号

    46

    供給するレジスタ番号

  • お絵かきスペース

    47

  • 自己確認クイズ ストールすべき時,ハザード検出ユニットの3つの出力によりどのように各部の動作が制御されるか説明せよ

    WB WBWBIF/IDWrite

    ハザード・検出ユニット

    ID/EX.MemRead

    IF/ID制御 M

    EX

    M

    EX

    M

    EX

    MUX

    PCWrite0

    ID/EX MEM/WB

    読出reg1

    ALU読出読出reg1PC 命令メモリ

    MUX

    ID/EX EX/MEMMEM/WB

    0

    1

    ALU読出reg2書込reg

    書込データ

    読出reg2

    データメモリ

    読出データ

    アドレス

    命令メモリ

    MUX

    X

    レジスタ

    MUX

    2

    01

    デ タ

    書込データIF/ID.RegisterRsIF/ID.RegisterRt

    IF/ID.RegisterRdMUX

    レジスタ

    Rt

    Rd EX/MEM.RegisterRd

    ForwardAForwardB

    2

    フォワーディング・ユニット

    Rs

    ID/EX.RegisterRt

    Rt MEM/WB.RegisterRd

    48図4.60:分岐の実現や符号拡張などの回路は省略されている.

  • お絵かきスペース

    49

  • What to learn パイプライン処理が理想通りにいかない2つの事象とその対処方法

    ハザード=パイプライン処理において次のクロック・サイクルで次の

    • データハザード

    ハザード=パイプライン処理において次のクロック・サイクルで次の命令が実行できない事態

    • データハザード1. MEMハザードの条件とフォワーディング2. EXハザードの条件とフォワーディング3. フォワーディングでは対処不可能な条件とストール

    • 制御ハザード(分岐ハザード)1 常に分岐が成立しないと予測して後続命令をフ チ

    Next Topic

    1. 常に分岐が成立しないと予測して後続命令をフェッチ2. 動的分岐予測に分岐先命令をフェッチ– いずれの場合も予測がはずれるとパイプライン上で実行してず 場合 予測 ず ラ 実行

    はいけない命令をフラッシュ

    教材

    50• 教科書4.7~4.8

  • 制御ハザード(分岐ハザード)とは?パイプライン処理において、分岐が存在するため、フェッチ済みの後続する命令が実行すべき命令か否か判断できず、所定のクロック・サイクル内では命令を実行できない状況は命令を実行できない状況

    140:beq $1 $3 7clock=100 140:beq $1, $3, 7144:and $12, $2, $5148 $13 $6 $2

    clock=100

    148:or $13, $6, $2152:add $14, $2, $2156 b $2 $4 8156:beq $2, $4, 8

    172 $15 100($2)172:sw $15, 100($2) #条件成立時のbeqからの分岐先

    51

  • ミニクイズ7前ペ ジの命令列において clock 103の時のPCの値と clock 104の時の前ページの命令列において,clock=103の時のPCの値と,clock=104の時のPCの値がどのように設定されるかを以降のページの図を用いて説明せよ.beq命令の分岐は成立するとする.

    IF ID EX MEM WB

    100 101 102 103 104 105clock

    140:beq $1 $3 7 IF ID EX MEM WBIF ID EX MEM WB

    IF ID EX MEM WB

    IF ID EX MEM WB

    140:beq $1, $3, 7144:and $12, $2, $5148:or $13, $6, $2

    IF ID EX MEM WB

    IF ID EX MEM WB

    ID/EX EX/MEM MEM/WBIF/ID

    152:add $14, $2, $2

    ID/EX EX/MEM MEM/WBIF/IDIFステージ IDステージ EXステージ MEMステージ WBステージ

    beqandoradd

    52

  • お絵かきスペース

    53

  • ミニクイズ7の回答 clock=103

    命令デ ド 命令実行IF: 命令フェッチ

    ID: 命令デコード+レジスタ・フェッチ

    EX: 命令実行 orアドレス生成

    MEM: データ・メモリ・アクセス

    WB:レジスタ書き込み

    4加算

    加算IF/ID EX/MEM MEM/WBID/EX

    読出 読出

    命令アドレスPC

    2ビット左にシフト

    MUX

    レジスタ

    読出reg1

    ALUALU結果

    読出reg2書込reg

    読出reg1

    読出reg2

    ゼロ判定

    読出デ タ

    アドレス

    命令

    命令メモリ M 結果reg書込データ

    データメモリ

    書込データ

    データ命令 M

    UX

    MUX

    符号拡張

    3216

    図4.41

    54

  • お絵かきスペース

    55

  • ミニクイズ7の回答 clock=104

    命令デ ド 命令実行IF: 命令フェッチ

    ID: 命令デコード+レジスタ・フェッチ

    EX: 命令実行 orアドレス生成

    MEM: データ・メモリ・アクセス

    WB:レジスタ書き込み

    4加算

    加算IF/ID EX/MEM MEM/WBID/EX

    読出 読出

    命令アドレスPC

    2ビット左にシフト

    MUX

    レジスタ

    読出reg1

    ALUALU結果

    読出reg2書込reg

    読出reg1

    読出reg2

    ゼロ判定

    読出デ タ

    アドレス

    命令

    命令メモリ M 結果reg書込データ

    データメモリ

    書込データ

    データ命令 M

    UX

    MUX

    符号拡張

    3216

    図4.41

    56

  • お絵かきスペース

    57

  • 制御ハザード(分岐ハザード)の対処方法

    分岐命令による分岐先のアドレスの決定はMEMステージで行われる.*Chap4の章末問題参照(MEMステージでPCを書き換え,その次のクロックで分岐先の命令をフェッチ)

    もし 分岐が成立すると 後続命令3つを廃棄しなければならないもし,分岐が成立すると,後続命令3つを廃棄しなければならない

    (パイプライン)フラッシュ:命令を廃棄すること(パイプライン)フラッシュ:命令を廃棄すること→廃棄する命令に対応するパイプラインレジスタをすべて0にする→nop命令に変更

    *ハードウェアを追加すれば,IDステージで次に実行すべき命令の番地の決定が可能。その場合,フラッシュしないといけない命令は1つとなる(教科書p 349-p 350参照 ただし本講義ではその改良については触れない)

    58

    (教科書p.349 p.350参照,ただし本講義ではその改良については触れない)

  • 動的分岐予測(1ビット方式)分岐予測バッファ(分岐履歴テーブル)に,分岐命令のアドレス(の下位ビット)のindexで分岐したかどうかの1ビットを覚えておく.

    beq命令アドレスの下位 前回分岐したか?

    0 1(分岐)0 1(分岐)

    … …

    38 0(分岐せず)38 0(分岐せず)

    40 1(分岐)

    … …

    IFステージで表を見て,次にフェッチすべき命令のアドレス計算してPCにセット測が当たればペ な→ 予測が当たればペナルティなし

    → 予測が外れればフェッチした後続命令をフラッシュ

    59

  • ミニクイズ8以下のループの2回目の実行で,beq命令は10回実行されるが,1ビットの予測方式では,予測の成功確率はいくらか?

    i 9for(i=0; i !=9; i++){

    ループ}

    beq $1, $3, 7}

    予測成功の確率=80%実際の分岐比率は90%

    実際のプログラムの大半では、ループ処理や例外処理など各分岐先への分岐比率は偏りが大きいため 分岐予測は結構あたるので大変有用

    60

    岐比率は偏りが大きいため、分岐予測は結構あたるので大変有用.

  • お絵かきスペース

    61

  • 各カウンターは以下のような4つの状態を表す2ビット方式

    各カウンターは以下のような4つの状態を表す。11:分岐する(可能性大):Strongly taken10:分岐する(可能性小):Weakly taken01:分岐しない(可能性小):Weakly not taken00:分岐しない(可能性大):Strongly not taken

    不成立11分岐と予測

    10分岐と予測

    不成立

    成立

    成立

    成立

    不成立

    成立 不成立

    00分岐しないと予測

    不成立

    成立

    01分岐しないと予測

    不成立

    •2回連続で分岐が不成立なら,次から不成立と予測2回連続で予測がはずれたら,予測を次から変更

    成立 不成立

    62

    •2回連続で分岐が成立したら,次から成立と予測

  • ミニクイズ9以下のループの2回目の実行で,beq命令は10回実行されるが,2ビットの予測方式では,予測の成功確率はいくらか?

    i 9for(i=0; i !=9; i++){

    ループ}

    beq $1, $3, 7}

    予測成功の確率=90%実際の分岐比率は90%なので理想的

    63

  • お絵かきスペース

    64

  • Chap. 5のセルフチェック以下の文章の意味がわからないなら、講義で寝ていた(笑)かもしれませんね。かもしれませんね。

    33 パイプライン処理が理想通りにいかない事態をハザードと呼ぶ.

    34 ハザードにはデータハザードと制御ハザードがある.

    35 デ タ ザ ドはほとんどの場合フ ワ デ ングによりスト ルする必要がない35 データハザードはほとんどの場合フォワーディングによりストールする必要がない.

    36 ストールするために,nop命令を使う.

    37 制御ハザードに対処するために,動的分岐予測が使われる.

    ちゃんと聞いていたのに,わからなければ質問しましょう!

    65

  • Chap. 5の試験に出るかもしれない用語集

    •データ・ハザード•フォワーディングフォワ ディング•ストール•nop•分岐ハザード、制御ハザード•分岐予測フラ シ•フラッシュ

    66

  • 章末問題0:講義中にやった問題と似たのが試験に出るかも

    • 重要問題1重要問題1• ミニクイズ全て

    自己確認クイズ全て(自分でやるのが基本)• 自己確認クイズ全て(自分でやるのが基本)

    67

  • 章末問題1機能モジュールの遅延は以下とする•メモリユニット 200psALU(加算器も) 200•ALU(加算器も) 200ps

    •レジスタファイル(読出し/書込み) 50psそれ以外では遅延なしとする。

    プ グ命令ミックス(プログラム内の命令の比率)がロード25%, ストア10%, 分岐11%, ジャンプ2%, ALU命令52%, の時に,(講義で行った方式の)単一サイクル,マルチサイクル,パイプラインの各方式の性能を比較せよ.ただし,•lw命令の半分はその結果を使用する命令が直後に続くlw命令の半分はその結果を使用する命令が直後に続く•分岐予測の1/4がはずれる•ジャンプ命令,分岐命令の予測が外れた場合は,3サイクル分ストールする(講義で行った単純な方式)行った単純な方式)とする.

    68

  • 最後に

    この講義では,いろんなことをしました(次ページ参照)せっかく”情報”を勉強しいているのだから計算機の基本的なっかく 情報 を勉強しいているのだから計算機の基本的な動作ぐらいは理解する気合いで,試験勉強してください.

    システム学科の二回生の方へ:

    •計算機アーキテクチャのより詳しいこと(特にキャッシュとか)は,3回生以上配当の計算機システムを受講してください3回生以上配当の計算機システムを受講してください。•実際にどのようにCPUの設計を記述する(プログラミング減gのように)かは3回生配当のデジタル設計を受講してください。ように)かは3回生配当のデジタル設計を受講してください。

    絶対に単位が欲しい方は、勉強してください。出来が悪かったからといって相談に来ても私は何もできません。

    試験が終わってから遊びましょう!(そ 前 あと 週間ほど気合 勉強 )

    69

    (その前にあと1週間ほど気合いで勉強!)

  • チェックリスト:覚えていますか?その11 MIPSの命令形式には、R形式、I形式、J形式などがある。命令形 に 、 形 、 形 、 形 な ある。2 PCのさすアドレスから、命令をフェッチして実行する。3 分岐がないときは、PCはPC+4に更新される。

    4 プロセッサは制御とデータパスよりなる。制御 。

    5 命令により、また処理の段階によりデータパスは異なる。

    6 データパスの切り替えはMUXで行う。

    7 組み合わせ回路と順序回路の違いを知っている。

    8 D-FFとは何かを知っている。9 クロック、同期式という言葉の意味を知っている。

    10 最長パスでクロック周期がきまる。

    11 レジスタ・ファイルとの入出力の意味を知っている。

    12 ALUの機能は、制御入力で決定する

    13 論理演算を実行しているときのデータパスの図を説明できる。

    ド ト を実行し るとき デ タパ 図を説明 きる14 ロード・ストアを実行しているときのデータパスの図を説明できる。

    15 分岐命令を実行しているときのデータパスの図を説明できる。

    16 図4.11のMUXがある時点でどちらの入力を選択するかがわかる。17 MIPSの単純な実現では 制御信号を主制御 トとALU制御 トで生成する17 MIPSの単純な実現では、制御信号を主制御ユニットとALU制御ユニットで生成する。

    18 主制御ユニットの入力は、オペコードの部分である。

    19 単一クロックサイクル方式では、命令によって実行に本質的に必要な時間が異なる。

    用語ぐらいは知 ておいても損はないはず

    70

    用語ぐらいは知っておいても損はないはず

  • チェックリスト:覚えていますか?その2単 ク ク サイク 方式 は性能があまり な20 単一クロック・サイクル方式では性能があまりでない。

    21 マルチサイクル方式は単一サイクル方式に比べて2つの利点がある。

    22 マルチサイクル方式では、情報を一時的に保持するレジスタが必要となる。

    23 マルチサイクル方式では 5サイクルかけて各命令を実行する23 マルチサイクル方式では、5サイクルかけて各命令を実行する。

    24 マルチサイクル方式では、制御回路を組み合わせ回路で実現できない。

    25 マイクロプログラミングという用語を知っている。

    26 プロセッサに関する用語として 例外 割り込みという用語を知っている26 プロセッサに関する用語として、例外、割り込みという用語を知っている。

    27 パイプライン処理は流れ作業に良くたとえられる。

    28 パイプライン処理によりスループットは良くなるが、レイテンシは良くならない。

    29 MIPSのパイプライン・ステージは 5つある29 MIPSのパイプライン ステ ジは、5つある。

    30 パイプラインのステージ間で情報を伝えるために、パイプライン・レジスタが必要。

    31 パイプライン方式の制御線の値は単一サイクルの時と基本的に同じである。

    32 パイプライン方式の制御線の値は必要があればパイプラインレジスタ経由で伝播する。イプライ 方式 制御線 値は必要があれば イプライ タ経由で伝播する。

    33 パイプライン処理が理想通りにいかない事態をハザードと呼ぶ.

    34 ハザードにはデータハザードと制御ハザードがある.

    35 データハザードはほとんどの場合フォワーディングによりストールする必要がない.

    36 ストールすために,nop命令を使う.

    37 制御ハザードに対処するために,動的分岐予測が使われる.

    用語ぐらいは知 ておいても損はないはず

    71

    用語ぐらいは知っておいても損はないはず