CSPの紹介

Similar documents
TopSE並行システム はじめに

CONPASU-tool

形式手法に基づく CONPASU 並行処理可視化ツールの紹介 ~CSP モデルベース開発のすすめ ~ 磯部祥尚 * 1, 大岩寛 * 1, 高橋孝一 * 1, 田中純 * 2 産業技術総合研究所 * 1 セキュアシステム研究部門, * 2 イノベーション推進本部 ET2012 展示会場内 IPA 出

背景 並行システム : 協調する複数の処理 ( プロセス ) から構成されるシステム 並行システムの例 ( 昇降舵のフライバイワイヤ ) 操縦桿 x2 角度 x3x2 ジャイロ x3 重量計 x4 フラップ LVDT IRU WOW FSACE PB 優先ボタン x2 MON モニタ COM コマン

CSP研究会 プロセス代数の基本と関連ツールの紹介

Microsoft PowerPoint - sakurada3.pptx

はじめに : ご提案のポイント

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

出 アーキテクチャ 誰が 出 装置を制御するのか 1


Łñ“’‘‚2004

プリント

CSP Kick-Off 6th/Mar/2009 CSP -(1) Kazuto MATSUI

dy + P (x)y = Q(x) (1) dx dy dx = P (x)y + Q(x) P (x), Q(x) dy y dx Q(x) 0 homogeneous dy dx = P (x)y 1 y dy = P (x) dx log y = P (x) dx + C y = C exp

1. A/D 入力について分解能 12bit の A/D コンバータ入力です A/D 入力電圧とディジタル値との対応は理論上 入力電圧 0V : 0 入力電圧 +3V : 4095 です 実際はオフセットと傾きがあり ぴったりこの数値にはなりません 2. A/D 入力に使用する信号 STM32L_A

目次 ペトリネットの概要 適用事例

CMOS リニアイメージセンサ用駆動回路 C CMOS リニアイメージセンサ S 等用 C は当社製 CMOSリニアイメージセンサ S 等用に開発された駆動回路です USB 2.0インターフェースを用いて C と PCを接続

