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