説明

メモリ装置、メモリ制御方法、およびプログラム

【課題】処理速度の低下を防止でき、状況に応じた的確なリフレッシュ動作を実現することが可能なメモリ装置、メモリ制御方法、およびプログラムを提供する。
【解決手段】メモリ装置20は、ブロック単位にデータの消去が行われ、このブロックに対するデータの書き込みおよび読み出しが行われる不揮発性メモリ23と、不揮発性メモリのアクセス動作を制御し、不揮発性メモリのデータ変化状態のレベルを監視して不揮発性メモリのリフレッシュ動作を制御する制御部21と、を有し、制御部21は、複数設定されたリフレッシュ動作実行の緊急度とデータ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリのリフレッシュ機能を有するメモリ装置、メモリ制御方法、およびプログラムに関するものである。
【背景技術】
【0002】
パーソナルコンピュータ、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の外部記憶装置として、不揮発性メモリであるフラッシュメモリを備えたメモリ装置が知られている。
フラッシュメモリは、データの書き込みおよび読み出しを、ブロック単位より小さいページ単位等でランダムに行うことができるが、データの消去はランダムではなくブロック単位で行われる。
【0003】
フラッシュメモリの一つであるNANDフラッシュメモリは年々、製造プロセスの微細化が進み、データの信頼性が低下しており、それに伴って、メモリコントローラには、より高い訂正能力を持った誤り訂正回路が求められてきている。
【0004】
NANDフラッシュメモリでは、書き込まれたデータを読み出した際に、ビット化けなどが発生した場合に備えて、誤り訂正符号を用いて、データの信頼性を高めてきた。
しかし、NANDフラッシュメモリのプロセス微細化により、書き込まれたデータを繰り返し読み出した場合や、長期間放置した場合にデータのビット化けが発生する現象が発生しやすくなっており、訂正しきれないほどのビット化けが発生しやすくなってきている。
【0005】
こうした状況に対して、ビット化けが発生したものを訂正するだけではなく、図1に示すように、訂正が可能なうちにリフレッシュ動作を行うことにより、ビット化けが発生しにくい状況にする手法が提案されている。
図1の例では、信頼性の低下したブロックからデータを訂正しながら読み出し、読み出したデータを、ECC(Error Correcting Circuit)などを用いて訂正し、再度読み出したブロックとは別のブロックへ書き込むというリフレッシュ動作を行っている。
【0006】
提案されているリフレッシュ手法は、ビット化けの発生数や、読み出しや書き換えの回数などが、一定の閾値を超えた場合、すなわちデータの信頼性が一定の閾値を下回った場合にリフレッシュ動作を行うものである(たとえば特許文献1,2,3参照)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2009−205578号公報
【特許文献2】特開平7−220486号公報
【特許文献3】特開平8−147988号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述したように、提案されているリフレッシュ手法は、ビット化けの発生数や、読み出しや書き換えの回数などが、一定の閾値を超えた場合、すなわちデータの信頼性が一定の閾値を下回った場合にリフレッシュ動作を行う。
【0009】
図2は、ホスト装置からメモリ装置へのアクセス、リフレッシュ動作、およびリフレッシュ動作によるオーバヘッドを模式的に示す図である。
【0010】
たとえばホスト装置1からメモリ装置2のコントロールデバイス2Aに書き込みや読み出しのコマンドが送信される。
コントロールデバイス2A、コマンドに応じた書き込みや読み出しのオペレーションを不揮発性メモリ2Bに対して実行する。この間、不揮発性メモリ2Bはビジー状態となる。
そして、コントロールデバイス2Aは、データの信頼性が一定の閾値を下回った場合にリフレッシュ動作を行う。
【0011】
しかしながら、このリフレッシュ手法では、閾値を下回る状態が発生すると直ちにリフレッシュ動作を開始するため、信頼性を確保する代わりに、リフレッシュ時間がオーバヘッド時間となって、処理速度を低下させてしまうという不利益がある。
これを防ぐために、閾値を高めてしまうと、データの信頼性が著しく低下したときにリフレッシュ動作を行うことになるため、すでに誤り訂正符号を用いても訂正することができなくなる可能性が高くなる。
逆に、閾値を低く設定してしまうと、リフレッシュ動作を行わなければならない可能性が高くなり、処理速度の低下を招きやすくなってしまう。
【0012】
本発明は、処理速度の低下を防止でき、状況に応じた的確なリフレッシュ動作を実現することが可能なメモリ装置、メモリ制御方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【0013】
本発明の第1の観点のメモリ装置は、ブロック単位にデータの消去が行われ、当該ブロックに対するデータの書き込みおよび読み出しが行われる不揮発性メモリと、前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御部と、を有し、前記制御部は、複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う。
【0014】
本発明の第2の観点のメモリ制御方法は、ブロック単位にデータの消去が行われる不揮発性メモリに対して、当該ブロックに対するデータの書き込みまたは読み出しを行うアクセスステップと、前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御ステップと、を有し、前記制御ステップでは、複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う。
【0015】
本発明の第3の観点は、ブロック単位にデータの消去が行われる不揮発性メモリに対して、当該ブロックに対するデータの書き込みまたは読み出しを行うアクセス処理と、前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御処理と、を有し、前記制御処理では、複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行うメモリ制御処理をコンピュータに実行させるプログラムである。
【発明の効果】
【0016】
本発明によれば、処理速度の低下を防止でき、状況に応じた的確なリフレッシュ動作を実現することができる。
【図面の簡単な説明】
【0017】
【図1】訂正が可能なうちにリフレッシュ動作を説明するための図である。
【図2】ホスト装置からメモリ装置へのアクセス、リフレッシュ動作、およびリフレッシュ動作によるオーバヘッドを模式的に示す図である。
【図3】本実施形態に適用される情報処理システムの概略構成を示す図である。
【図4】図3に示されるメモリ装置のより具体的な構成例を示すブロック図である。
【図5】不揮発性メモリ(フラッシュメモリ)のデータの信頼性について説明するための図である。
【図6】メモリ装置における不揮発性メモリのリフレッシュ動作の基本的なデータの流れを示す図である。
【図7】基本的なリフレッシュ動作のフローチャートである。
【図8】一般的なリフレッシュ方法を説明するための図である。
【図9】本実施形態に係るリフレッシュ方法を説明するための図である。
【図10】本実施形態におけるリフレッシュ動作の緊急度の割り当て例を示す図である。
【図11】本実施形態において、データのビット化け発生数と併せて、該当ブロックに対するアクセス回数も用いて閾値を設定する場合の緊急度に応じたリフレッシュ動作を規定するリフレッシュリスト例を示す図である。
【図12】一つのブロック内で信頼性を判断する値がばらついていた場合を示す図である。
【図13】ブロック内の信頼性を表すビットエラー値取得フローを示す図である。
【図14】データの劣化(破損)状況(データの変化状態)に応じて緊急度の設定を行い、緊急度に応じた処理を実施する例を説明するためのフローチャートである。
【図15】本実施形態において、閾値設定と訂正不可能状態までの猶予期間を併せて示す図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態を添付図面に関連付けて説明する。
なお、説明は以下の順序で行う。
1.情報処理システムの全体構成の概要
2.メモリ装置のリフレッシュ動作制御の概要
3.メモリ装置のリフレッシュ動作制御の具体例
【0019】
<1.情報処理システムの全体構成の概要>
図3は、本発明の実施形態に適用される情報処理システムの概略構成を示す図である。
【0020】
図3に示すように、この情報処理システムは、ホスト装置10と、ホスト装置10に着脱自在に装着可能な情報処理装置としてのメモリ装置20を主構成要素として有している。本実施形態において、メモリ装置20はNANDフラッシュメモリ等の不揮発性メモリを含んで構成されている。
【0021】
ホスト装置10は、パーソナルコンピュータ(PC)、デジタルスチルカメラ、デジタルビデオカメラ、オーディオレコーダ等の機器により形成される。
ホスト装置10は、制御部11、メモリ12、ディスプレイ13、入出力処理(I/O)部14、および外部メモリインタフェース(I/F)15を備える。
制御部11は、メモリ12、ディスプレイ13、I/O部14および外部メモリI/F15とバス16を介し相互に接続されている。
メモリ12は、プログラム格納用のROM、作業用メモリであるRAM等を有する。
外部メモリI/F15は、制御部11の制御命令に従ってメモリ装置20との間でデータを送受する。
【0022】
メモリ装置20は、制御部21、メモリ22、不揮発性メモリ23、およびホストI/F24を備える。
制御部21は、メモリ22、不揮発性メモリ23およびホストI/F24とバス25を介し相互に接続されている。
メモリ22は、プログラム格納用のROM、作業用メモリであるRAM等を有する。メモ22は、たとえば内部(Internal)RAM、バッファ(Buffer)RAMを含む。
不揮発性メモリ23は、たとえば、NAND型あるいはNOR型のフラッシュメモリにより形成される。本実施形態では、不揮発性メモリとしてNANDフラッシュメモリを例に説明する。
ホストI/F24は、制御部21の制御命令に従ってホスト装置10との間でデータを送受する。
【0023】
図4は、図3に示されるメモリ装置20のより具体的な構成例を示すブロック図である。
【0024】
メモリ装置20は、ホスト装置10に装着されているとき、ホスト装置10から供給されるデータが書き込まれ、記憶したデータが読み出される。
【0025】
メモリ装置20は、制御部21として、プロセッサ(Processor)211、およびエラー訂正部としての機能を含むECCコントローラ212を含んで構成されている。
また、メモリ22は、バッファRAM221および内部RAM222を含んで構成される。
【0026】
プロセッサ211は、ホストI/F24を通してのホスト装置10との間のコマンドやデータの転送制御、ECCコントローラ212を通しての不揮発性メモリ23に対しての書き込みや読み出し制御等、メモリ装置20全体の制御を行う。
【0027】
ECCコントローラ212は、プロセッサ211の制御の下、不揮発性メモリ23に対して、必要に応じて書き込みデータに誤り訂正符号を付加してデータを書き込み、読出し時にエラー検出と訂正を行うことによって、データの信頼性を改善する機能を含む。
また、ECCコントローラ212は、プロセッサ211の制御の下、不揮発性メモリ23の状態に応じて、データ信頼性向上のためにリフレッシュ動作を行う。ECCコントローラ212は、後で詳述するように、リフレッシュ動作を行うかどうかの判断を行う閾値を複数段階に分けて判断する機能を有する。
ECCコントローラ212は、リフレッシュ動作時には、内部RAM222に一旦不揮発性メモリ23の一ブロックから読み出したデータを退避させ、退避させたデータを他のブロックに書き戻す。
ECCコントローラ212は、リフレッシュ動作でない非リフレッシュ動作時は、バッファRAM221に一時的に保持されるデータに対する処理を行う。
【0028】
たとえばNANDフラッシュメモリにより形成される不揮発性メモリ23は、ブロック単位にデータの消去が行われ、ブロックに対してブロック単位より小さい、たとえばページ単位でデータの書き込みおよび読み出しが行われる。
【0029】
<2.メモリ装置のリフレッシュ動作制御の概要>
以下に、本実施形態に係るメモリ装置20におけるリフレッシュ動作制御の概要について説明する。
【0030】
本実施形態においては、制御部21のECCコントローラ212は、プロセッサ211の制御の下、不揮発性メモリ23のデータ変化状態のレベルを監視して、不揮発性メモリ23のリフレッシュ動作を制御する。
ECCコントローラ212は、複数設定されたリフレッシュ動作実行の緊急度と監視して得られるデータ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う。
なお、データ変化状態のレベルとはデータの信頼性を判断するための情報である。
緊急度を設定するために必要な、信頼性を判断する値は、データのビット化け発生数、データの書き換え回数、データの読み出し回数、書き込まれてからの経過時間などどのような値も条件とすることが可能である。
【0031】
本実施形態においては、たとえば複数の緊急度として、少なくとも高い緊急度に対応した第1の閾値TH1と低い緊急度に対応した第2の閾値TH2とが設定される。
制御部21のECCコントローラ212は、データ変化状態のレベルが第2の閾値TH2以上であり第1の閾値TH1より低い場合には、緊急度は低いとして直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行する。
ここで、システムのパフォーマンスに影響のないタイミングとは、アイドル期間等のプロセッサ211やECCコントローラ212の負荷のない、あるいは負荷の少ない期間である。
ECCコントローラ212は、データ変化状態のレベルが第1の閾値TH1に達している場合、緊急度が高いとして直ちにリフレッシュ動作を行う。
【0032】
また、本実施形態においては、後で具体的に例示するが、複数の緊急度として、第2の閾値TH2に対応する緊急度より低い緊急度に対応する第3の閾値TH3が設定される。
また、さらに、複数の緊急度として、および不揮発性メモリ23へのアクセス数または不揮発性メモリ23の書き込みからの経過時間(放置時間)に関する第4の閾値TH4がさらに設定される。
ECCコントローラ212は、データ変化状態のレベルが第3の閾値TH3以上で第2の閾値TH2以下の場合、リフレッシュ動作を行わないように制御する。
また、ECCコントローラ212は、不揮発性メモリ23へのアクセス数または不揮発性メモリ23の放置時間が第4の閾値TH4に達している場合、次のように制御を行う。
この場合、ECCコントローラ212は、データ変化状態のレベルが第3の閾値TH3以上で第2の閾値TH2以下の場合であっても、リフレッシュ動作を行うように制御する。
【0033】
また、ECCコントローラ212は、不揮発性メモリ23の一つのブロック内において、データ変化状態のレベルがばらついている場合、最も高い緊急度に対応するレベルを適用して、複数設定されたリフレッシュ動作実行の緊急度との比較処理を行う。
【0034】
また、ECCコントローラ212は、不揮発性メモリ23からデータを読み出した後に、読み出したデータの変化状態に応じて緊急度の設定を行い、設定した緊急度に応じたリフレッシュ動作を行う。
この場合、ECCコントローラ212は、設定した緊急度が、あらかじめ設定したレベルより低い場合は、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行するように制御する。
ECCコントローラ212は、設定した緊急度が、あらかじめ設定したレベルに達している場合、直ちにリフレッシュ動作を行うように制御する。
【0035】
<3.メモリ装置のリフレッシュ動作制御の具体例>
次に、本実施形態に係るメモリ装置20におけるリフレッシュ動作制御の具体例について、図面に関連付けて説明する。
以下では、上述の記載と重複する部分もあるが、フラッシュメモリの特性や本実施形態のリフレッシュ動作制御を行う理由等も含めて説明する。
【0036】
図5は、不揮発性メモリ(フラッシュメモリ)のデータの信頼性について説明するための図である。図5において、横軸は不揮発性メモリに対するデータの読み出し、書き込みの実時間を、縦軸は不揮発性メモリにおけるデータの信頼度の相対的な値を、それぞれ示している。
図6は、メモリ装置における不揮発性メモリのリフレッシュ動作の基本的なデータの流れを示す図である。
図7は、基本的なリフレッシュ動作のフローチャートである。
図8は、一般的なリフレッシュ方法を説明するための図である。
図9は、本実施形態に係るリフレッシュ方法を説明するための図である。
図8および図9において、横軸は不揮発性メモリに対するデータの読み出し、書き込みの実時間を、縦軸は不揮発性メモリのリフレッシュ動作実行の緊急度の相対的な値を、それぞれ示している。
【0037】
本実施形態に係るメモリ装置20は、図4に示すように、半導体不揮発性メモリを主たる記憶媒体とする。
そのフラッシュメモリにより形成される不揮発性メモリ23は、図5に示すように、実時間の経過や、読み出しや書き込み処理を繰り返し行うことによりデータの信頼性が低下するような特性を持つ。
【0038】
こうした情報処理システムにおいて、データの信頼性低下を防ぐ方法として、リフレッシュ方法を採用している。
リフレッシュ処理では、図6に示すように、ECCコントローラ212が、不揮発性メモリ23から信頼性の低下したブロックBLKxからデータを訂正しながら読み出し(ST1,ST2)、読み出したデータを、ECCなどを用いて訂正する。そして、ECCコントローラ212は、不揮発性メモリ23の再度読み出したブロックとは別のブロックBLKyへ書き込む(ST3,ST4)、というリフレッシュ動作を行っている。
【0039】
具体的な処理としては、図7に示すような処理が行われる。
まず、変数pgを0に設定し(ST11)、リフレッシュソースブロック(Refresh Source Block)から所定のページ番号のデータを読み出す(ST12)。
そして、ECCコントローラ212を通してデータの訂正を行い(ST13)、読み出しとは異なるリフレッシュデスティネーションブロック(Refresh Destination Block)の所定の番号のページに書き戻す(ST14)。
変数pgをインクリメントし(ST15)、リフレッシュソースブロックの書き込まれている最終ページまでステップST12からの処理を繰り返す(ST16)。
最終ページまでの書き戻す処理が完了すると、リフレッシュソースブロックを消去する(ST17)。
【0040】
このリフレッシュ動作のタイミングとして、一般的に、図8に示すように、信頼性を表す値が一定の閾値THを下回った場合に、不揮発性メモリ上のデータのリフレッシュを行う方法が用いられている。
【0041】
本実施形態では、1種類の信頼性を表す値、もしくは複数種類の信頼性を表す値を用いて、図9に示すように、2つ以上の複数の緊急度EML〜EML4を設け、複数の信頼性、すなわち複数の緊急度を割り当て、その緊急度に応じたリフレッシュ動作を行う。
【0042】
上述したように、緊急度を設定するために必要な、信頼性を判断する値は、データのビット化け発生数、データの書き換え回数、データの読み出し回数、書き込まれてからの経過時間などどのような値を条件としても良い。
【0043】
また、緊急度の設定(割り当て)を、単一の信頼性を判断する値に基づいて設定しても、複数の値に基づいて設定しても良い。
【0044】
図10(A)〜(C)は、本実施形態におけるリフレッシュ動作の緊急度の割り当て例を示す図である。
【0045】
図10(A)の例では、ビットエラー数を取得し(ST21)、そのビットエラー数を緊急度として割り当てる(ST22)。
図10(B)の例では、読み出しデータのカウント値を取得し(ST23)、その読み出しデータのカウント値を緊急度として割り当てる(ST24)。
図10(C)の例では、ビットエラー数を取得し(ST25)、読み出しデータのカウント値を取得し(ST26)、ビットエラー数および読み出しデータのカウント値の両方を緊急度として割り当てる(ST27)。
【0046】
さらに具体例を示す。
たとえば、データのビット化け発生数を用いた場合に、次のような複数段階の閾値を設定する。
【0047】
この例では、1ビットエラーを、第3の閾値TH3として割り当てる。
読み出しや書き込みを行うときに発生しうるビットエラー数(不揮発性メモリ製造者が定義する値)を、第2の閾値TH2として割り当てる。
ECCコントローラ212の訂正可能な最大ビットエラー数を、第1の閾値TH1として割り当てる。
【0048】
例としては、第3の閾値TH3については、エラーが発生したかどうかを監視するために設定されている。
第2の閾値TH2については、不揮発性メモリの信頼性低下とは関係なしで発生しうるビットエラー数が設定されている。
第1の閾値TH1については、訂正不可能になる直前で、データの正当性を担保できる限界のポイントが設定されている。
【0049】
このように設定することで、ECCコントローラ212は、第3の閾値TH3以上、第2の閾値TH2以下の場合にはリフレッシュ処理を行わない。
ECCコントローラ212は、第2の閾値TH2を超える場合にはリフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する。
ECCコントローラ212は、第3の閾値TH3の場合には即座にリフレッシュを行うなどの緊急度に応じた処理を行うことが可能となる。
【0050】
また、データのビット化け発生数と併せて、該当ブロックに対するアクセス回数も用いて閾値を設定することも可能である。
この場合、上記の第1の閾値TH1、第2の閾値TH2、第3の閾値TH3に併せて該当ブロックに対するアクセス回数に対応する第4の閾値TH4が設定される。
【0051】
図11は、本実施形態において、データのビット化け発生数と併せて、該当ブロックに対するアクセス回数も用いて閾値を設定する場合の緊急度に応じたリフレッシュ動作を規定するリフレッシュリスト例を示す図である。
【0052】
図11において、後で(later)と示されているのは、リフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する場合である。
即座に(immediately)と示されているのは、即座に(直ちに)リフレッシュを行う場合である。
しない(never)と示されているのは、リフレッシュ処理を行わない場合である。
小さい(small)と示されているのは、不揮発性メモリ23へのアクセス回数が第4の閾値TH4より小さいまたは第4の閾値TH4以下の場合である。
大きい(large)と示されているのは、不揮発性メモリ23へのアクセス回数が第4の閾値TH4以上または第4の閾値TH4より大きい場合である。
【0053】
この例では、不揮発性メモリ23へのアクセス回数が第4の閾値TH4より小さいまたは第4の閾値TH4以下の場合、次のように処理される。
ECCコントローラ212は、第3の閾値TH3以上、第2の閾値TH2以下の場合にはリフレッシュ処理を行わない。
ECCコントローラ212は、第2の閾値TH2を超える場合にはリフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する。
ECCコントローラ212は、第3の閾値TH3の場合には即座にリフレッシュを行う。
【0054】
不揮発性メモリ23へのアクセス回数が第4の閾値TH4以上または第4の閾値TH4より大きい場合、経年劣化等を考慮して次のように処理される。
ECCコントローラ212は、第3の閾値TH3以上、第2の閾値TH2以下の場合にはリフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する。
ECCコントローラ212は、第2の閾値TH2を超える場合にはリフレッシュを行うが、システムのパフォーマンスに影響がないタイミングで実施する。
ECCコントローラ212は、第3の閾値TH3の場合には即座にリフレッシュを行う。
【0055】
図12は、一つのブロック内で信頼性を判断する値がばらついていた場合を示す図である。
図13は、ブロック内の信頼性を表すビットエラー値取得フローを示す図である。
【0056】
図12の例では、一つのブロックBLK1に16個のページPG0〜PG15が存在する場合を示している。
各ページPG0〜PG15内に付された数次は、各ページのビットエラー数NBEを示している。
【0057】
図12の例では、ページPG0はビットエラー数NBEが「0」、ページPG1はビットエラー数NBEが「0」、ページPG2はビットエラー数NBEが「1」、ページPG3はビットエラー数NBEが「0」である。
ページPG4はビットエラー数NBEが「0」、ページPG5はビットエラー数NBEが「3」、ページPG6はビットエラー数NBEが「0」、ページPG7はビットエラー数NBEが「0」である。
ページPG8はビットエラー数NBEが「5」、ページPG9はビットエラー数NBEが「6」、ページPG10はビットエラー数NBEが「3」、ページPG11はビットエラー数NBEが「0」である。
ページPG12はビットエラー数NBEが「10」、ページPG13はビットエラー数NBEが「0」、ページPG14はビットエラー数NBEが「2」、ページPG15はビットエラー数NBEが「0」である。
【0058】
このように、一つのブロックBLK1内において、信頼性を判断する値、ここではビットエラー数NBEがばらついていた場合、本実施形態においては、その中でもっとも信頼性の低い値に基づいて、緊急度を設定する。
ここで、ページPG12のビットエラー数NBE「10」に基づいて、緊急度が設定される。
【0059】
具体的な処理としては、図13に示すような処理が行われる。
まず、変数MAX BIT ERRORを0に設定し(ST31)、ページにおけるビットエラー数を取得する。このとき、変数をEに設定る(ST32)。
そして、MAX BIT ERRORが設定値Eより小さい場合(ST33)、MAX BIT ERROR=Eとして(ST34)、最終ページまでステップST32からの処理を繰り返す(ST35)。
【0060】
緊急度に応じたリフレッシュ動作については、システムの基準に応じて、パフォーマンスを犠牲にして即座にリフレッシュを行っても、パフォーマンスに影響を与えないタイミングでリフレッシュを行っても、緊急度が低い場合にはリフレッシュを行わなくても良い。
即座にリフレッシュを行わない領域情報を保持するリスト(リフレッシュリスト)は、システム内の揮発性メモリ上に一時的に保管されていても、不揮発性メモリ23上に保管されていても良い。
【0061】
さらに、本実施形態においては、不揮発性メモリからデータを読み出した後に、読み出したデータの劣化(破損)状況(データの変化状態)に応じて緊急度の設定を行い、緊急度に応じた処理を実施するように構成することも可能である。
【0062】
図14は、データの劣化(破損)状況(データの変化状態)に応じて緊急度の設定を行い、緊急度に応じた処理を実施する例を説明するためのフローチャートである。
【0063】
不揮発性メモリである不揮発性メモリ23からデータを読み出した後に、読み出したデータの劣化(破損)状況(データの変化状態)を判定する(ST41)。
データの劣化がある場合、その度合いに応じて緊急度を割り当てる(ST42)。
割り当てた(設定した)緊急度が、あらかじめ設定したレベルより低い場合は(ST43)、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行する(ST44)。
割り当てた(設定した)緊急度が、あらかじめ設定したレベルに達している場合(ST43)、緊急度が高いものとして、直ちにリフレッシュ動作を行う(ST45)
【0064】
図15は、本実施形態において、閾値設定と訂正不可能状態までの猶予期間を併せて示す図である。
【0065】
本実施形態においては、データの信頼性が低下しはじめている低い閾値を超えたところで、そのデータをリフレッシュ動作対象とし、システムの処理速度を低下させないアイドル時間に順次リフレッシュ動作を行うことで、処理速度の低下を防止する。
ここでの閾値を低くすることで、信頼性の低下を検知してから、リフレッシュ動作を行えるまでの間隔が空いたとしても、図15に示すような猶予期間GRCPがあり、誤り訂正符号を用いて訂正可能な状態でリフレッシュ動作を行うことが可能である。
【0066】
以上説明したように、本実施形態によれば、以下の効果を得ることができる。
従来手法では、閾値を超えた場合、すぐさまリフレッシュ動作を行わなければならず、処理速度を低下させてしまう。これを防ぐために、閾値を高めてしまうと、データの信頼性が著しく低下したときにリフレッシュ動作を行うことになるため、すでに誤り訂正符号を用いても訂正することができなくなる可能性が高くなる。逆に閾値を低く設定してしまうと、リフレッシュ動作を行わなければならない可能性が高くなり、処理速度の低下を招きやすくなってしまう。
本実施形態においては、データの信頼性が低下しはじめている低い閾値を超えたところで、そのデータをリフレッシュ動作対象とし、システムの処理速度を低下させないアイドル時間に順次リフレッシュ動作を行うことで、処理速度の低下を防止する。
ここでの閾値を低くすることで、信頼性の低下を検知してから、リフレッシュ動作を行えるまでの間隔が空いたとしても、誤り訂正符号を用いて訂正可能な状態でリフレッシュ動作を行うことができる。
また、信頼性が著しく低下している高い閾値を設け、この閾値を超えたデータに対しては、処理速度を犠牲にしても即座にリフレッシュ動作を行うことができる。
これにより、システムの稼働率が著しく高くない場合には、早期にリフレッシュ動作を行うことができるため、データの信頼性をより高めることが可能になる。
【0067】
上述した本実施形態に限らず、本発明の要旨を逸脱しない限り、適宜、変更しうることはいうまでもない。
【0068】
また、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【符号の説明】
【0069】
20・・・メモリ装置、21・・・制御部、211・・・プロセッサ、212・・・ECCコントローラ、22・・・メモリ、221・・・バッファRAM、222・・・内部RAM、23・・・不揮発性メモリ、24・・・ホストI/F、25・・・バス。

