(57)【要約】【課題】最近様々な符号化の規格が提案され、高圧縮を実現するために符号化処理が複雑化している。符号化処理専用のプロセッサでこれらの新たな規格を実装するためにはプログラムを格納するための内部メモリを拡張する必要がある。【解決手段】プログラムの記述によって、プログラムまたはデータセットの切り替えを要求し、その要求にしたがい、ＳＤＲＡＭ等の外部メモリから内部メモリへプログラムまたはデータセットを転送する。【効果】切り替え発生の回数が多くならないようにプログラムおよびデータセットを分割することにより、内部メモリを拡張することなく、また切り替えに発生するオーバーヘッドを抑えて、データストリーム処理を実装することが可能となる。特に複数の階層で構成されるＭＰＥＧストリームでは、上位階層と下位階層に分割することによって有効に適用できる。【選択図】  図１
2004179809.tif 000002
【特許請求の範囲】
【請求項１】
データストリーム処理部と、プログラム／データセット転送部と、システム制御部と、主メモリを有するデータストリーム処理装置において、
前記データストリーム処理部は、命令列で構成されるプログラムを格納する命令メモリと、データセットを格納するデータメモリと、プログラムまたはデータセットの切り換え要求を外部に通知するプログラム／データセット切り換え通知部と、前記命令メモリのプログラムから読み込んだ命令列に従って、プログラム／データセット切り換え通知部に切り換え要求を発行するプロセッサを有するデータストリーム制御部と、
前記主メモリ、前記命令メモリ、前記データメモリの間でプログラム／データセットの転送を行うプログラム／データセット転送部と、
前記プログラム／データセット切り換え通知部からの要求に応じて、前記データ転送部を制御するシステム制御部とを有することを特徴とするデータストリーム処理装置。
【請求項２】
前記プログラム／データセット切り換え通知部が前記データメモリの特定のエントリとなることを特徴とする請求項１記載のデータストリーム処理装置。
【請求項３】
主メモリ上に複数のプログラムを格納し、システム制御部は前記複数のプログラムから、プログラム／データセット切り換え通知部で指定されたプログラムを選択し、前記主メモリから前記命令メモリに前記プログラムを転送するようにデータ転送部を制御することを特徴とする請求項１または２記載のデータストリーム処理装置。
【請求項４】
主メモリ上に複数のデータセットを格納し、システム制御部は前記複数のデータセットから、プログラム／データセット切り換え通知部で指定されたデータセットを選択し、前記主メモリから前記データメモリに前記データセットを転送するようにデータ転送部を制御することを特徴とする請求項１または２記載のデータストリーム処理装置。
【請求項５】
前記プログラムはＭＰＥＧストリームの符号化または復号化を実行するプログラムであり、ＭＰＥＧストリームの層ごとに分割した複数のプログラムを主メモリに格納することを特徴とする請求項３記載のデータストリーム処理装置。
【請求項６】
外部から入力されたデータストリームの処理を行うデータストリーム処理プログラムを格納した記録媒体であって、実行中のプログラム内でプログラム番号と開始アドレスを指定し、プログラム番号に対応するプログラムを主メモリから転送した後、指定された開始アドレスから実行を開始することを特徴とするデータストリーム処理プログラムを記録した媒体。
【請求項７】
前記データストリーム処理プログラムで、前記プログラム番号と前記開始アドレスを関数引数としてもつプログラムの関数インタフェース。
【請求項８】
前記データストリーム処理プログラムで、前記プログラム番号と前記開始アドレスをレジスタに格納して渡すプログラムのインタフェース。
【請求項９】
外部から入力されたデータストリームの処理を行うデータストリーム処理プログラムを格納した記録媒体であって、実行中のプログラム内でデータセット番号を指定し、データセット番号に対応するデータセットを主メモリから転送した後、プログラムの実行を再開することを特徴とするデータストリーム処理プログラムを記録した媒体。
【請求項１０】
前記データストリーム処理プログラムで、前記データセット番号を関数引数としてもつプログラムの関数インタフェース。
【請求項１１】
前記データストリーム処理プログラムで、前記データセット番号をレジスタに格納して渡すプログラムのインタフェース。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、映像情報や音声情報等を含んだデータストリームに対して、符号化や復号化等の処理を行うデータストリーム処理装置に関する。
【０００２】
【従来の技術】
映像や音声の情報を圧縮する方式の一つに国際規格で定められたＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）がある。ＭＰＥＧの主な符号化技術として、離散コサイン変換、量子化、動き補償、可変長符号化などが挙げられる。離散コサイン変換、量子化、動き補償は膨大な数の８ビット、１６ビットまたは３２ビットの同一演算を実行する必要があるので、同一の演算器を複数実装したプロセッサを使用して高速化を図ることが多い。一方、可変長符号化処理は主に（１）ビット列によるＶＬＤテーブル引き、（２）ビット列から固定ビット量分の抽出、（３）ビット列内で０または１が連続する回数の計算、（４）（１）から（３）の結果による分岐、を実行する。これらの処理は同一の演算を実行するような処理ではなく、分岐処理も多いので、複数の演算器を有効に使用するのは困難である。そのため、可変長符号化処理を専用に実行するプロセッサを別に実装する。
【０００３】
また、ＭＰＥＧ−２やＭＰＥＧ−４などの複数の規格に対応するため、特許文献１の図４に示されるような、専用プロセッサに専用のメモリを接続した構成をとり、専用のメモリ上に格納したプログラムを実行できるようにして、プログラマブルな開発を可能にする。ＳＤＲＡＭ等の外部メモリにプログラムを格納した場合、プログラムの読み出しに時間がかかり、高速に処理することができないので、専用の内部メモリを実装する。
【０００４】
【特許文献１】
特開２００２−５１３３７
【０００５】
【発明が解決しようとする課題】
最近では、様々な符号化の規格が提案されており、高圧縮を実現するために、符号化処理が複雑化し、プログラムサイズが膨大になっている。その結果、プログラムを格納するための内部メモリを拡張するため、プロセッサを再設計する必要がでてくる。また、内部メモリをキャッシュとして扱い、内部メモリ上に実行する命令が存在しないこと（キャッシュミス）を検出した際に、自動的に外部メモリからある固定サイズ分、キャッシュへ転送することによって、外部メモリにプログラムを格納できるので、プログラムサイズの制限が緩和される。しかし、キャッシュミス時の外部メモリからキャッシュへの転送時間のオーバーヘッドが大きく、ＭＰＥＧストリームにおけるマクロブロック層、ブロック層の処理等のような実行回数の多い処理でキャッシュミスが多発すると、可変長符号化処理の性能に致命的である。
【０００６】
【課題を解決するための手段】
本発明はデータストリーム処理部と、プログラム／データセット転送部と、システム制御部と、主メモリを有するデータストリーム処理装置において、前記データストリーム処理部は、複数の命令列で構成されるプログラムを格納する命令メモリと、データセットを格納するデータメモリと、プログラムまたはデータセットの切り換え要求を外部に通知するプログラム／データセット切り換え通知部と、前記命令メモリのプログラムから読み込んだ命令列に従って、プログラム／データセット切り換え通知部に切り換え要求を発行するプロセッサを有するデータストリーム制御部と、前記主メモリ、前記命令メモリ、前記データメモリの間でプログラム／データセットの転送を行うプログラム／データセット転送部と、前記プログラム／データセット切り換え通知部からの要求に応じて、前記データ転送部を制御するシステム制御部とを有することを特徴とするデータストリーム処理装置に係わるものである。
【０００７】
【発明の実施の形態】
図１に本発明のデータストリーム処理装置の構成を示す。
【０００８】
図１のデータストリーム処理装置は、命令メモリ１５、データメモリ１６、プロセッサ１７、プログラム／データセット切り換え通知部１８を有するデータストリーム処理部１１と、プログラム／データセット転送部１２と、システム制御部１３と、主メモリ１４とで構成される。
【０００９】
プロセッサ１７は命令メモリ１５から命令列１７を読み込み、命令列に従って処理を進めていく。命令列１７がプログラム／データ切り換えの要求を示している場合、プロセッサ１７はプログラム／データセット切り換え通知部１８に要求の情報を通知する。システム制御部１３はプログラム／データセット切り換え通知部１８から切り換え要求を取得し、切り換え要求の情報より主メモリ１４に格納されているプログラムまたはデータセットを命令メモリ１５またはデータメモリ１６に転送するように、プログラム／データセット転送部１２を制御する。
【００１０】
図２にレジスタで構成されている場合のプログラム／データセット切り換え通知部１８の構成を示す。
【００１１】
プログラム／データセット切り換え通知部１８は切り換え要求フラグ用２１、プログラム／データセット番号用レジスタ２２、再開アドレス用レジスタ２３で構成される。
【００１２】
プロセッサ１９はプログラム切り換え要求時に、切り換えるプログラムの番号をプログラム／データセット番号用レジスタ２２に、切り換え後の再開アドレスを再開アドレス用レジスタ２３に書き込み、プログラム切り換え要求を示す値を切り換え要求フラグ用レジスタ２１に書き込む。データセット切り換え要求には、切り換えるデータセットの番号をプログラム／データセット番号用レジスタ２２に、データセット切り換え要求を示す値を切り換え要求フラグ用レジスタ２１に書き込む。システム制御部１３は逐一再開アドレス用レジスタの値をチェックし、プログラム切り換えまたはデータセット切り換えの要求に対応する値が書き込まれたことを確認したら、プログラム／データセット転送部１２を制御し、切り換えを実行する。切り換え実行後に、切り換え要求フラグ用レジスタ２１をクリアする。プロセッサ１７は切り換え要求フラグ用レジスタ２１がクリアされたことを確認したら、実行を再開する。その際、プログラム切り換えの場合は、再開アドレス用レジスタ２３に書き込まれているアドレスから再開する。
【００１３】
図３に本発明のデータストリーム処理装置の構成を示す。
【００１４】
プログラム／データセット転送部１２、システム制御部１３、主メモリ１４は図１のデータストリーム処理装置の場合と同一である。データストリーム処理部３１は、命令メモリ１５、データメモリ３２、プロセッサ３３で構成され、データメモリ３１内にプログラム／データセット切り換え通知部３４を有する。
【００１５】
プログラム／データセット切り換え通知部３４の構成を図４に示す。
【００１６】
データメモリ３１内の一部のエントリを、切り換え要求フラグ４１、プログラム／データセット番号４２、再開アドレス４３を格納するために使用する。プログラム切り換え時にはプロセッサ３３は命令列に従い、切り換えるプログラムの番号をプログラム／データセット番号４２のエントリに、再開アドレスを再開アドレス４３のエントリに格納し、切り換え要求フラグ４１にプログラム切り換え要求を示す値を格納する。データセット切り換え時には、データセット番号をプログラム／データセット番号４２のエントリに格納する。システム制御部１３は適宜切り換え要求フラグ４１を読み込み、プログラムまたはデータセットの切り換え要求を取得したら、プログラム／データセット転送部１２を制御し、切り換えを実行する。切り換え終了後、切り換え要求フラグ４１をクリアすることにより、プロセッサ３３に通知する。
【００１７】
次にＭＰＥＧ−４のストリーム処理を実行する場合のプログラム切り換えの実装を説明する。
【００１８】
図５にＭＰＥＧ−４ストリームの階層の構成を示す。
【００１９】
ＭＰＥＧ−４はプロファイルによって使用できる要素技術が定義されている。最も単純なシンプルプロファイルの場合、ＶＯＰ層は１画面（フレーム）に相当し、ＭＢ（マクロブロック）は１画面を１６ｘ１６ピクセルに分割した単位となる。ＭＰＥＧ−４ではオブジェクト単位の符号化をサポートするために層の数がＭＰＥＧ−２よりも多く、また短ヘッダをサポートするために、ＶＯＬからｖｉｄｅｏ  ｐａｃｋｅｔまでの層とｓｈｏｒｔ  ｈｅａｄｅｒ、ｇｏｂ  ｌａｙｅｒの層は排他的となっている。その結果、層の構成が複雑になり、プログラム全体のサイズが大きくなってしまう。
【００２０】
図６にＭＰＥＧ−４ストリームに関するプログラムの分割方法の一例を示す。
【００２１】
ＭＰＥＧ−４の場合、一般にＶＯＰ層は毎秒３０回しか実行されないが、一方、ＭＢ層以下の層の実行回数は非常に多い。例えば、ＳＩＦサイズ（３５２ｘ２４０）のフレームに対して処理する場合、１秒あたり（３５２／１６）＊（２４０／１６）＊３０＝９９００回となる。そこで、図６に示すようにＶＯＰ以上の層とそれ以下の層が分かれるように、プログラムを分割する。また、Ｉ／Ｐ／Ｓ−ＶＯＰとＢ−ＶＯＰでＭＢ処理が大きく異なるので、これらの処理のプログラムも分割する。プログラム番号として、初期化プログラム６２に番号０を、ＶＯＳ／ＶＯ／ＶＯＬ層用プログラム６３に番号１を、ＧＶＯＰ／ＶＯＰ層用プログラム６４に番号２を、ｖｉｄｅｏ  ｐａｃｋｅｔ／ＭＢ／ｂｌｏｃｋ層（Ｉ／Ｐ／Ｓ−ＶＯＰ）用プログラム６５に番号３を、ｓｈｏｒｔ  ｈｅａｄｅｒ層用プログラム６６に番号４を、ｖｉｄｅｏ  ｐａｃｋｅｔ／ＭＢ／ｂｌｏｃｋ層（Ｂ−ＶＯＰ）用プログラム６７に番号５を、ｇｏｂ  ｌａｙｅｒ／ＭＢ／ｂｌｏｃｋ層用プログラム６８に番号６を割り当てる。これらのプログラムは全て主メモリ６１に格納される。
【００２２】
このように分割することにより、毎秒３０フレームで符号化を実行した場合、ＶＯＰ層からＭＢ層への移動が１フレーム当たり１回、ＭＢ層からＶＯＰ層への移動が１フレーム当たり１回発生する。１回あたりのプログラムの転送時間が４ｋサイクルであると仮定すると、１秒あたり２４０ｋサイクルとなる。動作周波数３００ＭＨｚ（１秒あたり３００Ｍサイクル）のチップで実行した場合、全体の性能に大きく影響することはない。
【００２３】
図７にプログラム内で別のプログラムへの切り換えを要求する際に使用する関数のインタフェースを示す。関数の引数はプログラム番号７１と再開アドレス７２となる。
【００２４】
図８にプログラム内で別のプログラムへの切り換えを要求する際のアセンブリ言語の記述を示す。レジスタ（ｒｅｇ１）にプログラム番号を設定する命令８１、レジスタ（ｒｅｇ２）に再開アドレスを設定する命令８２を実行した後、プログラム切り換え要求を発行するルーチンにジャンプする命令８３を実行する。
【００２５】
図９に図６のＶＯＳ／ＶＯ／ＶＯＬ層用プログラム６３の例を示す。ＶＯＳ／ＶＯ／ＶＯＬ層のデコードを実行した後、スタートコードを検出する。スタートコードがＧＶＯＰの場合、プログラム番号のレジスタに２を（９１）、再開アドレスのレジスタにＧＶＯＰのスタートアドレスを（９２）設定し、切り換えルーチンにジャンプする（９３）。ＶＯＰのスタートコードを検出した場合には、プログラム番号のレジスタに２を（９４）、再開アドレスのレジスタにＶＯＰのスタートアドレスを（９５）設定し、切り換えルーチンにジャンプする（９６）。ｓｈｏｒｔ  ｈｅａｄｅｒを検出した場合には、プログラム番号のレジスタに４を（９７）、再開アドレスのレジスタにｓｈｏｒｔ  ｈｅａｄｅｒのスタートアドレスを（９８）設定し、切り換えルーチンにジャンプする（９９）。
【００２６】
次にＭＰＥＧ−４、ＭＰＥＧ−２ストリームを切り換えるためのデータセット切り換えの実装を説明する。
【００２７】
図１０に主メモリ上のデータセットの格納方法を示す。データセットの番号として、ＭＰＥＧ−４のデータセット１０２に番号０を、ＭＰＥＧ−２のデータセット１０３に番号１を割り当てる。図１１にプログラム内で別のデータセットへの切り換えを要求する際に使用する関数のインタフェースを示す。関数の引数はデータセット番号１１１となる。ＭＰＥＧ−４のデータセットへ入れ替える場合には０を、ＭＰＥＧ−２のデータセットへ入れ替える場合には１を設定する。図１２にプログラム内で別のデータセットへの切り換えを要求する際のアセンブリ言語の記述を示す。レジスタ（ｒｅｇ１）にデータセット番号を設定する命令１２１実行した後、データセット切り換え要求を発行するルーチンにジャンプする命令１２２を実行する。データセットの番号は関数インタフェースの場合と同じである。
【００２８】
【発明の効果】
プログラムの記述により、プログラムまたはデータセットを切り替えることにより、内部メモリを拡張することなく、切り替え時に発生するオーバーヘッドを抑えて、データストリーム処理を実装することが可能である。
【図面の簡単な説明】
【図１】本発明のデータストリーム処理装置の構成を示す図である。
【図２】本発明の一実施例におけるプログラム／データセット切り替え通知部の構成を示す図である。
【図３】本発明のデータストリーム処理装置の構成を示す図である。
【図４】本発明の一実施例におけるプログラム／データセット切り替え通知部の構成を示す図である。
【図５】ＭＰＥＧ−４ストリームの階層を示す図である。
【図６】本発明の一実施例における主メモリ内へＭＰＥＧ−４プログラムを格納する際の構成を示す図である。
【図７】本発明のプログラム切り替えの関数インタフェースを示す図である。
【図８】本発明のプログラム切り替えのレジスタを使用したプログラムを示す一図である。
【図９】本発明の一実施例におけるＭＰＥＧ−４のＶＯＰ／ＶＯ／ＶＯＬ層用プログラムの構成を示す図である。
【図１０】本発明の一実施例における主メモリ内へＭＰＥＧ−４およびＭＰＥＧ−２データセットを格納する際の構成を示す図である。
【図１１】本発明のデータセット切り替えの関数インタフェースを示す図である。
【図１２】本発明のデータセット切り替えのレジスタを使用したプログラムを示す一図である。
【符号の説明】
１１…データストリーム制御部、１２…プログラム／データセット転送部、１３…システム制御部、１４…主メモリ、１５…命令メモリ、１６…データメモリ、１７…プロセッサ、１８…プログラム／データセット切り替え通知部、１９…命令列、２１…切り替え要求フラグ用レジスタ、２２…プログラム／データセット番号用レジスタ、２３…再開アドレス用レジスタ、３１…データストリーム制御部、３２…データメモリ、３３…プロセッサ、３４…プログラム／データセット切り替え通知部、３５…命令列、４１…切り替え要求フラグ用エントリ、４２…プログラム／データセット番号用エントリ、４３…再開アドレス用エントリ、５１…ＶＯＳ層、５２…ＶＯ層、５３…ＶＯＬ層、５４…ＧＶＯＰ層、５５…ＶＯＰ層、５６…ビデオパケット、５７…短ヘッダ、５８…ＧＯＢ層、５９…マクロブロック層、６０…ブロック層、６１…主メモリ、６２…初期化プログラム、６３…ＶＯＳ／ＶＯ／ＶＯＬ層用プログラム、６４…ＧＶＯＰ／ＶＯＰ層用プログラム、６５…ビデオパケット／マクロブロック／ブロック層（Ｉ／Ｐ／Ｓ−ＶＯＰ）用プログラム、６６…短ヘッダ用プログラム、６７…ビデオパケット／マクロブロック／ブロック層（Ｂ−ＶＯＰ）用プログラム、６８…ＧＯＢ／マクロブロック／ブロック層（Ｂ−ＶＯＰ）用プログラム、７１…プログラム番号用引数、７２…再開アドレス用引数、８１…プログラム番号セット命令、８２…再開アドレスセット命令、８３…切り替えルーチンジャンプ命令、９１…ＧＶＯＰ用プログラム番号設定命令、９２…ＧＶＯＰスタートアドレス設定命令、９３…切り替えルーチンジャンプ命令、９４…ＶＯＰ用プログラム番号設定命令、９５…ＶＯＰスタートアドレス設定命令、９６…切り替えルーチンジャンプ命令、９７…短ヘッダ用プログラム番号設定命令、９８…短ヘッダスタートアドレス設定命令、９９…プログラム切り替えルーチンジャンプ命令、１０１…主メモリ、１０２…ＭＰＥＧ−４用データセット、１０３…ＭＰＥＧ−２用データセット、１１１…データセット番号用引数、１２１…データセット番号設定命令、１２２…データセット切り替えルーチンコール命令。
【図１】
2004179809.tif 000003
【図２】
2004179809.tif 000004
【図３】
2004179809.tif 000005
【図４】
2004179809.tif 000006
【図５】
2004179809.tif 000007
【図６】
2004179809.tif 000008
【図７】
2004179809.tif 000009
【図８】
2004179809.tif 000010
【図９】
2004179809.tif 000011
【図１０】
2004179809.tif 000012
【図１１】
2004179809.tif 000013
【図１２】
2004179809.tif 000014