データ値の局所性を利用した ライン共有キャッシュの提案

61
デデデデデデデデデデデデデ デデデデデデデデデデデデデ デデデデデデデ ○デ デデデ デデ デデ デデ デデ デデ デデ 1

Upload: kailey

Post on 18-Jan-2016

27 views

Category:

Documents


0 download

DESCRIPTION

データ値の局所性を利用した ライン共有キャッシュの提案. 九州大学 大学院         ○ 岡 慶太郎 福本 尚人          井上 弘士  村上 和彰. キャッシュメモリの大容量化. マルチコア・プロセッサが主流 メモリウォール問題の深刻化 メモリアクセス要求増加 IO ピンの制限 →大容量の LL(Last Level) キャッシュを搭載. 8MB の L3 キャッシュを搭載. Core i7 のチップ 写真 *. * http ://www.atmarkit.co.jp/fsys/zunouhoudan/102zunou/corei7.html. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: データ値の局所性を利用した ライン共有キャッシュの提案

データ値の局所性を利用したライン共有キャッシュの提案

九州大学大学院        ○岡 慶太郎 福本 尚人         井上 弘士  村上 和彰

1

Page 2: データ値の局所性を利用した ライン共有キャッシュの提案

キャッシュメモリの大容量化

• マルチコア・プロセッサが主流• メモリウォール問題の深刻化

– メモリアクセス要求増加– IOピンの制限

→大容量の LL(Last Level)キャッシュを搭載

2* http://www.atmarkit.co.jp/fsys/zunouhoudan/102zunou/corei7.html

Core i7のチップ写真*

8MBのL3キャッシュを

搭載

Page 3: データ値の局所性を利用した ライン共有キャッシュの提案

キャッシュメモリの大容量化の問題点

• リーク消費電力増加– 容量 1MB→8MBで 8倍 *

• アクセスレイテンシ増加– 容量 1MB→8MBで 2.1倍 *

3

大幅な面積増加を伴わず,オフチップメモリアクセス回数を削減する手法

が必要

* CACTIによりブロックサイズ 64B,連想度 8で実験した結果

Page 4: データ値の局所性を利用した ライン共有キャッシュの提案

目次

• 研究背景• 着目点:データ値の局所性• ライン共有キャッシュ• 評価–ミス率,面積, L1ミスペナルティ

• まとめ• 今後の課題

4

Page 5: データ値の局所性を利用した ライン共有キャッシュの提案

• 従来型キャッシュメモリのキャッシング方法– 参照アドレスに基づいてブロックの格納場所を決定

• データ値の局所性が高いデータ値の局所性:メモリアドレスが異なる多数のデータが同一の値を有する性質

• 仮説– キャッシュ内に同一データ値を有するブロックが多数存在

タグ

ライン

001000

010011

LLキャッシュメモリインデック

100101110111

従来型キャッシュメモリは容量を無駄遣い!?

5

ブロックの格納場所

書込みブロック A

インデックス

タグ0100 001

参照アドレス

0100 A ブロック:キャッシュのレベル間で取り交わすデータ

B

データ値:ブロックのデータの値

Page 6: データ値の局所性を利用した ライン共有キャッシュの提案

タグ

B

ライン

001000

010011

LLキャッシュメモリインデック

100101110111

従来型キャッシュメモリは容量を無駄遣い!?

6

ブロックの格納場所

書込みブロック A

インデックス

タグ0000 101

参照アドレス

0100 A

データ値:ブロックのデータの値

0000 A

• 従来型キャッシュメモリのキャッシング方法– 参照アドレスに基づいてブロックの格納場所を決定

• データ値の局所性が高いデータ値の局所性:メモリアドレスが異なる多数のデータが同一の値を有する性質

• 仮説– キャッシュ内に同一データ値を有するブロックが多数存在

ブロック:キャッシュのレベル間で取り交わすデータ

Page 7: データ値の局所性を利用した ライン共有キャッシュの提案

従来型キャッシュメモリにおけるデータ値の局所性分析

多くのプログラムでキャッシュメモリ内のデータ値の局所性が高い

7

