(57)【要約】  マイコン（１０）は、全てのセクタを所定条件の下で複数に区分した各セクタ区分毎に、フラッシュメモリ（２０）における、それぞれ異なるメモリ領域を対応付けたグループ定義テーブル（１３２）を保持する。メモリ制御部（１２０）は、指定されたセクタに対応するメモリ領域をグループ定義テーブル（１３２）を参照して特定し、該特定したメモリ領域の範囲で、当該指定されたセクタに対応する物理アドレスを検索する。また、メモリ制御部（１２０）は、指定されたセクタに対応するデータの書き換えが発生した場合には、当該メモリ領域の範囲内でセクタの移動を行う。
2012104974.tif 000002
【特許請求の範囲】
【請求項１】
読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御手段と、
全ての前記セクタを所定条件の下で複数に区分した各セクタ区分毎に、前記不揮発性メモリにおける、それぞれ異なるメモリ領域を対応付けたテーブルを記憶するテーブル記憶手段と、を備え、
前記メモリ制御手段は、
指定されたセクタに対応する前記メモリ領域を前記テーブルを参照して特定し、該特定したメモリ領域の範囲で、当該指定されたセクタに対応する物理アドレスを検索し、
前記指定されたセクタに対応するデータの書き換えが発生した場合には、当該メモリ領域の範囲内でセクタの移動を行うメモリコントローラ。
【請求項２】
前記テーブルにおいて、前記セクタ区分は、全ての前記セクタのセクタ番号順における所定数毎の区分を示す請求項１に記載のメモリコントローラ。
【請求項３】
前記各メモリ領域は、所定数の消去ブロックで構成される請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記メモリ制御手段は、データの書き込みを行う際、当該メモリ領域に属する空きセクタの数が所定数以上であるか否かを判定し、所定数未満である場合には、消去対象にする前記消去ブロックを決定し、決定した消去対象の消去ブロックにおける使用中状態の全セクタを当該メモリ領域の他の消去ブロックに移動させるガベージコレクションを実行し、該ガベージコレクションの実行後、当該消去対象の消去ブロックを消去する請求項３に記載のメモリコントローラ。
【請求項５】
前記メモリ制御手段は、データの書き込みを行う際、当該メモリ領域に属する空きセクタの数が所定数未満である場合、当該メモリ領域に属する全消去ブロックの内から、削除状態のセクタが最も多いものを前記消去対象の消去ブロックとして決定する請求項４に記載のメモリコントローラ。
【請求項６】
前記テーブルでは、前記セクタ区分と前記メモリ領域に加え、さらに、前記ガベージコレクションの実行により発生したセクタの移動回数を累積した累積回数も対応付けられており、
前記メモリ制御手段は、前記累積回数に基づいて、前記テーブルにおける、前記セクタ区分と前記メモリ領域との対応関係を変更する請求項４又は５に記載のメモリコントローラ。
【請求項７】
前記メモリ制御手段は、前記累積回数が所定回数を超えた場合に、前記テーブルにおける、前記セクタ区分と前記メモリ領域との対応関係を変更する請求項６に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ等の不揮発性の記憶媒体へのアクセス技術に関する。
【背景技術】
【０００２】
近年、不揮発性の記憶媒体であるフラッシュメモリは、パーソナルコンピュータ等の情報処理装置、携帯電話やデジタルカメラ等、様々な電子機器で使用されている。また、フラッシュメモリへのアクセス技術に関して、従来より種々の提案がなされている（例えば、特許文献１）。【０００３】
特許文献１に開示されるメモリカードは、フラッシュメモリと、これを制御するコントローラと、を備え、かかるコントローラは、アドレスが増加する方向に沿ったデータ書き込み命令を外部から受け付け、この受け付けたデータ書き込み命令に対する書き込み時の最終書込位置を検出する機能等を有する。このコントローラは、フラッシュメモリのセクタ（論理データ）に対応する物理アドレスの検索の際、セクタと、これに対応するフラッシュメモリの物理アドレスとの関係を示す変換テーブルを参照する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−４０２６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示される技術のように、セクタ毎に対応するフラッシュメモリの物理アドレスが即座に判るようにした変換テーブルは、フラッシュメモリのサイズが大きくなれば、そのサイズは増大する。このため、省メモリ化が要請されるマイコンシステム等では、かかる変換テーブルの採用は容易ではない。【０００６】
本発明は、上記従来の問題を解決するためになされたものであり、使用するテーブルのサイズの増大を招かずに、指定されたセクタに対応する、フラッシュメモリ等の読み書き可能な記憶媒体の物理アドレスに高速でアクセスできるメモリコントローラを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係るメモリコントローラは、
読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御手段と、
全ての前記セクタを所定条件の下で複数に区分した各セクタ区分毎に、前記不揮発性メモリにおける、それぞれ異なるメモリ領域を対応付けたテーブルを記憶するテーブル記憶手段と、を備え、
前記メモリ制御手段は、
指定されたセクタに対応する前記メモリ領域を前記テーブルを参照して特定し、該特定したメモリ領域の範囲で、当該指定されたセクタに対応する物理アドレスを検索し、
前記指定されたセクタに対応するデータの書き換えが発生した場合には、当該メモリ領域の範囲内でセクタの移動を行う。
【発明の効果】
【０００８】
本発明によれば、セクタ区分と、不揮発性メモリにおけるメモリ領域と、を対応付けたテーブルを参照して、指定されたセクタに対応する物理アドレスを検索するため、テーブルのサイズの増大を招かずに、処理の高速化が図れる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係るメモリコントローラとしての機能を有するマイコンの構成を示すブロック図である。
【図２】図１のフラッシュメモリのメモリ構造を概略的に示す図である。
【図３】ファイルシステム定義テーブルの一例を示す図である。
【図４】グループ定義テーブルの一例を示す図である。
【図５】本実施形態のフラッシュメモリにおいて、各グループの先頭と物理アドレスとの関係を示す図である。
【図６】データ読込処理の手順を示すフローチャートである。
【図７】データ読み込みの具体例を説明するための図である。
【図８】データ書込処理の手順を示すフローチャートである。
【図９】データ書き込みの具体例を説明するための図である。
【図１０】空きセクタ確保処理の手順を示すフローチャートである。
【図１１】本実施形態の変形例におけるグループ定義テーブルの一例を示す図である。
【図１２】グループ平滑化処理の手順を示すフローチャートである。
【図１３】グループ平滑化処理後のグループ定義テーブルの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の一実施形態に係るメモリコントローラについて図面を参照して詳細に説明する。
【００１１】
図１は、本実施形態に係るメモリコントローラとしての機能を有するマイコン１０と、フラッシュメモリ２０と、から構成されるフラッシュメモリシステム１の概略構成を示す図である。マイコン１０とフラッシュメモリ２０は、データバス３０により接続されている。
【００１２】
マイコン１０は、各種の電子機器や、各種の家電機器等に搭載され、当該機器全体の動作を制御する。マイコン１０は、ハードウェア的には、マイクロプロセッサ、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、メモリインタフェース、水晶発振器等のクロック源（何れも図示せず）等から構成される。
【００１３】
マイコン１０は、図１に示すように、機能的には、アプリケーション処理部１００と、ファイルシステム管理部１１０と、メモリ制御部１２０と、テーブル記憶部１３０と、を備える。ファイルシステム管理部１１０、メモリ制御部１２０及びテーブル記憶部１３０は、本発明のメモリコントローラとしての機能を担う。
【００１４】
アプリケーション処理部１００は、ＲＯＭ等に記憶されている、当該機器の機能を実現するための各種のアプリケーションソフトウェアプログラムに則った処理を実行する。ファイルシステム管理部１１０は、フラッシュメモリ２０用に構築されるファイルシステムの管理を行う。メモリ制御部１２０は、ファイルシステム管理部１１０を介したアプリケーション処理部１００からの要求に応じて、フラッシュメモリ２０にアクセスして、各種の処理（データの読み出しや書き込み等）を行う。
【００１５】
テーブル記憶部１３０は、当該ファイルシステムを定義するための各種のテーブルを記憶する。本実施形態では、テーブル記憶部１３０には、ファイルシステム定義テーブル１３１と、グループ定義テーブル１３２と、が記憶されている。これらのテーブルの詳細については、後述する。
【００１６】
フラッシュメモリ２０のメモリ領域は、図２に示すように、複数のブロックで構成される。ブロック（消去ブロック）は、データの消去における処理単位である。ファイルシステムにおけるデータの管理単位であるセクタは、ブロックを所定サイズ（例えば、５２０バイト）ずつ分割した領域を示し、「セクタ番号」領域と、「セクタ状態」領域と、「データ」領域と、から構成される。
【００１７】
「セクタ番号」領域には、当該ファイルシステムが管理するセクタ毎に割り振られた番号（セクタ番号）が格納される。本実施形態では、各セクタには、１から始まるシリアル番号が割り当てられる。
【００１８】
「セクタ状態」領域には、当該セクタの利用状態（セクタ状態）を示す情報が格納される。この「セクタ状態」領域を参照することで、当該セクタが、“未使用”、“使用中”又は“削除”の何れかの状態であるかが判る。例えば、ブロックが消去された直後は、当該ブロックの全てのセクタは、“未使用”を示す。「データ」領域には、「セクタ番号」領域に格納されているセクタ番号に対応するデータが格納される。
【００１９】
メモリ制御部１２０は、ファイルシステム管理部１１０により指定されたセクタ番号に対応した、フラッシュメモリ２０に格納されているデータにアクセスする場合、フラッシュメモリ２０のメモリ領域をセクタ単位（例えば、５２０バイト）で順次走査し、「セクタ番号」領域に格納されているセクタ番号が、指定されたセクタ番号と一致し、且つ、「セクタ状態」領域に格納されている情報が“使用中”を示すセクタの「データ」領域にアクセスする。
【００２０】
また、フラッシュメモリ２０に新規にデータを書きこむ場合には、メモリ制御部１２０は、ファイルシステム管理部１１０により指定されたデータサイズに対応する１又は複数の“未使用”セクタを確保し、当該データの書き込みを行う。
【００２１】
また、データの上書きの際には、メモリ制御部１２０は、指定されたセクタ番号に対応する“使用中”セクタとは別の“未使用”セクタに、データとセクタ番号を書き込むと共に、セクタ状態を“使用中”に変更する。また、元のセクタのセクタ状態を“削除”に変更する。
【００２２】
ファイルシステム定義テーブル１３１は、図３に示すように、「開始アドレス」項目、「開始セクタ」項目、「ドライブサイズ」項目、「グループセクタ数」項目等で構成される。
【００２３】
「開始アドレス」には、フラッシュメモリ２０のメモリ領域における先頭アドレス（本実施形態では、0x0000000）が格納される。「開始セクタ」には、セクタ番号の開始番号（本実施形態では、１）が格納される。「ドライブサイズ」には、当該ファイルシステムで管理するフラッシュメモリ２０の最大メモリ容量（本実施形態では、１９．２ＭＢ）が格納される。
【００２４】
「グループセクタ数」には、所定数の連続するブロックで構成される一のグループで、当該ファイルシステムが利用可能なセクタ数が設定される。本実施形態では、ファイルシステムの構築時において、図２に示すように、フラッシュメモリ２０の全ブロックは、先頭から順に、連続する３つのブロック毎にグループ分けされ、それぞれのグループを識別するためのグループ番号（本実施形態では、０から始まるシリアル番号）が付されている。本実施形態では、一のグループにおいて、２５２セクタが利用可能であるものとする。
【００２５】
グループ定義テーブル１３２は、図４に示すように、「グループ番号」項目、「開始アドレス」項目、「開始セクタ」項目等で構成される。
【００２６】
「グループ番号」には、各グループのグループ番号が格納される。「開始アドレス」には、フラッシュメモリ２０における当該グループに対応するメモリ領域の先頭の物理アドレスが格納される。本実施形態では、各ブロックのサイズは、６４ＫＢであり、各グループのサイズは、６４×３ＫＢ＝１９２ＫＢである。各グループと、その先頭の物理アドレスとの関係は、図５に示すようになっている。
【００２７】
「開始セクタ」には、当該グループに対応するセクタ（即ち、利用可能なセクタ）の内、そのセクタ番号が最も若い（最も小さい）番号が格納される。例えば、図４に示すように、グループ番号０のグループの「開始セクタ」には、１が格納され、グループ番号１のグループの「開始セクタ」には、２５３が格納される。
【００２８】
図４に示すグループ定義テーブル１３２の内容から、本実施形態では、例えば、グループ番号０のグループにおいては、フラッシュメモリ２０の０ｘ０００００００〜０ｘ００２ＦＦＦＦまでのメモリ領域が割り当てられ、セクタ番号が１〜２５２のセクタが利用可能であることが判る。
【００２９】
以上のファイルシステム定義テーブル１３１及びグループ定義テーブル１３２は、フラッシュメモリ２０の使用開始時、換言すれば、フラッシュメモリ２０用のファイルシステム構築時に、ファイルシステム管理部１１０やメモリ制御部１２０等によって生成され、テーブル記憶部１３０に保存される。
【００３０】
続いて、以上のように構成されたフラッシュメモリシステム１において、フラッシュメモリ２０からデータを読み込む（読み出す）動作について説明する。図６は、マイコン１０のファイルシステム管理部１１０及びメモリ制御部１２０によって実行されるデータ読込処理の手順を示すフローチャートである。データ読込処理は、アプリケーション処理部１００からデータ読込要求がファイルシステム管理部１１０に通知されることで開始される。なお、このデータ読込要求では、アプリケーション処理部１００は、読み込み対象となるファイルの名称（ファイル名）を指定するものとする。
【００３１】
ファイルシステム管理部１１０は、指定されたファイル名に対応するセクタ番号を図示しないファイル情報テーブルを参照して取得する（ステップＳ１０１）。このファイル情報テーブルは、ファイル名とセクタ番号とを対応付けたテーブルであり、テーブル記憶部１３０に保存される。なお、ファイルサイズが大きく、一のセクタの「データ」領域のみに格納することができない場合は、当該ファイルは複数のデータに分割され、それぞれ、異なるセクタに格納されることになる。したがって、この場合は、ファイル情報テーブルにおいて、同一ファイルであっても、分割されたデータ毎に、異なるセクタ番号が対応付けられることになる。
【００３２】
ファイルシステム管理部１１０は、メモリ制御部１２０に対して、取得したセクタ番号を通知して、対応するデータの読み込みを指示する。
【００３３】
メモリ制御部１２０は、ファイルシステム管理部１１０から通知されたセクタ番号に対応するグループ番号を取得する（ステップＳ１０２）。ここで、メモリ制御部１２０は、ファイルシステム定義テーブル１３１を参照して当該セクタ番号に対応するグループ番号を取得する。具体的には、メモリ制御部１２０は、当該セクタ番号を、ファイルシステム定義テーブル１３１の「グループセクタ数」の格納値で除算する。そして、その結果得られた商が、当該セクタ番号に対応するグループ番号となる。
【００３４】
例えば、指定されたセクタ番号が２６５である場合、対応するグループ番号は、２６５／２５２＝１となる。
【００３５】
次に、メモリ制御部１２０は、グループ定義テーブル１３２を参照して、取得したグループ番号に対応する「開始アドレス」の格納値（即ち、先頭の物理アドレス）を取得する（ステップＳ１０３）。本例では、グループ番号が１の場合、対応する物理アドレスは、０ｘ００３００００となる。
【００３６】
メモリ制御部１２０は、フラッシュメモリ２０にアクセスし、取得した物理アドレスが示すメモリ領域から、セクタ単位（例えば、５２０バイト）で下方向（後方のブロックの方向）に向かって順次走査し、当該セクタ番号と一致し、且つ、“使用中”であるセクタを探索する（ステップＳ１０４）。この探索により、該当するセクタが見つかると（ステップＳ１０５；ＹＥＳ）、メモリ制御部１２０は、当該セクタの「データ」領域からデータを読み込む（ステップＳ１０６）。
【００３７】
メモリ制御部１２０は、ファイルシステム管理部１１０に対して、読み込んだデータを供給すると共に、データの読み込みが完了した旨を通知する。かかる通知を受けると、ファイルシステム管理部１１０は、アプリケーション処理部１００に対して、メモリ制御部１２０によって読み込まれたデータを、要求されたファイルとして供給する（ステップＳ１０７）と共に、データの読み込みが完了した旨を通知し、本処理は終了する。
【００３８】
なお、上述したように、アプリケーション処理部１００から要求されたファイルが、複数の異なるセクタに分割されて格納されている場合には、ファイルシステム管理部１１０は、メモリ制御部１２０に、当該分割数分、上述したデータの読み込み動作を行わせる。そして、ファイルシステム管理部１１０は、読み込まれた複数の分割データを統合して元のファイルに復元した後、アプリケーション処理部１００に供給する。
【００３９】
図７は、上記のデータ読込処理により、セクタ番号が２６５のセクタのデータを読み込む場合の例を示す。この場合、メモリ制御部１２０は、グループ１の先頭（ここでは、ブロック３の先頭）アドレス（０ｘ００３００００）に位置するセクタ（セクタ番号が２８９）から該当セクタの探索を開始する。そして、先頭から３つ目のセクタ（セクタ番号が２６５）のデータを読み込む。
【００４０】
図８は、マイコン１０のファイルシステム管理部１１０及びメモリ制御部１２０によって実行されるデータ書込処理の手順を示すフローチャートである。データ書込処理は、アプリケーション処理部１００からデータ書込要求がファイルシステム管理部１１０に通知されることで開始される。アプリケーション処理部１００は、このデータ書込要求において、書き込み対象となるファイルの名称（ファイル名）と、書き込みデータと、そのサイズを指定する。
【００４１】
なお、ファイルの新規書き込みについては、従来と略同様の処理を行うため、以下の処理では、データの上書きについて説明する。但し、新規書き込みの際、ファイルを分割して格納する場合には、同一のグループに属するセクタに各分割データが格納されるのが望ましい。
【００４２】
ファイルシステム管理部１１０は、指定されたファイル名に対応するセクタ番号を図示しない上述したファイル情報テーブルを参照して取得する（ステップＳ２０１）。ファイルシステム管理部１１０は、セクタ番号と、書き込むべきデータと、をメモリ制御部１２０に通知する。
【００４３】
メモリ制御部１２０は、ファイルシステム定義テーブル１３１を参照して、ファイルシステム管理部１１０から通知されたセクタ番号に対応するグループ番号を取得する（ステップＳ２０２）。そして、メモリ制御部１２０は、グループ定義テーブル１３２を参照して、取得したグループ番号に対応する「開始アドレス」の格納値（物理アドレス）を取得する（ステップＳ２０３）。
【００４４】
メモリ制御部１２０は、フラッシュメモリ２０にアクセスし、取得した物理アドレスが示すメモリ領域から、セクタ単位で下方向に向かって、順次走査して、当該グループに対応する全ブロックにおけるセクタの状態をチェックする。そして、“未使用”セクタ（空きセクタ）の数が、所定数以上であるか否かを判定する（ステップＳ２０４）。
【００４５】
その結果、空きセクタの数が所定数を下回る場合（ステップＳ２０４；ＮＯ）、メモリ制御部１２０は、後述する空きセクタ確保処理を実行する（ステップＳ２０５）。一方、空きセクタの数が所定数以上の場合（ステップＳ２０４；ＹＥＳ）や、上記の空きセクタ確保処理の実行後、メモリ制御部１２０は、先に取得した物理アドレス（当該グループの先頭アドレス）が示すメモリ領域から、セクタ単位で下方向に向かって順次走査し、当該セクタ番号と一致し、且つ、“使用中”であるセクタ、即ち、旧データが格納されているセクタを探索する（ステップＳ２０６）。この探索により、該当するセクタが見つかると（ステップＳ２０７；ＹＥＳ）、メモリ制御部１２０は、当該セクタの状態を“削除”に変更する（ステップＳ２０８）。
【００４６】
また、メモリ制御部１２０は、当該グループの先頭アドレスから順に、下方向に向かって、“未使用”セクタを探索し、見つかった“未使用”セクタに当該データを書き込む（ステップＳ２０９）。具体的には、メモリ制御部１２０は、見つかった“未使用”セクタの「データ」領域に、上記通知されたデータを書き込むと共に、当該セクタの「セクタ番号」領域に上記通知されたセクタ番号を格納し、セクタ状態を“使用中”に変更する。
【００４７】
メモリ制御部１２０は、ファイルシステム管理部１１０に対して、データの書き込みが完了した旨を通知する。これにより、ファイルシステム管理部１１０は、アプリケーション処理部１００に対して、データの書き込みが完了した旨を通知し（ステップＳ２１０）、本処理は終了する。
【００４８】
なお、アプリケーション処理部１００から書き込み要求されたファイルのサイズが大きく、複数の異なるセクタに分割して格納することが必要な場合は、ファイルシステム管理部１１０は、当該ファイルの分割データと、対応するセクタ番号とを順次、メモリ制御部１２０に通知して、当該分割数分、上述したデータの書き込み動作を行わせる。
【００４９】
図９は、上記のデータ書込処理により、セクタ番号が２６５のセクタのデータの上書き（更新）において、メモリ制御部１２０により、新データ“ＤＡＴ−１２４”が書き込まれる場合を示している。この場合、メモリ制御部１２０は、セクタ番号が２６５のセクタを検索し、旧データ（“ＤＡＴ−１２３”）が格納されているこのセクタの「セクタ状態」を“削除”にする。そして、メモリ制御部１２０は、空きセクタを探索し、見つかった空きセクタの「データ」領域に“ＤＡＴ−１２４”を書き込むと共に、「セクタ番号」に２６５を格納し、「セクタ状態」を“使用中”に変更する。
【００５０】
続いて、図１０のフローチャートを参照して、上記の空きセクタ確保処理について説明する。先ず、メモリ制御部１２０は、当該グループに属するブロックの内から、消去対象とするブロック（消去対象ブロック）を決定する（ステップＳ３０１）。ここでは、メモリ制御部１２０は、当該グループにおいて、セクタ状態が“削除”になっているセクタが最も多いブロックを消去対象ブロックとして決定する。
【００５１】
続いて、メモリ制御部１２０は、決定した消去対象ブロックに属する全ての“使用中”セクタを、当該グループに属する他のブロックの“未使用”セクタにコピーする（ステップＳ３０２）。そして、メモリ制御部１２０は、当該消去対象ブロックを消去する（ステップＳ３０３）。
【００５２】
以上説明したように、本実施形態のマイコン（メモリコントローラ）は、フラッシュメモリにおける、指定されたセクタ番号のセクタにアクセスする際、セクタの範囲と、フラッシュメモリの物理アドレスの範囲との対応関係が定義されたテーブルを用いる。したがって、検索する範囲が絞られ、該当セクタを効率的に見つけ出すことが可能になり、処理の高速化が図れる。
【００５３】
そして、かかるテーブルでは、一のセクタ毎に、物理アドレスを対応付けていないため、フラッシュメモリの容量が大きくなっても、テーブルの増大化を防止できる。このため、省メモリ化が要請させるマイコン等であっても、本発明の適用が容易である。
【００５４】
なお、本発明は、上記実施形態に限定されず、本発明の要旨を逸脱しない範囲での種々の変更は勿論可能である。
【００５５】
例えば、一のグループに属するブロック数は任意であり、２つであってもよいし、４つ以上であってもよい。
【００５６】
また、上記の実施形態のマイコン１０において、ブロックの消去動作回数や、書き換え回数を平滑化する機能を更に備えるようにしてもよい。かかる機能を備えた実施形態１のマイコン１０（メモリコントローラ）の変形例について、以下説明する。
【００５７】
この場合、マイコン１０が保持するグループ定義テーブル１３２には、図１１に示すように、「ＧＣ（ガベージコレクション）回数」項目が新たに追加される。マイコン１０のメモリ制御部１２０は、上述した空きセクタ確保処理の際、発生したセクタのコピー回数（即ち、データの書き込み回数）を当該グループの「ＧＣ回数」の格納値に加算する。本変形例においては、グループ番号と、対応する物理アドレスとの関係は、適宜変更される。また、予め決められたグループ番号（本例では、９９）のグループは、後述するテンポラリグループとして利用される。
【００５８】
図１２は、この変形例におけるメモリ制御部１２０が実行するグループ平滑化処理の手順を示すフローチャートである。メモリ制御部１２０は、所定のタイミングで（例えば、所定時間毎や、空きセクタ確保処理の直後等に）、このグループ平滑化処理を実行する。
【００５９】
先ず、メモリ制御部１２０は、グループ定義テーブル１３２をチェックし、「ＧＣ回数」の格納値（累積回数）が、予め設定されたＧＣの最大回数を超えているグループ（最大回数グループ）が存在するか否かを判定する（ステップＳ４０１）。その結果、最大回数グループが存在しない場合（ステップＳ４０１；ＮＯ）、本処理を終了する。一方、最大回数グループが存在する場合（ステップＳ４０１；ＹＥＳ）、メモリ制御部１２０は、当該最大回数グループに属し、且つ、“使用中”である全セクタをテンポラリグループ（即ち、グループ番号９９のグループ）に対応するブロックにコピーする（ステップＳ４０２）。
【００６０】
次に、メモリ制御部１２０は、コピー元のグループ、即ち、最大回数グループに属する全ブロックを消去する（ステップＳ４０３）。次に、メモリ制御部１２０は、「ＧＣ回数」の格納値が最も小さいグループ（最小回数グループ）を探索する（ステップＳ４０４）。そして、メモリ制御部１２０は、当該探索した最小回数グループに属し、且つ、“使用中”である全セクタを、先に消去したブロック（即ち、元の最大回数グループに属するブロック）にコピーする（ステップＳ４０５）。
【００６１】
次に、メモリ制御部１２０は、コピー元のグループ、即ち、最小回数グループに属する全ブロックを消去する（ステップＳ４０６）。この消去された複数のブロックが、次回のテンポラリグループに属することになる。そして、メモリ制御部１２０は、グループ管理テーブル１３２を更新する（ステップＳ４０７）。ここでは、当該コピーに関与したグループの「開始アドレス」及び「ＧＣ回数」が変更される。
【００６２】
ここで、グループ定義テーブル１３２が、図１１に示す内容であり、予め設定したＧＣの最大回数が４００回であり、グループ番号０のグループのＧＣ回数が最小であるという条件の下、上記のグループ平滑化処理を実行した場合について説明する。
【００６３】
上記の場合、先ず、グループ番号１のグループに属し、且つ、“使用中”である全セクタが、グループ番号９９のグループに対応するブロックにコピーされる。そして、グループ番号１のグループに属する全ブロックが消去された後、かかるブロックに、グループ番号０のグループに属し、且つ、“使用中”である全セクタがコピーされる。このコピー後、グループ番号０のグループに属する全ブロックが消去される。そして、これらのグループ間コピーにより、変更された内容が、グループ定義テーブル１３２に反映される。図１３に、グループ平滑化処理の実行後のグループ定義テーブル１３２の内容を示す。
【００６４】
このように、ブロックの消去動作回数や、書き換え回数を平滑化する機能を備えることで、フラッシュメモリの寿命を伸ばすことが可能になる。
【００６５】
なお、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【産業上の利用可能性】
【００６６】
本発明は、フラッシュメモリ等の読み書き可能な記憶媒体を利用する様々な電子機器に好適に採用され得る。
【符号の説明】
【００６７】
１  フラッシュメモリシステム
１０  マイコン
１００  アプリケーション処理部
１１０  ファイルシステム管理部
１２０  メモリ制御部
１３０  テーブル記憶部
１３１  ファイルシステム定義テーブル
１３２  グループ定義テーブル
２０  フラッシュメモリ
３０  データバス
【図１】
2012104974.tif 000003
【図２】
2012104974.tif 000004
【図３】
2012104974.tif 000005
【図４】
2012104974.tif 000006
【図５】
2012104974.tif 000007
【図６】
2012104974.tif 000008
【図７】
2012104974.tif 000009
【図８】
2012104974.tif 000010
【図９】
2012104974.tif 000011
【図１０】
2012104974.tif 000012
【図１１】
2012104974.tif 000013
【図１２】
2012104974.tif 000014
【図１３】
2012104974.tif 000015
【手続補正書】
【提出日】平成25年5月15日(2013.5.15)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
本発明は、上記従来の問題を解決するためになされたものであり、使用するテーブルのサイズの増大を招かずに、指定されたセクタに対応する、フラッシュメモリ等の読み書き可能な記憶媒体の物理アドレスに高速でアクセスできるメモリコントローラ及びメモリアクセス方法を提供することを目的とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
上記目的を達成するため、本発明に係るメモリコントローラは、
読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御手段と、
全ての前記セクタを所定条件の下で複数に区分した各セクタ区分毎に、前記不揮発性メモリにおける、所定数の消去ブロックで構成された、それぞれ異なるメモリ領域と、ガベージコレクションの実行により発生したセクタの移動回数を累積した累積回数と、を対応付けたテーブルを記憶するテーブル記憶手段と、を備え、
前記メモリ制御手段は、
指定されたセクタに対応する前記メモリ領域を前記テーブルを参照して特定し、該特定したメモリ領域の範囲で、当該指定されたセクタに対応する物理アドレスを検索し、
前記指定されたセクタに対応するデータの書き換えが発生した場合には、当該メモリ領域の範囲内でセクタの移動を行い、
データの書き込みを行う際、当該メモリ領域に属する空きセクタの数が所定数以上であるか否かを判定し、所定数未満である場合には、消去対象にする前記消去ブロックを決定し、決定した消去対象の消去ブロックにおける使用中状態の全セクタを当該メモリ領域の他の消去ブロックに移動させる前記ガベージコレクションを実行し、該ガベージコレクションの実行後、当該消去対象の消去ブロックを消去し、
前記累積回数に基づいて、前記テーブルにおける、前記セクタ区分と前記メモリ領域との対応関係を変更する。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御手段と、
全ての前記セクタを所定条件の下で複数に区分した各セクタ区分毎に、前記不揮発性メモリにおける、所定数の消去ブロックで構成された、それぞれ異なるメモリ領域と、ガベージコレクションの実行により発生したセクタの移動回数を累積した累積回数と、を対応付けたテーブルを記憶するテーブル記憶手段と、を備え、
前記メモリ制御手段は、
指定されたセクタに対応する前記メモリ領域を前記テーブルを参照して特定し、該特定したメモリ領域の範囲で、当該指定されたセクタに対応する物理アドレスを検索し、
前記指定されたセクタに対応するデータの書き換えが発生した場合には、当該メモリ領域の範囲内でセクタの移動を行い、
データの書き込みを行う際、当該メモリ領域に属する空きセクタの数が所定数以上であるか否かを判定し、所定数未満である場合には、消去対象にする前記消去ブロックを決定し、決定した消去対象の消去ブロックにおける使用中状態の全セクタを当該メモリ領域の他の消去ブロックに移動させる前記ガベージコレクションを実行し、該ガベージコレクションの実行後、当該消去対象の消去ブロックを消去し、
前記累積回数に基づいて、前記テーブルにおける、前記セクタ区分と前記メモリ領域との対応関係を変更するメモリコントローラ。
【請求項２】
前記テーブルにおいて、前記セクタ区分は、全ての前記セクタのセクタ番号順における所定数毎の区分を示す請求項１に記載のメモリコントローラ。
【請求項３】
前記メモリ制御手段は、データの書き込みを行う際、当該メモリ領域に属する空きセクタの数が所定数未満である場合、当該メモリ領域に属する全消去ブロックの内から、削除状態のセクタが最も多いものを前記消去対象の消去ブロックとして決定する請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記メモリ制御手段は、前記累積回数が所定回数を超えた場合に、前記テーブルにおける、前記セクタ区分と前記メモリ領域との対応関係を変更する請求項１乃至３の何れか１項に記載のメモリコントローラ。
【請求項５】
メモリ制御手段が、読み書き可能な不揮発性メモリにアクセスして、該不揮発性メモリ用に構築されたファイルシステムにおけるセクタ単位で、データの読み込み及び書き込みを行うメモリ制御ステップを含み、
前記メモリ制御ステップでは、前記メモリ制御手段は、
全ての前記セクタを所定条件の下で複数に区分した各セクタ区分毎に、前記不揮発性メモリにおける、所定数の消去ブロックで構成された、それぞれ異なるメモリ領域と、ガベージコレクションの実行により発生したセクタの移動回数を累積した累積回数と、を対応付けたテーブルを参照して、指定されたセクタに対応する前記メモリ領域を特定し、該特定したメモリ領域の範囲で、当該指定されたセクタに対応する物理アドレスを検索し、
前記指定されたセクタに対応するデータの書き換えが発生した場合には、当該メモリ領域の範囲内でセクタの移動を行い、
データの書き込みを行う際、当該メモリ領域に属する空きセクタの数が所定数以上であるか否かを判定し、所定数未満である場合には、消去対象にする前記消去ブロックを決定し、決定した消去対象の消去ブロックにおける使用中状態の全セクタを当該メモリ領域の他の消去ブロックに移動させる前記ガベージコレクションを実行し、該ガベージコレクションの実行後、当該消去対象の消去ブロックを消去し、
前記累積回数に基づいて、前記テーブルにおける、前記セクタ区分と前記メモリ領域との対応関係を変更するメモリアクセス方法。
【国際調査報告】
2012104974.tif 000016
2012104974.tif 000017