(57)【要約】【課題】同一論理ゾーンに含まれる論理ブロックのＬＢＮが、同一プレーン内の物理ブロックで構成されている物理ゾーンに含まれる物理ブロックのＰＢＡに変換されるようなアドレス管理を提供する。【解決手段】ＰＺＮの下位側にＰＺＩＢＮを連結したＰＢＡ'を生成し、このＰＢＡ'をＰＢＡに変換する。各物理ゾーンに含まれる物理ブロックの数がＭ（Ｍ＝２ｎ）個であるときは、この変換処理で、ＰＢＡ'の下位側からｎ＋１ビット目のビットを最下位ビットに移動させる。ＰＢＡ'の下位側からｎ＋１ビット目は、ＰＺＮの最下位ビットに対応するので、下位側からｎ＋１ビット目のビットを最下位ビットに移動させることにより、ＰＺＮが偶数の物理ゾーンはプレーン＃０内の物理ブロックで構成されることになり、ＰＺＮが奇数の物理ゾーンはプレーン＃１内の物理ブロックで構成されることになる。【選択図】図３
2008040723.tif 000002
【特許請求の範囲】
【請求項１】
２プレーン書き込み機能を備えたフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
上記フラッシュメモリの記憶領域を複数の物理ゾーンに分割して管理するメモリコントローラにおいて、
上記物理ゾーンに割り当てる論理アドレスの領域である論理ゾーンを管理するゾーン管理手段と、
上記論理ゾーンに含まれる論理アドレスの領域と、上記物理ゾーンに含まれる記憶領域の対応関係を管理するアドレス管理手段を備え、
上記アドレス管理手段は、同一論理ゾーンに含まれる論理アドレスの領域が、同一プレーン内の物理ブロックで構成された上記物理ゾーンに割り当てられるように管理する手段であることを特徴とするメモリコントローラ。
【請求項２】
上記アドレス管理手段は、
上記物理ゾーンに付けられた通番である物理ゾーン番号と上記物理ゾーンに含まれる物理ブロックの上記物理ゾーン内での通番である物理ゾーン内ブロック番号に基づいて、仮の物理ブロックアドレスを生成するアドレス生成手段と、
上記アドレス生成手段が生成した上記仮の物理ブロックアドレスを、同一プレーン内の物理ブロックで構成された上記物理ゾーンに含まれる物理ブロックの物理ブロックアドレスに変換するアドレス変換手段を備える
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
上記アドレス変換手段は、
上記物理ゾーンに含まれる物理ブロックの個数が２ｎ個の場合に、
上記仮の物理ブロックアドレスをビット表示したときの下位側からｎ＋１ビット目のビットを最下位ビットに移動させることにより、上記仮の物理ブロックアドレスを上記物理ブロックアドレスに変換する
ことを特徴とする請求項２に記載のメモリコントローラ。
【請求項４】
上記アドレス管理手段は、上記物理ゾーンに付けられた通番である物理ゾーン番号と上記物理ゾーンに含まれる物理ブロックの上記物理ゾーン内での通番である物理ゾーン内ブロック番号に基づいて、同一プレーン内の物理ブロックで構成された上記物理ゾーンに含まれる物理ブロックの物理ブロックアドレスを生成する物理ブロックアドレス生成手段を備え、
上記物理ブロックアドレス生成手段は、上記物理ゾーン番号をビット表示したときの下位側から１ビット目と２ビット目の間に、上記物理ゾーン内ブロック番号をビット表示したときのビットを挿入することにより上記物理ブロックアドレスを生成することを特徴とする請求項１に記載のメモリコントローラ。
【請求項５】
請求項１から４のいずれか１項に記載のメモリコントローラと２プレーン書き込み機能を備えたフラッシュメモリを備えることを特徴とするフラッシュメモリシステム。
【請求項６】
２プレーン書き込み機能を備えたフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
上記フラッシュメモリの記憶領域を複数の物理ゾーンに分割し、該物理ゾーンに割り当てる論理アドレスの領域である論理ゾーンを管理するフラッシュメモリの制御方法において、
アクセス対象の論理アドレスの領域が含まれる上記論理ゾーンを判別し、該論理ゾーンに割り当てられている上記物理ゾーンに付けられた通番である物理ゾーン番号を求める物理ゾーン番号特定ステップと、
アクセス対象の論理アドレスの領域と対応関係にある物理ブロックの上記物理ゾーン内での通番である物理ゾーン内ブロック番号を求める物理ゾーン内ブロック番号特定ステップと、
上記物理ゾーン番号と上記物理ゾーン内ブロック番号に基づいて、アクセス対象の論理アドレスの領域と対応関係にある物理ブロックの物理ブロックアドレスを生成する物理ブロックアドレス生成ステップを含み、
上記物理ブロックアドレス生成ステップでは、上記物理ゾーン番号をビット表示したときの下位側から１ビット目と２ビット目の間に、上記物理ゾーン内ブロック番号をビット表示したときのビットを挿入することにより上記物理ブロックアドレスを生成することを特徴とするフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。より詳細には、２プレーン書き込み機能を備えたフラッシュメモリに対するアクセスを制御するメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリカードやシリコンディスク等といったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。フラッシュメモリに格納されたデータは、電力が供給されていないときでも保持されていることが要求される。
【０００３】
ところで、上記のような装置に用いられるフラッシュメモリは、読み出しおよび書き込みの単位であるページと、複数のページを含む消去処理の単位であるブロックで構成されている。また、このフラッシュメモリでは、データの上書きができないため、既にデータの書き込まれたページに対し、これと異なる新しいデータを書き込むためには、一旦、既に書き込まれているデータを消去した後に新しいデータを書き込むという処理が必要となる。
【０００４】
しかしながら、上述のように消去はブロック単位で処理されるため、新しいデータを書き込むページのデータを消去すると、そのページが含まれるブロックの全ページのデータが消去されてしまう。従って、あるページに書き込まれているデータを書き換える場合、書き換えるページが含まれるブロックの全ページのデータを、空きブロックに書き込み、元のブロックを消去するという処理が行なわれる。
【０００５】
上記のような処理では、書き換えの後のデータは書き換え前のブロックと異なるブロックに書き込まれるため、データを書き換えるごとにフラッシュメモリ内のブロックが変ってしまう。従って、フラッシュメモリシステムが装着されるホストシステムから供給されるブロックと、フラッシュメモリ内のブロック対応関係は、データを書き換えるごとに変化する。
【０００６】
上記のようにデータを書き換えるごとに変化する対応関係を管理するため、特許文献１ではホストシステムから供給される論理アドレスと、フラッシュメモリ内の物理アドレスの対応関係を示したアドレス変換テーブルを作成している。
【０００７】
また、フラッシュメモリは、デジタルスチルカメラ等の情報機器（ホストシステム）の記憶媒体として普及している。このような情報機器が扱うデータが大容量化したことに伴い、フラッシュメモリの記憶容量も大容量化が進んでいる。
【０００８】
このように大容量化したフラッシュメモリの記憶領域を円滑に管理するため、特許文献２では、この記憶領域を複数のゾーンに分割して管理する手法が用いられている。
【０００９】
[フラッシュメモリシステムのアドレス空間]
図６は、フラッシュメモリのアドレス空間の構造を概略的に示す図である。本図を用いて、アドレス変換テーブルおよびゾーン分割について具体的に説明する。
【００１０】
ホストシステム側のアドレス空間は、図６（ａ）に示したようにセクタ（５１２バイト）単位で分割した領域に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。更に複数個のセクタをまとめたものを論理ブロックと呼び、複数個の論理ブロックをまとめたものを論理ゾーンと呼んでいる。また、図６（ｂ）に示したように論理ブロックに付けられた通番を論理ブロック番号（ＬＢＮ）と呼び、論理ゾーンに付けられた通番を論理ゾーン番号（ＬＺＮ）と呼んでいる。また、各論理ゾーンに含まれた論理ブロックの各論理ゾーン内での通番を論理ゾーン内ブロック番号（ＬＺＩＢＮ）と呼んでいる。一方、図６（ｃ）に示したように、物理ブロックには、それぞれ固有の物理ブロックアドレス（ＰＢＡ）が割り当てられている。さらに、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに固有の物理ゾーン番号（ＰＺＮ）を割り当てている。各物理ゾーンに含まれる物理ブロックの各物理ゾーン内での通番を物理ゾーン内ブロック番号（ＰＺＩＢＮ）と呼んでいる。
【００１１】
また、各論理ゾーンにはそれぞれ１個の物理ゾーンが割り当てられ、論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。したがって、１個の論理ブロックに含まれるセクタ数は、１個の物理ブロックに含まれるセクタ領域の個数に応じて設定される。但し、１個の論理ブロックを複数個の物理ブロックに割り当てる場合には、その複数個の物理ブロックを１個の物理ブロックとみなして１個の論理ブロックに含まれるセクタ数を設定する。
【００１２】
図６に示した例では、１個の物理ブロックが２５６個のセクタ領域で構成されたフラッシュメモリを想定しているため、２５６セクタが１個の論理ブロックに対応している。したがって、ＬＢＮ＃０〜＃４９９の５００個の論理ブロックで構成されたＬＺＮ＃０の論理ゾーンは、ＬＢＡ＃０〜＃１２７９９９の１２８０００セクタの領域に対応している。以下同様に、ＬＺＮ＃１の論理ゾーンは、ＬＢＡ＃１２８０００〜＃２５５９９９の１２８０００セクタの領域に対応し、ＬＺＮ＃２の論理ゾーンは、ＬＢＡ＃２５６０００〜＃３８３９９９の１２８０００セクタの領域に対応し、ＬＺＮ＃３の論理ゾーンは、ＬＢＡ＃３８４０００〜＃５１１９９９の１２８０００セクタの領域に対応している。
【００１３】
また、ＬＢＮ＃０〜＃４９９の５００個の論理ブロックで構成されたＬＺＮ＃０の論理ゾーンは、ＰＢＡ＃０〜＃５１１の５１２個の物理ブロックで構成されたＰＺＮ＃０の物理ゾーンに割り当てられている。以下同様に、ＬＺＮ＃１の論理ゾーンは、ＰＺＮ＃１の物理ゾーンに割り当てられ、ＬＺＮ＃２の論理ゾーンは、ＰＺＮ＃２の物理ゾーンに割り当てられ、ＬＺＮ＃３の論理ゾーンは、ＰＺＮ＃３の物理ゾーンに割り当てられている。ここで、物理ゾーンに含まれる物理ブロックの個数を、論理ゾーンに含まれる論理ブロックの個数より多くしているのは、同一の論理ブロックに対応する新データと旧データが別々の物理ブロックに並存する場合や、データを正常に書き込むことができない不良ブロックが発生した場合等を考慮したものである。
【００１４】
[フラッシュメモリのアドレス変換]
図７は、フラッシュメモリのアドレス変換を概念的に示す図である。本図を用いて、ホストシステム側のアドレス空間からフラッシュメモリのアドレス空間への変換、つまりＬＢＮからＰＢＡへの変換を説明する。
（Ｓ７１）ＬＢＮからＬＺＮおよびＬＺＩＢＮを求める。各論理ゾーンに含まれる論理ブロックの数がＮであるとき、ＬＺＮはＬＢＮをＮで割ったときの商に対応し、ＬＺＩＢＮはＬＢＮをＮで割ったときの余りに対応する。
（Ｓ７２１）ＬＺＮをＰＺＮに変換する（ＬＺＮに対応するＰＺＮを求める）。ＬＺＮとＰＺＮは同じ番号同士が対応しているため、ＰＺＮはＬＺＮと同じ値になる。
（Ｓ７２２）ＬＺＩＢＮをＰＺＩＢＮに変換する（ＬＺＩＢＮに対応するＰＺＩＢＮを求める）。アドレス変換テーブルを参照することにより、ＬＺＩＢＮに対応するＰＺＩＢＮを求めることができる。または、書き込み処理の場合に、ＬＺＩＢＮに対応するＰＺＩＢＮがアドレス変換テーブルに存在しない場合、空き物理ブロックのＰＺＩＢＮがＬＺＩＢＮに対応するＰＺＩＢＮとして割り当てられる。
【００１５】
図７（ｂ）は、アドレス変換テーブルの構成の一例を示す図であり、アドレス変換テーブルはゾーンごとに作成される。この例では、左側は論理ブロックのＬＺＩＢＮを示し、右側は物理ブロックのＰＺＩＢＮを示している。ＬＺＩＢＮ＃０の論理ブロックがＰＺＩＢＮ＃２２の物理ブロックに、ＬＺＩＢＮ＃１の論理ブロックがＰＺＩＢＮ＃１２の物理ブロックに、ＬＺＩＢＮ＃２の論理ブロックがＰＺＩＢＮ＃６の物理ブロックに対応している。
（Ｓ７３）ＰＺＩＢＮおよびＰＺＮからＰＢＡを求める。ＰＢＡは、図７（ｃ）に示されているようにＰＺＮの下位側にＰＺＩＢＮを連結することにより求められる。
【００１６】
[２プレーンフラッシュメモリ]
複数個のメモリセルで構成されたメモリセルアレイと、このメモリセルアレイにアクセスするためのレジスタと、から構成されるプレーンを２つ備える２プレーンフラッシュメモリが知られている（例えば、非特許文献１参照）。この２プレーンフラッシュメモリの場合も、メモリセルアレイは消去処理の単位である物理ブロックに分割され、物理ブロックは書き込みまたは読み出しの処理単位であるページに分割されている。
【００１７】
図８に示した例のように、２プレーンフラッシュメモリは、プレーン＃０およびプレーン＃１から構成され、プレーン＃０およびプレーン＃１の物理ブロックには、交互にＰＢＡの番号が割り振られている。例えば、プレーン＃０はＰＢＡ＃０、＃２、＃４の順にＰＢＡ＃４０９４までの２０４８個の物理ブロックを備え、プレーン＃１はＰＢＡ＃１、＃３、＃５の順にＰＢＡ＃４０９５までの２０４８個の物理ブロックを備える。
【００１８】
２プレーンフラッシュメモリの各物理ブロックは、図９（ａ）に示すように、６４ページから構成され、それぞれのページには＃０から＃６３までの６４個のページ番号が割り振られる。また、図９（ｂ）に示すように、各ページは、ユーザ領域と冗長領域とから構成される。ユーザ領域はホストシステムから与えられるデータを格納するための４セクタ（５１２バイト×４＝２０４８バイト）の領域であり、冗長領域はユーザ領域のデータに対応する誤り訂正符号などの付加情報を格納するための６４バイトの領域である。図８に示すレジスタ＃０及びレジスタ＃１は、各ページのユーザ領域（２０４８バイト）および冗長領域（６４バイト）に書き込むデータ、またはユーザ領域（２０４８バイト）および冗長領域（６４バイト）から読み出したデータを一時的に保持するための記憶領域である。
【００１９】
２プレーンフラッシュメモリは、図８のレジスタ＃０およびレジスタ＃１に書き込まれたデータをフラッシュメモリに書き込むに際し、２プレーン書き込みと呼ばれる書き込み方式を用いることができる。この２プレーン書き込みでは、予め設定された一対の物理ブロック（プレーン＃０内の物理ブロックとプレーン＃１内の物理ブロック）にデータが書き込まれる。この一対の物理ブロックに１個の論理ブロックを割り当てた場合、論理ブロックに含まれる５１２セクタのデータ（セクタ＃０〜＃５１１）が、一対の物理ブロック内のページに書き込まれる。つまり、セクタ＃０〜＃３はプレーン＃０のページ番号＃０に、セクタ＃４〜＃７はプレーン＃１のページ番号＃０に、セクタ＃８〜＃１１はプレーン＃０のページ番号＃１に、セクタ＃１２〜＃１５はプレーン＃１のページ番号＃１にという順序で書き込まれ、セクタ＃５０４〜＃５０７はプレーン＃０のページ番号＃６３に、セクタ＃５０８〜＃５１１はプレーン＃１のページ番号＃６３に書き込まれる。
【００２０】
２プレーンフラッシュメモリは、図８のレジスタ＃０およびレジスタ＃１に書き込まれたデータをフラッシュメモリに書き込むに際し、通常の書き込み方式も用いることができる。つまり、プレーン毎に別々に書き込むことができる。２プレーンフラッシュメモリでは、プレーン＃０内の物理ブロックとプレーン＃１内の物理ブロックに交互にＰＢＡの番号が振られているため、各物理ゾーンに対してＰＢＡの順番で物理ブロック割り当てた場合、同一物理ゾーンにプレーン＃０内の物理ブロックとプレーン＃１内の物理ブロック含まれる。図１０に示すように、ＰＺＮ＃０、ＰＺＩＢＮ＃０は、プレーン＃０のＰＢＡ＃０に対応し、ＰＺＮ＃０、ＰＺＩＢＮ＃１は、プレーン＃１のＰＢＡ＃１に対応する。同様にＰＺＮ＃１、ＰＺＩＢＮ＃１０２２は、プレーン＃０のＰＢＡ＃２０４６に対応し、ＰＺＮ＃１、ＰＺＩＢＮ＃１０２３は、プレーン＃１のＰＢＡ＃２０４７に対応する。この変換は、図７（ｃ）に示すように計算される。例えば、ＰＺＮ＃１は、２進数で「０００１」、ＰＺＩＢＮ＃１０２２は、２進数で「１１  １１１１  １１１０」であるため、ＰＢＡ＃は２進数で「０００１  １１  １１１１  １１１０」になり、１０進数で２０４６になる。
【００２１】
次に、通常の書き込みと２プレーン書き込みのタイミングチャートについて説明する。通常の書き込みでは、図１１（ａ）のタイミングチャートに示すように、プレーン＃０またはプレーン＃１に対して、レジスタへのデータ書き込みを指示するインプットコマンドＩＣと、書き込み先アドレスＡＤおよび書き込むデータＤＴと、レジスタからメモリセルアレイへの書き込みを指示する書き込みコマンドＰＣとを順次フラッシュメモリに供給する。ここで、非特許文献１のフラッシュメモリでは、書き込みコマンドＰＣを供給してから、２００μ秒のビジー時間が発生し、このビジー時間に、レジスタに書き込んだデータがメモリセルアレイに書き込まれる。
【００２２】
一方、２プレーン書き込みでは、図１１（ｂ）のタイミングチャートに示すように、プレーン＃０に対して、インプットコマンドＩＣと、書き込み先アドレスＡＤおよび書き込みデータＤＴと、ダミー書き込みコマンドＤＰＣとを供給した後、プレーン＃１に対して、ダミーインプットコマンドＤＩＣと、書き込み先アドレスＡＤおよび書き込みデータＤＴと、書き込みコマンドＰＣとを供給する。この２プレーン書き込みでは、ダミー書き込みコマンドＤＰＣを供給した後、ダミーのビジー時間が０．５μ秒発生するが、プレーン＃０のレジスタおよびプレーン＃１のレジスタに書き込んだデータは、書き込みコマンドＰＣが供給された後に、同時にフラッシュメモリに書き込まれる。この書き込みの際に発生するビジー時間は、プレーン＃０またはプレーン＃１のいずれか１プレーンに書き込む際に発生するビジー時間である２００μ秒と同じである。すなわち、２プレーン書き込みでは、フラッシュメモリに書き込まれるデータの量は、レジスタ２個分となるが、この書き込み処理で生じるビジー時間は、通常の書き込みで生じるビジー時間（２００μ秒）とほとんど同じ（０．５μ＋２００μ＝２００．５μ秒）になるため、高速な書き込みを実現できる。
【００２３】
[空きブロック検索]
ＬＺＩＢＮに対応するＰＺＩＢＮがアドレス変換テーブルに存在しない場合、およびデータが書き込まれているページを書き換える場合、空きブロックを検索する必要がある。以下に空きブロック検索について具体的に説明する。
【００２４】
図１２は、空きブロック検索テーブルの構成の一例を示す図である。本図を用いて空きブロックを検索する処理について説明する。図１２に示した空きブロック検索テーブルは、フラッシュメモリの物理ゾーンにおける物理ブロックの使用状況を表すテーブルであり、物理ゾーンごとに作成される。
【００２５】
この空きブロック検索テーブルは、１２８バイト（１０２４ビット）のデータから構成され、物理ゾーンに含まれる物理ブロックの使用状況を各ビットの論理値で示している。この空きブロック検索テーブルでは、空きブロックであることを論理値の"１"で示し、空きブロックでないことを論理値の"０"で示している。つまり、論理値の"１"は、そのビットに対応する物理ブロックが、データが書き込まれていない状態（消去状態）であることを示し、論理値の"０"は、そのビットに対応する物理ブロックが、データが書き込まれている状態、または、不良ブロックであることを示している。
【００２６】
図１２では、１０２４個の物理ブロックの使用状況を示す１２８バイトのデータを、１バイトごとに改行して表示している。ここで、一番上の行は、ＰＺＩＢＮ＃０〜＃７の物理ブロックの使用状況を示している。以下同様に、二番目の行は、ＰＺＩＢＮ＃８〜＃１５の物理ブロックの使用状況を示し、三番目の行は、ＰＺＩＢＮ＃１６〜＃２３の物理ブロックの使用状況を示している。そして、一番下の行は、ＰＺＩＢＮ＃１０１６〜＃１０２３の物理ブロックの使用状況を示している。また、各行の１バイトのデータには、下位ビット側からＰＺＩＢＮの順番で物理ブロックが割り当てられている。従って、一番上の行の最下位ビットはＰＺＩＢＮ＃０の物理ブロックの使用状況を示し、一番下の行の最上位ビットはＰＺＩＢＮ＃１０２３の物理ブロックの使用状況を示している。
【００２７】
また、空きブロックを検索する場合は、各行の１バイトのデータを上の行から順番に読み出していき、読み出したデータが０（２進数表示：００００  ００００）でないときは、そのデータをシフトレジスタに書き込み、シフトレジスタを下位方向にシフトさせる。何回のシフトでキャリーが発生したかにより、下位から何ビット目が"１"であるかを判別する。例えば、４番目の行の０００１  １０００（２進数表示）をシフトレジスタに書き込み、シフトレジスタを下位方向にシフトさせた場合は、４回のシフトでキャリーが発生するので、下位側から４ビット目に対応するＰＺＩＢＮ＃２７の物理ブロックが空きブロックとして検出される。
【００２８】
また、次回の空きブロック検索では、４番目の行の下位側から５ビット目のビットから検索が開始される。このように下位側から５ビット目のビットから検索が開始する場合は、シフトレジスタにデータを設定する前に、設定するデータの下位４ビットが"０"になるようなマスク処理が施される。
【００２９】
上述の空きブロック検索テーブルを用いて検出した空きブロックにデータを書き込んだときには、その物理ブロックに対応する空きブロック検索テーブル上のビットが"１"から"０"に書き換えられる。アドレス変換テーブルについては、書き込んだデータに対応する論理ブロックのＬＺＩＢＮと対応関係にあるＰＺＩＢＮが、書き込み先の物理ブロックのＰＺＩＢＮに書き換えられる。データを書き込んだ物理ブロックの冗長領域２６には、書き込んだデータに対応する論理ブロックのＬＺＩＢＮが書き込まれる。
【００３０】
上記のように、空きブロック検索は同一物理ゾーンに含まれている空きブロックのみを検索する。２プレーンフラッシュメモリでは、交互にＰＢＡの番号が振られているため、プレーン＃０内の空きブロックが検出される場合とプレーン＃１内の空きブロックが検索される場合がある。
【００３１】
【特許文献１】特開２００１−２４３１１０号公報
【特許文献２】特開２００５−０１８４９０号公報
【非特許文献１】Ｓａｍｓｕｎｇ Ｅｌｅｃｔｒｏｎｉｃｓ、“Ｋ９ＸＸＧ０８ＵＸＭ”、[online]、[平成１８年７月１３日検索]、インターネット(URL:http://www.samsung.com/Products/Semiconductor/NANDFlash/SLC_LargeBlock/16Gbit/K9WAG08U1M/ds_k9xxg08uxm_rev10.pdf)
【発明の開示】
【発明が解決しようとする課題】
【００３２】
上述したように、２プレーン書き込みは、通常の書き込みに比べて高速に書き込むことができる。しかし、２プレーン書き込みは、ＰＢＡ＃２ｎとＰＢＡ＃２ｎ＋１（ｎは０以上の整数）を組み合わせた一対の物理ブロックに対してしか行うことができない。２プレーン書き込みを行うためには、１個の論理ブロックを上記一対の物理ブロックに割り当てる必要がある。そのため、２プレーン書き込みを可能とするアドレス変換テーブルの作成は、通常の書き込みのアドレス変換テーブルの作成に比べて多くの処理を必要とする。さらに、一対の物理ブロックの一方が不良ブロックになってしまった場合には、もう一方の物理ブロックには通常の書き込みしか行うことができない。従って、通常の書き込みしかできないブロックを別途管理する必要がある。
【００３３】
以上のような理由から、２プレーンフラッシュメモリに対して、通常の書き込みを行いたいという要望がある。
【００３４】
しかしながら、２プレーンフラッシュメモリは、プレーンごとに交互にＰＢＡの番号が割り振られているため、データの書き換えを行うときに従来技術の空きブロック検索処理で空きブロックを検出した場合、書き換え前のデータが記憶されている物理ブロックと書き換え後のデータを書き込む空きブロックが、異なるプレーン内の物理ブロックになってしまう場合がある。このような場合、書き換え前のデータが記憶されている物理ブロック内の書き替え対象でない記憶データをコピーバック処理（メモリセルアレイからレジスタに複写したデータを他のメモリセルアレイに複写する処理）で書き換え後のデータを書き込む空きブロックができない。つまり、コピーバック処理は同一のプレーン内でしか行うことができないので、このような場合には、書き替え対象でない記憶データを２プレーンフラッシュメモリから読み出して再度書き込む必要があり、データの書き換えに時間がかかるという課題がある。
【００３５】
本発明は、各物理ゾーンに含まれる物理ブロックが、同一プレーン内の物理ブロックで構成されるようなアドレス管理を提供することができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００３６】
上記目的を達成するために、２プレーン書き込み機能を備えたフラッシュメモリに対するアクセスを制御するメモリコントローラであって、フラッシュメモリの記憶領域を複数の物理ゾーンに分割して管理するメモリコントローラにおいて、物理ゾーンに割り当てる論理アドレスの領域である論理ゾーンを管理するゾーン管理手段と、論理ゾーンに含まれる論理アドレスの領域と、物理ゾーンに含まれる記憶領域の対応関係を管理するアドレス管理手段を備え、アドレス管理手段は、同一論理ゾーンに含まれる論理アドレスの領域が、同一プレーン内の物理ブロックで構成された物理ゾーンに割り当てられるように管理する手段である。
【００３７】
また、アドレス管理手段は、物理ゾーンに付けられた通番である物理ゾーン番号と物理ゾーンに含まれる物理ブロックの物理ゾーン内での通番である物理ゾーン内ブロック番号に基づいて、仮の物理ブロックアドレスを生成するアドレス生成手段と、アドレス生成手段が生成した仮の物理ブロックアドレスを、同一プレーン内の物理ブロックで構成された物理ゾーンに含まれる物理ブロックの物理ブロックアドレスに変換するアドレス変換手段であることも好ましい。
【００３８】
また、アドレス変換手段は、物理ゾーンに含まれる物理ブロックの個数が２ｎ個の場合に、仮の物理ブロックアドレスをビット表示したときの下位側からｎ＋１ビット目のビットを最下位ビットに移動させることにより、仮の物理ブロックアドレスを物理ブロックアドレスに変換する手段であることも好ましい。
【００３９】
また、アドレス管理手段は、物理ゾーンに付けられた通番である物理ゾーン番号と物理ゾーンに含まれる物理ブロックの物理ゾーン内での通番である物理ゾーン内ブロック番号に基づいて、同一プレーン内の物理ブロックで構成された物理ゾーンに含まれる物理ブロックの物理ブロックアドレスを生成する物理ブロックアドレス生成手段を備え、物理ブロックアドレス生成手段は、物理ゾーン番号をビット表示したときの下位側から１ビット目と２ビット目の間に、物理ゾーン内ブロック番号をビット表示したときのビットを挿入することにより物理ブロックアドレスを生成すること手段であることも好ましい。
【００４０】
上記目的を達成するために、本発明によるフラッシュメモリシステムは、前記メモリコントローラのいずれか１つとフラッシュメモリを備えている。
【００４１】
上記目的を達成するために、２プレーン書き込み機能を備えたフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、フラッシュメモリの記憶領域を複数の物理ゾーンに分割し、該物理ゾーンに割り当てる論理アドレスの領域である論理ゾーンを管理するフラッシュメモリの制御方法において、アクセス対象の論理アドレスの領域が含まれる論理ゾーンを判別し、該論理ゾーンに割り当てられている物理ゾーンに付けられた通番である物理ゾーン番号を求める物理ゾーン番号特定ステップと、アクセス対象の論理アドレスの領域と対応関係にある物理ブロックの物理ゾーン内での通番である物理ゾーン内ブロック番号を求める物理ゾーン内ブロック番号特定ステップと、物理ゾーン番号と物理ゾーン内ブロック番号に基づいて、アクセス対象の論理アドレスの領域と対応関係にある物理ブロックの物理ブロックアドレスを生成する物理ブロックアドレス生成ステップを含み、物理ブロックアドレス生成ステップでは、物理ゾーン番号をビット表示したときの下位側から１ビット目と２ビット目の間に、物理ゾーン内ブロック番号をビット表示したときのビットを挿入することにより物理ブロックアドレスを生成する。
【発明の効果】
【００４２】
本発明によれば、同一論理ゾーンに含まれる論理アドレスの領域が、同一プレーン内の物理ブロックで構成された物理ゾーンに含まれる物理アドレスの領域に割り当てられるようなアドレス管理が行われる。このようなアドレス管理を行った場合、書き換え前のデータが記憶されている物理ブロックと書き換え後のデータを書き込む空きブロックが、異なるプレーン内の物理ブロックになってしまうことが無い。従って、書き換え前のデータが記憶されている物理ブロックと書き換え後のデータを書き込む物理ブロックが、コピーバック処理を行うことのできない組合せになってしまうことがなくなる。
【発明を実施するための最良の形態】
【００４３】
以下、図面に基づき、本発明の実施形態について詳細に説明する。
【００４４】
図１は、フラッシュメモリシステム１を概略的に示すブロック図である。図１に示したようにフラッシュメモリシステム１は、フラッシュメモリ２（２プレーンフラッシュメモリ）と、それを制御するメモリコントローラ３とで構成されている。
【００４５】
なお、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００４６】
[フラッシュメモリ２の説明]
フラッシュメモリ２は、不揮発性メモリであり、レジスタとメモリセルアレイとから構成される。フラッシュメモリ２は、レジスタとメモリセルアレイとの間でデータの複写を行って、データの書き込みまたは読み出しを行う。
【００４７】
メモリセルアレイは、複数のメモリセル群とワード線とを備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写または選択されたメモリセルからレジスタへのデータの複写が行われる。
【００４８】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００４９】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。
【００５０】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００５１】
次に、２個のプレーン（プレーン＃０及びプレーン＃１）で構成されたフラッシュメモリ２のアドレス空間を図２に示す。フラッシュメモリ２（２プレーンフラッシュメモリ）のアドレス空間は、"ページ"、"ブロック（物理ブロック）"および"プレーン"で構成される。
【００５２】
ページは、一般のフラッシュメモリにて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリにて行われるデータ消去動作における処理単位であり、複数個のページで構成されている。
【００５３】
図２に示したフラッシュメモリ２（２プレーンフラッシュメモリ）では、１つのページは、４セクタ（５１２×４バイト）のユーザ領域２５と、６４バイト（１６×４バイト）の冗長領域２６で構成され、１つの物理ブロックは６４個のページで構成されている。
【００５４】
プレーン＃０およびプレーン＃１内の物理ブロックには、交互にＰＢＡが割り振られている。例えば、プレーン＃０内の物理ブロックにはＰＢＡ＃０、＃２、＃４の順で偶数のＰＢＡが割り振られ、プレーン＃１内の物理ブロックにはＰＢＡ＃１、＃３、＃５、の順に奇数のＰＢＡが割り振られている。
【００５５】
各ページはユーザ領域２５と冗長領域２６で構成されている。ユーザ領域２５は、ホストシステム４から供給されるユーザデータを記憶するための領域である。冗長領域２６は、ＥＣＣ（Error Correcting Code）、論理アドレス情報、ブロックステータス（フラグ）等の付加データを記憶するための領域である。
【００５６】
ＥＣＣは、ユーザ領域２５に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
【００５７】
論理アドレス情報は、物理ブロックにデータが格納されているとき、そのデータに対応する論理ブロックを特定するための情報である。
【００５８】
従って、消去済みの物理ブロックには論理アドレス情報が書き込まれていないので、冗長領域２６に論理アドレス情報が格納されているか否かを判定することにより、その冗長領域２６が含まれている物理ブロックに有効なデータが格納されているか否かを判断することができる。つまり、冗長領域２６に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断することができる。
【００５９】
ブロックステータス（フラグ）は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域２６には、不良ブロックであることを示すブロックステータス（フラグ）が書き込まれる。
【００６０】
このようなフラッシュメモリ２は、コントローラ３から、データ、アドレス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
【００６１】
ここで、内部コマンドとは、コントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、コントローラ３から与えられる内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００６２】
[コントローラ３の説明]
コントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣブロック１１と、ＲＯＭ（Read Only Memory）１２と、から構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００６３】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、コントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理等を定義したコマンドセットをＲＯＭ１２から読み出してフラッシュメモリインターフェースブロック１０に供給し、フラッシュメモリインターフェースブロック１０に処理を実行させる。ホストインターフェースブロック７は、ホストシステム４との間で、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行う。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００６４】
図１に示すワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００６５】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００６６】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。
【００６７】
フラッシュメモリインターフェースブロック１０は、ＲＯＭ１２から読み出したコマンドセットに基づいて内部コマンド、アドレス情報等をフラッシュメモリ２に供給することにより、フラッシュメモリ２に読み出し、書き込み等を実行させる。
【００６８】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加されるＥＣＣを生成するとともに、フラッシュメモリ２から読み出したデータに付加されたＥＣＣに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００６９】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ１２は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
【００７０】
アドレス変換テーブルは、ワークエリア８上に作成される。このアドレス変換テーブルは、対応する論理ゾーンと物理ゾーンにおける論理ゾーン内ブロック番号ＬＺＩＢＮと物理ゾーン内ブロック番号ＰＺＩＢＮとの対応関係を記憶する。
【００７１】
[本発明のアドレス管理]
まず、本発明のアドレス管理手段に必要な機能について説明する。上述したように、空きブロック検索は、同一物理ゾーンに含まれている空きブロックのみを検索する。そのため、書き換え前のデータが記憶されている物理ブロックと書き換え後のデータを書き込む空きブロックが、常に同一のプレーン内の物理ブロックになるようにするには、同一物理ゾーンに含まれる物理ブロックが、同一プレーン内の物理ブロックだけになるようにすれば良いことになる。なお、同一論理ゾーンに含まれる論理ブロックは、同一物理ゾーンに含まれる物理ブロックに割り当てられる。
【００７２】
よって、本発明のアドレス管理手段は、同一論理ゾーンに含まれる論理ブロックが、同一プレーン内の物理ブロックに割り当てられるように、論理ブロック番号を物理ブロックアドレスに変換する。以下に本発明のアドレス管理手段を詳細に説明する。
【００７３】
図３は、本発明の第１の実施形態におけるアドレス変換を概念的に示す図である。図３（ａ）を用いて、本実施形態でのＬＢＮからＰＢＡへの変換を説明する。
（Ｓ３１）ＬＢＮからＬＺＮおよびＬＺＩＢＮを求める。各論理ゾーンに含まれる論理ブロックの数がＮであるとき、ＬＺＮはＬＢＮをＮで割ったときの商に対応し、ＬＺＩＢＮはＬＢＮをＮで割ったときの余りに対応する。
（Ｓ３２１）ＬＺＮをＰＺＮに変換する（ＬＺＮに対応するＰＺＮを求める）。ＬＺＮとＰＺＮの同じ番号同士を対応させるようにした場合、ＰＺＮはＬＺＮと同じ値になる。
（Ｓ３２２）ＬＺＩＢＮをＰＺＩＢＮに変換する（ＬＺＩＢＮに対応するＰＺＩＢＮを求める）。ＬＺＩＢＮとＰＺＩＢＮの対応関係を示したアドレス変換テーブルを参照することにより、ＬＺＩＢＮに対応するＰＺＩＢＮを求めることができる。または、書き込み処理の場合に、ＬＺＩＢＮに対応するＰＺＩＢＮがアドレス変換テーブルに存在しない場合、空き物理ブロックのＰＺＩＢＮがＬＺＩＢＮに対応するＰＺＩＢＮとして割り当てられる。
（Ｓ３３）ＰＺＩＢＮおよびＰＺＮからＰＢＡ'（仮の物理ブロックアドレス）を生成する。各物理ゾーンに含まれる物理ブロックの数が２のべき乗個の場合、ＰＺＮとＰＺＩＢＮをビット表示し、ＰＺＮの下位側にＰＺＩＢＮを連結すればＰＢＡ'が得られる。つまり、各物理ゾーンに含まれる物理ブロックの数がＭ（Ｍ＝２ｎ）個であるとき、ＰＺＮにＭを乗算し、その結果にＰＺＩＢＮを加算すればよい。このように得られたＰＢＡ'を、ホストインターフェースブロック７は、フラッシュメモリインターフェースブロック１０に供給する。
（Ｓ３４）ＰＢＡ'をＰＢＡに変換する。この変換では、ＰＢＡ'をビット表示したときの下位側からｎ＋１ビット目のビットを最下位ビットに移動させる。ここで、各物理ゾーンに含まれる物理ブロックの数がＭ（Ｍ＝２ｎ）個であるとき、ＰＺＩＢＮ（＃０〜＃Ｍ−１）のビット長はｎになり、下位側からｎ＋１ビット目が、ＰＺＮの最下位ビットに対応する。従って、下位側からｎ＋１ビット目のビットを最下位ビットに移動させるビット操作を行うことにより、ＰＺＮが偶数の物理ゾーンはプレーン＃０内の物理ブロックで構成されることになり、ＰＺＮが奇数の物理ゾーンはプレーン＃１内の物理ブロックで構成されることになる。
【００７４】
Ｓ３４の変換により、同一の物理ゾーン内のＬＢＮを同一プレーン内の物理ブロックで構成された物理ゾーンに含まれる物理ブロックのＰＢＡに変換するという本発明の目的が実現される。フラッシュメモリインターフェースブロック１０は、上記ＰＢＡに基づいたアドレス情報および内部コマンドをフラッシュメモリ２に供給することにより、フラッシュメモリ２に読み出しまたは書き込みを実行させる。
【００７５】
図５は、本発明の実施形態における論理アドレス空間、物理アドレス空間およびアドレス変換テーブルの一例を示す図である。本図を用いて、本発明の第１の実施形態のアドレス変換手段の具体例を示す。
【００７６】
図５（ａ）は、論理アドレス空間を示しており、本例では各論理ゾーンに含まれる論理ブロックの数は１０００である。それゆえ、ＬＺＩＢＮは０〜９９９になる。図５（ｂ）は、物理アドレス空間を示しており、本例では各物理ゾーンに含まれる物理ブロックの数は１０２４である。それゆえ、ＰＺＩＢＮは０〜１０２３になる。また２プレーンフラッシュメモリの物理アドレス空間であるため、ＰＺＮ＃０およびＰＺＮ＃２がプレーン＃０内の物理ブロックであり、ＰＺＮ＃１およびＰＺＮ＃３がプレーン＃１内の物理ブロックになる。図５（ｃ）は、アドレス変換テーブルを示している。アドレス変換テーブルは、各ゾーンごとに作成されている。１番目のアドレス変換テーブルは、ゾーン＃０用のアドレス変換テーブル（ＬＺＮ＃０の論理ゾーンに含まれる論理ブロックとＰＺＮ＃０の物理ゾーンに含まれる物理ブロックの対応関係を示したアドレス変換テーブル）であり、２番目のアドレス変換テーブルは、ゾーン＃１用のアドレス変換テーブル（ＬＺＮ＃１の論理ゾーンに含まれる論理ブロックとＰＺＮ＃１の物理ゾーンに含まれる物理ブロックの対応関係を示したアドレス変換テーブル）であり、以下同じようになっている。
【００７７】
まず、ＬＢＮ＃２０００を変換する場合について説明する。Ｓ３１で、ＬＢＮ＃２０００から、ＬＺＮ＃２およびＬＺＩＢＮ＃０が求められる（２０００／１０００＝２余り０）。Ｓ３２１で、ＬＺＮ＃２はＰＺＮ＃２に変換される。Ｓ３２２で、ＬＺＩＢＮ＃０は、アドレス変換テーブルによりＰＺＩＢＮ＃１０２１に変換される。Ｓ３３で、ＰＺＮ＃２およびＰＺＩＢＮ＃１０２１に基づいて、ＰＢＡ'＃３０６９が生成される（２＊１０２４＋１０２１）。Ｓ３４で、ＰＢＡ'＃３０６９がＰＢＡ＃４０９０に変換される。
【００７８】
上記変換は、図３（ｂ）に従い次のように行われる。ＰＢＡ'＃３０６９を２進数で表すと、「１０１１  １１１１  １１０１」になり、下位側から１１ビット目を最下位ビットに移動させることにより、「１１１１  １１１１  １０１０」、１０進数では４０９０が得られる。
【００７９】
次に、ＬＢＮ＃２００１を変換する場合について説明する。Ｓ３１で、ＬＢＮ＃２００１から、ＬＺＮ＃２およびＬＺＩＢＮ＃１が求められる（２００１／１０００＝２余り１）。Ｓ３２１で、ＬＺＮ＃２はＰＺＮ＃２に変換される。Ｓ３２２で、ＬＺＩＢＮ＃１は、アドレス変換テーブルによりＰＺＩＢＮ＃１０２３に変換される。Ｓ３３で、ＰＺＮ＃２およびＰＺＩＢＮ＃１０２３に基づいて、ＰＢＡ'＃３０７１が生成される（２＊１０２４＋１０２３）。Ｓ３４で、ＰＢＡ'＃３０７１がＰＢＡ＃４０９４に変換される。
【００８０】
以上のように、ＬＺＮ＃２内のＬＢＮ＃２０００とＬＢＮ＃２００１は、それぞれ同じＰＺＮ＃２のＰＢＡ＃４０９０とＰＢＡ＃４０９２に変換される。このように本実施例のアドレス変換処理では、同一論理ゾーンに含まれる論理ブロックのＬＢＮを同一物理ゾーンに含まれる物理ブロックのＰＢＡに変換する。各物理ゾーンは、同一プレーン内の物理ブロックで構成されているため、結果として同一論理ゾーンに含まれる論理ブロックのＬＢＡは、同一プレーンに含まれる物理ブロックのＰＢＡに変換される。
【００８１】
本発明の第１の実施形態で、図３（ａ）に示したＳ３１〜Ｓ３３は、一般的に行われているアドレス変換処理である。Ｓ３４が新規に追加された処理である。尚、各物理ゾーンに含まれる物理ブロックの数がＭ（Ｍ＝２ｎ）個であるときに、ＰＢＡ'の下位側からｎ＋１ビット目のビットを最下位ビットに移動させるビット操作（Ｓ３４）は、ロジック回路で構成して行ってもよい。
【００８２】
図４は、本発明の第２の実施形態におけるアドレス変換を概念的に示す図である。図４（ａ）を用いて、本実施形態でのＬＢＮからＰＢＡへの変換を説明する。
（Ｓ４１）、（Ｓ４２１）および（Ｓ４２２）は、それぞれ（Ｓ３１）、（Ｓ３２１）および（Ｓ３２２）と同じ変換内容である。そのため、詳細は省略する。
（Ｓ４３）ＰＺＩＢＮおよびＰＺＮからＰＢＡを生成する。ここでは、図４（ｂ）に示したようにＰＺＮの下位側から１ビット目と２ビット目の間にＰＺＩＢＮを示すビットを挿入する。つまり、各物理ゾーンに含まれる物理ブロックの数がＭ（Ｍ＝２ｎ）個であるときに、ＰＺＩＢＮを示すｎビットがＰＺＮの下位側から１ビット目と２ビット目の間に挿入される。例えば、各物理ゾーンに含まれる物理ブロックの数が１０２４である場合、ＰＺＩＢＮをビット表示したときの１０ビットがＰＺＮの下位側から１ビット目と２ビット目の間に挿入される。
【００８３】
Ｓ４３の変換により、同一の物理ゾーン内のＬＢＮを同一プレーン内の物理ブロックで構成された物理ゾーンに含まれる物理ブロックのＰＢＡに変換するという本発明の目的が実現される。フラッシュメモリインターフェースブロック１０は、上記ＰＢＡに基づいたアドレス情報および内部コマンドをフラッシュメモリ２に供給することにより、フラッシュメモリ２に読み出しまたは書き込みを実行させる。
【００８４】
図５を用いて、本発明の第２の実施形態のアドレス変換手段の具体例を示す。なお、図５のＰＢＡ'は本実施形態では使用しない。
【００８５】
まず、ＬＢＮ＃２０００を変換する場合について説明する。Ｓ４１で、ＬＢＮ＃２０００から、ＬＺＮ＃２およびＬＺＩＢＮ＃０が求められる（２０００／１０００＝２余り０）。Ｓ４２１で、ＬＺＮ＃２はＰＺＮ＃２に変換される。Ｓ４２２で、ＬＺＩＢＮ＃０は、アドレス変換テーブルによりＰＺＩＢＮ＃１０２１に変換される。Ｓ４３で、ＰＺＮ＃２およびＰＺＩＢＮ＃１０２１に基づいて、ＰＢＡ＃４０９０が生成される。
【００８６】
Ｓ４３の生成処理は、図４（ｂ）に従い次のように行われる。ＰＺＮ＃２を２進数で表すと「００１０」になる。ＰＺＩＢＮ＃１０２１を２進数で表すと「１１  １１１１  １１０１」となる。ＰＺＮ＃２の下位１ビット以外のビット「００１」、ＰＺＩＢＮ＃１０２１の全ビット「１１  １１１１  １１０１」、ＰＺＮ＃２の下位１ビット「０」を連結すると、「００  １１１１  １１１１  １０１０」になり、１０進数で表すと、４０９０になる。
【００８７】
次に、ＬＢＮ＃２００１を変換する場合について説明する。Ｓ４１で、ＬＢＮ＃２００１から、ＬＺＮ＃２およびＬＺＩＢＮ＃１が求められる（２００１／１０００＝２余り１）。Ｓ４２１で、ＬＺＮ＃２はＰＺＮ＃２に変換される。Ｓ４２２で、ＬＺＩＢＮ＃１は、アドレス変換テーブルによりＰＺＩＢＮ＃１０２３に変換される。Ｓ４３で、ＰＺＮ＃２およびＰＺＩＢＮ＃１０２３に基づいて、ＰＢＡ＃４０９４が生成される。
【００８８】
以上のように、ＬＺＮ＃２内のＬＢＮ＃２０００とＬＢＮ＃２００１は、それぞれ同じＰＺＮ＃２のＰＢＡ＃４０９０とＰＢＡ＃４０９４に変換される。このように本実施例のアドレス変換処理も、同一論理ゾーンに含まれる論理ブロックのＬＢＮを、同一物理ゾーンに含まれる物理ブロックのＰＢＡに変換する。同一物理ゾーンは、同一プレーン内の物理ブロックで構成されているため、結果として同一論理ゾーンに含まれる論理ブロックのＬＢＮが、同一プレーンに含まれる物理ブロックのＰＢＡに変換される。
【００８９】
本発明の第２の実施形態では、変換Ｓ４１、Ｓ４２１およびＳ４２２は、一般的に行われているアドレス変換処理である。変換Ｓ４３が変更された処理である。以上のように本発明の第２の実施形態は、ＰＺＩＢＮおよびＰＺＮからＰＢＡを生成するときに、ＰＺＮの下位側から１ビット目と２ビット目の間にＰＺＩＢＮを示すビットを挿入することにより、発明の目的を実現している。
【００９０】
なお、各論理ゾーンの論理ブロック数は１０００に限定されない。同様に各物理ゾーンの物理ブロック数は１０２４に限定されない。それぞれの値は、論理ブロック数≦物理ブロック数である限り自由に設定しても良い。また、ＰＢＡのビット数は１４ビットに限定されない。
【００９１】
上記の実施形態では、プレーン数は２個であったが、プレーン数は２個に限定されず、偶数個であればよい。
【００９２】
以上述べたように、本発明のアドレス管理では、同一論理ゾーンに含まれる論理ブロックのＬＢＮが、同一プレーン内の物理ブロックで構成されている物理ゾーンに含まれる物理ブロックのＰＢＡに変換される。従って、書き換え前のデータが記憶されている物理ブロックと書き換え後のデータを書き込む空きブロックが、異なるプレーン内の物理ブロックになってしまうことが無い。
【００９３】
また、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様及び変更態様で実施することができる。従って本発明の範囲は特許請求の範囲及びその均等範囲によってのみ規定されるものである。
【図面の簡単な説明】
【００９４】
【図１】本発明の実施形態におけるフラッシュメモリシステムを概略的に示すブロック図である。
【図２】本発明の実施形態における２プレーンフラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図３】本発明の第１の実施形態におけるアドレス変換を概念的に示す図である。
【図４】本発明の第２の実施形態におけるアドレス変換を概念的に示す図である。
【図５】本発明の実施形態における論理アドレス空間、物理アドレス空間およびアドレス変換テーブルの一例を示す図である。
【図６】フラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図７】フラッシュメモリのアドレス変換を概念的に示す図である。
【図８】２プレーンフラッシュメモリの物理アドレス空間の構造を概略的に示す図である。
【図９】（ａ）は、２プレーンフラッシュメモリの物理ブロックとページとの関係を概略的に示す図である。（ｂ）は、２プレーンフラッシュメモリのページとユーザ領域および冗長領域との関係を概略的に示す図である。
【図１０】２プレーンフラッシュメモリに対して通常の書き込みを行う場合のゾーン内のブロックと物理ブロックの関係を概略的に示す図である。
【図１１】（ａ）は、フラッシュメモリに対して通常の書き込みを行う場合のタイムチャートを示す図である。（ｂ）は、２プレーンフラッシュメモリに対して、２プレーン書き込みを行う場合のタイムチャートを示す図である。
【図１２】空きブロック検索テーブルの構成の一例を示す図である。
【符号の説明】
【００９５】
１  フラッシュメモリシステム
２  フラッシュメモリ
３  コントローラ
４  ホストシステム
６  マイクロプロセッサ
７  ホストインターフェースブロック
８  ワークエリア
９  バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
２５  ユーザ領域
２６  冗長領域
【図１】
2008040723.tif 000003
【図２】
2008040723.tif 000004
【図３】
2008040723.tif 000005
【図４】
2008040723.tif 000006
【図５】
2008040723.tif 000007
【図６】
2008040723.tif 000008
【図７】
2008040723.tif 000009
【図８】
2008040723.tif 000010
【図９】
2008040723.tif 000011
【図１０】
2008040723.tif 000012
【図１１】
2008040723.tif 000013
【図１２】
2008040723.tif 000014