特許第6086420号(P6086420)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 国立大学法人 東京大学の特許一覧

特許6086420設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法
<>
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000004
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000005
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000006
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000007
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000008
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000009
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000010
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000011
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000012
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000013
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000014
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000015
  • 特許6086420-設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法 図000016
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6086420
(24)【登録日】2017年2月10日
(45)【発行日】2017年3月1日
(54)【発明の名称】設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法
(51)【国際特許分類】
   G06F 17/50 20060101AFI20170220BHJP
【FI】
   G06F17/50 664G
【請求項の数】5
【全頁数】21
(21)【出願番号】特願2012-184662(P2012-184662)
(22)【出願日】2012年8月23日
(65)【公開番号】特開2014-41571(P2014-41571A)
(43)【公開日】2014年3月6日
【審査請求日】2015年8月19日
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成23年度、独立行政法人科学技術振興機構、戦略的創造研究推進事業チーム型研究(CREST)・ディペンダブルVLSIシステムの基盤技術、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504137912
【氏名又は名称】国立大学法人 東京大学
(74)【代理人】
【識別番号】100137800
【弁理士】
【氏名又は名称】吉田 正義
(74)【代理人】
【識別番号】100148253
【弁理士】
【氏名又は名称】今枝 弘充
(74)【代理人】
【識別番号】100148079
【弁理士】
【氏名又は名称】梅村 裕明
(72)【発明者】
【氏名】吉田 浩章
(72)【発明者】
【氏名】藤田 昌宏
【審査官】 松浦 功
(56)【参考文献】
【文献】 特開2000−057195(JP,A)
【文献】 特開2007−034584(JP,A)
【文献】 吉田浩章 外1名,インクリメンタル高位合成に向けた設計記述間差分の計算手法,情報処理学会研究報告 2011 April [DVD-ROM],一般社団法人情報処理学会,2011年 4月15日
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/50
(57)【特許請求の範囲】
【請求項1】
複数の命令を順次実行することを定めた第1命令列および第2命令列間の差分を解析する設計記述間差分解析装置であって、
高位記述を中間言語を用いた内部表現に変換して得られた第1命令列と第2命令列について、
前記第1命令列と前記第2命令列の各前記命令の名前を、該命令内の命令種類に置き換えて正規化し、正規化した前記第1命令列と前記第2命令列との間で文字列表現が同じ命令の組み合わせを、正規化前の命令同士の文字列表現が一致する可能性がある命令組の候補として抽出する抽出手段と、
候補となった命令組について、前記正規化前の文字列表現が一致する命令組数を最大にする目的関数と、前記命令組の一致矛盾を表す制約条件とを線形計画問題として定式化し、線形計画法により解を求めることで、前記命令組数が最大になる各前記命令間の対応関係を特定する差分解析手段と
を備え
前記制約条件は、
前記名前同士が一致し、かつ前記命令内のオペランド同士が一致するとき前記命令同士が一致するという命令一致の制約と、
前記第1命令列の1つの前記命令は、前記第2命令列の1つの前記命令と一致するという一致の唯一性保証の制約と、
前記第1命令列の前記命令の順序に、前記2命令列の前記命令も従うという順序違反の制約と、であり、
前記命令一致の制約と、前記一致の唯一性保証の制約と、前記順序違反の制約と、について、それぞれ前記線形計画問題として定式化し、前記線形計画法により解を求める
ことを特徴とする設計記述間差分解析装置。
【請求項2】
前記目的関数は、
【数1】
であり(Sは一致する可能性のある命令組の集合であり、Ip,qは、前記第1命令列の命令pの文字列表現と、前記第2命令列の命令qの文字列表現との一致を表現し、一致するとき1とし、不一致のとき0とする。pは前記第1命令列の命令の行番号、qは前記第2命令列の命令の行番号を示す)、
前記命令一致制約は、
Ip,q≦Np,q、∀(p,q)∈S、かつIp,q≦Nr,s、∀(r,s)∈Op,q、∀(p,q)∈S
であり(Np,qは、前記第1命令列の命令の名前と、前記第2命令列の命令の名前との一致を表現し、Nr,sは、前記第1命令列におけるオペランド内の引数の名前と、前記第2命令列におけるオペランド内の引数の名前との一致を表現し、rは前記第1命令列の引数となっている命令の行番号、sは前記第2命令列の引数となっている命令の行番号を示す。Op,qはオペランドの組の集合を示す。Np,qおよびNr,sは、一致するとき1とし、不一致のとき0とする)、
前記一致の唯一性保証の制約は、
Np,q+Np,q´´≦1(q´´は、前記第2命令列の命令の行番号のうちq以外の命令の行番号)、∀(p,q)∈S、∀(p,q´´)∈S
であり(Np,qおよびNp,q´´は、一致するとき1とし、不一致のとき0とする)、
前記順序違反の制約は、
Np,q+Nv,w≦1(vは、前記第1命令列の命令の行番号のうちpよりも後の命令の行番号を示しv≧p+1、Wは、前記第2命令列の命令の行番号のうちqよりも前の命令の行番号を示しw≦q−1)、∀(p,q)∈S、∀(v,w)∈S
である(Nv,wは、一致するとき1とし、不一致のとき0とする)
ことを特徴とする請求項1記載の設計記述間差分解析装置。
【請求項3】
前記第1命令列および前記第2命令列の各前記命令は、識別手段によって予め一致命令と不一致命令とに識別されており、
前記抽出手段は、前記識別手段によって識別された前記一致命令を破棄し、前記不一致命令のみを抽出して正規化する
ことを特徴とする請求項1または2記載の設計記述間差分解析装置。
【請求項4】
複数の命令を順次実行することを定めた第1命令列および第2命令列間の差分を解析する設計記述間差分解析装置に対し、
高位記述を中間言語を用いた内部表現に変換して得られた第1命令列と第2命令列について、抽出手段によって、前記第1命令列と前記第2命令列の各前記命令の名前を、該命令内の命令種類に置き換えて正規化し、正規化した前記第1命令列と前記第2命令列との間で文字列表現が同じ命令の組み合わせを、正規化前の命令同士の文字列表現が一致する可能性がある命令組の候補として抽出する抽出ステップと、
候補となっている命令組について、前記正規化前の文字列表現が一致する命令組数を、最大にする目的関数と、前記命令組の一致矛盾を表す制約条件とを差分解析手段によって、線形計画問題として定式化し、線形計画法により解を求めることで、前記命令組数が最大になる各前記命令間の対応関係を特定する差分解析ステップと
を実行させ
前記制約条件は、
前記名前同士が一致し、かつ前記命令内のオペランド同士が一致するとき前記命令同士が一致するという命令一致の制約と、
前記第1命令列の1つの前記命令は、前記第2命令列の1つの前記命令と一致するという一致の唯一性保証の制約と、
前記第1命令列の前記命令の順序に、前記2命令列の前記命令も従うという順序違反の制約と、であり、
前記差分解析ステップとして、
前記命令一致の制約と、前記一致の唯一性保証の制約と、前記順序違反の制約と、について、それぞれ前記線形計画問題として定式化し、前記線形計画法により解を求めるステップを実行させる
ための設計記述間差分解析プログラム。
【請求項5】
複数の命令を順次実行することを定めた第1命令列および第2命令列間の差分を解析する設計記述間差分解析方法であって、
高位記述を中間言語を用いた内部表現に変換して得られた第1命令列と第2命令列について、抽出手段によって、前記第1命令列と前記第2命令列の各前記命令の名前を、該命令内の命令種類に置き換えて正規化し、正規化した前記第1命令列と前記第2命令列との間で文字列表現が同じ命令の組み合わせを、正規化前の命令同士の文字列表現が一致する可能性がある命令組の候補として抽出する抽出ステップと、
候補となっている命令組について、前記正規化前の文字列表現が一致する命令組数を最大にする目的関数と、前記命令組の一致矛盾を表す制約条件とを差分解析手段によって、線形計画問題として定式化し、線形計画法により解を求めることで、前記命令組数が最大になる各前記命令間の対応関係を特定する差分解析ステップと
を備え
前記制約条件は、
前記名前同士が一致し、かつ前記命令内のオペランド同士が一致するとき前記命令同士が一致するという命令一致の制約と、
前記第1命令列の1つの前記命令は、前記第2命令列の1つの前記命令と一致するという一致の唯一性保証の制約と、
前記第1命令列の前記命令の順序に、前記2命令列の前記命令も従うという順序違反の制約と、であり、
前記差分解析ステップでは、
前記命令一致の制約と、前記一致の唯一性保証の制約と、前記順序違反の制約と、について、それぞれ前記線形計画問題として定式化し、前記線形計画法により解を求める
ことを特徴とする設計記述間差分解析方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法に関する。
【背景技術】
【0002】
特定用途向けの集積回路(Application Specific Integrated Circuit:ASIC)では、製造後の修正がほぼ不可能なため、回路設計時に様々な要素を考慮した上での慎重な最適化が必要であり、また網羅的な検証も必要となるため、開発コストが必然的に高くなってしまう。また、近年の製造プロセスの高度化に伴い、製造コストも莫大となっている。このため、再利用が不可能な投資に関するコストであるNRE(Non-Recurring Engineering)コストが非常に高い。そのためASIC開発においては、開発コストや開発期間の短縮を目的として設計後の修正を効率的に行うEngineering Change(EC)手法が用いられてきた。
【0003】
EC手法では、設計過程のある段階で設計誤りを発見した場合に設計全体をやり直すのではなく、局所的な設計変更のみで対応することにより、設計および検証のコストを最小限にすることが可能である。現在広く行われているEC手法では、スペアセルと呼ばれる予備のセルを予め挿入しておき、設計変更が必要な場合には、配線をスペアセルに繋ぎ変えることで機能修正を行っている。
【0004】
これらの処理を自動化する技術として、インクリメンタル論理合成(例えば、非特許文献1〜3参照)や、インクリメンタル自動配置配線(例えば、非特許文献4参照)が提案されている。これらの手法では基本的な手続きとして、先ず設計の変更部分を特定し、次にその変更部分に対して変更がなるべく少なくなるように再合成を行う。これらの技術は商用ツールにも実装されており、広く利用されている。
【0005】
一方でASIC開発の生産性向上を目的として、高位合成を利用した設計手法の導入が進んでいる。今後、高位合成の普及とともに、従来のゲートレベルでのEC手法ではなく、高位設計におけるEC手法の重要性が高まってくるものと思われる。ここで、例えば、オープンソースのAdvanced Audio Coding(AAC)デコーダソフトウェアであるFAAD27(例えば、非特許文献5参照)におけるバグ修正では、設計全体に対して局所的かつ小規模であることが多いが、一般的な高位合成手法で再合成した場合には小規模な変更であっても合成結果が大幅に変わってしまう可能性があり、結果として論理・レイアウト設計の大部分をやり直さなくてはならなくなってしまうという問題があった。
【0006】
そこで、このような背景から、近年になりインクリメンタル高位合成手法が提案されている(例えば、非特許文献6および7参照)。非特許文献6の手法は、元の設計の合成時にスケジューリングやバインディングの情報を記憶しておき、変更後の設計を行う際に、これら情報を使用することで、なるべく元の設計と近いハードウェアを合成する。この手法では、厳密な設計記述間の差分を計算しているのではなく、類似した設計であれば変数名なども類似しているという仮定の下で内部表現を文字列で表現し、この文字列の比較を行うことで差分の見積もりを行っている。そのため変数名の変更などを伴う設計変更に対してはロバストではない。
【0007】
非特許文献7の手法では、厳密な設計記述間の差分を入力として、変更部分のみをインクリメンタルに再合成することにより合成結果の変更量を最小にすることが可能である。また、この非特許文献7の手法では、変更部分のみを再合成するため、設計変更に対して比較的ロバストであると言える。また、製造後機能修正を可能とするアクセラレータ(例えば、非特許文献8参照)でも設計記述間の差分に基づいてコンパイルを行い、パッチを生成している。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】S.C.Prasad,P.Anirudhan,and P.Bosshart,‘Asystem for incrementalsynthesis to gate-level and reoptimization following RTL design changes,’inProc. ACM/IEEE Design Automation Conf.,1994,pp.441-446.
【非特許文献2】D.Brand,A.Drumm,S.Kundu,and P.Narain,‘Incremental synthesis,’inProc.IEEE Int.Conf.on Computer-Aided Design,Nov.1994,p.18.
【非特許文献3】G.Swamy,S.Rajamani,C.Lennard,and R.Brayton,‘Minimal logicre-synthesis for engi-neering change,’in Proc.IEEE Int.Symp.Circuits andSystems,vol.3,Jun.1997,pp.1596-1599.
【非特許文献4】J.Cong and M.Sarrafzadeh,‘Incremental physical design,’in Proc.ACM Int.Symp.Physi-cal Design,2000,pp.84-92.
【非特許文献5】FAAD2,http://www.audiocoding.com/faad2.html.
【非特許文献6】L.Lavagno,A.Kondratyev,Y.Watanabe,Q.Zhu,M.Fujii,M.Tatesawa, andN.Nakayama,‘Incremental high-level synthesis,’inProc.IEEE Asia and South Pacific Design Automation Conf.,2010,pp.701-706.
【非特許文献7】小野翔平,吉田浩章,藤田昌宏,‘発見的手法に基づくスケーラブルなインクリメンタル高位合成,’電子情報通信学会技術研究報告,vol.110,no.316,pp.13-18,2010年11月.
【非特許文献8】吉田浩章、藤田昌宏、‘製造後機能修正可能な高電力効率アクセラレータの高位設計手法,’情報処理学会 DA シンポジウム 2010 論文集,pp.45-50,2010年9月.
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述したこれらの手法では、設計記述間の差分が合成結果に大きく影響を与えるため、できるだけ小さい差分を求めることが重要である。
【0010】
そこで、本発明は以上の点を考慮してなされたもので、第1命令列および第2命令列間の最小差分を解析し得る設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法を提案することを目的とする。
【課題を解決するための手段】
【0011】
かかる課題を解決するため本発明の請求項1は、複数の命令を順次実行することを定めた第1命令列および第2命令列間の差分を解析する設計記述間差分解析装置であって、高位記述を中間言語を用いた内部表現に変換して得られた第1命令列と第2命令列について、前記第1命令列と前記第2命令列の各前記命令の名前を、該命令内の命令種類に置き換えて正規化し、正規化した前記第1命令列と前記第2命令列との間で文字列表現が同じ命令の組み合わせを、正規化前の命令同士の文字列表現が一致する可能性がある命令組の候補として抽出する抽出手段と、候補となった命令組について、前記正規化前の文字列表現が一致する命令組数を最大にする目的関数と、前記命令組の一致矛盾を表す制約条件とを線形計画問題として定式化し、線形計画法により解を求めることで、前記命令組数が最大になる各前記命令間の対応関係を特定する差分解析手段とを備え、前記制約条件は、前記名前同士が一致し、かつ前記命令内のオペランド同士が一致するとき前記命令同士が一致するという命令一致の制約と、前記第1命令列の1つの前記命令は、前記第2命令列の1つの前記命令と一致するという一致の唯一性保証の制約と、前記第1命令列の前記命令の順序に、前記2命令列の前記命令も従うという順序違反の制約と、であり、前記命令一致の制約と、前記一致の唯一性保証の制約と、前記順序違反の制約と、について、それぞれ前記線形計画問題として定式化し、前記線形計画法により解を求めることを特徴とする設計記述間差分解析装置である。
【0012】
また、本発明の請求項4は、複数の命令を順次実行することを定めた第1命令列および第2命令列間の差分を解析する設計記述間差分解析装置に対し、高位記述を中間言語を用いた内部表現に変換して得られた第1命令列と第2命令列について、抽出手段によって、前記第1命令列と前記第2命令列の各前記命令の名前を、該命令内の命令種類に置き換えて正規化し、正規化した前記第1命令列と前記第2命令列との間で文字列表現が同じ命令の組み合わせを、正規化前の命令同士の文字列表現が一致する可能性がある命令組の候補として抽出する抽出ステップと、候補となっている命令組について、前記正規化前の文字列表現が一致する命令組数を、最大にする目的関数と、前記命令組の一致矛盾を表す制約条件とを差分解析手段によって、線形計画問題として定式化し、線形計画法により解を求めることで、前記命令組数が最大になる各前記命令間の対応関係を特定する差分解析ステップとを実行させ、前記制約条件は、前記名前同士が一致し、かつ前記命令内のオペランド同士が一致するとき前記命令同士が一致するという命令一致の制約と、前記第1命令列の1つの前記命令は、前記第2命令列の1つの前記命令と一致するという一致の唯一性保証の制約と、前記第1命令列の前記命令の順序に、前記2命令列の前記命令も従うという順序違反の制約と、であり、前記差分解析ステップとして、前記命令一致の制約と、前記一致の唯一性保証の制約と、前記順序違反の制約と、について、それぞれ前記線形計画問題として定式化し、前記線形計画法により解を求めるステップを実行させるための設計記述間差分解析プログラムある。
また、本発明の請求項5は、複数の命令を順次実行することを定めた第1命令列および第2命令列間の差分を解析する設計記述間差分解析方法であって、高位記述を中間言語を用いた内部表現に変換して得られた第1命令列と第2命令列について、抽出手段によって、前記第1命令列と前記第2命令列の各前記命令の名前を、該命令内の命令種類に置き換えて正規化し、正規化した前記第1命令列と前記第2命令列との間で文字列表現が同じ命令の組み合わせを、正規化前の命令同士の文字列表現が一致する可能性がある命令組の候補として抽出する抽出ステップと、候補となっている命令組について、前記正規化前の文字列表現が一致する命令組数を最大にする目的関数と、前記命令組の一致矛盾を表す制約条件とを、差分解析手段によって、線形計画問題として定式化し、線形計画法により解を求めることで、前記命令組数が最大になる各前記命令間の対応関係を特定する差分解析ステップと、を備え、前記制約条件は、前記名前同士が一致し、かつ前記命令内のオペランド同士が一致するとき前記命令同士が一致するという命令一致の制約と、前記第1命令列の1つの前記命令は、前記第2命令列の1つの前記命令と一致するという一致の唯一性保証の制約と、前記第1命令列の前記命令の順序に、前記2命令列の前記命令も従うという順序違反の制約と、であり、前記差分解析ステップでは、前記命令一致の制約と、前記一致の唯一性保証の制約と、前記順序違反の制約と、について、それぞれ前記線形計画問題として定式化し、前記線形計画法により解を求めることを特徴とする設計記述間差分解析方法である。
【発明の効果】
【0013】
本発明によれば、特定された対応関係を、第1命令列および第2命令列に適用することで、第1命令列および第2命令列間の最小差分を解析し得る設計記述間差分解析装置、設計記述間差分解析プログラムおよび設計記述間差分解析方法を実現できる。
【図面の簡単な説明】
【0014】
図1】本発明の設計記述間差分解析装置の全体構成を示す概略図である。
図2】高位設計およびECO後高位設計と、中間命令列およびECO後中間命令列とを示す概略図である。
図3】中間命令列の説明に供する概略図である。
図4】正規化命令列およびECO後正規化命令列を示す概略図である。
図5】再割当命令列およびECO後再割当命令列を示す概略図である。
図6】最小差分解析処理時の正規化命令列およびECO後正規化命令列を示す概略図である。
図7】一致の唯一性保証の制約の説明に供する概略図である。
図8】順序違反の制約の説明に供する概略図である。
図9】最終的に得られる最小差分解を示す概略図である。
図10】例題に用いるプログラム1およびプログラム2を示す概略図である。
図11】一致の唯一性保証の制約および順序違反の制約に供する概略図と、最小差分解を示す概略図である。
図12】他の実施の形態による設計記述間差分解析装置の構成を示す概略図である。
図13】等価性ルールの説明に供する概略図である。
【発明を実施するための形態】
【0015】
以下図面に基づいて本発明の実施の形態を詳述する。
(1)本発明の概略
【0016】
図1において、1は本発明による設計記述間差分解析装置を示し、設計記述間差分解析装置1は、C言語やC++言語などの高位言語で記述されたECO(Engineering Change Order)前の高位記述10aと、この高位記述10aのECO後の高位記述(以下、単にECO後高位記述と呼ぶ)10bとを取得すると、中間言語を用いた内部表現にこれらを一旦変換し、中間命令列11aおよびECO後中間命令列11bを生成し得るようになされている。ここで一例として挙げる設計記述間差分解析装置1は、2段階で異なる差分解析処理を実行し得るようになされており、先ず第1段階として、単純な方法で中間命令列11aおよびECO後中間命令列11b間の大部分の表現一致を効率の良いアルゴリズムで求めておき、次に第2段階として、このアルゴリズムで求められた差分となる可能性のある部分(不一致命令)に関して厳密な手法によって差分を特定し、これを中間命令列11aおよびECO後中間命令列11bの最小差分として算出し得るようになされている。
【0017】
実際上、この設計記述間差分解析装置1は、中間言語変換手段2と、中間言語解析手段3と、最小差分解析手段4とを備えており、中間言語変換手段2および中間言語解析手段3によって上述した第1段階目の差分解析処理を実行し、最小差分解析手段4によって第2段階目の差分解析処理を実行し得るようになされている。本発明では、特に最小差分解析手段4によって実行される差分解析処理(以下、最小差分解析処理と呼ぶ)に特徴を有しており、この最小差分解析処理によって厳密な最小差分を特定し得るようになされている。
【0018】
先ず初めに中間言語変換手段2について説明する。ここで、中間言語変換手段2は、例えばC言語で記述された高位記述10aおよびECO後高位記述10bを、中間言語を用いた内部表現に一旦変換し得るようになされている。すなわち、中間言語変換手段2は、高位記述10aの内容を中間言語にて表した中間命令列11aと、ECO後高位記述10bを中間言語にて表したECO後中間命令列11bとを生成し得るようになされている。
【0019】
なお、ここで用いる中間言語としてはコンパイラの分野で広く利用されているLLVM(Low Level Virtual Machine:ローレベル仮想マシン)の表現を使用するが、高位言語で記述された内容を時系列的な命令列に変換できれば、その他種々の中間言語を利用してもよい。図2Aの上段には、C言語にて記述されたECO前の高位記述10aの一例を示し、図2Bの上段には、この高位記述10aのECO後高位記述10bの一例を示しており、ECO後高位記述10bでは、高位記述10a内の「i=2」が「i=3」に修正され、かつ高位記述10aに「f[i-3]」が追加されている。以下、これら図2Aに示す高位記述10aと、図2Bに示すECO後高位記述10bとを用いて説明してゆく。
【0020】
実際上、中間言語変換手段2は、外部から高位記述10aおよびECO後高位記述10bのデータを取得すると、これらをLLVMの中間言語にそれぞれ変換し、高位記述10aから図2Aの下段に示すような中間命令列11aを生成し、ECO後高位記述10bから図2Bの下段に示すようなECO後中間命令列11bを生成する。
【0021】
中間命令列11aの内部表現は、複数の命令p(pは、中間命令列11aを構成する命令の行番号であり、この場合、上から順に1,2,3…となる)が行方向に並んでおり、行番号に沿って先頭から命令1,2,…が逐次的に実行されてゆく。また、ECO後中間命令列11bの内部表現も、複数の命令q(qは、ECO後中間命令列11bを構成する命令の行番号であり、この場合、上から順に1´,2´,3´…となる)が行方向に並んでおり、行番号に沿って先頭から命令1´,2´,…が逐次的に実行されてゆく。ここで、中間命令列11aおよびECO後中間命令列11bの各内部表現の形式は同じであることから、以下、中間命令列11aに着目して中間言語の内部表現について説明する。
【0022】
図3は、図2Aの下段に示した中間命令列11aの一部拡大図である。各命令pは同じ形式でなり、「n1」や「n2」などの固有の名前(変数とも呼ぶ)Npと、命令種類Tpと、オペランドOpとを持っている。命令種類Tpは、「(lbl)label」や「(nil)jimp n3」などのように表記され、( )は命令の結果の型を表しており、例えば32ビット整数型(i32)や、ブール型(i1)、ラベル型(lbl)などがある。また、メモリ書き出しやジャンプ命令などのように実際には結果に型がない命令の型は(nil)となる。
【0023】
命令種類Tpの( )後には、例えば加減算(add,sub)や、乗算(mul)、メモリ読み書き(load,store)、比較(lte,eq,…)などの演算種類が表記される。また、制御構造も一貫した方法で表現するため命令種類Tpの( )後の表記には、その他、ラベル(label)や、ジャンプ(jmp)、ブランチ(br)といった演算種類も存在する。上述の通り名前Npが固有であるため、演算種類の表現は各名前Npへの代入が多くとも一回となる静的単一代入(Static Single Assignment form:SSA)形式となる。そのためφ関数を表現するphi命令を持っている。中間命令列11aは、各命令pが「名前Np=命令種類Tp,オペランドOp」の形式で内容表現され、各命令p毎にそれぞれ所定の文字列表現になっている。また同様に、ECO後中間命令列11bも、各命令qが「名前Nq=命令種類Tq,オペランドOq」の形式で内容表現され、各命令q毎にそれぞれ所定の文字列表現になっている。
【0024】
図1に示したように、中間言語変換手段2は、先ずステップ1として、高位記述10aから中間命令列11aを生成するとともに、ECO後高位記述10bからECO後中間命令列11bを生成し、これら中間命令列11aおよびECO後中間命令列11bを中間言語解析手段3に送出する。中間言語解析手段3は、次のステップ2として、文字比較に基づく差分計算処理を実行し、これら中間命令列11aおよびECO後中間命令列11b間の各命令p,qの一致・不一致を特定する。
【0025】
ところで、これら中間命令列11aおよびECO後中間命令列11bについて着目してみると、いくつかの命令p,qは名前Npの不一致の理由のみによって不一致命令となってしまう。例えば、図2Aおよび図2Bに示すように、中間命令列11aの命令16(16行目)では名前Npが「n16」となっており、一方、ECO後中間命令列11bの命令19´(19行目)では名前Nqが「n19」となっている。
【0026】
しかしながら、命令16の名前Np(n16)と、命令19´の名前Nq(n19)とを同じにするだけで一致命令となる。また、そのようにすることで、中間命令列11aの命令6(6行目の「n6」)と、ECO後中間命令列11bの命令6´(6行目の「n6」)も、オペランドO6内にある引数の名前Nr(n16)と、名前Ns(n19)とが同じになり一致命令となることがわかる。このように名前Np,Nqを適切に割り当てることで差分を最小化することができる。
【0027】
そこで、ここでは、命令p,q間の差分が最小となるような名前Np,Nqの割り当てを求めることが目的である。この問題は、後述する最小差分解析手段4による最小差分解析処理によって解くことが可能であるが、NP困難であることから、最小差分解析手段4による最小差分解析処理を大規模な命令列に適用することは難しい。但し、ECではECOによる設計変更部分が局所的かつ小規模であることから、この部分のみを最小差分解析手段4によって解くことで大規模な命令列にも適用可能となる。
【0028】
そこで、この実施の形態の場合、中間言語解析手段3は、表現一致について容易に判別可能な部分に関して一致命令を先ずは求める。そして、中間言語解析手段3によって特定した残りの不一致命令に対して最小差分解析手段4による最小差分解析処理を実行することで、中間命令列11aおよびECO後中間命令列11bの全体の差分を最終的に特定する。このようにすることで、本発明の設計記述間差分解析装置1では、大規模な設計記述に対しても差分が小規模であれば、最小差分解析手段4によって最小差分を求めることが可能となる。
【0029】
実際上、この中間言語解析手段3は、多くの命令p,qが名前Np,Nqを入れ替えるだけで表現一致することから、先ず名前Np,Nqに依存しない方法で共通部分列(Longest Common Sequence:LCS)を求め、その後、差分を最小にするように名前Np,Nqを再度割り当てるようになされている。
【0030】
この中間言語解析手段3は、先ず始めに、各命令p(q)において命令種類Tp(Tq)の結果の型に、例えば「$」を付してこれを名前Np(Nq)と置き換え、名前Np(Nq)を命令名$Np($Nq)とする(以下、この変形を命令名の正規化と呼ぶ)。これにより、同じ型を持つ名前Np(Nq)はすべて同じ命令名$Np($Nq)を持つことになる。ここで、図4Aは、図2Aの中間命令列11aに対して命令名の正規化を行った内部表現を示し、図4bは、図2BのECO後中間命令列11bに対して命令名の正規化を行った内部表現を示す。
【0031】
例えば、図2A下段に示すように、命令名の正規化を行う前、名前Npが「n1」、命令Tpが「(lbl)」である「n1=(lbl)label」という命令1(1行目)は、命令名の正規化を行うことで、図4Aに示すように、名前Npが命令名「$lbl」となり、「$lbl=(lbl)label」という内部表現となる。
【0032】
また、この際、中間言語解析手段3は、命令pの先頭にある名前Npだけでなく、オペランドOp内にある引数の名前Nrについても、当該名前Nrに対応する命令rの命令種類Tr(結果の型に「$」を付したもの)に置き換えるようになされている。例えば、図2A下段に示すように、命令名の正規化を行う前、「n4=(i32)phi 2,n1,n14,n7」という内部表現の命令4(4行目)は、命令名の正規化を行うことで、図4Aに示すように、名前Npが命令名「$i32」となり、さらにオペランドOp内にある引数の名前Nrもそれぞれ対応する命令種類Trに「$」を付したものに置き換えられ、オペランドOp内の「n1」が「$lbl」、「n14」が「$i32」、「n7」が「$lbl」となり、「$i32=(i32)phi 2,$lbl,$i32,$lbl」という内部表現となる。
【0033】
このように中間言語解析手段3は、命令名の正規化を行うことによって、最長共通部分列を求めるようになされている。なお、このとき、全ての命令種類Tp(Tq)が固有な名称を持っていないため、命令名の正規化を行った正規化命令列12aと、ECO後正規化命令列12bとで命令p,qの文字列表現が一致していても、必ずしも最終的な一致命令とはならないことになる。
【0034】
次に、中間言語解析手段3は、この命令名の正規化を行った正規化命令列12aおよびECO後正規化命令列12b間で文字列表現が一致した命令p,qの各組に対して順番に共通した名前Np(Nq)の再割り当てを行う。この際、中間言語解析手段3は、不一致命令に関してはそれぞれ別の名前Np(Nq)を割り当てる。このようにして中間言語解析手段3は、名前Np(Nq)の再割り当てを行うことで、図5Aおよび図5Bに示すように、全ての命令p,qが固有な名前Np(Nq)を持った内部表現でなる再割当命令列13aおよびECO後再割当命令列13bを新たに生成し得るようになされている。この段階で、再割当命令列13aおよびECO後再割当命令列13bでの命令p,q間の一致関係は正しいものとなっている。
【0035】
実際上、中間言語解析手段3は、命令p,qに対する再割当処理を実行する際、例えばUNIX(登録商標)で広く使われているdiffコマンド(diffコマンドは、2つの文書ファイルの差分を表示するコマンド)を用い、図4Aおよび図4Bに示す命令名の正規化を行った正規化命令列12aとECO後正規化命令列12bとを対比して、文字列表現が一致する一致命令と、文字列表現が不一致の不一致命令とを識別し得るようになされている。
【0036】
なお、この際、中間言語解析手段3は、命令名の正規化を行う前の中間命令列11aおよびECO後中間命令列11bを記憶しており、オペランドOp,Oq内の名前Nr(Ns)も含めて文字列表現の一致・不一致を識別し得る。
【0037】
ここで、名前の再割り当ての手法としてその一例を説明すると、中間言語解析手段3は、命令名の正規化を行った正規化命令列12aと、ECO後正規化命令列12bとを対比し、図5Aおよび図5Bに示すように、文字列表記が一致している例えば1〜3行目までの命令p,qに対し一致命令として共通の名前Np(Nq)(この場合、「n1」、「n2」、「n3」)を新たに割り当てる。
【0038】
一方、正規化命令列12aとECO後正規化命令列12bの4行目の命令p,qは、文字列表記が不一致となるため、例えば正規化命令列12a側の4行目の命令pに「n4」の名前Npを割り当てる。また、この正規化命令列12a側における次の5行目の命令pは、オペランドOpの引数が、ECO後正規化命令列12bの5行目の命令qにおけるオペランドOqの引数と異なるため、diffコマンドを用いた際、文字列表記が不一致となり、続けて「n5」の名前Npを割り当てる。
【0039】
中間言語解析手段3は、正規化命令列12aとECO後正規化命令列12bの文字列表現が一致する7行目の命令p(「$lbl=(lbl)label)までいくと、ECO後正規化命令列12bの不一致となった4行目〜6行目の命令qに、「n7」、「n8」、「n9」の異なる名前Nqを割り当て、文字列表現が一致する7行目の命令p,q(「$lbl=(lbl)label)に、「n10」の名前Np,Nqを割り当てる。
【0040】
なお、中間言語解析手段3は、正規化が行われたオペランドOp(Oq)内の命令種類Tr(Ts)を、新たに再割り当てされた対応する名前Nr(Ns)に置き換え得るようになされている。
【0041】
例えば、図4Aに示す正規化命令列12aの命令4(4行目の「$i32=(i32)phi 2,$lbl,$i32,$lbl」)を用いて説明すると、正規化前の中間命令列11aではオペランドOp内にある引数の名前Nrが「n1,n14,n7」であったことから(図2A)、これらに対応して新たに再割り当てされた名前Nr「n1,n19,n9」に、命令種類Tr「$lbl,$i32,$lbl」を置き換える。その結果、再割当命令列13aの命令4は「n4=(i32)phi 2,n1,n19,n9」となる(図5A)。
【0042】
このようにして、中間言語解析手段3は、名前Np,Nq(オペランドOp,Oq内の名前Nr,Nsも含む)の再割当処理を実行し、図5Aおよび図5Bに示すように、文字列表現が一致する命令p,qに対して同じ名前Nr,Nsを割り当てた再割当命令列13aおよびECO後再割当命令列13bを生成し得るようになされている。
【0043】
なお、ここでは、正規化命令列12aとECO後正規化命令列12bの文字列表現が一致する命令p,qに対して同じ名前Nr,Nsを割り当てることが重要であり、文字列表現が一致しない命令p,qにどのような名前Nr,Nsを割り当ててもよい。
【0044】
ところで、図2Aおよび図2Bに示す中間命令列11aおよびECO後中間命令列11bでは、いくつかの一致命令内のオペランドOp(Oq)に不一致の名前Nr(Ns)が含まれているため、そのまま使用すると、以降の処理で仮に当該名前Np(Nq)が変更されてしまうと、不一致命令となってしまう可能性がある。
【0045】
これに対して、上述した再割当命令列13aおよびECO後再割当命令列13bには、不一致命令に対して異なる名前Np(Nq)を割り当てているため、一致命令内にはオペランドOp(Oq)内に不一致の名前Nr(Ns)が含まれておらず、以降の処理で一致命令が後から不一致命令となることはない。
【0046】
このようにして中間言語解析手段3によって求めた一致命令は絶対的なものとなり、この段階で確定され、以降の最小差分解析手段4による最小差分解析処理で用いられることがない。これにより、大規模な設計記述で小規模な設計変更が行われた際には、中間言語解析手段3による処理によって大部分の一致命令列を求めることが可能となり、これら一致命令を排除して不一致命令のみを用いて最小差分解析手段4に対し最小差分解析処理を行わせることで、当該最小差分解析手段4の処理負担を格段的に軽減し得るようになされている。
【0047】
中間言語解析手段3は、これら生成された再割当命令列13aおよびECO後再割当命令列13bにおいて不一致命令および一致命令を特定した後、これら再割当命令列13aおよびECO後再割当命令列13bを最小差分解析手段4に送出し得るようになされている。最小差分解析手段4は、ステップ3として、0-1線形計画法に基づく厳密手法を用いて、再割当命令列13aおよびECO後再割当命令列13b間の不一致命令に対してのみ、さらに差分を絞り込む最小差分解析処理を実行し得るようになされている。すなわち、最小差分解析手段4は、中間言語解析手段3によって得られた、差分がない可能性もある命令も含んだ不一致命令の中から、厳密に差分のある最小の不一致命令を最終的に特定し得るようになされている。
【0048】
ここで、最小差分解析手段4は、中間言語解析手段3によって不一致命令として識別した命令p,qに対してのみ再び命令名の正規化を行うようになされている。図5Aおよび図5Bでは、図中下線を引いた列が、文字列表現が不一致の不一致命令であり、例えば、再割当命令列13aの4行目、5行目の命令pや、ECO後再割当命令列13bの4行目、5行目の命令qなどが不一致命令であり、この不一致命令に対してのみ命令名の正規化が行われ、その結果、図6Aおよび図6Bに示すような正規化命令列14aおよびECO後正規化命令列14bが生成され得る。
【0049】
最小差分解析手段4は、不一致命令に対してのみ命令名の正規化を行った正規化命令列14aおよびECO後正規化命令列14bから、正規化命令列14aおよびECO後正規化命令列14b間の文字列表現が一致する組み合わせを全て求めるようになされている。最小差分解析手段4は、これら組み合わせの命令組(後述する)に対して、一致命令の数を最大化する目的関数と制約条件とを用いて0-1線形計画法問題に帰着して最小差分を解析し得る。因みに、0-1線形計画法は変数と制約条件と目的関数が与えられ、制約条件を満足し、かつ目的関数が最大となる変数を求める。
【0050】
この実施の形態の場合、最小差分解析手段4での0-1線形計画問題は以下のように定式化される。0-1線形計画法に用いる変数は、全て0か1かの2値変数であり、Np,qとIp,qとがある。Np,qは、命令pの名前Npと、命令qの名前Nqとの一致を表現しており、この場合、名前Npと名前Nqとが同じとき(文字列表現が全て一致するとき)のみ1とする。
【0051】
また、Ip,qは、命令pの文字列表現と、命令qの文字列表現との一致を表現しており、この場合、命令pと命令qとが同じとき(文字列表現が全て一致するとき)のみ1とする。ここで、命令pと命令qとが同じとは、名前Np,Nqが同じであり、かつ命令種類Tp,Tqが同じであり、さらにオペランドOp,Oqが同じ(すなわちオペランドOp,Oq内にある引数の名前Nr,Nsが全て一致する)であるという3つの条件を全て満たすことをいい、このときIp,qは1となる。
【0052】
また、0-1線形計画法に用いる目的関数は、一致命令の数を最大化するIp,qを求め、最小差分解を算出する。具体的には、下記数1のような目的関数を用いる。
【0053】
【数1】
【0054】
なお、Sは一致する可能性のある命令組の集合であり、命令p,qが同じ命令種類の場合に(p,q)∈Sとなる。すなわち、図6を用いて説明すると、正規化命令列14aの命令9(図中9行目)の「$132=(i32)load $i32」が、ECO後正規化命令列14bの命令9´(図中9行目)、命令11´(図中11行目)、命令13´(図中13行目)にある「$132=(i32)load $i32」と命令種類が同じであることから、命令が一致する可能性がある。この場合、一致する可能性がある命令組の集合Sは(9,9´)、(9,11´)、(9,13´)となる。このようにして、正規化命令列14aにおいて正規化された他の命令pについても、ECO後正規化命令列14bにおいて正規化された各命令qと比較してゆき、同様に集合Sを求めてゆき、この集合Sから目的関数(例えばI9,9´+I9,11´+I9,13´+…)を求める。
【0055】
これに加えて、最小差分解析手段4は、この目的関数に対して、下記の2つの制約条件を設定する(但し、実際には、2つ目の制約条件が2つの制約を持っているため、合計だと3つの制約条件となる)。先ず1つ目の制約条件1として命令一致の制約を設定する。命令一致の制約は、命令p,qの名前Np,Nqが一致し、かつオペランドOp,Oq内の全ての引数の組(名前Nr,sの組)が一致している場合にのみ1となる。ここで、名前Np,Nqが一致しているときは、Ip,q≦Np,q、∀(p,q)∈Sの条件を満たし、また、オペランドOp,Oq内の全ての引数の組が一致しているときは、Ip,q≦Nr,s、∀(r,s)∈Op,q、∀(p,q)∈Sの条件を満たす。なお、Op,qはオペランドの組の集合である。r,sが、p,qの対応するオペランドの組である場合にのみ(r,s)∈Op,qとなる。このような命令一致の制約条件を集合Sの全ての組み合わせに対して求める。
【0056】
また、2つ目の制約条件2として複数一致間の矛盾について設定する。この複数一致間の矛盾は、2つの名前一致(p,q)と、オペランド内の引数の名前一致(r,s)が矛盾するとき、それらの変数は同時に1になることはできない。すなわち、Np,q+Nr,s≦1、∀(p,q),(r,s)∈Tの条件を満たす(Tは、矛盾する2つの命令ペアの組の集合を示す(すなわち、2つの命令ペア(p,q),(r,s)が互いに矛盾するとき、((p,q),(r,s))がTの要素となる))。
【0057】
さらに、この制約条件2における複数一致間の矛盾は、一致の唯一性保証の制約と、順序(依存性)違反の制約の2つの制約に分類される。先ず1つ目の一致の唯一性保証の制約とは、各命令列が高々1つの命令列としか一致できないため、図7に示す2つの矢印のように、正規化命令列14aの命令11(11行目)が、ECO後正規化命令列14bの命令9´(9行目)および命令11´(11行目)の2つに一致するときは矛盾するというものである。
【0058】
この場合、正規化命令列14aの命令11と、ECO後正規化命令列14bの命令9´との名前N11,が一致するとき、正規化命令列14aの命令11と、ECO後正規化命令列14bの命令11´の名前N11,11´は一致しない。すなわち、N11,+N11,11´≦1の条件を満たす必要がある。そして、このような一致の唯一性保証の制約は、Np,q+Np,q´´≦1(q´´は、ECO後正規化命令列14bの命令の行番号のうちq以外の命令の行番号)、∀(p,q)∈S、∀(p,q´´)∈Sと表すことができ、全ての組み合わせに対してこのような一致の唯一性保証の制約を求める。
【0059】
また、2つ目の順序違反の制約とは、一致した命令列は元の命令順に従わなければならないため、図8に示す2つの矢印のように、順番が入れ替わる一致は矛盾するというものである。この場合、正規化命令列14aの命令10と、ECO後正規化命令列14bの命令10´との名前N10,10´が一致するとき、正規化命令列14aの命令11と、ECO後正規化命令列14bの命令9´の名前N11,は一致しない。すなわち、N10,10´+N11,9´≦1の条件を満たす必要がある。そして、このような順序違反の制約は、Np,q+Nv,w≦1(vは、正規化命令列14aの命令の行番号のうちpよりも後の命令(行番号)を示しv≧p+1、Wは、ECO後正規化命令列14bの命令の行番号のうちqよりも前の命令(行番号)を示しw≦q−1)、∀(p,q)∈S、∀(v,w)∈Sと表すことができ、全ての組み合わせに対してこのような順序違反の制約を求める。
【0060】
なお、この順序違反の制約は、上述したような名前一致に替えて、命令一致に対して上記制約を適用する定式化も可能であり、この場合、より解空間が広がるものとなる。上記の例で命令一致を用いた順序違反の制約を表すと、I10,10´+I11,9´≦1の条件を満たす必要がある。また、このような順序違反の制約でも、Ip,q+Iv,w≦1と表すことができ、全ての組み合わせに対してこのような順序違反の制約を求める。
【0061】
最小差分解析手段4は、例えばGurobi Optimizerなどのソルバーを格納しており、目標関数と制約条件とから定式化された線形計画問題Dを、当該ソルバーを用いて解くことにより上記数1の目的関数の値が最大となる解を算出し得るようになされている。この実施の形態の場合、ソルバーにより得られる解は、上記数1の目的関数の値が最大になるIp,q、Np,qおよびNr,sの関係を0および1の値で表し、これら対応関係から最小差分解として、図9Aおよび図9Bに示すような中間命令列15aおよびECO後中間命令列15bを生成し得るようになされている。
【0062】
なお、このようにして求めた最小差分を示すECO後中間命令列15bは、図1に示したように、データフローグラフ生成手段(図示せず)によってノードN間が繋がれたコントロールデータフローグラフCFに変換され、以後の処理に用いられ得る。
(2)例題を用いた最小差分解析処理の説明
【0063】
次に、より具体的な例題を用いて上述した最小差分解析処理手順について以下説明する。この場合、命令1,2,3,4,5,6,7の7命令からなるプログラム1と、命令1´,2´,3´,4´,5´,6´,7´の7命令からなるプログラム2を用意し、プログラム1の各命令pの名前は、n1,n2,n3,n4,n5,n6,n7とし、プログラム2の各命令qの名前はn1´,n2´,n3´,n4´,n5´,n6´,n7´とした。ここで、図10Aには、文字列表現が同じでオペランドに引数を含まない命令1〜4を省略し、命令5〜7のみを表記したプログラム1を示し、図10Bには、文字列表現が同じでオペランドに引数を含まない命令1´〜4´を省略し、命令5´〜7´のみを表記したプログラム2を示す。
【0064】
このようなプログラム1およびプログラム2は、先ず命令名の正規化が行われ、図10Cおよび図10Dに示すように、各命令p,qの名前を、命令種類「i32」に置き換えて全て「$i32」とする。次に、プログラム1およびプログラム2で文字列表現が一致する行の組み合わせの集合Sを求める。この場合、(p,q)∈Sは、(6,5´)、(6,6´)、(6,7´)、(7,5´)、(7,6´)、(7,7´)となる。この集合Sから目的関数を求めると、I6,+I6,+I6,+I7,+I7,+I7,となる。
【0065】
次に制約条件について説明する。先ず命令一致の制約条件について説明する。図10Eおよび図10Fに示すように、例えば、命令6と命令5´とが一致するときの制約条件として、命令6と命令5´の名前が一致するという制約(すなわち、I6,≦N6,)、第1引数である命令5と命令1´の名前が一致するという制約(すなわち、I6,≦N6,)、第2引数である命令3と命令2´の名前が一致するという制約(すなわち、I6,≦N6,)が適用される。つまり、命令6および命令5´同士の名前が一致(N6,=1)し、引数同士の名前が一致(N5,=1、N3,=1)するときのみ、命令6および命令5´同士が一致する(I6,=1)。このような命令一致の制約条件を集合Sの全ての組み合わせに対して求める。
【0066】
次に一致の唯一性保証の制約条件について説明する。この一致の唯一性保証の制約は、例えば命令6の名前は命令5´,6´,7´の高々1つとしか一致できないという制約である。この場合、プログラム1およびプログラム2内の命令は異なる名前を持つため、図11Aおよび図11Bに示すように、命令6と命令5´の名前が一致するときには、命令6と命令6´の名前は一致できないという制約(すなわち、N6,+N6,≦1)と、命令6と命令7´の名前は一致できないという制約(すなわち、N6,+N6,≦1)が適用される。そして、このような一致の唯一性保証の制約条件を集合Sの全ての組み合わせに対して求める。
【0067】
次に順序違反の制約条件について説明する。この順序違反の制約として、図11Cおよび図11Dに示すように、例えば命令6と命令6´の名前が一致しているとき、命令7と命令5´の名前は一致できないという制約(すなわち、N6,+N7,≦1)が適用される。そして、このような順序違反の制約条件を集合Sの全ての組み合わせに対して求める。なお、この順序違反の制約条件として、名前一致に替えて、命令一致に対して制約を適用する場合には、I6,+I7,≦1という制約条件となり得る。
【0068】
そして、これら目的関数と制約条件とを定式化した0-1線形計画問題についてソルバーで解を求めると、I6,=1、I7,=1、N6,=1、N7,=1、N5,=1、N4,=1となる(他の変数は0)。プログラム1の命令pは元と同じとし、プログラム2の命令qを、命令1´:n5、命令2´:n3、命令3´:n1、命令4´:n2、命令5´:n6、命令6´:n4、命令7´:n7(なお、命令3´、命令4´はここでは省略したため任意とした)と変更すると、図11Eおよび図11Fに示すように、命令6と命令5´、命令7と命令7´とが一致することが分かる。このようにして一致命令を増やし、不一致命令が少ない最小差分解を求めることができる。
(3)作用および効果
【0069】
以上の構成において、最小差分解析手段4では、中間言語解析手段3から一致命令および不一致命令が特定された再割当命令列13a(第1命令列)とECO後再割当命令列13b(第2命令列)とを受け取ると、その中で不一致命令とした各命令p,qの名前Np,Nqを、当該命令p,q内の命令種類Tp,Tqに置き換えて正規化する。また、最小差分解析手段4では、正規化した正規化命令列14aとECO後正規化命令列14bとの間で文字列表現が同じで、一致する可能性のある全ての命令の組み合わせ候補を抽出する。
【0070】
さらに、最小差分解析手段4では、名前Np,Nq同士が一致し、かつ命令p,q内のオペランドOp,Oq同士が一致するとき、命令p,q同士が一致するという制約(命令一致の制約)と、正規化命令列14a内の1つの命令pは、ECO後正規化命令列14bの1つの命令qとしか一致できないという制約(一致の唯一性保証の制約)と、正規化命令列14aの命令pの順序に、ECO後正規化命令列14bの命令qも従うという制約(順序違反の制約)の下、命令p,qの組み合わせ候補について内部表現が一致する命令組数が最大になるように各命令p,q間の対応関係を目的関数から特定する。
【0071】
本発明では、このような手法を適用することにより特定された対応関係を、正規化命令列14aおよびECO後正規化命令列14bに適用することで、中間命令列15aおよびECO後中間命令列15b間の最小差分を解析し得る設計記述間差分解析装置1、設計記述間差分解析プログラムおよび設計記述間差分解析方法を実現できる。
【0072】
また、この設計記述間差分解析装置1では、一般的に設計記述の変更が局所的かつ小規模であることに着目し、先ず中間言語解析手段3によって単純な方法で大部分の一致命令を求めておき、残りの不一致命令だけを用いて最小差分解析手段4にて厳密手法による最小差分解を求めるようにしたことで、最小差分解析手段4の処理負担を軽減し得る。
【0073】
このように、設計記述間差分解析装置1では、最小差分解析手段4の処理負担を軽減し得ることで、最小差分解析手段4にて0-1線形計画問題を確実にソルバーで解くことができ、かくして最小差分解を求めることができる。
(4)他の実施の形態による等価性ルールを利用した設計記述間差分解析装置
【0074】
図12は、他の実施の形態である等価性ルールを利用した設計記述間差分解析装置41を示し、上述した実施の形態とは等価性判定手段43が設けられている点で相違している。等価性判定手段43は、最小差分解析手段4から出力された現時点で最小差分解である中間命令列15aおよびECO後中間命令列15bを受け取り、所定のルールによる部分等価性判定処理を行うことで、中間命令列15aおよびECO後中間命令列15b間で等価とみなすことができる新たな命令組を特定し得るようになされている。
【0075】
この実施の形態の場合、等価性判定手段43は、例えば所定の等価性ルールを予め記憶しており、この等価性ルールを用いて中間命令列15aおよびECO後中間命令列15b間で等価とみなすことができる命令組を特定し得るようになされている。等価性ルールは、例えば「add X,Y」および「add Y,X」のように、文字列表現が異なるものの、オペラント内の引数が単に配置変換されたもので、両者ともに「X」と「Y」を加算することを示し、実質上同じ命令内容であるものを等価とみなすものである。
【0076】
実際上、等価性判定手段43は、例えば「add X,Y」および「add Y,X」が等価であるという等価性ルールを、中間命令列15aおよびECO後中間命令列15b間の不一致命令に照らし合わせてゆき、この等価性ルールに該当する不一致命令組を検出する。等価性判定手段43は、等価性ルールに該当する命令組を強制的に一致命令とした新たな中間命令列およびECO後中間命令列を中間言語解析手段3に送出する。
【0077】
中間言語解析手段3は、文字比較に基づく差分計算処理を再び実行し、等価性ルールを基に不一致命令組であったものを一致命令としつつ、これら中間命令列11aおよびECO後中間命令列11b間の各命令p,qの一致・不一致を特定し、これを最小差分解析手段4に送出する。最小差分解析手段4は、再び最小差分解析処理を行い、等価とみなすことができる命令組を一致命令とした最小差分でなる中間命令列およびECO後中間命令列を生成し得るようになされている。
【0078】
なお、上述した実施の形態においては、等価性ルールとして、1つの命令pと、1つの命令qとの間で等価性を判断する等価性ルールについて述べたが、本発明はこれに限らず、複数の命令p,q間で等価性を判断する等価性ルールを適用してもよい。具体的には、図13Cに示すようなプログラム1と、図13Dに示すようなプログラム2とでは、文字列表現が全くことなるものの、プログラム1の命令10〜12から得られる算出結果と、プログラム2の命令11´から得られる算出結果とは同じ結果となり、実質的に等価とみなすことができる(プログラム1では命令10にて一旦「n3」を加えているが、命令12にて「n3」を引いており、結局、プログラム2と等価となる)。
【0079】
そこで、等価性判定手段43は、このような複数命令間で等価となり得る等価性ルールを予め記憶しておき、中間命令列15aおよびECO後中間命令列15b間の不一致命令のうち、この等価性ルールに該当する複数命令組を検出し、これら複数命令組を強制的に一致命令とした新たな中間命令列およびECO後中間命令列を中間言語解析手段3に送出する。そして、上述と同様にして以後の処理を繰り返すことで、等価とみなすことができる命令組を一致命令とした最小差分でなる中間命令列およびECO後中間命令列を生成し得る。
【0080】
また、他の実施の形態としては、等価性ルールの集合を単に記憶しておくだけではなく、等価性ルールを順次適用しながら、計算の意味を推測して命令組の等価性を判断する、等価性検証ツールと連携するようにしてもよい。この等価性検証ツールは特開2007-233648号公報の「回路記述言語の等価性検証方法」の技術を利用するものであり、この場合、中間言語解析手段3や最小差分解析手段4とは別に等価性判定ツールを起動させながら、必要に応じて、部分プログラムの等価性判定を並行して行いながら全体の処理を実行することもできる。
【0081】
このような設計記述間差分解析装置41では、中間命令列およびECO後中間命令列が得られた際、等価な命令組と非等価な命令組とを形式的に(数学的な証明を伴って)分離でき、さらに一段と最小差分解を得ることができる。
【0082】
因みに、図13Aに示すプログラム1と、図13Bに示すプログラム2とを用いて、等価性ルールについて説明する。この場合、命令6と命令5´が等価であるとみなし、両者が一致命令であるとすると、命令6と命令5´の名前が一致し(すなわち、I6,≦N6,)、第1引数である命令5と命令2´の名前が一致し(すなわち、I6,≦N5,)、第2引数である命令3と命令1´の名前が一致する(すなわち、I6,≦N3,)というように表せる。
(5)その他の実施の形態
【0083】
なお、上述した実施の形態においては、2段階で異なる差分解析処理を実行し得るようにした場合について述べたが、本発明はこれに限らず、種々の差分解析処理を複数段階得た後、最小差分解析手段4による最小差分解析処理を実行するようにしてもよい。
【符号の説明】
【0084】
1,43 設計記述間差分解析装置
2 中間言語変換手段
3 中間言語解析手段(識別手段)
4 最小差分解析手段(抽出手段、差分解析手段)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13