DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

20
DMAベースメニーコアにおける 通信オーバーヘッド削減手法 ◎高前田(山崎) 伸也 †‡ ,吉瀬 謙二 東京工業大学 大学院情報理工学研究科 日本学術振興会 特別研究員 DC1 2011-07-27 SWoPP2011@鹿児島 B会場 ARC-2 10:45-11:15

description

情報処理学会計算機アーキテクチャ研究会 ARC-196 (SWoPP2011@鹿児島)

Transcript of DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

Page 1: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

DMAベースメニーコアにおける 通信オーバーヘッド削減手法

◎高前田(山崎) 伸也†‡,吉瀬 謙二† †東京工業大学 大学院情報理工学研究科

‡日本学術振興会 特別研究員 DC1

2011-07-27 SWoPP2011@鹿児島 B会場 ARC-2 10:45-11:15

Page 2: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

概要

n  DMAでデータ共有を行うマルチコア/メニーコアの コア間通信オーバーヘッドを削減する手法を提案 l 各コアがスクラッチパッドを持つアーキテクチャを想定 (ex. Cell/B.E)

l 通信とコア演算のオーバーラップをアーキテクチャでサポート •  自動ダブルバッファリング

n  16コア/64コアのメニーコアをターゲットに評価 l マイクロベンチマークによる評価 l 性能向上: 最大19%,ただし,ばらつき大

2

Page 3: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

Contents

n 背景 n 課題 n 提案手法 n ハードウェア構成 n 評価 n まとめ

3

Page 4: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

背景: マルチコア/メニーコアプロセッサ

4

Intel Single Chip Cloud Computer 48 cores (x86)

TILERA TILE-Gx100 100 cores (MIPS)

Page 5: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

マルチコアアーキテクチャCell/B.E n  7 (8) SPE (計算コア) + 1 PPE (管理コア)

l  SPE ローカルストア 256KB (not キャッシュ) l  SPE間,SPE-メインメモリ間はDMAでデータ共有

5

Page 6: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

DMAベースメニーコア: M-Core n  2Dメッシュのタイルアーキテクチャ

l 各ノードの独立したメモリ空間 (スクラッチパッド) l 明示的なDMA転送でコア間/コア-メモリ間でデータ共有

6

Local Memory

INCC Core

R

DRAM Controller DRAM Controller

DRAM Controller DRAM Controller

Node

Page 7: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

メニーコアへ向けた課題 n メニーコアで性能を引き出すには並列化は必須

l データを分散,処理をして集める,配る l タスクを分散,処理をして次のタスクへ送る

n 演算の分散ができても,通信がスケールを阻害 l 分散すればするほどネットワークが重要に

•  キャッシュミス/メインメモリアクセスは必ず発生 •  同期が増えれば通信も増える

l そもそも通信レイテンシを隠蔽するような プログラミングをすればいいのでは?

•  プログラミングが大変 •  本当にすべての通信の挙動を読み切れるのか? •  読み切れないところはブロッキング転送

7

Page 8: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

提案手法: ダブルバッファリングのアーキテクチャサポート n ブロッキングDMA転送中に後続の処理を先行的に行う

l 明示的なコア間DMA転送を行うアーキテクチャを対象 •  DMA転送はゼロコピーを想定,今回はPUTのみを対象

l ハードウェアサポートにより通信と演算のオーバーラップ •  ブロッキング転送

–  転送完了をSW側で待つ

•  ノンブロッキング転送 –  転送完了をSW側で待たない

8

コアA コアB

ローカル メモリ

ローカル メモリ DMA転送

コアBに DMA転送!

Page 9: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

どこを先行実行できるか?

n 例: ブロッキング転送後にロードしてストア l  1) データブロッキング転送を開始 l  2) 転送エリアからロード l  3) 転送エリアにストア

l  2)はデータ転送中に先行実行可能 l  3)はストア先のデータ転送が完了していれば実行可能

•  転送完了前に実行するとWARハザードが発生

9

block_send mem[0x1000~0x1200]のデータをコアAへ 擬似命令列

store reg[r2]をmem[0x1004]へ load mem[0x1000]からreg[r1]へ

Page 10: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

どの処理を先行実行しても良いのか?

n メモリアクセス以外の命令はOK

n ロード命令もOK l  Read After Readハザード・・・?

n ストア命令は注意が必要 l 未転送エリアへストアを反映させると Write After Readハザードが発生

•  未転送エリアを管理する必要あり

10

メモリ

転送完了 エリア

未転送 エリア

転送 エリア

Page 11: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

追加ハードウェア n 各ノード(コア+NWコンポーネント)に2つの機構を追加

