説明

メモリ制御装置及びメモリ制御方法

【課題】
ウエアレベリングを効率良く、かつ、合理的に行う。
【解決手段】
メモリ利用モジュール900から送られた書き込み要求WRQを受けた場合に、アクセス制御部150が、現在時刻TMD、書き込み対象の候補となったアクセス単位ブロックの現時点における検出エラービット数EBN、並びに、不揮発性メモリ200内の管理領域に記憶されている当該書き込み対象の候補となったアクセス単位ブロックに関する最新書込時刻、及び、最新の書き込み時における検出エラービット数を取得する。引き続き、アクセス制御部150は、これらの取得結果に基づいて、最新の書き込み時から現時点までの検出エラービット数の時間変化率を算出し、算出された時間変化率に基づいて、当該書き込み対象の候補となったアクセス単位ブロックが、不揮発性メモリ200に関する消去回数の平準化のために利用できるか否かを判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ制御装置、メモリ制御方法及びメモリ制御プログラム、並びに、当該メモリ制御プログラムが記録された記録媒体に関する。
【背景技術】
【0002】
従来から、書き換え可能な不揮発性メモリ素子であるフラッシュメモリ素子を採用したメモリシステムが注目されている。こうしたフラッシュメモリ素子は、電荷保持技術としてフローティングゲート技術を用いるものが一般的である。
【0003】
かかるフローティングゲート技術を用いるフラッシュメモリ素子は、データの書き換えのためには、当該書き換えの対象となる記憶ブロックの記憶内容を消去することが必要となるが、当該消去を繰り返すと、徐々にフローティングゲートの電荷保持機能が劣化する。このため、フローティングゲート技術を用いるフラッシュメモリ素子を用いるメモリシステムでは、メモリシステム全体として寿命を確保するため、記憶ブロックそれぞれの消去回数(すなわち、書き換え回数)の平準化(ウエアレベリング)を行うことが、広く行われている。
【0004】
ところで、フラッシュメモリ素子におけるフローティングゲートの品質は一様ではないため、消去動作による記憶ブロックのフローティングゲートの劣化の度合いが一様ではない。このため、書き込み対象となった記憶ブロックの関する消去回数に加えて、当該記憶ブロックに記憶されているデータにおけるエラービット数を考慮して、当該書き込み対象となった記憶ブロックに新たなデータを書き込むか否かを判定する技術が提案されている(特許文献1参照:以下、「従来例」という)。この従来例の技術では、エラービット数が所定数以上となっている記憶ブロックのデータ消去及び新たなデータの書き込みを見合わせるようになっている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−70379号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上述した従来例の技術では、エラービット数が所定数以上となっている記憶ブロックについては、一律にデータ消去及び新たなデータの書き込みを見合わせる。このため、ビットエラーの発生が、フローティングゲートの電荷保持機能の劣化に伴うものではなく、例えば、フラッシュメモリ素子の製造時における異物の混入に起因する場合であっても、エラービット数が所定数以上となっている記憶ブロックについては、データ消去及び新たなデータの書き込みを見合わせる。
【0007】
この結果、フローティングゲートの電荷保持機能が良好であり、かつ、エラー訂正機能によりエラー訂正が可能な数のエラービットが発生するのみである記憶ブロックであっても、エラービット数が所定数以上となっている記憶ブロックについては、データ消去及び新たなデータの書き込みが見合わされることになる。この結果、ウエアレベリングに貢献できる記憶ブロックであってもウエアレベリングに利用されず、メモリシステム全体として本来確保できるはずの寿命を確保できない事態が発生していた。
【0008】
このため、ウエアレベリングに貢献できる記憶ブロックを、効率的にウエアレベリングに利用できる技術が待望されている。かかる要請に応えることが、本発明が解決すべき課題の一つとして挙げられる。
【0009】
本発明は、上記の事情に鑑みてなされたものであり、ウエアレベリングを効率良く、かつ、合理的に行うことにより、メモリシステム全体の寿命を有効に確保することができるメモリ制御装置及びメモリ制御方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
請求項1に記載の発明は、エラー検出の単位となる第1記憶ブロックを複数有し、前記第1記憶ブロックの記憶データの書き換えに際しては、書き換え前の前記第1記憶ブロックにおける記憶データの消去後に、新たな記憶データが書き込まれる第1不揮発性メモリ部へのアクセスを制御するメモリ制御装置であって、時刻を計時する計時部と;前記第1不揮発性メモリ部から読み取られたデータのエラー検出を行ってエラービットの数を検出するエラー検出部と;前記第1不揮発性メモリ部への書き込み要求を受けた場合に、書き込み対象の候補となった第1記憶ブロックに関する最新の書き込み時刻と、最新の書き込み時における検出エラービット数と、現在時刻と、現時点における検出エラービット数とから算出された前記最新の書き込み時から現時点までの検出エラービット数の時間変化率に基づいて、前記書き込み対象の候補となった第1記憶ブロックが、前記第1不揮発性メモリ部に関する消去回数の平準化のために利用できるか否かの第1書き込み判定を行うアクセス制御部と;を備えることを特徴とするメモリ制御装置である。
【0011】
請求項8に記載の発明は、エラー検出の単位となる記憶ブロックを複数有し、前記記憶ブロックの記憶データの書き換えに際しては、書き換え前の前記記憶ブロックにおける記憶データの消去後に、新たな記憶データが書き込まれる不揮発性メモリ部へのアクセスを制御するメモリ制御方法であって、前記不揮発性メモリ部への書き込み要求を受けた場合に、現在時刻と、書き込み対象の候補となった記憶ブロックの現時点における検出エラービット数とを取得する第1取得工程と;前記書き込み対象の候補となった記憶ブロックに関する最新の書き込み時刻と、最新の書き込み時における検出エラービット数とを取得する第2取得工程と;前記第1取得工程における取得結果及び前記第2取得工程における取得結果に基づいて、前記最新の書き込み時から現時点までの検出エラービット数の時間変化率を算出する算出工程と;前記算出工程における算出結果に基づいて、前記書き込み対象の候補となった記憶ブロックが、前記不揮発性メモリ部に関する消去回数の平準化のために利用できるか否かの書き込み判定を行う書き込み判定工程と;を備えることを特徴とするメモリ制御方法である。
【0012】
請求項9に記載の発明は、請求項8に記載のメモリ制御方法を演算手段に実行させる、ことを特徴とするメモリ制御プログラムである。
【0013】
請求項10に記載の発明は、請求項9に記載のメモリ制御プログラムが、演算手段により読み取り可能に記録されている、ことを特徴とする記録媒体である。
【図面の簡単な説明】
【0014】
【図1】本発明の一実施形態に係るメモリ制御装置の位置付けを説明するためのブロック図である。
【図2】図1の不揮発性メモリの内部構成を説明するための図である。
【図3】図1の不揮発性メモリにおける管理領域に記憶される管理情報の内容を説明するための図である。
【図4】図1のメモリコントローラの構成を説明するためのブロック図である。
【図5】図4のアクセス制御部によりメモリ書込要求に応答して行われる処理を説明するためのフローチャートである。
【図6】図5の選定ブロックの評価処理を説明するためのフローチャートである。
【図7】図5の書き込み制御処理を説明するためのフローチャートである。
【発明を実施するための形態】
【0015】
以下、本発明の一実施形態を、図1〜図7を参照して説明する。なお、以下の説明及び図面においては、同一又は同等の要素には同一の符号を付し、重複する説明を省略する。
【0016】
図1には、本発明の一実施形態に係るメモリ制御装置を備える不揮発性メモリモジュール500の構成が、ブロック図にて示されている。この図1に示されるように、不揮発性メモリモジュール500には、メモリ利用モジュール900がアクセス可能となっている。すなわち、メモリ利用モジュール900は、不揮発性メモリモジュール500からのデータの読み取り、及び、不揮発性メモリモジュール500へのデータの書き込みができるようになっている。
【0017】
かかる不揮発性メモリモジュール500からのデータの読み取りに際して、メモリ利用モジュール900は、論理アドレスADLを指定して、読み取り要求RDQを不揮発性メモリモジュール500へ送る。この結果として、不揮発性メモリモジュール500における論理アドレスADLに対応するメモリアドレスに記憶されているデータが、データバスDRWを介して、不揮発性メモリモジュール500からメモリ利用モジュール900へ送られる。
【0018】
また、不揮発性メモリモジュール500へのデータの書き込みに際して、メモリ利用モジュール900は、論理アドレスADLを指定するとともに、書き込もうとしているデータをデータバスDRWに出力しつつ、書き込み要求WRQを不揮発性メモリモジュール500へ送る。この結果として、不揮発性メモリモジュール500における論理アドレスADLに対応するメモリアドレスに、メモリ利用モジュール900が指定したデータが書き込まれる。
【0019】
上記の不揮発性メモリモジュール500は、メモリ制御装置としてのメモリコントローラ100と、不揮発性メモリ200とを備えている。
【0020】
上記のメモリコントローラ100は、メモリ利用モジュール900と不揮発性メモリ200との間に位置し、メモリ利用モジュール900によるアクセス要求に対応して必要となる不揮発性メモリ200へのアクセスを実行する。かかるメモリコントローラ100の構成については、後述する。
【0021】
上記の不揮発性メモリ200は、複数の不揮発性メモリ素子を備える。本実施形態では、当該不揮発性メモリ素子として、NAND型フラッシュメモリ素子を採用している。
【0022】
不揮発性メモリ200内には、第2不揮発性メモリ部としての管理領域210と、第1不揮発性メモリ部としての外部アクセス領域220とが用意されている。ここで、管理領域210内には、管理情報MGIが記憶される。
【0023】
上記の管理領域210は、メモリコントローラ100が独自にアクセスする領域である。メモリコントローラ100は、管理情報MGIの更新に際して、管理領域210にアクセスする。メモリコントローラ100により更新される管理情報MGIの内容については、後述する。
【0024】
上記の外部アクセス領域220は、メモリ利用モジュール900が、メモリコントローラ100を介してアクセスする領域である。メモリコントローラ100は、メモリ利用モジュール900からのアクセス要求の内容に基づいて、外部アクセス領域220からのデータの読み取り、及び、外部アクセス領域220へのデータの書き込みを行う。
【0025】
次に、上記の不揮発性メモリ200の内部構成について説明する。不揮発性メモリ200は、図2に示されるように、消去単位ブロック#1〜#Nから構成されている。こうした消去単位ブロックごとに、メモリコントローラ100が、記憶内容を消去できるようになっている。
【0026】
なお、本実施形態では、上述した管理領域210は、消去単位ブロック#1〜#Mから構成されている。また、上述した外部アクセス領域220は、消去単位ブロック#(M+1)〜#Nから構成されている。
【0027】
消去単位ブロック#j(j=1〜N)のそれぞれは、アクセス単位ブロック#j1〜#jPから構成されている。こうしたアクセス単位ブロックごとに、メモリコントローラ100が、記憶内容のアクセスを行い、エラー検出訂正(ECC)を行うようになっている。
【0028】
なお、アクセス単位ブロック#q1〜#qP(q=1〜M)のそれぞれが第2記憶ブロックに該当している。また、アクセス単位ブロック#r1〜#rP(r=(M+1)〜N)のそれぞれが第1記憶ブロックに該当している。
【0029】
次いで、上述した管理情報MGIの内容について説明する。この管理情報MGIでは、図3に示されるように、消去単位ブロック#j(j=1〜N)と、消去回数ESNj及び書き込みに関する見合わせフラグFLGjとが関連付けられて登録されている。
【0030】
ここで、「消去回数ESNj」は、消去単位ブロック#j(j=1〜N)の記憶内容の消去回数を示す。また、「見合わせフラグFLGj」は、消去単位ブロック#jが、消去回数の平準化(ウエアレベリング)に利用可能であると評価できるか否かを示すフラグである。
【0031】
なお、見合わせフラグFLGjが「ON」である場合には、消去単位ブロック#jが、ウエアレベリングに利用可能であると評価できないことを示している。一方、見合わせフラグFLGjが「OFF」である場合には、消去単位ブロック#jが、ウエアレベリングに利用可能であると評価できることを示している。
【0032】
また、管理情報MGIでは、消去単位ブロック#jに含まれるアクセス単位ブロック#jk(k=1〜P)と、エラービット数EBNjk及び最新書込時刻TWjkとが関連付けられて登録されている。ここで、「エラービット数EBNjk」は、アクセス単位ブロック#jkへの最新書込の直後において検出されたエラービット数を示している。また、「最新書込時刻TWjk」は、アクセス単位ブロック#jkへの最新書込の時刻を示している。
【0033】
なお、メモリコントローラ100は、消去回数ESNj、見合わせフラグFLGj、エラービット数EBNjk及び最新書込時刻TWjkを更新するようになっている。また、不揮発性メモリモジュール500の利用開始時においては、消去回数ESNjが「0」、見合わせフラグFLGjが「OFF」、エラービット数EBNjkが「0」、最新書込時刻TWjkが時刻として意味をなさない「初期値」に設定されているものとする。
【0034】
次に、上記のメモリコントローラ100の構成について説明する。このメモリコントローラ100は、図4に示されるように、アドレス変換部110と、選択部120と、エラー検出部としてのECC部130とを備えている。また、メモリコントローラ100は、計時部140と、アクセス制御部150とを備えている。
【0035】
上記のアドレス変換部110は、メモリ利用モジュール900から送られた論理アドレスADLを受ける。そして、アドレス変換部110は、アクセス制御部150から送られたアドレス変換情報ACDに従って、論理アドレスADLを物理アドレスADPに変換する。かかる変換により生成された物理アドレスADPは、選択部120へ送られる。
【0036】
上記の選択部120は、アクセス制御部150による選択指定SLCに従って、アドレス変換部110から送られた物理アドレスADP、及び、アクセス制御部150から送られた管理アドレスCADのいずれかを選択し、メモリアドレスMADとして不揮発性メモリ200へ送る。また、選択部120は、アクセス制御部150による選択指定SLCに従って、メモリ利用モジュール900に接続されるデータバスDRW、及び、アクセス制御部150に接続されるデータバスCDTのいずれかを選択し、ECC部130に接続される選択部側データバスADT(以下、「データバスADT」と呼ぶ)と接続する。
【0037】
ここで、「選択指定SLC」では、アクセス主体が、メモリ利用モジュール900であるか、アクセス制御部150であるかが指定される。そして、「選択指定SLC」により、アクセス主体としてメモリ利用モジュール900が指定された場合には、選択部120は、物理アドレスADPを、メモリアドレスMADとして不揮発性メモリ200へ送るとともに、データバスDRWをデータバスADTに接続する。一方、「選択指定SLC」により、アクセス主体としてアクセス制御部150が指定された場合には、選択部120は、管理アドレスCADをメモリアドレスMADとして不揮発性メモリ200へ送るとともにデータバスCDTをデータバスADTに接続する。
【0038】
上記のECC部130は、アクセス制御部150によるデータ方向指定RWCに従って、エラー検出訂正用のECCコード生成動作、又は、エラー検出訂正動作を行う。ここで、「データ方向指定RWC」では、データ方向が、データバスADTから不揮発性メモリ200と接続されるデータバスMDTへ向かう書き込み方向か、データバスMDTからデータバスADTへ向かう読み取り方向かが指定される。
【0039】
そして、「データ方向指定RWC」により書き込み方向が指定された場合には、ECC部130は、データバスADTに出力されているデータに関するECCコードを生成する。そして、ECC部130は、データバスADTに出力されているデータに当該生成されたECCコードが付加されたデータを、データバスMDTを介して、不揮発性メモリ200へ送る。
【0040】
一方、「データ方向指定RWC」により読み取り方向が指定された場合には、ECC部130は、不揮発性メモリ200からデータバスMDTに出力されているデータに対するにエラー検出訂正を行う。そして、ECC部130は、エラー訂正の結果を、データバスADTへ出力する。また、ECC部130は、検出されたエラービット数(検出エラービット数)EBNを、アクセス制御部150へ送る。
【0041】
上記の計時部140は、タイマー素子を備えている。この計時部140は、現在時刻を計時する。計時部による計時結果(現在時刻)TMDが、アクセス制御部150へ送られる。
【0042】
上記のアクセス制御部150は、メモリコントローラ100の全体を統括制御することにより、不揮発性メモリ200へのアクセスを制御する。
【0043】
アクセス制御部150は、メモリ利用モジュール900から送られた読み取り要求RDQを受けた場合には、メモリ利用モジュール900が指定した論理アドレスに対応する不揮発性メモリ200におけるメモリアドレスMADを、不揮発性メモリ200へ送るための制御を行う。また、アクセス制御部150は、当該メモリアドレスMADに記憶されたデータのうちでECCコードを除いたもののエラー訂正結果をデータバスDRWに出力するための制御を、読み取り指定MRDを不揮発性メモリ200へ送ることを含めて行う。
【0044】
また、アクセス制御部150は、メモリ利用モジュール900から送られた書き込み要求WRQを受けた場合には、消去回数に関するウエアレベリングを図りつつ、メモリ利用モジュール900が指定した論理アドレスに対応する不揮発性メモリ200におけるメモリアドレスMADを、不揮発性メモリ200へ送るための制御を行う。また、アクセス制御部150は、メモリ利用モジュール900がデータバスDRWに出力しているデータにECCコードが付加されたデータを、データバスMDTを介して不揮発性メモリ200へ送るための制御を行う。そして、アクセス制御部150は、書き込み指定MWTを不揮発性メモリ200へ送ることにより、メモリ利用モジュール900が指定したデータを、不揮発性メモリ200に書き込む。
【0045】
また、アクセス制御部150は、不揮発性メモリ200における記憶データの書き換えのために、それまでの記憶データの消去が必要となった場合には、消去対象の消去単位ブロックを指定した消去指定ERSを、不揮発性メモリ200へ送る。この結果、消去対象の消去単位ブロックに記憶されていたデータが消去される。
【0046】
また、アクセス制御部150は、ECC部130により訂正可能な最大エラービット数EBMを内部に保持している。さらに、アクセス制御部150は、消去回数(ESN)ごとに、アクセス単位ブロックのデータ保持時間の閾値時間TTH(ESN)を内部に保持している。
【0047】
かかる「閾値時間TTH(ESN)」は、フローティングゲートの形成がデータ保持時間の観点から見て適切に行われた場合に最低限期待できる消去回数に対応したデータ保持時間とするとの観点から、実験、シミュレーション、経験等に基づいて、予め定められる。
【0048】
なお、アクセス制御部150による処理の詳細については、後述する。
【0049】
[動作]
次に、上記のように構成されたメモリコントローラ100の動作について、メモリ利用モジュール900から送られた書き込み要求WRQを受けた場合のアクセス制御部150の処理に主に着目して、説明する。なお、計時部140は計時動作を開始しており、計時結果である現在時刻TMDをアクセス制御部150へ逐次送っているものとする。
【0050】
メモリコントローラ100は、メモリ利用モジュール900から送られた読み取り要求RDQ又は書き込み要求WRQに応答して動作する。
【0051】
<読み取り要求RDQに対する応答処理>
不揮発性メモリ200からのデータの読み取りに際しては、メモリ利用モジュール900が、論理アドレスADLを指定して、読み取り要求RDQを不揮発性メモリモジュール500へ送る。不揮発性メモリモジュール500では、メモリコントローラ100におけるアクセス制御部150が、当該読み取り要求RDQを受けて、読み取り制御処理を実行する。
【0052】
かかる読み取り制御処理では、アクセス制御部150が、まず、メモリ利用モジュール900から送られた読み取り要求RDQを受けたか否かを判定する。読み取り要求RDQを受けたことにより、当該判定の結果が肯定的となると、アクセス制御部150は、アクセス主体がメモリ利用モジュール900である旨を指定した選択指定SLCを選択部120へ送る。この結果、メモリ利用モジュール900により指定された論理アドレスADLに対するアドレス変換部110による変換結果である物理アドレスADPが、選択部120を介して、メモリアドレスMADとして不揮発性メモリ200へ送られる。
【0053】
次に、アクセス制御部150は、読み取り方向を指定したデータ方向指定RWCをECC部130へ送るとともに、読み取り指定MRDを不揮発性メモリ200へ送る。この結果、不揮発性メモリ200内の外部アクセス領域220におけるメモリアドレスMADに記憶されているデータが、データバスMDTを介して、ECC部130へ送られる。
【0054】
次いで、ECC部130が、不揮発性メモリ200から送られたデータのエラー検出訂正を行う。そして、ECC部130は、エラー訂正結果のデータを、データバスADTに出力する。この結果、当該エラー訂正結果のデータが、選択部120及びデータバスDRWを介して、メモリ利用モジュール900へ送られる。
【0055】
<書き込み要求WRQに対する応答処理>
不揮発性メモリ200へのデータの書き込みに際しては、メモリ利用モジュール900が、論理アドレスADLを指定するとともに、書き込もうとしているデータをデータバスDRWに出力しつつ、書き込み要求WRQを不揮発性メモリモジュール500へ送る。不揮発性メモリモジュール500では、メモリコントローラ100におけるアクセス制御部150が、当該書き込み要求WRQを受けて、書き込み制御処理を実行する。
【0056】
かかる書き込み制御処理では、図5に示されるように、まず、ステップS11において、アクセス制御部150が、メモリ利用モジュール900から送られた書き込み要求WRQを受けたか否かを判定する。この判定の結果が否定的であった場合(ステップS11:N)には、ステップS11の処理が繰り返される。
【0057】
書き込み要求WRQを受けて、ステップS11における判定の結果が肯定的となると(ステップS11:Y)、処理はステップS12へ進む。このステップS12では、アクセス制御部150が、今回の書き込み要求WRQに対応したデータ書き込みを行うための書き込み候補ブロックを、不揮発性メモリ200内の外部アクセス領域220に含まれるアクセス単位ブロック#rk(r=(M+1)〜N,k=1〜P)の中から選定する。かかる書き込み候補ブロックの選定は、消去に関するウエアレベリングを行うとの観点から定められた所定の書き込み順序決定アルゴリズムに従い、前回の書き込み要求WRQに応じた書き込みが行われたアクセス単位ブロックに基づいて、行われる。
【0058】
次に、ステップS13において、アクセス制御部150が、選定された書き込み候補ブロック(以下、「選定ブロック」と呼ぶ)について、書込利用に関する評価を行う。なお、ステップS13における処理の詳細については、後述する。
【0059】
次いで、ステップS14において、アクセス制御部150は、選定ブロックが書込利用可と評価されたか否かを判定する。この判定の結果が否定的であった場合(ステップS14:N)には、アクセス制御部150は、当該選定ブロックが属する消去単位ブロックの見合わせフラグFLGrを「ON」に設定した後に、処理をステップS15へ進める。
【0060】
なお、当該選定ブロックが属する消去単位ブロックの見合わせフラグFLGrを「ON」に設定する管理情報MGIの更新に際してのアクセス制御部150の処理については、後述する。
【0061】
ステップS15では、アクセス制御部150が、次の書き込み候補ブロックを、アクセス単位ブロック#rk(r=(M+1)〜N,k=1〜P)の中から選定する。かかる次の書き込み候補ブロックの選定は、上述した所定の書き込み順序決定アルゴリズムに従い、前回の書き込み候補ブロックに基づいて、行われる。
【0062】
ステップS15における次の書き込み候補ブロックの選定が終了すると、処理はステップS13へ戻る。そして、書込利用可と評価された書き込み候補ブロックが見出されるまで、上述のステップS13〜S15の処理が繰り返される。
【0063】
書込利用可と評価された書き込み候補ブロックが見出されて、ステップS14における判定の結果が肯定的となると(ステップS14:Y)、処理はステップS16へ進む。このステップS16では、アクセス制御部150が、書き込み制御処理を行う。この結果、メモリ利用モジュール900が指定したデータ、すなわち、メモリ利用モジュール900がデータバスDRWに出力したデータが、不揮発性メモリ200に書き込まれる。
【0064】
なお、ステップS16における処理の詳細については、後述する。
【0065】
ステップS16における書き込み制御処理が終了すると、処理はステップS11へ戻る。以後、ステップS11〜S16の処理が繰り返されて、メモリ利用モジュール900が書き込み要求WRQを発行するたびに、メモリ利用モジュール900により指定されたデータが、不揮発性メモリ200に書き込まれる。
【0066】
次に、ステップS13における選定ブロックの評価処理について説明する。なお、以下の説明においては、選定ブロックが、アクセス単位ブロック#rkであるものとして、説明する。
【0067】
かかる選定ブロックの評価処理に際しては、図6に示されるように、まず、ステップS21において、アクセス制御部150が、選定ブロックに関連して管理情報MGIに登録されている情報を読み取る。ここで、読み取られる情報は、消去回数ESNr、見合わせフラグFLGr、エラービット数EBNrk及び最新書込時刻TWrkである。
【0068】
かかる読み取りに際して、アクセス制御部150は、まず、アクセス主体がアクセス制御部150である旨を指定した選択指定SLCを選択部120へ送るとともに、読み取り情報が記憶されているメモリアドレスを、管理アドレスCADとして出力する。次に、アクセス制御部150は、読み取り方向を指定したデータ方向指定RWCをECC部130へ送るとともに、読み取り指定MRDを不揮発性メモリ200へ送る。この結果、不揮発性メモリ200内の管理領域210における指定メモリアドレスに記憶されているデータが、データバスMDTを介して、ECC部130へ送られる。
【0069】
次いで、ECC部130が、不揮発性メモリ200から送られたデータのエラー検出訂正を行う。そして、ECC部130は、エラー訂正結果のデータを、データバスADTに出力する。この結果、当該エラー訂正結果のデータが、選択部120及びデータバスCDTを介して、アクセス制御部150へ送られる。こうした読み取り処理を、必要回数行うことにより、アクセス制御部150は、選定ブロックに関連して管理情報MGIに登録されている情報を読み取る。
【0070】
引き続き、ステップS22において、アクセス制御部150が、見合わせフラグFLGrが「ON」であるか否かを判定する。この判定の結果が肯定的であった場合(ステップS22:Y)には、処理は、後述するステップS28へ進む。
【0071】
ステップS22における判定の結果が否定的であった場合(ステップS22:N)には、処理はステップS23へ進む。このステップS23では、アクセス制御部150が、最新書込時刻TWrkが書き込まれているか否かを判定する。この判定の結果が否定的であった場合(ステップS23:N)には、処理は、後述するステップS27へ進む。
【0072】
ステップS23における判定の結果が肯定的であった場合(ステップS23:Y)には、処理はステップS24へ進む。このステップS24では、アクセス制御部150が、最新書込時刻TWrkから現時点までの選択ブロックにおけるエラービット数の時間変化率REBを算出する。
【0073】
かかる時間変化率REBの算出に際して、アクセス制御部150は、まず、計時部140から送られている現在時刻TMDを取得する。引き続き、アクセス制御部150は、選択ブロックにおける現時点におけるエラービット数EBNを取得する。
【0074】
かかるエラービット数EBNの取得に際して、アクセス制御部150は、まず、アクセス主体がアクセス制御部150である旨を指定した選択指定SLCを選択部120へ送るとともに、選択ブロックに対応するメモリアドレスを、管理アドレスCADとして出力する。次に、アクセス制御部150は、読み取り方向を指定したデータ方向指定RWCをECC部130へ送るとともに、読み取り指定MRDを不揮発性メモリ200へ送る。この結果、不揮発性メモリ200内の管理領域210における選択ブロックに記憶されているデータが、データバスMDTを介して、ECC部130へ送られる。
【0075】
次いで、ECC部130が、不揮発性メモリ200から送られたデータのエラー検出訂正を行う。そして、ECC部130は、エラー訂正結果のデータを、データバスADTに出力する。この結果、当該エラー訂正結果のデータが、選択部120及びデータバスCDTを介して、アクセス制御部150へ送られるとともに、検出されたエラービット数EBNが、アクセス制御部150へ送られる。こうしてECC部130から送られたエラービット数EBNを、アクセス制御部150は、現時点におけるエラービット数EBNとして取得する。
【0076】
次に、アクセス制御部150は、現時点のエラービット数EBN、最新書込時のエラービット数EBNrk、現在時刻TMD、及び、最新書込時刻TWrkに基づいて、次の(1)式により、時間変化率REBを算出する。
REB=(EBN−EBNrk)/(TMD−TWrk) …(1)
【0077】
こうして、ステップS24において時間変化率REBが算出されると、処理はステップS25へ進む。このステップS25では、アクセス制御部150が、内部に保持している訂正可能な最大エラービット数EBM、現時点のエラービット数EBN、及び、算出された時間変化率REBに基づいて、次の(2)式により、今後における推定データ保持可能時間TDHを算出する。
DH=(EBM−EBN)/REB …(2)
【0078】
次いで、ステップS26において、推定データ保持可能時間TDHが、内部に保持している閾値時間TTH(ESNr)以上であるか否かを、アクセス制御部150が判定する。この判定の結果が肯定的であった場合(ステップS26:Y)には、処理はステップS27へ進む。
【0079】
ステップS27では、アクセス制御部150が、選択ブロックが書込利用可であると評価する。そして、ステップS13の処理が終了し、処理は、上述したステップS14へ進む。
【0080】
一方、ステップS26における判定の結果が否定的であった場合(ステップS26:N)には、処理はステップS28へ進む。このステップS28では、アクセス制御部150が、選択ブロックが書込利用不可であると評価する。そして、ステップS13の処理が終了し、処理は、上述したステップS14へ進む。
【0081】
次に、上述したステップS16における書き込み制御処理について説明する。かかる書き込み制御処理に際しては、図7に示されるように、まず、ステップS31において、アクセス制御部150が、選択ブロックへのデータ書き込みに際して消去が必要か否かを判定する。かかる判定に際して、アクセス制御部150は、上述したステップS23における判定の結果が否定的であったこと(ステップS23:N(図6参照))に対応して、ステップS16が開始された場合には、アクセス制御部150は、否定的な判定を行う。一方、上述したステップS23における判定の結果が肯定的であったこと(ステップS23:Y(図6参照))に対応して、ステップS16が開始された場合には、アクセス制御部150は、肯定的な判定を行う。
【0082】
ステップS31における判定の結果が否定的であった場合(ステップS31:N)には、処理は、後述するステップS33へ進む。一方、ステップS31における判定の結果が肯定的であった場合(ステップS31:Y)には、処理はステップS32へ進む。
【0083】
ステップS32では、アクセス制御部150が、選定ブロックが含まれる消去単位ブロックの消去処理を行う。かかる消去処理に際して、アクセス制御部150は、まず、当該消去単位ブロックにおける記憶データを読み取る。この読み取りは、アクセス制御部150が、上述したステップS24におけるエラービット数EBNの取得の場合の動作と同様の動作を必要回数行うことにより、実行される。
【0084】
次に、アクセス制御部150は、当該消去単位ブロックを指定した消去指定ERSを、不揮発性メモリ200へ送る。この結果、当該消去単位ブロックに記憶されていたデータが消去される。引き続き、アクセス制御部150が、読み取られたデータのうちから選定ブロックのデータを除いたデータを、以前に記憶されていたメモリアドレスに書き込む。
【0085】
かかる書き込みに際して、アクセス制御部150は、まず、アクセス主体がアクセス制御部150である旨を指定した選択指定SLCを選択部120へ送るとともに、書き込みアドレスを示すメモリアドレスを、管理アドレスCADとして出力する。この結果、当該書き込みアドレスを示すメモリアドレスが、選択部120を介し、メモリアドレスMADとして不揮発性メモリ200へ送られる。
【0086】
次に、アクセス制御部150は、書き込みを指定したデータ方向指定RWCをECC部130へ送るとともに、データバスCDTに書き込こもうとしているデータを出力する。この結果、当該データが、データバスADTを介してECC部130へ送られる。そして、ECC部130により生成されたECCコードが付加されたデータが、データバスMDTを介して、不揮発性メモリ200へ送られる。
【0087】
次いで、アクセス制御部150は、書き込み指定MWTを不揮発性メモリ200へ送る。この結果、アクセス制御部150が指定したメモリアドレスに、アクセス制御部150が指定したデータが書き込まれる。
【0088】
次に、ステップS33において、アクセス制御部150が、アドレス変換部110が利用するアドレス変換情報の更新を行う。かかるアドレス変換情報の更新に際して、アクセス制御部150は、まず、メモリ利用モジュール900から送られている論理アドレスADLを選定ブロックのメモリアドレスに変換するための新たなアドレス変換情報を生成する。そして、アクセス制御部150は、当該新たなアドレス変換情報を、アドレス変換情報ACDとしてアドレス変換部110へ送る。この結果、アドレス変換部110からは、選定ブロックに対応するメモリアドレスが出力される。
【0089】
引き続き、ステップS34において、アクセス制御部150が、メモリ利用モジュール900から送られているデータの選定ブロックへの書き込み制御を行う。かかる書き込み制御に際して、アクセス制御部150は、まず、アクセス主体がメモリ利用モジュール900である旨を指定した選択指定SLCを選択部120へ送る。この結果、選択ブロックに対応する物理アドレスADPが、選択部120を介し、メモリアドレスMADとして不揮発性メモリ200へ送られるとともに、メモリ利用モジュール900が出力しているデータが、選択部120を介して、ECC部130へ送られる。
【0090】
次に、アクセス制御部150は、書き込みを指定したデータ方向指定RWCをECC部130へ送る。この結果、ECC部130により生成されたECCコードが付加されたデータが、データバスMDTを介して、不揮発性メモリ200へ送られる。
【0091】
次いで、アクセス制御部150は、書き込み指定MWTを不揮発性メモリ200へ送る。この結果、選定ブロックのメモリアドレスに、メモリ利用モジュール900が指定したデータが書き込まれる。
【0092】
次に、ステップS35において、アクセス制御部150は、不揮発性メモリ200の外部アクセス領域220に新たに書き込まれたデータにおけるエラービット数EBNを取得する。かかるエラービット数の取得は、上述したステップS24におけるエラービット数EBNの取得と同様にして行われる。
【0093】
なお、アクセス制御部150は、新たなデータ書き込みのために消去処理を行わなかった場合には、選定ブロックに新たに書き込まれたデータにおけるエラービット数のみを取得する。一方、アクセス制御部150は、新たなデータ書き込みのために消去処理を行った場合には、消去処理が行われた消去単位ブロックにおけるアクセス単位ブロックのそれぞれにおけるエラービット数を取得する。
【0094】
次に、ステップS36において、アクセス制御部150が、管理情報MGIの更新を行う。ここで、新たなデータ書き込みのために消去処理が行われなかった場合には、アクセス制御部150は、新たにデータ書き込みが行われた選定ブロックに関してデータ書き込み後に取得されたエラービット数、及び、現在時刻に、管理情報MGI内の当該選定ブロックに関するエラービット数及び最新書込時刻が更新される。一方、アクセス制御部150は、新たなデータ書き込みのために消去処理が行われた場合には、新たにデータ書き込みが行われた選定ブロックが含まれる新たな消去回数、並びに、当該消去単位ブロックに含まれるアクセス単位ブロックのそれぞれに関してデータ書き込み後に取得されたエラービット数、及び、現在時刻に、管理情報MGI内の当該消去単位ブロックの消去回数、並びに、当該消去単位ブロックに含まれるアクセス単位ブロックのそれぞれに関するエラービット数及び最新書込時刻が更新される。
【0095】
かかる管理情報MGIの更新に際しては、不揮発性メモリ200内の管理領域210への新たなデータ書き込みが行われることになる。かかる管理領域210への新たなデータ書き込みに際しても、アクセス制御部150は、上述した外部アクセス領域220への新たなデータ書き込みの際と同様にして、書き込みブロックの選定を行う。そして、アクセス制御部150は、上述したステップS32における選定ブロック以外のアクセス単位ブロックへの書き込みの場合と同様にしてデータ書き込みを行うことにより、管理情報MGIの内容を更新する。
【0096】
こうしてステップS36の処理が終了すると、ステップS16の処理が終了する。そして、処理は、上述したステップS11へ戻る(図5参照)
【0097】
なお、上述したステップS14において行われる見合わせフラグの更新も、上記と同様の処理をアクセス制御部150が行うことより実行される。
【0098】
以上説明したように、本実施形態では、メモリ利用モジュール900から送られた不揮発性メモリ200への書き込み要求WRQを受けた場合に、アクセス制御部150は、現在時刻と、書き込み対象の候補となったアクセス単位ブロックの現時点における検出エラービット数EBNとを取得する。また、アクセス制御部150は、不揮発性メモリ200内の管理領域210に記憶されている当該書き込み対象の候補となったアクセス単位ブロックに関する最新書込時刻と、最新の書き込み時における検出エラービット数とを取得する。引き続き、アクセス制御部150は、これらの取得結果に基づいて、最新の書き込み時から現時点までの検出エラービット数の時間変化率を算出する。そして、アクセス制御部150は、算出された時間変化率に基づいて、当該書き込み対象の候補となったアクセス単位ブロックが、不揮発性メモリ200に関する消去回数の平準化のために利用できるか否かを判定する。この判定の結果が肯定的であった場合に、当該アクセス単位ブロックへのデータ書き込み制御を行う。
【0099】
したがって、本実施形態によれば、ウエアレベリングを効率良く、かつ、合理的に行うことにより、メモリシステム全体の寿命を有効に確保することができる。
【0100】
また、本実施形態では、算出された時間変化率と、現時点における検出エラービット数とから算出される、ECC部130のエラー訂正機能における訂正限界を超えるまでの現時点からの時間長が、書き込み対象の候補となったアクセス単位ブロックの消去回数に対応して定められた時間長以下である場合に、アクセス制御部150が、書き込み対象の候補となったアクセス単位ブロックを、消去回数の平準化のために利用できないと判定する。このため、非常に合理的に、書き込み対象の候補となったアクセス単位ブロックが、消去回数の平準化のために利用できるか否かを判定することができる。
【0101】
[実施形態の変形]
本発明は、上記の実施形態に限定されるものではなく、様々な変形が可能である。
【0102】
例えば、上記の実施形態では、書き込み対象の候補となったアクセス単位ブロックが、不揮発性メモリ200に関する消去回数の平準化のために利用できるか否かの判定に際して、算出された時間変化率を利用して、エラー訂正機能における訂正限界を超えるまでの現時点からの時間長を求めた後、当該求められた時間長が、書き込み対象の候補となったアクセス単位ブロックの消去回数に対応して定められた時間長より長いか否かを判定するようにした。これに対し、算出された時間変化率が、書き込み対象の候補となったアクセス単位ブロックの消去回数に対応して定められた時間変化率未満であるか否かを判定することにより、書き込み対象の候補となったアクセス単位ブロックが、不揮発性メモリ200に関する消去回数の平準化のために利用できるか否かを判定するようにしてもよい。
【0103】
また、算出された時間変化率が、書き込み対象の候補となったアクセス単位ブロックの消去回数にかかわらず定められた時間変化率未満であるか否かを判定することにより、書き込み対象の候補となったアクセス単位ブロックが、不揮発性メモリ200に関する消去回数の平準化のために利用できるか否かを判定するようにしてもよい。
【0104】
また、上記の実施形態では、アクセス制御部150が、ECC部130により訂正可能な最大エラービット数EBM、及び、アクセス単位ブロックのデータ保持時間の閾値時間TTH(ESN)を内部に保持するようにした。これに対し、最大エラービット数EBM及び閾値時間TTH(ESN)を、管理情報MGIの一部として、管理領域210内に記憶しておくようにしてもよい。
【0105】
また、上記の実施形態では、管理領域210と外部アクセス領域220とを同一の不揮発性メモリ200内に用意するようにしたが、それぞれ異なる不揮発性メモリ内に用意するようにしてもよい。
【0106】
また、上記の実施形態では、消去単位ブロックが複数のアクセス単位ブロックを含むようにしたが、消去単位ブロックとアクセス単位ブロックとが一致してもよいことは勿論である。
【0107】
また、上記の実施形態では、不揮発性メモリが、NAND型のフラッシュメモリ素子により構成されるようにしたが、他の種類の不揮発性メモリ素子により不揮発性メモリが構成される場合にも、消去回数の平準化を図る必要がある場合には、本発明を適用することができる。
【0108】
なお、上記の実施形態におけるアクセス制御部を、中央処理装置(CPU:Central Processing Unit)等を備えた演算手段としてのコンピュータとして構成し、予め用意されたプログラムを当該コンピュータで実行することにより、アクセス制御部における処理の一部又は全部を実行するようにしてもよい。このプログラムはハードディスク、CD−ROM、DVD等のコンピュータで読み取り可能な記録媒体に記録され、当該コンピュータによって記録媒体からロードされて実行される。また、このプログラムは、CD−ROM、DVD等の可搬型記録媒体に記録された形態で取得されるようにしてもよいし、インターネットなどのネットワークを介した配信の形態で取得されるようにしてもよい。
【符号の説明】
【0109】
100 … メモリコントローラ(メモリ制御装置)
110 … アドレス変換部
130 … ECC部(エラー検出部)
140 … 計時部
150 … アクセス制御部
210 … 管理領域(第2不揮発性メモリ部)
220 … 外部アクセス領域(第1不揮発性メモリ部)

【特許請求の範囲】
【請求項1】
エラー検出の単位となる第1記憶ブロックを複数有し、前記第1記憶ブロックの記憶データの書き換えに際しては、書き換え前の前記第1記憶ブロックにおける記憶データの消去後に、新たな記憶データが書き込まれる第1不揮発性メモリ部へのアクセスを制御するメモリ制御装置であって、
時刻を計時する計時部と;
前記第1不揮発性メモリ部から読み取られたデータのエラー検出を行ってエラービットの数を検出するエラー検出部と;
前記第1不揮発性メモリ部への書き込み要求を受けた場合に、書き込み対象の候補となった第1記憶ブロックに関する最新の書き込み時刻と、最新の書き込み時における検出エラービット数と、現在時刻と、現時点における検出エラービット数とから算出された前記最新の書き込み時から現時点までの検出エラービット数の時間変化率に基づいて、前記書き込み対象の候補となった第1記憶ブロックが、前記第1不揮発性メモリ部に関する消去回数の平準化のために利用できるか否かの第1書き込み判定を行うアクセス制御部と;
を備えることを特徴とするメモリ制御装置。
【請求項2】
前記記憶データの消去の単位となる消去単位記憶ブロックは、少なくとも1つの前記第1記憶ブロックを含む、ことを特徴とする請求項1に記載のメモリ制御装置。
【請求項3】
外部からの論理アドレスを指定した前記第1不揮発性メモリ部へのアクセス要求があった場合に、前記論理アドレスを前記第1不揮発性メモリ部の物理アドレスに変換するアドレス変換部を更に備え、
前記アクセス制御部は、前記書き込み要求に対応して前記第1書き込み判定の結果が肯定的となった第1記憶ブロックの物理アドレスに、前記論理アドレスが変換される設定を前記アドレス変換部に対して行う、
ことを特徴とする請求項1又は2に記載のメモリ制御装置。
【請求項4】
前記算出された時間変化率が、前記書き込み対象の候補となった第1記憶ブロックの消去回数に対応して定められたエラービット数の時間変化率以上であった場合に、前記アクセス制御部は、前記書き込み対象の候補となった第1記憶ブロックが、前記第1不揮発性メモリ部に関する消去回数の平準化のために利用できないと判定する、ことを特徴とする請求項1〜3のいずれか一項に記載のメモリ制御装置。
【請求項5】
前記算出された時間変化率と、前記現時点における検出エラービット数とから算出される、エラー訂正機能における訂正限界を超えるまでの現時点からの時間長が、前記書き込み対象の候補となった第1記憶ブロックの消去回数に対応して定められた時間長以下である場合に、前記アクセス制御部は、前記書き込み対象の候補となった第1記憶ブロックが、前記第1不揮発性メモリ部に関する消去回数の平準化のために利用できないと判定する、ことを特徴とする請求項1〜3のいずれか一項に記載のメモリ制御装置。
【請求項6】
前記アクセス制御部は、前記第1不揮発性メモリ部における前記第1記憶ブロックごとの最新の書き込み時刻、及び、最新の書き込み時における検出エラービット数を関連付けて、第2不揮発性メモリ部に記憶させる、ことを特徴とする請求項1〜5のいずれか一項に記載のメモリ制御装置。
【請求項7】
前記第2不揮発性メモリ部は、エラー検出の単位となる第2記憶ブロックを複数有し、前記第2記憶ブロックの記憶データの書き換えに際しては、書き換え前の前記第2記憶ブロックにおける記憶データの消去後に、新たな記憶データが書き込まれる不揮発性メモリ部であり、
前記第2不揮発性メモリ部には、更に、前記第2記憶ブロックごとの消去回数、最新の書き込み時刻、及び、最新の書き込み時における検出エラービット数が関連付けて記憶され、
前記エラー検出部は、前記第2不揮発性メモリ部から読み取られたデータについても、エラー検出を行ってエラービットの数を検出し、
前記アクセス制御部は、前記第2不揮発性メモリ部へデータ書き込みをしようとする場合に、書き込み対象の候補となった第2記憶ブロックに関する最新の書き込み時刻と、最新の書き込み時における検出エラービット数と、現在時刻と、現時点における検出エラービット数とから算出された前記最新の書き込み時から現時点までの検出エラービット数の時間変化率に基づいて、前記書き込み対象の候補となった第2記憶ブロックが、前記第2不揮発性メモリ部に関する消去回数の平準化のために利用できるか否かの第2書き込み判定を更に行う、
ことを特徴とする請求項6に記載のメモリ制御装置。
【請求項8】
エラー検出の単位となる記憶ブロックを複数有し、前記記憶ブロックの記憶データの書き換えに際しては、書き換え前の前記記憶ブロックにおける記憶データの消去後に、新たな記憶データが書き込まれる不揮発性メモリ部へのアクセスを制御するメモリ制御方法であって、
前記不揮発性メモリ部への書き込み要求を受けた場合に、現在時刻と、書き込み対象の候補となった記憶ブロックの現時点における検出エラービット数とを取得する第1取得工程と;
前記書き込み対象の候補となった記憶ブロックに関する最新の書き込み時刻と、最新の書き込み時における検出エラービット数とを取得する第2取得工程と;
前記第1取得工程における取得結果及び前記第2取得工程における取得結果に基づいて、前記最新の書き込み時から現時点までの検出エラービット数の時間変化率を算出する算出工程と;
前記算出工程における算出結果に基づいて、前記書き込み対象の候補となった記憶ブロックが、前記不揮発性メモリ部に関する消去回数の平準化のために利用できるか否かの書き込み判定を行う書き込み判定工程と;
を備えることを特徴とするメモリ制御方法。
【請求項9】
請求項8に記載のメモリ制御方法を演算手段に実行させる、ことを特徴とするメモリ制御プログラム。
【請求項10】
請求項9に記載のメモリ制御プログラムが、演算手段により読み取り可能に記録されている、ことを特徴とする記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate