(57)【要約】【課題】  再構成可能プロセッサの検証支援装置及び方法を提供する。【解決手段】  本発明は、コースグレインアレイ（CGA：Coarse  Grained  Array）に基づいたプロセッサの検証支援装置に関するものである。本発明の一実施形態による検証支援装置は、コンパイラのソースコードのスケジューリング結果から無効な演算を判断する無効演算判断部と、その判断された無効な演算に対して所定のマスキング処理を行ったヒントを生成させるマスキング処理部と、を含む。【選択図】      図２
2013196702.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードのスケジューリング結果から無効な演算を判断する無効演算判断部と、
前記判断された無効な演算に対するマスキングヒントを生成させるマスキングヒント生成部と、
を含む再構成可能プロセッサの検証支援装置。
【請求項２】
前記再構成可能プロセッサは、コースグレインアレイ（CGA：Coarse  Grained  Array）に基づくプロセッサを含む、
請求項１に記載の再構成可能プロセッサの検証支援装置。
【請求項３】
前記無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算を含む、
請求項１又は２に記載の再構成可能プロセッサの検証支援装置。
【請求項４】
前記マスキングヒントは、前記ループのプロローグまたはエピローグで無効な演算が存在するサイクル番号とその非有効演算がマッピングされる機能ユニットのＩＤ情報とを含む、
請求項１乃至３の何れか一項に記載の再構成可能プロセッサの検証支援装置。
【請求項５】
前記無効な演算は、機能シミュレーターでは行われず、レジスタ転送レベルのシミュレーターでは行われる、
請求項１乃至４の何れか一項に記載の再構成可能プロセッサの検証支援装置。
【請求項６】
前記マスキングヒントは、前記機能シミュレーターとレジスタ転送レベルのシミュレーターとのシミュレーション結果のうち、その無効な演算に対するシミュレーション結果を比較しないようにするマスキング情報の生成に使われる、
請求項１乃至５の何れか一項に記載の再構成可能プロセッサの検証支援装置。
【請求項７】
ソースコードのスケジューリング結果から無効な演算を判断する段階と、
前記判断された無効な演算に対するマスキングヒントを生成させる段階と、
を含む再構成可能プロセッサの検証支援方法。
【請求項８】
前記再構成可能プロセッサは、コースグレインアレイ（CGA：Coarse  Grained  Array）に基づくプロセッサを含む、
請求項７に記載の再構成可能プロセッサの検証支援方法。
【請求項９】
前記無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算を含む、
請求項７又は８に記載の再構成可能プロセッサの検証支援方法。
【請求項１０】
前記マスキングヒントは、前記ループのプロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされる機能ユニットのＩＤ情報とを含む、
請求項７乃至９の何れか一項に記載の再構成可能プロセッサの検証支援方法。
【請求項１１】
前記無効な演算は、機能シミュレーターでは行われず、レジスタ転送レベルのシミュレーターでは行われる、
請求項７乃至１０の何れか一項に記載の再構成可能プロセッサの検証支援方法。
【請求項１２】
前記マスキングヒントは、前記機能シミュレーターとレジスタ転送レベルのシミュレーターとのシミュレーション結果のうち、その無効な演算に対するシミュレーション結果を比較しないようにするマスキング情報の生成に使われる、
請求項７乃至１１の何れか一項に記載の再構成可能プロセッサの検証支援方法。
【請求項１３】
無効演算判断部と、マスキングヒント生成部とを含み、前記無効演算判断部は、ソースコードのスケジューリング結果から無効な演算を判断し、前記マスキングヒント生成部は、判断された無効な演算に対するマスキングヒントを生成させる検証支援装置と、
エラーが発生したとき、機能シミュレーターのミュレーション結果とレジスタ転送レベルのシミュレーターのシミュレーション結果とを比較し、前記マスキングヒントに基づいて、前記無効な演算と関連したシミュレーション結果を比較しないようにするマスキング情報を生成させる検証装置と、
を含む再構成可能プロセッサ。
【請求項１４】
前記無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされた演算のうちの何れか１つを含む、
請求項１３に記載の再構成可能プロセッサ。
【請求項１５】
前記マスキングヒントは、前記ループのプロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされる機能ユニットのＩＤ情報とを含む、
請求項１４又は１５に記載の再構成可能プロセッサ。
【請求項１６】
前記無効な演算は、機能シミュレーターでは行われない、
請求項１３乃至１５の何れか一項に記載の再構成可能プロセッサ。
【請求項１７】
前記マスキング情報は、前記機能シミュレーターとレジスタ転送レベルのシミュレーターとのシミュレーション結果を比較するか否かを指示するマスキングビットを含む、
請求項１３乃至１６の何れか一項に記載の再構成可能プロセッサ。
【請求項１８】
コンピュータに、請求項７乃至１２の何れか一項記載の方法を実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コースグレインアレイ（CGA：Coarse  Grained  Array）に基づいた再構成可能プロセッサの検証支援装置及び方法に関する。
【背景技術】
【０００２】
ＣＧＡに基づく再構成可能プロセッサは、多数の機能ユニット、グローバルレジスタファイル（Global  Register  File）、ローカルレジスタファイル（Local  Register  File）等の非常に複雑な構造を有する。したがって、ＣＧＡで誤った計算を行っていれば、誤った位置及び時点を探すのは、非常に難しく、かつ長時間がかかる。
【０００３】
プロセッサの誤り検証装置は、このようにプロセッサで誤って行われる位置及び時点を探して知らせる装置である。ＣＧＡプロセッサの場合、モジュロスケジューリング（modulo  scheduling）を使うことによって、ループのプロローグ、ボディー及びエピローグが同じ設定（configuration）を使い、これにより、プロローグ及びエピローグで無効な演算（invalid  operation）、すなわち、計算結果に悪影響を与える演算が行われる。これは、プロセッサの誤り検証装置が誤った検証結果を出力する原因となる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、再構成可能プロセッサの検証支援装置及び方法を提供することである。
【課題を解決するための手段】
【０００５】
本発明の一態様によるプロセッサコアの検証支援装置は、ソースコードスケジューリングの結果から無効な演算を判断する無効演算判断部と、その判断された無効な演算に対するマスキングヒント（masking  hint）を生成させるマスキングヒント生成部と、を含みうる。
【０００６】
この際、その再構成可能プロセッサは、ＣＧＡに基づくプロセッサを含みうる。また、無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算を含みうる。
【０００７】
この際、マスキングヒントは、ループのプロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされた機能ユニットのＩＤ情報とを含みうる。また、無効な演算は、機能シミュレーターでは行われず、レジスタ転送レベル（RTL：Register  Transfer  Level）のシミュレーターで行われる演算であり得る。
【０００８】
また、マスキングヒントは、機能シミュレーターのシミュレーション結果とレジスタ転送レベルのシミュレーターのシミュレーション結果とのうち、その無効な演算に対する結果を比較しないようにするマスキング情報の生成に使われる。
【０００９】
本発明の一態様によるプロセッサコアの検証支援方法は、ソースコードのスケジューリング結果から無効な演算を判断する段階と、その判断された無効な演算に対するマスキングヒントを生成させる段階と、を含みうる。
【００１０】
この際、その再構成可能プロセッサは、ＣＧＡに基づくプロセッサを含みうる。また、その無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算を含みうる。
【００１１】
この際、マスキングヒントは、ループのプロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされる機能ユニットのＩＤ情報とを含みうる。また、その無効な演算は、機能シミュレーターでは行われず、レジスタ転送レベル（RTL）のシミュレーターで行われる演算であり得る。
【００１２】
また、マスキングヒントは、機能シミュレーターのシミュレーション結果とレジスタ転送レベルのシミュレーターのシミュレーション結果とのうち、その無効な演算に対する結果を比較しないようにするマスキング情報の生成に使われる。
【００１３】
本発明の一態様によれば、再構成可能プロセッサは、無効演算判断部と、マスキングヒント生成部とを含み、無効演算判断部は、ソースコードのスケジューリング結果から無効な演算を判断し、マスキングヒント生成部は、判断された無効な演算に対するマスキングヒントを生成させる検証支援装置と、エラーが発生したとき、機能シミュレーターのミュレーション結果とレジスタ転送レベルのシミュレーターのシミュレーション結果とを比較し、マスキングヒントに基づいて、無効な演算と関連したシミュレーション結果を比較しないようにするマスキング情報を生成させる検証装置と、を含みうる。
【００１４】
この際、無効な演算は、コンパイラのモジュロスケジューリングによってループのプロローグまたはエピローグにマッピングされる演算のうちの何れか１つを含みうる。また、マスキングヒントは、ループのプロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされる機能ユニットのＩＤ情報とを含みうる。無効な演算は、機能シミュレーターでは行われない。
【００１５】
マスキング情報は、機能シミュレーターとレジスタ転送レベルのシミュレーターとのシミュレーション結果を比較するか否かを指示するマスキングビットを含みうる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態による再構成可能プロセッサの検証環境のブロック図である。
【図２】本発明の一実施形態による検証支援装置のブロック図である。
【図３】本発明の一実施形態によってＣＧＡにマッピングされる例示的なＣコードである。
【図４】図３の例示的なＣコードがＣＧＡにスケジューリングされた結果である。
【図５】図４のスケジューリング結果に対するヒントファイルの例である。
【図６】本発明の一実施形態による検証支援方法のフローチャートである。
【発明を実施するための形態】
【００１７】
その他の実施形態の具体的な事項は、詳細な説明及び図面に含まれている。本発明の利点及び特徴、そして、それらを果たす方法は、添付される図面と共に詳細に後述されている実施形態を参照すると、明確になる。しかし、本発明は、以下で開示される実施形態に限定されるものではなく、互いに異なる多様な形態で具現され、単に本実施形態は、本発明の開示を完全にし、当業者に発明の範疇を完全に知らせるために提供されるものであり、本発明は、請求項の範疇によって定義されるだけである。明細書の全体に亘って同じ参照符号は、同じ構成要素を指称する。
【００１８】
以下、本発明の実施形態による再構成可能プロセッサの検証支援装置及び方法を、図面を参考にして詳しく説明する。
【００１９】
図１は、本発明の一実施形態による再構成可能プロセッサの検証環境のブロック図である。図１を参照すると、検証装置４００は、機能シミュレーター３１０とレジスタ転送レベル（RTL）のシミュレーター３２０とのシミュレーション結果を比較して、エラーの時点及び位置を知らせる。検証装置４００は、機能シミュレーター３１０とＲＴＬシミュレーター３２０とのシミュレーション結果が出力される信号を受信し、両出力信号を比較する。この比較の結果、一致しなければ、誤りと判断し、誤りが発生した時点及び位置を知らせる。
【００２０】
検証装置４００は、超長命令語（VLIW：Very  Long  Instruction  Word）モードでプログラムカウンタ（PC）及び命令を検証する装置であるか、またはＣＧＡモードで機能ユニットの入力（src）／出力（dst）オペランドを検証する装置であり得る。
【００２１】
機能シミュレーター３１０は、コンパイラ２００からスケジューリング情報を入力して、ターゲットマシン、すなわち、プロセッサコアの機能ユニットに対応する動作に対してシミュレーションを行い、シミュレーション過程を表わすトレースを生成することができる。
【００２２】
ＣＧＡモードの場合、コンパイラ２００のモジュロスケジューリングを通じて生成されたループのプロローグ、ボディー、エピローグは、同じ設定情報を使う。その結果、モジュロスケジューリングによってプロローグまたはエピローグにマッピングされる実際行われない無効な演算は、ＲＴＬシミュレーションにおいて行われる。すなわち、その無効な演算が、機能シミュレーター３１０では実際に行われないが、ＲＴＬシミュレーター３２０ではシミュレーションされるために、検証装置４００の比較結果は一致しなくなる。検証装置４００は、このような無効な演算に対しても誤りと検出するために、検証装置４００の性能が低下し、正確性に問題が発生する恐れがある。
【００２３】
これを解決する方案のうちの一つとして、機能シミュレーター３１０をＲＴＬシミュレーター３２０のようなレベルに設計して、無効な演算の場合にも行わせることによって、両シミュレーター３１０、３２０の出力結果を同じにする。しかし、この場合には、機能シミュレーター３１０のシミュレーション速度が低下し、機能シミュレーター３１０の設計変更が必要である。
【００２４】
以下、このような問題を解決するために、本発明の一実施形態によれば、検証装置４００を支援する検証支援装置１００が提示される。検証支援装置１００は、再構成可能プロセッサ、例えば、ＣＧＡに基づくプロセッサの検証装置４００を支援するために活用されうる。検証支援装置１００は、検証装置４００を支援するための別途のソフトウェアで製作することができる。一方、本発明の他の実施形態によれば、検証支援装置１００は、検証装置４００の１つのソフトウェアモジュールとして構成され、本発明のさらに他の実施形態によれば、ソースコードをコンパイルし、スケジューリングするコンパイラ２００の一モジュールとして構成することもできる。
【００２５】
図２は、本発明の一実施形態による検証支援装置のブロック図である。図２を参照すると、検証支援装置１００は、無効演算判断部１１０、及びマスキングヒント生成部１２０を含みうる。
【００２６】
無効演算判断部１１０は、コンパイラ２００によってスケジューリングされた結果２０１から無効な演算を判断する。無効演算判断部１１０は、コンパイラ２００からスケジューリング結果を入力する。スケジューリング結果２０１は、メモリに保存され、無効演算判断部１１０は、そのメモリでスケジューリング結果２０１を読める。無効演算判断部１１０は、コンパイラ２００のモジュロスケジューリング結果２０１の情報に基づいて、毎サイクルごとにループのプロローグ及びエピローグにマッピングされている各演算のうち、実際に行われない無効な演算を判断することができる。
【００２７】
マスキングヒント生成部１２０は、無効演算判断部１１０によって判断された無効演算に対してマスキングヒント１２１を生成することができる。マスキングヒント１２１は、ファイル形式またはテーブル形式に生成されうるが、これに限定されるものではない。マスキングヒント１２１は、プロローグまたはエピローグで無効な演算が存在するサイクル番号とその無効な演算がマッピングされた機能ユニットのＩＤとについての情報を含みうる。生成されたマスキングヒント１２１は、検証装置４００に入力されて、その検証装置４００にマスキング情報の生成のためのヒントを提供することができる。そのヒント１２１は、検証装置４００が両シミュレーター３１０、３２０のシミュレーション結果のうち、その無効な演算に対する結果を比較しないためのマスキング情報を生成させるものである。
【００２８】
検証装置４００は、毎サイクルごとに入力及び出力オペランドを比較して、エラーを検証する。但し、毎サイクルごとにあらゆる入力及び出力オペランドの比較を行うものではない。演算の種類によって、入力及び出力オペランドの個数が異なりうる。このような場合には、検証装置４００は、特定の演算に対してマスキングビットを生成して、必要な入力及び出力オペランドの比較を行うことができる。例えば、比較を行わない特定の演算に対してマスキングビットを‘１’と設定すれば、その演算に対しては比較しない。
【００２９】
このように、検証装置４００は、検証支援装置１００からマスキングヒント１２１を入力し、そのヒント１２１を用いて比較を行わない無効な演算についてのマスキング情報を生成することができる。すなわち、プロローグまたはエピローグ動作の遂行時に、毎サイクルごとにその無効な演算に対してマスキングビットを‘１’と設定することによって、その無効な演算に対する両シミュレーター３１０、３２０のシミュレーション結果を比較しなくても良い。
【００３０】
図３は、本発明の一実施形態によってＣＧＡにマッピングされる例示的なＣコードである。図４は、図３の例示的なＣコードがＣＧＡにスケジューリングされた結果２０１である。図５は、図４のスケジューリング結果に対するヒントファイル１２１の例である。図３の例示的なコードは、整数ｉを０からＮ−１まで１ずつ増加させながら、そのｉに１０を乗算し、その結果を合わせ続けながら、各結果をメモリに保存するソースコードである。このソースコードは、Ｎ回の反復を行うループである。このソースコードをコンパイラがＣＧＡプロセッサにモジュロスケジューリングした結果２０１を図４に表わした。
【００３１】
図４を参照すると、本実施形態のＣＧＡプロセッサは、１０個の機能ユニットＦｕ００〜Ｆｕ０９を含んでおり、コンパイラ２００は、このソースコードをモジュロスケジューリングを通じてＣＧＡプロセッサの各機能ユニットにマッピングすることができる。図４で、サイクル０から６までは、プロローグを表し、サイクル７から１４は、ループボディーを表し、サイクル１５から１８は、エピローグを表す。
【００３２】
図４に示されたスケジューリング結果２０１でプロローグ（サイクル０〜６）とエピローグ（サイクル１５〜１８）のイタリック体で表わした演算が無効な演算を意味する。プロローグで９個の演算と、エピローグで５個の演算とが無効な演算であることが分かる。
【００３３】
無効演算判断部１１０は、図４に示されたようなコンパイラ２００のスケジューリング結果２０１を入力されて、無効な演算を判断する。無効演算判断部１１０は、このスケジューリング結果２０１でプロローグとエピローグとの毎サイクルごとにイタリック体で表わした無効な演算に対するサイクル番号とマッピングされる機能ユニットのＩＤとを確認する。
【００３４】
マスキングヒント生成部１２０は、無効演算判断部１１０によって毎サイクルごとに判断された無効な演算についての情報をファイルまたはテーブル形式に記録して、ヒント１２１を生成することができる。
【００３５】
図５には、図４のスケジューリング結果２０１を用いてマスキングヒント生成部１２０が生成したヒントファイル１２１の一例である。図５に示されたように、生成されたマスキングヒント１２１には、検証装置４００がマスキング情報を生成しなければならないサイクル番号及び機能ユニットのＩＤが記録されている。すなわち、プロローグ９個の演算とエピローグ５個の演算とに対するマスキングヒントが生成されているということが分かる。
【００３６】
検証装置４００は、このヒント１２１を入力されて、無効な演算に対するマスキングビットを‘１’と設定して、マスキング情報を生成させる。例えば、プロローグサイクル０の機能ユニット１（Ｆｕ０１）に対する演算‘ａｄｄ’に対しては、マスキングビットを‘１’と設定する。機能シミュレーター３１０では、この演算を行わないが、ＲＴＬシミュレーター３２０では、この演算をそのまま行うために、両シミュレーターの出力結果は変わる。しかし、検証装置４００は、この演算に対してはマスキングビットが‘１’と設定されているので、その結果に対する比較を行わない。
【００３７】
図６は、本発明の一実施形態による検証支援方法のフローチャートである。図６を参照して検証支援方法を説明すれば、無効演算判断部１１０は、コンパイラ２００によってスケジューリングされた結果２０１から無効な演算を判断する（段階５１０）。無効演算判断部１１０は、コンパイラ２００からスケジューリング結果２０１を入力され、そのスケジューリング結果２０１の情報に基づいて、毎サイクルごとにループのプロローグ及びエピローグにマッピングされている各演算のうち、実際に行われない無効な演算を判断することができる。
【００３８】
次いで、マスキングヒント生成部１２０は、無効演算判断部１１０によって判断された無効な演算に対してマスキングヒント１２１を生成することができる（段階５２０）。マスキングヒント１２１は、プロローグまたはエピローグで無効な演算のサイクル番号とその無効な演算がマッピングされる機能ユニットのＩＤとについての情報を含みうる。また、そのマスキングヒント１２１は、検証装置４００が両シミュレーター３１０、３２０のシミュレーション結果のうち、その無効な演算に対する結果を比較しないようにするマスキング情報の生成に使われる。
【００３９】
検証装置４００は、検証支援装置１００から図５に示されたようなマスキングヒント１２１を入力する。そのマスキングヒント１２１を用いて比較を行わない無効な演算についてのマスキング情報を生成することができる。マスキング情報は、検証装置４００が各演算に対する比較を行うか否かを決定することができる情報であって、マスキングビットを生成して、その比較如何を設定する。
【００４０】
例えば、マスキングビットが‘０’に設定された場合、検証装置４００は、対応する演算に対するシミュレーション結果を比較し、マスキングビットが‘１’に設定された場合、検証装置４００は、対応する演算に対するシミュレーション結果を比較しない。このように、検証装置４００は、マスキングヒント１２１を用いてプロローグまたはエピローグ動作の遂行時に、毎サイクルごとにそのヒントファイルに記録された無効な演算に対してマスキングビットを‘１’と設定することができる。そして、その無効な演算に対する両シミュレーター３１０、３２０のシミュレーション結果を比較しなくても良い。
【００４１】
開示された実施形態によれば、機能シミュレーター３１０またはＲＴＬシミュレーター３２０の設計変更などを要せず、既存のシミュレーターをそのまま用いて無効な演算に対する不要な検証を行わないようにすることによって、検証速度及び性能を向上することができる。
【００４２】
一方、本発明の実施形態は、コンピュータで読み取り可能な記録媒体に記録されるコンピュータで読み取り可能なコードとして具現しうる。コンピュータで読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
【００４３】
コンピュータで読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、磁気テープ、フロッピー（登録商標）ディスク、光データ保存装置などがあり、また、伝送波（例えば、Internetを介した伝送）の形態で具現するものを含む。また、コンピュータで読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータで読み取り可能なコードとして保存されて実行可能である。そして、本発明を具現するための機能的プログラム、コード及びコードセグメントは、本発明が属する技術分野のプログラマーによって容易に推論されうる。
【００４４】
当業者なら、本発明が、その技術的思想や必須的な特徴を変更せずとも、他の具体的な形態で実施されることを理解できるであろう。したがって、前述した実施形態は、あらゆる面で例示的なものであり、限定的ではないということを理解しなければならない。本発明の範囲は、前記詳細な説明よりは後述する特許請求の範囲によって表われ、特許請求の範囲の意味及び範囲、そして、その均等概念から導出されるあらゆる変更または変形された形態が、本発明の範囲に含まれると解析しなければならない。
【産業上の利用可能性】
【００４５】
本発明は、再構成可能プロセッサの検証支援装置及び方法関連の技術分野に適用可能である。
【符号の説明】
【００４６】
１００  検証支援装置
２００  コンパイラ
３１０  機能シミュレータ
３２０  RTLシミュレータ
４００  検証装置
【図１】
2013196702.tif 000003
【図２】
2013196702.tif 000004
【図３】
2013196702.tif 000005
【図４】
2013196702.tif 000006
【図５】
2013196702.tif 000007
【図６】
2013196702.tif 000008