(57)【要約】【課題】データ駆動プロセッサのエミュレーションシステムであって、オーバヘッドを増大させることなく並列処理を可能とするエミュレーション手法を採用することでエミュレーション時間の短縮を図ったものを提供する。【解決手段】本システムは、仮想データ駆動プロセッサを、実データ駆動プロセッサを用いてエミュレーションする。その際、データパスとタイミングパスとに分離してエミュレーションを行う。データパスエミュレーションでは、仮想プロセッサ上の仮想パケットをＰＡＣＫＥＴメッセージとして表現し、機能ブロックごとに仮想パケット処理動作を評価する。タイミングパスエミュレーションでは、自己同期式転送制御機構及びゲートロジックによって制御されるＳＥＮＤ信号及びＡＣＫ信号をＳＥＮＤメッセージ及びＡＣＫメッセージとしてそれぞれ表現し、ステージ間のＳＥＮＤ信号及びＡＣＫ信号の転送動作を評価する。【選択図】　　　図１２
2004013602.tif 000002
【特許請求の範囲】
【請求項１】
各ステージが、パケットを保持するデータラッチと、該データラッチに保持されたパケットを処理する論理回路と、該データラッチに同期信号を供給する自己同期式転送制御機構と、必要に応じて設けられ該論理回路の処理結果に従い当該ステージの自己同期式転送制御機構と下流ステージの自己同期式転送制御機構との間のＳＥＮＤ信号及びＡＣＫ信号を制御するゲートロジックと、を有するパイプラインとして構成される仮想データ駆動プロセッサを、実データ駆動プロセッサを用いてエミュレーションするシステムであって、該実データ駆動プロセッサが、
仮想データ駆動プロセッサ上の仮想パケットを実データ駆動プロセッサ上のパケットであるＰＡＣＫＥＴメッセージとして表現し、仮想データ駆動プロセッサ内の機能ブロックごとに仮想パケット処理動作を評価するデータパスエミュレーション手段と、
自己同期式転送制御機構及びゲートロジックによって制御されるＳＥＮＤ信号及びＡＣＫ信号を実データ駆動プロセッサ上のパケットであるＳＥＮＤメッセージ及びＡＣＫメッセージとしてそれぞれ表現し、ステージ間のＳＥＮＤ信号及びＡＣＫ信号の転送動作を評価するタイミングパスエミュレーション手段と、
を具備する、データ駆動プロセッサのエミュレーションシステム。
【請求項２】
前記タイミングパスエミュレーション手段は、ＳＥＮＤメッセージ及びＡＣＫメッセージにタイムスタンプを付与することで、ある時刻における仮想パケットの位置を評価する、請求項１に記載のデータ駆動プロセッサのエミュレーションシステム。
【請求項３】
前記タイミングパスエミュレーション手段は、前記データパスエミュレーション手段による評価結果をＣＯＮＴＲＯＬメッセージとして受信することにより、ゲートロジックにおけるＳＥＮＤ信号及びＡＣＫ信号の制御動作を評価する、請求項１に記載のデータ駆動プロセッサのエミュレーションシステム。
【請求項４】
前記データパスエミュレーション手段は、仮想パケットごとに一意の識別子を与えることでＰＡＣＫＥＴメッセージを並列に処理する、請求項１に記載のデータ駆動プロセッサのエミュレーションシステム。
【請求項５】
前記タイミングパスエミュレーション手段は、ステージごとに一意の識別子を与えることでＳＥＮＤメッセージ及びＡＣＫメッセージをそれぞれ並列に処理する、請求項１に記載のデータ駆動プロセッサのエミュレーションシステム。
【請求項６】
コンピュータネットワークを介して前記実データ駆動プロセッサと接続され、エミュレーション情報の生成処理及びエミュレーション結果の表示処理を行うノイマン型コンピュータ、を更に具備する、請求項１に記載のデータ駆動プロセッサのエミュレーションシステム。
【請求項７】
前記ノイマン型コンピュータは、個々の仮想パケットに関する情報を記述したパケット流情報を予め作成し、前記データパスエミュレーション手段は、該パケット流情報を参照して仮想パケットの振る舞いを決定する、請求項６に記載のデータ駆動プロセッサのエミュレーションシステム。
【請求項８】
前記ノイマン型コンピュータは、仮想パケットの位置と時刻とに関するトレース情報を前記実データ駆動プロセッサより受信して、パケットが存在しているステージの全ステージに対する割合と時刻との関係を表すパイプライン占有率グラフを表示する、請求項６に記載のデータ駆動プロセッサのエミュレーションシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ駆動プロセッサ（Ｄａｔａ−Ｄｒｉｖｅｎ　Ｐｒｏｃｅｓｓｏｒ）をエミュレーションするシステムに関する。
【０００２】
【従来の技術】
計算機の高速化への要請に応えるべく並列処理技術の研究が進められているが、その中でも並列計算機が特に重要な研究課題となっている。現在、計算機の主流となっているのは、プログラムカウンタによって指定されるアドレスに基づいて命令を逐次呼び出して実行するノイマン型プロセッサであるが、そのプログラムでは処理の並列性を抽出するのが困難である。そこで、プログラム中のいかなる命令もその必要な入力データが全てそろった時点で実行可能であるというデータ駆動原理に基づき、データフローグラフで記述されたプログラムを実行する非ノイマン型プロセッサであるデータ駆動プロセッサの研究開発が世界各国で行われてきた。
【０００３】
【発明が解決しようとする課題】
データ駆動プロセッサの開発支援環境として、ターゲットとするデータ駆動プロセッサがターゲットプログラムを実行する際の動作をエミュレーションするシステムが求められる。かかるエミュレーションを実現する上で、並列処理によるエミュレーションの効率化を図ることが重要となってくるところ、データ駆動プロセッサにおけるパイプライン構成のモデル化等を並列処理性に優れるデータ駆動プロセッサで評価するエミュレーション手法については、何ら提案されていない状況にある。
【０００４】
本発明は、上述した問題点に鑑みてなされたものであり、その目的は、データ駆動プロセッサのエミュレーションシステムであって、オーバヘッドを増大させることなく並列処理を可能とするエミュレーション手法を採用することでエミュレーション時間の短縮を図ったものを提供することにある。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、本発明の第１の面（ａｓｐｅｃｔ）によれば、各ステージが、パケットを保持するデータラッチと、該データラッチに保持されたパケットを処理する論理回路と、該データラッチに同期信号を供給する自己同期式転送制御機構と、必要に応じて設けられ該論理回路の処理結果に従い当該ステージの自己同期式転送制御機構と下流ステージの自己同期式転送制御機構との間のＳＥＮＤ信号及びＡＣＫ信号を制御するゲートロジックと、を有するパイプラインとして構成される仮想データ駆動プロセッサを、実データ駆動プロセッサを用いてエミュレーションするシステムであって、該実データ駆動プロセッサが、仮想データ駆動プロセッサ上の仮想パケットを実データ駆動プロセッサ上のパケットであるＰＡＣＫＥＴメッセージとして表現し、仮想データ駆動プロセッサ内の機能ブロックごとに仮想パケット処理動作を評価するデータパスエミュレーション手段と、自己同期式転送制御機構及びゲートロジックによって制御されるＳＥＮＤ信号及びＡＣＫ信号を実データ駆動プロセッサ上のパケットであるＳＥＮＤメッセージ及びＡＣＫメッセージとしてそれぞれ表現し、ステージ間のＳＥＮＤ信号及びＡＣＫ信号の転送動作を評価するタイミングパスエミュレーション手段と、を具備する、データ駆動プロセッサのエミュレーションシステムが提供される。
【０００６】
また、本発明の第２の面によれば、前記第１の面によるシステムにおいて、前記タイミングパスエミュレーション手段は、ＳＥＮＤメッセージ及びＡＣＫメッセージにタイムスタンプを付与することで、ある時刻における仮想パケットの位置を評価する。
【０００７】
また、本発明の第３の面によれば、前記第１の面によるシステムにおいて、前記タイミングパスエミュレーション手段は、前記データパスエミュレーション手段による評価結果をＣＯＮＴＲＯＬメッセージとして受信することにより、ゲートロジックにおけるＳＥＮＤ信号及びＡＣＫ信号の制御動作を評価する。
【０００８】
また、本発明の第４の面によれば、前記第１の面によるシステムにおいて、前記データパスエミュレーション手段は、仮想パケットごとに一意の識別子を与えることでＰＡＣＫＥＴメッセージを並列に処理する。
【０００９】
また、本発明の第５の面によれば、前記第１の面によるシステムにおいて、前記タイミングパスエミュレーション手段は、ステージごとに一意の識別子を与えることでＳＥＮＤメッセージ及びＡＣＫメッセージをそれぞれ並列に処理する。
【００１０】
また、本発明の第６の面によれば、前記第１の面によるシステムにおいて、コンピュータネットワークを介して前記実データ駆動プロセッサと接続され、エミュレーション情報の生成処理及びエミュレーション結果の表示処理を行うノイマン型コンピュータ、を更に具備する。
【００１１】
また、本発明の第７の面によれば、前記第６の面によるシステムにおいて、前記ノイマン型コンピュータは、個々の仮想パケットに関する情報を記述したパケット流情報を予め作成し、前記データパスエミュレーション手段は、該パケット流情報を参照して仮想パケットの振る舞いを決定する。
【００１２】
また、本発明の第８の面によれば、前記第６の面によるシステムにおいて、前記ノイマン型コンピュータは、仮想パケットの位置と時刻とに関するトレース情報を前記実データ駆動プロセッサより受信して、パケットが存在しているステージの全ステージに対する割合と時刻との関係を表すパイプライン占有率グラフを表示する。
【００１３】
【発明の実施の形態】
以下、添付図面を参照して本発明の実施形態について説明する。最初に、本発明に係るエミュレーションの対象となるとともに、そのエミュレーションシステムの一実施形態を構成することともなるデータ駆動プロセッサの構成及び動作について説明する。
【００１４】
図１は、そのデータ駆動プロセッサの概略的構成を示すブロック図である。この図に示されるように、データ駆動プロセッサ１００は、複数のＰＥ（Ｐｒｏｃｅｓｓｉｎｇ　Ｅｌｅｍｅｎｔ）１１０と、それらを接続する相互接続網１８０とを具備する。
【００１５】
そして、各ＰＥ１１０は、合流部（Ｊｏｉｎｔ；ＪＮ）１２０、発火制御部（Ｆｉｒｉｎｇ　Ｃｏｎｔｒｏｌ；ＦＣ）１３０、関数処理部（Ｆｕｎｃｔｉｏｎａｌ　Ｐｒｏｃｅｓｓｏｒ；ＦＰ）１４０、プログラム記憶部（Ｐｒｏｇｒａｍ　Ｓｔｏｒａｇｅ；ＰＳ）１５０及び分流部（Ｂｒａｎｃｈ；ＢＲ）１６０と呼ばれる５個の機能ブロックによる環状パイプライン構成を有している。なお、発火制御部（ＦＣ）１３０には待合せメモリ（ＭＭ）１３２が接続され、また、プログラム記憶部（ＰＳ）１５０には命令メモリ（ＩＭ）１５２が接続されている。さらに、関数処理部（ＦＰ）１４０には、データメモリ（ＤＭ）１４２が接続される場合がある。
【００１６】
ここで、データ駆動プロセッサ１００が２個のＰＥすなわちＰＥ＃０及びＰＥ＃１を備え、図２（Ａ）に示されるデータフロープログラムを処理する場合の動作について説明する。図２（Ａ）のプログラムは、（ｗ＋ｘ）＊（ｙ＋ｚ）なる演算を行う例であり、このプログラムには、図２（Ｂ）に示されるように、世代１としてｗ＝２，ｘ＝３，ｙ＝４及びｚ＝５、世代２としてｗ＝６，ｘ＝７，ｙ＝９及びｚ＝８なる入力ストリームが与えられるものとする。
【００１７】
図２（Ａ）のプログラムは、ノード０、ノード１及びノード２なる３個のノードを有するが、ノード０及びノード２の演算はＰＥ＃０で実行される一方、ノード１の演算はＰＥ＃１で実行されることが予め決定されているものとする。また、図２（Ａ）に示されるように、入力ｗはノード０のポート０に、入力ｘはノード０のポート１に、入力ｙはノード１のポート０に、入力ｚはノード１のポート１に、それぞれ送られる。
【００１８】
プログラムの実行の際には、図２（Ｂ）の入力ストリームに対応して図３（Ａ）〜（Ｈ）に示される８個のパケットがデータ駆動プロセッサに対して入力されることとなる。なお、入力パケットは、同図に示されるように、オペコード、タグ及びオペランドから構成され、タグは、宛先及び世代から構成されている。さらに、宛先は、ＰＥ＃、ノード＃及びポート＃から構成されている。
【００１９】
データ駆動プロセッサに入力されたパケット中、図３（Ａ）〜（Ｄ）に示される４個のパケットは、宛先ＰＥ＃の値として０を有しているため、ＰＥ＃０の合流部（ＪＮ）１２０を介してＰＥ＃０の発火制御部（ＦＣ）１３０に送られる。パケットが発火制御部（ＦＣ）１３０に到着すると、発火制御部（ＦＣ）１３０は待合せメモリ（ＭＭ）１３２を参照する。
【００２０】
待合せメモリ（ＭＭ）１３２は、図４に示されるように、一つの演算に使用されるべき２個のオペランドのうち先に到着した方のオペランドを格納するものであり、ＰＥ＃、ノード＃及び世代をアドレスとして参照される。なお、フラグは、既に格納済みであるか否かを示す。なお、本実施形態における待合せメモリは、ハッシュ法（ｈａｓｈ　ｍｅｔｈｏｄ）の採用により容量の削減が図られている。
【００２１】
例えば、図３（Ａ）のパケットがＰＥ＃０の発火制御部（ＦＣ）１３０に到着したとき、そのパケットにおけるＰＥ＃、ノード＃及び世代と同一のＰＥ＃、ノード＃及び世代を有するオペラントが未だ格納されていない場合には、図３（Ａ）のパケット中のオペランドが格納され、フラグが１にセットされる。そして、この時点で図３（Ａ）のパケットは、消滅する。
【００２２】
やがて、図３（Ａ）のパケットにおけるＰＥ＃、ノード＃及び世代と同一のＰＥ＃、ノード＃及び世代を有する図３（Ｂ）のパケットがＰＥ＃０の発火制御部（ＦＣ）１３０に到着したときには、既に相手方のオペランドが格納済みであるため、それが読み出され、図５（Ａ）に示される、２個のオペランドを有するパケットとして、関数処理部（ＦＰ）１４０に送られることとなる。
【００２３】
同様に、ＰＥ＃０の発火制御部（ＦＣ）１３０は、図３（Ｃ）及び図３（Ｄ）の２個のパケットに対応して、図５（Ｂ）に示されるパケットをＰＥ＃０の関数処理部（ＦＰ）１４０に送る。さらに、ＰＥ＃１の発火制御部（ＦＣ）１３０は、図３（Ｅ）及び図３（Ｆ）の２個のパケットに対応して図５（Ｃ）に示されるパケットを、また、図３（Ｇ）及び図３（Ｈ）の２個のパケットに対応して図５（Ｄ）に示されるパケットを、それぞれＰＥ＃１の関数処理部（ＦＰ）１４０に送る。
【００２４】
図５（Ａ）に示されるパケットがＰＥ＃０の関数処理部（ＦＰ）１４０に送られると、関数処理部（ＦＰ）１４０は、そのオペコードＡＤＤに対応した演算を行い、その結果をオペランドとして有する、図６（Ａ）のパケットをＰＥ＃０のプログラム記憶部（ＰＳ）１５０に送る。同様に、ＰＥ＃０の関数処理部（ＦＰ）１４０は、図５（Ｂ）のパケットに対応して図６（Ｂ）のパケットをＰＥ＃０のプログラム記憶部（ＰＳ）１５０に送る。さらに、ＰＥ＃１の関数処理部（ＦＰ）１４０は、図５（Ｃ）のパケットに対応して図６（Ｃ）のパケットを、また、図５（Ｄ）のパケットに対応して図６（Ｄ）のパケットを、それぞれＰＥ＃１のプログラム記憶部（ＰＳ）１５０に送る。
【００２５】
関数処理部（ＦＰ）１４０からのパケットがプログラム記憶部（ＰＳ）１５０に到着すると、プログラム記憶部（ＰＳ）１５０は命令メモリ（ＩＭ）１５２を参照する。命令メモリ（ＩＭ）１５２は、図７に示されるように、ノード＃に対応して、新たな命令を指定するＰＥ＃、ノード＃、ポート＃及びオペコードを記憶したものである。例えば、図６（Ａ）のパケットがＰＥ＃０のプログラム記憶部（ＰＳ）１５０に到着すると、命令メモリ（ＩＭ）１５２の内容に従って、図８（Ａ）に示されるパケットが生成される。この生成されたパケットは、分流部（ＢＲ）１６０を介して宛先で指定されたＰＥへと送られる。
【００２６】
同様に、ＰＥ＃０のプログラム記憶部（ＰＳ）１５０は、図６（Ｂ）のパケットに応じて図８（Ｂ）のパケットを生成する。さらに、ＰＥ＃１のプログラム記憶部（ＰＳ）１５０は、図６（Ｃ）のパケットに応じて図８（Ｃ）のパケットを、また、図６（Ｄ）のパケットに応じて図８（Ｄ）のパケットを、それぞれ生成する。
【００２７】
このように、プログラム記憶部（ＰＳ）１５０では、パケットが消滅するとともに、新たなパケットが生成される。また、生成されるパケットの数は、ノードの出力ポート数に応じて複数の場合もあり、また、新たなパケットが生成されない場合もある。図８（Ａ）〜（Ｄ）に示されるパケットには、以上に説明された処理と同様の処理が施されていくこととなる。かくして、図２（Ａ）に示されるデータフロープログラムの処理が完了する。
【００２８】
ところで、ＰＥ１１０は、自己同期式エラスティックパイプラインによるスーパーパイプライン構造を有している。図９は、ＰＥ１１０内の合流部（ＪＮ）１２０、発火制御部（ＦＣ）１３０、関数処理部（ＦＰ）１４０、プログラム記憶部（ＰＳ）１５０及び分流部（ＢＲ）１６０といった各機能ブロックの構成を示す図である。
【００２９】
すなわち、各機能ブロックは、複数のパイプラインステージ２００から構成される。そして、各パイプラインステージ２００は、パケットを保持するデータラッチ（ＤＬ）２１０、その保持されたパケットを処理する組合せ論理回路（ＬＣ）２２０、及びデータラッチへ同期信号すなわちクロック（トリガー）信号を供給する自己同期式転送制御機構（Ｓｅｌｆ−ｔｉｍｅｄ　Ｔｒａｎｓｆｅｒ　Ｃｏｎｔｒｏｌ　Ｍｅｃｈａｎｉｓｍ；ＳＴＣＭ）２３０を備えている。エラスティックパイプラインでは、データラッチへのクロック配線が極小化されるので、クロックスキューが高速化の障害となりにくく、同時に、部分的なカスタマイズの影響範囲も極小化することができる。
【００３０】
また、ＦＣでの待合せによるパケットの消滅や、ＰＳにおけるパケットの消滅及び生成のように、論理回路２２０の評価結果に応じてパケット流に変動が生じるパイプラインステージには、ゲートロジック（Ｇａｔｅ　Ｌｏｇｉｃ；ＧＬ）２６０が設けられ、後述するＳＥＮＤ／ＡＣＫ信号が制御される。
【００３１】
エラスティックパイプラインを実現する自己同期式転送制御機構（ＳＴＣＭ）２３０は、近傍のステージの空き状態のみに従って、自律的にパケットの転送タイミングを決定し、局所的なクロック信号を生成する。この自己同期式転送制御機構（ＳＴＣＭ）２３０は、２個のＣ素子（Ｃｏｉｎｃｉｄｅｎｃｅ　Ｅｌｅｍｅｎｔ）２４０及び２４２と、論理回路（ＬＣ）２２０におけるパケット処理時間を保証する遅延素子（Ｄｅｌａｙ　Ｅｌｅｍｅｎｔ）２５０とからなる。
【００３２】
Ｃ素子は、送信信号ＳＥＮＤと承認信号ＡＣＫとのハンドシェイクを行うものである。図１０（Ａ）は、Ｃ素子の回路図を例示し、図１０（Ｂ）は、その真理値表である。この図から明らかなように、Ｃ素子は、上流（前段）からの入力ＳＥＮＤｉｎ及び下流（後段）からの入力ＡＣＫｉｎの両入力がともに１であるとき、下流への出力ＳＥＮＤｏｕｔを１にするとともに上流への出力ＡＣＫｏｕｔを０にする一方、上流からの入力ＳＥＮＤｉｎ及び下流からの入力ＡＣＫｉｎの両入力がともに０であるとき、下流への出力ＳＥＮＤｏｕｔを０にするとともに上流への出力ＡＣＫｏｕｔを１にするフリップフロップである。
【００３３】
なお、自己同期式転送制御機構（ＳＴＣＭ）２３０がＣ素子を２個備え、２段のフリップフロップとなっているのは、データラッチ（ＤＬ）２１０の各々に連続して異なるパケットが格納されうるようにして、バッファリング効率を高めるためである。なお、マスタリセット信号（図示せず）により、全てのＣ素子は、その出力がＳＥＮＤ＝０すなわちＡＣＫ＝１の初期化状態とされるように構成されている。
【００３４】
このように自己同期式転送制御機構（ＳＴＣＭ）２３０は、２個のＣ素子２４０及び２４２とＳＥＮＤ信号側の遅延素子２５０とを有しているため、ＳＴＣＭ２３０を一つのハンドシェイク素子として把握した場合、ハンドシェイクが成立した時点からそれぞれ異なる一定時間経過後に下流へのＳＥＮＤ出力及び上流へのＡＣＫ出力がアクティブとなる。
【００３５】
自己同期式転送制御機構（ＳＴＣＭ）２３０がＳＥＮＤ信号及びＡＣＫ信号を転送するタイミングをデータフローグラフで模擬的に表すと、例えば、図１１のようになる。この例では、時刻２にＡＣＫが到着した後、時刻１０にＳＥＮＤが到着してハンドシェイクが成立するが、ＳＥＮＤについては１２の遅延が生じて時刻２２にＳＥＮＤが転送され、一方、ＡＣＫについては２の遅延が生じて時刻１２にＡＣＫが転送されることを示している。このように、ステージごとに自己同期式転送制御機構（ＳＴＣＭ）のＳＥＮＤ遅延時間及びＡＣＫ遅延時間が定まることとなる。
【００３６】
以下、本発明によるエミュレーションについて説明する。図１２は、エラスティックパイプラインの評価モデルを説明するための図である。エラスティックパイプラインを模擬するには、図１２（Ａ）に示すように、個々のパイプラインステージを互いにＳＥＮＤ／ＡＣＫ／ＰＡＣＫＥＴメッセージを通信し合う自律したモジュールとしてモデル化するのが最も直接的な手法である。このモデルでは、ＳＥＮＤ／ＡＣＫメッセージのモジュールへの到着時刻さえ分かれば、パケットの転送タイミングを決定することができる。したがって、ＳＥＮＤ／ＡＣＫメッセージにタイムスタンプを付与することで、ある時刻におけるパケットの位置を評価することができる。
【００３７】
このとき、機能ブロックのオペレーションの模擬、すなわちＰＡＣＫＥＴメッセージの参照及び更新については、ＳＥＮＤ／ＡＣＫメッセージをゲートロジック（ＧＬ）で制御することができる限りにおいて、モジュールごとに細分化して行う必要はない。すなわち、図１２（Ｂ）に示されるように、ゲートロジック（ＧＬ）を扱うモジュールにおいてのみＰＡＣＫＥＴメッセージを評価することで、モデル作成が容易になる。しかし、図１２（Ｂ）のモデルでは、ゲートロジック（ＧＬ）を扱うモジュールがパイプラインのボトルネックとなることが明らかであり、パイプライン全体の評価効率が低下する。これらの相反する課題を解決しなければならない。
【００３８】
そこで、本エミュレーション方式ではエラスティックパイプラインが、データラッチを結ぶＰＡＣＫＥＴの通信路（以下、データパス）と、転送制御機構（ＳＴＣＭ）及びゲートロジック（ＧＬ）からなるＳＥＮＤ／ＡＣＫ信号の通信路（以下、タイミングパス）と、の２系統の通信路に分離することができることに着目する。データパスから見ると、タイミングパスは同期式パイプラインのクロックジェネレータに相当する。すなわち、基本的にデータパスはタイミングパスからのクロック入力を受けるのみである。
【００３９】
例外的に、ゲートロジック（ＧＬ）ではデータパスがタイミングパスを制御するが、ゲートロジック間のパケット転送に限定すれば、タイミングパスはデータパスと独立に処理可能である。したがって、図１２（Ｃ）に示されるように、データパスとタイミングパスとを異なる粒度でモデル化し、両者を可能な限り並列に評価する。モデル化の粒度に応じて、データパスの評価を機能ブロックエミュレーション（又はデータパスエミュレーション）、タイミングパスの評価をパイプラインエミュレーション（又はタイミングパスエミュレーション）と呼称することとする。
【００４０】
本エミュレーション方式では、機能ブロックエミュレーション中の各機能ブロックでＰＡＣＫＥＴメッセージを評価し、その結果をＣＯＮＴＲＯＬメッセージとして機能ブロックエミュレーションのゲートロジック（ＧＬ）に通知することで、ＳＥＮＤ／ＡＣＫメッセージを適切に制御する。この方式では、パイプラインエミュレーションに対し機能ブロックエミュレーションを先行して評価でき、さらにパイプラインエミュレーションの構造が均一なため、パイプラインの処理効率の向上が可能である。
【００４１】
また、機能ブロックエミュレーションのモジュール内では複数のパケットを並列に評価すること、及び、パイプラインエミュレーションのゲートロジックで各ＳＥＮＤメッセージに対応する適切なＣＯＮＴＲＯＬメッセージを選択することが必要となるが、これらは動的データ駆動方式における色（ｃｏｌｏｒ）としての世代を活用した多重処理により実現することができる。
【００４２】
本エミュレーション手法は、ＳＥＮＤ／ＡＣＫ／ＰＡＣＫＥＴ／ＣＯＮＴＲＯＬメッセージを実機としてのデータ駆動プロセッサ上のパケットで表現する。データ駆動プロセッサで相互干渉なく並列処理するには文脈ごとに一意の世代を与えればよい。このとき、性質の異なるパイプラインエミュレーションと機能ブロックエミュレーションとに対し、世代も異なる手法で与える。転送制御機構やパイプラインステージ間のゲートロジックなど、すべての仮想モジュールに一意の識別子ＩＤｆを与えておく。なお、本実施形態では、ＩＤｆは、ＰＥ＃を示すフィールド、機能ブロックを示すフィールド、並びにステージ（ＳＴＣＭを識別するのに加えてＬＣ及びＧＬをも識別する。）を示すフィールドから構成される。
【００４３】
機能ブロックエミュレーション（データパスエミュレーション）では、ひとつの仮想モジュールで同時に複数のＰＡＣＫＥＴメッセージを評価するため、ＰＡＣＫＥＴメッセージごとに異なる文脈とすべきである。したがって、ＰＡＣＫＥＴメッセージを表現する仮想パケットに一意の識別子ＩＤｐを与える。なお、本実施形態では、ＩＤｐは、宛先ＰＥ＃を示すフィールド、宛先ノード＃を示すフィールド及び宛先ポート＃を示すフィールドから構成される。そしてＩＤｐは、ＰＳの評価時に更新される。
【００４４】
パイプラインエミュレーション（タイミングパスエミュレーション）では、ひとつのパイプラインステージには、高々１個のパケットしか存在しないため、ステージごとに異なる世代を割り当てれば、すべてのメッセージを並列に評価可能である。したがって、ＩＤｆを世代とし、パケットデータにはメッセージの生成時刻をタイムスタンプＴＳとして記録する。また、ゲートロジック（ＧＬ）におけるＳＥＮＤメッセージとＣＯＮＴＲＯＬメッセージとの同期処理のために、識別子ＩＤｍを一時的に与えることで、パケットの待ち合わせを実現する。
【００４５】
本実施形態においては、ＡＣＫメッセージは、世代としてＩＤｆを、オペランドとしてＴＳをそれぞれ有する。また、ＳＥＮＤメッセージは、世代としてＩＤｆを、オペランドとしてＩＤｐ、ＩＤｍ及びＴＳをそれぞれ有する。また、ＰＡＣＫＥＴメッセージは、世代としてＩＤｆ及びＩＤｍを、オペランドとしてＩＤｐをそれぞれ有する。また、ＣＯＮＴＲＯＬメッセージは、世代としてＩＤｍを、オペランドとして制御データをそれぞれ有する。
【００４６】
機能ブロックエミュレーション（データパスエミュレーション）では、待合せに入ることによるパケットの消滅（ＦＣ）、データの複製による新規パケットの生成（ＰＳ）、及び、演算結果と命令記憶とに依存するパケットの分岐（ＦＰ，ＰＳ，ＢＲ）を決定し、その結果をＣＯＮＴＲＯＬメッセージとしてゲートロジック（ＧＬ）に通知する。これらの振る舞いは本来、各機能ブロックにおいて、ＰＡＣＫＥＴメッセージと機能ブロック固有のメモリ内容とから決定される。
【００４７】
しかし、命令実行に必要なすべての情報はパケット内で自己充足されるため、他のパケットとの動的な位置関係とは無関係に一つのパケットの振る舞いは前処理で評価することができる。すなわち、可能な限り前処理をし、機能ブロックエミュレーション評価の高効率化を図ることができる。そこで、本実施形態においては、エミュレーションに必要な情報は、後述のようにパケット流情報（ＰａｃｋｅｔＦｌｏｗ　Ｉｎｆｏｒｍａｔｉｏｎ）としてエミュレーションの前に予め求められ、各機能ブロックのエミュレーションプログラムは、評価対象ＰＡＣＫＥＴのＩＤｐをキーとしてそのパケット流情報を参照し、そのＰＡＣＫＥＴの振る舞いを決定する。
【００４８】
上述したエミュレーション手法を実現するエミュレーションシステムの一実施形態が図１３に示される。同図に示されるように、このエミュレーションシステムは、エミュレーションプログラムを実行することによりエミュレータとして動作するデータ駆動プロセッサ１００と、エミュレーション情報の生成処理及びエミュレーション結果の表示処理を行うパーソナルコンピュータ（ＰＣ）３００と、それらを接続するコンピュータネットワーク３５０と、から構成される。ＰＣ３００は、中央処理装置（ＣＰＵ）３１２及び主記憶装置（ＭＳ）３１４を有するＰＣ本体３１０、ディスプレイ３２０、キーボード３２２、マウス３２４、外部記憶装置としてのハードディスク装置３３０等を備える通常のパーソナルコンピュータ、すなわちノイマン型コンピュータである。
【００４９】
図１３に示されるエミュレーションシステム全体の処理動作が、図１４に示される。同図に示されるように、まず、ＰＣ３００は、エミュレーション情報を作成して、データ駆動プロセッサ１００に送信する（ステップ４００）。次いで、データ駆動プロセッサ１００は、そのエミュレーション情報を受信して所定のフォーマット変換を行い（ステップ５００）、所定の初期化を実行し（ステップ６００）、エミュレーションを実行し（ステップ７００）、その結果としてのトレース情報をフォーマット変換してＰＣ３００に送信する（ステップ９００）。そして、ＰＣ３００は、そのトレース情報を受信してエミュレーション結果をディスプレイ上に表示する（ステップ１０００）。以下、これらの処理の詳細について説明する。
【００５０】
図１５は、ＰＣ３００によるエミュレーション情報生成処理（図１５のステップ４００）の手順を示すフローチャートである。ユーザは、図２（Ａ）及び（Ｂ）に示されるようなデータフロープログラム及び入力ストリーム、並びに、図１６に示されるようなエミュレーション対象データ駆動プロセッサのパイプライン構成を、ＧＵＩ（Ｇｒａｐｈｉｃａｌ　Ｕｓｅｒ　Ｉｎｔｅｒｆａｃｅ）により入力する。エミュレーション情報生成処理は、その入力データに基づいて以下の処理を実行する。
【００５１】
まず、ステップ４１０では、図１７に示されるＳＥＮＤ／ＡＣＫ遅延時間情報が生成される。ＳＥＮＤ遅延時間及びＡＣＫ遅延時間は、図１１に関して説明したものであり、パイプラインステージ単位に、即ち、ＩＤｆをキーとして、設定される。なお、この生成処理の詳細な手順は、図１８のフローチャートに示されるとおりである。
【００５２】
次いで、ステップ４２０では、図１９に示されるパイプライン構成情報が生成される。このパイプライン構成情報は、ＩＤｆにより指定されたモジュールがＳＥＮＤメッセージをフォワードＩＤｆに、ＡＣＫメッセージをバックワードＩＤｆに、ＰＡＣＫＥＴメッセージを機能ブロックＩＤｆに送信することを規定する。なお、この生成処理の詳細な手順は、図２０のフローチャートに示されるとおりである。
【００５３】
次いで、ステップ４３０では、図２１に示されるパケット流情報が生成される。パケット流情報は、機能ブロックエミュレーションの高効率化を図るために予め求められる個々のパケットに関する情報である。機能ブロックエミュレーションでの各機能ブロックは、評価対象ＰＡＣＫＥＴのＩＤｐをキーとして、パケット流情報を参照し、それを基にＰＡＣＫＥＴの振る舞いを評価する。本実施形態では、前述のように、宛先ＰＥ＃、宛先ノード＃及び宛先ポート＃を用いてＩＤｐが表現される。
【００５４】
パケット流情報は、図２１に示されるように、世代、ＦＣの待合せメモリを参照する際のハッシュキー、待合せが必要なパケットであるか否かを示すマッチングフラグ、命令オペコードに対応した処理時間を示すオペコード遅延時間、ＣＯＰＹ＃、ＮＥＸＴＩＤｐからなる。ＮＥＸＴＩＤｐは、ＰＳにおいて次に付与すべきＩＤｐであり、ＣＯＰＹ＃によって示される数だけ存在する。なお、この生成処理の詳細な手順は、図２２のフローチャートに示されるとおりである。
【００５５】
次いで、ステップ４４０では、図２３に示される入力ストリーム情報が生成される。入力ストリームは、ターゲットプロセッサへ入力されるべき仮想パケット列である。エミュレーションを行うデータ駆動プロセッサは、指定されたＩＤｆ，タイムスタンプ（ＴＳ），ＩＤｐを持つ仮想パケットを生成し、ターゲットシステムの仮想バッファに到着順に格納するとともに、一つずつ仮想パケットを仮想バッファから読みだしてエミュレーションを行う。なお、入力ストリーム情報バッファが、前述したパケット流情報生成処理（図２２）の過程で生成されているため、このステップでは、送信バッファの末尾にその入力ストリーム情報バッファの内容を書き込むだけでよい。
【００５６】
最後のステップ４５０では、エミュレータとして動作するデータ駆動プロセッサへの送信処理が行われる。具体的には、エミュレータとの間の接続が確立され、送信バッファの内容が送信される。
【００５７】
このようにして送信されたエミュレーション情報は、先に図１４のステップ５００で説明されたように、エミュレータとしてのデータ駆動プロセッサ１００によって受信され、所定のフォーマットに変換される。データ駆動プロセッサ１００における複数のＰＥ１１０の各命令メモリ（ＩＭ）１５２には、後述するエミュレーションプログラムが、１個の仮想ＰＥを担当する実機ＰＥの個数分に分割されて格納されている。
【００５８】
次いで、エミュレータとしてのデータ駆動プロセッサ１００では、前述のように初期化（図１４のステップ６００）が行われるが、その詳細が図２４に示される。まず、ステップ６０２、６０４及び６０６に示されるように、ＳＥＮＤ／ＡＣＫ遅延時間情報（図１７）、パイプライン構成情報（図１９）及びパケット流情報（図２１）が、それぞれ、関連する処理を実行するＰＥ１１０のデータメモリ（ＤＭ）１４２に書き込まれる。
【００５９】
次いで、ステップ６０８では、エミュレーション対象たる仮想プロセッサのパイプラインの状態を初期化する処理が実行される。具体的には、実際のデータ駆動プロセッサにおいてマスタリセットにより全てのＣ素子（フリップフロップ）がＳＥＮＤ＝０すなわちＡＣＫ＝１の初期化状態とされるのに対応して、初期化メッセージとして、全ての自己同期式転送制御機構（ＳＴＣＭ）に対しタイムスタンプが０のＡＣＫメッセージが送信される。
【００６０】
最後に、ステップ６１０において、入力ストリーム情報（図２３）が、一つのＰＥ１１０内のデータメモリ（ＤＭ）１４２に設けられたキューに格納されることで、エミュレータの初期化が完了する。
【００６１】
エミュレータとしてのデータ駆動プロセッサ１００では、前述のように初期化に続いてエミュレーション（図１４のステップ７００）が行われるが、その動作の概要が図２５に示される。すなわち、キューから一つのイベント（入力データ）が取り出され、前述したハンドシェイク動作の模擬及び機能ブロックの模擬が並列に実行される。なお、ゲートロジックを含むステージの場合には、これらの模擬の同期処理が行われる。そして、トレース情報が作成されて一つのイベントに対する処理が完了する。以下、エミュレーションの詳細について説明する。
【００６２】
図２６は、１個のＰＥに対するエミュレーションプログラムの全体構成を示すデータフローグラフである。すなわち、この図は、１ＰＥエミュレーションの最上位層であり、各メッセージを適切なモジュールにディスパッチする様子を示している。各メッセージは、宛先モジュールを示す情報としてＩＤｆを持つ。ゆえに、ＩＤｆに基づき分流することで（図中、ＳＷＩＴＣＨ　ＢＹＩＤｆ）、各メッセージは適切なモジュールに送信される。
【００６３】
各モジュールでは、必要なメッセージが揃い次第評価が開始され、下流のモジュールにメッセージを発行する。このとき、パイプライン構成情報を参照し、ＩＤｆを宛先モジュールの識別子とする（図中、ＥＸＣＨＡＮＧＥＩＤｆ）。一つのＰＡＣＫＥＴメッセージがこのプログラムに投入されるときには、同時に一つのＳＥＮＤメッセージも投入されることとなる。以下、個々のモジュールの構成を示す。
【００６４】
図２７は、ＳＴＣＭ（自己同期式転送制御機構）エミュレーションモジュールを概略的に示すデータフローグラフである。すなわち、このモジュールは、図９における自己同期式転送制御機構２３０を模擬するものであり、図１１の内容をより具体化したものである。自己同期式転送制御機構の動作は、上流の自己同期式転送制御機構からのＳＥＮＤメッセージと下流の自己同期式転送制御機構からのＡＣＫメッセージとの双方を受信したとき評価可能となる。
【００６５】
まず、ＳＥＮＤメッセージのタイムスタンプとＡＣＫメッセージのタイムスタンプとを比較し、より大きいタイムスタンプをハンドシェイクの成立時刻とする（ノード７０２）。そして、ＳＥＮＤ／ＡＣＫ遅延時間情報（図１７）を参照して当該ＩＤｆに対応するＳＥＮＤ遅延時間を求め、その遅延時間をハンドシェイク成立時刻に加えることにより得られる値を、ＳＥＮＤメッセージの新たなタイムスタンプとする（ノード７０４）。同様に、当該ＩＤｆに対応するＡＣＫ遅延時間をハンドシェイク成立時刻に加えることにより得られる値を、ＡＣＫメッセージの新たなタイムスタンプとする（ノード７０６）。
【００６６】
そして、パイプライン構成情報（図１９）を参照し、当該ＩＤｆに対応するフォワードＩＤｆをＳＥＮＤメッセージの新たなＩＤｆとし、また、当該ＩＤｆに対応するバックワードＩＤｆをＡＣＫメッセージの新たなＩＤｆとする（ノード７０８，７１０）。そして、ＳＥＮＤメッセージ及びＡＣＫメッセージは、新たなＩＤｆの値に応じて次のモジュールに転送される（ノード７１２，７１４）。なお、ＩＤｆが同一ＰＥ内の自己同期式転送制御機構に係るものであれば、本モジュールに戻ることとなる。
【００６７】
また、ＳＥＮＤメッセージが次の宛先モジュールに送られるときには、そのトレース情報が、図２８に示される出力ストリーム情報に追加される。この出力ストリーム情報は、パケットの位置と時刻とに関する情報として随時ＰＣ３００に送信される。なお、このように自己同期式転送制御機構においてＳＥＮＤとＡＣＫとによるハンドシェイクが成立した場合に加え、後述するＦＣエミュレーションモジュールにおいてパケットが待合せメモリに格納された場合、及び、ＰＳエミュレーションモジュールにおいてパケットが消去された場合にも、トレース情報がとられる。
【００６８】
図２８の出力ストリームによれば、タイムスタンプによって識別される時刻に、ＩＤｐによって識別されるパケットが、ＩＤｆによって識別されるモジュールに到着したこと、又は、そこで消滅されたことを示す。ＦＣ又はＰＳにおいてパケットが消滅する場合に限り、アブソーブフラグが１に設定される。
【００６９】
図２９は、ＪＮ（合流部）エミュレーションモジュールを概略的に示すデータフローグラフである。すなわち、このモジュールは、図１における合流部（Ｊｏｉｎｔ）１２０を模擬するものである。合流部は、合流する仮想パケットのうち最も小さいタイムスタンプを持つ仮想パケットを下流のモジュールに送信する。合流部の動作は、各仮想パケットのタイムスタンプに依存するため、パイプラインエミュレーション中のゲートロジックがパケットの振る舞いを決定する。
【００７０】
図２９に示されるように、ゲートロジックが上流の全てのモジュールからＳＥＮＤメッセージを受信したとき、最も小さいタイムスタンプを有するＳＥＮＤメッセージを選択する（ノード７２０）。そのＳＥＮＤメッセージがどのモジュールから送信されたかを示すフラグを生成する（ノード７２２）。このフラグは、ＡＣＫメッセージの送信先の決定に用いられる。同時に、機能ブロックエミュレーションのＰＡＣＫＥＴメッセージと同期をとる（ノード７２４）。この同期は、前述したＩＤｍを世代として使用することにより、ＦＣにおける実パケットの待合せとして簡潔に実現することができる。
【００７１】
機能ブロックエミュレーションでは、次にＰＡＣＫＥＴメッセージが送信されるべき機能ブロックのＩＤｆを取得し（ノード７２６）、送信先機能ブロックに新たなＩＤｍを問合わせる（ノード７２８）。なお、送信先機能ブロックは、最後に与えたＩＤｍに１を加えて得られる値を問合せ元の機能ブロックに返答する。新たなＩＤｍを取得すると、次の機能ブロックにＰＡＣＫＥＴメッセージを、ゲートロジックにＩＤｍをそれぞれ送信する（ノード７２８）。ゲートロジックでは、ＩＤｍを更新し（ノード７３０）、下流のモジュールにＳＥＮＤメッセージを送信する（ノード７３２）。一方、ＡＣＫメッセージを受信した場合には、最後に選択されたＳＥＮＤメッセージの送信元モジュール、すなわちフラグが指し示すモジュールに対してＡＣＫメッセージを送信する（ノード７３４）。
【００７２】
図３０は、ＦＣ（発火制御部）エミュレーションモジュールを概略的に示すデータフローグラフである。すなわち、このモジュールは、図１における発火制御部（Ｆｉｒｉｎｇ　Ｃｏｎｔｒｏｌ）１３０を模擬するものである。ＦＣの機能ブロックエミュレーションにおいて、まず、ノード７４０では、ＰＡＣＫＥＴメッセージのＩＤｐをキーとしてパケット流情報（図２１）を参照することにより、対応するマッチングフラグが１であるか否かを判定し、フラグが１で待合せを必要とするときにはＰＡＣＫＥＴメッセージをノード７４２に送る一方、フラグが０で待合せを必要としないときにはＰＡＣＫＥＴメッセージをノード７４４に送る。
【００７３】
ノード７４２では、待合せメモリを参照する際の当該ハッシュキーによるアクセス回数が奇数回目であるか偶数回目であるかによって、待合せが成功したか否かを判断し、待合せが成功したときにはノード７４４に分岐する一方、待合せが失敗したときにはノード７４８に分岐する。ノード７４４及び７４６は、前述のＪＮエミュレーションモジュールにおけるノード７２６及び７２８と同様である。待合せが失敗したときに実行されるノード７４８では、ＮＥＸＴＩＤｍに１０２４の値を設定することにより、ＰＡＣＫＥＴが発火せずに待合せメモリに格納されて消滅したことを表示する。なお、前述したように、パケットが待合せメモリに格納されたときには、トレース情報（図２８）がとられる。
【００７４】
ＦＣのゲートロジックのエミュレーションでは、ノード７５０において、ＳＥＮＤメッセージを受信したとき、ＩＤｍを世代として対応するＣＯＮＴＲＯＬメッセージを選択してＩＤｍを更新し、その更新後のＩＤｍが発火を示すならば、下流のモジュールに対しＳＥＮＤメッセージを送信する一方、未発火すなわちＰＡＣＫＥＴメッセージの消滅を示すならば、ノード７５２に分岐する。ノード７５２では、ＡＣＫメッセージを受信したときに上流のモジュールに対してＡＣＫメッセージを送信するのに加え、ノード７５０からの分岐があった場合にもＡＣＫメッセージを送信する。これは、ＰＡＣＫＥＴ及びＳＥＮＤが下流のモジュールに送信されないため、自己のモジュールでＡＣＫを返す必要があるからである。
【００７５】
図３１は、ＦＰ（関数処理部）エミュレーションモジュールを概略的に示すデータフローグラフである。すなわち、このモジュールは、図１における関数処理部（Ｆｕｎｃｔｉｏｎａｌ　Ｐｒｏｃｅｓｓｏｒ；ＦＰ）１４０を模擬するものである。ＦＰでは、命令に応じて、メモリアクセス回数が変化するなど命令実行時間が変化する。ゆえに、ＦＰでは、オペコードに応じて、適切な命令実行時間をタイムスタンプに加算しなければならない。本エミュレーションはパイプラインステージ水準でパケット流を模擬することを目的としており、パケットの振る舞いはエミュレーション実行前に求められており、エミュレーション実行時にはオペコードに応じたオペランドの演算は行われない。
【００７６】
図３１に示されるように、機能ブロックエミュレーションでは、ＩＤｐに基づきパケット流情報（図２１）を参照することにより、オペコードに対応する命令実行時間（オペコード遅延時間）を取得し、ゲートロジックにＣＯＮＴＲＯＬ１メッセージとして通知する（ノード７６０）。次に、ＩＤｆ，ＩＤｍを更新し、下流の機能ブロックにＰＡＣＫＥＴメッセージを送信するとともに、ＣＯＮＴＲＯＬ２メッセージとしてＮＥＸＴＩＤｍをゲートロジックに通知する（ノード７６２，７６４）。
【００７７】
ゲートロジックでは、ＳＥＮＤメッセージの受信時、対応するＣＯＮＴＲＯＬ１メッセージを選択し、タイムスタンプに命令実行時間を加算する（ノード７６６）。次に、ＣＯＮＴＲＯＬ２メッセージに応じてＩＤｍを更新し、下流のモジュールにＳＥＮＤメッセージを送信する（ノード７６８）。ＡＣＫメッセージを受信したときには、上流のパイプラインステージに対し、ＡＣＫメッセージを送信する（ノード７７０）。
【００７８】
図３２は、ＰＳ（プログラム記憶部）エミュレーションモジュールを概略的に示すデータフローグラフである。すなわち、このモジュールは、図１におけるプログラム記憶部（Ｐｒｏｇｒａｍ　Ｓｔｏｒａｇｅ；ＰＳ）１５０を模擬するものである。実機のＰＳは、次の宛先及びオペコードをフェッチするとともに、パケットの複製及び消去を行う。本エミュレーションでは、宛先及びオペコードは、エミュレーション実行前にパケット流情報として取得されているため、パケットの複製及び消去、並びにＩＤｐの更新のみをすればよい。
【００７９】
機能ブロックエミュレーションでは、ＰＡＣＫＥＴメッセージのＩＤｐをキーとしてパケット流情報（図２１）を参照することにより、対応するＣＯＰＹ＃と、そのＣＯＰＹ＃によって指定される数のＮＥＸＴＩＤｐ（新たに付与されるべきＩＤｐ）と、を取得するとともに、それらをＣＯＮＴＲＯＬ１及びＣＯＮＴＲＯＬ２メッセージとしてゲートロジックに送信する（ノード７８０）。次に、ＣＯＰＹ＃の数だけＰＡＣＫＥＴメッセージを生成する（ノード７８２）。なお、ＣＯＰＹ＃の値が０ならば、ＰＡＣＫＥＴメッセージは生成されない。
【００８０】
最後に、それぞれのＰＡＣＫＥＴメッセージのＩＤｆ及びＩＤｍを更新し、下流の機能ブロックにＰＡＣＫＥＴメッセージを送信し、同時に、更新されたＩＤｍをゲートロジックにＣＯＮＴＲＯＬ３メッセージとして送信する（ノード７８４）。なお、前述したように、パケットが消去された場合には、トレース情報（図２８）がとられる。
【００８１】
ゲートロジックでは、ＳＥＮＤメッセージを受信したならば、ＩＤｍをキーとして対応するＣＯＮＴＲＯＬ１メッセージを選択する。選択したＣＯＮＴＲＯＬ１メッセージのＣＯＰＹ＃が０ならば、パケットの消去を意味するため、当該ＳＥＮＤメッセージを破棄するとともに、上流のモジュールにＡＣＫメッセージを送信する（ノード７８６，７８８）。
【００８２】
ＣＯＰＹ＃が１以上ならば、ＳＥＮＤメッセージを生成し、下流のモジュールに送信する（ノード７９０）。その後、ＣＯＰＹ＃の数に達するまで、ＡＣＫメッセージを受信する度にＳＥＮＤメッセージを生成し下流のパイプラインステージに送信する処理を実行する（ノード７９２，７９４，７９０）。生成されたＳＥＮＤメッセージの数がＣＯＰＹ＃に達した後には、ＡＣＫメッセージの受信時、上流のパイプラインステージに対しＡＣＫメッセージを送信する（ノード７９４，７８８）。
【００８３】
図３３は、ＢＲ（分流部）エミュレーションモジュールを概略的に示すデータフローグラフである。すなわち、このモジュールは、図１における分流部（Ｂｒａｎｃｈ）１６０を模擬するものである。機能ブロックエミュレーションでは、パケット流情報（図２１）の宛先ＰＥ＃とパイプライン構成情報（図１９）とを参照することにより、パケットが送信されるべきモジュールを指し示すフラグ（ＦＬＡＧ）を取得する（ノード８００，８０２）。
【００８４】
そのフラグをＣＯＮＴＲＯＬ１メッセージとしてゲートロジックに通知するとともに、自身のＩＤｆをフラグに従って更新する（ノード８０４）。ＩＤｆを更新することで、図２６の階層において適切なモジュールにＰＡＣＫＥＴメッセージが転送される。次に、ＩＤｍを更新し、それをゲートロジックにＣＯＮＴＲＯＬ２メッセージとして送信するとともに、ＰＡＣＫＥＴメッセージを次の機能モジュールに送信する（ノード８０６）。
【００８５】
ゲートロジックでは、ＳＥＮＤメッセージを受信すると、ＣＯＮＴＲＯＬ２メッセージに示される新しいＩＤｍ（ＮＥＸＴＩＤｍ）にＩＤｍを更新し、ＣＯＮＴＲＯＬ１メッセージの送信先モジュール識別フラグに応じて分岐する（ノード８０８）。次に、フラグに示される送信先モジュールにＳＥＮＤメッセージを送信する（ノード８１０，８１２）。ゲートロジックがＡＣＫメッセージを受信したときには、上流のモジュールにＡＣＫメッセージが送信される（ノード８１４）。
【００８６】
エミュレータに入力ストリームが全て入力され、かつ、ＳＥＮＤ／ＰＡＣＫＥＴメッセージが存在しなくなったとき、エミュレーションは終了する。そして、前述したように、エミュレーション過程でとられたトレース情報（図２８）のＰＣ３００への送信（図１４のステップ９００）が全て完了した後、ＰＣ３００は、エミュレーション結果をディスプレイ上に表示する（図１４のステップ１０００）。
【００８７】
図３４は、ＰＣ３００によるエミュレーション結果表示処理（図１４のステップ１０００）の手順を示すフローチャートである。まず、ステップ１００２では、エミュレータから受信された情報を整数に変換し、所定のトレース情報表に格納する。次いで、ステップ１００４では、トレース情報表に含まれるＰＥ番号のリストを作成する。次いで、ステップ１００６では、ＰＥ番号リストからＰＥ番号を１個取り出してこれをｐとする。
【００８８】
次いで、ステップ１００８では、ｐのパイプライン占有率グラフを作成する。その詳細な処理手順は図３５に示されるとおりである。この図に示されるように、この処理は、タイムスタンプごとに、ｐの全ステージのうち、パケットが存在しているステージの個数をカウントし、パイプライン占有率を記録するものである。
【００８９】
次いで、ステップ１０１０では、ｐのパイプライン占有率グラフを表示する処理を行う。その詳細な処理手順は図３６に示されるとおりである。結果として表示されるグラフの例が図３７に示される。かくして、ユーザは、ＰＣのディスプレイ上に表示されたエミュレーション結果に基づいて、想定したデータ駆動プロセッサがターゲットプログラムを実行する際の性能を評価することが可能となる。
【００９０】
【発明の効果】
以上説明したように、本発明によれば、オーバヘッドを増大させることなく並列処理を可能とするエミュレーション手法を採用することでエミュレーション時間の短縮を図ったデータ駆動プロセッサのエミュレーションシステムが提供される。
【図面の簡単な説明】
【図１】データ駆動プロセッサの概略的構成を示すブロック図である。
【図２】（Ａ）はデータフロープログラム、（Ｂ）はその入力ストリーム、をそれぞれ例示する図である。
【図３】（Ａ）〜（Ｈ）は、図２（Ｂ）の入力ストリームに対応して入力される８個のパケットを示す図である。
【図４】発火制御部（ＦＣ）に接続される待合せメモリ（ＭＭ）の概略構成を示す図である。
【図５】（Ａ）〜（Ｄ）は、発火制御部（ＦＣ）から関数処理部（ＦＰ）へ転送されるパケットをそれぞれ例示する図である。
【図６】（Ａ）〜（Ｄ）は、関数処理部（ＦＰ）からプログラム記憶部（ＰＳ）へ転送されるパケットをそれぞれ例示する図である。
【図７】プログラム記憶部（ＰＳ）に接続される命令メモリ（ＩＭ）の概略構成を示す図である。
【図８】（Ａ）〜（Ｄ）は、プログラム記憶部（ＰＳ）から転送されるパケットをそれぞれ例示する図である。
【図９】ＰＥ内の各機能ブロックのパイプライン構成を示す図である。
【図１０】（Ａ）はＣ素子の回路図を例示し、（Ｂ）はその真理値表を示す図である。
【図１１】自己同期式転送制御機構（ＳＴＣＭ）がＳＥＮＤ信号及びＡＣＫ信号を転送するタイミングをデータフローグラフで模擬的に表した図である。
【図１２】（Ａ）〜（Ｃ）は、エラスティックパイプラインの評価モデルを説明するための図である。
【図１３】本発明によるデータ駆動プロセッサエミュレーションシステムの一実施形態を示すブロック図である。
【図１４】エミュレーションシステム全体の処理動作を概略的に示す図である。
【図１５】パーソナルコンピュータ（ＰＣ）によるエミュレーション情報生成処理の手順を示すフローチャートである。
【図１６】エミュレーション対象データ駆動プロセッサのパイプライン構成のＰＣ上での入力について説明するための図である。
【図１７】ＳＥＮＤ／ＡＣＫ遅延時間情報のテーブルを示す図である。
【図１８】ＳＥＮＤ／ＡＣＫ遅延時間情報の生成処理の手順を示すフローチャートである。
【図１９】パイプライン構成情報のテーブルを示す図である。
【図２０】パイプライン構成情報の生成処理の手順を示すフローチャートである。
【図２１】パケット流情報のテーブルを示す図である。
【図２２】パケット流情報の生成処理の手順を示すフローチャートである。
【図２３】入力ストリーム情報のテーブルを示す図である。
【図２４】実機のデータ駆動プロセッサ上で実現されるエミュレータの初期化動作を説明するための図である。
【図２５】エミュレータのエミュレーション動作の概要を説明するための図である。
【図２６】１個のＰＥに対するエミュレーションプログラムの全体構成を示すデータフローグラフである。
【図２７】ＳＴＣＭ（自己同期式転送制御機構）エミュレーションモジュールを概略的に示すデータフローグラフである。
【図２８】出力ストリーム情報のテーブルを示す図である。
【図２９】ＪＮ（合流部）エミュレーションモジュールを概略的に示すデータフローグラフである。
【図３０】ＦＣ（発火制御部）エミュレーションモジュールを概略的に示すデータフローグラフである。
【図３１】ＦＰ（関数処理部）エミュレーションモジュールを概略的に示すデータフローグラフである。
【図３２】ＰＳ（プログラム記憶部）エミュレーションモジュールを概略的に示すデータフローグラフである。
【図３３】ＢＲ（分流部）エミュレーションモジュールを概略的に示すデータフローグラフである。
【図３４】ＰＣによるエミュレーション結果表示処理の手順を示すフローチャートである。
【図３５】パイプライン占有率グラフの作成処理の手順を示すフローチャートである。
【図３６】パイプライン占有率グラフの表示処理の手順を示すフローチャートである。
【図３７】ディスプレイ上に表示されるパイプライン占有率グラフを例示する図である。
【符号の説明】
１００…データ駆動プロセッサ
１１０…ＰＥ（Ｐｒｏｃｅｓｓｉｎｇ　Ｅｌｅｍｅｎｔ）
１８０…相互接続網
１２０…合流部（Ｊｏｉｎｔ；ＪＮ）
１３０…発火制御部（Ｆｉｒｉｎｇ　Ｃｏｎｔｒｏｌ；ＦＣ）
１３２…待合せメモリ（ＭＭ）
１４０…関数処理部（Ｆｕｎｃｔｉｏｎａｌ　Ｐｒｏｃｅｓｓｏｒ；ＦＰ）
１４２…データメモリ（ＤＭ）
１５０…プログラム記憶部（Ｐｒｏｇｒａｍ　Ｓｔｏｒａｇｅ；ＰＳ）
１５２…命令メモリ（ＩＭ）
１６０…分流部（Ｂｒａｎｃｈ；ＢＲ）
２００…パイプラインステージ
２１０…データラッチ（ＤＬ）
２２０…論理回路（ＬＣ）
２３０…自己同期式転送制御機構（Ｓｅｌｆ−ｔｉｍｅｄ　Ｔｒａｎｓｆｅｒ　Ｃｏｎｔｒｏｌ　Ｍｅｃｈａｎｉｓｍ；ＳＴＣＭ）
２６０…ゲートロジック（Ｇａｔｅ　Ｌｏｇｉｃ；ＧＬ）
２４０，２４２…Ｃ素子（Ｃｏｉｎｃｉｄｅｎｃｅ　Ｅｌｅｍｅｎｔ）
２５０…遅延素子（Ｄｅｌａｙ　Ｅｌｅｍｅｎｔ）
３００…パーソナルコンピュータ（ＰＣ）
３１０…ＰＣ本体
３１２…中央処理装置（ＣＰＵ）
３１４…主記憶装置（ＭＳ）
３２０…ディスプレイ
３２２…キーボード
３２４…マウス
３３０…ハードディスク装置（外部記憶装置）
３５０…コンピュータネットワーク
【図１】
2004013602.tif 000003
【図２】
2004013602.tif 000004
【図３】
2004013602.tif 000005
【図４】
2004013602.tif 000006
【図５】
2004013602.tif 000007
【図６】
2004013602.tif 000008
【図７】
2004013602.tif 000009
【図８】
2004013602.tif 000010
【図９】
2004013602.tif 000011
【図１０】
2004013602.tif 000012
【図１１】
2004013602.tif 000013
【図１２】
2004013602.tif 000014
【図１３】
2004013602.tif 000015
【図１４】
2004013602.tif 000016
【図１５】
2004013602.tif 000017
【図１６】
2004013602.tif 000018
【図１７】
2004013602.tif 000019
【図１８】
2004013602.tif 000020
【図１９】
2004013602.tif 000021
【図２０】
2004013602.tif 000022
【図２１】
2004013602.tif 000023
【図２２】
2004013602.tif 000024
【図２３】
2004013602.tif 000025
【図２４】
2004013602.tif 000026
【図２５】
2004013602.tif 000027
【図２６】
2004013602.tif 000028
【図２７】
2004013602.tif 000029
【図２８】
2004013602.tif 000030
【図２９】
2004013602.tif 000031
【図３０】
2004013602.tif 000032
【図３１】
2004013602.tif 000033
【図３２】
2004013602.tif 000034
【図３３】
2004013602.tif 000035
【図３４】
2004013602.tif 000036
【図３５】
2004013602.tif 000037
【図３６】
2004013602.tif 000038
【図３７】
2004013602.tif 000039