(57)【要約】【課題】タスクコントローラを設けることなく、複数のプロセスの動作タイミングを最適化する。【解決手段】演算コア１０［１］〜１０［３］は、夫々、プロセスＡ、Ｂ及びＣを実行する。演算コア１０［ｉ］は、自身に入力される動作制御信号Ｔｉｎ［ｉ］がアクティブになった時にプロセスを実行し、プロセスの動作に基づき、アクティブ又はノンアクティブの動作制御信号Ｔｏｕｔ［ｉ］を生成及び出力する。信号生成回路３０は、周期的にアクティブとなる動作制御信号Ｔｏｕｔ［０］を出力する。例えば、Ｔｏｕｔ［０］をＴｉｎ［１］として演算コア１０［１］に入力し、Ｔｏｕｔ［１］をＴｉｎ［２］として演算コア１０［２］に入力するように各選択回路を動作させる。そうすると、プロセスＡの動作に基づき、必要な時にプロセスＢを動作させることが可能となる。【選択図】図１
2011103029.tif 000002
【特許請求の範囲】
【請求項１】
動作制御信号群を形成する何れかの動作制御信号に従って演算処理を実行する複数のプロセスが動作する演算処理装置において、
前記動作制御信号群に含まれる第１及び第２の動作制御信号の内、第１の動作制御信号を生成する信号生成回路を備え、
前記複数のプロセスに含まれる第１及び第２のプロセスの内、第１のプロセスは前記第１の動作制御信号に従って演算処理を実行する一方、前記第２のプロセスは前記第２の動作制御信号に従って演算処理を実行し、
前記第２の動作制御信号は、前記第１のプロセスの動作に基づいて生成される
ことを特徴とする演算処理装置。
【請求項２】
各プロセスに対する動作制御信号を前記動作制御信号群の中から選択する、或いは、各プロセスに対する動作制御信号を前記動作制御信号群に含まれる複数の動作制御信号から生成する選択回路を更に備えた
ことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
当該演算処理装置には設定データが与えられ、
前記設定データは、各プロセスの演算処理の内容を規定するデータと、前記選択回路の動作を規定するデータと、を含む
ことを特徴とする請求項２に記載の演算処理装置。
【請求項４】
当該演算処理装置には設定データが与えられ、
前記設定データは、各プロセスの演算処理の内容を規定するデータと、前記信号生成回路の動作を規定するデータと、を含む
ことを特徴とする請求項１〜請求項３の何れかに記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、様々な演算処理を行う演算処理装置に関する。
【背景技術】
【０００２】
近年、複数のプロセスを同時に実行することのできる演算処理装置の開発が進められている。プロセスとは、あるまとまった一連の演算を指し、プロセスによって所定の演算処理が実行される。所謂スレッドもプロセスの一種である。プロセスは、定められた動作タイミングに従って繰り返し実行される。
【０００３】
実際のアプリケーションにおいて、通常、プロセスの最適な動作周期はプロセスごとに異なる。そのため、複数のプロセスの動作タイミングを全て同一にすれば、最適な動作周期にて動作しないプロセスが発生し、該プロセスでは動作効率が低下する。
【０００４】
このような動作効率の低下を回避すべく、複数のプロセスを実行可能な演算処理装置には、タスクコントローラが設けられていることが多い（例えば、特許文献１参照）。図５に、タスクコントローラを有する従来の演算処理装置の概略ブロック図を示す。図５の演算処理装置には、各々がプロセスを実行する演算コア９０１及び９０２と、各演算コアの動作を制御するタスクコントローラ９０３が設けられている。タスクコントローラ９０３は、演算コア９０１及び９０２にて実行される各プロセスの動作周期が最適となるように、演算コア９０１及び９０２を制御する。演算コア９０１の演算結果に依存して演算コア９０２を動作させることが必要な場合もある。この場合、タスクコントローラ９０３は、演算コア９０１の出力演算データに基づき、演算コア９０２の動作の要否を判断して演算コア９０２の動作を制御する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２４２９４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
図５の演算処理装置では、演算コアの個数が２であるが、タスクコントローラが動作を制御すべき演算コアは多数個存在する場合もあり、一般に、タスクコントローラの回路構成は複雑である。タスクコントローラを省略することができたならば、演算処理装置の構成簡素化及び低消費電力化が図られる。構成簡素化等が有益であることは、言うまでもない。
【０００７】
そこで本発明は、複数のプロセスの動作タイミングの最適化を簡素な構成で実現することのできる演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る動作制御信号群を形成する何れかの動作制御信号に従って演算処理を実行する複数のプロセスが動作する演算処理装置において、前記動作制御信号群に含まれる第１及び第２の動作制御信号の内、第１の動作制御信号を生成する信号生成回路を備え、  前記複数のプロセスに含まれる第１及び第２のプロセスの内、第１のプロセスは前記第１の動作制御信号に従って演算処理を実行する一方、前記第２のプロセスは前記第２の動作制御信号に従って演算処理を実行し、前記第２の動作制御信号は、前記第１のプロセスの動作に基づいて生成されることを特徴とする。
【０００９】
上記演算処理装置によれば、第１のプロセスが第２のプロセスの実行を必要と判断したときに、第１のプロセスの動作に基づき、第２の動作制御信号の生成を介して第２のプロセスが実行される。信号生成回路による第１の動作制御信号の生成最適化、及び、第１のプロセスによる第２の動作制御信号の生成最適化を行えば、各プロセスの動作タイミングを最適化することが可能である。そして、これを実現するに当たり、上記演算処理装置では、図５に示すようなタスクコントローラが不要である。上記演算処理装置では、タスクコントローラの処理をプロセスが実行することで、タスクコントローラを不要としている。故に、構成簡素化及び低消費電力化が図られる。
【００１０】
また例えば、各プロセスに対する動作制御信号を前記動作制御信号群の中から選択する、或いは、各プロセスに対する動作制御信号を前記動作制御信号群に含まれる複数の動作制御信号から生成する選択回路を、当該演算処理装置に更に設けてもよい。
【００１１】
また例えば、当該演算処理装置には設定データが与えられ、前記設定データは、各プロセスの演算処理の内容を規定するデータと、前記選択回路の動作を規定するデータと、を含んでいても良い。
【００１２】
或いは例えば、当該演算処理装置には設定データが与えられ、前記設定データは、各プロセスの演算処理の内容を規定するデータと、前記信号生成回路の動作を規定するデータと、を含んでいても良い。
【発明の効果】
【００１３】
本発明によれば、複数のプロセスの動作タイミングの最適化を簡素な構成で実現することのできる演算処理装置を提供することが可能となる。
【００１４】
本発明の意義ないし効果は、以下に示す実施の形態の説明により更に明らかとなろう。ただし、以下の実施の形態は、あくまでも本発明の一つの実施形態であって、本発明ないし各構成要件の用語の意義は、以下の実施の形態に記載されたものに制限されるものではない。
【図面の簡単な説明】
【００１５】
【図１】本発明の一実施形態に係る演算処理装置の全体ブロック図である。
【図２】図１に示される１つの演算コアの内部ブロック図である。
【図３】図２の演算コアに含まれるＡＬＵアレイ回路の内部構成図である。
【図４】複数のプロセスの動作タイミング関係例を表す図である。
【図５】従来の演算処理装置の概略ブロック図である。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態につき、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。また、本明細書では、記述の簡略化上、符号又は記号を表記することによって、その符号又は記号に対応する名称を省略又は簡略化することがある。例えば、後述の動作制御信号Ｔｏｕｔ［０］を、信号Ｔｏｕｔ［０］、又は、単にＴｏｕｔ［０］と表記することがある（Ｔｏｕｔ［１］等についても同様）。
【００１７】
図１は、本発明の一実施形態に係る演算処理装置１の全体ブロック図である。演算処理装置１は、演算コア１０［１］、１０［２］及び１０［３］と、選択回路２０［１］、２０［２］及び２０［３］と、信号生成回路３０と、設定部４０と、を備える。
【００１８】
演算コア１０［１］〜１０［３］の夫々ではプロセスが実行される。プロセスとは、あるまとまった一連の演算を指し、プロセスによって所定の演算処理が実行される（或いは、プロセスそのものが演算処理であると解釈することできる）。所謂スレッドもプロセスの一種である。演算コア１０［１］、１０［２］及び１０［３］にて実行されるプロセスを、夫々、プロセスＡ、プロセスＢ及びプロセスＣと呼ぶ。
【００１９】
図１に示すように、演算コア１０［１］、１０［２］及び１０［３］には、夫々、動作制御信号Ｔｉｎ［１］、Ｔｉｎ［２］及びＴｉｎ［３］が入力され、演算コア１０［１］、１０［２］及び１０［３］から、夫々、動作制御信号Ｔｏｕｔ［１］、Ｔｏｕｔ［２］及びＴｏｕｔ［３］が出力される。信号生成回路３０は、動作制御信号Ｔｏｕｔ［０］を出力する。
【００２０】
動作制御信号Ｔｏｕｔ［０］〜Ｔｏｕｔ［３］及びＴｉｎ［１］〜Ｔｉｎ［３］の夫々は論理信号であって、アクティブ又はノンアクティブの論理値を有する。アクティブの論理値を有する動作制御信号Ｔｏｕｔ［０］をアクティブの動作制御信号Ｔｏｕｔ［０］と呼び、ノンアクティブの論理値を有する動作制御信号Ｔｏｕｔ［０］をノンアクティブの動作制御信号Ｔｏｕｔ［０］と呼ぶ。Ｔｏｕｔ［０］以外の動作制御信号についても同様である。
【００２１】
選択回路２０［１］は、動作制御信号Ｔｏｕｔ［０］、Ｔｏｕｔ［２］及びＴｏｕｔ［３］の内の何れか１つを選択し、選択した動作制御信号を動作制御信号Ｔｉｎ［１］として出力する。選択回路２０［２］は、動作制御信号Ｔｏｕｔ［０］、Ｔｏｕｔ［１］及びＴｏｕｔ［３］の内の何れか１つを選択し、選択した動作制御信号を動作制御信号Ｔｉｎ［２］として出力する。選択回路２０［３］は、動作制御信号Ｔｏｕｔ［０］、Ｔｏｕｔ［１］及びＴｏｕｔ［２］の内の何れか１つを選択し、選択した動作制御信号を動作制御信号Ｔｉｎ［３］として出力する。
【００２２】
設定部４０には設定データが格納されている。設定データには、信号生成回路３０の動作を規定する第１設定データと、選択回路２０［１］〜２０［３］の動作を規定する第２設定データと、プロセスＡ、Ｂ及びＣの演算処理の内容を規定する第３設定データと、が含まれる。第１設定データによって、動作制御信号Ｔｏｕｔ［０］がアクティブに成るタイミングが規定される。第２設定データによって、選択回路２０［１］〜２０［３］において何れのタイミングに何れの動作制御信号を選択するのかが規定される。
【００２３】
従って、信号生成回路３０は、第１設定データに従うタイミングにおいてアクティブとなり、それ以外のタイミングでノンアクティブとなる動作制御信号Ｔｏｕｔ［０］を生成する。選択回路２０［１］は、第２設定データに従うタイミングにおいて、動作制御信号Ｔｏｕｔ［０］、Ｔｏｕｔ［２］及びＴｏｕｔ［３］の内の何れか１つを第２設定データに従って選択し、選択した信号を動作制御信号Ｔｉｎ［１］として出力する。選択回路２０［２］及び２０［３］についても同様である。
【００２４】
信号生成回路３０は、ＰＬＬ（Phase-locked loop）等から成る回路であっても良いし、外部から入力される信号に基づいて動作制御信号Ｔｏｕｔ［０］を生成する回路であっても良い。
【００２５】
図２は、演算コア１０［１］の内部ブロック図であり、演算コア１０［１］は、ＡＬＵアレイ回路１１［１］と、ランダムアクセスメモリにて形成されるデータＲＡＭ１２［１］及びコマンドＲＡＭ１３［１］と、シーケンサ１４［１］と、動作制御信号生成回路１５［１］と、を備える。
【００２６】
演算コア１０［２］及び１０［３］の夫々の内部ブロック図は、演算コア１０［１］におけるそれと同様であるため、図示を省略する。ＡＬＵアレイ回路１１［１］、データＲＡＭ１２［１］、コマンドＲＡＭ１３［１］、シーケンサ１４［１］及び動作制御信号生成回路１５［１］と同等の機能を備えるＡＬＵアレイ回路１１［２］、データＲＡＭ１２［２］、コマンドＲＡＭ１３［２］、シーケンサ１４［２］及び動作制御信号生成回路１５［２］が演算コア１０［２］に設けられ、ＡＬＵアレイ回路１１［１］、データＲＡＭ１２［１］、コマンドＲＡＭ１３［１］、シーケンサ１４［１］及び動作制御信号生成回路１５［１］と同等の機能を備えるＡＬＵアレイ回路１１［３］、データＲＡＭ１２［３］、コマンドＲＡＭ１３［３］、シーケンサ１４［３］及び動作制御信号生成回路１５［３］が演算コア１０［３］に設けられている。
【００２７】
プロセスＡは、コマンドＲＡＭ１３［１］から提供されるコマンドの下、ＡＬＵアレイ回路１１［１］にて実行され、プロセスＢは、コマンドＲＡＭ１３［２］から提供されるコマンドの下、ＡＬＵアレイ回路１１［２］にて実行され、プロセスＣは、コマンドＲＡＭ１３［３］から提供されるコマンドの下、ＡＬＵアレイ回路１１［３］にて実行される。演算コア１０［１］〜１０［３］にて実行されるプロセスの具体的内容が異なる以外、演算コア１０［１］〜１０［３］は同様のものであるので、特に必要の無い限り、以下では、演算コア１０［１］の構成及び動作を説明し、演算コア１０［２］及び１０［３］についての説明を割愛する。但し、変数ｉ又はｊを用いて、演算コア１０［１］〜１０［３］の共通事項等を説明することもある。変数ｉ又はｊは１以上３以下の整数であって、ｉ≠ｊである。
【００２８】
ＡＬＵアレイ回路１１［１］は、図３に示されるようなリコンフィギャラブル回路であり、論理回路の再構成を可能とする機能を備える。ＡＬＵアレイ回路１１［１］は、四則演算や論理演算などを行う、複数段に分けて配列された複数のＡＬＵ（Arithmetic and Logic Unit）と、各ＡＬＵの出力データを保持する保持回路（Ｄ型フリップフロップ等）と、前段のＡＬＵと後段のＡＬＵを接続することで前段のＡＬＵの出力データを後段のＡＬＵに入力する接続部と、を備える。各ＡＬＵにて実行される演算の内容及び接続部における接続関係は、上記第３設定データを変更することによって変更可能である。
【００２９】
データＲＡＭ１２［１］は、ＡＬＵアレイ回路１１［１］の演算によって得られたＡＬＵアレイ回路１１［１］の出力演算データを記憶すると共に、データＲＡＭ１２［１］に記憶されたデータをＡＬＵアレイ回路１１［１］に与える。演算処理装置１に設けられたデータ共有部（不図示）を介して、ＡＬＵアレイ回路１１［ｉ］内のデータＲＡＭ１２［ｉ］の記録データを、他のＡＬＵアレイ回路１１［ｊ］内のデータＲＡＭ１２［ｊ］に転送することが可能となっている。
【００３０】
従って例えば、ＡＬＵアレイ回路１１［２］の演算によって得られたＡＬＵアレイ回路１１［２］の出力演算データを、データＲＡＭ１２［２］及び１２［１］を介してＡＬＵアレイ回路１１［１］に与えることが可能であり、ＡＬＵアレイ回路１１［１］は、ＡＬＵアレイ回路１１［２］の出力演算データを用いてプロセスＡを実行することが可能である。逆に、ＡＬＵアレイ回路１１［１］の演算によって得られたＡＬＵアレイ回路１１［１］の出力演算データを、データＲＡＭ１２［１］及び１２［２］を介してＡＬＵアレイ回路１１［２］に与えることが可能であり、ＡＬＵアレイ回路１１［２］は、ＡＬＵアレイ回路１１［１］の出力演算データを用いてプロセスＢを実行することが可能である。
【００３１】
コマンドＲＡＭ１３［１］は、ＡＬＵアレイ回路１１［１］に提供すべきコマンドを表すコマンドデータを格納している。演算コア１０［１］において、コマンドは、ＡＬＵアレイ回路１１［１］に対して所定の演算処理の実行を指示する命令である。ユーザは、コマンドデータを変更することで所望の演算処理を各演算コア１０［ｉ］で実行させることができる。コマンドデータの変更を、上記第３設定データの変更によって実現することができる。ユーザは、Ｃ言語等のプログラミング言語を用いて記述されたプログラムを第３設定データとして設定部４０に与えることで、該プログラムを表すコマンド列を各コマンドＲＡＭ１３［ｉ］に格納させることができる。尚、ここにおけるユーザとは、例えば、演算処理装置１の利用者である電機製品メーカーの開発者である。
【００３２】
シーケンサ１４［１］は、動作制御信号Ｔｉｎ［１］及びＡＬＵアレイ回路１１［１］から出力されるシーケンサ制御データに従って、コマンドＲＡＭ１３［１］のアドレスを指定するアドレスデータをコマンドＲＡＭ１３［１］に出力する。アドレスデータがコマンドＲＡＭ１３［１］に与えられた時、コマンドＲＡＭ１３［１］は、該アドレスデータに指定されたアドレスに格納されているコマンドデータをＡＬＵアレイ回路１１［１］に出力する。
【００３３】
シーケンサ制御データは、コマンドＲＡＭ１３［１］に供給されるべきアドレスデータを、ＡＬＵアレイ回路１１［１］の演算結果に基づきＡＬＵアレイ回路１１［１］自身が制御するためのものである。例えば、回路１１［１］の演算処理内で「Ｙｅｓ」及び「Ｎｏ」のどちらかを選択する分岐処理が発生した場合において、回路１１［１］の演算結果に応じて「Ｙｅｓ」が選択されると、回路１１［１］は第１サブルーチンに対応する第１シーケンサ制御データを出力する一方、回路１１［１］の演算結果に応じて「Ｎｏ」が選択されると、回路１１［１］は第２サブルーチンに対応する第２シーケンサ制御データを出力する。シーケンサ１４［１］は、第１シーケンサ制御データが与えられると、第１サブルーチンのプログラム（コマンド）の開始アドレスをアドレスデータとしてコマンドＲＡＭ１３［１］に供給する一方、第２シーケンサ制御データが与えられると、第２サブルーチンのプログラム（コマンド）の開始アドレスをアドレスデータとしてコマンドＲＡＭ１３［１］に供給する。これにより、第１シーケンサ制御データの出力後には、速やかに第１サブルーチンの演算処理が回路１１［１］にて実行され、第２シーケンサ制御データの出力後には、速やかに第２サブルーチンの演算処理が回路１１［１］にて実行されるようになる。
【００３４】
動作制御信号生成回路１５［１］は、動作制御信号Ｔｉｎ［１］及びＡＬＵアレイ回路１１［１］から出力される動作制御データに基づいて動作制御信号Ｔｏｕｔ［１］を生成し、生成した信号Ｔｏｕｔ［１］を出力する。ＡＬＵアレイ回路１１［１］は、プロセスＡの中で、所望の演算に加え、自身の演算コア１０［１］から出力されるべき動作制御信号Ｔｏｕｔ［１］をアクティブにするか否かを決定し、その決定内容に従った動作制御データを回路１５［１］に出力する。回路１５［１］は、与えられた動作制御データを保持し、Ｔｉｎ［１］がアクティブになった時点で保持している動作制御データの値を、動作制御信号Ｔｏｕｔ［１］として出力する。プロセスＡの中で動作制御信号Ｔｏｕｔ［１］をアクティブにすると決定された場合の動作制御データの値はアクティブ（例えば１）であり、そうでない場合、その値はノンアクティブ（例えば０）である。
【００３５】
各演算コア１０［ｉ］は、自身に入力される動作制御信号Ｔｉｎ［ｉ］がアクティブになったタイミングにて、プロセスの実行を開始する。具体的には、シーケンサ１４［１］に与えられる動作制御信号Ｔｉｎ［１］がノンアクティブからアクティブに遷移した時点において、シーケンサ１４［１］はプロセスＡの開始処理に対応したコマンドＲＡＭ１３［１］のアドレスを指定し、これによってプロセスＡの実行が開始される。演算コア１０［２］及び１０［３］についても同様である。動作制御信号Ｔｉｎ［ｉ］におけるノンアクティブからアクティブへの遷移が周期的に或いは非周期的に生じることによって、各演算コア１０［ｉ］では、対応するプロセスが繰り返し実行される。尚、第１及び第２サブルーチンを例示した上述の説明からも明らかであるが、プロセスＡ内で実際に実行される演算は、プロセスＡ内の分岐処理によって時々で異なる場合がある（他のプロセスについても同様）。
【００３６】
上述の第１、第２及び第３設定データを含む設定データは、外部から提供されても良く、ユーザは、演算処理装置１で実行させたいアプリケーションの内容によって設定データを自由に設計することができる。演算処理装置１では、設定データの設計を通じて、ユーザが各動作制御信号を自由に設定することができるため、様々なアプリケーションに対応することができる。
【００３７】
図４を参照して、プロセスＡ及びＢの動作タイミング例を説明する。プロセスＡは、離散的に順次訪れる動作タイミングＸを基準にした各区間において動作し、プロセスＢは、離散的に順次訪れる動作タイミングＹを基準にした各区間において動作する。図４において、上方側に記載された８つの矢印の夫々は動作タイミングＸに対応しており、下方側に記載された４つの矢印の夫々は動作タイミングＹに対応している。
【００３８】
時間が経過するにつれて、基準タイミングＴ1、Ｔ2、Ｔ3、Ｔ4、Ｔ5、Ｔ6、Ｔ7、Ｔ8・・・、がこの順番で訪れるものとする。即ち基準タイミングＴk+1は基準タイミングＴkの後に訪れるタイミングである（ｋは自然数）。隣接する基準タイミング間の時間長さは一定であるとする（但し、それは一定でなくても構わない）。
【００３９】
図４の動作例では、プロセスＡを実行する演算コア１０［１］は動作制御信号Ｔｏｕｔ［０］に従って動作し（換言すれば、プロセスＡは動作制御信号Ｔｏｕｔ［０］に従って演算処理を実行し）、プロセスＢを実行する演算コア１０［２］は演算コア１０［１］にて生成された動作制御信号Ｔｏｕｔ［１］に従って動作する（換言すれば、プロセスＢはプロセスＡの動作に基づいて生成された動作制御信号Ｔｏｕｔ［１］に従って演算処理を実行する）。これを実現すべく、選択回路２０［１］は、常にＴｏｕｔ［０］をＴｉｎ［１］として選択する、或いは、少なくとも動作タイミングＸにおいてＴｏｕｔ［０］をＴｉｎ［１］として選択する。同様に、選択回路２０［２］は、常にＴｏｕｔ［１］をＴｉｎ［２］として選択する、或いは、少なくとも動作タイミングＹにおいてＴｏｕｔ［１］をＴｉｎ［２］として選択する。このため、図４の動作例の実現時においては、選択回路２０［１］及び２０［２］を演算処理装置１から省略することも可能である（この場合、Ｔｏｕｔ［０］を直接Ｔｉｎ［１］として演算コア１０［１］に入力すると共に、Ｔｏｕｔ［１］を直接Ｔｉｎ［２］として演算コア１０［２］に入力すればよい）。
【００４０】
図４の動作例に限らず、演算処理装置１にて実現しようとする動作の内容によっては、演算処理装置１から選択回路を省略することも可能である。例えば、“演算コア１０［ｉ］に入力される動作制御信号Ｔｉｎ［ｉ］が動作制御信号Ｔｏｕｔ［０］〜Ｔｏｕｔ［３］の何れであるかが固定されている（即ち、Ｔｏｕｔ［０］〜Ｔｏｕｔ［３］の内の何れがＴｉｎ［ｉ］として演算コア１０［ｉ］に入力されるのかが予め定められており、その定めが時間経過に対して不変である）”という条件が満たされるならば演算処理装置１から選択回路２０［ｉ］を省略することが可能である。図４の動作例は、この条件を満たす動作の一例である。
【００４１】
ｋ番目の動作タイミングＸは基準タイミングＴkと一致する。演算コア１０［１］は、ｋ番目の動作タイミングＸから始まる区間であって且つ所定時間長さを有する区間において、ｋ回目のプロセスＡを実行する。これを実現すべく、信号生成回路３０は、基準タイミングＴkにおいてＴｏｕｔ［０］をアクティブとし、基準タイミングＴk以外のタイミングにおいてＴｏｕｔ［０］をノンアクティブとする。
【００４２】
ｋ回目のプロセスＡを特にプロセスＡ［ｋ］と表記する。１回分のプロセスＡの動作時間は、隣接する基準タイミングＴk及びＴk+1間の時間長さ以下である。従って例えば、基準タイミングＴ1と一致する１番目の動作タイミングＸにおいてプロセスＡ［１］が実行開始され、プロセスＡ［１］は基準タイミングＴ2までに終了する。同様に例えば、基準タイミングＴ2と一致する２番目の動作タイミングＸにおいてプロセスＡ［２］が実行開始され、プロセスＡ［２］は基準タイミングＴ3までに終了する。プロセスＡ［３］等についても同様である。
【００４３】
図４の動作例では、２回分のプロセスＡの実行に対して１回分のプロセスＢが実行された後、３回分のプロセスＡの実行に対して１回分のプロセスＢが実行され、更にその後、２回分のプロセスＡの実行に対して１回分のプロセスＢが実行されている。その後、同様の実行比率にてプロセスＡ及びＢが反復実行される。具体的には、１番目、２番目、３番目及び４番目の動作タイミングＹは、夫々、基準タイミングＴ1、Ｔ3、Ｔ6及びＴ8である。
【００４４】
演算コア１０［２］は、ｋ番目の動作タイミングＹから始まる区間であって且つ所定時間長さを有する区間において、ｋ回目のプロセスＢを実行する。ｋ回目のプロセスＢを特にプロセスＢ［ｋ］と表記する。１回分のプロセスＢの動作時間は、隣接する基準タイミングＴk及びＴk+1間の時間長さの２倍又は２倍未満である。但し、プロセスＢ［２］の動作時間は、基準タイミングＴk及びＴk+1間の時間長さの２倍より長くても構わない（但し３倍以下とされる）。
【００４５】
従って、基準タイミングＴ1と一致する１番目の動作タイミングＹにおいてプロセスＢ［１］が実行開始され、プロセスＢ［１］は基準タイミングＴ3までに終了する。基準タイミングＴ3と一致する２番目の動作タイミングＹにおいてプロセスＢ［２］が実行開始され、プロセスＢ［２］は基準タイミングＴ6までに終了する。基準タイミングＴ6と一致する３番目の動作タイミングＹにおいてプロセスＢ［３］が実行開始され、プロセスＢ［３］は基準タイミングＴ8までに終了する。プロセスＢ［３］以降のプロセスＢも同様である。
【００４６】
今、「プロセスＡの２回実行に対して１回だけ動作制御信号Ｔｏｕｔ［１］をアクティブにし、その後、プロセスＡの３回実行に対して１回だけ動作制御信号Ｔｏｕｔ［１］をアクティブにし、更にその後、プロセスＡの２回実行に対して１回だけ動作制御信号Ｔｏｕｔ［１］をアクティブにする」という一連の動作を、便宜上、動作αと呼ぶ。プロセスＡのプログラムによって動作αが実現され、そのプログラムに沿った演算処理がＡＬＵアレイ回路１１［１］にて実行される（プロセスＡのプログラムを表すコマンド列はコマンドＲＡＭ１３［１］に格納されている）。
【００４７】
プロセスＡの演算結果と関係なく動作αが実現されるように、プロセスＡのプログラムが形成されていても良い。この場合、ＡＬＵアレイ回路１１［１］は、プロセスＡの演算結果と関係なく、プロセスＡ［２］の中で基準タイミングＴ3以前にアクティブの値を有する動作制御データを回路１５［１］に出力し、プロセスＡ［５］の中で基準タイミングＴ6以前にアクティブの値を有する動作制御データを回路１５［１］に出力し、プロセスＡ［７］の中で基準タイミングＴ8以前にアクティブの値を有する動作制御データを回路１５［１］に出力する。プロセスＡ［２］の中で基準タイミングＴ3以前にアクティブの値を有する動作制御データが回路１５［１］に出力された場合、基準タイミングＴ3においてアクティブの動作制御信号Ｔｏｕｔ［１］が回路１５［１］から出力され、結果、プロセスＢ［２］が起動する。基準タイミングＴ3以外の基準タイミングに関する動作も同様である。
【００４８】
或いは、プロセスＡの演算結果に応じて動作タイミングＹが決定されても良い。但し、この場合は、プロセスＡの演算結果に応じて、動作タイミングＹが図４に示すものと異なってくる可能性がある。即ち、プロセスＡの演算結果に応じて、動作αそのものが実現されることもあるし、動作αと異なる動作が実現されることもある（例えば、プロセスＡ［４］の演算結果に応じて３番目の動作タイミングＹがＴ5になることもある）。
【００４９】
プロセスＡの演算結果と関係なく動作タイミングＹが決定される場合でも、プロセスＡの演算結果に応じて動作タイミングＹが決定される場合でも、動作タイミングＹがプロセスＡの動作に基づいて決定されることに変わりはない（換言すれば、アクティブの動作制御信号Ｔｏｕｔ［１］及びＴｉｎ［２］がプロセスＡの動作に基づいて生成されることに変わりはない）。尚、プロセスＡの演算結果とは、ＡＬＵアレイ回路１１［１］の演算によって得られたＡＬＵアレイ回路１１［１］の出力演算データを含む。同様に、プロセスＢの演算結果とは、ＡＬＵアレイ回路１１［２］の演算によって得られたＡＬＵアレイ回路１１［２］の出力演算データを含む。プロセスＣについても同様である。
【００５０】
注目時点におけるプロセスＢを、注目時点の直前に実行されたプロセスＡの演算結果を用いて行うことができる。即ち例えば、演算コア１０［２］は、プロセスＡ［２］の演算結果を用いてプロセスＢ［２］を実行することができると共に、プロセスＡ［５］の演算結果を用いてプロセスＢ［３］を実行することができ、そのような動作が実現されるように設定データを定めておくことができる。或るデータのサンプリング速度を比較的高いものから比較的低いものに変換する処理は一般的にダウンサンプリングと呼ばれるが、変換前のそれをプロセスＡに対応させ、変換後のそれをプロセスＢに対応させて考えた場合、上述の動作によってダウンサンプリングのような処理が実現される。尚、過去の複数回分のプロセスＡの演算結果を用いてプロセスＢを実行することも可能である。即ち例えば、演算コア１０［２］は、プロセスＡ［４］及びＡ［５］の演算結果を用いてプロセスＢ［３］を実行するようにしても良い。
【００５１】
また反対に、注目時点におけるプロセスＡを、注目時点の直前に実行されたプロセスＢの演算結果を用いて行うこともできる。即ち例えば、演算コア１０［１］は、プロセスＢ［１］の演算結果を用いてプロセスＡ［３］、Ａ［４］及びＡ［５］を実行することができると共に、プロセスＢ［２］の演算結果を用いてプロセスＡ［６］及びＡ［７］を実行することができ、そのような動作が実現されるように設定データを定めておくことができる。或るデータのサンプリング速度を比較的低いものから比較的高いものに変換する処理は一般的にアップサンプリングと呼ばれるが、変換前のそれをプロセスＢに対応させ、変換後のそれをプロセスＡに対応させて考えた場合、上述の動作によってアップサンプリングのような処理が実現される。尚、過去の複数回分のプロセスＢの演算結果を用いてプロセスＡを実行することも可能である。即ち例えば、演算コア１０［１］は、プロセスＢ［１］及びＢ［２］の演算結果を用いてプロセスＡ［６］及びＡ［７］を実行するようにしても良い。
【００５２】
図４には、プロセスＣの動作タイミングが示されていないが、プロセスＣを、離散的に順次訪れる動作タイミングＺを基準にした各区間において動作させることができる。選択回路２０［３］を介してＴｏｕｔ［０］をＴｉｎ［３］として演算コア１０［３］に供給することにより動作タイミングＺを動作タイミングＸと一致させるようにしても良いし、或いは、選択回路２０［３］を介してＴｏｕｔ［１］をＴｉｎ［３］として演算コア１０［３］に供給することにより動作タイミングＺを動作タイミングＹと一致させるようにしても良い。更に或いは、選択回路２０［３］を介してＴｏｕｔ［２］をＴｉｎ［３］として演算コア１０［３］に供給することにより動作タイミングＺを動作タイミングＸ及びＹと異ならせても良い。
【００５３】
尚、図４の動作例では、個々の動作タイミングＹが何れかの動作タイミングＸと一致している。即ち、動作タイミングＹを形成する夫々のタイミングＴ1、Ｔ3、Ｔ6・・・は、動作タイミングＸを形成する一部のタイミングＴ1、Ｔ3、Ｔ6・・・と一致している。しかしながら、前者のタイミングと後者のタイミングは、多少前後にずれていても良い。即ち例えば、プロセスＢ［１］が実行開始される１番目の動作タイミングＹは（Ｔ1＋ΔＴ）であっても良いし、プロセスＢ［２］が実行開始される２番目の動作タイミングＹは（Ｔ3＋ΔＴ）であっても良い（ΔＴは、時間を単位とした、正又は負の値）。３番目以降の動作タイミングＹについても同様である。
【００５４】
仮に、演算コアにて動作制御信号が生成されない場合、信号生成回路３０にて生成される動作制御信号Ｔｏｕｔ［０］がＴｉｎ［２］として演算コア１０［２］に入力されることになる。この場合、プロセスＢ［１］の処理は２つの区間（即ち、Ｔ1及びＴ2間の区間とＴ2及びＴ3間の区間）に分割されて実行されることになって、分割を伴う処理の冗長が発生し、処理効率が低下する。例えば、プロセスＢ［１］の全体的な演算を完了させるためには、Ｔ1及びＴ2間の区間の演算データをＴ2及びＴ3間の区間の演算に反映させる必要があり、この反映を実現するために、前者の区間では演算データを一旦データＲＡＭ１２［２］に保持させ且つ後者の区間では保持演算データを読み出す処理が必要となる（このような処理が必要となる分、処理効率が低下する）。更に、上記冗長の発生に伴って、プロセスＢ［１］をＴ1及びＴ3間の区間で完了することができず、プロセスＢ［１］の一部をＴ3及びＴ4間の区間を用いて実行せざるを得なくなる場合もある。
【００５５】
これに対し、本実施形態に係る演算処理装置１では、信号生成回路３０による動作制御信号Ｔｏｕｔ［０］に加えて、演算コア１０［ｉ］による動作制御信号Ｔｏｕｔ［ｉ］が存在し、Ｔｏｕｔ［ｉ］をも用いて各プロセスの動作が制御される。このため、上記のような冗長の発生を回避することができる。結果、各演算コアで実行されるプロセスを効率的に処理して処理時間を短縮することが可能となる。尚、放送波送受信処理では、ダウンサンプリングやアップサンプリングを伴う処理が多く見られるが、演算処理装置１によれば、図４に示すような動作を介してダウンサンプリングやアップサンプリングを伴う処理を効率的に処理することが可能となる。更に、演算処理装置１によれば、或る演算コアの動作を判断して他の演算コアの動作を判断するタスクコントローラのような複雑な制御回路が不要となるため、回路小型化及び低消費電力化が可能となる。
【００５６】
＜＜変形等＞＞
上述の説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。上述の実施形態の変形例または注釈事項として、以下に、注釈１〜注釈４を記す。各注釈に記載した内容は、矛盾なき限り、任意に組み合わせることが可能である。
【００５７】
［注釈１］
上述の実施形態では、１つの演算コアにて１つのプロセスが実行されているが、１つの演算コアにて複数のプロセスを実行するようにしても良い。この場合、その複数のプロセスに含まれる個々のプロセスを、当該プロセス以外のプロセスの動作により生成された動作制御信号に従って動作させると良く、これが実現されるように選択回路の選択動作を設定すると良い。
【００５８】
［注釈２］
上述の説明における各選択回路では、各選択回路の動作を規定する第２設定データに基づき、入力された複数の動作制御信号の内の１つを選択しているが、各選択回路において複数の動作制御信号の論理演算（論理和や論理積等の算出）を行い、その結果を出力させるようにしても良い。各選択回路にて、どのような論理演算を行わせるかを、第２設定データに規定しておくことができる。例えば、選択回路２０［１］にて、Ｔｏｕｔ［０］、Ｔｏｕｔ［２］及びＴｏｕｔ［３］の論理演算を行い、その論理演算の結果をＴｉｎ［１］として選択回路２０［１］から演算コア１０［１］に与えるようにしても良い。同様に例えば、選択回路２０［２］にて、Ｔｏｕｔ［０］、Ｔｏｕｔ［１］及びＴｏｕｔ［３］の論理演算を行い、その論理演算の結果をＴｉｎ［２］として選択回路２０［２］から演算コア１０［２］に与えるようにしても良い。選択回路２０［３］についても同様である。より具体的には例えば、選択回路２０［２］にてＴｏｕｔ［０］、Ｔｏｕｔ［１］及びＴｏｕｔ［３］の論理積を算出し、その論理積の値を有するＴｉｎ［２］を選択回路２０［２］から演算コア１０［２］に与えるようにしても良い。例えば、アクティブを論理値「１」に対応させ、ノンアクティブを論理値「０」に対応させることができる。
【００５９】
［注釈３］
上述の実施形態では、演算処理装置１に設けられる演算コアの個数が３となっているが、演算処理装置１に設けられる演算コアの個数は２以上であれば幾つでも良い。演算処理装置１にて実行されるプロセスの個数及び演算処理装置１に設けられる選択回路の個数は、演算コアの個数の増減に応じて増減する。
【００６０】
［注釈４］
図１の演算処理装置１を、ハードウェア、或いは、ハードウェアとソフトウェアの組み合わせによって構成することができる。ソフトウェアを用いて演算処理装置１を構成する場合、ソフトウェアにて実現される部位についてのブロック図は、その部位の機能ブロック図を表すことになる。ソフトウェアを用いて実現される機能をプログラムとして記述し、該プログラムをプログラム実行装置（例えばコンピュータ）上で実行することによって、その機能を実現するようにしてもよい
【符号の説明】
【００６１】
１  演算処理装置
１０［１］〜１０［３］  演算コア
２０［１］〜２０［３］  選択回路
３０  信号生成回路
４０  設定部
【図１】
2011103029.tif 000003
【図２】
2011103029.tif 000004
【図３】
2011103029.tif 000005
【図４】
2011103029.tif 000006
【図５】
2011103029.tif 000007