情報社会を支える ディペンダブル・プロセッサ

83
情情情情情情情情 情情情情情情情 情情情情情 情情情情 情情情情 情情情情情情情情 ()

Upload: tammy

Post on 23-Feb-2016

66 views

Category:

Documents


0 download

DESCRIPTION

情報社会を支える ディペンダブル・プロセッサ. 九州大学 井上弘士(いのうえこうじ). ディペンダブル・コンピューティング ( Dependable Computing ). 頼る. ~できる. 計算すること. あなたにとって,「○○先生」は頼りになりますか? YES! 私の質問に対して,常に,正しい解答を示してくれる 私に危害を加えない(私を裏切らない) 勝手に他人へ危害を加えない などなど NO! 私の質問に対して,常に(たまに),誤った解答を示す 私に危害を加える(突然きれる,突然暴れる) 他人へ危害を加える などなど. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 情報社会を支える ディペンダブル・プロセッサ

情報社会を支えるディペンダブル・プロセッサ

九州大学井上弘士(いのうえこうじ)

Page 2: 情報社会を支える ディペンダブル・プロセッサ

ディペンダブル・コンピューティング( Dependable Computing)

あなたにとって,「○○先生」は頼りになりますか? YES!

私の質問に対して,常に,正しい解答を示してくれる 私に危害を加えない(私を裏切らない) 勝手に他人へ危害を加えない などなど

NO! 私の質問に対して,常に(たまに),誤った解答を示す 私に危害を加える(突然きれる,突然暴れる) 他人へ危害を加える などなど

頼る ~できる 計算すること

Page 3: 情報社会を支える ディペンダブル・プロセッサ

ディペンダブル・コンピューティング( Dependable Computing)

「頼りになる」とは? 提供されるサービス(利用者が認識するシステムの振舞い)が正確で信頼できる

結果として利用者に損害をもたらさない,また,被害が発生しても最小限に留める

でも現実は・・・ 様々な「想定外の事象」により正確性や信頼性が失われる 「常に 100%正確かつ信頼できるシステム」はありえない

そこで・・・ Dependability:予測不可能性(想定外事象)を秘めた系において,システムに期待されるサービスが許容範囲内で提供される事を保障すること

Dependable Computing:「想定外事象は発生するもの」という前提に立ち,それを解決(回避)可能なシステムで計算する!

頼る ~できる 計算すること

Page 4: 情報社会を支える ディペンダブル・プロセッサ

ここまで発展したマイクロプロセッサ(シングルコア)

4004@1971(108KHz)

i486@1989(25MHz)

Pentium@1993(60MHz)

Pentium2@1997(450MHz)

Pentium4@2000(1.5HGz)

出展: http://www.intel.com/museum/online/hist_micro/hof/index.htm

Page 5: 情報社会を支える ディペンダブル・プロセッサ

ここまで発展したマイクロプロセッサ(マルチコア)

256KB LS

256KB LS

256KB LS

256KB LS

256KB LS

256KB LS

256KB LS

256KB LS

PPE512KB

L2キャッシュ

Cell (Sony/Toshiba/IBM)

Niagara-T2 (Sun)

Opteron(AMD):http://techreport.com/

Opteron (AMD)

http://news.com.com/

Page 6: 情報社会を支える ディペンダブル・プロセッサ

0.1

1

10

100

1000

1984

1986

1988

1990

1992

1994

1996

1998

2000

2002

2004

80386

80486

Pentium

Pentium II

Pentium III

Pentium 4

Itanium

プロセッサの回路規模はどの程度 ?(トランジスタ数の観点から)

半導体集積度は3年で約4倍に!(ムーアの法則) インテル・プロセッサの場合

M Tr

an.

http://www-vlsi.stanford.edu/group/chips_micropro.html

On-Chip L1$

Super Scalar

Out-Of-OrderRenamingOn-Chip L2$

Trace CacheHyper Threading

Page 7: 情報社会を支える ディペンダブル・プロセッサ

命令の実行手順

・・・

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

実際には,各命令は 2進表現でメモリに格納されている

レジスタ

0x00104デコーダ

プロセッサ

ALU

PC命令レジスタ

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

Page 8: 情報社会を支える ディペンダブル・プロセッサ

プロセッサ

レジスタ

0x00104デコーダ

add $t0, $s1, $s2・・・

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

PC命令レジスタ

PCの指す番地から取得した命令を保持 実行する命令の

アドレス

ALU

実際には,各命令は 2進表現でメモリに格納されている

命令の実行手順

Page 9: 情報社会を支える ディペンダブル・プロセッサ

レジスタ

0x00108デコーダ

add $t0, $s1, $s2・・・

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

PC命令レジスタ

次命令の取得にそなえて PCを更新

ALU

プロセッサ

実際には,各命令は 2進表現でメモリに格納されている

命令の実行手順

Page 10: 情報社会を支える ディペンダブル・プロセッサ

ALUレジスタ

0x00108デコーダ

add $t0, $s1, $s2・・・

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

PC命令レジスタ

取得した命令を解読( s1と s2を加算し, t0へ格納)

プロセッサ

実際には,各命令は 2進表現でメモリに格納されている

命令の実行手順

Page 11: 情報社会を支える ディペンダブル・プロセッサ

ALUレジスタ

0x00108デコーダ

add $t0, $s1, $s2・・・

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

PC命令レジスタ

加算

プロセッサ

実際には,各命令は 2進表現でメモリに格納されている

命令の実行手順

Page 12: 情報社会を支える ディペンダブル・プロセッサ

プロセッサ

レジスタ

0x00108デコーダ

sub $t1, $t0, $s3・・・

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

PC命令レジスタ

PCの指す番地から取得した命令を保持 実行する命令の

アドレス

ALU

実際には,各命令は 2進表現でメモリに格納されている

命令の実行手順

Page 13: 情報社会を支える ディペンダブル・プロセッサ

レジスタ

0x0010cデコーダ

sub $t1, $t0, $s3・・・

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

PC命令レジスタ

ALU

次命令の取得にそなえて PCを更新

プロセッサ

実際には,各命令は 2進表現でメモリに格納されている

命令の実行手順

Page 14: 情報社会を支える ディペンダブル・プロセッサ

ALUレジスタ

0x0010cデコーダ

sub $t1, $t0, $s3・・・

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

PC命令レジスタ

取得した命令を解読( t0と s3を減算し, t1へ格納)

プロセッサ

実際には,各命令は 2進表現でメモリに格納されている

命令の実行手順

Page 15: 情報社会を支える ディペンダブル・プロセッサ

ALUレジスタ

0x0010cデコーダ

sub $t1, $t0, $s3・・・

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

PC命令レジスタ

減算

プロセッサ

実際には,各命令は 2進表現でメモリに格納されている

命令の実行手順

Page 16: 情報社会を支える ディペンダブル・プロセッサ

プロセッサ

レジスタ

0x0010cデコーダ

lw $t1, 320($s4)・・・

1.命令の取得: PCが指すアドレスの値をメモリから命令レジスタへ取得.同時に,次命令の取得に備えて PCの値を更新(例えば+ 4)

2.命令の解読:命令レジスタの値をデコード

3.命令の実行:解読結果に従って実行

add $t0, $s1, $s2

sub $t1, $t0, $s3

lw $t1, 320($s4)

・・・

主記憶アドレス

0x00104

0x00108

0x0010c

PC命令レジスタ

PCの指す番地から取得した命令を保持 実行する命令の

アドレス

ALU

以降,繰り返し・・・

実際には,各命令は 2進表現でメモリに格納されている

命令の実行手順

Page 17: 情報社会を支える ディペンダブル・プロセッサ

信頼できるマイクロプロセッサとは ?

マイクロプロセッサのお仕事は? 「正しいプログラム」を「正しく実行」する

正しい命令の取得(フェッチ)と実行の繰り返し 必要に応じてメモリにデータを正しく書込み /読出し

マイクロプロセッサにとっての「想定外事象」は? 正しく実行できない!

ハードウェア(回路)が正しく動作しない 誰かに実行を邪魔される

正しいプログラムではない! 不正なプログラムを実行させられる

Page 18: 情報社会を支える ディペンダブル・プロセッサ

コンピュータ・システムにおける「想定外の事象」とは?

製造プロセスの揺らぎ

設計の誤り

情報漏洩

コンピュータウィルス

ソフトウェア

バグ

外部ノイズ

内部ノイズ

データ改竄

経年劣化

Reliable Processor

Secure ProcessorPatchable

Processor

Page 19: 情報社会を支える ディペンダブル・プロセッサ

なぜ、プロセッサでセキュリティ ?

インターネット・セキュリティに関する多くの研究 暗号技術,不正侵入検知,認証技術など

システム・ソフトウェアに関する多くの研究 OS, Libraryなど

専用ハードウェアに関する多くの研究 特に暗号処理ハードウェア

プロセッサでのセキュリティに関する研究は ??? 2000年ごから「プロセッサ・アーキテクチャ」に関する国際会議での発表が相次ぐ

コンピュータ処理の本質である「演算」と「記憶」の安全性 「最後の砦」では ?(⇒トランジスタ・レベルでは難しい・・)

Page 20: 情報社会を支える ディペンダブル・プロセッサ

発表手順

はじめにプログラム実行の乗っ取りを防止する !信用できるプログラムしか実行しない !その他のディペンダブル・プロセッサ「ディペンダビリティ」はより重要になる !

Page 21: 情報社会を支える ディペンダブル・プロセッサ

不正プログラムの実行を防止する !

攻撃方法が既知の場合

ハードウェアによる攻撃の検知

Page 22: 情報社会を支える ディペンダブル・プロセッサ

猛威を振るうコンピュータ・ウィルス

10億

米ドル

独立行政法人 情報処理推進機構 , “ 国内・国外におけるコンピュータウイルス被害状況調査 ,” 2003情財第 0314 号 , 2004年 4 月

1.2~ 1.5 兆円の規模で推移

Page 23: 情報社会を支える ディペンダブル・プロセッサ

バッファ・オーバフロー攻撃

