(57)【要約】【課題】  ２個のフラッシュメモリにより構成されるアドレス空間に円滑にアクセス可能とする。【解決手段】  メモリコントローラは、２個のフラッシュメモリ２Ａ，２Ｂの物理スタートページアドレスと物理カウント値とに基づき特定されるページへのアクセスを制御するフラッシュメモリシーケンサブロック１６Ａ，１６Ｂと、仮想スタートページアドレスを各フラッシュメモリ２Ａ，２Ｂの物理スタートページアドレスへと変換してフラッシュメモリシーケンサブロック１６Ａ，１６Ｂへと供給するアドレス変換ブロック１７と、仮想カウント値を各フラッシュメモリ２Ａ，２Ｂの物理カウント値へと変換してフラッシュメモリシーケンサブロック１６Ａ，１６Ｂへと供給するカウント値変換ブロック１８とを備える。【選択図】図１
2007079920.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２のフラッシュメモリを一つの仮想的なアドレス空間として利用するホストシステムからの命令に応答して前記第１及び第２のフラッシュメモリへのアクセスを制御するメモリコントローラであって、
前記第１及び第２のフラッシュメモリのそれぞれにおける物理スタートページアドレスと物理カウント値とに基づき、前記第１及び第２のフラッシュメモリのアクセス対象のページを特定し、当該特定したページへのアクセスを制御する、フラッシュメモリシーケンサブロックと、
前記ホストシステムにより与えられる前記仮想的なアドレス空間におけるスタートページアドレスを示す仮想スタートページアドレスを、前記第１及び第２のフラッシュメモリのそれぞれのアドレス空間におけるスタートページアドレスを示す物理スタートページアドレスへと変換して前記フラッシュメモリシーケンサブロックへと供給するアドレス変換ブロックと、
前記仮想スタートページアドレスを基準として、前記仮想的なアドレス空間におけるアクセス対象のページを特定するためのカウント値である仮想カウント値を、前記第１及び第２のフラッシュメモリのそれぞれにおける物理スタートページアドレスを基準として前記第１及び第２のフラッシュメモリのそれぞれにおけるアクセス対象のページを特定するためのカウント値である、物理カウント値へと変換して前記フラッシュメモリシーケンサブロックへと供給するカウント値変換ブロックと、から構成される、
ことを特徴とするメモリコントローラ。
【請求項２】
前記第１のフラッシュメモリは、前記仮想的なアドレス空間における偶数ページに対応し、
前記第２のフラッシュメモリは、前記仮想的なアドレス空間における奇数ページに対応し、
前記アドレス変換ブロックは、
前記ホストシステムから供給される前記仮想スタートページアドレスが偶数である場合、前記仮想スタートページアドレスを２で除算して得られる値を前記第１及び第２のフラッシュメモリの物理スタートページアドレスとして前記フラッシュメモリシーケンサブロックへと供給し、
前記仮想スタートページアドレスが奇数である場合、前記仮想スタートページアドレスを２で除算して得られる値を前記第２のフラッシュメモリの物理スタートページアドレスとして前記フラッシュメモリシーケンサブロックへと供給し、前記仮想スタートページアドレスを２で除算して得られる値に更に１を加算した値を前記第１のフラッシュメモリの物理スタートページアドレスとして前記フラッシュメモリシーケンサブロックへと供給する、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記第１のフラッシュメモリは、前記仮想的なアドレス空間における偶数ページに対応し、
前記第２のフラッシュメモリは、前記仮想的なアドレス空間における奇数ページに対応し、
前記カウント値変換ブロックは、
前記仮想カウント値が偶数である場合、又は、前記仮想スタートページアドレスが奇数である場合、前記仮想カウント値を２で除算して得られる値を前記第１のフラッシュメモリの物理カウント値として前記フラッシュメモリシーケンサブロックへと供給し、
前記仮想カウント値が奇数であり、且つ、前記仮想スタートページアドレスが偶数である場合、前記仮想カウント値を２で除算して得られる値に更に１を加算した値を前記第１のフラッシュメモリの物理カウント値として前記フラッシュメモリシーケンサブロックへと供給し、
前記仮想カウント値が偶数である場合、又は、前記仮想スタートページアドレスが偶数である場合、前記仮想カウント値を２で除算して得られる値を前記第２のフラッシュメモリの物理カウント値として前記フラッシュメモリシーケンサブロックへと供給し、
前記仮想カウント値が奇数であり、且つ、前記仮想スタートページアドレスが奇数である場合、前記仮想カウント値を２で除算して得られる値に更に１を加算した値を前記第２のフラッシュメモリの物理カウント値として前記フラッシュメモリシーケンサブロックへと供給する、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項４】
請求項１乃至３のいずれか１項に記載のメモリコントローラと、２個のフラッシュメモリと、から構成される、
ことを特徴とするフラッシュメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性の記録媒体であるフラッシュメモリの開発が盛んに行われ、デジタルカメラ等の情報機器（ホストシステム）の記憶媒体として普及している。そして、記録媒体の大容量化、高速化が求められる昨今では、二つのフラッシュメモリで仮想的な１つのアドレス空間を構成する場合がある（例えば特許文献１を参照）。
【０００３】
ホストシステムによるフラッシュメモリへのアクセスは、メモリコントローラが仲介することにより実行される。上述のように、二つのフラッシュメモリで仮想的な１つのアドレス空間を構成する場合には、メモリコントローラは、ホストシステムにより指定された仮想的なアドレス（仮想アドレス）を、アドレス空間を構成する各フラッシュメモリの実際のアドレス（物理アドレス）へと変換する必要がある。
【特許文献１】特開２００４−１１０８４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来、仮想アドレスから物理アドレスへの変換は、ソフトウェアにより実現されていた。このため、アドレス変換のための処理時間が必要であり、フラッシュメモリへの円滑・迅速なアクセスの妨げとなっていた。
【０００５】
本発明は上記の実情に鑑みてなされたもので、複数のフラッシュメモリにより構成されるアドレス空間へのアクセスを円滑及び／又は迅速に行うことができるメモリコントローラ及び当該メモリコントローラを備えるフラッシュメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の第１の観点に係るメモリコントローラは、第１及び第２のフラッシュメモリを一つの仮想的なアドレス空間として利用するホストシステムからの命令に応答して前記第１及び第２のフラッシュメモリへのアクセスを制御するメモリコントローラであって、前記第１及び第２のフラッシュメモリのそれぞれにおける物理スタートページアドレスと物理カウント値とに基づき、前記第１及び第２のフラッシュメモリのアクセス対象のページを特定し、当該特定したページへのアクセスを制御する、フラッシュメモリシーケンサブロックと、前記ホストシステムにより与えられる前記仮想的なアドレス空間におけるスタートページアドレスを示す仮想スタートページアドレスを、前記第１及び第２のフラッシュメモリのそれぞれのアドレス空間におけるスタートページアドレスを示す物理スタートページアドレスへと変換して前記フラッシュメモリシーケンサブロックへと供給するアドレス変換ブロックと、前記仮想スタートページアドレスを基準として、前記仮想的なアドレス空間におけるアクセス対象のページを特定するためのカウント値である仮想カウント値を、前記第１及び第２のフラッシュメモリのそれぞれにおける物理スタートページアドレスを基準として前記第１及び第２のフラッシュメモリのそれぞれにおけるアクセス対象のページを特定するためのカウント値である、物理カウント値へと変換して前記フラッシュメモリシーケンサブロックへと供給するカウント値変換ブロックと、から構成される、ことを特徴とする。
【０００７】
前記第１のフラッシュメモリは、前記仮想的なアドレス空間における偶数ページに対応し、前記第２のフラッシュメモリは、前記仮想的なアドレス空間における奇数ページに対応し、前記アドレス変換ブロックは、前記ホストシステムから供給される前記仮想スタートページアドレスが偶数である場合、前記仮想スタートページアドレスを２で除算して得られる値を前記第１及び第２のフラッシュメモリの物理スタートページアドレスとして前記フラッシュメモリシーケンサブロックへと供給し、前記仮想スタートページアドレスが奇数である場合、前記仮想スタートページアドレスを２で除算して得られる値を前記第２のフラッシュメモリの物理スタートページアドレスとして前記フラッシュメモリシーケンサブロックへと供給し、前記仮想スタートページアドレスを２で除算して得られる値に更に１を加算した値を前記第１のフラッシュメモリの物理スタートページアドレスとして前記フラッシュメモリシーケンサブロックへと供給してもよい。
【０００８】
前記第１のフラッシュメモリは、前記仮想的なアドレス空間における偶数ページに対応し、前記第２のフラッシュメモリは、前記仮想的なアドレス空間における奇数ページに対応し、前記カウント値変換ブロックは、前記仮想カウント値が偶数である場合、又は、前記仮想スタートページアドレスが奇数である場合、前記仮想カウント値を２で除算して得られる値を前記第１のフラッシュメモリの物理カウント値として前記フラッシュメモリシーケンサブロックへと供給し、前記仮想カウント値が奇数であり、且つ、前記仮想スタートページアドレスが偶数である場合、前記仮想カウント値を２で除算して得られる値に更に１を加算した値を前記第１のフラッシュメモリの物理カウント値として前記フラッシュメモリシーケンサブロックへと供給し、前記仮想カウント値が偶数である場合、又は、前記仮想スタートページアドレスが偶数である場合、前記仮想カウント値を２で除算して得られる値を前記第２のフラッシュメモリの物理カウント値として前記フラッシュメモリシーケンサブロックへと供給し、前記仮想カウント値が奇数であり、且つ、前記仮想スタートページアドレスが奇数である場合、前記仮想カウント値を２で除算して得られる値に更に１を加算した値を前記第２のフラッシュメモリの物理カウント値として前記フラッシュメモリシーケンサブロックへと供給してもよい。
【０００９】
本発明の第２の観点に係るフラッシュメモリシステムは、上記のいずれかの特徴を有するメモリコントローラと、２個のフラッシュメモリと、から構成される、ことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、メモリコントローラは、ハードウェアにより、仮想スタートページアドレスから物理スタートページアドレスへの変換処理及び仮想カウント値から物理カウント値への変換処理を行うため、複数のフラッシュメモリにより構成されるアドレス空間へのアクセスを円滑或いは迅速に行うことができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しつつ、本発明の実施の形態にかかるメモリコントローラ及びフラッシュメモリシステムについて説明する。
【００１２】
図１は、本実施の形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
図１に示すように、フラッシュメモリシステム１は、２つのフラッシュメモリ２Ａ及び２Ｂ（以下、フラッシュメモリ２Ａ及び２Ｂを総称してフラッシュメモリ２と呼ぶ）と、フラッシュメモリ２を制御するコントローラ３で構成されている。
【００１３】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成される。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１４】
フラッシュメモリ２は、不揮発性メモリであり、レジスタと、メモリセルアレイと、から構成される。フラッシュメモリ２は、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００１５】
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００１６】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００１７】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。なお、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子が注入される。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子が排出される。
【００１８】
フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００１９】
このようなフラッシュメモリ２のアドレス空間の一例を図２に示す。フラッシュメモリ２のアドレス空間は、“ページ”と“ブロック”に基づいて分割されている。
【００２０】
ページは、フラッシュメモリ２にて行われるデータ読出動作及びデータ書込動作における処理単位である。ブロックは、フラッシュメモリ２にて行われるデータ消去動作における処理単位である。
【００２１】
１つのページは、ユーザ領域２５と、１６バイトの冗長領域２６とを含んでいる。ユーザ領域２５は、ホストシステム４から供給されるユーザデータを格納する。１つのページのユーザ領域２５は、１セクタ（５１２バイト）で構成されているものや、４セクタ（２Ｋバイト）で構成されているものがある。なお、ページの容量、ブロックサイズ（ブロックを構成するページの数）等は、フラッシュメモリの品種により異なる。
【００２２】
冗長領域２６は、エラーコレクションコード、対応論理ブロックアドレス、ブロックステータス（フラグ）等の付加データを記録するための領域である。
【００２３】
エラーコレクションコード（ＥＣＣ）は、ユーザ領域２５に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
【００２４】
対応論理ブロックアドレスは、１つのブロックに含まれている少なくとも１つのユーザ領域２５に有効なデータが格納されているとき、そのブロックが対応付けられている論理ブロックのアドレスを示す。
【００２５】
論理ブロックアドレスは、ホストシステム４から与えられるホストアドレスに基づいて決定されるブロックのアドレスである。一方、フラッシュメモリ２内における実際のブロックのアドレスは、物理ブロックアドレスと称される。
【００２６】
１つのブロックに含まれているいずれのユーザ領域２５にも有効なデータが格納されていないときには、そのブロックに含まれている冗長領域２６に、対応論理ブロックアドレスは格納されていない。
【００２７】
従って、冗長領域２６に対応論理ブロックアドレスが格納されているか否かを判定することにより、その冗長領域２６が含まれているブロックのデータが消去されているか否かを判定することができる。冗長領域２６に対応論理ブロックアドレスが格納されていないとき、そのブロックは、データが消去された状態となっている。
【００２８】
１つのブロックは、複数のページを含んでいる。フラッシュメモリ２では、データの上書きができない。このため、１つのページに格納されたデータのみを書き換えるときであっても、そのページが含まれたブロック内の全ページに格納されたデータを消去されている別のブロックの１つに再度書き込まなければならない。
【００２９】
上記のようにデータを書き換えるにあたっては、書き換えられたデータは、以前に格納されていたブロックとは異なるブロックに書き込まれる。このため、論理ブロックアドレスと物理ブロックアドレスの間の対応関係は、フラッシュメモリ２にてデータが書き換えられる毎に、動的に変化する。
【００３０】
従って、論理ブロックアドレスと物理ブロックアドレスとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各ページの冗長領域２６に記憶されている対応論理ブロックアドレスに基づいて作成される。なお、このような動的なアドレス管理手法は、フラッシュメモリを用いたメモリシステムでは一般的に行われている手法である。
【００３１】
ブロックステータスは、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域２６には、不良ブロックであることを示すブロックステータスが書き込まれる。
【００３２】
このようなフラッシュメモリ２は、コントローラ３から、データ、アドレス情報、ステータス情報、内部コマンド等を受信して、データの読み出し処理、書き込み処理、ブロック消去処理、転送処理等の各処理を行う。
【００３３】
ここで、内部コマンドとは、コントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、コントローラ３からの内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００３４】
本実施の形態のフラッシュメモリシステム１では、二つのフラッシュメモリ２Ａ及び２Ｂが、一つの仮想的なアドレス空間を構成する。
【００３５】
すなわち、ホストシステム４は、フラッシュメモリ２Ａ及び２Ｂが構成する仮想的なアドレス空間におけるページを特定するための仮想ページアドレスに基づいて、該仮想的なアドレス空間を認識する。
【００３６】
一方、実際にフラッシュメモリ２Ａ及び２Ｂのページにアクセスするためには、フラッシュメモリ２Ａ及び２Ｂのそれぞれが有する実際のアドレス空間におけるページを特定するための物理ページアドレスを用いる必要がある。
【００３７】
本実施の形態のフラッシュメモリシステム１においては、仮想ページアドレスと物理ページアドレスとは、図３に示すような対応関係にある。図３は、１つのページのユーザ領域が１セクタ（５１２バイト）で、１ブロックに３２個のページが含まれるフラッシュメモリの場合の例であり、フラッシュメモリ２Ａ及び２Ｂに対して、仮想ページアドレスが交互に割り振られている。
【００３８】
すなわち、仮想ページアドレスにおける偶数ページ（ページ０、２、４、・・・）がフラッシュメモリ２Ａの物理ページアドレス（ページ０，１、２、３、・・・）に対応し、仮想ページアドレスにおける奇数ページ（ページ１、３、５、・・・）がフラッシュメモリ２Ｂの物理ページアドレス（ページ０、１、２、３、・・・）に対応する。その結果、１ブロックを構成するページ数が６４ページに拡張される。尚、仮想ページアドレスは、１セクタ（５１２バイト）を１ページとしてページアドレスを管理している。従って、１つのページのユーザ領域が４セクタに対応するフラッシュメモリの場合には、１つの物理ページに４個の仮想ページアドレスが割り当てられている。
【００３９】
コントローラ３は、フラッシュメモリ２Ａ及び２Ｂにより構成されるアドレス空間を、仮想的な一つのアドレス空間としてホストシステム４が利用できるように、ホストシステム４によるフラッシュメモリ２Ａ及び２Ｂへのアクセスを制御する。
【００４０】
コントローラ３は、図１に示すように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、ＲＯＭ（Read Only Memory）１２と、フラッシュメモリシーケンサブロック１６Ａ及び１６Ｂと、アドレス変換ブロック１７と、カウント値変換ブロック１８と、から構成される。これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積される。以下に各機能ブロックについて説明する。
【００４１】
マイクロプロセッサ６は、ＲＯＭ１２やワークエリア８に記録されたプログラムに従って、コントローラ３の全体の動作を制御する。例えば、マイクロプロセッサ６は、ＲＯＭ１２に格納されたプログラムに基づいてフラッシュメモリシーケンサブロック１６Ａの有するレジスタの値を設定することにより、フラッシュメモリインターフェースブロック１０を介したフラッシュメモリ２Ｂへのアクセス処理を実行させる。
【００４２】
ホストインターフェースブロック７は、ホストシステム４との間の、データ、アドレス情報、ステータス情報、外部コマンド、等の授受を行なう。すなわち、フラッシュメモリシステム１とホストシステム４は、外部バス１３を介して相互に接続される。かかる状態において、ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてフラッシュメモリシステム１の内部に取り込まれ、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００４３】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。
【００４４】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に蓄積する。すなわち、フラッシュメモリ２から読み出されたデータは、ホストコンピュータ４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００４５】
フラッシュメモリインターフェースブロック１０は、フラッシュメモリシーケンサブロック１６Ａ及び１６Ｂの有する各レジスタの設定に従い、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。
【００４６】
フラッシュメモリシーケンサブロック１６Ａ及び１６Ｂは、フラッシュメモリの制御手順を記述したシーケンスコマンドに基づいて、それぞれフラッシュメモリ２Ａ及び２Ｂの動作を制御する。
【００４７】
フラッシュメモリシーケンサブロック１６Ａ及び１６Ｂは、それぞれ、複数のレジスタを有している。該レジスタには、図４に示すように、アクセス先の物理ブロックを特定する物理ブロックアドレスが設定される物理ブロックアドレスレジスタと、アクセス先のページを特定する物理ページアドレスが設定される物理ページアドレスレジスタと、物理スタートページを基準としてアクセス対象のページ数を特定する物理カウント値が設定されるカウント値レジスタとが含まれる。
【００４８】
フラッシュメモリシーケンサブロック１６Ａ及び１６Ｂは、マイクロプロセッサ６による制御のもと、シーケンスコマンドが実行されるときに使用される情報を、複数のレジスタに設定する。複数のレジスタに情報を設定した後、フラッシュメモリシーケンサブロック１６Ａ及び１６Ｂは、各レジスタに設定された情報に基づいて、シーケンスコマンドに従った動作を行う。
【００４９】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに付加されるエラーコレクションコードを生成するとともに、読み出したデータに付加されたエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する。
【００５０】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を定義するプログラムを格納する不揮発性の記憶素子である。具体的には、ＲＯＭ１２は、例えば、アドレス変換テーブルの作成等の処理手順を定義するプログラムを格納する。
【００５１】
アドレス変換ブロック１７とカウント値変換ブロック１８は、フラッシュメモリ２Ａ及び２Ｂにより構成される仮想的な一つのアドレス空間内の仮想アドレスを、フラッシュメモリ２Ａ及び２Ｂのそれぞれにおける実際のアドレス（物理ページアドレス）に変換するためのブロックである。つまり、フラッシュメモリ２Ａに含まれる１個のブロックと、フラッシュメモリ２Ｂに含まれる１個のブロックで構成される領域を仮想的な１つのアドレスとみなした場合の仮想ページアドレスをフラッシュメモリ２Ａ及び２Ｂのそれぞれにおける実際のアドレス（物理ページアドレス）に変換するためのブロックである。なお、フラッシュメモリ２Ａ及び２Ｂのそれぞれにおいて、アクセス対象のブロックを特定する物理ブロックアドレスについては、アドレス変換等などを用いて求められる。
【００５２】
本実施の形態のフラッシュメモリシステム１では、複数ページに渡るデータの書き込み又は読み出しを実行する場合、アドレス空間内におけるアクセス対象のページを、その先頭ページに対応するスタートページのページアドレスとセクタ数とによって示す。すなわち、スタートページからセクタ数で示される範囲のページがアクセス対象になる。
【００５３】
すなわち、ホストシステム４が、フラッシュメモリ２にアクセスしようとする場合、仮想スタートページアドレスと、セクタ数に対応する仮想カウント値とにより、アクセス対象のページの仮想ページアドレスが特定される。本実施の形態のフラッシュメモリシステム１では、フラッシュメモリ２Ａ及び２Ｂの１個のページが１セクタ（５１２バイト）に対応し、フラッシュメモリ２Ａの１個のブロックとフラッシュメモリ２Ｂの１個のブロックを合わせた全ページ数が６４なので、仮想スタートページアドレスと仮想カウント値は、それぞれ６ビットの論理値により表現される。
【００５４】
アドレス変換ブロック１７は、仮想スタートページアドレスをフラッシュメモリ２Ａ及び２Ｂのそれぞれにおけるスタートページのページアドレスを示す物理スタートページアドレスへと変換し、フラッシュメモリシーケンサブロック１６Ａ及び１６Ｂが有する物理ページアドレスレジスタに供給する。
【００５５】
アドレス変換ブロック１７は、図５に示すように、仮想ページアドレスレジスタ１７０と、第１の実ページアドレスレジスタ１７１と、第２の実ページアドレスレジスタ１７２と、仮想ページ／実ページ選択レジスタ１７３と、除算器１７４と、加算器１７５と、第１のセレクタ１７６と、第２のセレクタ１７７と、第３のセレクタ１７８と、から構成される。
【００５６】
仮想ページアドレスレジスタ１７０は、アクセス対象の先頭ページの仮想的なアドレスである仮想スタートページアドレスが設定されるレジスタである。この仮想スタートページアドレスは、ホストシステムから与えられる論理アドレスの下位６ビット（０〜６３）に対応する。下位６ビットを除いた上位ビットが論理ブロックアドレスに対応する。論理ブロックは、アドレス変換テーブル等を用いてフラッシュメモリ２Ａ及び２Ｂ内のブロックを特定する物理ブロックアドレスに変換される。仮想ページアドレスレジスタ１７０の設定値は、除算器１７４に供給される。また、仮想ページアドレスレジスタ１７０の最下位ビット（ＬＳＢ）の設定値は、第１のセレクタ１７６に供給される。
【００５７】
第１の実ページアドレスレジスタ１７１は、アクセス対象データのフラッシュメモリ２Ａにおける先頭の物理ページアドレス（物理スタートページアドレス）が設定されるレジスタである。フラッシュメモリ２Ａの１個の物理ブロックに３２個のページが含まれているので、５ビット（０〜３１）の物理ページアドレスが設定される。
【００５８】
第２の実ページアドレスレジスタ１７２は、アクセス対象データのフラッシュメモリ２Ｂにおける先頭の物理ページアドレス（物理スタートページアドレス）が設定されるレジスタである。フラッシュメモリ２Ｂの１個の物理ブロックに３２個のページが含まれているので、５ビット（０〜３１）の物理ページアドレスが設定される。
【００５９】
仮想ページ／実ページ選択レジスタ１７３は、アクセス対象データのスタートページアドレスを、仮想ページアドレスと物理ページアドレスとのいずれに基づき特定するかを設定するためのレジスタである。
【００６０】
除算器１７４は、仮想ページアドレスレジスタ１７０に設定された仮想スタートページアドレスを２で除算、すなわち、１ビット右にシフトした値を加算器１７５と、第１のセレクタ１７６とに供給する。
【００６１】
加算器１７５は、除算器１７４により除算された仮想スタートページアドレスに１を加算した値を、第１のセレクタ１７６に供給する。
【００６２】
第１のセレクタ１７６は、仮想ページアドレスレジスタ１７０の最下位ビット（ＬＳＢ）の設定値に応じて、除算器又は加算器の出力値を第２のセレクタ１７７に供給する。具体的には、第１のセレクタ１７６は、仮想ページアドレスレジスタ１７０のＬＳＢが「０」の場合（すなわち、仮想スタートページアドレスが偶数の場合）、除算器１７４の出力値を第２のセレクタ１７７に供給する。一方、仮想ページアドレスレジスタ１７０のＬＳＢが「１」の場合（すなわち、仮想スタートページアドレスが奇数の場合）、第１のセレクタ１７６は、加算器１７５の出力値を第２のセレクタ１７７に供給する。
【００６３】
第２のセレクタ１７７は、仮想ページ／実ページ選択レジスタ１７３の設定値に応じて、第１の実ページアドレスレジスタ１７１に設定された物理スタートページアドレス又は第１のセレクタ１７６が出力する仮想スタートページアドレスから変換された物理スタートページアドレスのいずれか一方を出力する。第２のセレクタ１７７の出力値は、フラッシュメモリシーケンサブロック１６Ａが有する物理ページアドレスレジスタ１６２に供給される。
【００６４】
第３のセレクタ１７８は、仮想ページ／実ページ選択レジスタ１７３の設定値に応じて、第２の実ページアドレスレジスタ１７２に設定された物理スタートページアドレス又は除算器１７４が出力する仮想スタートページアドレスから変換された物理スタートページアドレスのいずれか一方を出力する。第３のセレクタ１７８の出力値は、フラッシュメモリシーケンサブロック１６Ｂが有する物理ページアドレスレジスタ１６２に供給される。
【００６５】
図１のカウント値変換ブロック１８は、仮想カウント値をフラッシュメモリ２Ａ及び２Ｂのそれぞれにおける物理カウント値へと変換し、フラッシュメモリシーケンサブロック１６Ａ及び１６Ｂが有する物理カウント値レジスタ１６３に供給する。つまり、カウント値変換ブロック１８は、フラッシュメモリ２Ａに含まれる１個のブロックとフラッシュメモリ２Ｂに含まれる１個のブロックで構成される仮想的なアドレス空間におけるアクセス対象のセクタ数（仮想カウント値）をフラッシュメモリ２Ａ及び２Ｂにおけるアクセス対象のセクタ数（物理カウント値）に変換する。
【００６６】
図６に示すように、カウント値変換ブロック１８は、仮想カウント値レジスタ１８０と、第１の実カウント値レジスタ１８１と、第２の実カウント値レジスタ１８２と、仮想カウント／実カウント選択レジスタ１８３と、除算器１８４と、加算器１８５と、第４のセレクタ１８６と、第５のセレクタ１８７と、第６のセレクタ１８８と、第７のセレクタ１８９と、から構成される。
【００６７】
仮想カウント値レジスタ１８０は、仮想的なアドレス空間において、仮想スタートページアドレスを基準としたアクセス対象のセクタ数を特定するための仮想カウント値が設定されるレジスタである。仮想カウント値レジスタ１８０の設定値は、除算器１８４に供給される。また、仮想ページアドレスレジスタ１８０の最下位ビット（ＬＳＢ）の設定値は、第４のセレクタ１８６と第５のセレクタ１８７とに供給される。
【００６８】
第１の実カウント値レジスタ１８１は、フラッシュメモリ２Ａの実際のアドレス空間において、アドレス変換ブロック１７が設定する物理スタートページアドレスを基準としたアクセス対象のセクタ数を特定するための物理カウント値が設定されるレジスタである。
【００６９】
第２の実カウント値レジスタ１８２は、フラッシュメモリ２Ｂの実際のアドレス空間において、アドレス変換ブロック１７が設定する物理スタートページアドレスを基準としたアクセス対象のセクタ数を特定するための物理カウント値が設定されるレジスタである。
【００７０】
仮想カウント／実カウント選択レジスタ１８３は、フラッシュメモリシーケンサブロック１６Ａ及び１６Ｂが有する物理カウント値レジスタに設定するカウント値を、仮想カウント値と物理カウント値とのいずれに基づいて特定するかを設定するためのレジスタである。
【００７１】
除算器１８４は、仮想カウント値レジスタ１８０に設定された仮想カウント値を２で除算、すなわち、１ビット右にシフトした値を加算器１８５と、第４のセレクタ１８６と、第５のセレクタ１８７とに供給する。
【００７２】
加算器１８５は、除算器１８４により除算された仮想カウント値に１を加算した値を、第４のセレクタ１８６と、第５のセレクタ１８７とに供給する。
【００７３】
第４のセレクタ１８６は、仮想カウント値レジスタ１８０のＬＳＢの設定値と、アドレス変換ブロック１７が有する仮想ページアドレスレジスタ１７０のＬＳＢの設定値とに応じて、仮想カウント値をフラッシュメモリ２Ａの物理カウント値に変換して第６のセレクタ１８８に供給する。
【００７４】
具体的には、第４のセレクタ１８６は、仮想カウント値レジスタ１８０のＬＳＢが「０」の場合（すなわち、仮想カウント値が偶数の場合）、又は、仮想ページアドレスレジスタ１７０のＬＳＢが「１」の場合（すなわち、仮想スタートページアドレスが奇数の場合）、除算器１８４の出力値を第６のセレクタ１８８に供給する。一方、仮想カウント値レジスタ１８０のＬＳＢが「１」、且つ、仮想ページアドレスレジスタ１７０のＬＳＢが「０」の場合（すなわち、仮想カウント値が奇数且つ仮想スタートページアドレスが偶数の場合）、第４のセレクタ１８６は、加算器１８５の出力値を第６のセレクタ１８８に供給する。
【００７５】
第５のセレクタ１８７は、仮想カウント値レジスタ１８０のＬＳＢの設定値と、アドレス変換ブロック１７が有する仮想ページアドレスレジスタ１７０のＬＳＢの設定値とに応じて、仮想カウント値をフラッシュメモリ２Ｂの物理カウント値に変換して第７のセレクタ１８９に供給する。
【００７６】
具体的には、第５のセレクタ１８７は、仮想カウント値レジスタ１８０のＬＳＢが「０」の場合（すなわち、仮想カウント値が偶数の場合）、又は、仮想ページアドレスレジスタ１７０のＬＳＢが「０」の場合（すなわち、仮想スタートページアドレスが偶数の場合）、除算器１８４の出力値を第７のセレクタ１８９に供給する。一方、仮想カウント値レジスタ１８０のＬＳＢが「１」、且つ、仮想ページアドレスレジスタ１７０のＬＳＢが「１」の場合（すなわち、仮想カウント値が奇数且つ仮想スタートページアドレスが奇数の場合）、第５のセレクタ１８７は、加算器１８５の出力値を第７のセレクタ１８９に供給する。
【００７７】
第６のセレクタ１８８は、仮想カウント／実カウント選択レジスタ１８３の設定値に応じて、第１の実カウント値レジスタ１８１に設定された物理カウント値又は第４のセレクタ１８６が出力する仮想カウント値から変換されたカウント値のいずれか一方を出力する。第６のセレクタ１８８の出力値は、フラッシュメモリシーケンサブロック１６Ａが有する物理カウント値レジスタ１６３に供給される。
【００７８】
第７のセレクタ１８９は、仮想カウント／実カウント選択レジスタ１８３の設定値に応じて、第２の実カウント値レジスタ１８２に設定された物理カウント値又は第５のセレクタ１８７が出力する仮想カウント値から変換されたカウント値のいずれか一方を出力する。第７のセレクタ１８９の出力値は、フラッシュメモリシーケンサブロック１６Ｂが有する物理カウント値レジスタ１６３に供給される。
【００７９】
次に、上記のように構成されるフラッシュメモリシステム１において、ホストシステム４がフラッシュメモリ２にアクセスする場合に、アドレス変換ブロック１７及びカウント値変換ブロック１８により実行される、仮想スタートページアドレスから物理スタートページアドレスへの変換処理について、仮想スタートページが偶数ページの場合と、奇数ページの場合とに分けて、それぞれ具体的に説明する。
【００８０】
まず、仮想スタートページが偶数ページある場合の例として、仮想スタートページアドレスが４（下位６ビットを２進数表示すると、０００１００Ｈ）のときの仮想スタートページアドレスから物理スタートページアドレスへの変換処理について説明する。
【００８１】
なお、以下の説明では、仮想ページ／実ページ選択レジスタ１７３には、アクセス対象データの先頭のページアドレスを、仮想ページアドレスに基づいて特定することを選択する値が設定されているものとする。
また、仮想カウント／実カウント選択レジスタ１８３には、カウント値を、仮想カウント値に基づいて特定することを選択する値が設定されているものとする。
【００８２】
仮想スタートページアドレスは、アドレス変換ブロック１７により、フラッシュメモリ２Ａ及び２Ｂのそれぞれにおける物理スタートページアドレスへと変換される。
【００８３】
ホストシステム４から供給される論理アドレスの下位６ビットに対応する仮想スタートページアドレス「４（＝０００１００Ｈ）」は、仮想ページアドレスレジスタ１７０に設定される。仮想ページアドレスレジスタ１７０に偶数の仮想スタートページアドレスが設定されている場合は、ＬＳＢの「０」が、第１のセレクタ１７６に供給さる。また、仮想ページアドレスレジスタ１７０は、設定値「４」を除算器１７４に供給する。
【００８４】
除算器１７４は、仮想ページアドレスレジスタ１７０から供給される値「４」を２で除算して得られる値「２（＝００００１０Ｈ）」を、加算器１７５と、第１のセレクタ１７６と、第３のセレクタ１７８とに供給する。
【００８５】
加算器１７５は、除算器１７４から供給される値「２」に１を加算して得られる値「３（＝００００１１Ｈ）」を、第１のセレクタ１７６に供給する。
【００８６】
第１のセレクタ１７６は、仮想ページアドレスレジスタ１７０のＬＳＢの値「０」に基づき、除算器１７４の出力値である「２（＝００００１０Ｈ）」を選択して第２のセレクタ１７７に供給する。
【００８７】
第２のセレクタ１７７は、仮想ページ／実ページ選択レジスタ１７３の設定値に基づき、第１のセレクタ１７６から供給される値「２（＝００００１０Ｈ）」を選択して、フラッシュメモリシーケンサブロック１６Ａが有する物理ページアドレスレジスタ１６２に供給する。つまり、フラッシュメモリ２Ａのスタートページは、「２」ページ目となる。
【００８８】
第３のセレクタ１７８は、仮想ページ／実ページ選択レジスタ１７３の設定値に基づき、除算器１７４から供給される値「２（＝００００１０Ｈ）」を選択して、フラッシュメモリシーケンサブロック１６Ｂが有する物理ページアドレスレジスタ１６２に供給する。つまり、フラッシュメモリ２Ｂのスタートページも、「２」ページ目となる。
【００８９】
仮想カウント値は、カウント値変換ブロック１８により、フラッシュメモリ２Ａ及び２Ｂのそれぞれにおける物理カウント値へと変換される。
【００９０】
仮想カウント値は、ホストシステム４から与えられるセクタ数に基づいて決まる値であり、その値は、仮想カウント値レジスタ１８０に設定される。ここで、書き込み又は読み出し対象のデータの量が１６物理ページ分とすると、仮想カウント値は「１６」であり、仮想カウント値レジスタ１８０に「１６（＝０１００００Ｈ）」が設定される。仮想カウント値レジスタ１８０は、ＬＳＢの「０」を、第４のセレクタ１８６と、第５のセレクタ１８７とに供給する。また、仮想カウント値レジスタ１８０は、設定値「１６（＝０１００００Ｈ）」を除算器１８４に供給する。
【００９１】
除算器１８４は、仮想カウント値レジスタ１８０から供給される値「１６（＝０１００００Ｈ）」を２で除算して得られる値「８（＝００１０００Ｈ）」を、加算器１８５と、第４のセレクタ１８６と、第５のセレクタ１８７とに供給する。
【００９２】
加算器１８５は、除算器１８４から供給される値「８（＝００１０００Ｈ）」に１を加算して得られる値「９（＝００１００１Ｈ）」を、第４のセレクタ１８６と、第５のセレクタ１８７とに供給する。
【００９３】
第４のセレクタ１８６は、仮想ページアドレスレジスタ１７０に格納されている「４（＝０００１００Ｈ）」のＬＳＢの値「０」と、仮想カウント値レジスタ１８０に格納されている「１６（＝０１００００Ｈ）」のＬＳＢの値「０」、即ち「００：０１以外」に基づき、除算器１８４の出力値である「８（＝００１０００Ｈ）」を選択して第６のセレクタ１８８に供給する。なお、第４のセレクタ１８６は、仮想ページアドレスレジスタ１７０の記憶値のＬＳＢの値が「０」で、且つ、仮想カウント値レジスタ１８０に格納されている仮想カウント値のＬＳＢの値が「１」の場合に、加算器１８５の出力値を第６のセレクタ１８８に供給し、それ以外の場合には、除算器１８４の出力値を第６のセレクタ１８８に供給する。
【００９４】
第５のセレクタ１８７は、仮想ページアドレスレジスタ１７０の記憶値「４（＝０００１００Ｈ）」のＬＳＢの値「０」と、仮想カウント値レジスタ１８０の記憶値「１６（＝０１００００Ｈ）」のＬＳＢの値「０」とに基づき、除算器１８４の出力値である「８（＝００１０００Ｈ）」を選択して第７のセレクタ１８９に供給する。なお、第５のセレクタ１８７は、仮想ページアドレスレジスタ１７０に記憶されている仮想ページアドレスのＬＳＢが「１」で、且つ、仮想カウント値レジスタ１８０に記憶されている仮想カウント値のＬＳＢが「１」の場合に、加算器１８５の出力値を第７のセレクタ１８９に供給し、それ以外の場合には、除算器１８４の出力値を第７のセレクタ１８９に供給する。
【００９５】
第６のセレクタ１８８は、仮想カウント／実カウント選択レジスタ１８３の設定値に基づき、第４のセレクタ１８６から供給される値「８（＝００１０００Ｈ）」を選択して、フラッシュメモリシーケンサブロック１６Ａが有する物理カウント値レジスタ１６３に供給する。つまり、フラッシュメモリ２Ａの物理カウント値は、「８」となる。
【００９６】
第７のセレクタ１８９は、仮想カウント／実カウント選択レジスタ１８３の設定値に基づき、第５のセレクタ１８７から供給される値「８」を選択して、フラッシュメモリシーケンサブロック１６Ｂが有する物理カウント値レジスタ１６３に供給する。つまり、フラッシュメモリ２Ｂの物理カウント値は、「８」となる。
【００９７】
次に、仮想カウント値が、奇数の場合の例として、仮想カウント値が１７（二進数で表記すると０１０００１Ｈ）の場合、即ち、１７セクタ分のデータをアクセスする場合の動作について説明する。
【００９８】
この場合、仮想カウント値レジスタ１８０の記憶値は「１７（＝０１０００１Ｈ）」となり、除算器１８４の出力は「８（＝００１０００Ｈ）」、加算器１８５の出力は「９（＝００１００１Ｈ）」となる。仮想カウント値レジスタ１８０の記憶値が「１７（＝０１０００１Ｈ）」であるから、そのＬＳＢは、「１」となる。仮想ページアドレスレジスタ１７０の記憶値が「４（＝０００１００Ｈ）」であるとすれば、そのＬＳＢは「０」なので、第４のセレクタ１８６は、加算器１８５の出力値である「９」を選択して第６のセレクタ１８８に供給する。
一方、第５のセレクタ１８７は、除算器１８４の出力値である「８（＝００１０００Ｈ）」を選択して第７のセレクタ１８９に供給する。
【００９９】
仮想カウント／実カウント選択レジスタ１８３には、仮想カウント値により特定することを選択する値が設定されているため、第６のセレクタ１８８は、第４のセレクタ１８６から供給される値「９」を選択して、フラッシュメモリシーケンサブロック１６Ａが有する物理カウント値レジスタ１６３に供給する。つまり、フラッシュメモリ２Ａの物理カウント値は、「９」に設定される。
一方、第７のセレクタ１８９は、第５のカウンタ１８７から供給される値「８」を選択して、フラッシュメモリシーケンサブロック１６Ｂが有する物理カウント値レジスタ１６３に供給する。つまり、フラッシュメモリ２Ｂの物理カウント値は、「８」に設定される。
【０１００】
次に、仮想スタートページが奇数ページある場合の例として、仮想スタートページアドレスが３（下位６ビットを２進数表示すると、００００１１Ｈ）のときの仮想スタートページアドレスから物理スタートページアドレスへの変換処理について説明する。
【０１０１】
なお、以下の説明では、仮想ページ／実ページ選択レジスタ１７３には、アクセス対象データのスタートページアドレスを、仮想ページアドレスに基づいて特定することを選択する値が設定されているものとする。
【０１０２】
また、仮想カウント／実カウント選択レジスタ１８３には、カウント値を、仮想カウント値に基づいて特定することを選択する値が設定されているものとする。
【０１０３】
仮想スタートページアドレスは、アドレス変換ブロック１７により、フラッシュメモリ２Ａ及び２Ｂのそれぞれにおける物理スタートページアドレスへと変換される。
【０１０４】
ホストシステム４から供給される論理アドレスの下位６ビットに対応する仮想スタートページアドレス「３（＝００００１１Ｈ）」は、仮想ページアドレスレジスタ１７０に設定される。この場合のように、仮想ページアドレスレジスタ１７０に奇数の仮想スタートページアドレスが設定された場合、そのＬＳＢの「１」が、第１のセレクタ１７６に供給される。また、仮想ページアドレスレジスタ１７０は、設定値「３（＝００００１１Ｈ）」を除算器１７４に供給する。
【０１０５】
除算器１７４は、仮想ページアドレスレジスタ１７０から供給される値「３（＝００００１１Ｈ）」を２で除算して得られる値「１（＝０００００１Ｈ）」を、加算器１７５と、第１のセレクタ１７６と、第３のセレクタ１７８とに供給する。
【０１０６】
加算器１７５は、除算器１７４から供給される値「１（＝０００００１Ｈ）」に１を加算して得られる値「２（＝００００１０Ｈ）」を、第１のセレクタ１７６に供給する。
【０１０７】
第１のセレクタ１７６は、仮想ページアドレスレジスタ１７０の記憶している値「３（＝００００１１Ｈ）」のＬＳＢの値「１」に基づき、加算器１７５の出力値である「２（＝００００１０Ｈ）」を選択して第２のセレクタ１７７に供給する。
【０１０８】
第２のセレクタ１７７は、仮想ページ／実ページ選択レジスタ１７３の設定値に基づき、第１のセレクタ１７６から供給される値「２」を選択して、フラッシュメモリシーケンサブロック１６Ａが有する物理ページアドレスレジスタ１６２に供給する。つまり、フラッシュメモリ２Ａのスタートページは、「２」ページ目となる。
【０１０９】
第３のセレクタ１７８は、仮想ページ／実ページ選択レジスタ１７３の設定値に基づき、除算器１７４から供給される値「１」を選択して、フラッシュメモリシーケンサブロック１６Ｂが有する物理ページアドレスレジスタ１６２に供給する。つまり、フラッシュメモリ２Ｂのスタートページは、「１」ページ目となる。
【０１１０】
仮想カウント値は、カウント値変換ブロック１８により、フラッシュメモリ２Ａ及び２Ｂのそれぞれにおける物理カウント値へと変換される。
【０１１１】
ここで、仮想カウント値が「１６（２進数で表現すると０１００００Ｈ）」の場合、仮想カウント値レジスタ１８０は、ＬＳＢの「０」を、第４のセレクタ１８６と、第５のセレクタ１８７とに供給する。また、仮想カウント値レジスタ１８０は、設定値「１６」を除算器１８４に供給する。
【０１１２】
除算器１８４は、仮想カウント値レジスタ１８０から供給される値「１６」を２で除算して得られる値「８」を、加算器１８５と、第４のセレクタ１８６と、第５のセレクタ１８７とに供給する。
【０１１３】
加算器１８５は、除算器１８４から供給される値「８」に１を加算して得られる値「９」を、第４のセレクタ１８６と、第５のセレクタ１８７とに供給する。
【０１１４】
第４のセレクタ１８６は、仮想ページアドレスレジスタ１７０の記憶値「３（＝００００１１Ｈ）」のＬＳＢの値「１」と、仮想カウント値レジスタ１８０の記憶値「１６（＝０１００００Ｈ）」のＬＳＢ「０」とに基づき、除算器１８４の出力値である「８」を選択して第６のセレクタ１８８に供給する。
【０１１５】
第５のセレクタ１８７は、仮想ページアドレスレジスタ１７０の記憶値「３（＝００００１１Ｈ）」のＬＳＢの値「１」と、仮想カウント値レジスタ１８０の記憶値「１６（＝０１００００Ｈ）」のＬＳＢの値「０」とに基づき、除算器１８４の出力値である「８」を選択して第７のセレクタ１８９に供給する。
【０１１６】
第６のセレクタ１８８は、仮想カウント／実カウント選択レジスタ１８３の設定値に基づき、第４のセレクタ１８６から供給される値「８」を選択して、フラッシュメモリシーケンサブロック１６Ａが有する物理カウント値レジスタ１６３に供給する。
【０１１７】
第７のセレクタ１８９は、仮想カウント／実カウント選択レジスタ１８３の設定値に基づき、第５のセレクタ１８７から供給される値「８」を選択して、フラッシュメモリシーケンサブロック１６Ｂが有する物理カウント値レジスタ１６３に供給する。
【０１１８】
次に、仮想カウント値が、奇数の場合の例として、仮想カウント値が１７（2進数で表現すると０１０００１Ｈ）の場合、即ち、アクセス対象のデータ量が１７セクタ分の場合について説明する。
【０１１９】
この場合、仮想カウント値レジスタ１８０の記憶値「１７（＝０１０００１Ｈ）」のＬＳＢは「１」となり、仮想ページアドレスレジスタ１７０の記憶値「３（＝００００１１Ｈ）」のＬＳＢの値は「１」となり、選択制御用のデータは「１１」となる。このため、第４のセレクタ１８６は、除算器１８４の出力値である「８」を選択して第６のセレクタ１８８に供給する。
一方、第５のセレクタ１８７は、選択制御データ「１１」に従って、加算器１８５の出力値である「９」を選択して第７のセレクタ１８９に供給する。
【０１２０】
仮想カウント／実カウント選択レジスタ１８３には、仮想カウント値により特定することを選択する値が設定されているため、第６のセレクタ１８８は、第４のセレクタ１８６から供給される値「８」を選択して、フラッシュメモリシーケンサブロック１６Ａが有する物理カウント値レジスタ１６３に供給する。
一方、第７のセレクタ１８９は、第５のセレクタ１８７から供給される値「９」を選択して、フラッシュメモリシーケンサブロック１６Ｂが有する物理カウント値レジスタ１６３に供給する。
【０１２１】
フラッシュメモリシーケンサブロック１６Ａと１６Ｂとは、フラッシュメモリ２Ａ及び２Ｂにおけるアクセス対象の物理ページのアドレスを、図７に示すように、それぞれが内蔵する物理ブロックアドレスレジスタ１６１に格納されている物理ブロックアドレスに、物理ページアドレスレジスタ１６２に格納されている物理ページアドレスを付加（連結）することにより生成する（ステップＳ１１）。
【０１２２】
最初のページの物理アドレス（物理スタートページアドレス）は、物理ブロックアドレスレジスタ１６１に設定された物理ブロックアドレスの下位側に、物理ページアドレスレジスタ１６２に当初設定された物理ページアドレスを付加することによって得られる。得られた物理アドレスが、対応するフラッシュメモリ２Ａ又は２Ｂに供給され、該当する記憶エリアへのアクセスが行われる（ステップＳ１２）。
【０１２３】
１ページ分のアクセスが終了すると、物理カウントレジスタ１６３に設定されている値をデクリメント（−１）し（ステップＳ１３）、「０」になっていなければ（ステップＳ１４；Ｎｏ）、物理ページアドレスレジスタ１６２の値を更新（＋１）して（ステップＳ１５）、物理ブロックアドレスの下位側に付加することによって物理アドレスを生成して（ステップＳ１１）、対応するフラッシュメモリ２Ａ又は２Ｂに供給する。
以後、同様の動作を繰り返す。
【０１２４】
物理カウントレジスタ１６３に当初設定されたページ分のデータがアクセスされると、物理カウントレジスタ１６３の値が０となり（ステップＳ１４；Ｙｅｓ）、アクセス処理が終了する。
なお、ページ番号が最終値まで達した場合には、新たな空きブロックの物理ブロックアドレスと物理ページアドレスとが設定される。
【０１２５】
以上説明したように、本実施の形態のフラッシュメモリシステム１では、仮想的なアドレス空間におけるスタートページが奇数か偶数かに応じて、アドレス変換ブロック１７及びカウント値変換ブロック１８が、フラッシュメモリ２Ａと２Ｂのそれぞれにつき、物理スタートページアドレスと物理カウント値とを供給する。その結果、本実施の形態のフラッシュメモリシステム１では、スタートページが奇数か偶数かによらず、フラッシュメモリへの円滑で迅速なアクセスが実現できる。
【０１２６】
なお、この発明は上記実施の形態に限定されず、種々の変形及び応用が可能である。例えば、回路ブロック構成や動作フローチャートは任意に変更可能である。さらに、上述した様々な数値は例示であり、任意に変更可能である。
【０１２７】
また、物理フラッシュメモリの１つのページのユーザ領域が４セクタに対応する場合であっても、セクタ単位で各フラッシュメモリに仮想ページアドレスを割り当てれば、同様に円滑で迅速なアクセスを実現できる。
【図面の簡単な説明】
【０１２８】
【図１】本発明に係るフラッシュメモリシステムを概略的に示すブロック図である。
【図２】フラッシュメモリのアドレス空間の構造を概略的に示す図である。
【図３】二つのフラッシュメモリにより構成される仮想的なアドレス空間における、ページアドレスの割り当てを説明する図である。
【図４】フラッシュメモリシーケンサブロックが備えるレジスタの構成を示す図である。
【図５】アドレス変換ブロックの構成を示すブロック図である。
【図６】カウント値変換ブロックの構成を示すブロック図である。
【図７】フラッシュメモリシーケンサブロックの動作を説明するためのフローチャートである。
【符号の説明】
【０１２９】
１    フラッシュメモリシステム
２Ａ    フラッシュメモリ
２Ｂ    フラッシュメモリ
３    コントローラ
４    ホストシステム
６    マイクロプロセッサ
７    ホストインターフェースブロック
８    ワークエリア
９    バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  ＲＯＭ
１３  外部バス
１４  内部バス
１６Ａ  フラッシュメモリシーケンサブロック
１６Ｂ  フラッシュメモリシーケンサブロック
１７  アドレス変換ブロック
１８  カウント値変換ブロック
２５  ユーザ領域
２６  冗長領域
【図１】
2007079920.tif 000003
【図２】
2007079920.tif 000004
【図３】
2007079920.tif 000005
【図４】
2007079920.tif 000006
【図５】
2007079920.tif 000007
【図６】
2007079920.tif 000008
【図７】
2007079920.tif 000009