JPH0887398A - 符号化、復号化方式及び情報処理装置 - Google Patents
符号化、復号化方式及び情報処理装置Info
- Publication number
- JPH0887398A JPH0887398A JP6221361A JP22136194A JPH0887398A JP H0887398 A JPH0887398 A JP H0887398A JP 6221361 A JP6221361 A JP 6221361A JP 22136194 A JP22136194 A JP 22136194A JP H0887398 A JPH0887398 A JP H0887398A
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- code
- decoding
- encoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【目的】本発明の目的は、ファイルから伸長時の圧縮デ
ータ入力に伴うオーバーヘッドを軽減することにある。 【構成】2種類の符号、ブロック終了コード、データ終
了コードを設け、圧縮符号列のファイルを生成時に、符
号列容量が定められたブロックサイズの整数倍となる直
前にブロック終了コードを挿入し、符号列末尾にデータ
終了コードを付加する(a)。復号時はブロックサイズ
単位でファイルを読み込み(b,c,d)、読み込み毎
にブロック終了コードあるいはデータ終了コードを読み
出すまで復号する処理を繰り返す。 【効果】本発明によれば、適切にブロックサイズを定め
ることにより、ファイルアクセス回数を少なくできる効
果がある。
ータ入力に伴うオーバーヘッドを軽減することにある。 【構成】2種類の符号、ブロック終了コード、データ終
了コードを設け、圧縮符号列のファイルを生成時に、符
号列容量が定められたブロックサイズの整数倍となる直
前にブロック終了コードを挿入し、符号列末尾にデータ
終了コードを付加する(a)。復号時はブロックサイズ
単位でファイルを読み込み(b,c,d)、読み込み毎
にブロック終了コードあるいはデータ終了コードを読み
出すまで復号する処理を繰り返す。 【効果】本発明によれば、適切にブロックサイズを定め
ることにより、ファイルアクセス回数を少なくできる効
果がある。
Description
【0001】
【産業上の利用分野】本発明は、情報処理装置のプログ
ラムやデータを高速に圧縮符号化及び復号化する方式に
関する。
ラムやデータを高速に圧縮符号化及び復号化する方式に
関する。
【0002】
【従来の技術】情報処理装置のプログラムやテキストな
どのデータ列を、元データを完全復号可能な形で、圧縮
符号化するアルゴリズムとしては、“IEEE Transa
ctionson Information Theory”Vol.IT−23,N
o.3,pp.337−343のJ.ZivとA.Lempelによ
る論文“A Universal Algorithm for SequentialD
ate Complession”に記載の方式が有効であることが知
られている。本方式に代表される圧縮符号化、並びに復
号化アルゴリズムは、対象データを特定しないユニバー
サル符号化方式と呼ばれる。
どのデータ列を、元データを完全復号可能な形で、圧縮
符号化するアルゴリズムとしては、“IEEE Transa
ctionson Information Theory”Vol.IT−23,N
o.3,pp.337−343のJ.ZivとA.Lempelによ
る論文“A Universal Algorithm for SequentialD
ate Complession”に記載の方式が有効であることが知
られている。本方式に代表される圧縮符号化、並びに復
号化アルゴリズムは、対象データを特定しないユニバー
サル符号化方式と呼ばれる。
【0003】ユニバーサル符号化方式では通常、対象デ
ータをシーケンシャルなデータの並びに見立て、その並
びの冗長性を利用して圧縮する。従って、圧縮符号化処
理への入力や、その出力は通常シーケンシャルなデータ
列として扱われることが多い。
ータをシーケンシャルなデータの並びに見立て、その並
びの冗長性を利用して圧縮する。従って、圧縮符号化処
理への入力や、その出力は通常シーケンシャルなデータ
列として扱われることが多い。
【0004】
【発明が解決しようとする課題】ところで、圧縮処理に
よってサイズを削減されたデータは、通常他の装置など
へ伝送されるか、ファイルやメモリに記憶される。
よってサイズを削減されたデータは、通常他の装置など
へ伝送されるか、ファイルやメモリに記憶される。
【0005】ファイルの場合、データの入出力は特定の
データ長のブロック単位でなされるのが普通である。し
たがって符号化、復号化処理を行う際には、通常データ
全体かブロック単位で圧縮データをバッファに読み込
み、そこからシンボル単位で読み出して処理を行ってい
た。この処理の流れの例を図2を用いて説明する。
データ長のブロック単位でなされるのが普通である。し
たがって符号化、復号化処理を行う際には、通常データ
全体かブロック単位で圧縮データをバッファに読み込
み、そこからシンボル単位で読み出して処理を行ってい
た。この処理の流れの例を図2を用いて説明する。
【0006】図2はファイルにブロック単位で記録され
ている圧縮データを伸長(デコード)して結果を出力す
る伸長処理の流れの例を示したものである。伸長処理は
ステップ201で圧縮データ1符号を取得し、ステップ
203でそれが終了コードかどうかを判断し、終了コー
ドでなければステップ205でその符号に対するデコー
ド処理を行い、ステップ207で結果を出力してステッ
プ201に戻る。ステップ203で終了コードと判定さ
れれば、伸長処理を終える。
ている圧縮データを伸長(デコード)して結果を出力す
る伸長処理の流れの例を示したものである。伸長処理は
ステップ201で圧縮データ1符号を取得し、ステップ
203でそれが終了コードかどうかを判断し、終了コー
ドでなければステップ205でその符号に対するデコー
ド処理を行い、ステップ207で結果を出力してステッ
プ201に戻る。ステップ203で終了コードと判定さ
れれば、伸長処理を終える。
【0007】ステップ201で圧縮データ1符号を取得
するためにはファイル入出力処理を呼び出す。ファイル
入出力処理はブロック単位のデータをバッファに読み出
し、それを所定のデータ長で順次切り出して呼出し側の
処理に返す。ステップ211でバッファが空か、あるい
はバッファ上のデータを全て読み出し終えたかを判定
し、いずれかが成立する場合には、ステップ213でバ
ッファ上に1ブロックデータを読み込み、ステップ21
5に進む。ステップ211の判定がいずれも成立しない
場合には、ステップ215に進み、バッファ上から所定
のデータ長で1シンボル取得して呼出し側の処理である
伸長処理に返す。なお、実際の処理ではファイル入出力
時のエラー処理などが行われるが、本説明とは直接関連
しないため、図では省略した。
するためにはファイル入出力処理を呼び出す。ファイル
入出力処理はブロック単位のデータをバッファに読み出
し、それを所定のデータ長で順次切り出して呼出し側の
処理に返す。ステップ211でバッファが空か、あるい
はバッファ上のデータを全て読み出し終えたかを判定
し、いずれかが成立する場合には、ステップ213でバ
ッファ上に1ブロックデータを読み込み、ステップ21
5に進む。ステップ211の判定がいずれも成立しない
場合には、ステップ215に進み、バッファ上から所定
のデータ長で1シンボル取得して呼出し側の処理である
伸長処理に返す。なお、実際の処理ではファイル入出力
時のエラー処理などが行われるが、本説明とは直接関連
しないため、図では省略した。
【0008】ステップ201からのファイル入出力処理
は圧縮データ1符号毎に呼び出される。従って、プログ
ラムの呼出しやステップ211の処理によるオーバーヘ
ッドが圧縮符号の数だけ積み重ねられる。デコード処理
205や結果出力処理207が高速になるに従って、こ
のようなオーバーヘッドの処理時間への影響が無視でき
なくなった。
は圧縮データ1符号毎に呼び出される。従って、プログ
ラムの呼出しやステップ211の処理によるオーバーヘ
ッドが圧縮符号の数だけ積み重ねられる。デコード処理
205や結果出力処理207が高速になるに従って、こ
のようなオーバーヘッドの処理時間への影響が無視でき
なくなった。
【0009】そこで、速度が要求される場合には、圧縮
データ全体を一旦ランダムアクセス可能なメモリに転送
して、そこから読み出して伸長してから目的のメモリに
配置する方法が採られていた。しかし、メモリ上に圧縮
データを保持する領域と伸長データを保持する領域が別
々に必要となり、ランダムアクセス可能なメモリの搭載
量が少ない機器では実施が困難であった。
データ全体を一旦ランダムアクセス可能なメモリに転送
して、そこから読み出して伸長してから目的のメモリに
配置する方法が採られていた。しかし、メモリ上に圧縮
データを保持する領域と伸長データを保持する領域が別
々に必要となり、ランダムアクセス可能なメモリの搭載
量が少ない機器では実施が困難であった。
【0010】そこで、本発明の目的はメモリを増大させ
ることなく、圧縮符号取得の際のファイル入出力に伴う
オーバーヘッドを減らした符号化、復号化方式を提供す
ることにある。
ることなく、圧縮符号取得の際のファイル入出力に伴う
オーバーヘッドを減らした符号化、復号化方式を提供す
ることにある。
【0011】
【課題を解決するための手段】上記の課題を解決するた
め、本発明では、シーケンシャルなデータ列を、圧縮を
施したシーケンシャルな圧縮符号に変換して出力する圧
縮符号化、並びにその復号化方式において、圧縮符号の
中に処理を中断する2つの制御符号を設けている。各コ
ードを、 1)ブロック終了コード 2)データ終了コード と名付ける。
め、本発明では、シーケンシャルなデータ列を、圧縮を
施したシーケンシャルな圧縮符号に変換して出力する圧
縮符号化、並びにその復号化方式において、圧縮符号の
中に処理を中断する2つの制御符号を設けている。各コ
ードを、 1)ブロック終了コード 2)データ終了コード と名付ける。
【0012】そして、データサイズがファイルのブロッ
クサイズのn倍となる部分の直前の圧縮データにブロッ
ク終了コードを、データの終了部にデータ終了コードを
挿入し、ブロックサイズ単位で伸長可能な符号を生成
し、ファイルに出力する圧縮符号化処理手段を用意して
いる。
クサイズのn倍となる部分の直前の圧縮データにブロッ
ク終了コードを、データの終了部にデータ終了コードを
挿入し、ブロックサイズ単位で伸長可能な符号を生成
し、ファイルに出力する圧縮符号化処理手段を用意して
いる。
【0013】また、データの入出力手段として、ファイ
ルからブロック単位でデータを取得するブロックデータ
取得処理手段を用意している。
ルからブロック単位でデータを取得するブロックデータ
取得処理手段を用意している。
【0014】さらに、ブロックデータ取得処理手段が取
得したデータを1符号ずつ読み出し、該符号がブロック
終了コード、あるいはデータ終了コードの場合は伸長処
理を中断して、呼出し側にブロック終了コード、あるい
はデータ終了コードを受け取った旨通知して呼出し側に
処理を移し、ブロック終了、データ終了コードの何れで
もなければ圧縮符号と見做して伸長処理を行うブロック
データ伸長処理手段を用意している。
得したデータを1符号ずつ読み出し、該符号がブロック
終了コード、あるいはデータ終了コードの場合は伸長処
理を中断して、呼出し側にブロック終了コード、あるい
はデータ終了コードを受け取った旨通知して呼出し側に
処理を移し、ブロック終了、データ終了コードの何れで
もなければ圧縮符号と見做して伸長処理を行うブロック
データ伸長処理手段を用意している。
【0015】そして、ブロックデータ伸長処理手段がデ
ータ終了コードを受け取ったと通知するまで、ブロック
データ取得処理手段、ブロックデータ伸長処理手段を順
に呼び出し、ブロックデータ伸長処理手段がデータ終了
コードを受け取ったと通知すると処理を終了する伸長処
理手段を用意している。
ータ終了コードを受け取ったと通知するまで、ブロック
データ取得処理手段、ブロックデータ伸長処理手段を順
に呼び出し、ブロックデータ伸長処理手段がデータ終了
コードを受け取ったと通知すると処理を終了する伸長処
理手段を用意している。
【0016】
【作用】本発明の作用を図1の符号構成図を用いて説明
する。本発明の圧縮符号化処理手段は、図1(a)に示
すようにブロック終了コードを、圧縮データを先頭から
ブロックサイズ毎に区切った場合の末尾にそれぞれ付加
し、データ終了コードをデータ末尾に付加してファイル
に出力する。
する。本発明の圧縮符号化処理手段は、図1(a)に示
すようにブロック終了コードを、圧縮データを先頭から
ブロックサイズ毎に区切った場合の末尾にそれぞれ付加
し、データ終了コードをデータ末尾に付加してファイル
に出力する。
【0017】従って、この出力された圧縮データをブロ
ック単位で分割して取得すると、(b)(c)(d)に
示すように必ずブロック終了コードかデータ終了コード
が含まれる。
ック単位で分割して取得すると、(b)(c)(d)に
示すように必ずブロック終了コードかデータ終了コード
が含まれる。
【0018】ブロックデータ取得処理手段は、圧縮デー
タファイルをブロック単位で分割して取得するので、上
記のようにブロック終了コードかデータ終了コードを含
む圧縮データの部分データが取得される。
タファイルをブロック単位で分割して取得するので、上
記のようにブロック終了コードかデータ終了コードを含
む圧縮データの部分データが取得される。
【0019】ブロックデータ伸長処理手段は、この部分
データを先頭から順に1符号ずつ取得して、ブロック終
了コード、あるいはデータ終了コードを読み出すまで伸
長処理を行い、伸長結果を出力する。そしてブロック終
了コードかデータ終了コードを読み出した場合には、そ
の何れを読み出したのかを呼び元の処理手段に通知して
処理を終了する。
データを先頭から順に1符号ずつ取得して、ブロック終
了コード、あるいはデータ終了コードを読み出すまで伸
長処理を行い、伸長結果を出力する。そしてブロック終
了コードかデータ終了コードを読み出した場合には、そ
の何れを読み出したのかを呼び元の処理手段に通知して
処理を終了する。
【0020】圧縮符号化処理手段により、ブロック終了
コードはブロックサイズ単位でデータを先頭から区切っ
た場合の末尾に付加されているので、圧縮データをブロ
ックサイズ単位で取得してブロックデータ伸長処理手段
により伸長した場合、ブロック終了コード取得を判定し
た時点で当該取得ブロックサイズのデータの伸長は完了
していることになる。また、その判定結果は続きの圧縮
データがあることも示している。
コードはブロックサイズ単位でデータを先頭から区切っ
た場合の末尾に付加されているので、圧縮データをブロ
ックサイズ単位で取得してブロックデータ伸長処理手段
により伸長した場合、ブロック終了コード取得を判定し
た時点で当該取得ブロックサイズのデータの伸長は完了
していることになる。また、その判定結果は続きの圧縮
データがあることも示している。
【0021】また、データ終了コードはデータ全体の末
尾に付加されているので、ブロックデータ伸長処理手段
がデータ終了コード取得を判定した時点で全データの伸
長が完了していることになる。
尾に付加されているので、ブロックデータ伸長処理手段
がデータ終了コード取得を判定した時点で全データの伸
長が完了していることになる。
【0022】伸長処理手段は、ブロックデータ取得処理
手段とブロックデータ伸長手段を順に呼出す。従って、
一連の呼出しで1ブロック分のデータの伸長を完了す
る。
手段とブロックデータ伸長手段を順に呼出す。従って、
一連の呼出しで1ブロック分のデータの伸長を完了す
る。
【0023】次いで、伸長処理手段は、ブロックデータ
伸長手段からの通知を受け取る。該手段からブロック終
了コードを取得したと通知された場合には、再度ブロッ
クデータ取得処理手段とブロックデータ伸長手段を順に
呼び出し、次のブロックのデータの読み込み、伸長を行
う。そして該手段からデータ終了コードを取得したと通
知された場合には、伸長処理手段を終了する。
伸長手段からの通知を受け取る。該手段からブロック終
了コードを取得したと通知された場合には、再度ブロッ
クデータ取得処理手段とブロックデータ伸長手段を順に
呼び出し、次のブロックのデータの読み込み、伸長を行
う。そして該手段からデータ終了コードを取得したと通
知された場合には、伸長処理手段を終了する。
【0024】本発明の伸長処理手段では、圧縮データの
ファイルからの取得をブロック単位で行う。従って、従
来のように1符号ずつアクセスする場合に比べて入出力
に伴うオーバーヘッドを少なくできる。
ファイルからの取得をブロック単位で行う。従って、従
来のように1符号ずつアクセスする場合に比べて入出力
に伴うオーバーヘッドを少なくできる。
【0025】
【実施例】以下、本発明の1実施例について、図面を用
いて説明する。
いて説明する。
【0026】図3に、本発明の符号化方式並びに復号化
方式を実施した情報処理装置の構成を示す。図におい
て、1は演算処理装置(CPU)、2は読出し専用メモ
リ(ROM)、3は随時書き込み読出しメモリ(RA
M)、4はディスクコントローラー(DC)、5はディ
スクドライブ(DD)、6はシステムバスである。
方式を実施した情報処理装置の構成を示す。図におい
て、1は演算処理装置(CPU)、2は読出し専用メモ
リ(ROM)、3は随時書き込み読出しメモリ(RA
M)、4はディスクコントローラー(DC)、5はディ
スクドライブ(DD)、6はシステムバスである。
【0027】CPU1はROM2やRAM3上のプログ
ラムやデータに基づいて、演算処理を行い、その結果を
RAM3に格納する。DC4は、CPU1の制御の下で
DD5を制御し、ディスクへのデータの書き込み、ディ
スクからのデータの読み出しを行う。CPU1とROM
2、RAM3、DC4はシステムバス6で接続されてお
り、システムバス6経由でデータのやり取りを行う。
ラムやデータに基づいて、演算処理を行い、その結果を
RAM3に格納する。DC4は、CPU1の制御の下で
DD5を制御し、ディスクへのデータの書き込み、ディ
スクからのデータの読み出しを行う。CPU1とROM
2、RAM3、DC4はシステムバス6で接続されてお
り、システムバス6経由でデータのやり取りを行う。
【0028】ROM2には本情報処理装置を動作させる
ためのプログラム101を格納している。プログラムと
しては、装置電源投入時に最初に起動され、各ハードウ
ェアやソフトウェアの制御を行う管理プログラム101
a,圧縮処理を行う圧縮処理プログラム101b,伸長
処理を行う伸長処理プログラム101c,DD5上のフ
ァイルの入出力を行うファイル入出力プログラム101
d,応用プログラムを圧縮処理101bを用いて圧縮し
た圧縮済み応用プログラム101eがある。
ためのプログラム101を格納している。プログラムと
しては、装置電源投入時に最初に起動され、各ハードウ
ェアやソフトウェアの制御を行う管理プログラム101
a,圧縮処理を行う圧縮処理プログラム101b,伸長
処理を行う伸長処理プログラム101c,DD5上のフ
ァイルの入出力を行うファイル入出力プログラム101
d,応用プログラムを圧縮処理101bを用いて圧縮し
た圧縮済み応用プログラム101eがある。
【0029】また、DD5には応用プログラムが使用す
るデータを圧縮処理101bを用いて圧縮して格納した
ファイルである圧縮済データファイル104aや、同じ
く応用プログラムを圧縮処理101bを用いて圧縮して
格納したファイルである圧縮済応用プログラムファイル
104bを格納している。
るデータを圧縮処理101bを用いて圧縮して格納した
ファイルである圧縮済データファイル104aや、同じ
く応用プログラムを圧縮処理101bを用いて圧縮して
格納したファイルである圧縮済応用プログラムファイル
104bを格納している。
【0030】RAM3には、DD5上のファイル104
を読み込むためのファイル入出力バッファ102や、応
用プログラムが動作するためのワークメモリ103を格
納している。
を読み込むためのファイル入出力バッファ102や、応
用プログラムが動作するためのワークメモリ103を格
納している。
【0031】管理プログラム101aがDD5上のファ
イル104を読み出す場合には、ファイル入出力プログ
ラム101dを起動し、ファイル入出力バッファ102
に一旦読み込み、その後目的の格納位置に転送する。こ
の際に、データが圧縮されている場合には、伸長処理プ
ログラム101cを起動して、伸長しながら目的の格納
位置に転送する。
イル104を読み出す場合には、ファイル入出力プログ
ラム101dを起動し、ファイル入出力バッファ102
に一旦読み込み、その後目的の格納位置に転送する。こ
の際に、データが圧縮されている場合には、伸長処理プ
ログラム101cを起動して、伸長しながら目的の格納
位置に転送する。
【0032】次に、本実施例の情報処理装置の圧縮、伸
長処理の動作について、詳細に説明する。
長処理の動作について、詳細に説明する。
【0033】本圧縮処理プログラム101b並びに伸長
処理プログラム101cはJ.ZivとA.Lempelが提案
した方式(LZスライド辞書方式)を手続きとして記述
したものである。これを簡単に説明する。
処理プログラム101cはJ.ZivとA.Lempelが提案
した方式(LZスライド辞書方式)を手続きとして記述
したものである。これを簡単に説明する。
【0034】LZスライド辞書方式では、入力されたデ
ータ列を逐次バッファに溜めておく。バッファ上のデー
タを履歴データ列と呼ぶ。ある程度バッファに履歴デー
タ列が蓄積された段階で、更に入力されたデータ列(新
規データ列と呼ぶ)と、履歴データ列とを比較し、 A)新規データ列の先頭からの内容と一致するデータ列
(部分データ列)が履歴データ列中に存在すれば、「履
歴参照」を示す識別子と、部分データ列の位置および一
致した長さを示すインデックスを符号(履歴参照インデ
ックスと呼ぶ)として出力する。
ータ列を逐次バッファに溜めておく。バッファ上のデー
タを履歴データ列と呼ぶ。ある程度バッファに履歴デー
タ列が蓄積された段階で、更に入力されたデータ列(新
規データ列と呼ぶ)と、履歴データ列とを比較し、 A)新規データ列の先頭からの内容と一致するデータ列
(部分データ列)が履歴データ列中に存在すれば、「履
歴参照」を示す識別子と、部分データ列の位置および一
致した長さを示すインデックスを符号(履歴参照インデ
ックスと呼ぶ)として出力する。
【0035】B)新規データ列の先頭からの内容と一致す
るデータ列(部分データ列)が履歴データ列中に存在し
なければ、「非参照」を示す識別子と、新規データ列の
先頭1文字(1バイト)を符号(非参照データと呼ぶ)
として出力する。
るデータ列(部分データ列)が履歴データ列中に存在し
なければ、「非参照」を示す識別子と、新規データ列の
先頭1文字(1バイト)を符号(非参照データと呼ぶ)
として出力する。
【0036】そして、それぞれ出力した符号に対応する
データ、あるいはデータ列を履歴データ列に追加すると
いう手続を繰り返し行う。
データ、あるいはデータ列を履歴データ列に追加すると
いう手続を繰り返し行う。
【0037】図4に本実施例で使用している圧縮符号の
構成を示す。履歴参照の場合、並びに後述の制御コード
の場合には上側に示した構成となる。
構成を示す。履歴参照の場合、並びに後述の制御コード
の場合には上側に示した構成となる。
【0038】本実施例では、履歴参照識別子を1ビッ
ト、履歴参照インデックスを16ビットで構成し、位置
インデックスに12ビット、長さインデックスに4ビッ
トをそれぞれ振り分けている。
ト、履歴参照インデックスを16ビットで構成し、位置
インデックスに12ビット、長さインデックスに4ビッ
トをそれぞれ振り分けている。
【0039】また、非参照の場合、図4の下側に示した
構成となる。本実施例では非参照識別子に1ビット、非
参照データ8ビットで構成している。
構成となる。本実施例では非参照識別子に1ビット、非
参照データ8ビットで構成している。
【0040】位置インデックスは、参照する部分データ
列と参照先との相対オフセットとしている。従って、取
り得る値は1から4095(=2^12−1)までであ
り、0は有りえない。そこで、位置インデックスが0の
符号を伸長処理プログラム101cの制御用コードとし
ている。表1に、インデックスの値と符号との対応を示
す。
列と参照先との相対オフセットとしている。従って、取
り得る値は1から4095(=2^12−1)までであ
り、0は有りえない。そこで、位置インデックスが0の
符号を伸長処理プログラム101cの制御用コードとし
ている。表1に、インデックスの値と符号との対応を示
す。
【0041】
【表1】
【0042】データ終了コード401は、伸長処理プロ
グラム101cがデータの終了を識別するための符号
で、圧縮データ末尾に置く。ブロック終了コード403
は、伸長処理101cがブロック単位での分割伸長を実
現するためのもので、ファイル入出力バッファ102の
サイズで圧縮データを区切った末尾に置く。位置インデ
ックスが0以外の場合は履歴参照インデックス405で
ある。
グラム101cがデータの終了を識別するための符号
で、圧縮データ末尾に置く。ブロック終了コード403
は、伸長処理101cがブロック単位での分割伸長を実
現するためのもので、ファイル入出力バッファ102の
サイズで圧縮データを区切った末尾に置く。位置インデ
ックスが0以外の場合は履歴参照インデックス405で
ある。
【0043】図1(a)は、ファイル内でのブロック終
了コード403、データ終了コード401の配置例を示
している。この例のようなファイル104をファイル入
出力バッファ102にバッファサイズ単位で読み込む
と、図1(b)〜図1(d)のようになる。本発明の情
報処理装置では、各読み込み毎にブロック終了コード4
03、あるいはデータ終了コード401を読み出すまで
復号化し、復号結果を組み合わせることで元のデータが
復号化できるようにしている。以下、データ符号化、復
号化を実現する圧縮処理プログラム101b、伸長処理
プログラム101cの処理について詳細に説明する。
了コード403、データ終了コード401の配置例を示
している。この例のようなファイル104をファイル入
出力バッファ102にバッファサイズ単位で読み込む
と、図1(b)〜図1(d)のようになる。本発明の情
報処理装置では、各読み込み毎にブロック終了コード4
03、あるいはデータ終了コード401を読み出すまで
復号化し、復号結果を組み合わせることで元のデータが
復号化できるようにしている。以下、データ符号化、復
号化を実現する圧縮処理プログラム101b、伸長処理
プログラム101cの処理について詳細に説明する。
【0044】図4に圧縮処理プログラム101bの処理
の流れを示す。圧縮処理プログラム101bは、呼び出
されるとまずステップ501で圧縮データのファイル入
出力バッファ上でのサイズをカウントする変数O_CN
Tに初期値0を設定し、ステップ503で指定された圧
縮対象のデータをワークメモリ103上に取得する。そ
してステップ505で、ステップ503で取得したデー
タ全てを圧縮符号化したかを判定し、全てを圧縮符号化
していれば、ステップ517に進み、「履歴参照」識別
子とデータ終了コード401をファイル入出力バッファ
102に出力し、ステップ519でファイル入出力バッ
ファ102の内容をファイルにブロック書き込みする。
この手続きはファイル入出力プログラム101dの機能
を利用しており、一般的な手続きで実現されている。そ
の後、圧縮処理プログラム101bの処理を終了する。
の流れを示す。圧縮処理プログラム101bは、呼び出
されるとまずステップ501で圧縮データのファイル入
出力バッファ上でのサイズをカウントする変数O_CN
Tに初期値0を設定し、ステップ503で指定された圧
縮対象のデータをワークメモリ103上に取得する。そ
してステップ505で、ステップ503で取得したデー
タ全てを圧縮符号化したかを判定し、全てを圧縮符号化
していれば、ステップ517に進み、「履歴参照」識別
子とデータ終了コード401をファイル入出力バッファ
102に出力し、ステップ519でファイル入出力バッ
ファ102の内容をファイルにブロック書き込みする。
この手続きはファイル入出力プログラム101dの機能
を利用しており、一般的な手続きで実現されている。そ
の後、圧縮処理プログラム101bの処理を終了する。
【0045】ステップ503の判定の結果、ステップ5
03で取得したデータ全てを圧縮符号化済でない場合、
ステップ507以降を実行する。
03で取得したデータ全てを圧縮符号化済でない場合、
ステップ507以降を実行する。
【0046】まず、ステップ507で、圧縮元データを
読み出し、1圧縮符号を生成し、ファイル入出力バッフ
ァ102に出力する。前記の通り、本実施例ではLZス
ライド辞書方式によって圧縮符号化を行っている。次い
で、ステップ509で圧縮データの出力サイズをカウン
トする変数O_CNTに、ステップ507で出力した符
号のサイズを加え、値を更新する。そしてステップ51
1でファイル入出力バッファ102のサイズBLK_S
IZから変数O_CNTの値を引いて、バッファ102
上に出力できる残りバイト数を求め、5バイトより多い
かどうかを判定する。結果が「y」であれば、ステップ
505に戻る。ステップ511の判定の結果が「n」で
あれば、ステップ513で「履歴参照」識別子とブロッ
ク終了コード403を出力し、ステップ505に戻る。
読み出し、1圧縮符号を生成し、ファイル入出力バッフ
ァ102に出力する。前記の通り、本実施例ではLZス
ライド辞書方式によって圧縮符号化を行っている。次い
で、ステップ509で圧縮データの出力サイズをカウン
トする変数O_CNTに、ステップ507で出力した符
号のサイズを加え、値を更新する。そしてステップ51
1でファイル入出力バッファ102のサイズBLK_S
IZから変数O_CNTの値を引いて、バッファ102
上に出力できる残りバイト数を求め、5バイトより多い
かどうかを判定する。結果が「y」であれば、ステップ
505に戻る。ステップ511の判定の結果が「n」で
あれば、ステップ513で「履歴参照」識別子とブロッ
ク終了コード403を出力し、ステップ505に戻る。
【0047】図5に伸長処理プログラム101cの処理
の流れを示す。伸長処理プログラム101cは呼び出さ
れると、まず、ステップ601でブロックデータ読み込
み処理プログラム610を呼び出す。これにより、ファ
イル入出力バッファ102に1ブロック分のデータが読
み込まれる。次に、伸長処理プログラムはステップ60
3でブロックデータ伸長処理プログラム620を呼び出
す。これにより、ステップ601で呼び出された1ブロ
ック分のデータが伸長され、目的の格納位置に転送され
る。その後、ステップ605でブロックデータ伸長処理
プログラム620からのリターンコードを判定し、「ブ
ロック終了」であれば、ステップ601に戻り、処理を
継続する。ステップ605の判定の結果、リターンコー
ドが「データ終了」であれば、伸長処理プログラム10
1cを終了する。
の流れを示す。伸長処理プログラム101cは呼び出さ
れると、まず、ステップ601でブロックデータ読み込
み処理プログラム610を呼び出す。これにより、ファ
イル入出力バッファ102に1ブロック分のデータが読
み込まれる。次に、伸長処理プログラムはステップ60
3でブロックデータ伸長処理プログラム620を呼び出
す。これにより、ステップ601で呼び出された1ブロ
ック分のデータが伸長され、目的の格納位置に転送され
る。その後、ステップ605でブロックデータ伸長処理
プログラム620からのリターンコードを判定し、「ブ
ロック終了」であれば、ステップ601に戻り、処理を
継続する。ステップ605の判定の結果、リターンコー
ドが「データ終了」であれば、伸長処理プログラム10
1cを終了する。
【0048】ブロックデータ読み込みプログラム610
は、図右上に示したように、指定された圧縮データ1ブ
ロック分をファイル入出力バッファ102に取得し、処
理を終了する。取得の手続きは、ファイル入出力プログ
ラム101dの機能を利用しており、一般的な手続きで
実現されている。
は、図右上に示したように、指定された圧縮データ1ブ
ロック分をファイル入出力バッファ102に取得し、処
理を終了する。取得の手続きは、ファイル入出力プログ
ラム101dの機能を利用しており、一般的な手続きで
実現されている。
【0049】ブロックデータ伸長プログラム620はス
テップ622でファイル入出力バッファから圧縮データ
1符号を取得する。
テップ622でファイル入出力バッファから圧縮データ
1符号を取得する。
【0050】次にステップ624で、ステップ622で
取得した符号が制御コード、すなわちブロック終了コー
ド403かデータ終了コード401かどうかを判定す
る。符号の識別子が「履歴参照」で、かつ位置インデッ
クスが0である場合、制御コードと判定している。判定
の結果、制御コードならばステップ630以降の処理を
実行する。ステップ630では、ステップ622で取得
した符号の長さインデックスにより、ブロック終了コー
ド403かデータ終了コード401かを判定する。ブロ
ック終了コード403であればステップ632で「ブロ
ック終了」を呼び元のプログラムに返して処理を終了
し、ステップ630の判定の結果、データ終了コード4
01であればステップ634で「データ終了」を呼び元
のプログラムに返して処理を終了する。
取得した符号が制御コード、すなわちブロック終了コー
ド403かデータ終了コード401かどうかを判定す
る。符号の識別子が「履歴参照」で、かつ位置インデッ
クスが0である場合、制御コードと判定している。判定
の結果、制御コードならばステップ630以降の処理を
実行する。ステップ630では、ステップ622で取得
した符号の長さインデックスにより、ブロック終了コー
ド403かデータ終了コード401かを判定する。ブロ
ック終了コード403であればステップ632で「ブロ
ック終了」を呼び元のプログラムに返して処理を終了
し、ステップ630の判定の結果、データ終了コード4
01であればステップ634で「データ終了」を呼び元
のプログラムに返して処理を終了する。
【0051】ステップ624の判定の結果、ステップ6
22で取得した符号が制御コードでなければ、ステップ
626でLZスライド辞書方式によりデコードし、ステ
ップ628でその結果を目的の格納位置に転送する。そ
して、ステップ622に戻る。
22で取得した符号が制御コードでなければ、ステップ
626でLZスライド辞書方式によりデコードし、ステ
ップ628でその結果を目的の格納位置に転送する。そ
して、ステップ622に戻る。
【0052】以上説明した圧縮処理プログラム101
b、伸長処理プログラム101cの流れにより生成され
る符号と、伸長処理の動作について説明する。
b、伸長処理プログラム101cの流れにより生成され
る符号と、伸長処理の動作について説明する。
【0053】ここでは、圧縮するとファイル104のブ
ロックサイズの2倍以上3倍未満となるデータ(以下サ
ンプルデータと表記)を圧縮処理プログラム101bで
圧縮した場合を例に図1と図5を用いて説明する。
ロックサイズの2倍以上3倍未満となるデータ(以下サ
ンプルデータと表記)を圧縮処理プログラム101bで
圧縮した場合を例に図1と図5を用いて説明する。
【0054】上記サンプルデータを圧縮処理プログラム
101bの圧縮元データとして指定すると、ステップ5
03でデータ全体をワークメモリ上に読み出す。そして
ステップ505、ステップ507を順次実行し、LZス
ライド辞書法により圧縮符号化してファイル入出力バッ
ファ102に出力する。そしてステップ509で変数O
_CNTを更新する。これにより、O_CNTはファイ
ル入出力バッファ102上の圧縮符号の容量を保持する
ことになる。
101bの圧縮元データとして指定すると、ステップ5
03でデータ全体をワークメモリ上に読み出す。そして
ステップ505、ステップ507を順次実行し、LZス
ライド辞書法により圧縮符号化してファイル入出力バッ
ファ102に出力する。そしてステップ509で変数O
_CNTを更新する。これにより、O_CNTはファイ
ル入出力バッファ102上の圧縮符号の容量を保持する
ことになる。
【0055】さて、ブロック終了符号は図4に示したよ
うに17ビットあり、次に出力する符号が履歴参照イン
デックスだった場合、合わせて34ビットの余裕が必要
となる。従って、ファイル入出力バッファ102の残り
バイト数が5バイト(=40ビット)より大きいなら
ば、次の符号生成手順であるステップ505、ステップ
507を実行してもブロック終了符号を出力できる。そ
こでステップ511では、ファイル入出力バッファ10
2のサイズからO_CNTの値を引き、それが5よりも
大きいならばステップ505に戻り、次の符号生成を行
う。
うに17ビットあり、次に出力する符号が履歴参照イン
デックスだった場合、合わせて34ビットの余裕が必要
となる。従って、ファイル入出力バッファ102の残り
バイト数が5バイト(=40ビット)より大きいなら
ば、次の符号生成手順であるステップ505、ステップ
507を実行してもブロック終了符号を出力できる。そ
こでステップ511では、ファイル入出力バッファ10
2のサイズからO_CNTの値を引き、それが5よりも
大きいならばステップ505に戻り、次の符号生成を行
う。
【0056】ファイル入出力バッファ102の残りバイ
ト数が5バイト以下になると、ステップ511の判定が
「n」となり、ステップ513でブロック終了コード4
03をファイル入出力バッファ102に出力し、ステッ
プ514でファイル入出力バッファ102の内容をファ
イル104に書き出す。これで1ブロック分の圧縮デー
タがファイル104に出力される。
ト数が5バイト以下になると、ステップ511の判定が
「n」となり、ステップ513でブロック終了コード4
03をファイル入出力バッファ102に出力し、ステッ
プ514でファイル入出力バッファ102の内容をファ
イル104に書き出す。これで1ブロック分の圧縮デー
タがファイル104に出力される。
【0057】ファイルへの出力後、変数O_CNTを初
期値0にセットしてステップ505に戻るので引き続
き、圧縮符号化が行われる。
期値0にセットしてステップ505に戻るので引き続
き、圧縮符号化が行われる。
【0058】サンプルデータを全部圧縮し終ると、ステ
ップ505の判定が「y」となり、ステップ517に移
行する。ステップ517ではデータ終了コード401を
ファイル入出力バッファ102に出力し、ステップ51
9でファイル入出力バッファ102の内容をファイル1
04に書き出す。これで最終の1ブロック分の圧縮デー
タがファイル104に出力される。サンプルデータの場
合、図1(a)に示すようにブロックサイズで区切った
末尾にブロック終了コードが、データ末尾にデータ終了
コードが置かれる。
ップ505の判定が「y」となり、ステップ517に移
行する。ステップ517ではデータ終了コード401を
ファイル入出力バッファ102に出力し、ステップ51
9でファイル入出力バッファ102の内容をファイル1
04に書き出す。これで最終の1ブロック分の圧縮デー
タがファイル104に出力される。サンプルデータの場
合、図1(a)に示すようにブロックサイズで区切った
末尾にブロック終了コードが、データ末尾にデータ終了
コードが置かれる。
【0059】次に、このようにして生成したサンプルデ
ータの圧縮データ(サンプル圧縮データと表記)ファイ
ルを伸長処理プログラム101cで伸長した場合の処理
を図1と図6を用いて説明する。
ータの圧縮データ(サンプル圧縮データと表記)ファイ
ルを伸長処理プログラム101cで伸長した場合の処理
を図1と図6を用いて説明する。
【0060】サンプル圧縮データファイルを伸長処理プ
ログラム101cで伸長すると、まず、ステップ601
でブロックデータ取得処理610を呼出し、圧縮データ
の最初の1ブロック分をファイル入出力バッファ102
に読み込む。この状態を示したのが図1(b)である。
次いで伸長処理プログラム101cはステップ603で
ブロックデータ伸長処理620を呼出す。
ログラム101cで伸長すると、まず、ステップ601
でブロックデータ取得処理610を呼出し、圧縮データ
の最初の1ブロック分をファイル入出力バッファ102
に読み込む。この状態を示したのが図1(b)である。
次いで伸長処理プログラム101cはステップ603で
ブロックデータ伸長処理620を呼出す。
【0061】ブロックデータ伸長処理620は、ステッ
プ622でファイル入出力バッファ102から1圧縮符
号を取り出す。
プ622でファイル入出力バッファ102から1圧縮符
号を取り出す。
【0062】具体的には、まず1ビットの識別子を取得
し、それが「履歴参照」識別子であればそれに続く16
ビットを履歴参照インデックス、あるいは制御コードと
して取得する。取得した識別子が「非参照」識別子であ
れば、それに続く1バイト分(8ビット)を非参照コー
ドとして取得する。
し、それが「履歴参照」識別子であればそれに続く16
ビットを履歴参照インデックス、あるいは制御コードと
して取得する。取得した識別子が「非参照」識別子であ
れば、それに続く1バイト分(8ビット)を非参照コー
ドとして取得する。
【0063】そして、ステップ624でその符号が制御
コードかどうかを判定する。ブロック最後以外は制御コ
ード以外の符号であるので、ステップ626に進み、L
Zスライド辞書方式によりデコード処理が行われ、ステ
ップ628でその結果を目的の格納位置に転送する。そ
してステップ622に戻り、ステップ622からステッ
プ628の処理が繰り返し行われる。
コードかどうかを判定する。ブロック最後以外は制御コ
ード以外の符号であるので、ステップ626に進み、L
Zスライド辞書方式によりデコード処理が行われ、ステ
ップ628でその結果を目的の格納位置に転送する。そ
してステップ622に戻り、ステップ622からステッ
プ628の処理が繰り返し行われる。
【0064】ファイル入出力バッファ102の末尾には
図1(b)で示したようにブロック終了コード403が
置かれているので、ファイル入出力バッファ102の末
尾の符号をステップ622で取得すると、ステップ62
4の判定は「y」となる。従ってステップ630に移行
する。ステップ630では符号の種別を判定する。当該
符号はブロック終了コード403であるので、ステップ
632に進み、伸長処理プログラム101cにリターン
コードとして「ブロック終了」を返し、処理を終了す
る。
図1(b)で示したようにブロック終了コード403が
置かれているので、ファイル入出力バッファ102の末
尾の符号をステップ622で取得すると、ステップ62
4の判定は「y」となる。従ってステップ630に移行
する。ステップ630では符号の種別を判定する。当該
符号はブロック終了コード403であるので、ステップ
632に進み、伸長処理プログラム101cにリターン
コードとして「ブロック終了」を返し、処理を終了す
る。
【0065】こうして、図1(b)に示した圧縮データ
に対応した伸長データが生成され、目的の格納位置に転
送される。
に対応した伸長データが生成され、目的の格納位置に転
送される。
【0066】ブロックデータ伸長処理620が終了する
と、伸長処理プログラム101cはそのリターンコード
を判定する。上述のようにブロックデータ伸長処理62
0は「ブロック終了」を返すので、ステップ601に戻
る。
と、伸長処理プログラム101cはそのリターンコード
を判定する。上述のようにブロックデータ伸長処理62
0は「ブロック終了」を返すので、ステップ601に戻
る。
【0067】ステップ601ではブロックデータ取得処
理610を呼出し、次のサンプル圧縮データ1ブロック
分をファイル入出力バッファ102に読み込む。この結
果、ファイル入出力バッファ102の内容は図1(c)
に示すようになる。
理610を呼出し、次のサンプル圧縮データ1ブロック
分をファイル入出力バッファ102に読み込む。この結
果、ファイル入出力バッファ102の内容は図1(c)
に示すようになる。
【0068】続いて、ステップ603ではブロックデー
タ伸長処理620を呼出し、データを伸長して目的の格
納位置に転送する。ここで、データの構成は図1(b)
と同様に末尾にブロック終了コード403が置かれてい
るので、ブロックデータ伸長処理620はファイル入出
力バッファ102末尾までデコードした後、伸長処理プ
ログラム101cにリターンコードとして「ブロック終
了」を返し、処理を終了する。
タ伸長処理620を呼出し、データを伸長して目的の格
納位置に転送する。ここで、データの構成は図1(b)
と同様に末尾にブロック終了コード403が置かれてい
るので、ブロックデータ伸長処理620はファイル入出
力バッファ102末尾までデコードした後、伸長処理プ
ログラム101cにリターンコードとして「ブロック終
了」を返し、処理を終了する。
【0069】伸長処理プログラム101cはそのリター
ンコードを判定し、先程と同様にステップ601に戻
る。
ンコードを判定し、先程と同様にステップ601に戻
る。
【0070】ステップ601ではブロックデータ取得処
理610を呼出し、次のサンプル圧縮データ1ブロック
分をファイル入出力バッファ102に読み込む。この結
果、ファイル入出力バッファ102の内容は図1(d)
に示すようになる。
理610を呼出し、次のサンプル圧縮データ1ブロック
分をファイル入出力バッファ102に読み込む。この結
果、ファイル入出力バッファ102の内容は図1(d)
に示すようになる。
【0071】続いて、ステップ603ではブロックデー
タ伸長処理620を呼出し、データを伸長して目的の格
納位置に転送する。ここで、読み込んだブロックにサン
プル圧縮データ末尾があり、データ終了コード401が
置かれているので、ブロックデータ伸長処理620は該
データ末尾までデコードした後、伸長処理プログラム1
01cにリターンコードとして「データ終了」を返し、
処理を終了する。
タ伸長処理620を呼出し、データを伸長して目的の格
納位置に転送する。ここで、読み込んだブロックにサン
プル圧縮データ末尾があり、データ終了コード401が
置かれているので、ブロックデータ伸長処理620は該
データ末尾までデコードした後、伸長処理プログラム1
01cにリターンコードとして「データ終了」を返し、
処理を終了する。
【0072】伸長処理プログラム101cはそのリター
ンコードを判定し、「データ終了」であるため、伸長処
理プログラム101cを終了する。
ンコードを判定し、「データ終了」であるため、伸長処
理プログラム101cを終了する。
【0073】以上のような流れにより、ブロック単位で
の読み込みと伸長処理が繰り返され、圧縮データが伸長
されて目的の格納位置に転送される。
の読み込みと伸長処理が繰り返され、圧縮データが伸長
されて目的の格納位置に転送される。
【0074】本実施例では、ブロックデータ取得処理に
よるファイルからのデータの取得はファイルを管理する
ブロック単位としている。通常ブロックサイズは1回の
入出力動作でアクセスできるデータサイズを基に決めら
れるので、このサイズでの入出力が高速に行えることは
いうまでもない。
よるファイルからのデータの取得はファイルを管理する
ブロック単位としている。通常ブロックサイズは1回の
入出力動作でアクセスできるデータサイズを基に決めら
れるので、このサイズでの入出力が高速に行えることは
いうまでもない。
【0075】また、メモリに余裕が有り入出力バッファ
サイズを任意に設定できる場合や、反対にメモリサイズ
に制約がある場合には、ブロックサイズに限定する必要
もなく、自由に設定すれば良い。たとえブロックサイズ
を256バイトとしても、1符号取得ごとに入出力処理
を呼び出すのに比べると大幅に処理呼出しの回数を減ら
すことができる。
サイズを任意に設定できる場合や、反対にメモリサイズ
に制約がある場合には、ブロックサイズに限定する必要
もなく、自由に設定すれば良い。たとえブロックサイズ
を256バイトとしても、1符号取得ごとに入出力処理
を呼び出すのに比べると大幅に処理呼出しの回数を減ら
すことができる。
【0076】さらに、ファイルを管理するブロックのサ
イズが異なる複数のファイル装置に対しては、それぞれ
に最適なブロックサイズを定め、それに基づいて圧縮処
理を行うことができる。図6を見れば明らかなように、
伸長処理そのものはブロックサイズの影響を受けないの
で、ブロックサイズの異なる圧縮データに対して伸長処
理は1つだけ用意すれば良い。
イズが異なる複数のファイル装置に対しては、それぞれ
に最適なブロックサイズを定め、それに基づいて圧縮処
理を行うことができる。図6を見れば明らかなように、
伸長処理そのものはブロックサイズの影響を受けないの
で、ブロックサイズの異なる圧縮データに対して伸長処
理は1つだけ用意すれば良い。
【0077】
【発明の効果】本発明の符号化、復号化方式によれば、
圧縮データを特定のサイズのブロック単位で入力し、デ
ータの復号化処理を行うので、1符号づつ入力して処理
する場合と比べて、入出力処理呼出しにかかるオーバー
ヘッドを削減できる。また、ブロックサイズの判定を圧
縮時に行い、その境界を示す符号を圧縮データ内に埋め
込んでいるため、伸長処理時には読み込みサイズを判定
する処理が不要となり、従来に比べて復号化処理時間も
遅くならない。伸長処理時間は入出力処理とデータの復
号化処理それぞれに要する時間の合計であるので、結果
的に伸長処理時間は短縮されることになる。
圧縮データを特定のサイズのブロック単位で入力し、デ
ータの復号化処理を行うので、1符号づつ入力して処理
する場合と比べて、入出力処理呼出しにかかるオーバー
ヘッドを削減できる。また、ブロックサイズの判定を圧
縮時に行い、その境界を示す符号を圧縮データ内に埋め
込んでいるため、伸長処理時には読み込みサイズを判定
する処理が不要となり、従来に比べて復号化処理時間も
遅くならない。伸長処理時間は入出力処理とデータの復
号化処理それぞれに要する時間の合計であるので、結果
的に伸長処理時間は短縮されることになる。
【0078】例えば、平均符号長2バイトで、符号数が
10k語のデータを1符号取得ごとに入出力処理を呼び
出して伸長する場合と、1kBの入出力バッファを用意
して本発明の符号化、復号化方式で伸長する場合で比べ
ると、 従来方式での入出力呼出し数 :10k回 本発明の方式での入出力呼出し数:20回 となる。LZスライド辞書方式等、復号化処理の単純な
圧縮方式では、相対的に入出力処理時間の割合が大きく
なっている。従って、入出力処理呼出し回数が削減出来
る本発明を実施することにより、伸長時間の大幅な短縮
が図られる。
10k語のデータを1符号取得ごとに入出力処理を呼び
出して伸長する場合と、1kBの入出力バッファを用意
して本発明の符号化、復号化方式で伸長する場合で比べ
ると、 従来方式での入出力呼出し数 :10k回 本発明の方式での入出力呼出し数:20回 となる。LZスライド辞書方式等、復号化処理の単純な
圧縮方式では、相対的に入出力処理時間の割合が大きく
なっている。従って、入出力処理呼出し回数が削減出来
る本発明を実施することにより、伸長時間の大幅な短縮
が図られる。
【0079】なお、本発明はシーケンシャルに符号化、
復号化を行う一般的な符号化、復号化方式に適用可能で
あることは言うまでもない。
復号化を行う一般的な符号化、復号化方式に適用可能で
あることは言うまでもない。
【0080】また、上記の例では、1kBの入出力バッ
ファを用意するとして説明したが、このようなバッファ
は、ブロック単位で入出力を行う場合に基本的に必要と
されるものであり、すでに用意されているバッファを流
用すれば、新たにメモリを用意する必要はない。
ファを用意するとして説明したが、このようなバッファ
は、ブロック単位で入出力を行う場合に基本的に必要と
されるものであり、すでに用意されているバッファを流
用すれば、新たにメモリを用意する必要はない。
【0081】本発明の符号化、復号化方式では、プログ
ラムや画面データのように、伸長回数が多く、オンデマ
ンド高速に伸長処理を行いたい用途に好適である。
ラムや画面データのように、伸長回数が多く、オンデマ
ンド高速に伸長処理を行いたい用途に好適である。
【図1】本発明の符号化、復号化方式の1実施例におけ
る、生成した符号のファイル上の配置、並びに復号のた
めの読み込みデータの構成の説明図である。
る、生成した符号のファイル上の配置、並びに復号のた
めの読み込みデータの構成の説明図である。
【図2】従来の符号化、復号化方式での復号処理の流れ
の説明図である。
の説明図である。
【図3】本発明の1実施例の情報処理装置の構成図であ
る。
る。
【図4】本発明の1実施例の情報処理装置の圧縮処理で
生成される符号の説明図である。
生成される符号の説明図である。
【図5】本発明の1実施例の情報処理装置の圧縮処理の
流れの説明図である。
流れの説明図である。
【図6】本発明の1実施例の情報処理装置の伸長処理の
流れの説明図である。
流れの説明図である。
101b…圧縮処理プログラム、 101c…伸長処理プログラム、 101d…ファイル入出力プログラム、 102…ファイル入出力バッファ、 103…ワークメモリ。
Claims (5)
- 【請求項1】シーケンシャルに入力されたデータを符号
化し、符号化データを生成する符号化方式と、該符号化
方式で符号化した符号をシーケンシャルに入力し、元の
データに復号する復号化方式において、 符号化方式は、該データのサイズがあらかじめ定められ
たブロックサイズの整数倍に達する直前には、符号化デ
ータに入力データの符号化によって生成される符号とは
異なる制御符号を挿入し、 復号化方式は、該制御符号を入力されると復号化を止め
ることを特徴とする符号化、復号化方式。 - 【請求項2】データを定められたブロックサイズ単位で
読み書き可能な記憶手段と、 シーケンシャルに入力されたデータを符号化し、符号化
データを生成して該記憶手段に出力するとともに、該デ
ータのサイズが該ブロックサイズの整数倍に達する直前
に、入力データの符号化によって生成される符号とは異
なる制御符号を挿入する符号化手段と、 該ブロックサイズのバッファメモリと、 該バッファメモリとは独立にデータを記憶する作業用メ
モリと、 該記憶手段上のデータをブロックサイズ単位で該バッフ
ァメモリ上に読み出すブロックデータ読み出し手段と、 該バッファメモリ上の圧縮データをシーケンシャルに読
み出し、元のデータに復号して該作業用メモリに転送す
ると共に、該制御符号を読み出すと処理を中断するブロ
ックデータ復号手段と、 該ブロックデータ読み出し手段を呼び出して、該符号化
データを該バッファメモリ上に読み出し、その後、該ブ
ロックデータ復号手段を呼び出して該作業用メモリ上に
復号すると共に、上記手段を該符号化データ全てを該作
業用メモリ上に復号するまで繰り返し呼び出す復号化手
段とを有することを特徴とする情報処理装置。 - 【請求項3】請求項2の情報処理装置において、符号化
手段が挿入する制御符号は、15ビットの0と、それに
引き続く1ビットの1であることを特徴とする情報処理
装置。 - 【請求項4】請求項2の情報処理装置は、第1のブロッ
クサイズ単位で読み書き可能な第1の記憶手段と、これ
と異なる第2のブロックサイズ単位で読み書き可能な第
2の記憶手段を有し、 符号化手段は、第1の記憶手段に出力する場合には、圧
縮データサイズが第1のブロックサイズの整数倍に達す
る直前に制御符号を挿入し、第2の記憶手段に出力する
場合には、圧縮データサイズが第2のブロックサイズの
整数倍に達する直前に制御符号を挿入することを特徴と
する情報処理装置。 - 【請求項5】圧縮符号化され、記憶手段に記憶されたシ
ーケンシャルデータを復号化する方式であって、該方式
はシーケンシャルデータをあらかじめ定められたブロッ
ク長で分割してRAMに読み込み、読み込んだ部分デー
タ列単位で復号化することを特徴とする圧縮符号の復号
化方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6221361A JPH0887398A (ja) | 1994-09-16 | 1994-09-16 | 符号化、復号化方式及び情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6221361A JPH0887398A (ja) | 1994-09-16 | 1994-09-16 | 符号化、復号化方式及び情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0887398A true JPH0887398A (ja) | 1996-04-02 |
Family
ID=16765593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6221361A Pending JPH0887398A (ja) | 1994-09-16 | 1994-09-16 | 符号化、復号化方式及び情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0887398A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08314689A (ja) * | 1995-05-12 | 1996-11-29 | Fujitsu Ltd | 圧縮データ管理方式 |
-
1994
- 1994-09-16 JP JP6221361A patent/JPH0887398A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08314689A (ja) * | 1995-05-12 | 1996-11-29 | Fujitsu Ltd | 圧縮データ管理方式 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6624762B1 (en) | Hardware-based, LZW data compression co-processor | |
US5870036A (en) | Adaptive multiple dictionary data compression | |
EP0129439B1 (en) | High speed data compression and decompression apparatus and method | |
EP0534713B1 (en) | Dictionary reset performance enhancement for data compression applications | |
KR100894002B1 (ko) | 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법 | |
JP2534465B2 (ja) | デ―タ圧縮装置および方法 | |
US20090060047A1 (en) | Data compression using an arbitrary-sized dictionary | |
US5673042A (en) | Method of and an apparatus for compressing/decompressing data | |
JPH0876969A (ja) | 圧縮済みデータを不連続メモリに記憶するデータ圧伸方法 | |
KR100536980B1 (ko) | 데이터 압축 방법, 데이터 압축해제 방법 및 데이터 압축 장치 | |
US6304676B1 (en) | Apparatus and method for successively refined competitive compression with redundant decompression | |
US20090210437A1 (en) | System, method, and computer program product for saving and restoring a compression/decompression state | |
US5010344A (en) | Method of decoding compressed data | |
JPH04267630A (ja) | データ圧縮装置及びデータ復元装置 | |
KR20200121760A (ko) | 인코딩된 데이터에 대한 조건부 트랜스코딩 | |
JPH0887398A (ja) | 符号化、復号化方式及び情報処理装置 | |
JPH10341166A (ja) | データ量に適応するデータ圧縮方法 | |
JP3242795B2 (ja) | データ処理装置及びデータ処理方法 | |
CN1656688B (zh) | 在压缩之前处理数字数据 | |
JPH01314430A (ja) | 可変ビット長コード語のビット長通信方法 | |
US5745603A (en) | Two dimensional context model obtained without a line buffer for arithmetic coding | |
Kato et al. | Performance Enhancement of Stream-Based Decompression Process by Notifying Compression Buffer Size | |
WO2024149300A1 (zh) | 压缩数据的方法、解压数据的方法、装置、系统及介质 | |
JP3202488B2 (ja) | データ符号化及び復号化方式 | |
JPH0628150A (ja) | プログラム容量圧縮方法 |