240 likes | 330 Views
線形計画法に基づく逐次化を利用したシステムレベル設計での動作並列化前後での等価性検証手法. 松本 剛史 (1) , Thanyapat Sakunkonchak (1) , 齋藤 寛 (2) , 小松 聡 (1) , 藤田 昌宏 (1) (1) 東京大学 , (2) 会津大学. 発表内容. 研究の背景と目的 既存検証技術の紹介 線形計画法ソルバーを利用した逐次化 実験結果 まとめと今後の課題. 発表内容. 研究の背景と目的 既存検証技術の紹介 線形計画法ソルバーを利用した逐次化 実験結果 まとめと今後の課題. システムレベル設計における等価性検証.
E N D
線形計画法に基づく逐次化を利用したシステムレベル設計での動作並列化前後での等価性検証手法線形計画法に基づく逐次化を利用したシステムレベル設計での動作並列化前後での等価性検証手法 松本 剛史(1), Thanyapat Sakunkonchak(1), 齋藤 寛(2), 小松 聡(1), 藤田 昌宏(1) (1) 東京大学, (2) 会津大学
発表内容 • 研究の背景と目的 • 既存検証技術の紹介 • 線形計画法ソルバーを利用した逐次化 • 実験結果 • まとめと今後の課題
発表内容 • 研究の背景と目的 • 既存検証技術の紹介 • 線形計画法ソルバーを利用した逐次化 • 実験結果 • まとめと今後の課題
システムレベル設計における等価性検証 • システムレベル設計 • 仕様からアーキテクチャ決定までの設計を行う • 利点 • 柔軟なHW/SW分割 • 高速なシミュレーション • 少ない記述量 • Cベース設計言語が使われることが多い • 動作の並列化やスケジューリング変更を伴う • アーキテクチャ変更などの際に • システムレベル設計における等価性検証 • 動作の等価性を保ったまま変更する場合が多い • 並列化・スケジューリング変更が典型的な例
本研究の目的 • 並列化・スケジューリング前後での等価性検証手法の提案・評価 • 記述言語はSpecCを対象とする • 研究の特徴 • 既存のプロパティ検証フレームワークを応用して、並列動作を逐次化 • 依存関係に基づくプロパティ検証により、逐次化可能であることを保証する • 検証エンジンとしてILPソルバーを用いる • 逐次化された設計間で形式的等価性検証を行う • 記号シミュレーションによる
SpecC言語における並列・同期 • 並列: par 構文で表現 • 同期: notify/wait 構文で表現 A.main st1 main() { x = 0; //st0 par { A.main(); B.main(); }}behavior A { main() {wait(e); a = x + 10; //st1 }}behavior B { main() { x = 20; //st2notify(e); }} st0 B.main st2 Time st2 is always executed followed by st1 Tstart_A = Tstart_B, Tend_A = Tend_B (parより)Tstart_A <= Twait <= Tstart_st1 < Tend_st1 <= Tend_ATstart_B <= Tstart_st2 < Tend_st2 <= Tnotify <= Tend_B Tnotify < Twait
関連研究 • FSMDモデル上での検証 [3,4,5] • FSMD中のパスごとに検証 パス数が増加するため、規模が大きい設計は検証できない • 高位合成ツールの情報によって対応付け [5] • 変数名によって対応付け [3] • 本研究では、大規模設計における並列化・スケジューリングの検証を目指す • 規則に基づく検証 [2] • 事前に定義して等価な変換モデルに該当するかどうかを調べる • 関数単位での並列化・スケジューリングが対象 • 関数内部の変更は対象としない • 本研究では、並列化・スケジューリングに伴う関数内部の変更も検証できる
発表内容 • 研究の背景と目的 • 既存検証技術の紹介 • 線形計画法ソルバーを利用した逐次化 • 実験結果 • まとめと今後の課題
ILPソルバーを利用した同期検証 [6] • 対象 • 並列・同期を含むシステムレベル設計 • 手法 (概要) • 1. 各 statement が実行される時刻が満たす条件式を設計記述から作成 • 2. 検証するプロパティを実行時刻の等式・不等式で表現 • デッドロックの場合、Twait < Tnotify • 3. プロパティを満たす代入値があるかをILPソルバーによって求める • CEGAR (Counter-Example Guided Abstraction Refinement) を採用しており、1-3 を繰り返す
同期検証の流れ behavior A (…) { void main() { y = x – 1; notify e; if(x==10) z=1; }} behavior A (…) { void main() { … notify e; if(c0) … }} Abstraction Original SpecC Boolean SpecC (Abstracted) Refinement ofabstraction No Synch.property Extract equalities/inequalitiesand solve them by ILP solver Is the trace feasible? Fail with a trace Yes Pass Synch. error is found No synch. error
記号シミュレーションによる等価性検証 [7] • 逐次動作記述に対する等価性検証手法 • 本研究では、逐次化された設計記述間での等価性検証に利用 • 手法 (概要) • 設計記述を記号的に実行する • 代入文などから得られる等価関係をEquivalence Class としてまとめていく • 入力を等価と仮定して記号シミュレーションを行い、出力が等価であるかどうかを調べる
発表内容 • 研究の背景と目的 • 既存検証技術の紹介 • 線形計画法ソルバーを利用した逐次化 • 実験結果 • まとめと今後の課題
全体の流れ System-levelDesign 1 System-levelDesign 2 Fail Synchronization check Sync. Error (i.e. deadlock) Pass Fail Sequentialization Error Pass SequentialDesign 1 SequentialDesign 2 Equivalence checking Result: Eqv. or Ineqv.
逐次化可能な場合 • 逐次化可能な並列動作の条件 • 条件1: デッドロックがない • 既存手法で検証可能 • 条件2: 任意の実行順序に対して、等価な実行結果が得られる • SpecC言語では、ある時点で、1つの statement だけが評価・実行されることになっている • 条件2を調べる手法 • 依存関係のある statement 間で実行順序が常に同じであるか、を調べる • 実行順序が異なっても結果が等価になる場合は、本研究では対象としない • 依存関係がなければ、並列動作間の実行順序に制約はない
プロパティの導出 (1) • 依存関係のある statement 間で実行順序が常に同じであるか? • 依存関係のある2つの statement st1, st2 が • P1: T(st1) > T(st2)⇒「st1 は必ず st2 の後に実行される」 • P2: T(st1) < T(st2)⇒「st2 は必ず st1 の後に実行される」
プロパティの導出 (2) • 検証結果による場合分け • P1: T(st1) > T(st2) • P2: T(st1) < T(st2) • 実際の検証はベーシックブロックを単位として行う • ここでは、par/wait/notify/条件分岐 を含まない一連の statement をベーシックブロックとする 逐次化 可能
逐次化の例 • 依存関係があり、並列動作するBB • BB1, BB3 … 検証結果: BB1 BB3 • BB2, BB3 … 検証結果: BB3 BB2 c1 = a1 + b1; c2 = a2 + b2; d1 = c1 * c2; if(d1 != 0) d2 = (c2-c1)/d1; else ERROR(); BB1 c1 = a1 + b1; c2 = a2 + b2; notify e1; wait e2; d2 = (c2-c1)/d1; wait e1; d1 = c1 * c2; if(d1 != 0) notify e2; else ERROR(); BB3 逐次化 BB2 BB4
発表内容 • 研究の背景と目的 • 既存検証技術の紹介 • 線形計画法ソルバーを利用した逐次化 • 実験結果 • まとめと今後の課題
例題 • IDCT • IDCT1: 逐次実行 • IDCT2: 行計算・列計算を2並列で実行 • IDCT3: 行計算・列計算を8並列で実行 • IDCT4: 行計算・列計算内での並列実行を導入 • Vocoder • VocSpec: 仕様。全動作を1つのHWで実現することを想定 • VocArch: 動作の一部をDSPに割り当てたもの • VocSched: 各PEでスケジューリングを決定したもの • MP3 Decoder • MP3DEC1: SWと1つの追加HW • MP3DEC2: 負荷の大きいDCT計算に2つの追加モジュールを割り当てたもの
例題規模と実験環境 • 例題規模 • 例題は全てSpecC言語で記述 • 実験環境 • CPU 3.2GHz、メモリ 4GB のPCで実行 • 依存関係の解析: GrammaTech 社の CodeSurfer を利用 • ILPソルバー: ILOG 社の CPLEX を使用
実験結果 (逐次化) • ILPソルバーを用いた逐次化 • Vocoder, MP3 ではデッドロックを検出 • バグ修正して、実験を続行 • ILPベースの検証が不要な場合も多い • 依存関係のない部分のみで並列化が行われた場合 • ただし、依存関係がないことは依存グラフ上で調べている • ILP実行時間は非常に短時間
実験結果 (等価性検証) • 記号シミュレーションによる等価性検証 • 逐次化後に差異のあるビヘイビア(関数)に対してのみ実行 • いずれも0.1秒以内で等価性を検証できた • 全体を記号シミュレーションにより検証することは現実的に不可能
発表内容 • 研究の背景と目的 • 既存検証技術の紹介 • 線形計画法ソルバーを利用した逐次化 • 実験結果 • まとめと今後の課題
まとめと今後の課題 • まとめ • 並列化・スケジューリング前後での等価性検証手法を提案 • ILPベースのプロパティ検証を利用して、逐次化を行う • 実例題を用いた実験で検証ができることを確認 • 今後の課題 • 一意に逐次化できない場合の検証手法 • 並列化・スケジューリングの間違いである場合が多いが • 高位合成前後における等価性検証への応用 • スケジューリング以外の変更・詳細化に対応する必要