(57)【要約】【課題】ホスト機器からホスト機器に接続されて用いられるＳＳＤやＵＳＢフラッシュメモリなどの記憶装置へのデータ転送において、ホスト機器と記憶装置とのインターフェースの速度の限界及び記憶装置の備える記憶媒体の書き込み及び読み出し速度の限界等により、その転送速度に限界がある。【解決手段】ホスト機器２の備えるデータ圧縮対応ドライバにより書き込みデータを圧縮し、圧縮されたデータをＳＳＤ１の備える記憶部１３へと書き込むことで、ホスト機器２とＳＳＤ１との接続経路の伝送帯域を有効に活用することが可能となる。また、ＳＳＤ１の備える記憶部１３を有効に活用することが可能となる。【選択図】図１
2012093886.tif 000002
【特許請求の範囲】
【請求項１】
ホスト機器に接続される記憶装置へ前記ホスト機器がデータを書き込むに際して、前記データを圧縮して圧縮データとするデータ圧縮手段と、
前記圧縮データを前記記憶装置へ書き込むデータ書き込み手段と、を備えるホスト機器と、
前記ホスト機器より入力される前記圧縮データを保存する記憶部を備える前記記憶装置と、
を備えることを特徴とするデータ保存システム。
【請求項２】
前記記憶部は、一定量のデータが保存される一又は複数のデータブロックを備え、
前記記憶装置は、前記データブロックに保存されるデータが前記圧縮データか前記データ圧縮手段により圧縮されていない非圧縮データかを管理するデータ圧縮管理テーブルを備えることを特徴とする請求項１に記載のデータ保存システム。
【請求項３】
前記記憶装置は、
前記圧縮データを展開するデコーダ回路を備えることを特徴とする請求項１又は２に記載のデータ保存システム。
【請求項４】
ホスト機器にインストールされるデバイスドライバであって、
前記ホスト機器に接続される記憶装置へ前記ホスト機器がデータを書き込むに際して、前記データを圧縮して圧縮データとするデータ圧縮手段と、
前記圧縮データを前記記憶装置へ書き込むデータ書き込み手段と、
を備えることを特徴とするデバイスドライバ。
【請求項５】
ホスト機器に接続される記憶装置であって、
一定量のデータが保存される一又は複数のデータブロックを備える記憶部と、
前記データブロックに保存されるデータが前記ホスト機器の備えるデータ圧縮手段により圧縮されたデータである圧縮データか前記データ圧縮手段により圧縮されていない非圧縮データかをフラグにより管理する管理テーブルと、
前記圧縮データを展開するデコーダ回路と、
を備えることを特徴とする記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト機器と記憶装置からなるデータ保存システムに関する。特に、データ保存の高速化及び効率化に関する。
【背景技術】
【０００２】
ホスト機器からホスト機器に接続されて用いられるＳｏｌｉｄＳｔａｔｅＤｒｉｖｅ（以下、ＳＳＤと略記する）及びＵＳＢフラッシュメモリなどの記憶装置へのデータ転送において、ホスト機器と記憶装置とのインターフェースの速度の限界及び記憶装置の備える記憶媒体の書き込み及び読み出し速度の限界等により、転送速度に限界がある。
【０００３】
ホスト機器側で書き込むデータを圧縮して記憶装置へ転送し、記憶装置の備えるデコーダ回路で圧縮されたデータを展開する手段が特許文献１に開示されている。また、データ圧縮エンジン及びデータ展開エンジンを備える記憶装置が特許文献２に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４０８４９３７号
【特許文献２】特表第２００５−５２２８０３号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に係る技術には、デコーダ回路により展開されたデータを記憶装置の備える記憶媒体への書き込むため、記憶媒体への書き込み速度がボトルネックになっている場合、書き込み速度の向上は実現できない。
【０００６】
また、特許文献２に係る技術は、ホスト機器と記憶装置間で転送されるデータは非圧縮の状態であり、ホスト機器と記憶装置間での転送速度がボトルネックとなっている場合、書き込み速度の向上は実現できない。本発明は以上の技術的課題の解決を目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るデータ保存システムは、ホスト機器に接続される記憶装置へホスト機器がデータを書き込むに際して、データを圧縮して圧縮データとするデータ圧縮手段と、圧縮データを記憶装置へ書き込むデータ書き込み手段と、を備えるホスト機器と、ホスト機器より入力される圧縮データを保存する記憶部を備える記憶装置と、を備えることを特徴とする。
【０００８】
本発明に係るデータ保存システムにおいて、ホスト機器から記憶装置へデータを書き込むに際し、ホスト機器から記憶装置へと転送されるデータは圧縮されている。よって、ホスト機器と記憶装置を接続する経路の伝送帯域を有効に活用することが可能となる。また、記憶装置へデータを書き込むに際し、書き込まれるデータは圧縮されている。よって、記憶装置の備える記憶部を効率よく使用することが可能となる。
【０００９】
また、本発明に係る記憶部は、一定量のデータが保存される一又は複数のデータブロックを備え、更に、本発明に係る記憶装置は、データブロックに保存されるデータが圧縮データかデータ圧縮手段により圧縮されていない非圧縮データかをフラグを用いて管理するデータ圧縮管理テーブルを備えてもよい。
【００１０】
本発明に係るデータ圧縮手段を有しないホスト機器に記憶装置が接続され記憶部にデータが書き込まれる場合、書き込まれるデータは圧縮されていない。また、既に何らかの手段によりデータが圧縮されている場合、本発明に係るデータ圧縮手段を用いてデータを圧縮しようとすると、却って記憶装置に書き込まれるデータの容量が増大する場合がある。この場合、データ圧縮手段によりデータを圧縮しない方が、記憶部を効率よく使用することが出来る。これら、データが圧縮されずに記憶装置の記憶部に書き込まれた場合において、データ圧縮管理テーブルを用いて、データの圧縮及び非圧縮状態を管理することで、本発明に係るデータ圧縮手段を有しないホスト機器に接続して、本発明の記憶装置を使用することが可能となる。また、記憶装置の備える記憶部を効率よく使用することが可能となる。
【００１１】
また、本発明に係る記憶装置は、圧縮データを展開するデコーダ回路を備えていてもよい。
【００１２】
ホスト機器が圧縮データを展開する手段を有しない場合、記憶装置に保存されているデータを利用することが不可能である。かかる場合において、記憶装置がデコーダ回路を有する事で、記憶装置に保存されているデータを利用することが可能となる。
【発明の効果】
【００１３】
本発明は、ホスト機器においてデータを圧縮し、圧縮されたデータを記憶装置の備える記憶部へと書き込むことで、ホスト機器と記憶装置との接続経路の伝送帯域を有効に活用することが可能となる。また、記憶装置の備える記憶部を有効に活用することが可能となる。以上の効果により、記憶装置への書き込み速度を向上させ、且つ、記憶装置の備える記憶部を有効に使用することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本実施例に係るハードウェア構成図の一例
【図２】ホスト機器が記憶装置を認識する動作に係るシーケンス図
【図３】記憶装置への書き込み動作に係るシーケンス図（その１）
【図４】記憶装置からの読み出し動作に係るシーケンス図（その１）
【図５】記憶装置からの読み出し動作に係るシーケンス図（その２）
【図６】記憶装置への書き込み動作に係るシーケンス図（その２）
【図７】記憶装置からの読み出し動作に係るシーケンス図（その３）
【図８】記憶装置からの読み出し動作に係るシーケンス図（その４）
【発明を実施するための形態】
【００１５】
図１に本実施例に係るシステムの備えるハードウェア構成図を示す。本実施例に係るシステムは、ＳＳＤ１とＳＳＤ１が接続されるホスト機器２とを備える。ＳＳＤ１は、コントローラ１１、キャッシュ１２、記憶部１３を備える。また、本実施例に係るホスト機器２は、ＳＳＤ１へデータを書き込む際に、データを圧縮しＳＳＤ１へと転送するデータ圧縮対応ドライバを備える。
【００１６】
ここで、データ圧縮対応ドライバはデバイスドライバの一例である。デバイスドライバはパーソナルコンピュータなどの電子機器にインストールされるオペレーティングシステム（ＯＳ）の一部として動作する。そして、デバイスドライバは、電子機器に搭載、又は、接続されるハードウェアを制御する。デバイスドライバにより、ＯＳ上で動作する各種ソフトウェアは、ハードウェアを利用することが可能となる。また、Ｗｉｎｄｏｗｓ（登録商標）などのオペレーティングシステムは、キーボードやマウスなどの入力機器や外部記憶装置などのハードウェアを制御するためのデバイスドライバを予め標準ドライバとして備えている。
【００１７】
コントローラ１１は、ホスト機器２、キャッシュ１２及び記憶部１３と接続される。コントローラ１１は、ホスト機器２より発行されるＷｒｉｔｅコマンドに応じて、ホスト機器２から転送されるデータを、キャッシュ１２へと一時的に格納した後、記憶部１３へと書き込む。また、コントローラ１１は、ホスト機器２より発行されるＲｅａｄコマンドに応じて、キャッシュ１２及び記憶部１３に格納されているデータを読み出し、ホスト機器２へと転送する。
【００１８】
コントローラ１１は、キャッシュコントローラ１１１とフラッシュコントローラ１１２を備える。キャッシュコントローラ１１１はホスト機器２、キャッシュ１２及びフラッシュコントローラ１１２と接続される。キャッシュコントローラ１１１は、ホスト機器２から発行されるＷｒｉｔｅコマンドに応じて、キャッシュ１２及びフラッシュコントローラ１１２を制御し、ホスト機器２より転送されるデータを一時的にキャッシュ１２へと格納した後、記憶部１３へと書き込む。書き込むデータを一時的にキャッシュ１２へと格納することで、記憶部１３の最大書き込み速度に依存することなく、ホスト機器２からＳＳＤ１へのデータ転送を行うことが可能となり、処理速度の向上が可能となる。
【００１９】
また、キャッシュコントローラ１１１は、ホスト機器２から発行されるＲｅａｄコマンドに応じて、キャッシュ１２を制御し、フラッシュコントローラ１１２を通じて、Ｒｅａｄコマンドにより指定される論理アドレスに対応するデータを記憶部１３からホスト機器２へ転送する。キャッシュコントローラ１１１は、頻繁に記憶部１３から読み出されるデータをキャッシュ１２に格納し、ホスト機器２から発行されるＲｅａｄコマンドに応じてホスト機器２へ転送する。これにより、記憶部１３の読み出し速度に依存することなく、ＳＳＤ１からホスト機器２へのデータ転送を行うことが可能となり、処理速度の向上が可能となる。
【００２０】
また、キャッシュコントローラ１１１は記憶部１３に格納されているホスト機器２の備えるデータ圧縮対応ドライバにより圧縮された圧縮データを展開する機能を有するデコーダ回路１１１１を備える。デコーダ回路１１１１は後述するデータ圧縮管理テーブル１１２２と接続される。
【００２１】
フラッシュコントローラ１１２は、キャッシュコントローラ１１１の要求に応じて、記憶部１３へのデータの書き込み及び読み出しを行う。フラッシュコントローラ１１２は、ウェアレベリングモジュール１１２０を備える。ウェアレベリングモジュール１１２０は、フラッシュメモリ１３１乃至１３８の備えるデータブロックの書き換え回数を平滑化することで、記憶部１３の寿命を延命するための回路である。
【００２２】
ウェアレベリングモジュール１１２０は論理−物理アドレス管理テーブル１１２１及びデータ圧縮管理テーブル１１２２を備える。論理−物理アドレス管理テーブル１１２１は、ホスト機器２の備えるＯＳから認識される論理アドレスと、記憶部１３の備えるデータブロックの物理的な配置である物理アドレスとを関連づけて管理するために用いられるテーブルである。データ圧縮管理テーブル１１２２は、記憶管理部１３に格納されているデータのうち、各物理アドレスに対応するデータブロックに保存されているデータが、ホスト機器２の備えるデータ圧縮対応ドライバにより圧縮されているか否かを管理するために用いられるテーブルである。論理−物理アドレス管理テーブル１１２１は、データ圧縮管理テーブル１１２２と接続される。また、デコーダ回路１１１１は、データ圧縮管理テーブル１１２２と接続され、デコーダ回路１１１１は、データ圧縮管理テーブル１１２２の情報を用いて、データ転送時に転送されるデータが圧縮されたデータか否かを判断する。
【００２３】
記憶部１３は、複数のフラッシュメモリ１３１乃至１３８を備える。フラッシュメモリ１３１乃至１３８は、複数のデータブロックを備え、ホスト機器２から書き込まれるデータが格納される。ここで、データブロックとは、ＳＳＤ１がデータを管理するために用いる最小単位である。データが消去される場合、データブロック単位でデータの消去は行われる。又、データが書き込まれる場合も、データブロック単位でデータの書き込みは行われる。各データブロックには物理アドレスが割り当てられる。
【００２４】
以下、図２乃至図８を用いて本実施例の備えるＳＳＤ１及びホスト機器２の動作について説明する。本実施例の備えるホスト機器２がＳＳＤ１を認識する際に行われるネゴシエーション処理における動作シーケンスの一例について図２に示す。なお、本実施例において、ＳＳＤ１とホスト機器２は、ＵＳＢにより接続されているとする。ホスト機器２は、記憶装置２が接続されると、なんらかの外部機器が接続されたことを検出する（Ｓ０）。そして、ＳＳＤ１及びホスト機器２は、初期化処理を行う（矢印Ａ０）。そして、ＳＳＤ１は、ホスト機器２へ、自身のデバイスクラスがマスストレージクラスであることを通知する（Ｓ２）。以上のステップＳ０及びＳ２に係る動作は、一般的な周辺機器がホスト機器２とＵＳＢを通じて接続された場合に行われるネゴシエーション処理における動作シーケンスと同等である。
【００２５】
初期化処理完了後、データ圧縮対応ドライバを備えるホスト機器２は、ＳＳＤ１に対して、データ圧縮対応ドライバであることを通知する（Ｓ４、矢印Ａ２）。ＳＳＤ１のコントローラ１１は、その通知に対し、Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ（以下ＡＣＫと略す）信号により応答する（Ｓ６、矢印Ａ４）。以上、ステップＳ０乃至ステップＳ６の動作により、ＳＳＤ１とホスト機器２とのネゴシエーション処理に係る動作が完了する。
【００２６】
図３に、データ圧縮対応ドライバを備えるホスト機器２がＳＳＤ１へデータの書き込みを行う際の動作シーケンスについて図示する。ホスト機器２上のＯＳが、ＳＳＤ１へとデータを書き込む命令であるＷｒｉｔｅ命令を発行する（ＳＡ０）。ホスト機器２上のデータ圧縮対応ドライバは、Ｗｒｉｔｅ命令を受け（矢印ＡＡ０）、Ｗｒｉｔｅ命令によりＳＳＤ１へと書き込まれるデータの圧縮処理を行う（ＳＡ２）。そして、圧縮前のデータと圧縮後のデータのサイズ比較を行う（ＳＡ４）。比較の結果、ドライバによる圧縮前のデータのサイズが圧縮後のデータより小さい場合、圧縮前のデータをＳＳＤ１へと転送する。また、ドライバによる圧縮後のデータのサイズが圧縮前のデータのサイズ以下の場合、圧縮後のデータをＳＳＤ１へと転送する。
【００２７】
ステップＳＡ４のデータサイズの比較の後、ホスト機器２は、ＳＳＤ１へＷｒｉｔｅ命令の発行及び、書き込みデータの転送を行う（矢印ＡＡ２）。ＳＳＤ１のコントローラ１１は、ホスト機器２から送信されたＷｒｉｔｅ命令と書き込みデータを受信する。正常にＷｒｉｔｅ命令を受信した場合、ＡＣＫ信号をホスト機器へ送信する（矢印ＡＡ４）。コントローラ１１は、受信したＷｒｉｔｅ命令に基づきウェアレベルングモジュール１１２０を用いて、記憶部１３の備える一又は複数のデータブロックへとデータの書き込みを行い、論理−物理アドレス管理テーブル１１２１の更新を行う（ＳＡ６）。また、記憶部１３の備える所定の物理アドレスのデータブロックに書き込まれたデータが圧縮されているか否かについて、データ圧縮ドライバから通知される情報に基づき、データ圧縮管理テーブル１１２２を更新する（ＳＡ８、矢印ＡＡ６）。ＳＳＤ１はホスト機器２へ書き込み完了通知を行い（矢印ＡＡ８）、書き込み動作を終了する。
【００２８】
図４に、データ圧縮対応ドライバを備えるホスト機器２がＳＳＤ１から圧縮データの読み出しを行う際の動作シーケンスについて示す。ホスト機器２上のＯＳが、ＳＳＤ１からデータを読み出す命令であるＲｅａｄ命令を発行する（ＳＡ１０）。Ｒｅａｄ命令は、ホスト機器２からＳＳＤ１へと通知される（矢印ＡＡ１０）。正常にＳＳＤ１へとＲｅａｄ命令が通知された場合、ＳＳＤ１は、ホスト機器２へとＡＣＫ信号を通知する（矢印ＡＡ１２）。
【００２９】
Ｒｅａｄ命令がＳＳＤ１の備えるコントローラ１１へと通知されると、ウェアレベリングモジュール１１２０は、Ｒｅａｄ命令によりデータの読み出しが指示される論理アドレスを、論理−物理アドレス管理テーブル１１２１を用いて、物理アドレスへと変換する。そして、フラッシュコントローラ１１２は、変換された物理アドレスに応じて、記憶部１３からデータを読み出し、キャッシュコントローラ１１１を通じてホスト機器２へとデータを転送する（ＳＡ１２、矢印ＡＡ１６）。
【００３０】
また、コントローラ１１は、データ圧縮管理テーブル１１２２を用いて、読み出されるデータが圧縮データであるか否かを確認する（ＳＡ１４、矢印ＡＡ１４）。ここで、読み出されるデータは圧縮データであるため、コントローラ１１は、読み出されるデータが圧縮データであることをホスト機器２へと通知する（矢印ＡＡ１８）。
【００３１】
ＳＳＤ１の備える記憶部１３から読み出された圧縮データ及び読み出されたデータが圧縮データであるという情報を受信したホスト機器２の備えるデータ圧縮対応ドライバは、圧縮データの展開処理を行う（ＳＡ１６）。データ圧縮対応ドライバは、展開したデータをＯＳへと渡し（矢印ＡＡ２０）、動作を終了する。
【００３２】
図５に、データ圧縮対応ドライバを備えるホスト機器２がＳＳＤ１から非圧縮データの読み出しを行う際の動作シーケンスについて示す。ホスト機器２上のＯＳが、ＳＳＤ１からデータを読み出す命令であるＲｅａｄ命令を発行する（ＳＡ２０）。Ｒｅａｄ命令は、ホスト機器２からＳＳＤ１へと通知される（矢印ＡＡ２２）。正常にＳＳＤ１へとＲｅａｄ命令が通知された場合、ＳＳＤ１は、ホスト機器２へとＡＣＫ信号を通知する（ＡＡ２４）。
【００３３】
Ｒｅａｄ命令がＳＳＤ１の備えるコントローラ１１へと通知されると、ウェアレベリングモジュール１１２０は、Ｒｅａｄ命令によりデータの読み出しが指示される論理アドレスを、論理−物理アドレス管理テーブル１１２１を用いて、物理アドレスへと変換する。そして、フラッシュコントローラ１１２は、変換された物理アドレスに応じて、記憶部１３からデータを読み出し、キャッシュコントローラ１１１を通じてホスト機器２へとデータを転送する（ＳＡ２２、矢印ＡＡ３０）。
【００３４】
また、コントローラ１１は、データ圧縮管理テーブル１１２２を用いて、読み出されるデータが圧縮データであるか否かを確認する（ＳＡ２４、矢印ＡＡ２６）。ここで、読み出されるデータは非圧縮データであるため、コントローラ１１は、読み出されるデータが非圧縮データであることをホスト機器２へと通知する（矢印ＡＡ２８）。
【００３５】
ＳＳＤ１の備える記憶部１３から読み出された非圧縮データ及び読み出されたデータが非圧縮データであるという情報を受信したホスト機器２の備えるデータ圧縮対応ドライバは、データの展開処理を行うことなく、データをＯＳへと渡し（矢印ＡＡ３２）、動作を終了する。
【００３６】
図６に、本実施例に係るデータ圧縮対応ドライバを備えずＯＳが標準的に備えるドライバである標準ドライバのみを備えるホスト機器が、ＳＳＤ１へデータの書き込みを行う際の動作シーケンスについて示す。ホスト機器上のＯＳが、ＳＳＤ１へとデータを書き込む命令であるＷｒｉｔｅ命令を発行し、書き込みデータの転送を行う（ＳＢ０、矢印ＡＢ２）。
【００３７】
記憶装置のコントローラ１１は、ホスト機器から受信したＷｒｉｔｅ命令と書き込みデータを受信し、正常に受信した場合は、ＡＣＫ信号をホスト機器へ送信する（矢印ＡＢ４）。コントローラ１１は、受信したＷｒｉｔｅ命令に基づきウェアレベルングモジュール１１２０を用いて、記憶部１３へとデータの書き込みを行い、論理−物理アドレス管理テーブル１１２１の更新を行う（ＳＢ２）。また、記憶部１３へと書き込まれたデータの物理アドレス及び、書き込まれたデータが非圧縮であるという情報に基づき、データ圧縮管理テーブル１１２２を更新する（ＳＢ４、矢印ＡＢ６）。ＳＳＤ１はホスト機器へ書き込み完了通知を行い（矢印ＡＢ８）、書き込み動作を終了する。
【００３８】
図７に、本実施例に係るデータ圧縮対応ドライバを備えずＯＳが標準的に備えるドライバである標準ドライバのみを備えるホスト機器が、ＳＳＤ１からデータ圧縮対応ドライバにより圧縮された圧縮データの読み出しを行う際の動作シーケンスについて示す。ホスト機器上のＯＳが、ＳＳＤ１からデータを読み出す命令であるＲｅａｄ命令を発行する（ＳＢ６）。Ｒｅａｄ命令は、ホスト機器からＳＳＤ１へと通知される（矢印ＡＢ１０）。正常にＳＳＤ１へとＲｅａｄ命令が通知された場合、ＳＳＤ１は、ホスト機器へとＡＣＫ信号を通知する（矢印ＡＢ１２）。
【００３９】
Ｒｅａｄ命令がＳＳＤ１の備えるコントローラ１１へと通知されると、ウェアレベリングモジュール１１２０は、Ｒｅａｄ命令によりデータの読み出しが指示される論理アドレスを、論理−物理アドレス管理テーブル１１２１を用いて、物理アドレスへと変換する（ＳＢ８）。そして、フラッシュコントローラ１１２は、変換された物理アドレスに応じて、記憶部１３からデータを読み出す（ＳＢ１０）。
【００４０】
また、コントローラ１１は、データ圧縮管理テーブル１１２２を用いて、読み出されるデータが圧縮データであるか否かを確認する（ＳＢ１０、矢印ＡＢ１４及びＡＢ１６）。ここで、読み出されるデータは圧縮データであるため、コントローラ１１は、デコーダ回路１１１１を用いて読み出された圧縮データの展開処理を行う（ＳＢ１２、矢印ＡＢ１８）。そして、展開されたデータをＳＳＤ１からホスト機器へと転送し（矢印ＡＢ２０）、データを受信した標準ドライバはＯＳへとデータを渡し（矢印ＡＢ２２）、読み出し動作を終了する。
【００４１】
図８に、本実施例に係るデータ圧縮対応ドライバを備えず、ＯＳが標準的に備える標準ドライバのみを備えるホスト機器が、ＳＳＤ１から非圧縮データの読み出しを行う際の動作シーケンスについて示す。ホスト機器上のＯＳが、ＳＳＤ１からデータを読み出す命令であるＲｅａｄ命令を発行する（ＳＢ１４）。Ｒｅａｄ命令は、ホスト機器からＳＳＤ１へと通知される（矢印ＡＢ２４）。正常にＳＳＤ１へとＲｅａｄ命令が通知された場合、ＳＳＤ１は、ホスト機器へとＡＣＫ信号を通知する（矢印ＡＢ２６）。
【００４２】
Ｒｅａｄ命令がＳＳＤ１の備えるコントローラ１１へと通知されると、ウェアレベリングモジュール１１２０は、Ｒｅａｄ命令によりデータの読み出しが指示される論理アドレスを、論理−物理アドレス管理テーブル１１２１を用いて、物理アドレスへと変換する。そして、フラッシュコントローラ１１２は、変換された物理アドレスに応じて、記憶部１３からデータを読み出す（ＳＢ１６）。
【００４３】
また、コントローラ１１は、データ圧縮管理テーブル１１２２を用いて、読み出されるデータが圧縮データであるか否かを確認する（ＳＢ１８、矢印ＡＢ２８及びＡＢ３０）。ここで、読み出されるデータは非圧縮データであるため、コントローラ１１は、フラッシュコントローラ１１２が記憶部１３から読み出したデータを、デコーダ回路１１１１により展開することなく、ホスト機器へ転送する（矢印ＡＡ３２）。データを受信した標準ドライバはＯＳへとデータを渡し（矢印ＡＢ３４）、読み出し動作を終了する。
【００４４】
以下、本実施例の奏する作用効果について述べる。ホスト機器２からＳＳＤ１へデータを書き込むに際し、ホスト機器２からＳＳＤ１へと転送されるデータは、ホスト機器２の備えるデータ圧縮対応ドライバにより圧縮されている。よって、ホスト機器２とＳＳＤ１とを接続する経路の帯域を有効に活用することが可能となる。また、ＳＳＤ１へデータを書き込むに際し、書き込まれるデータは圧縮されている。よって、記憶装置２の備える記憶部１３を効率よく使用することが可能となる。また、本実施例において、データ圧縮をデータ圧縮対応ドライバで行う。これにより、利用者によるアプリケーションの操作が不要であるため、利便性が向上する。
【００４５】
データ圧縮対応ドライバを備えないホスト機器にＳＳＤ１が接続され記憶部１３にデータが書き込まれる場合、書き込まれるデータは、当然データ圧縮対応ドライバにより圧縮されていない。この場合、データ圧縮管理テーブル１１２２を用いて、データの圧縮及び非圧縮状態を管理する。これにより、データ圧縮対応ドライバを備えないホスト機器に接続した場合であっても、ＳＳＤ１にデータを書き込み、そして正常に読み出すことが可能となる。
【００４６】
また、既に何らかの手段によりデータが圧縮されている場合、データ圧縮対応ドライバを用いてデータを圧縮しようとすると、却ってＳＳＤ１に書き込まれるデータの容量が増大する場合がある。この場合、データ圧縮対応ドライバによりデータを圧縮しない方が、記憶部１３を効率よく使用することが出来る。この場合、データ圧縮対応ドライバにより、データを圧縮せず記憶部１３へデータを書き込み、データ圧縮管理テーブル１１２２を用いて、データの圧縮及び非圧縮状態を管理する。これにより、記憶部１３を効率よく使用することが可能となる。
【００４７】
ホスト機器がデータ圧縮対応ドライバを備えず、圧縮データを展開する手段を有しない場合、ＳＳＤ１に保存されているデータを利用することが不可能である。かかる場合において、記憶部１３に保存されているデータが、データ圧縮管理テーブル１１２１に基づきデータ圧縮対応ドライバにより圧縮されていると判断される場合、ＳＳＤ１がデコーダ回路１１１１により、データを展開し、ホスト機器へ転送する。これにより、データ圧縮対応ドライバを備えないホスト機器においても、ＳＳＤ１に保存されているデータを利用することが可能となる。
【００４８】
なお、本発明は前記実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、論理−物理アドレス管理テーブル１１２１において、圧縮により未使用となった物理アドレス分の論理アドレスを全てビットが１となった０ｘＦＦＦＦＦＦ…ＦＦとする。そして、論理アドレスの最上位ビット（ＭＳＢ：Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）をデータの圧縮非圧縮のフラグとして用いる。こうすることにより、データ圧縮管理テーブル１１２２を用いることなく、本実施例と同等の動作をすることが可能となる。
【００４９】
なお、本実施例に係るＳＳＤは記憶装置の一例であり、データ圧縮対応ドライバは、データ圧縮手段及びデータ書き込み手段の一例である。
【符号の説明】
【００５０】
１  ＳＳＤ
１１  コントローラ
１１１  キャッシュコントローラ
１１１１  デコーダ回路
１１２  フラッシュコントローラ
１１２０  ウェアレベリングモジュール
１１２１  論理―物理アドレス管理テーブル
１１２２  データ圧縮管理テーブル
１２  キャッシュ
１３  記憶部
１３１乃至１３８  フラッシュメモリ
２  ホスト機器
【図１】
2012093886.tif 000003
【図２】
2012093886.tif 000004
【図３】
2012093886.tif 000005
【図４】
2012093886.tif 000006
【図５】
2012093886.tif 000007
【図６】
2012093886.tif 000008
【図７】
2012093886.tif 000009
【図８】
2012093886.tif 000010