【特許請求の範囲】
【請求項1】
ブロック単位にデータの消去が行われ、当該ブロックに対するデータの書き込みおよび読み出しが行われる不揮発性メモリと、
前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御部と、を有し、
前記制御部は、
複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う
メモリ装置。
【請求項2】
前記複数の緊急度として、少なくとも高い緊急度に対応した第1の閾値と低い緊急度に対応した第2の閾値とが設定され、
前記制御部は、
前記データ変化状態のレベルが前記第2の閾値以上であり前記第1の閾値より低い場合には、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行し、
前記データ変化状態のレベルが前記第1の閾値に達している場合、直ちにリフレッシュ動作を行う
請求項1記載のメモリ装置。
【請求項3】
前記複数の緊急度として、前記第2の閾値に対応する緊急度より低い緊急度に対応する第3の閾値が設定され、
前記制御部は、
前記データ変化状態のレベルが前記第3の閾値以上で前記第2の閾値以下の場合、リフレッシュ動作を行わない
請求項2記載のメモリ装置。
【請求項4】
前記複数の緊急度として、前記不揮発性メモリへのアクセス数または当該不揮発性メモリの放置時間に関する第4の閾値が設定され、
前記制御部は、
前記不揮発性メモリへのアクセス数または当該不揮発性メモリの放置時間が前記第4の閾値に達している場合、前記データ変化状態のレベルが前記第3の閾値以上で前記第2の閾値以下の場合であっても、リフレッシュ動作を行う
請求項3記載のメモリ装置。
【請求項5】
前記制御部は、
一つのブロック内において、前記データ変化状態のレベルがばらついている場合、最も高い緊急度に対応するレベルを適用して、複数設定されたリフレッシュ動作実行の緊急度との比較処理を行う
請求項1から4のいずれか一に記載のメモリ装置。
【請求項6】
前記制御部は、
前記不揮発性メモリからデータを読み出した後に、読み出したデータの変化状態に応じて緊急度の設定を行い、当該設定した緊急度に応じたリフレッシュ動作を行う
請求項1から5のいずれか一に記載のメモリ装置。
【請求項7】
前記制御部は、
前記設定した緊急度が、あらかじめ設定したレベルより低い場合は、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行し、
前記設定した緊急度が、あらかじめ設定したレベルに達している場合、直ちにリフレッシュ動作を行う
請求項6記載のメモリ装置。
【請求項8】
前記制御部は、
前記不揮発性メモリに対して、必要に応じて書き込みデータに誤り訂正符号を付加してデータを書き込み、読出し時にエラー検出と訂正を行うエラー訂正部を含む
請求項1から7のいずれか一に記載のメモリ装置。
【請求項9】
ブロック単位にデータの消去が行われる不揮発性メモリに対して、当該ブロックに対するデータの書き込みまたは読み出しを行うアクセスステップと、
前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御ステップと、を有し、
前記制御ステップでは、
複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う
メモリ制御方法。
【請求項10】
前記複数の緊急度として、少なくとも高い緊急度に対応した第1の閾値と低い緊急度に対応した第2の閾値とが設定され、
前記制御ステップにおいては、
前記データ変化状態のレベルが前記第2の閾値以上であり前記第1の閾値より低い場合には、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行し、
前記データ変化状態のレベルが前記第1の閾値に達している場合、直ちにリフレッシュ動作を行う
請求項9記載のメモリ制御方法。
【請求項11】
前記複数の緊急度として、前記第2の閾値に対応する緊急度より低い緊急度に対応する第3の閾値が設定され、
前記制御ステップにおいては、
前記データ変化状態のレベルが前記第3の閾値以上で前記第2の閾値以下の場合、リフレッシュ動作を行わない
請求項10記載のメモリ制御方法。
【請求項12】
前記複数の緊急度として、前記不揮発性メモリへのアクセス数または当該不揮発性メモリの放置時間に関する第4の閾値が設定され、
前記制御ステップにおいては、
前記不揮発性メモリへのアクセス数または当該不揮発性メモリの放置時間が前記第4の閾値に達している場合、前記データ変化状態のレベルが前記第3の閾値以上で前記第2の閾値以下の場合であっても、リフレッシュ動作を行う
請求項11記載のメモリ制御方法。
【請求項13】
前記制御ステップにおいては、
一つのブロック内において、前記データ変化状態のレベルがばらついている場合、最も高い緊急度に対応するレベルを適用して、複数設定されたリフレッシュ動作実行の緊急度との比較処理を行う
請求項9から12のいずれか一に記載のメモリ制御方法。
【請求項14】
前記制御ステップにおいては、
前記不揮発性メモリからデータを読み出した後に、読み出したデータの変化状態に応じて緊急度の設定を行い、当該設定した緊急度に応じたリフレッシュ動作を行う
請求項9から13のいずれか一に記載のメモリ制御方法。
【請求項15】
前記制御部は、
前記設定した緊急度が、あらかじめ設定したレベルより低い場合は、直ちにリフレッシュ動作は行わず、システムのパフォーマンスに影響のないタイミングで実行し、
前記設定した緊急度が、あらかじめ設定したレベルに達している場合、直ちにリフレッシュ動作を行う
請求項14記載のメモリ制御方法。
【請求項16】
前記制御ステップにおいては、
前記不揮発性メモリに対して、必要に応じて書き込みデータに誤り訂正符号を付加してデータを書き込み、読出し時にエラー検出と訂正を行う
請求項9から15のいずれか一に記載のメモリ制御方法。
【請求項17】
ブロック単位にデータの消去が行われる不揮発性メモリに対して、当該ブロックに対するデータの書き込みまたは読み出しを行うアクセス処理と、
前記不揮発性メモリのアクセス動作を制御し、前記不揮発性メモリのデータ変化状態のレベルを監視して前記不揮発性メモリのリフレッシュ動作を制御する制御処理と、を有し、
前記制御処理では、
複数設定されたリフレッシュ動作実行の緊急度と前記データ変化状態のレベルとの比較結果に応じたリフレッシュ動作を行う
メモリ制御処理をコンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2012−133642(P2012−133642A)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願番号】特願2010−286120(P2010−286120)
【出願日】平成22年12月22日(2010.12.22)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】