JP5093508B2 - ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム - Google Patents

ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム Download PDF

Info

Publication number
JP5093508B2
JP5093508B2 JP2008266347A JP2008266347A JP5093508B2 JP 5093508 B2 JP5093508 B2 JP 5093508B2 JP 2008266347 A JP2008266347 A JP 2008266347A JP 2008266347 A JP2008266347 A JP 2008266347A JP 5093508 B2 JP5093508 B2 JP 5093508B2
Authority
JP
Japan
Prior art keywords
model
cfg
loop
variable
subgraph
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008266347A
Other languages
English (en)
Other versions
JP2010097328A (ja
Inventor
雅哉 小畑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008266347A priority Critical patent/JP5093508B2/ja
Publication of JP2010097328A publication Critical patent/JP2010097328A/ja
Application granted granted Critical
Publication of JP5093508B2 publication Critical patent/JP5093508B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ループ最適化システムに関し、特にループ内のモデル検査におけるループ最適化システムに関する。
C言語等のプログラミング言語で記述されたソースコードを、形式検証の一手法であるモデル検査法で検証する方法として、従来からいくつかの方法が知られている。
一般に、ソースコードから自動的にモデルを構築しモデル検査による検証を行う場合、生成されるモデルの状態数が膨大になり、計算量が非常に多くなるため、モデル化の過程で様々な最適化を行う必要がある。制御構造や処理の流れを表したコントロールフローグラフ(CFG)と呼ばれる中間モデルの生成過程においても、複数の最適化が行われるが、ループ制御構造の解析においては、「ループ不変計算除去」等のコンパイラ最適化技法による最適化処理しか行われていなかった。
ここで、「ループ不変計算除去」とは、ループ制御変数の影響を受けないループ不変計算の検出、及びコード移動の処理により、ループ内変数の計算処理をループ外に移動することによって、ループ内での計算処理量を軽減し、検証時間を短縮するというものである。
モデル検査において、ループ内に任意値を含む計算処理がある場合に、その計算処理がコンパイラ最適化の対象とならない場合は、モデル検査の過程において、ループによる繰り返し処理の回数分、任意値が取り得る値の全てに対して網羅的な検証が行われるため、計算量が非常に大きくなり、結果として検証時間が長くなるという課題があった。
ここで、「任意値」とは、モデル検査の処理において、与えられた条件からは特定の値をとることが計算できない変数や、処理の実体が定義されていない関数を、生成されたモデルの中で特別に表現するための要素を意味する。
モデル検査においては、式の中で任意値が参照されると、取り得る値の全ての状態が存在する可能性があるものとして、虱潰し(網羅的)に全ての状態について検査を行う。例えば、任意値が8ビット符号あり整数型である場合には、「−128、−127、…、0、…、127」(−128〜127)のいずれの値も取り得る可能性があるとして、全ての場合について検査を行う。
関連する技術として、特表2007−528059号公報(特許文献1)にソフトウェアのモデル化、抽象、及び分析のためのシステムと方法が記載されている。
この関連技術は、ソースコード検証においてソースコードをモデル検査可能なモデルに変換し検証を行う技術である。しかし、この関連技術では、ループ内に任意値を含む変数の計算処理があっても特別な処理は行わず、そのままモデル検査を行っている。このため、ループ内で繰り返し任意値に関わる検証を行い、重複する部分の検査の検証時間が必要となっていた。
特表2007−528059号公報
モデル検査技法を利用してソースコードの検証を行う処理において、モデル検査を実施する前に任意値に関連する計算処理を削除し、ループ外で任意値を代入する処理を追加する。
本発明のループ最適化システムは、ソースコードから自動的にモデルを生成し、ソースコードに対し、モデル検査による検証を行うモデル検査制御部と、モデル中のループ内に存在する任意値を含む変数の代入式をループ外に移動し、検証時間の短縮を図る任意値ループ制御部とを具備する。
本発明のループ最適化方法は、ソースコードから自動的にモデルを生成し、ソースコードに対し、モデル検査による検証を行うステップと、モデルの生成の過程で、モデル中のループ内に存在する任意値を含む変数の代入式をループ外に移動し、検証時間の短縮を図るステップとを含む。
本発明のプログラムは、ソースコードから自動的にモデルを生成し、ソースコードに対し、モデル検査による検証を行うステップと、モデルの生成の過程で、モデル中のループ内に存在する任意値を含む変数の代入式をループ外に移動し、検証時間の短縮を図るステップとをコンピュータに実行させるためのプログラムである。
ループ内のモデル検査のうち、繰り返しで重複する検査分の検証時間を短縮する。
以下に、本発明の実施形態について添付図面を参照して説明する。
図1を参照すると、本発明のループ最適化システムは、モデル検査制御部10と、記憶部20と、任意値ループ制御部30を備える。
本発明のループ最適化システムの例として、PC(パソコン)、シンクライアント端末/サーバ、ワークステーション、メインフレーム、スーパーコンピュータ等のコンピュータや、携帯電話機、PDA(Personal Digital Assistants)、カーナビ(カーナビゲーションシステム)、携帯ゲーム機、又は同様の無線通信機能を有する電子機器等の携帯端末が考えられる。但し、実際には、これらの例に限定されない。
モデル検査制御部10、及び任意値ループ制御部30の例として、CPU(Central Processing Unit)やマイクロプロセッサ(microprocessor)等の処理装置、又は同様の機能を有する半導体集積回路(Integrated Circuit:IC)等が考えられる。なお、モデル検査制御部10、及び任意値ループ制御部30は、各々の機能をコンピュータに実行させるためのプログラムでも良い。但し、実際には、これらの例に限定されない。
記憶部20の例として、メモリ等の半導体記憶装置、ハードディスク等の外部記憶装置(ストレージ)、又は、記憶媒体(メディア)等が考えられる。また、記憶部20は、中継機器や周辺機器でも良い。更に、記憶部20は、複数のモデル検査制御部10や任意値ループ制御部30により共有されていても良い。但し、実際には、これらの例に限定されない。
また、モデル検査制御部10、記憶部20、及び任意値ループ制御部30の各々は、物理的に独立したコンピュータでも良い。例えば、モデル検査制御部10を端末とし、記憶部20や任意値ループ制御部30をサーバとするネットワークシステムが考えられる。但し、実際には、これらの例に限定されない。
モデル検査制御部10は、CFGモデル作成部11と、検査モデル作成部12と、モデル検査実行部13と、検査結果出力部14を含む。
記憶部20は、変換前CFGモデル記憶部21と、変換後CFGモデル記憶部22と、検査モデル記憶部23を含む。
任意値ループ制御部30は、ループ検出部31と、データ依存グラフ作成部32と、ループ外利用変数マーク部33と、部分グラフ検出部34と、CFGモデル変換部35を含む。
CFGモデル作成部11は、検査仕様1と検査対象コード2を読み込み、コンパイラ最適化処理を実施した上でCFGモデルを作成し、記憶部20の変換前CFGモデル記憶部21に出力する。なお、検査仕様1は、モデル検査法を定義した情報である。検査対象コード2は、検査対象となるソースコードである。
検査モデル作成部12は、記憶部20の変換後CFGモデル記憶部21からCFGモデルを読み込み、計算木論理(Computation Tree Logic:CTL)を用いた記号モデル検査法に基づいて検査モデルを作成し、記憶部20の検査モデル記憶部23に出力する。
モデル検査実行部13は、記憶部20の検査モデル記憶部23から検査モデルを読み込み、上記の計算木論理(CTL)を用いた記号モデル検査法に基づいて検査を実行する。
検査結果出力部14は、記号モデル検査実行部12が実行した検査の結果を検査結果3に出力する。
変換前CFGモデル記憶部21は、CFGモデル作成部11から変換前のCFGモデルを取得して保持し、変換前のCFGモデルをループ検出部31に提供する。
変換後CFGモデル記憶部22は、CFGモデル変換部35から変換後のCFGモデルを取得して保持し、変換後のCFGモデルを検査モデル作成部12に提供する。
検査モデル記憶部23は、検査モデル作成部12から検査モデルを取得して保持し、検査モデルをモデル検査実行部13に提供する。
ループ検出部31は、記憶部20の変換前CFGモデル記憶部21に保持されたCFGモデルを読み込み、CFGモデル中のループ処理を検出する。
データ依存グラフ作成部32は、データ依存グラフ作成法に基づいて、ループ検出部31が検出したループ中に出現する値のデータ依存グラフを作成する。
ループ外利用変数マーク部33は、データ依存グラフ作成部32が作成したデータ依存グラフ中の各変数に対し、その変数(データ依存グラフ中の各変数)がループ以降で利用されていればマークを付ける。すなわち、ループ外利用変数マーク部33は、データ依存グラフ中の各変数のうち、ループ以降で利用されている変数にマークする。
部分グラフ検出部34は、データ依存グラフ作成部32が作成したデータ依存グラフの中から、任意値を要素に含み、ループ外利用変数マーク部33がマークした変数をただ一つ含む部分グラフを検出する。
CFGモデル変換部35は、部分グラフ検出部34が検出した部分グラフに含まれる変数の計算処理に対応するCFGモデル要素をCFGモデルから削除し、当該ループの直後に、部分グラフ検出部34が検出した部分グラフにただ一つ含まれる、ループ外利用変数マーク部33がマークした変数に対して、任意値を代入する計算処理に対応するCFGモデル要素をCFGモデルに追加する。
次に、図2のフローチャートを参照して、本発明のループ最適化システムの動作について詳細に説明する。
(1)ステップS101
まず、CFGモデル作成部11は、検査対象コード2をコンパイラ最適化処理を施した上で、検査仕様1を踏まえてCFGモデルを作成し、変換前CFGモデル記憶部21に記憶する。
(2)ステップS102
次に、ループ検出部31は、変換前CFGモデル記憶部21に記憶されたCFGモデルの中に処理対象のループがあるか確認する。ここでは、ループ検出部31は、変換前CFGモデル記憶部21に記憶されたCFGモデルの中にある処理対象のループを検出する。処理対象のループとは、以降のステップS103からステップS107までの処理を実施していない(未実施の)ループである。
(3)ステップS103
データ依存グラフ作成部32は、ループ検出部31により処理対象のループが検出された場合、ループ検出部31により検出されたループ中に出現する値のデータ依存グラフを作成する。
(4)ステップS104
次に、ループ外利用変数マーク部33は、データ依存グラフ作成部32が作成したデータ依存グラフ中の各変数に対し、その変数がループ以降で利用されていればマークを付ける。
(5)ステップS105
次に、部分グラフ検出部34は、データ依存グラフ作成部32が作成したデータ依存グラフの中から、任意値を要素に含み、ループ外利用変数マーク部33がマークした変数をただ一つ含む部分グラフが存在するか確認する。ここでは、部分グラフ検出部34は、データ依存グラフ作成部32が作成したデータ依存グラフの中から、任意値を要素に含み、ループ外利用変数マーク部33がマークした変数をただ一つ含む部分グラフを検出する。
(6)ステップS106
CFGモデル変換部35は、任意値を要素に含み、ループ外利用変数マーク部33がマークした変数をただ一つ含む部分グラフが存在する場合、すなわち、部分グラフ検出部34により該当する部分グラフが検出された場合、部分グラフ検出部34により検出された部分グラフに含まれる変数の計算処理に対応するCFGモデル要素をCFGモデルから削除する。
(7)ステップS107
更に、CFGモデル変換部35は、当該ループの直後に、部分グラフ検出部34が検出した部分グラフにただ一つ含まれる、ループ外利用変数マーク部33がマークした変数に対して、任意値を代入する計算処理に対応するCFGモデル要素をCFGモデルに追加する。
(8)ステップS108
上記の(ステップS102からステップS107までの)処理を処理対象のループがなくなるまで実施した後、検査モデル作成部12は、一連の処理で変換されたCFGモデルを記憶する変換後CFGモデル記憶部22のCFGモデルから検査モデルを作成し、検査モデル記憶部23に記憶する。検査モデル作成処理は、従来技術で行うようにしても良い。
(9)ステップS109
モデル検査実行部13は、検査モデル記憶部23に記憶された検査モデルを読み込み、モデル検査を実施する。
(10)ステップS110
最後に、検査結果出力部14は、結果を検査結果3に出力する。
以下に、任意値ループ制御部30の動作を具体的に説明する。
まず、図3A,図3Bを参照して、CFGモデルが変換される場合の例を説明する。ここでは、図3Aは、CFGモデルの変換前の手順を示す。図3Bは、CFGモデルの変換後の手順を示す。
ループ検出部31は、変換前のCFGモデルを参照し、図3Aに示すように、「if (i < 10)」から「t = f()」へのループを検出する。
データ依存グラフ作成部32は、当該ループ中に出現する値のデータ依存グラフを作成する。
ループ外利用変数マーク部33は、データ依存グラフ作成部32が作成したデータ依存グラフ中の各変数に対し、その変数がループ以降で利用されていればマークを付ける。この例では、図4に示すように、「x」と「y」がループ以降で利用されているとし、「*」マークを付ける。
部分グラフ検出部34は、データ依存グラフの中で、任意値を持つ「f()」を要素に含み、図4の左側(「x」側)に示すような、ループ外利用変数マーク部33がマークした変数「x」をただ一つ含む部分グラフを検出する。
CFGモデル変換部35は、図3Bに示すように、部分グラフ作成部34が検出した部分グラフに含まれる変数の計算処理に対応するCFGモデル要素をCFGから削除し、当該ループの直後に、部分グラフ検出部34が検出した部分グラフにただ一つ含まれる、ループ外利用変数マーク部33がマークした変数「x」に対して、任意値を代入する計算処理に対応するCFGモデル要素をCFGモデルに追加する。CFGモデル要素を追加されたCFGモデルが、変換後のCFGモデルである。
次に、図5を参照して、CFGモデルが変換されない場合の例を説明する。
ループ検出部31は、「if (i < 10)」から「t = f()」へのループを検出する。このとき、「x = t + i」と「y = t」という計算処理があり、「t」が「x」と「y」の両方と依存関係がある点が図3との違いである。
データ依存グラフ作成部32は、当該ループ中に出現する値のデータ依存グラフを作成する。ループ外利用変数マーク部33は、データ依存グラフ作成部32が作成したデータ依存グラフ中の各変数に対し、その変数がループ以降で利用されていればマークを付ける。この例では、図6に示すように、「x」と「y」がループ以降で利用されているとし、「*」マークを付ける。
部分グラフ検出部34は、データ依存グラフの中で、任意値を持つ「f()」を要素に含み、ループ外利用変数マーク部33がマークした変数をただ一つ含む部分グラフを検出しようとするが、この部分グラフ中には「x」と「y」の二つが含まれるので条件に合致しない。従って、この部分グラフに対しては、CFGモデルの変換は行われない。すなわち、部分グラフ検出部34は、データ依存グラフの中で、ループ外利用変数マーク部33がマークした変数が二つ以上含まれる部分グラフに対しては、CFGモデルの変換を制限する。この場合、部分グラフ検出部34は、CFGモデル変換部35の動作を制限する。CFGモデル変換部35は、CFGモデルを変更せずに変換後CFGモデル記憶部22に出力する。
もし、この判定を行わなかった場合、ループ内ならびにループから出た後に保持されているべき「x = y + i」(ループから出た後は、「i」はループの最後に使用された値(図5の例では、i=9)となる)という関係が成立しなくなってしまう。従って、このように部分グラフの中に複数のマークされた変数がある場合には、CFGモデルを変換することはできない。
以上のように、本発明では、モデル検査技法を利用してソースコードの検証を行う処理において、モデル生成の過程で、ループ内に存在する任意値を含む変数の代入式をループ外に移動することにより、検証時間を短縮する。
本発明のループ最適化システムは、検査仕様と、検査対象コードと、検査結果と、モデル検査制御部と、記憶部と、任意値ループ制御部を含む。ここで、モデル検査制御部は、コンパイラ最適化処理、及び計算木論理(CTL)を用いた記号モデル検査法等の従来技術で構成するようにしても良い。
本発明の効果は、ループ内のモデル検査の検証時間を短縮できることにある。その理由は、任意値ループ制御部30により、ループ内に存在する、任意値を含み、ループ内の他の計算処理とは独立した計算処理をループ外に移動するためである。
例えば、従来のモデル検査では、ループ内に任意値が存在した場合、ループの各回において、任意値をしらみつぶしに全ての状態について検査を行う。従って、図3の変換前の例の場合、第1回目のループの検査で変数tが表せる最小値から最大値までの場合が生成されて検査され、第2回目のループの検査で、先に生成された場合のそれぞれから、更に変数tが表せる最小値から最大値までの場合が生成されて検査される。従って、第9回目までに生成される場合の数は、最小値から最大値までの場合の数の9乗となる。
これに対し、本発明では、任意値の計算処理をループ外に移動するため、ループ後に最小値から最大値までの場合の数の検査を行うだけで良い。この場合の数の差が計算量に影響し、検証時間を短くするという効果を持つ。
任意値は「取り得る値の全ての状態」を意味するため、任意値に対する計算処理の結果は、任意値の状態に含まれる。従って、任意値を持つ場合の検査を行えば、ある変数の全ての場合の検査を行ったことに相当する。
本発明によれば、モデル検査を利用したソースコードの検証ツールの処理時間の効率化といった用途に適用できる。
以上、本発明の実施形態を詳述してきたが、実際には上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の変更があっても本発明に含まれる。
図1は、本発明のループ最適化システムの構成例を示すブロック図である。 図2は、本発明のループ最適化システムの動作を示すフローチャートである。 図3Aは、CFGモデルが変換される場合の変換前の手順を示す図である。 図3Bは、CFGモデルが変換される場合の変換後の手順を示す図である。 図4は、CFGモデルが変換される場合のデータ依存グラフの例を示す図である。 図5は、CFGモデルが変換されない場合の手順を示す図である。 図6は、CFGモデルが変換されない場合のデータ依存グラフの例を示す図である。
符号の説明
10…モデル検査制御部
11…CFGモデル作成部
12…検査モデル作成部
13…モデル検査実行部
14…検査結果出力部
20…記憶部
21…変換前CFGモデル記憶部
22…変換後CFGモデル記憶部
23…検査モデル記憶部
30…任意値ループ制御部
31…ループ検出部
32…データ依存グラフ作成部
33…ループ外利用変数マーク部
34…部分グラフ検出部
35…CFGモデル変換部

Claims (10)

  1. ソースコードから自動的にモデルを生成し、前記ソースコードに対し、モデル検査による検証を行うモデル検査制御部と、
    前記モデル中のループ内に存在する任意値を含む変数の代入式をループ外に移動し、検証時間の短縮を図る任意値ループ制御部と
    を具備し、
    前記モデル検査制御部は、
    前記ソースコード及び検査仕様を読み込み、コンパイラ最適化処理を実施した上でCFG(コントロールフローグラフ)モデルを作成し、前記任意値ループ制御部に提供するCFGモデル作成部と、
    前記任意値ループ制御部から提供されたCFGモデルを読み込み、計算木論理(Computation Tree Logic:CTL)を用いた記号モデル検査法に基づいて検査モデルを作成する検査モデル作成部と、
    前記検査モデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査を実行するモデル検査実行部と、
    前記実行された検査の結果を出力する検査結果出力部と
    を具備し、
    前記任意値ループ制御部は、
    前記モデル検査制御部から提供されたCFGモデルを読み込み、前記CFGモデル中のループを検出するループ検出部と、
    前記検出されたループ中に出現する値のデータ依存グラフを作成するデータ依存グラフ作成部と、
    前記データ依存グラフ中の各変数のうち、前記検出されたループ以降で利用されている変数にマークするループ外利用変数マーク部と、
    前記データ依存グラフの中から、前記任意値を要素に含み、前記マークされた変数を含む部分グラフを検出する部分グラフ検出部と、
    前記検出された部分グラフに含まれる変数の計算処理に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフに含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加して、前記モデル検査制御部に提供するCFGモデル変換部と
    を具備する
    ループ最適化システム。
  2. 請求項に記載のループ最適化システムであって、
    前記CFGモデル作成部から変換前のCFGモデルを取得して保持し、前記変換前のCFGモデルを前記ループ検出部に前記提供するための変換前CFGモデル記憶部と、
    前記CFGモデル変換部から変換後のCFGモデルを取得して保持し、前記変換後のCFGモデルを前記検査モデル作成部に提供するための変換後CFGモデル記憶部と、
    前記検査モデル作成部から前記検査モデルを取得して保持し、前記検査モデルを前記モデル検査実行部に提供するための検査モデル記憶部と
    を更に具備する
    ループ最適化システム。
  3. 請求項1又は2に記載のループ最適化システムであって、
    前記部分グラフ検出部は、前記データ依存グラフの中から、前記任意値を含む変数の代入式を要素に含み、前記マークされた変数をただ一つ含む部分グラフを検出し、
    前記CFGモデル変換部は、前記任意値を含む変数の代入式に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフにただ一つ含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記モデル検査制御部に提供する
    ループ最適化システム。
  4. 請求項に記載のループ最適化システムであって、
    前記部分グラフ検出部は、前記マークされた変数が二つ以上含まれる部分グラフに対しては、前記CFGモデルの変換を制限し、
    前記CFGモデル変換部は、前記CFGモデルを前記モデル検査制御部に提供する
    ループ最適化システム。
  5. ソースコードから自動的にモデルを生成し、前記ソースコードに対し、モデル検査による検証を行い、前記モデルの生成の過程で、前記モデル中のループ内に存在する任意値を含む変数の代入式をループ外に移動し、検証時間の短縮を図るためのループ最適化方法であって、
    前記ソースコード及び検査仕様を読み込み、コンパイラ最適化処理を実施した上でCFG(コントロールフローグラフ)モデルを作成するステップと、
    前記CFGモデルを読み込み、前記CFGモデル中のループを検出するステップと、
    前記検出されたループ中に出現する値のデータ依存グラフを作成するステップと、
    前記データ依存グラフ中の各変数のうち、前記検出されたループ以降で利用されている変数にマークするステップと、
    前記データ依存グラフの中から、前記任意値を要素に含み、前記マークされた変数を含む部分グラフを検出するステップと、
    前記検出された部分グラフに含まれる変数の計算処理に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフに含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記CFGモデルを変換するステップと
    前記変換されたCFGモデルを読み込み、計算木論理(Computation Tree Logic:CTL)を用いた記号モデル検査法に基づいて検査モデルを作成するステップと、
    前記検査モデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査を実行するステップと、
    前記実行された検査の結果を出力するステップと
    を含
    ループ最適化方法。
  6. 請求項に記載のループ最適化方法であって、
    前記データ依存グラフの中から、前記任意値を含む変数の代入式を要素に含み、前記マークされた変数をただ一つ含む部分グラフを検出するステップと、
    前記任意値を含む変数の代入式に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフにただ一つ含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記CFGモデルを変換するステップと
    を更に含む
    ループ最適化方法。
  7. 請求項に記載のループ最適化方法であって、
    前記マークされた変数が二つ以上含まれる部分グラフに対しては、前記CFGモデルの変換を制限するステップと、
    前記CFGモデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査モデルを作成するステップと
    を更に含む
    ループ最適化方法。
  8. ソースコードから自動的にモデルを生成し、前記ソースコードに対し、モデル検査による検証を行い、前記モデルの生成の過程で、前記モデル中のループ内に存在する任意値を含む変数の代入式をループ外に移動し、検証時間の短縮を図るステッをコンピュータに実行させるためのプログラムであって、
    前記ソースコード及び検査仕様を読み込み、コンパイラ最適化処理を実施した上でCFG(コントロールフローグラフ)モデルを作成するステップと、
    前記CFGモデルを読み込み、前記CFGモデル中のループを検出するステップと、
    前記検出されたループ中に出現する値のデータ依存グラフを作成するステップと、
    前記データ依存グラフ中の各変数のうち、前記検出されたループ以降で利用されている変数にマークするステップと、
    前記データ依存グラフの中から、前記任意値を要素に含み、前記マークされた変数を含む部分グラフを検出するステップと、
    前記検出された部分グラフに含まれる変数の計算処理に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフに含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記CFGモデルを変換するステップと
    前記変換されたCFGモデルを読み込み、計算木論理(Computation Tree Logic:CTL)を用いた記号モデル検査法に基づいて検査モデルを作成するステップと、
    前記検査モデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査を実行するステップと、
    前記実行された検査の結果を出力するステップと
    をコンピュータに実行させるための
    プログラム。
  9. 請求項に記載のプログラムであって、
    前記データ依存グラフの中から、前記任意値を含む変数の代入式を要素に含み、前記マークされた変数をただ一つ含む部分グラフを検出するステップと、
    前記任意値を含む変数の代入式に対応するCFGモデル要素を前記CFGモデルから削除し、前記検出されたループの直後に、前記検出された部分グラフにただ一つ含まれる前記マークされた変数に対して、前記削除されたCFGモデル要素を前記CFGモデルに追加し、前記CFGモデルを変換するステップと
    を更にコンピュータに実行させるための
    プログラム。
  10. 請求項に記載のプログラムであって、
    前記マークされた変数が二つ以上含まれる部分グラフに対しては、前記CFGモデルの変換を制限するステップと、
    前記CFGモデルを読み込み、前記計算木論理(CTL)を用いた記号モデル検査法に基づいて検査モデルを作成するステップと
    を更にコンピュータに実行させるための
    プログラム。
JP2008266347A 2008-10-15 2008-10-15 ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム Expired - Fee Related JP5093508B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008266347A JP5093508B2 (ja) 2008-10-15 2008-10-15 ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008266347A JP5093508B2 (ja) 2008-10-15 2008-10-15 ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム

Publications (2)

Publication Number Publication Date
JP2010097328A JP2010097328A (ja) 2010-04-30
JP5093508B2 true JP5093508B2 (ja) 2012-12-12

Family

ID=42258977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008266347A Expired - Fee Related JP5093508B2 (ja) 2008-10-15 2008-10-15 ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム

Country Status (1)

Country Link
JP (1) JP5093508B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943487B2 (en) * 2011-01-20 2015-01-27 Fujitsu Limited Optimizing libraries for validating C++ programs using symbolic execution
JP2019113997A (ja) * 2017-12-22 2019-07-11 国立大学法人京都大学 プログラム検証装置、プログラム検証方法、プログラム検証のためのコンピュータプログラム、プログラム変換器、プログラム変換方法、プログラム変換のためのコンピュータプログラム、プログラム製造方法、及び検証用プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004036463A1 (ja) * 2002-10-15 2004-04-29 Renesas Technology Corp. コンパイラ及び論理回路の設計方法
US7346486B2 (en) * 2004-01-22 2008-03-18 Nec Laboratories America, Inc. System and method for modeling, abstraction, and analysis of software

Also Published As

Publication number Publication date
JP2010097328A (ja) 2010-04-30

Similar Documents

Publication Publication Date Title
CN109426723B (zh) 使用释放后内存的检测方法、系统、设备及存储介质
CN106528100B (zh) 用于安全关键软件开发的基于模型的技术和过程的系统和方法
CN101473301B (zh) 迭代静态和动态软件分析
EP3234851B1 (en) A system and method for facilitating static analysis of software applications
US9405906B1 (en) System and method for enhancing static analysis of software applications
US10095512B2 (en) Program development support device, non-transitory storage medium storing thereon computer-readable program development support program, and program development support method
US20180032735A1 (en) System and method for enhancing static analysis of software applications
CN116245074A (zh) 芯片验证方法、设备及存储介质
JP2017174418A (ja) モデルチェックのためのデータ構造抽象化
US20150220733A1 (en) Apparatus and method for detecting a malicious code based on collecting event information
Corradini et al. Resttestgen: An extensible framework for automated black-box testing of restful apis
CN108874656A (zh) 代码测试方法、装置、可读存储介质及计算机设备
US9658938B2 (en) Iterative test generation based on data source analysis
US20200081693A1 (en) Static enforcement of provable assertions at compile
JP5093508B2 (ja) ループ最適化システム、ループ最適化方法、及びループ最適化用プログラム
WO2019142266A1 (ja) テストケース生成装置、テストケース生成方法およびテストケース生成プログラム
JP5233355B2 (ja) プロパティ生成システムおよびプロパティ検証システム
CN113076084A (zh) 资源文件处理方法、装置、设备及存储介质
US20120291019A1 (en) Program verification apparatus based on model verifying and storage medium
JP5170555B2 (ja) エラートレース簡略化システム、エラートレース簡略化方法、及びプログラム
Mariano et al. Analyzing graph-based algorithms employed to generate test cases from finite state machines
JP2015026262A5 (ja)
JP5545133B2 (ja) 静的解析処理システム、方法、およびプログラム
US8352234B2 (en) Model generation based on a constraint and an initial model
JP6771619B2 (ja) ソースコードのプロパティを検証するための方法およびシステム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120321

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120604

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120725

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120822

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120904

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150928

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees