JP2004133677A - 記憶装置 - Google Patents
記憶装置 Download PDFInfo
- Publication number
- JP2004133677A JP2004133677A JP2002297411A JP2002297411A JP2004133677A JP 2004133677 A JP2004133677 A JP 2004133677A JP 2002297411 A JP2002297411 A JP 2002297411A JP 2002297411 A JP2002297411 A JP 2002297411A JP 2004133677 A JP2004133677 A JP 2004133677A
- Authority
- JP
- Japan
- Prior art keywords
- block
- page
- written
- contents
- user
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】不揮発性半導体メモリにおけるユーザデータの書換えを高速に行なうことが可能な記憶装置を提供すること。
【解決手段】フラッシュメモリ1は、ユーザデータを格納するユーザブロックと、代替用に予め確保された代替ブロックと、論理アドレスに対応するユーザブロックの物理アドレスを格納する変換テーブルと、代替ブロックの物理アドレスを格納する代替テーブルとを含む。コントローラ2は、変換テーブルを参照してユーザブロック内のページにユーザデータを書込む際、当該ページが書込み済みの場合には、代替テーブルを参照して代替ブロック内のページにユーザデータを書込んで新たなユーザブロックとし、元のユーザブロックを代替ブロックとするので、ユーザデータの書換えを高速に行なうことが可能となる。
【選択図】 図1
【解決手段】フラッシュメモリ1は、ユーザデータを格納するユーザブロックと、代替用に予め確保された代替ブロックと、論理アドレスに対応するユーザブロックの物理アドレスを格納する変換テーブルと、代替ブロックの物理アドレスを格納する代替テーブルとを含む。コントローラ2は、変換テーブルを参照してユーザブロック内のページにユーザデータを書込む際、当該ページが書込み済みの場合には、代替テーブルを参照して代替ブロック内のページにユーザデータを書込んで新たなユーザブロックとし、元のユーザブロックを代替ブロックとするので、ユーザデータの書換えを高速に行なうことが可能となる。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、不揮発性半導体メモリの管理を行なう記憶装置に関し、特に、論理アドレスを不揮発性半導体メモリの物理アドレスに変換して不揮発性半導体メモリを管理する記憶装置に関する。
【0002】
【従来の技術】
近年、不揮発性半導体メモリのうち、大容量のデータ蓄積用の不揮発性半導体メモリとして、NAND型フラッシュメモリが普及しつつある。NAND型フラッシュメモリにおいては、データの消去は複数のページによって構成されるブロック単位で行なわれ、データの書込みは消去済みのページに対してページ単位でのみ行なわれる。
【0003】
このようなNAND型フラッシュメモリで構成される従来の記憶装置においては、ユーザが1ページのデータを書換えたい場合、該当ページに直接データを書込むことができないため、一旦該当ページのデータを消去してから新たなデータを書込むか、別の消去済みのブロックのページにデータを書込む必要がある。
【0004】
これに関連する技術として、特開2001−142774号公報に開示された発明がある。この発明は、書換え可能な不揮発性メモリの記憶容量が増加しても、アドレス変換テーブル用の揮発性メモリ領域の増加を不要としたアドレス変換方法に関するものである。
【0005】
【特許文献1】
特開2001−142774号公報
【0006】
【発明が解決しようとする課題】
しかし、上述したNAND型フラッシュメモリで構成される従来の記憶装置において、該当ページのデータを消去してから新たなデータを書込む場合、データの消去はブロック単位でしか行えず、ブロック内の該当ページ以外のページのデータも消去されてしまうため、データの消去前に該当ページ以外のページのデータを退避させる必要があった。したがって、該当ページのデータを書換えるのに必要な時間が長くなるため、プロセッサの処理速度が低下するといった問題点があった。
【0007】
また、別の消去済みのブロックにデータを書込む場合、どこにあったデータがどのブロックの何番目のページに書込まれたかというアドレス管理が必要になると共に、元のデータが格納されていたページが無効であるという情報も管理する必要がある。したがって、データの書換に伴う管理情報の更新が複雑になると共に、管理情報量も多くなるといった問題点があった。
【0008】
さらには、特開2001−142774号公報に開示されたアドレス変換方法は、論理アドレスをフラッシュメモリの物理アドレスに変換するものであるが、ブロック単位でのデータ消去を前提としたデータの書換えが考慮されておらず、上述した問題点を解決することはできない。
【0009】
本発明は、上記問題点を解決するためになされたものであり、その目的は、不揮発性半導体メモリにおけるユーザデータの書換えを高速に行なうことが可能な記憶装置を提供することである。
【0010】
【課題を解決するための手段】
本願発明に係る記憶装置は、複数のページによって構成されるブロック単位で消去が行なわれ、消去済みのページに対してページ単位で書込みが行なわれる不揮発性半導体メモリと、不揮発性半導体メモリを制御する制御手段とを含む。
【0011】
不揮発性半導体メモリは、ユーザデータを格納するユーザブロックと、代替用に予め確保された代替ブロックと、論理アドレスに対応するユーザブロックの物理アドレスを格納する変換テーブルと、代替ブロックの物理アドレスを格納する代替テーブルとを含む。
【0012】
制御手段は、変換テーブルを参照してユーザブロック内のページにユーザデータを書込む際、当該ページが書込み済みの場合には、代替テーブルを参照して代替ブロック内のページにユーザデータを書込んで新たなユーザブロックとし、元のユーザブロックを代替ブロックとする。
【0013】
【発明の実施の形態】
NAND型フラッシュメモリのページのサイズおよびブロックのサイズは、品種によって異なる。たとえば、1ページが528バイトであり、1ブロックが32ページの構成のフラッシュメモリもあれば、1ページが2112バイトであり、1ブロックが64ページのフラッシュメモリもある。本実施の形態においては、1ページが528バイトであり、1ブロックが32ページの構成のフラッシュメモリを用いた記憶装置について説明するが、フラッシュメモリの構成はこれに限定されるものではない。
【0014】
図1は、本発明の実施の形態における記憶装置の概略構成を示すブロック図である。この記憶装置は、NAND型フラッシュメモリ1と、プロセッサ3と、プロセッサ3からフラッシュメモリ1へのアクセスに対して、フラッシュメモリ1への制御信号の生成や誤り訂正処理などの制御を行なうコントローラ2と、ROM(Read Only Memory)4と、RAM(Random Access Memory)5とを含む。
【0015】
コントローラ2、プロセッサ3、ROM4およびRAM5は、プロセッサバス6によって接続される。また、フラッシュメモリ1およびコントローラ2は、メモリバス7によって接続される。
【0016】
ROM4には、プロセッサ3が実行する命令コードなどが格納される。また、RAM5は、プロセッサ3のワークエリアなどとして利用され、変数が記憶されたり、フラッシュメモリ1から読出されたデータが一次的に格納されたりする。
【0017】
コントローラ2は、プロセッサ3がフラッシュメモリ1にアクセスするときのフラッシュメモリコマンドの印加や読出し/書込みデータの転送のためのフラッシュメモリ制御信号を生成する。また、データ読出し時は誤り訂正処理を行ない、データ書込み時は誤り訂正符号の生成およびフラッシュメモリ1への誤り訂正符号の書込みを併せて行なう。
【0018】
なお、コントローラ2は、プロセッサ3がROM4に格納される命令コードを実行して実現される後述の処理内容をプロセッサ3の代わりに実行するようにしてもよい。
【0019】
図2は、フラッシュメモリ1に格納されるデータの種類を説明するための図である。ユーザブロックは、任意のユーザデータを格納するための領域であり、ブロック毎に論理アドレスが割当てられる。
【0020】
変換テーブルには、ユーザブロックに割当てられる論理アドレスに対応する物理アドレスが格納される。代替ブロックは、ユーザブロックの書換え用および不良ブロック発生時の代替用に予め確保された領域である。
【0021】
代替テーブルには、代替ブロックの物理アドレスおよび代替ブロック数が格納される。ポインタテーブルには、変換テーブル、代替テーブルおよびポインタテーブル代替ブロックのそれぞれの物理アドレスと、ポインタテーブル代替ブロック数とが格納される。また、ポインタテーブル代替ブロックは、ポインタテーブルの代替用に予め確保された領域である。
【0022】
図3は、変換テーブルの内容の一例を示す図である。物理ブロックアドレスを2バイトで表すので、16バイトの冗長データ領域を除く1ページ分の変換テーブル(512バイト)で256ブロック分のユーザブロックの管理を行なうことができる。
【0023】
図3(a)は、論理ブロック0〜255の物理アドレスを格納した0番目の変換テーブルを示している。また、図3(b)は、論理ブロックN×256〜N×256+255の物理アドレスを格納したN番目の変換テーブルを示している。たとえば、512Mbのフラッシュメモリの場合、物理ブロックの数は4096個であるので、Nが15となって16ブロック分の変換テーブルが存在することになる。
【0024】
1ページに16バイト分の冗長データ領域(ワードオフセット256〜263)が存在するが、この領域には誤り訂正コードECC(Error Correcting Code)と、そのページが書込み済みであることを示す書込み済みフラグとが格納される。
【0025】
図4は、代替テーブルの内容の一例を示す図である。ワードオフセット0の領域には代替ブロック残数が格納され、それ以降の領域には0〜M番目の代替ブロックの物理アドレスが格納される。ワードオフセット256以降の冗長データ領域には、誤り訂正コードECCと、そのページが書込み済みであることを示す書込み済みフラグとが格納される。
【0026】
図5は、代替テーブルの内容が更新されるところを模式的に示す図である。ユーザブロック内のページにデータを書込む際、そのユーザブロック(元ユーザブロック)内のページが書込み済みの場合、代替ブロックと交換してその代替ブロックを使用する。使用する代替ブロックは、代替テーブルの最下位に格納される代替ブロック[0]であり、この代替ブロックにユーザデータを書込み、新ユーザブロックとする。代替テーブルにおいては、内容(代替ブロック[1]〜[M])が下位に2バイトずつシフトされ、元代替ブロック[1]が最下位の領域に格納されて新たな代替ブロック[0]となる。
【0027】
一方、元ユーザブロックは消去され、正常に消去が完了すればそのブロックの物理アドレスが代替テーブルの最下位の領域に格納され、新たな代替ブロック[M]として将来の使用に備える。ブロックの消去が正常に完了した場合には、代替ブロック残数はM+1のまま増減しない。また、ブロックの消去エラーが発生した場合には、代替ブロック残数は1だけデクリメントされてM個となる。
【0028】
図6は、ポインタテーブルの内容の一例を示す図である。ワードオフセット0〜Nの領域にはそれぞれ変換テーブル[0]〜[N]の物理ブロックアドレスが格納される。ワードオフセット16の領域には、代替テーブルの物理ブロックアドレスが格納される。ワードオフセット17の領域には、ポインタテーブル代替ブロックの残数が格納され、以降の領域にはポインタテーブル代替ブロック[0]〜[9]の物理ブロックアドレスが格納される。本実施の形態においては、ポインタテーブル代替ブロックとして10個のブロックを確保しているが、他の数であってもよい。
【0029】
ワードオフセット256以降の冗長データ領域には、誤り訂正コードECC、そのページが書込み済みであることを示す書込み済みフラグおよびそのブロックがポインタテーブルであることを識別するためのIDコードが格納される。
【0030】
ポインタテーブルは所定のアドレス範囲内、たとえばブロックアドレス0〜255番地内に格納されるようにする。電源投入直後、プロセッサ3はこの範囲のページのIDコードを検索することによって、ポインタテーブルを識別してその内容を取得することができる。このポインタテーブルの内容を取得できれば、プロセッサ3は上述したフラッシュメモリ1の制御に必要な情報が格納される物理ブロックアドレスを全て参照することができる。
【0031】
また、ポインタテーブルの格納範囲を、たとえばブロックアドレス0〜255番地内に制限するためには、ポインタテーブル代替ブロックも予めこの範囲内に所定数だけ確保しておく必要がある。
【0032】
図7は、テーブル群(変換テーブル、代替テーブル、ポインタテーブル)が格納されるブロックの内容を示す図である。それぞれのテーブルは、1ブロック内の1ページだけが有効データとして使用される。それぞれのテーブルの書換えの際、ブロック内のページオフセットを1だけインクリメントしたページにテーブルの新しい内容が書込まれる。したがって、非消去状態のページのうち、最上位のページに格納されるデータが有効なテーブルとなる。
【0033】
ブロックの最上位ページまでデータが書込まれている場合には、一旦そのブロックを消去して、先頭のページに新しいテーブルの内容が書込まれる。また、有効なテーブルが格納されるページは、ワードオフセット256以降の冗長データ領域に格納される書込み済みフラグを検索することによって識別され、その内容が取得される。一旦、有効なテーブルを検索してその内容を取得した後は、そのワードオフセット値をRAM5のワークエリアに格納して管理すれば、毎回テーブルが格納されるブロックを検索する必要はなくなる。
【0034】
図8は、本発明の実施の形態における記憶装置の処理手順を説明するためのフローチャートである。まず、プロセッサ3が、ユーザデータを書込む最初の領域の論理セクタアドレスLSAと、書込みを行なうセクタ数CNTとを決定する(S101)。ここでは、1セクタを512バイトとし、ページのサイズと同じであるとする。
【0035】
次に、プロセッサ3は、論理セクタアドレスLSAから、論理ブロックアドレスLBAと、ブロック内のページオフセットipとを算出する(S102)。ここでは、1ブロックを32ページとしているので、論理ブロックアドレスLBA=LSA[16:5]となり、ip=LSA[4:0]となる。
【0036】
次に、プロセッサ3は、変換テーブルの内容を参照して、論理ブロックアドレスLBAに対応する物理ブロックアドレスPBAを取得する(S103)。1つの変換テーブルには256ブロック分の情報が格納されているので、論理ブロックアドレスLBAに対応する物理ブロックアドレスPBAが格納される変換テーブルの番号は、LBA÷256=LBA[11:8]となる。
【0037】
変換テーブルの番号が求まれば、ポインタテーブルを参照して変換テーブルの物理ブロックアドレスを取得できるので、該当する変換テーブルの内容を読出すことができる。なお、物理ブロックアドレスPBAが格納される変換テーブル内のワードアドレスは、LBA[7:0]となる。
【0038】
次に、プロセッサ3は、物理ブロックアドレスがPBAのブロック内の、ページオフセットがipのページから、セクタ数CNT分のページの書込み済みフラグを取得する(S104)。そして、プロセッサ3は、書込み対象のページが全て消去状態であるか否かを判定する(S105)。
【0039】
書込み対象のページに消去状態でないページがあれば(S105,No)、ステップS110へ進み、ブロック代替処理が行なわれる。また、書込み対象のページに消去状態でないページがなければ(S105,Yes)、プロセッサ3から出力されるデータをそのまま書込み対象のページに書込む(S106)。そして、プロセッサ3は、フラッシュメモリ1のステータスを読出すことによって、書込みが正常に完了したか否かを判定する(S107)。
【0040】
書込みが正常に完了した場合には(S107,pass)、処理を終了する。また、書込みがエラー終了した場合には(S107,fail)、そのブロックをブロック不良と判定し、ユーザ不良フラグに1を設定し(S108)、代替ブロックの残数を1だけデクリメントし(S109)、ステップS110以降のブロック代替処理が行なわれる。
【0041】
ステップS110において、プロセッサ3は代替テーブルを参照し、代替ブロックの物理ブロックアドレスを取得する。そして、元のユーザブロックから書込み対象以外のページのデータを代替ブロックにコピーする(S111)。ここで、元のユーザブロックのうち消去状態のページは、代替ブロックにコピーする必要はない。
【0042】
次に、プロセッサ3は、書込み対象のページにデータを書込み(S112)、書込みが正常に完了したか否かを判定する(S113)。書込みが正常に完了した場合には(S113,pass)、ステップS114へ処理が進む。また、書込みがエラー終了した場合には(S113,fail)、ステップS109へ戻って別の代替ブロックに対するデータ書込みが行なわれる。
【0043】
ステップS114において、プロセッサ3はユーザ不良フラグをチェックする。ユーザ不良フラグが0であれば(S114,Yes)、元のユーザブロックを消去し(S115)、消去が正常に完了したか否かを判定する(S116)。消去が正常に完了した場合には(S116,pass)、ステップS118へ処理が進む。
【0044】
また、消去がエラー終了した場合には(S116,fail)、代替ブロックの残数を1だけデクリメントし、ユーザ不良フラグに1を設定して(S117)、ステップS118へ処理が進む。また、ステップS114において、ユーザ不良フラグが1であれば(S114,No)、ステップS118へ処理が進む。
【0045】
プロセッサ3は、変換テーブルの内容を更新し(S118)、代替テーブルの内容を更新する(S119)。この変換テーブルの内容の更新処理および代替テーブルの内容の更新処理の詳細については後述する。
【0046】
次に、プロセッサ3は、ポインタテーブル更新フラグが1であるか否かを判定する(S120)。ポインタテーブル更新フラグが1でなければ(S120,No)、処理を終了する。また、ポインタテーブル更新フラグが0であれば(S120,Yes)、ポインタテーブルの内容を更新して(S121)、処理を終了する。このポインタテーブルの内容の更新の詳細については後述する。
【0047】
図9は、変換テーブルの内容の更新処理(S118)の処理手順を説明するためのフローチャートである。まず、プロセッサ3は、変換テーブルが格納されているブロック内の有効なデータが格納されているページのページオフセット番号TBL_ipを1だけインクリメントする(S201)。なお、ページオフセット番号TBL_ipは、初回の参照時にのみ変換テーブルが格納されるブロックを検索することによって取得され、2回目以降の参照時にはRAM内のワークエリアに格納された内容を参照することによって取得される。
【0048】
次に、プロセッサ3は、ページオフセット番号TBL_ipが上限を超えているか否かを判定する(S202)。ここでは、1ブロックを32ページとしているので、TBL_ipが32であるか否かを判定している。ページオフセット番号TBL_ipが32でなければ(S202,No)、ステップS206へ処理が進む。
【0049】
また、ページオフセット番号TBL_ipが32であれば(S202,Yes)、その変換テーブルブロックを消去し(S203)、消去が正常に完了したか否かを判定する(S204)。消去が正常に完了した場合には(S204,pass)、ページオフセット番号TBL_ipに0を設定し(S205)、ステップS206へ処理が進む。また、消去がエラー終了した場合には(S204,fail)、ステップS208へ進み変換テーブルの代替処理が行なわれる。
【0050】
ステップS206において、プロセッサ3は、ページオフセット番号がTBL_ipのページに新たな変換テーブルの内容を書込む。そして、書込みが正常に完了したか否かを判定する(S207)。書込みが正常に完了した場合には(S207,pass)、処理を終了する。また、書込みがエラー終了した場合には(S207,fail)、ステップS208へ進み変換テーブルの代替処理が行なわれる。
【0051】
ステップS208において、プロセッサ3は、ポインタテーブル更新フラグに1を設定し(S208)、代替ブロックの残数を1だけデクリメントする(S209)。そして、プロセッサ3は代替テーブルを参照し、代替ブロックの物理ブロックアドレスを取得する(S210)。そして、プロセッサ3は、代替ブロックが消去状態なのでページオフセット番号TBL_ipを0に初期化する(S211)。
【0052】
次に、プロセッサ3は、書込み対象のページに新しい変換テーブルの内容を書込み(S212)、書込みが正常に完了したか否かを判定する(S213)。書込みが正常に完了した場合には(S213,pass)、処理を終了する。また、書込みがエラー終了した場合には(S213,fail)、ステップS209へ戻って別の代替ブロックに対するデータ書込みが行なわれる。
【0053】
図10は、代替テーブルの内容の更新処理(S119)の処理手順を説明するためのフローチャートである。まず、プロセッサ3は、代替テーブルが格納されているブロック内の有効なデータが格納されているページのページオフセット番号REP_ipを1だけインクリメントする(S301)。なお、ページオフセット番号REP_ipは、初回の参照時にのみ代替テーブルが格納されるブロックを検索することによって取得され、2回目以降の参照時にはRAM内のワークエリアに格納された内容を参照することによって取得される。
【0054】
次に、プロセッサ3は、ページオフセット番号REP_ipが上限を超えているか否かを判定する(S302)。ここでは、1ブロックを32ページとしているので、REP_ipが32であるか否かを判定している。ページオフセット番号REP_ipが32でなければ(S302,No)、ステップS306へ処理が進む。
【0055】
また、ページオフセット番号REP_ipが32であれば(S302,Yes)、その代替テーブルブロックを消去し(S303)、消去が正常に完了したか否かを判定する(S304)。消去が正常に完了した場合には(S304,pass)、ページオフセット番号REP_ipに0を設定し(S305)、ステップS306へ処理が進む。また、消去がエラー終了した場合には(S304,fail)、ステップS308へ進み代替テーブルの代替処理が行なわれる。
【0056】
ステップS306において、プロセッサ3は、ページオフセット番号がREP_ipのページに新たな代替テーブルの内容を書込む。そして、書込みが正常に完了したか否かを判定する(S307)。書込みが正常に完了した場合には(S307,pass)、処理を終了する。また、書込みがエラー終了した場合には(S307,fail)、ステップS308へ進み代替テーブルの代替処理が行なわれる。
【0057】
ステップS308において、プロセッサ3は、ポインタテーブル更新フラグに1を設定し(S308)、代替ブロックの残数を1だけデクリメントする(S309)。そして、プロセッサ3は代替テーブルを参照し、代替ブロックの物理ブロックアドレスを取得する(S310)。そして、プロセッサ3は、代替ブロックが消去状態なのでページオフセット番号REP_ipを0に初期化する(S311)。
【0058】
次に、プロセッサ3は、書込み対象のページに新しい代替テーブルの内容を書込み(S312)、書込みが正常に完了したか否かを判定する(S313)。書込みが正常に完了した場合には(S313,pass)、処理を終了する。また、書込みがエラー終了した場合には(S313,fail)、ステップS309へ戻って別の代替ブロックに対するデータ書込みが行なわれる。
【0059】
図11は、ポインタテーブルの内容の更新処理(S121)の処理手順を説明するためのフローチャートである。まず、プロセッサ3は、ポインタテーブルが格納されているブロック内の有効なデータが格納されているページのページオフセット番号POI_ipを1だけインクリメントする(S401)。なお、ページオフセット番号POI_ipは、初回の参照時にのみポインタテーブルが格納されるブロックを検索することによって取得され、2回目以降の参照時にはRAM内のワークエリアに格納された内容を参照することによって取得される。
【0060】
次に、プロセッサ3は、ページオフセット番号POI_ipが上限を超えているか否かを判定する(S402)。ここでは、1ブロックを32ページとしているので、POI_ipが32であるか否かを判定している。ページオフセット番号POI_ipが32でなければ(S402,No)、ステップS406へ処理が進む。
【0061】
また、ページオフセット番号POI_ipが32であれば(S402,Yes)、そのポインタテーブルブロックを消去し(S403)、消去が正常に完了したか否かを判定する(S404)。消去が正常に完了した場合には(S404,pass)、ページオフセット番号POI_ipに0を設定し(S405)、ステップS406へ処理が進む。また、消去がエラー終了した場合には(S404,fail)、ステップS409へ進みポインタテーブルの代替処理が行なわれる。
【0062】
ステップS406において、プロセッサ3は、ページオフセット番号がPOI_ipのページに新たなポインタテーブルの内容を書込む。そして、書込みが正常に完了したか否かを判定する(S407)。書込みが正常に完了した場合には(S407,pass)、処理を終了する。また、書込みがエラー終了した場合には(S407,fail)、ステップS409へ進みポインタテーブルの代替処理が行なわれる。
【0063】
ステップS409において、プロセッサ3は、ポインタテーブル代替ブロックの残数を1だけデクリメントする。そして、プロセッサ3はポインタテーブルを参照し、ポインタテーブル代替ブロックの物理ブロックアドレスを取得する(S410)。そして、プロセッサ3は、ポインタテーブル代替ブロックが消去状態なのでページオフセット番号POI_ipを0に初期化する(S411)。
【0064】
次に、プロセッサ3は、書込み対象のページに新しいポインタテーブルの内容を書込み(S412)、書込みが正常に完了したか否かを判定する(S413)。書込みが正常に完了した場合には(S413,pass)、処理を終了する。また、書込みがエラー終了した場合には(S413,fail)、ステップS409へ戻って別のポインタテーブル代替ブロックに対するデータ書込みが行なわれる。
【0065】
なお、フラッシュメモリ1からのデータ読出しについては、フラッシュメモリ1に格納されたデータの書換えが発生しないので、プロセッサ3は、単に変換テーブルから取得した物理ブロックアドレスとページオフセットとから読出し対象となるページを特定し、そのページからデータを読出せばよい。
【0066】
以上説明したように、本実施の形態における記憶装置によれば、ユーザデータを書込むユーザブロック内のページが書込み済みの場合、代替ブロックにユーザデータを書込み、元のユーザブロックの内容を消去して代替ブロックとするようにしたので、ユーザブロックの内容を高速に書換えることが可能となった。
【0067】
また、変換テーブル、代替テーブルまたはポインタテーブルの内容を書換える場合、消去状態のページに新しいテーブルの内容を順次書込むようにしたので、管理情報を高速に書換えることができ、ユーザブロックの内容の書換えにともなう処理を高速に行なうことが可能となった。また、制御プログラムによってフラッシュメモリ1を制御する場合には、その制御プログラムのサイズを縮小することが可能となった。
【0068】
さらには、ブロックの書込みエラーや消去エラーが発生した場合には、他の代替ブロックにデータを書込み、そのブロックをユーザブロック、ポインタテーブルブロックなどとして管理するようにしたので、ユーザはフラッシュメモリ1を連続した論理ブロック空間としてアクセスすることができ、ファイルシステムなどを容易に構築することが可能となった。
【0069】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【0070】
【発明の効果】
制御手段は、変換テーブルを参照してユーザブロック内のページにユーザデータを書込む際、当該ページが書込み済みの場合には、代替テーブルを参照して代替ブロック内のページにユーザデータを書込んで新たなユーザブロックとし、元のユーザブロックを代替ブロックとするので、ユーザデータの書換えを高速に行なうことが可能となった。
【図面の簡単な説明】
【図1】本発明の実施の形態における記憶装置の概略構成を示すブロック図である。
【図2】フラッシュメモリ1に格納されるデータの種類を説明するための図である。
【図3】変換テーブルの内容の一例を示す図である。
【図4】代替テーブルの内容の一例を示す図である。
【図5】代替テーブルの内容が更新されるところを模式的に示す図である。
【図6】ポインタテーブルの内容の一例を示す図である。
【図7】テーブル群(変換テーブル、代替テーブル、ポインタテーブル)が格納されるブロックの内容を示す図である。
【図8】本発明の実施の形態における記憶装置の処理手順を説明するためのフローチャートである。
【図9】変換テーブルの内容の更新処理(S118)の処理手順を説明するためのフローチャートである。
【図10】代替テーブルの内容の更新処理(S119)の処理手順を説明するためのフローチャートである。
【図11】ポインタテーブルの内容の更新処理(S121)の処理手順を説明するためのフローチャートである。
【符号の説明】
1 フラッシュメモリ、2 コントローラ、3 プロセッサ、4 ROM、5
RAM、6 プロセッサバス、7 メモリバス。
【発明の属する技術分野】
本発明は、不揮発性半導体メモリの管理を行なう記憶装置に関し、特に、論理アドレスを不揮発性半導体メモリの物理アドレスに変換して不揮発性半導体メモリを管理する記憶装置に関する。
【0002】
【従来の技術】
近年、不揮発性半導体メモリのうち、大容量のデータ蓄積用の不揮発性半導体メモリとして、NAND型フラッシュメモリが普及しつつある。NAND型フラッシュメモリにおいては、データの消去は複数のページによって構成されるブロック単位で行なわれ、データの書込みは消去済みのページに対してページ単位でのみ行なわれる。
【0003】
このようなNAND型フラッシュメモリで構成される従来の記憶装置においては、ユーザが1ページのデータを書換えたい場合、該当ページに直接データを書込むことができないため、一旦該当ページのデータを消去してから新たなデータを書込むか、別の消去済みのブロックのページにデータを書込む必要がある。
【0004】
これに関連する技術として、特開2001−142774号公報に開示された発明がある。この発明は、書換え可能な不揮発性メモリの記憶容量が増加しても、アドレス変換テーブル用の揮発性メモリ領域の増加を不要としたアドレス変換方法に関するものである。
【0005】
【特許文献1】
特開2001−142774号公報
【0006】
【発明が解決しようとする課題】
しかし、上述したNAND型フラッシュメモリで構成される従来の記憶装置において、該当ページのデータを消去してから新たなデータを書込む場合、データの消去はブロック単位でしか行えず、ブロック内の該当ページ以外のページのデータも消去されてしまうため、データの消去前に該当ページ以外のページのデータを退避させる必要があった。したがって、該当ページのデータを書換えるのに必要な時間が長くなるため、プロセッサの処理速度が低下するといった問題点があった。
【0007】
また、別の消去済みのブロックにデータを書込む場合、どこにあったデータがどのブロックの何番目のページに書込まれたかというアドレス管理が必要になると共に、元のデータが格納されていたページが無効であるという情報も管理する必要がある。したがって、データの書換に伴う管理情報の更新が複雑になると共に、管理情報量も多くなるといった問題点があった。
【0008】
さらには、特開2001−142774号公報に開示されたアドレス変換方法は、論理アドレスをフラッシュメモリの物理アドレスに変換するものであるが、ブロック単位でのデータ消去を前提としたデータの書換えが考慮されておらず、上述した問題点を解決することはできない。
【0009】
本発明は、上記問題点を解決するためになされたものであり、その目的は、不揮発性半導体メモリにおけるユーザデータの書換えを高速に行なうことが可能な記憶装置を提供することである。
【0010】
【課題を解決するための手段】
本願発明に係る記憶装置は、複数のページによって構成されるブロック単位で消去が行なわれ、消去済みのページに対してページ単位で書込みが行なわれる不揮発性半導体メモリと、不揮発性半導体メモリを制御する制御手段とを含む。
【0011】
不揮発性半導体メモリは、ユーザデータを格納するユーザブロックと、代替用に予め確保された代替ブロックと、論理アドレスに対応するユーザブロックの物理アドレスを格納する変換テーブルと、代替ブロックの物理アドレスを格納する代替テーブルとを含む。
【0012】
制御手段は、変換テーブルを参照してユーザブロック内のページにユーザデータを書込む際、当該ページが書込み済みの場合には、代替テーブルを参照して代替ブロック内のページにユーザデータを書込んで新たなユーザブロックとし、元のユーザブロックを代替ブロックとする。
【0013】
【発明の実施の形態】
NAND型フラッシュメモリのページのサイズおよびブロックのサイズは、品種によって異なる。たとえば、1ページが528バイトであり、1ブロックが32ページの構成のフラッシュメモリもあれば、1ページが2112バイトであり、1ブロックが64ページのフラッシュメモリもある。本実施の形態においては、1ページが528バイトであり、1ブロックが32ページの構成のフラッシュメモリを用いた記憶装置について説明するが、フラッシュメモリの構成はこれに限定されるものではない。
【0014】
図1は、本発明の実施の形態における記憶装置の概略構成を示すブロック図である。この記憶装置は、NAND型フラッシュメモリ1と、プロセッサ3と、プロセッサ3からフラッシュメモリ1へのアクセスに対して、フラッシュメモリ1への制御信号の生成や誤り訂正処理などの制御を行なうコントローラ2と、ROM(Read Only Memory)4と、RAM(Random Access Memory)5とを含む。
【0015】
コントローラ2、プロセッサ3、ROM4およびRAM5は、プロセッサバス6によって接続される。また、フラッシュメモリ1およびコントローラ2は、メモリバス7によって接続される。
【0016】
ROM4には、プロセッサ3が実行する命令コードなどが格納される。また、RAM5は、プロセッサ3のワークエリアなどとして利用され、変数が記憶されたり、フラッシュメモリ1から読出されたデータが一次的に格納されたりする。
【0017】
コントローラ2は、プロセッサ3がフラッシュメモリ1にアクセスするときのフラッシュメモリコマンドの印加や読出し/書込みデータの転送のためのフラッシュメモリ制御信号を生成する。また、データ読出し時は誤り訂正処理を行ない、データ書込み時は誤り訂正符号の生成およびフラッシュメモリ1への誤り訂正符号の書込みを併せて行なう。
【0018】
なお、コントローラ2は、プロセッサ3がROM4に格納される命令コードを実行して実現される後述の処理内容をプロセッサ3の代わりに実行するようにしてもよい。
【0019】
図2は、フラッシュメモリ1に格納されるデータの種類を説明するための図である。ユーザブロックは、任意のユーザデータを格納するための領域であり、ブロック毎に論理アドレスが割当てられる。
【0020】
変換テーブルには、ユーザブロックに割当てられる論理アドレスに対応する物理アドレスが格納される。代替ブロックは、ユーザブロックの書換え用および不良ブロック発生時の代替用に予め確保された領域である。
【0021】
代替テーブルには、代替ブロックの物理アドレスおよび代替ブロック数が格納される。ポインタテーブルには、変換テーブル、代替テーブルおよびポインタテーブル代替ブロックのそれぞれの物理アドレスと、ポインタテーブル代替ブロック数とが格納される。また、ポインタテーブル代替ブロックは、ポインタテーブルの代替用に予め確保された領域である。
【0022】
図3は、変換テーブルの内容の一例を示す図である。物理ブロックアドレスを2バイトで表すので、16バイトの冗長データ領域を除く1ページ分の変換テーブル(512バイト)で256ブロック分のユーザブロックの管理を行なうことができる。
【0023】
図3(a)は、論理ブロック0〜255の物理アドレスを格納した0番目の変換テーブルを示している。また、図3(b)は、論理ブロックN×256〜N×256+255の物理アドレスを格納したN番目の変換テーブルを示している。たとえば、512Mbのフラッシュメモリの場合、物理ブロックの数は4096個であるので、Nが15となって16ブロック分の変換テーブルが存在することになる。
【0024】
1ページに16バイト分の冗長データ領域(ワードオフセット256〜263)が存在するが、この領域には誤り訂正コードECC(Error Correcting Code)と、そのページが書込み済みであることを示す書込み済みフラグとが格納される。
【0025】
図4は、代替テーブルの内容の一例を示す図である。ワードオフセット0の領域には代替ブロック残数が格納され、それ以降の領域には0〜M番目の代替ブロックの物理アドレスが格納される。ワードオフセット256以降の冗長データ領域には、誤り訂正コードECCと、そのページが書込み済みであることを示す書込み済みフラグとが格納される。
【0026】
図5は、代替テーブルの内容が更新されるところを模式的に示す図である。ユーザブロック内のページにデータを書込む際、そのユーザブロック(元ユーザブロック)内のページが書込み済みの場合、代替ブロックと交換してその代替ブロックを使用する。使用する代替ブロックは、代替テーブルの最下位に格納される代替ブロック[0]であり、この代替ブロックにユーザデータを書込み、新ユーザブロックとする。代替テーブルにおいては、内容(代替ブロック[1]〜[M])が下位に2バイトずつシフトされ、元代替ブロック[1]が最下位の領域に格納されて新たな代替ブロック[0]となる。
【0027】
一方、元ユーザブロックは消去され、正常に消去が完了すればそのブロックの物理アドレスが代替テーブルの最下位の領域に格納され、新たな代替ブロック[M]として将来の使用に備える。ブロックの消去が正常に完了した場合には、代替ブロック残数はM+1のまま増減しない。また、ブロックの消去エラーが発生した場合には、代替ブロック残数は1だけデクリメントされてM個となる。
【0028】
図6は、ポインタテーブルの内容の一例を示す図である。ワードオフセット0〜Nの領域にはそれぞれ変換テーブル[0]〜[N]の物理ブロックアドレスが格納される。ワードオフセット16の領域には、代替テーブルの物理ブロックアドレスが格納される。ワードオフセット17の領域には、ポインタテーブル代替ブロックの残数が格納され、以降の領域にはポインタテーブル代替ブロック[0]〜[9]の物理ブロックアドレスが格納される。本実施の形態においては、ポインタテーブル代替ブロックとして10個のブロックを確保しているが、他の数であってもよい。
【0029】
ワードオフセット256以降の冗長データ領域には、誤り訂正コードECC、そのページが書込み済みであることを示す書込み済みフラグおよびそのブロックがポインタテーブルであることを識別するためのIDコードが格納される。
【0030】
ポインタテーブルは所定のアドレス範囲内、たとえばブロックアドレス0〜255番地内に格納されるようにする。電源投入直後、プロセッサ3はこの範囲のページのIDコードを検索することによって、ポインタテーブルを識別してその内容を取得することができる。このポインタテーブルの内容を取得できれば、プロセッサ3は上述したフラッシュメモリ1の制御に必要な情報が格納される物理ブロックアドレスを全て参照することができる。
【0031】
また、ポインタテーブルの格納範囲を、たとえばブロックアドレス0〜255番地内に制限するためには、ポインタテーブル代替ブロックも予めこの範囲内に所定数だけ確保しておく必要がある。
【0032】
図7は、テーブル群(変換テーブル、代替テーブル、ポインタテーブル)が格納されるブロックの内容を示す図である。それぞれのテーブルは、1ブロック内の1ページだけが有効データとして使用される。それぞれのテーブルの書換えの際、ブロック内のページオフセットを1だけインクリメントしたページにテーブルの新しい内容が書込まれる。したがって、非消去状態のページのうち、最上位のページに格納されるデータが有効なテーブルとなる。
【0033】
ブロックの最上位ページまでデータが書込まれている場合には、一旦そのブロックを消去して、先頭のページに新しいテーブルの内容が書込まれる。また、有効なテーブルが格納されるページは、ワードオフセット256以降の冗長データ領域に格納される書込み済みフラグを検索することによって識別され、その内容が取得される。一旦、有効なテーブルを検索してその内容を取得した後は、そのワードオフセット値をRAM5のワークエリアに格納して管理すれば、毎回テーブルが格納されるブロックを検索する必要はなくなる。
【0034】
図8は、本発明の実施の形態における記憶装置の処理手順を説明するためのフローチャートである。まず、プロセッサ3が、ユーザデータを書込む最初の領域の論理セクタアドレスLSAと、書込みを行なうセクタ数CNTとを決定する(S101)。ここでは、1セクタを512バイトとし、ページのサイズと同じであるとする。
【0035】
次に、プロセッサ3は、論理セクタアドレスLSAから、論理ブロックアドレスLBAと、ブロック内のページオフセットipとを算出する(S102)。ここでは、1ブロックを32ページとしているので、論理ブロックアドレスLBA=LSA[16:5]となり、ip=LSA[4:0]となる。
【0036】
次に、プロセッサ3は、変換テーブルの内容を参照して、論理ブロックアドレスLBAに対応する物理ブロックアドレスPBAを取得する(S103)。1つの変換テーブルには256ブロック分の情報が格納されているので、論理ブロックアドレスLBAに対応する物理ブロックアドレスPBAが格納される変換テーブルの番号は、LBA÷256=LBA[11:8]となる。
【0037】
変換テーブルの番号が求まれば、ポインタテーブルを参照して変換テーブルの物理ブロックアドレスを取得できるので、該当する変換テーブルの内容を読出すことができる。なお、物理ブロックアドレスPBAが格納される変換テーブル内のワードアドレスは、LBA[7:0]となる。
【0038】
次に、プロセッサ3は、物理ブロックアドレスがPBAのブロック内の、ページオフセットがipのページから、セクタ数CNT分のページの書込み済みフラグを取得する(S104)。そして、プロセッサ3は、書込み対象のページが全て消去状態であるか否かを判定する(S105)。
【0039】
書込み対象のページに消去状態でないページがあれば(S105,No)、ステップS110へ進み、ブロック代替処理が行なわれる。また、書込み対象のページに消去状態でないページがなければ(S105,Yes)、プロセッサ3から出力されるデータをそのまま書込み対象のページに書込む(S106)。そして、プロセッサ3は、フラッシュメモリ1のステータスを読出すことによって、書込みが正常に完了したか否かを判定する(S107)。
【0040】
書込みが正常に完了した場合には(S107,pass)、処理を終了する。また、書込みがエラー終了した場合には(S107,fail)、そのブロックをブロック不良と判定し、ユーザ不良フラグに1を設定し(S108)、代替ブロックの残数を1だけデクリメントし(S109)、ステップS110以降のブロック代替処理が行なわれる。
【0041】
ステップS110において、プロセッサ3は代替テーブルを参照し、代替ブロックの物理ブロックアドレスを取得する。そして、元のユーザブロックから書込み対象以外のページのデータを代替ブロックにコピーする(S111)。ここで、元のユーザブロックのうち消去状態のページは、代替ブロックにコピーする必要はない。
【0042】
次に、プロセッサ3は、書込み対象のページにデータを書込み(S112)、書込みが正常に完了したか否かを判定する(S113)。書込みが正常に完了した場合には(S113,pass)、ステップS114へ処理が進む。また、書込みがエラー終了した場合には(S113,fail)、ステップS109へ戻って別の代替ブロックに対するデータ書込みが行なわれる。
【0043】
ステップS114において、プロセッサ3はユーザ不良フラグをチェックする。ユーザ不良フラグが0であれば(S114,Yes)、元のユーザブロックを消去し(S115)、消去が正常に完了したか否かを判定する(S116)。消去が正常に完了した場合には(S116,pass)、ステップS118へ処理が進む。
【0044】
また、消去がエラー終了した場合には(S116,fail)、代替ブロックの残数を1だけデクリメントし、ユーザ不良フラグに1を設定して(S117)、ステップS118へ処理が進む。また、ステップS114において、ユーザ不良フラグが1であれば(S114,No)、ステップS118へ処理が進む。
【0045】
プロセッサ3は、変換テーブルの内容を更新し(S118)、代替テーブルの内容を更新する(S119)。この変換テーブルの内容の更新処理および代替テーブルの内容の更新処理の詳細については後述する。
【0046】
次に、プロセッサ3は、ポインタテーブル更新フラグが1であるか否かを判定する(S120)。ポインタテーブル更新フラグが1でなければ(S120,No)、処理を終了する。また、ポインタテーブル更新フラグが0であれば(S120,Yes)、ポインタテーブルの内容を更新して(S121)、処理を終了する。このポインタテーブルの内容の更新の詳細については後述する。
【0047】
図9は、変換テーブルの内容の更新処理(S118)の処理手順を説明するためのフローチャートである。まず、プロセッサ3は、変換テーブルが格納されているブロック内の有効なデータが格納されているページのページオフセット番号TBL_ipを1だけインクリメントする(S201)。なお、ページオフセット番号TBL_ipは、初回の参照時にのみ変換テーブルが格納されるブロックを検索することによって取得され、2回目以降の参照時にはRAM内のワークエリアに格納された内容を参照することによって取得される。
【0048】
次に、プロセッサ3は、ページオフセット番号TBL_ipが上限を超えているか否かを判定する(S202)。ここでは、1ブロックを32ページとしているので、TBL_ipが32であるか否かを判定している。ページオフセット番号TBL_ipが32でなければ(S202,No)、ステップS206へ処理が進む。
【0049】
また、ページオフセット番号TBL_ipが32であれば(S202,Yes)、その変換テーブルブロックを消去し(S203)、消去が正常に完了したか否かを判定する(S204)。消去が正常に完了した場合には(S204,pass)、ページオフセット番号TBL_ipに0を設定し(S205)、ステップS206へ処理が進む。また、消去がエラー終了した場合には(S204,fail)、ステップS208へ進み変換テーブルの代替処理が行なわれる。
【0050】
ステップS206において、プロセッサ3は、ページオフセット番号がTBL_ipのページに新たな変換テーブルの内容を書込む。そして、書込みが正常に完了したか否かを判定する(S207)。書込みが正常に完了した場合には(S207,pass)、処理を終了する。また、書込みがエラー終了した場合には(S207,fail)、ステップS208へ進み変換テーブルの代替処理が行なわれる。
【0051】
ステップS208において、プロセッサ3は、ポインタテーブル更新フラグに1を設定し(S208)、代替ブロックの残数を1だけデクリメントする(S209)。そして、プロセッサ3は代替テーブルを参照し、代替ブロックの物理ブロックアドレスを取得する(S210)。そして、プロセッサ3は、代替ブロックが消去状態なのでページオフセット番号TBL_ipを0に初期化する(S211)。
【0052】
次に、プロセッサ3は、書込み対象のページに新しい変換テーブルの内容を書込み(S212)、書込みが正常に完了したか否かを判定する(S213)。書込みが正常に完了した場合には(S213,pass)、処理を終了する。また、書込みがエラー終了した場合には(S213,fail)、ステップS209へ戻って別の代替ブロックに対するデータ書込みが行なわれる。
【0053】
図10は、代替テーブルの内容の更新処理(S119)の処理手順を説明するためのフローチャートである。まず、プロセッサ3は、代替テーブルが格納されているブロック内の有効なデータが格納されているページのページオフセット番号REP_ipを1だけインクリメントする(S301)。なお、ページオフセット番号REP_ipは、初回の参照時にのみ代替テーブルが格納されるブロックを検索することによって取得され、2回目以降の参照時にはRAM内のワークエリアに格納された内容を参照することによって取得される。
【0054】
次に、プロセッサ3は、ページオフセット番号REP_ipが上限を超えているか否かを判定する(S302)。ここでは、1ブロックを32ページとしているので、REP_ipが32であるか否かを判定している。ページオフセット番号REP_ipが32でなければ(S302,No)、ステップS306へ処理が進む。
【0055】
また、ページオフセット番号REP_ipが32であれば(S302,Yes)、その代替テーブルブロックを消去し(S303)、消去が正常に完了したか否かを判定する(S304)。消去が正常に完了した場合には(S304,pass)、ページオフセット番号REP_ipに0を設定し(S305)、ステップS306へ処理が進む。また、消去がエラー終了した場合には(S304,fail)、ステップS308へ進み代替テーブルの代替処理が行なわれる。
【0056】
ステップS306において、プロセッサ3は、ページオフセット番号がREP_ipのページに新たな代替テーブルの内容を書込む。そして、書込みが正常に完了したか否かを判定する(S307)。書込みが正常に完了した場合には(S307,pass)、処理を終了する。また、書込みがエラー終了した場合には(S307,fail)、ステップS308へ進み代替テーブルの代替処理が行なわれる。
【0057】
ステップS308において、プロセッサ3は、ポインタテーブル更新フラグに1を設定し(S308)、代替ブロックの残数を1だけデクリメントする(S309)。そして、プロセッサ3は代替テーブルを参照し、代替ブロックの物理ブロックアドレスを取得する(S310)。そして、プロセッサ3は、代替ブロックが消去状態なのでページオフセット番号REP_ipを0に初期化する(S311)。
【0058】
次に、プロセッサ3は、書込み対象のページに新しい代替テーブルの内容を書込み(S312)、書込みが正常に完了したか否かを判定する(S313)。書込みが正常に完了した場合には(S313,pass)、処理を終了する。また、書込みがエラー終了した場合には(S313,fail)、ステップS309へ戻って別の代替ブロックに対するデータ書込みが行なわれる。
【0059】
図11は、ポインタテーブルの内容の更新処理(S121)の処理手順を説明するためのフローチャートである。まず、プロセッサ3は、ポインタテーブルが格納されているブロック内の有効なデータが格納されているページのページオフセット番号POI_ipを1だけインクリメントする(S401)。なお、ページオフセット番号POI_ipは、初回の参照時にのみポインタテーブルが格納されるブロックを検索することによって取得され、2回目以降の参照時にはRAM内のワークエリアに格納された内容を参照することによって取得される。
【0060】
次に、プロセッサ3は、ページオフセット番号POI_ipが上限を超えているか否かを判定する(S402)。ここでは、1ブロックを32ページとしているので、POI_ipが32であるか否かを判定している。ページオフセット番号POI_ipが32でなければ(S402,No)、ステップS406へ処理が進む。
【0061】
また、ページオフセット番号POI_ipが32であれば(S402,Yes)、そのポインタテーブルブロックを消去し(S403)、消去が正常に完了したか否かを判定する(S404)。消去が正常に完了した場合には(S404,pass)、ページオフセット番号POI_ipに0を設定し(S405)、ステップS406へ処理が進む。また、消去がエラー終了した場合には(S404,fail)、ステップS409へ進みポインタテーブルの代替処理が行なわれる。
【0062】
ステップS406において、プロセッサ3は、ページオフセット番号がPOI_ipのページに新たなポインタテーブルの内容を書込む。そして、書込みが正常に完了したか否かを判定する(S407)。書込みが正常に完了した場合には(S407,pass)、処理を終了する。また、書込みがエラー終了した場合には(S407,fail)、ステップS409へ進みポインタテーブルの代替処理が行なわれる。
【0063】
ステップS409において、プロセッサ3は、ポインタテーブル代替ブロックの残数を1だけデクリメントする。そして、プロセッサ3はポインタテーブルを参照し、ポインタテーブル代替ブロックの物理ブロックアドレスを取得する(S410)。そして、プロセッサ3は、ポインタテーブル代替ブロックが消去状態なのでページオフセット番号POI_ipを0に初期化する(S411)。
【0064】
次に、プロセッサ3は、書込み対象のページに新しいポインタテーブルの内容を書込み(S412)、書込みが正常に完了したか否かを判定する(S413)。書込みが正常に完了した場合には(S413,pass)、処理を終了する。また、書込みがエラー終了した場合には(S413,fail)、ステップS409へ戻って別のポインタテーブル代替ブロックに対するデータ書込みが行なわれる。
【0065】
なお、フラッシュメモリ1からのデータ読出しについては、フラッシュメモリ1に格納されたデータの書換えが発生しないので、プロセッサ3は、単に変換テーブルから取得した物理ブロックアドレスとページオフセットとから読出し対象となるページを特定し、そのページからデータを読出せばよい。
【0066】
以上説明したように、本実施の形態における記憶装置によれば、ユーザデータを書込むユーザブロック内のページが書込み済みの場合、代替ブロックにユーザデータを書込み、元のユーザブロックの内容を消去して代替ブロックとするようにしたので、ユーザブロックの内容を高速に書換えることが可能となった。
【0067】
また、変換テーブル、代替テーブルまたはポインタテーブルの内容を書換える場合、消去状態のページに新しいテーブルの内容を順次書込むようにしたので、管理情報を高速に書換えることができ、ユーザブロックの内容の書換えにともなう処理を高速に行なうことが可能となった。また、制御プログラムによってフラッシュメモリ1を制御する場合には、その制御プログラムのサイズを縮小することが可能となった。
【0068】
さらには、ブロックの書込みエラーや消去エラーが発生した場合には、他の代替ブロックにデータを書込み、そのブロックをユーザブロック、ポインタテーブルブロックなどとして管理するようにしたので、ユーザはフラッシュメモリ1を連続した論理ブロック空間としてアクセスすることができ、ファイルシステムなどを容易に構築することが可能となった。
【0069】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【0070】
【発明の効果】
制御手段は、変換テーブルを参照してユーザブロック内のページにユーザデータを書込む際、当該ページが書込み済みの場合には、代替テーブルを参照して代替ブロック内のページにユーザデータを書込んで新たなユーザブロックとし、元のユーザブロックを代替ブロックとするので、ユーザデータの書換えを高速に行なうことが可能となった。
【図面の簡単な説明】
【図1】本発明の実施の形態における記憶装置の概略構成を示すブロック図である。
【図2】フラッシュメモリ1に格納されるデータの種類を説明するための図である。
【図3】変換テーブルの内容の一例を示す図である。
【図4】代替テーブルの内容の一例を示す図である。
【図5】代替テーブルの内容が更新されるところを模式的に示す図である。
【図6】ポインタテーブルの内容の一例を示す図である。
【図7】テーブル群(変換テーブル、代替テーブル、ポインタテーブル)が格納されるブロックの内容を示す図である。
【図8】本発明の実施の形態における記憶装置の処理手順を説明するためのフローチャートである。
【図9】変換テーブルの内容の更新処理(S118)の処理手順を説明するためのフローチャートである。
【図10】代替テーブルの内容の更新処理(S119)の処理手順を説明するためのフローチャートである。
【図11】ポインタテーブルの内容の更新処理(S121)の処理手順を説明するためのフローチャートである。
【符号の説明】
1 フラッシュメモリ、2 コントローラ、3 プロセッサ、4 ROM、5
RAM、6 プロセッサバス、7 メモリバス。
Claims (8)
- 複数のページによって構成されるブロック単位で消去が行なわれ、消去済みのページに対してページ単位で書込みが行なわれる不揮発性半導体メモリと、
前記不揮発性半導体メモリを制御する制御手段とを含んだ記憶装置であって、
前記不揮発性半導体メモリは、ユーザデータを格納するユーザブロックと、
代替用に予め確保された代替ブロックと、
論理アドレスに対応する前記ユーザブロックの物理アドレスを格納する変換テーブルと、
前記代替ブロックの物理アドレスを格納する代替テーブルとを含み、
前記制御手段は、前記変換テーブルを参照してユーザブロック内のページにユーザデータを書込む際、当該ページが書込み済みの場合には、前記代替テーブルを参照して前記代替ブロック内のページにユーザデータを書込んで新たなユーザブロックとし、元のユーザブロックを代替ブロックとする、記憶装置。 - 前記制御手段は、前記代替ブロックを新たなユーザブロックとする場合には、前記代替テーブルの所定領域に書込まれている代替ブロックをユーザブロックとして使用し、前記代替テーブルの内容を1ブロック分だけ順次シフトした後、前記元のユーザブロックを代替ブロックとして前記代替テーブルに追加する、請求項1記載の記憶装置。
- 前記ユーザブロックのユーザデータが書込まれているページには書込み済みであることを示すフラグを設定し、
前記制御手段は、前記フラグを参照して当該ページが書込み済みであるか否かを判定する、請求項1または2記載の記憶装置。 - 前記不揮発性半導体メモリはさらに、前記変換テーブルおよび代替テーブルの物理アドレスを格納するポインタテーブルを含み、
前記制御手段は、前記ポインタテーブルを参照して前記変換テーブルおよび前記代替テーブルの内容を取得する、請求項1〜3のいずれかに記載の記憶装置。 - 前記不揮発性半導体メモリはさらに、前記ポインタテーブルの代替用に確保されたポインタテーブル代替ブロックを含み、
前記ポインタテーブルにはさらに、前記ポインタテーブル代替ブロックの物理アドレスが格納され、
前記制御手段は、前記ポインタテーブルの内容を書換えるときに書込みエラーが発生した場合には、前記ポインタテーブルの内容を参照して前記ポインタテーブル代替ブロックに新しいポインタテーブルの内容を書込む、請求項4記載の記憶装置。 - 前記変換テーブルの有効データは、1つのブロックの1ページにのみ存在し、
前記制御手段は、前記変換テーブルの内容を書換えるときに、上位ページ番号のページに新しいデータを書込むとともに当該ページが書込み済みであることを示すフラグを設定し、
最上位ページ番号のページが書込み済みの場合には、当該ブロックの内容を消去してから最下位ページ番号のページに新しいデータを書込む、請求項1〜5のいずれかに記載の記憶装置。 - 前記代替テーブルの有効データは、1つのブロックの1ページにのみ存在し、
前記制御手段は、前記代替テーブルの内容を書換えるときに、上位ページ番号のページに新しいデータを書込むとともに当該ページが書込み済みであることを示すフラグを設定し、
最上位ページ番号のページが書込み済みの場合には、当該ブロックの内容を消去してから最下位ページ番号のページに新しいデータを書込む、請求項1〜5のいずれかに記載の記憶装置。 - 前記ポインタテーブルの有効データは、1つのブロックの1ページにのみ存在し、
前記制御手段は、前記ポインタテーブルの内容を書換えるときに、上位ページ番号のページに新しいデータを書込むとともに当該ページが書込み済みであることを示すフラグを設定し、
最上位ページ番号のページが書込み済みの場合には、当該ブロックの内容を消去してから最下位ページ番号のページに新しいデータを書込む、請求項4または5記載の記憶装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002297411A JP2004133677A (ja) | 2002-10-10 | 2002-10-10 | 記憶装置 |
US10/400,463 US6646917B1 (en) | 2002-10-10 | 2003-03-28 | Storage device managing nonvolatile memory by converting logical address to physical address of nonvolatile memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002297411A JP2004133677A (ja) | 2002-10-10 | 2002-10-10 | 記憶装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004133677A true JP2004133677A (ja) | 2004-04-30 |
Family
ID=29398054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002297411A Withdrawn JP2004133677A (ja) | 2002-10-10 | 2002-10-10 | 記憶装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6646917B1 (ja) |
JP (1) | JP2004133677A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100687151B1 (ko) | 2004-05-27 | 2007-02-27 | 가부시끼가이샤 도시바 | 메모리 카드, 반도체 장치, 및 반도체 메모리의 제어 방법 |
JP2010108246A (ja) * | 2008-10-30 | 2010-05-13 | Hitachi Ltd | 記憶装置及びデータ格納領域管理方法 |
US11481121B2 (en) | 2016-09-30 | 2022-10-25 | Amazon Technologies, Inc. | Physical media aware spacially coupled journaling and replay |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100533683B1 (ko) * | 2004-02-03 | 2005-12-05 | 삼성전자주식회사 | 플래시 메모리의 데이터 관리 장치 및 방법 |
US7685400B2 (en) * | 2004-12-15 | 2010-03-23 | International Business Machines Corporation | Storage of data blocks of logical volumes in a virtual disk storage subsystem |
US8429326B2 (en) * | 2005-09-12 | 2013-04-23 | Mediatek Inc. | Method and system for NAND-flash identification without reading device ID table |
CN100573476C (zh) * | 2005-09-25 | 2009-12-23 | 深圳市朗科科技股份有限公司 | 闪存介质数据管理方法 |
CN104077084B (zh) * | 2014-07-22 | 2017-07-21 | 中国科学院上海微系统与信息技术研究所 | 分布式随机访问文件系统及其访问控制方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6347051B2 (en) * | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
JP3178909B2 (ja) * | 1992-01-10 | 2001-06-25 | 株式会社東芝 | 半導体メモリ装置 |
US5822142A (en) * | 1996-07-26 | 1998-10-13 | Western Digital Corporation | Method of mapping logical sectors to physical sectors in a disk drive sparing partition |
JP2001142774A (ja) | 1999-11-11 | 2001-05-25 | Toshiba Corp | メモリカード及び同カードに適用されるアドレス変換方法 |
-
2002
- 2002-10-10 JP JP2002297411A patent/JP2004133677A/ja not_active Withdrawn
-
2003
- 2003-03-28 US US10/400,463 patent/US6646917B1/en not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100687151B1 (ko) | 2004-05-27 | 2007-02-27 | 가부시끼가이샤 도시바 | 메모리 카드, 반도체 장치, 및 반도체 메모리의 제어 방법 |
JP2010108246A (ja) * | 2008-10-30 | 2010-05-13 | Hitachi Ltd | 記憶装置及びデータ格納領域管理方法 |
US11481121B2 (en) | 2016-09-30 | 2022-10-25 | Amazon Technologies, Inc. | Physical media aware spacially coupled journaling and replay |
Also Published As
Publication number | Publication date |
---|---|
US6646917B1 (en) | 2003-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3692313B2 (ja) | 不揮発性メモリの制御方法 | |
JP5087347B2 (ja) | 半導体記憶装置及び半導体記憶装置の制御方法 | |
JP4844639B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4666080B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2007280428A (ja) | メモリ管理 | |
US10503653B2 (en) | Memory system | |
KR100847506B1 (ko) | 기억 장치, 메모리 관리 방법 및 프로그램 | |
EP1542129A2 (en) | Flash memory and mapping control apparatus and method for flash memory | |
JP4245585B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JPWO2006067923A1 (ja) | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法 | |
JP2010182268A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2004133677A (ja) | 記憶装置 | |
JP2003058417A (ja) | 記憶装置 | |
JP4366420B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP5066894B2 (ja) | 記憶媒体制御装置 | |
JP2012068765A (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2004078902A (ja) | 記憶装置、メモリ管理方法及びプログラム | |
JP2008009614A (ja) | メモリコントローラ、メモリシステム及びメモリ制御方法 | |
JP3826115B2 (ja) | 記憶装置、メモリ管理方法及びプログラム | |
JP4661497B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2007034581A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP3646679B2 (ja) | 不揮発性メモリのデータ書き換え方法 | |
JP2005092678A (ja) | 半導体メモリカード及び不揮発性メモリのデータ消去処理方法 | |
JP2012037971A (ja) | メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法 | |
JP2005316831A (ja) | 電子制御装置及びデータ調整方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060110 |