• 検索結果がありません。

Microsoft PowerPoint - Chap5 [Compatibility Mode]

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - Chap5 [Compatibility Mode]"

Copied!
72
0
0

読み込み中.... (全文を見る)

全文

(1)

計算機構成論 (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

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

山下 茂

(2)

パイプライン処理の考え方②:

Chap4のスライド再掲

仕事が多い時を考える(3/3) 一つのタスク(今は一つの命令)の実行開始から完了までの時間 レイテンシ プ 一定時間内に処理できる仕事の量 スループット 最初の命令 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命令/サイクル

(3)

Chap. 5のセルフチェック

以下の文章の意味がわからないなら、今から,寝ないで

聞いてみましょう。

聞いてみましょう。

33 パイプライン処理が理想通りにいかない事態をハザードと呼ぶ. 34 ハザードにはデータハザードと制御ハザードがある. 35 デ タ ザ ドはほとんどの場合フ ワ デ ングによりスト ルする必要がない 35 データハザードはほとんどの場合フォワーディングによりストールする必要がない. 36 ストールするために,nop命令を使う. 37 制御ハザードに対処するために,動的分岐予測が使われる.

2

(4)

What to learn

パイプライン処理が理想通りにいかない2つの事象とその対処方法 ハザード=パイプライン処理において次のクロック・サイクルで次の

データハザード

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

データハザード

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

制御ハザード(分岐ハザード)

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

3

• 教科書4.7~4.8

(5)

教科書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命令以降の実行を遅らせる( スト ル

(6)

お絵かきスペース

(7)

データをレジスタに読み

/書きするステージは?

• 新しいレジスタの値が決定するのは,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, $3 and $12, $2, $5 or $13, $6, $2 , 命令 実行結果が所望と違うか? IF ID EX MEM WB IF ID EX MEM WB add $14, $2, $2 sw $15, 100($2)

6

(8)

お絵かきスペース

(9)

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

命令デ ド 命令実行

IF: 命令フェッチ ID: 命令デコード+レジスタ・フェッチ EX: 命令実行 orアドレス生成 MEM: データ・メモリ・アクセス レジスタWB:

書き込み 4

加算

加算 IF/ID ID/EX EX/MEM MEM/WB

読出 読出 命令アドレス PC 2ビット 左に シフト M U X レジスタ 読出 reg1 ALU ALU 結果 読出 reg2 書込 reg 読出 reg1 読出 reg2 ゼロ判定 読出 デ タ アドレス 命令 命令メモリ reg M 結果 書込 データ データメモリ 書込データ データ 命令 M U X M U X 符号 拡張 32 16 図4.41

8

(10)

お絵かきスペース

(11)

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, $3 and $12, $2, $5 or $13 $6 $2 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) レジスタはクロックサイクルの前半で読み込み,すぐ値を更新するタイプを使う WBステ ジの前半で書き込んでも それをIDステ ジの後半で読みだせる 解決策

10

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

(12)

お絵かきスペース

(13)

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, $3 and $12, $2, $5 or $13 $6 $2 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) MEMの結果(MEM/WBレジスタから)をALUの入力に転送(フォワーディング)する 解決策

12

(14)

お絵かきスペース

(15)

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

命令デ ド 命令実行

IF: 命令フェッチ ID: 命令デコード+レジスタ・フェッチ EX: 命令実行 orアドレス生成 MEM: データ・メモリ・アクセス レジスタWB:

書き込み 4

加算

加算 IF/ID ID/EX EX/MEM MEM/WB

読出 読出 命令アドレス PC 2ビット 左に シフト M U X レジスタ 読出 reg1 ALU ALU 結果 読出 reg2 書込 reg 読出 reg1 読出 reg2 ゼロ判定 読出 デ タ アドレス 命令 命令メモリ reg M 結果 書込 データ データメモリ 書込データ データ 命令 M U X M U X 符号 拡張 32 16 図4.41

14

(16)

