Upload
nikki
View
60
Download
0
Embed Size (px)
DESCRIPTION
09. メモリ・ディスアンビギュエーション. 五島 正裕. 内容. データ依存 メモリ・ディスアンビギュエーション ストア・セット・メモリ依存予測器. データ依存. データ依存. 制御駆動型 (control-driven) (⇔ データ駆動, data-driven ) 命令間のデータの授受は, プログラム・オーダ上で,先行 / 後続の関係にある 2 命令が, 同一のロケーションを参照する ことで表現 ロケーション:レジスタ と メモリ. Write. add. r4 =. r1 + r2. add. r5 =. r4 + r3. - PowerPoint PPT Presentation
Citation preview
AdvancedComputer
Architecture
09. メモリ・ディスアンビギュエーション
五島 正裕
Advanced Computer Architecture
内容
1. データ依存2. メモリ・ディスアンビギュエーション3. ストア・セット・メモリ依存予測器
AdvancedComputer
Architecture
データ依存
Advanced Computer Architecture
r4 + r3
データ依存
制御駆動型 (control-driven) (⇔ データ駆動, data-driven ) 命令間のデータの授受は,
プログラム・オーダ上で,先行 / 後続の関係にある 2 命令が, 同一のロケーションを参照する
ことで表現 ロケーション:レジスタ と メモリ
add r4 =
add r5 =
r1 + r2
Write
Read
Advanced Computer Architecture
データ依存
後 続 命 令
Read Write
先行命令
Read
入力依存 (input) 逆依存 (anti)
Write
フロー依存 (flow) 出力依存 (output)
Ip
Is
Ip
Is
Ip
Is
Ip
Is
time
time
time
time
Advanced Computer Architecture
ロード / ストア命令
ロード命令 r[Rt] = *(r[Rs] + immediate);
ストア命令 *(r[Rs] + immediate) = r[Rt];
opop RsRs RtRt immediateimmediate031 152025
Advanced Computer Architecture
レジスタとメモリ
レジスタ番号 静的 デコード・ステージで分かる
メモリのアドレス 動的 アドレス計算(実行)ステージで初めて分かる:「曖昧」
Advanced Computer Architecture
メモリの曖昧性による偽の依存
偽の依存: ストアのアドレスが決まるまで,
後続のロード / ストアは 原則 実行できない 「決まったら違ってた」
Advanced Computer Architecture
解決法
防止(予防, prevention ): ロード / ストアは in-order で
発見 & 回復 (detection & recovery) : 依存なしと予測して out-of-order で メモリ・オーダ違反 (memory-order violation) を発見 0 ~ 7% のロードがメモリ・オーダ違反 ⇒ ペナルティ
理想 (ideal, oracle) : IPC 最大 2 倍
Advanced Computer Architecture
偽の依存の影響
IPC 2 倍の理由:「計算のかたまりが重なる」 「計算のかたまりは,ロードではじまり,ストアで終わる」 「真のメモリ・データ依存がクリティカルになるようなコードは,
最適化されてない」
目標: ロードを,特に早期に実行したい (ストアは,そんなでもない)
AdvancedComputer
Architecture
メモリ・ディスアンビギュエーション
Advanced Computer Architecture
メモリ・ディスアンビギュエーション
ディスアンビギュエーション (disambiguation) : 「非曖昧化」,「曖昧性除去(解消)」
分離 (split) ロード / ストア アドレス予測 アドレス一致 / 不一致予測
Advanced Computer Architecture
ロード / ストア命令
通常のロード / ストア命令: アドレス計算部 メモリ・アクセス部
ロード命令 : r[Rt] = *(r[Rs] + immediate);
ストア命令: *(r[Rs] + immediate) = r[Rt];
opop RsRs RtRt immediateimmediate031 152025
Advanced Computer Architecture
分離ロード / ストア
通常のロード / ストア命令: アドレス計算部 メモリ・アクセス部
分離ロード / ストア: ディスパッチ時に分離,以降 2 つの命令としてスケジューリング
効果: ストア・バリューがなくても,アドレス計算が開始できる
バリューより,アドレスが早く決まることが多い ロードは変わらない
バリューに相当するソースがないから
Advanced Computer Architecture
ロード / ストア命令
普通のロード / ストア命令: 非分離 (non-split) を想定
理由: パイプライン・マシンで, ALU でアドレス計算をすることを想定 コード効率の改善(命令の圧縮)
非 RISC 的?
5
DRMDR
100100PC
Main Memory
1000
MA MD
2000
IF
ID
EX
MEM
WB
100
210
10LD 1 2
IR
RegFile
Rs
Rt
Advanced Computer Architecture
アドレス予測
ロード / ストアのアドレスを予測 単純にロードを早期実行する効果 ストアのアドレスを予測 ⇒ ディスアンビギュエーションの効果
値予測の一種 だが,値予測より歴史が古い
メモリ・アクセスがストライドであることは容易に想像できる
Advanced Computer Architecture
ハードウェア
今までの方法: 分離ロード / ストア アドレス予測
実際にアドレスの一致検出を行う スケジューリングのために,比較器のマトリクス(行列)が必要! 比較器数 ≒ ½ × (ウィンドウ・サイズ)2
もう 1 つの方法: アドレス一致 / 不一致予測
Advanced Computer Architecture
比較器のマトリクス
old
new
0
1
2
3
0 1 2effectiveaddress 先行命令
=? rdyL/S Valid
Load ― ― 1
Store
0 ― 0
1= 0
≠ 1
L/S V
AdvancedComputer
Architecture
ストア・セット・メモリ依存予測器
Advanced Computer Architecture
ストア・セット
あるロードのストア・セットとは: そのロードが依存したことがあるストアの集合
計算の方法: recovery-based
最初「依存していない」としておいて, オーダ違反 (memory-order violation) を検出して,追加
利用の方法: ロードは,そのストア・セット内のストアに依存すると予測
Advanced Computer Architecture
予測器の実装
原理的には: ストア・セット内のすべてのストアが実行された後でロードを実行
制限: ストア・セット内のストアは in-order で実行
In-order チェイン: ストア → ストア → … → ストア → ロード
Advanced Computer Architecture
Instruction Window
構造と動作
SSID X
SSID X
SSID X
SSID Table
LastFetched
StoreTable
X
S
S
L
SSID : Store Set ID
S1
S2
L
S1S2
Advanced Computer Architecture
Recovery-Based
ストア・セットの計算の方法: recovery-based
最初「依存していない」としておいて, オーダ違反 (memory-order violation) を検出して,追加
Violation の検出: 比較器数 ≒(ウィンドウ・サイズ) ×(発行幅)
「教訓」: 厳密にやるより,いい加減にやったほうがうまくいく
Advanced Computer Architecture
比較器のアレイ
old
new
0
1
2
3
effectiveaddress 先行命令
=? rdyL/S Valid
Load ― ― 1
Store
0 ― 0
1= 0
≠ 1
L/S V
AdvancedComputer
Architecture
今日のまとめ
Advanced Computer Architecture
メモリ・データ依存
データ依存: レジスタ メモリ
メモリのデータ依存: 動的 アドレス計算しないと分からない:「曖昧」
Advanced Computer Architecture
メモリ参照の曖昧性による偽の依存
ストアのアドレスが決まるまで,後続のロード / ストアは実行できない
保守的 (conservative) な方法: ロード / ストアは in-order で
ロードは,特に早期に実行したい 「計算のかたまりは,ロードではじまり,ストアで終わる」
ストアは,そんなでもない 真のメモリ・データ依存がクリティカルであるようなプログラムは,
最適化されてない?
Advanced Computer Architecture
ディスアンビギュエーション
ディスアンビギュエーション(非曖昧化,曖昧性除去,解消) 分離ロード / ストア アドレス予測 アドレス一致 / 不一致予測
ストア・セット依存予測器
Advanced Computer Architecture
今後の予定
7/ 5 マルチスレッド・プロセッサ
7/12
ベクトル処理ベクトル型計算機SIMD 命令セット
7/19
7/26