(57)【要約】  詳細な説明で開示される態様はハードウェアアクセラレーテッドストレージ圧縮を含む。一態様では、ストレージデバイスに非圧縮データブロックを書き込む前に、ストレージコントローラ内に設けられるハードウェア圧縮アクセラレータが、非圧縮データブロックを個々に圧縮データブロックに圧縮し、ストレージデバイス内のストレージデータブロックに圧縮データブロックを割り振る。次いで、ハードウェア圧縮アクセラレータは、修正論理ブロックアドレス(LBA)を生成して、非圧縮データブロックを圧縮データブロックにリンクする。別の態様では、ハードウェア圧縮アクセラレータは、圧縮データブロックの位置を、対応する修正LBAに基づいて突き止め、圧縮データブロックを非圧縮データブロックに解凍する。ストレージコントローラ内でハードウェアアクセラレーテッドストレージ圧縮を実施することによって、従来のソフトウェアベースの圧縮システムに関連する処理オーバヘッドを削減し、従来のストレージデバイス駆動圧縮システムよりも圧縮制御を改善することが可能となる。
2018530053.tif 000002
【特許請求の範囲】
【請求項１】
ストレージデバイスに結合されたストレージコントローラであって、ハードウェア圧縮アクセラレータを備えるストレージコントローラと、
前記ストレージコントローラに書込み要求を与えて、前記ストレージデバイスに1つまたは複数の非圧縮データブロックを書き込むように構成された制御システムであって、前記1つまたは複数の非圧縮データブロックの各々が、それぞれの論理ブロックアドレス(LBA)に関連付けられる、制御システムとを備え、
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記ハードウェア圧縮アクセラレータが、
前記非圧縮データブロックを圧縮データブロックに圧縮し、
前記圧縮データブロックを前記ストレージデバイス内のストレージデータブロックに割り振り、
修正LBAを生成して前記非圧縮データブロックを前記圧縮データブロックと相関させるように構成され、前記修正LBAが圧縮ビットマップを含む、ホストシステム。
【請求項２】
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記制御システムが、
前記ハードウェア圧縮アクセラレータから前記修正LBAを受け取り、
索引付きノード(inode)内の前記LBAのそれぞれを前記修正LBAで更新する
ようにさらに構成される請求項1に記載のホストシステム。
【請求項３】
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記ストレージコントローラが、前記ハードウェア圧縮アクセラレータによって割り振られた前記ストレージデータブロックに前記圧縮データブロックを書き込むように構成される請求項1に記載のホストシステム。
【請求項４】
前記ハードウェア圧縮アクセラレータが、
前記圧縮データブロックおよび前記少なくとも1つの他の圧縮データブロックの全サイズが、前記ストレージデータブロックのサイズ以下である場合、
前記圧縮データブロックを前記少なくとも1つの他の圧縮データブロックとともに前記ストレージデータブロック内に配置するようにさらに構成される請求項1に記載のホストシステム。
【請求項５】
前記ハードウェア圧縮アクセラレータが、
前記圧縮データブロックおよび前記少なくとも1つの他の圧縮データブロックの総数が前記ストレージデータブロックの所定の割振り限度以下である場合、
前記圧縮データブロックを前記少なくとも1つの他の圧縮データブロックとともに前記ストレージデータブロック内に配置するようにさらに構成される請求項4に記載のホストシステム。
【請求項６】
前記ストレージデータブロックおよび前記非圧縮データブロックがそれぞれ4キロバイト(4KB)のサイズを有する請求項4に記載のホストシステム。
【請求項７】
前記圧縮ビットマップが、
前記圧縮データブロックが圧縮されるかどうかを示すように構成された圧縮インジケータと、
前記圧縮データブロックがその中に記憶される前記ストレージデータブロック内の前記圧縮データブロックの相対的シーケンスを示すように構成されたシーケンス番号と
を含む請求項1に記載のホストシステム。
【請求項８】
前記圧縮ビットマップが、
前記圧縮データブロックに対応する前記非圧縮データブロックの前記LBAのそれぞれを示すように構成されたLBA番号
をさらに含む請求項7に記載のホストシステム。
【請求項９】
前記ストレージコントローラに結合された前記ストレージデバイスが、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、エンベデッドマルチメディアカード(eMMC)、ユニバーサルフラッシュストレージ(UFS)、およびユニバーサルシリアルバス(USB)デバイスからなるグループから選択される請求項1に記載のホストシステム。
【請求項１０】
前記ストレージコントローラがホストコントローラインターフェース(HCI)をさらに備え、
前記ストレージコントローラが、エンベデッドマルチメディアカード(eMMC)HCIデータ構造内に符号化された前記書込み要求を受け取るように構成され、
前記ハードウェア圧縮アクセラレータが、eMMC HCIタスク記述子構造内に符号化された少なくとも1つの圧縮マップを提供するように構成される請求項1に記載のホストシステム。
【請求項１１】
前記ストレージコントローラがホストコントローラインターフェース(HCI)をさらに備え、
前記ストレージコントローラが、ユニバーサルフラッシュストレージ(UFS)HCIデータ構造内に符号化された前記書込み要求を受け取るように構成され、
前記ハードウェア圧縮アクセラレータが、UFS HCI転送要求記述子構造内に符号化された少なくとも1つの圧縮マップを提供するように構成される請求項1に記載のホストシステム。
【請求項１２】
ハードウェアアクセラレーテッド圧縮システムを使用してストレージデバイスにデータを書き込むための方法であって、
書込み要求を与えて、前記ストレージデバイスに1つまたは複数の非圧縮データブロックを書き込むステップであって、前記1つまたは複数の非圧縮データブロックの各々が、それぞれの論理ブロックアドレス(LBA)に関連付けられる、ステップと、
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、
前記非圧縮データブロックを圧縮データブロックに圧縮するステップと、
前記圧縮データブロックを前記ストレージデバイス内のストレージデータブロックに割り振るステップと、
修正LBAを生成して前記非圧縮データブロックを前記圧縮データブロックと相関させるステップであって、前記修正LBAが圧縮ビットマップを含む、ステップと
を含む方法。
【請求項１３】
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、索引付きノード(inode)内の前記LBAのそれぞれを前記修正LBAで更新するステップをさらに含む請求項12に記載の方法。
【請求項１４】
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記ストレージデータブロックに前記圧縮データブロックを書き込むステップをさらに含む請求項12に記載の方法。
【請求項１５】
前記圧縮データブロックおよび前記ストレージデータブロック内の少なくとも1つの他の圧縮データブロックの全サイズが、前記ストレージデータブロックのサイズ以下である場合、
前記圧縮データブロックを前記少なくとも1つの他の圧縮データブロックとともに配置するステップをさらに含む請求項12に記載の方法。
【請求項１６】
前記圧縮データブロックおよび前記少なくとも1つの他の圧縮データブロックの総数が前記ストレージデータブロックの所定の割振り限度以下である場合、
前記圧縮データブロックを少なくとも1つの他の圧縮データブロックとともに前記ストレージデータブロック内に配置するステップをさらに含む請求項15に記載の方法。
【請求項１７】
前記圧縮ビットマップが、
前記圧縮データブロックが圧縮されるかどうかを示すように構成された圧縮インジケータと、
前記圧縮データブロックがその中に記憶される前記ストレージデータブロック内の前記圧縮データブロックの相対的シーケンスを示すように構成されたシーケンス番号と
を含む請求項12に記載の方法。
【請求項１８】
前記圧縮ビットマップが、
前記圧縮データブロックに対応する前記非圧縮データブロックの前記LBAのそれぞれを示すように構成されたLBA番号
をさらに含む請求項17に記載の方法。
【請求項１９】
ストレージデバイスに結合されたストレージコントローラであって、ハードウェア圧縮アクセラレータを備えるストレージコントローラと、
前記ストレージコントローラに読取り要求を与えて、前記ストレージデバイスから1つまたは複数の非圧縮データブロックを読み取るように構成された制御システムとを備え、
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、
前記制御システムが、前記非圧縮データブロックを前記ストレージデバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正論理ブロックアドレス(LBA)を与えるようにさらに構成され、前記修正LBAが圧縮ビットマップを含み、
前記ストレージコントローラが、前記修正LBAのそれぞれに基づいて、前記ストレージデバイスから前記圧縮データブロックのそれぞれを取り出すように構成され、
前記ハードウェア圧縮アクセラレータが、前記圧縮データブロックのそれぞれを前記非圧縮データブロックに解凍するように構成され、
前記ストレージコントローラが、前記制御システムに前記非圧縮データブロックを提供するようにさらに構成される、ホストシステム。
【請求項２０】
前記圧縮ビットマップが、
前記圧縮データブロックのそれぞれが圧縮されるかどうかを示すように構成された圧縮インジケータと、
前記圧縮データブロックのそれぞれがその中に記憶されるストレージデータブロック内の前記圧縮データブロックのそれぞれの相対的シーケンスを示すように構成されたシーケンス番号と
を含む請求項19に記載のホストシステム。
【請求項２１】
前記圧縮ビットマップが、
前記圧縮データブロックのそれぞれに対応する前記非圧縮データブロックの前記LBAのそれぞれを示すように構成されたLBA番号
をさらに含む請求項20に記載のホストシステム。
【請求項２２】
前記ストレージデータブロックおよび前記非圧縮データブロックがそれぞれ4キロバイト(4KB)のサイズを有する請求項20に記載のホストシステム。
【請求項２３】
前記ストレージコントローラに結合された前記ストレージデバイスが、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、エンベデッドマルチメディアカード(eMMC)、ユニバーサルフラッシュストレージ(UFS)、およびユニバーサルシリアルバス(USB)デバイスからなるグループから選択される請求項19に記載のホストシステム。
【請求項２４】
前記ストレージコントローラがホストコントローラインターフェース(HCI)をさらに備え、
前記ストレージコントローラが、
エンベデッドマルチメディアカード(eMMC)HCIデータ構造内に符号化された前記書込み要求を受け取り、
eMMC HCIタスク記述子構造内に符号化された少なくとも1つの圧縮マップを受け取る
ように構成される請求項19に記載のホストシステム。
【請求項２５】
前記ストレージコントローラがホストコントローラインターフェース(HCI)をさらに備え、
前記ストレージコントローラが、
ユニバーサルフラッシュストレージ(UFS)HCIデータ構造内に符号化された前記読取り要求を受け取り、
UFS HCI転送要求記述子構造内に符号化された少なくとも1つの圧縮マップを受け取る
ように構成される請求項19に記載のホストシステム。
【請求項２６】
ハードウェアアクセラレーテッド圧縮システムを使用してストレージデバイスからデータを読み取るための方法であって、
読取り要求を与えて、ストレージデバイスから1つまたは複数の非圧縮データブロックを読み取るステップと、
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、
前記非圧縮データブロックを前記ストレージデバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正論理ブロックアドレス(LBA)を与えるステップであって、前記修正LBAが圧縮ビットマップを含む、ステップと、
前記修正LBAのそれぞれに基づいて、前記ストレージデバイスから前記圧縮データブロックのそれぞれを取り出すステップと、
前記圧縮データブロックのそれぞれを前記非圧縮データブロックに解凍するステップと
を含む方法。
【請求項２７】
前記圧縮ビットマップが、
前記圧縮データブロックが圧縮されるかどうかを示すように構成された圧縮インジケータと、
前記圧縮データブロックがその中に記憶されるストレージデータブロック内の前記圧縮データブロックの相対的シーケンスを示すように構成されたシーケンス番号と
を含む請求項26に記載の方法。
【請求項２８】
前記圧縮ビットマップが、
前記圧縮データブロックに対応する前記非圧縮データブロックの前記LBAのそれぞれを示すように構成されたLBA番号
をさらに含む請求項27に記載の方法。
【請求項２９】
前記ストレージデータブロックおよび前記非圧縮データブロックがそれぞれ4キロバイト(4KB)のサイズを有する請求項27に記載の方法。
【請求項３０】
前記ストレージデバイスが、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、エンベデッドマルチメディアカード(eMMC)、ユニバーサルフラッシュストレージ(UFS)、およびユニバーサルシリアルバス(USB)デバイスからなるグループから選択される請求項26に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、係属中の、本明細書の譲受人に譲渡された、参照によりその全体が本明細書に明白に組み込まれる、2015年9月3日出願の「Hardware-Accelerated Storage Compression」という名称の仮特許出願第62/213,839号の利益を主張する。
【背景技術】
【０００２】
本開示の技術は、一般には記憶媒体圧縮に関する。
【０００３】
モバイル通信デバイスは、現在の社会においてますます一般的になっている。これらのモバイル通信デバイスの普及は、部分的には、そのようなデバイス上で今や使用可能にされる多くの機能によって推進される。そのようなデバイス内の処理能力の向上は、モバイル通信デバイスが、純粋な通信ツールから、高度なモバイルマルチメディアセンタに進化し、したがって強化されたユーザ体験を可能にすることを意味する。
【０００４】
モバイル通信デバイスは、オペレーティングシステム、システムパラメータ、実行可能プログラム、およびユーザデータを記憶するためのストレージデバイスに依拠する。そのようなストレージデバイスは、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、ユニバーサルフラッシュストレージ(UFS)、ユニバーサルシリアルバス(USB)ストレージデバイス、および/またはエンベデッドマルチメディアカード(eMMC)を含み得る。
【０００５】
モバイル通信デバイスの処理能力の向上と同時に、データ記憶容量に対する要求も指数関数的に増大している。その結果、モバイル通信デバイスに数百ギガバイト(GB)のデータを記憶することのできるストレージデバイスが組み込まれることは珍しくない。残念ながら、記憶容量の増大には、コストおよび複雑さの増大が伴う。したがって、組み込まれたストレージデバイス内の記憶空間を温存するのを助けるために、モバイル通信デバイス内でデータ圧縮を実施することがしばしば必要となる。残念ながら、ソフトウェアベースの圧縮システムやストレージデバイスベースの圧縮システムなどの従来の圧縮システムには、性能、待ち時間、および可制御性に伴う明らかな問題がある。
【発明の概要】
【課題を解決するための手段】
【０００６】
詳細な説明で開示される態様はハードウェアアクセラレーテッドストレージ圧縮を含む。一態様では、ストレージデバイスに非圧縮データブロックを書き込む前に、ストレージコントローラ内に設けられるハードウェア圧縮アクセラレータが、非圧縮データブロックを圧縮データブロックに圧縮し、ストレージデバイス内のストレージデータブロックに圧縮データブロックを割り振る。次いで、ハードウェア圧縮アクセラレータは、修正論理ブロックアドレス(LBA)を生成して、非圧縮データブロックを圧縮データブロックにリンクする。別の態様では、ハードウェア圧縮アクセラレータは、圧縮データブロックの位置を、対応する修正LBAに基づいて突き止め、圧縮データブロックを非圧縮データブロックに解凍する。ストレージコントローラ内でハードウェアアクセラレーテッドストレージ圧縮を実施することによって、従来のソフトウェアベースの圧縮システムに関連する処理オーバヘッドを削減し、従来のストレージデバイス駆動圧縮システムよりも圧縮制御を改善することが可能となる。さらに、ハードウェアアクセラレーテッドストレージ圧縮は、データスループットを改善し、データ圧縮に関連する電力消費を削減する助けとなり得る。
【０００７】
アプリケーションが、ホスト制御インターフェース(HCI)を介してストレージコントローラに書込み要求または読取り要求を送ることによって、ストレージデバイスに非圧縮データブロックを書き込み得るか、またはストレージデバイスから非圧縮データブロックを読み取り得る。書込み要求および読取り要求は、HCIエンベデッドマルチメディアカード(eMMC)コマンドやHCIユニバーサルフラッシュストレージ(UFS)コマンドなどの既存のHCIコマンド内に符号化され得る。
【０００８】
この点で、一態様では、ホストシステムが提供される。ホストシステムは、ストレージデバイスに結合されたストレージコントローラを備える。ストレージコントローラはハードウェア圧縮アクセラレータを備える。ホストデバイスはまた、ストレージコントローラに書込み要求を与えて、ストレージデバイスに1つまたは複数の非圧縮データブロックを書き込むように構成された制御システムをも備える。1つまたは複数の非圧縮データブロックの各々は、それぞれの論理ブロックアドレス(LBA)に関連付けられる。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータは、非圧縮データブロックを圧縮データブロックに圧縮し、圧縮データブロックをストレージデバイス内のストレージデータブロックに割り振り、修正LBAを生成して非圧縮データブロックを圧縮データブロックと相関させるように構成され、修正LBAは圧縮ビットマップを含む。
【０００９】
別の態様では、ハードウェアアクセラレーテッド圧縮システムの下でストレージデバイスにデータを書き込むための方法が提供される。方法は、書込み要求を与えて、ストレージデバイスに1つまたは複数の非圧縮データブロックを書き込むことを含む。1つまたは複数の非圧縮データブロックの各々は、それぞれのLBAに関連付けられる。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、方法は、非圧縮データブロックを圧縮データブロックに圧縮すること、圧縮データブロックをストレージデバイス内のストレージデータブロックに割り振ること、および修正LBAを生成して非圧縮データブロックを圧縮データブロックと相関させることを提供し、修正LBAは圧縮ビットマップを含む。
【００１０】
別の態様では、ホストシステムが提供される。ホストシステムは、ストレージデバイスに結合されたストレージコントローラを備える。ストレージコントローラはハードウェア圧縮アクセラレータを備える。ホストシステムはまた、ストレージコントローラに読取り要求を与えて、ストレージデバイスから1つまたは複数の非圧縮データブロックを読み取るように構成された制御システムをも備える。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、制御システムは、非圧縮データブロックをストレージデバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正論理ブロックアドレス(LBA)を与えるようにさらに構成され、修正LBAは圧縮ビットマップを含む。ストレージコントローラは、それぞれの修正LBAに基づいて、ストレージデバイスからそれぞれの圧縮データブロックを取り出すように構成される。ハードウェア圧縮アクセラレータは、それぞれの圧縮データブロックを非圧縮データブロックに解凍するように構成される。ストレージコントローラは、制御システムに非圧縮データブロックを提供するようにさらに構成される。
【００１１】
別の態様では、ハードウェアアクセラレーテッド圧縮システムの下でストレージデバイスからデータを読み取るための方法が提供される。方法は、読取り要求を与えて、ストレージデバイスから1つまたは複数の非圧縮データブロックを読み取ること、ならびに1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、非圧縮データブロックをストレージデバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正論理ブロックアドレス(LBA)を与えることであって、修正LBAは圧縮ビットマップを含むこと、それぞれの修正LBAに基づいて、ストレージデバイスからそれぞれの圧縮データブロックを取り出すこと、およびそれぞれの圧縮データブロックを非圧縮データブロックに解凍することを含む。
【図面の簡単な説明】
【００１２】
【図１Ａ】従来のソフトウェアベースの圧縮システムに基づいてストレージ圧縮を実施するように構成された例示的ホストシステムの概略図である。
【図１Ｂ】従来のストレージデバイス駆動圧縮システムに基づいてストレージ圧縮を実施するように構成された例示的ホストシステムの概略図である。
【図２】ハードウェアアクセラレーテッドストレージ圧縮システムに基づいてストレージデバイスに1つまたは複数の非圧縮データブロックを書き込むように構成された例示的ホストシステムの概略図である。
【図３】図2の1つまたは複数の非圧縮データブロックを1つまたは複数の圧縮データブロックにそれぞれリンクするように構成された1つまたは複数の修正論理ブロックアドレス(LBA)を含む索引付きノード(inode)の例示的図解を与える概略図である。
【図４】非圧縮データブロックと、圧縮データブロックと、修正LBAと、LBAとの間の相関の例示的図解を与える概略図である。
【図５】図2のハードウェアアクセラレーテッド圧縮システムに基づいてストレージデバイスから生成される1つまたは複数の非圧縮データブロックを読み取るように構成された例示的ホストシステムの概略図である。
【図６】ハードウェアアクセラレーテッド圧縮システムの下でストレージデバイスに図2の1つまたは複数の非圧縮データブロックを書き込むための例示的書込みプロセスのフローチャートである。
【図７】ハードウェアアクセラレーテッド圧縮システムの下で図5の1つまたは複数の非圧縮データブロックを読み取るための例示的読取りプロセスのフローチャートである。
【図８】制御システムがその中でホストコントローラインターフェース(HCI)を介してストレージコントローラと通信するように構成される例示的ホストシステムの概略図である。
【図９Ａ】図8の制御システムから図8のストレージコントローラに読取り/書込み要求を与えるように構成され得る例示的エンベデッドマルチメディアカード(eMMC)HCIデータ構造の概略図である。
【図９Ｂ】図8の制御システムから図8のストレージコントローラに読取り/書込み要求を与えるように構成され得る例示的ユニバーサルフラッシュストレージ(UFS)HCIデータ構造の概略図である。
【図１０Ａ】図8のストレージコントローラ内のハードウェア圧縮アクセラレータのための少なくとも1つの圧縮アルゴリズムを定義するように構成された例示的eMMC HCIデータ構造の概略図である。
【図１０Ｂ】図8のストレージコントローラ内のハードウェア圧縮アクセラレータのための少なくとも1つの圧縮アルゴリズムを定義するように構成された例示的UFS HCIデータ構造の概略図である。
【図１１】ハードウェアアクセラレーテッドストレージ圧縮システムをサポートするために図2、図5、および図8のホストシステムを利用し得る例示的プロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【００１３】
これから図面を参照して、本開示のいくつかの例示的態様が説明される。「例示的」という語は、本明細書では「一例、事例、または例示としての働きをすること」を意味するために用いられる。本明細書で「例示的」と説明される任意の態様は、必ずしも他の態様よりも好ましい、または有利なものと解釈されるべきではない。
【００１４】
詳細な説明で開示される態様はハードウェアアクセラレーテッドストレージ圧縮を含む。一態様では、ストレージデバイスに非圧縮データブロックを書き込む前に、ストレージコントローラ内に設けられるハードウェア圧縮アクセラレータが、非圧縮データブロックを個々に圧縮データブロックに圧縮し、ストレージデバイス内のストレージデータブロックに圧縮データブロックを割り振る。本明細書では、「ストレージデータブロック」という用語は、ストレージデバイス内の論理データブロックまたは物理データブロックのいずれかを指すことがある。次いで、ハードウェア圧縮アクセラレータは、修正論理ブロックアドレス(LBA)を生成して、非圧縮データブロックを圧縮データブロックにリンクする。別の態様では、ハードウェア圧縮アクセラレータは、圧縮データブロックの位置を、対応する修正LBAに基づいて突き止め、圧縮データブロックを非圧縮データブロックに解凍する。ストレージコントローラ内でハードウェアアクセラレーテッドストレージ圧縮を実施することによって、従来のソフトウェアベースの圧縮システムに関連する処理オーバヘッドを削減し、従来のストレージデバイス駆動圧縮システムよりも圧縮制御を改善することが可能となる。さらに、ハードウェアアクセラレーテッドストレージ圧縮は、データスループットを改善し、データ圧縮に関連する電力消費を削減する助けとなり得る。
【００１５】
アプリケーションが、ホスト制御インターフェース(HCI)を介してストレージコントローラに書込み要求または読取り要求を送ることによって、ストレージデバイスに非圧縮データブロックを書き込み得るか、またはストレージデバイスから非圧縮データブロックを読み取り得る。書込み要求および読取り要求は、HCIエンベデッドマルチメディアカード(eMMC)コマンドやHCIユニバーサルフラッシュストレージ(UFS)コマンドなどの既存のHCIコマンド内に符号化され得る。
【００１６】
本開示の特定の態様を含むハードウェアアクセラレーテッドストレージ圧縮の例示的態様を論じる前に、従来のソフトウェアベースの圧縮システムおよび従来のストレージデバイス駆動圧縮システムの概要が、それぞれ図1Aおよび図1Bを参照して与えられる。ハードウェアアクセラレーテッドストレージ圧縮の特定の例示的態様の議論は、図2を参照して始まる。HCIを介してストレージデバイスアクセスを要求することの特定の例示的態様の議論は、図8を参照して始まる。
【００１７】
この点で、図1Aは、従来のソフトウェアベースの圧縮システムに基づいてストレージ圧縮を実施するように構成された例示的ホストシステム100の概略図である。
【００１８】
ホストシステム100は、ホストシステム100に結合されたストレージデバイス104への読取り/書込みアクセスを可能にするように構成されたストレージコントローラ102を含む。ホストシステム100はまた、ホストシステム100内で動作中のアプリケーションへのデータアクセスを実現するように構成される制御システム106をも含む。アプリケーションがストレージデバイス104にデータファイル(図示せず)を書き込むことを要求するとき、制御システム106はまず、関連メタデータ(たとえば、ファイル名、ファイル所有者、ファイルアクセス許可など)を記憶するために索引付きノード(inode)(図示せず)を生成する。
【００１９】
ストレージデバイス104にデータファイルを書き込む前に、ソフトウェア圧縮エンジン108が、ストレージデバイス104内の記憶空間を節約するためにデータファイルを圧縮する。非限定的な例では、ソフトウェア圧縮エンジン108(たとえば、WinZip)は、データファイルを単一の圧縮データファイル110に圧縮する。別の非限定的な例では、ソフトウェア圧縮エンジン108は、データファイルを複数の圧縮データブロック112に圧縮し得る。複数の圧縮データブロック112の各々は、128キロバイト(128KB)のサイズであり得る。その後で、ストレージコントローラ102は、単一の圧縮データファイル110または複数の圧縮データブロック112をストレージデバイス104に書き込む。非限定的な例では、ストレージデバイス104は、4キロバイト(4KB)のサイズのストレージデータブロックを含み得る。したがって、単一の圧縮データファイル110または複数の圧縮データブロック112は、複数のストレージデータブロックを占有し得る。
【００２０】
引き続き図1Aを参照すると、アプリケーションがストレージデバイス104内に記憶されたデータファイルにアクセスする必要があるとき、ストレージコントローラ102は、単一の圧縮データファイル110または複数の圧縮データブロック112をストレージデバイス104から読み取る。次いで、制御システム106は、アプリケーションのために単一の圧縮データファイル110または複数の圧縮データブロック112を解凍する。
【００２１】
従来のソフトウェアベースの圧縮システムは、ソフトウェア圧縮エンジン108によって実施される圧縮/解凍プロセスのために著しい処理遅延を伴う。さらに、従来のソフトウェアベースの圧縮システムは、データファイルを単一の圧縮データファイル110または128KBのサイズの複数の圧縮データブロック112のいずれかに圧縮するので、アプリケーションがデータファイルの小部分(たとえば4KB)を読み取るように要求するだけである場合であっても、制御システム106は、単一の圧縮データファイル110、または複数の圧縮データブロック112の中の128KBの圧縮データブロックを読み取り、解凍しなければならない。その結果、従来のソフトウェアベースの圧縮システムはまた、著しい処理オーバヘッドを伴う。
【００２２】
ホストシステム100内でデータ圧縮/解凍を実施することの代替として、ストレージデバイス104内でデータ圧縮/解凍を実施することも可能である。この点で、図1Bは、従来のストレージデバイス駆動圧縮システムに基づいてストレージ圧縮を実施するように構成された例示的ホストシステム100(1)の概略図である。
【００２３】
図1Bを参照すると、ホストシステム100(1)は、ホストシステム100(1)に結合されたストレージデバイス104(1)への読取り/書込みアクセスを可能にするように構成されたストレージコントローラ102(1)を含む。ホストシステム100(1)はまた、ホストシステム100(1)内で動作中のアプリケーションへのデータアクセスを実現するように構成される制御システム106(1)をも含む。ストレージデバイス104(1)は、従来のストレージデバイス駆動圧縮システムをサポートするように構成された圧縮エンジン114を含む。
【００２４】
アプリケーションがストレージデバイス104(1)に非圧縮データファイル116を書き込むように要求するとき、ストレージコントローラ102(1)は、ストレージデバイス104(1)に非圧縮データファイル116を送る。ストレージデバイス104(1)内のストレージデータブロック(図示せず)に非圧縮データファイル116を書き込む前に、圧縮エンジン114は、ホストシステム100(1)にとって通常は未知である圧縮アルゴリズムに基づいて、非圧縮データファイル116を複数の圧縮データブロック(図示せず)に圧縮する。言い換えれば、ホストシステム100(1)は、圧縮エンジン114によってどのように圧縮が実施されるかに関する知識または制御を持たない。
【００２５】
アプリケーションがストレージデバイス104(1)から非圧縮データファイル116を読み取るように要求するとき、圧縮エンジン114は、非圧縮データファイル116に対応する複数の圧縮データブロックを解凍し、非圧縮データファイル116をホストシステム100(1)に戻す。したがって、制御システム106(1)も、圧縮エンジン114がどのように非圧縮データファイル116を圧縮するかに関する制御を持たない。
【００２６】
上記で図1Aおよび図1Bで論じたように、従来のソフトウェアベースの圧縮システムと従来のストレージデバイス駆動圧縮システムはともに、明らかな欠点を有する。従来のソフトウェアベースの圧縮システムは処理遅延および処理オーバヘッドを招き、従来のストレージデバイス駆動圧縮システムはホストシステムに対する制御を与えない。したがって、従来のソフトウェアベースの圧縮システムに関連する処理遅延および処理オーバヘッドを削減することができるとともに、従来のストレージデバイス駆動圧縮システムよりも圧縮制御を改善する圧縮システムを有することが望ましいことがある。
【００２７】
この点で、図2は、ハードウェアアクセラレーテッドストレージ圧縮システムに基づいてストレージデバイス204に1つまたは複数の非圧縮データブロック202(1)〜202(N)を書き込むように構成された例示的ホストシステム200の概略図である。
【００２８】
ホストシステム200は、ストレージデバイス204への読取り/書込みアクセスを可能にするように構成されたストレージコントローラ206を含む。非限定的な例では、ストレージデバイス204は、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、エンベデッドマルチメディアカード(eMMC)、ユニバーサルフラッシュストレージ(UFS)、および/またはユニバーサルシリアルバス(USB)ストレージデバイスであり得る。別の非限定的な例では、ストレージデバイス204はホストシステム200内に組み込まれ得るか、または外部でホストシステム200に結合され得る。ホストシステム200はまた制御システム208をも含み、制御システム208は、たとえばホストシステム200内で動作中のアプリケーション210へのデータアクセスを実現するように構成される、オペレーティングシステム(OS)および/またはファイルシステム(FS)であり得る。非限定的な例では、OSは、Android、iOS、Windows、Linux(登録商標)、および/またはUNIX(登録商標)であり得る。
【００２９】
アプリケーション210がホストシステム200内で動作中であるとき、アプリケーション210は、1つまたは複数の非圧縮データブロック202(1)〜202(N)を生成し、たとえばシステムメモリ212内に一時的に記憶し得る。非限定的な例では、システムメモリ212はダイナミックランダムアクセスメモリ(DRAM)であり得る。アプリケーション210がデータファイル214の形の1つまたは複数の非圧縮データブロック202(1)〜202(N)を永続的に記憶する必要があるとき、制御システム208は、inode216を生成して、データファイル214および1つまたは複数の非圧縮データブロック202(1)〜202(N)に関するメタデータを記憶する。非限定的な例では、inode216はデータ構造として提供され、データファイル214を定義するようなメタデータ(たとえば、ファイル名、ファイル所有者、ファイルアクセス許可など)を含む。inode216はまた、1つまたは複数の非圧縮データブロック202(1)〜202(N)にそれぞれ関連する1つまたは複数のLBA218(1)〜218(N)を指し示すLBAポインタ(図示せず)をも含む。1つまたは複数のLBA218(1)〜218(N)は、データファイル214内の1つまたは複数の非圧縮データブロック202(1)〜202(N)の位置を突き止めるために制御システム208によって使用され得る。非限定的な例では、1つまたは複数のLBA218(1)〜218(N)の各々は、2の32乗(232)個のデータブロックをアドレス指定することのできる32ビットの長さをそれぞれ有する。inode216の構造および内容が図3を参照してさらに示され、論じられる。
【００３０】
inode216内でデータファイル214を定義した後で、制御システム208は、ストレージコントローラ206に書込み要求220を送り、ストレージデバイス204に1つまたは複数の非圧縮データブロック202(1)〜202(N)を書き込む。ストレージコントローラ206は、ハードウェアアクセラレーテッドストレージ圧縮システムをサポートするように構成されたハードウェア圧縮アクセラレータ222を含む。ハードウェア圧縮アクセラレータ222は、1つまたは複数の非圧縮データブロック202(1)〜202(N)を圧縮して、それぞれ1つまたは複数の圧縮データブロック224(1)〜224(N)を生成する。非限定的な例によれば、ハードウェア圧縮アクセラレータ222は、1つまたは複数の非圧縮データブロック202(1)〜202(N)の各々を個々に圧縮するように構成される。その結果、1つまたは複数の圧縮データブロック224(1)〜224(N)のそれぞれのサイズは、1つまたは複数の非圧縮データブロック202(1)〜202(N)のそれぞれのサイズ以下となる。
【００３１】
ハードウェア圧縮アクセラレータ222は、同一の圧縮アルゴリズムを使用して1つまたは複数の非圧縮データブロック202(1)〜202(N)の各々を圧縮するように構成されるが、1つまたは複数の圧縮データブロック224(1)〜224(N)は同一のサイズでないことがある。たとえば、1つまたは複数の非圧縮データブロック202(1)〜202(N)の各々が4KBのサイズである場合、1つまたは複数の圧縮データブロック224(1)〜224(N)の各々は、4KB以下の任意のサイズであり得る。したがって、1つまたは複数の圧縮データブロック224(1)〜224(N)の中の圧縮データブロックが、ハードウェア圧縮アクセラレータ222によって圧縮された後、依然として4KBのサイズである場合、圧縮データブロックは実際には圧縮されていない。したがって、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の非圧縮データブロックのそれぞれのサイズに対して圧縮データブロックのそれぞれのサイズを比較することによって、1つまたは複数の圧縮データブロック224(1)〜224(N)の中の圧縮データブロックが圧縮されるか、それとも圧縮されないかをハードウェア圧縮アクセラレータ222が決定することが可能である。
【００３２】
引き続き図2を参照すると、ハードウェア圧縮アクセラレータ222は、ストレージデバイス204内の1つまたは複数のストレージデータブロック226(1)〜226(M)に1つまたは複数の圧縮データブロック224(1)〜224(N)の各々を割り振るようにさらに構成される。非限定的な例では、1つまたは複数のストレージデータブロック226(1)〜226(M)の各々は4KBのサイズである。1つまたは複数の圧縮データブロック224(1)〜224(N)は4KB以下である任意のサイズであり得るので、ハードウェア圧縮アクセラレータ222が、1つまたは複数の圧縮データブロック224(1)〜224(N)の中の圧縮データブロックを、1つまたは複数の圧縮データブロック224(1)〜224(N)の中の少なくとも1つの他の圧縮データブロックとともに、1つまたは複数のストレージデータブロック226(1)〜226(M)の中のストレージデータブロック内に配置することが可能であり得る。その結果、ハードウェア圧縮アクセラレータ222は、より少数のストレージデータブロック226(1)〜226(M)内に1つまたは複数の圧縮データブロック224(1)〜224(N)を記憶し、したがってストレージデバイス204内の記憶空間を節約し得る。ストレージデータブロック割振りに関するより詳細な議論が、後で図4を参照して与えられる。
【００３３】
その後で、ストレージコントローラ206は、1つまたは複数のストレージデータブロック226(1)〜226(M)に1つまたは複数の圧縮データブロック224(1)〜224(N)を書き込むように構成される。制御システム208が1つまたは複数のLBA218(1)〜218(N)に基づいて1つまたは複数の圧縮データブロック224(1)〜224(N)の位置を突き止めるのを助けるために、ハードウェア圧縮アクセラレータ222は、1つまたは複数の修正LBA228(1)〜228(N)を生成し、制御システム208に提供する。1つまたは複数の修正LBA228(1)〜228(N)は、1つまたは複数のLBA218(1)〜218(N)をそれぞれ1つまたは複数の圧縮データブロック224(1)〜224(N)と相関させるように構成される。制御システム208は、1つまたは複数の修正LBA228(1)〜228(N)を受け取り、1つまたは複数のLBA218(1)〜218(N)とそれぞれ相関させてinode216内に1つまたは複数の修正LBA228(1)〜228(N)を記憶する。図3および図4を参照して次に示されるように、1つまたは複数の修正LBA228(1)〜228(N)は、1つまたは複数の非圧縮データブロック202(1)〜202(N)を1つまたは複数の圧縮データブロック224(1)〜224(N)と実質的に相関させる。
【００３４】
この点で、図3は、1つまたは複数の非圧縮データブロック202(1)〜202(N)をそれぞれ1つまたは複数の圧縮データブロック224(1)〜224(N)と相関させるように構成された1つまたは複数の修正LBA228(1)〜228(N)を含む図2のinode216の例示的図解を与える概略図である。図2の要素が図3に関連して参照され、本明細書では再び説明されない。
【００３５】
図3を参照すると、inode216は、1つまたは複数の修正LBA228(1)〜228(N)を指し示すLBAポインタ300を含む。1つまたは複数の修正LBA228(1)〜228(N)は、それぞれ1つまたは複数の圧縮ビットマップ302(1)〜302(N)を含む。
【００３６】
例示の便宜上、非限定的な例として、本明細書では修正LBA228(N)内の圧縮ビットマップ302(N)が論じられる。圧縮ビットマップ302(N)、図2の修正LBA228(N)、LBA218(N)、図2の非圧縮データブロック202(N)、および図2の圧縮データブロック224(N)を参照して本明細書で与えられる例示が、1つまたは複数の圧縮ビットマップ302(1)〜302(N)のすべてに適用可能であることを理解されたい。
【００３７】
引き続き図3を参照すると、圧縮ビットマップ302(N)は圧縮インジケータ306、シーケンス番号308、およびLBA番号310を含む。非限定的な例では、圧縮インジケータ306は1ビットの長さである。ハードウェア圧縮アクセラレータ222は、非圧縮データブロック202(N)が圧縮される場合、圧縮インジケータ306を1にセットし、非圧縮データブロック202(N)が圧縮されない場合、0にセットする。非圧縮データブロック202(N)が圧縮されるか、それとも圧縮されないかを決定するために、図2のハードウェア圧縮アクセラレータ222は、圧縮データブロック224(N)のそれぞれのサイズと、非圧縮データブロック202(N)のそれぞれのサイズとを比較するように構成される。圧縮データブロック224(N)のそれぞれのサイズが非圧縮データブロック202(N)のそれぞれのサイズ未満である場合、非圧縮データブロック202(N)は圧縮されると見なされ、ハードウェア圧縮アクセラレータ222は圧縮インジケータ306を1にセットする。対照的に、圧縮データブロック224(N)のそれぞれのサイズが非圧縮データブロック202(N)のそれぞれのサイズに等しい場合、非圧縮データブロック202(N)は圧縮されないと見なされ、ハードウェア圧縮アクセラレータ222は圧縮インジケータ306を0にセットする。
【００３８】
図2を参照して先に論じられたように、1つまたは複数の圧縮データブロック224(1)〜224(N)の中の圧縮データブロックを、1つまたは複数の圧縮データブロック224(1)〜224(N)の中の少なくとも1つの他の圧縮データブロックとともに、1つまたは複数のストレージデータブロック226(1)〜226(M)の中のストレージデータブロック内に配置することが可能であり得る。非限定的な例では、ハードウェア圧縮アクセラレータ222によって1つまたは複数のストレージデータブロック226(1)〜226(M)の各々の中にともに配置することのできる最大圧縮データブロック数を定義するために、所定の割振り限度がハードウェア圧縮アクセラレータ222内で事前にプログラムされ得る。したがって、圧縮データブロック224(N)が1つまたは複数の圧縮データブロック224(1)〜224(N)の中の少なくとも1つの他の圧縮データブロックとともに配置される場合、シーケンス番号308は、ストレージデータブロック内の圧縮データブロック224(N)の相対的シーケンスを示すように構成される。シーケンス番号308内のビット数(NBITと呼ばれることがある)が、以下の式1の所定の割振り限度に基づいて決定され得る。
【００３９】
【数１】
2018530053.tif 000003
【００４０】
LBA番号310は、inode216内の修正LBA228(N)に対応するLBA218(N)を示すように構成される。非限定的な例では、LBA番号310は16進フォーマットで表現され得る。
【００４１】
1つまたは複数の圧縮ビットマップ302(1)〜302(N)がどのように図2の1つまたは複数の非圧縮データブロック202(1)〜202(N)を1つまたは複数の圧縮データブロック224(1)〜224(N)と相関させることができるかをさらに理解するのを助けるために、図4が次に与えられる。明快および便宜のために、非圧縮データブロック202(1)〜202(5)、圧縮データブロック224(1)〜224(5)、修正LBA228(1)〜228(5)、およびLBA218(1)〜218(5)が、本明細書で非限定的な例として示され、論じられる。
【００４２】
この点で、図4は、非圧縮データブロック202(1)〜202(5)と、圧縮データブロック224(1)〜224(5)と、修正LBA228(1)〜228(5)と、LBA218(1)〜218(5)との間の相関の例示的図解を与える概略図である。図2と、図3と、図4との間の共通の要素がその中に共通の要素番号とともに示されており、本明細書では再び説明されない。
【００４３】
図4に示されるように、非限定的な例では、LBA218(1)〜218(5)は、それぞれ16進数の10(0x10)、16進数の11(0x11)、16進数の12(0x12)、16進数の13(0x13)、および16進数の14(0x14)を有する。
【００４４】
図4を参照すると、圧縮データブロック224(1)が、ストレージデータブロック226(1)内に圧縮データブロック224(2)とともに配置される。図2のハードウェア圧縮アクセラレータ222は、2つのテストに基づいて、圧縮データブロック224(1)が圧縮データブロック224(2)とともに配置され得るかどうかを決定する。第1のテストは、圧縮データブロック224(1)および圧縮データブロック224(2)の全サイズが、ストレージデータブロック226(1)のサイズ以下であることを確認することであり、ストレージデータブロック226(1)のサイズは、図2を参照して与えられる非限定的な例によれば4KBである。この点で、第1のテストに合格する場合、圧縮データブロック224(1)〜224(2)は、それぞれ非圧縮データブロック202(1)〜202(2)よりもサイズが小さい。
【００４５】
引き続き図4を参照すると、第2のテストは、圧縮データブロック224(1)および圧縮データブロック224(2)の総数が、ストレージデータブロック当たり割り振ることのできる圧縮データブロックの総数を定義する所定の割振り限度以下であることを確認することである。たとえば、所定の割振り限度が2にセットされる場合、圧縮データブロック224(1)および圧縮データブロック224(2)は第2のテストに合格することになる。
【００４６】
この点で、圧縮ビットマップ302(1)では、非圧縮データブロック202(1)が圧縮されることを示すために、圧縮インジケータ306がハードウェア圧縮アクセラレータ222によって1にセットされる。圧縮データブロック224(1)がストレージデータブロック226(1)内の第1の圧縮データブロックであることを示すために、シーケンス番号308が0にセットされる。LBA番号310が、ハードウェア圧縮アクセラレータ222によって、非圧縮データブロック202(1)のLBA値を示す0x10にセットされる。したがって、修正LBA228(1)、非圧縮データブロック202(1)、および圧縮データブロック224(1)は互いに相関になる。
【００４７】
圧縮ビットマップ302(2)では、非圧縮データブロック202(2)が圧縮されることを示すために、圧縮インジケータ306が1にセットされる。圧縮データブロック224(2)がストレージデータブロック226(1)内の第2の圧縮データブロックであることを示すために、シーケンス番号308がハードウェア圧縮アクセラレータ222によって1にセットされる。LBA番号310が、ハードウェア圧縮アクセラレータ222によって、非圧縮データブロック202(2)のLBA値を示す0x10にセットされる。
【００４８】
引き続き図4を参照すると、圧縮データブロック224(3)が単独でストレージデータブロック226(2)に割り振られる。図示されるように、圧縮データブロック224(3)のサイズは非圧縮データブロック202(3)と同一である。図2を参照する先の議論によれば、非圧縮データブロック202(3)は、ハードウェア圧縮アクセラレータ222によって圧縮された後に非圧縮のままである。この点で、圧縮ビットマップ302(3)では、非圧縮データブロック202(3)が非圧縮のままであることを示すために、圧縮インジケータ306がハードウェア圧縮アクセラレータ222によって0にセットされる。圧縮データブロック224(3)がストレージデータブロック226(2)内の第1の圧縮データブロックであることを示すために、シーケンス番号308が0にセットされる。LBAブロック番号310が、ハードウェア圧縮アクセラレータ222によって、非圧縮データブロック202(3)のLBA値である0x11にセットされる。
【００４９】
引き続き図4を参照すると、圧縮データブロック224(4)〜224(5)が、ストレージデータブロック226(3)にともに配置される。したがって、圧縮ビットマップ302(4)では、非圧縮データブロック202(4)が圧縮されることを示すために、圧縮インジケータ306がハードウェア圧縮アクセラレータ222によって1にセットされる。圧縮データブロック224(4)がストレージデータブロック226(3)内の第1の圧縮データブロックであることを示すために、シーケンス番号308が0にセットされる。LBA番号310が、ハードウェア圧縮アクセラレータ222によって、非圧縮データブロック202(4)のLBA値である0x12にセットされる。
【００５０】
圧縮ビットマップ302(5)では、非圧縮データブロック202(5)が圧縮されることを示すために、圧縮インジケータ306が1にセットされる。圧縮データブロック224(5)がストレージデータブロック226(3)内の第2の圧縮データブロックであることを示すために、シーケンス番号308がハードウェア圧縮アクセラレータ222によって1にセットされる。LBA番号310も、ハードウェア圧縮アクセラレータ222によって、非圧縮データブロック202(5)のLBA値である0x12にセットされる。
【００５１】
図2を参照して先に論じたように、制御システム208が1つまたは複数の圧縮データブロック224(1)〜224(N)の位置を突き止めるのを助けるために、ハードウェア圧縮アクセラレータ222は1つまたは複数の修正LBA228(1)〜228(N)を生成する。したがって、制御システム208が、inode216内に記憶された1つまたは複数の修正LBA228(1)〜228(N)に基づいて、ストレージデバイス204から1つまたは複数の圧縮データブロック224(1)〜224(N)を読み取ることが可能となる。この点で、図5は、それぞれ1つまたは複数の修正LBA228(1)〜228(N)に基づいて、ストレージデバイス204から図2の1つまたは複数の非圧縮データブロック202(1)〜202(N)を読み取るように構成された例示的ホストシステム500の概略図である。図2と図5との間の共通の要素がその中に共通の要素番号とともに示されており、本明細書では再び説明されない。
【００５２】
図5を参照すると、アプリケーション502がストレージデバイス204から1つまたは複数の非圧縮データブロック202(1)〜202(N)を含むデータファイル214を読み取る必要があるとき、制御システム504は、ストレージコントローラ206に、1つまたは複数の修正LBA228(1)〜228(N)とともに読取り要求506を与える。図2〜図4を参照する先の議論によれば、1つまたは複数の修正LBA228(1)〜228(N)は、1つまたは複数の非圧縮データブロック202(1)〜202(N)を1つまたは複数の圧縮データブロック224(1)〜224(N)と相関させる。したがって、ストレージコントローラ206は、ストレージデバイス204から1つまたは複数の圧縮データブロック224(1)〜224(N)を取り出す。ハードウェア圧縮アクセラレータ222は、1つまたは複数の圧縮データブロック224(1)〜224(N)を、それぞれ1つまたは複数の非圧縮データブロック202(1)〜202(N)に解凍する。非限定的な例では、1つまたは複数の非圧縮データブロック202(1)〜202(N)は、アプリケーション502によるアクセスのためにシステムメモリ212内に記憶される。
【００５３】
図6は、ハードウェアアクセラレーテッド圧縮システムの下でストレージデバイス204に図2の1つまたは複数の非圧縮データブロック202(1)〜202(N)を書き込むための例示的書込みプロセス600のフローチャートである。図2の要素が図6に関連して参照され、本明細書では再び説明されない。
【００５４】
書込みプロセス600によれば、制御システム208は、書込み要求220を与えて、ストレージデバイス204に1つまたは複数の非圧縮データブロック202(1)〜202(N)を書き込み、ストレージデバイス204内では、1つまたは複数の非圧縮データブロック202(1)〜202(N)の各々が、1つまたは複数のLBA218(1)〜218(N)の中のそれぞれのLBAに関連付けられる(ブロック602)。1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータ222は、非圧縮データブロックを圧縮データブロックに圧縮する(ブロック604)。その後で、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータ222は、圧縮データブロックをストレージデバイス204内のストレージデータブロックに割り振る(ブロック606)。次いで、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータ222は、修正LBAを生成して非圧縮データブロックを圧縮データブロックと相関させ、修正LBAは圧縮ビットマップを含む(ブロック608)。上記で論じた圧縮ビットマップは、圧縮インジケータ、シーケンス番号、およびLBA番号を含み得る。圧縮インジケータは、それぞれの圧縮データブロックが圧縮されるかどうかを示すように構成される。シーケンス番号は、それぞれの圧縮データブロックがその中に記憶されるストレージデータブロック内のそれぞれの圧縮データブロックの相対的シーケンスを示すように構成される。LBA番号は、それぞれの圧縮データブロックに対応する非圧縮データブロックのそれぞれのLBAを示すように構成される。
【００５５】
図7は、ハードウェアアクセラレーテッド圧縮システムの下でストレージデバイス204から図5の1つまたは複数の非圧縮データブロック202(1)〜202(N)を読み取るための例示的読取りプロセス700のフローチャートである。図5の要素が図7に関連して参照され、本明細書では再び説明されない。
【００５６】
読取りプロセス700によれば、制御システム504は、読取り要求506を与えて、ストレージデバイス204から1つまたは複数の非圧縮データブロック202(1)〜202(N)を読み取る(ブロック702)。1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の各非圧縮データブロックについて、制御システム504は、非圧縮データブロックをそれぞれの圧縮データブロックと相関させるそれぞれの修正LBAを提供し、修正LBAは圧縮ビットマップを含む(ブロック704)。上記で論じたように、圧縮ビットマップは、圧縮インジケータ、シーケンス番号、およびLBA番号を含み得る。圧縮インジケータは、それぞれの圧縮データブロックが圧縮されるかどうかを示すように構成される。シーケンス番号は、それぞれの圧縮データブロックがその中に記憶されるストレージデータブロック内のそれぞれの圧縮データブロックの相対的シーケンスを示すように構成される。LBA番号は、それぞれの圧縮データブロックに対応する非圧縮データブロックのそれぞれのLBAを示すように構成される。
【００５７】
その後で、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の各非圧縮データブロックについて、ストレージコントローラ206は、ストレージデバイス204からそれぞれの圧縮データブロックを取り出す(ブロック706)。次いで、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータ222は、それぞれの圧縮データブロックを非圧縮データブロックに解凍する(ブロック708)。
【００５８】
図2および図5を参照する先の議論によれば、制御システム208は、ストレージコントローラ206に書込み要求220または読取り要求506を送り、ストレージデバイス204に1つまたは複数の非圧縮データブロック202(1)〜202(N)を書き込むか、またはストレージデバイス204から1つまたは複数の非圧縮データブロック202(1)〜202(N)を読み取る。非限定的な例では、書込み要求220および読取り要求506は、HCIを介して制御システム208からストレージコントローラ206に与えられ得る。この点で、図8は、図2および図5の制御システム208がその中でHCI802を介してストレージコントローラ206と通信するように構成される例示的ホストシステム800の概略図である。図2と、図5と、図8との間の共通の要素がその中に共通の要素番号とともに示されており、本明細書では再び説明されない。
【００５９】
図8を参照すると、ストレージデバイス204に1つまたは複数の非圧縮データブロック202(1)〜202(N)を書き込むようにストレージコントローラ206に要求するために、書込み要求220は、書込み指示、1つまたは複数の非圧縮データブロック202(1)〜202(N)の開始LBA、および1つまたは複数の非圧縮データブロック202(1)〜202(N)の総カウントのような情報を搬送する。同様に、読取り要求506は、読取り指示、1つまたは複数の非圧縮データブロック202(1)〜202(N)の開始LBA、および1つまたは複数の非圧縮データブロック202(1)〜202(N)の総カウントを搬送する。書込み要求220および読取り要求506は、図9Aおよび図9Bを参照してさらに示され、論じられる標準HCIデータ構造を使用して与えられ得る。
【００６０】
引き続き図8を参照すると、ハードウェア圧縮アクセラレータ222は、1つまたは複数の非圧縮データブロック202(1)〜202(N)を圧縮し、圧縮アルゴリズムに基づいて1つまたは複数の圧縮データブロック224(1)〜224(N)を解凍する。ハードウェア圧縮アクセラレータ222によって利用され得る圧縮アルゴリズムを定義するために、複数の圧縮構成レジスタ804(1)〜804(Y)がHCI802内に設けられる。複数の圧縮構成レジスタ804(1)〜804(Y)の各々は、ハードウェア圧縮アクセラレータ222によって利用され得るそれぞれの圧縮アルゴリズムを定義する。非限定的な例では、複数の圧縮構成レジスタ804(1)〜804(Y)内で定義される圧縮アルゴリズムは、ランレングス符号化(RLE)、Lempel-Ziv符号化(LZ)、ハフマン符号化(Huffman)、LZプラスハフマン辞書ゼロ、LZプラスハフマン辞書1などを含み得る。圧縮アルゴリズムは制御システム208によって決定され得、書込み要求220または読取り要求506内でストレージコントローラ206に通信され得る。標準HCIデータ構造を使用して圧縮アルゴリズムを通信することに関するより詳しい議論は、図10Aおよび図10Bを参照して後で与えられる。
【００６１】
図2で先に論じたように、ストレージデバイス204はeMMCであり得る。この点で、図9Aは、制御システム208からストレージコントローラ206に図8の書込み要求220および読取り要求506を与えるように構成され得る例示的eMMC HCIデータ構造900の概略図である。図8の要素が図9Aに関連して参照され、本明細書では再び説明されない。
【００６２】
図9Aを参照すると、eMMC HCIデータ構造900は、書込み動作または読取り動作のいずれかを示すように構成されたデータ方向フィールド902を含む。eMMC HCIデータ構造900はまた、1つまたは複数の圧縮データブロック224(1)〜224(N)の開始LBAを示すように構成されたブロックアドレスフィールド904をも含み、開始LBAは、圧縮データブロック224(1)の修正LBA228(1)である。eMMC HCIデータ構造900はまた、1つまたは複数の圧縮データブロック224(1)〜224(N)の総カウントを示すように構成されたブロックカウントフィールド906をも含み、総カウントはNである。この点で、ストレージコントローラ206は、eMMC HCIデータ構造900内で与えられる情報に基づいて、ストレージデバイス204に1つまたは複数の圧縮データブロック224(1)〜224(N)を書き込むことができ、またはストレージデバイス204から1つまたは複数の圧縮データブロック224(1)〜224(N)を読み取ることができる。
【００６３】
図2で先に論じたように、ストレージデバイス204はUFSであり得る。この点で、図9Bは、制御システム208からストレージコントローラ206に図8の書込み要求220および読取り要求506を与えるように構成され得る例示的UFS HCIデータ構造908の概略図である。図8の要素が図9Bに関連して参照され、本明細書では再び説明されない。
【００６４】
図9Bを参照すると、UFS HCIデータ構造908は、書込み動作または読取り動作のいずれかを示すように構成された動作コードフィールド910を含む。UFS HCIデータ構造908はまた、1つまたは複数の圧縮データブロック224(1)〜224(N)の開始LBAを示すように構成されたLBAフィールド912をも含み、開始LBAは、圧縮データブロック224(1)の修正LBA228(1)である。UFS HCIデータ構造908はまた、1つまたは複数の圧縮データブロック224(1)〜224(N)の総カウントを示すように構成された転送長フィールド914をも含み、総カウントはNである。この点で、ストレージコントローラ206は、UFS HCIデータ構造908内で与えられる情報に基づいて、ストレージデバイス204に1つまたは複数の圧縮データブロック224(1)〜224(N)を書き込むことができ、またはストレージデバイス204から1つまたは複数の圧縮データブロック224(1)〜224(N)を読み取ることができる。
【００６５】
図8で論じたように、圧縮アルゴリズムは制御システム208によって決定され得、書込み要求220または読取り要求506内でストレージコントローラ206に通信され得る。この点で、ストレージデバイス204がeMMCである場合、図10Aは、図8のハードウェア圧縮アクセラレータ222のための少なくとも1つの圧縮アルゴリズムを定義するように構成された例示的eMMC HCIデータ構造1000の概略図である。
【００６６】
図10Aを参照すると、eMMC HCIデータ構造1000は、予約済みデータフィールド1002を含むeMMCタスク記述子に基づく。たとえば64ビットの長さである予約済みデータフィールド1002は、制御システム208とハードウェア圧縮アクセラレータ222との間の圧縮マップ(図示せず)を通信するように再構成される。各圧縮マップは、1ビット(1-bit)の圧縮イネーブル/ディスエーブルインジケータと、複数の圧縮構成レジスタ804(1)〜804(Y)のうちの1つを指し示すnビットの圧縮アルゴリズムアレイ索引(CIDX)とを含み、nは有限の正の整数である。この点で、予約済みデータフィールド1002内で提供され得る圧縮マップ数は、以下の式2に基づいて決定され得る。
【００６７】
【数２】
2018530053.tif 000004
【００６８】
eMMC HCIデータ構造1000が読取り要求506を備える場合、予約済みデータフィールド1002は、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の最大でNMAP個の非圧縮データブロックについての、最大でNMAP個の圧縮マップを搬送するように構成される。eMMC HCIデータ構造1000が書込み要求220を備える場合、予約済みデータフィールド1002は0にセットされる。ハードウェア圧縮アクセラレータ222が1つまたは複数の修正LBA228(1)〜228(N)を返すとき、予約済みデータフィールド1002は、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の最大でNMAP個の非圧縮データブロックについての、最大NMAP個の圧縮マップを搬送するように構成される。
【００６９】
ストレージデバイス204はUFSでもあり得る。この点で、図10Bは、図8のハードウェア圧縮アクセラレータ222のための少なくとも1つの圧縮アルゴリズムを定義するように構成された例示的UFS HCIデータ構造1004の概略図である。
【００７０】
図10Bを参照すると、UFS HCIデータ構造1004は、第1の予約済みデータフィールド1006および第2の予約済みデータフィールド1008を含むUFS転送要求記述子に基づく。第1の予約済みデータフィールド1006および第2の予約済みデータフィールド1008はそれぞれ、32ビットの長さである。この点で、第1の予約済みデータフィールド1006および第2の予約済みデータフィールド1008は、64ビットの長さである予約済みデータフィールド1010を形成する。
【００７１】
予約済みデータフィールド1010は、制御システム208とハードウェア圧縮アクセラレータ222との間の圧縮マップ(図示せず)を通信するように再構成される。各圧縮マップは、1ビットの圧縮イネーブル/ディスエーブルインジケータと、複数の圧縮構成レジスタ804(1)〜804(Y)のうちの1つを指し示すnビットのCIDXとを含み、nは有限の正の整数である。この点で、予約済みデータフィールド1010内で提供され得る圧縮マップ数は、上記の式2に基づいて決定され得る。
【００７２】
UFS HCIデータ構造1004が読取り要求506を備える場合、予約済みデータフィールド1010は、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の最大でNMAP個の非圧縮データブロックについての、最大NMAP個の圧縮マップを搬送するように構成される。UFS HCIデータ構造1004が書込み要求220を備える場合、予約済みデータフィールド1010は0にセットされる。ハードウェア圧縮アクセラレータ222が1つまたは複数の修正LBA228(1)〜228(N)を返すとき、予約済みデータフィールド1010は、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の最大でNMAP個の非圧縮データブロックについての、最大NMAP個の圧縮マップを搬送するように構成される。
【００７３】
図2のホストシステム200、図5のホストシステム500、および図8のホストシステム800は、任意のプロセッサベースのデバイス内に設けられ得、または任意のプロセッサベースのデバイス内に統合され得る。限定はしないが、例は、セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、携帯電話、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、個人情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、同調器、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車を含む。
【００７４】
この点で、図11は、図2のホストシステム200、図5のホストシステム500、および図8のホストシステム800を利用し得るプロセッサベースのシステム1100の一例を示す。この例では、プロセッサベースのシステム1100は1つまたは複数の中央演算処理装置(CPU)1102を含み、各々は1つまたは複数のプロセッサ1104を含む。CPU1102は、一時的に記憶されたデータへの迅速なアクセスのための、プロセッサ1104に結合されたキャッシュメモリ1106を有し得る。CPU1102はシステムバス1108に結合される。周知のように、CPU1102は、システムバス1108を介してアドレス、制御、およびデータ情報を交換することによって他のデバイスと通信する。図11には示されていないが、複数のシステムバス1108が設けられ得、各システムバス1108は異なるファブリックを構成する。
【００７５】
他のマスタおよびスレーブデバイスがシステムバス1108に接続され得る。図11に示されるように、これらのデバイスは、例として、メモリシステム1110、1つまたは複数の入力デバイス1112、1つまたは複数の出力デバイス1114、1つまたは複数のネットワークインターフェースデバイス1116、および1つまたは複数のディスプレイコントローラ1118を含み得る。入力デバイス1112は、限定はしないが入力キー、スイッチ、ボイスプロセッサなどを含む、任意のタイプ入力デバイスを含み得る。出力デバイス1114は、限定はしないがオーディオ、ビデオ、他の視覚的インジケータなどを含む、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス1116は、ネットワーク1120との間のデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク1120は、限定はしないがワイヤードもしくはワイヤレスネットワーク、プライベートもしくは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、広域ネットワーク(WAN)、Bluetooth(登録商標)ネットワーク、またはインターネットを含む、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス1116は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム1110は、1つまたは複数のメモリユニット1122(0〜N)およびメモリコントローラ1124を含み得る。
【００７６】
CPU1102はまた、システムバス1108を介してディスプレイコントローラ1118にアクセスして、1つまたは複数のディスプレイ1126に送られる情報を制御するように構成され得る。ディスプレイコントローラ1118は、1つまたは複数のビデオプロセッサ1128を介して、表示されるべき情報をディスプレイ1126に送り、1つまたは複数のビデオプロセッサ1128は、表示されるべき情報をディスプレイ1126に適したフォーマットに処理する。ディスプレイ1126は、限定はしないが陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、発光ダイオード(LED)ディスプレイなどを含む、任意のタイプのディスプレイを含み得る。
【００７７】
本明細書で開示される態様に関連して説明される様々な例示的論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体内に記憶され、プロセッサもしくは他の処理デバイスで実行される命令、またはその両方の組合せとして実装され得ることを当業者はさらに理解されよう。本明細書で説明されるマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップ内で利用され得る。本明細書で開示されるメモリは、任意のタイプおよびサイズのメモリであり得、所望の任意のタイプの情報を記憶するように構成され得る。この互換性を明確に示すために、様々な例示的構成要素、ブロック、モジュール、回路、およびステップが、その機能の点で上記で一般的に説明された。そのような機能がどのように実装されるかは、特定の応用例、設計選択肢、および/またはシステム全体に課される設計制約に依存する。当業者は、特定の応用例ごとに様々な方式で記載の機能を実装し得るが、そのような実装の決定が、本開示の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００７８】
本明細書で開示される態様に関連して説明される様々な例示的論理ブロック、モジュール、および回路は、本明細書で説明される機能を実施するように設計されたプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、ディスクリートゲートもしくはトランジスタロジック、ディスクリートハードウェア構成要素、またはそれらの任意の組合せとともに実装または実施され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ(たとえばDSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、1つまたは複数のマイクロプロセッサとDSPコア、あるいは任意の他のそのような構成)として実装され得る。
【００７９】
本明細書で開示される態様は、ハードウェア内に記憶されるハードウェアおよび命令で実施され得、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気プログラマブルROM(EPROM)、電気消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、取外し可能ディスク、CD-ROM、または当技術分野で周知の任意の他の形態のコンピュータ可読媒体内に存在し得る。例示的記憶媒体が、プロセッサが記憶媒体から情報を読み取り得、記憶媒体に情報を書き込み得るようにプロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。プロセッサおよび記憶媒体はASIC内に存在し得る。ASICはリモート局内に存在し得る。代替として、プロセッサおよび記憶媒体は、リモート局、基地局、またはサーバ内の別個の構成要素として存在し得る。
【００８０】
本明細書の例示的態様のいずれかで説明される動作ステップは、例および議論を提供するために説明されることにも留意されたい。説明される動作は、例示されるシーケンス以外の多数の異なるシーケンスにおいて実施され得る。さらに、単一の動作ステップにおいて説明される動作は、実際にはいくつかの異なるステップにおいて実施され得る。さらに、例示的態様で論じられる1つまたは複数の動作ステップは組み合わされ得る。フローチャート図において示される動作ステップは、当業者に容易に明らかとなる多数の異なる修正の対象となり得ることを理解されたい。情報および信号が様々な異なる技術および技法のいずれかを用いて表され得ることも当業者は理解されよう。たとえば、上記の説明全体にわたって参照され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップが、電圧、電流、電磁波、磁場もしくは磁気粒子、光場もしくは光粒子、またはそれらの任意の組合せによって表され得る。
【００８１】
本開示の先の説明は、当業者が本開示を作成または使用することを可能にするために与えられる。本開示に対する様々な修正が当業者には容易に明らかとなり、本明細書で定義される一般原理は、本開示の精神または範囲から逸脱することなく他の変形形態に適用され得る。したがって、本開示は、本明細書で説明される例および設計に限定されるべきではなく、本明細書で開示される原理および新規な特徴に一致する最も広い範囲が与えられるべきである。
【符号の説明】
【００８２】
100  ホストシステム
102  ストレージコントローラ
104  ストレージデバイス
106  制御システム
108  ソフトウェア圧縮エンジン
110  圧縮データファイル
112  圧縮データブロック
114  圧縮エンジン
116  非圧縮データファイル
200  ホストシステム
202  非圧縮データブロック
204  ストレージデバイス
206  ストレージコントローラ
208  制御システム
210  アプリケーション
212  システムメモリ
214  データファイル
216  inode
218  LBA
220  書込み要求
222  ハードウェア圧縮アクセラレータ
224  圧縮データブロック
226  ストレージデータブロック
228  修正LBA
300  LBAポインタ
302  圧縮ビットマップ
306  圧縮インジケータ
308  シーケンス番号
310  LBA番号
500  ホストシステム
502  アプリケーション
504  制御システム
506  読取り要求
600  書込みプロセス
700  読取りプロセス
800  ホストシステム
802  HCI
804  圧縮構成レジスタ
900  eMMC HCIデータ構造
902  データ方向フィールド
904  ブロックアドレスフィールド
906  ブロックカウントフィールド
908  UFS HCIデータ構造
910  動作コードフィールド
912  LBAフィールド
914  転送長フィールド
1000  eMMC HCIデータ構造
1002  予約済みデータフィールド
1004  UFS HCIデータ構造
1006  第1の予約済みデータフィールド
1008  第2の予約済みデータフィールド
1010  予約済みデータフィールド
1100  プロセッサベースのシステム
1102  中央演算処理装置(CPU)
1104  プロセッサ
1106  キャッシュメモリ
1108  システムバス
1110  メモリシステム
1112  入力デバイス
1114  出力デバイス
1116  ネットワークインターフェースデバイス
1118  ディスプレイコントローラ
1120  ネットワーク
1122  メモリユニット
1124  メモリコントローラ
1126  ディスプレイ
1128  ビデオプロセッサ
【図１Ａ】
2018530053.tif 000005
【図１Ｂ】
2018530053.tif 000006
【図２】
2018530053.tif 000007
【図３】
2018530053.tif 000008
【図４】
2018530053.tif 000009
【図５】
2018530053.tif 000010
【図６】
2018530053.tif 000011
【図７】
2018530053.tif 000012
【図８】
2018530053.tif 000013
【図９Ａ】
2018530053.tif 000014
【図９Ｂ】
2018530053.tif 000015
【図１０Ａ】
2018530053.tif 000016
【図１０Ｂ】
2018530053.tif 000017
【図１１】
2018530053.tif 000018
【国際調査報告】
2018530053.tif 000019
2018530053.tif 000020