(57)【要約】【課題】  複数のDMAC３１を設けても、ホストプロセッサ１の処理負担が増えないようにする。【解決手段】  プロセッサシステムは、それぞれが並列して演算処理を行うことが可能な複数の演算ユニット２７と、複数の演算ユニット２７が演算処理に使用するデータを格納するメモリと、図１では不図示の複数のDMAC３１の起動制御を行うDMA制御回路３と、各種周辺回路のインターフェース部４，５，６とを備えている。複数のDMAC３１を制御するTPU２２をホストプロセッサ１とは別個に設け、DMAC３１の制御と演算ユニット２７の起動指示をTPU２２で行うため、ホストプロセッサ１の処理負担を軽減できる。また、DMA転送の終了通知以外のイベントによっても、DMAC３１や演算ユニット２７の起動指示を行えるようにしたため、より自由度のあるDMA転送を行うことができる。【選択図】  図１
2005202767.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが並列して演算処理を行うことが可能な複数の演算ユニットと、
前記複数の演算ユニットが演算処理に使用するデータを格納する記憶装置と、
ホストプロセッサの処理に並行して、前記複数の演算ユニット間、および前記複数の演算ユニットと前記記憶装置との間でデータ転送を行う複数のDMAコントローラと、
前記ホストプロセッサの処理に並行して、前記複数の演算ユニットおよび前記複数のDMAコントローラの起動制御を行うDMA制御回路と、を備えることを特徴とするプロセッサシステム。
【請求項２】
前記DMA制御回路は、前記複数のDMAコントローラが並列してデータ転送を行えるように前記複数のDMAコントローラの起動制御を行うことを特徴とする請求項１に記載のプロセッサシステム。
【請求項３】
前記DMA制御回路は、前記DMAコントローラからのデータ転送完了の通知と、前記演算ユニットからの演算処理完了の通知と、前記ホストプロセッサからの通知との少なくとも一つを含む所定のイベントに基づいて、前記複数の演算ユニットおよび前記複数のDMAコントローラの起動制御を行うことを特徴とする請求項１または２に記載のプロセッサシステム。
【請求項４】
前記複数の演算ユニットおよび前記複数のDMAコントローラの動作状態に関する情報を記憶する状態記憶手段を備え、
前記DMA制御回路は、前記状態記憶手段の記憶内容に基づいて、前記複数の演算ユニットおよび前記複数のDMAコントローラの起動制御を行うことを特徴とする請求項３に記載のプロセッサシステム。
【請求項５】
前記複数のDMAコントローラを動作させるために必要な情報を記憶するDMA情報記憶手段を備え、
前記DMA制御回路は、前記状態記憶手段の記憶内容に基づいて、前記DMA情報記憶手段の記憶内容を更新することを特徴とする請求項４に記載のプロセッサシステム。
【請求項６】
前記DMA制御回路は、前記複数の演算ユニットおよび前記複数のDMAコントローラの初期設定を行うことを特徴とする請求項１乃至５のいずれかに記載のプロセッサシステム。
【請求項７】
前記DMA制御回路は、
汎用性のあるプログラムコードに従って演算処理を行う汎用プロセッサと、
独自のアルゴリズムに従って演算処理を行う専用演算処理回路と、を有し、
前記専用演算処理回路は、前記汎用プロセッサの指示に従って、前記複数の演算ユニットおよび前記複数のDMAコントローラの起動制御を行うことを特徴とする請求項１及至６のいずれかに記載のプロセッサシステム。
【請求項８】
前記汎用プロセッサは、前記複数の演算ユニットおよび前記複数のDMAコントローラの起動順序が記述されたプログラムコードに従って前記専用演算処理回路に指示を送ることを特徴とする請求項７に記載のプロセッサシステム。
【請求項９】
前記DMA制御回路は、
前記複数の演算ユニットおよび前記複数のDMAコントローラの起動順序が記述されたプログラムコードを記憶する起動順序記憶手段と、
前記起動順序記憶手段に記憶されたプログラムコードに基づいて、前記複数の演算ユニットおよび前記複数のDMAコントローラの起動制御を行う起動制御手段と、を有することを特徴とする請求項１乃至６のいずれかに記載のプロセッサシステム。
【請求項１０】
メインプロセッサと、
前記メインプロセッサに接続される、画像処理を行う画像処理プロセッサと、を備え、
前記複数の演算ユニット、前記記憶装置、前記複数のDMAコントローラおよび前記DMA制御回路は、前記画像処理プロセッサの内部に設けられることを特徴とする請求項１乃至９のいずれかに記載のプロセッサシステム。
【請求項１１】
前記画像処理プロセッサは、
ポリゴンの頂点情報をピクセルデータに変換するピクセル変換手段と、
前記ピクセル変換手段、前記DMA制御回路および前記記憶装置が共通に接続されるバスと、を有し、
前記複数の演算ユニットは、前記ピクセル変換手段の出力と前記記憶装置に記憶されたデータとを用いて演算を行うことを特徴とする請求項１０に記載のプロセッサシステム。
【請求項１２】
ホストプロセッサから指示された複数の命令に関する情報をそれぞれ記憶する複数の命令記憶部と、
それぞれが並列して演算処理を行うことが可能な複数の演算ユニット間のデータ転送と、前記複数の演算ユニットが演算処理に使用するデータを格納する記憶装置と前記複数の演算ユニットとの間でのデータ転送と、前記複数の演算ユニットの起動制御とを、前記複数の命令記憶部に記憶された情報に基づいて前記ホストプロセッサの処理に並行して行うスケジューラと、を備えることを特徴とするDMA制御回路。
【請求項１３】
それぞれが並列して演算処理を行うことが可能な演算ユニットが演算処理に使用するデータを記憶装置に格納する工程と、
ホストプロセッサの処理に並行して、前記複数の演算ユニット間、及び前記複数の演算ユニットと前記記憶装置との間で、複数のDMAコントローラを用いてデータ転送を行う工程と、
前記複数のDAMコントローラもしくは複数の演算処理ユニットを監視して、データ転送が完了したことたことを表すデータ転送完了情報を通知する工程と、
前記データ転送完了情報を基に、他のデータ転送が可能か判断する工程と、
データ転送が可能と判断した場合に、データ転送を前記複数のDMAコントローラの少なくとも一つを用いて行う工程と、を有するDMAコントローラの制御方法。
【請求項１４】
頂点情報をピクセル情報に変換する工程と、
このピクセル情報を基に、演算ユニットにて画像生成を行う工程と、
それぞれが並列して演算処理を行うことが可能な演算ユニットが演算処理に使用するデータを記憶装置に格納する工程と、
ホストプロセッサの処理に並行して、前記複数の演算ユニット間、及び前記複数の演算ユニットと前記記憶装置との間で、複数のDMAコントローラを用いてデータ転送を行う工程と、
前記複数のDAMコントローラもしくは複数の演算処理ユニットを監視して、データ転送が完了したことたことを表すデータ転送完了情報を通知する工程と、
前記データ転送完了情報を基に、他のデータ転送が可能か判断する工程と、
データ転送が可能と判断した場合に、データ転送を前記複数のDMAコントローラの少なくとも一つを用いて行う工程と、を有する画像処理方法。
【請求項１５】
頂点情報をピクセル情報に変換するピクセル情報変換部と、
このピクセル情報を基に、並列して演算処理を行うことが可能な複数の演算ユニットと、
前記複数の演算ユニット間のデータ転送、もしくは前記複数の演算ユニットが使用するデータを格納する記憶装置と前記演算ユニット間のデータ転送を行う複数のDMAコントローラと、
複数のDMA転送に関する命令情報を記憶する命令情報記憶部と、
前記命令情報記憶部に格納された命令情報に基づき、前記複数のDMAコントローラによるDMA転送が可能か否かを判断する制御回路と、を有することを特徴とする画像処理回路。
【請求項１６】
前記制御回路は、前記複数のDAMコントローラを監視して、DMA転送が完了したか否かを判断することを特徴とする請求項１５記載の画像処理回路。
【請求項１７】
前記命令情報は、前記複数のDMAコントローラ及び前記複数の演算ユニットでのDMA転送処理が完了したか否かを示す情報であることを特徴とする請求項１６記載の画像処理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、DMA（Direct Memory Access）によるデータ転送を行うことができるプロセッサシステム、DMA制御回路、DMA制御方法、DMAコントローラの制御方法、画像処理方法および画像処理回路に関する。
【背景技術】
【０００２】
ホストプロセッサの処理負担を軽減するために、ホストプロセッサの動作と並行してデータ転送を行う、いわゆるDMA転送が知られている。DMA転送を行っている間、ホストプロセッサは他の処理を行うことができるため、画像データなどの大量のデータを転送する場合に適している。
【０００３】
DMA転送は通常、DMAコントローラの制御により行われる。ホストプロセッサは、どの時点で、どこからどこにDMA転送を行うかを示す転送制御情報を予めDMAコントローラに設定しておき、この設定情報に従ってDMAコントローラはDMA転送を行う。
【０００４】
一方、プロセッサシステム内での処理を高速化するための一手法として、複数の演算ユニットを設けて、これら演算ユニットを並列動作させる手法がある。この場合、複数の演算ユニットの演算処理結果も並列的にデータ転送を行うのが望ましく、DMAコントローラを複数設けることも考えられる（特許文献１参照）。
【特許文献１】特開平11-65989号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、複数のDMAコントローラを設けて、並列的にデータ転送を行えるようにすると、ホストプロセッサは各DMAコントローラに転送制御情報を設定しなければならず、ホストプロセッサの処理負担が大きくなる。その処理負担は、DMAコントローラの数が多いほど大きくなる。
【０００６】
本発明は、このような問題点に鑑みてなされたものであり、その目的は、複数のDMAコントローラを設けても、ホストプロセッサの処理負担が増えないようにしたプロセッサシステム、DMA制御回路、DMA制御方法、DMAコントローラの制御方法、画像処理方法および画像処理回路を提供することにある。
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、本発明は、それぞれが並列して演算処理を行うことが可能な複数の演算ユニットと、前記複数の演算ユニットが演算処理に使用するデータを格納する記憶装置と、ホストプロセッサの処理に並行して、前記複数の演算ユニット間、および前記複数の演算ユニットと前記記憶装置との間でデータ転送を行う複数のDMAコントローラと、前記ホストプロセッサの処理に並行して、前記複数の演算ユニットおよび前記複数のDMAコントローラの起動制御を行うDMA制御回路と、を備える。
【０００８】
また、本発明は、ホストプロセッサから指示された複数の命令に関する情報をそれぞれ記憶する複数の命令記憶部と、それぞれが並列して演算処理を行うことが可能な複数の演算ユニット間のデータ転送と、前記複数の演算ユニットが演算処理に使用するデータを格納する記憶装置と前記複数の演算ユニットとの間でのデータ転送と、前記複数の演算ユニットの起動制御とを、前記複数の命令記憶部に記憶された情報に基づいて前記ホストプロセッサの処理に並行して行うスケジューラと、を備える。
【０００９】
また、本発明は、それぞれが並列して演算処理を行うことが可能な演算ユニットが演算処理に使用するデータを記憶装置に格納する工程と、ホストプロセッサの処理に並行して、前記複数の演算ユニット間、及び前記複数の演算ユニットと前記記憶装置との間で、複数のDMAコントローラを用いてデータ転送を行う工程と、前記複数のDAMコントローラもしくは複数の演算処理ユニットを監視して、データ転送が完了したことたことを表すデータ転送完了情報を通知する工程と、前記データ転送完了情報を基に、他のデータ転送が可能か判断する工程と、データ転送が可能と判断した場合に、データ転送を前記複数のDMAコントローラの少なくとも一つを用いて行う工程と、を有する。
【００１０】
また、本発明は、頂点情報をピクセル情報に変換する工程と、このピクセル情報を基に、演算ユニットにて画像生成を行う工程と、それぞれが並列して演算処理を行うことが可能な演算ユニットが演算処理に使用するデータを記憶装置に格納する工程と、ホストプロセッサの処理に並行して、前記複数の演算ユニット間、及び前記複数の演算ユニットと前記記憶装置との間で、複数のDMAコントローラを用いてデータ転送を行う工程と、前記複数のDAMコントローラもしくは複数の演算処理ユニットを監視して、データ転送が完了したことたことを表すデータ転送完了情報を通知する工程と、前記データ転送完了情報を基に、他のデータ転送が可能か判断する工程と、データ転送が可能と判断した場合に、データ転送を前記複数のDMAコントローラの少なくとも一つを用いて行う工程と、を有する。
【００１１】
また、本発明は、頂点情報をピクセル情報に変換するピクセル情報変換部と、このピクセル情報を基に、並列して演算処理を行うことが可能な複数の演算ユニットと、前記複数の演算ユニット間のデータ転送、もしくは前記複数の演算ユニットが使用するデータを格納する記憶装置と前記演算ユニット間のデータ転送を行う複数のDMAコントローラと、複数のDMA転送に関する命令情報を記憶する命令情報記憶部と、前記命令情報記憶部に格納された命令情報に基づき、前記複数のDMAコントローラによるDMA転送が可能か否かを判断する制御回路と、を有する。
【発明の効果】
【００１２】
本発明によれば、ホストプロセッサの処理に並行して、演算ユニットとDMAコントローラを制御可能なDMA制御回路を設けるため、演算ユニットやDMAコントローラの数が増えても、ホストプロセッサの処理負担が増えるおそれがなくなり、システム全体の性能を向上できる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明に係るプロセッサシステム、DMA制御回路、DMA制御方法、DMAコントローラの制御方法、画像処理方法および画像処理回路の一実施形態を図面を参照しながら説明する。
【００１４】
（第１の実施形態）
図１は本発明の第１の実施形態に係るプロセッサシステムの概略構成の一例を示すブロック図である。図１のプロセッサシステムは、ホストプロセッサ１と、画像処理プロセッサ２と、メインメモリ３と、I/Oプロセッサ４とを備えている。
【００１５】
ホストプロセッサ１は、メインプロセッサ１１と、複数の信号処理部（DSP：Digital Signal Processor）１２と、外部との入出力を司るI/O部１３，１４，１５とを有する。I/O部１３はメインメモリ３との入出力を司り、I/O部１４は画像処理プロセッサ２との入出力を司り、I/O部１４はI/Oプロセッサ４との入出力を司る。
【００１６】
画像処理プロセッサ２は、本実施形態の特徴部分であるコントローラ２１と、ホストプロセッサ１とデータのやり取りを行うI/O部２２と、PCIなどの各種汎用バス、ビデオおよびオーディオ等の入出力を司るI/O部２３と、画像処理演算を行う演算処理部２４とを有する。
【００１７】
演算処理部２４は、ポリゴンの頂点情報をピクセルデータに変換するピクセル変換部２６と、ピクセルデータの処理を行う複数の演算ユニット（DSP）２７とを有する。
【００１８】
I/Oプロセッサ４は、汎用バスの他、HDDやDVDドライブ等の周辺機器、およびネットワークと接続する制御を行う。
【００１９】
図２は図１の画像処理プロセッサ２の内部構成をより詳細に示したブロック図である。複数の演算ユニット２７はそれぞれ、複数のプロセッサからなるプロセッサ・クラスタ２８と、プロセッサ・クラスタ２８の処理結果を格納するメモリ２９とを有する。プロセッサ・クラスタ２８内の複数のプロセッサは、それぞれが別個の処理を並列して実行できる他、一つの処理を複数のプロセッサが分担して実行することもできる。メモリ２９は、プロセッサ・クラスタ２８の実行結果を格納する。図２のコントローラ２１、ピクセル変換部２６、I/O部２２，２３およびメモリ２９は共通バス３０に接続されている。
【００２０】
図３はコントローラ２１の内部構成の一例を示すブロック図である。図３のコントローラ２１は、複数のDMAコントローラ（DMAC）３１と、専用回路３２と、汎用プロセッサからなる制御用プロセッサ３３と、タイマ３４と、割り込み部３５と、メモリ３６とを有する。
【００２１】
DMAC３１は、複数の演算ユニット２７の間、および複数の演算ユニット２７とメモリ３６との間でのデータ転送を行う。専用回路３２は、本システムのために専用に作られた回路であり、DMAC３１や演算ユニット２７の起動制御を行う。制御用プロセッサ３３は、メモリ３６に格納されたプログラムコードまたはホストプロセッサ１からの指示に従って、専用回路３２を制御する。タイマ３４は、時間の管理を行い、必要に応じて割り込み部３５に割り込みを指示する。割り込み部３５は、タイマ３４からの信号や、DMAC３１や演算ユニット２７からの完了信号を受信して、制御用プロセッサ３３に割り込みをかける。
【００２２】
図３の専用回路３２、タイマ３４、割り込み部３５およびメモリ３６は、ローカルネットワーク３７に接続されている。このローカルネットワーク３７には、I/O部２２を介してホストプロセッサ１も接続されている。
【００２３】
図４は図３の専用回路３２の内部構成の一例を示すブロック図である。このブロック図は、専用回路３２を制御プロセッサ３３のコプロセッサとして接続した場合の構成を示している。図４の専用回路３２は、制御プロセッサI/O部４１と、複数のDMA用レジスタ４２と、DMA発行部４３と、複数の同期用レジスタ（sync register）４４と、同期レジスタ制御部４５とを有する。
【００２４】
制御プロセッサI/O部４１は、制御用プロセッサ３３との間でデータのやり取りを行う。DMA用レジスタ４２は、DMAC３１の動作に必要な各種情報を記憶する。DMA発行部４３は、DMA用レジスタ４２の情報をDMAC３１に転送する処理を行う。どのDMA用レジスタからどのDMAC３１に転送するかは制御用プロセッサ３３により決定され、制御プロセッサI/O部４１を介してDMA発行部４３に通知される。同期用レジスタ４４は、DMAC３１や演算ユニット２７の動作状態を記憶する。同期レジスタ制御部４５は、同期用レジスタ４４の更新を制御する。
【００２５】
図５は図１のコントローラ２１が行う処理手順の一例を示すフローチャートである。このフローチャートは、ホストプロセッサ１で準備ができたデータを画像処理プロセッサ２内のメモリ３６にDMA転送する場合の処理手順を示している。
【００２６】
画像処理プロセッサ２が処理すべきデータをホストプロセッサ１が準備できた場合には、ホストプロセッサ１は、図３のローカルネットワーク３７に準備完了信号を通知する。この信号は、図４の同期レジスタ制御部４５により受信される（ステップＳ１）。
【００２７】
次に、同期レジスタ制御部４５は同期用レジスタ４４の値を更新する（ステップＳ２）。すなわち、同期用レジスタ４４は、ホストプロセッサ１のデータ転送準備が整ったことを示す値に設定される。
【００２８】
次に、制御用プロセッサ３３は、専用命令に従って、制御プロセッサI/O部４１を介して同期用レジスタ４４の値を読み出し、ホストプロセッサ１の準備が完了したことを確認する（ステップＳ３）。
【００２９】
次に、制御用プロセッサ３３は、専用命令に従って、制御プロセッサI/O部４１を介してDMA用レジスタ４２にDMAC３１の設定情報を伝送する（ステップＳ４）。
【００３０】
次に、制御用プロセッサ３３は、専用命令に従って、制御プロセッサI/O部４１を介してDMA発行部４３を起動し、DMA用レジスタ４２に記憶したDMAC３１の設定情報を各DMAC３１に設定するよう指示する（ステップＳ５）。
【００３１】
その後、DMAC３１はDMA転送を行う。DMA転送が完了すると、DMAC３１は、完了した旨を同期レジスタ制御部４５に通知する（ステップＳ６）。同期レジスタ制御部４５は、同期用レジスタ４４を更新する（ステップＳ７）。
【００３２】
制御用プロセッサ３３は、専用命令に従って、制御プロセッサI/O部４１を介して同期レジスタの値を読み出し、DMA転送の完了を確認する（ステップＳ８）。その後、制御用プロセッサ３３は、専用命令に従って、制御プロセッサI/O部４１を介して演算ユニット２７を起動し、ホストプロセッサ１から画像処理プロセッサ２内のメモリに転送されたデータの処理を行う（ステップＳ９）。
【００３３】
上述したように、図４の同期レジスタ制御部４５は、同期用レジスタ４４の値を監視する。監視を定期的に行うことは一般にポーリングと呼ばれるが、本実施形態の同期レジスタ制御部４５は、DMAC３１、演算ユニット２７およびホストプロセッサ１の動作をポーリングにより監視することができる。
【００３４】
なお、同期レジスタ制御部４５が同期用レジスタ４４の監視を行う代わりに、制御用プロセッサ３３が制御プロセッサI/O部４１を介して同期用レジスタ４４の監視を行ってもよい。
【００３５】
ここで、DMAC３１を制御するコマンドは命令（タスク）と呼ばれ、各コマンドは例えば256ビットからなる。専用回路３２内の同期レジスタ制御部４５と同期用レジスタ４４は、命令スケジューラの役目を果たす。
【００３６】
より具体的には、命令は、DMAC３１のデータ転送制御に関するコマンドと、演算ユニット２７の起動制御および演算ユニット２７に対する初期設定に関するコマンドと、ホストプロセッサ１への割り込み通知に関するコマンドとを含む。
【００３７】
本実施形態の専用回路３２は、ブロック命令と呼ばれる特殊な命令を実行するまでは、各命令を連続して実行する。ブロック命令とは、その命令以前に発行された命令（DMA実行あるいはプロセッサ・クラスタの処理）の実行完了を待ち受ける命令である。ブロック命令を実行すると、設定した命令の実行が完了するまで待機する。
【００３８】
図６（ａ）は専用回路３２が実行する命令の一例を示す図であり、命令A,B,C,D,E,F,Gを実行する例を示している。図６（ａ）の命令は図６（ｂ）のようなデータフロー図で記述される。命令Ａを実行し、命令Ａの実行完了をブロック命令で待受ける。命令Ａの実行が完了すると、命令F,Bを並列して実行する。次に、ブロック命令にて命令F,Bの実行完了を待受け、命令F,Bの実行が完了すると、命令C,Dを並列して実行する。次に、ブロック命令にて命令C,Dの実行完了を待受け、命令C,Dの実行が完了すると、命令Ｅを実行する。次に、ブロック命令にて命令Ｅの実行完了を待受け、命令Ｅの実行が完了すると、命令Ｇを実行する。
【００３９】
このように、図６（ｂ）のブロック命令により、複数のDMA転送の同期化を図ることができる。
【００４０】
本実施形態の専用回路３２は、DMA転送の完了通知以外のイベントにより、次のDMA転送を開始することができる。ここでいうイベントとは、例えば、演算ユニット２７の演算処理の完了や、ホストプロセッサ１からの通知などである。
【００４１】
図７（ａ）は従来のDMAC３１の第１の動作例を示す図、図７（ｂ）は従来のDMAC３１の第２の動作例を示す図、図７（ｃ）は本実施形態のDMAC３１の動作例を示す図である。また、図８は図７（ａ）に対応するタイミング図、図９は図７（ｂ）に対応するタイミング図、図１０は図７（ｃ）に対応するタイミング図である。
【００４２】
図７（ａ）および図８は、最も一般的なDMA転送であり、あるDMA転送が終了した後、次のDMA転送を行う。この場合、図８に示すように、ホストプロセッサ１（CPU）がDMAの指示（ｔ１）と、演算ユニット２７のレジスタセット（ｔ２）と、演算ユニット２７の実行指示（ｔ３）を行う。DMAC３１は、ホストプロセッサ１から指示されたDMAコマンドの実行を行う。
【００４３】
図７（ａ）および図８の例では、DMA転送に関する各種設定や指示、および演算ユニット２７の実行指示をホストプロセッサ１が行うため、ホストプロセッサ１の負荷が大きくなりすぎる。したがって、ホストプロセッサ１が他の処理を行う期間（ｔ４）が短くなり、パフォーマンスが低下する。
【００４４】
また、図７（ｂ）および図９の例では、複数のDMA転送を並列して行うことができるが、図９に示すように、ホストプロセッサ１がレジスタセットと演算ユニット２７の起動指示を行い（期間ｔ５）、その指示に従ってDMAC３１はレジスタセットと演算ユニット２７の起動指示を転送する（期間ｔ６）。この例では、複数のDMAC３１に並列にレジスタセットを行えるため、レジスタセットすべき対象が多い場合には、ホストプロセッサ１の処理負担を削減できるが、一部のレジスタだけをセットし直す場合などでは、図７（ａ）および図８の場合と同様になり、ホストプロセッサ１の処理負担が重くなる。
【００４５】
一方、図７（ｃ）および図１０に示す本実施形態の場合、DMA転送の終了のみをトリガーとして次のDMA転送を行うだけでなく、演算ユニット２７やホストプロセッサ１からの通知をトリガーとして次のDMA転送を行う。また、DMAC３１は、演算ユニット２７のレジスタセットと実行指示を行える。より具体的には、図１０に示すように、ホストプロセッサ１は、DMAC３１へのDMA転送指示を行うと（期間ｔ７）、それを受けて、DMAC３１は演算ユニット２７のレジスタセット（期間ｔ８）、DMA転送（期間ｔ９）および演算ユニット２７の実行指示（期間ｔ１０）を行う。演算ユニット２７は、演算処理が終了すると、DMAC３１に対して終了通知を行う。
【００４６】
図１０に示すように、DMAC３１がDMA転送の制御と演算ユニット２７の実行制御を行うため、ホストプロセッサ１は他の処理に多くの時間を割り当てることができ、ホストプロセッサ１の性能向上が図れる。
【００４７】
次に、ホストプロセッサ１と画像処理プロセッサ２内のコントローラ２１の動作をより詳細に説明する。ホストプロセッサ１は、メインメモリ３に格納されている命令ストリングを読み出して、画像処理プロセッサ２内のメモリに転送する。この転送は、ホストプロセッサ１のストア命令によりメモリに直接書き込んでよいし、あるいは命令の一つとしてDMA転送を行ってもよい。
【００４８】
コントローラ２１内の同期レジスタ制御部４５は、DMAC３１のDMA用レジスタ４２に命令ストリングのポインタ情報などを設定する。そして、このDMA用レジスタ４２の内容にしたがって、DMA発行装置は各DMAC３１に各種の設定を行う。
【００４９】
コントローラ２１は、DMAC３１の起動制御だけでなく、演算ユニット２７の起動制御も行うことができる。コントローラ２１が演算ユニット２７を制御する命令として、セット命令とキック命令の２種類がある。セット命令は、演算ユニット２７に各種設定を行うための命令であり、具体的には、テクスチャやバーテックス等の３次元画像表示のための各種設定を行う。キック命令は、演算ユニット２７の実行開始を指示するための命令である。
【００５０】
上述したように、同期用レジスタ４４には、DMAC３１や演算ユニット２７等の動作状態が格納される。ホストプロセッサ１は、同期レジスタ制御部４５を介して、同期用レジスタ４４の値を読み出すことができる。同期用レジスタ４４の使い方としていくつかが考えられる。その代表的なものを図１１、図１２および図１３に示す。
【００５１】
図１１では、まず、何らかの処理をコントローラ２１で行う（ステップＳ１１）。次に、その処理結果をライト命令で同期用レジスタ４４に書き込み（ステップＳ１２）、ホストプロセッサ１からブロック解除の通知があるまで、コントローラ２１は命令の実行を中断する（ステップＳ１３）。ホストプロセッサ１は、定期的に同期用レジスタ４４をポーリングし（ステップＳ１４）、ライト命令で同期用レジスタ４４に書き込んだ値を取得すると、コントローラ２１に対してブロック解除を通知する（ステップＳ１５）。
【００５２】
図１２では、まず、コントローラ２１は、キック命令で演算ユニット２７を起動し（ステップＳ１６）、演算ユニット２７の処理が終了するまで命令の実行を中断する（ステップＳ１７）。キック命令で起動した演算ユニット２７は、何らかの処理を実行し（ステップＳ１８）、処理が終了すると、コントローラ２１に完了通知を送信し、同期用レジスタ４４に戻り値を書き込む（ステップＳ１９）。完了通知を受けたコントローラ２１は、汎用レジスタの値を見て、分岐を行う（ステップＳ２０）。
【００５３】
図１３では、まず、何らかの処理をコントローラ２１で行い（ステップＳ２１）、その処理が終了すると、ホストプロセッサ１からブロック解除の通知があるまで、命令の実行を中断する（ステップＳ２２）。ホストプロセッサ１は、コントローラ２１が命令の実行を再開する時期を動的に設定する（ステップＳ２３）。その時期になると、ホストプロセッサ１は、コントローラ２１のブロックを解除するとともに、同期用レジスタ４４に戻り値を書き込む（ステップＳ２４）。コントローラ２１は、同期用レジスタ４４の値をみて分岐を行う（ステップＳ２５）。
【００５４】
上述したように、コントローラ２１は、複数の命令ストリングを同時に実行できるが、その一例として、メインメモリ３からメモリにデータを転送し、演算ユニット２７にデータのポインタを設定して実行をするプログラムについて説明する。この場合、コントローラ２１は、２つの命令ストリングを同時に実行し、これら命令ストリング間の同期を行う。同期を取るのは、ホストプロセッサ１からの指示によって行われる。
【００５５】
仮に、図１４に示すように、メモリが４つの領域（以下、FIFO０〜３）に分かれているとする。２つの命令ストリングのうち１つ（以下、Task String 1）は、メインメモリ３がこれらFIFO０〜３にデータを転送する。もう一つの命令ストリング（以下、Task String 2）は、FIFO０〜３から演算ユニット２７にデータを転送する。
【００５６】
命令ストリング２は、実際は、セット命令で演算ユニット２７に初期設定を行い、演算ユニット２７がメモリからデータを読み出す。
【００５７】
図１５は上述した２つの命令ストリングTask String 1,2を実行するコントローラ２１の処理手順の一例を示すデータフロー図である。図１５の命令ストリングTask String 1，Task String 2は並行して実行される。Task String 1では、メインメモリ３からFIFO０〜３へのデータ転送を順に行った後、Task String 1の先頭に戻る（ステップＳ３１〜Ｓ３９）。各FIFO０〜３へのデータ転送が終わるたびに、処理を中断し、ホストプロセッサ１からブロック解除の通知があると、次のデータ転送を行う。
【００５８】
一方、Task String 2では、FIFO０〜３のアドレスを演算ユニット２７にセットし、演算ユニット２７に起動を指示する処理を順に繰り返した後、Task String 2の先頭に戻る（ステップＳ４１〜Ｓ５４）。FIFO０〜３のアドレスを演算ユニット２７にセットした後、処理を中断し、ホストプロセッサ１がブロックを解除すると、次の処理を行う。
【００５９】
図１５の処理を実現するためのホストプロセッサ１のプログラムの一例は図１６のようになる。
【００６０】
このように、第１の実施形態では、複数のDMAC３１や複数の演算ユニット２７の起動制御を行うコントローラ２１を内蔵する画像処理プロセッサ２をホストプロセッサ１とは別個に設け、DMAC３１の制御と演算ユニット２７の起動指示をホストプロセッサ１の処理に並行してコントローラ２１が行えるようにしたため、ホストプロセッサ１の処理負担を軽減できる。
【００６１】
また、DMA転送の終了通知以外のイベントによっても、DMAC３１や演算ユニット２７の起動指示を行えるようにしたため、より自由度のある命令処理を行うことができる。
【００６２】
（第２の実施形態）
上述した第１の実施形態では、制御用プロセッサ３３と専用回路３２でDMAC３１や演算ユニット２７の起動制御を行う例を説明したが、専用回路３２のみでDMAC３１や演算ユニット２７の起動制御を行ってもよい。
【００６３】
図１７は第２の実施形態に係るコントローラ２１の内部構成を示すブロック図である。図１７では、図３と共通する構成部分には同一符号を付しており、以下では相違点を中心に説明する。図１７のコントローラ２１は、図３の制御用プロセッサ３３と専用回路３２を一つの専用回路３２ａにまとめている。
【００６４】
図１７の専用回路３２ａは、メモリ３６に格納されているプログラムコードに従ってDMAC３１と演算ユニット２７を制御する。
【００６５】
図１８は図１７の専用回路３２ａの内部構成の一例を示すブロック図である。図１８の専用回路３２ａは、命令フェッチデコード部５１と、同期管理部５２と、DMA発行部４３と、複数の同期用レジスタ４４（sync register）と、同期レジスタ制御部４５とを有する。
【００６６】
命令フェッチデコード部５１は、メモリ３６に格納されているプログラムコードを解釈する。同期管理部５２は、命令フェッチデコード部５１が解釈した命令を実行し、同期用レジスタ４４の値を読み出して演算ユニット２７やDMA発行部４３を制御する。
【００６７】
図１９は図１７のコントローラ２１が行う処理手順の一例を示すフローチャートである。以下では、図５のフローチャートと異なる処理を中心に説明する。同期レジスタ制御部４５が同期用レジスタ４４の値を更新した後（ステップＳ６２）、命令フェッチデコード部５１がデコードした命令に従って、同期管理部５２は同期用レジスタ４４の値を読み出す（ステップＳ６３）。これにより、ホストプロセッサ１の準備がデータ転送準備が完了したことを確認する。
【００６８】
次に、同期管理部５２は、DMAC３１にセットすべき情報（この場合、ホストプロセッサ１で準備が完了したデータ）を画像処理プロセッサ２内のメモリに転送するために、DMAC３１に対して各種情報を設定する（ステップＳ６４）。
【００６９】
DMAC３１が起動開始後にDMA転送を終えると、完了信号が同期レジスタ制御部４５に伝達される（ステップＳ６５）。そして、同期レジスタ制御部４５は、同期用レジスタ４４を更新する（ステップＳ６６）。
【００７０】
次に、命令フェッチデコード部５１がデコードした命令に従って、同期管理部５２は同期用レジスタ４４の値を読み出し（ステップＳ６７）、DMAC３１の完了を確認する。
【００７１】
次に、命令フェッチデコード部５１がデコードした命令に従って、同期管理部５２は演算ユニット２７を起動し、ホストプロセッサ１から画像処理プロセッサ２内のメモリに転送されたデータの処理を開始する（ステップＳ６８）。
【００７２】
このように、第２の実施形態では、DMAC３１と演算ユニット２７の起動制御を専用回路３２ａのみで実現するため、汎用プロセッサを用いるよりも回路規模を縮小でき、低消費電力化も図れる。
【００７３】
上述した各実施形態では、画像処理プロセッサ２内にコントローラ２１を設ける例を説明したが、コントローラ２１は、画像処理プロセッサ２の外部に設けてもよい。
【００７４】
また、上述した各実施形態では、ホストプロセッサ１と画像処理プロセッサ２が別チップである例を説明したが、ホストプロセッサ１と画像処理プロセッサ２はマクロコアとして同一チップ上に形成することも可能である。この場合、コントローラ２１は、画像処理プロセッサ２内に設置するのが望ましいが、画像処理プロセッサ２の外部に設置してもよい。
【００７５】
さらに、上述した各実施形態では、コントローラ２１が、画像処理プロセッサ２のデータ処理専用に設けられる例を説明したが、別のDMAC、例えばホストプロセッサ１内のDMACを制御することも可能である。この場合、コントローラ２１とは別個にコントローラをホストプロセッサ１内に設置してもよい。また、共通のコントローラでホストプロセッサ１内のDMACと画像処理プロセッサ２のDMACを制御することも可能である。
【００７６】
また、コントローラ２１の代わりに、同様の機能をOS（Operating System）で処理することも可能である。
【００７７】
上述した本発明に係るプロセッサシステムは、ゲーム機、ホームサーバー、テレビおよび携帯情報機器等に搭載することが可能である。
【００７８】
図２０は本願に係るプロセッサシステムをデジタルテレビに搭載した例を示すブロック図である。構成の１例としてこのデジタルテレビは、通信情報を制御するデジタルボード５５を有する。デジタルボード５５は、画像情報の制御を行う図１と同様の機能を実現するプロセッサシステム５６を有する。より詳しくは、プロセッサシステム５６は、映像・通信情報の送受信を行う送受信回路（DEMUX）５７と、デコーダ回路５８と、プロセッサ（CPU）５９と、画像処理回路（グラフィックエンジン）６０と、デジタルフォーマットコンバータ６１とを有する。
【００７９】
図２１は本願に係るプロセッサシステムを録画再生機器に搭載した例を示すブロック図である。構成の１例として、この録画再生機器は、図１と同様の機能を実現し、かつ画像情報を制御する画像情報制御回路６２を有する。より詳しくは、画像情報制御回路６２は、プロセッサ（CPU）６３と、デジタル信号プロセッサ（DSP）６４と、映像（画像）処理用プロセッサ６５と、オーディオ処理用プロセッサ６６とを有する。
【図面の簡単な説明】
【００８０】
【図１】本発明の第１の実施形態に係るプロセッサシステムの概略構成を示すブロック図。
【図２】図１の画像処理プロセッサ２の内部構成をより詳細に示したブロック図。
【図３】コントローラ２１の内部構成の一例を示すブロック図。
【図４】図３の専用回路３２の内部構成の一例を示すブロック図。
【図５】図１のコントローラ２１が行う処理手順の一例を示すフローチャート。
【図６】（ａ）はコントローラ２１ａが実行する命令の一例を示す図、（ｂ）は（ａ）のデータフロー図。
【図７】（ａ）は従来のDMAC３１の第１の動作例を示す図、（ｂ）は従来のDMAC３１の第２の動作例を示す図、（ｃ）は本実施形態のDMAC３１の動作例を示す図。
【図８】図７（ａ）に対応するタイミング図。
【図９】図７（ｂ）に対応するタイミング図。
【図１０】図７（ｃ）に対応するタイミング図。
【図１１】同期レジスタの使い方の一例を示す図。
【図１２】同期レジスタの使い方の他の例を示す図。
【図１３】同期レジスタの使い方の他の例を示す図。
【図１４】２つの命令ストリングを処理する手法を示す図。
【図１５】２つの命令ストリングを実行する専用プロセッサの処理手順の一例を示すデータフロー図
【図１６】ホストプロセッサ１のプログラムの一例を示す図。
【図１７】第２の実施形態に係るコントローラ２１の内部構成を示すブロック図。
【図１８】図１７の専用回路３２ａの内部構成の一例を示すブロック図。
【図１９】図１７のコントローラ２１が行う処理手順の一例を示すフローチャート。
【図２０】本願に係るプロセッサシステムをデジタルテレビに搭載した例を示すブロック図。
【図２１】本願に係るプロセッサシステムを録画再生機器に搭載した例を示すブロック図。
【符号の説明】
【００８１】
１  ホストプロセッサ
２  画像処理プロセッサ
３  メインメモリ
４  I/Oプロセッサ
１１  メインプロセッサ
１２  信号処理部
１３，１４，１５  I/O部
２１  コントローラ
２２，２３  I/O部
２４  演算処理部
２６  ピクセル変換部
２７  演算ユニット
２８  プロセッサ・クラスタ
２９  メモリ
３０  共通バス
３１  DMAC
３２  専用回路
３３  制御用プロセッサ
３４  タイマ
３５  割り込み部
３６  メモリ
３７  ローカルネットワーク
４１  制御プロセッサI/O部
４２  DMA用レジスタ
４３  DMA発行部
４４  同期用レジスタ
４５  同期レジスタ制御部
５１  命令フェッチデコード部
５２  同期管理部
【図１】
2005202767.tif 000003
【図２】
2005202767.tif 000004
【図３】
2005202767.tif 000005
【図４】
2005202767.tif 000006
【図５】
2005202767.tif 000007
【図６】
2005202767.tif 000008
【図７】
2005202767.tif 000009
【図８】
2005202767.tif 000010
【図９】
2005202767.tif 000011
【図１０】
2005202767.tif 000012
【図１１】
2005202767.tif 000013
【図１２】
2005202767.tif 000014
【図１３】
2005202767.tif 000015
【図１４】
2005202767.tif 000016
【図１５】
2005202767.tif 000017
【図１６】
2005202767.tif 000018
【図１７】
2005202767.tif 000019
【図１８】
2005202767.tif 000020
【図１９】
2005202767.tif 000021
【図２０】
2005202767.tif 000022
【図２１】
2005202767.tif 000023