(57)【要約】【課題】複数のデバイスにより並列処理する際に、より高速に動作する処理装置及びデバイス制御ユニットを提供する。【解決手段】ＣＰＵ１が発したタスクグループの開始命令に対して、ＴＣＵ２がタスクグループ内のタスクを順序通りに対応するデバイスに実行させ、タスクグループ内の全てのタスクの処理が完了するまでの制御を行う。【選択図】図２
2008287562.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが少なくとも１種類のタスクを実行可能な複数のタスク処理デバイスを有する処理装置であって、
演算制御部と、
前記演算制御部の制御に従って、前記複数のタスク処理デバイスに少なくとも１種類のタスクを並列に実行させるデバイス制御ユニットと、
を有し、
前記演算制御部は、前記複数のタスク処理デバイスに複数の処理を実行させるためのタスクグループを生成して前記デバイス制御ユニットに送出し、
前記デバイス制御ユニットは、前記演算制御部が生成したタスクグループに従って、前記複数のタスク処理デバイスのそれぞれにタスクの処理の開始を指示し、
前記タスク処理デバイスのそれぞれは、前記デバイス制御ユニットから発行されたタスクを実行し、当該タスクが完了した際には当該タスクの完了を前記デバイス制御ユニットに対して通知し、
前記デバイス制御ユニットは、前記タスク処理デバイスより通知されたタスク完了通知を基に、前記タスクグループの全てのタスクが完了した際には、当該タスクグループの完了を前記演算制御部に対して通知する
処理装置。
【請求項２】
前記デバイス制御ブロックは、メッセージを使用して前記タスク処理デバイスのそれぞれにタスクの開始を指示し、
前記タスク処理デバイスは、割り込み信号を使用してタスクの完了を前記デバイス制御ユニットに対して通知する
請求項１に記載の処理装置。
【請求項３】
前記デバイス制御ユニットは、前記演算制御部より生成された前記タスクグループに記載された前記タスクの順序通りにタスクを前記複数のタスク処理デバイスに対して発行する
請求項１に記載の処理装置。
【請求項４】
前記デバイス制御ユニットは、前記複数のタスク処理デバイスの内の１つからタスクの完了が通知された際には、前記演算制御部が生成した前記タスクグループに記載された順序に従って、完了が通知されたタスクの次のタスクを前記複数のタスク処理デバイスに対して発行する
請求項３に記載の処理装置。
【請求項５】
前記デバイス制御ユニットは、割り込み信号を使用してタスクグループの完了を前記演算制御部に対して通知する
請求項４に記載の処理装置。
【請求項６】
前記デバイス制御ユニットは、前記タスクグループ内の少なくとも１種類のタスクを前記複数のタスク処理デバイスに実行させる際に、当該複数のタスク処理デバイス間で同期を取る
請求項５に記載の処理装置。
【請求項７】
前記デバイス制御ユニットは、
前記演算制御部が生成した前記タスクグループに従って、当該タスクグループ内のタスクの順序を取得し、当該順序どおりにタスクを発行する前記タスクグループ制御部と、
前記タスクグループ内のタスクを記憶するタスクメモリと、
を有する
請求項６に記載の処理装置。
【請求項８】
前記演算制御部は、前記デバイス制御ユニットからタスクグループの完了を前記デバイス制御ユニットから通知された際には、当該タスクグループの完了に関して所定の演算を実行し、当該所定の演算の終了後に当該演算の結果を基に新たなタスクグループを生成して前記デバイス制御ユニットに伝える
請求項７に記載の処理装置。
【請求項９】
演算制御部の制御に従って、少なくとも１種類のタスクを実行可能な複数のタスク処理デバイスを有する処理装置において、前記複数のタスク処理デバイスに少なくとも１種類のタスクを並列に実行させるデバイス制御ユニットであって、
前記演算制御部より生成された前記タスクグループに記載されたタスクの順序通りに前記複数のタスク処理デバイスに対してタスクを発行し、前記複数のタスク処理デバイスの内の１つからタスクの完了が通知された際には、前記演算制御部が生成した前記タスクグループに記載された順序に従って、完了が通知されたタスクの次のタスクを前記複数のタスク処理デバイスに対して発行し、前記タスクグループに記載された最後のタスクの完了が前記タスク処理デバイスより通知された場合に、タスクグループの完了を前記演算制御部に通知する
デバイス制御ユニット。
【請求項１０】
前記タスクグループ内の少なくとも１種類のタスクを前記複数のタスク処理デバイスに実行させる際に、当該複数のタスク処理デバイス間で同期を取る
請求項９に記載のデバイス制御ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数個のデバイス制御ユニットを有する処理装置及びデバイス制御ユニットに関する。
【背景技術】
【０００２】
複数の機能を有し、これらの機能を並列に実行することが可能な処理装置がある。
しかし、これら複数の機能を１つのＣＰＵ（中央演算装置）のみで管理しようとすると、頻繁に発生する割り込みに対する応答時間が長くなってしまうため、高速かつ効率的に全ての機能の管理を行うことが困難であった。
従来の複数の機能を並列に実行する処理装置の具体例について、図１を参照しながら簡単に説明する。
【０００３】
図１は、従来の複数の機能を並列に実行する処理装置１０００の構成の一例を示したブロック図である。
図１に示すように、処理装置１０００は、ＣＰＵ１００１と、割り込みコントローラ１００２と、複数（Ｎ個：Ｎは自然数）のデバイス１００３−１〜１００３−Ｎとを有する。
複数のデバイス１００３−１〜１００３−Ｎは複数の機能を実現するために処理を実行する処理ユニットであり、同期等所定の決まりによって連動して動作する。
割り込みコントローラ１００２は、各デバイスからの割り込みを管理し、ＣＰＵ１００１に通知する。
ＣＰＵ１００１は、割り込みコントローラ１００２からの割り込み通知を受け、各デバイスの割り込みを処理し、割り込みの解除を行う。
【０００４】
以下、具体例として、図１に示した処理装置１０００において、デバイス１００３−１における処理Ａの完了後にデバイス１００３−２において処理Ｂを行う場合の動作例について説明する。
【０００５】
１．ＣＰＵ１００１は、デバイス１００３−１内のレジスタに処理Ａを実行させるための設定を書き込む。
２．ＣＰＵ１００１は、デバイス１００３−２内のレジスタに処理Ｂを実行させるための設定を書き込む。
３．ＣＰＵ１００１は、デバイス１００３−１内のレジスタに処理Ａを開始するようデータを書き込む。
４．デバイス１００３−１は、処理Ａを実行する。
５．デバイス１００３−１は、処理Ａの実行が完了すると、割り込みをアサートする。
６．割り込みコントローラ１００２は、デバイス１００３−１からの割り込み要求を受け、割り込みの発生をＣＰＵ１００１に通知する。
７．ＣＰＵ１００１は、割り込み要因を特定し、デバイス１００３−１の割り込みの解除を行う。
８．ＣＰＵは、デバイス１００３−２内のレジスタに処理Ｂを開始するようデータを書き込む。
９．デバイス１００３−２は、処理Ｂを実行する。
１０．デバイス１００３−２は、処理Ｂの実行が完了すると、割り込みをアサートする。
１１．割り込みコントローラ１００２は、デバイス１００３−２からの割り込み要求を受け、割り込みの発生をＣＰＵ１００１に通知する。
１２．ＣＰＵ１００１は、割り込み要因を特定し、デバイス１００３−２の割り込みの解除を行う。
１３．ＣＰＵ１００１は、処理を完了する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、処理装置１０００では、デバイス１００３−１における処理Ａが完了してからデバイス１００３−２における処理Ｂが実行される。すなわち、ＣＰＵ１００１において、デバイス１００３−１からの割り込みが発生してから、割り込みを解除するまでに短くとも数ミリ秒の時間を要する。このため、上述した処理装置１０００のように、割り込みを使用した処理装置においては、処理速度が遅く、より処理速度を高速化したい、という要望があった。
【０００７】
本発明は上記した要望に応えるためになされたものであり、複数のデバイスにより並列処理する際に、より高速に動作する処理装置及びデバイス制御ユニットを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記した不利益を解消するために、第１の発明の処理装置は、それぞれが少なくとも１種類のタスクを実行可能な複数のタスク処理デバイスを有する処理装置であって、演算制御部と、前記演算制御部の制御に従って、前記複数のタスク処理デバイスに少なくとも１種類のタスクを並列に実行させるデバイス制御ユニットと、を有し、前記演算制御部は、前記複数のタスク処理デバイスに複数の処理を実行させるためのタスクグループを生成して前記デバイス制御ユニットに送出し、前記デバイス制御ユニットは、前記演算制御部が生成したタスクグループに従って、前記複数のタスク処理デバイスのそれぞれにタスクの処理の開始を指示し、前記タスク処理デバイスのそれぞれは、前記デバイス制御ユニットから発行されたタスクを実行し、当該タスクが完了した際には当該タスクの完了を前記デバイス制御ユニットに対して通知し、前記デバイス制御ユニットは、前記タスク処理デバイスより通知されたタスク完了通知を基に、前記タスクグループの全てのタスクが完了した際には、当該タスクグループの完了を前記演算制御部に対して通知する。
【０００９】
第２の発明のデバイス制御ユニットは、演算制御部の制御に従って、少なくとも１種類のタスクを実行可能な複数のタスク処理デバイスを有する処理装置において、前記複数のタスク処理デバイスに少なくとも１種類のタスクを並列に実行させるデバイス制御ユニットであって、前記演算制御部より生成された前記タスクグループに記載されたタスクの順序通りに前記複数のタスク処理デバイスに対してタスクを発行し、前記複数のタスク処理デバイスの内の１つからタスクの完了が通知された際には、前記演算制御部が生成した前記タスクグループに記載された順序に従って、完了が通知されたタスクの次のタスクを前記複数のタスク処理デバイスに対して発行し、前記タスクグループに記載された最後のタスクの完了が前記タスク処理デバイスより通知された場合に、タスクグループの完了を前記演算制御部に通知する。
【発明の効果】
【００１０】
本発明によれば、複数のデバイスにより並列処理する際に、より高速に動作する処理装置及びデバイス制御ユニットを提供することができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の処理装置の実施の形態について説明する。
＜第１実施形態＞
第１実施形態では、本発明の処理装置の基本的な構成について説明する。
本第１実施形態では、本発明の処理装置の一例として、処理装置１００について説明する。
図２に、第１実施形態の処理装置１００のブロック図を示す。
【００１２】
図２に示すように、処理装置１００は、ＣＰＵ１（本発明の演算制御部に対応）と、ＴＣＵ（Thread Control Unit：本発明のデバイス制御ユニットに対応）２と、複数のデバイス（本発明のタスク処理デバイスに対応）３−１〜３−Ｎ（Ｎは自然数）を有する。
ＣＰＵ１は、中央演算装置であり、各種演算を実行する。
ＣＰＵ１は、後述するＴＣＵ２及びデバイス３−１〜３−Ｎに対して、タスクグループの開始を命令し、タスクを実行させる。タスクとは、処理装置１００のシステムから見た処理の単位であり、デバイス３−１〜３−Ｎに実行させる処理である。
ＴＣＵ２は、ＣＰＵ１とデバイス３−１〜３−Ｎとの間の処理を行う処理ユニットである。
ＴＣＵ２は、ＣＰＵ１からタスクグループの開始命令を受け取り、各デバイス３−１〜３−Ｎにタスクを発行する機能を有する。ＴＣＵ２は、処理装置１００におけるタスクを管理することにより複数のデバイス３−１〜３−Ｎによる並列処理を可能にしている。
ＴＣＵ２の詳細な構成等については後述する。
【００１３】
デバイス３−１〜３−Ｎは、処理装置１００の各処理を実行するための処理ユニットである。これらのデバイスが行う処理の内容については本発明では限定しないが、例えば、演算ユニット、ＤＭＡ（Direct Memory Access）を行うことができるＤＭＡ処理ユニット、データの並べ替えを行いつつ、メモリ間或いはメモリとデバイス間のデータ転送を行うことができるストリーム処理ユニット等がある。
デバイス３−１〜３−Ｎは、ＴＣＵ２が発行したタスクを実行し、タスクが完了したらＴＣＵ２にタスク完了を通知する。
【００１４】
本実施形態の処理装置１００では、ＣＰＵ１を最上位として、制御系統が階層化されており、ＣＰＵ１は複雑な処理を行うことができるが処理速度は遅く、デバイス３−１〜３−Ｎは簡単な処理しかできないが処理速度は速い。ＴＣＵ２は、それらの中間である。従って、大量の処理の実行をデバイス３−１〜３−Ｎに行わせ、ＣＰＵ１がＴＣＵ２を通じてその実行を管理することができるため、処理装置１００全体では高速な処理を行うことができる。
【００１５】
図３に、処理装置１００のタスク実行時の大まかな動作例を示す。
図３は、第１実施形態の処理装置１００のタスク実行時の動作例を示すフローチャートである。
ステップＳＴ１：
ＣＰＵ１は、デバイス３−１〜３−Ｎに実行させるタスクの順序関係を示すタスクグループを生成し、ＴＣＵ２に伝達する。
ステップＳＴ２：
ＴＣＵ２は、ステップＳＴ１においてＣＰＵ１から伝達されたタスクグループを取得し、記憶する。
【００１６】
ステップＳＴ３：
ＴＣＵ２は、ステップＳＴ２において記憶したタスクグループが成立するように、デバイス３にタスクを発行する。すなわち、タスクグループに示された順序に従って、各タスクを対応するデバイス３に対して発行する。
ステップＳＴ４：
ステップＳＴ３（或いはステップＳＴ７）においてＴＣＵ２からタスクの発行を受けたデバイス３は、発行されたタスクを実行する。
【００１７】
ステップＳＴ５：
デバイス３は、ステップＳＴ４において実行したタスクの完了をＴＣＵ２に通知する。
ステップＳＴ６：
ＴＣＵ２は、ステップＳＴ５においてデバイス３から通知されたタスク完了通知を基に、ステップＳＴ２において記憶したタスクグループの全タスクが完了したか否かを判定し、完了していない場合はステップＳＴ７に進み、完了したと判定した場合はステップＳＴ８に進む。
【００１８】
ステップＳＴ７：
ＴＣＵ２は、タスクグループに従って、まだ実行されていないタスクを対応するデバイス３に対して発行し、ステップＳＴ４に戻る。
ステップＳＴ８：
ＴＣＵ２は、タスクグループの全タスクが完了したことをＣＰＵ１に通知する。
ステップＳＴ９：
ＣＰＵ１は、タスク実行処理を完了する。
【００１９】
図３のフローチャートにおいて説明したように、本実施形態の処理装置１００では、ＣＰＵ１はタスク実行処理の開始時と完了時以外には処理に関係しておらず、タスクの実行自体は各デバイス３に分散されているため、処理装置１００のタスク実行時にそれぞれの構成（ＣＰＵ１、ＴＣＵ２、デバイス３−１〜３−Ｎ）にかかる負荷が小さくなり、ひいては処理装置１００の処理速度が向上する。
【００２０】
なお、ＣＰＵ１はタスクグループの完了通知を受けて、所定の演算を実行し、その演算の結果を基に新たなタスクグループを生成し、ＴＣＵ２及びデバイス３−１〜３−Ｎに新たなタスクを実行させるようにしても良い。すなわち、処理装置１は、タスクグループの生成と実行とを繰り返し、何らかの演算結果を得ることができる装置である。
【００２１】
次に、ＴＣＵ２について説明する。
図４は、ＴＣＵ２の内部構成について説明するためのブロック図である。
図４に示すように、ＴＣＵ２は、タスクグループ制御部（本発明のタスクグループ制御部に対応）２１、タスクメモリ（本発明のタスクメモリに対応）２２、デバイス通信部２３、ＣＰＵ通信部２４、バス２５及び２６を有する。ＴＣＵ２は、これらの構成要素を要するハードウェアである。
タスクグループ制御部２１は、後述するＣＰＵ通信部２４及びバス２６を介してＣＰＵからタスクグループ開始命令を取得すると、タスクグループ内のタスクの順序関係を理解して、その順序通りにデバイス３−１〜３−Ｎのそれぞれに対応したタスクを実行させるための制御ブロックである。
【００２２】
タスクメモリ２２は、ＣＰＵ１から取得したタスクグループの各タスクを記憶するためのメモリである。
デバイス通信部２３は、各デバイス３−１〜３−Ｎと通信を行い、タスクグループ制御部２１の制御に従い、バス２５を介してタスクを対応するデバイスに送信したり、デバイスからの割り込み信号やタスクの完了通知を取得したりする。
ＣＰＵ通信部２４は、バス２６を介してＣＰＵ１と通信を行い、タスクグループの開始命令を取得したり、タスク処理完了の通知を送信したりする。
【００２３】
ＴＣＵ２内での大まかな処理の流れについて説明する。
図５は、ＣＰＵ１からタスクグループの開始命令を取得する際のＴＣＵ２の各ブロックの動作例を示したフローチャートである。
ステップＳＴ１１：
ＣＰＵ通信部２４は、バス２６を介してＣＰＵ１からタスクグループの開始命令を取得する。
ステップＳＴ１２：
タスクグループ制御部２１は、ステップＳＴ１１において取得したタスクグループの開始命令を基に、タスクグループの各タスクの順序関係を理解する。
【００２４】
ステップＳＴ１３：
タスクメモリ２２は、タスクグループの各タスクを記憶する。
ステップＳＴ１４：
デバイス通信部２３は、タスクグループ制御部２１の制御に従い、ステップＳＴ１２において理解されたタスクグループ内のタスクの順序通りに、タスクを対応するデバイス３−１〜３−Ｎのうちのいずれかに対してバス２５を介して送信する。
【００２５】
ステップＳＴ１５：
デバイス通信部２３は、ステップＳＴ１４において送信したタスクを各デバイス３−１〜３−Ｎが実行し完了したことを示すタスクの完了通知を受信する。
ステップＳＴ１６：
タスクメモリ内に記憶された、タスクグループ内の全てのタスクが完了した場合はステップＳＴ１７に進み、全てのタスクが完了していない場合はステップＳＴ１４に戻る。
ステップＳＴ１７：
タスクグループ制御部２１は、ＣＰＵ通信部２４及びバス２６を介して、タスクグループの完了通知をＣＰＵ１に対して送信する。
【００２６】
以上説明したように、本実施形態の処理装置１００によれば、ＣＰＵ１が発したタスクグループの開始命令に対して、ＴＣＵ２がタスクグループ内のタスクを順序通りに対応するデバイスに実行させ、タスクグループ内の全てのタスクの処理が完了するまでの制御を行うため、複数のタスクを実行する際にＣＰＵ１にかかる負荷が小さく、また、負荷及び機能をＴＣＵ２及び複数のデバイス３−１〜３−Ｎに分散しているため、処理スピードが向上する。また、ハードウェアであるＴＣＵ２によって、複数のタスクを複数個のデバイス３−１〜３−Ｎに行わせるので、例えばソフトウェアの制御により複数の処理を複数のデバイスに行わせるよりも、処理速度が向上する。
【００２７】
＜第２実施形態＞
第２実施形態においては、タスク間の同期を考慮した、第１実施形態よりも詳細な構成について説明する。
第２実施形態において説明する処理装置１０１は、図６に示すように、ＣＰＵ１、ＴＣＵ２ａ、デバイス３−１〜３−Ｎを有する。
図６は、第２実施形態の処理装置１０１のブロック図である。
【００２８】
ＣＰＵ１は、中央演算装置であり、各種演算を実行する。
ＣＰＵ１は、ＴＣＵ２ａ及びデバイス３−１〜３−Ｎに対して、タスクグループの開始を命令し、タスクを実行させる。
ＴＣＵ２ａは、ＣＰＵ１とデバイス３−１〜３−Ｎとの間の処理を行う処理ユニットである。
ＴＣＵ２ａは、ＣＰＵ１からタスクグループの開始命令を受け取り、各デバイス３−１〜３−Ｎにタスクを発行する機能を有する。ＴＣＵ２ａは、処理装置１０１におけるタスクを管理することにより複数のデバイス３−１〜３−Ｎによる並列処理を可能にしている。
また、ＴＣＵ２ａは、デバイス３−１〜３−Ｎのうちの複数のデバイスに同時にタスクを発行し処理を実行させる際に、デバイス間の処理の同期を取ることができる。
ＴＣＵ２ａの詳細な構成等については後述する。
【００２９】
デバイス３−１〜３−Ｎは、処理装置１０１の各処理を実行するための処理ユニットである。これらのデバイスが行う処理の内容については本発明では限定しないが、例えば、演算ユニット、ＤＭＡ（Direct Memory Access）を行うことができるＤＭＡ処理ユニット、データの並べ替えを行いつつ、メモリ間或いはメモリとデバイス間のデータ転送を行うことができるストリーム処理ユニット等がある。
デバイス３−１〜３−Ｎは、ＴＣＵ２ａが発行したタスクを実行し、タスクが完了したらＴＣＵ２ａにタスク完了を通知する。
【００３０】
以下、本実施形態の処理装置１０１の動作例を、時間の流れとともに説明する。
図７は、第２実施形態の処理装置１０１の動作時のタイムフローを示す図である。
図７では、より具体的に説明するために、処理装置１０１がデバイス３−１〜３−３の３つのデバイスを有している場合について説明する。
なお、デバイス３−１は、演算ユニットであり、トランザクション処理（関連する複数の処理を１つの処理単位にまとめて管理する処理方式）を実行し、デバイス３−２及び３−３はＤＭＡ（ダイレクトメモリアクセス：ＣＰＵ１に負担を掛けずにダイレクトにメモリ間でデータをやり取りする方式）転送処理を行うＤＭＡ処理ユニットであるとする。
また、ＣＰＵ１が開始命令を出すタスクグループ内のタスクの順番は、トランザクション実行処理＞ＤＭＡ転送処理Ａ（デバイス３−２による）＞ＤＭＡ転送処理Ｂ（デバイス３−３による）の順番であるとする。
【００３１】
図７において、左から右にかけて時間が経過している。番号を付したブロックにおいて各構成が活性化される（処理を実行する）。この番号を付したブロックを、以下では活性状態と呼ぶことにする。
・開始フェイズ
活性状態１：
ＣＰＵ１は、ＴＣＵ２ａに対してタスクグループの開始命令を出す。
活性状態２：
ＴＣＵ２ａは、実行すべきタスクの順番を取得する。
活性状態３：
ＴＣＵ２ａは、１番目に実行するべきタスク（トランザクション処理）を選択する。
【００３２】
・並列動作フェイズ
活性状態４：
ＴＣＵ２ａは、デバイス３−１に対してタスク（トランザクション処理）を発行する。
活性状態５：
デバイス３−１は、タスク実行（トランザクション処理）を開始する
活性状態６：
ＴＣＵ２ａは、デバイス３−１に対して発行した最初のタスクの完了を待たずに、次のタスクを開始する。
【００３３】
活性状態７：
ＴＣＵ２ａは、次のタスク（ＤＭＡ転送Ａ）を選択する。
活性状態８：
ＴＣＵ２ａは、デバイス３−２に対してタスク（ＤＭＡ転送Ａ）を発行する。
活性状態９：
デバイス３−２は、ＤＭＡＣ（Direct Memory Access Control）機能を起動しＤＭＡ転送Ａを開始する
活性状態１０：
ＴＣＵ２ａは、デバイス３−２に対して発行した２番目のタスクの完了を待たずに、次のタスクを開始する。
【００３４】
活性状態１１：
ＴＣＵ２ａは、最後のタスク（ＤＭＡ転送Ｂ）を選択する。
活性状態１２：
ＴＣＵ２ａは、デバイス３−３に対してタスク（ＤＭＡ転送Ｂ）を発行する。
活性状態１３：
デバイス３−２は、ＤＭＡＣ（Direct Memory Access Control）機能を起動しＤＭＡ転送Ｂを開始する。
図７を参照すれば理解されるように、活性状態１３から活性状態１７までの間は、３つのデバイスのタスク実行処理が並列に実行されている。
【００３５】
・同期フェイズ
活性状態１４：
デバイス３−２は、タスク（ＤＭＡ転送Ａ）が完了したことをＴＣＵ２ａに対して通知する。この通知は割り込み信号で行う。
活性状態１５：
ＴＣＵ２ａは、デバイス３−２からのタスク（ＤＭＡ転送Ａ）の完了通知を取得する。
活性状態１６：
ＴＣＵ２ａは、同期を取るため、他のデバイスのタスク実行が完了するまで待機する。
【００３６】
活性状態１７：
デバイス３−３は、タスク（ＤＭＡ転送Ｂ）が完了したことをＴＣＵ２ａに対して通知する。この通知は割り込み信号で行う。
活性状態１８：
ＴＣＵ２ａは、デバイス３−３からのタスク（ＤＭＡ転送Ｂ）の完了通知を取得する。
活性状態１９：
ＴＣＵ２ａは、同期を取るため、残りのデバイス３−１のタスク実行が完了するまで待機する。
【００３７】
活性状態２０：
デバイス３−１は、タスク（トランザクション処理）が完了したことをＴＣＵ２ａに対して通知する。この通知は割り込み信号で行う。
活性状態２１：
ＴＣＵ２ａは、デバイス３−１からのタスク（トランザクション処理）の完了通知を取得する。
【００３８】
・終了フェイズ
活性状態２２：
活性状態１８において、３つのタスクが全て完了したことが通知されたため、ＴＣＵ２ａは待機を解除し、最後のタスク（タスクグループ完了通知処理）が選択される。
活性状態２３：
ＴＣＵ２ａは、ＣＰＵ１に対してタスクグループの完了を通知する。この通知は割り込み信号で行う。
活性状態２４：
ＣＰＵ１は、タスクグループの完了通知を取得し、タスクグループ実行処理を終了する。
【００３９】
図７に示すように、本実施形態の処理装置１０１のタスクグループ実行処理時には、ＣＰＵ１は処理の開始時と終了時以外には割り込みを受けない（活性状態２〜２３は全てＴＣＵ２ａ或いはデバイス３−１〜３−３の処理である）。このため、ＣＰＵ１にかかる負荷を低減することができる。
さらに、処理装置１０１では、活性状態１６及び１９のＴＣＵ２ａの処理によって、複数のデバイスの並列処理時に、それぞれの処理の同期を取ることができる。
【００４０】
以下、上述したような処理を実現するためのＴＣＵ２ａの具体的な構成例について説明する。
図８は、ＴＣＵ２ａの構成を示すブロック図である。
図８に示すように、ＴＣＵ２ａは、タスクグループ制御ブロック（本発明のタスクグループ制御部に対応）２０１ａ、タスクメモリ（本発明のタスクメモリに対応）２０２ａ、メッセージ送受信ブロック２０３ａ、ＴＣＵ−ＣＰＵインタフェイス（以降Ｉ／Ｆ）２０４ａ、スレッド制御バスＩ／Ｆ２０５ａ、バス２０６ａ、ホストバスＩ／Ｆ２０７ａ、バス２０８ａ、同期制御ブロック２０９ａ、ステータス／タスクレジスタ２１０ａ、割り込み制御ブロック２１１ａ、割り込みプロセスブロック２１２ａを有する。
なお、タスクグループ制御ブロック２０１ａは、第１実施形態の処理装置１００のタスクグループ制御部２１に、タスクメモリ２０２ａは第１実施形態の処理装置１００のタスクメモリ２２に、メッセージ送受信ブロック２０３ａは第１実施形態の処理装置１００のデバイス通信部２３に、ＴＣＵ−ＣＰＵＩ／Ｆ２０４ａは第１実施形態の処理装置１００のＣＰＵ通信部に、バス２０６ａは第１実施形態の処理装置１００のバス２５に、バス２０８ａは第１実施形態の処理装置１００のバス２６に、それぞれ対応している。
【００４１】
タスクグループ制御ブロック２０１ａは、後述するＴＣＵ−ＣＰＵＩ／Ｆ２０４ａがバス２０８ａを介してＣＰＵからタスクグループ開始命令を取得すると、タスクグループ内のタスクの順序関係を理解して、その順序通りにデバイス３−１〜３−Ｎのそれぞれに対応したタスクを実行させるための制御ブロックである。
【００４２】
タスクメモリ２０２ａは、ＣＰＵ１から取得したタスクグループの各タスクを記憶するためのメモリである。
メッセージ送受信ブロック２０３ａは、スレッド制御バスＩ／Ｆ２０５ａ及びバス２０６ａを介して各デバイス３−１〜３−Ｎと通信を行い、タスクグループ制御ブロック２０１ａの制御に従い、バス２５を介してタスクを指示するメッセージを対応するデバイスに送信したり、デバイスからの割り込み信号やタスクの完了通知を取得したりする。
ここで、ＴＣＵ２と各デバイス３−１〜３−Ｎとの通信はメッセージによって行われる。メッセージについての詳細は後述する。
ＴＣＵ−ＣＰＵＩ／Ｆ２０４ａは、バス２０６ａを介してＣＰＵ１と通信を行い、ＣＰＵ１がＴＣＵ２ａを制御するための実行メッセージとそれに対するＴＣＵ２ａの応答メッセージを記憶する。メッセージについては、詳しくは後述する。
【００４３】
スレッド制御バスＩ／Ｆ２０５ａは、バス２０６ａを接続し、デバイス３−１〜３−Ｎとの通信を仲介する。
ホストバスＩ／Ｆ２０７ａは、バス２０８ａを接続し、ＣＰＵ１との通信を仲介する。
同期制御ブロック２０９ａは、タスクグループ間の同期を行うためのブロックであり、バリア同期制御ブロック２０９１ａとイベント同期制御ブロック２０９２ａとを有する。
バリア同期制御ブロック２０９１ａは、タスクグループのバリア同期を、イベント同期制御ブロック２０９２ａは、タスクグループのイベント同期を、それぞれ制御するブロックである。
バリア同期制御ブロック２０９１ａは、あるデバイスに対して同じバリアＩＤを有するデバイスのタスクが完了するまで待機することにより、バリア同期を行う。
イベント同期制御ブロック２０９２ａは、あるデバイスに対して同じイベントＩＤを有するデバイスのタスクが完了するまで待機することにより、イベント同期を行う。
【００４４】
ステータス／タスクレジスタ２１０ａは、各デバイス３−１〜３−Ｎの状態を示すパラメータであるステータス及び、タスクグループ制御ブロック２０１ａによって割り当てられたタスクを各デバイス３−１〜３−Ｎに対して発行する際のタスクメモリ上のポインタ（タスクポインタ）を格納するレジスタである。これらステータス及びタスクポインタは、タスクグループ制御ブロック２０１ａにより制御される。
割り込み制御ブロック２１１ａ及び割り込みプロセスブロック２１２ａは、各デバイス３−１〜３−ＮがＴＣＵ２ａに対してメッセージを送る場合のＴＣＵ２ａへの割り込み信号及び受信メッセージに従って、割り込み処理を行う。各デバイス３−１〜３−ＮからＴＣＵ２ａへの割り込み信号ＴＣＵｉｎｔは、割り込みプロセスブロック２１２ａへと入力される。
【００４５】
本実施形態の処理装置１０１の各構成は、タスクメモリ２０２ａに管理されるメッセージによって制御される。メッセージは32bitを１パックとした可変長データであり、ＴＣＵ２ａ自身の手続きを呼び出す内部メッセージと、デバイス３−１〜３−Ｎに送られる外部メッセージとデバッグメッセージに分けられる。外部メッセージは、ＴＣＵ２ａからデバイスへの指示を行う「実行メッセージ」、また、その終了をデバイス３−１〜３−ＮがＴＣＵ２ａに通知する「応答メッセージ」、そして単発の、「イベントメッセージ」に分けられる。
【００４６】
また、ＴＣＵ２ａの内部において、上述した各構成は、ＴＣＵ内部メッセージと称するメッセージにより処理の呼び出しを行っている。ＴＣＵ内部メッセージには、同期を行うためのタスクメッセージsync_taskと、算術演算を行うタスクop_taskの２つが定義されている。
sync_taskは同期を行う内部タスクである。sync_taskにはfork, join, barrier, sync_eventの４種類のメッセージがある。以下、４種類のsync_taskのメッセージについて説明する。
fork_taskはfork処理を行うためのメッセージであり、指示されたデバイスをforkする。forkするとは、複数のタスク／スレッドに分かれて並列処理を行わせることを意味する。
join_taskはjoin処理を行うためのメッセージであり、指示されたデバイスと待ち合わせを行い、同期する。join_taskは、fork_taskを行ったデバイスに対してのjoinに使用される。joinとは、他のスレッドの処理の完了を待つための同期処理を意味する。
【００４７】
joinc_taskは、joinされるデバイス側の処理のためのメッセージであり、join_taskによりjoinされるデバイスにおいて、join_taskとの同期のために配置されるメッセージである。
barrier_taskは、主にタスクグループ間のbarrier同期を行うためのメッセージであり、指示されたデバイスとバリア同期を行う。
sync_event_taskは、指示されたデバイスからのイベントメッセージを待ち、イベント同期を行うためのメッセージである。sync_event_taskを置くデバイスは、待ち対象となるイベントを発行するデバイス以外を用いるようにする。
op_taskは、算術演算を行う内部タスクである。
【００４８】
上述したようなメッセージを利用して、ＴＣＵ２ａはデバイス３−１〜３−Ｎに並列にタスクを実行させる処理を行う。
【００４９】
次に、タスクメモリ２０２ａ上でのメッセージの配置例について説明する。
図９に、タスクメモリ２０２ａ上でのメッセージの配置例を示す。各メッセージはデバイスごとに割り当てられたＩＤであるDevID毎にまとめられた後、LinkPointer（リンクの起点）を介し、他のDevIDのメッセージと連結されて１つのタスクグループとなる。
LinkPointerは、図９に示すように、DevIDの異なるメッセージの間に置かれ区切りを示すと共に、次のDevIDのメッセージの塊の先頭を示す役割を有する。
【００５０】
以下、ＴＣＵ２ａにおけるタスク実行処理について説明する。
図１０にタスクグループ内の処理についての動作例を示す。
図１０に示した処理の例においては、デバイス３−１〜３−３の３つのデバイスについてメッセージを発行しjoin_taskにより処理待ち合わせを行う。デバイス３−１はトランザクション処理を、デバイス３−２はＤＭＡ転送Ａを、デバイス３−３はＤＭＡ転送Ｂを行うものとする。
【００５１】
送出メッセージの位置を示すタスクポインタ（図９における*Task_DevA0等）はデバイス毎に用意され、各デバイスのステータス（動作状態）を調べながら動作が終了しかつ待ち合わせ状態でないデバイスに対してこのポインタ位置の実行メッセージを送出し、次のデバイスの処理に移る。実行メッセージを送出後、メッセージの長さ分ポインタがインクリメントされる。
タスクメモリ２０２ａ上でタスクグループの最初のLinkPointerの直後に置かれるメッセージにより制御されるデバイスを親デバイスとする。親デバイスは、タスクグループの起動直後に動作状態となる。図１０に示す動作例では、親デバイスはデバイス３−１である。同じタスクグループ内に配置されたデバイスで、親デバイス以外のデバイス（図１０に示す例ではデバイス３−２及び３−３）を子デバイスとする。親デバイスのfork_taskにより子デバイスのメッセージの送受信が可能になる。
【００５２】
デバイスの同期は待ちタスク（join_task）によって行われ、待たれる側のデバイスでは待ちタスク（joinc_task）を設定する。待ちタスクはデバイスＩＤ（devID）によって待つべきタスクが終了したか否かを判断する。
親デバイスは、fork_taskによってforkしたデバイスを全てjoinする必要があり、全てのデバイスがjoinした状態でLinkPointerに到達した時点でタスクグループが終了される。
このようにして、ＴＣＵ２ａにおいてはデバイス３−１〜３−Ｎ（上述した例では３−３）にタスクの実行及びデバイス間の同期を行うことができる。
【００５３】
以上説明したように、本実施形態の処理装置１０１によれば、ＣＰＵ１が発したタスクグループの開始命令に対して、ＴＣＵ２ａがタスクグループ内のタスクを順序通りに対応するデバイスに実行させ、タスクグループ内の全てのタスクの処理が完了するまでの制御を行うため、複数のタスクを実行する際にＣＰＵ１にかかる負荷が小さく、また、負荷及び機能をＴＣＵ２ａ及び複数のデバイス３−１〜３−Ｎに分散しているため、処理スピードが向上する。
また、forkメッセージ、joinメッセージ、sync_eventメッセージを用いることにより、複数のデバイス３−１〜３−Ｎ間の同期を取ることが可能になっている。
また、barrier_taskメッセージにより、タスクグループ間の同期を取ることが可能になっている。
【００５４】
＜第３実施形態＞
本第３実施形態では、処理装置の実例として、画像処理装置３００について説明する。
図１１は、第３実施形態の画像処理装置３００の構成の一例を示したブロック図である。
図１１に示すように、画像処理装置３００は、ＣＰＵ３０１（本発明の制御部に対応）、ＴＣＵ（本発明のスレッドコントロールユニットに対応）３０２、ＰＵ（プロセッサユニット）アレイ３０３＿０〜３０３＿３、ストリーム制御ユニット（ＳＣＵ：Stream Control Unit)３０４＿０〜３０４＿３、並びにローカルメモリ３０５＿０〜３０５＿３を有する。また、ＰＵアレイ３０３＿０〜３０３＿３及びＳＣＵ３０４＿０〜３０４＿３が本発明のデバイスに対応している。
【００５５】
画像処理装置３００では、ＰＵアレイ３０３＿０〜３０３＿３内のＰＥ（プロセッサエレメント）と、ＳＣＵ３０４＿０〜３とが異なるスレッドで動作する。
【００５６】
ＣＰＵ３０１は、画像処理装置３００全体を制御するプロセッサである。
ＴＣＵ３０２は、上述した第１及び第２実施形態において説明したＴＣＵ２或いは２ａと同様の構成を有する処理ユニットであり、ＰＵアレイ３０３＿０〜３０３＿３およびＳＣＵ３０４＿０〜３０４＿３に対して、第１及び第２実施形態におけるデバイス３−１〜３−Ｎのように、これらの並列処理、同期処理を行う。
なお、ＴＣＵ３０２の構成及び動作については、第１及び第２実施形態において説明したものと同様であるため、本実施形態では説明を省略する。
【００５７】
ＰＵアレイ３０３＿０〜３０３＿３は、プログラマブルな演算ユニットであって、複数のＳＩＭＤ（Single Instruction Multiple Data）型プロセッサＰＵ＿ＳＩＭＤから構成される。
ＳＣＵ３０４＿０〜３０４＿３は、ＰＵアレイ３０３＿０〜３０３＿３が必要とするデータをメモリに読み出す場合、あるいはＰＵアレイ３０３＿０〜３０３＿３が処理した結果をメモリに書き込む場合のデータ入出力を制御する。
【００５８】
ローカルメモリ３０５＿０〜３０５＿３は、画像処理装置３００のワーキングメモリであって、画像データの一部の保持、ＰＵアレイ３０３＿０〜３０３＿３で処理された中間結果の格納、ＰＵアレイ３０３＿０〜３０３＿３で実行されるプログラムや各種パラメータの格納などを行う。
【００５９】
画像処理装置３００は、ＴＣＵ３０２の制御により、ＰＵアレイ３０３＿０〜３０３＿３を共通のスレッドで動作させる。
共通のスレッドとは、例えば、共通のプログラムに基づいて処理を進めることを意味する。ＴＣＵ３０２は、ＳＣＵ３０４＿０〜３０４＿３をＰＵアレイ３０３＿０〜３０３＿３とは別のスレッドで動作させる。
ＰＵアレイ３０３＿０〜３０３＿３は、それぞれ複数のＰＥを有し、それぞれのＰＥが画像処理装置３００に入力された画像を所定の大きさに分割して処理を行うことが可能になっている。
【００６０】
以下、画像処理装置３００の全体動作例について簡単に説明する。
ＣＰＵ３０１が所定の画像処理に関する各処理をＴＣＵ３０２に命令する。
ＴＣＵ３０２は、ＳＣＵ３０４＿０〜３０４＿３及びＰＵアレイ３０３＿０〜３０３＿３に対して画像処理を行わせる。
ＳＣＵ３０４＿０〜３０４_３は、ＴＣＵ３０２によって指定されたそれぞれ４本ずつの所定のスレッドに基づいて、それぞれＰＵアレイ３０３＿０〜３０３＿３内のＰＥの処理進行に応じてローカルメモリ３０５＿０〜３０５＿３や外部のメモリに対するアクセスを実行する。
ＰＵアレイ３０３＿０〜３０３＿３内のＰＥは、ＳＣＵ３０４＿０〜３０４＿３あるいはＴＣＵ３０２の制御に従って、ＳＣＵ３０４＿０〜３０４＿３によるメモリアクセス結果を利用しながら、ＳＣＵ３０４＿０〜３０４＿３とは別のスレッドで動作する。
【００６１】
各ＰＵアレイ３０３＿０〜３０３＿３内では、ＳＣＵ３０４＿０〜３０４＿３によって、ＰＵ＿ＳＩＭＤ＃０〜＃３が並列あるいは直列に選択的に接続されて動作する。
ＰＵ＿ＳＩＭＤ＃０〜＃３内では、例えば１６個のＰＥ０〜１５がシリアルに接続され、隣接するＰＥ間で必要に応じて画素データの入出力が行われる。
以上のようにして、画像処理装置３００では画像処理を行う際に、ＰＵアレイ３０３＿０〜３０３＿３及びＳＣＵ３０４＿０〜３０４＿３の並列処理を行う。
なお、本第３実施形態では、ＰＵアレイ３０３＿０〜３０３＿３及びＳＣＵ３０４＿０〜３０４＿３をそれぞれ４個ずつとし、ＴＣＵ３０２は同時の４本のスレッドを動作させるとしたが、本発明ではＰＵアレイ３０３及びＳＣＵ３０４の数は４個である必要は無く、より少ない数、或いはより多い数であっても良い。
【００６２】
本発明は上述した実施形態には限定されない。
すなわち、本発明の実施に際しては、本発明の技術的範囲またはその均等の範囲内において、上述した実施形態の構成要素に関し様々な変更、コンビネーション、サブコンビネーション、並びに代替を行ってもよい。
【図面の簡単な説明】
【００６３】
【図１】図１は、従来の複数の機能を並列に実行する処理装置の構成の一例を示したブロック図である。
【図２】図２に、第１実施形態の処理装置の構成の一例を示すブロック図を示す。
【図３】図３は、第１実施形態の処理装置のタスク実行時の動作例を示すフローチャートである。
【図４】図４は、第１実施形態のＴＣＵの内部構成について説明するためのブロック図である。
【図５】図５は、第１実施形態のＣＰＵからタスクグループの開始命令を取得する際のＴＣＵの各ブロックの動作例を示したフローチャートである。
【図６】図６は、第２実施形態の処理装置のブロック図である。
【図７】図７は、第２実施形態の処理装置の動作時のタイムフローを示す図である。
【図８】図８は、第２実施形態のＴＣＵの構成を示すブロック図である。
【図９】図９は、第２実施形態のタスクメモリ上でのメッセージの配置例を示した図である。
【図１０】図１０は、タスクグループ内の処理についての動作例を示した図である。
【図１１】図１１は、第３実施形態の画像処理装置の構成の一例を示したブロック図である。
【符号の説明】
【００６４】
１００…処理装置、１…ＣＰＵ、２…ＴＣＵ、２１…タスクグループ制御部、２２…タスクメモリ、２３…デバイス通信部、２４…ＣＰＵ通信部、２５…バス、２６…バス、３＿１〜３＿Ｎ…デバイス、１０１…処理装置、２ａ…ＴＣＵ、２０１ａ…タスクグループ制御ブロック、２０２ａ…タスクメモリ、２０３ａ…メッセージ送受信ブロック、２０４ａ…ＴＣＵ−ＣＰＵＩ／Ｆ、２０５ａ…スレッド制御バスＩ／Ｆ、２０６ａ…バス、２０７ａ…ホストバスＩ／Ｆ、２０８ａ…バス、２０９ａ…同期制御ブロック、２０９１ａ…バリア同期制御ブロック、２０９２ａ…イベント同期制御ブロック、２１０ａ…ステータス／タスクレジスタ、２１１ａ…割り込み制御ブロック、２１２ａ…割り込みプロセスブロック、３００…画像処理装置、３０１…ＣＰＵ、３０２…ＴＣＵ、３０３＿０〜３０３＿３…ＰＵアレイ、３０４＿０〜３０４＿３…ＳＣＵ、３０５＿０〜３０５＿３…ローカルメモリ、１０００…処理装置、１００１…ＣＰＵ、１００２…割り込みコントローラ、１００３＿１〜１００３＿Ｎ…デバイス
【図１】
2008287562.tif 000003
【図２】
2008287562.tif 000004
【図３】
2008287562.tif 000005
【図４】
2008287562.tif 000006
【図５】
2008287562.tif 000007
【図６】
2008287562.tif 000008
【図７】
2008287562.tif 000009
【図８】
2008287562.tif 000010
【図９】
2008287562.tif 000011
【図１０】
2008287562.tif 000012
【図１１】
2008287562.tif 000013