09. メモリ・ディスアンビギュエーション

30
Advanced Computer Architecture 09. メメメ メメメメメメメメメメメメメ 五五 五五

Upload: nikki

Post on 06-Jan-2016

59 views

Category:

Documents


0 download

DESCRIPTION

09. メモリ・ディスアンビギュエーション. 五島 正裕. 内容. データ依存 メモリ・ディスアンビギュエーション ストア・セット・メモリ依存予測器. データ依存. データ依存. 制御駆動型 (control-driven) (⇔ データ駆動, data-driven ) 命令間のデータの授受は, プログラム・オーダ上で,先行 / 後続の関係にある 2 命令が, 同一のロケーションを参照する ことで表現 ロケーション:レジスタ と メモリ. Write. add. r4 =. r1 + r2. add. r5 =. r4 + r3. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 09.  メモリ・ディスアンビギュエーション

AdvancedComputer

Architecture

09. メモリ・ディスアンビギュエーション

五島 正裕

Page 2: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

内容

1. データ依存2. メモリ・ディスアンビギュエーション3. ストア・セット・メモリ依存予測器

Page 3: 09.  メモリ・ディスアンビギュエーション

AdvancedComputer

Architecture

データ依存

Page 4: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

r4 + r3

データ依存

制御駆動型 (control-driven) (⇔ データ駆動, data-driven ) 命令間のデータの授受は,

プログラム・オーダ上で,先行 / 後続の関係にある 2 命令が, 同一のロケーションを参照する

ことで表現 ロケーション:レジスタ と メモリ

add r4 =

add r5 =

r1 + r2

Write

Read

Page 5: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

データ依存

後 続 命 令

Read Write

先行命令

Read

入力依存 (input) 逆依存 (anti)

Write

フロー依存 (flow) 出力依存 (output)

Ip

Is

Ip

Is

Ip

Is

Ip

Is

time

time

time

time

Page 6: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

ロード / ストア命令

ロード命令 r[Rt] = *(r[Rs] + immediate);

ストア命令 *(r[Rs] + immediate) = r[Rt];

opop RsRs RtRt immediateimmediate031 152025

Page 7: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

レジスタとメモリ

レジスタ番号 静的 デコード・ステージで分かる

メモリのアドレス 動的 アドレス計算(実行)ステージで初めて分かる:「曖昧」

Page 8: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

メモリの曖昧性による偽の依存

偽の依存: ストアのアドレスが決まるまで,

後続のロード / ストアは 原則 実行できない 「決まったら違ってた」

Page 9: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

解決法

防止(予防, prevention ): ロード / ストアは in-order で

発見 & 回復 (detection & recovery) : 依存なしと予測して out-of-order で メモリ・オーダ違反 (memory-order violation) を発見 0 ~ 7% のロードがメモリ・オーダ違反 ⇒ ペナルティ

理想 (ideal, oracle) : IPC 最大 2 倍

Page 10: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

偽の依存の影響

IPC 2 倍の理由:「計算のかたまりが重なる」 「計算のかたまりは,ロードではじまり,ストアで終わる」 「真のメモリ・データ依存がクリティカルになるようなコードは,

 最適化されてない」

目標: ロードを,特に早期に実行したい (ストアは,そんなでもない)

Page 11: 09.  メモリ・ディスアンビギュエーション

AdvancedComputer

Architecture

メモリ・ディスアンビギュエーション

Page 12: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

メモリ・ディスアンビギュエーション

ディスアンビギュエーション (disambiguation) : 「非曖昧化」,「曖昧性除去(解消)」

分離 (split) ロード / ストア アドレス予測 アドレス一致 / 不一致予測

Page 13: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

ロード / ストア命令

通常のロード / ストア命令: アドレス計算部 メモリ・アクセス部

ロード命令 : r[Rt] = *(r[Rs] + immediate);

ストア命令: *(r[Rs] + immediate) = r[Rt];

opop RsRs RtRt immediateimmediate031 152025

Page 14: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

分離ロード / ストア

通常のロード / ストア命令: アドレス計算部 メモリ・アクセス部

分離ロード / ストア: ディスパッチ時に分離,以降 2 つの命令としてスケジューリング

効果: ストア・バリューがなくても,アドレス計算が開始できる

バリューより,アドレスが早く決まることが多い ロードは変わらない

バリューに相当するソースがないから

Page 15: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

ロード / ストア命令

普通のロード / ストア命令: 非分離 (non-split) を想定

理由: パイプライン・マシンで, ALU でアドレス計算をすることを想定 コード効率の改善(命令の圧縮)

非 RISC 的?

Page 16: 09.  メモリ・ディスアンビギュエーション

5

DRMDR

100100PC

Main Memory

1000

MA MD

2000

IF

ID

EX

MEM

WB

100

210

10LD 1 2

IR

RegFile

Rs

Rt

Page 17: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

アドレス予測

ロード / ストアのアドレスを予測 単純にロードを早期実行する効果 ストアのアドレスを予測 ⇒ ディスアンビギュエーションの効果

値予測の一種 だが,値予測より歴史が古い

メモリ・アクセスがストライドであることは容易に想像できる

Page 18: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

ハードウェア

今までの方法: 分離ロード / ストア アドレス予測

実際にアドレスの一致検出を行う スケジューリングのために,比較器のマトリクス(行列)が必要! 比較器数 ≒ ½ × (ウィンドウ・サイズ)2

もう 1 つの方法: アドレス一致 / 不一致予測

Page 19: 09.  メモリ・ディスアンビギュエーション

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

Page 20: 09.  メモリ・ディスアンビギュエーション

AdvancedComputer

Architecture

ストア・セット・メモリ依存予測器

Page 21: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

ストア・セット

あるロードのストア・セットとは: そのロードが依存したことがあるストアの集合

計算の方法: recovery-based

最初「依存していない」としておいて, オーダ違反 (memory-order violation) を検出して,追加

利用の方法: ロードは,そのストア・セット内のストアに依存すると予測

Page 22: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

予測器の実装

原理的には: ストア・セット内のすべてのストアが実行された後でロードを実行

制限: ストア・セット内のストアは in-order で実行

In-order チェイン: ストア → ストア → … → ストア → ロード

Page 23: 09.  メモリ・ディスアンビギュエーション

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

Page 24: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

Recovery-Based

ストア・セットの計算の方法: recovery-based

最初「依存していない」としておいて, オーダ違反 (memory-order violation) を検出して,追加

Violation の検出: 比較器数 ≒(ウィンドウ・サイズ) ×(発行幅)

「教訓」: 厳密にやるより,いい加減にやったほうがうまくいく

Page 25: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

比較器のアレイ

old

new

0

1

2

3

effectiveaddress 先行命令

=? rdyL/S Valid

Load ― ― 1

Store

0 ― 0

1= 0

≠ 1

L/S V

Page 26: 09.  メモリ・ディスアンビギュエーション

AdvancedComputer

Architecture

今日のまとめ

Page 27: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

メモリ・データ依存

データ依存: レジスタ メモリ

メモリのデータ依存: 動的 アドレス計算しないと分からない:「曖昧」

Page 28: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

メモリ参照の曖昧性による偽の依存

ストアのアドレスが決まるまで,後続のロード / ストアは実行できない

保守的 (conservative) な方法: ロード / ストアは in-order で

ロードは,特に早期に実行したい 「計算のかたまりは,ロードではじまり,ストアで終わる」

ストアは,そんなでもない 真のメモリ・データ依存がクリティカルであるようなプログラムは,

最適化されてない?

Page 29: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

ディスアンビギュエーション

ディスアンビギュエーション(非曖昧化,曖昧性除去,解消) 分離ロード / ストア アドレス予測 アドレス一致 / 不一致予測

ストア・セット依存予測器

Page 30: 09.  メモリ・ディスアンビギュエーション

Advanced Computer Architecture

今後の予定

7/ 5 マルチスレッド・プロセッサ

7/12

ベクトル処理ベクトル型計算機SIMD 命令セット

7/19

7/26