JP4484630B2 - 可変長復号化装置および可変長復号化方法および再生システム - Google Patents

可変長復号化装置および可変長復号化方法および再生システム Download PDF

Info

Publication number
JP4484630B2
JP4484630B2 JP2004244236A JP2004244236A JP4484630B2 JP 4484630 B2 JP4484630 B2 JP 4484630B2 JP 2004244236 A JP2004244236 A JP 2004244236A JP 2004244236 A JP2004244236 A JP 2004244236A JP 4484630 B2 JP4484630 B2 JP 4484630B2
Authority
JP
Japan
Prior art keywords
data
address
length decoding
variable length
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004244236A
Other languages
English (en)
Other versions
JP2005244928A (ja
JP2005244928A5 (ja
Inventor
正一 藤本
義宏 古賀
道弘 松本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2004244236A priority Critical patent/JP4484630B2/ja
Priority to US11/050,880 priority patent/US7119722B2/en
Priority to CNB2005100050478A priority patent/CN100442670C/zh
Publication of JP2005244928A publication Critical patent/JP2005244928A/ja
Publication of JP2005244928A5 publication Critical patent/JP2005244928A5/ja
Application granted granted Critical
Publication of JP4484630B2 publication Critical patent/JP4484630B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Memory System (AREA)

Description

本発明は、例えば広義のプロセッサの技術分野で用いられる可変長符号を処理するデータ処理において、特にメモリからの可変長符号のロード処理を高速化する可変長復号化装置及び可変長復号化方法に関する。
従来の可変長復号化装置は、可変長復号化のために専用の装置を設け高速化している。また、プロセッサの性能向上に伴いソフト処理する場合も増えているが、データ参照とその参照位置とを同時に更新する専用の命令等を設けることにより高速化したりしている(例えば、特許文献1参照。)。
特開平11−184750号公報(第10−11頁、第1−2図)
従来の専用の装置を設ける高速化手法では、例えば可変長符号を用いる画像符号化やオーディオ符号化のデータを複数取り扱いたい場合、それ専用装置を設ける必要があった。プロセッサでのソフト処理による高速化においても、消費データ量に応じた判定処理、それに伴ったメモリアクセスが複数回必要であり、充分な高速化ができていなかった。特許文献1においても、バッファレジスタ内のデータの参照済みデータ数がある閾値を超えるか否かの判定、バッファレジスタのシフト処理の判定処理があり、またバッファレジスタの値はメモリ上のロード元のデータ配置とは異なるため、別のメモリを使用するか、バッファレジスタを可変長復号の専用レジスタとして搭載して保持しておく必要があり、メモリへの退避復帰といった処理が必要であった。また、アドレス更新のための特別の監視、演算が必要であった。
本発明は、ソフト処理による高速化において、これら状況を鑑み、可変長復号を高速に行う可変長復号化装置およびこれを備えた再生システム、ならびに可変長復号化方法を提供することを目的としている。
本発明による第1の可変長復号化装置は、任意のアドレスにおける下位ビット側に記憶しているデータと同じデータを該任意のアドレスの次アドレスにおける上位ビット側にも配置してデータを記憶するメモリと、前記メモリからロードされるデータを格納するものでビット幅が少なくとも前記メモリのビット幅を有するバッファレジスタと、前記メモリへのアクセスアドレスの値(アドレス値)を上位ビット側に格納し、前記バッファレジスタで参照済みデータ数を下位ビット側に格納するアドレスレジスタとを備え、前記バッファレジスタに対して前記参照済みデータ数と今回参照するデータ数とを用いたデータシフト操作を行うことにより、当該バッファレジスタから可変長復号化のために今回参照すべきデータを抜き出し、前記バッファレジスタからのデータの抜き出しに伴って、前記アドレスレジスタの下位ビット側の参照済みデータ数を、該参照済みデータ数に今回参照したデータ数を加算して更新し、前記アドレスレジスタの上位ビット側に格納する前記アドレス値を、前記アドレスレジスタの下位ビット側の更新後の参照済みデータ数が桁上がりしないときはそのまま維持し、桁上がりするときはその桁上がりを用いて次のアドレス値に更新することを特徴とするものである。
なお、参照済みデータ数とは、データを構成するビットに対して、参照済みのビットの数のことを意味するものであり、今回参照したデータ数とは、データを構成するビットに対して、今回参照したビット数のことを意味するものであり、今回参照すべきデータとはデータを構成するビットに対して、今回参照すべきビットのことを意味するものである。上記の意味からデータシフトとは、データを構成するビットをシフトすることを意味するものである。以下、同じである。
本発明の第1の可変長復号化装置によれば、アドレスレジスタからアクセスアドレスと参照済みデータ数とを分離し、アクセスアドレスを用いてメモリへアクセスし、メモリからロードしたデータをバッファレジスタに格納し、バッファレジスタにおいて今回参照すべきデータを抜き出す。そして、アドレスレジスタに当該アクセス時に参照したデータ数を加算し、参照済みデータ数とアクセスアドレスとを更新する。これによれば、参照済みデータ数と今回参照するデータ数とにより、バッファレジスタより今回参照すべきデータを抜き出すことができる。また、参照すべきデータの抜き出しのためにアドレスレジスタに設定すべきアドレスも自動的に更新される。
したがって、本発明の第1の可変長復号化装置の場合、従来技術において必要であった、バッファレジスタの状態の退避復帰処理が不要となる。
本発明の第1の可変長復号化装置の場合、従来、参照済みデータ数の更新とアドレス更新との両者がともに必要であったのに対し、参照済みデータ数の更新時の桁上がりをアドレス更新に利用することで、参照済みデータ数とアドレスの更新演算とが1回で実現でき、更新処理を削減できる。この自動的なアドレス更新によって、桁上げにより次のアドレスに進み、メモリにおいてその更新後のアドレスにアクセスすると、そのアドレスの上位ビット側には1つ前のアドレスの下位ビット側のデータと同じデータがすでに格納されており、そのまま引き続き使用可能となっている。
本発明の第1の可変長復号化装置では、要するに、従来技術の場合に必要であった、バッファレジスタ内のデータの参照済みデータ数がある閾値を超えるか否かの判定、およびその判定に基づいて処理を変える判定処理、ならびに、その判定結果に基づいたメモリアクセスが不要となる。また、アドレス更新のための特別の監視、演算が不要となっている。ここにおいて、専用の装置や専用のソフトは不要であり、複雑な演算処理も不要である。すなわち、判定処理やアドレス演算、メモリアクセスの処理を削減し、可変長復号化処理を高速化することができる。
本発明の第1の可変長復号化装置の好ましい実施態様として、バッファレジスタにおいて今回参照すべきデータを抜き出す手段として、前記参照済みデータをマスクしつつシフトするシフタを備えることができる。この実施態様によれば、バッファレジスタから今回参照すべきデータの抜き出しに際して、参照済みデータをマスクするだけの簡単なシフト機能改善で実現でき、可変長復号化処理をさらに高速化することが可能になる。
本発明による第1の可変長復号化方法は、ビット数A(2以上の整数)を1ワードとしてデータを記憶するメモリと、前記メモリからロードしたデータを格納するビット幅B(A以上の整数)のバッファレジスタと、前記メモリへのアクセスアドレスを上位ビット側に格納しかつ前記バッファレジスタで参照済みデータ数M(0以上の整数)をビット幅C(1以上の整数)の下位ビット側に格納するアドレスレジスタとを備える可変長復号化装置を用いて可変長復号する方法であって、前記アドレスレジスタからアクセスアドレスの値(アドレス値)と参照済みのデータ数M(0以上の整数)とを分離する第1の工程と、前記メモリに、任意のアドレスにおけるビット数D(A−2Cで表される整数)の下位ビット側に記憶しているデータと同じデータを、該任意のアドレスの次アドレスにおけるビット数Dの上位ビット側にも配置し、かつ、前記メモリに対して、前記アクセスアドレスを用いてアクセスして、該メモリに記憶されているデータを前記バッファレジスタにロードする第2の工程と、前記バッファレジスタから、前記参照済みデータ数Mと今回参照するデータ数N(1以上の整数)とを用いたデータシフト操作を行うことにより可変長復号化のために今回参照すべきデータを抜き出す第3の工程と、前記今回参照すべきデータの抜き出しに伴って、前記アドレスレジスタの下位ビット側の参照済みデータ数を、該参照済みデータ数Mに今回参照したデータ数Nを加算して該下位ビット側に格納する参照済みデータ数Mを更新するとともに、前記アドレスレジスタの上位ビット側に格納する前記アドレス値を、下位ビット側の更新後の参照済みデータ数が桁上がりしないときはそのまま維持し、桁上がりするときはその桁上がりを用いて次のアドレス値に更新する第4の工程とを備えることを特徴とするものである。
本発明の可変長復号化方法においては、アドレスレジスタからアクセスアドレスと参照済みデータ数とを分離し、アクセスアドレスの値(アドレス値)を用いてメモリへアクセスし、メモリからロードしたデータをバッファレジスタに格納し、バッファレジスタにおいて今回参照すべきデータを抜き出す。そして、アドレスレジスタに当該アクセス時に参照したデータ数を加算し、参照済みデータ数とアドレス値とを更新する。これによれば、参照済みデータ数と今回参照するデータ数とにより、バッファレジスタより今回参照すべきデータを抜き出すことができる。次に、参照すべきデータの抜き出のためにアドレスレジスタに設定すべきアドレスも自動的に更新される。従来技術において必要であった、バッファレジスタの状態の退避復帰処理が不要となる。参照済みデータ数の更新とアドレス更新との両者が共に必要であったのに対して、参照済みデータ数の更新時の桁上がりをアドレス更新に利用することにより、参照済みデータ数とアドレスの更新の演算が1回で実現することができ、更新処理を削減することができる。この自動的なアドレス更新によって、桁上がりにより次のアドレスに進み、メモリにおいてその更新後のアドレスにアクセスすると、そのアドレスの上位ビット側には1つ前のアドレスの下位ビット側のデータと同じデータが既に格納されており、そのまま引き続き使用可能となっている。
本発明による第2の可変長復号化装置は、ビット数A(2以上の整数)を1ワードとしてデータを記憶するメモリと、前記メモリからロードされたデータを格納するビット幅B(A以上の整数)のバッファレジスタと、前記メモリへのアクセスアドレスの値(アドレス値)を上位ビット側に格納し、かつ、前記バッファレジスタで参照済みデータ数M(0以上の整数)をビット幅C(1以上の整数)の下位ビット側に格納するアドレスレジスタとを備え、前記メモリは、任意のアドレスにおいてビット数D(A−2Cで表される整数)の下位ビット側に記憶しているデータと同じデータを、該任意のアドレスの次アドレスにおいてビット数Dの上位ビット側にも配置しており、前記バッファレジスタから、前記参照済みデータ数Mと今回参照すべきデータ数N(1以上の整数)とを用いたデータシフト操作を行うことにより、可変長復号化のために今回参照すべきデータを抜き出す一方、この抜き出しに伴い、EをA−Dの演算により得られる1以上の整数、F,Gを整数、(M+N)/Eの演算により得られる商をF,余りをGとして、前記アドレスレジスタの上位ビット側に前記商Fを加算することにより当該上位ビット側に格納する前記アドレス値の更新を行い、また、前記アドレスレジスタの下位ビット側に前記余りGをセットすることにより当該下位ビット側に格納する参照済みデータ数Mの更新を行うことを特徴とするものである。
上記におけるビット幅とは、例えばアドレスレジスタの下位ビット側が例えば4ビット構成であれば、ビット幅が「4」となることを意味する。
本発明の第2の可変長復号化装置によれば、上述した第1の可変長復号化装置と同様の作用効果を有することに加えて、特に、バッファレジスタからの上記抜き出しに伴い、EをA−Dの演算により得られる1以上の整数、F,Gを整数、(M+N)/Eの演算により得られる商をF,余りをGとして、前記アドレスレジスタの上位ビット側に前記商Fを加算することにより当該上位ビット側の更新を行い、また、前記アドレスレジスタの下位ビット側に前記余りGをセットすることにより当該下位ビット側の更新を行うから、参照済みデータ数とアドレスの更新演算とを第1の可変長復号化装置と同様に1回で実現することができ、更新処理を削減することができる。
本発明によれば、可変長復号化処理に必要とされる処理を大幅に簡略化しており、可変長復号化処理を高速化することができる。
以下、添付した図面を参照して本発明の実施形態に係る可変長復号化装置及び可変長復号化方法を詳細に説明する。
(実施の形態1)
図1は、本発明の実施の形態1における可変長復号化装置を示す。図1を参照して、101はメモリである。このメモリ101は、データを記憶するもので、そのデータにおいて1ワードを構成するビット数A(Aは2以上の整数で、実施の形態1ではA=32)であり、かつ、任意のアドレスにおけるビット数D(Dは1以上の整数であり、実施の形態1ではD=16)の下位ビット側が記憶しているデータと同じデータを、その任意のアドレスの次のアドレスにおけるビット数Dの上位ビット側にも配置しているメモリである。
102はビット幅が32のアドレスレジスタである。アドレスレジスタ102は、アクセスアドレス(アドレス値)を上位ビット側(第1レジスタ部分)に、参照済みデータ数M(Mは0以上の整数)をビット幅C(Cは1以上の整数であり、実施の形態ではC=4)の下位ビット側(第2レジスタ部分)に持っている。
ここで、A,C,Dとの間には、D=A−2Cの関係がある。実施の形態1では、A=32、C=4であるから、D=16である。また、A,Cの間には、A=2×P、P=2Cとすると、P=24=16であり、A=2×P=2×16=32である。
103はビット幅B(BはA以上の整数であり、実施の形態1ではB=32)のバッファレジスタである。バッファレジスタ103は、メモリ101からロードしたデータを保持するもので、アクセスアドレスによりメモリ101からロードしたデータから今回参照すべきデータを抜き出す際に、参照済みデータ数Mと今回参照するデータ数N(Nは1以上のデータ数)とを用いたデータシフト操作により参照すべきデータを抜き出すものである。
上記したように、メモリ101上のデータについては、あるアドレスの下位16ビットに格納されているデータがその次のアドレスの上位16ビットにも格納されるように配置している。
具体的には、例えば、アドレス0x101番における下位16ビットにはデータcが格納されているが、次のアドレス0x102番の上位16ビットにも同じデータcが格納されている。また、アドレス0x102番における下位16ビットにはデータdが格納されているが、次のアドレス0x103番の上位16ビットにも同じデータdが格納されている。
図2は図1の可変長復号化装置を用いて可変長復号を行う処理フローを示したものである。図3はバッファレジスタ103から今回参照するデータを抜き出す一般的な処理フローを示したものである。図4は図3で示した処理フローに伴って変化するデータの状態を示したもので、図3の各ステップと対応して変化する様子を示している。なお、下記文章中のステップは、図2、図3の各処理ステップに対応する。また、説明の便宜上、32ビットを基本とするプロセッサを前提に記載しているが、本発明はこれらに限定されるものではない。また、初期状態として、メモリ101には図1のように、0x100番地からa,b,c,…といった順にデータが格納されているものとし、アドレスレジスタ102におけるアドレス値を0x101、参照済みデータ数を0x3とし、今回参照するデータ数をNとする。
以下、処理の一例を説明する。
ステップ1においては、アドレスレジスタ102から参照済みデータ数0x3とアドレス値0x101とを分離して、抜き出す。
ステップ2においては、ステップ1にて分離したアドレス値0x101を用いて、メモリ101の0x101番地をアクセスし、データb,cをロードし、バッファレジスタ103へ格納する。
ステップ3においては、データb,cが格納されたバッファレジスタ103から、ステップ1で分離した参照済みデータ数0x3と今回参照するデータ数Nとを用いて、今回参照するデータのみを抜き出してくる。具体的な抜き出し手段の一例をステップ3−1aからステップ3−3aで示す。
ステップ3−1aにおいては、バッファレジスタ103にあるデータb,cを参照済みデータ数0x3だけ左シフトさせる。今回参照するデータD1の先頭がバッファレジスタ103の最上位ビット側に移動する。このとき、一般のプロセッサではシフトした際の下位ビット側(右)のデータがない部分は"0"が拡張されるのが普通である(図4参照)。
ステップ3−2aにおいては、"32"から今回参照するデータ数Nを引いた値を算出する。
ステップ3−3aにおいては、ステップ3−1aでシフトしたデータを、さらにステップ3−2aで算出した値分だけ右にシフトする。今回参照するデータD1の末尾がバッファレジスタ103の最下位ビット側に移動する。このとき、シフトは論理シフトとする。論理シフトは上位ビット側(左)のデータがない部分は"0"が拡張されるのが普通である(図4参照)。
ステップ4においては、アドレスレジスタ102に今回参照したデータ数Nを加算して、アドレスレジスタ102の値を更新する。このとき、加算によって参照済みデータ数は(0x3+N)へ更新され、さらに参照済みデータ数を保持している下位ビット側から、アドレス値を保持している上位ビット側への桁上がりによって、アドレス値の更新も自動的に実現されることになる。
例えばN=0x8の場合、参照済みデータ数は0x3+0x8=0xbで4ビットで表現でき、桁上がりはなく、アドレス値は0x101のままである。N=0xeの場合は、参照済みデータ数は0x3+0xe=0x11で5ビットになり、桁上がりが発生し、アドレス値が0x101から0x102へ更新される。
なお、上記の例において、"0x"は16進数を表す。"0xb"は10進数では"11"であり、これは10進数の"16"すなわち4ビットよりも小さいので、4ビット表現することができる。また、"0xe"は10進数では"14"である。0x3+0xeの結果は10進数では3+14=17で、17−16=1より、16進数で桁上がりがあり、"0x11"となる。
理解を助けるため、より具体的な例をあげて説明する。
図5(a)は、メモリ101の0x101番からロードによってバッファレジスタ103に格納されたデータを示す。図1のデータbに対応するのが16ビットのデータb16,b15,b14,b13,b12,…b6,b5,…b1である。また、図1のデータcに対応するのが16ビットのデータc16,c15,…c1である。合計32ビットある。
前回の処理でデータb16,b15,b14の3ビットが参照済みであるとする。したがって、参照済みデータ数M=3である。今回参照するデータ数N=8とする。それは、b13,b12,…b6のデータD2に相当する。これを太い枠で強調する。
図5(b)は、32ビットのデータ列b16,b15,…b1,c16,c15,…c1を参照済みデータ数M=3ビット分だけ左シフトし、最上位からデータ列b13,b12,…b1,c16,c15,…c1を格納し、下位3ビットを"0"にセットした状態である。太枠の先頭が32ビット目に一致している。
図5(c)は、32ビットのデータ列b13,b12,…b1,c16,c15,…c1,0,0,0を24ビット分だけ右シフトし、最上位から24ビット分に"0"をセットした状態を示す。右シフト量の24ビットは、"32"から今回参照するデータ数N=8を引いたものである。太枠の末尾が1ビット目に一致している。すなわち、バッファレジスタ103の最下位から8ビット分にデータD2のb13,b12,…,b6が格納された状態となり、これで今回参照するデータD2が抜き出されたことになる。
参照済みデータ数Mに今回参照するデータ数Nを加算すると、M+N=3+8=11であり、アドレスレジスタ102において参照済みデータ数Mを"3"から"11"に更新する。"11"は24(4ビット)未満であるからアドレス値の桁上げは行わず、元のアドレス値0x101番を維持する。
図5の処理に引き続く処理を図6で説明する。
図6(a)は、メモリ101の0x101番のデータがバッファレジスタ103にロードされた状態を示す(図5(A)と同じ)。
前回までの処理でデータb16,b15,b14,b13,b12,…,b6の11ビットが参照済みであり、参照済みデータ数M=11となっている。今回参照するデータ数N=5とする。それは、b5,b4,…,b1のデータD3に相当する。これを太い枠で強調する。
図6(b)は、32ビットのデータ列b16,b15,…,b1,c16,c15,…,c1を参照済みデータ数M=11ビット分だけ左シフトし、最上位からデータ列b5,b4,…,b1,c16,c15,…,c1を格納し、下位11ビットを"0"にセットした状態である。太枠の先頭が32ビット目に一致している。
図6(c)は、32ビットのデータ列b5,b4,…,b1,c16,c15,…,c1,0,0,…0を27ビット分だけ右シフトし、最上位から27ビット分に"0"をセットした状態を示す。右シフト量の27ビットは、"32"から今回参照するデータ数N=5を引いたものである。太枠の末尾が1ビット目に一致している。すなわち、バッファレジスタ103の最下位から5ビット分にデータD3のb5,b4,…,b1が格納された状態となり、これで今回参照するデータD3が抜き出されたことになる。
参照済みデータ数Mに今回参照するデータ数Nを加算すると、M+N=11+5=16であり、アドレスレジスタ102において参照済みデータ数Mを"11"から"16"に更新する。"16"は24(4ビット)以上に該当するからアドレス値の桁上げを行い、次のアドレス値0x102番に更新する。データBの全16ビット分のデータの参照が完了しているので、次のアドレスに進むのである。
なお、図6の処理で仮に今回参照するデータ数Nが4以下であれば、図5と同じ論理の処理を繰り返すことになる。
図5の処理に引き続く別の処理を図7で説明する。これは、今回参照するデータ数Nが6以上の場合である。
図7(a)は、メモリ101の0x101番のデータがバッファレジスタ103にロードされた状態を示す(図5(a)と同じ)。
前回までの処理でデータb16,b15,b14,b13,b12,…,b6の11ビットが参照済みであり、参照済みデータ数M=11となっている。今回参照するデータ数N=7とする。それは、b5,b4,…,b1,c16,c15のデータD4に相当する。図6(b)の場合より2ビット分増えている。データbだけでなくデータcの一部も含んでいる。これを太い枠で強調する。
図7(b)は、32ビットのデータ列b16,b15,…,b1,c16,c15,…,c1を参照済みデータ数M=11ビット分だけ左シフトし、最上位からデータ列b5,b4,…,b1,c16,c15,…,c1を格納し、下位11ビットを"0"にセットした状態である。これは、図6(b)と同じである。太枠の先頭が32ビット目に一致している。
図7(c)は、32ビットのデータ列b5,b4,…,b1,c16,c15,…,c1,0,0,…0を25ビット分だけ右シフトし、最上位から25ビット分に"0"をセットした状態を示す。右シフト量の25ビットは、"32"から今回参照するデータ数N=7を引いたものである。図6(c)の場合より2ビット分少ない。太枠の末尾が1ビット目に一致している。すなわち、バッファレジスタ103の最下位から7ビット分にデータD4のb5,b4,…,b1,c16,c15が格納された状態となり、これで今回参照するデータD4が抜き出されたことになる。
参照済みデータ数Mに今回参照するデータ数Nを加算すると、M+N=11+7=18であり、アドレスレジスタ102において参照済みデータ数Mを"11"から"18"に更新する。"18"は24(4ビット)以上に該当するからアドレス値の桁上げを行い、次のアドレス値0x102番に更新する。データBの全16ビット分のデータの参照が完了し、データCの参照に入っているので、次のアドレスに進むのである。参照済みデータ数Mの"18"は16進数では"0x12"であり、2進数で"0B10002"であるが、桁上げの5ビット目を除く下位から4ビット分は"0B0002"で、16進数で"0x2"となる。これは、データCの上位2つのビットC16,C15が参照済みであることに対応している。
図8に示すように、アドレス0x101番から次のアドレス0x102番に進むと、そこの上位16ビット分には、1つ前のアドレス0x101番の下位側16ビット分のデータc(c16,c15,…,c1)と同じものがすでに格納されており、そのまま引き続き使用可能となっている。アドレス更新のための特別の監視、演算が不要となっている。
なお、図1のアドレスレジスタ102やバッファレジスタ103は特殊な動作をするレジスタではなく、プロセッサの通常使用する汎用的なレジスタを用いて実現できるものであり、特に専用のレジスタを実装する必要はない。ただし、従来技術でのアクセスアドレスや参照済みデータ数等と同様、アドレスレジスタ102の値はメモリ101の空き領域等への退避復帰が必要である。
実施の形態1に示した例では、下位16ビットのデータを、その次のアドレスの上位16ビットにも配置しているので、少なくとも16ビット+1ビットの17ビットのデータを一度に抜き出すことが出来る。また、データを詰めた場合に比べて2倍のメモリ容量を必要とする。
(実施の形態2)
以下、本発明の実施の形態2にかかわる可変長復号化装置及び可変長復号化方法について、図面を参照しながら説明する。
図9は、実施の形態2におけるバッファレジスタ103から今回参照するデータを抜き出す処理フローを示したものである。図10は図9で示した処理フローに伴って変化するデータの状態を示したもので、図9の各ステップと対応して変化する様子を示している。図11は、実施の形態2で使用するシフタとバッファレジスタとの周辺を示す回路構成の一例である。
701はバッファレジスタ103が保持しているビットの一部をマスクするためのマスク用論理回路、702はマスク用論理回路701の出力を受けてシフタへの入力データをマスクするマスク回路、703はシフトを行うシフタである。
図1および図2は本実施の形態2にも適用される。
以下、図1、図2、図9、図10、図11を用いて説明する。また、説明の便宜上、32ビットを基本とするプロセッサを前提に記載しているが、本発明はこれらに限定されるものではない。また、初期状態として、メモリ101には図のように、0x100番地からa,b,c…といった順にデータが格納されているものとし、アドレスレジスタもアドレス値が0x101、参照済みデータ数が0x3、今回参照するデータ数はNとする。
基本の動作は図2のとおりであり、実施の形態1の場合と同様である。図2のステップ3が図9のように展開されるのが本実施の形態の特色である。
以下、処理の一例を説明する。
ステップ1においては、アドレスレジスタ102から参照済みデータ数0x3とアドレス値0x101を分離し、抜き出す。
ステップ2においては、ステップ1にて分離したアドレス値0x101用いて、メモリ101の0x101番地をアクセスし、データb,cをロードし、バッファレジスタ103へ格納する。
ステップ3においては、データb,cが格納されたバッファレジスタ103から、ステップ1で分離した参照済みデータ数0x3と今回参照するデータ数Nとを用いて、今回参照するデータのみを抜き出してくる。具体的な抜き出しのフローをステップ3−1bからステップ3−2bで示す。
ステップ3−1bにおいては、"32"から参照済みデータ数0x3と今回参照するデータ数Nとの合計を引いた値を算出する。なお、念のためにいうと、実施の形態1の場合には、"32"から引き算するのは今回参照するデータ数Nのみである。そして、実施の形態1の場合のステップ3−1aの「バッファレジスタ103にあるデータb,cを参照済みデータ数0x3だけ左シフトさせる」に相当する処理は行われない。その処理をマスク回路が代行するからである。
ステップ3−2bにおいては、図11で示すマスク用論理回路701、マスク回路702およびシフタ703とを用いて、参照済みデータ数0x3でマスクしつつ、ステップ3−1bで算出した値"32−(0x3+N)"分だけ右にシフトする。今回参照するデータD1の末尾が、直接、バッファレジスタ103の最下位ビット側に移動する。このとき、シフトは論理シフトとする(図10参照)。
ステップ4においては、アドレスレジスタ102に今回参照したデータ数Nを加算して、アドレスレジスタ102の値を更新する。このとき、実施の形態1の場合と同様に、加算によって参照済みデータ数は(0x3+N)へ更新され、さらに参照済みデータ数を保持している下位ビット側から、アドレス値を保持している上位ビット側への桁上がりによって、アドレス値の更新も自動的に実現されることになる。
ステップ3の具体的実施手段であるステップ3−1B,3−2B以外は実施の形態1と同様である。
上記において、4ビットで示される参照済みデータ数が0x3のとき、マスク用論理回路701はマスク回路702における上位3つのアンドゲートA32,A31,A30に対してマスク信号を出力する。これでこれら3つのアンドゲートA32,A31,A30のみを非導通とし、他のANDゲートA29〜A1は導通とし、バッファレジスタ103の32ビットのデータを、そのうち上位3ビットをマスクした状態で(強制的に"0"にした状態で)、シフタ703に転送する。シフタ703は、図12に示すように、上位3ビットがマスクされた32ビットデータを21ビットだけ右シフトする。ここで、21ビットは、参照済みデータ数M=3と今回参照するデータ数N=8とを加算して、その結果の"11"を"32"から引き算して得られたものである。
図11の構成例のマスク用論理回路701で想定した変換論理表を示す。
Figure 0004484630
なお、図11で示したマスク用論理回路701とマスク回路702は、回路実装方法を特に規定するものではなく、回路実装上の手段は問わない。マスク用論理回路701とマスク回路702とは、これらを分割しても、まとめて論理を組んでもよい。
(実施の形態3)
図13ないし図16に実施の形態3の可変長復号化装置を示す。
説明の便宜上、実施の形態3におけるプロセッサは24ビットを基本とするプロセッサを前提に記載しているが、本発明はこれらに限定されるものではない。
図13において、メモリ101は24ビットを1ワードとするデータを記憶しており、各アドレスが、上位8ビット、中位8ビット、下位8ビットとなり、あるアドレスの中位ビットと同じデータを次のアドレスの上位ビット側にも配置し、あるアドレスの下位ビット側と同じデータを次のアドレスの中位ビットにも配置している。ここで、上位8ビットに対して、中位8ビットと下位8ビットの16ビットをまとめて下位ビット側と称することができる。
アドレスレジスタ102は、ビット幅24のレジスタであり、アドレス値を保持する上位ビット側(第1レジスタ部分)と、参照済みデータ数Mを保持するビット幅C(実施の形態3ではC=3)の下位ビット側(第2レジスタ部分)とからなる。
バッファレジスタ103は、メモリ101からロードしたデータを保持するビット幅B(実施の形態3ではB=24)のバッファレジスタである。
ここで、メモリ101のビット幅Aは24であり,アドレスレジスタ102の第2レジスタ部分のビット幅Cは3であり,メモリ101の下位ビット側のビット数Dは8であり、これらA,C,Dの間には、D=A−2Cの関係がある。実施の形態2では、A=24、C=3であるから、D=16である。また、A,Cの間には、P=2CとするとA=3×Pの関係がある。すなわち、P=23=8であり、A=3×P=3×8=24である。
図2ならびに図14および図15を参照して、バッファレジスタ103から今回参照するデータを抜き出す一般的な処理を説明する。図14はその処理フローを示し、図15は図14で示した処理フローに伴って変化するデータの状態を示す。下記文章中のステップは、図2、図14の各処理ステップに対応する。初期状態として、メモリ101には図のように、0x100番地からa,b,c…といった順にデータが格納されているものとし、アドレスレジスタ102におけるアドレス値を0x101、参照済みデータ数を0x3とし、今回参照するデータ数をNとする。
以下、処理の一例を説明する。
ステップ1においては、アドレスレジスタ102から参照済みデータ数0x3とアドレス値0x101を分離し、抜き出す。
ステップ2においては、ステップ1にて分離したアドレス値0x101を用いて、メモリ101の0x101番地をアクセスし、データb,c、dをロードし、バッファレジスタ103へ格納する。
ステップ3においては、データb,c、dが格納されたバッファレジスタ103から、ステップ1で分離した参照済みデータ数0x3と今回参照するデータ数Nとを用いて、今回参照するデータのみを抜き出してくる。具体的な抜き出し手段の一例をステップ3−1aからステップ3−3aで示す。
ステップ3−1aにおいては、バッファレジスタ103にあるデータb,c、dを参照済みデータ数0x3だけ左シフトさせる。今回参照するデータD1の先頭がバッファレジスタ103の最上位ビット側に移動する。このとき、一般のプロセッサではシフトした際の下位ビット側(右)のデータがない部分は“0”が拡張されるのが普通である(図15参照)。
ステップ3−2aにおいては、“24”から今回参照するデータ数Nを引いた値を算出する。
ステップ3−3aにおいては、ステップ3−1aでシフトしたデータを、さらにステップ3−2aで算出した値分だけ右にシフトする。今回参照するデータD1の末尾がバッファレジスタ103の最下位ビット側に移動する。このとき、シフトは論理シフトとする。論理シフトは上位ビット側(左)のデータがない部分は“0”が拡張されるのが普通である(図15参照)。
ステップ4においては、アドレスレジスタ102に今回参照したデータ数Nを加算して、アドレスレジスタ102の値を更新する。このとき、加算によって参照済みデータ数は(0x3+N)へ更新され、さらに参照済みデータ数を保持している下位ビット側から、アドレス値を保持している上位ビット側への桁上がりによって、アドレス値の更新も自動的に実現されることになる。
例えばN=0x2の場合、参照済みデータ数は0x3+0x2=0x5で3ビットで表現でき、桁上がりはなく、アドレス値は0x101のままである。N=0x8の場合は、参照済みデータ数は0x3+0x8=0xbで4ビットになり、桁上がりが発生し、アドレス値が0x101から0x102へ更新される。また、N=0xFの場合は、参照済みデータ数は0x3+0xf=0x13で5ビットになり、2つ桁上がりが発生し、アドレス値が0x101から0x103へ更新される。
理解を助けるため、より具体的な例をあげて説明する。
図16(a)は、メモリ101の0x101番からロードによってバッファレジスタ103に格納されたデータを示す。図13のデータbに対応するのが8ビットのデータb8,b7,b6,…,b1である。また、図13のデータcに対応するのが8ビットのデータc8,c7,…,c1である。また、図13のデータdに対応するのが8ビットのデータd8,d7,…,d1である。合計24ビットある。
前回の処理でデータb8,b7,b6の3ビットが参照済みであるとする。したがって、参照済みデータ数M=3である。今回参照するデータ数N=15とする。それは、b5,…,b1,cC8,c7,…,c1,d8,d7のデータD2に相当する。これを太い枠で強調する。
図16(b)は、24ビットのデータ列b8,b7,…,b1,c8,c7,…,c1,d8,d7,…,d1を参照済みデータ数M=3ビット分だけ左シフトし、最上位からデータ列b5,…,b1,c8,c7,…,c1,d8,d7, …,d1を格納し、下位3ビットを“0”にセットした状態である。太枠の先頭が24ビット目に一致している。
図16(c)は、24ビットのデータ列b5,…,b1,c8,c7,…,c1,d8,d7, …,d1,0,0,0を9ビット分だけ右シフトし、最上位から9ビット分に“0”をセットした状態を示す。右シフト量の9ビットは、“24”から今回参照するデータ数N=15を引いたものである。太枠の末尾が1ビット目に一致している。すなわち、バッファレジスタ103の最下位から15ビット分にデータD2のb5,…,b1,c8,c7,…,c1,d8,d7が格納された状態となり、これで今回参照するデータD2が抜き出されたことになる。
参照済みデータ数Mに今回参照するデータ数Nを加算すると、M+N=3+15=18であり、アドレスレジスタ102において参照済みデータ数Mを“3”から“18”に更新する。“18”は2x24(4ビット)以上に該当するからアドレス値を2つ桁上げを行い、アドレス値0x103番に更新する。データbの全8ビット分のデータの参照とデータcの全8ビット分のデータ参照が完了し、データdの参照に入っているので、2つ先のアドレスに進むのである。参照済みデータ数Mの“18”は16進数では“0x12”であり、2進数で“0b10002”であるが、桁上げの5ビット目を除く下位から4ビット分は“0b0002”で、16進数で“0x2”となる。これは、データeの上位2つのビットe16,e15が参照済みであることに対応している。
図13に示すように、アドレス0x103の上位8ビット分には、2つ前のアドレス0x101番の下位側8ビット分のデータd(d8,d7,…,d1)と同じものがすでに格納されており、そのまま引き続き使用可能となっている。アドレス更新のための特別の監視、演算が不要となっている。
実施の形態3に示した例では、下位16ビットのデータを、その次のアドレスの上位16ビットにも配置しているので、少なくとも16ビット+1ビットの17ビットのデータを一度に抜き出すことが出来る。また、データを詰めた場合に比べて3倍のメモリ容量を必要とする。
なお、図13のアドレスレジスタ102やバッファレジスタ103は特殊な動作をするレジスタではなく、プロセッサの通常使用する汎用的なレジスタを用いて実現できるものであり、特に専用のレジスタを実装する必要はない。ただし、従来技術でのアクセスアドレスや参照済みデータ数等と同様、アドレスレジスタ102の値はメモリ101の空き領域等への退避復帰が必要である。
(実施の形態4)
図17ないし図19を参照して実施の形態4の可変長復号化装置を説明する。
説明の便宜上、実施の形態4におけるプロセッサは24ビットを基本とするプロセッサを前提に記載しているが、本発明はこれらに限定されるものではない。
図17において、メモリ101は24ビットを1ワードとするデータを記憶しており、各アドレスが、上位8ビット、中位8ビット、下位8ビットとなり、あるアドレスの下位ビット側と同じデータを次のアドレスの上位ビット側にも配置している。
アドレスレジスタ102は、ビット幅32のレジスタであり、アドレス値を保持する上位ビット側(第1レジスタ部分)と、参照済みデータ数Mを保持するビット幅C(実施の形態ではC=4)の下位ビット側(第2レジスタ部分)とからなる。
バッファレジスタ103は、メモリ101からロードしたデータを保持するビット幅B(実施の形態4ではB=24)のレジスタである。
ここで、メモリ101のビット幅Aは24であり,アドレスレジスタ102の第2レジスタ部分のビット幅Cは4であり,メモリ101の下位ビット側のビット数Dは8であり、これらA,C,Dの間には、D=A−2Cの関係がある。また、A,Cの間には、P=2CとするとA=(3/2)×Pの関係がある。すなわち、P=24=16であり、A=(3/2)×16=24である。
実施の形態4の可変長復号化装置において、可変長復号を行う処理フローは実施の形態1の処理フロー(図2)と同様である。
実施の形態4において、バッファレジスタ103から今回参照するデータを抜き出す一般的な処理フローは実施の形態3の処理フロー(図14)と同様である。
実施の形態4において、その処理フローに伴って変化するデータの状態(図15)も実施の形態3と同様である。
実施の形態4において、初期状態として、メモリ101には図17で示すように、0x100番地からa,b,c…といった順にデータが格納されているものとし、アドレスレジスタ102におけるアドレス値を0x101、参照済みデータ数を0x3とし、今回参照するデータ数をNとする。
以下、処理の一例を説明する。
ステップ1においては、アドレスレジスタ102から参照済みデータ数0x3とアドレス値0x101を分離し、抜き出す。
ステップ2においては、ステップ1にて分離したアドレス値0x101を用いて、メモリ101の0x101番地をアクセスし、データc,d、eをロードし、バッファレジスタ103へ格納する。
ステップ3においては、データc,d、eが格納されたバッファレジスタ103から、ステップ1で分離した参照済みデータ数0x3と今回参照するデータ数Nを用いて、今回参照するデータのみを抜き出してくる。具体的な抜き出し手段の一例をステップ3−1aからステップ3−3aで示す。
ステップ3−1aにおいては、バッファレジスタ103にあるデータc,d、eを参照済みデータ数0x3だけ左シフトさせる。今回参照するデータD1の先頭がバッファレジスタ103の最上位ビット側に移動する。このとき、一般のプロセッサではシフトした際の下位ビット側(右)のデータがない部分は“0”が拡張されるのが普通である(図15参照)。
ステップ3−2aにおいては、“24”から今回参照するデータ数Nを引いた値を算出する。
ステップ3−3aにおいては、ステップ3−1aでシフトしたデータを、さらにステップ3−2aで算出した値分だけ右にシフトする。今回参照するデータD1の末尾がバッファレジスタ103の最下位ビット側に移動する。このとき、シフトは論理シフトとする。論理シフトは上位ビット側(左)のデータがない部分は“0”が拡張されるのが普通である(図15参照)。
ステップ4においては、アドレスレジスタ102に今回参照したデータ数Nを加算して、アドレスレジスタ102の値を更新する。このとき、加算によって参照済みデータ数は(0x3+N)へ更新され、さらに参照済みデータ数を保持している下位ビット側から、アドレス値を保持している上位ビット側への桁上がりによって、アドレス値の更新も自動的に実現されることになる。
例えばN=0x2の場合、参照済みデータ数は0x3+0x2=0x5で4ビットで表現でき、桁上がりはなく、アドレス値は0x101のままである。N=0x8の場合も、参照済みデータ数は0x3+0x8=0xbで4ビットになり、桁上がりが発生し、アドレス値が0x101から0x102へ更新される。また、N=0xFの場合は、参照済みデータ数は0x3+0xf=0x13で5ビットになり、桁上がりが発生し、アドレス値が0x101から0x102へ更新される。
理解を助けるため、より具体的な例をあげて説明する。
図18(a)は、メモリ101の0x101番からロードによってバッファレジスタ103に格納されたデータを示す。図17のデータcに対応するのが8ビットのデータc8,c7,c6,…,c1である。また、図17のデータdに対応するのが8ビットのデータd8,d7,…,d1である。また、図17のデータeに対応するのが8ビットのデータe8,e7,…,e1である。合計24ビットある。
前回の処理でデータc8,c7,c6の3ビットが参照済みであるとする。したがって、参照済みデータ数M=3である。今回参照するデータ数N=9とする。それは、c5,c4,…,c1,d8,…,d5のデータD2に相当する。これを太い枠で強調する。
図18(b)は、24ビットのデータ列c8,c7,…,c1,d8,d7,…,d1,e8,e7,…,e1を参照済みデータ数M=3ビット分だけ左シフトし、最上位からデータ列c5,…,c1,d8,d7,…,d1,e8,e7, …,e1を格納し、下位3ビットを“0”にセットした状態である。太枠の先頭が24ビット目に一致している。
図18(c)は、24ビットのデータ列c5,…,c1,d8,d7,…,d1,e8,e7,…,e1,0,0,0を15ビット分だけ右シフトし、最上位から15ビット分に“0”をセットした状態を示す。右シフト量の15ビットは、“24”から今回参照するデータ数N=9を引いたものである。太枠の末尾が1ビット目に一致している。すなわち、バッファレジスタ103の最下位から9ビット分にデータD2のc5,c4,…,c1,d8,…,d5が格納された状態となり、これで今回参照するデータD2が抜き出されたことになる。
参照済みデータ数Mに今回参照するデータ数Nを加算すると、M+N=3+9=12であり、アドレスレジスタ102において参照済みデータ数Mを“3”から“12”に更新する。“12”は24(4ビット)未満であるからアドレス値の桁上げは行わず、元のアドレス値0x101番を維持する。
図18の処理に引き続く処理を図19で説明する。
図19(a)は、メモリ101の0x101番のデータがバッファレジスタ103にロードされた状態を示す(図19(a)と同じ)。
前回までの処理でデータc8,c7,…,c1,d8,d7,…,d5の12ビットが参照済みであり、参照済みデータ数M=12となっている。今回参照するデータ数N=9とする。それは、d4,…,d1,e8,e7,…,e4のデータD3に相当する。これを太い枠で強調する。
図19(b)は、24ビットのデータ列c8,c7,…,c1,d8,d7,…,d1,e8,e7,…,e1を参照済みデータ数M=12ビット分だけ左シフトし、最上位からデータ列d4,d3,…,d1,e8,e7,…,e1を格納し、下位12ビットを“0”にセットした状態である。太枠の先頭が24ビット目に一致している。
図19(c)は、24ビットのデータ列d4,d3,…,d1,e8,e7,…,e1,0,0,…,0を15ビット分だけ右シフトし、最上位から15ビット分に“0”をセットした状態を示す。右シフト量の15ビットは、“24”から今回参照するデータ数N=9を引いたものである。太枠の末尾が1ビット目に一致している。すなわち、バッファレジスタ103の最下位から9ビット分にデータD3のd4,…,d1,e8,e7,…,e4が格納された状態となり、これで今回参照するデータD3が抜き出されたことになる。
参照済みデータ数Mに今回参照するデータ数Nを加算すると、M+N=12+9=21であり、アドレスレジスタ102において参照済みデータ数Mを“12”から“21”に更新する。“21”は24(4ビット)以上に該当するからアドレス値の桁上げを行い、次のアドレス値0x102番に更新する。データc、及びデータdの全16ビット分のデータの参照が完了し、データeの参照に入っているので、次のアドレスに進むのである。参照済みデータ数Mの“21”は16進数では“0x15”であり、2進数で“0b10101”であるが、桁上げの5ビット目を除く下位から4ビット分は“0b0101”で、16進数で“0x5”となる。これは、データEの上位5つのビットc8,c7,…,e4が参照済みであることに対応している。
図17に示すように、アドレス0x101番から次のアドレス0x102番に進むと、そこの上位8ビット分には、1つ前のアドレス0x101番の下位側8ビット分のデータe(e8,e7,…,e1)と同じものがすでに格納されており、そのまま引き続き使用可能となっている。アドレス更新のための特別の監視、演算が不要となっている。
実施の形態4に示した例では、下位8ビットのデータを、その次のアドレスの上位8ビットにも配置しているので、少なくとも8ビット+1ビットの9ビットのデータを一度に抜き出すことが出来る。また、データを詰めた場合に比べて4/3倍のメモリ容量を必要とする。
なお、図17のアドレスレジスタ102やバッファレジスタ103は特殊な動作をするレジスタではなく、プロセッサの通常使用する汎用的なレジスタを用いて実現できるものであり、特に専用のレジスタを実装する必要はない。ただし、従来技術でのアクセスアドレスや参照済みデータ数等と同様、アドレスレジスタ102の値はメモリ101の空き領域等への退避復帰が必要である。
(実施の形態5)
図20および図21を参照して実施の形態5の可変長復号化装置を説明する。説明の便宜上、実施の形態5におけるプロセッサは32ビットを基本とするプロセッサを前提に記載しているが、本発明はこれらに限定されるものではない。
図20において、メモリ101は、32ビットを1ワードとするデータを記憶しており、各アドレスが、上位8ビット、第1中位8ビット、第2中位ビット8ビット、下位8ビットとなり、あるアドレスの第1中位ビットと同じデータを次のアドレスの上位ビット側にも配置し、あるアドレスの第2中位ビットと同じデータを次のアドレスの第1中位ビットにも配置し、あるアドレスの下位ビット側と同じデータを次のアドレスの第2中位ビットにも配置している。
アドレスレジスタ102は、ビット幅32のレジスタであり、アドレス値を保持する上位ビット側(第1レジスタ部分)と、参照済みデータ数Mを保持するビット幅C(実施の形態5ではC=3)ビット幅の下位ビット側(第2レジスタ部分)とからなる。
バッファレジスタ103は、メモリ101からロードしたデータを保持するビット幅B(実施の形態5ではB=32)のレジスタである。
ここで、メモリ101のビット幅Aは32であり,アドレスレジスタ102の第2レジスタ部分のビット幅Cは3であり,メモリ101の下位ビット側のビット数Dは24であり、これらA,C,Dの間には、D=A−2Cの関係がある。また、A,Cの間には、P=2CとするとA=4×Pの関係がある。すなわち、P=23=8であり、A=4×8=32である。
実施の形態5の可変長復号化装置においては、可変長復号を行う処理フローは実施の形態1の処理フロー(図2)と同様である。
実施の形態5の可変長復号化装置においては、バッファレジスタ103から今回参照するデータを抜き出す一般的な処理フローは実施の形態1の処理フロー(図3)と同様である。
実施の形態5の可変長復号化装置においては、図3で示した処理フローに伴って変化するデータの状態も実施の形態1と同様に図4で示される。
実施の形態5の可変長復号化装置においては、初期状態として、メモリ101には図20で示すように、0x100番地からa,b,c…といった順にデータが格納されているものとし、アドレスレジスタ102におけるアドレス値を0x101、参照済みデータ数を0x3とし、今回参照するデータ数をNとする。
以下、処理の一例を説明する。
ステップ1においては、アドレスレジスタ102から参照済みデータ数0x3とアドレス値0x101を分離し、抜き出す。
ステップ2においては、ステップ1にて分離したアドレス値0x101を用いて、メモリ101の0x101番地をアクセスし、データb,c,d,eをロードし、バッファレジスタ103へ格納する。
ステップ3においては、データb,c,d,eが格納されたバッファレジスタ103から、ステップ1で分離した参照済みデータ数0x3と今回参照するデータ数Nを用いて、今回参照するデータのみを抜き出してくる。具体的な抜き出し手段の一例をステップ3−1aからステップ3−3aで示す。
ステップ3−1aにおいては、バッファレジスタ103にあるデータb,c,d,eを参照済みデータ数0x3だけ左シフトさせる。今回参照するデータD2の先頭がバッファレジスタ103の最上位ビット側に移動する。このとき、一般のプロセッサではシフトした際の下位ビット側(右)のデータがない部分は“0”が拡張されるのが普通である(図4参照)。
ステップ3−2aにおいては、“32”から今回参照するデータ数Nを引いた値を算出する。
ステップ3−3aにおいては、ステップ3−1aでシフトしたデータを、さらにステップ3−2aで算出した値分だけ右にシフトする。今回参照するデータD1の末尾がバッファレジスタ103の最下位ビット側に移動する。このとき、シフトは論理シフトとする。論理シフトは上位ビット側(左)のデータがない部分は“0”が拡張されるのが普通である(図4参照)。
ステップ4においては、アドレスレジスタ102に今回参照したデータ数Nを加算して、アドレスレジスタ102の値を更新する。このとき、加算によって参照済みデータ数は(0x3+N)へ更新され、さらに参照済みデータ数を保持している下位ビット側から、アドレス値を保持している上位ビット側への桁上がりによって、アドレス値の更新も自動的に実現されることになる。
例えばN=0x2の場合、参照済みデータ数は0x3+0x2=0x5で3ビットで表現でき、桁上がりはなく、アドレス値は0x101のままである。N=0x8の場合も、参照済みデータ数は0x3+0x8=0xbで4ビットになり、桁上がりが発生し、アドレス値が0x101から0x102へ更新される。また、N=0xfの場合は、参照済みデータ数は0x3+0xf=0x13で5ビットになり、桁上がりが発生し、アドレス値が0x101から0x102へ更新される。
理解を助けるため、より具体的な例をあげて説明する。
図21(a)は、メモリ101の0x101番からロードによってバッファレジスタ103に格納されたデータを示す。図20のデータbに対応するのが8ビットのデータb8,b7,b6,…,b1である。また、図20のデータcに対応するのが8ビットのデータc8,c7,c6,…,c1である。また、図20のデータdに対応するのが8ビットのデータd8,d7,…,d1である。また、図20のデータeに対応するのが8ビットのデータe8,e7,…,e1である。合計32ビットである。
前回の処理でデータb8,b7,b6の3ビットが参照済みであるとする。したがって、参照済みデータ数M=3である。今回参照するデータ数N=23とする。それは、b5,b4,…,b1,c8,…,c1,d8,…,d1,e8,e7のデータD2に相当する。これを太い枠で強調する。
図21(b)は、32ビットのデータ列b8,…,b1,c8,…,c1,d8,…,d1,e8,…,e1を参照済みデータ数M=3ビット分だけ左シフトし、最上位からデータ列b5,…,b1,c8,…,c1,d8,…,d1,e8,…,e1を格納し、下位3ビットを“0”にセットした状態である。太枠の先頭が32ビット目に一致している。
図21(c)は、32ビットのデータ列b5,…,b1,c8,…,c1,d8,…,d1,e8,…,e1,0,0,0を9ビット分だけ右シフトし、最上位から9ビット分に“0”をセットした状態を示す。右シフト量の9ビットは、“32”から今回参照するデータ数N=23を引いたものである。太枠の末尾が1ビット目に一致している。すなわち、バッファレジスタ103の最下位から23ビット分にデータD2のb5,b4,…,b1,c8,…,c1,d8,…,d1,e8,e7が格納された状態となり、これで今回参照するデータD2が抜き出されたことになる。
参照済みデータ数Mに今回参照するデータ数Nを加算すると、M+N=3+23=26であり、アドレスレジスタ102において参照済みデータ数Mを“3”から“26”に更新する。“26”は3x24(4ビット)以上に該当するからアドレス値を3つ桁上げを行い、アドレス値0x104番に更新する。データb,c,dの全24ビット分のデータの参照が完了し、データEの参照に入っているので、3つ先のアドレスに進むのである。参照済みデータ数Mの“26”は16進数では“0x1aであり、2進数で“0b11010”であるが、桁上げの4、5ビット目を除く下位から3ビット分は“0b010”で、16進数で“0x2”となる。これは、データeの上位2つのビットe8,e7が参照済みであることに対応している。
図20に示すように、アドレス0x104の上位8ビット分には、3つ前のアドレス0x101番の下位側8ビット分のデータe(e8,e7,…,e1)と同じものがすでに格納されており、そのまま引き続き使用可能となっている。アドレス更新のための特別の監視、演算が不要となっている。
実施の形態5に示した例では、下位24ビットのデータを、その次のアドレスの上位24ビットにも配置しているので、少なくとも24ビット+1ビットの25ビットのデータを一度に抜き出すことが出来る。また、データを詰めた場合に比べて4倍のメモリ容量を必要とする。
なお、図20のアドレスレジスタ102やバッファレジスタ103は特殊な動作をするレジスタではなく、プロセッサの通常使用する汎用的なレジスタを用いて実現できるものであり、特に専用のレジスタを実装する必要はない。ただし、従来技術でのアクセスアドレスや参照済みデータ数等と同様、アドレスレジスタ102の値はメモリ101の空き領域等への退避復帰が必要である。
(実施の形態6)
図22ないし図24を参照して実施の形態6の可変長復号化装置を説明する。
説明の便宜上、実施の形態6におけるプロセッサは32ビットを基本とするプロセッサを前提に記載しているが、本発明はこれらに限定されるものではない。
図22において、メモリ101は、A(実施の形態6ではA=32)ビットを1ワードとするデータを記憶しており、各アドレスが、上位8ビット、第1中位8ビット、第2中位ビット8ビット、下位8ビットで構成されている。メモリ101においては、あるアドレスにおける下位ビット側のデータと同じデータが、次のアドレスにおける上位ビット側にも配置されている。
アドレスレジスタ102は、ビット幅32のレジスタであり、アドレス値を保持する上位ビット側(第1レジスタ部分)と、参照済みデータ数Mを保持するビット幅C(実施の形態6ではC=5)の下位ビット側(第2レジスタ部分)とからなる。
バッファレジスタ103は、メモリ101からロードしたデータを保持するビット幅B(実施の形態6ではB=32)のレジスタである。
この実施の形態5においては、アドレスレジスタ102の値と今回参照したビット数Nとを加算する特殊加算器104を備えたことに特徴を有する。
特殊加算器104は、参照済みビット数をM、今回参照したビット数をNとした時に(M+N)/E(ただし、EはA−Dの1以上の整数であり、実施の形態6では32−8=24である。)24の商F(整数)をアドレスレジスタ101の上位側(第1レジスタ部分)に加算し、余りG(整数)をアドレスレジスタ101の下位側(第2レジスタ部分)にセットするものである。
ここで、上記Eには、E=H×2Lの関係がある。実施の形態6ではE=24=3×23であり、H=3となる。
メモリ101上のデータについては、上位24ビットの残りの下位8ビット分のデータが次のアドレスの上位側にも格納されるように配置している。具体的には、例えば、アドレス0x101番には、上位8ビットにデータdが、第1中位ビットにはデータeが、第2中位ビットにデータfが、下位ビット側にデータgがそれぞれ格納されているが、次のアドレス0x102番の上位ビット側にはデータgが格納されている。アドレス0x102番における下位ビット側にデータjが格納されているが、次のアドレス0x103番の上位ビット側にデータjが格納されている。
実施の形態6の可変長復号化装置においては、可変長復号を行う処理フローは実施の形態1の処理フロー(図2)と同様である。
実施の形態6の可変長復号化装置においては、バッファレジスタ103から今回参照するデータを抜き出す一般的な処理フローは実施の形態1の処理フロー(図3)と同様である。
実施の形態6の可変長復号化装置においては、図3で示した処理フローに伴って変化するデータの状態も実施の形態1と同様に図4で示される。
実施の形態6の可変長復号化装置においては、初期状態として、メモリ101には図のように、0x100番地からa,b,c…といった順にデータが格納されているものとし、アドレスレジスタ102におけるアドレス値を0x101、参照済みデータ数を0x3とし、今回参照するデータ数をNとする。
以下、処理の一例を説明する。
ステップ1においては、アドレスレジスタ102から参照済みデータ数0x3とアドレス値0x101とを分離し、抜き出す。
ステップ2においては、ステップ1にて分離したアドレス値0x101を用いて、メモリ101の0x101番地をアクセスし、データd,e,f,gをロードし、バッファレジスタ103へ格納する。
ステップ3においては、データd,e,f,gが格納されたバッファレジスタ103から、ステップ1で分離した参照済みデータ数0x3と今回参照するデータ数Nとを用いて、今回参照するデータのみを抜き出してくる。具体的な抜き出し処理の一例をステップ3−1aからステップ3−3aで示す。
ステップ3−1aにおいては、バッファレジスタ103にあるデータd,e,f,gを参照済みデータ数0x3だけ左シフトさせる。今回参照するデータD2の先頭がバッファレジスタ103の最上位ビット側に移動する。このとき、一般のプロセッサではシフトした際の下位ビット側(右)のデータがない部分は“0”が拡張されるのが普通である(図4参照)。
ステップ3−2aにおいては、“32”から今回参照するデータ数Nを引いた値を算出する。
ステップ3−3aにおいては、ステップ3−1aでシフトしたデータを、さらにステップ3−2aで算出した値分だけ右にシフトする。今回参照するデータD2の末尾がバッファレジスタ103の最下位ビット側に移動する。このとき、シフトは論理シフトとする。論理シフトは上位ビット側(左)のデータがない部分は“0”が拡張されるのが普通である(図4参照)。
ステップ4においては、アドレスレジスタ102に今回参照したデータ数Nを特殊加算器104で加算して、アドレスレジスタ102の値を更新する。このとき、加算によって参照済みデータ数は(0x3+N)/24の余りへ更新され、さらに参照済みデータ数を保持している下位ビット側から、アドレス値を保持している上位ビット側への(0x3+N)/24の商の値の加算によって、アドレス値の更新も自動的に実現されることになる。
例えばN=0x8の場合、参照済みデータ数は0x3+0x8=0xaで24以下であるので、桁上がりはなく、アドレス値は0x101のままである。M=0x13、N=0x8とした時、参照済みデータ数は0x13+0x8=0x1b(27)で27/24の商は0x1、余りは0x3であるので、アドレス値は0x101+0x1で0x102へ更新される。
理解を助けるため、より具体的な例をあげて説明する。
図23(a)は、メモリ101の0x101番からロードによってバッファレジスタ103に格納されたデータを示す。図22のデータdに対応するのが8ビットのデータd8,d7,d6,…,d1である。また、図22のデータeに対応するのが8ビットのデータe8,e7,e6,…,e1である。また、図22のデータfに対応するのが8ビットのデータf8,f7,…,f1である。また、図22のデータgに対応するのが8ビットのデータg8,g7,…,g1である。合計32ビットある。
前回の処理でデータd8,d7,d6の3ビットが参照済みであるとする。したがって、参照済みデータ数M=3である。今回参照するデータ数N=8とする。それは、d5,d4,…,d1,e8,e7,e6のデータD2に相当する。これを太い枠で強調する。
図23(b)は、32ビットのデータd8,…,d1,e8,…,e1,f8,…,f1,g8,…,g1を参照済みデータ数M=3ビット分だけ左シフトし、最上位からデータ列d5,…,d1,e8,…,e1,f8,…,f1,g8,…,g1を格納し、下位3ビットを“0”にセットした状態である。太枠の先頭が32ビット目に一致している。
図23(c)は、32ビットのデータ列d5,…,d1,e8,…,e1,f8,…,f1,g8,…,g1,0,0,0を24ビット分だけ右シフトし、最上位から24ビット分に“0”をセットした状態を示す。右シフト量の24ビットは、“32”から今回参照するデータ数N=8を引いたものである。太枠の末尾が1ビット目に一致している。すなわち、バッファレジスタ103の最下位から23ビット分にデータD2のd5,d4,…,d1,e8,e7,e6が格納された状態となり、これで今回参照するデータD2が抜き出されたことになる。
参照済みデータ数Mに今回参照するデータ数Nを加算すると、M+N=3+8=11であり、アドレスレジスタ102において参照済みデータ数Mを“3”から“11”に更新する。“11”は24以下であるので、アドレス値の加算は行われず、元のアドレス値0x101番を維持する。
次は、前回まで処理でデータd8,…,d1,e8,…,e1,f8,f7,f6の19ビットが参照済みであるとする。したがって、参照済みデータ数M=19である。今回参照するデータ数N=8とする。それは、f5,f4,…,f1,g8,g7,g6のデータD2に相当する。これを太い枠で強調する。
図24(b)は、32ビットのデータd8,…,d1,e8,…,e1,f8,…,f1,g8,…,g1を参照済みデータ数M=19ビット分だけ左シフトし、最上位からデータ列f5,…,f1,g8,…,g1を格納し、下位19ビットを“0”にセットした状態である。太枠の先頭が32ビット目に一致している。
図24(C)は、32ビットのデータ列f5,…,f1,g8,…,g1,0, …,0を24ビット分だけ右シフトし、最上位から24ビット分に“0”をセットした状態を示す。右シフト量の24ビットは、“32”から今回参照するデータ数N=8を引いたものである。太枠の末尾が1ビット目に一致している。すなわち、バッファレジスタ103の最下位から23ビット分にデータD2のf5,f4,…,f1,g8,g7,g6が格納された状態となり、これで今回参照するデータD2が抜き出されたことになる。
参照済みデータ数Mに今回参照するデータ数Nを加算すると、M+N=19+8=27である。27/24の商は1であり、余りは3である。よって、アドレスレジスタ102において参照済みデータ数Mに“3”をセットする。また、アドレス値には1を加算しアドレス値0x102番に更新する。データd,e,fの全24ビット分のデータの参照が完了し、データgの参照に入っているので、1つ先のアドレスに進むのである。参照済みデータ数Mの“3”はデータgの上位3つのビットg8,g7、g6が参照済みであることに対応している。
図22に示すように、アドレス0x102の上位8ビット分には、1つ前のアドレス0x101番の下位側8ビット分のデータg(g8,g7,…,g1)と同じものがすでに格納されており、そのまま引き続き使用可能となっている。アドレス更新のための特別の監視、演算が不要となっている。
実施の形態6に示した例では、下位8ビットのデータを、その次のアドレスの上位8ビットにも配置しているので、少なくとも8ビット+1ビットの9ビットのデータを一度に抜き出すことが出来る。また、データを詰めた場合に比べて1.25倍のメモリ容量を必要とする。
なお、図20のアドレスレジスタ102やバッファレジスタ103は特殊な動作をするレジスタではなく、プロセッサの通常使用する汎用的なレジスタを用いて実現できるものであり、特に専用のレジスタを実装する必要はない。ただし、従来技術でのアクセスアドレスや参照済みデータ数等と同様、アドレスレジスタ102の値はメモリ101の空き領域等への退避復帰が必要である。
(実施の形態7)
図25に上記実施の形態の可変長復号化装置を用いた再生システムの概略を示す。
図25に示すように、DVD等のシステムストリームを蓄積したデータ蓄積装置501やインターネットや放送などのストリーム配信手段から送られてきたシステムストリームは多重分離手段502でビデオの可変長符号化されたストリームとオーディオの可変長符号化されたストリームとに分離される。
ビデオの可変長符号化されたストリームは、可変長復号化装置503で可変長復号化され、ビデオ信号処理手段504に出力される。ビデオ信号処理手段504では、可変長復号化されたデータをもとにビデオ信号を再生し、ビデオ表示手段505に出力する。
オーディオの可変長符号化されたストリームは、可変長復号化装置506で可変長復号化され、オーディオ信号処理手段507に出力される。オーディオ信号処理手段507では、可変長復号化されたデータをもとにオーディオ信号を再生し、オーディオ出力手段508に出力する。
可変長復号化装置503、506に本発明の可変長復号化装置を使うことにより、処理性能の低いプロセッサでも再生システムを実現することができ、安価にシステムを構築することが出来る。
本発明にかかる可変長復号化装置及び可変長復号化方法は、可変長符号を用いる画像コーデックやオーディオコーデックを搭載し実行するプロセッサの処理高速化の技術であり、AVマルチメディア機器やモバイル端末分野等に幅広く有用である。
本発明の実施の形態1における可変長復号化装置の構成例の説明図 本発明の実施の形態1における可変長復号化方法の処理フロー図 本発明の実施の形態1におけるデータ抜き出しの処理フロー図 本発明の実施の形態1におけるデータ抜き出しのデータ状態を示す図 本発明の実施の形態1における具体的動作例説明図 本発明の実施の形態1における具体的動作例説明図 本発明の実施の形態1における具体的動作例説明図 本発明の実施の形態1における具体的動作例説明図 本発明の実施の形態2におけるデータ抜き出しの処理フロー図 本発明の実施の形態2におけるデータ抜き出しのデータ状態を示す図 本発明の実施の形態2におけるシフタとバッファレジスタの周辺を示す回路構成例の説明図 本発明の実施の形態2における具体的動作例説明図 本発明の実施の形態3における可変長復号化装置の構成例の説明図 本発明の実施の形態3におけるデータ抜き出しの処理フロー図 本発明の実施の形態3におけるデータ抜き出しのデータ状態を示す図 本発明の実施の形態3における具体的動作例説明図 本発明の実施の形態4における可変長復号化装置の構成例の説明図 本発明の実施の形態4における具体的動作例1の説明図 本発明の実施の形態4における具体的動作例2の説明図 本発明の実施の形態5における可変長復号化装置の構成例の説明図 本発明の実施の形態5における具体的動作例説明図 本発明の実施の形態6における可変長復号化装置の構成例の説明図 本発明の実施の形態6における具体的動作例1の説明図 本発明の実施の形態6における具体的動作例2の説明図 本発明の実施の形態7における再生システムの概略図
符号の説明
101:メモリ
102:アドレスレジスタ
103:バッファレジスタ

Claims (19)

  1. 任意のアドレスにおける下位ビット側に記憶しているデータと同じデータを該任意のアドレスの次アドレスにおける上位ビット側にも配置してデータを記憶するメモリと、
    前記メモリからロードされるデータを格納するものでビット幅が少なくとも前記メモリのビット幅を有するバッファレジスタと、
    前記メモリへのアクセスアドレスの値(アドレス値)を上位ビット側に格納し、前記バッファレジスタで参照済みデータ数を下位ビット側に格納するアドレスレジスタと、
    を備え、
    前記バッファレジスタに対して前記参照済みデータ数と今回参照するデータ数とを用いたデータシフト操作を行うことにより、当該バッファレジスタから可変長復号化のために今回参照すべきデータを抜き出し、
    前記バッファレジスタからのデータの抜き出しに伴って、
    前記アドレスレジスタの下位ビット側の参照済みデータ数を、該参照済みデータ数に今回参照したデータ数を加算して更新し、
    前記アドレスレジスタの上位ビット側に格納する前記アドレス値を、前記アドレスレジスタの下位ビット側の更新後の参照済みデータ数が桁上がりしないときはそのまま維持し、桁上がりするときはその桁上がりを用いて次のアドレス値に更新する、ことを特徴とする可変長復号化装置。
  2. 前記メモリが、ビット数A(2以上の整数)を1ワードとしてデータを記憶するものであり、前記Aが、2×P(ただし、P=2C)であることを特徴とする請求項1に記載の可変長復号化装置。
  3. 前記メモリが、ビット数A(2以上の整数)を1ワードとしてデータを記憶するものであり、前記Aが、3×P(ただし、P=2C)であることを特徴とする請求項1に記載の可変長復号化装置。
  4. 前記メモリが、ビット数A(2以上の整数)を1ワードとしてデータを記憶するものであり、前記Aが、(3/2)×P(ただし、P=2C)であることを特徴とする請求項1に記載の可変長復号化装置。
  5. 前記メモリが、ビット数A(2以上の整数)を1ワードとしてデータを記憶するものであり、前記Aが、4×P(ただし、P=2C)であることを特徴とする請求項1に記載の可変長復号化装置。
  6. ビット数A(2以上の整数)を1ワードとしてデータを記憶するメモリと、
    前記メモリからロードされたデータを格納するビット幅B(A以上の整数)のバッファレジスタと、
    前記メモリへのアクセスアドレスの値(アドレス値)を上位ビット側に格納し、かつ、前記バッファレジスタで参照済みデータ数M(0以上の整数)をビット幅C(1以上の整数)の下位ビット側に格納するアドレスレジスタと、
    を備え、
    前記メモリは、任意のアドレスにおいてビット数D(A−2Cで表される整数)の下位ビット側に記憶しているデータと同じデータを、該任意のアドレスの次アドレスにおいてビット数Dの上位ビット側にも配置しており、
    前記バッファレジスタから、前記参照済みデータ数Mと今回参照すべきデータ数N(1以上の整数)とを用いたデータシフト操作を行うことにより、可変長復号化のために今回参照すべきデータを抜き出す一方、
    この抜き出しに伴い、EをA−Dの演算により得られる1以上の整数、F,Gを整数、(M+N)/Eの演算により得られる商をF,余りをGとして、前記アドレスレジスタの上位ビット側に前記商Fを加算することにより当該上位ビット側に格納する前記アドレス値の更新を行い、また、前記アドレスレジスタの下位ビット側に前記余りGをセットすることにより当該下位ビット側に格納する参照済みデータ数Mの更新を行うことを特徴とする可変長復号化装置。
  7. 前記Eが、H×2L(H、Lは1以上の整数)であることを特徴とする請求項6に記載の可変長復号化装置。
  8. 前記Hが、3であることを特徴とする請求項7に記載の可変長復号化装置。
  9. さらに、前記バッファレジスタにおいて今回参照すべきデータを抜き出す手段として、前記参照済みデータをマスクしつつシフトするシフタを備えている請求項1ないし8のいずれか1項に記載の可変長復号化装置。
  10. ビット数A(2以上の整数)を1ワードとしてデータを記憶するメモリと、前記メモリからロードしたデータを格納するビット幅B(A以上の整数)のバッファレジスタと、前記メモリへのアクセスアドレスを上位ビット側に格納しかつ前記バッファレジスタで参照済みデータ数M(0以上の整数)をビット幅C(1以上の整数)の下位ビット側に格納するアドレスレジスタとを備える可変長復号化装置を用いて可変長復号する方法であって、
    前記アドレスレジスタからアクセスアドレスの値(アドレス値)と参照済みのデータ数M(0以上の整数)とを分離する第1の工程と、
    前記メモリに、任意のアドレスにおけるビット数D(A−2Cで表される整数)の下位ビット側に記憶しているデータと同じデータを、該任意のアドレスの次アドレスにおけるビット数Dの上位ビット側にも配置し、かつ、前記メモリに対して、前記アクセスアドレスを用いてアクセスして、該メモリに記憶されているデータを前記バッファレジスタにロードする第2の工程と、
    前記バッファレジスタから、前記参照済みデータ数Mと今回参照するデータ数N(1以上の整数)とを用いたデータシフト操作を行うことにより可変長復号化のために今回参照すべきデータを抜き出す第3の工程と、
    前記今回参照すべきデータの抜き出しに伴って、前記アドレスレジスタの下位ビット側の参照済みデータ数を、該参照済みデータ数Mに今回参照したデータ数Nを加算して該下位ビット側に格納する参照済みデータ数Mを更新するとともに、前記アドレスレジスタの上位ビット側に格納する前記アドレス値を、前記アドレスレジスタの下位ビット側の更新後の参照済みデータ数が桁上がりしないときはそのまま維持し、桁上がりするときはその桁上がりを用いて次のアドレス値に更新する第4の工程と、
    を備えることを特徴とする可変長復号化方法。
  11. 前記Aが、2×P(ただし、P=2C)であることを特徴とする請求項10に記載の可変長復号化方法。
  12. 前記Aが、3×P(ただし、P=2C)であることを特徴とする請求項10に記載の可変長復号化方法。
  13. 前記Aが、3/2×P(ただし、P=2C)であることを特徴とする請求項10に記載の可変長復号化方法。
  14. 前記Aが、4×P(ただし、P=2C)であることを特徴とする請求項10に記載の可変長復号化方法。
  15. 前記第3の工程は、前記バッファレジスタにおいて今回参照すべきデータを抜き出すに際して、前記参照済みデータをマスクしつつシフトすることを特徴とする請求項10ないし14のいずれか1項に記載の可変長復号化方法。
  16. ビット数A(2以上の整数)を1ワードとするデータを記憶するものでかつ任意のアドレスにおけるビット数D(A−2Cで表される整数)の下位ビット側に記憶しているデータと同じデータを該任意のアドレスの次アドレスにおけるビット数Dの上位ビット側にも記憶しているメモリと、前記メモリからロードしたデータを格納するビット幅B(A以上の整数)のバッファレジスタと、前記メモリへのアクセスアドレスの値(アドレス値)を上位ビット側に格納しかつ前記バッファレジスタで参照済みデータ数M(0以上の整数)をビット幅C(1以上の整数)の下位ビット側に格納するアドレスレジスタとを備える可変長復号化装置を用いて可変長復号する方法であって、
    前記メモリに対して、前記アドレスレジスタに格納したアクセスアドレスの値を用いてアクセスし、前記バッファレジスタにロードする第1の工程と、
    前記バッファレジスタから、前記バッファレジスタの下位ビット側に格納されている参照済みデータ数M(0以上の整数)と今回参照するデータ数N(1以上の整数)とを用いてデータシフト操作を行うことにより、可変長復号化のため前記参照すべきデータを抜き出す第2の工程と、
    EをA−Dの演算により得られる1以上の整数、F,Gを整数とし、(M+N)/Eの演算により得られる商をF,余りをGとして、前記参照すべきデータの抜き出しに伴う前記アドレスレジスタの上位ビット側に格納するアドレス値の更新を当該上位ビット側に前記商Fを加算することによって行い、また、前記アドレスレジスタの下位ビット側に格納する参照済みデータ数Mの更新を当該下位ビット側に前記余りGをセットすることにより行う第3の工程と、
    を含むことを特徴する可変長復号化方法。
  17. 前記Eが、H×2L(H、Lは1以上の整数)であることを特徴とする請求項16に記載の可変長復号化方法。
  18. 前記Hが、3であることを特徴とする請求項17に記載の可変長復号化方法。
  19. 請求項1ないし9のいずれか1項に記載の可変長復号化装置と、
    前記可変長復号化装置に可変長復号化されたデータを含むストリームを入力する入力手段と、
    前記可変長復号化装置により復号化されたデータを信号処理して再生する再生手段と、
    を具備したことを特徴とする再生システム。
JP2004244236A 2004-01-29 2004-08-24 可変長復号化装置および可変長復号化方法および再生システム Expired - Fee Related JP4484630B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004244236A JP4484630B2 (ja) 2004-01-29 2004-08-24 可変長復号化装置および可変長復号化方法および再生システム
US11/050,880 US7119722B2 (en) 2004-01-29 2005-01-27 Variable length decoding device and variable length decoding method and reproducing system
CNB2005100050478A CN100442670C (zh) 2004-01-29 2005-01-31 可变长度解码装置和可变长度解码方法以及再现系统

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004021268 2004-01-29
JP2004244236A JP4484630B2 (ja) 2004-01-29 2004-08-24 可変長復号化装置および可変長復号化方法および再生システム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010023259A Division JP2010119136A (ja) 2004-01-29 2010-02-04 メモリアクセス方法

Publications (3)

Publication Number Publication Date
JP2005244928A JP2005244928A (ja) 2005-09-08
JP2005244928A5 JP2005244928A5 (ja) 2007-10-11
JP4484630B2 true JP4484630B2 (ja) 2010-06-16

Family

ID=34810154

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004244236A Expired - Fee Related JP4484630B2 (ja) 2004-01-29 2004-08-24 可変長復号化装置および可変長復号化方法および再生システム

Country Status (3)

Country Link
US (1) US7119722B2 (ja)
JP (1) JP4484630B2 (ja)
CN (1) CN100442670C (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MXPA04000912A (es) * 2001-11-22 2004-04-02 Matsushita Electric Ind Co Ltd Metodo de codificacion de longitud variable y metodo de decodificacion de longitud variable.
US8749409B2 (en) * 2006-08-25 2014-06-10 Sony Computer Entertainment Inc. Entropy decoding methods and apparatus using most probable and least probable signal cases
US8171188B2 (en) * 2008-11-16 2012-05-01 Andes Technology Corporation Method of handling successive bitstream extraction and packing and related device
JP5375114B2 (ja) * 2009-01-16 2013-12-25 富士通株式会社 プロセッサ
FR2958429B1 (fr) * 2010-04-02 2012-11-30 Lead Tech Design Dispositif de traitement permettant d'extraire un ensemble de donnees d'un mot de donnees, circuit electronique et procede d'extraction de donnees correspondants
US20140068227A1 (en) * 2011-12-22 2014-03-06 Bret L. Toll Systems, apparatuses, and methods for extracting a writemask from a register
CN109041310B (zh) * 2017-06-12 2021-01-15 佛山市顺德区美的电热电器制造有限公司 电磁加热系统及其ppg信号的处理方法和装置
CN109992529B (zh) * 2018-01-03 2021-07-16 华为技术有限公司 虚拟地址确定方法及装置、处理器、存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5057837A (en) * 1987-04-20 1991-10-15 Digital Equipment Corporation Instruction storage method with a compressed format using a mask word
JP3008685B2 (ja) * 1992-08-03 2000-02-14 日本電気株式会社 可変長符号の復号化回路
FR2722041B1 (fr) * 1994-06-30 1998-01-02 Samsung Electronics Co Ltd Decodeur de huffman
JP3189876B2 (ja) * 1997-06-09 2001-07-16 日本電気株式会社 可変長符号復号化回路
US6246347B1 (en) * 1997-10-27 2001-06-12 Philips Electronics North America Corporation Controller for a variable length decoder
US5990812A (en) * 1997-10-27 1999-11-23 Philips Electronics North America Corporation Universally programmable variable length decoder
JP3570188B2 (ja) 1997-12-25 2004-09-29 富士通株式会社 可変長符号処理機構を有するデータ処理装置
US6667701B1 (en) * 2002-07-16 2003-12-23 Motorola, Inc. Variable length decoder

Also Published As

Publication number Publication date
JP2005244928A (ja) 2005-09-08
CN1649274A (zh) 2005-08-03
CN100442670C (zh) 2008-12-10
US20050168362A1 (en) 2005-08-04
US7119722B2 (en) 2006-10-10

Similar Documents

Publication Publication Date Title
JP4484630B2 (ja) 可変長復号化装置および可変長復号化方法および再生システム
US9684737B2 (en) Accessing an N-way linked list
US7600104B2 (en) Method and system for parallel vector data processing of vector data having a number of data elements including a defined first bit-length
JP3958224B2 (ja) 結果が分散される並列サブワード命令
US6263420B1 (en) Digital signal processor particularly suited for decoding digital audio
US20030033342A1 (en) Apparatus and method for uniformly performing comparison operations on long word operands
JPH04260930A (ja) データ処理装置
JP2669158B2 (ja) データ処理装置
JP4211751B2 (ja) 集積回路装置
JP4921310B2 (ja) 命令ビット長削減方法
JPH1049369A (ja) データ処理装置
JPH0546383A (ja) データ処理装置
JP3983482B2 (ja) 高速ディスプレースメント付きpc相対分岐方式
JP3779602B2 (ja) Simd演算方法およびsimd演算装置
US6253314B1 (en) Instruction set and executing method of the same by microcomputer
US20210165654A1 (en) Eliminating execution of instructions that produce a constant result
US7308553B2 (en) Processor device capable of cross-boundary alignment of plural register data and the method thereof
US9019135B2 (en) Efficient string hash computation
JP2010119136A (ja) メモリアクセス方法
US8452945B2 (en) Indirect indexing instructions
JP2009020695A (ja) 情報処理装置及びシステム
CN107480479A (zh) 应用程序的加固方法及装置、计算设备、计算机存储介质
JP2005244928A5 (ja)
US6144321A (en) Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images
JP3867804B2 (ja) 集積回路装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070824

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070824

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100223

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100323

R150 Certificate of patent or registration of utility model

Ref document number: 4484630

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130402

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140402

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees