(57)【要約】  ハードウェア加速ストレージ圧縮が開示される。一態様では、記憶デバイスに非圧縮データブロックを書き込む前に、ストレージコントローラ内に設けられるハードウェア圧縮アクセラレータが、非圧縮データブロックを圧縮データブロックに圧縮し、記憶デバイス内の物理データブロックに圧縮データブロックを割り振る。次いで、ハードウェア圧縮アクセラレータは、修正後論理ブロックアドレス(LBA)を生成して、非圧縮データブロックを圧縮データブロックにリンクする。別の態様では、ハードウェア圧縮アクセラレータは、圧縮データブロックの位置を、対応する修正後LBAに基づいて突き止め、圧縮データブロックを非圧縮データブロックに復元する。ストレージコントローラ内でハードウェア加速ストレージ圧縮を実施することによって、従来のソフトウェアベースの圧縮システムに関連する処理オーバヘッドを削減し、従来の記憶デバイス駆動圧縮システムよりも圧縮制御を改善することが可能となる。
2018530055.tif 000002
【特許請求の範囲】
【請求項１】
記憶デバイスに結合されたストレージコントローラであって、ハードウェア圧縮アクセラレータを備えるストレージコントローラと、
前記ストレージコントローラに書込み要求を与えて、前記記憶デバイスに1つまたは複数の非圧縮データブロックを書き込むように構成された制御システムであって、前記1つまたは複数の非圧縮データブロックの各々が、それぞれの論理ブロックアドレス(LBA)に関連付けられる、制御システムとを備えるホストシステムであって、
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記ハードウェア圧縮アクセラレータが、
前記非圧縮データブロックを圧縮データブロックに圧縮し、
前記圧縮データブロックを前記記憶デバイス内の物理データブロックに割り振り、
修正後LBAを生成して前記非圧縮データブロックを前記圧縮データブロックと相関させるように構成されるホストシステム。
【請求項２】
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記制御システムが、
前記ハードウェア圧縮アクセラレータから前記修正後LBAを受け取り、
索引付きノード(inode)内の前記それぞれのLBAを前記修正後LBAで更新する
ようにさらに構成される請求項1に記載のホストシステム。
【請求項３】
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記ストレージコントローラが、前記ハードウェア圧縮アクセラレータによって割り振られた前記物理データブロックに前記圧縮データブロックを書き込むように構成される請求項1に記載のホストシステム。
【請求項４】
前記ハードウェア圧縮アクセラレータが、
前記圧縮データブロックおよび少なくとも1つの他の圧縮データブロックの全サイズが、前記物理データブロックのサイズ以下であり、かつ
前記圧縮データブロックおよび前記少なくとも1つの他の圧縮データブロックの総数が前記物理データブロックの所定の割振り限度以下である場合、
前記圧縮データブロックを前記少なくとも1つの他の圧縮データブロックとともに前記物理データブロック内に配置するようにさらに構成される請求項1に記載のホストシステム。
【請求項５】
前記修正後LBAが、
前記圧縮データブロックが圧縮されるかどうかを示すように構成された圧縮標識と、
前記圧縮データブロックがその中に記憶される前記物理データブロック内の前記圧縮データブロックの相対的シーケンスを示すように構成されたシーケンス番号と、
前記圧縮データブロックに対応する前記非圧縮データブロックの前記それぞれのLBAを示すように構成されたLBA番号と
を含む圧縮ビットマップを含む請求項1に記載のホストシステム。
【請求項６】
前記物理データブロックおよび前記非圧縮データブロックがそれぞれ4キロバイト(4KB)のサイズを有する請求項5に記載のホストシステム。
【請求項７】
前記ストレージコントローラに結合された前記記憶デバイスが、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、エンベデッドマルチメディアカード(eMMC)、ユニバーサルフラッシュストレージ(UFS)、およびユニバーサルシリアルバス(USB)デバイスからなるグループから選択される請求項1に記載のホストシステム。
【請求項８】
集積回路(IC)内に統合された請求項1に記載のホストシステム。
【請求項９】
セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、携帯電話、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、個人情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、同調器、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されたデバイス内に統合された請求項1に記載のホストシステム。
【請求項１０】
ハードウェア加速圧縮システムの下で記憶デバイスにデータを書き込むための方法であって、
書込み要求を与えて、前記記憶デバイスに1つまたは複数の非圧縮データブロックを書き込むステップであって、前記1つまたは複数の非圧縮データブロックの各々が、それぞれの論理ブロックアドレス(LBA)に関連付けられる、ステップと、
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、
前記非圧縮データブロックを圧縮データブロックに圧縮するステップと、
前記圧縮データブロックを前記記憶デバイス内の物理データブロックに割り振るステップと、
修正後LBAを生成して前記非圧縮データブロックを前記圧縮データブロックと相関させる、ステップと
を含む方法。
【請求項１１】
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、索引付きノード(inode)内の前記それぞれのLBAを前記修正後LBAで更新するステップをさらに含む請求項10に記載の方法。
【請求項１２】
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記物理データブロックに前記圧縮データブロックを書き込むステップをさらに含む請求項10に記載の方法。
【請求項１３】
前記圧縮データブロックおよび少なくとも1つの他の圧縮データブロックの全サイズが、前記物理データブロックのサイズ以下であり、かつ
前記圧縮データブロックおよび前記少なくとも1つの他の圧縮データブロックの総数が、前記物理データブロックについての所定の割振り限度以下である場合、
前記圧縮データブロックを前記少なくとも1つの他の圧縮データブロックとともに前記物理データブロック内に配置するステップをさらに含む請求項10に記載の方法。
【請求項１４】
記憶デバイスに結合されたストレージコントローラであって、ハードウェア圧縮アクセラレータを備えるストレージコントローラと、
前記ストレージコントローラに読取り要求を与えて、前記記憶デバイスから1つまたは複数の非圧縮データブロックを読み取るように構成された制御システムとを備えるホストシステムであって、
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、
前記制御システムが、前記非圧縮データブロックを前記記憶デバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正後論理ブロックアドレス(LBA)を与えるようにさらに構成され、
前記ストレージコントローラが、前記それぞれの修正後LBAに基づいて、前記記憶デバイスから前記それぞれの圧縮データブロックを取り出すように構成され、
前記ハードウェア圧縮アクセラレータが、前記それぞれの圧縮データブロックを前記非圧縮データブロックに復元するように構成され、
前記ストレージコントローラが、前記制御システムに前記非圧縮データブロックを供給するようにさらに構成される、ホストシステム。
【請求項１５】
前記それぞれの修正後LBAが、
前記それぞれの圧縮データブロックが圧縮されるかどうかを示すように構成された圧縮標識と、
前記それぞれの圧縮データブロックがその中に記憶される物理データブロック内の前記それぞれの圧縮データブロックの相対的シーケンスを示すように構成されたシーケンス番号と、
前記それぞれの圧縮データブロックに対応する前記非圧縮データブロックのそれぞれのLBAを示すように構成されたLBA番号と
を含む圧縮ビットマップを含む請求項14に記載のホストシステム。
【請求項１６】
前記物理データブロックおよび前記非圧縮データブロックがそれぞれ4キロバイト(4KB)のサイズを有する請求項15に記載のホストシステム。
【請求項１７】
前記ストレージコントローラに結合された前記記憶デバイスが、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、エンベデッドマルチメディアカード(eMMC)、ユニバーサルフラッシュストレージ(UFS)、およびユニバーサルシリアルバス(USB)デバイスからなるグループから選択される請求項14に記載のホストシステム。
【請求項１８】
集積回路(IC)内に統合された請求項14に記載のホストシステム。
【請求項１９】
セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、携帯電話、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、個人情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、同調器、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車からなるグループから選択されたデバイス内に統合された請求項14に記載のホストシステム。
【請求項２０】
ハードウェア加速圧縮システムの下で記憶デバイスからデータを読み取るための方法であって、
読取り要求を与えて、記憶デバイスから1つまたは複数の非圧縮データブロックを読み取るステップと、
前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、
前記非圧縮データブロックを前記記憶デバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正後論理ブロックアドレス(LBA)を与えるステップと、
前記それぞれの修正後LBAに基づいて、前記記憶デバイスから前記それぞれの圧縮データブロックを取り出すステップと、
前記それぞれの圧縮データブロックを前記非圧縮データブロックに復元するステップと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権出願
本願は、参照によりその全体が本明細書に組み込まれる、2015年9月3日出願の「HARDWARE-ACCELERATED STORAGE COMPRESSION」という名称の米国特許出願第14/844,443号の優先権を主張する。
【０００２】
本開示の技術は、一般には記憶媒体圧縮に関する。
【背景技術】
【０００３】
モバイル通信デバイスは、現在の社会においてますます一般的になっている。これらのモバイル通信デバイスの普及は、部分的には、そのようなデバイス上で今や使用可能にされる多くの機能によって推進される。そのようなデバイス内の処理能力の向上は、モバイル通信デバイスが、純粋な通信ツールから、高度なモバイルマルチメディアセンタに進化し、したがって強化されたユーザ体験を可能にすることを意味する。
【０００４】
モバイル通信デバイスは、オペレーティングシステム、システムパラメータ、実行可能プログラム、およびユーザデータを記憶するための記憶デバイスに依拠する。そのような記憶デバイスは、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、ユニバーサルフラッシュストレージ(UFS)、ユニバーサルシリアルバス(USB)記憶デバイス、および/またはエンベデッドマルチメディアカード(eMMC)を含み得る。
【０００５】
モバイル通信デバイスの処理能力の向上と同時に、データ記憶容量に対する要求も指数関数的に増大している。その結果、モバイル通信デバイスに数百ギガバイト(GB)のデータを記憶することのできる記憶デバイスが組み込まれることは珍しくない。残念ながら、記憶容量の増大には、コストおよび複雑さの増大が伴う。したがって、組み込まれた記憶デバイス内の記憶空間を温存するのを助けるために、モバイル通信デバイス内でデータ圧縮を実施することがしばしば必要となる。残念ながら、ソフトウェアベースの圧縮システムや記憶デバイスベースの圧縮システムなどの従来の圧縮システムには、性能、待ち時間、および可制御性に伴う明らかな問題がある。
【発明の概要】
【課題を解決するための手段】
【０００６】
詳細な説明で開示される態様はハードウェア加速ストレージ圧縮を含む。一態様では、記憶デバイスに非圧縮データブロックを書き込む前に、ストレージコントローラ内に設けられるハードウェア圧縮アクセラレータが、非圧縮データブロックを圧縮データブロックに圧縮し、記憶デバイス内の物理データブロックに圧縮データブロックを割り振る。次いで、ハードウェア圧縮アクセラレータは、修正後論理ブロックアドレス(LBA)を生成して、非圧縮データブロックを圧縮データブロックにリンクする。別の態様では、ハードウェア圧縮アクセラレータは、圧縮データブロックの位置を、対応する修正後LBAに基づいて突き止め、圧縮データブロックを非圧縮データブロックに復元する。ストレージコントローラ内でハードウェア加速ストレージ圧縮を実施することによって、従来のソフトウェアベースの圧縮システムに関連する処理オーバヘッドを削減し、従来の記憶デバイス駆動圧縮システムよりも圧縮制御を改善することが可能となる。さらに、ハードウェア加速ストレージ圧縮は、データスループットを改善し、データ圧縮に関連する電力消費を削減する助けとなり得る。
【０００７】
この点で、一態様では、ホストシステムが提供される。ホストシステムは、記憶デバイスに結合されたストレージコントローラを備える。ストレージコントローラはハードウェア圧縮アクセラレータを備える。ホストデバイスはまた、ストレージコントローラに書込み要求を与えて、記憶デバイスに1つまたは複数の非圧縮データブロックを書き込むように構成された制御システムをも備える。1つまたは複数の非圧縮データブロックの各々は、それぞれのLBAに関連付けられる。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータは、非圧縮データブロックを圧縮データブロックに圧縮するように構成される。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータはまた、記憶デバイス内の物理データブロックに圧縮データブロックを割り振るように構成される。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータはまた、修正後LBAを生成して非圧縮データブロックを圧縮データブロックと相関させるように構成される。
【０００８】
別の態様では、ハードウェア加速圧縮システムの下で記憶デバイスにデータを書き込むための方法が提供される。方法は、書込み要求を与えて、記憶デバイスに1つまたは複数の非圧縮データブロックを書き込むことを含む。1つまたは複数の非圧縮データブロックの各々は、それぞれのLBAに関連付けられる。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、方法は、非圧縮データブロックを圧縮データブロックに圧縮するステップを含む。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、方法はまた、記憶デバイス内の物理データブロックに圧縮データブロックを割り振るステップをも含む。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、方法はまた、修正後LBAを生成して非圧縮データブロックを圧縮データブロックと相関させるステップをも含む。
【０００９】
別の態様では、ホストシステムが提供される。ホストシステムは、記憶デバイスに結合されたストレージコントローラを備える。ストレージコントローラはハードウェア圧縮アクセラレータを備える。ホストシステムはまた、ストレージコントローラに読取り要求を与えて、記憶デバイスから1つまたは複数の非圧縮データブロックを読み取るように構成された制御システムをも備える。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、制御システムは、非圧縮データブロックを記憶デバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正後LBAを与えるようにさらに構成される。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、ストレージコントローラは、それぞれの修正後LBAに基づいて、記憶デバイスからそれぞれの圧縮データブロックを取り出すように構成される。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータは、それぞれの圧縮データブロックを非圧縮データブロックに復元するように構成される。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、ストレージコントローラは、制御システムに非圧縮データブロックを提供するようにさらに構成される。
【００１０】
別の態様では、ハードウェア加速圧縮システムの下で記憶デバイスからデータを読み取るための方法が提供される。方法は、読取り要求を与えて、記憶デバイスから1つまたは複数の非圧縮データブロックを読み取るステップを含む。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、方法は、非圧縮データブロックを記憶デバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正後LBAを与えるステップを含む。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、方法はまた、それぞれの修正後LBAに基づいて、記憶デバイスからそれぞれの圧縮データブロックを取り出すステップをも含む。1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、方法はまた、それぞれの圧縮データブロックを非圧縮データブロックに復元するステップをも含む。
【図面の簡単な説明】
【００１１】
【図１Ａ】従来のソフトウェアベースの圧縮システムに基づいてストレージ圧縮を実施するように構成された例示的ホストシステムの概略図である。
【図１Ｂ】従来の記憶デバイス駆動圧縮システムに基づいてストレージ圧縮を実施するように構成された例示的ホストシステムの概略図である。
【図２】ハードウェア加速ストレージ圧縮システムに基づいて記憶デバイスに1つまたは複数の非圧縮データブロックを書き込むように構成された例示的ホストシステムの概略図である。
【図３】図2の1つまたは複数の非圧縮データブロックを1つまたは複数の圧縮データブロックにそれぞれリンクするように構成された1つまたは複数の修正後論理ブロックアドレス(LBA)を含む索引付きノード(inode)の例示的図解を与える概略図である。
【図４】非圧縮データブロックと、圧縮データブロックと、修正後LBAと、LBAとの間の相関の例示的図解を与える概略図である。
【図５】図2のハードウェア加速圧縮システムに基づいて記憶デバイスから生成される1つまたは複数の非圧縮データブロックを読み取るように構成された例示的ホストシステムの概略図である。
【図６】ハードウェア加速圧縮システムの下で記憶デバイスに図2の1つまたは複数の非圧縮データブロックを書き込むための例示的書込みプロセスのフローチャートである。
【図７】ハードウェア加速圧縮システムの下で図5の1つまたは複数の非圧縮データブロックを読み取るための例示的読取りプロセスのフローチャートである。
【図８】ハードウェア加速ストレージ圧縮システムをサポートする図2および図5のホストシステムを利用し得る例示的プロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【００１２】
これから図面を参照して、本開示のいくつかの例示的態様が説明される。「例示的」という語は、本明細書では「一例、事例、または例示としての働きをすること」を意味するために用いられる。本明細書で「例示的」と説明される任意の態様は、必ずしも他の態様よりも好ましい、または有利なものと解釈されるべきではない。
【００１３】
詳細な説明で開示される態様はハードウェア加速ストレージ圧縮を含む。一態様では、記憶デバイスに非圧縮データブロックを書き込む前に、ストレージコントローラ内に設けられるハードウェア圧縮アクセラレータが、非圧縮データブロックを個々に圧縮データブロックに圧縮し、記憶デバイス内の物理データブロックに圧縮データブロックを割り振る。次いで、ハードウェア圧縮アクセラレータは、修正後論理ブロックアドレス(LBA)を生成して、非圧縮データブロックを圧縮データブロックにリンクする。別の態様では、ハードウェア圧縮アクセラレータは、圧縮データブロックの位置を、対応する修正後LBAに基づいて突き止め、圧縮データブロックを非圧縮データブロックに復元する。ストレージコントローラ内でハードウェア加速ストレージ圧縮を実施することによって、従来のソフトウェアベースの圧縮システムに関連する処理オーバヘッドを削減し、従来の記憶デバイス駆動圧縮システムよりも圧縮制御を改善することが可能となる。さらに、ハードウェア加速ストレージ圧縮は、データスループットを改善し、データ圧縮に関連する電力消費を削減する助けとなり得る。
【００１４】
本開示の特定の態様を含むハードウェア加速ストレージ圧縮の例示的態様を論じる前に、従来のソフトウェアベースの圧縮システムおよび従来の記憶デバイス駆動圧縮システムの概要が、それぞれ図1Aおよび図1Bを参照して与えられる。ハードウェア加速ストレージ圧縮の特定の例示的態様の議論は、図2を参照して始まる。
【００１５】
この点で、図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の所定の割振り限度に基づいて決定され得る。
【数１】
2018530055.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値を示す0x11にセットされる。
【００４４】
引き続き図4を参照すると、圧縮データブロック224(3)が単独で物理データブロック226(2)に割り振られる。図示されるように、圧縮データブロック224(3)のサイズは非圧縮データブロック202(3)と同一である。図2を参照する先の議論によれば、非圧縮データブロック202(3)は、ハードウェア圧縮アクセラレータ222によって圧縮された後に非圧縮のままである。この点で、圧縮ビットマップ302(3)では、非圧縮データブロック202(3)が非圧縮のままであることを示すために、圧縮標識306が0にセットされる。圧縮データブロック224(3)が物理データブロック226(2)内の第1の圧縮データブロックであることを示すために、シーケンス番号308がハードウェア圧縮アクセラレータ222によって0にセットされる。LBA番号310が、ハードウェア圧縮アクセラレータ222によって、非圧縮データブロック202(3)のLBA値である0x12にセットされる。
【００４５】
引き続き図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値である0x13にセットされる。
【００４６】
圧縮ビットマップ302(5)では、非圧縮データブロック202(5)が圧縮されることを示すために、圧縮標識306が1にセットされる。圧縮データブロック224(5)が物理データブロック226(3)内の第2の圧縮データブロックであることを示すために、シーケンス番号308がハードウェア圧縮アクセラレータ222によって1にセットされる。LBA番号310も、ハードウェア圧縮アクセラレータ222によって、非圧縮データブロック202(5)のLBA値である0x14にセットされる。
【００４７】
図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を生成して非圧縮データブロックを圧縮データブロックと相関させる(ブロック608)。
【００５１】
図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を提供する(ブロック704)。その後で、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の各非圧縮データブロックについて、ストレージコントローラ206は、記憶デバイス204からそれぞれの圧縮データブロックを取り出す(ブロック706)。次いで、1つまたは複数の非圧縮データブロック202(1)〜202(N)の中の各非圧縮データブロックについて、ハードウェア圧縮アクセラレータ222は、それぞれの圧縮データブロックを非圧縮データブロックに復元する(ブロック708)。
【００５３】
図2のホストシステム200および図5のホストシステム500は、任意のプロセッサベースのデバイス内に設けられ得、または任意のプロセッサベースのデバイス内に統合され得る。限定はしないが、例は、セットトップボックス、エンターテイメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、携帯電話、セルラーフォン、スマートフォン、タブレット、ファブレット、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、個人情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、同調器、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、および自動車を含む。
【００５４】
この点で、図8は、図2のホストシステム200および図5のホストシステム500を利用し得るプロセッサベースのシステム800の一例を示す。この例では、プロセッサベースのシステム800は1つまたは複数の中央演算処理装置(CPU)802を含み、各々は1つまたは複数のプロセッサ804を含む。CPU802は、一時的に記憶されたデータへの迅速なアクセスのための、プロセッサ804に結合されたキャッシュメモリ806を有し得る。CPU802はシステムバス808に結合される。周知のように、CPU802は、システムバス808を介してアドレス、制御、およびデータ情報を交換することによって他のデバイスと通信する。図8には示されていないが、複数のシステムバス808が設けられ得、各システムバス808は異なるファブリックを構成する。
【００５５】
他のマスタおよびスレーブデバイスがシステムバス808に接続され得る。図8に示されるように、これらのデバイスは、例として、メモリシステム810、1つまたは複数の入力デバイス812、1つまたは複数の出力デバイス814、1つまたは複数のネットワークインターフェースデバイス816、および1つまたは複数のディスプレイコントローラ818を含み得る。入力デバイス812は、限定はしないが入力キー、スイッチ、ボイスプロセッサなどを含む、任意のタイプ入力デバイスを含み得る。出力デバイス814は、限定はしないがオーディオ、ビデオ、他の視覚的インジケータなどを含む、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス816は、ネットワーク820との間のデータの交換を可能にするように構成された任意のデバイスであり得る。ネットワーク820は、限定はしないがワイヤードもしくはワイヤレスネットワーク、プライベートもしくは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスローカルエリアネットワーク(WLAN)、広域ネットワーク(WAN)、Bluetooth(登録商標)ネットワーク、またはインターネットを含む、任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス816は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。メモリシステム810は、1つまたは複数のメモリユニット822(0〜N)およびメモリコントローラ824を含み得る。
【００５６】
CPU802はまた、システムバス808を介してディスプレイコントローラ818にアクセスして、1つまたは複数のディスプレイ826に送られる情報を制御するように構成され得る。ディスプレイコントローラ818は、1つまたは複数のビデオプロセッサ828を介して、表示されるべき情報をディスプレイ826に送り、1つまたは複数のビデオプロセッサ828は、表示されるべき情報をディスプレイ826に適したフォーマットに処理する。ディスプレイ826は、限定はしないが陰極線管(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  中央演算処理装置(CPU)
804  プロセッサ
806  キャッシュメモリ
808  システムバス
810  メモリシステム
812  入力デバイス
814  出力デバイス
816  ネットワークインターフェースデバイス
818  ディスプレイコントローラ
820  ネットワーク
822  メモリユニット
824  メモリコントローラ
826  ディスプレイ
828  ビデオプロセッサ
【図１Ａ】
2018530055.tif 000004
【図１Ｂ】
2018530055.tif 000005
【図２】
2018530055.tif 000006
【図３】
2018530055.tif 000007
【図４】
2018530055.tif 000008
【図５】
2018530055.tif 000009
【図６】
2018530055.tif 000010
【図７】
2018530055.tif 000011
【図８】
2018530055.tif 000012
【国際調査報告】
2018530055.tif 000013
2018530055.tif 000014
2018530055.tif 000015