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