(57)【要約】【課題】データ駆動型プロセッサのシミュレータを提供する。【解決手段】シミュレータは、模擬対象のデータ駆動型プロセッサ用のプログラムを、ソース及びデスティネーションオペランドのオペランド識別子を含む一連の命令からなる中間語に変換する解析手段と、各オペランドについて、オペランド識別子と、オペランドの値を管理するオペランド管理手段と、中間語の各命令から、発火条件に基づき発火可能な命令を特定する発火判定手段と、発火判定手段による特定後、特定された命令を実行し、実行した命令のデスティネーションオペランドのオペランド識別子及びその値をオペランド管理手段に通知する発火実行手段とを有する。【選択図】図１
2007094514.tif 000002
【特許請求の範囲】
【請求項１】
データ駆動型プロセッサのシミュレータであって、
模擬対象のデータ駆動型プロセッサ用のプログラムを、ソース及びデスティネーションオペランドのオペランド識別子を含む命令からなる中間語に変換する解析手段と、
各オペランドについて、オペランド識別子と、オペランドの値を管理するオペランド管理手段と、
中間語の各命令から、発火条件に基づき発火可能な命令である発火可能命令を特定する発火判定手段と、
発火判定手段による特定後、特定された命令を実行し、実行した命令のデスティネーションオペランドのオペランド識別子及びその値をオペランド管理手段に通知する発火実行手段と、
を有することを特徴とするシミュレータ。
【請求項２】
発火条件は、全ソースオペランドに値が設定され、デスティネーションオペランドに値が設定されていない命令であることを特徴とする請求項１に記載のシミュレータ。
【請求項３】
発火実行手段は、命令の実行後、実行した命令のソースオペランドのオペランド識別子もオペランド管理手段に通知し、
オペランド管理手段は、各オペランドについて、発火実行手段からのソースオペランドのオペランド識別子の通知に基づき、中間語の未実行命令のソースオペランドとして参照される回数である参照残回数を管理し、
発火条件は、全ソースオペランドに値が設定され、かつ、ソースオペランドの参照残回数の総てが０でない命令であることを特徴とする請求項１に記載のシミュレータ。
【請求項４】
発火判定手段は、参照残回数が０でないオペランドを、ソースオペランドとする命令に対してのみ発火条件に基づく判定を行うことを特徴とする請求項３に記載のシミュレータ。
【請求項５】
発火実行手段は、中間語の実行した命令に、実行済みを示す情報を付加し、
発火条件は、全ソースオペランドに値が設定され、実行済みを示す情報が付加されていない命令であることを特徴とする請求項１に記載のシミュレータ。
【請求項６】
発火判定手段は、発火可能命令を特定する情報を、発火キューに出力することにより発火可能命令の特定を行うことを特徴とする請求項１から５のいずれか１項に記載のシミュレータ。
【請求項７】
発火判定手段は、発火可能命令のうち最初に実行する命令を特定する情報を、発火キューに出力し、かつ、中間語の各発火可能命令に対して、次に実行させる発火可能命令を特定する情報を付加することにより発火可能命令の特定を行うことを特徴とする１から５のいずれか１項に記載のシミュレータ。
【請求項８】
コンピュータを、データ駆動型プロセッサのシミュレータとして機能させるプログラムであって、
コンピュータに、
模擬対象のデータ駆動型プロセッサ用のプログラムを、ソース及びデスティネーションオペランドのオペランド識別子を含む一連の命令からなる中間語に変換する解析機能と、
各オペランドについて、オペランド識別子と、オペランドの値を管理するオペランド管理機能と、
中間語の各命令から、発火条件に基づき発火可能な命令である発火可能命令を特定する発火判定機能と、
発火判定機能による特定後、特定された命令を実行し、実行した命令のデスティネーションオペランドのオペランド識別子及びその値をオペランド管理機能に通知する発火実行機能と、
を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ駆動型プロセッサのシミュレータに関する。
【背景技術】
【０００２】
データ駆動型の演算器を複数配置し、各演算器間の演算内容と、演算器間の接続をプログラムにより制御して所定の処理を実行するプロセッサが提案されている（例えば、非特許文献１参照）。データ駆動型とは、演算器に対する総ての入力データが揃った時点で、演算を実行（以後、総ての入力データが揃ったことによる演算の実行を、命令の発火、と呼ぶ。）し、演算結果を出力する方式をいう。
【０００３】
上述したデータ駆動型プロセッサは、データフローグラフで従属関係にある命令を、同時に実行することはできない。例えば、図１０（ａ）に示す命令列を、データ駆動型プロセッサで実行することを考える。ここで、ａｄｄは加算命令、ｍｕｌは乗算命令であり、各命令の後にはオペランドが続き、第１及び第２オペランドがソースオペランド、第３オペランドがデスティネーションオペランドであり、＃２は即値である。
【０００４】
図１０（ｂ）は、図１０（ａ）に示す命令列をデータフローグラフで表したものである。オペランドｃには、命令＃１が実行されて初めて値が設定されるため、命令＃２は、命令＃１が発火した後でないと発火することはできない。つまり、命令＃１に従属する命令＃２は、データ駆動型プロセッサにおいては、同時に発火することはない。
【０００５】
一方、あるプロセッサ上で動作するプログラムを開発するに当たり、そのプロセッサのコスト等により、総てのプログラマが実際のプロセッサを使用出来ない環境においては、そのプロセッサの動作を模擬するシミュレータが、プログラム開発に使用されており、データ駆動型プロセッサを模擬するシミュレータが望まれている。
【０００６】
【非特許文献１】デザインウェーブマガジン、ＣＱ出版社、２００４年８月号、ｐ．２４‐ｐ．２９
【発明の開示】
【発明が解決しようとする課題】
【０００７】
データ駆動型プロセッサのシミュレータ自体は、ノイマン型のコンピュータ上で実行されるため、与えられる命令列を逐次的に実行することになり、データ駆動型プロセッサのように複数の命令を完全に並列に、即ち、同時に実行することはできない。このため、実行サイクルという概念を導入する必要がある。ここで１実行サイクルとは、データ駆動型プロセッサにおいて同時に発火可能な命令を、データ駆動型プロセッサのシミュレータにおいて、逐次的に処理する期間をいう。即ち、データ駆動型プロセッサにおいて同時に発火可能な命令を、データ駆動型プロセッサのシミュレータは、同一実行サイクルにて実行する。
【０００８】
データ駆動型プロセッサのシミュレータにおいて、命令列の最初から最後まで順に発火可能か否かを判定し、発火可能なものを実行することを１実行サイクルとした場合、対象とするデータ駆動型プロセッサでは、同時に発火することはない命令が、シミュレータでは、同一実行サイクルで発火することが生じ得る。例えば、図１０（ａ）に示す命令＃１を実行すると、続く命令＃２のソースオペランドが総て揃うため同一実行サイクルで、命令＃２を実行することになる。また、既に実行した命令を、後の実行サイクルにおいて重複して実行しないように制御することも必要となる。
【０００９】
従って、本発明は、上記問題が生じないデータ駆動型プロセッサのシミュレータを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明におけるシミュレータによれば、
データ駆動型プロセッサのシミュレータであって、模擬対象のデータ駆動型プロセッサ用のプログラムを、ソース及びデスティネーションオペランドのオペランド識別子を含む命令からなる中間語に変換する解析手段と、各オペランドについて、オペランド識別子と、オペランドの値を管理するオペランド管理手段と、中間語の各命令から、発火条件に基づき発火可能な命令である発火可能命令を特定する発火判定手段と、発火判定手段による特定後、特定された命令を実行し、実行した命令のデスティネーションオペランドのオペランド識別子及びその値をオペランド管理手段に通知する発火実行手段とを有することを特徴とする。
【００１１】
本発明のシミュレータにおける他の実施形態によれば、
発火条件は、全ソースオペランドに値が設定され、デスティネーションオペランドに値が設定されていない命令であることも好ましい。
【００１２】
また、本発明のシミュレータにおける他の実施形態によれば、
発火実行手段は、命令の実行後、実行した命令のソースオペランドのオペランド識別子もオペランド管理手段に通知し、オペランド管理手段は、各オペランドについて、発火実行手段からのソースオペランドのオペランド識別子の通知に基づき、中間語の未実行命令のソースオペランドとして参照される回数である参照残回数を管理し、発火条件は、全ソースオペランドに値が設定され、かつ、ソースオペランドの参照残回数の総てが０でない命令であることも好ましい。
【００１３】
更に、本発明のシミュレータにおける他の実施形態によれば、
発火判定手段は、参照残回数が０でないオペランドを、ソースオペランドとする命令に対してのみ発火条件に基づく判定を行うことも好ましい。
【００１４】
更に、本発明のシミュレータにおける他の実施形態によれば、
発火実行手段は、中間語の実行した命令に、実行済みを示す情報を付加し、
発火条件は、全ソースオペランドに値が設定され、実行済みを示す情報が付加されていない命令であることも好ましい。
【００１５】
更に、本発明のシミュレータにおける他の実施形態によれば、
発火判定手段は、発火可能命令を特定する情報を、発火キューに出力することにより発火可能命令の特定を行うことも好ましい。
【００１６】
更に、本発明のシミュレータにおける他の実施形態によれば、
発火判定手段は、発火可能命令のうち最初に実行する命令を特定する情報を、発火キューに出力し、かつ、中間語の各発火可能命令に対して、次に実行させる発火可能命令を特定する情報を付加することにより発火可能命令の特定を行うことも好ましい。
【００１７】
本発明におけるプログラムによれば、コンピュータを、前記シミュレータとして機能させることを特徴とする。
【発明の効果】
【００１８】
オペランド管理部手段が管理するオペランドへの値の設定の有無に基づき、発火判手段が発火可能な命令を特定し、発火判定手段による特定後に発火実行手段が実行することで、模擬対象であるデータ駆動型プロセッサでは同時に実行されない命令が、同一実行サイクルで実行されることはない。また、デスティネーションオペランドへの値の設定の有無、ソースオペランドの参照残回数又は中間語の命令の実行済みを示す情報のいずれかを発火条件に含めることで既に実行した命令が重複して実行されることもない。従って、対象であるデータ駆動型プロセッサでの動作を正確に模擬することができる。
【００１９】
発火キューを用いることで、発火実行手段は、中間語の実行すべき命令が記述された位置に素早くアクセスすることができる。また、中間語の各発火可能命令に対して、次に実行させる発火可能命令を特定する情報を付加する構成では、発火キューのためのメモリ領域を必要最低限とした上で、発火可能命令に素早くアクセスすることができる。
【００２０】
更に、参照残回数が０でないオペランドをソースオペランドとする命令に対してのみ発火条件に基づく判定を行うことで、中間語の全命令を判定する必要がなくなり発火可能命令の判定に要する時間を短縮することができる。
【発明を実施するための最良の形態】
【００２１】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。
【００２２】
（第１実施形態）  図１は、本発明によるシミュレータ１のブロック図である。図１によると、シミュレータ１は、制御部１０と、解析部１１と、発火判定部１２と、発火実行部１３と、オペランド管理部１４とを備えている。
【００２３】
解析部１１は、模擬対象であるデータ駆動型プロセッサ用のプログラムであるソース２を入力として中間語３を出力すると共に、中間語３で使用される各オペランドのオペランド識別子を、オペランド管理部１４に通知する。また、即値オペランドについてはその値もオペランド管理部１４に通知する。ソース２の形式は、アセンブラ言語、高級プログラム言語、実行可能オブジェクト等その形式は問わない。
【００２４】
発火判定部１２は、制御部１０から動作開始指示を受けた場合、中間語３の各命令について、発火条件に基づき、発火可能であるか否かを判定し、発火可能命令については、その命令識別子を、発火キュー４に追加する。
【００２５】
発火実行部１３は、制御部１０から動作開始指示を受けた場合、発火キュー４を参照して、発火キュー４に含まれる命令識別子の命令を、中間語３を参照して実行し、オペランド管理部１４に、実行した命令のデスティネーションオペランドのオペランド識別子と、デスティネーションオペランドに設定する値を通知する。また、実行した命令の命令識別子を発火キュー４から削除する。
【００２６】
制御部１０は、発火判定部１２による発火可能命令の判定と、その後の発火実行部１３による発火可能命令の実行を１実行サイクルとして、総ての命令が実行されるまで、発火判定部１２及び発火実行部１３に交互に動作開始指示を行う。
【００２７】
オペランド管理部１４は、中間語３で使用される各オペランドについて、オペランド識別子と、値の設定有無及び値が設定されている場合はその値を管理し、発火実行部１３から通知されたオペランド識別子のオペランドの値を、通知された値に更新する。
【００２８】
続いて、シミュレータ１の動作をより具体的に説明する。図２は、シミュレータ１へ入力するソース２を示す図である。図２（ａ）のアセンブラ言語において、第１及び第２オペランドはソースオペランドであり、第３オペランドはデスティネーションオペランドである。命令“ｉｎｉｔ”は変数へ即値を初期設定する命令であり、命令“ｍｕｌ”、“ａｄｄ”、“ｓｕｂ”は、それぞれ、乗算、加算、減算命令であり、ソース及びデスティネーションオペランドのアルファベットは変数であり、“＃”＋“数字”は即値である。図２（ｂ）は、図２（ａ）に示すアセンブラ言語で示されたソース２のデータフローグラフである。
【００２９】
図３は、図２（ａ）に示すソース２を入力としたときに、解析部１１が出力する中間語３であり、図２（ａ）に示すソース２の第ｋ行（ｋは、１から８の整数）の命令と、図３に示す中間語３の第ｋ行の命令が、それぞれ対応している。ここで、符号２０１は、命令識別子フィールドであり、符号２０２は命令表示フィールドであり、符号２０３及び２０４は、ソースオペランドフィールドであり、符号２０５は、デスティネーションオペランドフィールドである。命令識別子フィールド２０１は各命令の命令識別子を格納し、命令表示フィールドは命令内容を格納し、ソースオペランドフィールド２０３及び２０４並びにデスティネーションオペランドフィールド２０５は、オペランド識別子を格納する。但し、オペランドがｎｕｌｌ値である場合にはその旨を示す値が設定される。
【００３０】
図５（ａ）は、解析部１１が図３に示す中間語３を出力した段階における、オペランド管理部１４での各オペランドの管理状態を示す図であり、解析部１１からの通知により作成されている。図５（ａ）の第１行は、オペランド識別子であり、第２行はオペランドの値である。
【００３１】
図４は、発火キュー４を示す図であり、図４（ａ）、（ｂ）、（ｃ）、（ｄ）は、それぞれ、第１、第２、第３、第４実行サイクルで、発火判定部１２の処理が終了した時点における発火キュー４の状態を示している。また、図５は、オペランド管理部１４でのオペランド管理状態を示す図であり、図５（ａ）は初期状態を、図５（ｂ）、（ｃ）、（ｄ）、（ｅ）は、それぞれ、第１、第２、第３、第４実行サイクル終了時の状態を示している。以後、各実行サイクルでの処理について詳細に説明する。１実行サイクルは、制御部１０による発火判定部１２への動作開始指示で始まり、発火判定部１２での処理終了後に、制御部１０による発火実行部１３への動作開始指示を経て、発火実行部１３での処理終了により終了する。また、以後の説明において、各オペランド及び命令は、その識別子で表現する。即ち、オペランド識別子がＰａであるオペランドを、単にオペランドＰａと呼び、命令識別子がＡ１である命令を、単に命令Ａ１と呼ぶ。
【００３２】
（第１実行サイクル）  発火判定部１２は、中間語３の全命令の中から、発火条件に基づき発火可能命令を探索して発火可能命令を特定し、発火可能命令の命令識別子を発火キュー４に出力する。発火条件は、未実行の命令のうち全ソースオペランドに値が設定されている命令であり、未実行の命令は、デスティネーションオペランドに値が設定されていない命令である。
【００３３】
図５（ａ）に示す様に、初期状態でデータが設定されているオペランドは、オペランドＰｉ、Ｐｊ、Ｐｋであるため、中間語３の中で全ソースオペランドにデータが設定されているのは命令Ａ１、Ａ２、Ａ４である。また、命令Ａ１、Ａ２、Ａ４のデスティネーションオペランドであるオペランドＰａ、Ｐｂ、Ｐｃにはいずれも値が設定されていないため、命令Ａ１、Ａ２、Ａ４は、いずれも発火条件を満たす。よって、発火判定部１２の処理終了時点での発火キュー４は、図４（ａ）に示す通りとなる。
【００３４】
発火実行部１３は、発火キュー４に含まれる命令識別子で指定される命令を中間語３から取得して実行する。実行によりデスティネーションオペランドに設定する値を、デスティネーションオペランドのオペランド識別子と共にオペランド管理部１４に通知する。オペランド管理部１４は、発火実行部１３から通知されたオペランド識別子に、通知された値を設定する。図５（ｂ）に第１実行サイクル終了時の、オペランド管理部１４でのオペランドの管理状態を示す。また、発火実行部１３は、実行した命令を発火キュー４から削除する。
【００３５】
尚、第１実行サイクルでは、例えば、変数に初期値を代入する“ｉｎｉｔ”命令の様に、初期設定を行う命令のみが発火可能であるため、オペランド管理部１４では即値オペランド等を管理せず、第１実行サイクルにおいて、発火判定部１２は初期設定を行う命令を探索して発火キュー４を出力する構成とすることも可能である。
【００３６】
（第２実行サイクル）  図５（ｂ）に示す様に、第２実行サイクル開始時点でデータが設定されているのは、オペランドＰａ、Ｐｂ、Ｐｃ、Ｐｉ、Ｐｊ、Ｐｋであるため、中間語３のうち、全ソースオペランドにデータが設定されているのは、命令Ａ１、Ａ２、Ａ３、Ａ４、Ａ６である。このうち、命令Ａ１、Ａ２、Ａ４のデスティネーションオペランドであるオペランドＰａ、Ｐｂ、Ｐｃには値が設定されているため、命令Ａ１、Ａ２、Ａ４は発火条件を満たさない。しかし、命令Ａ３、Ａ６のデスティネーションオペランドであるオペランドＰｅ、Ｐｄにはいずれも値が設定されていないため、命令Ａ３、Ａ６は、いずれも発火条件を満たす。よって、発火判定部１２の処理終了時点での発火キュー４は、図４（ｂ）に示す通りとなる。
【００３７】
発火実行部１３は、発火キュー４に含まれる命令識別子で特定される命令を中間語３から取得して実行し、デスティネーションオペランドのオペランド識別子と、設定する値をオペランド管理部１４に通知する。図５（ｃ）に第２実行サイクル終了時の、オペランド管理部１４でのオペランドの管理状態を示す。また、発火実行部１３は、実行した命令を発火キュー４から削除する。
【００３８】
（第３実行サイクル）  図５（ｃ）に示す様に、第３実行サイクル開始時点でデータが設定されているのはオペランドＰａ、Ｐｂ、Ｐｃ、Ｐｄ、Ｐｅ、Ｐｉ、Ｐｊ、Ｐｋであるため、中間語３のうち、全ソースオペランドにデータが設定されているのは、命令Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７である。このうち、デスティネーションオペランドに値が設定されていないのは、デスティネーションオペランドがオペランドＰｆ、Ｐｇである命令Ａ５、Ａ７のみである。よって、発火判定部１２の処理終了時点での発火キュー４は、図４（ｃ）に示す通りとなる。
【００３９】
発火実行部１３は、発火キュー４に含まれる命令識別子で特定される命令を中間語３から取得して実行し、デスティネーションオペランドのオペランド識別子と、設定する値をオペランド管理部１４に通知する。図５（ｄ）に第３実行サイクル終了時の、オペランド管理部１４でのオペランドの管理状態を示す。また、発火実行部１３は、実行した命令を発火キュー４から削除する。
【００４０】
（第４実行サイクル）  図５（ｄ）に示す様に、第４実行サイクル開始時点でデータが設定されているオペランドは、Ｐａ、Ｐｂ、Ｐｃ、Ｐｄ、Ｐｅ、Ｐｆ、Ｐｇ、Ｐｉ、Ｐｊ、Ｐｋであるため、中間語３のうち、全ソースオペランドにデータが設定されているのは、命令Ａ１、Ａ２、Ａ３、Ａ４、Ａ５、Ａ６、Ａ７、Ａ８である。このうち、デスティネーションオペランドに値が設定されていないのは、デスティネーションオペランドがオペランドＰｈである命令Ａ８のみである。よって、発火判定部１２の処理終了時点での発火キュー４は、図４（ｄ）に示す通りとなる。
【００４１】
発火実行部１３は、発火キュー４に含まれる命令識別子で特定される命令を中間語３から取得して実行し、デスティネーションオペランドのオペランド識別子と、設定する値をオペランド管理部１４に通知する。図５（ｅ）に第４実行サイクル終了時の、オペランド管理部１４でのオペランドの管理状態を示す。また、発火実行部１３は、実行した命令を発火キュー４から削除する。
【００４２】
図６は、発火判定部１２での処理フロー図である。制御部１０からの動作開始指示に基づき、中間語３から未判定である命令を１つ選択する（Ｓ６１）。発火条件に基づき選択した命令が発火可能であるか否かを判定し（Ｓ６２）、発火可能である場合には選択した命令の命令識別子を発火キュー４に追加する（Ｓ６３）。以上の処理を中間語３の全命令に対して行う（Ｓ６４）。
【００４３】
以上説明したように、オペランド管理部１４が管理するオペランドへの値の設定の有無に基づき、発火判定部１２が、中間語３を探索して各実行サイクルにおいて発火可能な命令を特定し、発火可能な命令の命令識別子を発火キュー４に出力することでデータ駆動型プロセッサの動作を模擬する。本発明によるシミュレータ１では、データ駆動型プロセッサでは同時に発火しない命令が、同一実行サイクルで実行されることはなく、また、既に実行した命令が重複して実行されることもなく、正確にデータ駆動型プロセッサでの動作を模擬する。また、発火キュー４により発火実行部１３に発火可能命令を通知することで、発火実行部１３は、中間語３の実行すべき命令が記述された位置に素早くアクセスすることができる。
【００４４】
（第２実施形態）  本発明の第２実施形態によるシミュレータ１のブロック図は第１実施形態と同じく図１に示す通りである。以後の各実施形態の説明においては、第１実施形態との違いについて説明する。
【００４５】
第２実施形態において、オペランド管理部１４は、各オペランドについて、中間語３の未実行命令のソースオペランドとして参照される回数である、参照残回数を管理する。各オペランドの参照残回数の初期値は、解析部１１が、中間語３を出力するときに、オペランド管理部１４に対して通知する。
【００４６】
図７（ａ）は、解析部１１が図３に示す中間語３を出力した段階における、オペランド管理部１４での各オペランドの管理状態を示す図であり、解析部１１からの通知により作成されている。図７（ａ）の第１行は、オペランド識別子であり、第２行はオペランドの値であり、第３行は参照残回数である。
【００４７】
発火実行部１３は、発火可能命令を実行後、ソースオペランドのオペランド識別子を、その参照回数と共にオペランド管理部１４に通知し、オペランド管理部１４は、発火実行部１３からの通知に基づきオペランド識別子の参照残回数を更新する。図７の（ｂ）、（ｃ）、（ｄ）、（ｅ）は、第１実施形態で説明した図３の中間語３を実行する際の、それぞれ、第１、第２、第３、第４実行サイクル終了時の状態を示している。
【００４８】
本実施形態において、発火判定部１２は、ソースオペランドの参照残回数が総て０で無い命令を未実行である命令と判定することができる。従って、発火条件を、全ソースオペランドに値が設定され、かつ、ソースオペランドの参照回数の総てが０でない命令とすることができる。
【００４９】
図８は、本実施形態における発火判定部１２での処理フロー図である。ここで、有効オペランドとは、オペランド管理部１４が管理するオペランドのうち参照残回数が０でないオペランドをいう。
【００５０】
制御部１０からの動作開始指示に基づき、未判定の有効オペランドを１つ選択し（Ｓ８１）、選択した有効オペランドをソースオペランドとする命令に対してのみ発火条件を判定して、発火条件を満たす場合には発火キュー４にその命令識別子を追加する（Ｓ８２〜Ｓ８５）。判定する命令の数は、参照残回数により発火判定部１２は認識できる。以上の処理を全有効オペランドに対して実施する（Ｓ８６）。図７に示す処理は、有効オペランド数が、全オペランド数に対して少ない場合には、図６に示す処理より発火判定部１２での判定処理を短くすることができる。尚、図６に示す処理又は図８に示す処理のみを行うことも、まず、図６で示す処理を使用し、全オペランド数に対する有効オペランド数の割合などにより、図８で示す処理に切り替える構成とすることも可能である。
【００５１】
本実施形態においては、発火可能命令の判定には、デスティネーションオペランドを確認する必要がなく、有効オペランドを基準として発火可能命令を探索することで、又は、中間語３の命令を順次探索していく方法と有効オペランドを基準に探索していく方法を、有効オペランドの数やその全オペランド数に対する割合に基づき切り替えることで、発火可能命令の判定に要する時間を短縮することができる。
【００５２】
（第３実施形態）  本発明の第３実施形態によるシミュレータ１のブロック図は第１実施形態と同じく図１に示す通りである。本実施形態においては、中間語３に次発火ポインタフィールド２０６を設け、発火可能命令の次発火ポインタフィールド２０６に、次に実行する他の発火可能命令の命令識別子を設定する。また、発火キュー４にはその実行サイクルにおいて一番初めに実行する発火可能命令の命令識別子を１つだけ設定する。
【００５３】
図９は、第３実施形態での中間語３であり、第１実施形態で説明した第１実行サイクルで発火判定部１２が、発火可能命令を中間語３に設定した状態を示している。第１実行サイクルでは、命令Ａ１、Ａ２及びＡ４が実行可能であり、よって、発火判定部１２は、最初に実行させる命令の命令識別子、ここではＡ１を発火キュー４に設定し、命令Ａ１の次発火ポインタフィールド２０６に、命令Ａ１の次に実行する命令Ａ２を設定し、命令Ａ２の次発火ポインタフィールド２０６に、命令Ａ２の次に実行する命令Ａ４を設定する。発火実行部１３は、発火キュー４を参照してまず命令Ａ１を実行し、続いて、命令Ａ１の次発火ポインタフィールド２０６で指定されている命令Ａ２を実行し、最後に、命令Ａ２の次発火ポインタフィールド２０６で指定されている命令Ａ４を実行する。
【００５４】
第３実施形態においては、発火キューのために、命令識別子を１つ保存するメモリ領域のみ確保すれば良いという利点がある。
【００５５】
また、上述した実施形態において、発火判定部１２は、デスティネーションオペランドの値の設定の有無又はソースオペランドの参照残回数により未実行命令を判定していたが、中間語３に実行済フィールドを設け、発火判定部１２が中間語３の各命令の実行済みフフィールドにより未実行命令を判定する構成とすることも可能である。この場合、発火実行部１３が命令実行の際に、実行済みフィールドに実行済みを示す情報を設定し、発火条件を、全ソースオペランドに値が設定され、かつ、実行済みフィールドに実行済みを示す情報が設定されていない命令とすることができる。
【００５６】
尚、本発明によるシミュレータ１は、コンピュータを上記シミュレータとして動作せせるプログラムにより実現可能である。
【図面の簡単な説明】
【００５７】
【図１】本発明によるシミュレータのブロック図である。
【図２】シミュレータへ入力するソースを示す図である。
【図３】解析部が出力する中間語を示す図である。
【図４】発火キューを示す図である。
【図５】各実行サイクル終了時のオペランド管理状態を示す図である。
【図６】発火判定部での処理フロー図である。
【図７】第２実施形態における各実行サイクル終了時のオペランド管理状態を示す図である。
【図８】第２実施形態における発火判定部での処理フロー図である。
【図９】第３実施形態での中間語を示す図である。
【図１０】データ駆動型プロセッサの動作を説明する図である。
【符号の説明】
【００５８】
１  シミュレータ
２  ソース
３  中間語
４  発火キュー
１０  制御部
１１  解析部
１２  発火判定部
１３  発火実行部
１４  オペランド管理部
２０１  命令識別子フィールド
２０２  命令表示フィールド
２０３、２０４  ソースオペランドフィールド
２０５  デスティネーションオペランドフィールド
２０６  次発火ポインタフィールド
【図１】
2007094514.tif 000003
【図２】
2007094514.tif 000004
【図３】
2007094514.tif 000005
【図４】
2007094514.tif 000006
【図５】
2007094514.tif 000007
【図６】
2007094514.tif 000008
【図７】
2007094514.tif 000009
【図８】
2007094514.tif 000010
【図９】
2007094514.tif 000011
【図１０】
2007094514.tif 000012