(57)【要約】【課題】複数のデータストリームを連続的に処理する場合の処理性能を向上させることができるストリーム処理装置を提供する。【解決手段】データストリームとは別に制御用ストリームを用意し、制御用ストリームに従ってプログラム及びパラメータの更新を先行的に行う。ストリーム処理装置内のプログラム及びパラメータを格納するメモリにダブルバッファ領域を用意する。制御用ストリームに入力するデータストリームの場所も記しておき、データストリームを読み出すバッファも多重化して次に処理するデータストリームの先頭部分を先行して読み出す。【選択図】図１
2009134391.tif 000002
【特許請求の範囲】
【請求項１】
データストリームを入力して演算処理を施し、その結果をデータストリームとして出力するストリーム処理装置であって、バッファメモリとプロセッサとを有し、
ストリーム処理に必要な情報を制御ストリームとして前記バッファメモリに入力し、前記制御ストリームは入力するデータストリームの取得先に関する情報と、データストリームの演算処理に要するパラメータを持ち、前記データストリームの取得先に関する情報に従ってデータストリームを前記バッファメモリに入力し、前記バッファメモリに入力されたデータストリームに対して制御ストリームのパラメータに基づいて前記プロセッサが演算処理を行なう、ストリーム処理装置。
【請求項２】
請求項１記載のストリーム処理装置において、前記バッファメモリに制御ストリーム及びデータストリームをストリーム処理装置の外部から転送する転送制御装置を有する、ストリーム処理装置。
【請求項３】
請求項２記載のストリーム処理装置において、制御ストリームを解析して前記パラメータ及び前記データストリームの取得先に関する情報を取得すると共に、前記転送制御装置に転送制御条件を設定する制御ユニットを有する、ストリーム処理装置。
【請求項４】
請求項３記載のストリーム処理装置において、前記パラメータが転送されると共に、前記プロセッサによってアクセス可能にされるデータメモリを有する、ストリーム処理装置。
【請求項５】
請求項４記載のストリーム処理装置において、前記制御ユニットは演算手順に関する情報を制御ストリームから取得し、取得した前記演算手順に関する情報が転送されると共に、前記プロセッサによってアクセス可能にされる命令メモリを有し、前記プロセッサは命令メモリから読み出された演算手順に関する情報を用いて前記演算処理を行なう、ストリーム処理装置。
【請求項６】
請求項４記載のストリーム処理装置において、制御ストリームは補助制御ストリームの起動に関する情報を持ち、前記補助制御ストリームはデータストリームの処理に要するパラメータを持ち、前記制御ユニットは前記制御ストリームの内容に従って前記転送制御ユニットに転送制御条件を設定して前記補助制御ストリームを前記バッファメモリに転送させ、前記プロセッサはバッファに転送された補助制御ストリームの前記パラメータに基づいて演算処理を行なう、ストリーム処理装置。
【請求項７】
請求項５記載のストリーム処理装置において、制御ストリームは補助制御ストリームの起動に関する情報を持ち、前記補助制御ストリームはデータストリームの処理に要する演算手順に関する情報を持ち、前記制御ユニットは前記補助制御ストリームの内容に従って前記転送制御ユニットに転送制御条件を設定して前記補助ストリームを前記バッファメモリに転送させ、前記プロセッサはバッファに転送された前記演算手順の情報に基づいて演算処理を行なう、ストリーム処理装置。
【請求項８】
請求項１記載のストリーム処理装置において、１本の入力データストリームの処理に際し、結果を複数のデータストリームに分配して出力する、ストリーム処理装置。
【請求項９】
請求項１記載のストリーム処理装置において、複数の入力ストリームを参照し、前記複数の入力ストリームを参照して演算処理を施し、前記演算処理の結果を出力する、ストリーム処理装置。
【請求項１０】
請求項１記載のストリーム処理装置において、前記プロセッサは演算手順に従ってストリーム処理を行い、前記バッファメモリは入力したデータストリーム及び出力するデータストリームを一時的に保管し、前記プロセッサは前記バッファメモリをランダムアクセス可能である、ストリーム処理装置。
【請求項１１】
請求項１記載のストリーム処理装置において、前記プロセッサは演算手順に従ってストリーム処理を行い、前記プロセッサが読み書き可能なデータを保存するデータメモリを有し、前記データメモリは前記プロセッサからのアクセスに際してアドレス変換処理を行うことが可能であり、前記アドレス変換は、一のデータストリームの処理を終了し次のデータストリームの処理を開始する際に、一のデータストリームが格納されるメモリ領域と他のデータストリームが格納されるメモリ領域との夫々にマッピングされる論理アドレスを入れ替える処理である、ストリーム処理装置。
【請求項１２】
請求項１記載のストリーム処理装置において、前記プロセッサは演算手順に従ってストリーム処理を行、前記プロセッサの演算手順を示すプログラムを保存する命令メモリを有し、前記命令メモリは前記プロセッサからのアクセスに際してアドレス変換処理を行うことが可能であり、前記アドレス変換は一のデータストリームの処理を終了し次のデータストリームの処理を開始する際に、一のデータストリームに対する演算手順を示すプログラムが格納されるメモリ領域と次のデータストリームに対する演算手順を示すプログラムが格納されるメモリ領域との夫々にマッピングされる論理アドレスを入れ替える処理である、ストリーム処理装置。
【請求項１３】
データストリームを入力して演算処理を施し、その結果をデータストリームとして出力するストリーム処理装置であって、
バッファメモリと、前記バッファメモリと前記ストリーム処理装置の外部との間のデータ転送制御に用いられるデータ転送制御装置と、前記バッファメモリに格納されたデータストリームの演算処理に用いられるプロセッサと、を有し、
前記データ転送制御装置は、バッファメモリに格納された制御ストリームが持つデータストリームの取得先に関する情報に基づいて前記データストリームを前記バッファメモリに転送し、前記バッファメモリに転送された制御ストリームが持つデータストリームの演算処理に要するパラメータに基づいて前記プロセッサが前記バッファメモリ内のデータストリームに対して演算処理を行ない、
前記プロセッサによる前記バッファメモリ内のデータストリームに対する演算処理に並行して、前記データ転送制御装置はその外部と前記バッファメモリとの間でデータストリーム及び制御ストリームのデータ転送を制御する、ストリーム処理装置。
【請求項１４】
請求項１３記載のストリーム処理装置は更に、前記バッファメモリに格納された制御ストリームの解析結果に基づいた制御を行う制御ユニットを有し、
前記制御ユニットは、制御ストリームが持つデータストリームの取得先に関する情報に基づいて前記データ転送制御装置に転送条件を設定する、ストリーム処理装置。
【請求項１５】
請求項１３記載のストリーム処理装置は更に、前記プロセッサにより読み書き可能なデータメモリを有し、前記制御ユニットは、制御ストリームが持つデータストリームの演算処理に要するパラメータを前記データメモリに設定する、ストリーム処理装置。
【請求項１６】
請求項１３記載のストリーム処理装置は更に、前記プロセッサにより読み書き可能なデータメモリを有し、前記データメモリは前記プロセッサからアクセスされる際にアドレス変換処理を行うことが可能であり、前記アドレス変換は、一のデータストリームの処理を終了し次のデータストリームの処理を開始する際に、一のデータストリームが格納されるメモリ領域と他のデータストリームが格納されるメモリ領域との夫々にマッピングされる論理アドレスを入れ替える処理である、ストリーム処理装置。
【請求項１７】
請求項１３記載のストリーム処理装置は更に、前記プロセッサの演算手順を示すプログラムを保存する命令メモリを有し、前記命令メモリは前記プロセッサからアクセスする際にアドレス変換処理を行うことが可能であり、前記アドレス変換は、一のデータストリームの処理を終了し次のデータストリームの処理を開始する際に、一のデータストリームに対する演算手順を示すプログラムが格納されるメモリ領域と次のデータストリームに対する演算手順を示すプログラムが格納されるメモリ領域との夫々にマッピングされる論理アドレスを入れ替える処理である、ストリーム処理装置。
【請求項１８】
データストリームに演算処理を施して結果をデータストリームとして出力するストリーム処理方法であって、
ストリーム処理に必要な情報として、処理するデータストリームの取得先に関する情報と、データストリームの処理に要するパラメータを持つ１個以上の制御ストリームを用意する処理と、
用意された制御ストリームの前記データストリームの取得先に関する情報に従ってデータストリームを参照する処理と、
用意された制御ストリームの前記パラメータを参照して演算を行なう処理と、を含むストリーム処理方法。
【請求項１９】
データストリームを入力して演算処理を施し、その結果をデータストリームとして出力するストリーム処理装置と、前記データストリームに対するストリーム処理に必要な情報として制御ストリーム及び前記データストリームが格納されるメモリと、前記メモリとストリーム処理装置を制御するホストプロセッサと有するデータ処理システムであって、
前記制御ストリームは入力するデータストリームの取得先に関する情報と、データストリームの演算処理に要するパラメータを持ち、
前記ストリーム処理装置は、バッファメモリとプロセッサとを有し、前記制御ストリームを前記メモリからバッファメモリに入力し、入力した前記制御ストリームが保有するデータストリームの取得先に関する情報に従ってデータストリームを前記バッファメモリに入力し、前記バッファメモリに入力されたデータストリームに対して制御ストリームのパラメータに基づいて前記プロセッサが演算処理を行なう、データ処理システム。
【請求項２０】
請求項１９に記載のデータ処理システムにおいて、ホストプロセッサは前記メモリに制御ストリーム及び前記データストリームを格納する制御を行い、
前記ストリーム処理装置は、前記メモリから前記バッファメモリに前記制御ストリーム及びデータストリームを転送する転送制御装置を有する、データ処理システム。
【請求項２１】
請求項１９に記載のデータ処理システムにおいて、１個の半導体基板に半導体装置として形成されたデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータの列を処理するストリーム処理の技術に関する。
【背景技術】
【０００２】
本発明に係わる背景技術に特許文献１に示された方法がある。特許文献１ではデータストリーム処理部内のプロセッサからの要求にしたがって、当該プロセッサの命令メモリ、データメモリ内のプログラム／データセットの書き換えを実現する装置が示されている。
【０００３】
【特許文献１】特開２００４−１７９８０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
複数のデータストリームを連続的に処理する場合、あるデータストリームの処理完了から次のデータストリームの処理開始までに時間を要すると、この時間が無駄となり、ストリーム処理装置の実効性能が低下する。ストリーム処理装置でデータストリームの処理にプロセッサを用いる場合、データストリームの処理に用いるプログラムの大部分が異なったり、必要なパラメータが大きく異なったりすると、それぞれのデータストリーム処理を開始する前に、これらプログラム及びパラメータをストリーム処理装置で利用可能になるまでの時間が長く必要になり、性能への影響が大きくなる。また、ストリームが外部のメモリに保持されている場合、新しいストリーム処理を開始する際にメモリからストリームの最初の部分が読み出すまで時間を要し、この期間ストリーム処理装置の動作が停止する。これは特にストリーム切り替え頻度が高い場合に性能への影響が大きくなり問題となる
本発明の目的は、複数のデータストリームを連続的に処理する場合の処理性能を向上させることにある。
【０００５】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００７】
すなわち、データストリームとは別に制御用として制御ストリームを用意し、制御ストリームに従ってストリーム処理用のプロセッサから高速にアクセス可能なメモリに保持するプログラム及びパラメータの書き換え処理をデータストリームの処理に対して先行的に行う。換言すれば、プロセッサによるバッファメモリ内のデータストリームに対する演算処理に並行して、前記データ転送制御装置はその外部と前記バッファメモリとの間でデータストリーム及び制御ストリームのデータ転送を制御する。
【発明の効果】
【０００８】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【０００９】
すなわち、ストリーム処理を行うプロセッサにおいて、あるデータストリーム処理中に、次に処理するデータストリームの全部あるいは最初の部分に関してデータストリーム処理を行うプロセッサから高速にアクセス可能な内蔵メモリへ予め用意することが可能となる。また、データストリーム毎に異なる処理内容や異なる処理パラメータが必要な場合でも、制御ストリームにより必要なプログラムやパラメータを事前にデータストリームを行うプロセッサから高速にアクセス可能な内蔵メモリに用意することが可能である。したがって、複数のストリームを連続的に処理する場合において、あるストリーム処理と次のストリーム処理との移行期間でデータストリームの処理を行うプロセッサの待ち時間を抑制でき、ストリーム処理装置の実効性能を高めることができる。
【発明を実施するための最良の形態】
【００１０】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１１】
〔１〕データストリームを入力して演算処理を施し、その結果をデータストリームとして出力するストリーム処理装置は、バッファメモリ(１３０)とプロセッサ(１８０)とを有する。ストリーム処理装置において、ストリーム処理に必要な情報を制御ストリームとして前記バッファメモリに入力し、前記制御ストリームは入力するデータストリームの取得先に関する情報と、データストリームの演算処理に要するパラメータを持ち、前記データストリームの取得先に関する情報に従ってデータストリームを前記バッファメモリに入力し、前記バッファメモリに入力されたデータストリームに対して制御ストリームのパラメータに基づいて前記プロセッサが演算処理を行なう。
【００１２】
これによれば、プロセッサによるデータストリームの処理中に、制御ストリームにより、次に処理するデータストリームの全部又は一部あるいは必要なプログラムやパラメータを事前バッファメモリ等に用意することができる。これにより、あるストリーム処理と次のストリーム処理との移行期間でデータストリームの処理を行うプロセッサの待ち時間を抑制でき、ストリーム処理装置の実効性能を高めることができる。
【００１３】
〔２〕項1のストリーム処理装置において、前記バッファメモリに制御ストリーム及びデータストリームをストリーム処理装置の外部から転送する転送制御装置（１２０）を有する。それらの転送制御を前記プロセッサに負担させずに済む。
【００１４】
〔３〕項２のストリーム処理装置において、制御ストリームを解析して前記パラメータ及び前記データストリームの取得先に関する情報を取得すると共に、前記転送制御装置に転送制御条件を設定する制御ユニット(１５０)を有する。制御ストリームに基づく処理を前記プロセッサに負担させずに済む。
【００１５】
〔４〕項３のストリーム処理装置において、前記パラメータが転送されると共に、前記プロセッサによってアクセス可能にされるデータメモリ（１７０）を有する。データストリーム毎に異なる処理パラメータが必要な場合でも、制御ストリームにより必要なパラメータを事前にデータメモリに用意することが可能になる。
【００１６】
〔５〕項４のストリーム処理装置において、前記制御ユニットは演算手順に関する情報を制御ストリームから取得し、取得した前記演算手順に関する情報が転送されると共に、前記プロセッサによってアクセス可能にされる命令メモリ（１６０）を有し、前記プロセッサは命令メモリから読み出された演算手順に関する情報を用いて前記演算処理を行なう。データストリーム毎に異なる演算処理手順が必要な場合でも、制御ストリームにより必要な演算手順の情報を事前に命令メモリに用意することが可能になる。
【００１７】
〔６〕項４のストリーム処理装置において、制御ストリームは補助制御ストリーム（７０６）の起動に関する情報を持ち、前記補助制御ストリームはデータストリームの処理に要するパラメータを持ち、前記制御ユニットは前記制御ストリームの内容に従って前記転送制御ユニットに転送制御条件を設定して前記補助制御ストリームを前記バッファメモリに転送させ、前記プロセッサはバッファに転送された補助制御ストリームの前記パラメータに基づいて演算処理を行なう。異なるデータストリームの処理で繰り返し同じパラメータが用いられる場合に夫々の制御ストリームに毎回同じパラメータを含めることを要せず、これによって制御ストリームのデータ量削減、メモリ領域の容量削減、並びにデータ転送時間の短縮に寄与する。ストリーム処理装置の動作周波数を高速化する上でも有利となる。
【００１８】
〔７〕項５のストリーム処理装置において、制御ストリームは補助制御ストリームの起動に関する情報を持ち、前記補助制御ストリームはデータストリームの処理に要する演算手順に関する情報を持ち、前記制御ユニットは前記補助制御ストリームの内容に従って前記転送制御ユニットに転送制御条件を設定して前記補助ストリームを前記バッファメモリに転送させ、前記プロセッサはバッファに転送された前記演算手順の情報に基づいて演算処理を行なう。異なるデータストリームの処理で繰り返し同じ演算手順が用いられる場合に夫々の制御ストリームに毎回同じ演算手順の情報を含めることを要せず、これによって制御ストリームのデータ量削減、メモリ領域の容量削減、並びにデータ転送時間の短縮に寄与する。ストリーム処理装置の動作周波数を高速化する上でも有利となる。
【００１９】
〔８〕項１のストリーム処理装置において、１本の入力データストリームの処理に際し、結果を複数のデータストリームに分配して出力する。データストリームに対する処理内容は任意である。
【００２０】
〔９〕項１のストリーム処理装置において、複数の入力ストリームを参照し、前記複数の入力ストリームを参照して演算処理を施し、前記演算処理の結果を出力する。データストリームに対する処理内容は任意である。
【００２１】
〔１０〕項１のストリーム処理装置において、前記プロセッサは演算手順に従ってストリーム処理を行い、前記バッファメモリは入力したデータストリーム及び出力するデータストリームを一時的に保管し、前記プロセッサは前記バッファメモリをランダムアクセス可能である。プロセッサにとってバッファメモリに対するアクセス形態には融通性がある。
【００２２】
〔１１〕項１のストリーム処理装置において、前記プロセッサは演算手順に従ってストリーム処理を行い、前記プロセッサが読み書き可能なデータを保存するデータメモリを有し、前記データメモリは前記プロセッサからのアクセスに際してアドレス変換処理を行うことが可能である。前記アドレス変換は、一のデータストリームの処理を終了し次のデータストリームの処理を開始する際に、一のデータストリームが格納されるメモリ領域と他のデータストリームが格納されるメモリ領域との夫々にマッピングされる論理アドレスを入れ替える処理である。このダブルバッファ構成により、プロセッサによるストリーム処理に影響を与えることなく次のストリーム処理のための制御ストリーム及びデータストリームを予めバッファメモリに蓄積することができる。アドレスマッピングの入れ替えにより、プロセッサがデータメモリを参照するための実行するプログラム記述は、参照データがダブルバッファの何れの領域にあって変更することを要しない。
【００２３】
〔１２〕項１のストリーム処理装置において、前記プロセッサは演算手順に従ってストリーム処理を行、前記プロセッサの演算手順を示すプログラムを保存する命令メモリを有し、前記命令メモリは前記プロセッサからのアクセスに際してアドレス変換処理を行うことが可能である。前記アドレス変換は一のデータストリームの処理を終了し次のデータストリームの処理を開始する際に、一のデータストリームに対する演算手順を示すプログラムが格納されるメモリ領域と次のデータストリームに対する演算手順を示すプログラムが格納されるメモリ領域との夫々にマッピングされる論理アドレスを入れ替える処理である。演算手順を示すプログラムの格納領域に関しても上記同様の効果がる。
【００２４】
〔１３〕データストリームを入力して演算処理を施し、その結果をデータストリームとして出力するストリーム処理装置は、バッファメモリと、前記バッファメモリと前記ストリーム処理装置の外部との間のデータ転送制御に用いられるデータ転送制御装置と、前記バッファメモリに格納されたデータストリームの演算処理に用いられるプロセッサとを有する。前記データ転送制御装置は、バッファメモリに格納された制御ストリームが持つデータストリームの取得先に関する情報に基づいて前記データストリームを前記バッファメモリに転送し、前記バッファメモリに転送された制御ストリームが持つデータストリームの演算処理に要するパラメータに基づいて前記プロセッサが前記バッファメモリ内のデータストリームに対して演算処理を行なう。前記プロセッサによる前記バッファメモリ内のデータストリームに対する演算処理に並行して、前記データ転送制御装置はその外部と前記バッファメモリとの間でデータストリーム及び制御ストリームのデータ転送を制御する。
【００２５】
これによれば、データストリームの演算処理に並行して次のデータストリームの処理に必要なパラメータや演算手順の情報並ぶにデータストリームを予めバッファメモリに格納して利用可能になる。したがって、複数のストリームを連続的に処理する場合において、あるストリーム処理と次のストリーム処理との移行期間でデータストリームの処理を行うプロセッサの待ち時間を抑制でき、ストリーム処理装置の実効性能を高めることができる。
【００２６】
〔１４〕項１３のストリーム処理装置は更に、前記バッファメモリに格納された制御ストリームの解析結果に基づいた制御を行う制御ユニットを有する。前記制御ユニットは、制御ストリームが持つデータストリームの取得先に関する情報に基づいて前記データ転送制御装置に転送条件を設定する。
【００２７】
〔１５〕項１３のストリーム処理装置は更に、前記プロセッサにより読み書き可能なデータメモリを有し、前記制御ユニットは、制御ストリームが持つデータストリームの演算処理に要するパラメータを前記データメモリに設定する。次のデータストリームの処理に必要なパラメータ等を制御ストリームを用いて予めデータメモリに格納することが可能になる。
【００２８】
〔１６〕項１３のストリーム処理装置は更に、前記プロセッサにより読み書き可能なデータメモリを有し、前記データメモリは前記プロセッサからアクセスされる際にアドレス変換処理を行うことが可能であり、前記アドレス変換は、一のデータストリームの処理を終了し次のデータストリームの処理を開始する際に、一のデータストリームが格納されるメモリ領域と他のデータストリームが格納されるメモリ領域との夫々にマッピングされる論理アドレスを入れ替える処理である。
【００２９】
〔１７〕項１３のストリーム処理装置は更に、前記プロセッサの演算手順を示すプログラムを保存する命令メモリを有し、前記命令メモリは前記プロセッサからアクセスする際にアドレス変換処理を行うことが可能であり、前記アドレス変換は、一のデータストリームの処理を終了し次のデータストリームの処理を開始する際に、一のデータストリームに対する演算手順を示すプログラムが格納されるメモリ領域と次のデータストリームに対する演算手順を示すプログラムが格納されるメモリ領域との夫々にマッピングされる論理アドレスを入れ替える処理である。
【００３０】
〔１８〕データストリームに演算処理を施して結果をデータストリームとして出力するストリーム処理方法は第１処理乃至第３処理を含む。第１処理はストリーム処理に必要な情報として、処理するデータストリームの取得先に関する情報と、データストリームの処理に要するパラメータを持つ１個以上の制御ストリームを用意する処理である。第２処理は用意された制御ストリームの前記データストリームの取得先に関する情報に従ってデータストリームを参照する処理である。第３処理は必要に応じ用意された制御ストリームの前記パラメータを参照して演算を行なう処理である。
【００３１】
〔１９〕データ処理システムは、データストリームを入力して演算処理を施し、その結果をデータストリームとして出力するストリーム処理装置と、前記データストリームに対するストリーム処理に必要な情報として制御ストリーム及び前記データストリームが格納されるメモリと、前記メモリとストリーム処理装置を制御するホストプロセッサと有する。前記制御ストリームは入力するデータストリームの取得先に関する情報と、データストリームの演算処理に要するパラメータを持つ。前記ストリーム処理装置は、バッファメモリとプロセッサとを有し、前記制御ストリームを前記メモリからバッファメモリに入力し、入力した前記制御ストリームが保有するデータストリームの取得先に関する情報に従ってデータストリームを前記バッファメモリに入力し、前記バッファメモリに入力されたデータストリームに対して制御ストリームのパラメータに基づいて前記プロセッサが演算処理を行なう。
【００３２】
〔２０〕項１９のデータ処理システムにおいて、ホストプロセッサは前記メモリに制御ストリーム及び前記データストリームを格納する制御を行う。前記ストリーム処理装置は、前記メモリから前記バッファメモリに前記制御ストリーム及びデータストリームを転送する転送制御装置を有する。
【００３３】
〔２１〕項１９のデータ処理システムは例えば１個の半導体基板に半導体装置として形成される。
【００３４】
２．実施の形態の詳細
実施の形態について更に詳述する。以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明する。なお、発明を実施するための最良の形態を説明するための全図において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は省略する。
【００３５】
図１には本発明に係るストリーム処理装置の入出力ストリームの構成が例示される。図１に示すように、ストリーム処理装置１００はデータストリームの入力である第１入力ストリーム８０１から第ｎ入力ストリーム８０３及びデータストリームの出力である第１出力ストリーム９０１から第ｍ出力ストリーム９０３に加えて、制御用ストリームの入力である制御ストリーム７００を入出力ストリームとして扱う。入力ストリームと出力ストリームは複数記しているが、それぞれ１ストリームずつの場合もあり得るし、入出力一方のみ１ストリームの場合もあり得る。
【００３６】
ストリーム処理装置１００は１個以上の入力ストリームを同時に参照し、１個以上の出力ストリームを同時に出力可能である。また、ストリーム処理装置１００は入力ストリーム、出力ストリームの入出力処理とは独立して制御ストリーム７００を参照する。
【００３７】
図２にはストリーム処理装置１００が適用されるデータ処理システムが例示される。まずシステム構成について説明する。ストリーム処理装置１００はバス５００経由でホストプロセッサ２００、メモリ制御装置３００、メモリ３５０、及び入出力装置４００に接続する。
【００３８】
図２に示したシステム構成においてメモリ３５０が主記憶装置となる。ホストプロセッサ２００はシステム全体を制御し、ストリーム処理装置１００を利用するためのトリガになるような制御も行う。ホストプロセッサ２００の動作に必要なプログラムはメモリ３５０に格納され、ホストプロセッサ２００はメモリ制御装置３００経由でメモリ３５０にアクセスする。入出力装置４００は外部との接続に用いられる。外部機器からのデータは入出力装置４００から入力された後、一度メモリ３５０に格納されてから処理される。ストリーム処理装置１００及びホストプロセッサ２００によるデータの処理結果は一度メモリ３５０に格納され、入出力装置４００から外部機器へ出力される。
【００３９】
次にストリーム処理装置１００の内部構成について説明する。バスインタフェース１１０はバス５００とストリーム処理装置１００内部を接続するインタフェースである。制御レジスタ１４０はストリーム処理装置１００の全体の動作を制御するための制御情報がセットされるレジスタであり、バス５００側からアクセス可能である。制御レジスタ１４０は必要に応じて複数のレジスタで構成する場合もある。
【００４０】
ＤＭＡコントローラ１２０はストリームの入出力に伴うデータ転送や、命令メモリ１６０、データメモリ１６０とバス５００側との間のデータ転送を行う。また、ＤＭＡコントローラ１２０はデータをバイパス転送する機能を持ち、バス５００側から直接命令メモリ１６０及びデータメモリ１７０へのアクセスが可能となっている。ＤＭＡコントローラ１２０に対する転送制御情報のセットはホストプロセッサ２００が行い、また、制御ストリーム解析ユニットが行う。また、ストリーム処理プロセッサ１８０からＤＭＡコントローラ１２０に対する転送制御情報のセットも可能になっており、ストリーム処理上必要であれば、ストリーム処理プロセッサ１８０は柔軟にストリーム入出力の制御を行うことも可能となっている。
【００４１】
ストリームバッファ１３０は入出力処理を行っているストリームの内容を一時的に保管するバッファメモリである。ストリームバッファ１３０には制御ストリーム７００も一時的に保管される。ＤＭＡコントローラ１２０はストリームの入出力を行う際は、ストリームバッファ１３０とバス５００側との転送を行う。
【００４２】
ストリーム処理プロセッサ１８０は主としてデータストリームを処理するプロセッサであり、命令メモリ１６０に格納されたプログラムにしたがって動作する。またストリーム処理プロセッサ１８０の作業用データメモリとしてデータメモリ１７０が配置されている。ストリーム処理プロセッサ１８０はストリームバッファ１３０にデータストリームのデータが格納されていることを検出することにより、当該データをストリームバッファ１３０から読込んで所定のデータ処理（ストリーム処理）を行い、その結果をストリームバッファに書き込む。
【００４３】
ビット処理エンジン１９０は指定されたビット幅でデータストリームからデータを順次取り出したり、指定されたビット幅でデータをストリームへ書き出したりする機能を提供する。ビット処理エンジン１９０はストリーム処理プロセッサ１８０が様々なビット長の連続するデータを取り扱う際に利用され、いわゆるアクセラレータとして機能される。ビット処理エンジン１９０はストリームバッファ１３０に接続され、３２ビットや６４ビットなどストリームバッファ１３０にアクセスする単位でまとめてストリームバッファ１３０からストリームデータを読み出し、またストリームバッファ１３０へストリームデータを書き込むことができる。
【００４４】
制御ストリームアドレスキュー１５５は制御ストリーム７００を格納した先頭アドレスを制御レジスタ１４０経由で保持するＦＩＦＯバッファである。通常、制御ストリーム７００はストリーム処理装置１００の起動前にホストプロセッサ２００により生成されてメモリ３５０に格納され、ストリーム処理装置１００は制御ストリーム７００にしたがって処理を行う。したがって、ストリーム処理装置１００は起動時に、メモリ３５０に格納されている制御ストリーム７００の所在を示す先頭アドレスを必要とする。制御ストリーム解析ユニットはそのようなアドレスを用いて必要な制御ストリームを取得するためにＤＭＡコントローラ１２０に設定や起動を制御する。更に制御ストリーム解析ユニット１５０は制御ストリーム７００の内容に応じてＤＭＡコントローラ１２０やストリーム処理プロセッサ１８０の設定や起動を制御する。また必要に応じて制御ストリーム７００の内容の一部を命令メモリ１６０やデータメモリ１７０に書き込む機能も備える。
【００４５】
ここで、ストリーム処理装置１００の詳細を以下に説明する前に、ストリーム処理装置１００による制御ストリームを用いた処理について概要を説明する。制御ストリームが格納されているメモリ３５０のアドレスがホストプロセッサ２００により制御レジスタ１４０に書き込まれ、制御ストリームアドレスキュー１５５を介して制御ストリーム解析ユニット１５０がそのアドレスを用いてＤＭＡコントローラ１２０の制御ストリーム用転送チャネルを初期設定する。これに従って制御ストリームがストリームバッファ１３０に転送される。制御ストリーム解析ユニット１５０はストリームバッファ１３０に転送された制御ストリームを解析し、制御ストリームに付随するパラメータ等をデータメモリ１７０や命令メモリ１６０等に格納し、また、制御ストリームに付随する入力ストリームアドレスフィールドで指定されるアドレス情報に従ってデータストリームを、ＤＭＡコントローラ１２０を用いてストリームバッファ１３０に格納する。一群のストリームは制御ストリームと、制御ストリームに対応するデータストリームで構成する。データストリームがストリームバッフ１３０に入力されると、命令メモリ１６０内のプログラムを実行するストリーム処理プロセッサ１８０がストリームバッフ１３０に入力されたデータストリームのデータに対して復号等の所定のデータ処理であるストリーム処理を順次施し、処理結果は、同じく先の制御ストリームによって指定されたメモリ３５０の領域にＤＭＡコントローラ１２０の制御で格納される。このような処理が、一群の制御ストリームとデータストリームから成るストリーム毎に繰り返される。特に一群を成すストリームのデータストリームに対してストリーム処理を行なっているとき、これに並行して、次の一群を成すストリームの制御ストリームやデータストリームを予め入力する。すなわち、ストリーム処理プロセッサ１８０によるデータストリームに対するストリーム処理中に、次の一群を成すストリームの制御ストリームやデータストリームを先読みする。このような機能を実現するストリーム処理装置１００の各部について以下に詳述する。
【００４６】
図３にストリーム処理装置１００が取り扱うストリームに関して、メモリ３５０に格納する際の領域割り当ての例を示す。図３においてメモリアドレスはバス５００からメモリ３５０をアクセスする際のアドレスである。また、図３に示したメモリアドレスは例であり、システム構成やホストプロセッサ２００のプログラムなどの都合により変更して構わない。
【００４７】
入力ストリーム格納領域として、第１入力ストリーム格納領域Ａ８１１〜第ｎ入力ストリーム格納領域Ａ８１３の領域Ａの部分（領域群Ａ）、第１入力ストリーム格納領域Ｂ８２１〜第ｎ入力ストリーム格納領域Ｂ８１３の領域Ｂの部分（領域群Ｂ）、第１入力ストリーム格納領域Ｃ８３１の領域Ｃの部分（領域群Ｃ）が代表的に示されているが、それ以降も同様にシステムに応じて必要分の入力ストリームの領域群が存在する。ストリーム処理装置１００は同時に複数のストリームを入力する機能を持ち、領域群単位で入力ストリームを取り扱う。入力ストリーム格納領域として領域群を複数用意すれば、さまざまな入力ストリームを複数の領域群に蓄えた後に、連続的にストリーム処理を行うことが可能である。
【００４８】
入力ストリームの領域群毎に同じ個数の入力ストリーム格納領域を用意しているが、ストリーム処理毎に同時に参照する入力ストリームの数は異なっても良い。この場合、余った入力ストリーム格納領域は未使用にする。
【００４９】
尚、便宜上、領域群ごとに同時に参照する入力ストリーム格納領域をまとめた形で説明しているが、メモリ３５０の領域管理が可能であれば、入力ストリーム格納領域を１箇所に固めて配置する必要はない。また各領域群に属する入力ストリーム格納領域の個数を必要に応じて動的に管理することも可能である。
【００５０】
入力ストリームの格納領域は領域に格納した入力ストリームの処理をストリーム処理装置１００が完了した時点で、新たに入出力装置４００より入力されるストリーム領域として再利用する。
【００５１】
また、図３には出力ストリーム格納領域として、第１出力ストリーム格納領域Ａ９１１〜第ｍ出力ストリーム格納領域Ａ９１３の領域Ａの部分（領域群Ａ）、第１出力ストリーム格納領域Ｂ９２１〜第ｍ出力ストリーム格納領域Ｂ９１３の領域Ｂの部分（領域群Ｂ）、第１出力ストリーム格納領域Ｃ９３１の領域Ｃの部分（領域群Ｃ）が代表的に示されているが、それ以降も同様にシステムに応じて必要分の出力ストリームの領域群が存在する。ストリーム処理装置１００はあるストリームの処理において同時に複数のストリームを出力する機能を持つ。出力ストリームの領域群を複数用意することで、連続的にストリーム処理を行った結果を以前の結果を上書きすることなく格納することが可能である。
【００５２】
出力ストリームの領域群毎に同じ個数の出力ストリーム格納領域を用意しているが、ストリーム処理毎に出力するストリーム数を変更することも有り得る。
【００５３】
尚、便宜上、領域群ごとに出力ストリーム格納領域をまとめた形で説明しているが、メモリ３５０の領域管理が可能であれば、出力ストリーム格納領域を１箇所に固めて配置する必要はない。また各領域群に属する出力ストリーム格納領域の個数を必要に応じて動的に管理することも可能である。
【００５４】
出力ストリームの格納領域は、ストリーム処理装置１００から結果が書き込まれ、その結果を入出力装置４００から出力するなどして、ストリーム処理装置１００から新しいデータが書き込まれる可能性がなくなり、かつ出力結果の保存が不要になった時点で、ストリーム処理装置１００が新規に結果を書き込む領域として再利用する。
【００５５】
制御ストリーム格納領域７１０にはストリーム処理装置１００を起動する際にストリーム処理装置へ渡す制御ストリーム７００を格納する。制御ストリーム７００の生成はホストプロセッサ２００で行う。ある制御ストリーム７００にしたがってストリーム処理装置１００が処理を行っている期間に新規のデータストリームが入力されストリーム処理装置１００で処理する準備が整った際、新規のデータストリーム処理用に制御ストリーム７００を生成する必要が生じる場合がある。このような場合、制御ストリーム格納領域７１０を複数の領域に分割しておき、現在処理に利用している制御ストリーム７００を上書きしないよう別の領域に新しい制御ストリーム７００を生成する。
【００５６】
ある制御ストリーム７００の処理が全て完了すると、制御ストリーム解析ユニット１５０は制御レジスタ１４０、バスインタフェース１１０経由でホストプロセッサ２００へ通知する。この通知を利用してホストプロセッサ２００はその制御ストリーム７００を格納した領域が再利用可能であるか判断する。
【００５７】
図４にはバス５００側からストリーム処理装置１００をアクセスした際のアドレス空間の例を示す。このアドレス空間には制御レジスタ空間５１４０、命令メモリ空間５１６０、データメモリ空間５１７０が存在する。
【００５８】
制御レジスタ空間５１４０には制御レジスタ１４０に存在するレジスタやＤＭＡコントローラ１２０に存在するＤＭＡ制御用のレジスタがマッピングしてあり、ホストプロセッサ２００はこれらのレジスタを通してストリーム処理装置１００を制御することが可能である。
【００５９】
命令メモリ空間５１６０には命令メモリ１６０がマッピングしてあり、ストリーム処理装置１００動作前にホストプロセッサ２００によってストリーム処理プロセッサ１８０のプログラムを書き込むことが可能である。
【００６０】
データメモリ空間５１７０にはデータメモリ１７０がマッピングしてあり、ストリーム処理装置１００動作前にホストプロセッサ２００によってストリーム処理装置１００が必要とする初期パラメータを設定することが可能である。
【００６１】
命令メモリ空間５１６０及びデータメモリ空間５１７０には一部実際のメモリをマップしていない空間が存在し、命令メモリ１６０及びデータメモリ１７０の容量拡張に対応可能となっている。
【００６２】
図５にＤＭＡコントローラ１２０に存在するＤＭＡ制御用のレジスタの構成を示す。ＤＭＡ制御用のレジスタは、第１ＤＭＡレジスタセット１２１０から第ｇＤＭＡレジスタセット１２９０までの複数のレジスタセットで構成されている。各レジスタセットはＤＭＡデータ転送チャネルを構成する。各レジスタセットはバッファ開始アドレスレジスタ１２０１、バッファ終了アドレスレジスタ１２０２、バッファライトアドレスレジスタ１２０３、バッファリードアドレスレジスタ１２０４、メモリベースアドレスレジスタ１２０５、メモリオフセットアドレスレジスタ１２０６、最大オフセットアドレスレジスタ１２０７、状態フラグレジスタ１２０８で構成している。レジスタ１２０１〜１２０４はストリームバッファ１３０側のアドレス指定用レジスタであり、レジスタ１２０５〜１２０７はメモリ３５０側のアドレス指定用レジスタである。要するに、それらレジスタは後述するようにジスストリームバッファ１３０とメモリ３５０間のデュアルアドレス転送制御に用いられる。
【００６３】
ＤＭＡレジスタセットはＤＭＡコントローラ１２０で同時に転送する可能性のある最大転送数以上必要である。すなわち、ストリーム処理装置１００が処理時に同時に参照する可能性のある最大入力ストリーム数と同時に出力する可能性のある最大ストリーム数の和の２倍に制御ストリームの読み出しに必要な１を加えたＤＭＡレジスタセットが最低限必要である。同時に参照する可能性のある最大入力ストリーム数と同時に出力する可能性のある最大ストリーム数の和の２倍必要であるのは、次の処理対象である入力ストリームの先行入力処理や、現在の入力ストリームに関する処理結果である出力ストリームがストリームバッファ１３０に残っている時点で次に処理する入力ストリームに関する処理結果の出力を開始可能にするためである。
【００６４】
但し、入力ストリームの読み出し遅れによるストリーム処理装置１００の性能低下に比べ、出力ストリームの出力開始遅れによるストリーム処理装置１００の性能低下は通常小さいため、回路規模への配慮などから、現在の入力ストリームに関する処理結果である出力ストリームがストリームバッファ１３０から完全に出力された後に、次に処理する入力ストリームに関する処理結果の出力に必要なＤＭＡコントローラ１２０の設定を行い、出力を開始する方法も考えられる。この場合、必要なＤＭＡレジスタセットはストリーム処理装置１００が処理時に同時に参照する最大入力ストリーム数の２倍と同時に出力する最大ストリーム数の和に制御ストリームの読み出しに必要な１を加えたＤＭＡレジスタセットが最低限必要である。
【００６５】
１個のＤＭＡレジスタセットはＤＭＡコントローラ１２０によるＤＭＡ転送の１転送チャネルに対応する。バッファ開始アドレスレジスタ１２０１は対応する転送チャネルに割り当てたストリームバッファ１３０の格納領域の先頭アドレス、バッファ終了アドレスレジスタ１２０２は終了アドレスの直後のアドレスを保持する。バッファライトアドレスレジスタ１２０３は次にデータをバッファに書き込むアドレス、バッファリードアドレスレジスタ１２０４は次にデータをバッファから読み出すアドレスを保持し、それぞれデータの書き込み、読み出し毎に次のアドレスを指すよう更新する。更新によってアドレスがバッファ終了アドレスレジスタ１２０２に保持されたアドレスと一致した場合、バッファ開始アドレス１２０１に保持されたアドレスに戻す。
【００６６】
メモリベースアドレスレジスタ１２０５はメモリ３５０の転送元領域、あるいは転送先領域の先頭アドレスを保持する。メモリオフセットレジスタ１２０６はメモリ３５０に対する次の読み出しあるいは書き込み先アドレスに関して、メモリベースアドレスレジスタ１２０５に保持された値との差分を保持する。対応する転送チャネルがメモリ３５０へ読み出し、あるいは書き込みを行う毎に次のアドレスを指すよう更新する。
【００６７】
最大オフセットアドレスレジスタ１２０７はメモリオフセットレジスタ１２０６で保持する値で許容可能な最大値を示す。メモリオフセットレジスタ１２０６の値が最大オフセットアドレスレジスタ１２０７に一致した後に対応するチャネルでメモリ３５０へ読み出しあるいは書き込み処理が発生した場合、当該チャネルを停止しストリーム処理プロセッサ１８０やホストプロセッサ２００へ通知可能となっている。この機能により、ＤＭＡの転送チャネル毎にメモリ３５０で使用可能な領域を限定することが可能となり、メモリ３５０の内容保護を実現できる。
【００６８】
状態フラグレジスタ１２０８は対応する転送チャネルの動作状態、転送方向、ストリームバッファ１３０に割り当てた領域のバッファフル状態を保持する。
【００６９】
図６には状態フラグレジスタの構成が例示される。動作中フラグ１２９１は対応する転送チャネルが動作中は１になり停止中は０となる。動作中フラグ１２９１は当該転送チャネルの転送を開始する際１に設定する。当該転送チャネルの転送が完了するとＤＭＡコントローラ１２０が自動的に０に戻す。リード/ライトモードフラグ１２９２は対応する転送チャネルがストリーム処理装置１００からメモリ３５０へ転送する場合１、メモリ３５０からストリーム処理装置１００へ転送する場合０に設定する。バッファフルフラグ１２９３は対応するチャネルに割り当てたストリームバッファ１３０内の領域が有効なデータで完全に埋まっている際に１になり、それ以外は０になる。ＤＭＡ転送においてバッファライトアドレスレジスタ１２０３の内容とバッファリードアドレスレジスタ１２０４の内容が異なれば、必ず有効なデータがストリームバッファ１３０内に保持されていることがわかるが、バッファライトアドレスレジスタ１２０３の内容とバッファリードアドレスレジスタ１２０４の内容が同じ場合、バッファに有効なデータが全く存在しない状態とバッファが有効なデータで全て埋まっている状態の両方が考えられる為、どちらの状態であるか判定する為にバッファフルフラグ１２９３が必要となる。
【００７０】
図７にストリーム処理プロセッサ１８０のプログラム読み出し用のメモリ空間である命令メモリ空間６１６０の構成を示す。命令メモリ空間６１６０は将来の拡張を考慮し、一部分にのみ命令メモリ１６０をマップしている。命令メモリ１６０にはダブルバッファ領域Ｃ１６１、ダブルバッファ領域Ｄ１６２、固定領域Ｂ１６３の領域が存在する。
【００７１】
ダブルバッファ領域Ｃ１６１及びダブルバッファ領域Ｄ１６２はストリーム処理プロセッサ１８０によりあるデータストリームの処理を完了する毎に、命令メモリ空間６１６０へのアドレスマップを交互に切り替える。例えばダブルバッファ領域Ｃ１６１がアドレス０００００−０８０００に割当てられ、ダブルバッファ領域Ｄ１６２がアドレス０８０００−１００００に割当てられているとき、ストリーム処理プロセッサ１８０がアドレス０００００−０８０００によりダブルバッファ領域Ｃ１６１のプログラムを実行しているとき、ダブルバッファ領域Ｄ１６２に次のストリーム処理に用いるプログラムを予め格納し、ダブルバッファ領域Ｃ１６１のプログラムの実行が終了した時点で、ダブルバッファ領域Ｄ１６２のマッピングをアドレス０００００−０８０００に、ダブルバッファ領域Ｃ１６１のマッピングをアドレス０８０００−１００００に切換え、ストリーム処理プロセッサ１８０がアドレス０００００−０８０００により当該次のストリーム処理においてダブルバッファ領域Ｄ１６２のプログラムを実行することができる。このように、あるデータストリームの処理に用いているプログラムを片方の領域に格納しておけば、そのデータストリームの処理期間中にもう一方の領域の内容を書き換えることが可能で、ストリーム処理プロセッサ１８０によるデータストリームの処理と次のデータストリーム処理に向けたプログラムの書き込み処理を同時に行うことが可能になる。固定領域Ｂ１６３は様々なデータストリーム処理で共通して利用可能なプログラム（サブルーチン）を格納する領域である。尚、アドレスマップに交互切換えのためのロジックは例えば命令メモリが持ち、切り替え指示は制御ストリームの処理状況及びストリーム処理プロセッサ１８０の処理状況に応じて行えばよい。また、構成によっては固定領域Ｂ１６３が存在しない場合も考えられるし、データストリーム毎にプログラムを入れ替える必要がない場合にはダブルバッファ領域Ｃ１６１及びダブルバッファ領域Ｄ１６２は不要となる。
【００７２】
図８にストリーム処理プロセッサ１８０のデータ読み書き用のメモリ空間の構成を示す。データ読み書き用のメモリ空間にはデータメモリ空間６１７０とストリームバッファ空間６１３０の部分が存在する。
【００７３】
データメモリ空間６１７０は将来の拡張を考慮し、一部分にのみデータメモリ１７０をマップしている。データメモリ１７０にはダブルバッファ領域Ａ１７１、ダブルバッファ領域Ｂ１７２、固定領域Ａ１７３の領域が存在する。
【００７４】
ダブルバッファ領域Ａ１７１及びダブルバッファ領域Ｂ１７２はストリーム処理プロセッサ１８０があるデータストリームの処理を完了する毎にデータメモリ空間６１７０へのアドレスマップを交互に切り替える。したがって、あるデータストリームの処理に用いているパラメータを片方の領域に格納しておけば、そのデータストリームの処理期間中にもう一方の領域の内容を書き換えることが可能で、ストリーム処理プロセッサ１８０でのデータストリームの処理と次のデータストリーム処理に向けたパラメータの書き込みを同時に行うことが可能になる。アドレスマッピングの切換えは前記命令メモリ１６０の場合と同様に行なえばよい。
【００７５】
固定領域Ａ１７３は様々なデータストリーム処理で必要となる作業用データメモリとして利用する。尚、構成によっては固定領域Ａ１７３が存在しない場合も考えられるし、データストリーム毎にパラメータを入れ替える必要がない場合にはダブルバッファ領域Ａ１７１及びダブルバッファ領域Ｂ１７２は不要となる。
【００７６】
ストリームバッファ空間６１３０はストリームバッファ１３０の将来の拡張を考慮し、一部分のみにストリームバッファ１３０をマップしている。ストリームバッファ１３０をストリーム処理プロセッサ１８０のデータ読み書き用メモリ空間にマップすることにより、割り当てたバッファ領域のサイズに限定されるが、その範囲でストリームデータにランダムにアクセスすることが可能になる。ストリームデータであっても局所的に一塊のデータが存在する場合があるため、ストリーム処理プロセッサ１８０からストリームデータのある局所的な部分にランダムアクセス可能であると便利である。例えば、ランダムアクセス可能な範囲で予め後半部分のデータを作成した後に前半部分のデータを作成する場合や、途中までストリームを作成して作成したデータの出力をキャンセルするといった用途に利用可能である。
【００７７】
ストリームバッファ１３０は複数領域に分割して利用し、それぞれの領域にＤＭＡコントローラ１２０による転送チャネルを対応させて利用する。すなわち、ＤＭＡレジスタセットのバッファ開始アドレスレジスタ１２０１に指定したアドレスからバッファ終了アドレスレジスタ１２０２の直前のアドレスまでがストリームバッファ１３０の１個の領域に対応する。ストリームバッファ空間６１３０はＤＭＡの転送チャネル毎に空間を分割し、分割した空間それぞれに対して、個々の転送チャネルで利用するストリームバッファ１３０の領域をマップする。
【００７８】
ある転送チャネルに割り当てたストリームバッファ１３０内の領域に注目して、ストリームバッファ空間６１３０にどのように領域がマップされるのかを図９に示す。図９ではストリームバッファ空間６１３０の第１バッファ領域１３１に注目して示している。第１バッファ領域１３１は、その領域を使用するＤＭＡ転送チャネルのＤＭＡレジスタセットのバッファライトアドレスレジスタ１２０３またはバッファリードアドレスレジスタ１２０４が保持するアドレスが第１バッファマップ領域６１３１の先頭に来るようにアドレス変換してマップする。当該転送チャネルが入力ストリーム用に用いられる場合はバッファリードアドレスレジスタ１２０４が保持するアドレスを使用し、出力ストリーム用に用いられる場合はバッファライトアドレスレジスタ１２０３が保持するアドレスを使用する。このようにアドレス変換することで、ストリーム処理プロセッサ１８０がある時点で処理対象にしている範囲の先頭部分が常に同じアドレスとなり、ストリーム処理プロセッサ１８０で動作するプログラムの開発が容易になる。要するに、ストリームバッファ１３０はＦＩＦＯバッファとしての機能を備えるため、ストリームバッファ１３０内におけるバッファ領域の物理アドレスは可変にされるからである。このようなアドレス変換は、例えば、ストリーム処理プロセッサ１８０がストリームバッファ１３０をアクセスするためのアクセスアドレスのアドレス演算に際して行えば良い。この時必要なオフセットとなるバッファリードアドレス又はバッファライトアドレスはＤＭＡコントローラ１２０から取得すればよい。
【００７９】
ストリームバッファ１３０に対してストリームバッファ空間６１３０を用いてストリーム処理プロセッサ１８０から直接読み書きする場合、直接読み書きの対象となるバッファに対応するＤＭＡ転送チャネルのバッファ管理ポインタの管理を一部ストリーム処理プロセッサ１８０で動作するプログラムで行う必要がある。
【００８０】
入力ストリームの処理を行っている転送チャネルでは参照前にストリームバッファ１３０に必要十分のデータが読み込み済みであるか確認し、ストリームバッファ１３０に読み込まれている部分の参照を必要とする処理が全て完了した時点でストリームを読み進めるよう処理を行う必要がある。データが読み込み済みであるかの確認には、当該ＤＭＡ転送チャネルのバッファフルフラグ１２９３、バッファライトアドレスレジスタ１２０３及びバッファリードアドレスレジスタ１２０４を用いて行う。ストリームを読み進める為には当該ＤＭＡ転送チャネルのバッファリードアドレスレジスタ１２０４の値を読み進める長さ分増加させることで行う。但し、バッファ終了アドレスレジスタ１２０２以降の値になった場合は、バッファ終了アドレスレジスタ１２０２の値からバッファ開始レジスタ１２０１の値を引いた値を差し引いた値にする。バッファリードアドレスレジスタ１２０４の更新と同時にバッファフルフラグ１２９３の更新も行う。
【００８１】
出力ストリームの処理を行っている転送チャネルでは書き込み前にストリームバッファ１３０に必要十分の空きがあるか確認し、ストリームバッファ１３０への書き込み処理が完了した時点でストリームを書き進めるよう処理を行う必要がある。ストリームバッファ１３０に必要十分の空きがあるかの確認には、当該ＤＭＡ転送チャネルのバッファフルフラグ１２９３、バッファライトアドレスレジスタ１２０３及びバッファリードアドレスレジスタ１２０４を用いて行う。ストリームを書き進める為には当該ＤＭＡ転送チャネルのバッファライトアドレスレジスタ１２０３の値を書き進める長さ分増加させることで行う。但し、バッファ終了アドレスレジスタ１２０２以降の値になった場合は、バッファ終了アドレスレジスタ１２０２の値からバッファ開始レジスタ１２０１の値を引いた値を差し引いた値にする。バッファライトアドレスレジスタ１２０３の更新と同時にバッファフルフラグ１２９３の更新も行う。
【００８２】
図１０には制御ストリーム７００の構成が例示される。制御ストリームは１個以上の制御コマンド群７１００,７２００，７９００で構成し、それぞれの制御コマンド群は１個以上の制御コマンド７２１０，７２２０,７２９０で構成する。それぞれの制御コマンドは制御コマンドヘッダ７２２１とそれに続く０個以上の制御パラメータ７２２６で構成される。１個の制御コマンド群はストリーム処理時に同時に参照することになる１組の入力ストリームの処理に対応する制御情報を持つ。制御コマンド群を複数並べることにより、複数の組の入力ストリームをストリーム処理装置１００により連続的に処理することが可能である。
【００８３】
図１１には制御コマンドヘッダ７２２１のフィールド構成が例示される。制御コマンドヘッダ７２２１は境界フラグフィールド６１００、コマンドタイプフィールド６２００、及びパラメータフィールド６３００を有する。
【００８４】
境界フラグフィールド６１００は１個の制御コマンド群の最後の制御コマンドであることを示すのに用いるフラグである。１個の制御コマンド群の最後の制御コマンドの場合１、それ以外の制御コマンドの場合０を指定する。１個の制御コマンド群を構成する制御コマンドの個数は可変であるため、制御ストリーム解析ユニット１５０は境界フラグフィールド６１００を参照して１個の制御コマンド群の最後を判定する。
【００８５】
コマンドタイプフィールド６２００はコマンドタイプを指定するフィールドで、制御コマンドの機能を指定する値を指定する。コマンドタイプフィールド６２００の値によって制御ストリーム解析ユニット１５０は処理の内容や当該制御コマンドに含まれるパラメータ構成を判定する。
【００８６】
パラメータフィールド６３００はコマンドを構成するパラメータを格納するフィールドで、コマンドタイプフィールド６２００の値によってフィールド持つ意味が異なる。
【００８７】
図１２にはコマンドタイプフィールド６２００の値とコマンドの機能の関係が例示される。
【００８８】
コマンドタイプ０はそのコマンドヘッダが属する制御コマンド群に対応するストリームを処理する際に、処理対象とする入力ストリームが格納されているアドレスを指定する機能を持つ。コマンドタイプ０の制御コマンドヘッダは図１３に示す構成となる。コマンドタイプ０ではコマンドタイプフィールド６２００に０を指定する。ラストフラグ６３０２は当該制御コマンドヘッダが属する制御コマンド群が制御ストリーム７００の最後であることを示すフラグであり、最後の場合１、それ以外の場合０を指定する。すなわち、ラストフラグ６３０２が１のコマンドタイプ０の制御コマンド、あるいは以降の制御コマンドで境界フラグフィールドに１を指定すると、制御ストリーム７００の最後の制御コマンドとして取り扱うことになる。
【００８９】
予約領域は未使用領域である。入力ストリームグループＩＤフィールド６３０１には入力ストリームグループＩＤを指定する。コマンドタイプ０は第１制御パラメータ７２２６を指定する必要があり、第１制御パラメータ７２２６に入力ストリームアドレスフィールド６３０５が存在する。入力ストリームアドレスフィールド６３０５には処理対象とする入力ストリームが格納されているアドレスを指定する。このアドレスは図３に示したアドレス空間におけるアドレスである。
【００９０】
入力ストリームグループＩＤは入力ストリームの識別番号で、ストリーム処理時に同時に参照する１組の入力ストリームが複数の入力ストリームとなる場合に、入力ストリームを識別するのに利用する。制御ストリーム解析ユニット１５０が制御コマンドを処理する際、入力ストリームグループＩＤに応じて、入力ストリームの入力に用いるＤＭＡ転送チャネルの割り当てを決めることで、ストリーム処理プロセッサ１８０は処理時に参照すべき入力ストリームを正しく参照することが可能である。
【００９１】
ストリーム処理時に同時に参照する１組の入力ストリームのセットが複数の入力ストリームとなる場合、１個の制御コマンド群に入力ストリームグループＩＤの重複しないコマンドタイプ０を複数用いて、すべての入力ストリームを指定する。同時に参照する１組の入力ストリームのセットが単独の入力ストリームの場合、入力ストリームグループＩＤには通常０を指定する。
【００９２】
コマンドタイプ１の制御コマンドヘッダは図１４に示す構成になる。コマンドタイプ１は直前のコマンドタイプ０の制御コマンドで指定した入力ストリームの最大サイズを設定する機能を持つ。
【００９３】
コマンドタイプ１はコマンドタイプフィールド６２００には１を指定する。最大ストリーム長フィールド６３１２は入力ストリームに対するサイズ制限を指定するフィールドである。最大ストリーム長フィールド６３１２で設定した値は、制御ストリーム解析ユニット１５０により対応する入力ストリームの転送チャネルのＤＭＡレジスタセットに存在する最大オフセットアドレスレジスタ１２０７に書き込む。最大ストリーム長を指定することで、入力ストリーム毎にメモリ領域を制限でき、メモリ保護が可能である。また入力ストリームが一部壊れて処理が正常に行われず、入力ストリームの最後が判定不能な場合でも、入力ストリームを最大ストリーム長で指定した長さ以上処理しようとした時点でＤＭＡコントローラ１２０からストリーム処理プロセッサ１８０に通知が発生するので、処理が終了しない危険性を回避できる。
【００９４】
コマンドタイプ４の制御コマンドヘッダは図１５に示す構成になる。コマンドタイプ４は任意のデータを命令メモリ１６０やデータメモリ１７０、制御レジスタ１４０へ書き込む機能を持つ。
【００９５】
コマンドタイプ４はコマンドタイプフィールド６２００には４を指定する。データ長フィールド６３１１には書き込むデータの長さを指定する。長さは３２ビット単位を１ワードとするワード数を指定する。但し、長さ指定の単位はシステムにあわせて変更して構わない。コマンドタイプ４では第１制御パラメータにデータ格納先アドレスフィールド６３１５を持つ。データ格納先アドレスフィールド６３１５ではデータ格納先として図４に示したアドレス空間に対応するアドレスを指定する。但し、命令メモリ１６０またはデータメモリ１７０のダブルバッファ空間に対応するアドレスの場合、制御ストリーム解析ユニット１５０でアドレス変換を行い、図４に示したアドレス空間において一方がストリーム処理プロセッサ１８０で利用中となるので、アクセス先がもう一方の領域になるよう制御する。したがって、コマンドタイプ４の制御コマンドによって命令メモリ１６０またはデータメモリ１７０のダブルバッファ領域に書き込む場合は、小さいアドレス側をデータ格納先アドレスフィールドに指定すればよい。
【００９６】
コマンドタイプ４で書き込むデータは第２制御パラメータ以降にデータ長フィールド６３１１で指定した個数を順に格納する。
【００９７】
コマンドタイプ４の制御コマンドを用いて出力ストリームの格納先の設定も行う。コマンドタイプ４ではデータメモリ１７０の任意の領域にパラメータを書き込むことが可能である為、予めデータメモリ１７０で出力ストリームの格納先アドレスを格納するアドレスを決めておき、コマンドタイプ４の制御コマンドでそのアドレスに出力先アドレスを書き込み、ストリーム処理プロセッサ１８０で動作するプログラムによって出力先アドレスを参照してＤＭＡコントローラ１２０に存在するＤＭＡ制御レジスタを設定すれば、指定したアドレスに出力ストリームを書き込むことが可能である。
【００９８】
出力ストリームの格納先やＤＭＡ制御レジスタの設定をストリーム処理プロセッサ１８０で動作するプログラムによって行うので、出力ストリーム出力方法に自由度が高い。例えば、同時に参照する１組の複数の入力ストリームに関する処理結果を１本の出力ストリームに纏めたり、１本の入力ストリームをストリームに含まれる情報の種類毎に複数の出力ストリームに分割して出力したりすることも可能である。また、異なる制御コマンド群で指定した入力ストリームの処理結果を連続した１本の出力ストリームとして出力することも可能である。
【００９９】
１本の入力ストリームをストリームに含まれる情報の種類毎に複数の出力ストリームに分割するのは特にＭＰＥＧ−２など画像コーデックのデコード処理に有効である。画像コーデックのデコード時はｉＤＣＴ処理など係数を変換する処理と動きベクトルを元に参照画像を既にデコードした画像から読み出す処理を並列実行することが可能である。入力ストリームにはｉＤＣＴ処理など係数と動きベクトル情報の両方が含まれている為、ストリーム処理装置１００でこれらのパラメータをｉＤＣＴ処理や動きベクトル処理に利用しやすいフォーマットに変換し、さらにそれぞれのパラメータを別ストリームとして出力すれば、ｉＤＣＴ処理と動きベクトルを元に参照画像を読み出す処理を並列実行することが容易になる。
【０１００】
入力ストリームはＤＭＡコントローラ１２０で対応する転送チャネルの動作開始後、メモリ３５０からデータを読み出し、ストリームバッファ１３０に読み出した内容が書き込まれるまでストリーム処理プロセッサ１８０で処理を開始することができないが、出力ストリームはＤＭＡコントローラ１２０の設定を行った後であればストリームバッファ１３０へ書き込み可能になるため、出力ストリームに関してＤＭＡ制御レジスタの設定をストリーム処理プロセッサ１８０で行っても、ストリーム処理装置１００の処理性能への影響は少ない。
【０１０１】
図１６にはストリーム処理装置１００の動作タイミングが例示される。これを用いてストリーム処理装置１００の動作を全体的に説明する。
【０１０２】
ストリーム処理装置１００の利用に先立ち、まずホストプロセッサ２００からストリーム処理装置１００の初期化処理を行う（ＴＲ１）。ＤＭＡ制御レジスタを設定してＤＭＡの転送チャネルにストリームバッファ１３０の領域を割り当てる必要がある。また、必要に応じて命令メモリ１６０へ初期プログラムやストリーム処理を行う上で共通で利用可能なサブルーチンなどを書き込み、データメモリ１７０へ共通で利用可能なパラメータを書き込む。
【０１０３】
次にメモリ３５０に格納された状態にある入力ストリームの処理に必要な制御ストリーム７００の生成をホストプロセッサ２００で行う。制御ストリーム７００の生成が完了したら、制御レジスタ１４０に存在する制御ストリーム７００の先頭アドレス指定用レジスタに制御ストリーム７００のアドレスを書き込む。この操作によりストリーム処理装置１００が起動する。制御ストリーム７００の先頭アドレス指定用レジスタに制御ストリーム７００のアドレスが書き込むと、このアドレスは一度制御ストリームアドレスキュー１５５に書き込まれる。制御ストリームアドレスキュー１５５にアドレスが１個以上保持されている状態で、制御ストリーム解析ユニット１５０が制御ストリーム７００の処理を行っていないと、制御ストリーム解析ユニット１５０は制御ストリーム７００のＤＭＡ転送チャネルに対応するＤＭＡレジスタセットの初期化を行い、制御ストリーム７００の読み出しが始まり、制御ストリーム解析ユニット１５０が制御ストリーム７００の処理を開始する（ＴＲ２）。
【０１０４】
制御ストリーム解析ユニット１５０は制御ストリーム７００に従い処理を進め、入力ストリームの読み出しに必要な情報が揃った時点で入力ストリーム読み出し処理に必要なＤＭＡ転送設定を行い入力ストリームの読み出しを開始させ（ＴＲ３）、１個の制御コマンド群の処理が全て完了した時点でストリーム処理プロセッサ１８０によるストリーム処理が起動される(ＴＲ４)。この際、入力ストリームの読み出しに用いているＤＭＡ転送チャネルの情報がストリーム処理プロセッサ１８０に伝えられ、また出力ストリームの出力に利用可能なＤＭＡ転送チャネルの情報もストリーム処理プロセッサ１８０に伝えられる。必要に応じて複数の出力ストリームを同時に出力可能とするため、出力ストリームの出力に利用可能なＤＭＡ転送チャネルとしてストリーム処理装置１００として予め決まっているチャネル本数分を、出力に利用可能なＤＭＡ転送チャネルとしてストリーム処理プロセッサ１８０に伝えられる。
【０１０５】
ストリーム処理プロセッサ１８０でストリーム処理が開始されると同時に、制御ストリーム解析ユニット１５０は次の制御コマンド群の処理を開始する(ＴＲ５)。この際、制御コマンドにより命令メモリ１６０及びデータメモリ１７０に書き込みを行う際に用いるダブルバッファ領域の割り当てを反転し、ストリーム処理プロセッサ１８０での処理に影響を与えないようにする。次の制御コマンド群の処理を進めることで、次の入力ストリームの処理に必要なプログラムを命令メモリ１６０に書き込み、パラメータを１７０に書き込む。また次の入力ストリームの読み出しに必要なＤＭＡ制御用のレジスタの設定も行う。この際、現在の入力ストリーム読み出しに使用しているＤＭＡ転送チャネルや出力ストリームの出力に利用可能とストリーム処理プロセッサ１８０に伝えたＤＭＡ転送チャネル以外を利用する。
【０１０６】
次の入力ストリームに対応する制御コマンド群の処理が完了した時点で、制御ストリーム解析ユニット１５０は次の入力ストリームの読み出しに使用するＤＭＡ転送チャネルを起動し、入力ストリームの先読みを開始する(ＴＲ６)。この際複数の入力ストリームを参照する処理であれば、必要な入力ストリーム全ての先読みを行う。
【０１０７】
次の制御コマンド群の処理が完了し、かつストリーム処理プロセッサ１８０で実行している入力ストリームの処理が完了した時点で、制御ストリーム解析ユニット１５０はストリーム処理プロセッサ１８０から見える命令メモリ１６０及びデータメモリ１７０のダブルバッファ領域の割り当てを反転し、次の入力ストリームの読み出しに用いているＤＭＡ転送チャネルをストリーム処理プロセッサ１８０に伝え、次の入力ストリーム処理時に出力ストリームの出力に利用可能なＤＭＡ転送チャネルをストリーム処理プロセッサ１８０に伝える。そしてストリーム処理プロセッサ１８０を再度起動する。ストリーム処理プロセッサ１８０が起動された時点で入力ストリームの先頭部分の読み出しが完了しており、またプログラムやパラメータも準備済みとなっているので、ストリーム処理プロセッサ１８０は直ぐ処理を開始できる（ＴＲ７）。
【０１０８】
以後、制御ストリーム７００の最後の制御コマンド群の処理が完了するまで同様の処理を繰り返すことにより、ストリーム処理プロセッサ１８０は殆ど停止することなく処理を行うことが可能である。
【０１０９】
制御ストリームアドレスキュー１５５により、ストリーム処理装置１００動作中に次の制御ストリーム７００を指定可能である。制御ストリーム７００の生成は入力ストリームがメモリ３５０に格納された状態で行う必要がある。ストリーム処理装置１００動作中であっても、入出力装置４００から新しい入力ストリームが入力されメモリ３５０に格納される場合もあり、このような場合はストリーム処理装置１００が動作中であっても、ホストプロセッサ２００で次の制御ストリーム７００を生成し、制御レジスタ１４０に存在する制御ストリーム７００の先頭アドレス指定用レジスタに書き込んでおけば、制御ストリームアドレスキュー１５５に次の制御ストリーム７００のアドレスが格納され、制御ストリーム解析ユニット１５０は複数の制御ストリーム７００を連続的に処理することが可能である。
【０１１０】
以上の説明ではストリーム処理装置１００を１個の装置として記したが、ストリーム処理装置１００、ホストプロセッサ２００、メモリ制御装置３００、入出力装置４００、バス５００を１個の半導体基板に集積した半導体装置として実現してもよい。
【０１１１】
図１７には上述のストリーム処理装置１００の機能を拡張した例を示す。図１７においてストリーム処理装置１００は、図１による入出力対象のストリームに加えて、サブ制御ストリーム７０６を取り扱うことを可能とする。そのために、ストリーム処理装置１００は図１８に示すコマンドタイプを制御ストリーム７００で利用することを可能とする。サブ制御ストリーム７０６を取り扱うため、前記ストリーム処理装置１００に対して制御ストリーム７００で利用可能なコマンドにコマンドタイプ２が追加されている。コマンドタイプ０、コマンドタイプ１、コマンドタイプ４については前述と変わりない。
【０１１２】
コマンドタイプ２の制御コマンドヘッダは図１９に示す構成を有する。コマンドタイプ２の機能はコマンドタイプ４の機能と同様に任意のデータを命令メモリ１６０やデータメモリ１７０、制御レジスタ１４０へ書き込む機能を持つ。但し、コマンドタイプ４では書き込むデータを制御パラメータとして制御コマンド内に格納したが、コマンドタイプ２では書き込むデータをサブ制御ストリーム７０６として読み出す。すなわちコマンドタイプ２では、サブ制御ストリーム７０６を格納する領域をメモリ３５０内に用意し、その領域に書き込むデータ列を格納しておく必要がある。
【０１１３】
コマンドタイプ２ではコマンドタイプフィールド６２００には２を指定する。データ長フィールド６３１１には書き込むデータの長さを指定する。長さは３２ビット単位を１ワードとするワード数を指定する。コマンドタイプ２では第１制御パラメータにデータ格納先アドレスフィールド６３１５を持つ。データ格納先アドレスフィールド６３１５ではデータ格納先として図４に示したアドレス空間に対応するアドレスを指定する。但し、命令メモリ１６０またはデータメモリ１７０のダブルバッファ空間に対応するアドレスの場合、制御ストリーム解析ユニット１５０でアドレス変換を行い、図４に示したアドレス空間においてストリーム処理プロセッサ１８０で利用中ではない領域になるよう制御する。したがって、コマンドタイプ２の制御コマンドによって命令メモリ１６０またはデータメモリ１７０のダブルバッファ領域に書き込む場合は、小さいアドレス側をデータ格納先アドレスフィールドに指定すれば、ストリーム処理プロセッサ１８０の動作に影響を与えないよう処理が行われる。
【０１１４】
コマンドタイプ２では第２制御パラメータにサブ制御ストリームアドレスフィールド６３１６を持つ。サブ制御ストリームアドレスフィールド６３１６にはサブ制御ストリーム７０６を格納した開始アドレスを指定する。このアドレスは図３に示したアドレス空間におけるアドレスである。
【０１１５】
サブ制御ストリーム７０６の内容はコマンドタイプ２で命令メモリ１６０やデータメモリ１７０あるいは制御レジスタ１４０に書き込むデータの列である。したがって、コマンドタイプ２を用いて命令メモリ１６０に書き込むプログラムの種類や、データメモリ１７０に書き込む一塊の分だけサブ制御ストリーム７０６を用意する必要がある。
【０１１６】
制御ストリーム解析ユニット１５０はコマンドタイプ２の制御コマンドを処理すると、サブ制御ストリーム７０６読み出しように割り当てたＤＭＡ転送チャネルの初期化及び起動を行い、ＤＭＡコントローラ１２０によりサブ制御ストリーム７０６の内容を命令メモリ１６０やデータメモリ１７０あるいは制御レジスタ１４０へ転送する。制御ストリーム解析ユニット１５０はサブ制御ストリーム７０６の転送の完了を待った後、次の制御コマンドの処理を行う。
【０１１７】
サブ制御ストリーム７０６のデータ転送のため、図１の場合に比べＤＭＡの転送チャネルを１本多く持つ必要がある。したがって、ＤＭＡレジスタセットもそれに比べて１個多く持つ必要がある。
【０１１８】
コマンドタイプ２を用いると、コマンドタイプ４だけで制御ストリーム７００を生成するのに比べて、特に命令メモリ１６０に書き込むプログラムの取り扱いが容易になる。一般的には取り扱う入力ストリームのフォーマットはある仕様や規格に準拠している為、ストリーム処理において必要なプログラムの種類も限定できる。コマンドタイプ４を用いる場合、コマンドストリーム中にプログラムに相当するデータ列を制御コマンド群毎にコピーするなどして制御ストリーム７００を生成する必要があるが、コマンドタイプ２を用いる場合、予めある決まった領域に必要なプログラムを格納しておけば、プログラムを格納した先頭のアドレスをコマンドタイプ２で指定すれば良いので、プログラムに相当するデータ列のコピーが不要となり、ホストプロセッサ２００の処理やメモリ３５０へのアクセスを低減することができる。
【０１１９】
本発明のストリーム処理装置は画像・音声などを符号化したストリームの生成、また画像・音声などを符号化したストリームの復号に適用可能である。画像、音声それぞれに符号化規格があり、また画像・音声それぞれ複数の符号化規格が存在する。また、画像・音声を符号化したストリームを含む様々なデータストリームの暗号化や暗号化したデータストリームの復号化処理にも利用できる。デジタルテレビやＤＶＤなど画像・音声ストリームや暗号ストリームを取り扱う機器は多く、これらの機器においてストリーム処理装置は様々な規格のストリーム処理を行う必要があり、ストリームの属する規格に応じて処理するプログラムやパラメータを変更する必要がある。本発明のストリーム処理装置では、プログラムやパラメータの変更を伴いながら連続的に様々なフォーマットのストリームをストリーム処理プロセッサで効率よく行うことが可能になり、同一性能のストリーム処理プロセッサを用いて多くのストリーム処理を行うことが可能になる。
【０１２０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【図面の簡単な説明】
【０１２１】
【図１】ストリーム処理装置のストリーム入出力構成の第１の例を示すブロック図である。
【図２】ストリーム処理装置を適用してデータ処理システムの一例を示すブロック図である。
【図３】バスからアクセスする際のメモリのアドレスマップを例示する説明図である。
【図４】バスからアクセスする際のストリーム処理装置のアドレスマップを例示する説明図である。
【図５】ＤＭＡ制御レジスタの構成を例示する説明図である。
【図６】ＤＭＡレジスタセットの状態フラグレジスタの構成を例示する説明図である。
【図７】ストリーム処理プロセッサからプログラムにアクセスする際のアドレスマップを例示する説明図である。
【図８】ストリーム処理プロセッサからデータにアクセスする際のアドレスマップを例示する説明図である。
【図９】第１バッファマップ領域をアクセスする際のアドレス変換の内容を例示する説明図である。
【図１０】制御ストリームの構成を例示する説明図である。
【図１１】制御コマンドヘッダのフィールド構成を例示する説明図である。
【図１２】第１のストリーム処理装置の制御コマンドのコマンドタイプと機能の関係を例示する説明図である。
【図１３】コマンドタイプ０の制御コマンドの構成を例示する説明図である。
【図１４】コマンドタイプ１の制御コマンドの構成を例示する説明図である。
【図１５】コマンドタイプ４の制御コマンドの構成を例示する説明図である。
【図１６】ストリーム処理装置の動作タイミングを例示するタイミングチャートである。
【図１７】サブ制御ストリームによる機能拡張を行ったストリーム処理装置におけるストリーム入出力構成を例示する説明図である。
【図１８】サブ制御ストリームを用いるストリーム処理装置における制御コマンドのコマンドタイプと機能の関係を例示する説明図である。
【図１９】第２コマンドタイプの制御コマンドの構成を例示する説明図である。
【符号の説明】
【０１２２】
１００…ストリーム処理装置
１１０…バスインタフェース
１２０…ＤＭＡコントローラ
１３０…ストリームバッファ
１３１…第１バッファ領域
１３３…第ｐバッファ領域
１４０…制御レジスタ
１５０…制御ストリーム解析ユニット
１５５…制御ストリームアドレスキュー
１６０…命令メモリ
１６１…ダブルバッファ領域Ｃ
１６２…ダブルバッファ領域Ｄ
１６３…固定領域Ｂ
１７０…データメモリ
１７１…ダブルバッファ領域Ａ
１７２…ダブルバッファ領域Ｂ
１７３…固定領域Ａ
１８０…ストリーム処理プロセッサ
１９０…ビット処理エンジン
２００…ホストプロセッサ
３００…メモリ制御装置
３５０…メモリ
４００…入出力装置
５００…バス
７００…制御ストリーム
７０６…サブ制御ストリーム
７１０…制御ストリーム格納領域
８０１〜８０３…入力ストリーム
９０１〜９０３…出力ストリーム
１２０１…バッファ開始アドレスレジスタ
１２０２…バッファ終了アドレスレジスタ
１２０３…バッファライトアドレスレジスタ
１２０４…バッファリードアドレスレジスタ
１２０５…メモリベースアドレスレジスタ
１２０６…メモリオフセットアドレスレジスタ
１２０７…最大オフセットアドレスレジスタ
１２０８…状態フラグレジスタ
１２１０〜１２９０…ＤＭＡレジスタセット
１２９１…動作中フラグ
１２９２…リード/ライトモード
１２９３…バッファフルフラグ
５１４０…制御レジスタ空間
５１６０…命令メモリ空間
５１７０…データメモリ空間
６１００…境界フラグフィールド
６１３０…ストリームバッファ空間
６１３１〜６１３３…バッファマップ領域
６１６０…命令メモリ空間
６１７０…データメモリ空間
６２００…コマンドタイプフィールド
６３００…パラメータフィールド
６３０１…入力ストリームグループＩＤフィールド
６３０２…ラストフラグフィールド
６３１１…データ長フィールド
６３１２…最大ストリーム長フィールド
６３１５…データ格納先アドレスフィールド
６３１６…サブ制御ストリームアドレスフィールド
７１００〜７２００…制御コマンド群
７２１０〜７２２０…制御コマンド
７２２１…制御コマンドヘッダ
７２２６〜７２２９…制御パラメータ
【図１】
2009134391.tif 000003
【図２】
2009134391.tif 000004
【図３】
2009134391.tif 000005
【図４】
2009134391.tif 000006
【図５】
2009134391.tif 000007
【図６】
2009134391.tif 000008
【図７】
2009134391.tif 000009
【図８】
2009134391.tif 000010
【図９】
2009134391.tif 000011
【図１０】
2009134391.tif 000012
【図１１】
2009134391.tif 000013
【図１２】
2009134391.tif 000014
【図１３】
2009134391.tif 000015
【図１４】
2009134391.tif 000016
【図１５】
2009134391.tif 000017
【図１６】
2009134391.tif 000018
【図１７】
2009134391.tif 000019
【図１８】
2009134391.tif 000020
【図１９】
2009134391.tif 000021