JP5820078B2 - 記憶装置システム - Google Patents

記憶装置システム Download PDF

Info

Publication number
JP5820078B2
JP5820078B2 JP2014534130A JP2014534130A JP5820078B2 JP 5820078 B2 JP5820078 B2 JP 5820078B2 JP 2014534130 A JP2014534130 A JP 2014534130A JP 2014534130 A JP2014534130 A JP 2014534130A JP 5820078 B2 JP5820078 B2 JP 5820078B2
Authority
JP
Japan
Prior art keywords
control circuit
write
data
storage
storage module
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.)
Expired - Fee Related
Application number
JP2014534130A
Other languages
English (en)
Other versions
JPWO2014038073A1 (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
Application granted granted Critical
Publication of JP5820078B2 publication Critical patent/JP5820078B2/ja
Publication of JPWO2014038073A1 publication Critical patent/JPWO2014038073A1/ja
Expired - Fee Related 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/0653Monitoring storage devices or systems

Description

本発明は、記憶装置システムに関し、例えば、SSD(Solid State Drive)等の外部記憶装置(ストレージ)における制御技術に関する。
近年、複数のNAND型フラッシュメモリと、コントローラから構成されるSSD(Solid State Drive)がストレージシステム、サーバー機器およびLaptop PC等に利用されている。NAND型フラッシュメモリには、消去回数に上限があり、データ書き込みサイズとデータ消去サイズが大きく異なることが広く知られている。
特許文献1には、階層的な容量仮想化を実現すると共に、ストレージシステム全体での消去回数の偏りを軽減する技術が開示されている。具体的には、既に書き込まれたデータを対象に、それを適宜移動することで消去回数を平準化するという所謂スタティックウエアレベリングを行う技術が示されている。また、特許文献2にはフラッシュメモリを利用したストレージシステムの管理方法について開示されている。特許文献3には、ストレージシステムの電源遮断時の制御技術が開示されている。特許文献4にはSSDの制御技術が開示されている。特許文献5にはSSDとHDD間でのデータ転送技術が開示されている。
国際公開第2011/010344号 特開2011−3111号公報 特開2011−138273号公報 特開2011−90496号公報 特開2007−115232号公報
本発明者らは、本願に先立ち、SSD(Solid State Drive)やメモリカードなどのストレージへ利用されているNAND型フラッシュメモリの制御方法について検討した。
NAND型フラッシュメモリに代表される不揮発性メモリは、あるメモリ領域へデータを書き込むためには、予め、そのメモリ領域のデータを消去する必要がある。この消去時の最小データ単位は例えば1Mバイト等であり、書き込み時の最小データ単位は例えば4Kバイト等である。つまり、4Kバイトのデータを書くために、1Mバイトの消去済メモリ領域を確保する必要がある。この1Mバイトの消去済メモリ領域を確保するために、SSD内部ではガーベージコレクションと呼ばれる動作が必要となる。
このガーベージコレクション動作では、SSDは、先ず、既に書き込み済の1Mバイトの不揮発性メモリ領域AおよびBから、現時点で有効なデータを読み出し、これらのデータを集めて、RAMへ書き込む。次に、不揮発性メモリ領域AおよびBを消去する。最後に、RAMへ書き込まれたデータをまとめて不揮発性メモリ領域Aへ書き込む。このガーベージコレクション動作によって、1Mバイトの不揮発性メモリ領域Bが消去済メモリ領域となり、この不揮発性メモリ領域Bへ新たなにデータを書き込むことができる。
しかしながら、このガーベージコレクション動作によって、SSD内部では、ある不揮発正メモリ領域から他の不揮発性メモリ領域へのデータの移動が発生し、この際に、ホストコントローラからSSDへ要求されたライトデータサイズよりも、大きなデータサイズの書き込みが行われる。このため、SSDの信頼性や寿命が低下する恐れがある。さらに、例えばNAND型フラッシュメモリを利用したSSDを多数利用してストレージシステムを構築する場合、多数のSSDを制御するストレージコントローラは、各SSDが内部で自立的に行うガーベージコレクション動作やウエアレベリングなどによって増加したライトデータ量を含んだ実際のライトデータ量を把握できない。このため、ストレージシステム(記憶装置システム)としての信頼性や寿命が低下する恐れがある。
本発明は、このようなことを鑑みてなされたものであり、本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
本実施の形態による記憶装置システムは、複数のメモリモジュールと、複数のメモリモジュールを制御する第1制御回路とを備える。複数のメモリモジュールのそれぞれは、複数の不揮発性メモリとこれらを制御する第2制御回路を備える。第2制御回路は、複数の不揮発性メモリに対して実際に書き込みを行った第2書き込みデータ量を把握し、当該第2書き込みデータ量を第1制御回路に適宜通達する。第1制御回路は、複数のメモリモジュールに対して既に発行済みの書き込み命令に伴う第1書き込みデータ量を複数のメモリモジュール毎に把握し、第1書き込みデータ量と第2書き込みデータ量の比率となる第1比率を複数のメモリモジュール毎に計算する。そして、第1制御回路は、当該計算結果を反映して、複数のメモリモジュールの中から次の書き込み命令を発行するメモリモジュールを選択する。
本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、不揮発性メモリを含むメモリモジュールを複数備えた記憶装置システムにおいて、信頼性の向上や長寿命化等が実現可能になる。
本発明の実施の形態1による記憶装置システムにおいて、それを適用した情報処理システムの概略構成例を示すブロック図である。 図1におけるストレージコントローラの詳細な構成例を示すブロック図である。 図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作の一例を示すフローチャートである。 図3の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図3の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の保持内容の一例を示す図である。 図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の他の保持内容の一例を示す図である。 図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の更に他の保持内容の一例を示す図である。 図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の更に他の保持内容の一例を示す図である。 図1におけるストレージモジュールの詳細な構成例を示すブロック図である。 図1のストレージモジュール内で行われるウエアレベリング方法の一例を示すフロー図である。 図1のストレージモジュール内で行われるガーベージコレクションおよびウエアレベリング方法の一例を示すフロー図である。 図1におけるストレージモジュール用の制御回路およびストレージ用の制御回路が行う読み出し動作例を示すフロー図である。 本発明の実施の形態2による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作の一例を示すフローチャートである。 図10の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図10の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 本発明の実施の形態3による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作およびガーベージコレクションの管理動作の一例を示すフローチャートである。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の更に他の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(GETBL)の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(GETBL)の他の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(GETBL)の更に他の保持内容の一例を示す図である。 本発明の実施の形態4による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作および消去動作の一例を示すフローチャートである。 図15の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図15の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 図15の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の更に他の保持内容の一例を示す図である。 本発明の実施の形態5による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作およびガーベージコレクションの管理動作の一例を示すフローチャートである。 図17の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図17の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 図17の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の更に他の保持内容の一例を示す図である。 本発明の実施の形態5による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う読み出し動作の一例を示す説明図である。 本発明の実施の形態2による記憶装置システムにおいて、ストレージモジュールのデータ保持特性の一例を示す説明図である。 図20Aのデータ保持特性をテーブル上で規定した一例を示す図である。 本発明の実施の形態6による記憶装置システムにおいて、図1におけるストレージモジュールの詳細な構成例を示すブロック図である。 図7のフローを概略的に説明する補足図である。 図8のフローを概略的に説明する補足図である。
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明する。特に明示した場合を除き、それらは互いに無関係ではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
(実施の形態1)
《情報処理システムの概要》
図1は、本発明の実施の形態1による記憶装置システムにおいて、それを適用した情報処理システムの概略構成例を示すブロック図である。図1に示す情報処理システムは、情報処理装置SRV0〜SRVmと、ストレージシステム(記憶装置システム)STRGSYSを備える。STRGSYSは、複数のストレージモジュール(メモリモジュール)STG0〜STGn+4と、SRV0〜SRVmからの要求に応じてSTG0〜STGn+4の制御を行うストレージコントローラSTRGCONTとを備えている。情報処理装置SRV0〜SRVmとストレージコントローラSTRGCONTはインターフェース信号H2S_IFにて接続されており、ストレージコントローラSTRGCONTとストレージモジュールSTG0〜STGn+4はインターフェース信号H2D_IFにて接続されている。
インターフェース信号H2S_IFおよびH2D_IFの通信方式には、例えば、シリアルインターフェース信号方式、パラレルインターフェース信号方式、光インターフェース信号方式などを利用できる。代表的なインターフェース信号方式には、SCSI(Small Computer System Interface)、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、FC(Fibre Channel)などがあり、いうまでもなく、全ての方式を利用することができる。
情報処理装置SRV0〜SRVmは、例えばサーバー装置等であり、様々なOS上で、様々なアプリケーションを実行する装置である。SRV0〜SRVmのそれぞれは、複数のプロセッサコアCPUCR0〜CPUCRkを持つプロセッサユニットCPUと、ランダムアクセスメモリRAMと、バックプレーン用のインターフェース回路BIFおよびストレージシステム用のインターフェース回路STIFを備える。BIFは、各SRV0〜SRVm間でバックプレーンBPを介して通信を行うための回路であり、STIFは、ストレージシステム(記憶装置システム)STRGSYSに対して、インターフェース信号H2S_IFを用いて各種要求(ライト要求(WQ)、リード要求(RQ)等)を行うための回路である。
ストレージモジュール(メモリモジュール)STG0〜STGn+4には、情報処理装置SRV0〜SRVmで必要なデータ、アプリケーションおよびOSなどが格納される。STG0〜STGn+4は、特に限定しないが、例えばSSD(Solid State Drive)等に該当するものである。STG0〜STGn+4は、それぞれ同様の構成を備えており、例えばSTG0を代表に説明すると、不揮発性メモリNVM0〜NVM7と、ランダムアクセスメモリRAMstと、これらに対するアクセス等の制御を行うストレージ用の制御回路STCT0を備えている。NVM0〜NVM7には、例えば、NAND型フラッシュメモリ、NOR型フラッシュメモリ、相変化型メモリ、抵抗変化型メモリ、磁気メモリ、強誘電体メモリなどを適用可能である。
情報処理装置SRV0〜SRVmは、例えば、アプリケーションを実行する際に、必要なプログラムやデータのリード要求(RQ)をストレージコントローラSTRGCONTへ発行する。また、SRV0〜SRVmは、自身の実行結果やデータを格納するためにライト要求(書き込み命令)(WQ)をストレージコントローラSTRGCONTへ発行する。リード要求(RQ)には論理アドレス(LAD)、データ読み出し命令(RD)、セクタカウント(SEC)などが含まれ、また、ライト要求(WQ)には論理アドレス(LAD)、データ書込み命令(WRT)、セクタカウント(SEC)および書き込みデータ(WDATA)などが含まれる。
ストレージコントローラSTRGCONTは、キャッシュメモリCM0〜CM3およびランダムアクセスメモリRAM0〜RAM3を含む内部メモリと、ホスト用の制御回路HCTL0,HCTL1と、ストレージモジュール用の制御回路DKCTL0,DKCTL1を備える。加えて、STRGCONTは、ストレージシステム用のインターフェース回路STIF(00,01,…,m0,m1)とストレージモジュール用のインターフェース回路SIFC(00,01,…,n0,n1)を備える。
ホスト用の制御回路HCTL0,HCTL1は、主に、情報処理装置SRV0〜SRVmとの間の通信(例えばSRV0〜SRVmからの各種要求(リード要求(RQ)やライト要求(WQ)等)の受け付けや、SRV0〜SRVmに向けた応答等)を制御する回路である。このHCTL0,HCTL1とSRV0〜SRVmとの間の通信に際し、インターフェース回路STIFは、インターフェース信号H2S_IFの通信方式に応じたプロトコル変換を行う。ストレージモジュール用の制御回路DKCTL0,DKCTL1は、主に、HCTL0,HCTL1によって受け付けられたSRV0〜SRVmからの各種要求に応じて、ストレージモジュールSTG0〜STGn+4に対してアクセス要求等の通信を行う回路である。このアクセス要求等の通信に際し、インターフェース回路SIFCは、インターフェース信号H2D_IFの通信方式に応じたプロトコル変換を行う。
なお、特に限定はしないが、ここでは、ホスト用の制御回路HCTL0,HCTL1は、2系統設けられ、一方(例えばHCTL1)は他方(例えばHCTL0)が故障した際の予備用として備わっている。ストレージモジュール用の制御回路DKCTL0,DKCTL1、インターフェース回路STIF(例えばSTIF00とSTIF01)、インターフェース回路SIFC(例えばSIFC00とSIFC01)も同様に、耐障害性の向上のため、一方は他方の予備用として備わっている。また、特に限定はしないが、ここでは、1個のSIFC(例えばSIFC00)に5個のストレージモジュール(メモリモジュール)(ここではSTG0〜STG4)が接続される構成となっている。この数は、例えば、RAID(Redundant Arrays of Inexpensive Disks)の仕様等(例えばデータを4個のSTGに分割して書き込み、それらのパリティを残りの1個に書き込む等)を考慮して適宜定めることが可能である。
次に、図1の情報処理システムの全体動作について簡単に説明する。ホスト用の制御回路HCTL0,HCTL1は、情報処理装置SRV0〜SRVmからのリード要求(RQ)やライト要求(書き込み命令)(WQ)等をストレージシステム用のインターフェース回路STIF(00,01,…,m0,m1)を介して受け付ける。例えば、リード要求(RQ)を受け付けた場合、HCTL0,HCTL1は、先ず、リード要求(RQ)に含まれる論理アドレス(LAD)のデータ(RDATA)が内部に備わったキャッシュメモリCM0〜CM3に格納されているかをチェックする。
ここで、キャッシュメモリCM0〜CM3にデータ(RDATA)が格納されていれば、つまりヒットの場合、ホスト用の制御回路HCTL0,HCTL1は、CM0〜CM3からデータ(RDATA)を読み出し、インターフェース回路STIF(インターフェース信号H2S_IF)を通じて情報処理装置SRV0〜SRVmへ転送する。一方、CM0〜CM3にデータ(RDATA)が格納されていなければ、つまりミスヒットの場合、HCTL0,HCTL1は、ストレージモジュール用の制御回路DKCTL0,DKCTL1に通知を行う。これを受けて、DKCTL0,DKCTL1は、インターフェース回路SIFC(00,01,…,n0,n1)(インターフェース信号H2D_IF)を介してストレージモジュール(メモリモジュール)STG0〜STGn+4にリードアクセス要求(RREQ)を発行する。その後、DKCTL0,DKCTL1は、STG0〜STGn+4から読み出されたデータ(RDATA)をCM0〜CM3へ転送し、さらに、HCTL0,HCTL1およびSTIF(H2S_IF)を通じてSRV0〜SRVmへ転送する。
また、ホスト用の制御回路HCTL0,HCTL1は、情報処理装置SRV0〜SRVmからのライト要求(WQ)を受け付けた場合、先ず、ライト要求(WQ)に含まれる論理アドレス(LAD)が、キャッシュメモリCM0〜CM3にエントリされている論理アドレス(LAD)の中のいずれかと一致するかを判定する。ここで、一致した場合、つまりヒットの場合、HCTL0,HCTL1は、ライト要求(WQ)に含まれるライトデータ(WDATA)をCM0〜CM3へ書き込む。一方、不一致の場合、つまりミスヒットの場合、HCTL0,HCTL1は、例えばCM0〜CM3の中で最も古く利用された論理アドレス(LAD)に対するライトデータ(WDT)を、いったんランダムアクセスメモリRAM0〜RAM3へ転送し、次いで、ライトデータ(WDATA)をCM0〜CM3へ書き込む。その後、HCTL0,HCTL1からDKCTL0,DKCTL1に対して通知が行われ、これを受けて、DKCTL0,DKCTL1は、ストレージモジュール(メモリモジュール)STG0〜STGn+4にライトアクセス要求(書き込み命令)(WREQ)を発行する。すなわち、当該ライトアクセス要求(WREQ)によって、RAM0〜RAM3に転送されたライトデータ(WDT)を、インターフェース回路SIFC(00,01,…,n0,n1)(インターフェース信号H2D_IF)を介してSTG0〜STGn+4へ書き込む(ライトバックする)。
図2は、図1におけるストレージコントローラSTRGCONTの詳細な構成例を示すブロック図である。図2に示すストレージコントローラSTRGCONTでは、図1に示したホスト用の制御回路HCTL0,HCTL1およびストレージモジュール用の制御回路DKCTL0,DKCTL1に関する詳細な構成例が示されている。HCTL0,HCTL1のそれぞれは、キャッシュ制御回路CMCTL、リード制御回路HRDCTL、ライト制御回路HWTCTL、および診断回路HDIAGを備える。
キャッシュ制御回路CMCTLは、キャッシュメモリCM0〜CM3のヒット・ミスヒットの判定や、CM0〜CM3のアクセス制御などを行う。リード制御回路HRDCTLは、情報処理装置(ホスト)SRV0〜SRVmからのリード要求(RQ)を受け付けた際に、図1で述べたようなリード要求(RQ)に伴う各種処理をCMCTLと共に行う。ライト制御回路HWTCTLは、SRV0〜SRVmからのライト要求(WQ)を受け付けた際に、図1で述べたようなライト要求(WQ)に伴う各種処理をCMCTLと共に行う。診断回路HDIAGは、図1で述べた耐障害性の向上のため、自身の各種機能が正常か否かをテストする機能を備える。例えば、制御回路HCTL0内のHDIAGにおいて異常が検出された際、当該HDIAGは制御回路HCTL1に対して通知を行い、これによって正規用のHCTL0が非活性化され、代わりに予備用のHCTL1が活性化される。
制御回路DKCTL0,DKCTL1のそれぞれは、ライト制御回路WTCTL、リード制御回路RDCTL、データ消去制御回路ERSCTL、ガーベージコレクション制御回路GCCTL、診断回路DIAG、および3個のテーブルMGTBL,STGTBL,GETBLを備えている。DIAGは、HCTL0,HCTL1内の診断回路HDIAGの場合と同様に、自己の内部機能をテストする機能を備え、その結果によってDKCTL0とDKCTL1の活性化・非活性化が切り替えられる。各種テーブルMGTBL,STGTBL,GETBLは、例えばランダムアクセスメモリRAM0〜RAM3内の記憶情報が実体となっており、制御回路DKCTL0,DKCTL1は、当該各種テーブルの管理を行う。
テーブルMGTBLでは、詳細は図4を始めとして以降にて適宜説明するが、各ストレージモジュール(メモリモジュール)毎の各種情報(Wstg,Wh2d,ntW,WAF,eWd,Ret,Esz等)が管理される。Wstgは、各ストレージモジュール(メモリモジュール)STG0〜STGn+4が自身の不揮発性メモリNVM0〜NVM7へ実際に書き込んだデータサイズを示す。Wh2dは、制御回路DKCTL0,DKCTL1が各ストレージモジュールSTG0〜STGn+4に対して既にライトアクセス要求(書き込み命令)(WREQ)を発行したデータサイズを示す。すなわち、データサイズWh2dは、前述したように、キャッシュメモリCM0〜CM3のミスヒット時にランダムアクセスメモリRAM0〜RAM3へ転送されたライトデータ(WDT)のサイズに等しく、結果的に、情報処理装置SRV0〜SRVmからのライト要求(WQ)に含まれるライトデータ(WDATA)のサイズに等しい。
ntWは、次のライトアクセス要求(書き込み命令)(WREQ)に含まれるライトデータ(WDT)のデータサイズを示す。WAFは、データサイズ(Wh2d)とデータサイズ(Wstg)のライトデータサイズ比率(=Wstg/Wh2d)を示す。eWdは、予想ライトデータサイズ(=Wstg+ntWxWAF)を示す。Retは、各ストレージモジュールSTG0〜STGn+4のデータリテンション時間を示す。Eszは、各ストレージモジュールSTG0〜STGn+4に含まれる消去状態の物理ブロック数を示す。
テーブルSTGTBLでは、詳細は図5等で説明するが、論理アドレス(LAD)をストレージモジュール(メモリモジュール)STG0〜STGn+4内のどの番号に割り当てたかが管理される。テーブルGETBLでは、詳細は図14等で説明するが、各ストレージモジュールSTG0〜STGn+4がガーベージコレクション動作中かデータ消去動作中かといったステータスが管理される。また、詳細は後述するが、ライト制御回路WTCTLは、これらの各テーブルを適宜利用し、STG0〜STGn+4に対してライトアクセス要求(書き込み命令)(WREQ)を発行する。同様に、各テーブルを利用して、リード制御回路RDCTLはリードアクセス要求(RREQ)を発行し、データ消去制御回路ERSCTLは消去アクセス要求を発行し、ガーベージコレクション制御回路GCCTLはガーベージコレクション要求を発行する。
図1および図2のような構成において、各ストレージモジュール(メモリモジュール)STG0〜STGn+4に利用されている不揮発性メモリNVM0〜NVM7には書き換え回数の制限があり、特定の不揮発性メモリ内の特定のアドレスへ書き込みが集中するとSTG0〜STGn+4の寿命が短くなってしまう。一方、各ストレージモジュールSTG0〜STGn+4において、ストレージ用の制御回路STCTは、NVM0〜NVM7の書き込み回数をあるデータサイズ単位で管理しており、この書き込み回数を平準化するようにNVM0〜NVM7に書き込みを行っている。この書き込み回数を平準化するために、制御回路STCTは、例えば、引用文献1等にも記載されているようなスタティックウエアレベリングと呼ばれる方式を用いて、ある不揮発性メモリから他の不揮発性メモリへデータを移動させる場合がある。この場合、不揮発性メモリでは、制御回路DKCTL0,DKCTL1から要求されたライトデータ(WDT)のサイズよりも大きなサイズが書き込まれることになる。
また、NAND型フラッシュメモリに代表される不揮発性メモリは、あるメモリ領域へデータを書き込むためには、予め、そのメモリ領域のデータを消去する必要があり、この消去時の最小データ単位は例えば1Mバイトで、書込み時の最小データ単位は例えば4Kバイトである。つまり、4Kバイトのデータを書くために、1Mバイトの消去済メモリ領域を確保する必要がある。この1Mバイトの消去済メモリ領域を確保するために、制御回路STCTは、ガーベージコレクション動作を行う場合がある。このガーベージコレクション動作の際に、STCTは、例えば、先ず、既に書き込み済の1Mバイトの不揮発性メモリ領域「A」および「B」から、現時点で有効なデータを読みだし、これらのデータを集めて、ランダムアクセスメモリRAMstへ書き込む。次に、不揮発性メモリ領域「A」および「B」を消去する。最後に、RAMstへ書き込まれたデータをまとめて不揮発性メモリ領域「A」へ書き込む。これによって、1Mバイトの不揮発性メモリ領域「B」が消去済メモリ領域となり、この不揮発性メモリ領域「B」へ新たなデータを書き込むことが可能になる。ただし、この場合、ある不揮発正メモリ領域から他の不揮発性メモリ領域へデータの移動が発生するため、不揮発性メモリでは、制御回路DKCTL0,DKCTL1から要求されたライトデータ(WDT)のサイズよりも大きなサイズが書き込まれることになる。
さらに、RAID等に代表されるように、各ストレージモジュールSTG0〜STGn+4には、制御回路DKCTL0,DKCTL1から要求されたライトデータ(WDT)と共に、当該ライトデータに対して生成されたパリティデータ等のエラー検出・訂正符号が書き込まれる場合がある。この場合においても、STG0〜STGn+4内の不揮発性メモリでは、制御回路DKCTL0,DKCTL1から要求されたライトデータ(WDT)のサイズよりも大きなサイズが書き込まれることになる。
このように、各ストレージモジュール(メモリモジュール)STG0〜STGn+4内において、不揮発性メモリNVM0〜NVM7に実際に書き込まれるデータサイズWstgは、制御回路DKCTL0,DKCTL1がSTG0〜STGn+4へ要求したライトデータ(WDT)のサイズ(すなわちデータサイズWh2d)より大きくなり得る。この際に、ライトアクセス要求(書き込み命令)(WREQ)に伴うデータサイズWh2dに対して実際に書き込まれるデータサイズWstgがどの程度増大するかは、例えばライト要求(WQ)(ライトアクセス要求(WREQ))に伴うアドレスの局所性等に応じて変化する。ここで、当該アドレスは、STG0〜STGn+4のいずれかに対して適宜割り当てられるため、このデータサイズWh2dに対してデータサイズWstgがどの程度増大するかは、STG0〜STGn+4同士の間で大きく異なる場合がある。
そこで、詳細は後述するが、ストレージコントローラSTRGCONTは、現在の処理対象であるライトアクセス要求(WREQ)におけるライトデータ量を基に実際に書き込まれるライトデータ量を予測し、この予測ライトデータ量が少ないストレージモジュールを選択し、そこへ当該ライトアクセス要求(WREQ)を発行する機能を備える。言い換えれば、ストレージモジュール間でダイナミックウエアレベリングを行う機能を備える。これによって、各ストレージモジュール内で書き換え回数が平準化されるのみならず、各ストレージモジュール間でも書き換え回数が平準化され、図1のストレージモジュール(メモリモジュール)STG0〜STGn+4全体として寿命の向上が図れる。なお、ダイナミックウエアレベリングとは、既に書き込まれたデータを適宜移動することで平準化(ウエアレベリング)を行う所謂スタティックウエアレベリングと異なり、データを書き込む際にその書き込み先を適宜選択することで平準化を行う方式である。
《ストレージモジュール間ウエアレベリング》
以下、説明を分かり易くするため、図1において4個のストレージモジュール(メモリモジュール)STG0〜STG3を備える場合を例とし、ストレージモジュール用の制御回路DKCTL0が行う書き込み動作について図3〜図5を用いて説明する。図3は、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作の一例を示すフローチャートである。図4Aおよび図4Bは、図3の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。図5A、図5B、図5Cおよび図5Dは、図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の保持内容の一例を示す図である。
図4Aおよび図4Bには、制御回路DKCTL0とストレージモジュールSTG0〜STG3の間で行われる動作と、この動作に伴い、DKCTL0内のテーブルMGTBLの値がどのように遷移するかが示されている。MGTBL内には、データサイズntWと、各ストレージモジュールSTG0〜STG3毎の、データサイズWh2d、データサイズWstg、ライトデータサイズ比率WAF(=Wstg/Wh2d)、および予想ライトデータサイズeWd(=Wstg+ntWxWAF)とが保持されている。図2で述べたように、ntWは、現在の処理対象となっているライトアクセス要求(書き込み命令)(WREQ)に含まれるライトデータ(WDT)のデータサイズである。Wh2dは制御回路DKCTL0が所定のストレージモジュールに対して既に発行したライトアクセス要求(WREQ)に伴うライトデータ(WDT)のデータサイズである。Wstgは、各ストレージモジュールSTG0〜STG3が、実際に自身の不揮発性メモリに書き込みを行ったデータサイズである。
データサイズWh2dに関しては、制御回路DKCTL0自身が各ストレージモジュールSTG0〜STG3に対して実際に送信しているライトデータ(WDT)のサイズ(ホストからのライト要求(WQ)に含まれるライトデータ(WDATA)のサイズに等しい)であるため、DKCTL0自身によって認識することができる。データサイズWstgに関しては、図1のストレージモジュールSTG内の制御回路STCTが不揮発性メモリNVM0〜NVM7に対して実際に書き込みを行ったデータのサイズであるため、STCTによって認識することができ、DKCTL0は、当該データサイズを、STCTから取得することで認識することができる。Wh2d,Wstgの値は、例えばストレージモジュールを初めて使用した時からその寿命が尽きるまで累積的に更新される。ここで、STCTは、例えば、図8で後述するようなガーベージコレクション動作(+ウエアレベリング動作)を行った際や、あるいは、スタティックウエアレベリング動作を行った際などで、DKCTL0からのライトアクセス要求(書き込み命令)(WREQ)とは関係なくWstgの値を増大させていくことになる。
スタティックウエアレベリング動作は、特に限定しないが、例えば、データが有効な物理アドレスにおける書き込み回数と、データが無効な物理アドレスにおける書き込み回数との間の差分を低減する為のものなどが挙げられる。すなわち、データが有効な物理アドレスは、当該物理アドレスを対象としたライト命令がその後に生じない限り有効であり続け、その結果、当該物理アドレスにおける書き込み回数は増大しないが、データが無効な物理アドレスは、消去されたのちに書き込み先の候補となるため当該物理アドレスにおける書き込み回数は増大していく。その結果、有効な物理アドレスの書き込み回数と、無効な物理アドレスの書き込み回数との間で差分が増大していく場合がある。そこで、スタティックウエアレベリング動作を用いて、例えば、定期的に、有効かつ書き込み回数が少ない物理アドレスのデータを、無効かつ書き込み回数が多い物理アドレスに移動し、当該データ移動元の有効かつ書き込み回数が少ない物理アドレスを無効とし、さらに、当該データの移動先の無効かつ書き込み回数が多い物理アドレスを有効にすれば、全体として書き込み回数を平準化することが可能になる。
図5A、図5B、図5Cおよび図5Dに示すテーブルSTGTBLには、ライトアクセス要求(書き込み命令)(WREQ)に含まれる論理アドレス(LAD)と、当該LADのデータが格納されているストレージモジュールSTG0〜STG3の番号(STG No)と、当該LADのデータが有効か無効かを示す有効情報VLDが格納される。ライトアクセス要求(WREQ)に含まれる論理アドレス(LAD)は、情報処理装置(ホスト)SRV0〜SRVmからのライト要求(書き込み命令)(WQ)に含まれる論理アドレスに等しいか、あるいはライト要求(WQ)に含まれる論理アドレスから一義的に定められる。有効情報VLDが“1”であれば、そのLADのデータは有効を意味し、“0”であれば無効を意味する。例えば、図5Aを例とすると、論理アドレスLADの「0」に対応するデータは、有効であり(有効情報VLD=“1”)、ストレージモジュールの番号「0」(すなわちSTG0)に格納されていることを示す。また、論理アドレスLADの「1」に対応するデータは、有効であり(有効情報VLD=“1”)、ストレージモジュールの番号「1」(すなわちSTG1)に格納されていることを示す。
ここで、図3のフローチャートについて説明する。まず、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0〜STG3へデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0〜STG3は、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する(図3:Step1、図4A)。Wstg0(40)を例として、ここでは、括弧内の数字「40」が必要な情報(ここではデータサイズ)を表している。
続いて、制御回路DKCTL0は、これらデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する(図3:Step2、図4A)。ここで、前提として、DKCTL0は、現在、データサイズntW1(ここでは10とする)のライトデータ(WDT[1])と論理アドレス(ここでは123とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[1])を処理対象としているものとする。この場合、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0〜STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW1を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図3:Step3、図4A)。図4Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
次に、制御回路DKCTL0内のライト制御回路WTCTLは、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG2)を選択する(図3:Step4、図4A)。次いで、もし、ストレージモジュールSTG0〜STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2〜Step4を実行する。一方、STG0〜STG3からのWstgの通達が無ければ、Step6へ進む(図3:Step5)。
Step6において、制御回路DKCTL0内のライト制御回路WTCTLは、Step4で選択したストレージモジュールSTG2へ、データサイズntW1(=10)のライトデータ(WDT[1])と論理アドレスLAD(=123)を含んだライトアクセス要求(書き込み命令)(WREQ[1])を発行する(図4A)。次いで、WTCTLは、当該LAD(=123)とSTG2の対応関係に基づいて、テーブルSTGTBLを更新し(図3:Step7、図5A)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図3:Step7、図4B)。すなわち、図5AのSTGTBL内のLAD(=123)において、ストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、図4BのMGTBL内のSTG2において、Wh2dが「5」から「15」に更新される。
その後、ストレージモジュールSTG2は、ライトデータ(WDT[1])の書き込みを完了すると、制御回路DKCTL0へデータサイズWstg(Wstg2(30))を通達し(図3:Step8、図4B)、Step2へ戻る。この例では、STG2において、例えば、データサイズntW1(=10)のライトデータ(WDT[1])を書き込む前の期間で、ガーベージコレクション動作やスタティックウエアレベリング動作等によりデータサイズ「20」の書き込みが行われており、これによってWstg2として計「30」の値が通達されている。
続いて、制御回路DKCTL0のライト制御回路WTCTLは、通達されたデータサイズWstg(Wstg2(30))をテーブルMGTBLへ設定し更新する(図3:Step2、図4B)。ここで、前提として、DKCTL0は、現在、データサイズntW2(ここでは10とする)のライトデータ(WDT[2])と論理アドレス(ここでは535とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[2])を処理対象としているものとする。この場合、WTCTLは、MGTBL内のデータサイズWstgおよびWh2dを利用し、各ストレージモジュールSTG0〜STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW2を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図3:Step3、図4B)。図4Bの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=50、eWd3=40となる。
次に、制御回路DKCTL0内のライト制御回路WTCTLは、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG3)を選択する(図3:Step4、図4B)。次いで、もし、ストレージモジュールSTG0〜STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2〜Step4を実行する。一方、STG0〜STG3からのWstgの通達が無ければ、Step6へ進む(図3:Step5)。
Step6において、制御回路DKCTL0内のライト制御回路WTCTLは、Step4で選択したストレージモジュールSTG3へ、データサイズntW2(=10)のライトデータ(WDT[2])と論理アドレスLAD(=535)を含んだライトアクセス要求(書き込み命令)(WREQ[2])を発行する(図4B)。次いで、WTCTLは、当該LAD(=535)とSTG3の対応関係に基づいて、テーブルSTGTBLを更新し(図3:Step7、図5B)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図3:Step7)。すなわち、図5BのSTGTBL内のLAD(=535)において、ストレージモジュールの番号(STG No)が「3」に更新され、有効情報VLDが“1”に更新される。また、図示は省略するが、図4BのMGTBL内のSTG3において、Wh2dが「10」から「20」に更新される。
そして、ストレージモジュールSTG3がライトデータ(WDT[2])の書き込みを完了すると、STG3は制御回路DKCTL0へデータサイズWstgを通達し(図3:Step8)、Step2へ進み、以降同様の処理が繰り返される。なお、Step6において、ライトアクセス要求(WREQ)が発行されたストレージモジュール(ここではSTG2,STG3)では、当該ライトアクセス要求(WREQ)に含まれる論理アドレスLADを不揮発性メモリNVM0〜NVM7の物理アドレス(PAD)へ変換し、この変換された物理アドレス(PAD)へライトデータを書き込む。
ここで、図3のフローチャートでは、Step1(例えば電源投入直後)において、制御回路DKCTL0がストレージモジュールSTG0〜STG3に対してデータサイズWstg,Wh2dの通達要求を行うことでWstg,Wh2dの値を取得し、以降は、当該通達要求に依らずにWstg,Wh2dの値が随時更新されるような例を示した。すなわち、例えば、Wh2dに関してはDKCTL0自身がその値を随時把握しながら更新し(Step7)、その一方で、DKCTL0は、例えば電源遮断時等の際に、Wh2dの値をSTG0〜STG3に退避し、次の電源投入時にそれを読み出す(Step1)ような場合を想定した。また、例えば、Wstgに関しては、STG0〜STG3がその値を随時更新すると共に、ライトアクセス要求(WREQ)に伴う書き込み動作の完了時に自動的にWstgの値をDKCTL0に向けて送信し(Step8)、DKCTL0は、この送信された値によってWstgの値を把握する(Step2)ような場合を想定した。この場合、実際には、STG0〜STG3は、内部のバッファにより複数のライトアクセス要求(WREQ)をストックすることができ、これに伴い例えばWstgの値を連続して送信するようなことがあるため、ここではStep5を設けている。
ただし、勿論、このようなフローチャートに限定されるものではなく、適宜変更することが可能である。例えば、制御回路DKCTL0はライトアクセス要求(WREQ)を発行する直前にSTG0〜STG3に対してWstgの通達要求を出し、STG0〜STG3は当該通達要求を受けた際のみでWstgの値を返信し、これを受けて、DKCTL0はWREQを発行するストレージモジュールを選択するようなフローとすることも可能である。また、例えば、STG0〜STG3は、ライトアクセス要求(WREQ)に伴う書き込みの完了時に限らず、ガーベージコレクション動作等に伴う書き込みの完了時等でもWstgの値をDKCTL0に向けて送信し(すなわちWstgの値を更新する毎に送信し)、これを受けてDKCTL0がテーブルMGTBLの値を逐次更新するようなフローとすることも可能である。いずれにしても、DKCTL0が時系列的に変化するWstgおよびWh2dの値を把握し、この情報(すなわちWAF(=Wstg/Wh2d))に基づいてライトアクセス要求(WREQ)を発行するストレージモジュールを選択するフローであればよく、望ましくは、より最新の実状を反映したWAFに基づいて選択するフローであればよい。
《ストレージモジュール(メモリモジュール)の構成》
図6は、図1におけるストレージモジュールの詳細な構成例を示すブロック図である。当該ストレージモジュールSTGは、図1におけるストレージモジュールSTG0〜STGn+4として利用される。図6に示すストレージモジュールSTGは、不揮発性メモリNVM0〜NVM7と、ランダムアクセスメモリRAMstと、NVM0〜NVM7およびRAMstを制御するストレージ用の制御回路STCT0と、バッテリバックアップ装置BBUを備える。NVM0〜NVM7は、例えば同じ構成および性能を備えている。RAMstは、特に限定しないが、例えばDRAM等である。BBUは、内部に大きな容量等を備え、例えば、予期せぬ電源遮断時等において、RAMst内のデータをNVM0〜NVM7に退避するための電源を一定期間確保するための装置である。
電源投入直後に、ストレージモジュールSTGは、内部の不揮発性メモリNVM0〜NVM7と、ランダムアクセスメモリRAMstと、制御回路STCT0の初期化の動作(所謂パワーオンリセット)を行う。さらに、STGは、制御回路DKCTL0からのリセット信号を受けた際にも、内部のNVM0〜NVM7、RAMst、およびSTCT0の初期化を行う。STCT0は、インターフェース回路HOST_IFと、バッファBUF0〜BUF3と、調停回路ARBと、情報処理回路MNGERと、メモリ制御回路RAMC、NVCT0〜NVCT7を備える。メモリ制御回路RAMCは、ランダムアクセスメモリRAMstを直接制御し、メモリ制御回路NVCT0〜NVCT7は、不揮発性メモリNVM0〜NVM7をそれぞれ直接制御する。
ランダムアクセスメモリRAMstには、アドレス変換テーブル(LPTBL)、消去回数テーブル(ERSTBL)、物理ブロックテーブル(PBKTBL)、および物理アドレステーブル(PADTBL)と、その他の各種情報が保持される。アドレス変換テーブル(LPTBL)では、論理アドレス(LAD)とNVM0〜NVM7の物理アドレス(PAD)との対応関係が示される。消去回数テーブル(ERSTBL)では、物理ブロック毎の消去回数が示される。物理ブロックテーブル(PBKTBL)では、物理ブロックが、消去状態であるか、一部書き込み済であるか、全部書き込み済であるかといった各物理ブロックの状態や、各物理ブロック毎の無効な物理アドレスの総数(INVP)が示される。物理アドレステーブル(PADTBL)では、各物理アドレスのデータが有効であるか無効であるか、又は各物理アドレスが消去状態であるかが示される。ここでは、物理ブロックとは、消去の単位領域を表し、各物理ブロックは、書き込みの単位領域となる複数の物理アドレスによって構成される。また、ランダムアクセスメモリRAMst内のその他の各種情報の中には、ストレージモジュールSTG内の消去状態の物理ブロック数(Esz)や、前述したデータサイズWstg,Wh2d等が含まれる。
《ストレージモジュール内のウエアレベリング》
図7は、図1のストレージモジュール内で行われるウエアレベリング方法の一例を示すフロー図である。図7には、図1の制御回路DKCTL0からストレージモジュールSTG0〜STGn+4へライトアクセス要求(書き込み命令)(WREQ)が発行された際に、STG0〜STGn+4内で行われる書き込み処理手順の一例と、当該書き込みの際に行われるウエアレベリング(すなわちダイナミックウエアレベリング)方法の一例が示されている。また、図7のフローは、主に図6の情報処理回路MNGERによって実行される。MNGERは、特に限定しないが512バイトのメインデータと16バイトの冗長データを単位として1個の物理アドレス(PAD)を割り当て、不揮発性メモリNVM0〜NVM7の当該物理アドレス(PAD)へ書き込みを行っている。
図22は、図7のフローを概略的に説明する補足図である。図7のフローを用いると、概略的には図22に示すような動作が行われる。図22の例では、物理ブロックPBK[0]が3個の物理アドレスPAD[0]〜PAD[2]で構成され、同様に、物理ブロックPBK[1]およびPBK[2]が、それぞれ3個の物理アドレスPAD[3]〜PAD[5]およびPAD[6]〜PAD[8]で構成されるものとする。PBK[0],PBK[1],PBK[2]の消去回数は、それぞれ、10,9,8とし、PBK[1],PBK[2]は、消去状態(E)であるものとする。また、PAD[0],PAD[1],PAD[2]には、それぞれ、論理アドレスLAD[0],LAD[1],LAD[2]のライトデータWDT0,WDT1,WDT2が書き込まれ、PAD[0],PAD[1],PAD[2](WDT0,WDT1,WDT2)は全て有効“1”であるものとする。
このような状態(t=1)から、例えば、t=2において、論理アドレスLAD[0]およびライトデータWDT3を含んだライトアクセス要求(書き込み命令)(WREQ[3])が入力されたものとする。この場合、情報処理回路MNGERは、まず、LAD[0]に対応する物理アドレスPAD[0]を有効“1”から無効“0”に変更し、当該LAD[0]のWDT3を書き込むための新たな物理アドレスを決定する。この際には、消去状態かあるいは一部書き込みが行われている物理ブロックを対象として、その中でも消去回数値が最も小さい物理ブロック(ここではPBK[2])を選択する。そして、当該物理ブロック(PBK[2])内で消去状態となっている最初の物理アドレス(ここではPAD[6])に対してWDT3の書き込みを行い、当該PAD[6]を有効“1”とする。その後、例えば、t=3において、LAD[0]およびライトデータWDT4を含んだライトアクセス要求(WREQ[4])が入力された場合、MNGERは、同様にして、PAD[6]を無効“0”とし、一部書き込みが行われていると共に消去回数値が最も小さい物理ブロック(ここではPBK[2])を選択する。そして、当該物理ブロック(PBK[2])内で消去状態となっている最初の物理アドレス(ここではPAD[7])に対してWDT4の書き込みを行い、当該PAD[7]を有効“1”とする。
このような動作は図7のフローを用いて行われる。図7では、まず、制御回路DKCTL0から論理アドレス値(例えばLAD[0])、データ書き込み命令(WRT)、セクタカウント値(例えばSEC=1)、および512バイトのライトデータ(例えばWDT3)が含まれるライトアクセス要求(書き込み命令)(WREQ[3])が制御回路STCT0へ入力される。図6の制御回路HOST_IFは、ライトアクセス要求(WREQ[3])に埋め込まれているクロック情報を取り出し、シリアルデータ化されたライトアクセス要求(WREQ[3])をパラレルデータに変換し、バッファBUF0および情報処理回路MNGERへ転送する(Step1)。
次に、情報処理回路MNGERは、論理アドレス値(LAD[0])、データ書き込み命令(WRT)及びセクタカウント値(SEC=1)を解読し、ランダムアクセスメモリRAMst内のアドレス変換テーブル(LPTBL)を検索する。これにより、情報処理回路MNGERは、論理アドレス値(LAD[0])の番地に格納されている現在の物理アドレス値(例えばPAD[0])と、この物理アドレス値(PAD[0])に対応した有効フラグPVLDの値を読み出す(Step2)。さらに、この有効フラグPVLD値が“1(有効)”であれば、これを“0(無効)”とし、アドレス変換テーブル(LPTBL)および物理アドレステーブル(PADTBL)を更新する。(Step3)。
続いて、情報処理回路MNGERは、ランダムアクセスメモリRAMst内の物理ブロックテーブル(PBKTBL)から消去状態又は一部書き込み済の物理ブロックを抽出し、更に、当該抽出した物理ブロックの中で消去回数値が最も小さい物理ブロック(例えばPBK[2])をRAMst内の消去回数テーブル(ERSTBL)を用いて選択する。そして、MNGERは、当該選択された物理ブロックの中で、いまだデータが書き込まれていない(消去状態の)物理アドレスの中で、最も小さな物理アドレス(例えばPAD[6])を、物理アドレステーブル(PADTBL)を用いて選択する(Step4)。
次に、情報処理回路MNGERは、512バイトのライトデータ(WDT3)を物理アドレス(PAD[6])へ書き込む(Step5)。続いて、MNGERは、アドレス変換テーブル(LPTBL)および物理アドレステーブル(PADTBL)を更新する(Step6)。更に、MNGERは、データサイズWstg(およびWh2d)を再計算し、ランダムアクセスメモリRAMstへ格納する(Step7)。最後に、MNGERは、最新のデータサイズWstgの値を制御回路HOST_IFおよびインターフェース信号H2D_IFを通じて、制御回路DKCTL0へ送信する(Step8)。
以上のように、ストレージモジュール(メモリモジュール)STG内部においては、消去回数値の小さな物理アドレスから順にデータの書き込みが行われることで、平準化がなされる。したがって、図3等で述べたようなストレージモジュールSTG間での平準化と併用することで、図1のストレージシステム(記憶装置システム)STRGSYS全体としての更なる平準化が実現可能となる。
《ストレージモジュール内のガーベージコレクション(+ウエアレベリング)》
図8は、図1のストレージモジュール内で行われるガーベージコレクションおよびウエアレベリング方法の一例を示すフロー図である。図23は、図8のフローを概略的に説明する補足図である。図8のフローは、主に図6の情報処理回路MNGERによって実行される。不揮発性メモリNVM0〜NVM7へデータを書き込み続けると、消去状態の物理アドレス数(物理ブロック数)が減少してしまう。この消去状態の物理アドレス数(物理ブロック数)が0になると、ストレージモジュールSTGはこれ以上書き込みを行えなくなってしまう。そこで、消去状態の物理アドレス数(物理ブロック数)を増やすためのガーベージコレクション動作が必要とされる。そして、このガーベージコレクション動作の際には、併せてウエアレベリング動作を行うことが望ましい。そこで、図8のフローを実行することが有益となる。
図8において、図6の情報処理回路MNGERは、まず、ランダムアクセスメモリRAMst内に格納される消去状態の物理ブロック数Eszを読み出す(Step1)。次に、予め定めた消去状態の物理ブロック数の閾値DERCthとEszとを比較し(Step2)、Esz≧DERCthの場合はStep1へ進み、Esz<DERCthの場合はStep3へ進む。Step3では、MNGERは、RAMst内に格納されている消去回数テーブル(ERSTBL)と、物理ブロックテーブル(PBKTBL)と、物理アドレステーブル(PADTBL)を読み出す。ERSTBLにより各物理ブロック毎の消去回数が判明し、PBKTBLにより各物理ブロックの状態(消去状態、一部書き込み済み、全部書き込み済み)や各物理ブロック毎の無効な物理アドレス数(INVP)が判明し、PADTBLにより各物理アドレスが有効か無効かが判明する。
次に、情報処理回路MNGERは、全部書き込み済の物理ブロックを対象に、消去回数値の小さい順に、無効な物理アドレス数(INVP)の総和が物理ブロックのサイズ以上になるまで、全部書き込み済の物理ブロックを順次選択する(Step4)。ここで、例えば、図23のような場合を想定する。図23の例では、物理ブロックPBK[0]が3個の物理アドレスPAD[0]〜PAD[2]で構成され、同様に、物理ブロックPBK[1]、PBK[2]およびPBK[3]が、それぞれ3個の物理アドレスPAD[3]〜PAD[5]、PAD[6]〜PAD[8]およびPAD[9]〜PAD[11]で構成されるものとする。PBK[0],PBK[1],PBK[2],PBK[3]の消去回数は、それぞれ、7,8,9,10とし、PBK[3]は、消去状態(E)であるものとする。また、PAD[0]〜PAD[8]には、それぞれ、ライトデータWDT0〜WDT8が書き込まれ、この内のPAD[0],PAD[3],PAD[6](WDT0,WDT3,WDT6)が無効“0”であるものとする。
このような状態(t=1)において、例えば、消去状態の物理ブロック数が2以上必要であった場合(図8:Step2)、ガーベージコレクション動作が実行される。図23の例では、図8のStep4により、物理ブロックPBK[0],PBK[1],PBK[2]が選択されることになる。続いて、図8のStep5において、情報処理回路MNGERは、当該選択された物理ブロック内の有効な物理アドレスのデータを読み出し、一旦ランダムアクセスメモリRAMstへ格納する。図23の例では、ライトデータWDT1,WDT2,WDT4,WDT5,WDT7,WDT8がRAMstへ格納される。その後、MNGERは、当該選択された物理ブロックを消去する(図8:Step6、図23のt=2)。
その後、図8のStep7において、情報処理回路MNGERは、ランダムアクセスメモリRAMstへ一旦格納していたライトデータを不揮発性メモリNVM0〜NVM7内の消去状態の物理ブロックに書き戻す。これによってガーベージコレクション動作が実現される。更に、書き戻しの際には、消去状態の物理ブロックの中で、消去回数値の最も小さな物理ブロックから順に選択して書き戻しが行われる。これによってガーベージコレクション動作と並行してウエアレベリング動作が実現される。図23の例では、t=3に示すように、消去回数値が小さい順に2個の物理ブロックPBK[0],PBK[1]が選択され、当該物理ブロックにRAMst内のライトデータWDT1,WDT2,WDT4,WDT5,WDT7,WDT8が書き戻される。その結果、物理ブロックPBK[3]に加えて更に1個の消去状態の物理ブロック(ここではPBK[2])が生成されることになる。
次に、図8のStep8において、情報処理回路MNGERは、ランダムアクセスメモリRAMst内のアドレス変換テーブル(LPTBL)、消去回数テーブル(ERSTBL)、物理ブロックテーブル(PBKTBL)、および物理アドレステーブル(PADTBL)と、消去状態の物理ブロック数Eszを更新する。更に、ストレージモジュールSTGが実際に不揮発性メモリNVM0〜NVM7へライトしたデータサイズとなるRAMst内のデータサイズWstgを更新する。最後に、MNGERは、最新のデータサイズWstgをインターフェース回路HOST_IFおよびインターフェース信号H2D_IFを通じて、制御回路DKCTL0へ転送する(Step9)。
以上のようなガーベージコレクション動作およびウエアレベリング動作(言うなればスタティックウエアレベリング動作)を行うことで図7に示したようなダイナミックウエアレベリング動作と共にストレージモジュール(メモリモジュール)STG内での消去回数の平準化が実現可能となる。ただし、これによってストレージモジュールSTG間で消去回数のばらつきが生じる場合が有るが、これは、図3等に示したような動作によって平準化することが可能となり、その結果、図1のストレージシステム(記憶装置システム)STRGSYS全体としての更なる平準化が実現可能となる。
《読み出し方法》
前述したように、ストレージコントローラSTRGCONT内のホスト用の制御回路HCTL0は、情報処理装置(ホスト)SRV0〜SRVmからのリード要求(RQ)を受け付け、それに対応するデータ(RDATA)がキャッシュメモリCM0〜CM3へ格納されていない場合に、ストレージモジュール用の制御回路DKCTL0へ通達を行う。図9は、図1におけるストレージモジュール用の制御回路およびストレージ用の制御回路が行う読み出し動作例を示すフロー図であり、DKCTL0がHCTL0からの通達に応じてリード要求(RQ)を受け付けた以降の動作例を示すものである。
まず、ストレージコントローラSTRGCONT内の制御回路DKCTL0は、制御回路HCTL0を介して、論理アドレス値(例えばLAD=535)、データ読み出し命令(RD)、セクタカウント値(SEC=1)が含まれるリードリクエスト(RQ)を受け付ける。これを受けて、DKCTL0内のリード制御回路RDCTLは、テーブルSTGTBLより論理アドレス値(LAD=535)に対応するストレージモジュール番号(STG No)と、有効フラグVLDを読み出す(Step1)。図5Bの例では、ストレージモジュール番号「3」とVLD=“1”が読み出される。
次に、リード制御回路RDCTLは、読み出した有効フラグVLDが“1”であるかどうかをチェックする(Step2)。ここで、VLDが“0”の場合、RDCTLは、当該論理アドレス値(LAD=535)にはストレージモジュールSTGが割り当てられていないことを認識する。この場合、ストレージモジュールSTGからデータを読み出すことができないため、RDCTLは、エラーが発生したことを制御回路HCTL0へ伝える(Step10)。一方、VLDが“1”の場合、RDCTLは、当該論理アドレス値(LAD=535)にはストレージモジュールSTG3が対応していると判断し、STG3へリードアクセス要求(RREQ)を発行する(Step3)。
続いて、ストレージモジュールSTG3内のインターフェース回路HOST_IFは、制御回路DKCTL0から発行されたリードアクセス要求(RREQ)に埋め込まれているクロック情報を取り出し、シリアルデータ化されたRREQをパラレルデータへ変換し、バッファBUF0および情報処理回路MNGERへ転送する(Step4)。情報処理回路MNGERは、当該リードアクセス要求(RREQ)に含まれる論理アドレス値(LAD=535)、データ読み出し命令(RD)およびセクタカウント値(SEC=1)を解読し、ランダムアクセスメモリRAMstへ保存されているアドレス変換テーブルLPTBLを参照して、各種情報を読み出す。具体的には、LPTBLにおいて、論理アドレスLADの535番地に格納されている物理アドレス値(例えばPAD=33)と、この物理アドレスPADに対応した有効フラグPVLDを読み出す(Step5)。次に、読み出した有効フラグPVLDが“1”であるかどうかをチェックする(Step6)。
ここで、有効フラグPVLDが“0”の場合、情報処理回路MNGERは、当該論理アドレス値(LAD=535)には物理アドレスPADが割り当てられていないことを認識する。この場合、不揮発性メモリNVM0〜NVM7からデータを読み出すことができないため、MNGERは、エラーが発生したことをインターフェース回路HOST_IFを通じて制御回路DKCTL0内のリード制御回路RDCTLへ伝える(Step11)。一方、有効フラグPVLDが“1”の場合、MNGERは、当該論理アドレス値(LAD=535)には物理アドレス値(PAD=33)が対応していると判断する。
次いで、情報処理回路MNGERは、論理アドレス値(LAD=535)に対応している物理アドレス値(PAD=33)を、不揮発性メモリNVM0〜NVM7のチップアドレス(CHIPA)、バンクアドレス(BK)、ロウアドレス(ROW)、およびカラムアドレス(COL)へ変換する。そして、MNGERは、当該変換後のアドレスを、調停回路ARBおよびメモリ制御回路NVCT0〜NVCT7を通じて不揮発性メモリNVM0〜NVM7へ入力し、NVM0〜NVM7内に格納されたデータ(RDATA)が読み出す(Step7)。
ここでは、読み出されたデータ(RDATA)には、メインデータ(DArea)と冗長データ(RArea)が含まれ、さらに冗長データ(RArea)にはECCコード(ECC)が含まれている。そこで、情報処理回路MNGERは、ECCコード(ECC)を利用して、メインデータ(DArea)にエラーがあるかをチェックし、エラーがあれば訂正を行い、インターフェース回路HOST_IFを通じて、データ(RDATA)を制御回路DKCTL0へ送信する(Step8)。DKCTL0は、送信されたデータ(RDATA)をキャッシュメモリCM0〜CM3へ転送し、さらに、制御回路HCTL0およびインターフェース信号H2S_IFを通じて情報処理装置SRV0〜SRVmへ送信する(Step9)。
以上のように、本実施の形態1の記憶装置システムを用いることで、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。
(実施の形態2)
本実施の形態2では、実施の形態1の図3、図4Aおよび図4B等で述べたストレージモジュール間ウエアレベリング方法の変形例として、前述した予想ライトデータサイズeWdに加えて更にデータリテンション時間Retを利用した方法について説明する。
《データリテンション時間の概要》
不揮発性メモリ(特にフラッシュメモリのように破壊書き込み方式のメモリ)では、消去回数(または書き込み回数)が増加するほどデータリテンション時間(すなわち書き込まれたデータをどの程度の期間に渡って正しく保持できるか)が低下していく場合がある。データリテンション時間は、特に限定しないが、例えば、書き込み回数が少ない場合には10年等である。このデータリテンション時間が消去回数(または書き込み回数)にどの程度依存するかは、ストレージモジュールへどのような不揮発性メモリを利用するかによって変化する。例えば、不揮発性メモリとしてフラッシュメモリを用いるかあるいは相変化メモリを用いるかや、フラッシュメモリを用いる場合でもどのようなメモリセル構造を用いるかなどによって異なり得る。
図20Aは、本発明の実施の形態2による記憶装置システムにおいて、ストレージモジュールのデータ保持特性の一例を示す説明図である。図20Aには、物理ブロックの消去回数(あるいは書き込み回数)(nERS)とデータ保持時間(データリテンション時間)Retの依存関係(関数)が示されている。図20Aにおいて、RetSTG0〜RetSTG3は、それぞれ、ストレージモジュールSTG0〜STG3における依存関係(関数)を表している。
ストレージモジュール(メモリモジュール)STG0〜STG3のそれぞれは、自身の消去回数(あるいは書き込み回数)とデータ保持時間の依存関係(関数)を数式として不揮発性メモリNVM0〜NVM7に予め保有しており、STG0〜STG3の電源投入直後に、その数式をランダムアクセスメモリRAMstへ転送する。ストレージ用の制御回路STCT内の情報処理回路MNGERは、NVM0〜NVM7内の各物理ブロックにおける消去回数の最大値を求める。そして、MNGERは、この最大値が変化する毎に、数式をRAMstから読み出し、当該消去回数の最大値(nERS)を引数としてデータ保持時間(データリテンション時間)Retを計算し、それをRAMstへ格納する。さらに、STG0〜STG3のそれぞれは、必要に応じて、計算したデータリテンション時間RetをストレージコントローラSTRGCONTへ転送する。
図20Bは、図20Aのデータ保持特性をテーブル上で規定した一例を示す図である。図20Aでは予め依存関係(関数)を数式で規定することでデータリテンション時間Retの算出を行ったが、その代わりに、当該数式を離散的に表す図20BのようなテーブルRetTBLを予め規定することでデータリテンション時間Retの算出を行うことも可能である。図20Bには、1つのストレージモジュールSTGが保有しているテーブルRetTBLが示されており、当該RetTBLには、物理ブロックの消去回数(あるいは書き込み回数)(nERS)とデータリテンション時間Retの依存関係(関数)が規定されている。
ストレージモジュールSTG0〜STG3のそれぞれは、自身の特性に対応するテーブルRetTBLを不揮発性メモリNVM0〜NVM7に予め保有しており、STG0〜STG3の電源投入直後に、当該テーブルRetTBLをランダムアクセスメモリRAMstへ転送する。ストレージ用の制御回路STCT内の情報処理回路MNGERは、NVM0〜NVM7内の各物理ブロックにおける消去回数の最大値を求める。そして、MNGERは、この最大値が変化する毎に、テーブルRetTBLを検索し、データ保持時間(データリテンション時間)Retを取得する。さらに、STG0〜STG3のそれぞれは、必要に応じて、取得したデータリテンション時間RetをストレージコントローラSTRGCONTへ転送する。
図20Aに示すように、ストレージモジュールのデータリテンション時間Retは、ストレージモジュール毎に異なり、更に、消去回数(あるいは書き込み回数)(nERS)が増大する毎に所定の依存関係(関数)に基づいて減少していく。データリテンション時間Retは、対応するストレージモジュールの残存寿命を表しており、その時間が所定の値より小さくなると、当該ストレージモジュールの寿命は尽きることになる。したがって、仮に、実施の形態1の方式を用いてストレージモジュール間で消去回数(あるいは書き込み回数)の平準化を行ったとしても、図20Aから判るように、データリテンション時間Retの観点ではストレージモジュール間でばらつきが生じる場合が有る。その結果、記憶装置システム全体としての寿命が低下する恐れがある。
そこで、例えば、データリテンション時間(残存寿命)Retのしきい値を設け、当該しきい値を適宜制御すると共に、各ストレージモジュールのデータリテンション時間Retが当該しきい値以上を常に保てるような状態で、実施の形態1で述べたようなストレージモジュール間での消去回数の平準化を行えばよい。例えば、図20Aにおいて、ストレージモジュールSTG0とSTG3の消去回数(nERS)が同じであったとして、この状態でSTG3のデータリテンション時間Retがしきい値に達したような場合、STG3に対しては当分書き込み・消去を行わず、STG0に対して書き込み・消去を行えばよい。
《ストレージモジュール間ウエアレベリング(変形例)》
以下に、特に限定しないが、4個のストレージモジュールSTG0〜STG3を備える場合を例として、制御回路DKCTL0が実行する書き込み動作について図10、図11に加えて図5A、図5Bを用いて説明する。図10は、本発明の実施の形態2による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作の一例を示すフローチャートである。図11Aおよび図11Bは、図10の補足図であり、ストレージモジュール用の制御回路が持つテーブルMGTBLの保持内容の一例を示す図である。図11Aおよび図11Bに示すテーブルMGTBLには、図4等に示したデータサイズntWと、各ストレージモジュールSTG0〜STG3毎のデータサイズWh2d,Wstg、ライトデータサイズ比率WAF、および予想ライトデータサイズeWdに加えて、各STG0〜STG3毎のデータリテンション時間Retが保持されている。
まず、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0〜STG3へデータリテンション時間RetとデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0〜STG3は、データリテンション時間Ret(Ret0(8)、Ret1(6)、Ret2(9)、Ret3(7))をDKCTL0へ返信する。更に、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する(図10:Step1、図11A)。
続いて、制御回路DKCTL0は、これらのデータリテンション時間RetとデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する(図10:Step2、図11A)。ここで、前提として、DKCTL0は、現在、データサイズntW1(ここでは10とする)のライトデータ(WDT[1])と論理アドレス(ここでは123とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[1])を処理対象としているものとする。この場合、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0〜STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW1を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図10:Step3、図11A)。図11Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
次に、ライト制御回路WTCTLは、ストレージシステム(記憶装置システム)STRGSYSの寿命情報(dLife(ここでは4.5))と、各ストレージモジュールSTG0〜STG3のデータリテンション時間Ret(Ret0(8)、Ret1(6)、Ret2(9)、Ret3(7))とを比較する。そして、WTCTLは、ストレージシステムの寿命情報(dLife)以上のデータリテンション時間(残存寿命)Retを持つストレージモジュールを選択する(図10:Step4、図11A)。
続いて、ライト制御回路WTCTLは、Step4で選択されたストレージモジュールの中から、更に、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG2)を選択する(図10:Step5、図11A)。次いで、もし、ストレージモジュールSTG0〜STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2〜Step5を実行する。一方、STG0〜STG3からのWstgの通達が無ければ、Step7へ進む(図10:Step6)。
Step7において、ライト制御回路WTCTLは、Step5で選択したストレージモジュールSTG2へ、データサイズntW1(=10)のライトデータ(WDT[1])と論理アドレスLAD(=123)を含んだライトアクセス要求(書き込み命令)(WREQ[1])を発行する(図11A)。次いで、WTCTLは、当該LAD(=123)とSTG2の対応関係に基づいて、テーブルSTGTBLを更新し(図10:Step8、図5A)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図10:Step8、図11B)。すなわち、図5AのSTGTBL内のLAD(=123)において、ストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、図11BのMGTBL内のSTG2において、Wh2dが「5」から「15」に更新される。
その後、ストレージモジュールSTG2は、ライトデータ(WDT[1])の書き込みを完了すると、制御回路DKCTL0へデータリテンション時間Ret(8.9)とデータサイズWstg(Wstg2(30))を通達し(図10:Step9、図11B)、Step2へ戻る。この例では、STG2において、例えば、データサイズntW1(=10)のライトデータ(WDT[1])を書き込む前の期間で、ガーベージコレクション動作やスタティックウエアレベリング動作等によりデータサイズ「20」の書き込みが行われており、これによってWstg2として計「30」の値が通達されている。また、データリテンション時間Ret(8.9)は、図20Aおよび図20Bで述べたように、情報処理回路MNGERによって算出され、ここでは、当該ガーベージコレクション動作等に伴い図11Aの「9」から図11Bの「8.9」に減っている。
続いて、ライト制御回路WTCTLは、通達されたデータリテンション時間Ret(8.9)およびデータサイズWstg(Wstg2(30))をテーブルMGTBLへ設定し更新する(図10:Step2、図11B)。ここで、前提として、DKCTL0は、現在、データサイズntW2(ここでは10とする)のライトデータ(WDT[2])と論理アドレス(ここでは535とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[2])を処理対象としているものとする。この場合、WTCTLは、MGTBL内のデータサイズWstgおよびWh2dを利用し、各ストレージモジュールSTG0〜STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW2を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図10:Step3、図11B)。図11Bの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=50、eWd3=40となる。
次に、ライト制御回路WTCTLは、ストレージシステムの寿命情報dLife(=4.5)と、各ストレージモジュールSTG0〜STG3のデータリテンション時間Ret(Ret0(8)、Ret1(6)、Ret2(8.9)、Ret3(7))を比較する。そして、WTCTLは、ストレージシステムの寿命情報dLife(4.5)以上のデータリテンション時間Retを持つストレージモジュールを選択する(図10:Step4、図11B)。
なお、ここでは、寿命情報(残存寿命のしきい値)dLifeは、変化していないが、実際には適宜可変制御される。特に限定はしないが、ライト制御回路WTCTLは、例えば、ストレージシステムの仕様に基づき、当該システムの使用期間の増大(逆に言えば残存寿命の減少)を考慮し、この残存寿命を反映して経時的に減少していく寿命情報(残存寿命のしきい値)dLifeを設定することが可能である。この場合、ストレージシステムにおいて、使用期間に応じて最低限必要とされる残存寿命を確保でき、信頼性の向上や長寿命化等が図れる。また、WTCTLは、例えば、大半のストレージモジュールのデータリテンション時間Retが寿命情報(残存寿命のしきい値)dLifeに達する毎に、その値を段階的に減少させていくようにdLifeを設定することも可能である。この場合、ストレージシステム間でデータリテンション時間Retの平準化を行うことが可能になり、信頼性の向上や長寿命化等が図れる。
続いて、ライト制御回路WTCTLは、Step4で選択されたストレージモジュールの中から、更に、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG3)を選択する(図10:Step5、図11B)。次いで、もし、ストレージモジュールSTG0〜STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2〜Step5を実行する。一方、STG0〜STG3からのWstgの通達が無ければ、Step7へ進む(図10:Step6)。
Step7において、制御回路DKCTL0内のライト制御回路WTCTLは、Step5で選択したストレージモジュールSTG3へ、データサイズntW2(=10)のライトデータ(WDT[2])と論理アドレスLAD(=535)を含んだライトアクセス要求(書き込み命令)(WREQ[2])を発行する(図11B)。次いで、WTCTLは、当該LAD(=535)とSTG3の対応関係に基づいて、テーブルSTGTBLを更新し(図10:Step8、図5B)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図10:Step8)。すなわち、図5BのSTGTBL内のLAD(=535)において、ストレージモジュールの番号(STG No)が「3」に更新され、有効情報VLDが“1”に更新される。また、図示は省略するが、図11BのMGTBL内のSTG3において、Wh2dが「10」から「20」に更新される。
そして、ストレージモジュールSTG3がライトデータ(WDT[2])の書き込みを完了すると、STG3は制御回路DKCTL0へデータサイズWstgを通達し(図10:Step9)、Step2へ進み、以降同様の処理が繰り返される。なお、Step7において、ライトアクセス要求(WREQ)が発行されたストレージモジュール(ここではSTG2,STG3)では、当該ライトアクセス要求(WREQ)に含まれる論理アドレスLADを不揮発性メモリNVM0〜NVM7の物理アドレス(PAD)へ変換し、この変換された物理アドレス(PAD)へライトデータを書き込む。
以上のように、本実施の形態2の記憶装置システムを用いることで、実施の形態1の場合と同様に、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。さらに、データリテンション時間(残存寿命)の管理により、更なる信頼性の向上や長寿命化等が実現可能になる。
(実施の形態3)
本実施の形態3では、ストレージモジュール用の制御回路DKCTL0が、実施の形態1の図3、図4Aおよび図4B等で述べたストレージモジュール間ウエアレベリングの実行に加えて、ガーベージコレクションの管理を行う場合について説明する。
《ストレージモジュール間ウエアレベリング+ガーベージコレクション管理》
以下に、特に限定しないが、4個のストレージモジュールSTG0〜STG3を備える場合を例とし、図2に示した制御回路DKCTL0内のライト制御回路WTCTLが実行する書き込み動作と、ガーベージコレクション制御回路GCCTLが実行するガーベージコレクションの要求動作について、図12〜図14に加えて図5A、図5Bを用いて説明する。図12は、本発明の実施の形態3による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作およびガーベージコレクションの管理動作の一例を示すフローチャートである。図13A、図13Bおよび図13Cは、図12の補足図であり、図2のストレージモジュール用の制御回路DKCTL0が持つテーブルMGTBLの保持内容の一例を示す図である。図14A、図14Bおよび図14Cは、図12の補足図であり、図2のストレージモジュール用の制御回路DKCTL0が持つテーブルGETBLの保持内容の一例を示す図である。
図13A、図13Bおよび図13Cに示すテーブルMGTBLには、図4等に示したデータサイズntWと、各ストレージモジュールSTG0〜STG3毎のデータサイズWh2d,Wstg、ライトデータサイズ比率WAF、および予想ライトデータサイズeWdに加えて、各STG0〜STG3毎の消去状態の物理ブロック数Eszが保持されている。図14A、図14Bおよび図14Cに示すテーブルGETBLには、各番号(STG No)を持つストレージモジュールSTG0〜STG3,…毎の、ガーベージコレクション実行状態GCvと消去実行状態ERSvが保持されている。GCvは、“1”の場合にガーベージコレクション動作を実行中であることを意味し、“0”の場合に実行中でないことを意味する。ERSvは、“1”の場合に消去動作を実行中であることを意味し、“0”の場合に実行中でないことを意味する。
図12において、まず、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0〜STG3へ消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0〜STG3は、消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))をDKCTL0へ返信する。更に、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する。
さらに、制御回路DKCTL0は、必要に応じて、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0〜STG3へガーベージコレクション動作および消去動作の確認要求を発行する。これに応じて、各ストレージモジュールSTG0〜STG3は、ガーベージコレクションステータスGst(Gst0(0)、Gst1(0)、Gst2(0)、Gst3(0))および消去ステータスEst(Est0(0)、Est1(0)、Est2(0)、Est3(0))をDKCTL0へ返信する(図12:Step1、図13A)。
続いて、制御回路DKCTL0は、これらの消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する。さらに、DKCTL0は、これらのガーベージコレクションステータスGstおよび消去ステータスEstをテーブルGETBLのガーベージコレクション実行状態GCvおよび消去実行状態ERSvに設定し、更新する(図12:Step2、図13A、図14A)。
ここで、前提として、DKCTL0は、現在、データサイズntW1(ここでは10とする)のライトデータ(WDT[1])と論理アドレス(ここでは123とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[1])を処理対象としているものとする。この場合、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0〜STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW1を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図12:Step3、図13A)。図13Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
次に、ガーベージコレクション制御回路GCCTLは、テーブルGETBL(図14A)を読み出し、現在、ガーベージコレクション動作や消去動作を行っていないストレージモジュールSTG0〜STG4をガーベージコレクション対象のストレージモジュールとして選択する(図12:Step4、図13A)。続いて、GCCTLは、予め設定した消去状態の物理ブロック数の閾値ESZth(ここでは91)と、Step4にて選択されたストレージモジュールSTG0〜STG3毎の消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))を比較する。そして、GCCTLは、消去状態の物理ブロック数の閾値ESZth(=91)より小さな物理ブロック数Eszを持つストレージモジュール(ここではSTG0)をガーベージコレクション対象のストレージモジュールとして選択する。更に、消去状態の物理ブロック数の閾値ESZth(=91)以上の物理ブロック数Eszを持つストレージモジュールSTG1〜STG3を書き込みおよび読み出し対象のストレージモジュールとして選択する(図12:Step5、図13A)。
続いて、ガーベージコレクション制御回路GCCTLは、Step5でガーベージコレクション対象として選択されたストレージモジュールSTG0へガーベージコレクション要求(GCrq)を発行し、テーブルGETBLを更新する。つまり、図14Bに示すように、ストレージモジュールの番号(STG No)が「0」に対応するガーベージコレクション実行状態GCvの値が“1”となり、これによってストレージモジュールSTG0がガーベージコレクション動作の実行中であることが示される(図12:Step11、図13A、図14B)。
ここで、ガーベージコレクション要求(GCrq)を受け取ったストレージモジュールSTG0は、図8のStep3〜Step8の処理を用いてガーベージコレクションを実行する。すなわち、図8においては、Step1およびStep2の処理により、ガーベージコレクション動作を実行するか否かをストレージモジュール自身が判断していたが、図12のフローでは、ストレージモジュール自身が判断する代わりにその上位に位置する制御回路DKCTL0内のガーベージコレクション制御回路GCCTLが判断している。これによって、DKCTL0は、ガーベージコレクション動作を実行中でないストレージモジュールを対象として、ライトアクセス要求(WREQ)やリードアクセス要求(RREQ)等を発行できるため、書き込み動作や読み出し動作等の効率を高めることが可能になる。
続いて、ライト制御回路WTCTLは、Step5で書き込みおよび読み出し対象のストレージモジュールとして選択されたストレージモジュールの中から、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG2)を選択する(図12:Step6、図13A)。次いで、もし、ストレージモジュールSTG0〜STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2〜Step6を実行する。一方、STG0〜STG3からのWstgの通達が無ければ、Step8へ進む(図12:Step7)。
Step8において、ライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG2へ、データサイズntW1(=10)のライトデータ(WDT[1])と論理アドレスLAD(=123)を含んだライトアクセス要求(書き込み命令)(WREQ[1])を発行する(図13A)。次いで、WTCTLは、当該LAD(=123)とSTG2の対応関係に基づいて、テーブルSTGTBLを更新し(図12:Step9、図5A)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図12:Step9、図13B)。すなわち、図5AのSTGTBL内のLAD(=123)において、ストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、図13BのMGTBL内のSTG2において、Wh2dが「5」から「15」に更新される。
その後、ストレージモジュールSTG2は、ライトデータ(WDT[1])の書き込みを完了すると、制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz2(139))とデータサイズWstg(Wstg2(30))を通達し(図12:Step10、図13B)、Step2へ戻る。この例では、STG2において、例えば、データサイズntW1(=10)のライトデータ(WDT[1])を書き込む前の期間で、スタティックウエアレベリング動作等によりデータサイズ「20」の書き込みが行われており、これによってWstg2として計「30」の値が通達されている。また、STG2において、ライトアクセス要求(書き込み命令)(WREQ[1])の書き込みに伴い図13Aにおける消去状態の物理ブロック数Esz(=140)から図13Bにおける消去状態の物理ブロック数Esz(=139)に減少している。
続いて、ライト制御回路WTCTLは、通達された消去状態の物理ブロック数Esz(=139)およびデータサイズWstg(Wstg2(30))をテーブルMGTBLへ設定し更新する(図12:Step2、図13B)。ここで、前提として、DKCTL0は、現在、データサイズntW2(ここでは10とする)のライトデータ(WDT[2])と論理アドレス(ここでは535とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[2])を処理対象としているものとする。この場合、WTCTLは、MGTBL内のデータサイズWstgおよびWh2dを利用し、各ストレージモジュールSTG0〜STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW2を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図12:Step3、図13B)。図13Bの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=50、eWd3=40となる。
次に、ガーベージコレクション制御回路GCCTLは、テーブルGETBL(図14B)を読み出し、現在、ガーベージコレクション動作や消去動作を行っていないストレージモジュールSTG1〜STG3をガーベージコレクション対象のストレージモジュールとして選択する(図12:Step4、図13B)。続いて、GCCTLは、予め設定した消去状態の物理ブロック数の閾値ESZth(=91)と、Step4にて選択されたストレージモジュールSTG1〜STG3毎の消去状態の物理ブロック数Esz(Esz1(100)、Esz2(140)、Esz3(120))を比較する。ここでは、消去状態の物理ブロック数の閾値ESZth(=91)よりも小さな物理ブロック数Eszを持つストレージモジュールは存在しない。そこで、GCCTLは、ストレージモジュールSTG1〜STG3を書き込みおよび読み出し対象のストレージモジュールとして選択する(図12:Step5、図13B)。
続いて、ライト制御回路WTCTLは、Step5で書き込みおよび読み出し対象のストレージモジュールとして選択されたストレージモジュールの中から、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG3)を選択する(図12:Step6、図13B)。次いで、もし、ストレージモジュールSTG0〜STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2〜Step6を実行する。一方、STG0〜STG3からのWstgの通達が無ければ、Step8へ進む(図12:Step7)。
Step8において、制御回路DKCTL0内のライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG3へ、データサイズntW2(=10)のライトデータ(WDT[2])と論理アドレスLAD(=535)を含んだライトアクセス要求(書き込み命令)(WREQ[2])を発行する(図13B)。次いで、WTCTLは、当該LAD(=535)とSTG3の対応関係に基づいて、テーブルSTGTBLを更新し(図12:Step9、図5B)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図12:Step9、図13C)。すなわち、図5BのSTGTBL内のLAD(=535)において、ストレージモジュールの番号(STG No)が「3」に更新され、有効情報VLDが“1”に更新される。また、図13CのMGTBL内のSTG3において、Wh2dが「10」から「20」に更新される。
そして、ストレージモジュールSTG3がライトデータ(WDT[2])の書き込みを完了すると、STG3は制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz3(119))およびデータサイズWstg(Wstg3(40))を通達し(図12:Step10)、Step2へ進む。なお、Step8において、ライトアクセス要求(WREQ)が発行されたストレージモジュール(ここではSTG2,STG3)では、当該ライトアクセス要求(WREQ)に含まれる論理アドレスLADを不揮発性メモリNVM0〜NVM7の物理アドレス(PAD)へ変換し、この変換された物理アドレス(PAD)へライトデータを書き込む。
ここで、前述したように、Step11でガーベージコレクション要求(GCrq)を受け取ったストレージモジュールSTG0が、ストレージモジュールSTG3によるライトデータ(WDT[2])の書き込み動作の完了後に、ガーベージコレクション動作を完了した場合について説明する。ストレージモジュールSTG0は、ガーベージコレクション動作を完了すると、当該ガーベージコレクション動作後における消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(70))を制御回路DKCTL0へ送信する(図12:Step12、図13C)。
制御回路DKCTL0内のガーベージコレクション制御回路GCCTLは、ガーベージコレクション動作が完了したことを受けてテーブルGETBLへを更新する。つまり図14Aに示すように、ストレージモジュールの番号(STG No)が「0」に対応するガーベージコレクション実行状態GCvの値が“0”となり、これによってストレージモジュールSTG0がガーベージコレクション動作を実行中でないことが示される。
また、制御回路DKCTL0内のライト制御回路WTCTLは、消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(70))をテーブルMGTBLへ設定し更新する(図12:Step2、図13C)。次に、WTCTLは、ストレージモジュールSTG0のデータサイズWstgおよびWh2dを利用し、ストレージモジュールSTG0のライトデータサイズ比率WAFおよび予想ライトデータサイズeWdを求め、テーブルMGTBLへ設定し更新する(図12:Step3、図13C)。図13Cでは、WAF=7となり、仮に次のライトアクセス要求(書き込み命令)(WREQ)に伴うデータサイズntW3を「10」とすると、eWd0=140となる。
以上のように、本実施の形態3の記憶装置システムを用いることで、実施の形態1の場合と同様に、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。さらに、ストレージコントローラSTRGCONTにて、ガーベージコレクション動作を管理することで、どのストレージモジュールがガーベージコレクション動作を実行中で、どのストレージモジュールに書き込みや読み出しが可能かを把握することができ、ガーベージコレクション動作と、書き込みおよび読み出し動作を並行して実行可能になる。その結果、平準化行いつつ、ストレージシステムの高速化等が図れる。
(実施の形態4)
本実施の形態4では、ストレージモジュール用の制御回路DKCTL0が、実施の形態1の図3、図4Aおよび図4B等で述べた書き込み動作(ストレージモジュール間ウエアレベリング)の実行に加えて、消去動作を行う場合について説明する。
《ストレージモジュール間ウエアレベリング+消去動作》
以下に、特に限定しないが、4個のストレージモジュールSTG0〜STG3を備える場合を例とし、図2に示した制御回路DKCTL0内のライト制御回路WTCTLが実行する書き込み動作と、データ消去制御回路ERSCTLが実行する消去の要求動作について、図15、図16に加えて図5C、図5D、図14A、図14Cを用いて説明する。図15は、本発明の実施の形態4による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作および消去動作の一例を示すフローチャートである。図16A、図16Bおよび図16Cは、図15の補足図であり、図2のストレージモジュール用の制御回路DKCTL0が持つテーブルMGTBLの保持内容の一例を示す図である。
図15において、まず、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0〜STG3へ消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0〜STG3は、消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))をDKCTL0へ返信する。更に、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する。
さらに、制御回路DKCTL0は、必要に応じて、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0〜STG3へガーベージコレクション動作および消去動作の確認要求を発行する。これに応じて、各ストレージモジュールSTG0〜STG3は、ガーベージコレクションステータスGst(Gst0(0)、Gst1(0)、Gst2(0)、Gst3(0))および消去ステータスEst(Est0(0)、Est1(0)、Est2(0)、Est3(0))をDKCTL0へ返信する(図15:Step1、図16A)。
続いて、制御回路DKCTL0は、これらの消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する。さらに、DKCTL0は、これらのガーベージコレクションステータスGstおよび消去ステータスEstをテーブルGETBLのガーベージコレクション実行状態GCvおよび消去実行状態ERSvに設定し、更新する(図15:Step2、図16A、図14A)。
ここで、前提として、DKCTL0は、現在、データサイズntW1(ここでは10とする)のライトデータ(WDT[1])と論理アドレス(ここでは123とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[1])を処理対象としているものとする。この場合、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0〜STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW1を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図15:Step3、図16A)。図16Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
次のStep4では、特に限定しないが、ストレージコントローラSTRGCONTは、情報処理装置SRV0〜SRVmからのデータ消去要求(EQ)があるかをチェックし、データ消去要求(EQ)があればStep5を実行し、無ければStep6を実行する。すなわち、例えば、SRV0〜SRVmから、「1000〜2279」の論理アドレスLADのデータを消去するデータ消去要求(EQ)がSTRGCONTのインターフェース回路STIF00〜STIFm1へ入力される。このデータ消去要求(EQ)は、制御回路HCTL0を通じて制御回路DKCTL0のデータ消去制御回路ERSCTLへ通達され(図15:Step4)、その後Step5が実行される。
次に、データ消去制御回路ERSCTLは、図5Cに示すテーブルSTGTBLの中で、論理アドレスLAD=1000〜2279を検索し、論理アドレスLAD=1000〜2279のデータは全てストレージモジュールSTG0へ保存されていることを把握する。さらに、ERSCTLは、テーブルGETBL(図14A)を読み出し、現在、ガーベージコレクション動作や消去動作を行っていないストレージモジュールSTG0を消去動作対象のストレージモジュールとして選択する(図15:Step5、図16A)。
続いて、データ消去制御回路ERSCTLは、ストレージモジュールSTG0に対して、論理アドレスLAD=1000〜2279のデータを消去するデータ消去アクセス要求(ERSrq)を発行し、テーブルGETBLを更新する。つまり、図14Cに示すように、ストレージモジュールの番号(STG No)が「0」に対応する消去実行状態ERSvの値が“1”となり、これによってSTG0が消去動作の実行中であることが示される(図15:Step11、図16A、図14C)。
次いで、ライト制御回路WTCTLは、Step5の消去動作対象以外のストレージモジュールSTG1〜STG3の中から、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG2)を選択する(図15:Step6、図16A)。次に、もし、ストレージモジュールSTG0〜STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2〜Step4およびStep6を実行する。一方、STG0〜STG3からのWstgの通達が無ければ、Step8へ進む(図15:Step7)。
Step8において、ライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG2へ、データサイズntW1(=10)のライトデータ(WDT[1])と論理アドレスLAD(=123)を含んだライトアクセス要求(書き込み命令)(WREQ[1])を発行する(図16A)。次いで、WTCTLは、当該LAD(=123)とSTG2の対応関係に基づいて、テーブルSTGTBLを更新し(図15:Step9、図5A)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図15:Step9、図16B)。すなわち、図5AのSTGTBL内のLAD(=123)において、ストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、図16BのMGTBL内のSTG2において、Wh2dが「5」から「15」に更新される。
その後、ストレージモジュールSTG2は、ライトデータ(WDT[1])の書き込みを完了すると、制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz2(139))とデータサイズWstg(Wstg2(30))を通達し(図15:Step10、図16B)、Step2へ戻る。この例では、STG2において、例えば、データサイズntW1(=10)のライトデータ(WDT[1])を書き込む前の期間で、スタティックウエアレベリング動作等によりデータサイズ「20」の書き込みが行われており、これによってWstg2として計「30」の値が通達されている。また、STG2において、ライトアクセス要求(書き込み命令)(WREQ[1])の書き込みに伴い図16Aにおける消去状態の物理ブロック数Esz(=140)から図16Bにおける消去状態の物理ブロック数Esz(=139)に減少している。
続いて、ライト制御回路WTCTLは、通達された消去状態の物理ブロック数Esz(=139)およびデータサイズWstg(Wstg2(30))をテーブルMGTBLへ設定し更新する(図15:Step2、図16B)。ここで、前提として、DKCTL0は、現在、データサイズntW2(ここでは10とする)のライトデータ(WDT[2])と論理アドレス(ここでは535とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[2])を処理対象としているものとする。この場合、WTCTLは、MGTBL内のデータサイズWstgおよびWh2dを利用し、各ストレージモジュールSTG0〜STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW2を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図15:Step3、図16B)。図16Bの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=50、eWd3=40となる。
次のStep4では、特に限定しないが、ストレージコントローラSTRGCONTは、情報処理装置SRV0〜SRVmからのデータ消去要求(EQ)があるかをチェックし、データ消去要求(EQ)があればStep5を実行し、無ければStep6を実行する。この場合、データ消去要求(EQ)が無いためStep6が実行される。続いて、ライト制御回路WTCTLは、Step5の消去動作対象以外のストレージモジュールSTG1〜STG3の中から、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG3)を選択する(図15:Step6、図16B)。次いで、もし、ストレージモジュールSTG0〜STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2〜Step4およびStep6を実行する。一方、STG0〜STG3からのWstgの通達が無ければ、Step8へ進む(図15:Step7)。
Step8において、制御回路DKCTL0内のライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG3へ、データサイズntW2(=10)のライトデータ(WDT[2])と論理アドレスLAD(=535)を含んだライトアクセス要求(書き込み命令)(WREQ[2])を発行する(図16B)。次いで、WTCTLは、当該LAD(=535)とSTG3の対応関係に基づいて、テーブルSTGTBLを更新し(図15:Step9、図5B)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図12:Step9、図16C)。すなわち、図5BのSTGTBL内のLAD(=535)において、ストレージモジュールの番号(STG No)が「3」に更新され、有効情報VLDが“1”に更新される。また、図16CのMGTBL内のSTG3において、Wh2dが「10」から「20」に更新される。
そして、ストレージモジュールSTG3がライトデータ(WDT[2])の書き込みを完了すると、STG3は制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz3(119))およびデータサイズWstg(Wstg3(40))を通達し(図15:Step10)、Step2へ進む。なお、Step8において、ライトアクセス要求(WREQ)が発行されたストレージモジュール(ここではSTG2,STG3)では、当該ライトアクセス要求(WREQ)に含まれる論理アドレスLADを不揮発性メモリNVM0〜NVM7の物理アドレス(PAD)へ変換し、この変換された物理アドレス(PAD)へライトデータを書き込む。
ここで、前述したように、Step11でデータ消去アクセス要求(ERSrq)を受け取ったストレージモジュールSTG0が、ストレージモジュールSTG3によるライトデータ(WDT[2])の書き込み動作の完了後に消去動作を完了した場合について説明する。ストレージモジュールSTG0は、消去動作を完了すると、当該消去動作後における消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(40))を制御回路DKCTL0へ送信する(図15:Step12、図16C)。
制御回路DKCTL0内のデータ消去制御回路ERSCTLは、消去動作が完了したことを受けてテーブルGETBLへを更新する。つまり図14Aに示すように、ストレージモジュールの番号(STG No)が「0」に対応する消去実行状態ERSvの値が“0”となり、これによってストレージモジュールSTG0が消去動作を実行中でないことが示される。
また、制御回路DKCTL0内のライト制御回路WTCTLは、消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(40))をテーブルMGTBLへ設定し更新する(図15:Step2、図16C)。次に、WTCTLは、ストレージモジュールSTG0のデータサイズWstgおよびWh2dを利用し、ストレージモジュールSTG0のライトデータサイズ比率WAFおよび予想ライトデータサイズeWdを求め、テーブルMGTBLへ設定し更新する(図15:Step3、図16C)。図16Cでは、WAF=4のままであり、仮に次のライトアクセス要求(書き込み命令)(WREQ)に伴うデータサイズntW3を「10」とすると、eWd0=80となる。
以上のように、本実施の形態4の記憶装置システムを用いることで、実施の形態1の場合と同様に、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。さらに、ストレージコントローラSTRGCONTにて、消去動作を制御することで、どのストレージモジュールが消去動作を実行中で、どのストレージモジュールに書き込みや読み出しが可能かを把握することができ、消去動作と、書き込みおよび読み出し動作を並行して実行可能になる。その結果、平準化を行いつつ、ストレージシステムの高速化等が図れる。
なお、本実施の形態4および前述した実施の形態3では、ストレージコントローラSTRGCONTが各ストレージモジュールSTGを対象としてガーベージコレクション動作の管理や消去動作の制御を行う例を示した。これと同様に、図6のストレージ用の制御回路STCT0は、各不揮発性メモリNVM0〜NVM7を対象としてガーベージコレクション動作の管理や消去動作の制御を行ってもよい。すなわち、図6のランダムアクセスメモリRAMst内に、どのNVM0〜NVM7にてガーベージコレクション動作が行われているかを示す情報(GCnvm)や、どのNVM0〜NVM7にて消去動作が行われているかを示す情報(ERSnvm)等が含まれていてもよい。これによって、ストレージコントローラの場合と同様の効果が得られる。
(実施の形態5)
本実施の形態5では、図1のストレージシステムSTRGSYSがRAID機能(例えばRAID5等)を備える場合について説明する。そして、当該RAID機能を前提として、ストレージモジュール用の制御回路DKCTL0が、実施の形態3の図12、図13A、図13Bおよび図13C等で述べたような書き込み動作(ストレージモジュール間ウエアレベリング)やガーベージコレクション管理等を行う場合について説明する。
《RAID適用時のストレージモジュール間ウエアレベリング+ガーベージコレクション管理》
以下に、特に限定しないが、4個のストレージモジュールSTG0〜STG3を備える場合を例とする。そして、この場合において、図2に示した制御回路DKCTL0内のライト制御回路WTCTLが実行する書き込み動作と、ガーベージコレクション制御回路GCCTLが実行するガーベージコレクションの要求動作について、図17、図18に加えて図14A、図14Bを用いて説明する。図17は、本発明の実施の形態5による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作およびガーベージコレクションの管理動作の一例を示すフローチャートである。図18A、図18Bおよび図18Cは、図17の補足図であり、図2のストレージモジュール用の制御回路DKCTL0が持つテーブルMGTBLの保持内容の一例を示す図である。
図17のStep1aにおいて、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0〜STG3へ消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0〜STG3は、消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))をDKCTL0へ返信する。更に、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する(図18A)。
さらに、図17のStep1bにおいて、制御回路DKCTL0は、必要に応じて、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0〜STG3へガーベージコレクション動作および消去動作の確認要求を発行する。これに応じて、各ストレージモジュールSTG0〜STG3は、ガーベージコレクションステータスGst(Gst0(0)、Gst1(0)、Gst2(0)、Gst3(0))および消去ステータスEst(Est0(0)、Est1(0)、Est2(0)、Est3(0))をDKCTL0へ返信する(図18A)。
続いて、図17のStep1bにおいて、ライト制御回路WTCTLは、まず、ランダムアクセスメモリRAM0〜RAM3に保持しているデータサイズntW_A(ここでは20とする)のライトデータ(WDT[A])を分割する。この例では、データサイズntW_A1(ここでは10とする)のライトデータ(WDT[A1])とデータサイズntW_A2(ここでは10とする)のライトデータ(WDT[A2])に分割する。次に、WTCTLは、分割されたライトデータ(WDT[A1])とライトデータ(WDT[A2])からデータサイズntW_PA12(ここでは10とする)のパリティデータ(PA12)を生成する(図18A)。その後、WTCTLは、データサイズntW_A1(=10)のWDT[A1]と所定の論理アドレス(ここでは223とする)を含んだライトアクセス要求(WREQ[A1])と、データサイズntW_A2(=10)のWDT[A2]と所定の論理アドレス(ここでは224とする)を含んだライトアクセス要求(WREQ[A2])を生成する。加えて、WTCTLは、データサイズntW_PA12(=10)のPA12と所定の論理アドレス(ここでは225とする)を含んだライトアクセス要求(WREQ[PA12])を生成する。
次に、制御回路DKCTL0は、Step1aに伴う消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する。さらに、DKCTL0は、Step1aに伴うガーベージコレクションステータスGstおよび消去ステータスEstをテーブルGETBLのガーベージコレクション実行状態GCvおよび消去実行状態ERSvに設定し、更新する(図17:Step2、図18A、図14A)。
続いて、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0〜STG3毎のライトデータサイズ比率WAFを求める。更に、これに加えてデータサイズntW_A1=ntW_A2=ntW_PA12=10を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図17:Step3、図18A)。図18Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
次に、ガーベージコレクション制御回路GCCTLは、テーブルGETBL(図14A)を読み出し、現在、ガーベージコレクション動作や消去動作を行っていないストレージモジュールSTG0〜STG4をガーベージコレクション対象のストレージモジュールとして選択する(図17:Step4、図18A)。続いて、GCCTLは、予め設定した消去状態の物理ブロック数の閾値ESZth(ここでは91)と、Step4にて選択されたストレージモジュールSTG0〜STG3毎の消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))を比較する。そして、GCCTLは、消去状態の物理ブロック数の閾値ESZth(=91)より小さな物理ブロック数Eszを持つストレージモジュール(ここではSTG0)をガーベージコレクション対象のストレージモジュールとして選択する。更に、消去状態の物理ブロック数の閾値ESZth(=91)以上の物理ブロック数Eszを持つストレージモジュールSTG1〜STG3を書き込みおよび読み出し対象のストレージモジュールとして選択する(図17:Step5、図18A)。
続いて、ガーベージコレクション制御回路GCCTLは、Step5でガーベージコレクション対象として選択されたストレージモジュールSTG0へガーベージコレクション要求(GCrq)を発行し、テーブルGETBLを更新する。つまり、図14Bに示すように、ストレージモジュールの番号(STG No)が「0」に対応するガーベージコレクション実行状態GCvの値が“1”となり、これによってストレージモジュールSTG0がガーベージコレクション動作の実行中であることが示される(図17:Step11、図18A、図14B)。
ここで、ガーベージコレクション要求(GCrq)を受け取ったストレージモジュールSTG0は、図8のStep3〜Step8の処理を用いてガーベージコレクションを実行する。すなわち、図8においては、Step1およびStep2の処理により、ガーベージコレクション動作を実行するか否かをストレージモジュール自身が判断していたが、図17のフローでは、ストレージモジュール自身が判断する代わりにその上位に位置する制御回路DKCTL0内のガーベージコレクション制御回路GCCTLが判断している。これによって、DKCTL0は、ガーベージコレクション動作を実行中でないストレージモジュールを対象として、ライトアクセス要求(WREQ)やリードアクセス要求(RREQ)等を発行できるため、書き込み動作や読み出し動作等の効率を高めることが可能になる。
続いて、ライト制御回路WTCTLは、Step5で書き込みおよび読み出し対象のストレージモジュールとして選択されたストレージモジュールの中から、予想ライトデータサイズeWdが小さい順に3個のストレージモジュール(ここではSTG2、STG3、STG1)を選択する(図17:Step6、図18A)。次いで、もし、ストレージモジュールSTG0〜STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2〜Step6を実行する。一方、STG0〜STG3からのWstgの通達が無ければ、Step8へ進む(図17:Step7)。
Step8において、ライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG2,STG3,STG1へ、それぞれ、Step1aで述べたライトアクセス要求(書き込み命令)(WREQ[A1],WREQ[A2],WREQ[PA12])を発行する(図18B)。次いで、WTCTLは、各ライトアクセス要求に伴う論理アドレスLAD(223,224,225)とSTG2,STG3,STG1との対応関係に基づいて、テーブルSTGTBLを更新し(図17:Step9)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図17:Step9、図18B)。すなわち、図5AのようなSTGTBLにおいて、図示は省略するが、LAD(=223)のストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、LAD(=224)のSTG Noが「3」に、VLDが“1”にそれぞれ更新され、LAD(=225)のSTG Noが「1」に、VLDが“1”にそれぞれ更新される。更に、図18BのMGTBL内のSTG2,STG3,STG1において、Wh2dが「15」、「15」、「20」にそれぞれ更新される。
次に、Step10において、ストレージモジュールSTG2は、ライトデータ(WDT[A1])の書き込みを完了すると、制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz2(139))とデータサイズWstg(Wstg2(30))を通達する。また、ストレージモジュールSTG3は、ライトデータ(WDT[A2])の書き込みを完了すると、DKCTL0へ消去状態の物理ブロック数Esz(Esz3(119))とデータサイズWstg(Wstg3(40))を通達する。更に、ストレージモジュールSTG1は、パリティデータ(PA12)の書き込みを完了すると、DKCTL0へ消去状態の物理ブロック数Esz(Esz1(100))とデータサイズWstg(Wstg1(45))を通達する(図18C)。
Step10の後は、Step1bへ戻り、ライト制御回路WTCTLは、データサイズntW_B(ここでは20とする)の次のライトデータ(WDT[B])を対象にして、ライトデータの分割やパリティデータの生成を行う。ここでは、データサイズntW_B1(ここでは10とする)のライトデータ(WDT[B1])とデータサイズntW_B2(ここでは10とする)のライトデータ(WDT[B2])に分割し、データサイズntW_PB12(ここでは10とする)のパリティデータ(PB12)を生成する(図18C)。そして、WTCTLは、これらの各ライトデータおよびパリティデータを含んだライトアクセス要求(書き込み命令)をそれぞれ生成する。なお、Step10で通達された情報は、Step2においてMGTBLに反映される(図18C)。
ここで、前述したように、Step11でガーベージコレクション要求(GCrq)を受け取ったストレージモジュールSTG0が、ガーベージコレクション動作を完了した場合について説明する。STG0は、ガーベージコレクション動作を完了すると、当該ガーベージコレクション動作後における消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(70))を制御回路DKCTL0へ送信する(図17:Step12、図18C)。
制御回路DKCTL0内のガーベージコレクション制御回路GCCTLは、ガーベージコレクション動作が完了したことを受けてテーブルGETBLを更新する。つまり図14Aに示すように、ストレージモジュールの番号(STG No)が「0」に対応するガーベージコレクション実行状態GCvの値が“0”となり、これによってストレージモジュールSTG0がガーベージコレクション動作を実行中でないことが示される。また、制御回路DKCTL0内のライト制御回路WTCTLは、消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(70))をテーブルMGTBLへ設定し更新する(図17:Step2、図18C)。
《RAID適用時の読み出し方法》
図19は、本発明の実施の形態5による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う読み出し動作の一例を示す説明図である。図19の例では、データAはデータA1とA2から構成され、データA1はストレージモジュールSTG2へ保存され、データA2はストレージモジュールSTG3へ保存されている。また、データA1とA2から生成されたパリティデータPA12はストレージモジュールSTG1へ保存されている。
データBはデータB1とB2から構成され、データB1はストレージモジュールSTG1へ保存され、データB2はストレージモジュールSTG2へ保存されている。また、データB1とB2から生成されたパリティデータPB12はストレージモジュールSTG0へ保存されている。データCはデータC1とC2から構成され、データC1はストレージモジュールSTG0へ保存され、データC2はストレージモジュールSTG1へ保存されている。また、データC1とC2から生成されたパリティデータPC12はストレージモジュールSTG3へ保存されている。データDはデータD1とD2から構成され、データD1はストレージモジュールSTG2へ保存され、データD2はストレージモジュールSTG3へ保存されている。また、データD1とD2から生成されたパリティデータPD12はストレージモジュールSTG0へ保存されている。
ここで、例えば、制御回路DKCTL0内のガーベージコレクション制御回路GCCTLからストレージモジュールSTG1に対してガーベージコレクション要求(GCrq)が発行され、これに応じてSTG1がガーベージコレクション動作を実行中に、リード制御回路RDCTLが、データBの読み出し動作を行う場合を例とする。この場合、RDCTLは、図14で述べたようなテーブルGETBLにより、ストレージモジュールSTG1がガーベージコレクション動作を実行中であることを把握できる。また、RDCTLは、図5で述べたようなテーブルSTGTBLにより、データB1およびB2はストレージモジュールSTG1およびSTG2へ保存され、また、パリティデータPB12はストレージモジュールSTG0へ保存されていることを、各データに対応する論理アドレスLADから把握できる。
そのため、リード制御回路RDCTLは、ガーベージコレクション動作を実行中のストレージモジュールSTG1以外の、ストレージモジュールSTG2へ保存されているデータB2と、ストレージモジュールSTG0へ保存されているパリティデータPB12を読み出す。次に、RDCTLは、データB2とパリティデータPB12を利用して、データBを復元する(データB1を復元し、データB1,B2からデータBを復元する)。このように、ストレージコントローラSTRGCONT(制御回路DKCTL)にて、RAID機能を実現することにより、ガーベージコレクション動作の完了を待つことなく、データを読み出すことができ、ストレージシステムの信頼性の向上と動作の高速化を実現できる。
以上のように、本実施の形態5の記憶装置システムを用いることで、実施の形態1や実施の形態3の場合と同様に、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。また、ストレージコントローラSTRGCONTにて、ガーベージコレクション動作を管理することで、どのストレージモジュールがガーベージコレクション動作を実行中で、どのストレージモジュールに書き込みや読み出しが可能かを把握することができ、ガーベージコレクション動作と、書き込みおよび読み出し動作を並行して実行可能になる。その結果、平準化を行いつつ、ストレージシステムの高速化等が図れる。これに加えて、ストレージコントローラSTRGCONT(制御回路DKCTL)にてRAID機能を実現することで、信頼性の更なる向上が実現可能になる。
(実施の形態6)
本実施の形態6では、実施の形態1の図6に示したストレージモジュール(メモリモジュール)STGの変形例について説明する。
《ストレージモジュール(メモリモジュール)の構成(変形例)》
図21は、本発明の実施の形態6による記憶装置システムにおいて、図1におけるストレージモジュールの詳細な構成例を示すブロック図である。図21に示すストレージモジュール(メモリモジュール)STGは、図6の構成例と比較して、図6のバッテリバックアップ装置BBUを削除する代わりに、図6のランダムアクセスメモリRAMstを不揮発性メモリNVMEMstに置き換えた点が異なっている。これに以外に構成に関しては、図6の場合と同様であるため詳細な説明は省略する。
不揮発性メモリNVMEMstには、NAND型フラッシュメモリよりも高速な書き込み動作が可能で、かつ小単位(例えばバイト単位等)でのアクセスが可能なメモリが用いられる。代表的には、例えば、相変化型メモリ(PCM:Phase Change Memory)、SPRAM(Spin transfer torque RAM)、MRAM(Magnetoresistive RAM)、FRAM(Ferroelectric RAM)(登録商標)、抵抗変化型メモリ(ReRAM:Resistive RAM)などが挙げられる。このようなNVMEMstを用いることで、NVMEMst内に保持されるテーブル等を迅速に更新することができ、更に、急な電源遮断の際などでも直前のテーブル等の情報を保持することが可能になる。
《本実施の形態による代表的な効果の纏め》
以上に説明した各実施の形態によって得られる代表的な効果を纏めると以下の通りである。
第1に、複数のストレージモジュール(メモリモジュール)が実際に不揮発性メモリへ書き込んだライトデータ量をストレージコントローラへ通達することにより、ストレージコントローラは、次に書き込むライトデータ量から、各ストレージモジュールの予測ライトデータ量を求めることができる。そして、ストレージコントローラは、この予測ライトデータ量が最小のストレージモジュールへ次のデータを書き込むことができる。これによって、ストレージシステム(記憶装置システム)内の複数のストレージモジュール間での書き込み回数の平準化が、高効率で行え、高信頼かつ長寿命のストレージシステムが実現できる。
第2に、複数のストレージモジュールが、実際に不揮発性メモリへ書き込んだライトデータ量に加えて寿命をストレージコントローラへ通達することにより、ストレージコントローラは、前述した予測ライトデータ量を、ストレージシステムの残存寿命以上の寿命を持つストレージモジュールを対象として求めることができる。そして、ストレージコントローラは、この対象としたストレージモジュール内で、予測ライトデータ量が最小のストレージモジュールへ次のデータを書込むことができる。これによって、ストレージシステムの製品寿命を守った上で、複数のストレージモジュール間での書き込み回数の平準化が、高効率で行え、高信頼および長寿命のストレージシステムが実現できる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、前述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
ARB 調停回路
BBU バッテリバックアップ装置
BIF インターフェース回路
BP バックプレーン
BUF バッファ
CM キャッシュメモリ
CMCTL キャッシュ制御回路
CPU プロセッサユニット
CPUCR プロセッサコア
DIAG 診断回路
DKCTL 制御回路
ERSCTL データ消去制御回路
ERSv 消去実行状態
Est 消去ステータス
Esz 消去状態の物理ブロック数
GCCTL ガーベージコレクション制御回路
GCv ガーベージコレクション実行状態
Gst ガーベージコレクションステータス
H2D_IF インターフェース信号
H2S_IF インターフェース信号
HCTL 制御回路
HDIAG 診断回路
HOST_IF インターフェース回路
HRDCTL リード制御回路
HWTCTL ライト制御回路
LAD 論理アドレス
MGTBL,STGTBL,GETBL テーブル
MNGER 情報処理回路
NVM 不揮発性メモリ
NVMEMst 不揮発性メモリ
PAD 物理アドレス
PBK 物理ブロック
RAM,RAMst ランダムアクセスメモリ
RAMC,NVCT0〜NVCT7 メモリ制御回路
RDCTL リード制御回路
Ret データリテンション時間(残存寿命)
RetTBL テーブル
SIFC インターフェース回路
SRV 情報処理装置(ホスト)
STCT 制御回路
STG ストレージモジュール(メモリモジュール)
STIF インターフェース回路
STRGCONT ストレージコントローラ
STRGSYS ストレージシステム(記憶装置システム)
VLD 有効情報
WAF ライトデータサイズ比率
WDT ライトデータ
WTCTL ライト制御回路
Wstg,Wh2d,ntW データサイズ
dLife 寿命情報(残存寿命のしきい値)
eWd 予想ライトデータサイズ

