JP2018530053A - ハードウェアアクセラレーテッドストレージ圧縮 - Google Patents

ハードウェアアクセラレーテッドストレージ圧縮 Download PDF

Info

Publication number
JP2018530053A
JP2018530053A JP2018511205A JP2018511205A JP2018530053A JP 2018530053 A JP2018530053 A JP 2018530053A JP 2018511205 A JP2018511205 A JP 2018511205A JP 2018511205 A JP2018511205 A JP 2018511205A JP 2018530053 A JP2018530053 A JP 2018530053A
Authority
JP
Japan
Prior art keywords
data block
compressed
storage
compressed data
uncompressed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018511205A
Other languages
English (en)
Inventor
ヒョンスク・シン
ジュン・ピル・キム
アサフ・シャチャム
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2018530053A publication Critical patent/JP2018530053A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

詳細な説明で開示される態様はハードウェアアクセラレーテッドストレージ圧縮を含む。一態様では、ストレージデバイスに非圧縮データブロックを書き込む前に、ストレージコントローラ内に設けられるハードウェア圧縮アクセラレータが、非圧縮データブロックを個々に圧縮データブロックに圧縮し、ストレージデバイス内のストレージデータブロックに圧縮データブロックを割り振る。次いで、ハードウェア圧縮アクセラレータは、修正論理ブロックアドレス(LBA)を生成して、非圧縮データブロックを圧縮データブロックにリンクする。別の態様では、ハードウェア圧縮アクセラレータは、圧縮データブロックの位置を、対応する修正LBAに基づいて突き止め、圧縮データブロックを非圧縮データブロックに解凍する。ストレージコントローラ内でハードウェアアクセラレーテッドストレージ圧縮を実施することによって、従来のソフトウェアベースの圧縮システムに関連する処理オーバヘッドを削減し、従来のストレージデバイス駆動圧縮システムよりも圧縮制御を改善することが可能となる。

Description

関連出願の相互参照
本特許出願は、係属中の、本明細書の譲受人に譲渡された、参照によりその全体が本明細書に明白に組み込まれる、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の所定の割振り限度に基づいて決定され得る。
Figure 2018530053
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に基づいて決定され得る。
Figure 2018530053
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 ビデオプロセッサ

