JP2014026376A - メモリコントローラ、フラッシュメモリシステム及び記憶制御方法 - Google Patents
メモリコントローラ、フラッシュメモリシステム及び記憶制御方法 Download PDFInfo
- Publication number
- JP2014026376A JP2014026376A JP2012164685A JP2012164685A JP2014026376A JP 2014026376 A JP2014026376 A JP 2014026376A JP 2012164685 A JP2012164685 A JP 2012164685A JP 2012164685 A JP2012164685 A JP 2012164685A JP 2014026376 A JP2014026376 A JP 2014026376A
- Authority
- JP
- Japan
- Prior art keywords
- block
- physical block
- physical
- write
- target data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】フラッシュメモリの信頼性の高さに関わらず、不良となったブロックを早期に認識する。
【解決手段】メモリコントローラは、論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てようになっている。メモリコントローラは、書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、それらのブロックの各々に書込み対象データを書き込み、それらのブロックから書込み対象データをそれぞれ読み出し、それぞれ読み出された複数の書込み対象データについてエラーの有無を判断する。メモリコントローラは、エラーを有する書込み対象データが見つかった場合、エラーを有する書込み対象データの物理ページを含んだ物理ブロックを不良ブロックとして管理する。
【選択図】図3
【解決手段】メモリコントローラは、論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てようになっている。メモリコントローラは、書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、それらのブロックの各々に書込み対象データを書き込み、それらのブロックから書込み対象データをそれぞれ読み出し、それぞれ読み出された複数の書込み対象データについてエラーの有無を判断する。メモリコントローラは、エラーを有する書込み対象データが見つかった場合、エラーを有する書込み対象データの物理ページを含んだ物理ブロックを不良ブロックとして管理する。
【選択図】図3
Description
本発明は、フラッシュメモリの制御に関する。
フラッシュメモリの出荷前に、一般に、出荷検査が行われる。出荷検査では、フラッシュメモリにおける各ブロックが不良かどうかが検査され、不良であると認定されたブロックは、不良ブロックとして管理される。
出荷検査において良品ブロックと認定されたブロックであっても、消去回数が上限値に達する前に不良となることもある。すなわち、出荷検査済みのフラッシュメモリに潜在的な不良ブロックが存在していることもある。
フラッシュメモリとメモリコントローラを搭載したモジュール(フラッシュメモリシステム)を生産する際に、一般に、潜在的な不良ブロックをあらかじめ不良ブロック化するように、フラッシュメモリをモジュールに組み込んだ状態で一回以上フラッシュメモリの全ブロックに対して書込み及び読出しを行うことによりエージングを施すことが行われている。
しかし、この方法だと、エージング時に潜在的な不良ブロックが不良にならなくても、出荷後に、ホストから潜在的な不良ブロックに対する1回目の書き込みで、その潜在的な不良ブロックが不良になる可能性がある。このため、上記方法は、根本的なスクリーニング法とはなりにくい。
また、ホストはメモリコントローラを通じて正常にデータを書き込んだつもりであるにもかかわらず、実際にはデータが正常に書き込まれておらず、且つ、フラッシュメモリからメモリコントローラにエラーを返さないというフラッシュメモリの不良の場合、メモリコントローラがその不良を認識することさえできないので、ブロックの不良化が行えない。このため、モジュール全体として動作不良を起こしデータを喪失する可能性がある。
そこで、特許文献1に開示の技術、すなわち、書き込み対象のデータを二重化してフラッシュメモリに書き込む技術を利用することが考えられる。
この技術によれば、信頼性は低いが高容量且つ低価格のフラッシュメモリにデータを書き込む際に、信頼性は高いが小容量且つ高価格のフラッシュメモリにも同時に書くことにより、信頼性が低いが高容量且つ低価格のフラッシュメモリに書き込みエラーが起こった場合でも、データの損失を防ぐことができる。
しかし、現実には信頼性が高いと言われている小容量且つ高価格のフラッシュメモリにも前述のような不具合(例えば、エラーが発生してもフラッシュメモリからメモリコントローラにエラーを返さないという不具合)があり、信頼性が高いからといって必ずしも不具合が発生しないとは言えない。
本発明の目的は、フラッシュメモリの信頼性の高さに関わらず、動作不良となりうるブロックを早期に認識することにある。
第1の観点に従うメモリコントローラは、
書込み先アドレスを指定した書込みコマンドを送信するホストシステムに接続され前記書込みコマンドを受信する第1の通信インタフェースデバイスと、
複数の物理ブロックで構成された1以上のフラッシュメモリであるフラッシュメモリ群に接続される第2の通信インタフェースデバイスと、
前記第1及び第2の通信インタフェースデバイスに接続されており、前記ホストシステムに対する論理空間における論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっている制御デバイスと
を有し、
前記制御デバイスが、更に、
(A)前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
(B)前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
(C)前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
(D)前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
(E)エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる。
書込み先アドレスを指定した書込みコマンドを送信するホストシステムに接続され前記書込みコマンドを受信する第1の通信インタフェースデバイスと、
複数の物理ブロックで構成された1以上のフラッシュメモリであるフラッシュメモリ群に接続される第2の通信インタフェースデバイスと、
前記第1及び第2の通信インタフェースデバイスに接続されており、前記ホストシステムに対する論理空間における論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっている制御デバイスと
を有し、
前記制御デバイスが、更に、
(A)前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
(B)前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
(C)前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
(D)前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
(E)エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる。
第2の観点に従うメモリコントローラでは、第1の観点において、前記制御デバイスは、更に、
(X)前記論理空間に割り当て可能な物理ブロックの量が所定値以下か否かを判断し、
(Y)前記(X)の判断の結果が肯定的であれば、割当て済みの複数の副物理ブロックのうちの少なくとも1つの副物理ブロックの割り当てを解除し前記少なくとも1つの副物理ブロックからブロック単位でデータを消去する。
(X)前記論理空間に割り当て可能な物理ブロックの量が所定値以下か否かを判断し、
(Y)前記(X)の判断の結果が肯定的であれば、割当て済みの複数の副物理ブロックのうちの少なくとも1つの副物理ブロックの割り当てを解除し前記少なくとも1つの副物理ブロックからブロック単位でデータを消去する。
第3の観点に従うメモリコントローラでは、第2の観点の前記(Y)において、割り当てが解除される副物理ブロックは、少なくとも1つの論理ブロックに割り当てられている少なくとも1つの副物理ブロックである。第2の観点の前記(Y)において、前記制御デバイスは、物理ブロックが新たに割り当てられるべき論理ブロックに対して、前記少なくとも1つの論理ブロックから副物理ブロックとしての割り当てが解除されデータが消去された物理ブロックを正物理ブロックとして割り当てる。
第4の観点に従うメモリコントローラでは、第3の観点の前記(Y)において、割り当てが解除される副物理ブロックは、2以上の論理ブロックに割り当てられている2以上の副物理ブロックである。第3の観点の前記(Y)において、前記制御デバイスは、物理ブロックが新たに割り当てられるべき論理ブロックに対して、前記2以上の論理ブロックから副物理ブロックとしての割り当てが解除されデータが消去された2以上の物理ブロックのうちの1つを正物理ブロックとして割り当て、且つ、それら2以上の物理ブロックのうちの別の少なくとも1つの物理ブロックを副物理ブロックとして割り当てる。
第5の観点に従うメモリコントローラでは、第2乃至第4のうちのいずれか1つの観点において、前記制御デバイスは、前記(X)を、前記第1の通信インタフェースデバイスが前記書込みコマンドを受信した場合に行い、前記(X)の判断の結果が否定的の場合に、前記(A)を行う。
第6の観点に従うメモリコントローラでは、第1乃至第5のうちのいずれか1つの観点において、前記制御デバイスは、第1乃至第3の記憶領域を有している。前記制御デバイスは、前記(B)において、前記第3の記憶領域に前記書込み対象データを書込み、前記第3の記憶領域から前記第1及び第2の記憶領域にそれぞれ前記書込み対象データをコピーし、前記第1の記憶領域から前記正物理ブロックに前記書込み対象データを書込み、前記第2の記憶領域から前記副物理ブロックに前記書込み対象データを書込む。前記制御デバイスは、前記(C)において、前記正物理ブロックから前記第1の記憶領域に前記書込み対象データを読み出し、前記副物理ブロックから前記第2の記憶領域に前記書込み対象データを読み出す。前記制御デバイスは、前記(D)において、前記第1の記憶領域内の書込み対象データと前記第2の記憶領域内の書込み対象データとを比較し、それらが不一致の場合に、前記第1の記憶領域内の書込み対象データと前記第3の記憶領域内の書込み対象データとを比較し、且つ、前記第2の記憶領域内の書込み対象データと前記第3の記憶領域内の書込み対象データとを比較することで、前記第1及び第2の記憶領域のいずれの記憶領域内の書込み対象データがエラーを有するかを特定する。
第7の観点に従うメモリコントローラでは、第1乃至第5のうちのいずれか1つの観点において、前記制御デバイスは、前記(B)において、前記正物理ブロック及び前記副物理ブロックのそれぞれに対して、前記書込み対象データと当該データのECC(Error-Correcting Code)とのセットを書込む。前記制御デバイスは、前記(D)において、前記正物理ブロック及び前記副物理ブロックからそれぞれ読み出された2つの書込み対象データを比較し、それらが不一致の場合に、それぞれの書込み対象データについて、当該データのECCを用いてエラーの有無を判断する。
第8の観点に従うフラッシュメモリシステムは、第1乃至7の観点のうちのいずれか1つの観点に従うメモリコントローラと、前記メモリコントローラに接続され複数の物理ブロックで構成された1以上のフラッシュメモリであるフラッシュメモリ群とを有する。
第9の観点に従う記憶制御方法は、書込み先アドレスを指定した書込みコマンドを送信するホストシステムに対する論理空間における論理ブロックに、1以上のフラッシュメモリの複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっているフラッシュメモリシステムで行われる記憶制御方法であって、
前記ホストシステムから書込みコマンドを受信し、
前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる。
前記ホストシステムから書込みコマンドを受信し、
前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる。
書込み対象データが複数の物理ブロックにそれぞれ書き込まれ、その後、それら複数の物理ブロックからそれぞれ書込み対象データが読み出され、読み出された複数の書込み対象データについてエラーの有無が判断され、エラーを有する書込み対象データが見つかった場合、エラーを有する書込み対象データの物理ブロックが不良ブロックとして管理される。これにより、フラッシュメモリの信頼性の高さに関わらず、不良となった物理ブロックを早期に認識することができる。
また、不良ブロックを認識するだけでなく、書き込もうとしたデータも正しく保全することができる。
以下、幾つかの実施例を説明する。なお、図面では、フラッシュメモリを「FM」と略記し、論理ブロックを「LB」と略記し、論理ページを「LP」と略記し、物理ブロックを「PB」と略記し、物理ページを「PP」と略記することがある。
図1は、実施例1に係るFMシステムの構成例を示す。
FMシステム100は、ホストシステム200からアクセス可能に接続される。FMシステム100は、メモリコントローラ102と、FM群105とを有する。FM群105は、1以上のFM104である。メモリコントローラ102は、ホストシステム200からFM104へのアクセスを制御する。
FM104は、不揮発性のメモリセルアレイ134と、レジスタ(以下、FMレジスタ)132とを有する。FMレジスタ132は、メモリコントローラ102とメモリセルアレイ134との間で入出力されるデータを一時的に記憶するためのものである。
メモリセルアレイ134は、例えば、NAND型である。メモリセルアレイ134は、少なくとも1つのFMチップで構成されており、複数の物理ブロックを有する。各物理ブロックは、複数の物理ページを有する。ここで、NAND型のメモリセルアレイ134においては、データの書き込み/読み出しの単位(データの書き込み/読み出しの時に一度に入出力され得る記憶領域)は、ページ(物理ページ)単位であり、データの消去の単位は、ブロック(物理ブロック)単位である。この実施例では、FMレジスタ132の記憶容量は、上述した書き込み/読み出しの単位である1個の物理ページ分の記憶容量に等しく設定されている。
図2は、ホストシステム200が認識する論理アドレス空間とメモリセルアレイ134内の物理アドレス空間との間の対応関係を例示している。図2の右側の部分に、メモリセルアレイ134内の多数の物理ページ(1個の物理ブロックの部分のみを抜粋)が例示されている。この右側部分に示されるように、各物理ページは、複数個(典型的には2のべき乗数に相当する個数)の物理セクタを有し、本実施例では例えば8個の物理セクタを有する。物理セクタは1セクタ(512バイト)のデータが記憶される領域であり、各物理セクタには1個の付加情報領域が割り当てられている。また、各物理ページは、1個のページ情報領域を有する。各物理ページに対して、論理アドレス空間内のいずれかの1個の論理ページ(図2の左側に示す論理アドレス空間中で、#0、#1、#2、…という各論理ページ番号(LPN)が付与された記憶領域)が、メモリコントローラ102によって関連づけられ得る。このように各物理ページに1個の論理ページが関係付けられてもよいし、後に説明するように1個の論理ページに対して複数個の物理ページが関連付けられてもよい。各物理ページ内の各物理セクタには、その物理セクタに関連付けられた論理ページ内の各論理セクタのユーザデータが格納され、そのユーザデータの誤り訂正符号(ECC)は、その物理セクタに割り当てられている付加情報領域に格納される。また、各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを特定する情報(例えば、論理ページ番号(LPN))及びその他の管理及び/又は制御用の情報が格納される。
再び図1を参照する。FMレジスタ132は、上述した1個の物理ページの構成に適合した構成を有する。すなわち、FMレジスタ132は、1個の物理ページ内の8個の物理セクタと8個の付加情報領域にそれぞれ格納されるユーザデータとECCをそれぞれ保持するための8個のセクタ領域と8個のECC領域のセットを有する。
さて、上述したように、NAND型のFM104では、データの書き込みと読み出しは物理ページを単位として行われる。FM104にデータが書き込まれる場合には、まず、メモリコントローラ102からFM104内のFMレジスタ132に、書き込み先の1個の物理ページ分のデータ(8個の物理セクタ分のデータ、8個の付加情報領域分のデータ及び1個のページ情報領域分のデータ)が書き込まれ、その後に、FMレジスタ132からメモリセルアレイ134内の書き込み先の物理ページにそのデータが書き込まれる。逆に、FM104からデータが読み出される場合には、まず、メモリセルアレイ134内の読み出し元の物理ページからFMレジスタ132へその1個の物理ページ分のデータ(8個の物理セクタ分のデータ、8個の付加情報領域分のデータ及び1個のページ情報領域分のデータ)が読み出され、その後に、FMレジスタ132からメモリコントローラ102へそのデータが読み出される。
メモリコントローラ102は、ホストI/F50と、FM I/F60と、レジスタ群113と、バッファ群115と、メモリ110と、マイクロプロセッサ(以下、MP)112とを有する。
ホストI/F50は、ホストシステム200に接続される通信インタフェースデバイスである。ホストI/F50が、ホストシステム200からコマンド(例えば書込みコマンド及び読出しコマンド)を受信する。
FM I/F60は、FM群105(1以上のFM104)に接続される通信インタフェースデバイスである。FM I/F60を通じて、書込み対象データがFM104に書き込まれたり、FM104から読み出されたデータが受信されバッファに格納されたりする。
レジスタ群113は、1以上のレジスタである。レジスタ群113におけるレジスタとしては、例えば、ホストシステム200からのコマンド(例えば書き込みコマンド及び読出しコマンド)で指定されているLBAが設定されるLBAレジスタ、ホストシステム200からのコマンドが書き込まれるコマンドレジスタ、及び、ホストシステム200にとっての書き込み対象又は読み出し対象のデータ(ユーザデータ)が書き込まれるデータレジスタがある。
バッファ群115は、1以上のバッファである。バッファ群115におけるバッファの一例は後述する。
メモリ110は、FM104の制御又は管理のための情報を記憶する。例えば、その情報は、FM104毎の管理テーブルを含む。管理テーブルは、そのテーブルに対応するFM104について、どの物理領域(例えば物理ブロック或いは物理ページ)がどの論理領域(例えば論理ブロック或いは論理ページ)に割り当たっているかを表す情報と、物理ページの属性(例えば、正物理ページか副物理ページか)を表す情報と、どの物理ブロックが不良ブロックであるかを表す情報とを含んでよい。また、メモリ110は、MP112で実行されるコンピュータプログラム(例えばファームウェア)を記憶してよい。
制御デバイスの一例であるMP112は、メモリコントローラ102の動作を制御する。MP112が行う処理の一例は、後に説明する。
以下では、新しい書き込み要求を受信したときにメモリコントローラ102のMP112が行なう制御について、より詳細に説明する。この説明に当たり、まず、図2を参照して、本実施例における、ホストシステム200が認識する論理アドレス空間とメモリセルアレイ134内の物理アドレス空間との間の対応関係を説明する。
図2の左側には論理アドレス空間が示されている。論理アドレス空間には、多数の論理セクタが存在し、それらの論理セクタは、各論理セクタに付与されたLBAによって識別される。そして、複数個(本実施例では8個)の論理セクタが集合して、1個の論理ページを構成する。さらに、複数個(本実施例では64個)の論理ページが集合して、1個の論理ブロックを構成する。こうして複数個の論理ブロックが構成され、それらの論理ブロックは、各論理ブロックに付与されたLBN(論理ブロック番号)によって識別される。また、各論理ブロック内では、複数個(例えば64個)の論理ページが、各論理ページに付与された論理ページ番号(LPN)によって識別される。
図2の右側には、メモリセルアレイ134内の物理アドレス空間が(1個の物理ブロックの部分のみ抜粋して)示されている。物理アドレス空間では、複数個(本実施例では64個)の物理ページが集合して、1個の物理ブロックを構成する。図2では図示省略されているが、メモリセルアレイ134内には複数個(論理ブロックの総数より多い)の物理ブロックが存在し、それらの物理ブロックは、各物理ブックに付与された物理ブロックアドレス(PBA)により識別される。そして、各物理ブロック内では、複数個(例えば64個)の物理ページが、各物理ページに付与された物理ページ番号(PPN)によって識別される。各物理ページは、既に説明したように、複数個(本実施例では8個)の物理セクタで構成され、更に、物理セクタに関連付けられた8個の付加情報領域と1個のページ情報領域とを有する。
図2に示されるように、メモリセル134内の各物理ブロック(例えば、PBA#0の論理ブロック)に対して、いずれか1個の論理ブロック(例えば、LBN#0の論理ブロック)が、メモリコントローラ102のMP112によって関係付けられる。そして、各物理ブロック64内の各物理ページ(例えば、PPN#7〜PPN#12の各物理ページ)に対して、その物理ブロックに関係付けられた論理ブロック中いずれか1個の論理ページ(例えば、LPN#0〜LPN#5の各論理ページ)が、MP112によって関係付けられる。各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを示す情報(例えば、LPN)が記述される。
ところで、メモリセル134内には、まだどの論理ページとも関連付けられていない物理ページも存在し得る。ホストシステム200からの書き込み要求に対応して、論理ページに対して1個の物理ページ(どの論理ページとも関連付けられていない物理ページ)が関連付けられ、その物理ページに対するデータ書き込みが行われる。
以下、実施例1に係るFM群105が、2つのFMであるとして、本実施例の説明を続ける。なお、以下の説明では、同種の要素には同一の親番号を付し、同種の要素を、区別しないで説明する際には、参照符号のうちの親番号のみを用いて説明し、区別して説明する際には、親番号と子符号から成る参照符号を用いて説明することとする。
図3は、実施例1に係るFMシステムで行われる処理の概要を示す。図4は、実施例1に係るFMシステムで行われる処理の流れを示す。
FMシステム100は、第1のFM104Aと第2のFM104Bとを有する。各FM104は、前述したように、複数の物理ブロックから成るメモリセルアレイ134と、メモリセルアレイにページ単位で書きこまれるデータが格納されるレジスタ(FMレジスタ)132とを有する。
FMコントローラ102において、レジスタ群113に含まれる1つのレジスタとして、ホストシステム200からの書込み対象データが書き込まれるデータレジスタ111がある。バッファ群115に含まれているバッファとして、第1のFM104Aに対応した第1のバッファ120Aと、第2のFM104Bに対応した第2のバッファ120Bと、FM104A及び104Bに共通のバッファ120Cとがある。
メモリ110が、第1のFM104Aにおける物理領域に関する情報を有する第1の管理テーブル144Aと、第2のFM104Bにおける物理領域に関する情報を有する第2の管理テーブル144Bとを記憶する。管理の形式は、テーブルに限られないで良い。
FMコントローラ102(MP112)は、ホストシステム200に論理空間(論理的な記憶空間)を提供するが、論理空間は、複数の論理ブロックで構成されている。FMコントローラ102(MP112)は、論理ブロックに対して、原則、FM群105における2以上の物理ブロックを割り当てるようになっている。具体的には、例えば、論理ブロックに対して、1つの正物理ブロックと、1つの副物理ブロックとが割り当てられる。1つの論理ブロックに割り当てられる正物理ブロックと副物理ブロックは、異なるFM104A及び104Bに存在する。正物理ブロックと副物理ブロックは、それぞれ、FM104及び104Bのうちの決まった方から割り当てられても良いし、任意のFM104から割り当てられても良い。具体的には、例えば、或る論理ブロックに対しては、正物理ブロックが第1のFM104Aから割り当てられ、副物理ブロックが第2のFM104Bから割り当てられ、別の論理ブロックに対しては、正物理ブロックが第2のFM104Bから割り当てられ、副物理ブロックが第1のFM104Aから割り当てられても良い。
本実施例では、1つの論理ブロックに割り当てられる副物理ブロックは1つであるが、1つの論理ブロックに複数の副物理ブロックが割り当てられても良い。
各管理テーブル144は、物理ブロックと論理ブロックとの対応関係(どの物理ブロックがどの論理ブロックに正物理ブロック又は副物理ブロックとして割り当てられているか)を含んで良い。また、各管理テーブル144は、論理ブロック毎のステータス(物理ブロックが未割当てか否か)、物理ブロック毎のステータス(論理ブロックに割当て済みか、空き(割り当て可能)か、不良ブロックか否か)を含んで良い。FMコントローラ102(MP112)は、管理テーブル144Aを参照することにより、FM104Aに空きの物理ブロックが枯渇しているか否か(空きの物理ブロックの量(例えば、数、又は、全物理ブロック数に対する空き物理ブロックの割合)が所定値以下か否か)を判断することができる。
以下、図3及び図4を参照して、実施例1で行われる処理を説明する。
FMコントローラ102がホストシステム200から書込み先アドレス(例えばLBA(Logical Block Address))を指定した書込みコマンドを受信した場合、その書込みコマンドに従う書込み対象データが、データレジスタ111に書き込まれる(S11)。データレジスタ111に書き込まれたデータは、共通バッファ120Cに格納される(S12)。
共通バッファ120Cがデータで一杯になった場合(又は、ホストシステム200から書込み指示があった場合)、FMコントローラ102(MP112)は、管理テーブル144A及び144Bをそれぞれ参照することにより、FM104A及び104Bのそれぞれについて、空きの物理ブロックが枯渇しているか否かを判断する(S13)。具体的には、例えば、FMコントローラ102(MP112)は、書込み先アドレスが属する論理ブロック(書込み先論理ブロック)に物理ブロックが未割当ての場合、その論理ブロックに正副の物理ブロックとして割り当て可能な2個の物理ブロックが無いか否かを判断する。
S12の判断の結果が否定的の場合(S13:No)、FMコントローラ102(MP112)は、書込み先論理ブロックに割り当てられている正物理ブロック及び副物理ブロックにそれぞれ共通バッファ120C内の書込み対象データを書き込む(S14)。具体的には、例えば、FMコントローラ102(MP112)は、
(*)管理テーブル144A及び144Bを用いて、書込み先論理ブロックにFM104A(又は104B)から正物理ブロックを割り当てFM104B(又は104A)から副物理ブロックを割り当てる(既に書込み先論理ブロックに正副の物理ブロックが割当て済みであればこの処理はスキップされて良い)、
(*)共通バッファ120C内の書込み対象データをバッファ120A及び120Bにそれぞれコピーする、
(*)第1バッファ120A内の書込み対象データとそのECCを書込み先論理ブロックに割り当てられている正物理ブロックにおける書込み先の正物理ページ(書込み先アドレスが属する領域を含んだ論理ページに対応する物理ページ)に書き込むよう第1のFM104Aに指示を出し、且つ、第2バッファ120B内の書込み対象データとそのECCを書込み先論理ブロックに割り当てられている副物理ブロックにおける書込み先の副物理ページに書き込むよう第2のFM104Bに指示を出す、
を行う。これにより、バッファ120A及び120BからFMレジスタ132A及び132Bにそれぞれ書込み対象データ及びそのECCが書き込まれ、FMレジスタ132A及び132Bから書込み先の正副の物理ページにそれぞれ書込み対象データ及びそのECCが書き込まれる。すなわち、異なるFM104A及び104Bの正物理ブロック及び副物理ブロックに同じ書込み対象データが書き込まれることになる、つまり、書込み対象データの冗長化が行われる。
(*)管理テーブル144A及び144Bを用いて、書込み先論理ブロックにFM104A(又は104B)から正物理ブロックを割り当てFM104B(又は104A)から副物理ブロックを割り当てる(既に書込み先論理ブロックに正副の物理ブロックが割当て済みであればこの処理はスキップされて良い)、
(*)共通バッファ120C内の書込み対象データをバッファ120A及び120Bにそれぞれコピーする、
(*)第1バッファ120A内の書込み対象データとそのECCを書込み先論理ブロックに割り当てられている正物理ブロックにおける書込み先の正物理ページ(書込み先アドレスが属する領域を含んだ論理ページに対応する物理ページ)に書き込むよう第1のFM104Aに指示を出し、且つ、第2バッファ120B内の書込み対象データとそのECCを書込み先論理ブロックに割り当てられている副物理ブロックにおける書込み先の副物理ページに書き込むよう第2のFM104Bに指示を出す、
を行う。これにより、バッファ120A及び120BからFMレジスタ132A及び132Bにそれぞれ書込み対象データ及びそのECCが書き込まれ、FMレジスタ132A及び132Bから書込み先の正副の物理ページにそれぞれ書込み対象データ及びそのECCが書き込まれる。すなわち、異なるFM104A及び104Bの正物理ブロック及び副物理ブロックに同じ書込み対象データが書き込まれることになる、つまり、書込み対象データの冗長化が行われる。
書込みが完了した場合、FMコントローラ102(MP112)は、書込み先の正副の物理ページから書込み対象データ及びそのECCを読み出し書込み対象データを第1及び第2バッファ120A及び120Bにそれぞれ書き込む(S15)。この時点では、共通バッファ120Cには、S14で書き込まれた書込み対象データが記憶されている。物理ページから読み出されたデータは、一旦、FMレジスタ132に書き込まれ、FMレジスタ132からFM I/F60を通じてバッファ120A又は120Bに書き込まれる。
FMコントローラ102(MP112)は、第1及び第2バッファ120A及び120Bにおける書込み対象データのエラーの有無を判断するエラーチェック処理を行う(S16)。エラーチェック処理では、次の(E1)乃至(E4)のうちのいずれが行われても良い。
(E1)FMコントローラ102(MP112)は、第1及び第2バッファ120A及び120Bにおける書込み対象データ同士を比較する。一致という結果が得られれば、エラーが無いと判断される。不一致という結果が得られれば、FMコントローラ102(MP112)は、第1バッファ120A及び共通バッファ120Cにおける書込み対象データ同士を比較し、且つ、第2バッファ120B及び共通バッファ120Cにおける書込み対象データ同士を比較する。それぞれの比較について、一致という結果が得られれば、エラーが無いと判断され、不一致という結果が得られれば、バッファ120A又は120B内のデータにエラーが有ると判断される。
(E2)FMコントローラ102(MP112)は、第1及び第2バッファ120A及び120Bにおける書込み対象データ同士を比較する。一致という結果が得られれば、エラーが無いと判断される。不一致という結果が得られれば、FMコントローラ102(MP112)は、第1バッファ120A内の書込み対象データのエラーの有無を当該データのECCを用いて判断し、且つ、第2バッファ120B内の書込み対象データのエラーの有無を当該データのECCを用いて判断する。
(E3)FMコントローラ102(MP112)は、第1バッファ120A及び共通バッファ120Cにおける書込み対象データ同士を比較し、且つ、第2バッファ120B及び共通バッファ120Cにおける書込み対象データ同士を比較する。それぞれの比較について、一致という結果が得られれば、エラーが無いと判断され、不一致という結果が得られれば、バッファ120A又は120B内のデータにエラーが有ると判断される。
(E4)FMコントローラ102(MP112)は、第1バッファ120A内の書込み対象データのエラーの有無を当該データのECCを用いて判断し、且つ、第2バッファ120B内の書込み対象データのエラーの有無を当該データのECCを用いて判断する。
(E1)FMコントローラ102(MP112)は、第1及び第2バッファ120A及び120Bにおける書込み対象データ同士を比較する。一致という結果が得られれば、エラーが無いと判断される。不一致という結果が得られれば、FMコントローラ102(MP112)は、第1バッファ120A及び共通バッファ120Cにおける書込み対象データ同士を比較し、且つ、第2バッファ120B及び共通バッファ120Cにおける書込み対象データ同士を比較する。それぞれの比較について、一致という結果が得られれば、エラーが無いと判断され、不一致という結果が得られれば、バッファ120A又は120B内のデータにエラーが有ると判断される。
(E2)FMコントローラ102(MP112)は、第1及び第2バッファ120A及び120Bにおける書込み対象データ同士を比較する。一致という結果が得られれば、エラーが無いと判断される。不一致という結果が得られれば、FMコントローラ102(MP112)は、第1バッファ120A内の書込み対象データのエラーの有無を当該データのECCを用いて判断し、且つ、第2バッファ120B内の書込み対象データのエラーの有無を当該データのECCを用いて判断する。
(E3)FMコントローラ102(MP112)は、第1バッファ120A及び共通バッファ120Cにおける書込み対象データ同士を比較し、且つ、第2バッファ120B及び共通バッファ120Cにおける書込み対象データ同士を比較する。それぞれの比較について、一致という結果が得られれば、エラーが無いと判断され、不一致という結果が得られれば、バッファ120A又は120B内のデータにエラーが有ると判断される。
(E4)FMコントローラ102(MP112)は、第1バッファ120A内の書込み対象データのエラーの有無を当該データのECCを用いて判断し、且つ、第2バッファ120B内の書込み対象データのエラーの有無を当該データのECCを用いて判断する。
上記(E1)乃至(E4)のうち、(E1)及び(E2)が、(E3)及び(E4)よりも望ましいと考えられる。なぜなら、(E3)では、必ず2回の比較(第1バッファ120A及び共通バッファ120Cにおける書込み対象データ同士の比較と、第2バッファ120B及び共通バッファ120Cにおける書込み対象データ同士の比較)が行われるが、(E1)及び(E2)では、一致が得られれば1回の比較で済むからである。また、(E4)では、ECCを用いたチェックのみであるが、(E1)及び(E2)では、二つの物理ページから読み出された2つのデータ同士の比較が行われるので、信頼性はより高いことが期待されるからである。
エラーチェック処理においてエラーが無いと判断された場合(S17:No)、処理が終了する。
エラーチェック処理においてエラーが有ると判断された場合(S17:Yes)、FMコントローラ102(MP112)は、エラーの有る書込み対象データの読出し元の物理ページを含んだ物理ブロックを不良ブロックとして管理する(S18)。具体的には、例えば、FMコントローラ102(MP112)は、不良ブロックとされる物理ブロックを含むFM104に対応した管理テーブル144における、不良ブロックとされる物理ブロックのステータスを、良品ブロックから不良ブロックに変える。
そして、FMコントローラ102(MP112)は、S18で不良ブロックとされた物理ブロックを含むFM104に対応した管理テーブル144を基に、そのFM104から空き物理ブロックを確保する(S19)。その際、FMコントローラ102(MP112)は、不良化したブロックの一部の物理ページが既に使われていた場合は、そのデータを新しく確保した物理ブロックにコピーする。
FMコントローラ102(MP112)は、S19で確保した物理ブロックに、エラーの無い書込み対象データを書き込む(S20)。具体的には、例えば、FMコントローラ102(MP112)は、S19で確保した物理ブロックを含むFM104A又は104Bに対応したバッファ120A又は120Bに、共通バッファ120Cから書込み対象データ(エラーの無いデータ)をコピーし、バッファ120A又は120Bから、データを、S19で確保した物理ブロックの物理ページに書き込む。FMコントローラ102(MP112)は、S19で確保した物理ブロックを、S18で不良ブロックとされた物理ブロックに代えて、上記書込み先論理ブロックに割り当てる。例えば、不良ブロックとされた物理ブロックが副物理ブロックであれば、S19で確保した物理ブロックは副ブロックとして割り当てられて良い。
または、S19で確保した物理ブロックを含むFM104が例えばFM104Aである場合、FMコントローラ102(MP112)は、バッファ120Bからエラーの無いデータをバッファ120Aにコピーし、バッファ120Aからデータを、S19で確保した物理ブロックの物理ページに書き込んでも良い。
この方法によれば、エラーの無いデータをバッファ120Cから読み込む必要がないので、書き込み直後以外の任意の状態(例えばホストシステム200からの書き込み要求も読み込みも要求も無い状態)の時に、正物理ブロック及び副物理ブロック間の照合を行うことができ、経時変化によるデータ化けによるブロック不良も検出することができる。具体的には、例えば、図10に示すように、FMコントローラ102(MP112)は、ホストシステム200から書込みコマンドを受信したタイミングとは別のタイミングで(例えば定期的に)、S70を行ってよい。S70では、FMコントローラ102(MP112)は、1以上のページペアから選択したページペア(第1のFM104Aにおける物理ページと、その物理ページとペアを構成する物理ページであって第2のFM104Bにおける物理ページ)からデータを読み出す。その後、前述したS16〜S20の動作が行われて良い。S70の読み出しは、任意のページペアについてのみ行われても良いし、全てのページペアについて行われても良い。
さて、再び図3及び図4を参照する。S13の判断の結果が肯定的である場合(S13:Yes)、FMコントローラ102(MP112)は、副物理ブロック解除処理を行う(S21)。副物理ブロック解除処理とは、いずれかの論理ブロックに対する副物理ブロックの割り当てを解除し、且つ、割り当てが解除された副物理ブロックからブロック単位でデータを消去する(ブロック消去処理を行う)ことで、正物理ブロックとして割り当て可能な空きの物理ブロックを増やすことである。副物理ブロック解除処理については後に詳述する。
S21の後、FMコントローラ102(MP112)は、副物理ブロック解除処理の結果に応じた処理を行う(S22)。この処理では、書込み先論理ブロックに少なくとも正物理ブロックが割り当てられる。例えば、FMコントローラ102(MP112)は、空き物理ブロックを正物理ブロックとして書込み先論理ブロックに割り当て、割り当てた正物理ブロックに、バッファ120A又は120B内の書込み対象データを書き込む。
S22の結果、物理ブロックに書き込まれた書込み対象データの読み出しが必要であれば(S23:Yes)、S15が行われ、読み出しが不要であれば、処理が終了する。読み出しが必要になるケースとしては、例えば、後述する実施例3のケース、すなわち、書込み先論理ブロックに正物理ブロックに加えて副物理ブロックが割り当てられるケースがある。
以上が、図3及び図4の説明である。なお、図4のS13のような判断、すなわち、空きの物理ブロックの量が所定値以下か否かの判断は、書込みコマンドを受信したタイミングとは別のタイミングで(例えば定期的に)行われても良い。
図5は、実施例1に係る、論理ページと物理ページの対応関係の遷移、の一例を示す。実施例1では正副の物理領域はブロック単位で割り当てられるが、図5では、正物理ブロック内の物理ページを正物理ページと示し、副物理ブロック内の物理ページを副物理ページと示している。
実施例1では、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量以下の場合は、500Aに示すように、書込み先とされた全ての論理ブロックのそれぞれに対して、正物理ブロックの他に副物理ブロックが割り当てられる。
しかし、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量を超えた場合は、新たに書込み先とされた論理ブロックに正副両方の物理ブロックを割り当てられるほどの空き物理ブロックは無い。
この場合、図4のS13:Yesとなり、副物理ブロック解除処理が行われる。具体的には、例えば、500Bに示すように、或る論理ブロックから副物理ブロックの割り当てが解除され、副物理ブロックからデータが消去される。これにより、当該副物理ブロックは空き物理ブロックとなる。その空き物理ブロックが、正物理ブロックとして、新たな書込み先の論理ブロックに割り当てられる。
つまり、実施例1の副物理ブロック解除処理によれば、空き物理ブロックが枯渇した後に発生した新たな書込み先の論理ブロックには、いずれかの論理ブロックに割り当てられていた副物理ブロックが空き物理ブロックにされた後に正物理ブロックとして割り当てられる。当該概念を図5に示す通りページ単位で表現すると、参照符号500Bに示す通り、例えば、正副の物理ページ#1及び#2が割り当てられている論理ページ#1から副物理ページ#2の割り当てが解除され(且つ、物理ページ#2を含んだ物理ブロックからデータが消去され)、新たな論理ページ#(N+1)に、割り当てが解除された物理ページ#2が正物理ページとして割り当てられる。空き物理ブロックが枯渇した後に発生した新たな書込み先の論理ブロックには、正物理ブロックのみが割り当てられ、副物理ブロックは割り当てられない。
このようなことが繰り返されると、やがて、500Cに示すように、論理ブロックに割り当てられている物理ブロックは正物理ブロックのみとなる。つまり、論理ブロックと物理ブロックは1:1に対応するようになり、最大の物理記憶容量を使うことができるようになる。
以上、実施例1によれば、1つの論理ブロックに対して通常の2倍以上の物理ブロックが割り当てられそれらの物理ブロックにデータが書き込まれエラーの有無が判断されるので、潜在的な不良ブロックを見つける機会が早くなる。初期段階でFM104に不具合があっても、ホストシステム200(ユーザ側)からは、現象として感じられないため、使用上の不便さを感じさせることがない。これにより、潜在的不良ブロックの継続使用を回避し、正常の物理ブロックのみを選択的に使用することが可能となり、FMシステム100の寿命の向上に寄与することができる。
また、実施例1によれば、或る程度FMシステム100の使用が進み、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量を超えた場合は、副物理ブロックが空き物理ブロックとされることにより、論理空間の容量(使用可能容量)を減らすことなく継続使用が可能である。そして、副物理ブロックが空き物理ブロックとされ始めた頃には、既に全ての物理ブロックについてのチェックが済んでいるため、潜在的不良ブロックが無くなり、正常な物理ブロックのみで運用することが期待できる。
以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略或いは簡略する。
図6は、実施例2に係るFMシステムで行われる処理の概要を示す。図7は、実施例2に係るFMシステムで行われる処理の流れを示す。
実施例2では、正副の物理ブロックが1つのFM104から割り当てられる。FM群115が1つのFM104であるが、FM104が複数あっても、正副の物理ブロックが1つのFM104から割り当てられても良い。
FM104が1つでも、第1及び第2のバッファ120A及び120Bが存在する。第1のバッファ120Aに正物理ページに対して読み書きされるデータが記憶され、第2のバッファ120Bに副物理ページに対して読み書きされるデータが記憶される。
実施例2では、S14及びS15が若干異なる。
すなわち、図4のS14の代わりに図7のS14´が行われる。S14´では、書込み対象データの書込み先となる正副の物理ページ(正物理ブロック内の物理ページと副物理ブロック内の物理ページ)は、1つのFM104に存在している。
また、図4のS15の代わりに図7のS15´が行われる。S15´では、1つのFM104における正副の物理ページから、データが読み出され、正物理ページから読み出されたデータが第1バッファ120Aに書き込まれ、副物理ページから読み出されたデータが第2バッファ120Bに書き込まれる。
その他は、実質的に実施例1と同様である。
以下、実施例3を説明する。その際、実施例1及び2との相違点を主に説明し、実施例1及び2との共通点については説明を省略或いは簡略する。
図8及び図9は、実施例3に係る、論理ページと物理ページの対応関係の遷移、の一例の一部を示す。
実施例3では、800Aに示すように、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量以下の場合は、実施例1と同様、書込み先とされた全ての論理ブロックのそれぞれに対して、正物理ブロックの他に副物理ブロックが割り当てられる。
しかし、書込み先とされた論理ブロックの総量が、論理空間の容量から副物理ブロックの総量を減じた容量を超えた場合は、新たに書込み先とされる論理ブロックには、正物理ブロックだけが割り当てられるのではなく、2以上の論理ブロックに割り当て済みの副物理ブロックが空き物理ブロックとされ、新たに書込み先とされる論理ブロックに、2以上の空き物理ブロックのうちの1つの物理ブロックが正物理ブロックとして割り当てられ、それら2以上の空き物理ブロックのうちの別の1以上の物理ブロックが副物理ブロックとして割り当てられる。当該概念を図8及び図9に示す通りページ単位で表現すると、例えば、参照符号800Bに示す通り、正副の物理ページ#1及び#2が割り当てられている論理ページ#1から副物理ページ#2が解除され、且つ、正副の物理ページ#3及び#4が割り当てられている論理ページ#2から副物理ページ#4が解除される(更に、物理ページ#2及び#4を含んだ1以上の物理ブロックからデータが消去される)。そして、新たに書込み先とされる論理ページ#(N+1)に、物理ページ#2及び#4のうち、物理ページ#2が正物理ページとして割り当てられ、物理ページ#4が副物理ページとして割り当てられる。
つまり、実施例3の副物理ブロック解除処理によれば、空き物理ブロックが枯渇した後に発生した新たな書込み先の論理ブロックには、正物理ブロックだけでなく副物理ブロックも割り当てられる。これにより、新たな書込み先の論理ブロックに対しても、正副の物理ブロックにデータを書き込むことができ、更に、実施例1のようなエラーチェック、すなわち、それらの正副の物理ブロックからデータをそれぞれ読み出して、それらのデータについてエラーの有無を判断することができる。
なお、このようなことが繰り返されると、やがて、800Cに示すように、正物理ブロックとして割り当てられる物理ブロックが多くなり、800Dに示すように、論理ブロックに割り当てられている物理ブロックは正物理ブロックのみとなる。
以上、幾つかの実施例を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
例えば、1つの論理ブロックに正副の物理ブロックが割り当てられ、故に、書込み先として使用できる物理ブロックが不足してくる状況は、正副の物理ブロックに書き込まれたデータのエラーの有無が判断されるケースに限られない。そこで、上記実施例1乃至3の説明を基に、物理ブロックの不足を解消することそれ自体を1つの特徴としたFMコントローラ(メモリコントローラ)を、例えば、下記のように表現することができる。また、下記メモリコントローラと1以上のフラッシュメモリとを有するフラッシュメモリシステムや、下記メモリコントローラが行う処理に従う記憶制御方法も表現することができる。
書込み先アドレスを指定した書込みコマンドを送信するホストシステムに接続され前記書込みコマンドを受信する第1の通信インタフェースデバイスと、
複数の物理ブロックで構成された1以上のフラッシュメモリであるフラッシュメモリ群に接続される第2の通信インタフェースデバイスと、
前記第1及び第2の通信インタフェースデバイスに接続されており、前記ホストシステムに対する論理空間における論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックを含んだ論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっている制御デバイスと
を有し、
前記制御デバイスが、更に、
(A)前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び1以上の副物理ブロックを特定し、
(B)前記特定した正物理ブロック及び1以上の副物理ブロックに、前記受信した書込みコマンドに従う書込み対象データを書き込み、
(D)前記複数の書込み先物理ブロックにそれぞれ書き込まれた複数の前記書込み対象データのいずれかにエラーの有る場合、エラーを有する書込み対象データの物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる、
ようになっており、
前記制御デバイスが、更に、
(X)前記論理空間に割り当て可能な物理ブロックの数が所定値以下か否かを判断し、
(Y)前記(X)の判断の結果が肯定的であれば、割当て済みの複数の副物理ブロックのうちの少なくとも1つの副物理ブロックの割り当てを解除し前記少なくとも1つの副物理ブロックの各々からデータをブロック単位で消去する、
ようになっているメモリコントローラ。
書込み先アドレスを指定した書込みコマンドを送信するホストシステムに接続され前記書込みコマンドを受信する第1の通信インタフェースデバイスと、
複数の物理ブロックで構成された1以上のフラッシュメモリであるフラッシュメモリ群に接続される第2の通信インタフェースデバイスと、
前記第1及び第2の通信インタフェースデバイスに接続されており、前記ホストシステムに対する論理空間における論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックを含んだ論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっている制御デバイスと
を有し、
前記制御デバイスが、更に、
(A)前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び1以上の副物理ブロックを特定し、
(B)前記特定した正物理ブロック及び1以上の副物理ブロックに、前記受信した書込みコマンドに従う書込み対象データを書き込み、
(D)前記複数の書込み先物理ブロックにそれぞれ書き込まれた複数の前記書込み対象データのいずれかにエラーの有る場合、エラーを有する書込み対象データの物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる、
ようになっており、
前記制御デバイスが、更に、
(X)前記論理空間に割り当て可能な物理ブロックの数が所定値以下か否かを判断し、
(Y)前記(X)の判断の結果が肯定的であれば、割当て済みの複数の副物理ブロックのうちの少なくとも1つの副物理ブロックの割り当てを解除し前記少なくとも1つの副物理ブロックの各々からデータをブロック単位で消去する、
ようになっているメモリコントローラ。
100:フラッシュメモリシステム、102:メモリコントローラ、104:フラッシュメモリ
Claims (9)
- 書込み先アドレスを指定した書込みコマンドを送信するホストシステムに接続され前記書込みコマンドを受信する第1の通信インタフェースデバイスと、
複数の物理ブロックで構成された1以上のフラッシュメモリであるフラッシュメモリ群に接続される第2の通信インタフェースデバイスと、
前記第1及び第2の通信インタフェースデバイスに接続されており、前記ホストシステムに対する論理空間における論理ブロックに複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックに不良の物理ブロックである不良ブロックを割り当て無いようになっている制御デバイスと
を有し、
前記制御デバイスが、更に、
(A)前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
(B)前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
(C)前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
(D)前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
(E)エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる、
メモリコントローラ。 - 前記制御デバイスは、更に、
(X)前記論理空間に割り当て可能な物理ブロックの量が所定値以下か否かを判断し、
(Y)前記(X)の判断の結果が肯定的であれば、割当て済みの複数の副物理ブロックのうちの少なくとも1つの副物理ブロックの割り当てを解除し、前記少なくとも1つの副物理ブロックからデータをブロック単位で消去する、
請求項1記載のメモリコントローラ。 - 前記(Y)において、割り当てが解除される副物理ブロックは、少なくとも1つの論理ブロックに割り当てられている少なくとも1つの副物理ブロックであり、
前記(Y)において、前記制御デバイスは、物理ブロックが新たに割り当てられるべき論理ブロックに対して、前記少なくとも1つの論理ブロックから副物理ブロックとしての割り当てが解除されデータが消去された物理ブロックを正物理ブロックとして割り当てる、
請求項2記載のメモリコントローラ。 - 前記(Y)において、割り当てが解除される副物理ブロックは、2以上の論理ブロックに割り当てられている2以上の副物理ブロックであり、
前記(Y)において、前記制御デバイスは、物理ブロックが新たに割り当てられるべき論理ブロックに対して、前記2以上の論理ブロックから副物理ブロックとしての割り当てが解除されデータが消去された2以上の物理ブロックのうちの1つを正物理ブロックとして割り当て、且つ、それら2以上の物理ブロックのうちの別の少なくとも1つの物理ブロックを副物理ブロックとして割り当てる、
請求項3記載のメモリコントローラ。 - 前記制御デバイスは、前記(X)を、前記第1の通信インタフェースデバイスが前記書込みコマンドを受信した場合に行い、前記(X)の判断の結果が否定的の場合に、前記(A)を行う、
請求項2乃至4のうちのいずれか1項に記載のメモリコントローラ。 - 前記制御デバイスは、第1乃至第3の記憶領域を有しており、
前記制御デバイスは、前記(B)において、前記第3の記憶領域に前記書込み対象データを書込み、前記第3の記憶領域から前記第1及び第2の記憶領域にそれぞれ前記書込み対象データをコピーし、前記第1の記憶領域から前記正物理ブロックに前記書込み対象データを書込み、前記第2の記憶領域から前記副物理ブロックに前記書込み対象データを書込み、
前記制御デバイスは、前記(C)において、前記正物理ブロックから前記第1の記憶領域に前記書込み対象データを読み出し、前記副物理ブロックから前記第2の記憶領域に前記書込み対象データを読み出し、
前記制御デバイスは、前記(D)において、前記第1の記憶領域内の書込み対象データと前記第2の記憶領域内の書込み対象データとを比較し、それらが不一致の場合に、前記第1の記憶領域内の書込み対象データと前記第3の記憶領域内の書込み対象データとを比較し、且つ、前記第2の記憶領域内の書込み対象データと前記第3の記憶領域内の書込み対象データとを比較することで、前記第1及び第2の記憶領域のいずれの記憶領域内の書込み対象データがエラーを有するかを特定する、
請求項1乃至5のうちのいずれか1項に記載のメモリコントローラ。 - 前記制御デバイスは、前記(B)において、前記正物理ブロック及び前記副物理ブロックのそれぞれに対して、前記書込み対象データと当該データのECC(Error-Correcting Code)とのセットを書込み、
前記制御デバイスは、前記(D)において、前記正物理ブロック及び前記副物理ブロックからそれぞれ読み出された2つの書込み対象データを比較し、それらが不一致の場合に、それぞれの書込み対象データについて、当該データのECCを用いてエラーの有無を判断する、
請求項1乃至5のうちのいずれか1項に記載のメモリコントローラ。 - 請求項1乃至7のうちのいずれか1項に記載のメモリコントローラと、
前記メモリコントローラに接続され複数の物理ブロックで構成された1以上のフラッシュメモリであるフラッシュメモリ群と
を有するフラッシュメモリシステム。 - 書込み先アドレスを指定した書込みコマンドを送信するホストシステムに対する論理空間における論理ブロックに、1以上のフラッシュメモリから複数の物理ブロックを正物理ブロック及び副物理ブロックとして割り当てるようになっており、且つ、不良の物理ブロックである不良ブロックを前記ホストシステムから書込み先アドレスとして指定され得るアドレスに属する論理ブロックを含んだ論理ブロックに割り当て無いようになっているフラッシュメモリシステムで行われる記憶制御方法であって、
前記ホストシステムから書込みコマンドを受信し、
前記受信した書込みコマンドで指定されている書込み先アドレスが属する書込み先論理ブロックに対応している正物理ブロック及び副物理ブロックを特定し、
前記特定した正物理ブロック及び副物理ブロックの各々に、前記受信した書込みコマンドに従う書込み対象データを書き込み、
前記書き込んだ書込み対象データを書込み先の前記正物理ブロック及び副物理ブロックからそれぞれ読み出し、
前記正物理ブロック及び副物理ブロックからそれぞれ読み出された複数の前記書込み対象データについてエラーの有無を判断し、
エラーを有する書込み対象データが見つかった場合、前記エラーを有する書込み対象データの物理ページを含んだ物理ブロックを前記不良ブロックとして管理し、不良ブロックと管理された物理ブロックを有するフラッシュメモリから未割当ての物理ブロックを確保し、確保した物理ブロックに、前記読み出された複数の書込み対象データのうちのエラーを有しない書込み対象データを書き込み、前記確保した物理ブロックを、前記不良ブロックと管理された物理ブロックに代えて、前記書込み先論理ブロックに割り当てる、
記憶制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012164685A JP2014026376A (ja) | 2012-07-25 | 2012-07-25 | メモリコントローラ、フラッシュメモリシステム及び記憶制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012164685A JP2014026376A (ja) | 2012-07-25 | 2012-07-25 | メモリコントローラ、フラッシュメモリシステム及び記憶制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014026376A true JP2014026376A (ja) | 2014-02-06 |
Family
ID=50199981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012164685A Pending JP2014026376A (ja) | 2012-07-25 | 2012-07-25 | メモリコントローラ、フラッシュメモリシステム及び記憶制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014026376A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016001962A1 (ja) * | 2014-06-30 | 2016-01-07 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
-
2012
- 2012-07-25 JP JP2012164685A patent/JP2014026376A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016001962A1 (ja) * | 2014-06-30 | 2016-01-07 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
JPWO2016001962A1 (ja) * | 2014-06-30 | 2017-04-27 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
US10061667B2 (en) | 2014-06-30 | 2018-08-28 | Hitachi, Ltd. | Storage system for a memory control method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8332576B2 (en) | Data reading method for flash memory and controller and storage system using the same | |
US8312203B2 (en) | Semiconductor storage device and method of controlling a semiconductor storage device by allocating a physical block composed of plural pages to a group of logical addresses | |
US8645613B2 (en) | Data writing method for flash memory and control circuit and storage system using the same | |
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US8812776B2 (en) | Data writing method, and memory controller and memory storage device using the same | |
JP4632180B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US11288019B2 (en) | Memory management method and storage controller | |
KR20130078973A (ko) | 메모리 장치의 불량 저장 영역 관리 방법 및 이를 이용한 저장 장치 | |
US8694748B2 (en) | Data merging method for non-volatile memory module, and memory controller and memory storage device using the same | |
US8250292B2 (en) | Data writing method for a flash memory, and controller and storage system using the same | |
US9710378B2 (en) | Writing an address conversion table for nonvolatile memory wear leveling | |
KR20130044657A (ko) | 파일 시스템 및 그 제어 방법 | |
JP4666081B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5093294B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4702387B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4743174B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US9312011B1 (en) | Data writing method, memory storage device and memory control circuit unit | |
US10824340B2 (en) | Method for managing association relationship of physical units between storage area and temporary area, memory control circuit unit, and memory storage apparatus | |
JP2014026376A (ja) | メモリコントローラ、フラッシュメモリシステム及び記憶制御方法 | |
JP4582232B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4710918B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4720891B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4840415B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2019057340A (ja) | メモリシステム及びメモリ制御方法 | |
JP6260395B2 (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 |