(57)【要約】【課題】  アプリケーションを実行するプロセッサーの性能を評価したりあるいはそのプロセッサーで最適に実行可能なアプリケーションを作成するために使用されるプロセッサーのシミュレーション技術が開示される。【解決手段】  いくつかの機能ユニットを含んでいる再構成可能プロセッサーのシミュレーション装置はオペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路をキューで表現してプロセッサーをモデリングする。これらのキューのサイジュは機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに決定される。各ルーティングキューの動作に関するホスト向バイナリコードを保存するモデリングコードDBを備えており、バイナリファイルの代わりに対応するホスト向バイナリコードを実行してシミュレーションする。【選択図】      図１
2011216092.tif 000002
【特許請求の範囲】
【請求項１】
機能ユニットの間のルーティングのディレーに関する情報と、スケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路を表現するキューを有するプロセッサーモデルを生成するプロセッサーのモデリング部と；
前記のプロセッサーモデリング部で生成されたプロセッサーモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行させた結果の値を出力するシミュレーション部；
を含む再構成可能なプロセッサーのシミュレーション装置。
【請求項２】
請求項1において、
前記のプロセッサーモデリング部が定義するキューは該当ルーティング経路のディレーとステージの起動間隔の比に相当する数のスロットを持つ再構成可能なプロセッサーのシミュレーション装置。
【請求項３】
請求項2において、前記シミュレーション部は各機能のユニットで生成されたオペランドを該当キューの最初のスロットに記録して、起動間隔毎に各スロットに記録された情報を隣接するスロットの間で遷移させる再構成可能なプロセッサーのシミュレーション装置。
【請求項４】
請求項1において、コンパイラーから入力されるバイナリファイルは、構成ファイルと実行ファイルを含む再構成可能なプロセッサーのシミュレーション装置。
【請求項５】
請求項1において、前記のシミュレーション装置は各ルーティングキューの動作についてのホスト向バイナリコードを保存するモデリングコードDBを含め、
前記シミュレーション部は、前記のモデリングコードDBから抽出したホスト向バイナリコードから各ルーティングキューの接続を再構成して、シミュレーションを行う再構成可能なプロセッサーのシミュレーション装置。
【請求項６】
機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットと消耗する機能ユニットの間のルーティング経路を表現するキューを有するプロセッサーモデルを生成するプロセッサーのモデリングの段階と;
前記のプロセッサーのモデリングの段階で生成されたプロセッサーモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行した結果の値を出力するシミュレーションの段階を含む再構成可能なプロセッサーのシミュレーション方法。
【請求項７】
請求項6において、
前記のプロセッサーのモデリングの段階が定義するキューは該当ルーティング経路のルーティングのディレーと、ステージの起動間隔の比に相当する数のスロットを持つ持再構成可能なプロセッサーのシミュレーション方法。
【請求項８】
請求項7において、前記のシミュレーションの段階は各機能ユニットで生成されたオペランドを該当キューの最初のスロットに記録して起動間隔毎に各スロットに記録された情報を隣接するスロットの間で遷移させる再構成可能なプロセッサーのシミュレーション方法。
【請求項９】
請求項6において、前記のステージの情報は一循環のステージ分割の情報と、各ステージに関して割り当てられた機能ユニットと、オペランドを生成する機能ユニットとその生成されたオペランドを消耗する機能ユニットの間の関係についての特定の情報を含む再構成可能なプロセッサーのシミュレーション方法。
【請求項１０】
請求項6において、コンパイラーから入力されるバイナリファイルは構成ファイルと実行ファイルを含む再構成可能なプロセッサーのシミュレーション方法。
【請求項１１】
請求項6において、前記のバイナリファイルのシミュレーションの段階はバイナリファイルを読み込み各ルーティングキューの動作のホスト向バイナリコードを保存するためのモデリングコードDBから抽出された対応するホスト向バイナリコードを実行してシミュレーションを実行する再構成可能なプロセッサーのシミュレーション方法。
【請求項１２】
プロセッサーが再構成可能なプロセッサーのシミュレーション方法を具現するようにするプログラムのコマンドが保存されたコンピュータで読み取られる記憶媒体において、前記の方法が；
機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットと消耗する機能ユニットの間のルーティング経路を表現するキューを有するプロセッサーモデルを生成するプロセッサーのモデリングの段階と;
前記のプロセッサーのモデリングの段階で生成されたプロセッサーモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行した結果の値を出力するシミュレーションの段階を含む再構成可能なプロセッサーのシミュレーション方法が保存されたコンピュータで読み取られる記憶媒体。
【請求項１３】
機能ユニットの間のルーティングのディレーに関する情報と、スケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路を表現する抽象化された構造モデルを生成するプロセッサーのモデリング部と；
前記のプロセッサーモデリング部で生成される抽象化された構造モデルをもとに、コンパイラーから入力されるバイナリファイルを模擬実行させた、結果の値を出力するシミュルレイション部；
を含む再構成可能なプロセッサーのシミュレーター。
【請求項１４】
請求項13のシミュレーターにおいて、バイナリファイルは再構成可能なプロセッサーの機能ユニットが特定のアプリケーションを実行するためにどのようにマッピングされるかに関する情報を有する構成情報を含むシミュレーター。
【請求項１５】
請求項13のシミュレーターにおいて、バイナリファイルは所定の期間中に固定された構造を有する機能ユニットに基づいて再構成可能なプロセッサー内のそれぞれの機能ユニットによって実行されるコマンドを含む実行ファイルを有するシミュレーター。
【請求項１６】
請求項１3のシミュレーターにおいては、抽象化された構造モデルはオペランドを生成する機能ユニットのオペランドを消耗する機能ユニットにマッピングするキューを含むシミュレーター。
【請求項１７】
請求項16のシミュレーターにおいて、一つの機能ユニットf1は時刻t1にオペランドを生成する時のキューは機能ユニットf1の目的地ポート（destination  port）をそのオペランドを消耗する機能ユニットf2の出発地のポート（source  port）にマッピングするシミュレーター。
【請求項１８】
請求項13のシミュレーターにおいて、プロセッサーのモデリング部はスケジューラーから受信されるスケジューリング情報をもとに抽象化された構造モデルを更新するシミュレーター。
【発明の詳細な説明】
【技術分野】
【０００１】
アプリケーションを実行するプロセッサーの性能を評価したり、あるいは、そのプロセッサーで最適に実行可能なアプリケーションを構築するために使用されるプロセッサーのシミュレーション技術が開示される。
【背景技術】
【０００２】
再構成可能な計算(reconfigurable  computing）の概念は、アレイの形態で配列され、再構成可能なハードウェアを備えたプロセッサーを背景とする。各再構成可能なハードウェアの間のデータフロー（data  flow）を有するハードウェアの動作は、特定のタスク（specific  task）を実行するのに適合するように合わせられる（tailored  to  perform  a  specific  task）。再構成可能なプロセッサーは、専用のハードウェア（dedicated  hardware）に比肩するような処理性能を達成することができる。
【０００３】
再構成可能なハードウェアは多数の処理要素（processing  element）あるいは機能ユニット（functional  unit）を含んでいる。この機能ユニットの大きさ、すなわち機能ユニットにいくつのALUを有するか、いくつのレジスタを有するかのような複雑度を粒度（granularity）という。粒度が大きいプロセッサーは組立の再構成可能アーキテクチャ（Coarse-Grained  Reconfigurable  Architecture：CGRA）、粒度が小さいプロセッサーは細粒再構成可能アーキテクチャ（Fine-Grained  Reconfigurable  Architecture）を持つという。各機能ユニットの間の構成では特定のタスクを実行すると構成情報（configuration  information）によって動的に設定することができる。構成メモリ（configuration  memory）で読み込んだ構成情報にもとついて、各機能ユニットの間のルーティング経路が、例えば、マルチプレクサによって動的に設定されることができ、この設定された構造をもとに実行ファイルが実行されることができる。実行ファイルの各コマンドはそれぞれの処理要素が実行されるコマンドコード及びオペランド情報をぞくぞく有する形態でコマンドメモリに保存されることができる。
【０００４】
組立再構成可能アーキテクチャー（CGLA）は一般的にプログラムの特定の部分、例えば循環ループの実行速度を向上させるために使用される一種のアクセラレーター（accelerator）として使用されることもある。従来のASICに比べてCGLAプロセッサーーは等しいレベルの性能を持ちながら柔軟性（flexibility）が高いという点により次世代のデジタル信号プロセッサー（DSP）のための効率的な手段として浮上されている。
【０００５】
一方、あるアプリケーションがCGRAを利用したプラットフォームを使用した時にどのくらいの性能を得ることができるかを予測し、CGRAをより効率的に使用することができる方向にソースコードを修正するためには、性能のデバッグが可能なシミュレーターのサポートが必要である。CGRAのためのシミュレーターは、シミュレーションプロセスがソフトウェア開発プロセスのボトルネックにならないように十分に速い速度を持たなければならない。また、このシミュレーターは正確な性能のデバッグのためにサイクル精度（cycle  accuracy）が保障されなければならない。
【０００６】
CGRAはVLIW（Very  Long  Instruction  Word）のマシンのようにコンパイル時にすべてのスケジュールが決定されるためシミュレーターがサイクル精度を保証することは比較的に容易なことである。しかし、一つのレジスタを通じて機能ユニットの間のオペランド転送（operand  passing）が行われる一般的なプロセッサーは異なり、CGRAはさらに複雑な接続ロジック（interconnection  logic）を利用して機能ユニットの間のオペランドを取り交わす。このため、シミュレーターは多数の接続ロジックの動作をモデリングする負担を持っている。多数の接続ロジックの動作を監視することは、シミュレーション速度を制限する主な要因になる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
CGLAプロセッサーのための シミュレーターが提供される。提案するシミュレーターはサイクル精度が保証され、出力を正確に予測することが可能でありながら、高速の動作を可能にすることを目的にする。
【課題を解決するための手段】
【０００８】
一般的な態様によると、機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリング（modulo  scheduling）による循環ループ（iteration  loop）のステージ情報（stage  information）をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路を表現するキュー（queue）を有するプロセッサーのモデルを生成するプロセッサーのモデリング部と、このプロセッサーのモデリング部で生成されたプロセッサーのモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行させ、結果の値を出力するシミュレーション部を含む再構成可能なプロセッサーのシミュレーション装置が提供される。
【０００９】
プロセッサーのモデリング部が定義しているキューは該当ルーティング経路のルーティングのディレーと、ステージの開始間隔（initiation  interval）の比（ratio）に相当する数のスロット（slot）を持つことができる。
【００１０】
シミュレーション部は各機能のユニットで生成されたオペランドをそのキューの最初のスロットに記録して、開始間隔毎に各スロットに記録された情報を隣接するスロットの間で遷移（shift）させることができる。
【００１１】
コンパイラーから入力されたバイナリファイルは構成ファイル（configuration  file）と実行ファイル（execution  file）を含むことができる。
【００１２】
シミュレーション装置は各ルーティングキューの動作のホスト向バイナリコードを保存するためのモデリングコードDBを含むことができ、シミュレーション部のモデリングのコードDBから抽出したホスト向バイナリコードから各ルーティングキューの接続を再構成してシミュレーションを行うことができる。
【００１３】
もう一つの態様によると、機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報（stage  information）をもとに、オペランドを生成する機能ユニットとを消耗する機能ユニットの間のルーティング経路を表現するキューを有するプロセッサーのモデルを生成するプロセッサーのモデリングの段階と、プロセッサーのモデリングの段階で生成されたプロセッサーのモデルをもとにコンパイラーから入力されるバイナリファイルをシミュレーションを実行させ結果の値を出力するシミュレーションの段階を有する再構成可能なプロセッサーのシミュレーション方法が提供される。
【００１４】
プロセッサーのモデリングの段階が定義するキューはルーティング経路のルーティングのディレーとステージの開始間隔の比（ratio）に相当する数のスロットを持つことができる。
【００１５】
シミュレーションの段階で各機能のユニットで生成されたオペランドをそのキューの最初のスロットに記録して開始間隔毎に各スロットに記録された情報を隣接するスロット間での遷移させることができる。
【００１６】
ステージ上の情報は一循環（iteration）のステージ分割の情報と、各ステージ毎に割り当てられている機能ユニットと、オペランドを生成する機能ユニットと、その生成されたオペランドを消耗する機能ユニットの間の関係に関する特定の情報を含むことができる。
【００１７】
コンパイラーから入力されたバイナリファイルは構成ファイルと実行ファイルをすることができる。
【００１８】
バイナリファイルのシミュレーションの段階はバイナリファイルを読み込み各ルーティングキューの動作のホスト向バイナリコードを保存するためのモデリングコードDBから抽出された対応するホスト向バイナリコードを実行してシミュレーションを行うことができる。
【００１９】
もう一つの態様によると、機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットと消耗する機能ユニットの間のルーティング経路を表現するキューを含むようにプロセッサーをモデリングするプロセッサーのモデリングの段階と、プロセッサーのモデリングの段階で生成されたプロセッサーのモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行させ結果の値を出力するシミュレーションのステップを有する再構成可能なプロセッサーのシミュレーション方法が保存されたコンピュータで読み取り可能な記憶媒体が提供される。
【００２０】
もう一つの態様によると、機能ユニットの間のルーティングのディレーに関する情報と、スケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路を表現する抽象化された構造（architecture）モデルを生成するプロセッサーのモデリング部と、プロセッサーのモデリング部で生成される抽象化された構造モデルをもとに、コンパイラーから入力されるバイナリファイルを模擬実行させ、結果の値を出力するシミュレーション部を含む再構成可能なプロセッサーのシミュレーターが提供される。
【００２１】
バイナリファイルは、再構成可能なプロセッサーの機能ユニットが特定のアプリケーションを実行するためにどのようにマッピングされるかに関する情報を有する構成情報（configuration  information）を含むことができる。
【００２２】
バイナリファイルは所定の期間中に固定された構造を有する機能ユニットに基づいて再構成可能なプロセッサー内のそれぞれの機能ユニットによって実行されるコマンドを含む実行ファイルを含むことができる。
【００２３】
抽象化された構造モデルはオペランドを生成する機能ユニットをオペランドを消耗する機能ユニットにマッピングするキューを含むことができる。
【００２４】
一機能ユニットf1は時刻t1からのオペランドを生成する時にキューは機能ユニットf1の目的地ポート（destination  port）をそのオペランドを消耗する機能ユニットf2の出発地のポート（source  port）にマッピングすることができる。
【００２５】
プロセッサーのモデリング部はスケジューラーから受信されるスケジューリング情報に基づいて抽象化された構造モデルを更新することができる。
【００２６】
付加的な機能及び態様は後述する説明や図及び請求項から明らかになるはずである。
【発明の効果】
【００２７】
提案されたシミュレーターは再構成可能なプロセッサーを対象に、単純化されたモデリングを通じてシミュレーションを高速に実行することが可能である。また、ホスト向バイナリコードをマッピングさせてシミュレーションをさらに高速で実行することができる。
【図面の簡単な説明】
【００２８】
【図１】再構成可能なプロセッサーのプログラムの実行をシミュレーションするために使用することができる例示的なプログラムの開発システムの一実施形態を示すブロック図である。
【図２】一実施形態による再構成可能プロセッサーの日の実施例を図示したブロック図である。
【図３】別の実施形態によるシミュレーター100の構成の別の実施形態を図示したブロック図である。
【図４】既存の構造モデル（architecture  model）の一実施形態を図示した図である。
【図５】プロセッサーに適用されうるモデリング方法の一実施形態を図示した図である。
【図６】CGRAプロセッサーのモジューロスケジューリングの一実施形態を図示した図である。
【図７】図6のCGRAプロセッサーが4つのステージで構成される循環ループを実行する時各機能ユニットの処理の流れの一実施形態を説明する図である。
【図８】一態様によってモジュールにスケーリングをされた結果に適用することができる一実施形態によるプロセッサーモデル113を図示した図である。
【発明を実施するための形態】
【００２９】
図面と詳細な説明で、特に違う方法で明示しない限り、同一な図面の符号は同一な構成要素と機能及び構造を指示することで理解される。構成要素間の相対的な大きさや描写は明確性や例又は便宜のために誇張されることもできる。
【００３０】
以下の説明は記述された方法たち及びデバイスたち及び/又はシステムの完全な理解を助けるために提供される。したがって、ここで記述された方法、デバイス、及び/又はシステムの様々な変更や補完及び同等物などが当業者に提示されることができる。また、よく知られている機能や構成の説明が明確性や簡潔性のため省略することができる。
【００３１】
図1は、再構成可能なプロセッサーをシミュレーションする時にされうるプログラムの開発システムの一形態を図示する。図1を参照すると、プログラム開発システムはコンパイラー/スケジューラー300とシミュレーター100を含んでいる。コンパイラー/スケジューラー300はメモリ510からの再構成可能なプロセッサーの構造情報と実行するプログラムソースを読み込む。コンパイラー/スケジューラー300はこれらをコンパイルしてスケジューリング（scheduling）し、その結果として実行ファイル930とプロセッサーの構成情報910をメモリに出力して保存する。シミュレーター100はこのコンパイラー/スケジューラー300からスケジューリング情報を入力されまたメモリから構成情報910及び実行ファイル930を読み込み実行ファイル930の動作をシミュレーションする。
【００３２】
例えば、プログラム開発システムは携帯機器や家電機器に組み込むことができる。又はプログラム開発システムは携帯端末機器や組込システムや同様の機器に組み込むことができる。シミュレーター100は単一のコアプロセッサーやマルチコアプロセッサーによって実行されるプロセッシングをシミュレーションするために使用することができる。
【００３３】
図1の例において、コンパイラー／スケジューラー300からシミュレーター100に入力されるバイナリファイル900は構成情報や設定ファイルと実行ファイルを含んでいる。
【００３４】
このようなシミュレーションを通じてどのアプリケーションが特定の構造の再構成可能なプロセッサー上で実行される時にどれだけの性能を得ることができるかを予測することができ、また、デバッグを使ってより効率的な実行を可能するようにプログラムソース530を変更することができる。一実施形態において、構造情報510は例えば、再構成可能なプロセッサーの機能ユニットの構造、これらの間の経路接続情報などのデータ構造及び制御の流れ（control  flow）の構造に関する情報を含んでいる。これに対して構成情報910はこのように特定の構造を持つ再構成可能なプロセッサーの機能ユニットの間の経路の接続が実際に特定のアプリケーションを実行するためにどのように接続できるのかに関する情報である。実行ファイル930は構成情報910によって一定期間固定された構造を持つ再構成可能なプロセッサーで各機能ユニットが実行すべきコマンドを含んでいる。構成情報とコマンドのコードは多くの場合、統合されて扱われることもある。すなわち、1クロックで処理されるべき構成情報と命令コードがメモリに隣接して、保存され、プロセッサーによって同時にフェッチ（fetch）される。
【００３５】
例示的なプログラムの開発システムでシミュレーターでは、コンパイラー/スケジューラーからのスケジューリングに関する情報の入力を受け取ることができる。しかし、もう一つの例において、これらのスケジューリング情報はメモリ900に保存されシミュレーター100がメモリから読み込むこともできる。
【００３６】
一態様によると、シミュレーター100は抽象化された構造モデルを利用する。このモデルは機能ユニットの間のオペランドのルーティング経路を内部結線ロジック（interconnection  logic）のシーケンスを使用して表現するのではなく、オペランドを生成する機能ユニットと、オペランドを消耗する機能ユニットの間のキューとしてモデリングする。これによって、シミュレーションサイクル毎にその動作を確認しなければならない内部結線を構成要素の数が大幅に減少するので、シミュレーション速度を向上させることができる。
【００３７】
図2は、シミュレーターが付いて再構成可能なプロセッサーの一例を図示する。図2に図示されたように、一実施形態による再構成可能プロセッサーのシミュレーション装置はプロセッサーモデリング部110とシミュレーション部130を含んでいる。プロセッサーモデリング部110は機能ユニットの間のルーティングのディレーに関する情報と、スケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路をキューとして表現してプロセッサーをモデリングする。シミュレーション部130はこのプロセッサーモデリング部110から生成されたプロセッサーモデル113をもとに、コンパイラーから入力されるバイナリファイルを模擬実行し、結果の値を出力する。
【００３８】
図示された実施形態において、プロセッサーモデリング部110、シミュレーション部130はプログラムとして具現されるが、これに限定されるわけではない。図示された実施形態において、プロセッサーモデル113及び構造情報510はメモリに保存されるデータ又はデータ構造だが、これらに限定されるわけではない。
【００３９】
CGRAプロセッサーは機能ユニットの間の内部結線ロジックが珍しいsparse）という特徴を持っている。その結果、機能ユニットの間で一つのサイクルの中でオペランドをルーティングするようにする経路（path）が存在しない可能性もある。したがって、CGRAプロセッサーは一般的に一つのオペランドをルーティングするために2つ以上の内部結線の構成要素（component）が使用されている。例えば、一つの機能ユニットが生成した値はレジスタファイル又はマルチプレクサ、あるいは他の機能ユニットを順次的に経てその値を消耗する機能ユニットに伝達される。CGRAプロセッサーのスケジューラーはコンパイル時間（compile  time）にどのような演算（operation）をどのような機能ユニットの割り当て（place）させるかを決定する。また、CGRAプロセッサーのスケジューラーは演算の間のオペランドをどのような内部結線の構成要素の接続（chain）を利用してルーティング（routing）してあげるかどうかを決定する。
【００４０】
記述されているように、プロセッサーモデル113は機能ユニットの間のキューとしてモデリングする。たとえば、プロセッサーモデル113は機能ユニットの間のオペランドのルーティング経路を内部結線ロジックのシーケンス（sequence）を使用して表現するのではなく、オペランド（operand）を生成する機能ユニットとオペランドを消耗する機能ユニットの間のキューとしてモデリングする。たとえば、任意のオペランドがt1という時点で機能ユニットf1から生成され、t2という時点での機能ユニットf2で消耗されるとすると、このキューはt1時点でのf1の目的地ポート（destination  port）とt2の時点でのf2出発地ポート（source  port）をつなぐキューにモデリングされる。
【００４１】
図4は、既存の構造モデル（architecture  model）の一例を例示する。点線で表示される領域は意味があるオペランドが存在しない区間で、黒色に塗られた部分は機能ユニットf1が生成されたオペランドの流れを、実線で表示された領域は機能ユニットf2が生成されたオペランドの流れを図示する。たとえば、機能ユニットf1乃至f4は、ALU（arithmetic  and  Logical  Unit）を示し、機能ユニットu1はローカルレジスタファイル（local  register  file）を示す。
【００４２】
時刻tで、機能ユニットf1が生成した第1オペランドはf1機能ユニットの出力バッファに到達する。時刻t+1でこの第1オペランドは機能ユニットu1の入力バッファに到達して内部にラッチされる。同時に機能ユニットf2から演算された第2のオペランドがf2機能ユニットの出力バッファに達する。時刻t+2で、機能ユニットf1から生成された第1オペランドは機能ユニットu1の出力バッファに到達し、機能ユニットf4の左側の入力バッファにラッチされる。また、機能ユニットf2で生成された第2のオペランドは機能ユニットu1の入力バッファに到達して、内部にラッチされる。その後、時刻t+3での機能ユニットu1にラッチされていたオペランドは機能ユニットu1の出力バッファに到達し、機能ユニットf4の右側の入力バッファにラッチされる。
【００４３】
すなわち、機能ユニットf1で時刻tに生成された第1オペランドは機能ユニットu1を経て、時刻t+2に機能ユニットf4に到達して、消耗の準備状態に達する。また、機能ユニットf2での時刻t+1で生成された第2のオペランドは機能ユニットu1を経て、時刻t+3で機能ユニットf4に到達して、消耗の準備状態に達する。この時の機能ユニットf4で両方のオペランドの演算は時刻t+3に行われる。したがって、機能ユニットf1で生成された第1オペランドは機能ユニットf4で消耗されるまで、三クロックが必要となり、機能ユニットf2で生成された第2オペランドは機能ユニットf4で消耗されるまで2つのクロックが必要となる。
【００４４】
図5は、一つのプロセッサーに適用されるためのモデリング方法の一つの例を図示する。図5を参照すると、機能ユニットf1乃至f4では入力バッファは省略された。また、ローカルレジスタファイルはディレーの程度に相当するスロットが付いているキューにモデリングされた。オペランドのルーティングキューは意味があるオペランドの伝達を目的として存在するので、シミュレーターはそのオペランドのルーティングのために使用される内部結線の構成要素として、意味があるオペランドに対応するキューだけを考慮する。これは毎サイクル毎に考慮しなけばならない内部結線の構成要素の数を減らしてシミュレーション時間を向上させる。
【００４５】
図5に図示されたように、シミュレーターは4つの機能ユニットを含む再構成可能なプロセッサーアレイの処理をシミュレーションする。しかしこれは例示的な目的に過ぎない。再構成可能なプロセッサーアレイはたとえば、２個、４個、８個、12個、16個、24個又はその以上の多数の機能ユニットを含むことができる。
【００４６】
このように、データフローグラフ（dataflow  graph）を反映して構造モデルを生成するために実際にデータフローグラフの構造にどのようにマッピングされたかを示す情報を使用することができる。一態様によると、このような情報はスケジューラーから供給することができる。スケジューラーはデータフロー上に存在するコンポーネントのソース演算（source  operation）と、結果値の演算（destination  operation）のスケジューリング情報を生成し、これをシミュレーターに提供することができる。
【００４７】
CGRAプロセッサーのスケジューリング方式にはリストスケジューリング（list  scheduling）方式とモジューロスケジューリング方式が可能である。一態様によって一般的なリストスケジューリング方式を利用する場合ルーティングのキュー（routing  queue）は一つのバッファとして具現することができる。すなわち、オペランドを生成するコンポーネントの値を生成する時点でバッファに生成された値を消耗し、オペランドを消耗するコンポーネントが消耗する時点でバッファから値を読み取るようにすることにより、ルーティングのキューを具現することができる。
【００４８】
モジューロスケジューリングはソフトウェアパイプライン処理に該当する。モジューロスケジューリングはループの異なる循環をインターリビング（interleaving）のコマンドスケジューリングの一形態である。ソフトウェアのパイプライン処理はループの異なるサイクルの実行を重畳することで性能が向上する。一循環は以前の循環の完了前に始めることができる。循環が開始されている区間は起動間隔（initiation  interval）と呼ばれる。ソフトウェアパイプライン処理の最適化の一つの目的は循環を重ね合わせて最短の起動間隔を使用することだ。
【００４９】
モジューロスケジューリングのフレームワーク（framework）では、ループレベル並列処理（loop  level  parallelism）を利用するためにソフトウェアパイプライニング（software  pipelining）の手法を用いて、複数のループの循環（loop  iteration）を重ねて実行するオーバーラップドスケジュール（overlapped  schedule）を生成することができる。生成されたスケジュールでの一循環は複数のステージに区分され、各ステージはすべて起動間隔ほどの実行サイクルを備える。そして、起動間隔のサイクルの中にはお互いに異なるループの循環からそれぞれ別のステージに該当する演算が重ね合わせて（overlap）、スケジュールされることになる。結果的に、モジューロスケジューリングのフレームワークは起動間隔毎に異なる循環経路に有する同じ演算を繰り返して実行するようにするスケジュールを生成する。ループの循環が重なるためオペランドのルーティング経路で消耗されるサイクルの数が起動時間を超過した場合はキューに有する値が上書き（overwriting）され、その値を消耗するコンポーネントが到達する前に消えてしまうことがある。
【００５０】
図6は、CGRAプロセッサーのモジューロスケジューリングの一例を図示する。図7は図6のCGRAプロセッサーが4つのステージで構成されている循環ループを実行する時各機能ユニットの処理の流れを図示する。図6に4つの機能ユニットはそれぞれの一循環を構成する一つのステージの実行を担当し、それぞれの前のステージで入力されたデータを処理して次のステージに出力する、すなわちソフトウェアのパイプライン方式の処理を実行する。
【００５１】
図7を参照すると、時刻tで機能ユニットf1は最初の循環ループの最初のステージを処理し、機能ユニットf2、f3、f4は前段階で処理された結果を待っている。時刻t+1での機能ユニットf1は二番目の循環ループの最初のステージを処理し、機能ユニットf2は機能ユニットf1からの最初の循環ループの1stステージの処理結果を入力を受けて最初の循環ループの二番目のステージを処理し、機能ユニットf3、f4は前段階で処理された結果をまだ待っている。時刻t+2で機能ユニットf1は三番目の循環ループの最初のステージを処理し、機能ユニットf2は機能ユニットf1から二番目の循環ループの最初のステージの処理結果を入力を受けて二番目の循環ループの二番目のステージを処理し、機能ユニットf3は機能ユニットf2から最初の循環ループの二番目のステージの処理結果を入力受けて最初の循環ループの三番目のステージを処理し、機能ユニットf4は前段階で処理された結果をまだ待っている。時刻t+3で機能ユニットf1は四番目の循環ループの最初のステージを処理し、機能ユニットf2は機能ユニットf1から三番目の循環ループの最初のステージの処理結果を入力受けて第三の循環ループの二番目のステージを処理し、機能ユニットf3は機能ユニットf2から二番目の循環ループの二番目のステージの処理結果を入力受けて二番目の循環ループの三番目のステージを処理し、機能ユニットf4は機能ユニットf3からの最初の循環ループの三番目のステージの処理結果を入力受けて最初の循環ループの四番目の一ステージを処理する。
【００５２】
図7に図示された実施形態において、各クロックサイクルは一個の起動間隔に相当する。最初のクロックサイクルは最初の起動間隔に相当し、二つ目のクロックサイクルは二番目のブーツの間隔に相当し、三つ目のクロックサイクルは三番目のブーツの間隔に相当し、四回のクロックサイクルは四番目の起動間隔に相当する。
【００５３】
このようなモジューロスケジューリングのフレームワークで生成された結果を一態様によるプロセッサーモデルを利用いてシミュレーションする場合、ルーティングのキューを一つのバッファとして具現するとオペランドのルーティング経路（operand  routing  path）で消耗されるサイクルが起動間隔を超えている場合についてオペランドを消耗するコンポーネントがシミュレーションされる前にキューに入っている値は上書きされている場合が発生することになる。オペランドを生成する構成要素は始動間隔毎に新しい値をルーティングキューに記録するためである。
【００５４】
記述されているように、プロセッサーモデリング部110が定義するキュー（図2参照）は該当ルーティング経路のルーティングのディレーとステージの起動間隔の比に相当する数のスロットを持つ。さらにシミュレーション部130は各機能ユニットから生成されたオペランドを該当キューの最初のスロットに記録して、起動間隔毎に各スロットに記録された情報を隣接するスロット間での遷移させる。具体的にはモジューロスケジューリングのフレームワークでシミュレーションをする場合ルーティングのキューは天井（ceiling）値、すなわちルーティングディレー値/起動間隔(routing  delay/  initiation  interval）ほどのスロットとして具現される。このルーティングキューはひとつひとつ起動間隔毎に以前のスロットの値を次のスロットに遷移させ、オペランドを消耗するコンポーネントはルーティングのキューの最後のスロットにある値を読んで来る。
【００５５】
図8は一態様によって、モジューロスケジューリングされた結果に適用することができる一実施形態によるプロセッサーモデル113を図示する。この例において始動間隔は2サイクルになるようにスケジュールされたと仮定する。2つのオペランドの両方がルーティングディレー値（routing  delay）が起動間隔よりも大きいので、それぞれのルーティングのキューは2つのスロットに分けられるようになる。前述したように機能ユニットは始動間隔毎に新しい値を生成するため、シミュレーション部130は始動間隔が経過した後、以前に生成された値をルーティングキューの次のスロットに移してくれる。このように各オペランド別のルーティングのキューを管理することによって、シミュレーション部130はモジューロスケジューリングされた結果につきましても正確な動作を再現することができる。
【００５６】
図3は、シミュレーター100を持っていて再構成可能プロセッサーのもう一つの実施形態を図示する。図3を参照するとシミュレーション装置100は各ルーティングキューの動作に関するホスト向バイナリコードを保存するモデリングコードDB（131）をさらに含むことができる。シミュレーション部130は、バイナリファイルを読み込み、このモデリングのコードDB（131）から抽出されて対応するホスト向バイナリコードを実行して、シミュレーションを行う。また、シミュレーション装置はモデリングコードDB（131）から抽出したホスト向バイナリコードから各ルーティングキューの接続を再構成して、シミュレーションを行うことができる。図示された実施形態においてスケジューラー330及びプロセッサーモデリング部110、構造情報510、及びプロセッサーモデル113は図2に図示された実施形態のそれと類似している。
【００５７】
バイナリの翻訳（Binary  translation）技術を使用してシミュレーター上でターゲット（target）になる機械（machine）のコマンドバイナリコード（instruction  binary）をそれと同等の動作をするホストマシン（host  machine）のバイナリコード（binary）で置換した後、同じコードブロック（code  block）をシミュレーションする時は、前に置換したホストマシンのバイナリコードを実行させることにより、シミュレーション速度を速くすることができる。
【００５８】
プログラムカウンタ（program  counter）が指しているアドレスに対応する値をコマンドメモリ（instruction  memory）で読んで来て実行する一般的なプロセッサーと同様に、CGRAプロセッサーは毎サイクルごとに構成のメモリ（configuration  memory）の特定の番地から構成データを読み込んで、各構成要素ごとに、そのサイクルで構成データを指示している動作を実行することができる。一態様によると、構成のメモリのそれぞれのアドレスごとに、構成データのホストのバイナリコードが生成される。以後同じ構成のメモリのアドレスに存在する構成データのシミュレーションを行う際には、以前に生成しておいたホストのバイナリコードを使用してシミュレーションを行うことができる。
【００５９】
図3に図示された実施形態にあって、一態様によるプロセッサーの構造モデル113にバイナリ変換が適用される。たとえば、実際のプロセッサーアーキテクチャに存在する内部結線ロジックの動作（behavior）に対するホストのバイナリコードを生成することの代りに、ルーティングのキューの動作をモデリングするバイナリコードが保存される。データフローグラフ（data  flow  graph）上の動作（operation）がマッピング（mapping）されている構成要素が、その生成/消耗された値を別の内部結線の構成要素を通じて送受信されるものと記述する代りにルーティングのキューを利用することで記述を与える。一方、ルーティングのキューの動作につきましては、始動間隔が経つごとにキューに存在する値を次のスロットに渡す部分だけをモデリングしてくれればいいのでバイナリの翻訳を難しくないように適用することができる。
【００６０】
図3に図示された実施形態において、モデリングコードDB（131）は構成のメモリに対応して各アドレスごとに構成データへのホストのバイナリコードが保存される。この構成データはデータフローグラフ上で各構成要素の間のルーティングのキューの動作を記述するデータである。シミュルレイション部130はモデリングコードDB（131）からの読み込んだこのホストのバイナリコードによってプロセッサーモデル113を再構成し、バイナリファイル900上で実行ファイルを読み込んで再構成されたプロセッサーモデル113をもとにシミュレーションを行う。
【００６１】
抽象化された構造モデルは実際の構造及びデータフローグラフをモデリングしたことから導出した構造のグラフで見ることができる。抽象化された構造モデルにあってデータフローグラフの上に存在するそれぞれのエッジはキューにモデリングすることができる。たとえば、抽象化された構造モデルは実際のモデルでデータフローグラフのエッジがマッピングされる構成要素をキューに抽象化し、また、データフローグラフのノードがマッピングされる機能ユニット、定数のユニットのような構成要素はそのまま維持するために使用されることができる。これにより、アプリケーションの動作に影響を与えないか影響がほとんどない内部結線の構成要素は削除されることができ、データフローのエッジに対応するオペランドをルーティングするために使用される一連の内部結線を構成要素が単純化することができる。
【００６２】
前述した実施形態から明らかなように、一態様による再構成可能なプロセッサーのシミュレーション方法はルーティング経路をキューで表現してプロセッサーをモデリングする段階を含んでいる。これらのモデリングの段階は機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットと消耗する機能ユニットの間のルーティング経路をキューで表現してプロセッサーをモデリングする。
【００６３】
シミュレーションの段階ではモデリングの段階で生成されたプロセッサーモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行させ、結果の値を出力することができる。
【００６４】
プロセッサーのモデリングの段階が定義するキューは解党ルーティング経路のルーティングのディレーとステージの起動間隔の比に相当する数のスロットを持つ。また、各シミュレーション段階で各機能のユニットで生成されたオペランドをそのキューの最初のスロットに記録して、起動間隔毎に各スロットに記録された情報を隣接するスロット間での遷移させる。ステージ情報は一循環のステージ分割の情報と各ステージごとに割り当てられている機能ユニットとオペランドを生成する機能ユニットとその生成されたオペランドを消耗する機能ユニットの間の関係に関する特定の情報を含んでいる。
【００６５】
また、コンパイラーから入力されるバイナリファイルは構成ファイルと実行ファイルを含むことができる。もう一つの実施例においてシミュレーションの段階はバイナリファイルを読み込み各ルーティングキューの動作に対するホスト向バイナリコードを保存するためのモデリングコードDBから抽出された対応するホスト向バイナリコードを実行してシミュレーションを行うことができる。
【００６６】
前述のプロセスと、機能、方法及び/又はソフトウェアは一つあるいはそれ以上のコンピュータが読み取り可能な記憶媒体に記録することができる。この記憶媒体はコンピュータによってプロセッサーが実行するか又は実行するように具現されたプログラムコマンドを含んでいる。また、この媒体はプログラムのコマンドと組み合わせて又は単独で、データファイル、データ構造又はごれと同様のことを含むことができる。コンピュータが読み取られる記憶媒体の例はハードディスク、フロッピー（登録商標）ディスクや磁気テープなどの磁気媒体と、CD ROMディスクやDVDなどの光学媒体、光ディスクなどの磁気-光学媒体、そして、ROM、RAM、フラッシュメモリなどのプログラムコマンドを保存して実行するように特別に構成されたハードウェア機器などを含むことができる。プログラムコマンドの例はコンパイラーによって生成された機械コードやインタープリタを使用してコンピュータが実行することができる高水準言語を含むファイルがなどがある。説明されたハードウェア機器は前述した方法又は私の動作を実行するために、一つあるいはそれ以上のソフトウェアモジュールで動作するように構成することができその逆も可能である。さらにコンピュータが読み取られる記憶媒体はネットワークを通じて接続されたコンピュータシステムの間で配布されることができ、コンピュータが読み取られるコードやプログラムのコマンドは非集中された（decentralized）方式で保存され、実行されることができる。
【００６７】
限定的な例ではないが、前述した端末装置は携帯電話、PDA、デジタルカメラ、携帯ゲーム機、MP3プレーヤー、携帯用/個人用マルチメディアプレーヤー、携帯電子ブック、個人用ラップトップコンピュータ、GPSナビゲーション、そしてデスクトップPCなどの機器たち、HDTV、光ディスクプレーヤ、セットトップボックスのように、前述した通信方式と両立する無線又は有線の通信が可能な機器を目指している。
【００６８】
コンピューティングシステム又はコンピュータはバスによってユーザーのインターフェイス及びメモリコントローラと電気的に接続されたマイクロプロセッサーを含むことができる。また、フラッシュメモリ機器を含むことができる。フラッシュメモリ機器はメモリコントローラを通じてN-ビットのデータを保存することができる。N-ビットのデータはマイクロプロセッサーによって処理され、Nは1又はその以上の整数になることができる。コンピューティングシステム又はコンピュータが移動機器である場合には、バッテリが付加的に提供され、コンピューティングシステム又はコンピュータの動作電圧を供給することができる。
【００６９】
当業者ならコンピューティングシステム又はコンピュータは応用のチップセット、カメラのイメージプロセッサーcamera  image  processor：CIS）、DRAMのようなものがより多く含まれることが明らかである。メモリコントローラとフラッシュメモリ機器はデータを保存する不揮発性メモリを使用するSSDsolid  state  drive/disk）を構成することができる。多くの実施形態が記述されているが、さまざまな明らかな変更が可能である。たとえば、説明している手法が異なる順序で実行されるか、及び/又は、前述したシステム、構造、機器、回路の構成要素が相違する方式で結合されるか、及び/又は、その他の構成要素やその同等物で置換又は補足されることによって適切な結果を達成することもできる。これらの具現例は後述する請求項の範疇に含まれるように意図された。
【図１】
2011216092.tif 000003
【図２】
2011216092.tif 000004
【図３】
2011216092.tif 000005
【図４】
2011216092.tif 000006
【図５】
2011216092.tif 000007
【図６】
2011216092.tif 000008
【図７】
2011216092.tif 000009
【図８】
2011216092.tif 000010