(57)【特許請求の範囲】
【請求項１】
フラッシュメモリと当該フラッシュメモリへのアクセスを制御するフラッシュメモリコントローラとからなる２ｎ個（ｎは１以上の整数）のフラッシュメモリ装置に、ホストシステムから与えられるセクタ単位の論理アドレスが割り当てられている領域を２ｍセクタ（ｍは１以上の整数）の振り分け単位で振り分けるアクセスコントローラであって、
ホストシステムから与えられるアクセス指示により指定されたアクセス対象領域の先頭の論理アドレスとアクセス対象領域のセクタ数に基づいて、それぞれのフラッシュメモリ装置においてアクセス先となる領域のセクタ数を算出するセクタ数算出手段と、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスとアクセス対象領域のセクタ数に基づいて、それぞれのフラッシュメモリ装置においてアクセス先となる領域の先頭のアドレスを生成するアドレス生成手段と、
前記セクタ数算出手段により算出されたセクタ数及び前記アドレス生成手段により生成されたアドレスを、アクセス先の領域を指示する情報として、それぞれのフラッシュメモリ装置に与える制御手段とを備え、
フラッシュメモリ装置には、０から２ｎ−１の装置番号が割り当てられており、ホストシステムから与えられる論理アドレスに対応する領域は、当該論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのビットの値と一致する前記装置番号が割り当てられているフラッシュメモリ装置に振り分けられ、
前記セクタ数算出手段は、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのｎビットに基づいて、当該論理アドレスに対応する領域を含む先頭領域の振り分け先のフラッシュメモリ装置である起点装置を特定すると共に、当該論理アドレスの下位ｍビットに基づいて、当該先頭領域のセクタ数である第１のセクタ数を求め、更に、前記アクセス指示により指定されたアクセス対象領域のセクタ数から前記第１のセクタ数を引いて得られた値を振り分け単位の２ｍで割る除算を行い、当該除算の商に基づいて、それぞれの前記フラッシュメモリ装置においてアクセス先となる２ｍセクタの振り分け単位の領域の個数を求めると共に、２ｍセクタ未満の領域であって当該除算の余りに一致するセクタ数の領域を含む末尾領域の振り分け先のフラッシュメモリ装置を特定することにより、それぞれのフラッシュメモリ装置においてアクセス先となる領域のセクタ数を算出し、
前記アドレス生成手段は、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスを、当該論理アドレスの下位ｍビットに対応する第１のビット列と、当該論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのビットに対応する第２のビット列と、当該論理アドレスの下位側から数えてｍ＋ｎビット目のビットより上位側のビットに対応する第３のビット列に分割し、
前記第３のビット列の下位側に前記第１のビット列を連結したものを、前記起点装置のフラッシュメモリ装置に与えるアドレスとして生成し、前記第１のビット列の全てのビットを“０”で置き換えたうえで、当該第１のビット列を前記第３のビット列の下位側に連結したものを、前記起点装置に対応する前記装置番号より大きい前記装置番号が割り当てられているフラッシュメモリ装置に与えるアドレスとして生成し、前記第１のビット列の全てのビットを“０”で置き換えると共に、前記第３のビット列に１を加算したうえで、当該第１のビット列を当該第３のビット列の下位側に連結したものを、前記起点装置に対応する前記装置番号より小さい前記装置番号が割り当てられているフラッシュメモリ装置に与えるアドレスとして生成する
ことを特徴とするアクセスコントローラ。
【請求項２】
請求項１に記載のアクセスコントローラと、フラッシュメモリと当該フラッシュメモリへのアクセスを制御するフラッシュメモリコントローラとからなる２ｎ個（ｎは１以上の整数）のフラッシュメモリ装置と、から構成される
ことを特徴とするフラッシュメモリシステム。
【請求項３】
フラッシュメモリと当該フラッシュメモリへのアクセスを制御するフラッシュメモリコントローラとからなる２ｎ個（ｎは１以上の整数）のフラッシュメモリ装置に、ホストシステムから与えられるセクタ単位の論理アドレスが割り当てられている領域を２ｍセクタ（ｍは１以上の整数）の振り分け単位で振り分けるアクセス制御方法であって、
ホストシステムから与えられるアクセス指示により指定されたアクセス対象領域の先頭の論理アドレスとアクセス対象領域のセクタ数に基づいて、それぞれのフラッシュメモリ装置においてアクセス先となる領域のセクタ数を算出するセクタ数算出ステップと、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスとアクセス対象領域のセクタ数に基づいて、それぞれのフラッシュメモリ装置においてアクセス先となる領域の先頭のアドレスを生成するアドレス生成ステップと、
前記セクタ数算出ステップにより算出されたセクタ数及び前記アドレス生成ステップにより生成されたアドレスを、アクセス先の領域を指示する情報として、それぞれのフラッシュメモリ装置に与える制御ステップとを備え、
フラッシュメモリ装置には、０から２ｎ−１の装置番号が割り当てられており、ホストシステムから与えられる論理アドレスに対応する領域は、当該論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのビットの値と一致する前記装置番号が割り当てられているフラッシュメモリ装置に振り分けられ、
前記セクタ数算出ステップでは、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのｎビットに基づいて、当該論理アドレスに対応する領域を含む先頭領域の振り分け先のフラッシュメモリ装置である起点装置を特定すると共に、当該論理アドレスの下位ｍビットに基づいて、当該先頭領域のセクタ数である第１のセクタ数を求め、更に、前記アクセス指示により指定されたアクセス対象領域のセクタ数から前記第１のセクタ数を引いて得られた値を振り分け単位の２ｍで割る除算を行い、当該除算の商に基づいて、それぞれの前記フラッシュメモリ装置においてアクセス先となる２ｍセクタの振り分け単位の領域の個数を求めると共に、２ｍセクタ未満の領域であって当該除算の余りに一致するセクタ数の領域を含む末尾領域の振り分け先のフラッシュメモリ装置を特定することにより、それぞれのフラッシュメモリ装置においてアクセス先となる領域のセクタ数を算出し、
前記アドレス生成ステップでは、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスを、当該論理アドレスの下位ｍビットに対応する第１のビット列と、当該論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのビットに対応する第２のビット列と、当該論理アドレスの下位側から数えてｍ＋ｎビット目のビットより上位側のビットに対応する第３のビット列に分割し、
前記第３のビット列の下位側に前記第１のビット列を連結したものを、前記起点装置のフラッシュメモリ装置に与えるアドレスとして生成し、前記第１のビット列の全てのビットを“０”で置き換えたうえで、当該第１のビット列を前記第３のビット列の下位側に連結したものを、前記起点装置に対応する前記装置番号より大きい前記装置番号が割り当てられているフラッシュメモリ装置に与えるアドレスとして生成し、前記第１のビット列の全てのビットを“０”で置き換えると共に、前記第３のビット列に１を加算したうえで、当該第１のビット列を当該第３のビット列の下位側に連結したものを、前記起点装置に対応する前記装置番号より小さい前記装置番号が割り当てられているフラッシュメモリ装置に与えるアドレスとして生成する
ことを特徴とするアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセスコントローラ、当該アクセスコントローラを備えるフラッシュメモリシステム及びアクセス制御方法に関する。
【背景技術】
【０００２】
近年、不揮発性の記録媒体であるフラッシュメモリの開発が盛んに行われ、デジタルカメラ等の情報機器（ホストシステム）の記憶媒体として普及している。
【０００３】
このような機器が扱うデータが大容量化したことに伴い、複数のフラッシュメモリの記憶容量も大容量化が進んでいる。このように大容量化したフラッシュメモリの記憶領域を円滑に管理するため、近年は、この記憶領域を複数のゾーンに分割して管理する手法が用いられている（例えば特許文献１を参照）。
【０００４】
さらに、近年では、複数のフラッシュメモリを並列して使用することが行われている。
【０００５】
複数のフラッシュメモリを使用する場合には、ホストシステム側の論理アドレス空間を複数のフラッシュメモリで均等に分割して割り当てている。
例えば、フラッシュメモリが２ｎ個配置されている場合には、ホストシステムから与えられるＬＢＡ（Logical  Block  Address）の上位ｎビットを用いて、フラッシュメモリの１つを特定し、その上位ｎビットを除いたＬＢＡの下位ビットで、フラッシュメモリ内の物理アドレス空間におけるアドレスを特定している。
【特許文献１】特開２００５−１８４９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
各フラッシュメモリにこのようにして論理アドレス空間を割り当てた場合、ＬＢＡが特定の範囲にあるセクタ（例えば、ファイルアロケーションテーブルが格納されるセクタ等）にデータの書き込みや書き換えが集中すれば、そのＬＢＡが割り当てられたフラッシュメモリに書き込みが集中して、そのフラッシュメモリの劣化（不良ブロック化）だけが極端に早まる、という問題が生じることがある。
【０００７】
本発明は上記の実情に鑑みてなされたもので、データの書き込みが特定のフラッシュメモリに集中することを回避できる複数のフラッシュメモリをアクセスするためのアクセスコントローラ、当該アクセスコントローラを備えるフラッシュメモリシステム及びアクセス制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明のアクセスコントローラは、
フラッシュメモリと当該フラッシュメモリへのアクセスを制御するフラッシュメモリコントローラとからなる２ｎ個（ｎは１以上の整数）のフラッシュメモリ装置に、ホストシステムから与えられるセクタ単位の論理アドレスが割り当てられている領域を２ｍセクタ（ｍは１以上の整数）の振り分け単位で振り分けるアクセスコントローラであって、
ホストシステムから与えられるアクセス指示により指定されたアクセス対象領域の先頭の論理アドレスとアクセス対象領域のセクタ数に基づいて、それぞれのフラッシュメモリ装置においてアクセス先となる領域のセクタ数を算出するセクタ数算出手段と、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスとアクセス対象領域のセクタ数に基づいて、それぞれのフラッシュメモリ装置においてアクセス先となる領域の先頭のアドレスを生成するアドレス生成手段と、
前記セクタ数算出手段により算出されたセクタ数及び前記アドレス生成手段により生成されたアドレスを、アクセス先の領域を指示する情報として、それぞれのフラッシュメモリ装置に与える制御手段とを備え、
フラッシュメモリ装置には、０から２ｎ−１の装置番号が割り当てられており、ホストシステムから与えられる論理アドレスに対応する領域は、当該論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのビットの値と一致する前記装置番号が割り当てられているフラッシュメモリ装置に振り分けられ、
前記セクタ数算出手段は、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのｎビットに基づいて、当該論理アドレスに対応する領域を含む先頭領域の振り分け先のフラッシュメモリ装置である起点装置を特定すると共に、当該論理アドレスの下位ｍビットに基づいて、当該先頭領域のセクタ数である第１のセクタ数を求め、更に、前記アクセス指示により指定されたアクセス対象領域のセクタ数から前記第１のセクタ数を引いて得られた値を振り分け単位の２ｍで割る除算を行い、当該除算の商に基づいて、それぞれの前記フラッシュメモリ装置においてアクセス先となる２ｍセクタの振り分け単位の領域の個数を求めると共に、２ｍセクタ未満の領域であって当該除算の余りに一致するセクタ数の領域を含む末尾領域の振り分け先のフラッシュメモリ装置を特定することにより、それぞれのフラッシュメモリ装置においてアクセス先となる領域のセクタ数を算出し、
前記アドレス生成手段は、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスを、当該論理アドレスの下位ｍビットに対応する第１のビット列と、当該論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのビットに対応する第２のビット列と、当該論理アドレスの下位側から数えてｍ＋ｎビット目のビットより上位側のビットに対応する第３のビット列に分割し、
前記第３のビット列の下位側に前記第１のビット列を連結したものを、前記起点装置のフラッシュメモリ装置に与えるアドレスとして生成し、前記第１のビット列の全てのビットを“０”で置き換えたうえで、当該第１のビット列を前記第３のビット列の下位側に連結したものを、前記起点装置に対応する前記装置番号より大きい前記装置番号が割り当てられているフラッシュメモリ装置に与えるアドレスとして生成し、前記第１のビット列の全てのビットを“０”で置き換えると共に、前記第３のビット列に１を加算したうえで、当該第１のビット列を当該第３のビット列の下位側に連結したものを、前記起点装置に対応する前記装置番号より小さい前記装置番号が割り当てられているフラッシュメモリ装置に与えるアドレスとして生成する
ことを特徴とする。
【００１２】
フラッシュメモリシステムを上述のアクセスコントローラと、フラッシュメモリと当該フラッシュメモリへのアクセスを制御するフラッシュメモリコントローラとからなる２ｎ個（ｎは１以上の整数）のフラッシュメモリ装置と、から構成してもよい。
【００１３】
上記目的を達成するため、本発明のアクセス制御方法は、
フラッシュメモリと当該フラッシュメモリへのアクセスを制御するフラッシュメモリコントローラとからなる２ｎ個（ｎは１以上の整数）のフラッシュメモリ装置に、ホストシステムから与えられるセクタ単位の論理アドレスが割り当てられている領域を２ｍセクタ（ｍは１以上の整数）の振り分け単位で振り分けるアクセス制御方法であって、
ホストシステムから与えられるアクセス指示により指定されたアクセス対象領域の先頭の論理アドレスとアクセス対象領域のセクタ数に基づいて、それぞれのフラッシュメモリ装置においてアクセス先となる領域のセクタ数を算出するセクタ数算出ステップと、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスとアクセス対象領域のセクタ数に基づいて、それぞれのフラッシュメモリ装置においてアクセス先となる領域の先頭のアドレスを生成するアドレス生成ステップと、
前記セクタ数算出ステップにより算出されたセクタ数及び前記アドレス生成ステップにより生成されたアドレスを、アクセス先の領域を指示する情報として、それぞれのフラッシュメモリ装置に与える制御ステップとを備え、
フラッシュメモリ装置には、０から２ｎ−１の装置番号が割り当てられており、ホストシステムから与えられる論理アドレスに対応する領域は、当該論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのビットの値と一致する前記装置番号が割り当てられているフラッシュメモリ装置に振り分けられ、
前記セクタ数算出ステップでは、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのｎビットに基づいて、当該論理アドレスに対応する領域を含む先頭領域の振り分け先のフラッシュメモリ装置である起点装置を特定すると共に、当該論理アドレスの下位ｍビットに基づいて、当該先頭領域のセクタ数である第１のセクタ数を求め、更に、前記アクセス指示により指定されたアクセス対象領域のセクタ数から前記第１のセクタ数を引いて得られた値を振り分け単位の２ｍで割る除算を行い、当該除算の商に基づいて、それぞれの前記フラッシュメモリ装置においてアクセス先となる２ｍセクタの振り分け単位の領域の個数を求めると共に、２ｍセクタ未満の領域であって当該除算の余りに一致するセクタ数の領域を含む末尾領域の振り分け先のフラッシュメモリ装置を特定することにより、それぞれのフラッシュメモリ装置においてアクセス先となる領域のセクタ数を算出し、
前記アドレス生成ステップでは、
前記アクセス指示により指定されたアクセス対象領域の先頭の論理アドレスを、当該論理アドレスの下位ｍビットに対応する第１のビット列と、当該論理アドレスの下位側から数えてｍ＋１ビット目からｍ＋ｎビット目までのビットに対応する第２のビット列と、当該論理アドレスの下位側から数えてｍ＋ｎビット目のビットより上位側のビットに対応する第３のビット列に分割し、
前記第３のビット列の下位側に前記第１のビット列を連結したものを、前記起点装置のフラッシュメモリ装置に与えるアドレスとして生成し、前記第１のビット列の全てのビットを“０”で置き換えたうえで、当該第１のビット列を前記第３のビット列の下位側に連結したものを、前記起点装置に対応する前記装置番号より大きい前記装置番号が割り当てられているフラッシュメモリ装置に与えるアドレスとして生成し、前記第１のビット列の全てのビットを“０”で置き換えると共に、前記第３のビット列に１を加算したうえで、当該第１のビット列を当該第３のビット列の下位側に連結したものを、前記起点装置に対応する前記装置番号より小さい前記装置番号が割り当てられているフラッシュメモリ装置に与えるアドレスとして生成する
ことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、データの書き込みが特定のフラッシュメモリに集中することを回避できるアクセスコントローラ、及び当該アクセスコントローラを備えるフラッシュメモリシステムが実現される。つまり、ＬＢＡで特定される論理アドレス空間を任意のセクタ数単位で複数のフラッシュメモリに順次割り当てるようにしたので、ＬＢＡの特定の範囲にアクセスが集中した場合でも、複数のフラッシュメモリにアクセスが分散され、特定のフラッシュメモリにアクセスが集中することを回避することができる。
【発明を実施するための最良の形態】
【００１６】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
【００１７】
図１は、本発明に係るフラッシュメモリシステム１を概略的に示すブロック図である。図１に示すように、フラッシュメモリシステム１は、２ｎ台（図１では４＝２２台）のフラッシュメモリ装置２（２Ａ〜２Ｄ）と、それを制御するアクセスコントローラ３で構成されている。
【００１８】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１９】
フラッシュメモリ装置２Ａ〜２Ｄは、互いに同一の構成を有する記憶装置であり、アクセスコントローラ３を上位装置として、フラッシュメモリ（チップ）へのアクセスを行う。
【００２０】
アクセスコントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリ装置インターフェースブロック１０と、ＲＯＭ（Read Only Memory）１２と、から構成される。これら機能ブロックによって構成されるアクセスコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００２１】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、アクセスコントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理等を定義したコマンドセットをＲＯＭ１２から読み出してフラッシュメモリ装置インターフェースブロック１０に供給し、フラッシュメモリ装置インターフェースブロック１０に処理を実行させる。
【００２２】
ホストインターフェースブロック７は、図３（ａ）に示すようにコマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えており、ホストシステム４との間で、データ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部（例えば、バッファ９）に取り込まれる。また、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００２３】
ワークエリア８は、フラッシュメモリ装置２Ａ〜２Ｄの制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００２４】
バッファ９は、フラッシュメモリ装置２Ａ〜２Ｄからそれぞれ読み出されたデータ及びフラッシュメモリ装置２Ａ〜２Ｄに書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ装置２Ａ〜２Ｄから読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ領域９に保持され、フラッシュメモリ装置２Ａ〜２Ｄに書き込むべきデータは、フラッシュメモリ装置２Ａ〜２Ｄが書き込み可能な状態となるまでバッファ領域９に保持される。
【００２５】
フラッシュメモリ装置インターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ装置２Ａ〜２Ｄとデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行う。
【００２６】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。
【００２７】
次に、フラッシュメモリ装置２Ａ〜２Ｄについて説明する。
フラッシュメモリ装置２Ａ〜２Ｄは、互いに同一の構成を有している。図２に、例として、フラッシュメモリ装置２Ａの構成を示す。
【００２８】
各フラッシュメモリ装置２Ａは、図２に示すように、フラッシュメモリ２０２と、それを制御するフラッシュメモリアクセスコントローラ２０３で構成されている。
【００２９】
フラッシュメモリアクセスコントローラ２０３は、図２に示すように、マイクロプロセッサ２０６と、アクセスコントローラインターフェースブロック２０７と、ワークエリア２０８と、バッファ２０９と、フラッシュメモリインターフェースブロック２１０と、ＥＣＣ（エラー・コレクション・コード）ブロック２１１と、ＲＯＭ（Read Only Memory）２１２と、から構成され、内部バス１４を介してアクセスコントローラ３と接続される。これら機能ブロックによって構成されるフラッシュメモリコントローラ２０３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００３０】
マイクロプロセッサ２０６は、ＲＯＭ２１２に記憶されているプログラムに従って、フラッシュメモリアクセスコントローラ２０３の全体の動作を制御する。例えば、マイクロプロセッサ２０６は、各種処理等を定義したコマンドセットをＲＯＭ２１２から読み出してフラッシュメモリインターフェースブロック２１０に供給し、フラッシュメモリインターフェースブロック２１０に処理を実行させる。
【００３１】
アクセスコントローラインターフェースブロック２０７は、図３（ｂ）に示すようにコマンドレジスタＲ２１、セクタ数レジスタＲ２２及びＬＢＡレジスタＲ２３を備えており、アクセスコントローラ３との間で、データ、アドレス情報、ステータス情報、コマンド等の授受を行なう。アクセスコントローラ３よりフラッシュメモリ装置２Ａに供給されるデータ等は、アクセスコントローラインターフェースブロック２０７を入口としてフラッシュメモリ装置２Ａの内部（例えば、バッファ２０９）に取り込まれる。また、フラッシュメモリ装置２Ａからアクセスコントローラ３に供給されるデータ等は、アクセスコントローラインターフェースブロック２０７を出口としてアクセスコントローラ３に供給される。
【００３２】
ワークエリア２０８は、フラッシュメモリ２０２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００３３】
バッファ２０９は、フラッシュメモリ２０２からそれぞれ読み出されたデータ及びフラッシュメモリ２０２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２０２から読み出されたデータは、アクセスコントローラ３が受け取り可能な状態となるまでバッファ２０９に保持され、フラッシュメモリ２０２に書き込むべきデータは、フラッシュメモリ２０２が書き込み可能な状態となるまでバッファ２０９に保持される。
【００３４】
フラッシュメモリインターフェースブロック２１０は、内部バス２１４を介して、フラッシュメモリ２０２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。
【００３５】
ＥＣＣブロック２１１は、フラッシュメモリ２０２に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００３６】
ＲＯＭ２１２は、マイクロプロセッサ２０６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ２１２は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
【００３７】
このように構成されるフラッシュメモリシステム１において、ホストシステム４がフラッシュメモリ２０２（フラッシュメモリ装置２Ａ〜２Ｄ内のフラッシュメモリ２０２）に格納されているデータを読み出す場合、ホストシステム４は、アクセスコントローラ３のホストインターフェースブロック７のセクタ数レジスタＲ２に、読み出すデータのセクタ数を設定し、ＬＢＡレジスタＲ３に、読み出すデータのＬＢＡ（Logical  Block  Address）の先頭値を設定し、その後、コマンドレジスタＲ１に、読み出し処理を指示する外部コマンドを設定する。ここで、ホストシステム４から与えられるＬＢＡは、ホストシステム４側で管理されている論理アドレス空間におけるセクタ（５１２バイト）単位のアドレスである。
【００３８】
アクセスコントローラ３は、読み出し処理を指示する外部コマンドが、コマンドレジスタＲ１に設定されると、各フラッシュメモリ装置２Ａ〜２Ｄに対する読み出し処理の割振りを開始する。
【００３９】
この読み出し処理の割振りにおいて、アクセスコントローラ３は、各フラッシュメモリ装置２Ａ〜２Ｄに割り振られるアクセス対象データの、各フラッシュメモリ装置２Ａ〜２Ｄ内での先頭セクタのＬＢＡとセクタ数（データ量）とを求める。続いて、各フラッシュメモリ装置２Ａ〜２Ｄのアクセスコントローラインターフェースブロック２０７のセクタ数レジスタＲ２２に、各フラッシュメモリ装置２Ａ〜２Ｄから読み出すデータのセクタ数を設定し、各フラッシュメモリ装置２Ａ〜２ＤのＬＢＡレジスタＲ２３に、各フラッシュメモリ装置２Ａ〜２Ｄから読み出すデータのＬＢＡの先頭値を設定し、その後、各フラッシュメモリ装置２Ａ〜２ＤのコマンドレジスタＲ２１に、読み出し処理を指示する外部コマンドを設定する。
【００４０】
各フラッシュメモリ装置２Ａ〜２Ｄは、読み出し処理を指示する外部コマンドが、コマンドレジスタＲ２１に設定されると、読み出し処理を開始する。
【００４１】
同様に、ホストシステム４がフラッシュメモリ２０２（フラッシュメモリ装置２Ａ〜２Ｄ）にデータを書き込む場合、ホストシステム４は、ホストインターフェースブロック７のセクタ数レジスタＲ２に、書き込むデータのセクタ数を設定し、ＬＢＡレジスタＲ３に、書き込むデータのＬＢＡの先頭値を設定し、その後、コマンドレジスタＲ１に、書き込みを指示する外部コマンドを設定する。その後、書き込み対象のデータを順次送信する。
【００４２】
アクセスコントローラ３は、書き込み処理を指示する外部コマンドが、コマンドレジスタＲ１に設定されると、各フラッシュメモリ装置２Ａ〜２Ｄに対する書き込み処理の割振りを開始する。
【００４３】
この書き込み処理の割振りにおいて、アクセスコントローラ３は、各フラッシュメモリ装置２Ａ〜２Ｄに割り振られる書き込み対象データの、各フラッシュメモリ装置２Ａ〜２Ｄ内での先頭セクタのＬＢＡとセクタ数（データ量）とを求める。続いて、各フラッシュメモリ装置２Ａ〜２Ｄのアクセスコントローラインターフェースブロック２０７のセクタ数レジスタＲ２２に、各フラッシュメモリ装置２Ａ〜２Ｄに書込むデータのセクタ数を設定し、各フラッシュメモリ装置２Ａ〜２ＤのＬＢＡレジスタＲ２３に、各フラッシュメモリ装置２Ａ〜２Ｄに書き込むデータのＬＢＡの先頭値を設定し、その後、各フラッシュメモリ装置２Ａ〜２ＤのコマンドレジスタＲ２１に、書き込み処理を指示する外部コマンドを設定する。
【００４４】
さらに、アクセスコントローラ３は、ホストシステム４から供給されるデータ（書き込み対象データ）を対応するフラッシュメモリ装置２Ａ〜２Ｄに割り振って供給する。
【００４５】
各フラッシュメモリ装置２Ａ〜２Ｄは、書き込み処理を指示する外部コマンドが、コマンドレジスタＲ２１に設定されると、書き込み処理を開始する。
【００４６】
図２に示すフラッシュメモリ２０２は、不揮発性メモリであり、レジスタと、メモリセルアレイと、から構成される。フラッシュメモリ２０２は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００４７】
フラッシュメモリ２０２のメモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００４８】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００４９】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧をコントロールゲートとフローティングゲート間に印加する。
【００５０】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００５１】
このようなフラッシュメモリ２０２のアドレス空間を図４に示す。フラッシュメモリ２０２のアドレス空間は、“ページ”及び“ブロック（物理ブロック）”で構成されている。
【００５２】
ページは、フラッシュメモリ２０２にて行われるデータ読み出し動作及びデータ書き込み動作における処理単位である。物理ブロックは、フラッシュメモリ２０２にて行われるデータ消去動作における処理単位であり、複数個のページで構成されている。図示したフラッシュメモリでは、１つのページは、１セクタ（５１２バイト）のユーザ領域２５と、１６バイトの冗長領域２６で構成され、１つの物理ブロックは３２個のページで構成されている。なお、１つのページが４セクタのユーザ領域と６４バイトの冗長領域で構成され、１つの物理ブロックが６４個のページで構成されているフラッシュメモリもある。ユーザ領域２５は、ホストシステム４から供給されるユーザデータを格納する。
【００５３】
次に、上記構成のフラッシュメモリシステム１のアクセスコントローラ３によって行われるアクセス対象の割振りについて説明する。
【００５４】
本実施の形態においては、アクセスコントローラ３が、ＬＢＡによって指定される各セクタを、設定されている対応関係に従って、４つのフラッシュメモリ装置２Ａ〜２Ｄに順番に割り振っている。この様にすることにより、特定のフラッシュメモリ装置２Ａ〜２Ｄ、つまり、特定のフラッシュメモリ２０２にアクセスが集中することを防止している。
【００５５】
例えば、図５（ａ）に示すように、ホストシステム４から与えられるＬＢＡを１６ビットとして、この割振りを説明する。又、以下の説明では、フラッシュメモリ２０２の物理ブロックが３２ページで構成され、１ページが１セクタ（５１２バイト）に対応するものとして説明する。
【００５６】
割振りを行わなかった場合、つまり、フラッシュメモリシステムが１個のフラッシュメモリ装置で構成されていた場合、ＬＢＡの上位１１ビットが、論理ブロックに付けられた通番である論理ブロック番号ＬＢＮを示し、下位５ビットが、論理ブロック内のセクタに付けられた通番であるセクタ番号ＳＮを示していると判別する。
【００５７】
又、複数の論理ブロックで論理ゾーンを形成して、論理ゾーン単位でアドレス変換を行う場合には、論理ブロック番号ＬＢＮを、論理ゾーンに含まれる論理ブロックの数で割った商が論理ゾーン番号（論理ゾーンに付けられた通番）ＬＺＮとなり、余りが論理ゾーン内ブロック番号（論理ゾーン内での論理ブロックの通番）ＬＺＩＢＮになる。尚、物理ブロックの各ページには、セクタ番号の順番でデータが格納されるので、１ページが１セクタのフラッシュメモリの場合、セクタ番号ＳＮとページ番号（物理ブロック内のページに付けられた通番）ＰＮとは一致する。
【００５８】
又、この割振りを行わないで、ホストシステム側の論理ブロック空間を複数のフラッシュメモリ装置に割り当てる場合には、論理アドレス空間を各フラッシュメモリ装置に割り当てられるセクタ数に応じて分割し、分割した論理アドレス空間が各フラッシュメモリ装置に割り当てられる。例えば、各フラッシュメモリ装置に１２８０００セクタ（４０００個の論理ブロック）を割り当てる場合、ＬＢＡ＃０〜＃１２７９９９のセクタが最初のフラッシュメモリ装置に割り当てられ、ＬＢＡ＃１２８０００〜＃２５５９９９のセクタが次のフラッシュメモリ装置に割り当てられる。
【００５９】
これに対して、本実施の形態では、図５（ａ）に示すように、１６ビットのＬＢＡの下位から１ビット目と２ビット目の２ビットをフラッシュメモリ装置２Ａ〜２Ｄを判別するための装置番号ＡＮ＃０〜＃３とし、この２ビットを除いた１４ビットのＬＢＡ’を各フラッシュメモリ装置２Ａ〜２Ｄに与えるセクタ単位のアドレスとしている。各フラッシュメモリ装置２Ａ〜２Ｄは、ＬＢＡ’の上位９ビットが論理ブロック番号ＬＢＮを示すと判別し、下位５ビットがセクタ番号ＳＮ（０〜３１）を示すと判別してフラッシュメモリ２０２にアクセス処理を行う。尚、図５（ａ）では、ＬＢＡを１６ビットで示したが、それより多いビット数の場合も、ＬＢＡの下位２ビットを除いたＬＢＡ’が各フラッシュメモリ装置２Ａ〜２Ｄに与えられ、ＬＢＡ’の下位５ビットを除いた上位ビットが論理ブロック番号ＬＢＮを示すと判別される。
【００６０】
このような判別をおこなうことにより、図５（ｂ）に示すように、ＬＢＡが連続する複数のセクタが、１セクタ単位で、フラッシュメモリ装置２Ａ〜２Ｄに順次割り振られる。ここで、装置番号ＡＮ＃０がフラッシュメモリ装置２Ａに対応し、装置番号ＡＮ＃１がフラッシュメモリ装置２Ｂに対応し、装置番号ＡＮ＃２がフラッシュメモリ装置２Ｃに対応し、装置番号ＡＮ＃３がフラッシュメモリ装置２Ｄに対応するものとする。
【００６１】
この様に割り振ることにより、各フラッシュメモリ装置２Ａ〜２Ｄでアクセスされるデータのセクタ数は、ホストシステム４から指示された総セクタ数の１／４になる。ただし、総セクタ数が４の倍数以外の値の場合には、総セクタ数を４で割った余りが、１セクタずつフラッシュメモリ装置２Ａ〜２Ｄに、ホストシステム４から指示された先頭セクタのＬＢＡに対応するフラッシュメモリ装置から順番に割り振られる。
【００６２】
つまり、先頭セクタのＬＢＡにフラッシュメモリ装置２Ａが対応し、余りが１の場合は、フラッシュメモリ装置２Ａでアクセスされるデータのセクタ数だけが１セクタ加算され、余りが２の場合は、フラッシュメモリ装置２Ａ、２Ｂでアクセスされるデータのセクタ数が１セクタ加算され、余りが３の場合は、フラッシュメモリ装置２Ａ〜２Ｃでアクセスされるデータのセクタ数が１セクタ加算される。又、先頭セクタのＬＢＡにフラッシュメモリ装置２Ｂが対応し、余りが１の場合は、フラッシュメモリ装置２Ｂでアクセスされるデータのセクタ数だけが１セクタ加算され、余りが２の場合は、フラッシュメモリ装置２Ｂ、２Ｃでアクセスされるデータのセクタ数が１セクタ加算され、余りが３の場合は、フラッシュメモリ装置２Ｂ〜２Ｄでアクセスされるデータのセクタ数が１セクタ加算される。
【００６３】
例えば、ホストシステム４から指示された先頭セクタのＬＢＡにフラッシュメモリ装置２Ａが対応し、ホストシステム４から指示されたアクセス対象の総セクタ数が５であれば、５÷４の商が１、余りが１なので、フラッシュメモリ装置２Ａでアクセスされるデータのセクタ数は２セクタとなり、フラッシュメモリ装置２Ｂ〜２Ｄでアクセスされるデータのセクタ数は１セクタとなる。同様に、ホストシステム４から指示された先頭セクタのＬＢＡにフラッシュメモリ装置２Ａが対応し、ホストシステム４から指示されたアクセス対象の総セクタ数が１４であれば、１４÷４の商が３、余りが２なので、フラッシュメモリ装置２Ａ、２Ｂでアクセスされるデータのセクタ数は４セクタとなり、フラッシュメモリ装置２Ｃ、２Ｄでアクセスされるデータのセクタ数は３セクタとなる。
【００６４】
このセクタ数が、各フラッシュメモリ装置２Ａ〜２Ｄのアクセスコントローラインターフェースブロック２０７のセクタ数レジスタＲ２２に設定される。
【００６５】
また、各フラッシュメモリ装置２Ａ〜２Ｄのアクセスコントローラインターフェースブロック２０７のＬＢＡレジスタＲ２３には、アクセスコントローラ３のホストインターフェースブロック７のＬＢＡレジスタＲ３に設定されるＬＢＡのうち、装置番号ＡＮに対応する下位２ビットを除去した上位１４ビットのＬＢＡ’が設定される。
【００６６】
但し、ホストシステム４から指示された先頭セクタのＬＢＡが、フラッシュメモリ装置２Ａに対応しない場合、例えば、フラッシュメモリ装置２Ｃに対応する場合は、１セクタ目の割振りでフラッシュメモリ装置２Ｄに対応する装置番号＃３からフラッシュメモリ装置２Ａに対応する装置番号＃０に移るときにＬＢＡの３ビット目に繰り上がりが生じるので、フラッシュメモリ装置２Ｃ、２ＤのＬＢＡ’を＃ｉとした場合、フラッシュメモリ装置２Ａ、２ＢのＬＢＡ’は＃ｉ＋１となる。尚、図５（ａ）では、ＬＢＡを１６ビットで示したが、それより多いビット数の場合も、ＬＢＡの下位２ビットを除いたＬＢＡ’が各フラッシュメモリ装置２Ａ〜２ＤのＬＢＡレジスタＲ２３に設定される。
【００６７】
例えば、ホストシステム４からの読み出し処理で、アクセス対象の先頭セクタのＬＢＡが「１０００  ００００  １０１０  １０００」（２進数）であり、アクセス対象の総セクタ数が「６３」である場合について、これらの設定を具体的に説明する。
【００６８】
この場合、図６（ａ）に示すように、アクセスコントローラ３のホストインターフェースブロック７のセクタ数レジスタＲ２には、「６３」が設定され、ＬＢＡレジスタＲ３には、「１０００  ００００  １０１０  １０００」（２進数）が設定され、コマンドレジスタＲ１に「外部読み出しコマンド」が設定される。ここで、ＬＢＡレジスタＲ３に設定された先頭セクタのＬＢＡ「１０００  ００００  １０１０  １０００」の下位２ビットは「００」（装置番号ＡＮが＃０）なので、この先頭セクタのＬＢＡはフラッシュメモリ装置２Ａに対応する。
【００６９】
又、６３÷４の商が１５、余りが３なので、フラッシュメモリ装置２Ａ〜２Ｃのフラッシュメモリアクセスコントローラ２０３のアクセスコントローラインターフェースブロック２０７のセクタ数レジスタＲ２２には、図６（ｂ）に示すように、「１６」が設定され、フラッシュメモリ装置２Ｄのフラッシュメモリアクセスコントローラ２０３のアクセスコントローラインターフェースブロック２０７のセクタ数レジスタＲ２２には、図６（ｃ）に示すように、「１５」が設定される。
【００７０】
又、ＬＢＡレジスタＲ３に設定された先頭セクタのＬＢＡ「１０００  ００００  １０１０  １０００」の下位２ビットを除いたＬＢＡ’「１０００  ００００  １０１０  １０」が、図６（ｂ）、（ｃ）に示すように、フラッシュメモリ装置２Ａ〜２Ｄのフラッシュメモリアクセスコントローラ２０３のアクセスコントローラインターフェースブロック２０７のＬＢＡレジスタＲ２３に設定される。
【００７１】
次に、各フラッシュメモリ装置２Ａ〜２Ｄのアクセスコントローラインターフェースブロック２０７のコマンドレジスタＲ２１、セクタ数レジスタＲ２２及びＬＢＡレジスタＲ２３に設定された情報に基づいて、各フラッシュメモリ装置２Ａ〜２Ｄで実行されるアクセス処理について説明する。
【００７２】
尚、各フラッシュメモリ装置２Ａ〜２Ｄでは同様の処理が実行されるので、アクセスコントローラインターフェースブロック２０７のコマンドレジスタＲ２１、セクタ数レジスタＲ２２及びＬＢＡレジスタＲ２３に図６（ｂ）に示したような情報が設定されたときに、フラッシュメモリ装置２Ａで実行される処理を例として説明する。
【００７３】
フラッシュメモリ装置２Ａは、セクタ数レジスタＲ２２に設定されたセクタ数「１６」及びＬＢＡレジスタＲ２３に設定されたＬＢＡ’「１０００  ００００  １０１０  １０」に基づいて、フラッシュメモリ２０２内のアクセス対象領域（アクセス対象の物理ブロック及びその物理ブロック内のアクセス対象ページ）を特定する。
【００７４】
アクセス対象領域を特定する場合には、ＬＢＡ’「１０００  ００００  １０１０  １０」が論理ブロック番号ＬＢＮを示す部分とセクタ番号ＳＮを示す部分とに分離され、論理ブロック番号ＬＢＮが物理ブロックアドレスＰＢＡに変換（以下、論理ブロック番号ＬＢＮから物理ブロックアドレスＰＢＡへの変換をアドレス変換と言う。）される。このアドレス変換処理は、論理ブロックと物理ブロックの対応関係を示したアドレス変換テーブルを参照して行われる。
【００７５】
尚、このアドレス変換テーブルは、各物理ブロックの先頭ページの冗長領域に書込まれている論理アドレス情報（通常は論理ゾーン内ブロック番号ＬＺＩＢＮ又は論理ブロック番号ＬＢＮ）に基づいて作成される。又、アドレス変換テーブルは、複数の論理ブロックを集めた論理ゾーンと複数の物理ブロックを集めた物理ゾーンを構成し、対応する論理ゾーンと物理ゾーンを１単位として作成するようにしてもよい。
【００７６】
例えば、５００個の論理ブロックを含む論理ゾーンを５１２個の物理ブロックを含む物理ゾーンに割り当てたり、１０００個の論理ブロックを含む論理ゾーンを１０２４個の物理ブロックを含む物理ゾーンに割り当てたりする。
【００７７】
論理ブロックはアドレス変換をする単位であり、１個の論理ブロックを１個の物理ブロックに対応させる場合は、１個の論理ブロックと１個の物理ブロックのデータ容量を一致させ、１個の論理ブロックを２個の物理ブロックに対応させる場合（例えば、２個の物理ブロックを仮想的に１個の物理ブロックと見做して取り扱う場合）は、１個の論理ブロックと２個の物理ブロックのデータ容量を一致させる。従って、１個の論理ブロックを１個の物理ブロックに対応させる構成で、１個の物理ブロックが３２個のページで構成され、１ページが１セクタに対応する場合、１個の論理ブロックは３２セクタに対応する。
【００７８】
ここでは、１個の論理ブロックを３２セクタとしているので、下位５ビット「０１０  １０」がセクタ番号ＳＮとなり、これを除いた上位９ビット「１０００  ００００  １」が論理ブロック番号ＬＢＮとなる。尚、図６（ｂ）に示した設定では、アクセス対象のＬＢＡ’からＬＢＡ’＋１５までの１６セクタが同一の論理ブロックに属しているので、アドレス変換は１回行えばよいが、このアクセス対象が異なる２個以上の論理ブロックに属している場合は、論理ブロック毎にアドレス変換が行われる。例えば、ＬＢＡ’からＬＢＡ’＋１０までの１１セクタがＬＢＮ＃ｎの論理ブロックに属し、ＬＢＡ’＋１１からＬＢＡ’＋１５までの５セクタがＬＢＮ＃ｎ＋１の論理ブロックに属する場合は、ＬＢＮ＃ｎのアドレス変換とＬＢＮ＃ｎ＋１のアドレス変換を行わなければならない。
【００７９】
アドレス変換で求められた物理ブロックアドレスＰＢＡ（ＬＢＡ’の論理ブロック番号ＬＢＮと対応する物理ブロックアドレスＰＢＡ）、ＬＢＡ’の下位５ビットのセクタ番号ＳＮ、アクセス対象のセクタ数「１６」が、フラッシュメモリインターフェースブロック２１０内のレジスタ（以下、物理ブロックアドレスＰＢＡが設定されるレジスタをＰＢＡレジスタと言い、セクタ番号ＳＮが設定されるレジスタをページ番号レジスタと言い、アクセス対象のセクタ数が設定されるレジスタをカウントレジスタと言う。）に設定され、これらの設定値に基づいてフラッシュメモリ２０２に対するアクセス処理が行われる。尚、アクセスコントローラインターフェースブロック２０７のコマンドレジスタＲ２１に読み出し処理コマンドが設定されている場合は、その読み出し処理コマンドに対応するコマンドセットがＲＯＭ２１１から読み出され、読み出したコマンドセットに基づいて処理が実行される。
【００８０】
このフラッシュメモリインターフェースブロック２１０内のレジスタに設定された設定値に基づく読み出し処理では、フラッシュメモリ２０２に対して読み出しを指示する内部読み出しコマンドと読み出すデータのアドレスを指示するアドレス情報が供給される。このアドレス情報は、ＰＢＡレジスタに設定されている物理ブロックアドレスＰＢＡの下位側にページ番号レジスタに設定されている設定値（初期値はセクタ番号ＳＮ）を付加することにより生成される。この内部読み出しコマンドとアドレス情報の供給に応答してフラッシュメモリ２０２から出力される読み出しデータは、ＥＣＣブロックで誤りの検出と訂正が行われ、バッファ２０９に保持される。
【００８１】
この様にして、１ページ分のデータが読み出される毎に、カウントレジスタに設定されている設定値をデクリメント（１ずつ減算）し、デクリメント後の設定値が「０」でない場合は、ページ番号レジスタに設定されている設定値をインクリメント（１ずつ加算）した後に新たな内部読み出しコマンドとアドレス情報を供給する。この処理をカウントレジスタに設定されている設定値が「０」になるまで続けることにより、ＰＢＡレジスタに設定されている物理ブロックアドレスＰＢＡによって特定される物理ブロック内の「０１０  １０」（１０ページ目）から「１１０  ０１」（２５ページ目）までの１６ページ分のデータが読み出される。
【００８２】
各フラッシュメモリ装置２Ａ〜２Ｄのバッファ２０９に保持された読み出しデータは、内部バス１４を介して、ＬＢＡが若い方から順番にアクセスコントローラ３のバッファ９に転送される。バッファ９に保持された読み出しデータは、外部バス１３を介して、ＬＢＡが若い方から順番にホストシステム４に供給される。
【００８３】
ここで、ＬＢＡ’の下位側に装置番号ＡＮを付加したものがＬＢＡなので、図６（ａ）にしたようにアクセス対象の先頭セクタのＬＢＡがフラッシュメモリ装置２Ａに対応している場合には、フラッシュメモリ装置２Ａ、フラッシュメモリ装置２Ｂ、フラッシュメモリ装置２Ｃ、フラッシュメモリ装置２Ｄの順番で読み出しデータを各フラッシュメモリ装置２Ａ〜２Ｄのバッファ２０９からアクセスコントローラ３のバッファ９にセクタ単位で転送する。つまり、フラッシュメモリ装置２ＡでＬＢＡ’が先頭のデータ、フラッシュメモリ装置２ＢでＬＢＡ’が先頭のデータ、フラッシュメモリ装置２ＣでＬＢＡ’が先頭のデータ、フラッシュメモリ装置２ＤでＬＢＡ’が先頭のデータ、フラッシュメモリ装置２ＡでＬＢＡ’が２番目のデータ、フラッシュメモリ装置２ＢでＬＢＡ’が２番目のデータ、フラッシュメモリ装置２ＣでＬＢＡ’が２番目のデータ、フラッシュメモリ装置２ＤでＬＢＡ’が２番目のデータ・・・という順番で転送される。
【００８４】
次に、ホストシステム４からの書き込み処理について説明する。この場合、コマンドレジスタＲ１に「外部書き込み処理コマンド」が設定されるが、セクタ数レジスタＲ２とＬＢＡレジスタＲ３には、読み出し処理の場合と同様に、アクセス対象の総セクタ数とアクセス対象の先頭セクタのＬＢＡが設定される。
【００８５】
書き込み処理の場合も、各フラッシュメモリ装置２Ａ〜２Ｄへのアクセス対象の割振りは、読み出し処理の場合と同様に行われる。つまり、各フラッシュメモリ装置２Ａ〜２Ｄのアクセスコントローラインターフェースブロック２０７のセクタ数レジスタＲ２２及びＬＢＡレジスタＲ２３には、読み出し処理の場合と同様に各フラッシュメモリ装置２Ａ〜２Ｄにおけるアクセス対象のセクタ数とＬＢＡ’が設定される。又、この各フラッシュメモリ装置２Ａ〜２Ｄへのアクセス対象の割振りに従って、書き込みデータもアクセスコントローラ３のバッファ９から各フラッシュメモリ装置２Ａ〜２Ｄのバッファ２０９に転送される。
【００８６】
各フラッシュメモリ装置２Ａ〜２Ｄは、アクセスコントローラインターフェースブロック２０７のコマンドレジスタＲ２１、セクタ数レジスタＲ２２及びＬＢＡレジスタＲ２３に設定された情報に基づいて、バッファ２０９に保持されている書き込みデータをフラッシュメモリ２０２に書き込む。尚、追加書き込みができずに空きブロックにバッファ２０９に保持されている書き込みデータを書き込む場合は、その空きブロックの冗長領域に、各フラッシュメモリ装置２Ａ〜２Ｄに与えられたＬＢＡ’に基づいた論理アドレス情報（論理ゾーン内ブロック番号ＬＺＩＢＮ又は論理ブロック番号ＬＢＮ）が書き込まれる。
【００８７】
以上で説明したように、本実施の形態のフラッシュメモリシステム１では、ホストシステム４から与えられるＬＢＡの最下位２ビットを４つのフラッシュメモリシステム２Ａ〜２Ｄのいずれかを指定するための装置番号ＡＮとして使用する。従って、図５（ｂ）に示したように、論理アドレス空間上でＬＢＡが連続するデータが１セクタ単位で異なるフラッシュメモリ装置２Ａ〜２Ｄ、即ち、異なるフラッシュメモリ２０２に順次割り当てられる。
【００８８】
従って、データの書き込みが特定のフラッシュメモリに集中することが避けられ、フラッシュメモリ２０２の寿命が長くなる。
【００８９】
なお、図５の例では、１セクタを割振りの単位セクタ数として、４つのフラッシュメモリ装置に振り分けたが、振り分けるデータの単位やフラッシュメモリ装置の数は任意である。
【００９０】
例えば、フラッシュメモリ装置の数が２ｎ個で、振り分けるデータの単位が２ｍセクタの場合には、ＬＢＡの下位側からから数えて第ｍ＋１ビット目からｍ＋ｎビット目を、フラッシュメモリ装置を判別するための装置番号ＡＮとして使用する。
【００９１】
例えば、図７（ｂ）に示すように、４台のフラッシュメモリ装置に、４セクタ単位でデータを割り振る場合には、図７（ａ）に示すように、ＬＢＡの下位から３ビット目と４ビット目の２ビットがフラッシュメモリ装置を判別するための装置番号ＡＮとして使用され、ＬＢＡからこの２ビット除いたＬＢＡ’がフラッシュメモリ装置２Ａ〜２Ｄでアクセス対象を特定する情報として使用される。
【００９２】
この場合に、フラッシュメモリシステム１のアクセスコントローラ３によって行われるアクセス対象の割振りについて説明する。
【００９３】
例えば、ホストシステム４からの読み出し処理で、アクセス対象の先頭セクタのＬＢＡが「１０００  ００００  １０１０  １０１０」（２進数）であり、アクセス対象の総セクタ数が「６５」であったとする。
【００９４】
この場合、図８（ａ）に示すように、アクセスコントローラ３のホストインターフェースブロック７のセクタ数レジスタＲ２には、「６５」が設定され、ＬＢＡレジスタＲ３には、「１０００  ００００  １０１０  １０１０」（２進数）が設定され、コマンドレジスタＲ１に「外部読み出し処理コマンド」が設定される。ここで、ＬＢＡレジスタＲ３に設定された先頭セクタのＬＢＡ「１０００  ００００  １０１０  １０１０」の下位から３ビット目と４ビット目の２ビットは「１０」（装置番号ＡＮが＃２）なので、この先頭セクタのＬＢＡはフラッシュメモリ装置２Ｃに対応する。
【００９５】
又、先頭セクタのＬＢＡ「１０００  ００００  １０１０  １０１０」の下位２ビットは「１０」なので、この先頭セクタのＬＢＡに対応するフラッシュメモリ装置２Ｃに、アクセス対象の最初の２セクタ（下位２ビットが「１０」、「１１」に対応するセクタ）が割り振られ、その後、フラッシュメモリ装置２Ｄ、フラッシュメモリ装置２Ａ、フラッシュメモリ装置２Ｂ、フラッシュメモリ装置２Ｃ、フラッシュメモリ装置２Ｄ・・・・という順番で４セクタ（下位２ビットが「００」、「０１」、「１０」、「１１」に対応するセクタ）ずつ割り振られる。
【００９６】
ここで、アクセス対象の全セクタ数が６５セクタで、先頭セクタのＬＢＡに対応するフラッシュメモリ装置２Ｃには、アクセス対象の最初の２セクタが割り振られるので、（６５−２）÷４の余りに対応する３セクタが、アクセス対象の最後のＬＢＡに対応するフラッシュメモリ装置に割り振られる。
【００９７】
つまり、（６５−２）÷４の商は１５なので、フラッシュメモリ装置２Ｄ、フラッシュメモリ装置２Ａ、フラッシュメモリ装置２Ｂ、フラッシュメモリ装置２Ｃ、フラッシュメモリ装置２Ｄ・・・・という順番で４セクタずつ割り振られ、１６番目となるフラッシュメモリ装置２Ｃに、アクセス対象の最後の３セクタが割り振られる。
【００９８】
又、（６５−２）÷４の商である１５を４で割った商は３で余りは３なので、アクセス対象の最初と最後の端数の割振り（４セクタ未満の割振り）を除いた４セクタずつの割振りは、フラッシュメモリ装置２Ｄ、フラッシュメモリ装置２Ａ及びフラッシュメモリ装置２Ｂへは４回（４セクタ×４回）となり、フラッシュメモリ装置２Ｃへは３回（４セクタ×３回）になる。従って、フラッシュメモリ装置２Ｄ、フラッシュメモリ装置２Ａ及びフラッシュメモリ装置２Ｂにおけるアクセス対象のセクタ数は１６セクタになり、フラッシュメモリ装置２Ｃにおけるアクセス対象のセクタ数は最初と最後の端数の５セクタを加えて１７セクタになる。
【００９９】
これらのアクセス対象のセクタ数が、図８（ａ）、（ｂ）、（ｃ）に示したように、アクセスコントローラインターフェースブロック２０７のセクタ数レジスタＲ２２に設定される。
【０１００】
次に、フラッシュメモリ装置２Ａ〜２Ｄにおけるアクセス対象の先頭セクタのＬＢＡ’について説明する。ＬＢＡレジスタＲ３に設定された先頭セクタのＬＢＡ「１０００  ００００  １０１０  １０１０」の下位から３ビット目と４ビット目の２ビットは「１０」（装置番号ＡＮが＃２）なので、フラッシュメモリ装置２Ｃからアクセス対象の割振りが開始される。
【０１０１】
従って、フラッシュメモリ装置２Ｃにおけるアクセス対象の先頭セクタのＬＢＡ’は、ＬＢＡレジスタＲ３に設定された先頭セクタのＬＢＡから装置番号ＡＮに対応する２ビットを除いた１４ビットが対応する。一方、フラッシュメモリ装置２Ｄ、フラッシュメモリ装置２Ａ及びフラッシュメモリ装置２Ｂについては、ＬＢＡレジスタＲ３に設定された先頭セクタのＬＢＡの下位２ビットを「００」とし、更に、フラッシュメモリ装置２Ａ及びフラッシュメモリ装置２Ｂについては、フラッシュメモリ装置２Ｄからフラッシュメモリ装置２Ａに割振りが移るときに、ＬＢＡの下位側から数えて５ビット目に繰り上がりが生じるので、先頭セクタのＬＢＡに「１  ００００」（２進数）を加算した後に装置番号ＡＮに対応する２ビットを除いてアクセス対象の先頭セクタのＬＢＡ’を生成する。
【０１０２】
つまり、フラッシュメモリ装置２Ｃでのアクセス対象の先頭セクタのＬＢＡ’は「１０００  ００００  １０１０  １０」となり、フラッシュメモリ装置２Ｄでのアクセス対象の先頭セクタのＬＢＡ’は「１０００  ００００  １０１０  ００」となり、フラッシュメモリ装置２Ａ、２Ｂでのアクセス対象の先頭セクタのＬＢＡ’は「１０００  ００００  １０１１  ００」とる。これらのＬＢＡ’が、図８（ａ）、（ｂ）、（ｃ）、（ｄ）に示したように、アクセスコントローラインターフェースブロック２０７のＬＢＡレジスタＲ２３に設定される。  
【０１０３】
各フラッシュメモリ装置２Ａ〜２Ｄは、アクセスコントローラインターフェースブロック２０７のコマンドレジスタＲ２１、セクタ数レジスタＲ２２及びＬＢＡレジスタＲ２３に設定された情報に基づいて、読み出し処理を実行する。
【０１０４】
フラッシュメモリ装置２Ａ〜２Ｄは、セクタ数レジスタＲ２２に設定されたセクタ数及びＬＢＡレジスタＲ２３に設定されたＬＢＡ’に基づいて、フラッシュメモリ２０２内のアクセス対象領域（アクセス対象の物理ブロック及びその物理ブロック内のアクセス対象ページ）を特定する。このアクセス対象領域の特定では、ＬＢＡ’が論理ブロック番号ＬＢＮを示す部分とセクタ番号ＳＮを示す部分とに分離され、論理ブロック番号ＬＢＮは物理ブロックアドレスＰＢＡに変換される。尚、アクセス対象が異なる２個以上の論理ブロックに属している場合は、論理ブロック毎にアドレス変換が行われる。
【０１０５】
アドレス変換で求められた物理ブロックアドレスＰＢＡ（ＬＢＡ’の論理ブロック番号ＬＢＮと対応する物理ブロックアドレスＰＢＡ）、ＬＢＡ’の下位５ビットのセクタ番号ＳＮ、アクセス対象のセクタ数が、フラッシュメモリインターフェースブロック２１０内のレジスタに設定され、これらの設定値に基づいてフラッシュメモリ２０２からデータが読み出されバッファ２０９に保持される。
【０１０６】
各フラッシュメモリ装置２Ａ〜２Ｄのバッファ２０９に保持された読み出しデータは、内部バス１４を介して、ＬＢＡが若い方から順番にアクセスコントローラ３のバッファ９に転送される。バッファ９に保持された読み出しデータは、外部バス１３を介して、ＬＢＡが若い方から順番にホストシステム４に供給される。
【０１０７】
次に、ホストシステム４からの書き込み処理について説明する。この場合、コマンドレジスタＲ１に「外部書き込み処理コマンド」が設定されるが、セクタ数レジスタＲ２とＬＢＡレジスタＲ３には、読み出し処理の場合と同様に、アクセス対象の総セクタ数とアクセス対象の先頭セクタのＬＢＡが設定される。
【０１０８】
書き込み処理の場合も、各フラッシュメモリ装置２Ａ〜２Ｄへのアクセス対象の割振りは、読み出し処理の場合と同様に行われ、このアクセス対象の割振りに従って、書き込みデータもアクセスコントローラ３のバッファ９から各フラッシュメモリ装置２Ａ〜２Ｄのバッファ２０９に転送される。
【０１０９】
各フラッシュメモリ装置２Ａ〜２Ｄは、アクセスコントローラインターフェースブロック２０７のコマンドレジスタＲ２１、セクタ数レジスタＲ２２及びＬＢＡレジスタＲ２３に設定された情報に基づいて、バッファ２０９に保持されている書き込みデータをフラッシュメモリ２０２に書き込む。尚、追加書き込みができずに空きブロックにバッファ２０９に保持されている書き込みデータを書き込む場合は、その空きブロックの冗長領域に、各フラッシュメモリ装置２Ａ〜２Ｄに与えられたＬＢＡ’に基づいた論理アドレス情報（論理ゾーン内ブロック番号ＬＺＩＢＮ又は論理ブロック番号ＬＢＮ）が書き込まれる。
【０１１０】
以上で説明したように、本実施の形態のフラッシュメモリシステム１では、ホストシステム４から与えられるＬＢＡの下位から３ビット目と４ビット目の２ビットを４つのフラッシュメモリシステム２Ａ〜２Ｄのいずれかを指定するための装置番号ＡＮとして使用する。従って、図７（ｂ）に示したように、論理アドレス空間上でＬＢＡが連続するデータがセクタ単位で異なるフラッシュメモリ装置２Ａ〜２Ｄ、即ち、異なるフラッシュメモリ２０２に順次割り当てられる。
【０１１１】
従って、データの書き込みが特定のフラッシュメモリに集中することが避けられ、フラッシュメモリ２０２の寿命が長くなる。
【０１１２】
尚、上述の実施の形態では、ホスト側で管理されている論理アドレス空間を１セクタ単位又は４セクタ単位で４台のフラッシュメモリ装置に割り振ったが、割振りの単位セクタ数と割振り先のフラッシュメモリ装置の数は適宜設定することができる。又、割振りの単位セクタ数と割振り先のフラッシュメモリ装置の数を２のべき乗で与えられる数にすれば、ＬＡＢの特定のビットで割振り先のフラッシュメモリ装置を判別することができる。つまり、割振りの単位セクタ数２ｍセクタ、割振り先のフラッシュメモリ装置の数を２ｎ個とすれば、ＬＢＡの下位側から数えて第ｍ＋１ビット目からｍ＋ｎビット目が、フラッシュメモリ装置を判別するための装置番号ＡＮになる。
【０１１３】
例えば、フラッシュメモリ装置が４台で、８セクタ単位でデータを割り振る場合には、図９（ａ）に示すように、ＬＢＡの下位から４ビット目と５ビット目の２ビットを４台のフラッシュメモリ装置のいずれかを指定するための装置番号ＡＮとして使用し、この２ビットを除いたＬＢＡ’が各フラッシュメモリ装置内でのアクセス対象の特定に使用される。これにより、図９（ｂ）に示すように、ＬＡＢで管理されているホストシステム側の論理アドレス空間が８セクタ単位で、４台のフラッシュメモリ装置に順次割り当てられる。
【０１１４】
さらに、フラッシュメモリ装置が８台で、８セクタ単位でデータを割り振る場合には、図１０（ａ）に示すように、ＬＢＡの下位側から数えて４ビット目から６ビット目までの３ビットを８台のフラッシュメモリ装置のいずれかを指定するための装置番号ＡＮとして使用し、この３ビットを除いたＬＢＡ’が各フラッシュメモリ装置内でのアクセス対象の特定に使用される。これにより、図１０（ｂ）に示すように、ＬＡＢで管理されているホストシステム側の論理アドレス空間が８セクタ単位で、８台のフラッシュメモリ装置に順次割り当てられる。
【０１１５】
又、ＬＢＡのビット数については、フラッシュメモリ装置の台数と各フラッシュメモリ装置に割り当てられるデータ容量に応じて変化する。
【図面の簡単な説明】
【０１１６】
【図１】本発明の実施の形態に係るフラッシュメモリシステムの構成を示すブロック図である。
【図２】図１に示すフラッシュメモリ装置の構造を示すブロック図である。
【図３】（ａ）は、アクセスコントローラのホストインターフェースブロックの構成を示すブロック図であり、（ｂ）は、フラッシュメモリコントローラのアクセスコントローラインターフェースブロックの構成を示すブロック図である。
【図４】フラッシュメモリの論理構成を示す図である。
【図５】（ａ）は、ＬＢＡと、ＬＢＡの最下位２ビットの装置番号ＡＮを除去したときに生成されるＬＢＡ’を示す図であり、（ｂ）は、（ａ）に示す装置番号ＡＮとＬＢＡ’に基づいてセクタを割り振った場合に、各セクタが属するフラッシュメモリ装置を示す図である。
【図６】ＬＢＡとＬＢＡ’が図５に示す構成を有する場合に、ホストインターフェースブロックとアクセスコントローラインターフェースブロックに設定されるデータの例を示す図である。
【図７】（ａ）は、ＬＢＡと、ＬＢＡの下位側から３ビット目と４ビット目の装置番号ＡＮを除去したときに生成されるＬＢＡ’を示す図であり、（ｂ）は、（ａ）に示す装置番号ＡＮとＬＢＡ’に基づいてセクタを割り振った場合に、各セクタが属するフラッシュメモリ装置を示す図である。
【図８】ＬＢＡとＬＢＡ’が図７に示す構成を有する場合に、ホストインターフェースブロックとアクセスコントローラインターフェースブロックに設定されるデータの例を示す図である。
【図９】（ａ）は、ＬＢＡと、ＬＢＡの下位側から４ビット目と５ビット目の装置番号ＡＮを除去したときに生成されるＬＢＡ’を示す図であり、（ｂ）は、（ａ）に示す装置番号ＡＮとＬＢＡ’に基づいてセクタを割り振った場合に、各セクタが属するフラッシュメモリ装置を示す図である。
【図１０】（ａ）は、論理アドレス情報ＬＢＡと、ＬＢＡの下位側から数えて４ビット目から６ビット目の装置番号ＡＮを除去したときに生成されるＬＢＡ’を示す図であり、（ｂ）は、（ａ）に示す装置番号ＡＮとＬＢＡ’に基づいてセクタを割り振った場合に、各セクタが属するフラッシュメモリ装置を示す図である。
【符号の説明】
【０１１７】
１    フラッシュメモリシステム
２Ａ〜２Ｄ    フラッシュメモリ装置
３    アクセスコントローラ
４    ホストシステム
６    マイクロプロセッサ
７    ホストインターフェースブロック
８    ワークエリア
９    バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
２０３    フラッシュメモリアクセスコントローラ
２０６    マイクロプロセッサ
２０７    アクセスコントローラインターフェースブロック
２０８    ワークエリア
２０９    バッファ
２１０  フラッシュメモリインターフェースブロック
２１１  ＥＣＣブロック
２１２  ＲＯＭ
２１３  外部バス
２１４  内部バス
２５  ユーザ領域
２６  冗長領域
【図１】
0004661566.tif 000002
【図２】
0004661566.tif 000003
【図３】
0004661566.tif 000004
【図４】
0004661566.tif 000005
【図５】
0004661566.tif 000006
【図６】
0004661566.tif 000007
【図７】
0004661566.tif 000008
【図８】
0004661566.tif 000009
【図９】
0004661566.tif 000010
【図１０】
0004661566.tif 000011