スライド 1

Advanced
Computer
Architecture
07. 値予測
五島 正裕
Advanced Computer Architecture
内容
1. キャッシュの復習
2. 値予測
Advanced
Computer
Architecture
キャッシュの復習
Advanced Computer Architecture
キャッシュとは
 キャッシュ:
 本体の内容の一部を,より小容量ゆえに高速なメモリにコピー
 参照の局所性 (locality of reference) を利用して,高速化を図る
 一部をコピー ⇒ 連想メモリ (associative memory)
Advanced Computer Architecture
連想メモリ
 表 (table),メモリ:
 key と value のペア,タプル (tuple) の集合
 非連想表,メモリ
 すべての key に対して,タプルがある
 連想表,メモリ
 すべての key に対して,タプルがあるとは限らない

ex.) 半分とか,1/10 とか
Advanced Computer Architecture
ハッシュ表
 ハッシュ表 (hash table)
 ソフトウェアで連想表と言えば…
 ただし通常(一部ではなく)全体が入っている
Advanced Computer Architecture
ハッシュ表 (chained hash table)
key
hash
function
index
int hash(int key) {
return 7 &
(key >> 0) ^
(key >> 3) ^
(key >> 6) ^
/* ... */ ;
}
key
key
value
value
key
value
Advanced Computer Architecture
ハッシュ表 (配列)
int hash(int key) {
return 7 & key;
}
key
hash
function
index
v
value
v
value
v
value
v
value
v
value
v
value
v
value
v
value
v
value
v
value
v
value
v
value
v
value
v
value
v
value
v
value
way #0
way #1
Advanced Computer Architecture
ハッシュ表 (配列,最適化)
int hash(int key) {
return 7 & key;
}
key
hash
function
index
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
tag
v
value
Advanced Computer Architecture
キャッシュの構成
address
tag
tag
value
valid
index
selector
value
Advanced Computer Architecture
マッピング
address
address
: cache line
way
0
0
set
8
0
1
1
2
2
3
3
4
direct map
cache
4
8
address space
2-way set-associative
Advanced
Computer
Architecture
値予測
Advanced Computer Architecture
投機のフェーズ
1. 予測 (prediction)
2. 実行 (execution)
3. 確認 (verification, confirmation)
4. キャンセル,回復,再実行 (cancellation, recovery, re-execution)
cycle
A
1. 予測
3. 確認
2. 実行
B 4. 再実行
Advanced Computer Architecture
分岐予測
cycle
3. 確認
add r5 = r4 + r3
IF
OR
EX
MEM WB
be
IF
OR
EX
MEM WB
r1 == r2, L0
add r8 = r6 + r7
IF
OR
EX
MEM WB
PC 予測
add r8 = r8 1.
+ 1
IF
OR
EX
MEM WB
2. フェッチ
sub r9 = r6 - r7
IF
OR
EX
MEM WB
ld
IF
OR
EX
MEM WB
r8 = *(r9)
Advanced Computer Architecture
分岐予測
cycle
3. 確認
add r5 = r4 + r3
IF
OR
EX
MEM WB
be
IF
OR
EX
MEM WB
r1 == r2, L0
L0: ld
add r8 = *(r6)
r6 + r7
PC
add r9
r8 = r8 1.
+ 1
sla
<<
1 予測
IF
OR
IF
OR
EX
MEM WB
IF
OR
IF
OR
EX
MEM WB
2. フェッチ
add
sub r9 = r9
r6 +
- 1
r7
ld r8 = r9
*(r9)
sub
- 1
4. 再フェッチ
IF
IF
OR
EX
M
IF
IF
OR
EX
M
Advanced Computer Architecture
分岐予測
cycle
add r5 = r4 + r3
IF
OR
EX
MEM WB
be
IF
OR
EX
MEM WB
L0: ld
r1 == r2, L0
r8 = *(r6)
sla r9 = r8 << 1
IF
OR
IF
OR
EX
MEM WB
IF
OR
IF
OR
EX
MEM WB
add r9 = r9 + 1
IF
IF
OR
EX
M
sub r8 = r9 - 1
IF
IF
OR
EX
M
ミス・ペナルティ (= H, M = 0)
Advanced Computer Architecture
値予測
 値予測 (value prediction):
 投機の一種
 個々の命令の結果を予測
 先行制約の緩和
 分岐予測:分岐命令の結果を予測

