JP6725120B2 - データ処理方法、記憶装置、ソリッドステートディスク及び記憶システム - Google Patents

データ処理方法、記憶装置、ソリッドステートディスク及び記憶システム Download PDF

Info

Publication number
JP6725120B2
JP6725120B2 JP2018566339A JP2018566339A JP6725120B2 JP 6725120 B2 JP6725120 B2 JP 6725120B2 JP 2018566339 A JP2018566339 A JP 2018566339A JP 2018566339 A JP2018566339 A JP 2018566339A JP 6725120 B2 JP6725120 B2 JP 6725120B2
Authority
JP
Japan
Prior art keywords
data
ssd
logical
controller
storage device
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.)
Active
Application number
JP2018566339A
Other languages
English (en)
Other versions
JP2019519047A (ja
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 JP2019519047A publication Critical patent/JP2019519047A/ja
Application granted granted Critical
Publication of JP6725120B2 publication Critical patent/JP6725120B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0626Reducing size or complexity of 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction 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/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

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)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、記憶システムの分野に関し、特に、データ処理方法、記憶装置、ソリッドステートディスク及び記憶システムに関する。
記憶システムは、概して、ホスト、コントローラ(あるいは、ストレージコントローラまたはストレージアレイコントローラと称される)及びディスクアレイを有する。コントローラは、ホストとディスクアレイとの間のブリッジであり、ホストとディスクとの間で通信及びデータ交換を制御するように構成される。
現在、全ての主流の記憶システムは、圧縮機能及び圧縮解除機能をサポートしている。例えば、データがディスクに書き込まれる前に、記憶システムは、概して、そのデータを圧縮する。他の例では、データがディスクから読み出された後、記憶システムはまずそのデータを圧縮解除し、次に圧縮解除データをホストへ返す。データの圧縮及び圧縮解除により、ディスク空間を節約できる。
従来技術において、記憶システムの圧縮機能及び圧縮解除機能は、主に、コントローラによって実装され、具体的にはコントローラにおけるプロセッサによって実装されてよい。例えば、書き込み要求(または、書き込み入力/出力(IO)と称される)に対して、コントローラは、まず、データを圧縮し、そして次に圧縮データをディスクに書き込む。読み出し要求(または、読み出しIOと称される)に対して、コントローラは、まず、ディスクから圧縮データを読み出し、そして次に、読み出しデータを圧縮解除し、そして圧縮解除データをホストへ返す。上述の処理から、コントローラが、圧縮及び圧縮解除の全処理に関与する必要があることが理解できる。しかしながら、データの圧縮及び圧縮解除には、大量のコンピューティングリソースの消費が必要であり、コントローラにより多くの計算上のプレッシャーをもたらす。
本発明では、コントローラの計算上のプレッシャーを低減するために、データ処理方法、記憶装置、ソリッドステートディスク及び記憶システムを提供する。
第1態様によると、データ処理方法が提供され、ここで、当該方法がソリッドステートディスク(Solid State Disk、SSD)に適用される。具体的には、上記方法はSSDにより実行されてよく、例えば、SSDの中のプロセッサにより実行されてよい。上記方法は、コントローラから、書き込み予定データを保持する書き込み要求をSSDにより受信する段階及び書き込み予定データをSSDにより圧縮して圧縮データを取得する段階、を備える。SSDが、論理ブロックに従って、書き込み予定データを圧縮してもよいことが理解されるべきである。即ち、圧縮手段によって取得される圧縮ブロックの数が、書き込み予定データに割り当てられる論理ブロックアドレス(Logical Block Address、LBA)の数によって決まる。加えて、SSDは、固定長圧縮または可変長圧縮を用いてよい。上記方法は、圧縮データをSSDにより記憶する段階、及び、第1フィードバック情報をコントローラへSSDにより送信する段階を更に備える。ここで、第1フィードバック情報は、圧縮データが記憶された後のSSDの残存容量を示す。第1フィードバック情報は、残存容量を複数の方法で、例えば、直接的に示す方法や間接的に示す方法で示してよいことが理解されるべきである。例えば、直接的に示す方法とは、SSDが、当該SSDの残存容量をコントローラへ直接レポートすることであってよい。間接的に示す方法とは、SSDが当該SSDの残存容量の変化をコントローラへレポートし、コントローラが、同様に、SSDの残存容量の変化に従って、当該SSDの残存容量を決定できることであってよい。
従来技術において、データ圧縮は、コントローラにより実行され、コントローラ自らが、SSDの容量を管理すべくアドレス空間を生成する。そのアドレス空間は、固定長のアドレス空間である。一度、アドレス空間が生成されると、そのアドレス空間のサイズは変化しない。その結果、SSDが、データ圧縮によりもたらされる容量の増加についてコントローラに通知できたとしても、コントローラは、増加した容量を利用することができず、SSDのストレージリソースを浪費する結果となる。本実装態様では、第1に、圧縮機能がコントローラからSSDへ移され、その結果、コントローラの計算上のプレッシャーを低減することができる。第2に、SSDの容量管理機能がSSDへ移され、SSDは、残存容量をコントローラへフィードバックする。SSDが自身の残存容量を正確に取得できるので、SSDのストレージリソースの浪費が回避される。
第1態様を参照すると、第1態様のある実装態様において、上記方法が、第2フィードバック情報をコントローラへSSDにより送信する段階を更に備える。ここで、第2フィードバック情報が、SSDの論理容量を示し、SSDの論理容量が、SSDに記憶されているデータの非圧縮データ量及びSSDの利用可能な物理空間の容量の和である。
第1態様を参照すると、第1態様のある実装態様において、第1フィードバック情報をコントローラへSSDにより送信する段階の前に、上記方法が、SSDの利用可能な物理空間をSSDにより問い合わせる段階と、利用可能な物理空間の容量を残存容量とSSDにより決定する段階とを更に備える。
第1態様を参照すると、第1態様のある実装態様において、上記方法は、書き込み予定データへブランク論理ブロックをSSDにより割り当てる段階であって、ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックはが記SSDの論理容量のセグメントに対応する、割り当てる段階と、ブランク論理ブロックを有効論理ブロックへSSDにより変換する段階であって、有効論理ブロックは、論理アドレスが有効データで占有される論理ブロックである、変換する段階と、SSDにおける残存ブランク論理ブロックの数をSSDにより問い合わせる段階と、を更に有する。ここで、第1フィードバック情報をコントローラへSSDにより送信する段階が、第1フィードバック情報をコントローラへSSDにより送信する段階を有し、第1フィードバック情報が、残存ブランク論理ブロックの数、及び/又は、残存容量を有し、残存容量が、残存ブランク論理ブロックの数に基づいて決定される。本実装態様では、ブランク論理ブロックを書き込み予定データへ割り当てた後に、SSDが、ブランク論理ブロックを有効論理ブロックへ直接変換してもよく、または、ブランク論理ブロックを書き込み予定データへ割り当てた後に、SSDが、最初に圧縮及び記憶オペレーションを書き込み予定データに実行し、次に、ブランク論理ブロックを有効論理ブロックへ変換してもよいことが、理解されるべきである。
第1態様を参照すると、第1態様のある実装態様において、SSDは、当該SSDのマッピングテーブルに従って、SSDに論理ブロックを記録する。
第1態様を参照すると、第1態様のある実装態様において、書き込み予定データをSSDにより圧縮して圧縮データを取得する段階が、ブランク論理ブロックを書き込み予定データへSSDにより割り当てる段階の後に、書き込み予定データをSSDにより圧縮して圧縮データを取得する段階を備え、上記方法は、SSDで追加する必要のあるブランク論理ブロックの数を、書き込み予定データのサイズ及び圧縮データのサイズに従って、SSDにより決定する段階を更に備える。
第1態様を参照すると、第1態様のある実装態様において、上記方法は、新しいブランク論理ブロックに対応するエントリを、SSDで追加する必要のあるブランク論理ブロックの数に従って、SSDのマッピングテーブルへSSDにより追加する段階を更に備える。
第1態様を参照すると、第1態様のある実装態様において、上記方法は、新しいブランク論理ブロックに対応するエントリを、SSDで追加する必要のあるブランク論理ブロックの数に従って、SSDのマッピングテーブルの最後にSSDにより追加する段階を更に備える。
動的に長さが変化するマッピングテーブルを整備することにより、SSDの論理容量の変化が簡便に記録されてよい。
第1態様を参照すると、第1態様のある実装態様において、上記方法は、SSDで追加する必要のあるブランク論理ブロックの数に従って、SSDにおける分離論理ブロックを、ブランク論理ブロックへSSDにより更新する段階を更に備える。ここで分離論理ブロックは、その論理アドレスがSSDで使用不可能な論理ブロックである。
マッピングテーブルにおける論理ブロックのステータスを動的に更新することにより、SSDにおける論理ブロックの管理を容易にしてよい。
第1態様を参照すると、第1態様のある実装態様において、上記方法は、コントローラからコマンドをSSDにより受信する段階であって、コマンドが論理アドレス範囲を有し、コマンドが論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、受信する段階と、論理アドレス範囲における有効論理ブロックを分離論理ブロックへSSDにより変換する段階であって、分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、変換する段階と、を更に備える。上記コマンドは、例えば、トリム/アンマップ(trim/unmap)コマンドであってよい。
この解決法では、論理ブロックは、ブランク論理ブロック、有効論理ブロック及び分離論理ブロックへ分類される。SSDにおける論理ブロックのステータスを更新かつ整備することによって、SSDでの論理ブロックのデータストレージを十分に反映させることができるだけでなく、SSDの論理容量の動的な変化もまた十分に反映させることができる。
第1態様を参照すると、第1態様のある実装態様において、上記方法は、論理アドレス範囲におけるデータによって占有される物理空間のサイズをSSDにより決定する段階と、オーバープロビジョニング空間から部分的なオーバープロビジョニング空間をSSDにより選択する段階であって、部分的なオーバープロビジョニング空間のサイズが論理アドレス範囲におけるデータによって占有される物理空間のサイズと等しい、選択する段階と、部分的なオーバープロビジョニング空間をSSDの利用可能な物理空間としてSSDにより用いる段階と、を更に備える。
第1態様を参照すると、第1態様のある実装態様において、SSDで追加する必要のあるブランク論理ブロックの数Mは、DをLで除算して切り捨てた結果に等しく、ここでDは書き込み予定データの長さと圧縮データの長さとの間の差を示し、LはSSDにおける論理ブロックの長さを示す。Mはテーブル参照手段により取得されてよく、または、オンラインの計算手段により取得されてもよい。
第1態様を参照すると、第1態様のある実装態様において、SSDで追加する必要のあるブランク論理ブロックの数Mは、DをLで除算して1を減算した結果に等しく、ここでDは書き込み予定データの長さと圧縮データの長さとの間の差を示し、LはSSDにおける論理ブロックの長さを示す。Mはテーブル参照手段により取得されてよく、または、オンラインの計算手段により取得されてもよい。
第1態様を参照すると、第1態様のある実装態様において、コントローラから書き込み要求をSSDにより受信する段階の後に、上記方法が、論理アドレスを書き込み予定データへSSDにより割り当てる段階と、マッピングテーブルに在り、論理アドレスに対応するエントリにマッピング情報をSSDにより記録する段階とを備える。ここで、マッピング情報が、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始位置、及び圧縮データの長さ、に関する情報を更に備える。
上述のマッピング情報を用いることで圧縮データの物理アドレスを直接的に位置付けることができ、これにより、SSDのアドレス指定の効率を改善できる。
第1態様を参照すると、第1態様のある実装態様において、コントローラから書き込み要求をSSDにより受信する段階の後に、上記方法が、論理アドレスを書き込み予定データへSSDにより割り当てる段階と、マッピングテーブルに在り、論理アドレスに対応するエントリに、マッピング情報をSSDにより記録する段階であって、マッピング情報が、圧縮データを記憶する物理ページに関する情報を有する、記録する段階と、物理ページ上に圧縮データのメタデータをSSDにより記憶する段階と、を更に備える。ここで、メタデータが、物理ページ上の圧縮データの開始位置、及び圧縮データの長さを有する。
論理アドレスとデータブロックの物理アドレスとの間のマッピング関係が、マッピングテーブル及び物理ページにより一緒に記録されるので、その結果、SSDにおいてマッピングテーブルにより占有されるメモリを減少させることができ、かつ、SSDのメモリ空間を節約できる。
第1態様を参照すると、第1態様のある実装態様において、書き込み要求が、書き込み予定データのデータ長を有し、書き込み予定データの論理アドレスが、上記データ長に基づいて割り当てられる。
第1態様を参照すると、第1態様のある実装態様において、圧縮データをSSDにより記憶する段階の後に、上記方法が、SSDにおける書き込み予定データの論理アドレスをコントローラへSSDにより送信する段階を更に備える。
第1態様を参照すると、第1態様のある実装態様において、上記方法が、コントローラから読み出し要求をSSDにより受信する段階であって、読み出し要求が、読み出すべきデータの論理アドレスを備える、受信する段階と、読み出すべきデータの論理アドレスに対応する物理アドレスにおけるターゲットデータをSSDにより読み出す段階と、ターゲットデータをSSDにより圧縮解除して読み出すべきデータを取得する段階と、読み出すべきデータをSSDによりコントローラへ送信する段階と、を更に備える。
第1態様を参照すると、第1態様のある実装態様において、第1フィードバック情報をコントローラへSSDにより送信する段階の前に、上記方法が、コントローラにより送信された問い合わせ要求メッセージをSSDにより受信する段階であって、問い合わせ要求メッセージが、SSDの残存容量を問い合わせるために用いられる、受信する段階を更に備えてよい。ここで、コントローラへ第1フィードバック情報をSSDにより送信する段階が、コントローラへ問い合わせ応答メッセージをSSDにより送信する段階を有し、ここで、問い合わせ応答メッセージが第1フィードバック情報を有する。具体的には、SSDは、コントローラにより送信された問い合わせメッセージを受信する。ここで、問い合わせメッセージは、SSDにおける残存ブランク論理ブロックの数を問い合わせるために具体的に用いられる。SSDは、問い合わせ応答メッセージをコントローラへ送信し、ここで、問い合わせ応答メッセージは、残存ブランク論理ブロックの数を示すために用いられる。
第1態様を参照すると、第1態様のある実装態様において、第1フィードバック情報をコントローラへSSDにより送信する段階は、第1フィードバック情報をコントローラへSSDにより能動的に送信する段階を備える。具体的には、SSDは、残存ブランク論理ブロックの数をコントローラへ能動的に送信してよい。SSDが、残存ブランク論理ブロックの数を周期的にコントローラへフィードバックしてもよく、あるいは、残存ブランク論理ブロックレポートは、イベントによってトリガされてもよいことが理解されるべきである。
第2態様によると、記憶装置が提供される。ここで記憶装置は、第1態様での方法を実行するように構成されるモジュールを備える。
第3態様によると、ソリッドステートディスクが提供され、通信インタフェース、記憶媒体及びプロセッサを備える。ここで、通信インタフェースはコントローラと通信するように構成され、記憶媒体は記憶空間を提供するように構成され、プロセッサは通信インタフェース及び記憶媒体に接続され、通信インタフェース及び記憶媒体を用いることにより、第1態様における方法を実行する。
第4態様によると、コンピュータ可読媒体が提供される。ここで、コンピュータ可読媒体は、ソリッドステートディスクにより実行される予定のプログラムコードを記憶する。プログラムコードは、第1態様における方法を実行するために用いられる命令を有する。
上述の実装態様において、マッピングテーブルは、SSDの論理アドレス空間を示すために用いられてよい。
上述の実装態様において、SSDにおける論理ブロックは、SSDの論理アドレス空間に関する基本単位である。
上述の実装態様において、書き込み予定データの論理アドレスをSSDにより決定する段階が、N個のブランク論理ブロックを、書き込み予定データにおけるN個のデータブロックへ、SSDにより割り当てる段階と、N個のブランク論理ブロックの論理アドレスを書き込み予定データの論理アドレスとしてSSDにより用いる段階と、を有してよい。ここで、ブランク論理ブロックが、SSDでの利用可能な論理アドレスを有する論理ブロックであり、N個のデータブロックにおける各データブロックの長さは、SSDでの論理ブロックの長さと同一であり、Nは1に等しいかまたはそれよりも大きな整数である。
従来技術において、SSDの全ての論理アドレスは、コントローラによって割り当てられ、管理される。しかしながら、SSD、自身のデータストレージと圧縮ステータスを最もよく把握している。そこで、本実装態様では、SSDの論理アドレスを割り当て管理する機能が、コントローラからSSDへ移され、これにより、SSDにおける論理アドレスの割り当て及び管理の方式をより適切なものとする。
上述の実装態様において、N個のブランク論理ブロックを、書き込み予定データにおけるN個のデータブロックへSSDにより割り当てる段階は、SSDにおける論理ブロックからN個のブランク論理ブロックをSSDによりランダムに選択する段階を有してよい。
上述の実装態様において、N個のブランク論理ブロックを、書き込み予定データにおけるN個のデータブロックへSSDにより割り当てる段階は、マッピングテーブルにおけるブランク論理ブロックに対応するエントリの位置に従って、前方におけるN個のブランク論理ブロックをSSDにより選択する段階を有してよい。
上述の実装態様において、SSDは、前もってセットされた圧縮粒度に従って、書き込み予定データをパーティション化し、N個のデータブロックを取得してよい。ここで、圧縮粒度は、SSDにおける論理ブロックの長さに等しく、Nは1よりも大きな整数である。圧縮粒度は、SSDにおけるデータブロックの圧縮単位、つまりは、圧縮のための単位として用いられるサイズを具体的に示してよい。
圧縮粒度は、論理ブロックの長さと等しい値に設定され、これにより、SSDの中の実装を簡素化し、マッピングテーブルの管理を容易にする。
従来技術において、データ圧縮はコントローラにより実行され、コントローラ自らが、SSDの容量を管理すべくアドレス空間を生成する。そのアドレス空間は、固定長のアドレス空間である。一度、アドレス空間生成されると、そのアドレス空間のサイズは変化しない。その結果、データ圧縮によりもたらされた容量の増加についてSSDがコントローラに通知することができたとしても、コントローラは増加した容量を利用することができず、SSDのストレージリソースを浪費する結果となる。本発明においては、第1に、圧縮機能がコントローラからSSDへ移され、その結果、コントローラの計算上のプレッシャー低減することができる。第2に、SSDの容量管理機能はSSDへ移され、SSDが残存容量をコントローラへフィードバックする。SSDが自身の残存容量を正確に取得することができるので、SSDにおけるストレージリソースの浪費が回避される。
本発明の技術的解決法をより明確に説明すべく、本発明の好適な実施形態を示す添付の図面を以下で簡潔に説明する。以下の説明における添付の図面は、本発明の実施形態のいくつかを示すものに過ぎないことは、明らかである。
記憶システムによって、ホストの書き込み要求を処理するフローチャートである。
記憶システムによって、ホストの書き込み要求を処理するフローチャートである。
本発明の実施形態に係る記憶システムの概略構造図である。
本発明の実施形態に係るマッピングテーブルの一例の図である。
本発明の実施形態に係る論理ブロックの状態遷移の図である。
本発明の実施形態に係る論理ブロックと物理ブロックとの間のマッピングの一例の図である。
本発明の実施形態に係る固定長圧縮システムにおける圧縮手順の一例の図である。
本発明の実施形態に係る、圧縮ブロックの丸め処理方式の一例の図である。
本発明の実施形態に係る、マッピング情報の記憶方式の一例の図である。
本発明の実施形態に係る、マッピング情報の記憶方式の一例の図である。
本発明の実施形態に係る物理ページの一例の図である。
本発明の実施形態に係る書き込み要求を処理するフローチャートである。
固定長圧縮における段階1214の実装態様の概略フローチャートである。
可変長圧縮における段階1214の実装態様の概略フローチャートである。
本発明の実施形態に係るトリム/アンマップ手順の一例の図である。
本発明の実施形態に係る読み出し要求を処理する概略フローチャートである。
本発明の実施形態に係る記憶装置の概略構造図である。
本発明の実施形態に係る記憶システムの概略構造図である。
本発明の実施形態に係るソリッドステートディスクの概略構造図である。
本発明の実施形態に係る記憶システムの概略構造図である。
以下、本発明の好適な実施形態を示す添付の図面を参照して、本発明の技術的解決法を明確かつ完全に説明する。説明される実施形態が、本発明の実施形態の全てではなく一部であることは明らかである
本発明の実施形態におけるディスク(disk)とはSSDを指してよく、ディスクアレイとはSSDアレイを指してよいことに注意すべきである。
理解し易くするために、最初に、既存の記憶システムにおけるデータ圧縮方式が、図1及び図2を参照して簡潔に説明される。
図1は、記憶システムによって、ホストの書き込み要求(またはIOと称される)を処理するフローチャートである。図1の記憶システムは、固定長圧縮に基づく記憶システムである。固定長圧縮では、データブロックを1または複数の固定長圧縮ブロックに圧縮してよい。例えば、記憶システムの圧縮粒度が4KBであると仮定した場合(即ち、4KBが圧縮の単位として用いられる)に、固定長圧縮に基づく記憶システムは、4KBのデータブロックを0.5KBの整数倍に圧縮する。例えば、4KBのデータブロックは、以下の粒度、0.5KB、1KB、1.5KB、2KB、3KB、3.5KBまたは4KB、のうちの1つに圧縮される(4KBのデータブロックの圧縮サイズが3.5KBよりも大きい場合には、そのデータブロックは圧縮される必要がない。)具体的には、4KBのデータブロックの圧縮された長さが、0.5KBと1KBの間であると仮定した場合に、1KBのデータブロックを取得すべく、上方アライメントオペレーションが該データブロックに対して実行される必要がある。上方アライメントの特定の態様は、圧縮データの最後に0を追加することであってよく、1KBになるまで圧縮データに充填(スタフ、stuff)する。データブロックの圧縮粒度は、また、8KBや16KB等、他のいかなる粒度であってよく、各圧縮粒度のデータブロックは、0.5KBの整数倍や1KBの整数倍等に圧縮されてよいことが理解されるべきである。このことは、本発明の実施形態において具体的には限定されない。 説明のため、以下では主に、4KBの圧縮粒度において、圧縮ブロックとなるべき4KBが、0.5KB、1KB、1.5KB、2KB、3KB、3.5KBまたは4KBのうちの1つに圧縮される一例を用いる。
102.ホストが書き込み要求をコントローラへ送信する。
書き込み要求は、ディスクに書き込まれる予定のデータを有してよい。コントローラは、また、ストレージコントローラと称されてよく、物理的な記憶空間を提供するディスクを管理してよい。ディスクがアレイを形成する場合には、コントローラは、また、アレイコントローラと称されてよい。
104.コントローラが、ディスクに書き込まれる予定のデータを、固定長に従って、パーティション化する。
具体的には、ディスクへ書き込まれる予定のデータが、データブロックを生成すべく、圧縮粒度に従って、パーティション化されてよい。例えば、圧縮粒度が4KBである場合に、4KBが、ディスクへ書き込まれる予定のデータをパーティション化するための単位として用いられる。
106.コントローラは、パーティション化されたデータブロックを圧縮し、圧縮データに対して上方アライメントオペレーションを実行する。
4KBのデータブロックが圧縮された後に形成される圧縮データの長さが0.5KB未満だと仮定した場合には、圧縮データに対して切り上げオペレーションが実行されてよく、圧縮データは、0.5KBの圧縮ブロックとなるように充填される。
108.コントローラは、圧縮ブロックに丸め処理を行い、適切なディスクを選択する。
例えば、圧縮ブロックは、物理ページのサイズの単位で丸め処理されてよい(ここでは、4KBの物理ページが、説明のため一例として用いられる)。4KBのデータブロックが丸め処理によって取得される毎に、書き込み要求が生成されてよい。次に、1または複数の生成された書き込み要求で保持されるデータが、選択されたディスクに一度に書き込まれてよい。代わりに、複数の4KBのデータブロックが丸め処理により取得された後に、データブロックが、選択されたディスクに一度に書き込まれてもよい。
加えて、コントローラは、丸め処理されたデータを記憶するためのディスクを選択する必要がある。ディスクを検索するための複数のポリシーまたは方式があり得る。例えば、ディスクの残りの空間が、ディスクに書き込まれる予定のデータの長さよりも大きいことが確かであるならば、コントローラは、ディスクアレイからランダムにディスクを選択してよい。代わりに、コントローラは、複数のディスクに記憶されるデータが均等になるように、ディスクアレイにおける各ディスクの現在のデータストレージ容量等の要因に基づいて、適切なディスクを選択する。
110.コントローラは、書き込み要求を選択されたディスクへ送信する。
書き込み要求は、ディスクへ書き込まれる予定のデータと、コントローラにより書き込み要求におけるデータへ割り当てられるディスクの論理アドレスとを有してよい。
112.上述の段階が処理された後、データは最後にディスクへ到達し、ディスクは、当該ディスクの物理アドレスにそのデータを書き込み、そして、書き込み要求成功応答をコントローラへ返す。
114.コントローラは、ホストへ書き込み要求成功応答をフィードバックする。
図2は、記憶システムによって、ホストの書き込み要求を処理するフローチャートである。図2の記憶システムは、可変長圧縮に基づく記憶システムである。固定長圧縮と異なり、可変長圧縮では、データブロックが固定長へ圧縮されることを必要としない。依然として4KBの圧縮粒度が、一例として用いられ、4KBのデータブロックの圧縮された長さが2778Bだと仮定した場合に、2778Bのデータブロックは調整される必要がない。即ち、圧縮された長さは変化しない。図2の段階202から214は、基本的に図1の段階102から114と同様であり、繰り返しを回避すべく、詳細をここで再度説明しない。図1及び図2の間の主な違いは、可変長圧縮が段階206におけるデータブロックに対して実行されるが、固定長圧縮は段階106のデータブロックに対して実行されるという点にある。
図1及び図2のどちらも、書き込み要求処理手順を説明する。ホストがディスクからデータを読み出す必要がある場合、ホストは読み出し要求をコントローラへ送信する。読み出し要求を受信した後、コントローラは、まず、ディスクからデータを取得し、次に、データを圧縮解除し、圧縮解除データをホストへ返す。読み出し要求処理手順は、書き込み要求処理手順の逆手順であり、繰り返しを回避すべく、詳細をここで再度説明しない。
上記の説明に基づくと、従来技術では、圧縮機能及び圧縮解除機能が、主に、コントローラにより実施されることが理解できる。記憶システムでのデータ処理の規模がますます増大しているので、圧縮機能及び圧縮解除機能は、コントローラの大量のコンピューティングリソースを消費する必要がある。その結果、コントローラによる書き込み要求の処理における遅延は長くなり、更には、記憶システム全体のパフォーマンスが減少する。
技術の進展に伴い、SSDが、ディスクアレイによって主に用いられる記憶媒体の1つとなっている。SSDと従来のハードディスクドライブ(Hard Disk Drive、HDD)の違いの1つは、SSDが、データ処理能力を有するプロセッサを有するという点にある。従来技術において、SSDのプロセッサは、主に、ブロック管理、ガベージコレクション、ウェアレベリング、論理アドレスと物理アドレスとの間の変換等の単純な機能を実行するように構成される。しかしながら、技術の進展に伴い、SSDの中のプロセッサの処理能力はますます強力なものとなり、SSDが上述した機能のみを実行するために用いられるとしたら、SSDの中のプロセッサの処理能力を十分に発揮することができない。そこで、SSDの中のプロセッサの処理能力を十分に使用し、コントローラの負荷を減らすために、圧縮機能及び圧縮解除機能がSSDへ移されてよい。従って、本発明の実施形態では、圧縮機能及び圧縮解除機能のどちらもがSSDにより実施されてよい。以下、本発明の実施形態における記憶システムの構成構造と記憶システムの構成要素に関する諸機能を、図3を参照して詳細に説明する。
図3は、本発明の実施形態に係る記憶システムの概略構造図である。図3の記憶システムは、ホスト(host)310、コントローラ320及びSSD330を備える。図3から見て取れるように、コントローラ320は、ホスト310及びSSD330の間に位置付けられ、ブリッジとしてホスト310及びSSD330の間のデータ交換を実行する。
具体的には、コントローラ320は、中央演算処理装置(Central Processing Unit、CPU)(または、計算能力を有する別のチップ、例えば、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA))及びキャッシュ(Cache)等の構成要素を有してよい。図3のコントローラ320は、ホストから分離されている。しかしながら、本発明の実施形態は、これに限定されるものではない。コントローラ320は、独立したハードウェアデバイスであってよく、または、ホスト310上で統合されたソフトウェアモジュールであってよい。加えて、コントローラ320は、1または複数のSSDに接続されてもよい。
依然として図3を参照すると、SSDは、フラッシュメモリチップを有してよい(フラッシュメモリチップは、SSDにおける記憶媒体である)。SSD(またはSSDの中のプロセッサ)は、SSDにおけるブロックを管理するように構成されたブロック管理部を有してよく、ここで、ブロック(block)とは、SSDにおける基本的な消去単位である。例えば、SSDは、ブロック管理部を用いてSSDにおけるブロックの識別子を整備し、ガベージコレクションの後にブロックを消去し、SSDにおける不良ブロックを記録及び置換する。SSDは、SSDの中のデータのアドレス指定を実行するように構成された物理アドレス変換部への論理アドレスを更に有してよい。ガベージコレクション部は、SSDにおける無効データにガベージコレクションを実行するように構成され、例えば、あるブロックにおける有効データを別のブロックへ移動する。ウェアレベリング部は、SSDにおけるブロックの摩耗程度(即ち、書き込み/消去サイクル)ができるだけ均一となるように、SSDにおけるブロックの書き込み/消去サイクルを制御するように構成される。
更に、SSDにおける圧縮機能及び圧縮解除機能を実行すべく、圧縮及び圧縮解除部が、SSDへ加えられてよい。具体的には、コントローラの書き込み要求を受信した場合に、SSDは、まず、書き込み要求における書き込み予定データを圧縮し、次に、圧縮データをSSDにけるフラッシュメモリチップに書き込む。コントローラの読み出し要求を受信した場合に、SSDは、SSDにおけるフラッシュメモリチップからデータを読み出し、そして、読み出したデータを圧縮解除し、圧縮解除データをコントローラへ返してよい。
SSDでのデータ圧縮は、SSDの論理容量の変化を伴う。具体的には、SSDの論理容量が400GBであるが、このSSDにおいて、受信した400GBのデータが4:1の圧縮比に従って圧縮され、100GBの圧縮データが取得されることを、コントローラが把握すると仮定する。この場合、ディスクが依然として300GBのデータを記憶可能であること、即ち、この場合にディスクが依然として300GBの論理容量を有することをコントローラが把握できないとすると、SSDリソースの浪費がもたらされる。以下、問題の原因を説明する。
第1に、より望ましい説明のため、SSDに関連する3種類の容量、即ち、媒体容量、物理容量及び論理容量がまず説明される。
媒体容量:SSDにおけるフラッシュメモリチップの合計容量である。例えば、公称で400GBを有するSSDにおいて、SSDの中のフラッシュメモリチップの容量は、一般的には400GBよりも大きく、例えば512GBでありうる。即ち、512GBの媒体容量のうち、冗長空間とも称される、112GBのオーバープロビジョニング(OP)空間が存在する。オーバープロビジョニング空間は、SSDの信頼性を向上するために用いられ、一般的にはユーザが用いることはできない。確かに、異なるメーカーがSSDを設計する場合に用いられる冗長性比は異なっており、その結果、SSDのオーバープロビジョニング空間のサイズもまた変化する。オーバープロビジョニング空間は、不良ブロック置換またはガベージコレクションの間のデータ移行のために用いられてよい。
物理容量:SSDで利用可能な公称の容量である。それは、ユーザがSSDでデータを記憶するために用いることのできる記憶媒体の容量に等しい。例えば、公称400GBを有するSSDで、対応する物理容量は400GBである。データが記憶される前に、SSDがそのデータを圧縮するか否かに関係なく、SSDの物理容量は変化しない。
論理容量:SSDに実際に記憶できるデータの合計容量、即ち、データ記憶に用いることのできるSSDの容量である。SSDがデータを圧縮しないならば、論理容量は、一般的には、物理容量に等しい。データを記憶する前に、SSDがそのデータを圧縮する場合、SSDの論理容量は、SSDの利用可能な物理空間とSSDに記憶されるデータのうちの非圧縮データ量との和に等しい。従って、論理容量は動的に変化する。例えば、400GBの物理容量を有するSSDに対して、データサイズが1200GBであり、そして、当該データが圧縮され、SSDに実際に記憶される圧縮データのサイズが400GBであると、SSDの論理容量は1200GBである。論理容量は、ディスクに記憶されるデータの圧縮比に関連しており、異なるデータが記憶されると動的に変化する。
理解し易くするために、以下では、一例として、SSDの論理容量の変化の計算方式を、固定長圧縮及び可変長圧縮を用いて別々に説明する。
SSDの公称物理容量が400GBだと仮定すると、SSDの初期の公称論理容量は400GBに等しい。一例として、4KBのデータブロックの圧縮ステータスに対して、4KBの圧縮粒度が依然として用いられ、SSDの論理容量の増加量が、以下のいくつかの方式で計算されてよい。
(1)4KBのデータブロックが0.5KBの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4KB−0.5KB=3.5KBとなる。
(2)4KBのデータブロックが1KBの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4KB−1KB=3KBとなる。
(3)4KBのデータブロックが1.5KBの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4KB−1.5KB=2.5KBとなる。
(4)4KBのデータブロックが2KBの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4KB−2KB=2KBとなる。
(5)4KBのデータブロックが2.5KBの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4KB−2.5KB=1.5KBとなる。
(6)4KBのデータブロックが3KBの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4KB−3KB=1KBとなる。
(7)4KBのデータブロックが3.5KBの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4KB−3.5KB=0.5KBとなる。
以下、SSDの論理容量の増加量の計算についての具体例を提供する。
4M4KBのデータブロックがあると仮定すると、これらのデータブロックの合計長さは16GBである。
これらのデータブロックにおいて合計1Mのデータブロックが、それぞれ2KBに圧縮されると仮定すると、SSDの論理容量の増加量は、1M×(4KB−2KB)=2GBとなる。
これらのデータブロックにおいて合計1Mのデータブロックが、それぞれ1.5KBに圧縮されると仮定すると、SSDの論理容量の増加量は、1M×(4KB−1.5KB)=2.5GBとなる。
これらのデータブロックにおいて合計1Mのデータブロックが、それぞれ1KBに圧縮されると仮定すると、SSDの論理容量の増加量は、1M×(4KB−1KB)=3GBとなる。
これらのデータブロックにおいて合計1Mのデータブロックが、それぞれ0.5KBに圧縮されると仮定すると、SSDの論理容量の増加量は、1M×(4KB−0.5KB)=3.5GBとなる。
結論として、合計16GBのデータが、SSDに記憶される。圧縮することにより、この16GBのデータにより実際に占有される物理容量は、2GB+1.5GB+1GB+0.5GB=5GBとなる。この場合、SSDの論理容量の増加量は、2GB+2.5GB+3GB+3.5GB=11GBとなり、論理容量は411GBへ変化する。
可変長圧縮では、4KBのデータブロックの圧縮サイズは、例えば、2778B、1678B、2012B及び1212B等の可変の長さへ圧縮されてよい。4KBのデータブロックの圧縮ステータスに対して、以下に、SSDの論理容量の増加量の計算方式の一例を提供する。
(1)4KBのデータブロックが2778Bの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4096B−2778B=1318Bとなる。
(2)4KBのデータブロックが1678Bの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4096B−1678B=2418Bとなる。
(3)4KBのデータブロックが2012Bの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4096B−2012B=2084Bとなる。
(4)4KBのデータブロックが1212Bの圧縮ブロックに圧縮される:SSDの論理容量の増加量は、4096B−1212B=2884Bとなる。
上記の説明から、固定長圧縮または可変長圧縮に関係なく、SSDの論理容量が、データブロックの圧縮ステータスに従って、動的に変化することが理解できる。確かに、データ圧縮に加えて、トリム/アンマップオペレーションが、また、SSDの論理容量を変化させてよい。トリム/アンマップオペレーションは、以下で詳細に説明される。
結論として、SSDの論理容量は、データの圧縮ステータスに従って、動的に変化する。もしコントローラが、SSDの論理容量の動的な変化を把握できず、かつ、コントローラが論理容量の増加を認識できず、しかしながら、従来技術においてそうであるように、依然としてSSDの論理容量は変化しないと判断するならば、圧縮することで節約した記憶空間を十分に利用することができず、SSDの記憶空間の浪費がもたらされる。従って、コントローラ及びSSDの間の協働を許容し、SSDが動的に変化する論理容量を検出・管理してSSDの論理容量の動的な変化をコントローラへ示すことを可能とする一連の解決策をいかに設計するかは、圧縮機能及び圧縮解除機能がSSDへ移される場合に、考慮される必要のある問題である。
上述の問題を解決すべく、可変長マッピングテーブル管理部331及び論理ブロックステータス管理部332(図3を参照すると)がSSDへ加えられてよく、SSD論理アドレス管理部321がコントローラへ加えられてよい。以下、これらのユニットの機能を詳細に説明する。
可変長マッピングテーブル管理部331は、SSDのマッピングテーブルを管理し整備するように構成されてよい。マッピングテーブルは、SSDの論理アドレス空間を反映する。マッピングテーブルは、1または複数のエントリ(または、アイテムと称される)を有する。各エントリは、論理アドレス空間における論理アドレス範囲に対応する。マッピングテーブルにおける各エントリに対応する論理アドレス範囲は、マッピングテーブルの基本粒度である。例えば、各エントリが4KBの論理アドレス範囲に対応すると仮定した場合、マッピングテーブルの基本粒度は、4KBである。一般的に、各エントリは1つの論理ブロックに対応する。各エントリに対応する論理アドレス範囲は、論理ブロックアドレス(Logical Block Address、LBA)と称される。加えて、マッピングテーブルは、LBAを物理ブロックアドレス(Physical Block Address、PBA)にマッピングするために用いられてよく、マッピングテーブルに記録されるマッピング関係は、データのアドレス指定を実行するために用いられてよい。本発明の実施形態において、SSDのマッピングテーブルの長さは、SSDの論理容量が変化するにつれて、動的に変化してよい。
更に、SSDにおける圧縮及び圧縮解除処理は、マッピングテーブルを用いることによりマスクされてよい。具体的には、SSDのマッピングテーブルは、SSDの論理アドレス空間におけるデータの記憶ステータスを反映し、占有された論理アドレス空間のサイズは、データの元のサイズ(非圧縮のサイズ)によって決まる。即ち、論理アドレス空間におけるデータ記憶には圧縮現象は存在せず、このことは、マッピングテーブルを用いて、SSDによるデータの圧縮処理をマスクすることに等しい。
加えて、マッピングテーブルの基本粒度は、圧縮粒度と一致し続けてよい。マッピングテーブルは、SSDの中のメモリに位置付けられてよい。
依然として図3を参照すると、論理ブロックステータス管理部332は、SSDにおける論理ブロックのステータスを管理し整備するように構成されてよい。具体的には、SSDは3つのステータスの論理ブロック:ブランク論理ブロック(またはブランクブロックと称される)、有効論理ブロック(または有効ブロックと称される)、及び分離論理ブロック(または分離ブロックと称される)、を有してよい。ブランク論理ブロックは、利用可能な論理アドレスを有する論理ブロックを指してよいと理解されるべきである。ブランク論理ブロックの数は、SSDの残存論理容量を反映してよく、あるいは、ブランク論理ブロックの数は、SSDの残存する利用可能な空間を反映してもよい。加えて、ブランク論理ブロックの数は、SSDの論理容量が変化するにつれて、動的に変化してよい。従って、ブランク論理ブロックの数の動的な変化は、SSDの論理容量の動的な変化の測定基準(メトリック、metric)として用いられてよい。有効論理ブロックとは、その論理アドレスが有効データを記憶する論理ブロックを指してよく、有効データとは、トリムまたはアンマップされないデータを指してよい。分離論理ブロックとは、その論理アドレスが使用不可能な論理ブロックを指してよく、例えば、論理アドレスが無効データにより占有された論理ブロックを指してよい。無効データは、例えば、トリム/アンマップオペレーションにより無効とマークされたデータであってよい。
具体的には、SSDのマッピングテーブルは、図4に示される形式を用いて、SSDの1次元論理アドレス空間を示してよい。図4の正方形のボックスは、マッピングテーブルの基本粒度を表す。基本粒度は、4KB/8KB/16KB/32KB/64KBなどであってよい。マッピングテーブルで示される1次元論理アドレス空間の長さは、可変であってよく、即ち、動的に増加または減少してよい。加えて、マッピングテーブルは、分離論理ブロックを有してよく、図4における分離論理ブロックは、対角縞により特定される。分離論理ブロックに対応する論理アドレス範囲におけるデータは、無効データであり、分離論理ブロックに対応する論理アドレスを一時的に用いることができない。
SSDにおける論理ブロックは、上述の3つのステータスの間を遷移してよい。以下では、図5を参照して、SSDにおける論理ブロックの状態遷移処理を詳細に説明する。
最初に、論理ブロックに対応する論理アドレスが未使用の場合、論理ブロックはブランク論理ブロックである。有効データを記憶するためにブランク論理ブロックの論理アドレスが用いられると、ブランク論理ブロックは、有効論理ブロックへ変化する。
次に、トリム/アンマップオペレーションにより、有効論理ブロックが、分離論理ブロックへ変化してよい(トリム/アンマップオペレーションに関する詳細な説明については、以下のトリム/アンマップ手順を参照されたい)。以下のシナリオを検討する。まず、圧縮比4を有する一群のデータがSSDへ書き込まれ、次に、圧縮不可能な一群のデータがSSDへ書き込まれる。SSDの物理容量が400GBだと仮定すると、圧縮比4を有するデータがSSDへ書き込まれる場合、SSDは、実際には1600GBのデータを記憶することができる。この場合、SSDの論理容量は、400GBから1600GBへ拡大される。この場合、マッピングテーブルにより反映される論理アドレス空間は、1600GBである。次に、SSDのデータが更新され、圧縮不可能な400GBのデータが、SSDに記憶される。この場合、SSDは、実際には400GBのデータのみを記憶することができる。この場合、SSDに対応する論理容量は、1600GBから400GBへ再び減少する。論理容量が減少する間、論理アドレス空間の一部は確実に無効となり、分離論理ブロックが、論理アドレス空間に生成される。
次に、SSDの論理容量が増加するにつれて、分離論理ブロックが、再度、ブランク論理ブロックへ更新されてよい。具体的には、SSDの論理容量が増加する場合には、SSDの論理アドレス範囲が増加し、これに応じて、SSDにおけるブランク論理ブロックの数が増加する。この場合、マッピングテーブルにおける分離論理ブロックをブランク論理ブロックへ更新することが、優先的に考慮されてよい。マッピングテーブルにおける全ての分離論理ブロックがブランク論理ブロックへ更新されると、新しいブランク論理ブロックに対応するエントリが、マッピングテーブルの最後に加えられてよい。即ち、ブランク論理ブロックが加えられる。
マッピングテーブルは、SSDの論理アドレスから物理アドレスへのマッピング関係を記録してよい。マッピング関係は、論理ブロックの論理アドレスと物理ブロックの物理アドレスとの間のマッピング関係によって、具体的に反映されてよい。SSDにおける物理ブロックのサイズは、必要により設定されてよい。例えば、物理ブロックは、1/4物理ページ、1/2物理ページ、1物理ページ、複数の物理ページ、1つのブロック(block)、または複数のブロック、を有してよい。論理ブロックから物理ブロックへのマッピング関係とは、複数の論理ブロックが1つの物理ブロックにマッピングされること、即ち、多数対1のマッピング関係であってよい。SSDが、物理ブロックのサイズに従って、SSDの物理アドレス範囲を、1または複数の物理ブロックへ分割してよいことが理解されるべきである。図6は、複数の物理ブロックのうちの1つを示す。図6を参照すると、SSDが固定長圧縮及び可変長圧縮のいずれをサポートするかに関係なく、各論理ブロックが、1つの物理ブロックに対応してよく、複数の圧縮ブロックが、各物理ブロックに記憶されてもよい。
マッピングテーブルにおけるマッピング情報は、物理ブロックにおける圧縮ブロックの記憶場所を示してよい。マッピング情報についての複数の特定の形が、存在してよい。例えば、マッピング情報は、圧縮ブロックを記憶する物理ページに関する情報(例えば、物理ページの識別子または数)、物理ページ上の圧縮ブロックの開始位置に関する情報、及び圧縮ブロックの長さの情報等の情報、を有してよい。この指定方式において、圧縮ブロックは迅速に位置付けられることができ、アドレス指定効率は高い。オプションで、マッピング情報が、圧縮ブロックを記憶する物理ページに関する情報を有してよい。物理ページ上の圧縮ブロックの開始位置、及び圧縮ブロックの長さは、メタデータとして物理ページ上に記憶されてよく、例えば、物理ページのヘッダに記憶されてよい。一般的に、マッピングテーブルはSSDのメモリ空間に記憶されるので、マッピング情報における物理ページ情報のみが記憶されれば、マッピングテーブルの長さは低減され、SSDのメモリ空間が節約されうる。SSDが固定長圧縮及び可変長圧縮のいずれをサポートするかに関係なく、1または複数の上述の実装態様が、SSDにおけるマッピング情報に対して、用いられてよい。このことは、本発明の実施形態において具体的には限定されない。詳細は、具体例を参照して以下で説明される。
依然として図3を参照すると、コントローラにおけるSSD論理アドレス管理部321は、SSDの残存論理容量またはSSDの論理容量の変化をモニタリングし、または、問い合わせるように構成されてよい。具体的には、SSD論理アドレス管理部321は、SSDにおけるブランク論理ブロックの数をモニタリングし、または、問い合わせることにより、SSDの論理容量の変化を把握してよい。コントローラは、複数の方法でSSDにおけるブランク論理ブロックの数をモニタリングし、または、問い合わせてよい。以下に、いくつかの任意の解決策を提供する。実際には、以下の解決策のうちの1または複数が選択されてよい。
解決策1:コントローラが、リアルタイムでSSDにおけるブランク論理ブロックの数を検出する。具体的には、コントローラが、当該コントローラによって記録されるSSDにおけるブランク論理ブロックの数が特定の閾値(例えば、100)未満だと検出した場合に(ここでの数は、コントローラにより記録される、SSDにおける残存ブランク論理ブロックの数を指しており、その数は、SSDにおける実際の残存ブランク論理ブロックの数と等しくなくてもよいことが理解されるべきである)、コントローラは、SSDからブランク論理ブロックの数を能動的に問い合わせる。例えば、先の問い合わせにおいて、コントローラは、SSDが500のブランク論理ブロックを有することを把握する。後続のデータ書き込み処理において、コントローラは、コントローラによって記録されるSSDにおける残存ブランク論理ブロックの数を、更新し続けてよい。コントローラによりSSDに記録される残存ブランク論理ブロックの数が100未満であるとコントローラが発見する場合に、コントローラは、SSDから、このSSDにおける残存ブランク論理ブロックの実際の数を、能動的に問い合わせてよい。
解決策2:コントローラが、トリム/アンマップ領域に対応するデータ量のサイズに従って、SSDにおけるブランク論理ブロックの数を問い合わせるかどうかを決定する。例えば、コントローラは、トリムまたはアンマップされたデータ量を記録し、トリムまたはアンマップされたデータ量が1GBに到達する毎に、コントローラは、SSDにおけるブランク論理ブロックの数を能動的に問い合わせる。
解決策3:コントローラが、SSDに書き込まれるデータ量に従って、SSDにおけるブランク論理ブロックの数を問い合わせるかどうかを決定する。例えば、コントローラが1GBのデータ量をSSDに書き込む毎に、コントローラは、SSDにおけるブランク論理ブロックの数を能動的に問い合わせる。
解決策4:SSDが、ブランク論理ブロックの数を能動的にレポートする。例えば、SSDが、SSDにおけるブランク論理ブロックの数を周期的にレポートしてよく、あるいは、ブランク論理ブロックの数の変化が閾値を超えた場合に、SSDが、コントローラへ現在のブランク論理ブロックの数をレポートする。
以下では、一例として、SSDにおける圧縮処理の実装態様を、固定長圧縮及び可変長圧縮を用いて別々に詳細に説明する。
固定長圧縮方式
最初に、固定長圧縮システムにおける圧縮処理手順が、図7を参照して説明される。図7に示されるように、コントローラを有するシステムが、破線の上方に位置付けられ、1または複数のSSDを有するディスクが、破線の下方に位置付けられる。図7では、説明のため一例として、4KBの圧縮粒度が依然として用いられる。実際には、8KBや16KB等の他の圧縮粒度が、また、用いられてよく、圧縮粒度は、本発明の実施形態において具体的には限定されない。
具体的には、コントローラは、まず、ホストから、ディスクに記憶される必要のあるデータを受信してよく、次に、そのデータに重複排除を実行してよい(即ち、重複データを削除する。具体的な重複排除方式については、従来技術を参照のこと)。次に、コントローラは、重複排除データを圧縮せずに、当該重複排除データをSSDへ直接送信し、SSDが圧縮処理を実行する。SSDは、4KBを単位として用いてデータを圧縮する。圧縮データのサイズは、データの圧縮比により変動する。SSDが固定長圧縮方式を用いるため、上方アライメントオペレーションが圧縮データに実行される必要があり、その結果、圧縮データの長さは、0.5KBの整数倍となる。例えば、圧縮データのサイズが0.5KBと1KBの間である場合、上方アライメントの原理に従って、圧縮データは1KBになるように充填される必要があり、1KBの圧縮ブロックが取得される。
次に、圧縮ブロックは、SSDの物理アドレスへ書き込まれる必要がある。SSDが、基本の読み出しまたは書き込み単位として、一般的に物理ページを用いることが理解されるべきである。物理ページのサイズは、SSDの種類に関連するが、本発明の実施形態において具体的には限定されない。本発明の実施形態において、4KBの物理ページが、説明のための一例として用いられる。データが物理ページに書き込まれる前に、圧縮ブロックが、4KBを単位として用いることで丸め処理されて(または再グループ化されて)よく、4KBサイズへ丸め処理された圧縮ブロックを取得する。このように、丸め処理された一群の圧縮ブロックが、一度に4KBの物理ページに簡便に書き込まれてよい。図8は、圧縮ブロックの丸め処理のいくつかの方式を提供する。以下では、複数の圧縮ブロックを1つの物理ページへ丸め処理するいくつかの任意の実装態様を更に提供する。
2つの圧縮ブロックが1つの物理ページへ丸められる:(0.5KB、3.5KB)、(1KB、3KB)、(1.5KB、2.5KB)、(2KB、2KB)。
3つの圧縮ブロックが1つの物理ページへ丸められる:(1KB、1KB、2KB)、(0.5KB、1.5KB、2KB)(0.5KB、1KB、2.5KB)、(0.5KB、0.5KB、3KB)。
4つの圧縮ブロックが1つの物理ページへ丸められる:(0.5KB、0.5KB、1.5KB、1.5KB)、(0.5KB、1KB、0.5KB、2KB)、(0.5KB、1.5KB、1KB、1KB)、(0.5KB、2.5KB、0.5KB、0.5KB)。
コントローラから受信したデータに対して、SSDは、ある圧縮粒度でデータを整列及び圧縮する必要があるだけでなく、SSDにおけるデータの論理アドレスをそのデータに割り当てて、そのデータの論理アドレスと物理アドレスとの間のマッピング関係を記録する必要がある。
具体的には、図9を参照すると、マッピング情報が、マッピングテーブルのエントリに記録されてよく、SSDは、データのアドレスを指定すべく、マッピング情報を用いることにより、論理アドレスを、当該データの物理アドレスへ直接変換してよい。マッピング情報は、物理ページ、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さ、に関する情報を有してよい。
物理ページに関する情報とは、物理ページの数であってよいことに注意すべきである。物理ページは、グローバルに固有な数を有してよく、または、物理ブロックがグローバルに固有な数を有してもよいが、物理ページの数は、その物理ブロックにおいて固有である。
マッピングテーブルのエントリに記録されるマッピング情報が、4KBの物理ページに対して上述の3種類の情報を有する場合には、512GBの媒体容量を有するSSDは、1ピースのマッピング情報の要素を記録するために、ほぼ34ビット(bit)を必要とする。具体的な解析は以下である。
4KBの物理ページに対し、512GBは128M4KBに対応するので、ほぼ28ビットが、その4KBの物理ページのアドレス指定に必要とされる。
物理ページ上の圧縮ブロックの開始アドレスに対して、固定長圧縮方式での0.5KBに従って、境界アライメントが圧縮ブロックの開始アドレスに実行されるので、物理ページ上の圧縮ブロックの開始アドレスに関して8つの可能性がある。即ち、開始アドレスは0、0.5KB、1KB、1.5KB、2KB、2.5KB、3KB及び3.5KBに対応する。この場合、物理ページ上の圧縮ブロックの開始アドレスに関する全ての可能性は、3ビットを用いて示すことができる。
圧縮ブロックの長さに対し、全ての圧縮ブロックは0.5KBの整数倍であるので、圧縮ブロックの長さに関して8つの可能性、即ち、0.5KB、1KB、1.5KB、2KB、2.5KB、3KB、3.5KB及び4KB、がある。従って、圧縮ブロックの長さに関する全ての可能性は、3ビットを用いて示すことができる。
上記の説明から、1つの圧縮ブロック(例えば、0.5KBまたは1.5KBの1つの圧縮ブロック)を配置するために、ほぼ34ビットのマッピング情報が必要とされることが理解できる。1ピースのマッピング情報により必要とされるビット数は、SSDの容量、及び/又は、圧縮粒度に従って変動することに注意すべきである。このことは、本発明の実施形態において具体的には限定されない。
可変長圧縮の実装態様
可変長圧縮において、上方アライメントオペレーションが圧縮データに対して実行される必要がない。圧縮ブロックのサイズは同一に保たれてよく、かつ、上方アライメントされない。依然として4KBが一例として用いられ、4KBのデータブロックの圧縮データサイズが、2778B及び3600Bであると仮定すると、圧縮ブロックの長さは、2778B及び3600Bに保たれてよい。
図10を参照すると、物理ページの長さが16KBであると仮定すると、可変長圧縮によって取得される異なるサイズの圧縮ブロックが、次に完全な圧縮ブロックを配置することが不可能となるまで、物理ページ上に、順に、配置されてよい。使用することができない部分的な記憶空間が、物理ページの最後に存在してよい。部分的な記憶空間は、1つの完全な圧縮ブロックを含むには小さすぎる。使用することができない部分的な記憶空間はフラグメント(fragment)と称されてよく、フラグメントは、有効データを記憶できない。
マッピングテーブルの基本粒度が4KBであり、物理ぺージのサイズが16KBであると仮定した場合に、4KBのデータブロックの論理アドレスと物理アドレスとの間のマッピング関係は、以下の3つの解決策のうちの1つのいずれかを用いることにより、SSDに記録されてよい。
解決策1:マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページに関する情報を有する。物理ページのヘッダがメタデータを記憶し、メタデータが、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さを示す。圧縮ブロックが読み出されることになっている場合、マッピングテーブルに記憶されるマッピング情報に従って、対応する物理ページがまず見つけられ、次に、物理ページ上のデータが全体として読み出されてよい。そして、物理ページ上の圧縮ブロックの開始アドレス及び長さに対して、物理ページのヘッダ情報が検索される。具体的には、物理ページのヘッダ情報は、複数の圧縮ブロックのメタデータを記憶してよい。圧縮ブロックのメタデータの検索を助けるべく、4KBのデータブロックのLBAとメタデータとの間の対応が、物理ページのヘッダ情報の中に確立されてよい。この場合、SSDは、データブロックのLBAに従って、圧縮ブロックに対応するメタデータを検索することができる。
解決策2:解決策1と同様に、解決策2では、圧縮ブロックの物理ページに関する情報がマッピングテーブルに記憶され、圧縮ブロックのメタデータが物理ページ上に記憶される。マッピングテーブルが、圧縮ブロックの物理ページに関する情報を記憶するだけでなく、インデックス情報も記憶するという点で、違いがある。インデックス情報は、物理ページ上に記憶される一連の全ての圧縮ブロックにおける圧縮ブロックの位置を記述してよい。このように、物理ページのメタデータを検索する場合に、SSDは、解決策1で行うように複雑なLBAを検索することによって圧縮ブロックのメタデータを位置付ける必要がなく、インデックス情報に従ってメタデータを位置づければよいので、これにより、メタデータのデータ量を低減し、物理ページの記憶空間を節約する。
解決策3:マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページ、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さ、に関する情報を有する。この解決策では、メタデータは物理ページ上に記憶される必要がなく、その結果、物理ページの実装態様が簡易化される。加えて、マッピング情報に従ってメタデータを検索する処理が省略され、これにより、物理アドレスのアドレス指定の効率を改善する。
以下、図11を参照して上述の解決策1を詳細に説明する。図11を参照すると、1つの物理ページが3つの領域へ分割される。上端領域は、物理ページのヘッダ領域であり、ヘッダ情報の記憶に用いられる。中央領域は、データ記憶領域であり、複数の圧縮ブロックを記憶する。下端領域は、フラグメント領域である。これらの領域は、以下で、別々に説明される。
1.ヘッダ領域
ヘッダ情報が、物理ページのヘッダ領域に記憶される。ヘッダ情報は、物理ページ上に記憶される圧縮ブロックのメタデータを有する。メタデータのフォーマットは、LBA+物理ページの開始アドレス+圧縮ブロックの長さ、であってよい。確かに、インデックス情報がマッピングテーブルにすでに存在する場合には、メタデータのフォーマットは、インデックス情報+物理ページの開始アドレス+圧縮ブロックの長さ、であってよい。加えて、マッピング情報はまた、SSDのオーバープロビジョニング空間に記憶されてよく、その結果、物理ページの記憶空間を節約できる。
2.データ記憶領域
データ記憶領域は、圧縮ブロックを記憶するために用いられる。物理ページ上に、複数の圧縮ブロックが、コンパクトに一緒に記憶されてよい。
3.フラグメント領域
フラグメント領域は、未使用の記憶領域であり、1つの完全な圧縮ブロックを記憶するには短すぎ、従って、余りとして扱うしかない。
上述では、固定長圧縮及び可変長圧縮の実装態様を説明した。図12を参照して、以下、SSDにおいてデータ圧縮を実行する間の書き込み要求処理手順を詳細に説明する。
図12は、本発明の実施形態に係る書き込み要求を処理するフローチャートである。図12に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図12において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図12における段階は、図12に示された順序とは異なる順序に従って実行されてよく、場合によっては、図12のオペレーションの全てが実行されることになっている必要はない。
1202.ホストが、書き込み要求をコントローラへ送信する。
具体的には、書き込み要求は、以下の情報を有してよい:LUN_ID+LBA+LEN+DATADATAは、書き込み予定データを示す。LUN_IDは、論理ユニット番号(Logical Unit Number、LUN)の数を示す。ここで、LBAは、SSDの論理アドレスではなく、LUN上のDATAの論理アドレスを示す。LUNの論理アドレスとは、一般的には、ホストへ示されるディスクアレイのLBAを指す。LENは、データ長さを示し、DATAは、書き込み予定データである。システムで定義されるLBA及びLENは、一般的に、1セクタ当たりを基準としており、セクタのサイズは、一般的に、0.5KBであることが理解されるべきである。LENが10と仮定すると、DATAの長さは、10×0.5KB=5KBとなることが理解されてよい。確かに、各セクタは、他のサイズやフォーマットを更に有してもよい。このことは、本発明の実施形態において具体的には限定されない。ここでは、0.5KBのセクタサイズが、説明のための一例として用いられる
1204.コントローラは、書き込み予定データに境界アライメント処理を実行し、境界アライメント処理後に取得されたデータを、固定されたサイズに従い、パーティション化する。これは、任意選択の段階である。
コントローラによるDATAに対する境界アライメント処理は、後続のデータのパーティション化を容易にし、その結果、コントローラは、固定サイズに従ってデータをパーティション化する場合に、整数個のパーティション化されたデータブロックを取得することができる。
コントローラは、複数の方法で、データをパーティション化してよい。以下で、2つの任意のパーティション化の方式を提供する。
パーティション化方式1:コントローラは、パーティション化された各データブロックが、圧縮可能なユニットとなるように、SSDの圧縮粒度に従って、パーティション化を実行する。例えば、SSDの圧縮粒度が4KBであり、書き込み予定データのLENが10(つまり、5KB)だと仮定する。この場合、コントローラは、まず、5KBのデータに対して境界アライメント処理を実行して8KBのデータを取得し、次に、4KBの粒度で8KBのデータをパーティション化し、2つの4KBのデータブロックを取得する。5KBのデータに対するコントローラによる境界処理の実行の方式とは、例えば、コントローラがSSDから3KBのデータを読み出し、当該データと5KBのデータとを丸め処理して、8KBのデータを取得する、というものであってよい。
パーティション化方式2:コントローラは、SSDによって一度に処理可能な書き込み予定データの最大単位に基づいて、パーティション化を実行する。例えば、SSDによって一度に処理可能な書き込み予定データの最大単位が128KBであるならば、ここでは、パーティション化は128KBに従って実行されてよい。このような処理方式は、コントローラのオペレーションを簡単にする。続いて、SSDは、圧縮粒度に従って、128KBのデータをパーティション化し続ける。例えば、SSDのプロセッサは、128KBのデータを、32個の4KBのデータブロックへパーティション化する。
データがパーティション化された後、コントローラは、パーティション化されたデータブロックを1つの単位(ユニット)として用いることで、SSDへ書き込み要求を送信してもよいことに注意すべきである。この場合、パーティション化された各データブロックにおけるLUN_ID+LBA+LEN+DATA等のパラメータは、パーティション化の前の完全なデータにおけるLUN_ID+LBA+LEN+DATA等のパラメータに基づいて、決定されてよい。
1206.コントローラは、パーティション化されたデータブロックを記憶するためのSSDをディスクアレイから選択する。
コントローラは、複数のポリシーに従ってSSDを選択してよく、例えば、複数のSSDの間のウェアレベリング、フォールトトレランス処理、及び冗長性関係等に基づいて適切なSSDを選択してよい。SSDの選択の間、SSDに十分なブランク論理ブロックが存在することがまず保証される必要があることに注意すべきである。ディスクアレイの中のSSDにおけるブランク論理ブロックの数は、SSDの論理容量が変化するにつれて、動的に変化する。コントローラは、SSDにおけるブランク論理ブロックの数を、上述のブランク論理ブロック問い合わせ解決策に従って、問い合わせてよい。
1208.コントローラは、パーティション化された各データブロックに対応する書き込み要求をSSDへ送信してよい。
書き込み要求は、パーティション化されたデータブロックのLEN+DATA情報を保持してよい。LENは、書き込み要求におけるデータの長さを示し、DATAは、書き込み要求におけるデータコンテンツ(またはデータそのものとして参照され、即ち、データブロック)を示す。ここで、書き込まれる必要のある、書き込み要求におけるデータのSSDでの位置が特定さなくてもよいことが理解されるべきである。即ち、SSDにおけるデータの実際の記憶場所は、SSD自身により決定されてよい。
1210.SSDが、書き込み要求におけるデータにパーティション化処理を実行する。
段階1210は、任意選択の段階であることが理解されるべきである。段階1204において、圧縮粒度に従って、コントローラがデータをパーティション化する場合、SSDにより受信された書き込み要求におけるデータのサイズは、基本圧縮単位であり、その結果、パーティション化が再度実行される必要はなく、後続のオペレーションは直接実行されてよい。段階1204において、コントローラが、N倍の圧縮粒度に従って、データをパーティション化する場合、SSDにより受信された書き込み要求におけるデータのサイズは、圧縮粒度のN倍となり、そのデータは、段階1210において、圧縮粒度に従って、N個のデータブロックへパーティション化されてよい。特殊な場合として、SSDにより受信されるデータブロックのサイズが圧縮単位の整数倍ではない場合、SSDは、まず、データブロックに充填を行って圧縮単位の整数倍とし、次に、その圧縮単位のサイズに従って、パーティション化を実行してよい。
1212.SSDが、ブランク論理ブロックをパーティション化されたデータブロックへ割り当てる。
SSDは、SSDにおける論理ブロックのステータスを問い合わせ、データブロックを記憶するためのブランク論理ブロックを選択してよい。ブランク論理ブロックは、複数の方法で選択されてよい。例えば、ブランク論理ブロックはSSDからランダムに選択されてよく、あるいは、前方に論理アドレスを有するブランク論理ブロックが、マッピングテーブルにおける一連のブランク論理ブロックに従って、優先的に選択されてよい。このことは、本発明の実施形態において具体的には限定されない。
論理ブロックのステータスは、ビットマップにより示されてよい。ビットマップは、SSDのメモリに記憶されてよい。データブロックがブランク論理ブロックに記憶された後、ブランク論理ブロックの状態が変化してよく、その結果、ブランク論理ブロックは、有効論理ブロックへ変化する。
1214.SSDが、パーティション化されたデータブロックを圧縮し、圧縮ブロックをSSDへ書き込み、マッピングテーブルにマッピング情報を記録する。
段階1214を実行する方式は、固定長圧縮をサポートするSSD及び可変長圧縮をサポートするSSDにより異なってよく、以下、図13及び図14を参照して、別々に説明される。
1216.SSDが、論理容量の変化に従って、論理ブロックのステータスを調整する。
具体的には、論理容量が、1つの論理ブロックのサイズにより増加する毎に、1つの分離論理ブロックがブランク論理ブロックへ変換される。分離論理ブロックは、SSDにおける全ての分離ブロックからランダムに選択された分離論理ブロックであってよく、あるいは、分離論理ブロックは、SSDにおける全ての分離ブロックの前方に論理アドレスを有する分離論理ブロックであってよい。SSDに分離論理ブロックが存在しない場合には、ブランク論理ブロックに対応するエントリが、マッピングテーブルの最後に加えられてよい。これは、SSDにブランク論理ブロックを追加することに等しい。
論理ブロックのステータスの調整が完了した後、SSDの残存論理容量を示すべく、SSDにおける現在のブランク論理ブロックの数が、コントローラへ送信されてよい。例えば、現在、SSDが1000のブランク論理ブロックを有すると仮定する(各ブランク論理ブロックは4KBの実際の物理空間に対応し、合計で1000×4KBの実際に利用可能な論理空間がある)。SSDに含まれるブランク論理ブロックの数をコントローラが問い合わせると、SSDは、問い合わせ結果をコントローラへ返す。現在は1000個のブランク論理ブロックがある。従って、コントローラは、SSDへ1000個の4KBのデータブロックを書き込んでよい。コントローラによりSSDへ書き込まれた1000個のデータブロックのうちの500個が、それぞれ2KBへ圧縮可能であり、かつ、他の500個のデータブロックが、それぞれ1KBへと圧縮可能であると仮定する。元々は、これらのデータブロックを記憶するためには、1000個のブランク論理ブロックが消費される必要がある。現在は、圧縮のおかげで、(500×2+500×1)/4=375個のブランク論理ブロックのみが消費される。即ち、375個のブランク論理ブロックのみが、1000個の4KBのデータブロックを記憶するために消費される。そして、コントローラが、利用可能なブランク論理ブロックの数を再度問い合わせた場合に、SSDは、問い合わせ結果を返す。現在、1000−375=625個のブランク論理ブロックが利用可能である。
1218.SSDが、書き込み要求に対する応答メッセージをコントローラへ送信する。
書き込み要求におけるデータブロックがSSDに書き込まれた後に、SSDが、応答メッセージをコントローラへ送信する。SSDにおけるデータブロックの論理アドレス、例えばLBAは、応答メッセージで保持されてよい。応答メッセージの具体的な形式は、段階1204で説明されたパーティション化の方式に関連する。
段階1204において、コントローラが、圧縮粒度に従って、データをパーティション化する場合に、SSDは、そのデータを更にパーティション化する必要はなく、SSDは、論理アドレスを書き込み要求におけるデータへ直接的に割り当てて、かつ、そのデータに対して圧縮及び記憶オペレーションを実行してよい。上述の書き込み要求に対する応答メッセージは、標準的な書き込み完了コマンドであってよく、データブロックに対応する1つのLBAのみを保持する必要がある。
段階1204において、コントローラが、より大きな圧縮粒度に従ってデータをパーティション化する場合には、段階1218における応答メッセージは、複数のパーティション化されたデータブロックに対応する複数のLBAを保持する必要がある。この場合、新たな書き込完了コマンドが定義されてよい。新たな書き込完了コマンドのデータ量は、標準的な書き込み完了コマンドのデータ量よりも大きい必要がある。例えば、標準的な書き込み完了コマンドが16バイトである場合に、新たに定義された書き込み完了コマンドは、より多くのLBAを含むべく、32/64/128バイトであってよい。複数のLBAが、書き込み完了コマンドと共に戻される必要がある場合には、書き込み完了コマンドにおける一連の複数のLBAは、複数のLBAに対応する一連のデータブロックと一致し続けてよいことに注意すべきである。このように、複数のLBAにそれぞれ対応するデータのLBAを示すために、さらなるバイトを消費する必要がない。
1220.コントローラが、ディスクアレイのLBAとSSDのLBAとの間のマッピング関係を確立する。
コントローラは、段階1202でホストによって送信された書き込み要求を受信する。書き込み要求は、ディスクアレイのLUN_ID及びLBAを保持する。段階1218でコントローラに受信される書き込み完了コマンドは、SSDのLBAを有する。コントローラは、ディスクアレイのLBAとSSDのLBAとの間のマッピング関係を確立する。
例えば、ストレージコントローラは、段階1202で受信した書き込み要求に従って、開始位置LBA=0から、LUN_IDが0のLUNデバイスに、2つの4KBのデータブロックを続けて書き込む。システムで定義されるLBA及びLENは、概して、1セクタ当たりを基準とし、セクタサイズは、一般的に0.5KBであるので、4KBのデータブロックのLENは8である。このようにディスクアレイの第1のデータブロックの論理アドレスは、(LUN_ID=0、LBA=0、LEN=8)により示されてよく、ディスクアレイにおける第2のデータブロックの論理アドレスは、(LUN_ID=0、LBA=8、LEN=8)により示されてよい。第1のデータブロックが、IDが2のSSDにおける第2の論理ブロックに書き込まれ、第2のデータブロックが、IDが3のSSDにおける第3の論理ブロックに書き込まれると仮定すると、SSDにおける第1のデータブロックの論理アドレスは、(SSD_ID=2、LBA=8、LEN=8)により示され、SSDにおける第2のデータブロックの論理アドレスは、(SSD_ID=3、LBA=16、LEN=8)により示されてよい。この場合、コントローラは、以下のテーブルに示されるマッピング関係を確立してよい。
コントローラは、後続のデータ読み出しを容易にすべく、ディスクアレイのLBAとSSDのLBAとの間のマッピング関係を記録してよい。具体的には、これまでにSSDへ書き込まれたデータをホストが読み出す必要がある場合に、コントローラは、ホストの読み出し要求を、記録されたマッピング関係テーブルに基づいてSSDに対する読み出し要求へ変換し、対応するデータをホストへ返す。例えば、ホストは、LUN_IDが0である、即ち、先述の表の第2行の、第2のピースの4KBデータを読み出す必要がある。先述の表に示されるマッピング関係に基づいて、コントローラは、IDが3であるSSDに記憶されるデータのLBA16の位置を見つける。次に、コントローラは、IDが3であるSSDへ読み出し要求を送信し、LBA16の位置にあるデータを読み出し、その読み出したデータをホストへ返してよい。
1222.コントローラが、書き込み要求コマンド実行成功メッセージをホストへ送信する。
図13は、固定長圧縮における段階1214の実装態様の概略フローチャートである。図13に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図13において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図13における段階は、図13に示された順序とは異なる順序に従って実行されてよく、場合によっては、図13のオペレーションの全てが実行されることになっている必要はない。
1302.データブロックを圧縮し、上方アライメントオペレーションを実行する。
例えば、データブロックの圧縮粒度は4KBである。固定長圧縮では、0.5KBの整数倍に圧縮されるべきデータが必要である。データブロックが圧縮された後、圧縮データが1.5KBから2KBの間である場合には、2KBの圧縮ブロックを取得すべく、上方アライメントオペレーションが実行される。
1304.複数の圧縮ブロックを1つの物理ページへ結合する。
圧縮ブロックを丸め処理する方式は、上記で詳細に説明されている。詳細は図8を参照し、ここでは再度説明しない。固定長圧縮により、1つの物理ページに複数の圧縮ブロックがフィリングされてよく、フラグメントは生成されない。
1306.丸め処理された圧縮ブロックをSSDの媒体へ書き込む。
例えば、複数の圧縮ブロックが、1つの完全な物理ページへ丸め処理された後に、複数の圧縮ブロックが、SSDの媒体へ書き込まれる。書き込み成功の後、マッピングテーブルにおける圧縮ブロックのマッピング情報が更新され、論理アドレスに対応する物理アドレスがマッピングテーブルに記録される。本発明の実施形態がこれに限定されるものではなく、全ての処理される圧縮ブロックが、また、一度に、SSDの媒体に書き込まれてよいことに注意すべきである。
1308.論理容量の変化を計算する。
例えば、論理容量の変化は1つのデータブロックが圧縮される毎に計算されてよく、あるいは、論理容量の変化は全てのデータが圧縮された後に計算されてもよい。本発明の実施形態は、これに具体的に限定されるものではない。論理容量の変化の計算の特定の態様は、上記で詳細に説明されており、ここでは再び説明しない。
図14は、可変長圧縮における段階1214の実装態様の概略フローチャートである。図14に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図14において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図14における段階は、図14に示された順序とは異なる順序に従って実行されてよく、場合によっては、図14のオペレーションの全てが実行される必要はない。
1402.データブロックを圧縮して圧縮ブロックを取得する。
可変長圧縮のおかげで、ここではデータに対して上方アライメントオペレーションを実行する必要がなく、圧縮ブロックのサイズは同一に保持される。
1404.複数の圧縮ブロックを1つの物理ページへ結合する。
例えば、可変長の圧縮ブロックは、1つの物理ページへ、全て丸め処理されてよい。1つの完全な圧縮ブロックを更に含むことができない最後の残存領域は、フラグメントとして役目を果たしてよく、有効データを記憶しない。
1406.丸め処理された圧縮ブロックを、解決策1の方式で、SSDの媒体へ書き込む。
解決策1:マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページに関する情報を有する。物理ページのヘッダがメタデータを記憶し、メタデータが、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さを示す。圧縮ブロックが読み出されることになっている場合、マッピングテーブルに記憶されるマッピング情報に従って、対応する物理ページがまず確認され、次に、物理ページ上のデータが、全体として読み出されてよい。そして、物理ページ上の圧縮ブロックの開始アドレス及び長さを求めて、物理ページのヘッダ情報が検索される。具体的には、物理ページのヘッダ情報は、複数の圧縮ブロックのメタデータを記憶してよい。圧縮ブロックのメタデータの検索を助けるべく、4KBのデータブロックのLBAとメタデータとの間の対応が、物理ページのヘッダ情報の中で確立されてよい。この場合、SSDは、データブロックのLBAに従って、圧縮ブロックに対応するメタデータを検索することができる。
1408.丸め処理された圧縮ブロックを、解決策2の方式で、SSDの媒体へ書き込む。
解決策2:解決策1と同様に、解決策2では、圧縮ブロックの物理ページに関する情報がマッピングテーブルに記憶され、圧縮ブロックのメタデータが物理ページ上に記憶される。 マッピングテーブルが、圧縮ブロックの物理ページに関する情報を記憶するだけでなく、インデックス情報も記憶するという点で違いがあり、ここで、インデックス情報は、物理ページ上に記憶される一連の全ての圧縮ブロックにおける圧縮ブロックの位置を記述してよい。このように、物理ページのメタデータを検索する場合に、SSDは、解決策1で行うように複雑なLBAを検索することによって圧縮ブロックのメタデータを位置付ける必要がなく、インデックス情報に従ってメタデータを位置づける必要があるので、これにより、メタデータのデータ量を低減し、物理ページの記憶空間を節約する。
1410.丸め処理された圧縮ブロックを、解決策3の方式で、SSDの媒体へ書き込む。
解決策3:マッピングテーブルにおけるマッピング情報が、圧縮ブロックを記憶する物理ページ、物理ページ上の圧縮ブロックの開始アドレス、及び圧縮ブロックの長さ、に関する情報を有する。この解決策では、メタデータは、物理ページ上に記憶される必要がなく、その結果、物理ページの実装態様が簡易化される。加えて、マッピング情報に従ってメタデータを検索する処理が省略され、これにより、物理アドレスのアドレス指定の効率を改善する。
実際には、段階1406から段階1410のうちの1つの段階のみが実行される必要があることが理解されるべきである。
1412.論理容量の変化を計算する。
例えば、論理容量の変化が、1つのデータブロックが圧縮される毎に計算されてよく、あるいは、論理容量の変化は全てのデータが圧縮された後に計算されてもよい。本発明の実施形態がこれに具体的に限定されるものではない。論理容量の変化の計算の特定の態様は、上記で詳細に説明されており、ここでは再び説明しない。
上述では、図5を参照して3つの状態の間の論理ブロックの遷移を詳細に説明した。ここで、分離論理ブロックは、トリム/アンマップコマンドをトリガすることで生成される。以下、図15を参照して、トリム/アンマップに関連する処理手順を詳細に説明する。
図15は、本発明の実施形態に係るトリム/アンマップ手順の一例の図である。図15に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図15において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図15における段階は、図15に示された順序とは異なる順序に従って実行されてよく、場合によっては、図15のオペレーションの全てが実行されることになっている必要はない。
理解し易くするために、まず、トリム/アンマップオペレーションの処理が、簡潔に説明される。
一般的に、ホストが、ディスクからあるデータを削除する必要がある場合、コントローラは、トリム/アンマップコマンドをSSDへ送信し、まず、そのデータを無効データとしてマークする。SSDの機能により、無効データにより一時的に占有された物理ブロックは、新しいデータが書き込まれることができず(即ち、上書きできない)、その無効データが位置付けられた物理ブロックが、ガベージコレクションメカニズムを用いて消去された後でのみ、新しいデータを記憶し続けることができる。
コントローラが、論理アドレス範囲をトリムまたはアンマップする場合に、論理アドレス範囲に対応する論理ブロックは、有効論理ブロックから分離論理ブロックへ変化してよい。SSDのトリム/アンマップオペレーションを容易にすべく、トリム/アンマップコマンドにおける論理アドレス範囲は、論理ブロックの倍数に従って選択されてよい。
トリム/アンマップは、SSDの論理容量の減少量及びSSDの利用可能な論理容量の増加量を伴う。具体的には、トリム/アンマップコマンドが指示される論理アドレス範囲は、無効とマークされてよく、この場合、論理アドレス範囲に対応する容量は、SSDの論理容量から除去される必要がある。加えて、論理アドレス範囲に対応する物理空間は、直ちには利用することができない。なぜならば、トリム/アンマップオペレーションは、物理空間におけるデータを無効としてマークするだけであり、その物理空間は、ガベージコレクションメカニズムを用いてリリースされる必要があるからである。しかしながら、オーバープロビジョニング空間が存在するので、物理空間に対応する論理容量の増加が、直ちに反映されることが可能である。詳細は、図15の段階を参照して、以下で説明される。
1502.コントローラが、トリム/アンマップコマンドをSSDへ送信する。
概して、コントローラは、ホストが送信するトリム/アンマップコマンドをまず受信する。ここで、コマンドは、データセグメントを無効データとしてマークするように命令するために用いられる。コントローラは、SSDにおけるデータセグメントの論理アドレス範囲を見つけ、次に、トリム/アンマップコマンドをSSDへ送信し、SSDに対し、論理アドレス範囲にあるデータを無効データとしてマークするか、または、当該アドレス範囲におけるデータの論理アドレスと物理アドレスとの間のマッピング関係をキャンセルするように命令する。コントローラがSSDへ送信するトリム/アンマップコマンドは、トリムまたはアンマップされるべきデータの論理アドレス、例えば、SSDにおいてトリムまたはアンマップされるべきデータのLBA+LENを保持してよい。
1504.SSDが、特定の論理アドレス範囲におけるデータにトリム/アンマップオペレーションを実行する。
具体的には、SSDが、論理アドレス範囲における論理ブロックを選択し、次に、マッピングテーブルに在りかつその論理ブロックに対応するエントリからマッピング情報を取り出し、その物理ブロックにおける論理ブロックの物理アドレスを見つけて、そして、その物理アドレスにおけるデータを無効としてマークしてよい。
物理ブロックにおいて、2つの統計的な値が維持されてよい。ここで、1つの値は、その物理ブロックに記憶されるデータブロックの合計数を示してよく、他の値は、その物理ブロックに記憶される有効データブロックの数を示してよい。SSDは、物理ブロックにおける有効データブロックの数または有効データブロックのパーセンテージに従って、ガベージコレクションを実行するか否かを決定してよい。データが物理ブロックに書き込まれると、物理ブロックに対応する有効データブロックの数が増加する。物理ブロックにおける1つの有効データブロックが、トリムまたはアンマップされる毎に、その物理ブロックにおける有効データブロックの数は1だけ減少する。トリム/アンマップオペレーションは、上述の方式で、論理アドレス範囲における全ての論理ブロックが処理されるまで、周期的に実行される。
1506.SSDが、トリム/アンマップコマンドによりもたらされる論理容量の減少量を計算する。
トリム/アンマップコマンドに対応するアドレス範囲における全論理ブロックのマッピング関係がキャンセルされた後に、SSDの論理容量が、計算され、調整されてよい。特定の計算方式では、以下の式を参照する。(論理容量の減少量)=(トリム/アンマップオペレーション範囲における論理アドレスの論理容量)
1508.SSDが、トリム/アンマップコマンドによりもたらされる利用可能な論理容量の増加量を計算する。
具体的には、無効データが、SSDの80KBの物理空間を占有していると仮定する。80KBの物理空間は、ガベージコレクションの後でのみリリースすることができるが、80KBのオーバープロビジョニング空間が、まず、SSDのオーバープロビジョニング空間から借りられ、次に、無効データで占有された80KBの物理空間がガベージコレクションメカニズムを用いてリリースされた後、80KBのオーバープロビジョニング空間におけるデータが、物理容量に対応する記憶空間へ移動される。
このメカニズムを用いることにより、ひとたびトリム/アンマップオペレーションが無効データを生成しても、その無効データにより占有された物理空間を「リリース」すべく、オーバープロビジョニング空間が借りられてよい。この場合、SSDの利用可能な論理容量は、これに応じて80KB増加する。論理ブロックのサイズが8KBである場合、10個の分離論理ブロックがブランク論理ブロックに変換されてよい。これは、10個の利用可能なブランク論理ブロックの追加に等しい。リリースされたブランク論理ブロックは、新たな書き込み予定データを記憶するために用いられることができる。
例えば、SSDにより受信されるトリム/アンマップコマンドにより示される論理アドレス範囲が100Kであると仮定すると、圧縮されたストレージのおかげで、その100Kの論理アドレス範囲におけるデータにより実際に占有される物理空間は、80Kとなる。この場合、80Kのオーバープロビジョニング空間が、オーバープロビジョニング空間から借りられてよい。80Kのオーバープロビジョニング空間は、新しいデータを記憶するために用いられることができる。本例では、トリム/アンマップコマンドによりもたらされる、SSDの論理容量の減少量は100Kである。オーバープロビジョニング空間を用いることにより、SSDの利用可能な論理容量の増加量は80Kである。
上述では、図10を参照して書き込み要求処理手順を詳細に説明した。読み出し要求(または、読み出しIOと称される)処理手順は、書き込み要求処理手順の逆手順である。以下、図16を参照して、本発明の実施形態に係る読み出し要求処理手順を詳細に説明する。
図16は、本発明の実施形態に係る読み出し要求を処理する概略フローチャートである。図16に示される段階及びオペレーションは、例に過ぎないことが理解されるべきである。本発明の実施形態では、図16において、複数の他のオペレーションまたは様々なオペレーションの複数のバリエーションが、実行されてよい。加えて、図16における段階は、図16に示された順序とは異なる順序に従って実行されてよく、場合によっては、図16のオペレーションの全てが実行されることになっている必要はない。
1602.ホストが読み出し要求をコントローラへ送信する。
ホストが送信する読み出し要求は、LUN_ID、ディスクアレイにおいて読み出すべきデータのLBA、及び読み出すべきデータの長さを有してよい。
1604.コントローラが、読み出し要求をSSDへ送信する。
具体的には、コントローラは、段階1602で受信されるLUN_ID、ディスクアレイにおいて読み出すべきデータのLBA、及び、読み出すべきデータの長さに従って、コントローラ自らにより整備されるマッピングテーブルを問い合わせて(マッピングテーブルは、ホストへ示されるディスクアレイのLBAとSSDのLBAとの間のマッピング関係を示すために用いられてよい)、読み出すべきデータが位置付けられるSSD、並びにSSDにおける読み出すべきデータのLBA及び長さを決定してよい。
1606.SSDが、マッピングテーブルに基づいて、SSDの媒体から圧縮データを読み出す。
SSDが、固定長圧縮方式を用い、マッピングテーブルが、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始アドレス、及び圧縮データの長さ、に関する情報を記憶すると仮定した場合に、SSDは、マッピングテーブルに記憶される情報に従って、圧縮データを直接的に位置付けてよい。
SSDが可変長圧縮方式を用い、マッピングテーブルが、圧縮データを記憶する物理ページに関する情報のみを記憶し、物理ページ上の圧縮データの開始アドレス及び長さが、当該物理ページのヘッダに位置付けられると仮定した場合に、SSDは、まず、物理ページに関する情報に従って物理ページを見つけ、物理ページのヘッダ情報からその物理ページ上の圧縮データの開始アドレス及び長さを見つけ、次に、圧縮データの開始アドレス及び長さに従って、その圧縮データをその物理ページ上に位置付けてよい。
1608.SSDが、圧縮データに圧縮解除オペレーションを実行し、読み出すべきデータを取得する。
SSDは、内部の圧縮解除部を用いて圧縮データを圧縮解除し、読み出すべきデータを復元してよい。
1610.SSDが、読み出すべきデータをコントローラへ返す。
1612.コントローラは、読み出すべきデータをホストへ返してもよい。
上述では、図1から図16を参照して、本発明の実施形態に係るデータ処理方法を詳細に説明した。以下、図17及び図18を参照して本発明の実施形態に係るSSDを詳細に説明する。図17または図18におけるSSDは、図1から図16におけるSSDにより実行される各段階を実行可能であることが理解されるべきである。繰り返しを回避すべく、詳細をここで再度説明しない。
以下、本発明の装置の実施形態及びシステムの実施形態を説明する。装置の実施形態及びシステムの実施形態は上述の方法を実行すべく用いられることが可能であるため、詳細を説明しない部分については、上記方法の実施形態を参照されたい。
図17は、本発明の実施形態に係る記憶装置の概略構造図である。記憶装置1700の機能またはロジックは、ソフトウェアのみを用いて実装されてよく、または、ハードウェアのみを用いて実装されてもよく、または、ソフトウェア及びハードウェアの組み合わせを用いて実装されてもよいことが理解されるべきである。例えば、記憶装置1700は、ソフトウェア及びハードウェアの組み合わせを用いて実装されてよい。この場合、以下の説明における受信モジュールは受信回路を用いて実装されてよく、以下の説明における圧縮モジュールはコンピュータコードを用いて実装されてよい。他の例では、記憶装置1700は、ハードウェアのみを用いて実装されてよく、以下の説明における各モジュールの機能またはロジックは、ロジック回路を用いて実装されてよい。他の例では、記憶装置1700は、ソフトウェアのみを用いて実装されてよく、以下の説明における各モジュールは、コンピュータコードに対応する機能モジュールであってよい。
記憶装置1700が、書き込み予定データを保持する書き込み要求をコントローラから受信するように構成される第1受信モジュール1710と、圧縮データを取得すべく、書き込み予定データを圧縮するように構成された圧縮モジュール1720と、圧縮データを記憶するように構成される第1記憶モジュール1730と、第1フィードバック情報をコントローラへ送信するように構成される第1送信モジュール1740とを有し、第1フィードバック情報は、圧縮データが記憶された後の記憶装置1700の残存容量を示す。
オプションで、ある実施形態において、記憶装置1700は、第2フィードバック情報をコントローラへ送信するように構成される第2送信モジュールを更に有し、ここで第2フィードバック情報が、記憶装置1700の論理容量を示し、記憶装置1700の論理容量は、記憶装置1700に記憶されているデータの非圧縮データ量及び記憶装置1700の利用可能な物理空間の容量の和である。
オプションで、ある実施形態において、記憶装置1700が、書き込み予定データへブランク論理ブロックを割り当てるように構成される割り当てモジュールであって、各論理ブロックは記憶装置1700の論理容量のセグメントに対応する、割り当てモジュールと、割り当てられたブランク論理ブロックを有効論理ブロックへ変換するように構成される第1変換モジュールであって、有効論理ブロックが、その論理アドレスが有効データで占有される論理ブロックである、第1変換モジュールと、記憶装置1700における残存ブランク論理ブロックの数を問い合わせるように構成される第1問い合わせモジュールと、を更に有し、第1送信モジュール1740は、第1フィードバック情報をコントローラへ送信するように具体的に構成され、第1フィードバック情報が、残存ブランク論理ブロックの数、及び/又は、残存容量を有し、残存容量は、残存ブランク論理ブロックの数に基づいて決定される。
オプションで、ある実施形態において、圧縮モジュール1720は、割り当てモジュールがブランク論理ブロックを書き込み予定データへ割り当てた後に、圧縮データを取得すべく書き込み予定データを圧縮するように具体的に構成され、記憶装置1700が、記憶装置1700で追加する必要のあるブランク論理ブロックの数を、書き込み予定データのサイズ及び圧縮データのサイズに従って決定するように構成される第1決定モジュールを更に有する。
オプションで、ある実施形態において、記憶装置1700が、新しいブランク論理ブロックに対応するエントリを、記憶装置1700で追加する必要のあるブランク論理ブロックの数に従って、マッピングテーブルへ追加するように構成される追加モジュールを更に有する。
オプションで、ある実施形態において、記憶装置1700が、記憶装置1700における分離論理ブロックを、記憶装置1700で追加する必要のあるブランク論理ブロックの数に従って、ブランク論理ブロックへ更新するように構成される更新モジュールを更に有し、分離論理ブロックは、その論理アドレスが記憶装置1700で使用不可能な論理ブロックである。
オプションで、ある実施形態において、記憶装置1700で追加する必要のあるブランク論理ブロックの数Mは、DをLで除算して切り捨てた結果に等しく、ここでDは書き込み予定データの長さと圧縮データとの長さの間の差を示し、Lは記憶装置1700における論理ブロックの長さを示す。
オプションで、ある実施形態において、記憶装置1700が、コントローラからコマンドを受信するように構成される第2受信モジュールと、論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように構成される第2変換モジュールとを更に有する。ここで、コマンドが論理アドレス範囲を有し、コマンドが論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられ、分離論理ブロックは、その論理アドレスが使用不可能な論理ブロックである。
オプションで、ある実施形態において、記憶装置1700が、論理アドレス範囲におけるデータによって占有される物理空間のサイズを決定するように構成される第2決定モジュールと、オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択するように構成される選択モジュールと、部分的なオーバープロビジョニング空間を、記憶装置1700の利用可能な物理空間として用いるように構成される第3決定モジュールとを更に有する。ここで、部分的なオーバープロビジョニング空間のサイズが論理アドレス範囲におけるデータによって占有される物理空間のサイズと等しい。
オプションで、ある実施形態において、記憶装置1700が、第1フィードバック情報がコントローラへ送信される前に、記憶装置1700の利用可能な物理空間を問い合わせるように構成される第2問い合わせモジュールと、利用可能な物理空間の容量を残存容量と決定するように構成される第4決定モジュールと、を更に有する。
オプションで、ある実施形態において、記憶装置1700が、書き込み要求がコントローラから受信された後に、論理アドレスを書き込み予定データへ割り当てるように構成される第5決定モジュールと、マッピングテーブルに在り、かつ、論理アドレスに対応するエントリにマッピング情報を記録するように構成される第1記録モジュールとを更に有する。ここで、マッピング情報が、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始位置、及び圧縮データの長さ、に関する情報を有する。
オプションで、ある実施形態において、記憶装置1700が、書き込み要求がコントローラから受信される後に、論理アドレスを書き込み予定データへ割り当てるように構成される第6決定モジュールと、マッピングテーブルに在り、論理アドレスに対応するエントリにマッピング情報を記録するように構成される第2記録モジュールであって、マッピング情報が、圧縮データを記憶する物理ページに関する情報を有する、第2記録モジュールと、物理ページ上に圧縮データのメタデータを記憶するように構成される第2記憶モジュールを更に有する。ここで、メタデータが、物理ページ上の圧縮データの開始位置、及び圧縮データの長さを有する。
オプションで、ある実施形態において、書き込み要求が、書き込み予定データのデータ長を有し、書き込み予定データの論理アドレスが、データ長に基づいて割り当てられる。
オプションで、ある実施形態において、記憶装置1700が、書き込み要求がコントローラから受信される後に、記憶装置1700における書き込み予定データの論理アドレスをコントローラへ送信するように構成される第3送信モジュールを更に有する。
オプションで、ある実施形態において、記憶装置1700が、コントローラから読み出し要求を受信するように構成され、読み出し要求が、読み出すべきデータの論理アドレスを有する、第3受信モジュールと、読み出すべきデータの論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出すように構成される読み出しモジュールと、ターゲットデータを圧縮解除して読み出すべきデータを取得するように構成される圧縮解除モジュールと、読み出すべきデータをコントローラへ送信するように構成される第4送信モジュールと、を更に有する。
記憶装置1700が、例えばSSDであってよいことに注意すべきである。記憶装置1700は、通信インタフェース、記憶媒体及びプロセッサを有するSSDにより実装されてよい。プロセッサは、メモリ内のコンピュータ命令を実行することにより、方法の実施形態で説明されたオペレーションを実行してよい。
プロセッサは、内部のハードウェアの論理的接続を用いることで、方法の実施形態で説明されたオペレーションを更に実行してよく、例えば、特定用途向け集積回路(application−specific integrated circuit、短縮してASIC)を用いることで、またはプログラマブル論理デバイス(programmable logic device、短縮してPLD)を用いることで、オペレーションを実装してよい。PLDは、コンプレックスプログラマブルロジックデバイス(英語でcomplex programmable logic device、短縮してCPLD)、FPGA、ジェネリックアレイロジック(英語で、generic array logic、短縮してGAL)またはこの組み合わせであってよい。本発明の実施形態において、例えば、記憶装置はSSDの中にあってよい。SSDは、記憶媒体及びプロセッサを有する。記憶媒体は、記憶空間を提供するように構成される。SSDのプロセッサが、書き込み予定データを保持する書き込み要求をコントローラから受信するように構成される第1受信回路と、書き込み予定データを圧縮して圧縮データを取得するように構成される圧縮回路と、圧縮データを記憶するように構成される第1記憶回路と、第1フィードバック情報をコントローラへ送信するように構成される第1送信回路とを有する。ここで、第1フィードバック情報が、圧縮データが記憶された後のSSDの残存容量を示す。
図18は、本発明の実施形態に係る記憶システムの概略構造図である。図18の記憶システム1800は、図17で説明されたコントローラ1810及び記憶装置1700を有する。
コントローラ1810が、書き込み予定データを備える書き込み要求を生成し、記憶装置1700から書き込み要求に対する応答メッセージを受信し。ここで、応答メッセージが、記憶装置1700における書き込み予定データの論理アドレスを有し、ディスクアレイにおける書き込み予定データの論理アドレスと記憶装置1700における書き込み予定データの論理アドレスとの間のマッピング関係を記録するように構成される。
オプションで、ある実施形態において、コントローラ1810が、ホストから新たな書き込み予定データを受信し、第1フィードバック情報に従って記憶装置1700の残存容量を決定し、記憶装置1700の残存容量が新たな書き込み予定データのサイズよりも大きい場合に、新たな書き込み予定データを記憶装置1700へ書き込むように、更に構成される。
図19は、本発明の実施形態に係るソリッドステートディスクの概略構造図である。図19のソリッドステートディスク1900は、コントローラと通信するように構成される通信インタフェース1910と、記憶空間を提供するように構成される記憶媒体1920と、通信インタフェース1910及び記憶媒体1920に接続され、通信インタフェース1910を介してコントローラから書き込み要求を受信するように構成されるプロセッサ1930とを有する。ここで、書き込み要求が、書き込み予定データを保持し、圧縮データを取得すべく書き込み予定データを圧縮し、記憶媒体1920に圧縮データを記憶し、通信インタフェース1910を介して第1フィードバック情報をコントローラへ送信し、第1フィードバック情報は、圧縮データが記憶された後の記憶媒体1920の残存容量を示す。
オプションで、ある実施形態において、プロセッサ1930が、通信インタフェース1910を介して第2フィードバック情報をコントローラへ送信するように更に構成され、ここで、第2フィードバック情報は記憶媒体1920の論理容量を示し、記憶媒体1920の論理容量が、記憶媒体1920に記憶されているデータの非圧縮データ量及び記憶媒体1920の利用可能な物理空間の容量の和である。
オプションで、ある実施形態において、プロセッサ1930が、書き込み予定データへブランク論理ブロックを割り当て、割り当てられたブランク論理ブロックを有効論理ブロックへ変換し、ソリッドステートディスク1900における残存ブランク論理ブロックの数を問い合わせるように更に構成される。ここで、ブランク論理ブロックは利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックは記憶媒体1920の論理容量のセグメントに対応し、有効論理ブロックは、その論理アドレスが有効データで占有される論理ブロックであり、プロセッサ1930が、通信インタフェース1910を介して第1フィードバック情報をコントローラへ送信するように具体的に構成され、第1フィードバック情報が、残存ブランク論理ブロックの数、及び/又は、残存容量を有し、残存容量は、残存ブランク論理ブロックの数に基づいて決定される。
オプションで、ある実施形態において、プロセッサ1930がブランク論理ブロックを書き込み予定データへ割り当てた後に、プロセッサ1930が、圧縮データを取得すべく書き込み予定データを圧縮するように具体的に構成され、プロセッサ1930が、ソリッドステートディスク1900で追加する必要のあるブランク論理ブロックの数を、書き込み予定データのサイズ及び圧縮データのサイズに従って決定するように更に構成される。
オプションで、ある実施形態において、プロセッサ1930が、新しいブランク論理ブロックに対応するエントリを、ソリッドステートディスク1900で追加する必要のあるブランク論理ブロックの数に従って、ソリッドステートディスク1900のマッピングテーブルへ追加するように更に構成される。
オプションで、ある実施形態において、プロセッサ1930が、ソリッドステートディスク1900で追加する必要のあるブランク論理ブロックの数に従って、ソリッドステートディスク1900における分離論理ブロックを、ブランク論理ブロックへ更新するように更に構成される。ここで、分離論理ブロックは、その論理アドレスがソリッドステートディスク1900で使用不可能な論理ブロックである。
オプションで、ある実施形態において、ソリッドステートディスク1900で追加する必要のあるブランク論理ブロックの数Mは、DをLで除算して切り捨てた結果に等しく、ここでDは書き込み予定データの長さと圧縮データの長さとの間の差を示し、Lはソリッドステートディスク1900における論理ブロックの長さを示す。
オプションで、ある実施形態において、プロセッサ1930が、通信インタフェース1910を介してコントローラからコマンドを受信し、論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように更に構成される。ここで、コマンドが論理アドレス範囲を有し、コマンドは論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられ、分離論理ブロックは、その論理アドレスが使用不可能な論理ブロックである。
オプションで、ある実施形態において、プロセッサ1930が、論理アドレス範囲におけるデータによって占有される物理空間のサイズを決定し、オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択し、部分的なオーバープロビジョニング空間を、記憶媒体1920の利用可能な物理空間として用いるように更に構成される。ここで、部分的なオーバープロビジョニング空間のサイズが論理アドレス範囲におけるデータによって占有される物理空間のサイズと等しい。
オプションで、ある実施形態において、プロセッサ1930が通信インタフェース1910を介して第1フィードバック情報をコントローラへ送信する前に、プロセッサが1930、記憶媒体1920の利用可能な物理空間を問い合わせ、利用可能な物理空間の容量を残存容量と決定するように更に構成される。
オプションで、ある実施形態において、プロセッサ1930が、通信インタフェース1910を介してコントローラから書き込み要求を受信した後に、プロセッサ1930が、論理アドレスを書き込み予定データへ割り当て、マッピングテーブルに在り、かつ、論理アドレスに対応するエントリにマッピング情報を記録するように更に構成される。ここで、マッピング情報が、圧縮データを記憶する物理ページ、物理ページ上の圧縮データの開始位置、及び圧縮データの長さ、に関する情報を有する。
オプションで、ある実施形態において、プロセッサ1930が通信インタフェース1910を介してコントローラから書き込み要求を受信した後に、プロセッサ1930が、論理アドレスを書き込み予定データへ割り当て、マッピングテーブルに在り、かつ、論理アドレスに対応するエントリにマッピング情報を記録するように更に構成される。ここで、マッピング情報が、圧縮データを記憶する物理ページに関する情報を含み、プロセッサ1930は、物理ページ上に圧縮データのメタデータを記憶するように更に構成され、ここで、メタデータが、物理ページ上の圧縮データの開始位置、及び圧縮データの長さを有する。
オプションで、ある実施形態において、書き込み要求が、書き込み予定データのデータ長を有し、書き込み予定データの論理アドレスが、データ長に基づいて割り当てられる。
オプションで、ある実施形態において、プロセッサ1930が圧縮データを記憶した後に、プロセッサ1930が記憶媒体1920における書き込み予定データの論理アドレスを、通信インタフェース1910を介してコントローラへ送信するように更に構成される。
オプションで、ある実施形態において、プロセッサ1930が、通信インタフェース1910を介してコントローラから読み出し要求を受信するように更に構成され、ここで読み出し要求が、読み出すべきデータの論理アドレスを備える。プロセッサ1930が、読み出すべきデータの論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出し、ターゲットデータを圧縮解除して読み出すべきデータを取得し、通信インタフェース1910を介して読み出すべきデータをコントローラへ送信するように更に構成される。
図20は、本発明の実施形態に係る記憶システムの概略構造図である。図20の記憶システム2000は、図19のコントローラ2010及びソリッドステートディスク1900を有する。
コントローラ2010が、書き込み予定データを有する書き込み要求を生成し、通信インタフェース1910を介してプロセッサ1930から書き込み要求に対する応答メッセージを受信するように構成され、ここで、応答メッセージが、記憶媒体1920における書き込み予定データの論理アドレスを有する。コントローラ2010が、ディスクアレイにおける書き込み予定データの論理アドレスと記憶媒体1920における書き込み予定データの論理アドレスとの間のマッピング関係を記録するように更に構成される。
オプションで、ある実施形態において、コントローラ2010が、ホストから新たな書き込み予定データを受信し、第1フィードバック情報に従ってソリッドステートディスク1900の残存容量を決定し、ソリッドステートディスク1900の残存容量が新たな書き込み予定データのサイズよりも大きい場合に、新たな書き込み予定データを記ソリッドステートディスク1900へ書き込むように、更に構成される。
本明細書において、「及び/又は」は、3種類の関係が存在してよいこと表す。例えば、A及び/又はBは、以下の3つのケース、すなわち、Aのみが存在すること、A及びBの両方が存在すること、及びBのみが存在することを表してよい。加えて、本明細書における記号「/」は概して、関連対象物間の「または」の関係を示す。
当業者であれば、本明細書において開示される実施形態を参照して説明された例におけるユニット及びアルゴリズム段階が、電子的ハードウェア、又は、コンピュータソフトウェア及び電子的ハードウェアの組み合わせにより実装されてよいことが認識され得る。機能が、ハードウェアにより実行されるか、又は、ソフトウェアにより実行されるかは、技術的解決法の特定の用途及び設計制約条件に依存する。当業者であれば、具体的な用途毎に、説明した機能を実装する際に利用する方法を変更し得るが、このような実装が本発明の範囲を超えるものとみなされるべきではない。
当業者には明確に理解され得るように、説明を簡便かつ簡単にする目的で、前述のシステム、装置、及びユニットの詳細な動作プロセスについては、前述の方法の実施形態における対応するプロセスを参照されたく、詳細は説明しない。
発明において提供されたいくつかの実施形態では、開示されたシステム、装置、及び方法が他の方式で実装されてよいことが理解されるべきである。例えば、説明した装置の実施形態は、一例に過ぎない。例えば、ユニットの区分は、論理的機能の区分に過ぎず、実際の実装においては他の区分であってよい。例えば、複数のユニットまたは構成要素が丸め処理され、または、別のシステムに統合されてよく、あるいは、いくつかの特徴は無視されるかまたは実行されなくてよい。加えて、表示または議論されている相互結合もしくは直接的結合または通信接続は、いくつかのインタフェース、装置またはユニット間の間接的結合もしくは通信接続、もしくは電気的接続、機械的接続、または他の形態の接続によって実装されてよい。
別個の構成要素として説明されたユニットは、物理的に離れていても離れていなくてもよく、またユニットとして表示された構成要素が、物理的なユニットであってもそうでなくてもよく、あるいは1か所に配置されても、複数のネットワークユニットに分散されてもよい。ユニットのいくつか又は全ては、実施形態の解決手段の目的を実現するために、実際の必要に従って選択されてよい。
加えて、本発明の実施形態における機能ユニットが1つの処理ユニットに統合されてよく、もしくはユニットの各々が物理的に単独で存在してよく、または2つまたはそれより多くのユニットが1つのユニットに統合される。
機能がソフトウェア機能ユニットの形態で実装され、単独の製品として販売または使用されるとき、当該機能は、コンピュータ可読記憶媒体に記憶されてよい。そのような理解に基づいて、本発明の技術的解決手段は本質的に、または従来技術に寄与する部分は、または技術的解決手段の一部は、ソフトウェア製品の形態で実装されてよいソフトウェア製品は、記憶媒体に記憶され、本発明の実施形態において説明される方法の段階の全てまたは一部を実行するようコンピュータデバイス(これはパーソナルコンピュータ、サーバ、またはネットワークデバイスであってよい)に命令するためのいくつかの命令を含む。上述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、リードオンリメモリ(ROM、Read−Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、または光ディスク等の、プログラムコードを記憶することができる任意の媒体を含む。
上記の説明は、単に本発明の特定の実装態様に過ぎず、本発明を限定することを意図するものではない。
本願によれば、以下の各項目もまた開示される。
[項目1]
ソリッドステートディスクSSDに適用されるデータ処理方法であって、
コントローラから、書き込み予定データを保持する書き込み要求を上記SSDにより受信する段階と、
上記書き込み予定データを上記SSDにより圧縮して圧縮データを取得する段階と、
上記圧縮データを上記SSDにより記憶する段階と、
第1フィードバック情報を上記コントローラへ上記SSDにより送信する段階であって、上記第1フィードバック情報が、上記圧縮データが記憶された後の上記SSDの残存容量を示す、送信する段階と
を備える、
データ処理方法。
[項目2]
上記方法が、
ブランク論理ブロックを上記書き込み予定データへ上記SSDにより割り当てる段階であって、上記ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが上記SSDの論理容量のセグメントに対応する、割り当てる段階と、
割り当てられた上記ブランク論理ブロックを有効論理ブロックへ上記SSDにより変換する段階であって、上記有効論理ブロックは論理アドレスが有効データで占有される論理ブロックである、変換する段階と、
上記SSDにおける残存ブランク論理ブロックの数を上記SSDにより問い合わせる段階と
を更に備え、
上記第1フィードバック情報を上記コントローラへ上記SSDにより送信する段階が、上記第1フィードバック情報を上記コントローラへ上記SSDにより送信する段階であって、上記第1フィードバック情報が、上記残存ブランク論理ブロックの上記数、及び/又は、上記残存容量を含み、上記残存容量が、上記残存ブランク論理ブロックの上記数に基づいて決定される、送信する段階を有する、項目1に記載の方法。
[項目3]
上記書き込み予定データを上記SSDにより圧縮して圧縮データを取得する段階が、ブランク論理ブロックを上記書き込み予定データへ上記SSDにより割り当てる段階の後に、上記書き込み予定データを上記SSDにより圧縮して上記圧縮データを取得する段階を有し、
上記方法が、
上記SSDで追加する必要のあるブランク論理ブロックの数を、上記書き込み予定データのサイズ及び上記圧縮データのサイズに従って、上記SSDにより決定する段階
を更に備える、項目2に記載の方法。
[項目4]
上記方法が、
新しいブランク論理ブロックに対応するエントリを、上記SSDで追加する必要のある上記ブランク論理ブロックの上記数に従って、上記SSDのマッピングテーブルへ上記SSDにより追加する段階
を更に備える、項目3に記載の方法。
[項目5]
上記方法が、
上記SSDで追加する必要のある上記ブランク論理ブロックの上記数に従って、上記SSDにおける分離論理ブロックをブランク論理ブロックへ上記SSDにより更新する段階
を更に備え、
上記分離論理ブロックは、論理アドレスが上記SSDで使用不可能な論理ブロックである、項目3または4に記載の方法。
[項目6]
上記SSDで追加する必要のあるブランク論理ブロックの数Mは、DをLで除算して切り捨てた結果に等しく、
Dは、上記書き込み予定データの長さと上記圧縮データの長さとの間の差を示し、
Lは、上記SSDにおける論理ブロックの長さを示す、項目3から5の何れか一項に記載の方法。
[項目7]
上記方法が、
上記コントローラからコマンドを上記SSDにより受信する段階であって、上記コマンドが論理アドレス範囲を備え、上記コマンドが上記論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、受信する段階と、
上記論理アドレス範囲における有効論理ブロックを分離論理ブロックへ上記SSDにより変換する段階であって、上記分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、変換する段階と
を更に備える、項目2から6の何れか一項に記載の方法。
[項目8]
上記方法が、
上記論理アドレス範囲におけるデータにより占有される物理空間のサイズを上記SSDにより決定する段階と、
オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を上記SSDにより選択する段階であって、上記部分的なオーバープロビジョニング空間のサイズが上記論理アドレス範囲における上記データにより占有される上記物理空間の上記サイズと等しい、選択する段階と、
上記部分的なオーバープロビジョニング空間を上記SSDの利用可能な物理空間として上記SSDにより用いる段階と
を更に備える、項目7に記載の方法。
[項目9]
第1フィードバック情報を上記コントローラへ上記SSDにより送信する上記段階の前に、上記方法が、
上記SSDの利用可能な物理空間を上記SSDにより問い合わせる段階と、
上記利用可能な物理空間の容量を上記残存容量と上記SSDにより決定する段階と
を更に備える、項目1に記載の方法。
[項目10]
コントローラから書き込み要求を上記SSDにより受信する上記段階の後に、上記方法が、
論理アドレスを上記書き込み予定データへ上記SSDにより割り当てる段階と、
上記SSDのマッピングテーブルに在り、上記論理アドレスに対応するエントリに、マッピング情報を上記SSDにより記録する段階と
を更に備え、
上記マッピング情報が、上記圧縮データを記憶する物理ページ、上記物理ページ上の上記圧縮データの開始位置、及び上記圧縮データの長さ、に関する情報を含む、項目1から9の何れか一項に記載の方法。
[項目11]
コントローラから書き込み要求を上記SSDにより受信する上記段階の後に、上記方法が、
論理アドレスを上記書き込み予定データへ上記SSDにより割り当てる段階と、
上記SSDのマッピングテーブルに在り、上記論理アドレスに対応するエントリに、マッピング情報を上記SSDにより記録する段階であって、上記マッピング情報が、上記圧縮データを記憶する物理ページに関する情報を含む、記録する段階と、
上記物理ページ上に上記圧縮データのメタデータを上記SSDにより記憶する段階であって、上記メタデータが、上記物理ページ上の上記圧縮データの開始位置、及び上記圧縮データの長さを含む、記憶する段階と
を更に備える、項目1から9の何れか一項に記載の方法。
[項目12]
上記書き込み要求が、上記書き込み予定データのデータ長を含み、
上記書き込み予定データの論理アドレスが、上記データ長に基づいて割り当てられる、項目10または11に記載の方法。
[項目13]
上記圧縮データを上記SSDにより記憶する段階の後に、上記方法が、
上記SSDにおける上記書き込み予定データの論理アドレスを上記コントローラへ上記SSDにより送信する段階
を更に備える、項目1から12の何れか一項に記載の方法。
[項目14]
上記方法が、
上記コントローラから読み出し要求を上記SSDにより受信する段階であって、上記読み出し要求が、読み出すべきデータの論理アドレスを含む、受信する段階と、
上記読み出すべきデータの上記論理アドレスに対応する物理アドレスにおけるターゲットデータを上記SSDにより読み出す段階と、
上記ターゲットデータを上記SSDにより圧縮解除して上記読み出すべきデータを取得する段階と、
上記読み出すべきデータを上記コントローラへ上記SSDにより送信する段階と
を更に備える、項目13に記載の方法。
[項目15]
上記方法が、
第2フィードバック情報を上記コントローラへ上記SSDにより送信する段階
を更に備え、
上記第2フィードバック情報が、上記SSDの論理容量を示し、
上記SSDの上記論理容量が、上記SSDに記憶されているデータの非圧縮データ量及び上記SSDの利用可能な物理空間の容量の和である、項目1から14の何れか一項に記載の方法。
[項目16]
記憶装置であって、
コントローラから、書き込み予定データを保持する書き込み要求を受信するように構成される第1受信モジュールと、
上記書き込み予定データを圧縮して圧縮データを取得するように構成される圧縮モジュールと、
上記圧縮データを記憶するように構成される第1記憶モジュールと、
第1フィードバック情報を上記コントローラへ送信するように構成される第1送信モジュールであって、上記第1フィードバック情報が、上記圧縮データが記憶された後の上記記憶装置の残存容量を示す、第1送信モジュールと
を備える、
記憶装置。
[項目17]
上記記憶装置が、
ブランク論理ブロックを上記書き込み予定データへ割り当てるように構成される割り当てモジュールであって、上記ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが上記記憶装置の論理容量のセグメントに対応する、割り当てモジュールと、
割り当てられた上記ブランク論理ブロックを有効論理ブロックへ変換するように構成される第1変換モジュールであって、上記有効論理ブロックは論理アドレスが有効データで占有される論理ブロックである、第1変換モジュールと、
上記記憶装置における残存ブランク論理ブロックの数を問い合わせるように構成される第1問い合わせモジュールと
を更に備え、
上記第1送信モジュールが、上記第1フィードバック情報を上記コントローラへ送信するように具体的に構成され、
上記第1フィードバック情報が、上記残存ブランク論理ブロックの上記数、及び/又は、上記残存容量を含み、
上記残存容量が、上記残存ブランク論理ブロックの上記数に基づいて決定される、項目16に記載の記憶装置。
[項目18]
上記圧縮モジュールは、上記割り当てモジュールが上記ブランク論理ブロックを上記書き込み予定データへ割り当てた後に、上記書き込み予定データを圧縮して上記圧縮データを取得するように具体的に構成され、
上記記憶装置が、
上記記憶装置で追加する必要のあるブランク論理ブロックの数を、上記書き込み予定データのサイズ及び上記圧縮データのサイズに従って、決定するように構成される第1決定モジュール
を更に備える、項目17に記載の記憶装置。
[項目19]
上記記憶装置が、
新しいブランク論理ブロックに対応するエントリを、上記記憶装置で追加する必要のあるブランク論理ブロックの上記数に従って、マッピングテーブルへ追加するように構成される追加モジュール
を更に備える、項目18に記載の記憶装置。
[項目20]
上記記憶装置が、
上記記憶装置における分離論理ブロックを、上記記憶装置で追加する必要のある上記ブランク論理ブロックの上記数に従って、ブランク論理ブロックへ更新するように構成される更新モジュール
を更に備え、
上記分離論理ブロックは、論理アドレスが上記記憶装置で使用不可能な論理ブロックである、項目18または19に記載の記憶装置。
[項目21]
上記記憶装置で追加する必要のあるブランク論理ブロックの数Mは、DをLで除算して切り捨てた結果に等しく、
Dは、上記書き込み予定データの長さと上記圧縮データの長さとの間の差を示し、
Lは、上記記憶装置における論理ブロックの長さを示す、項目18から20の何れか一項に記載の記憶装置。
[項目22]
上記記憶装置が、
上記コントローラからコマンドを受信するように構成される第2受信モジュールであって、上記コマンドが論理アドレス範囲を含み、上記コマンドが上記論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、第2受信モジュールと、
上記論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように構成される第2変換モジュールであって、上記分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、第2変換モジュールと
を更に備える、項目17から21の何れか一項に記載の記憶装置。
[項目23]
上記記憶装置が、
上記論理アドレス範囲におけるデータにより占有される物理空間のサイズを決定するように構成される第2決定モジュールと、
オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択するように構成される選択モジュールであって、上記部分的なオーバープロビジョニング空間のサイズが上記論理アドレス範囲における上記データにより占有される上記物理空間の上記サイズと等しい、選択モジュールと、
上記部分的なオーバープロビジョニング空間を、上記記憶装置の利用可能な物理空間として用いるように構成される第3決定モジュールと
を更に備える、項目22に記載の記憶装置。
[項目24]
上記記憶装置が、
上記第1フィードバック情報が上記コントローラへ送信される前に、上記記憶装置の利用可能な物理空間を問い合わせるように構成される第2問い合わせモジュールと、
上記利用可能な物理空間の容量を、上記残存容量と決定するように構成される第4決定モジュールと
を更に備える、項目16に記載の記憶装置。
[項目25]
上記記憶装置が、
上記書き込み要求が上記コントローラから受信された後に、論理アドレスを上記書き込み予定データへ割り当てるように構成される第5決定モジュールと、
マッピングテーブルに在り、上記論理アドレスに対応するエントリにマッピング情報を記録するように構成される第1記録モジュールであって、上記マッピング情報が、上記圧縮データを記憶する物理ページ、上記物理ページ上の上記圧縮データの開始位置、及び上記圧縮データの長さ、に関する情報を含む、第1記録モジュールと
を更に備える、項目16から24の何れか一項に記載の記憶装置。
[項目26]
上記記憶装置が、
上記書き込み要求が上記コントローラから受信される後に、論理アドレスを上記書き込み予定データへ割り当てるように構成される第6決定モジュールと、
マッピングテーブルに在り、上記論理アドレスに対応するエントリにマッピング情報を記録するように構成される第2記録モジュールであって、上記マッピング情報が、上記圧縮データを記憶する物理ページに関する情報を含む、第2記録モジュールと、
上記物理ページ上に上記圧縮データのメタデータを記憶するように構成される第2記憶モジュールであって、上記メタデータが、上記物理ページ上の上記圧縮データの開始位置、及び上記圧縮データの長さを含む、第2記憶モジュールと
を更に備える、項目16から24の何れか一項に記載の記憶装置。
[項目27]
上記書き込み要求が、上記書き込み予定データのデータ長を含み、
上記書き込み予定データの上記論理アドレスが、上記データ長に基づいて割り当てられる、項目25または26に記載の記憶装置。
[項目28]
上記記憶装置が、
上記書き込み要求が上記コントローラから受信された後に、上記記憶装置における上記書き込み予定データの論理アドレスを上記コントローラへ送信するように構成される第3送信モジュール
を更に備える、項目16から27の何れか一項に記載の記憶装置。
[項目29]
上記記憶装置が、
上記コントローラから読み出し要求を受信するように構成される第3受信モジュールであって、上記読み出し要求が、読み出すべきデータの論理アドレスを含む、第3受信モジュールと、
上記読み出すべきデータの上記論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出すように構成される読み出しモジュールと、
上記ターゲットデータを圧縮解除して上記読み出すべきデータを取得するように構成される圧縮解除モジュールと、
上記読み出すべきデータを上記コントローラへ送信するように構成される第4送信モジュールと
を更に備える、項目28に記載の記憶装置。
[項目30]
コントローラと、
項目16から29の何れか一項に記載の記憶装置と
を備え、
上記コントローラが、
上記書き込み予定データを含む書き込み要求を生成することと、
上記記憶装置から、上記書き込み要求に対する応答メッセージを受信することであって、上記応答メッセージが、上記記憶装置における上記書き込み予定データの論理アドレスを含む、受信することと、
ディスクアレイにおける上記書き込み予定データの論理アドレスと上記記憶装置における上記書き込み予定データの上記論理アドレスとの間のマッピング関係を記録することと
を実行するように構成される、
記憶システム。
[項目31]
上記コントローラが、
ホストから新たな書き込み予定データを受信し、
上記第1フィードバック情報に従って、上記記憶装置の残存容量を決定し、
上記記憶装置の上記残存容量が上記新たな書き込み予定データのサイズよりも大きい場合に、上記新たな書き込み予定データを上記記憶装置へ書き込む
ように更に構成される、項目30に記載の記憶システム。
[項目32]
上記記憶装置が、
第2フィードバック情報を上記コントローラへ送信するように構成される第2送信モジュール
を更に備え、
上記第2フィードバック情報が、上記記憶装置の論理容量を示し、
上記記憶装置の上記論理容量が、上記記憶装置に記憶されているデータの非圧縮データ量及び上記記憶装置の利用可能な物理空間の容量の和である、項目16から29の何れか一項に記載の記憶装置。
[項目33]
コントローラと通信するように構成される通信インタフェースと、
記憶空間を提供するように構成される記憶媒体と、
上記通信インタフェース及び上記記憶媒体に接続されるプロセッサと
を備え、
上記プロセッサは、
上記通信インタフェースを介して上記コントローラから、書き込み予定データを保持する書き込み要求を受信することと、
上記書き込み予定データを圧縮して圧縮データを取得することと、
上記記憶媒体に上記圧縮データを記憶することと、
上記通信インタフェースを介して第1フィードバック情報を上記コントローラへ送信することであって、上記第1フィードバック情報が、上記圧縮データが記憶された後の上記記憶媒体の残存容量を示す、送信することと
を実行するように構成される、
ソリッドステートディスク。

Claims (31)

  1. ソリッドステートディスクSSDに適用されるデータ処理方法であって、
    コントローラから、書き込み予定データを保持する書き込み要求を前記SSDにより受信する段階と、
    前記書き込み予定データを前記SSDにより圧縮して圧縮データを取得する段階と、
    前記圧縮データを前記SSDにより記憶する段階と、
    第1フィードバック情報を前記コントローラへ前記SSDにより送信する段階であって、前記第1フィードバック情報が、前記圧縮データが記憶された後の前記SSDの残存容量を示す、送信する段階と
    を備え
    ブランク論理ブロックを前記書き込み予定データへ前記SSDにより割り当てる段階であって、前記ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが前記SSDの論理容量のセグメントに対応する、割り当てる段階と、
    割り当てられた前記ブランク論理ブロックを有効論理ブロックへ前記SSDにより変換する段階であって、前記有効論理ブロックは論理アドレスが有効データで占有される論理ブロックである、変換する段階と、
    前記SSDにおける残存ブランク論理ブロックの数を前記SSDにより問い合わせる段階と
    を更に備え、
    前記第1フィードバック情報を前記コントローラへ前記SSDにより送信する段階が、前記第1フィードバック情報を前記コントローラへ前記SSDにより送信する段階であって、前記第1フィードバック情報が、前記残存ブランク論理ブロックの前記数、及び/又は、前記残存容量を含み、前記残存容量が、前記残存ブランク論理ブロックの前記数に基づいて決定される、送信する段階を有する、方法。
  2. 前記書き込み予定データを前記SSDにより圧縮して圧縮データを取得する段階が、ブランク論理ブロックを前記書き込み予定データへ前記SSDにより割り当てる段階の後に、前記書き込み予定データを前記SSDにより圧縮して前記圧縮データを取得する段階を有し、
    前記方法が、
    前記SSDの論理アドレス範囲が増加した場合に前記SSDで追加する必要のあるブランク論理ブロックの数を、前記書き込み予定データのサイズ及び前記圧縮データのサイズに従って、前記SSDにより決定する段階
    を更に備える、請求項に記載の方法。
  3. 前記方法が、
    新しいエントリを、前記SSDで追加する必要のある前記ブランク論理ブロックの前記数に従って、前記SSDのマッピングテーブルへ前記SSDにより追加する段階
    を更に備える、請求項に記載の方法。
  4. 前記方法が、
    前記SSDで追加する必要のある前記ブランク論理ブロックの前記数に従って、前記SSDにおける分離論理ブロックをブランク論理ブロックへ前記SSDにより更新する段階
    を更に備え、
    前記分離論理ブロックは、論理アドレスが前記SSDで使用不可能な論理ブロックである、請求項2または3に記載の方法。
  5. 前記SSDで追加する必要のあるブランク論理ブロックの数Mは、DをLで除算して切り捨てた結果に等しく、
    Dは、前記書き込み予定データの長さと前記圧縮データの長さとの間の差を示し、
    Lは、前記SSDにおける論理ブロックの長さを示す、請求項2から4の何れか一項に記載の方法。
  6. 前記方法が、
    前記コントローラからコマンドを前記SSDにより受信する段階であって、前記コマンドが論理アドレス範囲を備え、前記コマンドが前記論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、受信する段階と、
    前記論理アドレス範囲における有効論理ブロックを分離論理ブロックへ前記SSDにより変換する段階であって、前記分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、変換する段階と
    を更に備える、請求項1から5の何れか一項に記載の方法。
  7. 前記方法が、
    前記論理アドレス範囲におけるデータにより占有される物理空間のサイズを前記SSDにより決定する段階と、
    オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を前記SSDにより選択する段階であって、前記部分的なオーバープロビジョニング空間のサイズが前記論理アドレス範囲における前記データにより占有される前記物理空間の前記サイズと等しい、選択する段階と、
    前記部分的なオーバープロビジョニング空間を前記SSDの利用可能な物理空間として前記SSDにより用いる段階と
    を更に備える、請求項に記載の方法。
  8. 第1フィードバック情報を前記コントローラへ前記SSDにより送信する前記段階の前に、前記方法が、
    前記SSDの利用可能な物理空間を前記SSDにより問い合わせる段階と、
    前記利用可能な物理空間の容量を前記残存容量として前記SSDにより決定する段階と
    を更に備える、請求項1に記載の方法。
  9. コントローラから書き込み要求を前記SSDにより受信する前記段階の後に、前記方法が、
    論理アドレスを前記書き込み予定データへ前記SSDにより割り当てる段階と、
    前記SSDのマッピングテーブルに在り、前記論理アドレスに対応するエントリに、マッピング情報を前記SSDにより記録する段階と
    を更に備え、
    前記マッピング情報が、前記圧縮データを記憶する物理ページ、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの長さ、に関する情報を含む、請求項1からの何れか一項に記載の方法。
  10. コントローラから書き込み要求を前記SSDにより受信する前記段階の後に、前記方法が、
    論理アドレスを前記書き込み予定データへ前記SSDにより割り当てる段階と、
    前記SSDのマッピングテーブルに在り、前記論理アドレスに対応するエントリに、マッピング情報を前記SSDにより記録する段階であって、前記マッピング情報が、前記圧縮データを記憶する物理ページに関する情報を含む、記録する段階と、
    前記物理ページ上に前記圧縮データのメタデータを前記SSDにより記憶する段階であって、前記メタデータが、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの長さを含む、記憶する段階と
    を更に備える、請求項1からの何れか一項に記載の方法。
  11. 前記書き込み要求が、前記書き込み予定データのデータ長を含み、
    前記書き込み予定データの論理アドレスが、前記データ長に基づいて割り当てられる、請求項9または10に記載の方法。
  12. ソリッドステートディスクSSDに適用されるデータ処理方法であって、
    コントローラから、書き込み予定データを保持する書き込み要求を前記SSDにより受信する段階と、
    前記書き込み予定データを前記SSDにより圧縮して圧縮データを取得する段階と、
    前記圧縮データを前記SSDにより記憶する段階と、
    第1フィードバック情報を前記コントローラへ前記SSDにより送信する段階であって、前記第1フィードバック情報が、前記圧縮データが記憶された後の前記SSDの残存容量を示す、送信する段階と、
    を備え、
    前記圧縮データを前記SSDにより記憶する段階の後に
    前記SSDにおける前記書き込み予定データの論理アドレスを前記コントローラへ前記SSDにより送信する段階
    を更に備える、方法。
  13. 前記方法が、
    前記コントローラから読み出し要求を前記SSDにより受信する段階であって、前記読み出し要求が、読み出すべきデータの論理アドレスを含む、受信する段階と、
    前記読み出すべきデータの前記論理アドレスに対応する物理アドレスにおけるターゲットデータを前記SSDにより読み出す段階と、
    前記ターゲットデータを前記SSDにより圧縮解除して前記読み出すべきデータを取得する段階と、
    前記読み出すべきデータを前記コントローラへ前記SSDにより送信する段階と
    を更に備える、請求項12に記載の方法。
  14. ソリッドステートディスクSSDに適用されるデータ処理方法であって、
    コントローラから、書き込み予定データを保持する書き込み要求を前記SSDにより受信する段階と、
    前記書き込み予定データを前記SSDにより圧縮して圧縮データを取得する段階と、
    前記圧縮データを前記SSDにより記憶する段階と、
    第1フィードバック情報を前記コントローラへ前記SSDにより送信する段階であって、前記第1フィードバック情報が、前記圧縮データが記憶された後の前記SSDの残存容量を示す、送信する段階と、
    を備え、
    第2フィードバック情報を前記コントローラへ前記SSDにより送信する段階
    を更に備え、
    前記第2フィードバック情報が、前記SSDの論理容量を示し、
    前記SSDの前記論理容量が、前記SSDに記憶されているデータの非圧縮データ量及び前記SSDの利用可能な物理空間の容量の和である、方法。
  15. 記憶装置であって、
    コントローラから、書き込み予定データを保持する書き込み要求を受信するように構成される第1受信モジュールと、
    前記書き込み予定データを圧縮して圧縮データを取得するように構成される圧縮モジュールと、
    前記圧縮データを記憶するように構成される第1記憶モジュールと、
    第1フィードバック情報を前記コントローラへ送信するように構成される第1送信モジュールであって、前記第1フィードバック情報が、前記圧縮データが記憶された後の前記記憶装置の残存容量を示す、第1送信モジュールと
    を備え
    ブランク論理ブロックを前記書き込み予定データへ割り当てるように構成される割り当てモジュールであって、前記ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが前記記憶装置の論理容量のセグメントに対応する、割り当てモジュールと、
    割り当てられた前記ブランク論理ブロックを有効論理ブロックへ変換するように構成される第1変換モジュールであって、前記有効論理ブロックは論理アドレスが有効データで占有される論理ブロックである、第1変換モジュールと、
    前記記憶装置における残存ブランク論理ブロックの数を問い合わせるように構成される第1問い合わせモジュールと
    を更に備え、
    前記第1送信モジュールが、前記第1フィードバック情報を前記コントローラへ送信するように具体的に構成され、
    前記第1フィードバック情報が、前記残存ブランク論理ブロックの前記数、及び/又は、前記残存容量を含み、
    前記残存容量が、前記残存ブランク論理ブロックの前記数に基づいて決定される、記憶装置。
  16. 前記圧縮モジュールは、前記割り当てモジュールが前記ブランク論理ブロックを前記書き込み予定データへ割り当てた後に、前記書き込み予定データを圧縮して前記圧縮データを取得するように具体的に構成され、
    前記記憶装置が、
    前記記憶装置の論理アドレス範囲が増加した場合に前記記憶装置で追加する必要のあるブランク論理ブロックの数を、前記書き込み予定データのサイズ及び前記圧縮データのサイズに従って、決定するように構成される第1決定モジュール
    を更に備える、請求項15に記載の記憶装置。
  17. 前記記憶装置が、
    新しいエントリを、前記記憶装置で追加する必要のあるブランク論理ブロックの前記数に従って、マッピングテーブルへ追加するように構成される追加モジュール
    を更に備える、請求項16に記載の記憶装置。
  18. 前記記憶装置が、
    前記記憶装置における分離論理ブロックを、前記記憶装置で追加する必要のある前記ブランク論理ブロックの前記数に従って、ブランク論理ブロックへ更新するように構成される更新モジュール
    を更に備え、
    前記分離論理ブロックは、論理アドレスが前記記憶装置で使用不可能な論理ブロックである、請求項16または17に記載の記憶装置。
  19. 前記記憶装置で追加する必要のあるブランク論理ブロックの数Mは、DをLで除算して切り捨てた結果に等しく、
    Dは、前記書き込み予定データの長さと前記圧縮データの長さとの間の差を示し、
    Lは、前記記憶装置における論理ブロックの長さを示す、請求項16から18の何れか一項に記載の記憶装置。
  20. 前記記憶装置が、
    前記コントローラからコマンドを受信するように構成される第2受信モジュールであって、前記コマンドが論理アドレス範囲を含み、前記コマンドが前記論理アドレス範囲における有効データを無効データとしてマークするよう命令するために用いられる、第2受信モジュールと、
    前記論理アドレス範囲における有効論理ブロックを分離論理ブロックへ変換するように構成される第2変換モジュールであって、前記分離論理ブロックは、論理アドレスが使用不可能な論理ブロックである、第2変換モジュールと
    を更に備える、請求項15から19の何れか一項に記載の記憶装置。
  21. 前記記憶装置が、
    前記論理アドレス範囲におけるデータにより占有される物理空間のサイズを決定するように構成される第2決定モジュールと、
    オーバープロビジョニング空間から部分的なオーバープロビジョニング空間を選択するように構成される選択モジュールであって、前記部分的なオーバープロビジョニング空間のサイズが前記論理アドレス範囲における前記データにより占有される前記物理空間の前記サイズと等しい、選択モジュールと、
    前記部分的なオーバープロビジョニング空間を、前記記憶装置の利用可能な物理空間として用いるように構成される第3決定モジュールと
    を更に備える、請求項20に記載の記憶装置。
  22. 前記記憶装置が、
    前記第1フィードバック情報が前記コントローラへ送信される前に、前記記憶装置の利用可能な物理空間を問い合わせるように構成される第2問い合わせモジュールと、
    前記利用可能な物理空間の容量を、前記残存容量として決定するように構成される第4決定モジュールと
    を更に備える、請求項15に記載の記憶装置。
  23. 前記記憶装置が、
    前記書き込み要求が前記コントローラから受信された後に、論理アドレスを前記書き込み予定データへ割り当てるように構成される第5決定モジュールと、
    マッピングテーブルに在り、前記論理アドレスに対応するエントリにマッピング情報を記録するように構成される第1記録モジュールであって、前記マッピング情報が、前記圧縮データを記憶する物理ページ、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの長さ、に関する情報を含む、第1記録モジュールと
    を更に備える、請求項15から22の何れか一項に記載の記憶装置。
  24. 前記記憶装置が、
    前記書き込み要求が前記コントローラから受信される後に、論理アドレスを前記書き込み予定データへ割り当てるように構成される第6決定モジュールと、
    マッピングテーブルに在り、前記論理アドレスに対応するエントリにマッピング情報を記録するように構成される第2記録モジュールであって、前記マッピング情報が、前記圧縮データを記憶する物理ページに関する情報を含む、第2記録モジュールと、
    前記物理ページ上に前記圧縮データのメタデータを記憶するように構成される第2記憶モジュールであって、前記メタデータが、前記物理ページ上の前記圧縮データの開始位置、及び前記圧縮データの長さを含む、第2記憶モジュールと
    を更に備える、請求項15から22の何れか一項に記載の記憶装置。
  25. 前記書き込み要求が、前記書き込み予定データのデータ長を含み、
    前記書き込み予定データの前記論理アドレスが、前記データ長に基づいて割り当てられる、請求項23または24に記載の記憶装置。
  26. 記憶装置であって、
    コントローラから、書き込み予定データを保持する書き込み要求を受信するように構成される第1受信モジュールと、
    前記書き込み予定データを圧縮して圧縮データを取得するように構成される圧縮モジュールと、
    前記圧縮データを記憶するように構成される第1記憶モジュールと、
    第1フィードバック情報を前記コントローラへ送信するように構成される第1送信モジュールであって、前記第1フィードバック情報が、前記圧縮データが記憶された後の前記記憶装置の残存容量を示す、第1送信モジュールと
    を備え、
    前記記憶装置が、
    前記書き込み要求が前記コントローラから受信された後に、前記記憶装置における前記書き込み予定データの論理アドレスを前記コントローラへ送信するように構成される第3送信モジュール
    を更に備える、記憶装置。
  27. 前記記憶装置が、
    前記コントローラから読み出し要求を受信するように構成される第3受信モジュールであって、前記読み出し要求が、読み出すべきデータの論理アドレスを含む、第3受信モジュールと、
    前記読み出すべきデータの前記論理アドレスに対応する物理アドレスにおけるターゲットデータを読み出すように構成される読み出しモジュールと、
    前記ターゲットデータを圧縮解除して前記読み出すべきデータを取得するように構成される圧縮解除モジュールと、
    前記読み出すべきデータを前記コントローラへ送信するように構成される第4送信モジュールと
    を更に備える、請求項26に記載の記憶装置。
  28. コントローラと、
    請求項15から27の何れか一項に記載の記憶装置と
    を備え、
    前記コントローラが、
    前記書き込み予定データを含む書き込み要求を生成することと、
    前記記憶装置から、前記書き込み要求に対する応答メッセージを受信することであって、前記応答メッセージが、前記記憶装置における前記書き込み予定データの論理アドレスを含む、受信することと、
    ディスクアレイにおける前記書き込み予定データの論理アドレスと前記記憶装置における前記書き込み予定データの前記論理アドレスとの間のマッピング関係を記録することと
    を実行するように構成される、
    記憶システム。
  29. 前記コントローラが、
    ホストから新たな書き込み予定データを受信し、
    前記第1フィードバック情報に従って、前記記憶装置の残存容量を決定し、
    前記記憶装置の前記残存容量が前記新たな書き込み予定データのサイズよりも大きい場合に、前記新たな書き込み予定データを前記記憶装置へ書き込む
    ように更に構成される、請求項28に記載の記憶システム。
  30. 記憶装置であって、
    コントローラから、書き込み予定データを保持する書き込み要求を受信するように構成される第1受信モジュールと、
    前記書き込み予定データを圧縮して圧縮データを取得するように構成される圧縮モジュールと、
    前記圧縮データを記憶するように構成される第1記憶モジュールと、
    第1フィードバック情報を前記コントローラへ送信するように構成される第1送信モジュールであって、前記第1フィードバック情報が、前記圧縮データが記憶された後の前記記憶装置の残存容量を示す、第1送信モジュールと
    を備え、
    前記記憶装置が、
    第2フィードバック情報を前記コントローラへ送信するように構成される第2送信モジュール
    を更に備え、
    前記第2フィードバック情報が、前記記憶装置の論理容量を示し、
    前記記憶装置の前記論理容量が、前記記憶装置に記憶されているデータの非圧縮データ量及び前記記憶装置の利用可能な物理空間の容量の和である、記憶装置。
  31. コントローラと通信するように構成される通信インタフェースと、
    記憶空間を提供するように構成される記憶媒体と、
    前記通信インタフェース及び前記記憶媒体に接続されるプロセッサと
    を備え、
    前記プロセッサは、
    前記通信インタフェースを介して前記コントローラから、書き込み予定データを保持する書き込み要求を受信することと、
    前記書き込み予定データを圧縮して圧縮データを取得することと、
    前記記憶媒体に前記圧縮データを記憶することと、
    前記通信インタフェースを介して第1フィードバック情報を前記コントローラへ送信することであって、前記第1フィードバック情報が、前記圧縮データが記憶された後の前記記憶媒体の残存容量を示す、送信することと
    ブランク論理ブロックを前記書き込み予定データへ前記プロセッサにより割り当てることであって、前記ブランク論理ブロックが利用可能な論理アドレスを有する論理ブロックであり、各論理ブロックが前記記憶媒体の論理容量のセグメントに対応する、割り当てることと、
    割り当てられた前記ブランク論理ブロックを有効論理ブロックへ前記プロセッサにより変換することであって、前記有効論理ブロックは論理アドレスが有効データで占有される論理ブロックである、変換することと、
    前記記憶媒体における残存ブランク論理ブロックの数を前記プロセッサにより問い合わせることと、
    を実行するように構成され
    前記第1フィードバック情報を前記コントローラへ前記プロセッサにより送信することが、前記第1フィードバック情報を前記コントローラへ前記プロセッサにより送信することであって、前記第1フィードバック情報が、前記残存ブランク論理ブロックの前記数、及び/又は、前記残存容量を含み、前記残存容量が、前記残存ブランク論理ブロックの前記数に基づいて決定される、送信することを有する、
    ソリッドステートディスク。
JP2018566339A 2016-06-24 2016-06-24 データ処理方法、記憶装置、ソリッドステートディスク及び記憶システム Active JP6725120B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/087096 WO2017219364A1 (zh) 2016-06-24 2016-06-24 处理数据的方法、存储装置、固态硬盘和存储系统

Publications (2)

Publication Number Publication Date
JP2019519047A JP2019519047A (ja) 2019-07-04
JP6725120B2 true JP6725120B2 (ja) 2020-07-15

Family

ID=60783738

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018566339A Active JP6725120B2 (ja) 2016-06-24 2016-06-24 データ処理方法、記憶装置、ソリッドステートディスク及び記憶システム

Country Status (7)

Country Link
US (1) US10628060B2 (ja)
EP (1) EP3296996B1 (ja)
JP (1) JP6725120B2 (ja)
CN (1) CN109690681B (ja)
CA (1) CA3028821C (ja)
ES (1) ES2755720T3 (ja)
WO (1) WO2017219364A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US11068299B1 (en) * 2017-08-04 2021-07-20 EMC IP Holding Company LLC Managing file system metadata using persistent cache
CN107766180B (zh) * 2017-09-22 2020-08-14 成都华为技术有限公司 存储介质的管理方法、装置及可读存储介质
KR102659832B1 (ko) 2019-03-05 2024-04-22 삼성전자주식회사 데이터 저장 장치 및 시스템
JP6898393B2 (ja) * 2019-03-22 2021-07-07 株式会社日立製作所 ストレージシステム及びデータ転送方法
CN111752466B (zh) * 2019-03-27 2024-02-13 深圳市茁壮网络股份有限公司 一种数据存储方法及装置
WO2020222727A1 (en) * 2019-04-29 2020-11-05 Hitachi Vantara Llc Optimizing storage and retrieval of compressed data
US11748023B2 (en) * 2019-11-29 2023-09-05 Silicon Motion, Inc. Data storage device and non-volatile memory control method
CN111241090B (zh) * 2019-12-23 2023-11-10 华为技术有限公司 存储系统中管理数据索引的方法和装置
CN113467699B (zh) * 2020-03-30 2023-08-22 华为技术有限公司 一种提升可用存储容量方法及装置
CN111914788A (zh) * 2020-08-13 2020-11-10 河北金如软件开发有限公司 一种数据交换/储存方法
CN112612722B (zh) * 2020-12-28 2024-08-06 深圳忆联信息系统有限公司 变长的数据管理方法、装置、计算机设备及存储介质
US12014052B2 (en) * 2021-03-22 2024-06-18 Google Llc Cooperative storage architecture
CN113326001B (zh) * 2021-05-20 2023-08-01 锐掣(杭州)科技有限公司 数据处理方法、装置、设备、系统、介质及程序
CN113176859B (zh) * 2021-05-24 2022-11-08 锐掣(杭州)科技有限公司 数据存储方法与装置
CN113726341B (zh) * 2021-08-25 2023-09-01 杭州海康威视数字技术股份有限公司 一种数据处理方法、装置、电子设备及存储介质
CN113722241A (zh) * 2021-08-30 2021-11-30 锐掣(杭州)科技有限公司 数据处理方法、装置、设备、可读存储介质及程序产品
US11960448B2 (en) 2021-10-28 2024-04-16 Netapp, Inc. Unified object format for retaining compression and performing additional compression for reduced storage consumption in an object store
CN117435124A (zh) * 2022-07-15 2024-01-23 华为技术有限公司 数据存储方法、电子设备以及存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960465A (en) * 1997-02-27 1999-09-28 Novell, Inc. Apparatus and method for directly accessing compressed data utilizing a compressed memory address translation unit and compression descriptor table
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
GB2398151B (en) * 2002-05-13 2005-06-01 Trek 2000 Int Ltd System and apparatus for compressing and decompressing data stored to a portable data storage device
US20040128414A1 (en) * 2002-12-30 2004-07-01 Rudelic John C. Using system memory as a write buffer for a non-volatile memory
US7188227B2 (en) * 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression
JP4098752B2 (ja) * 2004-06-14 2008-06-11 株式会社東芝 光ディスク、光ディスク記録方法、および光ディスク記録装置
KR101220538B1 (ko) * 2006-11-02 2013-01-17 주식회사 나노엔텍 표면 토폴로지를 이용한 미세 입자 분리를 위한 채널 필터 및 이의 제조방법
US8261030B2 (en) * 2008-11-18 2012-09-04 Microsoft Corporation Using delete notifications to free related storage resources
TWI428917B (zh) * 2009-11-25 2014-03-01 Silicon Motion Inc 快閃記憶裝置、資料儲存系統、以及資料儲存系統之運作方法
US8533550B2 (en) * 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
WO2012050934A2 (en) * 2010-09-28 2012-04-19 Fusion-Io, Inc. Apparatus, system, and method for a direct interface between a memory controller and non-volatile memory using a command protocol
JP2012221251A (ja) * 2011-04-08 2012-11-12 Toshiba Corp メモリシステムの制御方法、情報処理装置、及びプログラム
US9069703B2 (en) 2011-04-29 2015-06-30 Seagate Technology Llc Encrypted-transport solid-state disk controller
CN103384877B (zh) * 2011-06-07 2016-03-23 株式会社日立制作所 包括闪存的存储系统和存储控制方法
US20140059278A1 (en) * 2011-11-14 2014-02-27 Lsi Corporation Storage device firmware and manufacturing software
JP5687639B2 (ja) * 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
JP5826114B2 (ja) * 2012-05-25 2015-12-02 クラリオン株式会社 データ解凍装置、データ圧縮装置、データの解凍プログラム、データの圧縮プログラム、及び、圧縮データ配信システム
US9141532B2 (en) 2012-12-26 2015-09-22 Western Digital Technologies, Inc. Dynamic overprovisioning for data storage systems
US10146435B2 (en) 2013-07-31 2018-12-04 Hitachi, Ltd. Storage system and data write method
US10235396B2 (en) * 2016-08-29 2019-03-19 International Business Machines Corporation Workload optimized data deduplication using ghost fingerprints
US20180060235A1 (en) * 2016-08-30 2018-03-01 Intel Corporation Non-volatile memory compression devices and associated methods and systems

Also Published As

Publication number Publication date
ES2755720T3 (es) 2020-04-23
CN109690681B (zh) 2021-08-31
CA3028821C (en) 2023-01-24
CN109690681A (zh) 2019-04-26
JP2019519047A (ja) 2019-07-04
US10628060B2 (en) 2020-04-21
CA3028821A1 (en) 2017-12-28
EP3296996A4 (en) 2018-05-30
WO2017219364A1 (zh) 2017-12-28
EP3296996B1 (en) 2019-08-28
EP3296996A1 (en) 2018-03-21
US20180246664A1 (en) 2018-08-30

Similar Documents

Publication Publication Date Title
JP6725120B2 (ja) データ処理方法、記憶装置、ソリッドステートディスク及び記憶システム
JP6553566B2 (ja) メモリシステムおよび制御方法
JP6785205B2 (ja) メモリシステムおよび制御方法
JP7074454B2 (ja) 計算機システムおよび制御方法
US11461015B2 (en) Available storage space in a system with varying data redundancy schemes
US10445246B2 (en) Memory system and method for controlling nonvolatile memory
JP6667629B2 (ja) 記憶システムおよびソリッドステートディスク
US9946462B1 (en) Address mapping table compression
JP6344675B2 (ja) ファイル管理方法、分散記憶システムおよび管理ノード
JP2019057172A (ja) メモリシステムおよび制御方法
US9727246B2 (en) Memory device, computer system, and method of controlling memory device
JP5944502B2 (ja) 計算機システム及び制御方法
JP2019168822A (ja) ストレージデバイスおよびコンピュータシステム
WO2016056104A1 (ja) ストレージ装置、及び、記憶制御方法
US10929299B2 (en) Storage system, method and non-transitory computer-readable storage medium
JP7013546B2 (ja) メモリシステム
JP2020086477A (ja) 大規模ストレージシステム及び大規模ストレージシステムにおけるデータ配置方法
WO2022021280A1 (zh) 存储控制器、存储控制方法、固态硬盘及存储系统
CN114625318A (zh) 应用于固态硬盘的数据写入方法、装置、设备
CN115145468A (zh) 获取地址空间属性的方法、数据备份方法及存储设备
CN113485948B (zh) Nvm坏块管理方法与控制部件
CN113485641B (zh) 处理io命令的方法及其控制部件

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190130

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200409

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200526

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200618

R150 Certificate of patent or registration of utility model

Ref document number: 6725120

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250