n:ブロック置き換え回数

平均圧縮率 =

キャッシュメモリ内のデータ値の局所性を平均圧縮率を用いて分析

Cholesky

BarnesFF

TFM

M

LUContig

LUNonco

ntig

OceanContig

WaterN

S

WaterSp

atial

average

00.20.40.60.8

64B 32B 16B 8B

平均圧縮率

キャッシュメモリ

AC

BA

B

圧縮率 =

キャッシュ容量 :1MB

ブロックサイズ

平均圧縮率が低い程,キャッシュメモリ内のデータ値の局所性が高い

Page 8: データ値の局所性を利用した ライン共有キャッシュの提案

研究概要

• 着目点–キャッシュメモリ内に同一値を有するデータが多く存在

• 研究目的– LLキャッシュメモリの面積を大きく増加することなくLLキャッシュミス率を削減

• 提案手法–同一データ値を有するラインを共有し,容量を効率的に利用

–同容量の従来型キャッシュと比較し,最大でミス率を 18ポイント削減可能

8

Page 9: データ値の局所性を利用した ライン共有キャッシュの提案

目次

• 研究背景• 着目点:データ値の局所性• ライン共有キャッシュ• 評価–ミス率,面積, L1ミスペナルティ

• まとめ• 今後の課題

9

Page 10: データ値の局所性を利用した ライン共有キャッシュの提案

ライン共有キャッシュの概念LSC(Line Sharing Cache)

従来型キャッシュに比べ,より多くのデータ値をキャッシュメモリに格納可能

10

従来型キャッシュ

タグアレイ

データアレイ

タグアレイ

…A

データアレイ

A

タグのエントリ数増

参照アドレスに基づきブロックを格納するラインを決定

同一データ値を有するブロックを格納するラインを 1箇所に限定

ライン共有キャッシュ

Page 11: データ値の局所性を利用した ライン共有キャッシュの提案

解決すべき課題その 1~如何にしてタグとラインを紐付けるか ?~

11

?

?

データアレイ

11111

ライン

0100

0110

タグ

タグアレイ

各タグは対応するラインを特定できない

• タグに対応するラインを特定する必要あり• 問題点:各タグに対応するラインを特定不可能• 解決策:行番号によるラインの区別と各タグに行ポインタ

配置

Page 12: データ値の局所性を利用した ライン共有キャッシュの提案

解決すべき課題その 1~如何にしてタグとラインを紐付けるか ?~

12

データアレイ

11111

ライン000

001010011100101110111

行番号

0100

0110

タグ

タグアレイ

?

?

• タグに対応するラインを特定する必要あり• 問題点:各タグに対応するラインを特定不可能• 解決策:行番号によるラインの区別と各タグに行ポインタ

配置

各タグは対応するラインを特定できない

Page 13: データ値の局所性を利用した ライン共有キャッシュの提案

解決すべき課題その 1~如何にしてタグとラインを紐付けるか ?~

• タグに対応するラインを特定する必要あり• 問題点:各タグに対応するラインを特定不可能• 解決策:行番号によるラインの区別と各タグに行ポインタ配置

13

タグ・ポインタアレイ

0100

0110

タグ

行ポインタ

100

100

データアレイ

11111

ライン000

001010011100101110111

行番号タグアレイ

Page 14: データ値の局所性を利用した ライン共有キャッシュの提案

解決すべき課題その 2~如何にして効率の良いデータ検索を実現するか ?~

• 書込み動作:データアレイの全ラインを探索する必要あり

• 問題点:検索コストが大• 解決策:データ値を用いたハッシング

タグ・ポインタアレイ

000001010011100101110111

データアレイ行番号

11111

0100

0110

タグインデックス

111

行ポインタ0000

000100100011

111111101101110010111001書込みブロッ

ク 11111

インデックス

タグ0100 0001

参照アドレス

=一致

書き込みデー

タ値の検索

ライン

14

Page 15: データ値の局所性を利用した ライン共有キャッシュの提案

解決すべき課題その 2~如何にして効率の良いデータ検索を実現するか ?~

• 書込み動作:データアレイの全ラインを探索する必要あり

