ブロック値の局所性に着目したライン共有キャッシュ

データ値の局所性を利用した
ライン共有キャッシュの提案
九州大学大学院
○岡 慶太郎
福本 尚人
井上 弘士 村上 和彰
1
キャッシュメモリの大容量化
• マルチコア・プロセッサが主流
• メモリウォール問題の深刻化
– メモリアクセス要求増加
– IOピンの制限
→大容量のLL(Last Level)キャッシュを搭載
8MBの
L3キャッシュを搭載
Core i7のチップ写真*
* http://www.atmarkit.co.jp/fsys/zunouhoudan/102zunou/corei7.html
2
キャッシュメモリの大容量化の問題点
• リーク消費電力増加
– 容量1MB→8MBで8倍*
• アクセスレイテンシ増加
– 容量1MB→8MBで2.1倍*
大幅な面積増加を伴わず,
オフチップメモリアクセス回数を削減する手法が必要
* CACTIによりブロックサイズ64B,連想度8で実験した結果
3
目次
•
•
•
•
研究背景
着目点:データ値の局所性
ライン共有キャッシュ
評価
– ミス率,面積,L1ミスペナルティ
• まとめ
• 今後の課題
4
従来型キャッシュメモリは
容量を無駄遣い!?
• 従来型キャッシュメモリのキャッシング方法
– 参照アドレスに基づいてブロックの格納場所を決定
• データ値の局所性が高い
データ値の局所性:メモリアドレスが異なる多数のデータが同一の値を有する性質
• 仮説
– キャッシュ内に同一データ値を有するブロックが多数存在
参照アドレス
タグ インデックス
0100
001
書込みブロック
A
LLキャッシュメモリ
インデックス タグ
000
001 0100
010
011
100
101
110
111
ライン
A
ブロックの格納場所
ブロック:
キャッシュのレベル間で
取り交わすデータ
データ値:
ブロックのデータの値
B
5
従来型キャッシュメモリは
容量を無駄遣い!?
• 従来型キャッシュメモリのキャッシング方法
– 参照アドレスに基づいてブロックの格納場所を決定
• データ値の局所性が高い
データ値の局所性:メモリアドレスが異なる多数のデータが同一の値を有する性質
• 仮説
– キャッシュ内に同一データ値を有するブロックが多数存在
参照アドレス
タグ インデックス
0000
101
書込みブロック
A
LLキャッシュメモリ
インデックス タグ
000
001 0100
010
011
100
101 0000
110
111
ライン
A
A
B
ブロックの格納場所
ブロック:
キャッシュのレベル間で
取り交わすデータ
データ値:
ブロックのデータの値
6
従来型キャッシュメモリにおける
データ値の局所性分析
キャッシュメモリ内のデータ値の局所性を平均圧縮率を用いて分析
1
平均圧縮率=𝑛
𝑛 キャッシュメモリ内のユニークなデータ値の数
𝑖=0
キャッシュメモリ内の有効ブロック数
n:ブロック置き換え回数
平均圧縮率が低い程,キャッシュメモリ内のデータ値の局所性が高い
平均圧縮率
キャッシュ容量:1MB
0.8
0.6
0.4
0.2
0
ブロックサイズ
64B
32B
16B
8B
キャッシュメモリ
A
B
A
C
B
3
5
圧縮率=
多くのプログラムでキャッシュメモリ内のデータ値の局所性が高い
7
研究概要
• 着目点
– キャッシュメモリ内に同一値を有するデータが多く存在
• 研究目的
– LLキャッシュメモリの面積を大きく増加することなく
LLキャッシュミス率を削減
• 提案手法
– 同一データ値を有するラインを共有し,容量を効率的
に利用
– 同容量の従来型キャッシュと比較し,最大でミス率を
18ポイント削減可能
8
目次
•
•
•
•
研究背景
着目点:データ値の局所性
ライン共有キャッシュ
評価
– ミス率,面積,L1ミスペナルティ
• まとめ
• 今後の課題
9
ライン共有キャッシュの概念
LSC(Line Sharing Cache)
従来型キャッシュ
ライン共有キャッシュ
参照アドレスに基づきブロックを
格納するラインを決定
タグアレイ
データアレイ
同一データ値を有するブロックを
格納するラインを1箇所に限定
タグアレイ
A
データアレイ
A
A
…
…
…
A
タグの
エントリ数増加
従来型キャッシュに比べ,より多くのデータ値を
キャッシュメモリに格納可能
10
解決すべき課題その1
~如何にしてタグとラインを紐付けるか?~
• タグに対応するラインを特定する必要あり
• 問題点:各タグに対応するラインを特定不可能
• 解決策:行番号によるラインの区別と各タグに行ポインタ配置
タグアレイ
データアレイ
タグ
ライン
0100
…
0110
?
?
11111
各タグは対応するラインを
特定できない
11
解決すべき課題その1
~如何にしてタグとラインを紐付けるか?~
• タグに対応するラインを特定する必要あり
• 問題点:各タグに対応するラインを特定不可能
• 解決策:行番号によるラインの区別と各タグに行ポインタ配置
タグアレイ
データアレイ
タグ
0100
…
0110
?
?
行番号
000
001
010
011
100
101
110
111
ライン
11111
各タグは対応するラインを
特定できない
12
解決すべき課題その1
~如何にしてタグとラインを紐付けるか?~
• タグに対応するラインを特定する必要あり
• 問題点:各タグに対応するラインを特定不可能
• 解決策:行番号によるラインの区別と各タグに行ポインタ配置
タグ・ポインタアレイ
タグアレイ
タグ
行ポインタ
0100
100
…
…
0110
100
データアレイ
行番号
000
001
010
011
100
101
110
111
ライン
11111
13
解決すべき課題その2
~如何にして効率の良いデータ検索を実現するか?~
• 書込み動作:データアレイの全ラインを探索する必要あり
• 問題点:検索コストが大
• 解決策:データ値を用いたハッシング
タグ・ポインタアレイ
インデックス
0000
参照アドレス
0001
タグ インデックス 0010
0011
0100
0001
タグ
0100
11111
1001
1011
1100
1101
1110
1111
0110
…
…
書込みブロック
行ポインタ
111
データアレイ
行番号
000
001
010
011
= 100
101
一致
110
111
ライン
11111
書
き
込
み
デ
ー
タ
値
の
検
索
14
解決すべき課題その2
~如何にして効率の良いデータ検索を実現するか?~
• 書込み動作:データアレイの全ラインを探索する必要あり
• 問題点:検索コストが大
• 解決策:データ値を用いたハッシング
タグ・ポインタアレイ
タグ
書込みブロック
0110
11111
1001
1011
1100
1101
1110
1111
行ポインタ
…
0100
…
インデックス
0000
参照アドレス
0001
タグ インデックス 0010
0011
0100
0001
111
データアレイ
行番号
書
き
000
込
001
み
010
デ
011
ー
100
11111
タ
101
行番号
値
110
のサイズ
の
検
11111
111
索
行番号とデータ値の下位3ビット
15
を対応付けてブロックを配置
ライン
解決すべき課題その2
~如何にして効率の良いデータ検索を実現するか?~
• 書込み動作:データアレイの全ラインを探索する必要あり
• 問題点:検索コストが大
• 解決策:データ値を用いたハッシング
タグ・ポインタアレイ
インデックス
0000
参照アドレス
0001
タグ インデックス 0010
0011
0100
0001
タグ
行ポインタ
0100
…
…
1001
0110
1011
行番号のサイズ
11111
1100
1101
1110
書込みデータ値の下位3ビット
1111
に対応する行番号にアクセス
111
書込みブロック
データアレイ
行番号
000
001
010
011
= 100
一致 101
110
111
ライン
11111
書込みデータ値がラインに存在
(データ値ヒット)
書
き
込
み
デ
ー
タ
値
の
検
索
16
解決すべき課題その2
~如何にして効率の良いデータ検索を実現するか?~
• 書込み動作:データアレイの全ラインを探索する必要あり
• 問題点:検索コストが大
• 解決策:データ値を用いたハッシング
タグ・ポインタアレイ
インデックス
0000
参照アドレス
0001
タグ インデックス 0010
0011
0100
0001
タグ
0100
行ポインタ
111
…
…
1001
0110
1011
行番号のサイズ
11111
1100
1101
1110
書込みデータ値の下位3ビット
1111
に対応する行番号にアクセス
111
書込みブロック
データアレイ
ライン
000
行番号を行ポインタに
001
010書込み
011
100
101
110
11111
111
書込みデータ値がラインに存在
(データ値ヒット)
17
解決すべき課題その3
~如何にしてデータアレイでの書込み競合を回避するか?~
• データアレイ:各行番号に1ラインを対応付け
• 問題点:ブロックの追出しが頻発
• 解決策:データアレイの水平分割と列ポインタの導入
データアレイ
タグ・ポインタアレイ
タグ
書込みブロック
0110
00111
1001
1011
1100
1101
1110
1111
行ポインタ
…
0100
…
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
111
行番号
000
001
010
011
= 100
一致101
110
111
ライン
11111
18
解決すべき課題その3
~如何にしてデータアレイでの書込み競合を回避するか?~
• データアレイ:各行番号に1ラインを対応付け
• 問題点:ブロックの追出しが頻発
• 解決策:データアレイの水平分割と列ポインタの導入
データアレイ
タグ・ポインタアレイ
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
タグ
行ポインタ
0100
1001
0110
1011
行番号のサイズ
00111
1100
1101
1110
書込みデータ値の下位3ビット
1111
に対応する行番号にアクセス
…
…
書込みブロック
111
行番号
000
001
010
011
100
101
110
111
ライン
ブロックの追出し
が必要
11111
書込みデータ値がラインに非存在
(データ値ミス)
19
解決すべき課題その3
~如何にしてデータアレイでの書込み競合を回避するか?~
• データアレイ:各行番号に1ラインを対応付け
• 問題点:ブロックの追出しが頻発
• 解決策:データアレイの水平分割と列ポインタの導入
データアレイ
タグ・ポインタアレイ
タグ
書込みブロック
0110
00111
1001
1011
1100
1101
1110
1111
行ポインタ
…
0100
…
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
111
行番号
000
001
010
011
100
101
110
111
ライン
11111
20
解決すべき課題その3
~如何にしてデータアレイでの書込み競合を回避するか?~
• データアレイ:各行番号に1ラインを対応付け
• 問題点:ブロックの追出しが頻発
• 解決策:データアレイの水平分割と列ポインタの導入
データアレイ
タグ・ポインタアレイ
タグ
書込みブロック
0110
00111
1001
1011
1100
1101
1110
1111
行ポインタ
行番号
00
01
10
11
ライン
ライン
11111
…
0100
…
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
111
各行番号に複数のラインを対応付け
21
解決すべき課題その3
~如何にしてデータアレイでの書込み競合を回避するか?~
• データアレイ:各行番号に1ラインを対応付け
• 問題点:ブロックの追出しが頻発
• 解決策:データアレイの水平分割と列ポインタの導入
データアレイ
タグ・ポインタアレイ
タグ
書込みブロック
0110
00111
1001
1011
1100
1101
1110
1111
行ポインタ
行番号
00
01
10
11
ライン
ライン
11111
…
0100
…
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
111
列番号0
列番号1
行番号,列番号により
ラインを区別
22
解決すべき課題その3
~如何にしてデータアレイでの書込み競合を回避するか?~
• データアレイ:各行番号に1ラインを対応付け
• 問題点:ブロックの追出しが頻発
• 解決策:データアレイの水平分割と列ポインタの導入
列ポインタ
タグ・ポインタアレイ
タグ
0110
00111
1001
1011
1100
1101
1110
1111
…
書込みブロック
行ポインタ
…
0100
…
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
11
1
行番号
00
01
10
11
データアレイ
ライン
ライン
11111
列番号0
列番号1
列番号を格納するために
列ポインタの導入
23
解決すべき課題その3
~如何にしてデータアレイでの書込み競合を回避するか?~
• データアレイ:各行番号に1ラインを対応付け
• 問題点:ブロックの追出しが頻発
• 解決策:データアレイの水平分割と列ポインタの導入
列ポインタ
タグ・ポインタアレイ
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
タグ
行ポインタ
0100
…
1001
0110
1011
行番号のサイズ
00111
1100
1101
1110
書込みデータ値の下位2ビット
1111
に対応する行番号にアクセス
…
…
書込みブロック
11
1
行番号
00
01
10
11
=
データアレイ
ライン
ライン
11111
00111
列番号0
一致データ値ミス
列番号1
ブロックを追い出すことなく
書込み
24
読み出し動作
読出し要求発行後の動作
1. インデックスアクセス
2. タグ比較
3. ポインタ読出し
4. ブロック読出し
列ポインタ
タグ・ポインタアレイ
タグ
行ポインタ
…
1001
1011
1100
1101
1110
1111
0110
01
0
…
0100
…
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
11
1
行番号
00
01
10
11
データアレイ
ライン
ライン
11101
列番号0
列番号1
25
読み出し動作
読出し要求発行後の動作
1. インデックスアクセス
2. タグ比較
3. ポインタ読出し
4. ブロック読出し
列ポインタ
タグ・ポインタアレイ
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
タグ
行ポインタ
0100
…
0110
0
…
…
1001
1011
1100
1101
1110
1111
01
11
1
行番号
00
01
10
11
=
一致
データアレイ
ライン
ライン
11101
列番号0
列番号1
26
読み出し動作
読出し要求発行後の動作
1. インデックスアクセス
2. タグ比較
同時に動作可能
3. ポインタ読出し
列ポインタ
4. ブロック読出し
データアレイ
タグ・ポインタアレイ
タグ
行ポインタ
…
1001
1011
1100
1101
1110
1111
0110
01
0
…
0100
…
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
11
1
行番号
00
01
10
11
ライン
11101
列番号0
01
ライン
列番号1
0
27
読み出し動作
読出し要求発行後の動作
1. インデックスアクセス
2. タグ比較
同時に動作可能
3. ポインタ読出し
列ポインタ
4. ブロック読出し
データアレイ
タグ・ポインタアレイ
タグ
行ポインタ
…
1001
1011
1100
1101
1110
1111
0110
01
0
…
0100
…
インデックス
0000
参照アドレス
0001
tag
index
0010
0011
0100
0001
11
1
行番号
00
01
10
11
ライン
ライン
11101
列番号0
01
0
列番号1
11101
28
従来型キャッシュVSライン共有キャッシュ
LSCの従来型キャッ
シュに対する違い
ミス率
減少
理由
データアレイ容量を有効利用
読出し
レイテンシ
変化なし
書込み
レイテンシ
増加
• 書込みデータ値の探索
• 追出しの動作が複雑化
データアレイ
に対する
書込み回数
減少
データ値ヒットの場合データアレイ
に対する書込みを行わない
タグとポインタを同時に読み出し
29
目次
•
•
•
•
研究背景
データ値の局所性
ライン共有キャッシュ
評価
– ミス率,面積,L1ミスペナルティ
• まとめ
• 今後の課題
30
評価指標と求め方
• 面積
– 実装に必要なSRAMビット数で評価
• L1ミスペナルティ
– モデルにより評価
• L2アクセスレインテンシ→キャッシュメモリシミュレータCACTI
• キャッシュミス率
– 従来型キャッシュのミス率と平均圧縮率からの見積もりにより評価
• 従来型キャッシュのミス率→マルチコアシミュレータM5
従来型キャッシュ
のL2ミス率
平均圧縮率
ベンチマーク・
プログラム
M5によるシミュ
splash2
レーション
L2アクセス
トレース
容量
LSCのミス
率に換算
ミス率
LSCのミス率の評価方法
平均圧縮率
容量
31
評価方法
LSCの容量
従来型キャッシュ
LSC
L2キャッシュサイズ
従来型キャッシュのミス率
L2キャッシュミス率
L2キャッシュミス率
• 面積:ミス率を従来型キャッシュ8MBにおける値に固定
• ミス率:データアレイ容量を1MBに固定
• L1ミスペナルティ:データアレイ容量を1MBに固定
従来型
キャッシュ
LSC
LSCのミス率
必要ビット数
8MB
データメモリ:1MB
ミス率およびL1ミスペナルティの比較
面積の比較
M5の評価環境
コア数
8
L1キャッシュ
サイズ:32KB,連想度:2,ブロックサイズ:64B
L2キャッシュ
連想度:8ブロックサイズ:64B
32
キャッシュミス率一定とした場合の
面積削減効果
ブロックサイズ64B,従来型キャッシュ容量8MB
圧縮率 0.21
0.69
0.43
必要メモリ容量[MB]
データアレイ容量
12
10
8
6
4
2
0
0.48
0.86
ポインタアレイ容量
0.55
タグ容量
52%面積削減
base LSC base LSC base LSC base LSC base LSC base LSC
Cholesky
Barnes
FFT
FMM
LUCon
ベンチマーク・プログラム
OceanCon
圧縮率が低い程,面積を大幅に削減
33
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
ブロックサイズ64B,データアレイ容量1MB
base
LSC
圧縮率
0.21
18ポイント
削減
0.8
L2キャッシュミス率
キャッシュミス率
データアレイ容量を一定とした場合の
ミス率削減効果
0.6
0.4
ミス率を大幅に
0.2
削減できない
0
1
8
16
32
L2キャッシュ容量[MB]
容量を増加するとミス率がすぐに飽和
容量を増加した場合,ミス率の減少幅小
ベンチマーク・プログラム
すべてのプログラムでミス率を削減
34
1
0.80.9
0.8
0.60.7
0.6
0.40.5
0.20.4
0.3
00.2
1
0.1
0
ブロックサイズ64B,データアレイ容量1MB
base
LSC
圧縮率
0.55
キャッシュミス率
L2キャッシュミス率
データアレイ容量を一定とした場合の
ミス率削減効果
ミス率を18ポイント削減
8
16
32
L2キャッシュ容量[MB]
容量を増加する場合,ミス率の減少幅大
ベンチマーク・プログラム
すべてのプログラムでミス率を削減
35
データアレイ容量一定とした場合の
L1ミスペナルティ削減効果
L1ミスペナルティ比
ブロックサイズ64B,データアレイ容量1MB
従来型キャッシュのL1ミスペナルティで正規化
1.2
1
0.8
0.6
0.4
0.2
0
L1ミスペナル
ティ30%削減
ベンチマーク・プログラム
アクセス時間を考慮した場合でも
L1ミスペナルティを大幅に削減
36
まとめ
• データ値の局所性を利用したライン共有キャッ
シュを提案
– ミス率一定条件において
• 面積:最大52%削減
– 容量一定条件において
• ミス率:最大18ポイント削減
• L1ミスペナルティ:最大30%削減
• ライン共有キャッシュの有効性を確認
37
今後の課題
• ライン共有キャッシュの詳細な評価
– キャッシュミス率
– アクセスレイテンシ
– アクセスあたりの消費電力
• ライン共有キャッシュの適用範囲を拡張
– LSCはデータアレイへの書込み回数を削減
→不揮発性メモリに利用
• 既存研究との比較
38
ご清聴ありがとうございました
39
バックアップスライド
40
既存研究
Frequent Value Compression in Data Cache
• 目的
– L1キャッシュの消費電力大
• アプローチ
– L1キャッシュにCC(Compression Cache)を導入
• ブロックのデータ値がFVT(Frequent Value Table)に存在
→ブロックを半分に圧縮し格納
• 結果
– ミス率,消費電力,オフチップのトラフィックを大幅に削減
• LSCとの違い
– 圧縮対象のデータを予め決定
Jun Yang,et al.”Frequent Value Compression in Data Caches”,MICRO’00
41
既存研究
Dynamic Zero Compression for Cache Energy Reduction
• 目的
– L1キャッシュの消費電力大
• アプローチ
– L1キャッシュにFVC(Frequent Value Cache)を導入
• 結果
– ミス率,消費電力,オフチップのトラフィックを大幅に削減
• LSCとの違い
– 圧縮対象データを予め決定
Jun Yang,et al.”Frequent Value Compression in Data Caches”,MICRO’00
42
質問内容
• ミス率の求め方について
– 質問圧縮率で大丈夫なのか
(A,A,A,B,C),(A,A,B,B,C)だと圧縮率が同じ
– 解答
今のままではダメ
• 手法について
– 質問
データ値が0のやつばっかりだったら意味なくない?
– 解答
その通りだがデータにより示されている.
• 圧縮率について
– 質問
具体的にはどんなデータを圧縮しているのか?(浮動小数点?アドレスポインタ?)
43
ライン共有キャッシュ
アーキテクチャ
データアレイ
タグ ポインタ
00
行
番 01
号
10
11
CAM
CAM
CAM
v
CAM
イ0
ン1
デ2
ッ
ク3
ス
4
5
6
7
タグ・ポインタアレイ
v タグ ポインタ
ライン
10011
ライン
11011
データウェイ0 データウェイ1
(列番号0)
(列番号1)
ラインセット
タグウェイ0
タグウェイ1
ポインタセット
44
データ値の局所性に着目
• データ値の局所性
– メモリアドレスが異なるデータが同一の値を持つ性質
• 同一データ値の書込み頻度分析
1. 書込みデータ値のごとに書込み回数を取得
• 書込みデータ値:プロセッサがストアする64bitのデータ
2. 書込み回数が多い順に並び替え
3. 書込み回数を累計
4. 書込みデータ値の種類数と累計書込み回数をプロット
データ 書込み回数
データ 書込み回数 累計書込み回数
40
35
A
10回
B
20回
20回
30
25
10回
B
20回
A
C
3回
D
5回
D
5回
C
3回
30回
20
35回
10
38回
0
15
5
45
1
2
3
4
同一データ値の書込み頻度分析
FFT
累計書き込み回数
Cholesky
75%
Barnes
70%
65%
20%
20%
書込みデータ値の種類数
FMM
20%
LUContig
OceanContig
55%
50%
25%
20%
20%
20%
多くのプログラムでデータ値の局所性が高い
46
キャッシュミス率
データアレイ容量を一定とした場合の
ミス率削減効果
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
ブロックサイズ64B,データアレイ容量1MB
base
LSC
0.33
0.55
0.21
0.61
0.44
18ポイント
削減
0.58
0.50
0.72
0.68
0.37 0.55
0.39
ベンチマーク・プログラム
すべてのベンチマークでミス率を削減
47
容量の影響
L2キャッシュミス率
base
LSC
Cholesky
4MB
1MB
FFT
LUContig
8MB
4MB
2MB
1MB
8MB
4MB
2MB
8MB
2MB
1MB
8MB
4MB
2MB
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
1MB
キャッシュミス率
ブロックサイズ:64B
OceanContig
• ミス率削減ポイント増加FFT 容量を増加するとミス率削減幅大
• ミス率削減ポイント低下:LUContig,OceanContig 容量を増加するとミス率削減度
合い小
48
容量の影響
L1ミスペナルティ
ブロックサイズ:64B
1
0.8
0.6
0.4
0.2
Cholesky
FFT
LUContig
8MB
4MB
2MB
1MB
8MB
4MB
2MB
1MB
8MB
4MB
2MB
1MB
8MB
4MB
2MB
1MB
0
OceanContig
• ミス率削減ポイント増加FFT
• ミス率削減ポイント低下:LUContig,OceanContig
L1ミスペナルティはキャッシュミス率と同じ傾向
49
ブロックサイズの影響
L2キャッシュミス率
L2キャッシュ容量1MB
base
19%ミス
率削減
1
キャッシュミス率
0.8
LSC
12%ミス
率削減
17%ミス
率削減
0.6
18%ミス
率削減
0.4
0.2
0
8
16 32 64
Cholesky
8
16 32 64
FFT
8
16 32 64
LUContig
8
16 32 64
OceanContig
• ブロックサイズ減少
• ミス率削減:Cholesky,FFT
• ミス率増加:LUContig,OceanContig
空間的局所性を利用できないため効果が低い
50
ブロックサイズの影響
L1ミスペナルティ
L1ミスペナルティ
L2キャッシュ容量1MB
ブロックサイズ64BのL1ミスペナルティで正規化
L1ミスペナルティ
25%増加
L1ミスペナルティ
17%削減
1.4
1.2
1
0.8
0.6
0.4
0.2
0
L1ミスペナルティ
18%削減
L1ミスペナルティ
22%削減
8
16 32 64
8
16 32 64
8
16 32 64
Cholesky
FFT
LUContig
• ブロックサイズ減少
• ミス率削減:Cholesky,FFT
• ミス率増加:LUContig,OceanContig
L1ミスペナルティはキャッシュミス率と同じ傾向
8
16 32 64
OceanContig
51
L1ミスペナルティのモデル
52
動作フロー
53
読み出し
開始
アドレス
入力
No
主記憶からデータ読み出し
タグ入替え
書き込み操作
終了
Tag比較?
Yes
ポインタアレイから
読出し対象の
行ポインタと列ポインタ
を読み出し
データアレイから
読出し対象データ
読み出し
終了
54
書きこみ
開始
アドレスと
データ入力
No
主記憶からデータ読出し
Tag一致?
タグ更新
Yes
書き込み操作
終了
55
書きこみ操作
56
評価
57
評価環境
L1ミスペナルティ
•
•
•
•
周波数:2GHz
L2レイテンシ:7cc
L2アクセス時間:3.37179ns
主記憶アクセスレイテンシ:200cc
テクノロジサイズ
90nm
キャッシュ容量
1MB
ブロックサイズ
64B
バス幅
256B
Cactiの設定値
58
圧縮率の求め方
59
ライン共有キャッシュの
面積の見積もり方法
• LSCのデータアレイ容量
– 圧縮率×従来型キャッシュのデータアレイ容量
• ポインタアレイ容量
– ポインタのビット数×セット数×連想度
• ポインタのビット数
– Log(LSCのデータアレイ容量/(ブロックサイズ))
• セット数,連想度
– 従来型キャッシュにおけるセット数と同じ
• タグアレイ
– 従来型キャッシュの容量と同じ
60
ライン共有キャッシュにおける
L2キャッシュミス率の見積もり方法
LSCキャッシュ
に対する圧縮率
従来型キャッシュ容量[MB]
従来型キャッシュの容量と圧縮率CRの関係
を求める
③
見かけ容量=
見かけ容量=
LSC容量
圧縮率(CR)
2M
 4M
0.5
LSCの見かけ容量を求める
0.5
2M
LSCキャッシュの容量
LSCの容量と圧縮率CRの関係を求める
④
L2キャッシュ
ミス率
従来型キャッシュ
に対する圧縮率
LSC容量:2MBにおけるL2キャッシュミス率を求める場合
①
②
ミス率
4M
L2キャッシュ容量[MB]
容量とL2キャッシュミス率の関係から
61
L2キャッシュミス率を求める