演算/メモリ性能バランスを考慮したCMP向けオンチップ

演算/メモリ性能バランスを考慮したCMP
向けオンチップ・メモリ貸与法の提案
九州大学
○林 徹生 今里 賢一
井上 弘士 村上 和彰
1
発表手順


背景・目的
演算/メモリ性能バランシング



提案手法の実現方法



着目する命令
(Cellプロセッサへの)実装
性能評価



概要
アクセスレイテンシの削減とオーバーヘッド
姫野ベンチマーク
Susan@MiBench
おわりに
2
チップマルチプロセッサ (CMP)の普及

スレッドレベル並列性(TLP)により性能向上

汎用



特定用途





2コアが主流
4コアのプロセッサへ移行
8コア:Cell(Sony,Toshiba,IBM)、Niagara2(Sun)
16コア:Raw(MIT)
80コア:Intelのプロセッサ
96コア:CSX600(Clear Speed)
メニーコアを想定した研究
3
メモリ・ウォール問題の深刻化
高速

主記憶へのアクセス時間が計算機
の性能ボトルネックとなることが多い

CMPでは
アクセス時間
レジスタ
1クロックサイクル(cc)

【オンチップ・メモリ】
1~数10cc
【オフチップ・メモリ】
数100cc

データ競合: 同期後の主記憶
アクセスは隠蔽できない!
資源競合: コア数に比例して
オフチップ・バンド幅はスケー
ルしていない!
補助記憶
大容量
4
Speedup
メモリ性能の影響
9
8
7
6
5
4
3
2
1
0
性能差は拡大
L2ミスなし
性能向上は
次第に飽和
L2=2MBで実行
1
2
3
4
5
6
7
8
Number of Threads
SPLASH2ベンチマークよりFMMを抜粋
5
研究の目的
【目的】

プロセッサのトータル性能を向上
【動機】

演算性能とメモリ性能がプロセッサのトータル性能に与える影響
が異なる
【方法】


チップ内のコアを単純に並列処理に用いず、「演算用」と「メモリ
性能向上用」として使い分ける
メモリ性能がボトルネックとなる場合、並列実行可能でもあえて
TLPを犠牲にし、コアをメモリ用として利用することでトータル性
能を向上する
6
発表手順


背景・目的
演算/メモリ性能バランシング



提案手法の実現方法



着目する命令
(Cellプロセッサへの)実装
性能評価



概要
アクセスレイテンシの削減とオーバーヘッド
姫野ベンチマーク
Susan@MiBench
おわりに
7
Speedup
コアの割り当てによる性能向上
9
8
7
6
5
4
3
2
1
0
7コア「演算用」、1コア「メモリ性
能向上用」の時の性能の上限
かつ
8コア並列処理における
最大性能
従来の並列処理
1
2
3
4
5
6
7
8
Number of Threads
8
想定するCMPアーキテクチャ

on-chip
各コアはソフトウェア制御
可能なオンチップメモリ
(SPM)を持つ

Core 0 Core 1
SPM
Core N
・・・
SPM
Network
Main Memory
SPM

各コアは他コアのSPMの
物理アドレスを知ることが
可能、かつ、アクセス可能

off-chip
計算とデータ転送は同時実
行可能
ベースアドレスとオフセットか
らアドレスを算出可能
9
コアの振る舞いと定義
こっちへアクセス!

Compコア

Compコア
Core 0 Core 1
SPM
Aidコア
Core N
・・・
SPM
SPM

Aidコア


Network
Main Memory
このエリアにアクセス
要求が来たら・・・
マッピング
並列化されたコード(ス
レッド)を実行する

スレッド実行を行なわない
自コアのSPMを他コアの
メモリ性能向上のために
提供する
SPMはCompコア-主記憶
間の階層メモリとして利用
される
10
Aidコアを確保する効果

利点: メモリ性能改善の可能性



欠点: 演算性能の低下


AidコアのSPMにアクセスすればレイテンシ削減
データ競合・資源競合の減少
意識して制御
するのは困難
1コアあたりの演算負荷が増大
目標: メモリ性能改善>演算性能の低下
11
見た目上の主記憶アクセス・レイテ
ンシの変化
アクセス先
DMA命令
主記憶
AidコアのSPM
Read
↑オーバーヘッド
↓削減
Write
↑オーバーヘッド
↑オーバーヘッド

書込みはメモリ・コントローラへのリクエストによる完了を
想定



アクセス先 (主記憶/Aidコア)に関わらず、アクセス先判別
のためのオーバーヘッドが発生
Aidコアでのデータヒット率がメモリ性能向上の鍵
小オーバーヘッドでの実現が必要
12
発表手順


背景・目的
演算/メモリ性能バランシング



提案手法の実現方法



着目する命令
(Cellプロセッサへの)実装
性能評価