Claims (30)

  1. ストレージデバイスに結合されたストレージコントローラであって、ハードウェア圧縮アクセラレータを備えるストレージコントローラと、
    前記ストレージコントローラに書込み要求を与えて、前記ストレージデバイスに1つまたは複数の非圧縮データブロックを書き込むように構成された制御システムであって、前記1つまたは複数の非圧縮データブロックの各々が、それぞれの論理ブロックアドレス(LBA)に関連付けられる、制御システムとを備え、
    前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記ハードウェア圧縮アクセラレータが、
    前記非圧縮データブロックを圧縮データブロックに圧縮し、
    前記圧縮データブロックを前記ストレージデバイス内のストレージデータブロックに割り振り、
    修正LBAを生成して前記非圧縮データブロックを前記圧縮データブロックと相関させるように構成され、前記修正LBAが圧縮ビットマップを含む、ホストシステム。
  2. 前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記制御システムが、
    前記ハードウェア圧縮アクセラレータから前記修正LBAを受け取り、
    索引付きノード(inode)内の前記LBAのそれぞれを前記修正LBAで更新する
    ようにさらに構成される請求項1に記載のホストシステム。
  3. 前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記ストレージコントローラが、前記ハードウェア圧縮アクセラレータによって割り振られた前記ストレージデータブロックに前記圧縮データブロックを書き込むように構成される請求項1に記載のホストシステム。
  4. 前記ハードウェア圧縮アクセラレータが、
    前記圧縮データブロックおよび前記少なくとも1つの他の圧縮データブロックの全サイズが、前記ストレージデータブロックのサイズ以下である場合、
    前記圧縮データブロックを前記少なくとも1つの他の圧縮データブロックとともに前記ストレージデータブロック内に配置するようにさらに構成される請求項1に記載のホストシステム。
  5. 前記ハードウェア圧縮アクセラレータが、
    前記圧縮データブロックおよび前記少なくとも1つの他の圧縮データブロックの総数が前記ストレージデータブロックの所定の割振り限度以下である場合、
    前記圧縮データブロックを前記少なくとも1つの他の圧縮データブロックとともに前記ストレージデータブロック内に配置するようにさらに構成される請求項4に記載のホストシステム。
  6. 前記ストレージデータブロックおよび前記非圧縮データブロックがそれぞれ4キロバイト(4KB)のサイズを有する請求項4に記載のホストシステム。
  7. 前記圧縮ビットマップが、
    前記圧縮データブロックが圧縮されるかどうかを示すように構成された圧縮インジケータと、
    前記圧縮データブロックがその中に記憶される前記ストレージデータブロック内の前記圧縮データブロックの相対的シーケンスを示すように構成されたシーケンス番号と
    を含む請求項1に記載のホストシステム。
  8. 前記圧縮ビットマップが、
    前記圧縮データブロックに対応する前記非圧縮データブロックの前記LBAのそれぞれを示すように構成されたLBA番号
    をさらに含む請求項7に記載のホストシステム。
  9. 前記ストレージコントローラに結合された前記ストレージデバイスが、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、エンベデッドマルチメディアカード(eMMC)、ユニバーサルフラッシュストレージ(UFS)、およびユニバーサルシリアルバス(USB)デバイスからなるグループから選択される請求項1に記載のホストシステム。
  10. 前記ストレージコントローラがホストコントローラインターフェース(HCI)をさらに備え、
    前記ストレージコントローラが、エンベデッドマルチメディアカード(eMMC)HCIデータ構造内に符号化された前記書込み要求を受け取るように構成され、
    前記ハードウェア圧縮アクセラレータが、eMMC HCIタスク記述子構造内に符号化された少なくとも1つの圧縮マップを提供するように構成される請求項1に記載のホストシステム。
  11. 前記ストレージコントローラがホストコントローラインターフェース(HCI)をさらに備え、
    前記ストレージコントローラが、ユニバーサルフラッシュストレージ(UFS)HCIデータ構造内に符号化された前記書込み要求を受け取るように構成され、
    前記ハードウェア圧縮アクセラレータが、UFS HCI転送要求記述子構造内に符号化された少なくとも1つの圧縮マップを提供するように構成される請求項1に記載のホストシステム。
  12. ハードウェアアクセラレーテッド圧縮システムを使用してストレージデバイスにデータを書き込むための方法であって、
    書込み要求を与えて、前記ストレージデバイスに1つまたは複数の非圧縮データブロックを書き込むステップであって、前記1つまたは複数の非圧縮データブロックの各々が、それぞれの論理ブロックアドレス(LBA)に関連付けられる、ステップと、
    前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、
    前記非圧縮データブロックを圧縮データブロックに圧縮するステップと、
    前記圧縮データブロックを前記ストレージデバイス内のストレージデータブロックに割り振るステップと、
    修正LBAを生成して前記非圧縮データブロックを前記圧縮データブロックと相関させるステップであって、前記修正LBAが圧縮ビットマップを含む、ステップと
    を含む方法。
  13. 前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、索引付きノード(inode)内の前記LBAのそれぞれを前記修正LBAで更新するステップをさらに含む請求項12に記載の方法。
  14. 前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、前記ストレージデータブロックに前記圧縮データブロックを書き込むステップをさらに含む請求項12に記載の方法。
  15. 前記圧縮データブロックおよび前記ストレージデータブロック内の少なくとも1つの他の圧縮データブロックの全サイズが、前記ストレージデータブロックのサイズ以下である場合、
    前記圧縮データブロックを前記少なくとも1つの他の圧縮データブロックとともに配置するステップをさらに含む請求項12に記載の方法。
  16. 前記圧縮データブロックおよび前記少なくとも1つの他の圧縮データブロックの総数が前記ストレージデータブロックの所定の割振り限度以下である場合、
    前記圧縮データブロックを少なくとも1つの他の圧縮データブロックとともに前記ストレージデータブロック内に配置するステップをさらに含む請求項15に記載の方法。
  17. 前記圧縮ビットマップが、
    前記圧縮データブロックが圧縮されるかどうかを示すように構成された圧縮インジケータと、
    前記圧縮データブロックがその中に記憶される前記ストレージデータブロック内の前記圧縮データブロックの相対的シーケンスを示すように構成されたシーケンス番号と
    を含む請求項12に記載の方法。
  18. 前記圧縮ビットマップが、
    前記圧縮データブロックに対応する前記非圧縮データブロックの前記LBAのそれぞれを示すように構成されたLBA番号
    をさらに含む請求項17に記載の方法。
  19. ストレージデバイスに結合されたストレージコントローラであって、ハードウェア圧縮アクセラレータを備えるストレージコントローラと、
    前記ストレージコントローラに読取り要求を与えて、前記ストレージデバイスから1つまたは複数の非圧縮データブロックを読み取るように構成された制御システムとを備え、
    前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、
    前記制御システムが、前記非圧縮データブロックを前記ストレージデバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正論理ブロックアドレス(LBA)を与えるようにさらに構成され、前記修正LBAが圧縮ビットマップを含み、
    前記ストレージコントローラが、前記修正LBAのそれぞれに基づいて、前記ストレージデバイスから前記圧縮データブロックのそれぞれを取り出すように構成され、
    前記ハードウェア圧縮アクセラレータが、前記圧縮データブロックのそれぞれを前記非圧縮データブロックに解凍するように構成され、
    前記ストレージコントローラが、前記制御システムに前記非圧縮データブロックを提供するようにさらに構成される、ホストシステム。
  20. 前記圧縮ビットマップが、
    前記圧縮データブロックのそれぞれが圧縮されるかどうかを示すように構成された圧縮インジケータと、
    前記圧縮データブロックのそれぞれがその中に記憶されるストレージデータブロック内の前記圧縮データブロックのそれぞれの相対的シーケンスを示すように構成されたシーケンス番号と
    を含む請求項19に記載のホストシステム。
  21. 前記圧縮ビットマップが、
    前記圧縮データブロックのそれぞれに対応する前記非圧縮データブロックの前記LBAのそれぞれを示すように構成されたLBA番号
    をさらに含む請求項20に記載のホストシステム。
  22. 前記ストレージデータブロックおよび前記非圧縮データブロックがそれぞれ4キロバイト(4KB)のサイズを有する請求項20に記載のホストシステム。
  23. 前記ストレージコントローラに結合された前記ストレージデバイスが、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、エンベデッドマルチメディアカード(eMMC)、ユニバーサルフラッシュストレージ(UFS)、およびユニバーサルシリアルバス(USB)デバイスからなるグループから選択される請求項19に記載のホストシステム。
  24. 前記ストレージコントローラがホストコントローラインターフェース(HCI)をさらに備え、
    前記ストレージコントローラが、
    エンベデッドマルチメディアカード(eMMC)HCIデータ構造内に符号化された前記書込み要求を受け取り、
    eMMC HCIタスク記述子構造内に符号化された少なくとも1つの圧縮マップを受け取る
    ように構成される請求項19に記載のホストシステム。
  25. 前記ストレージコントローラがホストコントローラインターフェース(HCI)をさらに備え、
    前記ストレージコントローラが、
    ユニバーサルフラッシュストレージ(UFS)HCIデータ構造内に符号化された前記読取り要求を受け取り、
    UFS HCI転送要求記述子構造内に符号化された少なくとも1つの圧縮マップを受け取る
    ように構成される請求項19に記載のホストシステム。
  26. ハードウェアアクセラレーテッド圧縮システムを使用してストレージデバイスからデータを読み取るための方法であって、
    読取り要求を与えて、ストレージデバイスから1つまたは複数の非圧縮データブロックを読み取るステップと、
    前記1つまたは複数の非圧縮データブロックの中の各非圧縮データブロックについて、
    前記非圧縮データブロックを前記ストレージデバイス内のそれぞれの圧縮データブロックと相関させる、それぞれの修正論理ブロックアドレス(LBA)を与えるステップであって、前記修正LBAが圧縮ビットマップを含む、ステップと、
    前記修正LBAのそれぞれに基づいて、前記ストレージデバイスから前記圧縮データブロックのそれぞれを取り出すステップと、
    前記圧縮データブロックのそれぞれを前記非圧縮データブロックに解凍するステップと
    を含む方法。
  27. 前記圧縮ビットマップが、
    前記圧縮データブロックが圧縮されるかどうかを示すように構成された圧縮インジケータと、
    前記圧縮データブロックがその中に記憶されるストレージデータブロック内の前記圧縮データブロックの相対的シーケンスを示すように構成されたシーケンス番号と
    を含む請求項26に記載の方法。
  28. 前記圧縮ビットマップが、
    前記圧縮データブロックに対応する前記非圧縮データブロックの前記LBAのそれぞれを示すように構成されたLBA番号
    をさらに含む請求項27に記載の方法。
  29. 前記ストレージデータブロックおよび前記非圧縮データブロックがそれぞれ4キロバイト(4KB)のサイズを有する請求項27に記載の方法。
  30. 前記ストレージデバイスが、ハードディスクドライブ(HDD)、ソリッドステートディスク(SSD)、エンベデッドマルチメディアカード(eMMC)、ユニバーサルフラッシュストレージ(UFS)、およびユニバーサルシリアルバス(USB)デバイスからなるグループから選択される請求項26に記載の方法。
