(57)【特許請求の範囲】
【請求項１】
ビット幅を指定したアンパッキングの命令により、
主及び副のレジスタに順次保持したデータを入力し、ポインタ及び前記ビット幅に応じてビットシフトさせて出力するビットシフト回路と、
前記ポインタ及び前記ビット幅に基づいて、前記ビットシフト回路の出力データをマスクして出力するマスク回路と、
前記ビット幅に応じて、前記ポインタの値を更新するポインタの更新回路とを備え、
前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、前記主及び副のレジスタの内容を入れ換える回路を有する
ことを特徴とするプロセッサ。
【請求項２】
ビット幅を指定したアンパッキングの命令により、
主及び副のレジスタに順次保持したデータを入力し、ポインタ及び前記ビット幅に応じてビットシフトさせて出力するビットシフト回路と、
前記ポインタ及び前記ビット幅に基づいて、前記ビットシフト回路の出力データをマスクして出力するマスク回路と、
前記ビット幅に応じて、前記ポインタの値を更新するポインタの更新回路とを備え、
前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、フラグを切り換えるフラグ回路を有する
ことを特徴とするプロセッサ。
【請求項３】
前記ビットシフト回路の出力データにより、前記主又は副のレジスタの内容を更新するレジスタの更新回路を有する
ことを特徴とする請求項１又は請求項２に記載のプロセッサ。
【請求項４】
前記主及び副のレジスタに対応して、前記ポインタを保持するレジスタを有する
ことを特徴とする請求項１又は請求項２に記載のプロセッサ。
【請求項５】
前記ポインタ、前記ビット幅から、前記ビットシフトにおけるシフト量を計算する回路を有する
ことを特徴とする請求項１又は請求項２に記載のプロセッサ。
【請求項６】
前記命令により指定するビット幅の最大値が、前記主及び又は副のレジスタ幅である
ことを特徴とする請求項１又は請求項２に記載のプロセッサ。
【請求項７】
ビット幅を指定したクリッピングの命令により、
前記主及び副のレジスタに順次保持したデータを入力し、前記ポインタ及び前記ビット幅に応じてビットシフトさせて出力するクリッピングのビットシフト回路と、
前記ポインタ及び前記ビット幅に基づいて、前記クリッピングのビットシフト回路の出力データをマスクして出力するクリッピングのマスク回路とを有する
ことを特徴とする請求項１又は請求項２に記載のプロセッサ。
【請求項８】
前記アンパッキングの命令に係るビットシフト回路、マスク回路、ポインタの更新回路と、前記クリッピングの命令に係るクリッピングのビットシフト回路、クリッピングのマスク回路との少なくとも一部が共通化された
ことを特徴とする請求項７に記載のプロセッサ。
【請求項９】
ビット幅を指定したパッキングの命令により、
ポインタに応じて、入力データをビットシフトさせて出力するパッキングのビットシフト回路と、
前記ポインタ及び前記ビット幅に応じて前記パッキングのビットシフト回路の出力データ、主のレジスタの出力データをマスクするパッキングのマスク回路と、
前記マスクした出力データ及び入力データを結合させて前記主のレジスタに記録するパッキングの記録回路と、
前記ビット幅により前記ポインタを更新するパッキングの更新回路とを備え、
前記ビットシフト回路は、
前記結合させて出力する出力ビット幅に対して、下位詰めにより前記入力データを繰り返し入力することにより、前記出力ビット幅の２倍のビット幅により前記入力データを入力し、前記ポインタ及びビット幅に応じてビットシフトさせて前記出力ビット幅により出力するファネルシフタを有し、
前記プロセッサは、
前記ファネルシフタの出力データを副のレジスタに記録する回路と、
前記入力データの末尾側が、前記出力ビット幅より飛び出す場合、前記主及び副のレジスタの内容を入れ換える回路とを有する
ことを特徴とするプロセッサ。
【請求項１０】
前記ポインタ、前記ビット幅から、前記ビットシフトにおけるシフト量を計算する回路を有する
ことを特徴とする請求項９に記載のプロセッサ。
【請求項１１】
前記主及び副のレジスタの内容を入れ換える場合、フラグを切り換える回路を有する
ことを特徴とする請求項９に記載のプロセッサ。
【請求項１２】
前記ポインタを計算する計算回路を有する
ことを特徴とする請求項９に記載のプロセッサ。
【請求項１３】
前記主のレジスタに対応して、前記ポインタを保持するレジスタを有する
ことを特徴とする請求項９に記載のプロセッサ。
【請求項１４】
プロセッサによるパッキングの処理により可変長符号化処理したデータを結合してビットストリームを生成するエンコーダにおいて、
前記プロセッサは、
ビット幅を指定した前記パッキングの命令により、
前記ポインタに応じて、入力データをビットシフトさせて出力するパッキングのビットシフト回路と、
前記ポインタ及び前記ビット幅に応じて前記パッキングのビットシフト回路の出力データ、主のレジスタの出力データをマスクするパッキングのマスク回路と、
前記マスクした出力データ及び入力データを結合させて前記主のレジスタに記録するパッキングの記録回路と、
前記ビット幅により前記ポインタを更新するパッキングの更新回路とを備え、
前記ビットシフト回路は、
前記結合させて出力する出力ビット幅に対して、下位詰めにより前記入力データを繰り返し入力することにより、前記出力ビット幅の２倍のビット幅により前記入力データを入力し、前記ポインタ及びビット幅に応じてビットシフトさせて前記出力ビット幅により出力するファネルシフタを有し、
前記プロセッサは、
前記ファネルシフタの出力データを副のレジスタに記録する回路と、
前記入力データの末尾側が、前記出力ビット幅より飛び出す場合、前記主及び副のレジスタの内容を入れ換える回路とを有し、
前記入力データが前記可変長符号化したデータである
ことを特徴とするエンコーダ。
【請求項１５】
プロセッサによるアンパッキングの処理により可変長符号化処理したデータによるビットストリームより、順次、前記可変長符号化データを処理するデコーダにおいて、
前記プロセッサは、
ビット幅を指定した前記アンパッキングの命令により、
主及び副のレジスタに順次保持したデータを入力し、ポインタ及び前記ビット幅に応じてビットシフトさせて出力するビットシフト回路と、
前記ポインタ及び前記ビット幅に基づいて、前記ビットシフト回路の出力データをマスクして出力するマスク回路と、
前記ビット幅に応じて、前記ポインタの値を更新するポインタの更新回路とを備え、
前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、前記主及び副のレジスタの内容を入れ換える回路を有し、
前記主及び副のレジスタに保持したデータが、前記ビットストリームの連続するデータである
ことを特徴とするデコーダ。
【請求項１６】
プロセッサによるアンパッキングの処理により可変長符号化処理したデータによるビットストリームより、順次、前記可変長符号化データを処理するデコーダにおいて、
前記プロセッサは、
ビット幅を指定した前記アンパッキングの命令により、
主及び副のレジスタに順次保持したデータを入力し、ポインタ及び前記ビット幅に応じてビットシフトさせて出力するビットシフト回路と、
前記ポインタ及び前記ビット幅に基づいて、前記ビットシフト回路の出力データをマスクして出力するマスク回路と、
前記ビット幅に応じて、前記ポインタの値を更新するポインタの更新回路とを備え、
前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、フラグを切り換えるフラグ回路を有し、
前記主及び副のレジスタに保持したデータが、前記ビットストリームの連続するデータである
ことを特徴とするデコーダ。
【請求項１７】
プロセッサにより可変長符号化データを処理する電子機器において、
前記プロセッサは、
ビット幅を指定したパッキングの命令により、
前記ポインタに応じて、入力データをビットシフトさせて出力するパッキングのビットシフト回路と、
前記ポインタ及び前記ビット幅に応じて前記パッキングのビットシフト回路の出力データ、主のレジスタの出力データをマスクするパッキングのマスク回路と、
前記マスクした出力データ及び入力データを結合させて前記主のレジスタに記録するパッキングの記録回路と、
前記ビット幅により前記ポインタを更新するパッキングの更新回路とを備え、
前記ビットシフト回路は、
前記結合させて出力する出力ビット幅に対して、下位詰めにより前記入力データを繰り返し入力することにより、前記出力ビット幅の２倍のビット幅により前記入力データを入力し、前記ポインタ及びビット幅に応じてビットシフトさせて前記出力ビット幅により出力するファネルシフタを有し、
前記プロセッサは、
前記ファネルシフタの出力データを副のレジスタに記録する回路と、
前記入力データの末尾側が、前記出力ビット幅より飛び出す場合、前記主及び副のレジスタの内容を入れ換える回路とを有し、
前記入力データが前記可変長符号化したデータである
ことを特徴とする電子機器。
【請求項１８】
プロセッサにより可変長符号化データを処理する電子機器において、
前記プロセッサは、
ビット幅を指定した前記アンパッキングの命令により、
主及び副のレジスタに順次保持したデータを入力し、ポインタ及び前記ビット幅に応じてビットシフトさせて出力するビットシフト回路と、
前記ポインタ及び前記ビット幅に基づいて、前記ビットシフト回路の出力データをマスクして出力するマスク回路と、
前記ビット幅に応じて、前記ポインタの値を更新するポインタの更新回路とを備え、
前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、前記主及び副のレジスタの内容を入れ換える回路を有し、
前記主及び副のレジスタに保持したデータが、前記ビットストリームの連続するデータである
ことを特徴とする電子機器。
【請求項１９】
プロセッサにより可変長符号化データを処理する電子機器において、
前記プロセッサは、
ビット幅を指定した前記アンパッキングの命令により、
主及び副のレジスタに順次保持したデータを入力し、ポインタ及び前記ビット幅に応じてビットシフトさせて出力するビットシフト回路と、
前記ポインタ及び前記ビット幅に基づいて、前記ビットシフト回路の出力データをマスクして出力するマスク回路と、
前記ビット幅に応じて、前記ポインタの値を更新するポインタの更新回路とを備え、
前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、フラグを切り換えるフラグ回路を有し、
前記主及び副のレジスタに保持したデータが、前記ビットストリームの連続するデータである
ことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサ、エンコーダ、デコーダ及び電子機器に関し、例えばオーディオ信号のエンコーダ及びデコーダに適用することができる。本発明は、ビット幅を指定した命令によりアンパッキング、パッキングできるようにハードウエアを構成することにより、高い汎用性を維持しつつ、高速度で、かつ低消費電力により可変長符号化データを処理することができるようにする。
【０００２】
【従来の技術】
従来、各種プログラムを実行する演算処理回路であるプロセッサにおいては、パイプライン処理により、高速度で各種の処理を実行できるようになされている。すなわち図２２は、一般的なプロセッサのパイプライン処理を示すブロック図である。プロセッサ１は、この構成では５段のパイプラインを有し、命令を取り込むＩＦステージＩＦ、この命令をデコードし、コアレジスタ（Core Reg. ）からデータを取り出すＲＥＧステージ、数値演算ユニット（ＡＬＵ）によるＥＸＥステージ、バスＢＵＳを介してメモリ２との間でデータを入出力するＭＥＭステージ、コアレジスタにデータを書き戻すＷＢステージにより構成されるようになさ、これにより順次命令、データを転送して数値演算ユニットにより処理するようになされている。
【０００３】
これに対して画像信号、音声信号においては、可変長符号化処理によりデータ圧縮するようになされていることにより、データ圧縮対象である一定ビット長によるデータ列に対して、データ圧縮結果として符号長の異なる連続する符号化データが得られ、これによりデータ圧縮結果については、このような連続する可変長ビットデータを連結したビットストリームとして取り扱われるようになされている。
【０００４】
このためこの種のデータをエンコード、デコードするプロセッサにおいては、バレルシフト演算器を使用したアンパッキングの処理により、ビットストリームより符号長の異なる符号化データを順次処理してデコードするようになされている。またこれとは逆に、バレルシフト演算器を使用したパッキングの処理により、符号長の異なる符号化データを順次並べてビットストリームを形成するようになされている。
【０００５】
すなわち図２３は、このようなバレルシフト演算器を用いたアンパッキングの処理を示すフローチャートである。従来のプロセッサにおいては、プロセッサのレジスタビット幅分、ビットストリーミングを取り込んだ後、アンパッキングの処理による左シフト命令、論理右シフト命令により、バレルシフト演算器を用いてこのワードデータの上位を論理「０」に置き換え、これにより１符号分、可変長符号化データを切り出すようになされている。なお以下においては、プロセッサのレジスタビット幅をＮとし、ビットストリームを格納するレジスタをPAC TG、このレジスタPAC TG内のビットストリームの処理位置を示すポインタのレジスタをPAC PTとする。これによりレジスタPAC PTは、値０からＮ−１までの値をとる。また中間演算に用いるレジスタをREG X1、REG X2とする。
【０００６】
すなわちプロセッサにおいては、ビットストリーミングよりレジスタPAC TGに処理対象のデータを取り込み、ステップＳＰ１からステップＳＰ２に移る。ここでプロセッサは、切り出す符号化データの先頭ビットがＭＳＢとなるように、レジスタPAC TG内のデータを（N-PAC PT-1）ビット、左シフトし、レジスタREG X1に記録する。またこの処理に対応してレジスタPAC PTの値を更新する。
【０００７】
続いてプロセッサは、ステップＳＰ３に移り、切り出す符号化データの最後のビットがＬＳＢとなるように、切り出す符号化データのビット数（N-Num ）ビット長分、レジスタREG X1内のデータを論理右シフトし、これによりこの符号化データの先頭ビットより上位ビット側を論理「０」に置き換え、レジスタREG X1に保持する。またこの処理に対応してレジスタPAC PTの値を更新し、これによりレジスタPAC PTの値が、レジスタREG X1に保持したデータについて有意のビット数を示すようにする。
【０００８】
続いてプロセッサは、ステップＳＰ４に移り、レジスタREG X1に保持した有意のビット数により１つの符号化データが構成されるか否か、すなわちマスクするビット数Num がレジスタPAC PTの値よりも小さいか否か判断する。ここで肯定結果が得られると、プロセッサは、ステップＳＰ５に移り、マスクするビット数（Num ）により、レジスタPAC PTの内容を値（PAC PT-Num）に更新する。
【０００９】
これによりこの場合、プロセッサにおいては、レジスタPAC PTにより示されるレジスタREG X1に保持したデータが１つの符号化データの全部を構成するようになされ、ステップＳＰ６に移って１符号分のアンパッキング処理を終了する。
【００１０】
このようにして１符号分のアンパッキング処理を終了して、レジスタREG X1に続く符号化データを構成するデータが残っている場合、プロセッサは、このデータをレジスタPAC TGに転送して同様の処理を繰り返す。これによりこのような場合には、ステップＳＰ４で肯定結果が得られる場合が発生する。すなわちレジスタPAC TGに保持したデータに対して、１つの符号化データが続くビットストリーミングに跨がっている場合である。
【００１１】
この場合、プロセッサは、ステップＳＰ４からステップＳＰ８に移る。ここでプロセッサは、レジスタREG X1に保持したデータに対して不足する（N-Num-1 ）ビット分、レジスタREG X1に保持したデータを左シフトし、レジスタREG X １に記録する。また続くステップＳＰ９において、続くビットストリームをレジスタPAC TGに取り込んだ後、続くステップＳＰ１０において、レジスタREG X1に保持したデータに対して不足する（N-Num ）ビット分、レジスタPAC TGに保持したデータを論理右シフトして上位側を論理０に置き換え、レジスタREG X2に記録する。
【００１２】
続いてプロセッサは、ステップＳＰ１１において、レジスタREG X1に保持したデータとレジスタREG X2に保持したデータとの論理和(OR)を得ることにより、これら２つのレジスタREG X1、REG X2に保持したデータを結合させ、この結合させたデータをレジスタREG X1に記録する。
【００１３】
これによりプロセッサは、続くステップＳＰ１２において、切り出すビット数（Num ）により、レジスタPAC PTの内容を値（PAC PT-Num）に更新し、ステップＳＰ６に移って、１符号分の処理を完了する。
【００１４】
図２４は、このようなアンパッキングの処理による具体的な復号処理を示すフローチャートである。なおこの図２４の処理においては、ハフマン符号によるビットストリーミングの復号処理であり、図２３について上述した処理ステップと同一の処理ステップについては、同一の符号を付して示し、重複した説明は適宜省略する。なおこの図２４の処理においては、ハフマン符号の最大符号長をNum とする。
【００１５】
プロセッサは、復号対象のビットストリームよりレジスタPAC TGに処理対象のデータ（Ｎビット）を取り込み、またレジスタPAC PTに（N-1 ）をセットし、ステップＳＰ１からステップＳＰ２に移る。ここでプロセッサは、上述したと同様に、左シフトの処理を実行してレジスタREG X1に処理結果を記録し、また続くステップＳＰ３で、論理右シフトの処理を実行する。
【００１６】
続くステップＳＰ１４において、プロセッサは、ハフマン符号の最大符号長の値Num とレジスタPAC PTの値との比較により、レジスタREG X1に保持した有意なデータ長がこの最大符号長以下か否か判断し、ここで肯定結果が得られると、ステップＳＰ１５に移る。ここでプロセッサは、このレジスタREG X1に保持したデータにより復号用のルックアップテーブルを参照し、これにより１符号分、符号化データを復号する。また続くステップＳＰ１６において、同様に、レジスタREG X1に保持したデータにより符号長検出用のルックアップテーブルを参照し、これによりステップＳＰ１５で復号した１符号の符号長を検出する。
【００１７】
プロセッサは、続くステップＳＰ１７において、ステップＳＰ１５で検出した符号長とレジスタPAC PTの値とを比較することにより、レジスタREG X1に続く符号化データの一部又は全部が残っているか否か判断する。ここでレジスタREG X1に続く符号化データの一部又は全部が残っていると判断される場合、プロセッサは、ステップＳＰ５に移り、１符号分、レジスタPAC PTの値を更新し、ステップＳＰ６に移って１符号分の処理を終了する。これによりプロセッサは、続く符号を処理する場合には、ステップＳＰ２１から処理を繰り返すことになる。
【００１８】
これに対してステップＳＰ１７で否定結果が得られると、プロセッサは、ステップＳＰ１７からステップＳＰ１８に移り、レジスタPAC PTに続くストリームデータをロードし、続くステップＳＰ１９において、レジスタPAC PTに（N-PAC PT+ ハフマン長）を記録することにより、ステップＳＰ１８の処理に対応してレジスタPAC PTの内容を更新した後、ステップＳＰ６に移って１符号分の処理を終了する。
【００１９】
これに対してレジスタPAC TGに保持したデータに対して、１つの符号化データが続くビットストリーミングに跨がっている場合、ステップＳＰ１４で否定結果が得られることにより、プロセッサは、ステップＳＰ１４からステップＳＰ８に移り、レジスタREG X1に保持したデータを（N-Num-1 ）ビット分、左シフトし、レジスタREG X1に記録する。また続くステップＳＰ９において、続くビットストリームをレジスタPAC TGに取り込んだ後、続くステップＳＰ１０において、（N-Num ）ビット分、レジスタPAC TGに保持したデータを論理右シフトして上位側を論理０に置き換え、レジスタREG X2に記録する。さらに続く、ステップＳＰ１１において、レジスタREG X1及びレジスタREG X2のデータを結合させ、レジスタREG X1に記録した後、ステップＳＰ１５に移るようになされている。
【００２０】
【発明が解決しようとする課題】
ところでハードウエアによるこのような可変長符号化データをよるビットストリームを処理する場合、ルックアップテーブルが固定化されることにより、汎用性に欠ける欠点がある。しかしながらこのようなプロセッサによる可変長符号化データの処理においては、ルックアップテーブルの更新により種々の符号化方式にも対応することができる。
【００２１】
しかしながら従来のプロセッサによる可変長符号化データの処理においては、上述したように複数のシフト演算が必要となり、その分、１符号の処理に多くのサイクルが必要になる。因みに、パイプラインにより処理する場合には、分岐の処理によりパイプラインの処理が滞り、これによりパイプライン処理によっては処理の高速度化を十分に図れなくなる。このためプロセッサによる可変長符号化データの処理においては、高速度で、かつ低消費電力により処理することが困難で、結局、上述したアンパッキング、パッキングの処理においては、専用のハードウエア構成が設けられるようになされており、これによりこの種のプロセッサにおいては、汎用性に欠ける問題があった。
【００２２】
なお、図２３について上述した処理においては、レジスタに残る復号化されていないデータのビット数を計算する処理、ステップＳＰ４の分岐処理が負担となり、またこの分岐処理以降の処理においては、分岐によりステップ数が異なり、これも負担となる。またこのアンパッキングの処理に対応するパッキングの処理においても、同様に条件処理が必要になり、２段階の処理が必要になる。また図２４について上述した処理においては、さらにメモリのアクセスも大きなオーバーヘッドになる。
【００２３】
このような問題を解決する方法として、例えば特開２００１−２０２２４２号公報においては、可変長コードを直接コード長、コードに対応した値に変換する命令をプロセッサに設ける方法が提案されるようになされている。しかしながら、この方法の場合、コードの対応は命令で固定され、かつ最大ビット数が回路規模により制限される欠点があり、これにより画像データ等の符号長が短い場合には有効であるものの、大きいテーブルが必要な音声データの符号化には実用上適用し得ない。また、将来的な仕様の変更、複数のシステムへの対応が実際上、困難になる。
【００２４】
これに対して特表２００１−５１６９１７号公報においては、アンパック命令に応じてアドレスを発生させ、ルックアップテーブルを参照する方法が開示されるようになされている。しかしながらこの方法においては、命令回路にテーブルメモリ、アドレス発生器等、専用の複雑な回路が必要であり、また命令の実装、用途の限られる欠点がある。
【００２５】
なおこの特表２００１−５１６９１７号公報に開示の手法においては、ビットストリームより可変長符号化データを切り出す命令として、「抽出」「残余抽出」の二つの命令が開示されており、「抽出」によりデータを切り出してレジスタ内のデータを使い切った場合、「残余抽出」命令により処理するようになされていることにより、この２つの命令を使い分けなければならない煩雑さ等がある。
【００２６】
これに対して特開２００１−１５６６４５号公報においては、シフタのマルチプレクサを使用して可変長ビット列を処理する手法が提案されている。しかしながらこの方法の場合には、例えばバス幅が３２ビットの場合には、最大で１６ビット長のデータしかアンパッキング、パッキング処理できない欠点がある。
【００２７】
本発明は以上の点を考慮してなされたもので、高い汎用性を維持しつつ、高速度で、かつ低消費電力により可変長符号化データを処理することができるプロセッサ、このプロセッサによるエンコーダ、デコーダ、電子機器を提案しようとするものである。
【００２８】
【課題を解決するための手段】
かかる課題を解決するため請求項１の発明においては、プロセッサに適用して、ビット幅を指定したアンパッキングの命令により、主及び副のレジスタに順次保持したデータを入力し、ポインタ及びビット幅に応じてビットシフトさせて出力するビットシフト回路と、ポインタ及びビット幅に基づいて、ビットシフト回路の出力データをマスクして出力するマスク回路と、ビット幅に応じて、ポインタの値を更新するポインタの更新回路とを備え、前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、前記主及び副のレジスタの内容を入れ換える回路を有するようにする。また請求項２の発明においては、プロセッサに適用して、ビット幅を指定したアンパッキングの命令により、主及び副のレジスタに順次保持したデータを入力し、ポインタ及び前記ビット幅に応じてビットシフトさせて出力するビットシフト回路と、前記ポインタ及び前記ビット幅に基づいて、前記ビットシフト回路の出力データをマスクして出力するマスク回路と、前記ビット幅に応じて、前記ポインタの値を更新するポインタの更新回路とを備え、前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、フラグを切り換えるフラグ回路を有するようにする。
【００２９】
また請求項９の発明においては、プロセッサに適用して、ビット幅を指定したパッキングの命令により、ポインタに応じて、入力データをビットシフトさせて出力するパッキングのビットシフト回路と、ポインタ及びビット幅に応じてパッキングのビットシフト回路の出力データ、主のレジスタの出力データをマスクするパッキングのマスク回路と、マスクした出力データ及び入力データを結合させて主のレジスタに記録するパッキングの記録回路と、ビット幅によりポインタを更新するパッキングの更新回路とを備え、前記ビットシフト回路は、前記結合させて出力する出力ビット幅に対して、下位詰めにより前記入力データを繰り返し入力することにより、前記出力ビット幅の２倍のビット幅により前記入力データを入力し、前記ポインタ及びビット幅に応じてビットシフトさせて前記出力ビット幅により出力するファネルシフタを有し、前記プロセッサは、前記ファネルシフタの出力データを副のレジスタに記録する回路と、前記入力データの末尾側が、前記出力ビット幅より飛び出す場合、前記主及び副のレジスタの内容を入れ換える回路とを有するようにする。
【００３０】
また請求項１４の発明においては、プロセッサによるパッキングの処理により可変長符号化処理したデータを結合してビットストリームを生成するエンコーダに適用して、このプロセッサは、ビット幅を指定したパッキングの命令により、ポインタに応じて、入力データをビットシフトさせて出力するパッキングのビットシフト回路と、ポインタ及びビット幅に応じてパッキングのビットシフト回路の出力データ、主のレジスタの出力データをマスクするパッキングのマスク回路と、マスクした出力データ及び入力データを結合させて主のレジスタに記録するパッキングの記録回路と、ビット幅によりポインタを更新するパッキングの更新回路と備えるようにし、前記ビットシフト回路は、前記結合させて出力する出力ビット幅に対して、下位詰めにより前記入力データを繰り返し入力することにより、前記出力ビット幅の２倍のビット幅により前記入力データを入力し、前記ポインタ及びビット幅に応じてビットシフトさせて前記出力ビット幅により出力するファネルシフタを有し、前記プロセッサは、前記ファネルシフタの出力データを副のレジスタに記録する回路と、前記入力データの末尾側が、前記出力ビット幅より飛び出す場合、前記主及び副のレジスタの内容を入れ換える回路とを有し、入力データが可変長符号化したデータであるようにする。
【００３１】
また請求項１５の発明においては、プロセッサによるアンパッキングの処理により可変長符号化処理したデータによるビットストリームより、順次、可変長符号化データを処理するデコーダに適用して、このプロセッサは、ビット幅を指定したアンパッキングの命令により、主及び副のレジスタに順次保持したデータを入力し、ポインタ及びビット幅に応じてビットシフトさせて出力するビットシフト回路と、ポインタ及びビット幅に基づいて、ビットシフト回路の出力データをマスクして出力するマスク回路と、ビット幅に応じて、ポインタの値を更新するポインタの更新回路とを備えるようにし、前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、前記主及び副のレジスタの内容を入れ換える回路を有し、主及び副のレジスタに保持したデータが、ビットストリームの連続するデータであるようにする。また請求項１６の発明においては、プロセッサによるアンパッキングの処理により可変長符号化処理したデータによるビットストリームより、順次、前記可変長符号化データを処理するデコーダに適用して、前記プロセッサは、ビット幅を指定した前記アンパッキングの命令により、主及び副のレジスタに順次保持したデータを入力し、ポインタ及び前記ビット幅に応じてビットシフトさせて出力するビットシフト回路と、前記ポインタ及び前記ビット幅に基づいて、前記ビットシフト回路の出力データをマスクして出力するマスク回路と、前記ビット幅に応じて、前記ポインタの値を更新するポインタの更新回路とを備え、前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、フラグを切り換えるフラグ回路を有し、前記主及び副のレジスタに保持したデータが、前記ビットストリームの連続するデータであるようにする。
【００３２】
また請求項１７の発明においては、プロセッサにより可変長符号化データを処理する電子機器に適用して、プロセッサは、ビット幅を指定したパッキングの命令により、ポインタに応じて、入力データをビットシフトさせて出力するパッキングのビットシフト回路と、ポインタ及びビット幅に応じてパッキングのビットシフト回路の出力データ、主のレジスタの出力データをマスクするパッキングのマスク回路と、マスクした出力データ及び入力データを結合させて主のレジスタに記録するパッキングの記録回路と、ビット幅によりポインタを更新するパッキングの更新回路とを備えるようにし、前記ビットシフト回路は、前記結合させて出力する出力ビット幅に対して、下位詰めにより前記入力データを繰り返し入力することにより、前記出力ビット幅の２倍のビット幅により前記入力データを入力し、前記ポインタ及びビット幅に応じてビットシフトさせて前記出力ビット幅により出力するファネルシフタを有し、前記プロセッサは、前記ファネルシフタの出力データを副のレジスタに記録する回路と、前記入力データの末尾側が、前記出力ビット幅より飛び出す場合、前記主及び副のレジスタの内容を入れ換える回路とを有し、入力データが可変長符号化したデータであるようにする。
【００３３】
また請求項１８の発明においては、プロセッサにより可変長符号化データを処理する電子機器において、プロセッサは、ビット幅を指定したアンパッキングの命令により、主及び副のレジスタに順次保持したデータを入力し、ポインタ及びビット幅に応じてビットシフトさせて出力するビットシフト回路と、ポインタ及びビット幅に基づいて、ビットシフト回路の出力データをマスクして出力するマスク回路と、ビット幅に応じて、ポインタの値を更新するポインタの更新回路とを備えるようにし、前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、前記主及び副のレジスタの内容を入れ換える回路を有し、主及び副のレジスタに保持したデータが、ビットストリームの連続するデータであるようにする。また請求項１９の発明においては、プロセッサにより可変長符号化データを処理する電子機器に適用して、前記プロセッサは、ビット幅を指定した前記アンパッキングの命令により、主及び副のレジスタに順次保持したデータを入力し、ポインタ及び前記ビット幅に応じてビットシフトさせて出力するビットシフト回路と、前記ポインタ及び前記ビット幅に基づいて、前記ビットシフト回路の出力データをマスクして出力するマスク回路と、前記ビット幅に応じて、前記ポインタの値を更新するポインタの更新回路とを備え、前記マスク回路によるデータのマスクが、前記副のレジスタに保持したデータに及ぶ場合、フラグを切り換えるフラグ回路を有し、前記主及び副のレジスタに保持したデータが、前記ビットストリームの連続するデータであるようにする。
【００３４】
請求項１又は請求項２の構成によれば、プロセッサに適用して、ビット幅を指定したアンパッキングの命令により、主及び副のレジスタに順次保持したデータを入力し、ポインタ及びビット幅に応じてビットシフトさせて出力するビットシフト回路と、ポインタ及びビット幅に基づいて、ビットシフト回路の出力データをマスクして出力するマスク回路と、ビット幅に応じて、ポインタの値を更新するポインタの更新回路とを備えることにより、ビット幅を指定したアンパック命令によりハードウエア構成で、指定されたビット幅に対応した一連のアンパック処理を実行することができる。これによりルックアップテーブルの設定により種々の可変長符号化データについても対応可能である高い汎用性を維持しつつ、高速度で処理することができ、またその分、低消費電力により可変長符号化データを処理することができる。またこのとき請求項１の構成により、マスク回路におけるデータのマスクが、副のレジスタに保持したデータに及ぶ場合、主及び副のレジスタの内容を入れ換える回路を設けることにより、従来の分岐による処理ステップの増加を有効に回避することができる。また請求項２の構成により、マスク回路におけるデータのマスクが、副のレジスタに保持したデータに及ぶ場合、フラグを立てることにより、単にフラグの監視によりビットストリームを補充して一連の処理を実行することができ、これによっても処理を簡略化、高速度化することができる。
【００３５】
また請求項９の構成によれば、プロセッサに適用して、ビット幅を指定したパッキングの命令により、ポインタに応じて、入力データをビットシフトさせて出力するパッキングのビットシフト回路と、ポインタ及びビット幅に応じてパッキングのビットシフト回路の出力データ、主のレジスタの出力データをマスクするパッキングのマスク回路と、マスクした出力データ及び入力データを結合させて主のレジスタに記録するパッキングの記録回路と、ビット幅によりポインタを更新するパッキングの更新回路とを備えることにより、指定されたビット幅に対応した一連のパッキングの処理を実行することができる。これによりルックアップテーブルの設定により種々の可変長符号化データについても対応可能である高い汎用性を維持しつつ、高速度で処理することができ、またその分、低消費電力により可変長符号化データを処理することができる。また前記ビットシフト回路は、前記結合させて出力する出力ビット幅に対して、下位詰めにより前記入力データを繰り返し入力することにより、前記出力ビット幅の２倍のビット幅により前記入力データを入力し、前記ポインタ及びビット幅に応じてビットシフトさせて前記出力ビット幅により出力するファネルシフタを有し、前記プロセッサは、前記ファネルシフタの出力データを副のレジスタに記録する回路と、前記入力データの末尾側が、前記出力ビット幅より飛び出す場合、前記主及び副のレジスタの内容を入れ換える回路とを有することにより、従来の分岐による処理ステップの増加を有効に回避することができる。
【００３６】
これにより請求項１４、請求項１５、請求項１６、請求項１７、請求項１８、請求項１９の構成によれば、高い汎用性を維持しつつ、高速度で、かつ低消費電力により可変長符号化データを処理することができるプロセッサによるデコーダ、エンコーダ、電子機器を提供することができる。
【００３７】
【発明の実施の形態】
以下、適宜図面を参照しながら本発明の実施の形態を詳述する。
【００３８】
（１）第１の実施の形態
図１は、本発明の実施の形態に係る電子機器である再生装置を示すブロック図である。この再生装置１０は、メモリカード１１を装着可能な携帯型のオーディオ装置であり、メモリカード１１に記録したオーディオデータを再生して試聴できるようになされている。
【００３９】
すなわちこの再生装置１０は、操作子１２の操作によるユーザーの指示により、集積回路１３のプロセッサ１３Ａにおいて、内蔵のメモリ１４に記録した一連の処理手順を実行することにより、インターフェース（Ｉ／Ｆ）１５を介してメモリカード１１に記録したオーディオデータをプロセッサ１３Ａにロードする。さらにこのプロセッサ１３Ａは、オーディオデータをデータ伸長した後、集積回路１３に内蔵のディジタルアナログ変換回路（Ｄ／Ａ）１６によりアナログ信号に変換し、増幅回路１７により増幅してイヤホン１８より出力する。
【００４０】
この実施の形態において、オーディオデータは、ハフマン符号を用いた可変長符号化方式によりデータ圧縮方式であるＭＰ３（ＭＰＥＧ（Moving Picture Experts Group）オーディオ、レイヤー３）又はＡＴＲＡＣ（Adaptive Transform Acoustic Coding）によりデータ圧縮されてメモリカード１１に記録されるようになされている。これに対応してプロセッサ１３Ａにおいては、ユーザーの指示により実行対象である処理プログラムを切り換えてメモリ１４よりロードする。またこのロードした処理プログラムの実行により、順次、メモリカード１１をアクセスして得られるオーディオデータを、対応するルックアップテーブル（ＬＵＴ）１９Ａ又は１９Ｂを参照したパイプライン処理によりデコードし、これによりデータ伸長するようになされている。
【００４１】
これによりこの実施の形態では、異なる符号化方式によりデータ圧縮されたオーディオデータに共通にプロセッサ１３Ａを使用して、これら２種類のオーディオデータを処理するようになされている。
【００４２】
図２は、図２２との対比によりこのプロセッサ１３Ａを周辺構成と共に示すブロック図である。プロセッサ１３Ａは、ＥＸＥステージとＲＥＧステージとにそれぞれ専用レジスタ（Ｒｅｇ）２０、演算器２１を設け、これら専用レジスタ２０、演算器２１による処理回路２２が追加されるようになされている。またこの追加の構成に対応する命令が追加して定義され、これによりこの構成、命令を用いて、デコードの処理を高速度かつ低消費電力により実行できるようになされている。また必要に応じてプロセッサ１３Ａは、エンコーダにも適用してパッキングの処理を高速度かつ低消費電力により実行できるようになされている。かくするにつきこの追加の構成においては、プロセッサの基本的な構成を何ら変更しない小規模の回路であり、これにより種々のプロセッサにこれらの構成、命令を簡易に追加することができるようになされている。
【００４３】
図３は、この処理回路２２の構成を示すブロック図である。専用レジスタ２０は、処理対象のデータを一時保持するデータ用レジスタ（PAC DATA Reg）２３、処理中の位置を示すポインタ用レジスタ（PAC PT Reg）２６とにより構成され、このうちポインタ用レジスタ（PAC PT Reg）２６は、図４に示すように、コントロールロジック２７により制御される５ビットのレジスタ２５により構成されるようになされている。
【００４４】
これに対してデータ用レジスタ（PAC DATA Reg）２３は、図５に示すように、演算器２１から出力される２系統のデータPAC TG WB 、PAC TG NX を選択出力するセレクタ（主のレジスタである）３０、このセレクタ３０の出力データを一時保持する３２ビットによるＡレジスタ３１、このＡレジスタ３１に保持したデータを演算器２１の２系統の入力PAC TG、PAC NXに選択出力するセレクタ３２が設けられるようになされている。これによりデータ用レジスタ（PAC DATA Reg）２３は、Ａレジスタ３１により処理に供するデータPAC TG WB を保持して演算器２１に出力することができるようになされている。
【００４５】
またデータ用レジスタ（PAC DATA Reg）２３は、同様に、演算器２１から出力される２系統のデータPAC TG WB 、PAC TG NX を選択出力するセレクタ３３、このセレクタ３３の出力データを一時保持する３２ビットによるＢレジスタ３４、このＢレジスタ３４に保持したデータを演算器２１の２系統の入力PAC TG、PAC NXに選択出力するセレクタ３５が設けられるようになされている。これらセレクタ３３、３５は、Ａレジスタ３１側のセレクタ３０、３２に対して、相補的に入力を切り換えるようになされ、これによりデータ用レジスタ（PAC DATA Reg）２３は、Ａレジスタ３１側が受け持っていない側のデータを補助的にＢレジスタ３４側で保持するようになされ、またセレクタ３０、３２、３３、３５の制御により、これらＡレジスタ３１及びＢレジスタ３４の入力データ、出力データを入れ換えることができるようになされている。
【００４６】
なおデータ用レジスタ（PAC DATA Reg）２３は、さらにこれらセレクタ３０、３１等の制御データPAC TG WBEN の極性を反転して一時保持するインバータ３６、レジスタ３７が設けられるようになされている。
【００４７】
これに対して演算器２１は、図６に示すように構成される。ここで演算器２１は、パッキング処理、アンパッキング処理、クリッピング処理に共通に使用できるように構成され、図７は、この図６に示す構成より、アンパッキング処理に供する部位を選択的に記述したものである。また図８は、同様に、パッキング処理に供する部位を選択的に記述したものである。演算器２１は、選択的に入力されるビットストリーミング、データ用レジスタ２３の出力データを選択して、又は適宜結合して出力するデータ生成回路４１、このデータ生成回路４１の出力データをビットシフトさせて３２ビットにより出力するファネルシフタ４２、このファネルシフタ４２の出力データとレジスタ３４の出力データPAC NXとを選択的にデータ用レジスタ２３に出力するセレクタ４３が設けられるようになされている。これらにより演算器２１は、ビットストリーミング、符号化データを処理対象のデータとして入力して処理し、データ用レジスタ２３を介して処理結果を再入力できるようになされている。
【００４８】
ここでファネルシフタ４２は、バレルシフタ命令において、３２ビットの入力データを連結した６４ビットによる入力データを処理できるように構成され、これによりバレルシフタ命令にも共用できるようになされている。しかしながらアンパッキング時においては、６３ビットの入力でも十分であることにより、以下においては、適宜、最上位ビットを無視して６３ビット入力により説明する。なおバレルシフタ命令においては、３３ビット出力である。
【００４９】
また演算器２１は、このファネルシフタ４２の出力データについてマスクを作成するビットマスク発生器４４、このマスクによりファネルシフタ４２の出力データをマスクするアンド回路４５、このマスクの反転パターンを作成するインバータ４６、インバータ４６から出力されるマスクによりデータ用レジスタ２３のレジスタ３１から出力されるデータPAC TGをマスクするアンド回路４７、アンド回路４５、４７の出力データの論理和を出力するオア回路４８、これらアンド回路４５の出力データ、オア回路４８の出力データを選択的に出力するセレクタ４９を備えるようになされている。
【００５０】
これにより演算器２１は、クリッピング時、アンパッキング時、レジスタ３１、３４の出力データを結合してファネルシフタ４２に入力し、このファネルシフタ４２により３２ビットの連続するデータを選択的に出力してマスクすることにより、ビットストリームより１符号単位で符号化データを切り出すことができるようになされている。またこれに対してパッキング時においては、レジスタ３１の出力データと、演算器２１の入力データとをマスクして論理和演算することにより、可変長符号を結合させるようになされている。またこれらの処理において演算器２１は、マスクしたファネルシフタ４２の出力データをデータ用レジスタ２３を介して再入力できるようになされ、またこのようにマスクする箇所のデータを同様にデータ用レジスタ２３を介して再入力できるようになされている。
【００５１】
また演算器２１は、処理を開始するビット位置を示すポインタPAC PTに値１を加算して補正する加算器５１、このポインタPAC PTの最上位に論理１のビットを加えた後、コントロールロジック２７の指示による指定幅（ビット幅）So1 の値により補正する減算器５２、この補正結果によりファネルシフタ４２を制御するインバータ５３、コントロールロジック２７による指示値、加算器５１による補正値をビットマスク発生器４４に選択出力するセレクタ５５、減算器５２の出力shift val 〔5 〕よりフラグFlagを生成し、またセレクタ４３を制御するインバータ５６を備えるようになされている。これにより演算器２１は、パッキングの処理とアンパッキングの処理とでファネルシフタ４２に係る一連の構成、動作を制御できるようになされている。
【００５２】
これらの構成に対応して、プロセッサ１３Ａは、３つの命令が追加されて定義される。これら３つの命令のうち、クリップ（clip）は、クリッピングを指示する命令であり、データ用レジスタ（PAC DATA）２３から指定幅（So1 ）のデータを切り出し、演算器２１の出力Destから出力するコマンドである。データの切り出し位置は、ポインタ用レジスタ（PAC PT Reg）２６に記録されたポインタPAC PTで指定されるビットから実行される。
【００５３】
またこれらの命令のうち、アンパック命令（upac）は、データ用レジスタ（PAC DATA）２３に保持したデータから指定幅（So1 ）のデータを切り出し、演算器２１の出力Destから出力するコマンドであり、アンパッキングを指示する命令である。データの切り出し位置は、ポインタ用レジスタ（PAC PT Reg）２６に記録されたポインタPAC PTで指定され、実行後、切り出した分、ポインタPAC PTが更新される。また切り出すデータが、レジスタ３１、３４に保持したデータに跨がった場合、処理結果としてフラグFlagが値１にセットされ、セレクタ３２、３５の入力が切り換えられる。またこのフラグFlagの立ち上がりにより、続くビットストリームがレジスタ３４に装填され、これらにより処理対象を続く３２ビットのビットストリームに切り換える。なお演算器２１において、ポインタPAC PTは、５ビットであることにより、このようにレジスタ３１、３４の内容が入れ換えられた場合でも、ポインタPAC PTは、レジスタ３１、３４のうちの、先頭側データについて、処理位置を示す。
【００５４】
またこれらの命令のうちパック（pac ）命令は、可変長のビットストリームを３２ビットデータににまとめる命令であり、パッキングを指示する命令である。この場合、処理途中のデータがデータ用レジスタ２３に保持され、処理に対応してポインタPAC PTが更新される。３２ビット単位でデータが揃うと、演算器２１は、フラグFlagを１にセットし、パッキングしたデータDestが得られる。これによりデータが揃っていない場合、フラグFlagは０に保持され、この場合、ポインタPAC PTで指定されるビット以下のデータDestは何ら保証されない。なおフラグFlagが１にセットされると、レジスタ３１、３４の内容が入れ換えられる。
【００５５】
これらによりプロセッサ１３Ａでは、コントロールロジック２７により、クリップ命令においては、ポインタPAC PTをポインタ用レジスタ２６に書き戻ししないようになされ、またアンパック、パック命令においては、書き戻しするようになされている（図２）。またデータ用レジスタ２３については、パック命令において、必要に応じてデータPAC TG、PAC NX、制御データSel rev を書き戻しにより更新するようになされている。またアンパックにおいては、データPAC TG、PAC NXを書き換えるようになされている。
【００５６】
これらに加えてプロセッサ１３Ａは、変換中のビットストリームを保持する２つのレジスタ３１、３４、ポインタ用のレジスタ２５が、上述したように定義されるようになされている。なおこれらのレジスタ３１、３４、２５は、命令のソースレジスタとして指定することも可能ではあるが、この実施の形態のように、メモリー空間にマッピングし、Load/Store命令でデータを出し入れしても、あまり速度は低下しない。
【００５７】
これらにより演算器２１においては、アンパッキングの処理において、図７及び図９に示すように、レジスタ３１、３４、３７から処理対象であるビットストリームの３２ビットのデータPAC PT、続く３２ビットのデータPAC NX、ポインタPAC PTの入力を受け、またソースオペランドで指定したレジスタの出力により、プロセッサ１３Ａに内蔵のコアレジスタ（ＲＥＧシーケンス）から指定幅So1 の入力を受ける。なお演算器２１において、指定幅So1 は、切り出すデータのビット幅であり、この実施の形態において、取り得る値は、１〜３２であるが、必要に応じて回路を追加することにより、この範囲を越えるように設定するも可能である。
【００５８】
ここで以下において、３２ビット幅を持つ３１ビット〜０ビットのビット列ＡをＡ〔31:0〕とする。また〔〔Ｂ〔15:0〕，Ｃ〔15:0〕〕〕は、ビット列Ｂの０ビット目に、ビット列Ｃの１５ビット目が続くように、ビット列Ｂ及びＣを結合したものとする。またb1は、１ビット幅のバイナリーの記述を示し、1'b1は、このバイナリーが１であることを示す。
【００５９】
演算器２１においては、レジスタ３１、３４からのデータPAC PT及びデータPAC NXが結合されてデータPAC DATAによりファネルシフタ４２に入力される（図９（Ａ））。ここでポインタPAC PTは、今回アンパッキングを開始する先頭ビット位置を示すことになり、これにより今回アンパッキングするデータPAC DATAの先頭ビット位置は、[1'b1, PAC PT]により示される。演算器２１においては、減算器５２において、次式によるポインタPAC PTからビット幅So1 の減算処理が実行される。
【００６０】
【数１】
0003772976.tif 000002
【００６１】
これにより演算器２１は、アンパッキングにより切り出すビット幅で、ポインタPAC PTを補正する。なお以下において、図面上、このようにして補正したポインタPAC PTをPAC PT’により示し、これによりこの補正後のポインタPAC PT’においては、アンパッキング処理後におけるデータPAC DATAの先頭ビット位置を示すことになる。
【００６２】
ここでshift val[5:0]による演算結果の最上位ビットshift val[5]は、補正後のポインタPAC PT’が、ファネルシフタ４２の入力データPAC DATAにおいて、上位３２ビット側を示しているか、下位ワード側を示しているかを示すことになる。すなわちshift val[5]が値１の場合、入力データPAC DATAより引き続きアンパッキング可能であることを示すことになる。これに対してshift val[5]が値０の場合、図９との対比により図１０に示すように、続くアンパッキングの処理においては、下位側のワードを処理しなければならないことが示されることになる。この実施の形態においては、この場合、レジスタ３４のデータをレジスタ３１側に移し替え、レジスタ３４側に続くビットストリームをロードすることにより、処理対象を切り換える。これによりこのような一連の処理基準として、演算器２１は、shift val[5]の反転値をインバータ５６からフラグFlagとして出力するようになされている。
【００６３】
またこのようにして得られる、shift val[4:0]は、shift val[5] = 1の時、下位側ワードデータPAC TGにおける次回の処理のビット先頭位置を示すのに対し（図１０（Ａ））、shift val[5] = 1の時、上位側ワードデータPAC NXにおける次回の処理のビット先頭位置を示すことになる（図９（Ａ））。これによりフラグFlagが立ったとき、プロセッサ１３Ａでは、上述したレジスタ３４のデータをレジスタ３１側に移し替えることにより、その結果としてshift val[4:0]にあっては、常にデータ列PAC TGのビット先頭位置を示すようになされている。プロセッサ１３Ａでは、これをPAC PT WB としてレジスタ２５により書き戻すようになされている。
【００６４】
かくするにつきレジスタ３４のデータをレジスタ３１側に移し替える処理においては、データ用レジスタ２３において、レジスタ３１、３４のデータを入れ替て実行され、その後の一連の処理においては、レジスタ３４に続くビットストリームをロードされることになる。これによりこのプロセッサ１３Ａでは、適宜ビットストリームより処理対象のデータを切り出して処理するようになされている。
【００６５】
また演算器２１においては、shift val[4:0]によりこのような下位ビット側の選択等の処理をファネルシフタ４２により実行する。ここでこのshift val[4:0]をSval[4:0] により表し、Sval＝０の時、ファネルシフタ４２は、 Din[31:0]を出力し、Sval＝３１の時： Din[62:31] を出力する。これら以外のSval＝Ｎの時、Dout = Din[31+N:N]を出力する。
【００６６】
すなわちshift val[5]＝１のとき、上位側のPAC TGのみでアンパッキングに必要なデータが全て揃うことにより（図９（Ａ））、ファネルシフタ４２は、次回のアンパッキングにおけるビット開始位置分、右シフトさせて入力データを出力し（図９（Ｂ）及び（Ｃ））、これにより演算器２１においては、アンパッキングにより切り出した分、ビットマスク発生器４４によりマスクを生成してファネルシフタ４２の出力データをマスクする（図９（Ｄ））。
【００６７】
これに対してshift val[5]＝０のとき、上位側のPAC TGと下位側のPAC NXとが必要となり、shift val[4:0]は、この下位側PAC NXの次回のビット開始位置を示すことにより、この場合も、この値分、右シフトすることにより、必要なデータのＬＳＢが０ビットにシフトされる（図１０（Ｂ）及び（Ｃ））。また演算器２１においては、これに対応してマスクする（図１０（Ｃ））。
【００６８】
このマスクの処理においては、以下の規則により生成される。
【数２】
0003772976.tif 000003
【００６９】
これにより値So1 が４の場合、０〜４ビットが値１、残りが値０によるデータを出力し、演算器２１は、これによりアンド回路４５を介して、次式による出力データを得るようになされている。
【００７０】
【数３】
0003772976.tif 000004
【００７１】
これらによりこのプロセッサ１３Ａにおいては、このアンパック命令とクリップ命令との組み合わせにより最大符号長のデータを切り出し（Dest）、このデータによりルックアップテーブル１９Ａ又は１９Ｂを参照して得られる符号長により切り出した部分をマスクし、この一連の処理の繰り返しにより、デコードの処理を実行できるようになされている。
【００７２】
図１１は、このアンパック命令の使用例を示すフローチャートである。なおアンパック命令の前提として、ビットストリームからＮ（３２ビット）ビットのデータが、レジスタ３１及び３４に順次格納されているものとする。この処理手順においては（図１１）、ステップＳＰ３１からステップＳＰ３２に移り、ビットストリームから切り取るビット数をNum として、アンパック命令を発行すると、１サイクルで処理が完了し、その処理結果がレジスタに格納され、また続く処理がレジスタ３１及び３４に跨がる場合、フラグが立ち上がる。
【００７３】
これにより続くステップＳＰ３３で、その処理結果であるフラグを判定し、フラグが立っている場合には、レジスタ３１、３４の内容が入れ替えられることにより、ステップＳＰ３４に移って、続くデータをレジスタ３４にロードする。さらにステップＳＰ３５に移って必要に応じて出力Destを取得した後、ステップＳＰ３６で処理手順を終了する。これに対してフラグが立っていない場合には、ステップＳＰ３３からステップＳＰ３５に移る。ここでこのステップＳＰ３３におけるフラグの判定においては、実際にはフラグによりロード命令を実行することであることから、何ら、この分岐処理においては、分岐命令に依らずに実行することができ、これによりその分高速度で処理を実行することができる。
【００７４】
かくするにつき連続して処理を実行する場合には、ステップＳＰ３５からステップＳＰ３２に戻って処理を繰り返せばよいことになる。
【００７５】
図１２は、アンパック命令の実際の使用例であり、ビットストリームから３２ビット単位でデータを取り込んで、７ビット単位で切り出して出力する処理である。この場合、４行目から８行目までの処理が初期設定の処理であり、ぞれぞれレジスタ３１、３４にデータをロードする処理である。このようにして初期設定をすれば、その後は、処理位置を意識することなく、フラグFlagがたった時のみ、次のデータをロードすればよく（１２行目〜１５行目までの処理）、これにより高速な処理が可能となる。因みに、この処理において、１０行目で得られるデータは、下詰であり、かつ上位ビットは、０clear であることがことが保証されており、これによりデコード等の処理においては、この値を使用して直後にテーブルを参照して、演算に使用することができる。
【００７６】
図１３は、図２３との対比により、この処理手順におけるプロセッサ１３Ａの一連の処理のイメージを示すフローチャートである。なおここで図１３は、図２３との対比によりプロセッサ１３Ａの処理のイメージを示すものであり、上述した構成には直接対応しないものである。またここでは、中間演算にレジスタREG X1、REG X2を用いるものとして説明する。プロセッサ１３Ａにおいては、この処理において、ステップＳＰ４１からステップＳＰ４２に移り、レジスタのデータPAC TGを(N-PAC PT-1)ビット、左シフトして最初に切り出すビットをＭＳＢに設定し、処理結果を中間レジスタREG X1に格納し、また事前に、レジスタ３１、３４にビットストリーミングが格納されているものとする。
【００７７】
また続くステップＳＰ４３において、中間レジスタREG X1の内容を(N-Num) ビット、論理右シフトし、切り出される最後のビットをＬＳＢに設定する。
【００７８】
続くステップＳＰ４４における切り出すビット数Num との比較により、このビット数Num がレジスタの値よりも等しいか小さい場合、ステップＳＰ４５において、切り出されたビット数にあわせて、ポインタ用レジスタ２６に(PAC PT-Num)を記録してポインタPAC PTをアップデートし、続くステップＳＰ４６において、中間レジスタREG X1の内容を切り出した結果として出力した後、ステップＳＰ４７に移って対応する処理を終了する。
【００７９】
これに対して切り出すビット数Num がレジスタの値よりも大きい場合、ステップＳＰ４４からステップＳＰ４８に移り、切り出されたビット数にあわせて、中間レジスタREG X1の内容を(N-Num-1) ビット、左シフトし、続くステップＳＰ４９において、フラグを建ててレジスタ３１、３４の内容を入れ換え、続くステップＳＰ５０において、レジスタ３１の内容を(N-Num) ビット、論理右シフトして残余の切り出しビット数を切り出し、この処理結果を中間レジスタREG X2に格納する。
【００８０】
また続くステップＳＰ５１において、中間レジスタREG X1、REG X2との論理和を得、中間レジスタREG X1レジスタに格納する。また続くステップＳＰ５２において、切り出されたビット数にあわせて、ポインタ用レジスタに(N-PAC PT+Num)をいれ、切り出されたビット数に応じてポインタ用レジスタの内容PAC PTを書き換えてポインタをアップデートし、ステップＳＰ４６に移る。
【００８１】
このプロセッサ１３Ａにおいては、これらステップＳＰ４３、ステップＳＰ４５、ステップＳＰ４８〜５２の処理が、上述した処理回路２２によるハードウエアの構成により、すなわちファネルシフタ４２によるビットシフトと、一連のマスク処理に係る構成により実行されることになり、これにより従来に比して格段的に高速度で処理を実行することができるようになされている。
【００８２】
これに対してパック命令において、プロセッサ１３Ａは、図８及び図１４、図１５に示すように、コアレジスタ（ＲＥＧシーケンス）からパッキングするデータSo2 をファネルシフタ４２に入力し、それ以前に取り込んだビット列（PAC TG）を書き戻しによりレジスタ３１に保存する。さらにデータSo2 をファネルシフタ４２によりビットシフトさせてアンド回路４５でマスクすると共に、データ（PAC TG）をアンド回路４７でマスクした後、オア回路４８により論理和演算し、これによりこれらのデータSo2 、データ（PAC TG）を結合する。
【００８３】
これらの処理において、プロセッサ１３Ａは、データSo2 をファネルシフタ４２に繰り返し出力してファネルシフタ４２に保持する（図１４（Ａ）及び（Ｂ））。またデータをまとめる開始位置をポインタPAC PTにより示し、このポインタPAC PTにより結合したデータDestが３２ビットに満たない場合、書き戻しにより処理結果をレジスタ３１に保存する（図１４）。またデータSo2 、データ（PAC TG）を結合して３２ビットを越える場合、ファネルシフタ４２によるビットシフトにより３２ビットの範囲でデータSo2 、データ（PAC TG）を結合してデータ出力する。またファネルシフタ４２にデータSo2 を繰り返し出力してなることにより、このファネルシフタ４２の出力データをセレクタ３２より出力し、レジスタ３４に保存する。さらにこのレジスタ３４の内容を、レジスタ３１の内容を入れ換える（図１５）、これによりデータSo2 の残余部分をレジスタ３１に保持する。
【００８４】
すなわちこの場合、プロセッサ１３Ａにおいては、ポインタPAC PTによりレジスタ３１に保持したデータについて、データを結合させる先頭ビットの位置を示すように初期設定することにより、プロセッサ１３Ａに内蔵のコアレジスタ（ＲＥＧシーケンス）から結合させるデータSo2 のビット幅So1 の入力を受け、減算器５２により（１）式の演算処理を実行することにより、この結合後の、続いてデータを結合させる先頭ビットの位置をshift val[5:0]が示すようになされている（図１４（Ｃ）及び図１５（Ｄ））。
【００８５】
これによりshift val[5:0]＝０の場合、データSo2 、データ（PAC TG）を結合したデータDestにおいては、３２ビットの全部がパッキングによるデータで埋まり、データSo2 においては、使い切られ、又は残余が発生していることになる。またこれとは逆に、shift val[5] =１の場合、前回までにパッキングしたデータ（PAC TG）、今回パッキングするデータSo2 とでは、１ワードに達しないことになる。これによりプロセッサ１３Ａでは、アンパッキングの場合と同様に、shift val[5]をインバータ５６により反転してその出力をFlagとして出力する。またshift val[4:0]についても、アンパッキングの場合と同様に、PAC PT WB としてデータ用レジスタ２３に出力して、レジスタ３１、３４の内容を入れ換える。
【００８６】
これに対してこのような結合において、ファネルシフタ４２によるビットシフトにおいては、レジスタ３１に保持したデータ（PAC TG）に対して、データSo2 の先頭ビットをポインタPAC PTにより示される位置にビット合わせすることが必要となる。ここでshift val[5] =１の場合、結合しても３２ビットに満たないことにより、単にデータSo2 をポインタPAC PTにより示される位置にシフトさせ、PAC TGと論理演算して結果を得る場合に、PAC PT＝Ｎ、So1 = x であるとすると、shift val[4:0]＝Ｎ−ｘであり、ファネルシフタ４２の入力データをDin = [So2[30:0], So2[31:0]]とすると、この場合、Din[31] をＮ−ｘに合わせればよいことになる。すなわちファネルシフタ４２によるシフト量は、次式により表される。
【００８７】
【数４】
0003772976.tif 000005
【００８８】
これによりアンパッキング時とは異なり、shift val[4:0]をインバータ５３により反転してファネルシフタ４２のSvalに使用する（図１４（Ａ）及び（Ｂ））。これに対してshift val[5]＝０の場合、同様に、Din[31] をＮ−ｘに合わせればよく（図１５（Ａ）及び（Ｂ））、これによりシフト量もshift val[4:0]の反転値となる。
【００８９】
これによりプロセッサ１３Ａにおいては、ファネルシフタ４２から、先頭よりＮビット目に、パッキングするデータSo2 の最上位ビットが配置されたデータDoutが出力され（図１４（Ｂ））。またshift val[5]＝０の場合には、ファネルシフタ４２の出力データDoutにおいて、次回に持ち越すデータがファネルシフタ４２の上位ビットに配置されて、さらに先頭よりＮビット目にデータSo2 の最上位ビットが配置され（図１５（Ｂ））、これによりこのファネルシフタ４２の出力データDoutをマスクしてレジスタ３１の出力PAC TGと結合してパッキングのデータDestを得ることができ（図１５（Ｄ）及び（Ｅ））、またこの出力データDoutをレジスタ３１に書き戻して、続くパッキングに利用することができる（図１５（Ｃ））。
【００９０】
これに対してマスキングの処理においては、レジスタ３１の出力データPAC TGについては、ポインタPAC PTにより指示されビットから最下位ビットまでを０クリアするマスクが必要になる。これに対してファネルシフタ４２の出力データDoutについては、最上位ビットからポインタPAC PTにより指示されビットに続くビットPAC PT + 1までを０クリアするマスクが必要になる。
【００９１】
これによりPAC PT＋ 1の幅のマスクを生成すれば、レジスタ３１の出力データPAC TGについては対応することができ、またこの反転によりファネルシフタ４２の出力データDoutにも対応することができる。これによりプロセッサ１３Ａは、ビットマスク発生器４４により、Dest = ( Dout & MaskOut ) ｜ ( PAC TG & 〜 MaskOut )の演算処理を実行してマスクを作成し、インバータ４６により反転させる。
【００９２】
なおレジスタ３４の書き換えにおいては、セレクタ４３の切り換えにより、フラグFlagが立った時のみ、ファネルシフタ４２の出力データDoutにより書き換えるようにした。
【００９３】
これらによりプロセッサ１３Ａの出力データDestにおいては、Flag＝０(shift val[5] ＝１）のとき、 N-xビット以下については、保証されないのに対し、Flag＝１(shift val[5] ＝０）のとき、全てのビットが保証されることになる。これによりフラグFlagの立ち上がりにより出力データDestを選択的に取得して、処理結果を得ることができる。なお演算途中結果についても出力することにより、この実施の形態では、全体構成を簡略化できるようになされ、さらにはこのプロセッサ１３Ａの構成をデコーダにも適用できるようになされている。
【００９４】
図１６は、図１２との対比によるパック命令の実際の使用例であり、７ビット単位のデータを３２ビット単位でパッキングする処理である。この場合３行目に示すように、最初にレジスタ３１に先頭データをロードして初期設定した後においては、その後は、処理位置を意識することなく、順次、パッキング対象のデータをロードしてフラグFlagが立った場合のみ、出力データを取得してメモリに格納すればよく（５行目〜９行目までの処理）、従来の処理との対比では、複雑なビットシフト処理、マスク処理、アンド演算、オア演算が不要となり、実際上、従来の数倍の高速度でパッキングの処理を実行することができる。
【００９５】
これに対してクリップの処理においては、アンパック命令の場合と同様に、ポインタPAC PTを基準にして、データ用レジスタ（PAC DATA）２３から指定幅（So1 ）のデータを切り出す処理であり、ポインタPAC PTを更新しない点、レジスタ３１、３４の内容を入れ換えない点でアンパック命令と相違する。これによりこの処理の相違に係る処理がアンパック命令の場合と異なる点を除いて、プロセッサ１３Ａは、アンパック命令と同一に処理する。
【００９６】
図１７は、図１１との対比によりクリップ命令の使用例を示すフローチャートである。なおこのクリップ命令の前提として、ビットストリームからＮ（３２ビット）ビットのデータが、レジスタ３１及び３４に順次格納されているものとする。この処理手順においては、ステップＳＰ６１からステップＳＰ６２に移り、ビットストリームから切り取るビット数をNum として、クリップ命令を発行すると、１サイクルで処理が完了し、その処理結果がステップＳＰ６３においてレジスタに格納され、また処理がレジスタ３１及び３４に跨がる場合、フラグが立ち上がる。これによりステップＳＰ６４に移って、１つの処理を完了することができる。
【００９７】
図１８は、図２３との対比により、クリップ命令におけるプロセッサ１３Ａの一連の処理のイメージを示すフローチャートである。なおここで図１８は、図１３の場合と同様に、図２３との対比によりプロセッサ１３Ａの処理のイメージを示すものであり、上述した構成には直接対応しないものである。またここでは、中間演算にレジスタREG X1、REG X2を用いるものとして説明し、また事前に、レジスタ３１、３４にビットストリーミングが格納されているものとする。
【００９８】
プロセッサ１３Ａにおいては、この処理において、ステップＳＰ７１からステップＳＰ７２に移り、レジスタのデータPAC TGを(N-PAC PT-1)ビット、左シフトして最初に切り出すビットをＭＳＢに設定し、処理結果を中間レジスタREG X1に格納する。また続くステップＳＰ７３において、中間レジスタREG X1の内容を(N-Num) ビット、論理右シフトし、切り出される最後のビットをＬＳＢに設定する。
【００９９】
続くステップＳＰ７４における切り出すビット数Num との比較により、このビット数Num がレジスタの値よりも等しいか小さい場合、ステップＳＰ７５において、中間レジスタREG X1の内容を切り出した結果として出力した後、ステップＳＰ７６に移って対応する処理を終了する。
【０１００】
これに対して切り出すビット数Num がレジスタの値よりも大きい場合、ステップＳＰ７４からステップＳＰ７７に移り、切り出されたビット数にあわせて、中間レジスタREG X1の内容を(N-Num-1) ビット、左シフトし、続くステップＳＰ７８において、レジスタ３１の内容を(N-Num) ビット、論理右シフトして残余の切り出しビット数を切り出し、この処理結果を中間レジスタREG X2に格納する。また続くステップＳＰ７９において、中間レジスタREG X1、REG X2との論理和を得、中間レジスタREG X1レジスタに格納し、ステップＳＰ７５に移る。
【０１０１】
このプロセッサ１３Ａにおいては、これらステップＳＰ７２、ステップＳＰ７３、ステップＳＰ７７〜７９の処理が、上述した処理回路２２によるハードウエアの構成により、すなわちファネルシフタ４２によるビットシフトと、一連のマスク処理に係る構成により実行されることになり、これにより従来に比して格段的に高速度で処理を実行することができるようになされている。
【０１０２】
図１９は、このプロセッサ１３Ａによるオーディオデータのデコード処理を示すフローチャートである。プロセッサ１３Ａは、上述したクリップ命令、アンパック命令の繰り返しにより、オーディオデータをデータ伸長する。
【０１０３】
すなわちプロセッサ１３Ａは、処理を開始すると、レジスタ３１、３４にビットストリーミングを３２ビット単位で順次記録し、ステップＳＰ８１からステップＳＰ８２に移る。ここでプロセッサ１３Ａは、クリップ命令により、ＭＰ３又はＡＴＲＡＣにおける最大符号長によりこれらレジスタ３１、３４に格納したビットストリーミングを切り出す。
【０１０４】
さらにこの切り出したデータにより、ステップＳＰ８３において、ＭＰ３又はＡＴＲＡＣに係る復号用のルックアップテーブル１９Ａ又は１９Ｂを参照し、これにより１符号分、符号化データを復号する。また続くステップＳＰ８４において、同様に、切り出したデータにより符号長検出用のルックアップテーブル１９Ａ又は１９Ｂを参照し、これによりステップＳＰ８３で復号した１符号の符号長を検出する。
【０１０５】
プロセッサ１３Ａは、続くステップＳＰ８５において、このようにして検出した符号長によりアンパック命令の処理を実行し、これによりステップＳＰ８２で切り出した分、ビットストリーミングをマスクしてレジスタ３１、３４に保持する。さらに続くステップＳＰ８６において、フラグの立ち上がりを判断し、ここでフラグが立ち上がっていない場合には、ステップＳＰ８７に移り、続いて処理を継続するか否か判断し、継続する場合には、ステップＳＰ８２に戻るのに対し、処理を終了する場合には、ステップＳＰ８８に移る。
【０１０６】
これに対してフラグが立っている場合には、ステップＳＰ８６からステップＳＰ８９に移り、続くビットストリーミングをレジスタ３４にロードした後、ステップＳＰ８７に移る。
【０１０７】
これによりこの再生装置１０では、簡易な処理により、高速度かつ低消費電力により可変長符号化データを処理できるようになされている。
【０１０８】
これらによりこの再生装置１０において、レジスタ３１及び３４は、それぞれ主及び副のレジスタを構成し、ビット幅を指定したアンパッキングの命令において、データ生成回路４１、ファネルシフタ４２は、主及び副のレジスタに順次保持したデータを入力し、ポインタ及びビット幅に応じてビットシフトさせて出力するビットシフト回路を構成し、ビットマスク発生器４４、アンド回路４５は、ポインタ及びビット幅に基づいて、ビットシフト回路の出力データをマスクして出力するマスク回路を構成し、減算器５２、ポインタ用レジスタ２６は、ビット幅に応じて、ポインタの値を更新するポインタの更新回路を構成するようになされている。
【０１０９】
セレクタ３０、３２等が、ビットシフト回路の出力データにより、主又は副のレジスタの内容を更新するレジスタの更新回路を構成し、さらにはデータのマスクが、副のレジスタに保持したデータに及ぶ場合、主及び副のレジスタの内容を入れ換える回路を構成するようになされている。またデータのマスクが、副のレジスタに保持したデータに及ぶ場合、フラグを切り換えるフラグ回路をインバータ５６が構成するようになされ、さらに主及び副のレジスタに対応して、ポインタを保持するレジスタをレジスタ２５が構成し、ポインタ、ビット幅から、ビットシフトのシフト量を計算する回路を減算回路５２が構成するようになされている。
【０１１０】
またパッキングの命令においては、データ生成回路４１、ファネルシフタ４２が、ポインタに応じて、入力データをビットシフトさせて出力するパッキングのビットシフト回路を構成し、ビットマスク発生器４４、アンド回路４５、４７、インバータ４６が、ポインタ及びビット幅に応じてパッキングのビットシフト回路の出力データ、主のレジスタの出力データをマスクするパッキングのマスク回路を構成するようになされている。またオア回路４８、セレクタ３０が、マスクした出力データ及び入力データを結合させて主のレジスタに記録するパッキングの記録回路を構成し、減算器５２、ポインタ用レジスタ２６が、命令に係るビット幅によりポインタを更新するパッキングの更新回路を構成するようになされている。
【０１１１】
また減算回路５２等においては、アンパッキング時と同様に、ビットシフトにおけるシフト量を計算する回路等を構成するようになされている。
【０１１２】
またデータ生成回路４１及びファネルシフタ４２は、結合させて出力する出力ビット幅に対して、下位詰めにより入力データを繰り返し入力することにより、出力ビット幅の２倍のビット幅により入力データを入力し、ポインタに応じてビットシフトさせて出力ビット幅により出力するファネルシフタ４２を構成し、ビットマスク発生器４４、アンド回路４５、４７、インバータ４６が、ポインタに応じてファネルシフタの出力データのマスクを発生させてマスクする回路を構成するようになされている。またセレクタ３３、４３が、ファネルシフタの出力データを副のレジスタに記録する回路を構成し、セレクタ３０、３３等が、入力データの末尾側が、出力ビット幅より飛び出す場合、主及び副のレジスタの内容を入れ換える回路を構成するようになされている。また減算器５２が、ポインタ、ビット幅から、ファネルシフタ４２におけるシフト量を計算する回路、ポインタを計算する計算回路を構成し、インバータ５６が、フラグを立てる回路を構成するようになされている。
【０１１３】
以上の構成によれば、ビット幅を指定した命令により、対応するビット幅でアンパッキング、パッキング、クリッピングできるようにハードウエアを構成することにより、高い汎用性を維持しつつ、高速度で、かつ低消費電力により可変長符号化データを処理することができる。
【０１１４】
すなわち従来の命令によるアンパッキングの処理においては、図２３について上述したように、少なくとも左シフト・論理右シフト・比較・分岐・レジスタ内のビットストリームの位置を指すポインタの更新という５命令が必要であり、分岐が起これば９命令が必要であった。これに対してこの実施の形態によれば、条件実行をサポートするプロセッサでは常に２命令、それ以外は２命令又は３命令で処理を終了することができ、その分、高速化、低消費電力化だけでなく、プログラムを簡略化することもできる。また条件判断命令、分岐命令等により処理が途切れることがないことにより、パイプライン処理に極めて好適であり、これによっても高速度化することができる。またパッキングの処理においても、同様である。
【０１１５】
またポインタが適宜更新されることにより、ビットストリームの切り出し処理を簡易化することができる。すなわち従来の命令による処理においては、ビットストリームの処理位置を扱う必要があったのに対し、この実施の形態においては、このような処理を全く意識することなく処理することができ、これにより処理を簡略化することができる。これによりその分、プログラムを簡略化することもできる。
【０１１６】
特に、このような構成によりアンパック命令、クリップ命令を組み合わせて制御することにより、可変長符号化データによるビットストリームを常に一定のサイクルで復号することができる。すなわち従来の命令による復号においては、図２４について上述したように、分岐によりステップ数が変化することにより、復号に必要な命令数が変動することを避け得ない。しかしながらこの実施の形態によれば、可変長符号化されているビットストリームを常に一定のサイクルで復号することができ、これによってもプログラムの作成処理等を簡略化することができ、さらには高速度に処理することができる。
【０１１７】
かくするにつきこのようにビット幅を指定した命令により処理できることにより、ルックアップテーブル、制御プログラムを種々に変更して、高い汎用性を維持することができる。
【０１１８】
すなわちビット幅を指定したアンパッキングの命令により、主及び副のレジスタに順次保持したデータを入力し、ポインタ及びビット幅に応じてビットシフトさせて出力するビットシフト回路と、ポインタ及びビット幅に基づいて、ビットシフト回路の出力データをマスクして出力するマスク回路と、ビット幅に応じて、ポインタの値を更新するポインタの更新回路とを備えることにより、アンパッキングの処理に関して、ビット幅を指定した命令により対応するビット幅でアンパッキングできるようにハードウエアを構成することができ、これにより高い汎用性を維持しつつ、高速度で、かつ低消費電力により可変長符号化データを処理することができる。
【０１１９】
またビット幅を指定したパッキングの命令により、ポインタに応じて、入力データをビットシフトさせて出力するパッキングのビットシフト回路と、ポインタ及びビット幅に応じてパッキングのビットシフト回路の出力データ、主のレジスタの出力データをマスクするパッキングのマスク回路と、マスクした出力データ及び入力データを結合させて主のレジスタに記録するパッキングの記録回路と、ビット幅によりポインタを更新するパッキングの更新回路とを備えることにより、パッキングの命令に関して、ビット幅を指定した命令により対応するビット幅でパッキングできるようにハードウエアを構成することができ、これにより高い汎用性を維持しつつ、高速度で、かつ低消費電力により可変長符号化データを処理することができる。
【０１２０】
またこれらの構成においては、従来構成によるプロセッサに対して、小規模なハードウエアの構成追加によりこれらの機能を実現することができる。
【０１２１】
またこれらの構成において、ファンネルシフタを適用したことにより、マルチビットシフト、ローテーション命令等にも利用することができ、これにより高い拡張性を持たせることができる。
【０１２２】
またこれらアンパッキング、クリッピング、パッキングの機能を搭載するにつき、これらに係る構成を共用化することにより、小規模なハードウエアの構成追加によりこれらの機能を実現することができる。
【０１２３】
またデータのマスクが、副のレジスタに保持したデータに及ぶ場合、主及び副のレジスタの内容を入れ換える回路を設けることにより、従来の分岐による処理ステップの増加を有効に回避することができる。
【０１２４】
またデータのマスクが、副のレジスタに保持したデータに及ぶ場合、フラグを立てることにより、単にフラグの監視によりビットストリームを補充して一連の処理を実行することができ、これによっても処理を簡略化、高速度化することができる。
【０１２５】
これらによりこの実施の形態に係るプロセッサにおいては、非常に汎用的な仕様で、最大ビット長が短いものから長いもの（３２ビット）まで対応可能であることにより、画像、音声共に使用することができ、また簡単に多くのシステムに組み込むことができる。
【０１２６】
（２）第２の実施の形態
図２０は、本発明の第２の実施の形態に係るオーディオデータ処理装置を示すブロック図である。このオーディオデータ処理装置７０は、ルックアップテーブル１９Ａ、１９Ｂを参照しながら、ハードディスク装置７１に記録したプログラム７２をプロセッサ１３Ａにより実行することにより、ハードディスク装置７１に保持したオーディオデータ７３を順次ＭＰ３又はＡＴＲＡＣによりデコードし、そのデコード結果であるビットストリーミング７４をハードディスク装置７１に記録する。なお、この実施の形態において、第１の実施の形態と同一の構成は、対応する符号を付して示し、重複した説明は省略する。
【０１２７】
ここで図２１は、このプロセッサ１３Ａによるデコード処理を示すフローチャートである。プロセッサ１３Ａは、この処理手順において、レジスタ２５、３１、３３等を初期化した後、ステップＳＰ９１からステップＳＰ９２に移り、先頭１ワードのオーディオデータをロードし、続くステップＳＰ９３で、ルックアップテーブル１９Ａ又は１９Ｂを参照することにより、この１ワードのオーディオデータについて、対応するハフマン符号による可変長の符号化データを取得する。また続くステップＳＰ９４において、同様のルックアップテーブル１９Ａ又は１９Ｂを参照により、この符号化データのビット長を検出する。
【０１２８】
プロセッサ１３Ａは、続くステップＳＰ９５において、パック命令によりこの符号化データを演算器２１に入力し、ここでレジスタ３１に記録されたデータと結合させ演算器２１に保持する。また続くステップＳＰ９６において、フラグFlagが立っているか否か判断し、ここで否定結果が得られると、ステップＳＰ９７に移る。ここでプロセッサ１３Ａは、全てのオーディオデータについて処理を完了したか否か判断し、否定結果が得られると、ステップＳＰ９２に戻る。
【０１２９】
これに対してフラグFlagが立っている場合、演算器２１の出力データDestをハードディスク装置７１にストアした後、ステップＳＰ９７に移る。これによりプロセッサ１３Ａは、順次、オーディオデータ７３を可変長符号化処理してビットストリーミングを生成し、全てのオーディオデータについて処理を完了すると、ステップＳＰ９７からステップＳＰ９９に移って、この処理手順を終了する。
【０１３０】
この実施の形態においては、プロセッサ１３Ａをエンコーダに適用しても、第１の実施の形態と同様の効果を得ることができる。
【０１３１】
（３）他の実施の形態
なお上述の実施の形態においては、３２ビット幅のプロセッサに本発明を適用する場合について述べたが、本発明はこれに限らず、他のビット幅のプロセッサ、エンコーダ、デコーダ等に広く適用することができる。
【０１３２】
また上述の実施の形態においては、オーディオデータの処理に適用して、ＡＴＲＡＣ、ＭＰ３によりオーディオデータをエンコード、デコードする場合について述べたが、本発明はこれに限らず、他の方式によりオーディオデータを処理する場合、さらにはオーディオデータ以外のビデオデータを処理する場合等にも広く適用することができる。
【０１３３】
【発明の効果】
上述のように本発明によれば、ビット幅を指定した命令によりアンパッキング、パッキングできるようにハードウエアを構成することにより、高い汎用性を維持しつつ、高速度で、かつ低消費電力により可変長符号化データを処理することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係る再生装置を示すブロック図である。
【図２】図１の再生装置のプロセッサを示すブロック図である。
【図３】図２のプロセッサの処理回路を示すブロック図である。
【図４】図３の処理回路のポインタ用レジスタを示すブロック図である。
【図５】図３のデータ用レジスタを示すブロック図である。
【図６】図３の演算器を示すブロック図である。
【図７】図６の演算器のアンパッキングに係る構成を示すブロック図である。
【図８】図６の演算器のパッキングに係る構成を示すブロック図である。
【図９】図７のアンパッキングに係る構成の説明に供する図表である。
【図１０】図９との対比により処理がシフトレジスタ側に跨がった場合の構成の説明に供する図表である。
【図１１】図７のアンパッキングに係る構成の説明に供するフローチャートである。
【図１２】図１１の実例を示すプログラムである。
【図１３】従来の処理との対比により図１１の処理の説明に供するフローチャートである。
【図１４】図８のパッキングに係る構成の説明に供する図表である。
【図１５】図１４との対比により処理が続くワードに跨がった場合の構成の説明に供する図表である。
【図１６】パック命令の実例を示すプログラムである。
【図１７】クリック命令を示すフローチャートである。
【図１８】従来の処理との対比により図１７の処理の説明に供するフローチャートである。
【図１９】デコードの処理手順を示すフローチャートである。
【図２０】本発明の第２の実施の形態に係るオーディオデータ処理装置を示すブロック図である。
【図２１】図２０のオーディオデータ処理装置におけるプロセッサの処理手順を示すフローチャートである。
【図２２】従来のプロセッサを示すブロック図である。
【図２３】従来のアンパッキングの処理の説明に供するフローチャートである。
【図２４】図２３のアンパッキングの処理によるデコードを示すフローチャートである。
【符号の説明】
１、１３Ａ……プロセッサ、１０……再生装置、１９Ａ、１９Ｂ……ルックアップテーブル、２０……専用レジスタ、２１……演算器、２２……処理回路、２０、２３……データ用レジスタ、２５、３２、３４……レジスタ、２６……ポインタ用レジスタ、３０、３２、３３、３５、４３、４８、５５……セレクタ、４１……データ生成回路、４２……ファネルシフタ、４４……ビットマスク回路、４５、４７……アンド回路、４６、５３……インバータ、４８……オア回路、５２……減算器、５１……加算器、７０……オーディオデータ処理装置
【図１】
0003772976.tif 000006
【図２】
0003772976.tif 000007
【図３】
0003772976.tif 000008
【図４】
0003772976.tif 000009
【図５】
0003772976.tif 000010
【図６】
0003772976.tif 000011
【図７】
0003772976.tif 000012
【図８】
0003772976.tif 000013
【図９】
0003772976.tif 000014
【図１０】
0003772976.tif 000015
【図１１】
0003772976.tif 000016
【図１２】
0003772976.tif 000017
【図１３】
0003772976.tif 000018
【図１４】
0003772976.tif 000019
【図１５】
0003772976.tif 000020
【図１６】
0003772976.tif 000021
【図１７】
0003772976.tif 000022
【図１８】
0003772976.tif 000023
【図１９】
0003772976.tif 000024
【図２０】
0003772976.tif 000025
【図２１】
0003772976.tif 000026
【図２２】
0003772976.tif 000027
【図２３】
0003772976.tif 000028
【図２４】
0003772976.tif 000029