(57)【要約】【課題】  混合モードプログラムのソースコードエラー位置検出装置及び方法を提供する。【解決手段】  複雑なアルゴリズムを適用せずとも、ソースレベルデバッギング情報を提供することができる混合モードプログラムのソースコードエラー位置検出装置及び方法が開示される。装置は、コンパイラと、マッピングテーブル生成部と、シミュレーション部と、比較データ生成部及びエラー位置検出部と、を含む。装置は、検証対象プログラム及び基準プログラムのシミュレーション中にローレベルデータを抽出する。ローレベルデータは、検証対象プログラムと基準プログラムとに関するマッピングテーブルにマッピングされ、テーブルを比較することによって、混合モードプログラムにエラーがあるかの有無、及びエラーの位置が判断される。【選択図】      図４
2014053010.tif 000002
【特許請求の範囲】
【請求項１】
第１プログラムに対してシミュレーションを行い、第２プログラムに対してシミュレーションを行うシミュレーション部と、
前記第１プログラムの前記シミュレーションを通じて前記第１プログラムに関する第１ローレベルデータを、前記第２プログラムの前記シミュレーションを通じて前記第２プログラムに関する第２ローレベルデータを抽出するローレベルデータ抽出部と、
前記第１プログラムから生成された第１マッピングテーブルに前記第１ローレベルデータを対応させて、検証対象マッピングテーブルを生成し、前記第２プログラムから生成された第２マッピングテーブルに前記第２ローレベルデータを対応させて、基準マッピングテーブルを生成する比較データ生成部と、
前記検証対象マッピングテーブルと前記基準マッピングテーブルとを比較して、データが一致しないレコードを検出し、前記レコードに関するプログラム位置情報を得るエラー位置検出部と、
を含む混合モードプログラムのソースコードエラー位置検出装置。
【請求項２】
ソースコードを第１モードでコンパイルすることにより前記第１プログラムを生成し、前記ソースコードを第２モードでコンパイルすることにより前記第２プログラムを生成するコンパイラ部をさらに含む請求項１に記載の混合モードプログラムのソースコードエラー位置検出装置。
【請求項３】
前記第１プログラムから前記第１マッピングテーブルを生成し、前記第２プログラムから前記第２マッピングテーブルを生成するマッピングテーブル生成部をさらに含む請求項１又は２に記載の混合モードプログラムのソースコードエラー位置検出装置。
【請求項４】
前記第１マッピングテーブル及び前記第２マッピングテーブルは、命令語マッピング情報、レジスタマッピング情報またはメモリマッピング情報のうち少なくとも１つを含む請求項１乃至３のいずれか一項に記載の混合モードプログラムのソースコードエラー位置検出装置。
【請求項５】
前記ローレベルデータ抽出部は、シミュレーションが行われる時間区間のうちの一部に対してのみローレベルデータを抽出する請求項１乃至４のいずれか一項に記載の混合モードプログラムのソースコードエラー位置検出装置。
【請求項６】
前記ローレベルデータは、レジスタデータ、メモリデータ、プログラムカウンター、イテレーションカウントのうち少なくとも１つを含む請求項１乃至５のいずれか一項に記載の混合モードプログラムのソースコードエラー位置検出装置。
【請求項７】
前記エラー位置検出部は、プログラムカウンターに基づいて、ソースコードのうち、エラーを誘発する位置を検出する請求項４に記載の混合モードプログラムのソースコードエラー位置検出装置。
【請求項８】
検証プログラムをシミュレーションする段階と、
基準プログラムをシミュレーションする段階と、
前記検証対象プログラムの前記シミュレーションを通じて、前記検証対象プログラムのローレベルデータを抽出する段階と、
前記基準プログラムの前記シミュレーションを通じて、前記基準プログラムのローレベルデータを抽出する段階と、
前記検証対象プログラムのローレベルデータを、前記第１マッピングテーブルに対応させて、前記ソースコードと前記検証対象プログラムとの関係を表わす検証対象マッピングテーブルを生成する段階と、
前記基準プログラムのローレベルデータを、前記第２マッピングテーブルに対応させて、前記ソースコードと前記基準プログラムとの関係を表わす基準マッピングテーブルを生成する段階と、
前記検証対象マッピングテーブルと前記基準マッピングテーブルとを比較して、データが一致しないレコードを検出し、前記レコードに関するプログラム位置情報を得る段階と、
を含む混合モードプログラムのソースコードエラー位置検出方法。
【請求項９】
ソースコードを第１モードでコンパイルすることにより前記検証対象プログラムを生成し、前記ソースコードを第２モードでコンパイルすることにより前記基準プログラムを生成する段階をさらに含む請求項８に記載の混合モードプログラムのソースコードエラー位置検出方法。
【請求項１０】
前記ソースコードと前記検証対象プログラムとの関係を表わす前記第１マッピングテーブル及び前記ソースコードと前記基準プログラムとの関係を表わす前記第２マッピングテーブルを生成する段階をさらに含む請求項８又は９に記載の混合モードプログラムのソースコードエラー位置検出方法。
【請求項１１】
検証データテーブルを生成する段階と、
基準データテーブルを生成する段階と、
前記検証データテーブルと前記基準データテーブルとを比較して、データが一致しないレコードがあるか否かを判断する段階と、
を含む混合モードプログラムのソースコードエラー位置検出方法。
【請求項１２】
データが一致しないレコードがある場合、前記レコードに関するプログラムカウンター情報及びＦＵインデックス情報を用いてソースコードでの対応する位置を検出する段階をさらに含む請求項１１に記載の混合モードプログラムのソースコードエラー位置検出方法。
【請求項１３】
前記検証データテーブルを生成する段階は、第１モードを用いてコンパイルされた検証対象プログラムに関するマッピングテーブルに、前記検証対象プログラムのローレベルデータを対応させることで行われる請求項１１又は１２に記載の混合モードプログラムのソースコードエラー位置検出方法。
【請求項１４】
前記基準データテーブルを生成する段階は、前記第１モードと異なる第２モードとを用いてコンパイルされた基準プログラムに関するマッピングテーブルに、前記基準プログラムのローレベルデータを対応させることで行われる請求項１１乃至１３のいずれか一項に記載の混合モードプログラムのソースコードエラー位置検出方法。
【請求項１５】
前記検証対象プログラムのローレベルデータを、前記検証対象プログラムのシミュレーション中に抽出する段階をさらに含む請求項１３に記載の混合モードプログラムのソースコードエラー位置検出方法。
【請求項１６】
前記基準プログラムのローレベルデータを、前記基準プログラムのシミュレーション中に抽出する段階をさらに含む請求項１４に記載の混合モードプログラムのソースコードエラー位置検出方法。
【請求項１７】
第１プログラムと第２プログラムとをシミュレーションするシミュレーション部と、
前記第１プログラムの前記シミュレーションを通じて第１ローレベルデータを抽出し、前記第２プログラムの前記シミュレーションを通じて第２ローレベルデータを抽出するローレベルデータ抽出部と、
前記第１ローレベルデータを前記第１プログラムから生成された第１マッピングテーブルにマッピングして、検証対象マッピングテーブルを生成し、前記第２ローレベルデータを前記第２プログラムから生成された第２マッピングテーブルにマッピングして、基準マッピングテーブルを生成する比較データ生成部と、
前記検証対象マッピングテーブルを前記基準マッピングテーブルと比較して、前記ソースコードが有効であるか否かに関する案内を提供するエラー位置検出部と、
を含む混合モードプログラムのソースコード有効化装置。
【請求項１８】
前記第１マッピングテーブルと前記第２マッピングテーブルは、命令語マッピング情報、レジスタマッピング情報及びメモリマッピング情報のうち少なくとも１つを含む請求項１７に記載の混合モードプログラムのソースコード有効化装置。
【請求項１９】
前記ローレベルデータ抽出部は、前記第１プログラムと前記第２プログラムとのそれぞれからシミュレーション中の所定の時間区間の間に、ローレベルデータを抽出する請求項１７又は１８に記載の混合モードプログラムのソースコード有効化装置。
【請求項２０】
前記ローレベルデータは、レジスタデータ、メモリデータ、プログラムカウンター（ＰＣ）及びイテレーションカウンターのうち少なくとも１つを含む請求項１７乃至１９のいずれか一項に記載の混合モードプログラムのソースコード有効化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチモードプロセッシング技術等に関する。例えば、マルチモード再構成可能プロセッサの混合モードプログラムのマッピングされたコード（ｍａｐｐｅｄ  ｃｏｄｅ）の検証及びソースコードのエラー発見を補助するデバッギング技術に関連する。
【背景技術】
【０００２】
通常、再構成可能アーキテクチャー（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  ａｒｃｈｉｔｅｃｔｕｒｅ）とは、所定の作業を行うためのコンピューティング装置のハードウェア的構成をハードウェアレベルでそれぞれの作業に最適化されるように変更することができるアーキテクチャーを意味する。
【０００３】
所定の作業をハードウェア的にのみ処理すると、ハードウェアの機能は固定されるので、作業内容に若干の変更が加えられた場合、これを効率的に処理しにくい。ほとんどのハードウェアは、固定された方式で動作するように構成されるためである。また、所定の作業をソフトウェア的にのみ処理すると、その作業の特性に合わせてソフトウェアを変更して処理することが可能であるが、ハードウェア的処理に比べて速度が遅い。ソフトウェアを多様な作業に適応させても、ハードウェアが固定された場合には、最適の性能が得られないためである。
【０００４】
再構成可能アーキテクチャーは、このようなハードウェア／ソフトウェアの長所をいずれも満足させることができる。より詳細には、再構成可能ハードウェアアーキテクチャーは、カスタマイズドハードウェアによる最適の性能を保証しながらも、カスタマイズドソフトウェアの柔軟性を提供する。特に、同じ作業が反復的に行われ、作業を最適化することによって、全般的な性能を意味があるように改善しうるデジタル信号処理分野では、このような再構成可能アーキテクチャーが多くの注目を浴びている。
【０００５】
再構成可能アーキテクチャーの種類は、さまざまであるが、そのうち、コースグレインアレイ（Ｃｏａｒｓｅ−Ｇｒａｉｎｅｄ  Ａｒｒａｙ）が代表的である。コースグレインアレイは、複数個のプロセッシングエレメント（ＰＥ：Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）からなる。そして、プロセッシングユニット間の連結状態が調節されることによって、特定の動作や作業に最適化されることが可能である。
【０００６】
一方、最近、コースグレインアレイの特定のプロセッシングユニットをＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）マシンとして活用する再構成可能アーキテクチャーが登場した。このような再構成可能アーキテクチャーは、２つの実行モードを有する。通常、ＣＧＡモード及びＶＬＩＷモードを有する再構成可能アーキテクチャーは、ＣＧＡモードでは同じ演算が反復されるループを処理し、ＶＬＩＷモードでは、ループ演算以外に一般的な演算を処理する。ＣＧＡモードは、ループ演算をさらに効率的に処理できるためである。
【０００７】
ところが、ＣＧＡ（Ｃｏａｒｓｅ  Ｇｒａｉｎｅｄ  Ａｒｒａｙ）基盤の再構成可能プロセッサは、非常に複雑な構造を有する。そのようなプロセッサは、多数の機能ユニット、グローバルレジスタファイル、ローカルレジスタファイルを含む。
【０００８】
もし、ＣＧＡでデータ従属性（ｄａｔａ  ｄｅｐｅｎｄｅｎｃｙ）が存在する場合、コンパイラでは、これを分析して処理するのに難点が多い。データ従属性を見つけることが重要な理由は、もし、データ従属性を見つけることができない場合、データ従属性を満足することができない不適切なデータや衝突を起こすデータが生成されて、エラーが発生するためである。例えば、コンパイラが、このデータ従属性を解決することができない場合、ユーザ、すなわち、プログラマーは、ＣＧＡにマッピングされたバイナリファイルのエラーを検出することさえできない。したがって、プログラムの遂行時に意図していない誤った結果が発生する恐れがある。再構成可能ハードウェアアーキテクチャーが、データ処理を実行しようとすれば、ランタイムエラーを避けなければならない。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、混合モードプログラムのソースコードエラー位置検出装置及び方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明の一側面による混合モードプログラムのソースコードエラー位置検出装置は、第１プログラムに対してシミュレーションを行い、第２プログラムに対してシミュレーションを行うシミュレーション部と、前記第１プログラムの前記シミュレーションを通じて前記第１プログラムに関する第１ローレベルデータを、前記第２プログラムの前記シミュレーションを通じて前記第２プログラムに関する第２ローレベルデータを抽出するローレベルデータ抽出部と、前記第１プログラムから生成された第１マッピングテーブルに前記第１ローレベルデータを対応させて、検証対象マッピングテーブルを生成し、前記第２プログラムから生成された第２マッピングテーブルに前記第２ローレベルデータを対応させて、基準マッピングテーブルを生成する比較データ生成部と、前記検証対象マッピングテーブルと前記基準マッピングテーブルとを比較して、データが一致しないレコードを検出し、前記レコードに関するプログラム位置情報を得るエラー位置検出部と、を含む。
【００１１】
本発明の他の側面による混合モードプログラムのソースコードエラー位置検出方法は、検証プログラムをシミュレーションする段階と、基準プログラムをシミュレーションする段階と、前記検証対象プログラムの前記シミュレーションを通じて、前記検証対象プログラムのローレベルデータを抽出する段階と、前記基準プログラムの前記シミュレーションを通じて、前記基準プログラムのローレベルデータを抽出する段階と、前記検証対象プログラムのローレベルデータを、前記第１マッピングテーブルに対応させて、前記ソースコードと前記検証対象プログラムとの関係を表わす検証対象マッピングテーブルを生成する段階と、前記基準プログラムのローレベルデータを、前記第２マッピングテーブルに対応させて、前記ソースコードと前記基準プログラムとの関係を表わす基準マッピングテーブルを生成する段階と、前記検証対象マッピングテーブルと前記基準マッピングテーブルとを比較して、データが一致しないレコードを検出し、前記レコードに関するプログラム位置情報を得る段階と、を含む。
【００１２】
この際、ソースコードを第１モードでコンパイルすることにより前記検証対象プログラムを生成し、前記ソースコードを第２モードでコンパイルすることにより前記基準プログラムを生成する段階をさらに含みうる。
【００１３】
また、前記ソースコードと前記検証対象プログラムとの関係を表わす前記第１マッピングテーブル及び前記ソースコードと前記基準プログラムとの関係を表わす前記第２マッピングテーブルを生成する段階をさらに含みうる。
【００１４】
本発明のさらに他の側面による混合モードプログラムのソースコードエラー位置検出方法は、検証データテーブルを生成する段階と、基準データテーブルを生成する段階と、前記検証データテーブルと前記基準データテーブルとを比較して、データが一致しないレコードがあるか否かを判断する段階と、を含む。
【００１５】
本発明のさらに他の側面による混合モードプログラムのソースコード有効化装置は、第１プログラムと第２プログラムとをシミュレーションするシミュレーション部と、前記第１プログラムの前記シミュレーションを通じて第１ローレベルデータを抽出し、前記第２プログラムの前記シミュレーションを通じて第２ローレベルデータを抽出するローレベルデータ抽出部と、前記第１ローレベルデータを前記第１プログラムから生成された第１マッピングテーブルにマッピングして、検証対象マッピングテーブルを生成し、前記第２ローレベルデータを前記第２プログラムから生成された第２マッピングテーブルにマッピングして、基準マッピングテーブルを生成する比較データ生成部と、前記検証対象マッピングテーブルを前記基準マッピングテーブルと比較して、前記ソースコードが有効であるか否かに関する案内を提供するエラー位置検出部と、を含む。
【図面の簡単な説明】
【００１６】
【図１】再構成可能プロセッサを例示した図である。
【図２】混合モードプログラムを生成するマルチモードプロセッサの一例を示すブロック図である。
【図３】図２のマルチモードプロセッサでコンパイルされた２種の混合モードプログラムを示す図である。
【図４】本発明の一実施形態による混合モードプログラムのソースコードエラー位置検出方法を例示したフローチャートである。
【図５】本発明の一実施形態による混合モードプログラムのソースコードエラー位置検出装置を例示したブロック図である。
【図６】混合モードプログラムのソースコードエラー位置検出装置で行われるエラー位置検出手続きの一例を示す図である。
【図７】マッピングテーブルの一例を示す図である。
【図８】抽出されたローレベルデータの一例を示す図である。
【図９】本発明の他の実施形態による混合モードプログラムのソースコードエラー位置検出方法の一例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
＜実施の形態の概要＞
本発明の一側面による混合モードプログラムのソースコードエラー位置検出装置は、第１プログラムに対してシミュレーションを行い、第２プログラムに対してシミュレーションを行うシミュレーション部と、前記第１プログラムの前記シミュレーションを通じて前記第１プログラムに関する第１ローレベルデータを、前記第２プログラムの前記シミュレーションを通じて前記第２プログラムに関する第２ローレベルデータを抽出するローレベルデータ抽出部と、前記第１プログラムから生成された第１マッピングテーブルに前記第１ローレベルデータを対応させて、検証対象マッピングテーブルを生成し、前記第２プログラムから生成された第２マッピングテーブルに前記第２ローレベルデータを対応させて、基準マッピングテーブルを生成する比較データ生成部と、前記検証対象マッピングテーブルと前記基準マッピングテーブルとを比較して、データが一致しないレコードを検出し、前記レコードに関するプログラム位置情報を得るエラー位置検出部と、を含む。
【００１８】
この際、ソースコードを第１モードでコンパイルすることにより前記第１プログラムを、前記ソースコードを第２モードでコンパイルすることにより前記第２プログラムを生成するコンパイラ部をさらに含みうる。
【００１９】
また、前記第１プログラムから前記第１マッピングテーブルを生成し、前記第２プログラムから前記第２マッピングテーブルを生成するマッピングテーブル生成部をさらに含みうる。
【００２０】
また、前記第１マッピングテーブル及び前記第２マッピングテーブルは、命令語マッピング情報、レジスタマッピング情報またはメモリマッピング情報のうち少なくとも１つを含みうる。
【００２１】
また、前記ローレベルデータ抽出部は、シミュレーションが行われる時間区間のうちの一部に対してのみローレベルデータを抽出することができる。
【００２２】
また、前記ローレベルデータ抽出部は、レジスタデータ、メモリデータ、プログラムカウンター、イテレーションカウントのうち少なくとも１つを含みうる。
【００２３】
さらに、前記エラー位置検出部は、プログラムカウンターに基づいて、ソースコードのうち、エラーを誘発する位置を検出することができる。
【００２４】
本発明の他の側面による混合モードプログラムのソースコードエラー位置検出方法は、検証プログラムをシミュレーションする段階と、基準プログラムをシミュレーションする段階と、前記検証対象プログラムの前記シミュレーションを通じて、前記検証対象プログラムのローレベルデータを抽出する段階と、前記基準プログラムの前記シミュレーションを通じて、前記基準プログラムのローレベルデータを抽出する段階と、前記検証対象プログラムのローレベルデータを、前記第１マッピングテーブルに対応させて、前記ソースコードと前記検証対象プログラムとの関係を表わす検証対象マッピングテーブルを生成する段階と、前記基準プログラムのローレベルデータを、前記第２マッピングテーブルに対応させて、前記ソースコードと前記基準プログラムとの関係を表わす基準マッピングテーブルを生成する段階と、前記検証対象マッピングテーブルと前記基準マッピングテーブルとを比較して、データが一致しないレコードを検出し、前記レコードに関するプログラム位置情報を得る段階と、を含む。
【００２５】
この際、ソースコードを第１モードでコンパイルすることにより前記検証対象プログラムを生成し、前記ソースコードを第２モードでコンパイルすることにより前記基準プログラムを生成する段階をさらに含みうる。
【００２６】
また、前記ソースコードと前記検証対象プログラムとの関係を表わす前記第１マッピングテーブル及び前記ソースコードと前記基準プログラムとの関係を表わす前記第２マッピングテーブルを生成する段階をさらに含みうる。
【００２７】
本発明のさらに他の側面による混合モードプログラムのソースコードエラー位置検出方法は、検証データテーブルを生成する段階と、基準データテーブルを生成する段階と、前記検証データテーブルと前記基準データテーブルとを比較して、データが一致しないレコードがあるか否かを判断する段階と、を含む。
【００２８】
この際、データが一致しないレコードがある場合、前記レコードに関するプログラムカウンター情報及びＦＵインデックス情報を用いてソースコードでの対応する位置を検出する段階をさらに含みうる。
【００２９】
また、前記検証データテーブルを生成する段階は、第１モードを用いてコンパイルされた検証対象プログラムに関するマッピングテーブルに、前記検証対象プログラムのローレベルデータを対応させることで行われる。
【００３０】
また、前記基準データテーブルを生成する段階は、前記第１モードと異なる第２モードとを用いてコンパイルされた基準プログラムに関するマッピングテーブルに、前記基準プログラムのローレベルデータを対応させることで行われる。
【００３１】
さらに、前記検証対象プログラムのローレベルデータを、前記検証対象プログラムのシミュレーション中に抽出する段階をさらに含みうる。
【００３２】
また、前記基準プログラムのローレベルデータを、前記基準プログラムのシミュレーション中に抽出する段階をさらに含みうる。
【００３３】
本発明のさらに他の側面による混合モードプログラムのソースコード有効化装置は、第１プログラムと第２プログラムとをシミュレーションするシミュレーション部と、前記第１プログラムの前記シミュレーションを通じて第１ローレベルデータを抽出し、前記第２プログラムの前記シミュレーションを通じて第２ローレベルデータを抽出するローレベルデータ抽出部と、前記第１ローレベルデータを前記第１プログラムから生成された第１マッピングテーブルにマッピングして、検証対象マッピングテーブルを生成し、前記第２ローレベルデータを前記第２プログラムから生成された第２マッピングテーブルにマッピングして、基準マッピングテーブルを生成する比較データ生成部と、前記検証対象マッピングテーブルを前記基準マッピングテーブルと比較して、前記ソースコードが有効であるか否かに関する案内を提供するエラー位置検出部と、を含む。
【００３４】
この際、前記第１マッピングテーブルと前記第２マッピングテーブルは、命令語マッピング情報、レジスタマッピング情報及びメモリマッピング情報のうち少なくとも１つを含みうる。
【００３５】
また、前記ローレベルデータ抽出部は、前記第１プログラムと前記第２プログラムとのそれぞれからシミュレーション中の所定の時間区間の間に、ローレベルデータを抽出することができる。
【００３６】
また、前記ローレベルデータは、レジスタデータ、メモリデータ、プログラムカウンター（ＰＣ）及びイテレーションカウンターのうち少なくとも１つを含みうる。
【００３７】
＜実施の形態の詳細＞
以下、添付した図面を参照して、実施のための具体的な例を詳しく説明する。
【００３８】
図１は、再構成可能プロセッサを説明する図である。図１を参照すると、再構成可能プロセッサ１００は、再構成可能アレイ１１０及びメモリ１２０を含む。
【００３９】
以下で、イテレーション（ｉｔｅｒａｔｉｏｎ、反復）とは、ループが数回実行されるとき、それぞれのループの実行を意味する。例えば、ループが３回実行される場合、ループの最初の実行を最初のイテレーションと言い、ループの二番目の実行を二番目のイテレーションと言い、ループの三番目の実行を三番目のイテレーションと言う。同じイテレーションに属する命令が、互いに異なるプロセッシングエレメントにマッピングされ、各プロセッシングエレメントが同時に動作することによって、命令が並列的に処理されうる。これにより、再構成可能プロセッサ１００の演算速度が向上する。命令語を複数のプロセッシングエレメントにマッピングして同時に複数の作業を実行させる多様な技法が存在する。例えば、マルチタスキングとマルチスレッディングが、そのような技法の例である。複数のプロセッシングエレメントを使い、プロセスが分割されている場合には、並列処理を行うことによって、他の作業が完了する前に所定の作業を開始できるので、作業を処理する全般的な所要時間を節減することができるので、並列処理は望ましい。
【００４０】
ある実施形態で、再構成可能プロセッサ１００は、ＣＧＡモード、ＶＬＩＷモードなどで駆動されるように設定されうる。例えば、再構成可能プロセッサ１００は、ＣＧＡモードでループ演算を処理し、ＶＬＩＷモードでは、一般的な演算またはループ演算を処理することができる。但し、ＶＬＩＷモードでループ演算ができるが、ＣＧＡモードでループ演算を処理することよりも効率が落ちる。効率を極大化するために、一実施形態で、ループ演算は、ＣＧＡモードで処理してループ演算の効率性を高め、ＣＧＡモードで処理することができないその他の演算は、ＶＬＩＷモードで処理させうる。その結果、１つのプログラムが実行されるとき、再構成可能プロセッサ１００は、ＣＧＡモード及びＶＬＩＷモードを交互に駆動することによって、プログラムの性能による最適の結果が得られる。
【００４１】
再構成可能アレイ１１０は、レジスタファイル１１１及び多数のプロセッシングエレメント（ＰＥ）１１２を含む。実施形態で、再構成可能アレイ１１０は、最適の演算を行うようにハードウェア的構成を変更することが可能である。例えば、再構成可能アレイ１１０は、演算の種類によって多数のプロセッシングエレメント間の連結状態を変更することができる。もし、プロセッシングエレメントが、他の方式で連結されれば、再構成可能アレイ１１０がデータを処理する方法が変更されることによって、与えられた種類の演算にさらに優れているように適応されうる。
【００４２】
レジスタファイル１１１は、プロセッシングエレメント１１２間のデータ伝達のために使われるか、命令実行に必要な各種のデータを保存する。レジスタファイル１１１は、プロセッシングエレメント１１２が作業を処理するときに使うデータを判読し、記録することができるワーキングメモリとして使われる。例えば、それぞれのプロセッシングエレメント１１２は、レジスタファイル１１１に接続して命令実行に使われるデータを読み取るか、書き込むことが可能である。但し、あらゆるプロセッシングエレメント１１２が、互いに連結されるものではないために、特定のプロセッシングエレメントの場合には、レジスタファイル１１１に接続するために、他のプロセッシングエレメントを経由することもできる。
【００４３】
プロセッシングエレメント１１２は、割り当てられた命令を実行することができる。プロセッシングエレメント１１２の連結状態及び動作順序は、処理しようとする作業によって変更されうる。前述したように、与えられたアーキテクチャー内でプロセッシングエレメントの連結と順序とを変更することによって、プロセッシングエレメントが特定のタスクを処理するために再構成されうる。
【００４４】
メモリ１２０は、プロセッシングエレメント１１２間の連結状態に関する情報、命令のように、プロセッシングに必要な情報及びプロセッシングの結果情報を保存することができる。命令は、再構成可能アレイ１１０に提供される命令であってもよい。例えば、メモリ１２０は、再構成可能アレイ１１０によって処理される前に、処理するデータを保存するか、再構成可能アレイ１１０によって生成された処理結果を保存することができる。また他の例を挙げれば、メモリ１２０には、再構成可能プロセッサ１００の駆動に必要な情報、再構成可能アレイの連結状態情報、再構成可能アレイの動作方法についての情報などを保存することができる。
【００４５】
図２は、混合モードプログラムを生成するマルチモードプロセッサの一例を示すブロック図である。
【００４６】
マルチモードプロセッサ２０は、２つ以上のモードを有しており、各モードで２つ以上のモードで動作するように設計されたハードウェアは、互いに異なる方式で動作する。例えば、マルチモードプロセッサ２０は、第１モードブロック２２０及び第２モードブロック２１０（例えば、ＣＧＡモード、ＶＬＩＷモードなど）を有しており、各モードで、ハードウェアは、互いに異なる方式で動作する。マルチモードプロセッサは、第１モードブロック２２０と第２モードブロック２１０との間で特定の時刻に、または特定のイベントが発生したときに、モードを切り替えることができる。モード別にプロセッシングエレメント（ＰＥ）などの資源を分離することもでき、一部または全体を共有することもできる。
【００４７】
ところが、各モードでハードウェア構造と動作方式が異なるので、コンパイラでのスケジューリング及びマッピング結果も変わる。したがって、コンパイルされたコードが、互いに異なるモードで適切に実行されるためには、コンパイルされたコードに関するスケジューリング及びマッピングを調和させることによって、複数のモードが相手の資源の使用を尊重できるように資源を共有することを保証する必要がある。
【００４８】
図２で言う混合モードプログラムは、シーケンシャルプログラムである。すなわち、コンパイル方法が変更されるか、実行状況が変わっても、同じ結果を作り出すプログラムを意味する。
【００４９】
プログラムがシーケンシャルであるためには、プログラムをコンパイルするとき、同じ結果を生成する２つ以上の混合モードプログラムを生成できなければならない。したがって、プログラムの互いに異なるモードで実行される部分に対する制約を課すことによって、プログラムの互いに異なる部分が相手の動作に干渉せず、“シーケンシャル”プログラムの属性を失わないようにしなければならない。
【００５０】
図３は、図２のマルチモードプロセッサでコンパイルされた２種の混合モードプログラムを例示した図である。
【００５１】
混合モードプログラム３０は、時刻（ｔ＝０）から時刻（ｔ＝ｔ１）までは第１モードで、時刻（ｔ＝ｔ１）から時刻（ｔ＝ｔ２）までは第２モードで、時刻（ｔ＝ｔ２）から時刻（ｔ＝ｔ３）までは再び第１モードで、ソースコードをコンパイルして生成したプログラムである。それぞれの時間区間に生成されたプログラム部分を、それぞれ識別符号３００、３１０、３２０で区別する。
【００５２】
混合モードプログラム３１は、ソースコード全体を第１モードでコンパイルして生成したプログラムである。混合モードプログラム３１は、第１モードと第２モードとの遂行比率が１：０になる場合であると言える。
【００５３】
第１モードがＶＬＩＷモードであり、第２モードがＣＧＡモードである場合を想定する。もし、ＣＧＡモードでデータ従属性が存在する場合、コンパイラでは、これを分析して処理するのに難点が多い。もし、コンパイラが、このデータ従属性を解決することができない場合、ユーザ、すなわち、プログラマーは、ＣＧＡマッピングされたバイナリファイルのエラーを検出することさえできない。したがって、プログラムの遂行時に意図していない誤った結果が発生する恐れがある。このようなランタイムエラーは、プログラムの適切な動作に有害であり、プログラムのシーケンシャル動作を妨害するので、防止されなければならない。
【００５４】
しかし、混合モードプログラム３０がＣＧＡモードでマッピングされるとき、誤ったバイナリデータが生成されうる。誤ったバイナリデータが生成されたことを突き止めるために、実施形態では、バイナリデータが正しいことを保証するための基準データを生成する。例えば、次のようなアプローチを使うことができる。バイナリデータの有効性を判断するために、混合モードプログラム３０のソースコードをエラーの発生可能性が非常に少ないモードで、例えば、ＶＬＩＷモードでコンパイルした混合モードプログラム３１を生成する。
【００５５】
次いで、混合モードプログラム３１のバイナリデータをＣＧＡモードでマッピングされた混合モードプログラム３０のバイナリデータと比較する。混合モードプログラム３１の方がエラーの発生可能性が低いので、検証の対象となる混合モードプログラム３０と判断の基準となる混合モードプログラム３１とのバイナリ（ローレベル）データが一致するならば、混合モードプログラム３０にエラーがないと判断することができる。一方、もし、エラーが存在するならば、比較を通じてエラーの根源を判断しうる。
【００５６】
図４は、本発明の一側面による混合モードプログラムのソースコードエラー位置検出方法を例示したフローチャートである。図４で例示したように、混合モードプログラムのソースコードエラー位置検出方法は、コンパイル段階（ステップＳ１００）と、シミュレーション及びローレベルデータ抽出段階（ステップＳ１１０）と、比較データ生成段階（ステップＳ１２０）及びエラー位置検出段階（ステップＳ１３０）と、を含んでなる。
【００５７】
コンパイル段階（ステップＳ１００）では、第１モードを用いてソースコード（すなわち、ハイレベルデータ）をコンパイルして、検証対象プログラムを生成し、第２モードを用いて同じソースコードをコンパイルして、基準プログラムを生成する。この際、ハイレベルデータとローレベルデータとの間の関係を表わすマッピングテーブルを生成する段階（ステップＳ１０１：図示せず）がさらに行われる。
【００５８】
シミュレーション及びローレベルデータ抽出段階（ステップＳ１１０）では、検証対象プログラム及び基準プログラムをそれぞれシミュレーションしながら、必要なローレベルデータを抽出する。この際、ある実施形態では、シミュレーションのあらゆる区間ではなく、特定の時間区間のみを指定して、ローレベルデータを抽出することもできる。ローレベルデータは、既定の時間区間から抽出されうる。検証対象プログラムで検証を要するモードは、特定の時間区間でのみ検証が必要であり、その他の時間区間では、コードの有効性が問題にならないためである。
【００５９】
比較データ生成段階（ステップＳ１２０）では、検証対象プログラムをシミュレーションしながら抽出されたローレベルデータと基準プログラムをシミュレーションしながら抽出されたローレベルデータとを互いに比較できるように適切にデータ変換を行う。互いに異なるモードから抽出されるローレベルデータは、一般的に適切にデータ変換を行わない場合、比較をするのが適当ではないために、一部の実施形態では、このような段階が必要である。これは、段階（ステップＳ１１０）から生成されたマッピングテーブルにローレベルデータを対応させる過程を通じて行われる。
【００６０】
エラー位置検出段階（ステップＳ１３０）では、検証対象プログラムのローレベルデータがマッピングされたマッピングテーブル（すなわち、“検証対象マッピングテーブル”）と基準プログラムのローレベルデータがマッピングされたマッピングテーブル（すなわち、“基準マッピングテーブル”）とを比較して、２つのテーブルで対応するデータが一致しないレコードがあるか否かを判断する。データが一致しないレコードがある場合、そのレコードに関するプログラム位置情報を得る。ローレベルデータがマッピングされたマッピングテーブルを利用すれば、特定のローレベルデータに対応するハイレベルデータ、すなわち、ソースコードの位置を探索することができるためである。例えば、前述したマッピング技法を用いてソースコードのどの部分が異常なローレベルデータの生成と関連したかを判断することができる。ソースコードの当該部分を識別することによって、ユーザにデバッギングを要するソースコードの問題領域を案内することができる。
【００６１】
図５は、本発明の一側面による混合モードプログラムのソースコードエラー位置検出装置を例示したブロック図である。図５で例示したように、混合モードプログラムのソースコードエラー位置検出装置５０は、コンパイラ部５００と、マッピングテーブル生成部５１０と、シミュレーション部５２０と、ローレベルデータ抽出部５３０と、比較データ生成部５４０及びエラー位置検出部５５０と、を含んでなる。
【００６２】
コンパイラ部５００は、ソースコード（すなわち、ハイレベルデータ）をコンパイルして、シーケンシャル混合モードプログラムを生成する。
【００６３】
マッピングテーブル生成部５１０は、コンパイラ部が混合モードプログラムを生成するときに、その混合モードプログラムに指定されたモードに対するマッピングテーブルを生成する。
【００６４】
マッピングテーブルは、ハイレベルデータがコンパイラによって如何に変換されたかを表わすテーブルである。もし、マッピングテーブルの生成が難しい場合、コンパイラ部５００は、最適化のレベルを低めることができる。最適化作業としては、例えば、削除、値変更、順序変更などの作業がある。
【００６５】
また、マッピングテーブルは、命令語マッピング情報、レジスタマッピング情報またはメモリマッピング情報などを含む。また、マッピング情報が有効なタイムスロット情報を含むこともある。この情報をマッピングテーブルに記録することによって、ソースコードとローレベルデータとの間のデータ依存性を追跡し、潜在的なデータ依存性に関する問題があるか否かを判断することができる。
【００６６】
シミュレーション部５２０は、生成された検証対象プログラム及び基準プログラムに対してそれぞれシミュレーションを行う。検証対象プログラムと基準プログラムとをシミュレーションすることによって、プログラムを実行するときに生成されるローレベルデータをキャプチャーして、プログラムの効果が何なのかを確かめることができる。
【００６７】
ローレベルデータ抽出部５３０は、シミュレーション部５２０がプログラムのシミュレーションを行うとき、必要なローレベルデータを抽出する。
【００６８】
この際、シミュレーションのあらゆる区間ではなく、特定の時間区間のみを指定してローレベルデータを抽出することもできる。前述したように、一部の実施形態では、特定の時間区間に対してのみシミュレーションを行って、プロセスを分析することができる。
【００６９】
抽出されたローレベルデータは、検証対象プログラムと基準プログラムとがシミュレーションされるハードウェアの動作を特徴付ける多様なストレージ及びオペレーションについての情報を有しうる。シミュレーション手続きの一部として、検証対象プログラムと基準プログラムは、データを処理し、データ処理の一部として、情報がレジスタファイル１１１とメモリ１２０とに伝送されるか、レジスタファイル１１１とメモリ１２０とから伝送することができる。抽出されたローレベルデータは、この情報の流れをキャプチャーする。例えば、抽出されたローレベルデータは、レジスタデータやメモリデータのような情報を含みうる。また、抽出されたローレベルデータは、メモリアクセス履歴、例えば、メモリのアドレス、データのような情報を含みうる。また、抽出されたローレベルデータは、プログラム内での特定のデータの位置を表わす情報、例えば、プログラムカウンター（ＰＣ）、イテレーションカウントのような情報を含みうる。このデータを追跡することによって、如何なる情報が結果に影響を及ぼすかを評価することができる。
【００７０】
比較データ生成部５４０は、検証対象プログラムをシミュレーションしながら抽出されたローレベルデータと基準プログラムをシミュレーションしながら抽出されたローレベルデータとを互いに比較できるように適切にデータ変換を行う。例えば、検証対象プログラムと基準プログラムとに対してマッピングテーブルを互いに比較することができる。マッピングテーブルを比較するために、比較データ生成部は、ローレベルデータをマッピングテーブルにコンパイルすることによって、マッピングテーブルが比較手続きに使われるようにする。
【００７１】
データ変換手続きは、マッピングテーブル生成部５１０から生成されたマッピングテーブルにローレベルデータ抽出部５３０が抽出したローレベルデータを対応させる過程を通じて行われる。
【００７２】
エラー位置検出部５５０は、検証対象マッピングテーブルと基準マッピングテーブルとを比較して、２つのテーブルでデータが一致しないレコードがあるか否かを判断する。データが一致しないレコードは、データ依存性問題などによってディバッグを必要とする問題があることを表わす。
【００７３】
データが一致しないレコードがある場合、そのレコードに関するプログラム位置情報を得る。
【００７４】
ローレベルデータが対応したマッピングテーブルを利用すれば、特定のローレベルデータに対応するハイレベルデータ、すなわち、ローレベルコードで問題を誘発するソースコードの位置を探索することができるためである。例えば、抽出されたローレベルデータのプログラムカウンター情報を基準マッピングテーブルにマッピングして、検証対象マッピングテーブルのＰＣ値と基準マッピングテーブルのＰＣ値との間で不一致が見付かった場合、ソースコードで、メモリ内の不一致が見付かった特定位置にアクセスするコードの位置を発見できる。
【００７５】
図６は、混合モードプログラムのソースコードエラー位置検出装置で行われるエラー位置検出手続きの一例を示す図である。図６の実施形態で、マルチモードプロセッサは、ＶＬＩＷモードとＣＧＡモードとの２種のモードを含むとする。
【００７６】
また、検証対象プログラムは、ＶＬＩＷモードとＣＧＡモードとの混合モードプログラムであり、基準プログラムは、ＶＬＩＷモード単独でコンパイルされたプログラムであるとする。
【００７７】
本実施形態で、ソースコードエラー位置検出装置６０、６１は、物理的に１つの装置で構成される。しかし、他の実施形態では、追加的な構成要素を含むか、装置６０と装置６１とにそれぞれ含まれる互いに異なる構成要素になりうる。ＶＬＩＷ＋ＣＧＡ混合モードで行われる場合は、ソースコードエラー位置検出装置６０に、ＶＬＩＷ単独モードで行われる場合は、ソースコードエラー位置検出装置６１に区分した。また、ＶＬＩＷ＋ＣＧＡ混合モードプログラムが検証対象プログラムになり、ＶＬＩＷ単独モードプログラムが基準プログラムになるとする。コンパイル手続きは、ＶＬＩＷモードで生成される基準プログラムが正しい基準であり、ＶＬＩＷ＋ＣＧＡ混合モード検証対象プログラムがシーケンシャルプログラムであることを保証する。
【００７８】
コンパイラ部６００、６０１は、それぞれソースコードをコンパイルしてプログラムを生成する。
【００７９】
この際、もし、ソースコードにループ区間が存在すれば、ループ区間は、最適化前処理過程を経た後、ＣＧＡ構造にマッピングされる。したがって、ＣＧＡマッピングコードの出力は、最適化前処理によってソースコードにあるループの出力と異なりうる。したがって、ホストコンパイル及びシミュレーションの実行により、ＣＧＡマッピングコードの基準出力が得られない。一方、図６の実施形態では、ＣＧＡにマッピングされるコードをＶＬＩＷでマッピングして基準値を得る。したがって、ＶＬＩＷ＋ＣＧＡ混合モードのシミュレーションによる出力データとＶＬＩＷ単独モードのシミュレーションによる出力データとを比較することによって、検証が可能である。データ依存性が侵害されていないならば、ＶＬＩＷ＋ＣＧＡ混合モードシミュレーションは、ＶＬＩＷモードシミュレーションの結果と一致しなければならないためである。
【００８０】
ＶＬＩＷ＋ＣＧＡコンパイル６００で、ＣＧＡモードでマッピングされたソースコードの出力データは、次にＶＬＩＷモードでマッピングされる。このコードは、コンパイル過程でレジスタ割り当て段階以前までは、検証対象プログラムと基準プログラムとで同様にコンパイルされる。したがって、ＣＧＡ出力データは、同じ仮想レジスタに保存される。この値を比較するために、マッピングテーブル生成部６１０、６１１は、出力データに対するレジスタ割り当てマッピングテーブルを生成する。
【００８１】
メモリ位置に保存される変数の比較は、それぞれのプログラムのフローごとにメモリ書き込みアクセスに対してアドレス別に最終保存されるデータを比較することによってなされる。
【００８２】
一方、ＣＧＡマッピングとは異なって、ＶＬＩＷマッピングでは、仮想レジスタのスピル（ｓｐｉｌｌ）によるメモリ書き込みアクセスが発生する恐れがある。このような場合は、比較対象から除外されなければならないので、ＶＬＩＷ単独モードのマッピングテーブルには、プログラムカウンター値（ＰＣ）とファンクションユニット（ＦＵ）インデックス情報とを通じて当該位置で行われる命令語がスピルによるものであるか、メモリに位置した変数をアクセスするものであるかを区分する情報が追加されうる。
【００８３】
ＲＴＬシミュレーター６２０、６２１がシミュレーションを行う間に、ローレベルデータ抽出部６３０、６３１は、あらゆるメモリ書き込みアクセスに対するアドレスと値とを抽出する。共に、ＶＬＩＷ単独モードで、ローレベルデータ抽出部６３１は、メモリアクセスごとにＰＣ及びＦＵインデックス情報を共に抽出する。シミュレーションが終了すれば、コンパイラ部６００、６０１から受けた物理レジスタの最終値を抽出する。
【００８４】
比較データ生成部６４０、６４１は、同じアドレスに関するメモリ書き込みアクセスデータが複数個ある場合、最終メモリ書き込みアクセスに関する値のみを記録する。ＶＬＩＷ単独モードの場合、比較データ生成部６４１は、ＰＣとＦＵインデックス情報を抽出するが、スピルによるメモリ書き込みアクセスの値は除外する。
【００８５】
一方、エラー位置検出部（図示せず）は、ＣＧＡ出力に該当する仮想レジスタに保存された最終値を比較すると共に、ＣＧＡ実行区間で発生したメモリ書き込みアクセスの最終値をＶＬＩＷにマッピングした場合の値と比較することによって、検証対象プログラムのエラー有無を判断する。
【００８６】
一方、同じアドレスに対するデータの読み取りアクセスと書き込みアクセスとの“順序”は、スケジューリングが変わっても変更されない。したがって、各アドレスで値の順序を比較することによって、メモリ従属性違反を見つけることができる。
【００８７】
一方、ＶＬＩＷ単独プログラムのフローでは、マッピングテーブルにスピルによるメモリ書き込みアクセスであるかを判断する情報が追加される。また、メモリ従属性違反の位置を発見した場合、ＰＣとＦＵインデックス情報に対応するソースコード位置（例えば、ファイル名とソースコードのライン番号）とを知らせることができる。これを通じて、ユーザは、ソースコードのうち、エラーが発生したラインが分かる。この情報が、ユーザに提供されるならば、ユーザは、これを用いてディバッグ手続きを行い、問題を発生させたソースコード内のエラーまたはバグを直すことができる。さらに、ループインデックスがマッピングされたレジスタ情報やメモリロケーション情報もさらに含まれうる。
【００８８】
ＲＴＬシミュレーター６２０、６２１は、メモリ読み取り／書き込みアクセスに対するアドレス及び値を抽出する。ＶＬＩＷ単独モードの場合、ＰＣ及び実行されるＦＵインデックス情報及びループインデックスがマッピングされたレジスタ値またはメモリロケーション値が共に保存される。
【００８９】
図７は、マッピングテーブルの一例を示す図である。図７で示すように、マッピングテーブルは、ハイレベルデータとローレベルデータとを関連付ける情報を保存する。例えば、マッピングテーブルは、特定時刻における特定のプログラムカウンター（ＰＣ＝ｍ、ｍ＋１、ｍ＋２など）に対するハイレベルデータ（例えば、ソースコードファイル名、行番号、変数名など）と、ローレベルデータ（レジスタアドレス値またはメモリアドレス値）とを対応付けていることが分かる。
【００９０】
図８は、抽出されたローレベルデータの一例を示す図である。図８で示すように、特定のサイクル（ｃｙｃｌｅ＝ｎ、ｎ＋１、ｎ＋２など）について、レジスタアドレスまたはメモリアドレスごとに保存された値及びＰＣ値が対応していることが分かる。
【００９１】
図９は、本発明の他の側面による混合モードプログラムのソースコードエラー位置検出方法の一例を示すフローチャートである。図９に例示した混合モードプログラムのソースコードエラー位置検出方法は、検証データテーブルを生成する段階（ステップＳ２００）と、基準データテーブルを生成する段階（ステップＳ２１０）と、検証データテーブルと基準データテーブルとを比較する段階（ステップＳ２２０）及びエラー位置検出段階（ステップＳ２３０）と、を含んでなる。
【００９２】
検証データテーブルを生成する段階（ステップＳ２００）では、第１モードを用いてコンパイルされた検証対象プログラムに関するマッピングテーブルにローレベルデータを対応させて、検証データテーブルを生成する。マッピングテーブルの例示は、図７ないし図８に示した。
【００９３】
マッピングテーブルは、コンパイル過程から生成され、ローレベルデータは、コンパイルされた検証対象プログラムのシミュレーション過程から抽出されうる。ローレベル情報は、例えば、レジスタ及び／またはメモリアドレス情報及びレジスタまたはメモリに関する特定の時刻の値を含む。実施形態によれば、如何なるハイレベル命令が、ソースコード内でローレベルの変更を誘導するかを判断することができる。
【００９４】
基準データテーブルを生成する段階（ステップＳ２１０）では、第２モードを用いてコンパイルされた検証対象プログラムに関するマッピングテーブルにローレベルデータを対応させて、検証データテーブルを生成する。基準データテーブルは、検証データテーブルが生成されるものと同様の方式で生成される。
【００９５】
段階（ステップＳ２２０）では、検証データテーブルと基準データテーブルとを比較して、２つのテーブルでデータが一致しないレコードがあるか否かを判断する。
【００９６】
もし、データが一致しないレコードがある場合、段階（ステップＳ２３０）では、そのレコードに関するプログラムカウンター情報及びＦＵインデックス情報を用いてプログラム位置情報を得る。
【００９７】
したがって、ユーザは、エラーが発生した場合、そのエラーを誘発したソースコードが如何なるラインにあるかを知らせる情報を提供されうる。このような情報を用いてユーザは、ソースコードを検査するか、ディバッグツールを用いてエラーを修正することができる。
【００９８】
一方、本発明の実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
【００９９】
コンピュータで読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ保存装置などがあり、また、搬送波（例えば、インターネットを介した伝送）の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本発明を具現するための機能的なプログラム、コード及びコードセグメントは、本発明が属する技術分野のプログラマーによって容易に推論されうる。
【０１００】
さらに、前述した実施形態は、本発明を例示的に説明するためのものであって、本発明の権利範囲が、特定の実施形態に限定されるものではない。
【産業上の利用可能性】
【０１０１】
本発明は、混合モードプログラムのソースコードエラー位置検出装置及び方法関連の技術分野に適用可能である。
【符号の説明】
【０１０２】
１００  再構成可能プロセッサ
１１０  再構成可能アレイ
１１１  レジスタファイル
１１２  プロセッシングエレメント（ＰＥ）
１２０  メモリ
２０    マルチモードプロセッサ
２１０  第２モードブロック
２２０  第１モードブロック
３０、３１  混合モードプログラム
３００、３１０、３２０  プログラム部分
５０、６０、６１  ソースコードエラー位置検出装置
５００、６００、６０１  コンパイラ部
５１０、６１０、６１１  マッピングテーブル生成部
５２０、６２０、６２１  シミュレーション部
５３０、６３０、６３１  ローレベルデータ抽出部
５４０、６４０、６４１  比較データ生成部
５５０  エラー位置検出部
６１２、６１３  マッピングテーブル
【図１】
2014053010.tif 000003
【図２】
2014053010.tif 000004
【図３】
2014053010.tif 000005
【図４】
2014053010.tif 000006
【図５】
2014053010.tif 000007
【図６】
2014053010.tif 000008
【図７】
2014053010.tif 000009
【図８】
2014053010.tif 000010
【図９】
2014053010.tif 000011