JP2005175940A - データ圧縮装置 - Google Patents

データ圧縮装置 Download PDF

Info

Publication number
JP2005175940A
JP2005175940A JP2003413665A JP2003413665A JP2005175940A JP 2005175940 A JP2005175940 A JP 2005175940A JP 2003413665 A JP2003413665 A JP 2003413665A JP 2003413665 A JP2003413665 A JP 2003413665A JP 2005175940 A JP2005175940 A JP 2005175940A
Authority
JP
Japan
Prior art keywords
character string
character
input
search
characters
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
Application number
JP2003413665A
Other languages
English (en)
Inventor
Takahiro Watabe
隆弘 渡部
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 Holdings Corp
Original Assignee
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2003413665A priority Critical patent/JP2005175940A/ja
Publication of JP2005175940A publication Critical patent/JP2005175940A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】 複雑な演算を行うことなく1文字ずらした文字列候補と、本来の開始文字からなる候補との選択を高速に処理が可能なデータ圧縮装置を提供する。
【解決手段】 符号化するための文字列をIDBR100に入力し、該IDBR100上の文字がメモリ配列120に既に格納されている個々の文字と一致するかを比較する。一致していれば、メモリ配列120の格納データのうち、上記入力文字列の検索開始文字から始まり最長に一致する第1の文字列および該第1の文字列の次の文字から始まり最長に一致する第2の文字列の検索を一次セレクタ130で行う。また、上記メモリ配列120の格納データのうち、上記入力文字列の上記検索開始文字の次の文字から始まり最長に一致する第3の文字列の検索を一次セレクタ140で行う。そして、一次セレクタ130または一次セレクタ140で検索された文字列の長さに応じて二次セレクタ150で選択した文字列を圧縮する。
【選択図】 図1

Description

