(57)【要約】メモリデバイス内の調整可能なウォッチドッグのためのデバイス及び技術が本明細書に開示されている。メモリ動作コマンドは、ホストからメモリデバイスで１回目に受信される。リセット信号は、ホストからメモリデバイスで、１回目に続いて２回目に受信される。１回目と２回目の間の時間間隔が測定される。ホストからさらにリセット信号を受信することとは無関係にメモリデバイスをリセットするためメモリデバイス内のタイマーの遅延間隔が、測定された時間間隔に基づいて確立される。
2021527890.tif 000002
【特許請求の範囲】
【請求項１】
１回目にメモリデバイスで、ホストからメモリ動作コマンドを受信することと、
前記１回目に続いて２回目に前記メモリデバイスで、前記ホストからリセット信号を受信することと、
前記１回目と前記２回目との間の時間間隔を測定することと、
前記測定された時間間隔に基づいて、前記ホストからさらにリセット信号を受信することとは無関係に前記メモリデバイスをリセットするため前記メモリデバイスのタイマーの遅延間隔を確立することと、
を含む、方法。
【請求項２】
前記タイマーを確立することは、前記タイマーを前記時間間隔よりも小さい値に設定することを含む、請求項１に記載の方法。
【請求項３】
前記時間間隔が第１の時間間隔であり、
複数の時間間隔を測定することであって、前記複数の時間間隔のそれぞれは、所与のメモリ動作コマンド要求を受信する前記メモリデバイスと、前記所与のメモリ動作コマンドを完了する前記メモリデバイスとの間の時間を表す、前記測定することと、
前記複数の時間間隔のうちの最も長いものを第２の時間間隔として識別することと、
前記第１及び前記第２の時間間隔に基づいて前記タイマーを確立することと、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記第１及び前記第２の時間間隔に基づいて前記タイマーを確立することは、
前記第１及び前記第２の時間間隔を調整することと、
前記調整された第１及び第２の時間間隔のうちの最小時間間隔を決定することと、
前記最小時間間隔に基づいて前記タイマーを確立することと、
を含む、請求項３に記載の方法。
【請求項５】
前記第１及び第２の時間間隔を調整することは、
前記第１の時間間隔を第１の閾値量だけ減らすことと、
前記第２の時間間隔を第２の閾値量だけ増やすことと、
を含む、請求項４に記載の方法。
【請求項６】
前記第１及び第２の閾値量のうちの少なくとも１つが、前記ホストの特性に基づいて決定される、請求項５に記載の方法。
【請求項７】
異なるクラスのメモリ動作コマンドに関連付けられた待ち時間を表すインデックスを保持することと、
前記異なるクラスのメモリ動作コマンドのそれぞれに優先順位を設定することと、
最も優先度の高い前記メモリ動作コマンドに関連付けられた前記複数の時間間隔のうちの、ある時間間隔を前記第２の時間間隔として識別することと、
をさらに含む、請求項３に記載の方法。
【請求項８】
前記タイマーが、前記メモリデバイスに関連付けられたウォッチドッグタイマーを含む、請求項１に記載の方法。
【請求項９】
閾値期間の後、または前記ホストへの変更の検出に応じて、前記タイマーをデフォルト値に設定することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記メモリ動作コマンドは、読み取り、書き込み、プログラム、及び消去のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項１１】
タイマーと、
制御回路と、
を備える、メモリデバイスであって、
前記制御回路は、
１回目に前記メモリデバイスで、ホストからメモリ動作コマンドを受信することと、
前記１回目に続いて２回目に前記メモリデバイスで、前記ホストからリセット信号を受信することと、
前記１回目と前記２回目との間の時間間隔を測定することと、
前記測定された時間間隔に基づいて、前記ホストからさらにリセット信号を受信することとは無関係に前記メモリデバイスをリセットするため前記メモリデバイスのタイマーの遅延間隔を確立することと、
を行うように構成される、前記メモリデバイス。
【請求項１２】
前記タイマーを確立するように構成された前記制御回路は、前記タイマーを前記時間間隔よりも短い値に設定するようにさらに構成されている、請求項１１に記載のメモリデバイス。
【請求項１３】
前記時間間隔は第１の時間間隔であり、前記制御回路は、
複数の時間間隔を測定することであって、前記複数の時間間隔のそれぞれが、所与のメモリ動作コマンド要求を受信する前記メモリデバイスと、前記所与のメモリ動作コマンドを完了する前記メモリデバイスとの間の時間を表す、前記複数の時間間隔を測定することと、
前記複数の時間間隔のうちの最も長いものを第２の時間間隔として識別することと、
前記第１及び前記第２の時間間隔に基づいて前記タイマーを確立することと、
を行うようにさらに構成される、請求項１１に記載のメモリデバイス。
【請求項１４】
前記制御回路は、
前記第１及び前記第２の時間間隔を調整することと、
前記調整された第１及び第２の時間間隔のうちの最小時間間隔を決定することと、
前記最小時間間隔に基づいて前記タイマーを確立することと、
によって前記第１及び前記第２の時間間隔に基づいて前記タイマーを確立するように構成される、請求項１３に記載のメモリデバイス。
【請求項１５】
前記制御回路は、
前記第１の時間間隔を第１の閾値量だけ減らすことと、
前記第２の時間間隔を第２の閾値量だけ増やすことと、
によって、前記第１及び前記第２の時間間隔を調整するように構成され、
前記調整された第１の時間間隔が前記調整された第２の時間間隔よりも小さいと判断したことに応じて、前記タイマーを前記調整された第１の時間間隔に設定し、
前記調整された第２の時間間隔が前記調整された第１の時間間隔よりも小さいと判断したことに応じて、前記タイマーを前記調整された第２の時間間隔に設定する、
請求項１４に記載のメモリデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権出願
本願は、参照によりその全体が本明細書に組み込まれる、２０１８年６月１８日に出願された米国特許出願第１６／０１０，９４０号に対する優先権の利益を主張するものである。
【背景技術】
【０００２】
メモリデバイスは典型的には、コンピュータまたは他の電子デバイスの内部の、半導体、集積回路として設けられる。揮発性メモリ及び不揮発性メモリを含む多くの異なるタイプのメモリが存在する。フラッシュメモリは、広範囲な電子的用途のために不揮発性メモリとして利用される。フラッシュメモリデバイスは通常、高メモリ密度、高信頼性、及び低消費電力を可能にするフローティングゲートまたはチャージトラップメモリセルの１つ以上のグループを含む。
【０００３】
フラッシュメモリアレイアーキテクチャの２つの一般的なタイプには、ＮＡＮＤアーキテクチャとＮＯＲアーキテクチャがあり、それぞれの基本的なメモリセル構成が配置されている論理形式にちなんで名付けられている。メモリアレイのメモリセルは、通常、マトリックスに配置される。一例では、アレイの行内の各フローティングゲートメモリセルのゲートは、アクセスライン（例えば、ワードライン）に結合されている。ＮＯＲアーキテクチャでは、アレイの列にある各メモリセルのドレインは、データライン（例えば、ビットライン）に結合される。ＮＡＮＤアーキテクチャでは、アレイのストリング内の各メモリセルのドレインは、ソースラインとビットラインの間で、ソースからドレインに直列に結合される。各グループの選択されていないメモリセルのゲートに結合されたワードラインは、指定された通過電圧（例えば、Ｖｐａｓｓ）で駆動されて、各グループの選択されていないメモリセルをパストランジスタとして動作させる（例えば、保存されたデータ値により制限されない方法で電流を流す）。
【０００４】
メモリアレイまたはデバイスを組み合わせて、ソリッドステートドライブ（ＳＳＤ）、ユニバーサルフラッシュストレージ（ＵＦＳ（商標））デバイス、マルチメディアカード（ＭＭＣ）ソリッドステート記憶デバイス、組み込みＭＭＣデバイス（ｅＭＭＣ（商標））及び類似の物などのメモリシステムの記憶ボリュームを形成できる。ＳＳＤは、とりわけ、コンピュータまたはモバイルデバイス（例えば、スマートフォン）のメイン記憶デバイスとして使用でき、例えば、パフォーマンス、サイズ、重量、耐久性、動作温度範囲、及び消費電力の点で、可動部品を備えた従来のハードドライブよりも優れている。例えば、ＳＳＤは、磁気ディスクドライブ（例えば、電気機械など）に関連付けられたシーク時間、待ち時間、またはその他の遅延を減らすことができる。ＳＳＤは、フラッシュメモリセルなどの不揮発性メモリセルを使用して、内部バッテリ供給要件を不要にし、ドライブをより用途が広くすること及びコンパクトにすることができる。
【０００５】
多くの従来型メモリデバイスは、通常、デッドロックまたはクラッシュ状態を回避し、それによってメモリデバイスの信頼性を向上させるために、事前設定された一定期間後にメモリデバイスをリセットするウォッチドッグタイマーを含む。メモリデバイスに関連付けられたホストは、場合によっては、ホストによって発行された特定のコマンドがタイムアウトするか、ホストのタイムアウト値を超えると、メモリデバイスをリセットする場合がある。このような従来型メモリウォッチドッグタイマーは、通常、固定間隔に基づいて動作し、これは、メモリデバイスが組み込まれているさまざまなシステムのコンテキストで理想的とは言えないパフォーマンスを提供する場合がある。
【０００６】
必ずしも一定の縮尺で描かれているわけではない図面では、類似数字が異なる図中の類似構成要素を説明し得る。異なる文字の接尾辞を有する類似数字は、類似構成要素の異なる事例を表し得る。図面は、概して、限定ではなく実施例として、本明細書で論じられている様々な実施形態を示す。
【図面の簡単な説明】
【０００７】
【図１】１つまたは複数の実施形態を実装することができるメモリデバイスを含む環境の例を示している。
【図２】１つまたは複数の実施形態を実装することができる適応型ウォッチドッグモジュールの例を示すブロック図である。
【図３】１つまたは複数の実施形態を実装することができるメモリモジュールの例示的なブロック図を示している。
【図４】１つまたは複数の実施形態を実施することができる適応型ウォッチドッグモジュールのパラメータを確立するためのプロセスのフローチャートである。
【図５】１つまたは複数の実施形態を実施することができるホストタイムアウトイベント及びメモリ待ち時間に基づいて適応型ウォッチドッグモジュールのパラメータを確立するためのプロセスのフローチャートである。
【図６】１つまたは複数の実施形態を実装することができるマシンの例を示すブロック図である。
【発明を実施するための形態】
【０００８】
本明細書は、メモリが組み込まれているシステムの動作に応じて、１つまたは複数のメモリデバイス内の、または１つまたは複数のメモリデバイスに関連付けられた適応型ウォッチドッグモジュールのタイマー値（タイムアウト値）を確立するために、メモリウォッチドッグタイマーを構成及び動作するためのさまざまな手法を対象とする。本明細書では、メモリ動作コマンドの受信に関連してホストタイムアウトイベント（例えば、ホストがメモリデバイスをリセットするとき）を監視して、適応型ウォッチドッグモジュールの可能なより低い（または最も低いもしくは最も小さい）タイムアウト値（例えば、ホストのタイムアウト間隔よりも小さい閾値であるタイマー値）を識別するためのさまざまな手法について論じる。本明細書では、１つまたは複数のメモリ動作コマンドを実施または実行する際のメモリ待ち時間を監視して、適応型ウォッチドッグモジュールのより低い（または最も低いもしくは最も小さい）可能なタイムアウト値（例えば、最大のメモリ動作待ち時間より大きい閾値であるタイマー値）を識別するためのさまざまな手法について論じる。本明細書で言及されるように、メモリデバイスは、メモリアレイセル、バスのラッチを含むバスライン、メモリコントローラ、メモリアレイ及び他のメモリ構成要素が実装されるダイ、及び情報を格納または検索するために使用される、あるいは記憶または取得動作を実行する記憶要素を支援する任意の他の構成要素を含み得る。
【０００９】
適応型ウォッチドッグモジュール（複数化）は、メモリデバイス、メモリデバイスダイの外部及び／または外側であり得るか、またはメモリデバイスダイ、または、例えば、メモリダイに物理的に関連付けられた論理ダイ上に含まれ得る。場合によっては、各メモリデバイスに対して、またはいくつかの例では、特定のダイ上のメモリデバイスの各部分に対して個別の適応型ウォッチドッグモジュールが存在する場合がある。適応型ウォッチドッグモジュールは、適応型ウォッチドッグモジュールタイマーがタイムアウトしたとき（特定の適応型ウォッチドッグモジュールタイマー値に到達したとき）に、１つまたは複数のメモリデバイスへのリセット信号をトリガするように構成することができる。これにより、メモリデバイスは、リセット信号を発行するホストとは無関係に（または関与せずに）リセットされる。
【００１０】
いくつかの実装形態では、単一の適応型ウォッチドッグモジュールが複数のメモリデバイスに結合され、様々なメモリデバイスに対して複数のウォッチドッグタイマー（それぞれが異なる値を有する）を実装することができる。例えば、１つのメモリデバイスは、１つのアプリケーションまたはアプリケーションのタイプ（例えば、画像処理アプリケーション）に対して所与の一連の動作を実行することに専用であり得るか、または１つのホストプロセッサ（例えば、マルチコアプロセッサの１つのコア）と通信するように構成され得る。第２のメモリデバイスは、第２のアプリケーションまたはアプリケーションのタイプ（例えば、電子メールアプリケーション）に対して所与の一連の動作を実行することに専用であり得るか、または第２のホストプロセッサ（例えば、マルチコアプロセッサの第２のコア）と通信するように構成され得る。このような状況では、ウォッチドッグモジュールはメモリデバイスごとに異なるタイマー値で構成できる。以下の説明は、特定のウォッチドッグモジュールのタイマー値の調整または確立に関係し、複数のウォッチドッグモジュールのタイマー値の調整または確立にも同様に適用される。
【００１１】
適応型ウォッチドッグモジュールのタイムアウト値は、特定のメモリデバイスまたは適応型ウォッチドッグモジュールが製造されているときに確立されるか、メモリデバイスの製造後に構成、変更、または調整され得る。例えば、適応型ウォッチドッグモジュールは、特定のメモリデバイスの仕様に対応するプリセットタイマー値（例えば、メモリデバイスの最悪の場合の待ち時間条件またはメモリデバイスの平均待ち時間を可能にする安全な時間）で最初に設定され得る。メモリデバイスの動作中に、適応型ウォッチドッグモジュールは、メモリデバイス内及びメモリデバイスと外部構成要素（例えば、プロセッサ）との間の相互作用を監視して、適応型ウォッチドッグモジュールのタイマー値を動的に調整することができる。
【００１２】
いくつかの実装形態では、適応型ウォッチドッグモジュールは、ホスト（メモリデバイスに結合されたプロセッサ）からメモリデバイス動作コマンドを受信するメモリデバイスを表す信号を受信することができる。適応型ウォッチドッグモジュールは、受信したメモリデバイス動作コマンドのタイムスタンプを格納できる。あるいは、適応型ウォッチドッグモジュールは、メモリデバイス動作コマンドがそれぞれのタイムスタンプとともに格納されているメモリキューにアクセスすることができる。メモリデバイス動作コマンドのタイムスタンプは、メモリデバイス動作コマンドがホストから受信された時刻を識別し得る。メモリデバイス動作コマンドがメモリデバイスによって正常に実行された後、メモリデバイスは、適応型ウォッチドッグモジュールのタイマーをリセットすることができる。
【００１３】
場合によっては、ホストからリセット信号を受信する前に、メモリデバイス動作コマンドの実行が終了しないか、正常に実行されないことがあり得る。例えば、ホストは、ホストによってメモリデバイスに発行された各コマンドのホストタイムアウト値にタイマーを関連付けることができ、所与のコマンドがホストのタイムアウト値の前に（例えば、ホストがタイムアウトする前に）メモリデバイスによって正常に実行されない場合、ホストはリセット信号をメモリデバイスに送信する場合がある。そのような状況では、適応型ウォッチドッグモジュールは、メモリデバイスがホストからリセット信号を受信した時間を表すタイムスタンプを生成することができる（例えば、ホストタイムアウトイベントのために）。適応型ウォッチドッグモジュールは、ホストがタイムアウトする前にホストから最初または最後に受信したメモリデバイス動作コマンドのタイムスタンプを取得する場合がある。適応型ウォッチドッグモジュールは、メモリデバイス動作コマンドのタイムスタンプとホストタイムアウトリセット信号のタイムスタンプとの差を計算して、ホストタイムアウトイベント期間（例えば、ホストタイムアウトタイマー）を推定する時間間隔を決定することができる。適応型ウォッチドッグモジュールは、適応型ウォッチドッグモジュールのタイマー値を、決定された時間間隔から閾値量（例えば、デルタ値）を引いた値に設定することができる。時間間隔から閾値量を引いた値は、調整された時間間隔または調整された推定ホストタイムアウト値と呼ばれてもよい。閾値量は、事前定義された時間単位であってもよく、調整されるタイマー値のパーセンテージ値であってもよい。例えば、閾値量は、所与のパーセンテージ値（例えば、１パーセント）に設定され得、そのような状況では、決定された時間間隔から閾値を引いたものを設定することは、タイマー値を決定された時間間隔の９９％（すなわち、決定された時間間隔から決定された時間間隔の１パーセントを引いたもの）に設定することに対応し得る。
【００１４】
その結果、適応型ウォッチドッグモジュールは、その後ホストから受信したメモリ動作コマンドがホストタイムアウト値に近づくと、メモリデバイスをセルフリセットする場合がある。すなわち、適応型ウォッチドッグモジュールは、ホストがタイムアウトする前にメモリデバイスをリセットすることができる。場合によっては、適応型ウォッチドッグモジュールがメモリデバイスをリセットすると、メモリデバイスまたは適応型ウォッチドッグモジュールは、ウォッチドッグが開始したリセットについてホストに通知して、ホストタイムアウトタイマーをリセットし、タイムアウト時にホストがリセット信号を送信しないようにする。「タイムアウトする」、「タイムアウト」、または「タイムアウトしている」という用語は、実行中のタイマーが事前設定された値または量に達することを指すと理解されるべきである。閾値量は、ホストの特性（例えば、プロセッサのタイプ、またはホストで実行されているアプリケーションのタイプもしくは数）に基づいて事前定義できる。
【００１５】
いくつかの実装形態では、適応型ウォッチドッグモジュールは、メモリデバイスがメモリ動作を実行するのにかかる時間を追跡し、適応型ウォッチドッグモジュールのタイマー値を最長時間プラス閾値（例えば、デルタ値）に設定することができる。閾値量は、ホストの推定タイムアウト値から差し引く際に上記で使用した閾値量と同じでも異なっていてもよい。閾値量は、ホストの特性（例えば、プロセッサのタイプ、またはホストで実行されているアプリケーションのタイプもしくは数）に基づいて事前定義できる。閾値量は、事前定義された時間単位であってもよく、調整されるタイマー値のパーセンテージ値であってもよい。例えば、閾値量は、所与のパーセンテージ値（例えば、１パーセント）に設定され得、そのような状況では、タイマー値を最長時間プラス閾値に設定することは、タイマー値を最長時間の１０１％（つまり、最長時間に最長時間の１パーセントを加えたもの）に設定することに対応し得る。
【００１６】
例えば、適応型ウォッチドッグモジュールは、ホストから受信した特定のメモリデバイス動作のタイムスタンプを生成または取得できる。メモリデバイスの動作が完了した後、適応型ウォッチドッグモジュールは別のタイムスタンプを生成し、コマンドが受信されたときとコマンドが完了したときのタイムスタンプの差に基づいて、適応型ウォッチドッグモジュールがコマンドの待ち時間を決定することができる。適応型ウォッチドッグモジュールは、閾値数のメモリデバイス動作コマンドに対する待ち時間値を生成することができる。閾値数のメモリデバイス動作コマンドが実行された後、適応型ウォッチドッグモジュールは、生成された待ち時間値を取得し、そのような値の平均を計算して、メモリ待ち時間期間を決定することができる。あるいは、適応型ウォッチドッグモジュールは、生成されたすべての待ち時間値の最大値を識別し、識別された最大待ち時間値としてメモリ待ち時間期間を決定することができる。適応型ウォッチドッグモジュールは、適応型ウォッチドッグモジュールのタイマー値を、決定されたメモリ待ち時間に閾値を加えたもの（例えば、デルタ値）に設定することができる。決定されたメモリ待ち時間に閾値を加えたものは、調整されたメモリ待ち時間と呼ばれてもよい。結果として、適応型ウォッチドッグモジュールは、その後に受信されたメモリ動作コマンドが、メモリデバイスに発行された前のコマンドの最長または平均待ち時間期間の前に完了しない場合、メモリデバイスをセルフリセットすることができる。
【００１７】
いくつかの実装形態では、適応型ウォッチドッグモジュールは、異なるクラスのメモリ動作に対して異なるメモリ待ち時間を決定することができる。例えば、適応型ウォッチドッグモジュールは、書き込み動作を実行する最大または平均の待ち時間を表す第１のメモリ待ち時間を決定することができる。同様に、適応型ウォッチドッグモジュールは、読み取り動作を実行する最大または平均の待ち時間を表す第２のメモリ待ち時間を決定することができる。具体的には、あるクラスのコマンドは単一の読み取り動作に対応し、別のクラスのコマンドはブロックの読み取り動作に対応し、別のクラスのコマンドは単一の書き込み動作に対応し、別のクラスのコマンドはブロックの書き込み動作に対応し、別のクラスはブロック消去または単一消去に対応し、別のクラスは、所与の間隔（例えば、コマンドの１つ以上のタイプの頻度）内に受信された書き込み動作のセットに対応し得る。適応型ウォッチドッグモジュールは、異なるクラスのコマンドに優先順位を設定し、適応型ウォッチドッグモジュールのタイマー値の調整を、最も優先度の高いコマンドのクラスの待ち時間（閾値量によって調整される）に基づいて行うことができる。例えば、適応型ウォッチドッグモジュールは、書き込みコマンドの優先度が読み取りコマンドよりも高いと判断してもよい。このような状況では、適応型ウォッチドッグモジュールは、第２のメモリ待ち時間値の代わりに第１のメモリ待ち時間値を取得し、第１のメモリ待ち時間値に閾値量を追加してウォッチドッグタイマー値を調整された第１のメモリ待ち時間値に設定することによって第１のメモリ待ち時間値を調整することができる。いくつかの実装形態では、適応型ウォッチドッグモジュールは、ホストによって実行されている特定のアプリケーションに対して最もアクティビティが多いコマンドのクラスを識別する場合がある。このような状況では、適応型ウォッチドッグモジュールは、識別されたコマンドのクラスに関連付けられた優先度を上げてもよい。そのため、第２のクラスよりも第１のクラスの動作を多く実行する特定のアプリケーションは、適応型ウォッチドッグモジュールに、第２のクラスのコマンド待ち時間ではなく第１のクラスのコマンド待ち時間に基づいて適応型ウォッチドッグモジュールのタイマー値を調整するように影響を与えるか、またはそのように調整させることができる。
【００１８】
いくつかの実装形態では、適応型ウォッチドッグモジュールは、調整された推定ホストタイムアウト値（例えば、メモリ動作の受信と、ホストリセットの受信から閾値量を引いたものとの間の時間）を調整されたメモリ待ち時間（例えば、メモリ動作の受信と、メモリ動作の完了に閾値を加えたものとの間の平均または最大時間）と比較し得る。適応型ウォッチドッグモジュールは、ウォッチドッグタイマー値を２つの期間の最小値に設定することができる。具体的には、調整された推定ホストタイムアウト値が調整されたメモリ待ち時間よりも大きい場合、適応型ウォッチドッグモジュールは、ウォッチドッグタイマーを調整されたメモリ待ち時間になるように設定することができる。調整された推定ホストタイムアウト値が調整されたメモリ待ち時間以下である場合、適応型ウォッチドッグモジュールは、ウォッチドッグタイマーを調整された推定ホストタイムアウト値に設定することができる。
【００１９】
いくつかの実装形態では、適応型ウォッチドッグモジュールは、上記及び以下で説明する方法で、ホストタイムアウトリセット間隔及びメモリ動作待ち時間を継続的に監視及び決定することができる。適応型ウォッチドッグモジュールは、ホストタイムアウトリセット信号を受信するたびに、または閾値数のホストタイムアウトリセット信号の後に、適応型ウォッチドッグモジュールのタイマー値を適応させることができる。適応型ウォッチドッグモジュールは、閾値数のコマンドが実行されるたびにタイマー値を適応させることができる。いくつかの実装形態では、適応型ウォッチドッグモジュールは、適応型ウォッチドッグモジュールのタイマー値が最後に更新されてからの閾値期間の後にタイマー値を適応させることができる。いくつかの実装形態では、閾値期間の後（例えば、１週間または１回の完全なバッテリサイクル後、またはアプリケーションが閉じられた後）、適応型ウォッチドッグモジュールは、適応型ウォッチドッグモジュールのタイマー値をデフォルト値にリセットすることができる。デフォルト値は、適応型ウォッチドッグモジュールが製造されたときに適応型ウォッチドッグモジュールに設定された値に対応する場合がある。いくつかの実装形態では、適応型ウォッチドッグモジュールは、ホストに対して新しいソフトウェアアップデートが受信されたか、または新しいファームウェアがホストにインストールされたと判断することができ、それに応じて、適応型ウォッチドッグモジュールは、適応型ウォッチドッグモジュールのタイマー値をデフォルト値にリセットし得る。
【００２０】
モバイル電子デバイス（例えば、スマートフォン、タブレットなど）、自動車アプリケーションで使用する電子デバイス（例えば、自動車センサ、制御ユニット、運転支援システム、乗客の安全または快適システムなど）などの電子デバイス、及びインターネットに接続されたアプライアンスまたはデバイス（例えば、モノのインターネット（ＩｏＴ）デバイスなど）は、とりわけ、電子デバイスのタイプ、使用環境、パフォーマンスの期待、及びそれに類するものに基づいて、さまざまな記憶のニーズを持っている。これらの電子デバイスは、それぞれが異なる記憶デバイスのニーズと動作を持つさまざまなアプリケーションを実行できる。一部のアプリケーションでは、記憶デバイス（例えば、メモリデバイス）に頻繁にアクセスする必要があり得る。このようなアプリケーションが記憶動作を実行する際に見られる待ち時間は、他のアプリケーションが見られる待ち時間を超える場合がある。待ち時間の違いにより、メモリデバイスウォッチドッグのタイムアウト値を固定すると、非効率的で不安定な動作になる可能性がある。具体的には、多くのメモリ動作があるアプリケーションの待ち時間が長くなる場合、ウォッチドッグタイマーの値が短すぎると、エラー状態がないときにメモリデバイスがセルフリセットを実行する可能性がある。一方、メモリ動作がほとんどないアプリケーションの待ち時間が短い場合、ウォッチドッグタイマーの値が長すぎると、メモリデバイスが障害またはクラッシュ状態を検出する前に、ホストがメモリデバイスをリセットする必要が生じる可能性がある。ホストがメモリデバイスをリセットするのを待つことは非効率的であり、ホストに負担をかける。いくつかの実施形態によれば、適応型ウォッチドッグモジュールは、メモリデバイスに結合された特定のホスト及びホスト上で実行される１つまたは複数のアプリケーションの特定のメモリニーズに応じて、ウォッチドッグモジュールのタイムアウト値を適応させることができる。これは、そのような固定ウォッチドッグタイマー値に起因する非効率性を低減することにより、典型的な固定ウォッチドッグタイマー値を超える技術的改善を提供する技術的解決策をもたらす。具体的には、適応型ウォッチドッグモジュールは、いくつかの実施形態によれば、ホストがタイムアウトしてデバイスをリセットする前に、それとは無関係に、メモリデバイスをセルフリセットまたはリセットする。すなわち、適応型ウォッチドッグモジュールは特定のホスト及びメモリデバイスの動作待ち時間に適応し、ホストが関与する前にメモリデバイスをリセットできるため、ホストはメモリデバイスのリセットに関与する必要はない。
【００２１】
この技術的改善により、デバイスが安全な動作状態にあるときにウォッチドッグがセルフリセットを実行する誤ったウォッチドッグ起動イベント（セルフリセットトリガー）を最小限に抑え、ホストがウォッチドッグの前にエラーを検出し、ウォッチドッグの前にリセット信号を発行するホスト検出型ウォッチドッグイベントを最小限に抑える。この技術的改善により、メモリデバイスが結合されるホストまたはターゲットの組み込みデバイスのプラットフォームに応じて、製造中に固定のウォッチドッグタイマー値を設定する必要もなくなる。
【００２２】
図１は、通信インターフェースを介して通信するように構成されたホスト１０５及びメモリデバイス１１０を含む環境１００の例を示している。ホスト１０５またはメモリデバイス１１０は、ＩｏＴデバイス（例えば、冷蔵庫または他の機器、センサ、モータまたはアクチュエータ、移動通信デバイス、自動車、携帯電話、ドローンなど）などの様々な製品１５０に含まれて、製品１５０の処理、通信、または制御をサポートすることができる。
【００２３】
メモリデバイス１１０は、メモリコントローラ１１５と、例えば、１つまたは複数の個別のメモリダイ（例えば、３次元（３Ｄ）ＮＡＮＤダイのスタック）を含むメモリアレイ１２０とを含む。３Ｄアーキテクチャの半導体メモリテクノロジでは、垂直構造が複数の層に積み重ねられ、結合されて物理ページを形成し、特定のフットプリント（つまりフォームファクタ）でメモリデバイス（例えば、記憶デバイス）の記憶密度を高める。一例では、メモリデバイス１１０は、ホスト１０５のディスクリートメモリまたは記憶デバイス構成要素であり得る。他の例では、メモリデバイス１１０は、集積回路（例えば、システムオンチップ（ＳＯＣ）、ダイなど）の一部であり得、積み重ねられるか、そうでなければ、ホスト１０５の他の１つまたは複数の構成要素に含まれ得る。
【００２４】
１つまたは複数の通信インターフェースを使用して、メモリデバイス１１０と、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）インターフェース、ペリフェラル構成要素インターコネクトエクスプレス（ＰＣＩｅ）インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェース、ＵＦＳインターフェース、ｅＭＭＣ（商標）インターフェース、または１つまたは複数の他のコネクタもしくはインターフェースなどのホスト１０５の他の１つまたは複数の構成要素との間でデータを転送することができる。ホスト１０５は、ホストシステム、電子デバイス、プロセッサ、メモリカードリーダー、またはメモリデバイス１１０の外部にある１つまたは複数の他の電子デバイスを含むことができる。いくつかの例では、ホスト１０５は、図６のマシン６００を参照して論じられる構成要素の一部または全部を有するマシンであり得る。データは、データが転送されている間（例えば、メモリアレイとの間での読み取りまたは書き込みの前に）データを一時的に格納するための１つまたは複数のラッチを含み得る入力／出力（Ｉ／Ｏ）バスを介して、メモリデバイス１１０と他の構成要素との間で転送され得る。
【００２５】
メモリコントローラ１１５は、ホスト１０５から命令を受信でき、メモリアレイのメモリセル、プレーン、サブブロック、ブロック、またはページのうちの１つ以上へのデータ転送（例えば、書き込みまたは消去）またはそれらからのデータ転送（例えば、読み取り）など、メモリアレイと通信できる。メモリコントローラ１１５は、とりわけ、１つまたは複数の構成要素または集積回路を含む回路またはファームウェアを含むことができる。例えば、メモリコントローラ１１５は、メモリアレイ１２０全体のアクセスを制御し、ホスト１０５とメモリデバイス１１０との間に変換層を提供するように構成された１つまたは複数のメモリ制御ユニット、回路、制御回路、または構成要素を含むことができる。メモリコントローラ１１５は、メモリアレイ１２０との間でデータを転送するための１つまたは複数のＩ／Ｏ回路（及び対応するラッチ）、ライン、またはインターフェースを含むことができる。メモリコントローラ１１５は、メモリマネージャ１２５及びアレイコントローラ１３５を含むことができる。
【００２６】
アレイコントローラ１３５は、とりわけ、メモリコントローラ１１５に結合されたメモリデバイス１１０の１つ以上のメモリセルへのデータの書き込み、メモリセルからのデータの読み取り、またはメモリセルの消去に関連付けられたメモリ動作を制御するように構成された回路または構成要素を含むことができる。メモリ動作は、例えば、ホスト１０５から受信された、または（例えば、摩耗レベリング、エラー検出または訂正などに関連して）メモリマネージャ１２５によって内部的に生成されたホストコマンドに基づくことができる。
【００２７】
アレイコントローラ１３５は、エラー訂正コード（ＥＣＣ）構成要素１４０を含むことができ、これは、とりわけ、メモリコントローラ１１５に結合されたメモリデバイス１１０の１つ以上のメモリセルへのデータの書き込みまたはメモリセルからのデータの読み取りに関連付けられたエラーを検出または訂正するように構成されたＥＣＣエンジンまたは他の回路を含むことができる。例えば、ＥＣＣ構成要素１４０は、複数のメモリ動作の実行に関連付けられたビット誤り率（ＢＥＲ）を検出または計算することができる。ＢＥＲは、Ｉ／Ｏバスのラッチで発生するビットエラー、コントローラ１１５の内部エラー、ＮＡＮＤアレイの１つ以上で発生するエラー、またはメモリデバイス１１０のマルチレベルセル（ＭＬＣ）の任意の１つ以上に対応する場合がある。メモリコントローラ１１５は、ホスト１０５とメモリデバイス１１０との間で転送されるデータの完全性を維持し、または格納されたデータの完全性を維持（例えば、冗長ＲＡＩＤストレージを使用するなど）しながら、データの様々な動作または記憶に関連付けられたエラー発生（例えば、ビットエラー、動作エラー、クラッシュ状態、ストール、ハングアップなど）を能動的に検出してそれから回復するように構成することができ、障害のあるメモリリソース（例えば、メモリセル、メモリアレイ、ページ、ブロックなど）を除去（例えば、廃棄）して将来のエラーを防ぐことができる。アレイコントローラ１３５は、検出されたＢＥＲ情報を記憶及び追跡のためにメモリマネージャ１２５に送信することができる。メモリコントローラ１１５は、ホストから受信したメモリコマンドを追跡するコマンドキュー（図示せず）を含み得る。キュー内のコマンドは、先入れ先出し（ＦＩＦＯ）方式、スタック方式、順不同、優先順位に従って、または他の任意の適切な順序で、コントローラ１１５によって実行され得る。
【００２８】
説明されたメモリデバイス１１０は、メモリアレイ１２０に関連付けられた適応型ウォッチドッグモジュール１６０を含む。図２を参照してより詳細に論じられるように、適応型ウォッチドッグモジュールは、ウォッチドッグタイマー（図２の２１０）を含む。いくつかの実装形態では、メモリデバイス１１０のコントローラ１１５は、適応型ウォッチドッグモジュール１６０の機能を実装するように構成された制御回路を含み得る。他の実装形態では、適応型ウォッチドッグモジュール１６０は、説明された機能を実装するための独立した制御回路を含み得る。さらに他の実装形態では、制御回路は、適応型ウォッチドッグモジュール１６０とコントローラ１１５との間で分割されて、適応型ウォッチドッグモジュール１６０の説明された機能を実装することができる。図示の例では、アレイコントローラ１３５はメモリコントローラ１１５の一部を形成し、適応型ウォッチドッグモジュール１６０はアレイコントローラの一部を形成する。他の実装形態では、適応型ウォッチドッグモジュール１６０は、アレイコントローラ１３５の外部、及び／または外側であり得る。例えば、適応型ウォッチドッグモジュール１６０（またはその任意の個々の構成要素）は、環境１００内の１つまたは複数の構成要素に結合された独立した構成要素であり得る。例えば、適応型ウォッチドッグモジュール１６０は、メモリデバイス１１０が実装されているものとは別のダイ上の別のデバイスであり得る。適応型ウォッチドッグモジュール１６０がアレイコントローラ１３５の外側に実装される場合、適応型ウォッチドッグモジュール１６０は、メモリデバイス上の構成要素（例えば、コマンドキュー）と通信して、メモリデバイス１１０からメモリ動作コマンドステータス情報を取得することができる。しかしながら、物理的に配置されたウォッチドッグタイマー２１０、及び存在する場合、適応型ウォッチドッグモジュール１６０の追加機能を提供する構造は、一部の従来型メモリデバイスと同様に、メモリアレイを制御し、ホストによって独立して実装されるものとは別個のウォッチドッグタイマー構造及び機能を提供するように機能する。適応型ウォッチドッグモジュール１６０の例示的な実装は、図２に関連して以下に説明される。
【００２９】
いくつかの実装形態では、適応型ウォッチドッグモジュール１６０は、メモリデバイス１１０とのホスト相互作用及びメモリデバイス１１０内のメモリコマンド待ち時間を監視することができる。適応型ウォッチドッグモジュール１６０は、適応型ウォッチドッグモジュール１６０のタイマーが適応型ウォッチドッグモジュール１６０のタイマー値に達すると、コントローラ１３５またはメモリデバイス１１０の他の任意の構成要素をリセットすることができる。いくつかの実装形態では、適応型ウォッチドッグモジュール１６０は、コントローラ１３５によって受信されるホストリセット信号を検出し得、それに応じて、適応型ウォッチドッグモジュール１６０は、コントローラ１３５のコマンドキューに格納された最も早いまたは最も遅いコマンドのタイムスタンプを検索し得る。適応型ウォッチドッグモジュール１６０は、ホストリセット信号のタイムスタンプと検索されたタイムスタンプとの間の差を計算して、ホストタイムアウト期間を推定することができる。適応型ウォッチドッグモジュール１６０は、推定ホストタイムアウト期間を閾値量だけ減らすことによって推定ホストタイムアウト期間を調整し、適応型ウォッチドッグモジュール１６０のタイマー値を調整された推定ホストタイムアウト期間に設定することができる。いくつかの実装形態では、適応型ウォッチドッグモジュール１６０は、閾値数のホストリセット信号が検出された後にそのような調整を実行することができる。
【００３０】
いくつかの実装形態では、適応型ウォッチドッグモジュール１６０は、所与のコマンドが完了した（コントローラ１３５のコマンドキューを終了した）ことを検出することができる。それに応じて、適応型ウォッチドッグモジュール１６０は、そのコマンドがいつキューに入った（ホストから受信された）かを表すタイムスタンプを取得し、そのタイムスタンプを所与のコマンドが完了した現在の時刻と比較して、コマンドの待ち時間を決定することができる。適応型ウォッチドッグモジュール１６０は、同様の方法で、他の多くのコマンドまたは閾値数のコマンドの待ち時間を計算し続けることができる。適応型ウォッチドッグモジュール１６０は、計算された待ち時間の中の平均または最大を識別して、メモリデバイス１１０の待ち時間（例えば、メモリデバイス上で動作する所与のアプリケーションの待ち時間）を決定することができる。適応型ウォッチドッグモジュール１６０は、決定された待ち時間を閾値量だけ増加させることによって決定された待ち時間を調整し、適応型ウォッチドッグモジュール１６０のタイマー値を調整された待ち時間に設定することができる。いくつかの実装形態では、適応型ウォッチドッグモジュール１６０は、コマンドのクラスに基づいて、または異なるコマンドのクラスに関連付けられた優先順位に基づいて、メモリ待ち時間を決定することができる。
【００３１】
いくつかの実装形態では、適応型ウォッチドッグモジュール１６０は、閾値時間が経過した後、新しいファームウェアがインストールされた後、新しいアプリケーションが起動された後、または他の任意の適切な期間にそのような調整を実行することができる。いくつかの実装形態では、適応型ウォッチドッグモジュール１６０は、調整された待ち時間を調整された推定ホストタイムアウト期間と比較し、適応型ウォッチドッグモジュール１６０のタイマー値を２つの期間の最小値（例えば、調整された待ち時間と調整された推定ホストタイムアウト期間のいずれか低い方の値）に設定することができる。
【００３２】
メモリマネージャ１２５は、とりわけ、様々なメモリ管理機能に関連付けられた複数の構成要素または集積回路などの回路またはファームウェアを含むことができる。本説明の目的のために、例示的なメモリ動作及び管理機能は、ＮＡＮＤメモリの文脈で説明される。当業者は、他の形態の不揮発性メモリが類似のメモリ動作または管理機能を有し得ることを認識するであろう。このようなＮＡＮＤ管理機能には、摩耗レベリング（例えば、ガベージコレクションや再生）、エラー検出（例えば、ＢＥＲ監視）または訂正、ブロックリタイアメント、または１つまたは複数の他のメモリ管理機能が含まれる。メモリマネージャ１２５は、ホストコマンド（例えば、ホストから受信したコマンド）をデバイスコマンド（例えば、メモリアレイの動作に関連付けられたコマンドなど）に解析またはフォーマットするか、またはアレイコントローラ１３５もしくはメモリデバイス１１０の１つ以上の他の構成要素のためにデバイスコマンドを生成することができる（例えば、様々なメモリ管理機能を達成するために）。
【００３３】
メモリマネージャ１２５は、メモリデバイス１１０の１つ以上の構成要素に関連付けられた様々な情報（例えば、メモリコントローラ１１５に結合されたメモリアレイまたは１つまたは複数のメモリセルに関連付けられた様々な情報）を保持するように構成された一組の管理テーブル１３０を含むことができる。例えば、管理テーブル１３０は、メモリコントローラ１１５に結合されたメモリセルの１つ以上のブロックに対するブロックエイジ、ブロック消去カウント、エラー履歴、エラーパラメータ情報、ホストリセットタイムアウト値、メモリ動作コマンド待ち時間、または１つまたは複数のエラーカウント（例えば、書き込み動作エラーカウント、読み取りビットエラーカウント、読み取り動作エラーカウント、消去エラーカウントなど）に関する情報を含むことができる。特定の例では、エラーカウントの１つ以上の検出されたエラー（例えば、エラーパラメータ）の数が、閾値（例えば、許容エラー閾値）を超えている場合、ビットエラーは修正不可能なビットエラーと呼ばれることがある。管理テーブル１３０は、とりわけ、修正可能または修正不可能なビットエラーのカウントを保持することができる。管理テーブル１３０はまた、適応型ウォッチドッグモジュール１６０のタイマーの値が変更された回数、値が最後に変更された時刻、及び１つまたは複数のコマンドまたはリセット信号のタイムスタンプを記録、格納、及び監視することができる。
【００３４】
メモリアレイ１２０は、例えば、複数のデバイス、プレーン、サブブロック、ブロック、またはページに配置された複数のメモリセルを含むことができる。一実施例として、４８ＧＢ  ＴＬＣ  ＮＡＮＤメモリデバイスには、ページあたり１８，５９２バイト（１６，３８４＋２２０８バイト）のデータ、ブロックあたり１５３６ページ、プレーンあたり５４８ブロック、及びデバイスあたり４つ以上のプレーンを含むことができる。別の実施例として、３２ＧＢ  ＭＬＣメモリデバイス（セル当たり２ビットのデータを格納する（すなわち、４プログラマブル状態））には、ページあたり１８，５９２バイト（Ｂ）（１６，３８４＋２２０８バイト）のデータ、ブロックあたり１０２４ページ、プレーンあたり５４８ブロック、デバイスあたり４プレーンを含むことができるが、対応するＴＬＣメモリデバイスと同様に、必要な書き込み時間は半分で、プログラム／消去（Ｐ／Ｅ）サイクルは２倍である。他の例には、他の数または配置を含めることができる。いくつかの例では、メモリデバイスまたはその一部は、ＳＬＣモードで、または所望のＭＬＣモード（ＴＬＣ、ＱＬＣなど）で選択的に動作され得る。
【００３５】
動作中、データは通常、ページ単位でメモリデバイス１１０に書き込まれるか、またはメモリデバイス１１０から読み取られ、ブロック単位で消去される。しかし、１つまたは複数のメモリ動作（例えば、読み取り、書き込み、消去など）は、必要に応じて、より大きなまたはより小さなメモリセルのグループに対して実行することができる。メモリデバイス１１０のデータ転送サイズは通常ページと呼ばれ、一方でホストのデータ転送サイズは通常セクタと呼ばれる。
【００３６】
異なるタイプのメモリセルまたはメモリアレイ１２０は、異なるページサイズを提供することができ、またはそれに関連付けられた異なる量のメタデータを必要とし得る。例えば、メモリデバイスタイプが異なればビットエラーレートも異なる可能性があり、このことにより、データページの整合性を確保するために必要なメタデータの量が異なる可能性がある（例えば、ビットエラーレートが高いメモリデバイスでは、ビットエラーレートが低いメモリデバイスよりもより多くのエラー訂正コードのバイトが必要になる場合がある）。例として、ＭＬＣ  ＮＡＮＤフラッシュデバイスは、対応するシングルレベルセル（ＳＬＣ）ＮＡＮＤフラッシュデバイスよりもビットエラーレートが高い場合がある。そのため、ＭＬＣデバイスは、対応するＳＬＣデバイスよりも多くのメタデータバイトをエラーデータに必要とする場合がある。
【００３７】
ＮＡＮＤデバイスのメモリセルのブロックは、動作中にＳＬＣモード（例えば、必ずしもキャッシュとしてではない）または複数のＭＬＣモードのいずれかで動作するように再構成できる。その結果、さまざまなメモリ動作に関連付けられた待ち時間が、デバイスの動作中に変化する可能性がある。具体的には、所与のメモリデバイスの異なる動作モードは、ウォッチドッグタイマー値に影響を与える異なる待ち時間を有する可能性がある。なぜなら、所与のモードのメモリデバイスは、別のモードよりも大きいかまたは小さいコマンド待ち時間を許容できるはずだからである。具体的には、あるモードでは、メモリ動作コマンドの待ち時間が、別のモードのメモリ動作コマンドの待ち時間よりも長くなる場合がある。したがって、第１のモードの適応型ウォッチドッグモジュール１６０のウォッチドッグタイマー値は、第２のモードの適応型ウォッチドッグモジュール１６０のウォッチドッグタイマー値よりも大きくてもよい。適応型ウォッチドッグモジュール１６０は、現在の動作モードに関する指示をメモリデバイスから受信することができ、所与のモードに関連付けられた確立されたタイムアウト値に基づいてタイムアウト値を構成することができる。動作中、適応型ウォッチドッグモジュール１６０のタイムアウト値は、メモリデバイスが所与のモードで動作するときの１つまたは複数のアプリケーションのメモリ動作コマンド待ち時間の分析に基づいて変化し得る。
【００３８】
図２は、１つまたは複数の実施形態を実装することができる適応型ウォッチドッグモジュール１６０の例を示すブロック図である。適応型ウォッチドッグモジュール１６０は、ウォッチドッグタイマー２１０、メモリデバイスコマンドインデックス２６０、ホストタイムアウト記憶デバイス２５０、及び制御回路２２０を含み得る。ウォッチドッグタイマー２１０は、フリーランニングタイマー回路を含み得るか、またはタイマーがリセットされるかもしくは目標値に達するたびに、０または他のプリセット値から別の目標値へのカウントを開始するフリーランニングタイマーの機能を実装し得る。ウォッチドッグタイマー２１０のタイマーの設定は、目標値の値の設定を含む。インデックス２６０及びデバイス２５０は、任意の適切なメモリまたは記憶回路によって実装することができ、任意選択で、同じ物理的記憶デバイスに組み合わせることができる。制御回路２２０は、任意の適切な専用回路、プログラマブルデバイス、または汎用プロセッサなどのプロセッサによって実装され得、図４及び図５で論じられるプロセスに従って適応型ウォッチドッグモジュール１６０の機能を実行するように構成され得る。
【００３９】
適応型ウォッチドッグモジュール１６０は、ホストリセット信号２４０及びメモリデバイス動作コマンド２４２を受信することができる。ホストリセット信号２４０は、ホストデバイスから直接受信され得るか、またはホストリセット信号がホストから受信されたことを示すメモリコントローラまたはそのようなホストリセット信号に関連付けられたタイムスタンプによって提供され得る。メモリデバイス動作コマンド２４２は、適応型ウォッチドッグモジュール１６０に直接提供され得るか、またはコントローラもしくはメモリデバイスのコマンドキューによって提供され得る。コマンド２４２は、（データまたはコマンド自体ではなく）所与のコマンドのタイムスタンプ及びクラス、ならびにコマンドがホストから新たに受信されたか、またはメモリデバイスによって完了されたかの表示のみを含み得る。コマンド２４２は、ホストから受信されたコマンドのすべての内容を含み得、そのような状況では、適応型ウォッチドッグモジュール１６０は、コマンドを処理して、コマンドのクラスを抽出し、コマンドのタイムスタンプを生成し得る。
【００４０】
ウォッチドッグタイマー２１０は、フリーランニングタイマー回路及びタイマー値を含み得る。ウォッチドッグタイマー２１０は、制御回路２２０からリセット信号を受信するたびに、新しいコマンドを受信するたびに、またはコマンドがメモリデバイスによって実行されるのを完了するたびに、ゼロから時間をカウントし始めることができる。タイマー値に達すると、ウォッチドッグタイマー２１０は、制御回路２２０への信号または割り込みを生成することができる。それに応じて、制御回路２２０は、１つまたは複数のデバイスに、ウォッチドッグセルフリセット信号２３０を送信して、メモリコントローラ及び／または関連付けられたメモリデバイス１１０をリセットすることができる。いくつかの実装形態では、複数のウォッチドッグタイマー２１０が、適応型ウォッチドッグモジュール１６０に含まれ得る。そのような状況では、各ウォッチドッグタイマー２１０は、ウォッチドッグタイマー２１０に関連付けられたメモリデバイスのためのセルフリセット信号を生成することができる。複数のウォッチドッグタイマー２１０のそれぞれは、開示された方法で調整可能な同じまたは異なるウォッチドッグタイマー値を使用して動作することができる。
【００４１】
いくつかの実装形態では、コマンド２４２の受信に応じて、制御回路２２０は、コマンドのタイムスタンプを取得し、タイムスタンプとともにコマンドをメモリデバイスコマンドインデックス２６０に格納することができる。いくつかの実装形態では、制御回路２２０は、受信したコマンドの一意の識別子を生成し、その識別子を、インデックス２６０に記憶するために生成されたタイムスタンプに関連付けることができる。制御回路２２０は、閾値数のコマンドがインデックス２６０に格納されるまで、同様の方法でコマンド２４２を処理し続けることができる。制御回路２２０は、コマンド２４２を介して、所与のコマンド（または特定の識別子に関連付けられたコマンド）がメモリデバイスによる処理を完了したことを受信または検出すると、制御回路２２０は、完了したコマンドの新しいタイムスタンプを生成し、一致するコマンドのインデックス２６０を検索し、インデックス２６０に格納されている（コマンドが最初にホストから受信されたときの）タイムスタンプを新しいタイムスタンプと比較して、コマンドのコマンド待ち時間を計算することができる。制御回路２２０は、値を閾値量だけ増加させ、決定された待ち時間をインデックス２６０に格納することによって、計算された待ち時間を調整することができる。いくつかの実装形態では、制御回路２２０は、決定された待ち時間に関連付けられたコマンドのクラスを決定し、そのコマンドのクラスについてインデックス２６０に格納された待ち時間を更新することができる。例えば、制御回路２２０は、インデックス２６０に格納された待ち時間と、完了した最後のコマンドの決定された待ち時間との間の平均または最大を計算することができる。
【００４２】
いくつかの実装形態では、制御回路２２０は、コマンド２４２を分類し、インデックス２６０に格納されたそのクラスのコマンドに関連付けられた待ち時間を更新または変更することができる。いくつかの実装形態では、コマンドの各クラスは、インデックス２６０に格納された異なる優先度に関連付けられ得る。いくつかの実装形態では、制御回路２２０は、ホストによって実行されている異なるアプリケーションに応じて、異なるクラスに関連付けられた優先順位を変更することができる。
【００４３】
いくつかの実装形態では、制御回路２２０は、受信されているリセット信号２４０を検出することができる。リセット信号の検出に応じて、制御回路２２０は、適応型ウォッチドッグモジュール１６０を調整するためのプロセスを開始するために、閾値数の前のリセット信号が受信されたかどうかを判定することができる。いくつかの実装形態では、適応型ウォッチドッグモジュール１６０は、リセット信号２４０が受信されるたびに、適応型ウォッチドッグモジュール１６０タイマーを調整することができる。いずれの場合でも、制御回路２２０は、インデックス２６０を検索して、インデックス２６０に格納されている最も古いかまたは最も新しいコマンド（例えば、最も古いかまたは最も新しいタイムスタンプを有するコマンド）を識別することができる。制御回路２２０は、リセット信号２４０の新しいタイムスタンプを計算し、計算された新しいタイムスタンプを、インデックス２６０に格納された識別された最も古いかまたは最も新しいコマンドと比較することができる。この比較に基づいて、制御回路２２０は、ホストの推定ホストタイムアウト期間を決定することができる。制御回路２２０は、推定タイムアウト期間を閾値量だけ減少させることによって推定ホストタイムアウト期間を調整し、調整された推定ホストタイムアウト期間をホストタイムアウト記憶デバイス２５０に格納することができる。
【００４４】
いくつかの実装形態では、制御回路２２０は、デバイス２５０に格納された調整された推定ホストタイムアウト値またはインデックス２６０に格納された調整されたメモリデバイス待ち時間に基づいて、ウォッチドッグタイマー２１０のタイマー値を設定することができる。いくつかの実装形態では、制御回路２２０は、最も優先度の高いインデックス２６０に格納された待ち時間に基づいてタイマー値を設定することができる。いくつかの実装形態では、制御回路２２０は、タイマー値を、デバイス２５０に格納された調整された推定ホストタイムアウト値とインデックス２６０に格納された調整されたメモリデバイス待ち時間（または最も優先度の高い調整されたメモリデバイス待ち時間）との間の最小値に設定することができる。
【００４５】
図３は、複数のメモリセル３０４を有するメモリアレイ３０２、及びメモリアレイ３０２との通信を提供するか、またはメモリアレイ３０２上で１つまたは複数のメモリ動作を実行する１つまたは複数の回路または構成要素を含むメモリデバイス３００の例示的なブロック図を示す。メモリデバイス３００は、行デコーダ３１２、列デコーダ３１４、センスアンプ３２０、ページバッファ３２２、セレクタ３２４、入力／出力（Ｉ／Ｏ）回路３２６、及びメモリ制御ユニット３３０を含むことができる。
【００４６】
メモリアレイ３０２のメモリセル３０４は、第１のブロック３０２Ａ及び第２のブロック３０２Ｂなどのブロックに配置することができる。各ブロックは、サブブロックを含むことができる。例えば、第１のブロック３０２Ａは、第１のサブブロック３０２Ａ０及び第２のサブブロック３０２Ａｎを含むことができ、第２のブロック３０２Ｂは、第１のサブブロック３０２Ｂ０及び第２のサブブロック３０２Ｂｎを含むことができる。各サブブロックは、複数の物理ページを含むことができ、各ページは、複数のメモリセル３０４を含む。本明細書では２つのブロックを有し、各ブロックは２つのサブブロックを有し、各サブブロックは複数のメモリセル３０４を有するとして示されているが、他の例では、メモリアレイ３０２は、より多いかまたはより少ないブロック、サブブロック、メモリセルなどを含むことができる。他の例では、メモリセル３０４は、複数の行、列、ページ、サブブロック、ブロックなどに配置され得、例えば、アクセスライン３０６、第１のデータライン３１０、あるいは１つまたは複数の選択ゲート、ソースラインなどを使用してアクセスされ得る。
【００４７】
メモリ制御ユニット３３０は、例えば、所望の動作（例えば、書き込み、読み取り、消去など）を示す１つまたは複数のクロック信号もしくは制御信号、あるいは１つまたは複数のアドレスライン３１６で受信されたアドレス信号（Ａ０〜ＡＸ）を含む、制御ライン３３２で受信された１つまたは複数の信号もしくは命令に従って、メモリデバイス３００のメモリ動作を制御できる。メモリデバイス３００の外部の１つまたは複数のデバイス（例えば、図１に関して論じられたホスト）は、制御ライン３３２上の制御信号の値、またはアドレスライン３１６上のアドレス信号の値を制御できる。メモリデバイス３００の外部のデバイスの例は、限定されないが、ホスト、メモリコントローラ、プロセッサ、あるいは図３に示されていない１つまたは複数の回路もしくは構成要素を含むことができる。
【００４８】
いくつかの実装形態では、メモリ制御ユニット３３０は、適応型ウォッチドッグモジュール１６０を含み得る。メモリ制御ユニット３３０は、メモリコントローラ１１５（図１）の機能の一部またはすべてを実装することができる。適応型ウォッチドッグモジュール１６０は、ウォッチドッグタイマー値に達したときに、メモリ制御ユニット３３０及びメモリデバイス３００の任意の他の適切な構成要素においてセルフリセットをトリガするように構成され得る。
【００４９】
メモリデバイス３００は、アクセスライン３０６及び第１のデータライン３１０を使用して、メモリセル３０４の１つ以上にデータの転送（例えば、書き込みまたは消去）またはメモリセル３０４の１つ以上からデータの転送（例えば、読み取り）をすることができる。行デコーダ３１２及び列デコーダ３１４は、アドレスライン３１６からアドレス信号（Ａ０〜ＡＸ）を受信及びデコードでき、どのメモリセル３０４にアクセスするかを決定でき、上述したような、アクセスライン３０６（例えば、複数のワードライン（ＷＬ０〜ＷＬｍ）の１つ以上）または第１のデータライン３１０（例えば、複数のビットライン（ＢＬ０〜ＢＬｎ）の１つ以上）の１つ以上に信号を提供できる。
【００５０】
メモリデバイス３００は、第１のデータライン３１０を使用してメモリセル３０４上のデータの値を決定する（例えば、読み取る）か、または書き込まれるデータの値を決定するように構成される、センスアンプ３２０などのセンス回路網を含むことができる。例えば、メモリセル３０４の選択されたストリングで、センスアンプ３２０の１つ以上は、メモリアレイ３０２内を選択されたストリングを通ってデータライン３１０に流れる読み取り電流に応じて、選択されたメモリセル３０４の論理レベルを読み取ることができる。
【００５１】
メモリデバイス３００の外部の１つまたは複数のデバイスは、Ｉ／Ｏライン（ＤＱ０〜ＤＱＮ）３０８、アドレスライン３１６（Ａ０〜ＡＸ）、または制御ライン３３２を使用してメモリデバイス３００と通信できる。入力／出力（Ｉ／Ｏ）回路３２６は、例えば、制御ライン３３２及びアドレスライン３１６に従って、Ｉ／Ｏライン３０８を使用して、ページバッファ３２２またはメモリアレイ３０２の内外など、メモリデバイス３００の内外にデータの値を転送できる。例えば、Ｉ／Ｏ回路３２６は、メモリアレイ３０２に書き込まれるデータ及びメモリアレイ３０２から１つまたは複数の外部デバイスによって読み取られるデータを一時的に格納するための１つまたは複数のラッチ３２８を含み得る。ページバッファ３２２は、データがメモリアレイ３０２の関連部分にプログラムされる前に、メモリデバイス３００の外部の１つまたは複数のデバイスから受信したデータを格納できるか、または、データがメモリデバイス３００の外部の１つまたは複数のデバイスに送信される前に、メモリアレイ３０２から読み取られたデータを格納できる。
【００５２】
列デコーダ３１４は、アドレス信号（Ａ０〜ＡＸ）を受信して、１つまたは複数の列選択信号（ＣＳＥＬ１〜ＣＳＥＬｎ）にデコードできる。セレクタ３２４（例えば、選択回路）は、列選択信号（ＣＳＥＬ１〜ＣＳＥＬｎ）を受信し、メモリセル３０４から読み取られるか、またはメモリセル３０４にプログラムされるデータの値を表すページバッファ３２２内のデータを選択できる。選択されたデータは、第２のデータライン３１８を使用して、ページバッファ３２２とＩ／Ｏ回路３２６との間で転送できる。
【００５３】
メモリ制御ユニット３３０は、外部ソースまたは電源（例えば、内部または外部バッテリ、ＡＣ−ＤＣコンバータなど）から、供給電圧（Ｖｃｃ）３３４及び負の電源（Ｖｓｓ）３３６（例えば、地電位）などの正及び負の電源信号を受信できる。特定の実施例では、メモリ制御ユニット３３０は、正または負の電源信号を内部的に提供するためのレギュレータ３２８を含むことができる。
【００５４】
図４は、１つまたは複数の実施形態を実装することができる適応型ウォッチドッグモジュールのパラメータを確立するためのプロセス４００のフローチャートである。４１０で、メモリ動作コマンドは、１回目にホストからメモリデバイスで受信される。例えば、適応型ウォッチドッグモジュール１６０は、メモリデバイスコマンド２４２を受信することができる。適応型ウォッチドッグモジュール１６０は、受信したコマンドのタイムスタンプを生成し、生成されたタイムスタンプをコマンドに関連してインデックス２６０（図２）に格納することができる。
【００５５】
４２０で、リセット信号は、ホストからメモリデバイスで１回目に続いて２回目に受信される。例えば、適応型ウォッチドッグモジュール１６０は、ホストから（直接的または間接的に）リセット信号２４０を受信することができる。適応型ウォッチドッグモジュール１６０は、リセット信号がいつ受信されたかを示すリセット信号のタイムスタンプを生成することができる。
【００５６】
４３０で、時間間隔が１回目と２回目との間で測定される。例えば、適応型ウォッチドッグモジュール１６０は、リセット信号に関連付けられた対応するコマンド（例えば、コマンドキューまたはインデックス２６０に格納された最も古いかまたは最も新しいコマンド）を識別し得る。適応型ウォッチドッグモジュール１６０は、識別されたコマンドのタイムスタンプとリセット信号のタイムスタンプとの間の差を計算して、ホストのタイムアウト間隔を推定することができる。
【００５７】
４４０で、ホストからリセット信号を受信することとは無関係に、メモリデバイスをその後リセットするためのタイマーが、測定された時間間隔に基づいて確立される。例えば、適応型ウォッチドッグモジュール１６０は、ウォッチドッグタイマー２１０の値（例えば、タイマー２１０がセルフリセット信号をトリガするタイマー２１０のフリーランニングカウンタによって到達される値）を、測定された時間間隔から閾値量を引いたものとして確立することができる。
【００５８】
図５は、１つまたは複数の実施形態を実装することができるホストタイムアウトイベント及びメモリ待ち時間に基づいて適応型ウォッチドッグモジュールのパラメータを確立するためのプロセス５００のフローチャートである。５１０で、メモリ動作コマンドの完了待ち時間が識別される。例えば、適応型ウォッチドッグモジュール１６０は、コマンドが受信されたときに、タイムスタンプをメモリデバイスコマンドまたはコマンドのクラスに関連付けることができる。コマンドまたはコマンドのクラスが完了したと判定した後、適応型ウォッチドッグモジュール１６０は、別のタイムスタンプを生成し、新しいタイムスタンプを古いタイムスタンプと比較して、コマンドまたはコマンドのクラスのメモリ待ち時間を決定することができる。適応型ウォッチドッグモジュール１６０は、決定されたメモリ待ち時間を閾値量だけ増加させて、調整されたメモリ動作コマンド完了待ち時間を識別することによって、決定されたメモリ待ち時間を調整することができる。
【００５９】
５２０で、調整された推定ホストリセット時間間隔及び調整されたメモリ動作コマンド完了待ち時間が生成される。例えば、適応型ウォッチドッグモジュール１６０は、デバイス２５０から（コマンドが受信されたときとホストタイムアウトリセット信号が検出されたときとの差に基づいて以前に生成された）推定ホストタイムアウトを取得し、推定ホストタイムアウト値を閾値量だけ減らして、調整された推定ホストリセット時間間隔を生成することができる。適応型ウォッチドッグモジュール１６０は、決定されたメモリ動作コマンド完了待ち時間を閾値量だけ増加させて、調整されたメモリ動作コマンド完了待ち時間を生成することができる。
【００６０】
５３０で、調整された推定ホストリセット時間間隔は、調整されたメモリ動作コマンド完了待ち時間と比較される。
【００６１】
５４０で、調整された推定ホストリセット時間間隔が調整されたメモリ動作コマンド完了待ち時間よりも大きいかどうかに関して決定がなされる。調整されたホストリセット時間間隔が調整されたメモリ動作コマンド完了待ち時間よりも大きいと判断したことに応じて、プロセスは５５０に進み、それ以外の場合、プロセスは５６０に進む。
【００６２】
５５０で、メモリデバイスウォッチドッグタイマーは、調整されたメモリ動作コマンド完了待ち時間に設定される。例えば、適応型ウォッチドッグモジュール１６０は、調整されたメモリ動作コマンド完了待ち時間に基づいて、ウォッチドッグタイマー２１０のタイマー値を更新または変更することができる。
【００６３】
５６０で、メモリデバイスウォッチドッグタイマーは、調整された推定ホストリセット時間間隔に設定される。例えば、適応型ウォッチドッグモジュール１６０は、調整された推定ホストリセット時間間隔に基づいて、ウォッチドッグタイマー２１０のタイマー値を更新または変更することができる。
【００６４】
プロセス４００及び５００は、任意の制御回路によって実行され得るか、または専用回路（例えば、制御回路２２０（図２））によって実行され得る。プロセス４００及び５００の任意のステップは、図４及び図５に表される順序通りに実行されなくてもよく、または完全に省略されてもよい。
【００６５】
図６は、本明細書で論じられる技術（例えば、方法論）の任意の１つ以上が実行され得る例示的なマシン６００のブロック図を示す。代替の実施形態では、マシン６００は、スタンドアロンデバイスとして動作し得るか、または他のマシンに接続（例えば、ネットワーク化）され得る。ネットワーク化配備では、マシン６００は、サーバクライアントネットワーク環境で、サーバマシン、クライアントマシン、またはその両方の能力で動作し得る。一実施例では、マシン６００は、ピアツーピア（Ｐ２Ｐ）（または他の分散型）ネットワーク環境でピアマシンとして機能し得る。マシン６００は、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、ウェブアプライアンス、ＩｏＴデバイス、自動車システム、またはそのマシンによって実行されるアクションを指定する命令を（シーケンシャルにまたはその他の方法で）実行することが可能な任意のマシンであり得る。さらに単一のマシンしか示していないが、用語「マシン」は、クラウドコンピューティング、ソフトウェアアズアサービス（ＳａａＳ）、他のコンピュータクラスタ構成などの本明細書に説明する方法論の任意の１つまたは複数の方法論を実行するために命令のセット（または複数のセット）を個別にまたは共同で実行するマシンの任意の集合体を含むと解釈されるものとする。
【００６６】
本明細書に記載される例は、論理、構成要素、デバイス、パッケージ、または機構を含み得るか、またはそれらによって動作し得る。回路網（ｃｉｒｃｕｉｔｒｙ）は、ハードウェア（例えば、単純な回路、ゲート、ロジックなど）を含む有形のエンティティに実装された回路の集合（例えば、セット）である。回路網の構成要素は、時間の経過及び基礎となるハードウェアの変動性に柔軟に対応し得る。回路網は、単独でまたは組み合わせて、動作時に特定のタスクを実行できる構成要素が含まれる。一実施例では、回路網のハードウェアは、特定の動作（例えば、ハードワイヤード）を実行するように不変に設計され得る。一実施例では、回路網のハードウェアは、特定の動作の命令をエンコードするために、物理的に修正された（例えば、磁気的、電気的、不変質量粒子の可動配置など）コンピュータ可読媒体を含む、可変的に接続された物理的構成要素（例えば、実行ユニット、トランジスタ、単純な回路など）を含み得る。物理的構成要素を接続する際に、ハードウェア構成物の基礎となる電気的特性は、例えば、絶縁体から導体に、またはその逆に変更される。この命令により、関係するハードウェア（例えば、実行ユニットまたはロード機構）は、可変接続を介してハードウェア内に回路網の構成要素を作成し、動作中に特定のタスクの一部を実行できる。したがって、コンピュータ可読媒体は、デバイスが動作しているときに、回路網の他の構成要素に通信可能に結合される。一実施例では、物理的構成要素のいずれかが、複数の回路網の複数の構成要素で使用され得る。例えば、動作中、実行ユニットは、ある時点で第１の回路網の第１の回路で使用され、別の時点で第１の回路網の第２の回路によって、または第２の回路網の第３の回路によって再利用され得る。
【００６７】
マシン（例えば、コンピュータシステム）６００（例えば、ホスト１０５、メモリデバイス１１０など）は、ハードウェアプロセッサ６０２（例えば、中央処理装置（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、ハードウェアプロセッサコア、またはメモリコントローラ１１５などのそれらの任意の組み合わせ）、メインメモリ６０４、及びスタティックメモリ６０６を含んでもよく、その一部またはすべてが、インターリンク（例えば、バス）６０８を介して互いに通信し得る。マシン６００は、ディスプレイユニット６１０、英数字入力デバイス６１２（例えば、キーボード）、及びユーザインターフェース（ＵＩ）ナビゲーションデバイス６１４（例えば、マウス）をさらに含み得る。一実施例では、ディスプレイユニット６１０、入力デバイス６１２、及びＵＩナビゲーションデバイス６１４は、タッチスクリーンディスプレイである場合がある。マシン６００は、記憶デバイス（例えば、ドライブユニット）６２１、信号生成デバイス６１８（例えば、スピーカ）、ネットワークインターフェースデバイス６２０、グローバルポジショニングシステム（ＧＰＳ）センサ、コンパス、加速度計、もしくは他のセンサなどの１つまたは複数のセンサ６１６、及び１つまたは複数の適応型ウォッチドッグモジュール１６０をさらに含む場合がある。マシン６００は、１つまたは複数の周辺デバイス（例えば、プリンタ、カードリーダなど）と通信するまたはそれらを制御するためのシリアル（例えば、ユニバーサルシリアルバス（ＵＳＢ）、パラレル、または他の有線または無線（例えば、赤外線（ＩＲ）、近距離無線通信（ＮＦＣ）など）接続などの出力コントローラ６２８を含み得る。
【００６８】
記憶デバイス６２１は、本明細書に説明する技術または機能の任意の１つ以上を実施するか、またはそれによって利用されるデータ構造または命令６２４（例えば、ソフトウェア）の１つ以上のセットが格納される、機械可読媒体６２２を含み得る。命令６２４はまた、マシン６００によるその実行中に、メインメモリ６０４内、スタティックメモリ６０６内、またはハードウェアプロセッサ６０２内に、完全にまたは少なくとも一部が存在し得る。一実施例では、ハードウェアプロセッサ６０２、メインメモリ６０４、スタティックメモリ６０６、または記憶デバイスの１つまたは任意の組み合わせは、機械可読媒体６２２を構成する場合がある。
【００６９】
機械可読媒体６２２は、単一の媒体として示されているが、用語「機械可読媒体」は、１つまたは複数の命令６２４を格納するように構成された単一の媒体または複数の媒体（例えば、集中型もしくは分散型のデータベース、ならびに関連付けられたキャッシュ及びサーバ）を含む場合がある。
【００７０】
用語「機械可読媒体」は、マシン６００による実行のための一時的または非一時的命令を格納、符号化、または運ぶことができ、マシン６００に、本開示の技術のいずれか１つ以上を実行させる、またはそのような命令によって使用される、もしくはそのような命令と関連付けられるデータ構造を格納、符号化、または運ぶことができる任意の一時的または非一時的媒体を含む場合がある。非限定的な機械可読媒体の例には、固体メモリ、ならびに光学及び磁気媒体が含まれ得る。一実施例では、大容量の機械可読媒体は不変（例えば、静止）質量を有する複数の粒子を有する機械可読媒体を含む。したがって、大容量の機械可読媒体は一時的な伝播信号ではない。大容量の機械可読媒体の具体的な例は、半導体メモリデバイス（例えば、電気的プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ））などの不揮発性メモリ、及びフラッシュメモリデバイス、内蔵ハードディスク及びリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにＣＤ−ＲＯＭ及びＤＶＤ−ＲＯＭディスクを含み得る。
【００７１】
記憶デバイス６２１に格納された命令６２４（例えば、ソフトウェア、プログラム、オペレーティングシステム（ＯＳ）など）または他のデータは、プロセッサ６０２が使用するためにメモリ６０４によってアクセスできる。メモリ６０４（例えば、ＤＲＡＭ）は、典型的には、高速であるが揮発性であり、したがって、「オフ」状態にある間を含む長期記憶に適している記憶デバイス６２１（例えば、ＳＳＤ）とは異なるタイプの記憶装置である。ユーザまたはマシン６００が使用する命令６２４またはデータは、典型的には、プロセッサ６０２が使用するためにメモリ６０４にロードされる。メモリ６０４が一杯になると、メモリ６０４を補うために、記憶デバイス６２１からの仮想空間を割り当てることができるが、記憶デバイス６２１は、典型的には、メモリ６０４よりも遅く、書き込み速度は、典型的には、読み取り速度の少なくとも２倍遅いので、仮想メモリの使用は、（メモリ６０４、例えば、ＤＲＡＭとは対照的に）記憶デバイスの待ち時間に起因するユーザ体験を大幅に低下させる可能性がある。さらに、仮想メモリのための記憶デバイス６２１の使用は、記憶デバイス６２１の使用可能な寿命を大幅に短縮する可能性がある。
【００７２】
仮想メモリとは対照的に、仮想メモリ圧縮（例えば、Ｌｉｎｕｘ（登録商標）カーネル機能「ＺＲＡＭ」）は、記憶デバイス６２１へのページングを回避するために、メモリの一部を圧縮ブロックストレージとして使用する。ページングは、そのようなデータを記憶デバイス６２１に書き込む必要があるまで、圧縮されたブロックで行われる。仮想メモリ圧縮は、記憶デバイス６２１の摩耗を低減しながら、メモリ６０４の使用可能なサイズを増加させる。
【００７３】
モバイル電子デバイスまたはモバイル記憶用に最適化された記憶デバイスには、従来、ＭＭＣソリッドステート記憶デバイス（例：ｍｉｃｒｏ  Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ（ｍｉｃｒｏＳＤ（商標））カードなど）が含まれる。ＭＭＣデバイスには、ホストデバイスとの複数のパラレルインターフェース（例えば、８ビットパラレルインターフェース）が含まれており、多くの場合、取り外し可能で、ホストデバイスから構成要素を分離する。対照的に、ｅＭＭＣ（商標）デバイスは回路基板に接続され、ホストデバイスの構成要素と見なされ、シリアルＡＴＡ（商標）（シリアルＡＴ（アドバンストテクノロジー）アタッチメント、またはＳＡＴＡ）ベースのＳＳＤデバイスに匹敵する読み取り速度を備えている。ただし、仮想デバイスまたは拡張現実デバイスを完全に有効にする、ネットワーク速度の向上を利用するなど、モバイルデバイスのパフォーマンスに対する要求は増え続けている。この要求に応じて、記憶デバイスはパラレル通信インターフェースからシリアル通信インターフェースに移行した。コントローラやファームウェアを含むＵＦＳデバイスは、専用の読み取り／書き込みパスを備えた低電圧差動信号（ＬＶＤＳ）シリアルインターフェースを使用してホストデバイスと通信し、読み取り／書き込み速度をさらに向上させる。
【００７４】
命令６２４はさらに、複数の転送プロトコル（例えば、フレームリレー、インターネットプロトコル（ＩＰ）、伝送制御プロトコル（ＴＣＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）など）の任意の１つを利用するネットワークインターフェースデバイス６２０を介して伝送媒体を使用して通信ネットワーク６２６上で送信または受信され得る。通信ネットワークの実施例は、とりわけ、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、パケットデータネットワーク（例えば、インターネット）、携帯電話網（例えば、セルラーネットワーク）、従来型電話サービス（ＰＯＴＳ）ネットワーク、及び無線データネットワーク（例えば、Ｗｉ−Ｆｉ（登録商標）として知られる電気電子技術者協会（ＩＥＥＥ）８０２．１１ファミリの規格、ＷｉＭａｘ（登録商標）として知られるＩＥＥＥ８０２．１６ファミリの規格）、ＩＥＥＥ８０２．１５．４ファミリの規格、ピアツーピア（Ｐ２Ｐ）ネットワークを含み得る。一実施例では、ネットワークインターフェースデバイス６２０は、通信ネットワーク６２６に接続するために１つまたは複数の物理的なジャック（例えば、Ｅｔｈｅｒｎｅｔ、同軸ジャック、もしくは電話ジャック）または１つまたは複数のアンテナを含み得る。一実施例では、ネットワークインターフェースデバイス６２０は、単一入力複数出力（ＳＩＭＯ）技術、複数入力複数出力（ＭＩＭＯ）技術、または複数入力単一出力（ＭＩＳＯ）技術のうちの少なくとも１つを使用して無線通信するための複数のアンテナを含み得る。用語「伝送媒体」は、マシン６００による実行のための命令を格納、符号化、または運ぶことができる任意の無形媒体を含むと解釈されるものとし、そのようなソフトウェアの通信を容易にするためにデジタル通信信号またはアナログ通信信号もしくは他の無形媒体を含む。
【００７５】
上記の詳細な説明は、詳細な説明の一部を形成する添付図面に対する参照を含む。図面は、例示として、本発明を実施できる特定の実施形態を示す。これらの実施形態は、本明細書では「実施例」とも呼ばれる。そのような実施例は、図示または説明された要素に加えて要素を含む場合がある。しかしながら、本発明者らは、図示または説明されたそれらの要素のみが提供される実施例も企図する。さらに、本発明者らは、本明細書に図示または説明された特定の実施例（またはその１つまたは複数の態様）に関して、または他の実施例（またはその１つまたは複数の態様）に関して、図示または説明されたそれらの要素（またはその１つまたは複数の態様）の任意の組み合わせまたは変形を使用する実施例も企図する。
【００７６】
様々な実施例で、本明細書に記載の構成要素、コントローラ、プロセッサ、ユニット、エンジン、またはテーブルは、とりわけ、物理デバイスに格納された物理回路またはファームウェアを含むことができる。本明細書で使用される場合、「プロセッサ」は、限定されないが、マイクロプロセッサ、マイクロコントローラ、グラフィックプロセッサ、制御回路、デジタルシグナルプロセッサ（ＤＳＰ）、または、プロセッサまたはマルチコアデバイスのグループを含む、任意の他のタイプのプロセッサまたは処理回路などの任意のタイプの計算回路を意味する。
【００７７】
本明細書に記載のいくつかの実施形態では、異なるドーピング構成を、ソース側選択ゲート（ＳＧＳ）、制御ゲート（ＣＧ）、及びドレイン側選択ゲート（ＳＧＤ）に適用することができ、これらのそれぞれは、この例では、ポリシリコンで形成されているか、少なくともポリシリコンを含み、その結果、これらの層（例えば、ポリシリコンなど）は、エッチング溶液にさらされたときに異なるエッチング速度を有する可能性がある。例えば、３Ｄ半導体デバイスにおいてモノリシックピラーを形成するプロセスでは、ＳＧＳ及びＣＧは、凹みを形成し得るが、ＳＧＤは、凹みが少ないままであるか、または凹んでさえいない場合がある。したがって、これらのドーピング構成は、エッチング溶液（例えば、テトラメチルアンモニウムヒドロキシド（ＴＭＣＨ））を使用することによって、３Ｄ半導体デバイス内の別個の層（例えば、ＳＧＳ、ＣＧ、及びＳＧＤ）への選択的エッチングを可能にし得る。
【００７８】
本明細書で使用されるメモリセルの動作またはメモリ（またはメモリデバイス）動作の実行は、メモリセルまたはメモリ（またはメモリデバイス）からの読み取り、それへの書き込み、または消去を含む。メモリセルを意図された状態に置く動作は、本明細書では「プログラミング」と呼ばれ、メモリセルへの書き込みまたはメモリセルからの消去（例えば、メモリセルは消去状態にプログラムされ得る）の両方を含むことができる。
【００７９】
要素が別の要素の「上にある（ｏｎ）」、別の要素に「接続している（ｃｏｎｎｅｃｔｅｄ  ｔｏ）」、または別の要素と「結合している（ｃｏｕｐｌｅｄ  ｗｉｔｈ）」と呼ばれる場合、その要素は、他の要素の上に直接あり得るか、直接接続し得るか、または直接結合し得るか、あるいは介在する要素が存在し得ることが理解されよう。対照的に、要素が別の要素の「上に直接ある（ｄｉｒｅｃｔｌｙ  ｏｎ）」、別の要素に「直接接続している（ｄｉｒｅｃｔｌｙ  ｃｏｎｎｅｃｔｅｄ  ｔｏ）」、または別の要素と「直接結合している（ｄｉｒｅｃｔｌｙ  ｃｏｕｐｌｅｄ  ｗｉｔｈ）」と呼ばれる場合、介在する要素または層は存在しない。２つの要素がそれらを結ぶ線で図面に示されている場合、別段の指示がない限り、２つの要素は結合するか、または直接結合することができる。
【００８０】
モジュール（例えば、適応型ウォッチドッグモジュール）という用語は、説明された機能を実行するか、または実行するように構成されたソフトウェア及び回路の任意の組み合わせを指すことができることが理解されよう。モジュールは、プログラマブルデバイス、非プログラマブルデバイス、ＡＳＩＣ、ＰＬＤ、ＦＧＰＡ、または説明された機能を実行するように構成された他の専用または特定の回路またはハードウェア要素を指すことができる。モジュールは、説明された機能を実行するように構成されたソフトウェア（例えば、コンピュータ可読命令、コード、またはコンピュータまたはプロセッサまたは制御回路上で実行するプログラム）を指すことができる。
【００８１】
本明細書に説明する方法の例は、少なくとも部分的に機械またはコンピュータに実装することが可能である。一部の実施例は、上記の例実施に説明したように方法を実施するために電子デバイスを構成するように動作可能な一時的または非一時的命令で符号化された一時的または非一時的コンピュータ可読媒体あるいは機械可読媒体を含み得る。このような方法の実装は、マイクロコード、アセンブリ言語コード、高水準言語コードなどのようなコードを含むことができる。このようなコードは、様々な方法を実施するためのコンピュータ可読命令を含むことができる。コードは、コンピュータプログラム製品の一部を形成し得る。さらに、コードは、実行中または他の時間などに、１つまたは複数の揮発性あるいは不揮発性の有形のコンピュータ可読媒体に有形に格納できる。これらの有形のコンピュータ可読媒体の例は、限定されないが、ハードディスク、リムーバブル磁気ディスク、リムーバブル光ディスク（例えば、コンパクトディスク及びデジタルビデオディスク）、磁気カセット、メモリカードまたはスティック、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、ＳＳＤ、ＵＦＳデバイス、ｅＭＭＣデバイスなどを含むことができる。
【００８２】
実施例
主題（例えば、方法またはシステム）の例（例えば、「実施例１」）は、１回目にメモリデバイスで、ホストからメモリ動作コマンドを受信することと、１回目に続いて２回目にメモリデバイスで、ホストからリセット信号を受信することと、１回目と２回目との間の時間間隔を測定することと、測定された時間間隔に基づいて、ホストからさらなるリセット信号を受信することとは無関係に、メモリデバイスをリセットするため、メモリデバイスのタイマーの遅延間隔を確立することと、を行う方法を含み得る。
【００８３】
実施例２では、実施例１の主題は、タイマーを時間間隔よりも小さい値に設定することによってタイマーを確立するように任意に構成することができる。
【００８４】
実施例３では、実施例１の主題は、時間間隔が第１の時間間隔であり、複数の時間間隔を測定することであって、該複数の時間間隔のそれぞれが所与のメモリ動作コマンドを受信するメモリデバイスと、所与のメモリ動作コマンドを完了するメモリデバイスとの間の時間を表す、該複数の時間間隔を測定することと、該複数の時間間隔の中で最も長いものを第２の時間間隔として識別することと、第１及び第２の時間間隔に基づいてタイマーを確立することと、を行うように任意に構成することができる。
【００８５】
実施例４では、実施例３の主題は、タイマーが第１及び第２の時間間隔に基づいて確立され、第１及び第２の時間間隔を調整することと、調整された第１及び第２の時間間隔のうちの最小時間間隔を決定することと、最小の時間間隔に基づいてタイマーを確立することと、を行うように任意に構成することができる。
【００８６】
実施例５では、実施例４の主題は、第１及び第２の時間間隔は、第１の時間間隔を第１の閾値量だけ減らすことと、第２の時間間隔を第２の閾値量だけ増やすことによって調整されるように任意に構成することができる。第１及び第２の閾値量は、同じでも異なっていてもよい。
【００８７】
実施例６では、実施例５の主題は、第１及び第２の閾値量のうちの少なくとも１つが、ホストの特性に基づいて決定されるように任意に構成することができる。
【００８８】
実施例７では、実施例３の主題は、異なるクラスのメモリ動作コマンドに関連付けられた待ち時間を表すインデックスを保持することと、異なるクラスのメモリ動作コマンドのそれぞれに優先順位を設定することと、最も優先度の高いメモリ動作コマンドに関連付けられた複数の時間間隔のうちの、ある時間間隔を第２の時間間隔として識別することと、を行うように任意に構成することができる。
【００８９】
実施例８では、実施例１の主題は、タイマーがメモリデバイスに関連付けられたウォッチドッグタイマーを含むように任意に構成することができる。
【００９０】
実施例９では、実施例１の主題は、閾値期間の後、またはホストへの変更の検出に応じて、タイマーをデフォルト値に設定するように任意に構成することができる。
【００９１】
実施例１０では、実施例１の主題は、メモリ動作コマンドが、読み取り、書き込み、プログラム、及び消去のうちの少なくとも１つを含むように任意に構成することができる。
【００９２】
主題の実施例１１は、タイマーと、制御回路とを備える、メモリデバイスであって、該制御回路は、１回目にメモリデバイスで、ホストからのメモリ動作コマンドを受信することと、１回目に続いて２回目にメモリデバイスで、ホストからリセット信号を受信することと、１回目と２回目の間の時間間隔を測定することと、測定された時間間隔に基づいて、ホストからさらにリセット信号を受信することとは無関係にメモリデバイスをリセットするためメモリデバイスのタイマーの遅延間隔を確立することと、を行うように構成されたメモリデバイスを含むことができる。
【００９３】
実施例１２では、実施例１１の主題は、制御回路が、タイマーを時間間隔よりも小さい値に設定することによってタイマーを確立するように任意に構成することができる。
【００９４】
実施例１３では、実施例１１の主題は、時間間隔が第１の時間間隔であり、制御回路が、複数の時間間隔を測定することであって、該複数の時間間隔のそれぞれが、所与のメモリ動作コマンドを受信するメモリデバイスと、所与のメモリ動作コマンドを完了するメモリデバイスとの間の時間を表す、該複数の時間間隔を測定することと、複数の時間間隔のうちの最も長いものを第２の時間間隔として識別することと、第１と第２の時間間隔に基づいてタイマーを確立することと、を行うように任意に構成することができる。
【００９５】
実施例１４では、実施例１３の主題は、タイマーが第１及び第２の時間間隔に基づいて確立され、制御回路が第１及び第２の時間間隔を調整することと、調整された第１及び第２の時間間隔のうちの最小または最短時間を決定することと、最小の時間間隔に基づいてタイマーを確立することと、を行うように任意に構成することができる。
【００９６】
実施例１５では、実施例１４の主題は、第１の時間間隔を第１の閾値量だけ減らすことと、第２の時間間隔を第２の閾値量だけ増やすことによって、第１及び第２の時間間隔が調整されるように任意に構成することができる。
【００９７】
実施例１６では、実施例１５の主題は、第１及び第２の閾値量のうちの少なくとも１つが、ホストの特性に基づいて決定されるように任意に構成することができる。
【００９８】
実施例１７では、実施例１３の主題は、制御回路が、異なるクラスのメモリ動作コマンドに関連付けられた待ち時間を表すインデックスを保持することと、異なるクラスのメモリ動作コマンドのそれぞれに優先順位を設定することと、最も優先度の高いメモリ動作コマンドに関連付けられた複数の時間間隔のうちの、ある時間間隔を第２の時間間隔として識別するように任意に構成することができる。
【００９９】
実施例１８では、実施例１１の主題は、タイマーがメモリデバイスに関連付けられたウォッチドッグタイマーを含むように任意に構成することができる。
【０１００】
実施例１９では、実施例１１の主題は、制御回路が、閾値期間の後、またはホストへの変更の検出に応じて、タイマーをデフォルト値に設定するように任意に構成することができる。
【０１０１】
実施例２０では、実施例１１の主題は、メモリ動作コマンドが、読み取り、書き込み、プログラム、及び消去のうちの少なくとも１つを含むように任意に構成することができる。
【０１０２】
主題（例えば、システムまたは装置）の実施例（例えば、「実施例２１」）は、実施例１〜２０のうちの任意の１つ以上における任意の部分の、任意の部分またはその組み合わせを、任意に組み合わせて、実施例１〜２０の機能または方法のうちの任意の１つ以上における任意の部分を実行するための「手段」、またはマシンによって実行されたときに、実施例１〜２０の機能または方法のうちの任意の１つ以上における任意の部分をマシンに実行させる命令を含む「機械可読媒体」（例えば、非一時的など）を含むことができる。
【０１０３】
上記の説明は、例示を意図したものであり、限定的なものではない。本発明の範囲は、添付された特許請求の範囲に関して、そのような特許請求の範囲によって権利が与えられる均等物の全範囲とともに定められるべきである。
【図１】
2021527890.tif 000003
【図２】
2021527890.tif 000004
【図３】
2021527890.tif 000005
【図４】
2021527890.tif 000006
【図５】
2021527890.tif 000007
【図６】
2021527890.tif 000008
【国際調査報告】
2021527890.tif 000009
2021527890.tif 000010