(57)【特許請求の範囲】
【請求項１】
入力されるデータ列を解析するデータ列解析手段、
前記データ列解析手段によって生成されたデータが辞書に登録されているか否かを調べ、前記生成されたデータが前記辞書に未登録である場合、前記辞書に辞書登録する辞書作成・検索手段、
前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、
前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る場合、前記辞書作成・検索手段に前記辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段を有するデータ圧縮手段と、
前記データ圧縮手段から出力されたデータをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、
前記圧縮率観測手段が前記辞書作成・検索手段に前記辞書の初期化を指示すると、前記初期化を指示した時点から前記辞書の初期化が終了するまでの期間中のみ、前記データ圧縮手段に入力されるデータ列が前記データ記録手段に転送される、データ圧縮記録装置。
【請求項２】
前記データ圧縮記録装置は、前記辞書が記憶される領域とフラグ情報が記憶される領域を有するＲＡＭをさらに備え、
前記辞書が記憶される領域が、前記フラグ情報が記憶される領域と異なり、
前記辞書が記憶される領域には、アドレスに対応してエントリが格納され、
前記フラグ情報が記憶される領域には、前記アドレスに従い、前記辞書にエントリが登録されたか／未登録であるかを示すフラグ情報が、テーブル化して割り付けられている請求項１に記載のデータ圧縮記録装置。
【請求項３】
入力されるデータ列を解析するデータ列解析手段、
前記データ列解析手段によって生成されたデータが辞書に登録されているか否かを調べ、前記生成されたデータが前記辞書に未登録である場合、前記辞書に辞書登録する辞書作成・検索手段、
前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、
前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る場合、前記辞書作成・検索手段に前記辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段を有するデータ圧縮手段と、
前記データ圧縮手段から出力されたデータをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、
前記データ圧縮手段が、前記データ記録手段における機械的動作変更による一時的記録中断状態を検出する機械的記録中断検出手段、および
外部からの辞書初期化禁止信号に従い、前記圧縮率観測手段によって生成された前記辞書初期化信号を無効にし、前記一時的記録中断状態において前記機械的記録中断検出手段が生成する機械的記録中断を示す信号を受信することで前記辞書初期化信号を有効にする初期化マスク手段を有するデータ圧縮記録装置。
【請求項４】
前記データ圧縮記録装置が、
前記データ圧縮手段の前段に配置され、前記入力されるデータ列を蓄積するバッファメモリと、
前記バッファメモリに蓄積されたデータを前記データ圧縮手段に入力し、前記バッファメモリ内のデータ蓄積量が、前記辞書を初期化するのに必要な時間内に前記データ圧縮手段が非圧縮で出力するデータ量を上回ることを示すマスク解除信号を出力するバッファ管理手段と、
外部からの辞書初期化禁止信号に従い、前記圧縮率観測手段が発行する辞書初期化信号を無効にし、前記バッファ管理手段が出力する前記マスク解除信号を受信することで、前記辞書初期化信号を有効にする初期化マスク手段とを備えた請求項１に記載のデータ圧縮記録装置。
【請求項５】
入力されるデータ列を解析するデータ列解析手段、
前記データ列解析手段によって生成されたデータが辞書に登録されているか否かを調べ、前記生成されたデータが前記辞書に未登録である場合、前記辞書に辞書登録する辞書作成・検索手段、
前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、
前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る場合、前記辞書作成・検索手段に前記辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段を有するデータ圧縮手段と、
前記データ圧縮手段から出力されたデータをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、
前記データ圧縮記録装置が、前記データ圧縮手段の後段に配置され、前記データ圧縮手段にて圧縮された圧縮データを蓄積するバッファメモリと、
前記蓄積圧縮データが前記データ記録手段に送られ、前記バッファメモリに蓄積される前記圧縮データの量が、前記辞書を初期化するために必要な時間内に、前記データ圧縮手段が出力する圧縮データの量を上回ることを示すマスク解除信号を出力するバッファ管理手段と、
外部からの辞書初期化禁止信号に従い、前記圧縮率観測手段が発行する辞書初期化信号を無効にし、前記バッファ管理手段が発行する前記マスク解除信号を受信することで、前記辞書初期化信号を有効にする初期化マスク手段とを備えたデータ圧縮記録装置。
【請求項６】
入力されるデータ列を解析するデータ列解析手段、
前記データ列解析手段によって生成されたデータが辞書に登録されているか否かを調べ、前記生成されたデータが前記辞書に未登録である場合、前記辞書に辞書登録する辞書作成・検索手段、
前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、
前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る場合、前記辞書作成・検索手段に前記辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段を有するデータ圧縮手段と、
前記データ圧縮手段から出力されたデータをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、
前記データ圧縮手段が、前記データ圧縮手段から出力される圧縮データの転送速度が、前記データ記録手段がデータをメディアに書き込む速度を下回る時点を指示する予測信号を生成するアンダーフロー予測手段と、
前記アンダーフロー予測手段が出力する予測信号に従って、データ圧縮率を変化させる圧縮率変更手段とを有するデータ圧縮記録装置。
【請求項７】
前記アンダーフロー予測手段が、外部から入力される時間情報および基底圧縮率に従い、予測信号を生成する請求項６に記載のデータ圧縮記録装置。
【請求項８】
前記データ圧縮記録装置が、前記データ圧縮手段の前段に配置され、前記入力されるデータ列を蓄積するバッファメモリを備え、
前記アンダーフロー予測手段が、前記蓄積されたデータを前記データ圧縮手段に入力し、外部から指定入力される基底データ蓄積量に対する前記バッファメモリ内のデータ蓄積量の倍率を前記圧縮率変更手段に出力する、請求項６に記載のデータ圧縮記録装置。
【請求項９】
前記データ圧縮手段が、可変するデータ圧縮率を受け取り、辞書登録・検索対象となるデータ列の長さの上限値を出力とする変換手段を備え、
前記辞書作成・検索手段が、辞書登録・検索されるデータ列が前記上限値の長さ以下に収まるように辞書を作成する、請求項６に記載のデータ圧縮記録装置。
【請求項１０】
入力されるデータ列を解析するデータ列解析手段、
前記データ列解析手段によって生成されるデータ列が辞書に登録されているか否かを調べ、未登録の場合に前記辞書に辞書登録する辞書作成・検索手段、
前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、
前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る時点を検出し、前記辞書作成・検出手段に辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段とを有するデータ圧縮手段と、
外部からの入力データを前記データ圧縮手段によって圧縮した前記圧縮データをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、
前記データ圧縮記録装置が、前記辞書の検索開始から前記辞書の検索終了までの時間を計測し、計測時間情報を生成する時間計測手段を備え、
前記辞書作成・検索手段が、外部から入力された時間情報が、前記時間計測手段の計測時間情報を下回った時点で、辞書登録または検索を行う処理を強制的に中止し、前記強制中止直前に確定した圧縮コードを圧縮コード生成部に出力する、データ圧縮記録装置。
【請求項１１】
前記データ圧縮手段に入力されるデータ列を前記データ記録手段に転送する前に、
前記データ記憶手段に転送データが非圧縮データであることを示す第１の制御コードを前記データ記録手段に転送し、かつ、前記データ圧縮手段に入力されるデータ列を前記データ記録手段に転送し、
前記データ列の転送が終了したことを示す第２の制御コードを前記データ列の転送終了後に前記データ記録手段に転送する圧縮コード生成部を有することを特徴とする請求項１または４に記載のデータ圧縮記録装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ圧縮記録技術の分野に属する。
【０００２】
【従来の技術】
一般に、従来のデータ圧縮記録装置として、入力されるデータを圧縮し、圧縮されたデータをメディア（記録媒体など）に記録する装置テープ、光ディスク、フロッピーディスク等が知られている。
【０００３】
従来のデータ圧縮技術として、米国特許ＵＳ４５５８３０２号、米国特許ＵＳ４８４７６１９号、米国特許ＵＳ４８７０４１５号、および、ヨーロッパ規格であるＥＣＭＡ−１５１規格書などに記載されたものが知られている。
【０００４】
米国特許ＵＳ４５５８３０２号は、ＬＺ７８、ＬＺＷ型データ圧縮／伸長システムを開示している。米国特許ＵＳ４８４７６１９号は、圧縮率を観測し閾値以下で辞書をリセットすることを開示している。米国特許ＵＳ４８７０４１５号は、圧縮率を観測して効率良くデータ圧縮する方法を開示している。ＥＣＭＡ−１５１規格書は、辞書ベース適応データ圧縮ＤＣＬＺアルゴリズムを開示している。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記従来のデータ圧縮記録装置は、データ圧縮処理部が生成する圧縮データの平均出力速度がメディア（記録媒体など）にデータを記録するドライブ記録速度を下回った場合、アンダーフロー状態になり、たとえばテープバックアップ装置の場合、記録すべきデータが足りなくなるためテープを一旦停止し数トラック分巻き戻し、記録すべきデータが準備された時点で再び磁気記録を開始することになり、結果的にアンダーフローによって前記機械的動作が頻繁に発生する。このため連続的にデータを記録することができなくなり、平均記録速度が低下し記録時間が増大するという問題が発生する。
【０００６】
また、特に接触記録媒体テープ、ハードディスク、フロッピー等の場合、上記機械的動作が頻繁に発生すると、媒体の早期劣化のみならず記録ヘッド、ドライブモータの寿命を縮める、という問題も発生する。
【０００７】
データ圧縮記録装置の上記アンダーフロー状態を引き起こす原因は、データ圧縮記録装置の記録速度、データ圧縮手段の圧縮率、および、辞書検索速度にある。ホストコンピュータの進歩とともにデータ転送速度は急速に向上しており、これに応じてデータ圧縮記録装置の記録速度を向上させる必要が生じ、データ圧縮手段が出力する圧縮データの出力速度も常に記録速度以上である必要がある。
【０００８】
しかしながら、入力データストリームから辞書を作成／参照するデータ圧縮手段では、圧縮処理中に圧縮率低下に起因して辞書を初期化いわゆる辞書リセットする場合のデータ圧縮処理中断による一時的なデータ圧縮手段の出力中断、入力データストリームの性格によって一時的に圧縮率が非常に高まる場合のデータ圧縮手段の出力速度の急激な低下、辞書の登録量が増加するにつれて同一データ列が辞書内に登録されているかを検索する際の検索時間増加によるデータ圧縮手段の出力速度低下、などの状況に陥ると前記アンダーフロー状態となる。
【０００９】
本発明は、上記問題点に鑑み、入力データストリームの性格、データ圧縮手段特有の性質／処理、データ書き込み速度の向上、などによる影響を受けず、機械的動作の中断なく常にストリーミングするデータ圧縮記録装置を実現することを目的とする。
【００１０】
【課題を解決するための手段】
本発明のデータ圧縮記録装置は、入力されるデータ列を解析するデータ列解析手段、前記データ列解析手段によって生成されたデータが辞書に登録されているか否かを調べ、前記生成されたデータが前記辞書に未登録である場合、前記辞書に辞書登録する辞書作成・検索手段、前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る場合、前記辞書作成・検索手段に前記辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段を有するデータ圧縮手段と、前記データ圧縮手段から出力されたデータをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、前記圧縮率観測手段が前記辞書作成・検索手段に前記辞書の初期化を指示すると、前記初期化を指示した時点から前記辞書の初期化が終了するまでの期間中のみ、前記データ圧縮手段に入力されるデータ列が前記データ記録手段に転送され、そのことにより上記目的が達成される。
【００１１】
このため、本発明のデータ圧縮記録装置は、従来のデータ圧縮記録装置に比べて、データ圧縮処理中の辞書リセット処理期間中でも、データ圧縮処理部の出力が途切れることなく維持でき、アンダーフロー状態の回避が容易である。
【００１４】
本発明のデータ圧縮記録装置において、前記データ圧縮記録装置は、前記辞書が記憶される領域とフラグ情報が記憶される領域を有するＲＡＭをさらに備え、前記辞書が記憶される領域が、前記フラグ情報が記憶される領域と異なり、前記辞書が記憶される領域には、アドレスに対応してエントリが格納され、前記フラグ情報が記憶される領域には、前記アドレスに従い、前記辞書にエントリが登録されたか／未登録であるかを示すフラグ情報が、テーブル化して割り付けられてもよい。
【００１５】
上記本発明のデータ圧縮記録装置は、従来のデータ圧縮記録装置に比べて、データ圧縮処理中の辞書リセット処理にかかる時間を大幅に短縮できるため、データ圧縮部が非圧縮データを出力する時間が短くてすみ、圧縮率の低下を防ぎながらアンダーフロー状態の回避が可能になる。たとえば、あるデータ圧縮記録装置において、システムクロックを４０ＭＨｚ、辞書部１１０５のエントリ数Ｍ個を４０９６個、ＳＲＡＭへの書き込み時間を５０ｎｓとすると、辞書リセット処理に約２０４μｓかかる。本発明の別のデータ圧縮記録装置では、約１２μｓで辞書リセット処理が終了する。
【００１６】
本発明の別のデータ圧縮記録装置は、入力されるデータ列を解析するデータ列解析手段、前記データ列解析手段によって生成されたデータが辞書に登録されているか否かを調べ、前記生成されたデータが前記辞書に未登録である場合、前記辞書に辞書登録する辞書作成・検索手段、前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る場合、前記辞書作成・検索手段に前記辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段を有するデータ圧縮手段と、前記データ圧縮手段から出力されたデータをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、前記データ圧縮手段が、前記データ記録手段における機械的動作変更による一時的記録中断状態を検出する機械的記録中断検出手段、および外部からの辞書初期化禁止信号に従い、前記圧縮率観測手段によって生成された前記辞書初期化信号を無効にし、前記一時的記録中断状態において前記機械的記録中断検出手段が生成する機械的記録中断を示す信号を受信することで前記辞書初期化信号を有効にする初期化マスク手段を有し、そのことにより上記目的が達成される。
【００１７】
本発明の別のデータ圧縮記録装置では、光ディスク、フロッピーディスク、ハードディスク等のドライブにおけるピックアップや磁気ヘッドのシーク動作中、もしくは、ランダムアクセス型テープドライブのトラック移動中などの一時的なデータ記録中断期間に辞書リセット処理を行なうことが可能になる。
【００１８】
ここで、機械的動作変更とは、データ記録動作状態からその他の動作状態への変更による記録系メカニズムの各部位の動作をいう。
【００１９】
また、一時的記録中断状態とは、ある要因により、メディア（記録媒体）へのデータ記録が一時的に不可能になる状態をいう。
【００２０】
本発明のデータ圧縮記録装置において、前記データ圧縮記録装置が、前記データ圧縮手段の前段に配置され、前記入力されるデータ列を蓄積するバッファメモリと、前記バッファメモリに蓄積されたデータを前記データ圧縮手段に入力し、前記バッファメモリ内のデータ蓄積量が、前記辞書を初期化するのに必要な時間内に前記データ圧縮手段が出力するとデータ量を上回ることを示すマスク解除信号を出力するバッファ管理手段と、外部からの辞書初期化禁止信号に従い、前記圧縮率観測手段が発行する辞書初期化信号を無効にし、前記バッファ管理手段が出力する前記マスク解除信号を受信することで、前記辞書初期化信号を有効にする初期化マスク手段とを備えてもよい。
【００２１】
上記本発明のデータ圧縮記録装置では、従来のデータ圧縮記録装置に比べて、辞書リセットが発生してから比較的早い段階で、辞書リセット処理が行なえ、その辞書リセット処理中にデータ圧縮部が出力する非圧縮データ量が確実に確保される。このため、上記本発明のデータ圧縮記録装置は、従来の辞書リセット処理によるアンダーフロー状態を確実に回避可能となる。
【００２２】
本発明のさらに他のデータ圧縮記録装置は、入力されるデータ列を解析するデータ列解析手段、前記データ列解析手段によって生成されたデータが辞書に登録されているか否かを調べ、前記生成されたデータが前記辞書に未登録である場合、前記辞書に辞書登録する辞書作成・検索手段、前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る場合、前記辞書作成・検索手段に前記辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段を有するデータ圧縮手段と、前記データ圧縮手段から出力されたデータをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、前記データ圧縮記録装置が、前記データ圧縮手段の後段に配置され、前記データ圧縮手段にて圧縮された圧縮データを蓄積するバッファメモリと、前記蓄積圧縮データが前記データ記録手段に送られ、前記バッファメモリに蓄積される前記圧縮データの量が、前記辞書を初期化するために必要な時間内に、前記データ圧縮手段が出力する圧縮データの量を上回ることを示すマスク解除信号を出力するバッファ管理手段と、外部からの辞書初期化禁止信号に従い、前記圧縮率観測手段が発行する辞書初期化信号を無効にし、前記バッファ管理手段が発行する前記マスク解除信号を受信することで、前記辞書初期化信号を有効にする初期化マスク手段とを備え、そのことにより上記目的が達成される。
【００２３】
本発明のさらに他のデータ圧縮記録装置は、従来のデータ圧縮記録装置に比べて、データ圧縮部自身の処理によって発生するアンダーフロー状態を回避することが容易になる。
【００２４】
本発明のさらに他のデータ圧縮記録装置は、入力されるデータ列を解析するデータ列解析手段、前記データ列解析手段によって生成されたデータが辞書に登録されているか否かを調べ、前記生成されたデータが前記辞書に未登録である場合、前記辞書に辞書登録する辞書作成・検索手段、前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る場合、前記辞書作成・検索手段に前記辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段を有するデータ圧縮手段と、前記データ圧縮手段から出力されたデータをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、前記データ圧縮手段が、前記データ圧縮手段から出力される圧縮データの転送速度が、前記データ記録手段がデータをメディアに書き込む速度を下回る時点を指示する予測信号を生成するアンダーフロー予測手段と、前記アンダーフロー予測手段が出力する予測信号に従って、データ圧縮率を変化させる圧縮率変更手段とを有し、そのことにより上記目的が達成される。
【００２５】
本発明のさらに別のデータ圧縮記録装置は、従来のデータ圧縮記録装置に比べて、辞書リセットが発生してから比較的早い段階で辞書リセット処理が行なえ、その辞書リセット処理中にデータ圧縮部が出力する圧縮データ量が確実に確保される。このため、本発明のさらに別のデータ圧縮記録装置は、従来の辞書リセット処理によるアンダーフロー状態を確実に回避可能、常に圧縮データを記録媒体に記録可能である。また、本発明のさらに別のデータ圧縮記録装置は、サイズの小さいバッファメモリを有効に利用することができる。
【００２６】
本発明のさらに別のデータ圧縮記録装置において、前記アンダーフロー予測手段が、外部から入力される時間情報および基底圧縮率に従い、予測信号を生成してもよい。
【００２７】
本発明のさらに別のデータ圧縮記録装置は、従来のデータ圧縮記録装置に比べて、データ圧縮部への入力データ列の状態に依存して発生する高圧縮率状態を検出し、意図的に圧縮率を下げるように制御することができる。本発明のさらに別のデータ圧縮記録装置は、前記高圧縮率状態により発生するアンダーフローを容易に回避できる。また、本発明のさらに別のデータ圧縮記録装置では、長期的期間で考えると、圧縮率をその基底圧縮率に収束できる。
【００２８】
本発明のさらに別のデータ圧縮記録装置において、前記データ圧縮記録装置が、前記データ圧縮手段の前段に配置され、前記入力されるデータ列を蓄積するバッファメモリを備え、前記アンダーフロー予測手段が、前記蓄積されたデータを前記データ圧縮手段に入力し、外部から指定入力される基底データ蓄積量に対する前記バッファメモリ内のデータ蓄積量の倍率を前記圧縮率変更手段に出力してもよい。
【００２９】
本発明のさらに別のデータ圧縮記録装置は、従来のデータ圧縮記録装置に比べて、アンダーフロー状態を予測して意図的にデータ圧縮処理における圧縮率を低下させることが可能である。このことにより、本発明のさらに別のデータ圧縮記録装置では、バッファ内のデータ量不足により発生するアンダーフロー状態を容易に回避できる。
【００３０】
本発明のさらに別のデータ圧縮記録装置において、前記データ圧縮記録装置が、前記データ圧縮手段の後段に配置され、前記データ圧縮手段から出力される圧縮データを蓄積するバッファメモリを備え、前記アンダーフロー予測手段が、前記蓄積されたデータを前記データ圧縮手段に入力し、外部から指定入力される基底データ蓄積量に対する前記バッファメモリ内のデータ蓄積量の倍率を前記圧縮率変更手段に出力してもよい。
【００３１】
本発明のさらに別のデータ圧縮記録装置は、従来のデータ圧縮記録装置に比べて、アンダーフロー状態を予測して意図的にデータ圧縮処理における圧縮率を低下させることが可能である。このことにより、本発明のさらに別のデータ圧縮記録装置では、バッファ内のデータ量不足により発生するアンダーフロー状態を容易に回避できる。
【００３４】
本発明の、さらに他のデータ圧縮記録装置は、入力されるデータ列を解析するデータ列解析手段、前記データ列解析手段によって生成されるデータ列が辞書に登録されているか否かを調べ、未登録の場合に前記辞書に辞書登録する辞書作成・検索手段、前記辞書作成・検索手段によって生成される圧縮コードを出力する圧縮コード生成部、および、前記入力されるデータ列のデータ量と前記圧縮コード生成部が出力する前記圧縮コードのデータ量との比率を示すデータ圧縮率を求め、該データ圧縮率が、外部から入力されたデータ圧縮率を下回る時点を検出し、前記辞書作成・検出手段に辞書の初期化を指示する辞書初期化信号を生成する圧縮率観測手段とを有するデータ圧縮手段と、外部からの入力データを前記データ圧縮手段によって圧縮した前記圧縮データをメディアに記録するデータ記録手段とを備えたデータ圧縮記録装置であって、前記データ圧縮記録装置が、前記辞書の検索開始から前記辞書の検索終了までの時間を計測し、計測時間情報を生成する時間計測手段を備え、前記辞書作成・検索手段が、外部から入力された時間情報が、前記時間計測手段の計測時間情報を下回った時点で、辞書登録または検索を行う処理を強制的に中止し、前記強制中止直前に確定した圧縮コードを圧縮コード生成部に出力し、そのことにより上記目的が達成される。
【００３５】
本発明の、さらに他のデータ圧縮記録装置は、辞書登録領域が少なくなるにつれて、辞書検索にかかる時間が長くなり、このために発生するアンダーフロー状態を容易に回避することができる。
【００３６】
【発明の実施の形態】
（実施形態１）
以下に、図面を用いて、本発明のデータ圧縮記録装置における第１の実施形態を説明する。
【００３７】
図１は、本発明のデータ圧縮記録装置における第１の実施形態を示す図である。
【００３８】
図１に示すデータ圧縮記録装置１１０１は、コントローラ部１１０３、データ圧縮部１１０４、辞書部１１０５、およびフォーマッタ部１１０６を備えている。
【００３９】
データ圧縮記録装置１１０１はホストコンピュータ１１０２と接続され、データ圧縮記録装置１１０１はホストコンピュータ１１０２と所定のプロトコルでデータのやりとりを行なう。データ圧縮記録装置１１０１では、データ圧縮部１１０４が、上記プロトコルを制御するコントローラ部１１０３を介してホストコンピュータ１１０２からのデータを受信する。受信されたデータは、通常、データ圧縮部１１０４にてデータ圧縮され、圧縮されたデータはフォーマッタ部１１０６において所定のデータ列にフォーマットされ、記録部１１０７に転送される。
【００４０】
記録部１１０７は、メディア（記録媒体など）に上記フォーマットされたデータ列を書き込む。データ圧縮記録装置１１０１では、上述した一連の処理が行なわれる。
【００４１】
辞書部１１０５には、データ圧縮部１１０４が作成した辞書の内容が格納される。なお、データ圧縮記録装置１１０１は記録部１１０７を有していてもよい。
【００４２】
以下に、データ圧縮部１１０４の構成を説明する。
【００４３】
データ圧縮部１１０４は、セレクタ１０１、データ列解析部１１０８、辞書作成・検索部１１０９、圧縮コード生成部１１１０、および圧縮率観測部１１１１を有してる。
【００４４】
データ列解析部１１０８は、コントローラ部１１０３から入力されるデータ列を解析して、最低２バイトのデータ列（以後、『ユニーク列』と称する）を辞書作成・検索部１１０９に渡す。
【００４５】
説明を簡単にするために、便宜上、辞書に登録されるユニーク列を表現する辞書コードは、２６４から昇順に生成されることとする。また、ユニーク列の最終バイトを『子』と呼び、最終バイトの値に＋８した値を『子コード』と呼ぶ。
【００４６】
ユニーク列のうち最終バイト以外を『親』と呼び、ユニーク列が２バイトの場合は先頭バイトに＋８した値を『親コード』と呼ぶ。ただし、ユニーク列が３バイト以上の場合、親を代表する辞書コード自身を『親コード』と呼ぶこととする。
【００４７】
『子コード』および『親コード』の詳細については、後述する。
【００４８】
辞書作成・検索部１１０９は、ユニーク列が辞書部１１０５に登録されているかを調べる。
【００４９】
もし、ユニーク列が辞書部１１０５に登録されていない場合、辞書作成・検索部１１０９はユニーク列を辞書部１１０５に所定のフォーマットで登録する。ユニーク列が辞書部１１０５に登録されてる場合、辞書作成・検索部１１０９は、ユニーク列が辞書部１１０５に登録されてる旨をデータ列解析部１１０８に知らせ、そのユニーク列に１バイト追加したデータ列を新しいユニーク列とし、辞書作成・検索部１１０９に渡す。上述したような処理化が繰り返され、辞書作成・検索部１１０９は辞書部１１０５に辞書を構築してゆく。
【００５０】
ちなみに、ユニーク列を辞書部１１０５に登録する際、辞書部１１０５に書き込まれるデータは、辞書コード、親コード、子コード、および登録フラグの４種類であり、以後、それらをエントリと呼ぶ。登録フラグは、登録されたエントリにおけるユニーク列のバイト数を意味する。なお、ゼロ以外の数値が登録フラグに書き込まれた時点で、４種類のデータがエントリ領域に書き込まれたことを意味する。
【００５１】
辞書作成・検索部１１０９は、辞書に新しいユニーク列を登録すると、エントリの中の親コードをセレクタ１０１を介して圧縮コード生成部１１１０に渡す。なお、セレクタ１０１の詳細な動作については後述する。
【００５２】
圧縮コード生成部１１１０は、受信した親コード群やその他の制御コードを所定の圧縮データストリームに組み立てて、それらをフォーマット部１１０６へ出力する。
【００５３】
ここで、制御コードとは、０〜７の値からなる。制御コードが０である場合、それは辞書フリーズコマンドを意味し、制御コードが１である場合、それは辞書リセットコマンドを意味し、制御コードが２〜７のうちの１つである場合、それは未使用を意味する。
【００５４】
辞書フリーズコマンドとは、辞書部１１０５内に辞書登録すべき領域が無くなったことを辞書作成・検索部１１０９が検知すると、その後、辞書作成・検索部１１０９は辞書登録を中止することを意味する。つまり、辞書フリーズコマンドが出力された後は、現状の辞書の内容でデータ圧縮が行われる。
【００５５】
辞書リセットコマンドとは、圧縮率観測部１１１１が辞書作成・検索部１１０９に辞書リセット信号１１１２を指示した時点で、圧縮コード生成部１１１０が出力する圧縮データストリームに埋め込む。
【００５６】
圧縮率観測部１１１１は、データ圧縮部１１０４が受け取る入力データ量とデータ圧縮部１１０４が生成する圧縮出力データ量の比から圧縮率を常に計算している。圧縮率観測部１１１１が計算した圧縮率が外部から指定される圧縮率を下回る場合つまり、期待される圧縮率が得られない場合、圧縮率観測部１１１１は、辞書作成・検索部１１０９に対し辞書リセット信号１１１２を指示する。辞書リセット信号１１１２が発生すると、辞書部１１０５内の全エントリの登録フラグがゼロ値で初期化される。再び、入力データ列からユニーク列が切りだされ、辞書作成が行われる。
【００５７】
以下に、辞書リセット信号１１１２が発行されていない期間における、データ圧縮記録装置１１０１のデータ圧縮部１１０４が受け取った入力データ列をデータ圧縮する処理（通常処理）を、図２および図３を用いて説明する。なお、データ圧縮記録装置１１０１がセレクタ１０１を有していない場合における、通常処理では、圧縮コード生成部１１１０が辞書作成・生成部１１０９から出力される信号を受け取る。
【００５８】
図２は、データ圧縮部１１０４が受け取る入力データと、データ圧縮部１１０４が生成した出力データの一関係を示す図であり、図３は、辞書部の一構成を示す図である。以後、図３に示す辞書部を辞書部１１０５ａと呼ぶ。
【００５９】
図２に示す上段の数値列は、コントローラ部１１０３からデータ圧縮部１１０４へ入力されるデータ列で、左から順に入力され、１６進数で表現されている。また、図２に示す下段の数値列は、その入力データ列がデータ圧縮部１１０４で圧縮され出力される圧縮データ列を示し、左から順に出力され、１０進数で表現されている。
【００６０】
図３に示す辞書部１１０５ａは、１エントリ６バイトで構成される。辞書コード１３０２に２バイトが割り当てられ、親コード１３０３に２バイトが割り当てられ、子コード１３０４および登録フラグ１３０５に２バイトが割り当てられいる。
【００６１】
エントリアドレス１３０１は、エントリの位置を示している。図３に示す左側の表の上から下へエントリアドレス１３０１が増加する。また、図３に示す右側の下が最終エントリアドレスとなる。
【００６２】
以下に、図２に示す上段入力データ列に対して、データ圧縮部１１０４が行なう処理を説明する。
【００６３】
データ圧縮処理に先立ち、辞書部１１０５ａを辞書リセットするため、辞書作成・検索部１１０９は辞書部１１０５ａ内の全登録フラグ１３０５にゼロを書き込むとともに、圧縮コード生成部１１１０は辞書リセットコマンドである１２０１を、データ列解析部１１０８、セレクタ部１０１、および圧縮コード生成部１１１０に出力する。
【００６４】
データ列解析部１１０８は、入力データ列から最初の２バイト、たとえば、０ｘ６１、０ｘ６２を切りだし、ユニーク列として辞書作成・検索部１１０９に渡す。辞書作成・検索部１１０９は、親値および子値を受け取り、親値および子値に基づいてエントリアドレス１３０１を生成する所定の関数（たとえば、ハッシュ関数）を用いて、親値０ｘ６１および子値０ｘ６２に対するエントリアドレスｍ１を得る。
【００６５】
データ列解析部１１０８は、辞書部１１０５ａのエントリアドレスｍ１の登録フラグ１３０５がゼロつまりこのエントリが未使用であることを確認すると（なお、図３では、すでにいくつかの辞書登録が行われた後の辞書部１１０５ａの状態を示しているため、登録フラグには２が格納されている）、エントリアドレスｍ１に辞書コードの初期値である２６４を書き込み、エントリアドレスｍ１に親コード１０５＝０ｘ６１＋８を書き込み、エントリアドレスｍ１に子コードである１０６＝０ｘ６２＋８を書き込み、エントリアドレスｍ１にユニーク列バイト数である登録フラグ２を書き込む。
【００６６】
辞書作成・検索部１１０９は、それらを辞書部１１０５ａのエントリに書き込むとともに、圧縮コード生成部１１１０に圧縮データとして親コード１０５を渡す。
【００６７】
データ列解析部１１０８は、先ほど子であった０ｘ６２を親として次入力０ｘ６３を子として辞書作成・検索部１１０９に渡す。
【００６８】
辞書作成・検索部１１０９は、上述したように、親値０ｘ６２および子値０ｘ６３（ユニーク列）から、それに対応するエントリアドレスｍ２を得る。
【００６９】
辞書作成・検索部１１０９が、エントリアドレスｍ２の登録フラグがゼロ（なお、図３では、すでにいくつかの辞書登録が行われた後の辞書部１１０５ａの状態を示しているため、登録フラグには２が格納されている）、つまりこのエントリが未使用であることを確認すると、先ほどの辞書コードの初期値＋１である２６５、親コード１０６＝０ｘ６２＋８、子コードである１０７＝０ｘ６３＋８、および、ユニーク列バイト数である登録フラグ２を、辞書部１１０５ａのエントリアドレスｍ２に対応するエントリに書き込むとともに、圧縮コード生成部１１１０に圧縮データとして親コード１０６を渡す。
【００７０】
同様にして、辞書作成・検索部１１０９は、ユニーク列０ｘ６３、０ｘ６４からエントリアドレスｍ３を得、ユニーク列０ｘ６４、０ｘ６１からエントリアドレスｍ４を得る。
【００７１】
次に、ユニーク列０ｘ６１、０ｘ６２が切り出される。上述したように、切り出されるユニーク列０ｘ６１、０ｘ６２に対するエントリアドレスは、前記関数にて計算するとｍ１となる。エントリアドレスｍ１に対応する登録フラグがゼロ以外であり、かつ、エントリアドレスｍ１に対応するエントリ内の親コードがユニーク列０ｘ６１＋８と一致し、子コードがユニーク列０ｘ６２＋８と一致するので、辞書作成・検索部１１０９は、切り出されたユニーク列０ｘ６１、０ｘ６２が辞書内に存在していると判断する。
【００７２】
辞書作成・検索部１１０９が、切り出されたユニーク列が辞書内に存在していると判断すると、辞書作成・検索部１１０９は、切り出されたユニーク列０ｘ６１、０ｘ６２を辞書コード２６４（１０進数）で代表させ、親コードを２６４とし、切り出されたユニーク列０ｘ６１、０ｘ６２の次に入力される０ｘ６３を子とするユニーク列が辞書に存在するか否かを探す。
【００７３】
親コード２６４（１０進数）および子０ｘ６３（１６進数）からエントリアドレスを計算すると、エントリアドレスはｍ５となる。
【００７４】
エントリアドレスｍ５に対応するエントリの登録フラグはゼロなので（なお、図３では、すでにいくつかの辞書登録が行われた後の辞書部１１０５ａの状態を示しているため、登録フラグには３が格納されている）、辞書作成・検索部１１０９が、エントリアドレスｍ５に対応するエントリの、辞書コードに２６８を書き込み、親コードに２６４を書き込み、子コードに１０７（１０進数）＝０ｘ６３＋８（１６進数）を書き込み、ユニーク列バイト数である登録フラグに３を書き込むとともに、圧縮コード生成部１１１０に圧縮データとして親コード２６４を渡す。
【００７５】
同様にして、ユニーク列０ｘ６３、０ｘ６４、０ｘ６１はエントリアドレスｍ６に登録され、ユニーク列０ｘ６１、０ｘ６２、０ｘ６３、０ｘ６４はエントリアドレスｍ７に登録される。以下、エントリアドレスｍ１０まで同様である。この例では、登録可能なユニーク列の最大バイト数をＮバイトと決め、辞書部１１０５ａのエントリ数はＭ個とする。Ｎ、Ｍとも自然数だが、一般には、Ｎ＝１２８、Ｍ＝４０９６などの例がある。
【００７６】
図４は、データ圧縮処理の辞書作成・検索部１１０９の通常処理の一例を示す図である。
【００７７】
ステップＳ１０において、ホストコンピュータ１１０２からコントローラ部１１０３を介してデータ列解析部１１０８にデータが入力された場合、それを親とする。なお、データの入力は任意の時点で起きてもよい。
【００７８】
ステップＳ２０において、データが入力されたか否かが判定される。データが入力された場合、処理はステップＳ３０に進み、データが入力されていない場合、処理はステップＳ４０に進み、処理を終了する。
【００７９】
ステップＳ３０において、データ列解析部１１０８は、初期の親、子、各バイトを辞書作成・検索部１１０９に送る。
【００８０】
ステップＳ５０において、辞書作成・検索部１１０９は、前記親子が辞書内に存在するか調査するため、辞書部１１０５の検索を始める。
【００８１】
ステップＳ６０では、前記親子を所定関数によって演算することによって、エントリアドレスが生成される。
【００８２】
ステップＳ７０では、エントリアドレスに対応する登録フラグ１３０５の内容が取り出される。
【００８３】
ステップＳ８０では、エントリアドレスに対応する登録フラグ１３０５が０か否かが判定される。登録フラグ１３０５が０である場合、処理はステップＳ９０に進み、登録フラグ１３０５が０でない場合、処理はステップＳ１００に進む。
【００８４】
ステップＳ９０では、そのエントリは未使用なので、先程データ列解析部１１０８から入手した親子情報を辞書に登録１３０３、１３０４し、現在の親コード１３０３を圧縮コード生成部１１１０へ渡し、現在の子を次の親としておく。その後処理はステップＳ２０に進み、ステップＳ２０では、次に入力されるデータを子とする。
【００８５】
ステップＳ１００では、登録フラグ１３０５が０でない場合、たとえば、登録フラグ１３０５が２の場合、前記エントリアドレスが指すエントリの親子情報が取り出される。
【００８６】
ステップＳ１１０では、取り出された親子情報とデータ列解析部１１０８から入手した親子情報が一致するかが判定される。親子情報が一致する場合、処理はステップＳ１２０に進む。また、親子情報が一致しない場合、処理はステップＳ６０に進み、前記入手した親子情報に基づき再度所定関数を用いて新たなエントリアドレスを取得して検索を続ける。
【００８７】
ステップＳ１２０では、現在の親子データ列を親とし、子バイトをデータ列解析部１１０８から入手して新たなユニーク列を準備して、再び、所定関数によりその親子情報からエントリアドレスを取得して検索を続ける。その後処理はステップＳ６０に進む。なお、圧縮コード生成部１１１０は、圧縮ストリーム化してフォーマッタ１１０６に出力する、という圧縮処理（通常処理）を行なう。
【００８８】
しかしながら、圧縮率観測部１１１１は、現在の圧縮率が外部指定圧縮率を下回る場合、辞書部１１０５ａを初期化する処理を促す辞書リセット信号１１１２を生成する。前記辞書リセット信号１１１２が発行された場合、データ列解析部１１０８、および辞書作成・検索部１１０９が、上述した通常の処理を停止する。
【００８９】
そのような場合、セレクタ部１０１は、圧縮コード生成部１１１０から出力される信号１０５を出力するのではなく、コントローラ部１１０３から送られてくるデータ値１０２を出力する。セレクタ部１０１は、辞書リセット信号１１１２に応じてそのような切り替えを行う。つまり、そのデータ値１０２を受信した圧縮コード生成部１１１０は、データ値１０２をそのままフォーマッタ部１１０６に出力する。このことによって、辞書部１１０５が初期化される時間の間、記録が途絶えることがない。
【００９０】
データ値１０２がフォーマッタ部１１０６に出力されている間に、辞書作成・検索部１１０９は、図３に示す辞書部１１０５ａ内の全エントリの登録フラグにゼロ値を書きこんで辞書の初期化を行なう。
【００９１】
辞書部１１０５ａの初期化が終了すると、セレクタ部１０１は、前記辞書リセット信号１１１２が非アクティブとなったことに応じて、圧縮コード生成部１１１０に出力される値をデータ値１０２から辞書コード１０５に切り替え、かつデータ列解析部１１０８、辞書作成・検索部１１０９は、前記辞書リセット信号１１１２が非アクティブとなったことに応じて、上述した通常処理に戻る。
【００９２】
以下に、前記辞書リセット処理に伴う、圧縮コード生成部１１１０の処理を説明する。
【００９３】
辞書リセット信号１１１２が発行されると、圧縮コード生成部１１１０は制御コード値１を出力して、辞書が初期化されることを出力データ列に記録し、次に、制御コード値６を出力して、以降出力されるデータ列が非圧縮であることを出力データ列に記録し、以降コントローラ部１１０３からのデータ列１０２をセレクタ部１０１を介して圧縮コード生成部１１１０が出力し続ける。この時、圧縮コード生成部１１１０は入力データバイト値に８を足した値を出力する。引き続いて、辞書リセット処理が終了すると、圧縮コード生成部１１１０は、制御コード値７を出力し、その非圧縮データ列が終了することを出力データ列に記録し、以降、通常の圧縮処理がなされた圧縮データが出力される。
【００９４】
図５は、辞書部１１０５の他の構成を示す図である。以後、図５に示す辞書部を辞書部１１０５ｂと呼ぶ。
【００９５】
図５に示す辞書部１１０５ｂにおける、エントリアドレス１３０１、辞書コード１３０２、親コード１３０３、子コード１３０４の内容は、図３に示す辞書部１１０５ａのものと同じである。ただし、図５に示す辞書部１１０５ｂおよびデータ圧縮部１１０４は、登録フラグ１３０５を格納する領域の代わりに、登録バイト数２０１を格納する領域およびフラグ２０２を格納する領域を有している。
【００９６】
図３に示す登録フラグ１３０５および図５に示す登録バイト数２０１はともに、エントリ登録されたユニーク列のバイト数を示す。一方、登録フラグ１３０５が辞書リセット処理によってゼロ初期化されるのに対し、登録バイト数２０１は辞書リセット処理によってゼロ初期化されない。
【００９７】
その代わり、エントリに辞書登録されたかどうかを示すフラグ２０２が、辞書部１１０５ｂと別に、データ圧縮部１１０４に内蔵されるレジスタメモリに格納される。レジスタメモリの一例を図５に示す。図５に示すレジスタメモリは、１ビット×Ｍ個のフラグを格納することができる。なお、データ圧縮記録装置１１０１は、レジスタメモリの１ビットを辞書部１１０５ｂにおける１つのエントリに対応づけるフラグセレクタ手段を備えていてもよい。フラグセレクタ手段は、辞書部１１０５ｂのエントリアドレス１３０１によって、レジスタメモリの特定の１ビットが選択される。
【００９８】
図３に示す辞書部１１０５ａのリセット処理では、辞書部１１０５内の全登録フラグ１３０５の欄にゼロ値が書き込まれる。一方、図５に示す辞書部１１０５ｂの通常圧縮処理では、エントリに登録すべきユニーク列のバイト数がそのまま辞書部１１０５ｂ内の登録バイト数２０１に記録され、そのエントリが辞書登録に使用されると、そのエントリに対応するフラグ２０２に値１が記録される。図５に示す辞書部１１０５ｂのリセット処理では、辞書部１１０５ｂに対してアクセスを行うことなく、図５に示す、データ圧縮部１１０４内のレジスタメモリ２０２の全ビット記憶がゼロ値にされる。
【００９９】
レジスタメモリでは、各エントリに対して１ビットのフリップフロップ型記憶素子が割り当てられている。つまり、フリップフロップ型記憶素子の数は、エントリ数と同数である。１システムクロック期間の辞書リセット信号でレジスタメモリがゼロに初期化される。たとえば、１システムクロック期間が４０ＭＨｚである場合、２５ｎｓでレジスタメモリがゼロに初期化される。
【０１００】
以下に、辞書部１１０５の別の構成を説明する。
【０１０１】
図６は、辞書部１１０５の別の構成の一部である、メモリ空間を示す図である。図６に示すメモリ空間は、図５に示すフラグ２０２に相当する。辞書部１１０５の別の構成は、図５に示す、エントリアドレス１３０１、辞書コード１３０２、親コード１３０３、子コード１３０４、および登録バイト数２０１と、メモリ空間２０２ａとを有している。メモリ空間２０２ａの大きさは、たとえばＺ＋０〜Ｚ＋２５６とする。以後、メモリ空間を登録フラグ用テーブル２０２ａと呼ぶ。また、辞書部１１０５をＳＲＡＭとする。
【０１０２】
辞書部１１０５であるＳＲＡＭ内で、登録フラグ用テーブル２０２ａが、エントリアドレス１３０１、辞書コード１３０２、親コード１３０３および子コード１３０４、登録バイト数２０１と重ならないようにＺの値が決定される。
【０１０３】
図５に示す、エントリアドレス１３０１、辞書コード１３０２、親コード１３０３、子コード１３０４、および登録バイト数２０１のＭが４０９６である場合、図６に示す登録フラグ用テーブルは、全部で４０９６ビット必要である。
【０１０４】
データバスが１６ビットのＳＲＡＭの場合、全部で２５６ワードの領域が必要となる。前記辞書リセット処理では、その登録フラグ用テーブルの全ビットにゼロを記録するので、２５６回ＳＲＡＭにワードのゼロ値を書き込むことになる。
【０１０５】
辞書登録が始まると、たとえば、図５に示すエントリアドレス１２にユニーク列が登録されると、図６に示すＺ番地のビット１２に１が書き込まれる。図５に示すエントリアドレス２３にユニーク列が登録されると、図６に示すＺ＋１番地のビット７に１が書き込まれる。
【０１０６】
同様にして、エントリアドレスＸにユニーク列が登録されると、図６においては、Ｘを１６で割った時の商がアドレスＺ番地となり、剰余がビット番号となる。
【０１０７】
図１に示す辞書作成・検索部１１０９内に、前記Ｘ÷１６の商、剰余を算出する手段を設け、通常のデータ圧縮処理中は、その商によりＳＲＡＭの登録フラグ用テーブルアドレスを、その剰余によって書き込むワードデータ内に１を記録するビット番号を作り、エントリに辞書登録されたことを記録として残してゆく。また、辞書リセット処理期間中は、ゼロ値のワードデータがＺ番地からＺ＋２５６番地に順時書き込まれる。
【０１０８】
（実施形態２）
以下に、図面を用いて、本発明のデータ圧縮記録装置における第２の実施形態を説明する。
【０１０９】
図７は、本発明のデータ圧縮記録装置における第２の実施形態を示す図である。
【０１１０】
図７に示すデータ圧縮記録装置１２０１は、コントローラ部１１０３、データ圧縮部１２０４、辞書部１１０５、フォーマッタ部１１０６、記録部１１０７、およびマスク信号生成部４０２を備えている。
【０１１１】
データ圧縮部１２０４は、マスク部４０５、データ列解析部１１０８、辞書作成・検索部１１０９、圧縮コード生成部１１１０、および圧縮率観測部１１１１を有してる。
【０１１２】
なお、データ圧縮記録装置１２０１において、データ圧縮記録装置１１０１と同じ構成には同じ番号を付け、基本的には説明を省略する。
【０１１３】
記録部１１０７は、マスク信号生成部４０２に無記録期間信号４０１を送る。無記録期間信号４０１は、記録部１１０７がメディア（記録媒体など）にデータを記録していない時期を示す信号である。一般には、無記録期間とは、光ディスク記録装置におけるピックアップ、フロッピーディスクドライブにおける磁気ヘッドのシーク動作期間、もしくは、磁気テープドライブにおけるテープライト中のトラック移動期間などに代表される。
【０１１４】
マスク信号生成部４０２は、無記録期間信号４０１および外部から入力された外部辞書リセットマスク信号４０３に基づいて最終マスク信号４０４を生成し、それをマスク部４０５に送る。
【０１１５】
最終マスク信号４０４は、圧縮率観測部１１１１が発行する辞書リセット信号１１１２が辞書作成・検索部１１０９に伝わるのをマスクする信号である。信号４０６は最終的な辞書リセット信号である。
【０１１６】
外部から入力された外部辞書リセットマスク信号４０３は、マスク信号生成部４０２に入力され、記録部１１０７が通常処理でデータを記録している時は、無記録期間信号４０１は発行されず、外部から入力された外部辞書リセットマスク信号４０３が有効となり最終マスク信号４０４としてマスク部４０５に入力される。
【０１１７】
その有効な最終マスク信号４０４によりマスク部４０５は、辞書リセット信号１１１２をマスクし、辞書作成・検索部１１０９に辞書リセット信号を伝えなくする。よって、記録部１１０７が通常処理でデータを記録している時は、辞書リセット処理は行なわれず、そのまま辞書を作成しながらデータ圧縮処理を引続き行なう。
【０１１８】
記録部１１０７がメディア（記録媒体など）へデータ記録を行なわない期間が発生すると、無記録期間信号４０１が発行され、その期間中は外部辞書リセットマスク信号４０３は無効となり、最終マスク信号４０４も解除される。
【０１１９】
従って、マスク部４０５は先程までの辞書リセット信号１１１２を有効にし最終辞書リセット信号４０６によって辞書作成・検索部１１０９は辞書リセット処理を行なう。
【０１２０】
記録部１１０７がメディア（記録媒体など）にデータを記録していない期間は、機械的動作が伴うことが前提であり、数百マイクロ秒から数ミリ秒のオーダーであるため、辞書をリセットする処理にかかる時間を満たしており、余裕をもって辞書をリセットすることができる。
【０１２１】
また、辞書リセットが発行されてから前記機械的動作が発生するまでは、通常処理で辞書を作成しながらデータ圧縮を行なっている。辞書リセットは、期待する圧縮率を下回った場合に、発行される。上述したデータ圧縮処理では急激に圧縮率が低下しないという性質があるため、この性質を利用すれば、ある程度辞書リセット処理の時期を遅らせることは可能である。
【０１２２】
（実施形態３）
以下に、図面を用いて、本発明のデータ圧縮記録装置における第３の実施形態を説明する。
【０１２３】
図８は、本発明のデータ圧縮記録装置における第３の実施形態を示す図である。
【０１２４】
上述したように、図１に示すデータ圧縮記録装置１１０１では、辞書リセット期間中のみ、入力データを非圧縮データのままフォーマット化して出力する。一方、図８に示すデータ圧縮記録装置１３０１は、コントローラ部１１０３を介してホストコンピュータ１１０２から出力されるデータを一時的に蓄えるバッファメモリ５０１などを備えている。具体的には、図８に示すデータ圧縮記録装置１３０１は、コントローラ部１１０３、データ圧縮部１３０４、辞書部１１０５、フォーマッタ部１１０６、記録部１１０７、バッファメモリ５０１およびマスク信号生成部５０３を備えている。
【０１２５】
データ圧縮部１３０４は、マスク部５０６、データ列解析部１１０８、辞書作成・検索部１１０９、圧縮コード生成部１１１０、および圧縮率観測部１１１１を有してる。
【０１２６】
なお、データ圧縮記録装置１３０１において、データ圧縮記録装置１１０１と同じ構成には同じ番号を付け、基本的には説明を省略する。
【０１２７】
バッファメモリ５０１に蓄えられたデータは、コントローラ部１１０３を介してデータ列解析部１１０８に入力される。
【０１２８】
外部から入力された外部辞書リセットマスク信号５０４はマスク信号生成部５０３に入力され、信号５０４はコントローラ部１１０３が発行するデータ蓄積検知信号５０２によって制御される。データ蓄積検知信号５０２は、辞書リセット処理にかかる期間中、非圧縮のままデータをフォーマッタ部１１０６へ出力するのに要する転送データ量以上のデータがバッファメモリ５０１に蓄積された場合に発行される。
【０１２９】
マスク信号生成部５０３は、データ蓄積検知信号５０２が発行されていない時、外部辞書リセットマスク信号５０４をそのまま有効最終マスク信号５０５として出力する。マスク信号生成部５０３は、データ蓄積検知信号５０２が発行された時、外部辞書リセットマスク信号５０４をマスクし、最終マスク信号５０５はマスク無効信号となる。
【０１３０】
マスク部５０６は、最終マスク信号５０５が有効の場合、辞書リセット信号１１１２をマスクし、最終辞書リセット信号５０７が無効となり、辞書作成・検索部１１０９は辞書作成しながらデータ圧縮処理を行なう。
【０１３１】
マスク部５０６は、最終マスク信号５０５が無効の場合、辞書リセット信号１１１２のマスクを行なわず、最終辞書リセット信号５０７を生成し、辞書作成・検索部１１０９は、最終辞書リセット信号５０７に応じてデータ圧縮処理をやめ、辞書部１１０５の登録フラグを初期化する。同時にコントローラ部からの入力データは非圧縮のまま圧縮コード生成部１１１０に送られ、それらはフォーマット化されて出力される。その辞書リセット処理に必要な時間分の出力データ量がバッファメモリ５０１に確保されていることが保証されているため、システム全体としては常に記録部１１０７を停止させることなくデータをストリーミングさせることが可能となる。
【０１３２】
また、辞書リセットが発行されてからデータ蓄積検知信号５０２が発行されるまでは、通常処理で辞書を作成しながらデータ圧縮を行なっている。辞書リセットは期待する圧縮率を下回った場合に発行されるものであり、上述したデータ圧縮処理では急激に圧縮率が低下しないという性質があるため、この性質を利用すれば、ある程度辞書リセット処理の時期を遅らせることは可能である。
【０１３３】
（実施形態４）
以下に、図面を用いて、本発明のデータ圧縮記録装置における第４の実施形態を説明する。
【０１３４】
図９は、本発明のデータ圧縮記録装置における第４の実施形態を示す図である。
【０１３５】
上述したように、図１に示すデータ圧縮記録装置１１０１では、辞書リセット期間中のみ、入力データを非圧縮データのままフォーマット化して出力する。
【０１３６】
一方、図９に示すデータ圧縮記録装置１４０１は、データ圧縮部１４０４が出力する圧縮データ列を、フォーマッタ部１１０６を介して蓄積するバッファメモリ６０１などを備えている。具体的には、図９に示すデータ圧縮記録装置１４０１は、コントローラ部１１０３、データ圧縮部１４０４、辞書部１１０５、フォーマッタ部１１０６、記録部１１０７、バッファメモリ６０１、およびマスク信号生成部６０３を備えている。
【０１３７】
データ圧縮部１４０４は、マスク部６０６、データ列解析部１１０８、辞書作成・検索部１１０９、圧縮コード生成部１１１０、および圧縮率観測部１１１１を有してる。
【０１３８】
なお、データ圧縮記録装置１４０１において、データ圧縮記録装置１１０１と同じ構成には同じ番号を付け、基本的には説明を省略する。
【０１３９】
バッファメモリ６０１に蓄えられたデータはフォーマッタ部１１０６を介して記録部１１０７に入力される。外部から入力された外部辞書リセットマスク信号６０４はマスク信号生成部６０３に入力され、信号６０４はフォーマッタ部１１０６が発行するデータ蓄積検知信号６０２によって制御される。データ蓄積検知信号６０２は、辞書リセット処理にかかる期間中、圧縮データをフォーマッタ部１１０６から記録部１１０７へ出力するのに要する転送データ量以上のデータがバッファメモリ６０１に蓄積された場合に発行される。
【０１４０】
マスク信号生成部６０３は、データ蓄積検知信号６０２が発行されていない時、外部辞書リセットマスク信号６０４をそのまま有効最終マスク信号６０５として出力する。
【０１４１】
マスク信号生成部６０３は、データ蓄積検知信号６０２が発行された時、外部辞書リセットマスク信号６０４をマスクし、最終マスク信号６０５はマスク無効信号となる。
【０１４２】
マスク部６０６は、最終マスク信号６０５が有効の場合、辞書リセット信号１１１２をマスクし、最終辞書リセット信号６０７が無効となり、辞書作成・検索部１１０９は辞書作成しながらデータ圧縮処理を行なう。
【０１４３】
マスク部６０６は、最終マスク信号６０５が無効の場合、辞書リセット信号１１１２のマスクを行なわず、最終辞書リセット信号６０７として反映し、辞書作成・検索部１１０９はデータ圧縮処理をやめ辞書部１１０５の登録フラグを初期化する。同時に、記録部１１０７への入力データはバッファメモリ６０１からフォーマッタ部１１０６を介して入力される。
【０１４４】
その辞書リセット処理に必要な時間分の出力データ量がバッファメモリ６０１に確保されていることが保証されているため、システム全体としては常に記録部１１０７を停止させることなくデータをストリーミングさせることが可能となる。
【０１４５】
また、辞書リセットが発行されてからデータ蓄積検知信号６０２が発行されるまでは、通常処理で辞書を作成しながらデータ圧縮を行なっているが、辞書リセットは期待する圧縮率を下回った場合に発行されるものであり、上述したデータ圧縮処理では急激に圧縮率が低下しないという性質があるため、この性質を利用すれば、ある程度辞書リセット処理の時期を遅らせることは可能となる。
【０１４６】
（実施形態５）
以下に、図面を用いて、本発明のデータ圧縮記録装置における第５の実施形態を説明する。
【０１４７】
図１０は、本発明のデータ圧縮記録装置における第５の実施形態を示す図である。
【０１４８】
図１０に示すデータ圧縮記録装置１５０１は、コントローラ部１１０３、データ圧縮部１５０４、辞書部１１０５、フォーマッタ部１１０６、および記録部１１０７を備えている。
【０１４９】
データ圧縮部１５０４は、アンダーフロー予測部７０３、圧縮率変更部７０５、データ列解析部１１０８、辞書作成・検索部１１０９、圧縮コード生成部１１１０、および圧縮率観測部１１１１を有してる。
【０１５０】
なお、データ圧縮記録装置１５０１において、データ圧縮記録装置１１０１と同じ構成には同じ番号を付け、基本的には説明を省略する。
【０１５１】
アンダーフロー予測部７０３は、外部から入力される時間情報７０１と基底圧縮率７０２に基づいて、予測情報７０４を生成する。たとえば、アンダーフロー予測部７０３は、時間情報７０１に示されている時間の間にデータ圧縮部１５０４から出力された圧縮データ量を、データ圧縮部１５０４に入力されたデータ量で割って局所圧縮率を求め、さらにその局所圧縮率を基底圧縮率７０２で割る処理を行なう。
【０１５２】
図１１は、アンダーフロー予測部７０３によって生成される予測情報と、局所圧縮率÷基底圧縮率の商との関係を示す図である。
【０１５３】
局所圧縮率÷基底圧縮率の商が１以下の場合、２ビット表現の０が予測情報７０４としてアンダーフロー予測部７０３から圧縮率変更部７０５に送られ、局所圧縮率÷基底圧縮率の商が１〜２の場合２ビット表現の１が予測情報７０４としてアンダーフロー予測部７０３から圧縮率変更部７０５に送られ、局所圧縮率÷基底圧縮率の商が２〜４の場合２ビット表現の２が予測情報７０４としてアンダーフロー予測部７０３から圧縮率変更部７０５に送られ、局所圧縮率÷基底圧縮率の商が４以上の場合２ビット表現の３が予測情報７０４としてアンダーフロー予測部７０３から圧縮率変更部７０５に送られる。
【０１５４】
圧縮率変更部７０５は、予測情報７０４に基づき、上限値７０６を生成し、それは辞書作成・検索部１１０９に送られる。ここで、上限値７０６とは、辞書作成・検索部１１０９が辞書作成時に登録できるユニーク列のバイト数の上限値７０６、および辞書作成・検索部１１０９が出力辞書コードに置き換えるユニーク列のバイト数の上限値７０６うちの少なくとも１つを意味する。
【０１５５】
たとえば、図１１に示すように、予測情報７０４が０の時はその上限値７０６を１２８にし、予測情報７０４が１の時は上限値７０６を６４にし、予測情報７０４が２の時は上限値７０６を３２にし、予測情報７０４が３の時は上限値７０６を１６にする。
【０１５６】
また、局所圧縮率が基底圧縮率以下の場合、つまり予測情報＝０の場合、極力圧縮率を上げる方向に働かせるため、辞書登録できるユニーク列バイト数の上限を１２８バイトとして、局所圧縮率の向上が図られる。しかしながら、局所圧縮率が極端に上がった場合、たとえば予測情報＝３の場合、記録部１１０７でアンダーフローが発生する可能性がある。このため、辞書登録できるユニーク列バイト数の上限を１６バイトにし、局所圧縮率をある程度低減するように制御する。
【０１５７】
また、前記上限値を１６バイトにした場合、たとえば、辞書登録だけでなく、入力されるデータ列が上限値を無視すれば３０バイトまで辞書コードとして置き換えが可能であっても、１６バイトまでで辞書コードに置き換えて、圧縮コード生成部１１１０に渡す。上述した処理のように、局所的な圧縮率の変動に対応して、辞書作成や圧縮コードの生成方法を制御することにより、記録部１１０７がアンダーフローにならずに、かつ、大局的にデータ圧縮率を安定させることが可能となる。
【０１５８】
（実施形態６）
以下に、図面を用いて、本発明のデータ圧縮記録装置における第６の実施形態を説明する。
【０１５９】
図１２は、本発明のデータ圧縮記録装置における第６の実施形態を示す図である。
【０１６０】
図１２に示すデータ圧縮記録装置１６０１は、バッファメモリ９０１、アンダーフロー予測部９０４、コントローラ部１１０３、データ圧縮部１６０４、辞書部１１０５、フォーマッタ部１１０６、および記録部１１０７を備えている。
【０１６１】
データ圧縮部１６０４は、圧縮率変更部９０６、データ列解析部１１０８、辞書作成・検索部１１０９、圧縮コード生成部１１１０、および圧縮率観測部１１１１を有してる。バッファメモリ９０１は、コントローラ部１１０３を介してホストコンピュータ１１０２からのデータを一時的に蓄える。
【０１６２】
なお、データ圧縮記録装置１６０１において、データ圧縮記録装置１１０１と同じ構成には同じ番号を付け、基本的には説明を省略する。
【０１６３】
バッファメモリ９０１に蓄えられたデータは、コントローラ部１１０３を介してデータ列解析部１１０８に入力される。コントローラ部１１０３は、バッファメモリ９０１に蓄積されたデータ量をバッファ蓄積量情報９０２としてアンダーフロー予測部９０４に常に開示している。アンダーフロー予測部９０４は、外部から入力される基底データ蓄積量９０３および前記バッファ蓄積量情報９０２に基づいて、予測情報９０５を生成する。たとえば、アンダーフロー予測部９０４は、
バッファ蓄積量の基底データ蓄積量に対する倍率値を生成し、それを予測情報９０５として圧縮率変更部９０６へ渡す。
【０１６４】
図１１に示すように、バッファ蓄積量÷基底データ蓄積量の商と予測情報９０５の関係は、その商が２以上の時２ビット表現は０となり、その商が１．５〜２の時２ビット表現は１となり、その商が１〜１．５の時２ビット表現は２となり、その商が１以下の時２ビット表現は３となる。
【０１６５】
圧縮率変更部９０６は、前記倍率値９０５に基づいて上限値９０７を生成する。ここで、上限値９０７とは、辞書作成・検索部１１０９が辞書作成時に登録できるユニーク列のバイト数、および出力辞書コードに置き換えるユニーク列のバイト数の少なくとも一方である。
【０１６６】
予測情報９０５が０の時、その上限値９０７が１２８となり、予測情報９０５が１の時、その上限値９０７が６４となり、予測情報９０５が２の時、その上限値９０７が３２に、予測情報９０５が３の時、その上限値９０７が１６となり、それぞれの上限値９０７が辞書作成・検索部１１０９に送られる。
【０１６７】
バッファ蓄積量９０２が基底蓄積量９０３の２倍以上ある場合、たとえば予測情報＝０の場合、極力、圧縮率を上げる方向に働かせるため、辞書登録できるユニーク列バイト数の上限を１２８バイトとして局所圧縮率向上を図るが、バッファ蓄積量が極端に減った場合、たとえば予測情報＝３の場合、記録部１１０７でアンダーフローが発生する可能性があるため、辞書登録できるユニーク列バイト数の上限を１６バイトにしてバッファ蓄積量をある程度増加させるように制御する。
【０１６８】
また、前記上限値を１６バイトにした場合、たとえば、辞書登録だけでなく、入力されるデータ列が上限値を無視すれば３０バイトまで辞書コードとして置き換えが可能であっても、１６バイトまでで辞書コードに置き換えて、圧縮コード生成部１１１０に渡す。
【０１６９】
上述した処理のように、データ圧縮部１１０４の前段バッファメモリのデータ蓄積量の変動に対応して、辞書作成や圧縮コードの生成方法を制御することにより、記録部１１０７がアンダーフローにならずに、かつ、大局的にデータ圧縮率を安定させることが可能となる。
【０１７０】
（実施形態７）
以下に、図面を用いて、本発明のデータ圧縮記録方法における第７の実施形態を説明する。
【０１７１】
図１３は、データ圧縮記録方法の一例を示す図である。詳しくは、図１３に示す方法は、データ圧縮記録装置１１０１の辞書作成・検索部１１０９に対し、外部から時間情報＝Ｎクロック時間が入力される。その時間情報Ｎ以内に、あるユニーク列の辞書登録ができなかった場合、もしくは、あるユニーク列を辞書から見つけられなかった場合の、方法に関する。
【０１７２】
ステップＳ１０において、ホストコンピュータ１１０２からコントローラ部１１０３を介してデータ列解析部１１０８にデータが入力された場合、それを親とする。なお、データの入力は任意の時点で起きてもよい。
【０１７３】
ステップＳ２０において、データが入力されたか否かが判定される。データが入力された場合、処理はステップＳ３０に進み、データが入力されていない場合、処理はステップＳ４０に進み、処理を終了する。ここで、１クロック時間とは、所定クロックにおける１周期のパルス時間とする。
【０１７４】
ステップＳ３０において、データ列解析部１１０８は、初期の親、子、各バイトを辞書作成・検索部１１０９に送る。
【０１７５】
ステップＳ１００１では、辞書作成・検索部１１０９は、初期の親、子、各バイトがデータ列解析部１１０８から入手されると、タイマが初期化され、クロックの立ち上がりエッジによるカウントアップがイネーブルにされる。
【０１７６】
ステップＳ５０において、辞書作成・検索部１１０９は、前記親子が辞書内に存在するか調査するため、辞書部１１０５の検索を始める。
【０１７７】
ステップＳ６０では、前記親子を所定関数によって演算することによって、エントリアドレスが生成される。
【０１７８】
ステップＳ７０では、エントリアドレスに対応する登録フラグ１３０５の内容が取り出される。
【０１７９】
ステップＳ８０では、エントリアドレスに対応する登録フラグ１３０５が０か否かが判定される。登録フラグ１３０５が０である場合、処理はステップＳ９０に進み、登録フラグ１３０５が０でない場合、処理はステップＳ１００に進む。
【０１８０】
ステップＳ９０では、そのエントリは未使用なので、先程データ列解析部１１０８から入手した親子情報を辞書に登録１３０３、１３０４し、現在の親コード１３０３を圧縮コード生成部１１１０へ渡し、現在の子を次の親としておく。その後処理はステップＳ２０に進み、ステップＳ２０では、次に入力されるデータを子とする。
【０１８１】
ステップＳ１００では、登録フラグ１３０５が０でない場合、たとえば、登録フラグ１３０５が２の場合、前記エントリアドレスが指すエントリの親子情報が取り出される。
【０１８２】
ステップＳ１１０では、取り出された親子情報とデータ列解析部１１０８から入手した親子情報が一致するかが判定される。親子情報が一致する場合、処理はステップＳ１００４に進み、親子情報が一致しない場合、処理はステップＳ１００２に進む。
【０１８３】
ステップＳ１００２では、ステップＳ１００１で起動したタイマー値がＮクロック時間を越えたか否かが調べられる。タイマー値がＮクロック時間を越えた場合、処理はステップＳ１００３に進み、タイマー値がＮクロック時間を越えない場合、処理はステップＳ６０に進む。
【０１８４】
ステップＳ１００３では、タイマー値がＮクロック時間以上、つまり、現ユニーク列の検索時間がＮクロック時間以上かかっている場合は、これ以上検索を続けると記録部１１０７へ転送する圧縮データの量が足りなくなるため、検索を強制中止し、最近親子関係が一致した時の親コードが圧縮コード生成部１１１０に送られ、前回一致した時の子を次の親とし、現在の子を子とし、処理はステップＳ１００１に進む。つまり、ステップＳ１００１において、再びタイマー初期化および起動が行われる。
【０１８５】
ステップＳ１００４では、ステップＳ１００１で起動したタイマー値がＮクロック時間を越えたか否かが調べられる。タイマー値がＮクロック時間を越えた場合、処理はステップＳ１００５に進み、タイマー値がＮクロック時間を越えない場合、処理はステップＳ１２０に進む。
【０１８６】
前記タイマー値がＮクロック時間を下回る場合（ステップＳ１２０）、つまり検索時間にまだ余裕がある場合、再び、現在の親子情報を元に所定関数により新たなエントリアドレスを取得して検索を続ける。言い換えると、ステップＳ１２０では、現在の親子データ列を親とし、子バイトをデータ列解析部１１０８から入手して新たなユニーク列を準備して、再び、所定関数によりその親子情報からエントリアドレスを取得して検索を続ける。その後処理はステップＳ６０に進む。
【０１８７】
ステップＳ１００５では、前記タイマー値がＮクロック時間以上、つまり現ユニーク列の辞書登録にかかる時間がＮクロック時間以上かかっている場合には、これ以上登録のための検索を続けると記録部１１０７へ転送する圧縮データの量が不足しアンダーフロー状態を起こすため、検索が強制中止される。現在の親コードが圧縮コード生成部１１１０に出力され、現在の子を次の親とし、処理はステップＳ２０に進み、データが入力されるとそれを子として検索が再開される。
【０１８８】
以上の処理を、辞書作成・検索部１１０９に設けることにより、外部指定した所定時間内にユニーク列の辞書登録ができなかった場合、もしくは、ユニーク列の検索ができなかった場合に、登録・検索処理を強制的に中止させ、その時点で辞書に存在した最大長のユニーク列を、辞書コードに置き換えて、圧縮コード生成部１１１０に渡すことが可能になり、よって、検索時間の増大に起因する記録部１１０７のアンダーフロー状態を回避することが可能となる。
【０１８９】
なお、第１の実施形態〜第６の実施形態における辞書部１１０５は、ＲＡＭ、たとえばＳＲＡＭであってもよい。また、辞書部１１０５の構造は、辞書部１１０５ａおよび辞書部１１０５ｂの構造に限られるものではない。
【０１９０】
上述した第１の実施形態〜第７の実施形態によれば、データ圧縮記録装置における、入力データストリームの性格、データ圧縮手段特有の性質／処理、データ書き込み速度の向上、などにより発生するアンダーフロー状態を防ぎ、機械的動作の中断なく常にストリーミングするデータ圧縮記録装置を実現することが可能となる。このため、上記機械的動作の頻繁なる発生による、記録時間の増大、メディア（記録媒体など）の早期劣化、記録ヘッド／ドライブモータなどの記録系の寿命を縮める、という問題を回避可能となる。
【０１９１】
【発明の効果】
本発明のデータ圧縮記録装置は、圧縮率観測手段が辞書作成・検索手段に辞書の初期化を指示すると、初期化を指示した時点から辞書の初期化が終了するまでの期間中のみ、圧縮データ装置に入力されるデータ列がデータ記録手段に転送される。
【０１９２】
このため、本発明のデータ圧縮記録装置は、従来のデータ圧縮記録装置に比べて、データ圧縮処理中の辞書リセット処理期間中でも、データ圧縮処理部の出力が途切れることなく維持でき、アンダーフロー状態の回避が容易である。
【図面の簡単な説明】
【図１】本発明のデータ圧縮記録装置における第１の実施形態を示す図である。
【図２】データ圧縮部１１０４が受け取る入力データと、データ圧縮部１１０４が生成した出力データの一関係を示す図である。
【図３】辞書部の一構成を示す図である。
【図４】データ圧縮処理の辞書作成・検索部１１０９の処理を示す図である。
【図５】辞書部１１０５の他の構成を示す図である。
【図６】辞書部１１０５の別の構成の一部である、メモリ空間を示す図である。
【図７】本発明のデータ圧縮記録装置における第２の実施形態を示す図である。
【図８】本発明のデータ圧縮記録装置における第３の実施形態を示す図である。
【図９】本発明のデータ圧縮記録装置における第４の実施形態を示す図である。
【図１０】本発明のデータ圧縮記録装置における第５の実施形態を示す図である。
【図１１】アンダーフロー予測部７０３、９０４が生成する予測情報と、圧縮率変更部７０５、９０６の入出力との関係を示す図である。
【図１２】本発明のデータ圧縮記録装置における第６の実施形態を示す図である。
【図１３】データ圧縮記録装置１１０１の動作の一例を示す図である。
【符号の説明】
１０１  セレクタ部
１０２  コントローラ部からセレクタ部への入力データ列
１０３  コントローラ部からデータ列解析部への入力データ列
１０４  データ列解析部から辞書作成・検索部へ渡されるユニーク列情報
１０５  辞書作成・検索部からセレクタ部へ渡される圧縮コード
２０１  登録バイト数
２０２  辞書に登録したことを示すフラグ
３０１  ＳＲＡＭアドレス
４０１  無記録期間信号
４０２  マスク信号生成部
４０３  外部辞書リセットマスク信号
４０４  最終マスク信号
４０５  マスク部
４０６  最終辞書リセット信号
５０１  バッファメモリ
５０２  データ蓄積検知信号
５０３  マスク信号生成部
５０４  外部辞書リセットマスク信号
５０５  最終マスク信号
５０６  マスク部
５０７  最終辞書リセット信号
６０１  バッファメモリ
６０２  データ蓄積検知信号
６０３  マスク信号生成部
６０４  外部辞書リセットマスク信号
６０５  最終マスク信号
６０６  マスク部
６０７  最終辞書リセット信号
７０１  外部入力の時間情報
７０２  外部入力の基底圧縮率
７０３  アンダーフロー予測部
７０４  予測情報
７０５  圧縮率変更部
７０６  ユニーク列バイト数の上限値
９０１  バッファメモリ
９０２  バッファ蓄積量
９０３  外部入力の基底データ蓄積量
９０４  アンダーフロー予測部
９０５  予測情報
９０６  圧縮率変更部
９０７  ユニーク列バイト数の上限値
【図１】
0003578445.tif 000002
【図２】
0003578445.tif 000003
【図３】
0003578445.tif 000004
【図４】
0003578445.tif 000005
【図５】
0003578445.tif 000006
【図６】
0003578445.tif 000007
【図７】
0003578445.tif 000008
【図８】
0003578445.tif 000009
【図９】
0003578445.tif 000010
【図１０】
0003578445.tif 000011
【図１１】
0003578445.tif 000012
【図１２】
0003578445.tif 000013
【図１３】
0003578445.tif 000014