本発明は、データ圧縮方法に係わり、特に、既に符号化済みの文字列の中から入力文字列と最長一致する文字列を求め、該一致文字列の位置情報を用いて入力文字列を符号化するデータ圧縮装置に関するものである。
従来のデータ圧縮装置は、データ圧縮方式の一つであるLZ77(スライド辞書法)において、圧縮率を高めるために入力(圧縮対象)文字列の先頭文字から辞書登録されている符号化済み文字列と最長に一致する第1文字列(以下、STR11と記す)と、STR11の次の入力文字から始まり辞書登録されている符号化済み文字列と最長に一致する第2文字列(以下、STR12と記す)による圧縮コードを生成した場合と、入力文字列の先頭文字のみからなる第1文字列(以下、STR21と記す)と、STR21の次の入力文字から始まり辞書登録されている符号化済み文字列と最長に一致する第2文字列(以下、STR22と記す)による圧縮コードを生成しそれぞれの圧縮率を求め、より圧縮率の高い文字列候補の圧縮コードを採用し、データ圧縮を行う(例えば、特許文献1参照)。図15に従来のデータ圧縮装置における符号器の構成図を示す。
図15において、図に示していない履歴バッファ内の符号化済み文字列の中から第1の候補文字列10のうち、文字C1から始まり最長一致する文字列(文字C1から文字Ciまで)をSTR11、文字Ci+1から始まり最長一致する文字列(文字Ci+1から文字Cmまで)をSTR12とし、2つの文字列STR11,STR12に対応する圧縮コードCCD11,CCD12を生成し、その圧縮率を圧縮率演算部15にて求める。この圧縮率演算部15では、例えば、文字列STR11とSTR12の総文字数を、圧縮コードCCD11とCCD12の総ビット数で除算することで圧縮率を求めている。
また、同様に、第2の候補文字列20のうち、文字C1をSTR21、文字C2から始まり最長一致する文字列(文字C2から文字Cnまで)をSTR22とし、2つの文字列STR21,STR22に対応する圧縮コードCCD21,CCD22を生成し、その圧縮率を圧縮率演算部25にて求める。この圧縮率演算部25では、第1の文字列候補10の場合と同様に、文字列STR21とSTR22の総文字数を、文字列STR21とSTR22に対応する圧縮コードCCD21とCCD22の総ビット数で除算することで圧縮率を求める。
そして、比較部30において、圧縮率演算部15および25において求めた圧縮率の大小判定を行い、その結果に基づき、符号出力部40において第1の候補文字列10の圧縮コードCCD11とCCD12、または第2の候補文字列20の圧縮コードCCD21とCCD22を選択し出力する。
また、従来のデータ圧縮装置は、圧縮装置における故障検出を行うために、履歴バッファと同じ文字情報を格納するバッファメモリを用意し、圧縮時にスライド辞書に書き込んだデータを、同時にバッファメモリに格納しておき、スライド辞書部への文字の書き込みが行われる毎に、書き込みを行ったエントリの隣の位置のデータをバッファメモリとスライド辞書からそれぞれ読み出し比較を行うことで、履歴バッファの故障の有無を確認している(例えば、特許文献2参照)。図16に従来の故障検出可能なデータ圧縮装置のブロック図を示す。
図16において、入力文字は、履歴バッファ部60とバッファメモリ65の両方の、ライトポインタ50により管理されたアドレスに格納される。
この履歴バッファ部60を用いて入力文字の検索を行い、2文字以上連続した文字列が見つからなかった場合は、故障検出を行う。この故障検出は、履歴バッファ部60とバッファメモリ65の両方からライトポインタ50に格納されたアドレス−1の位置からデータを読み出し、比較器70において2つのデータを比較することで行う。
特開平5−150939号公報(第6−9頁、第1図) 特開2002−135129号公報(第4−6頁、第1図)
しかしながら、上記従来の構成では、2つの候補文字列10および20の中から最適な(より圧縮率の高い)文字列を決定するために、まず履歴バッファを検索して2つの候補文字列10および20を決定し、それぞれの候補に対応した実際の圧縮コードCCD11とCCD12、およびCCD21とCCD22を生成する。その後、それぞれの圧縮コードにおける圧縮率を求めるため、ハードウェアによるデータ圧縮装置を実現する場合は処理速度が重要となるため、圧縮率演算部を二重化(15および25)する必要がある。また、この圧縮率を求めるために除算等を行っており、ハードウェア規模が増大するとともに、処理の高速化が困難である。
また、圧縮率により候補文字列を決定するため、連続一致文字列の長さに関係なく候補が決定されることから、連続一致文字列の短い方の候補文字列が選択された場合にも、連続一致文字列の長い文字列の検索のために既に処理した入力データでの再度の文字列検索を行う必要があり、そのためにハードウェアが増大するとともに制御が複雑になるという課題を有していた。
さらに、ハードウェアの故障検出を行うために履歴バッファ部60と同じデータを履歴バッファ部60とは独立したバッファメモリ65に2重に保持しておく必要があり、ハードウェア規模が増大するという課題を有していた。
本発明は、上記従来の課題を解決するもので、圧縮率を高めるために2文字以上連続する2つの文字列と、開始文字を1文字ずらせた2つの圧縮候補文字列から最適な文字列を決定するために、ハードウェアの増加を抑え、圧縮率等の複雑な演算を行うことなくかつ高速化が可能なデータ圧縮装置を提供することを目的とする。
また、ハードウェアの故障検出を、バッファメモリを2重化することなく行うことが可能なデータ圧縮装置を提供することを目的とする。
上記従来の課題を解決するために、本発明の請求項1にかかるデータ圧縮装置は、入力文字列と一致する符号化済み文字列の検索を行い、その結果を用いて入力文字列を符号化するデータ圧縮装置において、符号化するための文字を受け取る入力手段と、既に符号化済みの文字を上記入力手段より入力し、指定アドレスに格納する記憶手段と、上記入力手段で受け取った文字と上記記憶手段に格納されている個々の文字とを比較し、上記入力手段で受け取った文字が上記記憶手段に格納されているか否かを判断する比較手段と、上記記憶手段に格納されている文字列のうち、上記入力文字列の検索開始文字から始まり最長に一致する第1の文字列と、該第1の文字列の次の文字から始まり最長に一致する第2の文字列とからなる第1の符号化候補文字列の検索を上記比較手段の出力に基づき行う第1の検出手段と、上記第1の検出手段により検出された上記第1の符号化候補文字列の長さを求める第1の計数手段と、上記記憶手段に格納されている文字列のうち、上記入力文字列の上記検索開始文字の次の文字から始まり最長に一致する第3の文字列の検索を上記比較手段の出力に基づき行う第2の検出手段と、上記第2の検出手段により検出された、上記検索開始文字列と上記第3の文字列とからなる第2の符号化候補文字列の長さを求める第2の計数手段と、上記第1,第2の検出手段の検索結果、および上記第1,第2の計数手段の出力に基づき、上記第1の符号化候補文字列、または上記第2の符号化候補文字列のいずれかを選択し、符号化する符号化手段と、を備えたことを特徴とするものである。
これにより、本来の文字列検索と本来の文字列検索の開始位置を1文字ずらしてた2つの検索を同時に行え、さらに計算の複雑な圧縮率を求めることなく2つの符号化候補文字列から圧縮率の低下を抑えたデータ圧縮をすることができる。
また、本発明の請求項2にかかるデータ圧縮装置は、請求項1に記載のデータ圧縮装置において、上記符号化手段は、上記第1の検出手段による上記第2の文字列の検索、及び上記第2の検出手段による上記第3の文字列の検索が同一の入力文字の検索時に終了した場合は、上記第2の符号化候補文字列を選択し符号化することを特徴とするものである。
また、本発明の請求項3にかかるデータ圧縮装置は、請求項1に記載のデータ圧縮装置において、上記符号化手段は、上記第1の検出手段による上記第2の文字列の検索、上記第2の検出手段による上記第3の文字列の検索が同一の入力文字の検索時に終了した場合は、上記第1の文字列及び上記第2の文字列の総文字数、あるいは上記検索開始文字及び上記第3の文字列の総文字数に基づいて上記選択を行うことを特徴とするものである。
また、本発明の請求項4にかかるデータ圧縮装置は、請求項1ないし請求項3のいずれか1項に記載のデータ圧縮装置において、上記記憶手段の全てのエントリに文字が格納されたことを示す状態表示手段と、上記状態表示手段より上記記憶手段の各エントリの格納状態を入力し、上記記憶手段に空きエントリがある場合には上記記憶手段のエントリ毎の空き情報を格納し、上記記憶手段に空きエントリが無い場合には上記第2の検出手段の検出情報を格納する情報格納手段とを備えたことを特徴とするものである。
これにより、状態表示手段と結果格納手段により記憶手段を共有化することができ、その結果、ハードウェアの削減ができる。
また、本発明の請求項5にかかるデータ圧縮装置は、入力文字列と一致する符号化済み文字列の検索を行い、その結果を用いて入力文字列を符号化するデータ圧縮装置において、符号化するための文字を受け取る入力手段と、既に符号化済みの文字を上記入力手段より入力し、指定アドレスに格納する記憶手段と、上記入力手段で受け取った文字と上記記憶手段に格納されている個々の文字とを比較し、上記入力手段で受け取った文字が上記記憶手段に格納されているか否かを判断する比較手段と、上記記憶手段に格納されている文字列のうち、上記入力文字列の異なる開始文字から始まり最長に一致する複数の文字列を上記比較手段の出力に基づき検出する検出手段と、上記検出手段において最初に検出された文字列を含む符号化候補文字列の長さを求める第1の計数手段と、上記比較手段および前記検出手段の出力を入力し、上記検出手段において検出した複数の文字列の中で最初に検出された文字列以外の文字列を識別する論理手段と、上記論理手段において検出された文字列の中で上記第1の計数手段とは異なる開始文字から始まる文字列を含む符号化候補文字列の長さを求める第2の計数手段と、上記第1の係数手段、および上記第2の計数手段の出力に応じて上記検出手段で検出した文字列の何れかを選択し、符号化する符号化手段とを備えたことを特徴とするものである。
これにより、本来の文字列検索と本来の文字列検索の開始位置を1文字ずらしてた2つの検索を同時に行うことができ、また、計算の複雑な圧縮率を求めることなく2つの圧縮候補文字列から選択することができるため、1つの検出手段で連続一致している文字列の検出を行うことができる。
また、本発明の請求項6にかかるデータ圧縮装置は、請求項5に記載のデータ圧縮装置において、上記入力文字列のうち、検索開始文字及び該検索開始文字の次の文字から始まる第4の文字列を第3の符号化候補文字列とし、上記入力文字列のうち、上記検索開始文字から始まる第5の文字列、及び該第5の文字列の次の文字から始まる第6の文字列を第4の符号化候補文字列とし、上記検出手段および第1の計数手段は、第4の符号化候補文字列を検索し、上記論理手段および第2の計数手段は、第3の符号化候補文字列を検索することを特徴とするものである。
また、本発明の請求項7にかかるデータ圧縮装置は、請求項6に記載のデータ圧縮装置において、上記符号化手段は、上記第4の文字列の検索と上記第6の文字列の検索が同一の入力文字で終了した場合は、上記第3の符号化候補文字列を選択し符号化することを特徴とするものである。
また、本発明の請求項8にかかるデータ圧縮装置は、請求項6に記載のデータ圧縮装置において、上記符号化手段は、上記第4の文字列の検索と上記第6の文字列の検索が同時に終了した場合は、上記第3の符号化候補文字列の総文字数、あるいは上記第4の符号化候補文字列の総文字数に基づいて標記選択を行うことを特徴とするものである。
また、本発明の請求項9にかかるデータ圧縮装置は、請求項6ないし請求項7のいずれか1項に記載のデータ圧縮装置において、上記記憶手段の全てのエントリに文字が格納されたことを示す状態表示手段と、上記状態表示手段より上記記憶手段の各エントリの格納状態を入力し、上記記憶手段に空きエントリがある場合には上記記憶手段のエントリ毎の空き情報を格納し、上記記憶手段に空きエントリが無い場合には上記論理手段の検出情報を格納する情報格納手段とを備えたことを特徴とするものである。
これにより、状態表示手段と結果格納手段により記憶手段を共有化することができ、その結果、ハードウェアの削減をすることができる。
また、本発明の請求項10にかかるデータ圧縮装置は、請求項1または請求項5に記載のデータ圧縮装置において、上記比較手段から出力される個々の比較結果を格納する結果格納手段と、上記入力手段で受け取ったデータを格納するデータ格納手段と、上記入力手段で受け取ったデータと上記データ格納手段のデータとを比較する第2の比較手段と、上記第2の比較手段により上記両データが一致していることが確認された場合、上記比較手段の出力と上記結果格納手段に格納された値とを比較し、一致していなければ再度比較を行うよう上記比較手段を制御する比較制御手段とを備えたことを特徴とするものである。
これにより、ハードウェア量を抑えた構成で、比較手段の故障検出を行うことができ、より正確にデータ圧縮をすることができる。
また、本発明の請求項11にかかるデータ圧縮装置は、請求項10に記載のデータ圧縮装置において、上記記憶手段の全てのエントリに文字が格納されたことを示す状態表示手段と、上記状態表示手段より上記記憶手段の各エントリの格納状態を入力し、上記記憶手段に空きエントリがある場合には上記記憶手段のエントリ毎の空き情報を格納し、上記記憶手段に空きエントリが無い場合には上記第2の検出手段の検出情報を格納する情報格納手段とを備えたことを特徴とするものである。
これにより、状態表示手段と結果格納手段により記憶手段を共有化することができ、その結果、ハードウェアの削減をすることができる。
本発明のデータ圧縮装置によれば、1つの入力文字列に対して、連続一致文字列検索時に1文字ずらした文字列の検索を平行して検索するとともに、2つの候補文字列に対して、その文字列長に基づき選択を行うようにしたので、複雑な演算を行うことなく文字列長により圧縮候補文字列を選択することができ、高速に処理が行える。
また、FULLレジスタを設け、履歴バッファの全エントリに文字が格納された後、空きエントリを管理するためのレジスタを、第2候補文字列検索に使用するレジスタと共用することを可能とすることで、ハードウェアの増加を抑えることが可能となる。
さらに、履歴バッファの全エントリに文字が格納された後、空きエントリを管理するためのレジスタを用いて、前回の比較結果との一致を確認するようにしたので、故障検出が可能となり、バッファメモリを2重に持つ必要が無く、ハードウェアの増加を招くことなく、故障検出が可能となる。
以下に、本発明のデータ圧縮装置の実施の形態を図面とともに詳細に説明する。
(実施の形態1)
以下に、本発明の実施の形態1にかかるデータ圧縮装置について説明する。
図1は、本実施の形態1によるデータ圧縮装置のブロック図を示す。
図1において、入力データ・バッファ・レジスタ(以下、IDBRと記す)100は、被圧縮データの1文字を保持する。データ・バッファ・レジスタ(以下、BIDBRと記す)105は、上記IDBR100の出力データを保持する。履歴バッファ(History Buffer)は、コントロール配列110とメモリ配列120とからなり、履歴バッファ内に保持された個々のデータと上記IDBR100の出力データとを比較する。第1の一次セレクタ(以下、PSと記す)130および第2の一次セレクタ(以下、PPと記す)140はそれぞれ、上記履歴バッファ内における比較結果を入力し、一つ前の入力文字までの連続一致情報を元に文字列の連続一致を判定する。二次セレクタ(以下、SSと記す)150は、上記PS130より出力される連続一致情報、あるいは上記PP140より出力される連続一致情報のいずれかを選択する。アドレス発生器160は、プライオリティエンコーダなどで構成され、上記SS150にて選択された連続一致情報を入力し、メモリ配列120内のアドレスを発生する。カウンタ200,205はそれぞれ、上記PS130および上記PP140において格納された連続一致文字列数をカウントする。制御回路220は、データ圧縮装置全体を制御する。コード生成手段225は、コード生成を行う。レジスタ210は、カウンタ200の値を保持する。
以下に、データ圧縮処理の概要について説明する。一般に圧縮コードは、連続一致文字数の長い文字列のほうが連続一致文字数の短い文字列よりも圧縮率は高くなる。従って、個々の文字列の圧縮率を確認しなくても、一部の例外に気をつければ、文字数により圧縮文字列候補の選択が可能となる。
例えば、Lemple−Zivアルゴリズムによる圧縮方式では、圧縮コードは以下の様になっている。圧縮コードには、被圧縮コードを含む“Literal”と、被圧縮コードを含む含まない“Copy_pointer”の2種類、および制御コードがある。Literalは、“0”(1ビット)+非圧縮文字コード(8ビット)で構成されており、Copy_pointerは、“1”(1ビット)+Length_code+Displacementで構成されている。
Length_codeは、Copy_pointerにより表現されている被圧縮文字数を表し、被圧縮文字数が2〜3文字であれば2ビット、4〜7文字は4ビット、8〜15文字は6ビット、16〜31文字は8ビット、32〜271文字は12ビットで表される。本圧縮コードでの最大連続一致文字数は271文字で、これを超える連続一致文字列が見つかると、272文字目から新たな文字列とする。
Displacementは、履歴バッファ内のエントリの位置を示すものであり、例えば512エントリの履歴バッファを用いた場合のDisplacementのビット長は9ビットである。従って、この場合は、Copy_pointerの長さは、12ビットから22ビットまでとなる。
以下、この圧縮コードを例にして、1つの入力文字列を対象として2つの候補文字列、すなわち、圧縮開始文字から始まり辞書登録されている符号化済み文字列と最長一致する文字列STR11、及び該STR11の次の入力文字から始まり辞書登録されている符号化済み文字列と最長に一致するSTR12とからなる第1の圧縮候補文字列と、圧縮開始文字のみからなるSTR21、及び該STR21の次の入力文字から始まり辞書登録されている符号化済み文字列と最長に一致するSTR22とからなる第2の圧縮候補文字列を検索し、コード生成を行う場合について説明する。
ここで、文字列STR21の圧縮コード長は9ビット、Copy_Pointerは12ビット以上であるため、文字列STR21とSTR22がそれぞれ2文字以上である場合は、STR21とSTR22との組み合わせである第2の圧縮候補文字列の圧縮コードのほうが第1の圧縮候補文字列よりも短くなる。例えば、文字列STR11、STR12およびSTR22の長さが2文字の場合、それぞれの圧縮コード長は、それぞれ1ビット+2ビット+9ビットの計12ビットとなり、STR21の圧縮コード長は1ビット+8ビットの計9ビットとである。従って、文字列STR11とSTR12とからなる第1の圧縮候補文字列、及び文字列STR21とSTR22とからなる2の圧縮候補文字列の圧縮コードの総ビット数はそれぞれ、24ビットと21ビットとなり、第2の圧縮候補文字列の圧縮コードのほうが短くなったことが分かる。
しかし、文字列STR11の長さが2文字(圧縮コード長:1ビット+2ビット+9ビット)、文字列STR12が31文字(圧縮コード長:1ビット+8ビット+9ビット)、文字列STR21が1文字(圧縮コード長:1ビット+8ビット)、文字列STR22が32文字(圧縮コード長:1ビット+12ビット+9ビット)の場合、第1の圧縮候補文字列の圧縮コードは30ビット、第2の圧縮候補文字列の圧縮コードは31ビットとなり、第1の圧縮候補文字列の方が圧縮率が良くなる。このような状況は、以下の組み合わせ(発生条件1)において発生する。
発生条件1:
STR11の文字列長 2文字/STR12の文字列長 31文字
STR11の文字列長 3文字/STR12の文字列長 30文字
STR11の文字列長 3文字/STR12の文字列長 31文字
STR11の文字列長 31文字/STR12の文字列長 2文字
STR11の文字列長 30文字/STR12の文字列長 3文字
STR11の文字列長 31文字/STR12の文字列長 3文字
上記条件で圧縮候補文字列を検出した場合、第2の圧縮候補文字列ではなく、第1の圧縮候補文字列を選択する必要がある。他の条件も含め、上記2つの圧縮文字列を選択するための処理手順を整理すると次のようになる。
まず、STR11が2文字未満だった場合は、STR11に対する圧縮コードを生成する。STR11とSTR22の検索が同時に中断した場合は、STR11に対する圧縮コードを生成する。STR11の検索がSTR22の検索よりも早く中断した場合は、STR11に代わりSTR12を対象にして検索を継続する。STR12とSTR22の検索が同時に中断し、さらに検索されたSTR11およびSTR12の文字列長が発生条件1を満たした場合は、STR11、STR12に対する圧縮コードを生成し、そうでない場合はSTR21,STR22に対する圧縮コードを生成する。また、STR22の検索がSTR12の検索よりも早く中断した場合は、STR11およびSTR12に対する圧縮コードをSTR12の中断時に生成する。
次に、本実施の形態1による文字列検索動作の概要を図1を用いて説明する。本実施の形態では、文字列STR11、STR12、STR21、STR22の4つの文字列の検索を行うが、まず、文字列STR11を対象とした検索をPS130を用いて行い、その連続一致文字数をカウンタ200を用いて計測する。
文字列STR11の検索処理は、まず、被圧縮文字列である入力文字列STR11の先頭の文字をIDBR100に入力し、このIDBR100上の文字がメモリ配列120に格納されているかを検索し、その検索結果であるメモリ配列120内の位置情報(MATCH信号)をPS130に格納する。この処理と並行して、次の入力文字に対応するために、IDBR100上の文字をメモリ配列120の適正な位置に格納する。
IDBR100上の文字がメモリ配列120上に格納されていた場合は、2文字目以降の入力文字を処理するために、後続の入力文字をIDBR100に格納し、IDBR100上の文字がメモリ配列120に格納されているかを検索し、その検索結果であるメモリ配列120内の位置情報と上記PS130が保持する位置情報とを用いて後続の入力文字と当該入力文字より前の入力文字とがメモリ配列120において連続しているか否かを確認する。この連続一致確認は、PS130が保持する連続一致文字列の最終文字位置情報を保持するエントリの隣のエントリにおいて、メモリ配列120内で一致文字が見つかったか否かにより行う。
連続一致していることが確認された場合は、新たに連続一致していることが確認された文字のメモリ配列120内の位置情報をPS130に出力し、該PS130の保持データを更新する。そして、制御回路220では、メモリ配列120の検索結果をCOMP_OR信号で、PS130での連続一致確認の結果をPS_OR信号でそれぞれ確認し、連続一致している文字が確認される毎にカウンタ200の値をインクリメントするとともに、連続一致している文字を継続して確認できている間は、IDBR100に新たな文字を入力し上記処理を繰り返すよう制御する。一方、連続一致している文字が確認できなかった場合は、MATCH信号をPS130に格納する。
文字列STR21とSTR22に関しては、まず、文字列STR11の検索の開始時に、該文字列STR11の先頭文字をSTR21としてBIDBR105に格納する。以降の後続の入力文字、すなわち文字列STR11においては2文字目の文字をSTR22とし、該STR22の検索をPP140を用いて上記STR11の検索と並行して同様に行う。すなわち、STR22の検索開始時に、メモリ配列120の検索結果をPP140に格納し、以降の入力文字列に対して、メモリ配列120の検索結果とPP140の保持する情報を用いて、PS130と同様に連続一致確認を行う。このSTR22の連続一致文字数の計測は、カウンタ205を用いて行う。
制御回路220では、メモリ配列120の検索結果をCOMP_OR信号で、PP140による連続一致確認の結果をPP_OR信号でそれぞれ確認し、連続一致している文字が確認される毎にカウンタ205の値をインクリメントする処理を繰り返すよう制御する。また、上記STR11およびSTR22の連続一致検索中に、文字列STR11の検索がSTR22の検索よりも早く終了した場合、検索結果であるカウンタ200の値をレジスタ210に、PS130の内容をSS150にそれぞれ格納し、以降、後続の入力文字列に対して文字列STR12の検索をPS130およびカウンタ200を用いて上記STR11の検索と同様の処理を行うよう制御する。
なお、文字列STR22は、文字列STR11よりも1文字遅れて検索を開始するため、STR11が連続一致している場合はSTR22も必ず連続一致している。言い換えると、連続一致が中断するのは、STR11がSTR22に対して早く中断する場合、または同時に中断する場合である。また、同様にしてSTR12の連続一致確認がSTR22の連続一致確認よりも遅れて開始されるため、STR22がSTR12に対して早く中断するか、または同時に中断する場合だけである。従って、それぞれの文字列の連続一致確認動作の中断の仕方により、連続一致検索の処理方法および圧縮コード生成方法を決定する。
次に、データ圧縮のための詳細なデータの流れを説明する。
検索文字、すなわち被圧縮データの一文字がIDBR100に入力されると、メモリ配列120内の比較器125において、該IDBR100上のデータと、CAM配列に保持されている各エントリ内のデータとを比較し、その比較結果をMATCH信号として出力する。また、メモリ配列120では、上記IDBR100上の文字の比較動作と平行して、メモリ配列120に保持しているデータの更新を行う。
このデータの更新を行うエントリは文字列検索の対象からはずす必要がある。この処理を図2を用いて説明する。図2は、CA110及びメモリ配列120のエントリiの詳細ブロック図である。図において、図1と同一または相当する構成要素については同じ符号を用いる。CAi110は、メモリ配列120内のデータを更新するか否かを選択する書き込みセレクタ(WS)240と、当該エントリiが空きエントリであるか否かを示す空きセル(EC)165とからなる。なお、EC165は、圧縮動作の開始時にリセット信号により初期化される。メモリ配列120iは、当該エントリiのデータを保持するレジスタ121と、上記レジスタ121の保持データとIDBR100上のデータとを比較する比較器125とからなる。
WS240より当該エントリiの書き込み指示が行われた場合、レジスタ121にIDBR100の出力を格納する。そして、IDBR100より検索文字データを、レジスタ121より該エントリに格納されている文字データを、それぞれ比較器125に入力し、EC165より該エントリが空でなく、かつWS240によって該エントリが書き込み対象になっていない事を確認した後、上記2つの文字データを比較し、MATCH[i]信号を出力する。
メモリ配列120の全エントリの中で、IDBR100上の文字と一致する文字を保持したエントリがあるか否かを確認するために、全エントリのMATCH信号の論理和をとる。この論理和演算は、図1における論理和回路180で行ない、その結果をCOMP_OR信号として出力する。COMP_OR信号により一致文字があることを確認した場合は、以降、入力される検索文字列が連続一致するか否かを、PS130およびPP140を用いて確認をする。
次に、メモリ配列120上のエントリ(i−1)とエントリiが連続一致しているか否か如何に判断するかを図3を用いて説明する。図3は、第1の一次セレクタ130及び第2の一次セレクタ140のエントリiの詳細ブロック図である。第1の一次セレクタPSi130は、論理積回路235と、セレクタ233と、レジスタ237とからなる。第2の一次セレクタPPi140は、セレクタ230と、論理積回路234と、セレクタ232と、レジスタ236とからなる。
メモリ配列120内の各エントリiとIDBR100内の文字が一致したか否かを示すMATCH[i]信号がメモリ配列120から出力され、PS130では、このMATCH[i]信号を、文字列STR11および文字列STR12の一致検出に用いる。
PS130内のi番目のエントリ(以下、PPiと記す)の論理積回路235では、MATCH[i]信号と、該エントリの隣のエントリ(i−1)における一致情報(1文字前までの連続一致情報)PS[i−1]信号との論理積を取り、論理和回路185に出力する。論理和回路185では、各エントリから出力される論理積の論理和を取り、連続一致を継続しているエントリがあるか否かを示すPS_OR信号を出力する。セレクタ233では、該PS_OR信号がアサートされた場合は、論理積回路235出力信号を、そうでない場合はMATCH[i]信号を選択し、レジスタ237に格納する。
従って、PS_OR信号がアサートされた場合、すなわち連続一致文字列が検出された場合は、文字列が連続一致していることが確認されたエントリのレジスタ237のみ論理値“1”がセットされ、PS[i]信号として出力される。
文字列STR22の連続一致文字検出を行うPP内のi番目のエントリ(以下、PPiと記す)140に関しても、PSi130とほぼ同様の動作をする。セレクタ230では、隣のエントリ(i−1)における一致情報(1文字前までの連続一致情報)を選択し出力する。なお、PPi140では、文字列STR11よりも一文字遅れて連続一致文字の検出を開始するため、検索を行わない場合は、セレクタ230により論理値“0”を選択できるようにしている。
PPi140の論理積回路234では、MATCH[i]信号とPP[i−1]信号との論理積をとって隣のエントリの文字列と連続しているかを確認し、連続していることを確認した場合は論理積[i]信号を論理和回路190に出力する。論理和回路190では、各エントリから出力された論理積の論理和を取り、履歴バッファ内に連続一致している文字列があるか否かを示すPP_OR信号を出力する。セレクタ232では、該PP_OR信号がアサートされた場合は、論理積回路234出力信号を、そうでない場合はMATCH[i]信号を選択し、レジスタ236に格納する。
従って、PP_OR信号がアサートされた場合は、PPi140内の文字列が連続一致していることが確認されたエントリのレジスタ236のみ論理値“1”がセットされ、PP[i]信号として出力される。
制御回路220では、アドレス発生器160により発生した文字列のアドレス情報を、カウンタ200、カウンタ205、およびレジスタ210より文字列長を、BIDBR105より文字データを入力し、圧縮コードの生成を行うようコード生成手段225を制御する。ここで、アドレス発生器160は、例えばプライオリティエンコーダ等の構成をとっており、2次セレクタSS150より入力した位置情報に基づき文字列圧縮のためのアドレスを発生する。
以下、図1において、STR11とSTR12とからなる第1の圧縮候補文字列と、STR21とSTR22とからなる第2の圧縮候補文字列を検出し、何れの候補文字列を選択し圧縮コード生成を行うかにつき、その処理手順を説明する。
(処理手順1)文字列STR11を対象とした文字列検索の開始
まず、検索処理の開始前に、連続一致文字列数をカウンタ200およびカウンタ205を用いて計測するためにそれぞれのカウント値を初期化しておく。そして、IDBR100上に先頭の文字を入力し、メモリ配列120内での一致検索を行う。その検索結果が、MATCH信号およびCOMP_OR信号として出力される。なお、文字列STR11の検索の開始であるので、検索結果に関係なく、MATCH信号は、セレクタ233を通じてPS130の所定の各エントリに格納される。従って、一致文字列が無かった場合(COMP_OR信号がアサートされない場合)は、PS130の全エントリがクリアされることになる。
上記メモリ配列120内での一致検索の結果、一致文字列が無かった場合は、IDBR100上の文字をLiteralとしてコード出力するとともに、処理手順1に戻り、再度、文字列STR11の検索を行う。Literalコードの出力は、コード生成手段225が対象文字をBIDBR105経由で入力し行う。
一致文字列が見つかった場合は、つまり、COMP_OR信号がアサートされた場合は、カウンタ200をインクリメントするとともに、文字列STR11の検索開始時に、IDBR100上の最初の文字を文字列STR21としてBIDBR105に格納し、以降、処理手順2の処理を行う。
(処理手順2)文字列STR11の検索および文字列STR22の検索開始
処理手順2では、上記処理手順1にて入力文字列の先頭の1文字、すなわち文字列STR11の先頭文字がメモリ配列120内で見つかったため、文字列STR11の後続文字の一致検索を行うとともに、該後続文字を文字列STR22の最初の1文字として文字列STR11の一致検索を開始する。
文字列STR11の連続一致検索はPS130を利用して行ない、連続一致文字列数はカウンタ200を用いて計測する。文字列STR11の連続一致検索と同時に、STR22の先頭文字の検索結果でもあるMATCH信号をPP140に格納する。
検索の結果、STR11が連続一致していた場合は、カウンタ200およびカウント205をインクリメントし、以降処理手順3を行う。
文字列STR11の連続一致が無かった場合は、文字列STR11の先頭文字および現検索対象文字の2文字をLiteralとしてコード出力し、処理手順1に戻る。このコード生成は、IDBR100、およびBIDBR105上の2文字をBIDBR105経由でコード生成手段225に入力し行う。
なお、連続一致文字列が無い場合、2つの要因が考えられる。第1の要因は、IDBR100上の文字がメモリ配列120上に無かった場合である。この場合、COMP_OR信号およびPS_OR信号がアサートされず、文字列STR11およびSTR22ともに見つからない場合である。第2の要因は、PS130において連続一致文字列が見つからなかった場合である。この場合は、PS_OR信号がアサートされない場合で、STR22は見つかっている可能性はあるが、文字列STR11が2文字以上連続していないため、次の入力文字から再度検索を新たに始める。
(処理手順3)文字列STR11およびSTR22の連続一致検索
処理手順3では、上記処理手順2にて文字列STR11の2文字以上が連続一致文字列としてメモリ配列120内で見つかったため、文字列STR11およびSTR22のそれぞれの後続文字の連続一致検索を行う。文字列STR11の処理に関しては、処理手順2と同様である。また、文字列STR22の連続一致検索は、PS130上にある前回の検索結果を利用して行なう。
検索の結果、文字列STR11およびSTR22が連続一致している場合は、カウンタ200およびカウント205をインクリメントし、処理手順3を継続する。
文字列STR11が不一致、文字列STR22が連続一致している場合は、文字列STR11に代わり、新たに文字列STR12の検索を開始するために、カウンタ200の値をレジスタ210に格納するとともに、カウンタ200を初期化する。SS150は、PS130の出力を選択しその値を保持する。さらに、カウンタ205はインクリメントし、処理手順4の処理を行う。
なお、検索の結果が文字列STR11が連続一致、文字列STR22が不一致の場合は発生しない。
(処理手順4)STR11の連続一致が中断
処理手順4では、文字列STR12の先頭文字から新たに検索を行う。すなわち、この時のIDBR100上にある文字が文字列STR12の開始文字となるので、文字列STR12を対象とした文字列検索をPS130を用いて開始するために、PS130に、メモリ配列120の比較結果を示すMATCH信号を格納する。
文字列STR22に関しては、連続一致が継続している場合と、既に連続一致が中断している場合があるが、MATCH信号を用いてPP140において連続一致検索を行う。既に連続一致が中断している場合は、PP140内の連続一致情報が全てクリアされているため、連続一致文字列が見つかることはない。従って、STR22の連続一致検索は、これまでの連続一致状態に依存することなく同一の処理を行う。
この処理における検索の結果、文字列STR12の先頭文字が見つかり、かつSTR22が連続一致を継続している場合、および文字列STR12の先頭文字が見つかり、かつ文字列STR22の連続一致が中断した場合は、処理手順5に移行する。
文字列STR12の先頭文字が見つからず、かつSTR22も連続一致が中断した場合は、文字列STR11のCopy_Pointerおよび、現IDBR100上の文字をLiteralコードとして出力する。このとき、文字列STR11の圧縮コードは、コード生成手段225において、SS150上の位置情報に基づきアドレス発生器160にて生成したアドレスと、レジスタ210上の文字数を用いて生成する。以降は、新たなSTR11を対象として文字列検索を行うために、処理手順1に移行する。
なお、文字列STR12の先頭文字が見つからず、かつSTR22が連続一致を継続する場合は、発生しない。
(処理手順5):文字列STR12およびSTR22の連続一致が継続
処理手順5では、文字列STR12と文字列STR22とが連続一致しているか否かについて検索を行う。なお、この処理は、処理手順3においてSTR11の代わりに文字列STR12の処理することを除けば同様である。
検索の結果、文字列STR12およびSTR22が連続一致している場合は、カウンタ200およびカウンタ205をインクリメントし、処理手順5を継続する。
文字列STR12が連続一致、文字列STR22が不一致の場合は、カウンタ200をインクリメント、およびカウンタ205を初期化する。この処理において、PP140内の各レジスタ236の連続一致情報はクリアされるため、文字列STR12の連続一致がこれ以降継続しても、STR22が連続一致することは無くなる。以降、処理手順5の処理を継続する。
文字列STR12、STR22ともに連続一致が中断した場合は、第1の圧縮候補文字列(文字列STR11とSTR12)、または第2の圧縮候補文字列(文字列STR21とSTR22)のいずれかの圧縮コードを生成し出力する。この場合の圧縮コード出力は、文字列STR11とSTR12とからなる第1の圧縮候補文字列の総文字数と、文字列STR21とSTR22とからなる第2の圧縮候補文字列の総文字数が同じであるため、第2の圧縮候補文字列を選択することを基本とする。
ただし、第1の圧縮候補文字列、つまり、文字列STR11とSTR12それぞれの文字数の組み合わせは、圧縮後のサイズが逆転する場合があるため、この圧縮アルゴリズムにおいては、既に述べた発生条件(上記発生条件1)を満たす場合は、第1の圧縮候補文字列である文字列STR11およびSTR12を選択し圧縮コードを生成する。そのために、制御回路220では、STR12の文字数をカウンタ200から、STR11の文字数をレジスタ210から入力し、2つの候補の何れを用いるか決定する。この決定に基づき、文字列STR12、またはSTR22の連続一致文字列の最終文字の位置情報をSS150に移動する。第1の圧縮候補文字列が選択された場合は、SS150上のSTR11の位置情報に基づくアドレス発生器160でのアドレス発生を行った後に、STR12の位置情報をSS150に移動する。アドレス発生器160は、SS150より連続一致情報を入力し、アドレス生成を行う。
第2の圧縮候補文字列である文字列STR21およびSTR22が選択された場合は、コード生成手段225において、文字列STR21はLiteralコードを出力するために、BIDBR105より文字列STR21に対応する文字を入力し、コード出力を行う。文字列STR22に関してはCopy_Pointerを出力するために、コード生成手段225では、アドレス発生器160より開始アドレスとカウンタ205の値を用いてコード出力を行う。
また、圧縮対象文字列として、文字列STR11およびSTR12を選択した場合は、文字列STR11およびSTR12に関してはともにCopy_Pointerを出力する。そのために、文字列STR11については、SS150より位置情報を入力し、アドレス生成をアドレス発生器160で行い、コード生成手段225においてその出力を入力するとともに、文字数をレジスタ210より入力しコードを出力する。
次に、文字列STR12については、PS130より位置情報をSS150経由でアドレス発生器160に入力し、開始アドレスを生成するとともに、コード生成手段225においてそのアドレスを入力し、カウンタ200より文字数を入力しコード出力を行う。なお、コード生成と平行して、新たな文字列STR11を対象として文字列検索をおこなうために、カウンタ200およびカウンタ205を初期化し、PS130にMATCH信号を格納するとともに、PP140はセレクタ230で論理値“0”を選択し内部の情報をクリアする。
なお、文字列STR12が不一致、STR22が連続一致している場合は、この組み合わせは発生しない。
以上説明したように、処理手順1から5を繰り返し、連続一致文字検索およびコード生成を行う。
このような実施の形態1では、1次セレクタとしてPS130とともにPP140を設け、各1次セレクタでの連続一致文字数をカウンタ200および205でカウントし、レジスタ210で文字列STR11のカウント値を保持することにより、文字列STR11、STR12、STR22の連続文字列の検索および連続文字数がカウントでき、制御回路220において最適な文字コードを生成するよう制御することができる。
さらに、1つの入力文字列に対して、連続一致文字列検索時に1文字ずらした文字列の検索を平行して検索するとともに、2つの候補文字列に対して、その文字列長に基づき選択を行うようにしたので、複雑な演算を行うことなく文字列長により圧縮候補文字列を選択することができ、高速に処理が行える。
なお、本実施の形態1では、文字列STR22の検索開始時に、文字列STR11の連続一致文字列と文字列STR22の先頭の文字のエントリが一致する場合に、STR11を優先したが、STR22を優先しても良い。
(実施の形態2)
以下に、本発明の実施の形態2にかかるデータ圧縮装置について説明する。
図4は、本実施の形態2のデータ圧縮装置のブロック図を示す。図4において、図1と同一または相当する構成要素については同じ符号を用い、その説明を省略する。なお、実施の形態1の構成と異なる点は、第2の1次セレクタをCA300と共用し、かつCA300を1次セレクタとして使うために、メモリ配列120の全エントリにデータを格納したことを示すためのFULLレジスタ340を設けた点である。
FULLレジスタ340は、データの圧縮開始からメモリ配列120の全エントリにデータが格納されるまでの期間は論理値“0”、メモリ配列120の全エントリにデータが格納された後は論理値“1”になる。
図5は、CA300およびメモリ配列120のひとつのエントリの詳細ブロック図である。図5において、図2と同一または相当する構成要素については同じ符号を用い、その説明を省略する。
論理和回路360は、FULLレジスタ340の出力値と、EC350の出力値との論理和を取り、比較器125に出力する。従って、論理和回路360の出力は、FULLレジスタ340の出力が論理値“0”の場合、EC350の値がそのまま出力され、当該エントリが空きであるか否かにより比較器125の制御を行うことができる。また、FULLレジスタ340の出力が論理値“1”の場合、常に論理値“1”が出力され、比較器125はEC350とは独立に動作可能となる。つまり、FULLレジスタ340が論理値“0”の間は、文字列STR21およびSTR22の検索は行わず、FULLレジスタ340が論理値“1”になった後、STR21およびSTR22の検索を行うよう制御する。
EC350は、文字列STR22の検索時にPPO信号を入力し格納する。
図6は、1次セレクタPS130およびPPM310のひとつのエントリの内部ブロック図である。図6において、図3と同一または相当する構成要素については同じ符号を用い、その説明を省略する。PPM310は、実施の形態1で説明した図3に示すPP140とほとんど同じ構成であるが、レジスタ236とEC165とを共用するようにしたため、レジスタ236が削除された点と、連続一致情報がEC350上に格納されているため、EC信号を入力するようにした点が異なる。
以下、PPO信号の生成方法について、図6を用いて説明する
PPM310では、連続文字列の検索開始の場合、セレクタ232でMATCH[i]信号を選択しPPO信号として出力する。また、連続一致確認の場合、セレクタ230でEC[i−1]信号を選択し、該EC[i−1]信号とMATCH[i]信号との論理積を論理積回路234で求め、セレクタ232でこの出力を選択しPPO[i]信号として出力する。
以上のように生成されたPPO信号が全エントリのEC350に格納された後、つまり、メモリ配列120の全エントリにデータ(連続一致情報)が格納された後、EC350は1次セレクタとして連続一致文字列STR22の検索に用いることが可能となる。なお、他の動作は上記実施の形態1と同じである。
このような実施の形態2では、FULLレジスタ340を設け、EC350に第2の圧縮候補文字列の連続一致確認に使用する一致情報を格納することにより、レジスタの共用が可能となり、ハードウェアの増加を抑えるとともに、圧縮率を高めることができる。
(実施の形態3)
以下に、本発明の実施の形態3にかかるデータ圧縮装置について説明する。
図7は、本実施の形態3によるデータ圧縮装置のブロック図を示す。図7において、図1と同一または相当する構成要素は同じ符号を用い、その説明を省略する。なお、実施の形態1の構成と異なる点は、1次セレクタをPS130のみとし、一次セレクタPS130において第1の圧縮候補文字列(文字列STR11、STR12)、及び第2の圧縮候補文字列(文字列STR21、STR22)の連続一致情報を両方処理するようにし、PS130において、STR11、STR12、STR21,STR22のうち、いずれの候補文字列の連続一致情報を管理しているか、その情報を保持するMDセレクタ500、および2次セレクタSS550を設けた点である。
圧縮のための連続一致文字検索は、圧縮対象文字がIDBR100に格納され、その文字と既に圧縮された文字列との一致検索がメモリ配列120を用いてなされ、その結果を用いてPS130において連続一致を確認する。文字列STR11、STR12とSTR21、STR22のうちの何れの連続一致情報がPS130に格納されているかを示すために、文字列STR22の最初の文字に対するメモリ配列120での検索結果をMDセレクタ500に格納する。
図8は、PS130およびMD500のひとつのエントリの詳細ブロック図である。図8において、図1と同一または相当する構成要素については同じ符号を用い、その説明を省略する。
MDセレクタ500の一つのエントリは、PS130のレジスタ237がいずれの文字列情報を保持しているかを示すレジスタ236と、文字列STR22の検索の開始時にMATCH信号を取り込む論理和回路502と、文字列STR22の連続一致を確認するための論理和回路501とからなるものである。
ここで、MDセレクタ500の詳細について、図8を用いて説明する。
レジスタ236は、文字列STR22の最初の文字の検索を行う場合に、現MATCH[i]信号を格納する。ただし、そのエントリがPS130において文字列STR11の連続一致文字列でもあることが分かった場合は、文字列STR11を優先するために、レジスタ236をクリアする。また、文字列STR22の最初の文字以降の連続一致を確認している場合は、該エントリの隣のエントリにおいて連続一致していることがPS130で確認されており、かつMD[i−1]信号によりSTR22の文字列候補であることが示されている場合にセットされるよう、セレクタ232、論理和回路501,502を制御する。
次に、全体の動作を図9を用いて説明する。図9(a)は、この動作例における入力データ(被圧縮データ)を示しており、入力データの下に、この例における2つの連続一致文字列を矢印で示している。この動作例では、履歴バッファは既に埋まっており、図9(b)は、圧縮(検索)開始時における履歴バッファ上のデータと、データが入力される毎の、履歴バッファの各エントリに対応したMATCH信号、PS信号、およびMD信号(つまり、履歴バッファのエントリiの場合は、MATCH[i]信号、PS[i]信号、MD[i]信号)を、入力文字列に対応させて上から下に向けて示している。
(1)最初に文字Aを入力し検索を行なう。
まず、文字列STR11の第1文字目を対象として検索を行う。なお、文字AはSTR21となる。
履歴バッファの検索結果は列AのMATCH信号に出力される。この例では、履歴バッファのエントリ0の位置に文字Aが格納されているので、このエントリにおいてだけMATCH信号が1となる。最長一致文字列の最初の文字の検索であるので、MATCH信号がそのままPS130に格納され、STR11を対象にのみ検索を行っているので、MD信号は全て0のままとなる。
(2)文字Bの検索
次に、文字列STR11の第2文字、および文字列STR22の第1文字目を対象として行う。
履歴バッファの検索結果は列BのMATCH信号に出力される。本例では、履歴バッファのエントリ1および6に文字Bが格納されておりこの位置のMATCH信号に1が出力される。
そして、エントリ1は、エントリ0のPS信号が1となっていることから連続一致していることが分かるので、エントリ1のPS信号は1となる。また、エントリ0のMDビットが0であるから、STR21を対象にしたものではないことが分かり、MDビットは0となる。
一方、エントリ6は、エントリ5のPSビットが0であること、およびSTR21の先頭文字の検索タイミングであることから、MACTH信号を一次セレクタPSに格納するとともに、MD信号を1にする。
(3)文字Cの検索
次に、文字列STR11の第3番目の検索、および文字列STR22の第2番目の文字の検索を行う。
履歴バッファの検索結果は列CのMATCH信号に出力される。本例では、STR11候補がエントリ1まで連続一致しているが、エントリ2におけるMATCH信号は0となっていることから、連続一致が中断したことを確認することができ、STR11が文字列AB、すなわちエントリ0とエントリ1の2文字であることが決定された。
一方、STR21候補に関しては、MATCH信号は履歴バッファのエントリ7において1であり、エントリ6のPS信号およびMD信号が1であるので、STR22候補の連続一致であることがわかり、エントリ7のPS信号およびMD信号に1を格納する。
さらに、MATCH信号は、履歴バッファのエントリ12において一致しており、このエントリに関してはエントリ11のPS信号およびMD信号が0となっており、文字列STR11に対する連続一致ではないことから文字列STR12候補の先頭文字であることが分かり、対応するエントリのMATCH信号をPS信号に格納する。さらに、文字列STR22の先頭文字の検索を行うタイミングではないのでMDビットは0となる。
(4)文字Dの検索
次に、文字列STR12の第2番目の検索、および文字列STR22の第3番目の検索を行う。
履歴バッファの検索結果は列DのMATCH信号に出力される。本例では、エントリ8とエントリ13の位置のMATCH信号に1が出力される。
文字列STR12の候補は、エントリ13で連続一致しているので対応するエントリのPS信号が1に、MD信号が0に設定される。
また、文字列STR22の候補は、エントリ8で連続一致しているので、対応エントリのPS信号が1に、MD信号が1に設定される。
(5)文字Gの検索
次に、文字列STR12の第3番目の検索、および文字列STR22の第4番目の検索を行う。
履歴バッファの検索結果は列GのMATCH信号に出力される。本例では、一致したエントリは無いことがわかる。従って、全エントリにおいて検索の結果、一致したエントリが無いので、全エントリのPS信号およびMD信号が0に設定され、文字列STR12およびSTR22の連続一致が中断したことを確認することができ、
STR11=”AB”、STR12=”CD”
STR21=”A”、 STR22=”BCD”
のように確定した。
この結果に基づき、文字列STR21,STR22の連続一致の組み合わせに対応した圧縮コードを生成する。
コード生成は以下の手順で行う。
第2の圧縮候補文字列が選択された場合、つまり、文字列STR21およびSTR22が選択された場合、文字列STR21に関してはLiteralコードを出力するために、BIDBR105より文字列STR21に対応する文字を入力し、コード出力を行う。文字列STR22に関してはCopy_Pointerを出力するために、MDセレクタ500より文字列STR22の位置情報を入力しアドレス発生器160よりアドレスを生成するとともに、カウンタ205の値を用いてコード出力を行う。
第1の圧縮候補文字列が選択された場合、つまり、文字列STR11およびSTR12が選択された場合は、文字列STR11およびSTR12に関してともにCopy_Pointerを出力する。文字列STR11については、文字列STR11の検索が終了した時点で、PS130およびMD500の出力をSS550に入力し、各エントリごとにPS130の出力とMD500の出力を反転したものとの論理積を取り、その結果を保持する。これと同時に文字列STR11の文字列長をカウンタ200からレジスタ210に格納しておく。そして、文字列STR11のコード生成時に、SS550上の値からアドレス発生器160にてアドレスを生成し、レジスタ210より文字数を入力し、コードを生成する。また、文字列STR12については、PS130およびMD500の出力をSS550に入力し、各エントリごとにPS130の出力とMD500の出力を反転したものとの論理積を取りその結果に基づき、アドレス発生器160で開始アドレスを生成し、カウンタ200より文字数を入力しコード出力を行う。
なお、コード生成の条件は、上記実施の形態1と同様に行う。この例では文字列STR11とSTR12の総文字数と、文字列STR21とSTR22の総文字数が同じであるが、実施の形態1におけるコード生成時の発生条件を満たさないため、文字列STR21およびSTR22を選択する。
このような実施の形態3では、1次セレクタとしてPS130のみ設け、2つの候補の何れの連続一致情報を保持するかMD500により管理し、それぞれの候補文字列の連続一致文字数をカウンタ200および205でカウントし、レジスタ210でSTR11のカウント値を保持することにより、STR11、STR12、STR22の連続文字列の検索および連続文字数がカウントでき、制御回路220において最適な文字コードを生成することができる。
また、1つの入力文字列に対して、連続一致文字列検索時に1文字ずらした文字列の検索を平行して検索するとともに、2つの候補文字列に対して、その文字列長に基づき選択を行うようにしたので、複雑な演算を行うことなく文字列長により圧縮候補文字列を選択することができ、高速に処理が行える。
(実施の形態4)
以下に、本発明の実施の形態4にかかるデータ圧縮装置について説明する。
図10は、本実施の形態4にかかるデータ圧縮装置のブロック図を示す。図10において、図7と同一または相当する構成要素については同じ符号を用い、その説明を省略する。なお、実施の形態3の構成と異なる点は、MDセレクタをCA300において共用し、かつCA300をMDセレクタとして使うために、メモリ配列120の全エントリにデータを格納したことを示すためのモード設定用にFULLレジスタ340を設けた点である。
FULLレジスタ340は、データの圧縮開始からメモリ配列120の全エントリにデータが格納されるまでの期間は論理値“0”に設定され、メモリ配列120の全エントリにデータが格納されるた後は論理値“1”となる。
図11にCAレジスタ300およびメモリ配列120の1つのエントリの詳細ブロック図を示す。図11において、図5と同一または相当する構成要素については同じ符号を用い、その説明を省略する。
論理和回路360は、FULLレジスタ340の値と、ECレジスタ350の値との論理和を取り、比較器125に出力する。
図12は、1次セレクタPS130およびPMD600のひとつのエントリの内部ブロック図である。図12において、図8と同一または相当する構成要素については同じ符号を用い、その説明を省略する。
PMD600は、上記実施の形態3で説明した図8に示すMD500とほとんど同じ構成であるが、レジスタ236とECレジスタ350とを共用するようにしたため、レジスタ236が削除された点と、連続一致情報がECレジスタ350上に格納されているため、EC信号を入力するようにした点が異なる。
次に、本実施の形態4によるデータ圧縮装置のCAレジスタ300の動作について説明する。
FULLレジスタ340の出力が論理値“0”の場合、論理和回路360から比較器125に対しECレジスタ350の値をそのまま出力し、当該エントリが空きであるか否かにより比較器125の制御を行う。
FULLレジスタ340の出力が論理値“1”の場合、論理和回路360から比較器125に対し論理値“1” を出力し、レジスタ121が常に空きエントリでないことを示す。そして、ECレジスタ350では、FULLレジスタ340が論理値“1”にセットされた後、次のように制御される。
文字列STR22の検索開始時に、文字列STR11の候補文字列で無い場合(PS[i−1]信号136が論理値“0”)はPMD[i]信号を格納し、それ以外の場合は論理値“0”をECレジスタ350に設定する。文字列STR22の最初の文字の検索で無い場合は、PS[i−1]130により隣のエントリまで連続一致し、かつEC[i−1]レジスタ350によりSTR22の文字列候補であることが示されているとき、PMD[i]信号をECレジスタ[i]350に格納する。
以上のようにして、FULLレジスタ340が論理値“1”となるまでは、文字列STR21およびSTR22の検索は行わず、論理値“1”になった後、文字列STR21およびSTR22の検索を行う。他の動作は、実施の形態3と同じである。
このような実施の形態4では、FULLレジスタ340を設けたことにより、メモリ配列120の全エントリが埋まった後はMDセレクタとして連続一致文字列STR11、STR12、およびSTR22の検索に用いることが可能となる。さらに、MD600をECレジスタを用いて実装することにより、必要なレジスタ(フリップ・フロップ)を共用できハードウェアを削減することができる。
(実施の形態5)
以下に、本発明の実施の形態5にかかるデータ圧縮装置について説明する。
図13に、本実施の形態5によるデータ圧縮装置のブロック図を示す。図13において、図1と同一または相当する構成要素については同じ符号を用い、その説明を省略する。なお、実施の形態1と異なる点は、FULLレジスタ340、IDBR100の出力を格納するバッファ(以下、CBUFと記す)900、比較器910、および制御用配列(以下、CAと記す)710を設けた点である。
本実施の形態5によるデータ圧縮装置は、メモリ配列120の故障検出を、IDBR100から故障検出に使用する文字をCBUF900に退避し、その退避した文字によるメモリ配列120の検索結果、すなわち比較器125の出力をエントリ毎に記録しておき、CBUF900と比較器910により同じ文字が再度IDBR100に入力されたことを確認した場合に、IDBR100上の文字の検索結果が前回の結果と一致するか否かを確認することにより行うものである。
図13において、CA710は、故障検出のための期待値として比較器125の出力を格納する。このCA710では、空きエントリの管理、および書き込みエントリの管理を行うが、空きエントリの管理をしている際に故障検出を行う。そのため、空きエントリの管理情報、あるいは故障検出の期待値のいずれの情報を保持するかをFULLレジスタ340を用いて制御する。
FULLレジスタ340は、メモリ配列120の全エントリへのデータの格納が終わるまで、すなわち空きのエントリがある間は論理値“0”であり、全エントリへのデータ格納完了により論理値“1”となる。従って、このFULLレジスタ340の値が論理値“0”の場合は、CA710で空きエントリの管理を行い、FULLレジスタ340の値が論理値“1”の場合に故障検出に使用する。
CBUF900は、FULLレジスタ340の出力が論理値“1”の場合に、メモリ配列120内のエントリの故障を検出するために、IDBR100の出力する文字を格納する。
比較器910は、CBUF900の出力文字とIDBR100の出力文字とを比較しその結果を出力する。CA710のEC350では、この出力を用いて、前回の検索結果との比較を行うか否かを判断する。
なお、CBUF900の文字の更新は、故障検出に使用する文字がメモリ配列120内からなくなった時点で、CBUF900上の文字を新たな文字と置き換える。この置き換えを行うことで、メモリ配列120の全エントリの故障検出が行えることになる。
図14に、メモリ配列120およびCA710のひとつエントリの詳細なブロック図を示す。図14において、図5と同一または相当する構成要素については同じ符号を用い、その説明を省略する。なお、上記実施の形態1と異なる点は、EC350をメモリ配列120の故障検出に使用する点である。
CA710は、FULLレジスタ340が論理値“0”の間は、上記実施の形態1のCA110と同様の動作を行う。FULLレジスタ340の論理が1になった後は、論理和回路360の出力が常に論理値“1”となり、IDBR100とレジスタ121上の文字の比較を行う比較器125はECレジスタ350の値に依存することなく処理を行えるようになる。
以下に、メモリ配列120の故障検出方法について説明する。
まず、レジスタ121に既に登録されている文字とIDBR100上の文字との比較を比較器125で行い、その比較結果を対応するエントリのEC350に格納するとともに、IDBR100上の文字をCBUF900に格納する。
また、IDBR100上の文字を格納するメモリ配列120の該エントリは、書き換え対象のエントリであるので、比較器125の比較結果は常に不一致となるが、書き込まれる文字はCBUF900上の文字と同一なので該エントリのECレジスタ350に論理値“1”を設定する。このように設定することにより、IDBR100に同じ文字が入力された場合、該エントリにおける比較器125の結果は一致することが期待されるが、故障が生じていた場合は比較器125の比較結果は不一致となり、メモリ配列120での故障検出が行われる。
次に、新たな圧縮対象の文字がIDBR100に格納され、メモリ配列120の検索を行う。この検索において、まずIDBR100上のデータとCBUF900上のデータが比較器910において比較され、一致したか否かその結果が出力される。この比較において一致していた場合は、メモリ配列120内の各エントリのMATCH信号と、ECレジスタ350に格納された論理が一致することを排他的論理和回路930で確認する。
さらに、メモリ配列120の全エントリにおいて一致したか否かを、論理積回路925を用いて確認する。メモリ配列120の全エントリにおいて一致することを確認した場合、すなわち論理積回路925の出力が論理値“0”となった場合は、メモリ配列120において故障は生じていないと判断し、次の入力文字を処理する。一方、一致しないことを確認した場合、すなわち論理積回路925の出力が論理値“1”の場合は、メモリ配列120において故障が生じたと判断する。
比較器910にてCBUF900の出力文字とIDBR100の出力文字とを比較した結果、一致しなかった場合は、期待値となる比較結果が無いので、故障検出は行わず、次の入力文字を処理する。なお、比較器910において不一致であった場合は、IDBR100の文字を格納するメモリ配列120内のエントリに対応するECレジスタ350の値をクリアする。
このECレジスタ350のクリアにより、いずれのエントリにおいてもCBUF900と同じ文字を格納していないことを、ECレジスタ350の値が全て論理値“0”になったか否かを論理和回路920で検出する。
論理和回路920の出力が論理値“0”の場合は、故障検出が行えない。従って、次のIDBR100への入力文字をCBUF900へ再格納する。
論理和回路920の出力が論理値“0”で無い場合は、CBUF900上の文字と同じ文字を格納したメモリ配列120上のエントリがまだあるので、CBUF900を更新せず、処理を継続する。その後の処理は、上記した通りである。
このような実施の形態5では、CBUF900、比較器910およびECレジスタ350を用いて、各エントリ毎に比較結果を確認することが出来、さらにECレジスタ350をFULLレジスタ340により使用方法を変更することことで、必要なレジスタを増加することなくメモリ配列120の故障検出を行うことができる。
なお、以上の説明では、CBUF900上の文字と同じ文字を格納するエントリがなくなった時点で、CBUF900の更新をするよう構成した例で説明したが、比較器910でN回(Nは1以上の整数)の一致があった場合にCBUF900の文字の更新を行う構成についても同様に実施可能である。
本発明にかかるデータ圧縮装置は、ハードウエア規模を抑えてデータ圧縮を効率よく行うことのできるデータ圧縮装置として有用である。
本発明の実施の形態1におけるデータ圧縮装置のブロック図 本発明の実施の形態1におけるヒストリバッファの詳細ブロック図 本発明の実施の形態1における1次セレクタのブロック図 本発明の実施の形態2におけるデータ圧縮装置のブロック図 本発明の実施の形態2におけるヒストリバッファの詳細ブロック図 本発明の実施の形態2における1次セレクタのブロック図 本発明の実施の形態3におけるデータ圧縮装置のブロック図 本発明の実施の形態3における1次セレクタのブロック図 被圧縮データの一例を示す図 図9(a)に示す被圧縮データが入力された場合の連続一致文字検索を説明するための図 本発明の実施の形態4におけるデータ圧縮装置のブロック図 本発明の実施の形態4におけるヒストリバッファの詳細ブロック図 本発明の実施の形態4における1次セレクタのブロック図 本発明の実施の形態5におけるデータ圧縮装置のブロック図 本発明の実施の形態5におけるヒストリバッファの詳細ブロック図 従来のデータ圧縮装置の符号器の構成図 従来の故障検出可能なデータ圧縮装置のブロック図
符号の説明
10,20 文字列候補
15,25 圧縮率演算部
30 比較部
40 符号出力部
50 バッファメモリ
60 履歴バッファ
70 比較器
100,105 入力データバッファ
110 制御配列
120 メモリ配列
130,140 一次配列
150 二次配列
160 アドレス発生器
180,195,190 論理和回路
200,205 カウンタ
210 レジスタ
220 制御回路
240 書き込み選択セル
300 制御配列
350 EC
600 PMD
710 制御配列
340 FULLレジスタ
900 CBUF
910 比較器

Claims (11)

  1. 入力文字列と一致する符号化済み文字列の検索を行い、その結果を用いて入力文字列を符号化するデータ圧縮装置において、
    符号化するための文字を受け取る入力手段と、
    既に符号化済みの文字を上記入力手段より入力し、指定アドレスに格納する記憶手段と、
    上記入力手段で受け取った文字と上記記憶手段に格納されている個々の文字とを比較し、上記入力手段で受け取った文字が上記記憶手段に格納されているか否かを判断する比較手段と、
    上記記憶手段に格納されている文字列のうち、上記入力文字列の検索開始文字から始まり最長に一致する第1の文字列と、該第1の文字列の次の文字から始まり最長に一致する第2の文字列とからなる第1の符号化候補文字列の検索を上記比較手段の出力に基づき行う第1の検出手段と、
    上記第1の検出手段により検出された上記第1の符号化候補文字列の長さを求める第1の計数手段と、
    上記記憶手段に格納されている文字列のうち、上記入力文字列の上記検索開始文字の次の文字から始まり最長に一致する第3の文字列の検索を上記比較手段の出力に基づき行う第2の検出手段と、
    上記第2の検出手段により検出された、上記検索開始文字列と上記第3の文字列とからなる第2の符号化候補文字列の長さを求める第2の計数手段と、
    上記第1,第2の検出手段の検索結果、および上記第1,第2の計数手段の出力に基づき、上記第1の符号化候補文字列、または上記第2の符号化候補文字列のいずれかを選択し、符号化する符号化手段と、を備えた、
    ことを特徴とするデータ圧縮装置。
  2. 請求項1に記載のデータ圧縮装置において、
    上記符号化手段は、上記第1の検出手段による上記第2の文字列の検索、及び上記第2の検出手段による上記第3の文字列の検索が同一の入力文字の検索時に終了した場合は、上記第2の符号化候補文字列を選択し符号化する、
    ことを特徴とするデータ圧縮装置。
  3. 請求項1に記載のデータ圧縮装置において、
    上記符号化手段は、上記第1の検出手段による上記第2の文字列の検索、上記第2の検出手段による上記第3の文字列の検索が同一の入力文字の検索時に終了した場合は、上記第1の文字列及び上記第2の文字列の総文字数、あるいは上記検索開始文字及び上記第3の文字列の総文字数に基づいて上記選択を行う、
    ことを特徴とするデータ圧縮装置。
  4. 請求項1ないし請求項3のいずれか1項に記載のデータ圧縮装置において、
    上記記憶手段の全てのエントリに文字が格納されたことを示す状態表示手段と、
    上記状態表示手段より上記記憶手段の各エントリの格納状態を入力し、上記記憶手段に空きエントリがある場合には上記記憶手段のエントリ毎の空き情報を格納し、上記記憶手段に空きエントリが無い場合には上記第2の検出手段の検出情報を格納する情報格納手段とを備えた、
    ことを特徴とするデータ圧縮装置。
  5. 入力文字列と一致する符号化済み文字列の検索を行い、その結果を用いて入力文字列を符号化するデータ圧縮装置において、
    符号化するための文字を受け取る入力手段と、
    既に符号化済みの文字を上記入力手段より入力し、指定アドレスに格納する記憶手段と、
    上記入力手段で受け取った文字と上記記憶手段に格納されている個々の文字とを比較し、上記入力手段で受け取った文字が上記記憶手段に格納されているか否かを判断する比較手段と、
    上記記憶手段に格納されている文字列のうち、上記入力文字列の異なる開始文字から始まり最長に一致する複数の文字列を上記比較手段の出力に基づき検出する検出手段と、
    上記検出手段において最初に検出された文字列を含む符号化候補文字列の長さを求める第1の計数手段と、
    上記比較手段および前記検出手段の出力を入力し、上記検出手段において検出した複数の文字列の中で最初に検出された文字列以外の文字列を識別する論理手段と、
    上記論理手段において検出された文字列の中で上記第1の計数手段とは異なる開始文字から始まる文字列を含む符号化候補文字列の長さを求める第2の計数手段と、
    上記第1の係数手段、および上記第2の計数手段の出力に応じて上記検出手段で検出した文字列の何れかを選択し、符号化する符号化手段とを備えた、
    ことを特徴とするデータ圧縮装置。
  6. 請求項5に記載のデータ圧縮装置において、
    上記入力文字列のうち、検索開始文字及び該検索開始文字の次の文字から始まる第4の文字列を第3の符号化候補文字列とし、
    上記入力文字列のうち、上記検索開始文字から始まる第5の文字列、及び該第5の文字列の次の文字から始まる第6の文字列を第4の符号化候補文字列とし、
    上記検出手段および第1の計数手段は、第4の符号化候補文字列を検索し、
    上記論理手段および第2の計数手段は、第3の符号化候補文字列を検索する、
    ことを特徴とするデータ圧縮装置。
  7. 請求項6に記載のデータ圧縮装置において、
    上記符号化手段は、上記第4の文字列の検索と上記第6の文字列の検索が同一の入力文字で終了した場合は、上記第3の符号化候補文字列を選択し符号化する、
    ことを特徴とするデータ圧縮装置。
  8. 請求項6に記載のデータ圧縮装置において、
    上記符号化手段は、上記第4の文字列の検索と上記第6の文字列の検索が同時に終了した場合は、上記第3の符号化候補文字列の総文字数、あるいは上記第4の符号化候補文字列の総文字数に基づいて標記選択を行う、
    ことを特徴とするデータ圧縮装置。
  9. 請求項6ないし請求項7のいずれか1項に記載のデータ圧縮装置において、
    上記記憶手段の全てのエントリに文字が格納されたことを示す状態表示手段と、
    上記状態表示手段より上記記憶手段の各エントリの格納状態を入力し、上記記憶手段に空きエントリがある場合には上記記憶手段のエントリ毎の空き情報を格納し、上記記憶手段に空きエントリが無い場合には上記論理手段の検出情報を格納する情報格納手段とを備えた、
    ことを特徴とするデータ圧縮装置。
  10. 請求項1または請求項5に記載のデータ圧縮装置において、
    上記比較手段から出力される個々の比較結果を格納する結果格納手段と、
    上記入力手段で受け取ったデータを格納するデータ格納手段と、
    上記入力手段で受け取ったデータと上記データ格納手段のデータとを比較する第2の比較手段と、
    上記第2の比較手段により上記両データが一致していることが確認された場合、上記比較手段の出力と上記結果格納手段に格納された値とを比較し、一致していなければ再度比較を行うよう上記比較手段を制御する比較制御手段とを備えた、
    ことを特徴とするデータ圧縮装置。
  11. 請求項10に記載のデータ圧縮装置において、
    上記記憶手段の全てのエントリに文字が格納されたことを示す状態表示手段と、
    上記状態表示手段より上記記憶手段の各エントリの格納状態を入力し、上記記憶手段に空きエントリがある場合には上記記憶手段のエントリ毎の空き情報を格納し、上記記憶手段に空きエントリが無い場合には上記第2の検出手段の検出情報を格納する情報格納手段とを備えた、
    ことを特徴とするデータ圧縮装置。
