(57)【要約】      （修正有）【課題】ソリッドステートメモリにおいてデータを再利用するためのシステムを提供する。【解決手段】ソリッドステート記憶デバイス１００は、反復カウントベースのデータ再利用制御回路１８０、フラッシュメモリセル１４０への読み出しアクセス及び書き込みアクセスを指示するホストコントローラー回路１６０、反復データ処理回路１７０を備える。反復データ処理回路１７０は、データ復号化アルゴリズムの各反復が適用される際に、反復カウントをインクリメントする。反復カウントベースのデータ再利用制御回路１８０は、反復カウントに基づいて読み出しデータ１７５を再利用するか否かを判断する。【選択図】図１
2015111388.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムであって、
データセットを保持するように動作可能なメモリデバイスと、
データ復号化アルゴリズムの１回又は複数回の反復を前記メモリデバイスからアクセスされた前記データセットに適用して復号化出力を得るとともに、前記データ復号化アルゴリズムが前記データセットに適用された反復の回数を示す反復カウントを提供するように動作可能なデータ復号化器回路と、
前記データセットに対応する読み出しデータを再利用するように動作可能な再利用制御回路であって、該再利用は、前記反復カウントに少なくとも部分的に基づいてトリガーされる、再利用制御回路と、
を備える、データ処理システム。
【請求項２】
請求項１に記載のデータ処理システムであって、前記データ復号化アルゴリズムは、低密度パリティ検査復号化アルゴリズムである、データ処理システム。
【請求項３】
請求項１に記載のデータ処理システムであって、前記再利用制御回路は、前記反復カウントを閾値レベルと比較するように動作可能な比較器回路を備える、データ処理システム。
【請求項４】
請求項３に記載のデータ処理システムであって、前記閾値レベルはプログラム可能である、データ処理システム。
【請求項５】
請求項１に記載のデータ処理システムであって、該システムは、
メモリアクセス回路であって、
前記メモリデバイスから前記データセットにアクセスし、
前記データセットに対応するアクセスの頻度を計算する、
ように動作可能なメモリアクセス回路を更に備え、
前記再利用は、前記反復カウント及び前記アクセスの頻度に少なくとも部分的に基づいてトリガーされる、データ処理システム。
【請求項６】
請求項５に記載のデータ処理システムであって、前記再利用制御回路は、前記反復カウントを第１の閾値レベル又は第２の閾値レベルのうちの一方と比較するように動作可能な比較器回路を備える、データ処理システム。
【請求項７】
請求項６に記載のデータ処理システムであって、前記第１の閾値レベルは、前記アクセスの頻度が第３の閾値レベルを超えているときに選択され、前記第２の閾値レベルは、前記アクセスの頻度が前記第３の閾値レベル未満であるときに選択される、データ処理システム。
【請求項８】
請求項７に記載のデータ処理システムであって、前記第１の閾値レベル、前記第２の閾値レベル、及び前記第３の閾値レベルのうちの少なくとも１つは、ユーザーがプログラム可能である、データ処理システム。
【請求項９】
請求項１に記載のデータ処理システムであって、少なくとも前記データ復号化器回路及び前記再利用制御回路は、集積回路に組み込まれている、データ処理システム。
【請求項１０】
請求項１に記載のデータ処理システムであって、該データ処理システムは、集積回路上に実装されている、データ処理システム。
【請求項１１】
請求項１に記載のデータ処理システムであって、前記メモリデバイスはフラッシュメモリデバイスである、データ処理システム。
【請求項１２】
請求項１１に記載のデータ処理システムであって、前記フラッシュメモリデバイスは、該フラッシュメモリデバイスの各メモリセルに複数のデータビットを保持することができる、データ処理システム。
【請求項１３】
メモリデバイスにおけるデータ再利用制御の方法であって、
前記メモリデバイスに保持されたデータセットを受信することと、
データ復号化器回路によってデータ復号化アルゴリズムの少なくとも１回の反復を前記データセットに適用することであって、復号化出力を得ることと、
前記データセットに適用された前記データ復号化アルゴリズムの反復の回数をカウントすることであって、反復カウントを得ることと、
前記メモリデバイスに対して前記データセットを再利用することであって、該再利用することは、前記反復カウントに少なくとも部分的に基づいてトリガーされることと、
を含む、メモリデバイスにおけるデータ再利用制御の方法。
【請求項１４】
請求項１３に記載の方法であって、前記データ復号化アルゴリズムは、低密度パリティ検査復号化アルゴリズムである、方法。
【請求項１５】
請求項１３に記載の方法であって、前記データセットを再利用することは、前記反復カウントを閾値レベルと比較するように動作可能な比較器回路を備える再利用制御回路によって制御される、方法。
【請求項１６】
請求項１３に記載の方法であって、
前記データセットに対応するアクセスの頻度を求めることを更に含み、
前記再利用は、前記反復カウント及び前記アクセスの頻度に少なくとも部分的に基づいてトリガーされる、方法。
【請求項１７】
請求項１６に記載の方法であって、前記データセットを再利用することは、前記反復カウントを反復カウント閾値と比較するように動作可能な比較器回路を備える再利用制御回路によって制御され、該方法は、
前記アクセスの頻度に少なくとも部分的に基づいて前記反復カウント閾値を求めること、
を更に含む、方法。
【請求項１８】
請求項１７に記載の方法であって、前記反復カウント閾値は、第１の閾値レベル及び第２の閾値レベルからなる群から選択される、方法。
【請求項１９】
請求項１８に記載の方法であって、
前記第１の閾値レベル及び前記第２の閾値レベルのうちの少なくとも一方をプログラムすることを更に含む、方法。
【請求項２０】
データ記憶デバイスであって、
データセットを保持するように動作可能なフラッシュメモリデバイスと、
メモリアクセス回路であって、
前記メモリデバイスから前記データセットにアクセスし、
前記データセットに対応するアクセスの頻度を計算する、
ように動作可能なメモリアクセス回路と、
データ復号化アルゴリズムの１回又は複数回の反復を前記メモリデバイスからアクセスされた前記データセットに適用して復号化出力を得るとともに、前記データ復号化アルゴリズムが前記データセットに適用された反復の回数を示す反復カウントを提供するように動作可能なデータ復号化器回路と、
前記アクセスの頻度を第１の閾値と比較するように動作可能な第１の比較器回路と、前記反復カウントを第２の閾値レベルと比較するように動作可能な第２の比較器回路を備える再利用制御回路であって、前記データセットの再利用は、前記反復カウント及び前記アクセスの頻度に少なくとも部分的に基づいてトリガーされる、再利用制御回路と、
を備える、データ記憶デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
システム及び方法は、包括的には、ソリッドステートメモリに関し、より詳細には、ソリッドステートメモリにおいてデータを再利用するためのシステム及び方法に関する。
【０００２】
［関連出願の相互参照］
本願は、「Systems and Methods for Latency Based Data Recycling in a SolidState Memory System」と題する、２０１３年１０月１７日にCai他によって出願された米国特許仮出願第６１／８９２２４９号（の正規の特許出願）の優先権を主張する。前述の仮特許出願の全内容は、全ての目的において、引用することにより本願の一部をなす。
【背景技術】
【０００３】
ソリッドステート記憶デバイスにおけるデータは、時間とともに減衰（decay）し、時間とともにより多くのエラー訂正能力を必要とする。付加的なエラーを訂正するために、強化されたエラー訂正回路部が用いられる場合がある。しかしながら、そのような強化されたエラー訂正回路部は、アクセスレイテンシーを増加させる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、少なくとも前述の理由から、当該技術分野において、ソリッドステート記憶デバイスにデータを保持するための進歩したシステム及び方法が必要とされている。
【課題を解決するための手段】
【０００５】
システム及び方法は、包括的には、ソリッドステートメモリに関し、より詳細には、ソリッドステートメモリにおいてデータを再利用するためのシステム及び方法に関する。
【０００６】
本発明の様々な実施の形態は、メモリデバイスと、データ復号化器回路と、再利用制御回路とを備えるデータ処理システムを提供する。メモリデバイスはデータセットを保持するように動作可能であり、データ復号化器回路は、データ復号化アルゴリズムの１回又は複数回の反復を前記メモリデバイスからアクセスされた前記データセットに適用して復号化出力を得るとともに、前記データ復号化アルゴリズムが前記データセットに適用された反復の回数を示す反復カウントを提供するように動作可能である。利用制御回路は、前記データセットに対応する読み出しデータを再利用するように動作可能である。該再利用は、前記反復カウントに少なくとも部分的に基づいてトリガーされる。
【０００７】
本概要は、本発明の幾つかの実施形態の概要のみを提供する。「一実施形態では」、「一実施形態によれば」、「様々な実施形態では」、「１つ又は複数の実施形態では」、「特定の実施形態では」等の言い回しは、概して、その言い回しの後に続く特定の特徴、構造又は特性が本発明の少なくとも１つの実施形態に含まれ、本発明の２つ以上の実施形態に含まれる場合もあることを意味する。重要なことには、このような言い回しは必ずしも同じ実施形態を指すとは限らない。本発明の多くの他の実施形態は以下の詳細な説明、添付の特許請求の範囲、及び添付の図面からより完全に明白になる。
【０００８】
図面を参照することにより、本発明の様々な実施形態の更なる理解を実現することができ、これらの実施形態については本明細書の残りの部分で説明する。図面において、同様の参照符号が幾つかの図面の全てにわたって類似の構成要素を指すのに用いられている。幾つかの場合には、小文字からなるサブラベルが、複数の類似の構成要素のうちの１つを表すように参照符号に関連付けられている。存在するサブラベルを指定することなく参照符号が参照されるとき、そのような複数の類似の構成要素全てを指すことが意図される。
【図面の簡単な説明】
【０００９】
【図１】本発明の様々な実施形態による反復カウントベースのデータ再利用制御回路を備えるソリッドステート記憶デバイスを示す図である。
【図２】本発明の実施形態に関して用いることができる反復データ処理回路の１つの実施態様を示す図である。
【図３ａ】本発明の幾つかの実施形態による反復カウントベースのデータ再利用の方法を示す流れ図である。
【図３ｂ】本発明の幾つかの実施形態による反復カウントベースのデータ再利用の方法を示す流れ図である。
【図３ｃ】本発明の幾つかの実施形態による反復カウントベースのデータ再利用の方法を示す流れ図である。
【発明を実施するための形態】
【００１０】
システム及び方法は、包括的には、ソリッドステートメモリに関し、より詳細には、ソリッドステートメモリにおいてデータを再利用するためのシステム及び方法に関する。
【００１１】
本発明の様々な実施形態は、反復データ処理回路を備えるソリッドステートメモリシステムを提供する。ソリッドステートメモリからアクセスされたデータが、１つ又は複数のエラーを含む場合、反復データ処理回路は、任意のエラーの訂正を試みてデータ復号化アルゴリズムの１回又は複数回の反復を適用する。エラーを訂正するのに必要とされる反復回数は、反復カウントベースのデータ再利用回路に提供される。この反復カウントベースのデータ再利用回路は、アクセスされたデータの信頼性を高め及び／又はデータの更なるアクセスにおけるレイテンシーを減少させるために、アクセスされたデータを再利用するか否かを判断する。本発明の幾つかの実施形態では、この再利用に関する判断は、反復カウントに加えて、データがアクセスされた頻度に基づいて行われる。
【００１２】
本発明の様々な実施の形態は、メモリデバイスと、データ復号化器回路と、再利用制御回路とを備えるデータ処理システムを提供する。メモリデバイスはデータセットを保持するように動作可能であり、データ復号化器回路は、データ復号化アルゴリズムの１回又は複数回の反復を前記メモリデバイスからアクセスされた前記データセットに適用して復号化出力を得るとともに、前記データ復号化アルゴリズムが前記データセットに適用された反復の回数を示す反復カウントを提供するように動作可能である。利用制御回路は、前記データセットに対応する読み出しデータを再利用するように動作可能である。該再利用は、前記反復カウントに少なくとも部分的に基づいてトリガーされる。
【００１３】
前述の実施形態の幾つかの場合には、データ復号化アルゴリズムは、低密度パリティ検査復号化アルゴリズムである。前述の実施形態の様々な場合には、少なくともデータ復号化器回路及び再利用制御回路は、集積回路に組み込まれている。幾つかのそのような実施形態では、メモリデバイスが、上記集積回路に更に組み込まれている。幾つかの場合には、メモリデバイスはフラッシュメモリデバイスである。特定の場合には、フラッシュメモリデバイスは、そのフラッシュメモリデバイスの各メモリセルに複数のデータビットを保持することができる。
【００１４】
前述の実施形態の様々な場合には、再利用制御回路は、反復カウントを閾値レベルと比較するように動作可能な比較器回路を備える。幾つかのそのような場合には、閾値レベルはプログラム可能である。他のそのような場合には、閾値レベルは固定されている。
【００１５】
前述の実施形態の１つ又は複数の場合には、システムは、メモリアクセス回路を更に備える。このメモリアクセス回路は、メモリデバイスからデータセットにアクセスし、このデータセットに対応するアクセスの頻度を計算するように動作可能である。幾つかのそのような場合には、再利用は、反復カウント及びアクセスの頻度に少なくとも部分的に基づいてトリガーされる。様々な場合には、再利用制御回路は、反復カウントを第１の閾値レベル又は第２の閾値レベルのうちの一方と比較するように動作可能な比較器回路を備える。第１の閾値レベルは、アクセスの頻度が第３の閾値レベルを超えているときに選択され、第２の閾値レベルは、アクセスの頻度が第３の閾値レベル未満であるときに選択される。特定の場合には、第１の閾値レベル、第２の閾値レベル、及び／又は第３の閾値レベルのうちの１つ又は複数は、ユーザーがプログラム可能である。他の場合には、第１の閾値レベル、第２の閾値レベル、及び第３の閾値レベルの全てが固定されている。
【００１６】
本発明の他の実施形態は、メモリデバイスにおけるデータ再利用制御の方法を提供する。これらの方法は、メモリデバイスに保持されたデータセットを受信することと、データ復号化器回路によってデータ復号化アルゴリズムの少なくとも１回の反復をデータセットに適用して、復号化出力を得ることと、データセットに適用されたデータ復号化アルゴリズムの反復の回数をカウントして反復カウントを得ることと、再利用が反復カウントに少なくとも部分的に基づいてトリガーされるように、メモリデバイスに対してデータセットを再利用することとを含む。前述の実施形態の幾つかの場合には、データ復号化アルゴリズムは、低密度パリティ検査復号化アルゴリズムである。
【００１７】
前述の実施形態の様々な場合には、データセットを再利用することは、反復カウントを閾値レベルと比較するように動作可能な比較器回路を備える再利用制御回路によって制御される。前述の実施形態の幾つかの場合には、上記方法は、データセットに対応するアクセスの頻度を求めることを更に含む。幾つかのそのような場合には、再利用は、反復カウント及びアクセスの頻度に少なくとも部分的に基づいてトリガーされる。
【００１８】
前述の実施形態の１つ又は複数の場合には、データセットを再利用することは、反復カウントを反復カウント閾値と比較するように動作可能な比較器回路を備える再利用制御回路によって制御される。幾つかのそのような場合には、上記方法は、アクセスの頻度に少なくとも部分的に基づいて反復カウント閾値を求めることを更に含む。幾つかの場合には、反復カウント閾値は、第１の閾値レベル又は第２の閾値レベルのいずれかから選択され、これらのいずれかはプログラム可能である。
【００１９】
図１を参照すると、ソリッドステート記憶デバイス１００は、本発明の様々な実施形態による反復カウントベースのデータ再利用制御回路１８０を備える。記憶デバイス１００は、フラッシュメモリセル１４０への読み出しアクセス及び書き込みアクセスを指示するホストコントローラー回路１６０を備える。フラッシュメモリセル１４０は、ＮＡＮＤフラッシュメモリセル又は当該技術分野において知られているような別のタイプのソリッドステートメモリセルとすることができる。
【００２０】
データ書き込みは、ホストコントローラー回路１６０が、書き込まれる書き込みデータ１０５を、書き込まれるロケーションを示すアドレス１１０とともに提供したときに実施される。メモリアクセスコントローラー１２０は、書き込みデータ１０５をフォーマットし、アドレス１２３及び符号化された書き込みデータ１２５を書き込み回路１３０に提供する。書き込み回路１３０は、アドレス１２３によってアドレス指定されたそれぞれのフラッシュメモリセルを充電するのに用いられる、符号化された書き込みデータ１２５をそれぞれグループ分けしたものに対応する書き込み電圧１３５を提供する。例えば、フラッシュメモリセルが２つのビットセルである（すなわち、読み出し電圧に応じて、「１１」、「１０」、「００」、又は「０１」の値が返される）場合、データを記憶するのに、以下の電圧を印加することができる。
【００２１】
【表１】
2015111388.tif 000003
【００２２】
表中、Ｖ３はＶ２よりも大きく、Ｖ２はＶ１よりも大きく、Ｖ１はＶ０よりも大きい。
【００２３】
データ読み出しは、ホストコントローラー回路１６０が、フラッシュメモリセル１４０内の対応するロケーションからデータを読み出す要求とともにアドレス１１０を提供するときに実施される。メモリアクセスコントローラー１２０は、アドレス１２３によって示されるロケーションからの読み出し電圧１４５にアクセスし、この電圧を複数の閾値と比較して、この電圧をマルチビット読み出しデータ１５５に変形する。同じ２つのビットの例を用いると、以下のマルチビット読み出しデータ１５５が得られる。
【００２４】
【表２】
2015111388.tif 000004
【００２５】
このマルチビット読み出しデータ１５５は、メモリアクセスコントローラー１２０から反復データ処理回路１７０に読み出しデータ１０７として提供される。反復データ処理回路１７０は、読み出しデータ１０７に何らかのエラーがあるか否かを判断する。読み出しデータ１０７にエラーがない場合、反復データ処理回路１７０は、読み出しデータ１０７を読み出しデータ１７５として提供し、０の値を反復カウント１７９として提供する。前述の表は単なる一例にすぎないこと、及び異なるデバイスが異なるビット値を異なる電圧閾値に割り当てることができることに留意すべきである。例えば、他の場合には、以下の表の値を用いることができる。
【００２６】
【表３】
2015111388.tif 000005
【００２７】
もちろん、他のビットパターンを異なる閾値に割り当てることができる。
【００２８】
エラーが残っている場合、反復データ処理回路１７０は、読み出しデータ１０７に対応する軟データを生成するか又はこの軟データにアクセスする。そのような軟データは、読み出しデータ１０７の所与の要素が正しい確率を示す。幾つかの場合には、この軟データは、読み出し回路１５０によって軟データ１５４として提供され、読み出し電圧１４５と読み出しデータ１５５の要素の閾値との間の差を示す。この軟情報は、反復データ処理回路１７０に軟データ１７４として提供される。本発明の他の実施形態では、この軟データは、読み出し回路１５０から入手可能ではない。そのような実施形態では、軟データを生成することができる。軟データのそのような生成は、軟データを生成するための当該技術分野において知られている任意の手法を用いて行うことができる。１つの例として、軟データの生成は、Xia他によって２０１３年１０月７日に出願された「Systems and Methodsfor Enhanced Data Recovery in a Solid State Memory System」という発明の名称の米国特許出願第１４／０４７４２３号に開示されたものと同様に行うことができる。前述の出願の全内容は、全ての目的において、引用することによって本明細書の一部をなす。
【００２９】
反復データ処理回路１７０は、データ復号化アルゴリズムを読み出しデータ１０７及び軟データ１７４に繰り返し適用して復号化出力を得る。データ復号化アルゴリズムの各反復が適用される際に、反復カウントがインクリメントされる。復号化出力が収束する（すなわち、読み出しデータ１０７に残っている全てのエラーが訂正されることになる）場合、復号化出力は、読み出しデータ１７５として提供され、反復カウントは、反復カウント１７９として提供される。復号化出力が収束しない（すなわち、エラーが復号化出力に残っている）場合、データ復号化アルゴリズムの反復が、以前の復号化出力によって誘導された読み出しデータ１０７に更に１回適用されて、更新された復号化出力が得られる。このプロセスは、全てのエラーが訂正されるまで又はタイムアウト条件（例えば、１００回の反復）が発生するまで継続される。本発明の幾つかの実施形態では、データ復号化アルゴリズムは、当該技術分野において知られているような低密度パリティ検査アルゴリズムである。本明細書において提供される開示に基づくと、当業者であれば、本発明の様々な実施形態に関して用いることができる様々なデータ復号化アルゴリズムを認識するであろう。
【００３０】
反復カウントベースのデータ再利用制御回路１８０は、読み出しデータ１７５を再利用するか否かを判断する。そのような再利用は、読み出しデータ１７５をフラッシュメモリセル１４０内の新しいロケーションに再書き込みすること又はデータをフラッシュメモリセル内の同じロケーションに再書き込みすることを含む。これは、時間減衰又はセル減衰（合わせて「データ減衰」と呼ばれる）に起因したエラーを削減するようにフラッシュメモリセル１４０内のデータをリフレッシュするよう動作する。読み出しデータ１７５を再利用するか否かの判断は、反復カウント１７９に基づいている。一般的なルールとして、データ減衰が増大するにつれて、反復カウント１７９の値は増加する。したがって、反復カウント１７９が閾値を超えている場合、反復カウントベースのデータ再利用制御回路１８０は、メモリアクセスコントローラー回路１２０への再利用イネーブル１８７をアサートすることによって読み出しデータ１７５を再利用させる。再利用制御のそのような手法によって、データアクセスレイテンシー及び／又はデータ損失に対するデータ減衰の影響が削減される。
【００３１】
本発明の幾つかの実施形態では、再利用制御は、高頻度でアクセスされるデータセットに対するアクセスレイテンシーを減少させるように更に適用される。そのような場合、メモリアクセスコントローラー回路１２０は、データセットがフラッシュメモリセル１４０からアクセスされる頻度を示す表を保持する。表からの情報は、頻度インジケーター１７７として反復カウントベースのデータ再利用制御回路１８０に提供される。この情報は、反復カウント１７９が比較される閾値を変更するのに用いることができる。特に、頻度インジケーターが閾値レベルを超えている（すなわち、読み出しデータ１７５が高頻度でアクセスされるデータセットであることを示す）場合、反復カウント１７９が比較される閾値は下げられる。したがって、高頻度でアクセスされたデータセットの場合、反復データ処理回路１７０を通じて許可される反復回数は下げられる。これは、低頻度でアクセスされるデータセットのアクセスレイテンシーがより大きくなることを許容しつつ、高頻度でアクセスされるデータセットのアクセスレイテンシーを減少させる。再利用制御のそのような手法は、平均アクセスレイテンシーを削減する。
【００３２】
図２を参照すると、本発明の実施形態に関して用いることができる反復データ処理回路２００の１つの実施態様が示されている。反復データ処理回路２００が、図１の反復データ処理回路１７０の代わりに用いられる場合、読み出しデータ１０７は、入力されるメモリデータ２０５に接続され、反復カウント１７９は、反復カウント２９６に接続され、読み出しデータ１７５は、硬判定出力２９２に接続される。
【００３３】
反復データ処理回路２００は、メモリデータ２０５を受信する。軟情報アクセス又は生成回路２１４は、メモリデータ２０５に対応する軟情報にアクセスするか又はメモリデータ２０５に対応する軟情報を生成するように動作可能である。そのような軟情報は、メモリデータ２０５の所与の要素が正しい確率を示す。幾つかの場合には、この軟情報は、ソリッドステートメモリデバイスによって軟情報アクセス生成回路２１４に入力（図示せず）として提供される。他の場合には、軟情報は生成される。軟情報のそのような生成は、軟データを生成するための当該技術分野において知られている任意の手法を用いて行うことができる。１つの例として、軟情報の生成は、Xia他によって２０１３年１０月７日に出願された「Systems and Methodsfor Enhanced Data Recovery in a Solid State Memory System」という発明の名称の米国特許出願第１４／０４７４２３号に開示されたものと同様に行うことができる。前述の出願の全内容は、上記で既に、全ての目的において引用することによって本明細書の一部をなす。
【００３４】
軟情報アクセス又は生成回路２１４は、軟情報及びメモリデータ２０５の組み合わせを中央メモリ回路２５０にデータセット２２５として提供する。復号化器回路２７０が利用可能になると、事前に記憶されたデータセット２２５が、中央メモリ回路２５０から復号化器入力２５２としてアクセスされる。本発明の幾つかの実施形態では、復号化器回路２７０は、当該技術分野において知られているような低密度パリティ検査復号化器回路である。本明細書において提供される開示に基づくと、当業者であれば、本発明の様々な実施形態に関して用いることができる様々な復号化器回路を認識するであろう。
【００３５】
復号化器回路２７０は、データ復号化アルゴリズムを復号化器入力２５２に適用して復号化出力２７１を得る。データ復号化アルゴリズムが適用されるごとに、復号化器回路２７０は、反復カウンター回路２９５への反復完了インジケーター２７３をアサートする。反復カウンター回路２９５は、反復完了インジケーター２７３がアサートされるごとにカウントし、復号化器回路２７０を通った反復の回数を示す反復カウント２９６を提供する。復号化出力２７１が収束しない（すなわち、復号化出力２７１がエラーを含む）場合、データ復号化アルゴリズムの反復が、復号化出力２７１によって誘導された復号化器入力２５２に更に１回適用される。このプロセスは、復号化出力２７１が収束する（すなわち、エラーがない）まで又はタイムアウト条件が満たされるまで繰り返される。
【００３６】
一方、復号化出力２７１が収束した場合、この出力は、復号化出力２７２として硬判定バッファー回路２９０に提供される。硬判定バッファー回路２９０は、復号化出力２７２の硬判定を硬判定出力２９２として提供する。この時点で、反復カウント２９６は、メモリデータ２０５内のエラーを訂正するのに用いられた復号化器回路２７０を通った反復の全回数を示す。
【００３７】
図３ａ及び図３ｂを参照すると、流れ図３００、３０１が、本発明の幾つかの実施形態による反復カウントベースのデータ再利用の方法を示している。図３ａの流れ図３００によると、読み出し要求が受信されたか否かが判断される（ブロック３０５）。読み出し要求が受信されていない場合（ブロック３０５）、書き込み要求が受信されているか否かが判断される（ブロック３９５）。書き込み要求が受信されている場合（ブロック３９５）、受信されたデータがフォーマットされ、書き込み要求の一部として受信されたアドレスによって示されるフラッシュメモリ内のロケーションに書き込まれ（ブロック３９７）、プロセスはブロック３０５に戻る。
【００３８】
一方、読み出しアクセスが受信されたとき、この読み出しアクセスは、データがアクセスされるロケーションを示すアドレスを含む。データは、その後、読み出し要求によって示されたロケーションにおいてフラッシュメモリからアクセスされる（ブロック３１０）。取り出されたデータにエラーがないか否かが判断される（ブロック３２０）。データにエラーがないと判断された場合（ブロック３２０）、取り出されたデータは、読み出しデータとして提供され（ブロック３２５）、反復カウントは０に等しい（ブロック３３０）。プロセスは、その後、ブロック３０５に戻る。図３ｂ及び図３ｃに関して以下で論述するように、流れ図３０１、３０２は、読み出しデータが提供される任意の時にトリガーされる代替の同様のプロセスを開示している。
【００３９】
そうではなく、データにエラーがないと判断されない場合（ブロック３２０）、アクセスされたデータに対応する軟情報は、アクセスされるか又は生成される（ブロック３３５）。そのような軟情報は、アクセスされたデータの所与の要素が正しい確率を示す。幾つかの場合には、この軟情報は、データがアクセスされたソリッドステートメモリデバイスによって提供される。他の場合には、この軟情報は生成される。軟情報のそのような生成は、軟データを生成するための当該技術分野において知られている任意の手法を用いて行うことができる。１つの例として、軟情報の生成は、Xia他によって２０１３年１０月７日に出願された「Systems and Methodsfor Enhanced Data Recovery in a Solid State Memory System」という発明の名称の米国特許出願第１４／０４７４２３号に開示されたものと同様に行うことができる。前述の出願の全内容は、上記で既に、全ての目的において引用することによって本明細書の一部をなす。
【００４０】
アクセスされたデータ及び対応する軟情報は、データセットとして中央メモリに記憶され（ブロック３４０）、反復カウントは、１の値にインクリメントされる（ブロック３４５）。次に、データ復号化器回路が処理に利用可能であるか否かが判断される（ブロック３５０）。データ復号化器回路が処理に利用可能である場合（ブロック３５０）、事前に記憶されたデータセットが、中央メモリ回路から復号化器入力としてアクセスされる（ブロック３５５）。データ復号化アルゴリズムが、アクセスされたデータセットに適用されて、復号化出力が得られる（ブロック３６０）。利用可能である（すなわち、２回目の反復及びその後の反復に利用可能である）場合、以前の復号化出力が、データ復号化アルゴリズムの適用を誘導するのに用いられる。本発明の幾つかの実施形態では、データ復号化アルゴリズムは、当該技術分野において知られているような低密度パリティ検査復号化アルゴリズムである。本明細書において提供される開示に基づくと、当業者であれば、本発明の種々の実施形態に関して用いることができる様々なデータ復号化アルゴリズムを認識するであろう。
【００４１】
復号化出力が収束したか否かが判断される（ブロック３６５）。復号化出力が収束したと判断された場合（ブロック３６５）、この復号化出力は、読み出しデータとして提供され（ブロック３７０）、現在の反復カウントが反復カウントとして報告される（ブロック３８５）。プロセスは、その後、ブロック３０５に戻る。図３ｂ及び図３ｃに関して以下で論述するように、流れ図３０１、３０２は、読み出しデータが提供される任意の時にトリガーされる代替の同様のプロセスを開示していることを繰り返し述べておく。
【００４２】
一方、復号化出力が収束しないと判断された場合（ブロック３６５）、データ復号化アルゴリズムの反復が更に１回認められるか否かが判断される（ブロック３７５）。幾つかの場合には、データ復号化アルゴリズムの最大反復回数は、固定されているか又はプログラム可能である。これは、事実上、タイムアウト条件である。幾つかの場合には、データ復号化アルゴリズムの許容可能な最大反復回数は１００回である。本明細書において提供される開示に基づくと、当業者であれば、本発明の種々の実施形態に関して認めることができる他の反復回数を認識するであろう。ローカルな反復が更に１回認められない場合（ブロック３７５）、エラーが示され（ブロック３８０）、現在の反復カウントが反復カウントとして報告される（ブロック３８５）。プロセスは、その後、ブロック３０５に戻る。そうではなく、復号化アルゴリズムの反復が更に１回認められる場合（ブロック３７５）、反復カウントはインクリメントされ（ブロック３９０）、ブロック３６０〜ブロック３７５のプロセスが繰り返される。
【００４３】
図３ｂを参照すると、流れ図３０１が、データ再利用を判断するための本発明の幾つかの実施形態による方法を示している。流れ図３０１によると、読み出しデータが提供されているか否かが判断される（ブロック３０３）。上記で論述したように、読み出しデータは、流れ図３００のブロック３２５、３７０の一部として提供される。読み出しデータが提供されている場合（ブロック３０３）、読み出しデータのアクセス頻度が閾値Ａを超えているか否かが判断される（ブロック３０７）。アクセス頻度は、読み出しデータとして提供された特定のデータがフラッシュメモリから何回アクセスされたのかを示すものである。アクセス頻度は、例えば、１日の期間等の規定された期間にわたって求めることができる。本明細書において提供される開示に基づくと、当業者であれば、アクセス頻度を計算することができる様々な期間及び／又はアクセス頻度を計算するための様々な方法を認識するであろう。本発明の幾つかの実施形態では、閾値Ａは固定値である。本発明の他の実施形態では、閾値Ａは、ユーザーがプログラム可能な値である。
【００４４】
アクセス頻度が閾値Ａを超えている場合（ブロック３０７）、提供された読み出しデータに対応する反復カウントが閾値Ｂを超えているか否かが判断される（ブロック３０９）。閾値Ｂを超えていない場合（ブロック３０９）、データ再利用は開始されず、プロセスはブロック３０３に戻る。一方、閾値Ｂを超えている場合（ブロック３０９）、提供された読み出しデータは再利用される（ブロック３１１）。プロセスは、その後、ブロック３０３に戻る。そのような再利用は、提供された読み出しデータをフラッシュメモリ内の新しいロケーション又はフラッシュメモリ内の同じロケーションに再書き込みすることを含む。これは、データ減衰によって、データ内のエラーを訂正するのに必要とされるデータ復号化アルゴリズムの反復の回数が増加することが可能とならないように、フラッシュメモリ内のデータをリフレッシュするよう動作する。再利用制御のそのような手法によって、データアクセスレイテンシー及び／又はデータ損失に対するデータ減衰の影響が削減される。本発明の幾つかの実施形態では、閾値Ｂは固定値である。本発明の他の実施形態では、閾値Ｂは、ユーザーがプログラム可能な値である。
【００４５】
一方、アクセス頻度が閾値Ａよりも大きくない場合（ブロック３０７）、反復カウントが閾値Ｃよりも大きいか否かが判断される（ブロック３１３）。反復カウントが閾値Ｃよりも大きい場合（ブロック３１３）、提供された読み出しデータは再利用される（ブロック３１１）。プロセスは、その後、ブロック３０３に戻る。そうではなく、反復カウントが閾値Ｃよりも大きくない場合（ブロック３１３）、データ再利用は開始されず、プロセスはブロック３０３に戻る。本発明の幾つかの実施形態では、閾値Ｃは固定値である。本発明の他の実施形態では、閾値Ｃは、ユーザーがプログラム可能な値である。
【００４６】
図３ｃを参照すると、流れ図３０２が、データ再利用を判断するための本発明の幾つかの実施形態による別の方法を示している。流れ図３０２によると、読み出しデータが提供されているか否かが判断される（ブロック３０４）。上記で論述したように、読み出しデータは、流れ図３００のブロック３２５、３７０の一部として提供される。読み出しデータが提供されている場合（ブロック３０４）、反復カウントが閾値Ａよりも大きいか否かが判断される（ブロック３０６）。反復カウントが閾値Ａよりも大きい場合（ブロック３０６）、提供された読み出しデータは再利用される（ブロック３０８）。プロセスは、その後、ブロック３０４に戻る。そのような再利用は、提供された読み出しデータをフラッシュメモリ内の新しいロケーション又はフラッシュメモリ内の同じロケーションに再書き込みすることを含む。これは、データ減衰によって、データ内のエラーを訂正するのに必要とされるデータ復号化アルゴリズムの反復の回数を増加させることがないように、フラッシュメモリ内のデータをリフレッシュするよう動作する。再利用制御のそのような手法によって、データアクセスレイテンシー及び／又はデータ損失に対するデータ減衰の影響が削減される。本発明の幾つかの実施形態では、閾値Ａは固定値である。本発明の他の実施形態では、閾値Ａは、ユーザーがプログラム可能な値である。一方、反復カウントが閾値Ａよりも大きくない場合（ブロック３０６）、データ再利用は開始されず、プロセスはブロック３０４に戻る。
【００４７】
上記のアプリケーションにおいて論述した様々なブロックは、他の機能とともに集積回路に実装することができることに留意すべきである。そのような集積回路は、所与のブロック、システム若しくは回路の機能の全て、又はブロック、システム若しくは回路のサブセットの機能の全てを含むことができる。また、ブロック、システム又は回路の要素を複数の集積回路にわたって実装することができる。そのような集積回路は、当該技術分野において知られている任意のタイプの集積回路とすることができる。この任意のタイプの集積回路には、モノリシック集積回路、フリップチップ集積回路、マルチチップモジュール集積回路及び／又は混合信号集積回路が含まれるが、これらに限定されるものではない。本明細書において論述されたブロック、システム又は回路の様々な機能を、ソフトウェア又はファームウェアのいずれかで実装することができることにも留意すべきである。そのような幾つかの場合には、システム全体、ブロック全体又は回路全体を、そのソフトウェア等価物又はファームウェア等価物を用いて実装することができる。他の場合には、所与のシステム、ブロック又は回路の一部分をソフトウェア又はファームウェアで実装することができる一方、他の部分はハードウェアで実装される。
【００４８】
結論として、本発明は、データ記憶装置のための新規なシステム、デバイス、方法及び構成を提供する。本発明の１つ又は複数の実施形態の詳細な説明が上記で与えられたが、本発明の趣旨から逸脱することなく、様々な代替形態、変更形態及び均等物が当業者には明らかであろう。したがって、上記の説明は本発明の範囲を限定するものとして解釈されるべきではなく、本発明の範囲は添付の特許請求の範囲によって規定される。
【符号の説明】
【００４９】
図１
１０５  Write Data  書き込みデータ
１０７  Read Data  読み出しデータ
１１０  Address  アドレス
１２０  Memory Access Controller Including Data Frequency DeterminationCircuit  データ頻度決定回路を備えるメモリアクセスコントローラー
１３０  Write Circuit  書き込み回路
１４０  Flash Memory Cells  フラッシュメモリセル
１５０  Read Circuit  読み出し回路
１６０  Host Controller Circuit  ホストコントローラー回路
１７０  Iterative Data Processing Circuit  反復データ処理回路
１８０  Iterative Count Based Data Recycle Control Circuit  反復カウントベースのデータ再利用制御回路
図２
２０５  Memory Data  メモリデータ
２１４  Soft Information Access or Generation Circuit  軟情報アクセス又は生成回路
２５０  Central Memory Circuit  中央メモリ回路
２７０  Decoder Circuit  復号化器回路
２９０  Hard Decision Buffer Circuit  硬判定バッファー回路
２９２  Hard Decision Output  硬判定出力
２９５  Iteration Counter Circuit  反復カウンター回路
２９６  Iteration Count  反復カウント
図３ａ
３０５  Receive Read Request?  読み出し要求を受信したか？
３１０  Access Flash Memory to Retrieve Selected Data  フラッシュメモリにアクセスして、選択されたデータを取り出す
３２０  Error Free?  エラーはないか？
３２５  Provide the Output as Read Data  出力を読み出しデータとして提供する
３３０  Report Iteration Count Equal to Zero  ０に等しい反復カウントを報告する
３３５  Access or Generate Soft Information Corresponding to the AccessedData  アクセスされたデータに対応する軟情報をアクセス又は生成する
３４０  Store the Accessed Data and the Soft Information as a Data Set to aCentral Memory  アクセスされたデータ及び軟情報をデータセットとして中央メモリに記憶する
３４５  Set Iteration Count Equal to One  反復カウントを１に等しく設定する
３５０  Data Decoder Circuit Free?  データ復号化器回路は使用されていないか？
３５５  Access a Data Set From the Central Memory as a Decoder Input  中央メモリからデータセットに復号化器入力としてアクセスする
３６０  Apply Data Decoding Algorithm to the Decoder Input Guided by aPrevious Decoded Output Where Available to Yield a Decoded Output  データ復号化アルゴリズムを、利用可能である場合に以前の復号化出力によって誘導された復号化器入力に適用して復号化出力を得る
３６５  Converged?  収束したか？
３７０  Provide the Output as a Read Data  出力を読み出しデータとして提供する
３７５  Another Iteration?  更なる１回の反復
３８０  Report Error  エラーを報告する
３８５  Report Iteration Count  反復カウントを報告する
３９０  Increment Iteration Count  反復カウントをインクリメントする
３９５  Receive Write Request?  書き込み要求を受信したか？
３９７  Write Data to Flash Memory  データをフラッシュメモリに書き込む
図３ｂ
３０３  Read Data Provided?  読み出しデータが提供されているか？
３０７  Data Access Frequency>Threshold A?  データアクセス頻度＞閾値Ａ？
３０９  Iteration Count>Threshold B?  反復カウント＞閾値Ｂ？
３１１  Recycle the Read Data  読み出しデータを再利用する
３１３  Iteration Count>Threshold C?  反復カウント＞閾値Ｃ？
図３ｃ
３０４  Read Data Provided?  読み出しデータが提供されているか？
３０６  Iteration Count>Threshold A?  反復カウント＞閾値Ａ？
３０８  Recycle the Read Data  読み出しデータを再利用する
【図１】
2015111388.tif 000006
【図２】
2015111388.tif 000007
【図３ａ】
2015111388.tif 000008
【図３ｂ】
2015111388.tif 000009
【図３ｃ】
2015111388.tif 000010