お絵かきスペース

(17)

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, $3 and $12, $2, $5 or $13 $6 $2 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB or $13, $6, $2 add $14, $2, $2 sw $15, 100($2) EXの結果(EX/MEMレジスタから)をALUの入力に転送(フォワーディング)する 解決策

16

(18)

お絵かきスペース

(19)

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

add

$t0 $s0 $s1

add

$t0 $s0 $s1

($t0=$s0+$s1)

000000 10000

add

$t0, $s0, $s1

10001 01000 00000 100000

op

rs

rt

rd

shamt funct

000000

add

$t0, $s0, $s1

01000 00000 100000

op

rs

rt

rd

shamt funct

($t0=$s0+$s1)

$s0

$s1

$t0

000000 10000 10001 01000 00000 100000

add

$s0

$s1

$t0

000000

01000 00000 100000

add

lw $t0, 12($s0)

op

rs

rt

address

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

100011

01000

0000000000001100

$t0

10000

$s0

+12

lw

rs rt rd rt 読みだすレジスタ番号は、 書き込む可能性があるレジスタ番号は、 IF/ID.RegisterRd: IF/IDレジスタの中のrdの情報

18

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

(20)

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

WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

19

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

(21)

ミニクイズ

3

EXハザード(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も条件に書かれていますが,本質でないので割愛します.

(22)

お絵かきスペース

(23)

ミニクイズ

4

MEMハザード(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も条件に書かれていますが,本質でないので割愛します.

(24)

お絵かきスペース

(25)

ミニクイズ

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

(26)

お絵かきスペース

(27)

重要問題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

,

( )

(28)

お絵かきスペース

(29)

重要問題1回答

clock=1001

WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

28

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

(30)

重要問題1回答

clock=1001 (予備)

WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

29

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

(31)

重要問題1回答

clock=1002

WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

30

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

(32)

重要問題1回答

clock=1002 (予備)

WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

31

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

(33)

重要問題1回答

clock=1003

WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

32

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

(34)

重要問題1回答

clock=1003 (予備)

WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

33

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

(35)

重要問題1回答

clock=1004

WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

34

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

(36)

重要問題1回答

clock=1004 (予備)

WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

35

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

(37)

What to learn

パイプライン処理が理想通りにいかない2つの事象とその対処方法 ハザード=パイプライン処理において次のクロック・サイクルで次の

データハザード

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

データハザード

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

制御ハザード(分岐ハザード)

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

36

• 教科書4.7~4.8

(38)

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

以下の場合は,フォワーディングではうまくいない.

理由を考えよ

lw

$2

20(

$1

)

理由を考えよ.

lw

$2

, 20(

$1

)

and

$4,

$2

, $5

or

$8 $6

$2

or

$8, $6,

$2

add

$14,

$2

,

$2

sw

$15 100(

$2

)

sw

$15, 100(

$2

)

37

(39)

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, $5 or $8 $6 $2 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB or $8, $6, $2 add $14, $2, $2 sw $15, 100($2) 解決策 フォワーディングではうまくいかないので,ストールする

38

(40)

お絵かきスペース

(41)

ストールの実行の仕方

後続命令のIDステージで,ストールすべきか判断可能(ミニクイズ6参照) (図中のハザード検出ユニットで判定をする) ストール:nop命令(何もしない命令)を挿入して,後続命令をその分遅らせる IF ID EX MEM WB l $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, $5 or $8, $6, $2 add $14 $2 $2 IF ID EX MEM WB IF ID EX MEM WB add $14, $2, $2 sw $15, 100($2) • CC3でand命令はすぐに実行できないと判断し,nop命令に変更 (ID/EXレジスタの内容をすべて0 にする) 以下で CC3以降の様子の概略を見ていきましょう

40

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

(42)

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

(43)

ストールの実行例

(CC3)

CC1 CC2 CC3 CC4 CC5 CC6 IF ID EX MEM WB lw $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, $5 or $8, $6, $2 add $14, $2, $2 $ $ IF ID EX MEM WB sw $15, 100($2)

ID/EX EX/MEM MEM/WB

IF/ID

IFステージ IDステージ EXステージ MEMステージ WBステージ

lw

and

or

and

lw

or

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

⇒フラッシュ

42

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

(44)

お絵かきスペース

(45)

ストールの実行例

(CC4)

CC1 CC2 CC3 CC4 CC5 CC6 IF ID EX MEM WB lw $2, 20($1) CC1 CC2 CC3 CC4 CC5 CC6 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB nop and $4, $2, $5 or $8, $6, $2 $ $ $ IF ID EX MEM WB add $14, $2, $2 sw $15, 100($2)

ID/EX EX/MEM MEM/WB

IF/ID

IFステージ IDステージ EXステージ MEMステージ WBステージ

IFステ ジ IDステ ジ EXステ ジ MEMステ ジ WBステ ジ

lw

and

or

nopp

(46)

ストールの実行例

(CC5)

CC1 CC2 CC3 CC4 CC5 CC6 IF ID EX MEM WB lw $2, 20($1) CC1 CC2 CC3 CC4 CC5 CC6 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB nop and $4, $2, $5 or $8, $6, $2 $ $ $ IF ID EX MEM WB add $14, $2, $2 sw $15, 100($2)

ID/EX EX/MEM MEM/WB

IF/ID

IFステージ IDステージ EXステージ MEMステージ WBステージ

IFステ ジ IDステ ジ EXステ ジ MEMステ ジ WBステ ジ

lw

and

or

nop

add

p

フォワ ディング

45

フォワーディング

(47)

ミニクイズ

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

供給するレジスタ番号

(48)

お絵かきスペース

(49)

自己確認クイズ

ストールすべき時,ハザード検出ユニットの3つの出力 によりどのように各部の動作が制御されるか説明せよ WB WB WB IF/IDWrite ハザード・検出 ユニット ID/EX.MemRead IF/ID 制御 M EX M EX M EX M U X PCWrite 0 ID/EX MEM/WB 読出 reg1 ALU 読出 読出 reg1 PC 命令メモリ MU X

ID/EX EX/MEM MEM/WB

0 1 ALU 読出 reg2 書込 reg 書込 データ 読出 reg2 データメモリ 読出 データ アドレス 命令メモリ M U X X レジスタ M U X 2 0 1 デ タ 書込データ IF/ID.RegisterRs IF/ID.RegisterRt IF/ID.RegisterRd M U X レジスタ Rt Rd EX/MEM.RegisterRd ForwardA ForwardB 2 フォワーディング・ ユニット Rs ID/EX.RegisterRt Rt MEM/WB.RegisterRd

48

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

(50)

お絵かきスペース

(51)

What to learn

パイプライン処理が理想通りにいかない2つの事象とその対処方法 ハザード=パイプライン処理において次のクロック・サイクルで次の

データハザード

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

データハザード

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

制御ハザード(分岐ハザード)

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

50

• 教科書4.7~4.8

(52)

制御ハザード

(分岐ハザード)とは?

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

140:beq $1 $3 7

clock=100 140:beq $1, $3, 7

144:and $12, $2, $5

148

$13 $6 $2

clock=100

148:or $13, $6, $2

152:add $14, $2, $2

156 b

$2 $4 8

156:beq $2, $4, 8

172

$15 100($2)

172:sw $15, 100($2)

#条件成立時のbeqからの分岐先

51

(53)

ミニクイズ7

前ペ ジの命令列において clock 103の時のPCの値と clock 104の時の 前ページの命令列において,clock=103の時のPCの値と,clock=104の時の PCの値がどのように設定されるかを以降のページの図を用いて説明せよ. beq命令の分岐は成立するとする. IF ID EX MEM WB 100 101 102 103 104 105 clock 140:beq $1 $3 7 IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 140:beq $1, $3, 7 144:and $12, $2, $5 148:or $13, $6, $2 IF ID EX MEM WB IF ID EX MEM WB

ID/EX EX/MEM MEM/WB

IF/ID 152:add $14, $2, $2

ID/EX EX/MEM MEM/WB

IF/ID

IFステージ IDステージ EXステージ MEMステージ WBステージ

beq

and

or

add

(54)

お絵かきスペース

(55)

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

命令デ ド 命令実行

IF: 命令フェッチ ID: 命令デコード+レジスタ・フェッチ EX: 命令実行 orアドレス生成 MEM: データ・メモリ・アクセス レジスタWB:

書き込み 4

加算

加算 IF/ID ID/EX EX/MEM MEM/WB

読出 読出 命令アドレス PC 2ビット 左に シフト M U X レジスタ 読出 reg1 ALU ALU 結果 読出 reg2 書込 reg 読出 reg1 読出 reg2 ゼロ判定 読出 デ タ アドレス 命令 命令メモリ reg M 結果 書込 データ データメモリ 書込データ データ 命令 M U X M U X 符号 拡張 32 16 図4.41

54

(56)

お絵かきスペース

(57)

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

命令デ ド 命令実行

IF: 命令フェッチ ID: 命令デコード+レジスタ・フェッチ EX: 命令実行 orアドレス生成 MEM: データ・メモリ・アクセス レジスタWB:

書き込み 4

加算

加算 IF/ID ID/EX EX/MEM MEM/WB

読出 読出 命令アドレス PC 2ビット 左に シフト M U X レジスタ 読出 reg1 ALU ALU 結果 読出 reg2 書込 reg 読出 reg1 読出 reg2 ゼロ判定 読出 デ タ アドレス 命令 命令メモリ reg M 結果 書込 データ データメモリ 書込データ データ 命令 M U X M U X 符号 拡張 32 16 図4.41

56

(58)

お絵かきスペース

(59)

制御ハザード

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

分岐命令による分岐先のアドレスの決定はMEMステージで行われる. *Chap4の章末問題参照 (MEMステージでPCを書き換え,その次のクロックで分岐先の命令をフェッチ) もし 分岐が成立すると 後続命令3つを廃棄しなければならない もし,分岐が成立すると,後続命令3つを廃棄しなければならない (パイプライン)フラッシュ:命令を廃棄すること (パイプライン)フラッシュ:命令を廃棄すること →廃棄する命令に対応するパイプラインレジスタをすべて0にする

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

58

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

(60)

動的分岐予測(

1ビット方式)

分岐予測バッファ(分岐履歴テーブル)に,分岐命令のアドレス(の下位ビット) のindexで分岐したかどうかの1ビットを覚えておく. beq命令アドレスの下位 前回分岐したか? 0 1(分岐) 0 1(分岐) … … 38 0(分岐せず) 38 0(分岐せず) 40 1(分岐) … … IFステージで表を見て,次にフェッチすべき命令のアドレス計算してPCにセット 測が当たればペ な → 予測が当たればペナルティなし → 予測が外れればフェッチした後続命令をフラッシュ

59

(61)

ミニクイズ

8

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

i

9

for(i=0; i !=9; i++){ ループ }

beq $1, $3, 7

}

予測成功の確率=

80%

実際の分岐比率は

90%

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

60

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

(62)

お絵かきスペース

(63)

各カウンターは以下のような

4つの状態を表す

2ビット方式

各カウンターは以下のような

4つの状態を表す。

11:分岐する(可能性大):Strongly taken

10:分岐する(可能性小):Weakly taken

01:分岐しない(可能性小):Weakly not taken

00:分岐しない(可能性大):Strongly not taken

不成立

11

分岐 と予測

10

分岐 と予測 不成立 成立 成立 成立 不成立 成立 不成立

00

分岐しない と予測 不成立 成立

01

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

62

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

(64)

ミニクイズ

9

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

i

9

for(i=0; i !=9; i++){ ループ }

beq $1, $3, 7

}

