JPH09326707A - 可変長符号復号化演算処理装置 - Google Patents
可変長符号復号化演算処理装置Info
- Publication number
- JPH09326707A JPH09326707A JP14257696A JP14257696A JPH09326707A JP H09326707 A JPH09326707 A JP H09326707A JP 14257696 A JP14257696 A JP 14257696A JP 14257696 A JP14257696 A JP 14257696A JP H09326707 A JPH09326707 A JP H09326707A
- Authority
- JP
- Japan
- Prior art keywords
- data
- length code
- bit
- instruction
- variable length
- 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.)
- Pending
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
(57)【要約】
【課題】音声や画像等の圧縮技術として利用される可変
長符号は、通常データを取り扱う際に用いる固定長符号
との相互変換を行うときに、処理系に大きな処理能力を
要し、汎用プログラマブル演算処理装置を用いる場合、
リアルタイム性が失われ、変換処理専用ハードウエアを
搭載する場合、コストアップとなり、処理の柔軟性が失
われる。 【解決手段】CPUに可変長符号を復号するための処理
回路を内蔵し、これを可変長符号復号命令で制御し駆動
することによって、可変長符号の処理を迅速に行う。可
変長符号復号命令の演算結果は、可変長符号復号用テー
ブルインデックスとして直接利用可能なビット形式で出
力する。
長符号は、通常データを取り扱う際に用いる固定長符号
との相互変換を行うときに、処理系に大きな処理能力を
要し、汎用プログラマブル演算処理装置を用いる場合、
リアルタイム性が失われ、変換処理専用ハードウエアを
搭載する場合、コストアップとなり、処理の柔軟性が失
われる。 【解決手段】CPUに可変長符号を復号するための処理
回路を内蔵し、これを可変長符号復号命令で制御し駆動
することによって、可変長符号の処理を迅速に行う。可
変長符号復号命令の演算結果は、可変長符号復号用テー
ブルインデックスとして直接利用可能なビット形式で出
力する。
Description
【0001】
【発明の属する技術分野】本発明はプログラム可能な演
算処理装置、特にマイクロプロセッサのような汎用の演
算処理装置に関する。
算処理装置、特にマイクロプロセッサのような汎用の演
算処理装置に関する。
【0002】
【従来の技術】コンピュータによりマルチメディア情報
を扱う場合、圧縮された音声や画像の情報を扱うことが
不可欠である。現在では、音声画像情報の圧縮手法に、
ハフマン符号などの可変長符号(バリアブル・レングス
・コード、以下VLCと略す)が広く用いられている。
VLC演算処理は、ハフマン符号化等によって可変長符
号化された情報を、元の固定長符号に逆変換する際に用
いる処理である。例示すると圧縮された動画像の再生処
理が代表的な例である。例えば、MPEGやJPEGな
どの標準は、この可変長符号を用いて情報圧縮を実現し
ている。
を扱う場合、圧縮された音声や画像の情報を扱うことが
不可欠である。現在では、音声画像情報の圧縮手法に、
ハフマン符号などの可変長符号(バリアブル・レングス
・コード、以下VLCと略す)が広く用いられている。
VLC演算処理は、ハフマン符号化等によって可変長符
号化された情報を、元の固定長符号に逆変換する際に用
いる処理である。例示すると圧縮された動画像の再生処
理が代表的な例である。例えば、MPEGやJPEGな
どの標準は、この可変長符号を用いて情報圧縮を実現し
ている。
【0003】これらの手法により圧縮された情報を、元
の情報に展開する際には、初めに可変長符号から固定長
符号に変換する必要がある。
の情報に展開する際には、初めに可変長符号から固定長
符号に変換する必要がある。
【0004】この変換処理を行う回路は、音声画像情報
を展開するための専用回路として既に知られている。例
えば、特開平4−133522号公報に記載されている
方法がある。
を展開するための専用回路として既に知られている。例
えば、特開平4−133522号公報に記載されている
方法がある。
【0005】このようなVLC処理回路は、音声画像情
報を展開するための専用チップに搭載されることが多
い。例えば、MPEGデコード処理専用チップには、通
常VLC処理回路が搭載されている。
報を展開するための専用チップに搭載されることが多
い。例えば、MPEGデコード処理専用チップには、通
常VLC処理回路が搭載されている。
【0006】ところで、VLC処理を専用のチップでは
なく、汎用のプログラマブル演算処理装置によって処理
したいという要求がある。これは主に、低コスト化のた
めや、処理の柔軟性を考慮するためである。例えば、汎
用のコンピュータに搭載されている汎用のプロセッサに
よって、MPEGデコード処理を行うといった要求があ
る。
なく、汎用のプログラマブル演算処理装置によって処理
したいという要求がある。これは主に、低コスト化のた
めや、処理の柔軟性を考慮するためである。例えば、汎
用のコンピュータに搭載されている汎用のプロセッサに
よって、MPEGデコード処理を行うといった要求があ
る。
【0007】汎用プログラマブル演算処理装置(以下、
CPUと略す)でVLC処理を行う場合、CPUに対す
る命令語を複数組み合わせることで処理を実現する必要
がある。
CPUと略す)でVLC処理を行う場合、CPUに対す
る命令語を複数組み合わせることで処理を実現する必要
がある。
【0008】例えば、『インターフェース』誌(CQ出
版社)1993年3月号「動画圧縮技術の最新情報レポ
ート」に記載されている米国カリフォルニア大学バーク
レイ校のMPEGデコードソフトウエアは、図13に示
すような次の手順で処理を行っている。但し、説明の簡
単のため、図13では手順を簡略化して示してある。
版社)1993年3月号「動画圧縮技術の最新情報レポ
ート」に記載されている米国カリフォルニア大学バーク
レイ校のMPEGデコードソフトウエアは、図13に示
すような次の手順で処理を行っている。但し、説明の簡
単のため、図13では手順を簡略化して示してある。
【0009】図13に示すように、初めにCPUが可変
長符号列を受け取る。CPUは、先頭の8ビット分のデ
ータを取り出し、この情報を元にメモリアドレス情報を
生成し、メモリ素子をリードアクセスすることで256
エントリのテーブル参照を行い、所望の固定長符号を得
る。
長符号列を受け取る。CPUは、先頭の8ビット分のデ
ータを取り出し、この情報を元にメモリアドレス情報を
生成し、メモリ素子をリードアクセスすることで256
エントリのテーブル参照を行い、所望の固定長符号を得
る。
【0010】但し、初めに取りだした8ビット分のデー
タに、必要な情報が充分に含まれていない場合には、後
に続く2ビットまたは4ビットないしは8ビット分のデ
ータを更に連結して、先ほどとは別のテーブル参照を行
うことで、所望の固定長符号を得る。
タに、必要な情報が充分に含まれていない場合には、後
に続く2ビットまたは4ビットないしは8ビット分のデ
ータを更に連結して、先ほどとは別のテーブル参照を行
うことで、所望の固定長符号を得る。
【0011】これに続けて、次の情報を取り出すため
に、CPUは、先ほどテーブル参照によって取り出した
情報に基づいて、元の可変長符号列に対して任意長のシ
フト処理を施す。
に、CPUは、先ほどテーブル参照によって取り出した
情報に基づいて、元の可変長符号列に対して任意長のシ
フト処理を施す。
【0012】また、例えば、特開昭61−230525
号公報に記載されている方法でも、上述の方法と基本的
に同様の処理を行うことで、可変長符号の固定長符号化
処理を行っている。
号公報に記載されている方法でも、上述の方法と基本的
に同様の処理を行うことで、可変長符号の固定長符号化
処理を行っている。
【0013】しかし、以上述べたような従来技術には、
以下に示すような課題があった。
以下に示すような課題があった。
【0014】
【発明が解決しようとする課題】上述した従来技術によ
れば、CPUによってVLC処理を行うためには、大き
なテーブルが複数個必要になるうえ、CPUが1処理毎
に数十ステップ程度のループ状のコードを処理する必要
がある。さらに、概ループ状のコードには条件分岐命令
が多く含まれるため、CPUのパイプライン動作を乱す
要因となる。
れば、CPUによってVLC処理を行うためには、大き
なテーブルが複数個必要になるうえ、CPUが1処理毎
に数十ステップ程度のループ状のコードを処理する必要
がある。さらに、概ループ状のコードには条件分岐命令
が多く含まれるため、CPUのパイプライン動作を乱す
要因となる。
【0015】これらの理由によって、可変長符号の固定
長符号化処理は、その前後に連なる関連した別の処理と
比較して、処理に時間がかかる。その結果、概処理が律
速となって全体の処理性能が低下する。VLCを用いる
処理の中には、リアルタイム性を要求されるアプリケー
ションが多く含まれるため、全体のパフォーマンスが下
がってしまうという問題があった。
長符号化処理は、その前後に連なる関連した別の処理と
比較して、処理に時間がかかる。その結果、概処理が律
速となって全体の処理性能が低下する。VLCを用いる
処理の中には、リアルタイム性を要求されるアプリケー
ションが多く含まれるため、全体のパフォーマンスが下
がってしまうという問題があった。
【0016】
【課題を解決するための手段】上記課題は、CPUを、
外部との情報の入出力を行う入出力制御部と、演算デー
タを一時的に保持するデータレジスタと、命令語を一時
的に保持する複数個の命令レジスタと、外部から与えら
れる複数群の命令語を選別して複数の命令レジスタにそ
れぞれ格納する命令制御部と、数値演算と論理演算を行
う数値論理演算部と、可変長符号復号処理部とを持ち、
第一群の命令語は第一の命令レジスタに格納され、第二
群の命令語は第二の命令レジスタに格納され、前記第一
の命令レジスタは前記数値論理演算部を駆動する信号を
出力し、前記第二の命令レジスタは前記可変長符号復号
処理部を駆動する信号を出力することを特徴とするプロ
グラム可能な演算処理装置とすることで解決される。
外部との情報の入出力を行う入出力制御部と、演算デー
タを一時的に保持するデータレジスタと、命令語を一時
的に保持する複数個の命令レジスタと、外部から与えら
れる複数群の命令語を選別して複数の命令レジスタにそ
れぞれ格納する命令制御部と、数値演算と論理演算を行
う数値論理演算部と、可変長符号復号処理部とを持ち、
第一群の命令語は第一の命令レジスタに格納され、第二
群の命令語は第二の命令レジスタに格納され、前記第一
の命令レジスタは前記数値論理演算部を駆動する信号を
出力し、前記第二の命令レジスタは前記可変長符号復号
処理部を駆動する信号を出力することを特徴とするプロ
グラム可能な演算処理装置とすることで解決される。
【0017】
【発明の実施の形態】以下、本発明の詳細について、図
面を用いて説明する。
面を用いて説明する。
【0018】図1に本発明の一実施例のブロック図を示
す。図1で、1はCPU、2はバス、101は入出力制
御部、102はデータレジスタ、103は数値論理演算
部(以下、ALUと略す)、104は可変長符号復号処
理部(以下、VLCUと略す)、105は命令制御部、
106はALU用の命令レジスタ、107はVLCU用
の命令レジスタ、111はデータレジスタのロードスト
ア用の命令レジスタである。
す。図1で、1はCPU、2はバス、101は入出力制
御部、102はデータレジスタ、103は数値論理演算
部(以下、ALUと略す)、104は可変長符号復号処
理部(以下、VLCUと略す)、105は命令制御部、
106はALU用の命令レジスタ、107はVLCU用
の命令レジスタ、111はデータレジスタのロードスト
ア用の命令レジスタである。
【0019】また、図2は本発明の一実施例の装置全体
のブロック図である。図2で、3は記憶装置、4は入出
力装置である。CPU1の内部構成は、図1に示した内
部構成を想定している。記憶装置3は、その内部に、C
PU1を動作させるための命令コードや、CPU1で処
理するための演算データを、記憶している。命令コード
や演算データは、入出力装置4を経由して、外部から記
憶装置3へ書き込まれ、また演算した結果データの一部
は、同様に入出力装置4を経由して外部に出力される。
のブロック図である。図2で、3は記憶装置、4は入出
力装置である。CPU1の内部構成は、図1に示した内
部構成を想定している。記憶装置3は、その内部に、C
PU1を動作させるための命令コードや、CPU1で処
理するための演算データを、記憶している。命令コード
や演算データは、入出力装置4を経由して、外部から記
憶装置3へ書き込まれ、また演算した結果データの一部
は、同様に入出力装置4を経由して外部に出力される。
【0020】次に図1と図2を用いて、実施例の動作に
ついて説明する。
ついて説明する。
【0021】命令制御部105が記憶装置3から命令コ
ードを取り出し、それがデータロードに関わる命令語で
あることを検出すると、概命令語を命令レジスタ111
に書き込む。命令レジスタ111は概命令語を書き込ま
れると、データレジスタ102を制御して、記憶装置3
に格納されているデータを、入出力制御部101を経由
して、データレジスタ102に書き込む。
ードを取り出し、それがデータロードに関わる命令語で
あることを検出すると、概命令語を命令レジスタ111
に書き込む。命令レジスタ111は概命令語を書き込ま
れると、データレジスタ102を制御して、記憶装置3
に格納されているデータを、入出力制御部101を経由
して、データレジスタ102に書き込む。
【0022】以上の動作によって、演算に必要なデータ
が、データレジスタ102に格納される。
が、データレジスタ102に格納される。
【0023】また、命令制御部105が記憶装置3から
命令コードを取り出し、それが数値演算や論理演算に関
わる命令語であることを検出すると、概命令語を命令レ
ジスタ106に書き込む。命令レジスタ106は概命令
語を書き込まれると、データレジスタ102を制御して
演算に必要なデータを取り出し、また、ALU103を
制御して概データを元に演算処理を実行し、再びデータ
レジスタ102を制御して演算結果のデータをデータレ
ジスタ102に格納する。
命令コードを取り出し、それが数値演算や論理演算に関
わる命令語であることを検出すると、概命令語を命令レ
ジスタ106に書き込む。命令レジスタ106は概命令
語を書き込まれると、データレジスタ102を制御して
演算に必要なデータを取り出し、また、ALU103を
制御して概データを元に演算処理を実行し、再びデータ
レジスタ102を制御して演算結果のデータをデータレ
ジスタ102に格納する。
【0024】以上の動作によって、数値演算処理または
論理演算処理が実行され、演算結果はデータレジスタ1
02に格納される。
論理演算処理が実行され、演算結果はデータレジスタ1
02に格納される。
【0025】また、命令制御部105が記憶装置3から
命令コードを取り出し、それが可変長符号復号処理に関
わる命令語であることを検出すると、概命令語を命令レ
ジスタ107に書き込む。命令レジスタ107は概命令
語を書き込まれると、データレジスタ102を制御して
可変長符号復号処理に必要なデータを取り出し、また、
VLCU104を制御して概データを元に可変長符号復
号処理を実行し、再びデータレジスタ102を制御して
処理結果のデータをデータレジスタ102に格納する。
命令コードを取り出し、それが可変長符号復号処理に関
わる命令語であることを検出すると、概命令語を命令レ
ジスタ107に書き込む。命令レジスタ107は概命令
語を書き込まれると、データレジスタ102を制御して
可変長符号復号処理に必要なデータを取り出し、また、
VLCU104を制御して概データを元に可変長符号復
号処理を実行し、再びデータレジスタ102を制御して
処理結果のデータをデータレジスタ102に格納する。
【0026】以上の動作によって、可変長符号復号処理
が実行され、処理結果はデータレジスタ102に格納さ
れる。
が実行され、処理結果はデータレジスタ102に格納さ
れる。
【0027】また、命令制御部105が記憶装置3から
命令コードを取り出し、それがデータストアに関わる命
令語であることを検出すると、概命令語を命令レジスタ
111に書き込む。命令レジスタ111は概命令語を書
き込まれると、データレジスタ102を制御して、デー
タレジスタ102に格納されているデータを、入出力制
御部101を経由して、記憶装置3に書き込む。
命令コードを取り出し、それがデータストアに関わる命
令語であることを検出すると、概命令語を命令レジスタ
111に書き込む。命令レジスタ111は概命令語を書
き込まれると、データレジスタ102を制御して、デー
タレジスタ102に格納されているデータを、入出力制
御部101を経由して、記憶装置3に書き込む。
【0028】以上の動作によって、演算処理結果のデー
タが、記憶装置3に格納される。
タが、記憶装置3に格納される。
【0029】比較のため、図3に従来技術を用いた従来
例のブロック図を示す。
例のブロック図を示す。
【0030】図3に示した従来例の動作は、図1に示し
た実施例の動作と比較すると、演算処理を全てALU1
03によって処理する点が異なる。この相違点につい
て、次に詳しく説明する。
た実施例の動作と比較すると、演算処理を全てALU1
03によって処理する点が異なる。この相違点につい
て、次に詳しく説明する。
【0031】図4は、図3に示した従来例によって可変
長符号の固定長変換処理を行う場合の、処理の流れを示
している。この処理の流れは、前出の米国カリフォルニ
ア大学バークレイ校のMPEGデコードソフトウエアで
実現されているものである。概処理は大きく3段階に分
かれている。
長符号の固定長変換処理を行う場合の、処理の流れを示
している。この処理の流れは、前出の米国カリフォルニ
ア大学バークレイ校のMPEGデコードソフトウエアで
実現されているものである。概処理は大きく3段階に分
かれている。
【0032】第一段階401は、レジスタセットに格納
されている元データを、テーブル参照のためにインデッ
クス値に変換する処理を行う。第一段階の処理には、最
大3回の数値比較処理と、任意ビット長の右シフト処理
とが含まれる。
されている元データを、テーブル参照のためにインデッ
クス値に変換する処理を行う。第一段階の処理には、最
大3回の数値比較処理と、任意ビット長の右シフト処理
とが含まれる。
【0033】第二段階402の処理は、可変長符号を固
定長符号に変換するために用意されているテーブルを、
第一段階の処理で生成したインデックス値を用いて参照
する処理を行う。この処理には、配列要素へのアクセス
処理、即ち、メモリアドレス生成及びメモリリード処理
が含まれる。
定長符号に変換するために用意されているテーブルを、
第一段階の処理で生成したインデックス値を用いて参照
する処理を行う。この処理には、配列要素へのアクセス
処理、即ち、メモリアドレス生成及びメモリリード処理
が含まれる。
【0034】第三段階403の処理は、402でテーブ
ル参照したデータの一部を用いて、元データの一部を取
り除き、新たに別のデータをつけ加える処理を行う。こ
の処理には、任意ビット長の左シフト、数値比較、固定
ビット長のシフトとデータコピー、及び任意ビット長の
右シフトとが含まれる。
ル参照したデータの一部を用いて、元データの一部を取
り除き、新たに別のデータをつけ加える処理を行う。こ
の処理には、任意ビット長の左シフト、数値比較、固定
ビット長のシフトとデータコピー、及び任意ビット長の
右シフトとが含まれる。
【0035】実際の処理では、ここに示した処理を、固
定長データを一つ取り出すごとに1回の割合で繰り返し
処理する必要がある。即ち、概処理を1回行うだけに必
要な最大時間が、固定長データを処理する最大速度を決
定することになる。
定長データを一つ取り出すごとに1回の割合で繰り返し
処理する必要がある。即ち、概処理を1回行うだけに必
要な最大時間が、固定長データを処理する最大速度を決
定することになる。
【0036】ここで仮に、図4に実線の長方形で示した
各処理単位について、実際の処理に1クロックの時間を
要するものと仮定する。この仮定によれば、この処理に
は最大10クロックを要することになる。
各処理単位について、実際の処理に1クロックの時間を
要するものと仮定する。この仮定によれば、この処理に
は最大10クロックを要することになる。
【0037】次に、図5は、図1に示した実施例によっ
て可変長符号の固定長変換処理を行う場合の、処理の流
れを示している。
て可変長符号の固定長変換処理を行う場合の、処理の流
れを示している。
【0038】前記の例と同じように、概処理は大きく3
段階に分かれている。
段階に分かれている。
【0039】第一段階411は、レジスタセットに格納
されている元データを、テーブル参照のためにインデッ
クス値に変換する処理を行う。この実施例では、VLC
UによってVLC演算を処理し、その結果を直接インデ
ックス値として用いることができる。このため図4で、
数値比較処理やビットシフト処理などに要していたステ
ップは省略できる。
されている元データを、テーブル参照のためにインデッ
クス値に変換する処理を行う。この実施例では、VLC
UによってVLC演算を処理し、その結果を直接インデ
ックス値として用いることができる。このため図4で、
数値比較処理やビットシフト処理などに要していたステ
ップは省略できる。
【0040】第二段階412の処理は、可変長符号を固
定長符号に変換するために用意されているテーブルを、
411で生成したインデックス値を用いて参照する処理
を行う。前記の例と同じように、この処理には、配列要
素へのアクセス処理、即ち、メモリアドレス生成及びメ
モリリード処理が含まれる。
定長符号に変換するために用意されているテーブルを、
411で生成したインデックス値を用いて参照する処理
を行う。前記の例と同じように、この処理には、配列要
素へのアクセス処理、即ち、メモリアドレス生成及びメ
モリリード処理が含まれる。
【0041】第三段階413の処理は、テーブル参照し
たデータの一部を用いて、元データの一部を取り除き、
新たに別のデータをつけ加える処理を行う。第一段階を
VLCUによって処理する場合、従来例とは異なり、第
三段階の処理でビット単位のシフトを行う必要がない。
このため、第三段階の処理には、オフセット値の算術減
算と算術加算、数値比較、固定長データのコピーが含ま
れる。
たデータの一部を用いて、元データの一部を取り除き、
新たに別のデータをつけ加える処理を行う。第一段階を
VLCUによって処理する場合、従来例とは異なり、第
三段階の処理でビット単位のシフトを行う必要がない。
このため、第三段階の処理には、オフセット値の算術減
算と算術加算、数値比較、固定長データのコピーが含ま
れる。
【0042】従来例と同じように、実際の処理では、こ
こに示した処理を、固定長データを一つ取り出すごとに
1回の割合で繰り返し処理する必要がある。
こに示した処理を、固定長データを一つ取り出すごとに
1回の割合で繰り返し処理する必要がある。
【0043】ここで従来例と同様、図5に実線の長方形
で示した各処理単位について、実際の処理に1クロック
の時間を要するものと仮定する。この仮定によれば、こ
の処理は最大6クロックで実行可能である。
で示した各処理単位について、実際の処理に1クロック
の時間を要するものと仮定する。この仮定によれば、こ
の処理は最大6クロックで実行可能である。
【0044】次に図6は、実施例に示したCPUを動作
させるための命令語の例を示している。ここに例示して
いるのは、5オペランドのVLC命令である。オペラン
ドのうち、三つは入力データを、二つが出力データを示
す。
させるための命令語の例を示している。ここに例示して
いるのは、5オペランドのVLC命令である。オペラン
ドのうち、三つは入力データを、二つが出力データを示
す。
【0045】図6で、300は5オペランドVLC命令
書式、301は可変長符号列が格納されているソースデ
ータ、302はソースデータの走査を開始するビット位
置を示すオフセットデータ、303はソースデータから
取り出す最大ビット幅を示すビット幅データ、304は
テーブル参照のためのインデックス値を出力するパター
ンデータ、305は走査を行って読み飛ばしを行ったビ
ットの数を示す走査長データ、をそれぞれ示す。
書式、301は可変長符号列が格納されているソースデ
ータ、302はソースデータの走査を開始するビット位
置を示すオフセットデータ、303はソースデータから
取り出す最大ビット幅を示すビット幅データ、304は
テーブル参照のためのインデックス値を出力するパター
ンデータ、305は走査を行って読み飛ばしを行ったビ
ットの数を示す走査長データ、をそれぞれ示す。
【0046】301、302、303に適切な入力デー
タをセットしてVLC命令を呼び出すことによって、3
04、305の出力データを得ることができる。
タをセットしてVLC命令を呼び出すことによって、3
04、305の出力データを得ることができる。
【0047】次に図7は、図6に示した命令コードを実
行する際の、動作の一例を示している。ここでは図7に
示すようなデータ値が、各オペランドに与えられている
ものとする。
行する際の、動作の一例を示している。ここでは図7に
示すようなデータ値が、各オペランドに与えられている
ものとする。
【0048】初めに、オフセットデータ302に値“1
7”が格納されているため、ソースデータ301の最上
位ビットから、即ち最左端から17ビット分のデータは
読み飛ばされて無視される。
7”が格納されているため、ソースデータ301の最上
位ビットから、即ち最左端から17ビット分のデータは
読み飛ばされて無視される。
【0049】続いて、18ビット目から下位ビットに向
かって、即ち右方向に向かってビット走査を行い、最初
に非ゼロ値を発見した26ビット目で走査を停止する。
この走査の際には、何ビット分の走査を行ったかをカウ
ンタ等によって計測しながら行う。
かって、即ち右方向に向かってビット走査を行い、最初
に非ゼロ値を発見した26ビット目で走査を停止する。
この走査の際には、何ビット分の走査を行ったかをカウ
ンタ等によって計測しながら行う。
【0050】次に、ビット幅データ303には値“6”
が格納されているため、26ビット目から6ビット分の
データを、パターンデータ304として出力する。同時
に、先に走査の際にカウントしていた値を走査長データ
305として出力する。この例の場合は、パターンデー
タ304にはビット列“100101”を、走査長デー
タ305には値“8”を、それぞれ出力する。
が格納されているため、26ビット目から6ビット分の
データを、パターンデータ304として出力する。同時
に、先に走査の際にカウントしていた値を走査長データ
305として出力する。この例の場合は、パターンデー
タ304にはビット列“100101”を、走査長デー
タ305には値“8”を、それぞれ出力する。
【0051】次に図8は、上記実施例に示したCPUを
動作させるための命令語の別の例を示している。ここに
例示しているのは、3オペランドのVLC命令である。
オペランドのうち、二つは入力データを、一つが出力デ
ータを示す。3オペランド命令は、先に示した5オペラ
ンド命令よりも、一般に簡単なハードウエアで実現でき
るという特徴がある。
動作させるための命令語の別の例を示している。ここに
例示しているのは、3オペランドのVLC命令である。
オペランドのうち、二つは入力データを、一つが出力デ
ータを示す。3オペランド命令は、先に示した5オペラ
ンド命令よりも、一般に簡単なハードウエアで実現でき
るという特徴がある。
【0052】図8で、310は3オペランドVLC命令
書式、311は可変長符号列が格納されているソースデ
ータ1、312はソースデータ1の走査を開始するビッ
ト位置を示すオフセットデータ3121と、ソースデー
タ1から取り出す最大ビット幅を示すビット幅データ3
122とを含むソースデータ2、313はテーブル参照
のためのインデックス値を出力するパターンデータ31
31と、走査を行って読み飛ばしを行ったビットの数を
示す走査長データ3132とを含むディスティネーショ
ンデータ、をそれぞれ示す。
書式、311は可変長符号列が格納されているソースデ
ータ1、312はソースデータ1の走査を開始するビッ
ト位置を示すオフセットデータ3121と、ソースデー
タ1から取り出す最大ビット幅を示すビット幅データ3
122とを含むソースデータ2、313はテーブル参照
のためのインデックス値を出力するパターンデータ31
31と、走査を行って読み飛ばしを行ったビットの数を
示す走査長データ3132とを含むディスティネーショ
ンデータ、をそれぞれ示す。
【0053】311、312に適切な入力データをセッ
トしてVLC_Zero命令を呼び出すことによって、
313の出力データを得ることができる。
トしてVLC_Zero命令を呼び出すことによって、
313の出力データを得ることができる。
【0054】なお、ここでは命令語をVLC_Zero
として記載しているが、これを例えばVLC_Oneと
することで、非ゼロ値の走査ではなく、ゼロ値の走査を
行うようにすることも可能である。この機能は多様な可
変長符号に対応するために有用であり、後に述べるVL
CUの内部構成には、非ゼロ値を走査する機能と、ゼロ
値を走査する機能の両方を兼ね備える構成を記載してあ
る。
として記載しているが、これを例えばVLC_Oneと
することで、非ゼロ値の走査ではなく、ゼロ値の走査を
行うようにすることも可能である。この機能は多様な可
変長符号に対応するために有用であり、後に述べるVL
CUの内部構成には、非ゼロ値を走査する機能と、ゼロ
値を走査する機能の両方を兼ね備える構成を記載してあ
る。
【0055】次に図9は、図8に示した命令コードを実
行する際の、動作の一例を示している。ここでは図9に
示すようなデータ値が、各オペランドに与えられている
ものとする。
行する際の、動作の一例を示している。ここでは図9に
示すようなデータ値が、各オペランドに与えられている
ものとする。
【0056】初めに、オフセットデータ3121に値
“17”が格納されているため、ソースデータ311の
最上位ビット、即ち最左端から17ビット分のデータは
読み飛ばされて無視される。
“17”が格納されているため、ソースデータ311の
最上位ビット、即ち最左端から17ビット分のデータは
読み飛ばされて無視される。
【0057】続いて、18ビット目から下位ビットに向
かって、即ち右方向に向かってビット走査を行い、最初
に非ゼロ値を発見した26ビット目で走査を停止する。
この走査の際には、何ビット分の走査を行ったかをカウ
ンタ等によって計測しながら行う。
かって、即ち右方向に向かってビット走査を行い、最初
に非ゼロ値を発見した26ビット目で走査を停止する。
この走査の際には、何ビット分の走査を行ったかをカウ
ンタ等によって計測しながら行う。
【0058】次に、26ビット目はそのまま1ビットだ
けスキップして読み飛ばす。26ビット目を1ビットだ
けスキップするのは、このビットが常に1値を示すこと
が明らかであるため、パターンデータとして出力しても
情報量を持たないためである。
けスキップして読み飛ばす。26ビット目を1ビットだ
けスキップするのは、このビットが常に1値を示すこと
が明らかであるため、パターンデータとして出力しても
情報量を持たないためである。
【0059】次に、ビット幅データ3122には値
“6”が格納されているため、27ビット目から6ビッ
ト分のデータを、パターンデータ3132として出力す
る。同時に、先に走査の際にカウントしていた値を走査
長データ3131として出力する。この例の場合は、パ
ターンデータ3132としてはビット列“00101
1”が、走査長データ3131としては値“8”を出力
する。この二つの値を混合して、ディスティネーション
データ313として出力する。
“6”が格納されているため、27ビット目から6ビッ
ト分のデータを、パターンデータ3132として出力す
る。同時に、先に走査の際にカウントしていた値を走査
長データ3131として出力する。この例の場合は、パ
ターンデータ3132としてはビット列“00101
1”が、走査長データ3131としては値“8”を出力
する。この二つの値を混合して、ディスティネーション
データ313として出力する。
【0060】なお、以上述べた実施例では、命令語とし
て“VLC”や“VLC_Zero”といった名称を用
いたが、これはもちろん一例であり、名称は任意のもの
で構わない。また、5オペランドVLC命令と、3オペ
ランドVLC命令とを例示したが、これらももちろん一
例であり、同等の機能を実現するものであれば、オペラ
ンドの数に依存するものではない。
て“VLC”や“VLC_Zero”といった名称を用
いたが、これはもちろん一例であり、名称は任意のもの
で構わない。また、5オペランドVLC命令と、3オペ
ランドVLC命令とを例示したが、これらももちろん一
例であり、同等の機能を実現するものであれば、オペラ
ンドの数に依存するものではない。
【0061】次に図10は、図1に示したVLCU10
4の内部構成の概要を示している。図10で、201は
ビット反転手段、202は任意長のビットマスク手段、
203はビット列から非ゼロ値を走査する非ゼロ値走査
手段、204は数値をデコードするデコード手段、20
5は走査結果を数値に変換するエンコード手段、206
は減算手段、207は加算手段、208は任意ビット長
の左シフト手段、209は任意ビット長の右シフト手
段、210はビット単位での混合を行うマージ手段、2
20はソースデータ入力部、221はオフセットデータ
入力部、222はビット幅データ入力部、223は演算
結果出力部である。
4の内部構成の概要を示している。図10で、201は
ビット反転手段、202は任意長のビットマスク手段、
203はビット列から非ゼロ値を走査する非ゼロ値走査
手段、204は数値をデコードするデコード手段、20
5は走査結果を数値に変換するエンコード手段、206
は減算手段、207は加算手段、208は任意ビット長
の左シフト手段、209は任意ビット長の右シフト手
段、210はビット単位での混合を行うマージ手段、2
20はソースデータ入力部、221はオフセットデータ
入力部、222はビット幅データ入力部、223は演算
結果出力部である。
【0062】続いてVLCUの動作について説明する。
本実施例では、図10に示すVLCUによって、図8及
び図9に示したVLC命令コードを実行するものとして
記述する。
本実施例では、図10に示すVLCUによって、図8及
び図9に示したVLC命令コードを実行するものとして
記述する。
【0063】初めに、311のソースデータ1をソース
データ入力部220に、ソースデータ1の走査を開始す
るビット位置を示すオフセットデータ3121をオフセ
ットデータ入力部221に、ソースデータ1から取り出
す最大ビット幅を示すビット幅データ3122をビット
幅データ入力部222に、それぞれ入力する。
データ入力部220に、ソースデータ1の走査を開始す
るビット位置を示すオフセットデータ3121をオフセ
ットデータ入力部221に、ソースデータ1から取り出
す最大ビット幅を示すビット幅データ3122をビット
幅データ入力部222に、それぞれ入力する。
【0064】ソースデータ1は、ビット反転手段201
で、非ゼロ走査の場合はそのまま透過伝達し、ゼロ走査
の場合はビット反転処理を行う。
で、非ゼロ走査の場合はそのまま透過伝達し、ゼロ走査
の場合はビット反転処理を行う。
【0065】続いて、オフセットすべきデータビット列
をマスクする処理を行う。入力されたオフセットデータ
3121をデコード手段204によってデコードし、マ
スクパターンを生成する。例えば、オフセットデータと
して“17”を入力された場合は、最上位から17ビッ
トだけ“0”を、残りのビット位置には“1”をセット
したマスクパターンデータを生成する。このパターンデ
ータを利用して、ビットマクス手段202で、ソースデ
ータのうち不要な部分のマスク処理を行う。
をマスクする処理を行う。入力されたオフセットデータ
3121をデコード手段204によってデコードし、マ
スクパターンを生成する。例えば、オフセットデータと
して“17”を入力された場合は、最上位から17ビッ
トだけ“0”を、残りのビット位置には“1”をセット
したマスクパターンデータを生成する。このパターンデ
ータを利用して、ビットマクス手段202で、ソースデ
ータのうち不要な部分のマスク処理を行う。
【0066】次に非ゼロ値走査手段203では、マスク
処理の結果として得られたビット列データを、最上位ビ
ットから非ゼロ走査を行い、非ゼロ値が現れるビット位
置を検出する。ここで得られたビット位置情報はエンコ
ード手段205によってエンコードされ、走査結果とし
て後段の加算器207と減算器206とに送られる。
処理の結果として得られたビット列データを、最上位ビ
ットから非ゼロ走査を行い、非ゼロ値が現れるビット位
置を検出する。ここで得られたビット位置情報はエンコ
ード手段205によってエンコードされ、走査結果とし
て後段の加算器207と減算器206とに送られる。
【0067】減算器206は、上記の走査結果の値か
ら、オフセットデータ3121の値を減ずる。この減算
により、実際に走査したビット幅の値を得る。
ら、オフセットデータ3121の値を減ずる。この減算
により、実際に走査したビット幅の値を得る。
【0068】左シフト手段208は、この減算結果を受
け取り、ビット幅データ3122の値だけの左シフトを
行う。この左シフトにより、減算結果、即ち、走査した
ビット幅データのビット位置が適切な位置に調整され
る。
け取り、ビット幅データ3122の値だけの左シフトを
行う。この左シフトにより、減算結果、即ち、走査した
ビット幅データのビット位置が適切な位置に調整され
る。
【0069】加算器207は、上記の走査結果と、ビッ
ト幅データ3122とを加算する。この結果を右シフト
手段209にシフト量として送り、ソースデータ1を右
シフトする。この右シフトにより、テーブルインデック
ス用としてのパターンデータの最下位ビットの位置が適
切に調整される。
ト幅データ3122とを加算する。この結果を右シフト
手段209にシフト量として送り、ソースデータ1を右
シフトする。この右シフトにより、テーブルインデック
ス用としてのパターンデータの最下位ビットの位置が適
切に調整される。
【0070】最後にマージ手段210で、左シフト手段
208と、右シフト手段209とからそれぞれ出力され
るデータの論理和をとり、演算結果出力部223から出
力する。
208と、右シフト手段209とからそれぞれ出力され
るデータの論理和をとり、演算結果出力部223から出
力する。
【0071】以上説明したような動作を行うVLCUを
図1に示すごとくCPU内部に構築することで、図8及
び図9に示すVLC命令の処理を実現する。
図1に示すごとくCPU内部に構築することで、図8及
び図9に示すVLC命令の処理を実現する。
【0072】また、上記述べたVLCUの構成は、必ず
しも上述した構成と全く同じである必要はなく、同等の
動作を行うに充分な構成を有していればよい。
しも上述した構成と全く同じである必要はなく、同等の
動作を行うに充分な構成を有していればよい。
【0073】例えば、ビット反転手段201、ビットマ
スク手段202、非零値走査手段203に相当する機能
を、別の構成要素に置き換えることができる。この場合
の例を、図11に示す。図11で、202と、231は
任意長のビットマスク手段、203はビット列から非ゼ
ロ値を走査する非ゼロ値走査手段、232はビット列か
らゼロ値を走査するゼロ値走査手段、204は数値をデ
コードするデコード手段、205と233は走査結果を
数値変換するエンコード手段、234は二つの走査結果
の片方を選択するための選択手段、206は減算手段、
207は加算手段、208は任意ビット長の左シフト手
段、209は任意ビット長の右シフト手段、210はビ
ット単位での混合を行うマージ手段、220はソースデ
ータ入力部、221はオフセットデータ入力部、222
はビット幅データ入力部、223は演算結果出力部であ
る。
スク手段202、非零値走査手段203に相当する機能
を、別の構成要素に置き換えることができる。この場合
の例を、図11に示す。図11で、202と、231は
任意長のビットマスク手段、203はビット列から非ゼ
ロ値を走査する非ゼロ値走査手段、232はビット列か
らゼロ値を走査するゼロ値走査手段、204は数値をデ
コードするデコード手段、205と233は走査結果を
数値変換するエンコード手段、234は二つの走査結果
の片方を選択するための選択手段、206は減算手段、
207は加算手段、208は任意ビット長の左シフト手
段、209は任意ビット長の右シフト手段、210はビ
ット単位での混合を行うマージ手段、220はソースデ
ータ入力部、221はオフセットデータ入力部、222
はビット幅データ入力部、223は演算結果出力部であ
る。
【0074】図11に示した構成は、図10に示した構
成に対して、ビット反転手段201を削除し、ビットマ
スク手段231、ゼロ値走査手段232、エンコード手
段233、及び選択手段234を追加している。次に、
これら追加変更された部分の動作について説明する。
成に対して、ビット反転手段201を削除し、ビットマ
スク手段231、ゼロ値走査手段232、エンコード手
段233、及び選択手段234を追加している。次に、
これら追加変更された部分の動作について説明する。
【0075】入力されたオフセットデータ3121をデ
コード手段204によってデコードし、マクスパターン
を生成する。例えば、オフセットデータとして“17”
を入力された場合は、最上位から17ビットだけ“0”
を、残りのビット位置には“1”をセットしたマスクパ
ターンデータを生成する。このマスクパターンデータを
利用して、ビットマスク手段202で、ソースデータの
うち不要な部分の“0”マスク処理を行う。ビットマス
ク手段231では、マスクパターンデータを反転し、ソ
ースデータのうち不要な部分を“1”にマスクする。
コード手段204によってデコードし、マクスパターン
を生成する。例えば、オフセットデータとして“17”
を入力された場合は、最上位から17ビットだけ“0”
を、残りのビット位置には“1”をセットしたマスクパ
ターンデータを生成する。このマスクパターンデータを
利用して、ビットマスク手段202で、ソースデータの
うち不要な部分の“0”マスク処理を行う。ビットマス
ク手段231では、マスクパターンデータを反転し、ソ
ースデータのうち不要な部分を“1”にマスクする。
【0076】次にゼロ値走査手段232では、マスク処
理の結果として得られたビット列データを、最上位ビッ
トからゼロ走査を行い、ゼロ値が現れるビット位置を検
出する。
理の結果として得られたビット列データを、最上位ビッ
トからゼロ走査を行い、ゼロ値が現れるビット位置を検
出する。
【0077】ここで得られたビット位置情報はエンコー
ド手段233によってエンコードされる。これの出力
と、他方のエンコード手段205からの出力とは、選択
手段234によってどちらかが選択され、走査結果とし
て後段の加算器207と減算器206とに送られる。
ド手段233によってエンコードされる。これの出力
と、他方のエンコード手段205からの出力とは、選択
手段234によってどちらかが選択され、走査結果とし
て後段の加算器207と減算器206とに送られる。
【0078】また、図12は、本発明の別の一実施例の
ブロック図である。本実施例は、第一実施例と比較し
て、複数のALUを持っているという特徴がある。
ブロック図である。本実施例は、第一実施例と比較し
て、複数のALUを持っているという特徴がある。
【0079】図12で、1はCPU、2はバス、101
は入出力制御部、102は第一データレジスタ、103
は第一ALU、104はVLCU、105は命令制御
部、106は第一ALU用の命令レジスタ、107はV
LCU用の命令レジスタ、108は第二ALU用の命令
レジスタ、109は第二データレジスタ、110は第二
ALU、111は第一データレジスタのロードストア用
の命令レジスタ、112は第二データレジスタのロード
ストア用の命令レジスタである。
は入出力制御部、102は第一データレジスタ、103
は第一ALU、104はVLCU、105は命令制御
部、106は第一ALU用の命令レジスタ、107はV
LCU用の命令レジスタ、108は第二ALU用の命令
レジスタ、109は第二データレジスタ、110は第二
ALU、111は第一データレジスタのロードストア用
の命令レジスタ、112は第二データレジスタのロード
ストア用の命令レジスタである。
【0080】次に本実施例の動作について、図12と図
2を用いて説明する。基本的な動作は第一実施例の動作
と同じであるため、第一実施例と異なる動作について説
明する。本実施例は、データレジスタとALUを2組持
っているという特徴がある。
2を用いて説明する。基本的な動作は第一実施例の動作
と同じであるため、第一実施例と異なる動作について説
明する。本実施例は、データレジスタとALUを2組持
っているという特徴がある。
【0081】命令制御部105が記憶装置3から命令コ
ードを取り出し、それがデータロードに関わる命令語で
あることを検出すると、概命令語を命令レジスタ111
または命令レジスタ112に書き込む。概命令語を、ど
ちらの命令レジスタに書き込むかの選択は、命令制御部
105が適切な方法で選択しても良いし、若しくは命令
語の任意のビットによって選択指定されていても良い。
ードを取り出し、それがデータロードに関わる命令語で
あることを検出すると、概命令語を命令レジスタ111
または命令レジスタ112に書き込む。概命令語を、ど
ちらの命令レジスタに書き込むかの選択は、命令制御部
105が適切な方法で選択しても良いし、若しくは命令
語の任意のビットによって選択指定されていても良い。
【0082】命令レジスタ111は概命令語を書き込ま
れると、第一データレジスタ102を制御して、記憶装
置3に格納されているデータを、入出力制御部101を
経由して、第一データレジスタ102に書き込む。
れると、第一データレジスタ102を制御して、記憶装
置3に格納されているデータを、入出力制御部101を
経由して、第一データレジスタ102に書き込む。
【0083】また、命令レジスタ112は概命令語を書
き込まれると、第二データレジスタ109を制御して、
記憶装置3に格納されているデータを、入出力制御部1
01を経由して、第二データレジスタ109に書き込
む。
き込まれると、第二データレジスタ109を制御して、
記憶装置3に格納されているデータを、入出力制御部1
01を経由して、第二データレジスタ109に書き込
む。
【0084】以上の動作によって、演算に必要なデータ
が、第一データレジスタ102若しくは第二データレジ
スタ109に格納される。
が、第一データレジスタ102若しくは第二データレジ
スタ109に格納される。
【0085】また、命令制御部105が記憶装置3から
命令コードを取り出し、それが数値演算または論理演算
に関わる命令語であることを検出すると、概命令語を命
令レジスタ106または命令レジスタ108に書き込
む。
命令コードを取り出し、それが数値演算または論理演算
に関わる命令語であることを検出すると、概命令語を命
令レジスタ106または命令レジスタ108に書き込
む。
【0086】命令レジスタ106は概命令語を書き込ま
れると、第一データレジスタ102を制御して演算に必
要なデータを取り出し、また、第一ALU103を制御
して概データを元に演算処理を実行し、再び第一データ
レジスタ102を制御して演算結果のデータを第一デー
タレジスタ102に格納する。
れると、第一データレジスタ102を制御して演算に必
要なデータを取り出し、また、第一ALU103を制御
して概データを元に演算処理を実行し、再び第一データ
レジスタ102を制御して演算結果のデータを第一デー
タレジスタ102に格納する。
【0087】また、命令レジスタ108は概命令語を書
き込まれると、第二データレジスタ109を制御して演
算に必要なデータを取り出し、また、第二ALU110
を制御して概データを元に演算処理を実行し、再び第二
データレジスタ109を制御して演算結果のデータを第
二データレジスタ109に格納する。
き込まれると、第二データレジスタ109を制御して演
算に必要なデータを取り出し、また、第二ALU110
を制御して概データを元に演算処理を実行し、再び第二
データレジスタ109を制御して演算結果のデータを第
二データレジスタ109に格納する。
【0088】以上の動作によって、数値演算処理または
論理演算処理が実行され、演算結果は第一データレジス
タ102若しくは第二データレジスタ109に格納され
る。
論理演算処理が実行され、演算結果は第一データレジス
タ102若しくは第二データレジスタ109に格納され
る。
【0089】本実施例では、命令制御部は単一の構成で
あるとして記述しているが、複数の構成であってもかま
わない。また、ALUを2組、VLCUを1組、それぞ
れ記載しているが、両者とも2組の構成であったり、A
LUを1組、VLCUを2組といった構成であってもか
まわない。更に、これらの構成要素は最大2組である必
要はなく、3組以上の構成であっても良い。
あるとして記述しているが、複数の構成であってもかま
わない。また、ALUを2組、VLCUを1組、それぞ
れ記載しているが、両者とも2組の構成であったり、A
LUを1組、VLCUを2組といった構成であってもか
まわない。更に、これらの構成要素は最大2組である必
要はなく、3組以上の構成であっても良い。
【0090】次に、実際の可変長符号の例によって、本
実施例の動作について説明する。
実施例の動作について説明する。
【0091】表1は、画像圧縮に関する国際標準の一つ
である、MPEG1が標準的に利用する可変長符号の一
部を示したものである。
である、MPEG1が標準的に利用する可変長符号の一
部を示したものである。
【0092】
【表1】
【0093】表に示す項目は左から順に、項番、可変長
符号、ラン値、レベル値の4項目である。MPEG1に
より圧縮されている画像情報を復号する際には、表1に
基づいて、可変長符号をラン値とレベル値に変換する処
理が必要である。
符号、ラン値、レベル値の4項目である。MPEG1に
より圧縮されている画像情報を復号する際には、表1に
基づいて、可変長符号をラン値とレベル値に変換する処
理が必要である。
【0094】本実施例を用いる場合、次のような手順に
より、処理を行う。
より、処理を行う。
【0095】初めに、図9に示したビット幅データ31
22には値“5”を格納して処理を行う。この結果、デ
ィスティネーションデータ313は、図14に示すよう
に、最下位5ビットはパターンデータ3132、その直
上は走査長データ3131して扱うことになる。
22には値“5”を格納して処理を行う。この結果、デ
ィスティネーションデータ313は、図14に示すよう
に、最下位5ビットはパターンデータ3132、その直
上は走査長データ3131して扱うことになる。
【0096】表1に示したMPEG1の可変長符号で
は、先行する連続する0値は最小0個、最大11個の範
囲にある。パターンデータは5ビット、即ち32種であ
るので、従って12×32=384個の要素を持つテー
ブル参照を行うことになる。参照するためのテーブルの
例を、表2に示す。縦軸がパターンデータ、横軸が走査
長データである。例えば、走査長が“6”、パターンが
“00100”である場合、表2から、ラン値が
“5”、レベル値が“2”であると参照する。
は、先行する連続する0値は最小0個、最大11個の範
囲にある。パターンデータは5ビット、即ち32種であ
るので、従って12×32=384個の要素を持つテー
ブル参照を行うことになる。参照するためのテーブルの
例を、表2に示す。縦軸がパターンデータ、横軸が走査
長データである。例えば、走査長が“6”、パターンが
“00100”である場合、表2から、ラン値が
“5”、レベル値が“2”であると参照する。
【0097】
【表2】
【0098】実際の処理を行う場合は、表2は、ラン値
とレベル値のみを参照するための情報だけでなく、参照
した可変長符号自体のビット長の情報も同時に参照する
ことができるようにすると良い。例えばテーブル上で、
ラン値を5ビット、レベル値を6ビットで格納し、さら
に可変長符号自体のビット長を4ビットで格納する。こ
れらは16ビット境界に収まるため、テーブル構造とし
て簡単に実現できる。
とレベル値のみを参照するための情報だけでなく、参照
した可変長符号自体のビット長の情報も同時に参照する
ことができるようにすると良い。例えばテーブル上で、
ラン値を5ビット、レベル値を6ビットで格納し、さら
に可変長符号自体のビット長を4ビットで格納する。こ
れらは16ビット境界に収まるため、テーブル構造とし
て簡単に実現できる。
【0099】前記の例で説明すると、走査長が“6”、
パターンが“00100”である場合、ラン値とレベル
値の他に、VLCビット長“10”を参照できるように
する。
パターンが“00100”である場合、ラン値とレベル
値の他に、VLCビット長“10”を参照できるように
する。
【0100】VLCビット長をテーブル上に持つことに
よって、次の命令実行のためのオフセットデータ312
1の更新処理が簡単になる。つまり、前回のオフセット
データ値に、VLCビット長値を加算するだけでよい。
よって、次の命令実行のためのオフセットデータ312
1の更新処理が簡単になる。つまり、前回のオフセット
データ値に、VLCビット長値を加算するだけでよい。
【0101】このような手順により、可変長符号の復号
化処理を、条件分岐を必要とせずに、少ない処理ステッ
プ数で実行できる。ここで説明した処理を、可変長符号
処理機能を持たない通常のCPUで実現しようとする
と、図13に示したような複数回数の数値比較処理か、
または16ビット分の要素、即ち65536個の要素を
持つテーブル参照処理の、どちらかを必要とする。前者
はパイプライン処理に悪影響を与えることにより処理全
体のスループットの低下を招き、後者は大きなテーブル
参照を行うための高速大容量の記憶手段が必要となり現
実的でない。
化処理を、条件分岐を必要とせずに、少ない処理ステッ
プ数で実行できる。ここで説明した処理を、可変長符号
処理機能を持たない通常のCPUで実現しようとする
と、図13に示したような複数回数の数値比較処理か、
または16ビット分の要素、即ち65536個の要素を
持つテーブル参照処理の、どちらかを必要とする。前者
はパイプライン処理に悪影響を与えることにより処理全
体のスループットの低下を招き、後者は大きなテーブル
参照を行うための高速大容量の記憶手段が必要となり現
実的でない。
【0102】
【発明の効果】本発明によれば、CPUによる可変長符
号の復号化処理を高速化することが可能となり、CPU
による圧縮音声の復号処理や、圧縮画像の復号処理の高
速化を行える。
号の復号化処理を高速化することが可能となり、CPU
による圧縮音声の復号処理や、圧縮画像の復号処理の高
速化を行える。
【0103】特に、処理ループの最内周でのCPUによ
る数値比較処理回数の削減を図ることが可能であるた
め、数値比較処理に伴って発生する条件分岐命令の個数
を減らすことができる。この特徴は、近年のCPUの多
くに搭載されている命令パイプライン機能に適合しやす
いという利点があり、高速化の点から有利である。
る数値比較処理回数の削減を図ることが可能であるた
め、数値比較処理に伴って発生する条件分岐命令の個数
を減らすことができる。この特徴は、近年のCPUの多
くに搭載されている命令パイプライン機能に適合しやす
いという利点があり、高速化の点から有利である。
【0104】これらの特徴により、CPUで処理を行う
場合の復号処理速度の低下や、処理速度向上を狙った可
変長符号復号処理専用ハードウエアを追加するためのコ
スト負担など、従来問題となっていた課題を解決するこ
とが可能である。
場合の復号処理速度の低下や、処理速度向上を狙った可
変長符号復号処理専用ハードウエアを追加するためのコ
スト負担など、従来問題となっていた課題を解決するこ
とが可能である。
【図1】本発明の一実施例のブロック図。
【図2】本発明の一実施例の装置全体のブロック図。
【図3】従来例のブロック図。
【図4】従来例の動作のフローチャート。
【図5】本発明の一実施例の動作のフローチャート。
【図6】本発明の一実施例の命令語の説明図。
【図7】本発明の一実施例の命令語の動作の説明図。
【図8】本発明の一実施例の別の命令語の説明図。
【図9】本発明の一実施例の別の命令語の動作の説明
図。
図。
【図10】本発明の一実施例の可変長符号処理部の内部
のブロック図。
のブロック図。
【図11】本発明の一実施例の別の可変長符号処理部の
内部のブロック図。
内部のブロック図。
【図12】本発明の別の一実施例のブロック図。
【図13】従来例の動作のフローチャート。
【図14】本発明の一実施例のMPEG1向け利用のビ
ット割付の説明図。
ット割付の説明図。
1…CPU、 2…バス、 101…入出力制御部、 102…データレジスタ、 103…数値論理演算部、 104…可変長符号復号処理部、 105…命令制御部、 106…数値論理演算部用の命令レジスタ、 107…可変長符号復号処理部用の命令レジスタ、 111…データレジスタ用の命令レジスタ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 小島 啓二 神奈川県川崎市麻生区王禅寺1099番地株式 会社日立製作所システム開発研究所内 (72)発明者 西岡 清和 神奈川県川崎市麻生区王禅寺1099番地株式 会社日立製作所システム開発研究所内 (72)発明者 中田 啓明 神奈川県川崎市麻生区王禅寺1099番地株式 会社日立製作所システム開発研究所内
Claims (16)
- 【請求項1】外部との情報の入出力を行う入出力制御部
と、演算データを一時的に保持するデータレジスタと、
命令語を一時的に保持する複数個の命令レジスタと、 外部から与えられる複数群の命令語を選別して複数の命
令レジスタにそれぞれ格納する命令制御部と、数値演算
と論理演算を行う数値論理演算部と、可変長符号復号処
理部とを持ち、第一群の命令語は第一の命令レジスタに
格納され、第二群の命令語は第二の命令レジスタに格納
され、前記第一の命令レジスタは前記数値論理演算部を
駆動する信号を出力し、前記第二の命令レジスタは前記
可変長符号復号処理部を駆動する信号を出力することを
特徴とする演算処理装置。 - 【請求項2】請求項1において、装置の動作を規定する
プログラムの内容を変更することによって、前記可変長
符号復号化処理の手順を変更することが可能な可変長符
号復号化演算処理装置。 - 【請求項3】請求項1または2において、前記可変長符
号復号化処理は、 源データの連続する0値若しくは1値を読み飛ばし、不
連続値以降の予め定められた任意の長さのビット列を求
める処理である演算処理装置。 - 【請求項4】請求項3において、前記可変長符号復号化
処理は、 前記源データの連続するビット値を読み飛ばす手段で、
予め決められた任意のビット位置から読み飛ばしを開始
する処理である演算処理装置。 - 【請求項5】請求項3または4において、前記可変長符
号復号化処理は、 前記源データの連続するビット値を読み飛ばす手段で、
源データの連続する0値を読み飛ばす処理を行うか、源
データの連続する1値を読み飛ばす処理を行うかの選択
は、前記命令レジスタから出力される信号によって行う
演算処理装置。 - 【請求項6】請求項3または4において、前記可変長符
号復号化処理は、 前記源データの連続するビット値を読み飛ばす手段で、
処理を開始するビット位置に存在するビット値が0値で
あれば連続する0値を読み飛ばす処理を行い、処理を開
始するビット位置に存在するビット値が1値であれば連
続する1値を読み飛ばす処理を行う演算処理装置。 - 【請求項7】請求項3、4、5または6において、前記
連続する0値または1値の読み飛ばし動作は、 連続する0値とそれに続く最初の1値とを読み飛ばす動
作か、または連続する1値とそれに続く最初の0値とを
読み飛ばす動作のどちらかの処理である演算処理装置。 - 【請求項8】請求項3、4、5、6または7において、
前記可変長符号復号処理の結果情報は、前記源データか
ら求めた予め決められた長さのビット列情報と、求める
ビット列を走査する際に源データ上で読み飛ばしたビッ
トの桁数情報とを出力する演算処理装置。 - 【請求項9】請求項8において、前記可変長符号復号処
理の結果情報として出力する2種類の情報は、単一ビッ
ト列情報の部分列として出力する演算処理装置。 - 【請求項10】請求項9において、前記可変長符号復号
処理の結果情報は、前記源データから求めた予め決めら
れた長さのビット列情報を相対的に低い桁位置に出力
し、また、求めるビット列を走査する際に源データ上で
読み飛ばしたビットの桁数情報を相対的に高い桁位置に
出力する演算処理装置。 - 【請求項11】請求項9において、前記可変長符号復号
処理の結果情報は、前記源データから求めた予め決めら
れた長さのビット列情報を相対的に高い桁位置に出力
し、求めるビット列を走査する際に源データ上で読み飛
ばしたビットの桁数情報を相対的に低い桁位置に出力す
る演算処理装置。 - 【請求項12】請求項10または11において、出力す
る二種類の情報のビット位置は、高位桁にある情報の最
下位桁と、低位桁にある情報の最上位桁とが、互いに隣
り合った桁位置に存在する演算処理装置。 - 【請求項13】請求項10、11または12において、
出力する情報のビット位置は、低位桁にある情報の最下
位桁が、出力ビット列全体に対して固定した桁位置に存
在する演算処理装置。 - 【請求項14】請求項10、11、12または13にお
いて、中央演算処理装置の一部として内包する情報処理
装置。 - 【請求項15】請求項14において、請求項10、1
1、12または13の演算処理装置は複数個以上を内包
し、それぞれの前記演算処理装置が互いに独立に動作す
るように制御することが可能である情報処理装置。 - 【請求項16】請求項10、11、12または13にお
いて、可変長符号復号化手段は、可変長符号復号化処理
の他に、加算処理若しくは乗算処理が可能である情報処
理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14257696A JPH09326707A (ja) | 1996-06-05 | 1996-06-05 | 可変長符号復号化演算処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP14257696A JPH09326707A (ja) | 1996-06-05 | 1996-06-05 | 可変長符号復号化演算処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH09326707A true JPH09326707A (ja) | 1997-12-16 |
Family
ID=15318538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP14257696A Pending JPH09326707A (ja) | 1996-06-05 | 1996-06-05 | 可変長符号復号化演算処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH09326707A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008514095A (ja) * | 2004-09-20 | 2008-05-01 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 可変長エンコーダ/デコーダのためのプログラム可能データプロセッサ |
-
1996
- 1996-06-05 JP JP14257696A patent/JPH09326707A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008514095A (ja) * | 2004-09-20 | 2008-05-01 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 可変長エンコーダ/デコーダのためのプログラム可能データプロセッサ |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3505266B2 (ja) | プログラム実行装置 | |
JP3570188B2 (ja) | 可変長符号処理機構を有するデータ処理装置 | |
US6247112B1 (en) | Bit manipulation instructions | |
JP4921310B2 (ja) | 命令ビット長削減方法 | |
US5077659A (en) | Data processor employing the same microprograms for data having different bit lengths | |
EP0180157B1 (en) | Information processing unit | |
KR100509009B1 (ko) | 소프트웨어 및 하드웨어 루프 압축 기능을 갖는 선입선출기록/후입선출 판독 트레이스 버퍼 | |
JPH09326707A (ja) | 可変長符号復号化演算処理装置 | |
JP2577023B2 (ja) | 情報処理装置のアドレス拡張制御方式 | |
JP2800538B2 (ja) | 可変長ビット列処理プロセッサ | |
US6133859A (en) | Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images | |
JPS63113634A (ja) | プログラムカウンタ相対アドレス計算方式 | |
JP3088785B2 (ja) | 可変長符号の復号装置 | |
JP4227441B2 (ja) | データ圧縮方法およびプロセッサ | |
JPS60117335A (ja) | 情報処理装置 | |
JP2529465B2 (ja) | 可変長符号復号装置 | |
KR100509006B1 (ko) | 이벤트 벡터 테이블 오버라이드 | |
JP3531856B2 (ja) | プログラム制御方法及びプログラム制御装置 | |
JP3054787B2 (ja) | 可変長符号の復号装置 | |
JP3163975B2 (ja) | 符号化プロセッサ | |
JPH11163736A (ja) | プロセッサ | |
JPS6220032A (ja) | 情報処理装置 | |
JP2006011822A (ja) | プロセッサ | |
JPH08263263A (ja) | データ処理装置および圧縮プログラム作成装置 | |
JP2001117814A (ja) | インタフェース装置 |