(57)【要約】  データを記憶することができる複数のセルと、データを管理するための情報である所定の管理情報に基づいて、複数のセルの夫々に書き込む値を２値または多値に決定し、決定した複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、閾値決定部により決定された閾値に基づいて、複数のセルにデータを書き込む書き込み部とを備える。
2009090731.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶することができる複数のセルと、
データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、
前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部と
を備える半導体記憶装置。
【請求項２】
請求項１に記載の半導体記憶装置において、
前記所定の管理情報として、前記データに付加された該データの属性を示す情報である属性情報を検出する検出部をさらに備え、
前記閾値決定部は、前記検出部により検出されたデータの属性情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする半導体記憶装置。
【請求項３】
請求項２に記載の半導体記憶装置において、
前記複数のセルのうち前記データが記憶されたセルの閾値と、該データの属性情報に基づいて、現在の前記閾値決定部により決定される閾値とが一致しない場合、前記複数のセルに書き込まれたデータを読み出し、該データの属性情報に基づいて前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを再度書き込む閾値変換部をさらに備える半導体記憶装置。
【請求項４】
請求項１に記載の半導体記憶装置において、
前記閾値決定部は、前記所定の管理情報として、前記書き込み部により前記複数のセルの夫々に前記データが書き込まれた回数を示す情報に基づいて、該複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする半導体記憶装置。
【請求項５】
請求項１に記載の半導体記憶装置において、
前記閾値決定部は、前記所定の管理情報として、前記複数のセルの空き容量を示す情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする半導体記憶装置。
【請求項６】
請求項１に記載の半導体記憶装置において、
前記複数のセルのうち前記データが記憶されたセルの閾値が前記閾値決定部により決定された閾値と異なる閾値である場合、該セルに書き込む値を２値に決定し、２値に基づいて閾値を決定する閾値補正部をさらに備え、
前記書き込み部は、該セルに再びデータを書き込む場合、閾値補正部により決定された閾値に基づいて前記複数のセルに前記データを書き込むことを特徴とする半導体記憶装置。
【請求項７】
データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する制御装置であって、
データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、
前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部と
を備える制御装置。
【請求項８】
請求項７に記載の制御装置において、
前記所定の管理情報として、前記データに付加された該データの属性を示す情報である属性情報を検出する検出部をさらに備え、
前記閾値決定部は、前記検出部により検出されたデータの属性情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする制御装置。
【請求項９】
請求項８に記載の制御装置において、
前記複数のセルのうち前記データが記憶されたセルの閾値と、該データの属性情報に基づいて、現在の前記閾値決定部により決定される閾値とが一致しない場合、前記複数のセルに書き込まれたデータを読み出し、該データの属性情報に基づいて前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを再度書き込む閾値変換部をさらに備える制御装置。
【請求項１０】
請求項７に記載の制御装置において、
前記閾値決定部は、前記所定の管理情報として、前記書き込み部により前記複数のセルの夫々に前記データが書き込まれた回数を示す情報に基づいて、該複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする制御装置。
【請求項１１】
請求項７に記載の制御装置において、
前記閾値決定部は、前記所定の管理情報として、前記複数のセルの空き容量を示す情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする制御装置。
【請求項１２】
請求項７に記載の制御装置において、
前記複数のセルのうち前記データが記憶されたセルの閾値が前記閾値決定部により決定された閾値と異なる閾値である場合、該セルに書き込む値を２値に決定し、２値に基づいて閾値を決定する閾値補正部をさらに備え、
前記書き込み部は、該セルに再びデータを書き込む場合、閾値補正部により決定された閾値に基づいて前記複数のセルに前記データを書き込むことを特徴とする制御装置。
【請求項１３】
データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する制御方法であって、
データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定ステップと、
前記閾値決定ステップにより決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込みステップと
を実行する制御方法。
【請求項１４】
請求項１３に記載の制御方法において、
前記所定の管理情報として、前記データに付加された該データの属性を示す情報である属性情報を検出する検出ステップをさらに実行し、
前記閾値決定ステップは、前記検出ステップにより検出されたデータの属性情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする制御方法。
【請求項１５】
請求項１４に記載の制御方法において、
前記複数のセルのうち前記データが記憶されたセルの閾値と、該データの属性情報に基づいて、現在の前記閾値決定ステップにより決定される閾値とが一致しない場合、前記複数のセルに書き込まれたデータを読み出し、該データの属性情報に基づいて前記閾値決定ステップにより決定された閾値に基づいて、前記複数のセルに前記データを再度書き込む閾値変換ステップをさらに実行する制御方法。
【請求項１６】
請求項１３に記載の制御方法において、
前記閾値決定ステップは、前記所定の管理情報として、前記書き込みステップにより前記複数のセルの夫々に前記データが書き込まれた回数を示す情報に基づいて、該複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする制御方法。
【請求項１７】
請求項１３に記載の制御方法において、
前記閾値決定ステップは、前記所定の管理情報として、前記複数のセルの空き容量を示す情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする制御方法。
【請求項１８】
請求項１３に記載の制御方法において、
前記複数のセルのうち前記データが記憶されたセルの閾値が前記閾値決定ステップにより決定された閾値と異なる閾値である場合、該セルに書き込む値を２値に決定し、２値に基づいて閾値を決定する閾値補正ステップをさらに実行し、
前記書き込みステップは、該セルに再びデータを書き込む場合、閾値補正ステップにより決定された閾値に基づいて前記複数のセルに前記データを書き込むことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２値または多値によりセルにデータを記憶させる半導体記憶装置、半導体制御装置、半導体制御方法に関するものである。
【背景技術】
【０００２】
近年、ＵＳＢメモリ、フラッシュメモリカード、フラッシュディスクなどの不揮発性メモリによるメモリデバイスが広く普及している。また、これらのメモリデバイスを大容量化させるための技術として、図２８に示すように各メモリセルの電圧の閾値を増やし、例えば４値型メモリセルの場合、“１１”、“１０”、“０１”、“００”の各２ビットデータを電圧の各レベルに対応させることで１つのメモリセルに３値以上を記憶させる多値化技術が知られている。【０００３】
なお、本発明の関連ある従来技術として、大容量であって、高信頼性かつ高速動作を確保できる不揮発性半導体記憶装置およびデータ記憶システムが知られている（例えば、特許文献１参照）。
【特許文献１】特開２００１−２１００８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、多値化技術によって大容量化された多値メモリデバイスは信頼性が低いという問題がある。以下、図２９〜図３１を用いて、多値化技術の問題点を説明する。【０００５】
図２９は２値型メモリセルと４値型メモリセルのマージンを示す図であり、図３０は２値型メモリセルのセル分布と閾値の関係を示す図であり、図３１は４値型メモリセルのセル分布と閾値の関係を示す図である。【０００６】
図２９に示すように２値型メモリセルは、“０”と“１”を判定する電圧の閾値に十分なマージンがあるために、データ反転の可能性が低く、高信頼性を実現している。一方、４値型メモリセルは、“００”、“０１”、“１０”、“１１”を判定する電圧の閾値に十分なマージンがないため、データ反転の可能性が高く、信頼性が低い。【０００７】
具体的には、図３０に示すような２値型メモリセルの場合、閾値Ｒｅｆ−１、Ｒｅｆ−２、Ｒｅｆ−３のうち、Ｒｅｆ−２を閾値として、電圧がＲｅｆ−２よりも低ければ電圧がＬｅｖｅｌ−０であってもＬｅｖｅｌ−１であってもデータは“１”と判定され、電圧がＲｅｆ−２よりも高ければ電圧がＬｅｖｅｌ−２であってもＬｅｖｅｌ−３であってもデータは“０”と判定される。これに対し、図３１に示すような４値型メモリセルの場合、電圧がＲｅｆ−１よりも低ければデータは“１１”と判定され、電圧がＲｅｆ−１より高く且つＲｅｆ−２より低ければデータは“１０”と判定され、電圧がＲｅｆ−２より高く且つＲｅｆ−３より低ければデータは“０１”と判定され、電圧がＲｅｆ−３より高ければデータは“００”と判定される。このため、２値型メモリセルのように電圧がＬｅｖｅｌ−０であってもＬｅｖｅｌ−１であっても同じデータと判定されることがない。例えば、“１１”のデータを書き込むべきメモリセルに、Ｌｅｖｅｌ−１の電圧で印加されると、そのメモリセルのデータは読み出し時に“１０”と判定されてしまう。なお、図３０に示すＲｅｆ−２及びＲｅｆ−３は、４値型メモリセルと比較するために図示しているものであり、２値型メモリセルにおいては実際にはＲｅｆ−２のみが閾値として存在する。【０００８】
上述のように多値メモリデバイスは大容量化を実現しているが記憶されたデータの信頼性は低い。しかし、画像や映像などのユーザデータの大容量化によって、より大容量なメモリデバイスが求められていることから、高い信頼性と大容量を実現するメモリデバイスが必要とされている。【０００９】
本発明は上述した問題点を解決するためになされたものであり、管理情報に基づいて２値または多値によりデータを保存する半導体記憶装置、制御装置、制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決するため、半導体記憶装置は、データを記憶することができる複数のセルと、データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部とを備える。【００１１】
また、制御装置は、データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する装置であって、データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部とを備える。【００１２】
また、制御方法は、データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する方法であって、データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定ステップと、前記閾値決定ステップにより決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込みステップとを実行する。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係る情報処理装置を示す図である。
【図２】実施の形態１に係る情報処理装置のハードウェア構成を示す図である。
【図３】実施の形態１に係るＮＡＮＤフラッシュメモリの構成を示すブロック図である。
【図４】コントロールＩＣの構成を示すブロック図である。
【図５】ＮＡＮＤフラッシュアレイを構成する複数のセルを示す回路図である。
【図６】センスアンプ／コンパレータ回路を示す回路図である。
【図７】センスアンプ／コンパレータ回路を示す回路図である。
【図８】ＮＡＮＤフラッシュアレイに格納されるデータの構成を示す図である。
【図９】設定テーブルを示す図である。
【図１０】ファイルシステム識別処理の動作を示すフローチャートである。
【図１１】実施の形態１に係る書き込み処理の動作を示すフローチャートである。
【図１２】属性情報識別処理の動作を示すフローチャートである。
【図１３】切り替え処理の動作を示すフローチャートである。
【図１４】電源投入時に変換処理を行う処理の動作を示すフローチャートである。
【図１５】アイドル時に変換処理を行う処理の動作を示すフローチャートである。
【図１６】一定時間コマンドがない時に変換処理を行う処理の動作を示すフローチャートである。
【図１７】変換処理の動作を示すフローチャートである。
【図１８】書き換え処理の動作を示すフローチャートである。
【図１９】サブディレクトリチェック処理の動作を示すフローチャートである。
【図２０】２値と多値それぞれの使用量を送信する処理の動作を示すフローチャートである。
【図２１】２値の使用量を多値の使用量に変換してホストに送信する処理の動作を示すフローチャートである。
【図２２】空き容量算出処理の動作を示すフローチャートである。
【図２３】空き容量以上のデータに対してエラーを返す処理の動作を示すフローチャートである。
【図２４】閾値補正処理の動作を示すフローチャートである。
【図２５】実施の形態２における書き込み処理の動作を示すフローチャートである。
【図２６】実施の形態３における書き込み処理の動作を示すフローチャートである。
【図２７】実施の形態４における書き込み処理の動作を示すフローチャートである。
【図２８】２値型メモリセル、４値型メモリセル及び８値型メモリセルに保存されるビットを示す図である。
【図２９】２値型メモリセルと４値型メモリセルのマージンを示す図である。
【図３０】２値型メモリセルのセル分布と閾値の関係を示す図である。
【図３１】４値型メモリセルのセル分布と閾値の関係を示す図である。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態の例について図面を参照しつつ説明する。【００１５】
実施の形態１．
まず、本実施の形態に係る情報処理装置について図面を参照しつつ説明する。図１は、本実施の形態に係る情報処理装置を示す図であり、図２は、本実施の形態に係る情報処理装置のハードウェア構成を示す図である。【００１６】
図１に示すように、本実施の形態に係る情報処理装置１は補助憶装置としてＮＡＮＤフラッシュメモリ１０を搭載するパーソナルコンピュータである。また、図２に示すように、情報処理装置１は、主記憶装置であるメモリ１４、中央演算装置であるＣＰＵ１３を備える。また情報処理装置１は、ＣＰＵ１３、メモリ１４等との間で高速に情報通信および制御を行うチップセット（Ｎｏｒｔｈ  Ｂｒｉｄｇｅ）１１、周辺機器の最も低レベルの入出力を制御するプログラム群を格納したＢＩＯＳ１９を備える。【００１７】
また、情報処理装置１は、上述以外にも、ＣＰＵ１３、メモリ１４に比べ比較的低速な周辺機器間の情報通信および制御を行うチップセット（Ｓｏｕｔｈ  Ｂｒｉｄｇｅ）１２、音源の出力制御をするオーディオボード１７、ＵＳＢ対応機器またはＰＣＩバス対応機器との接続を行うＵＳＢ／ＰＣＩインターフェイス１８、ネットワークボードとの接続を行い外部との通信を可能にするＬＡＮインターフェイス１６、ＮＡＮＤフラッシュメモリ１０を備える。また、ＮＡＮＤフラッシュメモリ１０は不揮発性メモリであるＮＡＮＤフラッシュアレイ１０１とＮＡＮＤフラッシュメモリを制御するＮＡＮＤコントローラ２０を備える。なお、情報処理装置１はパーソナルコンピュータに限らず、例えば携帯電話やＰＤＡなどの記憶装置を必要とする機器であればどんなものであっても良い。【００１８】
次に、本実施の形態に係るＮＡＮＤフラッシュメモリについて説明する。図３は本実施の形態に係るＮＡＮＤフラッシュメモリの構成を示すブロック図である。【００１９】
ＮＡＮＤフラッシュメモリ１０は、ＮＡＮＤフラッシュアレイ１０１（複数のセル、半導体記憶装置）、Ｘデコーダ１０２、Ｙデコーダ１０３、センスアンプ／コンパレータ回路１０４、アドレスレジスタ／カウンタ１０５、コマンドレジスタ１０６、入出力バッファ１０７、コントロールＩＣ２０（制御装置、閾値決定部、検出部、閾値変換部、閾値補正部、書き込み部）を備えるものである。【００２０】
ＮＡＮＤフラッシュアレイ１０１は、複数のセルからなる不揮発性メモリである。また、Ｘデコーダ１０２は、ＮＡＮＤフラッシュアレイ１０１を構成する２次元に配列された複数のセルの行方向の選択を行うものである。また、Ｙデコーダ１０３は、複数のセルの列方向の選択を行うものである。また、センスアンプ／コンパレータ回路１０４は、入力された電圧を所定の閾値に基づいてデジタル情報に変換するものである。また、アドレスレジスタ／カウンタ１０５は、ＮＡＮＤフラッシュアレイ１０１にアクセスする際にアドレスを指定するものである。また、コマンドレジスタ１０６は、受信したコマンドを保持するものである。また、入出力バッファ１０７は、ホストとしての情報処理装置１とのデータ及びアドレスの入出力におけるデータを一時的に記憶する記憶領域である。また、コントロールＩＣ２０は、ＮＡＮＤフラッシュメモリ１０を制御するものである。【００２１】
また、コマンドレジスタ１０６及びコントロールＩＣ２０は、入出力用の制御信号として、コマンドラッチイネーブル信号、アドレスラッチイネーブル信号、チップイネーブル信号、リードイネーブル信号、ライトイネーブル信号、ライトプロテクト信号をホストから受信し、これらの信号の組合せをコマンドとする。また、コントロールＩＣ２０はレディ・ビジー信号及びエラー信号を出力するものである。【００２２】
次にコントロールＩＣについて説明する。図４はコントロールＩＣの構成を示すブロック図である。【００２３】
コントロールＩＣ２０は、ホストインターフェイスユニット２０１、コントロールレジスタ２０２、バッファ２０３、ＥＣＣユニット２０４、ＮＡＮＤインターフェイスユニット２０５、マイクロプロセッサ２０６、ＲＯＭ２０７、ＲＡＭ２０８を備えるものである。【００２４】
また、ホストインターフェイスユニット２０１は、ホストとコマンドの送受信を行うものである。また、コントロールレジスタ２０２は、各種パラメータを保持する領域である。また、ＮＡＮＤインターフェイスユニット２０５は、ＮＡＮＤフラッシュアレイ１０１とコマンドの送受信を行うものである。また、バッファ２０３は、ＮＡＮＤインターフェイスユニット２０５によりＮＡＮＤフラッシュアレイ１０１から読み出されたコマンドと、ホストインターフェイスユニットによりホストから受信したコマンドを一時的に保持する領域である。また、ＥＣＣユニット２０４は、データの書き込み時にＥＣＣを生成し、データの読み出し時にＥＣＣに基づいてデータの誤りを検出し訂正するものである。【００２５】
また、マイクロプロセッサ２０６は、コントロールＩＣ２０全体を制御するものである。また、ＲＯＭ２０７は、マイクロプロセッサ２０６が処理を行うためのファームウェアが記憶されているものである。また、ＲＡＭ２０８は、マイクロプロセッサ２０６が使用するメモリである。【００２６】
次に、ＮＡＮＤフラッシュアレイを構成する複数のセルとセンスアンプ／コンパレータ回路について説明する。図５は、ＮＡＮＤフラッシュアレイを構成する複数のセルを示す回路図である。また、図６及び図７はセンスアンプ／コンパレータ回路を示す回路図である。【００２７】
図５に示すように、ＮＡＮＤフラッシュアレイ１０１は、ビット線とソース線によりセルのコントロールゲートに正の電圧を加え、電子がフローティングゲートに蓄えられることによりデータの書き込みを行う。また、ビット線とソース線は複数のセル単位で接続されているため、ＮＡＮＤフラッシュアレイ１０１は、複数のセルにより構成されたセルグループ単位でデータを書き込む。【００２８】
また、セルに接続されたセンスアンプ／コンパレータ回路１０４は、図６に示すように、設定された閾値（Ｒｅｆ−１〜Ｒｅｆ−３）と入力された電圧を比較して結果を出力するセンスアンプ１０４ａ〜１０４ｃとセンスアンプ１０４ａ〜１０４ｃによる出力結果を比較してデジタルデータに変換するコンパレータ回路１０４ｄにより構成される。また、コンパレータ回路１０４ｄは、コントロールＩＣ２０より送信されるＭＬＣ信号により、２値または４値を切り替えることができ、ＭＬＣ信号を受信しない場合、図３０に示したように、電圧がＲｅｆ−２よりも低いと“１”を出力し、電圧がＲｅｆ−２より高いと“０”を出力するが、理想的な電圧はＲｅｆ−３より高い電圧、またはＲｅｆ−１より低い電圧であり、２値においてそれ以外の電圧が印加されている場合、コンパレータ回路はＲｅｆ−２を閾値としてデータを出力するが、セルが劣化していると見做し、コントロールＩＣ２０に対してエラーを返す。【００２９】
また、コンパレータ回路１０４ｄは、ＭＬＣ信号を受信した場合、図３１に示したように、電圧がＲｅｆ−１より低いと“１１”を出力し、電圧がＲｅｆ−１より高く且つＲｅｆ−２よりも低いと“１０”を出力し、電圧がＲｅｆ−２より高く且つＲｅｆ−３よりも低いと“０１”を出力し、電圧がＲｅｆ−３より高いと“００”を出力する。【００３０】
また、センスアンプ／コンパレータ回路１０４は、図７に示すように、ＭＬＣ信号を受信した場合にのみ、センスアンプ１０４ａ及びセンスアンプ１０４ｃに比較結果を出力させる構成であっても良い。【００３１】
次に、ＮＡＮＤフラッシュアレイに格納されるデータの構成について説明する。図８は、ＮＡＮＤフラッシュアレイに格納されるデータの構成を示す図である。【００３２】
ＮＡＮＤフラッシュメモリ１０において読み書きされるデータは、図８に示すように、データ領域にセクタ単位で格納され、冗長領域にそれぞれのセクタに対応する冗長データであるスペアが格納される。また、セクタＡ〜Ｄとそれぞれのセクタに対応するスペアＡ’〜Ｄ’により構成されるブロック単位でデータが消去される。また、それぞれのセクタのスペアは、対応するセクタの番号を示すデータであるＬＳＮ（Ｌｏｇｉｃａｌ  Ｓｅｃｔｏｒ  Ｎｕｍｂｅｒ）と、バリディティチェックのためのデータであるＤＶ（Ｄａｔａ  Ｖａｌｉｄｉｔｙ）と、セルの劣化によりデータの記録ができない不良ブロックであることを示すＢＢＩ（Ｂａｄ  Ｂｌｏｃｋ  Ｉｎｆｏｍａｔｉｏｎ）と、セクタの誤り訂正符号であるＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ  ｆｏｒ  Ｄａｔａ  Ｆｉｅｌｄ）と、スペアの誤り訂正符号であるＥＣＣＳ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ  ｆｏｒ  Ｓｐａｒｅ  Ｆｉｅｌｄ）と、４値でデータが保存されていることを示すフラグであるＭＬＣフラグ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ  Ｆｌａｇ）と、セクタにデータが書き込まれた回数を示すＷＦ（Ｗｒｉｔｅ  Ｆｒｅｑｕｅｎｃｙ）と、センスアンプ／コンパレータ回路１０４からエラーが返されたセクタであることを示すＥＩが書き込まれている。【００３３】
なお、ＭＬＣフラグはＹまたはＮに設定され、Ｙはセクタが４値で保存されていることを示し、Ｎはセクタが２値で保存されていることを示す。また、ＥＩは０または１に設定され、０は閾値に関してセクタに問題がないことを示し、１は閾値に関してセクタに問題があることを示し、初期状態は０である。【００３４】
次に、ＮＡＮＤフラッシュアレイに格納されている設定テーブルについて説明する。図９は設定テーブルを示す図である。【００３５】
ＮＡＮＤフラッシュアレイ１０１には、図９に示すような設定テーブルが格納されている。設定テーブルはＮＡＮＤフラッシュアレイ１０１のファイルシステムに応じた属性情報と、書き込みモードが対応付けられて格納されている。この書き込みモードは２値での保存を意味するＳＬＣ（Ｓｉｎｇｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）または４値での保存を意味するＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）に設定される。また、この設定テーブルによれば、データの属性情報がＡｒｃｈｉｖｅの場合にのみ、データは４値でＮＡＮＤフラッシュアレイ１０１に保存される。【００３６】
なお、この設定テーブルはファイルシステムとしてＦＡＴ１６に対応したものであるが、様々なファイルシステムに対して用意されているものとする。また、この設定テーブルはコントロールＩＣ２０のＲＯＭ２０７に格納されていても良い。【００３７】
次に、本実施の形態に係るＮＡＮＤフラッシュメモリの動作について説明する。コントローラＩＣ２０のマイクロプロセッサ２０６はデータの属性情報を識別するために、まず、ＮＡＮＤフラッシュアレイのファイルシステムを識別する。図１０はファイルシステム識別処理の動作を示すフローチャートである。【００３８】
まず、マイクロプロセッサ２０６は、ＮＡＮＤインターフェイスユニット２０５にＮＡＮＤフラッシュアレイ１０１からファイルシステムの種類を示す情報であるパーティションテーブルの５thＢｙｔｅを読み込ませ（Ｓ１０１）、５thＢｙｔｅが０１ｈであるかどうかを判断する（Ｓ１０２）。【００３９】
５thＢｙｔｅが０１ｈではない場合（Ｓ１０２，ＮＯ）、マイクロプロセッサ２０６は、５thＢｙｔｅが０４ｈであるかどうかを判断する（Ｓ１０３）。【００４０】
５thＢｙｔｅが０４ｈではない場合（Ｓ１０３，ＮＯ）、マイクロプロセッサ２０６は、５thＢｙｔｅが０６ｈであるかどうかを判断する（Ｓ１０４）。【００４１】
５thＢｙｔｅが０６ｈではない場合（Ｓ１０４，ＮＯ）、マイクロプロセッサ２０６は、５thＢｙｔｅが０７ｈであるかどうかを判断する（Ｓ１０５）。【００４２】
５thＢｙｔｅが０７ｈではない場合（Ｓ１０５，ＮＯ）、マイクロプロセッサ２０６は、５thＢｙｔｅが０Ｃｈであるかどうかを判断する（Ｓ１０６）。【００４３】
５thＢｙｔｅが０Ｃｈではない場合（Ｓ１０６，ＮＯ）、マイクロプロセッサ２０６は、処理を終了する。【００４４】
一方、５thＢｙｔｅが０Ｃｈである場合（Ｓ１０６，ＹＥＳ）、マイクロプロセッサ２０６は、ファイルの属性情報を判断するための設定テーブルとしてＦＡＴ３２に準じた設定テーブルをＮＡＮＤフラッシュアレイ１０１から読み込んでＲＡＭに格納する（Ｓ１１１）。【００４５】
また、ステップＳ１０５の判断において、５thＢｙｔｅが０７ｈである場合（Ｓ１０５，ＹＥＳ）、マイクロプロセッサ２０６は、ファイルの属性情報を判断するための設定テーブルとしてＮＴＦＳに準じた設定テーブルをＮＡＮＤフラッシュアレイ１０１から読み込んでＲＡＭに格納する（Ｓ１１０）。【００４６】
また、ステップＳ１０４の判断において、５thＢｙｔｅが０６ｈである場合（Ｓ１０４，ＹＥＳ）、マイクロプロセッサ２０６は、ファイルの属性情報を判断するための設定テーブルとしてＦＡＴ１６（３２ＭＢ〜２ＧＢ）に準じた設定テーブルをＮＡＮＤフラッシュアレイ１０１から読み込んでＲＡＭに格納する（Ｓ１０９）。【００４７】
また、ステップＳ１０３の判断において、５thＢｙｔｅが０４ｈである場合（Ｓ１０３，ＹＥＳ）、マイクロプロセッサ２０６は、ファイルの属性情報を判断するための設定テーブルとしてＦＡＴ１６（〜３２ＭＢ）に準じた設定テーブルをＮＡＮＤフラッシュアレイ１０１から読み込んでＲＡＭに格納する（Ｓ１０８）。【００４８】
また、ステップＳ１０２の判断において、５thＢｙｔｅが０１ｈである場合（Ｓ１０２，ＹＥＳ）、マイクロプロセッサ２０６は、ファイルの属性情報を判断するための設定テーブルとしてＦＡＴ１２に準じた設定テーブルをＮＡＮＤフラッシュアレイ１０１から読み込んでＲＡＭに格納する（Ｓ１０７）。【００４９】
以上の動作によって、マイクロプロセッサ２０６はＮＡＮＤフラッシュアレイ１０１のファイルシステムを識別し、ファイルシステムに応じた設定テーブルをＲＡＭにセットする。また、上述したファイルシステムは一例であり、ＮＡＮＤフラッシュメモリ１０に格納するＯＳや環境に応じて、コントロールＩＣ２０が対応するファイルシステムがあらかじめ設定されていても良い。また、本実施の形態において、ＮＡＮＤフラッシュアレイ１０１のファイルシステムはＦＡＴ１６（３２ＭＢ〜２ＧＢ）とする。【００５０】
上述の動作により予め適切なファイルシステムが設定されたＮＡＮＤフラッシュメモリ１０にホストからデータの書き込みを指示する書き込みコマンドが送信された場合、マイクロプロセッサ２０６は以下に説明する書き込み処理を実行する。図１１は、書き込み処理の動作を示すフローチャートである。【００５１】
まず、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介してホストから書き込みコマンドを受信すると（Ｓ２０１）、セクタの番号であるＬＳＮを参照し（Ｓ２０２）、ＬＳＮがルートディレクトリ領域を示す番号であるかどうかを判断する（Ｓ２０３）。【００５２】
ＬＳＮがルートディレクトリ領域を示す番号である場合（Ｓ２０３，ＹＥＳ）、マイクロプロセッサ２０６は、後述する属性情報識別処理を実行し（Ｓ２０４，閾値決定ステップ）、設定テーブルにおいて、属性情報が４値に設定されている属性、つまりＡｒｃｈｉｖｅであるかどうかを判断する（Ｓ２０５，閾値決定ステップ）。【００５３】
属性情報がＡｒｃｈｉｖｅである場合（Ｓ２０５，ＹＥＳ）、マイクロプロセッサ２０６はＮＡＮＤインターフェイスユニット２０５を介して、入出力バッファ１０７内にストアされたデータを４値でＮＡＮＤフラッシュアレイ１０１に保存させ（Ｓ２０６，書き込みステップ）、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータのセクタの冗長データであるスペアのＭＬＣフラグをＹに設定し（Ｓ２０７）、入出力バッファ１０７にストアされているディレクトリデータをＮＡＮＤフラッシュアレイ１０１に保存させる（Ｓ２０８）。【００５４】
また、ステップＳ２０５の判断において、属性情報がＡｒｃｈｉｖｅではない場合（Ｓ２０５，ＮＯ）、マイクロプロセッサ２０６は、ＮＡＮＤインターフェイスユニット２０５を介して、入出力バッファ内にストアされたデータを２値でＮＡＮＤフラッシュアレイ１０１に保存させ（Ｓ２１１，書き込みステップ）、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータのＭＬＣフラグをＮに設定し（Ｓ２１２）、入出力バッファ１０７にストアされているディレクトリデータをＮＡＮＤフラッシュアレイ１０１に保存させる（Ｓ２０８）。【００５５】
また、ステップＳ２０３の判断において、ＬＳＮがルートディレクトリ領域を示す番号ではない場合（Ｓ２０３，ＮＯ）、マイクロプロセッサ２０６は、入出力バッファにストアされたデータの１２thＢｙｔｅの５thｂｉｔを参照し（Ｓ２０９）、１２thＢｙｔｅの５thｂｉｔが１であるかどうかを判断する（Ｓ２１０）。【００５６】
１２thＢｙｔｅの５thｂｉｔが１である場合（Ｓ２１０，ＹＥＳ）、マイクロプロセッサ２０６は後述する属性情報識別処理を実行する（Ｓ２０４）。【００５７】
一方、１２thＢｙｔｅの５thｂｉｔが１ではない場合（Ｓ２１０，ＮＯ）、マイクロプロセッサ２０６は、ＮＡＮＤインターフェイスユニット２０５を介して、入出力バッファ内にストアされたデータを２値でＮＡＮＤフラッシュアレイ１０１に保存させ（Ｓ２１１）、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータのＭＬＣフラグをＮに設定し（Ｓ２１２）、入出力バッファ１０７にストアされているディレクトリデータをＮＡＮＤフラッシュアレイ１０１に保存させる（Ｓ２０８）。【００５８】
次に、図１１のステップＳ２０４の処理にあたる属性情報識別処理について説明する。図１２は、属性情報識別処理の動作を示すフローチャートである。なお、図１２において、コントロールＩＣはすでに書き込みコマンドを受信し、データは入出力バッファにストアされているものとする。【００５９】
まず、マイクロプロセッサ２０６は、入出力バッファ１０７にストアされているディレクトリデータの１２thＢｙｔｅを参照し（Ｓ３０１）、１２thＢｙｔｅの１stＢｉｔが１かどうかを判断する（Ｓ３０２）。【００６０】
１stＢｉｔが１ではない場合（Ｓ３０２，ＮＯ）、マイクロプロセッサ２０６は、１２thＢｙｔｅの２ndＢｉｔが１かどうかを判断する（Ｓ３０３）。【００６１】
２ndＢｉｔが１ではない場合（Ｓ３０３，ＮＯ）、マイクロプロセッサ２０６は、１２thＢｙｔｅの３rdＢｉｔが１かどうかを判断する（Ｓ３０４）。【００６２】
３rdＢｉｔが１ではない場合（Ｓ３０４，ＮＯ）、マイクロプロセッサ２０６は、１２thＢｙｔｅの４thＢｉｔが１かどうかを判断する（Ｓ３０５）。【００６３】
４thＢｉｔが１ではない場合（Ｓ３０５，ＮＯ）、マイクロプロセッサ２０６は、１２thＢｙｔｅの５thＢｉｔが１かどうかを判断する（Ｓ３０６）。【００６４】
５thＢｉｔが１ではない場合（Ｓ３０６，ＮＯ）、マイクロプロセッサ２０６は、１２thＢｙｔｅの６thＢｉｔが１かどうかを判断する（Ｓ３０７）。【００６５】
６thＢｉｔが１ではない場合（Ｓ３０７，ＮＯ）、マイクロプロセッサ２０６は、属性情報識別処理を終了する。【００６６】
一方、６thＢｉｔが１である場合（Ｓ３０７，ＹＥＳ）、マイクロプロセッサ２０６は、属性情報をＡｒｃｈｉｖｅとする（Ｓ３１３）。【００６７】
また、ステップＳ３０６の判断において、５thＢｉｔが１である場合（Ｓ３０６，ＹＥＳ）、マイクロプロセッサ２０６は、属性情報をＤｉｒｅｃｔｌｙとする（Ｓ３１２）。【００６８】
また、ステップＳ３０５の判断において、４thＢｉｔが１である場合（Ｓ３０５，ＹＥＳ）、マイクロプロセッサ２０６は、属性情報をＶｏｌｕｍｅ  Ｌａｂｅｌとする（Ｓ３１１）。【００６９】
また、ステップＳ３０４の判断において、３rdＢｉｔが１である場合（Ｓ３０４，ＹＥＳ）、マイクロプロセッサ２０６は、属性情報をＨｉｄｄｅｎとする（Ｓ３１０）。【００７０】
また、ステップＳ３０３の判断において、２ndＢｉｔが１である場合（Ｓ３０３，ＹＥＳ）、マイクロプロセッサ２０６は、属性情報をＳｙｓｔｅｍとする（Ｓ３０９）。【００７１】
また、ステップＳ３０２の判断において、１stＢｉｔが１である場合（Ｓ３０２，ＹＥＳ）、マイクロプロセッサ２０６は、属性情報をＲｅａｄ  Ｏｎｌｙとする（Ｓ３０８）。【００７２】
上述したように、予め設定された属性情報に基づいてデータの保存を２値または４値で行うことによって、例えばシステムデータなどの高い信頼性を必要とするデータを２値で保存しつつ、例えばユーザデータのような高い信頼性を必要としないデータを４値で保存することができ、高い信頼性と大容量を同時に実現することができる。また、データの重要度に応じて２値、４値、８値と段階的に保存方法を切り替えても良い。【００７３】
次に、２値または４値でＮＡＮＤフラッシュアレイに保存されたデータの読み出しにおける２値、４値の切り替え処理について説明する。図１３は、切り替え処理の動作を示すフローチャートである。【００７４】
まず、ホストインターフェイスユニット２０１がホストから読み出しコマンドを受信すると（Ｓ４０１）、マイクロプロセッサ２０６は、ＮＡＮＤインターフェイスユニット２０５を介して、読み出しコマンドにより指定されたＮＡＮＤフラッシュアレイに格納されたデータのＭＬＣフラグを参照し（Ｓ４０２）、ＭＬＣフラグの値がＹであるかどうかを判断する（Ｓ４０３）。【００７５】
ＭＬＣフラグの値がＹである場合（Ｓ４０３，ＹＥＳ）、マイクロプロセッサ２０６は、ＮＡＮＤインターフェイスユニット２０５を介して、ＭＬＣ信号をセンスアンプ／コンパレータ回路１０４に送信する（Ｓ４０４）。【００７６】
一方、ＭＬＣフラグの値がＹではない場合（Ｓ４０３，ＮＯ）、マイクロプロセッサ２０６は、処理を終了する。【００７７】
上述したように、マイクロプロセッサ２０６は、データのＭＬＣフラグを参照して、データの保存方法を判断し、図６及び図７で説明したように４値の場合にＭＬＣ信号をセンスアンプ／コンパレータ回路１０４に送ることで２値と４値を切り替える。また、読み出されたデータは入出力バッファ１０７を介してホストへ送信される。【００７８】
次に、２値で書き込まれたデータを４値に変換する変換処理について図１４〜図１９を用いて説明する。図１４は、電源投入時に変換処理を行う処理の動作を示すフローチャートである。【００７９】
まず、情報処理装置１の電源が投入されると、コントロールＩＣ２０がリセットされ（Ｓ５０１）、リセットされたコントロールＩＣのマイクロプロセッサ２０６は論理・物理マッピングテーブルを生成し（Ｓ５０２）、後述する変換処理を実行する（Ｓ５０３）。【００８０】
図１５は、アイドル時に変換処理を行う処理の動作を示すフローチャートである。【００８１】
まず、マイクロプロセッサ２０６はステータスレジスタを読み込み（Ｓ６０１）、ステータスレジスタがアイドル状態であることを示す値ＲＤＹであるかどうかを判断する（Ｓ６０２）【００８２】
ステータスレジスタがＲＤＹである場合（Ｓ６０２，ＹＥＳ）、マイクロプロセッサ２０６は後述する変換処理を実行する（Ｓ６０３）。【００８３】
一方ステータスレジスタがＲＤＹではない場合（Ｓ６０２，ＮＯ）、マイクロプロセッサは処理を終了する。なお、本実施の形態において、ステータスレジスタの値は情報処理装置１のＣＰＵのステータスレジスタから取得しても、マイクロプロセッサ２０６のステータスレジスタから取得しても構わない。【００８４】
図１６は、一定時間コマンドがない時に変換処理を行う処理の動作を示すフローチャートである。【００８５】
まず、マイクロプロセッサ２０６は、ステータスレジスタを読み込み（Ｓ７０１）、ステータスレジスタがＲＤＹであるかどうかを判断する（Ｓ７０２）。【００８６】
ステータスレジスタがＲＤＹである場合（Ｓ７０２，ＹＥＳ）、マイクロプロセッサ２０６はタイマをスタートして所定の時間待機し（Ｓ７０３）、ステータスレジスタがＲＤＹであるかどうかを判断する（Ｓ７０４）。【００８７】
ステータスレジスタがＲＤＹである場合（Ｓ７０４，ＹＥＳ）、マイクロプロセッサ２０６は変換処理を実行する（Ｓ７０５）。【００８８】
一方、ステータスレジスタがＲＤＹではない場合（Ｓ７０４，ＮＯ）、マイクロプロセッサ２０６は処理を終了する。【００８９】
また、ステップＳ７０２の判断において、ステータスレジスタがＲＤＹではない場合（Ｓ７０２，ＮＯ）、マイクロプロセッサ２０６は処理を終了する。【００９０】
図１４〜図１５に示したように、マイクロプロセッサ２０６は所定の条件をトリガとして変換処理を実行する。図１７は、図１４のステップＳ５０３、図１５のステップＳ６０３、図１６のステップＳ７０５にあたる変換処理の動作を示すフローチャートである。【００９１】
まず、マイクロプロセッサ２０６は、ＮＡＮＤフラッシュアレイ１０１のルートディレクトリ領域から３２Ｂｙｔｅを読み込み（Ｓ８０１）、読み込んだ３２Ｂｙｔｅの１stＢｙｔｅが００ｈまたはＥ５ｈであるかどうかを判断する（Ｓ８０２）。【００９２】
１stＢｙｔｅが００ｈまたはＥ５ｈである場合（Ｓ８０２，ＹＥＳ）、マイクロプロセッサ２０６は、読み込んだ３２Ｂｙｔｅがルートディレクトリ領域の最後尾であるかどうかを判断する（Ｓ８０３）。【００９３】
３２Ｂｙｔｅがルートディレクトリ領域の最後尾である場合（Ｓ８０３，ＹＥＳ）、マイクロプロセッサ２０６は処理を終了する。【００９４】
一方、読み込んだ３２Ｂｙｔｅがルートディレクトリ領域の最後尾ではない場合（Ｓ８０３，ＮＯ）、マイクロプロセッサ２０６は、カレントポインタに３２Ｂｙｔｅ足したものをリードポインタとして（Ｓ８０７）、再びルートディレクトリ領域から３２Ｂｙｔｅ読み込む（Ｓ８０１）。【００９５】
また、ステップ８０２の判断において、１stＢｙｔｅが００ｈまたはＥ５ｈのいずれでもない場合（Ｓ８０２，ＮＯ）、マイクロプロセッサ２０６は後述する書き換え処理を実行し（Ｓ８０４）、１２thＢｙｔｅの５thｂｉｔが１であるかどうかを判断する（Ｓ８０５）。【００９６】
１２thＢｙｔｅの５thｂｉｔが１である場合（Ｓ８０５，ＹＥＳ）、マイクロプロセッサ２０６は後述するサブディレクトリチェック処理を実行し（Ｓ８０６）、読み込んだ３２Ｂｙｔｅがルートディレクトリ領域の最後尾であるかどうかを判断する（Ｓ８０３）。【００９７】
一方、１２thＢｙｔｅの５thｂｉｔが１でない場合（Ｓ８０５，ＮＯ）、マイクロプロセッサ２０６は読み込んだ３２Ｂｙｔｅがルートディレクトリ領域の最後尾であるかどうかを判断する（Ｓ８０３）。【００９８】
次に、上述した変換処理における書き換え処理の動作を説明する。図１８は、書き換え処理の動作を示すフローチャートである。なお、以下に説明する処理は図１７におけるステップＳ８０４にあたり、すでにルートディレクトリ領域から３２Ｂｙｔｅが読み込まれているものとする。【００９９】
まず、マイクロプロセッサ２０６は、２６thＢｙｔｅ〜２７thＢｙｔｅからクラスタアドレスＮを参照し（Ｓ９０１）、クラスタアドレスＮが指定するデータのＭＬＣフラグを読み込み（Ｓ９０２）、ＭＬＣフラグがＹかどうかを判断する（Ｓ９０３）。【０１００】
ＭＬＣフラグがＹである場合（Ｓ９０３，ＹＥＳ）、マイクロプロセッサ２０６は、クラスタアドレスＮが最後のクラスタを示すＦＦＦ８ｈ以上、ＦＦＦＦｈ以下かどうかを判断する（Ｓ９０４）。【０１０１】
クラスタアドレスＮがＦＦＦ８ｈ以上、ＦＦＦＦｈ以下ではない場合（Ｓ９０４，ＹＥＳ）、マイクロプロセッサ２０６はクラスタアドレスＮからデータの次のクラスタアドレスＮを読み込み（Ｓ９０８）、再度ＭＬＣフラグを読み込む（Ｓ９０２）。【０１０２】
一方、クラスタアドレスＮがＦＦＦ８ｈ以上、ＦＦＦＦｈ以下の場合（ＳＳ９０４，ＮＯ）、マイクロプロセッサ２０６は処理を終了する。【０１０３】
また、ステップＳ９０３の判断において、ＭＬＣフラグがＹではない場合（Ｓ９０３，ＮＯ）、マイクロプロセッサ２０６はＮＡＮＤインターフェイスユニット２０５を介して、センスアンプ／コンパレータ回路１０４にフラッシュアレイからデータを読み出させ、読み出したデータを入出力バッファ１０７に格納させ、４値でＮＡＮＤフラッシュアレイ１０１に４値でデータを書き込み（Ｓ９０６）、ＭＬＣフラグをＹに設定し（Ｓ９０７）、クラスタアドレスＮが最後のクラスタを示すＦＦＦ８ｈ以上、ＦＦＦＦｈ以下かどうかを判断する（Ｓ９０４）。【０１０４】
次に、上述した変換処理におけるサブディレクトリチェック処理の動作を説明する。図１９は、サブディレクトリチェック処理の動作を示すフローチャートである。なお、以下に説明する処理は図１７におけるステップＳ８０６にあたり、すでにルートディレクトリ領域あるいは図１９のサブディレクトリ領域から３２Ｂｙｔｅ読み込まれているものとする。【０１０５】
まず、マイクロプロセッサ２０６は、２６thＢｙｔｅ〜２７thＢｙｔｅからクラスタアドレスＮを参照し（Ｓ１００１）、クラスタアドレスＮが指定するサブディレクトリ領域から３２Ｂｙｔｅを読み込み（Ｓ１００２）、１stＢｙｔｅが００ｈまたはＥ５ｈであるかどうかを判断する（Ｓ１００３）。【０１０６】
１stＢｙｔｅが００ｈまたはＥ５ｈである場合（Ｓ１００３，ＹＥＳ）、マイクロプロセッサ２０６は、クラスタアドレスＮがＦＦＦ８ｈ以上、ＦＦＦＦｈ以下かどうかを判断する（Ｓ１００４）。【０１０７】
クラスタアドレスＮがＦＦＦ８ｈ以上、ＦＦＦＦｈ以下である場合（Ｓ１００４，ＹＥＳ）、マイクロプロセッサ２０６は処理を終了する。【０１０８】
一方、クラスタアドレスＮがＦＦＦ８ｈ以上、ＦＦＦＦｈ以下である場合（Ｓ１００４，ＮＯ）、マイクロプロセッサ２０６は、クラスタアドレスＮからサブディレクトリの次のクラスタアドレスＮを読み込み（Ｓ１００７）、再度サブディレクトリ領域から３２Ｂｙｔｅを読み込む（Ｓ１００２）。【０１０９】
また、ステップＳ１００３の判断において、１stＢｙｔｅが００ｈまたはＥ５ｈではない場合（Ｓ１００３，ＮＯ）、マイクロプロセッサ２０６は上述した書き換え処理を実行し（Ｓ１００５）、１２thＢｙｔｅの５thｂｉｔが１であるかどうかを判断する（Ｓ１００６）。【０１１０】
１２thＢｙｔｅの５thｂｉｔが１である場合（Ｓ１００６，ＹＥＳ）、マイクロプロセッサ２０６は、２６thＢｙｔｅ〜２７thＢｙｔｅから次のサブディレクトリのクラスタアドレスＮを読み込む（Ｓ１００１）。【０１１１】
一方、１２thＢｙｔｅの５thｂｉｔが１でない場合（Ｓ１００６，ＮＯ）、マイクロプロセッサ２０６は、クラスタアドレスＮがＦＦＦ８ｈ以上、ＦＦＦＦｈ以下かどうかを判断する（Ｓ１００４）。【０１１２】
上述した処理によって、ＮＡＮＤフラッシュメモリ１０は２値で書き込まれたデータを４値で書き込み直すことができる。なお、２値で書き込まれたデータを４値で書き込み直す場合について説明したが、４値で書き込まれたデータを２値で書き込み直しても良い。【０１１３】
次に、本実施の形態に係るＮＡＮＤフラッシュメモリの使用量をホストへ送信する処理について説明する。図２０は、２値と多値それぞれの使用量を送信する処理の動作を示すフローチャートである。【０１１４】
まず、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介してホストから読み出しコマンドを受信すると（Ｓ１１０１）、ＬＳＮをカウントする変数ＳＮ、２値で保存されたセクタをカウントする変数Ｓ、４値で保存されたセクタをカウントする変数Ｍのそれぞれに０をセットし（Ｓ１１０２）、ＮＡＮＤインターフェイスユニット２０５を介してＬＳＮＳＮのＭＬＣフラグを読み込み（Ｓ１１０３）、ＭＬＣフラグがＹかどうかを判断する（Ｓ１１０４）。【０１１５】
ＭＬＣフラグがＹではない場合（Ｓ１１０４，ＮＯ）、マイクロプロセッサ２０６は、ＭＬＣフラグがＮかどうかを判断する（Ｓ１１０５）。【０１１６】
ＭＬＣフラグがＮではない場合（ＳＳ１１０５，ＮＯ）、マイクロプロセッサ２０６は変数ＳＮに１を加算し（Ｓ１１０６）、変数ＳＮの値がメモリセルアレイ１０１のセクタの最大値より大きいかどうかを判断する（Ｓ１１０７）。【０１１７】
変数ＳＮの値がメモリセルアレイ１０１のセクタの最大値より大きい場合（Ｓ１１０７，ＹＥＳ）、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介して変数Ｍの値をホストへ送信し（Ｓ１１０８）、ホストインターフェイスユニット２０１を介して変数Ｓの値をホストへ送信する（Ｓ１１０９）。【０１１８】
一方、変数ＳＮの値がメモリセルアレイ１０１のセクタの最大値以下である場合（Ｓ１１０７，ＮＯ）、マイクロプロセッサ２０６は、再度ＮＡＮＤインターフェイスユニット２０５を介してＬＳＮＳＮのＭＬＣフラグを読み込む（Ｓ１１０３）。【０１１９】
また、ステップＳ１１０５の判断において、ＭＬＣフラグがＮである場合（Ｓ１１０５，ＹＥＳ）、マイクロプロセッサ２０６は、変数Ｓに１を加算し（Ｓ１１１１）、変数ＳＮに１を加算する（Ｓ１１０６）。【０１２０】
また、ステップＳ１１０４の判断において、ＭＬＣフラグがＹである場合（Ｓ１１０４，ＹＥＳ）、マイクロプロセッサ２０６は、変数Ｍに１を加算し（１１１０）、変数ＳＮに１を加算する（Ｓ１１０６）。【０１２１】
上述のように２値で書き込まれたセクタと、４値で書き込まれたセクタのそれぞれの数を送信することで、ホストは変数Ｍ、変数Ｓ、セクタの情報量に基づいて、２値、４値それぞれのＮＡＮＤフラッシュメモリ１０の使用量を算出することができる。また、本実施の形態に係るＮＡＮＤフラッシュメモリ１０は２値の使用量を多値の使用量に変換してホストに送信することができる。図２１は、２値の使用量を多値の使用量に変換してホストに送信する処理の動作を示すフローチャートである。なお、ステップＳ１１０１〜ステップＳ１１１１については、図２０と同様の処理であるため説明を省略し、ステップＳ１１１２〜ステップＳ１１１４について説明する。【０１２２】
ステップＳ１１０７の判断において、変数ＳＮの値がメモリセルアレイ１０１のセクタの数より大きい場合（Ｓ１１０７，ＹＥＳ）、マイクロプロセッサ２０６は、変数Ｓの値を２倍し（Ｓ１１１２）、変数Ｍの値に変数Ｓの値を加算し（Ｓ１１１３）、ホストインターフェイスユニット２０１を介して変数Ｍの値をホストへ送信する（Ｓ１１１４）。【０１２３】
上述のように、２値でデータが保存されているセクタの数を２倍し、４値でデータが保存されているセクタの数に加算することで、４値の使用量を算出することができる。また、４値でデータが保存されているセクタの数を２で割り、２値でデータが保存されているセクタの数に加算することで、２値の使用量を算出することができる。【０１２４】
次に、空き容量算出処理について説明する。図２２は、空き容量算出処理の動作を示すフローチャートである。【０１２５】
まず、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介して、読み出しコマンドをホストから受信し（Ｓ１２０１）、ＬＳＮをカウントする変数ＳＮ、データバリディティがＶａｌｉｄであるセクタをカウントする変数Ｖ、空き容量を示す変数Ｅのそれぞれに０をセットし（Ｓ１２０２）、ＮＡＮＤインターフェイスユニット２０５を介してＬＳＮＳＮのデータバリディティを読み込み（Ｓ１２０３）、データバリディティがＶａｌｉｄかどうかを判断する（Ｓ１２０４）。【０１２６】
データバリディティがＶａｌｉｄではない場合（Ｓ１２０４，ＮＯ）、マイクロプロセッサ２０６は、変数ＳＮに１を加算し（Ｓ１２０５）、変数ＳＮの値がメモリセルアレイ１０１のセクタの総数より大きいかどうかを判断する（Ｓ１１０６）。【０１２７】
変数ＳＮの値がメモルセルアレイ１０１のセクタの最大値より大きい場合（Ｓ１２０６，ＹＥＳ）、セクタの最大値からＶの値を減算してＥの値とし（Ｓ１２０７）、Ｅの値を２で割り（Ｓ１２０８）、Ｅの値をホストへ送信する（Ｓ１２０９）。【０１２８】
一方、変数ＳＮの値がメモリセルアレイ１０１のセクタの最大値以下である場合（Ｓ１２０６，ＮＯ）、マイクロプロセッサ２０６は、再度ＮＡＮＤインターフェイスユニット２０５を介してＬＳＮＳＮのデータバリディティを読み込む（Ｓ１２０３）。【０１２９】
また、ステップ１２０４において、データバリディティがＶａｌｉｄである場合（Ｓ１２０４，ＹＥＳ）、マイクロプロセッサ２０６は、Ｖの値に１を加算し（Ｓ１２１０）、ＳＮの値に１を加算する（Ｓ１２０５）。【０１３０】
上述の動作によりＮＡＮＤフラッシュメモリ１０は、ＮＡＮＤフラッシュアレイ１０１に２値で書き込む場合の空き容量を算出することができる。この２値で書き込む場合の空き容量を利用することによって、２値でデータが書き込まれる場合に空き容量以上の情報量のデータが書き込まれる場合に、ホストに対してエラーを送信することができる。図２３は空き容量以上のデータに対してエラーを返す処理の動作を示すフローチャートである。【０１３１】
まず、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介して、ホストから書き込みコマンドを受信し（Ｓ１３０１）、空き容量をチェックし（Ｓ１３０２）、変数Ｅに空き容量を代入し（Ｓ１３０３）、ホストより送信されたデータがＥの値より大きいかどうかを判断する（Ｓ１３０４）。【０１３２】
ホストより送信されたデータがＥの値以下である場合（Ｓ１３０４，ＮＯ）、マイクロプロセッサ２０６は、ＮＡＮＤインターフェイスユニット２０５を介して、ＮＡＮＤフラッシュアレイ１０１にデータを書き込む（Ｓ１３０５）。【０１３３】
一方、ホストより送信されたデータがＥの値よりも大きい場合（Ｓ１３０４，ＹＥＳ）、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介して、ホストにエラーを送信する（Ｓ１３０６）。【０１３４】
以上の動作によって、本実施の形態に係るＮＡＮＤフラッシュメモリ１０は、書き込むデータの属性情報に基づいて２値または４値での書き込みを切り替えることができる。【０１３５】
次に、閾値補正処理について説明する。この閾値補正処理は、例えば２値に設定していたある属性に対して、４値に設定し、以前に書き込まれたデータに関しては、現在の設定と食い違いが生じるような場合、書き込まれたデータの属性とＭＬＣフラグと現在の設定テーブルに基づいて、２値で書き込まれたデータを４値で書き込みなおすものである。図２４は、閾値補正処理の動作を示すフローチャートである。【０１３６】
まず、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介して、ホストから補正コマンドを受信し（Ｓ１７０１）、ＮＡＮＤフラッシュアレイ１０１に書き込まれているデータを参照し（Ｓ１７０２）、データがディレクトリデータかどうかを判断する（Ｓ１７０３）。【０１３７】
データがディレクトリデータだった場合（Ｓ１７０３，ＹＥＳ）、マイクロプロセッサ２０６は、データの属性情報を参照し（Ｓ１７０４）、属性が現在の設定において４値で書き込むべき属性、つまりＡｒｃｈｉｖｅであるかどうかを判断する（Ｓ１７０５，閾値変換ステップ）。【０１３８】
属性がＡｒｃｈｉｖｅではない場合（Ｓ１７０５，ＮＯ）、マイクロプロセッサ２０６は、ディレクトリデータをＮＡＮＤフラッシュアレイ１０１に書き込ませる（Ｓ１７０６）。【０１３９】
一方、属性がＡｒｃｈｉｖｅである場合（Ｓ１７０５，ＹＥＳ）、マイクロプロセッサ２０６は、データのＭＬＣフラグを参照し（Ｓ１７０８，閾値変換ステップ）、ＭＬＣフラグがＹに設定されているかどうかを判断する（Ｓ１７０９，閾値変換ステップ）。【０１４０】
ＭＬＣフラグがＹに設定されていない場合（Ｓ１７０９，ＮＯ）、マイクロプロセッサ１７０９は、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータを入出力バッファ１０７にストアし（Ｓ１７１０）、ストアされたデータをＮＡＮＤフラッシュアレイ１０１に４値で書き込ませ（Ｓ１７１１，閾値変換ステップ）、書き込んだデータのＭＬＣフラグをＹに設定し（Ｓ１７１２）、ディレクトリデータをＮＡＮＤフラッシュアレイ１０１に書き込ませる（Ｓ１７０６）。【０１４１】
一方、ＭＬＣフラグがＹに設定されている場合（Ｓ１７０９，ＹＥＳ）、マイクロプロセッサ２０６は、ディレクトリデータをＮＡＮＤフラッシュアレイ１０１に書き込ませる（Ｓ１７０６）。【０１４２】
また、ステップＳ１７０３の判断において、データがディレクトリデータではない場合、マイクロプロセッサ２０６は、データをＮＡＮＤフラッシュアレイ１０１に２値で書き込ませる（Ｓ１７０７）。【０１４３】
上述のように、属性とＭＬＣフラグを比較することによって、例えば、２値で書き込むように設定されていた属性情報に対して、４値で書き込むように設定を変更した場合に、データが現在の設定に準じた値でＮＡＮＤフラッシュアレイ１０１に保存される。なお、図２４においては、２値のデータを４値に書き直す場合について説明したが、同様に２値で書き込むべきデータが４値で書き込まれていた場合、４値で書き込まれたデータを読み込み、２値でＮＡＮＤフラッシュアレイ１０１に保存する。【０１４４】
実施の形態２．
実施の形態１に係るＮＡＮＤフラッシュメモリは、属性情報に基づいて２値と４値を切り替えたが、本実施の形態に係るＮＡＮＤフラッシュメモリは、ＮＡＮＤフラッシュアレイの空き容量に基づいて２値と４値を切り替える。なお、本実施の形態に係るＮＡＮＤフラッシュメモリの構成は、実施の形態１に係るＮＡＮＤフラッシュメモリと同様であり、動作のみが異なる。以下、実施の形態１に係るＮＡＮＤフラッシュメモリと異なる動作について説明する。図２５は、実施の形態２における書き込み処理の動作を示すフローチャートである。なお、本実施の形態において、ＮＡＮＤフラッシュメモリの容量は２値で３２ＭＢとし、２値での空き容量が１６ＭＢ以下になった場合に、セルに書き込む値を４値に切り替えるものとする。【０１４５】
まず、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介してホストから書き込みコマンドを受信すると（Ｓ１４０１）、図２２に示した空き容量算出処理を実行し（Ｓ１４０２）、空き容量が１６ＭＢより多いかどうかを判断する（Ｓ１４０３，閾値決定ステップ）。【０１４６】
空き容量が１６ＭＢより多い場合（Ｓ１４０３，ＹＥＳ）、マイクロプロセッサ２０６は、入出力バッファ１０７内にストアされたデータをＮＡＮＤフラッシュアレイに２値で書き込ませ（Ｓ１４０４，書き込みステップ）、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータのセクタの冗長データであるスペアのＭＬＣフラグをＮに設定する（Ｓ１４０５）。【０１４７】
一方、空き容量が１６ＭＢ以下である場合（Ｓ１４０３，ＮＯ）、マイクロプロセッサ２０６は、入出力バッファ１０７内にストアされたデータをＮＡＮＤフラッシュアレイに４値で書き込ませ（Ｓ１４０７，書き込みステップ）、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータのセクタの冗長データであるスペアのＭＬＣフラグをＹに設定する（Ｓ１４０８）。【０１４８】
以上の動作によって、本実施の形態に係るＮＡＮＤフラッシュメモリ１０は、空き容量に基づいて、２値と４値を切り替え、空き容量が一定量より多い場合は信頼性の高い２値によってデータを書き込み、空き容量が一定量以下の場合はより大容量でデータを保存できる４値によってデータを書き込むことにより、信頼性と大容量を同時に実現することができる。【０１４９】
実施の形態３．
実施の形態２に係るＮＡＮＤフラッシュメモリは、空き容量に基づいて２値と４値を切り替えたが、本実施の形態に係るＮＡＮＤフラッシュメモリは、ＮＡＮＤフラッシュアレイのセルにおける書き込み回数に基づいて２値と４値とを切り替える。なお、本実施の形態に係るＮＡＮＤフラッシュメモリの構成は、実施の形態１及び実施の形態２に係るＮＡＮＤフラッシュメモリと同様であり、動作のみが異なる。以下、実施の形態２に係るＮＡＮＤフラッシュメモリと異なる動作について説明する。図２６は、実施の形態３における書き込み処理の動作を示すフローチャートである。なお、本実施の形態において、説明上、ＮＡＮＤフラッシュメモリの書き込み回数の限度は４０００回とし、書き込み回数が２０００より少なければ４値で書き込み、書き込み回数が２０００以上になった場合、セルに書き込む値を２値に切り替えるものとする。【０１５０】
まず、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介してホストから書き込みコマンドを受信すると（Ｓ１５０１）、図８に示した書き込み回数を示す情報であるＷＦを参照し（Ｓ１５０２）、書き込み回数が２０００回より少ないどうかを判断する（Ｓ１５０３，閾値決定ステップ）。【０１５１】
書き込み回数が２０００回より少ない場合（Ｓ１５０３，ＹＥＳ）、マイクロプロセッサ２０６は、入出力バッファ１０７内にストアされたデータをＮＡＮＤフラッシュアレイに４値で書き込ませ（Ｓ１５０４，書き込みステップ）、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータのセクタの冗長データであるスペアのＭＬＣフラグをＹに設定し（Ｓ１５０５）、ＭＦに１を加算する（Ｓ１５０６）。【０１５２】
一方、書き込み回数が２０００回以上である場合（Ｓ１５０３，ＮＯ）、マイクロプロセッサ２０６は、入出力バッファ１０７内にストアされたデータをＮＡＮＤフラッシュアレイに２値で書き込ませ（Ｓ１５０７，書き込みステップ）、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータのセクタの冗長データであるスペアのＭＬＣフラグをＹに設定し（Ｓ１５０８）、ＭＦに１を加算する（Ｓ１５０６）。【０１５３】
以上の動作によって、本実施の形態に係るＮＡＮＤフラッシュメモリ１０は、書き込み回数に基づいて、２値と４値を切り替えることにより、書き込み回数が少ないセルには４値で書き込み、書き込み回数が多いセル、つまり劣化が進んだセルには信頼性の高い２値に書き込むことにより、信頼性と大容量を同時に実現することができる。【０１５４】
実施の形態４．
実施の形態３に係るＮＡＮＤフラッシュメモリは、書き込み回数に基づいて２値と４値を切り替えたが、本実施の形態に係るＮＡＮＤフラッシュメモリは、ＮＡＮＤフラッシュアレイのセルのエラー状況に基づいて２値と４値とを切り替える。なお、本実施の形態に係るＮＡＮＤフラッシュメモリの構成は、実施の形態１、実施の形態２及び実施の形態３に係るＮＡＮＤフラッシュメモリと同様であり、動作のみが異なる。以下、実施の形態３に係るＮＡＮＤフラッシュメモリと異なる動作について説明する。図２７は、実施の形態４における書き込み処理の動作を示すフローチャートである。なお、本実施の形態におけるエラーは、上述したデータの読み出しにおいて、センスアンプ／コンパレータ回路により返されたエラーを指し、このエラーを受けたマイクロプロセッサ２０６は、エラーを受けたセクタの冗長データであるスペアのＥＩを１に設定する。【０１５５】
まず、マイクロプロセッサ２０６は、ホストインターフェイスユニット２０１を介してホストから書き込みコマンドを受信すると（Ｓ１６０１）、図８に示したエラー状況を示す情報であるＥＩを参照し（Ｓ１６０２）、ＥＩが０であるかどうかを判断する（Ｓ１６０３，閾値決定ステップ）。【０１５６】
ＥＩが０である場合（Ｓ１６０３，ＹＥＳ）、マイクロプロセッサ２０６は、入出力バッファ１０７内にストアされたデータをＮＡＮＤフラッシュアレイに４値で書き込ませ（Ｓ１６０４，書き込みステップ）、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータのセクタの冗長データであるスペアのＭＬＣフラグをＹに設定する（Ｓ１６０５）。【０１５７】
一方、ＥＩが０ではない場合（Ｓ１６０３，ＮＯ）、マイクロプロセッサ２０６は、入出力バッファ１０７内にストアされたデータをＮＡＮＤフラッシュアレイに２値で書き込ませ（Ｓ１６０６，書き込みステップ）、ＮＡＮＤフラッシュアレイ１０１に書き込まれたデータのセクタの冗長データであるスペアのＭＬＣフラグをＮに設定する（Ｓ１５０７）。【０１５８】
以上の動作によって、本実施の形態に係るＮＡＮＤフラッシュメモリ１０は、エラーがないセルには４値でデータを書き込み、エラーがあるセル、つまり劣化が進んだセルに対しては２値でデータを書き込むことにより、信頼性と大容量を同時に実現することができる。【０１５９】
なお、上述した実施の形態１、実施の形態２、実施の形態３及び実施の形態４において、上述した処理をコントロールＩＣ２０のマイクロプロセッサ２０６が実行しているが、情報処理装置１が備えるＣＰＵがこれらの処理を実行しても構わない。その際、処理結果としての各種パラメータはコントロールＩＣ２０のコントロールレジスタ２０２に一時的に格納されるものとする。また、２値と４値の切り替えは一例であって、例えば２値と８値などであっても良い。
【産業上の利用可能性】
【０１６０】
以上説明したように、本発明を適用する事で、管理情報に基づいて２値または多値によりデータを保存することができる。
【図１】
2009090731.tif 000003
【図２】
2009090731.tif 000004
【図３】
2009090731.tif 000005
【図４】
2009090731.tif 000006
【図５】
2009090731.tif 000007
【図６】
2009090731.tif 000008
【図７】
2009090731.tif 000009
【図８】
2009090731.tif 000010
【図９】
2009090731.tif 000011
【図１０】
2009090731.tif 000012
【図１１】
2009090731.tif 000013
【図１２】
2009090731.tif 000014
【図１３】
2009090731.tif 000015
【図１４】
2009090731.tif 000016
【図１５】
2009090731.tif 000017
【図１６】
2009090731.tif 000018
【図１７】
2009090731.tif 000019
【図１８】
2009090731.tif 000020
【図１９】
2009090731.tif 000021
【図２０】
2009090731.tif 000022
【図２１】
2009090731.tif 000023
【図２２】
2009090731.tif 000024
【図２３】
2009090731.tif 000025
【図２４】
2009090731.tif 000026
【図２５】
2009090731.tif 000027
【図２６】
2009090731.tif 000028
【図２７】
2009090731.tif 000029
【図２８】
2009090731.tif 000030
【図２９】
2009090731.tif 000031
【図３０】
2009090731.tif 000032
【図３１】
2009090731.tif 000033
【手続補正書】
【提出日】平成22年4月7日(2010.4.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを記憶することができる複数のセルと、
データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、
前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部と
を備える半導体記憶装置。
【請求項２】
請求項１に記載の半導体記憶装置において、
前記所定の管理情報として、前記データに付加された該データの属性を示す情報である属性情報を検出する検出部をさらに備え、
前記閾値決定部は、前記検出部により検出されたデータの属性情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする半導体記憶装置。
【請求項３】
請求項２に記載の半導体記憶装置において、
前記複数のセルのうち前記データが記憶されたセルの閾値と、該データの属性情報に基づいて、現在の前記閾値決定部により決定される閾値とが一致しない場合、前記複数のセルに書き込まれたデータを読み出し、該データの属性情報に基づいて前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを再度書き込む閾値変換部をさらに備える半導体記憶装置。
【請求項４】
請求項１に記載の半導体記憶装置において、
前記閾値決定部は、前記所定の管理情報として、前記書き込み部により前記複数のセルの夫々に前記データが書き込まれた回数を示す情報に基づいて、該複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする半導体記憶装置。
【請求項５】
請求項１に記載の半導体記憶装置において、
前記閾値決定部は、前記所定の管理情報として、前記複数のセルの空き容量を示す情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定することを特徴とする半導体記憶装置。
【請求項６】
データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する制御装置であって、
データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定部と、
前記閾値決定部により決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込み部と
を備える制御装置。
【請求項７】
データを記憶することができる複数のセルにより構成される半導体記憶装置を制御する制御方法であって、
データを管理するための情報である所定の管理情報に基づいて、前記複数のセルの夫々に書き込む値を２値または多値に決定し、決定した前記複数のセルの夫々に書き込む値に基づいて閾値を決定する閾値決定ステップと、
前記閾値決定ステップにより決定された閾値に基づいて、前記複数のセルに前記データを書き込む書き込みステップと
を実行する制御方法。
【国際調査報告】
2009090731.tif 000034
2009090731.tif 000035
2009090731.tif 000036
2009090731.tif 000037