バッファ・オーバフロー 最も多く活用される脆弱性の1つ

Blaster@2003, CodeRed@2001 CERT バッファ・オーバフロー勧告

R.B.Lee, D.K.Karig, J.P.McGregor, and Z.Shi, “Enlisting Hardware Architecture to Thwart Malicious Code Injection,” Proc. of the Int. Conf. on Security in Pervasive Computing, Mar. 2003.

メカニズム データ境界を越えた書込み

C 標準ライブラリ内に存在( strcpyなど) スタックの破壊(スタック・スマッシング)

悪質コードの挿入と戻りアドレスの改ざん プログラム実行制御の乗っ取り

改ざん後の戻りアドレスがPCへ設定

Page 24: 情報社会を支える ディペンダブル・プロセッサ

関数呼出し / 復帰時の動作int f ( ) { … g (s1); …}

int g ( char *s1) { char buf [10]; … strcpy(buf, s1); …}

実行コード

1. 関数 f ( )の実行2. 関数 g( )の呼出し3. 文字列コピー4. 関数 f( )へ復帰

処理手順

Page 25: 情報社会を支える ディペンダブル・プロセッサ

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

正常時

関数呼出し / 復帰時の動作int f ( ) { … g (s1); …}

int g ( char *s1) { char buf [10]; … strcpy(buf, s1); …}

実行コード

1. 関数 f ( )の実行2. 関数 g( )の呼出し3. 文字列コピー4. 関数 f( )へ復帰

処理手順

g() 呼出しの次命令

Page 26: 情報社会を支える ディペンダブル・プロセッサ

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

正常時

関数呼出し / 復帰時の動作int f ( ) { … g (s1); …}

int g ( char *s1) { char buf [10]; … strcpy(buf, s1); …}

実行コード

1. 関数 f ( )の実行2. 関数 g( )の呼出し3. 文字列コピー4. 関数 f( )へ復帰

処理手順

g() 呼出しの次命令

文字列

Page 27: 情報社会を支える ディペンダブル・プロセッサ

関数呼出し / 復帰時の動作int f ( ) { … g (s1); …}

int g ( char *s1) { char buf [10]; … strcpy(buf, s1); …}

実行コード

1. 関数 f ( )の実行2. 関数 g( )の呼出し3. 文字列コピー4. 関数 f( )へ復帰

処理手順

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

正常時

文字列

g() 呼出しの次命令

Page 28: 情報社会を支える ディペンダブル・プロセッサ

スタック・スマッシングによる実行制御の乗っ取りint f ( ) { … g (s1); …}

int g ( char *s1) { char buf [10]; … strcpy(buf, s1); …}

実行コード

1. 関数 f ( )の実行2. 関数 g( )の呼出し3. 文字列コピー4. 関数 f( )へ復帰

処理手順

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

正常時

文字列

g() 呼出しの次命令

Page 29: 情報社会を支える ディペンダブル・プロセッサ

スタック・スマッシングによる実行制御の乗っ取りint f ( ) { … g (s1); …}

int g ( char *s1) { char buf [10]; … strcpy(buf, s1); …}

実行コード

1. 関数 f ( )の実行2. 関数 g( )の呼出し3. 文字列コピー4. 関数 f( )へ復帰

処理手順

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

正常時

文字列

g() 呼出しの次命令

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

異常時

g() 呼出しの次命令

Page 30: 情報社会を支える ディペンダブル・プロセッサ

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

異常時

g() 呼出しの次命令

スタック・スマッシングによる実行制御の乗っ取りint f ( ) { … g (s1); …}

int g ( char *s1) { char buf [10]; … strcpy(buf, s1); …}

実行コード

1. 関数 f ( )の実行2. 関数 g( )の呼出し3. 文字列コピー4. 関数 f( )へ復帰

処理手順

攻撃コードの先頭

攻撃コード

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

正常時

文字列

g() 呼出しの次命令

Page 31: 情報社会を支える ディペンダブル・プロセッサ

スタック・スマッシングによる実行制御の乗っ取りint f ( ) { … g (s1); …}

int g ( char *s1) { char buf [10]; … strcpy(buf, s1); …}

実行コード

1. 関数 f ( )の実行2. 関数 g( )の呼出し3. 文字列コピー4. 関数 f( )へ復帰

処理手順

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

異常時

攻撃コードの先頭

攻撃コード

s1

戻りアドレス

FP退避

ローカル変数buf

FP

SP

上位アドレス

下位アドレス

スタックの伸張

関数呼出し時のスタック

正常時

文字列

g() 呼出しの次命令

Page 32: 情報社会を支える ディペンダブル・プロセッサ

CPU

動的な戻りアドレス改ざん検出~ Secure Cache: SCache~

問題点: スタックに書込んだ戻りアドレスが改ざんされる

解決策: キャッシュで戻りアドレスを保護しよう!

手段: 戻りアドレス書込み時に複製(レプリカ・ライン)を作

成 戻りアドレス読出し時に複製と比較 不一致であれば戻りアドレス改ざん発生と判定

Mem.

プロセッサコア キャッシュ スタック

Page 33: 情報社会を支える ディペンダブル・プロセッサ

ML RL RL

way0 way1 way2 way3tag

data(line)

Data (Ret. Addr.) Load (pop)

Replica-MUX

Safe?

replica replica

Read-MUX

masterTag Match && R-flag

Tag Match&& no R-flag

HIT?

Word-DataMatch

Ref. Addr.Index

TagOffset

Store (push)Data (Ret. Addr.)

RL: Replica LineML: Master Line

R-flag

内部構成

レプリカ・ライン用選択回

ワード比較器( 32b)

ヒット条件

レプリカ・フラグ( 1b)

Page 34: 情報社会を支える ディペンダブル・プロセッサ

way0 way1 way2 way3tag

data(line)

Data (Ret. Addr.)

Replica-MUX

Safe?

Read-MUXWord-Data

Match

Data

R-flag

動作(戻りアドレス書込み時)

キャッシュ・アクセス(戻りアドレス)

Store?yes

戻りアドレスをMLへストア

RL数=Nrepとなるまで新規RLを作成

正常終了

Store

同一タグのRLが存在する場合は上書き

RL: Replica LineML: Master Line

no

全てのウェイからラインを読出し(MLから戻りアドレス値を出力)

RLヒット(タグ比較)

戻りアドレス一致

Load

yes

危険正常終了

no

安全正常終了

noyes

危険異常終了

生成レプリカ数( Nrep)=2の場合

Original Replica

キャッシュ・ヒット時

Page 35: 情報社会を支える ディペンダブル・プロセッサ

動作(戻りアドレス読出し時)

way0 way1 way2 way3tag

data(line)

Data (Ret. Addr.)

Replica-MUX

Safe?

Read-MUXWord-Data

Match

Data

R-flag

OriginalReplica

キャッシュ・アクセス(戻りアドレス)

Store?

RL: Replica LineML: Master Line

no

全てのウェイからラインを読出し(MLから戻りアドレス値を出力)

RLヒット(タグ比較)

戻りアドレス一致

Load

yes

危険正常終了

no

安全正常終了

noyes

危険異常終了

yes

戻りアドレスをMLへストア

RL数=Nrepとなるまで新規RLを作成

正常終了

Store

同一タグのRLが存在する場合は上書き

生成レプリカ数( Nrep)=2の場合キャッシュ・ヒット時

Page 36: 情報社会を支える ディペンダブル・プロセッサ

SCacheの特徴(利点と欠点)

戻りアドレス改ざんの動的検出が可能

ただし、レプリカ・ラインが存在する場合のみ

プロセッサの内部構成へ与える影響は極めて小さい

アクセス時間 / 面積オーバヘッドは極めて小さい

レプリカ数を変更可能 安全性と消費エネルギーの

バランスを決定可能

レプリカ作成に伴うヒット率の低下

平均メモリアクセス時間の増大

下位階層メモリへのアクセス消費エネルギー増大

レプリカ作成に伴う消費エネルギーの増加

書込みエネルギーの増大 ライトバック・エネルギーの

増大 読出しエネルギーの増大(他

低消費電力キャッシュと比較して)

Pros Cons

Page 37: 情報社会を支える ディペンダブル・プロセッサ

評価環境

SimpleScalar3.0 16KB 4-way Dキャッシュ

ラインサイズ: 32B 2-way IO/4-way

OOO実行 SPEC2000

7 個の intプログラム 4 個の fpプログラム Small input(完全実行)

4KB×4 SRAM 設計 0.18μm CMOSプロセス

Scache 機構は未実装 8bメモリセルが 1 個のラッチ型センスアンプを共有

回路シミュレーション カスタム・レイアウトと容量抽出(周辺回路は含まない)

ビット当たりのアクセス消費エネルギー測定

安全性 / 消費エネルギー /性能 消費エネルギー

Page 38: 情報社会を支える ディペンダブル・プロセッサ

評価モデル評価対象モデル

危険度モデル レプリカ生成ポリシ

配置 数LRU1L LRU

追出し禁止

1

LRU1 LRU 1LRU2 LRU 2MRU1 MRU 1MRU2 MRU 2ALL ----- 3CONV MRUウェイ予測

Vulnerability = (Nv-rald / Nrald) * 100

全戻りアドレスロード回数

安全性を保障できない戻りアドレス・ロード回数

消費エネルギーEtotal = Erd + Ewt + Ewb + Emp

読出し 書込み

レプリカ生成に伴うライトバック

キャッシュ・ミス

Page 39: 情報社会を支える ディペンダブル・プロセッサ

Benchmark #IRA Load(Nrald) CONV LRU1L LRU1 LRU2 MRU1 MRU2 ALL