l  Violation Detector: DMA転送エリアの監視 l  Store Buffer: コアがStore Bufferを持つ場合は流用可能

11

Store Buffer

Violation Detector

Local Memory (Scratchpad)

0x1000

Tail Address

Head Address 0x2000

Yes DMA Req

DMA Controller

load

store

store store

write

DMA Transfer

stall

DMA status

DMA reg PUT to (3,2)

read

: data

: control

Router On Chip Network

load (DMA Status)

Core

stall store

Page 12: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

追加ハードウェア

n 軽量なハードウェア追加により実現

l  Store Buffer: 通常のストアバッファと同様の構成

l  Violation Detector: 小数のレジスタと比較器等で構成 •  未完了DMAの範囲を記録

–  先頭アドレス用レジスタ –  末尾アドレス用レジスタ

•  ストアバッファ先頭アドレスが違反を起こさないか確認 –  整数比較器 × 2 –  AND × 1

12

Page 13: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

評価 n  評価環境: SimMcS 1.0

l  コア: MIPS32 ISA, 1inst/cycle functional l  スクラッチパッド: 512KB/Node, 4 ports l  ネットワーク: 2D mesh NoC, 1hop/cycle, 32bits, Single-cycle no VC l  ノード数: 16 (4×4), 64 (8×8)

n  測定条件: 4パターン l  Base: Violation Detector, Store Bufferなし l  Violation Detectorあり

•  Store Buffer: 8, 16, 32 エントリー

n  測定項目: l  性能 l  ストール量: DMA転送完了待ちによるストールサイクル数 l  実行できた後続ストア命令数

n  注意: DMA転送命令もストア命令を介して発行される

13

Page 14: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

評価用マイクロベンチマーク n  Pipeline

l  配列に対する処理の後,1つのノードに対してデータ転送 次のノードはデータを受信完了したら同様の処理を行う

•  Buf Size = 128 B

n  Stencil l  2次元配列に対する平均化処理 配列を領域分割し境界データのみを転送

•  Buf Size = 16900 (130x130) B

n  All to All l  各ノードに送信する値を生成後,そのデータを転送するのを 全ノード分繰り返す

•  Buf Size = 128 B

n  Matrix Multiply l  Cannon アルゴリズムにより並列化された行列積

n  Bitonic Sort l  並列ソート

14

Page 15: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

評価結果: 性能 n  Baseを1とした相対実行サイクル数 n  PP/AtoA/MMCでは性能向上を確認

l  Pipeline/AtoAではSBのエントリー数増加により性能向上 l MMCではエントリー数による変化は少ない

15

Pipeline Stencil All to All Matrix

Multiply Cannon

Bitonic Sort

#buf=8 96.27% 99.85% 97.86% 97.25% 99.98% #buf=16 92.64% 99.85% 94.86% 97.21% 99.98% #buf=32 89.50% 99.85% 92.26% 97.19% 99.98%

80.00%

85.00%

90.00%

95.00%

100.00%

Nor

mal

ized

Exe

cutio

n C

ycle

