(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5797438
(24)【登録日】2015年8月28日
(45)【発行日】2015年10月21日
(54)【発明の名称】シミュレーション装置、シミュレーション方法、シミュレーター及び記憶媒体
(51)【国際特許分類】
G06F 9/455 20060101AFI20151001BHJP
H01L 21/82 20060101ALI20151001BHJP
G06F 11/25 20060101ALI20151001BHJP
G06F 11/00 20060101ALN20151001BHJP
【FI】
G06F9/44 310D
H01L21/82 A
H01L21/82 C
G06F11/26 310
!G06F9/06 630A
【請求項の数】18
【全頁数】17
(21)【出願番号】特願2011-76608(P2011-76608)
(22)【出願日】2011年3月30日
(65)【公開番号】特開2011-216092(P2011-216092A)
(43)【公開日】2011年10月27日
【審査請求日】2014年3月7日
(31)【優先権主張番号】10-2010-0029379
(32)【優先日】2010年3月31日
(33)【優先権主張国】KR
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100091214
【弁理士】
【氏名又は名称】大貫 進介
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(72)【発明者】
【氏名】呉 泰 ▲うく▼
(72)【発明者】
【氏名】柳 秀 晶
(72)【発明者】
【氏名】金 潤 進
(72)【発明者】
【氏名】徐 雄
(72)【発明者】
【氏名】▲ちょう▼ 暎 ▲ちょる▼
(72)【発明者】
【氏名】朴 日 鉉
【審査官】
坂庭 剛史
(56)【参考文献】
【文献】
特開2006−185423(JP,A)
【文献】
特開2005−353061(JP,A)
【文献】
Bingfeng Mei, Andy Lambrechts, Jean-Yves Mignolet, Diederik Verkest and Rudy Lauwereins,"Architecture Exploration for a Reconfigurable Architecture Template",IEEE Design & Test of Computers, March-April 2005,米国,IEEE,2005年 4月 4日,Volume 22, Issue 2,pp.90-101,ISSN 0740-7475
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
G06F 11/25
H01L 21/82
G06F 11/00
(57)【特許請求の範囲】
【請求項1】
機能ユニットの間のルーティングのディレーに関する情報と、スケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路を表現するキューを有するプロセッサーモデルを生成するプロセッサーモデリング部と;
前記のプロセッサーモデリング部で生成されたプロセッサーモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行させた結果の値を出力するシミュレーション部;
を含む再構成可能なプロセッサーのシミュレーション装置。
【請求項2】
請求項1において、
前記のプロセッサーモデリング部が定義するキューは該当ルーティング経路のディレーとステージの起動間隔の比に相当する数のスロットを持つ再構成可能なプロセッサーのシミュレーション装置。
【請求項3】
請求項2において、前記シミュレーション部は各機能ユニットで生成されたオペランドを該当キューの最初のスロットに記録して、起動間隔毎に各スロットに記録された情報を隣接するスロットの間で遷移させる再構成可能なプロセッサーのシミュレーション装置。
【請求項4】
請求項1において、コンパイラーから入力されるバイナリファイルは、構成ファイルと実行ファイルを含む再構成可能なプロセッサーのシミュレーション装置。
【請求項5】
請求項1において、前記のシミュレーション装置は各ルーティングキューの動作についてのホスト向バイナリコードを保存するモデリングコードDBを含め、
前記シミュレーション部は、前記のモデリングコードDBから抽出したホスト向バイナリコードから各ルーティングキューの接続を再構成して、シミュレーションを行う再構成可能なプロセッサーのシミュレーション装置。
【請求項6】
機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットと消耗する機能ユニットの間のルーティング経路を表現するキューを有するプロセッサーモデルを生成するプロセッサーのモデリングの段階と;
前記のプロセッサーのモデリングの段階で生成されたプロセッサーモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行した結果の値を出力するシミュレーションの段階を含む再構成可能なプロセッサーのシミュレーション方法。
【請求項7】
請求項6において、
前記のプロセッサーのモデリングの段階が定義するキューは該当ルーティング経路のルーティングのディレーと、ステージの起動間隔の比に相当する数のスロットを持つ再構成可能なプロセッサーのシミュレーション方法。
【請求項8】
請求項7において、前記のシミュレーションの段階は各機能ユニットで生成されたオペランドを該当キューの最初のスロットに記録して起動間隔毎に各スロットに記録された情報を隣接するスロットの間で遷移させる再構成可能なプロセッサーのシミュレーション方法。
【請求項9】
請求項6において、前記のステージ情報は一循環のステージ分割の情報と、各ステージに関して割り当てられた機能ユニットと、オペランドを生成する機能ユニットとその生成されたオペランドを消耗する機能ユニットの間の関係についての特定の情報を含む再構成可能なプロセッサーのシミュレーション方法。
【請求項10】
請求項6において、コンパイラーから入力されるバイナリファイルは構成ファイルと実行ファイルを含む再構成可能なプロセッサーのシミュレーション方法。
【請求項11】
請求項6において、前記のバイナリファイルのシミュレーションの段階はバイナリファイルを読み込み各ルーティングキューの動作のホスト向バイナリコードを保存するためのモデリングコードDBから抽出された対応するホスト向バイナリコードを実行してシミュレーションを実行する再構成可能なプロセッサーのシミュレーション方法。
【請求項12】
プロセッサーが再構成可能なプロセッサーのシミュレーション方法を具現するようにするプログラムのコマンドが保存されたコンピュータで読み取られる記憶媒体において、前記の方法が;
機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットと消耗する機能ユニットの間のルーティング経路を表現するキューを有するプロセッサーモデルを生成するプロセッサーのモデリングの段階と;
前記のプロセッサーのモデリングの段階で生成されたプロセッサーモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行した結果の値を出力するシミュレーションの段階を含む再構成可能なプロセッサーのシミュレーション方法が保存されたコンピュータで読み取られる記憶媒体。
【請求項13】
機能ユニットの間のルーティングのディレーに関する情報と、スケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路を表現する抽象化された構造モデルを生成するプロセッサーモデリング部と;
前記のプロセッサーモデリング部で生成される抽象化された構造モデルをもとに、コンパイラーから入力されるバイナリファイルを模擬実行させた、結果の値を出力するシミュレーション部;
を含む再構成可能なプロセッサーのシミュレーター。
【請求項14】
請求項13のシミュレーターにおいて、バイナリファイルは再構成可能なプロセッサーの機能ユニットが特定のアプリケーションを実行するためにどのようにマッピングされるかに関する情報を有する構成情報を含むシミュレーター。
【請求項15】
請求項13のシミュレーターにおいて、バイナリファイルは所定の期間中に固定された構造を有する機能ユニットに基づいて再構成可能なプロセッサー内のそれぞれの機能ユニットによって実行されるコマンドを含む実行ファイルを有するシミュレーター。
【請求項16】
請求項13のシミュレーターにおいては、抽象化された構造モデルはオペランドを生成する機能ユニットのオペランドを消耗する機能ユニットにマッピングするキューを含むシミュレーター。
【請求項17】
請求項16のシミュレーターにおいて、一つの機能ユニットf1は時刻t1にオペランドを生成する時のキューは機能ユニットf1の目的地ポート(destination port)をそのオペランドを消耗する機能ユニットf2の出発地のポート(source port)にマッピングするシミュレーター。
【請求項18】
請求項13のシミュレーターにおいて、プロセッサーのモデリング部はスケジューラーから受信されるスケジューリング情報をもとに抽象化された構造モデルを更新するシミュレーター。
【発明の詳細な説明】
【技術分野】
【0001】
アプリケーションを実行するプロセッサーの性能を評価したり、あるいは、そのプロセッサーで最適に実行可能なアプリケーションを構築するために使用されるプロセッサーのシミュレーション技術が開示される。
【背景技術】
【0002】
再構成可能な計算(reconfigurable computing)の概念は、アレイの形態で配列され、再構成可能なハードウェアを備えたプロセッサーを背景とする。各再構成可能なハードウェアの間のデータフロー(data flow)を有するハードウェアの動作は、特定のタスク(specific task)を実行するのに適合するように合わせられる(tailored to perform a specific task)。再構成可能なプロセッサーは、専用のハードウェア(dedicated hardware)に比肩するような処理性能を達成することができる。
【0003】
再構成可能なハードウェアは多数の処理要素(processing element)あるいは機能ユニット(functional unit)を含んでいる。この機能ユニットの大きさ、すなわち機能ユニットにいくつのALUを有するか、いくつのレジスタを有するかのような複雑度を粒度(granularity)という。粒度が大きいプロセッサーは組立の再構成可能アーキテクチャ(Coarse-Grained Reconfigurable Architecture:CGRA)、粒度が小さいプロセッサーは細粒再構成可能アーキテクチャ(Fine-Grained Reconfigurable Architecture)を持つという。各機能ユニットの間の構成では特定のタスクを実行すると構成情報(configuration information)によって動的に設定することができる。構成メモリ(configuration memory)で読み込んだ構成情報にもとついて、各機能ユニットの間のルーティング経路が、例えば、マルチプレクサによって動的に設定されることができ、この設定された構造をもとに実行ファイルが実行されることができる。実行ファイルの各コマンドはそれぞれの処理要素が実行されるコマンドコード及びオペランド情報
の一連の形態でコマンドメモリに保存されることができる。
【0004】
組立再構成可能アーキテクチャー(CGLA)は一般的にプログラムの特定の部分、例えば循環ループの実行速度を向上させるために使用される一種のアクセラレーター(accelerator)として使用されることもある。従来のASICに比べてCGLAプロセッサ
ーは等しいレベルの性能を持ちながら柔軟性(flexibility)が高いという点により次世代のデジタル信号プロセッサー(DSP)のための効率的な手段として浮上されている。
【0005】
一方、あるアプリケーションがCGRAを利用したプラットフォームを使用した時にどのくらいの性能を得ることができるかを予測し、CGRAをより効率的に使用することができる方向にソースコードを修正するためには、性能のデバッグが可能なシミュレーターのサポートが必要である。CGRAのためのシミュレーターは、シミュレーションプロセスがソフトウェア開発プロセスのボトルネックにならないように十分に速い速度を持たなければならない。また、このシミュレーターは正確な性能のデバッグのためにサイクル精度(cycle accuracy)が保障されなければならない。
【0006】
CGRAはVLIW(Very Long Instruction Word)のマシンのようにコンパイル時にすべてのスケジュールが決定されるためシミュレーターがサイクル精度を保証することは比較的に容易なことである。しかし、一つのレジスタを通じて機能ユニットの間のオペランド転送(operand passing)が行われる一般的なプロセッサーは異なり、CGRAはさらに複雑な接続ロジック(interconnection logic)を利用して機能ユニットの間のオペランドを取り交わす。このため、シミュレーターは多数の接続ロジックの動作をモデリングする負担を持っている。多数の接続ロジックの動作を監視することは、シミュレーション速度を制限する主な要因になる。
【発明の概要】
【発明が解決しようとする課題】
【0007】
CGLAプロセッサーのための シミュレーターが提供される。提案するシミュレーターはサイクル精度が保証され、出力を正確に予測することが可能でありながら、高速の動作を可能にすることを目的にする。
【課題を解決するための手段】
【0008】
一般的な態様によると、機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリング(modulo scheduling)による循環ループ(iteration loop)のステージ情報(stage information)をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路を表現するキュー(queue)を有するプロセッサーのモデルを生成するプロセッサーのモデリング部と、このプロセッサーのモデリング部で生成されたプロセッサーのモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行させ、結果の値を出力するシミュレーション部を含む再構成可能なプロセッサーのシミュレーション装置が提供される。
【0009】
プロセッサーのモデリング部が定義しているキューは該当ルーティング経路のルーティングのディレーと、ステージの開始間隔(initiation interval)の比(ratio)に相当する数のスロット(slot)を持つことができる。
【0010】
シミュレーション部は各機能のユニットで生成されたオペランドをそのキューの最初のスロットに記録して、開始間隔毎に各スロットに記録された情報を隣接するスロットの間で遷移(shift)させることができる。
【0011】
コンパイラーから入力されたバイナリファイルは構成ファイル(configuration file)と実行ファイル(execution file)を含むことができる。
【0012】
シミュレーション装置は各ルーティングキューの動作のホスト向バイナリコードを保存するためのモデリングコードDBを含むことができ、シミュレーション部のモデリングのコードDBから抽出したホスト向バイナリコードから各ルーティングキューの接続を再構成してシミュレーションを行うことができる。
【0013】
もう一つの態様によると、機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報(stage information)をもとに、オペランドを生成する機能ユニットとを消耗する機能ユニットの間のルーティング経路を表現するキューを有するプロセッサーのモデルを生成するプロセッサーのモデリングの段階と、プロセッサーのモデリングの段階で生成されたプロセッサーのモデルをもとにコンパイラーから入力されるバイナリファイルをシミュレーションを実行させ結果の値を出力するシミュレーションの段階を有する再構成可能なプロセッサーのシミュレーション方法が提供される。
【0014】
プロセッサーのモデリングの段階が定義するキューはルーティング経路のルーティングのディレーとステージの開始間隔の比(ratio)に相当する数のスロットを持つことができる。
【0015】
シミュレーションの段階で各機能のユニットで生成されたオペランドをそのキューの最初のスロットに記録して開始間隔毎に各スロットに記録された情報を隣接するスロット間での遷移させることができる。
【0016】
ステージ上の情報は一循環(iteration)のステージ分割の情報と、各ステージ毎に割り当てられている機能ユニットと、オペランドを生成する機能ユニットと、その生成されたオペランドを消耗する機能ユニットの間の関係に関する特定の情報を含むことができる。
【0017】
コンパイラーから入力されたバイナリファイルは構成ファイルと実行ファイルをすることができる。
【0018】
バイナリファイルのシミュレーションの段階はバイナリファイルを読み込み各ルーティングキューの動作のホスト向バイナリコードを保存するためのモデリングコードDBから抽出された対応するホスト向バイナリコードを実行してシミュレーションを行うことができる。
【0019】
もう一つの態様によると、機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットと消耗する機能ユニットの間のルーティング経路を表現するキューを含むようにプロセッサーをモデリングするプロセッサーのモデリングの段階と、プロセッサーのモデリングの段階で生成されたプロセッサーのモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行させ結果の値を出力するシミュレーションのステップを有する再構成可能なプロセッサーのシミュレーション方法が保存されたコンピュータで読み取り可能な記憶媒体が提供される。
【0020】
もう一つの態様によると、機能ユニットの間のルーティングのディレーに関する情報と、スケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路を表現する抽象化された構造(architecture)モデルを生成するプロセッサーのモデリング部と、プロセッサーのモデリング部で生成される抽象化された構造モデルをもとに、コンパイラーから入力されるバイナリファイルを模擬実行させ、結果の値を出力するシミュレーション部を含む再構成可能なプロセッサーのシミュレーターが提供される。
【0021】
バイナリファイルは、再構成可能なプロセッサーの機能ユニットが特定のアプリケーションを実行するためにどのようにマッピングされるかに関する情報を有する構成情報(configuration information)を含むことができる。
【0022】
バイナリファイルは所定の期間中に固定された構造を有する機能ユニットに基づいて再構成可能なプロセッサー内のそれぞれの機能ユニットによって実行されるコマンドを含む実行ファイルを含むことができる。
【0023】
抽象化された構造モデルはオペランドを生成する機能ユニットをオペランドを消耗する機能ユニットにマッピングするキューを含むことができる。
【0024】
一機能ユニットf1は時刻t1からのオペランドを生成する時にキューは機能ユニットf1の目的地ポート(destination port)をそのオペランドを消耗する機能ユニットf2の出発地のポート(source port)にマッピングすることができる。
【0025】
プロセッサーのモデリング部はスケジューラーから受信されるスケジューリング情報に基づいて抽象化された構造モデルを更新することができる。
【0026】
付加的な機能及び態様は後述する説明や図及び請求項から明らかになるはずである。
【発明の効果】
【0027】
提案されたシミュレーターは再構成可能なプロセッサーを対象に、単純化されたモデリングを通じてシミュレーションを高速に実行することが可能である。また、ホスト向バイナリコードをマッピングさせてシミュレーションをさらに高速で実行することができる。
【図面の簡単な説明】
【0028】
【
図1】再構成可能なプロセッサーのプログラムの実行をシミュレーションするために使用することができる例示的なプログラムの開発システムの一実施形態を示すブロック図である。
【
図2】一実施形態による再構成可能プロセッサーの日の実施例を図示したブロック図である。
【
図3】別の実施形態によるシミュレーター100の構成の別の実施形態を図示したブロック図である。
【
図4】既存の構造モデル(architecture model)の一実施形態を図示した図である。
【
図5】プロセッサーに適用されうるモデリング方法の一実施形態を図示した図である。
【
図6】CGRAプロセッサーのモジューロスケジューリングの一実施形態を図示した図である。
【
図7】
図6のCGRAプロセッサーが4つのステージで構成される循環ループを実行する時各機能ユニットの処理の流れの一実施形態を説明する図である。
【
図8】一態様によってモジュールにスケーリングをされた結果に適用することができる一実施形態によるプロセッサーモデル113を図示した図である。
【発明を実施するための形態】
【0029】
図面と詳細な説明で、特に違う方法で明示しない限り、同一な図面の符号は同一な構成要素と機能及び構造を指示することで理解される。構成要素間の相対的な大きさや描写は明確性や例又は便宜のために誇張されることもできる。
【0030】
以下の説明は記述された方法たち及びデバイスたち及び/又はシステムの完全な理解を助けるために提供される。したがって、ここで記述された方法、デバイス、及び/又はシステムの様々な変更や補完及び同等物などが当業者に提示されることができる。また、よく知られている機能や構成の説明が明確性や簡潔性のため省略することができる。
【0031】
図1は、再構成可能なプロセッサーをシミュレーションする時にされうるプログラムの開発システムの一形態を図示する。
図1を参照すると、プログラム開発システムはコンパイラー/スケジューラー300とシミュレーター100を含んでいる。コンパイラー/スケジューラー300はメモリ510からの再構成可能なプロセッサーの構造情報と実行するプログラムソースを読み込む。コンパイラー/スケジューラー300はこれらをコンパイルしてスケジューリング(scheduling)し、その結果として実行ファイル930とプロセッサーの構成情報910をメモリに出力して保存する。シミュレーター100はこのコンパイラー/スケジューラー300からスケジューリング情報を入力されまたメモリから構成情報910及び実行ファイル930を読み込み実行ファイル930の動作をシミュレーションする。
【0032】
例えば、プログラム開発システムは携帯機器や家電機器に組み込むことができる。又はプログラム開発システムは携帯端末機器や組込システムや同様の機器に組み込むことができる。シミュレーター100は単一のコアプロセッサーやマルチコアプロセッサーによって実行されるプロセッシングをシミュレーションするために使用することができる。
【0033】
図1の例において、コンパイラー/スケジューラー300からシミュレーター100に入力されるバイナリファイル900は構成情報や設定ファイルと実行ファイルを含んでいる。
【0034】
このようなシミュレーションを通じてどのアプリケーションが特定の構造の再構成可能なプロセッサー上で実行される時にどれだけの性能を得ることができるかを予測することができ、また、デバッグを使ってより効率的な実行を可能するようにプログラムソース530を変更することができる。一実施形態において、構造情報510は例えば、再構成可能なプロセッサーの機能ユニットの構造、これらの間の経路接続情報などのデータ構造及び制御の流れ(control flow)の構造に関する情報を含んでいる。これに対して構成情報910はこのように特定の構造を持つ再構成可能なプロセッサーの機能ユニットの間の経路の接続が実際に特定のアプリケーションを実行するためにどのように接続できるのかに関する情報である。実行ファイル930は構成情報910によって一定期間固定された構造を持つ再構成可能なプロセッサーで各機能ユニットが実行すべきコマンドを含んでいる。構成情報とコマンドのコードは多くの場合、統合されて扱われることもある。すなわち、1クロックで処理されるべき構成情報と命令コードがメモリに隣接して、保存され、プロセッサーによって同時にフェッチ(fetch)される。
【0035】
例示的なプログラムの開発システムでシミュレーターでは、コンパイラー/スケジューラーからのスケジューリングに関する情報の入力を受け取ることができる。しかし、もう一つの例において、これらのスケジューリング情報はメモリ900に保存されシミュレーター100がメモリから読み込むこともできる。
【0036】
一態様によると、シミュレーター100は抽象化された構造モデルを利用する。このモデルは機能ユニットの間のオペランドのルーティング経路を内部結線ロジック(interconnection logic)のシーケンスを使用して表現するのではなく、オペランドを生成する機能ユニットと、オペランドを消耗する機能ユニットの間のキューとしてモデリングする。これによって、シミュレーションサイクル毎にその動作を確認しなければならない内部結線を構成要素の数が大幅に減少するので、シミュレーション速度を向上させることができる。
【0037】
図2は、シミュレーターが付いて再構成可能なプロセッサーの一例を図示する。
図2に図示されたように、一実施形態による再構成可能プロセッサーのシミュレーション装置はプロセッサーモデリング部110とシミュレーション部130を含んでいる。プロセッサーモデリング部110は機能ユニットの間のルーティングのディレーに関する情報と、スケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットとそのオペランドを消耗する機能ユニットの間のルーティング経路をキューとして表現してプロセッサーをモデリングする。シミュレーション部130はこのプロセッサーモデリング部110から生成されたプロセッサーモデル113をもとに、コンパイラーから入力されるバイナリファイルを模擬実行し、結果の値を出力する。
【0038】
図示された実施形態において、プロセッサーモデリング部110、シミュレーション部130はプログラムとして具現されるが、これに限定されるわけではない。図示された実施形態において、プロセッサーモデル113及び構造情報510はメモリに保存されるデータ又はデータ構造だが、これらに限定されるわけではない。
【0039】
CGRAプロセッサーは機能ユニットの間の内部結線ロジックが珍しいsparse)という特徴を持っている。その結果、機能ユニットの間で一つのサイクルの中でオペランドをルーティングするようにする経路(path)が存在しない可能性もある。したがって、CGRAプロセッサーは一般的に一つのオペランドをルーティングするために2つ以上の内部結線の構成要素(component)が使用されている。例えば、一つの機能ユニットが生成した値はレジスタファイル又はマルチプレクサ、あるいは他の機能ユニットを順次的に経てその値を消耗する機能ユニットに伝達される。CGRAプロセッサーのスケジューラーはコンパイル時間(compile time)にどのような演算(operation)をどのような機能ユニットの割り当て(place)させるかを決定する。また、CGRAプロセッサーのスケジューラーは演算の間のオペランドをどのような内部結線の構成要素の接続(chain)を利用してルーティング(routing)してあげるかどうかを決定する。
【0040】
記述されているように、プロセッサーモデル113は機能ユニットの間のキューとしてモデリングする。たとえば、プロセッサーモデル113は機能ユニットの間のオペランドのルーティング経路を内部結線ロジックのシーケンス(sequence)を使用して表現するのではなく、オペランド(operand)を生成する機能ユニットとオペランドを消耗する機能ユニットの間のキューとしてモデリングする。たとえば、任意のオペランドがt1という時点で機能ユニットf1から生成され、t2という時点での機能ユニットf2で消耗されるとすると、このキューはt1時点でのf1の目的地ポート(destination port)とt2の時点でのf2出発地ポート(source port)をつなぐキューにモデリングされる。
【0041】
図4は、既存の構造モデル(architecture model)の一例を例示する。点線で表示される領域は意味があるオペランドが存在しない区間で、黒色に塗られた部分は機能ユニットf1が生成されたオペランドの流れを、実線で表示された領域は機能ユニットf2が生成されたオペランドの流れを図示する。たとえば、機能ユニットf1乃至f4は、ALU(arithmetic and Logical Unit)を示し、機能ユニットu1はローカルレジスタファイル(local register file)を示す。
【0042】
時刻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の右側の入力バッファにラッチされる。
【0043】
すなわち、機能ユニット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つのクロックが必要となる。
【0044】
図5は、一つのプロセッサーに適用されるためのモデリング方法の一つの例を図示する。
図5を参照すると、機能ユニットf1乃至f4では入力バッファは省略された。また、ローカルレジスタファイルはディレーの程度に相当するスロットが付いているキューにモデリングされた。オペランドのルーティングキューは意味があるオペランドの伝達を目的として存在するので、シミュレーターはそのオペランドのルーティングのために使用される内部結線の構成要素として、意味があるオペランドに対応するキューだけを考慮する。これは毎サイクル毎に考慮しなけばならない内部結線の構成要素の数を減らしてシミュレーション時間を向上させる。
【0045】
図5に図示されたように、シミュレーターは4つの機能ユニットを含む再構成可能なプロセッサーアレイの処理をシミュレーションする。しかしこれは例示的な目的に過ぎない。再構成可能なプロセッサーアレイはたとえば、2個、4個、8個、12個、16個、24個又はその以上の多数の機能ユニットを含むことができる。
【0046】
このように、データフローグラフ(dataflow graph)を反映して構造モデルを生成するために実際にデータフローグラフの構造にどのようにマッピングされたかを示す情報を使用することができる。一態様によると、このような情報はスケジューラーから供給することができる。スケジューラーはデータフロー上に存在するコンポーネントのソース演算(source operation)と、結果値の演算(destination operation)のスケジューリング情報を生成し、これをシミュレーターに提供することができる。
【0047】
CGRAプロセッサーのスケジューリング方式にはリストスケジューリング(list scheduling)方式とモジューロスケジューリング方式が可能である。一態様によって一般的なリストスケジューリング方式を利用する場合ルーティングのキュー(routing queue)は一つのバッファとして具現することができる。すなわち、オペランドを生成するコンポーネントの値を生成する時点でバッファに生成された値を消耗し、オペランドを消耗するコンポーネントが消耗する時点でバッファから値を読み取るようにすることにより、ルーティングのキューを具現することができる。
【0048】
モジューロスケジューリングはソフトウェアパイプライン処理に該当する。モジューロスケジューリングはループの異なる循環をインターリビング(interleaving)のコマンドスケジューリングの一形態である。ソフトウェアのパイプライン処理はループの異なるサイクルの実行を重畳することで性能が向上する。一循環は以前の循環の完了前に始めることができる。循環が開始されている区間は起動間隔(initiation interval)と呼ばれる。ソフトウェアパイプライン処理の最適化の一つの目的は循環を重ね合わせて最短の起動間隔を使用することだ。
【0049】
モジューロスケジューリングのフレームワーク(framework)では、ループレベル並列処理(loop level parallelism)を利用するためにソフトウェアパイプライニング(software pipelining)の手法を用いて、複数のループの循環(loop iteration)を重ねて実行するオーバーラップドスケジュール(overlapped schedule)を生成することができる。生成されたスケジュールでの一循環は複数のステージに区分され、各ステージはすべて起動間隔ほどの実行サイクルを備える。そして、起動間隔のサイクルの中にはお互いに異なるループの循環からそれぞれ別のステージに該当する演算が重ね合わせて(overlap)、スケジュールされることになる。結果的に、モジューロスケジューリングのフレームワークは起動間隔毎に異なる循環経路に有する同じ演算を繰り返して実行するようにするスケジュールを生成する。ループの循環が重なるためオペランドのルーティング経路で消耗されるサイクルの数が起動時間を超過した場合はキューに有する値が上書き(overwriting)され、その値を消耗するコンポーネントが到達する前に消えてしまうことがある。
【0050】
図6は、CGRAプロセッサーのモジューロスケジューリングの一例を図示する。
図7は
図6のCGRAプロセッサーが4つのステージで構成されている循環ループを実行する時各機能ユニットの処理の流れを図示する。
図6に4つの機能ユニットはそれぞれの一循環を構成する一つのステージの実行を担当し、それぞれの前のステージで入力されたデータを処理して次のステージに出力する、すなわちソフトウェアのパイプライン方式の処理を実行する。
【0051】
図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からの最初の循環ループの三番目のステージの処理結果を入力受けて最初の循環ループの四番目の一ステージを処理する。
【0052】
図7に図示された実施形態において、各クロックサイクルは一個の起動間隔に相当する。最初のクロックサイクルは最初の起動間隔に相当し、二つ目のクロックサイクルは二番目のブーツの間隔に相当し、三つ目のクロックサイクルは三番目のブーツの間隔に相当し、四回のクロックサイクルは四番目の起動間隔に相当する。
【0053】
このようなモジューロスケジューリングのフレームワークで生成された結果を一態様によるプロセッサーモデルを利用いてシミュレーションする場合、ルーティングのキューを一つのバッファとして具現するとオペランドのルーティング経路(operand routing path)で消耗されるサイクルが起動間隔を超えている場合についてオペランドを消耗するコンポーネントがシミュレーションされる前にキューに入っている値は上書きされている場合が発生することになる。オペランドを生成する構成要素は始動間隔毎に新しい値をルーティングキューに記録するためである。
【0054】
記述されているように、プロセッサーモデリング部110が定義するキュー(
図2参照)は該当ルーティング経路のルーティングのディレーとステージの起動間隔の比に相当する数のスロットを持つ。さらにシミュレーション部130は各機能ユニットから生成されたオペランドを該当キューの最初のスロットに記録して、起動間隔毎に各スロットに記録された情報を隣接するスロット間での遷移させる。具体的にはモジューロスケジューリングのフレームワークでシミュレーションをする場合ルーティングのキューは天井(ceiling)値、すなわちルーティングディレー値/起動間隔(routing delay/ initiation interval)ほどのスロットとして具現される。このルーティングキューはひとつひとつ起動間隔毎に以前のスロットの値を次のスロットに遷移させ、オペランドを消耗するコンポーネントはルーティングのキューの最後のスロットにある値を読んで来る。
【0055】
図8は一態様によって、モジューロスケジューリングされた結果に適用することができる一実施形態によるプロセッサーモデル113を図示する。この例において始動間隔は2サイクルになるようにスケジュールされたと仮定する。2つのオペランドの両方がルーティングディレー値(routing delay)が起動間隔よりも大きいので、それぞれのルーティングのキューは2つのスロットに分けられるようになる。前述したように機能ユニットは始動間隔毎に新しい値を生成するため、シミュレーション部130は始動間隔が経過した後、以前に生成された値をルーティングキューの次のスロットに移してくれる。このように各オペランド別のルーティングのキューを管理することによって、シミュレーション部130はモジューロスケジューリングされた結果につきましても正確な動作を再現することができる。
【0056】
図3は、シミュレーター100を持っていて再構成可能プロセッサーのもう一つの実施形態を図示する。
図3を参照するとシミュレーション装置100は各ルーティングキューの動作に関するホスト向バイナリコードを保存するモデリングコードDB(131)をさらに含むことができる。シミュレーション部130は、バイナリファイルを読み込み、このモデリングのコードDB(131)から抽出されて対応するホスト向バイナリコードを実行して、シミュレーションを行う。また、シミュレーション装置はモデリングコードDB(131)から抽出したホスト向バイナリコードから各ルーティングキューの接続を再構成して、シミュレーションを行うことができる。図示された実施形態においてスケジューラー330及びプロセッサーモデリング部110、構造情報510、及びプロセッサーモデル113は
図2に図示された実施形態のそれと類似している。
【0057】
バイナリの翻訳(Binary translation)技術を使用してシミュレーター上でターゲット(target)になる機械(machine)のコマンドバイナリコード(instruction binary)をそれと同等の動作をするホストマシン(host machine)のバイナリコード(binary)で置換した後、同じコードブロック(code block)をシミュレーションする時は、前に置換したホストマシンのバイナリコードを実行させることにより、シミュレーション速度を速くすることができる。
【0058】
プログラムカウンタ(program counter)が指しているアドレスに対応する値をコマンドメモリ(instruction memory)で読んで来て実行する一般的なプロセッサーと同様に、CGRAプロセッサーは毎サイクルごとに構成のメモリ(configuration memory)の特定の番地から構成データを読み込んで、各構成要素ごとに、そのサイクルで構成データを指示している動作を実行することができる。一態様によると、構成のメモリのそれぞれのアドレスごとに、構成データのホストのバイナリコードが生成される。以後同じ構成のメモリのアドレスに存在する構成データのシミュレーションを行う際には、以前に生成しておいたホストのバイナリコードを使用してシミュレーションを行うことができる。
【0059】
図3に図示された実施形態にあって、一態様によるプロセッサーの構造モデル113にバイナリ変換が適用される。たとえば、実際のプロセッサーアーキテクチャに存在する内部結線ロジックの動作(behavior)に対するホストのバイナリコードを生成することの代りに、ルーティングのキューの動作をモデリングするバイナリコードが保存される。データフローグラフ(data flow graph)上の動作(operation)がマッピング(mapping)されている構成要素が、その生成/消耗された値を別の内部結線の構成要素を通じて送受信されるものと記述する代りにルーティングのキューを利用することで記述を与える。一方、ルーティングのキューの動作につきましては、始動間隔が経つごとにキューに存在する値を次のスロットに渡す部分だけをモデリングしてくれればいいのでバイナリの翻訳を難しくないように適用することができる。
【0060】
図3に図示された実施形態において、モデリングコードDB(131)は構成のメモリに対応して各アドレスごとに構成データへのホストのバイナリコードが保存される。この構成データはデータフローグラフ上で各構成要素の間のルーティングのキューの動作を記述するデータである。シミュルレイション部130はモデリングコードDB(131)からの読み込んだこのホストのバイナリコードによってプロセッサーモデル113を再構成し、バイナリファイル900上で実行ファイルを読み込んで再構成されたプロセッサーモデル113をもとにシミュレーションを行う。
【0061】
抽象化された構造モデルは実際の構造及びデータフローグラフをモデリングしたことから導出した構造のグラフで見ることができる。抽象化された構造モデルにあってデータフローグラフの上に存在するそれぞれのエッジはキューにモデリングすることができる。たとえば、抽象化された構造モデルは実際のモデルでデータフローグラフのエッジがマッピングされる構成要素をキューに抽象化し、また、データフローグラフのノードがマッピングされる機能ユニット、定数のユニットのような構成要素はそのまま維持するために使用されることができる。これにより、アプリケーションの動作に影響を与えないか影響がほとんどない内部結線の構成要素は削除されることができ、データフローのエッジに対応するオペランドをルーティングするために使用される一連の内部結線を構成要素が単純化することができる。
【0062】
前述した実施形態から明らかなように、一態様による再構成可能なプロセッサーのシミュレーション方法はルーティング経路をキューで表現してプロセッサーをモデリングする段階を含んでいる。これらのモデリングの段階は機能ユニットの間のルーティングのディレーに関する情報とスケジューラーから受信したモジューロスケジューリングによる循環ループのステージ情報をもとに、オペランドを生成する機能ユニットと消耗する機能ユニットの間のルーティング経路をキューで表現してプロセッサーをモデリングする。
【0063】
シミュレーションの段階ではモデリングの段階で生成されたプロセッサーモデルをもとにコンパイラーから入力されるバイナリファイルを模擬実行させ、結果の値を出力することができる。
【0064】
プロセッサーのモデリングの段階が定義するキューは解党ルーティング経路のルーティングのディレーとステージの起動間隔の比に相当する数のスロットを持つ。また、各シミュレーション段階で各機能のユニットで生成されたオペランドをそのキューの最初のスロットに記録して、起動間隔毎に各スロットに記録された情報を隣接するスロット間での遷移させる。ステージ情報は一循環のステージ分割の情報と各ステージごとに割り当てられている機能ユニットとオペランドを生成する機能ユニットとその生成されたオペランドを消耗する機能ユニットの間の関係に関する特定の情報を含んでいる。
【0065】
また、コンパイラーから入力されるバイナリファイルは構成ファイルと実行ファイルを含むことができる。もう一つの実施例においてシミュレーションの段階はバイナリファイルを読み込み各ルーティングキューの動作に対するホスト向バイナリコードを保存するためのモデリングコードDBから抽出された対応するホスト向バイナリコードを実行してシミュレーションを行うことができる。
【0066】
前述のプロセスと、機能、方法及び/又はソフトウェアは一つあるいはそれ以上のコンピュータが読み取り可能な記憶媒体に記録することができる。この記憶媒体はコンピュータによってプロセッサーが実行するか又は実行するように具現されたプログラムコマンドを含んでいる。また、この媒体はプログラムのコマンドと組み合わせて又は単独で、データファイル、データ構造又はごれと同様のことを含むことができる。コンピュータが読み取られる記憶媒体の例はハードディスク、フロッピー(登録商標)ディスクや磁気テープなどの磁気媒体と、CD ROMディスクやDVDなどの光学媒体、光ディスクなどの磁気-光学媒体、そして、ROM、RAM、フラッシュメモリなどのプログラムコマンドを保存して実行するように特別に構成されたハードウェア機器などを含むことができる。プログラムコマンドの例はコンパイラーによって生成された機械コードやインタープリタを使用してコンピュータが実行することができる高水準言語を含むファイルがなどがある。説明されたハードウェア機器は前述した方法又は私の動作を実行するために、一つあるいはそれ以上のソフトウェアモジュールで動作するように構成することができその逆も可能である。さらにコンピュータが読み取られる記憶媒体はネットワークを通じて接続されたコンピュータシステムの間で配布されることができ、コンピュータが読み取られるコードやプログラムのコマンドは非集中された(decentralized)方式で保存され、実行されることができる。
【0067】
限定的な例ではないが、前述した端末装置は携帯電話、PDA、デジタルカメラ、携帯ゲーム機、MP3プレーヤー、携帯用/個人用マルチメディアプレーヤー、携帯電子ブック、個人用ラップトップコンピュータ、GPSナビゲーション、そしてデスクトップPCなどの機器たち、HDTV、光ディスクプレーヤ、セットトップボックスのように、前述した通信方式と両立する無線又は有線の通信が可能な機器を目指している。
【0068】
コンピューティングシステム又はコンピュータはバスによってユーザーのインターフェイス及びメモリコントローラと電気的に接続されたマイクロプロセッサーを含むことができる。また、フラッシュメモリ機器を含むことができる。フラッシュメモリ機器はメモリコントローラを通じてN-ビットのデータを保存することができる。N-ビットのデータはマイクロプロセッサーによって処理され、Nは1又はその以上の整数になることができる。コンピューティングシステム又はコンピュータが移動機器である場合には、バッテリが付加的に提供され、コンピューティングシステム又はコンピュータの動作電圧を供給することができる。
【0069】
当業者ならコンピューティングシステム又はコンピュータは応用のチップセット、カメラのイメージプロセッサーcamera image processor:CIS)、DRAMのようなものがより多く含まれることが明らかである。メモリコントローラとフラッシュメモリ機器はデータを保存する不揮発性メモリを使用するSSDsolid state drive/disk)を構成することができる。多くの実施形態が記述されているが、さまざまな明らかな変更が可能である。たとえば、説明している手法が異なる順序で実行されるか、及び/又は、前述したシステム、構造、機器、回路の構成要素が相違する方式で結合されるか、及び/又は、その他の構成要素やその同等物で置換又は補足されることによって適切な結果を達成することもできる。これらの具現例は後述する請求項の範疇に含まれるように意図された。
【先行技術文献】
【特許文献】
【0070】
【特許文献1】米国特許出願公開第2003/0149962号明細書