キャッシュメモリ 中の衰退ラインを利用したメモリ整

キャッシュメモリ中の衰退ラインを利用
したメモリ整合性検証の高速化
○坂口 高宏† 井上 弘士‡ § 村上 和彰§
† 九州大学大学院 システム情報科学府
‡ 科学技術振興機構さきがけ
§九州大学大学院 システム情報科学研究院
発表手順
• 高セキュリティ化に向けての問題
– 改ざん検出手法(メモリ整合性検証)の問題点
• 既存のメモリ整合性検証
– naïve法とその問題点
– chash法とその問題点
• 衰退ラインを利用した提案手法:dhash法
• プロセッサ性能の評価
• おわりに
高セキュリティ化に向けての問題
• 現在コンピュータ・システムには多くの脅威
が存在
– 盗聴、不正侵入、データの改ざんなどの攻撃
• 利用者に様々な不利益を被る
• ソフトウェアでの解決策
– 攻撃の多様化により対処の困難さ
→ハードウェアでの高セキュリティ化の研究、開発
が活発化
改ざん検出手法の問題点
• メモリ整合性検証
– ハードウェアでのメモリデータの改ざん検出法
– naïve法
• 基本的な手法
• プロセッサの性能が低下
– 約70%の性能オーバヘッド
– chash法
• naïve法の問題を緩和した手法
• プロセッサの性能が低下
– 約25%の性能オーバヘッド
性能低下を抑制する手法の提案と評価
発表手順
• 高セキュリティ化に向けての問題
– 改ざん検出手法(メモリ整合性検証)の問題点
• 既存のメモリ整合性検証
– naïve法とその問題点
– chash法とその問題点
• 衰退ラインを利用した提案手法:dhash法
• プロセッサ性能の評価
• おわりに
メモリ整合性検証を行うための前提
仮定 ・マイクロプロセッサ・チップ内部は安全
・データの改ざんはチップ外部に対して発生し、
主記憶のデータを改ざん
安全な範囲
CPU
攻撃対象となる範囲
L1
L2キャッシュ
主記憶
メモリ整合性
検証機構
マイクロプロセッサ・チップ
メモリ整合性検証
• M(t1)=M(t2):メモリ整合性が保たれている
– 改ざんされていない
• M(t1)≠M(t2)
– 改ざんされている
主記憶からのデータロード時にメモリ整合性の検証を行う
Processor
Processor
Processor
読込み
書込み
memory
M(t0)
memory
M(t1)
データ改ざん
memory
の発生
M(t2)
t
t0
t1
書込みが発生しない
t2
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
:ハッシュ値
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
→現実的でない
:ハッシュ値
250MB
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
→現実的でない
チップ内部に保持
:ハッシュ値
←root
ハッシュ木の利用
主記憶へ保存
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
→現実的でない
:ハッシュ値
←root
ハッシュ木の利用
・ データ読込み時
- rootまで再計算
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
→現実的でない
:ハッシュ値
←root
ハッシュ木の利用
・ データ読込み時
- rootまで再計算
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
→現実的でない
:ハッシュ値
←root
ハッシュ木の利用
・ データ読込み時
- rootまで再計算
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
→現実的でない
:ハッシュ値
←root
ハッシュ木の利用
・ データ読込み時
- rootまで再計算
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
→現実的でない
:ハッシュ値
←root
ハッシュ木の利用
・ データ読込み時
- rootまで再計算
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
→現実的でない
チップ内部に
保持してあるrootの値
ハッシュ木の利用
比較
:ハッシュ値
←root
・ データ読込み時
- rootまで再計算
・・・・
主記憶(1GB)
・・・・
既存のメモリ整合性検証
仮定:プロセッサ・チップ内部は改ざんの発生なし
・主記憶をチップ内部に保存
・主記憶のハッシュ値をチップ内に保存
→現実的でない
チップ内部に
保持してあるrootの値
ハッシュ木の利用
更新
:ハッシュ値
←root
・ データ読込み時
- rootまで再計算
・ データ書込み時
- rootの値を更新
・・・・
主記憶(1GB)
・・・・
従来のメモリ整合性手法
naïve法
CPUデータ
CPU
L2
検証機構
プロセッサ
主記憶
ハッシュ値
ハッシュデータ
へのアクセス
主記憶
→低速
問題点
・主記憶へのアクセ
ス競合(メモリバンド
幅の浪費)
従来のメモリ整合性手法
naïve法
chash法
CPUデータ
CPU
L2
検証機構
プロセッサ
CPUデータ
ハッシュデータ
CPU
L2
検証機構
プロセッサ
主記憶
ハッシュ値
ハッシュデータ
へのアクセス
主記憶
→低速
問題点
・主記憶へのアクセ
ス競合(メモリバンド
幅の浪費)
主記憶
ハッシュ値
従来のメモリ整合性手法
naïve法
CPUデータ
CPU
L2
検証機構
プロセッサ
主記憶
ハッシュデータ
へのアクセス
問題点
ハッシュ値
主記憶
→低速
CPUデータ
ハッシュデータ
chash法
CPU
L2
検証機構
プロセッサ
ハッシュデータが参照されうる
CPUデータを追い出す
ハッシュ値
主記憶
L2キャッシュ
→高速
・主記憶へのアクセ ・メモリバンド幅の浪費
ス競合(メモリバンド
・L2キャッシュの競合
幅の浪費)
発表手順
• 高セキュリティ化に向けての問題
– 改ざん検出手法(メモリ整合性検証)の問題点
• 既存のメモリ整合性検証
– naïve法とその問題点
– chash法とその問題点
• 衰退ラインを利用した提案手法:dhash法
• プロセッサ性能の評価
• おわりに
dhash法の提案
• キャッシュ競合を抑制するハッシュデータの
配置
– chash: CPUデータと同様に配置(LRU方式)
– dhash: CPUデータへの影響が低いラインに配置
=
衰退ライン
• 再参照される可能性が低い使用済みのライン
• 衰退インターバル < 非参照時間
プログラム実行に必要なデータの追い出しが減少
衰退ライン容量 vs. ハッシュデータ容量
総キャッシュラインに対してCPU/
衰退ラインが占める割合
(%)
ハッシュデータが占める割合(%)
16K
32K
64K
chash
100
80
60
40
20
0
mesa
L2キャッシュサイズ:256KB
gcc
vortex
ベンチマーク・プログラム
bzip
ハッシュデータが配置されたラインの占める割合 (%)
8K
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
index
index
0
k
0
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
k
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
ハッシュデータ
ハッシュデータ
キャッシング
キャッシング
index
index
0
k
0
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
k
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
ハッシュデータ
④
キャッシング
追い出し
index
index
0
k
0
・
・
・
・
・
・
・
・
・
①
②
③
・
・
・
・
・
・
・
・
・
・
・
・
k
・
・
・
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
ハッシュデータ
④
キャッシング
追い出し
index
index
0
k
0
・
・
・
・
・
・
・
・
・
・
・
・
②
③
④
①
・
・
・
・
・
・
・
・
・
・
・
・
k
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
④
④
追い出し
追い出し
index
index
0
k
0
・
・
・
・
・
・
・
・
・
・
・
・
②
③
④
①
・
・
・
・
・
・
・
・
・
・
・
・
k
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
①
②
③
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
・
・
・
・
・
・
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
同じデータ
④
④
追い出し
追い出し
index
index
0
k
0
・
・
・
・
・
・
・
・
・
・
・
・
②
③
④
①
・
・
・
・
・
・
・
・
・
・
・
・
k
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
CPUデータ
CPUデータ
キャッシング
キャッシング
index
index
0
k
0
・
・
・
・
・
・
・
・
・
・
・
・
②
③
④
①
・
・
・
・
・
・
・
・
・
・
・
・
k
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
CPUデータ
④
キャッシング
追い出し
index
index
0
k
0
・
・
・
・
・
・
②
③
・
・
・
・
・
・
・
・
・
・
・
・
①
・
・
・
k
・
・
・
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
CPUデータ
④
キャッシング
追い出し
index
index
0
k
0
・
・
・
・
・
・
・
・
・
・
・
・
③
④
①
②
・
・
・
・
・
・
・
・
・
・
・
・
k
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
・
・
・
①
②
③
④
・
・
・
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
④
④
追い出し
追い出し
index
index
0
k
0
・
・
・
・
・
・
・
・
・
・
・
・
③
④
①
②
・
・
・
・
・
・
・
・
・
・
・
・
k
1022
1022
1023
1023
CPUデータ
・
・
・
・
・
・
・
・
・
①
②
③
・
・
・
・
・
・
・
・
・
ハッシュデータ
衰退ライン
・
・
・
・
・
・
ハッシュデータの配置アルゴリズム
chash法:LRU方式
dhash法
④
④
追い出し
追い出し
index
index
0
k
参照されるデータであれば
・
・
・
・
・
・
・
・
キャッシュミス
・
・
・
・
③
④
・
・
・
・
・
・
①
②
0
プログラム実行に影響はない
・
・
・
・
k
・
・
・
・
・
・
・
・
②
③
④
①
・
・
・
・
・
・
プログラム実行性能に差が出る
・
・
・
・
・
・
・
・
・
・
・
1022
1022
1023
1023
CPUデータ
ハッシュデータ
・
衰退ライン
発表手順
• 高セキュリティ化に向けての問題
– 改ざん検出手法(メモリ整合性検証)の問題点
• 既存のメモリ整合性検証
– naïve法とその問題点
– chash法とその問題点
• 衰退ラインを利用した提案手法:dhash法
• プロセッサ性能の評価
• おわりに
評価実験
• 評価項目
– プログラム実行時間
• キャッシュ競合が与える性能への影響
– 総主記憶アクセス回数
• キャッシュ競合が与えるメモリバンド幅の浪費への影響
• 評価対象モデル
– base:メモリ整合性検証を行わないプロセッサ
– chash
– dhash8K/16K/32K/64Kクロックサイクル
• 評価環境
– シミュレータ:SimpleScalar 3.0d
• アウト・オブ・オーダー実行
• L2キャッシュの構成
– キャッシュサイズ:256KB
– 連想度:4
– 8種類のSPEC CPU2000ベンチマークプログラム
CPUデータのキャッシュミス率
base
8K
16K
32K
64K
dhash
70
キャッシュミス率(%)
chash
60
50
40
30
20
10
0
mesa
gcc
vortex
ベンチマーク・プログラム
bzip
性能オーバヘッド
chash
16K
32K
64K
dhash
35
性能オーバヘッド(%)
8K
2.24ポイント
30
25
20
3.06ポイント
15
10
0.44ポイント
0.26ポイント
5
0
mesa
gcc
vortex
bzip
ベンチマーク・プログラム
chash法の性能オーバヘッドを平均で22.8%削減(64K)
衰退インターバル64Kにおける
正規化主記憶アクセス回数
正規化主記憶アクセス回数
CPU
1.2
6.3%
hash
5.9%
2.5%
1.5%
1
0.8
0.6
平均で1.2%増加
0.4
0.2
0
chash dhash chash dhash chash dhash chash dhash
mesa
gcc
vortex
ベンチマーク・プログラム
bzip
衰退インターバル16Kにおける
正規化主記憶アクセス回数
正規化主記憶アクセス回数
CPU
1.2
1
hash
9.1%
4.4%
0.8
0.6
平均で2.28%減少
0.4
0.2
0
chash dhash chash dhash chash dhash chash dhash
mesa
gcc
vortex
ベンチマーク・プログラム
bzip
衰退インターバルがプロセッサ性能に与える影響
CPUデータの主記憶アクセス回数
ハッシュデータの主記憶アクセス回数
衰退インターバル64K
総主記憶
アクセス回数
増加
<
キャッシュミス率の増加
減少
キャッシュ内に存在するハッシュデータ
の割合が高い
衰退インターバル16K
chash法との比較
キャッシュ競合
減少
メモリバンド幅
の浪費
衰退インターバル プログラム実行時間
総主記憶アクセス回数
64K
16K
1.2%増加
2.28%減少
23.8%削減
7.4%削減
衰退インターバルがハッシュデータの
主記憶アクセス回数に与える影響
キャッシュ中での
CPUデータの存在割
合が高い
衰退インターバル プログラム実行時間 ハッシュデータへの主記
憶アクセス回数
64K cc
プログラム実行時間
16K cc
キャッシュ中でのハッ
シュデータの存在割
合が高い
23.8%削減
11%増加
ハッシュデータの
7.4%削減 主記憶アクセス回数
0.05%増加
発表手順
• 高セキュリティ化に向けての問題
– 改ざん検出手法(メモリ整合性検証)の問題点
• 既存のメモリ整合性検証
– naïve法とその問題点
– chash法とその問題点
• 衰退ラインを利用した提案手法:dhash法
• プロセッサ性能の評価
• おわりに
おわりに
• まとめ
– メモリ整合性検証に伴う性能オーバヘッドの削減手法の提案
• 衰退ラインを利用したキャッシュ制御方式
– 提案手法に対する評価
• 既存の手法と比較して、最大71.4%の性能オーバヘッドを削減
• 性能オーバヘッド平均7.4%削減時に、総主記憶アクセス回数を2.28%
減少
• 今後の課題
– 衰退ラインの十分な存在割合に対して、性能向上が小さい原
因解析
– メモリバンド幅と検証機構の影響を考慮した評価実験
ご清聴ありがとうございました
資料
衰退インターバル16Kにおける
正規化主記憶アクセス回数
キャッシュサイズ:128KB
正規化主記憶アクセス回数
CPU
1.2
1
hash
5.2%
5.4%
1.0%
8.1%
0.8
0.6
平均で1.73%減少
0.4
0.2
0
chash dhash chash dhash chash dhash chash dhash
mesa
gcc
vortex
ベンチマーク・プログラム
bzip
衰退インターバル64Kにおける
正規化主記憶アクセス回数
キャッシュサイズ:128KB
正規化主記憶アクセス回数
CPU
1.4
1.2
1
0.8
0.6
0.4
0.2
0
3.0%
hash
31.9%
5.4%
6.3%
平均で6.19%増加
chash dhash chash dhash chash dhash chash dhash
mesa
gcc
vortex
ベンチマーク・プログラム
bzip