164.gzip 4,932,448 5.18% 5.20% 5.18% 5.19% 5.19% 5.19% 5.21%175.vpr 8,227,868 3.63% 3.69% 3.67% 3.74% 3.70% 3.77% 3.86%176.gcc 34,850,486 4.37% 4.42% 4.39% 4.47% 4.43% 4.53% 4.75%181.mcf 98,2013 20.93% 20.96% 20.94% 20.95% 20.97% 20.98% 21.02%197.parser 47,935,856 4.17% 4.30% 4.22% 4.51% 4.27% 4.57% 5.12%255.vortex 22,411,559 1.72% 1.77% 1.76% 1.87% 1.78% 1.90% 2.27%256.bzip 18,172,443 2.31% 2.32% 2.31% 2.33% 2.31% 2.33% 2.45%177.mesa 4,731,538 0.15% 0.15% 0.15% 0.16% 0.15% 0.17% 1.09%179.art 32,439 41.96% 41.96% 41.96% 41.96% 41.96% 41.96% 41.96%183.equake 3,588,123 2.46% 2.47% 2.46% 2.48% 2.47% 2.49% 2.54%188.ammp 6,307,811 30.31% 30.32% 30.32% 30.34% 30.31% 30.33% 30.40%

キャッシュミス率( 2-way IO)

レプリカ数の増加と共にミス率は悪化 ALLでもミス率増加の影響は極めて小さい

Page 40: 情報社会を支える ディペンダブル・プロセッサ

どの程度安全なのか ?Vu

lner

abilit

y

LRU1LLRU1LRU2MRU1MRU2ALL

13.7% 16.8% 23.4% 12.5%

Vuln

erab

ility

164.gzip 176.gcc 197.parser 256.bzip2 179.art 188.ammp 175.vpr 181.mcf 255.vortex 177.mesa 183.equake

164.gzip 176.gcc 197.parser 256.bzip2 179.art 188.ammp 175.vpr 181.mcf 255.vortex 177.mesa 183.equake

2-way In-Order Processor

4-way OOO Processor

Page 41: 情報社会を支える ディペンダブル・プロセッサ

どの程度エネルギーを消費するのか ?

レプリカ数の増加に伴い「 Ewt」と「 Emp」が増大

オーバヘッドは 20%以下( 4-way OOOでも同様)

CONV

LRU1

LLR

U1LR

U2M

RU1

MRU

2AL

L

Norm

alize

d En

ergy

EmpEwb

EwtErd

164.gzip 176.gcc 197.parser 256.bzip2 179.art 188.ammp 175.vpr 181.mcf 255.vortex 177.mesa 183.equake

2-way In-Order Processor

Page 42: 情報社会を支える ディペンダブル・プロセッサ

どの程度性能が低下するのか ?

レプリカの増加に伴い性能は低下 性能低下は 1%以下(「 All」と「 197.parser」除く)

Perfo

rman

ce O

verh

ead

164.gzip 176.gcc 197.parser 256.bzip2 179.art 188.ammp 175.vpr 181.mcf 255.vortex 177.mesa 183.equake

LRU1LLRU1LRU2MRU1MRU2ALL

2-way In-Order Processor

Page 43: 情報社会を支える ディペンダブル・プロセッサ

不正プログラムの実行を防止する !

攻撃方法が未知の場合

動的なプログラム実行の認証

Page 44: 情報社会を支える ディペンダブル・プロセッサ

ブラックリスト方式→ 既知の不正プログラムを検出して駆除

ホワイトリスト方式→認められたプログラムのみを実行

現在の主な不正プログラム対策と問題点

問題点データベースが必要(ウィルス定義リストやルール定義リスト)

新種ウィルスに対応できない

CPU

A B C DXYZ

CPUCPU

A B C DXYZ

TrustedPrograms

Virus

問題点 鍵照合プログラムが改ざんされた場合は機能しない

実行中に突然ウィルスが暴走した場合は対応できない

CPU

A + A

CPUCPU

A + A

ProgramKey

OS

Page 45: 情報社会を支える ディペンダブル・プロセッサ

実行の振舞いに基づく動的プログラム認証方式

秘密鍵より「プログラム認証のための実行の振舞い」を決定

Memory-Access Patternなど コンパイル時に「決定した実行振舞い」を実現できるようコードを生成

実行時に「実行の振舞い」をモニタリング 同一プログラムでも異なる振舞いを鍵情報として実現Program

BehaviorModel

compile object code

Secret KeyCPUBehavior

Model ?

Page 46: 情報社会を支える ディペンダブル・プロセッサ

鍵となる実行の振舞い(例)~メモリアクセス・パタン~

正規プログラム 実行終了

アタックコード

実行制御の乗っ取り!

プロファイラ

「ある実行命令数毎に必ずアドレス Aにアクセスする」

N命令

プロファイラ

Page 47: 情報社会を支える ディペンダブル・プロセッサ

コンパイル時における実行振舞いコントロール

分岐命令への対応 基本ブロック・サイズの統一

投機 /OOO実行への対応 コミット時にチェック

基本ブロック

鍵となるメモリアクセス命令

Page 48: 情報社会を支える ディペンダブル・プロセッサ

性能 /コスト・オーバヘッド

StrongARM Model • In-Order execution• Branch Pred. (not-taken)

Load for KeyNopOriginal

Norm

alize

d Co

de S

ize

