(57)【要約】【課題】異なるプロセス間で正しいデータをやり取りする。【解決手段】プロセスＡは、離散的に順次訪れる動作タイミングＸを基準にした各区間において動作し、プロセスＢは、離散的に順次訪れる動作タイミングＹを基準にした各区間において動作する。動作タイミングＸ及びＹは、基準タイミングＴ1、Ｔ2、Ｔ3、Ｔ4、Ｔ5・・・を元にして定められる。ｉ番目の動作タイミングＸ及びＹは、夫々、基準タイミングＴi及びＴ2i-1と一致する。プロセス間通信部は、動作タイミングＸ及びＹが重なる時においてプロセスＡ及びＢ間のデータ受け渡しを行う。例えば、タイミングＴ2及びＴ3間に行われたプロセスＡであるプロセスＡ［２］の出力データを、タイミングＴ3においてプロセスＢに渡すことでプロセスＢ［３］の中で該出力データを利用する。【選択図】図２
2011039698.tif 000002
【特許請求の範囲】
【請求項１】
第１動作タイミング列を形成する各第１動作タイミングを基準にした各区間で動作する第１プロセス及び第２動作タイミング列を形成する各第２動作タイミングを基準にした各区間で動作する第２プロセスを含む複数のプロセスが動作する演算処理装置において、
前記第１プロセスの出力データを前記第２プロセスにて利用できるようにするためのプロセス間通信部を備え、
前記第１動作タイミング列と前記第２動作タイミング列は互いに異なり、
前記プロセス間通信部は、第１動作タイミングと第２動作タイミングが一致する場合、或いは、第２動作タイミングが第１動作タイミングから所定時間が経過した後のタイミングである場合に、当該第１動作タイミング前における前記第１プロセスの出力データを、当該第２動作タイミング後において前記第２プロセスが利用できるようにする
ことを特徴とする演算処理装置。
【請求項２】
前記複数のプロセスに含まれる各プロセスは演算動作を行って演算結果を表すデータを出力し、
前記第１及び第２動作タイミング列の少なくとも一方は、
前記第１プロセスの出力データ、
前記第２プロセスの出力データ、又は、
前記複数のプロセスに含まれる、前記第１及び第２プロセスと異なる第３プロセスの出力データ、
に基づいて可変設定される
ことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記第１及び第２プロセスは、複数のＡＬＵを備えたリコンフィギャラブルプロセッサ上で動作する
ことを特徴とする請求項１または請求項２に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセス間の通信機能を備えた演算処理装置に関する。
【背景技術】
【０００２】
近年、１つの演算装置のみでは処理能力が不足するため、複数の演算装置を使用したシステムが採用されることも多い。この種のシステムでは、各演算装置上で動作するプロセス間で、データのやり取りを行う必要が生じる。このデータやり取りを実現する機構として、共有メモリなどが一般的に用いられる。プロセスとは、あるまとまった一連の演算処理を指し、所謂スレッドもプロセスの一種である。
【０００３】
また、複数のメモリを用いることで、複数のプロセス間のデータやり取りを実現する方法も提案されている（特許文献１参照）。特許文献１の中で、複数のプロセスの動作タイミングを全て同一にする方法が提案されている。この方法により、プロセスとメモリとの割り当て関係の切り替えが容易となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−４０２５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、実際のアプリケーションにおいて、プロセスの動作時間はプロセスごとに様々であるため、複数のプロセスの動作タイミングを全て同一にするためには、各プロセスの動作周期を動作時間が一番長いプロセスの動作周期に合わせる必要がある。例えば、第１、第２及び第３プロセスの、１回当たりの動作時間が夫々５０ｍｓ、１００ｍｓ及び２００ｍｓであった場合、第１、第２及び第３プロセスの動作周期を夫々５０ｍｓ、１００ｍｓ及び２００ｍｓにまで縮めることもできるが、第１〜第３プロセスの動作タイミングを全て同一にするためには、第１、第２及び第３プロセスの動作周期を第３プロセスのそれ（即ち２００ｍｓ）に合わせる必要が生じる。つまり、第１及び第２プロセスの動作周期を２００ｍｓにまで拡大する必要が生じ、システムの動作効率が低下する。
【０００６】
そこで本発明は、動作効率低下を抑制しつつ複数のプロセス間の通信を可能ならしめる演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る演算処理装置は、第１動作タイミング列を形成する各第１動作タイミングを基準にした各区間で動作する第１プロセス及び第２動作タイミング列を形成する各第２動作タイミングを基準にした各区間で動作する第２プロセスを含む複数のプロセスが動作する演算処理装置において、前記第１プロセスの出力データを前記第２プロセスにて利用できるようにするためのプロセス間通信部を備え、前記第１動作タイミング列と前記第２動作タイミング列は互いに異なり、前記プロセス間通信部は、第１動作タイミングと第２動作タイミングが一致する場合、或いは、第２動作タイミングが第１動作タイミングから所定時間が経過した後のタイミングである場合に、当該第１動作タイミング前における前記第１プロセスの出力データを、当該第２動作タイミング後において前記第２プロセスが利用できるようにすることを特徴とする。
【０００８】
これにより、第１プロセスと第２プロセスの動作タイミング列が異なっていても、適切なデータの受け渡しができるようになる。これを実現するために、第１又は第２プロセスの動作周期を拡大する必要もないため、該拡大に起因する動作効率の低下も生じない。
【０００９】
そして例えば、前記複数のプロセスに含まれる各プロセスは演算動作を行って演算結果を表すデータを出力し、前記第１及び第２動作タイミング列の少なくとも一方は、前記第１プロセスの出力データ、前記第２プロセスの出力データ、又は、前記複数のプロセスに含まれる、前記第１及び第２プロセスと異なる第３プロセスの出力データ、に基づいて可変設定されるようにしても良い。
【００１０】
また例えば、前記第１及び第２プロセスは、複数のＡＬＵを備えたリコンフィギャラブルプロセッサ上で動作する。
【発明の効果】
【００１１】
本発明によれば、動作効率低下を抑制しつつ複数のプロセス間の通信を可能ならしめる演算処理装置を提供することができる。
【００１２】
本発明の意義ないし効果は、以下に示す実施の形態の説明により更に明らかとなろう。ただし、以下の実施の形態は、あくまでも本発明の一つの実施形態であって、本発明ないし各構成要件の用語の意義は、以下の実施の形態に記載されたものに制限されるものではない。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１実施形態に係る演算処理装置の概略ブロック図である。
【図２】本発明の第１実施形態に係り、各プロセスの動作タイミングの関係を示した図である。
【図３】プロセス間通信部の内部ブロック図を含む、図１の演算処理装置のブロック図である。
【図４】本発明の第１実施形態に係り、２つのプロセス実行部と２つのメモリとの接続関係を示した図である。
【図５】プロセス実行部及びメモリ間の接続に関する切り替え信号を生成する回路を例示した図である。
【図６】図５に示す回路の入出力信号の関係例を示した図である。
【図７】本発明の第２実施形態に係り、各プロセスの動作タイミングの関係を示した図である。
【図８】本発明の第２実施形態に係る演算処理装置の概略ブロック図である。
【図９】図８のプロセス間通信部に設けることのできるメモリ群を示した図である。
【図１０】本発明の第３実施形態に係る演算処理装置の概略ブロック図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態につき、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。
【００１５】
＜＜第１実施形態＞＞
本発明の第１実施形態を説明する。図１は、第１実施形態に係る演算処理装置１０の概略ブロック図である。演算処理装置１０は、プロセス実行部１１及び１２と、プロセス実行部１１及び１２間でデータのやり取りを行うためのプロセス間通信部１３と、タイミング制御部１４と、を備える。
【００１６】
プロセス実行部１１及び１２の夫々はプロセスを実行する演算装置である。本明細書において、プロセスとは、あるまとまった一連の演算処理を指し、所謂スレッドもプロセスの一種である。プロセス実行部１１が実行するプロセスをプロセスＡと呼び、プロセス実行部１２が実行するプロセスをプロセスＢと呼ぶ。プロセスＡとプロセスＢは互いに異なるプロセスである。演算処理装置１０には、プロセス実行部１１及び１２の他に、プロセスＡ及びＢ以外のプロセスを実行するプロセス実行部（不図示）も含まれうる。以下では、プロセス実行部１１及び１２に注目し、特に必要の無い限り、プロセス実行部１１及び１２以外のプロセス実行部の説明を割愛する。
【００１７】
図２を参照して、プロセスＡ及びＢの動作タイミングについて説明する。プロセスＡは、離散的に順次訪れる動作タイミングＸを基準にした各区間において動作し、プロセスＢは、離散的に順次訪れる動作タイミングＹを基準にした各区間において動作する。図２において、上方側に記載された７つの矢印の夫々は動作タイミングＸに対応しており、下方側に記載された４つの矢印の夫々は動作タイミングＹに対応している。
【００１８】
時間の経過するにつれて、基準タイミングＴ1、Ｔ2、Ｔ3、Ｔ4、Ｔ5、Ｔ6、Ｔ7・・・、がこの順番で訪れるものとする。即ち基準タイミングＴi+1は基準タイミングＴiの後に訪れるタイミングである（ｉは自然数）。
【００１９】
ｉ番目の動作タイミングＸは基準タイミングＴiと一致する。プロセス実行部１１は、ｉ番目の動作タイミングＸから始まる区間であって且つ所定時間長さを有する区間において、ｉ回目のプロセスＡを実行する。ｉ回目のプロセスＡを特にプロセスＡ［ｉ］と表記する。１回分のプロセスＡの動作時間は、隣接する基準タイミングＴi及びＴi+1間の時間長さ以下である。従って例えば、基準タイミングＴ1と一致する１番目の動作タイミングＸにおいてプロセスＡ［１］が実行開始され、プロセスＡ［１］は基準タイミングＴ2までに終了する。同様に例えば、基準タイミングＴ2と一致する２番目の動作タイミングＸにおいてプロセスＡ［２］が実行開始され、プロセスＡ［２］は基準タイミングＴ3までに終了する。プロセスＡ［３］等についても同様である。
【００２０】
ｉ番目の動作タイミングＹは基準タイミングＴ2i-1と一致する。プロセス実行部１２は、ｉ番目の動作タイミングＹから始まる区間であって且つ所定時間長さを有する区間において、ｉ回目のプロセスＢを実行する。ｉ回目のプロセスＢを特にプロセスＢ［ｉ］と表記する。１回分のプロセスＢの動作時間は、隣接する基準タイミングＴi及びＴi+1間の時間長さの２倍である。従って例えば、基準タイミングＴ1と一致する１番目の動作タイミングＹにおいてプロセスＢ［１］が実行開始され、プロセスＢ［１］は基準タイミングＴ3までに終了する。同様に例えば、基準タイミングＴ3と一致する２番目の動作タイミングＹにおいてプロセスＢ［２］が実行開始され、プロセスＢ［２］は基準タイミングＴ5までに終了する。プロセスＢ［３］等についても同様である。
【００２１】
このように、プロセスＡの動作タイミングＸは基準タイミングの全て（Ｔ1、Ｔ2、Ｔ3、Ｔ4、Ｔ5、・・・）に対応しており、プロセスＢの動作タイミングＹは基準タイミングの一部（Ｔ1、Ｔ3、Ｔ5、・・・）に対応している。勿論、これは本実施形態で採用している例示に過ぎず、ｉ番目の動作タイミングＸ又はＹを、基準タイミングＴ3i-2や基準タイミングＴ4i-3に一致させることも可能である。
【００２２】
タイミング制御部１４は、基準タイミング並びに動作タイミングＸ及びＹを生成する。タイミング制御部１４は、一定クロックを発生する発振器（不図示）を用いて、それらのタイミングを生成することができる。尚、タイミング制御部１４が、プロセス間通信部１３に内在していると考えても構わない。
【００２３】
尚、時系列に順次訪れる複数のタイミングを総称してタイミング列と呼ぶ。これにならい、１、２、３・・・番目の動作タイミングＸから成るタイミング列を動作タイミング列Ｘと呼び、１、２、３・・・番目の動作タイミングＹから成るタイミング列を動作タイミング列Ｙと呼び、基準タイミングＴ1、Ｔ2、Ｔ3・・・から成るタイミング列を基準タイミング列と呼ぶ。上述の説明からも明らかなように、動作タイミング列Ｘと動作タイミング列Ｙは互いに異なる。以下の説明では、特記なき限り、基準タイミング列の内、基準タイミングＴ1〜Ｔ7にのみ注目する。また、以下の説明では、基準タイミングＴiを単にタイミングＴiとも呼ぶ。
【００２４】
プロセスＡ又はＢなどの任意のプロセスは、定められた演算動作を行って演算結果を表すデータを出力する。注目時点においてプロセスＡは、注目時点以前に実行されたプロセスＢの出力データに基づいて自身の演算動作を行う。同様に、注目時点においてプロセスＢは、注目時点以前に実行されたプロセスＡの出力データに基づいて自身の演算動作を行う。これを実現するために、プロセス間通信部１３は、プロセスＡの出力データをプロセスＢにて利用できるようにするための処理及びプロセスＢの出力データをプロセスＡにて利用できるようにするための処理を実行する。尚、本例では、プロセスＡの演算動作がプロセスＢの出力データに基づいて行われ且つプロセスＢの演算動作がプロセスＡの出力データに基づいて行われることと想定しているが、プロセスＢの出力データに依存することなくプロセスＡの演算動作が行われても良い。この場合、プロセスＢの出力データをプロセスＡにて利用できるようにするための処理の実行は不要である。或いは、プロセスＡの出力データに依存することなくプロセスＢの演算動作が行われても良い。この場合、プロセスＡの出力データをプロセスＢにて利用できるようにするための処理の実行は不要である。
【００２５】
図３に、プロセス間通信部１３の内部ブロック図をも含めた、演算処理装置１０の構成ブロック図を示す。図３のプロセス間通信部１３は、メモリ２１及び２２と切替制御部２３を備える。メモリ２１及び２２の夫々は、プロセスＡの出力データ（換言すれば、プロセス実行部１１の出力データ）又はプロセスＢの出力データ（換言すれば、プロセス実行部１２の出力データ）を記憶することができる。但し、或る区間では、プロセスＡのみがメモリ２１にアクセス可能であって且つプロセスＢのみがメモリ２２にアクセス可能であり、他の区間では、プロセスＢのみがメモリ２１にアクセス可能であって且つプロセスＡのみがメモリ２２にアクセス可能となるように、各プロセスのアクセス可能なメモリが切り替わるようになっている。注目プロセスが注目メモリにアクセス可能であるとは、注目プロセスが、注目メモリに任意のデータを書き込むことが可能であると共に注目メモリに書き込まれた任意のデータを読み出すことが可能である状態を指す。
【００２６】
便宜上、図４（ａ）に示すような、プロセスＡのみがメモリ２１にアクセス可能であって且つプロセスＢのみがメモリ２２にアクセス可能である状態を第１アクセス状態と呼び、図４（ｂ）に示すような、プロセスＢのみがメモリ２１にアクセス可能であって且つプロセスＡのみがメモリ２２にアクセス可能である状態を第２アクセス状態と呼ぶ。第１及び第２アクセス状態間の切り替えは、切替制御部２３によって成される。プロセスＡ及びＢのメモリ２１及び２２に対するアクセス状態が第１アクセス状態である時において該切り替えが行われると該アクセス状態は第２アクセス状態へと変化し、プロセスＡ及びＢのメモリ２１及び２２に対するアクセス状態が第２アクセス状態である時において該切り替えが行われると該アクセス状態は第１アクセス状態へと変化する。
【００２７】
切替制御部２３は、プロセスＡ及びＢ間の適切な通信を可能とするべく、動作タイミングＸ及びＹが重なった場合にのみ上記切り替えを行う。つまり、タイミングＴ3、Ｔ5及びＴ7において上記切り替えを行う。これにより、プロセスＡ及びＢ間で正しいデータの受け渡し（換言すれば、最新のデータの受け渡し）ができるようになる。尚、タイミングＴ1以前においてプロセスＡ及びＢは動作していないため、タイミングＴ1における切り替えは不要である（或いは意味を成さない）。
【００２８】
より具体的な動作例を説明する。タイミングＴ1及びＴ3間の区間においては第１アクセス状態（図４（ａ）参照）が実現されるように且つタイミングＴ3及びＴ5間の区間においては第２アクセス状態（図４（ｂ）参照）が実現されるように上記切り替えが行われる場合を想定する。この際、タイミングＴ2及びＴ3間の区間において、プロセスＡ［２］が自身の出力データＤＴA[2]をメモリ２１に書き込む。その後、タイミングＴ3において第１アクセス状態から第２アクセス状態への切り替えが行われると、タイミングＴ3及びＴ5間の区間において、プロセスＢ［２］がメモリ２１内のデータＤＴA[2]にアクセスできるようになり、結果、プロセスＢ［２］はデータＤＴA[2]に基づいて必要な演算動作を行うことができるようになる。また、タイミングＴ1及びＴ2間の区間において、プロセスＡ［１］が自身の出力データＤＴA[1]をメモリ２１に書き込んでいたならば、該データＤＴA[1]をプロセスＢ［２］においてメモリ２１から読み出すことも可能である。
【００２９】
同様に、タイミングＴ1及びＴ3間の区間において、プロセスＢ［１］は自身の出力データＤＴB[1]をメモリ２２に書き込む。その後、タイミングＴ3において第１アクセス状態から第２アクセス状態への切り替えが行われると、タイミングＴ3及びＴ4間の区間において、プロセスＡ［３］がメモリ２２内のデータＤＴB[1]にアクセスできるようになり、結果、プロセスＡ［３］はデータＤＴB[1]に基づいて必要な演算動作を行うことができるようになる。更に、プロセスＡ［３］においてメモリ２２上のデータＤＴB[1]が変更されていなければ、タイミングＴ4及びＴ5間の区間においてもプロセスＡ［４］がメモリ２２内のデータＤＴB[1]にアクセスできるようになり、プロセスＡ［４］もデータＤＴB[1]に基づいて必要な演算動作を行うことができるようになる。
【００３０】
上述の如く、動作タイミング列Ｘを形成する何れかの動作タイミングＸ及び動作タイミング列Ｙを形成する何れかの動作タイミングＹを夫々注目動作タイミングＸ及び注目動作タイミングＹと呼ぶとすると、注目動作タイミングＸと注目動作タイミングＹが一致するタイミング（例えばタイミングＴ3）においてのみ、第１及び第２アクセス状態間の切り替えを行う。これにより、注目動作タイミングＸ前（例えばタイミングＴ3前）におけるプロセスＡの出力データを、注目動作タイミングＹ後（例えばタイミングＴ3後）においてプロセスＢが利用できるようになると共に、注目動作タイミングＹ前（例えばタイミングＴ3前）におけるプロセスＢの出力データを、注目動作タイミングＸ後（例えばタイミングＴ3後）においてプロセスＡが利用できるようになる。つまり、プロセスＡ及びＢの動作タイミング列が異なっていても、プロセスＡ及びＢ間で正しいデータの受け渡し（換言すれば、最新のデータの受け渡し）ができるようになる。また、この受け渡しを簡易な機構にて実現することができる。
【００３１】
動作タイミングの設定方法等について説明を補足する。上述の例では、動作タイミングＸ及びＹが予め定められた間隔にて周期的に訪れることを想定しているが、演算処理装置１０における任意の演算処理の結果等に応じて動作タイミングＸ及びＹを動的に変更するようにしても良い。時間的に隣接する２つの動作タイミングＸ間の間隔をＸ間隔と呼び、時間的に隣接する２つの動作タイミングＹ間の間隔をＹ間隔と呼ぶ。タイミングＴ1及びＴ2間の間隔はＸ間隔の一つであり、タイミングＴ1及びＴ3間の間隔はＹ間隔の一つである。上述してきた例では、Ｙ間隔がＸ間隔の２倍に固定されている。Ｘ間隔の設定は、プロセスＡが行っても良いし、プロセスＢ又はプロセス間通信部１３が行っても良い。同様に、Ｙ間隔の設定は、プロセスＢが行っても良いし、プロセスＡ又はプロセス間通信部１３が行っても良い。
【００３２】
例えば、タイミングＴi以前に出力されたプロセスＡ、Ｂ及び／又はＣの出力データに基づいてタイミングＴi以降におけるＸ間隔を動的に設定するようにしても良い。プロセスＣとは、演算処理装置１０に内在するプロセス実行部であって且つプロセス実行部１１及び１２以外のプロセス実行部（不図示）が実行する、プロセスＡ及びＢ以外のプロセスである。同様に例えば、タイミングＴi以前に出力されたプロセスＡ、Ｂ及び／又はＣの出力データに基づいてタイミングＴi以降におけるＹ間隔を動的に設定するようにしても良い。より具体的な例として例えば、Ｙ間隔の設定がプロセスＡにて行われるようにしておき、プロセスＡが、自身の演算結果である自身の出力データに応じてＹ間隔をＸ間隔の２倍又は３倍に設定するようにしてもよい。このように、動作タイミングが動的に変化する場合でも、プロセス間のデータのやり取りを問題なく行うことができる。
【００３３】
また、上述の如く、共通の基準タイミングを元に複数のプロセスの動作タイミングを規定することにより、複数のプロセスの動作タイミングが重なるタイミングを容易に知ることが可能となる。例えば、２回の基準タイミングごとに１回の動作タイミングが発生する第１プロセスと、３回の基準タイミングごとに１回の動作タイミングが発生する第２プロセスとが実行される場合においては、６回の基準タイミングごとに第１及び第２プロセスの動作タイミングが重なるということが容易に判明する。つまり、２つのプロセス間におけるデータのやり取りのタイミングを簡単に求めることができる。尚、各プロセスの動作タイミングを基準タイミングとは無関係に設定することも可能ではある。
【００３４】
また、基準タイミングは一定の周期で訪れるようにすると良い。例えば、プロセスＡの演算にて参照される入力データが１ｋＨｚ（キロヘルツ）の周期で更新される場合には、基準タイミングを１ｋＨｚの周期で発生させることで、最新の入力データに応じた演算をプロセスＡにて実行させることができる。加えて、動作タイミングの周期が規定されることになるため、各プロセスの処理にかけることができる時間を確定することができる。但し、基準タイミングの周期を可変設定することも可能ではある（即ち例えば、タイミングＴi及びＴi+1間の時間とタイミングＴi+1及びＴi+2間の時間を、異ならせることも可能である）。
【００３５】
動作タイミング列が互いに異なる複数のプロセスが動作するアプリケーションの例として、音声処理などが挙げられる。例えば、プロセスＡが音声信号に対して５０ｋＨｚの周期で低域通過フィルタの処理を行い、プロセスＢが該処理の結果を利用して２５ｋＨｚの周期で別のフィルタ処理を音声信号に対して行う、といったアプリケーションが考えられる。
【００３６】
また、切替制御部２３に、図５に示すようなＡＮＤ回路３０を備えるようにしても良い。ＡＮＤ回路３０には、動作タイミングＸの発生時点において“１”の論理値をとり且つそれ以外では“０”の論理値をとるＸ信号と、動作タイミングＹの発生時点において“１”の論理値をとり且つそれ以外では“０”の論理値をとるＹ信号と、が入力される。ＡＮＤ回路３０は、図６に示す如く、Ｘ信号及びＹ信号の論理値が共に“１”の場合に “１”の論理値をとり且つそれ以外の場合に“０”の論理値をとるＺ信号を出力する。Ｚ信号は、第１及び第２アクセス状態間の切り替えを指示する切り替え信号として機能し、Ｚ信号の論理値が“１”になるタイミングにおいて、第１及び第２アクセス状態間の切り替えを行うようにすると良い。
【００３７】
＜＜第２実施形態＞＞
本発明の第２実施形態を説明する。第２実施形態は、第１実施形態を基礎にした実施形態であり、矛盾なき限り、第１実施形態の記載が第２実施形態にも適用される。
【００３８】
第１実施形態では、プロセスが実際に演算を始めるタイミングや、プロセスのメモリへのアクセス状態が切り替えられるタイミングが、基準タイミング列を形成する何れかの基準タイミングと完全に一致していることを想定したが、それらのタイミングは基準タイミングと完全に一致している必要は無い。例えば、或る基準タイミングの数クロック後に、プロセスの演算が開始されたり、プロセスのメモリへのアクセス状態が切り替えられたりする実施の形態も、本発明に含まれる。このような実施の形態を、図７を参照して説明する。
【００３９】
図７には、第２実施形態に係るプロセスＡ及びＢの動作タイミングＸ及びＹが示されている。図７において、上方側に記載された７つの矢印の夫々は動作タイミングＸに対応しており、下方側に記載された４つの矢印の夫々は動作タイミングＹに対応している。
【００４０】
ｉ番目の動作タイミングＸは、図２に示したものと同様、基準タイミングＴiと一致する。但し、ｉ番目の動作タイミングＹは、図２に示したものと異なり、基準タイミングＴ2i-1から所定時間ΔＴ経過後のタイミングと一致する。タイミングＴiから時間ΔＴだけ経過したタイミングを（Ｔi＋ΔＴ）と表記する。そうすると例えば、第２実施形態では、タイミング（Ｔ1＋ΔＴ）と一致する１番目の動作タイミングＹにおいてプロセスＢ［１］が実行開始され、プロセスＢ［１］はタイミング（Ｔ3＋ΔＴ）までに終了する。同様に例えば、タイミング（Ｔ3＋ΔＴ）と一致する２番目の動作タイミングＹにおいてプロセスＢ［２］が実行開始され、プロセスＢ［２］はタイミング（Ｔ5＋ΔＴ）までに終了する。プロセスＢ［３］等についても同様である。
【００４１】
図８は、第２実施形態に係る演算処理装置６０の概略ブロック図である。演算処理装置６０は、プロセス実行部６１及び６２と、プロセス実行部６１及び６２間でデータのやり取りを行うためのプロセス間通信部６３と、タイミング制御部６４と、を備える。矛盾なき限り、図１の演算処理装置１０に対して上述した事項を、演算処理装置６０に適用することができる。プロセス実行部６１及び６２は、夫々、図１のプロセス実行部１１及び１２と同じものであり、プロセスＡ及びＢを実行する。タイミング制御部６４は、基準タイミング並びに動作タイミングＸ及びＹを生成する。タイミング制御部６４は、一定クロックを発生する発振器（不図示）を用いて、それらのタイミングを生成することができる。尚、タイミング制御部６４が、プロセス間通信部６３に内在していると考えても構わない。
【００４２】
プロセス間通信部６３は、プロセスＡの出力データをプロセスＢにて利用できるようにするための処理を実行する。図９に、この処理を実現するための回路構成例を示す。図９における保持用メモリ７１及び入力用メモリ７２をプロセス間通信部６３に設けておくことができる。プロセスＡは保持用メモリ７１に自身の出力データを自由に書き込むことができ、プロセスＢは入力用メモリ７２に書き込まれたデータを自由に読み出すことができる。
【００４３】
図９の回路を用いた具体的な動作例を説明する。タイミングＴ2及びＴ3間の区間において、プロセスＡ［２］が自身の出力データＤＴA[2]を保持用メモリ７１に書き込む。或いは、タイミングＴ3以降であって且つタイミング（Ｔ3＋Δ）以前のタイミングにおいて、出力データＤＴA[2]が保持用メモリ７１に書き込まれても良い。データＤＴA[2]が保持用メモリ７１に書き込まれた後、タイミング（Ｔ3＋Δ）に至るまでに、プロセス通信部６３は、保持用メモリ７１に書き込まれたデータＤＴA[2]を入力用メモリ７２に転送する。これにより、タイミング（Ｔ3＋Δ）から始まる２回目のプロセスＢ用の区間において、プロセスＢ［２］は、入力用メモリ７２内のデータＤＴA[2]にアクセスできるようになり、データＤＴA[2]に基づいて必要な演算動作を行うことができる。
【００４４】
また、タイミングＴ1及びＴ2間の区間において、プロセスＡ［１］が自身の出力データＤＴA[1]を保持用メモリ７１に書き込んでいたならば、該データＤＴA[1]も、タイミング（Ｔ3＋Δ）に至るまでに入力用メモリ７２に転送され、プロセスＢ［２］はデータＤＴA[2]だけでなくデータＤＴA[1]も入力用メモリ７２から読み出すことが可能となる。プロセスＢ［２］とプロセスＡ［２］（及びＡ［１］）との間におけるデータ受け渡しについて説明したが、他のプロセスＢ及びＡ間のデータ受け渡し（例えば、プロセスＢ［３］とプロセスＡ［４］（及びＡ［３］）との間におけるデータ受け渡し）についても同様である。
【００４５】
第２実施形態によっても、注目動作タイミングＸ前（例えばタイミングＴ3前）におけるプロセスＡの出力データを、注目動作タイミングＹ後（例えばタイミング（Ｔ3＋ΔＴ））においてプロセスＢが利用できるようになる。つまり、プロセスＡ及びＢの動作タイミング列が異なっていても、プロセスＡ及びＢ間で正しいデータの受け渡し（換言すれば、最新のデータの受け渡し）ができるようになる。また、この受け渡しを簡易な機構にて実現することができる。
【００４６】
＜＜第３実施形態＞＞
上述してきた各プロセスを、リコンフィギャラブルプロセッサ上で動作させることができ、そのような動作を実現する実施の形態を、第３実施形態として説明する。第３実施形態は、第１又は第２実施形態を基礎にした実施形態であり、矛盾なき限り、第１又は第２実施形態の記載が第３実施形態にも適用される。
【００４７】
図１０は、第３実施形態に係る演算処理装置１００の概略ブロック図である。演算処理装置１００は、リコンフィギャラブルプロセッサ１０１及び１０２と、リコンフィギャラブルプロセッサ１０１及び１０２間でデータのやり取りを行うためのプロセス間通信部１０３と、タイミング制御部１０４と、を備える。
【００４８】
各リコンフィギャラブルプロセッサは、論理回路の再構成を可能とする機能を備え、与えられた設定情報に応じて、各リコンフィギャラブルプロセッサ内で実際に実行される処理の内容が定められる。リコンフィギャラブルプロセッサ１０１（以下、プロセッサ１０１と略記する）の内部に四則演算や論理演算などを行う複数のＡＬＵ（Arithmetic and Logic Unit）がアレイ状に並べられ、リコンフィギャラブルプロセッサ１０１に対する設定情報に応じて該複数のＡＬＵを接続することによりリコンフィギャラブルプロセッサ１０１において所望のプロセスを実行することが可能となる。リコンフィギャラブルプロセッサ１０２（以下、プロセッサ１０２と略記する）についても同様である。
【００４９】
プロセッサ１０１及び１０２にて実行されるプロセスは、タイミング制御部１０４にて生成される動作タイミングに従って動作する。該動作タイミングは、プロセスの処理内容等に応じて任意に設定され、プロセス間で異なるものであっても良い。また、タイミング制御部１０４にて生成される動作タイミングは、プロセッサ１０１及び／又は１０２の出力に応じて変更されるものであってもよい。
【００５０】
プロセッサ１０１上で動作するプロセスとプロセッサ１０２上で動作するプロセスとの間の通信は、プロセス間通信部１０３を介して行われる。プロセス間通信部１０３は、タイミング制御部１０４にて生成される動作タイミングに応じて、プロセス間のデータのやり取りを行わせる。
【００５１】
ここで、プロセッサ１０１及び１０２において実行されるプロセスが夫々プロセスＡ及びＢであるとする。そうすると、プロセッサ１０１及び１０２は図１のプロセス実行部１１及び１２として機能すると共にプロセス間通信部１０３及びタイミング制御部１０４は図１のプロセス間通信部１３及びタイミング制御部１４として機能する。或いは、プロセッサ１０１及び１０２は図８のプロセス実行部６１及び６２として機能すると共にプロセス間通信部１０３及びタイミング制御部１０４は図８のプロセス間通信部６３及びタイミング制御部６４として機能する。
【００５２】
上述の各実施形態は、本発明の実施の形態の例に過ぎず、それらを様々に変形できることは言うまでもない。尚、上述した説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。
【符号の説明】
【００５３】
１０、６０、１００  演算処理装置
１１、１２、６１、６２  プロセス実行部
１３、６３、１０３  プロセス間通信部
１４、６４、１０４  タイミング制御部
１０１、１０２  リコンフィギャラブルプロセッサ
【図１】
2011039698.tif 000003
【図２】
2011039698.tif 000004
【図３】
2011039698.tif 000005
【図４】
2011039698.tif 000006
【図５】
2011039698.tif 000007
【図６】
2011039698.tif 000008
【図７】
2011039698.tif 000009
【図８】
2011039698.tif 000010
【図９】
2011039698.tif 000011
【図１０】
2011039698.tif 000012