• 問題点:検索コストが大• 解決策:データ値を用いたハッシング

15

タグ・ポインタアレイ

0100

0110

タグインデックス

111

行ポインタ0000

000100100011

111111101101110010111001書込みブロッ

ク 11111

インデックス

タグ0100 0001

参照アドレス

行番号とデータ値の下位 3ビットを対応付けてブロックを配置

000001010011100101110111

データアレイ行番号

11111

書き込みデー

タ値の検索

ライン

11111

行番号のサイズ

Page 16: データ値の局所性を利用した ライン共有キャッシュの提案

解決すべき課題その 2~如何にして効率の良いデータ検索を実現するか ?~

• 書込み動作:データアレイの全ラインを探索する必要あり

• 問題点:検索コストが大• 解決策:データ値を用いたハッシング

16

タグ・ポインタアレイ

0100

0110

タグインデックス

111

行ポインタ0000

000100100011

111111101101110010111001書込みブロッ

ク 11111

インデックス

タグ0100 0001

参照アドレス

書込みデータ値の下位 3ビット

に対応する行番号にアクセス

=一致

000001010011100101110111

データアレイ行番号

書き込みデー

タ値の検索

ライン

11111

書込みデータ値がラインに存在

(データ値ヒット )

行番号のサイズ

Page 17: データ値の局所性を利用した ライン共有キャッシュの提案

解決すべき課題その 2~如何にして効率の良いデータ検索を実現するか ?~

• 書込み動作:データアレイの全ラインを探索する必要あり

• 問題点:検索コストが大• 解決策:データ値を用いたハッシング

17

タグ・ポインタアレイ

0100

0110

タグインデックス

111

行ポインタ0000

000100100011

111111101101110010111001書込みブロッ

ク 11111

インデックス

タグ0100 0001

参照アドレス111

000001010011100101110111

データアレイライン

11111

行番号を行ポインタに書込み

書込みデータ値がラインに存在

(データ値ヒット )

書込みデータ値の下位 3ビット

に対応する行番号にアクセス

行番号のサイズ

Page 18: データ値の局所性を利用した ライン共有キャッシュの提案

• データアレイ:各行番号に 1ラインを対応付け• 問題点:ブロックの追出しが頻発• 解決策:データアレイの水平分割と列ポインタの導入

タグ・ポインタアレイ

0100

0110…

タグインデックス

111

行ポインタ0000

000100100011

111111101101110010111001

データアレイ

000001010011100101110111

ライン

解決すべき課題その 3~如何にしてデータアレイでの書込み競合を回避する

か ?~

書込みブロック 00111

indextag0100 0001

参照アドレス

=一致

行番号

11111

18

Page 19: データ値の局所性を利用した ライン共有キャッシュの提案

• データアレイ:各行番号に 1ラインを対応付け• 問題点:ブロックの追出しが頻発• 解決策:データアレイの水平分割と列ポインタの導入

タグ・ポインタアレイ

0100

0110…

タグインデックス

111

行ポインタ0000

000100100011

111111101101110010111001

解決すべき課題その 3~如何にしてデータアレイでの書込み競合を回避する

か ?~

書込みブロック 00111

indextag0100 0001

参照アドレス

書込みデータ値の下位 3ビット

に対応する行番号にアクセス

データアレイ

000001010011100101110111

ライン

書込みデータ値がラインに非存在

(データ値ミス )

ブロックの追出しが必要

行番号

11111

19

行番号のサイズ

Page 20: データ値の局所性を利用した ライン共有キャッシュの提案

• データアレイ:各行番号に 1ラインを対応付け• 問題点:ブロックの追出しが頻発• 解決策:データアレイの水平分割と列ポインタの導入

解決すべき課題その 3~如何にしてデータアレイでの書込み競合を回避する

か ?~

書込みブロック 00111

indextag0100 0001

参照アドレス

データアレイ

000001010011100101110111

ライン

行番号

11111

タグ・ポインタアレイ

0100

0110…

タグインデックス

111

行ポインタ0000

000100100011

111111101101110010111001

20

Page 21: データ値の局所性を利用した ライン共有キャッシュの提案

解決すべき課題その 3~如何にしてデータアレイでの書込み競合を回避する

か ?~• データアレイ:各行番号に 1ラインを対応付け• 問題点:ブロックの追出しが頻発• 解決策:データアレイの水平分割と列ポインタの導入

書込みブロック 00111

indextag0100 0001

参照アドレス 00011011

行番号

データアレイ

11111

ライン

ライン

タグ・ポインタアレイ

0100

0110…

タグインデックス

111

行ポインタ0000

000100100011

111111101101110010111001

各行番号に複数のラインを対応付け

21

Page 22: データ値の局所性を利用した ライン共有キャッシュの提案

• データアレイ:各行番号に 1ラインを対応付け• 問題点:ブロックの追出しが頻発• 解決策:データアレイの水平分割と列ポインタの導入

タグ・ポインタアレイ

0100

0110…

タグインデックス

111

行ポインタ0000

000100100011

111111101101110010111001

解決すべき課題その 3~如何にしてデータアレイでの書込み競合を回避する

か ?~

書込みブロック 00111

indextag0100 0001

参照アドレス

データアレイ

00011011 11111

ライン

行番号

列番号0

列番号1

ライン

行番号,列番号によりラインを区別

22

Page 23: データ値の局所性を利用した ライン共有キャッシュの提案

解決すべき課題その 3~如何にしてデータアレイでの書込み競合を回避する

か ?~• データアレイ:各行番号に 1ラインを対応付け• 問題点:ブロックの追出しが頻発• 解決策:データアレイの水平分割と列ポインタの導入

書込みブロック 00111

indextag0100 0001

参照アドレス

タグ・ポインタアレイ

データアレイ

00011011 11111

ライン

行番号

列番号0

列番号1

1

列ポインタ

ライン

行ポインタ

タグインデックス 0000

000100100011

111111101101110010111001

0100

0110…

11

列番号を格納するために

列ポインタの導入23

Page 24: データ値の局所性を利用した ライン共有キャッシュの提案

0100

0110…

111

インデックス 0000

000100100011

111111101101110010111001 一致

解決すべき課題その 3~如何にしてデータアレイでの書込み競合を回避する

か ?~• データアレイ:各行番号に 1ラインを対応付け• 問題点:ブロックの追出しが頻発• 解決策:データアレイの水平分割と列ポインタの導入

書込みブロック 00111

indextag0100 0001

参照アドレス

タグ・ポインタアレイ

データアレイ

00011011 11111

ライン

行番号

列番号0

列番号1

列ポインタ

=

書込みデータ値の下位 2ビット

に対応する行番号にアクセス

00111

ブロックを追い出すことなく書込み

…ライン

タグ 行ポインタ

データ値ミス

24

行番号のサイズ

Page 25: データ値の局所性を利用した ライン共有キャッシュの提案

読み出し動作読出し要求発行後の動作1. インデックスアクセス2. タグ比較3. ポインタ読出し4. ブロック読出し

indextag0100 0001

参照アドレス

タグ・ポインタアレイ

データアレイ

00011011

11101

ライン

行番号

列番号0

列番号1

0100

0110…

タグインデックス

01

11

行ポインタ0000

000100100011

111111101101110010111001

列ポインタ

0

1

…ライン

25

Page 26: データ値の局所性を利用した ライン共有キャッシュの提案

読み出し動作読出し要求発行後の動作1. インデックスアクセス2. タグ比較3. ポインタ読出し4. ブロック読出し

indextag0100 0001

参照アドレス

タグ・ポインタアレイ

データアレイ

00011011

11101

ライン

行番号

列番号0

列番号1

0100

0110…

タグインデックス

01

11

行ポインタ0000

000100100011

111111101101110010111001

列ポインタ

0

1

=一致

ライン

26

Page 27: データ値の局所性を利用した ライン共有キャッシュの提案

読み出し動作

indextag0100 0001

参照アドレス

タグ・ポインタアレイ

データアレイ

00011011

11101

ライン

行番号

列番号0

列番号1

0100

0110…

タグインデックス

01

11

行ポインタ0000

000100100011

111111101101110010111001

列ポインタ

0

1

同時に動作可能

01 0

ライン

読出し要求発行後の動作1. インデックスアクセス2. タグ比較3. ポインタ読出し4. ブロック読出し

27

Page 28: データ値の局所性を利用した ライン共有キャッシュの提案

読み出し動作

indextag0100 0001

参照アドレス

タグ・ポインタアレイ

データアレイ

00011011

11101

ライン

行番号

列番号0

列番号1

0100

0110…

タグインデックス

01

11

行ポインタ0000

000100100011

111111101101110010111001

列ポインタ

0

1

同時に動作可能

01 0 11101

ライン

読出し要求発行後の動作1. インデックスアクセス2. タグ比較3. ポインタ読出し4. ブロック読出し

28

Page 29: データ値の局所性を利用した ライン共有キャッシュの提案

従来型キャッシュ VSライン共有キャッシュ

29

LSC の従来型キャッシュに対す

る違い理由

ミス率 減少 データアレイ容量を有効利用

読出しレイテンシ

変化なしタグとポインタを同時に読み出し

書込みレイテンシ

増加• 書込みデータ値の探索• 追出しの動作が複雑化

データアレイに対する書込み回数

減少データ値ヒットの場合データアレイに対する書込みを行わない

Page 30: データ値の局所性を利用した ライン共有キャッシュの提案

目次

• 研究背景• データ値の局所性• ライン共有キャッシュ• 評価–ミス率,面積, L1ミスペナルティ

• まとめ• 今後の課題

30

Page 31: データ値の局所性を利用した ライン共有キャッシュの提案

評価指標と求め方• 面積

– 実装に必要な SRAMビット数で評価• L1ミスペナルティ

– モデルにより評価• L2アクセスレインテンシ→キャッシュメモリシミュレータCACTI

• キャッシュミス率– 従来型キャッシュのミス率と平均圧縮率からの見積もりにより評価

• 従来型キャッシュのミス率→マルチコアシミュレータM5

31

LSCのミス率の評価方法

splash2M5によるシミュレーショ

L2アクセス

トレース

容量平均圧縮率

容量

ミス率

従来型キャッシュの L2ミス率

平均圧縮率

LSCのミス率に換算

ベンチマーク・プログラム

Page 32: データ値の局所性を利用した ライン共有キャッシュの提案

L2キャッシュサイズ

L2キャッシュミ

ス率評価方法

• 面積:ミス率を従来型キャッシュ 8MBにおける値に固定• ミス率:データアレイ容量を 1MBに固定• L1ミスペナルティ:データアレイ容量を 1MBに固定

32

8MBLSCの容量

必要ビット数

L2キャッシュミ

ス率

従来型キャッシュのミス率

LSCのミス率

面積の比較 ミス率および L1ミスペナルティの比較

コア数 8

L1 キャッシュ

サイズ: 32KB, 連想度 :2, ブロックサイズ :64B

L2 キャッシュ

連想度: 8 ブロックサイズ :64B

M5の評価環境

データメモリ :1MB

従来型キャッシュ

LSC

従来型キャッシュ

LSC

データメモリ :1MB

Page 33: データ値の局所性を利用した ライン共有キャッシュの提案

base LSC base LSC base LSC base LSC base LSC base LSCCholesky Barnes FFT FMM LUCon OceanCon

02468

1012

データアレイ容量 ポインタアレイ容量

ベンチマーク・プログラム

必要メモリ容量

[MB]

キャッシュミス率一定とした場合の面積削減効果

33圧縮率が低い程 ,面積を大幅に削減

52%面積削減

ブロックサイズ 64B,従来型キャッシュ容量 8MB

0.21 0.69 0.43 0.48 0.86 0.55圧縮率

Page 34: データ値の局所性を利用した ライン共有キャッシュの提案

データアレイ容量を一定とした場合のミス率削減効果

すべてのプログラムでミス率を削減

Cholesky

BarnesFF

TFM

MLU

Con

LUNonco

n

OceanCon

OceanNonco

