JP3570188B2 - 可変長符号処理機構を有するデータ処理装置 - Google Patents
可変長符号処理機構を有するデータ処理装置 Download PDFInfo
- Publication number
- JP3570188B2 JP3570188B2 JP35594897A JP35594897A JP3570188B2 JP 3570188 B2 JP3570188 B2 JP 3570188B2 JP 35594897 A JP35594897 A JP 35594897A JP 35594897 A JP35594897 A JP 35594897A JP 3570188 B2 JP3570188 B2 JP 3570188B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- buffer register
- value
- instruction
- buffer
- 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
Links
- 230000007246 mechanism Effects 0.000 title claims description 17
- 230000006870 function Effects 0.000 claims description 11
- 238000000034 method Methods 0.000 description 25
- 101150096886 sft-1 gene Proteins 0.000 description 25
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 16
- 230000001629 suppression Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 101150115425 Slc27a2 gene Proteins 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003817 vacuum liquid chromatography Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Executing Machine-Instructions (AREA)
Description
【発明の属する技術分野】
本発明は、可変長符号を処理するデータ処理装置に関し、特に、メモリからの可変長符号のロード処理およびメモリへの可変長符号のストア処理を高速化したデータ処理装置に関する。
【0002】
【従来の技術】
メディア処理の分野では、画像や音声データのような大量のデータを記憶装置に格納したり、他の装置に転送したりする際には、何らかのデータ圧縮を行い、資源の有効活用を図るのが一般的である。データ圧縮には各種手法が提案され実施されているが、ほとんどの手法において圧縮されたデータは可変長符号(以下、VLCと略称する)となっている。代表的な手法としては、ハフマン符号がある。
【0003】
メディアデータをVLCデータへ圧縮したり、VLCデータからメディアデータへ復元したりする処理は専用ハードで行う場合もあるが、汎用プロセサの性能向上に伴い、ソフトウェアで行うケースも増えている。
【0004】
【発明が解決しようとする課題】
ここで問題となるのが、汎用プロセサの持っている命令セットが中途半端な長さのデータであるVLCを扱うのに適していないことである。例えば、汎用プロセサのロード/ストア命令は、通常、バイトアラインされたバイト単位のデータを対象としているため、ワード境界にまたがって置かれているVLCを汎用レジスタ上に構成するには、2回のロードと数回のシフト演算や論理演算を要することになる。また、必要なロードの数は、VLCの先頭のオフセットやVLC長に依存するので、条件判定も何回か行わねばならない。
【0005】
このように、VLCのロード/ストア処理を従来の汎用プロセサが有している命令セットを用いて行うと、多くの命令を要するため、性能上のオーバヘッドとなる可能性が高い。
本発明は、このような状況に鑑み、VLCを扱うのに適した可変長符号処理機構を提供して課題の解決を図ることを目的としている。
【0006】
【課題を解決するための手段】
上述した課題を解決するために、本発明によるデータ処理装置は、以下に示す態様を採用する。
本発明の第1の態様によれば、メモリへのアクセスアドレスを格納するアドレスレジスタと、
少なくともメモリからのロードデータ幅と等しいビット幅を有し、メモリからロードしたデータを格納する第1のバッファレジスタと、
第1のバッファレジスタに連結され、第1のバッファレジスタの内容がシフトされて格納される第2のバッファレジスタと、
第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第2のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納するオフセットレジスタと、
連結領域に存在し、第2のバッファレジスタの非連結端側に詰めて格納されたデータを指定されたシフト量だけ、第2のバッファレジスタの非連結端側にシフトし、同時にオフセットレジスタの値をシフト量だけインクリメントする第1の処理手段と、
(1) オフセットレジスタの値が第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、アドレスレジスタの値をアドレスとするメモリ上のデータを第1のバッファレジスタにロードし、同時にアドレスレジスタの値を所定値だけインクリメントし、(2) オフセットレジスタの値が第1のバッファレジスタのビット幅未満の場合は何もしない、第2の処理手段と、
(1) オフセットレジスタの値が第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、第2の処理手段によってメモリからロードされた第1のバッファレジスタの内容を、(オフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット数だけ第2のバッファレジスタ側へシフトし、第2のバッファレジスタの連結端側の(オフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット部分を、第1のバッファレジスタ側からシフトアウトされたビットで置き換え、同時にオフセットレジスタの値をバッファレジスタのビット数だけデクリメントし、(2) オフセットレジスタの値が第1のバッファレジスタのビット幅未満の場合は何もしない、第3の処理手段とを備える。
【0007】
本発明の第2の態様によれば、メモリへのアクセスアドレスを格納するアドレスレジスタと、
少なくともメモリからのロードデータ幅と等しいビット幅を有し、メモリからロードしたデータを格納する第1のバッファレジスタと、
第1のバッファレジスタに連結され、第1のバッファレジスタの内容がシフトされて格納される第2のバッファレジスタと、
第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第2のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納するオフセットレジスタと、
オペランドとしてシフト量を指定し、連結領域に存在するデータを指定されたシフト量だけ、第2のバッファレジスタの非連結端側にシフトし、同時にオフセットレジスタの値をシフト量だけインクリメントする第1のシフト命令と、
(1) オフセットレジスタの値が第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、アドレスレジスタの値をアドレスとするメモリ上のデータを第1のバッファレジスタにロードし、同時にアドレスレジスタの値を所定値だけインクリメントし、(2) オフセットレジスタの値が第1のバッファレジスタのビット幅未満の場合は何もしない、条件付きロード命令と、
(1) オフセットレジスタの値が第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、条件付きロード命令によってメモリからロードされた第1のバッファレジスタの内容を、(オフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット数だけ第2のバッファレジスタ側へシフトし、第2のバッファレジスタの連結端側の(オフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット部分を、第1のバッファレジスタ側からシフトアウトされたビットで置き換え、同時にオフセットレジスタの値をバッファレジスタのビット数だけデクリメントし、(2) オフセットレジスタの値が第1のバッファレジスタのビット幅未満の場合は何もしない、第2のシフト命令とを備える。
【0008】
本発明の第3の態様によれば、第2の態様において、
第1のシフト命令のオペランドとして与えられるシフト量と第1のバッファレジスタのビット幅との差分をセットする第2のオフセットレジスタと、
第1のシフト命令において、第1のバッファレジスタのビット幅を越えるシフト量が指定されたときセットされるフラグレジスタと、
(1) 第2のオフセットレジスタの値が第1のバッファレジスタのビット幅を越えない場合は、第1および第2のバッファレジスタの連結領域を第2のオフセットレジスタの値だけ第2のレジスタの非連結端側にシフトし、同時に、オフセットレジスタの値をシフト量だけインクリメントし、第2のオフセットレジスタとフラグレジスタを0にし、(2) 第2のオフセットレジスタの値が第1のバッファレジスタのビット幅を越える場合は、第1および第2のバッファレジスタの連結領域を第1のバッファレジスタのビット幅分だけ第2のバッファレジスタの非連結端側にシフトし、同時にオフセットレジスタの値を第1のバッファレジスタのビット数だけインクリメントし、第2のオフセットレジスタの値を第1のバッファレジスタのビット数だけデクリメントする第3のシフト命令とをさらに備え、
第1のシフト命令により第1のバッファレジスタのビット幅を越えるシフト量が指定されたとき、第1のシフト命令、条件付きロード命令、および第2のシフト命令の実行後に、フラグレジスタの値が1であることにより、第3のシフト命令と、条件付きロード命令と、第2のシフト命令からなる命令列に分岐し、この命令列を、フラグレジスタの値が0になるまで、繰り返し実行する。
【0009】
本発明の第4の態様によれば、メモリへのアクセスアドレスを格納するアドレスレジスタと、
少なくともメモリからのロードデータ幅と等しいビット幅を有し、メモリからロードしたデータを格納する第1のバッファレジスタと、
第1のバッファレジスタに連結され、第1のバッファレジスタの内容がシフトされて格納される第2のバッファレジスタと、
第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第2のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納する第1のオフセットレジスタと、
オペランドとしてシフト量を指定し、連結領域に存在するデータを指定されたシフト量だけ、第2のバッファレジスタの非連結端側にシフトし、同時に第1のオフセットレジスタの値をシフト量だけインクリメントする第1のシフト命令と、
(1) 第1のオフセットレジスタの値が第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、アドレスレジスタの値をアドレスとするメモリ上のデータを第1のバッファレジスタにロードし、同時にアドレスレジスタの値を所定値だけインクリメントし、(2) 第1のオフセットレジスタの値が第1のバッファレジスタのビット幅未満の場合は何もしない、条件付きロード命令と、
(1) 第1のオフセットレジスタの値が第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、条件付きロード命令によってメモリからロードされた第1のバッファレジスタの内容を、(第1のオフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット数だけ第2のバッファレジスタ側へシフトし、第2のバッファレジスタの連結端側の(第1のオフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット部分を、第1のバッファレジスタ側からシフトアウトされたビットで置き換え、同時に第1のオフセットレジスタの値をバッファレジスタのビット数だけデクリメントし、(2) 第1のオフセットレジスタの値が第1のバッファレジスタのビット幅未満の場合は何もしない、第2のシフト命令とを備えるとともに、
第1のシフト命令のオペランドとして与えられるシフト量と第1のバッファレジスタのビット幅との差分をセットする第2のオフセットレジスタと、
第1のシフト命令において、第1のバッファレジスタのビット幅を越えるシフト量が指定されたときセットされるフラグレジスタとをさらに備え、
第1のシフト命令は、
(1) 第2のオフセットレジスタの値が第1のバッファレジスタのビット幅を越えない場合は、第1および第2のバッファレジスタの連結領域を第2のオフセットレジスタの値だけ第2のバッファレジスタの非連結端側にシフトし、同時に、第1のオフセットレジスタの値をシフト量だけインクリメントし、第2のオフセットレジスタとフラグレジスタを0にし、(2) 第2のオフセットレジスタの値が第1のバッファレジスタのビット幅を越える場合は、第1および第2のバッファレジスタの連結領域を第1のバッファレジスタのビット幅分だけ第2のバッファレジスタの非連結端側にシフトし、同時に第1のオフセットレジスタの値を第1のバッファレジスタのビット数だけインクリメントし、第2のオフセットレジスタの値を第1のバッファレジスタのビット数だけデクリメントする機能をさらに備え、
第1のシフト命令により第1のレジスタのビット幅を越えるシフト量が指定されたとき、第1のシフト命令、条件付きロード命令、および第2のシフト命令の実行後に、フラグレジスタの値が1であることにより、第1のシフト命令と、条件付きロード命令と、第2のシフト命令からなる命令列を、フラグレジスタの値が0になるまで、繰り返し実行する。
【0010】
本発明の第5の態様によれば、第2から第4の態様において、アドレスレジスタとして専用のレジスタを設けず、条件付きロード命令のオペランドとして指定可能な汎用レジスタをメモリアクセス用のアドレスレジスタとして使用する。
本発明の第6の態様によれば、第2から第5の態様において、第1のシフト命令にターゲットオペランド指定機能を付加し、第1のシフト命令実行時に第2のバッファレジスタからシフトアウトされたビット列をターゲットとして指定された汎用レジスタに格納する。
【0011】
本発明の第7の態様によれば、第2から第6の態様において、第2のバッファレジスタの非連結端側の必要な数のビット値を入力してシフト量を計算する手段を備え、第1のシフト命令においてシフト量をオペランドとして与えることなく、ハードウェア回路手段によりシフト量を定める。
本発明の第8の態様によれば、第2から第7の態様において、条件付きロード命令によってアドレスレジスタの値をインクリメントした際に、アドレスレジスタの値が別途定めた範囲を越えたことを検出し、通知する手段を備える。
【0012】
本発明の第9の態様によれば、メモリへのアクセスアドレスを格納するアドレスレジスタと、
メモリへのストアデータ幅と等しいビット幅を有し、メモリへストアすべきデータを格納する第1のバッファレジスタと、
第1のバッファレジスタに連結され、第1のバッファレジスタへその内容がシフトされて格納される第2のバッファレジスタと、
第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第1のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納するオフセットレジスタと、
与えられた可変長データを第2のバッファレジスタにセットする第1の処理手段と、
第2のバッフアレジスタの内容を(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)だけ第1のバッファレジスタの非連結端側にシフトし、第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット部分を、第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時にオフセットレジスタの値を可変長データの符号長だけデクリメントする第2の処理手段と、
(1) オフセットレジスタの値が第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、第1のバッファレジスタのデータを、アドレスレジスタの値をアドレスとするメモリ上にストアし、同時にアドレスレジスタの値を所定値だけインクリメントし、(2) オフセットレジスタの値が第2のバッファレジスタのビット幅を越える場合は何もしない、第3の処理手段と、
(1) オフセットレジスタの値が第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、第2のバッファレジスタの内容を第1のバッファレジスタにコピーし、同時にオフセットレジスタの値を第2のバッファレジスタのビット幅数だけインクリメントし、(2) オフセットレジスタの値が第2のバッファレジスタのビット幅を越える場合は何もしない、第4の処理手段とを備える。
【0013】
本発明の第10の態様によれば、メモリへのアクセスアドレスを格納するアドレスレジスタと、
メモリへのストアデータ幅と等しいビット幅を有し、メモリへストアすべきデータを格納する第1のバッファレジスタと、
第1のバッファレジスタに連結され、第1のバッファレジスタへその内容がシフトされて格納される第2のバッファレジスタと、
第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第1のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納するオフセットレジスタと、
オペランドとして与えられたデータを第2のバッファレジスタにセットするライト命令と、
オペランドとして符号長を指定し、第2のバッフアレジスタの内容を(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)だけ第1のバッファレジスタの非連結端側にシフトし、第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット部分を、第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時にオフセットレジスタの値をオペランドの符号長だけデクリメントするシフト命令と、
(1) オフセットレジスタの値が第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、第1のバッファレジスタのデータを、アドレスレジスタの値をアドレスとするメモリ上にストアし、同時にアドレスレジスタの値を所定値だけインクリメントし、(2) オフセットレジスタの値が第2のバッファレジスタのビット幅を越える場合は何もしない、条件付きストア命令と、
(1) オフセットレジスタの値が第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、第2のバッファレジスタの内容を第1のバッファレジスタにコピーし、同時にオフセットレジスタの値を第2のバッファレジスタのビット幅数だけインクリメントし、(2) オフセットレジスタの値が第2のバッファレジスタのビット幅を越える場合は何もしない、条件付きコピー命令とを備える。
【0014】
本発明の第11の態様によれば、第10の態様において、シフト命令のオペランドとして与えられる符号長と第2のバッファレジスタのビット幅との差分をセットする第2のオフセットレジスタと、
シフト命令において、第2のバッファレジスタのビット幅を越える符号長が指定されたときセットされるフラグレジスタと、
(1) 第2のオフセットレジスタの値が第2のバッファレジスタのビット幅を越えない場合は、第2のバッファレジスタの内容を、(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット数だけ第1のバッファレジスタ側へシフトし、第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット分を、第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時にオフセットレジスタの値を第2のオフセットレジスタの値だけデクリメントし、さらに第2のオフセットレジスタおよびフラグレジスタの値を0にし、(2) 第2のオフセットレジスタの値が第2のバッファレジスタのビット幅を越える場合は、第2のバッファレジスタの内容を、(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット数だけ第1のバッファレジスタ側へシフトし、第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット分を、第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時にオフセットレジスタと第2のオフセットレジスタの値をそれぞれ第2のバッファレジスタのビット数だけデクリメントする第2のシフト命令とをさらに備え、
シフト命令により第2のバッファレジスタのビット幅を越える符号長が指定されたとき、シフト命令、条件付きストア命令、および条件付きコピー命令の実行後に、フラグレジスタの値が1であることにより、第2のシフト命令と、条件付きストア命令と、条件付きコピー命令からなる命令列に分岐し、この命令列を、フラグレジスタの値が0になるまで、繰り返し実行する。
【0015】
本発明の第12の態様によれば、メモリへのアクセスアドレスを格納するアドレスレジスタと、
メモリへのストアデータ幅と等しいビット幅を有し、メモリへストアすべきデータを格納する第1のバッファレジスタと、
第1のバッファレジスタに連結され、第1のバッファレジスタへその内容がシフトされて格納される第2のバッファレジスタと、
第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第1のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納するオフセットレジスタと、
オペランドとして与えられたデータを第2のバッファレジスタにセットするライト命令と、
オペランドとして符号長を指定し、第2のバッフアレジスタの内容を(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)だけ第1のバッファレジスタの非連結端側にシフトし、第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット部分を、第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時にオフセットレジスタの値をオペランドの符号長だけデクリメントするシフト命令と、
(1) オフセットレジスタの値が第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、第1のバッファレジスタのデータを、アドレスレジスタの値をアドレスとするメモリ上にストアし、同時にアドレスレジスタの値を所定値だけインクリメントし、(2) オフセットレジスタの値が第2のバッファレジスタのビット幅を越える場合は何もしない、条件付きストア命令と、
(1) オフセットレジスタの値が第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、第2のバッファレジスタの内容を第1のバッファレジスタにコピーし、同時にオフセットレジスタの値を第2のバッファレジスタのビット幅数だけインクリメントし、(2) オフセットレジスタの値が第2のバッファレジスタのビット幅を越える場合は何もしない、条件付きコピー命令と、
を備えるとともに、
シフト命令のオペランドとして与えられる符号長と第2のレジスタのビット幅との差分をセットする第2のオフセットレジスタと、
シフト命令において、第2のバッファレジスタのビット幅を越える符号長が指定されたときセットされるフラグレジスタとをさらに備え、
シフト命令は、
(1) 第2のオフセットレジスタの値が第2のバッファレジスタのビット幅を越えない場合は、第2のバッファレジスタの内容を、(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット数だけ第1のバッファレジスタ側へシフトし、第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット分を、第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時にオフセットレジスタの値を第2のオフセットレジスタの値だけデクリメントし、さらに第2のオフセットレジスタおよびフラグレジスタの値を0にし、(2) 第2のオフセットレジスタの値が第2のバッファレジスタのビット幅を越える場合は、第2のバッファレジスタの内容を、(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット数だけ第1のバッファレジスタ側へシフトし、第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット分を、第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時にオフセットレジスタと第2のオフセットレジスタの値をそれぞれ第2のバッファレジスタのビット数だけデクリメントする機能をさらに備え、
シフト命令により第2のバッファレジスタのビット幅を越える符号長が指定されたとき、シフト命令、前記条件付きストア命令、および条件付きコピー命令の実行後に、フラグレジスタの値が1であることにより、シフト命令と、条件付きストア命令と、条件付きコピー命令からなる命令列を、フラグレジスタの値が0になるまで、繰り返し実行する。
【0016】
本発明の第13の態様によれば、第10から第12の態様において、アドレスレジスタとして専用のレジスタを設けず、条件付きストア命令のオペランドとして指定可能な汎用レジスタをメモリアクセス用のアドレスレジスタとして使用する。
本発明の第14の態様によれば、第10から第13の態様において、ライト命令により処理対象データを第2のバッファレジスタの非連結端側にセットし、シフト命令によるシフト量を(オフセットレジスタの内容−処理対象データ長)とする。
【0017】
本発明の第15の態様によれば、第10から第14の態様において、条件付きストア命令の機能と条件付きコピー命令の機能とを合わせて有する命令を備える。
本発明の第16の態様によれば、第10から第15の態様において、第2のバッファレジスタの連結端側の必要な数のビット値を入力してシフト量を計算する手段を備え、シフト命令においてシフト量をオペランドとして与えることなく、ハードウェア回路手段によりシフト量を定める。
【0018】
本発明の第17の態様によれば、第10から第16の態様において、条件付きストア命令によってアドレスレジスタの値をインクリメントした際に、アドレスレジスタの値が別途定めた範囲を越えたことを検出し、通知する手段を備える。
【0019】
【発明の実施の形態】
以下、本発明の一実施例に係わるデータ処理装置について、図面を参照しながら説明する。
VLC処理は、大きくデコード処理とエンコード処理とに分かれる。図1に本発明に従ってVLCデコード処理を行っている最中の状態を示す。図1において、BR0、BR1はバッファレジスタ、OFFRはオフセットレジスタ、ARはアドレスレジスタである。VLCデコード処理では、メモリに格納されているVLCを、順次、バッファレジスタにロードして処理を行うが、ロードはワード境界にアラインされたデータ単位に行ない、処理済のVLCはバッファレジスタからmsb側にシフトアウトされていく。BR0,BR1はロードデータと等しい幅を有している。
【0020】
以下では簡単のために、BR0,BR1,ロード/ストア幅をすべて32ビットと仮定して説明するが、本発明はそれに限定されるものではない。
図1では、ロード済のVLCはBR0,BR1の斜線の部分に存在し、BR1内でVLCが存在しない空白の部分のビット長(n)がOFFRに格納されている。また、BR0,BR1にあるVLCが置かれていたメモリ上の位置が点線で示され、引き続きロードすべきアドレスがARによってポイントされている。
【0021】
本発明の一実施例では、デコード処理のために、命令セット中に以下の命令を備えている。
(1) 左シフト命令(sft01):
オペランドとしてシフト量を指定し、BR0とBR1を連続した64ビットデータとして、指定された量だけ左にシフトする。同時にOFFRの値をシフト量だけインクリメントする。
【0022】
(2) 条件付きロード命令(ldc):
OFFRの値が32以上の場合に、ARの値をアドレスとするメモリ上の32ビットデータをBR1にロードし、ARの値を4だけインクリメントする。OFFRの値が32未満の場合は何もしない。(1回のメモリアクセス単位が32ビット=4バイトであるため、ARの値は4バイト先のアドレスに設定されるものである。)
(3) 条件付き左シフト命令(sft1c):
OFFRの値が32以上の場合に、BR1を(OFFR−32)ビットだけ左シフトし、BR0のlsb側の(OFFR−32)ビットの部分をシフトアウトされたビットで置き換える。同時にOFFRを32だけデクリメントする。OFFRが32未満の場合は何もしない。
【0023】
これらの命令を用いれば、1個のVLCを処理する度に、sft01、ldc、sft1cの命令を順に発行することで、次のVLC処理のためのセットアップが完了し、上述した条件判定などの煩雑な処理が不要になる。sft01のオペランドは、処理するVLCのビット長を与えればよい。
図2は、sft01命令を実行した結果、OFFRの値が32以上になった場合の動作を示す。図3は、sft01命令を実行した結果、OFFRの値が32未満だった場合の動作を示す。
【0024】
図2の(1) は初期状態を示す図であり、nはBR1中の空白領域の長さを示し、addrは次にロードすべきアドレスを示している。なお、▲1▼に示す境界はワード境界を示すものであり、必ずしもVLCの境界を示すものではないこと、および▲2▼に示す境界はVLCの境界を示すものであり、必ずしもワード境界を示すものではないことに注意すべきである。
【0025】
図2の(2) は、オペランドとしてシフト量aを与えられたsft01命令が実行され、その結果、n+a≧32になった状態を示している。
図2の(3) は、ldc命令が実行され、BR1に新たにデータがロードされた状態を示している。
図2の(4) は、sft1c命令が実行され、OFFRの新たな値a’として、a’=(n+a)−32がセットされた状態を示している。
【0026】
図3の(1) は、図2の(1) と同様に初期状態を示す図であり、nはBR1中の空白領域の長さを示し、addrは次にロードすべきアドレスを示している。なお、▲1▼に示す境界はワード境界を示すものであり、必ずしもVLCの境界を示すものではないこと、および▲2▼に示す境界はVLCの境界を示すものであり、必ずしもワード境界を示すものではないことに注意すべきである。
【0027】
図3の(2) は、オペランドとしてシフト量aを与えられたsft01命令が実行され、その結果、n+a<32になった状態を示している。
図3の(3) は、ldc命令が見かけ上実行されるが、OFFR<32であるため、実際には何もしない状態を示している。このとき、ldc命令はNOP命令と同等なものとなる。
【0028】
図3の(4) は、sft1c命令が見かけ上実行されるが、OFFR<32であるため、実際には何もしない状態を示している。このとき、sft1c命令はNOP命令と同等なものとなる。
上述したように、図2ではldc命令とsft1c命令が動作するが、図3では動作しない。これらの双方を同じプログラムで処理できることが本発明の効果としてあげられる。すなわち状態を判定して異なる処理ステップに分岐する命令を設ける必要がなく、プログラム作成が簡単化されるからである。
【0029】
次に、図4に本発明に従ってVLCエンコード処理を行っている最中の状態を示す。図4に示す各レジスタは、図1に示すものと同様なものである。VLCエンコード処理では、コード化したVLCを順次、メモリにストアしていく。ストアすべきデータはBR0のmsb側を先頭に、BR0,BR1の64ビットの領域中に存在する。図4では、BR0の斜線の部分が該当部分である。また、BR0とBR1の空白域の長さ(図4に示すn)がOFFRに格納されている。ARはストアすべきメモリアドレスを保持している。
【0030】
本発明の一実施例では、エンコード処理のため、命令セット中に以下の命令を備えている。
(4) BR1ライト命令(wtbr1):
オペランドとして与えられた32ビットデータをBR1にセットする。
【0031】
(5) 左シフト命令(sft1):
オペランドとして符号長を指定する。BR1を(OFFR−32)ビット左にシフトし、BR0のlsb側の(OFFR−32)ビットの部分をシフトアウトされたビットで置き換える。同時に、OFFRの値をオペランドの符号長だけデクリメントする。
【0032】
(6) 条件付きストア命令(stc):
OFFRの値が32以下の場合に、BR0の32ビットデータをARの値をアドレスとするメモリ上の位置にストアし、ARの値を4だけインクリメントする。OFFRの値が32より大きい場合は何もしない。
(7) 条件付きコピー命令(cpc命令):
OFFRの値が32以下の場合に、BR1をBR0にコピーし、同時にOFFRの値を32だけインクリメントする。OFFRの値が32より大きい場合は何もしない。
【0033】
これらの命令を用いれば、wtbr1命令でBR1にVLCをセットし、sft1命令でBR0にある未ストアデータと連結し、stc命令でストアして、cpc命令でストアされずにBR1に残ったデータを次のストアのためにBR0へ移すという手順で、1個のVLCを処理することができる。sft1命令のオペランドは、処理すべきVLCのビット長を与えればよい。
【0034】
図5にsft1命令を実行した結果、OFFRの値が32を越えない値になった場合の動作を示し、図6にsft1命令を実行した結果、OFFRの値が32を越えた値になった場合の動作を示す。
図5の(1) は初期状態を示す図であり、nはBR0,BR1中の空白領域の長さを示し、addrは次にストアすべきアドレスを示している。
【0035】
図5の(2) は、wtbr1命令を実行し、長さaのVLCをBR1にセットした状態を示す。
図5の(3) は、オペランドとしてVLCの長さaを与えられたsft1命令が実行され、その結果、BR1内のVLCがBR0内の未ストアデータと連結され、OFFRの値がn−aになった状態を示している。
【0036】
図5の(4) は、stc命令を実行することにより、BR0の内容をメモリにストアし、ARの内容を4だけインクリメントした状態を示している。
図5の(5) は、cpc命令を実行することにより、BR1の内容をBR0にコピーし、OFFRの値をn−a+32にセットした状態を示している。
図6の(1) は、図5の(1) と同様に初期状態を示す図であり、nはBR0,BR1中の空白領域の長さを示し、addrは次にストアすべきアドレスを示している。
【0037】
図6の(2) は、図5の(2) と同様にwtbr1命令を実行し、長さaのVLCをBR1にセットした状態を示す。
図6の(3) は、図5の(3) と同様にオペランドとしてVLCの長さaを与えられたsft1命令が実行され、その結果、BR1内のVLCがBR0内の未ストアデータと連結され、OFFRの値がn−aになった状態を示している。
【0038】
図6の(4) は、stc命令が見かけ上実行されるが、OFFR>32であるため、実際には何もしない状態を示している。このとき、stc命令はNOP命令と同等なものとなる。
図6の(5) は、cpc命令が見かけ上実行されるが、OFFR>32であるため、実際には何もしない状態を示している。このとき、cpc命令はNOP命令と同等なものとなる。
【0039】
図5ではstc命令とcpc命令が動作するが、図6では動作しない。これらの双方を同じプログラムで処理できることが本発明の効果としてあげられる。すなわち状態を判定して異なる処理ステップに分岐する命令を設ける必要がなく、プログラム作成が簡単化されるからである。
上述した本発明の一実施例の説明では、本発明の基本的構成部分を述べたが、実施にあたってはさらに以下に示すような変形が可能である。
【0040】
イ)上述した説明では、VLCの格納場所をメモリとして、BR0,BR1との間でロード/ストアを行うものとしたが、専用システム上で本発明を実施した場合などは、通常のメモリとは別にVLC専用のバッファメモリ等を設けて、そことBR0,BR1の間で転送を行なうことが考えられる。その際には、ARはバッファメモリ等を指すことになる。
【0041】
ロ)stc命令とcpc命令は動作条件が同じであり、使用する演算器に重複がなく、また依存関係もないため、1個の命令としてまとめることが可能である。
ハ)ARを特別なレジスタでなく、汎用レジスタに割り当て、一般のロード/ストア命令のベースレジスタ的な使い方をすることができる。
【0042】
ニ)sft01命令のオペランドにターゲットレジスタを与え、シフトアウトされた部分をターゲットレジスタに格納するようにできる。
ホ)wtbr1命令を実行した結果、BR1に置かれるVLCをBR1のlsb側にあるとしてもよい。その場合は、sft1命令のシフト量は(OFFR−符号長)になる。
【0043】
ヘ)sft01命令およびsft1命令のシフト量は符号長であるが、VLCの先頭の数ビットによって符号長が定まるような符号体系の場合は、オペランドとして符号長を与えなくても、ハードウェアがBR0,BR1の内容によってシフト量を決定できるので、オペランドが不要になる。
【0044】
ト)ARの指す先がVLC領域の末尾に到達したことを示すフラグもしくは割り込み信号を設けることができる。
また、VLC処理においては、スキップ処理(メモリ上の何ビットかの領域を読み飛ばしたり、間を空けて書き込んだりする処理)が必要な場合がある。スキップする長さがBR0,BR1の幅以内であれば上述の枠組みで対応可能であるが、それ以上になると、BR0,BR1の幅以内に分割する処理が必要となる。以下ではその処理を軽減するための機能について説明する。
【0045】
デコードの場合は、sft01命令のオペランドにスキップする長さを与えることになるが、それが32ビットより長い場合にも矛盾なく動作するように、以下のような構成を採用する。
新たなレジスタとしてオセットレジスタOFFR2とフラグレジスタFGRを導入し、sft01命令に32を越えるシフト量が指定されたときは、32が指定されたのと同じ動作をするとともに、OFFR2にシフト量と32の差分をセットする。また、FGRを「1」にする。さらに、以下の動作を実行するsftof2命令を導入し、FGRが1の場合は、sftof2命令、ldc命令、sft1c命令からなる命令列に分岐し、FGRが0になるまで、この命令列を繰り返し実行する。
【0046】
(8) sftof2命令:
OFFR2が32以下の場合は、BR0とBR1を連続した64ビットデータとして、OFFR2の値だけ左にシフトする。同時に、OFFRの値をシフト量だけインクリメントし、OFFR2とFGRを0にする。
【0047】
OFFR2が32より大きい場合は、BR0とBR1を連続した64ビットデータとして、32ビット左にシフトする。同時に、OFFRの値を32だけインクリメントし、OFFR2を32だけデクリメントする。
この方法では、FGRの値による条件分岐命令が必要になる。図7にこの方法による動作例を示す。図7は、BR0,BR1内にVLCが40ビット残っていて、50ビットだけスキップする例を示している。
【0048】
図7の(1) はプログラム例を示している。
図7の(2) は初期状態における各レジスタの内容を示している。
図7の(3) は、オペランドとして50を与えられたsft01命令を実行した後の各レジスタの内容を示している。
図7の(4) は、ldc命令とsft1c命令を実行した後の各レジスタの内容を示している。
【0049】
図7の(5) は、sftof2命令を実行した後の各レジスタの内容を示している。この例ではOFFR2の内容が32以下であるため、1回のsftof2命令の実行でFGRは0にされ、sftof2命令の繰り返し動作は行なわれていない。
図7の(6) は最終状態における各レジスタの内容を示している。
【0050】
また、sftof2命令を導入せずに、sft01命令の動作を、以下のsft01’命令のように変更することでも対処可能である。
(9) sft01’命令:
FGRが0ならばもとのsft01命令と同様に動作し、FGRが1ならば上記のsftof2命令と同様に動作する。
【0051】
このようにすれば、処理の終わりにFGRが1のときにsft01’命令に戻るような条件分岐命令を置くだけで対処可能となり、プログラムは図8に示すようになる。
エンコードの場合は、sft1命令のオペランドにスキップする長さを与えるものとし、それが32ビットより大きいときはデコードの場合と同様にOFFR2とFGRを使って対処する。sft1命令に32を越えるシフト量が指定された場合には、32が指定されたのと同じ動作をするとともに、OFFR2にシフト量と32の差分をセットし、FGRを「1」にする。さらに、以下の動作を実行するsft1of2命令を導入し、FGRが1の場合は、sft1of2命令、stc命令、cpc命令からなる命令列に分岐し、FGRが0になるまで、この命令列を繰り返し実行する。
【0052】
(10)sft1of2命令:
OFFR2が32以下の場合は、BR1を(OFFR−32)ビットだけ左にシフトし、BR0のlsb側の(OFFR−32)ビットの部分をシフトアウトされたビットで置き換える。同時に、OFFRの値をOFFR2の値だけデクリメントし、OFFR2とFGRを0にする。
【0053】
OFFR2が32より大きい場合は、BR1を(OFFR−32)ビットだけ左にシフトし、BR0のlsb側の(OFFR−32)ビットの部分をシフトアウトされたビットで置き換える。同時に、OFFRとOFFR2の値をそれぞれ32だけデクリメントする。
この方法では、FGRの値による条件分岐命令が必要になる。図9にこの方法による動作例を示す。図9は、BR0,BR1内にVLCが10ビット残っていて、45ビットだけスキップする例を示している。
【0054】
図9の(1) はプログラム例を示している。
図9の(2) は初期状態における各レジスタの内容を示している。
図9の(3) は、オペランドとして45を与えられたsft1命令を実行した後の各レジスタの内容を示している。
図9の(4) は、stc命令とcpc命令を実行した後の各レジスタの内容を示している。
【0055】
図9の(5) は、sft1of2命令を実行した後の各レジスタの内容を示している。この例ではOFFR2の内容が32以下であるため、1回のsft1of2命令の実行でFGRは0にされ、sft1of2命令の繰り返し動作は行なわれていない。
図9の(6) は最終状態における各レジスタの内容を示している。
【0056】
図9における動作について、若干の説明を補足する。図9において実行したいことは、初期状態でBR0に10ビットのVLCが存在するとき、そのVLCの後ろに45ビットの空白を入れること、言い換えれば、次のVLCは45ビットの距離を空けてストアされるようにすることである。
まず、最初のストアで、BR0にある10ビットのVLCと22ビットの空白部がストアされる。その後に、45−22=23ビットの空白を入れればよく、そのためにはあたかも23ビットのVLCがBR0にあるようにOFFR値を設定すればよいのであるが、sft1of2命令によってOFFRが41になり、そのような状態になるわけである。最終状態以降にエンコードが継続すれば、BR0の左側23ビットの後に後続のVLCが続くので、期待通りの結果が得られるわけである。
【0057】
また、sft1of2命令を導入せずに、sft1命令の動作を以下のsft1’命令のように変更することでも対処可能である。
(11)sft1’命令:
FGRが0ならばもとのsft1命令と同様に動作し、FGRが1ならば上記のsft1of2命令と同様に動作する。
【0058】
このようにすれば、処理の終わりにFGRが1のときにsft1’命令に戻るような条件分岐命令を置くだけで対処可能となり、プログラムは図10に示すようになる。
次に、本発明の一実施例の回路構成例を図11に示す。図11において、1はシフタ、2〜4は論理回路、5はメモリインタフェース部、6はインクリメンタ、7、8はセレクタ、d1〜d4は図示しない命令デコーダからの入力信号(線)、c0〜c4は動作を抑制する各種の信号(線)である。
【0059】
シフタ1には、BR0,BR1の各32ビットデータが入力され、連続した64ビットデータ(BR0がmsb側)として左シフトされる。シフト量はs4で与えられる。実施例では、シフト量は0〜32ビットの範囲なので、出力は96ビットになる。出力データのmsb側から32ビットずつs1,s2,s3で示している。
【0060】
論理回路2はシフト量を決定する回路、論理回路3はOFFRの更新値を決定する回路、論理回路4は条件付き命令の条件を判断する回路である。
以下では、上述した各命令実行時における図11の動作を順次説明する。
[sft01命令]
オペランドとして与えられたシフト量は、d1から論理回路2に入力され、そのままs4としてシフタ1に与えられる。シフト結果であるs2とs3がそれぞれBR0,BR1の新しい値となる。セレクト信号d2,d4はs3,s2を選択する値になる。また、d1は論理回路3にも入力され、論理回路3においてOFFRの値と加算されて、OFFRの新しい値になる。
[ldc命令]
ARの値をアドレスとするメモリの値がメモリインタフェース部5を介して読み出され、BR1に書き込まれる。同時に、インクリメンタ6においてARの値が+4される。セレクト信号d2はロード値を選択する値になる。
【0061】
但し、OFFRが32未満の場合はこれらの動作はすべて抑制される。条件判断は論理回路4で行なわれ、抑制の場合はc1,c2,c4がアサートされることで各部に通知される。
[sft1c命令]
論理回路2によって(OFFR−32)が計算され、シフト量としてシフタ1に通知される。シフト結果のs2のうちのlsb側の(OFFR−32)ビットの部分だけがBR0の以前の値と置き換わる。BR0の一部のみが置き換わる制御は論理回路2が出力する信号s5によって実現される。また、論理回路3によって(OFFR−32)が計算され、OFFRの新しい値になる。
【0062】
但し、OFFRが32未満の場合はこれらの動作はすべて抑制される。条件判断は論理回路4で行なわれ、抑制の場合はc0,c2がアサートされることで各部に通知される。
[wtbr1命令]
オペランドとして与えられたデータがd3から入力され、BR1に書き込まれる。
[sft1命令]
論理回路2によって(OFFR−32)が計算され、シフト量としてシフタ1に通知される。シフト結果のs2のうちlsb側の(OFFR−32)ビットの部分だけがBR0の以前の値と置き換わる。BR0の一部のみが置き換わる制御は論理回路2が出力する信号s5によって実現される。また、オペランドで与えられた符号長がd1から入力され、論理回路3によって(OFFR−符号長)が計算され、OFFRの新しい値になる。
[stc命令]
ARの値をアドレスとするメモリにBR0の値をメモリインタフェース部5を介してストアする。同時にインクリメンタ6においてARの値が+4される。
【0063】
但し、OFFRが32より大きい場合は、これらの動作はすべて抑制される。条件判断は論理回路4で行なわれ、抑制の場合はc3,c4がアサートされることで各部に通知される。
[cpc命令]
BR1の値がBR0に信号s6を通じてコピーされ、同時に(OFFR+32)が論理回路3によって計算され、OFFRの新しい値になる。
【0064】
但し、OFFRが32より大きい場合はこれらの動作はすべて抑制される。条件判断は論理回路4で行なわれ、抑制の場合はc0,c2がアサートされることで各部に通知される。
上記実施例の変形例として以下の動作態様を採用することができる。
【0065】
(a) メモリインタフェース部5がインタフェースしている対象を通常のメモリではなく、VLC用バッファメモリとする。
(b) ARを特別なレジスタではなく図示しない汎用レジスタ(番号はldc命令またはstc命令のオペランドとして指定)とする。
(c) sft01命令にターゲットオペランドを指定可能にし、図中のs1をターゲット(汎用レジスタ)に格納する。
【0066】
(d) sft1命令のシフト量(論理回路2で計算)を(32−オペランド値)とする。オペランド値はd1で与えられる。
(e) stc命令とcpc命令の機能を1命令で行なう。
次に、sft01命令およびsft1命令において、シフト量をオペランドとして与えるのではなく、BR0またはBR1のmsb側の必要なビット値を入力して計算して求める構成の一例を図12に示す。図12において、BR0,BR1、論理回路2、論理回路3は図11と同じである。図11において信号d1が論理回路2、論理回路3に入力されていた代わりに、図12においては、論理回路21の出力が論理回路2、論理回路3に与えられている。論理回路21は符号のmsb側のパターンから符号長を計算する回路であり、BR0,BR1の先頭から符号長の計算に必要なだけのビット数を入力して、符号長を出力するものである。
【0067】
次に、ldc命令およびstc命令において、AR値をインクリメントした際に別途定めた範囲を越えたことを通知する構成の一例を図13に示す。図13において、ARは図11と同じであり、31−1、31−2はソフトウェアで設定可能なレジスタ、32は比較回路、33は信号線である。比較回路32によってARとレジスタ31−1、31−2の値が常に比較され、ARの値がレジスタ31−1、31−2で定まる範囲にない場合、信号33が「1」になる。信号33は例えば割り込み要因として認識され、VLCが置かれている範囲外へのアクセスを止めることが可能になる。
【0068】
次に、VLCのデコード処理/エンコード処理におけるスキップ動作を実施する構成の一例を図14に示す。図14は、図11の論理回路2の機能のうち、sft01命令およびsft1命令に係わる部分を置き換えたものである。図14において、41は論理回路、42はセレクタ、43〜47は信号線である。
論理回路41は入力された信号の値が32より大きいかどうかを判定し、32より大きい場合には、信号45に32を、信号46に入力値と32の差分を、信号47に「1」を出力する。また、入力値が32以下の場合には、信号45に入力値自身を、信号46に0を、信号47に「0」を出力する。信号43はセレクタ42に対するセレクト信号である。各種のスキップ処理は以下のようにして行なわれる。
【0069】
(1) VLCデコード処理において、sftof2命令を用いてスキップ処理を行なう場合。
信号43は命令デコーダの出力信号となり、sft01命令実行時には信号44を選択する値が、sftof2命令実行時には、OFFR2の値を選択する値がそれぞれ与えられる。
【0070】
また、信号44は、sft01命令実行時におけるオペランドであり、図11のd1と同じものである。信号45は図11のs4と同じであり、シフタ1でシフト量として用いられる。信号47の値はFGRにセットされる。
(2) VLCデコード処理において、sft01’命令を用いてスキップ処理を行なう場合。
【0071】
信号43が命令デコーダの出力ではなくFGRの値になり、セレクタ42は、FGRが「0」の場合は信号44を、「1」の場合はOFFR2の値を選択する。
(3) VLCエンコード処理において、sft1of2命令を用いてスキップ処理を行なう場合。
【0072】
(1) と同様な動作を行なう。但し、信号45が図11のd1に相当する信号として図11の論理回路3に入力される。
(4) VLCエンコード処理において、sft1’命令を用いてスキップ処理を行なう場合。
(2) と同様な動作を行なう。但し、信号45が図11のd1に相当する信号として図11の論理回路3に入力される。
【0073】
【発明の効果】
本発明によれば、可変長コード(VLC)を処理するデータ処理装置において、少ない命令ステップによりVLCデコード処理およびVLCエンコード処理を実行することが可能となり、プログラム作成の簡単化および処理速度向上という効果が得られる。
【図面の簡単な説明】
【図1】本発明によるVLCデコード処理の処理形態を示す図である。
【図2】VLCデコード処理において、sft01命令を実行した結果、OFFRの値が32以上になった場合の動作を示す図である。
【図3】VLCデコード処理において、sft01命令を実行した結果、OFFRの値が32未満だった場合の動作を示す図である。
【図4】本発明によるVLCエンコード処理の処理形態を示す図である。
【図5】VLCエンコード処理において、sft1命令を実行した結果、OFFRの値が32を越えない値になった場合の動作を示し図である。
【図6】VLCエンコード処理において、sft1命令を実行した結果、OFFRの値が32を越えた値になった場合の動作を示す図である。
【図7】VLCデコード処理において、sftof2命令を使用してスキップ処理を行なう動作例を示す図である。
【図8】VLCデコード処理において、sft01’命令を使用してスキップ処理を行なう動作例を示す図である。
【図9】VLCエンコード処理において、sft1of2命令を使用してスキップ処理を行なう動作例を示す図である。
【図10】VLCエンコード処理において、sft1’命令を使用してスキップ処理を行なう動作例を示す図である。
【図11】本発明の一実施例の回路構成例を示す図である。
【図12】BR0またはBR1のmsb側の必要なビット値を入力して、シフト量を計算により求める構成の一例を示す図である。
【図13】ldc命令およびstc命令において、AR値をインクリメントした際に別途定めた範囲を越えたことを通知する構成の一例を示す図である。
【図14】VLCのデコード処理/エンコード処理におけるスキップ動作を実施する構成の一例を示す図である。
【符号の説明】
BR0,BR1 バッファレジスタ
OFFR オフセットレジスタ
OFFR2 オフセットレジスタ
AR アドレスレジスタ
FGR フラグレジスタ
1 シフタ
2〜4 論理回路
5 メモリインタフェース部
6 インクリメンタ
7、8 セレクタ
Claims (15)
- メモリへのアクセスアドレスを格納するアドレスレジスタと、
少なくとも前記メモリからのロードデータ幅と等しいビット幅を有し、前記メモリからロードしたデータを格納する第1のバッファレジスタと、
前記第1のバッファレジスタに連結され、前記第1のバッファレジスタの内容がシフトされて格納される第2のバッファレジスタと、
前記第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第2のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納するオフセットレジスタと、
オペランドとしてシフト量を指定し、前記連結領域に存在するデータを指定されたシフト量だけ、前記第2のバッファレジスタの非連結端側にシフトし、同時に前記オフセットレジスタの値をシフト量だけインクリメントする第1のシフト命令と、
(1)前記オフセットレジスタの値が前記第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、前記アドレスレジスタの値をアドレスとするメモリ上のデータを前記第1のバッファレジスタにロードし、同時に前記アドレスレジスタの値を所定値だけインクリメントし、(2)前記オフセットレジスタの値が前記第1のバッファレジスタのビット幅未満の場合は何もしない、条件付きロード命令と、
(1)前記オフセットレジスタの値が前記第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、前記条件付きロード命令によってメモリからロードされた前記第1のバッファレジスタの内容を、(オフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット数だけ前記第2のバッファレジスタ側へシフトし、前記第2のバッファレジスタの連結端側の(オフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット部分を、前記第1のバッファレジスタ側からシフトアウトされたビットで置き換え、同時に前記オフセットレジスタの値を前記バッファレジスタのビット数だけデクリメントし、
(2)前記オフセットレジスタの値が前記第1のバッファレジスタのビット幅未満の場合は何もしない、第2のシフト命令と、を備えたことを特徴とする可変長符号処理機構を有するデータ処理装置。 - 前記第1のシフト命令のオペランドとして与えられるシフト量と前記第1のバッファレジスタのビット幅との差分をセットする第2のオフセットレジスタと、
前記第1のシフト命令において、前記第1のバッファレジスタのビット幅を越えるシフト量が指定されたときセットされるフラグレジスタと、
(1)前記第2のオフセットレジスタの値が前記第1のバッファレジスタのビット幅を越えない場合は、前記第1および第2のバッファレジスタの連結領域を前記第2のオフセットレジスタの値だけ前記第2のバッファレジスタの非連結端側にシフトし、同時に、前記オフセットレジスタの値をシフト量だけインクリメントし、
前記第2のオフセットレジスタとフラグレジスタを0にし、(2)前記第2のオフセットレジスタの値が前記第1のバッファレジスタのビット幅を越える場合は、前記第1および第2のバッファレジスタの連結領域を前記第1のバッファレジスタのビット幅分だけ前記第2のバッファレジスタの非連結端側にシフトし、同時に
前記オフセットレジスタの値を前記第1のバッファレジスタのビット数だけインクリメントし、前記第2のオフセットレジスタの値を前記第1のバッファレジスタのビット数だけデクリメントする第3のシフト命令とをさらに備え、
前記第1のシフト命令により前記第1のバッファレジスタのビット幅を越えるシフト量が指定されたとき、
前記第1のシフト命令、前記条件付きロード命令、および前記第2のシフト命令の実行後に、前記フラグレジスタの値が1であることにより、前記第3のシフト命令と、前記条件付きロード命令と、前記第2のシフト命令からなる命令列に分岐し、該命令列を、前記フラグレジスタの値が0になるまで、繰り返し実行
することを特徴とする請求項1に記載の可変長符号処理機構を有するデータ処理装置。 - メモリへのアクセスアドレスを格納するアドレスレジスタと、
少なくとも前記メモリからのロードデータ幅と等しいビット幅を有し、前記メモリからロードしたデータを格納する第1のバッファレジスタと、
前記第1のバッファレジスタに連結され、前記第1のバッファレジスタの内容がシフトされて格納される第2のバッファレジスタと、
前記第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第2のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納する第1のオフセットレジスタと、オペランドとしてシフト量を指定し、前記連結領域に存在するデータを指定されたシフト量だけ、前記第2のバッファレジスタの非連結端側にシフトし、同時に前記第1のオフセットレジスタの値をシフト量だけインクリメントする第1のシフト命令と、
(1)前記第1のオフセットレジスタの値が前記第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、前記アドレスレジスタの値をアドレスとするメモリ上のデータを前記第1のバッファレジスタにロードし、同時に前記アドレスレジスタの値を所定値だけインクリメントし、(2)前記第1のオフセットレジスタの値が前記第1のバッファレジスタのビット幅未満の場合は何もしない、条件付きロード命令と、
(1)前記第1のオフセットレジスタの値が前記第1のバッファレジスタのビット幅に等しいか、あるいはそれ以上の値の場合に、前記条件付きロード命令によってメモリからロードされた前記第1のバッファレジスタの内容を、(第1のオフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット数だけ前記第2のバッファレジスタ側へシフトし、前記第2のバッファレジスタの連結端側の(第1のオフセットレジスタの内容−第1のバッファレジスタのビット幅数)のビット部分を、前記第1のバッファレジスタ側からシフトアウトされたビットで置き換え、同時に前記第1のオフセットレジスタの値を前記バッファレジスタのビット数だけデクリメントし、(2)前記第1のオフセットレジスタの値が前記第1のバッファレジスタのビット幅未満の場合は何もしない、第2のシフト命令とを備えるとともに、
前記第1のシフト命令のオペランドとして与えられるシフト量と前記第1のレジスタのビット幅との差分をセットする第2のオフセットレジスタと、
前記第1のシフト命令において、前記第1のレジスタのビット幅を越えるシフト量が指定されたときセットされるフラグレジスタとをさらに備え、
前記第1のシフト命令は、
(1)前記第2のオフセットレジスタの値が前記第1のバッファレジスタのビット幅を越えない場合は、前記第1および第2のバッファレジスタの連結領域を前記第2のオフセットレジスタの値だけ前記第2のバッファレジスタの非連結端側にシフトし、同時に、前記第1のオフセットレジスタの値をシフト量だけインクリメントし、前記第2のオフセットレジスタとフラグレジスタを0にし、(2)前記第2のオフセットレジスタの値が前記第1のバッファレジスタのビット幅を越える場合は、前記第1および第2のバッファレジスタの連結領域を前記第1のバッファレジスタのビット幅分だけ前記第2のバッファレジスタの非連結端側にシフトし、
同時に前記第1のオフセットレジスタの値を前記第1のバッファレジスタのビット数だけインクリメントし、
前記第2のオフセットレジスタの値を前記第1のバッファレジスタのビット数だけデクリメントする機能をさらに備え、
前記第1のシフト命令により前記第1のバッファレジスタのビット幅を越えるシフト量が指定されたとき、
前記第1のシフト命令、前記条件付きロード命令、および前記第2のシフト命令の実行後に、前記フラグレジスタの値が1であることにより、前記第1のシフト命令と、前記条件付きロード命令と、前記第2のシフト命令からなる命令列を、前記フラグレジスタの値が0になるまで、繰り返し実行することを特徴とする可変長符号処理機構を有するデータ処理装置。 - 前記アドレスレジスタとして専用のレジスタを設けず、前記条件付きロード命令のオペランドとして指定可能な汎用レジスタをメモリアクセス用のアドレスレジスタとして使用することを特徴とする請求項1から3のいずれかに記載の可変長符号処理機構を有するデータ処理装置。
- 前記第1のシフト命令にターゲットオペランド指定機能を付加し、前記第1のシフト命令実行時に前記第2のバッファレジスタからシフトアウトされたビット列をターゲットとして指定された汎用レジスタに格納することを特徴とする請求項1から4のいずれかに記載の可変長符号処理機構を有するデータ処理装置。
- 前記第2のバッファレジスタの非連結端側の必要な数のビット値を入力してシフト量を計算する手段を備え、前記第1のシフト命令においてシフト量をオペランドとして与えることなく、ハードウェア回路手段によりシフト量を定めることを特徴とする請求項1から5のいずれかに記載の可変長符号処理機構を有するデータ処理装置。
- 前記条件付きロード命令によって前記アドレスレジスタの値をインクリメントした際に、アドレスレジスタの値が別途定めた範囲を越えたことを検出し、通知する手段を備えたことを特徴とする請求項1から6のいずれかに記載の可変長符号処理機構を有するデータ処理装置。
- メモリへのアクセスアドレスを格納するアドレスレジスタと、
前記メモリへのストアデータ幅と等しいビット幅を有し、前記メモリへストアすべきデータを格納する第1のバッファレジスタと、
前記第1のバッファレジスタに連結され、前記第1のバッファレジスタへその内容がシフトされて格納される第2のバッファレジスタと、
前記第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第1のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納するオフセットレジスタと、
オペランドとして与えられたデータを前記第2のバッファレジスタにセットするライト命令と、
オペランドとして符号長を指定し、前記第2のバッフアレジスタの内容を(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)だけ前記第1のバッファレジスタの非連結端側にシフトし、前記第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット部分を、前記第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時に前記オフセットレジスタの値を前記オペランドの符号長だけデクリメントするシフト命令と、
(1)前記オフセットレジスタの値が前記第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、前記第1のバッファレジスタのデータを、前記アドレスレジスタの値をアドレスとするメモリ上にストアし、同時に前記アドレスレジスタの値を所定値だけインクリメントし、(2)前記オフセットレジスタの値が前記第2のバッファレジスタのビット幅を越える場合は何もしない、条件付きストア命令と、
(1)前記オフセットレジスタの値が前記第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、前記第2のバッファレジスタの内容を前記第1のバッファレジスタにコピーし、同時に前記オフセットレジスタの値を前記第2のバッファレジスタのビット幅数だけインクリメントし、(2)前記オフセットレジスタの値が前記第2のバッファレジスタのビット幅を越える場合は何もしない、条件付きコピー命令と、を備えたことを特徴とする可変長符号処理機構を有するデータ処理装置。 - 前記シフト命令のオペランドとして与えられる符号長と前記第2のバッファレジスタのビット幅との差分をセットする第2のオフセットレジスタと、前記シフト命令において、前記第2のバッファレジスタのビット幅を越える符号長が指定されたときセットされるフラグレジスタと、
(1)前記第2のオフセットレジスタの値が前記第2のバッファレジスタのビット幅を越えない場合は、前記第2のバッファレジスタの内容を、(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット数だけ前記第1のバッファレジスタ側へシフトし、前記第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット分を、前記第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時に前記オフセットレジスタの値を前記第2のオフセットレジスタの値だけデクリメントし、さらに前記第2のオフセットレジスタおよびフラグレジスタの値を0にし、(2)前記第2のオフセットレジスタの値が前記第2のバッファレジスタのビット幅を越える場合は、前記第2のバッファレジスタの内容を、(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット数だけ前記第1のバッファレジスタ側へシフトし、前記第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット分を、前記第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時に前記オフセットレジスタと第2のオフセットレジスタの値をそれぞれ前記第2のバッファレジスタのビット数だけデクリメントする第2のシフト命令とをさらに備え、
前記シフト命令により前記第2のバッファレジスタのビット幅を越える符号長が指定されたとき、前記シフト命令、前記条件付きストア命令、および前記条件付きコピー命令の実行後に、前記フラグレジスタの値が1であることにより、前記第2のシフト命令と、前記条件付きストア命令と、前記条件付きコピー命令からなる命令列に分岐し、該命令列を、前記フラグレジスタの値が0になるまで、繰り返し実行することを特徴とする請求項8に記載の可変長符号処理機構を有するデータ処理装置。 - メモリへのアクセスアドレスを格納するアドレスレジスタと、
前記メモリへのストアデータ幅と等しいビット幅を有し、前記メモリへストアすべきデータを格納する第1のバッファレジスタと、
前記第1のバッファレジスタに連結され、前記第1のバッファレジスタへその内容がシフトされて格納される第2のバッファレジスタと、
前記第1のバッファレジスタと第2のバッファレジスタが連結されて構成される連結領域において、データを第1のバッファレジスタの非連結端側に詰めて格納した際に生じる空き領域の長さを格納するオフセットレジスタと、
オペランドとして与えられたデータを前記第2のバッファレジスタにセットするライト命令と、
オペランドとして符号長を指定し、前記第2のバッフアレジスタの内容を(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)だけ前記第1のバッファレジスタの非連結端側にシフトし、前記第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット部分を、前記第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時に前記オフセットレジスタの値を前記オペランドの符号長だけデクリメントするシフト命令と、
(1)前記オフセットレジスタの値が前記第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、前記第1のバッファレジスタのデータを、前記アドレスレジスタの値をアドレスとするメモリ上にストアし、同時に前記アドレスレジスタの値を所定値だけインクリメントし、(2)前記オフセットレジスタの値が前記第2のバッファレジスタのビット幅を越える場合は何もしない、条件付きストア命令と、
(1)前記オフセットレジスタの値が前記第2のバッファレジスタのビット幅に等しいか、あるいはそれ以下の場合に、前記第2のバッファレジスタの内容を前記第1のバッファレジスタにコピーし、同時に前記オフセットレジスタの値を前記第2のバッファレジスタのビット幅数だけインクリメントし、(2)前記オフセットレジスタの値が前記第2のバッファレジスタのビット幅を越える場合は何もしない、条件付きコピー命令と、を備えるとともに、
前記シフト命令のオペランドとして与えられる符号長と前記第2のレジスタのビット幅との差分をセットする第2のオフセットレジスタと、
前記シフト命令において、前記第2のレジスタのビット幅を越える符号長が指定されたときセットされるフラグレジスタとをさらに備え、
前記シフト命令は、
(1)前記第2のオフセットレジスタの値が前記第2のバッファレジスタのビット幅を越えない場合は、前記第2のバッファレジスタの内容を、(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット数だけ前記第1のバッファレジスタ側へシフトし、前記第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット分を、前記第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時に前記オフセットレジスタの値を前記第2のオフセットレジスタの値だけデクリメントし、さらに前記第2のオフセットレジスタおよびフラグレジスタの値を0にし、(2)前記第2のオフセットレジスタの値が前記第2のレジスタのビット幅を越える場合は、前記第2のバッファレジスタの内容を、(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット数だけ前記第1のバッファレジスタ側へシフトし、前記第1のバッファレジスタの連結端側の(オフセットレジスタの内容−第2のバッファレジスタのビット幅数)のビット分を、前記第2のバッファレジスタ側からシフトアウトされたビットで置き換え、同時に前記オフセットレジスタと第2のオフセットレジスタの値をそれぞれ前記第2のバッファレジスタのビット数だけデクリメントする機能をさらに備え、
前記シフト命令により前記第2のバッファレジスタのビット幅を越える符号長が指定されたとき、前記シフト命令、前記条件付きストア命令、および前記条件付きコピー命令の実行後に、前記フラグレジスタの値が1であることにより、前記シフト命令と、前記条件付きストア命令と、前記条件付きコピー命令からなる命令列を、前記フラグレジスタの値が0になるまで、繰り返し実行することを特徴とする可変長符号処理機構を有するデータ処理装置。 - 前記アドレスレジスタとして専用のレジスタを設けず、前記条件付きストア命令のオペランドとして指定可能な汎用レジスタをメモリアクセス用のアドレスレジスタとして使用することを特徴とする請求項9から10のいずれかに記載の可変長符号処理機構を有するデータ処理装置。
- 前記ライト命令により処理対象データを前記第2のレジスタの非連結端側にセットし、前記シフト命令によるシフト量を(オフセットレジスタの内容−処理対象データ長)とすることを特徴とする請求項9から11のいずれかに記載の可変長符号処理機構を有するデータ処理装置。
- 前記条件付きストア命令の機能と前記条件付きコピー命令の機能とを合わせて有する命令を備えたことを特徴とする請求項9から12のいずれかに記載の可変長符号処理機構を有するデータ処理装置。
- 前記第2のバッファレジスタの連結端側の必要な数のビット値を入力してシフト量を計算する手段を備え、前記シフト命令においてシフト量をオペランドとして与えることなく、ハードウェア回路手段によりシフト量を定めることを特徴とする請求項9から13のいずれかに記載の可変長符号処理機構を有するデータ処理装置。
- 前記条件付きストア命令によって前記アドレスレジスタの値をインクリメントした際に、アドレスレジスタの値が別途定めた範囲を越えたことを検出し、通知する手段を備えたことを特徴とする請求項9から14のいずれかに記載の可変長符号処理機構を有するデータ処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35594897A JP3570188B2 (ja) | 1997-12-25 | 1997-12-25 | 可変長符号処理機構を有するデータ処理装置 |
US09/145,034 US6195741B1 (en) | 1997-12-25 | 1998-09-01 | Data processing device having a variable length code processing mechanism |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35594897A JP3570188B2 (ja) | 1997-12-25 | 1997-12-25 | 可変長符号処理機構を有するデータ処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11184750A JPH11184750A (ja) | 1999-07-09 |
JP3570188B2 true JP3570188B2 (ja) | 2004-09-29 |
Family
ID=18446559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35594897A Expired - Fee Related JP3570188B2 (ja) | 1997-12-25 | 1997-12-25 | 可変長符号処理機構を有するデータ処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6195741B1 (ja) |
JP (1) | JP3570188B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7945766B2 (en) | 2008-03-21 | 2011-05-17 | Fujitsu Limited | Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19948100A1 (de) * | 1999-10-06 | 2001-04-12 | Infineon Technologies Ag | Prozessorsystem |
US6781589B2 (en) * | 2001-09-06 | 2004-08-24 | Intel Corporation | Apparatus and method for extracting and loading data to/from a buffer |
US7818356B2 (en) | 2001-10-29 | 2010-10-19 | Intel Corporation | Bitstream buffer manipulation with a SIMD merge instruction |
WO2004036433A1 (ja) * | 2002-10-21 | 2004-04-29 | Renesas Thchnology Corp. | 半導体集積回路装置 |
US6819272B2 (en) * | 2002-11-06 | 2004-11-16 | Hewlett-Packard Development Company, L.P. | System, method and computer readable medium for compressing a data sequence for partial decompressing |
JP4336678B2 (ja) * | 2003-09-04 | 2009-09-30 | 株式会社日立超エル・エス・アイ・システムズ | 半導体装置 |
JP4484630B2 (ja) | 2004-01-29 | 2010-06-16 | パナソニック株式会社 | 可変長復号化装置および可変長復号化方法および再生システム |
JP2008514095A (ja) * | 2004-09-20 | 2008-05-01 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 可変長エンコーダ/デコーダのためのプログラム可能データプロセッサ |
US7334116B2 (en) * | 2004-10-06 | 2008-02-19 | Sony Computer Entertainment Inc. | Bit manipulation on data in a bitstream that is stored in a memory having an address boundary length |
US9176733B2 (en) | 2011-04-07 | 2015-11-03 | Via Technologies, Inc. | Load multiple and store multiple instructions in a microprocessor that emulates banked registers |
US9146742B2 (en) | 2011-04-07 | 2015-09-29 | Via Technologies, Inc. | Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA |
US9141389B2 (en) | 2011-04-07 | 2015-09-22 | Via Technologies, Inc. | Heterogeneous ISA microprocessor with shared hardware ISA registers |
US9378019B2 (en) | 2011-04-07 | 2016-06-28 | Via Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9292470B2 (en) | 2011-04-07 | 2016-03-22 | Via Technologies, Inc. | Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program |
EP2695055B1 (en) * | 2011-04-07 | 2018-06-06 | VIA Technologies, Inc. | Conditional load instructions in an out-of-order execution microprocessor |
US9244686B2 (en) | 2011-04-07 | 2016-01-26 | Via Technologies, Inc. | Microprocessor that translates conditional load/store instructions into variable number of microinstructions |
US8880851B2 (en) | 2011-04-07 | 2014-11-04 | Via Technologies, Inc. | Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline |
US9645822B2 (en) | 2011-04-07 | 2017-05-09 | Via Technologies, Inc | Conditional store instructions in an out-of-order execution microprocessor |
US9274795B2 (en) | 2011-04-07 | 2016-03-01 | Via Technologies, Inc. | Conditional non-branch instruction prediction |
US9128701B2 (en) | 2011-04-07 | 2015-09-08 | Via Technologies, Inc. | Generating constant for microinstructions from modified immediate field during instruction translation |
US9898291B2 (en) | 2011-04-07 | 2018-02-20 | Via Technologies, Inc. | Microprocessor with arm and X86 instruction length decoders |
US9336180B2 (en) | 2011-04-07 | 2016-05-10 | Via Technologies, Inc. | Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode |
CN104699219B (zh) * | 2013-12-10 | 2020-06-23 | 联想(北京)有限公司 | 一种电子设备及信息处理方法 |
Family Cites Families (4)
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 |
US5673407A (en) * | 1994-03-08 | 1997-09-30 | Texas Instruments Incorporated | Data processor having capability to perform both floating point operations and memory access in response to a single instruction |
WO1998006042A1 (en) * | 1996-08-07 | 1998-02-12 | Sun Microsystems, Inc. | Wide instruction unpack method and apparatus |
US5890009A (en) * | 1996-12-12 | 1999-03-30 | International Business Machines Corporation | VLIW architecture and method for expanding a parcel |
-
1997
- 1997-12-25 JP JP35594897A patent/JP3570188B2/ja not_active Expired - Fee Related
-
1998
- 1998-09-01 US US09/145,034 patent/US6195741B1/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7945766B2 (en) | 2008-03-21 | 2011-05-17 | Fujitsu Limited | Conditional execution of floating point store instruction by simultaneously reading condition code and store data from multi-port register file |
Also Published As
Publication number | Publication date |
---|---|
US6195741B1 (en) | 2001-02-27 |
JPH11184750A (ja) | 1999-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3570188B2 (ja) | 可変長符号処理機構を有するデータ処理装置 | |
US6144322A (en) | Variable length code processor with encoding and/or decoding | |
JP2992223B2 (ja) | コンピュータシステム、命令ビット長圧縮方法、命令発生方法、及びコンピュータシステム動作方法 | |
US7487338B2 (en) | Data processor for modifying and executing operation of instruction code according to the indication of other instruction code | |
JP2002522821A (ja) | データプロセッサとデータ処理方法 | |
JP2682264B2 (ja) | プログラムカウンタ装置 | |
JPH0984004A (ja) | 画像処理装置 | |
JP3201716B2 (ja) | コンピュータ装置 | |
US20020065860A1 (en) | Data processing apparatus and method for saturating data values | |
US7308553B2 (en) | Processor device capable of cross-boundary alignment of plural register data and the method thereof | |
JP5853177B2 (ja) | データ処理装置、及びデータ処理方法 | |
JP2000322235A (ja) | 情報処理装置 | |
EP0936537B1 (en) | Cyclic redundancy check in a computer system | |
USRE34635E (en) | Method and apparatus for bit operational process | |
US7020769B2 (en) | Method and system for processing a loop of instructions | |
EP3030963B1 (en) | Flexible configuration hardware streaming unit | |
US6144321A (en) | Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images | |
JP2553200B2 (ja) | 情報処理装置 | |
US6133859A (en) | Microprocessor dedicated to processing of bit streams in a system of compression/decompression of animated images | |
US7308555B2 (en) | Processor-based structure and method for loading unaligned data | |
JP2000081966A (ja) | 演算装置 | |
US9043510B2 (en) | Hardware streaming unit | |
US7454601B2 (en) | N-wide add-compare-select instruction | |
JP3124361B2 (ja) | メモリデータロード装置 | |
JP2828611B2 (ja) | コンピュータシステム及び命令実行方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040302 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040401 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20040513 |
|
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: 20040601 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040614 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080702 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090702 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100702 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100702 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110702 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |