(57)【特許請求の範囲】
【請求項１】
複数の物理ブロックを有する不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラであって、
前記論理アドレスと前記物理ブロックのアドレスとを変換するアドレス変換テーブルと、
前記論理アドレスが入力されるとともに、前記アドレス変換テーブルを参照して、前記不揮発性メモリに対するデータの書き込み動作及び読み出し動作を制御する主制御部と、
前記不揮発性メモリの物理ブロックに格納されているデータをキャッシュ可能に構成されるとともに、前記主制御部に対して外部からデータの読み出し動作が要求されたときに、前記不揮発性メモリからデータを読み出すことなく当該データを外部に出力するための出力メモリと、
前記出力メモリにキャッシュされているキャッシュデータの読み出し回数を管理する出力テーブルを備え、
前記複数の各物理ブロックに含まれた複数の物理ページについて、前記物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設けられ、
前記主制御部には、外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を求めて、前記読み出し動作が要求されたデータに対応する読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する読み出し回数が前記キャッシュデータに対応する読み出し回数よりも多いことが判定されたときに、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられ、
前記主制御部は、前記読み出し回数テーブルを参照して、前記不揮発性メモリに対するデータの読み出し動作を制限する、
ことを特徴とするメモリーコントローラ。
【請求項２】
前記主制御部には、前記不揮発性メモリの物理ブロックへのデータの書き込み動作が要求されたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対して当該データのキャッシュを開放することを指示する出力メモリ解放指示部が設けられている請求項１に記載のメモリーコントローラ。
【請求項３】
前記出力メモリ解放指示部は、前記不揮発性メモリの互いに異なる物理ブロックの間でデータの移動が行われたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対し当該データのキャッシュを開放することを指示する請求項２に記載のメモリーコントローラ。
【請求項４】
前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択する請求項１に記載のメモリーコントローラ。
【請求項５】
前記主制御部には、外部からの論理アドレスによって指定された前記不揮発性メモリの物理ブロックからデータを読み出す読み出し動作が要求されたときに、当該物理ブロックの読み出し回数を前記読み出し回数テーブルから取得して、取得した読み出し回数と所定の閾値とを比較する回数比較部と、
前記回数比較部により、前記取得した読み出し回数が前記所定の閾値に達したことが判別されたときに、前記論理アドレスによって指定された前記不揮発性メモリの物理ブロックとは異なる別の物理ブロックに対し、前記読み出し動作が要求されたデータを移動することを指示するデータ移動指示部とが設けられている請求項１〜４のいずれか１項に記載のメモリーコントローラ。
【請求項６】
複数の物理ブロックを有する不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラであって、
前記論理アドレスと前記物理ブロックのアドレスとを変換するアドレス変換テーブルと、
前記論理アドレスが入力されるとともに、前記アドレス変換テーブルを参照して、前記不揮発性メモリに対するデータの書き込み動作及び読み出し動作を制御する主制御部と、
前記不揮発性メモリの物理ブロックに格納されているデータをキャッシュ可能に構成されるとともに、前記主制御部に対して外部からデータの読み出し動作が要求されたときに、前記不揮発性メモリからデータを読み出すことなく当該データを外部に出力するための出力メモリと、
前記出力メモリにキャッシュされているキャッシュデータの読み出し回数を管理する出力テーブルと、
前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
前記複数の各物理ブロックに含まれた複数の物理ページについて、前記物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設けられ、
前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得し、前記読み出し動作が要求されたデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記読み出し動作が要求されたデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該読み出し動作が要求されたデータについての残許容読み出し回数を算出するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を取得し、前記キャッシュデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記キャッシュデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該キャッシュデータについての残許容読み出し回数を算出して、前記読み出し動作が要求されたデータについての残許容読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する残許容読み出し回数が前記キャッシュデータに対応する残許容読み出し回数よりも少ない場合に、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられ、
前記主制御部は、前記読み出し回数テーブルを参照して、前記不揮発性メモリに対するデータの読み出し動作を制限する、
ことを特徴とするメモリーコントローラ。
【請求項７】
前記主制御部には、前記不揮発性メモリの物理ブロックへのデータの書き込み動作が要求されたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対して当該データのキャッシュを開放することを指示する出力メモリ解放指示部が設けられている請求項６に記載のメモリーコントローラ。
【請求項８】
前記出力メモリ解放指示部は、前記不揮発性メモリの互いに異なる物理ブロックの間でデータの移動が行われたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対し当該データのキャッシュを開放することを指示する請求項７に記載のメモリーコントローラ。
【請求項９】
前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択する請求項６に記載のメモリーコントローラ。
【請求項１０】
複数の物理ブロックを有する不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラであって、
前記論理アドレスと前記物理ブロックのアドレスとを変換するアドレス変換テーブルと、
前記論理アドレスが入力されるとともに、前記アドレス変換テーブルを参照して、前記不揮発性メモリに対するデータの書き込み動作及び読み出し動作を制御する主制御部と、
前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
前記複数の各物理ブロックに含まれた複数の物理ページについて、前記物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設けられ、
前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
外部からの論理アドレスによって指定された前記不揮発性メモリの物理ブロックからデータを読み出す読み出し動作が要求されたときに、当該物理ブロックの読み出し回数を前記読み出し回数テーブルから取得するとともに、当該物理ブロックの書き換え回数を前記書き換え回数テーブルから求め、かつ、求めた書き換え回数を基に前記関数設定部から許容読み出し回数を取得して、取得した読み出し回数と取得した許容読み出し回数とを比較する回数比較部と、
前記回数比較部により、前記取得した読み出し回数が前記許容読み出し回数に達したことが判別されたときに、前記論理アドレスによって指定された前記不揮発性メモリの物理ブロックとは異なる別の物理ブロックに対し、前記読み出し動作が要求されたデータを移動することを指示するデータ移動指示部とが設けられ、
前記主制御部は、前記読み出し回数テーブルを参照して、前記不揮発性メモリに対するデータの読み出し動作を制限する、
ことを特徴とするメモリーコントローラ。
【請求項１１】
前記不揮発性メモリの物理ブロックに格納されているデータをキャッシュ可能に構成されるとともに、前記主制御部に対して外部からデータの読み出し動作が要求されたときに、前記不揮発性メモリからデータを読み出すことなく当該データを外部に出力するための出力メモリと、
前記出力メモリにキャッシュされているキャッシュデータの読み出し回数を管理する出力テーブルを備えている請求項１０に記載のメモリーコントローラ。
【請求項１２】
前記主制御部には、前記不揮発性メモリの物理ブロックへのデータの書き込み動作が要求されたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対して当該データのキャッシュを開放することを指示する出力メモリ解放指示部が設けられている請求項１１に記載のメモリーコントローラ。
【請求項１３】
前記出力メモリ解放指示部は、前記不揮発性メモリの互いに異なる物理ブロックの間でデータの移動が行われたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対し当該データのキャッシュを開放することを指示する請求項１２に記載のメモリーコントローラ。
【請求項１４】
前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得し、前記読み出し動作が要求されたデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記読み出し動作が要求されたデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該読み出し動作が要求されたデータについての残許容読み出し回数を算出するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を取得し、前記キャッシュデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記キャッシュデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該キャッシュデータについての残許容読み出し回数を算出して、前記読み出し動作が要求されたデータについての残許容読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する残許容読み出し回数が前記キャッシュデータに対応する残許容読み出し回数よりも少ない場合に、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられている請求項１０に記載のメモリーコントローラ。
【請求項１５】
前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択する請求項１４に記載のメモリーコントローラ。
【請求項１６】
前記関数では、前記書き換え回数に対して前記許容読み出し回数が単調減少する請求項６、９、及び１０のいずれか１項に記載のメモリーコントローラ。
【請求項１７】
複数の物理ブロックを有する不揮発性メモリ、及び
請求項１〜１６のいずれか１項に記載のメモリーコントローラ
を備えていることを特徴とする不揮発性記憶装置。
【請求項１８】
複数の物理ブロックを有する不揮発性メモリと、前記不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラを備えた不揮発性記憶装置、及び前記不揮発性記憶装置に対して論理アドレスを指定したアクセス指示を行うホスト機器を具備する不揮発性記憶システムであって、
前記メモリーコントローラには、請求項１〜１６のいずれか１項に記載のメモリーコントローラが用いられている、
ことを特徴とする不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリの駆動制御を行うメモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システムに関する。
【背景技術】
【０００２】
近年、不揮発性記憶装置、例えばメモリーカードは、デジタルカメラや携帯電話に代表される携帯情報端末等の記憶媒体として使用されるようになってきており、その市場を拡大している。また、メモリーカードには、フラッシュメモリなどの不揮発性メモリが搭載されている。このような不揮発性メモリでは、半導体プロセスでの微細化に伴って、その容量が増加されている。また、不揮発性メモリでは、メモリセルの多値技術を用いることによって、さらなる容量増加が図られており、ビット単価を低下させて安価に入手できるようになってきている。ことに、ＮＡＮＤタイプのフラッシュメモリでは、そのビット単価が他の不揮発性メモリに比べて最も安価であるため、当該フラッシュメモリが広く普及している。しかしながら、このＮＡＮＤタイプのフラッシュメモリには、いくつかのデータ保持に係わる特性が存在しており、半導体プロセスでの微細化に伴いその特性が顕著に現れることがあった。
【０００３】
そこで、従来の不揮発性記憶装置では、例えば下記特許文献１に記載されているように、データの読み出し時にメモリセルに印加する電圧条件を調節することにより、メモリセルのリードディスターブ特性を向上させて、データ保持を高めることが提案されている。
【０００４】
また、従来の不揮発性記憶装置には、例えば下記特許文献２に記載されているように、データの読み出し時に誤り訂正符号回路を使用することによってリードディスターブによるビット誤りの進行の程度を検出するとともに、データをリフレッシュすることによってビット誤りの発生を未然に防ぐことが提案されている。
【特許文献１】特開２００２−２９８５９１公報
【特許文献２】特開２００４−３２６８６７公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが、上記のような従来の不揮発性記憶装置では、リードディスターブによるビット誤りの発生を確実に防ぐことができないという問題点があった。具体的にいえば、上記特許文献１に記載された従来の不揮発性記憶装置では、メモリセル自身のリードディスターブ特性は確かに向上可能ではあるが、リードディスターブによるビット誤りが発生するのを確実に防ぐことはできなかった。また、上記特許文献２に記載された従来の不揮発性記憶装置では、リードディスターブによるビット誤りの進行の程度を検出するために、データの読み出し動作を行って誤り訂正符号回路を用いているが、このデータの読み出し動作によって、リードディスターブの原因になる劣化を促進して、ビット誤りを招くことがあった。
【０００６】
上記の課題に鑑み、本発明は、リードディスターブによるビット誤りの発生を確実に防ぐことができるメモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、本発明にかかるメモリーコントローラは、複数の物理ブロックを有する不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラであって、
前記論理アドレスと前記物理ブロックのアドレスとを変換するアドレス変換テーブルと、
前記論理アドレスが入力されるとともに、前記アドレス変換テーブルを参照して、前記不揮発性メモリに対するデータの書き込み動作及び読み出し動作を制御する主制御部を備え、
前記複数の各物理ブロックに含まれた複数の物理ページについて、前記物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設けられ、
前記主制御部は、前記読み出し回数テーブルを参照して、前記不揮発性メモリに対するデータの読み出し動作を制限することを特徴とするものである。
【０００８】
上記のように構成されたメモリーコントローラでは、不揮発性メモリの各物理ブロックに含まれた物理ページについて、物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルが設置されるとともに、当該読み出し回数テーブルを参照して、データの読み出し動作を制限する主制御部が設けられている。これにより、上記従来例と異なり、リードディスターブによるビット誤りの発生を確実に防ぐことができる。
【０００９】
また、上記メモリーコントローラにおいて、前記不揮発性メモリの物理ブロックに格納されているデータをキャッシュ可能に構成されるとともに、前記主制御部に対して外部からデータの読み出し動作が要求されたときに、前記不揮発性メモリからデータを読み出すことなく当該データを外部に出力するための出力メモリと、
前記出力メモリにキャッシュされているキャッシュデータの読み出し回数を管理する出力テーブルを備えていることが好ましい。
【００１０】
この場合、出力メモリにデータをキャッシュさせることによって、そのデータの読み出し動作が外部から要求されたときに、当該データを不揮発性メモリから読み出すことなく、外部に出力することが可能となり、不揮発性メモリでのリードディスターブによる劣化を効率よく抑制することができる。
【００１１】
また、上記メモリーコントローラにおいて、前記主制御部には、前記不揮発性メモリの物理ブロックへのデータの書き込み動作が要求されたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対して当該データのキャッシュを開放することを指示する出力メモリ解放指示部が設けられてもよい。
【００１２】
この場合、出力メモリ解放指示部が出力メモリに対して不揮発性メモリに書き込まれたデータのキャッシュを開放することを指示するので、出力メモリの有効利用を容易に図ることができ、出力メモリの利用効率を高めることができる。
【００１３】
また、上記メモリーコントローラにおいて、前記出力メモリ解放指示部は、前記不揮発性メモリの互いに異なる物理ブロックの間でデータの移動が行われたときに、当該データが前記出力メモリにキャッシュされているか否かについて前記出力テーブルを参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、前記出力メモリに対し当該データのキャッシュを開放することを指示することが好ましい。
【００１４】
この場合、出力メモリの利用効率をより確実に高めることができる。
【００１５】
また、上記メモリーコントローラにおいて、前記主制御部には、外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を求めて、前記読み出し動作が要求されたデータに対応する読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する読み出し回数が前記キャッシュデータに対応する読み出し回数よりも多いことが判定されたときに、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられていることが好ましい。
【００１６】
この場合、出力メモリにキャッシュされるデータを適切に選ぶことができ、出力メモリの利便性を向上させることができる。
【００１７】
また、上記メモリーコントローラでは、前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択してもよい。
【００１８】
この場合、出力メモリにキャッシュされている複数のデータのうち、読み出し回数が最も少ないデータがキャッシュ判定部によって選択されるので、出力メモリにキャッシュされるデータをより適切に選ぶことが可能となり、出力メモリの利便性を容易に向上させることができる。
【００１９】
また、上記メモリーコントローラにおいて、前記主制御部には、外部からの論理アドレスによって指定された前記不揮発性メモリの物理ブロックからデータを読み出す読み出し動作が要求されたときに、当該物理ブロックの読み出し回数を前記読み出し回数テーブルから取得して、取得した読み出し回数と所定の閾値とを比較する回数比較部と、
前記回数比較部により、前記取得した読み出し回数が前記所定の閾値に達したことが判別されたときに、前記論理アドレスによって指定された前記不揮発性メモリの物理ブロックとは異なる別の物理ブロックに対し、前記読み出し動作が要求されたデータを移動することを指示するデータ移動指示部とが設けられていることが好ましい。
【００２０】
この場合、不揮発性メモリでのデータの保持性が低下するのを防止しつつ、リードディスターブによるビット誤りの発生を確実に防ぐことができる。
【００２１】
また、上記メモリーコントローラにおいて、前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
外部からデータの読み出し動作が要求されたときに、前記読み出し回数テーブルから前記読み出し動作が要求されたデータに対応する読み出し回数を取得し、前記読み出し動作が要求されたデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記読み出し動作が要求されたデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該読み出し動作が要求されたデータについての残許容読み出し回数を算出するとともに、前記出力テーブル及び前記読み出し回数テーブルを参照することにより、前記出力メモリにキャッシュされているキャッシュデータに対応する読み出し回数を取得し、前記キャッシュデータに対応する書き換え回数を前記書き換え回数テーブルから取得し、かつ、前記キャッシュデータに対応する許容読み出し回数を、取得した書き換え回数を基に前記関数設定部から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該キャッシュデータについての残許容読み出し回数を算出して、前記読み出し動作が要求されたデータについての残許容読み出し回数との比較を行って、データキャッシュの要否を判定するキャッシュ判定部と、
前記キャッシュ判定部により、前記読み出し動作が要求されたデータに対応する残許容読み出し回数が前記キャッシュデータに対応する残許容読み出し回数よりも少ない場合に、前記読み出し動作が要求されたデータを前記出力メモリにキャッシュさせるキャッシュ指示部が設けられていることが好ましい。
【００２２】
この場合、出力メモリにキャッシュされるデータを適切に選ぶことができ、出力メモリの利便性を向上させることができる。また、キャッシュ判定部が、読み出し動作が要求されたデータ及びキャッシュデータにそれぞれ対応する残許容読み出し回数どうしを比較しているので、不揮発性メモリのリードディスターブストレスの程度に応じて、適切なキャッシュデータの選択を行うことができ、リードディスターブによるビット誤りの発生をより確実に防ぐことができる。
【００２３】
また、上記メモリーコントローラにおいて、前記出力メモリに複数のキャッシュデータが存在している場合において、前記キャッシュ判定部は、前記複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択してもよい。
【００２４】
この場合、出力メモリにキャッシュされている複数のデータのうち、読み出し回数が最も少ないデータがキャッシュ判定部によって選択されるので、出力メモリにキャッシュされるデータをより適切に選ぶことが可能となり、出力メモリの利便性を容易に向上させることができる。
【００２５】
また、上記メモリーコントローラにおいて、前記物理ブロックの消去回数を、対応する物理ブロックの書き換え回数として記録する書き換え回数テーブルを備え、
前記主制御部には、前記不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部と、
外部からの論理アドレスによって指定された前記不揮発性メモリの物理ブロックからデータを読み出す読み出し動作が要求されたときに、当該物理ブロックの読み出し回数を前記読み出し回数テーブルから取得するとともに、当該物理ブロックの書き換え回数を前記書き換え回数テーブルから求め、かつ、求めた書き換え回数を基に前記関数設定部から許容読み出し回数を取得して、取得した読み出し回数と取得した許容読み出し回数とを比較する回数比較部と、
前記回数比較部により、前記取得した読み出し回数が前記許容読み出し回数に達したことが判別されたときに、前記論理アドレスによって指定された前記不揮発性メモリの物理ブロックとは異なる別の物理ブロックに対し、前記読み出し動作が要求されたデータを移動することを指示するデータ移動指示部とが設けられていることが好ましい。
【００２６】
この場合、不揮発性メモリでのデータの保持性が低下するのを防止しつつ、リードディスターブによるビット誤りの発生をより確実に防ぐことができる。
【００２７】
また、上記メモリーコントローラにおいて、前記関数では、前記書き換え回数に対して前記許容読み出し回数が単調減少してもよい。
【００２８】
この場合、上記不揮発性メモリの読み出し及び書き込み特性に応じたより適切な関数が使用されることとなり、上記キャッシュ判定部及びデータコピー移動部での各処理動作をより適切に行わせることができる。
【００２９】
また、本発明の不揮発性記憶装置は、複数の物理ブロックを有する不揮発性メモリ、及び
上記いずれかのメモリーコントローラを備えていることを特徴とするものである。
【００３０】
また、本発明の不揮発性記憶システムは、複数の物理ブロックを有する不揮発性メモリと、前記不揮発性メモリに対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うメモリーコントローラを備えた不揮発性記憶装置、及び前記不揮発性記憶装置に対して論理アドレスを指定したアクセス指示を行うホスト機器を具備する不揮発性記憶システムであって、
前記メモリーコントローラには、上記いずれかのメモリーコントローラが用いられていることを特徴とするものである。
【００３１】
上記のように構成された不揮発性記憶装置及び不揮発性記憶システムでは、リードディスターブによるビット誤りの発生を確実に防ぐことができるメモリーコントローラが用いられているので、信頼性の高い不揮発性記憶装置及び不揮発性記憶システムを容易に構成することができる。
【発明の効果】
【００３２】
本発明によれば、リードディスターブによるビット誤りの発生を確実に防ぐことができるメモリーコントローラ、及びこれを用いた不揮発性記憶装置並びに不揮発性記憶システムを提供することが可能となる。
【発明を実施するための最良の形態】
【００３３】
以下、本発明のメモリーコントローラ、不揮発性記憶装置、及び不揮発性記憶システムの好ましい実施形態について、図面を参照しながら説明する。なお、以下の説明では、本発明をメモリーカードに適用した場合を例示して説明する。
【００３４】
［第１の実施形態］
［不揮発性記憶システムの構成］
図１は、本発明の第１の実施形態にかかるメモリーコントローラを使用したメモリーカード及び不揮発性記憶システムの要部構成を示すブロック図である。図１において、本実施形態の不揮発性記憶システム５０には、不揮発性記憶装置としてのメモリーカード１と、このメモリーカード１が着脱可能に接続されるとともに、メモリーカード１に対して論理アドレスを指定したアクセス指示を行うホスト機器５１とが設けられている。そして、不揮発性記憶システム５０では、これらメモリーカード１とホスト機器５１との間で双方向のデータ転送が行えるように構成されている。なお、不揮発性記憶システム５０は、デジタルカメラやパーソナルコンピュータ等に組み込まれて、その内部でデータを記憶する記憶システムを構築するようになっている。
【００３５】
メモリーカード１は、本発明のメモリーコントローラを用いて構成されたコントローラ２と、コントローラ２によってデータの書き込み制御及び読み出し制御が行われる不揮発性メモリ３とを備えている。具体的にいえば、不揮発性メモリ３には、例えばＮＡＮＤタイプのフラッシュメモリが用いられており、その書き換え回数が１０００００回程度に制限されている。また、不揮発性メモリ３には、後に詳述するように、複数個の物理ブロック１４が含まれている。
【００３６】
コントローラ２は、不揮発性メモリ３に対し、外部からの論理アドレスを指定したデータの書き込み及び読み出しを行うように構成されている。すなわち、コントローラ２は、メモリーカード１の外部に設けられたホスト機器５１から論理アドレスを指定した書き込み要求とともに転送されてきたデータを不揮発性メモリ３に書き込んだり、ホスト機器５１から論理アドレスを指定した読み出し要求に応じて、データを不揮発性メモリ３から読み出して当該ホスト機器５１に転送したりする。
【００３７】
また、コントローラ２は、不揮発性メモリ３のデータ信頼性を向上させるための管理や制御を行うよう構成されている。すなわち、コントローラ２は、主制御部４と、ホスト機器５１側及び不揮発性メモリ３側にそれぞれ設けられたインターフェースとしてのホストＩ／Ｆ ５及びメモリＩ／Ｆ ７と、これらのホストＩ／Ｆ ５とメモリＩ／Ｆ ７との間に設けられたバッファ６及び誤り検出訂正回路部（以下、“ＥＣＣ”と略記する。）８を備えている。主制御部４には、ＣＰＵやＤＳＰなどが用いられており、ホスト機器５１から上記書き込み要求及び読み出し要求が入力されるようになっている。
【００３８】
そして、コントローラ２では、主制御部４に書き込み要求が入力されると、ホスト機器５１からのデータはホストＩ／Ｆ ５、バッファ６、及びメモリＩ／Ｆ ７を順次経由して不揮発性メモリ３へと転送されて、書き込み動作が行われる。また、このデータの書き込み動作の際には、ＥＣＣ ８は当該データに誤り訂正用の符号を付加する。一方、主制御部４に読み出し要求が入力されて、読み出し動作が不揮発性メモリ３で行われると、その不揮発性メモリ３からのデータはメモリＩ／Ｆ ７、バッファ６、及びホストＩ／Ｆ ５を順次経由してホスト機器５１へと転送される。また、このデータの読み出し動作の際には、ＥＣＣ ８は付加した誤り訂正用の符号を使用して、当該データの誤りを訂正する。
【００３９】
また、コントローラ２は、アドレス変換テーブル９、書き換え回数テーブル１０、及び読み出し回数テーブル１１を備えている。さらに、コントローラ２には、不揮発性メモリ３の物理ブロック１４に格納されているデータをキャッシュ可能に構成された出力メモリとしてのキャッシュメモリ１２と、キャッシュメモリ１２にキャッシュされているキャッシュデータの読み出し回数などの情報を管理する出力テーブルとしてのキャッシュテーブル１３とが設けられており、主制御部４に対してホスト機器５１からデータの読み出し動作が要求されたときに、不揮発性メモリ３からデータを読み出すことなく、当該データをキャッシュメモリ１２からホスト機器５１に出力可能に構成されている。また、キャッシュメモリ１２には、複数、例えば０〜１０２３のページ番号が割り当てられた１０２４個のページが含まれている。また、各ページは、例えば２Ｋバイトのデータ領域を有している。
【００４０】
そして、コントローラ２では、主制御部４がアドレス変換テーブル９、書き換え回数テーブル１０、読み出し回数テーブル１１、及びキャッシュテーブル１３を適宜参照することにより、コントローラ２の各部の駆動制御を行うようになっている。さらに、コントローラ２では、主制御部４が読み出し回数テーブル１１を参照して、不揮発性メモリ３からのデータの読み出し動作を制限するようになっており、不揮発性メモリ３にリードディスターブによるビット誤りの発生を確実に防止できるように構成されている（詳細は後述。）。
【００４１】
ここで、図２を参照して、主制御部４について具体的に説明する。
【００４２】
図２は、図１に示した主制御部の具体的な機能ブロックを示すブロック図である。
【００４３】
主制御部４には、回数比較部４０、データ移動指示部４１、及びキャッシュ制御部４２が機能的に設けられている。また、主制御部４には、所定の閾値としての規定回数が予め設定されて、記憶する上限回数記憶部４３が設置されている。回数比較部４０は、ホスト機器５１からの論理アドレスによって指定された不揮発性メモリ３の物理ブロック１４からデータを読み出す読み出し動作が要求されたときに、当該物理ブロック１４の読み出し回数を読み出し回数テーブル１１から取得する。そして、回数比較部４０は、取得した読み出し回数と、上限回数記憶部４３に記憶されている規定回数との比較を行い、その比較結果をデータ移動指示部４１に通知するようになっている。また、上記規定回数は、不揮発性メモリ３の物理ブロック１４において、リードディスターブによるビット誤りを発生させない、読み出し動作の上限読み出し回数である。
【００４４】
データ移動指示部４１は、回数比較部４０からの比較結果により、読み出し動作が要求されたデータの読み出し回数が上記規定回数に達したことが判別されたときに、ホスト機器５１によって指定された論理アドレスとは相異なる論理アドレスで指定される、不揮発性メモリ３の別の物理ブロック１４に対し、当該データを移動することを指示するようになっている。これにより、不揮発性メモリ３では、２つの物理ブロック１４の間で読み出し動作が要求されたデータの移動処理が行われて、当該データの移動処理が完了される。
【００４５】
キャッシュ制御部４２は、キャッシュメモリ１２でのデータの書き込み制御及び読み出し制御を行うものであり、キャッシュ制御部４２には、キャッシュ判定部４２ａ、キャッシュ指示部４２ｂ、及びキャッシュ解放指示部４２ｃが設けられている。キャッシュ判定部４２ａは、ホスト機器５１からデータの読み出し動作が要求されたときに、キャッシュテーブル１３を参照することにより、キャッシュメモリ１２にデータキャッシュ可能なページが存在するか否かについて判定して、その判定結果をキャッシュ指示部４２ｂに通知する。
【００４６】
また、キャッシュ判定部４２ａは、キャッシュメモリ１２にデータキャッシュ可能なページが存在しないと判定したときには、読み出し動作が要求されたデータに対応する読み出し回数（すなわち、当該データが書き込まれている物理ブロック１４の読み出し回数）を読み出し回数テーブル１１から取得する。さらに、キャッシュ判定部４２ａは、読み出し回数テーブル１１及びキャッシュテーブル１３を参照することにより、キャッシュメモリ１２にキャッシュされているキャッシュデータに対応する読み出し回数（つまり、当該キャッシュデータと同じデータが書き込まれている不揮発性メモリ３の物理ブロック１４の読み出し回数）を求める。そして、キャッシュ判定部４２ａは、読み出し動作が要求されたデータに対応する読み出し回数と、キャッシュデータに対応する読み出し回数との比較を行って、データキャッシュの要否を判定して、その判定結果をキャッシュ指示部４２ｂに通知するようになっている。
【００４７】
また、キャッシュ判定部４２ａは、キャッシュメモリ１２に複数のキャッシュデータが存在している場合には、複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択するように構成されている。
【００４８】
キャッシュ指示部４２ｂは、キャッシュ判定部４２ａから、キャッシュメモリ１２にデータキャッシュ可能なページが存在していること、または読み出し動作が要求されたデータに対応する読み出し回数がキャッシュデータに対応する読み出し回数よりも多いことが通知されたときに、読み出し動作が要求されたデータをキャッシュメモリ１２にキャッシュさせるようになっている。
【００４９】
キャッシュ解放指示部４２ｃは、出力メモリ解放指示部を構成するものであり、ホスト機器５１から不揮発性メモリ３へ論理アドレスを指定してデータの書き込み動作が要求されたときに、当該データがキャッシュメモリ１２にキャッシュされているか否かについて、キャッシュテーブル１３を参照することにより判別する。さらに、キャッシュ解放指示部４２ｃは、データがキャッシュされていることを判別した場合には、キャッシュメモリ１２に対して当該データのキャッシュを開放することを指示するようになっている。
【００５０】
また、キャッシュ解放指示部４２ｃは、不揮発性メモリ３の互いに異なる物理ブロック１４の間でデータの移動が行われたときでも、当該データがキャッシュメモリ１２にキャッシュされているか否かについて、キャッシュテーブル１３を参照することにより判別し、かつ、当該データがキャッシュされていることを判別した場合には、キャッシュメモリ１２に対し当該データのキャッシュを開放することを指示するようになっている。
【００５１】
図１に戻って、不揮発性メモリ３は、例えばブロック番号０〜４０９５の４０９６個の物理ブロック１４を有している。各物理ブロック１４は、例えば２５６Ｋバイトのデータ領域と、２Ｋバイトの管理領域とを備えている。また、各物理ブロック１４では、ホスト機器５１からのデータがデータ領域に書き込まれ、誤り訂正用の符号などが管理領域に書き込まれる。さらに、物理ブロック１４は、不揮発性メモリ３のデータの消去単位であり、不揮発性メモリ３では、データを書き換える際には消去単位である物理ブロック１４単位でデータの書き換えが行われる。
【００５２】
次に、物理ブロック１４について、その構成を示す図３を参照して具体的に説明する。
【００５３】
図３に例示するように、物理ブロック１４には、ページ番号０〜１２７の１２８個の物理ページ１４ａが設けられている。各物理ページ１４ａは、例えば２Ｋバイトのデータ領域と、６４バイトの管理領域とを有している。また、この物理ページ１４ａはデータの書き込み単位でもあり、データの読み出し単位でもある。それゆえ、不揮発性メモリ３において、物理ブロック１４のデータを全て読み出した場合には、１２８回の読み出し動作が当該物理ブロック１４に対して行われたことになる。
【００５４】
次に、図４〜図７を参照して、コントローラ４の内部に設けられたアドレス変換テーブル、書き換え回数テーブル、読み出し回数テーブル、及びキャッシュテーブルについて具体的に説明する。
【００５５】
図４は図１に示したアドレス変換テーブルの構成を示す図であり、図５は図１に示した書き換え回数テーブルの構成を示す図である。図６は図１に示した読み出し回数テーブルの構成を示す図であり、図７は図１に示したキャッシュテーブルの構成を示す図である。
【００５６】
図４に示すように、アドレス変換テーブル９には、論理ブロックの論理アドレスが書き込まれた列９ａと、物理ブロック１４のアドレスが書き込まれた列９ｂとが設けられており、このアドレス変換テーブル９は、互いに関連付けられた論理アドレス及び物理アドレスを相互に変換可能に構成されている。また、主制御部４がアドレス変換テーブル９を使用することにより、ホスト機器５１からの論理アドレスを、不揮発性メモリ３の対応する物理ブロック１４のアドレスに変換し、その変換したアドレスを用いてメモリＩ／Ｆ ７を制御することによって、不揮発性メモリ３での該当する物理ブロック１４を指定することができるようになっている。
【００５７】
図５に示すように、書き換え回数テーブル１０には、物理ブロック１４の番号が書き込まれた列１０ａと、対応する物理ブロック１４に有効なデータが書き込まれているかどうかを示すフラグが書き込まれる列１０ｂと、対応する物理ブロック１４の書き換え回数が書き込まれる列１０ｃとが設けられている。また、この列１０ｃには、対応する物理ブロック１４の消去回数が当該物理ブロック１４の書き換え回数として記録されるようになっており、書き換え回数テーブル１０は、物理ブロック１４の消去回数を物理ブロック１４単位に管理するように構成されている。
【００５８】
図６に示すように、読み出し回数テーブル１１には、物理ブロック１４の番号が書き込まれた列１１ａと、対応する物理ブロック１４の読み出し回数が書き込まれる列１１ｂとが設けられている。また、読み出し回数テーブル１１では、各物理ブロック１４に含まれた複数の物理ページ１４ａについて、物理ページ１４ａ単位での読み出し回数を、対応する物理ブロック１４の読み出し回数として列１１ｂに記録するようになっており、読み出し回数テーブル１１は、物理ページ１４ａ単位の読み出し回数を管理可能に構成されている。つまり、この読み出し回数テーブル１１では、任意の物理ブロック１４において、その先頭の物理ページ１４ａであるページ０から最終の物理ページ１４ａであるページ１２７まで順に読み出し動作が行われたとき、それら物理ページ１４ａの延べ読み出し回数である、１２８回が今回の読み出し動作における読み出し回数として当該任意の物理ブロック１４での列１１ｂの読み出し回数に加算される。
【００５９】
また、アドレス変換テーブル９、書き換え回数テーブル１０、及び読み出し回数テーブル１１には、いずれも不揮発性メモリ、好ましくは書き換え回数が十分大きいＭＲＡＭ（Magnetoresistive Random Access Memory）などが用いられている。なお、アドレス変換テーブル９と書き換え回数テーブル１０に関しては、ＳＲＡＭ（Static Random Access Memory）などの揮発性メモリで構成することも可能ではある。但し、この場合、不揮発性メモリ３にその情報を書き込んでおき、メモリーカード１に電源投入された後にアドレス変換テーブル９と書き換え回数テーブル１０を作成するために不揮発性メモリ３からデータを読み出す必要がある。一方、読み出し回数テーブル１１については、揮発性メモリで構成することは適切ではない。それというのは、読み出し回数を書き換え回数の制限の厳しい不揮発性メモリ３に書き込んでおくことはできないからである。
【００６０】
図７に示すように、キャッシュテーブル１３には、キャッシュメモリ１２内のページアドレスが書き込まれた列１３ａと、対応するページにキャッシュされているキャッシュデータが有効であるか無効であるかを示すフラグが書き込まれる列１３ｂとが設けられており、主制御部４が列１３ｂに書き込まれたフラグを参照することで対応するページにデータがキャッシュされているか、あるいはそのページが空きページで新たなデータをキャッシュすることができるかについて判別できるようになっている。
【００６１】
また、キャッシュテーブル１３には、対応するページにキャッシュされているキャッシュデータのページ単位の論理アドレスが書き込まれる列１３ｃが設けられており、主制御部４がキャッシュデータのキャッシュ元を検索できるようになっている。つまり、主制御部４が、列１３ｃに書き込まれた論理アドレスを用いることにより、キャッシュデータと同じデータが書き込まれている不揮発性メモリ３の物理ブロック１４の物理ページ１４ａを特定可能になっている。
【００６２】
また、キャッシュテーブル１３には、対応するページにキャッシュされているキャッシュデータの読み出し回数が書き込まれる列１３ｄが設けられており、そのページにデータキャッシュされた後、キャッシュメモリ１２からホスト機器５１に当該キャッシュデータが読み出された回数、つまりキャッシュヒットした回数が読み出し回数として列１３ｄに記録されている。
【００６３】
以下、上記のように構成された本実施形態でのデータの処理動作について、図１〜図１５を参照して具体的に説明する。
【００６４】
［データの読み出し動作］
まず、図８を参照して、データの読み出し動作について説明する。
【００６５】
図８は、上記メモリーカードでの読み出し動作を示すフローチャートである。
【００６６】
図８において、主制御部４に対し、ホスト機器５１から論理アドレスを指定したデータの読み出し動作が要求されると、主制御部４は、そのデータがキャッシュヒットするかどうかについて判定する（ステップＳ１）。具体的には、主制御部４は、キャッシュテーブル１３の列１３ｃを検索して、ホスト機器５１からの論理アドレスが当該列１３ｃに書き込まれているか否かを調べることにより、要求されたデータがキャッシュメモリ１２にキャッシュされているか否かについて判定する。そして、列１３ｃに該当する論理アドレスが書き込まれている場合には、さらに列１３ｂのフラグを確認し、フラグが有効である場合に主制御部４は、キャッシュヒットしたとして、列１３ａからキャッシュメモリ１２内の該当するページアドレスを求めて、その求めたページアドレスに基づいて、キャッシュメモリ１３からキャッシュデータを読み出し、ホスト機器５１に出力する（ステップＳ２）。また、このキャッシュメモリ１２からホスト機器５１へのデータ読み出し動作が完了すると、主制御部４は、キャッシュテーブル１３の対応する列１３ｄ内の読み出し回数に１を加算して、当該読み出し回数を更新し、読み出し動作を終了する。
【００６７】
一方、上記ステップＳ１において、キャッシュヒットしなかった場合、つまりミスヒットである場合には、主制御部４は、アドレス変換テーブル９を参照することにより、不揮発性メモリ３の読み出し対象の物理ブロック１４及び物理ページ１４ａを判別する。そして、主制御部４は、判別した物理ページ１４ａに基づいて、メモリＩ／Ｆ ７を制御して当該物理ページ１４ａからデータをバッファ６に読み出し、さらに、主制御部４は、ホストＩ／Ｆ ５を制御してバッファ６からホスト機器５１にデータを出力する（ステップＳ３）。
【００６８】
続いて、主制御部４は、上記ステップＳ３にてデータが読み出された物理ブロック１４に対応する読み出し回数テーブル１１のカウンタをインクリメントする（ステップＳ４）。つまり、主制御部４は、データが読み出された物理ページ１４ａのページ数分の回数を、対応する列１１ｂの読み出し回数に加算する。
【００６９】
次に、主制御部４では、回数比較部４０が上記ステップＳ４にて加算された後の読み出し回数と、上記規定回数との比較を行って、当該読み出し回数が規定回数に達したかどうかについて判別する（ステップＳ５）。そして、読み出し回数が規定回数に達していなければ、主制御部４は、キャッシュメモリ１２に対して、上記ステップＳ３で読み出したデータをキャッシュするかどうかを判定する読み出しキャッシュ処理を実行して（ステップＳ６）、読み出し動作を終了する。
【００７０】
一方、上記ステップＳ５において、読み出し回数が規定回数に達したことが判別されると、主制御部４は、次にそのデータの読み出し動作が行われると、その読み出し回数が規定回数を超過して、リードディスターブによるビット誤りが、対応する物理ブロック１４に生じるおそれがあると判断し、データ移動指示部４１が当該データを別の物理ブロック１４に移動させるデータ移動処理を実行して（ステップＳ７）、読み出し動作を終了する。
【００７１】
［データ移動処理］
次に、図９〜図１３を参照して、上記ステップＳ７のデータ移動処理について具体的に説明する。
【００７２】
図９は、図８に示したデータ移動処理の具体的な動作を示すフローチャートである。
【００７３】
まず、上記データ移動処理が実行される前の状態として、読み出し回数テーブル１１、書き換え回数テーブル１０、アドレス変換テーブル９、及び不揮発性メモリ３が、それぞれ図１０（ａ）、（ｂ）、（ｃ）、及び（ｄ）に示す状態である場合を例示して説明する。すなわち、不揮発性メモリ３では、図１０（ｄ）に示すように、ブロック番号０００２の物理ブロック１４に、論理ブロックのブロック番号０００５の有効なデータが書き込まれており、このブロック番号０００５が上記ステップＳ１において、ホスト機器５１から指定された論理アドレスに相当するとする。また、ブロック番号０００３の物理ブロック１４には、無効なデータが存在しているものとする。さらに、このような不揮発性メモリ３の状態に対応して、アドレス変換テーブル９では、図１０（ｃ）に示すように、ブロック番号０００５の論理ブロックに対応する物理ブロック１４として、物理ブロック１４のブロック番号０００２が記録されている。
【００７４】
また、書き換え回数テーブル１０では、図１０（ｂ）に示すように、列１０ｂに、ブロック番号０００２及び０００３の物理ブロック１４のフラグとして、有効及び無効を示すフラグがそれぞれ記録されている。また、列１０ｃには、ブロック番号０００２及び０００３の物理ブロック１４の書き換え回数として、それぞれ１００回及び１０回が記録されているとする。また、読み出し回数テーブル１１には、図１０（ａ）に示すように、ブロック番号０００２及び０００３の物理ブロック１４の読み出し回数として、１０００００００回及び１０００回がそれぞれ記録されているとする。また、上記ステップＳ５において、規定回数に到達したと判定されることによってステップＳ７のデータ移動処理が行われるが、ここでは規定回数が１０００００００回であり、ブロック番号０００２の物理ブロック１４の読み出し回数が上記規定回数に到達したことがデータ移動指示部４１で判別されているとする。
【００７５】
以上のように、ブロック番号０００２の物理ブロック１４の読み出し回数が規定回数に到達したことが判別されているので、図９のステップＳ８に示すように、データ移動指示部４１は、書き換え回数テーブル１０の列１０ｂ及び列１０ｃを参照して、無効な物理ブロック１４のうち書き換え回数の少ない物理ブロック１４を検索する。ここではブロック番号０００３の物理ブロック１４が無効であり、かつ、書き換え回数が最も少ない物理ブロック１４として検索されたとする。
【００７６】
続いて、データ移動指示部４１は、図９のステップＳ９に示すように、ステップＳ８で検索されたブロック番号０００３の物理ブロック１４をメモリＩ／Ｆ ７を制御して消去する。この結果、図１１（ｄ）に示すように、不揮発性メモリ３のブロック番号０００３の物理ブロック１４では、無効なデータが消去されている。尚、図１１（ａ）〜（ｃ）にそれぞれ示すように、読み出し回数テーブル１１、書き換え回数テーブル１０、及びアドレス変換テーブル９では、図１０（ａ）〜（ｃ）に示した状態から変更されていない。
【００７７】
次に、データ移動指示部４１は、図９のステップＳ１０に示すように、アドレス変換テーブル９から旧データとなる移動元の論理アドレスのデータが存在する物理ブロック１４のアドレスを取得する。この処理は上記ステップＳ３での物理ブロック１４の読み出し処理と同じアドレスが用いられる。具体的には、アドレス変換テーブル９のブロック番号０００５の論理ブロックに対応する物理ブロック１４のブロック番号が０００２と記録されているので、移動元の物理ブロック１４のアドレスとして０００２が取得される。
【００７８】
続いて、データ移動指示部４１は、図９のステップＳ１１に示すように、変数Ｘに先頭ページを設定し、さらにステップＳ１０で取得した移動元である旧データの存在する物理ブロック１４のページＸのデータをバッファ６に読み出させて、ステップＳ８で検索した移動先となる消去済みの物理ブロック１４のページＸに、バッファ６に読み出させたデータを書き込ませる（ステップＳ１２）。
【００７９】
次に、データ移動指示部４１は、図９のステップＳ１３に示すように、変数Ｘが最終ページを示しているか否かについて判定して、最終ページでなければ、変数Ｘをインクリメントして（ステップＳ１４）、ステップＳ１２に戻ってページの移動処理を繰り返す。
【００８０】
一方、上記ステップＳ１３において、最終ページであることが判別されると、データ移動指示部４１はデータの移動処理が終了したと判断する。この結果、図１２（ｄ）に示すように、不揮発性メモリ３のブロック番号０００３の物理ブロック１４では、ブロック番号０００５の論理ブロックのデータが移動されて保持されている。尚、図１２（ａ）〜（ｃ）にそれぞれ示すように、読み出し回数テーブル１１、書き換え回数テーブル１０、及びアドレス変換テーブル９では、図１０（ａ）〜（ｃ）に示した状態から変更されていない。
【００８１】
続いて、主制御部４は、図９のステップＳ１５に示すように、書き換え回数テーブル１０を更新する。その後、主制御部４は、アドレス変換テーブル９を更新し（ステップＳ１６）、さらに、読み出し回数テーブル１１のブロック番号０００３の物理ブロック１４に対応するカウンタをリセットさせる（ステップＳ１７）。この結果、書き換え回数テーブル１０では、図１３（ｂ）に示すように、消去が行われたブロック番号０００３の物理ブロック１４に対応する列１０ｃの書き換え回数がインクリメントされて１１回に変更されている。また、書き換え回数テーブル１０の列１０ｂでは、ブロック番号０００２及び０００３の物理ブロック１４のフラグがそれぞれ無効及び有効に更新されている。これにより、不揮発性メモリ３では、ブロック番号０００２の物理ブロック１４にもブロック番号０００５の論理ブロックのデータ（旧データ）が存在しているが、メモリーカード１では、以降無効なデータの存在する物理ブロック１４として認識される。
【００８２】
また、アドレス変換テーブル９では、ブロック番号０００５の論理ブロックに対応する物理ブロック１４がブロック番号０００３に更新される。また、読み出し回数テーブル１１では、消去が行われたブロック番号０００３の物理ブロック１４の読み出し回数が０回にリセットされる。
【００８３】
［読み出しキャッシュ処理］
続いて、図１４を参照して、上記ステップＳ６の読み出しキャッシュ処理について具体的に説明する。
【００８４】
図１４は、図８に示した読み出しキャッシュ処理の具体的な動作を示すフローチャートである。
【００８５】
図１４のステップＳ１８に示すように、キャッシュ判定部４２ａは、キャッシュテーブル１３の列１３ｂを参照して、キャッシュメモリ１２内に無効なページが存在しているか否かについて判定する。具体的には、キャッシュ判定部４２ａは、無効なページが存在していると判定すると、キャッシュメモリ１２に空きありと判断して、その判定結果をキャッシュ指示部４２ｂに通知する。そして、キャッシュメモリ１２に空きがあることがキャッシュ判定部４２ａから通知されると、キャッシュ指示部４２ｂは、キャッシュメモリ１２にデータをキャッシュさせて、キャッシュテーブル１３に登録する（ステップＳ１９）。
【００８６】
具体的には、キャッシュ指示部４２ｂは、上記ステップＳ３で読み出されたデータを、ステップＳ１８で検索された無効なページに対しコピーすることでデータキャッシュさせる。さらに、キャッシュ指示部４２ｂは、データキャッシュさせたキャッシュメモリ１２のページアドレスを基に、キャッシュテーブル１３の対応する列１３ｂのフラグを有効に更新させ、対応する列１３ｃの論理ページにページ単位の論理アドレスを記録させ、対応する列１３ｄの読み出し回数に０回を記録させる。
【００８７】
一方、上記ステップＳ１８において、無効なページが存在していないことが判定されると、キャッシュ判定部４２ａはキャッシュメモリ１２に空きなしと判断する。さらに、キャッシュ判定部４２ａは、ステップＳ３で読み出されたデータが存在する物理ブロック１４の読み出し回数を読み出し回数テーブル１１から取得する（ステップＳ２０）。
【００８８】
続いて、キャッシュ判定部４２ａは、キャッシュテーブル１３の列１３ｄを参照して、読み出し回数が最も少ない、つまりキャッシュヒット回数が最も少ないキャッシュメモリ１２内のページを検索し、かつ、アドレス変換テーブル９を参照することにより、検索したページに対応する不揮発性メモリ３の物理ブロック１４のアドレスを求める（ステップＳ２１）。その後、キャッシュ判定部４２ａは、ステップＳ２１で求めたアドレスを用いることにより、検索したページにキャッシュされているキャッシュデータに対応する不揮発性メモリ３の物理ブロック１４の読み出し回数を読み出し回数テーブル１１から取得する（ステップＳ２２）。
【００８９】
次に、キャッシュ判定部４２ａは、ステップＳ２０で取得したデータに対応する読み出し回数と、ステップＳ２２で取得したキャッシュデータに対応する読み出し回数との比較を行い（ステップＳ２３）、キャッシュデータに対応する読み出し回数の方が多ければ、キャッシュ判定部４２ａは、ステップＳ３で読み出されたデータをキャッシュする必要がないと判断して、読み出しキャッシュ処理を終了する。
【００９０】
一方、ステップＳ２３において、キャッシュデータに対応する読み出し回数の方が少なければ、キャッシュ判定部４２ａは、ステップＳ３で読み出されたデータをキャッシュした方がよいと判定し、その判定結果をキャッシュ指示部４２ｂに通知する。これにより、上記ステップＳ１９の処理が、キャッシュ指示部４２ｂにより実行される。但し、このステップＳ１９では、キャッシュ指示部４２ｂはステップＳ２１で検索された検索ページに対して、ステップＳ３で読み出されたデータをコピーすることでデータキャッシュさせる。さらに、キャッシュ指示部４２ｂは、データキャッシュさせた上記検索ページについてのキャッシュメモリ１２のページアドレスを基に、キャッシュテーブル１３の対応する列１３ｂのフラグを有効に更新させ、対応する列１３ｃの論理ページにページ単位の論理アドレスを記録させ、対応する列１３ｄの読み出し回数に０回を記録させる。
【００９１】
以上のようにデータをキャッシュするかどうかの判定処理は、キャッシュしようとしているページの不揮発性メモリ３での物理ブロック１４単位での読み出し回数(ステップＳ２０にて取得)と、キャッシュされているページのキャッシュ元である不揮発性メモリ３での物理ブロック１４単位での読み出し回数（ステップＳ２２）を用いて、実行される。
【００９２】
［データの書き込み動作］
次に、図１５を参照して、データの書き込み動作について具体的に説明する。
【００９３】
図１５は、上記メモリーカードでの書き込み動作を示すフローチャートである。
【００９４】
図１５において、主制御部４に対し、ホスト機器５１から論理アドレスを指定したデータの書き込み動作が要求されると、主制御部４は、書き換え回数テーブル１０の列１０ｂ及び列１０ｃを参照して、無効な物理ブロック１４のうち、書き換え回数の少ない物理ブロック１４を検索する（ステップＳ２４）。その後、主制御部４は、メモリＩ／Ｆ ７を制御することにより、ステップＳ２４で検索した物理ブロック１４に書き込まれているデータを消去する（ステップＳ２５）。
【００９５】
次に、主制御部４は、ステップＳ２５でデータ消去を施した物理ブロック１４に対して、ホスト機器５１からホストＩ／Ｆ ５を経由してバッファ６に転送されているデータを書き込み（ステップＳ２６）、さらには、主制御部４は、当該物理ブロック１４に対応する、書き換え回数テーブル１０の列１０ｂのフラグを有効に変更するとともに、列１０ｃの書き換え回数をインクリメントして更新する（ステップＳ２７）。
【００９６】
続いて、主制御部４は、ステップＳ２６でデータを書き込んだ物理ブロック１４に関して、アドレス変換テーブル９を更新し（ステップＳ２８）、さらには、主制御部４は、読み出し回数テーブル１１の当該物理ブロック１４に対応する列１１ｂの読み出し回数を０回に変更する（ステップＳ２９）。
【００９７】
その後、主制御部４では、キャッシュ解放指示部４２ｃがステップＳ２６で書き込まれたデータ（つまり、今回書き込み動作が要求されたデータ）がキャッシュメモリ１２にキャッシュデータとして保持されているか否かについて判別し、かつ、キャッシュメモリ１２に保持されているときには、そのキャッシュデータを解放するキャッシュ解放処理を実行する（ステップＳ３０）。具体的には、キャッシュ解放指示部４２ｃは、キャッシュテーブル１３の列１３ｃを参照することにより、上記データに含まれる論理ページが存在するか否かについて検索し、存在している場合には、そのページの列１３ｂのフラグを無効に変更する。これはステップＳ２６でのデータの書き込み処理によって、ステップＳ２９で読み出し回数テーブル１１の読み出し回数が０回にリセットされるデータについては、リードディスターブによるビット誤りを回避するために、キャッシュメモリ１２にデータをキャッシュする必要がないからである。つまり、本実施形態では、キャッシュ解放指示部４２ｃが書き込まれたデータに対応するキャッシュを必ず解放するようになっている。これにより、キャッシュメモリ１２の有効利用を容易に図ることができ、当該キャッシュメモリ１２の利用効率を高めることができる。
【００９８】
また、このキャッシュ解放処理は、ホスト機器５１から書き込み動作が要求されたデータが物理ブロック１４の容量、２５６Ｋバイトよりも小さく、データを書き換えるためにホスト機器５１からのデータ以外のデータをメモリーカード１内で巻き込んで移動による書き込みの場合も同様である。つまり、本実施形態において、キャッシュ解放処理の対象となるデータは、メモリーカード１外部のホスト機器５１からのデータだけでなく、不揮発性メモリ３の複数の物理ブロック１４の間でのデータ移動されるデータを含んだものであり、不揮発性メモリ３の物理ブロックに１４に対して書き込みが行われた全てのデータについて、キャッシュ解放を実施できるか否かついて判別される。このように、本実施形態では、互いに異なる物理ブロック１４の間でデータ移動が行われたときも、キャッシュ解放処理を実行しているので、キャッシュメモリ１２の利用効率をより確実に高めることができる。
【００９９】
以上のように、本実施形態のコントローラ（メモリーコントローラ）２では、ホスト機器（外部）５１からの論理アドレスによって指定された不揮発性メモリ３の物理ブロック１４からデータを読み出す読み出し動作が要求されたときに、回数比較部４０が当該物理ブロック１４の読み出し回数を読み出し回数テーブル１１から取得して、取得した読み出し回数と上限回数記憶部４３内の規定回数（所定の閾値）とを比較している。また、取得した読み出し回数が規定回数に達したことが判別されたときに、データ移動指示部４１が、論理アドレスによって指定された不揮発性メモリ３の物理ブロック１４とは異なる別の物理ブロック１４に対し、読み出し動作が要求されたデータを移動することを指示している。これにより、本実施形態のコントローラ２では、不揮発性メモリ３にＮＡＮＤタイプのフラッシュメモリが用いられたときでも、上記従来例と異なり、リードディスターブによるビット誤りの発生を確実に防ぐことができる。また、このようにリードディスターブによるビット誤りの発生を確実に防ぐことができるコントローラ２が用いられているので、信頼性の高いメモリーカード（不揮発性記憶装置）１及び不揮発性記憶システム５０を容易に構成することができる。
【０１００】
また、本実施形態では、キャッシュ判定部４２ａがステップＳ２３に示した読み出し回数の比較を行うとともに、読み出し動作が要求されたデータに対応する読み出し回数がキャッシュメモリ（出力メモリ）１２内のキャッシュデータに対応する読み出し回数よりも多いことが判定されたときに、キャッシュ指示部４２ｂが読み出し動作が要求されたデータをキャッシュメモリ１２にキャッシュさせている。これにより、本実施形態では、キャッシュメモリ１２にキャッシュされるデータを適切に選ぶことができ、キャッシュメモリ１２の利便性（データキャッシュ機能）を向上させることができる。さらに、本実施形態では、ステップＳ２１に示したように、キャッシュ判定部４２ａが複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択し検索しているので、キャッシュメモリ１２にキャッシュされるデータをより適切に選ぶことが可能となり、キャッシュメモリ１２の利便性を容易に向上させることができる。
【０１０１】
［第２の実施形態］
図１６は、本発明の第２の実施形態にかかるメモリーコントローラの主制御部の具体的な機能ブロックを示すブロック図である。図において、本実施形態と上記第１の実施形態との主な相違点は、上限回数記憶部に代えて、不揮発性メモリにおける、書き換え回数と許容読み出し回数との関係を示す関数が設定される関数設定部を主制御部に設けるとともに、キャッシュ判定部が、関数設定部に設定された関数を用いて、データキャッシュの要否を判定する点である。なお、上記第１の実施形態と共通する要素については、同じ符号を付して、その重複した説明を省略する。
【０１０２】
すなわち、図１６に示すように、本実施形態の主制御部４には、関数設定部４４が設けられており、不揮発性メモリ３における、書き換え回数と許容読み出し回数との関係を示す関数が設定されるようになっている。また、キャッシュ制御部４２には、第１の実施形態のキャッシュ判定部４２の機能が付与されるとともに、関数設定部４４に設定されている関数を用いて、データキャッシュの要否を判定するキャッシュ判定部４２ａ’とが設けられている。
【０１０３】
関数設定部４４には、図１７に例示するように、書き換え回数に対して許容読み出し回数が単調減少する直線６０で規定される関数が設定されている。この関数は、不揮発性メモリ３の物理ブロック１４単位での書き換え回数に対する、不揮発性メモリ３の物理ページ１４ａ単位でのリードディスターブストレスに対する耐性に応じて定められたものであり、回数比較部４０での比較処理に用いられるようになっており、この処理結果を反映したデータ移動指示部４１での処理動作をより適切に行わせることができるようになっている。また、この関数は、キャッシュ判定部４２ａ’での処理動作にも使用されるようになっており、この判定結果を反映した読み出しキャッシュ処理をより適切に行わせることができるようになっている。
【０１０４】
キャッシュ判定部４２ａ’は、ホスト機器５１からデータの読み出し動作が要求されたときに、キャッシュテーブル１３を参照することにより、キャッシュメモリ１２にデータキャッシュ可能なページが存在するか否かについて判定して、その判定結果をキャッシュ指示部４２ｂに通知する。
【０１０５】
また、キャッシュ判定部４２ａ’は、キャッシュメモリ１２にデータキャッシュ可能なページが存在しないと判定したときには、読み出し回数テーブル１１から読み出し動作が要求されたデータに対応する読み出し回数を取得する。また、キャッシュ判定部４２ａ’は、当該読み出し動作が要求されたデータに対応する書き換え回数を書き換え回数テーブル１０から取得し、かつ、当該読み出し動作が要求されたデータに対応する許容読み出し回数を、取得した書き換え回数を基に関数設定部４４から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該読み出し動作が要求されたデータについての残許容読み出し回数を算出する。
【０１０６】
さらに、キャッシュ判定部４２ａ’は、読み出し回数テーブル１１及びキャッシュテーブル１３を参照することにより、キャッシュメモリ１２にキャッシュされているキャッシュデータに対応する読み出し回数を取得する。また、キャッシュ判定部４２ａ’は、当該キャッシュデータに対応する書き換え回数を書き換え回数テーブル１０から取得し、かつ、当該キャッシュデータに対応する許容読み出し回数を、取得した書き換え回数を基に関数設定部４４から求め、求めた許容読み出し回数から取得した読み出し回数を引き算することにより、当該キャッシュデータについての残許容読み出し回数を算出する。そして、キャッシュ判定部４２ａ’は、読み出し動作が要求されたデータ及びキャッシュデータについての残許容読み出し回数どうし比較して、データキャッシュの要否を判定して、その判定結果をキャッシュ指示部４２ｂに通知する。
【０１０７】
また、キャッシュ判定部４２ａ’は、キャッシュメモリ１２に複数のキャッシュデータが存在している場合には、複数のキャッシュデータにそれぞれ対応する複数の読み出し回数のうち、最小の読み出し回数を選択するように構成されている。
【０１０８】
キャッシュ指示部４２ｂは、キャッシュ判定部４２ａ’から、キャッシュメモリ１２にデータキャッシュ可能なページが存在していること、または読み出し動作が要求されたデータに対応する残許容読み出し回数がキャッシュデータに対応する残許容読み出し回数よりも少ないことが通知されたときに、読み出し動作が要求されたデータをキャッシュメモリ１２にキャッシュさせるようになっている。
【０１０９】
［データの読み出し動作］
以下、図１８を参照して、本実施形態でのデータの読み出し動作について説明する。
【０１１０】
図１８は、図１６に示した主制御部による読み出し動作を示すフローチャートである。
【０１１１】
図１８において、本実施形態の主制御部４では、ステップＳ１、Ｓ３、及びＳ４に示した動作が終了されると、回数比較部４０が読み出し回数テーブル１１からステップＳ４にて加算された後の物理ブロック１４の読み出し回数を取得するとともに、当該物理ブロック１４の書き換え回数を書き換え回数テーブル１０から取得する（ステップＳ３１）。その後、回数比較部４０は、ステップＳ３１で取得した書き換え回数を基に関数設定部４３から許容読み出し回数を取得する（ステップＳ３２）。具体的には、回数比較部４０は、ステップＳ３１において、例えば図１７に示す書き換え回数Ｗ１を取得し、ステップＳ３２において、当該書き換え回数Ｗ１から求められる許容読み出し回数ｒ１を取得する。
【０１１２】
続いて、回数比較部４０は、取得した読み出し回数及び許容読み出し回数の比較を行って、当該読み出し回数が許容読み出し回数に達したかどうかについて判別する（ステップＳ３３）。そして、読み出し回数が許容読み出し回数に達していなければ、主制御部４は、キャッシュメモリ１２に対して、ステップＳ３で読み出したデータをキャッシュするかどうかを判定する読み出しキャッシュ処理を実行して（ステップＳ６）、読み出し動作を終了する。
【０１１３】
一方、上記ステップＳ３３において、読み出し回数が許容読み出し回数に達したことが判別されると、主制御部４は、第１の実施形態のものと同様に、データ移動指示部４１によるデータ移動処理を実行させて、ステップＳ３で読み出したデータを元の物理ブロック１４とは異なる別の物理ブロック１４に移動させて、読み出し動作を終了する。
【０１１４】
［読み出しキャッシュ処理］
続いて、図１９を参照して、本実施形態での読み出しキャッシュ処理について具体的に説明する。
【０１１５】
図１９は、図１８に示した読み出しキャッシュ処理の具体的な動作を示すフローチャートである。
【０１１６】
図１８において、本実施形態の主制御部４では、キャッシュ判定部４２ａ’がステップＳ１８に示した動作を実行して、キャッシュメモリ１２での空き（無効なページ）の有無を判定する。そして、キャッシュメモリ１２に空きがあることを判別したときには、第１の実施形態と同様に、キャッシュ指示部４２ｂによってステップＳ１９の処理が実行され、上記ステップＳ３で読み出されたデータがキャッシュメモリ１２にキャッシュされて、キャッシュテーブル１３に登録される。
【０１１７】
一方、上記ステップＳ１８において、無効なページが存在していないことが判定されると、キャッシュ判定部４２ａ’はキャッシュメモリ１２に空きなしと判断する。さらに、キャッシュ判定部４２ａ’は、ステップＳ３で読み出されたデータが存在する物理ブロック１４の読み出し回数を読み出し回数テーブル１１から取得するとともに、当該物理ブロック１４の書き換え回数を書き換え回数テーブル１０から取得する（ステップＳ３４）。
【０１１８】
続いて、キャッシュ判定部４２ａ’は、キャッシュテーブル１３の列１３ｄを参照して、読み出し回数が最も少ない、つまりキャッシュヒット回数が最も少ないキャッシュメモリ１２内のページを検索し、かつ、アドレス変換テーブル９を参照することにより、検索したページに対応する不揮発性メモリ３の物理ブロック１４のアドレスを求める（ステップＳ２１）。
【０１１９】
次に、キャッシュ判定部４２ａ’は、ステップＳ２１で求めたアドレスを用いることにより、検索したページにキャッシュされているキャッシュデータに対応する不揮発性メモリ３の物理ブロック１４の読み出し回数を読み出し回数テーブル１１から取得する。また、キャッシュ判定部４２ａ’は、ステップＳ２１で求めたアドレスを用いることにより、検索したページにキャッシュされているキャッシュデータに対応する不揮発性メモリ３の物理ブロック１４の書き換え回数を書き換え回数テーブル１０から取得する（ステップＳ３５）。
【０１２０】
続いて、キャッシュ判定部４２ａ’は、ステップ３で読み出されたデータとステップ２１で求められたキャッシュデータの各々に関して、許容読み出し回数と読み出し回数との差分、つまり上記残許容読み出し回数を求めて比較する（ステップＳ３６）。ステップ３で読み出されたデータについての残許容読み出し回数がステップ２１で求められたキャッシュデータについての残許容読み出し回数よりも多ければ、キャッシュ判定部４２ａ’は、ステップ３で読み出されたデータをキャッシュする必要がないと判断して、読み出しキャッシュ処理を終了する。
【０１２１】
一方、ステップＳ３６において、ステップ３で読み出されたデータについての残許容読み出し回数がステップ２１で求められたキャッシュデータについての残許容読み出し回数よりも少なければ、キャッシュ判定部４２ａ’は、ステップＳ３で読み出されたデータをキャッシュした方がよいと判定して、その判定結果をキャッシュ指示部４２ｂに通知する。これにより、上記ステップＳ１９の処理が、キャッシュ指示部４２ｂにより実行される。但し、このステップＳ１９では、キャッシュ指示部４２ｂはステップＳ２１で検索された検索ページに対して、ステップＳ３で読み出されたデータをコピーすることでデータキャッシュさせる。さらに、キャッシュ指示部４２ｂは、データキャッシュさせた上記検索ページについてのキャッシュメモリ１２のページアドレスを基に、キャッシュテーブル１３の対応する列１３ｂのフラグを有効に更新させ、対応する列１３ｃの論理ページにページ単位の論理アドレスを記録させ、対応する列１３ｄの読み出し回数に０回を記録させる。
【０１２２】
具体的には、キャッシュ判定部４２ａ’は、ステップＳ３４において、ステップＳ３で読み出されたデータに対応する書き換え回数及び許容読み出し回数として、例えば図１７に示す書き換え回数Ｗ１及び当該書き換え回数Ｗ１から求められる許容読み出し回数ｒ１をそれぞれ取得する。また、キャッシュ判定部４２ａ’は、読み出し回数テーブル１１から当該データに対応する読み出し回数ｒ１’を取得し、許容読み出し回数ｒ１と読み出し回数ｒ１’との差の値を演算して、ステップＳ３で読み出されたデータについての残許容読み出し回数を求める。
【０１２３】
さらに、キャッシュ判定部４２ａ’は、ステップＳ３５において、ステップＳ２１で検索されたキャッシュデータに対応する書き換え回数及び許容読み出し回数として、例えば図１７に示す書き換え回数Ｗ２及び当該書き換え回数Ｗ２から求められる許容読み出し回数ｒ２をそれぞれ取得する。また、キャッシュ判定部４２ａ’は、読み出し回数テーブル１１から当該キャッシュデータに対応する読み出し回数ｒ２’を取得し、許容読み出し回数ｒ２と読み出し回数ｒ２’との差の値を演算して、ステップＳ２１で検索されたキャッシュデータについての残許容読み出し回数を求める。そして、キャッシュ判定部４２ａ’は、ステップＳ３６において、ステップＳ３で読み出されたデータ及びステップＳ２１で検索されたキャッシュデータについての残許容読み出し回数どうしの比較を行う。
【０１２４】
以上の構成により、本実施形態は、上記第１の実施形態のものと同様な作用効果を奏することができる。また、本実施形態では、回数比較部４０がデータの読み出し動作が要求された物理ブロック１４の書き換え回数を書き換え回数テーブル１０から求め、かつ、求めた書き換え回数を基に関数設定部４４から許容読み出し回数を取得して、当該物理ブロック１４の読み出し回数との比較を行っている。さらに、データ移動指示部４１は、読み出し回数が許容読み出し回数に達したときに、読み出し動作が要求されたデータを別の物理ブロック１４に移動させている。これにより、本実施形態では、第１の実施形態のものに比べて、リードディスターブによるビット誤りの発生をより確実に防ぐことができる。
【０１２５】
すなわち、不揮発性メモリ３では、リードディスターブによるビット誤りの発生は、書き換え回数にも大きく依存する。言い換えれば、不揮発性メモリ３では、書き換え回数の少ない物理ブロック１４の方が良好なリードディスターブ特性であり、書き換え回数が増加すればするほどリードディスターブ特性が低下していくという傾向がある。従って、ステップＳ３１〜Ｓ３３に示したように、読み出し回数と書き換え回数の両方を使用して、上記ビット誤りを防ぐために、データを移動するか否かを判断する方がより適切な判定を行うことができる。
【０１２６】
具体的には、本実施形態では、例えば書き換え回数が１００回であれば、１０００００００回の許容読み出し回数を閾値とし、書き換え回数が１００００００回になれば、１０００回の許容読み出し回数を閾値として、物理ブロック１４の使用状態に応じた適切な閾値が、回数比較部４０での比較処理に用いられて、より適切な判定を行うことができる。
【０１２７】
また、本実施形態では、キャッシュ判定部４２ａ’が、読み出し動作が要求されたデータ及びキャッシュデータについての残許容読み出し回数どうしを比較しているので、不揮発性メモリ３のリードディスターブストレスの程度に応じて、適切なキャッシュデータの選択を行うことができ、リードディスターブによるビット誤りの発生をより確実に防ぐことができる。
【０１２８】
尚、上記の実施形態はすべて例示であって制限的なものではない。本発明の技術的範囲は特許請求の範囲によって規定され、そこに記載された構成と均等の範囲内のすべての変更も本発明の技術的範囲に含まれる。
【０１２９】
例えば、上記の説明では、メモリーカード（不揮発性記憶装置）に本発明を適用した場合について説明したが、本発明のメモリーコントローラはこれに限定されるものではなく、フラッシュディスクなどの他の不揮発性記憶装置及びこれを含んだ不揮発性記憶システムに適用することもできる。
【０１３０】
また、上記の説明では、読み出し動作が要求されたデータについての上記読み出し回数が、規定回数（所定の閾値）または許容読み出し回数に達したことが回数比較部により判別されたときに、データ移動指示部が当該データを不揮発性メモリの別の物理ブロックに移動することを指示する構成について説明した。しかしながら、本発明は、不揮発性メモリの各物理ブロックに含まれた物理ページについて、物理ページ単位での読み出し回数を、対応する物理ブロックの読み出し回数として記録する読み出し回数テーブルを設けるとともに、主制御部が読み出し回数テーブルを参照して、不揮発性メモリに対するデータの読み出し動作を制限するものであれば何等限定されない。
【０１３１】
但し、上記の各実施形態のように、別の物理ブロックにデータを移動させる場合の方が、不揮発性メモリでのデータの保持性が低下するのを防止することができ、かつ、リードディスターブによるビット誤りの発生を確実に防ぐことができる点で好ましい。
【０１３２】
また、上記の説明では、読み出し対象の物理ページからデータを読み出した後、回数比較部が読み出し回数と所定の閾値または許容読み出し回数との比較を行う場合について説明したが、本発明は、データの読み出し動作が要求されたときに上記の比較が行われるものであればよく、データの読み出し動作よりも前に当該比較を実行するものでもよい。
【０１３３】
また、上記の説明では、キャッシュメモリ（出力メモリ）を有するコントローラ（メモリーコントローラ）について説明したが、本発明のメモリーコントローラはこれに限定されるものではなく、出力メモリが設置されていないメモリーコントローラにも適用することができる。
【０１３４】
但し、上記の各実施形態のように、出力メモリを設置してデータをキャッシュ可能に構成する場合の方が、データの読み出し動作が外部から要求されたときに、当該データを不揮発性メモリから読み出すことなく、ホスト機器（外部）に出力することが可能となり、不揮発性メモリでのリードディスターブによる劣化を効率よく抑制することができる点で好ましい。
【０１３５】
また、上記の説明では、不揮発性メモリにＮＡＮＤタイプのフラッシュメモリを用いた場合について説明したが、本発明はこれに限定されるものではなく、ＭＯＮＯＳ型やＡＮＤ型などの他のタイプのフラッシュメモリにも適用することができる。
【産業上の利用可能性】
【０１３６】
本発明は、リードディスターブによるビット誤りが不揮発性メモリに発生するのを確実に防止することができるメモリーコントローラ、及びデータの信頼性が向上された不揮発性メモリを有する不揮発性記憶装置並びに不揮発性記憶システムに有用である。
【図面の簡単な説明】
【０１３７】
【図１】本発明の第１の実施形態にかかるメモリーコントローラを使用したメモリーカード及び不揮発性記憶システムの要部構成を示すブロック図である。
【図２】図１に示した主制御部の具体的な機能ブロックを示すブロック図である。
【図３】図１に示した不揮発性メモリの物理ブロックの構成を示す図である。
【図４】図１に示したアドレス変換テーブルの構成を示す図である。
【図５】図１に示した書き換え回数テーブルの構成を示す図である。
【図６】図１に示した読み出し回数テーブルの構成を示す図である。
【図７】図１に示したキャッシュテーブルの構成を示す図である。
【図８】上記メモリーカードでの読み出し動作を示すフローチャートである。
【図９】図８に示したデータ移動処理の具体的な動作を示すフローチャートである。
【図１０】（ａ）、（ｂ）、（ｃ）及び（ｄ）は、上記データ移動処理が行われる前における、読み出し回数テーブル、書き換え回数テーブル、アドレス変換テーブル、及び不揮発性メモリの具体的な状態をそれぞれ説明する図である。
【図１１】（ａ）、（ｂ）、（ｃ）及び（ｄ）は、図９のステップＳ９の動作が行われた後における、読み出し回数テーブル、書き換え回数テーブル、アドレス変換テーブル、及び不揮発性メモリの具体的な状態をそれぞれ説明する図である。
【図１２】（ａ）、（ｂ）、（ｃ）及び（ｄ）は、図９のステップＳ１５の動作が行われる前における、読み出し回数テーブル、書き換え回数テーブル、アドレス変換テーブル、及び不揮発性メモリの具体的な状態をそれぞれ説明する図である。
【図１３】（ａ）、（ｂ）、（ｃ）及び（ｄ）は、図９のステップＳ１７の動作が行われた後における、読み出し回数テーブル、書き換え回数テーブル、アドレス変換テーブル、及び不揮発性メモリの具体的な状態をそれぞれ説明する図である。
【図１４】図８に示した読み出しキャッシュ処理の具体的な動作を示すフローチャートである。
【図１５】上記メモリーカードでの書き込み動作を示すフローチャートである。
【図１６】本発明の第２の実施形態にかかるメモリーコントローラの主制御部の具体的な機能ブロックを示すブロック図である。
【図１７】上記不揮発性メモリでの書き換え回数と許容読み出し回数との相関関係の具体例を示すグラフである。
【図１８】図１６に示した主制御部による読み出し動作を示すフローチャートである。
【図１９】図１８に示した読み出しキャッシュ処理の具体的な動作を示すフローチャートである。
【符号の説明】
【０１３８】
１    メモリーカード
２    コントローラ（メモリーコントローラ）
３    不揮発性メモリ
４    主制御部
４０    回数比較部
４１    データビット誤り指示部
４２ａ、４２ａ’    キャッシュ判定部
４２ｂ    キャッシュ指示部
４２ｃ    キャッシュ解放指示部（出力メモリ解放指示部）
４３    関数設定部
９    アドレス変換テーブル
１０    書き換え回数テーブル
１１    読み出し回数テーブル
１２    キャッシュメモリ（出力メモリ）
１３    キャッシュテーブル（出力テーブル）
１４    物理ブロック
１４ａ    物理ページ
５０    不揮発性記憶システム
５１    ホスト機器
【図１】
0005073402.tif 000002
【図２】
0005073402.tif 000003
【図３】
0005073402.tif 000004
【図４】
0005073402.tif 000005
【図５】
0005073402.tif 000006
【図６】
0005073402.tif 000007
【図７】
0005073402.tif 000008
【図８】
0005073402.tif 000009
【図９】
0005073402.tif 000010
【図１０】
0005073402.tif 000011
【図１１】
0005073402.tif 000012
【図１２】
0005073402.tif 000013
【図１３】
0005073402.tif 000014
【図１４】
0005073402.tif 000015
【図１５】
0005073402.tif 000016
【図１６】
0005073402.tif 000017
【図１７】
0005073402.tif 000018
【図１８】
0005073402.tif 000019
【図１９】
0005073402.tif 000020