n

WaterN

S

WaterSp

atialRadix

Raytrace

0

0.2

0.4

0.6

0.8

1base LSC

ベンチマーク・プログラム

キャッシュミス率

18ポイント削減

ブロックサイズ 64B,データアレイ容量 1MB

34

圧縮率0.21

ミス率を大幅に

削減できない

容量を増加するとミス率がすぐに飽和

0

0.2

0.4

0.6

0.8

L2キャッシュ容量 [MB]

L2キャッシュミス率

1 32168

容量を増加した場合,ミス率の減少幅小

Page 35: データ値の局所性を利用した ライン共有キャッシュの提案

データアレイ容量を一定とした場合のミス率削減効果

すべてのプログラムでミス率を削減

Cholesky

BarnesFF

TFM

MLU

Con

LUNonco

n

OceanCon

OceanNonco

n

WaterN

S

WaterSp

atialRadix

Raytrace

0

0.2

0.4

0.6

0.8

1base LSC

ベンチマーク・プログラム

キャッシュミス率

ブロックサイズ 64B,データアレイ容量 1MB

35

圧縮率0.55

ミス率を 18ポイント削減

00.10.20.30.40.50.60.7

L2キャッシュ容量 [MB]

L2キャッシュミス率

容量を増加する場合,ミス率の減少幅大

1 32168

Page 36: データ値の局所性を利用した ライン共有キャッシュの提案

データアレイ容量一定とした場合のL1ミスペナルティ削減効果

00.20.40.60.8

11.2

ベンチマーク・プログラム

L1ミスペナルティ比

アクセス時間を考慮した場合でもL1ミスペナルティを大幅に削減

従来型キャッシュの L1ミスペナルティで正規化L1ミスペナル

ティ 30%削減

ブロックサイズ 64B,データアレイ容量 1MB

36

Page 37: データ値の局所性を利用した ライン共有キャッシュの提案

まとめ

• データ値の局所性を利用したライン共有キャッシュを提案–ミス率一定条件において• 面積:最大 52%削減

–容量一定条件において• ミス率:最大 18ポイント削減• L1ミスペナルティ:最大 30%削減

• ライン共有キャッシュの有効性を確認

37

Page 38: データ値の局所性を利用した ライン共有キャッシュの提案

今後の課題

• ライン共有キャッシュの詳細な評価–キャッシュミス率–アクセスレイテンシ–アクセスあたりの消費電力

• ライン共有キャッシュの適用範囲を拡張– LSCはデータアレイへの書込み回数を削減→不揮発性メモリに利用

• 既存研究との比較

38

Page 39: データ値の局所性を利用した ライン共有キャッシュの提案

ご清聴ありがとうございました

39

Page 40: データ値の局所性を利用した ライン共有キャッシュの提案

バックアップスライド

40

Page 41: データ値の局所性を利用した ライン共有キャッシュの提案

既存研究Frequent Value Compression in Data Cache• 目的– L1キャッシュの消費電力大

• アプローチ– L1キャッシュに CC(Compression Cache)を導入

• ブロックのデータ値が FVT(Frequent Value Table)に存在→ブロックを半分に圧縮し格納

• 結果– ミス率,消費電力,オフチップのトラフィックを大幅に削減

• LSCとの違い– 圧縮対象のデータを予め決定

41Jun Yang,et al.”Frequent Value Compression in Data Caches”,MICRO’00

Page 42: データ値の局所性を利用した ライン共有キャッシュの提案

既存研究Dynamic Zero Compression for Cache Energy Reduction

• 目的– L1キャッシュの消費電力大

• アプローチ– L1キャッシュに FVC(Frequent Value Cache)を導入

• 結果– ミス率,消費電力,オフチップのトラフィックを大幅に削減

• LSCとの違い– 圧縮対象データを予め決定

42Jun Yang,et al.”Frequent Value Compression in Data Caches”,MICRO’00

Page 43: データ値の局所性を利用した ライン共有キャッシュの提案

質問内容• ミス率の求め方について

– 質問圧縮率で大丈夫なのか( A,A,A,B,C),( A,A,B,B,C)だと圧縮率が同じ

