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