(57)【要約】【課題】処理速度の低下を防止でき、状況に応じた的確なリフレッシュ動作を実現することが可能なメモリ装置、メモリ制御方法、およびプログラムを提供する。【解決手段】メモリ装置２０は、ブロック単位にデータの消去が行われ、このブロックに対するデータの書き込みおよび読み出しが行われる不揮発性メモリ２３と、不揮発性メモリのアクセス動作を制御し、不揮発性メモリのデータ変化状態のレベルを監視して不揮発性メモリのリフレッシュ動作を制御する制御部２１と、を有し、制御部２１は、複数設定されたリフレッシュ動作実行の緊急度とデータ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う。【選択図】図３
2012133642.tif 000002
【特許請求の範囲】
【請求項１】
ブロック単位にデータの消去が行われ、当該ブロックに対するデータの書き込みおよび読み出しが行われる不揮発性メモリと、
前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御部と、を有し、
前記制御部は、
複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う
メモリ装置。
【請求項２】
前記複数の緊急度として、少なくとも高い緊急度に対応した第１の閾値と低い緊急度に対応した第２の閾値とが設定され、
前記制御部は、
前記データ変化状態のレベルが前記第２の閾値以上であり前記第１の閾値より低い場合には、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行し、
前記データ変化状態のレベルが前記第１の閾値に達している場合、直ちにリフレッシュ動作を行う
請求項１記載のメモリ装置。
【請求項３】
前記複数の緊急度として、前記第２の閾値に対応する緊急度より低い緊急度に対応する第３の閾値が設定され、
前記制御部は、
前記データ変化状態のレベルが前記第３の閾値以上で前記第２の閾値以下の場合、リフレッシュ動作を行わない
請求項２記載のメモリ装置。
【請求項４】
前記複数の緊急度として、前記不揮発性メモリへのアクセス数または当該不揮発性メモリの放置時間に関する第４の閾値が設定され、
前記制御部は、
前記不揮発性メモリへのアクセス数または当該不揮発性メモリの放置時間が前記第４の閾値に達している場合、前記データ変化状態のレベルが前記第３の閾値以上で前記第２の閾値以下の場合であっても、リフレッシュ動作を行う
請求項３記載のメモリ装置。
【請求項５】
前記制御部は、
一つのブロック内において、前記データ変化状態のレベルがばらついている場合、最も高い緊急度に対応するレベルを適用して、複数設定されたリフレッシュ動作実行の緊急度との比較処理を行う
請求項１から４のいずれか一に記載のメモリ装置。
【請求項６】
前記制御部は、
前記不揮発性メモリからデータを読み出した後に、読み出したデータの変化状態に応じて緊急度の設定を行い、当該設定した緊急度に応じたリフレッシュ動作を行う
請求項１から５のいずれか一に記載のメモリ装置。
【請求項７】
前記制御部は、
前記設定した緊急度が、あらかじめ設定したレベルより低い場合は、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行し、
前記設定した緊急度が、あらかじめ設定したレベルに達している場合、直ちにリフレッシュ動作を行う
請求項６記載のメモリ装置。
【請求項８】
前記制御部は、
前記不揮発性メモリに対して、必要に応じて書き込みデータに誤り訂正符号を付加してデータを書き込み、読出し時にエラー検出と訂正を行うエラー訂正部を含む
請求項１から７のいずれか一に記載のメモリ装置。
【請求項９】
ブロック単位にデータの消去が行われる不揮発性メモリに対して、当該ブロックに対するデータの書き込みまたは読み出しを行うアクセスステップと、
前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御ステップと、を有し、
前記制御ステップでは、
複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う
メモリ制御方法。
【請求項１０】
前記複数の緊急度として、少なくとも高い緊急度に対応した第１の閾値と低い緊急度に対応した第２の閾値とが設定され、
前記制御ステップにおいては、
前記データ変化状態のレベルが前記第２の閾値以上であり前記第１の閾値より低い場合には、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行し、
前記データ変化状態のレベルが前記第１の閾値に達している場合、直ちにリフレッシュ動作を行う
請求項９記載のメモリ制御方法。
【請求項１１】
前記複数の緊急度として、前記第２の閾値に対応する緊急度より低い緊急度に対応する第３の閾値が設定され、
前記制御ステップにおいては、
前記データ変化状態のレベルが前記第３の閾値以上で前記第２の閾値以下の場合、リフレッシュ動作を行わない
請求項１０記載のメモリ制御方法。
【請求項１２】
前記複数の緊急度として、前記不揮発性メモリへのアクセス数または当該不揮発性メモリの放置時間に関する第４の閾値が設定され、
前記制御ステップにおいては、
前記不揮発性メモリへのアクセス数または当該不揮発性メモリの放置時間が前記第４の閾値に達している場合、前記データ変化状態のレベルが前記第３の閾値以上で前記第２の閾値以下の場合であっても、リフレッシュ動作を行う
請求項１１記載のメモリ制御方法。
【請求項１３】
前記制御ステップにおいては、
一つのブロック内において、前記データ変化状態のレベルがばらついている場合、最も高い緊急度に対応するレベルを適用して、複数設定されたリフレッシュ動作実行の緊急度との比較処理を行う
請求項９から１２のいずれか一に記載のメモリ制御方法。
【請求項１４】
前記制御ステップにおいては、
前記不揮発性メモリからデータを読み出した後に、読み出したデータの変化状態に応じて緊急度の設定を行い、当該設定した緊急度に応じたリフレッシュ動作を行う
請求項９から１３のいずれか一に記載のメモリ制御方法。
【請求項１５】
前記制御部は、
前記設定した緊急度が、あらかじめ設定したレベルより低い場合は、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行し、
前記設定した緊急度が、あらかじめ設定したレベルに達している場合、直ちにリフレッシュ動作を行う
請求項１４記載のメモリ制御方法。
【請求項１６】
前記制御ステップにおいては、
前記不揮発性メモリに対して、必要に応じて書き込みデータに誤り訂正符号を付加してデータを書き込み、読出し時にエラー検出と訂正を行う
請求項９から１５のいずれか一に記載のメモリ制御方法。
【請求項１７】
ブロック単位にデータの消去が行われる不揮発性メモリに対して、当該ブロックに対するデータの書き込みまたは読み出しを行うアクセス処理と、
前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御処理と、を有し、
前記制御処理では、
複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う
メモリ制御処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリのリフレッシュ機能を有するメモリ装置、メモリ制御方法、およびプログラムに関するものである。
【背景技術】
【０００２】
パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の外部記憶装置として、不揮発性メモリであるフラッシュメモリを備えたメモリ装置が知られている。
フラッシュメモリは、データの書き込みおよび読み出しを、ブロック単位より小さいページ単位等でランダムに行うことができるが、データの消去はランダムではなくブロック単位で行われる。
【０００３】
フラッシュメモリの一つであるＮＡＮＤフラッシュメモリは年々、製造プロセスの微細化が進み、データの信頼性が低下しており、それに伴って、メモリコントローラには、より高い訂正能力を持った誤り訂正回路が求められてきている。
【０００４】
ＮＡＮＤフラッシュメモリでは、書き込まれたデータを読み出した際に、ビット化けなどが発生した場合に備えて、誤り訂正符号を用いて、データの信頼性を高めてきた。
しかし、ＮＡＮＤフラッシュメモリのプロセス微細化により、書き込まれたデータを繰り返し読み出した場合や、長期間放置した場合にデータのビット化けが発生する現象が発生しやすくなっており、訂正しきれないほどのビット化けが発生しやすくなってきている。
【０００５】
こうした状況に対して、ビット化けが発生したものを訂正するだけではなく、図１に示すように、訂正が可能なうちにリフレッシュ動作を行うことにより、ビット化けが発生しにくい状況にする手法が提案されている。
図１の例では、信頼性の低下したブロックからデータを訂正しながら読み出し、読み出したデータを、ＥＣＣ（Error Correcting Circuit）などを用いて訂正し、再度読み出したブロックとは別のブロックへ書き込むというリフレッシュ動作を行っている。
【０００６】
提案されているリフレッシュ手法は、ビット化けの発生数や、読み出しや書き換えの回数などが、一定の閾値を超えた場合、すなわちデータの信頼性が一定の閾値を下回った場合にリフレッシュ動作を行うものである（たとえば特許文献１，２，３参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−２０５５７８号公報
【特許文献２】特開平７−２２０４８６号公報
【特許文献３】特開平８−１４７９８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したように、提案されているリフレッシュ手法は、ビット化けの発生数や、読み出しや書き換えの回数などが、一定の閾値を超えた場合、すなわちデータの信頼性が一定の閾値を下回った場合にリフレッシュ動作を行う。
【０００９】
図２は、ホスト装置からメモリ装置へのアクセス、リフレッシュ動作、およびリフレッシュ動作によるオーバヘッドを模式的に示す図である。
【００１０】
たとえばホスト装置１からメモリ装置２のコントロールデバイス２Ａに書き込みや読み出しのコマンドが送信される。
コントロールデバイス２Ａ、コマンドに応じた書き込みや読み出しのオペレーションを不揮発性メモリ２Ｂに対して実行する。この間、不揮発性メモリ２Ｂはビジー状態となる。
そして、コントロールデバイス２Ａは、データの信頼性が一定の閾値を下回った場合にリフレッシュ動作を行う。
【００１１】
しかしながら、このリフレッシュ手法では、閾値を下回る状態が発生すると直ちにリフレッシュ動作を開始するため、信頼性を確保する代わりに、リフレッシュ時間がオーバヘッド時間となって、処理速度を低下させてしまうという不利益がある。
これを防ぐために、閾値を高めてしまうと、データの信頼性が著しく低下したときにリフレッシュ動作を行うことになるため、すでに誤り訂正符号を用いても訂正することができなくなる可能性が高くなる。
逆に、閾値を低く設定してしまうと、リフレッシュ動作を行わなければならない可能性が高くなり、処理速度の低下を招きやすくなってしまう。
【００１２】
本発明は、処理速度の低下を防止でき、状況に応じた的確なリフレッシュ動作を実現することが可能なメモリ装置、メモリ制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の観点のメモリ装置は、ブロック単位にデータの消去が行われ、当該ブロックに対するデータの書き込みおよび読み出しが行われる不揮発性メモリと、前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御部と、を有し、前記制御部は、複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う。
【００１４】
本発明の第２の観点のメモリ制御方法は、ブロック単位にデータの消去が行われる不揮発性メモリに対して、当該ブロックに対するデータの書き込みまたは読み出しを行うアクセスステップと、前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御ステップと、を有し、前記制御ステップでは、複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う。
【００１５】
本発明の第３の観点は、ブロック単位にデータの消去が行われる不揮発性メモリに対して、当該ブロックに対するデータの書き込みまたは読み出しを行うアクセス処理と、前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御処理と、を有し、前記制御処理では、複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行うメモリ制御処理をコンピュータに実行させるプログラムである。
【発明の効果】
【００１６】
本発明によれば、処理速度の低下を防止でき、状況に応じた的確なリフレッシュ動作を実現することができる。
【図面の簡単な説明】
【００１７】
【図１】訂正が可能なうちにリフレッシュ動作を説明するための図である。
【図２】ホスト装置からメモリ装置へのアクセス、リフレッシュ動作、およびリフレッシュ動作によるオーバヘッドを模式的に示す図である。
【図３】本実施形態に適用される情報処理システムの概略構成を示す図である。
【図４】図３に示されるメモリ装置のより具体的な構成例を示すブロック図である。
【図５】不揮発性メモリ(フラッシュメモリ)のデータの信頼性について説明するための図である。
【図６】メモリ装置における不揮発性メモリのリフレッシュ動作の基本的なデータの流れを示す図である。
【図７】基本的なリフレッシュ動作のフローチャートである。
【図８】一般的なリフレッシュ方法を説明するための図である。
【図９】本実施形態に係るリフレッシュ方法を説明するための図である。
【図１０】本実施形態におけるリフレッシュ動作の緊急度の割り当て例を示す図である。
【図１１】本実施形態において、データのビット化け発生数と併せて、該当ブロックに対するアクセス回数も用いて閾値を設定する場合の緊急度に応じたリフレッシュ動作を規定するリフレッシュリスト例を示す図である。
【図１２】一つのブロック内で信頼性を判断する値がばらついていた場合を示す図である。
【図１３】ブロック内の信頼性を表すビットエラー値取得フローを示す図である。
【図１４】データの劣化（破損）状況（データの変化状態）に応じて緊急度の設定を行い、緊急度に応じた処理を実施する例を説明するためのフローチャートである。
【図１５】本実施形態において、閾値設定と訂正不可能状態までの猶予期間を併せて示す図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施形態を添付図面に関連付けて説明する。
なお、説明は以下の順序で行う。
１．情報処理システムの全体構成の概要
２．メモリ装置のリフレッシュ動作制御の概要
３．メモリ装置のリフレッシュ動作制御の具体例
【００１９】
＜１．情報処理システムの全体構成の概要＞
図３は、本発明の実施形態に適用される情報処理システムの概略構成を示す図である。
【００２０】
図３に示すように、この情報処理システムは、ホスト装置１０と、ホスト装置１０に着脱自在に装着可能な情報処理装置としてのメモリ装置２０を主構成要素として有している。本実施形態において、メモリ装置２０はＮＡＮＤフラッシュメモリ等の不揮発性メモリを含んで構成されている。
【００２１】
ホスト装置１０は、パーソナルコンピュータ（ＰＣ）、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の機器により形成される。
ホスト装置１０は、制御部１１、メモリ１２、ディスプレイ１３、入出力処理（Ｉ／Ｏ）部１４、および外部メモリインタフェース（Ｉ／Ｆ）１５を備える。
制御部１１は、メモリ１２、ディスプレイ１３、Ｉ／Ｏ部１４および外部メモリＩ／Ｆ１５とバス１６を介し相互に接続されている。
メモリ１２は、プログラム格納用のＲＯＭ、作業用メモリであるＲＡＭ等を有する。
外部メモリＩ／Ｆ１５は、制御部１１の制御命令に従ってメモリ装置２０との間でデータを送受する。
【００２２】
メモリ装置２０は、制御部２１、メモリ２２、不揮発性メモリ２３、およびホストＩ／Ｆ２４を備える。
制御部２１は、メモリ２２、不揮発性メモリ２３およびホストＩ／Ｆ２４とバス２５を介し相互に接続されている。
メモリ２２は、プログラム格納用のＲＯＭ、作業用メモリであるＲＡＭ等を有する。メモ２２は、たとえば内部(Internal)ＲＡＭ、バッファ(Buffer)ＲＡＭを含む。
不揮発性メモリ２３は、たとえば、ＮＡＮＤ型あるいはＮＯＲ型のフラッシュメモリにより形成される。本実施形態では、不揮発性メモリとしてＮＡＮＤフラッシュメモリを例に説明する。
ホストＩ／Ｆ２４は、制御部２１の制御命令に従ってホスト装置１０との間でデータを送受する。
【００２３】
図４は、図３に示されるメモリ装置２０のより具体的な構成例を示すブロック図である。
【００２４】
メモリ装置２０は、ホスト装置１０に装着されているとき、ホスト装置１０から供給されるデータが書き込まれ、記憶したデータが読み出される。
【００２５】
メモリ装置２０は、制御部２１として、プロセッサ(Processor)２１１、およびエラー訂正部としての機能を含むＥＣＣコントローラ２１２を含んで構成されている。
また、メモリ２２は、バッファＲＡＭ２２１および内部ＲＡＭ２２２を含んで構成される。
【００２６】
プロセッサ２１１は、ホストＩ／Ｆ２４を通してのホスト装置１０との間のコマンドやデータの転送制御、ＥＣＣコントローラ２１２を通しての不揮発性メモリ２３に対しての書き込みや読み出し制御等、メモリ装置２０全体の制御を行う。
【００２７】
ＥＣＣコントローラ２１２は、プロセッサ２１１の制御の下、不揮発性メモリ２３に対して、必要に応じて書き込みデータに誤り訂正符号を付加してデータを書き込み、読出し時にエラー検出と訂正を行うことによって、データの信頼性を改善する機能を含む。
また、ＥＣＣコントローラ２１２は、プロセッサ２１１の制御の下、不揮発性メモリ２３の状態に応じて、データ信頼性向上のためにリフレッシュ動作を行う。ＥＣＣコントローラ２１２は、後で詳述するように、リフレッシュ動作を行うかどうかの判断を行う閾値を複数段階に分けて判断する機能を有する。
ＥＣＣコントローラ２１２は、リフレッシュ動作時には、内部ＲＡＭ２２２に一旦不揮発性メモリ２３の一ブロックから読み出したデータを退避させ、退避させたデータを他のブロックに書き戻す。
ＥＣＣコントローラ２１２は、リフレッシュ動作でない非リフレッシュ動作時は、バッファＲＡＭ２２１に一時的に保持されるデータに対する処理を行う。
【００２８】
たとえばＮＡＮＤフラッシュメモリにより形成される不揮発性メモリ２３は、ブロック単位にデータの消去が行われ、ブロックに対してブロック単位より小さい、たとえばページ単位でデータの書き込みおよび読み出しが行われる。
【００２９】
＜２．メモリ装置のリフレッシュ動作制御の概要＞
以下に、本実施形態に係るメモリ装置２０におけるリフレッシュ動作制御の概要について説明する。
【００３０】
本実施形態においては、制御部２１のＥＣＣコントローラ２１２は、プロセッサ２１１の制御の下、不揮発性メモリ２３のデータ変化状態のレベルを監視して、不揮発性メモリ２３のリフレッシュ動作を制御する。
ＥＣＣコントローラ２１２は、複数設定されたリフレッシュ動作実行の緊急度と監視して得られるデータ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う。
なお、データ変化状態のレベルとはデータの信頼性を判断するための情報である。
緊急度を設定するために必要な、信頼性を判断する値は、データのビット化け発生数、データの書き換え回数、データの読み出し回数、書き込まれてからの経過時間などどのような値も条件とすることが可能である。
【００３１】
本実施形態においては、たとえば複数の緊急度として、少なくとも高い緊急度に対応した第１の閾値ＴＨ１と低い緊急度に対応した第２の閾値ＴＨ２とが設定される。
制御部２１のＥＣＣコントローラ２１２は、データ変化状態のレベルが第２の閾値ＴＨ２以上であり第１の閾値ＴＨ１より低い場合には、緊急度は低いとして直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行する。
ここで、システムのパフォーマンスに影響のないタイミングとは、アイドル期間等のプロセッサ２１１やＥＣＣコントローラ２１２の負荷のない、あるいは負荷の少ない期間である。
ＥＣＣコントローラ２１２は、データ変化状態のレベルが第１の閾値ＴＨ１に達している場合、緊急度が高いとして直ちにリフレッシュ動作を行う。
【００３２】
また、本実施形態においては、後で具体的に例示するが、複数の緊急度として、第２の閾値ＴＨ２に対応する緊急度より低い緊急度に対応する第３の閾値ＴＨ３が設定される。
また、さらに、複数の緊急度として、および不揮発性メモリ２３へのアクセス数または不揮発性メモリ２３の書き込みからの経過時間(放置時間)に関する第４の閾値ＴＨ４がさらに設定される。
ＥＣＣコントローラ２１２は、データ変化状態のレベルが第３の閾値ＴＨ３以上で第２の閾値ＴＨ２以下の場合、リフレッシュ動作を行わないように制御する。
また、ＥＣＣコントローラ２１２は、不揮発性メモリ２３へのアクセス数または不揮発性メモリ２３の放置時間が第４の閾値ＴＨ４に達している場合、次のように制御を行う。
この場合、ＥＣＣコントローラ２１２は、データ変化状態のレベルが第３の閾値ＴＨ３以上で第２の閾値ＴＨ２以下の場合であっても、リフレッシュ動作を行うように制御する。
【００３３】
また、ＥＣＣコントローラ２１２は、不揮発性メモリ２３の一つのブロック内において、データ変化状態のレベルがばらついている場合、最も高い緊急度に対応するレベルを適用して、複数設定されたリフレッシュ動作実行の緊急度との比較処理を行う。
【００３４】
また、ＥＣＣコントローラ２１２は、不揮発性メモリ２３からデータを読み出した後に、読み出したデータの変化状態に応じて緊急度の設定を行い、設定した緊急度に応じたリフレッシュ動作を行う。
この場合、ＥＣＣコントローラ２１２は、設定した緊急度が、あらかじめ設定したレベルより低い場合は、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行するように制御する。
ＥＣＣコントローラ２１２は、設定した緊急度が、あらかじめ設定したレベルに達している場合、直ちにリフレッシュ動作を行うように制御する。
【００３５】
＜３．メモリ装置のリフレッシュ動作制御の具体例＞
次に、本実施形態に係るメモリ装置２０におけるリフレッシュ動作制御の具体例について、図面に関連付けて説明する。
以下では、上述の記載と重複する部分もあるが、フラッシュメモリの特性や本実施形態のリフレッシュ動作制御を行う理由等も含めて説明する。
【００３６】
図５は、不揮発性メモリ(フラッシュメモリ)のデータの信頼性について説明するための図である。図５において、横軸は不揮発性メモリに対するデータの読み出し、書き込みの実時間を、縦軸は不揮発性メモリにおけるデータの信頼度の相対的な値を、それぞれ示している。
図６は、メモリ装置における不揮発性メモリのリフレッシュ動作の基本的なデータの流れを示す図である。
図７は、基本的なリフレッシュ動作のフローチャートである。
図８は、一般的なリフレッシュ方法を説明するための図である。
図９は、本実施形態に係るリフレッシュ方法を説明するための図である。
図８および図９において、横軸は不揮発性メモリに対するデータの読み出し、書き込みの実時間を、縦軸は不揮発性メモリのリフレッシュ動作実行の緊急度の相対的な値を、それぞれ示している。
【００３７】
本実施形態に係るメモリ装置２０は、図４に示すように、半導体不揮発性メモリを主たる記憶媒体とする。
そのフラッシュメモリにより形成される不揮発性メモリ２３は、図５に示すように、実時間の経過や、読み出しや書き込み処理を繰り返し行うことによりデータの信頼性が低下するような特性を持つ。
【００３８】
こうした情報処理システムにおいて、データの信頼性低下を防ぐ方法として、リフレッシュ方法を採用している。
リフレッシュ処理では、図６に示すように、ＥＣＣコントローラ２１２が、不揮発性メモリ２３から信頼性の低下したブロックＢＬＫｘからデータを訂正しながら読み出し（ＳＴ１，ＳＴ２）、読み出したデータを、ＥＣＣなどを用いて訂正する。そして、ＥＣＣコントローラ２１２は、不揮発性メモリ２３の再度読み出したブロックとは別のブロックＢＬＫｙへ書き込む（ＳＴ３，ＳＴ４）、というリフレッシュ動作を行っている。
【００３９】
具体的な処理としては、図７に示すような処理が行われる。
まず、変数ｐｇを０に設定し（ＳＴ１１）、リフレッシュソースブロック(Refresh Source Block)から所定のページ番号のデータを読み出す（ＳＴ１２）。
そして、ＥＣＣコントローラ２１２を通してデータの訂正を行い（ＳＴ１３）、読み出しとは異なるリフレッシュデスティネーションブロック(Refresh Destination Block)の所定の番号のページに書き戻す（ＳＴ１４）。
変数ｐｇをインクリメントし（ＳＴ１５）、リフレッシュソースブロックの書き込まれている最終ページまでステップＳＴ１２からの処理を繰り返す（ＳＴ１６）。
最終ページまでの書き戻す処理が完了すると、リフレッシュソースブロックを消去する（ＳＴ１７）。
【００４０】
このリフレッシュ動作のタイミングとして、一般的に、図８に示すように、信頼性を表す値が一定の閾値ＴＨを下回った場合に、不揮発性メモリ上のデータのリフレッシュを行う方法が用いられている。
【００４１】
本実施形態では、１種類の信頼性を表す値、もしくは複数種類の信頼性を表す値を用いて、図９に示すように、２つ以上の複数の緊急度ＥＭＬ〜ＥＭＬ４を設け、複数の信頼性、すなわち複数の緊急度を割り当て、その緊急度に応じたリフレッシュ動作を行う。
【００４２】
上述したように、緊急度を設定するために必要な、信頼性を判断する値は、データのビット化け発生数、データの書き換え回数、データの読み出し回数、書き込まれてからの経過時間などどのような値を条件としても良い。
【００４３】
また、緊急度の設定(割り当て)を、単一の信頼性を判断する値に基づいて設定しても、複数の値に基づいて設定しても良い。
【００４４】
図１０（Ａ）〜（Ｃ）は、本実施形態におけるリフレッシュ動作の緊急度の割り当て例を示す図である。
【００４５】
図１０（Ａ）の例では、ビットエラー数を取得し（ＳＴ２１）、そのビットエラー数を緊急度として割り当てる（ＳＴ２２）。
図１０（Ｂ）の例では、読み出しデータのカウント値を取得し（ＳＴ２３）、その読み出しデータのカウント値を緊急度として割り当てる（ＳＴ２４）。
図１０（Ｃ）の例では、ビットエラー数を取得し（ＳＴ２５）、読み出しデータのカウント値を取得し（ＳＴ２６）、ビットエラー数および読み出しデータのカウント値の両方を緊急度として割り当てる（ＳＴ２７）。
【００４６】
さらに具体例を示す。
たとえば、データのビット化け発生数を用いた場合に、次のような複数段階の閾値を設定する。
【００４７】
この例では、１ビットエラーを、第３の閾値ＴＨ３として割り当てる。
読み出しや書き込みを行うときに発生しうるビットエラー数（不揮発性メモリ製造者が定義する値）を、第２の閾値ＴＨ２として割り当てる。
ＥＣＣコントローラ２１２の訂正可能な最大ビットエラー数を、第１の閾値ＴＨ１として割り当てる。
【００４８】
例としては、第３の閾値ＴＨ３については、エラーが発生したかどうかを監視するために設定されている。
第２の閾値ＴＨ２については、不揮発性メモリの信頼性低下とは関係なしで発生しうるビットエラー数が設定されている。
第１の閾値ＴＨ１については、訂正不可能になる直前で、データの正当性を担保できる限界のポイントが設定されている。
【００４９】
このように設定することで、ＥＣＣコントローラ２１２は、第３の閾値ＴＨ３以上、第２の閾値ＴＨ２以下の場合にはリフレッシュ処理を行わない。
ＥＣＣコントローラ２１２は、第２の閾値ＴＨ２を超える場合にはリフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する。
ＥＣＣコントローラ２１２は、第３の閾値ＴＨ３の場合には即座にリフレッシュを行うなどの緊急度に応じた処理を行うことが可能となる。
【００５０】
また、データのビット化け発生数と併せて、該当ブロックに対するアクセス回数も用いて閾値を設定することも可能である。
この場合、上記の第１の閾値ＴＨ１、第２の閾値ＴＨ２、第３の閾値ＴＨ３に併せて該当ブロックに対するアクセス回数に対応する第４の閾値ＴＨ４が設定される。
【００５１】
図１１は、本実施形態において、データのビット化け発生数と併せて、該当ブロックに対するアクセス回数も用いて閾値を設定する場合の緊急度に応じたリフレッシュ動作を規定するリフレッシュリスト例を示す図である。
【００５２】
図１１において、後で（later）と示されているのは、リフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する場合である。
即座に(immediately)と示されているのは、即座に（直ちに）リフレッシュを行う場合である。
しない(never)と示されているのは、リフレッシュ処理を行わない場合である。
小さい(small)と示されているのは、不揮発性メモリ２３へのアクセス回数が第４の閾値ＴＨ４より小さいまたは第４の閾値ＴＨ４以下の場合である。
大きい(large)と示されているのは、不揮発性メモリ２３へのアクセス回数が第４の閾値ＴＨ４以上または第４の閾値ＴＨ４より大きい場合である。
【００５３】
この例では、不揮発性メモリ２３へのアクセス回数が第４の閾値ＴＨ４より小さいまたは第４の閾値ＴＨ４以下の場合、次のように処理される。
ＥＣＣコントローラ２１２は、第３の閾値ＴＨ３以上、第２の閾値ＴＨ２以下の場合にはリフレッシュ処理を行わない。
ＥＣＣコントローラ２１２は、第２の閾値ＴＨ２を超える場合にはリフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する。
ＥＣＣコントローラ２１２は、第３の閾値ＴＨ３の場合には即座にリフレッシュを行う。
【００５４】
不揮発性メモリ２３へのアクセス回数が第４の閾値ＴＨ４以上または第４の閾値ＴＨ４より大きい場合、経年劣化等を考慮して次のように処理される。
ＥＣＣコントローラ２１２は、第３の閾値ＴＨ３以上、第２の閾値ＴＨ２以下の場合にはリフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する。
ＥＣＣコントローラ２１２は、第２の閾値ＴＨ２を超える場合にはリフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する。
ＥＣＣコントローラ２１２は、第３の閾値ＴＨ３の場合には即座にリフレッシュを行う。
【００５５】
図１２は、一つのブロック内で信頼性を判断する値がばらついていた場合を示す図である。
図１３は、ブロック内の信頼性を表すビットエラー値取得フローを示す図である。
【００５６】
図１２の例では、一つのブロックＢＬＫ１に１６個のページＰＧ０〜ＰＧ１５が存在する場合を示している。
各ページＰＧ０〜ＰＧ１５内に付された数次は、各ページのビットエラー数ＮＢＥを示している。
【００５７】
図１２の例では、ページＰＧ０はビットエラー数ＮＢＥが「０」、ページＰＧ１はビットエラー数ＮＢＥが「０」、ページＰＧ２はビットエラー数ＮＢＥが「１」、ページＰＧ３はビットエラー数ＮＢＥが「０」である。
ページＰＧ４はビットエラー数ＮＢＥが「０」、ページＰＧ５はビットエラー数ＮＢＥが「３」、ページＰＧ６はビットエラー数ＮＢＥが「０」、ページＰＧ７はビットエラー数ＮＢＥが「０」である。
ページＰＧ８はビットエラー数ＮＢＥが「５」、ページＰＧ９はビットエラー数ＮＢＥが「６」、ページＰＧ１０はビットエラー数ＮＢＥが「３」、ページＰＧ１１はビットエラー数ＮＢＥが「０」である。
ページＰＧ１２はビットエラー数ＮＢＥが「１０」、ページＰＧ１３はビットエラー数ＮＢＥが「０」、ページＰＧ１４はビットエラー数ＮＢＥが「２」、ページＰＧ１５はビットエラー数ＮＢＥが「０」である。
【００５８】
このように、一つのブロックＢＬＫ１内において、信頼性を判断する値、ここではビットエラー数ＮＢＥがばらついていた場合、本実施形態においては、その中でもっとも信頼性の低い値に基づいて、緊急度を設定する。
ここで、ページＰＧ１２のビットエラー数ＮＢＥ「１０」に基づいて、緊急度が設定される。
【００５９】
具体的な処理としては、図１３に示すような処理が行われる。
まず、変数ＭＡＸ ＢＩＴ ＥＲＲＯＲを０に設定し（ＳＴ３１）、ページにおけるビットエラー数を取得する。このとき、変数をＥに設定る（ＳＴ３２）。
そして、ＭＡＸ ＢＩＴ ＥＲＲＯＲが設定値Ｅより小さい場合（ＳＴ３３）、ＭＡＸ ＢＩＴ ＥＲＲＯＲ＝Ｅとして（ＳＴ３４）、最終ページまでステップＳＴ３２からの処理を繰り返す（ＳＴ３５）。
【００６０】
緊急度に応じたリフレッシュ動作については、システムの基準に応じて、パフォーマンスを犠牲にして即座にリフレッシュを行っても、パフォーマンスに影響を与えないタイミングでリフレッシュを行っても、緊急度が低い場合にはリフレッシュを行わなくても良い。
即座にリフレッシュを行わない領域情報を保持するリスト（リフレッシュリスト）は、システム内の揮発性メモリ上に一時的に保管されていても、不揮発性メモリ２３上に保管されていても良い。
【００６１】
さらに、本実施形態においては、不揮発性メモリからデータを読み出した後に、読み出したデータの劣化（破損）状況（データの変化状態）に応じて緊急度の設定を行い、緊急度に応じた処理を実施するように構成することも可能である。
【００６２】
図１４は、データの劣化（破損）状況（データの変化状態）に応じて緊急度の設定を行い、緊急度に応じた処理を実施する例を説明するためのフローチャートである。
【００６３】
不揮発性メモリである不揮発性メモリ２３からデータを読み出した後に、読み出したデータの劣化（破損）状況（データの変化状態）を判定する（ＳＴ４１）。
データの劣化がある場合、その度合いに応じて緊急度を割り当てる（ＳＴ４２）。
割り当てた（設定した）緊急度が、あらかじめ設定したレベルより低い場合は（ＳＴ４３）、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行する（ＳＴ４４）。
割り当てた（設定した）緊急度が、あらかじめ設定したレベルに達している場合（ＳＴ４３）、緊急度が高いものとして、直ちにリフレッシュ動作を行う（ＳＴ４５）
【００６４】
図１５は、本実施形態において、閾値設定と訂正不可能状態までの猶予期間を併せて示す図である。
【００６５】
本実施形態においては、データの信頼性が低下しはじめている低い閾値を超えたところで、そのデータをリフレッシュ動作対象とし、システムの処理速度を低下させないアイドル時間に順次リフレッシュ動作を行うことで、処理速度の低下を防止する。
ここでの閾値を低くすることで、信頼性の低下を検知してから、リフレッシュ動作を行えるまでの間隔が空いたとしても、図１５に示すような猶予期間ＧＲＣＰがあり、誤り訂正符号を用いて訂正可能な状態でリフレッシュ動作を行うことが可能である。
【００６６】
以上説明したように、本実施形態によれば、以下の効果を得ることができる。
従来手法では、閾値を超えた場合、すぐさまリフレッシュ動作を行わなければならず、処理速度を低下させてしまう。これを防ぐために、閾値を高めてしまうと、データの信頼性が著しく低下したときにリフレッシュ動作を行うことになるため、すでに誤り訂正符号を用いても訂正することができなくなる可能性が高くなる。逆に閾値を低く設定してしまうと、リフレッシュ動作を行わなければならない可能性が高くなり、処理速度の低下を招きやすくなってしまう。
本実施形態においては、データの信頼性が低下しはじめている低い閾値を超えたところで、そのデータをリフレッシュ動作対象とし、システムの処理速度を低下させないアイドル時間に順次リフレッシュ動作を行うことで、処理速度の低下を防止する。
ここでの閾値を低くすることで、信頼性の低下を検知してから、リフレッシュ動作を行えるまでの間隔が空いたとしても、誤り訂正符号を用いて訂正可能な状態でリフレッシュ動作を行うことができる。
また、信頼性が著しく低下している高い閾値を設け、この閾値を超えたデータに対しては、処理速度を犠牲にしても即座にリフレッシュ動作を行うことができる。
これにより、システムの稼働率が著しく高くない場合には、早期にリフレッシュ動作を行うことができるため、データの信頼性をより高めることが可能になる。
【００６７】
上述した本実施形態に限らず、本発明の要旨を逸脱しない限り、適宜、変更しうることはいうまでもない。
【００６８】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【符号の説明】
【００６９】
２０・・・メモリ装置、２１・・・制御部、２１１・・・プロセッサ、２１２・・・ＥＣＣコントローラ、２２・・・メモリ、２２１・・・バッファＲＡＭ、２２２・・・内部ＲＡＭ、２３・・・不揮発性メモリ、２４・・・ホストＩ／Ｆ、２５・・・バス。
【図１】
2012133642.tif 000003
【図２】
2012133642.tif 000004
【図３】
2012133642.tif 000005
【図４】
2012133642.tif 000006
【図５】
2012133642.tif 000007
【図６】
2012133642.tif 000008
【図７】
2012133642.tif 000009
【図８】
2012133642.tif 000010
【図９】
2012133642.tif 000011
【図１０】
2012133642.tif 000012
【図１１】
2012133642.tif 000013
【図１２】
2012133642.tif 000014
【図１３】
2012133642.tif 000015
【図１４】
2012133642.tif 000016
【図１５】
2012133642.tif 000017