(57)【要約】【課題】  再構成可能プロセッサのソースレベルデバッギング装置及び方法を提供する。【解決手段】  ＣＧＡ基盤の再構成可能プロセッサのソースレベルデバッギング装置が開示される。ソースレベルデバッギング装置は、無効演算情報を用いてソースコードスケジューリング結果で停止点を設定する有効演算を決定し、該決定された有効演算に対応するアドレスに停止点を設定することができる。【選択図】      図１
2014013570.tif 000002
【特許請求の範囲】
【請求項１】
処理のためにスケジュールされたコード内で有効演算を決定する有効演算決定部と、
前記決定された有効演算に対応するアドレスに停止点を設定する停止点設定部と、
を含む再構成可能プロセッサのソースレベルデバッギング装置。
【請求項２】
前記再構成可能プロセッサは、ＣＧＡ（Ｃｏａｒｓｅ  Ｇｒａｉｎｅｄ  Ａｒｒａｙ）基盤のプロセッサである、請求項１に記載の再構成可能プロセッサのソースレベルデバッギング装置。
【請求項３】
前記スケジュールされたコードは、コンパイラによって行われるループアンローリングに基づくモジュロスケジューリングの結果である、請求項１又は２に記載の再構成可能プロセッサのソースレベルデバッギング装置。
【請求項４】
前記有効演算決定部は、前記ループアンローリングに基づくモジュロスケジューリングに従ってスケジュールされたコードのプロローグまたはエピローグにマッピングされた演算を含む無効演算をさらに決定する、請求項３に記載の再構成可能プロセッサのソースレベルデバッギング装置。
【請求項５】
前記有効演算決定部は、無効演算情報に基づいて、前記有効演算を決定する、請求項１乃至４のいずれか一項に記載の再構成可能プロセッサのソースレベルデバッギング装置。
【請求項６】
前記無効演算情報は、前記無効演算が存在するサイクル番号及び前記無効演算がマッピングされた機能ユニットのＩＤ情報を含む、請求項５に記載の再構成可能プロセッサのソースレベルデバッギング装置。
【請求項７】
再構成可能プロセッサのソースレベルデバッギング装置が、
処理のためにスケジュールされたコード内で有効演算を決定する段階と、
前記決定された有効演算に対応するアドレスに停止点を設定する段階と、
を含む再構成可能プロセッサのソースレベルデバッギング方法。
【請求項８】
前記再構成可能プロセッサは、ＣＧＡ基盤のプロセッサを含む、請求項７に記載の再構成可能プロセッサのソースレベルデバッギング方法。
【請求項９】
前記スケジュールされたコードは、コンパイラによって行われるループアンローリングに基づくモジュロスケジューリングの結果である、請求項７又は８に記載の再構成可能プロセッサのソースレベルデバッギング方法。
【請求項１０】
再構成可能プロセッサのソースレベルデバッギング装置が、無効演算を決定する段階であって、前記無効演算は、前記ループアンローリングに基づくモジュロスケジューリングに従ってスケジュールされたコードのプロローグまたはエピローグにマッピングされた演算である、段階、
を更に含む請求項８に記載の再構成可能プロセッサのソースレベルデバッギング方法。
【請求項１１】
前記有効演算は、無効演算情報に基づいて決定される、請求項７乃至１０のいずれか一項に記載の再構成可能プロセッサのソースレベルデバッギング方法。
【請求項１２】
前記無効演算情報は、前記無効演算が存在するサイクル番号及び前記無効演算がマッピングされた機能ユニットのＩＤ情報を含む、請求項１１に記載の再構成可能プロセッサのソースレベルデバッギング方法。
【請求項１３】
再構成可能プロセッサのソースレベルデバッギング装置が、
処理のためにスケジュールされたソースコード内の演算が有効演算か無効演算であるかを識別する段階と、
有効演算に対応するアドレスに停止点を設定する段階、
を含むソースレベルデバッギング方法。
【請求項１４】
前記無効演算は、前記スケジュールされたソースコードのプロローグ及びエピローグの一方又は両方に含まれる、請求項１３に記載のソースレベルデバッギング方法。
【請求項１５】
前記無効演算と前記有効演算は、無効演算情報に基づいて識別され、
前記無効演算情報は、前記プロセッサのサイクル番号とファンクションユニットにマッピングされた演算、及び前記演算が有効か無効かに関する指標を含む、請求項１３又は１４に記載のソースレベルデバッギング方法。
【請求項１６】
前記停止点を設定する段階の後に、前記再構成可能プロセッサのソースレベルデバッギング装置が、
前記プロセッサが前記ソースコードの処理中に前記停止点で前記ソースコードの実行を中止した場合、前記プロセッサから制御を渡される段階、
を更に含む請求項１３乃至１５のいずれか一項に記載のソースレベルデバッギング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＧＡ（Ｃｏａｒｓｅ  Ｇｒａｉｎｅｄ  Ａｒｒａｙ）基盤の再構成可能プロセッサのソースレベルデバッギング装置及び方法に関する。
【背景技術】
【０００２】
ＣＧＡ基盤の再構成可能プロセッサは、多数の機能ユニット、グローバルレジスタファイル、ローカルレジスタファイルなどの非常に複雑な構造を有する。ＣＧＡプロセッサでは、命令を処理する機能ユニットは、アレイ構造で構成される。この例では、ＣＧＡプロセッサは、ループとして実装されるソフトウェアコードの反復的なデータ処理命令を、ソフトウェアパイプラインに構成する。さらに、ＣＧＡプロセッサは、構成した処理命令をアレイに並列化してマッピングし、マッピングした処理命令を高速で処理する。
【０００３】
ＣＧＡプロセッサでは、機能ユニットの効率を高め、構成のサイズを減らすために、カーネルをモジュロスケジューリングし、これをソースコードのプロローグ及びエピローグに再使用する。すなわち、ループのプロローグ、本体及びエピローグが同じ構成を用いるので、プロローグ及びエピローグで計算結果に悪影響を与えない無効演算が行われる。
【０００４】
しかし、プロローグまたはエピローグの無効演算によって、ＣＧＡでのソースレベルデバッギングが難しい。さらに、有効な命令語に対してのみ停止点（ｂｒｅａｋｐｏｉｎｔ）を設定できないという問題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、再構成可能プロセッサのソースレベルデバッギング装置及び方法を提供することである。
【課題を解決するための手段】
【０００６】
本発明の一態様によるソースレベルデバッギング装置は、再構成可能プロセッサ内に提供され、処理のためにスケジュールされたコード内で有効演算を決定する有効演算決定部と、前記決定された有効演算に対応するアドレスに停止点を設定する停止点設定部と、を含む。
【０００７】
本発明の他の態様によるソースレベルデバッギング方法は、再構成可能プロセッサのソースレベルデバッギング装置が、処理のためにスケジュールされたコード内で有効演算を決定する段階と、前記決定された有効演算に対応するアドレスに停止点を設定する段階と、を含む。
【０００８】
本発明のさらに他の態様による停止点をスケジューリングする方法は、再構成可能プロセッサのソースレベルデバッギング装置が、処理のためにスケジュールされる演算が有効演算か、無効演算であるかを識別する段階と、有効演算に対応するアドレスに停止点を設定する段階と、を含む。
【図面の簡単な説明】
【０００９】
【図１】再構成可能プロセッサのソースレベルデバッギング環境の一例である。
【図２】再構成可能プロセッサでスケジューリングされる例示的なコードを例示した図である。
【図３】図２の例示的なコードが再構成可能プロセッサでスケジューリングされた結果の一例を示す図である。
【図４】図３のスケジューリング結果についての無効演算情報を例示した図である。
【図５】再構成可能プロセッサのソースレベルデバッギング方法の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。本発明の利点及び特徴、そして、それらを果たす方法は、添付される図面と共に詳細に後述されている実施形態を参照すると、明確になる。しかし、本発明は、以下で開示される実施形態に限定されるものではなく、互いに異なる多様な形態で具現され、単に本実施形態は、本発明の開示を完全にし、当業者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範疇によって定義されるだけである。明細書の全体に亘って同じ参照符号は、同じ構成要素を指称する。
【００１１】
図１は、本発明の一実施形態による再構成可能プロセッサのソースレベルデバッギング環境の一例である。図１を参照して、再構成可能プロセッサでソースレベルデバッギング装置１００について詳しく説明する。
【００１２】
再構成可能プロセッサは、一実施形態によれば、ＣＧＡ基盤のプロセッサであり得る。
【００１３】
ＣＧＡでは、ループとして実装されたソースコードをスケジューリングするとき、コンパイラ２００が反復的なデータ処理命令をソフトウェアパイプラインとして構成することによりソースコードをスケジューリングして、処理能を向上させる。この際、コンパイラ２００は、ループアンローリングに基づくモジュロスケジューリングを通じてスケジューリング結果２１０を生成することができる。
【００１４】
ＣＧＡでは、モジュロスケジューリングを通じて機能ユニットの効率を高め、構成のサイズを減らしうるが、生成されたスケジューリング結果２１０のプロローグ及びエピローグには、無効演算がマッピングされうる。
【００１５】
一般的に、このような無効演算の結果は破棄されることがあり、破棄するための方法としては、追加ハードウェア資源を用いるプレディケート（ｐｒｅｄｉｃａｔｅ）を通じる無効演算をガーディング（ｇｕａｒｄｉｎｇ）する方法や無効演算の結果を使わずに無視する方法が使われる。但し、結果を破棄するためには、追加的な演算が行われる必要がある。
【００１６】
一般的なＣＧＡでソースレベルデバッギングのときに、ユーザが設定した停止点を設定する場合、ループの反復番号（ｉｔｅｒａｔｉｏｎ  ｎｕｍｂｅｒ）と開始区間（Ｉｎｉｔｉａｔｉｏｎ  Ｉｎｔｅｒｖａｌ、ＩＩ）内のＣＧＡアドレスを連結することにより得られるＣＧＡ  ＰＣ（Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ）を使う。この場合、ＣＧＡ  ＰＣは、アセンブラレベルでデバッギングするときに使用できる。しかし、ソースプログラムのラインと関連して停止点を設定することは不可能である。
【００１７】
また、インテル（登録商標）のアイテニアム（Ｉｔａｎｉｕｍ）（登録商標）のような一部プロセッサの場合、プロローグまたはエピローグの無効演算をプレディケートで制御して、そのプレディケート値を参考にして、ハードウェア的に有効な命令語に対してのみ停止点を設定する方法を使う。しかし、ＣＧＡは、プロセッサの状態を変化させない場合、すなわち、レジスタファイルまたはメモリに値を書き込む命令語にのみプレディケートを適用して最適化したために、その方法が適用されにくい問題がある。
【００１８】
多様な実施形態を通じて、ソースレベルデバッギングを行い、あらかじめ生成された無効演算情報３１０を用いて有効な命令に対してのみ停止点を設定するソースレベルデバッギング装置１００が提示される。
【００１９】
例えば、ソースレベルデバッギング装置１００は、有効演算決定部１１０及び停止点設定部１２０を含みうる。有効演算決定部１１０は、無効演算情報３１０を用いてソースコードスケジューリング結果の中の有効演算を決定することができる。
【００２０】
例えば、無効演算情報３１０は、無効演算情報生成装置３００によって生成されうる。無効演算情報生成装置３００は、コンパイラ２００のモジュロスケジューリング結果２１０に含まれたプロローグ及び／またはエピローグの無効演算を判断し、その判断結果に基づいて無効演算情報３１０を生成することができる。例えば、無効演算情報生成装置３００は、コンパイラ２００のモジュロスケジューリング途中またはスケジューリングが完了した後に判断することができる。例えば、無効演算情報生成装置３００は、コンパイラ２００の構成モジュールの一部であり得る。
【００２１】
無効演算情報３１０は、モジュロスケジューリング結果２１０でプロローグ及びエピローグの無効演算が存在するサイクル番号及びその無効演算がマッピングされた機能ユニットのＩＤ情報を含みうる。
【００２２】
有効演算決定部１１０は、スケジューリング結果２１０及び／または無効演算情報３１０を入力され、無効演算情報３１０を用いてスケジューリング結果２１０で毎サイクルごとにプロローグ及びエピローグにマッピングされた無効演算を判断する。また、判断された無効演算を除き、有効な演算を停止点が設定される演算と決定する。スケジューリング結果２１０は、メモリに保存され、有効演算決定部１１０は、そのメモリからスケジューリング結果２１０を読み取る。
【００２３】
停止点設定部１２０は、有効演算決定部１１０で決定された有効演算に対応するアドレスに停止点を設定する。すなわち、停止点設定部１２０は停止点を設定して、ソースプログラムがプロセッサで実行されている間に停止点に遭遇すると、そのプロセッサがそのソースプログラムの実行を停止して制御をデバッギング装置１００に渡すようにする。
【００２４】
図２は、再構成可能プロセッサでスケジューリングされる例示的なコードを例示した図である。図３は、図２の例示的なコードが再構成可能プロセッサでスケジューリングされた結果の一例を示す図である。図４は、図３のスケジューリング結果についての無効演算情報を例示した図である。
【００２５】
図２の例示的なコードは、Ｃ言語で書かれたものであって、整数ｉを０からＮ−１まで１ずつ増加させながら、ｉ値に１０を乗算し、その乗算した結果を加算しつつ、その加算結果をメモリに保存し続けるソースコードである。このソースコードは、同じ命令がＮ回繰り返して行われるループである。コンパイラ２００が、このソースコードにループアンローリングに基づくモジュロスケジューリングを行った結果２１０を図３に例示した。
【００２６】
図３を参照すると、ＣＧＡは、１０個の機能ユニットＦｕ００〜Ｆｕ０９を含んでおり、コンパイラ２００は、このソースコードをモジュロスケジューリングを通じてＣＧＡプロセッサの各機能ユニットにマッピングする。図３は、図２の例示的なコードでＮが３である場合をスケジューリングした結果であって、サイクル０から６までは、プロローグ、サイクル７から１４は、ループ本体、すなわちカーネルを表わし、サイクル１５から１８は、エピローグを表わす。
【００２７】
モジュロスケジューリング結果２１０でプロローグとエピローグ内のイタリック体で表わした演算が無効演算を意味する。プロローグで９個の演算と、エピローグで５個の演算とが無効演算であることが分かる。説明の便宜上、スケジューリング結果２１０内の無効演算をイタリック体で区分した。しかし、実際スケジューリング結果２１０に無効演算と有効演算とが区分されて生成されるものではない。
【００２８】
図４は、図３のスケジューリング結果についての無効演算情報を例示した図である。例えば、無効演算情報３１０は、ファイルまたはテーブル形式で生成されうる。前述したように、無効演算情報３１０は、コンパイラ２００がスケジューリング途中またはスケジューリングが完了した後、そのスケジューリング結果２１０を用いて無効演算情報生成装置３００によって生成されうる。したがって、無効演算は、マスクされるか、その他の方法で回避され、停止点は設定されない。
【００２９】
多様な態様によれば、無効演算情報３１０は、図４に例示されたように、スケジューリング結果２１０内の無効演算が存在するサイクル番号及びその無効演算がマッピングされたＩＤ情報を含みうる。
【００３０】
図４の例で、プロローグのサイクル０の機能ユニット１、５にマッピングされたａｄｄ演算、サイクル１の機能ユニット０、４、９にそれぞれマッピングされたａｄｄ、ｍｏｖ、ｌｓｌ演算、サイクル２の機能ユニット０にマッピングされたｓｔ＿ｉ演算、サイクル５の機能ユニット０、４にそれぞれマッピングされたａｄｄ、ｍｏｖ演算、サイクル６の機能ユニット０にマッピングされたｓｔ＿ｉ演算は、無効演算である。
【００３１】
もし、図２のソースコードでＮが３であり、ユーザが、図２のソースコードライン３４に停止点を設定しようとする場合、図３に例示されたスケジューリング結果２１０によれば、コンパイラ２００のループアンローリングに基づくモジュロスケジューリングによって、ライン３４の加算演算に該当する‘ａｄｄ’演算が、サイクル１、５、９、１３、１７の機能ユニットＦｕ００に５回繰り返して行われるようにマッピングされていることが分かる。
【００３２】
したがって、有効演算決定部１１０は、無効演算情報３１０を用いてサイクル１と５との‘ａｄｄ’演算は無効演算であると判断し、これを除いたサイクル９、１３及び１７の‘ａｄｄ’演算を有効演算と決定する。
【００３３】
停止点設定部１２０は、このように決定されたサイクル９、１３及び１７に対応するアドレスに停止点を設定する。
【００３４】
多様な態様によれば、あらかじめ生成されたプロローグ及び／またはエピローグの無効演算についての情報を用いてソースレベルのデバッギングを行うことができる。したがって、無効演算を除き、有効な演算に対してのみ停止点を設定することができるので、ソースレベルデバッギング性能を大きく向上させることができる。
【００３５】
図５は、再構成可能プロセッサのソースレベルデバッギング方法の一例を示すフローチャートである。
【００３６】
まず、ソースコードスケジューリング結果２１０の無効演算情報３１０を用いて有効演算及び無効演算を決定する（段階４１０）。停止点は、無効演算を排除し、有効演算に対して設定されうる。
【００３７】
例えば、無効演算情報３１０は、コンパイラ２００のモジュロスケジューリング結果２１０でプロローグ及びエピローグに含まれた無効演算が存在するサイクル番号及びその無効演算がマッピングされた機能ユニットのＩＤ情報を含みうる。
【００３８】
ソースレベルデバッギング装置１００は、スケジューリング結果２１０及び無効演算情報３１０を入力される。入力された無効演算情報３１０を用いてスケジューリング結果２１０で毎サイクルごとにプロローグ及びエピローグにマッピングされた無効演算を判断し、ユーザによって設定されたソースコードの停止点設定ラインに対応する演算のうち、判断された無効演算を除き、有効な演算を決定することができる。したがって、停止点は、判断された有効演算に対応するアドレスに設定され、如何なる停止点も無効演算に対応するアドレスに設定されない。
【００３９】
図２ないし図４の例によれば、ユーザが、図２のソースコードの３４ラインに停止点を設定しようとすれば、ソースレベルデバッギング装置１００は、無効演算情報３１０を参照して、図３のスケジューリング結果２１０で機能ユニットＦｕ００にマッピングされている‘ａｄｄ’演算のうちからサイクル１及び５の‘ａｄｄ’演算を無効演算と判断し、機能ユニットＦｕ００にマッピングされているサイクル９、１３及び１７の‘ａｄｄ’演算を有効演算と決定する。
【００４０】
次いで、決定された有効演算に対応するアドレスに停止点を設定する（段階４２０）。すなわち、ソースレベルデバッギング装置１００は、サイクル９、１３及び１７番目のアドレスに停止点を設定することによって、有効な演算に対してのみ停止点の設定が可能である。
【００４１】
多様な態様によって、再構成可能ＣＧＡ基盤プロセッサでのソースレベルデバッギング装置及び方法を説明した。このような装置及び方法は、ループアンローリングに基づくモジュロスケジューリングでプロローグまたはエピローグにマッピングされた無効演算を除き、有効演算に対してのみ停止点を設定することによって、ソースレベルデバッギングを可能にする。
【００４２】
一方、本発明の実施形態は、コンピュータで読み取り可能な記録媒体にコンピュータで読み取り可能なコードとして具現することが可能である。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
【００４３】
コンピュータで読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ保存装置などがあり、また、搬送波（例えば、インターネットを介した伝送）の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本発明を具現するための機能的なプログラム、コード及びコードセグメントは、本発明が属する技術分野の技術者によって容易に推論されうる。
【００４４】
当業者なら、本発明が、その技術的思想や必須的な特徴を変更せずとも、他の具体的な形態で実施されることを理解できるであろう。したがって、前述した実施形態は、あらゆる面で例示的なものであり、限定的ではないということを理解しなければならない。本発明の範囲は、前記詳細な説明よりは後述する特許請求の範囲によって表われ、特許請求の範囲の意味及び範囲、そして、その均等概念から導出されるあらゆる変更または変形された形態が、本発明の範囲に含まれると解析しなければならない。
【産業上の利用可能性】
【００４５】
本発明は、再構成可能プロセッサのソースレベルデバッギング装置及び方法関連の技術分野に適用可能である。
【符号の説明】
【００４６】
１００  ソースレベルデバッギング装置
１１０  有効演算決定部
１２０  停止点設定部
２００  コンパイラ
２１０  スケジューリング結果
３００  無効演算情報生成装置
３１０  無効演算情報
【図１】
2014013570.tif 000003
【図２】
2014013570.tif 000004
【図３】
2014013570.tif 000005
【図４】
2014013570.tif 000006
【図５】
2014013570.tif 000007