Contenu connexe Similaire à Dataflow140711 Similaire à Dataflow140711 (20) Dataflow1407114. ノイマン・ボトルネック
● 演算器は、たくさん載せられる
● レジスタもたくさんある
● 命令を取ってこれない
● 演算器の個数に対して、
● 命令語が来ない
↓
● 演算器が使い倒せない
● (主に)命令フェッチのネックを
「ノイマン・ボトルネック」
という
● …本当は、命令フェッチだけが、ボトルネックではないだが
● データフローマシンが,ノイマン・ボトルネックを解決
● 命令フェッチがネックなら、
命令なんか読まなければいいじゃない! (本気
ここが
ボトルネック
メモリ
命令 & データ
8. 並列計算の粒度
● 並行プロセス, スレッド/ 粗粒度 並列
● 大きい単位で並列に計算
● スレッド/プロセスの中はシーケンシャル
● 今時のフツーの並列計算機。マルチコア、クラスタ計算機
● 命令レベル並列/ 細粒度 並列
● VLIW,SIMD, SuperScalar
● 複数の演算を同時(並列)に実行
● VLIWは、様々な命令を組み合わせて、同時(並列)に実行可能
● SIMDは、同一演算を並列に実行
– データ・パラレル
● SuperScalarは、同時実行する演算が、CPU内部で、動的にスケ
ジュールされる
● データフローマシンは、命令レベル並列に近い
9. データ並列とか
● SIMDは、データ・パラレル
● 命令は一つ。演算は同時に多数
● GPGPU
● 高速パイプライン
– パイプライン方向の並列処理
● 各ステージが同時に動作
– パイプラインを埋めるには、
規則正しい、データの並びが必須
● ばらばらなデータでは、パイプは埋まらない
● マルチ・パイプ
– 高速パイプラインを複数もつ
– 192個~2048個~
● データフローマシンは、マルチ・パイプだが、
バラバラのデータでも、パイプを埋めることができる
レ
ジ
ス
タ
フ
ァ
イ
ル
ベ
ク
ト
ル
レ
ジ
ス
タ
12. ● レジスタ・ファイル(Registers)を複数持つ
● 各スレッドは、 各レジスタ・ファイルに保持
● メモリ・アクセスが長時間になる:キャッシュ外れ の時、
レジスタ・ファイルを切り替え、待機していた別スレッドを動かす
IR Register
File
今のアーキテクチャHyper thread って、なんだっけ?
ここが遅いとき
別スレッドを
動かすと
ALUが生きる
14. 今のアーキテクチャ Super Scalar
● 複数の処理ユニットを、効率的に回す
● ALUが複数個ある
● それを、間断なく回す
● 命令は十分読み込めていなければならない
● 命令キャッシュとのバンド幅が十分
● CPU内部で OPμ にバラすとか
● データ/演算レベルで、動的なスケジューリング
● データ依存関係&実行ユニットの空き で駆動(スケジュール)
● 通常の機械では、
分岐が入るまでの、プログラム・セグメント中で、Out of Order
(OoO)処理
● Reorder Buffer, Reservation Station, Score BoardなどでOoOを実現
15. 今のアーキテクチャ Super Scalar
● データ依存関係、実行ユニットの空きなどを
見ながら、動的にスケジュール
※ここの例では、ALUは2個のつもり。
この例では実行ユニットの数は重要ではない
プログラム
C=A*B;
M=K*L;
P=M+N;
D=C+P; ←これが後回し
Z=X+Y;
*
A B
*
K L
C M
+
D
+
P
N
+
X Y
Z
src dest C
*
D
+
M
*
P
+
Z
+
A x
B x
C x
D
K x
L x
M x
N x
P x
X x
Y x
Z
データ(レジスタ)依存関係を示すスコア・
Pの生成が
遅れるので、
後に回して、
ALUはX+Yをやる
17. 非ノイマン・アーキテクチャ
● プログラムは、フローグラフ
● 単一代入
● Single Assignment Data flow Graph
– 現代的な(C言語などの)コンパイラ
は、ソースを
SSA(Static Single Assignment form)に変換
して最適化
● 演算ノードへのデータ(オペラ
ンド)が揃ったら、演算を行う
● データフローの対義語は
コントロール・フロー
● 「フローチャート」はコント
ロール・フローグラフそのもの
+
<
22 33
-
12 4
gategate
-10001000
True
False
If( (22+33)<(12-4) )
return 1000;
else
return -1000;
20. 環状(サーキュラ)パイプライン
● パイプラインの色々
Pease FFT algorithm(もともとのアルゴリズ
ム)
Linear Pipeline implementation
Circular Pipeline implementation
http://asim.csail.mit.edu/redmine/projects/mit6s078/wiki/Lab_FFT より引用
22. 汎用データフローマシン
● 基本はサーキュラ(環状)・パイプライン
● データに、アークを示すタグが付いている
● アークを見ると
– 対になるデータ (通常、計算機命令は2オペランド)
– 適用される命令(演算/関数)
が判る
● マッチングメモリで、オペランドが揃うのを待つ
● オペランドが揃うと、「発火可能」
● 発火可能になると、発火可能キューに入る
● 演算ユニットが空くと、発火可能キューからデータは取り出され
● 対応する演算を行う
● 命令は、データ(中のアーク情報)を見ると分かる
● 演算結果に、新しい行き先(新しいアーク)を付加
● 元のアークから、新しい行き先が判る
● できたデータを、マッチングメモリに返す
23. 汎用データフローマシン
● データは、パケットに収められている
● パケットには
● 対になるデータの情報
● 適用される演算/関数
● 結果の行き先(新しいタグ情報)
● インスタンスを表す情報
– リニア・パイプラインではデータの順序が保存されるので不要
– サーキュラ・パイプラインは演算途中のデータが順不同に混在
するので、インスタンスを判別する必要あり
– 通常、「カラー」などと呼ばれる整数を使用する
● ハードウェアでカラーを扱う(比較的少ない資源)ので、カラーは回収が必
要
24. 日本の代表的データフローマシン
● Sigma-1 (1987年)
● 平木先生が電総研時代に作ったスパコン・データフローマシン
● システムのクロックは100ns(10MHz)
● 170MFLOPS,200MIPS
● ピーク最大性能427MFLOPS,640MIPS
● 128台の要素プロセッサ(PE)
● 128台の構造データ処理装置(SE)
● DFC(data flow C),DFC II
● ファームウェア(micro code)、
ソフトウェアは、関口さん
● http://museum.ipsj.or.jp/computer/other/0007.html
● http://museum.ipsj.or.jp/guide/pdf/magazine/IPSJ-MGN430211.pdf
25. 日本の代表的データフローマシン
● EM-4
● 電総研(現 産総研)の、プログラム・カウンタのあるデータフローマシ
ン
● 1986年~1990年
● データフロー型,フォン・ノイマン型を融合したアーキテクチャ
● 記号処理用・シミュレーション用データフロー型並列計算機
● 1024プロセッサ
● プロトタイプ最高性能は1 GIPS,ネットワーク性能は14.63 Gbps
● CRAY/XMPの21倍,SUN Sparc-330の94倍 高速
● データフロー用プロセッサチップLSI “EMC-R”
● Cコンパイラ
● 現在のスーパースカラと同じ考え
●
http://museum.ipsj.or.jp/computer/other/0017.html
●
http://news.mynavi.jp/articles/2006/01/01/dataflow/
● 坂井先生,児玉先生ほか
26. 日本の代表的データフローマシン
● DFM
● 電電公社(NTT)武蔵野通研 雨宮真人さんたちが作った
● http://jglobal.jst.go.jp/public/20090422/200902077371351099
● プログラミング言語は、pure functional
● Lisp系(?)言語を動かそうとしていた
● データフローマシンで記号処理を目指す
27. 日本の代表的データフローマシン
● NEDIPS/ImPP(μPD7281)
● NEDIPS: NECが開発した、画像処理のための大型データフ
ローマシン
● ImPPは、NEDIPSの要素プロセッサをLSIにしたもの
● http://jglobal.jst.go.jp/public/20090422/200902052562513991
● http://www.shmj.or.jp/museum2010/exhibi704.htm
● http://ieeexplore.ieee.org/xpl/login.jsp?
tp=&arnumber=1169141&url=http%3A%2F%2Fieeexplore.ieee.org
%2Fxpls%2Fabs_all.jsp%3Farnumber%3D1169141
● http://www.st.rim.or.jp/~nkomatsu/nec/uPD7281.html
● 写真は、http://www.st.rim.or.jp/~nkomatsu/nec/uPD7281.html より引用
30. 汎用データフローマシン
● 電総研(産総研) Sigma-1 (1984~1988年)
● http://museum.ipsj.or.jp/guide/pdf/magazine/IPSJMGN430211.pdf
● Data Flow Machine For Data Driven Computing - Patent
5465368 (1995年)
● https://www.google.com/patents/US5465368
● PDFダウンロード可能
● NEC ImPP
● http://www.shmj.or.jp/museum2010/exhibi704.htm
● http://www.st.rim.or.jp/~nkomatsu/nec/uPD7281.html
33. 昔の汎用データフローマシンの短所 1
● Eagerな評価なので、無駄な計算を
やりがち
● 投機実行の塊 とも言える
● 分岐予測は不要(長所)
● ノイマン型で評価しない部分(if文
で不成立の方)も、実行してしま
う
● if cond then truePart else
falsePart
の truePart, falsePart のすべてを
実行してしまう
● プログラムに潜在する並列性がす
べて引き出せるのが、
…逆に欠点に
● 現在のスパコンは、50万~312万
コア、
いつも、すべてが十分に回ってい
るわけでもない
が、誰も文句を言わない
+
<
22 33
-
12 4
gategate
True
False
If( (22+33)<(12-4) )
return 123 + 456;
else
return 123 - 456;
+
123 456
-
123 456
両方やっちゃう
(^^;
両方やっちゃう
(^^;
36. データフローマシンと関数型言語
● if cond then truePart else falsePart
の truePart, falsePart のすべてを実行してしまう
● 参照透過性が欲しい = 副作用は嫌い
⇒ Pure functional (純粋関数型)いいじゃん!
● ちなみに、現在の普通の機械の投機実行は、
寸止め(?)で、副作用(write back)を止める
● 並列計算は、一般に、変数に干渉しないと楽(バグが出な
い)
● 単一代入 = 変数に代入しない → 干渉しない
⇒ Pure functional いいじゃん!
● なので、1980年代データフローマシンは、純粋関数型大好
き
37. 教科書
● データフローマシンと言語
● 曽和 将容
● 様々な機械のサーベイができてる。
●
http://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%83%AD
%E3%83%BC%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%A8%E8%A8%80%E8%AA%9E-
%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A8%E3%82%A2%E8%AC%9B
%E5%BA%A7-%E6%9B%BD%E5%92%8C-%E5%B0%86%E5%AE%B9/dp/4785635436/ref=sr_1_1?
ie=UTF8&qid=1399793655&sr=8-1&keywords=%E3%83%87%E3%83%BC%E3%82%BF
%E3%83%95%E3%83%AD%E3%83%BC%E3%83%9E%E3%82%B7%E3%83%B3
38. 教科書
● データ・フロー・コンピューティング
● J.A.シャープ (著), 富田 真治 (翻訳)
● 富田先生は、京大萩原研の柴山先生のちょっと上の先輩でQA-2を作った人
● http://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%BB%E3%83%95%E3%83%AD
%E3%83%BC%E3%83%BB%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC
%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0-Information-computing-13-J-A-
%E3%82%B7%E3%83%A3%E3%83%BC%E3%83%97/dp/4781904718/ref=sr_1_1?
ie=UTF8&qid=1399793942&sr=8-1&keywords=%E3%83%87%E3%83%BC%E3%82%BF
%E3%83%95%E3%83%AD%E3%83%BC+
%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC
%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0
39. 教科書
● データ駆動型並列計算機
● 弓場 敏嗣 , 山口 喜教(著) この人たちは、電総研(現産総研)で、
データフローマシンを作ってた人たち。
●
http://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E9%A7%86%E5%8B
%95%E5%9E%8B%E4%B8%A6%E5%88%97%E8%A8%88%E7%AE%97%E6%A9%9F-
%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF
%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF
%E3%83%81%E3%83%A3%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-
%E5%BC%93%E5%A0%B4-%E6%95%8F%E5%97%A3/dp/4274077632/ref=sr_1_3?
ie=UTF8&qid=1399794075&sr=8-3&keywords=%E3%83%87%E3%83%BC%E3%82%BF
%E9%A7%86%E5%8B%95