JP2003413665A 2003-12-11 2003-12-11 データ圧縮装置 Pending JP2005175940A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003413665A JP2005175940A (ja) 2003-12-11 2003-12-11 データ圧縮装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003413665A JP2005175940A (ja) 2003-12-11 2003-12-11 データ圧縮装置

Publications (1)

Publication Number Publication Date
JP2005175940A true JP2005175940A (ja) 2005-06-30

Family

ID=34733730

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003413665A Pending JP2005175940A (ja) 2003-12-11 2003-12-11 データ圧縮装置

Country Status (1)

Country Link
JP (1) JP2005175940A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012090584A1 (ja) * 2010-12-28 2012-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 検索開始点を決定する装置及び方法
GB2501195A (en) * 2011-11-01 2013-10-16 Ibm Device and method for determining search starting point
JP2014182810A (ja) * 2013-03-15 2014-09-29 Intel Corp デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置
US9043676B2 (en) 2010-12-28 2015-05-26 International Business Machines Corporation Parity error recovery method for string search CAM

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012090584A1 (ja) * 2010-12-28 2012-07-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 検索開始点を決定する装置及び方法
CN103270699A (zh) * 2010-12-28 2013-08-28 国际商业机器公司 用于确定搜索起点的装置和方法
JP5520391B2 (ja) * 2010-12-28 2014-06-11 インターナショナル・ビジネス・マシーンズ・コーポレーション 検索開始点を決定する装置及び方法
US9043676B2 (en) 2010-12-28 2015-05-26 International Business Machines Corporation Parity error recovery method for string search CAM
US9372887B2 (en) 2010-12-28 2016-06-21 International Business Machines Corporation Compression ratio improvement by lazy match evaluation on the string search CAM
CN103270699B (zh) * 2010-12-28 2016-08-10 国际商业机器公司 用于确定搜索起点的装置和方法
DE112011104633B4 (de) * 2010-12-28 2016-11-10 International Business Machines Corporation Einheit zum Ermitteln des Ausgangspunkts für eine Suche
US11120867B2 (en) 2010-12-28 2021-09-14 International Business Machines Corporation Hardware compression with search string matching
GB2501195A (en) * 2011-11-01 2013-10-16 Ibm Device and method for determining search starting point
GB2501195B (en) * 2011-11-01 2018-02-21 Ibm Apparatus and method for determining search start point
JP2014182810A (ja) * 2013-03-15 2014-09-29 Intel Corp デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置

