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

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

Jan 06, 2016

Download

Documents

Nikki

09. メモリ・ディスアンビギュエーション. 五島 正裕. 内容. データ依存 メモリ・ディスアンビギュエーション ストア・セット・メモリ依存予測器. データ依存. データ依存. 制御駆動型 (control-driven) (⇔ データ駆動, data-driven ) 命令間のデータの授受は, プログラム・オーダ上で,先行 / 後続の関係にある 2 命令が, 同一のロケーションを参照する ことで表現 ロケーション:レジスタ と メモリ. Write. add. r4 =. r1 + r2. add. r5 =. r4 + r3. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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