JP6430039B2 - 記憶装置および記憶装置の制御方法 - Google Patents

記憶装置および記憶装置の制御方法 Download PDF

Info

Publication number
JP6430039B2
JP6430039B2 JP2017562395A JP2017562395A JP6430039B2 JP 6430039 B2 JP6430039 B2 JP 6430039B2 JP 2017562395 A JP2017562395 A JP 2017562395A JP 2017562395 A JP2017562395 A JP 2017562395A JP 6430039 B2 JP6430039 B2 JP 6430039B2
Authority
JP
Japan
Prior art keywords
block
free
user
processor
metablock
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
JP2017562395A
Other languages
English (en)
Other versions
JPWO2017126096A1 (ja
Inventor
昌弘 鶴谷
昌弘 鶴谷
諒 花房
諒 花房
川口 修
修 川口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2017126096A1 publication Critical patent/JPWO2017126096A1/ja
Application granted granted Critical
Publication of JP6430039B2 publication Critical patent/JP6430039B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/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/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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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
    • 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/7207Details relating to flash memory management management of metadata or control 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/7209Validity control, e.g. using flags, time stamps or sequence numbers

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 (AREA)

Description

本発明は、記憶装置に関する。
ストレージ装置や計算機では、物理記憶媒体として一般的にHDD(Hard Disk Drive)が用いられているが、近年、HDDに変わる新しい物理記憶媒体として、Flash Memory(FM)を搭載する物理記憶媒体(例えば、SSD(Solid State Drive))が普及してきている。SSDは、主に一つ以上のFMチップとFMチップを制御するコントローラを含み、HDDに比べI/O処理が非常に高速という利点がある。しかし、この高速性を実現するには、FMの特性にあわせた制御技術が必要である。
FM(典型的には、NAND型)は、ブロックと呼ばれる単位でデータを消去(ブロック消去)し、ページと呼ばれる単位でデータをリード・ライトする。なお、ブロックは、所定数のページの集合である。また、ブロック消去に要する時間は、リード・ライトに比べ、一桁長い。以降、特に断りがない場合、単にブロック/ページと記述した際は、FMのものを指す。
FMの特性上、データを格納しているページへデータを上書きすることはできない。このため、当該ページのデータを書き換えるには、ブロック消去を実施した後、データを書き込む必要がある。よって、ブロック消去を実施する場合、当該ブロックの有効なデータを他のブロックに複写した後、実施する必要があり、ブロック消去後の未使用領域へのライトに比べてデータ書き換え時間を要するため、この時間を短縮、または上位装置に応答時間の長大化を見せないようにする必要がある。
上記で述べたデータ書き換え時間の短縮を実現するため、FMにおけるデータ書き換えは、未使用領域へデータを追記する方式を用いる。このため、SSDは、上位装置へ提供する論理アドレス空間と、各FMのページに対応した物理アドレス空間とを有する。論理アドレス空間と物理アドレス空間は、各アドレスの対応情報(論物管理情報)を用いてマッピングされる。また、論物管理情報を参照し、論理アドレスから対応する物理アドレスを取得する処理を、論理アドレス−物理アドレス変換(論物変換)と呼ぶ。なお、本処理は、SSDに搭載されたコントローラにより実現される。
ここで、SSDにおけるFMへのリード、およびライトの動作を簡単に述べる。リードでは、SSDは、要求データの格納された物理アドレスを特定するため、論理アドレス−物理アドレス管理情報(論物管理情報)を参照し、論物変換を実施する。その後、SSDは、論物変換により取得した物理アドレスを基に、FMから要求データを取得する。また、ライトでは、SSDは、ライトデータをFMのブロック消去後の未使用領域へ書き込む。その後、SSDは、論物管理情報において、要求された論理アドレスに対応付けられた物理アドレスを、新規に書き込んだデータの物理アドレスへ更新(論物更新)する。このとき、ライト可能なブロック消去済みのブロック(以降、空きブロックと呼ぶ)が無い場合、SSDはライトを実行できないため、空きブロックを確保する処理を実施する必要がある。
空きブロックの確保には、書き込み済みのブロックから有効なデータのみを他のブロックへ移動(リライト)し、全データが無効な消去可能ブロック(完全無効ブロック)を作成する、リクラメーション(または、ガベージコレクション)(以降、RCMと略す)と呼ばれる処理を実施する。なお、本処理の実行自体にも空きブロックが必要となるため、空きブロックが1つもない状態に陥ると、SSDはI/Oを継続することができなくなる。このFM資源のDead Lockを起こすことを、空きブロック枯渇と呼ぶ。
よって、SSDは、RCMに必要な空きブロック数を考慮し、必要な空きブロック数を維持できるようにRCMにより移動するデータ量(以降、RCM量)を調整することで、継続したI/Oを可能としている。また、SSDにおけるFMへのリード、ライト、およびRCM動作では、論物管理情報へのアクセスを伴う。このため、SSDでは、FMへ格納されている全ての論物管理情報を高速なDRAM(Dynamic Random Access Memory)等の主記憶へキャッシュすることで、論物管理情報へのアクセス処理オーバヘッドを小さくしている。
上で述べたような技術により、SSDはHDDよりも性能面で優れている。しかし、単位容量当たりの価格(ビットコスト)では、HDDよりも高価である。そのため、特許文献1のように、データ圧縮等のデータ削減機能を用いることで、ビットコストの低減を図る技術が知られている。
特許第8862805号公報
SSDでは、論物管理情報のサイズは論理アドレス空間の大きさによって決まる。このため、データ圧縮等のデータ削減機能を搭載したSSDでは、データ削減機能を持たないSSDに比べて論理アドレス空間が大きくなり、数倍から数十倍の論物管理情報を有することになる。このとき、SSDは、全ての論物管理情報を主記憶へキャッシュできない。また、主記憶に収まらない論物管理情報を、FMへ格納すると、論物管理情報のFMへのリード・ライトが発生する。これにより、空きブロックが枯渇する場合がある。
上記課題を解決するために、本発明の一態様である記憶装置は、主メモリと、不揮発性半導体メモリと、前記主メモリ及び前記不揮発性半導体メモリに接続されるプロセッサと、を備える。前記プロセッサは、上位装置へ提供する論理アドレスと前記不揮発性半導体メモリ内のユーザデータの物理アドレスとの関係を示すメタデータの、少なくとも一部を前記不揮発性半導体メモリに格納し、前記メタデータの一部を前記主メモリに格納し、前記プロセッサは、前記不揮発性半導体メモリ内のブロックを、前記ユーザデータを格納するための割当ユーザブロックと、前記メタデータを格納するための割当メタブロックとへ割り当て、前記プロセッサは、前記割当ユーザブロックに格納されているユーザデータを移動させることで、前記割当ユーザブロックのうちの空きブロックである空きユーザブロックを生成する空きユーザブロック生成処理と、前記割当メタブロックに格納されているメタデータを移動させることで、前記割当メタブロックのうちの空きブロックである空きメタブロックを生成する空きメタブロック生成処理とを実行可能であり、前記プロセッサは、前記空きユーザブロック生成処理により消費される空きメタブロックの数である消費空きメタブロック数を算出し、前記プロセッサは、前記消費空きメタブロック数に基づいて前記空きメタブロック生成処理を行う。
論物管理情報のライトによる空きブロックの枯渇を防ぐことができる。
SSD0100の構成例を示す図である。 主記憶0104の構成例を示す図である。 論理アドレス空間0300と物理アドレス空間0301の対応関係を示す図である。 L2PTBL0209の構成例を示す図である。 L2PTBL管理TBL0210の構成例を示す図である。 第1状態におけるブロック制御0600の概要を示す。 第2状態におけるブロック制御0600の概要を示す。 ブロック管理TBL0211の構成例を示す図である。 装置情報TBL0212の構成例を示す図である。 統計情報TBL0213の構成例を示す図である。 ユーザデータライト処理の一例を示すフローチャートである。 アンマップ処理の一例を示すフローチャートである。 L2PTBLアドレス取得処理の一例を示すフローチャートである。 ブロック制御処理の一例を示すフローチャートである。 RCM制御処理の一例を示すフローチャートである。 ブロック割当制御処理の一例を示すフローチャートである。 割当メタブロック増加処理の一例を示すフローチャートである。 割当メタブロック減少処理の一例を示すフローチャートである。
以下、図面を用いて実施例を説明する。なお、本実施例では、データ圧縮機能を有したSSDを前提としているが、データ圧縮機能に限らず、主記憶に収まりきらないメタデータの管理を必要とするSSDに適用できる。また、実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
以下の説明では、「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は、テーブル以外のデータ構造で表現されていても良い。データ構造に依存しないことを示すために「xxxテーブル」を「xxx情報」と呼ぶことができる。
また、以下の説明では、要素(例えばL2PTBL)の識別情報として番号が使用されるが、他種の識別情報(例えば名前、識別子)が使用されて良い。
また、以下、「プログラム」を主語として処理を説明することがある場合、プログラムは、コントローラ(ストレージコントローラ、およびSSDコントローラ)に含まれるプロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又は通信インタフェース装置(例えば通信ポート)を用いながら行うため、処理の主語がコントローラ或いはプロセッサとされても良い。また、コントローラは、処理の一部又は全部を行うハードウェア回路を含んでも良い。コンピュータプログラムは、プログラムソースからインストールされても良い。プログラムソースは、例えば、プログラム配布サーバ、又は、コンピュータ読取可能な記憶メディアであっても良い。
また、以下の説明では、期間或いは時間の単位は、限定されない。例えば、期間或いは時間の単位は、年、月、日、時、分、秒のうちのいずれか1つ或いはいずれか2つ以上の組合せで表現されて良い。
また、以下の説明では、SSDに含まれる不揮発半導体記憶媒体は、フラッシュメモリ(FM)であるとする。そのフラッシュメモリは、ブロック単位で消去が行われ、ページ単位でリード/ライトが行われる種類のフラッシュメモリ、典型的にはNAND型のフラッシュメモリであるとする。しかし、フラッシュメモリは、NAND型に代えて他種のフラッシュメモリ(例えばNOR型)でも良い。また、フラッシュメモリに代えて、他種の不揮発半導体記憶媒体、例えば相変化メモリが採用されても良い。
図1は、SSD0100の構成例を示す図である。
SSD0100は、SSDコントローラ0101と、1つ以上のFM0102とを有する。SSDコントローラ0101は、SSD0100の動作を制御する。SSDコントローラ0101は、上位装置0108との接続を担うストレージI/F0103、主記憶0104、FMを制御するFMコントローラ0105、およびCPU0106を含み、内部ネットワーク0107を介してそれぞれ接続されている。
上位装置0108は、SSD0100を利用する装置の一例であり、例えばアプリケーションサーバやストレージ装置やストレージコントローラである。
CPU0106は、SSDコントローラ0101の全体を制御するプロセッサであり、主記憶0104に格納されたマイクロプログラムに基づき動作する。FMコントローラ0105は、CPU0106によって制御され、FM0102に対するリード・ライト・消去を実施する。内部ネットワーク0107は、スイッチを含んでも良い。また、スイッチ機能を有したASICs(Application Specific Integrated Circuit)で代用しても良い。
本実施例において、SSD0100は、1つ以上のFMとそれらを制御するコントローラを備える記憶媒体であり、外観形状等がフォームファクタに限定されるものではない。
図2は、主記憶0104の構成例を示す図である。
主記憶0104は、プログラム領域0200、TBL領域0201、およびデータバッファ領域0202を有する。プログラム領域0200とTBL領域0201は、SSD0100を制御するためのプログラムや各種テーブルを格納する。データバッファ領域0202は、上位装置0108との間で送受信されるユーザデータ0214を、一時的に格納する。
プログラム領域0200は、I/Oプログラム0203、アンマッププログラム0204、論物変換プログラム0205、データ圧縮・伸張プログラム0206、L2P(Logical to Physical、論物変換)TBL(TBL:テーブル)0207、およびブロック制御プログラム0208を格納する。
I/Oプログラム0203は、上位装置0108からのリードまたはライト要求を処理するプログラムである。アンマッププログラム0204は、上位装置0108からのアンマップ(任意のデータの無効化)要求を処理するプログラムである。論物変換プログラム0205は、論物変換するプログラムである。データ圧縮・伸張プログラム0206は、I/Oプログラム0203の処理過程において、ユーザデータの圧縮と伸張を処理するものである。L2PTBL制御プログラム0207は、メタデータであるL2PTBL0209の格納場所(主記憶0104、またはFM0102)を制御するものである。ブロック制御プログラム0208は、ライト先ブロックの管理、空きブロック数の管理、RCM量の管理、およびユーザデータとメタデータに割り当てるブロック数の管理など、FM資源を制御するものである。
L2PTBL0209は、論理アドレスと物理アドレスのマッピングに関する情報を有する。L2PTBL管理TBL0210は、L2PTBL0209が主記憶0104、またはFM0102のどちらに格納されているかを管理するための情報を有する。ブロック管理TBL0211は、ブロックの状態に関する情報を有する。装置情報TBL0212は、装置の各資源に関する情報を有する。統計情報TBL0213は、装置のある時点での状態の履歴を有する。
論物管理情報について説明する。
SSD0100は、ライトデータを圧縮してFM0102へ格納することで、物理アドレス空間より大きい論理アドレス空間を上位装置0108へ提供する。これにより、論物管理情報のサイズは、主記憶0104に格納しきれないほど大きくなる。
SSD0100は、このような論物管理情報を管理するために、FM0102から論物管理情報を適宜、主記憶0104へ読み出したり書き戻したりする方式(階層論物方式)を用いる。圧縮機能を持たないSSDでは、論物管理情報は、全て主記憶に格納することができるため、リード・ライト処理に伴う論物管理情報へのアクセス時にFMへのリード・ライトは発生しない。一方、階層論物方式では、論物変換及び論物管理情報の更新時に当該の論物管理情報が主記憶にない(論物ミス)の場合、主記憶上の論物管理情報をFMへ退避(ライト)し、その後にFMから必要な論物管理情報を主記憶へ取得(リード)する必要がある。よって、論物ミス多発時は、FMに対し、メタデータである論物管理情報のリード・ライトが多発する。
一般的に、ユーザデータの管理単位(論物変換の単位)である論理ページのサイズは数kByteであるのに対し、論物管理情報のサイズは1論理ページあたり数Byteであり、相対的に小さいといえる。このため、ユーザデータのライトに対し、論物ミスに伴うメタデータのライト量は小さいように思われる。しかし、階層論物方式では、メタデータが主記憶とFMのどちらに存在するかを管理する必要があるうえ、FMはページ単位でのリード・ライトが必要となるため、複数論理ページ単位(例えば、論理ページサイズと同じ数kByte)でメタデータを管理することになる。よって、一度の論物ミスに対し、数kByteのメタデータのライトが発生する。さらに、圧縮機能を有するSSDでは、ユーザデータは圧縮してFMへライトされるため、ユーザデータのデータ圧縮率が良くなるほど(圧縮前のデータサイズに対して圧縮後のデータサイズが小さくなるほど)、SSDに格納できるユーザデータ量が増え、管理する論理ページ数が増加する。これによりメタデータ量が増加し、主記憶上に格納できるメタデータの割合が減る。つまり、データ圧縮率が良いほど、ユーザデータのFMへのライト量が減るうえ、論物ミスの発生する確率が上がるため、FMへの総ライト量において、メタデータのライト量が支配的になる。
また、FMへのメタデータのライトについても、ユーザデータと同様に空きブロックを消費する。しかし、従来のSSDにおけるRCMをはじめとした、I/O継続に必要な空きブロック数を維持する制御(以降、ブロック制御と呼ぶ)では、このメタデータライトを考慮できていないため、データ圧縮機能を有したSSDにおいては、空きブロックが枯渇する場合がある。
例えば、RCMを実施しようとしたとき、効率良く空きブロックを生成するには、有効データを移動する量を少なくする、つまり、RCMは、有効データの割合が低い(無効データの割合が高い)ブロックをRCM対象として選択し、そのブロック内の有効データを移動させる。しかし、このRCM対象に選択したブロックにユーザデータが格納されていた場合、ユーザデータの移動には、論物管理情報の参照と更新が必要である。よって、RCM時にも論物ミスが発生し、これに伴うFMへのメタデータのライトによっても、空きブロックが消費されてしまう。さらに、この空きブロック消費を回復させるためにRCM量を増加させたとしても、従来のブロック制御では、ユーザデータとメタデータを区別できないので、同様の理由でさらに空きブロックを消費してしまう。これが連鎖し、RCMによる空きブロック生成速度が空きブロックの消費速度を下回り、空きブロックが枯渇する場合がある。
このような空きブロックの枯渇を防ぐための、論物管理情報の管理方法について説明する。
図3は、論理アドレス空間0300と物理アドレス空間0301の対応関係を示す図である。
論理アドレス空間0300は、上位装置0108に提供される空間であり、1つ以上の論理ページ0302に対応している。物理アドレス空間0301は、FM0102に対応づけられた空間であり、1つ以上のページ0304に対応している。FM0102は1つ以上のブロック0303を有する。ブロック0303は、FM0102におけるデータの消去単位であり、1つ以上のページ0304を有する。ページ0304は、FM0102におけるデータのリード・ライト単位である。
論理アドレス空間0300と物理アドレス空間0301は、L2PTBL0209によりマッピングされている。L2PTBL0209は、1つ以上のL2PTBLSubset0305を有する。L2PTBL管理TBL0210は、主記憶0104に格納されており、各L2PTBLSubset0305(メタデータ)が主記憶0104とFM0102のどちらに格納されているか、加えて主記憶0104とFM0102内のどのアドレスに格納されているかの情報を有している。
CPU0106は、論理アドレス空間全体のL2PTBLを、所定数のエントリを有するL2PTBLSubset0305に分割して管理する。L2PTBLSubset0305のデータサイズは例えば、FM0102のアクセス単位であるページサイズ以下である。全てのユーザデータの論理アドレスと物理アドレスのマッピングは、複数のL2PTBLSubset0305により表される。CPU0106は、複数のL2TBLSubset0305のうち、一部を主記憶0104に格納し、残りをFM0102に格納する。なお、CPU0106は、全てのL2PTBLSubset0305をFM0102に格納し、その一部を主記憶0104に格納してもよい。
この管理方法によれば、主記憶0104に収まらないL2PTBLをFM0102へ格納できる。更に、L2PTBLの一部を主記憶0104に格納することで論物変換を高速化できる。
図4は、L2PTBL0209の構成例を示す図である。
L2PTBL0209は、論理ページ毎のエントリを有する。各エントリは、論理ページ#(番号)0400、ステータス0401、物理アドレス0402、サイズ0403、およびSubset#0404を含む。論理ページ#0300は、論理ページの識別子であり、ユニークなものである。ステータス0401は、当該論理ページが物理アドレスへ対応づけられているか否か(有効/未割当)を表す。物理アドレス0402は、FM0102のうち、当該論理ページが対応づけられている領域の先頭の物理アドレスを示す。サイズ0403は、当該論理ページのデータの圧縮後のデータサイズを示す。Subset#0404は、当該論理ページが属するL2PTBLSubset0305の識別子を表す。なお、物理アドレス0402及びサイズ0403の代わりに、物理ページ番号や物理ページ数等が用いられてもよい。また、L2PTBL0209は、論理ページ番号順に、所定数のエントリ毎のL2PTBLSubset0305に分割される。
図5は、L2PTBL管理TBL0210の構成例を示す図である。
L2PTBL管理TBL0210は、L2PTBLSubset0305毎のエントリを有する。各エントリは、L2PTBLSubset#0500、ステータス0501、格納場所0502、およびSubsetアドレス0503を含む。L2PTBLSubset#0500は、L2PTBLSubsetの識別子であり、ユニークなものである。ステータス0501は、当該L2PTBLSubsetがL2PTBL0209へ対応づけられているか否か(有効/未割当)を表す。格納場所0502は、当該L2PTBLSubsetが主記憶0104とFM0102のどちらに格納されているかを示す。なお、格納場所0502は、当該L2PTBLSubsetが主記憶0104に格納されているか否かを示していてもよい。Subsetアドレス0503は、当該L2PTBLSubsetが格納されているFM0102上の格納位置である物理アドレス、または当該L2PTBLSubsetが格納されている主記憶0104上の格納位置である主記憶アドレスを示す。なお、当該L2PTBLSubsetがFM0102と主記憶0104の両方に格納されている場合、Subsetアドレス0503は、両方のアドレスを示していてもよい。
図6は、第1状態におけるブロック制御0600の概要を示す。図7は、第2状態におけるブロック制御0600の概要を示す。
FM0102に対するライトとして、上位装置0108からのユーザデータをFM0102へライトするユーザデータライト(ユーザWR)0601、FM0102に格納されたユーザデータをRCMにより移動させるユーザデータRCM(ユーザRCM)0602、ユーザWR0601されたユーザデータを示すメタデータをFM0102へライトするメタデータライト(メタWR)0603、FM0102に格納されたメタデータをRCMにより移動させるメタデータRCM(メタRCM)0604が行われる。ユーザWR、メタWR、ユーザRCM、及びメタRCMにより、FM0102へ書き込まれるデータ量を総FMライト量と呼ぶ。
ブロック制御0600は、ユーザWR0601、ユーザRCM0602、メタWR0603、メタRCM0604で生成・消費されるブロック数の管理、およびRCM量の調整を実施する。また、ブロック制御0600は、FM0102をブロック0303単位で、有効ユーザブロック0605、空きユーザブロック0606、有効メタブロック0607、および空きメタブロック0608の4つに、分割して管理する。有効ユーザブロック0605は、ユーザデータのために割り当てられ、有効なユーザデータを格納しているブロックである。空きユーザブロック0606は、ユーザデータのために割り当てられている空きブロックである。有効メタブロック0607は、メタデータのために割り当てられ、有効なメタデータを格納しているブロックである。空きメタブロック0608は、メタデータのために割り当てられている空きブロックである。ここで、有効ユーザブロック0605と空きユーザブロック0606を合わせて割当ユーザブロックと呼び、有効メタブロック0607と空きメタブロック0608を合わせて割当メタブロックと呼ぶ。また、ブロック制御0600は、割当ユーザブロック数と割当メタブロック数を制御する。
これらの図を用いて、割当メタブロック数を動的に変更する様子を説明する。第1状態は、ユーザWR0601とユーザRCM0602に対し、メタWR0603とメタRCM0604が少ない状態である。圧縮されないデータが多いと、ユーザデータサイズに対して論理アドレス空間は小さく、メタデータ量は少なく、主記憶0104とFM0102の間のメタデータの移動量は少ない。また、I/Oパタンが局所的アドレスへのアクセスであれば、主記憶0104とFM0102の間のメタデータの移動量は少ない。このような場合、ブロック制御0600は、割当メタブロック数を少なくする。これにより、各有効ユーザブロック0605の有効データ率が低くなり、ユーザRCM0602の量が少なくなり、総FMライト量を減らすことができる。ここで、有効データ率は、ブロック内のページ数に対する有効ページ数の割合である。総FMライト量は、ユーザWR0601、ユーザRCM0602、メタWR0603、メタRCM0604によるFM0102へのライト量の合計である。
一方、第2状態は、第1状態に比べて、メタデータWR0603とメタRCM0604が増加した状態である。圧縮されるデータが多いと、ユーザデータサイズに対して論理アドレス空間は大きく、メタデータ量は多く、主記憶0104とFM0102の間のメタデータの移動量は多い。また、I/Oパタンが広域的アドレスへのアクセスであれば、主記憶0104とFM0102の間のメタデータの移動量は多い。このような場合、ブロック制御0600は、割当メタブロック数を多くする。これにより、各有効メタブロック0607の有効データ率が低くなり、メタRCM0604の量が少なくなり、総FMライト量を減らすことができる。
図8は、ブロック管理TBL0211の構成例を示す図である。
ブロック管理TBL0211は、ブロック毎のエントリを有する。各エントリは、ブロック#0700、ステータス0701、データ種別0702、有効データ率0703、およびFM寿命情報0704を含む。ブロック#0700は、ブロックの識別子であり、ユニークなものである。ステータス0701は、当該ブロックのステータスであり、当該ブロックの全ページがライト済みである状態「有効(クローズ)」、当該ブロックの一部のページがライト済みである状態「有効(オープン)」、および当該ブロックが消去済みである状態「空き」の何れか一つを示す。有効データ率0703は、ブロック内のページ数に対する有効ページ数の割合を示す。FM寿命情報0704は、例えばブロックの消去回数などの寿命に関する情報を示す。なお、ステータス7001は、当該ブロックの全ページが無効であり且つ当該ブロックが消去前である状態「無効」を示してもよい。また、有効データ率0703の代わりに、有効ページ数、無効ページ数、ブロック内のページ数に対する無効ページ数の割合である無効データ率等が用いられてもよい。
図9は、装置情報TBL0212の構成例を示す図である。
装置情報TBL0212は、最大論理容量0800、FM総容量0801、主記憶メタ容量0802、有効論理データサイズ0803、ユーザデータサイズ0804、メタデータサイズ0805、有効ユーザブロック数0806、空きユーザブロック数0807、有効メタブロック数0808、および空きメタブロック数0809を含む。
最大論理容量0800は、予め設定され、データ圧縮機能を持つSSD0100へ格納可能なユーザデータの最大容量を示す。FM総容量0801は、予め設定され、SSD0100に搭載されたFM0102の容量を示す。即ち、SSD0100は、FM総容量0801より大きい最大論理容量0800を上位装置0108へ提供することができる。主記憶メタ容量0802は、予め設定され、SSD0100に搭載された主記憶0104の容量のうち、メタデータの格納に利用できる容量を示す。有効論理データサイズ0803は、SSD0100に格納されているユーザデータの圧縮前のサイズを示す。ユーザデータサイズ0804は、データ圧縮後にFM0102に格納されているユーザデータの物理サイズを示している。メタデータサイズ0805は、主記憶0104とFM0102に格納されているメタデータの物理サイズを示している。有効ユーザブロック数0806は、ユーザデータ用に割り当てられた割当ユーザブロックのうち、有効データが格納されているブロックの総数を示している。空きユーザブロック数0807は、割当ユーザブロックのうち、空きブロックの総数を示し、空きユーザブロック0606に対応している。有効メタブロック数0808は、メタデータ用に割り当てられた割当メタブロックのうち、有効データが格納されているブロックの総数を示している。空きメタブロック数0809は、割当メタブロックのうち、空きブロックの総数を示し、空きメタブロック0608に対応する。
有効論理データサイズ0803が増加すると、メタデータサイズ0805も増加する。
図10は、統計情報TBL0213の構成例を示す図である。
統計情報TBL0213は、世代毎のエントリを有する。各エントリは、世代#0900、更新日時0901、ユーザデータサイズ0902、メタデータサイズ0903、FMライト比率0904、およびユーザライト傾向0905を含む。
世代#0900は、一つの時点を示す識別子であり、ユニークなものである。更新日時0901は、当該エントリの情報が更新された日時を示す。ユーザデータサイズ0902は、当該エントリが更新された時点において、データ圧縮後にFM0102に格納されているユーザデータの物理サイズを示し、装置情報TBL0212のユーザデータサイズ0804に相当する。メタデータサイズ0930は、当該エントリが更新された時点において、主記憶0104とFM0102に格納されているメタデータの物理サイズを示し、装置情報TBL0212のメタデータサイズ0805に相当する。FMライト比率0904は、前回のエントリの更新時点から当該エントリの更新時点までの期間中の、FM0102へのユーザデータのライト量と、FM0102へのメタデータのライト量との比率を示す。ユーザライト傾向0905は、前回の統計情報更新時点から当該エントリが更新されるまでの期間におけるユーザライトの傾向に関する情報であり、I/Oレングスやアクセスパタン(シーケンシャルかランダムか)等を示す。
CPU0106は、定期的に統計情報TBL0213のエントリを作成してもよいし、ライトの度に統計情報TBL0213のエントリを作成してもよいし、L2PTBL0209の参照の度に統計情報TBL0213のエントリを作成してもよい。
以下、SSD0100の動作について説明する。
図11は、ユーザデータライト処理の一例を示すフローチャートである。
ユーザデータライト処理は、上位装置0108からライトコマンドが発行され、このライトコマンドが完了するまでの処理である。
CPU0106は、上位装置0108からライトコマンドを取得する(1000)。
CPU0106は、ライトコマンドを解析した後、ライトデータを上位装置0108へ要求し、上位装置0108から受領したライトデータをデータバッファ領域0202へ格納する(1001)。
CPU0106は、上位装置0108へライト完了応答を送信する(1002)。
CPU0106は、データバッファ領域0202へ格納したライトデータを圧縮する(1003)。
CPU0106は、L2PTBLアドレス取得処理を行うことで、L2PTBL0209のうち当該ライトコマンドに示された論理アドレスに対応するSubsetの主記憶アドレスを取得する(1004)。なお、本処理の詳細は、後述する。
CPU0106は、処理1004で取得したSubsetの主記憶アドレスと、ライトコマンドから算出される論理ページ#をもとに、Subsetのうち当該論理ページのエントリを取得する(1005)。
CPU0106は、ブロック管理TBL0211の情報をもとに、書き先物理アドレスを決定する(1006)。なお、書き先物理アドレスの決定は、ブロック管理TBL0211のステータス0701や寿命情報0704を用いて決定する。例えば、CPU0106は、残寿命が長いブロックや、オープンブロックの続きのページ等を、書き先物理アドレスとして選択する。
CPU0106は、処理1006で決定した書き先物理アドレスへ、圧縮されたデータを書き込むためのライト要求をFM0102へ発行し、ライト完了を待つ(1007)。
CPU0106は、処理1007で発行したライト要求が完了した後、L2PTBL0209の当該エントリの物理アドレス0402を更新する(1008)。
CPU0106は、ブロック制御処理を呼び出し、RCMの制御やメタデータへ割り当てるブロック数の制御などを実施した後、処理を終了する(1009)。なお、本処理の詳細は後述する。
以上のライト処理によれば、CPU0106は、主記憶0104上で、ライトコマンドで指定された論理アドレスに対応するSubsetに、書き先物理アドレスを登録することができる。
図12は、アンマップ処理の一例を示すフローチャートである。
アンマップ処理は、上位装置0108からアンマップコマンドが発行され、このアンマップコマンドが完了するまでの処理である。
CPU0106は、上位装置0108からアンマップコマンドを取得する(1100)。このコマンドは例えば、trimコマンドである。アンマップコマンドは、指定する論理アドレス範囲のデータが上位装置0108により使用されなくなったことを示す。これにより、CPU0106は、指定された論理アドレス範囲を無効化することができる。
CPU0106は、L2PTBLアドレス取得処理を行うことで、L2PTBL0209のうち当該アンマップコマンドに対応するSubsetの主記憶アドレスを取得する(1004)。なお、本処理の詳細は、後述する。
CPU0106は、処理1004で取得したSubsetの主記憶アドレスと、アンマップコマンドから算出される論理ページ#をもとに、Subsetのうち当該論理ページのエントリを取得する(1005)。
CPU0106は、当該Subsetの当該エントリのステータス0401を「未割当」に変更する(1101)。
CPU0106は、当該Subsetの全エントリが無効か否かを判断する(1102)。判断の結果、全エントリが無効であれば(1102:Yes)、CPU0106は、処理1103(A)へ進む。一方、全エントリが無効でない場合(1102:No)、CPU0106は、処理1104(B)へ進む。
(A)
CPU0106は、L2PTBL管理TBL0210を参照し、当該Subsetのエントリのステータス0501を「未割当」に変更する(1103)。これにより、割当メタブロックの無効データ率を高めることができる。その後、CPU0106は、処理1104(B)へ進む。
(B)
CPU0106は、上位装置0108へアンマップ完了応答を送信する(1104)。
CPU0106は、ブロック制御処理を呼び出し、RCMの制御やメタデータへ割り当てるブロック数の制御などを実施した後、処理を終了する(1009)。なお、本処理の詳細は後述する。
以上のアンマップ処理によれば、CPU0106は、主記憶0104上で、アンマップコマンドにより指定された論理アドレスに対応するSubsetにおいて、物理アドレスのマッピングを解除することができる。
図13は、L2PTBLアドレス取得処理の一例を示すフローチャートである。
前述のユーザデータライト処理及びアンマップ処理の1004において、CPU0106は、L2PTBLアドレス取得処理を行う。
CPU0106は、L2PTBL管理TBL0210を参照し、コマンドの対象の論理ページに対応するL2PTBLSubset0305のエントリを取得する(1200)。
CPU0106は、処理1200で取得した情報をもとに、当該L2PTBLSubset0305のステータス0501が有効であるか否かを判断する(1201)。判断の結果、ステータス0501が有効である場合(1201:Yes)、CPU0106は、処理1202(D)へ進む。一方、ステータス0501が有効でない場合(1201:No)、CPU0106は、処理1203(E)へ進む。
(D)
CPU0106は、処理1200で取得した情報をもとに、当該L2PTBLSubset0305の格納場所0502が主記憶であるか否かを判断する(1202)。判断の結果、格納場所0502が主記憶である場合(1202:Yes)、CPU0106は、処理1206(H)へ進む。一方、格納場所0502が主記憶でない場合(1202:No)、CPU0106は、処理1203(E)へ進む。
(E)
CPU0106は、主記憶0104に、L2PTBLSubset0305を新たに格納可能な領域が空いているか否かを判断する(1203)。判断の結果、空きがない場合(1203:Yes)、CPU0106は、処理1204(F)へ進む。一方、空きがある場合(1203:No)、CPU0106は、処理1205(G)へ進む。
(F)
CPU0106は、主記憶0104に格納されているL2PTBLSubset0305を選択し、選択されたL2PTBLSubset0305をFM0102へライトし、L2PTBL管理TBL0210の当該エントリの格納場所0502を「FM」、物理アドレス/主記憶アドレス0503を格納先の物理アドレスへ変更することで、空きを確保する(1204)。なお、FM0501へライトするL2PTBLSubset0305は、参照や更新頻度などの情報を管理し、これら情報をもとに決定しても良い。その後、CPU0106は、処理1205(G)へ進む。なお、主記憶0104に格納されているL2PTBLSubset0305がFM0102にも格納されており、且つ主記憶0104に格納されているL2PTBLSubset0305が更新されていない場合、CPU0106は、1204を行わなくてもよい。
(G)
処理1201の結果が「Yes」であった場合、CPU0106は、当該L2PTBLSubsetをFM0102から主記憶0104へリードし、L2PTBL管理TBL0210の当該L2PTBLSubsetの格納場所0502を主記憶へ変更し、Subsetアドレス0503を格納先の主記憶アドレスへ変更する(1205)。一方、処理1201の結果が「No」であった場合、CPU0106は、L2PTBLSubset0305を主記憶0104に新規作成し、L2PTBL管理TBL0210の当該エントリのステータス0501を有効へ変更し、格納場所0502を主記憶へ変更し、Subsetアドレス0503を格納先の主記憶アドレスへ変更する(1205)。その後、CPU0106は、処理1206(H)へ進む。
(H)
CPU0106は、L2PTBL管理TBL0210の当該エントリのSubsetアドレス0503を返却し、処理を終了する(1206)。
以上のL2PTBLアドレス取得処理によれば、CPU0106は、指定された論理アドレスに対応するSubsetについて、主記憶0104上の位置を取得することができる。また、CPU0106は、当該Subsetが主記憶0104に格納されていない場合、FM0102から主記憶0104へ読み出すことができる。
図14は、ブロック制御処理の一例を示すフローチャートである。
前述のユーザデータライト処理及びアンマップ処理の1009において、CPU0106は、ブロック制御処理を行う。
CPU0106は、装置情報TBL0212および統計情報TBL0213の少なくとも何れか一つより、各種情報を取得する(1300)。
CPU0106は、RCM制御処理を行うことで、処理1300で取得した各種情報をもとに、ユーザデータとメタデータのそれぞれで必要なRCM量を算出し、RCMを実行する(1301)。なお、本処理の詳細は後述する。
CPU0106は、処理1300で取得した、統計情報TBL0213の最新の世代のエントリをもとに、過去の世代のエントリから変化があったか否かを判断する(1302)。例えば、CPU0106は、統計情報TBL0213の特定のフィールドについて、最新の世代のエントリとその直前の世代のエントリとの比を算出し、比が予め設定された範囲外である場合、変化があったと判断する。特定のフィールドは、例えば、メタデータサイズ0903である。なお、特定のフィールドは、ユーザデータサイズ0902、メタデータサイズ0903、FMライト比率0904、およびユーザライト傾向0905の少なくとも一つであってもよい。判断の結果、変化がある場合(1302:Yes)、CPU0106は、処理1303(J)へ進む。一方、変化がない場合(1302:No)、CPU0106は、処理1304(K)へ進む。
(J)
CPU0106は、ブロック割当制御処理を行うことで、処理1300で取得した情報をもとに、総FMライト量が最小となるような、割当ユーザブロック数と割当メタブロック数を算出し、必要に応じてそれらのブロック数を増減させる(1303)。なお、本処理の詳細は後述する。その後、CPU0106は、処理1304(K)へ進む。
(K)
CPU0106は、装置情報TBL0212および統計情報TBL0213の各種情報を更新し、処理を終了する(1304)。なお、CPU0106は、統計情報TBL0213の更新を、処理1304が実行される毎に実施しても良いし、前回の更新から指定時間以上が経過していた場合のみ実施しても良い。
以上のブロック制御処理によれば、CPU0106は、統計情報に変化があったと判定した場合、割当ユーザブロック数と割当メタブロック数を変更することができる。また、CPU0106は、統計情報に変化がないと判定した場合、現在の割当ユーザブロック数と割当メタブロック数が最適であると判断し、割当ユーザブロック数と割当メタブロック数を維持することができる。
図15は、RCM制御処理の一例を示すフローチャートである。
前述のブロック制御処理の1301において、CPU0106は、RCM制御処理を行う。
CPU0106は、処理1300で取得した情報をもとに、空きユーザブロックが不足しているか否かを判断する(1400)。例えば、CPU0106は、空きユーザブロック数が空きユーザブロック数閾値より少ない場合、空きユーザブロックが不足していると判断する。空きユーザブロック数閾値は、予め設定されていてもよいし、割当ユーザブロック数に予め設定された空きユーザブロック率を乗ずることにより算出されてもよい。なお、RCM制御処理に対して使用ブロック数が与えられる場合、空きユーザブロック数から使用ブロック数を減ずることで新たな空きユーザブロック数を算出し、空きユーザブロックが不足しているか否かを判断する。判断の結果、不足している場合(1400:Yes)、CPU0106は、処理1401(M)へ進む。一方、不足していない場合(1400:No)、CPU0106は、処理1403(N)へ進む。
(M)
CPU0106は、処理1300で取得した情報、およびブロック管理TBL0211をもとに、十分な空きユーザブロック確保に必要なユーザRCM量(空きユーザブロックを確保するために移動(リライト)するユーザデータの量)を算出する(1401)。例えば、CPU0106は空きユーザブロック数閾値に対する空きユーザブロックの不足ブロック数を算出し、不足ブロック数と、有効ユーザブロック内の有効データ率から移動する有効ページ数をユーザRCM量として算出する。
CPU0106は、処理1401で算出したユーザRCM量をもとに、当該RCMによって消費される空きメタブロック数(消費空きメタブロック数)を算出する(1402)。例えば、CPU0106は、ユーザRCM対象ブロックに含まれる有効ページに対応するL2PTBLSubset0305のうち、FM0102に格納されているものの合計サイズを求め、これと同サイズのメタデータをFM0102へライトするために必要な空きメタブロック数を消費空きメタブロック数として算出する。また、CPU0106は、論物ミス率を算出し、論物ミス率に基づいて統計的に消費空きメタブロック数を算出してもよい。その後、処理1403(N)へ進む。
(N)
CPU0106は、処理1300で取得した情報をもとに、処理1402を実施した場合、ここで算出したメタRCM消費ブロック数を考慮して、空きメタブロックが不足しているか否かを判断する(1403)。例えば、CPU0106は、空きメタブロック数からメタRCM消費ブロック数を減ずることで空きメタブロック数予測値を算出し、空きメタブロック数予測値が空きメタブロック数閾値より少ない場合、空きメタブロックが不足していると判断する。空きメタブロック数閾値は、予め設定されていてもよいし、割当メタブロック数に予め設定された空きメタブロック率を乗ずることにより算出されてもよい。判断の結果、不足していれば(1403:Yes)、CPU0106は、処理1404(O)へ進む。一方、不足していない場合(1403:No)、CPU0106は、処理1406(P)へ進む。
(O)
CPU0106は、処理1300で取得した情報、およびブロック管理TBL0211をもとに、十分な空きブロック確保に必要なメタRCM量(空きメタブロックを確保するために移動(リライト)するメタデータの量)を算出する(1404)。
CPU0106は、処理1404で算出したメタRCM量をもとに、メタRCMを実施し、空きメタブロックを確保する(1405)。その後、CPU0106は、処理1406(P)へ進む。
(P)
CPU0106は、処理1401で算出したユーザRCM量をもとに、ユーザRCMを実施し、空きユーザブロックを確保した後、処理を終了する(1406)。なお、処理1401を実施していない場合は、本処理も実施しない。
以上のRCM制御処理によれば、CPU0106は、まず、ユーザRCM量を算出し、ユーザRCM量に基づいてメタRCM量を算出することで、割当ユーザブロックに影響を与えないメタRCMを行うことができる。その後、CPU0106は、ユーザRCMを行うことで、ユーザRCMによるメタ空きブロックの枯渇を防ぐことができる。
図16は、ブロック割当制御処理の一例を示すフローチャートである。
前述のブロック制御処理の1303において、CPU0106は、ブロック割当制御処理を行う。
CPU0106は、処理1300で取得した情報をもとに、メタデータサイズ0805が主記憶メタ容量0802を超えるか否かを判断する(1500)。判断の結果、メタデータサイズ0805が主記憶メタ容量0802を超える場合(1500:Yes)、CPU0106は、処理1501(R)へ進む。一方、メタデータサイズ0805が主記憶メタ容量0802以下である場合(1500:No)、CPU0106は、処理を終了する。
(R)
CPU0106は、現在のユーザデータサイズ0902を算出する(1501)。
CPU0106は、現在のメタデータサイズ0903を算出する(1502)。
CPU0106は、現在のFMライト比率0904を算出する(1503)。
CPU0106は、現在のユーザライト傾向0905を算出する(1504)。
CPU0106は、処理1501〜1504で算出した値をもとに、総FMライト量が最小となる、ユーザデータとメタデータのブロック割当比率を最適ブロック割当比率として算出する(1505)。ブロック割当比率は、割当ユーザブロック数と割当メタブロック数の比率である。ここで、CPU0106は例えば、ユーザデータサイズとメタデータサイズとFMライト比率とユーザライト傾向と最適ブロック割当比率との値の組み合わせを示すテーブルを主記憶0104に保持しておき、そのテーブルから、処理1501〜1504で算出した値に対応する最適ブロック割当比率を参照しても良い。なお、ブロック割当比率は、FM0102の全ブロック数に対する割当メタブロック数の比率であってもよい。ブロック割当比率の代わりに、割当メタブロック数及び割当ユーザブロック数の何れかが用いられてもよい。なお、CPU0106は、予め設定された算出式を用いて、処理1501〜1504で算出した値から最適ブロック割当比率を求めても良い。
CPU0106は、処理1300で取得した情報をもとに現在のブロック割当比率を求め、最適ブロック割当比率が現在のブロック割当比率と異なるか否かを判断する(1506)。例えば、CPU0106は、最適ブロック割当比率と現在のブロック割当比率の比が、予め設定された範囲外である場合、最適ブロック割当比率が現在のブロック割当比率と異なると判断する。判断の結果、最適ブロック割当比率が現在のブロック割当比率と異なる場合(1506:Yes)、CPU0106は、処理1507(S)へ進める。一方、最適ブロック割当比率が現在のブロック割当比率と異ならない場合(1506:No)、CPU0106は、処理を終了する。
(S)
CPU0106は、処理1506の結果を踏まえ、総FMライト量を最小にするには、割当メタブロック数を増やすべきか、減らすべきかを判断する(1507)。ここでCPU0106は、最適ブロック割当比率により決まる割当メタブロック数を最適割当メタブロック数とし、最適割当メタブロック数から現在の割当メタブロック数を減じて得られる変更メタブロック数が正である場合、割当メタブロック数を増やすべきであると判定する。判断の結果、増やすべきであれば(1507:増)、CPU0106は、処理1508(T)へ進める。一方、減らすべきであれば(1507:減)、CPU0106は、処理1509(U)へ進める。
(T)
CPU0106は、割当メタブロック数を増加させる割当メタブロック増加処理を実施し、処理を終了する(1508)。なお、本処理の詳細は、後述する。
(U)
CPU0106は、割当メタブロック数を減少させる割当メタブロック減少処理を実施し、処理を終了する(1509)。なお、本処理の詳細は、後述する。
以上のブロック割当制御処理によれば、CPU0106は、SSD0100の状態に基づいて最適ブロック割当比率を算出することができる。また、CPU0106は、現在のブロック割当比率が最適ブロック割当比率と異なる場合、ブロック割当比率を最適ブロック割当比率に近づけることができる。また、CPU0106は、装置情報TBL0212や統計情報TBL0213等の計測値と、計測値及び最適ブロック割当比率の関係を用いることにより、総FMライト量を最小化する最適ブロック割当比率を算出することができる。また、総FMライト量を最小化することにより、空きブロックの枯渇を防ぐと共に、SSD0100の性能を向上させることや、FM0102の寿命を向上させることができる。
なお、ブロック割当比率の代わりに、割当メタブロック数または割当ユーザブロック数が用いられてもよい。また、最適ブロック割当比率の代わりに、最適割当メタブロック数または最適割当ユーザブロック数が用いられてもよい。
図17は、割当メタブロック増加処理の一例を示すフローチャートである。
前述のブロック割当制御処理の1508において、CPU0106は、割当メタブロック増加処理を行う。
CPU0106は、変更ブロック数の割当メタブロックを増加させるために、増加させるブロックを空きユーザブロックから確保するため、確保した後の空きユーザブロック数が不足するか否かを判断する(1600)。ここでCPU0106は、現在の空きユーザブロック数から変更ブロック数を減ずることで変更後空きユーザブロック数を算出し、変更後空きユーザブロック数が空きユーザブロック数閾値より少なくなる場合、空きユーザブロック数が不足していると判断する。判断の結果、空きユーザブロック数が不足していれば(1600:Yes)、CPU0106は、処理1301(W)へ進める。一方、空きユーザブロック数が不足していない場合(1600:No)、CPU0106は、処理1601(X)へ進める。
(W)
CPU0106は、変更ブロック数を使用ブロック数として、前述のRCM制御処理を実施することで、空きユーザブロックを生成する(1301)。その後、CPU0106は、処理1601(X)へ進める。
(X)
CPU0106は、変更ブロック数の空きユーザブロックを空きメタブロックに変更する(1601)。
CPU0106は、処理1601で変更したブロックについて、ブロック管理TBL0211の情報を更新し、処理を終了する(1602)。
以上の割当メタブロック増加処理によれば、CPU0106は、空きユーザブロックを空きメタブロックに変更することで、割当メタブロック数を増加させることができる。
図18は、割当メタブロック減少処理の一例を示すフローチャートである。
前述のブロック割当制御処理の1509において、CPU0106は、割当メタブロック減少処理を行う。
CPU0106は、変更ブロック数の割当メタブロックを減少させるために、減少させるブロックを空きメタブロックから確保するため、確保した後の空きメタブロック数が不足しているか否かを判断する(1700)。ここでCPU0106は、現在の空きメタブロック数から変更ブロック数を減ずることで変更後空きメタブロック数を算出し、変更後空きメタブロック数が空きメタブロック数閾値より少なくなる場合、空きメタブロック数が不足していると判断する。判断の結果、空きメタブロック数が不足していれば(1700:Yes)、CPU0106は、処理1301(Y)へ進める。一方、空きメタブロック数が不足していない場合(1700:No)、CPU0106は、処理1701(Z)へ進める。
(Y)
CPU0106は、変更ブロック数を使用ブロック数として、前述のRCM制御処理を実施することで、空きメタブロックを生成する(1301)。その後、CPU0106は、処理1701(Z)へ進める。
(Z)
CPU0106は、変更ブロック数の空きメタブロックを空きユーザブロックに変更する(1701)。
CPU0106は、処理1701で変更したブロックについて、ブロック管理TBL0211の情報を更新し、処理を終了する(1702)。
以上の割当メタブロック減少処理によれば、CPU0106は、空きメタブロックを空きユーザブロックに変更することで、割当メタブロック数を減少させることができる。
本実施例によれば、データ圧縮機能を有したSSDにおいて、空きブロックが枯渇することなく、I/Oを継続できる。さらに、ユーザデータとメタデータへのブロック割り当て数を動的に変更することで、ユーザRCMおよびメタRCMの際に発生する有効データの移動量を少なくできる。例えば、総FMライト量においてメタデータのライト量が支配的である場合、メタデータに割り当てるブロック数を増加させることで、メタデータの各ブロックに含まれる有効データの割合を低くでき、RCM時の有効データの移動量を小さくできる。つまり、総FMライト量を小さくできるため、装置性能と装置寿命を向上できる。
なお、SSD0100は、データ圧縮機能の代わりに、重複排除機能等、上位装置0108からのライトデータ量を削減してFM0102へ書き込むことができる他のデータ削減機能を有していてもよい。このようなデータ削減機能により、SSD0100の論理アドレス空間が変化し、メタデータ量が変化する。また、データ削減機能により、割当ユーザブロック数で定まる物理アドレス空間より大きい論理アドレス空間を上位装置0108へ提供することができ、ビットコストを低減できる。
用語について説明する。記憶装置は、SSD0100等に対応する。主メモリは、主記憶0104等に対応する。不揮発性半導体メモリは、FM0102等に対応する。プロセッサは、CPU0106等に対応する。空きユーザブロック生成処理は、ユーザRCM等に対応する。空きメタブロック生成処理は、メタRCM等に対応する。移動ユーザデータ量は、ユーザRCM量等に対応する。移動メタデータ量は、メタRCM量等に対応する。割当情報は、ブロック割当比率、割当メタブロック数、割当ユーザブロック数等に対応する。最適割当情報は、最適ブロック割当比率、最適割当メタブロック数、最適割当ユーザブロック数等に対応する。割当ブロック変更処理は、ブロック割当制御処理等に対応する。変化条件は、処理1302の条件等に対応する。計測値は、装置情報TBL0212や統計情報TBL0213における何れかの値等に対応する。
以上、本発明の実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲を上記構成に限定する趣旨ではない。本発明は、他の種々の形態でも実施する事が可能である。
0100…SSD、 0101…SSDコントローラ、 0102…FM、 0103…ストレージI/F、 0104…主記憶、 0105…FMコントローラ、 0106…CPU、 0107…内部ネットワーク、 0108…上位装置、 0300…論理アドレス空間、 0301…物理アドレス空間、 0302…論理ページ、 0303…ブロック、 0304…ページ

Claims (13)

  1. 主メモリと、
    不揮発性半導体メモリと、
    前記主メモリ及び前記不揮発性半導体メモリに接続されるプロセッサと、
    を備え、
    前記プロセッサは、上位装置へ提供する論理アドレスと前記不揮発性半導体メモリ内のユーザデータの物理アドレスとの関係を示すメタデータの、少なくとも一部を前記不揮発性半導体メモリに格納し、前記メタデータの一部を前記主メモリに格納し、
    前記プロセッサは、前記不揮発性半導体メモリ内のブロックを、前記ユーザデータを格納するための割当ユーザブロックと、前記メタデータを格納するための割当メタブロックとへ割り当て、
    前記プロセッサは、前記割当ユーザブロックに格納されているユーザデータを移動させることで、前記割当ユーザブロックのうちの空きブロックである空きユーザブロックを生成する空きユーザブロック生成処理と、前記割当メタブロックに格納されているメタデータを移動させることで、前記割当メタブロックのうちの空きブロックである空きメタブロックを生成する空きメタブロック生成処理とを実行可能であり、
    前記プロセッサは、前記空きユーザブロック生成処理により消費される空きメタブロックの数である消費空きメタブロック数を算出し、
    前記プロセッサは、前記消費空きメタブロック数に基づいて前記空きメタブロック生成処理を行う、
    記憶装置。
  2. 前記プロセッサは、前記上位装置からライトデータを受信し、前記ライトデータのデータ量を削減することでユーザデータを生成し、前記生成されたユーザデータを前記割当ユーザブロックへ書き込む、
    請求項1に記載の記憶装置。
  3. 前記プロセッサは、前記空きユーザブロックが不足するか否かを判定し、
    前記空きユーザブロックが不足すると判定された場合、前記プロセッサは、前記空きユーザブロック生成処理により移動するユーザデータの量である移動ユーザデータ量を算出し、
    前記プロセッサは、前記移動ユーザデータ量に基づいて前記消費空きメタブロック数を算出し、
    前記プロセッサは、前記消費空きメタブロック数に基づいて前記空きメタブロックが不足するか否かを判定し、
    前記空きメタブロックが不足すると判定された場合、前記プロセッサは、前記空きメタブロック生成処理を行い、前記空きユーザブロック生成処理を行う、
    請求項2に記載の記憶装置。
  4. 前記プロセッサは、前記不揮発性半導体メモリへのライトを計測することで計測値を取得し、
    前記プロセッサは、前記計測値に基づいて、前記割当ユーザブロックの数及び前記割当メタブロックの数を変更する、割当ブロック変更処理を行う、
    請求項3に記載の記憶装置。
  5. 前記割当ブロック変更処理は、前記割当ユーザブロックの数及び前記割当メタブロックの数を示す割当情報に対し、前記計測値に基づいて、前記不揮発性半導体メモリへのライト量を最小化する前記割当情報である最適割当情報を決定し、前記最適割当情報に基づいて前記割当情報を変更する、
    請求項4に記載の記憶装置。
  6. 前記割当ブロック変更処理は、前記割当メタブロックの数を増加させる場合、空きユーザブロックを空きメタブロックへ変更し、前記割当メタブロックの数を減少させる場合、空きメタブロックを空きユーザブロックへ変更する、
    請求項5に記載の記憶装置。
  7. 前記計測値は、前記不揮発性半導体メモリに格納されているユーザデータのサイズと、前記不揮発性半導体メモリに格納されているメタデータのサイズと、前記不揮発性半導体メモリへのユーザデータのライト量と、前記不揮発性半導体メモリへのメタデータのライト量と、及びユーザデータのI/Oパタンとの何れかを含み、
    前記割当ブロック変更処理は、予め設定された前記計測値と前記最適割当情報の関係を用いて、前記計測値から前記最適割当情報を決定する、
    請求項6に記載の記憶装置。
  8. 前記プロセッサは、前記計測値を繰り返し取得し、前記計測値の変化が予め設定された変化条件を満たすか否かを判定し、
    前記計測値の変化が前記変化条件を満たすと判定された場合、前記プロセッサは、前記割当ブロック変更処理を行う、
    請求項7に記載の記憶装置。
  9. 前記プロセッサは、前記論理アドレスの空間を複数の部分に分割し、前記メタデータを前記複数の部分に夫々対応する複数のサブセットに分割し、
    前記プロセッサは、前記主メモリ及び前記不揮発性半導体メモリのうち、各サブセットが格納されている位置を示すサブセット位置情報を、前記主メモリに格納し、
    前記プロセッサは、特定ユーザデータにアクセスする場合、前記サブセット位置情報に基づいて、前記特定ユーザデータに対応するサブセットの位置を取得する、サブセット位置取得処理を行う、
    請求項8に記載の記憶装置。
  10. 前記プロセッサは、前記不揮発性半導体メモリ内の各ブロックの状態を示すブロック管理情報を、前記主メモリへ格納し、
    前記プロセッサは、前記上位装置から第一論理アドレスへの前記ライトデータを受信した場合、前記サブセット位置取得処理を行うことで、前記第一論理アドレスに対応するサブセットの位置を取得し、前記ブロック管理情報に基づいて、前記ライトデータに基づくユーザデータの書き先の物理アドレスを選択し、前記生成されたユーザデータを前記書き先へ書き込み、前記第一論理アドレスと前記書き先の物理アドレスの関係を、前記第一論理アドレスに対応するサブセットへ反映する、
    請求項9に記載の記憶装置。
  11. 前記プロセッサは、前記ライトデータを圧縮することで、前記ライトデータに基づくユーザデータを生成する、
    請求項10に記載の記憶装置。
  12. 前記プロセッサは、前記上位装置から第二論理アドレスのアンマップの要求を受信した場合、前記サブセット位置取得処理を行うことで、前記第二論理アドレスに対応するサブセットの位置を取得し、前記第二論理アドレスに対応するサブセットに基づいて、前記第二論理アドレスに対する物理アドレスの解除を、前記第二論理アドレスに対応するサブセットへ反映する、
    請求項11に記載の記憶装置。
  13. 主メモリと不揮発性半導体メモリとを含む記憶装置の制御方法であって、
    上位装置へ提供する論理アドレスと前記不揮発性半導体メモリ内のユーザデータの物理アドレスとの関係を示すメタデータの、少なくとも一部を前記不揮発性半導体メモリに格納し、前記メタデータの一部を前記主メモリに格納し、
    前記不揮発性半導体メモリ内のブロックを、前記ユーザデータを格納するための割当ユーザブロックと、前記メタデータを格納するための割当メタブロックとへ割り当て、
    前記割当ユーザブロックに格納されているユーザデータを移動させることで、前記割当ユーザブロックのうちの空きブロックである空きユーザブロックを生成する空きユーザブロック生成処理と、前記割当メタブロックに格納されているメタデータを移動させることで、前記割当メタブロックのうちの空きブロックである空きメタブロックを生成する空きメタブロック生成処理とを実行可能であり、前記空きユーザブロック生成処理により消費される空きメタブロックの数である消費空きメタブロック数を算出し、
    前記消費空きメタブロック数に基づいて前記空きメタブロック生成処理を行う、
    制御方法。
JP2017562395A 2016-01-22 2016-01-22 記憶装置および記憶装置の制御方法 Active JP6430039B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/051783 WO2017126096A1 (ja) 2016-01-22 2016-01-22 記憶装置および記憶装置の制御方法

Publications (2)

Publication Number Publication Date
JPWO2017126096A1 JPWO2017126096A1 (ja) 2018-08-30
JP6430039B2 true JP6430039B2 (ja) 2018-11-28

Family

ID=59362259

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017562395A Active JP6430039B2 (ja) 2016-01-22 2016-01-22 記憶装置および記憶装置の制御方法

Country Status (3)

Country Link
US (1) US10394480B2 (ja)
JP (1) JP6430039B2 (ja)
WO (1) WO2017126096A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI576699B (zh) * 2016-03-31 2017-04-01 慧榮科技股份有限公司 紀錄資料區塊的使用時間的方法及其裝置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5076411B2 (ja) * 2005-11-30 2012-11-21 ソニー株式会社 記憶装置、コンピュータシステム
JP2009043238A (ja) * 2007-07-19 2009-02-26 Hitachi Ltd 記憶領域管理方法および情報処理装置
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8166233B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
US8417876B2 (en) * 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
CN103384877B (zh) 2011-06-07 2016-03-23 株式会社日立制作所 包括闪存的存储***和存储控制方法
US8593866B2 (en) * 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
US8631052B1 (en) * 2011-12-22 2014-01-14 Emc Corporation Efficient content meta-data collection and trace generation from deduplicated storage
KR102430198B1 (ko) * 2014-06-12 2022-08-05 삼성전자주식회사 플래시 저장 장치의 어드레스 매핑 테이블 정리 방법
JP2016024678A (ja) * 2014-07-22 2016-02-08 株式会社東芝 メモリシステム
US9626312B2 (en) * 2015-07-17 2017-04-18 Sandisk Technologies Llc Storage region mapping for a data storage device

Also Published As

Publication number Publication date
WO2017126096A1 (ja) 2017-07-27
US20180314426A1 (en) 2018-11-01
JPWO2017126096A1 (ja) 2018-08-30
US10394480B2 (en) 2019-08-27

Similar Documents

Publication Publication Date Title
CN110678836B (zh) 用于键值存储的持久性存储器
US12038834B2 (en) Memory system and method for controlling nonvolatile memory during command processing without replacing defective blocks
US11669444B2 (en) Computing system and method for controlling storage device
JP7091203B2 (ja) メモリシステムおよび制御方法
JP6785205B2 (ja) メモリシステムおよび制御方法
US10922235B2 (en) Method and system for address table eviction management
US10552317B2 (en) Cache allocation in a computerized system
US10409526B2 (en) Adaptive garbage collection
WO2017000658A1 (zh) 存储***、存储管理装置、存储器、混合存储装置及存储管理方法
CN106708423B (zh) 多模存储管理***
JP6785204B2 (ja) メモリシステムおよび制御方法
KR20100030602A (ko) 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
US10310984B2 (en) Storage apparatus and storage control method
US10628301B1 (en) System and method for optimizing write amplification of non-volatile memory storage media
WO2017000821A1 (zh) 存储***、存储管理装置、存储器、混合存储装置及存储管理方法
JP7013546B2 (ja) メモリシステム
JP2020123039A (ja) メモリシステムおよび制御方法
US11093408B1 (en) System and method for optimizing write amplification of non-volatile memory storage media
JP6430039B2 (ja) 記憶装置および記憶装置の制御方法
WO2018167890A1 (ja) 計算機システム及び管理方法
JP7102482B2 (ja) メモリシステムおよび制御方法
US11467730B1 (en) Method and system for managing data storage on non-volatile memory media
KR102416880B1 (ko) Ssd를 위한 요구 기반 ftl 캐시 분리 방법 및 그 컴퓨팅 장치
JP2022036263A (ja) 制御方法
JP2022019787A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180423

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: 20181016

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181030

R150 Certificate of patent or registration of utility model

Ref document number: 6430039

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150