(57)【要約】【課題】書き込み回数の多いメモリと書き込み回数の少ないメモリが混在する場合に、上位のソフトウェアに負担をかけずに、メモリの容量、価格、寿命の最適化を図る。【解決手段】この発明は、メモリ２Ｂと、メモリ２Ｂよりもデータの書き換え可能回数の多いメモリ２Ａとに対してアクセス制御をそれぞれ行うメモリコントローラである。カウンタ７０〜７３は、メモリ２Ａ、２Ｂの記憶領域２−０〜２−３のアクセス回数をそれぞれ計数する。制御部８は、カウンタ７０〜７３のそれぞれの計数値が所定の関係を満たしたときに、記憶領域２−１〜２−３のうちから休止が必要な記憶領域を選択する。いま、休止用の記憶領域として記憶領域２−３が選択されると、記憶領域２−０のデータを予備の記憶領域２−４に書き込み、これに伴って記憶領域２ー３のデータを記憶領域２−０に書き込み、記憶領域２−３のアクセスを休止させる。【選択図】図１
2009259159.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶領域〜第Ｎの記憶領域を有する第１のメモリと、前記第１のメモリよりもデータの書き換え可能回数の多い第２のメモリとに対してそれぞれアクセス制御を行うメモリコントローラであって、
前記第１の記憶領域〜前記第Ｎの記憶領域のうち、第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域（１≦Ｉ＜Ｎ）、および前記第２メモリの各々にアクセス可能なアクセス手段と、
前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域の各々について前記アクセス手段がアクセスした回数を計数し、第（Ｉ＋１）の計測値〜第Ｎの計測値を求め、前記アクセス手段が前記第２のメモリにアクセスした回数を計測し、第Ｎ＋１の計測値を求める計測手段と、
前記第（Ｉ＋１）の計測値〜第Ｎ＋１の計測値の少なくとも一部が所定の関係を満たしたときに、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域のうちから休止用の記憶領域を選択する選択手段と、を備え、
前記選択手段が休止用の記憶領域を選択した場合に、前記第２のメモリに記憶されているデータを前記第１の記憶領域〜前記第Ｉの記憶領域のいずれか一つ又は前記第１の記憶領域〜前記第Ｉの記憶領域の一部に書き込むとともに、前記休止用の記憶領域に記憶されているデータを前記第２のメモリに書き込むことを特徴とするメモリコントローラ。
【請求項２】
前記第１の記憶領域〜第Ｎの記憶領域の各々は、複数の第１の種類のメモリセルを含み、
前記第２のメモリは、複数の第２の種類のメモリセルを含み、
前記第２の種類のメモリセルの書き換え可能回数は、前記第１の種類のメモリセルの書き換え可能回数よりも多いことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記選択手段は、
前記第（Ｉ＋１）の計測値〜前記第Ｎ＋１の計測値の総和が所定値以上か否かを判定する判定手段と、
前記判定手段が前記総和が所定値以上と判定した場合に、前記第（Ｉ＋１）の計測値〜前記第Ｎ＋１の計測値の各々に基づき、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域のうちから休止用の記憶領域を決定する決定手段と、
を含むことを特徴とする請求項１または請求項２に記載のメモリコントローラ。
【請求項４】
前記決定手段は、
前記判定手段が前記総和が所定値以上と判定した場合に、前記第（Ｉ＋１）の計測値〜前記第Ｎ＋１の計測値を計測値が大きな順または小さな順に並べる第１の手段と、
前記第１手段の並べた結果に基づき、隣り合う２つの計数値の差分をそれぞれ求め、前記求めたそれぞれの差分のうち最大の差分が所定値を上回るか否かを判定する第２の手段と、
前記差分のうち最大のものが所定値を上回る場合に、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域のうちから休止用の記憶領域を特定する第３の手段と、
を含むことを特徴とする請求項３に記載のメモリコントローラ。
【請求項５】
前記第３の手段は、
前記第（Ｉ＋１）の計測値〜前記第Ｎ＋１の計測値から最大の計測値を求める第４の手段と、
前記第４の手段が求めた最大の計測値が前記第Ｎ＋１の計測値に該当するか、あるいは前記第（Ｉ＋１）の計測値〜前記第Ｎの計測値のいずれかに該当するかを判定する第５の手段と、
前記第４の手段が求めた最大の計測値が前記第（Ｉ＋１）の計測値〜前記第Ｎの計測値のいずれかに該当する場合には、前記最大の計測値に該当する記憶領域を前記休止用の記憶領域と特定する第６の手段と、
を含むことを特徴とする請求項４に記載のメモリコントローラ。
【請求項６】
前記第２のメモリは少なくとも１つの第１の記憶容量を有する記憶領域を有し、
前記第１のメモリの第１の記憶領域〜第Ｎの記憶領域の各々は、第１の記憶容量を有することを特徴とする請求項１乃至請求項５のうちの何れかに記載のメモリコントローラ。
【請求項７】
前記第１のメモリの前記第１の記憶領域〜第Ｉの記憶領域は、前記第１のメモリの使用を開始した時には、前記第１のメモリの前記第１の記憶領域〜前記第Ｎの記憶領域の一部は、前記アクセス手段がアクセスしない記憶領域であることを特徴とする請求項１乃至請求項６のうちの何れかに記載のメモリコントローラ。
【請求項８】
メモリのアクセスを制御するメモリコントローラを備えた電子機器であって、
前記メモリコントローラは、請求項１乃至請求項７の何れかに記載のメモリコントローラからなることを特徴とする電子機器。
【請求項９】
複数の記憶領域を有する第１のメモリと、前記第１のメモリよりもデータの書き換え可能回数の多い第２のメモリとに対してそれぞれアクセス制御を行うメモリのアクセス制御方法であって、
アドレス変換テーブルに従って、前記第１のメモリの複数の記憶領域のうちの所定の記憶領域を除く残余の記憶領域および前記第２メモリをそれぞれアクセスし、
前記アクセスの際に、前記残余の記憶領域のそれぞれについてアクセス回数を計数するとともに、前記第２のメモリのアクセス回数を計数し、
前記アクセス回数の計数値のそれぞれが所定の関係を満たしたときに、前記残余の記憶領域のうちから休止が必要な休止用の記憶領域を選択し、
前記休止用の記憶領域を選択した場合に、前記第２のメモリのデータを前記所定の記憶領域に書き込むとともに、前記選択された休止用の記憶領域のデータを前記第２のメモリに書き込むことを特徴とするメモリのアクセス制御方法。
【請求項１０】
第１の記憶領域〜第Ｎの記憶領域を有する第１のメモリと、
前記第１のメモリよりも書き換え可能回数が多い第２のメモリと、
前記第１の記憶領域〜前記第Ｎの記憶領域のうち、第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域（１≦Ｉ＜Ｎ）、および前記第２メモリの各々にアクセス可能なアクセス手段と、
前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域の各々について前記アクセス手段がアクセスした回数を計数し、第（Ｉ＋１）の計測値〜第Ｎの計測値を求め、前記アクセス手段が前記第２のメモリにアクセスした回数を計測し、第Ｎ＋１の計測値を求める計測手段と、
前記第（Ｉ＋１）の計測値〜第Ｎ＋１の計測値の少なくとも一部が所定の関係を満たしたときに、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域のうちから休止用の記憶領域を選択する選択手段と、を備え、
前記選択手段が休止用の記憶領域を選択した場合に、前記第２のメモリに記憶されているデータを前記第１の記憶領域〜前記第Ｉの記憶領域のいずれか一つ又は前記第１の記憶領域〜前記第Ｉの記憶領域の一部に書き込むとともに、前記休止用の記憶領域に記憶されているデータを前記第２のメモリに書き込むことを特徴とするメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、メモリのアクセス制御方法、およびメモリコントローラを用いた電子機器に関する。
【背景技術】
【０００２】
不揮発性メモリは、データを書き込んだ後、電源を切断してもデータが消えないという特性を持っている。このような不揮発性メモリの管理方法として、例えば特許文献１に記載のものが知られている。
この特許文献１に記載の不揮発性メモリの管理方法は、不揮発性メモリの書き換え単位（消去単位）で消去回数を計数して記憶し、データの書き換えを行う際に、規定回数に達した領域を、消去回数の少ないところを検索して論理格納アドレスの割り当てを入れ替えることにより消去回数の均一化を図るものである。
【０００３】
ところで、不揮発性メモリとして、ＦｅＲＡＭ（強誘電体メモリ）やフラッシュメモリなどが従来から知られている。ＦｅＲＡＭは、書き換え回数が多いが高価である。一方、フラッシュメモリは、ＦｅＲＡＭに比べて書き換え回数は少ないが安価である。
また、フラッシュメモリとしては、例えばＮＡＮＤ型フラッシュメモリが従来から知られている。ＮＡＮＤ型フラッシュメモリには２つのタイプあり、２つのタイプでは書き換え回数と容量当たりのコスト、アクセススピードに違いがある。すなわち、第１のタイプはマルチレベルセル（ＭＬＣ）型であり、第２のタイプはシングルレベルセル（ＳＬＣ）型である。
【０００４】
マルチレベルセル型は、容量あたりのコストが安価であり大容量に向いているが、データの書き換え回数（消去回数）が少ない。一方、シングルレベルセル型は、データの書き換え回数がマルチレベルセル型よりも格段に多く（１０倍程度）、データの読み書きもマルチレベルセル型より高速であるが、容量あたりのコストが高い。
これらの不揮発性メモリを用いて、データを保持する携帯電話などの電子機器を構築する場合、メモリの書き換え回数（寿命）、コスト、容量を両立させる点に留意しなければならない。すなわち、メモリの容量を確保する場合には書き換え回数が少なく、その速度が遅くなる。一方、メモリの書き換え回数を確保する場合には高価になってしまう。
【０００５】
これを解決する手段として、容量が大きく書き換え回数の少ない不揮発性メモリと、容量が小さく書き換え回数の多い不揮発性メモリとを混在させて記憶装置（メモリ）を構成する手法が従来から知られている（例えば特許文献２参照）。特に、ファイル管理領域と呼ばれる頻繁にデータの読み書きが行われる部分を書き換え回数の多い不揮発性メモリに割り当てることで、電子機器全体の寿命を延ばすようにしている。
【０００６】
しかし、このためには、記憶装置へ読み書きを行う上位のソフトウェアが、どのアドレスが書き換え回数の多いメモリに割り当たっているのかの情報に基づいて書込みアドレスを決めなくてはならない。
この場合、たとえば既存のソフトウェアを流用して上記のメモリ混在システムを構成したい場合には、ソフトウェアの大きな改造・評価を行わなければならないという不具合がある。
【特許文献１】特開平６−１２４５９６号公報
【特許文献２】特開２００４−３４１９８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで、本発明の目的は、書き込み回数の多いメモリと書き込み回数の少ないメモリが混在する場合において、上位のソフトウェアに負担をかけることなく、メモリの容量、価格、寿命の最適化を図ることが可能なメモリコントローラなどを提供することにある。
【課題を解決するための手段】
【０００８】
上記の課題を解決し本発明の目的を達成するために、各発明は、以下のような構成からなる。
第１の発明は、第１の記憶領域〜第Ｎの記憶領域を有する第１のメモリと、前記第１のメモリよりもデータの書き換え可能回数の多い第２のメモリとに対してそれぞれアクセス制御を行うメモリコントローラであって、前記第１の記憶領域〜前記第Ｎの記憶領域のうち、第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域（１≦Ｉ＜Ｎ）、および前記第２メモリの各々にアクセス可能なアクセス手段と、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域の各々について前記アクセス手段がアクセスした回数を計数し、第（Ｉ＋１）の計測値〜第Ｎの計測値を求め、前記アクセス手段が前記第２のメモリにアクセスした回数を計測し、第Ｎ＋１の計測値を求める計測手段と、前記第（Ｉ＋１）の計測値〜第Ｎ＋１の計測値の少なくとも一部が所定の関係を満たしたときに、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域のうちから休止用の記憶領域を選択する選択手段と、を備え、前記選択手段が休止用の記憶領域を選択した場合に、前記第２のメモリに記憶されているデータを前記第１の記憶領域〜前記第Ｉの記憶領域のいずれか一つ又は前記第１の記憶領域〜前記第Ｉの記憶領域の一部に書き込むとともに、前記休止用の記憶領域に記憶されているデータを前記第２のメモリに書き込む。
【０００９】
第２の発明は、第１の発明において、前記第１の記憶領域〜第Ｎの記憶領域の各々は、複数の第１の種類のメモリセルを含み、前記第２のメモリは、複数の第２の種類のメモリセルを含み、前記第２の種類のメモリセルの書き換え可能回数は、前記第１の種類のメモリセルの書き換え可能回数よりも多い。
第３の発明は、第１または第２の発明において、前記選択手段は、前記第（Ｉ＋１）の計測値〜前記第Ｎ＋１の計測値の総和が所定値以上か否かを判定する判定手段と、前記判定手段が前記総和が所定値以上と判定した場合に、前記第（Ｉ＋１）の計測値〜前記第Ｎ＋１の計測値の各々に基づき、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域のうちから休止用の記憶領域を決定する決定手段と、を含む。
【００１０】
第４の発明は、第３の発明において、前記決定手段は、前記判定手段が前記総和が所定値以上と判定した場合に、前記第（Ｉ＋１）の計測値〜前記第Ｎ＋１の計測値を計測値が大きな順または小さな順に並べる第１の手段と、前記第１手段の並べた結果に基づき、隣り合う２つの計数値の差分をそれぞれ求め、前記求めたそれぞれの差分のうち最大の差分が所定値を上回るか否かを判定する第２の手段と、前記差分のうち最大のものが所定値を上回る場合に、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域のうちから休止用の記憶領域を特定する第３の手段と、を含む。
【００１１】
第５の発明は、第４の発明において、前記第３の手段は、前記第（Ｉ＋１）の計測値〜前記第Ｎ＋１の計測値から最大の計測値を求める第４の手段と、前記第４の手段が求めた最大の計測値が前記第Ｎ＋１の計測値に該当するか、あるいは前記第（Ｉ＋１）の計測値〜前記第Ｎの計測値のいずれかに該当するかを判定する第５の手段と、前記第４の手段が求めた最大の計測値が前記第（Ｉ＋１）の計測値〜前記第Ｎの計測値のいずれかに該当する場合には、前記最大の計測値に該当する記憶領域を前記休止用の記憶領域と特定する第６の手段と、を含む。
【００１２】
第６の発明は、第１〜５の発明において、前記第２のメモリは少なくとも１つの第１の記憶容量を有する記憶領域を有し、前記第１のメモリの第１の記憶領域〜第Ｎの記憶領域の各々は、第１の記憶容量を有する。
第７の発明は、第１〜第６の発明において、前記第１のメモリの前記第１の記憶領域〜第Ｉの記憶領域は、前記第１のメモリの使用を開始した時には、前記第１のメモリの前記第１の記憶領域〜前記第Ｎの記憶領域の一部は、前記アクセス手段がアクセスしない記憶領域である。
第８の発明は、メモリのアクセスを制御するメモリコントローラを備えた電子機器であって、前記メモリコントローラは、第１〜第７の発明のうちの何れかのメモリコントローラからなる。
【００１３】
第９の発明は、複数の記憶領域を有する第１のメモリと、前記第１のメモリよりもデータの書き換え可能回数の多い第２のメモリとに対してそれぞれアクセス制御を行うメモリのアクセス制御方法であって、アドレス変換テーブルに従って、前記第１のメモリの複数の記憶領域のうちの所定の記憶領域を除く残余の記憶領域および前記第２メモリをそれぞれアクセスし、前記アクセスの際に、前記残余の記憶領域のそれぞれについてアクセス回数を計数するとともに、前記第２のメモリのアクセス回数を計数し、前記アクセス回数の計数値のそれぞれが所定の関係を満たしたときに、前記残余の記憶領域のうちから休止が必要な休止用の記憶領域を選択し、前記休止用の記憶領域を選択した場合に、前記第２のメモリのデータを前記所定の記憶領域に書き込むとともに、前記選択された休止用の記憶領域のデータを前記第２のメモリに書き込む。
【００１４】
第１０の発明は、第１の記憶領域〜第Ｎの記憶領域を有する第１のメモリと、前記第１のメモリよりも書き換え可能回数が多い第２のメモリと、前記第１の記憶領域〜前記第Ｎの記憶領域のうち、第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域（１≦Ｉ＜Ｎ）、および前記第２メモリの各々にアクセス可能なアクセス手段と、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域の各々について前記アクセス手段がアクセスした回数を計数し、第（Ｉ＋１）の計測値〜第Ｎの計測値を求め、前記アクセス手段が前記第２のメモリにアクセスした回数を計測し、第Ｎ＋１の計測値を求める計測手段と、前記第（Ｉ＋１）の計測値〜第Ｎ＋１の計測値の少なくとも一部が所定の関係を満たしたときに、前記第（Ｉ＋１）の記憶領域〜前記第Ｎの記憶領域のうちから休止用の記憶領域を選択する選択手段と、を備え、前記選択手段が休止用の記憶領域を選択した場合に、前記第２のメモリに記憶されているデータを前記第１の記憶領域〜前記第Ｉの記憶領域のいずれか一つ又は前記第１の記憶領域〜前記第Ｉの記憶領域の一部に書き込むとともに、前記休止用の記憶領域に記憶されているデータを前記第２のメモリに書き込む。
このような構成の本発明によれば、書き込み可能回数の多いメモリと書き込み可能回数の少ないメモリが混在する場合において、上位のソフトウェアに負担をかけることなく、メモリの容量、価格、寿命（書き込み回数）の最適化を図ることが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態について、図面を参照して説明する。
（メモリコントローラの全体構成）
図１は、本発明のメモリコントローラの実施形態の全体の構成を示すブロック図である。
この実施形態に係るメモリコントローラ１は、コンピュータ１０などからのアクセス要求に基づき、不揮発性メモリ２Ａおよび第２不揮発性メモリ２Ｂのそれぞれへのアクセス制御を行う。
【００１６】
このため、メモリコントローラは、図１に示すように、記憶領域割り当て部４と、メモリインタフェース５と、アドレス変換テーブル６と、書き込み回数計測部７と、制御部８と、を備えている。
不揮発性メモリ２Ａは、書き換え可能回数が不揮発性メモリ２Ｂの書き換え可能回数よりも多い。ここで、不揮発性メモリ２Ａ、２Ｂの書き換え可能回数とは、例えばそれぞれのメモリセルの書き換え可能回数をいう。
【００１７】
不揮発性メモリとして、例えばＮＡＮＤ型フラッシュメモリを使用する場合には、不揮発性メモリ２Ａとしてシングルレベルセル型を使用し、不揮発性メモリ２Ｂとしてマルチレベルセル型を使用する。なお、不揮発性メモリ２Ａ、２Ｂの種類は、不揮発性メモリ２Ａが、書き換え可能回数が不揮発性メモリ２Ｂの書き換え可能回数よりも多ければ良い。
不揮発性メモリ２Ａは、物理的な記憶領域２−０を有している。不揮発性メモリ２Ｂは、物理的な複数の記憶領域２−１〜２−４を有している。言い換えると、不揮発性メモリ２Ａ、２Ｂの物理的な記憶領域が、記憶領域２−０〜２−４に分割されている。記憶領域２−０〜２−４のうち、記憶領域２−４は予備領域として使用される。
【００１８】
ここで、記憶領域２−０〜２−４の大きさはそれぞれデータが格納できる記憶容量の単位（例えば２ＧＢ（２ギガバイト））であり、データの読み書きの単位、あるいはデータの一括消去の単位ではない。この例では、記憶領域２−０〜２−４のそれぞれの記憶容量は同じであるが（例えば２ＧＢ（２ギガバイト））、その記憶領域２−０〜２−４のそれぞれの記憶容量は必ずしも同じである必要はない。
記憶領域割り当て部４は、上位のコンピュータ１０からのアクセス要求があると、その要求に基づいてアドレス変換テーブル６を参照し、不揮発性メモリ２Ａ、２Ｂの記憶領域２−０〜２−４のうちアクセスすべき１つの記憶領域を割り当てる（選択する）。
【００１９】
メモリインタフェース５は、記憶領域割り当て部４により割り当てられた記憶領域２−０〜２−４のうちの１つにアクセスし、そのアクセス要求の内容にしたがってデータの書き込みや読み出しなどを行う。また、メモリインタフェース５は、後述のように制御部８からの指示に基づいて記憶領域２−０〜２−４のうちの１つにアクセスし、その指示に基づいてデータの書き込みや読み出しなどを行う。
アドレス変換テーブル６は、論理アドレスグループ６０−０〜６０−４と物理アドレスグループ６２−０〜６２−４とを対応づけるテーブルであり、記憶領域割り当て部４によって参照される。また、アドレス変換テーブル６は、後述のように、メモリコントローラ１の使用に先立って内部ＲＡＭに配置（格納）されるとともに、必要に応じてアドレス変換テーブル６の内容が書き換えられる。
【００２０】
論理アドレスグループ６０−０〜６０−４は、上位のアプリケーションからアクセスするための論理アドレス空間が、物理的な空間である記憶領域２−０〜２−４と同様に分割して定義される。上位のアプリケーションからのアドレス（論理アドレス）をグループ分けしたものである。
書き込み回数計測部７は、カウンタ７０〜７３、加算部７５、および比較部７７を備えている。
【００２１】
カウンタ７０〜７３は、記憶領域割り当て部４によって記憶領域２−０と記憶領域２−１〜２ー４のうちの３つの記憶領域とがアクセスされるときに、それらの記憶領域のそれぞれのアクセスの回数を計数する。例えば、カウンタ７０は、記憶領域割り当て部４が記憶領域２−０へアクセスする回数を計数し、カウンタ７１は、記憶領域割り当て部４が記憶領域２−１へアクセスする回数を計数し、カウンタ７２は、記憶領域割り当て部４が記憶領域２−２へアクセスする回数を計数し、カウンタ７３は、記憶領域割り当て部４が記憶領域２−３へアクセスする回数を計数する。
【００２２】
ここで、記憶領域のアクセスとは、アクセスの対象となる記憶領域へのデータの書き込みと、その記憶領域からのデータの読み出しをいう。なお、不揮発性メモリのうち消去が必要なものについては、消去をアクセスに含めることも可能である。
加算部７５は、カウンタ７０〜７３からそれぞれの計数値を受け取って加算し、その総和を求める。比較部７７は、加算部７５の加算値、すなわちカウンタ７０〜７３のそれぞれの計数値の総和を所定値と比較し、その総和が所定値以上になった時にその旨を示す信号を制御部８に出力する。
制御部８は、比較部７７から上記の信号を受け取ると、後述のように、所定の手順に従って所定の判断、演算などを行い、その結果に基づいて所定の処理を行う。
【００２３】
（不揮発性メモリの分割例）
次に、不揮発性メモリ２Ａ、２Ｂの物理的な記憶領域２−０〜２−４の分割例について、図２を参照して説明する。
この例では、上位のシステム（コンピュータなど）から見えるメモリの論理アドレス空間を８ＧＢとしている。そして、論理アドレスを２ＧＢ単位で区切り、論理アドレスグループ６０−０〜６０−３を作成し、これらが記憶領域２−０〜２−３に割り当てられている。例えば、論理アドレスグループ６０−０は記憶領域２−０、論理アドレスグループ６０−１は記憶領域２−１、論理アドレスグループ６０−２は記憶領域２−２、論理アドレスグループ６０−３は記憶領域２−３、にそれぞれ割り当てられている（図２参照）。
【００２４】
記憶領域２−０〜２−４の記憶容量は全体で１０ＧＢであり、記憶領域２−０〜２−４はそれぞれ２ＧＢ単位に分割されている。そして、記憶領域２−０〜２−４のうち記憶領域２−４を予備領域とする。
図２に示すように、記憶領域２−４は、記憶領域２−４を識別するための固定パターンを記憶する固定パターン領域と、アドレス変換テーブル６を配置するためのアドレス変換テーブル領域と、カウンタ７０〜７３を配置するカウンタ領域とを含んでいる。
【００２５】
これにより、固定パターン領域、アドレス変換テーブル領域、およびカウンタ領域のそれぞれに格納されるデータは、メモリコントローラ１を起動させた時にはメモリコントローラ１中の揮発性メモリ（ＲＡＭ）上に置かれて通常動作時に使用でき、必要に応じて書き換えることもできる。また、メモリコントローラ１の電源を切断する場合には、揮発性メモリ上のデータをアドレス変換テーブル領域およびカウンタ領域にそれぞれ格納して保存する。
なお、固定パターン領域、アドレス変換テーブル領域、およびカウンタ領域は、記憶領域２−４の一部に設けるようにしたが、別個の不揮発性メモリに設けるようにしても良い。
【００２６】
（記憶領域２−４の意義）
次に、記憶領域２−４の意義について、以下に説明する。
この実施形態では、不揮発性メモリ２Ａ、２Ｂの使用開始から後述のようにアドレス変換テーブル６の内容の書き換えのあるまでの期間は、記憶領域２−０〜２−３のアクセスのみが行われ、記憶領域割り当て部４による記憶領域２−０〜２−３のアクセスは図３に示すようになる。このため、その期間中は、記憶領域２−４は予備領域となってユーザデータがアクセスされない状態にある。
【００２７】
したがって、記憶領域２−４は、書き換え可能回数が少ない記憶領域２−１〜２−３のうちの１つが必要以上（所定の回数以上）にアクセスされた場合に、その記憶領域のアクセスを休止させるために予め用意されている予備の記憶領域である。
そして、記憶領域２−０〜２−３のアクセス回数がそれぞれ増えていき、後述のようにそれぞれのアクセス回数が所定の関係を満たして、書き換え可能回数が少ない記憶領域２−１〜２−３のうちの１つについてアクセスの休止が必要であるとき、例えば記憶領域２−３についてアクセスの休止が必要なときには、記憶領域２−３を休止させて予備領域として待機している記憶領域２−４についてアクセスを行うようにした。
【００２８】
具体的には、書き換え可能回数の多い記憶領域２−０のデータを記憶領域２−４に書き込み（コピーし）、これに伴って記憶領域２ー３のデータを記憶領域２−０に書き込み（コピーし）、記憶領域２−３のアクセス（使用）を休止させる。このとき、図４に示すように、記憶領域割り当て部４が記憶領域２−３に代えて記憶領域２−４をアクセスできるように、アドレス変換テーブル６の内容が書き換えられる。
その後、記憶領域２−０〜２−２、２−４のアクセスに伴って記憶領域２−４についてアクセスの休止が必要なときには、記憶領域２−４はアクセスの休止の対象になる。
【００２９】
（動作例）
次に、このような構成のメモリコントローラ１の動作例について、図面を参照して説明する。
（電源投入時の処理）
まず、メモリコントローラ１の電源投入時の処理について、図５のフローチャートを参照して説明する。
この処理は、電源投入時において、制御部８の指示に基づき、制御部８とメモリインタフェース５が連係して行う。
ステップＳ１では、記憶領域２−４の固定パターン領域（図２参照）に書き込まれている記憶領域２−４を識別するための固定パターンを検索する。この検索の結果、固定パターンが見つかった場合には（ステップＳ２：Ｙｅｓ）、ステップＳ３に進む。
【００３０】
ステップＳ３では、記憶領域２−４のアドレス変換テーブル領域に格納されているアドレス変換テーブルの内容を読み出し、メモリコントローラ１の内部ＲＡＭへ格納する。
ステップＳ４では、記憶領域２−４のカウンタ領域に配置されるカウンタ７０〜７３の内容をそのカウンタ領域から読み出し、メモリコントローラ１の内部ＲＡＭへ格納する。
一方、固定パターンの検索の結果、固定パターンが見つからなかった場合には（ステップＳ２：Ｎｏ）、ステップＳ５に進む。
【００３１】
ステップＳ５では、固定パターンが見つからない場合には初回の電源投入の場合と考えられるので、メモリコントローラ１の内部ＲＡＭ上に初期のアドレス変換テーブルを作成する。ステップＳ６では、メモリコントローラ１の内部ＲＡＭ上に初期のカウンタ７０〜７３を作成する。
ステップＳ７では、その作成した初期のアドレス変換テーブルの内容を記憶領域２−４のアドレス変換テーブル領域に書き込み、ステップＳ８では、その作成した初期のカウンタ７０〜７３の内容を記憶領域２−４のカウンタ領域に書き込む。
【００３２】
（記憶領域の割り当て処理）
次に、記憶領域割り当て部４の記憶領域の割り当て処理について、図１、図３、および図４を参照して説明する。
記憶領域割り当て部４は、上位のコンピュータ１０からのアクセス要求があると、その要求に基づいてアドレス変換テーブル６を参照し、アクセスすべき不揮発性メモリ２Ａ、２Ｂとして記憶領域２−０〜２−４のうちの１つを割り当てる（選択する）。
図３は、アドレス変換テーブル６の書き換え前の割り当て例を示し、記憶領域２−０〜２−３のうちの１つが割り当てられる（選択される）。このときには、記憶領域２−４は、ユーザデータの記憶領域として使用されない。
図４は、アドレス変換テーブル６の書き換え後の割り当て例を示し、記憶領域２−０〜２−２、２−４のうちの１つが割り当てられる（選択される）。このときには、記憶領域２−３は、ユーザデータの記憶領域として使用されずにアクセスが休止の状態にある。
【００３３】
（アクセス回数の判定処理）
次に、アクセス回数の判定処理について、図６のフローチャートなどを参照して説明する。
このアクセス回数の判定処理は、記憶領域割り当て部４の割り当て処理により、メモリインタフェース５が割り当てられた記憶領域にアクセスしてデータの読み書きを行う際に行われる処理である。
カウンタ７０は、記憶領域割り当て部４で記憶領域２−０が割り当てられ、この割り当てられた記憶領域２−０にメモリインタフェース５がアクセスする時に、記憶領域２−０へのアクセス回数を計数する。カウンタ７１〜７３は、記憶領域割り当て部４で記憶領域２−１〜２−３が割り当てられ、この割り当てられた記憶領域にメモリインタフェース５がアクセスする時に、そのアクセス回数をそれぞれ計数する。
【００３４】
ここで、カウンタ７０〜７３がアクセス回数を計数するタイミングは、上記の他に、記憶領域割り当て部４が記憶領域２−０〜２−３をそれぞれ割り当てるとき、またはそれぞれ割り当てるたびでも良い。
加算部７５は、カウンタ７０〜７３の計数値（カウント値）の総和（合計）を求める（ステップＳ１１）。そして、比較部７７は、その加算部７５の総和が所定値以上になったか否かを判定する（ステップＳ１２）。
【００３５】
その判定の結果、加算部７５の総和が所定値以上にならない場合には（ステップＳ１２：Ｎｏ）、その処理を終了する。一方、加算部７５の総和が所定値以上になった場合には（ステップＳ１２：Ｙｅｓ）、ステップＳ１３に進む。この例では、総和の所定値を例えば「５００００」とする。
ステップＳ１３では、カウンタ７０〜７３の各計数値（アクセス回数）ｎ０〜ｎ３について大きな順に並べ替える。例えば、カウンタ７０の計数値ｎ０＝１２０００、カウンタ７１の計数値ｎ１＝８０００、カウンタ７２の計数値ｎ２＝１００００、カウンタ７３の計数値ｎ３＝２００００であったとする。この場合には、その計数値ｎ０〜ｎ３が大きな順、ｎ３＝２００００、ｎ０＝１２０００、ｎ２＝１００００、ｎ１＝８０００の順に並べ替えられる。
【００３６】
ここで、上記の計数値ｎ０〜ｎ３は、大きな順に並べるようにしたが、小さな順に並べるようにしても良い。
ステップＳ１４では、その並べ替えた計数値に基づき、隣り合った計数値同士の差分をそれぞれ求める。この例では、その差分としてｎ３−ｎ０＝２００００−１２０００＝８００００、ｎ０−ｎ２＝１２０００−１００００＝２０００、ｎ２−ｎ１＝１００００−８０００＝２０００をそれぞれ求める。
ステップＳ１５では、その求めたそれぞれの差分中に所定値以上のものが存在するか否かの判定を行う。その判定の結果、求めた差分中に所定値以上のものが存在する場合には（ステップＳ１５：Ｙｅｓ）、記憶領域の入れ替え処理に進み（ステップＳ１６）、それ以外の場合には（ステップＳ１５：Ｎｏ）処理を終了する。
【００３７】
この例では、差分の所定値を「５０００」とすると、その求めた３つの差分「８０００」、「２０００」、「２０００」の中に、所定値の「５０００」以上の差分「８０００」が存在する。すなわち、差分「８０００」は、記憶領域２−３と記憶領域２−０のアクセス回数の差分であり、この場合には書き換え可能回数の少ない記憶領域２−３を書き換え可能回数の多い記憶領域２−０に割り当てるように変更するのが好ましいといえる。
一方、その求めた３つの差分がいずれも所定値の「５０００」以上でない場合には、記憶領域２−０〜２−３へのアクセスの頻度には優位がみられないと判定し、このまま割り当ての変更はしない。
【００３８】
（記憶領域の入れ替え処理）
次に、記憶領域の入れ替え処理について、図７のフローチャートなどを参照して説明する。
ステップＳ２１では、カウンタ７０〜７３のそれぞれの計数値に基づき、記憶領域の入れ替えが必要か否かを判定する。
この記憶領域の入れ替えの必要か否かの判定は、以下（１）〜（３）の手順により行われる。
（１）カウンタ７０〜７３のそれぞれの計数値のうちから最大値を求める。
（２）その求めた最大値が記憶領域２−０のアクセス回数に該当するか、あるいは記憶領域２−１〜２−３のアクセス回数に該当するかを判定する。
（３）求めた最大値が記憶領域２−０のアクセス回数に該当する場合には、記憶領域の入れ替えの必要がないと判定する。一方、求めた最大値が記憶領域２−１〜２−３のいずれかのアクセス回数に該当する場合には、その該当する記憶領域の入れ替えが必要であると判定する。
【００３９】
ここで、記憶領域２−０の場合には入れ替えの必要がなく、記憶領域２−１〜２−３の場合には入れ替えが必要であるのは、上記のように、記憶領域２−０の書き換え可能回数が記憶領域２−１〜２−３の書き換え可能回数よりも多いためである。
例えば、カウンタ７０の計数値ｎ０＝２００００、カウンタ７１の計数値ｎ１＝１２０００、カウンタ７２の計数値ｎ２＝１００００、カウンタ７３の計数値ｎ３＝８０００であったとする。この場合には、計数値ｎ０＝２００００が最大であり、これは書き換え可能回数が多い記憶領域２−０のアクセス回数であるので、記憶領域の入れ替えは必要でないと判定される。
【００４０】
これに対して、カウンタ７０の計数値ｎ０＝８０００、カウンタ７１の計数値ｎ１＝１２０００、カウンタ７２の計数値ｎ２＝１００００、カウンタ７３の計数値ｎ３＝２００００であったとする。この場合には、計数値ｎ３＝２００００が最大であり、これは書き換え可能回数が少ない記憶領域２−３のアクセス回数であるので、記憶領域２−３の入れ替えが必要であると判定される。
ステップＳ２１において、記憶領域の入れ替えが必要であると判定された場合には次のステップＳ２２に進み、記憶領域の入れ替えが必要でないと判定された場合には記憶領域の入れ替え処理を終了する。
【００４１】
ステップＳ２２では、記憶領域２−０に格納されているデータを予備領域である記憶領域２−４にコピーする（書き込む）。コピーの後、必要ならば、記憶領域２−４中の管理情報をメモリコントローラ１のワークＲＡＭ上に退避する。
ステップＳ２３では、記憶領域２−１〜２−３のうちアクセス回数が最大の記憶領域のデータを記憶領域２−０にコピーする（書き込む）。この例では、記憶領域２−３のデータを記憶領域２−０にコピーする。このとき、必要ならば、記憶領域２−３のデータを消去する。
ここで、ステップＳ２２、Ｓ２３の処理は、不揮発性メモリ２Ａ、２Ｂ上でのデータの移動処理を含むので、実際の処理はユーザが不揮発性メモリ２Ａ、２Ｂを使用していないときに行うのが、実使用上好ましい。
【００４２】
具体的には、ユーザ（アプリケーション）からの不揮発性メモリ２Ａ、２Ｂへのコマンド（リード、ライトなど）が実行されていない状態、あるいは実行が完了してから一定以上の時間が経過した状態において、記憶領域の入れ替えを行うことでユーザからみた操作性が維持される。
ステップＳ２４では、ステップＳ２２、２３の内容にしたがって、アドレス変換テーブル６の内容を書き換える。この例では、記憶領域２−０のデータが記憶領域２−４にコピーされ、これに伴って記憶領域２ー３のデータが記憶領域２−０にコピーされ、記憶領域２−３の使用をいったん休止する。このため、アドレス変換テーブル６の内容が、図３から図４のような動作を行うように書き換えられる。
【００４３】
すなわち、図３では、論理アドレスグループ６０−０は記憶領域２−０、論理アドレスグループ６０−１は記憶領域２−１、論理アドレスグループ６０−２は記憶領域２−２、論理アドレスグループ６０−３は記憶領域２−３、にそれぞれ割り当てられている。しかし、図４では、論理アドレスグループ６０−０は記憶領域２−４、論理アドレスグループ６０−１は記憶領域２−１、論理アドレスグループ６０−２は記憶領域２−２、論理アドレスグループ６０−３は記憶領域２−０、にそれぞれ割り当てられる。これにより、その後、記憶領域２−３の使用をいったん休止させることができる。
【００４４】
ステップＳ２５では、カウンタ７０〜７３の計数値をそれぞれ初期化（クリア）する。ステップＳ２６では、記憶領域２−４のアドレス変換テーブル領域の内容をステップＳ２４で書き換えられたアドレス変換テーブル６の内容に更新する。さらに、ステップＳ２７では、記憶領域２−４のカウンタ領域の内容をステップＳ２５で初期化した内容に更新する。
ここで、カウンタ７０〜７３のそれぞれは、いままで記憶領域２−０〜２−３のアクセス回数を計数していたが、記憶領域２−３のアクセス回数を計数する必要がなくなり、記憶領域２−４のアクセス回数を計数する必要がある。そこで、カウンタ７０〜７３は、それらのアクセス回数を計数するように割り当てられる。
【００４５】
（電源切断時の処理）
次に、電源切断時の処理について、図８のフローチャートなどを参照して説明する。
この処理は、メモリコントローラ１の電源切断時に行う処理であり、制御部８が電源切断の指令を受け取ると、以下の手順により行われる。
ステップＳ３１では、記憶領域割り当て部４が参照しているアドレス変換テーブル６の内容を保存するために、その内容を記憶領域２−４のアドレス変換テーブル領域に書き込む（書き戻す）。ステップＳ３２では、アクセス回路計測部７のカウンタ７０〜７３のそれぞれの計数値を保存するために、その各計数値を記憶領域２−４のカウンタ領域に書き込む（書き戻す）。
以上説明したように、この実施形態によれば、書き込み可能回数の多い不揮発性メモリ２Ａと書き込み可能回数の少ない不揮発性メモリ２Ｂが混在する場合において、上位のソフトウェアに負担をかけることなく、メモリの容量、価格、寿命（書き込み回数）の最適化を図ることが可能なメモリコントローラを実現することが可能となる。
【００４６】
（不揮発性メモリの他の構成例）
次に、不揮発性メモリ２Ａ、２Ｂの他の構成例について、図９を参照して説明する。
この他の構成例は、不揮発性メモリ２Ａが２つの記憶領域２−０、２−１を含むようにした。また、これに合わせて不揮発性メモリ２Ｂが８つの記憶領域２−２〜２−９を含むようにした。そして、記憶領域２−０〜２−９の記憶容量のそれぞれは、例えば２ＧＢとする。
図９の構成によれば、例えば記憶領域２−０にはファイル管理情報を格納し、記憶領域２−１にはファイル管理情報以外のアクセスの多いデータを格納することが可能となる。つまり、きめ細かな制御が可能になる。
【００４７】
（電子機器の実施形態）
次に、本発明の電子機器の実施形態について説明する。
電子機器の実施形態は、上記のメモリコントローラを適用したものである。すなわち、この電子機器の実施形態は、上記のメモリコントラーラを、例えば携帯電話、カーナビゲーション、ビデオカメラ、電子スチルカメラなどに適用したものである。
このような構成の電子機器の実施形態によれば、上記のメモリコントローラを使用することで、上位のソフトウェアに負担をかけることなく、メモリの容量、価格、寿命（書き込み回数）の最適化を図ることが可能になる。
【図面の簡単な説明】
【００４８】
【図１】本発明のメモリコントローラの実施形態の全体の構成を示すブロック図である。
【図２】不揮発性メモリの分割例を説明する図である。
【図３】記憶領域割り当て部の動作を説明する図である。
【図４】記憶領域割り当て部の他の動作を説明する図である。
【図５】電源投入時の処理を説明するフローチャートである。
【図６】アクセス回数判定処理を説明するフローチャートである。
【図７】記憶領域の入れ替え処理を説明するフローチャートである。
【図８】電源切断時の処理を説明するフローチャートである。
【図９】不揮発性メモリの他の構成例を示す図である。
【符号の説明】
【００４９】
１・・・メモリコントローラ、２Ａ、２Ｂ・・・不揮発性メモリ、２−０〜２−４・・・記憶領域、４・・・記憶領域割り当て部、５・・・メモリインタフェース、６・・・アドレス変換テーブル、７・・・アクセス回数計測部、８・・・制御部
【図１】
2009259159.tif 000003
【図２】
2009259159.tif 000004
【図３】
2009259159.tif 000005
【図４】
2009259159.tif 000006
【図５】
2009259159.tif 000007
【図６】
2009259159.tif 000008
【図７】
2009259159.tif 000009
【図８】
2009259159.tif 000010
【図９】
2009259159.tif 000011