Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dataflow140711

2,186 views

Published on

Dataflow140711

  1. 1. 非ノイマン・アーキテクチャ データ駆動計算機 Data Flow Machine とは 2014/JUL/12 たけおか @takeoka AXE, Inc. / たけおかラボ(株)
  2. 2. たけおかって誰? 1970年代から、並列計算&記号処理に興味あり。1977年,電卓500ステップで「# ×○ 」を打つプログ ラムを書く 1980年代、UNIXの仮名漢字変換システムWnnや Temporal Prolog(時相論理Prolog)を作ったり。国産X Window端末などの設計開発に携わる。 1990年ごろ、豊橋技科大 湯淺研にて、1024PE規模の超並列計算機“SM-1”のLSIハードウェア、基 本ソフトウェアの設計開発に携わる。 湯淺研 SM-1:1024PE超並列計算機 ザウルスのOS組込みプレス No.8 (2007/AUG) 読者モデル スパコン研究の低レイヤ 1992年~ AXE; OSとコンパイラとか。 …大きなものから小さなものまで 最近は AI もやってます 実時間Linux極小Lisp デジカメのOS
  3. 3. ノイマン・アーキテクチャ ● 普通の計算機 ● 構成要素 ● PC(プログラム・カウンタ) ● メモリ/レジスタ ● ALU ● PCが指す命令を ● デコード ● オペランド・データ・フェッチ(読み出し) ● 演算 ● 結果書き込み
  4. 4. ノイマン・ボトルネック ● 演算器は、たくさん載せられる ● レジスタもたくさんある ● 命令を取ってこれない ● 演算器の個数に対して、 ● 命令語が来ない ↓ ● 演算器が使い倒せない ● (主に)命令フェッチのネックを 「ノイマン・ボトルネック」 という ● …本当は、命令フェッチだけが、ボトルネックではないだが ● データフローマシンが,ノイマン・ボトルネックを解決 ● 命令フェッチがネックなら、 命令なんか読まなければいいじゃない! (本気 ここが ボトルネック メモリ 命令 & データ
  5. 5. 非ノイマン・アーキテクチャ ● アニメのネタじゃないよ ● PC(プログラム・カウンタ)が *無い* ● 明示的なメモリ/レジスタ が *無い* (ピュアなもの は) ● i-structure(配列みたいなもの)とかは、あるが ● ALU ● データによって駆動 ● オペランド・データが揃ったら ● 演算する
  6. 6. 非ノイマン・アーキテクチャの代 表● データフローマシン ● 「データ駆動計算機」と呼ぶべき、と言われているが、 昔のことすぎて、「データフローマシン」の方がとおり が良い ● スーパースカラ計算機 ● みんなの x86 の中身もスーパースカラ ● スーパースカラは、データ依存関係で駆動されている – データフローマシンとまったく同じ
  7. 7. 並列計算 計算の並列
  8. 8. 並列計算の粒度 ● 並行プロセス, スレッド/ 粗粒度 並列 ● 大きい単位で並列に計算 ● スレッド/プロセスの中はシーケンシャル ● 今時のフツーの並列計算機。マルチコア、クラスタ計算機 ● 命令レベル並列/ 細粒度 並列 ● VLIW,SIMD, SuperScalar ● 複数の演算を同時(並列)に実行 ● VLIWは、様々な命令を組み合わせて、同時(並列)に実行可能 ● SIMDは、同一演算を並列に実行 – データ・パラレル ● SuperScalarは、同時実行する演算が、CPU内部で、動的にスケ ジュールされる ● データフローマシンは、命令レベル並列に近い
  9. 9. データ並列とか ● SIMDは、データ・パラレル ● 命令は一つ。演算は同時に多数 ● GPGPU ● 高速パイプライン – パイプライン方向の並列処理 ● 各ステージが同時に動作 – パイプラインを埋めるには、 規則正しい、データの並びが必須 ● ばらばらなデータでは、パイプは埋まらない ● マルチ・パイプ – 高速パイプラインを複数もつ – 192個~2048個~ ● データフローマシンは、マルチ・パイプだが、 バラバラのデータでも、パイプを埋めることができる レ ジ ス タ フ ァ イ ル ベ ク ト ル レ ジ ス タ
  10. 10. 今のアーキテクチャ
  11. 11. 普通のアーキテクチャ MIPS http://web.sfc.keio.ac.jp/~rdv/keio/sfc/teaching/architecture/computer-architecture-2013/lec07-cache.html より引用
  12. 12. ● レジスタ・ファイル(Registers)を複数持つ ● 各スレッドは、 各レジスタ・ファイルに保持 ● メモリ・アクセスが長時間になる:キャッシュ外れ の時、 レジスタ・ファイルを切り替え、待機していた別スレッドを動かす IR Register File 今のアーキテクチャHyper thread って、なんだっけ? ここが遅いとき 別スレッドを 動かすと ALUが生きる
  13. 13. 今のアーキテクチャ Hyper thread ● この発想は、1980年代 中~後期のデータフローマ シン研究の中で出てきた(と言って、過言ではないだ ろう)
  14. 14. 今のアーキテクチャ Super Scalar ● 複数の処理ユニットを、効率的に回す ● ALUが複数個ある ● それを、間断なく回す ● 命令は十分読み込めていなければならない ● 命令キャッシュとのバンド幅が十分 ● CPU内部で OPμ にバラすとか ● データ/演算レベルで、動的なスケジューリング ● データ依存関係&実行ユニットの空き で駆動(スケジュール) ● 通常の機械では、 分岐が入るまでの、プログラム・セグメント中で、Out of Order (OoO)処理 ● Reorder Buffer, Reservation Station, Score BoardなどでOoOを実現
  15. 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をやる
  16. 16. データフローマシン データ駆動マシン
  17. 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;
  18. 18. FPGAでありがちなデータフロー・アーキテクチャ・ マシン ● フローグラフをそのまま、 ハードウェアにマッピング ● 応用ごとに論理(パイプライ ン)を生成しなければならない ● パイプラインがちゃんと流 れれば高速 ● 繰り返しの表現方法が、各機 械の個性 ● + < 22 33 - 12 4 gategate -10001000 True False latch + latch latch - latch latch < latch Const 1000 gate latch latch gate Const -1000
  19. 19. 日本はデータフローマシン大国 日本の代表的データフローマシン ● Sigma-1 (1987年) 電総研(現 産総研) ● EM-4 電総研(現 産総研) ● DFM 電電公社(現 NTT) 通研 ● NEDIPS/ImPP(μPD7281) NEC
  20. 20. 環状(サーキュラ)パイプライン ● パイプラインの色々 Pease FFT algorithm(もともとのアルゴリズ ム) Linear Pipeline implementation Circular Pipeline implementation http://asim.csail.mit.edu/redmine/projects/mit6s078/wiki/Lab_FFT より引用
  21. 21. 汎用データフローマシン ● 基本はサーキュラ(環状)・パイプライン マッチング メモリ (オペランドの 待ち合わせを 行う) 命令ユニット (データが 処理されるべき 演算を出す) 行き先ユニット (新しい アーク情報を 付ける) 演算 要素ユニット インターコネクト(スイッチネットワーク/バスなど であることが通常) 演算 要素ユニット サーキュラ・パイプラインを持つ、典型的な汎用データフローマシンのブロック図 実行ユニッ ト
  22. 22. 汎用データフローマシン ● 基本はサーキュラ(環状)・パイプライン ● データに、アークを示すタグが付いている ● アークを見ると – 対になるデータ (通常、計算機命令は2オペランド) – 適用される命令(演算/関数) が判る ● マッチングメモリで、オペランドが揃うのを待つ ● オペランドが揃うと、「発火可能」 ● 発火可能になると、発火可能キューに入る ● 演算ユニットが空くと、発火可能キューからデータは取り出され ● 対応する演算を行う ● 命令は、データ(中のアーク情報)を見ると分かる ● 演算結果に、新しい行き先(新しいアーク)を付加 ● 元のアークから、新しい行き先が判る ● できたデータを、マッチングメモリに返す
  23. 23. 汎用データフローマシン ● データは、パケットに収められている ● パケットには ● 対になるデータの情報 ● 適用される演算/関数 ● 結果の行き先(新しいタグ情報) ● インスタンスを表す情報 – リニア・パイプラインではデータの順序が保存されるので不要 – サーキュラ・パイプラインは演算途中のデータが順不同に混在 するので、インスタンスを判別する必要あり – 通常、「カラー」などと呼ばれる整数を使用する ● ハードウェアでカラーを扱う(比較的少ない資源)ので、カラーは回収が必 要
  24. 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. 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. 26. 日本の代表的データフローマシン ● DFM ● 電電公社(NTT)武蔵野通研 雨宮真人さんたちが作った ● http://jglobal.jst.go.jp/public/20090422/200902077371351099 ● プログラミング言語は、pure functional ● Lisp系(?)言語を動かそうとしていた ● データフローマシンで記号処理を目指す
  27. 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 より引用
  28. 28. 日本の代表的データフローマシン ● ImPP(μPD7281) ● 図は、http://www.st.rim.or.jp/~nkomatsu/nec/uPD7281.html より引用
  29. 29. 日本の代表的データフローマシン ● ImPP(μPD7281) ● 図は、http://www.shmj.or.jp/museum2010/exhibi704.htm より引用
  30. 30. 汎用データフローマシン ● 電総研(産総研) Sigma-1 (1984~1988年) ● http://museum.ipsj.or.jp/guide/pdf/magazine/IPSJ­MGN430211.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
  31. 31. 汎用データフローマシンの長所 ● プログラムに潜在する並列性がすべて引き出せる(可能 性が大きい) ● データ依存関係で動作するので、プログラムがヘボでもOK – 勝手に、ハードウェアが並列性を引き出す ● マクロな並列と、細粒度な並列のすべてが引き出せる – ある意味、理想的 – 現在のスパコンは、マクロな並列と、ベクトル化(直列なデータ並列) ● 多数(Massive)な演算器があっても、回せる ● Massively Parallel の問題点は、「そんなに並列度が引き出せな いことだ」と言われていた – 現在のスパコンは、64万個のCPUコアなので、並列度は引き出せて るじゃんwww ● でも、マクロな並列性だけだよ
  32. 32. 昔の汎用データフローマシンの短所 ● Eager(早期)に評価するので、無駄な計算をやりがち ● Eagerに評価するので、野放しにすると資源が枯渇す る
  33. 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 両方やっちゃう (^^; 両方やっちゃう (^^;
  34. 34. 昔の汎用データフローマシンの短所 2● Eagerに評価するので、野放しにすると 中間結果(発火待ち)を作りすぎて、資源が枯渇して、 計算が進まなくなってしまう ● マッチング・メモリが足りなくなる ● 適宜、(プログラマに)見えない依存関係を導入して、 制御は可能
  35. 35. データフローマシンは使える 画像処理など、大量のデータが流れる用途では 性能が出る ● 特定機能の演算器をデプス方向(直列)に並べるのは、ありが ち ● サーキュラ・パイプラインにすると柔軟性が出る – 潜在並列性が引き出せる ● 暗号解読に、サーキュラ・パイプラインを使う、とい う新しい文書も出ている The Circular Pipeline: Achieving Higher Throughput in the Search for Bent Functions [Kindle 版] http://www.amazon.co.jp/The­Circular­Pipeline­Achieving­Throughput­ ebook/dp/B007AM56YG/ref=sr_1_1?s=digital­text&ie=UTF8&qid=1398309378&sr=1­ 1&keywords=The+Circular+Pipeline %3A+Achieving+Higher+Throughput+in+the+Search+for+Bent+Functions
  36. 36. データフローマシンと関数型言語 ● if cond then truePart else falsePart の truePart, falsePart のすべてを実行してしまう ● 参照透過性が欲しい = 副作用は嫌い ⇒ Pure functional (純粋関数型)いいじゃん! ● ちなみに、現在の普通の機械の投機実行は、 寸止め(?)で、副作用(write back)を止める ● 並列計算は、一般に、変数に干渉しないと楽(バグが出な い) ● 単一代入 = 変数に代入しない → 干渉しない ⇒ Pure functional いいじゃん! ● なので、1980年代データフローマシンは、純粋関数型大好 き
  37. 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. 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. 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
  40. 40. 40 日本のスパコン大国 地球シミュレータ 東工大 TSUBAME2.0 神戸ペタコン 「京」ちゃん

×