Similar Documents

Publication Publication Date Title
KR100702428B1 (ko) 데이터 압축 방법 및 회로
US8838551B2 (en) Multi-level database compression
CA2077271C (en) Method and apparatus for compressing data
US6614368B1 (en) Data compression method and apparatus utilizing cascaded character tables
US4959785A (en) Character processing system with spelling check function that utilizes condensed word storage and indexed retrieval
EP0688104A2 (en) Data compression method and apparatus
JPH07297728A (ja) パターン一致を探索するための方法およびシステム
EP0628228A1 (en) Data compression using hashing
US11120867B2 (en) Hardware compression with search string matching
KR20120115244A (ko) 데이터 압축 동안의 대안적 인코딩 솔루션들 평가
US8677079B2 (en) Selecting a position where data is stored
US6597740B2 (en) Variable-length encoding and decoding apparatus
US20100095099A1 (en) System and method for storing numbers in first and second formats in a register file
GB2500524A (en) Apparatus and method for processing sequence of data element
JP2005175940A (ja) データ圧縮装置
US20090319867A1 (en) Memory system and memory access method
JP5095033B2 (ja) データ圧縮装置及びデータ圧縮方法及びプログラム
EP1990732A1 (en) Lru control device, lru control method, and lru control program
US11461008B2 (en) Memory system for improving compression performance of a dictionary coder circuit
CN115357216A (zh) 数据处理方法、介质、电子设备和程序产品
CN110798223B (zh) 一种最小游程切换点标记编码压缩方法及装置
EP1508200B1 (en) Method and apparatus for parallel data compression according to the lz77 algorithm
US6513053B1 (en) Data processing circuit and method for determining the first and subsequent occurences of a predetermined value in a sequence of data bits
US11777518B2 (en) Data compression device, memory system and method
US3701094A (en) Error control arrangement for information comparison