JP2018511205A 2015-09-03 2016-09-02 ハードウェアアクセラレーテッドストレージ圧縮 Pending JP2018530053A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562213839P 2015-09-03 2015-09-03
US62/213,839 2015-09-03
US15/254,986 2016-09-01
US15/254,986 US10613756B2 (en) 2015-09-03 2016-09-01 Hardware-accelerated storage compression
PCT/US2016/050185 WO2017040987A1 (en) 2015-09-03 2016-09-02 Hardware-accelerated storage compression

Publications (1)

Publication Number Publication Date
JP2018530053A true JP2018530053A (ja) 2018-10-11

Family

ID=57042988

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018511205A Pending JP2018530053A (ja) 2015-09-03 2016-09-02 ハードウェアアクセラレーテッドストレージ圧縮

Country Status (6)

Country Link
US (1) US10613756B2 (ja)
EP (1) EP3345083A1 (ja)
JP (1) JP2018530053A (ja)
KR (1) KR20180048938A (ja)
CN (1) CN107924292A (ja)
WO (1) WO2017040987A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719474B2 (en) 2017-10-11 2020-07-21 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
US10585626B2 (en) * 2017-12-07 2020-03-10 International Business Machines Corporation Management of non-universal and universal encoders
CN110069258B (zh) * 2019-04-25 2023-04-25 北京百瑞互联技术有限公司 一种hci代码二次生成方法
CN111506265A (zh) * 2020-04-10 2020-08-07 上海交通大学 一种基于硬件的块层数据压缩框架
KR102299084B1 (ko) * 2020-08-24 2021-09-07 오픈엣지테크놀로지 주식회사 하드웨어 가속기의 출력 데이터를 메모리에 저장하는 방법, 하드웨어 가속기의 입력 데이터를 메모리로부터 읽는 방법, 및 이를 위한 하드웨어 가속기
CN114691020A (zh) * 2020-12-30 2022-07-01 上海曼卜信息科技有限公司 基于zns标准提供数据压缩存储设备及其方法
KR102509987B1 (ko) * 2021-01-13 2023-03-15 삼성전자주식회사 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템
US11875036B2 (en) 2021-01-13 2024-01-16 Samsung Electronics Co., Ltd. Computing system including host and storage system and having increased write performance

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US20010047473A1 (en) 2000-02-03 2001-11-29 Realtime Data, Llc Systems and methods for computer initialization
US7051126B1 (en) 2003-08-19 2006-05-23 F5 Networks, Inc. Hardware accelerated compression
US7685400B2 (en) * 2004-12-15 2010-03-23 International Business Machines Corporation Storage of data blocks of logical volumes in a virtual disk storage subsystem
US8473673B2 (en) * 2005-06-24 2013-06-25 Hewlett-Packard Development Company, L.P. Memory controller based (DE)compression
US8122216B2 (en) * 2006-09-06 2012-02-21 International Business Machines Corporation Systems and methods for masking latency of memory reorganization work in a compressed memory system
GB2447494A (en) * 2007-03-15 2008-09-17 Linear Algebra Technologies Lt A method and circuit for compressing data using a bitmap to identify the location of data values
US8111707B2 (en) 2007-12-20 2012-02-07 Packeteer, Inc. Compression mechanisms for control plane—data plane processing architectures
US8954654B2 (en) * 2008-06-18 2015-02-10 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US20110004728A1 (en) 2009-07-02 2011-01-06 Ocz Technology Group, Inc. On-device data compression for non-volatile memory-based mass storage devices
US8694703B2 (en) 2010-06-09 2014-04-08 Brocade Communications Systems, Inc. Hardware-accelerated lossless data compression
WO2012119974A1 (en) * 2011-03-08 2012-09-13 Cognis Ip Management Gmbh High viscosity lubricant compositions
US9069703B2 (en) * 2011-04-29 2015-06-30 Seagate Technology Llc Encrypted-transport solid-state disk controller
US8949513B2 (en) * 2011-05-10 2015-02-03 Marvell World Trade Ltd. Data compression and compacting for memory devices
US9582426B2 (en) 2013-08-20 2017-02-28 International Business Machines Corporation Hardware managed compressed cache
US9514057B2 (en) 2013-12-04 2016-12-06 Sandisk Technologies Llc Storage module and method for managing logical-to-physical address mapping
US9959072B2 (en) * 2013-12-20 2018-05-01 Sandisk Technologies Llc Systems and methods of compressing data
US9927998B2 (en) 2014-02-05 2018-03-27 Tidal Systems, Inc. Flash memory compression
CN103870779B (zh) * 2014-03-07 2016-08-17 杭州电子科技大学 一种具有数据压缩功能的读卡器
US9880928B1 (en) * 2014-09-26 2018-01-30 EMC IP Holding Company LLC Storing compressed and uncompressed data in blocks having different allocation unit sizes
US20170031940A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Compression file structure

Also Published As

Publication number Publication date
US10613756B2 (en) 2020-04-07
US20170068460A1 (en) 2017-03-09
CN107924292A (zh) 2018-04-17
KR20180048938A (ko) 2018-05-10
EP3345083A1 (en) 2018-07-11
WO2017040987A1 (en) 2017-03-09

Similar Documents

Publication Publication Date Title
JP2018530053A (ja) ハードウェアアクセラレーテッドストレージ圧縮
JP2018530055A (ja) ハードウェア加速ストレージ圧縮
CN109085997B (zh) 用于非易失性存储器的存储器高效持续键值储存
TWI596603B (zh) 用於快取壓縮資料之設備、系統及方法
US9946462B1 (en) Address mapping table compression
US9612774B2 (en) Metadata structures for low latency and high throughput inline data compression
US9864542B2 (en) Data deduplication using a solid state drive controller
US10437481B2 (en) Data access method and related apparatus and system
US20170177497A1 (en) Compressed caching of a logical-to-physical address table for nand-type flash memory
US8230159B2 (en) System, method, and computer program product for sending logical block address de-allocation status information
US9489409B2 (en) Rollover strategies in a N-bit dictionary compressed column store
JP6512733B2 (ja) データ圧縮方法と、該方法を行う装置
US20190155959A1 (en) Key-value storage device and method of operating key-value storage device
US9973210B1 (en) Reduction of execution stalls of LZ4 decompression via parallelization
JP2019128906A (ja) ストレージ装置及びその制御方法
TW201734820A (zh) 在基於處理器之系統中之記憶體中之壓縮記憶體線之優先級存取
CN108139972B (zh) 用于管理硬件辅助数据压缩中的存储器碎片的方法和设备
CN105723320A (zh) 数据整理方法、存储设备、存储控制器以及存储阵列
US20170161203A1 (en) Increased memory capacity
US9563363B2 (en) Flexible storage block for a solid state drive (SSD)-based file system
US10922239B2 (en) Device for performing iterator operation in database
US20240036726A1 (en) Memory compression
US11113000B2 (en) Techniques for efficiently accessing values spanning slabs of memory
TW202321921A (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置