• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Dataflow140711@Kernel/VM北陸1
 

Dataflow140711@Kernel/VM北陸1

on

  • 264 views

 

Statistics

Views

Total Views
264
Views on SlideShare
189
Embed Views
75

Actions

Likes
2
Downloads
3
Comments
0

1 Embed 75

https://twitter.com 73

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Dataflow140711@Kernel/VM北陸1 Dataflow140711@Kernel/VM北陸1 Presentation Transcript

    • 非ノイマン・アーキテクチャ データ駆動計算機 Data Flow Machine とは 2014/JUL/12 たけおか @takeoka AXE, Inc. / たけおかラボ(株)
    • たけおかって誰? 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
    • ノイマン・アーキテクチャ ● 普通の計算機 ● 構成要素 ● PC(プログラム・カウンタ) ● メモリ/レジスタ ● ALU ● PCが指す命令を ● デコード ● オペランド・データ・フェッチ(読み出し) ● 演算 ● 結果書き込み
    • ノイマン・ボトルネック ● 演算器は、たくさん載せられる ● レジスタもたくさんある ● 命令を取ってこれない ● 演算器の個数に対して、 ● 命令語が来ない ↓ ● 演算器が使い倒せない ● (主に)命令フェッチのネックを 「ノイマン・ボトルネック」 という ● 本当は、命令フェッチだけが、ボトルネックではないだが… ● データフローマシンが,ノイマン・ボトルネックを解決 ● 命令フェッチがネックなら、 命令なんか読まなければいいじゃない! (本気 ここが ボトルネック メモリ 命令 & データ
    • 非ノイマン・アーキテクチャ ● アニメのネタじゃないよ ● PC(プログラム・カウンタ)が *無い* ● 明示的なメモリ/レジスタ が *無い* (ピュアなものは) ● i-structure(配列みたいなもの)とかは、あるが ● ALU ● データによって駆動 ● オペランド・データが揃ったら ● 演算する
    • 非ノイマン・アーキテクチャの代表 ● データフローマシン ● 「データ駆動計算機」と呼ぶべき、と言われているが、 昔のことすぎて、「データフローマシン」の方がとおりが良い ● スーパースカラ計算機 ● みんなの x86 の中身もスーパースカラ ● スーパースカラは、データ依存関係で駆動されている – データフローマシンとまったく同じ
    • 並列計算 計算の並列
    • 並列計算の粒度 ● 並行プロセス, スレッド/ 粗粒度 並列 ● 大きい単位で並列に計算 ● スレッド/プロセスの中はシーケンシャル ● 今時のフツーの並列計算機。マルチコア、クラスタ計算機 ● 命令レベル並列/ 細粒度 並列 ● VLIW,SIMD, SuperScalar ● 複数の演算を同時(並列)に実行 ● VLIWは、様々な命令を組み合わせて、同時(並列)に実行可能 ● SIMDは、同一演算を並列に実行 – データ・パラレル ● SuperScalarは、同時実行する演算が、CPU内部で、動的にス ケジュールされる ● データフローマシンは、命令レベル並列に近い
    • データ並列とか ● SIMDは、データ・パラレル ● 命令は一つ。演算は同時に多数 ● GPGPU ● 高速パイプライン – パイプライン方向の並列処理 ● 各ステージが同時に動作 – パイプラインを埋めるには、 規則正しい、データの並びが必須 ● ばらばらなデータでは、パイプは埋まらない ● マルチ・パイプ – 高速パイプラインを複数もつ – 192個~2048個~ ● データフローマシンは、マルチ・パイプだが、 バラバラのデータでも、パイプを埋めることができる レ ジ ス タ フ ァ イ ル ベ ク ト ル レ ジ ス タ
    • 今のアーキテクチャ
    • 普通のアーキテクチャ MIPS http://web.sfc.keio.ac.jp/~rdv/keio/sfc/teaching/architecture/computer-architecture-2013/lec07-cache.html より引用
    • ● レジスタ・ファイル(Registers)を複数持つ ● 各スレッドは、 各レジスタ・ファイルに保持 ● メモリ・アクセスが長時間になる:キャッシュ外れ の時、 レジスタ・ファイルを切り替え、待機していた別スレッドを動かす IR Register File 今のアーキテクチャHyper thread って、なんだっけ? ここが遅いとき 別スレッドを 動かすと ALUが生きる
    • 今のアーキテクチャ Hyper thread ● この発想は、1980年代 中~後期のデータフローマシン 研究の中で出てきた(と言って、過言ではないだろう)
    • 今のアーキテクチャ Super Scalar ● 複数の処理ユニットを、効率的に回す ● ALUが複数個ある ● それを、間断なく回す ● 命令は十分読み込めていなければならない ● 命令キャッシュとのバンド幅が十分 ● CPU内部でμOPにバラすとか ● データ/演算レベルで、動的なスケジューリング ● データ依存関係&実行ユニットの空き で駆動(スケジュール) ● 通常の機械では、 分岐が入るまでの、プログラム・セグメント中で、Out of Order (OoO)処理 ● Reorder Buffer, Reservation Station, Score Boardなどで OoOを実現
    • 今のアーキテクチャ 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をやる
    • データフローマシン データ駆動マシン
    • 非ノイマン・アーキテクチャ ● プログラムは、フローグラフ ● 単一代入 ● 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;
    • FPGAでありがちなデータフロー・アーキテクチャ・マシン ● フローグラフをそのまま、 ハードウェアにマッピング ● 応用ごとに論理(パイプライン)を 生成しなければならない ● パイプラインがちゃんと流れれ ば高速 ● 繰り返しの表現方法が、各機械 の個性 ● + < 22 33 - 12 4 gategate -10001000 True False latch + latch latch - latch latch < latch Const 1000 gate latch latch gate Const -1000
    • 日本はデータフローマシン大国 日本の代表的データフローマシン ● Sigma-1 (1987年) 電総研(現 産総研) ● EM-4 電総研(現 産総研) ● DFM 電電公社(現 NTT) 通研 ● NEDIPS/ImPP(μPD7281) NEC
    • 環状(サーキュラ)パイプライン ● パイプラインの色々 Pease FFT algorithm(もともとのアルゴリズム) Linear Pipeline implementation Circular Pipeline implementation http://asim.csail.mit.edu/redmine/projects/mit6s078/wiki/Lab_FFT より引用
    • 汎用データフローマシン ● 基本はサーキュラ(環状)・パイプライン マッチング メモリ (オペランドの 待ち合わせを 行う) 命令ユニット (データが 処理されるべき 演算を出す) 行き先ユニット (新しい アーク情報を 付ける) 演算 要素ユニット インターコネクト(スイッチネットワーク/バスなど であることが通常) 演算 要素ユニット サーキュラ・パイプラインを持つ、典型的な汎用データフローマシンのブロック図 実行ユニット
    • 汎用データフローマシン ● 基本はサーキュラ(環状)・パイプライン ● データに、アークを示すタグが付いている ● アークを見ると – 対になるデータ (通常、計算機命令は2オペランド) – 適用される命令(演算/関数) が判る ● マッチングメモリで、オペランドが揃うのを待つ ● オペランドが揃うと、「発火可能」 ● 発火可能になると、発火可能キューに入る ● 演算ユニットが空くと、発火可能キューからデータは取り出され ● 対応する演算を行う ● 命令は、データ(中のアーク情報)を見ると分かる ● 演算結果に、新しい行き先(新しいアーク)を付加 ● 元のアークから、新しい行き先が判る ● できたデータを、マッチングメモリに返す
    • 汎用データフローマシン ● データは、パケットに収められている ● パケットには ● 対になるデータの情報 ● 適用される演算/関数 ● 結果の行き先(新しいタグ情報) ● インスタンスを表す情報 – リニア・パイプラインではデータの順序が保存されるので不要 – サーキュラ・パイプラインは演算途中のデータが順不同に混在するの で、インスタンスを判別する必要あり – 通常、「カラー」などと呼ばれる整数を使用する ● ハードウェアでカラーを扱う(比較的少ない資源)ので、カラーは回収が必要
    • 日本の代表的データフローマシン ● 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
    • 日本の代表的データフローマシン ● 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/ ● 坂井先生,児玉先生ほか
    • 日本の代表的データフローマシン ● DFM ● 電電公社(NTT)武蔵野通研 雨宮真人さんたちが作った ● http://jglobal.jst.go.jp/public/20090422/200902077371351099 ● プログラミング言語は、pure functional ● Lisp系(?)言語を動かそうとしていた ● データフローマシンで記号処理を目指す
    • 日本の代表的データフローマシン ● 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 より引用
    • 日本の代表的データフローマシン ● ImPP(μPD7281) ● 図は、http://www.st.rim.or.jp/~nkomatsu/nec/uPD7281.html より引用
    • 日本の代表的データフローマシン ● ImPP(μPD7281) ● 図は、http://www.shmj.or.jp/museum2010/exhibi704.htm より引用
    • 汎用データフローマシン ● 電総研(産総研) 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
    • 汎用データフローマシンの長所 ● プログラムに潜在する並列性がすべて引き出せる(可能性 が大きい) ● データ依存関係で動作するので、プログラムがヘボでもOK – 勝手に、ハードウェアが並列性を引き出す ● マクロな並列と、細粒度な並列のすべてが引き出せる – ある意味、理想的 – 現在のスパコンは、マクロな並列と、ベクトル化(直列なデータ並列) ● 多数(Massive)な演算器があっても、回せる ● Massively Parallel の問題点は、「そんなに並列度が引き出せな いことだ」と言われていた – 現在のスパコンは、64万個のCPUコアなので、並列度は引き出せてる じゃんwww ● でも、マクロな並列性だけだよ
    • 昔の汎用データフローマシンの短所 ● Eager(早期)に評価するので、無駄な計算をやりがち ● Eagerに評価するので、野放しにすると資源が枯渇する
    • 昔の汎用データフローマシンの短所 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 両方やっちゃう (^^; 両方やっちゃう (^^;
    • 昔の汎用データフローマシンの短所2 ● Eagerに評価するので、野放しにすると 中間結果(発火待ち)を作りすぎて、資源が枯渇して、計算 が進まなくなってしまう ● マッチング・メモリが足りなくなる ● 適宜、(プログラマに)見えない依存関係を導入して、制御 は可能
    • データフローマシンは使える 画像処理など、大量のデータが流れる用途では 性能が出る ● 特定機能の演算器をデプス方向(直列)に並べるのは、ありがち ● サーキュラ・パイプラインにすると柔軟性が出る – 潜在並列性が引き出せる ● 暗号解読に、サーキュラ・パイプラインを使う、という新し い文書も出ている 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
    • データフローマシンと関数型言語 ● if cond then truePart else falsePart の truePart, falsePart のすべてを実行してしまう ● 参照透過性が欲しい = 副作用は嫌い ⇒ Pure functional (純粋関数型)いいじゃん! ● ちなみに、現在の普通の機械の投機実行は、 寸止め(?)で、副作用(write back)を止める ● 並列計算は、一般に、変数に干渉しないと楽(バグが出ない) ● 単一代入 = 変数に代入しない → 干渉しない ⇒ Pure functional いいじゃん! ● なので、1980年代データフローマシンは、純粋関数型大好き
    • 教科書 ● データフローマシンと言語 ● 曽和 将容 ● 様々な機械のサーベイができてる。 ● 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
    • 教科書 ● データ・フロー・コンピューティング ● 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
    • 教科書 ● データ駆動型並列計算機 ● 弓場 敏嗣 , 山口 喜教(著) この人たちは、電総研(現産総研)で、データフローマシンを作ってた人たち。 ● 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 日本はスパコン大国 地球シミュレータ 東工大TSUBAME2.0 神戸ペタコン「京」ちゃん