予測成功の確率=

90%

実際の分岐比率は

90%なので理想的

63

(65)

お絵かきスペース

(66)

Chap. 5のセルフチェック

以下の文章の意味がわからないなら、講義で寝ていた

(笑)

かもしれませんね。

かもしれませんね。

33 パイプライン処理が理想通りにいかない事態をハザードと呼ぶ. 34 ハザードにはデータハザードと制御ハザードがある. 35 デ タ ザ ドはほとんどの場合フ ワ デ ングによりスト ルする必要がない 35 データハザードはほとんどの場合フォワーディングによりストールする必要がない. 36 ストールするために,nop命令を使う. 37 制御ハザードに対処するために,動的分岐予測が使われる. ちゃんと聞いていたのに,わからなければ質問しましょう!

65

(67)

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

•データ・ハザード

•フォワーディング

フォワ

ディング

•ストール

•nop

•分岐ハザード、制御ハザード

•分岐予測

フラ

•フラッシュ

66

(68)

章末問題

0:

講義中にやった問題と似たのが試験に出るかも

重要問題1

重要問題1

ミニクイズ全て

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

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

67

(69)

章末問題

1

機能モジュールの遅延は以下とする •メモリユニット 200ps ALU(加算器も) 200 •ALU(加算器も) 200ps •レジスタファイル(読出し/書込み) 50ps それ以外では遅延なしとする。 プ グ 命令ミックス(プログラム内の命令の比率)が ロード25%, ストア10%, 分岐11%, ジャンプ2%, ALU命令52%, の時に,(講義で行った方式の)単一サイクル,マルチサイクル,パイプラインの各方式 の性能を比較せよ. ただし, •lw命令の半分はその結果を使用する命令が直後に続くlw命令の半分はその結果を使用する命令が直後に続く •分岐予測の1/4がはずれる •ジャンプ命令,分岐命令の予測が外れた場合は,3サイクル分ストールする(講義で 行った単純な方式) 行った単純な方式) とする.

68

(70)

最後に

この講義では,いろんなことをしました

(次ページ参照)せ

っかく

”情報”を勉強しいているのだから計算機の基本的な

っかく 情報 を勉強しいているのだから計算機の基本的な

動作ぐらいは理解する気合いで,試験勉強してください.

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

•計算機アーキテクチャのより詳しいこと(特にキャッシュとか)は,

3回生以上配当の計算機システムを受講してください

3回生以上配当の計算機システムを受講してください。

•実際にどのようにCPUの設計を記述する(プログラミング減gの

ように)かは

3回生配当のデジタル設計を受講してください。

ように)かは

3回生配当のデジタル設計を受講してください。

絶対に単位が欲しい方は、勉強してください。出来が悪かったか

らといって相談に来ても私は何もできません。

試験が終わってから遊びましょう!

(そ

あと 週間ほど気合

勉強

69

(その前にあと

1週間ほど気合いで勉強!)

(71)

チェックリスト:覚えていますか?その

1

1 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

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

(72)

チェックリスト:覚えていますか?その

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

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

参照

関連したドキュメント

しかしながら,式 (8) の Courant 条件による時間増分

CN 割り込みが発生した場合、ユーザーは CN ピンに対応する PORT レジスタを読み出す

そのような発話を整合的に理解し、受け入れようとするなら、そこに何ら

ここから、われわれは、かなり重要な教訓を得ることができる。いろいろと細かな議論を

問についてだが︑この間いに直接に答える前に確認しなけれ

・ 継続企業の前提に関する事項について、重要な疑義を生じさせるような事象又は状況に関して重要な不確実性が認め

・ 継続企業の前提に関する事項について、重要な疑義を生じさせるような事象又は状況に関して重要な不確実性が認

ヒュームがこのような表現をとるのは当然の ことながら、「人間は理性によって感情を支配