7 ソフトウェア工学 Software Engineering モデル検査 MODEL CHECKING 1 モデル検査の概要 並行システム : 相互排他, デッドロック, スタベーションなどの現象 入出力関係に着目した 停止性 + 部分正当性 のみでは正当性を言えない 振る舞い ( 途中の状態遷移

memcached 方式 (No Replication) 認証情報は ログインした tomcat と設定された各 memcached サーバーに認証情報を分割し振り分けて保管する memcached の方系がダウンした場合は ログインしたことのあるサーバーへのアクセスでは tomcat に認証情報

Using VectorCAST/C++ with Test Driven Development

ERDAS IMAGINE における処理速度の向上 株式会社ベストシステムズ PASCO CORPORATION 2015

並列計算導入.pptx

OS

計算機アーキテクチャ

fukunagaCSP14th.pptx

智美塾 ゆもつよメソッドのアーキテクチャ

NUMAの構成

untitled

製品開発の現場では 各種のセンサーや測定環境を利用したデータ解析が行われ シミュレーションや動作検証等に役立てられています しかし 日々収集されるデータ量は増加し 解析も複雑化しており データ解析の負荷は徐々に重くなっています 例えば自動車の車両計測データを解析する場合 取得したデータをそのまま解析

Microsoft PowerPoint - 01_Vengineer.ppt

プログラミング基礎

吉田坂本.pptx

目次 研究目的 背景システム開発について実験および評価結論

<4D F736F F F696E74202D C190DD B A CB48D65208E DC58F49205B8CDD8AB B83685D>

Apache Arrow 須藤功平株式会社クリアコード RubyData Tokyo Meetup Apache Arrow Powered by Rabbit 2.2.2

ジョブ管理ソフトウェア LoadStar Scheduler ご紹介資料 ~ システム運用品質の向上とコスト削減を実現 ~

ビッグデータ分析を高速化する 分散処理技術を開発 日本電気株式会社

An introduction and future of Ruby coverage library

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

FUJITSU Cloud Service K5 認証サービス サービス仕様書

MultiLABELISTOCX と MultiLABELISTV4 MLOCX は MLV4 のレイアウト発行機能を継承しています したがって MLV4 の振分発行やプ リセット発行を使用するための登録情報は使用できません MLV4 のレイアウト管理でレイアウトを作成すると 拡張子が m lay

言語プロセッサ2005

Linkexpress トラブル初期調査資料 採取コマンド使用手引書

電気的特性 (Ta=25 C) 項目 記号 条件 Min. Typ. Max. 単位 読み出し周波数 * 3 fop khz ラインレート * Hz 変換ゲイン Gc ゲイン =2-5 - e-/adu トリガ出力電圧 Highレベル Vdd V -

TRAVENTY CG V 動作検証報告書

PowePoint Free Design Template

PowerPoint プレゼンテーション

高合格率目標達成のためのノウハウを満載! 情報処理試験合格へのパスポートシリーズ ポイント 1 他社テキストにはない重要用語の穴埋め方式 流れ図の穴埋めを採用している他社テキストはあるが, シリーズとして重要用語の穴埋めの採 用 ( 問題集は除く ) はパスポートシリーズだけです なぜ, 重要用語の

POSIXスレッド

スクールCOBOL2002

TOPPERS 活用アイデア アプリケーション開発 コンテスト 部門 : 活用アイデア部門アプリケーション開発部門 作品のタイトル : Toppers_JSP と Scicos_lab / (Scilab でも可 ) による 組込みメカトロニクス制御シミュレーション 作成者 : 塩出武 ( シオデタ

untitled

untitled


AN424 Modbus/TCP クイックスタートガイド CIE-H14

020204.入出力制御割込解説

システム操作インターフェイス最適化によるテスト自動化ROI向上

Microsoft Word - N-TM307取扱説明書.doc

改訂履歴 改訂日付 改訂内容 2014/11/01 初版発行 2017/01/16 Studuino web サイトリニューアルに伴う改訂 2017/04/14 Studuino web サイトリニューアルに伴うアクセス方法の説明変更 2018/01/22 Mac 版インストール手順変更に伴う改訂

Microsoft PowerPoint - OS04.pptx

課題情報シート テーマ名 : 動画中継ラジコンカーの製作 担当指導員名 : 土山博剛実施年度 : 25 年度施設名 : 四国職業能力開発大学校課程名 : 専門課程訓練科名 : 電子情報技術科課題の区分 : 総合制作実習課題学生数 : 1 時間 : 12 単位 (216h) 課題制作 開発のポイント

FUJITSU Cloud Service for OSS 認証サービス サービス仕様書

WebReportCafe

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

目次 1. PDF 変換サービスの設定について )Internet Explorer をご利用の場合 )Microsoft Edge をご利用の場合 )Google Chrome をご利用の場合 )Mozilla Firefox をご利

ユーザーズマニュアル 有線ネットワークシステム 発行日 2016 年 3 月 30 日

TFTP serverの実装

Microsoft PowerPoint - OpenMP入門.pptx

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

ご利用の前に RS_Base 専用簡易 DICOM データレシーバRS_Receiver ( 以後 RS_Receiver と表示 ) はCR 等のモダリティから送信されたDICOM データを受信し RS_Base で利用可能なDICOM ファイル JPEG ファイル AVI ファイルを生成 保存す

JaSST'16 Tokai 特別講演

RTM セミナー RT ミドルウェアによる実時間ロボット 制御系の構築とソフトウェア教育 静岡大学大学院工学研究科機械工学専攻 清水昌幸

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

橡00horse.PDF


FX ) 2

FX自己アフリエイトマニュアル

Microsoft PowerPoint - sp ppt [互換モード]

3. 回路図面の作図 回路図の作成では 部品など回路要素の図記号を配置し 要素どうしを配線するが それぞれの配線には 線番 などの電気的な情報が存在する 配線も単なる線ではなく 信号の入力や出力など部品どうしを結び付ける接続情報をもたせることで回路としての意味をもつ このように回路図を構成する図面は

1. はじめに (1) 本書の位置づけ 本書ではベジフルネット Ver4 の導入に関連した次の事項について記載する ベジフルネット Ver4 で改善された機能について 新機能の操作に関する概要説明 ベジフルネット Ver4 プログラムのインストールについて Ver4 のインストール手順についての説明

リソース制約下における組込みソフトウェアの性能検証および最適化方法