概要
アクセスレイテンシの削減とオーバーヘッド
姫野ベンチマーク
Susan@MiBench
おわりに
13
Cellプロセッサ
SPE×7
並列処理
SPU
SPU
SPU
SPU
SPU
SPU
SPU
LS
LS
LS
LS
LS
LS
LS
256KB
On-Chip Network
L2
PPE
L1
PPU
I/O制御、初期化
MIC
BIC
Off-chip
14
着目する命令
SPM環境ではバッファリングは当たり前
→ 同期命令後のデータ転送命令に着目
→ アクセスアドレス付近のデータをマッピング

for(n=0; n<N ; n++){
cal(i,j,k);
atomic(・・・);
// 全コアで処理が終了
DMA_READ(・・・);
DMA_READ(・・・);
DMA_WRITE(・・・);
DMA_WRITE(・・・);
// 中間データ読み込み
// 中間データ読み込み
atomic(・・・);
// 全コアで更新終了
// データ更新
// データ更新
}
15
提案手法の実装(Compコア)

メモリアクセス先(主記憶 or あるAidコアのSPM)
の判別には配列を使用



分岐命令はミスペナルティが膨大
必要なメモリ領域はコア数Nに対して最悪でもO(N)
配列イメージ図
SPM4
SPM5
SPM6
*フォン・ノイマン型(コード領域)を考慮
マッピング
配列
コア4 コア5 コア6
アクセスアドレス
主記憶
Address Arrayoffset%Size  offset
16
提案手法の実装(Aidコア)

データ・プリフェッチ




Aidコアは並列処理の開始時にデータプリフェッチ
Aidコアへの初期参照を保証
読込み/書込みサイズが異なる時の動作を保証
データ・ライトバック



Aidコアは並列処理の終了時にデータを書き戻す
最新の値はAidコアのSPMで保持
終了時のデータを主記憶へ書込み
17
発表手順


背景・目的
演算/メモリ性能バランシング



提案手法の実現方法



着目する命令
(Cellプロセッサへの)実装
性能評価



概要
アクセスレイテンシの削減とオーバーヘッド
姫野ベンチマーク
Susan@MiBench
おわりに
18
評価

評価目的
 提案手法の効果の有無を調査

評価環境
 Cellプロセッサ(実機)+Time関数
 10回測定、最大値・最小値を除いた平均値を選出
 DMAキャッシュをウォームアップ

評価対象プログラム
 姫野ベンチマーク(SSサイズ、Sサイズ、Mサイズ)
 Susan-Edge (large input)
 コンパイルオプション:-O3

評価項目
 実行性能 (実行時間の逆数)
19
プログラム実装方針

並列処理方法
○処理分散(各コアは同じプログラムを処理)
×機能分散(各コアは異なるプログラムを処理)

負荷分散



粗粒度の並列処理
多重ループの最外ループをコア数Nで分割
コードチューニング

最内ループのデータをバッファリング
20
評価モデル
【CONV】 従来の、並列化されたコードを全コアを
用いて並列処理するモデル.
【IDEAL】 主記憶アクセスレイテンシを0と仮定し
たモデル.実装上ではDMA転送の完了を待た
ないため,プログラム実行の正しさを保証しない.
【PB-N】 Compコア数をN (Aidコア数:7-N)とした
時の提案手法を示すモデル.


並列処理部分のみを抽出
逐次処理部分の高速化は考慮しない
21
SS
S
M
PB
-3
PB
-4
1.2
PB
-2
1.4
最大13%性能向上
オーバーヘッド1%
1
0.8
0.6
0.4
0.2
PB
-7
PB
-6
PB
-5
0
CO
NV
ID
EA
L
PB
-1
Normalized Performance
評価結果:姫野ベンチマーク
Evaluation Model
22
ヒット率が低く、性能
向上が小さい
1.2
S
M
PB
-4
1.4
PB
-3
SS
1
0.8
0.6
0.4
PB
-7
PB
-2
CO
NV
ID
EA
L
PB
-1
0
Hit率100%だけど、並列処理
の性能低下の影響が大きい
PB
-6
0.2
PB
-5
Normalized Performance
評価結果:姫野ベンチマーク
Evaluation Model
23
正規化性能
評価結果:Susan-Edge
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
並列処理部分
隠蔽できないDMA転送が
少ない(初期参照程度)
並列処理・前半部
並列処理・後半部
オーバーヘッド10%
CONV PB-1
PB-2 PB-3 PB-4 PB-5 PB-6
PB-7 BEST
評価モデル
24
評価結果:Susan-Edge
正規化性能
定数の代入 or 何もしない
並列処理部分
並列処理・前半部
1.8 → 頻発するデータ転送で
1.6
バスが飽和
1.4
1.2
1
0.8
0.6
0.4
0.2
0
CONV PB-1
並列処理・後半部
PB-2 PB-3 PB-4 PB-5 PB-6
PB-7 BEST
評価モデル
25
発表手順


背景・目的
演算/メモリ性能バランシング