制御依存による先行制約を緩和
 値予測:すべての命令の結果を予測

データ依存(フロー依存)による先行制約の緩和
Advanced Computer Architecture
値予測するには
 値予測するには:
1. どう予測するか?
2. 予測するとどうなるか?
3. 予測ミスしたらどうするか?
Advanced Computer Architecture
1. どう予測するか?
 やっぱり,履歴 (history)
 分岐履歴:PHT (pattern history table)
 値 履 歴 :VHT (value history table)
 予測手法:
 Last-Value
 Stride
 Context-Base
 Hybrid
Advanced Computer Architecture
キャッシュの構成
address
tag
value
valid
selector
value
Advanced Computer Architecture
Last-Value + Stride 値予測器
 キャッシュの value のフィールド:
 Last-Value
 Stride

予測値は,Last-Value + Stride
 確信度カウンタ (confidence counter)

ヒット:インクリメント

ミ ス :デクリメント or クリア

閾値以上(最大値)なら予測
Advanced Computer Architecture
フロントエンドで予測する
RFRF
命令
キャッシュ
フェッチ
Fetch
リネーム
ロジック
命令
ウィンドウ
リネーム ディスパッチ スケジュール 発行
Rename Dispatch
Schedule Issue
フロントエンド
front-end
演算器
読出
OR
実行
Exec
バックエンド
back-end
書戻
WB
Advanced Computer Architecture
予測する
 PC (アドレス)で予測表を牽く
 命令フェッチと同時に予測値が分かる
 依存する命令:
 ずっと以前にソースの値が決まっていたかのように見える
Advanced Computer Architecture
値予測
cycle
I OR
EX
I OR
WB
EX
I OR
WB
EX
I OR
WB
EX
WB
Advanced Computer Architecture
2. 予測するとどうなるか?
cycle
I OR
I OR
EX
VRFY
I OR
EX
VRFY
EX
WB
I OR
EX
I OR
EX
VRFY
I OR
WB
EX
VRFY
Advanced Computer Architecture
2. 予測するとどうなるか?
 ソースが予測できた命令:
 ディスパッチ後,直ちに実行可能
 あたかも,フロー依存がなくなったかのうよう
 実行命令数は減らない!
 ミスの分だけ増える
 残る制約は,資源制約のみ
Advanced Computer Architecture
3. 予測ミスしたらどうするか?
 依存する命令をやり直す
 ただし,依存する命令は:
 分岐予測:下流の命令すべて

フラッシュ
 値 予 測 :フロー依存関係にある命令

フラッシュ(下流の命令すべて)
– 予測ヒットの命令も,予測しなかった命令もやり直し
– 無駄が多い!

選択的無効化
– ちょっと難しい
Advanced Computer Architecture
値予測の効果
 高い予測率
 予測ヒット率:20~80%
 半定数が多い? ex) コマンド・ライン引数
 低い性能向上
 IPC の向上:-数%~十数%
 HW 量には見合いにくい
 理由:
 予測できる命令はクリティカル・パス上にない?
 半定数なら,そう
Advanced
Computer
Architecture
今日のまとめ
Advanced Computer Architecture
値予測 (value prediction)
 値予測:
 投機の一種
 個々の命令の結果を予測
 先行制約の緩和
 分岐予測:分岐命令の結果を予測

制御依存による先行制約を緩和
 値 予 測 :すべての命令の結果を予測

データ依存(フロー依存)による先行制約の緩和
Advanced Computer Architecture
今後の予定
 メモリ・ディスアンビギュエーション
 デバイスの微細化への対応
 演算器クラスタリング
 0次キャッシュ
 レイテンシ予測
 マルチスレッド・プロセッサ
 SIMD 命令