(57)【要約】【課題】シーケンス処理はハードウェア構成により制限されてしまう。【解決手段】抽出部１０は、所定のソースプログラムから、それぞれ意味的または機能的にまとまった単位演算処理を実行する複数の単位プログラムを抽出する。解析部１４は、ソースプログラムを解析して、各単位プログラムごとに次に実行すべき単位プログラムを特定する。追加処理生成部１８は、実行順序保持部１６に保持される識別情報を参照し、各単位プログラムごとに次に実行すべき単位プログラムを特定するためのデータまたはプログラムを生成する。実行プログラム生成部２０は、追加処理生成部１８により保持される、それぞれ対応する単位プログラムに追加して一連の実行プログラムを生成する。【選択図】図１
2009187478.tif 000002
【特許請求の範囲】
【請求項１】
所定のソースプログラムから、それぞれ意味的または機能的にまとまった単位演算処理を実行する複数の単位プログラムを抽出する抽出部と、
前記抽出部により抽出された複数の単位プログラムを保持する単位プログラム保持部と、
前記ソースプログラムを解析して、各単位プログラムごとに次に実行すべき単位プログラムを特定する解析部と、
前記解析部により特定された、次に実行すべき単位プログラムの識別情報を保持する実行順序保持部と、
前記実行順序保持部に保持される識別情報を参照し、各単位プログラムごとに次に実行すべき単位プログラムを特定するためのデータまたはプログラムを生成する第１生成部と、
前記第１生成部により生成されたデータまたはプログラムを、前記単位プログラム保持部により保持される、それぞれ対応する単位プログラムに追加して一連の実行プログラムを生成する第２生成部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記解析部は、次に実行する可能性のある単位プログラムが複数ある単位プログラムについて、次に実行する可能性のある複数の単位プログラムの識別情報と実行する単位プログラムを決定するための条件を前記実行順序保持部に登録し、
前記第１生成部は、前記識別情報と前記条件を参照し、次に実行すべき単位プログラムを特定するためのデータまたはプログラムを生成することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記解析部は、前記ソースプログラム中で複数回出現する単位プログラムについて、その出現位置ごとに次に実行すべき単位プログラムの識別情報、または次に実行する可能性のある複数の単位プログラムの識別情報と実行する単位プログラムを決定するための条件を前記実行順序保持部に登録し、
前記第１生成部は、各単位プログラムを特定するためのデータまたはプログラムを生成するとき、少なくとも前記複数回出現する単位プログラムについて、その出現位置を特定するための情報を付することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第１生成部は、前記複数回出現する単位プログラムについて、その出現位置を特定するための情報によって次に実行すべき単位プログラムを特定するデータまたはプログラムを生成することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第２生成部により生成された実行プログラムから、所定のリコンフィギュラブル回路に所期の回路を構成するための設定データを生成する第３生成部をさらに備え、
前記第３生成部は、前記第２生成部により生成された、前記複数の単位プログラムに対応する複数の実行プログラムをデータフローグラフにそれぞれ変換し、その後、各データフローグラフを設定データに変換することを特徴とする請求項１から４のいずれかに記載の情報処理装置。
【請求項６】
前記第２生成部により生成された実行プログラムから、所定のリコンフィギュラブル回路に所期の回路を構成するための設定データを生成する第３生成部をさらに備え、
前記第３生成部は、各実行プログラムの切替タイミングに対応するタイミングで、次に実行すべき設定データを特定するためのパラメータが前記リコンフィギュラブル回路から出力されるよう、前記設定データを生成することを特徴とする請求項１から４のいずれかに記載の情報処理装置。
【請求項７】
前記第３生成部は、各データフローグラフの切替タイミングに対応するタイミングで、次に実行すべきデータフローグラフを特定するためのパラメータが前記リコンフィギュラブル回路から出力されるよう、前記実行プログラムを前記データフローグラフに変換することを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記第３生成部は、前記リコンフィギュラブル回路に前記パラメータを生成させるための処理と、そのパラメータを前記リコンフィギュラブル回路から出力させる処理との間に、時間的間隔を設ける設定データまたはデータフローグラフを生成することを特徴とする請求項６または７に記載の情報処理装置。
【請求項９】
所定のソースプログラムから、それぞれ意味的または機能的にまとまった単位演算処理を実行する複数の単位プログラムを抽出部により抽出するステップと、
前記抽出部により抽出された複数の単位プログラムを単位プログラム保持部に保持するステップと、
前記ソースプログラムを解析して、各単位プログラムごとに次に実行すべき単位プログラムを解析部により特定するステップと、
前記解析部により特定された、次に実行すべき単位プログラムの識別情報を実行順序保持部に保持するステップと、
前記実行順序保持部に保持される識別情報を参照し、各単位プログラムごとに次に実行すべき単位プログラムを特定するためのデータまたはプログラムを第１生成部により生成するステップと、
前記第１生成部により生成されたデータまたはプログラムを、前記単位プログラム保持部により保持される、それぞれ対応する単位プログラムに追加して一連の実行プログラムを第２生成部ににより生成するステップと、
を備えることを特徴とする情報処理方法。
【請求項１０】
請求項５から８のいずれかに記載の情報処理装置により生成された設定データを保持する設定データ保持部と、
前記設定データ保持部から前記設定データが供給される、機能の変更が可能なリコンフィギュラブル回路と、
を備えることを特徴とするプロセッサ。
【請求項１１】
機能の変更が可能なリコンフィギュラブル回路と、
前記リコンフィギュラブル回路に所期の回路を構成するための設定データを前記リコンフィギュラブル回路に供給する設定データ保持部と、を備え、
前記リコンフィギュラブル回路は、前記設定データ保持部に保持される設定データの、アドレスまたはアドレスに置換可能な信号を含む選択信号を出力することを特徴とするプロセッサ。
【請求項１２】
前記設定データに基づいて所定の演算を実行する演算部と、
前記演算部から単位演算処理ごとに出力される、次に実行すべき単位演算処理を特定するためのパラメータを受け、そのパラメータに基づき前記選択信号を生成する選択信号生成部と、を含み、
前記パラメータは、前記設定データ保持部に保持される設定データの、アドレスまたはアドレスに置換可能な信号を含むことを特徴とする請求項１１に記載のプロセッサ。
【請求項１３】
前記パラメータは、前記演算部から直近に出力された一つが保持されることを特徴とする請求項１１または１２に記載のプロセッサ。
【請求項１４】
前記リコンフィギュラブル回路は、
前記演算部から出力される演算結果を一時保持する出力データ保持部をさらに備え、
前記出力データ保持部は、前記演算部から出力される一種類以上のパラメータを、パラメータごとに一つ保持する領域を有することを特徴とする請求項１２または１３に記載のプロセッサ。
【請求項１５】
前記選択信号生成部は、前記パラメータに基づき、次に実行すべき単位演算処理の、前記設定データ保持部の読み出しアドレスを生成することを特徴とする請求項１２から１４のいずれかに記載のプロセッサ。
【請求項１６】
前記演算部は、前記パラメータに基づいて、次に前記選択信号生成部に出力すべきパラメータを生成することを特徴とする請求項１２から１５のいずれかに記載のプロセッサ。
【請求項１７】
前記選択信号生成部から前記選択信号が出力されるとき、その選択信号で指定される、前記設定データ保持部の設定データを選択し、それ以外のとき、所定の順番にしたがい前記設定データ保持部の設定データを選択するシーケンサ装置をさらに備えることを特徴とする請求項１１から１６のいずれかに記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースプログラムをプロセッサが実行可能な、実行プログラムまたは設定データに変換するための情報処理装置、情報処理方法およびプロセッサに関する。
【背景技術】
【０００２】
プロセッサで実行されるべきプログラムは、ある処理の演算結果に基づいて次の処理を決定または選択する処理（本明細書では、適宜、シーケンス処理という）を有している。たとえば、ｉｆ文が該当する。シーケンス処理を実現するための手法には様々なものがある。
【０００３】
たとえば、ＣＰＵの多くに用いられているスタックベースのシーケンス処理では次のように処理される。すなわち、第１サブルーチンを呼び出す場合、戻りアドレスをメモリ内のスタック領域に格納してから第１サブルーチンにジャンプする。そして、第１サブルーチンが終了すると、当該スタック領域から戻りアドレスを取り出すことによって元の処理に戻る。第１サブルーチンから別の第２サブルーチンを呼び出す場合、第１サブルーチンの戻りアドレスをさらにスタック領域に格納する。そして、第２サブルーチンが終了するとスタック領域に最後に格納されたアドレスに戻ることにより第１サブルーチンに戻る。
【０００４】
特許文献１は再構成可能演算装置を開示する。この再構成可能演算装置は、演算を行う複数の演算器ユニットから構成される演算器群が、シーケンサによって制御される。シーケンサは演算器群の状態を決める設定情報を予め複数保持しており、演算器群による演算結果に応じて設定情報を切り替え、演算器群の状態を再構成する。
【特許文献１】特開２００６−１１８２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述したスタックベースのシーケンス処理では、サブルーチンの数がスタック領域の容量を超えるようなプログラムは処理できない。すなわち、シーケンス処理がハードウェア構成、ここではメモリの構成により制限されてしまう。
【０００６】
本発明はこうした状況に鑑みなされたものであり、その目的は、ハードウェア構成に依存せずにシーケンス処理を実現することができる情報処理装置、情報処理方法およびプロセッサを提供することにある。
【課題を解決するための手段】
【０００７】
本発明のある態様の情報処理装置は、所定のソースプログラムから、それぞれ意味的または機能的にまとまった単位演算処理を実行する複数の単位プログラムを抽出する抽出部と、抽出部により抽出された複数の単位プログラムを保持する単位プログラム保持部と、ソースプログラムを解析して、各単位プログラムごとに次に実行すべき単位プログラムを特定する解析部と、解析部により特定された、次に実行すべき単位プログラムの識別情報を保持する実行順序保持部と、実行順序保持部に保持される識別情報を参照し、各単位プログラムごとに次に実行すべき単位プログラムを特定するためのデータまたはプログラムを生成する第１生成部と、第１生成部により生成されたデータまたはプログラムを、単位プログラム保持部により保持される、それぞれ対応する単位プログラムに追加して一連の実行プログラムを生成する第２生成部と、を備える。
【０００８】
本発明のさらに別の態様は、プロセッサである。このプロセッサは、情報処理装置により生成された設定データを保持する設定データ保持部と、設定データ保持部から設定データが供給される、機能の変更が可能なリコンフィギュラブル回路と、を備える。
【０００９】
本発明のさらに別の態様もまた、プロセッサである。このプロセッサは、機能の変更が可能なリコンフィギュラブル回路と、機能の変更が可能なリコンフィギュラブル回路と、リコンフィギュラブル回路に所期の回路を構成するための設定データをリコンフィギュラブル回路に供給する設定データ保持部と、を備える。リコンフィギュラブル回路は、設定データ保持部に保持される設定データの、アドレスまたはアドレスに置換可能な信号を含む選択信号を出力する。
【００１０】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によれば、ハードウェア構成に依存せずにシーケンス処理を実現することができる。
【発明を実施するための最良の形態】
【００１２】
図１は、本発明の実施の形態に係る情報処理装置１００の構成を示すブロック図である。情報処理装置１００は、ユーザにより生成されたソースプログラムをプロセッサが実行可能な実行プログラムまたは設定データにコンパイルする装置である。ソースプログラムは、多くの場合、Ｃ言語などの高級プログラム言語で記述される。本実施の形態に係る情報処理装置１００は、リコンフィギュラブル回路を搭載したプロセッサに設定すべき設定データの生成に適しているが、そのタイプのプロセッサに限定されるものではない。
【００１３】
情報処理装置１００は、抽出部１０、単位プログラム保持部１２、解析部１４、実行順序保持部１６、追加処理生成部１８および実行プログラム生成部２０を備える。
これらの構成は、ハードウェア的には、任意のコンピュータのＣＰＵ、メモリ、その他のＬＳＩで実現でき、ソフトウェア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組み合わせによっていろいろな形で実現できることは、当業者には理解されるところである。
【００１４】
抽出部１０は、所定のソースプログラムから、それぞれ意味的または機能的にまとまった単位演算処理を実行する複数の単位プログラムを抽出する。単位演算処理の一例として、サブルーチンまたは関数などが該当する。抽出部１０は、ソースプログラム中の、当該複数の単位演算処理の実行順序を決定または選択するためのシーケンス処理に関する部分は抽出しない。抽出部１０は、ソースプログラム全体をコンパイルする場合、ソースプログラム中の、すべての単位演算処理を抽出する必要がある。
【００１５】
単位プログラム保持部１２は、抽出部１０により抽出された複数の単位プログラムを保持する。実行順序保持部１６は、解析部１４により特定された、各単位プログラムごとに次に実行すべき単位プログラムの識別情報を保持する。
【００１６】
解析部１４は、ソースプログラムを解析して、各単位プログラムごとに次に実行すべき単位プログラムを特定し、実行順序保持部１６に登録する。具体的には、ソースプログラム中のシーケンス処理に関する部分を解析して、次に実行すべき単位プログラムを特定する。
【００１７】
解析部１４は、次に実行する可能性のある単位プログラムが複数ある単位プログラムについて、次に実行する可能性のある複数の単位プログラムの識別情報と実行する単位プログラムを決定するための条件を実行順序保持部１６に登録する。また、解析部１４は、ソースプログラム中で複数回出現する単位プログラムについて、その出現位置ごとに次に実行すべき単位プログラムの識別情報、または次に実行する可能性のある複数の単位プログラムの識別情報と実行する単位プログラムを決定するための条件を実行順序保持部１６に登録する。
【００１８】
追加処理生成部１８は、実行順序保持部１６に保持される識別情報を参照し、各単位プログラムごとに次に実行すべき単位プログラムを特定するためのデータまたはプログラムを生成する。実行順序保持部１６に上記条件も登録される場合、その条件も参照する。追加処理生成部１８は、各単位プログラムを特定するためのデータまたはプログラムを生成するとき、少なくとも上記複数回出現する単位プログラムについて、その出現位置を特定するための情報を付す。追加処理生成部１８は、複数回出現する単位プログラムについて、その出現位置を特定するための情報によって次に実行すべき単位プログラムを特定するデータまたはプログラムを生成すると捉えることもできる。図４以降で後述する例では、当該出現位置を特定するための情報として、後述するシーケンステーブル内で管理される「ｓｔａｔｅ」の値を付す。一回だけ出現する単位プログラムについては、その情報を付しても付さなくてもよい。
【００１９】
実行プログラム生成部２０は、追加処理生成部１８により生成されたデータまたはプログラムを、単位プログラム保持部１２により保持される、それぞれ対応する単位プログラムに追加して一連の実行プログラムを生成する。
【００２０】
以下、情報処理装置１００がリコンフィギュラブル回路を搭載したプロセッサに設定すべき設定データを生成する例を説明する。この場合、情報処理装置１００は設定データ生成部２２を含む必要がある。
【００２１】
設定データ生成部２２は、実行プログラム生成部２０により生成された実行プログラムから、所定のリコンフィギュラブル回路に所期の回路を構成するための設定データを生成する。設定データはコマンドデータで記述される。
設定データ生成部２２は、実行プログラム生成部２０、複数の単位プログラムに対応する複数の実行プログラムをデータフローグラフにそれぞれ変換し、その後、各データフローグラフを設定データに変換してもよい。また、データフローグラフを介さず、直接、設定データに変換してもよい。
【００２２】
設定データ生成部２２は、各実行プログラムの切替タイミングに対応するタイミングで、次に実行すべき設定データを特定するためのパラメータが上記リコンフィギュラブル回路から出力されるよう、各設定データを生成することもできる。その際、上記リコンフィギュラブル回路に上記パラメータを生成させるための処理と、そのパラメータを上記リコンフィギュラブル回路から出力させる処理との間に、時間的間隔を設ける設定データまたはデータフローグラフを生成することもできる。こららの詳細は後述する。
【００２３】
なお、上記切替タイミングの調整を実行プログラムの生成段階で行うこともできる。その場合、実行プログラム生成部２０は、各実行プログラムの切替タイミングに対応するタイミングで、次に実行すべき実行プログラムを特定するためのパラメータが上記リコンフィギュラブル回路から出力されるよう、各実行プログラムを生成する。
【００２４】
図２は、本発明の実施の形態に係るプロセッサ２００の構成を示すブロック図である。
プロセッサ２００は、設定データ保持部３０、リコンフィギュラブル回路４０、出力データ保持部５０およびシーケンサ装置６０を備える。
【００２５】
設定データ保持部３０は、リコンフィギュラブル回路４０に所期の回路を構成するための設定データをリコンフィギュラブル回路４０に供給する。当該設定データは上記情報処理装置１００により生成された設定データであってもよいし、この設定データと同様のデータ構造であれば、他の情報処理装置により生成された設定データであってもよい。
【００２６】
リコンフィギュラブル回路４０は、設定データ保持部３０から供給される設定データに応じて、動的に機能の変更が可能である。リコンフィギュラブル回路４０は、設定データ保持部３０に保持される設定データの、アドレスまたはアドレスに置換可能な信号を含むを含む選択信号を出力する。リコンフィギュラブル回路４０は、演算部４２および選択信号生成部４４を含む。演算部４２は、当該設定データに基づいて所定の演算を実行する。選択信号生成部４４は、演算部４２から上記単位演算処理ごとに出力される、次に実行すべき単位演算処理を特定するためのパラメータを受け、そのパラメータに基づき上記選択信号を生成する。当該パラメータは、設定データ保持部３０に保持される設定データの、アドレスまたはアドレスに置換可能な信号を含む。当該パラメータは、演算部４２から直近に出力された一つが保持されればよい。選択信号生成部４４および選択信号の詳細は後述する。
【００２７】
出力データ保持部５０は、演算部４２から出力される演算結果を一時保持する。この演算結果には、一連の演算における途中の演算結果も含まれる。当該演算結果は、演算部４２により適宜、参照される。出力データ保持部５０は、演算部４２から出力される一種類以上のパラメータを、パラメータごとに一つ保持する領域を有する。
【００２８】
シーケンサ装置６０は、選択信号生成部４４から選択信号が出力されるとき、その選択信号で指定される、設定データ保持部３０の設定データを選択し、それ以外のとき、所定の順番にしたがい設定データ保持部３０の設定データを選択する。シーケンサ装置６０の詳細な構成は後述する。
【００２９】
選択信号生成部４４は、上記パラメータに基づき、次に実行すべき単位演算処理の、設定データ保持部３０の読み出しアドレスを生成することができる。このアドレスは、上記パラメータそのものであってもよいし、または一定の変換によって生成されるものであってもよい。
【００３０】
演算部４２は、上記パラメータおよび設定データ保持部３０から供給される設定データに基づいて、次に選択信号生成部４４に出力すべきパラメータを生成する。
【００３１】
選択信号生成部４４は、演算部４２からデータフローグラフ単位で出力される、次に実行すべきデータフローグラフに対応する設定データの開始アドレスを特定するためのパラメータを受け、上記選択信号を生成する。
【００３２】
図３は、実施の形態に係る演算部４２の構成の一例を示す図である。
演算部４２は、複数の演算器（Arithmetic Logic Unit:ALU）を備える。ＡＬＵは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行することができる。各ＡＬＵは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ＡＬＵが、２つの入力端子と１つの出力端子を有して構成される。
【００３３】
演算部４２は、縦方向にＸ（Ｘは自然数）個、横方向にＹ（Ｙは自然数）個のＡＬＵが配置されたＸ段Ｙ列のＡＬＵアレイとして構成される。演算部４２は、接続部７１ａ〜７Ｘａ、ＡＬＵ列７１ｂ〜７Ｘｂおよび選択部８０を備える。接続部７１ａ〜７ＸａおよびＡＬＵ列７１ｂ〜７Ｘｂの構成は上記設定データにより動的に設定変更される。接続部７１ａ〜７Ｘａは前後段のＡＬＵ列の間に設けられて、前段のＡＬＵの出力と後段のＡＬＵの入力の接続関係を設定する。選択部８０は、最下段のＡＬＵ列７Ｘｂの、各ＡＬＵ（Ｘ１）〜（ＸＹ）の出力データを適宜選択して、選択信号生成部４４に出力する。
【００３４】
以下、実施の形態に係る情報処理装置１００を用いて、ソースプログラムからコマンドデータを生成するまでの、一例を説明する。この例は、シーケンス処理としてｉｆ文を含む例である。
図４は、ソースプログラムの一例を示す。図４（ａ）はメインルーチンを示し、図４（ｂ）はサブルーチン１を示し、図４（ｃ）はサブルーチン２を示し、図４（ｄ）はサブルーチン３を示し、図４（ｅ）はサブルーチン４を示す。サブルーチン１、３は、後の説明でその具体的な演算内容について問題としないためその演算内容を省略して描いている。
【００３５】
解析部１４は、図４に示すプログラムの記述内容を解析し、メインルーチン内のｉｆ文を上記シーケンス処理部分と判断する。抽出部１０は、そのｉｆ文の分岐先の各サブルーチンと、そのｉｆ文の前後の処理とにプログラムを分割する。抽出部１０は、分割された各サブルーチンを中間プログラムとして単位プログラム保持部１２に登録する。この中間プログラムは、実行順序を決定すべき際の処理単位となる。
【００３６】
図５は、図４のソースプログラムに対応する中間プログラムを示す図である。図５（ａ）はサブルーチン１に対応する中間プログラムを示し、図４（ｂ）はサブルーチン２に対応する中間プログラムを示し、図５（ｃ）はサブルーチン３に対応する中間プログラムを示し、図５（ｄ）はサブルーチン４に対応する中間プログラムを示す。ここでは、各サブルーチンの具体的な演算内容について問題としないためその演算内容を省略して描いている。
【００３７】
解析部１４は、上記解析結果に基づいて、中間プログラムの実行順序を示すシーケンステーブルを生成する。
図６は、図４のソースプログラムに対応するシーケンステーブルを示す図である。
このシーケンステーブルは、「ＰＲＧ」欄、「ｓｔａｔｅ」欄、および「ＮｅｘｔＰＲＧ」欄を有する。「ＰＲＧ」欄は各中間プログラムの識別情報を記述する。「ｓｔａｔｅ」欄はソースプログラム中での各中間プログラムの出現位置を示す情報を記述する。「ＮｅｘｔＰＲＧ」欄は次に実行する可能性のある中間プログラムとその実行条件を示す情報を記述する。ここで、「ＮｅｘｔＰＲＧ」欄の「ｅｎｄ’０」は処理終了を意味するものとする。
【００３８】
中間プログラムは、ソースプログラム中に出現する箇所ごとに「ＰＲＧ」欄に記述される。すなわち、ソースプログラム中の複数箇所に出現する中間プログラムは、「ＰＲＧ」欄にその出現数分、その中間プログラム名が記述される。
【００３９】
「ｓｔａｔｅ」は出現ごとに数値を０から割り当てた値である。この値によりソースプログラムのどの位置で出現した中間プログラムであるかを判断することが可能となる。たとえば、「ｆｕｎｃ０２」（サブルーチン２に対応する中間プログラムを示す）は、メインルーチン内のｉｆ文の分岐先と最終処理の２箇所に出現するため、シーケンステーブルに「ｆｕｎｃ０２」が２箇所存在する。「ｆｕｎｃ０２」の「ｓｔａｔｅ」は出現順に０から割り振られている。図６では、上記ｉｆ文の分岐先の、「ｆｕｎｃ０２」の「ｓｔａｔｅ」を「０」、最終処理の「ｆｕｎｃ０２」の「ｓｔａｔｅ」を「１」としている。
【００４０】
なお、「ＰＲＧ」欄の中間プログラムをソースプログラム中の出現順に保持しているが、これに限る必要はない。また、「ｓｔａｔｅ」は「ＰＲＧ」欄の全中間プログラムに対して固有の値であってもよい。ソースプログラム中の複数箇所に出現する中間プログラムが、どの箇所の処理に対応するものかを判断できる情報であればよい。
【００４１】
「ＮｅｘｔＰＲＧ」欄は、解析部１４により、「ＰＲＧ」欄の各中間プログラムがソースプログラムのどの処理に対応しているかを解析されることにより生成される。より具体的には、各中間プログラムの次に実行される可能性のある中間プログラムがどれで、その実行される可能性のある中間プログラムがどのような条件のとき実行されるかが、解析されることにより生成される。
【００４２】
「ＮｅｘｔＰＲＧ」欄に記述される、次に実行する可能性のある中間プログラムを特定するための情報は、中間プログラム名と「ｓｔａｔｅ」を有する。中間プログラム名だけでは、その中間プログラムがソースプログラム中の複数箇所で出現する場合、どの箇所で出現した中間プログラムであるかを特定することができず、各中間プログラムの次に実行する中間プログラムを特定することができない。このような場合、「ｓｔａｔｅ」の値を参照することにより、当該中間プログラムを特定することができる。
【００４３】
追加処理生成部１８は、上記シーケンステーブルに基づいて次に実行する実行プログラムを選択または決定する処理（たとえば、プログラム）を各中間プログラムに追加して、一連の実行プログラムを生成する。
【００４４】
図７は、図４のソースプログラムに対応する実行プログラムを示す図である。
図７（ａ）はサブルーチン１に対応する実行プログラムを示し、図７（ｂ）はサブルーチン２に対応する実行プログラムを示し、図７（ｃ）はサブルーチン３に対応する実行プログラムを示し、図７（ｄ）はサブルーチン４に対応する実行プログラムを示す。ここでは、各ルーチンの具体的な演算内容について問題としないためその演算内容を省略し、次に実行する中間プログラムを特定するための処理をメインに描いている。
【００４５】
まず、追加処理生成部１８は、シーケンステーブルの「ＮｅｘｔＰＲＧ」欄の、各「ＰＲＧ”ｓｔａｔｅ」を「＿ＳＥＱ＿＝  ＰＲＧ”ｓｔａｔｅ」に変換する。ここで、「＿ＳＥＱ＿」は演算部４２から選択信号生成部４４に渡すデータであることを示す出力変数であり、グローバル変数のように常に保持される変数である。図６のシーケンステーブルの２行目では、「ＮｅｘｔＰＲＧ」欄の「ｆｕｎｃ０２’０」を「＿ＳＥＱ＿  ＝  ｆｕｎｃ０２’０」に変換する。
【００４６】
次に、追加処理生成部１８は、ソースプログラム中に複数箇所出現する中間プログラム、つまり「１」以上の「ｓｔａｔｅ」の値を持つ中間プログラムにおいて、現在実行中の中間プログラムがどの出現位置の処理であるかを判定する。その判定結果に応じて「ＮｅｘｔＰＲＧ」欄の処理を選択するための処理を生成する。実際には、現在実行中の中間プログラムがどの出現位置の処理であるかを判定するには、「＿ＳＥＱ＿」の値を参照することにより行うことが可能である。つまり、図７の「ｆｕｎｃ０２」中のｉｆ文のように「ＳＥＱ」が「ｆｕｎｃ０２’１」であれば、現在実行中の処理が出現位置１の「ｆｕｎｃ０２」の処理であると特定することができる。
【００４７】
追加処理生成部１８は、この処理を実現するためのプログラムとして、たとえば以下に示す追加プログラムを生成する。すなわち、この追加プログラムは、判定結果が真の場合、「ＤＦＧ＝ｆｕｎｃ０２，ｓｔａｔｅ＝１」の「ＮｅｘｔＰＲＧ」欄に記述された処理を実行し、判定結果が偽の場合、「ＤＦＧ＝ｆｕｎｃ０２，ｓｔａｔｅ＝０」の「ＮｅｘｔＰＲＧ」欄に記述された処理を実行する。実行プログラム生成部２０は、このようにして追加処理生成部１８により生成された追加プログラムを各中間プログラムに追加し、図７に示す実行プログラムを生成する。
【００４８】
以上のように、次に実行する実行プログラムの選択を実行プログラム中で実行可能とすることにより、複雑なシーケンス処理にも対応が可能となる。また、リコンフィギュラブル回路４０に依存する、次に実行する実行プログラムの選択数の制限がなくなり、従来のような回路の最大選択数を越えるような分岐処理の場合、複数のシーケンス処理に分けて処理するという必要がなくなる。そのため、分岐処理における実行プログラム数を少なくすることができ、その処理時間を短縮することができる。さらに、その実行プログラム数が少なくなることにより、設定データ保持部３０に格納されるコマンドデータの量を削減することができ、回路規模を縮小することができる。また、全体の、実行プログラム数またはデータフローグラフ数も少なくなることにより、設定データ保持部３０に格納されるコマンドデータの量を削減することができ、回路規模を縮小することができる。
【００４９】
設定データ生成部２２は、実行プログラムごとにリコンフィギュラブル回路４０に適したデータフローグラフを生成する。その際、シーケンサ装置６０における、データフローグラフの切替判定タイミングに合うよう、「＿ＳＥＱ＿」が演算部４２から出力されるよう、データフローグラフを生成することが望ましい。
【００５０】
図８は、図４のソースプログラムに対応するデータフローグラフを示す図である。
図８（ａ）はサブルーチン１に対応するデータフローグラフを示し、図８（ｂ）はサブルーチン２に対応するデータフローグラフを示し、図８（ｃ）はサブルーチン３に対応するデータフローグラフを示し、図８（ｄ）はサブルーチン４に対応するデータフローグラフを示す。ここでは、サブルーチン１、３は、具体的な演算内容について問題としないためその演算内容を省略して描いている。なお、各データフローグラフ内の、「○」が演算命令（以下適宜、ノードという）、「□」が入力変数または出力変数を示す。
【００５１】
以下、つぎに示す前提にしたがい説明する。データフローグラフの１段の処理に１クロックを必要とする。また、ＡＬＵの出力が設定データ保持部３０に入力されるまでに１クロックを必要とする。また、第１選択部６２で実行される、データフローグラフの切替判定処理は、データフローグラフの最下段の実行タイミングで行う必要がある。
【００５２】
以上を前提とした場合、データフローグラフの切替判定タイミングに「＿ＳＥＱ＿」の出力を合わせるには、データフローグラフの下から２段目で「＿ＳＥＱ＿」を出力するようにすればよい。この構成によれば、「＿ＳＥＱ＿」が出力されたか否かにより、データフローグラフの切替判定タイミングを決定することができる。したがって、データフローグラフの実行に要する時間情報など、データフローグラフの切替判定に必要となる情報を別途保持しておく必要がない。よって、回路規模を削減することに寄与する。
【００５３】
図８（ｄ）は、「＿ＳＥＱ＿」が下から２段目で出力されるように制限されたデータフローグラフである。このようなデータフローグラフを生成するには、「＿ＳＥＱ＿」を出力するノードの配置を最後に行うとよい。「＿ＳＥＱ＿」を下から２段目に配置することが不可能であれば、それより下の段に配置し、データフローグラフの切替判定タイミングとのタイミング調整用に、配置した段の下に処理に影響しないノードを追加することで実現できる。
【００５４】
当然のことながら、データフローグラフの段数が多くなると実行時間が長くなるため、段数はできるだけ少ないほうが望ましい。この要請を実現ための手法として、データフローグラフを生成する際、「＿ＳＥＱ＿」を算出する処理を分割してノードを配置する手法がある。この手法を用いることにより、可能な限りデータフローグラフの段数を少なくすることができる。図８（ｂ）に示すデータフローグラフは分割した場合の例である。
【００５５】
「＿ＳＥＱ＿」を算出する処理を分割するか否かの判定は、たとえば分割しない場合に生成されるデータフローグラフの段数と、分割した場合に生成されるデータフローグラフの段数とを比較して、段数の少ないほうを採用するといった方法がある。また、別の方法として、「＿ＳＥＱ＿」を算出する処理が多ければ、「＿ＳＥＱ＿」を下から２段目に配置できる可能性が少なくなるため、ある一定の処理量以上であれば分割するといった方法もある。この処理量は、設計者が実験やシミュレーションの結果に基づき決定されることができる。また、分割態様として「＿ＳＥＱ＿」を算出する処理と「＿ＳＥＱ＿」を出力する処理とで分割する態様に限るものではなく、「＿ＳＥＱ＿」を算出する処理の途中までの処理と、それ以降の処理から「＿ＳＥＱ＿」を出力するまでの処理とで分割する態様も可能である。さらに、二つに分割する態様に限るものではなく、三つ以上に分割する態様も可能である。
【００５６】
図９は、図８（ｂ）のデータフローグラフと比較すべき、データフローグラフを示す図である。
図８（ｄ）に示す「ｆｕｎｃ０４」のデータフローグラフでは、処理を分割せずに「＿ＳＥＱ＿」を出力するノードを配置することができる。これに対し、「ｆｕｎｃ０２」では、リコンフィギュラブル回路４０内のＡＬＵアレイが横３列である場合、処理を分割しないと図９に示すようなデータフローグラフになる。一方、処理を分割した場合、図８（ｂ）に示すデータフローグラフのように、「＿ＳＥＱ＿」を算出する処理を上段の空いているところで処理できるため、図９と比較し、データフローグラフの段数が１段少なくなる。
【００５７】
処理を分割する場合、分割した処理間のデータの受け渡しは一時変数として、出力データ保持部５０などのデータ保持領域に一旦保持し、再度そこから出力して使用すればよい。図８に示す「ｆｕｎｃ０２」のデータフローグラフでは、「ｔｍｐ」が一時変数に当たる。また、そのデータフローグラフでは、「＿ＳＥＱ＿」が下から２段目の段から出力されるように、データフローグラフの切替判定タイミングとのタイミング調整用に、最下段に演算結果に影響を与えない処理が追加されてもよい。
【００５８】
設定データ生成部２２は、各データフローグラフに基づいて、プロセッサ２００の設定データ保持部３０に格納すべきコマンドデータを生成する。その際、「ＤＦＧ”ｓｔａｔｅ」を、そのデータフローグラフに対応するコマンドデータを格納している領域の、設定データ保持部３０内の開始アドレス値と、「ｓｔａｔｅ」の値を含んだ定数値に変換する。たとえば、定数値の上位ビットを当該開始アドレス値、下位ビットを「ｓｔａｔｅ」の値としてもよい。
【００５９】
ここでは、データフローグラフに対応するコマンドデータを格納している領域の、設定データ保持部３０内の開始アドレス値と、「ｓｔａｔｅ」の値を一つの変数または値として出力するようにしているが、別々に出力してもよい。一つの値として出力するほうが一般的に、処理量が少なくてすむが、リコンフィギュラブル回路４０を搭載したプロセッサ２００の構成によっては別々に出力するほうが望ましい場合もある。最適な方法はシステムに依存する。
【００６０】
次に、実施の形態に係る情報処理装置１００を用いて、ソースプログラムから実行プログラムを生成するまでの、別の例を説明する。この例は、シーケンス処理としてループ文を含む例である。
図１０は、ソースプログラムの別の例を示す。
図１０（ａ）はメインルーチンを示し、図１０（ｂ）はサブルーチン１を示し、図１０（ｃ）はサブルーチン２を示し、図１０（ｄ）はサブルーチン３を示す。サブルーチン１〜３は、その具体的な演算内容について問題としないためその演算内容を省略して描いている。
【００６１】
図１１は、図１０のソースプログラムに対応する中間プログラムを示す図である。
図１１（ａ）はサブルーチン１に対応する中間プログラムを示し、図１１（ｂ）はサブルーチン２に対応する中間プログラムを示し、図１１（ｃ）はサブルーチン３に対応する中間プログラムを示す。
図１２は、図１０のソースプログラムに対応するシーケンステーブルを示す図である。
【００６２】
図１３は、図１０のソースプログラムに対応する実行プログラムを示す図である。
図１３（ａ）はサブルーチン１に対応する実行プログラムを示し、図１３（ｂ）はサブルーチン２に対応する実行プログラムを示し、図１３（ｃ）はサブルーチン３に対応する実行プログラムを示す。シーケンス処理としてループ文を含む場合も上述したｉｆ文を含む場合と同様に、ソースプログラムから、複数の中間プログラムとシーケンステーブルを生成でき、それらを基に実行プログラムを生成できることが分かる。
【００６３】
図１４は、実施の形態に係る、シーケンサ装置６０および選択信号生成部４４の具体的な構成例を示す図である。
シーケンサ装置６０は、第１選択部６２、第２選択部６４、次アドレス生成部６６および次アドレス保持部６８を含む。選択信号生成部４４は、比較回路４５、ＡＮＤ回路４６および変更アドレス生成回路４７を含む。
【００６４】
第１選択部６２は、ＡＮＤ回路４６から入力される「ｓｅｑ＿ｃｈｇ」信号に応じて、変更アドレス生成回路４７から入力される「ｓｅｑ＿ａｄｄｒ」信号と、次アドレス保持部６８から入力される「ｎｅｘｔ＿ａｄｄｒ」信号とのいずれかを選択し、第２選択部６４に出力する。「ｓｅｑ＿ｃｈｇ」信号は、データフローグラフの変更タイミングを通知するための信号である。「ｓｅｑ＿ａｄｄｒ」信号は、次に実行するデータフローグラフに対応するコマンドデータを格納している保持領域の、設定データ保持部３０内の開始アドレスを示す信号である。上述した選択信号の一例である。「ｎｅｘｔ＿ａｄｄｒ」信号は、次アドレス保持部６８に保持されているアドレスを示す信号である。
【００６５】
第２選択部６４は、リセット信号に応じて、初期アドレスと第１選択部６２から入力されるアドレスとのいずれかを選択し、設定データ保持部３０および次アドレス生成部６６に出力する。
【００６６】
次アドレス生成部６６は、第２選択部６４から入力される、設定データ保持部３０内の特定のアドレスにアクセするための信号である「ｃｏｍ＿ａｄｄｒ」信号を、次にアクセスすべきアドレス用の、「ｃｏｍ＿ａｄｄｒ」信号に変更し、次アドレス保持部６８に出力する。次アドレス保持部６８は、次アドレス生成部６６から入力されるアドレスを保持する。
【００６７】
より具体的には、次アドレス生成部６６は、実行しているデータフローグラフ内の、次のコマンドデータに対応したアドレスを生成する。また、次アドレス保持部６８は、次に設定データ保持部３０にアクセスするまでの間、次アドレス生成部６６で生成されたアドレスを保持する。
【００６８】
ここで、データフローグラフ内のコマンドデータが設定データ保持部３０に１段ごと別のアドレスに保持され、次段のアドレスが現段のアドレスの＋１である場合であり、設定データ保持部３０に毎クロック、アクセスする必要がある場合を想定する。この場合、次アドレス生成部６６は、「ｃｏｍ＿ａｄｄｒ」信号を＋１するインクリメント回路として機能し、次アドレス保持部６８は、入力される信号を１クロック保持する回路として機能する。
【００６９】
リコンフィギュラブル回路４０を搭載したプロセッサ２００のシステムによっては、１サイクルの処理（たとえば、図６の１行目の「ｆｕｎｃ０１」の処理が開始されて５行目の最後の「ｆｕｎｃ０２」の処理が終了するまでの一連の処理）が終了した場合、次の処理が開始されるまで、それまでの演算結果を変更しないように待機処理が必要となることがある。待機処理の例としては、演算処理を一時止める、または演算結果を変更しないような処理を実行させる、などが考えられる。待機処理が必要な場合、次アドレス生成部６６に、変更アドレス生成回路４７から入力される「ｓｅｑ＿ａｄｄｒ」信号が「ｅｎｄ’０」のような演算終了を示す信号であるとき、上記のような待機処理を行う回路をさらに持たせておく必要がある。
【００７０】
「ｓｅｑ＿ｃｈｇ」信号および「ｓｅｑ＿ａｄｄｒ」信号は、選択信号生成部４４内の、比較回路４５、ＡＮＤ回路４６および変更アドレス生成回路４７で生成される。比較回路４５およびＡＮＤ回路４６は、演算部４２が「＿ＳＥＱ＿」を出力しているか否かを判定し、「ｓｅｑ＿ｃｈｇ」信号を生成する。変更アドレス生成回路４７は、「＿ＳＥＱ＿」から設定データ保持部３０内のアドレス値を生成し、「ｓｅｑ＿ａｄｄｒ」信号を生成する。
【００７１】
「＿ＳＥＱ＿」は、上述したように次の「＿ＳＥＱ＿」を生成する際に必要な場合があるため、どこかに保持しておく必要がある。本実施の形態では、「＿ＳＥＱ＿」を保持する領域を予め決めておき、その領域に書き込むための信号を用いて「＿ＳＥＱ＿」の出力を判定する。
【００７２】
以下、より具体的に説明する。本実施の形態では、「＿ＳＥＱ＿」は、出力データ保持部５０の特定のアドレスに保持されるものとする。これにより、「＿ＳＥＱ＿」を保持するための特別な保持回路が不要となり、回路規模を削減することができる。
【００７３】
「＿ＳＥＱ＿」出力の判定は、演算部４２からアクセスされているアドレスが「＿ＳＥＱ＿」を格納している領域のアドレスと同一であり、かつその領域への書き込みイネーブル信号（図１４では、書込Ｅと表記している）が書き込みを許可する値（図１４では「１」）であれば、「＿ＳＥＱ＿」であり、書き込みを禁止する値（図１４では「０」）であれば、「＿ＳＥＱ＿」でないと判定する。
【００７４】
より具体的には、比較回路４５は、「＿ＳＥＱ＿」を格納している領域のアドレスと、演算部４２からアクセスされているアドレスとが一致する場合、「１」をＡＮＤ回路４６に出力し、一致しない場合、「０」を出力する。ＡＮＤ回路４６は、比較回路４５の出力と、書き込みイネーブル信号の論理積を演算し、演算結果を第１選択部６２に出力する。すなわち、比較回路４５の出力が「１」であり、かつ書き込みイネーブル信号が「１」の場合、「ｓｅｑ＿ｃｈｇ」信号として「１」を出力する。それ以外の場合、「ｓｅｑ＿ｃｈｇ」信号として「０」を出力する。第１選択部６２は、「ｓｅｑ＿ｃｈｇ」信号として「１」が入力されるとき、データフローグラフの切替タイミングと判断することができる。
【００７５】
変更アドレス生成回路４７は、「＿ＳＥＱ＿」を格納している領域への書き込みデータから、「ｓｅｑ＿ａｄｄｒ」信号または「ｓｅｑ＿ａｄｄｒ」信号の基礎となるデータを生成する。たとえば、上述したように「＿ＳＥＱ＿」の上位ビットに、データフローグラフに対応するコマンドデータを格納している領域の、設定データ保持部３０内の開始アドレス値が設定され、下位ビットに「ｓｔａｔｅ」の値が設定される場合を想定する。この場合、変更アドレス生成回路４７は「＿ＳＥＱ＿」の上位ビットを抽出し、そのデータを「ｓｅｑ＿ａｄｄｒ」信号として第１選択部６２に出力する。
【００７６】
以上説明したように本実施の形態によれば、次のデータフローグラフに対応するコマンドデータの、設定データ保持部３０内のアドレスをリコンフィギュラブル回路４０により選択および決定するため、その選択および決定用の専用回路が不要である。したがって、回路規模を削減することができ、消費電力を低減することができる。
【００７７】
また、専用回路の構成により制限されていた、分岐先選択数による制限がなくなる。たとえば、図７の「ｆｕｎｃ０１」のような分岐処理では分岐先の選択数が３（「ｉｆ」、「ｅｌｓｅ  ｉｆ」、「ｅｌｓｅ」）であるため、専用回路の分岐先選択数が２の装置ではそのままでは実行できない。このような場合、まずｉｆ文の分岐判定を専用回路で行った後、「ｅｌｓｅ  ｉｆ」文の分岐判定を行うといった２段判定が必要となる。そのため、２つの判定処理をそれぞれ行う処理が必要となるとともに、判定回路による処理判定も２回必要となる。
【００７８】
これに対し、本実施の形態によれば、処理を少なくすることができるため、コマンドデータの保持領域を従来よりも小さくでき、回路規模を削減することができる。それにより、消費電力を低減することができる。また、処理時間が従来よりも短縮されるため、その点からも消費電力を低減することができる。
【００７９】
また、本実施の形態は、ＣＰＵのようなスタックベースのシーケンス処理と比べても、分岐に関する情報を１つしか持たないため、回路構成が単純で小型である。また、スタックベースのような戻りアドレスを格納するメモリの容量による分岐制限がないため、より多くの分岐パターンに対応することができる。これらにより、リコンフィギュラブル回路を搭載したプロセッサの処理パフォーマンスが向上する。
【００８０】
以上、本発明をいくつかの実施形態をもとに説明した。これらの実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００８１】
上述した、シーケンステーブル、中間プログラム、データフローグラフを示した図は概念図であり、必ずしもこのような形態である必要はない。また、上述した処理方法は一例であり、これに限ったものではない。たとえば、追加処理生成部１８により行われる追加処理を中間プログラムに対して行うのではなく、中間プログラムから作成されたデータフローグラフに対して行ってもよい。また、必ずしもデータフローグラフを生成する必要はなく、実行プログラムから直接、コマンドデータを生成してもよい。
【図面の簡単な説明】
【００８２】
【図１】本発明の実施の形態に係る情報処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態に係るプロセッサの構成を示すブロック図である。
【図３】実施の形態に係る演算部の構成の一例を示す図である。
【図４】ソースプログラムの一例を示す図である。図４（ａ）はメインルーチンを示し、図４（ｂ）はサブルーチン１を示し、図４（ｃ）はサブルーチン２を示し、図４（ｄ）はサブルーチン３を示し、図４（ｅ）はサブルーチン４を示す。
【図５】図４のソースプログラムに対応する中間プログラムを示す図である。図５（ａ）はサブルーチン１に対応する中間プログラムを示し、図４（ｂ）はサブルーチン２に対応する中間プログラムを示し、図５（ｃ）はサブルーチン３に対応する中間プログラムを示し、図５（ｄ）はサブルーチン４に対応する中間プログラムを示す。
【図６】図４のソースプログラムに対応するシーケンステーブルを示す図である。
【図７】図４のソースプログラムに対応する実行プログラムを示す図である。図７（ａ）はサブルーチン１に対応する実行プログラムを示し、図７（ｂ）はサブルーチン２に対応する実行プログラムを示し、図７（ｃ）はサブルーチン３に対応する実行プログラムを示し、図７（ｄ）はサブルーチン４に対応する実行プログラムを示す。
【図８】図４のソースプログラムに対応するデータフローグラフを示す図である。図８（ａ）はサブルーチン１に対応するデータフローグラフを示し、図８（ｂ）はサブルーチン２に対応するデータフローグラフを示し、図８（ｃ）はサブルーチン３に対応するデータフローグラフを示し、図８（ｄ）はサブルーチン４に対応するデータフローグラフを示す。
【図９】図８（ｂ）のデータフローグラフと比較すべき、データフローグラフを示す図である。
【図１０】ソースプログラムの別の例を示す図である。図１０（ａ）はメインルーチンを示し、図１０（ｂ）はサブルーチン１を示し、図１０（ｃ）はサブルーチン２を示し、図１０（ｄ）はサブルーチン３を示す。
【図１１】図１０のソースプログラムに対応する中間プログラムを示す図である。図１１（ａ）はサブルーチン１に対応する中間プログラムを示し、図１１（ｂ）はサブルーチン２に対応する中間プログラムを示し、図１１（ｃ）はサブルーチン３に対応する中間プログラムを示す。
【図１２】図１０のソースプログラムに対応するシーケンステーブルを示す図である。
【図１３】図１０のソースプログラムに対応する実行プログラムを示す図である。図１３（ａ）はサブルーチン１に対応する実行プログラムを示し、図１３（ｂ）はサブルーチン２に対応する実行プログラムを示し、図１３（ｃ）はサブルーチン３に対応する実行プログラムを示す。
【図１４】実施の形態に係る、シーケンサ装置および選択信号生成部の具体的な構成例を示す図である。
【符号の説明】
【００８３】
１０  抽出部、  １２  単位プログラム保持部、  １４  解析部、  １６  実行順序保持部、  １８  追加処理生成部、  ２０  実行プログラム生成部、  ２２  設定データ生成部、  ３０  設定データ保持部、  ４０  リコンフィギュラブル回路、  ４２  演算部、  ４４  選択信号生成部、  ４５  比較回路、  ４６  ＡＮＤ回路、  ４７  変更アドレス生成回路、  ５０  出力データ保持部、  ６０  シーケンサ装置、  ６２  第１選択部、  ６４  第２選択部、  ６６  次アドレス生成部、  ６８  次アドレス保持部、  ８０  選択部、  １００  情報処理装置、  ２００  プロセッサ。  
【図１】
2009187478.tif 000003
【図２】
2009187478.tif 000004
【図３】
2009187478.tif 000005
【図４】
2009187478.tif 000006
【図５】
2009187478.tif 000007
【図６】
2009187478.tif 000008
【図７】
2009187478.tif 000009
【図８】
2009187478.tif 000010
【図９】
2009187478.tif 000011
【図１０】
2009187478.tif 000012
【図１１】
2009187478.tif 000013
【図１２】
2009187478.tif 000014
【図１３】
2009187478.tif 000015
【図１４】
2009187478.tif 000016