Upload
cally-rosales
View
35
Download
4
Embed Size (px)
DESCRIPTION
07. 値予測. 五島 正裕. 内容. キャッシュの復習 値予測. キャッシュの復習. キャッシュとは. キャッシュ: 本体の内容の一部を,より小容量ゆえに高速なメモリにコピー 参照の局所性 (locality of reference) を利用して,高速化を図る 一部をコピー ⇒ 連想メモリ (associative memory). 連想メモリ. 表 (table) , メモリ: key と value のペア,タプル ( tuple ) の集合 非連想表,メモリ ∀ key に対して,タプルがある 連想表,メモリ - PowerPoint PPT Presentation
Citation preview
07. 値予測
五島 正裕
内容
1. キャッシュの復習
2. 値予測
キャッシュの復習
キャッシュとは
キャッシュ: 本体の内容の一部を,より小容量ゆえに高速なメモリにコピー 参照の局所性 (locality of reference) を利用して,高速化を図
る
一部をコピー ⇒ 連想メモリ (associative memory)
連想メモリ
表 (table) ,メモリ: key と value のペア,タプル (tuple) の集合
非連想表,メモリ ∀key に対して,タプルがある
連想表,メモリ ∀key に対して,タプルがあるとは限らない
ex.) 半分とか, 1/10 とか
ハッシュ表
ハッシュ表 (hash table) ソフトウェアで連想表と言えば… ただし通常(一部ではなく)全体が入っている
keykey
hashfunctionhash
function
index
ハッシュ表 (chained hash table)
keykey
valuevaluekeykey
valuevalue
int hash(int key) { return 7 & (key >> 0) ^ (key >> 3) ^ (key >> 6) ^ /* ... */ ;}
keykey
valuevalue
hashfunctionhash
function
index
ハッシュ表 (配列)
key v
int hash(int key) { return 7 & key;}key
value key v valuekey v value key v valuekey v value key v valuekey v value key v valuekey v value key v valuekey v value key v valuekey v value key v valuekey v value key v value
way #0 way #1
hashfunctionhash
function
index
ハッシュ表 (配列,最適化)
tag
int hash(int key) { return 7 & key;}key
v value tag v valuetag v value tag v valuetag v value tag v valuetag v value tag v valuetag v value tag v valuetag v value tag v valuetag v value tag v valuetag v value tag v value
キャッシュの構成
address
value
valuetag valid
selector
マッピング
direct map 2-way set-associative
address
: cache line
set#0
way#0
memorycache
full associative
0 1 2 f
01234567
89abcdef
0123
4567
89ab
cdef
way#1
set#1
set#2
set#3
BBBB
1. 予測1. 予測
投機のフェーズ
1. 予測 (prediction)
2. 実行 (execution)
3. 確認 (verification, confirmation)
4. キャンセル,回復,再実行 (cancellation, recovery, re-execution)
cycle
AA
2. 実行2. 実行
3. 確認3. 確認
4. 再実行4. 再実行
分岐予測
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
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. フェッチ
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:
値予測
値予測
値予測 (value prediction) : 投機の一種 個々の命令の結果を予測
先行制約の緩和 分岐予測:分岐命令の結果を予測
制御依存による先行制約を緩和 値予測:すべての命令の結果を予測
データ依存(フロー依存)による先行制約の緩和
値予測するには
値予測するには:
1. どう予測するか?
2. 予測するとどうなるか?
3. 予測ミスしたらどうするか?
1. どう予測するか?
やっぱり,履歴 (history) 分岐履歴: PHT (pattern history table) 値 履 歴 : VHT (value history table)
予測手法: Last-Value Stride Context-Base Hybrid etc.
キャッシュの構成
address
value
valuetag valid
selectorselector
Last-Value + Stride 値予測器
キャッシュの value のフィールド: Last-Value Stride
予測値は, Last-Value + Stride 確信度カウンタ (confidence counter)
ヒット:インクリメント ミ ス :デクリメント or クリア 閾値以上(最大値)なら予測
スーパスカラ プロセッサの基本構造・
22
Advanced Computer Architecture
発行Issue
ディスパッチDispatch
フェッチFetch
実行Exec
書戻WB
リネームRename
スケジュールSchedule
レジスタ読出Reg Read
レジスタ・ファイル
命令ウィンドウ
リネーム
ロジック
命令キャッシュ
演算器
フロントエンドFront-end
バックエンドBack-end
予測する
PC (アドレス)で予測表を牽く 命令フェッチと同時に予測値が分かる
依存する命令: ずっと以前にソースの値が決まっていたかのように見える
値予測
cycle
II OROR EXEX WBWB
II OROR EXEX WBWB
II OROR EXEX WBWB
II OROR EXEX WBWB
II OROR EXEX
II OROR EXEX VRFYVRFY
WBWB
2. 予測するとどうなるか?
cycle
II OROR EXEX
II OROR EXEX VRFYVRFY
II OROR EXEX
II OROR EXEX VRFYVRFY
WBWB
VRFYVRFY
予測できたかどうか(ヒットしたかどうかではなく)
BBBB
1. 予測1. 予測
投機のフェーズ
1. 予測 (prediction)
2. 実行 (execution)
3. 確認 (verification, confirmation)
4. キャンセル,回復,再実行 (cancellation, recovery, re-execution)
cycle
AA
2. 実行2. 実行
3. 確認3. 確認
4. 再実行4. 再実行
2. 予測するとどうなるか?
ソース(依存元の命令の結果)が予測できた命令: ディスパッチ後,直ちに実行可能 あたかも,フロー依存がなくなったかのうよう
実行命令数は減らない! ミスの分だけ増える
残る制約は,資源制約のみ
3. 予測ミスしたらどうするか?
依存する命令をやり直す ただし,依存する命令は:
分岐予測:下流の命令すべて フラッシュ
値 予 測 :フロー依存関係にある命令 フラッシュ(下流の命令すべて)
– 予測ヒットの命令も,予測しなかった命令もやり直し– 無駄が多い!
選択的無効化– ちょっと難しい
値予測の効果
高い予測ヒット率 予測ヒット率: 20 ~ 80% 半定数 (semi-constant ) が多い?
ex) コマンド・ライン引数
低い性能向上 IPC の向上:-数 % ~十数 % HW 量には見合いにくい
理由: 予測できる命令はクリティカル・パス上にない? 半定数なら,そう
今日のまとめ
値予測 (value prediction)
値予測: 投機の一種 個々の命令の結果を予測
先行制約の緩和 分岐予測:分岐命令の結果を予測
制御依存による先行制約を緩和 値 予 測 :すべての命令の結果を予測
データ依存(フロー依存)による先行制約の緩和
今後の予定
メモリ・ディスアンビギュエーション デバイスの微細化への対応
演算器クラスタリング 0 次キャッシュ レイテンシ予測
マルチスレッド・プロセッサ SIMD 命令