BB Size (#Inst.)No

rmal

ized

Exe.

Tim

eBB Size (#Inst.)

統一基本ブロックサイズの縮小に伴い性能/コードサイズ・オーバヘッドは増大

Page 49: 情報社会を支える ディペンダブル・プロセッサ

信頼性の向上

ハードウェア資源を有効利用 !

Page 50: 情報社会を支える ディペンダブル・プロセッサ

いまどきのプロセッサ(例)POWER6 Microprocessor

Jeffrey Kellington et. al., “IBM POWER6 Processor Soft Error Tolerance Analysis Using Proton Irradiation ,” IEEE Workshop on Silicon Errors In Logic (SELSE3), Apr. 2007. (http://www.selse.org/selse07.program.linked.htm)

Page 51: 情報社会を支える ディペンダブル・プロセッサ

マルチスレッド・プロセッサでの空間冗長化

先行スレッド

追跡スレッド

追跡スレッドの実行終了まで待

IF ID IS EX MEM WB FC命令 A

IF ID IS EX MEM WB FC命令 A’

実行結果を比較

FC FC FC

IF ID IS EX MEM命令 A

不一致の場合は実行をやり直し(命令フェッチか

ら)2つの異なるスレッドを同時実行可能( SMT)

時間

IF:命令フェッチID:命令デコードIS:命令発行EX:命令実行MEM:メモリアクセスWB:ライトバックFC:フォールト・チェック

プログラムプログラム

メインパイプライン

実行再実行

結果を比較

T. N. Vijaykumar, I. Pomeranz, and K. Cheng, “Transient-Fault Recovery Using Simultaneous Multithreading,” International Symposium on Computer Architecture, pp.87-98, May 2002.

Page 52: 情報社会を支える ディペンダブル・プロセッサ

バグ対策

ハードウェア資源を有効利用 !

Page 53: 情報社会を支える ディペンダブル・プロセッサ

商用プロセッサにおけるバグ1994 Pentium defect costs Intel $475 million1999 Defect leads to stoppage in shipping Pentium III servers

2004 AMD Opteron defect leads to data loss2005 A version of Itanium 2 recalled Design Defect

Non-Critical Critical

Performance counters Error reporting registers Breakpoint support

Defects in memory, IO, etc.

Concurrent Complex

All signals – same time Different times

J. Torrellas, “Novel Architectural Techniques to Mitigate Processor Errors due to Design Defects and Parameter Variation,” CoolChips’07.

Page 54: 情報社会を支える ディペンダブル・プロセッサ

31%

69%

どのようなバグが,どの程度あるのか ?

商用プロセッサのエラーレポートを調査Intel Pentium III, IV, M, and Itanium I and II, AMD K6, Athlon, Athlon 64,IBM G3 (PPC 750 FX), MOT G4 (MPC 7457)

J. Torrellas, “Novel Architectural Techniques to Mitigate Processor Errors due to Design Defects and Parameter Variation,” CoolChips’07.

Page 55: 情報社会を支える ディペンダブル・プロセッサ

どこにバグが潜んでいるのか ?

プロセッサコアのバグは比較的少ない メモリ周りのバグが多い

J. Torrellas, “Novel Architectural Techniques to Mitigate Processor Errors due to Design Defects and Parameter Variation,” CoolChips’07.

Page 56: 情報社会を支える ディペンダブル・プロセッサ

Phoenix: Hardware Patching

Concurrent Defect( CD)に着目 イベント信号の状態を監視すれば検出可能

e.g. L1 miss, L2 flush, and Power Management ON

バグが見つかったら・・・ ベンダーから CD発生条件に関する情報入手 (Defect Signature)

SSUと BDRを再構成 CE発生条件が成立したらリカバリ

pipeline flush, recovery handlerS. R. Sarangi, A. Tiwari, and J. Torrellas, “Phoenix: Detecting and Recovering from Permanent Processor Design Bugs with Programmable Hardware,” MICRO’06.

Signature Buffer

Bug Detection Unit(BDU)

Global Recovery Unit

Signal Selection Unit(SSU)

Programmable HW

Page 57: 情報社会を支える ディペンダブル・プロセッサ

Phoenixの実装

Subsystem

SSUBDU

Subsystem

BDUSSUHUB

Neighborhood

To RecoveryUnit

Inst. Cache

FP ALU Virtual Mem.

Fetch Unit L1 Cache IO Cntrl.

Examples of Subsystems

To Recovery Unit

S. R. Sarangi, A. Tiwari, and J. Torrellas, “Phoenix: Detecting and Recovering from Permanent Processor Design Bugs with Programmable Hardware,” MICRO’06.

Page 58: 情報社会を支える ディペンダブル・プロセッサ

Phoenixのバグ検出 /回復能力

10 種類のプロセッサをベースに Phonixを設計 他 5 種類のプロセッサでバグ検出 /回復能力を

評価

S. R. Sarangi, A. Tiwari, and J. Torrellas, “Phoenix: Detecting and Recovering from Permanent Processor Design Bugs with Programmable Hardware,” MICRO’06.

Page 59: 情報社会を支える ディペンダブル・プロセッサ

「ディペンダビリティ」はより重要になる !

「マルチコア」から「メニーコアへ」

Page 60: 情報社会を支える ディペンダブル・プロセッサ

60

現実味を帯びてきた「メニーコア」( Intel 80cores)

Frequency

Voltage Power Aggregate Bandwidth

Performance

3.16 GHz 0.95 V 62W 1.62 Terabits/s

1.01 Teraflops

5.1 GHz 1.2 V 175W 2.61 Terabits/s

1.63 Teraflops

5.7 GHz 1.35 V 265W 2.92 Terabits/s

1.81 Teraflops

http://www.intel.com/research/platform/terascale/teraflops.htm?iid=newstab+supercomputing

Page 61: 情報社会を支える ディペンダブル・プロセッサ

オンチップ・スーパーコンピューティング@2017

チップ内コア数:×[email protected]年(ムーアの法則) 2017年には 512コア( ?)

1 10 100 1,000 10,000 100,00010

100

1,000

10,000

100,000

1,000,000

10,000,000

Total Number of Processor Chips

Perfo

rman

ce (G

flop/

s)

Top 500 Supercomputers

Blue-Gene/L

Earth Simulator

Cell (9cores)ClearSpeed (96cores)Power6, Xeon (2cores)

Intel Test (80cores)

Tsubame

Single-Chip

source: http://www.top500.org/

Multi-Core Processors

Page 62: 情報社会を支える ディペンダブル・プロセッサ

ディペンダビリティの重要性 同一チップ上に「数百のコア」を集積→

故障対策は ? 検証は ? 同一チップ上で「複数ユーザ」が「複数アプリ」を実行→安全性は ?

同一チップ上で「数百のスレッド」を同時に実行→発熱に伴う信頼性の低下は ?

などなど

Page 63: 情報社会を支える ディペンダブル・プロセッサ

宣伝その1システム LSI ワークショップ’07

システム LSIの新時代:未来を拓くヒトと技術 2007年 11 月 19 日~ 21 日 北九州国際会議場

ポスター( 73 件の研究を一度にみれます!) 学生部門 44 件(学生による発表) 一般部門 9 件(企業や研究所による発表) デザインガイア 20 件

Page 64: 情報社会を支える ディペンダブル・プロセッサ

宣伝その 2Cell Speed Challenge’07

マルチコア・プログラミングコンテスト 主催:情報処理学会 ARC/EMB/HPC 先進的計算基盤システムシンポジウム

SACSIS2008との併設企画 超豪華賞品

PS3, HD DVDプレーヤー , 液晶テレビ (47 型 )など

スケジュール 11 月初旬に参加申し込み開始予定(規定課題

/自由課題)

Page 65: 情報社会を支える ディペンダブル・プロセッサ

Back-Up Slides

Page 66: 情報社会を支える ディペンダブル・プロセッサ

メモリデータの改竄を検出する !

メモリ整合性検証の高速化

Page 67: 情報社会を支える ディペンダブル・プロセッサ

メモリ・データの保護

CPUcore L1$

L2$

Security boundary(前提:オンチップはセキュア)

Memory

盗み見

改竄

Private Tamper Resistant→ オフチップ・データの暗号化

Tamper Resistant→インテグリティ検証

Integrity VerificationEncryption

Page 68: 情報社会を支える ディペンダブル・プロセッサ

M(t1) = M(t2): メモリ整合性が保たれている⇒改ざんされていない

M(t1)≠M(t2) 改ざん発生!

M(t1)

t1t

t2

Processor

memory M(t2)

Processor

memory書き込み 読み込み

書き込みが発生しない

M(t0)

Processor

memory

t0

データ改ざんの発生

メモリ整合性検証

Page 69: 情報社会を支える ディペンダブル・プロセッサ

ハッシュ木によりメモリ・イメージのダイジェストを保存する!

データ読出し時 メモリ整合性検証の実行 rootまでハッシュ値を比較 一致していれば OK

データ書込み時 ハッシュ木を更新 rootまでのハッシュ値を更新 書込み前にMIVを実行

ハッシュ値のキャッシングにより性能オーバヘッドを削減

Memory Space (insecure)

v1 v2 v3

h1 h2

v4

h1=h(V1)h5

rooth5=h(h1, h2)

root=h(h5, h6)

h3 h4

h6

h6=h(h3, h4)

h1 h2 h3 h4 h5 h6

On-Chip Storage(Trusted)

Page 70: 情報社会を支える ディペンダブル・プロセッサ

メモリ整合性検証によりプロセッサ性能が低下する! 理由:プログラム実行処理とメモリ整合性検

証処理が様々な「資源」を共有する! 具体的には・・

オンチップ・キャッシュ(⇒ミス率の増加) オフチップ・メモリバス(⇒メモリバンド幅の浪

費)

CPU Mem.

プロセッサコア キャッシュ

整合性検証

ハッシュ値

プロセッサが参照するデータ

プロセッサが参照するデータ

Page 71: 情報社会を支える ディペンダブル・プロセッサ

キャッシュの衰退ラインを利用した性能オーバヘッドの抑制 キャッシュの衰退ラインを活用

衰退ライン⇒プロセッサから参照されない(使用済みの)データを保持しているデータブロック

衰退ライン(使用済みライン)にハッシュ値を格納

ハッシュ値のキャッシング時,プログラム実行に必要なデータを追い出さないようにする

CPU Mem.

プロセッサコア キャッシュ

整合性検証

衰退ライン

ハッシュ値プロセッサが参照するデータ

Page 72: 情報社会を支える ディペンダブル・プロセッサ

衰退ライン(使用済みライン)はどの程度存在するのか?

177.mesa

167.gzip 255.vortex

キャッシュ中に格納すべきハッシュ値の割合 (%)

73.2 34.7 56.2

キャッシュ中に存在する衰退ラインの割合 (%)

99.1 98.3 98.4

L2キャッシュサイズ: 128KB

60%

255.vortex

Page 73: 情報社会を支える ディペンダブル・プロセッサ

性能オーバヘッド削減率

Benchmark Programs

Over

head

Red

uctio

n (%

)

Page 74: 情報社会を支える ディペンダブル・プロセッサ

今後の展開

CPUCPUCPU

Mem

CPUCPUCPUCPUCPUCPU

ASIC

ASIC

LSI communityMem

CPU

A B C D

CPUCPU

A B C D

TrustedPrograms

Virus

上位階層

共同体としての処理お互いの監視自己状態の伝達お互いに修復(助け合い)

悪影響を上位階層へ伝播させない仕組み

Page 75: 情報社会を支える ディペンダブル・プロセッサ

安全性と消費エネルギーのトレードオフ

EV Product E2V Product EV2 Product

3.5%

255.v

ortex

175.v

pr

181.m

cf

197.p

arser

179.a

rt

255.v

ortex

175.v

pr

181.m

cf

197.p

arser

179.a

rt

255.v

ortex

175.v

pr

181.m

cf

197.p

arser

179.a

rt

LRU2 MRU1 MRU2 ALL

Page 76: 情報社会を支える ディペンダブル・プロセッサ

VulnerabilityVu

lner

abilit

y

Benchmark Programs

LRU1-L&ILRU1-L&UMRU1-L&U

(Nv-rald / Nrald) * 100 Total #of issued

RA loadInsecure issued

RA load

Page 77: 情報社会を支える ディペンダブル・プロセッサ

Performance OverheadPe

rform

ance

Ove

rhea

d

Benchmark Programs

LRU1-L&ILRU1-L&UMRU1-L&U

Page 78: 情報社会を支える ディペンダブル・プロセッサ

衰退ライン(使用済みライン)はどの程度存在するのか?

0

20

40

60

80

100

mesa gcc vortex bzipベンチマーク・プログラム

CPU/

総キャッシュラインに対して

%ハッシュデータが占める割合()

8K 16K 32K 64K chash

衰退ラインが閉める割合 (%)ハッシュデータが閉める割合 (%)

Page 79: 情報社会を支える ディペンダブル・プロセッサ

安全性に関する考察

不正プログラム実行可能性 秘密鍵情報の漏洩→安全な秘密鍵管理 不正プログラム実行命令数<鍵命令実行間隔→短い間隔

鍵情報の推測容易性 外部からの実行振舞い観測→プロファイラのオンチップ化

不正プログラム伝播容易性 同一秘密鍵→ユーザ /プログラム毎で異なる実行の振舞いを実現可能

Page 80: 情報社会を支える ディペンダブル・プロセッサ

プロセッサ性能オーバヘッドの削減

4-way OOO Superscalar Processor128KB 4-way set-associative UL2 Cacheキャッシュミスによる影響のみ考慮 Per

form

ance

Ove

rhea

d (%

)

UL2

Cac

he M

iss

Rat

e (%

)

Benchmark program

Benchmark program

ConventionalProposed

ConventionalProposed

Page 81: 情報社会を支える ディペンダブル・プロセッサ

性能オーバヘッドPe

rform

ance

Ove

rhea

d (%

)

Benchmark Programs

Conventional Proposed

Page 82: 情報社会を支える ディペンダブル・プロセッサ

2-way In-Order Superscalar

4-way Out-Of-Order Superscalar

Fetch/Issue/Commit Width

2 4

Branch Prediction Bimodal (128-enrty), 1-way BTB(128-entry),

RAS(4-entry)

Gshare(4K-entry),4-way BTB (512-set),

RAS(8-entry)RUU 8 32LSQ 8 16L1 D-Cache 4-way 16KB, 32B lines 4-way 16KB, 32B linesL1 I-Cache 2-way 16KB, 64B lines 2-way 32KB, 64B linesL2 Cache none 4-way 512KB, 64B linesMemory Latency 64 cycles 64 cyclesFunction UnitiALU/iMUL/fALU/fMUL

1/1/1/1 4/2/4/2

Table 1: Processor Configurations

Page 83: 情報社会を支える ディペンダブル・プロセッサ

Architectural Support for

OOO実行

命令パイプラインスーパスカ

ILP TLP

分岐予測

アドレス予測

値予測

キャッシュ

プリフェッチ

パイプライン統合

DVS

クロック・ゲーティング

シグナル・ゲーティング

リサイジング 選択的活性化

スラック予測

CTV BPRF

本講演でのトピック