Claims (15)

  1. 複数のメモリモジュールと、
    前記複数のメモリモジュールを制御する第1制御回路とを備え、
    前記複数のメモリモジュールのそれぞれは、複数の不揮発性メモリおよび前記複数の不揮発性メモリを制御する第2制御回路を備え、
    前記第2制御回路は、前記複数の不揮発性メモリに対して実際に書き込みを行った第2書き込みデータ量を把握し、前記第2書き込みデータ量を前記第1制御回路に通達し、
    前記第1制御回路は、前記複数のメモリモジュールに対して発行済みの書き込み命令に伴う第1書き込みデータ量を前記複数のメモリモジュール毎に把握し、前記第1書き込みデータ量と前記第2書き込みデータ量の比率となる第1比率を前記複数のメモリモジュール毎に計算し、当該計算結果を反映して、前記複数のメモリモジュールの中から次の書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  2. 請求項1記載の記憶装置システムにおいて、
    前記第1制御回路は、前記次の書き込み命令に伴う第3書き込みデータ量に前記第1比率を乗算したデータ量と前記第2書き込みデータ量との加算結果となる第4書き込みデータ量を前記複数のメモリモジュール毎に計算し、当該計算結果に基づいて、前記複数のメモリモジュールの中から前記次の書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  3. 請求項2記載の記憶装置システムにおいて、
    前記第1制御回路は、前記複数のメモリモジュール毎に計算した前記第4書き込みデータ量の中で、最小のデータ量を持つメモリモジュールを選択し、当該選択したメモリモジュールに前記次の書き込み命令を発行する記憶装置システム。
  4. 請求項1記載の記憶装置システムにおいて、
    前記第2制御回路は、更に、前記複数の不揮発性メモリにおける消去回数あるいは書き込み回数と残存寿命との依存関係を保持しており、前記依存関係に基づいて得られる前記残存寿命を前記第1制御回路に通達し、
    前記第1制御回路は、更に、前記第2制御回路から通達された前記複数のメモリモジュール毎の前記残存寿命を反映して、前記複数のメモリモジュールの中から前記次の書き込み命令の発行先の候補を定め、当該候補の中から前記第1比率の計算結果を反映して前記次の書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  5. 請求項4記載の記憶装置システムにおいて、
    前記第1制御回路は、前記残存寿命の第1しきい値を保持しており、前記第1しきい値以上の前記残存寿命を持つ単数または複数のメモリモジュールを前記次の書き込み命令の発行先の候補として定める記憶装置システム。
  6. 請求項5記載の記憶装置システムにおいて、
    前記第1制御回路は、前記第1しきい値を可変制御する記憶装置システム。
  7. 請求項6記載の記憶装置システムにおいて、
    前記第1制御回路は、前記次の書き込み命令に伴う第3書き込みデータ量に前記第1比率を乗算したデータ量と前記第2書き込みデータ量との加算結果となる第4書き込みデータ量を前記複数のメモリモジュール毎に計算し、当該計算結果に基づいて、前記次の書き込み命令の発行先の候補の中から前記次の書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  8. 請求項7記載の記憶装置システムにおいて、
    前記第1制御回路は、前記複数のメモリモジュール毎に計算した前記第4書き込みデータ量の中で、最小のデータ量を持つメモリモジュールを選択し、当該選択したメモリモジュールに前記次の書き込み命令を発行する記憶装置システム。
  9. 請求項1記載の記憶装置システムにおいて、
    前記第2制御回路は、前記複数の不揮発性メモリを対象にウエアレベリングおよびガーベージコレクションを実行する記憶装置システム。
  10. 請求項9記載の記憶装置システムにおいて、
    前記第2制御回路は、更に、前記複数の不揮発性メモリに含まれる消去状態の物理ブロック数を前記第1制御回路に通達し、
    前記第1制御回路は、更に、前記消去状態の物理ブロック数の第2しきい値を保持しており、前記消去状態の物理ブロック数が前記第2しきい値以下であるメモリモジュールに対して前記ガーベージコレクションの実行命令を発行することで前記ガーベージコレクションを実行中であるメモリモジュールを把握し、前記次の書き込み命令を発行するメモリモジュールを選択する際には、前記ガーベージコレクションを実行中であるメモリモジュール以外の中から選択する記憶装置システム。
  11. 請求項9記載の記憶装置システムにおいて、
    前記第2制御回路は、前記第1制御回路からの前記書き込み命令に応じて行った前記複数の不揮発性メモリに対する実際の書き込みが完了する毎に前記第2書き込みデータ量を前記第1制御回路に通達する記憶装置システム。
  12. 請求項9記載の記憶装置システムにおいて、
    前記第2制御回路は、前記複数の不揮発性メモリを対象に行った前記ウエアレベリングが完了する毎に前記第2書き込みデータ量を前記第1制御回路に通達する記憶装置システム。
  13. 請求項9記載の記憶装置システムにおいて、
    前記第2制御回路は、前記複数の不揮発性メモリを対象に行った前記ガーベージコレクションが完了する毎に前記第2書き込みデータ量を前記第1制御回路に通達する記憶装置システム。
  14. 複数のメモリモジュールと、
    第1テーブルを持ち、ホストからの第1書き込み命令を受けて、前記第1書き込み命令に伴うデータの書き込み先を前記複数のメモリモジュールの中から前記第1テーブルに基づいて選択し、当該選択したメモリモジュールに第2書き込み命令を発行する第1制御回路とを有し、
    前記複数のメモリモジュールのそれぞれは、複数の不揮発性メモリおよび前記複数の不揮発性メモリを制御する第2制御回路を備え、
    前記第2制御回路は、前記複数の不揮発性メモリに対して、前記第2書き込み命令に伴う書き込みと、ウエアレベリングまたはガーベージコレクションに伴う書き込みを行い、前記第2書き込み命令に伴う書き込みと、前記ウエアレベリングまたは前記ガーベージコレクションに伴う書き込みによって生じる第2書き込みデータ量を把握し、前記第2書き込みデータ量を前記第1制御回路に通達し、
    前記第1テーブルには、前記第2書き込みデータ量と、既に発行済みの前記第2書き込み命令に伴う第1書き込みデータ量とが前記複数のメモリモジュール毎に保持され、
    前記第1制御回路は、前記第1テーブルに基づいて、前記第1書き込みデータ量と前記第2書き込みデータ量の比率となる第1比率を前記複数のメモリモジュール毎に計算し、当該計算結果を反映して、前記複数のメモリモジュールの中から次の前記第2書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  15. 請求項14記載の記憶装置システムにおいて、
    前記第2制御回路は、更に、前記複数の不揮発性メモリにおける消去回数あるいは書き込み回数と残存寿命との依存関係を保持しており、前記依存関係に基づいて得られる前記残存寿命を前記第1制御回路に通達し、
    前記第1テーブルには、更に、前記残存寿命が前記複数のメモリモジュール毎に保持され、
    前記第1制御回路は、更に、前記第1テーブル内の前記残存寿命を反映して、前記複数のメモリモジュールの中から次の前記第2書き込み命令の発行先の候補を定め、当該候補の中から前記第1比率の計算結果を反映して次の前記第2書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
JP2014534130A 2012-09-07 2012-09-07 記憶装置システム Expired - Fee Related JP5820078B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/072961 WO2014038073A1 (ja) 2012-09-07 2012-09-07 記憶装置システム

Publications (2)

Publication Number Publication Date
JP5820078B2 true JP5820078B2 (ja) 2015-11-24
JPWO2014038073A1 JPWO2014038073A1 (ja) 2016-08-08

Family

ID=50236720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014534130A Expired - Fee Related JP5820078B2 (ja) 2012-09-07 2012-09-07 記憶装置システム

Country Status (3)

Country Link
US (1) US20150186056A1 (ja)
JP (1) JP5820078B2 (ja)
WO (1) WO2014038073A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015087651A1 (ja) * 2013-12-12 2015-06-18 株式会社フィックスターズ メモリの使用可能期間を延ばすための装置、プログラム、記録媒体および方法
US9383926B2 (en) * 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
JP6709689B2 (ja) 2016-06-16 2020-06-17 株式会社日立製作所 計算機システム及び計算機システムの制御方法
US11416162B2 (en) * 2017-09-27 2022-08-16 Beijing Memblaze Technology Co., Ltd Garbage collection method and storage device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007013372A1 (ja) * 2005-07-29 2007-02-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
JP2007265265A (ja) * 2006-03-29 2007-10-11 Hitachi Ltd フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
JP2010015222A (ja) * 2008-07-01 2010-01-21 Panasonic Corp メモリカード
JP2011003111A (ja) * 2009-06-22 2011-01-06 Hitachi Ltd フラッシュメモリを用いたストレージシステムの管理方法及び計算機
JP2012118587A (ja) * 2010-11-29 2012-06-21 Canon Inc 管理装置及びその制御方法、並びにプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7568075B2 (en) * 2005-09-22 2009-07-28 Hitachi, Ltd. Apparatus, system and method for making endurance of storage media
JP4933861B2 (ja) * 2005-09-22 2012-05-16 株式会社日立製作所 ストレージ制御装置、データ管理システムおよびデータ管理方法
KR100909902B1 (ko) * 2007-04-27 2009-07-30 삼성전자주식회사 플래쉬 메모리 장치 및 플래쉬 메모리 시스템
US9195588B2 (en) * 2010-11-02 2015-11-24 Hewlett-Packard Development Company, L.P. Solid-state disk (SSD) management
US8918595B2 (en) * 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
US9405670B2 (en) * 2011-06-09 2016-08-02 Tsinghua University Wear leveling method and apparatus
US20140032820A1 (en) * 2012-07-25 2014-01-30 Akinori Harasawa Data storage apparatus, memory control method and electronic device with data storage apparatus

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007013372A1 (ja) * 2005-07-29 2007-02-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
JP2007265265A (ja) * 2006-03-29 2007-10-11 Hitachi Ltd フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
JP2010015222A (ja) * 2008-07-01 2010-01-21 Panasonic Corp メモリカード
JP2011003111A (ja) * 2009-06-22 2011-01-06 Hitachi Ltd フラッシュメモリを用いたストレージシステムの管理方法及び計算機
JP2012118587A (ja) * 2010-11-29 2012-06-21 Canon Inc 管理装置及びその制御方法、並びにプログラム

