(57)【要約】【課題】２プレーン書き込み機能を効率的に利用することができるメモリコントローラを提供する。【解決手段】データの書き込み先の空きブロックを検索するときに、ペアブロックの空きだけを検索する空きブロック検索テーブル１００を用いた検索を最初に行い、この空きブロック検索テーブル１００を用いた検索でペアブロックの空きが検出されなかった場合にだけ、片割れ良品ブロックの空きを検索する。ペアブロックの空きがあるときには、２プレーン書き込みを行い、ペアブロックの空きがなかった場合は、適宜組み合わせた片割れ良品ブロックにデータを書き込む。【選択図】図５
2007286892.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）セルによって構成される。
【００５５】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００５６】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。
【００５７】
フラッシュメモリインターフェースブロック１０は、ＲＯＭ１２から読み出したコマンドセットに基づいて内部コマンド、アドレス情報等をフラッシュメモリ２に供給することにより、フラッシュメモリ２に読み出し、書き込み等を実行させる。
【００５８】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加されるＥＣＣを生成するとともに、フラッシュメモリ２から読み出したデータに付加されたＥＣＣに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００５９】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ１２は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
【００６０】
本実施形態においては、アドレス変換テーブルは、ワークエリア８上に作成される。このアドレス変換テーブルは、対応する論理ゾーンと物理ゾーンにおける論理ゾーン内ブロック番号ＬＺＩＢＮと物理ゾーン内ブロック番号ＰＺＩＢＮとの対応関係を記憶する。ここで、ＰＺＩＢＮは、物理ゾーン内の物理ブロックに対して、その物理ブロックのＰＢＡの若い方から順番に振られる番号である。
【００６１】
なお、本実施形態では、物理ゾーンがＰＺＩＢＮ＃０〜＃１０２３の１０２４個の物理ブロックで構成されている。また、ＰＺＩＢＮが偶数の物理ブロック（プレーン＃０側の物理ブロック）と奇数の物理ブロック（プレーン＃１側の物理ブロック）がＰＺＩＢＮの先頭から順番に一対になっており、この一対の物理ブロックにデータを書き込むときに２プレーン書き込みが可能になっている。以下、この一対の物理ブロックをペアブロックと言い、ペアブロックの一方の物理ブロックが不良ブロックになった場合のもう一方の良品ブロックを、片割れ良品ブロックと言う。また、本実施形態では、１個の論理ブロックに対して２個の物理ブロックが割り当てられる。つまり、１個の論理ブロックには、１組のペアブロック、または適宜組み合わされた２個の片割れ良品ブロック（以下、ダミーペアと言う。）が割り当てられる。
【００６２】
次に、上記のアドレス変換テーブルについて、図３及び図４を参照して説明する。図３に示したアドレス変換テーブル４００は、上記のアドレス変換テーブルの一例であり、対応する論理ゾーンと物理ゾーンの組毎に作成され、ワークエリア８に保存される。このアドレス変換テーブル４００には、ＬＺＩＢＮ＃０〜＃４９９の各論理ブロックに対応するペアブロックのプレーン＃０側の物理ブロックのＰＺＩＢＮ、または、ダミーペアの一方のＰＺＩＢＮが書き込まれる。または、ＬＺＩＢＮ＃０〜＃４９９の各論理ブロックと対応関係にある２個の物理ブロックが、ペアブロックであるかまたはダミーペアであるかはペアフラグによって示されている。図３に示した例では、ペアフラグが“０”のときは、対応関係にある２個の物理ブロックがペアブロックであることを示し、ペアフラグが“１”のときは、対応関係にある２個の物理ブロックがダミーペアであることを示している。
【００６３】
図３に示した例で、ＬＺＩＢＮ＃０の論理ブロックには、プレーン＃０側のＰＺＩＢＮ＃２２の物理ブロックとプレーン＃１側のＰＺＩＢＮ＃２３の物理ブロックで構成されるペアブロックが割り当てられている。同様に、ＬＺＩＢＮ＃１の論理ブロックには、プレーン＃０側のＰＺＩＢＮ＃１２の物理ブロックとプレーン＃１側のＰＺＩＢＮ＃１３の物理ブロックで構成されるペアブロックが割り当てられ、ＬＺＩＢＮ＃２の論理ブロックには、プレーン＃０側のＰＺＩＢＮ＃６の物理ブロックとプレーン＃１側のＰＺＩＢＮ＃７の物理ブロックで構成されるペアブロックが割り当てられている。このように、ペアフラグが“０”のときは、対応関係にある２個の物理ブロックがペアブロックであるため、プレーン＃０側のＰＺＩＢＮに基づいてペアブロックを構成するもう一方の物理ブロックのＰＺＩＢＮを判断することができる。
【００６４】
一方、ＬＺＩＢＮ＃４の論理ブロックのようにダミーペアに割り当てられている場合（ペアフラグが“１”の場合）は、ダミーペアの一方の物理ブロック（片割れ良品ブロック）のＰＺＩＢＮだけしか判断することができない。つまり、ＬＺＩＢＮ＃４の論理ブロックに割り当てられているダミーペアの一方はＰＺＩＢＮ＃８の物理ブロック（片割れ良品ブロック）であることは分かるが、もう一方の物理ブロック（片割れ良品ブロック）のＰＺＩＢＮはアドレス変換テーブル４００だけでは判断することができない。このため、ダミーペアの組み合わせを示したダミーペアテーブルを用いてもう一方の物理ブロック（片割れ良品ブロック）のＰＺＩＢＮを判断する。図４に示したダミーペアテーブル３００には、ダミーペアを構成する２個の物理ブロック（片割れ良品ブロック）のＰＺＩＢＮが並べて書き込まれている。このダミーペアテーブル３００に基づいてＰＺＩＢＮ＃８の物理ブロック（片割れ良品ブロック）には、ＰＺＩＢＮ＃１５の物理ブロック（片割れ良品ブロック）組み合わされていることが分かる。
【００６５】
次に、空きブロックを検索するためのテーブルについて説明する。図５に示した空きブロック検索テーブル１００は、フラッシュメモリ２の物理ゾーンにおけるペアブロックの使用状況を表すテーブルであり、物理ゾーン毎に作成され、ワークエリア８に保存され、マイクロプロセッサ６により管理される。
【００６６】
この空きブロック検索テーブル１００は、６４バイト（５１２ビット）のデータから構成され、物理ゾーンに含まれるペアブロックの使用状況を各ビットの論理値で示している。この空きブロック検索テーブル１００では、空きブロックであることを論理値の“１”で示し、空きブロックでないことを論理値の“０”で示ししている。つまり、論理値の“１”は、そのビットに対応するペアブロックの双方が良品ブロックでデータが書き込まれていない状態（消去状態）であることを示し、論理値の“０”は、そのビットに対応するペアブロックにデータが書き込まれている状態、または、ペアブロックの双方若しくはいずれか一方が不良ブロックであることを示している。
【００６７】
図５では、５１２組のペアブロックの使用状況を示す６４バイトのデータを、１バイト毎に改行して表示している。ここで、一番上の行は、プレーン＃０側の物理ブロックがＰＺＩＢＮ＃０〜＃１４のペアブロック（ＰＺＩＢＮ＃０と＃１、ＰＺＩＢＮ＃２と＃３、ＰＺＩＢＮ＃４と＃５、ＰＺＩＢＮ＃６と＃７、ＰＺＩＢＮ＃８と＃９、ＰＺＩＢＮ＃１０と＃１１、ＰＺＩＢＮ＃１２と＃１３、ＰＺＩＢＮ＃１４と＃１５のペアブロック）の使用状況を示している。以下同様に、二番目の行は、プレーン＃０側の物理ブロックがＰＺＩＢＮ＃１６〜＃３０のペアブロックの使用状況を示し、三番目の行は、プレーン＃０側の物理ブロックがＰＺＩＢＮ＃３２〜＃４６のペアブロックの使用状況を示している。そして、一番下の行は、プレーン＃０側の物理ブロックがＰＺＩＢＮ＃１００８〜＃１０２２のペアブロックの使用状況を示している。また、各行の１バイトのデータには、下位ビット側からＰＺＩＢＮの順番でペアブロックが割り当てられている。従って、一番上の行の最下位ビットはＰＺＩＢＮ＃０と＃１のペアブロックの使用状況を示し、一番下の行の最上位ビットはＰＺＩＢＮ＃１０２２と＃１０２３のペアブロックの使用状況を示している。
【００６８】
また、空きブロックを検索する場合は、各行の１バイトのデータを上の行から順番に読み出していき、読み出したデータが０（２進数表示：００００  ００００）でないときは、そのデータをシフトレジスタに書き込み、シフトレジスタを下位方向にシフトさせる。何回のシフトでキャリーが発生したかにより、下位から何ビット目が“１”であるかを判別する。例えば、４番目の行の０００１  １０００（２進数表示）をシフトレジスタに書き込み、シフトレジスタを下位方向にシフトさせた場合は、４回のシフトでキャリーが発生するので、下位側から４ビット目に対応するＰＺＩＢＮ＃５４と＃５５のペアブロックが空きブロックとして検出される。
【００６９】
また、次回の空きブロック検索では、４番目の行の下位側から５ビット目のビットから検索が開始される。このように下位側から５ビット目のビットから検索が開始する場合は、シフトレジスタにデータを設定する前に、設定するデータの下位４ビットが“０”になるようなマスク処理が施される。
【００７０】
次に、片割れ良品ブロックの空きブロックを検索するためのテーブルについて説明する。図６に示した片割れ良品ブロックテーブル２００には、ペアブロックの一方の物理ブロックが不良ブロックになった場合のもう一方の良品ブロック（以下、片割れ良品ブロックと言う。）のＰＺＩＢＮが保存される。図６に示した例では、片割れ良品ブロックテーブル２００の各行に、＃２０と＃３５と＃４８とが書き込まれている。これはＰＺＩＢＮ＃２０、＃３５、＃４８の３個の物理ブロックが片割れ良品ブロックであることを示している。また、ＰＺＩＢＮ＃２０、＃３５、＃４８の物理ブロックとペアブロックを構成するＰＺＩＢＮ＃２１、＃３４、＃４９の物理ブロックは、不良ブロックであることが分かる。
【００７１】
上述の空きブロック検索テーブル１００を用いて検出したペアブロックにデータを書き込んだときには、そのペアブロックに対応する空きブロック検索テーブル１００上のビットが“１”から“０”に書き換えられる。アドレス変換テーブル４００については、書き込んだデータに対応する論理ブロックのＬＺＩＢＮと対応関係にあるＰＺＩＢＮが、書き込み先のペアブロックのプレーン＃０側の物理ブロックのＰＺＩＢＮに書き換えられる。データを書き込んだペアブロックの双方の物理ブロックの冗長領域２６には、書き込んだデータに対応する論理ブロックのＬＺＩＢＮが書き込まれる。
【００７２】
片割れ良品ブロックテーブル２００を用いて検出した２個の片割れ良品ブロックにデータを書き込んだときには、片割れ良品ブロックテーブル２００からデータの書き込み先になった２個の片割れ良品ブロックのＰＺＩＢＮを消去する。アドレス変換テーブル４００については、書き込んだデータに対応する論理ブロックのＬＺＩＢＮと対応関係にあるＰＺＩＢＮが、書き込み先になった２個の片割れ良品ブロックのＰＺＩＢＮが若い方の番号に書き換えられる。更に、書き込み先になった２個の片割れ良品ブロックのＰＺＩＢＮを、ＰＺＩＢＮが若い方から順番にダミーペアテーブル３００に書き込む。尚、本実施形態においてダミーペアにデータを書き込むときは、ＰＺＩＢＮが若い方から順番にデータを書き込む。データを書き込んだダミーペアの双方の片割れ良品ブロックの冗長領域２６には、書き込んだデータに対応する論理ブロックのＬＺＩＢＮが書き込まれる。
【００７３】
次に、上述のアドレス変換テーブル４００、ダミーペアテーブル３００、空きブロック検索テーブル１００及び片割れ良品ブロックテーブル２００の作成処理について説明する。尚、これらのテーブルを作成する領域は、ワークエリア８上に確保される。また、これらのテーブルを作成する領域のＰＺＩＢＮが書き込まれる箇所の初期値は、ＰＺＩＢＮが書き込まれていないことを判別することができるような値に初期化する。
【００７４】
この作成処理では、作成対象の物理ゾーンに含まれる物理ブロックの冗長領域２６に書き込まれているブロックステータス（フラグ）とＬＺＩＢＮ（論理アドレス情報）が順次読み出され、読み出された情報に応じて下記のような処理が行われる。
【００７５】
ペアブロックを構成する双方の物理ブロックに同一のＬＺＩＢＮが書き込まれていた場合は、アドレス変換テーブル４００（アドレス変換テーブル４００の作成領域）上のそのＬＺＩＢＮに対応する箇所のペアフラグを“０”にすると共に、そのペアブロックのプレーン＃０側のＰＺＩＢＮを対応関係にあるペアブロックのＰＺＩＢＮとして書き込む。
【００７６】
ペアブロックの一方の物理ブロックにだけＬＺＩＢＮが書き込まれ、もう一方の物理ブロックに不良ブロックを示すブロックステータス（フラグ）が書き込まれていた場合は、一方の物理ブロックに書き込まれていたＬＺＩＢＮに対応する箇所のペアフラグを“１”にすると共に、その物理ブロックのＰＺＩＢＮを対応関係にあるダミーペアのＰＺＩＢＮとして書き込む。その後、ダミーペアのもう一方の物理ブロックを検出したときに、ダミーペアを構成する２個の物理ブロック（片割れ良品ブロック）のＰＺＩＢＮをダミーペアテーブル３００（ダミーペアテーブル３００の作成領域）に書き込む。ここで、ダミーペアを構成する２個の物理ブロック（片割れ良品ブロック）の冗長領域２６には同一のＬＺＩＢＮが書き込まれているため、冗長領域２６に書き込まれているＬＺＩＢＮに基づいてダミーペアの組み合わせを判別することができる。
【００７７】
ペアブロックを構成する双方の物理ブロックにＬＺＩＢＮも不良ブロックを示すブロックステータス（フラグ）も書き込まれていない場合は、空きブロック検索テーブル１００（空きブロック検索テーブル１００の作成領域）のそのペアブロックに対応するビットに“１”を設定する。尚、空きブロック検索テーブル１００（空きブロック検索テーブル１００の作成領域）の全てのビットは、作成開始時に“０”に初期化しておく。
【００７８】
ペアブロックを構成する双方の物理ブロックにＬＺＩＢＮが書き込まれておらず、一方の物理ブロックに不良ブロックを示すブロックステータス（フラグ）も書き込まれていた場合は、不良ブロックを示すブロックステータス（フラグ）が書き込まれていない方の物理ブロックのＰＺＩＢＮを片割れ良品ブロックテーブル２００（片割れ良品ブロックテーブル２００の作成領域）に書き込む。
【００７９】
以上の処理を作成対象の物理ゾーンに含まれる全ての物理ブロックに対して行うことにより、上記のアドレス変換テーブル４００、ダミーペアテーブル３００、空きブロック検索テーブル１００及び片割れ良品ブロックテーブル２００が作成される。
【００８０】
次に、空きブロックへのデータの書き込みについて説明する。この書き込み処理は、ホストシステム４から与えられる書き込み指示情報に基づいて実行される。この書き込み指示情報には、書き込みを指示するコマンド及び書き込みを開始するセクタのＬＢＡと書き込むセクタ数とを指示する情報が含まれる。このＬＢＡとセクタ数とに基づいて、書き込み先の論理ブロック（ＬＺＩＢＮ）が特定され、この論理ブロックに対応する物理ブロック（ＰＺＩＢＮ）の空きページにデータを書き込めない場合、つまり、既存データの書き換えを行う場合、またはこの論理ブロックに対する物理ブロックが存在しない場合に、空きブロックを検索し検出された空きブロックにデータが書き込まれる。
【００８１】
空きブロックを検索するときには、先に空きブロック検索テーブル１００を用いた空きブロックの検索を行う。この検索で、双方の物理ブロックが空きブロックのペアブロックが検出された場合は、そのペアブロックに対して２プレーン書き込みを行う。そして、空きブロック検索テーブル１００上に論理値が“１”のビットが無い場合、すなわちペアブロックの空きが無い場合には、片割れ良品ブロックテーブル２００から２個の物理ブロック（片割れ良品ブロック）のＰＺＩＢＮを選択し、選択した２個のＰＺＩＢＮに対応する２個の片割れ良否ブロックをダミーペアとして通常の書き込みを行う。
【００８２】
つまり、先に空きブロック検索テーブル１００を用いたペアブロックの空きを検索し、空きブロック検索テーブル１００を用いた検索でペアブロックの空きが検出されなかった場合、すなわちペアブロックの空きが無い場合にだけ、片割れ良品ブロックテーブル２００から選択した２個のＰＺＩＢＮで特定されるダミーペアに通常の書き込みを行う。
【００８３】
したがって、ペアブロックの空きがある場合には、そのペアブロックに対する２プレーン書き込みが行われ、ペアブロックの空きがない場合にだけ、ダミーペアに対する通常（プレーン毎）の書き込みが行われる。
【００８４】
以上説明したように、本実施形態に係るコントローラ３は、２プレーン書き込み機能を備えたフラッシュメモリ２を使用したフラッシュメモリシステム１において、データの書き込み先の空きブロックを検索するときに、ペアブロックの空きだけを検索する空きブロック検索テーブル１００を用いた検索を最初に行い、この空きブロック検索テーブル１００を用いた検索でペアブロックの空きが検出されなかった場合にだけ、片割れ良品ブロックの空きを検索する。このような構成をとることで、ペアブロックの空きがあるときには、優先的に２プレーン書き込みが行われる。また、片割れ良品ブロックの数が増えて、２プレーン書き込みを行うことができるペアブロックの空きを確保することができなくなった場合でも、適宜組み合わせた片割れ良品ブロックにデータを書き込むことができる。
【００８５】
なお、本発明は、上述の実施形態に限らず、種々の変形や応用が可能である。
【００８６】
各物理ゾーンの物理ブロック数は１０２４個に限定されず、自由に設定してよい。
【００８７】
上記の実施形態では、プレーン数は２個であったが、プレーン数は２個に限定されず、偶数個であれば自由に設定してよい。
【００８８】
上記の実施形態では、ダミーペアをプレーン＃０に属する物理ブロックとプレーン＃１に属する物理ブロックとで構成したが、プレーン＃０同士の物理ブロック２個またはプレーン＃１同士の物理ブロック２個でダミーペアを構成してもよい。この場合、たとえば、ＰＺＩＢＮが若い物理ブロックをプレーン＃０に属するものとして扱い、もう一方の物理ブロックをプレーン＃１に属するものとして扱った上で、書き込みデータを割り振ってもよい。
【図面の簡単な説明】
【００８９】
【図１】本発明の実施の形態に係るフラッシュメモリシステムを概略的に示すブロック図である。
【図２】本発明の実施の形態の２プレーンフラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図３】アドレス変換テーブルの構成の一例を示す図である。
【図４】ダミーペアテーブルの構成の一例を示す図である。
【図５】空きブロック検索テーブルの構成の一例を示す図である。
【図６】片割れ良品ブロックテーブルの構成の一例を示す図である。
【図７】従来のフラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図８】２プレーンフラッシュメモリの物理アドレス空間の構造を概略的に示す図である。
【図９】（ａ）は、２プレーンフラッシュメモリの物理ブロックとページとの関係を概略的に示す図である。（ｂ）は、２プレーンフラッシュメモリのページとユーザ領域および冗長領域との関係を概略的に示す図である。
【図１０】２プレーンフラッシュメモリの物理ブロックとページとセクタとの関係を概略的に示す図である。
【図１１】（ａ）は、フラッシュメモリに対して従来の書き込みを行う場合のタイムチャートを示す図である。（ｂ）は、２プレーンフラッシュメモリに対して、２プレーン書き込みを行う場合のタイムチャートを示す図である。
【符号の説明】
【００９０】
１      フラッシュメモリシステム
２      フラッシュメモリ
３      コントローラ
４      ホストシステム
６      マイクロプロセッサ
７      ホストインターフェースブロック
８      ワークエリア
９      バッファ
１０    フラッシュメモリインターフェースブロック
１１    ＥＣＣブロック
１２    ＲＯＭ
１３    外部バス
１４    内部バス
２５    ユーザ領域
２６    冗長領域
１００  空きブロック検索テーブル
２００  片割れ良品ブロックテーブル
３００  ダミーペアテーブル
４００  アドレス変換テーブル
【図１】
2007286892.tif 000003
【図２】
2007286892.tif 000004
【図３】
2007286892.tif 000005
【図４】
2007286892.tif 000006
【図５】
2007286892.tif 000007
【図６】
2007286892.tif 000008
【図７】
2007286892.tif 000009
【図８】
2007286892.tif 000010
【図９】
2007286892.tif 000011
【図１０】
2007286892.tif 000012
【図１１】
2007286892.tif 000013