JP5251799B2 - データ処理装置およびデータ処理方法 - Google Patents

データ処理装置およびデータ処理方法 Download PDF

Info

Publication number
JP5251799B2
JP5251799B2 JP2009213802A JP2009213802A JP5251799B2 JP 5251799 B2 JP5251799 B2 JP 5251799B2 JP 2009213802 A JP2009213802 A JP 2009213802A JP 2009213802 A JP2009213802 A JP 2009213802A JP 5251799 B2 JP5251799 B2 JP 5251799B2
Authority
JP
Japan
Prior art keywords
data
slide
comparison
input data
input
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.)
Active
Application number
JP2009213802A
Other languages
English (en)
Other versions
JP2011066557A (ja
Inventor
尚人 白石
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2009213802A priority Critical patent/JP5251799B2/ja
Priority to US12/805,910 priority patent/US8134483B2/en
Publication of JP2011066557A publication Critical patent/JP2011066557A/ja
Application granted granted Critical
Publication of JP5251799B2 publication Critical patent/JP5251799B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Description

本発明は、データの可逆的な圧縮符号化を行うデータ処理装置およびデータ処理方法に関する。
連長圧縮(ランレングス圧縮、RLE:Run Length Encoding)は、データ圧縮アルゴリズムの一つで、可逆圧縮に分類される。連長圧縮では、ある連続したデータを、1の当該データと、当該データの連続数とで表現することで符号化し、データの圧縮を行う。
例えば、データ列「A A A A A B B B B B B B B B A A A」は、符号化後のデータ列「A 5 B 9 A 3」と表せる。これは、データ「A」が5回連続し、その後にデータ「B」が9回連続し、さらにデータ「A」が3回連続していることを表す。この例では、1のデータの連続数を、当該1のデータの後に配置していが、連続数を先に配置し、その後に当該連続数のデータを配置することもできる。この場合には、上述の符号化後のデータ列は、「5 A 9 B 3 A」と表される。
さらに、上述の例で、データが「A」と「B」の2種類だけで、且つ、最初にデータ「A」が来ることに決めておけば、上述のデータ列は、「5 9 3」だけで表せる。このルールに従ったときにデータ「B」が最初に見つかった場合は、最初にデータ「A」が0回連続していることにすればよい。例えば、データ列「B B B A A A A A B B B B B A A A」は、符号化後のデータ列「0 3 5 5 3」で表せることになる。
ところで、データを効率よく圧縮する方法として、ユニバーサル符号により圧縮する方法が実用化されている。このユニバーサル符号は、情報保存型のデータ圧縮方法であり、データ圧縮時に情報源の統計的な性質を予め仮定しないため、種々のタイプ(文字コード、オブジェクトコードなど)のデータに適用することができる。
ユニバーサル符号の代表的な方法として、ジブ−レンペル(Ziv-Lempel)符号がある。Ziv-Lempel符号では、ユニバーサル型と、増分分解型(Incremental parsing) の2つのアルゴリズムが提案されている。これらのうち、ユニバーサル型アルゴリズムを用いた実用的な方法として、LZSS(Lempel-Ziv-Storer-Syzmanski)符号がある。一方、増分分解型アルゴリズムを用いた実用的な方法として、LZW(Lempel-Ziv-Welch)符号がある。
LZSS符号のベースとなるLZ77符号の符号化アルゴリズムは、符号化データを、過去のデータ系列の任意の位置から一致する最大長の系列に区切り、過去の系列の複製として符号化する。
より具体的には、符号化済みの入力データを格納する移動窓と、これから符号化するデータを格納する先読みバッファとを備え、先読みバッファのデータ系列と移動窓のデータ系列の全ての部分系列とを照合して、移動窓中で一致する最大長の部分系列を求める。そして、移動窓中でこの最大長の部分系列を指定するために、「その最大長の部分系列の開始位置」と「一致する長さ」と「不一致をもたらした次のシンボル」との組を符号化する。
次に、先読みバッファ内の符号化したデータ系列を移動窓に移して、先読みバッファ内に符号化したデータ系列分の新たなデータ系列を入力する。以下、同様の処理を繰り返していくことで、データを部分系列に分解して符号化を実行していく。
一般的に、LZSS符号化は、符号化済の入力データを保存している移動窓数分、入力データ列との最長一致を検出する必要があるため、演算量が多くなる一方で、高圧縮率が得られるといわれている。
また、LZW符号の符号化アルゴリズムは、書き換え可能な辞書を設け、入力文字列を相異なる文字列に分け、この文字列を出現した順に番号を付けて辞書に登録すると共に、現在入力している文字列を辞書に登録してある最長一致文字列の辞書番号だけで表す。このLZW符号によれば、圧縮率がLZSS符号より劣る一方で、シンプルで計算が容易であり、高速処理が可能である。そのため、記憶装置におけるファイル圧縮、データ伝送などで多く使われる。
上述したLZ77符号では、符号化時における最長一致文字列の探索に最も時間がかかる。そのため、LZ77符号の符号化を高速化するためには、この最長一致文字列の探索の高速化が必要である。
特許文献1には、ハッシュ法と連結リストの組み合わせにより、2文字の一致位置を求め、3文字以降の一致は1文字ずつ照合し、最終的に最長一致位置を検出する2バイトハッシュ法が開示されている。
また、ハードウェア処理において高速化を行う手法として、特許文献2では、図15に示されるように、入力FIFO(First In First Out)600およびスライドFIFO601と、スライドのサイズと同じ数の比較器を持つサーチ回路602とを備えた構成が開示されている。この構成において、サーチ回路602において入力FIFO600に格納される複数のデータと、スライドFIFO601に格納される過去の複数の入力データとを並列的に比較することにより、順次最長一致位置と一致長さとを同時に検出する。
さらに、特許文献3には、相関のありそうな場所(真上、左など)に限定的に比較器を備えることで、移動窓数分の比較器を並列に持った場合のハード負荷を削減し、処理速度およびハード規模が考慮されたデータ圧縮装置が開示されている。
さらにまた、特許文献4においては、小さい動的な辞書をMTF(Move To Front)制御することにより、辞書と一致したインデクス値をランレングス符号化する方法が提案されている。
また、特許文献5においては、並列比較ユニットを使用して複数データを一度に比較することで一致する長さを得ることができる方式が開示されている。
しかしながら、上述した特許文献1の、ハッシュ法と連結リストの組み合わせを用いた方法では、2文字、16ビットのハッシュは、約64000ワードのハッシュテーブルを必要とする。これは、ソフトウエアでは有効であるが、ハードウエアでは大きな容量が必要とされる。そのため、特許文献1を小規模なハードウェアで実現する場合には、例えば3文字目以降を1文字づつ照合していくことになり、処理時間が多くかかってしまうという問題点があった。
また、少ない辞書を用いてMTF制御する特許文献4では、辞書に登録するワード数が小さい場合、例えば1ワードが1バイトであって、辞書の深さが64ワードの場合は、一致したとしても8ビットが6ビットに変換されるだけである。そのため、辞書に登録するワード数を大きくする必要があるが、その場合、辞書との一致が難しくなってしまう。
特許文献4では、これを解決するために、同文献の図5に示されるように、周期検出を行ない、周期検出で辞書のワード数を求めている。ここで、この周期検出を行なうには、2パス方式を行うか、若しくは、ワークメモリを使用して周期検出と符号化処理とをパイプライン処理するかの何れかの方法を採る必要がある。
2パス方式は、処理を周期検出処理と符号化処理との2ステージに分け、符号化するデータに対してまず周期検出処理を行い、そこで求めた周期を用いて、再度、当該符号化するデータを符号化処理する。そのため、処理時間が余計にかかってしまうという問題点があった。また、ワークメモリを用いる方法でも、周期検出と符号化処理とをパイプライン処理するため、大きなメモリ領域が必要になってしまうという問題点があった。
さらに、特許文献3では、比較器を相関のありそうな場所のみに限定して持つために、比較器の数を抑制することができる。しかしながら、複数のラインメモリを持つ必要があり、ハードウェア規模が大きくなってしまうという問題点があった。
さらにまた、特許文献2では、同文献の図9に示されるように一致長さを求める回路をスライド数と同数用意すると共に、同図10に示されるように入力FIFOと同数のデータを比較する回路を用意する必要がある。そのため、スライド長さが32個、入力FIFOが8個という比較的小規模な構成であれば容易に実現可能であるが、圧縮率を向上させるためには、例えば256個以上のスライド長さを必要とし、規模が大きくなってしまうという問題点があった。
また、特許文献2では、入力FIFO11やスライドFIFOは、一致長さにより一度に複数データ分のシフトを行わなくてはならない。この処理をハードウェアにより実現すると、構成が複雑化してしまうという問題点があった。すなわち、このような一致長さ分の非定型なシフト処理や比較処理は、このハードウェア全体を複雑化してしまう。したがって、スライド数を増やして圧縮率を向上させることは、特許文献2の構成では困難であるという問題点があった。
さらに、特許文献2において、スライドと入力データとの最長一致位置と長さとを求めるためには、スライド探索とリスト探索との2種類の処理を行う必要がある。すなわち、最初はスライド探索でスライド全体を探索し、次に、スライド探索の探索結果に基づき複数の一致したリストから探索を行うリスト探索に処理が切り替わる。そして、入力データがリストに一致しない場合にそれまでの最長一致長を求め、その入力データで再びスライド探索を開始する。
このように、特許文献2の方法では、リスト探索で一致しない場合にスライド探索に切り替わる際に、符号化が行われない期間が少なくとも1クロック発生してしまい、処理速度の低下を招いてしまうという問題点があった。
さらにまた、特許文献5では、図16に例示されるように、ラッチ700およびラッチ701で構成されるヒストリバッファと、入力バッファ702に入力された複数のデータを、ヒストリバッファに対して垂直方向に比較する、比較ユニット703をヒストリバッファ長と入力バッファ長とのマトリクスで並べたマトリクスアレイ704を用いて複数データを一度に比較することで、処理速度を高速化している。
しかしながら、特許文献5の方法では、一度に処理できるデータ数が、並列比較ユニットの構成により決まるデータ数に限定されてしまうという問題点があった。図15の例では、並列処理可能なデータ数は、入力バッファ702の入力バイト長の12バイトに従い、12個に制限される。一度に処理できるデータ数を増やすには、並列比較ユニットを大規模とすればよいが、この場合ハードウェア規模が大きくなることになり、ASICなどに搭載する場合に制約が生じる。
本発明は、上記に鑑みてなされたものであって、より小規模なハードウェア構成で、より高速に符号化処理を行うことが可能なデータ処理装置およびデータ処理方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、一方の端から入力される入力データを順次記憶し、記憶されたデータを入力データの入力毎に他方の端側に順次移動させるスライド記憶手段と、スライド記憶手段の一方の端から入力される入力データを、スライド記憶手段に記憶されるデータのそれぞれと並列的に比較し、入力データと一致するデータのスライド記憶手段内での位置を求める第1の比較手段と、第1の比較手段による比較結果に基づき、スライド記憶手段に記憶されるデータのうち少なくとも1つが第1の比較手段に比較された入力データと一致するか否かを判定する第1の判定手段と、スライド記憶手段の一方の端から入力される入力データを、スライド記憶手段に記憶されるデータのそれぞれと並列的に比較し、入力データと一致するデータのスライド記憶手段内での位置を求める第2の比較手段と、第2の比較手段による比較結果に基づき、スライド記憶手段に記憶されるデータのうち少なくとも1つが第2の比較手段に比較された入力データと一致するか否かを判定する第2の判定手段と、第1の判定手段および第2の判定手段の判定結果に基づき、第1の比較手段の比較結果と、第2の比較手段の比較結果とのうち何れか一方を保持する保持手段と、第2の判定手段による判定結果に応じて、保持手段に保持される第1または第2の比較手段による比較結果に基づき、入力データと一致するデータが記憶されるスライド記憶手段内での位置を示すアドレス値を生成するアドレス値生成手段と、第2の判定手段による判定結果に応じて、スライド記憶手段に記憶されるデータのうち第2の比較手段に比較された入力データと一致しているデータの、スライド記憶手段内での位置がスライド記憶手段に対する入力データの入力毎に連続する最長の長さを求め、長さを示すレングス値を生成するレングス値生成手段と、第1の判定手段および第2の判定手段による判定結果に応じて、入力データをそのまま用いたデータ値を生成するデータ値生成手段と、アドレス値、レングス値およびデータ値を含む符号を生成する符号生成手段とを有し、第2の比較手段は、保持手段に保持される第1の比較手段または第2の比較手段の比較結果に基づき、スライド記憶手段に記憶されるデータのそれぞれと、スライド記憶手段の一方の端から入力される入力データとを比較する動作を制御されることを特徴とする。
また、本発明は、一方の端から入力される入力データを順次記憶し、記憶されたデータを入力データの入力毎に他方の端側に順次移動させるスライド記憶手段の一方の端から入力される入力データを、スライド記憶手段に記憶されるデータのそれぞれと並列的に比較し、入力データと一致するデータのスライド記憶手段内での位置を求める第1の比較ステップと、第1の比較ステップによる比較結果に基づき、スライド記憶手段に記憶されるデータのうち少なくとも1つが第1の比較ステップに比較された入力データと一致するか否かを判定する第1の判定ステップと、スライド記憶手段の一方の端から入力される入力データを、スライド記憶手段に記憶されるデータのそれぞれと並列的に比較し、入力データと一致するデータのスライド記憶手段内での位置を求める第2の比較ステップと、第2の比較ステップによる比較結果に基づき、スライド記憶手段に記憶されるデータのうち少なくとも1つが第2の比較ステップに比較された入力データと一致するか否かを判定する第2の判定ステップと、第1の判定ステップおよび第2の判定ステップの判定結果に基づき、第1の比較ステップによる比較結果と、第2の比較ステップによる比較結果とのうち何れか一方を保持手段に保持する保持ステップと、第2の判定ステップによる判定結果に応じて、保持手段に保持される第1の比較ステップまたは第2の比較ステップによる比較結果に基づき、入力データと一致するデータが記憶されるスライド記憶手段内での位置を示すアドレス値を生成するアドレス値生成ステップと、第2の判定ステップによる判定結果に応じて、スライド記憶手段に記憶されるデータのうち第2の比較ステップに比較された入力データと一致しているデータの、スライド記憶手段内での位置がスライド記憶手段に対する入力データの入力毎に連続する最長の長さを求め、長さを示すレングス値を生成するレングス値生成ステップと、第1の判定ステップおよび第2の判定ステップによる判定結果に応じて、入力データをそのまま用いたデータ値を生成するデータ値生成ステップと、アドレス値、レングス値およびデータ値を含む符号を生成する符号生成ステップとを有し、第2の比較ステップは、保持手段に保持される第1の比較ステップまたは第2の比較ステップの比較結果に基づき、スライド記憶手段に記憶されるデータのそれぞれと、スライド記憶手段の一方の端から入力される入力データとを比較する動作を制御されることを特徴とする。
本発明によれば、より小規模なハードウェア構成で、より高速に符号化処理を行うことが可能となる効果がある。
図1は、本発明に係るデータ処理装置を適用可能なプリンタ装置の一例の構成を示すブロック図である。 図2は、エンコーダの一例の構成を示すブロック図である。 図3は、符号フォーマットの例を示す略線図である。 図4は、本実施形態に適用可能な符号化処理について説明するための略線図である。 図5−1は、スライド探索処理およびリスト探索処理におけるフラグ処理を説明するための略線図である。 図5−2は、スライド探索処理およびリスト探索処理におけるフラグ処理を説明するための略線図である。 図6−1は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための略線図である。 図6−2は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための略線図である。 図6−3は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための略線図である。 図6−4は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための略線図である。 図6−5は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための略線図である。 図6−6は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための略線図である。 図6−7は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための略線図である。 図6−8は、フラグ処理を行った場合のスライド探索処理およびリスト探索処理を説明するための略線図である。 図7は、本実施形態による符号化処理の全体的な流れを示す一例のフローチャートである。 図8は、スライド探索処理をより詳細に示すフローチャートである。 図9は、リスト探索処理をより詳細に示すフローチャートである。 図10は、スライド追加処理をより詳細に示す一例のフローチャートである。 図11は、スライド/リスト生成処理部の一例のハードウェア構成を示す回路図である。 図12は、デコーダの一例の構成を示すブロック図である。 図13は、デコーダでの復号処理を示す一例のフローチャートである。 図14は、スライド展開部の一例のハードウェア構成を示す回路図である。 図15は、従来技術による符号化装置の一例の構成を示すブロック図である。 図16は、従来技術による符号化装置の一例の構成を示すブロック図である。
以下に添付図面を参照して、この発明に係るデータ処理装置の一実施形態を詳細に説明する。図1は、本発明に係るデータ処理装置を適用可能なプリンタ装置200の一例の構成を示す。図1の例では、プリンタ装置200は、制御部230、メインメモリ210、プリンタエンジン211および不揮発性のメモリであるフラッシュメモリ240を備える。フラッシュメモリ240は、プリンタ装置200に内蔵されていてもよいし、プリンタ装置200に対して脱着可能とされていてもよい。
制御部230は、CPU(Central Processing Unit)200、CPU I/F201、メインメモリアービタ202、メモリコントローラ203、符号化部204、復号部205、階調処理部206、エンジンコントローラ207、フラッシュメモリコントローラ241、エンコーダ242およびデコーダ243を含む。
CPU212は、メインメモリ210に格納されるプログラムに従い、このカラープリンタ200の全体の動作を制御する。CPU212は、CPU I/F201を介してメインメモリアービタ202に接続される。メインメモリアービタ202は、CPU212、符号化部204、復号部205、通信コントローラ208、フラッシュメモリコントローラ241、エンコーダ242およびデコーダ243の、メインメモリ210に対するアクセスを調停する。
メインメモリ210は、メモリコントローラ203を介してメインメモリアービタ202に接続される。メモリコントローラ203は、メインメモリ210に対するアクセスの制御を行う。
メインメモリ210は、プログラム領域210A、PDLデータ格納領域210B、CMYKバンドデータ格納領域210C、CMYKページ符号格納領域210Dおよびその他の領域210Eを有する。プログラム領域210Aは、CPU212が動作するためのプログラムが格納される。PDLデータ格納領域210Bは、例えばコンピュータ220から供給されたPDLデータが格納される。CMYKバンドデータ格納領域210Cは、CMYKバンドデータが格納される。CMYKページ符号格納領域210Dは、バンドデータが圧縮符号化された符号データが格納される。領域210Eは、上述した以外のデータが格納される。
符号化部204は、メインメモリ210に格納されるバンドデータを符号化する。符号化されたバンドデータは、メインメモリアービタ202およびメモリコントローラ203を介してメインメモリ210に供給され、CMYKページ符号格納領域210Dに書き込まれる。復号部205は、後述するプリンタエンジン211に同期して、符号化部204で符号化されメインメモリ210に書き込まれた符号化バンドデータをメインメモリ210から読み出して復号する。復号されたバンドデータは、階調処理部206に供給される。階調処理部206は、復号部205から供給されたバンドデータに対して階調処理を施してエンジンコントローラ207に転送する。
エンジンコントローラ207は、プリンタエンジン211を制御する。図1では、プリンタエンジン211としてCMYK各色の版のうち1の版のものだけが記載され、その他の版については煩雑さを避けるために省略されている。
通信コントローラ208は、ネットワーク221を介しての通信を制御する。例えば、コンピュータ220から出力されたPDL(Page Description Language)データは、ネットワークを介して通信コントローラ208により受信される。通信コントローラ208は、受信したPDLデータを、メインメモリアービタ202およびメインメモリコントローラ203を介してメインメモリ210に転送する。
なお、ネットワークは、LAN(Local Area Network)などの所定の範囲内で通信を行うものでもよいし、インターネットなどより広範囲に通信可能なものでもよい。また、ネットワークは、有線通信に限らず無線通信を用いたものでもよいし、USB(Universal Serial Bus)やIEEE(Institute Electrical and Electronics Engineers)1394といったシリアル通信を行うものでもよい。
フラッシュメモリ240は、CPU212上で動作するためのプログラムや、当該プログラムに用いられる各種データが、本実施形態による圧縮符号化方法により圧縮符号化されて格納される。例えば、このプリンタ装置200に対して追加される機能を実現するためのプログラムが圧縮符号化されて、フラッシュメモリ240に格納される。これに限らず、このプリンタ装置200の基本的な動作を実現するためのプログラムを、圧縮符号化してフラッシュメモリ240に格納してもよい。フラッシュメモリコントローラ241は、フラッシュメモリ240に対するアクセスの制御を行う。
エンコーダ242は、本実施形態による圧縮符号化方法により、データの圧縮符号化を行う。また、デコーダ243は、当該圧縮符号化方法により圧縮符号化された圧縮データの復号を行う。
このような構成において、例えば電源ONなどプリンタ装置200の起動時に、CPU212の指示に従い、フラッシュメモリコントローラ241によりフラッシュメモリ240から圧縮符号化されたデータが読み出される。この圧縮データは、例えばプログラム(プログラムデータ)や各種データが圧縮符号化されたものである。読み出された圧縮データは、メモリアービタ202を介してデコーダ243に供給される。
デコーダ243は、供給された圧縮データを復号し、圧縮符号を伸張する。圧縮符号が伸張されたプログラムデータや各種データは、メモリアービタ202およびメインメモリコントローラ203を介してメインメモリ210に供給され、プログラム領域210Aに格納される。
一方、例えばプリンタ装置200の電源OFFなど動作終了時には、CPU212の指示に従い、メインメモリコントローラ203により。メインメモリ210からプログラムデータや各種データが読み出される。読み出されたこれらプログラムデータや各種データは、メインメモリアービタ202を介してエンコーダ242に供給される。
エンコーダ242は、供給されたプログラムデータや各種データを、本実施形態による圧縮符号化方法を用いてそれぞれ圧縮符号化する。圧縮符号化された圧縮データは、メインメモリアービタ202を介してフラッシュメモリコントローラ241に供給され、フラッシュメモリ240に格納される。
フラッシュメモリ240は、メインメモリ210に用いられるDRAM(Dynamic Random Access Memory)などに比べ、アクセス速度が遅い。そのため、このようにフラッシュメモリ240に格納されるデータを圧縮符号化してデータサイズを小さくし、アクセス速度の遅さを補う。
プリンタ装置200の全体的な動作について、概略的に説明する。例えばコンピュータ220で生成されたPDLデータがネットワーク221を介して通信コントローラ208に受信され、メインメモリ210のPDLデータ格納領域210Bに記憶される。CPU212は、メインメモリ210のPDLデータ格納領域210BからPDLデータを読み出し、PDLを解析して、解析結果に基づきCMYKのバンド画像を描画する。描画されたCMYKのバンド画像によるCMYKバンドデータは、メインメモリ210のCMYKバンドデータ格納領域210Cに格納される。
符号化部204は、CMYKバンドデータ格納領域210CからCMYKバンドデータを読み出して、例えば予測符号化を用いて符号化する。CMYKバンドデータが符号化された符号データは、メインメモリ210のCMYKページ符号格納領域210Dに格納される。
復号部205は、CMYKページ符号格納領域210DからCMYKバンドデータが符号化された符号データを読み出して復号し、復号されたCMYKバンドデータを階調処理部206に供給する。階調処理部206は、復号部205から供給されたCMYKバンドデータに対して階調処理を施す。階調処理されたCMYKバンドデータは、プリンタエンジンコントローラ207を介してプリンタエンジン211に供給される。プリンタエンジン211は、供給されたCMYKバンドデータに基づきプリントアウトを行う。
<エンコーダ>
図2は、エンコーダ242の一例の構成を示す。エンコーダ242において、データ読み込み部300により、メインメモリ210のプログラム領域210Aから、プログラムデータや各種データ(以降、纏めてデータと呼ぶ)がメインメモリコントローラ203およびメモリアービタ202を介して読み出される。データ読み込み部300に読み込まれたデータは、スライド/リスト生成処理部301に供給される。
スライド/リスト生成処理部301は、入力されたデータを順次記憶するFIFO方式のスライド記憶部を有する。スライド/リスト生成処理部301は、供給されたデータとスライド記憶部に記憶された過去の入力データとを順次比較する。そして、供給されたデータと過去の入力データとが一致した場合には、当該過去の入力データのスライド記憶部内の位置を示すアドレス値Addressを保持すると共に、一致した長さを示す値であるレングスLengthをカウントアップする。両者が一致しない場合には、データ値そのものをPASS符号として符号化する。そして、これらPASS符号と、アドレス値AddressおよびレングスLengthと、両者が一致したか否かを示す一致フラグFLAGとを出力する。
スライド/リスト生成処理部301のから出力された各値は、符号フォーマット生成処理部302に供給される。符号フォーマット生成処理部302は、供給されたPASS符号、アドレス値Address、レングスLengthおよび一致フラグFLAGとを、図3に例示されるようなフォーマットで符号化する。
図3において、PASS符号は、データ長が1ビットで値が「0」の一致フラグFLAGをヘッダとして、後に8ビットのデータ長を持つデータ値が接続されてなる。スライド符号は、データ長が1ビットで値が「1」の一致フラグFLAGをヘッダとして、その後に、それぞれデータ長が8ビットのレングスLengthおよびアドレス値Addressが順次接続される。なお、この図3に例示される符号フォーマットは、一例であって、これ限られるものではない。
符号フォーマット生成処理部302で生成されたPASS符号およびスライド符号は、符号書き込み部303に供給される。符号書き込み部303は、供給されたPASS符号およびスライド符号を、メインメモリアービタ202およびフラッシュメモリコントローラ241を介してフラッシュメモリ240に書き込む。
<符号化処理の概略>
次に、本実施形態に適用可能な、スライド/リスト生成処理部301における符号化処理について説明する。本実施形態では、スライド探索処理とリスト探索処理とを繰り返すことによって、データの符号化を行う。スライド探索処理は、1単位(例えば1バイト)の入力データと一致する、所定単位分の長さを持つスライド記憶部に記憶される過去の入力データを探索する。スライド記憶部内の過去の入力データに、入力データと一致するデータが探索されなかった場合には、入力データそのものをPASS符号として用いる。
スライド探索処理において、入力データに一致するスライド記憶部内の過去の入力データが探索された場合、その一致した過去の入力データをルートとして、リスト探索処理が行われる。リスト探索処理は、ルートとされた入力データに対して連続的に入力された入力データ列と一致する、スライド記憶部内の過去の入力データ列(リストと呼ぶ)を探索する。
リスト探索処理時に、入力データと一致するリストが無くなると、直前のリストから1を選び、選択されたリストのルートとなる過去の入力データのスライド記憶部内での位置をアドレス値Addressとし、当該リストの長さをレングスLengthとして出力する。
すなわち、スライド/リスト生成処理部301では、スライド探索処理でリスト探索処理のルートとなる過去の入力データを形成する。そして、リスト探索処理で、ルートに基づくリストの成長および淘汰を行い、最終的に残ったリストに基づき符号化を行う。
図4を用いてより具体的に説明する。図4の例では、スライド記憶部は、番号#0〜#15で示されるように、直列に接続された16個のレジスタを持ち、FIFO(First In First Out)として構成される。各レジスタは、それぞれ1単位(例えば1バイト)のデータを格納可能であるものとする。なお、以下では、このスライド記憶部が有するレジスタをスライドと呼ぶ。
処理#1において、スライド記憶部の各スライドには、入力の新しい順、すなわち図4の右側から左側に向けて、「a,b,c,a,a,b,c,a,b,c,d,b,c,a,c,a」と、16個の過去に入力されたデータが既に格納されているものとする。最初に、スライド/リスト生成処理部301に対して入力データ「a」が入力される。スライド探索処理により、この入力データ「a」と、各スライドに記憶された過去の入力データのそれぞれとを比較し、一致しているデータを探索する。図4の例では、番号#0、#3、#4、#7、#13および#15のスライドに格納されているデータが入力データと一致していることが分かる。したがって、これらの番号のスライドに格納されているデータが、リスト探索処理におけるルートとなる。
スライド探索処理によって、各スライドに記憶された過去の入力データから、入力データ「a」と一致しているデータが探索されたので、処理#2のリスト探索処理が行われる。
処理#2では、各スライドに記憶される過去の入力データを左に1だけシフトさせて、処理#1で入力された入力データ「a」をスライド記憶部の番号#0のスライドに追加する。それと共に、次の入力データ「c」がスライド/リスト生成処理部301に対して入力される。リスト探索処理では、各スライドに記憶される過去の入力データのうち、直前の処理#1において入力データが一致した各スライド内の過去の入力データが格納されていたスライドから、新たな入力データ「c」と一致するデータを探索する。
図4の例では、処理#1において入力データと一致した番号#0および#4のスライドに格納される過去の入力データは、処理#2において入力データと一致していない。一方、処理#1において入力データと一致した番号#3、#7、#13および#15のスライドに格納された過去の入力データは、データ「c」であって、新たな入力データ「c」と一致する。
処理#2のリスト探索処理によって、直前の処理#1において入力データが一致した各スライド内の過去の入力データが格納されたスライドから、処理#2における入力データ「c」と一致するデータが探索されたので、次の処理はリスト探索処理となる。なお、処理#2は、リスト探索処理の開始点であるので、リストの長さを示すレングスLengthは、値「0」とされる。
処理#3では、上述の処理#2と同様にして、各スライドに記憶される過去の入力データを左に1だけシフトさせて、処理#2で入力された入力データ「c」をスライド記憶部の番号#0のスライドに追加する。それと共に、次の入力データ「b」がスライド/リスト生成処理部301に対して入力される。そして、各スライドに記憶される過去の入力データのうち、直前の処理#2において入力データが一致した各スライド内の過去の入力データが格納されたスライドから、新たな入力データ「b」と一致するデータを探索する。
図4の例では、処理#2において探索された番号#15のスライドに格納される過去の入力データは、処理#3において入力データと一致していない。一方、処理#2において探索された番号#3、#7および#13のスライドに格納される、処理#3における過去の入力データはデータ「b」であって、新たな入力データ「b」と一致する。次の処理#4では、この番号#3、#7および#13のスライドに格納される過去の入力データが、リスト探索の対象となる。すなわち、この処理#3の段階では、番号#3、#7および#13に係るリストが残っている。処理#3では、リストの長さが「1」となり、レングスLengthが値「1」とされる。
このような処理を繰り返していき、リストが最も長くなるデータ列を求める。図4の例では、処理#5において、直前の処理#4においてリスト探索された番号#13のスライドに格納される過去の入力データ「c」と、新たな入力データ「g」とが一致しなくなり、リストが途切れる。そこで、処理#5では、1つ前の処理#4において残っているリストから1を選択し、そのスライドのスライド記憶部における位置(番号)をアドレス値Addressとし、リストの長さをレングスLengthとしてスライド符号に符号化する。図4の例では、アドレス値Addressが「13」、レングスLengthが「3」とされる。
さらに、処理#5では、入力データ「g」についてスライド探索処理を行う。この例では、各スライドに過去の入力データとしてデータ「g」が記憶されていないため、一致するデータがないとされる。この場合、処理は処理#6に移行され、入力データ「g」がそのまま用いられてPASS符号に符号化される。
PASS符号への符号化が行われると、処理#7で、各スライドに記憶される過去の入力データが左に1だけシフトされると共に、直前のリスト探索処理(処理#5)で入力された入力データ「g」がスライド記憶部の番号#0のスライドに追加される。そして、次の入力データ「b」に対してスライド探索処理が行われる。
ここで、スライド記憶部は、FIFO方式により各スライドに格納されたデータのシフトを行うことができるため、入力データとの一致を記憶したリストをそのままの状態で保持しながら、次の入力データの処理に移行することができる。
例えば、図4の例では、入力データが、処理#1において番号#0、#3、#4、#7、#13および#15のスライドに格納される過去の入力データと一致している。各スライドに格納されたデータを、新たなデータの入力に伴い順次シフトさせることで、例えば処理#2の当該番号#0、#3、#4、#7、#13および#15のスライドに対して次のデータが格納されることになる。したがって、スライド記憶部において、スライド探索処理で一致が探索された番号のスライドに格納されるデータを、リスト探索処理毎に入力データと比較していくことで、入力データのデータ列と一致する、過去の入力データのデータ列を探索することができる。
このように、スライド記憶部をFIFO方式とすることで、リスト探索処理を簡易に行うことができる。
なお、上述の処理によれば、リスト探索処理において入力データと一致するリストが無く、処理がリスト探索処理からスライド探索処理に移行する際に、1処理分、符号化が進行しない時間が生じることになる。すなわち、1処理を1クロックで行うとした場合、リスト探索処理からスライド探索処理に移行する際に、1クロック分の無駄が生じてしまうことになる。
<フラグ処理>
上述したスライド探索処理およびリスト探索処理は、フラグによって制御される。このスライド探索処理およびリスト探索処理におけるフラグ処理について、図5−1、図5−2を用いて説明する。
図5−1は、スライド探索処理の結果を示すRフラグRFLGmを示す。図5−1に例示されるように、スライド記憶部の各スライドに対して、図の右側から左側へ向けて「a,b,c,a,a,b,c,a,b,c,d,b,c,a,c,a」のように過去の入力データが格納された状態で、入力データ「a」が入力された場合、番号#0、#3、#4、#7、#13および#15のスライドで、入力データと各スライドに記憶される過去の入力データとが一致する。そこで、これらの番号のスライドに対応するRフラグRFLG0、RFLG3、RFLG4、RFLG7、RFLG13およびRFLG15を、それぞれ一致したことを示す値「1」とする。
このように、入力データと、各スライドに記憶される過去の入力データとが一致する場合は、符号化処理を行わずにリスト探索処理が行われる。このとき、RフラグRFLGmの各スライドに対する位置は、固定的である。入力データと一致する、各スライドに記憶される過去の入力データが無い場合は、入力データをそのまま用いてPASS符号に符号化し、次の入力データに対してスライド探索処理を行う。
図5−2は、リスト探索処理の結果を示すWフラグWFLGmの例を示す。リスト探索処理では、新たに入力された入力データと一致するデータが、各スライドのうちRフラグRFLGmが「1」とされたスライドに格納されるデータから探索される。若し、一致するデータが探索されたら、当該スライドに対するWフラグWFLGmの値を、一致したことを示す値「1」とする。
図5−2の例では、各スライドに記憶される過去の入力データのうち、RフラグRFLGmが値「1」である番号#0、#3、#4、#7、#13および#15のスライドに格納されるデータに対してリスト探索処理が行われる。これらのうち、入力データ「c」に対して、番号#3、#7、#13および#15のスライドに格納されるデータが一致するので、対応するWフラグWFLG3、WFLG7、WFLG13およびWFLG15の値を、一致したことを示す値「1」とする。各スライドに記憶される過去の入力データのうち、このWフラグWFLGmの値が「1」とされたスライドに格納されるデータは、直前に入力データと一致したスライドに格納される過去の入力データと、現在入力データと一致した過去の入力データとが連なっていることを示す。
次に、値が「1」のWフラグWFLGmを探索する。この値「1」のWフラグWFLGmが存在する場合は、各WフラグWFLGmを新たなRフラグRFLGmとし、上述と同様にして次の入力データに対してリスト探索処理を行う。
一方、探索の結果、値が「1」のWフラグWFLGmが存在しないとされた場合は、リストが途絶えたことを意味する。この場合は、値が「1」のRフラグRFLGmを1つ選択し、選択したRフラグRFLGmに対応するスライドのアドレス値Addressと、そのときのレングスLengthとをスライド符号に符号化する。
次に、RフラグRFLGmおよびWフラグWFLGmを用いた場合の、スライド探索処理およびリスト探索処理について、図6−1〜図6−8を用いて説明する。図6−1〜図6−8は、上述した図4と同様に、スライド記憶部は、番号#0〜#15で示される16個のスライドを持っているものとする。各スライドには、新しい順すなわち番号の小さい順に、「a,b,c,a,a,b,c,a,b,c,d,b,c,a,c,a」と、過去に入力された16個のデータが既に格納されているものとする。
本実施形態においては、符号化を、スライド探索処理とリスト探索処理とを繰り返すことで行う。先ず、入力データ「a」が入力され、スライド探索処理が行われる(図6−1)。入力データ「a」と一致するデータを、スライド記憶部の各スライドから探索する。各スライドから入力データに一致するデータが探索されなかった場合は、当該入力データをそのまま用いて、PASS符号に符号化する。
入力データに一致するデータが格納されるスライドが探索されたら、そのスライドに対応するRフラグRFLGmの値を「1」とし、他のRフラグRFLGmの値を「0」とする。図6−1の例では、番号#0、#3、#4、#7、#13および#15のスライドに格納されるデータが入力データと一致している。このスライド探索処理において、入力データに一致したデータをルートとして、次からのリスト探索処理においてリストの生成が行われる。
次に、各スライドの記憶内容を左シフトし、直前に入力された入力データ「a」を、番号#0のスライドに追加する。このように、スライド探索処理において入力データと一致するデータが格納されたスライドが探索されたら、符号化処理を行わずに、リスト探索処理(図6−2)に移り、レングスLengthの値を「0」とする。また、入力データと一致するデータが格納されたスライド(番号#0、#3、#4、#7、#13および#15のスライド)に対応するRフラグRFLGm(RフラグRFLG0、RFLG3、RFLG4、RFLG7、RFLG13およびRFLG15)の値が「1」とされ、他のRフラグRFLGmの値が「0」とされる。
次に、入力データ「c」が入力される。リスト探索処理では、対応するRフラグRFLGmの値が「1」のスライドのうち、入力データ「c」と一致するデータが格納されるスライドが探索される。図6−2の例では、RフラグRFLGmの値が「1」のスライドのうち番号#3、#7、#13および#15のスライドに格納されるデータが入力データと一致している。一方、番号#0および#4のスライドは、脱落している。入力データと一致するデータが格納されたスライドに対応するWフラグWFLGm(WフラグWFLG3、WFLG7、WFLG13およびWFLG15)の値が「1」とされ、他のWフラグWFLGmの値が「0」とされる。
次に、各スライドの記憶内容を左シフトし、直前に入力された入力データ「c」を、番号#0のスライドに追加する。この場合も符号化処理を行わずに、次のリスト探索処理(図6−3)に移り、レングスLengthの値を「1」とする。WフラグWFLGmの値をRフラグRFLGmに設定して、RフラグRFLGmを更新する。
次に、入力データ「b」が入力される。リスト探索処理では、対応するRフラグRFLGの値が「1」のスライドのうち、入力データ「b」と一致するデータが格納されるスライドが探索される。図6−3の例では、RフラグRFLGmの値が「1」のスライドのうち番号#3、#7および#13のスライドに格納されるデータが入力データと一致している。一方、番号#15のスライドは、脱落している。入力データと一致するデータが格納されたスライドに対応するWフラグWFLGm(WフラグWFLG3、WFLG7およびWFLG13)の値が「1」とされ、他のWフラグWFLGmの値が「0」とされる。
次に、各スライドの記憶内容を左シフトし、直前に入力された入力データ「b」を、番号#0のスライドに追加する。この場合も符号化処理を行わずに、次のリスト探索処理(図6−4)に移り、レングスLengthの値を「2」とする。WフラグWFLGmの値をRフラグRFLGmに設定して、RフラグRFLGmを更新する。
次に、入力データ「d」が入力される。リスト探索処理では、対応するRフラグRFLGmの値が「1」のスライドのうち、入力データ「d」と一致するデータが格納されるスライドが探索される。図6−4の例では、番号#13のスライドに格納されるデータが入力データと一致している。一方、番号#3および#7のスライドは、脱落している。入力データと一致するデータが格納されたスライドに対応するWフラグWFLG13の値が「1」とされる。
次に、各スライドの記憶内容を左シフトし、直前に入力された入力データ「d」を、番号#0のスライドに追加する。この場合も符号化処理を行わずに、次のリスト探索処理(図6−5)に移り、レングスLengthの値を「3」とする。WフラグWFLGmの値をRフラグRFLGmに設定して、RフラグRFLGmを更新する。
次に、入力データ「a」が入力される。リスト探索処理では、対応するRフラグRFLGmの値が「1」のスライドのうち、入力データ「a」と一致するデータが格納されるスライドが探索される。図6−5の例では、番号#13のスライドが脱落し、入力データ「a」と一致するデータが格納されるスライドが存在しない。すなわち、継続するリストが存在しなくなる。そのため、RフラグRFLGmの値が「1」であるスライドのスライド記憶部内での位置(図6−5の例では番号#13の位置)をアドレス値Addressとし、レングスLengthの値が「3」、一致フラグFLAGの値が「1」とされて、これらの値を図3に示したようにスライド符号に符号化する。WフラグWFLGの値は、全て「0」とされ、処理はスライド探索処理に移る(図6−6)。
リストが途切れた後のスライド探索処理は、直前のリスト探索処理における入力データ「a」に対して行われる(図6−6)。入力データ「a」と一致するデータを、スライド記憶部の各スライドから探索する。各スライドから入力データに一致するデータが探索されなかった場合は、当該入力データをそのまま用いて、PASS符号に符号化する。
入力データに一致するデータが格納されるスライドが探索されたら、そのスライドに対応するRフラグRFLGmの値を「1」とする。図6−6の例では、番号#3、#4、#7、#8および#11のスライドに格納されるデータが入力データと一致している。このスライド探索処理において、入力データに一致したデータをルートとして、次からのリスト探索処理においてリストの生成が行われる。
次に、各スライドの記憶内容を左シフトし、入力データ「a」を、番号#0のスライドに追加する。このように、スライド探索処理において入力データと一致するデータが格納されたスライドが探索されたら、符号化処理を行わずに、リスト探索処理(図6−7)に移り、レングスLengthの値を「0」とする。また、入力データと一致するデータが格納されたスライド(番号#3、#4、#7、#8および#11のスライド)に対応するRフラグRFLGm(RフラグRFLG3、RFLG4、RFLG7、RFLG8およびRFLG13)の値が「1」とされ、他のRフラグRFLGmの値が「0」とされる。
次に、入力データ「f」が入力される。リスト探索処理では、対応するRフラグRFLGmの値が「1」のスライドのうち、入力データ「f」と一致するデータが格納されるスライドが探索される。図6−7の例では、入力データ「f」と一致するデータが格納されるスライドが存在しない。この時点ではレングスLengthの値が「0」であるため、WフラグWFLGmの値が全て「0」とされ、処理はスライド探索処理に移る(図6−8)。
ここでのスライド探索処理は、直前のリスト探索処理における入力データ「f」に対して行われる(図6−8)。入力データ「f」と一致するデータを、スライド記憶部の各スライドから探索する。図6−8の例では、各スライドから入力データに一致するデータが探索されないため、当該入力データをそのまま用いて、PASS符号に符号化する。また、RフラグRFLGmの値が全て「0」とされる。
そして、各スライドの記憶内容を左シフトし、入力データ「f」を番号#0のスライドに追加して次の入力データの符号化に進む。
<符号化処理の詳細>
次に、スライド/リスト生成処理部301における符号化処理について、より詳細に説明する。図7は、本実施形態による符号化処理の全体的な流れを示す一例のフローチャートである。なお、図7のフローチャートの処理に先立って、符号読み出し部300は、ある長さのデータを処理対象のデータとして予め保持しているものとする。
最初のステップS10で、スライド/リスト生成処理部301は、スライド探索処理およびリスト探索処理のうち何れが有効かを示すフラグListFLGを、スライド探索処理を行っていることを示す値「0」に初期化する。次に、ステップS11で、スライド/リスト生成処理部301は、符号読み出し部300から1単位分のデータを入力データとして読み込む。読み込んだ入力データは、スライド記憶部に格納される。
入力データがスライド記憶部に格納されると、ステップS12で、1単位分のデータに対するスライド探索処理が行われると共に、ステップS13で、1単位分のデータに対するリスト探索処理が行われる。詳細は後述するが、本実施形態においては、スライド探索処理を行うスライド探索部と、リスト探索処理を行うリスト探索部とが別個の構成とされているので、ステップS12およびステップS13の処理を並列的に行うことが可能である。
処理はステップS14に移行され、スライド/リスト生成処理部301は、フラグListFLGの値が「0」か否かを判定する。若し、「0」であると判定されたら、現在スライド探索処理が有効であるとされ、処理はステップS15に移行される。ステップS15では、フラグSFINDFLGの値が「1」であるか否かが判定される。若し、値が「1」であれば、スライド記憶部101において入力データと一致する過去の入力データが探索されたとされ、ステップS16でフラグListFLGの値がリスト探索処理が有効であることを示す「1」とされる。
そして、処理がステップS25に移行され、スライド記憶部に対して入力データが追加される。次のステップS26で、処理対象のデータ全てに対する処理が終了したか否かが判定される。若し、終了していないと判定されたら、処理はステップS11に戻され、次の1単位分のデータが入力データとして読み込まれる。一方、終了していると判定されたら、一連の符号化処理が終了される。
一方、ステップS15で、フラグSFINDFLGの値が「0」であると判定されたら、スライド記憶部101において入力データと一致する過去の入力データが探索されなかったとされ、処理はステップS17に移行される。ステップS17では、フラグListFLGの値が「0」とされてスライド探索処理が有効であるとされ、次のステップS18で入力データがPASS符号に符号化される。また、一致フラグFLAGが値「0」とされる。そして、処理はステップS25に移行される。
また、上述のステップS14において、フラグListFLGの値が「0」ではない、すなわち「1」であると判定されたら、現在リスト探索処理が有効であるとされ、処理がステップS19に移行される。ステップS19では、フラグLFINDFLGの値が「1」か否かを判定する。若し、「1」であると判定されたら、処理はステップS25に移行される。
一方、ステップS19で、フラグLFINDFLGの値が「1」ではない、すなわち、フラグLFINDFLGの値が「0」であると判定されたら、処理はステップS20に移行される。ステップS20では、アドレス値Address、レングスLengthおよび一致フラグFLAGが、図3に例示されるスライド符号に符号化される。そして、処理はステップS21に移行され、フラグSFINDFLGの値が「1」であるか否かが判定される。若し、「1」であると判定されたら、リスト探索処理においてリストが継続されたとされて処理がステップS22に移行され、フラグListFLGの値が「1」とされる。そして、処理がステップS25に移行される。
一方、ステップS20でフラグSFINDFLGの値が「0」であると判定されたら、リスト探索処理においてリストが途切れたとされ、処理がステップS23に移行され、フラグListFLGの値が「0」とされる。次のステップS24で入力データがそのままPASS符号に符号化され、レジスタ141に格納される。そして、処理はステップS25に移行される。
図8は、図7のステップS12における一例のスライド探索処理をより詳細に示すフローチャートである。なお、この図8、ならびに、以下の図9および図10では、スライド記憶部におけるスライドを、スライドの番号を含めるように、スライド[x]のように表す。また、FIFO構成とされるスライド記憶部において先頭のスライドを、スライド[0]とする。
先ず、ステップS30〜ステップS32で、レングスLength、フラグSFIINDFLGおよび変数IWがそれぞれ値「0」に初期化される。処理はステップS33に移行され、入力データとスライド[IW]に格納された過去の入力データとが一致するか否かが判定される。若し、一致すると判定されたら、処理はステップS34に移行され、フラグSFINDFLGの値が「1」とされ、次のステップS35で、RフラグRFLG[IW]の値が「1」とされる。
そして、処理はステップS37に移行され、変数IWがスライドサイズ未満、すなわち、スライド記憶部が有するスライド数未満であるか否かが判定される。若し、変数IWがスライドサイズ未満であると判定されたら、ステップS38で変数IWに「1」が加えられ、処理がステップS33に戻される。一方、ステップS37で、変数IWがスライドサイズ以上であると判定されたら、一連の処理が終了される。
一方、ステップS33で入力データとスライド[IW]に格納された過去の入力データとが一致しないと判定されたら、処理はステップS36に移行され、RフラグRFLG[IW]の値が「0」とされる。そして、処理がステップS37に移行される。
図9は、図7のステップS13による一例のリスト探索処理をより詳細に示すフローチャートである。先ず、ステップS40およびステップS41で、フラグLFINDFLGおよび変数IWがそれぞれ値「0」に初期化される。
ステップS42で、入力データとスライド[IW]に格納された過去の入力データとが一致し、且つ、RフラグRFLG[IW]の値が「1」であるか否かが判定される。若し、それぞれの条件を満たすと判定されたら、処理はステップS43に移行され、WフラグWFLG[IW]の値が「1」とされ、次のステップS44で、フラグLFINDFLGの値が「1」とされる。そして、処理がステップS46に移行される。
一方、ステップS42で、上述の条件を満たさない、すなわち、入力データとスライド[IW]に格納された過去の入力データとが一致しない、または、RフラグRFLG[IW]の値が「1」でないと判定されたら、処理はステップS45に移行され、WフラグWFLG[IW]の値が「0」とされる。そして、処理がステップS46に移行される。
ステップS46では、変数IWがスライドサイズ未満であるか否かが判定される。若し、変数IWがスライドサイズ未満であると判定されたら、ステップS47で変数IWに「1」が加えられ、処理がステップS42に戻される。一方、変数IWがスライドサイズ以上であると判定されたら、処理がステップS48に移行される。
ステップS48では、フラグLFINDFLGの値が「0」であるか否かが判定される。若し、値が「0」であると判定されたら、処理がステップS49に移行されて変数IWが値「0」に初期化され、次のステップS50でRフラグRFLG[IW]の値が「1」であるか否かが判定される。若し、「1」であると判定されたら、処理はステップS51に移行される。
ステップS51では、変数IWがアドレス値Addressとされ、次のステップS52で、スライドサイズを変数IWに代入する。そして、処理がステップS53に移行される。ステップS53では、変数IWがスライドサイズ未満であるか否かが判定される。若し、変数IWがスライドサイズ未満であると判定されたら、ステップS54で変数IWに「1」が加算されて処理がステップS50に戻される。
一方、ステップS53で、変数IWがスライドサイズ以上であると判定されたら、一連の処理が終了される。例えば、上述したステップS52を経由してこのステップS53に到達した場合、ステップS52で変数IWにスライドサイズが代入されているため、必ず処理が終了される。
上述したステップS48で、フラグLFINDFLGの値が「0」ではないと判定されたら、処理はステップS55に移行され、変数IWが値「0」に初期化される。次のステップS56で、RフラグRFLG[IW]に対してWフラグWFLG[IW]が設定される。そして、ステップS57で、変数IWがスライドサイズ未満であるか否かが判定される。若し、変数IWがスライドサイズ未満であると判定されたら、ステップS58で変数IWに「1」が加算されて処理がステップS56に戻される。一方、ステップS57で変数IWがスライドサイズ以上であると判定されたら、処理は次のステップS59に移行され、レングスLengthに対して1が加算され、一連の処理が終了される。
図10は、図7のステップS25による一例のスライド追加処理をより詳細に示す一例のフローチャートである。先ず、ステップS70で、変数IWがスライド数から1を減じた値に設定される。次のステップS71で、スライド[IW]に、スライド[IW−1]の値が格納され、ステップS72で、変数IWが「0」を超えるか否かが判定される。若し、変数IWが「0」を超えると判定されたら、処理はステップS73に移行され、変数IWから「1」が減じられる。そして、処理がステップS71に戻される。一方、ステップS72で、変数IWが「0」以下であると判定されたら、処理はステップS74に移行され、スライド[0]に対して入力データが格納される。
<スライド/リスト生成処理部のハードウェア構成例>
図11は、上述したスライド探索処理、リスト探索処理および符号化処理を実行するスライド/リスト生成処理部301の、一例のハードウェア構成を示す。スライド/リスト生成処理部301は、スライド探索部100、スライド記憶部101、リスト探索部102およびコントローラ103を有する。
コントローラ103は、例えばマイクロプロセッサからなり、図7のフローチャートを用いて説明した、ステップS12およびステップS13の処理を除いた、ステップS11〜ステップS26による処理を行い、スライド/リスト生成処理部301の動作を制御する。例えば、コントローラ103は、上述した現在スライド探索処理およびリスト探索処理のうち何れが有効かを示すフラグListFLGによる動作制御を行う。
スライド/リスト生成処理部301に対して、例えば1クロック毎に1単位の入力データが入力され、スライド探索部100、スライド記憶部101およびリスト探索部102にそれぞれ供給される。入力データは、さらに、出力側のレジスタ141にも格納される。レジスタ141に格納される入力データは、PASS符号の符号化の際のデータ値として用いられる。以下では、データの1単位を1バイトとする。
スライド記憶部101は、各々がレジスタからなり、それぞれ1単位のデータが格納されるn個(例えば256個)のスライド1201、1202、…、120nが直列に接続されて構成される。また、各スライド1201、1202、…、120nの出力は、次のレジスタに供給されると共に、後述するスライド探索部100の対応する比較器111mの一方の入力端と、リスト探索部102の対応する比較器130mの一方の入力端にそれぞれ供給される。
なお、図3を用いて説明したスライド符号における、アドレス値AddressおよびレングスLengthのデータ長は、スライド記憶部101が有するスライド数nに応じて決められる。すなわち、スライド数n=256であれば、アドレス値AddressおよびレングスLengthが「256」までの値を表現可能に、それぞれのデータ長が8ビットに決められる。
スライド記憶部101は、これらn個のスライド1201、1202、…、120nによりFIFOが構成され、入力されたデータがスライド1201からスライド1202、スライド1203、…と1クロック毎に順次送られていく。
スライド探索部100は、n個の比較器1111、1112、…、111nと、n入力の論理和回路110とを有する。比較器1111、1112、…、111nのそれぞれは、一方および他方の入力端に入力されたデータを比較し、両者が一致していれば値「1」を出力し、一致していなければ値「0」を出力する。
比較器1111、1112、…、111nの一方の入力端には、上述したように、スライド記憶部101が有するスライド1201、1202、…、120nの出力がそれぞれ入力される。また、比較器1111、1112、…、111nそれぞれの他方の入力端には、入力データが入力される。
比較器1111、1112、…、111nそれぞれの出力は、n入力の論理和回路110に入力されると共に、後述するリスト探索部102のセレクタ(SEL)1311、1312、…、131nの一方の入力端にそれぞれ入力される。論理和回路110の出力は、フラグSFINDFLGとしてコントローラ103に供給される。このフラグSFINDFLGは、スライド1201、1202、…、120nのデータのうち少なくとも1が入力データと一致しているか否かを示す。
リスト探索部102は、それぞれn個の比較器1301、1302、…、130n、セレクタ1311、1312、…、131n、ならびに、レジスタ1321、1322、…、132nと、アドレス値生成部133と、n入力の論理和回路18とを有する。比較器1301、1302、…、130nのそれぞれは、一方および他方の入力端に入力されたデータを比較し、両者が一致していれば値「1」を出力し、一致していなければ値「0」を出力する。
比較器1301、1302、…、130nの一方の入力端には、上述したように、スライド記憶部101が有するスライド1201、1202、…、120nの出力がそれぞれ入力される。また、比較器1301、1302、…、130nそれぞれの他方の入力端には、入力データが入力される。
比較器1301、1302、…、130nの出力は、WフラグWFLGmであって、n入力の論理和回路18にそれぞれ入力されると共に、セレクタ1311、1312、…、131nの他方の入力端にそれぞれ入力される。論理和回路18の出力は、フラグLFINDFLGとしてコントローラ103に供給される。フラグLFINDFLGは、WフラグWFLG1、WFLG2、…、WFLGnのうち少なくとも1の値が「1」であることを示す。
セレクタ1311、1312、…、131nの出力は、RフラグRFLGmとされて、それぞれレジスタ1321、1322、…、132nに格納される。セレクタ1311、1312、…、131nは、コントローラ103から図示しない経路を経て供給されるフラグListFLGにより、一方および他方の端子のうち何れを選択するかが制御される。
若し、フラグListFLGの値が「0」であって、現在スライド探索処理が有効であることが示されていれば、セレクタ1311、1312、…、131nは、それぞれの一方の入力端に入力された、スライド探索部100における比較器1111、1112、…、111nの出力をレジスタ1321、1322、…、132nに供給するように制御される。例えば、セレクタ131m(なお、1≦m≦nとする)は、対応するレジスタ132mに格納される値が「0」のときに入力端が選択されるように制御される。
一方、フラグListFLGの値が「1」であって、現在リスト探索処理が有効であることが示されていれば、セレクタ1311、1312、…、131nは、それぞれの他方の入力端に入力された、リスト探索部102における比較器1301、1302、…、130nを選択してレジスタ1321、1322、…、132nに供給するように制御される。例えば、セレクタ131mは、対応するレジスタ132mに格納される値が「1」のときに他方の入力端が選択されるように制御される。
レジスタ1321、1322、…、132nは、セレクタ1311、1312、…、131nからの出力が供給されると、格納されているRフラグRFLG1、RFLG2、…、RFLGnを出力する。すなわち、レジスタ1321、1322、…、132nに格納されるRフラグRFLG1、RFLG2、…、RFLGnは、供給されたセレクタ1311、1312、…、131nからの出力により更新される。
レジスタ1321、1322、…、132nから出力されたRフラグRFLG1、RFLG2、…、RFLGnは、比較器1301、1302、…、130nの動作を制御する制御信号として、比較器1301、1302、…、130nの制御端にそれぞれ供給される。例えば、例えば比較器130mは、対応するレジスタ132mから供給された制御信号が値「1」を示していれば比較動作を行い、値「0」を示していれば比較動作を行わない。これは、比較器1301、1302、…、130nそれぞれの動作は、比較器1301、1302、…、130n自身の出力により絞り込まれていくことを意味する。
レジスタ1321、1322、…、132nから出力されたRフラグRFLG1、RFLG2、…、RFLGnは、さらにアドレス値生成部133にも供給される。アドレス値生成部133は、図4の処理#5で説明したように、リスト探索処理が終了した際に、レジスタ1321、1322、…、132nから供給されるRフラグRFLG1、RFLG2、…、RFLGnのうち、値が「1」であるRフラグRFLGmを選択し、選択されたRフラグRFLGmの番号をアドレス値Addressとして出力する。アドレス値生成部133から出力されたアドレス値Addressは、レジスタ140に格納されると共に、コントローラ103に供給される。
ここで、アドレス値生成部133は、値が「1」であるRフラグRFLGmが複数存在する場合に、スライドの番号が小さい、すなわち、スライド記憶部101においてより入力側に近いスライド120mに基づくRフラグRFLGmから優先的に選択する。これは、入力に近いスライド120mの方が、入力データと一致する可能性が高いからである。このとき、図3を用いて説明した符号フォーマットにおいて、アドレス値Addressが小さい方が短い符号となるように構成すると、圧縮効率が高くなり、好ましい。
コントローラ103は、スライド探索部100から供給されたフラグSFINDFLGと、リスト探索部102から供給されたフラグLFINDFLGと、アドレス値生成部133から供給されたアドレス値Address値とに基づき、レングスLengthおよび一致の有無を示す一致フラグFLAGを生成する。レングスLengthおよび一致フラグFLAGは、それぞれレジスタ143および142に格納される。
なお、レジスタ140〜143にそれぞれ格納されたアドレス値Address、データ値、一致フラグFLAGおよびレングスLengthは、それぞれ符号フォーマット生成処理部302に読み出され、図3に例示する符号フォーマットに従い符号化され符号データが生成される。
このような構成において、スライド探索処理は、以下のように行われる。すなわち、比較器1111、1112、…、111nによる、入力データと、スライド1201、1202、…、120nに格納された過去の入力データとの比較処理が行われる。比較結果がそれぞれ論理和回路110に供給され、フラグSFINDFLGが出力される。比較結果は、セレクタ1311、1312、…、131nにも供給され、スライド探索処理の間は、レジスタ1321、1322、…、132nに格納される。図11の構成によれば、この一連の処理を1クロックで実行可能である。
また、リスト探索処理は、以下のように行われる。すなわち、比較器1301、1302、…、130nによる、入力データと、スライド1201、1202、…、120nに格納された過去の入力データとの比較処理が行われる。このとき、レジスタ1321、1322、…、132nに格納されるRフラグRFLG1、RFLG2、…、RFLGnの値に基づき、比較器1301、1302、…、130nの比較動作が制御される。例えば、RフラグRFLG1、RFLG2、…、RFLGnの値が全て「0」であれば、比較器1301、1302、…、130n全ての比較動作が行われないことになる。この状態を、リスト探索処理が行われていない状態とする。
比較器1301、1302、…、130nによる比較結果がそれぞれ論理和回路18に供給され、フラグLFINDFLGが出力される。また、各比較結果は、セレクタ1311、1312、…、131nに供給され、リスト探索処理の間は、レジスタ1321、1322、…、132nに格納される。また、レジスタ1321、1322、…、132nに格納されるRフラグRFLG1、RFLG2、…、RFLGnは、アドレス値生成部133にも保持される。
アドレス値生成部133は、レジスタ1321、1322、…、132nに格納される値が全て「0」であれば、保持しているRフラグRFLG1、RFLG2、…、RFLGnのうち値が「1」のRフラグRFLGmの位置を、アドレス値Addressとしてコントローラ103に渡す。図11の構成によれば、このリスト探索処理による一連の処理を1クロックで実行可能である。
図11の構成によれば、スライド探索部100と、リスト探索部102とがそれぞれ別個の構成とされると共に、スライド探索部100とリスト探索部102とでスライド記憶部100を共有する。そのため、スライド探索部100によるスライド探索処理と、リスト探索部102によるリスト探索処理とを並列的に実行することが可能である。したがって、図4を用いて説明したような、リスト探索処理からスライド探索処理へと移行する際の1クロック分の無駄が生じず、符号化処理をより高速化できる。また、図11の構成によれば、先読みバッファや大規模なマトリクスアレイなどの構成が不要なので、ハードウェア規模を小さくできる。
<デコーダ>
図12は、デコーダ243の一例の構成を示す。デコーダ243において、符号読み込み部400により、上述したエンコーダ242で符号化された符号データがフラッシュメモリ240から読み込まれる。符号読み込み部400に読み込まれた符号データは、符号フォーマット解析部401に供給される。符号フォーマット解析部401は、図3を用いて説明した符号フォーマットに従い、供給された符号データを解釈してデータ値、アドレス値Address、レングスLengthおよび一致フラグFLAGを取り出す。取り出されたこれらのデータは、スライド展開部402に供給される。
スライド展開部402は、図4を用いて説明したように、直列に接続された複数のレジスタがFIFOとして構成される、スライド記憶部を持つ。各レジスタは、スライドと呼ばれ、それぞれ1単位(例えば1バイト)のデータを格納可能とされる。スライド展開部402は、供給されたデータ値、アドレス値Address、レングスLengthおよび一致フラグFLAGに基づき、スライド記憶部における各スライドに対してデータを展開し、符号データを復号する。復号されたデータは、データ書き込み部403に供給され、メインメモリ210のプログラム領域210Aに書き込まれる。
<復号処理の詳細>
図13は、上述した本実施形態の符号化方法により符号化された符号データを、デコーダ243で復号する一例の処理を示すフローチャートである。なお、符号読み込み部400により、フラッシュメモリ240から予め符号データが読み込まれているものとする。先ず、ステップS100で、符号フォーマット解析部401は、符号読み込み部400に読み込まれている圧縮データのヘッダを読み込み、後続する符号がPASS符号およびスライド符号のうち何れであるかを判定する(ステップS101)。
若し、ヘッダすなわち一致フラグFLAGの値が「0」であれば、当該ヘッダを含む符号がPASS符号であると判定され、処理がステップS102に移行される。ステップS102で、符号フォーマット解析部401は、次のステップS102でヘッダに続く8ビットをデータ値として読み込む。読み込まれたデータ値は、そのまま出力データとして出力される(ステップS103)と共に、スライド展開部402に供給されスライドに追加される(ステップS104)。データ値のスライドに対する追加処理は、図10のフローチャートで説明したのと同様の手順により行われる。そして、処理がステップS111に移行される。
ステップS111では、例えば符号読み込み部400により、読み込まれている符号データに対する処理が全て終了したか否かが判定される。全て終了したと判定されたら、一連の復号処理が終了される。一方、符号読み込み部400に読み込まれている全ての符号データに対する処理が終了していないと判定されたら、処理はステップS100に戻され、次の符号に対する処理が行われる。
ステップS101で、読み込んだヘッダがPASS符号ではない、すなわち、スライド符号であると判定されたら、処理はステップS105に移行される。ステップS105では、符号フォーマット解析部401が、ヘッダに続く16ビットをレングスLengthおよびアドレス値Addressとして読み込む。読み込んだレングスLengthおよびアドレス値Addressは、スライド展開部402に供給される。
次のステップS106で、スライド展開部402は、スライド記憶部のアドレス値Addressで示されるスライドに格納されるデータを読み込む。読み込まれたデータは、出力データとして出力される(ステップS107)と共に、スライド展開部402に供給されスライドに追加される(ステップS108)。
処理はステップS110に移行され、レングスLengthが「0」より大きいか否かが判定される。若し、レングスLengthが「0」以下であると判定されたら、処理はステップS111に移行される。一方、レングスLengthが「0」より大きいと判定されたら、処理はステップS106に戻される。
<スライド展開部のハードウェア構成>
図14は、スライド展開部402の一例のハードウェア構成を示す。スライド展開部402は、スライド記憶部500、コントローラ501、セレクタ502および503を有する。
コントローラ501は、例えばマイクロプロセッサからなり、アドレス値Address、レングスLengthおよび一致フラグFLAGが供給され、供給されたこれらのデータに基づきこのスライド展開部402の全体の動作を制御する。例えばコントローラ501は、スライド記憶部500におけるデータ値のスライドに対する追加処理や、セレクタ502および503の動作などを制御する。
スライド記憶部500は、各々がレジスタからなり、それぞれ1単位のデータが格納されるn個のスライド5111、5112、…、511nが直列に接続されて構成されたFIFOと、当該FIFOの先頭に接続されるセレクタ510とを有する。
各スライド5101、5102、…、510nの出力は、さらに、それぞれセレクタ502に供給される。セレクタ502の出力は、セレクタ503に供給されると共に、セレクタ510にも供給される。
符号フォーマット解析部401から読み込まれたデータ値がセレクタ510に供給されると共に、セレクタ503にも供給される。セレクタ510は、図13のステップS104のスライド追加処理時には、入力されたデータ値をスライド5111に追加する。また、図13のステップS108のスライド追加処理時には、ステップS106においてスライド符号のアドレス値Addressに基づき選択されたスライドから出力されたデータを、スライド5111に追加する。
セレクタ502は、図13のステップS106の処理時に、コントローラ501から供給されるアドレス値Addressに従い、スライド記憶部500の各スライド5111、5112、…、511nの出力からスライド511Addressの出力を選択し、選択した出力を、セレクタ503および510にそれぞれ供給する。
セレクタ503は、図13のステップS103において、ステップS102で読み込まれたデータ値を出力する。また、図13のステップS107のデータ出力処理時に、セレクタ502から供給されたデータを出力する。
なお、上述では、本発明がプリンタ装置に適用されるように説明したが、これは一例でありこの例に限定されない。すなわち、本発明は、データの可逆符号化をハードウェアを用いて行う他の装置にも適用することが可能である。
100 スライド探索部
101 スライド記憶部
102 リスト探索部
103 コントローラ
110,134 論理和回路
1111〜111n,1301〜130n 比較器
1201〜120n スライド
1311〜131n セレクタ
1321〜132n レジスタ
133 アドレス値生成部
200 プリンタ装置
210 メインメモリ
210A プログラム領域
240 フラッシュメモリ
242 エンコーダ
243 デコーダ
301 スライド/リスト生成処理部
402 スライド展開部
500 スライド記憶部
501 コントローラ
502,503,510 セレクタ
5111〜511n スライド
特許第2713369号公報 特許第3610381号公報 特許第3730385号公報 特許第4000266号公報 特許第3922386号公報

Claims (9)

  1. 一方の端から入力される入力データを順次記憶し、記憶されたデータを該入力データの入力毎に他方の端側に順次移動させるスライド記憶手段と、
    前記スライド記憶手段の前記一方の端から入力される入力データを、該スライド記憶手段に記憶されるデータのそれぞれと並列的に比較し、該入力データと一致する該データの該スライド記憶手段内での位置を求める第1の比較手段と、
    前記第1の比較手段による比較結果に基づき、前記スライド記憶手段に記憶されるデータのうち少なくとも1つが該第1の比較手段に比較された入力データと一致するか否かを判定する第1の判定手段と、
    前記スライド記憶手段の前記一方の端から入力される入力データを、該スライド記憶手段に記憶されるデータのそれぞれと並列的に比較し、該入力データと一致する該データの該スライド記憶手段内での位置を求める第2の比較手段と、
    前記第2の比較手段による比較結果に基づき、前記スライド記憶手段に記憶されるデータのうち少なくとも1つが該第2の比較手段に比較された入力データと一致するか否かを判定する第2の判定手段と、
    前記第1の判定手段および前記第2の判定手段の判定結果に基づき、前記第1の比較手段の比較結果と、前記第2の比較手段の比較結果とのうち何れか一方を保持する保持手段と、
    前記第2の判定手段による判定結果に応じて、前記保持手段に保持される前記第1または前記第2の比較手段による比較結果に基づき、前記入力データと一致する前記データが記憶される前記スライド記憶手段内での位置を示すアドレス値を生成するアドレス値生成手段と、
    前記第2の判定手段による判定結果に応じて、前記スライド記憶手段に記憶されるデータのうち前記第2の比較手段に比較された入力データと一致しているデータの、該スライド記憶手段内での位置が該スライド記憶手段に対する入力データの入力毎に連続する最長の長さを求め、該長さを示すレングス値を生成するレングス値生成手段と、
    前記第1の判定手段および前記第2の判定手段による判定結果に応じて、前記入力データをそのまま用いたデータ値を生成するデータ値生成手段と、
    前記アドレス値、前記レングス値および前記データ値を含む符号を生成する符号生成手段と
    を有し、
    前記第2の比較手段は、
    前記保持手段に保持される前記第1の比較手段または前記第2の比較手段の比較結果に基づき、前記スライド記憶手段に記憶されるデータのそれぞれと、該スライド記憶手段の前記一方の端から入力される入力データとを比較する動作を制御される
    ことを特徴とするデータ処理装置。
  2. 前記アドレス値生成手段は、
    前記第2の比較手段に比較された入力データと一致しているデータのうち、前記スライド記憶手段の前記一方の端により近いデータについて、前記最長の長さを求める
    ことを特徴とする請求項1に記載のデータ処理装置。
  3. 前記保持手段は、
    前記第1の判定手段により、前記スライド記憶手段に記憶されたデータに、前記第1の比較手段に比較された入力データと一致するデータが存在しないと判定された場合に、前記第1の比較手段の比較結果を保持し、
    前記第1の判定手段により、前記スライド記憶手段に記憶されるデータのうち少なくとも1つが該第1の比較手段に比較された入力データと一致すると判定されるか、または、前記第2の判定手段により、前記スライド記憶手段に記憶されるデータのうち少なくとも1つが該第2の比較手段に比較された入力データと一致すると判定された場合に、前記第2の比較手段の比較結果を保持する
    ことを特徴とする請求項1または請求項2に記載のデータ処理装置。
  4. 前記アドレス値生成手段は、
    少なくとも、前記第2の判定手段により、前記第2の比較手段に比較された入力データに対して前記スライド記憶手段に記憶される全てのデータが一致しないと判定されたときに前記アドレス値を生成する
    ことを特徴とする請求項1乃至請求項3の何れか1項に記載のデータ処理装置。
  5. 前記レングス値生成手段は、
    少なくとも、前記第2の判定手段により、前記第2の比較手段に比較された入力データに対して前記スライド記憶手段に記憶される全てのデータが一致しないと判定されたときに前記レングス値を生成する
    ことを特徴とする請求項1乃至請求項4の何れか1項に記載のデータ処理装置。
  6. 前記データ値生成手段は、
    前記第1の判定手段により前記第1の比較手段に比較された入力データに対して前記スライド記憶手段に記憶される全てのデータが一致しないと判定されると共に、前記第2の判定手段により前記第2の比較手段に比較された入力データに対して前記スライド記憶手段に記憶される全てのデータが一致しないと判定されたときに、前記データ値を生成する
    ことを特徴とする請求項1乃至請求項5の何れか1項に記載のデータ処理装置。
  7. 前記第2の比較手段は、
    前記保持手段に保持される前記第1または前記第2の比較手段の比較結果が、比較に用いた入力データに対して前記スライド記憶手段に記憶される全てのデータが一致しないことを示す場合に、前記比較する動作を行わないように制御される
    ことを特徴とする請求項1乃至請求項6の何れか1項に記載のデータ処理装置。
  8. 前記スライド記憶手段は、前記入力データを1バイト毎に記憶する
    ことを特徴とする請求項1乃至請求項7の何れか1項に記載のデータ処理装置。
  9. 一方の端から入力される入力データを順次記憶し、記憶されたデータを該入力データの入力毎に他方の端側に順次移動させるスライド記憶手段の該一方の端から入力される入力データを、該スライド記憶手段に記憶されるデータのそれぞれと並列的に比較し、該入力データと一致する該データの該スライド記憶手段内での位置を求める第1の比較ステップと、
    前記第1の比較ステップによる比較結果に基づき、前記スライド記憶手段に記憶されるデータのうち少なくとも1つが該第1の比較ステップに比較された入力データと一致するか否かを判定する第1の判定ステップと、
    前記スライド記憶手段の前記一方の端から入力される入力データを、該スライド記憶手段に記憶されるデータのそれぞれと並列的に比較し、該入力データと一致する該データの該スライド記憶手段内での位置を求める第2の比較ステップと、
    前記第2の比較ステップによる比較結果に基づき、前記スライド記憶手段に記憶されるデータのうち少なくとも1つが該第2の比較ステップに比較された入力データと一致するか否かを判定する第2の判定ステップと、
    前記第1の判定ステップおよび前記第2の判定ステップの判定結果に基づき、前記第1の比較ステップによる比較結果と、前記第2の比較ステップによる比較結果とのうち何れか一方を保持手段に保持する保持ステップと、
    前記第2の判定ステップによる判定結果に応じて、前記保持手段に保持される前記第1の比較ステップまたは前記第2の比較ステップによる比較結果に基づき、前記入力データと一致する前記データが記憶される前記スライド記憶手段内での位置を示すアドレス値を生成するアドレス値生成ステップと、
    前記第2の判定ステップによる判定結果に応じて、前記スライド記憶手段に記憶されるデータのうち前記第2の比較ステップに比較された入力データと一致しているデータの、該スライド記憶手段内での位置が該スライド記憶手段に対する入力データの入力毎に連続する最長の長さを求め、該長さを示すレングス値を生成するレングス値生成ステップと、
    前記第1の判定ステップおよび第2の判定ステップによる判定結果に応じて、前記入力データをそのまま用いたデータ値を生成するデータ値生成ステップと、
    前記アドレス値、前記レングス値および前記データ値を含む符号を生成する符号生成ステップと
    を有し、
    前記第2の比較ステップは、
    前記保持手段に保持される前記第1の比較ステップまたは前記第2の比較ステップの比較結果に基づき、前記スライド記憶手段に記憶されるデータのそれぞれと、該スライド記憶手段の前記一方の端から入力される入力データとを比較する動作を制御される
    ことを特徴とするデータ処理方法。
JP2009213802A 2009-09-15 2009-09-15 データ処理装置およびデータ処理方法 Active JP5251799B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009213802A JP5251799B2 (ja) 2009-09-15 2009-09-15 データ処理装置およびデータ処理方法
US12/805,910 US8134483B2 (en) 2009-09-15 2010-08-24 Data processing apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009213802A JP5251799B2 (ja) 2009-09-15 2009-09-15 データ処理装置およびデータ処理方法

Publications (2)

Publication Number Publication Date
JP2011066557A JP2011066557A (ja) 2011-03-31
JP5251799B2 true JP5251799B2 (ja) 2013-07-31

Family

ID=43729972

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009213802A Active JP5251799B2 (ja) 2009-09-15 2009-09-15 データ処理装置およびデータ処理方法

Country Status (2)

Country Link
US (1) US8134483B2 (ja)
JP (1) JP5251799B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461008B2 (en) 2020-03-18 2022-10-04 Kioxia Corporation Memory system for improving compression performance of a dictionary coder circuit

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5454105B2 (ja) * 2009-11-26 2014-03-26 株式会社リコー データ処理装置およびデータ処理方法
JP2013084224A (ja) 2011-10-12 2013-05-09 Ricoh Co Ltd 画像処理装置
JP5862267B2 (ja) 2011-12-14 2016-02-16 株式会社リコー 画像処理装置および画像処理方法、ならびに、画像形成装置
JP6003059B2 (ja) * 2012-01-05 2016-10-05 株式会社リコー 画像処理装置および画像処理方法、ならびに、画像形成装置
JP6221637B2 (ja) 2013-02-19 2017-11-01 株式会社リコー 画像処理装置および画像処理方法、ならびに、画像形成装置
US20150014852A1 (en) * 2013-07-12 2015-01-15 Yueli Liu Package assembly configurations for multiple dies and associated techniques
JP6252225B2 (ja) 2014-02-17 2017-12-27 株式会社リコー 画像処理装置、画像処理方法及び画像形成装置
JP6821924B2 (ja) 2016-03-02 2021-01-27 株式会社リコー 画像処理装置、画像処理方法
WO2018160341A1 (en) * 2017-03-03 2018-09-07 Google Llc Secure code jump and execution gating
JP7040058B2 (ja) 2018-01-31 2022-03-23 株式会社リコー 符号化装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003307A (en) 1989-01-13 1991-03-26 Stac, Inc. Data compression apparatus with shift register search means
JP2730385B2 (ja) 1992-02-07 1998-03-25 住友金属工業株式会社 ジルコニウム合金管の製造方法
JP3610381B2 (ja) * 1999-05-27 2005-01-12 カシオ電子工業株式会社 データ圧縮装置
EP1318665B1 (en) * 2001-12-06 2015-02-25 Canon Kabushiki Kaisha Image processing apparatus and method, program, and storage medium
JP4000266B2 (ja) 2002-03-08 2007-10-31 株式会社リコー データ符号化装置、データ符号化方法、及びそのプログラム
GB0210602D0 (en) 2002-05-09 2002-06-19 Ibm Circuit and method for use in data compression
US7215259B2 (en) * 2005-06-03 2007-05-08 Quantum Corporation Data compression with selective encoding of short matches
JP4760727B2 (ja) * 2007-02-07 2011-08-31 カシオ電子工業株式会社 データ圧縮装置とその復号装置、それらの方法、及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11461008B2 (en) 2020-03-18 2022-10-04 Kioxia Corporation Memory system for improving compression performance of a dictionary coder circuit

Also Published As

Publication number Publication date
US8134483B2 (en) 2012-03-13
US20110063143A1 (en) 2011-03-17
JP2011066557A (ja) 2011-03-31

Similar Documents

Publication Publication Date Title
JP5251799B2 (ja) データ処理装置およびデータ処理方法
EP1832000B1 (en) Device and data method for selective compression and decompression and data format for compressed data
US6215906B1 (en) Data compression and restoration system for encoding an input character on the basis of a conditional appearance rate obtained in relation to an immediately preceding character string
US9203887B2 (en) Bitstream processing using coalesced buffers and delayed matching and enhanced memory writes
JP2011193406A (ja) データ処理装置およびデータ処理方法
US8106799B1 (en) Data compression and decompression using parallel processing
JP2007043595A (ja) 可変長符号復号化方法および装置ならびにデータ伸長装置
US20190052284A1 (en) Data compression apparatus, data decompression apparatus, data compression program, data decompression program, data compression method, and data decompression method
JP6003059B2 (ja) 画像処理装置および画像処理方法、ならびに、画像形成装置
US8406538B2 (en) Image processing apparatus and image processing method
US7253752B2 (en) Coding apparatus, decoding apparatus, coding method, decoding method and program
US6055273A (en) Data encoding and decoding method and device of a multiple-valued information source
JPH11340838A (ja) 符号化装置および復号装置
US8970405B2 (en) Method and apparatus for entropy decoding
JP4093200B2 (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
KR20050010918A (ko) 가변길이 복호화를 위한 방법 및 시스템, 및 코드워드들의지역화를 위한 장치
JP6363581B2 (ja) 入力ブロックのスキャンと同時にソート済みシンボル・リストを維持するハードウェア・データ圧縮器
JP2009207064A (ja) データ圧縮装置および画像読取装置
JP5454105B2 (ja) データ処理装置およびデータ処理方法
US11777518B2 (en) Data compression device, memory system and method
JP2005269184A (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
US11593311B2 (en) Compression system with longest match processing for generating compressed data
JP3482820B2 (ja) データ符号化方法およびデータ符号化装置ならびにデータ復号化方法およびデータ復号化装置
CN117560013A (zh) 数据压缩方法和电子设备
JPH10126276A (ja) 多値情報源のデータ符号化方法およびデータ符号化装置ならびに多値情報源のデータ復号化方法およびデータ復号化装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130314

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: 20130319

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130401

R151 Written notification of patent or utility model registration

Ref document number: 5251799

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20160426

Year of fee payment: 3