07. 値予測

31
Advanced Computer Architecture 07. 値値値 五五 五五

description

07. 値予測. 五島 正裕. 内容. キャッシュの復習 値予測. キャッシュの復習. キャッシュとは. キャッシュ: 本体の内容の一部を,より小容量ゆえに高速なメモリにコピー 参照の局所性 (locality of reference) を利用して,高速化を図る 一部をコピー ⇒ 連想メモリ (associative memory). 連想メモリ. 表 (table) ,メモリ: key と value のペア,タプル (tuple) の集合 非連想表,メモリ すべての key に対して,タプルがある 連想表,メモリ - PowerPoint PPT Presentation

Transcript of 07. 値予測

Page 1: 07.  値予測

AdvancedComputer

Architecture

07. 値予測

五島 正裕

Page 2: 07.  値予測

Advanced Computer Architecture

内容

1. キャッシュの復習2. 値予測

Page 3: 07.  値予測

AdvancedComputer

Architecture

キャッシュの復習

Page 4: 07.  値予測

Advanced Computer Architecture

キャッシュとは

キャッシュ: 本体の内容の一部を,より小容量ゆえに高速なメモリにコピー 参照の局所性 (locality of reference) を利用して,高速化を図る

一部をコピー ⇒ 連想メモリ (associative memory)

Page 5: 07.  値予測

Advanced Computer Architecture

連想メモリ

表 (table) ,メモリ: key と value のペア,タプル (tuple) の集合

非連想表,メモリ すべての key に対して,タプルがある

連想表,メモリ すべての key に対して,タプルがあるとは限らない

ex.) 半分とか, 1/10 とか

Page 6: 07.  値予測

Advanced Computer Architecture

ハッシュ表

ハッシュ表 (hash table)

ソフトウェアで連想表と言えば… ただし通常(一部ではなく)全体が入っている

Page 7: 07.  値予測

Advanced Computer Architecture

keykey

hashfunctionhash

function

index

ハッシュ表 (chained hash table)

keykey

valuevaluekeykey

valuevalue

int hash(int key) { return 7 & (key >> 0) ^ (key >> 3) ^ (key >> 6) ^ /* ... */ ;}

keykey

valuevalue

Page 8: 07.  値予測

Advanced Computer Architecture

hashfunctionhash

function

index

key

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

way #0

ハッシュ表 (配列)

int hash(int key) { return 7 & key;}

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

vv valuevalue

way #1

Page 9: 07.  値予測

Advanced Computer Architecture

hashfunctionhash

function

index

ハッシュ表 (配列,最適化)

tagtag

int hash(int key) { return 7 & key;}key

vv valuevalue tagtag vv valuevalue

tagtag vv valuevalue tagtag vv valuevalue

tagtag vv valuevalue tagtag vv valuevalue

tagtag vv valuevalue tagtag vv valuevalue

tagtag vv valuevalue tagtag vv valuevalue

tagtag vv valuevalue tagtag vv valuevalue

tagtag vv valuevalue tagtag vv valuevalue

tagtag vv valuevalue tagtag vv valuevalue

Page 10: 07.  値予測

Advanced Computer Architecture

キャッシュの構成

tag

address

value

index

valuetag valid

selectorselector

Page 11: 07.  値予測

Advanced Computer Architecture

マッピング

direct map 2-way set-associative

address address

00

11

22

33

44

00 88 00

11

22

33

44 88

address spacecache

: cache line

setway

Page 12: 07.  値予測

AdvancedComputer

Architecture

値予測

Page 13: 07.  値予測

Advanced Computer Architecture

BBBB

1. 予測1. 予測

投機のフェーズ

1. 予測 (prediction)

2. 実行 (execution)

3. 確認 (verification, confirmation)

4. キャンセル,回復,再実行 (cancellation, recovery, re-execution)

cycle

AA

2. 実行2. 実行

3. 確認3. 確認

4. 再実行4. 再実行

Page 14: 07.  値予測

Advanced Computer Architecture

分岐予測

cycle

be r1 == r2, L0

add r5 = r4 + r3

r8 = r6 + r7add

r8 = r8 + 1add

IFIF

IFIF

IFIF

IFIF

IFIF

IFIF

OROR

OROR

r9 = r6 - r7sub

r8 = *(r9)ld

OROR

OROR

IFIF

IFIF

EXEX

EXEX

OROR

OROR

IFIF

IFIF

MEMMEM

MEMMEM

EXEX

EXEX

OROR

OROR

1. PC 予測2. フェッチ

1. PC 予測2. フェッチ

3. 確認3. 確認

WBWB

WBWB

EXEX

EXEX

MEMMEM

MEMMEM

WBWB

WBWB

MEMMEM

MEMMEM

WBWB

WBWB

Page 15: 07.  値予測

Advanced Computer Architecture

IFIF

IFIF

OROR

OROR

IFIF

IFIF

分岐予測

cycle

be r1 == r2, L0

add r5 = r4 + r3

IFIF

IFIF

IFIF

IFIF

OROR

OROR

r8 = r6 + r7add

r8 = r8 + 1add

r9 = r6 - r7sub

r8 = *(r9)ld

EXEX

EXEX

OROR

OROR

IFIF

IFIF

MEMMEM

MEMMEM

IFIF

IFIF

WBWB

WBWB

OROR

OROR

IFIF

IFIF

3. 確認3. 確認

4. 再フェッチ4. 再フェッチ

EXEX

EXEX

OROR

OROR

EXEX

EXEX

MEMMEM

MEMMEM

WBWB

WBWB

MEMMEM

MEMMEM

r8 = *(r6)ld

r9 = r9 + 1add

r9 = r8 << 1sla

r8 = r9 - 1sub

L0:

1. PC 予測2. フェッチ

1. PC 予測2. フェッチ

Page 16: 07.  値予測

Advanced Computer Architecture

IFIF

IFIF

OROR

OROR

IFIF

IFIF

分岐予測

cycle

be r1 == r2, L0

add r5 = r4 + r3

IFIF

IFIF

OROR

OROR EXEX

EXEX MEMMEM

MEMMEM

IFIF

IFIF

WBWB

WBWB

OROR

OROR

IFIF

IFIF

EXEX

EXEX

OROR

OROR

EXEX

EXEX

MEMMEM

MEMMEM

WBWB

WBWB

MEMMEM

MEMMEM

ミス・ペナルティ (= H, M = 0)

r8 = *(r6)ld

r9 = r9 + 1add

r9 = r8 << 1sla

r8 = r9 - 1sub

L0:

Page 17: 07.  値予測

Advanced Computer Architecture

値予測

値予測 (value prediction) : 投機の一種 個々の命令の結果を予測

先行制約の緩和 分岐予測:分岐命令の結果を予測

制御依存による先行制約を緩和 値予測:すべての命令の結果を予測

データ依存(フロー依存)による先行制約の緩和

Page 18: 07.  値予測

Advanced Computer Architecture

値予測するには

値予測するには:1. どう予測するか?2. 予測するとどうなるか?3. 予測ミスしたらどうするか?

Page 19: 07.  値予測

Advanced Computer Architecture

1. どう予測するか?

やっぱり,履歴 (history)

分岐履歴: PHT (pattern history table)

値 履 歴 : VHT (value history table)

予測手法: Last-Value

Stride

Context-Base

Hybrid

Page 20: 07.  値予測

Advanced Computer Architecture

キャッシュの構成

address

value

valuetag valid

selectorselector

Page 21: 07.  値予測

Advanced Computer Architecture

Last-Value + Stride 値予測器

キャッシュの value のフィールド: Last-Value

Stride

予測値は, Last-Value + Stride

確信度カウンタ (confidence counter)

ヒット:インクリメント ミ ス :デクリメント or クリア 閾値以上(最大値)なら予測

Page 22: 07.  値予測

Advanced Computer Architecture

フロントエンドで予測する

Page 23: 07.  値予測

Advanced Computer Architecture

Page 24: 07.  値予測

Advanced Computer Architecture

Page 25: 07.  値予測

Advanced Computer Architecture

Page 26: 07.  値予測

Advanced Computer Architecture

Page 27: 07.  値予測

Advanced Computer Architecture

Page 28: 07.  値予測

Advanced Computer Architecture

Page 29: 07.  値予測

AdvancedComputer

Architecture

Page 30: 07.  値予測

Advanced Computer Architecture

Page 31: 07.  値予測

Advanced Computer Architecture