Windows Hosting Suite スタートアップマニュアル このガイドでは 以下のメニューについて説明しています 1. お名前.com プレミアサーバー Windows プラン管理画面 CONTROL PANEL ログイン方法 2. ウェブコンテンツのアップロード方法 3. メールボックス

在宅せりシステム導入マニュアル


NCB564個別00版

アルカリイオン水ではじめよう


Microsoft Word - r0703.doc

HDC-EDI Base Web/deTradeII送受信機能起動時におけるJava8のセキュリティ警告とその回避策について

CommCheckerManual_Ver.1.0_.doc

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

プログラミングA

9BBH3A8_P0000

Viewgo波形の連続格納ソフト

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

1013  動的解析によるBOTコマンドの自動抽出

マニュアル訂正連絡票

ホンダにおける RT ミドルウェア開発と標準化活動 株式会社本田技術研究所基礎技術研究センター関谷眞

組込みシステムにおける UMLモデルカタログの実践研究

スイッチ ファブリック

Transcription:

CSP モデルの優位性 産業技術総合研究所情報技術研究部門磯部祥尚 0:40 第 9 回 CSP 研究会 (2012 年 3 月 17 日 ) 1

講演内容 1. CSPモデルの特徴 CSPモデルとは? 同期型メッセージパッシング通信 イベント駆動 通信相手 ( チャネル ) の自動選択 3. CSPモデルの検証 CSPモデルの記述例 検証ツール 振舞いの等しさ 2. CSPモデルの実装 ライブラリ / 言語 CSPモデルの実装例 ローカル / ネットワークチャネル 4. CSPモデルベース開発 並列プログラミングの難しさ CSPによるモデル化 検証 実装 まとめ 理論 CSP 検証 FDR 実装 JCSP 1:20 2

CSP モデルの特徴 CSPモデルとは? 同期型メッセージパッシング通信 イベント駆動 通信相手 ( チャネル ) の自動選択 1:20 3

CSP モデルとは? CSP モデル : 並行システムを表現する方法のひとつ 並行システムの構造 ( チャネルの接続関係 ) を表現できる 各プロセスの動作 ( 入出力 計算の順序関係 ) を表現できる 各プロセスの動作 並行システムの構造 com1 out1 in?x in s1 s2 out1!x out2!x com2 P3 out2 例 : 6 コア CPU Core i7-980x 2:10 4

CSP モデルの特徴 ( 同期型メッセージパッシング通信 ) CSP モデルはチャネルを用いた同期型メッセージパッシング通信方式を採用 確実に情報が相手に伝わる ( 動作がわかりやすい ) 共有メモリ通信よりも処理が重い 同期型メッセージパッシング通信 共有メモリ通信 com. AM 8:00 共有メモリ AM 8:00 x = AM 8:00 伝言板 AM 8:00 話したメッセージは確実に伝わる ( 不在ならば話せない ) 書いたメッセージが伝わるか不安 ( 読み書きのタイミングが難しい ) 3:40 5

CSP モデルの特徴 ( イベント駆動 ) CSP モデルはイベント駆動を採用 同期型メッセージパッシング通信 + イベント駆動 : 待ちの間の CPU 負荷はかからない 共有メモリ + ポーリング : 定期的に書込みの有無をチェックするため CPU 負荷がかかる イベント駆動 ポーリング com 共有メモリ zzz x = 伝言板 電話が鳴るまでは眠っていてよい 書込みの有無を定期的にチェック ( 何もしないのに忙しい ) 5:00 6

CSP モデルの特徴 ( 通信相手の自動選択 ) CSP モデルは通信可能な相手を自動的に選択して通信可能 P 119 119 P3 受信可能なプロセスを選択して送信する ( 全てが受信不可のときは ひとつが受信可能になるまで送信を延期 ) 代表電話 ( 手の空いている人が受ける ) 6:00 7

CSP モデルの特徴 ( 通信チャネルの自動選択 ) CSP モデルは通信可能なチャネルを自動的に選択 ( 外部選択 ) して通信可能 45892 45892 山田 P 46031 46031 佐藤 受信可能なプロセスが接続されているチャネルを選択して送信する 2 人に同時に電話をかけて出た方とだけ会話する ( このような電話はない?) 7:00 8

CSP モデルの実装 ライブラリ / 言語 実装例 ローカル / ネットワークチャネル 7:00 9

