(57)【要約】【課題】  フラッシュメモリに対するアクセス処理の効率も向上させることができるシステムコントローラ、システムコントローラを有するフラッシュメモリシステム、およびフラッシュメモリモジュールの制御方法を提供する。【解決手段】  ホストシステム４から第１のアクセス指示情報が与えられたときに、第１のアクセス指示情報に基づく第１のアクセス領域と、該第１のアクセス領域に後続する領域とを含む領域にアクセスするための第１の動作指示情報をフラッシュメモリモジュール２に与える。第１のアクセス指示情報の次に第２のアクセス指示情報が与えられたときに、第２のアクセス指示情報に基づく第２のアクセス領域が第１のアクセス領域に後続する領域であるか否かを判断し、第２のアクセス領域が第１のアクセス領域に後続する領域であると判断したときは、フラッシュメモリモジュール２に新たな動作指示情報を与えずに第１の動作指示情報に基づく処理を続行させる。【選択図】図９
2008033425.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられるアクセス指示に基づいて、フラッシュメモリにアクセスするメモリコントローラに動作指示を与えるシステムコントローラであって、
前記ホストシステムから与えられる第１のアクセス指示情報に基づいて特定される第１のアクセス領域と、該第１のアクセス領域に後続する領域とを含む第１の拡張アクセス領域にアクセスするための第１の動作指示情報を前記メモリコントローラに与える動作指示生成手段と、
前記ホストシステムから前記第１のアクセス指示情報の次に第２のアクセス指示情報が与えられたときに、前記第２のアクセス指示情報に基づいて特定される第２のアクセス領域が前記第１のアクセス領域に後続する領域であるか否かを判断する判断手段とを備え、
前記判断手段が、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域でないと判断したとき、前記動作指示生成手段は、前記第２のアクセス領域と、該第２のアクセス領域に後続する領域とを含む第２の拡張アクセス領域にアクセスするための第２の動作指示情報を前記メモリコントローラに与え、
前記判断手段が、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域であると判断したとき、前記動作指示生成手段は、前記第２の動作指示情報を前記メモリコントローラに与えないことを特徴とするシステムコントローラ。
【請求項２】
前記判断手段は、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域であると判断したときに、前記第２のアクセス領域が前記第１の拡張アクセス領域を超える領域を含んでいる場合は、動作指示生成手段が、前記第１の拡張アクセス領域に対するアクセスが終了した後に、前記第１の拡張アクセス領域に後続する領域を含む第３の拡張アクセス領域にアクセスするための第３の動作指示情報を前記メモリコントローラに与える
ことを特徴とする請求項１に記載のシステムコントローラ。
【請求項３】
請求項１または２に記載のシステムコントローラと、
前記システムコントローラから与えられる動作指示に基づいてフラッシュメモリにアクセスするメモリコントローラと、
前記メモリコントローラによってアクセスされるフラッシュメモリとを備えるフラッシュメモリシステム。
【請求項４】
ホストシステムから与えられるアクセス指示に基づいて、フラッシュメモリと前記フラッシュメモリにアクセスするメモリコントローラとを備えたフラッシュメモリモジュールの制御方法であって、
前記ホストシステムから与えられる第１のアクセス指示情報に基づいて特定される第１のアクセス領域と、該第１のアクセス領域に後続する領域とを含む第１の拡張アクセス領域にアクセスするための第１の動作指示情報を前記メモリコントローラに与える第１の動作指示生成ステップと、
前記ホストシステムから前記第１のアクセス指示情報の次に第２のアクセス指示情報が与えられたときに、前記第２のアクセス指示情報に基づいて特定される第２のアクセス領域が前記第１のアクセス領域に後続する領域であるか否かを判断する判断ステップと、
前記判断ステップにおいて、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域でないと判断したときは、前記第２のアクセス領域と、該第２のアクセス領域に後続する領域とを含む第２の拡張アクセス領域にアクセスするための第２の動作指示情報を前記メモリコントローラに与える第２の動作指示生成ステップとを含み、
前記判断ステップにおいて、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域であると判断したときは、前記第２の動作指示情報を前記メモリコントローラに与えないことを特徴とするフラッシュメモリモジュールの制御方法。
【請求項５】
前記第２のアクセス領域が前記第１のアクセス領域に後続する領域であるときに、前記第２のアクセス領域が前記第１の拡張アクセス領域を超える領域を含んでいる場合は、前記第１の拡張アクセス領域に対するアクセスが終了した後に、前記第１の拡張アクセス領域に後続する領域を含む第３の拡張アクセス領域にアクセスするための第３の動作指示情報を前記メモリコントローラに与える第３の動作指示生成ステップを含むことを特徴とする請求項４に記載のフラッシュメモリモジュールの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシステムコントローラ、システムコントローラを有するフラッシュメモリシステム、およびフラッシュメモリモジュールの制御方法に関する。
【背景技術】
【０００２】
従来、上位コントローラと複数の半導体ディスクを備えた半導体メモリシステムが提案されている。この上位コントローラが、半導体メモリと下位コントローラ（メモリコントローラ）で構成される半導体ディスクを制御することで、該複数の半導体ディスクを１つの半導体ディスクのように使用することができる（例えば、特許文献１参照）。また、上位コントローラが複数のディスク装置を制御するディスクアレイ制御方法が提案されている。該ディスクアレイにおいて、上位コントローラは、ホストシステムから順次与えられる複数のコマンドを１つのコマンドにまとめ、この１つにまとめたコマンドを各ディスク装置に与えるコマンドに変換している。このような処理を行うことによりホストシステムから順次与えられる複数のコマンドが、１つのシーケンシャルアクセスコマンドとして実行される。従って、アクセス時における待機時間を減少し、アクセスの高速化を図ることができる。（例えば、特許文献２参照）。
【０００３】
尚、上位コントローラはホストシステムから与えられる指示情報に基づいて特定されるアクセス領域を振り分けている。以下、図１０〜図１２を参照しながら、アクセス対象を振り分ける例について説明する。  
【０００４】
図１０に示すように、上位コントローラであるシステムコントローラ３には、４つのフラッシュメモリモジュール２Ａ〜２Ｄが接続されている。システムコントローラ３は、ホストシステム（図示せず）から入力された、コマンド等のアクセスのための指示情報を保持するレジスタ７０を有している。フラッシュメモリモジュール２Ａ〜２Ｄはそれぞれレジスタ２３０Ａ〜２３０Ｄを有している。レジスタ７０は、ＬＢＡレジスタ７１、セクタ数レジスタ７２、コマンドレジスタ７３で構成されている。レジスタ２３０Ａ〜２３０Ｄは、それぞれＬＢＡレジスタ２３１Ａ〜２３１Ｄ、セクタ数レジスタ２３２Ａ〜２３２Ｄ、コマンドレジスタ２３３Ａ〜２３３Ｄで構成されている。
【０００５】
ホストシステムからシステムコントローラ３に与えられる指示情報には、書き込み、読み出し等を指示するコマンドと、アクセス領域を特定するためのアドレス情報が含まれている。ホストシステムからシステムコントローラ３に与えられるアクセス領域を特定するためのアドレスとしては、セクタ（５１２）単位の通番であるＬＢＡ（Logical Block Address）が用いられる。アクセス領域を特定するためのアドレス情報はＬＢＡレジスタ７１とセクタ数レジスタ７２に書き込まれる。ここで、ＬＢＡレジスタ７１には、アクセス領域の先頭セクタを示すＬＢＡが書き込まれ、セクタ数レジスタ７２にはアクセス領域のセクタ数が書き込まれる。書き込み、読み出し等を指示するコマンドはコマンドレジスタ７３に書き込まれる。
【０００６】
システムコントローラ３は、ホストシステムから与えられた指示情報に基づいてフラッシュメモリモジュール２Ａ〜２Ｄに動作指示を与える。この動作指示において、ホストシステムから与えられた指示情報に基づいて特定されるアクセス領域がフラッシュメモリモジュール２Ａ〜２Ｄに振り分けられる。アクセス領域を振り分けるときは、１セクタ単位で振り分けても、複数セクタ単位で振り分けてもよい。
【０００７】
図１１は、１セクタ単位で振り分けた場合を示している。ここでは、ＬＢＡ＃０がフラッシュメモリモジュール２Ａに振り分けられ、ＬＢＡ＃１がフラッシュメモリモジュール２Ｂに振り分けられ、ＬＢＡ＃２がフラッシュメモリモジュール２Ｃに振り分けられ、ＬＢＡ＃３がフラッシュメモリモジュール２Ｄに振り分けられ、以下同様に、１セクタ単位で順次振り分けられる。
【０００８】
又、フラッシュメモリモジュール２Ａ〜２Ｄに振り分けられたセクタに付けた通番をＬＢＡ’とすれば、ＬＢＡ＃０がフラッシュメモリモジュール２ＡにおけるＬＢＡ’＃０に対応し、ＬＢＡ＃１がフラッシュメモリモジュール２ＢにおけるＬＢＡ’＃０に対応し、ＬＢＡ＃２がフラッシュメモリモジュール２ＣにおけるＬＢＡ’＃０に対応し、ＬＢＡ＃３がフラッシュメモリモジュール２ＤにおけるＬＢＡ’＃０に対応する。
【０００９】
この対応関係、つまり、１セクタ単位で振り分けた場合のＬＢＡとフラッシュメモリモジュール２Ａ〜２ＤにおけるＬＢＡ’の対応関係を、図１２を参照して説明する。１セクタ単位で振り分けた場合、ＬＢＡの下位２ビットが振り分け先を示している。ＬＢＡの下位２ビットが「００」であれば、フラッシュメモリモジュール２Ａに振り分けられ、ＬＢＡの下位２ビットが「０１」であれば、フラッシュメモリモジュール２Ｂに振り分けられ、ＬＢＡの下位２ビットが「１０」であれば、フラッシュメモリモジュール２Ｃに振り分けられ、ＬＢＡの下位２ビットが「１１」であれば、フラッシュメモリモジュール２Ｄに振り分けられる。又、ＬＢＡの下位２ビットを除いた上位側のビットがフラッシュメモリモジュール２Ａ〜２ＤにおけるＬＢＡ’に対応する。
【００１０】
システムコントローラ３がホストシステムから与えられた指示情報に基づいてフラッシュメモリモジュール２Ａ〜２Ｄに動作指示を与えるときは、ＬＢＡ’によってアクセス領域が指示される。つまり、ＬＢＡレジスタ２３１Ａ〜２３１Ｄには、振り分けられたアクセス領域の先頭セクタを示すＬＢＡ’が書き込まれ、セクタ数レジスタ２３２Ａ〜２３２Ｄには、振り分けられたアクセス領域のセクタ数が書き込まれる。
【００１１】
例えば、ホストシステムからシステムコントローラ３のＬＢＡレジスタ７１にアクセス領域の先頭セクタを示すＬＢＡとして＃０が書き込まれ、セクタ数レジスタ７２にアクセス領域のセクタ数を示す値として３２が書き込まれた場合について説明する。この場合、フラッシュメモリモジュール２ＡのＬＢＡレジスタ２３１ＡにはＬＢＡ’として＃０が書き込まれ、セクタ数レジスタ２３２Ａにはセクタ数を示す値として８が書き込まれる。フラッシュメモリモジュール２ＢのＬＢＡレジスタ２３１ＢにはＬＢＡ’として＃０が書き込まれ、セクタ数レジスタ２３２Ｂにはセクタ数を示す値として８が書き込まれる。フラッシュメモリモジュール２ＣのＬＢＡレジスタ２３１ＣにはＬＢＡ’として＃０が書き込まれ、セクタ数レジスタ２３２Ｃにはセクタ数を示す値として８が書き込まれる。フラッシュメモリモジュール２ＤのＬＢＡレジスタ２３１ＤにはＬＢＡ’として＃０が書き込まれ、セクタ数レジスタ２３２Ｄにはセクタ数を示す値として８が書き込まれる。つまり、ホストシステムから与えられた指示情報に基づいた３２セクタのアクセス領域がフラッシュメモリモジュール２Ａ〜２Ｄに８セクタずつ振り分けられる。
【特許文献１】特開２０００−２０７１３７
【特許文献２】特開平５−２８９８１８
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ホストシステムから与えられた指示情報に基づいたアクセス領域をフラッシュメモリモジュール２Ａ〜２Ｄに振り分ける場合、システムコントローラ３は、ホストシステムから指示情報が与えられる毎に、フラッシュメモリモジュール２Ａ〜２Ｄに動作指示を与えなければならない。特許文献２には、この負担を軽減するため、連続して与えられる指示情報に基づいたアクセス領域が連続している場合に、複数の指示情報を１つの指示情報にまとめ、１つにまとめた指示情報に対応する動作指示をフラッシュメモリモジュール２Ａ〜２Ｄに与えるというような制御が示されている。
【００１３】
しかし、特許文献２に示されているような制御を行う場合には、複数の指示情報を保持するためのレジスタが必要となり、更に、複数の指示情報が与えられるのを待って、フラッシュメモリモジュール２Ａ〜２Ｄに動作指示を与えなければならない。
【００１４】
そこで、本発明は、連続したアクセス対象領域にアクセスする場合に、効率よく処理が可能なシステムコントローラ、システムコントローラを有するフラッシュメモリシステム、およびフラッシュメモリモジュールの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明によるシステムコントローラは、ホストシステムから与えられるアクセス指示に基づいて、フラッシュメモリにアクセスするメモリコントローラに動作指示を与えるシステムコントローラであって、前記ホストシステムから与えられる第１のアクセス指示情報に基づいて特定される第１のアクセス領域と、該第１のアクセス領域に後続する領域とを含む第１の拡張アクセス領域にアクセスするための第１の動作指示情報を前記メモリコントローラに与える動作指示生成手段と、前記ホストシステムから前記第１のアクセス指示情報の次に第２のアクセス指示情報が与えられたときに、前記第２のアクセス指示情報に基づいて特定される第２のアクセス領域が前記第１のアクセス領域に後続する領域であるか否かを判断する判断手段とを備え、前記判断手段が、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域でないと判断したとき、前記動作指示生成手段は、前記第２のアクセス領域と、該第２のアクセス領域に後続する領域とを含む第２の拡張アクセス領域にアクセスするための第２の動作指示情報を前記メモリコントローラに与え、前記判断手段が、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域であると判断したとき、前記動作指示生成手段は、前記第２の動作指示情報を前記メモリコントローラに与えないことを特徴とする。
【００１６】
このような構成によると、第２のアクセス領域が第１のアクセス領域に後続する領域である場合、第１のアクセス指示情報に基づいて開始された第１の拡張アクセス領域に対するアクセスが継続されるので、メモリコントローラは、第２のアクセス指示情報に応じた動作指示情報が与えられるのを待つことなく、フラッシュメモリへのアクセスを続けることができる。
【００１７】
尚、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域であるときに、前記第２のアクセス領域が前記第１の拡張アクセス領域を超える領域を含んでいる場合は、動作指示生成手段が、前記第１の拡張アクセス領域に対するアクセスが終了した後に、前記第１の拡張アクセス領域に後続する領域を含む第３の拡張アクセス領域にアクセスするための第３の動作指示情報を前記メモリコントローラに与えることが好ましい。
【００１８】
本発明によるフラッシュメモリシステムは、上記いずれかのシステムコントローラと、システムコントローラから与えられる動作指示に基づいてフラッシュメモリにアクセスするメモリコントローラと、メモリコントローラによってアクセスされるフラッシュメモリとを備えることを特徴としている。
【００１９】
このような構成によれば、システムコントローラからメモリコントローラに与えられる動作指示の回数が削減されるので、メモリコントローラが動作指示を待つ時間が削減される。
【００２０】
本発明によるフラッシュメモリモジュールの制御方法は、ホストシステムから与えられるアクセス指示に基づいて、フラッシュメモリと前記フラッシュメモリにアクセスするメモリコントローラとを備えたフラッシュメモリモジュールの制御方法であって、前記ホストシステムから与えられる第１のアクセス指示情報に基づいて特定される第１のアクセス領域と、該第１のアクセス領域に後続する領域とを含む第１の拡張アクセス領域にアクセスするための第１の動作指示情報を前記メモリコントローラに与える第１の動作指示生成ステップと、前記ホストシステムから前記第１のアクセス指示情報の次に第２のアクセス指示情報が与えられたときに、前記第２のアクセス指示情報に基づいて特定される第２のアクセス領域が前記第１のアクセス領域に後続する領域であるか否かを判断する判断ステップと、前記判断ステップにおいて、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域でないと判断したときは、前記第２のアクセス領域と、該第２のアクセス領域に後続する領域とを含む第２の拡張アクセス領域にアクセスするための第２の動作指示情報を前記メモリコントローラに与える第２の動作指示生成ステップとを含み、前記判断ステップにおいて、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域であると判断したときは、前記第２の動作指示情報を前記メモリコントローラに与えないことを特徴とする。
【００２１】
このような方法によれば、第２のアクセス領域が第１のアクセス領域に後続する領域である場合、第１のアクセス指示情報に基づいて開始された第１の拡張アクセス領域に対するアクセスが継続されるので、メモリコントローラは、第２のアクセス指示情報に応じた動作指示情報が与えられるのを待つことなく、フラッシュメモリへのアクセスを続けることができる。
【００２２】
尚、前記第２のアクセス領域が前記第１のアクセス領域に後続する領域であるときに、前記第２のアクセス領域が前記第１の拡張アクセス領域を超える領域を含んでいる場合は、前記第１の拡張アクセス領域に対するアクセスが終了した後に、前記第１の拡張アクセス領域に後続する領域を含む第３の拡張アクセス領域にアクセスするための第３の動作指示情報を前記メモリコントローラに与える第３の動作指示生成ステップを含むことが好ましい。
【発明の効果】
【００２３】
本発明のシステムコントローラ、システムコントローラを有するフラッシュメモリシステム、およびフラッシュメモリモジュールの制御方法によれば、ホストシステムからアクセス領域が連続する複数のアクセス指示が連続して与えられた場合に、フラッシュメモリモジュールに与えられる動作指示の回数を削減することができる。従って、フラッシュメモリモジュールが動作指示を待つ時間を削減することができ、更に、フラッシュメモリモジュール内で実行されるフラッシュメモリに対するアクセス処理の効率も向上させることができる。
【発明を実施するための最良の形態】
【００２４】
本発明の一実施の形態によるシステムコントローラ、システムコントローラを有するフラッシュメモリシステム、およびフラッシュメモリシステムの制御方法について図１から図１０を参照しながら説明する。
【００２５】
まず、本実施の形態によるフラッシュメモリシステムの構成について説明する。図１のブロック図に示すように、本実施の形態によるフラッシュメモリシステム１は、４個のフラッシュメモリモジュール２（２Ａ〜２Ｄ）と、それを制御するシステムコントローラ３で構成されている。
【００２６】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００２７】
フラッシュメモリモジュール２Ａ〜２Ｄは、図２に示したようにメモリコントローラ２０３とフラッシュメモリ２０２で構成されている。メモリコントローラ２０３は、システムコントローラ３から与えられる動作指示に従って、フラッシュメモリ２０２にアクセスする。  
【００２８】
システムコントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリモジュールインタフェースブロック１０と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２等の機能ブロックから構成される。これら機能ブロックによって構成されるシステムコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００２９】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、システムコントローラ３の全体の動作を制御する。例えば、ホストシステム４から与えられたアクセス指示に基づいてフラッシュメモリモジュール２に与える動作指示情報を生成したり、ホストシステムから与えられたアクセス指示に基づいたアクセス領域が、前回のアクセス指示に基づいたアクセス領域に後続する領域であるか否か判断したりする。
【００３０】
ホストインタフェースブロック７は、図３に示すようにＬＢＡレジスタ７１、セクタ数レジスタ７２、およびコマンドレジスタ７３を含むレジスタ７０を備えている。ホストシステム４が、システムコントローラ３にアクセス指示を与えるとき、書き込みや読み出し等を指示するコマンド、アクセス領域を指示するアドレス等を含むアクセス指示情報がレジスタ７０に書き込まれる。ここで、ＬＢＡレジスタ７１には、アクセス領域の先頭セクタを示すＬＢＡが書き込まれる。セクタ数レジスタ７２には、アクセス領域のセクタ数を示す値が書き込まれる。コマンドレジスタ７３には、書き込みや読み出し等を指示するコマンドのコードが書き込まれる。
【００３１】
ホストシステム４からフラッシュメモリシステム１に供給されるデータ等は、ホストインタフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインタフェースブロック７を出口としてホストシステム４に供給される。
【００３２】
ワークエリア８は、フラッシュメモリモジュール２Ａ〜２Ｄの制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）セルによって構成される。
【００３３】
バッファ９は、フラッシュメモリモジュール２Ａ〜２Ｄから読み出されたデータ及びフラッシュメモリモジュール２Ａ〜２Ｄに書き込むデータを一時的に蓄積する。  
【００３４】
フラッシュメモリモジュールインタフェースブロック１０は、内部バス１４を介して、フラッシュメモリモジュール２Ａ〜２Ｄに動作指示情報を与えると共に、フラッシュメモリモジュール２Ａ〜２Ｄとの間で書き込みデータ若しくは読み出しデータの授受を行う。フラッシュメモリモジュールインタフェースブロック１０は、図３に示すようにＬＢＡレジスタ１０１、カウンタ１０２を含むレジスタ１００を備えている。レジスタ１００は、フラッシュメモリモジュール２で実行されている処理の進行状況を監視するための情報が保持される。例えば、読み出しを指示する動作指示情報をフラッシュメモリモジュール２に与えた場合は、その動作指示情報に基づく読み出し処理で読み出されるデータの先頭ＬＢＡをＬＢＡレジスタ１０１に設定し、読み出されるデータのセクタ数をカウンタ１０２に設定する。その後、フラッシュメモリモジュール２から１セクタのデータを受け取る毎に、ＬＢＡレジスタ１０１に設定されている値はインクリメント（１ずつ加算）され、カウンタ１０２に設定されている値はデクリメント（１ずつ減算）される。従って、フラッシュメモリモジュール２に与えた動作指示情報に基づく読み出し処理で読み出されるデータを全て受け取ったときにカウンタ１０２に設定されている値が「０」になる。
【００３５】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。
【００３６】
次に、フラッシュメモリモジュール２Ａ〜２Ｄについて説明する。フラッシュメモリモジュール２Ａ〜２Ｄは、互いに同一の構成を有している。図２に、例として、フラッシュメモリモジュール２Ａの構成を示す。
【００３７】
フラッシュメモリモジュール２Ａは、図２に示すように、フラッシュメモリ２０２と、それを制御するメモリコントローラ２０３で構成されている。メモリコントローラ２０３は、フラッシュメモリ２０２にデータ、アドレス情報、内部コマンド等を供給することにより読み出し処理、書き込み処理、ブロック消去処理等の各処理を行う。
【００３８】
ここで、内部コマンドとは、メモリコントローラ２０３がフラッシュメモリ２０２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２０２はメモリコントローラ２０３から与えられる内部コマンドに従って動作する。一方、システムコントローラ３からメモリコントローラ２０３に与えられるコマンドを外部コマンドという。
【００３９】
メモリコントローラ２０３は、図２に示すように、マイクロプロセッサ２０６と、システムコントローラインタフェースブロック２０７と、ワークエリア２０８と、バッファ２０９と、フラッシュメモリインタフェースブロック２１０と、ＥＣＣ（エラー・コレクション・コード）ブロック２１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２１２とを備えている。これら機能ブロックによって構成されるメモリコントローラ２０３は、一つの半導体チップ上に集積される。
【００４０】
マイクロプロセッサ２０６は、ＲＯＭ２１２に記憶されているプログラムに従って、メモリコントローラ２０３の全体の動作を制御する。
【００４１】
ＲＯＭ２１２は、不揮発性の記憶素子であり、メモリコントローラ２０３の全体の動作を制御するプログラム等を記憶している。ワークエリア２０８は、フラッシュメモリ２０２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）セルによって構成される。後述のアドレス変換テーブルは、このワークエリア２０８上に作成される。
【００４２】
バッファ２０９は、フラッシュメモリ２０２から読み出されたデータ及びフラッシュメモリ２０２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２０２から読み出されたデータは、システムコントローラ３が受け取り可能な状態となるまでバッファ２０９に保持され、フラッシュメモリ２０２に書き込むべきデータは、フラッシュメモリ２０２が書き込み可能な状態となるまでバッファ２０９に保持される。
【００４３】
ＥＣＣブロック２１１は、フラッシュメモリ２０２に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００４４】
システムコントローラインタフェースブロック２０７は、図４に示すように、ＬＢＡレジスタ２３１、セクタ数レジスタ２３２、およびコマンドレジスタ２３３で構成されたレジスタ２３０を備えている。システムコントローラ３が動作指示を与えるとき、書き込みや読み出し等を指示する外部コマンド、アクセス領域を指示するアドレス等を含む動作指示情報がレジスタ２３０に書き込まれる。ここで、ＬＢＡレジスタ２３１には、アクセス領域の先頭セクタを示すアドレスが書き込まれる。このアドレスは図１２に示したＬＢＡ’に対応する。セクタ数レジスタ２３２には、アクセス領域のセクタ数を示す値が書き込まれる。コマンドレジスタ２３３には、書き込み、読み出し等を指示する外部コマンドのコードが書き込まれる。  
【００４５】
システムコントローラ３からフラッシュメモリモジュール２Ａに供給されるデータ等は、システムコントローラインタフェースブロック２０７を入口としてフラッシュメモリモジュール２Ａの内部（たとえば、バッファ２０９）に取り込まれる。フラッシュメモリモジュール２Ａからシステムコントローラ３に供給されるデータ等は、システムコントローラインタフェースブロック２０７を出口としてシステムコントローラ３に供給される。
【００４６】
フラッシュメモリインタフェースブロック２１０は、図４に示すように、物理ブロックアドレスレジスタ２５１、セクタ番号レジスタ２５２、およびカウンタ２５３で構成されたレジスタ２５０を備えている。物理ブロックアドレスレジスタ２５１、セクタ番号レジスタ２５２、およびカウンタ２５３にはＬＢＡレジスタ２３１とセクタ数レジスタ２３２に書き込まれた情報に基づいて特定されるアクセス領域（ＬＢＡ’の範囲）と対応するフラッシュメモリ２０２内のアクセス領域を示す情報が設定される。
【００４７】
フラッシュメモリインタフェースブロック２１０は、マイクロプロセッサ２０６によってＲＯＭ２１２から読み出された各種処理を定義したコマンドセット（以下、シーケンスコマンドという）に従って読み出し、書き込み等の各種処理を実行する。この各種処理を実行するときに、フラッシュメモリインタフェースブロック２１０は、メモリバス２１４を介して、フラッシュメモリ２０２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。
【００４８】
図２に示すフラッシュメモリ２０２は、不揮発性メモリであり、レジスタと、メモリセルアレイ（共に図示せず）と、から構成される。フラッシュメモリ２０２は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込みまたは読み出しを行う。つまり、フラッシュメモリ２０２に書き込まれるデータは、このレジスタを介してメモリセルに書き込まれ、フラッシュメモリ２０２から読み出されるデータは、このレジスタを介してフラッシュメモリ２０２から出力される。
【００４９】
フラッシュメモリ２０２のメモリセルアレイは、複数のメモリセル群と、ワード線（共に図示せず）と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写または選択されたメモリセルからレジスタへのデータの複写が行われる。
【００５０】
このようなフラッシュメモリ２０２のアドレス空間は、“ページ”及び“ブロック（物理ブロック）”で構成されている。
【００５１】
ページは、フラッシュメモリ２０２にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリ２０２にて行われるデータ消去動作における処理単位であり、複数個のページで構成されている。
【００５２】
ここで、図５は、フラッシュメモリ２０２のアドレス空間２０（物理アドレス空間）の構造を概略的に示すものであり、１個のページが、４セクタ（２０４８バイト）のユーザ領域２５と、６４バイトの冗長領域２６とで構成され、１個の物理ブロックは６４個のページで構成されている。以下、ユーザ領域２５を４分割した５１２バイトの領域をサブページと言う。また、冗長領域２６も適宜分割して使用され、各サブページには、分割された冗長領域（以下、サブ冗長領域と言う。）がそれぞれ割り当てられる。つまり、このフラッシュメモリ２０２は、１ブロックあたり、２５６個のサブページと各サブページに割り当てられた２５６個のサブ冗長領域とで構成されている。
【００５３】
また、物理ブロックには、図６（ｃ）に示したように、それぞれに固有の物理ブロックアドレス（ＰＢＡ）が割り当てられている。更に、記憶領域を複数のゾーンに分割して管理する場合には、複数個の物理ブロックで物理ゾーンを構成し、各物理ゾーンに固有の物理ゾーン番号（ＰＺＮ）を割り当てている。各物理ゾーンに含まれる物理ブロックの、各物理ゾーン内での通番を物理ゾーン内ブロック番号（ＰＺＩＢＮ）と呼んでいる。
【００５４】
一方、システムコントローラ３側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域に付けた通番であるＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）で管理されている。システムコントローラ３は、ＬＢＡで管理されているアドレス空間をフラッシュメモリモジュール２に振り分けている。従って、フラッシュメモリモジュール２内では図１１及び図１２に示したＬＢＡ’でアドレス空間が管理される。、図６（ａ）に示したように、ＬＢＡ’は各フラッシュメモリモジュール２に振り分けられたセクタに付けた通番に対応する。各フラッシュメモリモジュール２内では、振り分けられたセクタを複数個まとめたものを論理ブロックと呼び、論理ブロックを複数個まとめたものを論理ゾーンと呼んでいる。また、図６（ｂ）に示したように、論理ブロックに付けられた通番を論理ブロック番号（ＬＢＮ）と呼び、論理ゾーンに付けられた通番を論理ゾーン番号（ＬＺＮ）と呼んでいる。また、各論理ゾーンに含まれる論理ブロックの、各論理ゾーン内での通番を論理ゾーン内ブロック番号（ＬＺＩＢＮ）と呼んでいる。
【００５５】
また、各論理ゾーンにはそれぞれ１個の物理ゾーンが割り当てられる。論理ゾーンに含まれる各論理ブロックに対応するデータは、その論理ゾーンに割り当てられた物理ゾーンに含まれる物理ブロックに書き込まれる。従って、１個の論理ブロックに含まれるセクタ数は、１個の物理ブロックに含まれるセクタ領域の個数に応じて設定される。但し、１個の論理ブロックを複数個の物理ブロックに割り当てる場合には、その複数個の物理ブロックを１個の物理ブロックとみなして１個の論理ブロックに含まれるセクタ数を設定する。
【００５６】
図６に示した例では、１個の物理ブロックが２５６個のサブページで構成されたフラッシュメモリを想定しているため、２５６セクタが１個の論理ブロックに対応している。従って、論理ブロック番号ＬＢＮ＃０〜＃４９９の５００個の論理ブロックで構成された論理ゾーン番号ＬＺＮ＃０の論理ゾーンは、ＬＢＡ’＃０〜＃１２７９９９の１２８０００セクタの領域に対応している。以下同様に、論理ゾーン番号ＬＺＮ＃１の論理ゾーンは、ＬＢＡ’＃１２８０００〜＃２５５９９９の１２８０００セクタの領域に対応し、論理ゾーン番号ＬＺＮ＃２の論理ゾーンは、ＬＢＡ’＃２５６０００〜＃３８３９９９の１２８０００セクタの領域に対応し、論理ゾーン番号ＬＺＮ＃３の論理ゾーンは、ＬＢＡ’＃３８４０００〜＃５１１９９９の１２８０００セクタの領域に対応している。
【００５７】
また、論理ブロック番号ＬＢＮ＃０〜＃４９９の５００個の論理ブロックで構成された論理ゾーン番号ＬＺＮ＃０の論理ゾーンは、物理ブロックアドレスＰＢＡ＃０〜＃５１１の５１２個の物理ブロックで構成された物理ゾーン番号ＰＺＮ＃０の物理ゾーンに割り当てられている。以下同様に、論理ゾーン番号ＬＺＮ＃１の論理ゾーンは、物理ゾーン番号ＰＺＮ＃１の物理ゾーンに割り当てられ、論理ゾーン番号ＬＺＮ＃２の論理ゾーンは、物理ゾーン番号ＰＺＮ＃２の物理ゾーンに割り当てられ、論理ゾーン番号ＬＺＮ＃３の論理ゾーンは、物理ゾーン番号ＰＺＮ＃３の物理ゾーンに割り当てられている。ここで、物理ゾーンに含まれる物理ブロックの個数を、論理ゾーンに含まれる論理ブロックの個数より多くしているのは、同一の論理ブロックに対応する新たに書き込まれた新データと先に書き込まれていた旧データが別々の物理ブロックに並存する場合や、データを正常に書き込むことができない不良ブロックが発生した場合等を考慮したものである。
【００５８】
また、各物理ブロックには、その物理ブロックに割り当てられた論理ブロックのデータがＬＢＡ’の順番で書き込まれるので、物理ブロックと論理ブロックとの対応関係を管理することによって、システムコントローラ３から与えられるＬＢＡ’とフラッシュメモリ内のアクセス領域の対応関係を管理することができる。
【００５９】
なお、物理ブロックと論理ブロックとの対応関係は、データの書き込みや消去が行われる毎に変化する。このため、アドレス管理のために、個々の時点における両者の対応関係を管理するためアドレス変換テーブルが作成されて、ワークエリア２０８に保持されており、対応関係が変化する毎にアドレス変換テーブルが更新される。すなわち、アドレス管理とは、ホストシステムから与えられる論理アドレスとフラッシュメモリ内の物理アドレスとの対応関係を管理することである。尚、論理ゾーンと物理ゾーンとの対応関係は予め設定されており、アドレス変換テーブルは論理ゾーン毎に作成することができる。
【００６０】
このアドレス変換テーブルは、物理ブロックの先頭ページの冗長領域２６に書き込まれる論理ブロックを示す情報（以下、論理アドレス情報という。）に基づいて作成される。冗長領域２６に書き込まれる論理アドレス情報としては、論理ブロック番号ＬＢＮ等の論理ブロックを特定する情報が用いられる。尚、論理ゾーンと物理ゾーンとの対応関係が予め設定されている場合は、論理ゾーン内ブロック番号ＬＺＩＢＮに基づいてアドレス変換テーブルを作成することができるので、論理ブロック番号ＬＢＮよりデータ量の少ない論理ゾーン内ブロック番号ＬＺＩＢＮを論理アドレス情報として用いることが好ましい。
【００６１】
また、物理ブロックの先頭ページの冗長領域２６には、その物理ブロックが不良ブロックであるか否かを示すブロックステータス（フラグ）が書き込まれる。各セクタ領域に対応するサブ冗長領域には、それぞれ対応するサブページに書き込まれたユーザデータのエラーコレクションコード（ＥＣＣ）が書き込まれる。
【００６２】
次に、図７、図８を参照しながら、フラッシュメモリモジュール２Ａ〜２Ｄのレジスタ２３０のＬＢＡレジスタ２３１およびセクタ数レジスタ２３２のレジスタ値とレジスタ２５０の物理ブロックアドレスレジスタ２５１、セクタ番号レジスタ２５２、およびカウンタ２５３のレジスタ値との関係について説明する。
【００６３】
例えば、ＬＢＡ’が連続する２５６セクタの領域を、フラッシュメモリ２０２（１ブロックが６４ページで、１ページが４セクタの場合）の１個の物理ブロックに割り当てる場合について説明する。
【００６４】
図７に示すように、ＬＢＡ’の＃０から＃２５５が、論理ブロック番号ＬＢＮの＃０に対応し、以下同様に、ＬＢＡ’が連続する２５６セクタに対して、１つの論理ブロック番号ＬＢＮが割り当てられる。各論理ブロック内のセクタに付けた通番をセクタ番号ＳＮとすれば、セクタ番号ＳＮは、＃０から＃２５５で表される。
【００６５】
すなわち図８に示すように、ＬＢＡ’が連続する２５６セクタの領域を１個の論理ブロックとした場合、ＬＢＡ’の下位８ビットが論理ブロック内の各セクタに付けた通番であるセクタ番号ＳＮ（＃０〜＃２５５）を示し、このＬＢＡ’の下位８ビットを除いた上位側のビットが論理ブロック番号ＬＢＮを示している。尚、ＬＢＡ’、論理ブロック番号ＬＢＮ及びセクタ番号ＳＮのビット数については、フラッシュメモリ２０２の容量や仕様等に応じて決定される。
【００６６】
セクタ番号レジスタ２５２には、ＬＢＡレジスタ２３１に書き込まれたＬＢＡ’のセクタ番号ＳＮに対応する部分が書き込まれる。また、各物理ブロックにはＬＢＡ’の順番でユーザデータが書き込まれるので、上記のセクタ番号ＳＮは、各物理ブロックに含まれるサブページに付けられた通番（＃０〜２５５）に対応する。一方、物理ブロックアドレスレジスタ２５１には、ＬＢＡレジスタ２３１に書き込まれたＬＢＡ’の、論理ブロック番号ＬＢＮを示す部分に基づいて特定された論理ブロックと対応する物理ブロックの、物理ブロックアドレスＰＢＡまたは空きブロックの物理ブロックアドレスＰＢＡが書き込まれる。
【００６７】
つまり、特定された論理ブロックに対応する物理ブロックからユーザデータを読み出す場合、または、その物理ブロックに追加書き込みをする場合には、特定された論理ブロックと対応する物理ブロックの物理ブロックアドレスＰＢＡが物理ブロックアドレスレジスタ２５１に書き込まれる。また、特定された論理ブロックに対応するユーザデータを空きブロックに書き込む場合には、その空きブロックの物理ブロックアドレスＰＢＡが物理ブロックアドレスレジスタ２５１に書き込まれる。カウンタ２５３には、セクタ数レジスタ２３２に設定されたセクタ数が書き込まれる。
【００６８】
尚、ＬＢＡレジスタ２３１およびセクタ数レジスタ２３２に設定された情報に基づいて特定されるアクセス領域が複数の論理ブロックに跨っている場合、そのアクセス領域に対応する物理ブロックも複数個になる。このような場合、物理ブロックアドレスレジスタ２５１、セクタ番号レジスタ２５２、カウンタ２５３に対する情報の設定は論理ブロック毎に行われている。
【００６９】
読み出しや書き込みの各種処理では、コマンドレジスタ２３３に設定された外部コマンドに対応するシーケンスコマンドがＲＯＭ２１２から読み出され、このシーケンスコマンドに従ってフラッシュメモリインタフェースブロック２１０が、フラッシュメモリ２０２を制御する。
【００７０】
読み出し処理の場合、フラッシュメモリインタフェースブロック２１０が内部コマンド、アドレス情報等を出力し、フラッシュメモリ２０２から読み出したデータをバッファ２０９に保持する。ここで、フラッシュメモリ２０２に与えられる内部コマンドは、読み出しを指示する内部コマンドである。また、フラッシュメモリ２０２に与えられるアドレス情報は、物理ブロックアドレスレジスタ２５１とセクタ番号レジスタ２５２に設定されている設定値に基づいて生成される。尚、フラッシュメモリ２０２から１セクタ分のデータが読み出される毎に、セクタ番号レジスタ２５２に設定されている設定値はインクリメント（１ずつ加算）され、カウンタ２５３に設定されている設定値はデクリメント（１ずつ減算）され、インクリメントされたセクタ番号レジスタ２５２の設定値に基づいて、次のアドレス情報が生成される。尚、バッファ２０９に格納されたデータは、システムコントローラインタフェースブロック２０７と外部バス１４を介してシステムコントローラ３に転送される。
【００７１】
この読み出し処理は、カウンタ２５３に設定されている設定値が「０」になると終了する。つまり、この読み出し処理では、セクタ番号レジスタ２５２に最初に設定された設定値に対応するサブページから順番に、カウンタ２５３に最初に設定されたセクタ数分のデータが読み出される。
【００７２】
書き込み処理の場合、フラッシュメモリインタフェースブロック２１０が内部コマンド、アドレス情報等を出力すると共に、フラッシュメモリ２０２に書き込むデータを、バッファ２０９からフラッシュメモリ２０２に供給する。ここで、フラッシュメモリ２０２に与えられる内部コマンドは、書き込みを指示する内部コマンドである。また、フラッシュメモリ２０２に与えられるアドレス情報は、物理ブロックアドレスレジスタ２５１とセクタ番号レジスタ２５２に設定されている設定値に基づいて生成される。
【００７３】
この書き込み処理は、読み出し処理の場合と同様に、カウンタ２５３に設定されている設定値が「０」になると終了する。つまり、この書き込み処理では、セクタ番号レジスタ２５２に最初に設定された設定値に対応するセクタ領域から順番に、カウンタ２５３に最初に設定されたセクタ数分のデータが書き込まれる。
【００７４】
以上のように構成される本実施の形態によるフラッシュメモリシステム１において、ホストシステム１からアクセス指示が連続して与えられた場合の処理方法について、図９〜図１０を参照しながら説明する。尚、ホストシステム１がシステムコントローラ３にアクセス指示するときに与える指示情報をアクセス指示情報と言い、システムコントローラ３がフラッシュメモリモジュール２に動作指示するときに与える指示情報を動作指示情報と言う。アクセス指示情報はシステムコントローラ３のホストインタフェースブロック７内のレジスタ７０に書き込まれ、動作指示情報はメモリコントローラ２０３のシステムコントローラインタフェースブロック２０７内のレジスタ２３０に書き込まれる。システムコントローラ３は、前回のアクセス指示で与えられたアクセス指示情報をワークエリア８に保持する。
【００７５】
まず、図９のフローチャートを参照して、システムコントローラ３の動作を説明する。
ステップ３０１：
システムコントローラ３はレジスタ７０にアクセス指示情報が書き込まれたか否かを検出する。つまり、アクセス指示情報が書き込まれていないときは（ステップ３０１：Ｎｏ）、アクセス指示情報が書き込まれるのを待ち、アクセス指示情報が書き込まれたときは（ステップ３０１：Ｙｅｓ）、ステップ３０１に進む。
ステップ３０２：
レジスタ７０に書き込まれたアクセス指示情報に基づいて特定されるアクセス領域が、ワークエリア８に保持されている前回のアクセス指示情報に基づいて特定されるアクセス領域に後続する領域であるか否かを判断する。後続する領域であると判断した場合は（ステップ３０２：Ｙｅｓ）、ステップ３０３に進み、後続する領域でないと判断した場合は（ステップ３０２：Ｎｏ）、ステップ３０２に進む。尚、レジスタ７０に書き込まれたアクセス指示情報に含まれるコマンドとワークエリア８に保持されている前回のアクセス指示情報に含まれるコマンドが異なる場合は、後続する領域でないと判断する。
ステップ３０３：
フラッシュメモリモジュール２に動作指示を与える。つまり、読み出し、書き込み等を指示するコマンドとアクセス領域の先頭ＬＢＡ’とアクセス領域に含まれるセクタ数をフラッシュメモリモジュール２のレジスタ２３０に書き込む。ここで、ＬＢＡレジスタ７１に書き込まれたＬＢＡが＃ｉで、セクタ数レジスタ７２に書き込まれたセクタ数がｍの場合、ｎ＞ｍの条件を満たすｎがセクタ数レジスタ７２に書き込まれた場合のアクセス領域にアクセスできるような動作指示をフラッシュメモリモジュール２に与える。つまり、レジスタ７０に書き込まれたアクセス指示情報に基づいて特定されるアクセス領域にアクセスするときに、セクタレジスタ２３２に書き込まれる値より大きな値がセクタレジスタ２３２に書き込まれる。又、ＬＢＡレジスタ７１に＃ｉ、セクタ数レジスタ７２にｎ（ｎ＞ｍ）書き込まれた場合を想定した動作指示をフラッシュメモリモジュール２に与えたときは、フラッシュメモリモジュールインタフェースブロック１０のＬＢＡレジスタ１０１に＃ｉ、カウンタ１０２にｎを設定する。
ステップ３０４：
ワークエリア８に保持されているアクセス指示情報に基づいて特定されるアクセス領域に対するアクセス処理が終了した否かを判断する。ここで、アクセス処理の進行状況は、ＬＢＡレジスタ１０１に設定されているＬＢＡによって判断する。アクセス処理が終了したと判断した場合は（ステップ３０４：Ｙｅｓ）、ステップ３０１に進み、次のアクセス指示情報がレジスタ７０に書き込まれるのを待つ。アクセス処理が終了していないと判断した場合は（ステップ３０４：Ｎｏ）、ステップ３０５に進む。
ステップ３０５：
フラッシュメモリモジュール２に与えた動作指示に基づいたアクセス処理が終了したか否かを判断する。ここで、カウンタ１０２に設定されている値が「０」であれば、アクセス処理が終了したと判断し、「０」でなければアクセス処理が終了していないと判断する。アクセス処理が終了したと判断した場合は（ステップ３０５：Ｙｅｓ）、ステップ３０３に進み、フラッシュメモリモジュール２に新たな動作指示を与える。アクセス処理が終了していないと判断した場合は（ステップ３０５：Ｎｏ）、ステップ３０４に進む。
【００７６】
次に、具体的な例を挙げて、システムコントローラ３の動作を説明する。まず、最初のアクセス指示がホストシステム４から与えられた場合について説明する。この最初のアクセス指示では、図１０に示したＬＢＡレジスタ７１にＬＢＡとして＃０が、セクタ数レジスタ７２にはセクタ数として３２が、コマンドレジスタ７３に読み出しを指示する外部コマンドのコードが書き込まれたとする。
【００７７】
この最初のアクセス指示に基づいてシステムコントローラ３は、フラッシュメモリモジュール２Ａ〜２Ｄに動作指示を与える。この動作指示では、システムコントローラ３が、図１０に示したＬＢＡレジスタ２３１Ａ〜２３１Ｄに、アクセス領域の先頭のＬＢＡ’である「＃０」を書き込み、セクタ数レジスタ２３２Ａ〜２３２Ｄに、アクセス領域のセクタ数として「２５６」を書き込み、コマンドレジスタ２３３Ａ〜２３３Ｄに、読み出しを指示する外部コマンドのコードを書き込む。つまり、ホストシステム４から与えられたアクセス指示に基づいたアクセス領域は、ＬＢＡ＃０〜＃３１の範囲であるが、フラッシュメモリモジュール２Ａ〜２Ｄに対してはＬＢＡ＃０〜＃１０２３の範囲にアクセスできるような動作指示を与えている。
【００７８】
ここでは、論理ブロックの末尾セクタ、つまり、物理ブロックの末尾ページ（サブページ）までアクセスできるようにするためにＬＢＡ＃０〜＃１０２３の範囲にアクセスできるような動作指示を与えたが、ＬＢＡ＃０からアクセスが開始され、ＬＢＡ＃３１を超える範囲までアクセスできるような動作指示であれば、この動作指示に対応するＬＢＡの範囲は特に限定されない。
【００７９】
尚、システムコントローラ３のＬＢＡレジスタ１０１には「＃０」が、カウンタ１０２には「１０２４」が設定される。ＬＢＡレジスタ７１、セクタ数レジスタ７２、コマンドレジスタ７３に書き込まれた最初のアクセス指示情報（アクセス領域の先頭ＬＢＡと、アクセス領域のセクタ数と、外部コマンド）はワークエリア８にコピーされる。
【００８０】
フラッシュメモリモジュール２Ａ〜２Ｄが動作を開始すると、システムコントローラ３はフラッシュメモリモジュール２Ａ〜２Ｄから読み出しデータを受け取る。システムコントローラ３のＬＢＡレジスタ１０１に設定されている値は、１セクタの読み出しデータを受け取る毎にインクリメントされ、カウンタ１０２に設定されている値は、１セクタの読み出しデータを受け取る毎にデクリメントされる。
【００８１】
次に、ＬＢＡ＃３１に対応する読み出しデータをホストシステム４に転送したところで、２番目のアクセス指示がホストシステム４から与えられた場合について説明する。この２番目のアクセス指示では、ＬＢＡレジスタ７１にＬＢＡとして＃３２が、セクタ数レジスタ７２にはセクタ数として３２が、コマンドレジスタ７３に読み出しを指示する外部コマンドのコードが書き込まれたとする。
【００８２】
ワークエリア８に保持されている前回のアクセス指示情報に基づいたアクセス領域がＬＢＡ＃０〜＃３１であり、今回のアクセス指示情報に基づいたアクセス領域がＬＢＡ＃３２〜＃６３なので、フラッシュメモリモジュール２Ａ〜２Ｄに新たな動作指示を与えずに、最初のアクセス指示に応答して与えた動作指示の読み出し処理を続行させる。又、ＬＢＡレジスタ７１、セクタ数レジスタ７２、コマンドレジスタ７３に書き込まれた２番目のアクセス指示情報（アクセス領域の先頭ＬＢＡと、アクセス領域のセクタ数と、外部コマンドを示す情報）はワークエリア８にコピーされる。
【００８３】
次に、ＬＢＡ＃６３に対応する読み出しデータをホストシステム４に転送したところで、３番目のアクセス指示がホストシステム４から与えられた場合について説明する。この３番目のアクセス指示では、ＬＢＡレジスタ７１にＬＢＡとして＃６４が、セクタ数レジスタ７２にはセクタ数として３２が、コマンドレジスタ７３に読み出しを指示する外部コマンドのコードが書き込まれたとする。
【００８４】
ワークエリア８に保持されている前回のアクセス指示情報に基づいたアクセス領域がＬＢＡ＃３２〜＃６３であり、今回のアクセス指示情報に基づいたアクセス領域がＬＢＡ＃６４〜＃９５なので、フラッシュメモリモジュール２Ａ〜２Ｄに新たな動作指示を与えずに、最初のアクセス指示に応答して与えた動作指示の読み出し処理を続行させる。又、ＬＢＡレジスタ７１、セクタ数レジスタ７２、コマンドレジスタ７３に書き込まれた３番目のアクセス指示情報（アクセス領域の先頭ＬＢＡと、アクセス領域のセクタ数と、外部コマンドを示す情報）はワークエリア８にコピーされる。
【００８５】
次に、ＬＢＡ＃９５に対応する読み出しデータをホストシステム４に転送したところで、４番目のアクセス指示がホストシステム４から与えられた場合について説明する。この４番目のアクセス指示では、ＬＢＡレジスタ７１にＬＢＡとして＃５１２が、セクタ数レジスタ７２にはセクタ数として２５６が、コマンドレジスタ７３に読み出しを指示する外部コマンドのコードが書き込まれたとする。
【００８６】
ワークエリア８に保持されている前回のアクセス指示情報に基づいたアクセス領域がＬＢＡ＃６４〜＃９５であり、今回のアクセス指示情報に基づいたアクセス領域がＬＢＡ＃５１２〜＃７６７なので、フラッシュメモリモジュール２Ａ〜２Ｄに新たな動作指示を与える。この動作指示では、システムコントローラ３が、ＬＢＡレジスタ２３１Ａ〜２３１Ｄに、アクセス領域の先頭のＬＢＡ’である「＃１２８」を書き込み、セクタ数レジスタ２３２Ａ〜２３２Ｄに、アクセス領域のセクタ数として「１２８」を書き込み、コマンドレジスタ２３３Ａ〜２３３Ｄに、読み出しを指示する外部コマンドのコードを書き込む。つまり、ホストシステム４から与えられたアクセス指示に基づいたアクセス領域は、ＬＢＡ＃５１２〜＃７６７の範囲であるが、フラッシュメモリモジュール２Ａ〜２Ｄに対してはＬＢＡ＃５１２〜＃１０２３の範囲にアクセスできるような動作指示を与えている。
【００８７】
尚、システムコントローラ３のＬＢＡレジスタ１０１には「＃５１２」が、カウンタ１０２には「５１２」が設定される。又、ＬＢＡレジスタ７１、セクタ数レジスタ７２、コマンドレジスタ７３に書き込まれた４番目のアクセス指示情報（アクセス領域の先頭ＬＢＡと、アクセス領域のセクタ数と、外部コマンドを示す情報）はワークエリア８にコピーされる。
【００８８】
次に、ＬＢＡ＃７６７に対応する読み出しデータをホストシステム４に転送したところで、５番目のアクセス指示がホストシステム４から与えられた場合について説明する。この５番目のアクセス指示では、ＬＢＡレジスタ７１にＬＢＡとして＃７６８が、セクタ数レジスタ７２にはセクタ数として５１２が、コマンドレジスタ７３に読み出しを指示する外部コマンドのコードが書き込まれたとする。
【００８９】
ワークエリア８に保持されている前回のアクセス指示情報に基づいたアクセス領域がＬＢＡ＃５１２〜＃７６７であり、今回のアクセス指示情報に基づいたアクセス領域がＬＢＡ＃７６８〜＃１２７９なので、フラッシュメモリモジュール２Ａ〜２Ｄに新たな動作指示を与えずに、最初のアクセス指示に応答して与えた動作指示の読み出し処理を続行させる。又、ＬＢＡレジスタ７１、セクタ数レジスタ７２、コマンドレジスタ７３に書き込まれた５番目のアクセス指示情報（アクセス領域の先頭ＬＢＡと、アクセス領域のセクタ数と、外部コマンドを示す情報）はワークエリア８にコピーされる。
【００９０】
次に、ＬＢＡ＃１０２３に対応する読み出しデータをホストシステム４に転送したところで、４番目のアクセス指示に応答して与えた動作指示の読み出し処理が終了するので、フラッシュメモリモジュール２Ａ〜２Ｄに新たな動作指示を与える。この動作指示では、システムコントローラ３が、ＬＢＡレジスタ２３１Ａ〜２３１Ｄに、アクセス領域の先頭のＬＢＡ’である「＃２５６」を書き込み、セクタ数レジスタ２３２Ａ〜２３２Ｄに、アクセス領域のセクタ数として「２５６」を書き込み、コマンドレジスタ２３３Ａ〜２３３Ｄに、読み出しを指示する外部コマンドのコードを書き込む。つまり、フラッシュメモリモジュール２Ａ〜２Ｄに対してＬＢＡ＃１０２４〜＃２０４７の範囲にアクセスできるような動作指示を与えている。
【００９１】
尚、システムコントローラ３のＬＢＡレジスタ１０１には「＃１０２４」が、カウンタ１０２には「１０２４」が設定される。
【００９２】
上記説明においては、読み出し処理を例にして説明したが、書き込み処理についても同様に実行することができる。尚、前回の動作指示情報に基づいた書き込み処理が終了する前に次の動作指示情報がフラッシュメモリモジュール２に与えられたときには、フラッシュメモリモジュール２に転送済みのデータが未だフラッシュメモリ２０２に書き込まれていない場合がある。このような場合、フラッシュメモリモジュール２は、与えられたデータを全てフラッシュメモリ２０２に書き込んだ後に次の動作指示情報に基づいた処理を開始する。
【００９３】
以上詳細に説明したように、本実施の形態によるフラッシュメモリシステム１によれば、ホストシステム４から与えられたアクセス指示を与えられたときに、システムコントローラ３は、そのアクセス指示情報に基づいて特定されるアクセス領域とその後続領域を含む領域（以下、拡張アクセス領域と言う。）にアクセスするための動作指示をフラッシュメモリモジュール２に与える。このような動作指示を与えた後に、アクセス領域が連続しているアクセス指示が複数回与えられ、それらのアクセス指示情報に基づいて特定されるアクセス領域が、既にフラッシュメモリモジュール２に与えられている動作指示に対応する拡張アクセス領域に含まれている場合には、新たな動作指示をフラッシュメモリモジュール２に与えることなく、アクセス処理を続行させることができる。従って、ホストシステムから与えられるアクセス指示の回数よりも、システムコントローラ３がフラッシュメモリモジュール２に与える動作指示の回数を少なくすることができる。このようにフラッシュメモリモジュール２に与える動作指示の回数を少なくすれば、フラッシュメモリモジュール２が動作指示を与えられるのを待つ時間を少なくすることができる。更に、複数に分割されていた動作指示が実質的に１つの動作指示にまとめられたことになるため、フラッシュメモリモジュール２におけるアクセス処理の処理効率も向上させることができる。
【００９４】
尚、フラッシュメモリモジュール２Ａ〜２Ｄに動作指示を与えるときは、実際のアクセス領域に後続領域を付加した拡張アクセス領域にアクセスすることをホストシステムから指示されたと見なして、フラッシュメモリモジュール２Ａ〜２Ｄに動作指示を与えればよいので、フラッシュメモリモジュール２Ａ〜２Ｄに対する振り分け方に影響されることなく実施することができる。
【００９５】
又、本発明のシステムコントローラ、システムコントローラを有するフラッシュメモリシステム、およびフラッシュメモリモジュールの制御方法は、上述した実施の形態に限定されず、特許請求の範囲に記載した範囲で種々の変形や改良が可能である。例えば、システムコントローラ３、メモリコントローラ２０３の機能構成は上記に限定されず、同様の機能を有するものであれば他の構成でもよい。
【図面の簡単な説明】
【００９６】
【図１】本発明の一実施の形態によるフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】フラッシュメモリモジュールの概略構成を示すブロック図である。
【図３】ホストインタフェースブロックおよびフラッシュメモリモジュールインタフェースブロックが備えるレジスタの構成を示すブロック図である。
【図４】システムコントローラインタフェースブロックおよびフラッシュメモリインタフェースブロックが備えるレジスタの構成を示すブロック図である。
【図５】フラッシュメモリにおける物理アドレス空間を示す図である。
【図６】ＬＢＡ’から物理ブロックアドレスへのアドレス変換を説明する図である。
【図７】ＬＢＡ’、論理ブロック番号、セクタ番号を示す図である。
【図８】ＬＢＡから、物理ブロックアドレスレジスタおよびセクタ番号レジスタに設定する値を生成する方法を説明する図である。
【図９】本実施の形態によるシステムコントローラの動作を説明するフローチャートである。
【図１０】システムコントローラに与えられるアクセス指示情報とフラッシュメモリモジュールに与えられる動作指示情報の関係を説明する図である。
【図１１】フラッシュメモリモジュールに対するアクセス領域の振り分けを説明する図である。
【図１２】ＬＢＡとＬＢＡ’の関係を示す図である。
【符号の説明】
【００９７】
１  フラッシュメモリシステム
２Ａ〜２Ｄ  フラッシュメモリモジュール
３  システムコントローラ
４  ホストシステム
６  マイクロプロセッサ
７  ホストインタフェースブロック
８  ワークエリア
９  バッファ
１０  フラッシュメモリモジュールインタフェースブロック
１２  ＲＯＭ
【図１】
2008033425.tif 000003
【図２】
2008033425.tif 000004
【図３】
2008033425.tif 000005
【図４】
2008033425.tif 000006
【図５】
2008033425.tif 000007
【図６】
2008033425.tif 000008
【図７】
2008033425.tif 000009
【図８】
2008033425.tif 000010
【図９】
2008033425.tif 000011
【図１０】
2008033425.tif 000012
【図１１】
2008033425.tif 000013
【図１２】
2008033425.tif 000014