– 解答今のままではダメ

• 手法について– 質問データ値が0のやつばっかりだったら意味なくない?

– 解答その通りだがデータにより示されている.

• 圧縮率について– 質問具体的にはどんなデータを圧縮しているのか?(浮動小数点?アドレスポインタ?)

43

Page 44: データ値の局所性を利用した ライン共有キャッシュの提案

ライン共有キャッシュアーキテクチャ

タグポインタv

タグウェイ 0

ライン

データウェイ 0(列番号 0)

データウェイ 1(列番号 1)

0001

1011

行番号

データアレイタグ・ポインタアレイ

ポインタセット

ラインセット

0123

インデッ

クス

10011

44

110114567

ラインCA

Mタグポインタv

CAM

CAM

CAM

タグウェイ 1

Page 45: データ値の局所性を利用した ライン共有キャッシュの提案

データ値の局所性に着目• データ値の局所性

– メモリアドレスが異なるデータが同一の値を持つ性質• 同一データ値の書込み頻度分析

1. 書込みデータ値のごとに書込み回数を取得• 書込みデータ値:プロセッサがストアする 64bitのデータ

2. 書込み回数が多い順に並び替え3. 書込み回数を累計4. 書込みデータ値の種類数と累計書込み回数をプロット

10回

20回

5回

5回

20回

10回

A

B

C

データ 書込み回数 書込み回数 累計書込み回数

35回

20回

30回

B

A

D

データ

1 2 3 40

5

10

15

20

25

30

35

40

38回D 3回

3回

C 45

Page 46: データ値の局所性を利用した ライン共有キャッシュの提案

同一データ値の書込み頻度分析

多くのプログラムでデータ値の局所性が高い

Cholesky Barnes FFT

FMM LUContig OceanContig書込みデータ値の種類数

累計書き込み回数 75% 70% 65%

50%25%

55%

20% 20% 20%

20% 20% 20%

46

Page 47: データ値の局所性を利用した ライン共有キャッシュの提案

データアレイ容量を一定とした場合のミス率削減効果

すべてのベンチマークでミス率を削減

Cholesky

BarnesFF

TFM

MLU

Con

LUNonco

n

OceanCon

OceanNonco

n

WaterN

S

WaterSp

atialRadix

Raytrace

0

0.2

0.4

0.6

0.8

1base LSC

ベンチマーク・プログラム

キャッシュミス率

18ポイント削減

ブロックサイズ 64B,データアレイ容量 1MB

47

0.21

0.61

0.33

0.720.44

0.50

0.550.58

0.37 0.55

0.68

0.39

Page 48: データ値の局所性を利用した ライン共有キャッシュの提案

容量の影響L2キャッシュミス率

1MB

2MB

4MB

8MB

1MB

2MB

4MB

8MB

1MB

2MB

4MB

8MB

1MB

2MB

4MB

8MB

Cholesky FFT LUContig OceanContig

0

0.2

0.4

0.6

0.8

1

base LSC

• ミス率削減ポイント増加 FFT 容量を増加するとミス率削減幅大• ミス率削減ポイント低下: LUContig,OceanContig 容量を増加するとミス率削減度合い小

キャッシュミス

48

ブロックサイズ :64B

Page 49: データ値の局所性を利用した ライン共有キャッシュの提案

容量の影響L1ミスペナルティ

1MB

2MB

4MB

8MB

1MB

2MB

4MB

8MB

1MB

2MB

4MB

8MB

1MB

2MB

4MB

8MB

Cholesky FFT LUContig OceanContig

00.10.20.30.40.50.60.70.80.9

1

L1ミスペナルティはキャッシュミス率と同じ傾向

• ミス率削減ポイント増加 FFT • ミス率削減ポイント低下:

LUContig,OceanContig  49

ブロックサイズ :64B

Page 50: データ値の局所性を利用した ライン共有キャッシュの提案

ブロックサイズの影響L2キャッシュミス率

8 16 32 64 8 16 32 64 8 16 32 64 8 16 32 64Cholesky FFT LUContig OceanContig

0

0.2

0.4

0.6

0.8

1

base LSC

• ブロックサイズ減少• ミス率削減: Cholesky,FFT• ミス率増加: LUContig,OceanContig

空間的局所性を利用できないため効果が低い

キャッシュミス

19%ミス率削減

12%ミス率削減 17%ミ

ス率削減

18%ミス率削減

L2キャッシュ容量1MB

50

Page 51: データ値の局所性を利用した ライン共有キャッシュの提案

ブロックサイズの影響L1ミスペナルティ

8 16 32 64 8 16 32 64 8 16 32 64 8 16 32 64Cholesky FFT LUContig OceanContig

00.20.40.60.8

11.21.4

• ブロックサイズ減少• ミス率削減: Cholesky,FFT• ミス率増加: LUContig,OceanContig

L1ミスペナルティはキャッシュミス率と同じ傾向

ブロックサイズ 64Bの L1ミスペナルティで正規化L1ミスペナル

ティ17%削減L1ミスペナル

ティ22%削減

L1ミスペナルティ

18%削減

L1ミスペナルティ

25%増加

L1ミスペナル

ティ

51

L2キャッシュ容量1MB

Page 52: データ値の局所性を利用した ライン共有キャッシュの提案

L1ミスペナルティのモデル

52

Page 53: データ値の局所性を利用した ライン共有キャッシュの提案

動作フロー

53

Page 54: データ値の局所性を利用した ライン共有キャッシュの提案

読み出し開始

アドレス入力

ポインタアレイから読出し対象の

行ポインタと列ポインタを読み出し

データアレイから

読出し対象データ読み出し

Tag比較?

終了

書き込み操作

主記憶からデータ読み出し

YesNo

終了

タグ入替え

54

Page 55: データ値の局所性を利用した ライン共有キャッシュの提案

書きこみ開始

アドレスとデータ入力

主記憶からデータ読出し

Tag一致?

書き込み操作

YesNo

終了

タグ更新

55

Page 56: データ値の局所性を利用した ライン共有キャッシュの提案

書きこみ操作

56

Page 57: データ値の局所性を利用した ライン共有キャッシュの提案

評価

57

Page 58: データ値の局所性を利用した ライン共有キャッシュの提案

評価環境L1ミスペナルティ

• 周波数 :2GHz• L2レイテンシ :7cc• L2アクセス時間 :3.37179ns• 主記憶アクセスレイテンシ :200cc

58

テクノロジサイズ 90nm

キャッシュ容量 1MB

ブロックサイズ 64B

バス幅 256B

Cactiの設定値

Page 59: データ値の局所性を利用した ライン共有キャッシュの提案

圧縮率の求め方

59

Page 60: データ値の局所性を利用した ライン共有キャッシュの提案

ライン共有キャッシュの面積の見積もり方法

• LSCのデータアレイ容量– 圧縮率 ×従来型キャッシュのデータアレイ容量

• ポインタアレイ容量–ポインタのビット数 ×セット数 ×連想度• ポインタのビット数

– Log(LSCのデータアレイ容量 /(ブロックサイズ ))

• セット数,連想度– 従来型キャッシュにおけるセット数と同じ

• タグアレイ–従来型キャッシュの容量と同じ

60

Page 61: データ値の局所性を利用した ライン共有キャッシュの提案

ライン共有キャッシュにおけるL2キャッシュミス率の見積もり方法

LSC容量 :2MBにおける L2キャッシュミス率を求める場合

従来型キャッシュの容量と圧縮率 CRの関係を求める

① ②

従来型キャッシュ容量 [MB]

従来型キャッ

シュ

に対する圧縮率

LSCキャッシュの容量

LSCキャッシュ

に対する圧縮率

LSCの容量と圧縮率 CRの関係を求める

L2キャッシュ容量 [MB]

L2キャッシュ

ミス率

容量と L2キャッシュミス率の関係からL2キャッシュミス率を求める

)(

LSC

CR圧縮率容量見かけ容量=

MM

45.0

2見かけ容量=

LSCの見かけ容量を求める

4Mミス率

2M

0.5

61