CSP モデルを実装するためのライブラリ / 言語 CSPモデルを実装するためのライブラリやプログラミング言語が公開されている ライブラリ 言語 研究開発元 JCSP Java ケント大学 (QuickStone) C++CSP C++ ケント大学 CHP Haskell ケント大学 PyCSP Python トロムソ大学 & コペンハーゲン大学 Python-CSP Python ウォルバーハンプトン大学 Go 言語 : 2009 年秋にGoogleが発表したプログラミング言語 コンパイル言語のように速く スクリプト言語のように使い易い CSPに基づく並列処理記述が言語レベルで可能 XMOS : 2008 年から XMOS 社が販売しているプロセッサ イベント駆動型マルチスレッドプロセッサ (XS1-G4, 4コア, 32スレッド ) CSPに基づくC 言語風の実装言語 XCによるハードウェア実装 8:40 10

CSP モデルの JCSP(Java) による実装例 Sender, Gate, Receiver から構成される並行システム Gate は Sender のデータを Receiver に転送する 転送の中断と再開を外部から制御できる Gate は input と cntl から通信可能なチャネルを選択して受信する Sender input cntl Sender output Gate disp Receiver start stop 20 秒ごとに転送の中断と再開を繰り返すと CPU 負荷は下記のようになる 20 秒 転送を中断中の CPU 負荷は 0 10:30, 11:30 11

ローカルチャネルとネットワークチャネル JCSP(Java) では複数のプロセスを複数の PC で分散実行することも簡単 ローカルチャネル :1 つのプログラム内の複数のプロセスを接続する ネットワークチャネル : 異なるプログラム (PC) 間の複数のプロセスを接続する net1 net2 R1 Q1 Q2 S1 S2 Q3 ローカルチャネルをネットワークチャネルに置き換えるだけで分散化が可能 12:40 12

CSP モデルの検証 CSP モデルの例 検証ツール 振舞いの等しさ 12:40 13

並行システムの CSP モデルの例 CSP では並行システムの構造や動作を 式 で表現する 動作 動作 動作 = in1?x com1! f(x) STOP = in2?x com2! g(x) STOP P3 = com1?x com2?y P (x,y) com2?y com1?x P (x,y) P (x,y) = out! h(x,y) STOP CSP モデル com1?x com2?y 動作 P3 com2?y com1?x P out! h(x,y) 構造 SYS = (( ) [ Com ] P3) \Com 動作 in1?x com1! f(x) 動作 in2?x com2! g(x) in1 in2 com1 com2 構造 P3 SYS out 14:20 Com = { com1, com2 } 14

CSP モデルの検証 CSP では並行システムの動作の等しさを証明できる in1 in2 com1 com2 P3 SYS out in1 in2 SPEC out = in1?x com1! f(x) STOP = in2?x com2! g(x) STOP P3 = com1?x com2?y P (x,y) com2?y com1?x P (x,y) P (x,y) = out! h(x,y) STOP 並行 SYS = (( ) [ Com ] P3) \Com 逐次 SPEC = in1?x in2?y Q(x,y) in2?y in1?x Q(x,y) Q(x,y) = out! h(f(x),g(y)) STOP この例では 下記の等しさを証明できる SYS = SPEC 16:00 15

CSP ベースのモデル検査ツール FDR(Oxford 大学 ) モデル検査ツール FDR を使うと SYS と SPEC の等しさ ( 詳細化関係 ) を自動判定できる = in1?x com1! f(x) STOP = in2?x com2! g(x) STOP 並行 P3 = com1?x com2?y P (x,y) com2?y com1?x P (x,y) P (x,y) = out! h(x,y) STOP SYS = (( ) [ Com ] P3) \Com 入力 SYS = SPEC? FDR 出力 True SPEC = in1?x in2?y Q(x,y) in2?y in1?x Q(x,y) Q(x,y) = out! h(f(x),g(y)) STOP 逐次 assert SYS = SPEC ( 検証項目 ) PAT 16::30 ( シンガポール大学のモデル検査ツール ) 16

CSP ベースの解析ツール CONPASU( 産総研 ) 解析ツール CONPASU を使うと SYS から SPEC ( に近い記述 ) を自動生成できる = in1?x com1! f(x) STOP = in2?x com2! g(x) STOP P3 = com1?x com2?y P (x,y) com2?y com1?x P (x,y) P (x,y) = out! h(x,y) STOP 並行 SYS = (( ) [ Com ] P3) \Com 入力 CONPASU SPEC = in1?x in2?y Q(x,y) in2?y in1?x Q(x,y) Q(x,y) = out! h(f(x),g(y)) STOP 逐次 出力 SYS = SPEC を保証 SYS の記述は比較的機械的に作成できるが SPEC の記述は意外と難しい 17:30 17

CSP モデルの等しさの特徴 CSP の等しさは決定的選択と非決定的選択を区別できる コインを入れた後に 珈琲か紅茶を購入できる自動販売機 珈琲 紅茶 購入者が選ぶ 紅茶決定的 tea VMD coffee coin VMD 珈琲 紅茶 販売機が選ぶ 残念 紅茶が良かった tea coin VMND1 VMND 非決定的 coin VMND2 coffee CSP では VMD VMND ( 注 : 実行トレースだけでは区別できない ) 19:00 18

CSP モデルの等しさの保存 CSP の等しさは合成後も保存される ( 部品単位での検証が可能 ) SEQ = SYS (SEQ [Out] SYS)\Out = (SYS [Out] SYS)\Out in1 in2 P SEQ out = in1 in2 SYS com1 P3 com2 out in1 in2 P SEQ out SYS2 out2 = in1 in2 SYS com1 P3 com2 out SYS2 out2 20:10 19

CSP モデルベース開発 並列プログラミングの難しさ CSP によるモデル化 検証 実装 まとめ 20:10 20

並列プログラミングの難しさ マルチコアシステムでの Java 並行性バグのパターン のウェブサイト (2010.12.21): http://www.ibm.com/developerworks/jp/java/library/j-concurrencybugpatterns/ Java 並行プログラミングにおける間違えやすい様々なバグのパターンとその回避策が紹介されている そのようなプログラムをモデル化して検査することは可能であるが 根本的なところに難しさがある CSP ベースの言語 / ライブラリを使うことで振舞いが明確になり このようなバグも抑えられる また 検証ツールも使える 22:00 21

CSP モデルの検証と実装 並行システムを CSP でモデル化し FDR で検証し JCSP で実装する 理論 CSP 検証 FDR 実装 JCSP Communicating Sequential Processes, Hoare, 1985 プロセス代数 CSP: 並行システムを記述 解析するための理論 モデル検査器 FDR: CSP モデルの詳細化関係を検証するツール Oxford 大学 Formal Systems ( アカデミックライセンスは無料 ) Java ライブラリ JCSP: CSP モデルを Java で実装するためのライブラリ Kent 大学 (2006 年秋からオープンソース ) 23:00 22

モデル化 検証 実装の流れ 並行システムを CSP でモデル化し FDR で検証し JCSP で実装する 逐次システムや仕様 モデル化 CSP モデル SRseq(K) = SendRec(0,0,0,K) SendRec(n,m,i,K) = i<k & disp!send.n SendRec((n+1)%N,m,i+1,K) i>0 & disp!receive.m SendRec(n,(m+1)%N,i-1,K) 検証 FDR スクリプト 並行システム逐次システム検証項目 実行 FDR 並行システムや仕様 モデル化 CSP モデル SRconc = (Sender(0) [ { chan } ] Receiver(0))\{ chan } Sender(n) = disp!send.n Sender'(n) Sender (n) = chan!n Sender((n+1)%N) Receiver(m) = chan?m Receiver'(m) Receiver (m) = disp!receive.m Receiver(m) 実装 JCSP プログラム プロセスの並行 Senderの動作 Receiverの動作 実行 Java 24:00 23

まとめ 並行システムの開発に CSP モデルを利用するありがたみ 設計の視点 設計コストを削減できる 同期チャネルによる通信 ( 例 : タイミング制御が容易 ) 通信相手 ( チャネル ) の自動選択 ( 例 : 複数の入出力処理が容易 ) Sensor1 Sensor2 s1 s2 in1 in2 P out Motor 検証の視点 実装前に不具合を発見できる モデル検査器 FDR, PAT による不具合発見 解析ツールCONAPSU( 開発中 ) による並行動作の可視化 実装の視点 CSP モデルを実装できる CSPモデルベースの言語 / ライブラリ (JCSP, Go, ) による実装 イベント駆動によるCPU 負荷の削減 25:00 24