(57)【要約】【課題】電池不使用、ランダムなライトアクセス可能、実用上の書込回数制限無し、ビット単価が安価といった条件を満たす不揮発メモリシステムおよび不揮発メモリ制御方法を提供する。【解決手段】ＮＯＲ型のフラッシュメモリからなる第１不揮発メモリ１１と、第１不揮発メモリ１１に記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリ１２（たとえばＦｅＲＡＭで構成）とを設け、制御部１４は、外部からデータのライト命令を受けたとき、そのライトアドレスに対応する前記第１不揮発メモリ１１内の領域にライトデータと同一データが記憶されていないことを条件に、ライトデータをライトアドレスに関連付けて第２不揮発メモリ１２へ書き込むと共に、所定の起動条件の成立時に第２不揮発メモリ１２内のデータをセクタ単位に第１不揮発メモリ１１へ書き移す整合処理を行う。【選択図】図１
2008134685.tif 000002
【特許請求の範囲】
【請求項１】
データの書き込みがセクタ単位での書き込みに制限された第１不揮発メモリと、
前記第１不揮発メモリに記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリと、
前記第１不揮発メモリと前記第２不揮発メモリに対するデータのリード・ライト動作を制御する制御部と、
を備え、
前記制御部は、外部から前記第１不揮発メモリに対するデータのライト命令を受けたとき、前記ライト命令で指定されたライトアドレスに対応する前記第１不揮発メモリ内の領域に前記ライト命令に係るライトデータと同一のデータが記憶されていないことを条件に、前記ライトデータを前記ライトアドレスに関連付けて前記第２不揮発メモリへ書き込み、所定の起動条件の成立により、前記第２不揮発メモリ内のデータを前記セクタ単位に前記第１不揮発メモリへ書き移す整合処理を行う
ことを特徴とする不揮発メモリシステム。
【請求項２】
データの書き込みがセクタ単位での書き込みに制限された第１不揮発メモリと、
前記第１不揮発メモリに記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリと、
前記第１不揮発メモリと前記第２不揮発メモリに対するデータのリード・ライト動作を制御する制御部と、
を備え、
前記制御部は、外部から前記第１不揮発メモリに対するデータのライト命令を受けたとき、前記ライト命令で指定されたライトアドレスに関連付けされて前記第１不揮発メモリと前記第２不揮発メモリのいずれにも前記ライト命令に係るライトデータと同一のデータが記憶されていないことを条件に、前記ライトデータを前記ライトアドレスに関連付けて前記第２不揮発メモリへ書き込み、所定の起動条件の成立により、前記第２不揮発メモリ内のデータを前記セクタ単位に前記第１不揮発メモリへ書き移す整合処理を行う
ことを特徴とする不揮発メモリシステム。
【請求項３】
前記制御部は、前記ライトデータと同一のデータが記憶されていないことの調べを、前記第２不揮発メモリより前記第１不揮発メモリに対して先に行う
ことを特徴とする請求項２に記載の不揮発メモリシステム。
【請求項４】
前記制御部は、前記ライトデータと同一のデータが記憶されていないことの調べを、前記第１不揮発メモリより前記第２不揮発メモリに対して先に行う
ことを特徴とする請求項２に記載の不揮発メモリシステム。
【請求項５】
前記制御部は、前記第１不揮発メモリのセクタ単位に前記第２不揮発メモリの使用率を管理し、該使用率に基づいて前記整合処理の実行を制御する
ことを特徴とする請求項１乃至４のいずれかに記載の不揮発メモリシステム。
【請求項６】
前記使用率が所定の閾値を超えたセクタに対して前記整合処理を実行する
ことを特徴とする請求項５に記載の不揮発メモリシステム。
【請求項７】
１セクタ分以上の記憶容量を有する不揮発性のバッファメモリを設け、
前記制御部は、前記整合処理において、前記第１不揮発メモリ内のデータに前記第２不揮発メモリ内のデータを反映させた少なくとも１セクタ分のデータを前記バッファメモリに作成する
ことを特徴とする請求項１乃至６のいずれかに記載の不揮発メモリシステム。
【請求項８】
前記制御部は、前記第１不揮発メモリ内の任意のセクタを前記バッファメモリとして使用すると共に、前記整合処理の実行後に、該整合処理の対象セクタと前記バッファメモリに割り当てたセクタとが入れ替わるように前記第１不揮発メモリに与えるアドレス情報を変換する
ことを特徴とする請求項７に記載の不揮発メモリシステム。
【請求項９】
データの書き込みがセクタ単位での書き込みに制限された第１不揮発メモリに対するデータのライト命令を受けたとき、前記ライト命令で指定されたライトアドレスに対応する前記第１不揮発メモリ内の領域に前記ライト命令に係るライトデータと同一のデータが記憶されていないことを条件に、前記第１不揮発メモリに記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリへ前記ライトデータを前記ライトアドレスに関連付けて書き込み、
所定の起動条件の成立により、前記第２不揮発メモリ内のデータを前記セクタ単位に前記第１不揮発メモリへ書き移す整合処理を行う
ことを特徴とする不揮発メモリ制御方法。
【請求項１０】
データの書き込みがセクタ単位での書き込みに制限された第１不揮発メモリに対するデータのライト命令を受けたとき、前記ライト命令で指定されたライトアドレスに関連付けされて前記ライト命令のライトデータと同一のデータが前記第１不揮発メモリと該第１不揮発メモリに記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリとのいずれにも記憶されていないことを条件に、前記ライトデータを前記ライトアドレスに関連付けて前記第２不揮発メモリへ書き込み、
所定の起動条件の成立により、前記第２不揮発メモリ内のデータを前記セクタ単位に前記第１不揮発メモリへ書き移す整合処理を行う
ことを特徴とする不揮発メモリ制御方法。
【請求項１１】
前記ライトデータと同一のデータが記憶されていないことの調べを、前記第２不揮発メモリより前記第１不揮発メモリに対して先に行う
ことを特徴とする請求項１０に記載の不揮発メモリ制御方法。
【請求項１２】
前記ライトデータと同一のデータが記憶されていないことの調べを、前記第１不揮発メモリより前記第２不揮発メモリに対して先に行う
ことを特徴とする請求項１０に記載の不揮発メモリ制御方法。
【請求項１３】
前記第１不揮発メモリのセクタ単位に前記第２不揮発メモリの使用率を管理し、該使用率に基づいて前記整合処理の実行を制御する
ことを特徴とする請求項９乃至１２のいずれかに記載の不揮発メモリ制御方法。
【請求項１４】
前記使用率が所定の閾値を超えたセクタに対して前記整合処理を実行する
ことを特徴とする請求項１３に記載の不揮発メモリ制御方法。
【請求項１５】
１セクタ分以上の記憶容量を有する不揮発性のバッファメモリを設け、
前記制御部は、前記整合処理において、前記第１不揮発メモリ内のデータに前記第２不揮発メモリ内のデータを反映させた少なくとも１セクタ分のデータを前記バッファメモリに作成する
ことを特徴とする請求項９乃至１４のいずれかに記載の不揮発メモリ制御方法。
【請求項１６】
前記第１不揮発メモリ内の任意のセクタを前記バッファメモリとして使用すると共に、前記整合処理の実行後に、該整合処理の対象セクタと前記バッファメモリに割り当てたセクタとが入れ替わるように前記第１不揮発メモリに与えるアドレス情報を変換する
ことを特徴とする請求項１５に記載の不揮発メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発メモリを使用する不揮発メモリシステムおよび不揮発メモリ制御方法に関する。
【背景技術】
【０００２】
原稿のコピー機能やプリント機能、ファクシミリ機能などを備える複合機などの装置では、装置固有の特性値や印刷枚数、コピー枚数などを計数したカウンタ値などのデータを不揮発性のメモリに記憶することが一般に行われる。以下に、データを不揮発に記憶するための各種のメモリ構成と、それぞれの利点欠点を列挙する。
【０００３】
（１）揮発メモリを電池でバックアップする場合
ａ．データのリード・ライト共にランダムアクセスが可能である。  
ｂ．電池を使用することにより、電池容量によるバックアップ時間の制限がある。  
ｃ．メモリデバイスとしてＳＲＡＭ（Static Random Access Memory）を使用する場合は、ビット単価が高い。  
ｄ．メモリデバイスとしてＤＲＡＭ（Dynamic Random Access Memory）を使用する場合は、ＤＲＡＭへのアクセス制御回路が必要になる。また電源ＯＮ／ＯＦＦ時のバックアップ切り替えのための制御回路が必要になる。
【０００４】
（２）メモリデバイス自体が不揮発性であるフラッシュメモリを使用する構成
２−１）ＮＡＮＤ型のフラッシュメモリを使用する場合
ａ．ビット単価が安価でバックアップ時間の制限もなく、電池も不要となる。  
ｂ．リード・ライト共にアクセス時のアドレスとフラッシュメモリ内部のアドレスに変換するための専用のアクセス制御回路（シーケンサ）が必要になる。  
ｃ．データのライト時には、上記のアドレス変換と一定の容量単位（セクタ単位）での消去動作が必要となると共に、ライト動作において長い処理時間が必要になる。  
ｄ．データのリード時には、一定の容量単位（通常は５１２バイト単位）での読み込み処理が必要であり、任意のアドレスのデータをリードするための処理時間がＳＲＡＭなどのランダムアクセス可能なデバイスに比べて長くなる。  
ｅ．フラッシュメモリ内部のすべてのデータの保障をしていないため、不具合のあるセクタへのアクセスを禁止にするための制御回路が必要になる。  
ｆ．書込回数に制限がある。
【０００５】
２−２）ＮＯＲ型のフラッシュメモリを使用する場合
ａ．ビット単価が安価でバックアップ時間の制限もなく、電池も不要となる。  
ｂ．データのライト時はＮＡＮＤ型のフラッシュメモリと同様にセクタ単位でのアクセスとなるが、データのリード時はランダムアクセスが可能である。  
ｃ．書込回数に制限がある。
【０００６】
（３）不揮発性のメモリデバイスとして強誘電体メモリ（ＦｅＲＡＭ…Ferroelectric RAM）を使用する場合
ａ．ＳＲＡＭと同様にデータのリード・ライト共にランダムアクセスが可能であり、かつ電池が不要となる。また、書込回数の制限はあるが、１Ｅの１０乗〜１Ｅの１２乗回程度あり、製品仕様上問題ない。  
ｂ．ビット単価が高いために、複合機の不揮発パラーメータをすべてＦｅＲＡＭで保持するには高コストとなってしまう。
【０００７】
なお、フラッシュメモリのようにデータの書き込みをセクタ単位でしか実行できず、ライト処理に長い時間を要するデバイスを記憶装置として用いた情報処理装置において、データのライト動作に関わる処理時間を短縮できるようにキャッシュメモリを使用したキャッシュメモリ制御装置がある（たとえば、特許文献１参照。）。この装置では、キャッシュメモリからフラッシュメモリにデータを書き出す際に、キャッシュメモリに記憶されているデータ数をフラッシュメモリのブロック（セクタ）単位に計数し、キャッシュメモリに記憶されているデータ数が最も多いブロックに関してキャッシュメモリからフラッシュメモリへのデータの書き出しを行うようになっている。
【０００８】
【特許文献１】特開平７−８４８８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
不揮発にデータを記憶する装置としては、電池不使用、ランダムアクセス可能、実用上の書込回数制限無し、ビット単価が安価といった条件をすべて満たすことが望ましいが、上記に示すように従来の構成では、これらすべての条件を満たすものはない。特許文献１に開示されたキャッシュメモリ制御装置は、電池不使用、ビット単価が安価といった利点を有するフラッシュメモリを使用しながら、ランダムなライトアクセスおよび処理時間の短縮を図っているが、電源がＯＦＦした場合にキャッシュメモリ内のデータが失われてしまうという問題がある。
【００１０】
本発明は、上記の問題を解決しようとするものであり、電池不使用、ランダムなライトアクセス可能、実用上の書込回数制限無し、ビット単価が安価といった条件を満たす不揮発メモリシステムおよび不揮発メモリ制御方法を提供することを目的としている。
【課題を解決するための手段】
【００１１】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
【００１２】
［１］データの書き込みがセクタ単位での書き込みに制限された第１不揮発メモリと、
前記第１不揮発メモリに記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリと、
前記第１不揮発メモリと前記第２不揮発メモリに対するデータのリード・ライト動作を制御する制御部と、
を備え、
前記制御部は、外部から前記第１不揮発メモリに対するデータのライト命令を受けたとき、前記ライト命令で指定されたライトアドレスに対応する前記第１不揮発メモリ内の領域に前記ライト命令に係るライトデータと同一のデータが記憶されていないことを条件に、前記ライトデータを前記ライトアドレスに関連付けて前記第２不揮発メモリへ書き込み、所定の起動条件の成立により、前記第２不揮発メモリ内のデータを前記セクタ単位に前記第１不揮発メモリへ書き移す整合処理を行う
ことを特徴とする不揮発メモリシステム。
【００１３】
上記発明では、ライトアドレスで指定された第１不揮発メモリ内の領域にライトデータと同一のデータが記憶されていないことを条件に、ライトデータがライトアドレスと関連付けされて第２不揮発メモリに書き込まれる。また、所定の起動条件の成立により、第２不揮発メモリ内のデータは第１不揮発メモリへセクタ単位に書き移される。ここで、ライト命令に係るライトデータの書き込みは、ランダムアクセス可能な第２不揮発メモリに対して行われるので、ランダムアクセスによるライト動作が確保される。また、第２不揮発メモリに書き込まれたデータを第１不揮発メモリに書き移す整合処理はセクタ単位に行われるので、ライト命令毎に第１不揮発メモリにライトデータを直接書き込む場合に比べて、第１不揮発メモリに対する書き込み回数が低減する。
【００１４】
また、第１不揮発メモリにライトデータと同一のデータが既に存在する場合は、第２不揮発メモリに対するライトデータの書込み動作も行われないので、第２不揮発メモリに対する書込み回数が減ると共に、第１不揮発メモリに既に存在するデータが第２不揮発メモリにも重複して記憶されることがなくなり、第２不揮発メモリの記憶領域が有効に利用され、ひいては、空き領域確保のために整合処理が行われる回数も低減し、第１不揮発メモリに対する書き換え回数の低減や処理速度の向上に貢献する。
【００１５】
［２］データの書き込みがセクタ単位での書き込みに制限された第１不揮発メモリと、
前記第１不揮発メモリに記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリと、
前記第１不揮発メモリと前記第２不揮発メモリに対するデータのリード・ライト動作を制御する制御部と、
を備え、
前記制御部は、外部から前記第１不揮発メモリに対するデータのライト命令を受けたとき、前記ライト命令で指定されたライトアドレスに関連付けされて前記第１不揮発メモリと前記第２不揮発メモリのいずれにも前記ライト命令に係るライトデータと同一のデータが記憶されていないことを条件に、前記ライトデータを前記ライトアドレスに関連付けて前記第２不揮発メモリへ書き込み、所定の起動条件の成立により、前記第２不揮発メモリ内のデータを前記セクタ単位に前記第１不揮発メモリへ書き移す整合処理を行う
ことを特徴とする不揮発メモリシステム。
【００１６】
上記発明では、ライトアドレスに関連付けされてライトデータと同一のデータが第１不揮発メモリと第２不揮発メモリのいずれにも記憶されていないことを条件に、ライトデータがライトアドレスと関連付けされて第２不揮発メモリに書き込まれる。また、所定の起動条件の成立により、第２不揮発メモリ内のデータは第１不揮発メモリへセクタ単位に書き移される。ここで、ライト命令に係るライトデータの書き込みは、ランダムアクセス可能な第２不揮発メモリに対して行われるので、ランダムアクセスによるライト動作が確保される。また、第２不揮発メモリに書き込まれたデータを第１不揮発メモリに書き移す整合処理はセクタ単位に行われるので、ライト命令毎に第１不揮発メモリにライトデータを直接書き込む場合に比べて、第１不揮発メモリに対する書き込み回数が低減する。
【００１７】
また、第１不揮発メモリもしくは第２不揮発メモリにライトデータと同一のデータが既に存在する場合は、第２不揮発メモリに対するライトデータの書込み動作は行われないので、第２不揮発メモリに対する書き込み回数が減ると共に、第１不揮発メモリに既に存在するデータが第２不揮発メモリにも重複して記憶されることもないので、第２不揮発メモリの記憶領域が有効に利用され、ひいては、空き領域確保のために整合処理が行われる回数も低減し、第１不揮発メモリに対する書き換え回数の低減や処理速度の向上に貢献する。
【００１８】
［３］前記制御部は、前記ライトデータと同一のデータが記憶されていないことの調べを、前記第２不揮発メモリより前記第１不揮発メモリに対して先に行う
ことを特徴とする［２］に記載の不揮発メモリシステム。
【００１９】
上記発明では、第１不揮発メモリが、たとえば、ＮＯＲ型のフラッシュメモリのようにランダム・リード・アクセスの可能なメモリの場合に有効である。
【００２０】
［４］前記制御部は、前記ライトデータと同一のデータが記憶されていないことの調べを、前記第１不揮発メモリより前記第２不揮発メモリに対して先に行う
ことを特徴とする［２］に記載の不揮発メモリシステム。
【００２１】
上記発明では、第１不揮発メモリが、たとえば、ＮＡＮＤ型のフラッシュメモリのようにリード・アクセスがセクタ単位に制限されているメモリの場合に有効である。
【００２２】
［５］前記制御部は、前記第１不揮発メモリのセクタ単位に前記第２不揮発メモリの使用率を管理し、該使用率に基づいて前記整合処理の実行を制御する
ことを特徴とする［１］乃至［４］のいずれかに記載の不揮発メモリシステム。
【００２３】
上記発明では、第１不揮発メモリのセクタ単位に、第２不揮発メモリの使用率、すなわち、そのセクタに書き移されるデータが第２不揮発メモリに記憶されている割合に応じて、整合処理の実行が制御される。該制御には、実行時期の決定、実行対象のセクタの選択などが含まれる。
【００２４】
［６］前記使用率が所定の閾値を超えたセクタに対して前記整合処理を実行する
ことを特徴とする［５］に記載の不揮発メモリシステム。
【００２５】
［７］１セクタ分以上の記憶容量を有する不揮発性のバッファメモリを設け、
前記制御部は、前記整合処理において、前記第１不揮発メモリ内のデータに前記第２不揮発メモリ内のデータを反映させた少なくとも１セクタ分のデータを前記バッファメモリに作成する
ことを特徴とする［１］乃至［６］のいずれかに記載の不揮発メモリシステム。
【００２６】
［８］前記制御部は、前記第１不揮発メモリ内の任意のセクタを前記バッファメモリとして使用すると共に、前記整合処理の実行後に、該整合処理の対象セクタと前記バッファメモリに割り当てたセクタとが入れ替わるように前記第１不揮発メモリに与えるアドレス情報を変換する
ことを特徴とする［７］に記載の不揮発メモリシステム。
【００２７】
上記発明では、整合処理の対象セクタのデータは、第２不揮発メモリに記憶されているデータと整合を取りながら、バッファメモリに割り当てられたセクタにコピーされる。その後は、対象セクタへのアクセスがバッファメモリへのアクセスとなり、バッファメモリへのアクセスが対象セクタへのアクセスとなるようにアドレス変換される。これにより、バッファメモリに作成したデータを対象セクタに書き移す必要がなくなり、処理時間が短縮される。
【００２８】
［９］データの書き込みがセクタ単位での書き込みに制限された第１不揮発メモリに対するデータのライト命令を受けたとき、前記ライト命令で指定されたライトアドレスに対応する前記第１不揮発メモリ内の領域に前記ライト命令に係るライトデータと同一のデータが記憶されていないことを条件に、前記第１不揮発メモリに記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリへ前記ライトデータを前記ライトアドレスに関連付けて書き込み、
所定の起動条件の成立により、前記第２不揮発メモリ内のデータを前記セクタ単位に前記第１不揮発メモリへ書き移す整合処理を行う
ことを特徴とする不揮発メモリ制御方法。
【００２９】
［１０］データの書き込みがセクタ単位での書き込みに制限された第１不揮発メモリに対するデータのライト命令を受けたとき、前記ライト命令で指定されたライトアドレスに関連付けされて前記ライト命令のライトデータと同一のデータが前記第１不揮発メモリと該第１不揮発メモリに記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリとのいずれにも記憶されていないことを条件に、前記ライトデータを前記ライトアドレスに関連付けて前記第２不揮発メモリへ書き込み、
所定の起動条件の成立により、前記第２不揮発メモリ内のデータを前記セクタ単位に前記第１不揮発メモリへ書き移す整合処理を行う
ことを特徴とする不揮発メモリ制御方法。
【００３０】
［１１］前記ライトデータと同一のデータが記憶されていないことの調べを、前記第２不揮発メモリより前記第１不揮発メモリに対して先に行う
ことを特徴とする［１０］に記載の不揮発メモリ制御方法。
【００３１】
［１２］前記ライトデータと同一のデータが記憶されていないことの調べを、前記第１不揮発メモリより前記第２不揮発メモリに対して先に行う
ことを特徴とする［１０］に記載の不揮発メモリ制御方法。
【００３２】
［１３］前記第１不揮発メモリのセクタ単位に前記第２不揮発メモリの使用率を管理し、該使用率に基づいて前記整合処理の実行を制御する
ことを特徴とする［９］乃至［１２］のいずれかに記載の不揮発メモリ制御方法。
【００３３】
［１４］前記使用率が所定の閾値を超えたセクタに対して前記整合処理を実行する
ことを特徴とする［１３］に記載の不揮発メモリ制御方法。
【００３４】
［１５］１セクタ分以上の記憶容量を有する不揮発性のバッファメモリを設け、
前記制御部は、前記整合処理において、前記第１不揮発メモリ内のデータに前記第２不揮発メモリ内のデータを反映させた少なくとも１セクタ分のデータを前記バッファメモリに作成する
ことを特徴とする［９］乃至［１４］のいずれかに記載の不揮発メモリ制御方法。
【００３５】
［１６］前記第１不揮発メモリ内の任意のセクタを前記バッファメモリとして使用すると共に、前記整合処理の実行後に、該整合処理の対象セクタと前記バッファメモリに割り当てたセクタとが入れ替わるように前記第１不揮発メモリに与えるアドレス情報を変換する
ことを特徴とする［１５］に記載の不揮発メモリ制御方法。
【発明の効果】
【００３６】
本発明に係る不揮発メモリシステムおよび不揮発メモリ制御方法によれば、電池不使用で無期限にデータ保存可能、ランダムなライトアクセスが可能、書込回数の制限が実用上問題にならない、ビット単価が安価という条件をすべて満たすことができる。
【発明を実施するための最良の形態】
【００３７】
以下、図面に基づき本発明の各種実施の形態を説明する。
【００３８】
図１は、本発明の第１の実施の形態に関わる不揮発メモリシステム１０の構成を示している。不揮発メモリシステム１０は、ＣＰＵ（Central Processing Unit）を含む情報処理装置として構成されたホスト５と接続され、該ホスト５からのライト命令やリード命令に従い、内部のメモリに対するデータのリード・ライト動作を行うようになっている。
【００３９】
不揮発メモリシステム１０は、データの書き込みがセクタ単位に制限された第１不揮発メモリ１１と、第１不揮発メモリ１１に記憶されるデータの一部を記憶するためのランダムアクセス可能な第２不揮発メモリ１２と、第１不揮発メモリ１１にデータを書き込む際に使用されるバッファメモリ１３と、これらのメモリ１１、１２、１３に対するデータのリード・ライト動作を制御する制御部１４とを有して構成される。
【００４０】
第１不揮発メモリ１１は、当該不揮発メモリシステム１０におけるメインメモリであり、ここでは、ＮＯＲ型のフラッシュメモリを使用している。ＮＯＲ型のフラッシュメモリは、データの消去、書き込みはセクタ単位での実行に制限されており、データの読み出しはアドレス毎にランダムアクセス可能に構成された不揮発メモリである。ここでは、第１不揮発メモリ１１として、アドレス長２０ビット、データ幅８ビット、容量１ＭＢ（メガバイト）であり、書き込みの単位であるセクタのサイズが６４ＫＢ（キロバイト）でセクタ数が１６個のＮＯＲ型フラッシュメモリを使用する。
【００４１】
第２不揮発メモリ１２は、第１不揮発メモリ１１に格納されるデータの一部を第１不揮発メモリ１１の代わりに記憶するためのメモリであり、データと、そのデータの第１不揮発メモリ１１における格納アドレス（ライトアドレス）とを関連付けて記憶する役割を果たす。第２不揮発メモリ１２の容量は第１不揮発メモリ１１に比べて小さい。
【００４２】
ここでは、第２不揮発メモリ１２としてＦｅＲＡＭを使用する。また、データを保存するための第１ＦｅＲＡＭ１２ａと、ライトアドレスを保存するための第２ＦｅＲＡＭ１２ｂとの２つのメモリ素子にて構成される。第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂとしてそれぞれ、アドレス長１３ビット、データ幅８ビット、容量４ＫＢのＦｅＲＡＭを使用する。
【００４３】
バッファメモリ１３は、第１不揮発メモリ１１の１セクタ分以上の容量を有する不揮発性のメモリである。ここでは、バッファメモリ１３として、アドレス長１６ビット、データ幅８ビット、容量６４ＫＢのＦｅＲＡＭを使用する。
【００４４】
制御部１４は、フラッシュＲＯＭ書込シーケンサ１４ａ、データ比較部１４ｂ、アドレス比較部１４ｃ、セクタ使用率レジスタ１４ｄなどの機能を果たす。フラッシュＲＯＭ書込シーケンサ１４ａは、ホスト５からのライト命令やリード命令に対して行われる処理を制御する機能を果たす。制御部１４はＡＳＩＣ(Application Specific Integrated Circuit)として構成される。
【００４５】
データ比較部１４ｂは、ホスト５からのライト命令に係るライトデータと第１不揮発メモリ１１から読み出したデータとの比較に使用される。アドレス比較部１４ｃは、ホスト５からライト命令で指示されたライトアドレスと第１ＦｅＲＡＭ１２ａに格納されているアドレス情報との比較などに使用される。
【００４６】
セクタ使用率レジスタ１４ｄは、第１不揮発メモリ１１のセクタ毎に設けられており、第１不揮発メモリ１１のセクタ単位に、第２不揮発メモリ１２の使用率を記憶するためのレジスタである。ここでは、使用率として、第２不揮発メモリ１２に記憶されている有効なデータの数をセクタ使用率レジスタ１４ｄに記憶する。
【００４７】
図２は、ホスト５からのライト命令で与えられるライトアドレスＷＡおよびライトデータＷＤと、第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに対するアドレスおよびデータとの対応関係などを示している。
【００４８】
ライト命令においてホスト５からは２０ビットのライトアドレスＷＡと８ビットのライトデータＷＤとが与えられる。２０ビットのライトアドレスＷＡのうち下位１３ビットＷＬは、第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂへのアクセスアドレスとして使用される。上位７ビットのアドレスＷＨは第１ＦｅＲＡＭ１２ａに格納され、ライトデータＷＤは第２ＦｅＲＡＭ１２ｂに格納される。
【００４９】
ライトアドレスＷＡのうちの上位７ビットのアドレスＷＨの値は、第１ＦｅＲＡＭ１２ａに格納されるデータの下位６ビットに記憶され、第１ＦｅＲＡＭ１２ａに格納されるデータの最上位ビットは、第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに格納されているデータが有効であることを値「１」で示し、無効であることを値「０」で示す有効ビットＶとして使用される。
【００５０】
第１ＦｅＲＡＭ１２ａに格納されるアドレスＷＨのうちの上位４ビットは第１不揮発メモリ１１のセクタ番号を示している。セクタ使用率レジスタ１４ｄは、セクタ別に１６個用意されており、第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに格納されている有効なデータ（有効ビットＶが「１」にセットされたデータ）の数をセクタ毎に管理し記憶するために使用される。制御部１４は、有効ビットＶを「１」にセットしたとき、対応するセクタ使用率レジスタ１４ｄの値を「＋１」し、有効ビットＶを「０」にりセットしたとき、そのデータが属するセクタに対応するセクタ使用率レジスタ１４ｄの値を「−１」する。
【００５１】
次に、ホスト５からライト命令を受けた場合における不揮発メモリシステム１０の動作を説明する。
【００５２】
ランダムアクセスによるホスト５からのライト命令に対して、制御部１４はこのライト命令で指定されたライトアドレスＷＡを第１不揮発メモリ１１にアクセスアドレスとして与え、第１不揮発メモリ１１からデータＲＤを読み出し、該データＲＤとホスト５からのライト命令に係るライトデータＷＤとをデータ比較部１４ｂにて比較する。以後の動作は、場合分けして説明する。
【００５３】
＜ケース１：図３、図４参照＞
第１不揮発メモリ１１から読み出したデータＲＤとホスト５からのライトデータＷＤとが不一致であり（Ｐ１）、かつ、ホスト５からのライトアドレスＷＡのうちの下位１３ビットのアドレスＷＬをアドレス値として第１ＦｅＲＡＭ１２ａから読み出されるデータＳＡ内の有効ビットＶが「１」（有効）であって（Ｐ２）、同データＳＡに含まれる上位７ビット分のアドレス値を上位としてこれにライトアドレスＷＡの下位１３ビットを合わせた全２０ビットのアドレスと、ライトアドレスＷＡとが同一の場合（Ｐ３）。すなわち、ライトデータＷＤと同一のデータがライトアドレスＷＡに関連付けされて第１不揮発メモリ１１に記憶されておらず、かつライトアドレスＷＡに関連付けされて有効なデータが第２不揮発メモリ１２に記憶されている場合。
【００５４】
この場合、ライトアドレスＷＡのうちの下位１３ビットのアドレスＷＬをアドレス値とした第２ＦｅＲＡＭ１２ｂ内の領域のデータＳＢ（図４参照）をホスト５からのライト命令に係るライトデータＷＤに書き換える（Ｐ４）。すなわち、ライトアドレスＷＡに関連付けてライトデータＷＤを第２不揮発メモリ１２に書き込む。
【００５５】
図３、図４に示す例では、ライトアドレスＷＡは０ｘ０２００１（Ｈ）（Ｈは１６進表記を示す）、ライトデータＷＤは０ｘ５５（Ｈ）であり、第１不揮発メモリ１１から読み出されたデータＲＤは０ｘ０１（Ｈ）、データＳＡは１００００００１（Ｂ）（Ｂは２進表記を示す）になっている。したがって、データＲＤ（０ｘ０１（Ｈ））とライトデータＷＤ（０ｘ５５（Ｈ））とは不一致、有効ビットＶは「１」（有効）、データＳＡに含まれる上位７ビットのアドレス値とライトアドレスＷＡのうちの下位１３ビットのアドレスＷＬとを合わせた全２０ビットのアドレスはライトアドレスＷＡと一致する。そこで、第２ＦｅＲＡＭ１２ｂ内のデータＳＢ（０ｘＡＡ（Ｈ））をライトデータＷＤである０ｘ５５（Ｈ）に書き換えている（Ｐ４）。
【００５６】
＜ケース２：図５から図８参照＞
第１不揮発メモリ１１から読み出したデータＲＤとホスト５からのライトデータＷＤとが不一致であり（Ｐ１１）、かつライトアドレスＷＡの下位１３ビットをアドレス値として第１ＦｅＲＡＭ１２ａから読み出したデータＳＡ中の有効ビットＶが「１」であって、データＳＡに含まれる上位７ビットのアドレス値とライトアドレスＷＡのうちの下位１３ビットのアドレスＷＬとを合わせた全２０ビットのアドレスがライトアドレスＷＡと不一致の場合（Ｐ１２）。
【００５７】
この場合は、ライトデータＷＤを書き込むための空き領域を第２ＦｅＲＡＭ１２ｂに作成するために、第２ＦｅＲＡＭ１２ｂ内のデータをセクタ単位に第１不揮発メモリ１１内の該当セクタへ書き移す整合処理を行い、その後、第２ＦｅＲＡＭ１２ｂにライトデータＷＤが書き込まれる。
【００５８】
すなわち、ホスト５に対してＷＡＩＴ信号を出力しながら（Ｐ１３）、データＳＡ内のセクタ番号が示すセクタ内の全データを第１不揮発メモリ１１から読み出してバッファメモリ１３にコピーする（Ｐ１４）。次にデータＳＡに含まれる上位７ビットのアドレス値のうちの下位３ビットを上位アドレスとし、これにライトアドレスＷＡの下位１３ビットＷＬを合わせた全１６ビットをアドレス値としてバッファメモリ１３にライトアクセスし、データＳＢをバッファメモリ１３に書き込む（Ｐ１５ａ）。
【００５９】
さらに、第２ＦｅＲＡＭ１２ｂに格納されているデータの中で、有効ビットＶが「１」であってデータＳＡ内のセクタ番号と同一のセクタに関連付けされているデータＳＣ（有効なデータ）をバッファメモリ１３内の対応する領域にそれぞれにコピーし（Ｐ１５ｂ）、該コピーした各データＳＢ、ＳＣに対応する有効ビットＶを「０」（無効）にし、データＳＡ内のセクタ番号に対応するセクタ使用率レジスタ１４ｄの値を、有効ビットＶを「０」に変更したデータ数だけ減算する、もしくは「０」にリセットする（図８：Ｐ１６）。
【００６０】
具体的には、第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに与える１３ビットのアドレス範囲の各アドレス値に対して次の処理を行う。第１ＦｅＲＡＭ１２ａから読み出されたデータＳＣの有効ビットＶが「１」かつ該データ中のセクタ番号がデータＳＡ内のセクタ番号と同一である場合に、このデータＳＣの有効ビットＶを「０」に書き換えると共に、該データＳＣ中の下位３ビットを上位アドレスとしこれに第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに与えている１３ビットのアドレスを加えた１６ビットの値をアドレス値としてバッファメモリ１３にライトアクセスし、バッファメモリ１３に対して、第２ＦｅＲＡＭ１２ｂから読み出したデータＳＣを書き込む（図６：Ｐ１５）。
【００６１】
次に、第２ＦｅＲＡＭ１２ｂ内のデータＳＢをライトデータＷＤに書き換え（図７、図８：Ｐ１７）、第１ＦｅＲＡＭ１２ａに対してはデータＳＡのあった領域に、ホスト５からのライトアドレスＷＡの上位７ビットを含み有効ビットＶを「１」にしたデータを書き込む（Ｐ１８）。またこのデータに含まれるセクタ番号に対応するセクタ使用率レジスタ１４ｄを「＋１」する（Ｐ１９）。
【００６２】
このようにして、ライトデータＷＤは、ライトアドレスＷＡ（第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに与える下位１３ビットと第１ＦｅＲＡＭ１２ａに格納される上位７ビットとをあわせた全２０ビットのアドレス）に関連付けて第２不揮発メモリ１２（１２ａ、１２ｂ）に記憶される。その後、ホスト５へのＷＡＩＴ信号を解除し、第１不揮発メモリ１１内の該当セクタ（Ｐ１４にてバッファメモリ１３にデータを読み出したセクタ）を消去し、バッファメモリ１３内に作成した１セクタ分のデータを第１不揮発メモリ１１内の該当セクタに書き込んで（Ｐ２０）、当該ライト命令に対する一連の処理を終了する。
【００６３】
図５から図８に示す例では、ライトアドレスＷＡは０ｘ００００１（Ｈ）、ライトデータＷＤは０ｘ５５（Ｈ）、第１不揮発メモリ１１から読み出されたデータＲＤは０ｘ０１（Ｈ）、データＳＡは１０００１００１（Ｂ）になっており、データＲＤ（０ｘ０１Ｈ）とライトデータＷＤ（０ｘ５５Ｈ）とは不一致、データＳＡの有効ビットＶは「１」、データＳＡに含まれる上位７ビットのアドレス値とライトアドレスＷＡのうちの下位１３ビットのアドレスＷＬとを合わせた全２０ビットのアドレス（０ｘ１２００１Ｈ）はライトアドレスＷＡ（０ｘ００００１Ｈ）と不一致である。
【００６４】
そこで、データＳＡに含まれるセクタ番号は「１」であるので、データＳＢ（０ｘＡＡ（Ｈ））およびこれと同じセクタ１に属するデータＳＣ（０ｘ０４（Ｈ））を第２ＦｅＲＡＭ１２ｂから第１不揮発メモリ１１へコピーし（図６：Ｐ１４、Ｐ１５ａ、Ｐ１５ｂ、図８：Ｐ２０）、該当するデータの有効ビットＶを「０」にし、さらにセクタ１に対応するセクタ使用率レジスタ１４ｄの値を「０」にリセットし（図８：Ｐ１６）、第２ＦｅＲＡＭ１２ｂ内のデータＳＢ（０ｘＡＡ（Ｈ））をライトデータＷＤ（０ｘ５５（Ｈ））で書き換え（Ｐ１７）、さらにデータＳＡを１０００００００（Ｂ）に書き換え（Ｐ１８）、セクタ０に対応するセクタ使用率レジスタ１４ｄの値を「＋１」（Ｐ１９）している。
【００６５】
＜ケース３：図９、図１０参照＞
第１不揮発メモリ１１から読み出したデータＲＤとホスト５からのライトデータＷＤとが同一でなく（Ｐ３１）、かつライトアドレスＷＡの下位１３ビットをアドレス値として第１ＦｅＲＡＭ１２ａから読み出したデータＳＡ中の有効ビットＶが「０」の場合（Ｐ３２）。
【００６６】
この場合は、第２ＦｅＲＡＭ１２ｂ内のデータＳＢをライトデータＷＤに書き換え（Ｐ３３）、第１ＦｅＲＡＭ１２ａに対してはデータＳＡのあった領域にホスト５からのライトアドレスＷＡの上位７ビットを含み有効ビットＶを「１」にしたデータを書き込む（Ｐ３４）。またこのデータに含まれるセクタ番号に対応するセクタ使用率レジスタ１４ｄの値を「＋１」する（図１０：Ｐ３５）。
【００６７】
図９、図１０に示す例では、ライトアドレスＷＡは０ｘ０２００１（Ｈ）、ライトデータＷＤは０ｘ５５（Ｈ）、第１不揮発メモリ１１から読み出されたデータＲＤは０ｘ０１（Ｈ）であり、データＲＤ（０ｘ０１（Ｈ））とライトデータＷＤ（０ｘ５５（Ｈ））とは不一致（Ｐ３１）かつデータＳＡの有効ビットＶは「０」（Ｐ３２）になっている。そこで、データＳＢをライトデータＷＤである０ｘ５５（Ｈ）に書き換え（Ｐ３３）、データＳＡのあった領域に１００００００１（Ｂ）を書き込み（Ｐ３４）、セクタ０のセクタ使用率レジスタ１４ｄの値を「＋１」（Ｐ３５）している。
【００６８】
＜ケース４：図１１、図１２参照＞
第１不揮発メモリ１１から読み出したデータＲＤとホスト５からのライトデータＷＤとが一致し（Ｐ４１）、かつライトアドレスＷＡの下位１３ビットをアドレス値として第１ＦｅＲＡＭ１２ａから読み出したデータＳＡ中の有効ビットＶが「１」であって（Ｐ４２）、データＳＡに含まれる上位７ビットのアドレス値とライトアドレスＷＡのうちの下位１３ビットのアドレスＷＬとを合わせた全２０ビットのアドレスがライトアドレスＷＡと一致する場合（Ｐ４３）。
【００６９】
この場合は、データＳＡを、有効ビットＶを「０」にクリアした値に書き換える（Ｐ４４）。またこのデータＳＡに含まれるセクタ番号に対応するセクタ使用率レジスタ１４ｄの値を「−１」する（図１２：Ｐ４５）。すなわち、ライトアドレスＷＡに関連付けされた有効なデータが第１不揮発メモリ１１にも第２不揮発メモリ１２にも存在するので、第２不揮発メモリ１２の側のデータを無効にしている。
【００７０】
図１１、図１２の例では、ライトアドレスＷＡは０ｘ０２００１（Ｈ）、ライトデータＷＤは０ｘ５５（Ｈ）、第１不揮発メモリ１１から読み出されたデータＲＤは０ｘ５５（Ｈ）であり、データＲＤ（０ｘ５５（Ｈ））とライトデータＷＤ（０ｘ５５（Ｈ））とは一致し（Ｐ４１）かつデータＳＡの有効ビットＶは「１」になっている（Ｐ４２）。そこで、データＳＡの有効ビットＶを「０」にリセットし（Ｐ４４）、セクタ０のセクタ使用率レジスタ１４ｄの値を「−１」（Ｐ４５）している。
【００７１】
このケースでは、ライトデータＷＤと同一のデータが第１不揮発メモリ１１に格納されているので、第１不揮発メモリ１１および第２不揮発メモリ１２のいずれに対してもライトデータＷＤの書き込みは行わない。また、ライトアドレスＷＡに関連付けて第２ＦｅＲＡＭ１２ｂに有効なデータＳＢが格納されていたので、これを無効にしている。たとえば、ライトアドレスＷＡに対応する第１不揮発メモリ１１内の領域に０ｘ５５（Ｈ）が格納されている状態でライトデータＷＤとして０ｘＡＡ（Ｈ）を書き込み、該ライトデータＷＤ（０ｘＡＡ（Ｈ））が第２ＦｅＲＡＭ１２ｂに記憶された後、ライトデータＷＤとして元の値である０ｘ５５（Ｈ）を書き込むような場合は、ケース４の動作になる。
【００７２】
＜ケース５＞
第１不揮発メモリ１１から読み出したデータＲＤとホスト５からのライトデータＷＤとが一致し、かつライトアドレスＷＡの下位１３ビットをアドレス値として第１ＦｅＲＡＭ１２ａから読み出したデータＳＡ中の有効ビットＶが「１」であって、データＳＡに含まれる上位７ビットのアドレス値とライトアドレスＷＡのうちの下位１３ビットのアドレスＷＬとを合わせた全２０ビットのアドレスがライトアドレスＷＡと一致しない場合。
【００７３】
この場合は、第１不揮発メモリ１１、第１ＦｅＲＡＭ１２ａ、第２ＦｅＲＡＭ１２ｂのいずれに対してもデータを書き換えることなく処理を終了する。すなわち、ライトデータＷＤと同一のデータが第１不揮発メモリ１１に格納されているので、第１不揮発メモリ１１および第２不揮発メモリ１２のいずれに対してもライトデータＷＤの書き込みは行わない。また、第２ＦｅＲＡＭ１２ｂには、このライトアドレスＷＡに関連付けされた有効なデータが格納されていないので、第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに対するデータの書き換えは行わない。
【００７４】
＜ケース６＞
第１不揮発メモリ１１から読み出したデータＲＤとホスト５からのライトデータＷＤとが一致し、かつライトアドレスＷＡの下位１３ビットをアドレス値として第１ＦｅＲＡＭ１２ａから読み出したデータＳＡ中の有効ビットＶが「０」の場合。
【００７５】
この場合は、第１不揮発メモリ１１、第１ＦｅＲＡＭ１２ａ、第２ＦｅＲＡＭ１２ｂのいずれに対してもデータを書き換えることなく処理を終了する。すなわち、ケース５と同様に、ライトデータＷＤと同一のデータが第１不揮発メモリ１１に格納されているので、第１不揮発メモリ１１および第２不揮発メモリ１２のいずれに対してもライトデータＷＤの書き込みは行わない。また、第２ＦｅＲＡＭ１２ｂには、このライトアドレスＷＡに関連付けされた有効なデータが格納されていない（有効ビットＶが「０」）ので、第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに対するデータの書き換えは行わない。
【００７６】
次に、ホスト５からリード命令を受けた場合における不揮発メモリシステム１０の動作を説明する。
【００７７】
ランダムアクセスによるホスト５からのリード命令に対して、制御部１４は、ホスト５からのリードアドレスＲＡと、第１ＦｅＲＡＭ１２ａに記憶されている有効なアドレス値、すなわち、リードアドレスＲＡの下位１３ビットをアドレス値として第１ＦｅＲＡＭ１２ａから読み出したデータＳＡに含まれる７ビットのアドレス値を上位アドレスとしこれにリードアドレスＲＡの下位１３ビットを合わせた全２０ビットのアドレス値、とを比較し、一致した場合は（図１３、Ｐ５１）、リードアドレスＲＡの下位１３ビットをアドレス値として第２ＦｅＲＡＭ１２ｂから読み出したデータＳＢをホスト５に対して出力する（Ｐ５２）。一致しない場合は（図１４：Ｐ５３）、リードアドレスＲＡをアドレス値として第１不揮発メモリ１１から読み出したデータＲＤをホスト５に対して出力する（Ｐ５４）。
【００７８】
次に、第２ＦｅＲＡＭ１２ｂ内の有効なデータをセクタ単位に第１不揮発メモリ１１へ書き移す整合処理を図１５に基づき説明する。
【００７９】
整合処理は、所定の起動条件の成立により実行される。整合処理では、制御部１４は不揮発メモリシステム１０へのアクセスが不可であることを表すＢＵＳＹ信号をホスト５に対して出力しながら、あるいはホスト５からのアクセスに対してＷＡＩＴ信号を出力しながら（Ｐ６１）、以下の処理を対象セクタに対して行う。まず、第１不揮発メモリ１１内の対象セクタのデータを、第２不揮発メモリ１２に格納されているデータと整合を取りながらバッファメモリ１３に一旦コピーする（Ｐ６２）。次に、第１不揮発メモリ１１内の対象セクタを消去し、バッファメモリ１３内に先ほど作成した１セクタ分のデータを第１不揮発メモリ１１内の対象セクタに書き込む（Ｐ６３）。
【００８０】
具体的には、対象セクタ内のデータを第１不揮発メモリ１１から順次読み出す際に、第１不揮発メモリ１１に与える２０ビットのアドレスのうちの下位１６ビットをバッファメモリ１３にアドレス値として与える。また、２０ビットのアドレスのうちの下位１３ビットを第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに与え、この状態で第１ＦｅＲＡＭ１２ａから読み出されたデータの有効ビットＶが「１」で該データに含まれる７ビットのアドレス値が第１不揮発メモリ１１に与えているアドレスの上位７ビットと一致する場合は、第２ＦｅＲＡＭ１２ｂから読み出されたデータをバッファメモリ１３に書き込み、他の場合は第１不揮発メモリ１１から読み出されたデータをバッファメモリ１３に書き込む。また、整合処理の最後に、該整合処理の対象セクタに係るセクタ使用率レジスタ１４ｄの値を「０」にリセットする。
【００８１】
このような整合処理の実行契機となる所定の起動条件は、たとえば、セクタ使用率レジスタ１４ｄの示す値を全セクタについて合計した合計使用率が閾値を超えた場合、あるいは合計使用率が１００パーセントになった場合に成立する。閾値を１００パーセント未満に設定しておけば、第２不揮発メモリ１２がフルになく、ホスト５からのライト命令を受けた時点でそのライトデータＷＤを書き込むための空き領域を第２不揮発メモリ１２に確保するために整合処理が起動される場合が少なくなり、ライト命令に対してホスト５が待ち状態になる場合が減り、データの書込み処理が円滑に行われる。
【００８２】
なお、合計使用率が閾値を超えた場合に、どのセクタを整合処理の対象セクタにするかは任意でよいが、第２ＦｅＲＡＭ１２ｂに存在する有効なデータの数が多いセクタを優先的に対象セクタに選択するようにすれば、１回の整合処理で合計使用率を効率よく下げることができる。また、所定の起動条件の成立時に整合処理の対象とされるセクタの数は１つに限らない。たとえば、合計使用率が所定値以下になるまで任意数のセクタに対して整合処理を行うようにしてもよい。
【００８３】
このほか、所定の起動条件は、ライト命令を受けた際にライトデータＷＤを書き込む空き領域が第２不揮発メモリ１２に存在しない場合に成立する。すなわち、前述したケース２の場合にも整合処理が行われる。
【００８４】
さらに、セクタ使用率レジスタ１４ｄに記憶された使用率の値が閾値を超えたセクタに対して整合処理を行うようにしてもよい。
【００８５】
使用率あるいは合計使用率に対する閾値を大きくすれば、該閾値を基準にした整合処理の起動回数は減るが、前述したケース２のようにライト命令の実行時に整合処理を行う可能性が高まるので、これらのバランスを考慮して閾値を設定するとよい。
【００８６】
以上のように、第１の実施の形態に係る不揮発メモリシステム１０では、ビット単価が安価なＮＯＲ型のフラッシュメモリを主たる記憶デバイス（第１不揮発メモリ１１）として使用すると共に補助の記憶デバイスとしてＦｅＲＡＭ（第２不揮発メモリ１２）を使用することで、ランダムアクセスによるデータのリード・ライトを可能にしつつ、書き込み回数の制限を緩和し、かつ電池を使用しないで無期限にデータ保存することができる。
【００８７】
すなわち、セクタ単位にデータの書き込みが行われるＮＯＲ型のフラッシュメモリを第１不揮発メモリ１１とし、ランダムアクセスの可能なＦｅＲＡＭを第２不揮発メモリ１２として設け、ライト命令で指示されたライトアドレスＷＡに対応する第１不揮発メモリ１１内の領域にライトデータＷＤと同一のデータが記憶されていないことを条件に、ライトデータＷＤを、ライトアドレスＷＡに関連付けて第２不揮発メモリ１２に記憶するので、ビット単価が安価なＮＯＲ型のフラッシュメモリを主たる記憶デバイスに使用しながら、ホスト５からのランダムアクセスによるデータのライト動作を可能にしている。
【００８８】
また、第２不揮発メモリ１２に記憶したデータを第１不揮発メモリ１１へ書き移す整合処理は、所定の起動条件の成立時にセクタ単位に行われるので、ランダムアクセスによるデータのライト動作を可能にしながら第１不揮発メモリ１１に対するデータの書き込み回数が減り、書き込み回数の制限を緩和している。
【００８９】
次に、本発明の第２の実施の形態について説明する。
【００９０】
図１６は、第２の実施の形態に係る不揮発メモリシステム３０の構成を示している。第２の実施の形態に係る不揮発メモリシステム３０は、第１の実施の形態では独立に設けていたバッファメモリ１３に相当するメモリ領域を第１不揮発メモリ１１の内部に確保するように構成してある。他の点は第1の実施の形態に示した不揮発メモリシステム１０と同様であり、第1の実施の形態と同一構成の部分については同一の符号を付してその説明を省略する。
【００９１】
不揮発メモリシステム３０では、ＮＯＲ型のフラッシュメモリである第１不揮発メモリ１１の中の１つのセクタはバッファメモリ３１として使用され、制御部３４はホスト５からアクセス可能な領域として、バッファメモリ３１として使用される１セクタ分の領域を除外した領域を割り当てる。制御部３４は、バッファメモリ３１に割り当てる領域を動的に切り替えるためのアドレス変換部３６を備える。またフラッシュＲＯＭ書込シーケンサ３５は、アドレス変換部３６を使用してアドレス変換を行いながら、ホスト５から受けたライト命令やリード命令に対する制御を行う。
【００９２】
変換テーブル３２は、アドレス変換部３６で使用されるアドレス変換情報が記憶された書き換え可能な不揮発メモリであり、制御部３４に接続されている。変換テーブル３２は、第２不揮発メモリ１２の一部の領域を割り当ててもよいし、別個のメモリ素子として設けてもよい。
【００９３】
変換テーブル３２は、変換前のセクタ番号と変換後のセクタ番号との対応関係を示す情報を記憶したものであり、図１７に示す変換テーブル３２は、テーブルの先頭から変換前のセクタ番号順に、変換後のセクタ番号がテーブル値として登録されている。制御部３４は、変換テーブル３２の内容をアドレス変換部３６の内部に設けたアドレス変換レジスタ３６ａに読み込み、アドレス変換レジスタ３６ａを参照してアドレス変換を実行する。
【００９４】
この例では、セクタは１６個あり、セクタ番号は４ビットで表される。アドレス変換部３６はホスト５からのアドレスのうちの上位４ビットを変換前のセクタ番号としてアドレス変換レジスタ３６ａに与え、変換後のセクタ番号をアドレス変換レジスタ３６ａから取得し、該取得した変換後のセクタ番号を第１不揮発メモリ１１に与えるアドレスの上位４ビットに置き換えて出力するようになっている。
【００９５】
図１７は、変換前のセクタ番号と変換後のセクタ番号とがすべて一致している例を示しており、図１８は、セクタ２とセクタ１５とが入れ替わるようにアドレス変換される例を示している。図１８の例においてホスト５からのアドレスが０ｘ２００００（Ｈ）（セクタ番号は２）の場合、アドレス変換部３６から出力されるセクタ番号は０ｘ０Ｆ（Ｈ）であり、全体として第１不揮発メモリ１１には、０ｘＦ００００（Ｈ）のアドレスが出力される。
【００９６】
次に、バッファメモリ３１を使用する場合における不揮発メモリシステム３０の動作を説明する。
【００９７】
ここでは、図１９から図２２に基づき、前述したケース２の場合、すなわち、第１不揮発メモリ１１から読み出したデータＲＤとホスト５からのライトデータＷＤとが不一致で（Ｐ７１）、かつライトアドレスＷＡの下位１３ビットをアドレス値として第１ＦｅＲＡＭ１２ａから読み出したデータＳＡ中の有効ビットＶが「１」であって、データＳＡに含まれる上位７ビットのアドレス値とライトアドレスＷＡのうちの下位１３ビットのアドレスＷＬとを合わせた全２０ビットのアドレスがライトアドレスＷＡと不一致の場合（Ｐ７２）の動作を説明する。
【００９８】
制御部３４は、ホスト５に対してＷＡＩＴ信号を出力しながら（Ｐ７３）、データＳＡ内のセクタ番号が示すセクタ（ここでは、セクタ２）を対象セクタとする整合処理を、セクタ１５をバッファメモリ３１に使用して行う。すなわち、第１不揮発メモリ１１のセクタ２内のデータを、当該セクタ２に関連付けて第２ＦｅＲＡＭ１２ｂに格納されている有効なデータと整合を取りながら、第１不揮発メモリ１１内のセクタ１５にコピーする（Ｐ７４）。
【００９９】
上記コピー動作をより詳細に説明すると、セクタ２内のデータを第１不揮発メモリ１１から順次読み出す際に、第１不揮発メモリ１１に与えている２０ビットのアドレスのうちの下位１３ビットを第１ＦｅＲＡＭ１２ａおよび第２ＦｅＲＡＭ１２ｂに与える。そして、この状態で第１ＦｅＲＡＭ１２ａから読み出したデータの有効ビットＶが「１」で該データに含まれる７ビットのアドレス値が第１不揮発メモリ１１に与えているアドレスの上位７ビットと同一の場合は、第２ＦｅＲＡＭ１２ｂから読み出したデータをバッファメモリ３１に書き込み、他の場合は第１不揮発メモリ１１のセクタ２から読み出したデータをバッファメモリ３１に書き込む動作となる。
【０１００】
該コピー動作が正常に終了した後、変換テーブル３２のセクタ１５のテーブル値をセクタ２（０ｘ２（Ｈ））に変更し（図２２：Ｐ７５）、上記コピー動作において第２ＦｅＲＡＭ１２ｂから第１不揮発メモリ１１のバッファメモリ３１へ書き込まれた各データに対応する有効ビットＶを「０」にクリアする（Ｐ７６）。また、セクタ２に係るセクタ使用率レジスタ１４ｄの値を「０」にリセットする。
【０１０１】
次に、第２ＦｅＲＡＭ１２ｂ内のデータＳＢをライトデータＷＤに書き換え（図２１、図２２：Ｐ７７）、第１ＦｅＲＡＭ１２ａに対してはデータＳＡのあった領域に、ホスト５からのライトアドレスＷＡの上位７ビットを含み有効ビットＶを「１」にしたデータを書き込み（Ｐ７８）、ホスト５へのＷＡＩＴ信号を解除する。その後、制御部３４のフラッシュＲＯＭ書込シーケンサ３５にて第１不揮発メモリ１１内のセクタ２の消去を実行し（Ｐ７９）、消去動作が正常に終了した時点で、変換テーブル３２のセクタ２のテーブル値をセクタ１５（０ｘ０Ｆ（Ｈ））に変更する（Ｐ８０）。
【０１０２】
このように、第１不揮発メモリ１１内のセクタをバッファメモリ３１として利用することで、バッファメモリを別途設ける必要がなく、装置構成が簡略化される。また、第１の実施の形態のように第１不揮発メモリ１１の外部にバッファメモリ１３を設けた場合にはバッファメモリ１３に作成したデータを第１不揮発メモリ１１の該当セクタへ書き戻す必要があるが、第１不揮発メモリ１１内にバッファメモリ３１を設けることで上記の書き戻す処理が不要になり、処理時間が短縮される。
【０１０３】
以上、本発明の実施の形態を図面によって説明してきたが、具体的な構成は実施の形態に示したものに限られるものではなく、本発明の要旨を逸脱しない範囲における変更や追加があっても本発明に含まれる。
【０１０４】
たとえば、各実施の形態で示した第１不揮発メモリ１１や第２不揮発メモリ１２（第１ＦｅＲＡＭ１２ａ、第２ＦｅＲＡＭ１２ｂ）の容量は一例であり、これに限定されるものではない。
【０１０５】
また、第１不揮発メモリ１１としてＮＯＲ型のフラッシュメモリを使用したが、ＮＡＮＤ型のフラッシュメモリを使用してもかまわない。ＮＡＮＤ型では読み出し動作についてもセクタ単位となるが、セクタ単位で、一旦読み出した後、その中の該当アドレスのデータを使用すればよい。セクタ単位の読み出しに利用するバッファメモリは揮発メモリであってもかまわない。また、ＮＡＮＤ型のフラッシュメモリを使用する場合には、不良ビット、冗長ビットに関する制御を行う機能が追加される。
【０１０６】
各実施の形態では、第２不揮発メモリ１２を第１ＦｅＲＡＭ１２ａと第２ＦｅＲＡＭ１２とに分けて構成したが、１つのメモリとして構成されてもよい。
【０１０７】
さらに、各実施の形態では、第１不揮発メモリ１１内のデータＲＤとライトデータＷＤとが不一致の場合に、ライトデータＷＤを第２不揮発メモリ１２に書き込むようにしたが（ケース１、２、３）に、ライトデータＷＤがライトアドレスＷＡに関連付けされて第１不揮発メモリ１１と第２不揮発メモリ１２のいずれにも記憶されていないことを条件に、ライトデータＷＤを第２不揮発メモリ１２に書き込むように動作させてもよい。これにより第２不揮発メモリ１２への書込み回数についても低減を図ることができる。
【０１０８】
具体的には、第１不揮発メモリ１１から読み出したデータＲＤとライトデータＷＤとを比較（第１比較）した結果が不一致であり、かつライトアドレスＷＡの下位１３ビットをアドレスとして第１ＦｅＲＡＭ１２ａから読み出したデータＳＡの有効ビットＶが「１」かつデータＳＡに含まれる上位７ビットのアドレス値を合わせた全２０ビットのアドレスがライトアドレスＷＡと同一であり、かつ第２ＦｅＲＡＭ１２ｂから読み出されるデータＳＢとライトデータＷＤとを比較（第２比較）した結果が不一致であることを条件に、ライトデータＷＤを第２ＦｅＲＡＭ１２ｂに書込むようにする。
【０１０９】
なお、上記の第１比較と第２比較の実行は同時に行ってもよいし、順に行ってもよい。後者の場合、第１不揮発メモリ１１がＮＯＲ型であれば、第１比較を先に行い、不一致の場合に第２比較を行うようにすればよい。一方、第１不揮発メモリ１１がＮＡＮＤ型の場合はデータの読み出しがセクタ単位となりデータの読み出しに時間がかかるので、第２ＦｅＲＡＭ１２ｂから読み出されるデータＳＢとライトデータＷＤとを比較する第２比較を先に行い、不一致の場合に限り第１比較を行うようにすることが好ましく、こうすることで処理時間を短縮することができる。
【０１１０】
このほか、実施の形態では、ライトデータＷＤをライトアドレスＷＡと関連付けて第２不揮発メモリ１２に記憶する際に、ライトアドレスＷＡの一部（下位１３ビット）を第２不揮発メモリ１２へのアクセスアドレスとし、残る上位７ビット分のアドレスとライトデータＷＤとを第２不揮発メモリ１２（１２ａ、１２ｂ）に記憶するようにしたが、ライトアドレスＷＡの全ビットとライトデータＷＤとを関連付けて第２不揮発メモリ１２に記憶するように構成されてもよい。
【０１１１】
第２不揮発メモリ１２やバッファメモリ１３としてＦｅＲＡＭを使用したが、不揮発であり、ランダムアクセスが可能であって、書き換え制限回数が製品として必要な回数以上確保できるメモリであれば他の種類のメモリでもよい。
【図面の簡単な説明】
【０１１２】
【図１】本発明の第１の実施の形態に係る不揮発メモリシステムの構成を示すブロック図である。
【図２】ホストからのライト命令で与えられるライトアドレスＷＡ、ライトデータＷＤと、第１ＦｅＲＡＭおよび第２ＦｅＲＡＭへのアドレスおよびデータとの対応関係などを示す説明図である。
【図３】本発明の第１の実施の形態に係る不揮発メモリシステムのケース１の動作を示す説明図である。
【図４】本発明の第１の実施の形態に係る不揮発メモリシステムのケース１の動作に係るデータ変化を示す説明図である。
【図５】本発明の第１の実施の形態に係る不揮発メモリシステムのケース２の動作を示す説明図である。
【図６】本発明の第１の実施の形態に係る不揮発メモリシステムのケース２の動作に係るデータ変化を示す説明図である。
【図７】図５の続きの動作を示す説明図である。
【図８】図６の続きのデータ変化を示す説明図である。
【図９】本発明の第１の実施の形態に係る不揮発メモリシステムのケース３の動作を示す説明図である。
【図１０】本発明の第１の実施の形態に係る不揮発メモリシステムのケース３の動作に係るデータ変化を示す説明図である。
【図１１】本発明の第１の実施の形態に係る不揮発メモリシステムのケース４の動作を示す説明図である。
【図１２】本発明の第１の実施の形態に係る不揮発メモリシステムのケース４の動作に係るデータ変化を示す説明図である。
【図１３】ホストからリード命令を受けた不揮発メモリシステムの動作（第１不揮発メモリから読み出したデータをホストに出力する場合）を示す説明図である。
【図１４】ホストからリード命令を受けた不揮発メモリシステムの動作（第２不揮発メモリから読み出したデータをホストに出力する場合）を示す説明図である。
【図１５】本発明の第１の実施の形態に係る不揮発メモリシステムが行う整合処理を示す説明図である。
【図１６】本発明の第２の実施の形態に係る不揮発メモリシステムの構成を示すブロック図である。
【図１７】変換前のセクタ番号と変換後のセクタ番号とがすべて一致している場合の変換テーブルおよびアドレス変換を示す説明図である。
【図１８】セクタ２とセクタ１５とが入れ替わるようにアドレス変換される場合を示す説明図である。
【図１９】本発明の第２の実施の形態に係る不揮発メモリシステムの動作例を示す説明図である。
【図２０】図１９に示す動作におけるデータ変化を示す説明図である。
【図２１】図１９の続きの動作を示す説明図である。
【図２２】図２１の続きのデータ変化を示す説明図である。
【符号の説明】
【０１１３】
５…ホスト
１０…不揮発メモリシステム
１１…第１不揮発メモリ
１２…第２不揮発メモリ
１２ａ…第１ＦｅＲＡＭ
１２ｂ…第２ＦｅＲＡＭ
１３…バッファメモリ
１４…制御部
１４ａ…フラッシュＲＯＭ書込シーケンサ
１４ｂ…データ比較部
１４ｃ…アドレス比較部
１４ｄ…セクタ使用率レジスタ
３０…不揮発メモリシステム
３１…バッファメモリ
３２…変換テーブル
３４…制御部
３５…フラッシュＲＯＭ書込シーケンサ
３６…アドレス変換部
３６ａ…アドレス変換レジスタ
ＷＡ…ライトアドレス
ＷＤ…ライトデータ
【図１】
2008134685.tif 000003
【図２】
2008134685.tif 000004
【図３】
2008134685.tif 000005
【図４】
2008134685.tif 000006
【図５】
2008134685.tif 000007
【図６】
2008134685.tif 000008
【図７】
2008134685.tif 000009
【図８】
2008134685.tif 000010
【図９】
2008134685.tif 000011
【図１０】
2008134685.tif 000012
【図１１】
2008134685.tif 000013
【図１２】
2008134685.tif 000014
【図１３】
2008134685.tif 000015
【図１４】
2008134685.tif 000016
【図１５】
2008134685.tif 000017
【図１６】
2008134685.tif 000018
【図１７】
2008134685.tif 000019
【図１８】
2008134685.tif 000020
【図１９】
2008134685.tif 000021
【図２０】
2008134685.tif 000022
【図２１】
2008134685.tif 000023
【図２２】
2008134685.tif 000024