Performance (# cores = 16)

Pipeline Stencil All to All Matrix

Multiply Cannon

Bitonic Sort

#buf=8 96.83% 99.83% 91.91% 92.80% 99.90% #buf=16 94.20% 99.83% 89.27% 92.80% 99.82% #buf=32 91.90% 99.83% 81.51% 92.80% 99.87%

80.00%

85.00%

90.00%

95.00%

100.00%

Nor

mal

ized

Exe

cutio

n C

ycle

Performance (# cores = 64)

Page 16: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

評価結果: ストール率 n 全実行時間中,DMA完了待ち,または,Store Bufferオーバーフローによりストールした時間の割合 l  PP/AtoAではSBのエントリー数の増加により, ストール率がさらに低下

l 一方,MMCでは,ほとんど変化は見られず

16

Pipeline Stencil All to All Matrix

Multiply Cannon

Bitonic Sort

Blocking 10.22% 0.22% 21.39% 1.32% 3.76%

Proposal: #buf=8 0.71% 0.00% 19.33% 0.68% 1.74%

Proposal: #buf=16 0.55% 0.00% 18.02% 0.66% 1.73%

Proposal: #buf=32 0.00% 0.00% 16.70% 0.62% 1.73%

0.00%

5.00%

10.00%

15.00%

20.00%

25.00%

30.00%

Stal

l Rat

e

Core Stall Rate (# cores = 16)

Pipeline Stencil All to All Matrix

Multiply Cannon

Bitonic Sort

Blocking 7.43% 0.31% 26.57% 2.33% 8.05%

Proposal: #buf=8 0.16% 0.00% 19.42% 1.64% 4.46%

Proposal: #buf=16 0.17% 0.00% 16.37% 1.63% 4.38%

Proposal: #buf=32 0.00% 0.00% 9.88% 1.65% 4.36%

0.00%

5.00%

10.00%

15.00%

20.00%

25.00%

30.00%

Stal

l Rat

e

Core Stall Rate (# cores = 64)

Page 17: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

評価結果: 後続ストア命令 n 総実行命令数に対して Store Bufferで吸収できた後続ストア命令の割合 l  DMA転送要求のためのストア命令を含む l  PP/AtoAではエントリー数の影響が大きい.レート大 l MMCではほとんど変化せず.レート低

17

Pipeline Stencil All to

All

Matrix Multipl

y Canno

n

Bitonic Sort

Proposal: #buf=8 0.456% 0.013% 0.311% 0.135% 0.003% Proposal: #buf=16 0.691% 0.013% 0.517% 0.131% 0.003% Proposal: #buf=32 1.194% 0.013% 0.932% 0.111% 0.003%

0.000%

0.200%

0.400%

0.600%

0.800%

1.000%

1.200%

1.400%

Rat

e of

Sto

re in

to S

tore

Buf

fer

Aggressive Store Rate (# cores = 16)

Pipeline Stencil All to All Matrix

Multiply Cannon

Bitonic Sort

Proposal: #buf=8 0.330% 0.000% 1.147% 0.046% 0.014% Proposal: #buf=16 0.486% 0.000% 1.852% 0.045% 0.015% Proposal: #buf=32 0.843% 0.000% 3.092% 0.044% 0.017%

0.000%

0.500%

1.000%

1.500%

2.000%

2.500%

3.000%

3.500%

Rat

e of

Sto

re in

to S

tore

Buf

fer

Aggressive Store Rate (# cores = 64)

Page 18: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

評価結果: 後続ストア命令 (データ) n  DMA転送要求の為のストア命令を除外

l  PP-#buf=8およびMMCでは 後続DMAコマンドのみを吸収していた

•  後続DMAコマンドは先行DMAが完了するまで待機 l  DMAコマンド専用キューの追加,複数のDMA対象範囲の保護を行うことで,まともな性能向上が達成できるのはないか?

18

Pipeline Stencil All to All Matrix

Multiply Cannon

Bitonic Sort

Proposal: #buf=8 0.000% 0.000% 0.311% 0.000% 0.000%

Proposal: #buf=16 0.217% 0.000% 0.517% 0.000% 0.000%

Proposal: #buf=32 0.703% 0.000% 0.932% 0.000% 0.000%

0.000%

0.200%

0.400%

0.600%

0.800%

1.000%

Rat

e of

Sto

re in

to S

tore

Buf

fer

Aggressive Store Rate (for Data) (# cores = 16)

Pipeline Stencil All to All Matrix

Multiply Cannon

Bitonic Sort

Proposal: #buf=8 0.000% 0.000% 1.147% 0.000% 0.000%

Proposal: #buf=16 0.147% 0.000% 1.852% 0.000% 0.001%

Proposal: #buf=32 0.495% 0.000% 3.092% 0.000% 0.002%

0.000%

0.500%

1.000%

1.500%

2.000%

2.500%

3.000%

3.500%

Rat

e of

Sto

re in

to S

tore

Buf

fer

Aggressive Store Rate (for Data) # cores = 64

Page 19: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

まとめ

n  DMAでデータ共有を行うマルチコア/メニーコアの コア間通信オーバーヘッドを削減する手法を提案 l 各コアがスクラッチパッドを持つアーキテクチャを想定 (ex. Cell/B.E)

l 通信とコア演算のオーバーラップをアーキテクチャでサポート •  自動ダブルバッファリング

n  16コア/64コアのメニーコアをターゲットに評価 l 性能向上: 最大19%,ただし,ばらつき大 l 性能向上は,実際には,純粋な後続ストア命令の先行完了ではなく,後続DMA要求の先行的な受付によるものが大きい

19

Page 20: DMAベースメニーコアにおける通信オーバーヘッド削減手法 @SWoPP2011 ARC-196

今後の課題 n コアモデルに関する評価・考察

l コアがOoOの場合には,もう少しシンプルにならないか?

n ダブルバッファリングチューンした場合との比較 l プログラマビリティ vs. 性能

n 複数DMAを束ねてHWで監視するとさらに性能向上 l ハードウェアオーバーヘッド増加とのトレードオフ

n  DMA GETに対する領域保護と先行実行 l  GETできた部分を利用する処理を先行的に開始

n プログラマ+コンパイラ/ランタイム等との連携の検討 l 確実に上位層で拾えるものは拾う l 読み切れない部分をアーキテクチャサポート

20