JP5797438B2 - シミュレーション装置、シミュレーション方法、シミュレーター及び記憶媒体 - Google Patents

シミュレーション装置、シミュレーション方法、シミュレーター及び記憶媒体 Download PDF

Info

Publication number
JP5797438B2
JP5797438B2 JP2011076608A JP2011076608A JP5797438B2 JP 5797438 B2 JP5797438 B2 JP 5797438B2 JP 2011076608 A JP2011076608 A JP 2011076608A JP 2011076608 A JP2011076608 A JP 2011076608A JP 5797438 B2 JP5797438 B2 JP 5797438B2
Authority
JP
Japan
Prior art keywords
processor
simulation
stage
functional unit
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011076608A
Other languages
English (en)
Other versions
JP2011216092A (ja
Inventor
泰 ▲うく▼ 呉
泰 ▲うく▼ 呉
秀 晶 柳
秀 晶 柳
潤 進 金
潤 進 金
雄 徐
雄 徐
暎 ▲ちょる▼ ▲ちょう▼
暎 ▲ちょる▼ ▲ちょう▼
日 鉉 朴
日 鉉 朴
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2011216092A publication Critical patent/JP2011216092A/ja
Application granted granted Critical
Publication of JP5797438B2 publication Critical patent/JP5797438B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/347Physical level, e.g. placement or routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

アプリケーションを実行するプロセッサーの性能を評価したり、あるいは、そのプロセッサーで最適に実行可能なアプリケーションを構築するために使用されるプロセッサーのシミュレーション技術が開示される。
再構成可能な計算(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つの機能ユニットを含む再構成可能なプロセッサーアレイの処理をシミュレーションする。しかしこれは例示的な目的に過ぎない。再構成可能なプロセッサーアレイはたとえば、2個、4個、8個、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)を構成することができる。多くの実施形態が記述されているが、さまざまな明らかな変更が可能である。たとえば、説明している手法が異なる順序で実行されるか、及び/又は、前述したシステム、構造、機器、回路の構成要素が相違する方式で結合されるか、及び/又は、その他の構成要素やその同等物で置換又は補足されることによって適切な結果を達成することもできる。これらの具現例は後述する請求項の範疇に含まれるように意図された。
米国特許出願公開第2003/0149962号明細書

Claims (18)

  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のシミュレーターにおいて、プロセッサーのモデリング部はスケジューラーから受信されるスケジューリング情報をもとに抽象化された構造モデルを更新するシミュレーター。
JP2011076608A 2010-03-31 2011-03-30 シミュレーション装置、シミュレーション方法、シミュレーター及び記憶媒体 Active JP5797438B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020100029379A KR101647817B1 (ko) 2010-03-31 2010-03-31 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법
KR10-2010-0029379 2010-03-31

Publications (2)

Publication Number Publication Date
JP2011216092A JP2011216092A (ja) 2011-10-27
JP5797438B2 true JP5797438B2 (ja) 2015-10-21

Family

ID=44121730

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011076608A Active JP5797438B2 (ja) 2010-03-31 2011-03-30 シミュレーション装置、シミュレーション方法、シミュレーター及び記憶媒体

Country Status (5)

Country Link
US (1) US8725486B2 (ja)
EP (1) EP2372587B1 (ja)
JP (1) JP5797438B2 (ja)
KR (1) KR101647817B1 (ja)
CN (1) CN102207904B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983947B2 (en) * 2011-11-21 2021-04-20 Robert Keith Mykland Method and dynamically reconfigurable processor adapted for management of persistence of information across multiple instruction cycles
KR101926464B1 (ko) * 2012-10-11 2018-12-07 삼성전자 주식회사 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법
KR101962250B1 (ko) * 2013-03-05 2019-03-26 삼성전자주식회사 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법
KR20140126190A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법
KR102204282B1 (ko) * 2013-11-25 2021-01-18 삼성전자주식회사 다수의 기능 유닛을 가지는 프로세서를 위한 루프 스케쥴링 방법
US11010505B2 (en) 2015-12-01 2021-05-18 International Business Machines Corporation Simulation of virtual processors
US10996970B2 (en) * 2017-12-14 2021-05-04 Samsung Electronics Co., Ltd. Method for data center storage evaluation framework simulation
CN109471636B (zh) * 2018-09-14 2020-07-14 上海交通大学 粗粒度可重构体系结构的算子映射方法及系统
US11237971B1 (en) * 2020-09-16 2022-02-01 SambaNova Systems, Inc. Compile time logic for detecting streaming compatible and broadcast compatible data access patterns

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5841967A (en) 1996-10-17 1998-11-24 Quickturn Design Systems, Inc. Method and apparatus for design verification using emulation and simulation
US6766284B2 (en) 1998-04-10 2004-07-20 Peter Finch Method and apparatus for generating co-simulation and production executables from a single source
US6421808B1 (en) * 1998-04-24 2002-07-16 Cadance Design Systems, Inc. Hardware design language for the design of integrated circuits
US20010025363A1 (en) * 2000-03-24 2001-09-27 Cary Ussery Designer configurable multi-processor system
WO2001095161A2 (en) * 2000-06-02 2001-12-13 Virtio Corporation Method and system for virtual prototyping
US7054802B2 (en) 2000-10-20 2006-05-30 Quickturn Design Systems, Inc. Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading
US20020133325A1 (en) 2001-02-09 2002-09-19 Hoare Raymond R. Discrete event simulator
US20030149962A1 (en) 2001-11-21 2003-08-07 Willis John Christopher Simulation of designs using programmable processors and electronically re-configurable logic arrays
US7366651B1 (en) 2003-03-14 2008-04-29 Xilinx, Inc. Co-simulation interface
US7234125B1 (en) * 2003-06-23 2007-06-19 Altera Corporation Timing analysis for programmable logic
EP1530137A1 (en) 2003-11-10 2005-05-11 Robert Bosch Gmbh Simulation system and computer-implemented method for simulation and verifying a control system
US7698118B2 (en) * 2004-04-15 2010-04-13 Mentor Graphics Corporation Logic design modeling and interconnection
US20060277020A1 (en) 2005-06-02 2006-12-07 Tharas Systems A reconfigurable system for verification of electronic circuits using high-speed serial links to connect asymmetrical evaluation and canvassing instruction processors
US7380232B1 (en) * 2006-03-10 2008-05-27 Xilinx, Inc. Method and apparatus for designing a system for implementation in a programmable logic device
GB0605349D0 (en) * 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array
KR100813662B1 (ko) 2006-11-17 2008-03-14 삼성전자주식회사 프로세서 구조 및 응용의 최적화를 위한 프로파일러
US8265917B1 (en) * 2008-02-25 2012-09-11 Xilinx, Inc. Co-simulation synchronization interface for IC modeling
US7979759B2 (en) * 2009-01-08 2011-07-12 International Business Machines Corporation Test and bring-up of an enhanced cascade interconnect memory system
KR101635397B1 (ko) * 2010-03-03 2016-07-04 삼성전자주식회사 재구성 가능한 프로세서 코어를 사용하는 멀티코어 시스템의 시뮬레이터 및 시뮬레이션 방법

Also Published As

Publication number Publication date
US20110246170A1 (en) 2011-10-06
KR20110109590A (ko) 2011-10-06
JP2011216092A (ja) 2011-10-27
CN102207904B (zh) 2019-03-29
CN102207904A (zh) 2011-10-05
KR101647817B1 (ko) 2016-08-24
US8725486B2 (en) 2014-05-13
EP2372587B1 (en) 2016-12-28
EP2372587A1 (en) 2011-10-05

Similar Documents

Publication Publication Date Title
JP5797438B2 (ja) シミュレーション装置、シミュレーション方法、シミュレーター及び記憶媒体
TWI806550B (zh) 處理器操作方法、相關電腦系統、及非暫時性電腦可存取儲存媒體
US20100100704A1 (en) Integrated circuit incorporating an array of interconnected processors executing a cycle-based program
US9619298B2 (en) Scheduling computing tasks for multi-processor systems based on resource requirements
JP2014016894A (ja) 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
JP5985900B2 (ja) 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム
US9471327B2 (en) Verifying forwarding paths in pipelines
US20130339689A1 (en) Later stage read port reduction
KR20150040662A (ko) 모듈로 스케줄링 방법, 모듈로 스케줄링 장치, 모듈로 스케줄링에 따라서 동작하는 재구성 가능한 프로세서 및 재구성 가능한 프로세서의 동작 방법
Ruschke et al. Scheduler for inhomogeneous and irregular CGRAs with support for complex control flow
Yang et al. An approach to build cycle accurate full system VLIW simulation platform
WO2023183137A1 (en) Configure a coarse grained reconfigurable array to execute instructions of a program of data flows
KR102161055B1 (ko) 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치
JP2004334429A (ja) 論理回路及びその論理回路上で実行するプログラム
JP2013161484A (ja) 再構成可能コンピューティング装置、その第1メモリ制御器及び第2メモリ制御器、並びにそのデバッギング用のトレースデータを処理する方法
JP5229716B2 (ja) 動作合成システム、動作合成方法および動作合成用プログラム
Cohen et al. Android Application Development for the Intel Platform
US12039335B2 (en) Schedule instructions of a program of data flows for execution in tiles of a coarse grained reconfigurable array
US9141498B2 (en) Method for verification of reconfigurable processor
US20240362024A1 (en) Schedule Instructions of a Program of Data Flows for Execution in Tiles of a Coarse Grained Reconfigurable Array
Rutzig et al. Dynamically adapted low power ASIPs
Jääskeläinen et al. D4. 6–Integrated System Software Stack
Wu et al. Reconfigurable Custom Functional Unit Generation and Exploitation for Multiple-Issue Processors.
US8751210B1 (en) Suspending procedures in simulation of a circuit design
Kraemer Design and analysis of efficient MPSoC simulation techniques

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140307

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150707

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150804

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150819

R150 Certificate of patent or registration of utility model

Ref document number: 5797438

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250