(57)【特許請求の範囲】
【請求項１】
入力されるビットストリームから指定されたビット数を読み出す動作命令を有するプロセッサであって、
上記ビットストリームを保持するビットストリームバッファメモリと、
上記動作命令によって上記ビットストリームバッファメモリに保持された上記ビットストリームを、上記プロセッサのアンパック処理を制御する拡張命令により指定された１から１６ビットの指定のデータに分割し、当該分割されたビット数を単位として該ビット数の単位に対する指定の時間分の遅延ごとに順次読み出す制御手段と、
上記制御手段の制御により、上記ビットストリームバッファメモリから上記ビット数の単位のデータを受け取り記憶し、該データを読み出して後段に接続されたバレルシフタに渡すために、上記プロセッサのデータアンパックの要求により読み出し無効なデータを廃棄して位置調整を行う、バッファレジスタと
を有するプロセッサ。
【請求項２】
上記制御手段は、上記読み出しのビット数に応じて、次回読み出しの位置を示すポイントを更新する
請求項１記載のプロセッサ。
【請求項３】
上記バッファレジスタから上記読み出したデータに対して、上記データの廃棄時にＣＲＣ（Cyclic Redundancy Check:巡回冗長検査）演算を行うＣＲＣ演算手段を
さらに有する請求項１記載のプロセッサ。
【請求項４】
入力されるビットストリームから指定されたビット数を読み出す動作命令を有する復号装置であって、
上記ビットストリームを保持するビットストリームバッファメモリと、
上記動作命令によって上記ビットストリームバッファメモリに保持された上記ビットストリームを、上記プロセッサのアンパック処理を制御する拡張命令により指定された１から１６ビットの指定のデータに分割し、当該分割されたビット数を単位として該ビット数の単位に対する指定の時間分の遅延ごとに順次読み出す制御手段と、
上記制御手段の制御により、上記ビットストリームバッファメモリから上記ビット数の単位のデータを受け取り記憶し、該データを読み出して後段に接続されたバレルシフタに渡すために、上記プロセッサのデータアンパックの要求により読み出し無効なデータを廃棄して位置調整を行う、バッファレジスタと
を有する復号装置。
【請求項５】
上記制御手段は、上記読み出しのビット数に応じて、次回読み出しの位置を示すポイントを更新する
請求項４記載の復号装置。
【請求項６】
上記バッファレジスタから上記読み出したデータに対して、上記データの廃棄時にＣＲＣ（Cyclic Redundancy Check:巡回冗長検査）演算を行うＣＲＣ演算手段を
さらに有する請求項４記載の復号装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサ、例えばディジタル信号を処理するＤＳＰ（Digital Signal Processor）及びこのプロセッサを用いて構成されている復号装置に関するものである。
【０００２】
【従来の技術】
情報処理及び情報通信技術が高度に発達した現在、コンピュータ・データのみならず、画像や音声などの各種データも電子的に取扱われるようになってきた。特に、近年ディジタル処理技術の進歩によって、ディジタル化された静止画像、動画、音声信号またはこれらの組み合わせで形成されたマルチメディア情報データがコンピュータなどのデータ処理機器によって簡単に処理できる。さらに、誤り訂正などの信号処理技術を活用することによって、インターネットなどの通信ネットワークを介して低いエラーレートで情報データを転送でき、また、大容量のディジタル記憶媒体、例えば、磁気ディスク、光ディスクなどに記憶し、高精度に再生することができる。
【０００３】
通常、マルチメディア情報は、信号の性質上、膨大なデータ容量を有し、そのまま取り扱うには、通信ネットワークの負荷が大きく、また、大容量の記憶媒体を必要とする。このため、通常、情報データが所定フォーマットに従って符号化され、圧縮された後、転送または保存用に提供される。これまでに、マルチメディア情報を符号化し、圧縮するために種々の規格が提案されており、情報処理装置はそれぞれの規格で決められたアルゴリズムに従って情報データを符号化・圧縮して、さらに、その規格よって定められたフォーマットに沿ってビットストリームと呼ばれるデータ系列を生成する。こうした規格は、例えば、静止画像を処理するＪＰＥＧ（Joint Photographic image coding Experts Group ）、動画信号を処理するＭＰＥＧ（Moving Photographic Experts Group ）、または音声信号を処理するＭＰＥＧ−Ａｕｄｉｏなどがある。
【０００４】
符号化・圧縮された情報データから元の画像または音声信号を再生するために、受信されたビットストリーム、または記憶媒体から読み出したビットストリームを所定のフォーマットに従って、所定の区切り単位、例えば、数ビット単位で順次データを抜き出す、いわゆるアンパック処理を行ったうえ、さらに抜き出したデータを復号し、元の情報データを復元する。また、必要に応じて、復号処理の前に、抜き出したデータに対して誤り訂正を行うこともある。
【０００５】
例えば、地上波ディジタル音声放送では、放送される音声信号はディジタル化され、ＭＰＥＧ−Ａｕｄｉｏ規格に従ってビットストリームが生成され、このビットストリームがさらに所定の変調方式、例えば、ＯＦＤＭ変調方式によって変調され、放送される。
受信側では、受信信号が復調され、サンプリング処理によってディジタル信号が得られ、ＯＦＤＭ復調処理によって放送信号のデータストリームが生成される。その後、ＭＰＥＧ−Ａｕｄｉｏの規格によって定められたフォーマットに従って、生成されたデータストリームから所定のビット単位で順次データが抜き出され、誤り訂正処理などを経て元の情報データが再生される。
【０００６】
【発明が解決しようとする課題】
ところで、上述したビットストリームのアンパック処理は、例えば、通常のＤＳＰによって実現する場合、ビットストリームから数ビット、例えば、１から１６ビット単位で順次データを抜き出す機能を持っていないため、処理が複雑になり、ＤＳＰの演算負荷が大きくなる。
【０００７】
図６には、通常のＤＳＰによってビットストリームから所定のビット数のデータを抜き出すアンパック処理のフローチャートを示している。この処理は、例えば、プログラムの構成単位である関数（ＵＮＰＫ）としてまとめられ、プロセッサがこの関数を呼び出すことによって、ビットストリームを格納されている３２ビットのワードバッファ（WordBuffer）から定数Lengthによって指定したビット数のデータを読み出すことができる。
【０００８】
ここで、ビットストリームは、ワードバッファにＭＳＢ側から順次格納されているとする。このため、アンパック処理では、まず、ワードバッファを左に変数ビットカウントBitCount分シフトして、その結果を変数TMP に入力する（ステップＳＰ１）。ここで、ビットカウントは、アンパック処理によって、ワードバッファから抜き出したビット幅の合計値である。
そして、変数TMP を右に（３２−Length）ビット分シフトする。この処理によって、ワードバッファに格納されているビットストリームから、Lengthによって指定したビット数のデータが抜き出される。抜き出したデータを戻り値RetValueに格納される（ステップＳＰ２）。さらに、抜き出したビット数をビットカウントBitCountに加算される（ステップＳＰ３）。
【０００９】
加算されたビットカウントBitCountが１６より小さい場合、戻り値RetValueが返され、処理が終了する（ステップＳＰ９）。一方、ビットカウントBitCountが１６に等しく、または１６を越えた場合、ビットカウントを調整し、ワードバッファのデータを左に１６ビットシフトし、さらに次の１６ビットのビットストリームをワードバッファの下位１６ビットに取り込む（ステップＳＰ４，ＳＰ５，ＳＰ６，ＳＰ７，ＳＰ８）。
上述したように、通常のＤＳＰによってアンパック処理を実行する場合、シフトと加算命令が繰り返して用いられ、ＤＳＰの処理負荷が大きくなる。
【００１０】
また、ＤＳＰの命令の中に、ビットフィールド命令という形で類似した機能を提供している場合もあるが、メモリに配置された自由な形式のデータを扱う前提としているために、ハードウェアの構成が複雑になり、性能的にも不利であった。
【００１１】
ビットストリームは、通信経路から送られてくる、もしくは記憶媒体から読み出されている場合、伝送または読み出しの際に混入するノイズや記憶媒体の傷などにより伝送エラーあるいは読み出しエラーが発生している場合が多い。ＭＰＥＧ−Ａｕｄｉｏなどでは、符号化された情報データに対してさらにＣＲＣ（Cyclic Redundancy Check:巡回冗長検査）のための符号化処理を行うことによって、受信側においてデータ再生のときＣＲＣ処理により、受信データにエラーの有無を判別し、復号されたデータの誤りを訂正し、受信エラーの発生率を低く抑制できる。しかし、プロセッサが標準で持っている命令を組み合わせてＣＲＣを計算すると、ＤＳＰにとって非常に大きな演算負荷となり、例えば、ディジタル音声放送信号を再生するなど高速な処理を要求される場合、ＤＳＰのみで実現することが困難であった。
【００１２】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、比較的に単純な回路の追加によって、回路規模の増加を抑制しつつ、アンパック処理の拡張命令を追加し、アンパック処理に要する動作サイクルを低減でき、ＤＳＰの負荷の軽減、動作周波数及び消費電力の低減を実現できるプロセッサ及びそれを用いた復号装置を提供することにある。
【００１３】
【課題を解決するための手段】
上記目的を達成するため、本発明のプロセッサは、入力されるビットストリームから指定されたビット数を読み出す動作命令を有するプロセッサであって、上記ビットストリームを保持するビットストリームバッファメモリと、上記動作命令によって上記ビットストリームバッファメモリに保持された上記ビットストリームを、上記プロセッサのアンパック処理を制御する拡張命令により指定された１から１６ビットの指定のデータに分割し、当該分割されたビット数を単位として該ビット数の単位に対する指定の時間分の遅延ごとに順次読み出す制御手段と、上記制御手段の制御により、上記ビットストリームバッファメモリから上記ビット数の単位のデータを受け取り記憶し、該データを読み出して後段に接続されたバレルシフタに渡すために、上記プロセッサのデータアンパックの要求により読み出し無効なデータを廃棄して位置調整を行う、バッファレジスタとを有する。
【００１４】
また、本発明では、好適には、上記制御手段は、上記読み出しのビット数に応じて、次回読み出しの位置を示すポイントを更新する。
【００１５】
また、本発明では、好適には、上記バッファレジスタから上記読み出したデータに対して、ＣＲＣ（Cyclic Redundancy Check:巡回冗長検査）演算を行うＣＲＣ演算手段をさらに有する。
【００１６】
また、本発明の復号装置は、入力されるビットストリームから指定されたビット数を読み出す動作命令を有する復号装置であって、上記ビットストリームを保持するビットストリームバッファメモリと、上記動作命令によって上記ビットストリームバッファメモリに保持された上記ビットストリームを、上記プロセッサのアンパック処理を制御する拡張命令により指定された１から１６ビットの指定のデータに分割し、当該分割されたビット数を単位として該ビット数の単位に対する指定の時間分の遅延ごとに順次読み出す制御手段と、上記制御手段の制御により、上記ビットストリームバッファメモリから上記ビット数の単位のデータを受け取り記憶し、該データを読み出して後段に接続されたバレルシフタに渡すために、上記プロセッサのデータアンパックの要求により読み出し無効なデータを廃棄して位置調整を行う、バッファレジスタとを有する。
【００１７】
また、本発明の復号装置において、好適には、上記制御手段は、上記読み出しのビット数に応じて、次回読み出しの位置を示すポイントを更新する。
【００１８】
また、本発明の復号装置において、好適には、上記バッファレジスタから上記読み出したデータに対して、ＣＲＣ演算を行うＣＲＣ演算手段をさらに有する。
【００１９】
本発明によれば、通常のＤＳＰのハードウェアに、アンパック処理専用のハードウェア、例えば、ビットストリームのデータを保持するバッファメモリ、アンパック動作を制御する制御手段、アンパック処理によって切り出したデータを保持するデータ保持手段、及び誤り訂正のためのＣＲＣ演算回路が追加される。また、ＤＳＰの通常命令に、アンパック処理専用の拡張命令が追加される。アンパック処理を行う場合、ＤＳＰが拡張命令を実行し、アンパック処理専用のハードウェアがＤＳＰの指示に従って動作することによって、指定されたビット数のデータがビットストリームから読み出され、かつ次回の読み出しのポイントが制御手段によって自動的に更新される。また、アンパック処理と同時に、ＣＲＣ処理を専用のハードウェアによって実行することができるので、ＤＳＰの演算負荷を軽減でき、ＤＳＰの動作周波数の低減及び消費電力の低減を実現できる。
【００２０】
【発明の実施の形態】
図１は本発明に係るプロセッサを用いて構成された復号装置の一実施形態を示す回路図である。本実施形態の復号回路は、入力されるビットストリームを所定のビット単位で切り出すアンパック機能を有する。また、この復号回路は、アンパックされたストリームに応じて生成されるデータ系列に対して、誤り訂正処理、例えば、ＣＲＣ処理を行い、再生データの誤り率を低減する誤り訂正機能を有する。本実施形態では、プロセッサの処理負荷を増加させることなく、これらの機能を実現するために、専用のバッファメモリを配置し、さらに専用命令の拡張が行われる。
【００２１】
図１に示すように、この復号回路は、ビットストリームバッファメモリ１００とプロセッサ２００によって構成されている。
ビットストリームＢＳＭが外部から入力される入力タイミングは、プロセッサ２００の処理タイミングとはほとんどの場合ずれている。このタイミングのずれを吸収するために、本実施形態では、ビットストリームバッファメモリ１００が設けられている。プロセッサ２００にビットストリームを供給する前に、一旦ビットストリームバッファメモリ１００に蓄えられ、プロセッサの処理タイミングに応じて、ビットストリームからバッファメモリ１００から所定のビット単位でデータが切り出される。
【００２２】
このため、ビットストリームバッファメモリ１００は、所定の容量を持つメモリによって構成されている。例えば、ここで一例として、ビットストリームバッファメモリ１００は、３２ビットのデータを記憶できるＲＡＭによって構成されている。
【００２３】
プロセッサ２００は、例えば、ＤＳＰによって構成され、ビットストリームをアンパックするための回路（ハードウェア）が設けられ、さらに、アンパック処理を実行する拡張命令も設けられている。プロセッサ２００は、ビットストリームバッファメモリ１００から所定のビット数を切り出し、切り出したコードを復号して、復号データを生成する。
【００２４】
図２は、プロセッサ２００の詳細の構成を示している。図示のように、プロセッサ２００は、制御回路２１０、バッファレジスタ２２０、バレルシフタ２３０及びＣＲＣレジスタ２４０によって構成されている。
バッファレジスタ２２０は、ビットストリームバッファメモリ１００から、所定の単位、例えば、バイト、ハーフワードまたはワード単位で、データを受け取り、バレルシフタ２３０に渡すための位置の調整を行うシフトレジスタである。なお、データの受け取り単位は、メモリにデータを格納されているサイズに応じて設定される。
【００２５】
バッファレジスタ２２０における位置の調整は、データアンパックの要求により読み出しずみのデータを廃棄する。読み出しは、例えば、ＭＳＢ側から行われる。
データの廃棄は、１ビットずつ行い、読み出したビット分のサイクルを要する。また、廃棄時に、必要に応じて発行される命令の種類に従って、ＣＲＣレジスタ２４０へのデータ転送も行う。
【００２６】
バレルシフタ２３０は、バッファレジスタ２２０から渡されたデータを受け取り、それを一時保持する。バッファレジスタ２２０からは、最大読み出しビット数に応じたビット数のデータが渡される。渡されたデータは、ＭＳＢ側からすべて未読み出しの有効なデータである。読み出し無効なデータは、シフトレジスタを兼ねているバッファレジスタ２２０において捨てられる。
【００２７】
ただし、ビットストリームの中に、情報内容を示すデータの他に、送信されるデータの属性などを示すヘッダ情報データも含まれている。アンパック処理は、ヘッダ情報の部分を飛ばして、情報内容を示すデータの部分のみに対して行われる。このため、プロセッサ２００において、渡されたデータのすべてを使用する訳ではなく、ヘッダ部分など不必要なデータを捨てる必要がある。
不必要なデータの廃棄は、ＬＳＢ側から行うが、この作業はバレルシフタ２３０によって行われる。
【００２８】
ＣＲＣレジスタ２４０は、ＣＲＣ演算を行うレジスタである。バッファレジスタ２２０によってデータを読み出した後、バッファレジスタ２２０からは１ビット／１クロックの速度で必要な数だけ読み出したデータを廃棄するが、その廃棄したデータに対して、ＣＲＣの計算を行う必要がある場合、ＣＲＣレジスタ２４０において、捨てられている値を用いてＣＲＣの演算を行う。ＣＲＣレジスタ２４０におけるＣＲＣ演算については、後に説明する。
【００２９】
制御回路２１０は、ビットストリームバッファメモリ１００及びプロセッサ２００の各部分動作を制御する。例えば、制御回路２１０は、ビットストリームバッファメモリ１００のアドレスの制御、バッファレジスタ２２０に残っている有効なデータの管理、ＣＲＣレジスタ２４０に対して演算の指示などを行う。
【００３０】
次に、ＣＲＣレジスタ２４０によって行われているＣＲＣ演算について説明する。ＣＲＣ計算の内容は、生成多項式によって与えられている。転送されているビットストリームの種類によっては、複数の生成多項式を必要とする場合もある。この場合、ＣＲＣレジスタ２４０の中に、生成多項式を選択できるような多項式選択手段を設けたり、または複数のＣＲＣレジスタを用意したりすることで対処できる。
【００３１】
図３は、ＣＲＣレジスタ２４０の一構成例を示す回路図である。図示のように，本例のＣＲＣレジスタ２４０は、複数のシフトレジスタ、ここで、８段のシフトレジスタＤ０，Ｄ１，…，Ｄ７及びエクスクルーシブＯＲゲート（排他的ＯＲゲート）ＥＸ１，ＥＸ２，ＥＸ３，ＥＸ４によって構成されている。シフトレジスタＤ０，Ｄ１，…，Ｄ７は、図示していないクロック信号に応じて動作し、クロック信号の入力タイミングで入力端子に入力されるデータを出力端子に出力し、そして、次回のクロック入力まで出力端子のデータを保持する。
【００３２】
ＣＲＣレジスタ２４０は、ＣＲＣ計算を行う生成多項式Ｇ（ｘ）に従って構成される。ここで例えば、一例として生成多項式Ｇ（ｘ）は、次のように与えられる。
【００３３】
【数１】
Ｇ（ｘ）＝ｘ8 ＋ｘ4 ＋ｘ3 ＋ｘ2 ＋１…（１）
【００３４】
式（１）の生成多項式Ｇ（ｘ）に応じて、図３に示すＣＲＣレジスタ２４０が構成されている。図示のように、ＣＲＣレジスタ２４０において、入力データＤinとシフトレジスタＤ７の出力データがエクスクルーシブＯＲゲートＥＸ１に入力される。エクスクルーシブＯＲゲートＥＸ１の出力がエクスクルーシブＯＲゲートＥＸ２，ＥＸ３，ＥＸ４及びシフトレジスタＤ０にそれぞれ入力される。
【００３５】
シフトレジスタＤ１の出力データとエクスクルーシブＯＲゲートＥＸ１の出力データがエクスクルーシブＯＲゲートＥＸ４に入力され、ＥＸ４の出力がシフトレジスタＤ２に入力される。
シフトレジスタＤ２の出力データとエクスクルーシブＯＲゲートＥＸ１の出力データがエクスクルーシブＯＲゲートＥＸ３に入力され、ＥＸ３の出力がシフトレジスタＤ３に入力される。
シフトレジスタＤ３の出力データとエクスクルーシブＯＲゲートＥＸ１の出力データがエクスクルーシブＯＲゲートＥＸ２に入力され、ＥＸ２の出力がシフトレジスタＤ４に入力される。
シフトレジスタＤ４，Ｄ５，Ｄ６及びＤ７が直列接続されている。これらのシフトレジスタは入力端子に入力されたデータを次段のシフトレジスタに転送する。
シフトレジスタＤ７の出力Ｄout は、ＣＲＣ計算の結果として出力される。
【００３６】
図３に示すＣＲＣレジスタ２４０によって、バッファレジスタ２２０から出力されたデータ系列に対して、ＣＲＣ処理が行われ、データ系列に含まれている誤りを検出することができる。
【００３７】
次に、プロセッサ２００におけるアンパック処理について説明する。
本実施形態のプロセッサ２００では、上述したように、アンパック処理用回路（ハードウェア）、例えば、バッファレジスタ２４０、バレルシフタ２３０などが設けられ、さらに、アンパック処理を制御するための拡張命令が追加されている。
【００３８】
アンパック処理は、プロセッサ２００によってアンパックの拡張命令を実行することによって実現される。このとき、制御回路２１０によって、拡張命令に従って、ビットストリームバッファメモリ１００及びバッファレジスタ２２０、バレルシフタ２３０を制御し、ビットストリームバッファメモリ１００に格納されているビットストリームから所定のビット数のデータを切り出し、切り出したデータに応じて、復号データを出力する。
【００３９】
ここで、プロセッサ２００の命令セットにアンパック処理を制御する拡張命令ＵＰＫが追加されているとする。アンパック命令ＵＰＫは、命令の動作を指定するオペレーションコードと、アンパック処理で切り出したデータを格納するレジスタを指定するオペランドと、切り出しのビット数を指示するオペランドによって構成されている。例えば、「ＵＰＫ，Ｒ０，ｍ」の形で与えられた命令は、ビットストリームバッファメモリ１００から、ｍビットのデータを切り出して、レジスタＲ０に格納するという動作が指示される。
【００４０】
図４は、ビットストリームバッファメモリ１００に格納されているビットストリームＢＳＭの一例を示す図である。図示のように、３２ビットのビットストリームバッファメモリ１００に、１６進表記では、０ｘ２７１８，０ｘ２８１８のデータが格納されている。ビットストリームＢＳＭは、可変長（ＶＬＣ：Variable Length Coding）符号であり、各データの符号長がそれぞれ異なる。
図４に示すように、ビットストリームバッファメモリ１００に、ビット数がそれぞれ３，１，４，１，５，９，２，６の８つのデータＤａｔａ０，Ｄａｔａ１，…，Ｄａｔａ７が格納されている。なお、データＤａｔａ０，Ｄａｔａ１，…，Ｄａｔａ７の値は順次、１，０，７，０，６，２０（０ｘ１４），０，１２（０ｘ０ｃ）である。
【００４１】
図５は、図４に示すビットストリームバッファメモリ１００の格納データをアンパック処理するために、プロセッサ１００に与えたプログラムの一例を示している。以下、このプログラムをステップ順に説明し、プロセッサ２００によるアンパック動作を説明する。
【００４２】
ステップＳ１：この命令は、汎用レジスタＲ０にデータ０をセットする命令である。レジスタＲ０は、ビットストリームバッファメモリ１００から切り出したデータを格納するレジスタである。アンパック処理の前に、ステップ１の命令を実行することによって、このレジスタがクリアされる。
【００４３】
ステップＳ２：この命令は、汎用レジスタＲ０の値をコプロセッサレジスタＧ８に転送する命令である。コプロセッサレジスタＧ８にデータ０をロードすることによって、プロセッサ２００にアンパック処理の動作モードを指示する。
【００４４】
ステップＳ３：この命令は、汎用レジスタＲ０に、データ０ｘ５０をセットする。
ステップＳ４：この命令は、汎用レジスタＲ０の値をコプロセッサレジスタＧ９に転送する命令である。この転送によって、汎用レジスタＲ０の値０ｘ５０がコプロセッサレジスタＧ９にロードされ、アンパックアドレスが設定される。コプロセッサレジスタＧ９に設定されたアンパックアドレスの値は、アンパック命令ＵＰＫが実行されると、自動的に更新されるので、ビットストリームを連続的に読み出す場合は、このレジスタの設定はアンパック処理が開始する前に一回のみで済みます。
【００４５】
ステップＳ５：この命令は、汎用レジスタＲ１に、アドレスＢｉｔｓｔｒｅａｍの１ワード前の値に設定する。汎用レジスタＲ１は、ビットストリームから読み出されたデータを格納するためのメモリアドレスを指示するポインタとして使用される。
【００４６】
ステップＳ６：指定した時間分の遅延を制御する疑似命令である。「ＷＡＩＴｎ」のオペランドｎは、遅延する時間を指定する。例えば、ステップＳ６の場合、４命令分の遅延を制御する。
【００４７】
ステップＳ７：アンパック処理を指示するアンパック命令である。この命令に従って、図２に示すアンパック回路では、ビットストリームバッファメモリ１００から３ビット分のデータが読み出され、汎用レジスタＲ０に入力される。
【００４８】
ステップＳ８：この命令は、汎用レジスタＲ０の内容を、プリインクリメントした汎用レジスタＲ１によって指定されたメモリ番地に格納される。ここで、汎用レジスタＲ０には、アンパック命令によってビットストリームから読み出されたデータが格納されているので、このデータが汎用レジスタＲ１によって指定されたメモリ番地に書き込まれる。
【００４９】
ステップＳ９：指定された時間分の遅延を制御する。
【００５０】
ステップＳ８，Ｓ９，Ｓ１０によって指示された処理によって、例えば、図４に示す例では、ビットストリームバッファメモリ１００に格納されているビットストリームのうち、最上位の３ビットが読み出される。即ち、データ０ｘ０００１が汎用レジスタＲ０に読み出され、さらに汎用レジスタＲ１によって指定されたメモリ番地に格納される。
【００５１】
ステップＳ１０：アンパック処理を指示するアンパック命令である。この命令に従って、ビットストリームバッファメモリ１００から、１ビットのデータが読み出され、汎用レジスタＲ０に格納される。
【００５２】
ステップＳ１１：汎用レジスタＲ０に読み出されたアンパックデータを汎用レジスタＲ１によって指示されたメモリ番地に格納される。
【００５３】
ステップＳ１２：指定された時間分の遅延を制御する。
【００５４】
ステップＳ１０，Ｓ１１，Ｓ１２によって指示された処理によって、図４に示す例では、ビットストリームバッファメモリ１００に格納されているビットストリームのうち、最上位から４ビット目のデータが読み出される。即ち、データ０ｘ００００が汎用レジスタＲ０に読み出され、さらに汎用レジスタＲ１によって指定されたメモリ番地に格納される。なお、汎用レジスタＲ１の内容が書き込み毎にインクリメントされるので、アンパック処理によって汎用レジスタＲ０に読み出されたデータがメモリの所定の領域に順次書き込まれる。
【００５５】
ステップＳ１３：アンパック処理を指示するアンパック命令である。この命令に従って、ビットストリームバッファメモリ１００から、４ビットのデータが読み出され、汎用レジスタＲ０に格納される。
【００５６】
ステップＳ１４：汎用レジスタＲ０に読み出されたアンパックデータを汎用レジスタＲ１によって指示されたメモリ番地に格納される。
【００５７】
ステップＳ１５：指定された時間分の遅延を制御する。
【００５８】
ステップＳ１３，Ｓ１４，Ｓ１５によって指示された処理によって、図４に示す例では、ビットストリームバッファメモリ１００に格納されているビットストリームのうち、最上位から５ビット目より、４ビットのデータが読み出される。即ち、データ０ｘ０００７が汎用レジスタＲ０に読み出され、さらに汎用レジスタＲ１によって指定されたメモリ番地に格納される。
これまでの処理によって、ビットストリームバッファメモリ１００から８ビットのデータが読み出され、三つのデータ０ｘ０００１，０ｘ００００，０ｘ０００７がメモリの所定の領域に順次書き込まれる。
【００５９】
上述したビットストリームバッファメモリ１００からの読み出し及びメモリへの書き込みが繰り返して行われる。
ステップＳ１６，Ｓ１７，Ｓ１８の処理によって、ビットストリームバッファメモリ１００から、４番目のデータ０ｘ００００が読み出され、汎用レジスタＲ１によって指定されたメモリ番地に格納される。
ステップＳ１９，Ｓ２０，Ｓ２１の処理によって、ビットストリームバッファメモリ１００から、５番目のデータ０ｘ０００６が読み出され、汎用レジスタＲ１によって指定されたメモリ番地に格納される。
【００６０】
ステップＳ２２，Ｓ２３，Ｓ２４の処理によって、ビットストリームバッファメモリ１００から、６番目のデータ０ｘ００１４が読み出され、汎用レジスタＲ１によって指定されたメモリ番地に格納される。
ステップＳ２５，Ｓ２６，Ｓ２７の処理によって、ビットストリームバッファメモリ１００から、７番目のデータ０ｘ００００が読み出され、汎用レジスタＲ１によって指定されたメモリ番地に格納される。
ステップＳ２８，Ｓ２９，Ｓ３０の処理によって、ビットストリームバッファメモリ１００から、８番目のデータ０ｘ０００ｃが読み出され、汎用レジスタＲ１によって指定されたメモリ番地に格納される。
【００６１】
上述したアンパック処理によって、図４に示すビットストリームバッファメモリ１００に格納されているビットストリームが所定のビット数で順次読み出され、指定されたメモリ領域に書き込まれる。なお、アンパック処理における読み出しビット数は、ビットストリームの先頭に送信されるヘッダ情報から取得することが可能である。
【００６２】
一方、ビット単位の読み出しと同時にＣＲＣ計算を行う場合に、ＣＲＣ計算を指示する専用の拡張命令を用いることによって、ビットストリームバッファメモリ１００から読み出したデータに対して、ＣＲＣ計算を行い、計算結果を指定したメモリ番地に格納することができる。この場合、読み出したデータが、図２に示すＣＲＣレジスタ２４０に入力され、生成多項式Ｇ（ｘ）に従ってＣＲＣ処理が行われ、処理結果がメモリの指定した領域に格納される。
【００６３】
上述したＣＲＣ拡張命令を実行することによって、ビットストリームからの所定のビット数を読み出すアンパック処理と、読み出したデータに対するＣＲＣ演算を同時に実行することができる。図２に示すように、ＣＲＣ演算は、ＤＳＰの内部に設けられている専用のハードウェア（ＣＲＣレジスタ２４０）によって実行されるので、ＤＳＰの負荷を増加させることなく、専用の拡張命令を実行するのみでアンパック処理とＣＲＣ演算を同時に実現することができる。
【００６４】
なお、以上説明した拡張命令の他に、シフトレジスタからデータの読み出しを行うが、読み出しに伴ってシフトレジスタからデータを捨てない拡張命令を追加することも可能である。例えば、このような拡張命令として、ＵＰＫＮＲが追加されたとする。ＵＰＫＮＲを実行する場合、データの読み出しは前述したアンパックの拡張命令ＵＰＫと同様に行う。ただし、ＵＰＫＮＲの場合、ビットカウンタへの加算や、シフト動作を行わないので、シフトレジスタに格納されているデータは変化しない。
このような拡張命令を追加することによって、ビットストリームバッファメモリからデコーダしようとするデータを盗み見ることができ、さらに見たデータを使用済みのデータとして廃棄せず、次の処理に利用することができる。
【００６５】
以上説明したように、本実施形態のプロセッサ及びそれを用いた復号装置によれば、ビットストリームから所定のビット数を読み出すアンパック処理が、プロセッサに追加された専用の回路及び拡張命令によって実現できる。また、アンパックの処理結果に対して、専用の処理回路によって、ＣＲＣ処理を実現できるので、アンパック処理とＣＲＣ処理を一つの拡張命令を実行するのみで同時に実現でき、プロセッサの実行する命令数を削減でき、さらにプロセッサの演算負荷を低減でき、高速な処理を実現できる。
【００６６】
【発明の効果】
以上説明したように、本発明のプロセッサ及びそれを用いた復号装置によれば、プロセッサが元から持っていたハードウェアに比較的に単純な回路を追加し、さらに追加されたハードウェアの処理機能を制御するための拡張命令を追加することによって、回路規模の増加を抑制しながら、ビットストリームから指定したビット数のデータを切り出すアンパック処理の拡張命令を実行するのみで実現できる。これにより、アンパック処理のためプロセッサが実行する命令数を少なくでき、プロセッサの処理負荷を軽減できるほか、動作周波数の低減や、消費電力の低減を実現できる利点がある。
【図面の簡単な説明】
【図１】本発明に係る復号装置の一実施形態を示すブロック図である。
【図２】プロセッサの内部構成を示すブロック図である。
【図３】ＣＲＣレジスタの構成を示す回路図である。
【図４】ビットストリームバッファメモリの格納データの一例を示す図である。
【図５】アンパック処理のプログラムの一例を示す図である。
【図６】通常のＤＳＰ処理命令によるアンパック処理のフローチャートである。
【符号の説明】
１００…ビットストリームバッファメモリ、
２００…プロセッサ、
２１０…制御回路、２２０…バッファレジスタ、
２３０…バレルレジスタ、２４０…ＣＲＣレジスタ。
【図１】
0004534320.tif 000002
【図２】
0004534320.tif 000003
【図３】
0004534320.tif 000004
【図４】
0004534320.tif 000005
【図５】
0004534320.tif 000006
【図６】
0004534320.tif 000007