(57)【要約】【課題】リアルタイム制御に適したストリームプロセッサを提供すること。【解決手段】プログラマブルな基本プロセッサＭＰと、基本プロセッサＭＰが実行する基本命令とは異なる拡張命令を実行するコプロセッサＣＰと、を備えたストリームプロセッサ。基本プロセッサＭＰは、コプロセッサＣＰに対し拡張命令を出力するコプロセッサコントローラＣＰＣを備え、コプロセッサＣＰは、拡張命令に基づいて実行されるタスクを制御し、かつ、当該タスクのステータス情報ＳＴをクロック毎に出力するタスクコントローラＴＣを備える。コプロセッサコントローラＣＰＣは、ステータス情報ＳＴと、基本プロセッサＭＰが予めバックグラウンドで実行していた基本命令とに基づいて、コプロセッサＣＰを制御する。【選択図】図１
2011034189.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルな基本プロセッサと、
前記基本プロセッサが実行する基本命令とは異なる拡張命令を実行するコプロセッサと、を備えたストリームプロセッサであって、
前記基本プロセッサは、前記コプロセッサに対し前記拡張命令を出力するコプロセッサコントローラを備え、
前記コプロセッサは、前記拡張命令に基づいて実行されるタスクを制御し、かつ、当該タスクのステータス情報を出力するタスクコントローラを備え、
前記コプロセッサコントローラは、前記ステータス情報と、前記基本プロセッサが予めバックグラウンドで実行していた基本命令とに基づいて、前記コプロセッサを制御するストリームプロセッサ。
【請求項２】
前記タスクコントローラは、前記ステータス情報をクロック毎に出力する請求項１に記載のストリームプロセッサ。
【請求項３】
前記タスクコントローラは、前記拡張命令に基づいて、前記ステータス情報を出力するステートマシンをさらに備える請求項１又は２に記載のストリームプロセッサ。
【請求項４】
前記コプロセッサは、複数の前記タスクコントローラを備え、各前記タスクコントローラに入力される複数の拡張命令を並列して処理することができる請求項１〜３のいずれか一項に記載のストリームプロセッサ。
【請求項５】
複数の前記タスクコントローラが第１及び第２のタスクコントローラであって、
前記コプロセッサは、
前記第１及び第２のタスクコントローラにそれぞれ制御される第１及び第２のデータ処理ユニットと、
前記第１のデータ処理ユニットが処理したデータを格納する第１及び第２のデータメモリと、をさらに備え、
前記第１のデータ処理ユニットが処理したデータを前記第１のデータメモリに格納している間、前記第２のデータ処理ユニットは前記第２のデータメモリに格納されたデータを読み出して処理し、
前記第１のデータ処理ユニットが処理したデータを前記第２のデータメモリに格納している間、前記第２のデータ処理ユニットは前記第１のデータメモリに格納されたデータを読み出して処理する請求項４に記載のストリームプロセッサ
【請求項６】
プログラマブルな基本プロセッサと、前記基本プロセッサが実行する基本命令とは異なる拡張命令を実行するコプロセッサと、を備えたストリームプロセッサのタスク管理方法であって、
前記基本プロセッサは、前記コプロセッサに対し前記拡張命令を出力し、
前記コプロセッサは、前記拡張命令に基づいて実行されるタスクのステータス情報を出力し、
前記基本プロセッサは、前記ステータス情報と、前記基本プロセッサが予めバックグラウンドで実行していた基本命令とに基づいて、前記コプロセッサを制御するストリームプロセッサのタスク管理方法。
【請求項７】
前記コプロセッサは、前記ステータス情報をクロック毎に出力する請求項６に記載のストリームプロセッサのタスク管理方法。
【請求項８】
前記コプロセッサは、複数の拡張命令を並列して処理することができる請求項６又は７に記載のストリームプロセッサのタスク管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームプロセッサ及びそのタスク管理方法に関し、特にコプロセッサを備えたストリームプロセッサ及びそのタスク管理方法に関する。
【背景技術】
【０００２】
情報処理装置には、例えば画像処理や音声処理などの特定用途に特化したプロセッサ（以下、応用指向プロセッサという）が搭載されている場合が多い。このような応用指向プロセッサとしては、例えばＤＳＰ（Digital Signal Processor）やメディアプロセッサなどが知られている。応用指向プロセッサを搭載することにより、ＣＰＵ（Central Processing Unit）の負荷を軽減し、情報処理装置全体としての処理能力を向上させることができる。
【０００３】
また、処理データの大容量化に伴い、上記の応用指向プロセッサにおいて、ストリーム処理を実行可能なストリームプロセッサが登場した。例えば特許文献１の図１に開示されたストリームプロセッサは、ＤＭＡ（Direct Memory Access）回路及びＦＩＦＯ（First In First Out）バッファを備え、ストリーム処理を実行することができる。しかしながら、特許文献１に開示されたストリームプロセッサでは、ストリーム処理の途中で、ステータスの変更、拡張処理の追加などのタスク管理を行うことができない。
【０００４】
これに対し、特許文献２の図４には、プログラマブルな基本プロセッサ（コア）とコプロセッサとを備えたストリームプロセッサが開示されている。このような構成では、基本プロセッサからの割り込み開始の通知及びコプロセッサからの割り込み終了の通知を伴う割り込み処理により、上記タスク管理を行うことができる。
【先行技術文献】
【非特許文献】
【０００５】
【特許文献１】特開２００６−３３８５３８号公報
【特許文献２】特表２００５−５３２６０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献２に開示されたストリームプロセッサにおけるタスク管理は、上述の通り割り込み処理によるため、当該割り込み処理が終了するまで、コプロセッサにより実行されているストリーム処理が中断される。すなわち、特許文献２に開示されたストリームプロセッサは、高速性が要求されるリアルタイム制御には適していないという問題があった。
【課題を解決するための手段】
【０００７】
本発明に係るストリームプロセッサは、
プログラマブルな基本プロセッサと、
前記基本プロセッサが実行する基本命令とは異なる拡張命令を実行するコプロセッサと、を備えたストリームプロセッサであって、
前記基本プロセッサは、前記コプロセッサに対し前記拡張命令を出力するコプロセッサコントローラを備え、
前記コプロセッサは、前記拡張命令に基づいて実行されるタスクを制御し、かつ、当該タスクのステータス情報をクロック毎に出力するタスクコントローラを備え、
前記コプロセッサコントローラは、前記ステータス情報と、前記基本プロセッサが予めバックグラウンドで実行していた基本命令とに基づいて、前記コプロセッサを制御するものである。
【０００８】
本発明に係るストリームプロセッサのタスク管理方法は、
プログラマブルな基本プロセッサと、前記基本プロセッサが実行する基本命令とは異なる拡張命令を実行するコプロセッサと、を備えたストリームプロセッサのタスク管理方法であって、
前記基本プロセッサは、前記コプロセッサに対し前記拡張命令を出力し、
前記コプロセッサは、前記拡張命令に基づいて実行されるタスクのステータス情報を出力し、
前記基本プロセッサは、前記ステータス情報と、前記基本プロセッサが予めバックグラウンドで実行していた基本命令とに基づいて、前記コプロセッサを制御するものである。
【０００９】
コプロセッサが出力するタスクのステータス情報と、基本プロセッサが予めバックグラウンドで実行していた基本命令とに基づいて、コプロセッサが制御される。そのため、リアルタイム制御に適している。
【発明の効果】
【００１０】
本発明によれば、リアルタイム制御に適したストリームプロセッサを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１に係るストリームプロセッサのブロック図である。
【図２】実施の形態１に係るシステムの模式図である。
【図３】実施の形態１に係るストリームプロセッサによる画像処理のタイミングチャートである。
【図４】実施の形態１に係るマルチタスクコプロセッサコントローラ及びタスクコントローラの詳細なブロック図である。
【図５】実施の形態１に係るストリームプロセッサにより実行されるパイプライン処理を示すタイミングチャートである。
【図６】実施の形態２に係るストリームプロセッサのブロック図である。
【発明を実施するための形態】
【００１２】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。ただし、本発明が以下の実施の形態に限定される訳ではない。また、説明を明確にするため、以下の記載及び図面は、適宜、簡略化されている。
【００１３】
（実施の形態１）
図１は、本発明の第１の実施の形態に係るストリームプロセッサのブロック図である。このストリームプロセッサＳＰは、図１に示すように、命令メモリＩＭ、基本プロセッサＭＰ、マルチタスクコプロセッサＣＰを備えている。基本プロセッサＭＰはプログラムによって動作を制御できるすなわちプログラマブルなプロセッサである。また、マルチタスクコプロセッサＣＰは、基本プロセッサＭＰのタスク動作と独立したタスク動作が可能である。
【００１４】
ここで、基本プロセッサＭＰは、命令デコーダＩＤ、基本プロセッサコントローラＭＰＣ、マルチタスクコプロセッサコントローラＣＰＣを備えている。また、マルチタスクコプロセッサＣＰは、タスクコントローラＴＣ１、ＴＣ２、データ処理ユニットＤＰＵ１、ＤＰＵ２、データメモリＤＭ１、ＤＭ２、ライトスイッチＷＳＷ、リードスイッチＲＳＷを備えている。
【００１５】
図２は、本実施の形態に係るシステムの模式図である。システムバスＳＢにＣＰＵ（Central Processing Unit）、ストリームプロセッサＳＰ、共有メモリＳＭが接続されている。すなわち、ＣＰＵ及びストリームプロセッサＳＰにより、共有メモリＳＭが共有されている。図１及び図２に示した本実施の形態に係るストリームプロセッサＳＰは、例えば画像処理、音声処理などの用途に特化したＤＳＰ（Digital Signal Processor）である。しかしながら、用途及びプロセッサの種類はこれらに限定されるものではない。
【００１６】
図１に示したストリームプロセッサＳＰの構成要素について順に説明する。図１において、細い矢印は命令などの制御信号の流れ、太い矢印は画像データの流れを示している。命令メモリＩＭは、命令が格納されたメモリである。例えば画像処理のための一連の命令が格納されている。命令メモリＩＭは、予め所定の命令が格納されたＲＯＭ（Read Only Memory）であってもよいし、外部メモリ（不図示）から読み出された命令を一時的に格納するフラッシュメモリなどであってもよい。
【００１７】
命令デコーダＩＤは、命令メモリから基本プロセッサＭＰへフェッチされた各命令をデコードする。デコードされた命令は、命令に応じて基本プロセッサコントローラＭＰＣ又はマルチタスクコプロセッサコントローラＣＰＣに入力される。
【００１８】
基本プロセッサコントローラＭＰＣは、命令デコーダＩＤから入力された命令に基づいて基本プロセッサＭＰを制御する。基本プロセッサＭＰは、例えば画像処理のための初期設定、パラメータの計算などを行う。画像処理のためのパラメータの計算は、例えばＣＰＵからの命令に基づいて、共有メモリＳＭの内部に格納されたパラメータテーブルを用いて行われる。そして、基本プロセッサＭＰにより計算されたパラメータは、共有メモリＳＭに格納された後、マルチタスクコプロセッサコントローラＣＰＣを介してマルチタスクコプロセッサＣＰに入力される。
【００１９】
なお、マルチタスクコプロセッサコントローラＣＰＣ及びマルチタスクコプロセッサＣＰが動作している間であっても、基本プロセッサコントローラＭＰＣは基本プロセッサＭＰの演算部（不図示）に供給するクロックのみを停止することができる。これにより、低消費電力化することができる。
【００２０】
他方、マルチタスクコプロセッサコントローラＣＰＣは、命令デコーダＩＤから入力された命令に基づいてマルチタスクコプロセッサＣＰを制御する。具体的には、マルチタスクコプロセッサコントローラＣＰＣは、命令デコーダＩＤから入力された命令に基づいて、拡張命令を発行する。本実施の形態では、２つの拡張命令が、マルチタスクコプロセッサＣＰの内部に設けられたタスクコントローラＴＣ１、ＴＣ２にそれぞれ入力される。このマルチタスクコプロセッサコントローラＣＰＣによるマルチタスクコプロセッサＣＰの制御は、基本プロセッサコントローラＭＰＣから独立して排他的に行うことができる。
【００２１】
ここで、マルチタスクコプロセッサコントローラＣＰＣとマルチタスクコプロセッサＣＰとの間の制御信号の入出力は制御インタフェースを介して行われる。この制御インタフェースは論理インタフェースであっても、共有バスを用いた物理インタフェースであってもよい。
【００２２】
タスクコントローラＴＣ１、ＴＣ２は、マルチタスクコプロセッサコントローラＣＰＣから入力された拡張命令をデコードする。デコードされた２つの拡張命令は、それぞれ前段データパスＦＤＰ、後段データパスＬＤＰに入力される。タスクコントローラＴＣ１、ＴＣ２から入力された拡張命令に基づいて、前段データパスＦＤＰ、後段データパスＬＤＰはそれぞれ画像処理を実行する。
【００２３】
すなわち、本実施の形態に係るストリームプロセッサＳＰにおけるストリーム処理は２段階の画像処理を備える。なお、マルチタスクコプロセッサコントローラＣＰＣ及びタスクコントローラＴＣ１、ＴＣ２の詳細については後述する。
【００２４】
前段データパスＦＤＰ、後段データパスＬＤＰについて説明する前に、画像データの流れについて説明する。まず、取り込まれた画像データは、共有メモリＳＭに格納されている。この画像データはマルチタスクコプロセッサコントローラＣＰＣ、タスクコントローラＴＣ１を介して前段データパスＦＤＰのデータ処理ユニットＤＰＵ１に入力される。
【００２５】
ここで、マルチタスクコプロセッサコントローラＣＰＣとマルチタスクコプロセッサＣＰとの間のデータの入出力はデータインタフェースを介して行われる。このデータインタフェースは論理インタフェースであっても、共有バスを用いた物理インタフェースであってもよい。
【００２６】
データ処理ユニットＤＰＵ１に入力された画像データは拡張命令に基づいて画像処理される。処理された画像データは、ライトスイッチＷＳＷにより選択されたデータメモリＤＭ１又はデータメモリＤＭ２のいずれかに一時的に格納される。ここで、ライトスイッチＷＳＷはデータメモリＤＭ１又はデータメモリＤＭ２にデータを書き込むためにデータバスを切り替えるためのスイッチである。
【００２７】
データメモリＤＭ１又はデータメモリＤＭ２に格納された画像データは、リードスイッチＲＳＷにより選択され、データ処理ユニットＤＰＵ２に入力される。ここで、リードスイッチＲＳＷは、データメモリＤＭ１又はデータメモリＤＭ２に格納されたデータを読み出すためにデータバスを切り替えるためのスイッチである。データ処理ユニットＤＰＵ２に入力された画像データは拡張命令に基づいて画像処理される。
【００２８】
このように、データ処理ユニットＤＰＵ１及びデータ処理ユニットＤＰＵ２により２段階で画像処理された画像データが、タスクコントローラＴＣ２、マルチタスクコプロセッサコントローラＣＰＣを介して共有メモリＳＭに格納される。
【００２９】
次に、図３を用いて画像処理動作について説明する。図３は、本実施の形態に係るストリームプロセッサＳＰによる画像処理のタイミングチャートであって、画像データの流れを示している。最上段からクロック、データ入力、タスク１（前段画像処理：図１のデータ処理ユニットＤＰＵ１による画像処理）、タスク２（後段画像処理：図１のデータ処理ユニットＤＰＵ２による画像処理）、データ出力を示している。
【００３０】
図３の「データ入力」に示すように、第１フレーム、第２フレーム、第３フレーム、・・・の順に画像データ（ストリーム）が入力される。そして、図３の「タスク１（前段画像処理）」に示すように、この例では第１フレームの入力から１クロック遅れて、データ処理ユニットＤＰＵ１による第１フレームの画像処理が開始される。ここで、例えばライトスイッチＷＳＷによりデータメモリＤＭ１が選択されているとすると、データ処理ユニットＤＰＵ１で画像処理された画像データはデータメモリＤＭ１に格納される。
【００３１】
続いて、データ処理ユニットＤＰＵ１による第２フレームの画像処理が開始されると、ライトスイッチＷＳＷによりデータメモリＤＭ２が選択され、データ処理ユニットＤＰＵ１で画像処理された画像データはデータメモリＤＭ２に格納される。
【００３２】
それと同時に、図３の「タスク２（後段画像処理）」に示すように、データ処理ユニットＤＰＵ２により、データメモリＤＭ１に格納されていた第１フレームの画像処理が開始される。この場合、リードスイッチＲＳＷによりデータメモリＤＭ１が選択されている。そして、図３の「データ出力」に示すように、この例ではデータ処理ユニットＤＰＵ２での画像処理から１クロック遅れて、画像処理済の第１フレームが出力される。
【００３３】
このように、データ処理ユニットＤＰＵ１による第２フレームの画像処理（タスク１）と、データ処理ユニットＤＰＵ２による第１フレームの画像処理（タスク２）とは並列処理される。すなわち、マルチタスクとなる。なお、本実施の形態では、データパス数すなわち並列タスク数が２であるが、データパス数を増やすことにより並列タスク数を３以上とするともできる。
【００３４】
続いて、データ処理ユニットＤＰＵ１による第３フレームの画像処理が開始されると、ライトスイッチＷＳＷにより再度データメモリＤＭ１が選択され、データ処理ユニットＤＰＵ１で画像処理された画像データはデータメモリＤＭ１に格納される。
【００３５】
それと同時に、データ処理ユニットＤＰＵ２により、データメモリＤＭ２に格納されていた第２フレームの画像処理が開始される。そして、画像処理済の第２フレームが出力される。第３フレーム以降のフレームも同様に処理される。
【００３６】
このように、データ処理ユニットＤＰＵ１が処理した画像データが格納されたデータメモリＤＭ１、ＤＭ２と、データ処理ユニットＤＰＵ２が読み出す画像データが格納されたデータメモリＤＭ１、ＤＭ２とが相補的に切り替わる。そのため、データ処理ユニットＤＰＵ１を含む前段データパスＦＤＰと、データ処理ユニットＤＰＵ２を含む後段データパスＬＤＰとが競合することなく、連続して並列処理を実行することができる。
【００３７】
図４は、本実施の形態に係るマルチタスクコプロセッサコントローラＣＰＣ及びタスクコントローラＴＣ１、ＴＣ２の詳細なブロック図である。ここで、図１に示すように、マルチタスクコプロセッサコントローラＣＰＣは基本プロセッサＭＰに設けられ、一方、タスクコントローラＴＣ１、ＴＣ２はマルチタスクコプロセッサＣＰに設けられている。
【００３８】
図４に示すように、マルチタスクコプロセッサコントローラＣＰＣは、２つの拡張命令コントローラＥＩＣ１、ＥＩＣ２を備えている。また、タスクコントローラＴＣ１は、データインタフェースＤＩＦ１、拡張命令デコーダＥＩＤ１、ステートマシンＳＭＣ１、ステータスメモリ１、クロックコントローラ１を備えている。また、図１に示したタスクコントローラＴＣ２は、データインタフェースＤＩＦ２、拡張命令デコーダＥＩＤ２、ステートマシンＳＭＣ２、ステータスメモリ２、クロックコントローラ２を備えている。
【００３９】
拡張命令コントローラＥＩＣ１は、命令デコーダＩＤから入力された命令に基づいて、拡張命令ＥＩ１、リクエスト信号ＲＥＱ１、クロックイネーブル信号ＣＫＥ１を発行する。拡張命令ＥＩ１は、タスクコントローラＴＣ１の拡張命令デコーダＥＩＤ１に入力される。拡張命令デコーダＥＩＤ１は、拡張命令コントローラＥＩＣ１から入力された拡張命令ＥＩ１をデコードし、データ処理ユニットＤＰＵ１及びステートマシンＳＭＣ１に対して出力する。この拡張命令ＥＩ１に基づいて、データ処理ユニットＤＰＵ１は画像処理を実行する。
【００４０】
リクエスト信号ＲＥＱ１は、タスクコントローラＴＣ１のステートマシンＳＭＣ１に入力される。ステートマシンＳＭＣ１は、デコードされた拡張命令ＥＩ１とリクエスト信号ＲＥＱ１とに基づいて、ステータス情報ＳＴ１ａを発行する。このステータス情報ＳＴ１ａはステータスメモリＳＴＭ１に格納される。
【００４１】
また、ステータスメモリＳＴＭ１には、データ処理ユニットＤＰＵ１から入力されるステータス情報ＳＴ１ｂも格納される。ステータスメモリＳＴＭ１に格納されたステータス情報ＳＴ１ａ、ＳＴ１ｂは、選択的にステータス情報ＳＴ１として拡張命令コントローラＥＩＣ１へクロック毎にフィードバックされる。なお、ステータス情報ＳＴ１ａ、ＳＴ１ｂのうち一方のみを拡張命令コントローラＥＩＣ１へフィードバックしてもよい。
【００４２】
拡張命令コントローラＥＩＣ１は、フィードバックされたステータス情報ＳＴ１及び基本プロセッサＭＰによりバックグラウンド処理される基本命令に基づいて、マルチタスクコプロセッサＣＰのタスクをクロック単位の精密なタイミング制御により管理することができる。ここで、バックグラウンド処理は、マルチタスクコプロセッサＣＰがストリーム処理を実行中に、基本プロセッサＭＰにより独立して実行される。例えば、拡張命令コントローラＥＩＣ１は、特定のステータスになった場合、基本プロセッサＭＰによりバックグラウンドで処理された基本命令に基づいて、タスクコントローラＴＣ１に対し、新たな拡張命令を発行する。その他、タスクコントローラＴＣ１に対し、データ処理ユニットＤＰＵ１が実行するタスクの開始あるいは停止を指示するなど各種制御が可能である。
【００４３】
クロックイネーブル信号ＣＫＥ１は、タスクコントローラＴＣ１のクロックコントローラＣＫＣ１に入力される。クロックコントローラＣＫＣ１は、クロックイネーブル信号ＣＫＥ１に基づいて、クロックＣＬＫ１を出力する。このクロックＣＬＫ１に応じて前段データパスＦＤＰが動作する。クロックイネーブル信号ＣＫＥ１が入力されている期間だけクロックコントローラＣＫＣ１からクロックＣＬＫ２が出力されるため、消費電力を低減することができる。なお、前段データパスＦＤＰを構成するデータ処理ユニットＤＰＵ１やデータメモリＤＭ１又はＤＭ２などの構成要素毎に、クロックの供給・停止を制御してもよい。
【００４４】
共有メモリＳＭに格納されていた画像データＤＡＴ１は、拡張命令コントローラＥＩＣ１、データインタフェースＤＩＦ１を介して、データ処理ユニットＤＰＵ１に入力され、画像処理される。
【００４５】
同様に、拡張命令コントローラＥＩＣ２は、命令デコーダＩＤから入力された命令に基づいて、拡張命令ＥＩ２、リクエスト信号ＲＥＱ２、クロックイネーブル信号ＣＫＥ２を発行する。拡張命令ＥＩ２は、タスクコントローラＴＣ１の拡張命令デコーダＥＩＤ１に入力される。拡張命令デコーダＥＩＤ１は、拡張命令コントローラＥＩＣ１から入力された拡張命令ＥＩ２をデコードし、データ処理ユニットＤＰＵ２及びステートマシンＳＭＣ２に対して出力する。この拡張命令ＥＩ２に基づいて、データ処理ユニットＤＰＵ２は画像処理を実行する。
【００４６】
リクエスト信号ＲＥＱ２は、タスクコントローラＴＣ２のステートマシンＳＭＣ２に入力される。ステートマシンＳＭＣ２は、デコードされた拡張命令ＥＩ２とリクエスト信号ＲＥＱ２とに基づいて、ステータス情報ＳＴ２ａを発行する。このステータス情報ＳＴ２ａはステータスメモリＳＴＭ２に格納される。
【００４７】
また、ステータスメモリＳＴＭ２には、データ処理ユニットＤＰＵ２から入力されるステータス情報ＳＴ２ｂも格納される。ステータスメモリＳＴＭ２に格納されたステータス情報ＳＴ２ａ、ＳＴ２ｂは、選択的にステータス情報ＳＴ２として拡張命令コントローラＥＩＣ２へフィードバックされる。なお、ステータス情報ＳＴ２ａ、ＳＴ２ｂのうち一方のみを拡張命令コントローラＥＩＣ２へフィードバックしてもよい。
【００４８】
拡張命令コントローラＥＩＣ２は、フィードバックされたステータス情報ＳＴ２及び基本プロセッサＭＰによりバックグラウンド処理される基本命令に基づいて、マルチタスクコプロセッサＣＰのタスクをクロック単位の精密なタイミング制御により管理することができる。例えば、拡張命令コントローラＥＩＣ２は、特定のステータスになった場合、基本プロセッサＭＰによりバックグラウンドで処理された基本命令に基づいて、タスクコントローラＴＣ２に対し、新たな拡張命令を発行する。その他、タスクコントローラＴＣ２に対し、データ処理ユニットＤＰＵ２が実行するタスクの開始あるいは停止を指示するなど各種制御が可能である。
【００４９】
クロックイネーブル信号ＣＫＥ２は、タスクコントローラＴＣ２のクロックコントローラＣＫＣ２に入力される。クロックコントローラＣＫＣ２は、クロックイネーブル信号ＣＫＥ２に基づいて、クロックＣＬＫ２を出力する。このクロックＣＬＫ２に応じて後段データパスＬＤＰが動作する。クロックイネーブル信号ＣＫＥ２が入力されている期間だけクロックコントローラＣＫＣ２からクロックＣＬＫ２が出力されるため、消費電力を低減することができる。なお、後段データパスＬＤＰを構成するデータ処理ユニットＤＰＵ２やデータメモリＤＭ１又はＤＭ２などの構成要素毎に、クロックの供給・停止を制御してもよい。
【００５０】
データ処理ユニットＤＰＵ２により画像処理された画像データＤＡＴ２は、データインタフェースＤＩＦ２、拡張命令コントローラＥＩＣ２を介して、共有メモリＳＭに格納される。
【００５１】
このように、本実施の形態に係るストリームプロセッサでは、マルチタスクコプロセッサＣＰが実行しているタスクのステータス情報が、基本プロセッサＭＰにフィードバックされる。そのため、このステータス情報に基づいて、基本プロセッサＭＰに設けられたマルチタスクコプロセッサコントローラＣＰＣにより、クロック単位でマルチタスクコプロセッサＣＰが実行しているタスクを制御することができる。
【００５２】
すなわち、本実施の形態に係るストリームプロセッサにおけるタスク管理は、基本プロセッサからの割り込み開始の通知及びコプロセッサからの割り込み終了の通知を伴う割り込み処理でないため、ストリーム処理が中断されることがなく遅延が生じない。そのため、特許文献２に開示されたストリームプロセッサに比べ、リアルタイム制御により適している。
【００５３】
次に、図５を用いて、本実施の形態に係るストリームプロセッサにより実行されるパイプライン処理について説明する。図５は、本実施の形態に係るストリームプロセッサにより実行されるパイプライン処理を示すタイミングチャートである。このパイプライン処理は、ＩＦフェーズ、ＩＤフェーズ、ＥＸフェーズを備えた３段パイプライン処理である。ＩＦフェーズでは、命令がフェッチされる。ＩＤフェーズでは、命令がデコードされる。そして、ＥＸフェーズでは、命令が実行される。
【００５４】
図５の最上段からクロック、基本命令１、拡張命令（タスク１）、拡張命令（タスク１）ステータス、拡張命令（タスク２）、拡張命令（タスク２）ステータス、基本命令２を示している。ここで、拡張命令（タスク１）、拡張命令（タスク２）は、ループ処理であり、それぞれ連続して繰り返し実行される。また、１セットの拡張命令（タスク１）、拡張命令（タスク２）により、１つのフレームが画像処理される。なお、本実施の形態に係る拡張命令（タスク１）、拡張命令（タスク２）は、ＶＬＩＷ方式やスーパースカラー方式などの並列命令ではないが、そのような並列命令であってもよい。
【００５５】
図５に示すように、まず時刻Ｔ１で基本命令１が命令メモリＩＭからフェッチされ、次クロック（時刻Ｔ２）で命令デコーダＩＤによりデコードされる。同じタイミングで、拡張命令（タスク１）が、拡張命令コントローラＥＩＣ１からフェッチされる。
【００５６】
次クロック（時刻Ｔ３）では、基本プロセッサＭＰ本体により基本命令１が実行される。この基本命令１は、例えば初期設定などである。同じタイミングで、拡張命令（タスク１）が拡張命令デコーダＥＩＤ１によりデコードされる。また、拡張命令（タスク２）が拡張命令コントローラＥＩＣ２からフェッチされる。
【００５７】
次クロック（時刻Ｔ４）では、データ処理ユニットＤＰＵ１により拡張命令（タスク１）の実行が開始される。拡張命令（タスク１）の実行時間は基本命令に比べ長い。ここで、拡張命令（タスク１）がデコードされると、拡張命令コントローラＥＩＣ１からステートマシンＳＭＣ１へ、リクエスト信号ＲＥＱ１が出力される。そのため、拡張命令（タスク１）がＥＸステージへ移行すると同時に、ステートマシンＳＭＣ１はＥＸステージのステータス情報ＳＴ１ａの発行を開始する。ここで、図４において説明したように、このステータス情報ＳＴ１ａはステータスメモリＳＴＭ１を介して拡張命令コントローラＥＩＣ１へフィードバックされる。
【００５８】
図５の例では、拡張命令（タスク１）のＥＸステージはＳ０〜Ｓｎまでのｎ＋１（ｎは０又は自然数）個のステータスを有し、クロック毎に順にステータスが遷移する。なお、ステータスは順に遷移する必要はない。
【００５９】
同じタイミング（時刻Ｔ４）で、拡張命令（タスク２）が拡張命令デコーダＥＩＤ２によりデコードされる。また、基本命令２が命令メモリＩＭからフェッチされる。
【００６０】
次クロック（時刻Ｔ５）では、データ処理ユニットＤＰＵ２により拡張命令（タスク２）の実行が開始される。拡張命令（タスク２）の実行時間は基本命令に比べ長い。ここで、拡張命令（タスク２）がデコードされると、拡張命令コントローラＥＩＣ２からステートマシンＳＭＣ２へ、リクエスト信号ＲＥＱ２が出力される。そのため、拡張命令（タスク２）がＥＸステージへ移行すると同時に、ステートマシンＳＭＣ２はＥＸステージのステータス情報ＳＴ２ａの発行を開始する。ここで、図４において説明したように、このステータス情報ＳＴ２ａはステータスメモリＳＴＭ２を介して拡張命令コントローラＥＩＣ２へフィードバックされる。
【００６１】
図５の例では、拡張命令（タスク２）のＥＸステージはＳ０〜Ｓｍまでのｍ＋１（ｍは０又は自然数）個のステータスを有し、クロック毎に順にステータスが遷移する。なお、ステータスは順に遷移する必要はない。
【００６２】
同じタイミング（時刻Ｔ５）で、基本命令２が命令デコーダＩＤによりデコードされる。次クロック（時刻Ｔ６）では、基本プロセッサＭＰ本体により基本命令２が実行される。基本命令２は、例えば次フレームの画像処理を開始するために基本命令１に戻るための分岐命令である。
【００６３】
ここで、時刻Ｔ６〜Ｔ７の間、拡張命令（タスク１）、拡張命令（タスク２）、基本命令２の３つの命令のＥＸステージが並列して実行されている。特に、マルチタスクコプロセッサＣＰにおいて拡張命令（タスク１）、拡張命令（タスク２）が実行されている間に、基本プロセッサＭＰによりバックグラウンドで基本命令２が実行される。この基本命令２に基づいて、処理中のフレームのための拡張命令（タスク１）のステータスがＳｎになった時点で、次フレームのための拡張命令（タスク１）が発行される。同様に、処理中のフレームのための拡張命令（タスク２）のステータスがＳｍになった時点で、次フレームのための拡張命令（タスク２）が発行される。
【００６４】
このように、本実施の形態に係るストリームプロセッサでは、基本プロセッサＭＰによりバックグラウンドで行われる各種命令と、マルチタスクコプロセッサＣＰからフィードバックされるステータス情報とに基づいて、基本プロセッサＭＰのマルチタスクコプロセッサコントローラＣＰＣが、マルチタスクコプロセッサＣＰが実行するタスクをクロック単位の精密なタイミング制御により管理することができる。具体的には、特定のステータスになった場合に、上記各種命令に基づいて、タスクを開始あるいは停止することや、拡張命令を発行することなどができる。従って、ストリームプロセッサの仕様をプログラムにより容易かつ迅速に変更することができる。もちろん、上記各種命令は特定の命令に限定されるものではない。
【００６５】
以上のように、本実施の形態に係るストリームプロセッサにおけるタスク管理は、基本プロセッサからの割り込み開始の通知及びコプロセッサからの割り込み終了の通知を伴う割り込み処理でないため、ストリーム処理が中断されることがなく遅延が生じない。そのため、特許文献２に開示されたストリームプロセッサに比べ、リアルタイム制御により適している。なお、コプロセッサがマルチタスクでなくシングルタスクであっても同様の効果が得られる。
【００６６】
また、本実施の形態に係るストリームプロセッサは、ストリーム処理の動作レートに合わせて逐次処理できるため、データメモリの容量を削減することができる。さらに、動作周波数を上げることなく並列タスク数を上げることができるため、低消費電力化することができる。
【００６７】
なお、本実施の形態に係るストリームプロセッサでは、ストリーム処理の並列タスク数を上げるために複数のマルチタスクコプロセッサ同士を接続（プラグイン）することが容易である。あるいは、他の機能を有するマルチタスクコプロセッサを接続（プラグイン）することも容易である。すなわち、プラグイン方式によるスケーラビリティを有するため、単独では冗長な機能及び性能を備える必要がなく、最適なハードウェアを実現することができる。
【００６８】
（実施の形態２）
図６は、本発明の第２の実施の形態に係るストリームプロセッサのブロック図である。実施の形態２では、実施の形態１に対し、２つのＤＭＡ回路ＤＭＡ１、ＤＭＡ２及び２つの外部データメモリＥＤＭ１、ＥＤＭ２が付加されている。ここで、取り込まれた画像データは、外部データメモリＥＤＭ１に格納されている。また、データ処理ユニットＤＰＵ１及びデータ処理ユニットＤＰＵ２により２段階で画像処理された画像データが、外部データメモリＥＤＭ２に格納される。
【００６９】
従って、実施の形態２では、タスクコントローラＴＣ１からの拡張命令（タスク１）に基づいて、ＤＭＡ回路ＤＭＡ１が外部データメモリＥＤＭ１にアクセスする。これにより、外部データメモリＥＤＭ１に格納されていた画像データは、データ処理ユニットＤＰＵ１に入力され、拡張命令（タスク１）に基づいて画像処理される。
【００７０】
また、実施の形態２では、タスクコントローラＴＣ２からの拡張命令（タスク１）に基づいて、ＤＭＡ回路ＤＭＡ２が外部データメモリＥＤＭ２にアクセスする。これにより、データ処理ユニットＤＰＵ２により画像処理された画像データが、外部データメモリＥＤＭ２に格納される。その他の構成及び効果は、実施の形態１と同様であるため、説明を省略する。
【００７１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。特に、共有メモリ、外部データメモリ、データメモリなどのメモリについては種々の構成が考えられ得る。
【符号の説明】
【００７２】
ＣＫＣ１、ＣＫＣ２  クロックコントローラ
ＣＰ  マルチタスクコプロセッサ
ＣＰＣ  マルチタスクコプロセッサコントローラ
ＤＩＦ１  データインタフェース
ＤＩＦ２  データインタフェース
ＤＭ１、ＤＭ２  データメモリ
ＤＭＡ１、ＤＭＡ２  ＤＭＡ回路
ＤＰＵ１、ＤＰＵ２  データ処理ユニット
ＥＤＭ１、ＥＤＭ２  外部データメモリ
ＥＩＣ１、ＥＩＣ２  拡張命令コントローラ
ＥＩＤ１、ＥＩＤ２  拡張命令デコーダ
ＦＤＰ  前段データパス
ＩＤ  命令デコーダ
ＩＭ  命令メモリ
ＬＤＰ  後段データパス
ＭＰ  基本プロセッサ
ＭＰＣ  基本プロセッサコントローラ
ＲＳＷ  リードスイッチ
ＳＢ  システムバス
ＳＭ  共有メモリ
ＳＭＣ１、ＳＭＣ２  ステートマシン
ＳＰ  ストリームプロセッサ
ＳＴＭ１、ＳＴＭ２  ステータスメモリ
ＴＣ１、ＴＣ２    タスクコントローラ
ＷＳＷ    ライトスイッチ
【図１】
2011034189.tif 000003
【図２】
2011034189.tif 000004
【図３】
2011034189.tif 000005
【図４】
2011034189.tif 000006
【図５】
2011034189.tif 000007
【図６】
2011034189.tif 000008