メモリは、揮発性メモリおよび不揮発性メモリに分類され得る。揮発性メモリは、たとえば、ランダムアクセスメモリ(RAM)を含む。不揮発性メモリは、たとえば、リードオンリーメモリ(ROM)およびフラッシュメモリを含む。メモリに記憶されたデータの量が増加するにつれて、ほとんどのメモリは、信頼性を改善するためにエラー修正能を有する。たとえば、エラー修正コード(ECC)は、データ記憶におけるエラーを修正するために用いられる。メモリによって使用されるエラー修正コードは、たとえば、BCHコードおよび低密度パリティーチェック(LDPC)を含み得る。エラー修正コードは、早いエラー修正を達成するために、メモリ内のハードウェア回路として実行され得る。以下の開示におけるエラー修正回路は、ECC回路という。
一般に、ECC回路は、限定的なエラー修正能を有する。たとえば、Nビットのビット幅を有するデータに対して、mビットのエラーが修正され得る(Nおよびmは正の整数で、m<N)。メモリに記憶されたデータ内にエラーがあるとき、メモリ内のECC回路は、もしエラービットの数がエラー修正能の範囲内であれば、うまく修正され得る。エラーがうまく修正されるので、データ記憶装置は、通常の読取りおよび書込み操作を実行し得る。しかしながら、ECC回路がエラー修正を実行するときに、メモリのデータ記憶能が損なわれ、メモリ内にいくつかの問題があるかもしれない。フラッシュメモリを例にとると、フラッシュメモリへの多重プログラムおよび消去操作の後、データ保持の問題が生じて、エラービットの数が増加する。加えて、メモリプログラムの乱れおよび書込みの乱れも、エラービットの数を増加させ得る。さらに、宇宙線からの帯電粒子または材料中の微量放射線元素が、またメモリ内のソフトエラーを生じさせ得る。エラービットの数が増加するとき、電流回路の通常の操作は、ECC回路によって維持され得るが、メモリ内の潜在的な問題が生じ得ることをも示している。これらの問題が無視されるならば、メモリ内のエラービットの数がECC回路のエラー修正能によって回復されるには多くなり過ぎるかもしれず、したがってエラーをうまく修正することができない。本発明において開示されたデータ記憶装置および操作方法は、これらのエラーを、できるだけ早くホストに知らせるべき有益なアラーム情報として利用することができ、それによって、ホストまたはユーザがデータ記憶装置の次の対応する処理工程の実行を容易にする。
図1は、本開示の一実施形態によるデータ記憶装置を示す図である。データ記憶装置10は、第1メモリ121およびコントローラ110を含む。第1メモリ121は、エラー修正能を有する。第1メモリ121は、フラッシュメモリ、位相変化メモリ、磁気抵抗ラム(RAM)、強誘電性ラム(RAM)、ダイナミックラム(DRAM)、スタティックラム(SRAM)であり得る。たとえば、第1メモリ121は、内部にECC回路を有する。
コントローラ110は、第1メモリ121に接続される。コントローラ110は、第1メモリ121に記憶されたデータ内のエラービットを計数し修正するように構成される。たとえば、コントローラ110がエラービットを検出すると、コントローラ110は、ECC回路にデータ修正を実行させることができるか、またはコントローラ110は、第1メモリ121に記憶されたデータを再読取りするために第1メモリ121の操作電圧を変更し得る。コントローラ110は、上記の条件が生ずると、エラー件数を1つ増やす。アラーム条件が満たされていること、たとえば、エラー件数の数値が件数の閾値(たとえば、10)よりも多いかまたは同等であることをコントローラ110が判定すると、コントローラ110は、メッセージをホスト90に送る。ホスト90は、たとえば、アドレス情報によってデータ記憶装置10にアクセスできるコンピュータ、携帯電話、プロセッサ、またはその他のハードウェアデバイスである。ホスト90は、読取り指令または書込み指令をデータ記憶装置10に送り得る。コントローラ110は、できるだけ早く第1メモリ121内の潜在的な問題を見つけるために、第1メモリ121のエラー件数を計数することによって、アラーム条件が満たされているかどうかを判定する。コントローラ110は、第1メモリ121がまだ現在も通常通りに作動するが、第1メモリ121は、潜在的にリスクの状態にあるかもしれないということをホスト90に分からせるために、ホスト90にかかる問題を知らせ得る。このように、ある種のフォローアップ処理工程が、より早めにデータ記憶装置10に実行され得る。たとえば、データ記憶装置は、リードオンリーモードを入力し、データ記憶装置の操作が中断し、またはデータ記憶装置に記憶されたデータが他のデータ記憶装置にコピーされる。
コントローラ110と第1メモリ121との間の通信インタフェースは、たとえば、オープンNANDフラッシュインタフェース(ONFI)、DDR PHYインタフェース(DFI),またはメモリ通信に関するその他のインタフェースである。コントローラ110とホスト90との間の通信インタフェースは、たとえば、シリアルATA(SATA)、パラレルATA(PATA)、ユニバーサルシリアルバス(USB)、セキュアデジタル(SD)カード、ユニバーサルフラッシュストレージ(UFS)、コンパクトフラッシュ(CF)(登録商標)カード、ペリフェラルコンポーネントインタコネクトエキスプレス(PCIエキスプレス)、シリアルアタッチドSCSI(SAS)である。コントローラ110およびホスト90に採用された通信プロトコルは、たとえば、不揮発性メモリエキスプレス(NVMe)またはアドバンストホストコントローラインタフェース(AHCI)である。
図2は、本開示の一実施形態によるコントローラを示す図である。コントローラ110は、リードオンリーメモリ(ROM)112および処理ユニット114を含む。ROM112は、プログラムコード、パラメータおよびコントローラ110のブート処理に必要なデータを記憶する。コントローラ110の起動後、プログラムコード、パラメータおよびコントローラ110の操作に必要なデータが、第1メモリ121から取り出され得る。コントローラ110は、ファームウェアに基づいて、第1メモリ121を制御する。処理ユニット114は、たとえば、マイクロプロセッサ、マイクロコントローラ、演算回路、またはプログラムコードを実行できるその他の回路である。
図3は、本開示の一実施形態によるデータ記憶装置に使用される操作方法の工程図である。操作方法は、以下の工程を含む。工程S201:コントローラ110が、第1メモリのエラー件数を計算する。工程S203:アラーム条件が満たされているとコントローラ110が判定するときに、コントローラ110は、ホストにメッセージを送る。アラーム条件は、たとえば、エラー件数の値が件数の閾値よりも多いか、または同等であることである。
一実施形態において、アラーム条件が満たされているとコントローラ110が判定するときに、コントローラ110は、リードオンリーモードを入力(開始)する。すなわち、データ記憶装置10がリードオンリーモードを入力する。リードオンリーモードでは、第1メモリ121に記憶されたデータは修正されない。第1メモリ121に書き込まれた新しいデータはないであろう。ホスト90は、データ記憶装置10に読取り操作を実行することのみが可能である。一実施形態において、リードオンリーモードは、ダミー書込みモードとして実行され得る。ダミー書込みモードにおいて、ホスト90がデータ記憶装置10に書込み要求を送ると、コントローラ110は、書込み操作を実行しない。代わりに、コントローラ110は、書込み不可を示すメッセージを直接ホスト90に返送する。このように、第1メモリ121に記憶されたデータは変更されず、データに対するさらなるダメージを防ぐ。加えて、ホスト90は、受け取った書込み不可のメッセージに基づいて、データ記憶装置10の異常事態を知り得る。たとえば、データ記憶装置10がリードオンリーモードで作動すると、ホスト90への適用は、その適用がデータ記憶装置10からデータを読取ることのみ必要な場合、通常通り実行され得る。しかしながら、ホスト90は、この適用に対応するログデータをデータ記憶装置10内の第1メモリ121に書き込むことができないであろう。
他の実施形態において、アラーム条件が満たされているとコントローラ110が判定すると、コントローラ110は、データ記憶装置10の読取り機能および書込み機能をロックする。データ記憶装置10は、ロックされた状態では読取りまたは書込みできない。ホスト90がデータ記憶装置10に読取り要求を送ると、コントローラ110は、読取り不可を示すメッセージをホスト90に返送し;ホスト90がデータ記憶装置10に書込み要求を送ると、コントローラ110は、書込み不可を示すメッセージをホスト90に返送する。第1メモリ121に記憶されたデータに対するさらなるダメージは、したがって、データ記憶装置10をロックすることによって防がれ得る。
一実施形態において、アラーム条件が満たされているとコントローラ110が判定すると、コントローラ110は、汎用入力出力(GPIO)ターミナルにおいて電圧を変えることによって、たとえば、GPIOターミナルの1つにおいて電圧レベルを引き上げるかまたは引き下げることによって、ホスト90にメッセージを送る。
他の実施形態において、コントローラ110によってホスト90に送られたメッセージは、セルフモニタリングアナリシスアンドレポーティングテクノロジー(SMART)エラー状態を含む。SMARTエラー状態は、データ記憶装置10、コントローラ110または第1メモリ121に対応する物理的パラメータを含み得る。SMARTエラー状態は、特定のフォーマットを有し、したがって、ホスト90によって識別され得る。ホスト90は、コントローラ110からメッセージを受取り後、ホスト90自身によるフォローアップ処理を決定し得る。たとえば、ホスト90は、ユーザに状況を分からせるために、エラー状態に対応するメッセージをユーザインタフェースに表示することができ、これによって、ユーザは、データ記憶装置10または第1メモリ121を取り換えるなど、問題を手動で処理し得る。代わりに、ホスト90は、データ記憶装置10をロックし、データ記憶装置10へのアクセスを停止し得る。
一実施形態において、コントローラ110によって用いられるアラーム条件は、総エラー件数Ef1が第1エラー件数閾値Fth1より多いことであり、総エラー件数Ef1は、ある期間Tp中にエラービットが第1メモリ121によって検出される回数を示す。期間Tpおよび第1エラー件数閾値Fth1は共に予め決められていてもよい。たとえば、期間Tpが30分で、第1エラー件数閾値Fth1が、2であってもよい。本明細書において用いられる数値は、本発明を限定するというよりも単なる例示であるということに留意すべきである。他の実施形態において、異なる数値が用いられ得る。期間Tp中にエラービットが第1メモリ121によって検出される回数を示す総エラー件数Ef1が、第1エラー件数閾値Fth1よりも多いとき、それは、エラービットが第1メモリ121に頻繁に生じすぎて、したがって、ホスト90がその状況について知らされることを示す。他方、期間Tp中にエラービットが第1メモリ121によって検出される回数を示す総エラー件数Ef1が、第1エラー件数閾値Fth1よりも少ないとき、この期間Tpが終了後に、総エラー件数Ef1がゼロにリセットされ得る。総エラー件数Ef1は、次の期間Tpにおいて再計算され得る。
他の実施形態において、コントローラ110は、検出されたエラービットの数が警告値を超えるとき、総エラー件数Ef1を増やすだけである。たとえば、総エラー件数Ef1は、エラービットの数が60を超えるときのみに、1だけ増やされる。このように、第1メモリ121の通常のエージングにより生じるエラービットの数の通常の増加は、不必要なトラブルを避けるために、エラービットの数が60よりも少ないとき、総エラー件数Ef1が増加することにならない。
他の実施形態において、総エラー件数Et1の履歴の計算は製造後に最初にデータ記憶装置10の電源を入れたときから開始してもよい。この値(総エラー件数Et1の履歴)は、ゼロにリセットされず、データ記憶装置10が製造された後に、第1メモリ121のデータ読取り操作中にエラービットが検出される総回数を記録するために使用され得る。この実施形態において、総エラー件数Ef1および総エラー件数Et1の履歴の1つが第1エラー件数閾値Fth1よりも多い場合に、アラーム条件が満たされる。
上記の説明は、データ記憶装置10が1つのメモリを含む実施形態に関する。図1に示されるように、第1メモリ121は、ランダムアクセスメモリまたはフラッシュメモリであってもよい。たとえば、データ記憶装置10がコンピュータと外部で接続されていてもよく、第1メモリ121は、フラッシュメモリである。本開示において提案される操作方法は、また、多重メモリを含むデータ記憶装置10に適用されてもよく、対応する実施形態が以下に示される。
図4は、本開示の一実施形態による、第1メモリ121および第2メモリ122を含むデータ記憶装置10を示す図である。第2メモリ122は、エラー修正能を有する。たとえば、第1メモリ121はフラッシュメモリであり、第2メモリはダイナミックランダムアクセスメモリ(DRAM)であり、データ記憶装置10がソリッドステートドライブ(SSD)である。コントローラ110は、第2メモリ122に接続される。コントローラ110は、第2メモリ122がエラービットを検出するエラー件数を計数するように構成される。この実施形態において、コントローラ110によって用いられるアラーム条件は、第1メモリ121がエラービットを検出するエラー件数および第2メモリ122がエラービットを検出するエラー件数に関連する。コントローラ110は、ホスト90が早めに問題を処理できるように、第1メモリ121がエラービットを検出するエラー件数および第2メモリ122がエラービットを検出するエラー件数のうちの少なくとも1つが大きすぎるときに、ホスト90に知らせる。
一実施形態において、アラーム条件は、第1総エラー件数Ef1が第1エラー件数閾値Fth1より多いことであるか、または第2総エラー件数Ef2が第2エラー件数閾値Fth2より多いことである。第1総エラー件数Ef1は、期間Tp中にエラービットが第1メモリ121によって検出される回数を示す。第2総エラー件数Ef2は、期間Tp中にエラービットが第2メモリ122によって検出される回数を示す。第1メモリ121および第2メモリ122によって用いられる期間Tpは、この例において、容易に実行するために同じものである。しかしながら、本発明は、これらに限定されるものではない。一実施形態において、第1メモリ121および第2メモリ122が異なる長さの期間を用いてもよい。第1エラー件数閾値Fth1および第2エラー件数閾値Fth2は、同じでも、異なっていてもよい。
図5は、本開示の一実施形態による、第1メモリ121、第2メモリ122および第3メモリ123を含むデータ記憶装置10を示す図である。コントローラ110は、第3メモリ123を有する。たとえば、第3メモリ123は、コントローラ110に埋め込まれていてもよい。第3メモリ123は、スタティックランダムアクセスメモリ(SRAM)であってもよい。第3メモリ123は、エラー修正能を有する。コントローラ110は、第3メモリ123がエラービットを検出するエラー件数を計数するように構成される。この実施形態において、アラーム条件は、第1総エラー件数Ef1が第1エラー件数閾値Fth1より多いことであるか、第2総エラー件数Ef2が第2エラー件数閾値Fth2より多いことであるか、または第3総エラー件数Ef3が第3エラー件数閾値Fth3より多いことである。第1総エラー件数Ef1は、期間Tp中にエラービットが第1メモリ121によって検出される回数を示し、第2総エラー件数Ef2は、期間Tp中にエラービットが第2メモリ122によって検出される回数を示し、第3総エラー件数Ef3は、期間Tp中にエラービットが第3メモリ123によって検出される回数を示す。上記のように、各メモリにより用いられるエラー件数閾値Fth1、Fth2、Fth3は、同じでも、異なっていてもよい。
図6は、本開示の一実施形態によるデータ記憶装置を示す図である。コントローラ110は、ロム112、処理ユニット114およびSRAM133を含む。ロム112は、処理ユニット114により実行されたプログラムコードを記憶し得る。SRAM133は、たとえば、コントローラ110の埋込みメモリである。コントローラ110は、通信インタフェースを介してNANDフラッシュ131およびDRAM132に接続される。この実施形態において、コントローラ110は、エンドツーエンドトランスミッションのエラー件数を計数するように構成される。エンドツーエンドトランスミッションにおけるエラーは、たとえば、ホスト90とデータ記憶装置10との間のデータ伝達エラーである。エラー検出コードが、ホスト90とデータ記憶装置10との間のエンドツーエンドトランスミッションにおけるエラーがあるかどうかを判定するために使用し得る。エラー検出コードは、たとえば、パリティーコード、チェックサム、または巡回冗長検査(CRC)である。
図6に示す実施形態において、コントローラ110によって用いられるアラーム条件は、エラービットが期間Tp中にNANDフラッシュ131によって検出される回数が、第1エラー件数閾値Fth1より多いか、エラービットが期間Tp中にDRAM132によって検出される回数が、第2エラー件数閾値Fth2より多いか、エラービットが期間Tp中にSRAM133によって検出される回数が、第3エラー件数閾値Fth3より多いか、または期間Tp中のエンドツーエンドトランスミッションエラーの数が、第4エラー件数閾値Fth4より多いことである。
図7Aおよび図7Bは、本開示の一実施形態による、図6に示すデータ記憶装置に使用される操作方法の工程図である。工程S300:データ記憶装置10は通常モードで作動する。工程S301:エラーがSRAM133で検出されるかどうかを判定する。すなわち、SRAM133に記憶されたユーザデータがエラービットを有するかどうかを判定する。イエスなら、工程S311:SRAMのエラー件数を増やす、に進み、そうでない場合は、工程S330に飛ぶ。同様に、工程302:エラーがDRAM132で検出されるかどうかを判定する。すなわち、DRAM132に記憶されたユーザデータがエラービットを有するかどうかを判定する。イエスなら、工程S312:DRAMのエラー件数を増やす、に進む。工程303:エンドツーエンドエラーが検出されるかどうかを判定する。すなわち、エンドツーエンドトランスミッションデータがエラービットを有するかどうかを判定する。イエスなら、工程S313:エンドツーエンドトランスミッションのエラー件数を増やす、に進む。工程S304:エラーがNAND型フラッシュ131で検出されるかどうかを判定する。すなわち、NAND型フラッシュ131に記憶されたユーザデータがエラービットを有するかどうかを判定する。イエスなら、工程S314:NAND型フラッシュのエラー件数を増やす、に進む。
コントローラ110は、工程S320において、アラーム条件が満たされているかどうかを判定する。この例において、期間Tpは、1時間であり、各エラーカテゴリーのエラー件数閾値Fthは、3である。アラーム条件は、(SRAMのエラー件数)>3)または(DRAMのエラー件数)>3)または(エンドツーエンドトランスミッションのエラー件数)>3)または(NAND型フラッシュのエラー件数)>3)である。言い換えれば、工程S320において示された4つの判定条件のうちの1つが満たされる限り、データ記憶装置10に潜在的な問題があり得るため、工程S321が実行される。そうでなければ、もし工程320の判定結果がノーの場合、工程S330に進む。
工程S321において、2つの下位工程が示される。これらの下位工程のうちの少なくとも1つが、実施において、実行される。第1の下位工程:データ記憶装置10がダミーの読取り/書込みモード、たとえば、ダミーの読取りモード、ダミーの書込みモード、またはダミーの読取りおよび書込みモードを入力する。第2の下位工程:SMARTエラー状態をホスト90に報告し、GPIOに出力してホスト90に知らせる。工程S321は、アラーム条件が満たされているときの処理工程を示す。工程S330:経過時間が1時間(期間Tp)を超えているかどうかが判定される。もし、経過時間が1時間を超えている場合、工程331に進み、経過時間をゼロに設定し、すべてのエラー件数(工程S311、S312、S313、S314における各エラー件数を含む)をゼロに設定する。次の期間Tpにおけるエラー件数の計算に進む。もし、工程S330の判定結果がノーの場合、工程S340:コントローラ110において記録された各エラー件数は同じのままで、データ記憶装置10は、作動し続けて、エラー事象をモニタする、に進む。
上述した実施形態によれば、メモリにおいてエラーが起こる回数を計算することにより、メモリにおける潜在的な問題が、メモリが使用不可になる前に早めに検出され得て、この情報がホストに報告され得る。ホストまたはホストを操作するユーザが警告情報を知った後に、ホストまたはホストを操作するユーザは、現在使用中のメモリをロックすることができるか、または、現在使用中のメモリを新しいメモリに取り換えることができる。メモリを取り換える操作は簡単で、コストも低く、データロスのリスクもまた少ない。結果として、記憶されたデータを守るためにより高い費用を支払う必要のある突然のロスからメモリに記憶されたデータを保護するための防止対策をとり得る。
開示された実施形態に対して様々な修正および変更がなされ得ることは、当業者には明らかであろう。本明細書および実施例は例示のみとして考慮され、開示の真の範囲は、以下の請求の範囲およびそれらの均等物によって示される。