Also Published As

Publication number Publication date
WO2014038073A1 (ja) 2014-03-13
JPWO2014038073A1 (ja) 2016-08-08
US20150186056A1 (en) 2015-07-02

Similar Documents

Publication Publication Date Title
US10459808B2 (en) Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US10241877B2 (en) Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event
US9552290B2 (en) Partial R-block recycling
US9569118B2 (en) Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
US9367469B2 (en) Storage system and cache control method
JP2021089733A (ja) ストレージ装置、及び該ストレージ装置の動作方法
US10817418B2 (en) Apparatus and method for checking valid data in memory system
US20140164881A1 (en) Policy for read operations addressing on-the-fly decoding failure in non-volatile memory
WO2016172235A1 (en) Method and system for limiting write command execution
US11157402B2 (en) Apparatus and method for managing valid data in memory system
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
JP2019502987A (ja) 不揮発性メモリ・システムにおけるマルチページ障害の回復
CN113126907B (zh) 用于存储器装置的异步电力损失恢复
KR20210111527A (ko) 메모리 시스템에서 가비지 컬렉션을 수행하는 장치 및 방법
JP5847940B2 (ja) 半導体装置
WO2015052833A1 (ja) ストレージ装置、ストレージシステム、及びストレージ装置制御方法
US9390003B2 (en) Retirement of physical memory based on dwell time
KR20200018999A (ko) 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법
US11775389B2 (en) Deferred error-correction parity calculations
JP5820078B2 (ja) 記憶装置システム
US10614890B2 (en) Memory system and operating method thereof
KR20230147950A (ko) 시스템 내 전원 손실 데이터 보호를 위한 장치 및 방법
Ware et al. Architecting a hardware-managed hybrid DIMM optimized for cost/performance
US10817435B1 (en) Queue-based wear leveling of memory components

Legal Events

Date Code Title Description
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: 20150924

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151001

R150 Certificate of patent or registration of utility model

Ref document number: 5820078

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees