(57)【要約】【課題】書き換え頻度が高いデータと低いデータをフラッシュメモリとランダムアクセスが可能な不揮発性メモリとに保存するときに好適なメモリコントローラ、メモリシステム及びメモリ制御方法の提供。【解決手段】メモリコントローラ１は、ホストシステム４から与えられる論理アドレスに基づいて、フラッシュメモリ２と不揮発性RAM３とに対するアクセスを制御する。複数セクタの領域を含む論理グループ及び１個以上の論理グループを含む論理ブロックが形成される。不揮発性RAM３には論理グループデータ記憶領域が複数個確保される。また、論理グループと論理グループデータ記憶領域との対応関係、及び各論理グループデータ記憶領域のデータの優先順位が管理される。ホストシステム４からのデータは、該データに対応する論理グループデータ記憶領域に書き込まれる。論理グループデータ記憶領域のデータは、フラッシュメモリ２内の対応する物理ブロックに転送される。【選択図】  図１
2009026062.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられるセクタ単位の論理アドレスに基づいて、物理ブロック単位で記憶データの消去が行われるフラッシュメモリとランダムアクセスが可能な不揮発性メモリとに対するアクセスを制御するメモリコントローラであって、
前記論理アドレスが連続する複数セクタの領域を含む論理グループを形成する論理グループ形成手段と、
前記不揮発性メモリに前記論理グループに対応するデータを格納するための論理グループデータ記憶領域を複数個確保し、前記論理グループと論理グループデータ記憶領域との対応関係を管理する第１の領域管理手段と、
１個又は複数個の論理グループを含む論理ブロックを形成する論理ブロック形成手段と、
前記論理ブロックと前記フラッシュメモリ内の物理ブロックとの対応関係を管理する第２の領域管理手段と、
前記各論理グループデータ記憶領域に格納されているデータの優先順位を管理する優先順位管理手段と、
前記ホストシステムから与えられたデータを、該データに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域に書き込む書き込み手段と、
前記論理グループデータ記憶領域に格納されているデータを、該データに対応する前記論理グループが属する前記論理ブロックと対応関係にある前記フラッシュメモリ内の物理ブロックに転送するデータ転送手段とを備え、
前記第１の領域管理手段は、前記ホストシステムから与えられたデータに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域が無いとき、前記ホストシステムから与えられたデータに対応する前記論理グループに対して、いずれの前記論理グループにも対応していない前記論理グループデータ記憶領域または前記データ転送手段によって格納されているデータが前記フラッシュメモリ内の物理ブロックに転送された前記論理グループデータ記憶領域を新たに割り当て、
前記データ転送手段は、前記ホストシステムから与えられたデータに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域が無く、かついずれの前記論理グループにも対応していない前記論理グループデータ記憶領域が無いときに、前記優先順位管理手段によって管理されている優先順位が最下位のデータを前記フラッシュメモリ内の物理ブロックに転送することを特徴とするメモリコントローラ。
【請求項２】
前記論理ブロックに含まれる論理グループの個数が２ｎ個（ｎは１以上の整数）であることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
請求項１又は２に記載されたメモリコントローラと、物理ブロック単位で記憶データの消去が行われるフラッシュメモリと、ランダムアクセスが可能な不揮発性メモリとを備えることを特徴とするメモリシステム。
【請求項４】
ホストシステムから与えられるセクタ単位の論理アドレスに基づいて、物理ブロック単位で記憶データの消去が行われるフラッシュメモリとランダムアクセスが可能な不揮発性メモリとに対するアクセスを制御するメモリ制御方法であって、
前記論理アドレスが連続する複数セクタの領域を含む論理グループを形成する論理グループ形成ステップと、
前記不揮発性メモリに前記論理グループに対応するデータを格納するための論理グループデータ記憶領域を複数個確保し、前記論理グループと論理グループデータ記憶領域との対応関係を管理する第１の領域管理ステップと、
１個又は複数個の論理グループを含む論理ブロックを形成する論理ブロック形成ステップと、
前記論理ブロックと前記フラッシュメモリ内の物理ブロックとの対応関係を管理する第２の領域管理ステップと、
前記各論理グループデータ記憶領域に格納されているデータの優先順位を管理する優先順位管理ステップと、
前記ホストシステムから与えられたデータを、該データに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域に書き込む書き込みステップと、
前記論理グループデータ記憶領域に格納されているデータを、該データに対応する前記論理グループが属する前記論理ブロックと対応関係にある前記フラッシュメモリ内の物理ブロックに転送するデータ転送ステップとを備え、
前記第１の領域管理ステップでは、前記ホストシステムから与えられたデータに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域が無いとき、前記ホストシステムから与えられたデータに対応する前記論理グループに対して、いずれの前記論理グループにも対応していない前記論理グループデータ記憶領域または前記データ転送ステップによって格納されているデータが前記フラッシュメモリ内の物理ブロックに転送された前記論理グループデータ記憶領域を新たに割り当て、
前記データ転送ステップでは、前記ホストシステムから与えられたデータに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域が無く、かついずれの前記論理グループにも対応していない前記論理グループデータ記憶領域が無いときに、前記優先順位管理ステップによって管理されている優先順位が最下位のデータを前記フラッシュメモリ内の物理ブロックに転送することを特徴とするメモリ制御方法。
【請求項５】
１個の前記論理ブロックに複数個の前記フラッシュメモリ内の物理ブロックが割り当てられるときに、
前記データ転送ステップでは、論理アドレスが連続するデータが異なる前記フラッシュメモリ内の物理ブロックに割り振られるようにデータの転送が行われることを特徴とする請求項４に記載のメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストシステムから与えられるセクタ単位の論理アドレスに基づいて、フラッシュメモリ及び不揮発性メモリに対するアクセスを制御するメモリコントローラ、メモリシステム及びメモリ制御方法に関する。
【背景技術】
【０００２】
従来の記憶装置として、フラッシュメモリ（カード型メモリ）と、ランダムアクセスが可能な不揮発性メモリ（ＮＶＲＡＭ）と、ＲＡＭ（揮発性ＲＡＭ）とを設けた記憶装置が知られている。この記憶装置では、電源断後も記憶している必要のあるデータは、不揮発性メモリとフラッシュメモリとに分散して保存される。すなわち、フラッシュメモリには更新前のシステムデータが保存されており、フラッシュメモリからＲＡＭに読み出されたシステムデータを更新するときには、不揮発性メモリに更新情報（差分データ）が保存される。従って、ＲＡＭに記憶されている更新後のシステムデータの複製をフラッシュメモリに保存する前に電源断が発生した場合には、不揮発性メモリに保存された更新情報をフラッシュメモリから読み出された更新前のシステムデータに反映することにより、電源断前のシステムデータを再構成する（例えば、特許文献１参照。）。
【特許文献１】特開２００６−３５０５７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記の記憶装置では、実際に使用するシステムデータをフラッシュメモリから読み出してＲＡＭに記憶し、ＲＡＭに記憶されているシステムデータを更新するときには、更新情報を不揮発性メモリ（ＮＶＲＡＭ）に逐次記憶している。そして、不意の電源断が発生した場合には、再起動時にフラッシュメモリに保存されているシステムデータと不揮発性メモリに保存されている更新情報に基づいて最新（更新後）のシステムデータを復元する。しかしながら、この記憶装置では、不揮発性メモリに記憶するデータとして、特定のデータ（システムデータ）を対象としているため、データが電源遮断によって破壊されて使用できなくなったり、最新のデータを復元できなくなったりするのを回避することを主な目的としている。従って、それ以外のデータ（ユーザデータなど）で書き換え頻度が高いデータが存在する場合には適していない。
【０００４】
そこで本発明は、書き換え頻度が高いデータと低いデータをフラッシュメモリとランダムアクセスが可能な不揮発性メモリとに保存するときに好適なメモリコントローラ、メモリシステム及びメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は、ホストシステムから与えられるセクタ単位の論理アドレスに基づいて、物理ブロック単位で記憶データの消去が行われるフラッシュメモリとランダムアクセスが可能な不揮発性メモリとに対するアクセスを制御するメモリコントローラを提供している。該メモリコントローラは、前記論理アドレスが連続する複数セクタの領域を含む論理グループを形成する論理グループ形成手段と、前記不揮発性メモリに前記論理グループに対応するデータを格納するための論理グループデータ記憶領域を複数個確保し、前記論理グループと論理グループデータ記憶領域との対応関係を管理する第１の領域管理手段と、１個又は複数個の論理グループを含む論理ブロックを形成する論理ブロック形成手段と、前記論理ブロックと前記フラッシュメモリ内の物理ブロックとの対応関係を管理する第２の領域管理手段と、前記各論理グループデータ記憶領域に格納されているデータの優先順位を管理する優先順位管理手段と、前記ホストシステムから与えられたデータを、該データに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域に書き込む書き込み手段と、前記論理グループデータ記憶領域に格納されているデータを、該データに対応する前記論理グループが属する前記論理ブロックと対応関係にある前記フラッシュメモリ内の物理ブロックに転送するデータ転送手段とを備える。前記第１の領域管理手段は、前記ホストシステムから与えられたデータに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域が無いとき、前記ホストシステムから与えられたデータに対応する前記論理グループに対して、いずれの前記論理グループにも対応していない前記論理グループデータ記憶領域または前記データ転送手段によって格納されているデータが前記フラッシュメモリ内の物理ブロックに転送された前記論理グループデータ記憶領域を新たに割り当てる。前記データ転送手段は、前記ホストシステムから与えられたデータに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域が無く、かついずれの前記論理グループにも対応していない前記論理グループデータ記憶領域が無いときに、前記優先順位管理手段によって管理されている優先順位が最下位のデータを前記フラッシュメモリ内の物理ブロックに転送する。
【０００６】
上記のメモリコントローラにおいて、前記論理ブロックに含まれる論理グループの個数が２ｎ個（ｎは１以上の整数）であるのが好ましい。
【０００７】
また本発明は、上記のメモリコントローラと、物理ブロック単位で記憶データの消去が行われるフラッシュメモリと、ランダムアクセスが可能な不揮発性メモリとを備えるメモリシステムを提供している。
【０００８】
さらに本発明は、ホストシステムから与えられるセクタ単位の論理アドレスに基づいて、物理ブロック単位で記憶データの消去が行われるフラッシュメモリとランダムアクセスが可能な不揮発性メモリとに対するアクセスを制御するメモリ制御方法を提供している。該メモリ制御方法は、前記論理アドレスが連続する複数セクタの領域を含む論理グループを形成する論理グループ形成ステップと、前記不揮発性メモリに前記論理グループに対応するデータを格納するための論理グループデータ記憶領域を複数個確保し、前記論理グループと論理グループデータ記憶領域との対応関係を管理する第１の領域管理ステップと、１個又は複数個の論理グループを含む論理ブロックを形成する論理ブロック形成ステップと、前記論理ブロックと前記フラッシュメモリ内の物理ブロックとの対応関係を管理する第２の領域管理ステップと、前記各論理グループデータ記憶領域に格納されているデータの優先順位を管理する優先順位管理ステップと、前記ホストシステムから与えられたデータを、該データに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域に書き込む書き込みステップと、前記論理グループデータ記憶領域に格納されているデータを、該データに対応する前記論理グループが属する前記論理ブロックと対応関係にある前記フラッシュメモリ内の物理ブロックに転送するデータ転送ステップとを備える。前記第１の領域管理ステップでは、前記ホストシステムから与えられたデータに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域が無いとき、前記ホストシステムから与えられたデータに対応する前記論理グループに対して、いずれの前記論理グループにも対応していない前記論理グループデータ記憶領域または前記データ転送ステップによって格納されているデータが前記フラッシュメモリ内の物理ブロックに転送された前記論理グループデータ記憶領域を新たに割り当てる。前記データ転送ステップでは、前記ホストシステムから与えられたデータに対応する前記論理グループと対応関係にある前記論理グループデータ記憶領域が無く、かついずれの前記論理グループにも対応していない前記論理グループデータ記憶領域が無いときに、前記優先順位管理ステップによって管理されている優先順位が最下位のデータを前記フラッシュメモリ内の物理ブロックに転送する。
【０００９】
上記のメモリ制御方法において、１個の前記論理ブロックに複数個の前記フラッシュメモリ内の物理ブロックが割り当てられるときに、前記データ転送ステップでは、論理アドレスが連続するデータが異なる前記フラッシュメモリ内の物理ブロックに割り振られるようにデータの転送が行われるのが好ましい。
【発明の効果】
【００１０】
本発明によるメモリコントローラ、メモリシステム及びメモリ制御方法によれば、ホストシステムから与えられたデータは、一旦、ランダムアクセスが可能な不揮発性メモリに記憶される。そして、不揮発性メモリに記憶されているデータは、優先順位管理手段によって優先順位が管理され、不揮発性メモリに新たなデータを記憶することができなくなったときには、優先順位が最下位のデータがフラッシュメモリ内の物理ブロックに転送される。一方、頻繁に書き換えられるデータの優先順位は最下位になる可能性が低いため、フラッシュメモリに転送されずに不揮発性メモリに記憶されている可能性が高い。したがって、頻繁に書き換えられるデータについては、不揮発性メモリに記憶されているデータを書き換えることになり、フラッシュメモリに記憶されているデータを頻繁に書き換える必要がない。このため、フラッシュメモリに記憶されているデータの書き換え回数が減少し、フラッシュメモリの寿命を向上させることができる。
【発明を実施するための最良の形態】
【００１１】
本発明の実施の形態によるメモリコントローラ、メモリシステム及びメモリ制御方法について図１乃至図１０に基づき説明する。図１に示されるように、メモリシステム１００は、フラッシュメモリ２と、不揮発性ＲＡＭ３と、フラッシュメモリ２及び不揮発性ＲＡＭ３を制御するメモリコントローラ１とで構成されている。
【００１２】
メモリシステム１００は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリシステム１００との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置である。
【００１３】
メモリコントローラ１は、図１に示されるように、マイクロプロセッサ６と、ホストインタフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインタフェースブロック１０と、ＥＣＣブロック１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２と、ＲＡＭインタフェースブロック１６とを備える。メモリコントローラ１は、内部バス１４，１５を介してそれぞれフラッシュメモリ２、不揮発性ＲＡＭ３と接続されている。これら機能ブロックによって構成されるメモリコントローラ１は、一つの半導体チップ上に集積される。以下、各機能ブロックについて説明する。
【００１４】
ホストインタフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報、外部コマンド等の授受を行なう。外部コマンドとは、ホストシステム４がメモリシステム１００に対して処理の実行を指示するためのコマンドである。ホストシステム４よりメモリシステム１００に供給されるデータ等は、ホストインタフェースブロック７を入口としてメモリシステム１００の内部（例えば、バッファ９）に取り込まれる。また、メモリシステム１００からホストシステム４に供給されるデータ等は、ホストインタフェースブロック７を出口としてホストシステム４に供給される。
【００１５】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータを一時的に保持する作業領域であり、複数のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）セルによって構成されている。ワークエリア８には、例えば、論理ブロックと物理ブロックとの関係を示したアドレス変換テーブルなどが記憶される。
【００１６】
バッファ９は、フラッシュメモリ２又は不揮発性ＲＡＭ３から読み出したデータを、ホストシステム４が受け取り可能な状態となるまで保持する。また、フラッシュメモリ２又は不揮発性ＲＡＭ３に書き込むデータを、各メモリが書き込み可能な状態となるまで保持する。
【００１７】
フラッシュメモリインタフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２との間でデータ、アドレス情報、ステータス情報、内部コマンド等の授受を行う。ここで、内部コマンドとは、メモリコントローラ１がフラッシュメモリ２に処理の実行を指示するためのコマンドである。フラッシュメモリ２及び不揮発性ＲＡＭ３は、メモリコントローラ１から与えられる内部コマンドに従って動作する。ＲＡＭインタフェースブロック１６は、内部バス１５を介して不揮発性ＲＡＭ３へのデータの書き込み又は不揮発性ＲＡＭ３からのデータの読み出しを行う。この際、不揮発性ＲＡＭ３には、内部バス１５を介してアドレス信号及び各種制御信号が供給される。
【００１８】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに対するエラーコレクションコードを生成するとともに、フラッシュメモリから読み出されたデータに付加されているエラーコレクションコードに基づいて、読み出されたデータに含まれる誤りを検出・訂正する。
【００１９】
ＲＯＭ１２は、マイクロプロセッサ６による処理の手順を規定するプログラムが記憶される不揮発性の記憶素子である。例えば、ホストシステム４から与えられたユーザデータに不揮発性ＲＡＭ３の領域を割り当てる処理（後述）の手順を規定するプログラムが格納されている。
【００２０】
マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムに従って、メモリコントローラ１の全体の動作を制御する。例えば、マイクロプロセッサ６は、各種処理を定義したコマンドセットをＲＯＭ１２から読み出して、フラッシュメモリインタフェースブロック１０に各種処理を実行させる。
【００２１】
フラッシュメモリ２はＮＡＮＤ型フラッシュメモリからなる。ＮＡＮＤ型フラッシュメモリは、不揮発性メモリであり、レジスタと複数のメモリセルからなるメモリセルアレイとを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの書き込み又は読み出し、即ち、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。即ち、フラッシュメモリ２に入力されたデータは、レジスタを介してメモリセルに書き込まれ、メモリセルから読み出されたデータは、レジスタを介してフラッシュメモリ２から出力される。
【００２２】
ＮＡＮＤ型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック（物理ブロック）単位でおこなわれる。図２に示されるように、物理ブロックは、複数のページで構成される。フラッシュメモリの物理ブロックの構成は、フラッシュメモリの大容量化に伴い変化している。本実施の形態では、１個のページが４セクタ（２０４８バイト）のユーザ領域２１と６４バイトの冗長領域２２とで構成され、１個の物理ブロック（図２のブロック０、ブロック１、．．．）が６４個のページで構成されているフラッシュメモリを用いる。本実施の形態では用いないが、１個のページが１セクタ（５１２バイト）のユーザ領域２１と１６バイトの冗長領域２２とで構成され、１個の物理ブロックが３２個のページで構成されているフラッシュメモリも知られている。
【００２３】
ユーザ領域２１はホストシステム４から与えられるデータを記憶するための領域である。冗長領域２２は、誤り訂正符号（ＥＣＣ：Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）、論理アドレス情報、ブロックステータス（フラグ）等の付加データを記憶するための領域である。
【００２４】
論理アドレス情報は、その論理アドレス情報が書き込まれている物理ブロックと対応関係にある論理ブロックを特定するための情報である。いずれの論理ブロックにも関連付けられていない物理ブロック、つまり、対応する論理ブロックがない物理ブロックについては、そのブロックの冗長領域２２に、論理アドレス情報が書き込まれていない。したがって、冗長領域２２に論理アドレス情報が格納されているか否かを判定することにより、その冗長領域２２が含まれている物理ブロックが空きブロックであるか否かを判定することができる。
【００２５】
尚、論理ブロックと物理ブロックとの対応関係は通常、アドレス変換テーブル（第２の領域管理手段）によって管理される。このアドレス変換テーブルは、各物理ブロックの冗長領域２２に記憶されている論理アドレス情報に基づいて作成される。
【００２６】
ブロックステータス（フラグ）は、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域２２には、不良ブロックであることを示すブロックステータス（フラグ）が書き込まれる。尚、初期不良の不良ブロックには、不良ブロックであることを示すブロックステータス（フラグ）が出荷前に書き込まれる。
【００２７】
不揮発性ＲＡＭ３は、電源の供給が遮断されても記憶内容を保持することが可能なメモリであって、且つ、ランダムな書き込み及び読み出し可能なメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。また、不揮発性ＲＡＭ３は、データの上書きが可能なので、フラッシュメモリのようにデータの書き込みと消去を別々に行う必要が無い。一般的には、不揮発性ＲＡＭ３の容量はフラッシュメモリ２と比較すると小さい。不揮発性ＲＡＭ３の例として、ＦＲＡＭ（登録商標）とも称されるＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が挙げられる。
【００２８】
次に、不揮発性ＲＡＭ３の構成について図３を参照しながら説明する。図３に示されるように、本実施の形態による不揮発性ＲＡＭ３は、管理領域３１（第１の領域管理手段、優先順位管理手段）と論理グループデータ記憶領域３２とを備える。管理領域３１は、論理グループデータ記憶領域３２に記憶されたデータの論理グループと優先順位を管理するための領域である。管理領域３１は、優先順位が最高位の領域を記憶する最高位記憶領域３１Ａと、論理グループデータ記憶領域３２に記憶されているデータの論理グループと優先順位などを管理するためのテーブルを記憶するテーブル記憶領域３１Ｂとを有する。
【００２９】
論理グループデータ記憶領域３２は、ホストシステム４から与えられたデータを記憶するための領域である。本実施の形態では、論理グループデータ記憶領域３２を、領域番号＃０〜＃１５が付された１６個の領域に分割して使用する。各領域は３２ｋＢ（キロバイト）の容量を有する。各記憶領域には、１個の論理グループに属するデータが保存される。
【００３０】
次に、論理セクタ、論理グループ及び論理ブロックの関係について、図４を参照しながら説明する。ホストシステム４側のアドレス空間（論理アドレス空間）は、セクタ（５１２バイト）単位で分割した領域に付けた通し番号であるＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）４１によって管理されている。
【００３１】
本実施の形態では、ＬＢＡが連続する６４セクタの領域を論理グループとして管理し、各論理グループに論理グループ番号（ＬＧＮ）４２を付している。例えば、図４に示されるように、ＬＢＡ＃０〜＃６３の６４セクタの領域はＬＧＮ＃０の論理グループに属し、ＬＢＡ＃６４〜＃１２７の６４セクタの領域はＬＧＮ＃１の論理グループに属している。ＬＢＡ＃１２８以降の領域についても同様に６４セクタの領域が論理グループとして管理される。１個の論理グループに含まれる領域は、３２ｋＢの容量を有する（論理グループ形成手段）。
【００３２】
また本実施形態では、ＬＢＡが連続する２５６セクタの領域を論理ブロックとして管理し、この論理ブロックに論理ブロック番号（ＬＢＮ）４３を付している。例えば、ＬＢＡ＃０〜＃２５５の２５６セクタの領域はＬＢＮ＃０の論理ブロックに属し、ＬＢＡ＃２５６〜＃５１１の２５６セクタの領域はＬＢＮ＃１の論理ブロックに属している。ＬＢＡ＃５１２以下の領域についても同様に２５６セクタの領域が論理ブロックとして管理される（論理ブロック形成手段）。
【００３３】
以上より、ＬＢＮ＃０の論理ブロックはＬＧＮ＃０〜＃３の論理グループから構成され、ＬＢＮ＃１の論理ブロックはＬＧＮ＃４〜＃７の論理グループから構成されている。すなわち、１個の論理ブロックは４個の論理グループに対応している。
【００３４】
図５は、ビット表示（２進数表示）されたＬＢＡ、論理グループ番号（ＬＧＮ）、論理ブロック番号（ＬＢＮ）等を示している。記号「＊」は各ビットを表している。図示の便宜上、上位４ビット及び下位１２ビットのみ表示しており、その中間のビットは省略されている。図５において、ビット列全体がＬＢＡ４１を表している。また、下位８ビットを除いたビット列が論理ブロック番号（ＬＢＮ）４３を表し、下位６ビットを除いたビット列が論理グループ番号（ＬＧＮ）４２を表している。また、下位８ビットは各論理ブロックにおけるセクタ単位の通し番号である論理セクタ番号（ＬＳＮ）４４を表す。論理セクタ番号（ＬＳＮ）４４は＃０〜＃２５５の値をとる。また、論理グループ番号（ＬＧＮ）４２の下位２ビット（ＬＢＡの最下位ビット側から数えて７、８ビット目の２ビット）は、各論理ブロック内でのグループ番号である論理ブロック内グループ番号（ＬＢＩＧＮ）４５を表す。論理ブロック内グループ番号（ＬＢＩＧＮ）４５は＃０〜＃３の値をとる。
【００３５】
上述のように本実施の形態では、１つの論理ブロックに含まれる論理グループの個数を２ｎ個（ｎは１以上の整数、上述の例ではｎ＝２）に設定している。２ｎは２のべき乗を表す。このように設定すると、ＬＢＡをビット表示（２進数表示）したときの一部のビットの値に基づいて、論理ブロック内グループ番号（ＬＢＩＧＮ）を判別することができる。尚、論理ブロック内の領域を複数個の論理グループに分割せずに、論理グループと論理ブロックを同じＬＢＡの範囲の領域に割り当ててもよい。
【００３６】
次に、本実施の形態で用いられる論理アドレスについて説明する。
【００３７】
一般的なフラッシュメモリシステムでは、１つの論理ブロックに割り当てられた物理ブロックにおいて、＃０〜＃２５５の物理セクタ番号（ＰＳＮ）が割り当てられている２５６個の物理セクタ領域に、ＬＢＡが連続する当該論理ブロックのデータが順番に保存されている。言い換えれば、物理セクタ領域に保存されているデータの論理セクタ番号（ＬＳＮ）４４の値は、当該物理セクタ領域の物理セクタ番号（ＰＳＮ）の値と一致している。実際には、ページ単位で書き込みが行われるため、論理ページ番号（ＬＰＮ）と物理ページ番号（ＰＰＮ）が一致しているとも言える。なお、各ページには４個の物理セクタ領域が含まれる。従って、論理ページ番号（ＬＰＮ）と物理ページ番号（ＰＰＮ）は＃０〜＃６３の値をとる。
【００３８】
一方、本実施の形態では、論理グループ単位で物理ブロックに書き込むデータの順番を変更可能である。つまり、物理セクタ領域に保存されているデータの論理セクタ番号（ＬＳＮ）と、当該物理セクタ領域の物理セクタ番号（ＰＳＮ）との値は必ずしも一致しない。実際には、ページ単位で書き込みが行われるため、論理ページ番号（ＬＰＮ）と物理ページ番号（ＰＰＮ）が必ずしも一致しないとも言える。より具体的には、図６に示されるように、ＬＢＮ＃０内のＬＧＮ＃０（ＬＳＮ＃０〜＃６３）に属するデータはＰＢＡ＃０内のＰＳＮ＃１２８〜＃１９１に記憶されている。また、ＬＢＮ＃０内のＬＧＮ＃１（ＬＳＮ＃６４〜＃１２７）に属するデータはＰＢＡ＃０内のＰＳＮ＃１９２〜＃２５５に記憶されている。ただし、同一のＬＢＮに属する論理グループのデータは、当該ＬＢＮの論理ブロックに対応するＰＢＡの物理ブロックに保存される。
【００３９】
このため、フラッシュメモリ２においては、論理グループと物理グループの対応関係を示す情報を各物理グループ内の先頭ページ又は各ページの冗長領域２２に書き込むことにより、データの論理アドレスと当該データが記憶された物理アドレスとの対応関係が分かる。例えば、各物理グループ内の先頭ページ又は各ページの冗長領域２２に論理ブロック内グループ番号（ＬＢＩＧＮ）を書き込めばよい。ここで、物理グループは、論理ブロックに含まれる論理グループと同じ数の領域に分割した物理ブロック内の領域であり、本実施の形態では、ＰＰＮ＃０〜＃１５の物理ページ、ＰＰＮ＃１６〜＃３１の物理ページ、ＰＰＮ＃３２〜＃４７の物理ページ及びＰＰＮ＃４８〜＃６３の物理ページがそれぞれ物理グループとして管理される。
【００４０】
次に、ホストシステム４からのコマンドに基づくデータの読み出し及び書き込み処理の概要について説明する。
【００４１】
メモリシステム１００からデータを読み出す際には、ホストシステム４から所望のデータの論理アドレス（より具体的には読み出すデータに対応するＬＢＡ若しくはＬＢＡの範囲）を指定した読み出しコマンドがメモリコントローラ１に与えられる。マイクロプロセッサ６は、ホストインタフェースブロック７を介してこのコマンドを受け取り、指定されたＬＢＡからアクセス対象の領域が含まれる論理グループのＬＧＮを判別する。マイクロプロセッサ６は、まず不揮発性ＲＡＭ３に当該ＬＧＮに対応するデータが記憶されているか否かを調べ、もし記憶されていればこのデータを、ＲＡＭインタフェースブロック１６を介してバッファ９に読み出す。もし当該ＬＧＮに対応するデータが不揮発性ＲＡＭ３に記憶されていなければ、フラッシュメモリ２に記憶されているデータを、フラッシュメモリインタフェースブロック１０を介してバッファ９に読み出す。読み出されたデータは、ホストインタフェースブロック７を介してホストシステム４へ提供される。つまり、同一のＬＢＡ（ＬＧＮ）に対応するデータがフラッシュメモリ２と不揮発性ＲＡＭ３との両方に保存されていて、かつ、フラッシュメモリ２と不揮発性ＲＡＭ３とでデータの内容が異なる場合がある。この場合は、後述するように不揮発性ＲＡＭ３のデータがより新しいデータであるから、不揮発性ＲＡＭ３のデータを優先して読み出す。なお、ＥＣＣブロック１１は、フラッシュメモリ２からデータを読み出す場合には、読み出されたデータに付加されているエラーコレクションコード（冗長領域２２に書き込まれているエラーコレクションコード）に基づいて当該データに含まれる誤りを検出・訂正する。
【００４２】
一方、メモリシステム１００にデータを書き込む際には、ホストシステム４から書き込もうとするデータ及びその論理アドレス（より具体的には書き込み先を指示するＬＢＡ若しくはＬＢＡの範囲）を指定した書き込みコマンドがメモリコントローラ１に与えられる。ホストシステム４から与えられたデータは、一旦バッファ９に保持される。マイクロプロセッサ６は、ホストインタフェースブロック７を介してこのコマンドを受け取り、指定されたＬＢＡからアクセス対象の領域が含まれる論理グループのＬＧＮを判別する。マイクロプロセッサ６は、後述するように、このＬＧＮに対応する領域が不揮発性ＲＡＭ３内に割り当てられている場合は、その領域に当該データを書き込み、割り当てられていない場合は、このＬＧＮに対応する領域を新たに割り当て、新たに割り当てた領域に当該データを書き込む。この書き込み処理については、図７〜図１０を参照して以下でより詳細に説明する。
【００４３】
図７〜図９は、不揮発性ＲＡＭ３（論理グループデータ記憶領域３２）内の各領域と論理グループとの対応関係、及び各領域に記憶されているデータの優先順位を管理するための管理テーブル５０を示している。管理テーブル５０は、論理グループデータ記憶領域３２内の各領域の領域番号５１（＃０〜＃１５）と、各領域に割り当てられている論理グループのＬＧＮ５２と、各領域に記憶されているデータの優先リンク５３との対応関係を示すテーブルであり、テーブル記憶領域３１Ｂに保存されている。
【００４４】
優先リンク５３は、各領域に記憶されたデータの優先順位を示すためのものである。優先リンク５３の値は、当該優先リンクに対応する領域の次に高い優先順位となる領域の領域番号を示している。また、管理テーブル５０とは別に、最も優先順位が高い（最高位）データを保存する領域の領域番号が不揮発性ＲＡＭ３の最高位記憶領域３１Ａに記憶されている。一方、最も優先順位が低い（最下位）データは、優先リンクの値がＮＵＬＬである領域番号に対応するデータである。
【００４５】
例えば、図７の状態では、最高位記憶領域３１Ａに最高位の領域番号である＃３が記憶されている。最高位の領域番号＃３の優先リンクは＃６を示している。したがって、第２位の領域は領域番号＃６の領域である。同様に、第３位の領域は、第２位の領域番号＃６の優先リンクが示す領域番号＃１０の領域である。以下同様に、第４位から最下位までが指示される。最下位の領域（領域番号＃９）の優先リンクは、指示すべき領域が無いので、ＮＵＬＬ値となっている。
【００４６】
不揮発性ＲＡＭ３内の論理グループデータ記憶領域３２に新たな論理グループを割り当てる場合の処理について、図７、８及び１０を参照して説明する。不揮発性ＲＡＭ３の領域が図７のような状態になっていると仮定し、この状態でＬＧＮ＃３３の論理グループに含まれる領域（当該論理グループの全領域又は一部の領域に相当する領域）に対するデータの書き込みを指示するコマンドがホストシステムから与えられたとする。図１０のフローチャートに示したように、まず、ＬＧＮ＃３３の論理グループに対応する領域が不揮発性ＲＡＭ３（論理グループデータ記憶領域３２）内に割り当てられているか否かを判断する。図７の状態では、領域番号＃０〜＃１５のいずれの領域にもＬＧＮ＃３３の論理グループは割り当てられていない（Ｓ１０：Ｎｏ）。また、いずれの論理グループにも対応していない領域（空き領域）は存在しない（Ｓ２０：Ｎｏ）。なお、ステップを「Ｓ」と省略する。
【００４７】
このため、まず図７で優先順位最下位の領域である領域番号＃９のデータ（ＬＧＮ＃１５５の論理グループに対応するデータ）を、バッファ９を経由してフラッシュメモリ２内の物理ブロックへ転送する（Ｓ３０、データ転送手段）。つまり、領域番号＃９の領域に記憶されているデータをバッファ９に読み出し、バッファ９に読み出したデータをＬＧＮ＃１５５の論理グループが属する論理ブロックのデータとしてフラッシュメモリ２内の物理ブロックに書き込む。より具体的には、マイクロプロセッサ６は、まずデータのＬＧＮの下位２ビットを除いた上位のビットから当該ＬＧＮ＃１５５の論理グループが属する論理ブロックのＬＢＮを判別する（図５）。次に、求めたＬＢＮの論理ブロックに対応する物理ブロックがフラッシュメモリ２内に存在するか否かを判断する。当該ＬＢＮの論理ブロックに対応する物理ブロックが存在し、その物理ブロックに１グループのデータ（１個の論理グループに対応する３２ｋＢのデータ）を書き込む空き領域があれば、空き領域にデータを書き込む。空き領域が無い場合や、上記ＬＢＮの論理ブロックに対応する物理ブロックが存在しない場合には、空きブロックを検索し、空きブロックにデータを書き込む。なお、ＥＣＣブロック１１は、書き込まれるデータに対するエラーコレクションコードを生成する。生成されたエラーコレクションコードは冗長領域２２に書き込まれる。又、物理ブロックと論理ブロックの対応関係を示す論理アドレス情報と、各物理ブロック内の物理グループと論理グループの対応関係を示す情報も冗長領域２２に書き込まれる。
【００４８】
次に、上述のようにデータがフラッシュメモリ２に転送された領域番号＃９の領域にＬＧＮ＃３３の論理グループを新たに割り当てる（Ｓ４０）。図８は、当該論理グループが新たに割り当てられた状態を示している。より具体的には、領域番号＃９に対応するＬＧＮの値として＃３３、優先リンクの値として＃３を上書きする。この優先リンクの値＃３は、最高位記憶領域３１Ａ（図７）に記憶されていた最高位の領域番号である。最高位記憶領域３１Ａには、ＬＧＮ＃３３の論理グループが割り当てられた領域の領域番号＃９が上書きされる。このとき、新たな論理グループＬＧＮ＃３３が割り当てられたことに伴う優先リンクの変更を行う。図７では、優先順位が最下位より一つ上の領域は、優先リンクが最下位領域番号＃９を示している領域、すなわち領域番号＃１２の領域である。図７における最下位の領域番号＃９の領域に新たな論理グループＬＧＮ＃３３が割り当てられたため、図８に示されるように領域番号＃１２の領域が優先順位最下位の領域となる。従って、領域番号＃１２に対応する優先リンクをＮＵＬＬとする。
【００４９】
次いで、ＬＧＮ＃３３の論理グループに対応するデータがフラッシュメモリ２に記憶されているか否かを判断し、記憶されている場合は（Ｓ５０：Ｙｅｓ）、フラッシュメモリ２に記憶されているＬＧＮ＃３３に対応するデータが、バッファ９を経由して、不揮発性ＲＡＭ３（論理グループデータ記憶領域３２）内の領域番号＃９の領域に転送される（Ｓ６０）。このとき、フラッシュメモリ２に記憶されているＬＧＮ＃３３に対応するデータの全部を不揮発性ＲＡＭ３に転送してもよいし、書き換え対象でないデータのみを不揮発性ＲＡＭ３に転送するようにしてもよい。書き換え対象であるデータは、ホストシステム４から与えられるからである。このように、新たに割り当てられた論理グループに対応するデータの全部又は一部をフラッシュメモリ２から不揮発性ＲＡＭ３に転送するため、不揮発性ＲＡＭ３の各領域には対応する論理グループに属するデータの全体が記憶されることになる。このため、ある論理グループの一部のみが更新され、残りの一部は更新されていないような状態における差分データ（更新済みデータ又は未更新データ）の管理をする必要が無く、データの取扱いを単純化できる。
【００５０】
一方、ＬＧＮ＃３３の論理グループに対応するデータがフラッシュメモリ２に記憶されていない場合は（Ｓ５０：Ｎｏ）、Ｓ６０の処理はスキップされる。この際、領域番号＃９の領域内のホストシステム４から与えられるデータが書き込まれない領域には、フラッシュメモリの消去状態に対応するデータが書き込まれる。
【００５１】
そして、不揮発性ＲＡＭ３の領域番号＃９の領域には、ホストシステム４から与えられるデータが書き込まれる。つまり、ＬＧＮ＃３３の論理グループに含まれる領域に書き込むことを指示されたデータが論理グループデータ記憶領域３２内の領域番号＃９の領域に書き込まれる（Ｓ７０、書き込み手段）。
【００５２】
一方、ホストシステム４から書き込み先として指示された領域が含まれる論理グループが不揮発性ＲＡＭ３（論理グループデータ記憶領域３２）内何れかの領域に既に割り当てられている場合の処理は以下のようになる。図８〜１０を参照しながら説明する。ここでは例として、図８の状態において領域番号＃０の領域に割り当てられているＬＧＮ＃０の論理グループのデータが更新される場合について説明する。
【００５３】
図８の状態において、ホストシステム４からＬＧＮ＃０の論理グループに含まれる領域（当該論理グループの全領域又は一部の領域に相当する領域）をデータの書き込み先として指示したコマンドが与えられた場合、ＬＧＮ＃０の論理グループが領域番号＃０の領域に割り当てられているため（Ｓ１０：Ｙｅｓ）、ホストシステム４から与えられるデータは領域番号＃０の領域に書き込まれ、この領域番号＃０の領域へのデータの書き込みによって、領域番号＃０の領域に記憶されているデータの優先順位が最高位になる。従って、管理テーブル５０及び最高位記憶領域３１Ａに保持されている優先リンク関する情報が変更される。まず、図９に示されるように、最高位記憶領域３１Ａには、ＬＧＮ＃０の論理グループが割り当てられている領域の領域番号＃０が書き込まれる。また、管理テーブル５０については、領域番号＃０に対応する優先リンクの値として、図８で最高位であった領域の領域番号＃９が書き込まれる。図８の状態では、領域番号＃１２の領域の優先リンクがＮＵＬＬであり、領域番号＃０の領域の優先リンクが＃１２であり、領域番号＃１３の領域の優先リンクが＃０である。よって、＃１３→＃０→＃１２（領域番号）の順で優先順位が設定されていたと判断できる。しかし、図９では領域番号＃０は優先順位最高位となるため、＃１３→＃１２（領域番号）の優先順位となる。この変更を反映させるため、領域番号＃１３の優先リンクを＃１２に書き換える（Ｓ８０）。
【００５４】
その後、不揮発性ＲＡＭ３（論理グループデータ記憶領域３２）内の領域番号＃０の領域に、ホストシステム４から与えられたデータ（ＬＧＮ＃０の論理グループに含まれる領域を書き込み先として指示されたデータ）が実際に書き込まれる（Ｓ９０、書き込み手段）。この際、ホストシステム４から与えられたデータは、領域番号＃０の領域に記憶されていたデータに対して上書きされる。
【００５５】
一方、ホストシステム４からデータの書き込み先として指示された領域が含まれる論理グループが不揮発性ＲＡＭ３（論理グループデータ記憶領域３２）内の領域に割り当てられていない場合であって（Ｓ１０：Ｎｏ）、不揮発性ＲＡＭ３の論理グループデータ記憶領域３２にいずれの論理グループにも対応していない（割り当てられていない）領域(空き領域）がある場合には（Ｓ２０：Ｙｅｓ）、以下のような処理を行う。すなわち、ホストシステム４から書き込み先として指示された領域が含まれる論理グループに対して、上記空き領域を割り当て、この領域に記憶されるデータの優先順位が最高位になるように、管理テーブル５０及び最高位記憶領域３１Ａに保持されている優先リンクに関する情報を変更する（Ｓ１００）。優先リンクに関する情報を変更する処理は上記と同様である。そして、割り当てた領域にホストシステム４から与えられるデータを書き込む（Ｓ１１０）。
【００５６】
以上説明した実施の形態によるメモリコントローラ、メモリシステム及びメモリ制御方法によれば、優先順位管理手段によって管理されている優先順位が最下位のデータをフラッシュメモリ内の物理ブロックに転送する。一方、頻繁に書き換えを行うデータの優先順位が最下位になる可能性は低いから、頻繁に書き換えを行うデータは不揮発性メモリ（不揮発性ＲＡＭ）に記憶されている可能性が高い。したがって、頻繁に書き換えられるデータについては、不揮発性メモリ（不揮発性ＲＡＭ）に記憶されている場合が多いため、不揮発性メモリ（不揮発性ＲＡＭ）上でデータの書き換えが行われることが多くなる。従って、フラッシュメモリ内のデータを頻繁に書き換える必要が減少し、フラッシュメモリの寿命を向上させることができる。
【００５７】
また、不揮発性メモリ（不揮発性ＲＡＭ）では、データの上書きが可能なので、フラッシュメモリのようにデータの書き込みと消去を別々に行う必要が無く、効率的にデータの書き換えを行うことができる。
【００５８】
本発明によるメモリコントローラ、メモリシステム及びメモリ制御方法は上述した実施の形態に限定されず、特許請求の範囲に記載した範囲で種々の変形や改良が可能である。例えば、上述した実施の形態では、論理（物理）グループ内の論理（物理）セクタ領域の個数は６４個であったが、この個数に限られることはなく、例えば３２個でもよい。
【００５９】
また、上述した実施の形態では、メモリシステム１００はフラッシュメモリを１個のみ備えていたが、フラッシュメモリを複数個備えたメモリシステムを用いてもよい。この例では、１個の論理ブロックに対して、複数個のフラッシュメモリの各々から物理ブロックが割り当てられる。つまり、１個の論理ブロックに対して、複数個の物理ブロックが割り当てられる。かかる構成において、不揮発性ＲＡＭからフラッシュメモリへデータを転送する際には、論理アドレスが連続するデータが前記複数個の物理ブロックに順次割り振られる。このようにすると、異なるフラッシュメモリに並行してアクセスすることができるので、アクセス速度を高速化できる。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施の形態によるメモリシステムを概略的に示すブロック図。
【図２】本実施の形態で用いられるフラッシュメモリの記憶領域を概念的に示す説明図。
【図３】本実施の形態で用いられる不揮発性ＲＡＭの記憶領域を概念的に示す説明図。
【図４】論理セクタ、論理グループ及び論理ブロックの関係を示す説明図。
【図５】ビット表示（２進数表示）されたＬＢＡ、論理グループ番号、論理ブロック番号等を示す説明図。
【図６】物理セクタ番号と論理セクタ番号とが論理グループ単位で入れ替わった状態で、データが物理ブロックに書き込まれる状況を示す説明図。
【図７】不揮発性ＲＡＭ内の各領域と論理グループとの対応関係、及び各領域に記憶されているデータの優先順位を管理するためのテーブルを示す説明図。
【図８】図７のテーブルにおいて、優先順位が最下位のデータが記憶されている領域に新たな論理グループを割り当てた状態を示す説明図。
【図９】図８のテーブルにおいて、領域番号＃０に割り当てられている論理グループ番号＃０に対応するデータの書き替えを行った状態を示す説明図。
【図１０】データの書き込み処理を示すフローチャート。
【符号の説明】
【００６１】
１・・・メモリコントローラ、    ２・・・フラッシュメモリ、    ３・・・不揮発性ＲＡＭ、    ４・・・ホストシステム、    ６・・・マイクロプロセッサ、    ７・・・ホストインタフェースブロック、    ８・・・ワークエリア、    ９・・・バッファ、    １０・・・フラッシュメモリインタフェースブロック、    １１・・・ＥＣＣブロック、    １２・・・ＲＯＭ、    １３・・・外部バス、    １４，１５・・・内部バス、    １６・・・ＲＡＭインタフェースブロック、    ２１・・・ユーザ領域、    ２２・・・冗長領域、    ３１・・・管理領域、    ３１Ａ・・・最高位記憶領域、    ３１Ｂ・・・テーブル記憶領域、    ３２・・・論理グループデータ記憶領域、    ４１・・・ＬＢＡ、    ４２・・・ＬＧＮ、    ４３・・・ＬＢＮ、    ４４・・・ＬＳＮ、    ４５・・・ＬＢＩＧＮ、    ５０・・・管理テーブル、    ５１・・・領域番号、    ５２・・・ＬＧＮ、    ５３・・・優先リンク、    １００・・・メモリシステム。  
【図１】
2009026062.tif 000003
【図２】
2009026062.tif 000004
【図３】
2009026062.tif 000005
【図４】
2009026062.tif 000006
【図５】
2009026062.tif 000007
【図６】
2009026062.tif 000008
【図７】
2009026062.tif 000009
【図８】
2009026062.tif 000010
【図９】
2009026062.tif 000011
【図１０】
2009026062.tif 000012