(57)【要約】【課題】ＦＰＧＡに組み込む処理ブロックを適切に、より短時間で簡易に決定することのできる情報処理システムを提供する。【解決手段】情報処理システム１００の情報処理装置は、プログラムソースコードから複数の処理ブロックを抽出するプログラム解析部２１０と、処理ブロックごとにＦＰＧＡに処理させる場合の回路面積及び推定実行時間を算出するＦＰＧＡ処理解析部２２０と、抽出された複数の処理ブロックから１以上の処理ブロックを、ＦＰＧＡの回路で処理する処理ブロックとして選択し、回路面積、推定実行時間及び使用メモリ量のパラメータのうち、いずれか１つ以上のパラメータを軸とするグラフに、１つ以上のパラメータの最大値と共に、選択された処理ブロックにおけるパラメータに係る値を示して、表示装置に表示させる組合せ解析部２３０と、を備える。【選択図】図２
2017111572.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行することにより情報を処理する情報処理装置と、
前記情報処理装置からの信号を受信して画像を表示する表示装置と、
前記情報処理装置に対し入力信号を出力する入力装置と、を有し、
前記情報処理装置は、
プログラムソースコードから複数の処理ブロックを抽出するプログラム解析部と、
前記処理ブロックごとにＦＰＧＡに処理させる場合の回路面積及び推定実行時間を算出するＦＰＧＡ処理解析部と、
前記抽出された複数の前記処理ブロックから１以上の処理ブロックを、前記ＦＰＧＡの回路で処理する前記処理ブロックとして選択し、前記回路面積、前記推定実行時間及び使用メモリ量のパラメータのうち、いずれか１つ以上のパラメータを軸とするグラフに、前記１つ以上のパラメータの最大値と共に、前記選択された前記処理ブロックにおける前記パラメータに係る値を示して、前記表示装置に表示させる組合せ解析部と、を備える情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
前記組合せ解析部は、前記処理ブロックが多重ループ処理である場合、前記入力装置からの入力信号に基づいて、多重度を変更し、前記変更された前記多重度における前記パラメータに係る値を演算して前記グラフ上に表示する
ことを特徴とする情報処理システム。
【請求項３】
請求項２に記載の情報処理システムにおいて、
前記１つ以上のパラメータを軸とするグラフは、２つのパラメータを軸とする前記グラフであり、
前記組合せ解析部は、前記グラフにおいて、前記処理ブロックの前記パラメータに係る値を矩形で表示させ、前記矩形の右上角部のドラッグ操作を前記入力装置から受信することにより、前記変更された前記多重度に対応する異なる矩形を表示する
ことを特徴とする情報処理システム。
【請求項４】
請求項２又は３に記載の情報処理システムにおいて、
前記組合せ解析部は、前記入力装置の操作により、前記グラフにおいて、前記多重ループ処理を有する前記処理ブロックが選択されている場合、前記多重ループ処理の最大多重度及び現在の前記多重度の表示をおこなう
ことを特徴とする情報処理システム。
【請求項５】
請求項１乃至４のいずれか一項に記載の情報処理システムであって、
前記組合せ解析部は、前記軸が決定された後、最初に表示される前記グラフに、前記推定実行時間が最大である前記処理ブロックを前記グラフの原点に接する配置で表示する
ことを特徴とする情報処理システム。
【請求項６】
請求項１乃至５のいずれか一項に記載の情報処理システムであって、
前記１つ以上のパラメータを軸とするグラフは、２つのパラメータを軸とする前記グラフであり、
前記組合せ解析部は、前記入力装置からの入力により、前記ＦＰＧＡの回路で処理する前記処理ブロックとして、新たに一つの前記処理ブロックが追加された場合、既に表示している前記処理ブロックの矩形の右上角の位置が、前記追加された前記処理ブロックの矩形の左下角の位置となる配置で表示する
ことを特徴とする情報処理システム。
【請求項７】
請求項１乃至６のいずれか一項に記載の情報処理システムであって、
前記組合せ解析部は、前記選択された前記処理ブロックのうちの複数が並列処理を行う場合、前記複数の前記並列処理を行う前記処理ブロックが前記グラフの前記推定実行時間の軸上において占める領域を重複して表示する
ことを特徴とする情報処理システム。
【請求項８】
請求項１乃至７のいずれか一項に記載の情報処理システムであって、
前記情報処理装置は、前記プログラム解析部が抽出した前記複数の処理ブロックそれぞれを一つのレコードとして保存する処理ブロックテーブルを更に備え、
前記処理ブロックテーブルは、前記複数の処理ブロックのそれぞれの前記プログラムソースコードにおける位置を保存するフィールドを有する
ことを特徴とする情報処理システム。
【請求項９】
請求項８に記載の情報処理システムであって、
前記組合せ解析部は、前記入力装置からの前記入力信号に基づいて、前記処理ブロックテーブルから前記グラフ内に表示されている前記処理ブロックを除いた前記処理ブロックのリストを表示する
ことを特徴とする情報処理システム。
【請求項１０】
請求項１乃至９のいずれか一項に記載の情報処理システムであって、
前記組合せ解析部は、前記パラメータのうち、いずれか一つの前記パラメータの値が最大値を超えた場合に、前記いずれか一つのパラメータの値が最大値を超えている旨の表示を行う
ことを特徴とする情報処理システム。
【請求項１１】
プログラムソースコードから複数の処理ブロックを抽出し、
前記処理ブロックごとにＦＰＧＡに処理させる場合の回路面積及び推定実行時間を算出し、
前記抽出された複数の前記処理ブロックから１以上の処理ブロックを、前記ＦＰＧＡの回路で処理する前記処理ブロックとして選択し、
前記回路面積、前記推定実行時間及び使用メモリ量のパラメータのうち、いずれか１つ以上のパラメータを軸とするグラフに、前記１つ以上のパラメータの最大値と共に、前記選択された前記処理ブロックにおける前記パラメータに係る値を示して表示させる、情報処理方法。
【請求項１２】
プログラムソースコードから複数の処理ブロックを抽出し、
前記処理ブロックごとにＦＰＧＡに処理させる場合の回路面積及び推定実行時間を算出し、
前記抽出された複数の前記処理ブロックから１以上の処理ブロックを、前記ＦＰＧＡの回路で処理する前記処理ブロックとして選択し、
前記回路面積、前記推定実行時間及び使用メモリ量のパラメータのうち、いずれか１つ以上のパラメータを軸とするグラフに、前記１つ以上のパラメータの最大値と共に、前記選択された前記処理ブロックにおける前記パラメータに係る値を示して表示させる
ことを処理装置に実行させるプログラムを記録したコンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法及びコンピュータ読取可能記憶媒体に関し、例えば、ＦＰＧＡを用いたシステム開発を支援するシステムに適用して好適なものである。
【背景技術】
【０００２】
組み込み制御装置やコンピュータシステムにおけるシステム開発においてプログラマブルな回路素子であるＦＰＧＡ（Field Programmable Gate Array）が用いられることが一般的になっている。ＦＰＧＡは、システムの構築にあたって、ソフトウェアの命令を実行するＣＰＵ（Central Processing Unit）と共に用いられることが多い。また、ＣＰＵやＦＰＧＡを開発段階において同じ言語で記載するＯｐｅｎＣＬ（Open Computing Language）（登録商標）等のプログラム言語も知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Joao M.P. Cardoso and Pedro C. Diniz “Compilation Techniques forReconfigurable Architectures”, p.34, Springer Science+Media, LLC, (2010)
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、設計段階において、どのような処理をＣＰＵに実行させるか、ＦＰＧＡに組み込むかを判断するためには、必要な回路面積、メモリ量及び処理の並列性などの考慮すべき点が多数あり、煩雑であるため、ＦＰＧＡに組み込む処理を決定するのに多くの時間を費やしていた。例えば非特許文献１では、プログラムを一度にＦＰＧＡの回路に変換してしまうため、適切な回路面積、メモリ量及び処理の並列性を検討しながら選択するためには何度も条件を変えて変換し結果を探索する必要があり、多くの時間がかかっていた。
【０００５】
本発明は、以上の点を考慮してなされたもので、ＦＰＧＡに組み込む処理ブロックを適切に、より短時間で簡易に決定することのできる情報処理システム、情報処理方法及びコンピュータ読取可能記憶媒体を提供しようとするものである。
【課題を解決するための手段】
【０００６】
かかる課題を解決するため本発明の情報処理システムにおいては、プログラムを実行することにより情報を処理する情報処理装置と、前記情報処理装置からの信号を受信して画像を表示する表示装置と、前記情報処理装置に対し入力信号を出力する入力装置と、を有し、前記情報処理装置は、プログラムソースコードから複数の処理ブロックを抽出するプログラム解析部と、前記処理ブロックごとにＦＰＧＡに処理させる場合の回路面積及び推定実行時間を算出するＦＰＧＡ処理解析部と、前記抽出された複数の前記処理ブロックから１以上の処理ブロックを、前記ＦＰＧＡの回路で処理する前記処理ブロックとして選択し、前記回路面積、前記推定実行時間及び使用メモリ量のパラメータのうち、いずれか１つ以上のパラメータを軸とするグラフに、前記１つ以上のパラメータの最大値と共に、前記選択された前記処理ブロックにおける前記パラメータに係る値を示して、前記表示装置に表示させる組合せ解析部と、を備える情報処理システムである。
【０００７】
また、本発明の情報処理方法においては、プログラムソースコードから複数の処理ブロックを抽出し、前記処理ブロックごとにＦＰＧＡに処理させる場合の回路面積及び推定実行時間を算出し、前記抽出された複数の前記処理ブロックから１以上の処理ブロックを、前記ＦＰＧＡの回路で処理する前記処理ブロックとして選択し、前記回路面積、前記推定実行時間及び使用メモリ量のパラメータのうち、いずれか１つ以上のパラメータを軸とするグラフに、前記１つ以上のパラメータの最大値と共に、前記選択された前記処理ブロックにおける前記パラメータに係る値を示して表示させる、情報処理方法である。
【０００８】
また、本発明のコンピュータ読取可能記憶媒体においては、プログラムソースコードから複数の処理ブロックを抽出し、前記処理ブロックごとにＦＰＧＡに処理させる場合の回路面積及び推定実行時間を算出し、前記抽出された複数の前記処理ブロックから１以上の処理ブロックを、前記ＦＰＧＡの回路で処理する前記処理ブロックとして選択し、前記回路面積、前記推定実行時間及び使用メモリ量のパラメータのうち、いずれか１つ以上のパラメータを軸とするグラフに、前記１つ以上のパラメータの最大値と共に、前記選択された前記処理ブロックにおける前記パラメータに係る値を示して表示させることを処理装置に実行させるコンピュータ読取可能記憶媒体である。
【発明の効果】
【０００９】
本発明によれば、ＦＰＧＡに組み込む処理ブロックを適切に、より短時間で簡易に決定することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態に係る情報処理システムのハードウェア構成について示す図である。
【図２】情報処理システムの情報処理装置の機能構成について示すブロック図である。
【図３】情報処理システムが行う処理ブロックの選択支援処理について示すフローチャートである。
【図４】プログラム解析部による処理ブロックテーブル作成処理について示すフローチャートである。
【図５】処理ブロックテーブルの構成の例について示す図である。
【図６】ＦＰＧＡ処理解析部によるＦＰＧＡ処理解析処理のフローチャートである。
【図７】組合せ解析部による初期値設定処理のフローチャートである。
【図８】組合せ解析部が表示装置に表示する画面の例について示す図である。
【図９】選択結果テーブルの構成の例について示す図である。
【図１０】組合せ解析部による組合せ変更表示処理のフローチャートが示されている。
【図１１】組合せ解析部が表示装置に表示する画面の例について示す図である。
【図１２】組合せ解析部が表示装置に表示する画面の例について示す図である。
【図１３】組合せ解析部が表示装置に表示する画面の例について示す図である。
【図１４】組合せ解析部が表示装置に表示する画面の例について示す図である。
【図１５】組合せ解析部が表示装置に表示する画面の例について示す図である。
【図１６】組合せ解析部が表示装置に表示する画面の例について示す図である。
【図１７】組合せ解析部が表示装置に表示する画面の例について示す図である。
【発明を実施するための形態】
【００１１】
以下図面について、本発明の一実施の形態を詳述する。以下の説明において、同様の要素には同一の符号を付し、重複する説明を省略する。
【００１２】
（１）  本実施の形態による情報処理システムの構成
図１は、本発明の実施の形態に係る情報処理システム１００のハードウェア構成について示す図である。この図に示されるように、情報処理システム１００は、プログラムの命令を実行することにより情報を処理する情報処理装置２００と、利用者の操作に基づいて、情報処理装置２００に対して入力信号を出力するマウスやキーボード等の入力装置５００と、情報処理装置２００からの信号を受信して画像を表示する液晶表示装置等の表示装置４００とから構成される。また、情報処理装置２００は、キャッシュメモリやＲＡＭ（Random Access Memory）からなる揮発性記憶部２０２と、ハードディスクやフラッシュメモリからなる不揮発性記憶部２０３と、揮発性記憶部２０２や不揮発性記憶部２０３に保存されたプログラムを実行するＣＰＵ（Central Processing Unit）２０１と、入力装置５００からの信号を受信する入力インタフェース２０４と、表示装置４００へ信号を送信する出力インタフェース２０５と、を有している。
【００１３】
図２は、情報処理システム１００の機能構成について示すブロック図である。ここで、情報処理装置２００の各機能ブロックは図１の情報処理装置２００内の各ハードウェアが協働して動作することにより実現される。図２に示されるように、情報処理装置２００は、ＯｐｅｎＣＬ（登録商標）等のプログラムソースコードから複数の処理ブロックを抽出して、処理ブロック毎にプログラムソースコードの位置を登録した処理ブロックテーブルを作成するプログラム解析部２１０と、処理ブロックごとにＦＰＧＡにおける推定実行時間及び回路面積を算出し、算出された推定実行時間及び回路面積を処理ブロックテーブルの対応する項目に保存するＦＰＧＡ処理解析部２２０と、抽出された複数の処理ブロックから１以上の処理ブロックを、ＦＰＧＡの回路で処理する処理ブロックとして選択し、回路面積、推定実行時間及び使用メモリ量のパラメータのうち、いずれか１つ以上のパラメータを軸とするグラフに、当該パラメータに係る選択された処理ブロックの値を示して表示装置４００に表示させる組合せ解析部２３０と、処理ブロック毎にプログラムソースコードの位置等を保存した処理ブロックテーブル２４０と、処理ブロックテーブル２４０からＦＰＧＡに実装するものとして選択された処理ブロックが登録される選択結果テーブル２５０と、ＦＰＧＡ毎に最大面積や動作周波数が保存されているＦＰＧＡスペック記憶部２６０と、プログラムソースコードが保存されたプログラムソースコード記憶部２７０と、を有している。
【００１４】
（２）  処理ブロックの選択支援処理
図３は、情報処理システム１００が行う処理ブロックの選択支援処理について示すフローチャートである。この図に示されるように、処理ブロックの選択支援処理では、まずプログラム解析部２１０により処理ブロックテーブル作成処理Ｓ１００が行われる。
【００１５】
図４には、プログラム解析部２１０による処理ブロックテーブル作成処理Ｓ１００について示すフローチャートである。この図に示されるように、処理ブロックテーブル作成処理Ｓ１００では、まず、プログラム解析部２１０は、プログラムソースコード記憶部２７０からプログラムソースコードを取得する（Ｓ１０１）。次に、プログラムソースコードから、ループ処理や関数の処理ブロックを抽出し（Ｓ１０２）、その処理ブロックのプログラムソースコードにおける位置を処理ブロックテーブル２４０に保存する（Ｓ１０３）。
【００１６】
図５には、処理ブロックテーブル２４０の構成の例が示されている。この図に示されるように処理ブロックテーブル２４０は、抽出された各処理ブロックごとにレコードが作成され、フィールドには、プログラムソースコードにおける位置を表す情報である、ファイル名、行番号、ループ処理なのか関数なのかの種別、その行番号に複数のループ処理又は関数があった場合における表記順等が含まれ、更に、回路面積、実行時間、最大多重度、必要となるメモリ量、及びＦＰＧＡ化する処理ブロックとして選択されたかどうかが示されるＦＰＧＡ化判定結果のフィールドが含まれる。なお、ここで多重度とは、並列に実行する処理の数であり、最大多重度とは多重度の最大値である。例えばループ繰り返し数８のループ処理の場合、このループが各ループ繰り返しを並列に実行可能であれば最大多重度は８、そうでなければ最大多重度は１になる。前者のループの場合、多重度は１〜８の間で任意に選ぶことができる。処理ブロックテーブル２４０の構成は図５に示された構成以外の構成であってもよい。また、処理ブロックテーブル２４０等のテーブルやデータベースの構成を取ることなく、単にプログラム内の変数として各値が保存されるものであってもよい。
【００１７】
図４に戻り、ステップＳ１０３において、図５の処理ブロックテーブルの例におけるファイル名、行番号、ループ処理なのか関数なのかの種別、その行番号に複数のループ処理又は関数があった場合における表記順のフィールドに書き込みを行った後、抽出された処理ブロックがループ処理である場合には、ループ並列性を解析し、並列性の最大値を最大多重度のフィールドに書き込む（Ｓ１０４）。また、処理ブロックの実行に必要なメモリ量についても計算し、メモリ量のフィールドに書き込む（Ｓ１０４）。ここで、関数がｍａｉｎ関数の場合には、大域変数に必要なメモリ量もｍａｉｎ関数の実行に必要なメモリ量に加算することとしてもよい。また、ＦＰＧＡ化判定結果の欄に初期値として「ｆａｌｓｅ」を書き込む（Ｓ１０５）。最後に、すべての処理ブロックについて終了したがどうかが確認され、終了している場合には、処理ブロックテーブル作成処理を終了する。終了していない場合には、再びプログラムソースコードから次の処理ブロックを抽出し（Ｓ１０２）、ステップＳ１０３〜Ｓ１０６の処理を繰り返す。図３に戻り、処理ブロックテーブル作成処理Ｓ１００が終了すると、次にＦＰＧＡ処理解析部２２０によるＦＰＧＡ処理解析処理Ｓ２００に移行する。
【００１８】
図６には、ＦＰＧＡ処理解析部２２０によるＦＰＧＡ処理解析処理Ｓ２００のフローチャートが示されている。この図に示されるように、ＦＰＧＡ処理解析処理Ｓ２００では、まず、ＦＰＧＡ処理解析部２２０が、処理ブロックテーブル作成処理Ｓ１００で作成した処理ブロックテーブル２４０から処理ブロックを選択し（Ｓ２０１）、取り出した処理ブロックをＦＰＧＡにおいて実行可能な形式に変換し、ＦＰＧＡにおける動作周波数と回路面積を取得する（Ｓ２０２）。次に、例えば、取得した動作周波数の逆数とそのループの繰り返し回数又は関数の実行回数を乗じる等の演算により、推定実行時間を算出し、算出された推定実行時間を回路面積と共に処理ブロックテーブル２４０の対応するフィールドに保存する（Ｓ２０３）。この乗算と推定実行時間の関係は、ＦＰＧＡがプログラムを１クロックで実行するように回路を生成することから成立する。次に、処理ブロックテーブルのすべての処理ブロックについて処理が終了したがどうかを確認し、終了している場合には、ＦＰＧＡ処理解析処理Ｓ２００を終了し、終了していない場合には、処理ブロックテーブルからまだ選択されていない処理ブロックを選択し（Ｓ２０１）、ステップＳ２０２〜Ｓ２０４の処理を繰り返す。図３に戻り、ＦＰＧＡ処理解析処理Ｓ２００が終了すると、次の組合せ解析部２３０による初期値設定処理Ｓ３００に移行する。
【００１９】
図７には、組合せ解析部２３０による初期値設定処理Ｓ３００のフローチャートが示されている。この図に示されるように、初期値設定処理Ｓ３００では、まず、組合せ解析部２３０が、ＦＰＧＡスペック記憶部２６０から、使用するＦＰＧＡのメモリ量及びＦＰＧＡの回路面積を取得し（Ｓ３０１）、利用者により入力される実行時間の上限値を取得する（Ｓ３０２）。次に表示装置４００に表示するグラフの軸としてどの種類のパラメータを用いて表示するかを選択する（Ｓ３０３）。ここで、パラメータには、例えば回路面積、推定実行時間及びメモリ量等のうちから選択することができる。本実施の形態においては、回路面積及び推定実行時間を選択し、２軸のグラフを例に説明するが、グラフは、１軸であっても３軸であってもよい。また、回路面積、推定実行時間及びメモリ量以外のパラメータを用いたグラフとしてもよい。
【００２０】
ステップＳ３０３において表示するグラフの軸が選択（決定）されると、選択された軸を用いて、例えば推定実行時間が最大である処理ブロックの矩形を、グラフの原点に接する配置、特にこの場合のように２軸のグラフでは矩形の左下の頂点が原点にくるような配置で表示することとすることができる（Ｓ３０４）。図８には、例として「関数１」の処理ブロックが、横軸を回路面積とし、縦軸を推定実行時間としたグラフで表示されている画面８１０が示されている。ここでグラフには、取得した回路面積上限値、及び入力した実行時間上限値を共に表示し、これらのパラメータに関してどれくらいの余裕があるか視覚的に分かりやすく表示されている。なお、本実施の形態においては、二次元のグラフを用いているため、処理ブロックは矩形であらわされているが、一次元又は三次元であっても、原点に接する線又は領域で推定実行時間が最大である処理ブロックを表すことができる。しかしながら、この推定実行時間が最大である処理ブロックの表示は行わなくてもよい。
【００２１】
ここで、画面に表示された処理ブロックの情報は、選択結果テーブル２５０に保存される（Ｓ３０５）。図９には、選択結果テーブル２５０の構成の例について示されている。選択結果テーブルは、表示された処理ブロックのプログラムソースコードにおける位置を表す情報である、「ファイル名」、「行番号」、「ループ処理なのか関数なのかの種別」、その行番号に複数のループ処理又は関数があった場合における「表記順」及び「多重度」のフィールドを有している。ここに保存されるレコードは、グラフ中に表示されている処理ブロックに係るレコードである。つまり、図８の画面８１０の例におけるステップＳ３０５では、「関数１」の処理ブロックに係る「ファイル名」、「行番号」、「ループ処理なのか関数なのかの種別」、その行番号に複数のループ処理又は関数があった場合における「表記順」を保存すると共に、多重度には「１」を保存して（Ｓ３０５）、初期値設定処理Ｓ３００を終了する。図３に戻り、初期値設定処理Ｓ３００が終了すると、次に組合せ解析部２３０による組合せ変更表示処理Ｓ４００に移行する。
【００２２】
図１０には、組合せ解析部２３０による組合せ変更表示処理Ｓ４００のフローチャートが示されている。この図に示されるように、組合せ変更表示処理Ｓ４００では、まず、入力装置５００から表示変更に係る入力操作があったかどうかを判定し（Ｓ４０１）、表示変更に係る入力操作があった場合には表示処理Ｓ４０２に移行し、入力操作がなかった場合には、終了操作があったかどうかについて判定する（ステップＳ４０３）。終了操作があった場合には、組合せ変更表示処理Ｓ４００を終了し、ない場合には、ステップＳ４０１に戻り、表示変更に係る入力操作があったかどうかの判定を繰り返す。表示処理Ｓ４０２では、組合せ解析部２３０は、ユーザの入力装置５００を用いた入力操作に応じて、処理ブロックの情報を表示したり、ＦＰＧＡに配置する処理ブロックを変更して、処理ブロックの回路面積、推定実行時間又はメモリ量等の情報をグラフを用いて視覚的に表したりするＧＵＩ（Graphical User Interface）を提供する。以下、組合せ解析部２３０が表示処理Ｓ４０２において提供するＧＵＩの具体例について説明する。
【００２３】
（３）  組合せ解析部による表示処理の例
図１１は、表示装置４００に表示される画面の例であり、処理ブロックである「ループ１」及び「関数１」が、横軸を回路面積とし、縦軸を推定実行時間としたグラフで表示される画面８２０を示す図である。この画面８２０に示されるように、グラフには、ステップＳ３０２において入力された実行時間上限値の線、及び使用するＦＰＧＡの回路面積上限値の線が示され、これらの線と縦軸横軸との領域内に収まるように１以上の処理ブロックが選択されなければならないことを示し、情報処理システム１００の利用者である設計者に視覚的に分かりやすいように表示している。また、「ループ１」の処理ブロックの矩形の右上角の位置が、「関数１」の処理ブロックの矩形の左下角の位置となるように配置されているのは、両処理ブロックは、時間的に並列して処理が行われるものでなく、回路も互いに流用されず形成されて配置されることを示している。
【００２４】
図１２は、図１１の画面８２０から、利用者が「ループ１」の処理ブロックの矩形の右上角をマウスの左ボタンでドラッグした場合の画面８２１について示す図である。この図に示されるように、例えば、利用者が入力装置５００であるマウスの操作により、マウスポインタ（白抜き矢印）を「ループ１」の処理ブロックの矩形の右上角部に移動し、左ボタンでドラッグすると、グラフの下に表８３１が表示される。表８３１は、ＦＰＧＡの回路面積から、現在グラフ上に配置されている処理ブロックが使用する回路面積を引いた残りの「回路面積」、実行時間上限値から現在グラフ上に配置されている処理ブロックの時間を引いた残りの「実行時間」、ＦＰＧＡのメモリ量から現在グラフ上に配置されている処理ブロックが使用するメモリ量を引いた残りの「メモリ量」を表示する「残り量」のレコードを有すると共に、ドラッグされた「ループ１」の処理ブロックの「回路面積」、「実行時間」、使用する「メモリ量」、「多重度」及び「最大多重度」が記載された「ループ１」のレコードを有する表８３１が示される。
【００２５】
ここで、利用者は、図１２に示されるように、例えばドラッグ操作により、「ループ１」の処理ブロックの多重度を１と２との間で変更することができる。図１２では、右方向へのドラッグ操作により、多重度を１から２に変更している、つまりループ処理から並列処理を行う回路に変更している様子が示されており、これにより、「ループ１」の矩形の形状は、組合せ解析部２３０の演算に基づいて、高さ、つまり推定実行時間が約１／２となり、幅、つまり回路面積が約２倍となる。この矩形の形状の変化に伴って、表８３１の「ループ１」における「回路面積」、「実行時間」、「メモリ量」及び「多重度」のフィールドも変更されて表示される。これにより利用者は処理ブロックの多重度を変化させた場合の回路面積、実行時間及びメモリ量等について、視覚的に把握することができ、例えば多重度の選択を含め処理ブロックの選択の設計を容易にすることができる。図１２において、利用者が多重度を１から２となる矩形の表示となった時点でドラッグ操作を終了すると、図１３に示すように、多重度が２となった「ループ１」の処理ブロックの矩形が表示されたまま、表８３１は表示されなくなる画面８２２が表示され、選択結果テーブル２５０の「ループ１」の処理ブロックに係る多重度のフィールドは１から２に書き換えられる。
【００２６】
本実施の形態においては、右方向のドラッグ操作により多重度が少なくなる場合について示したが、左方向のドラッグ操作を多重度が多くなる場合についての操作とすることとしてもよい。また、多重度は最大多重度を超えない範囲で表示装置を行うこととしてもよい。ここで、多重度と推定実行時間及び回路面積の関係は、例えば、元の多重度をｎ（ｎは２以上の整数）として多重度を１減らした場合には、推定実行時間をｎ／（ｎ−１）とし、回路面積を（ｎ−１）／ｎとすることができる。また、ｎが１以上の整数とした場合に多重度を１増やした場合には、推定実行時間をｎ／（ｎ＋１）とし、回路面積を（ｎ＋１）／ｎとすることができる。
【００２７】
図１４は、「関数１」の処理ブロックの矩形上で右クリックを行った場合の画面８２３について示す図である。図１３の画面８２２において「関数１」の処理ブロックの矩形にマウスポインタにおいて右クリックを行うと、図１４に示されるように、表８３２が表示される。ここで、表８３２には、表８３１と同様の内容の「残り量」のレコードの他、処理ブロックテーブル２４０において、グラフ内に表示されている処理ブロックを除いた処理ブロックのレコード（リスト）が記載されている。各処理ブロックのレコードには、例えば「ループ２」及び「関数２」の処理ブロックに関し、それらの「回路面積」、「実行時間」、使用する「メモリ量」、「多重度」及び「最大多重度」がそれぞれ記載されている。これにより、利用者は、処理ブロックのレコードの値を参照し、新たに加える処理ブロックについて容易に検討することができる。本実施の形態においては、「関数１」の処理ブロックの矩形にマウスポインタにおいて右クリックとしたが、これ以外の操作としてもよい。
【００２８】
図１５は、図１４の画面８２３における表８３２の「関数２」のレコードにマウスポインタが合わされた場合の画面８２４について示す図である。図１４の画面８２３において、例えば表８３２の「関数２」のレコード上にマウスポインタをおくと、例えば、図１５の画面８２４が表示される。画面８２４では表８３３における、「関数２」のレコードの背景色、文字の色、文字の太さ及び枠の太さ等のいずれかを変化させること等により、「関数２」のレコードをハイライトさせ、グラフ内に「関数２」が更に追加された際の「関数２」の配置の様子が破線等により示される。
【００２９】
ここで「関数２」は、「ループ１」とも「関数１」とも並列に処理されずに、また、回路も共有されない処理ブロックであるため、グラフには、既に表示している「関数１」の処理ブロックの矩形の右上角に、「関数２」の処理ブロックの矩形の左下角が接する配置で表示される。これにより利用者は、配置できる処理ブロックについて、視覚的に把握することができ、ＦＰＧＡに組み込むべきより適切な処理ブロックの選択について容易に検討することができる。このマウスポインタの位置において、右クリックを行うと、図１６に示すように、「関数２」の処理ブロックの矩形が固定され、表８３３が表示されない画面８２５が表示され、選択結果テーブル２５０には「関数２」の処理ブロックのレコードが追加される。ここで選択結果テーブル２５０の多重度には１が保存され、処理ブロックテーブル２４０のＦＰＧＡ化判定結果のフィールドには「ｔｒｕｅ」が保存される。この場合において、マウスポインタがおかれたレコードの処理ブロックが、実行時間上限値、回路面積上限値又はＦＰＧＡメモリ量等の各パラメータの最大値のいずれかを超過している場合には、ビープ音やポップアップ表示により、制限パラメータのいずれかを超過している旨について利用者に伝えることとしてもよい。なお、グラフ内に配置された処理ブロックが削除された場合には、選択結果テーブル２５０の該当するレコードを削除し、処理ブロックテーブル２４０のＦＰＧＡ化判定結果のフィールドに「ｆａｌｓｅ」が保存することとすることができる。
【００３０】
ここで、「関数２」の処理ブロックは、「ループ１」とも「関数１」とも時間的に並列処理されない処理ブロックとしたが、例えば「関数１」と並列処理が可能な場合には、図１７の画面８２６に示されるように、「関数１」の処理ブロックの矩形の右辺に、「関数２」の処理ブロックの矩形の左辺が接する位置、つまり推定実行時間の軸上において占める領域が重複される配置としてもよい。
【００３１】
（４）  本実施形態の効果
以上説明したように、本実施の形態における情報処理システム１００は、プログラムを実行することにより情報を処理する情報処理装置２００と、情報処理装置２００からの信号を受信して画像を表示する表示装置４００と、情報処理装置２００に対し入力信号を出力する入力装置５００と、を有し、情報処理装置２００は、プログラムソースコードから複数の処理ブロックを抽出するプログラム解析部２１０と、処理ブロックごとにＦＰＧＡに処理させる場合の回路面積及び推定実行時間を算出するＦＰＧＡ処理解析部２２０と、抽出された複数の処理ブロックから１以上の処理ブロックを、ＦＰＧＡの回路で処理する処理ブロックとして選択し、回路面積、推定実行時間及び使用メモリ量のパラメータのうち、いずれか１つ以上のパラメータを軸とするグラフに、パラメータの最大値と共に、選択された処理ブロックにおけるパラメータに係る値を示して、表示装置４００に表示させる組合せ解析部２３０と、を備えるため、情報処理システム１００の利用者は、ＦＰＧＡに組み込む処理ブロックを、適切により短時間で簡易に決定することができる。
【００３２】
また、組合せ解析部２３０は、処理ブロックが多重ループ処理である場合、マウス等の入力装置５００からの入力信号に基づいて、多重度を変更し、変更された多重度におけるパラメータに係る値を演算してグラフ上に表示することとしてもよく、この場合において、組合せ解析部２３０は、パラメータを２つとした二次元のグラフにおいて、処理ブロックのパラメータに係る値を矩形で表示させ、矩形の右上角部のドラッグ操作を、マウス等の入力装置５００から受信することにより、変更された多重度に対応する異なる矩形を表示することができる。これにより、利用者は、多重度を変更する設計変更について、視覚的に容易にその影響について把握することができる。
【００３３】
また、組合せ解析部２３０は、マウス等の入力装置５００の操作により、グラフにおいて、多重ループ処理を有する処理ブロックが選択されている場合、多重ループ処理の最大多重度及び現在の多重度の表示をおこなうこととしてもよい。これにより、利用者は、多重度の変更の可能性について容易に把握することができる。
【００３４】
また、組合せ解析部２３０は、軸が決定された後、最初に表示されるグラフに、推定実行時間が最大である処理ブロックをグラフの原点に接する配置で表示することができる。これにより、最もＦＰＧＡで処理させる可能性の高い処理ブロックについて最初に視覚的に把握できると共に、他の処理ブロックの推定実行時間が表示された処理ブロックよりも短いことから、容易にＦＰＧＡに組み込む処理ブロックの全体設計についても把握することができる。
【００３５】
また、組合せ解析部２３０は、パラメータを２つとした二次元のグラフにおいて、マウス等の入力装置５００からの入力により、ＦＰＧＡの回路で処理する処理ブロックとして、新たに一つの処理ブロックが追加された場合、既に表示している処理ブロックの矩形の右上角の位置が、追加された処理ブロックの矩形の左下角の位置となる配置で表示することができる。これにより、利用者は処理ブロックの処理ブロックを追加について容易に検討することができる。
【００３６】
また、組合せ解析部２３０は、選択された処理ブロックのうちの複数が並列処理を行う場合、複数の処理ブロックがグラフの推定実行時間の軸上において占める領域を重複して表示してもよい。この場合には、利用者は、システム設計時にＦＰＧＡ内での並列処理についても考慮した設計を容易に行うことができる。
【００３７】
また、情報処理装置２００は、プログラム解析部２１０が抽出した複数の処理ブロックそれぞれを一つのレコードとして保存する処理ブロックテーブル２４０を更に備え、処理ブロックテーブル２４０は、複数の処理ブロックのそれぞれのプログラムソースコードにおける位置を保存するフィールドを有していてもよい。これにより、プログラムソースコードにおいて、どの処理ブロックがＦＰＧＡにより処理されるのか、容易に把握することができる。
【００３８】
また、組合せ解析部２３０は、マウス等の入力装置５００からの入力信号に基づいて、処理ブロックテーブル２４０から、グラフ内に表示されている処理ブロックを除いた処理ブロックのリストを表示することとしてもよい。これにより利用者は、未だＦＰＧＡに載置されていない処理ブロックについて、いずれの処理ブロックを更にＦＰＧＡに加えるか容易に検討することができる。
【００３９】
また、組合せ解析部２３０は、パラメータのうち、いずれか一つのパラメータの値が最大値を超えた場合に、いずれか一つのパラメータの値が最大値を超えている旨の表示を行ってもよい。これにより、設計最大値を超えた設計ミスを事前に防止することができる。
【産業上の利用可能性】
【００４０】
本発明は、ＦＰＧＡを用いたシステム開発を支援するシステムに適用することができる。
【符号の説明】
【００４１】
１００  情報処理システム
２００  情報処理装置
２０２  揮発性記憶部
２０３  不揮発性記憶部
２０４  入力インタフェース
２０５  出力インタフェース
２１０  プログラム解析部
２２０  ＦＰＧＡ処理解析部
２３０  組合せ解析部
２４０  処理ブロックテーブル
２５０  選択結果テーブル
２６０  ＦＰＧＡスペック記憶部
２７０  プログラムソースコード記憶部
４００  表示装置
５００  入力装置
【図１】
2017111572.tif 000003
【図２】
2017111572.tif 000004
【図３】
2017111572.tif 000005
【図４】
2017111572.tif 000006
【図５】
2017111572.tif 000007
【図６】
2017111572.tif 000008
【図７】
2017111572.tif 000009
【図８】
2017111572.tif 000010
【図９】
2017111572.tif 000011
【図１０】
2017111572.tif 000012
【図１１】
2017111572.tif 000013
【図１２】
2017111572.tif 000014
【図１３】
2017111572.tif 000015
【図１４】
2017111572.tif 000016
【図１５】
2017111572.tif 000017
【図１６】
2017111572.tif 000018
【図１７】
2017111572.tif 000019