(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-22
(45)【発行日】2023-12-01
(54)【発明の名称】ストレージシステム
(51)【国際特許分類】
G06F 3/06 20060101AFI20231124BHJP
G06F 16/17 20190101ALI20231124BHJP
【FI】
G06F3/06 301W
G06F3/06 301N
G06F16/17 100
(21)【出願番号】P 2020080747
(22)【出願日】2020-04-30
【審査請求日】2021-05-14
【審判番号】
【審判請求日】2023-02-14
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】島田 健太郎
(72)【発明者】
【氏名】水島 永雅
【合議体】
【審判長】吉田 美彦
【審判官】須田 勝巳
【審判官】山崎 慎一
(56)【参考文献】
【文献】米国特許第7719443(US,B1)
【文献】特開平02-034038(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 16/17
(57)【特許請求の範囲】
【請求項1】
ストレージシステムであって、
ホストと通信を行うフロントエンドインタフェースと、
前記フロントエンドインタフェースが前記ホストから受信したデータを、記憶デバイスに格納する前に、圧縮する、データ圧縮システムと、を含み、
前記データ圧縮システムは、
前記データを第一の圧縮方法により圧縮して、圧縮データを生成し、
前記第一の圧縮方法による圧縮データの圧縮率から予め設定された計算方法により前記圧縮データの伸長時間を計算し、
前記伸長時間と予め設定された閾値とを比較し、
前記伸長時間が前記閾値より小さい場合に、前記第一の圧縮方
法により前記データを圧縮したデータを出力し、
前記伸長時間が前記閾値以上である場合に、前記第一の圧縮方法
より圧縮率が悪く、伸長する時間が短いことが分かっている第二の圧縮方
法により前記データを圧縮したデータを出力する、ストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記データ圧縮システムは、さらに、
前記第一の圧縮方法及び前記第二の圧縮方法のどちらの方法で圧縮したデータを出力したかを識別する識別情報を、前記圧縮したデータに付与し、
前記圧縮データを伸長するときに、前記圧縮データに付与した識別情報に基づいて、前記第一の圧縮方法か前記第二の圧縮方法のいずれか一方の圧縮方法に対応する伸長方法によって、前記圧縮したデータを伸長する、ストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
記憶デバイスと、
前記ホストと前記記憶デバイスとの間においてデータ転送及びデータ処理を行うストレージコントローラと、を含み、
前記フロントエンドインタフェース及び前記データ圧縮システムは、前記ストレージコントローラ内に実装されている、ストレージシステム。
【請求項4】
請求項1に記載のストレージシステムであって、
複数の記憶デバイスを含むドライブ筐体と、
前記フロントエンドインタフェースを含み、前記ホストと前記ドライブ筐体との間においてデータ転送及びデータ処理を行うストレージコントローラと、を含み、
前記データ圧縮システムは前記ドライブ筐体内に実装されている、ストレージシステム。
【請求項5】
ストレージシステムにおいてデータを圧縮して格納するとき、ホストからみた前記ストレージシステムのリード性能への影響を抑制する方法であって、
前記データを第一の圧縮方法により圧縮して、圧縮データを生成し、
前記第一の圧縮方法による圧縮データの圧縮率から予め設定された計算方法により前記圧縮データの伸長時間を計算し、
前記伸長時間と予め設定された閾値とを比較し、
前記伸長時間が前記閾値より小さい場合に、前記第一の圧縮方法により前記データを圧縮したデータを出力し、
前記伸長時間が前記閾値以上である場合に、前記第一の圧縮方法より圧縮率が悪く、伸長する時間が短いことが分かっている第二の圧縮方法により前記データを圧縮したデータを出力する、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステムにおけるデータ圧縮に関する。
【背景技術】
【0002】
ストレージシステムにおいて、データを圧縮する技術は、システムの単位容量当たりのコスト(ビットコスト)を下げるために、重要な技術として注目されている。特に従来記憶デバイスとして用いられてきたハードディスクドライブ(Hard Disk Drive:HDD)に代わり、高速性に優れるフラッシュメモリを媒体とする半導体ドライブ(Solid State Drive:SSD)が近年広く用いられるようになってきている。データ圧縮技術は、SSDを搭載するストレージシステムのビットコストを下げる技術として、大変注目されている。
【0003】
一方、ストレージシステムは、データを格納する性能、即ちデータをストレージシステムへ書き込むライト性能も重要であるが、格納したデータを取り出す性能、即ちデータをストレージシステムから読み出すリード性能も大変重要である。データを格納するときに圧縮しておくと、当然ながら、ライト性能に影響を生じる。その後、圧縮した状態でデータを格納しておくため、データの取り出し時には圧縮データを復元(伸長)する必要があり、リード性能も影響を受ける。
【0004】
データを圧縮する計算方法(アルゴリズム)には、様々なバリエーションが考案されている。Lempel-Ziv(LZ)法、ハフマン符号などの可逆圧縮法と、画像や音声に用いられるJPEG、MPEGなどの非可逆圧縮法がある。ストレージシステムでは、格納したデータと同じデータを正確に取り出すことが求められるので、可逆圧縮法が用いられる。
【0005】
これらの圧縮方法では、データ及びアルゴリズムに依存して、元のデータの大きさに対する圧縮後のデータの大きさの割合、即ち圧縮率(圧縮後データの元データに対する大きさの割合)が様々に変化する。同一データに対して、それぞれのアルゴリズムにより圧縮率が異なるが、同一アルゴリズムでもデータが異なれば圧縮率が異なる。
【0006】
また圧縮率の他に、圧縮に要する計算処理量及び伸長に要する計算処理量も変化する。よって、CPUによるソフト処理や、ハードウェアで圧縮及び伸長する回路など、計算処理資源を与えた場合の、それぞれの圧縮に要する時間(圧縮時間)及び伸長に要する時間(伸長時間)も変化する。ストレージシステムのライト性能に与える影響は、この圧縮時間に依存し、リード性能に与える影響は伸長時間に依存する。
【0007】
特許文献1には、二種類の圧縮アルゴリズムを持つ圧縮回路をストレージシステムが用いるSSD内においた場合、SSD内のフラッシュメモリのアクセス性能に依存して、圧縮回路に備えた圧縮アルゴリズムを切り替える技術が開示されている。また特許文献2には、複数の圧縮アルゴリズムを準備し、データブロック毎に過去の履歴から伸長時間を予測して圧縮アルゴリズムを切り替える技術が開示されている。これらの技術により、ストレージシステムのリード性能、ライト性能を高めるように圧縮アルゴリズムを切り替えることができる。
【0008】
更に特許文献3には、データを一旦ある圧縮アルゴリズムで圧縮しライトコマンドを実行することでストレージシステムに格納した後、別の圧縮アルゴリズムで圧縮してみて圧縮率による重み付けスコアに応じて更にライトコマンドを実行する技術が開示されている。また特許文献4には、入力データの選択可能なすべての圧縮アルゴリズムによる圧縮率を求めた上、ストレージシステム中で利用できる演算量や容量に応じて、圧縮率と伸長速度から圧縮アルゴリズムを選択する技術も開示されている。
【0009】
しかし、特許文献1及び2の技術では、性能に応じて圧縮アルゴリズムが変わり、圧縮率が変わってしまう。圧縮率が高められるデータの時でも、圧縮アルゴリズムが変わってしまって、圧縮率が下がってしまう場合があり得る。また特許文献1の技術では、圧縮速度(圧縮時間)とフラッシュメモリのアクセス性能に基づいて、圧縮アルゴリズムを選択するので、ストレージシステムのリード性能に大きな影響を与える伸長時間を考慮することができない。
【0010】
更に、特許文献2の技術では、過去の履歴による伸長性能(伸長時間)予測に基づくため、現在のデータで過去の履歴と異なる伸長時間になった時に、対処できない。また特許文献3の技術では、伸長時間に関わらず、一旦ある圧縮アルゴリズムで圧縮したデータを別の圧縮アルゴリズムで圧縮し直してしまうため、やはり、ストレージシステムのリード性能に大きな影響を与える伸長時間を考慮することができない。
【0011】
特許文献4の技術では、圧縮率や伸長速度を選択可能なすべての圧縮アルゴリズムについて求めること、ストレージシステムの中で利用できる演算量や容量も考慮するなど複雑な処理により圧縮アルゴリズムを選択することになり、選択処理のオーバーヘッドが大きい。
【0012】
また特許文献4には、この選択処理のオーバーヘッドを圧縮率と伸長速度の間の関係を利用して低減するような技術は開示されていない。圧縮率と伸長速度は、伸長速度を速めるためには圧縮率が悪い(数値として大きい)アルゴリズムを選択し、伸長速度を速める必要がなければ、圧縮率が良い(数値として小さい)アルゴリズムを選択するとしている。伸長速度を速めようとすると(伸長時間を短縮しようとすると)、圧縮率が悪い(数値として大きい)アルゴリズムを選択するため、圧縮率が必ず悪くなってしまう。
【先行技術文献】
【特許文献】
【0013】
【文献】米国特許出願公開第2019/0205035号
【文献】米国特許第10346043号
【文献】米国特許第9952771号
【文献】米国特許出願公開第2017/0235774号
【発明の概要】
【発明が解決しようとする課題】
【0014】
ストレージシステムの性能のうち、リード性能に影響を与える伸長時間、及びこれを決定する伸長性能について考察すると、一般にストレージシステム内で、SSD等の記憶デバイスから所望の圧縮データを読み出す速度は、SSDの台数や、ストレージシステム内のSSDアクセス方式に依存するので、圧縮データや、圧縮率にはよらない一定の速度が期待される。
【0015】
伸長後データの単位時間当たりのデータ量で伸長性能を見た場合、圧縮率が良い(数値としては小さい)と、圧縮率に応じて伸長後のデータのサイズが拡大するので、伸長性能は高まる。よって、圧縮率の良いデータは伸長性能が高くなり、システムのリード性能を高めることが可能となる。
【0016】
以上から、複数の圧縮アルゴリズムを準備して選択する場合、圧縮率が良い(数値として小さい)圧縮アルゴリズムは、伸長時間も大きくなる場合が多いが、圧縮率が充分良ければ(数値として小さければ)、伸長データで見た伸長速度(伸長性能)は高く保てる可能性がある。しかし、圧縮率が悪い(数値と大きい)時には、伸長データでみた伸長速度(伸長性能)を高く保つことが難しく、ストレージシステムのリード性能に影響が出る場合がある。
【0017】
本発明は以上の観点を鑑みてなされたものであり、その目的はストレージシステムでデータを圧縮して格納するとき、ストレージシステムのリード性能への影響を抑制することである。
【課題を解決するための手段】
【0018】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下の通りである。ストレージシステムは、ホストと通信を行うフロントエンドインタフェースと、前記フロントエンドインタフェースが前記ホストから受信したデータを、記憶デバイスに格納する前に、圧縮する、データ圧縮システムと、を含む。前記データ圧縮システムは、前記データを第一の圧縮方法により圧縮して、圧縮データを生成し、前記第一の圧縮方法による圧縮データの圧縮率が予め定められた基準より良いか判定し、前記第一の圧縮方法による圧縮データの圧縮率が前記基準より良いと判定された場合に、前記第一の圧縮方法及び第二の圧縮方法において圧縮率が相対的に良い圧縮方法により前記データを圧縮したデータを出力し、前記第一の圧縮方法による圧縮データの圧縮率が前記基準と同等か悪いと判定された場合に、前記第一の圧縮方法及び第二の圧縮方法において圧縮率が相対的に悪い圧縮方法により前記データを圧縮したデータを出力する。
【0019】
本発明の他の態様に係るデータ圧縮システムは、データを第一の圧縮方法及び第二の圧縮方法により圧縮可能な、圧縮部と、前記第一の圧縮方法により圧縮されたデータの圧縮率が予め定められた基準より良いか判定する、判定部と、前記圧縮部により圧縮されたデータを出力する出力部と、を含む。前記判定部が前記第一の圧縮方法により圧縮されたデータの圧縮率が前記基準より良いと判定した場合に、前記出力部は、前記第一の圧縮方法及び第二の圧縮方法において圧縮率が相対的に良い圧縮方法により前記データを圧縮したデータを出力する。前記判定部が前記第一の圧縮方法により圧縮されたデータの圧縮率は前記基準と同じか、悪いと判定した場合に、前記出力部は、前記第一の圧縮方法及び第二の圧縮方法において圧縮率が相対的に悪い圧縮方法により前記データを圧縮したデータを出力する。
【発明の効果】
【0020】
本発明の一態様によれば、ストレージシステムでデータを圧縮して格納するとき、ストレージシステムのリード性能への影響を抑制できる。
【図面の簡単な説明】
【0021】
【
図1】
図1は、実施例1のデータの圧縮を行うデータ圧縮システムの例である。
【
図2】
図2は、実施例1のデータの圧縮を行った結果の圧縮データを伸長する、データ圧縮システムのうちのデータ伸長を行う部分である。
【
図3】
図3は、実施例1のデータの圧縮を行うフローチャートの例である。
【
図4】
図4は、実施例1のデータの伸長を行うフローチャートの例である。
【
図5】
図5は、実施例2のデータの圧縮を行うデータ圧縮システムの例である。
【
図6】
図6は、実施例2のデータの圧縮を行うフローチャートの例である。
【
図7】
図7は、実施例3のデータの圧縮を行うデータ圧縮システムの例である。
【
図8】
図8は、実施例3のデータの圧縮を行うフローチャートの例である。
【
図9】
図9は、データ圧縮システムを適用したストレージシステムの全体構成の例である。
【
図10】
図10は、データ圧縮システムを適用したストレージシステムの全体構成の別の例である。
【
図11】
図11は、LZ4、GZIP、LZMAの三つのアルゴリズムについて、圧縮サイズを変えた時の圧縮率の変化を観測した例である。
【発明を実施するための形態】
【0022】
以下、図面を参照しながら、本発明の幾つかの実施例を説明する。以下において、ストレージシステムにおけるデータ圧縮及び伸長について説明する。以下に説明するデータ圧縮システムは、二つのデータ圧縮方法によりデータ圧縮が可能であり、選択された圧縮方法により圧縮されたデータを出力する。
【0023】
伸長後データの単位時間当たりのデータ量で伸長性能を見た場合、圧縮率が良い(数値としては小さい)と、圧縮率に応じて伸長後のデータのサイズが拡大するので、伸長性能は高まる。よって、圧縮率の良いデータは伸長性能が高くなり、ストレージシステムのリード性能を高めることが可能となる。
【0024】
複数の圧縮アルゴリズムを準備して選択する場合、圧縮率が良い(数値として小さい)圧縮アルゴリズムは、伸長時間も大きくなる場合が多いが、圧縮率が充分良ければ(数値として小さければ)、伸長データで見た伸長速度(伸長性能)は高く保てる。しかし、圧縮率が悪い(数値と大きい)時には、伸長データでみた伸長速度(伸長性能)を高く保つことが難しく、ストレージシステムのリード性能に影響が出る場合がある。
【0025】
この圧縮率と伸長時間の関係を利用して、リード性能への影響を少なくするため、複数の圧縮方法から使用する圧縮方法を選択する場合、データに対し、圧縮率の大小と、伸長時間のアルゴリズムによる違いが必ず定まっていれば、ある一つのアルゴリズムによる圧縮方法の圧縮率を測定すれば、選択する圧縮方法を決定することが可能である。よって、そのような場合には、選択処理のオーバーヘッドも削減することが可能である。
【0026】
他の例として、ある一つの圧縮方法が、前半と後半に分かれていることがある。前半分のみ(第一の圧縮方法)を適用した圧縮率と伸長時間に対し、前半と後半の両方(第二の圧縮方法)を適用した圧縮率が良くなり、伸長時間が大きくなる。
【0027】
このような圧縮アルゴリズムの例の一つがLempel-Ziv-Markov chain-Algorithm(LZMA)である。LZMAは前半が改良型のLZ法であり、後半はエントロピ符号化により構成される。圧縮率は前半のLZ法で全体の5~8割程度の効果を得ることが多い。一方、伸長時間は、後半のエントロピ符号化の復号の計算量が多く、時間を要する。
【0028】
よって前半のLZ法の圧縮率を観測すると、圧縮率が良ければ(数値として小さければ)後半のエントロピ符号化を行っても伸長速度が圧縮率により増大するので、システムのリード性能に大きな影響とならない。しかし、前半のLZ法による圧縮率が悪ければ(数値として大きければ)、後半のエントロピ符号化の復号にかかる時間を相殺することができず、システムのリード性能が低下する恐れがある。
【0029】
また別の例としては、ある一つのアルゴリズムに対し、圧縮するデータの元のサイズを大きくし、大きなデータを圧縮するようにすれば、圧縮率が良くなる(数値として小さくなる)。例えば
図11は、LZ4、GZIP、LZMAの三つのアルゴリズムに関し、圧縮するサイズを変えて圧縮率の変化を観測した例である。いずれのアルゴリズムでも圧縮サイズを拡大することにより、圧縮率が良く(数値として小さく)なっている。
【0030】
これに対し、圧縮するサイズを大きくすれば、一般に元のデータに戻す伸長時間も大きくなる。よって、大きなサイズで圧縮しても圧縮率が充分良ければ(数値として充分小さければ)伸長時間の相殺がある程度可能であるが、圧縮率が悪ければ(数値として大きければ)伸長時間の相殺が困難であり、システムのリード性能に影響を与える場合がある。
【0031】
上述の観点に基づき、以下に説明するデータ圧縮システムは、データを第一の圧縮方法により圧縮しその圧縮率が予め定められた基準より良いか判定する。第一の圧縮方法による圧縮率が基準より良いと判定された場合に、データ圧縮システムは、第一の圧縮方法及び第二の圧縮方法において圧縮率が相対的に良い圧縮方法により圧縮したデータを出力する。上記第一の圧縮方法による圧縮率が基準と同等か悪いと判定された場合に、データ圧縮システムは、第一の圧縮方法及び第二の圧縮方法において圧縮率が相対的に悪い圧縮方法により圧縮したデータを出力する。
【0032】
圧縮率が良い場合には、伸長時間の増大があっても影響を抑えることができるので圧縮率を下げる必要はなく、圧縮率が悪い場合にも伸長時間の増大を抑えることができる。更に、ストレージシステムのリード性能に大きな影響を与える伸長時間を考慮することができる。また現在のデータの圧縮率を基に判断するので、過去の履歴と異なる伸長時間になっても対処することができる。
【実施例1】
【0033】
図1~
図4を用いて、実施例1を説明する。
図1は、実施例1に関わる、データ圧縮システムの構成の例である。
図1においてデータ圧縮システムは、第一圧縮部101、第二圧縮部102、圧縮率判定部103、データ選択部104、及び6種の信号線111~116を含む。第一圧縮部101及び第二圧縮部102は、データ圧縮システムの圧縮部に含まれ、データ選択部104は、データを出力する出力部である。
【0034】
第一圧縮部101は、入力信号線111にて該データ圧縮システム外部より入力されたデータを、第一の圧縮アルゴリズムを用いて、圧縮し、圧縮したデータを信号線112に出力する。
【0035】
これらの信号線111や112は、データを一連の信号パタンで伝送するシリアル伝送線であってもよいし、複数のデータビットを並列に伝送するパラレル伝送線であってもよい。また信号の伝送タイミングを制御する制御信号を
図1に図示しないサイドバンドの制御信号線で伝送することで伝送制御を行ってもよいし、データと制御信号とを同じ信号線で伝送してもよい。更にデータの伝達は、データを複数のパケットに分割して、パケット毎に伝送してもよいし、信号線を一定のタイミングで占有してデータを任意のタイミングで伝送してもよい。
【0036】
更に第一圧縮部101は、信号線113に入力信号線111にて入力されたデータの第一の圧縮アルゴリズムによる圧縮率(圧縮されたデータの大きさ/圧縮前のデータの大きさ)を出力する。この信号線113もシリアル伝送線であってもよいし、パラレル伝送線であってもよい。圧縮率を示す信号は、デジタル信号でなく、電圧レベル等で伝送するアナログ信号であってもよい。また、
図1に図示しない、信号伝送制御に関わるサイドバンド信号線を設けてもよいし、同一の信号線で圧縮率のデータと制御信号を伝送してもよい。
【0037】
第二圧縮部102は、信号線112に出力される第一圧縮部101によって圧縮されたデータを、第一の圧縮アルゴリズムと異なる第二の圧縮アルゴリズムによって、更に圧縮し、信号線114に出力する。
【0038】
圧縮率判定部103は、信号線113より入力される第一圧縮部101における圧縮率の情報を用いて、選択信号線115により、データ選択部104に対し出力する圧縮データを選択させる。具体的には、第一圧縮部101における圧縮率が予め定める閾値より良い(数値として、圧縮データの大きさ/圧縮前のデータの大きさが小さい)場合は、圧縮率判定部103は、信号線114により伝達される第二圧縮部102による圧縮データを選択させる。一方、第一圧縮部101における圧縮率が予め定める閾値と一致又はそれより悪い(数値として、圧縮データの大きさ/圧縮前のデータの大きさが大きい)場合は、圧縮率判定部103は、信号線112により伝達される第一圧縮部101における圧縮データを出力させる。
【0039】
データ選択部104は、選択信号線115により圧縮率判定部103により指定されたデータを選択し、出力信号線116に出力する。
【0040】
これらの信号線114、116は、信号線111、112と同様にシリアル伝送線であってもよいし、パラレル伝送線であってもよい。信号の伝送制御のための制御信号は、
図1に図示しないサイドバンド制御信号線で伝送してもよいし、データと制御信号を同じ信号線で伝送してもよい。
【0041】
更にデータは、パケット毎に伝達してもよいし、信号線を一定のタイミングで占有してデータを任意に伝送してもよい。また選択信号線115は、電圧レベルで選択結果を示してもよいし、一定のタイミングでパルス状の信号で選択結果を示してもよい。更に
図1には図示しない制御線を用いて、圧縮率判定部103からデータ選択を行うタイミングや信号線116にデータを出力するタイミングをデータ選択部104に指示してもよいし、データ選択部104の内部でデータを選択するタイミングやデータを出力するタイミングを制御する信号を生成してもよい。
【0042】
例えば、第一圧縮部101は、圧縮率判定部103からの指示に応答して、圧縮データを第二圧縮部102に伝達してもよい。圧縮率判定部103は、第一圧縮部101における圧縮率が予め定める閾値より良い場合に、圧縮データを第二圧縮部102に伝達することを第一圧縮部101に指示する。これにより、第一圧縮部101における圧縮率が悪い場合に不要な第二圧縮部102による圧縮処理を省くことができる。
図1のような構成で、データを圧縮することにより、第一圧縮部101にて圧縮した圧縮率が良い(数値としては小さい)場合には、更に第二圧縮部102によりデータを圧縮しても、データの伸長時には第一圧縮部101による圧縮率だけ復元データが増大するので、データを復元する時間は相対的に短くすることができる。
【0043】
また、第一圧縮部101にて圧縮した圧縮率が悪い(数値としては大きい)場合には、第二圧縮部102によるデータの圧縮を省略したデータを出力することができるので、データの伸長時には第一圧縮部101によるデータの圧縮に対する伸長だけをすればよく、データを復元する時間を短くすることが可能となる。
【0044】
図2は、
図1のデータ圧縮システムに更に付加して用いることのできる、圧縮されたデータを元データに復元するデータ伸長システムの例である。
図2において、該データ伸長部は、第一伸長部203と、第二伸長部201と、圧縮データ判定部204と、データ選択部202と、5種の信号線211~215とを含む。第一伸長部203は、第一の伸長アルゴリズムでデータを伸長する。
【0045】
第一伸長部203は、
図1の第一圧縮部101が用いた第一の圧縮アルゴリズムで圧縮されたデータを復元する。第二伸長部201は、第一の伸長アルゴリズムと異なる第二の伸長アルゴリズムで、データを伸長する。第二伸長部201は、
図1の第二圧縮部102が用いた第二の圧縮アルゴリズムで圧縮されたデータを伸長する。データ選択部202は、データ伸長部に入力された圧縮データが、
図1の第一圧縮部101で圧縮されたデータか、
図1の第二圧縮部102で圧縮されたデータかを判定する。
【0046】
第二伸長部201は、入力信号線211により入力された圧縮データを、
図1の第二圧縮部102が用いる第二の圧縮アルゴリズムで圧縮されたデータを、第二の伸長アルゴリズムを用いて伸長し、伸長したデータを信号線213に出力する。
【0047】
入力信号線211に入力する圧縮データは、
図1に示したデータ圧縮システムの圧縮データ出力信号線116の圧縮データ出力をそのまま入力してもよい。あるいは、
図1の信号線116に出力された圧縮データを、該データ圧縮システムの内部に
図1、
図2には図示しない圧縮データ記憶部を設けて、該圧縮データ記憶部において一旦記憶蓄積してから、信号線211に入力することも考えられる。このようにすることにより、例えば、
図2に示したデータ伸長システムが出力した伸長データを、圧縮する前の元のデータと一致しているか比較することで、
図1に示したデータ圧縮システムが正しくデータを圧縮したことを検査することができる。更には該データ圧縮システムの外部に一旦圧縮データを出力し、然る後に該データ圧縮システム外部から再び入力信号線211に入力することも考えられる。
【0048】
圧縮データ判定部204は、入力信号線211に入力された圧縮データが、
図1の第一圧縮部101により圧縮されたデータか、第二圧縮部102により圧縮されたデータかを判定し、判定結果をデータ選択信号線212に出力する。
【0049】
圧縮データ判定部204は、例えば、圧縮データに内包されるデータに基づいて、第一圧縮部101で用いる第一の圧縮アルゴリズムによる圧縮データか、第二圧縮部102で用いる第二の圧縮アルゴリズムによる圧縮データか、を判定する。判定した結果はデータ選択信号線212に出力される。例えば、第一のアルゴリズム及び/又は第二のアルゴリズムによる圧縮データのフォーマットが、常に所定のデータ(値)を含む場合、当該所定のデータは、圧縮アルゴリズムを識別する可能である。
【0050】
他の例において、圧縮データに、第一圧縮部101による圧縮データか、第二圧縮部102による圧縮データかを示すマーカ情報を付加してもよい。このマーカ情報は、
図1において第一圧縮部101及び第二圧縮部102において、それぞれの圧縮データ出力に付加してもよく、データ選択部104にて付加してもよい。また、データ選択部104が、
図1、
図2に図示しないマーカ情報信号線を介して、圧縮データ判定部204にマーカ情報を伝達してもよい。
【0051】
更には、該データ圧縮システムに
図1、
図2に図示しない圧縮データ記憶部を設ける場合には、マーカ情報を該圧縮データに付加して該圧縮データと同じく記憶蓄積してもよい。圧縮データを一旦該データ圧縮システム外部に出力し、然る後に該データ圧縮システム外部から信号線211に圧縮データを入力する場合には、該圧縮データにマーカ情報を付加して、該マーカ情報を該圧縮データと合わせて該データ圧縮システム外部に一旦出力し、然る後に該データ圧縮システム外部から信号線211により該マーカ情報と該圧縮データとを併せて入力してもよい。
【0052】
圧縮データ判定部204は、このようなマーカ情報がある場合には、該マーカ情報のみを受信すればよく、圧縮データそのものを受信する必要はない。更には圧縮データ全体のデータ形式において、圧縮方法が識別できるようにして、第一圧縮部101による圧縮データか、第二圧縮部102による圧縮データかを判定してもよい。
【0053】
例えば、第二伸長部201は、圧縮データ判定部204からの指示に応答して、入力された圧縮データを伸長してもよい。圧縮データ判定部204は、圧縮データが第二圧縮部102により圧縮されている場合、圧縮データを伸長することを第二伸長部201に指示する。これにより、正確な伸長が可能となると共に、不要な伸長処理を省略することができる。
【0054】
データ選択部202は、圧縮データ判定部204からデータ選択信号線212に出力された判定結果に従って信号線211又は信号線213を選択する。具体的には、信号線211に入力された圧縮データが第一圧縮部101により圧縮されたデータであると判定された場合、信号線211に入力された圧縮データが選択される。信号線211に入力された圧縮データが第二圧縮部102により圧縮されたデータだと判定された場合、第二伸長部201により伸長され、信号線213に出力された伸長データが選択される。データ選択部202は、選択したデータを、データ選択出力信号線214に出力する。
【0055】
データ選択部202は更に、第二伸長部201にてデータを伸長するのに時間を要する場合には、
図2に図示しない入力データバッファ等を含んでもよい。データ選択部202は、入力信号線211に入力された圧縮データ、及び圧縮データ判定部204によって判定され、データ選択信号線212に出力された判定結果をバッファに一旦記憶蓄積し、第二伸長部201からの伸長データが信号線213に出力されるまで待ち合わせを行ってもよい。
【0056】
第一伸長部203は、第一圧縮部101が用いる第一の圧縮アルゴリズムにより圧縮されたデータを復元する第一の伸長アルゴリズムを用いて、データ選択出力信号線214に出力されたデータを伸長し、伸長したデータを出力信号線215に出力する。
【0057】
これらの信号線211、213、214、215は、信号線111、112、114、116と同様にシリアル伝送線であってもよいし、パラレル伝送線であってもよい。信号の伝送制御のための制御信号は、
図2に図示しないサイドバンドの制御信号線で伝送してもよいし、データと制御信号を同じ信号線で伝送してもよい。
【0058】
更にデータはパケット毎に伝達してもよいし、信号線を一定のタイミングで占有してデータを任意に伝送してもよい。またデータ選択信号線212は、選択信号線115と同じく、電圧レベルで選択結果を示してもよいし、一定のタイミングでパルス状の信号で選択結果を示してもよい。更に
図2には図示しない制御線を用いて、圧縮データ判定部204から、データ選択を行うタイミングや信号線214にデータを出力するタイミングを、データ選択部202に指示してもよい。データ選択部202の内部でデータを選択するタイミングやデータを出力するタイミングを制御する信号を、生成してもよい。
【0059】
以上のように
図2のようなデータ伸長システムをデータ圧縮システムに付加すれば、
図1のような構成で、第一圧縮部101にて圧縮した圧縮率が良い(数値としては小さい)場合には、第一圧縮部101及び第二圧縮部102により圧縮したデータを正しく伸長することができる。また、第一圧縮部101にて圧縮した圧縮率が悪い(数値としては大きい)場合には、第二圧縮部102によるデータの圧縮を省略した第一圧縮部101のみによる圧縮データを、正しく伸長することができる。
【0060】
図3は、実施例1に関わるデータを圧縮する方法のフローチャートを示す。
図3において、ステップ301において、第一圧縮部101は、圧縮するデータの読み込みを行う。次にステップ302において、第一圧縮部101は、第一の圧縮アルゴリズムを用いてステップ301において読み込んだ入力データを圧縮する。ステップ303において、第一圧縮部101は、ステップ302において入力データを圧縮した圧縮率を計算する。
【0061】
ステップ304において、圧縮率判定部103は、ステップ303において計算した圧縮率が予め定める閾値より小さい(圧縮率として良い)かどうか判定する。予め定める閾値より小さい(圧縮率として良い)場合には(304:YES)、フローは更にステップ306に進む。第二圧縮部102は、ステップ302において第一の圧縮アルゴリズムで圧縮した圧縮データを、更に第二の圧縮アルゴリズムで圧縮する。更にステップ307において、データ選択部104は、第二の圧縮アルゴリズムで圧縮したデータを出力する。
【0062】
ステップ304において、ステップ303において計算した圧縮率が予め定める閾値より大きい(圧縮率として悪い)場合には(304:NO)、フローはステップ305に進む。ステップ305において、データ選択部104は、第一の圧縮アルゴリズムにより圧縮したデータを出力する。
【0063】
上述のように、本実施例のデータ圧縮システムにおいて、前記第一の圧縮方法は第一の圧縮アルゴリズムによりデータを圧縮し、第二の圧縮方法は、第一の圧縮アルゴリズムによりデータを圧縮した後に、さらに第二の圧縮アルゴリズムにより圧縮する。
【0064】
以上のようなデータを圧縮する方法により、第一の圧縮アルゴリズムにて圧縮した圧縮率が良い(数値としては小さい)場合には、更に第二の圧縮アルゴリズムによりデータを圧縮しても、データの伸長時には第一の圧縮アルゴリズムによる圧縮率だけ復元データが増大するので、データを復元する時間は相対的に短くすることができる。
【0065】
また、第一の圧縮アルゴリズムにて圧縮した圧縮率が悪い(数値としては大きい)場合には、第二の圧縮アルゴリズムによるデータの圧縮を省略した圧縮データを出力するので、データの伸長時には第一の圧縮アルゴリズムによるデータの圧縮に対する伸長だけをすればよく、データを復元する時間を短くすることが可能となる。また第一の圧縮アルゴリズムだけで圧縮するか、第一の圧縮アルゴリズムに加えて第二の圧縮アルゴリズムを用いて圧縮するかを、第一の圧縮アルゴリズムの圧縮率だけで判定できる。第二の圧縮アルゴリズムによる圧縮率は判定のために求める必要はない。
【0066】
図4は、
図3のようなデータを圧縮する方法で圧縮したデータを復元するデータの伸長方法のフローチャートである。
図4において、まずステップ401において、圧縮データ判定部204は、圧縮データを読み込む。次にステップ402において、圧縮データ判定部204は、読み込んだ圧縮データが、
図3のステップ302にて圧縮された第一の圧縮アルゴリズムによる圧縮データか、ステップ306にて圧縮された第二の圧縮アルゴリズムによる圧縮データかを判定する。
【0067】
ステップ402は、例えば、圧縮データに内包されるデータに基づいて、
図3のステップ302で用いる第一の圧縮アルゴリズムによる圧縮データか、ステップ306で用いる第二の圧縮アルゴリズムによる圧縮データか、を判定する。例えば、第一のアルゴリズム及び/又は第二のアルゴリズムによる圧縮データのフォーマットが、常に所定のデータ(値)を含む場合、当該所定のデータは、圧縮アルゴリズムを識別することが可能である。
【0068】
または、第一圧縮部101による圧縮データか、第二圧縮部102による圧縮データかを示すマーカ情報を参照することで、圧縮データの圧縮方法を特定することもできる。データ伸長システムは、圧縮データに内包されるデータや、新たに追加されたマーカ情報、または圧縮データ全体のデータ形式で示される場合も含め、圧縮されたデータに付与されている識別情報に基づいて、第一の圧縮方法及び第二の圧縮方法のいずれの方法により圧縮されたか特定する。
【0069】
受信したデータが、ステップ306にて圧縮された第二の圧縮アルゴリズムによる圧縮データであると判定されると(402:第二圧縮)、ステップ403において、第二伸長部201が、入力された第二の圧縮アルゴリズムによる圧縮データを伸長し、第一の圧縮アルゴリズムで圧縮されたデータを復元する。ステップ404において、第一伸長部203が、復元された第一の圧縮アルゴリズムで圧縮されたデータを伸長して、圧縮前の元のデータを復元する。
【0070】
ステップ306にて圧縮された第二の圧縮アルゴリズムによる圧縮データであると判定されると(402:第一圧縮)、ステップ403がスキップされる。ステップ404において、第一伸長部203が、第二伸長部201により伸長がスキップされた圧縮データを伸長して、圧縮前の元のデータを復元する。
【0071】
以上のようなデータを伸長する方法によって、
図3のようなデータを圧縮する方法で、第一の圧縮アルゴリズムにて圧縮した圧縮率が良い(数値としては小さい)場合に、第一の圧縮アルゴリズム及び第二の圧縮アルゴリズムにより圧縮したデータを、正しく伸長することができる。さらに、第一の圧縮アルゴリズムにて圧縮した圧縮率が悪い(数値としては大きい)場合に、第二の圧縮アルゴリズムによる圧縮をせずに第一の圧縮アルゴリズムよって圧縮したデータを、正しく伸長することができる。
【0072】
上記データ圧縮システムにおける機能部、具体的、圧縮部、圧縮率判定部、伸長部、圧縮データ判定部等は、プログラムに従って動作する1以上のプロセッサ及び/又は所定の演算を行うように構成された論理回路により実装することができる。この点は他に実施例において同様である。
【実施例2】
【0073】
次に、
図5、
図6により、本発明の実施例2を説明する。
図5は、実施例2に関わる、データ圧縮システムの構成の例である。
図5において、データ圧縮システムは、データ長A毎圧縮部501、データ長B毎圧縮部502、圧縮率判定部503、データ選択部504と、6種の信号線511~516を含む。データ長A毎圧縮部501及びデータ長B毎圧縮部502が、データ圧縮システムの
データ圧縮部に含まれ、データ選択部504はデータを出力する出力部に含まれる。
【0074】
データ長A毎圧縮部501は、入力信号線511により入力されたデータを、予め定めるデータ長A毎に区切って複数セグメントを生成し、各セグメントをそれぞれ予め定める圧縮アルゴリズムで圧縮する。圧縮した結果の圧縮データは、出力信号線512に出力される。更に、データ長A毎圧縮部501は、信号線513により、圧縮率判定部503に、圧縮した結果の圧縮率の情報を伝達する。
【0075】
データ長B毎圧縮部502は、入力信号線511により入力されたデータを、予め定める、データ長Aより短いデータ長B毎に区切って複数セグメントを生成し、各セグメントをそれぞれ、データ長A毎圧縮部501と同じ圧縮アルゴリズムを用いて、圧縮する。これにより、データ長B毎圧縮部502による圧縮データの伸長時間は、データ長A毎圧縮部501による圧縮率が悪い(数値として大きい)場合、データ長A毎圧縮部501による圧縮データの伸長時間より短いことが期待される。
【0076】
圧縮率判定部503は、信号線513によりデータ長A毎圧縮部501による圧縮結果の圧縮率の情報を受信し、データ長A毎圧縮部501の圧縮結果の圧縮率が予め定める閾値より良ければ(数値として小さければ)、データ長A毎圧縮部501による圧縮データを、選択するように、選択信号線515にデータ選択部504に対する選択指示信号を出力する。
【0077】
データ長A毎圧縮部501の圧縮結果の圧縮率が予め定める閾値と一致又はそれより悪ければ(数値として大きければ)、圧縮率判定部503は、データ長B毎圧縮部502による圧縮データを選択するように、選択信号線515にデータ選択部504に対する選択指示信号を出力する。 データ選択部504は、圧縮率判定部503からのデータ選択信号線515に出力される選択指示信号に従って、データ長A毎圧縮部501の出力信号線512に出力される圧縮データか、データ長B毎圧縮部502の出力信号線514に出力される圧縮データかを選択して、出力信号線516に出力する。
【0078】
上述のように圧縮方法を選択することで、データ圧縮率を高めつつ、リード性能への影響を低減できる。なお、データ長A毎圧縮部501による圧縮率が良い場合にも、データ長B毎圧縮部502による圧縮データの伸長時間が、データ長A毎圧縮部501による圧縮データの伸長時間より短くてもよい。リード性能への影響が許容される小さい範囲で高いデータ圧縮率を実現できる。
【0079】
例えば、データ長B毎圧縮部502は、圧縮率判定部503からの指示に応答して、入力されたデータを圧縮してもよい。圧縮率判定部503は、データ長A毎圧縮部501における圧縮率が予め定める閾値と一致又は悪い場合に、データ長B毎圧縮部502に圧縮を指示する。これにより、第一圧縮部101における圧縮率が良い場合に不要なデータ長B毎圧縮部502による圧縮処理を省くことができる。
【0080】
信号線511、512、514、516は、実施例1の
図1の信号線111、112等と同様に、シリアル伝送線であってもよいし、パラレル伝送線であってもよい。信号の伝送制御のための制御信号は、
図5に図示しないサイドバンド制御信号線で伝送してもよいし、データと制御信号を同じ信号線で伝送してもよい。更にデータはパケット毎に伝達してもよいし、信号線を一定のタイミングで占有してデータを任意に伝送してもよい。
【0081】
またデータ長A毎圧縮部501による圧縮結果の圧縮率の情報が出力される信号線513は、実施例1における
図1の信号線113と同じく、シリアル伝送線であってもよいし、パラレル伝送線であってもよい。あるいはデジタル信号でなく、電圧レベル等で伝送するアナログ信号であってもよい。
【0082】
また信号伝送制御に関わる
図5に図示しないサイドバンド信号線を別途設けてもよいし、同一の信号線で圧縮率の情報と制御信号を伝送してもよい。更にデータ選択信号線515は、実施例1の
図1の選択信号線115と同じく、電圧レベルで選択結果を示してもよいし、一定のタイミングでパルス状の信号で選択結果を示してもよい。
【0083】
更に
図5には図示しない制御線を用いて、圧縮率判定部503から圧縮データの選択を行うタイミングや信号線516に圧縮データを出力するタイミングをデータ選択部504に指示してもよい。データ選択部504の内部で圧縮データを選択するタイミングや圧縮データを出力するタイミングを制御する信号を生成してもよい。
【0084】
上述のように、実施例2は、データ長A毎圧縮部501による長いデータ長Aで圧縮した場合に圧縮率が良ければ(数値として小さければ)、伸長時間が、圧縮率が良い分だけ短くなるので、データ長Aで圧縮した結果を採用する。一方、長いデータ長Aで圧縮した場合に圧縮率が悪ければ(数値として大きければ)、短いデータ長Bで圧縮した結果を採用する。これにより、長いデータ長を悪い(数値として大きい)圧縮率で圧縮したことによる伸長時間の増大を回避することが可能となる。
【0085】
さらに、一般に同一のアルゴリズムで圧縮する場合、長いデータ長Aで圧縮した圧縮率と、短いデータ長Bで圧縮した圧縮率は、長いデータ長Aで圧縮した圧縮率の方が良い(数値として小さい)性質があることが知られている。
図11には、三つのアルゴリズムLZ4、GZIP、LZMAについて、その性質が示されている。そこでこの圧縮アルゴリズムの一般的な性質を利用して、長いデータ長Aで圧縮率だけ求めて、長いデータ長Aで圧縮するか、短いデータ長Bで圧縮するかを決めることができる。短いデータ長Bで圧縮した圧縮率は、どちらのデータ長で圧縮するかを決めるためには、求める必要はない。
【0086】
図6は、実施例2に関わるデータを圧縮する方法のフローチャートを示す。
図6において、ステップ601において、データ長A毎圧縮部501は、圧縮するデータの読み込みを行う。次にステップ602において、データ長A毎圧縮部501は、予め定めるデータ長A毎に、予め定める圧縮アルゴリズムを用いて圧縮する。ステップ603において、データ長A毎圧縮部501は、ステップ602において入力データを圧縮した圧縮率を計算する。
【0087】
ステップ604において、圧縮率判定部503は、ステップ603において計算した圧縮率が予め定める閾値より小さい(圧縮率として良い)かどうか判定する。予め定める閾値以大の(圧縮率として悪い)場合には(604:NO)、フローはステップ606に進む。ステップ606において、データ長B毎圧縮部502は、予め定める、ステップ602で用いたデータ長Aより短いデータ長B毎に、ステップ602で用いた圧縮アルゴリズムと同じ圧縮アルゴリズムで圧縮する。更にステップ607にて、データ選択部504は、ステップ606で圧縮したデータを出力する。
【0088】
ステップ604において、ステップ603において計算した圧縮率が予め定める閾値より小さい(圧縮率として良い)場合には(604:YES)、フローはステップ605に進む。ステップ602において、データ選択部504は、データ長A毎に圧縮したデータを出力する。
【0089】
上記データ圧縮方法は、長いデータ長Aで圧縮した場合に圧縮率が良ければ(数値として小さければ)、伸長した場合に伸長時間が圧縮率が良い分だけ短くなるので、データ長Aで圧縮した結果を採用する。一方、長いデータ長Aで圧縮した場合に圧縮率が悪ければ(数値として大きければ)、短いデータ長Bで圧縮した結果を採用する。これにより、長いデータ長を悪い(数値として大きい)圧縮率で圧縮したことによる伸長時間の増大を回避することが可能となる。
【0090】
上述のように、データ圧縮システムにおける第一の圧縮方法は、予め設定された圧縮アルゴリズムにより、予め設定された第一のデータ長(データ長A)毎に前記データを圧縮し、第二の圧縮方法は、同じ圧縮アルゴリズムにより、第一のデータ長より短い予め定める第二のデータ長(データ長B)毎に前記データを圧縮する。なお、圧縮データの伸長部(不図示)は、圧縮データ長(データ長A又はデータ長B)によらず、同様の方法により、圧縮された各セグメントを伸長し、元のセグメントを復元することができる。
【実施例3】
【0091】
次に、
図7、
図8により、実施例3を説明する。
図7は、実施例3に関わる、データ圧縮システムの構成の例である。
図7においてデータ圧縮システムは、圧縮a圧縮部701、圧縮b圧縮部704、圧縮率計算部702、伸長時間計算・判定部703、データ選択部705、6種の信号線711~716を含む。圧縮a圧縮部701及び圧縮b圧縮部704は、データ圧縮システムの圧縮部に含まれ、圧縮率計算部702及び伸長時間計算・判定部703は判定部に含まれ、データ選択部705はデータを出力する出力部である。
【0092】
圧縮a圧縮部701は、予め定める圧縮アルゴリズムaを用いてデータを圧縮する。圧縮b圧縮部704、予め定める、圧縮アルゴリズムaより圧縮率が悪く(数値として大きく)、伸長する時間が短いことが分かっている圧縮アルゴリズムbを用いて圧縮する。圧縮率計算部702は、圧縮a圧縮部701の圧縮結果を受信し、その圧縮率を計算する。伸長時間計算・判定部703は、圧縮率計算部702により計算された圧縮率を基に伸長時間を計算し、予め定める閾値(基準時間)より長いか短いか判定する。データ選択部705は、出力する圧縮データを選択する。
【0093】
圧縮a圧縮部701は、入力信号線711により入力されたデータを、予め定める圧縮アルゴリズムaで圧縮し、圧縮した結果の圧縮データを出力信号線712に出力する。圧縮率計算部702は、信号線712に出力された圧縮データを受信し、その圧縮率を計算する。圧縮率を計算した結果は、信号線713により伸長時間計算・判定部703に伝達される。
【0094】
圧縮率の計算には、元の入力データの大きさが必要である。例えば、圧縮部701は、
図7に図示しない別の信号線を用いて圧縮率計算部702に元の入力データの大きさを伝えてもよいし、圧縮データと同じ信号線712を用いて伝えてもよい。または、圧縮a圧縮部701は、入力データを予め定めるデータ長に区切って圧縮し、圧縮率計算部702は、そのデータ長の値を用いて、圧縮率を計算してもよい。圧縮率計算部702は、圧縮率の計算のため、圧縮データ自体を受信してもよい。圧縮率の計算のためには圧縮データの大きさがわかればよいので、圧縮a圧縮部701が圧縮データの大きさの情報を抽出し、抽出した圧縮データの大きさの情報のみを圧縮率計算部702に伝達し、圧縮データ自体は伝達しなくてもよい。
【0095】
圧縮b圧縮部704は、予め定める、圧縮アルゴリズムaより圧縮率が悪く(数値として大きく)、伸長する時間が短いことが分かっている圧縮アルゴリズムbを用いて、信号線711に入力されたデータを圧縮する。
【0096】
伸長時間計算・判定部703は、信号線713により、圧縮率計算部702において計算された圧縮率の情報を受信し、受信した圧縮率の情報を基に、圧縮a圧縮部701にて圧縮されたデータの伸長時間を計算する。そして、計算したデータの伸長時間を、予め定める閾値と比較する。
【0097】
計算した伸長時間が予め定めた閾値より短い場合には、伸長時間計算・判定部703は、圧縮a圧縮部701による圧縮データを選択するように、データ選択部705に対し、信号線714において、データ選択信号を出力する。計算した伸長時間が予め定めた閾値より長い場合には、伸長時間計算・判定部703は、圧縮b圧縮部704による圧縮データを選択するように、データ選択部705に対し、信号線714において、データ選択信号を出力する。
【0098】
データ選択部705は、伸長時間計算・判定部703より信号線714を介して入力されたデータ選択信号に従って、圧縮a圧縮部701で圧縮された圧縮データか、圧縮b圧縮部704で圧縮された圧縮データのいずれかを選択して、出力信号線716に出力する。
【0099】
上述のように、本実施例のデータ圧縮システムは、第一の圧縮方法は、圧縮アルゴリズムaによりデータを圧縮し、第二の圧縮方法は、圧縮アルゴリズムbによりデータを圧縮する。圧縮アルゴリズムbは、圧縮アルゴリズムaより圧縮率が悪く、圧縮アルゴリズムaによる圧縮データの伸長時間より伸長時間が短い。また、データ圧縮システムは、圧縮率に基づき伸長時間を推定し、その伸長時間と閾値とを比較することにより、圧縮率が所定の基準を超えているか判定する。
【0100】
以上において、信号線711、712、714、716は、実施例1の
図1の信号線111、112等と同様に、シリアル伝送線であってもよいし、パラレル伝送線であってもよい。信号の伝送制御のための制御信号は、
図7に図示しないサイドバンド制御信号
線によって伝送してもよいし、データと制御信号を同じ信号線で伝送してもよい。
【0101】
更にデータは、パケット毎に伝達してもよいし、信号線を一定のタイミングで占有してデータを任意に伝送してもよい。圧縮率計算部702による圧縮率の情報を伝送する信号線713は、実施例1における
図1の信号線113と同じく、シリアル伝送線であってもよいし、パラレル伝送線であってもよい。あるいはデジタル信号でなく、電圧レベル等で伝送するアナログ信号であってもよい。また、
図7に図示しない信号伝送制御に関わるサイドバンド信号線を設けてもよいし、同一の信号線で圧縮率の情報と制御信号を伝送してもよい。
【0102】
更にデータ選択信号を伝送する信号線714は、実施例1の
図1の選択信号線115と同じく、電圧レベルで選択結果を示してもよいし、一定のタイミングでパルス状の信号で選択結果を示してもよい。更に
図7には図示しない制御線を用いて、伸長時間計算・判定部703が、圧縮データの選択を行うタイミングや信号線716に圧縮データを出力するタイミングを、データ選択部705に指示してもよい。データ選択部705の内部で圧縮データを選択するタイミングや圧縮データを出力するタイミングを制御する信号を生成してもよい。
【0103】
上述のように、圧縮a圧縮部701が圧縮アルゴリズムaで圧縮した結果について、圧縮率計算部702が圧縮率を計算する。さらに、圧縮率の計算結果に基づいて、伸長時間計算・判定部703が伸長時間の計算を行って判定する。これにより、圧縮アルゴリズムaで圧縮した結果を伸長した場合に伸長時間が予め定める閾値より短いことを確認して、圧縮a圧縮部701で圧縮した結果の圧縮データを出力することができる。
【0104】
また、圧縮a圧縮部701において圧縮アルゴリズムaで圧縮した場合に、伸長時間が予め定める閾値以上であることが分かった場合には、圧縮システムは、圧縮アルゴリズムaで圧縮した場合より伸長時間が短いことが分かっている圧縮アルゴリズムbで圧縮する圧縮b圧縮部704にて圧縮した結果を採用する。これにより、伸長時間の増大を回避することが可能となる。
【0105】
さらに、圧縮アルゴリズムaによる圧縮結果を用いるか、圧縮アルゴリズムbによる圧縮結果を用いるかは、圧縮アルゴリズムaで圧縮した結果の圧縮率、及びそれに基づく伸長時間のみを計算すればよい。圧縮アルゴリズムbについては、圧縮アルゴリズムaよりも圧縮率が悪く(数値として大きく)、伸長時間が短いことが分かっているので、どちらの圧縮アルゴリズムで圧縮した結果を持ちいるかの判定のためには、求める必要はない。
【0106】
図8は、実施例3に関わるデータを圧縮する方法のフローチャートを示す。
図8において、ステップ801において、圧縮a圧縮部701は、圧縮するデータの読み込みを行う。次にステップ802において、圧縮a圧縮部701は、予め定める圧縮アルゴリズムaを用いて圧縮する。ステップ803において、圧縮率計算部702は、ステップ802において入力データを圧縮アルゴリズムaで圧縮した圧縮率を計算する。ステップ804において、伸長時間計算・判定部703は、ステップ803において計算した入力データを圧縮アルゴリズムaで圧縮した圧縮利率に基づき、伸長に要する時間を計算する。
【0107】
ステップ805において、伸長時間計算・判定部703は、ステップ804において計算した伸長時間が予め定める閾値より短いかどうか判定する。予め定める閾値より短い場合には(805:YES)、フローはステップ806に進む。ステップ806において、データ選択部705は、ステップ802で圧縮a圧縮部701が圧縮したデータを出力する。
【0108】
ステップ805において、ステップ804において計算した伸長時間が予め定める閾値より長い場合には(805:NO)、フローはステップ807に進む。圧縮b圧縮部704は、予め定める、ステップ802で用いたアルゴリズムaより圧縮率が悪く(数値として大きく)、伸長時間が短い圧縮アルゴリズムbで、ステップ801で読み込んだ入力データを圧縮する。ステップ808において、データ選択部705は、ステップ807で圧縮b圧縮部704が圧縮したデータを出力する。
【0109】
以上のようなデータ圧縮方法は、ステップ802において圧縮アルゴリズムaで圧縮した結果について、ステップ803にて圧縮率を計算し、圧縮率の計算結果に基づいてステップ804において伸長時間の計算を行って判定する。これにより、圧縮アルゴリズムaで圧縮した結果を伸長した場合に、伸長時間が予め定める閾値より短いことを確認して、圧縮した結果の圧縮データを出力することができる。
【0110】
また、上記の圧縮方法は、ステップ802において圧縮アルゴリズムaで圧縮した結果を伸長した場合に、伸長時間が、予め定める閾値より長いことが分かった場合には、ステップ807にて、圧縮アルゴリズムaで圧縮した場合より伸長時間が短いことが分かっている圧縮アルゴリズムbで圧縮した結果を採用する。これにより、伸長時間の増大を回避することが可能となる。
【実施例4】
【0111】
図9は、上記実施例にかかるデータ圧縮システムを適用したストレージシステムの全体構成の例である。
図9においてストレージシステム1001は、データ転送及びデータ処理を行うストレージコントローラ1002と、ドライブ筐体(ドライブボックス)1003とを含む。ストレージコントローラ1002は、フロントエンドインタフェース(I/F)部1011、CPU1012、バックエンドI/F部1014、及び上記実施例にかかるデータ圧縮システム1010を含む。
図9の構成例において、データ圧縮システム1010はストレージコントローラ1002に実装されている。
【0112】
フロントエンドI/F部1011は、図示しないホスト計算機からストレージシステム1001に対する要求を受信し、結果を送信する。CPU1012は、ストレージシステム1001の全体を制御する。バックエンドI/F部1014は、ドライブ筐体1003と接続する。
【0113】
ドライブ筐体1003は、ストレージコントローラ1002と接続するドライブI/F部1021と、不揮発半導体記憶装置SSD(Solid State Drive)1022A~G、これらを収容する筐体構造を含む。SSDはドライブ筐体1003に搭載される記憶デバイスの例である。
【0114】
図9は、7個のSSD1022A~1022Gを図示しているが、SSDの数は7個に限らず、任意な数でよい。
図9は一つのみのドライブI/F部1021図示しているが、二つのドライブI/F部を実装し、2ポートを有する各SSD1022A~1022Gを、二つのドライブI/F部それぞれに接続してもよい。さらには、2個以上のドライブ筐体1003を設けてもよい。
【0115】
ストレージコントローラ1002の数も、1個に限らず2個以上でもよい。ストレージコントローラ1002の内部構成要素それぞれの数は、
図9に示すように1つに限らず、それぞれ2以上のフロントエンドI/F部1011、CPU1012、メモリ1013、バックエンドI/F部1014、及びデータ圧縮システム1010が実装されてもよい。
【0116】
更には、
図9は、ストレージコントローラ1002とドライブ筐体1003を分けて図示しているが、これを分けなくともよい。この場合、複数のドライブ筐体1003が実装される場合、高々1個のドライブ筐体1003とストレージコントローラ1002を融合し、残りのドライブ筐体1003は、
図9に図示した構成と同様の形態でストレージコントローラ1002に接続すればよい。
【0117】
データ圧縮システム1010は、CPU1012を介して、必ずメモリ1013から圧縮データを取得し、伸長データをメモリ1013に格納してもよい。または、データ圧縮システム1010は、フロントエンドI/F部1011を通じ、ホスト計算機から受信したデータをメモリ1013に格納することなく、直接受け取って圧縮してもよい。
【0118】
データ圧縮システム1010は、バックエンドI/F部1014を通じ、圧縮したデータをメモリ1013に格納することなく、直接SSD1022A~1022Gに格納してもよく、SSD1022からメモリ1013に格納することなく直接圧縮データを取り出して、伸長してもよい。データ圧縮システム1010は、伸長したデータを、メモリ1013に格納することなく、フロントエンドI/F部1011を通じ、直接ホスト計算機に返送してもよい。
【0119】
図10は、上記実施例にかかるデータ圧縮システムを適用したストレージシステムの全体構成の別の例である。
図10では、データ圧縮システム1120は、ストレージコントローラ1102ではなく、ドライブ筐体1103の内部にある。即ち、ストレージコントローラ1102は、フロントエンドI/F部1111、CPU1112、メモリ1113、バックエンドI/F部1114を含む。ドライブ筐体1103は、ドライブI/F部1121、データ圧縮システム1120、SSD1122A~1122G、及びこれらを収容するハウジングを含む。
【0120】
図10が示す構成において、ストレージコントローラ1102、ドライブ筐体1103、フロントエンドI/F部1111、CPU1112、メモリ1113、バックエンドI/F部1114、ドライブI/F部1121、データ圧縮システム1120それぞれの数は高々一つ、SSD1122A~1122Gは高々7個である。しかし、これら構成要素それぞれその数は限定されず、
図9に示す構成と同様に、任意である。またストレージコントローラ1102とドライブ筐体1103を特に分けなくともよく、融合してもよいことも
図9の構成例と同様である。
【0121】
図10のようにデータ圧縮システム1120をドライブ筐体1103の内部に実装する構成において、ホスト計算機から受信したデータは、ストレージコントローラ1102において所定の処理が実施された後、ドライブI/F部1121を通じ直接データ圧縮システム1120に転送される。データ圧縮システム1120は、データを圧縮した後、直接SSD1122A~1122Gに格納する。
【0122】
またSSD1122A~1122Gに圧縮したデータを格納した圧縮データを、伸長する時には、SSD1122A~1122Gから圧縮データをストレージコントローラ1102に一旦送ることなく、データ圧縮システム1120がSSD1122A~1122Gから圧縮データを受信する。データ圧縮システム1120が圧縮データを伸長した後、データ圧縮システム1120からドライブI/F部1121を通じて、直接ストレージコントローラ1102に伸長データが転送される。
【0123】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0124】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード等の記録媒体に置くことができる。
【0125】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【符号の説明】
【0126】
101…第一圧縮部
102…第二圧縮部
103…圧縮率判定部
104、202、504、705…データ選択部
201…第二伸長部
203…第一伸長部
204…圧縮データ判定部
501…データ長A毎圧縮部
502…データ長B毎圧縮部
503…圧縮率判定部
701…圧縮a圧縮部
702…圧縮率計算部
703…伸長時間計算・判定部
704…圧縮b圧縮部