説明

ソリッド・ステート・ドライブ装置および平準化管理情報の退避・回復方法

【課題】大容量の平準化管理情報を短時間のうちに不揮発性メモリに退避させることを可能にする。
【解決手段】平準化管理情報記憶部13は、レーン接続バス30を介して8つのレーン21それぞれに含まれるバッファ記憶制御部22のBM220に接続され、各レーン21には、バッファ記憶制御部22とNVMチップ23とを接続するチップ接続バス24が設けられている。各レーン21のバッファ記憶制御部22は、平準化管理情報退避・回復処理部14の指示のもとに、平準化管理情報記憶部13から転送される退避データを、チップ接続バス24を介して、互いに独立に並行してNVMチップ23へ転送する。その退避データの中には、平準化管理情報だけでなく、その平準化管理が平準化管理情報記憶部13に記憶されていたときの先頭アドレスが含まれている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性半導体メモリを用いて構成された記憶装置であるソリッド・ステート・ドライブ装置(以下、SSD装置と略称)、および、そのSSD装置の記憶領域におけるデータ書き換え回数を平準化するために用いられる平準化管理情報の退避・回復方法に関する。
【背景技術】
【0002】
近年、不揮発性半導体メモリであるフラッシュメモリを用いて、ハードディスク装置に代わるSSD装置を構成することが盛んに行われるようになった。SSD装置は、ハードディスク装置で必須の可動部品が不要であるため、一般には、高速かつ高信頼であるとされている。
【0003】
しかしながら、フラッシュメモリには、データの書き込みと消去に伴う疲労現象がみられ、そのメモリセルへのデータの書き換え回数は、通常、10万回とされている。コンピュータ応用の場合、その使い方にもよるが、SSD装置におけるフラッシュメモリの特定の記憶領域のデータが10万回書き換えられるまでに、必ずしも長い時間を要しない。これでは、可動部品がないがゆえに高信頼である、というSSD装置のメリットが損なわれてしまう。
【0004】
そこで、フラッシュメモリを用いたSSD装置では、その期待される高信頼性を確保するために、特定の記憶領域へのデータの書き込み(消去)が集中するのを回避し、各記憶領域におけるデータ書き換え回数を平準化する、いわゆる、ウェアレベリング技術が導入されている(例えば、特許文献1、特許文献2参照)。
【0005】
特許文献1、特許文献2などに示されているように、ウェアレベリングの方法は様々であるが、一般的なウェアレベリングでは、記憶領域ごとに書き換え回数(消去回数)を管理するテーブルや、コンピュータから指定される論理アドレスをフラッシュメモリの物理アドレスに変換するためのアドレス変換テーブルがしばしば利用される。本明細書では、アドレス変換テーブルなどウェアレベリングに用いられる情報を総称して、平準化管理情報と呼ぶ。
【0006】
平準化管理情報は、しばしば、SSD装置を構成するフラッシュメモリの所定の記憶領域に記憶される(例えば、特許文献2参照)。しかしながら、データアクセスの高速性が要求されるような応用では、論理・物理アドレス変換も高速で行う必要があり、その目的のために、アドレス変換テーブルが高速のDRAM(Dynamic Random Access Memory)などに記憶されることがある。その場合、DRAMが揮発性メモリであることから、SSD装置は、電源投入の都度、アドレス変換テーブルを含む平準化管理情報をDRAMにロードすることが必要となる。また、平準化管理情報が、例えば、過去の履歴に伴って、時々刻々に変化するような場合には、SSD装置は、電源切断のたびに、DRAMに記憶されている平準化管理情報を不揮発性のフラッシュメモリに退避することが必要となる。
【0007】
以上のように、平準化管理情報が揮発性メモリに記憶され、時々刻々書き換えられるような応用のSSD装置においては、電源が切断または投入されるたびに、平準化管理情報を退避または回復する処理が実行される。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2003−203016号公報
【特許文献2】特開2008−191855号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
一般に、SSD装置は、数10GB〜数100GBとういう大容量の記憶装置であるから、その平準化管理情報も数10MBに及ぶ場合がある。また、電源の切断では、突然の停電も考慮しなければならない。すなわち、SSD装置における平準化管理情報の退避・回復処理では、数10MBに及ぶ大容量の平準化管理情報を短時間(例えば、0.3秒〜0.5秒)のうちに不揮発性メモリに退避させることが解決すべき大きな課題となる。
【0010】
そこで、本発明の目的は、大容量の平準化管理情報を短時間のうちに不揮発性メモリに退避させることが可能なSSD装置およびその平準化管理情報の退避・回復方法を提供することにある。
【課題を解決するための手段】
【0011】
本発明に係るソリッド・ステート・ドライブ(SSD)装置は、不揮発性メモリチップを複数含んでなる不揮発データ記憶部と、外部データを前記不揮発データ記憶部へ書き込む制御、および、前記不揮発データ記憶部に書き込まれているデータを読み出す制御を行う不揮発データ記憶制御部と、を含んで構成され、その不揮発データ記憶部は、それぞれが1個以上の不揮発性メモリチップからなる複数のレーンに分割されて構成されるとともに、前記レーンのそれぞれに、そのレーンに属する不揮発性メモリチップへ書き込むデータ、および、そのレーンに属する不揮発性メモリチップから読み出されるデータを一時記憶するバッファ記憶制御部を備え、また、前記不揮発データ記憶制御部は、平準化管理情報を記憶する平準化管理情報記憶部と、電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、電源供給のオフまたはオンが検知されたとき、平準化管理情報の退避または回復の処理を行う平準化管理情報退避・回復処理部と、を備える。そして、その平準化管理情報退避・回復処理部は、平準化管理情報を不揮発データ記憶部に退避するとき、その退避する平準化管理情報を、バッファ記憶制御部を介して、そのそれぞれのレーンに属する不揮発性メモリチップに同時に並行して書き込むことを特徴とする。
【0012】
一般に、不揮発性メモリへのデータの書き込みは、データ読み出しに比べ長時間を要するが、本発明では、平準化管理情報記憶部から読み出されて退避される平準化管理情報を、複数のレーンそれぞれに設けられたバッファ記憶制御部を介することによって、それぞれのレーンごとにそのレーンに属する不揮発性メモリチップに、互いに独立に並行して書き込むことが可能となる。従って、平準化管理情報の退避に要する時間が短縮される。
【発明の効果】
【0013】
本発明によれば、大容量の平準化管理情報を短時間のうちに不揮発性メモリに退避させることが可能なソリッド・ステート・ドライブ装置およびその平準化管理情報の退避・回復方法を提供することが可能になる。
【図面の簡単な説明】
【0014】
【図1】本発明の実施形態に係るSSD装置の構成の例を示した図。
【図2】本発明の実施形態に係るNVMチップの構成の例を示した図。
【図3】平準化管理情報記憶部とNVMチップの記憶領域の構成の例を示した図。
【図4】退避先のNVMチップに故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しない場合の平準化管理情報の退避処理において行われる退避データの基本転送手順の例を示した図。
【図5】図4に示した基本転送手順に従って平準化管理情報をNVMチップへ退避するとき、平準化管理情報記憶部のWMに記憶されている平準化管理情報データが各NVMチップへ退避される様子を例示した図。
【図6】退避先のNVMチップに故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しない場合の平準化管理情報の回復処理において行われる回復データの基本転送手順の例を示した図。
【図7】図4および図6を用いて説明した平準化管理情報の退避処理および回復処理で行われるデータの転送手順をタイムチャートで示した図。
【図8】不良ブロック情報テーブルおよび故障チップ情報テーブルの構成の例を示した図。
【図9】平準化管理情報の退避処理中にページ書き込みエラーが生じる場合の退避データの転送手順の例を示した図(前半部分)。
【図10】平準化管理情報の退避処理中にページ書き込みエラーが生じる場合の退避データの転送手順の例を示した図(後半部分)。
【図11】故障チップがある場合の退避データの転送手順のうち、後半部分の転送手順の例を示した図。
【図12】故障チップがある場合の退避データの転送手順において、前半部分の退避処理で退避されなかった平準化管理情報が後半部分の退避処理で各NVMチップに退避される様子を示した図。
【図13】不良ブロックが存在するNVMチップにおけるページアドレスの付し方を説明する図。
【図14】平準化管理情報退避・回復処理部およびバッファ記憶制御部が行う平準化管理情報の退避処理の処理フローの例を示した図。
【発明を実施するための形態】
【0015】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
【0016】
図1は、本発明の実施形態に係るSSD装置の構成の例を示した図である。図1に示すように、SSD装置1は、自身にとって外部装置となるホスト装置2に、ホストバス3を介して接続されて用いられる。
【0017】
ここで、ホスト装置2は、いわゆるコンピュータ、または、コンピュータを利用した様々な形態の情報処理装置、制御装置、端末装置などである。また、ホストバス3は、IDE(Integrated Drive Electronics),SCSI(Small Computer System Interface),SATA(Serial Advanced Technology Attachment),SAS(Serial Attached SCSI),USB(Universal Serial Bus)などである。
【0018】
SSD装置1は、不揮発データ記憶部20および不揮発データ記憶制御部10によって構成される。不揮発データ記憶部20は、不揮発性メモリであるフラッシュメモリからなるNVM(Non-Volatile Memory:不揮発性メモリ)チップ23を複数個含んで構成され、ホスト装置2から供給されるデータを不揮発に記憶する。また、不揮発データ記憶制御部10は、基本的には、ホスト装置2から供給されるデータをNVMチップ23へ書き込む制御、および、ホスト装置2からの求めに応じてNVMチップ23に書き込まれているデータを読み出す制御を行う。
【0019】
不揮発データ記憶制御部10は、データ書き込み・読み出し制御部11、平準化管理部12、平準化管理情報記憶部13、平準化管理情報退避・回復処理部14、電源オン・オフ検知部15を含んで構成される。
【0020】
データ書き込み・読み出し制御部11は、ホストバス3を介してホスト装置2から送信されるSSD装置1に対するデータ書き込み要求、データ読み出し要求などのコマンドを受信する。そして、そのコマンドがデータ書き込み要求である場合には、コマンドに続いてホスト装置2から送信される論理アドレスと書き込みデータを受信し、論理アドレスをNVMチップ23の物理アドレスに変換して、前記の受信した書き込みデータをその変換した物理アドレスで指定されるNVMチップ23へ書き込む。また、コマンドがデータ読み出し要求である場合には、コマンドに続いてホスト装置2から送信される論理アドレスをNVMチップ23の物理アドレスに変換して、その変換した物理アドレスで指定されるNVMチップ23からデータを読み出し、読み出したデータをホスト装置2へ送信する。
【0021】
平準化管理情報記憶部13は、データ書き込み・読み出し制御部11が論理アドレスを物理アドレスに変換するときに用いられる論理・物理変換テーブルや、NVMチップ23の物理アドレスとその物理アドレスで指定される記憶領域のデータの書き換え(消去)回数などの情報を記憶する。本実施形態では、この平準化管理情報記憶部13は、揮発性半導体メモリであるDRAMによって構成されるとする。
【0022】
平準化管理部12は、データ書き込み・読み出し制御部11が実行するコマンドを監視して、平準化管理情報記憶部13におけるNVMチップ23の各記憶領域のデータの消去回数などを更新するとともに、その消去回数を平準化するために、適宜、論理・物理変換テーブルを変更する。なお、本実施形態では、論理・物理変換テーブルを含んで構成される平準化管理情報は、所定の時間ごとにまたは所定の条件が満たされるごとに変更されるものであれば、どのようなものであってもよい。従って、平準化管理情報を変更する条件や論理・物理変換の方法などについては、とくに限定をするものではない。
【0023】
電源オン・オフ検知部15は、SSD装置1へ供給される電源供給の切断(オフ)および投入(オン)を検知する。なお、SSD装置1は、図示しない電源回路を有し、その電源回路に設けられているコンデンサにより、電源オン・オフ検知部15により電源供給のオフが検知された後も、所定の時間(例えば、0.3〜0.5秒)は、SSD装置1が正常に動作するための電圧および電流が供給されるものとする。
【0024】
平準化管理情報退避・回復処理部14は、電源オン・オフ検知部15によってSSD装置1への電源供給のオフが検知されたとき、平準化管理情報記憶部13に記憶されている平準化管理情報を不揮発データ記憶部20のNVMチップ23の記憶領域のあらかじめ定められた領域に退避する。また、平準化管理情報退避・回復処理部14は、SSD装置1への電源供給のオンが検知されたとき、NVMチップ23に退避されている平準化管理情報を平準化管理情報記憶部13に回復させる。
【0025】
ここで、各レーン21のバッファ記憶制御部22とそのレーン21に属するNVMチップ23とは、チップ接続バス24によって接続されている。また、各レーン21のバッファ記憶制御部22と不揮発データ記憶制御部10とは、レーン接続バス30によって接続されている。
【0026】
平準化管理情報退避・回復処理部14は、その内部に不良ブロック情報テーブル141および故障チップ情報テーブル142を有しているが、その詳細については後記する。また、平準化管理情報の退避・回復の詳細な処理手順については、この明細書の中で順次説明する。
【0027】
不揮発データ記憶部20は、複数のNVMチップ23を含んで構成されるが、その複数のNVMチップ23は、レーン21によってグループ化される。本実施形態では、8個のレーン21が設けられ、それぞれのレーン21には、それぞれ独立に動作するバッファ記憶制御部22および3個のNVMチップ23が含まれている。
【0028】
バッファ記憶制御部22は、高速のRAMなどで構成されたバッファメモリ(BM:図4など参照)を有して構成され、NVMチップ23への書き込み・読み出しデータをバッファメモリに一時記憶するとともに、NVMチップ23に対するデータの書き込みおよび読み出しタイミングの調整を行う。
【0029】
図2は、NVMチップ23の構成の例を示した図である。ここでは、NVMチップ23は、いわゆるフラッシュメモリである。フラッシュメモリの場合、図2(a),(b)に示すように、1個のNVMチップ23の記憶領域は、複数のブロック231に分割され、それぞれのブロック231は、複数のページ232(例えば、64ページ)に分割されて構成されている。また、図2(c)に示すように、それぞれのページ232には、4kBのデータを記憶する記憶領域が設けられている。
【0030】
そこで、1個のNVMチップ23の記憶容量が、例えば、4GBである場合には、1ブロック=64ページ、1ページ=4kBであるとすると、1個のNVMチップ23には、およそ16000個のブロックが設けられていることになる。本実施形態では、このうち、例えば、14個のブロックを、平準化管理情報を退避するための退避データ記憶領域として用い、残りのブロックを外部データ(ホスト装置2から供給されるデータ)を記憶する外部データ記憶領域として用いる。
【0031】
これらNVMチップ23におけるブロック231およびページ232の構成は、フラッシュメモリ自体の構造およびその読み出し・書き込み方法に由来し、そのデータの読み出し・書き込みついては、次のような制約が設けられている。
(1)データ読み出し・書き込みは、ページ232の単位で行う。(2)データの消去はブロック231の単位で行う。(3)ページ232が消去された状態でなければ、そのページ232への書き込みはできない。(4)ブロック231の消去回数には、上限がある。
【0032】
本実施形態では、NVMチップ23に対する退避データの書き込みまたは読み出しは、図2(c)に示すフォーマットを有するページ232を単位として行われる。そのフォーマットによれば、ページ232は、ヘッダ233とそれぞれが512Bの退避データを含んでなる8個のセグメント234とによって構成される。このとき、各セグメント234の退避データには、CRC(Cyclic Redundancy Check)符号やリード・ソロモン符号などの検査符号235が付加される。また、本実施形態では、ヘッダ233は、退避される1ページ分(4kB)の平準化管理情報の先頭データが平準化管理情報記憶部13に記憶されていたときのアドレス(以下、本明細書では、このアドレスを退避データ先頭アドレスと呼ぶ)を含んで構成される。
【0033】
なお、ここまでの説明では、ページ232は、4kBのデータを記憶する記憶領域を有するとしているが、実際には(物理的には)4kB+αの記憶領域を有している。このとき、+αは200〜256B程度であるが、この+αの記憶領域部分を利用して、ヘッダ233や検査符号235が記憶される。
【0034】
図3は、平準化管理情報記憶部13とNVMチップ23の記憶領域の構成の例を示した図である。図3に示すように、平準化管理情報記憶部13には、平準化管理情報のほかに追加退避情報やそれらを併せたデータに対するチェックサムが記憶され、平準化管理情報がNVMチップ23に退避されるときには、これらのデータがすべて退避される。ここで、追加退避情報とは、平準化管理情報退避・回復処理部14に含まれる各種レジスタ、不良ブロック情報テーブル141、故障チップ情報テーブル142などに記憶されているデータをいう。
【0035】
従って、電源オン・オフ検知部15により電源供給のオフが検知されたときには、平準化管理情報退避・回復処理部14は、まず、不良ブロック情報テーブル141などの追加退避情報を平準化管理情報記憶部13に格納した上で、平準化管理情報記憶部13に記憶されているすべてのデータを退避データとしてNVMチップ23へ退避する。
【0036】
本実施形態では、平準化管理情報記憶部13に記憶されるデータの総容量を全48MBであるとし、その48MBのデータを24個のNVMチップ23に分散して退避する。このとき、24個のNVMチップ23全体として、全84MBの退避データ記憶領域が用意され、そのうち、48MBが基本退避領域であり、36MBが予備退避領域である。すなわち、NVMチップ23それぞれについて見れば、512ページ(8ブロック)が基本退避領域として用いられ、384ページ(6ブロック)が予備退避領域として用いられる。なお、本実施形態では、これら896ページの退避データ記憶領域は、各NVMチップ23において物理ページのアドレス(#0)〜(#895)の領域に、固定的に割当てられるものとする。
【0037】
予備退避領域には、24個のNVMチップ23のいずれかが故障チップであった場合に、その故障チップに退避されることになっていた退避データが各NVMチップ23の予備退避領域に分散されて退避される。また、NVMチップ23に不良ブロックが存在した場合や、NVMチップ23へのデータ書き込み時にページ書き込みエラーが生じた場合には、その分、余分な退避領域が必要となるので、その場合にも、平準化管理情報は、予備退避領域に広がって記憶される。
【0038】
続いて、図4〜図7を参照して、NVMチップ23に故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しないまたは生じない場合について、平準化管理情報記憶部13に記憶されている平準化管理情報をNVMチップ23に退避または回復する手順について説明する。なお、本明細書では、単に、平準化管理情報という場合には、平準化管理情報記憶部13に記憶されている全部のデータ、すなわち、図3に示した平準化管理情報だけでなく、追加退避情報およびチェックサムを含むものとする。また、以下では、退避または回復されているときの平準化管理情報を、しばしば、退避データまたは回復データと呼ぶ。
【0039】
図4は、退避先のNVMチップ23に故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しない場合の平準化管理情報の退避処理において行われる退避データの基本転送手順の例を示した図である。なお、図4において、矢線は退避データの転送方向を示し、矢線の傍の括弧付の数字は、その転送が行われる順序を表す。
【0040】
図4において、平準化管理情報記憶部13は、DRAMなどで構成されたWM(ウェアレベリングメモリ)130を含んで構成され、また、バッファ記憶制御部22は、1ページ分(4kB)の記憶容量のBM(バッファメモリ)220を含んで構成される。なお、WM130は、実質的には平準化管理情報記憶部13そのものと考えてよいが、本明細書では、平準化管理情報記憶部13を構成するDRAMなどの揮発性メモリからなる部分を、とくに、WM130と呼んだものである。
【0041】
WM130からNVMチップ23への退避データの転送は、平準化管理情報退避・回復処理部14の制御のもとに、1ページ分のデータ(4kB)を単位として行われる。すなわち、平準化管理情報退避・回復処理部14は、まず、WM130から最初の1ページ分の退避データを読み出し、読み出した退避データをBM(#0)と記載されたBM220(以下、BM(#0)と略記する)へ転送する(転送順序(1)参照)。このとき、BM(#0)へ転送された1ページ分の退避データは、当該BM(#0)に一時記憶される。
【0042】
なお、平準化管理情報退避・回復処理部14は、当該1ページ分の退避データを転送するに際して、当該退避データの先頭データがWM130に記憶されていたときのアドレス、つまり、退避データ先頭アドレスを併せてBM(#0)へ転送する。
【0043】
次に、平準化管理情報退避・回復処理部14は、BM(#0)を有するバッファ記憶制御部22に対し、BM(#0)に一時記憶されている1ページ分の退避データを、NVM(#0)と記載されたNVMチップ23(以下、NVM(#0)と略記する)へ転送することを指示する。そして、その転送指示を受けたBM(#0)を有するバッファ記憶制御部22は、BM(#0)に一時記憶されている1ページ分の退避データに、ヘッダ233(退避データ先頭アドレス)および退避データ512Bごとの検査符号235を付加し、NVM(#0)へ転送する(転送順序(2)参照)。NVM(#0)に転送された退避データは、NVM(#0)のページ(#0)の領域に書き込まれる。
【0044】
平準化管理情報退避・回復処理部14は、以上の処理においてBM(#0)を有するバッファ記憶制御部22に対し、退避データのNVM(#0)への退避データの転送を指示すると、その転送の終了を待つことなく、次の処理へ移行する。すなわち、平準化管理情報退避・回復処理部14は、WM130から次の1ページ分の退避データを読み出し、その読み出した退避データを、BM(#1)へ転送する(転送順序(3)参照)。転送された退避データは、そのBM(#1)に一時記憶される。また、その転送に際しては、退避データ先頭アドレスが併せて転送される。
【0045】
次に、平準化管理情報退避・回復処理部14は、BM(#1)を有するバッファ記憶制御部22に対し、BM(#1)に一時記憶されている1ページ分の退避データを、NVM(#1)へ転送することを指示する。そして、その転送指示を受けたBM(#1)を含むバッファ記憶制御部22は、BM(#1)に一時記憶されている1ページ分の退避データにヘッダ233(退避データ先頭アドレス)および退避データ512Bごとの検査符号235を付加し、NVM(#1)へ転送する(転送順序(4)参照)。
【0046】
以下、同様に、平準化管理情報退避・回復処理部14およびバッファ記憶制御部22は、転送順序(5),(6),・・・,(47),(48)で示される退避データの転送を実行する。そして、以上の転送順序(1)〜(48)で示される退避データの転送により、NVM(#0)〜NVM(#23)のそれぞれのページ(#1)に所定の退避データが退避されたことになる。
【0047】
さらに、同様に、転送順序(1)〜(48)で示される退避データの転送が繰り返し実行されることによって、所定の退避データがNVM(#0)〜NVM(#23)のそれぞれのページ(#2),ページ(#3),・・・,ページ(#511)へ、順次、退避される。
【0048】
図5は、図4に示した基本転送手順に従って平準化管理情報をNVMチップ23へ退避するとき、平準化管理情報記憶部13のWM130に記憶されている平準化管理情報が各NVMチップ23へ退避される様子を例示した図である。
【0049】
図5では、WM130は、1ページ(4kB)分のデータで区分され、その区分された区画内には、転送先となるNVMチップ23のチップ番号およびページアドレスが記載されている。また、各区画の左側には、その区画の先頭アドレスが記載されている。この先頭アドレスは、退避データ先頭アドレスとして、各NVMチップ23に書き込まれるページ232のデータのヘッダ233に含まれる。
【0050】
また、図5では、矢線により、退避元のWM130の区画と退避先のNVMチップ23のページが接続されて示されている。そして、この矢線の傍に付された括弧付の数字は、図4における括弧付の数字と同じものであり、データの転送順序を意味している。ただし、図が煩雑になることを避けるため、この転送順序を表す数は、一部の矢線にのみ付されている。
【0051】
図6は、退避先のNVMチップ23に故障チップ、不良ブロックおよびページ書き込みエラーのいずれも存在しない場合の平準化管理情報の回復処理において行われる回復データの基本転送手順の例を示した図である。なお、ここで、回復データとは、NVMチップ23に退避されている平準化管理情報をいう。また、図6において、矢線は回復データの転送方向を示し、矢線の傍の括弧付の数字は、その転送が行われる順序を表す。
【0052】
平準化管理情報の回復処理では、平準化管理情報退避・回復処理部14は、まず、各レーン21のバッファ記憶制御部22に対して、NVMチップ23からの回復データの読み出を指示する。各レーン21のバッファ記憶制御部22は、その指示を受けて、NVM(#0)〜NVM(#7)から1ページ分の回復データを読み出し、その読み出した回復データをそれぞれBM(#0)〜BM(#7)へ転送する(転送順序(1)参照)。そして、その転送されたそれぞれの回復データは、BM(#0)〜BM(#7)に一時記憶される。
【0053】
ここで、8つのバッファ記憶制御部22が平準化管理情報退避・回復処理部14から回復データの読み出し指示を受ける時間は、バッファ記憶制御部22がNVM(#0)〜NVM(#7)から回復データ読み出して、BM(#0)〜BM(#7)へ転送する時間に比べ、極めて小さいため、各レーン21におけるNVMチップ23からBM220への回復データの転送は、ほとんど同時に行われる。
【0054】
次に、平準化管理情報退避・回復処理部14は、BM(#0)〜(#7)に一時記憶された回復データを、順次、WM130へ転送し(転送順序(2)〜(9)参照)、WM130の元のアドレスへ格納する。
【0055】
なお、このBM(#0)〜(#7)からWM130への回復データの転送に際しては、NVM(#0)〜(#7)から読み出された回復データのヘッダ233(回復データのフォーマットは、図2の退避データのフォーマットと同じ)に含まれる退避データ先頭アドレスが併せて転送される。従って、平準化管理情報退避・回復処理部14は、BM(#0)〜(#7)から転送される回復データをWM130の元のアドレスに容易に格納することができる。
【0056】
以下、同様に、平準化管理情報退避・回復処理部14は、各レーン21のバッファ記憶制御部22に対して、NVMチップ23から次の回復データの読み出しを指示し、その指示を受けて、各レーン21のバッファ記憶制御部22は、NVM(#8)〜NVM(#15)から1ページ分の回復データを読み出し、その読み出した回復データをそれぞれBM(#0)〜BM(#7)へ転送し(転送順序(10)参照)、それぞれBM(#0)〜BM(#7)に一時記憶する。
【0057】
次に、平準化管理情報退避・回復処理部14は、BM(#0)〜(#7)に一時記憶された回復データを、順次、WM130へ転送し(転送順序(11)〜(18)参照)、WM130の元のアドレスへ格納する。
【0058】
さらに、同様に、平準化管理情報退避・回復処理部14およびバッファ記憶制御部22は、NVM(#16)〜NVM(#23)から次の1ページ分の回復データを読み出し、読み出したデータを、BM(#0)〜BM(#7)経由でWM130へ転送する(転送順序(19)〜(27)参照)。
【0059】
以上の転送順序(0)〜(27)で示される回復データの転送により、NVM(#0)〜NVM(#23)のそれぞれのページ(#0)に退避されていたデータがWM130に回復されたことになる。さらに、転送順序(0)〜(27)で示される回復データの転送を511回繰り返すことによって、NVM(#0)〜NVM(#23)のそれぞれのページ(#1)〜ページ(#511)に退避されていたデータがWM130に回復される。
【0060】
図7は、図4および図6を用いて説明した平準化管理情報の退避処理および回復処理で行われるデータの転送手順をタイムチャートで示した図であり、(a)は、退避処理時のタイムチャート、(b)は、回復処理時のタイムチャートである。なお、図7において、横方向は時間軸を示し、縦方向の各段には、各NVMチップ23(NVM(#0)〜(#23))に係るデータ転送動作が網掛けされた横方向のバーで示されている。
【0061】
退避処理の場合、その単位処理は、[1]平準化管理情報退避・回復処理部14が1ページ分の退避データをWM130からBM220へ転送する動作(レーン接続バス30を利用)、[2]バッファ記憶制御部22が1ページ分の退避データをBM220へ転送する動作(各レーン21のチップ接続バス24を利用)、[3]NVMチップ23が1ページ分の退避データをプログラムする動作(ここでいうプログラムとは、フラッシュメモリの記憶セルへのデータの電気的・物理的な書き込み動作をいう)、によって構成される。すなわち、1ページ分の退避データをWM130から読み出して、NVMチップ23に書き込むまでの単位退避処理は、[1]+[2]+[3]の動作によって構成される。
【0062】
また、回復処理の場合、その単位処理は、[4]バッファ記憶制御部22が1ページ分の回復データをNVMチップ23から読み出し、BM220へ転送する動作(各レーン21のチップ接続バス24を利用)、[5]平準化管理情報退避・回復処理部14が1ページ分の回復データをBM220からWM130へ転送する動作(レーン接続バス30を利用)、によって構成される。すなわち、1ページ分の回復データをNVMチップ23から読み出して、WM130に戻すまでの単位回復処理は、[4]+[5]の動作によって構成される。
【0063】
なお、図7(a),(b)において、網掛けされた横方向バーの上側に記載された括弧付の数字は、退避または回復データの転送順序を表し、図4(退避処理)および図6(回復処理)における括弧付の数字の転送順序に対応付けられている。
【0064】
ところで、退避処理の動作[2]におけるBM220からNVMチップ23への退避データの転送は、レーン21のそれぞれに独立に設けられたチップ接続バス24を介して行われるので、図7(a)(図4も参照)に示すように、各レーン21における退避データの転送(図中の転送順序(2),(4),・・・,(8))は、それぞれ同時に、並行して行われることが可能である。また、動作[3]のプログラムは、24個のNVMチップ23でそれぞれ同時に、並行して行われることが可能である。
【0065】
従って、実質的には、動作[2]は、その動作時間を本来の1/8まで短縮することができ、また、動作[3]は、その動作時間を本来の1/24まで短縮することができることになる。ちなみに、図4および図7(a)に括弧付の数字で示した転送順序で退避処理が行われ、動作[1],[2],[3]の動作時間を、それぞれT1,T2,T3としたとき、T2≦T1×8、かつ、T2+T3≦T1×24という条件が満たされる場合には、単位退避処理([1]+[2]+[3])の動作時間は、見かけ上、T1の時間で済むことになる。これは、単位退避処理の動作時間が最良値で1/24まで短縮されることを意味している。
【0066】
同様に、回復処理の動作[4]におけるNVMチップ23からBM220への回復データの転送も、レーン21のそれぞれに独立に設けられたチップ接続バス24を介して行われるので、図7(a)(図6も参照)に示すように、各レーン21における回復データの転送(図中の転送順序(1),(10),・・・)は、それぞれ同時に、並行して行われることが可能である。
【0067】
従って、実質的には、動作[4]は、その動作時間を本来の1/8まで短縮することができる。ちなみに、図6および図7(a)に括弧付の数字で示した転送順序で回復処理が行われ、動作[4],[5]の動作時間を、それぞれT4,T5としたときには、単位回復処理([4]+[5])の動作時間は、見かけ上、T4/8+T5の時間で済むことになる。
【0068】
以上の通り、本実施形態では、平準化管理情報の退避・回復処理の所要時間が大きく短縮される(最良値で1/24または1/8に短縮)ことになる。
【0069】
続いて、図8〜図12を参照して、NVMチップ23に故障チップ、不良ブロックまたはページ書き込みエラーが存在または生じる場合について、平準化管理情報記憶部13に記憶されている平準化管理情報をNVMチップ23に退避または回復する手順について説明する。図8は、不良ブロック情報記憶部としての不良ブロック情報テーブル141および故障チップ情報記憶部としての故障チップ情報テーブル142の構成の例を示した図である。
【0070】
図8(a)の不良ブロック情報テーブル141は、24個のNVMチップ23のそれぞれについて、平準化管理情報の退避領域として用いられるブロック231の「良」または「不良」の状態情報を記憶するテーブルである。不良ブロック情報テーブル141は、平準化管理情報退避・回復処理部14が平準化管理情報をNVMチップ23に退避する際に、各NVMチップ23の退避領域として用いられるブロック231を消去したとき、その都度、その消去結果に基づき作成される。すなわち、平準化管理情報退避・回復処理部14は、ブロック231を消去しても、そのブロック231に含まれるページ232のデータの少なくとも一部が消去されなかった場合には、そのブロックを「不良」と判定する。そして、不良ブロック情報テーブル141における当該のNVMチップ23中の不良と判定されたブロックの状態情報に“1”をセットする。
【0071】
なお、不良ブロック情報テーブル141において、“1”は、当該ブロックが「不良」であることを、また、“0”は、当該ブロックが「良」であることを表す。図8(a)の例では、24個のNVMチップ23のそれぞれに、退避領域のブロック231が14ブロック設けられ、NVM(#1)のブロック(#2)、および、NVM(#2)のブロック(#1)を「不良」であるとしている。
【0072】
故障チップ情報テーブル142は、24個のNVMチップ23のそれぞれについて、そのNVMチップ23の「非故障」または「故障」の状態情報を記憶するテーブルである。平準化管理情報退避・回復処理部14は、平準化管理情報の退避処理において、ページ書き込みエラーが多発したNVMチップ23を故障チップと判定し、故障チップ情報テーブル142における当該NVMチップ23の状態情報に“1”をセットする。
【0073】
なお、故障チップ情報テーブル142において、“1”は、当該NVMチップ23が故障チップであることを、“0”は、当該ブロックが非故障チップであることを表す。図8(b)の例では、NVMチップ23の数を24とし、NVM(#2)が故障チップであるとしている。
【0074】
図9および図10は、平準化管理情報の退避処理中にページ書き込みエラーが生じる場合の退避データの転送手順の例を示した図であり、図9は、その前半部分の転送手順、図10は、後半部分の転送手順を示している。なお、図9および図10において、矢線は、退避データの転送方向を示し、矢線の傍の括弧付の数字は、その転送が行われるそれぞれの図の中での順序を表す。
【0075】
図9の例では、転送順序(16)に×印が付されているが、この×印は、NVM(#7)が、BM(#7)から転送された1ページ分の退避データを所定のページにプログラムした(書き込んだ)とき、ページ書き込みエラーが発生したことを表している。
【0076】
ページ書き込みエラーの有無は、NVMチップ23の当該ページへのプログラム(書き込み)が終了したときに判定され、その判定結果であるページ書き込みエラーの有無情報は、NVMチップ23からバッファ記憶制御部22を介して平準化管理情報退避・回復処理部14へ通知される。
【0077】
ところで、図7(a)に示した退避処理のタイムチャートから分かるように、転送順序(16)に係る退避データのプログラムが終了するのは、NVM(#7)へ次の退避データの転送が開始される少し前である(図10の転送順序(62)の頃)。従って、平準化管理情報退避・回復処理部14は、転送順序(62)の転送が行われている頃に、前回NVM(#7)へ転送した退避データの書き込みエラーの有無を知ることになる。
【0078】
そこで、平準化管理情報退避・回復処理部14は、転送順序(63)の転送を開始するとき、NVM(#7)から通知されたページ書き込みエラーの有無情報に基づき、前回転送した退避データがNVM(#7)へ正常に書き込まれたか否かを判定する。そして、ページ書き込みエラーがあった場合、つまり、退避データがNVM(#7)へ正常に書き込まれていないと判定された場合には、平準化管理情報退避・回復処理部14は、前回転送した退避データを、再度、BM(#7)を介して、NVM(#7)へ転送する(転送順序(63),(64))。すなわち、転送順序(63)および(64)の転送では、転送順序(15)および(16)での転送がリトライされる。
【0079】
なお、このリトライに際しては、NVM(#7)における退避先のページアドレスは、1つインクリメントされる。すなわち、本実施形態では、ページ書き込みエラーが生じたページ232への退避データの再書き込み(リトライ)はしないものとする。従って、ページ書き込みエラーが生じたBM(#7)では、リトライ1回ごとに、BM(#7)における退避に必要なページ数は1つずつ増加していく。
【0080】
また、同じNVMチップ23で所定回数以上のページ書き込みエラーが生じた場合には、そのNVMチップ23を故障チップと判定し、故障チップ情報テーブル142中の不良と判定されたNVMチップ23の状態情報に“1”をセットする。
【0081】
次に、平準化管理情報退避・回復処理部14は、転送順序(63)および(64)における転送により、転送順序(15)および(16)で失敗した転送のリトライをすると、続く転送順序(65)および(66)では、転送順序(63)および(64)のときに転送することになっていた退避データの転送を行う(図10参照)。その後の転送順序(67)以降の転送は、ページ書き込みエラーが生じない場合の通常の退避処理の転送手順に戻る。
【0082】
図11は、故障チップがある場合の退避データの転送手順のうち、後半部分の転送手順の例を示した図である。故障チップがある場合の退避データの転送手順の前半部分は、故障チップがない場合の退避データの転送手順(例えば、図4に示した手順)とは、故障チップへの退避データの転送が行われないことを除けば、同じである。
【0083】
例えば、図11に示すようにNVM(#2)が故障チップであった場合には、図4における転送手順でいえば、NVM(#2)への退避データの転送に係る転送順序(5)および(6)の退避データの転送は省略される。
【0084】
すなわち、平準化管理情報退避・回復処理部14は、前半部分の退避処理では、故障チップがあった場合でも、故障チップへの退避データの転送を省略することだけを除き、図4に示した転送手順と同じ転送手順に従って、WM130に記憶されている平準化管理情報を一通り終りまでNVMチップ23へ退避する。その結果、故障チップへ退避することになっていた退避データを除き、退避データはすべて故障チップ以外のNVMチップ23へ退避されることになる。
【0085】
そこで、平準化管理情報退避・回復処理部14は、後半部分の退避処理として、故障チップへ退避することになっていたため退避されなかった退避データを、図11に示す転送手順に従って、故障チップ以外のNVMチップ23へ分散して退避する。
【0086】
図11に示した退避データの転送手順は、次の2点を除き、故障チップが存在しない場合の図4の転送手順と同じである。
(1)WM130からは、故障チップへ退避することになっていた平準化管理情報のみを抽出して転送する(ただし、図4には表されていない)。
(2)故障チップへの退避は行わない。
従って、図11だけを図4と比較すると、故障チップであるNVM(#2)への転送が行われないことを除き、全く同じである。そこで、次に、図12を用いて、前記(1),(2)の相違を補足説明する。
【0087】
図12は、故障チップがある場合の退避データの転送手順において、前半部分の退避処理で退避されなかった平準化管理情報が後半部分の退避処理で各NVMチップ23に退避される様子を示した図である。図12では、WM130は、1ページ(4kB)分のデータで区分されて示されているが、そのうち、前半部分の退避処理で退避されなかったデータ部分が太線枠で示されている。この太線枠で示されたデータ部分は、故障チップであるNVM(#2)へ退避されることになっていた平準化管理情報に相当する。
【0088】
NVM(#2)へ退避されることになっていた太線枠部分の平準化管理情報は、NVM(#2)以外のNVMチップ23の予備退避領域(図3参照)に退避される。すなわち、WM130に記憶されていたデータのうち、NVM(#2)のページ(#0)に退避されることになっていたデータは、NVM(#0)のページ(#0)に退避され、NVM(#2)のページ(#1)に退避されることになっていたデータは、NVM(#1)のページ(#0)に退避され、NVM(#2)のページ(#2)に退避されることになっていたデータは、NVM(#3)のページ(#0)に退避され、以下、同様に、WM130からは、NVM(#2)へ退避されることになっていたデータが順に1ページ分ずつ読み出され、NVM(#2)以外のNVMチップ23へ順次退避される。
【0089】
なお、図12では、矢線の始点および終点により、退避元データおよび退避先データを表し、さらに、矢線の始点側に記載されている括弧付番号は、WM130におけるNVM(#2)へ退避されることになっていたデータのページアドレスであることを表し、矢線の終点側に記載されている括弧付番号は、退避先のNVMチップ23のチップ番号であることを表している。
【0090】
また、図12では、退避先のNVMチップ23の退避領域の先頭のページアドレスは、(#512)となっているが、図9および図10で説明したページ書き込みエラーによる退避のリトライが行われたときには、その先頭のページアドレスは、リトライ回数に応じて、512より後のページとなる。
【0091】
図13は、不良ブロックが存在するNVMチップ23におけるページアドレスの付し方を説明する図である。図2を用いて説明したように、NVMチップ23は複数のブロック231によって構成され、それぞれのブロック231は、複数のページ232によって構成される。ページ232は、NVMチップ23におけるデータ書き込みおよび読み出しの単位であるから、各ページにはアドレスが付される。
【0092】
NVMチップ23におけるページアドレスは、そのNVMチップ23に不良ブロックがない場合には、図13(a)に示すように、そのNVMチップ23に含まれるすべてのブロック231を通して、その中に含まれるページ232に対して通し番号が付され、その通し番号をページアドレスとする。一方、不良ブロックがある場合には、図13(b)に示すように、不良ブロックを除外したすべてのブロック231を通して、その中に含まれるページ232に対して通し番号が付され、その通し番号をページアドレスとする。
【0093】
図13(b)の例では、×印が付されたブロック(#1)を不良ブロックとして、ブロック(#1)を除くブロック231に含まれるページ232に対して通し番号が付され、その通し番号がページアドレスとされている。従って、不良のブロック(#1)に含まれるページ232に対しては、ページアドレスは付されない。
【0094】
不良ブロックが存在するNVMチップ23に対して、このようなページアドレスの付し方をした場合には、その分だけ、NVMチップ23における実質的な予備退避領域は、減少するが、図9〜図12で説明した退避処理中にページ書き込みエラーが生じる場合の退避データの転送手順や、故障チップがある場合の退避データの転送手順は、不良ブロックの有無の考慮せずにそのまま適用することができる。
【0095】
なお、不良ブロックが存在する場合のNVMチップ23におけるページアドレスの管理は、平準化管理情報退避・回復処理部14が不良ブロック情報テーブル141に基づき行う。
【0096】
図14は、平準化管理情報退避・回復処理部14およびバッファ記憶制御部22が行う平準化管理情報の退避処理の処理フローの例を示した図である。
【0097】
図14に示すように、平準化管理情報退避・回復処理部14は、まず、退避データ先頭アドレスを表すWMAを初期化(ゼロクリア)する(ステップS11)。ここで、WMAは、退避対象の1ページ分のデータがWM130に格納されているときの先頭データのアドレスである。次に、平準化管理情報退避・回復処理部14は、CAを、NVMチップ23を識別するチップ番号としたとき、すべてのCA(CA=0,…,23)に対し、PA(CA)=0とする(ステップS12)。ここで、PA(CA)は、CAで指定されるNVMチップ23におけるページアドレスを表す。
【0098】
次に、平準化管理情報退避・回復処理部14は、CA=0,CAE=“Null”とする(ステップS13)。すなわち、退避データの転送先となるNVMチップ23のチップ番号CAを初期化し、さらに、ページ書き込みエラーが生じたため、退避処理の処理遅れが生じたNVMチップ23のチップ番号であるCAEを初期化する。なお、“Null”は、処理遅れのNVMチップ23がないことを表している。
【0099】
次に、平準化管理情報退避・回復処理部14は、BM(CA)が退避データの転送を受付可能であるか否かを判定する(ステップS14)。ここで、BM(CA)は、CAで指定されるNVMチップ23が接続されているBM220であることを意味する。ここで、BM(CA)が、前回の退避データをNVMチップ23に転送中であれば、新たな退避データの転送を受け付けることができないので、その転送が終わるまで待つ(ステップS14でNo)。
【0100】
一方、BM(CA)が転送受付可能な場合には(ステップS14でYes)、平準化管理情報退避・回復処理部14は、さらに、当該CAで指定されるNVMチップ23への前回退避時にページ書き込みエラーがあったか否かを判定する(ステップS15)。この判定で、前回退避時にページ書き込みエラーがなかった場合には(ステップS15でNo)、WM130から先頭データのアドレスがWMAで指定される1ページ分の退避データWM(WMA)を読み出し、その読み出した1ページ分の退避データWM(WMA)をBM(CA)へ転送する(ステップS16)。
【0101】
その1ページ分の退避データの転送を受けたBM(CA)を有するバッファ記憶制御部22は、その退避データをBM(CA)からNVM(CA,PA(CA))へ転送する(ステップS17)。なお、NVM(CA,PA(CA))は、チップ番号CAで指定されるNVMチップ23のページアドレスPA(CA)の記憶領域であることを表す。退避テータの転送を受けたNVMチップ23であるNVM(CA)は、その退避データをNVM(CA,PA(CA))の領域に書き込む(プログラムする)。
【0102】
次に、平準化管理情報退避・回復処理部14は、WM130のアドレスWMAを4098(4kB分)インクリメントするとともに(ステップS18)、NVMチップ23のチップ番号CAを1つインクリメントする(ステップS19)。続いて、平準化管理情報退避・回復処理部14は、そのチップ番号CAが8,16,24のいずれかであるか否かを判定し(ステップS20)、チップ番号CAが、8,16,24のいずれでもなかった場合には(ステップS20でNo)、さらに、チップ番号CAが24であるか否かを判定する(ステップS21)。
【0103】
ステップS21の判定で、NVMチップ23のチップ番号CAが24でなかった場合には(ステップS21でNo)、平準化管理情報退避・回復処理部14は、処理の実行をステップS14へ戻す。また、チップ番号CAが24であった場合には(ステップS21でYes)、すべてのCA(CA=0,…,23)に対して、PA(CA)を1つインクリメントし(ステップS22)、さらに、WMAがその上限値WMAmaxを越えたか否かを判定する(ステップS23)。なお、本実施形態の場合、図5から分かるように、WMAmaxは、512×24×4,096−1=50,331,647である。
【0104】
ステップS23の判定で、WMAが上限値WMAmaxを越えていない場合には(ステップS23でNo)、平準化管理情報退避・回復処理部14は、処理の実行をステップS13に戻す。また、WMAが上限値WMAmaxを越えた場合には(ステップS23でYes)、退避すべきデータがなくなったことを意味するので、図14の退避処理を終了する。以上の処理により、ページ書き込みエラーが生じなかった場合についての退避処理が行われたことになる。
【0105】
一方、ステップS15の判定で、前回退避時にページ書き込みエラーがあった場合には(ステップS15でYes)、平準化管理情報退避・回復処理部14は、以下の手順に従って、前回の退避データと同じデータを、再度、当該CAで指定されるNVMチップ23への退避を行う。
【0106】
すなわち、平準化管理情報退避・回復処理部14は、WMAを前回の退避データの先頭アドレスに戻すために、WMA=WMA−24×4096を計算し(ステップS31)、WM130からWMAで指定される1ページ分の退避データWM(WMA)を読み出し、その読み出した1ページ分の退避データWM(WMA)をBM(CA)へ転送する(ステップS32)。そして、その1ページ分の退避データの転送を受けたBM(CA)を有するバッファ記憶制御部22は、その退避データをBM(CA)からNVM(CA,PA(CA))へ転送する(ステップS33)。その後、退避テータの転送を受けたNVMチップ23であるNVM(CA)は、その退避データをNVM(CA,PA(CA))の領域に書き込む(プログラムする)。
【0107】
次に、平準化管理情報退避・回復処理部14は、本来のWMAに戻すために、WMA=WMA+24×4096を計算し(ステップS34)、当該CAで指定されるNVMチップ23におけるページアドレスPA(CA)を1つインクリメントし(ステップS35)、そのときのCAE=CA,WMAE=WMAとして(ステップS36)、そのときのCAおよびWMAをCAEおよびWMAEに記憶しておく。
【0108】
以上、ステップS31〜ステップS36の処理は、図10における転送順序(63)および(64)の転送処理に相当する。従って、ステップS31〜ステップS36の処理により、前回の退避処理でページ書き込みエラーが生じた場合について、前回退避することになっていたWM130のデータの退避がリトライされたことになる。そこで、平準化管理情報退避・回復処理部14は、ステップS36の次には、処理の実行をステップS18へ移行させる。
【0109】
また、ステップS20の判定で、チップ番号CAが、8,16,24のいずれかであった場合には(ステップS20でYes)、平準化管理情報退避・回復処理部14は、さらに、CAEが“Null”であるか否かを判定し(ステップS41)、CAEが“Null”であった場合には(ステップS41でYes)、チップ番号CAが0〜7,8〜15または16〜23のいずれのときにも、ページ書き込みエラーのリトライ処理がされていないことを意味するので、何もせずに、処理の実行を元のステップS20の次のステップS21へ戻す。
【0110】
一方、ステップS41の判定で、CAEが“Null”でなかった場合には(ステップS41でNo)、チップ番号CAが0〜7,8〜15または16〜23のいずれかのときに、ページ書き込みエラーのリトライ処理がされたことを意味するので、平準化管理情報退避・回復処理部14は、ページ書き込みエラーのリトライのために行われなかった退避データの退避処理を行う。その場合、退避の対象となるNVMチップ23のチップ番号は、CAEに記憶され、WM130の退避データ先頭アドレスは、WMAEに記憶されている。
【0111】
そこで、平準化管理情報退避・回復処理部14は、WM130からWMAEで指定される1ページ分の退避データWM(WMA)を読み出し、その読み出した1ページ分の退避データWM(WMAE)をBM(CAE)へ転送する(ステップS42)。そして、その1ページ分の退避データの転送を受けたBM(CAE)を有するバッファ記憶制御部22は、その退避データをBM(CAE)からNVM(CAE,PA(CAE))へ転送する(ステップS43)。その後、退避テータの転送を受けたNVMチップ23であるNVM(CAE)は、その退避データをNVM(CAE,PA(CAE))の領域に書き込む(プログラムする)。
【0112】
これらステップS42、ステップS43の処理は、図10における転送順序(65),(66)の転送処理に相当する。平準化管理情報退避・回復処理部14は、続いて、CAEを“Null”に戻し(ステップS44)、その処理の実行をステップS21へ移行させる。
【0113】
以上で平準化管理情報の退避処理の処理フローの説明を終える。なお、以上に示した処理フローでは、図9および図10で説明したページ書き込みエラー時のリトライ処理については考慮されているが、図11および図12で説明したチップ故障がある場合については考慮されていない。チップ故障があることを考慮するためには、この処理フローを一部修正する必要があるが、ここでは、その説明を省略する。
【0114】
続いて、故障チップ、不良ブロックまたはページ書き込みエラーがあり得ることを考慮してNVMチップ23に退避した平準化管理情報を、NVMチップ23からWM130へ回復する処理における回復データの転送手順について説明する。その回復データの転送手順は、以下に説明する点を除き、図6に示した回復データの転送手順と同じである。
【0115】
図6に示した回復データの転送手順の場合には、故障チップ、不良ブロックまたはページ書き込みエラーのいずれもあり得ないとしているので、退避された平準化管理情報は、NVMチップ23のページ(#0)からページ(#511)までの基本退避領域(図3参照)に記憶される。一方、故障チップ、不良ブロックまたはページ書き込みエラーがある場合には、平準化管理情報は、基本退避領域だけでなく、ページ(#512)以降の予備退避領域に広がって記憶される。
【0116】
平準化管理情報退避・回復処理部14は、平準化管理情報の回復処理を、電源オン・オフ検知部15によって電源供給の開始が検知されたときに開始するため、その回復処理の開始時点では、予備退避領域のうち、どのページアドレスまで平準化管理情報が退避されているかを知ることができない。そこで、本実施形態では、その退避データの最終ページアドレスなどからなる管理情報をNVMチップ23とは別体の不揮発性メモリに記憶しておくことをせずに、平準化管理情報の回復処理においては、基本退避領域の最初のページ(#0)から予備退避領域の最後のページ(#895)までのすべてのデータを読み出すようにした。
【0117】
すなわち、平準化管理情報退避・回復処理部14がNVMチップ23の退避データ記憶領域からすべてのデータを読み出すとは、図6の転送手順に従って、NVMチップ23から回復データをWM130に転送することに他ならない。ただし、NVMチップ23からの読み出しの最終ページアドレスは、(#511)ではなく、(#895)である。
【0118】
この場合、不良ブロックのデータや、消去されたままで、書き込みが行われなかったページ232のデータなど、無意味なデータが多数読み出されることになる。しかしながら、有意な平準化管理情報の退避データには、セグメント234ごとの退避データに、CRC符号やリード・ソロモン符号などの検査符号235が付されている(図2(c)参照)ので、無意味なデータは、その検査符号235を用いた誤り検査によって検出することができので、廃棄することができる。
【0119】
また、退避処理の途中から故障チップになったようなNVMチップ23には、その途中のページアドレスまでには、誤りのない平準化管理情報の退避データが書き込まれている可能性がある。このようなNVMチップ23については、その後、そのNVMチップ23に退避される予定であった(一部は退避されているが)退避データは、再度、図11に示した手順によって、故障チップでない他のNVMチップ23に分散して退避されている。従って、このような場合には、同じデータが重複してWM130に回復されることになるが、重複回復は問題がない。同様に、退避処理において、ページ書き込みエラーが生じていた場合にも、場合によっては、重複回復がされるが、これも問題がない。
【0120】
また、故障チップやページ書き込みエラーが生じたページ232では、誤って書き込まれたデータが、たまたま、正しく読み出され、その誤ったデータがWM130へ回復されることがないとはいえない。しかしながら、図9〜図11で説明した退避処理の転送手順によれば、故障チップの退避データや書き込みエラーが生じたページ232の退避データについては、その後で、後方のページ232に必ず再退避される。従って、本実施形態の回復処理では、その再退避されたデータが後で読み出され、WM130に回復されることになる。再退避されたデータは、誤りなく退避されたデータであるので、その結果、WM130には誤りのないデータが回復されることなる。
【0121】
さらに、本実施形態では、WM130へ退避された平準化管理情報がすべて回復されると、平準化管理情報退避・回復処理部14は、チェックサム(図3参照)が正しいか否かを判定する。チェックサムが正しければ、平準化管理情報の回復処理は正常に行われたことになる。チェックサムが正しくない場合は、平準化管理情報の回復が失敗したことを意味するので、別途、平準化管理情報回復失敗時の処理を実行する。
【0122】
なお、前記したように、本実施形態では、WM130に回復データが書き込まれるときのアドレスとしては、ページ232のヘッダ233に含まれる退避データ先頭アドレスが用いられる。従って、この退避データ先頭アドレスが誤って退避されたり回復されたりすると、WM130に回復された平準化管理情報は、信頼できないものとなる。そこで、退避データ先頭アドレスは、例えば、二重化したり、複数ビット訂正可能な誤り符号を付したりして、高信頼化しておくとよい。
【0123】
以上、本実施形態によれば、平準化管理情報記憶部13のWM130は、レーン接続バス30を介して複数のレーン21それぞれに含まれるバッファ記憶制御部22のBM220に接続され、また、それぞれのレーン21には、BM220とNVMチップ23とを接続するチップ接続バス24が設けられている。従って、平準化管理情報の退避処理においては、それぞれのレーンにおけるBM220からNVMチップ23への退避データの転送を独立に並行して行うことができるので、退避時間の短縮を図ることができる。
【0124】
また、NVMチップ23へ退避する1ページ分の平準化管理情報を含む退避データの中に、その1ページ分の平準化管理情報がWM130に記憶されていたときの先頭アドレスが含まれているので、その結果として、回復処理における回復データの転送手順が簡単化されている。
【符号の説明】
【0125】
1 SSD装置
2 ホスト装置
3 ホストバス
10 不揮発データ記憶制御部
11 データ書き込み・読み出し制御部
12 平準化管理部
13 平準化管理情報記憶部
14 平準化管理情報退避・回復処理部
15 電源オン・オフ検知部
20 不揮発データ記憶部
21 レーン
22 バッファ記憶制御部
23 NVMチップ(不揮発性メモリチップ)
24 チップ接続バス
30 レーン接続バス
130 WM(ウェアレベリングメモリ)
141 不良ブロック情報テーブル(不良ブロック情報記憶部)
142 故障チップ情報テーブル(故障チップ情報記憶部)
220 BM(バッファメモリ)
231 ブロック
232 ページ
233 ヘッダ
234 セグメント
235 検査符号

【特許請求の範囲】
【請求項1】
複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップを所定の数ごとの複数のレーンに分割したとき、前記レーンごとにそのレーンに属する不揮発性メモリチップに接続され、前記不揮発性メモリチップに対する書き込みまたは読み出しデータを一時記憶するバッファ記憶制御部と、を含んで構成された不揮発データ記憶部と、
前記不揮発性メモリチップにおける書き込みデータ消去の単位領域であるブロックのデータ消去回数を平準化するための平準化管理情報を記憶する平準化管理情報記憶部と、
電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、
前記電源供給オン・オフ検知部により電源供給のオフが検知されたとき、前記平準化管理情報記憶部に記憶されている平準化管理情報を前記不揮発データ記憶部に退避し、前記電源供給オン・オフ検知部により電源供給のオンが検知されたとき、前記不揮発データ記憶部に退避されている平準化管理情報を前記平準化管理情報記憶部に回復させる平準化管理情報退避・回復処理部と、
を含んで構成されたソリッド・ステート・ドライブ装置であって、
前記平準化管理情報退避・回復処理部が前記平準化管理情報記憶部から読み出した退避データを前記複数のバッファ記憶制御部へそれぞれ転送したときには、前記複数のバッファ記憶制御部は、それぞれ、前記退避データの転送を受けると、互いに独立に並行して前記退避データを前記不揮発性メモリチップに転送して書き込むこと
を特徴とするソリッド・ステート・ドライブ装置。
【請求項2】
前記平準化管理情報退避・回復処理部は、
前記平準化管理情報を前記不揮発データ記憶部に退避する場合には、
前記平準化管理情報記憶部から前記平準化管理情報を所定のデータ長の退避データを読み出し、
前記読み出した退避データの先頭データが前記平準化管理情報記憶部に記憶されていたときのアドレス情報を取得し、
前記退避データに前記取得したアドレス情報を付加した情報を、前記不揮発データデータ記憶部に書き込むこと
を特徴とする請求項1に記載のソリッド・ステート・ドライブ装置。
【請求項3】
前記平準化管理情報退避・回復処理部は、
前記退避データを前記不揮発データ記憶部の所定のページに書き込んだ結果として、書き込みエラーが生じたときには、前記退避データと同じデータを、前記不揮発データ記憶部の前記所定のページの次のページに書き込むこと
を特徴とする請求項1に記載のソリッド・ステート・ドライブ装置。
【請求項4】
前記平準化管理情報退避・回復処理部は、
前記不揮発データ記憶部を構成する前記不揮発性メモリチップの故障チップについての情報を記憶した故障チップ情報記憶部を備え、
前記平準化管理情報を前記不揮発データ記憶部へ退避する場合には、前記故障チップ情報記憶部を参照して、前記不揮発データ記憶部の退避先の領域が前記故障チップに該当するか否かを判定し、前記故障チップに該当するときには、前記平準化管理情報の前記故障チップへの退避を省略し、
前記平準化管理情報の前記故障チップ以外の前記不揮発性メモリチップへの退避完了後に、前記平準化管理情報のうち前記故障チップへ退避することになっていた情報を、前記故障チップ以外の前記不揮発性メモリチップへ分散して退避すること
を特徴とする請求項1に記載のソリッド・ステート・ドライブ装置。
【請求項5】
前記平準化管理情報退避・回復処理部は、
前記不揮発データ記憶部を構成する前記不揮発性メモリチップのそれぞれにおける不良ブロックについての情報を記憶する不良ブロック情報記憶部を備え、
前記平準化管理情報を前記不揮発データ記憶部へ退避する場合には、前記不良ブロック情報記憶部を参照して、前記不揮発データ記憶部の退避先が前記不良ブロックに該当するか否かを判定し、前記不良ブロックに該当するときには、前記退避先を前記不良ブロックに該当しないブロックに変更した後、前記平準化管理情報を前記不揮発データ記憶部へ退避すること
を特徴とする請求項1に記載のソリッド・ステート・ドライブ装置。
【請求項6】
複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップを所定の数ごとの複数のレーンに分割したとき、前記レーンごとにそのレーンに属する不揮発性メモリチップに接続され、前記不揮発性メモリチップに対する書き込みまたは読み出しデータを一時記憶するバッファ記憶制御部と、を含んで構成された不揮発データ記憶部と、
前記不揮発性メモリチップにおける書き込みデータ消去の単位領域であるブロックのデータ消去回数を平準化するための平準化管理情報を記憶する平準化管理情報記憶部と、
電源供給のオンおよびオフを検知する電源供給オン・オフ検知部と、
前記電源供給オン・オフ検知部により電源供給のオフが検知されたとき、前記平準化管理情報記憶部に記憶されている平準化管理情報を前記不揮発データ記憶部に退避し、前記電源供給オン・オフ検知部により電源供給のオンが検知されたとき、前記不揮発データ記憶部に退避されている平準化管理情報を前記平準化管理情報記憶部に回復させる平準化管理情報退避・回復処理部と、
を含んで構成されたソリッド・ステート・ドライブ装置における平準化管理情報の退避・回復方法であって、
前記平準化管理情報退避・回復処理部が前記平準化管理情報記憶部から読み出した退避データを前記複数のバッファ記憶制御部へそれぞれ転送したときには、前記複数のバッファ記憶制御部は、それぞれ、前記退避データの転送を受けると、互いに独立に並行して前記退避データを前記不揮発性メモリチップに転送して書き込むこと
を特徴とする平準化管理情報の退避・回復方法。
【請求項7】
前記平準化管理情報退避・回復処理部は、
前記平準化管理情報を前記不揮発データ記憶部に退避する場合には、
前記平準化管理情報記憶部から前記平準化管理情報を所定のデータ長の退避データを読み出し、
前記読み出した退避データの先頭データが前記平準化管理情報記憶部に記憶されていたときのアドレス情報を取得し、
前記退避データに前記取得したアドレス情報を付加した情報を、前記不揮発データデータ記憶部に書き込むこと
を特徴とする請求項6に記載の平準化管理情報の退避・回復方法。
【請求項8】
前記平準化管理情報退避・回復処理部は、
前記退避データを前記不揮発データ記憶部の所定のページに書き込んだ結果として、書き込みエラーが生じたときには、前記退避データと同じデータを、前記不揮発データ記憶部の前記所定のページの次のページに書き込むこと
を特徴とする請求項6に記載の平準化管理情報の退避・回復方法。
【請求項9】
前記平準化管理情報退避・回復処理部は、
前記不揮発データ記憶部を構成する前記不揮発性メモリチップの故障チップについての情報を記憶した故障チップ情報記憶部を備え、
前記平準化管理情報を前記不揮発データ記憶部へ退避する場合には、前記故障チップ情報記憶部を参照して、前記不揮発データ記憶部の退避先の領域が前記故障チップに該当するか否かを判定し、前記故障チップに該当するときには、前記平準化管理情報の前記故障チップへの退避を省略し、
前記平準化管理情報の前記故障チップ以外の前記不揮発性メモリチップへの退避完了後に、前記平準化管理情報のうち前記故障チップへ退避することになっていた情報を、前記故障チップ以外の前記不揮発性メモリチップへ分散して退避すること
を特徴とする請求項6に記載の平準化管理情報の退避・回復方法。
【請求項10】
前記平準化管理情報退避・回復処理部は、
前記不揮発データ記憶部を構成する前記不揮発性メモリチップのそれぞれにおける不良ブロックについての情報を記憶する不良ブロック情報記憶部を備え、
前記平準化管理情報を前記不揮発データ記憶部へ退避する場合には、前記不良ブロック情報記憶部を参照して、前記不揮発データ記憶部の退避先が前記不良ブロックに該当するか否かを判定し、前記不良ブロックに該当するときには、前記退避先を前記不良ブロックに該当しないブロックに変更した後、前記平準化管理情報を前記不揮発データ記憶部へ退避すること
を特徴とする請求項6に記載の平準化管理情報の退避・回復方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2011−138273(P2011−138273A)
【公開日】平成23年7月14日(2011.7.14)
【国際特許分類】
【出願番号】特願2009−297123(P2009−297123)
【出願日】平成21年12月28日(2009.12.28)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】