(57)【特許請求の範囲】
【請求項１】
フラッシュメモリに対してデータの書き込み及び消去を行うフラッシュメモリコントローラであって、
前記フラッシュメモリに対してデータの書込み又は消去の実行を開始した後に前記書込み又は消去の実行が終了したか否かを示す情報を前記フラッシュメモリから取得するための取得信号を出力するタイミングの間隔であるポーリング間隔を記憶するポーリング間隔記憶部と、
前記ポーリング間隔記憶部に、前記ポーリング間隔を設定する設定部と、
前記フラッシュメモリに対して書込みコマンド又は消去コマンドを送信し、その後、前記ポーリング間隔に従って、前記書込み又は消去の実行が終了したことを表す情報を受信するまで、前記取得信号を出力するポーリング処理部と、
前記取得信号の出力を開始させる時間の基準となる開始基準時間情報を記憶する開始基準記憶部と、
前記フラッシュメモリに対するデータ書込み又は消去の実行に要する実行時間を測定する測定部と、
前記測定された実行時間を開始基準時間情報として前記開始基準記憶部に格納する開始基準設定部と
を更に有し、
前記ポーリング処理部は、前記開始基準記憶部に記憶された前記開始基準時間情報に基づいて、前記取得信号の出力を開始し、
前記フラッシュメモリは、ＭＬＣ（Multi  Level  Cell）型のフラッシュメモリであり、複数のブロックを有し、各ブロックが、複数のページを有し、
前記開始基準設定部は、前記フラッシュメモリにおけるページペアのうちデータ書込みの実行に要する時間が短いページについての前記実行時間を前記開始基準記憶部に格納する、
フラッシュメモリコントローラ。
【請求項２】
前記フラッシュメモリは複数個あり、
前記開始基準記憶部は、前記フラッシュメモリ毎に存在し、自分に対応する前記フラッシュメモリについての前記実行時間を開始基準時間情報として記憶し、
前記ポーリング処理部は、複数の開始基準記憶部のうちの前記書込みコマンド又は消去コマンドの送信先のフラッシュメモリに対応する開始基準記憶部から、開始基準時間情報を取得し、当該開始基準時間情報に基づいて、前記書込みコマンド又は消去コマンドの送信先のフラッシュメモリに対する前記取得信号の出力を開始する、
請求項１記載のフラッシュメモリコントローラ。
【請求項３】
前記フラッシュメモリは複数個あり、
前記ポーリング間隔記憶部は、前記複数のフラッシュメモリに共通である、
請求項１又は２に記載のフラッシュメモリコントローラ。
【請求項４】
前記測定部は、前記開始基準時間情報を設定又は変更する場合に、前記フラッシュメモリについて前記実行時間を測定し、前記開始基準時間情報を設定又は変更しない場合には、前記フラッシュメモリについて前記実行時間を測定しない、
請求項１乃至３のいずれか一項に記載のフラッシュメモリコントローラ。
【請求項５】
請求項１乃至４のうちのいずれか一項に記載のフラッシュメモリコントローラと、
前記フラッシュメモリコントローラに接続されたフラッシュメモリと
を有するフラッシュメモリシステム。
【請求項６】
フラッシュメモリに対してデータの書込み又は消去の実行を開始した後に前記書込み又は消去の実行が終了したか否かを示す情報を前記フラッシュメモリから取得するための取得信号を出力するタイミングの間隔であるポーリング間隔をポーリング間隔記憶部に設定する設定ステップと、
前記フラッシュメモリに対して書込みコマンド又は消去コマンドを送信し、その後、前記ポーリング間隔に従って、前記書込み又は消去の実行が終了したことを表す情報を受信するまで、前記取得信号を出力するポーリング処理ステップと、
前記フラッシュメモリに対するデータ書込み又は消去の実行に要する実行時間を測定する測定ステップと、
前記取得信号の出力を開始させる時間の基準となる開始基準時間情報を記憶する開始基準記憶部に、前記測定された実行時間を開始基準時間情報として前記開始基準記憶部に格納する開始基準設定ステップと
を有し、
前記ポーリング処理ステップでは、前記開始基準記憶部に記憶された前記開始基準時間情報に基づいて、前記取得信号の出力を開始し、
前記フラッシュメモリは、ＭＬＣ（Multi  Level  Cell）型のフラッシュメモリであり、複数のブロックを有し、各ブロックが、複数のページを有し、
前記開始基準設定ステップでは、前記フラッシュメモリにおけるページペアのうちデータ書込みの実行に要する時間が短いページについての前記実行時間を前記開始基準記憶部に格納する、
フラッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリの制御に関する。
【背景技術】
【０００２】
フラッシュメモリコントローラが、フラッシュメモリに対して、データの書込み（Ｐｒｏｇｒａｍ）や、イレース（Ｅｒａｓｅ）等のコマンドを発行すると、フラッシュメモリは、データ書込みや、イレース等のコマンドに対応する動作を実行し、その間Ｂｕｓｙ状態となる。近年、フラッシュメモリの容量が増加しているために、コマンドに対応する処理の時間が長くなってきており、フラッシュメモリがＢｕｓｙ状態となる時間（Ｂｕｓｙ時間）が長時間化している。特に、データの書込みや、イレースの場合においては、ｍｓのオーダーでＢｕｓｙ状態となっている。
【０００３】
フラッシュメモリコントローラは、フラッシュメモリがＢｕｓｙ状態でなくなった場合に、別のデータの書込みや、イレース等のコマンドを発行して、フラッシュメモリに動作を実行させるようにする。このため、フラッシュメモリコントローラは、フラッシュメモリがＢｕｓｙ状態でないことを検出する必要がある。
【０００４】
フラッシュメモリのＢｕｓｙ状態を検出する方法としては、例えば、（１）フラッシュメモリの外部ピン（ＦＲＤＹピン）から出力されるＦＲＤＹ信号に基づいて、フラッシュメモリがＢｕｓｙ状態でなくなったことを検出する方法や、（２）フラッシュメモリに対して、ステータスコマンドを発行し、ステータスリードを逐次行うことにより、フラッシュメモリから送信されるステータスデータ中のＢｕｓｙビットを参照してフラッシュメモリがＢｕｓｙ状態であるか否かを検出する方法がある。
【０００５】
例えば、特許文献１には、Ｂｕｓｙ状態を検出するためにフラッシュメモリの書込み又は消去の終了確認を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−２２７７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
例えば、上記（１）の方法では、フラッシュメモリコントローラに、ＦＲＤＹ信号を検出するためのピンを用意する必要があり、例えば、フラッシュメモリコントローラで、複数のフラッシュメモリを制御する場合には、多数のピンを用意しなければならないという問題がある。また、上記（２）の方法では、フラッシュメモリの状態を取得するステータスリードを、例えばポーリングにより複数回繰り返す必要があり、消費電力が大きくなってしまうという問題がある。特に、データ書込みや、イレースを実行している際には、その実行時間が長いので、無駄な消費電力がより大きくなるという問題がある。
【０００８】
本発明の目的は、フラッシュメモリコントローラに必要なピン数を抑えつつ、消費電力を低減することのできる技術を提供することにある。
【課題を解決するための手段】
【０００９】
第１の観点に従うフラッシュメモリコントローラは、フラッシュメモリに対してデータの書込み及び消去を行うフラッシュメモリコントローラであって、
前記フラッシュメモリに対してデータの書込み又は消去の実行を開始した後に前記書込み又は消去の実行が終了したか否かを示す情報を前記フラッシュメモリから取得するための取得信号を出力するタイミングの間隔であるポーリング間隔を記憶するポーリング間隔記憶部と、
前記ポーリング間隔記憶部に、前記ポーリング間隔を設定する設定部と、
前記フラッシュメモリに対して書込みコマンド又は消去コマンドを送信し、その後、前記ポーリング間隔に従って、前記書込み又は消去の実行が終了したことを表す情報を受信するまで、前記取得信号を出力するポーリング処理部と
を有する。
【００１０】
第２の観点に従うフラッシュメモリコントローラは、第１の観点において、
前記取得信号の出力を開始させる時間の基準となる開始基準時間情報を記憶する開始基準記憶部と、
前記フラッシュメモリに対するデータ書込み又は消去の実行に要する実行時間を測定する測定部と、
前記測定された実行時間を開始基準時間情報として前記開始基準記憶部に格納する開始基準設定部と
を更に有し、
前記ポーリング処理部は、前記開始基準記憶部に記憶された前記開始基準時間情報に基づいて、前記取得信号の出力を開始する。
【００１１】
第３の観点に従うフラッシュメモリコントローラは、第２の観点において、
前記フラッシュメモリは、ＭＬＣ（Multi  Level  Cell）型のフラッシュメモリであり、複数のブロックを有し、各ブロックが、複数のページを有し、
前記開始基準設定部は、前記フラッシュメモリにおけるページペアのうちデータ書込みの実行に要する時間が短いページについての前記実行時間を前記開始基準記憶部に格納する
【００１２】
第４の観点に従うフラッシュメモリコントローラは、第２の観点又は第３の観点において、
前記フラッシュメモリは複数個あり、
前記開始基準記憶部は、前記フラッシュメモリ毎に存在し、自分に対応する前記フラッシュメモリについての前記実行時間を開始基準時間情報として記憶し、
前記ポーリング処理部は、複数の開始基準記憶部のうちの前記書込みコマンド又は消去コマンドの送信先のフラッシュメモリに対応する開始基準記憶部から、開始基準時間情報を取得し、当該開始基準時間情報に基づいて、前記書込みコマンド又は消去コマンドの送信先のフラッシュメモリに対する前記取得信号の出力を開始する。
【００１３】
第５の観点に従うフラッシュメモリコントローラでは、第１乃至第４のいずれか１つの観点において、
前記フラッシュメモリは複数個あり、
前記ポーリング間隔記憶部は、前記複数のフラッシュメモリに共通である。
【００１４】
第６の観点に従うフラッシュメモリコントローラでは、第２乃至第５のいずれか１つの観点において、
前記測定部は、前記開始基準時間情報を設定又は変更する場合に、前記フラッシュメモリについて前記実行時間を測定し、前記開始基準時間情報を設定又は変更しない場合には、前記フラッシュメモリについて前記実行時間を測定しない。
【００１５】
第７の観点に従うフラッシュメモリシステムは、
第１乃至第６のいずずれか１つの観点に従うフラッシュメモリコントローラと、
前記フラッシュメモリコントローラに接続されたフラッシュメモリと
を有する。
【００１６】
第８の観点に従うフラッシュメモリ制御方法は、
フラッシュメモリに対してデータの書込み又は消去の実行を開始した後に前記書込み又は消去の実行が終了したか否かを示す情報を前記フラッシュメモリから取得するための取得信号を出力するタイミングの間隔であるポーリング間隔をポーリング間隔記憶部に設定し、
前記フラッシュメモリに対して書込みコマンド又は消去コマンドを送信し、その後、前記ポーリング間隔に従って、前記書込み又は消去の実行が終了したことを表す情報を受信するまで、前記取得信号を出力する。
【発明の効果】
【００１７】
書込み又は消去の実行が終了したか否かを示す情報をフラッシュメモリから取得するための取得信号を出力させるポーリング間隔を設定しておき、そのポーリング間隔に従って、取得信号を出力させることができる。このため、フラッシュメモリコントローラに接続されたフラッシュメモリに応じて適切なポーリング間隔を設定することができ、消費電力を低減させるようにすることができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施形態に係るフラッシュメモリ（ＦＭ）システムの構成例を示す。
【図２】図２は、ホストシステムが認識する論理アドレス空間とメモリセルアレイ内の物理アドレス空間との間の対応関係の一例を示す。
【図３】図３は、実施形態に係るフラッシュメモリシステムの詳細な構成例を示す。
【図４】図４は、実施形態に係るプログラム実行時Ｂｕｓｙ時間設定処理の流れを示す。
【図５】図５は、実施形態に係るイレース実行時Ｂｕｓｙ時間設定処理の流れを示す。
【図６】図６は、実施形態に係るプログラム実行時処理の流れを示す。
【図７】図７は、実施形態に係るポーリング間隔を説明する図である。
【図８】図８は、実施形態に係るＢｕｓｙ時間を説明する図である。
【図９】図９は、従来例に係るポーリング間隔を説明する図である。
【発明を実施するための形態】
【００１９】
以下、本発明に係る実施形態を説明する。なお、図面では、フラッシュメモリを「ＦＭ」と略記し、論理ブロックを「ＬＢ」と略記し、論理ページを「ＬＰ」と略記し、物理ブロックを「ＰＢ」と略記し、物理ページを「ＰＰ」と略記することがある。
【００２０】
図１は、実施形態に係るＦＭシステムの構成例を示す。
【００２１】
ＦＭシステム１００は、ホストシステム２００からアクセス可能に接続される。ＦＭシステム１００は、ＦＭコントローラ１０２と、ＦＭ群１０５とを有する。ＦＭ群１０５は、１以上のＦＭ４０を含む。ＦＭコントローラ１０２は、ホストシステム２００からＦＭ４０へのアクセスを制御する。
【００２２】
ＦＭ４０は、不揮発性のメモリセルアレイ１３４と、レジスタ（以下、ＦＭレジスタ）１３２とを有する。ＦＭレジスタ１３２は、ＦＭコントローラ１０２とメモリセルアレイ１３４との間で入出力されるデータを一時的に記憶するためのものである。
【００２３】
メモリセルアレイ１３４は、例えば、ＮＡＮＤ型である。メモリセルアレイ１３４は、例えば、ＭＬＣ（Multi  Level  Cell）型である。メモリセルアレイ１３４は、少なくとも１つのＦＭチップで構成されており、複数の物理ブロックを有する。各物理ブロックは、複数の物理ページを有する。ここで、ＮＡＮＤ型のメモリセルアレイ１３４においては、データの書込み／読出しの単位（データの書込み/読出しの時に一度に入出力され得る記憶領域）は、ページ（物理ページ）単位であり、データの消去の単位は、ブロック（物理ブロック）単位である。この実施形態では、ＦＭレジスタ１３２の記憶容量は、書込み/読出しの単位である１個の物理ページ分の記憶容量に等しく設定されている。
【００２４】
図２は、ホストシステム２００が認識する論理アドレス空間とメモリセルアレイ１３４内の物理アドレス空間との間の対応関係の一例を示す。
図２の右側の部分には、メモリセルアレイ１３４内の多数の物理ページ（１個の物理ブロックの部分のみを抜粋）が例示されている。この右側部分に示されるように、各物理ページは、複数個（典型的には２のべき乗数に相当する個数）の物理セクタを有する。本実施形態では、物理ページは、例えば８個の物理セクタを有する。物理セクタは１セクタ（５１２バイト）のデータが記憶される領域である。各物理セクタには１個の付加情報領域が割り当てられている。また、各物理ページは、１個のページ情報領域を有する。各物理ページに対して、論理アドレス空間内のいずれかの１個の論理ページ（図２の左側に示す論理アドレス空間中で、＃０、＃１、＃２、…という各論理ページ番号（ＬＰＮ）が付与された記憶領域）が、ＦＭコントローラ１０２によって関連づけられ得る。このように各物理ページに１個の論理ページが関係付けられてもよいし、１個の論理ページに対して複数個の物理ページが関連付けられてもよい。各物理ページ内の各物理セクタには、その物理セクタに関連付けられた論理ページ内の各論理セクタのユーザデータが格納され、そのユーザデータの誤り訂正符号（ＥＣＣ）は、その物理セクタに割り当てられている付加情報領域に格納される。また、各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを特定する情報（例えば、論理ページ番号（ＬＰＮ））及びその他の管理及び／又は制御用の情報が格納される。
【００２５】
再び図１を参照する。ＦＭレジスタ１３２は、上述した１個の物理ページの構成に適合した構成を有する。すなわち、ＦＭレジスタ１３２は、１個の物理ページ内の８個の物理セクタと８個の付加情報領域にそれぞれ格納されるユーザデータとＥＣＣをそれぞれ保持するための８個のセクタ領域と８個のＥＣＣ領域のセットを有する。
【００２６】
さて、上述したように、ＮＡＮＤ型のＦＭ４０では、データの書込みと読出しは物理ページを単位として行われる。ＦＭ４０にデータが書込まれる場合には、まず、メモリコントローラ１０２からＦＭ４０内のＦＭレジスタ１３２に、書込み先の１個の物理ページ分のデータ（８個の物理セクタ分のデータ、８個の付加情報領域分のデータ及び１個のページ情報領域分のデータ）が書込まれ、その後に、ＦＭレジスタ１３２からメモリセルアレイ１３４内の書込み先の物理ページにそのデータが書込まれる。逆に、ＦＭ４０からデータが読出される場合には、まず、メモリセルアレイ１３４内の読出し元の物理ページからＦＭレジスタ１３２へその１個の物理ページ分のデータ（８個の物理セクタ分のデータ、８個の付加情報領域分のデータ及び１個のページ情報領域分のデータ）が読出され、その後に、ＦＭレジスタ１３２からメモリコントローラ１０２へそのデータが読出される。
【００２７】
ＦＭコントローラ１０２は、ホストＩ／Ｆ５０と、ＦＭ  Ｉ／Ｆ６０と、レジスタ群１１３と、バッファ群１１５と、メモリ１１０と、マイクロプロセッサ（以下、ＣＰＵ）１１２とを有する。
【００２８】
ホストＩ／Ｆ５０は、ホストシステム２００に接続される通信インタフェースデバイスである。ホストＩ／Ｆ５０が、ホストシステム２００からコマンド（例えば書込みコマンド及び読出しコマンド）を受信する。
【００２９】
ＦＭ  Ｉ／Ｆ６０は、ＦＭ群１０５（１以上のＦＭ４０）に接続される通信インタフェースデバイスである。ＦＭ  Ｉ／Ｆ６０を通じて、書き込み対象データがＦＭ４０に書込まれたり、ＦＭ４０から読出されたデータが受信されバッファに格納されたりする。
【００３０】
レジスタ群１１３は、１以上のレジスタである。レジスタ群１１３におけるレジスタとしては、例えば、ホストシステム２００からのコマンド（例えば書込みコマンド及び読出しコマンド）で指定されているＬＢＡが設定されるＬＢＡレジスタ、ホストシステム２００からのコマンドが書込まれるコマンドレジスタ、ホストシステム２００にとっての書込み対象又は読出し対象のデータ（ユーザデータ）が書き込まれるデータレジスタ、及びＦＭ４０からステータスデータを読出すステータスリードのポーリング間隔が設定されるポーリング間隔設定レジスタ１１４（図３参照）がある。
【００３１】
シーケンサ群１１６は、１以上のシーケンサ１１７（図３参照）を含む。シーケンサ群１１６におけるシーケンサ１１７の一例は後述する。
【００３２】
メモリ１１０は、ＦＭ４０の制御又は管理のための情報を記憶する。例えば、その情報は、ＦＭ４０毎の管理テーブルを含む。管理テーブルは、そのテーブルに対応するＦＭ４０について、どの物理領域（例えば物理ブロック或いは物理ページ）がどの論理領域（例えば論理ブロック或いは論理ページ）に割り当たっているかを表す情報と、物理ページの属性（例えば、正物理ページか副物理ページか）を表す情報と、どの物理ブロックが不良ブロックであるかを表す情報とを含んでよい。また、メモリ１１０は、ＣＰＵ１１２で実行されるコンピュータプログラム（例えばファームウェア）を記憶してよい。
【００３３】
ＣＰＵ１１２は、ＦＭコントローラ１０２の動作を制御する。
【００３４】
以下では、新しい書込み要求を受信したときにＦＭコントローラ１０２のＣＰＵ１１２が行う制御について、より詳細に説明する。この説明に当たり、まず、図２を参照して、本実施形態における、ホストシステム２００が認識する論理アドレス空間とメモリセルアレイ１３４内の物理アドレス空間との間の対応関係を説明する。
【００３５】
図２の左側の部分には論理アドレス空間が示されている。論理アドレス空間には、多数の論理セクタが存在し、それらの論理セクタは、各論理セクタに付与されたＬＢＡによって識別される。そして、複数個（本実施形態では８個）の論理セクタが集合して、１個の論理ページを構成する。さらに、複数個（本実施形態では６４個）の論理ページが集合して、１個の論理ブロックを構成する。こうして複数個の論理ブロックが構成され、それらの論理ブロックは、各論理ブロックに付与されたＬＢＮ（論理ブロック番号）によって識別される。また、各論理ブロック内では、複数個（例えば６４個）の論理ページが、各論理ページに付与された論理ページ番号（ＬＰＮ）によって識別される。
【００３６】
図２の右側の部分には、メモリセルアレイ１３４内の物理アドレス空間が（１個の物理ブロックの部分のみ抜粋して）示されている。物理アドレス空間では、複数個（本実施形態では６４個）の物理ページが集合して、１個の物理ブロックを構成する。図２では図示省略されているが、メモリセルアレイ１３４内には複数個（論理ブロックの総数より多い）の物理ブロックが存在し、それらの物理ブロックは、各物理ブロックに付与された物理ブロックアドレス（ＰＢＡ）により識別される。そして、各物理ブロック内では、複数個（例えば６４個）の物理ページが、各物理ページに付与された物理ページ番号（ＰＰＮ）によって識別される。各物理ページは、既に説明したように、複数個（本実施形態では８個）の物理セクタで構成され、更に、物理セクタに関連付けられた８個の付加情報領域と１個のページ情報領域とを有する。
【００３７】
図２に示されるように、メモリセルアレイ１３４内の各物理ブロック（例えば、ＰＢＡ＃０の論理ブロック）に対して、いずれか１個の論理ブロック（例えば、ＬＢＮ＃０の論理ブロック）が、ＦＭコントローラ１０２のＣＰＵ１１２によって関係付けられる。そして、各物理ブロック６４内の各物理ページ（例えば、ＰＰＮ＃７〜ＰＰＮ＃１２の各物理ページ）に対して、その物理ブロックに関係付けられた論理ブロック中いずれか１個の論理ページ（例えば、ＬＰＮ＃０〜ＬＰＮ＃５の各論理ページ）が、ＣＰＵ１１２によって関係付けられる。各物理ページのページ情報領域には、その物理ページに関連付けられた論理ページを示す情報（例えば、ＬＰＮ）が記述される。
【００３８】
ところで、メモリセルアレイ１３４内には、まだどの論理ページとも関連付けられていない物理ページも存在し得る。ホストシステム２００からの書き込み要求に対応して、論理ページに対して１個の物理ページ（どの論理ページとも関連付けられていない物理ページ）が関連付けられ、その物理ページに対するデータ書き込みが行われる。
【００３９】
図３は、実施形態に係るフラッシュメモリシステムの詳細な構成例を示す。なお、図３においては、一部の構成については図示を省略している。
【００４０】
ＦＭコントローラ１０２は、設定部の一例としてのＣＰＵ１１２と、ポーリング間隔記憶部の一例としてのポーリング間隔設定レジスタ１１４と、１以上のシーケンサ１１７とを含む。シーケンサ１１７は、ポーリング処理部及び開始基準設定部の一例である。ＦＭコントローラ１０２には、複数のＦＭ４０が並列的に接続された部分ＦＭ群４１が複数接続されている。ＦＭ００〜ＦＭ０ｘ（ｘは、任意の整数）は、同一の部分ＦＭ群４１に属し、同様に、ＦＭ１０〜ＦＭ１ｘ、ＦＭ２０〜ＦＭ２ｘ、・・・、ＦＭｘ０〜ＦＭｘｘのそれぞれが同一の部分ＦＭ群４１に属している。
【００４１】
ポーリング間隔設定レジスタ１１４は、ポーリング間隔を記憶する。ポーリング間隔とは、ステータスを含むステータスデータを取得するため（ステータスリードするため）にステータスリード信号（取得信号）をＦＭ４０に出力するタイミングの間隔である。ポーリング間隔は、ＣＰＵ１１２が所定の条件に基づいて設定するようにしてもよいし、ＣＰＵ１１２がＦＭシステム１００の外部からの指示（例えばホストシステム２００からの指示）に基づいて設定するようにしてもよい。
【００４２】
ポーリング間隔は、リードＢｕｓｙ時間長（リードコマンドをＦＭに発行してからＢｕｓｙ解除までにかかる時間）、特に、リードＢｕｓｙ時間長のうちの最大値であるリードＢｕｓｙ最長時間長に基づく間隔（例えばリードＢｕｓｙ最長時間長の１／２）で良い。リードＢｕｓｙ時間長は、プログラムにかかるＢｕｓｙ時間長と消去にかかるＢｕｓｙ時間長に比べると短い。このようなリードＢｕｓｙ時間長に基づくポーリング間隔でステータスリード信号が出力されるようになっていれば、ステータスリード信号を定期的に出力することに伴う消費電力の低減と、Ｂｕｓｙ解除の検出とを両立することができる。
【００４３】
また、本実施形態では、ポーリング間隔は、ＦＭシステム１００における全てのＦＭ４０に対して共通となっている。具体的には、例えば、ポーリング間隔設定レジスタ１１４は、全てのＦＭ４０（全てのシーケンサ１１７）に共通である。これは、本実施形態では、ＦＭシステム１００における各ＦＭ４０に適したポ−リング間隔が大きく異なることがなく、ＦＭ４０毎のポーリング間隔を記憶するためにレジスタのサイズを大きくすることを防止するためである。
【００４４】
各シーケンサ１１７は、いずれかの部分ＦＭ群４１を担当して、当該部分ＦＭ群４１に属するＦＭ４０に対する各種処理を実行する。本実施形態では、シーケンサ０は、ＦＭ００〜ＦＭ０ｘの部分ＦＭ群４１を担当し、シーケンサ１は、ＦＭ１０〜ＦＭ１ｘの部分ＦＭ群４１を担当し、シーケンサ２は、ＦＭ２０〜ＦＭ２ｘの部分ＦＭ群４１を担当し、シーケンサ３は、ＦＭ３０〜ＦＭ３ｘの部分ＦＭ群４１を担当し、シーケンサｘは、ＦＭｘ０〜ＦＭｘｘの部分ＦＭ群４１を担当する。
【００４５】
シーケンサ１１７は、担当する部分ＦＭ群４１のＦＭ４０の数に対応する数のレジスタ２０１と、１つのＢｕｓｙカウンタ２０２とを含む。レジスタ２０１は、開始基準記憶部の一例であり、部分ＦＭ群４１のいずれか１つのＦＭ４０に対する、Ｂｕｓｙ状態を確認するためのステータスリードの実行を開始させる時間を特定する開始基準時間情報を記憶する。本実施形態では、開始基準時間情報は、例えば、対象とするＦＭ４０によるデータ書込み又はイレースに要する実行時間である。本実施形態では、シーケンサ１１７は、例えば、データ書込み又はイレースの実行を開始してから、この実行時間が経過した後に、ステータスリードの実行を開始させるようにしている。
【００４６】
Ｂｕｓｙカウンタ２０２は、データ書込み又はイレースの実行時間や、ステータスリードの実行を開始させる時間等をカウントする。ここで、シーケンサ１１７の機能（主に、Ｂｕｓｙカウンタ２０２の機能）により、測定部が構成される。
【００４７】
次に、実施形態に係るＦＭシステム１００で行われる処理について説明する。
【００４８】
図４は、実施形態に係るプログラム実行時Ｂｕｓｙ時間設定処理の流れを示す。
【００４９】
プログラム実行時Ｂｕｓｙ時間設定処理は、例えば、シーケンサ１１７におけるデータ書込み（プログラム）の対象となるＦＭ４０に対応するレジスタ２０１が初期値である場合、すなわち、レジスタ２０１にＢｕｓｙ時間がまだ設定されていない場合や、レジスタ２０１に設定されているＢｕｓｙ時間を変更する場合に、実行される。なお、プログラムの対象となるＦＭ４０に対応するレジスタ２０１に、イレース実行時Ｂｕｓｙ時間設定処理（図５参照）によりＢｕｓｙ時間が設定されている場合であっても、このプログラム実行時Ｂｕｓｙ時間設定処理を行うようにしても良く、この場合には、プログラム実行時のＢｕｓｙ時間と、イレース実行時のＢｕｓｙ時間とをレジスタ２０１に格納するようにしてもよい。
【００５０】
シーケンサ１１７は、ＣＰＵ１１２から書き込み開始命令を受け、書込み対象データを入力すると（Ｓ１１）、書込み対象データの格納先となるＦＭ４０に対して、プログラム実行コマンドを発行する（Ｓ１２）。なお、この処理を行うシーケンサ１１７は、書込み対象データの格納先となるＦＭ４０を担当するシーケンサ１１７である。次に、シーケンサ１１７は、Ｂｕｓｙカウンタ２０２を起動する（Ｓ１３）。これにより、Ｂｕｓｙカウンタ２０２は、プログラム実行コマンドを発行してからの経過時間をカウントすることとなる。
【００５１】
次に、シーケンサ１１７は、ポーリング間隔設定レジスタ１１４に格納されているポーリング間隔が経過したか否かを判定し（Ｓ１４）、経過していない場合（Ｓ１４：Ｎｏ）、処理をステップＳ１４に進める。一方、そのポーリング間隔が経過した場合（Ｓ１４：Ｙｅｓ）、シーケンサ１１７は、ＦＭ４０に対して、ステータスリード信号を送信し、ＦＭ４０から取得したステータスデータのｂｕｓｙビットを参照し、ＦＭ４０のＢｕｓｙ状態が終了したか否かを判定することにより、Ｂｕｓｙ解除されているか否かを判定する（Ｓ１５）。この結果、Ｂｕｓｙ解除されていない場合（Ｓ１５：Ｎｏ）、シーケンサ１１７は、Ｓ１４の処理に戻る。
【００５２】
一方、Ｂｕｓｙ解除されている場合（Ｓ１５：Ｙｅｓ）、シーケンサ１１７は、Ｂｕｓｙカウンタ２０２によるカウントを停止し（Ｓ１６）、ＦＭ４０がＳＬＣ型（Single Level cell）のＦＭであるか否かを判定する（Ｓ１７）。
【００５３】
この結果、ＦＭ４０がＳＬＣ型のＦＭでない場合（Ｓ１７：Ｎｏ）、シーケンサ１１７は、プログラム対象のページが、ＭＬＣ型のＦＭ４０におけるページペアの内の、プログラムの実行時間が短い方（すなわち、Ｂｕｓｙ状態が短い方）のページであるか否かを判定する（Ｓ１８）。ここで、ＭＬＣ型のＦＭ４０においては、１つのメモリセルが複数ビットの情報を格納することができ、複数ビットの記憶領域を提供することができる。このＭＬＣ型のＦＭ４０では、１つのメモリセルが提供する複数ビットの記憶領域が別々のページの記憶領域として用いられ、結果として、同一のメモリセル群の記憶領域が、複数のページに割当てられる。ここで、ページペアとは、このように、同一のメモリセル群が記憶領域として割り当てられている複数のページ群のことを言う。ＭＬＣ型のＦＭ４０では、このように、１つのメモリセルに複数ビットの情報を格納するようにしているので、メモリセルのいずれのビットに書き込むかによって処理の実行時間が異なり、結果として、ページペアによってプログラムの実行時間が異なることとなる。
【００５４】
Ｓ１８における、プログラム対象のページが、ページペアの中の実行時間が短い方のページであるか否かの判定は、例えば、プログラム対象の物理ページ番号に基づいて判定することができる。例えば、各ページペアについて、実行時間が短い方のページがより小さい物理ページ番号が割り振られている場合には、プログラム対象のページが、ページペアにおいて物理ページ番号が小さいページであるか否かが判定される。
【００５５】
この結果、Ｂｕｓｙ状態が短いページである場合（Ｓ１８：Ｙｅｓ）、シーケンサ１１７は、Ｂｕｓｙカウンタ２０２の停止時の時間、すなわち、ページに対するプログラムにおける実行時間（Ｂｕｓｙ時間）を、書込み対象のＦＭ４０に対応するレジスタ２０１に格納し（Ｓ１９）、プログラム実行時Ｂｕｓｙ時間設定処理を終了する。一方、Ｂｕｓｙ状態が短いページでない場合（Ｓ１８：Ｎｏ）、プログラム実行時Ｂｕｓｙ時間設定処理を終了する。ここで、Ｂｕｓｙ状態が短いページである場合にのみ、Ｂｕｓｙ時間をレジスタ２０１に格納するのは、以下に示す理由からである。すなわち、以降において、このレジスタ２０１のＢｕｓｙ時間が経過した後から、シーケンスリードを開始するようにする。このため、もし仮に、Ｂｕｓｙ状態が長いページについてのＢｕｓｙ時間を設定してしまうと、Ｂｕｓｙ状態が短いページにプログラムを実行する場合においては、このＢｕｓｙ時間が経過するよりも前に、ＦＭ４０が既にＢｕｓｙ状態でなくなってしまい、ＦＭ４０が処理可能であるにもかかわらず、他の処理ができないといった無駄な時間を生じさせ、レスポンスを低下させてしまう状況が発生してしまう。これに対して、Ｂｕｓｙ状態が短いページのＢｕｓｙ時間をレジスタ２０１に設定しておくと、このような状況の発生を適切に防止することができる。
【００５６】
一方、ＦＭ４０がＳＬＣ型のＦＭである場合（Ｓ１７：Ｙｅｓ）、シーケンサ１１７は、Ｂｕｓｙカウンタ２０２の停止時の時間、すなわち、ページに対するプログラムにおける実行時間（Ｂｕｓｙ時間）を、書込み対象のＦＭ４０に対応するレジスタ２０１に格納し（Ｓ１９）、プログラム実行時Ｂｕｓｙ時間設定処理を終了する。
【００５７】
図５は、実施形態に係るイレース実行時Ｂｕｓｙ時間設定処理の流れを示す。
【００５８】
イレース実行時Ｂｕｓｙ時間設定処理は、例えば、シーケンサ１１７におけるイレースの対象となるＦＭ４０に対応するレジスタ２０１が初期値である場合、すなわち、Ｂｕｓｙ時間がまだ設定されていない場合や、レジスタ２０１に設定されているＢｕｓｙ時間を変更する場合に、実行される。なお、イレースの対象となるＦＭ４０に対応するレジスタ２０１に、プログラム実行時Ｂｕｓｙ時間設定処理（図４参照）によりＢｕｓｙ時間が設定されている場合であっても、このイレース実行時Ｂｕｓｙ時間設定処理を行うようにしてもよく、この場合には、プログラム実行時のＢｕｓｙ時間と、イレース実行時のＢｕｓｙ時間とをレジスタ２０１に格納するようにしてもよい。
【００５９】
シーケンサ１１７は、ＣＰＵ１１２から或るＦＭ４０の物理ブロックに対するイレースの指示を受け付けると、イレース対象の物理ブロックを有するＦＭ４０に対して、イレース実行コマンドを発行する（Ｓ２１）。なお、この処理を行うシーケンサ１１７は、イレース対象のブロックを有するＦＭ４０を担当するシーケンサ１１７である。次に、シーケンサ１１７は、Ｂｕｓｙカウンタ２０２を起動する（Ｓ２２）。これにより、Ｂｕｓｙカウンタ２０２は、イレース実行コマンドを発行してからの経過時間をカウントすることとなる。
【００６０】
次に、シーケンサ１１７は、ポーリング間隔設定レジスタ１１４に格納されているポーリング間隔が経過したか否かを判定し（Ｓ２３）、経過していない場合（Ｓ２３：Ｎｏ）、ステップＳ２３の処理を再度行う。一方、そのポーリング間隔が経過した場合（Ｓ２３：Ｙｅｓ）、シーケンサ１１７は、ＦＭ４０に対して、ステータスリード信号を送信し、ＦＭ４０から取得したステータスデータのｂｕｓｙビットを参照し、ＦＭ４０のＢｕｓｙ状態が終了したか否かを判定することにより、Ｂｕｓｙ解除されているか否かを判定する（Ｓ２４）。この結果、Ｂｕｓｙ解除されていない場合（Ｓ２４：Ｎｏ）、シーケンサ１１７は、Ｓ２３の処理に戻る。
【００６１】
一方、Ｂｕｓｙ解除されている場合（Ｓ２４：Ｙｅｓ）、シーケンサ１１７は、Ｂｕｓｙカウンタ２０２によるカウントを停止し（Ｓ２５）、Ｂｕｓｙカウンタ２０２の停止時の時間、すなわち、イレースにおける実行時間（Ｂｕｓｙ時間）を、イレース対象のＦＭ４０に対応するレジスタ２０１に格納し（Ｓ２６）、イレース実行時Ｂｕｓｙ時間設定処理を終了する。この処理により、レジスタ２０１には、このＦＭ４０においてイレースを実行する際の実行時間が格納されることとなる。
【００６２】
図６は、実施形態に係るプログラム実行時処理の流れを示す。
【００６３】
プログラム実行時処理は、図４又は図５によって、すでにレジスタ２０１にＢｕｓｙ時間が格納されている場合において、データ書込みを行う際の処理である。
【００６４】
シーケンサ１１７は、ＣＰＵ１１２から書き込み開始命令を受け、書込み対象データを入力すると（Ｓ３１）、書込み対象データの格納先となるＦＭ４０に対して、プログラム実行コマンドを発行する（Ｓ３２）。なお、この処理を行うシーケンサ１１７は、書込み対象データの格納先となるＦＭ４０を担当するシーケンサ１１７である。
【００６５】
次に、シーケンサ１１７は、書込み対象データの書込み先となるＦＭ４０に対応するレジスタ２０１からＢｕｓｙ時間を取得し、当該Ｂｕｓｙ時間をカウント値の初期値として、Ｂｕｓｙカウンタ２０２を起動する（Ｓ３３）。なお、レジスタ２０１に、プログラム実行時のＢｕｓｙ時間と、イレース実行時のＢｕｓｙ時間とがある場合には、シーケンサ１１７は、プログラム実行時のＢｕｓｙ時間を取得する。この処理により、Ｂｕｓｙカウンタ２０２は、例えば、設定されたＢｕｓｙ時間に対応するカウント値を経過時間に応じて減らしていく。
【００６６】
次に、シーケンサ１１７は、Ｂｕｓｙカウンタ２０２のカウント値が所定値（例えば、０又は、０に近い値）になるまで処理を待つ（Ｓ３４）。したがって、ＦＭ４０がＢｕｓｙ状態であると推定できる時間においては、シーケンサ１１７は、ＦＭ４０の状態を確認するためのステータスリードを実行しない。したがって、この間において、ステータスリードの無駄なポーリングが実行されず、無駄な電力消費を防止できる。また、例えば、図４に示すプログラム実行時Ｂｕｓｙ時間設定処理で設定されたＢｕｓｙ時間を用いている場合には、Ｂｕｓｙ時間がＭＬＣ型のＦＭ４０のページペアの中のＢｕｓｙ状態が短いページに対応するＢｕｓｙ時間であるので、プログラム対象のページが、Ｂｕｓｙ状態が短いページであっても、ＦＭ４０のＢｕｓｙ状態が終わったにもかかわらず、ＦＭコントローラ１０２側が認識していないような状態を適切に防止でき、レスポンスを低下させることがない。
【００６７】
その後、Ｂｕｓｙカウンタ２０２のカウント値が所定値になった場合には、シーケンサ１１７は、所定の時点（例えば、当該ステップを最初に実行する場合には、所定値になった時点、以降においては、直前のポーリング間隔が経過した時点）からポーリング間隔設定レジスタ１１４に格納されているポーリング間隔が経過したか否かを判定し（Ｓ３５）、経過していない場合（Ｓ３５：Ｎｏ）、ステップＳ３５の処理を再度行う。
【００６８】
一方、そのポーリング間隔が経過した場合（Ｓ３５：Ｙｅｓ）、シーケンサ１１７は、ＦＭ４０に対して、ステータスリード信号を送信し、ＦＭ４０から取得したステータスデータのｂｕｓｙビットを参照し、ＦＭ４０のＢｕｓｙ状態が終了したか否かを判定することにより、Ｂｕｓｙ解除されているか否かを判定する（Ｓ３６）。この結果、Ｂｕｓｙ解除されていない場合（Ｓ３６：Ｎｏ）、シーケンサ１１７は、Ｓ３５の処理に戻る。
【００６９】
一方、Ｂｕｓｙ解除されている場合（Ｓ３６：Ｙｅｓ）、シーケンサ１１７は、Ｂｕｓｙカウンタ２０２によるカウントを停止し、ＣＰＵ１１２に、書込み先のＦＭ４０がＢｕｓｙ状態ではない旨の通知、及びプログラム実行時処理の終了を通知する。これにより、ＣＰＵ１１２は、書込み先のＦＭ４０のＢｕｓｙ解除を行い、当該ＦＭ４０に対する各種処理を実行させることができるようになる。
【００７０】
次に、イレース実行時処理の流れを示す。なお、図６に示すプログラム実行時処理との違いについて、図６を参照して説明する。
【００７１】
イレース実行時処理は、図４又は図５によって、すでにレジスタ２０１にＢｕｓｙ時間が格納されている場合において、イレースを実行する際の処理である。
【００７２】
イレース実行時処理では、シーケンサ１１７は、ＣＰＵ１１２から或るＦＭ４０の物理ブロックに対するイレースの指示を受け付けると、Ｓ３１及びＳ３２に代えて、イレース対象の物理ブロックを有するＦＭ４０に対して、イレース実行コマンドを発行する。なお、この処理を行うシーケンサ１１７は、イレース対象の物理ブロックを有するＦＭ４０を担当するシーケンサ１１７である。
【００７３】
次に、シーケンサ１１７は、Ｓ３３において、イレース対象の物理ブロックを有するＦＭ４０に対応するレジスタ２０１からＢｕｓｙ時間を取得し、当該Ｂｕｓｙ時間をカウント値の初期値として、Ｂｕｓｙカウンタ２０２を起動する。なお、レジスタ２０１に、プログラム実行時のＢｕｓｙ時間と、イレース実行時のＢｕｓｙ時間とがある場合には、シーケンサ１１７は、イレース実行時のＢｕｓｙ時間を取得する。Ｓ３４以降の処理は、プログラム実行時処理とほぼ同様である。イレース実行時処理においても、シーケンサ１１７は、ＦＭ４０がＢｕｓｙ状態であると推定できる時間においては、ＦＭ４０の状態を確認するためのステータスリードを実行しない。したがって、無駄な電力消費を防止できる。
【００７４】
図７は、実施形態に係るポーリング間隔を説明する図である。図９は、従来例に係るポーリング間隔を説明する図である。
【００７５】
図７は、シーケンサ１１７と、ＦＭ４０との間で送受信される各種信号の状態を示している。シーケンサ１１７と、ＦＭ４０との間で送受信される信号としては、コマンドラッチイネーブル信号（ＦＣＬＥ）、アドレスラッチイネーブル信号（ＦＡＬＥ）、ライトイネーブル信号（ＦＷＥＮ）、リードイネーブル信号（ＦＲＥＮ）、データストローブ信号（ＦＤＱＳ）、データバス信号（ＦＤＡＴＡ）、及びＢｕｓｙ信号（ＦＲＤＹ）がある。なお、Ｂｕｓｙ信号については、本実施形態においては、シーケンサ１１７と、ＦＭ４０との間でやり取りを行わなくてもよい。
【００７６】
ＦＣＬＥは、シーケンサ１１７がコマンドをＦＭ４０に送信する際に、所定の状態（例えば、ハイ）とされる。ＦＡＬＥは、ＦＭ４０に対してアドレスを出力する際に、所定の状態（例えば、ハイ）とされる。ＦＷＥＮは、ＦＭ４０への書込みを行う際に、所定の状態（例えば、ロー）とされる。ＦＲＥＮは、ＦＭ４０から読出しを行う際に、所定の状態（例えば、ロー）とされる。本実施形態では、ＦＲＥＮは、ＤＤＲ（Double  Data  Rate）転送の時にＦＭ４０のステータスリードを行う際に立ち上がり、立下りとされる。このトグル信号がステータスリード信号である。ＦＤＱＳは、ＤＤＲ転送の時にデータを送受信するための信号である。本実施形態では、ＦＤＱＳはステータスリードデータの受信に使用される。ＦＤＡＴＡは、データを送受信するための信号である。ＦＤＡＴＡには、ＦＭ４０に対するステータスリードを行った際に、ＦＭ４０からシーケンサ１１７に送信されるステータスデータが含まれる。ＦＲＤＹは、ＦＭ４０がＢｕｓｙ状態であるか否かを示す信号であり、例えば、Ｂｕｓｙ状態の場合には、所定の状態（例えば、ロー）とされる。
【００７７】
従来においては、図９のＦＲＥＮに示すように、ＦＭコントローラにおいて固定的に決められたポーリング間隔に従って、ステータスリード信号Ｒが送信されて、ステータスリードが行われる。これに対して、本実施形態によると、図７のＦＲＥＮに示すように、ステータスリード信号Ｒを送信するポーリング間隔は、ポーリング間隔設定レジスタ１１４に設定されているポーリング間隔となる。ポーリング間隔設定レジスタ１１４には、ＣＰＵ１１２によりポーリング間隔を設定することができる。したがって、ＦＭシステム１００に備えられているＦＭ４０の性能等に応じて、適切なポーリング間隔を設定することができる。このため、例えば、ステータスリード信号Ｒのポーリング間隔を従来よりも長く設定することもでき、消費電力を低減することもできる。なお、図７及び図９は、イレースを実行する際の信号を示しているが、プログラムを実行する際には、図７及び図９のＤＡＴＡのイレースコマンド（Ｅｒａｓｅ）をプログラムコマンドに入れ替えればよく、他の信号については、これら図と同様である。
【００７８】
図８は、実施形態に係るＢｕｓｙ時間を説明する図である。
【００７９】
図８は、シーケンサ１１７と、ＦＭ４０との間で送信される各種信号の状態を示している。なお、各種信号については、図７において説明したとおりである。
【００８０】
本実施形態においては、シーケンサ１１７からＦＭ４０にステータスコマンド（Ｓｔａｔｕｓ）を送信して、ステータスリード信号Ｒの出力を開始する。本実施形態では、図８のＦＤＡＴＡに示すように、ステータスコマンドを送信するタイミングを、ＦＭ４０に対応するレジスタ２０１に格納されているＢｕｓｙ時間が終了する直後とし、その後、ＦＲＥＮに示すように、ステータスリード信号Ｒを送信し、ステータスリードを開始する。
【００８１】
このＢｕｓｙ時間は、各ＦＭ４０におけるイレース処理（又はプログラム処理）の実行時間を測定したものであり、ＦＲＤＹが示すＢｕｓｙ状態と略同じ時間となっている。したがって、ＦＭ４０がＢｕｓｙ状態となっている時間において、ステータスリード信号Ｒが出力されることを低減することができ、消費電力を低減することができる。なお、図８は、イレースを実行する際の信号を示しているが、プログラムを実行する際には、図８のＤＡＴＡのイレースコマンド（Ｅｒａｓｅ）をプログラムコマンドに入れ替えればよく、他の信号については、同図と同様である。
【００８２】
以上、実施形態を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
【符号の説明】
【００８３】
１００：フラッシュメモリシステム、１０２：メモリコントローラ、１０４：フラッシュメモリ
【図１】
0005447617.tif 000002
【図２】
0005447617.tif 000003
【図３】
0005447617.tif 000004
【図４】
0005447617.tif 000005
【図５】
0005447617.tif 000006
【図６】
0005447617.tif 000007
【図７】
0005447617.tif 000008
【図８】
0005447617.tif 000009
【図９】
0005447617.tif 000010