これまで,シナリオで定義された順序制約ψ を充足するようにコマンドのLTSを合成 して離散時間の動作仕様(ACPdrtのプロセス)として実装する手段として,∇演算結果の LTSをリソースや性能を加味して1つのプロセスとして決定化する方法と,複数プロセス を保持したままプロセス間の通信チャネルとチャネルに対する読み書きプロトコルの挿入
(InsertBrW)により実現する方法の2種類があることがわかった.
この節ではシナリオ合成において,これらの2つの手段を組み合わせて,シナリオ・コ マンドから適切な合成結果を得る手順を示す.
シナリオ合成(Synteisis(SC, CM D, M C))は以下の手順で実現される.
1. シナリオ図から制約ψの集合SC(ψシステムと呼ぶ)を得る
2. SC(ψシステム)を,∇演算で結合されたコマンドcmd∈CM Dからなる式(∇シス テムと呼ぶ)を得る
3. ∇演算に従い,1)2つのLTSを1つに合成するあるいは,2)プロトコル挿入 (Insert-BrW)を順次行う.
4. ∇演算の適用が全て行われたとき,結果として得られたコマンドのLTSの集合がシ ナリオ合成の結果となる.各々のLTSが,HWのモジュール(VHDLならentity)に 対応する.
ψシステムから∇システムを得るアルゴリズムを以下では述べる.
シナリオSC =hP S, RH, RViに対して,個々のプロセスに適宜∇演算を適用して合成 結果である∇システムを得る以下の手順に従う.ここでは3.7.1節における∇演算の交換 可能性の説明で用いた書換え規則をつかって,任意のシナリオが∇システムに書き換えら れるることを示す.
RをRHあるいはRVとし,i,jを制約を区別する番号であるとすると,書き換え規則は,
以下のように書ける.
¶ ³
-[書換規則 ]---PS={X,Y,Z}
R={(X,Y,i),(Y,Z,j)}
↓
PS={▽i(X|Y),Z}
R={(▽i(X|Y),Z,j)}
---µ ´
例えば,図3.6の例では,
シナリオは SCabcd = hP S, RH, RViと表される.ここでP S = {A, B, C, D}, RH = {(A, B),(C, D)}, RV ={< B, C >}である.
ステップ1 :書き換え規則を用いた∇演算の適用
シナリオSCabcdに順次書き換え規則を適用すると例えば以下の書き換えシーケンス が得られる.
---PS={A,B,C,D}
RH={(A,B,1),(C,D,3)}
RV={<B,C,2>}
↓
PS={▽1(A|B),C,D}
RH={(C,D,3)}
RV={<▽1(A|B),C,2>}
↓
PS={▽2(▽1(A|B)|C),D}
RH={(▽2(▽1(A|B)|C),D,3)}
RV={}
↓
PS={▽3(▽2(▽1(A|B)|C)|D)}
RH={}
RV={}
---書換は停止し,以下の∇システムを得る.
∇sc1(A, B, C, D) =∇3(∇2(∇1(A|B)|C)|D)
書換は一意ではなく,Rから取り出す関係の順番の組合せにより,同様の計算を繰り 返して,結果として以下のヴァリエーションを得る.
• ∇3(∇2(∇1(A|B)|C)|D)
• ∇1(A| ∇3(∇2(B|C)|D))
• ∇1(A| ∇2(B | ∇3(C|D)))
• ∇3(∇1(A| ∇2(B|C)))|D)
これらは,交換可能であるという意味で等しい(=).
ステップ2 :合成
一旦∇システムが得られたら,これに従い(ステップ2a):2つのLTSを1つに合成す るあるいは,(ステップ2b):プロトコル挿入(InsertBrW)を順次行う.2つのLTSを 1つにまとめることを以下では畳み込むと表現する.
ステップ2a :畳み込みによる合成
例えば図5.1では,先にA, Bを1つに畳み込み,次にCを続けて畳み込む例(Scenario1
→Scenario1B→Scenario1C)と,先にB, Cを1つに畳み込み,続けてAを畳み込 む例(Scenario1→Scenario1A→Scenario1C)が合流することを示している.前者は
∇3(∇2(∇1(A|B)|C)|D)に,後者は∇1(A| ∇3(∇2(B |C)|D))に相当する.
図 5.1: シナリオ畳み込み
どの畳み込みを選択するか,どこまで畳み込みを行い,どこからInsertBrWによる プロトコル挿入を行うかは,実装したときの性能や面積等の非機能要件の評価結果 を用いる.
以上のように,シナリオ定義,コマンド定義から合成手順に従って実装であるLTSのシ ステムを得る手順が明らかになった.
第 6 章
全システムの統合
シナリオマージとは,複数のシナリオ合成の結果を,1つのシステムとしてまとめる操 作である.最初は最大並列に動作する状態遷移機械群としてマージされ,性能やリソース 制約を考慮して,適切なコマンド活性体(状態遷移機械)を選択して逐次合併することで,
システムを最適化する.ここでは,プロセス代数にてマージ操作とマージ操作によっても 元々のシナリオ動作が保持されることを説明する.