提案手法の実現方法



着目する命令
(Cellプロセッサへの)実装
性能評価



概要
アクセスレイテンシの削減とオーバーヘッド
姫野ベンチマーク
Susan@MiBench
おわりに
26
まとめ

新しい並列処理モデルを提案






コアを「演算用」と「メモリ性能向上用」とに分配
姫野ベンチマークのSSサイズで13%の性能向上
7コア程度では性能向上が得られるプログラムは限定的と予想
Comp/Aidコア数を如何にして決定方法が課題
ボトルネック解析とコア間協調実行による静的/動的最適化技
術の確立も課題
姫野ベンチ(HPC)、Susan(組込み)の次はequake
(SPEC OMP、汎用)を評価予定
27
ご清聴ありがとうございました
28
backup slides
29
性能モデル式(通常実行)

読込み(Tread)と書込み(Twrite)のDMA転送時間
Tread  LDMA  Lctrl  Loff  Sizek / BW
Twrite  LDMA  Lctrl  Sizek / BW





LDMA: DMA転送のセットアップ時間
Lctrl: メモリコントローラへのリクエスト時間
Loff: オフチップのアクセスレイテンシ
Size: データ転送サイズ
BW: オンチップのバンド幅
30
性能モデル式(提案手法)

提案手法を適用、かつ、読込みはAidコアの
SPM上にアクセスした時のDMA転送時間
通常実行との差異
'
read
T
 LDMA  Lctrl  Laid  Sizek / BW  OHRW
主記憶の代わりにAidコア
のSPMへアクセス
'
write
T
アクセス先(主記憶/Aid
コアのSPM)制御の
オーバーヘッド
 LDMA  Lctrl  Sizek / BW  OHRW
オーバーヘッドのみ発生
31
主記憶アクセスレイテンシの削減
量

提案手法の適用により、




Aidコアにデータを読込み → レイテンシ削減
主記憶にデータを読込み → オーバーヘッド発生
書込み(アクセス先非依存) → オーバーヘッド発生
レイテンシの削減量/主記憶アクセス
Treduce  RW  Hit  Loff  Laid  OHRW
RW: 全DMA命令に占める読込み命令
Hit: Aidコア上でのデータヒット率
32
主記憶アクセスレイテンシの削減

RW=2/3, OHRW=Laid/2と仮定
Hit=80%と仮定
ワーストケースで40%強の
主記憶アクセスレイテンシ
(100cycle強)削減
参考文献[10]
Loff
reduction(%)

Victim Replication (ISCA2005)
N回の主記憶アクセスが並列処理
の台数効果を上回ればよい
60
50
40
30
20
10
0
-10
50.0 -60.0
40.0 -50.0
30.0 -40.0
20.0 -30.0
10.0 -20.0
0.0 -10.0
-10.0 -0.0
60
56 7
8 9 10 0
Loff/Laid
90
30
Hit(%)
33
処理フロー
1. Aidコアがデータをプリフェッチ


初期参照を保証
読込み/書込みサイズの差異を保証
2. Compコアが各SPMの物理アドレスを習得
3. CompコアがDMA転送時のアクセス先判別に用いる
配列を作成
4.
CompコアはAidコアのSPMを活用しつつ並列処理

最新のデータは、AidコアのSPMが保持
5. Aidコアのデータを主記憶に書き戻す

処理終了の合図受信後
34
DMA(データ転送)コード
DMA_read(addr1, addr2, offset, size, tag, id, extend1, extend2){
プロセッサ依存のDMA命令
}
function(){
DMA_read(・・・・・)
a+b;
・・・・
DMA_write(・・・・・)
}
35
姫野ベンチマーク

3次元データ + 4次元データ(更新なし)を使用
k
for(i)
for(j)
for(k)
array[i][j][k]の更新に隣接
する配列の要素を使用
i
end for(k)
end for(j)
end for(i)
j
iのループを並列化
36
姫野ベンチでのローカル容量

(k+3)*34*4(Byte)
Input
i×j×l
ローカル容量
SS
33×33×65
9KB
S
65×65×129
17.5KB
M
129×129×257
34.5KB
37
Susanの逐次処理部分

画素によって、前の処理に移動


(ライン単位の)バッファリングが無駄になることも
書き戻す時は画素(バイト)単位
x-2
y-1
x-1
y-1
条件判定
画像(pgmファイル)
38
Susan@提案手法:逐次処理込み
1.2
1
0.8
0.6
0.4
0.2
0
CONV
PB-1
PB-2
PB-3
PB-4
PB-5
PB-6
PB-7
39
前半部(従来手法)のSpeed Up
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
40
参考文献

D.J-Gonzalez et al. “Performance Analysis of Cell
Broadband Engine for High Memory Bandwidth
Applications” ISPASS 2007
*各SPEは同じアドレス
にアクセス
4-2-8-1
4-8-2-1
4-8-2-1
41