本開示の態様は、装置、システム、方法、またはコンピュータプログラム製品として具現化されてよい。それ故に、本開示の態様は、全体としてハードウェアの実施形態、(ファームウェア、常駐ソフトウェア、またはマイクロコードなどを含む)全体としてソフトウェアの実施形態、または、本明細書では全てが概して、「回路」、「モジュール」、「装置」、または「システム」と称される場合があるソフトウェアおよびハードウェアの態様を組み合わせる実施形態の形態を取ることができる。さらに、本開示の態様は、コンピュータ可読および/または実行可能プログラムコードを記憶する1つ以上の非一時的なコンピュータ可読記憶媒体において具現化されるコンピュータプログラム製品の形態を取ることができる。
本明細書に説明される機能ユニットの多くは、これらの実装の独立性をより詳細に強調するために、モジュールとして標示されている。例えば、モジュールは、カスタムVLSI回路もしくはゲートアレイ、論理チップなどの既製の半導体、トランジスタ、または他の個別コンポーネントとして実装されてよい。モジュールは、フィールドプログラマブルゲートアレイ、プログラマブルアレイ論理、またはプログラマブル論理デバイスなどのプログラマブルハードウェアデバイスに実装されてもよい。
モジュールは、さまざまなタイプのプロセッサによって実行するためのソフトウェアに少なくとも部分的に実装されてもよい。実行可能コードの特定されたモジュールは、例えば、オブジェクト、手順、または機能として編成されてよいコンピュータ命令の、例えば、1つ以上の物理ブロックもしくは論理ブロックを含むことができる。それにもかかわらず、特定されたモジュールの実行ファイルは、共に物理的に位置する必要はなく、種々の場所に記憶される異種の命令を含むことができ、論理的に共に連結されるとき、モジュールを含み、かつモジュールの示される目的を実現する。
実際に、実行可能コードのモジュールは、単一の命令、または多くの命令を含むことができ、さらにまた、いくつかの異なるコードセグメント上で、種々のプログラムの間で、またはいくつかのメモリデバイスに亘って等で、分散されてよい。モジュールまたはモジュールの一部分がソフトウェアに実装される場合、ソフトウェア部分は、1つ以上のコンピュータ可読および/または実行可能記憶媒体に記憶することができる。1つ以上のコンピュータ可読記憶媒体の任意の組み合わせが利用可能である。コンピュータ可読記憶媒体は、特に限定されないが、例えば、電子、磁気、光学、電磁、赤外線、もしくは半導体システム、装置、またはデバイス、あるいは、前述の任意の適した組み合わせを含むことができるが、伝搬信号を含むことはない。本書の文脈の中で、コンピュータ可読および/または実行可能媒体は、命令実行システム、装置、プロセッサ、またはデバイスによってまたはこれらに関連して使用するためのプログラムを含み持つまたは記憶することができる、任意の有形のおよび/または非一時的な媒体であってよい。
本開示の態様の動作を行うためのコンピュータプログラムコードは、Python、Java(登録商標)、Smalltalk、C++、C#、またはObjective Cなどのオブジェクト指向プログラミング言語、「C」プログラミング言語、スクリプティングプログラミング言語、および/または他の同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ以上のプログラミング言語の任意の組み合わせで書き込まれてよい。プログラムコードは、ユーザのコンピュータの1つ以上において、および/または、データネットワーク上などのリモートコンピュータまたはサーバにおいて部分的にまたは全体的に実行することができる。
コンポーネントは、本明細書で使用されるように、有形の、物理的な、非一時的なデバイスを含む。例えば、コンポーネントは、カスタムVLSI回路、ゲートアレイ、または他の集積回路を含むハードウェア論理回路、論理チップ、トランジスタ、または他の個別デバイスなどの既製の半導体、および/または、他の機械デバイスもしくは電気デバイスとして実装されてよい。コンポーネントは、フィールドプログラマブルゲートアレイ、プログラマブルアレイ論理、またはプログラマブル論理デバイスなどのプログラマブルハードウェアデバイスに実装されてもよい。コンポーネントは、印刷回路基板(PCB)などの電線路を通って1つ以上の他のコンポーネントと電気的に通信する、1つ以上のシリコン集積回路デバイス(例えば、チップ、ダイ、ダイプレーン、パッケージ)または他の個別電子デバイスを含むことができる。本明細書に説明されるモジュールのそれぞれは、ある特定の実施形態では、代替的には、コンポーネントによって具現化またはコンポーネントとして実装されてよい。
本明細書を通して、「1つの実施形態」、「一実施形態」、または同様の言語に言及することは、実施形態に関連して説明される特定の特徴、構造、または特性が本開示の少なくとも1つの実施形態に含まれることを意味する。よって、本明細書全体を通して「1つの実施形態において」、「一実施形態において」、および同様の言語における語句で表されることは、必ずではないが、全て同じ実施形態に言及するが、別段明白に指定されない限り、「全てではなく1つ以上の実施形態」を意味する。「含む」、「備える」、「有する」、およびこれらの変型の用語は、別段明白に指定されない限り、「限定はされないが、〜を含む」を意味する。項目に列挙したリストは、別段明白に指定されない限り、項目のいずれかまたは全てが相互に排他的であるおよび/または相互に包括的であることを暗示しない。「a」、「an」、および「the」の用語はまた、別段明白に指定されない限り、「1つ以上の」に相当する。
本開示の態様は、本開示の実施形態に従って、方法、装置、システム、およびコンピュータプログラム製品の概略的なフローチャート図および/または概略的なブロック図を参照して後述される。概略的なフローチャート図および/または概略的なブロック図のそれぞれのブロック、および概略的なフローチャート図および/または概略的なブロック図におけるブロックの組み合わせがコンピュータプログラム命令によって実施可能であることは理解されるであろう。これらのコンピュータプログラム命令は、コンピュータのプロセッサ、または機械を製作するための他のプログラマブルデータ処理装置に提供可能であることで、プロセッサまたは他のプログラマブルデータ処理装置によって実行する命令によって、概略的なフローチャート図および/または概略的なブロック図(複数可)において指定される機能および/または作用を実装するための手段がもたらされる。
いくつかの代替的な実装形態では、ブロックに記される機能は、図示される順序以外で生じる場合があることも留意されるべきである。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてよい、または、ブロックは、伴う機能性に応じて、逆の順序で実行されることがあってもよい。機能、論理、または効果が図示の1つ以上のブロックもしくはその一部分と同等である他のステップおよび方法を想到することもできる。さまざまな矢印のタイプおよび線のタイプがフローチャート図および/またはブロック図に用いられているが、これらは対応する実施形態の範囲を限定するものではないと理解してよい。例えば、ある矢印は、図示された実施形態の列挙されたステップ間の特定されていない継続時間の待ち期間または監視期間を指していることがある。
以下の詳細な説明において、この一部を形成する添付の図面を参照する。前述の要約は、単なる例示であり、決して限定することを意図するものではない。上述された例示の態様、実施形態、および特徴に加えて、図面および以下の詳細な説明に言及することによって、さらなる態様、実施形態、および特徴が明らかとなるであろう。それぞれの図における要素の説明は、後出の図の要素に言及することができる。。同様の数字は、同様の要素の代替的な実施形態を含む図における同様の要素に言及することができる。
図1Aは、不揮発性メモリデバイス120のダイナミックストローブコンポーネント150を含むシステム100の1つの実施形態のブロック図である。ダイナミックストローブコンポーネント150は、不揮発性メモリ媒体コントローラ126、不揮発性メモリ素子123、またはデバイスドライバなどの一部であってよく、および/またはこれらと通信してよい。ダイナミックストローブコンポーネント150は、コンピューティングデバイス110の不揮発性メモリシステム102上で動作可能であり、このコンピューティングデバイス110は、プロセッサ111、揮発性メモリ112、およびネットワークインターフェース113を備えることができる。プロセッサ111は、1つもしくは複数の中央処理装置、1つもしくは複数の汎用プロセッサ、1つもしくは複数の特定用途向けプロセッサ、1つもしくは複数の仮想プロセッサ(例えば、コンピューティングデバイス110はホスト内で動作する仮想機械であってよい)、または、1つもしくは複数のプロセッサコアを備えてよい。ネットワークインターフェース113は、コンピューティングデバイス110および/または不揮発性メモリ媒体コントローラ126を、インターネットプロトコル(IP)ネットワーク、ストレージエリアネットワーク(SAN)、ワイヤレスネットワーク、または有線ネットワークなどの通信ネットワーク115に通信可能に結合するように構成される1つ以上のネットワークインターフェースを備えることができる。
不揮発性メモリデバイス120は、さまざまな実施形態では、コンピューティングデバイス110に対して1つまたは複数の異なる場所に配設されてよい。1つの実施形態では、不揮発性メモリデバイス120は、半導体チップもしくはパッケージ、または、1つもしくは複数の印刷回路基板、格納筐体、ならびに/または他の機械および/もしくは電気支持構造に配設される他の集積回路デバイスなどの1つ以上の不揮発性メモリ素子123を備える。例えば、不揮発性メモリデバイス120は、1つ以上のダイレクトインラインメモリモジュール(DIMM)カード、1つ以上の拡張カードおよび/もしくはドーターカード、ソリッドステートドライブ(SSD)、または他のハードドライブデバイスを備えてよく、および/または、別のメモリおよび/またはストレージフォームファクタを有することができる。不揮発性メモリデバイス120は、コンピューティングデバイス110のマザーボードと統合および/もしくはこれに取り付けられてよく、コンピューティングデバイス110のポートおよび/またはスロットに設置されてよく、または、外部バス(例えば、外部ハードドライブ)上でコンピューティングデバイス110と通信したり、異なるコンピューティングデバイス110および/または専用格納器具上に設置されてよい。
不揮発性メモリデバイス120は、1つの実施形態において、プロセッサ111のメモリバス上(例えば、揮発性メモリ112と同じメモリバス上、揮発性メモリ112と異なるメモリバス上、または揮発性メモリ112の代わり等)に配設可能である。さらなる実施形態において、不揮発性メモリデバイス120は、Peripheral Component Interconnect Express(PCI ExpressまたはPCIe)バス、シリアルアドバンスドテクノロジーアタッチメント(SATA)バス、パラレルアドバンスドテクノロジーアタッチメント(PATA)バス、小型コンピュータシステムインターフェース(SCSI)バス、FireWireバス、ファイバーチャネル接続、ユニバーサルシリアルバス(USB)、またはPCIeアドバンスドスイッチング(PCIe−AS)バス等の、コンピューティングデバイス110の周辺バス上に配設されてよい。別の実施形態では、不揮発性メモリデバイス120は、イーサネット(登録商標)ネットワーク、インフィニバンドネットワーク、ネットワーク115上のSCSI RDMA、ストレージエリアネットワーク(SAN)、ローカルエリアネットワーク(LAN)、または、インターネット、別の有線ネットワークおよび/またはワイヤレスネットワーク115等のワイドエリアネットワーク(WAN)等のデータネットワーク115上に配設されてよい。
コンピューティングデバイス110は、非一時的なコンピュータ可読記憶媒体114をさらに備えることができる。コンピュータ可読記憶媒体114は、コンピューティングデバイス110(例えばプロセッサ111)に、本明細書に開示される1つ以上の方法のステップを行わせるように構成される実行可能命令を含むことができる。代替的には、またはさらに、ダイナミックストローブコンポーネント150は、非一時的な記憶媒体114に記憶される1つ以上のコンピュータ可読命令として具現化されてよい。
図示する実施形態における不揮発性メモリシステム102は、ダイナミックストローブコンポーネント150を含む。ダイナミックストローブコンポーネント150は、1つの実施形態では、後述される不揮発性メモリデバイス120のダイナミックストローブタイミング(例えば、ストローブ信号の継続時間)を管理するように構成される。ダイナミックストローブコンポーネント150は、ある特定の実施形態では、ストローブ信号の印加に応答してノードの電圧変更を受信することができる。いくつかの実施形態では、ノードの電圧変更は、ノードの電圧変更を初期電圧から過渡電圧に変更する。ダイナミックストローブコンポーネント150は、また、過渡電圧をバイアス電圧と比較することができる。ダイナミックストローブコンポーネント150は、過渡電圧とバイアス電圧との比較に基づいてストローブ信号の継続時間(例えば、時間の長さ)を制御することができる。よって、ストローブ信号の継続時間はダイナミックに制御されてよい。
1つの実施形態では、ダイナミックストローブコンポーネント150は、不揮発性メモリ媒体コントローラ126、不揮発性メモリ素子123、デバイスコントローラ、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理、FPGAまたは他のプログラマブル論理のファームウェア、マイクロコントローラ上での実行用のマイクロコード、または、特定用途向け集積回路(ASIC)などの1つ以上の不揮発性メモリデバイス120の論理ハードウェアを含むことができる。別の実施形態では、ダイナミックストローブコンポーネント150は、プロセッサ111上での実行のためのコンピュータ可読記憶媒体114に記憶される、デバイスドライバなどの実行可能ソフトウェアコードを含むことができる。さらなる実施形態では、ダイナミックストローブコンポーネント150は、実行可能ソフトウェアコードおよび論理ハードウェアの両方の組み合わせを含むことができる。
1つの実施形態では、ダイナミックストローブコンポーネント150は、バス125などを介してデバイスドライバまたは他の実行可能アプリケーションから記憶リクエストを受信するように構成される。ダイナミックストローブコンポーネント150はさらに、バス125を介して、デバイスドライバおよび/またはストレージクライアント116にデータを転送する、または、デバイスドライバおよび/またはストレージクライアント116からデータが転送される、ように構成されてよい。したがって、ダイナミックストローブコンポーネント150は、いくつかの実施形態では、記憶リクエストおよび関連のデータの転送を促進するために、1つ以上のダイレクトメモリアクセス(DMA)モジュール、リモートDMAモジュール、バスコントローラ、ブリッジ、およびバッファなどを含むおよび/またはこれらと通信することができる。別の実施形態では、ダイナミックストローブコンポーネント150は、ストレージクライアント116からのAPI呼び出しとして、またはIO−CTLコマンドとして等で、記憶リクエストを受信することができる。
さまざまな実施形態によると、1つ以上のダイナミックストローブコンポーネント150と通信している不揮発性メモリ媒体コントローラ126は、1つ以上の不揮発性メモリデバイス120および/または不揮発性メモリ素子123を管理することができる。不揮発性メモリデバイス120は、複数のアドレス指定できる媒体記憶場所に配置および/またはパーティション分割されるソリッドステート記憶デバイスおよび/または半導体記憶デバイスなどの記録デバイス、メモリデバイス、および/または記憶デバイスを含むことができる。本明細書で使用されるように、媒体記憶位置は、メモリの任意の物理的ユニット(例えば、不揮発性メモリデバイス120上の任意の数の物理記憶媒体)に参照される。メモリユニットは、ページ、メモリ分割、ブロック、セクタ、または物理記憶場所のコレクションもしくはセット(例えば、論理ページ、論理ブロック)などを含むことができるが、これらに限定されるものではない。
デバイスドライバおよび/または不揮発性メモリ媒体コントローラ126は、特定の実施形態では、論理アドレス空間134をストレージクライアント116に提示することができる。本明細書で使用されるように、論理アドレス空間134は、メモリリソースの論理表現に言及する。論理アドレス空間134は、複数の(例えば、ある範囲の)論理アドレスを含むことができる。本明細書で使用されるように、論理アドレスは、論理ブロックアドレス(LBA)、シリンダ/ヘッド/セクタ(CHS)アドレス、ファイル名、オブジェクト識別子、iノード、汎用一意識別子(UUID)、グローバル一意識別子(GUID)、ハッシュコード、署名、索引項目、範囲、またはエクステントなどを含むがこれらに限定されるものではなく、メモリリソース(例えばデータ)を参照するための任意の識別子に参照される。
不揮発性メモリデバイス120用のデバイスドライバは、論理アドレス対物理アドレスマッピング構造などのメタデータ135を維持して、論理アドレス空間134の論理アドレスを不揮発性メモリデバイス120上の媒体記憶位置にマッピングすることができる。デバイスドライバは、記憶サービスを1つ以上のストレージクライアント116に提供するように構成されてよい。ストレージクライアント116は、コンピューティングデバイス110上で動作するローカルストレージクライアント116、および/またはネットワーク115および/またはネットワークインターフェース113を介してアクセス可能なストレージクライアント116を含むことができる。ストレージクライアント116は、オペレーティングシステム、ファイルシステム、データベースアプリケーション、サーバアプリケーション、カーネルレベルのプロセス、ユーザレベルのプロセス、およびアプリケーション等を含むことができるが、これらに限定されるものではない。
デバイスドライバは、1つ以上の不揮発性メモリデバイス120に通信可能に結合可能である。1つ以上の不揮発性メモリデバイス120は、ソリッドステート記憶デバイス、半導体記憶デバイス、またはSAN記憶リソースなどを含むが、これらに限定されない種々のタイプの不揮発性メモリデバイスを含むことができる。1つ以上の不揮発性メモリデバイス120は、1つ以上の対応する不揮発性メモリ媒体コントローラ126および不揮発性メモリ媒体122を含むことができる。デバイスドライバは、従来のブロックI/Oインターフェース131を介して1つ以上の不揮発性メモリデバイス120にアクセスできるようにしてよい。さらに、デバイスドライバは、SCMインターフェース132を通して向上させた機能性にアクセスできるようにしてよい。メタデータ135は、ブロックI/Oインターフェース131、SCMインターフェース132、キャッシュインターフェース133、または他の関連のインターフェースのいずれかを通して行われるデータ操作を管理および/または追跡するために使用可能である。
キャッシュインターフェース133は、不揮発性メモリデバイス120用のデバイスドライバを介してアクセス可能なキャッシュ特有の特徴を公開することができる。また、いくつかの実施形態では、ストレージクライアント116に提示されるSCMインターフェース132は、1つ以上の不揮発性メモリデバイス120および/または1つ以上の不揮発性メモリ媒体コントローラ126によって実施されるデータ変換にアクセスできるようにする。
デバイスドライバは、1つ以上のインターフェースを通して論理アドレス空間134をストレージクライアント116に提示することができる。上述のように、論理アドレス空間134は、複数の論理アドレスを含むことができ、このアドレスのそれぞれは、1つ以上の不揮発性メモリデバイス120の各媒体位置に対応する。デバイスドライバは、論理アドレスと媒体位置等の間の何れかの間のマッピングを含むメタデータ135を維持することができる。
デバイスドライバは、データ、コマンド、および/またはクエリを、バス125上で1つ以上の不揮発性メモリデバイス120に転送するように構成される不揮発性メモリデバイスインターフェース139をさらに含むことができ、および/またはこれと通信することができる。バス125は、プロセッサ111のメモリバス、Peripheral Component Interconnect Express(PCI ExpressまたはPCIe)バス、シリアルアドバンスドテクノロジーアタッチメント(ATA)バス、パラレルATAバス、小型コンピュータシステムインターフェース(SCSI)、FireWire、ファイバーチャネル、ユニバーサルシリアルバス(USB)、PCIeアドバンスドスイッチング(PCIe−AS)バス、ネットワーク115、インフィニバンド、またはSCSI RDMAなどを含むことができるが、これらに限定されるものではない。不揮発性メモリデバイスインターフェース139は、入力−出力コントロール(IO−CTL)コマンド、IO−CTLコマンド拡張機能、またはリモートダイレクトメモリアクセスなどを使用して、1つ以上の不揮発性メモリデバイス120と通信可能である。
ネットワークインターフェース113は、コンピューティングデバイス110および/または不揮発性メモリ媒体コントローラ126を、ネットワーク115および/または1つ以上のリモートでネットワークアクセス可能なストレージクライアント116に通信可能に結合するように構成される1つ以上のネットワークインターフェースを含むことができる。ストレージクライアント116は、コンピューティングデバイス110上で交差するローカルストレージクライアント116および/またはネットワーク115および/またはネットワークインターフェース113を介してアクセス可能なリモートストレージクライアント116を含むことができる。不揮発性メモリ媒体コントローラ126は、1つ以上の不揮発性メモリデバイス120の一部、および/またはこれと通信している。図1Aは単一の不揮発性メモリデバイス120を示しているが、本開示は、この点に関して限定されず、任意の数の不揮発性メモリデバイス120を組み込むように適応可能である。
不揮発性メモリデバイス120は、不揮発性メモリ媒体122の1つ以上の素子123を含むことができる。不揮発性メモリ媒体122は、ReRAM、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、相変化メモリ(PCM、PCME、PRAM、PCRAM、ovonic unified memory、カルコゲニドRAM、またはC−RAM)、NANDフラッシュメモリ(例えば、2DのNANDフラッシュメモリ、3DのNANDフラッシュメモリ)、NORフラッシュメモリ、ナノランダムアクセスメモリ(ナノRAMまたはNRAM)、ナノクリスタルワイヤーベースメモリ、酸化ケイ素ベースサブ10ナノメートルプロセスメモリ、グラフェンメモリ、Silicon−Oxide−Nitride−Oxide−Silicon(SONOS)、プログラマブルメタライゼーションセル(PMC)、導電性ブリッジRAM(CBRAM)、磁気抵抗RAM(MRAM)、磁気記憶媒体(例えば、ハードディスク、テープ)、または光学記憶媒体などを含むことができるが、これらに限定されない。不揮発性メモリ媒体122の1つ以上の素子123は、ある特定の実施形態では、記憶域クラスメモリ(SCM)を含む。
一方、NANDフラッシュなどのレガシ技術は、ブロックであってよく、および/または、ページアドレス指定可能な記憶域クラスメモリは、1つの実施形態において、バイトアドレス指定可能であってよい。さらなる実施形態では、記憶域クラスメモリは、NANDフラッシュより速いおよび/または耐用期間が長い(例えば、耐久性)、DRAMより費用が低い、使用電力が低いおよび/または記憶密度が高い場合がある、または、他の技術と比較すると1つ以上の他の利点または改善点をもたらすことができる。例えば、記憶域クラスメモリは、ReRAM、メモリスタメモリ、プログラマブルメタライゼーションセルメモリ、相変化メモリ、ナノRAM、ナノクリスタルワイヤーベースメモリ、酸化ケイ素ベースサブ10ナノメートルプロセスメモリ、グラフェンメモリ、SONOSメモリ、PMCメモリ、CBRAM、MRAM、および/またはこれらの変形の1つ以上の不揮発性メモリ素子123を含むことができる。
不揮発性メモリ媒体122は、本明細書では、さまざまな実施形態において「メモリ媒体」と称されるが、不揮発性メモリ媒体122は、より一般的には、不揮発性メモリ媒体、または不揮発性記憶媒体等と称されることがある、データを記録することができる1つ以上の不揮発性記録媒体を含むことができる。さらに、不揮発性メモリデバイス120は、さまざまな実施形態において、不揮発性記録デバイス、不揮発性メモリデバイス、または不揮発性記憶デバイス等を含むことができる。
不揮発性メモリ媒体122は、チップ、パッケージ、プレーン、またはダイなどを含むことができるがこれらに限定されない1つ以上の不揮発性メモリ素子123を含むこともできる。不揮発性メモリ媒体コントローラ126は、不揮発性メモリ媒体122上でのデータ操作を管理するように構成可能であり、かつ、1つ以上のプロセッサ、プログラマブルプロセッサ(例えば、FPGA)、ASIC、またはマイクロコントローラ等を含むことができる。いくつかの実施形態では、不揮発性メモリ媒体コントローラ126は、不揮発性メモリ媒体122にデータを記憶および/またはここからデータを読み出し、不揮発性メモリデバイス120に対してデータを転送する等を実行するように構成される。
不揮発性メモリ媒体コントローラ126は、バス127によって不揮発性メモリ媒体122に通信可能に結合されてよい。バス127は、不揮発性メモリ素子123に対してデータを通信するためのI/Oバスを含むことができる。バス127は、アドレス指定および他のコマンドならびに制御情報を、不揮発性メモリ素子123に通信するための制御バスをさらに含むことができる。いくつかの実施形態では、バス127は、不揮発性メモリ素子123を不揮発性メモリ媒体コントローラ126に並列に通信可能に結合できる。この並列アクセスは、不揮発性メモリ素子123をグループとして管理可能にして、論理メモリ素子129を形成することができる。論理メモリ素子は、各論理メモリユニット(例えば、論理ページ)および/または論理メモリ分割(例えば、論理ブロック)にパーティション分割可能である。論理メモリユニットは、不揮発性メモリ素子のそれぞれの物理メモリユニットを論理的に組み合わせることによって形成されてよい。
不揮発性メモリ媒体コントローラ126は、ある特定の実施形態では、ワード線のアドレスを使用して不揮発性メモリ素子123内でワード線のブロックを編成可能とすることで、ワード線が単調増加シーケンスに論理的に編成されるようにする(例えば、ワード線のアドレスを単調増加シーケンスに復号するおよび/または翻訳するなど)。さらなる実施形態では、不揮発性メモリ素子123内のブロックのワード線は、ワード線アドレスの単調増加シーケンスに物理的に配置可能であり、連続してアドレス指定されたワード線はまた、物理的に隣接している(例えば、WL0、WL1、WL2、…WLN)。
不揮発性メモリ媒体コントローラ126は、コンピューティングデバイス110上で実行するデバイスドライバを含む、および/またはこれと通信可能である。デバイスドライバは、1つ以上のインターフェース131、132、および/または133を介してストレージクライアント116にストレージサービスを提供することができる。いくつかの実施形態では、デバイスドライバは、ブロック−デバイスI/Oインターフェース131を提供し、このインターフェース131を通じて、ストレージクライアント116はブロックレベルのI/O操作を行う。代替的には、またはさらに、デバイスドライバは、他のストレージサービスをストレージクライアント116に提供することができる記憶域クラスメモリ(SCM)インターフェース132を提供可能である。いくつかの実施形態では、SCMインターフェース132は、ブロックデバイスインターフェース131に対する拡張機能を備えることができる(例えば、ストレージクライアント116は、ブロックデバイスインターフェース131に対する拡張機能または追加物によってSCMインターフェース132にアクセスできる)。代替的には、またはさらに、SCMインターフェース132は、別個のAPI、サービス、および/またはライブラリとして提供されてよい。デバイスドライバはさらに、不揮発性メモリシステム102を使用してデータをキャッシュするためのキャッシュインターフェース133を提供するように構成可能である。
デバイスドライバは、上述したように、データ、コマンド、および/またはクエリを、バス125上で不揮発性メモリ媒体コントローラ126に転送するように構成される不揮発性メモリデバイスインターフェース139をさらに含むことができる。
図1Bは、1つ以上のメモリダイもしくはチップ212を含むことができる不揮発性記憶デバイス210の一実施形態を示す。メモリダイ212は、いくつかの実施形態では、メモリアレイ200、ダイコントローラ220、および読み出し/書き込み回路230A/230Bのアレイ(2次元/または3次元)を含む。1つの実施形態では、さまざまな周辺回路によるメモリアレイ200へのアクセスは、そのアレイの両側で対称になるように実施されることで、片側でのアクセス線および回路構成の密度は半分に低減する。読み出し/書き込み回路230A/230Bは、さらなる実施形態では、メモリセルのページを並列に読み出すまたはプログラムすることを可能にする複数のセンスブロック250を含む。
メモリアレイ200は、さまざまな実施形態では、行デコーダ240A/240Bによるワード線ごとに、および、カラムデコーダ242A/242Bによるビット線ごとにアドレス指定可能である。いくつかの実施形態では、コントローラ244は、1つ以上のメモリダイ212と同じメモリデバイス210(例えば、取り外し可能記憶域カードまたはパッケージ)に含まれる。コマンドおよびデータは、配線232を介して、ホストとコントローラ244との間で、および配線234を介して、コントローラと1つ以上のメモリダイ212との間で転送される。1つの実装形態は、複数のチップ212を含むことができる。
ダイコントローラ220は、1つの実施形態では、メモリアレイ200上でメモリ操作を行うために読み出し/書き込み回路230A/230Bと協働する。ダイコントローラ220は、特定の実施形態では、ダイナミックストローブコンポーネント150、状態マシン222、およびオンチップアドレスデコーダ224を含む。1つの実施形態では、状態マシン222は、ダイナミックストローブコンポーネント150の少なくとも一部分を含む。さらなる実施形態では、コントローラ244は、ダイナミックストローブコンポーネント150の少なくとも一部分を含む。さまざまな実施形態では、センスブロック250の1つ以上は、ダイナミックストローブコンポーネント150の少なくとも一部分を含む。
ダイナミックストローブコンポーネント150は、1つの実施形態では、ストローブ信号を生成してデータ転送を促進する、ストローブ信号の起動に応答してフィードバック信号を受信、およびフィードバック信号に基づいてストローブ信号の継続時間を制御するように構成される。
状態マシン222は、1つの実施形態では、メモリ操作のチップレベルの制御を提供する。オンチップアドレスデコーダ224は、アドレスインターフェースを提供し、ホストまたはメモリコントローラによって使用されるアドレス間をデコーダ240A、240B、242A、242Bによって使用されるハードウェアアドレスに変換する。特定の実施形態では、状態マシン222は、ダイナミックストローブコンポーネント150の一実施形態を含む。ダイナミックストローブコンポーネント150は、いくつかの実施形態では、ノードの電圧を閾値電圧と比較する。ダイナミックストローブコンポーネント150は、ある特定の実施形態では、デバイスドライバにおけるソフトウェア、デバイスコントローラ244におけるハードウェア、および/またはダイコントローラ220および/または状態マシン222におけるハードウェアとして具現化される。
1つの実施形態では、ダイコントローラ220、ダイナミックストローブコンポーネント150、デコーダ回路224、状態マシン回路222、デコーダ回路242A、デコーダ回路242B、デコーダ回路240A、デコーダ回路240B、読み出し/書き込み回路230A、読み出し/書き込み回路230B、および/またはコントローラ244の1つまたは任意の組み合わせは、1つ以上の管理回路と称される可能性がある。
図2は、複数の記憶素子を含むNANDストリングの1つの実施形態を示す。図2に示されるNANDストリングは、いくつかの実施形態では、第1選択トランジスタ270と第2選択トランジスタ272との間で、直列に接続され、かつ位置する4つのトランジスタ260、262、264、266を含む。いくつかの実施形態では、トランジスタ260、262、264、266は、制御ゲートおよびフローティングゲートを含む。制御ゲート290、292、294、296は、1つの実施形態では、ワード線の一部分に接続され、またはこれを含む。さらなる実施形態では、トランジスタ260、262、264、266は、メモリセルとも称される記憶素子または記憶セルなどである。いくつかの実施形態では、記憶素子は複数のトランジスタ260、262、264、266を含むことができる。
第1選択トランジスタ270は、いくつかの実施形態では、ドレイン選択ゲートSGDを介したビット線280へのNANDストリング接続をゲート制御/接続する。第2選択トランジスタ272は、ある特定の実施形態では、ソース選択ゲートSGSを介したソース線282へのNANDストリング接続をゲート制御/接続する。第1選択トランジスタ270は、さらなる実施形態では、対応する選択ゲート286に電圧を印加することによって制御される。第2選択トランジスタ272は、いくつかの実施形態では、対応する選択ゲート288に電圧を印加することによって制御される。
図2に示されるように、ソース線282は、1つの実施形態では、NANDストリングにおけるそれぞれのトランジスタ/記憶セル260、262、264、266のソースに接続される。NANDストリングは、いくつかの実施形態では、プログラムされている幾つかの記憶素子260、262、264、266、および、プログラムされていない幾つかの記憶素子260、262、264、266を含むことができる。より詳細に後述されるように、ダイナミックストローブコンポーネント150は、記憶素子260、262、264、266に対してデータを検知するためのストローブ信号の継続時間を制御する(例えば、読み出し電圧、読み出し電流、および/または別の読み出しレベル)。ストローブ信号の継続時間は、記憶素子260、262、264、266に対するデータの検知に使用されるノードにおける電圧に基づいて制御されてよい。
図3は、複数のNANDストリング320、340、360、380を示す回路図である。NAND構造を使用したフラッシュメモリシステムのアーキテクチャは、幾つかのNANDストリング320、340、360、380を含むことができる。例えば、図3は、複数のNANDストリング320、340、360、380を含むメモリアレイ200におけるNANDストリング320、340、360、380を示す。図示した実施形態において、それぞれのNANDストリング320、340、360、380は、ドレイン選択トランジスタ322、342、362、382、ソース選択トランジスタ327、347、367、387、および、記憶素子323〜326、343〜346、363〜366、383〜386を含む。NANDストリング320、340、360、380ごとに4つの記憶素子323〜326、343〜346、363〜366、383〜386が簡略化のために示されるが、いくつかのNANDストリング320、340、360、380は、任意の数の記憶素子、例えば、32、または64などの同様の記憶素子を含むことができる。
NANDストリング320、340、360、380は、1つの実施形態では、ソース選択トランジスタ327、347、367、387によってソース線319に接続される。選択線SGSは、ソース側選択トランジスタを制御するために使用可能である。さまざまなNANDストリング320、340、360、380は、1つの実施形態では、ドレイン選択トランジスタ322、342、362、382によってビット線321、341、361、381に接続される。ドレイン選択トランジスタ322、342、362、382は、ドレイン選択線SGDによって制御されてよい。いくつかの実施形態では、選択線は、必ずしもNANDストリング320、340、360、380の間で共通である必要はなく、すなわち、NANDストリング320、340、360、380に対して異なる選択線を提供することができる。
上述したように、それぞれのワード線WL0〜WLnは、1つ以上の記憶素子323〜383、324〜384、325〜385、326〜386を含む。図示する実施形態では、それぞれのビット線321、341、361、381、および対応するNANDストリング320、340、360、380は、メモリアレイ200、記憶ブロック、または消去ブロックなどのカラムを含む。ワード線WL0〜WLnは、いくつかの実施形態では、メモリアレイ200、記憶ブロック、または消去ブロックなどの行を含む。それぞれのワード線WL0〜WLnは、いくつかの実施形態では、それぞれの記憶素子323〜383、324〜384、325〜385、326〜386の制御ゲートを1列に接続する。代替的には、制御ゲートは、ワード線WL0〜WLn自体によって提供することができる。いくつかの実施形態では、ワード線WL0〜WLnは、何十、何百、何千、または何百といった記憶素子323〜383、324〜384、325〜385、326〜386を含むことができる。
1つの実施形態では、それぞれの記憶素子323〜326、343〜346、363〜366、383〜386はデータを記憶するように構成される。例えば、1ビットのデジタルデータを記憶するときに、それぞれの記憶素子323〜326、343〜346、363〜366、383〜386の可能な閾値電圧(「VTH」)の範囲は、「1」および「0」で割り当てられる論理データである2つの範囲に分割されてよい。NANDタイプのフラッシュメモリの1つの例では、VTHは、記憶素子323〜326、343〜346、363〜366、383〜386が消去された後に負になってよく、論理「1」と定義されてよい。1つの実施形態では、プログラム操作後のVTHは、正であり、かつ論理「0」と定義される。
VTHが負であり、かつ読み出しが試みられるときに、いくつかの実施形態では、記憶素子323〜326、343〜346、363〜366、383〜386がオンし、論理「1」が記憶されていることを示す。VTHが正であり、かつ読み出し操作が試みられるときに、さらなる実施形態では、記憶素子はオンせず、これは論理「0」が記憶されることを示す。それぞれの記憶素子323〜383、324〜384、325〜385、326〜386は、複数のレベルの情報、例えば、複数ビットのデジタルデータを記憶することもできる。そのような実施形態では、VTH値の範囲は、データのレベルの数に分割される。例えば、4つのレベルの情報がそれぞれの記憶素子323〜326、343〜346、363〜366、383〜386に記憶可能である場合、データ値「11」、「10」、「01」、および「00」に割り当てられる4つのVTH範囲が存在する。
NANDタイプのメモリの1つの例では、消去操作後のVTHは、負であってよく、かつ「11」と定義されてよい。正のVTH値は、「10」、「01」、および「00」の状態に使用されてよい。1つの実施形態では、記憶素子323〜326、343〜346、363〜366、383〜386にプログラムされたデータと、記憶素子323〜326、343〜346、363〜366、383〜386の閾値電圧範囲との間の特有の関係は、記憶素子323〜326、343〜346、363〜366、383〜386に対して採用されたデータ符号化スキームに左右される。
いくつかの実施形態では、記憶素子323〜326、343〜346、363〜366、383〜386におけるデータを検知するために使用されるストローブ信号の継続時間は、長すぎる検知時間、電力消費の増加、および/または検知精度の低下が生じた場合に必要な継続時間より長くすることができる。そのような実施形態では、ダイナミックストローブコンポーネント150は、ストローブ信号の起動から生じるフィードバックに基づいて記憶素子323〜326、343〜346、363〜366、383〜386に対するデータを検知するために使用されるストローブ信号の継続時間を制御することができる。
図4は、3Dの垂直NANDフラッシュメモリ構造429またはストリング429の断面視の1つの実施形態を示す。1つの実施形態では、垂直カラム432は、丸められ、かつ、4つの相を含むが、他の実施形態では、4つより多い又は少ない層が含まれてよく、他の形状を用いるとができる(例えば、「I」字形の代わりに「U」字形など)。1つの実施形態では、垂直カラム432は、SiO2などの誘電体から作られる内側コア層470を含む。他の材料も使用可能である。内側コア470を取り囲んでいるのはポリシリコンチャネル471である。ポリシリコン以外の材料も使用可能である。ビット線に接続するのはチャネル471であることを留意されたい。チャネル471を取り囲んでいるのはトンネリング誘電体472である。1つの実施形態では、トンネリング誘電体472はONO構造を有する。トンネリング誘電体472を取り囲んでいるのは、(例えば)窒化ケイ素といった、共有される電荷トラップ層473である。他の材料および構造も使用可能である。本明細書に説明される技術は、いずれの特定の材料または構造にも限定されない。
図4は、誘電体層DLL49、DLL50、DLL51、DLL52、およびDLL53、ならびに、ワード線層WLL43、WLL44、WLL45、WLL46、およびWLL47を示す。各々のワード線層は、酸化アルミニウム層477に取り囲まれるワード線領域476を含み、この酸化アルミニウム層477はブロッキング酸化(SiO2)層478に取り囲まれる。ワード線層と垂直カラムとの物理的相互作用によって、メモリセルが形成される。よって、メモリセルは、1つの実施形態では、チャネル471、トンネリング誘電体472、(例えば、他のメモリセルと共有される)電荷トラップ層473、ブロッキング酸化層478、酸化アルミニウム層477、およびワード線領域476を含む。いくつかの実施形態では、ブロッキング酸化層478および酸化アルミニウム層477は、絶縁性を有する材料の単一層によって、または絶縁性を有する異なる材料の2つ以上の層によって置き換えられてよい。さらに、使用される材料は、二酸化ケイ素(SiO2)または酸化アルミニウムに限定されない。例えば、ワード線層WLL47および垂直カラム432の一部分はメモリセルMC1を含む。ワード線層WLL46および垂直カラム432の一部分はメモリセルMC2を含む。ワード線層WLL45および垂直カラム432の一部分はメモリセルMC3を含む。ワード線層WLL44および垂直カラム432の一部分はメモリセルMC4を含む。ワード線層WLL43および垂直カラム432の一部分はメモリセルMC5を含む。他のアーキテクチャにおいて、メモリセルは異なる構造を有することができるが、メモリセルは依然記憶ユニットである。
メモリセルがプログラムされるときに、メモリセルに関連付けられる電荷トラップ層473の一部分に電子が蓄積される。これらの電子は、ワード線領域476に対する適切な電圧に応答して、トンネリング誘電体472を通してチャネル471から電荷トラップ層473に引き込まれる。メモリセルの閾値電圧(Vth)は、蓄積された電荷の量に比例して増加する。1つの実施形態では、電荷トラップ層内への電子のファウラーノルドハイムトンネリング(Fowler−Nordheim tunneling)によるプログラミングが実現される。消去操作中、電子はチャネルに戻る、または正孔が電荷トラップ層に注入され、電子と再結合する。1つの実施形態では、ゲート誘起ドレインリーク(GIDL)などの物理機構を介して電荷トラップ層への正孔注入を使用して、消去が実現される。
異なるビット線上の異なるメモリ構造429(例えば、異なるNANDストリング429)の同じ場所または位置における記憶セルは、ある特定の実施形態では、同じワード線上にあってよい。それぞれのワード線は、1セル当たり1ビットのデータが記憶される(SLC)ときなどの1ページのデータ、1セル当たり2ビットのデータが記憶される(MLC)ときなどの2ページのデータ、1セル当たり3ビットのデータが記憶される(TLC)ときなどの3ページのデータ、1セル当たり4ビットのデータが記憶される(QLC)ときなどの4ページのデータ、または別のページ数のデータを記憶することができる。
図示する実施形態では、垂直の3DのNANDフラッシュメモリ構造429は、「I」型のメモリ構造429を含む。他の実施形態では、垂直の3DのNANDフラッシュメモリ構造429は、「U」型の構造を含むことができ、または別の垂直および/または積層アーキテクチャを有することができる。特定の実施形態では、ストリング429の4つのセット(例えば、48のワード線の4つのセット、または別の既定の数のワード線)は消去ブロックを形成することができるが、他の実施形態では、ストリング429の4つより少ないまたは多いセットが消去ブロックを形成することができる。理解できるように、任意の適した数の記憶セルは単一ストリング429の一部であってよい。1つの実施形態では、単一ストリング429は48の記憶セルを含む。
図5は、ダイナミックストローブタイミングを使用することができる回路構成500の1つの実施形態を示す概略的なブロック図である。ある特定の実施形態では、回路構成500は、不揮発性メモリデバイス120のセンス増幅器のための回路構成の一部であってよい。いくつかの実施形態では、回路構成500の一部分はセンス増幅器の一部であり、回路構成500の一部分はセンス増幅器の外側にある(例えば、隣にある、隣接している)。例えば、検出ブロックはセンス増幅器の隣にあってよいが、それぞれのセンス増幅器に対して検出ブロックを複製することなく、複数のセンス増幅器によってプレーン全体、またはダイ全体などに使用可能である。
回路構成500は、ノード504を特定の電圧(「VLOP」)にするノードドライバ502を含んでいる。ノードドライバ502は、ノード504を、初期電圧等の任意の適したVLOPにすることができる。例えば、1つの実施形態では、ノードドライバ502は、ノード504を、およそ「0.0」、「0.1」、「0.2」、「0.3」、「0.4」、「0.5」、または「0.6」ボルトのVLOPにすることができる。いくつかの実施形態では、ノードドライバ502は、ノード504を、0.0から0.5ボルトに及ぶVLOPにすることができる。「初期電圧」と言う用語は、方法または手順の開始時のデバイスまたはノードの電圧設定、方法または手順の開始時のデバイスまたはノードの第1の電圧設定、動作中のデバイスまたはノードの電圧変更、および/または方法または手順時のデバイスまたはノードの第1の電圧設定を意味することができる。例えば、1つの実施形態では、ノード504を初期電圧にすることは、ノード504の電圧をおよそ0.0ボルトからおよそ0.3ボルトの初期電圧まで変更することを含むことができる。別の例として、ノード504を初期電圧にすることは、ノード504の電圧を、任意の前の電圧からおよそ0.4ボルトに設定することを含むことができる。初期電圧のノード504によって、回路構成500はストローブを有効にすることができる。VLOPは任意の適した目的に使用されてよい。例えば、VLOPは、(本明細書に説明されるように)ソースバイアスセンシングに使用可能である。別の例として、VLOPはソースバイアスセンシングが使用されないときにVSSに設定されてよい。さらなる例として、VLOPは、SENのVt追跡などのためにdc電圧(例えば、およそ0.2ボルト)にバイアスされてもよい。
図示のように、ノード504は、センス(「SEN」)トランジスタ506のソース/ドレイン、およびローカルバス(「LBUS」)トランジスタ508のソース/ドレインに共通である。そのため、VLOPは、SENトランジスタ506のソース/ドレイン、およびLBUSトランジスタ508のソース/ドレインに共通である。
回路構成500の動作中、センスバス(「SBUS」)をプリチャージするために、LBUSプリチャージ(「LPC」)トランジスタ510は第1のLPCゲート信号によってアクティブにされることが可能であり、かつLBUSスイッチ(「LSW」)トランジスタ512は第1のLSWゲート信号によってアクティブにされることが可能である。LBUSをプリチャージするために、LPCトランジスタ510は第2のLPCゲート信号によってアクティブにされることが可能であり、かつ、LSWトランジスタ512は第2のLSWゲート信号によってアクティブにされることが可能である。LPCトランジスタ510およびLSWトランジスタ512を適正にアクティブにすると、LBUS信号は、1つ以上のデータラッチ514によって記憶するために1つ以上のデータラッチ514に供給される。さらに、ストローブ(「STB」)有効トランジスタ516は、ストローブドライバ518によって生じさせたSTBゲート信号(例えば、ストローブ信号)によってアクティブにされる。STBゲート信号は、不揮発性メモリデバイス120のメモリセルの読み出しを促進することができる。STB有効トランジスタ516は、ストローブのために回路構成500を有効にすることを促進する任意のタイプのトランジスタであってよい。例えば、STB有効トランジスタ516は、バイポーラ接合トランジスタ、電界効果トランジスタ、接合電界効果トランジスタ、金属酸化物電界効果トランジスタ、または別のタイプのトランジスタであってよい。
ストローブドライバ518は、STBゲート信号の継続時間を制御して、不揮発性メモリデバイス120においてデータを検知するために回路構成500をアクティブにするストローブが生じる継続時間を判断する。いくつかの実施形態では、ストローブドライバ518は、ストローブドライバ518がSTBゲート信号の開始および/または終了時を判断することを容易にするために、ストローブドライバ518にフィードバックを提供する制御信号を受信することができる。
回路構成500の動作は、図6と共に後述する。図6は、ダイナミックストローブタイミングを使用することができる回路構成500の信号タイミング600の1つの実施形態を示すタイミング図である。具体的には、回路構成500の動作中、ノードドライバ502は、第1時間602に、ノード504をVLOP(例えば、0.3ボルトなどの初期電圧)にする。第2時間604に、第1のLPC電圧がLPCトランジスタ510のゲートに供給され、第1のLSW電圧はLSWトランジスタ512のゲートに供給され、SBUSのプリチャージを促進する。第1のLPC電圧は、センス増幅器供給電圧(「VDDSA」)など、SBUSのプリチャージを促進する任意の適した電圧とすることができる。また、第1のLSW電圧は、供給電圧(「VDD」)など、SBUSのプリチャージを促進する任意の適した電圧とすることができる。
第3時間606に、第2のLPC電圧がLPCトランジスタ510のゲートに供給され、第2のLSW電圧がLSWトランジスタ512のゲートに供給され、LBUSのプリチャージを促進する。第2のLPC電圧は、VDDSAを上回る電圧のような、LBUSのプリチャージを促進する任意の適した電圧であってよい。さらに、第2のLSW電圧は、VDDを上回る電圧のような、LBUSのプリチャージを促進する任意の適した電圧であってよい。いくつかの実施形態では、SBUSおよびLBUSは同時(例えば、第2時間604および/または第3時間606)にプリチャージされる。他の実施形態では、SBUSおよびLBUSは異なる時間にプリチャージされてよい。
第4時間608に、第3のLPC電圧がLPCトランジスタ510のゲートに供給され、第3のLSW電圧がLSWトランジスタ512のゲートに供給され、プリチャージを完了する。第3のLPC電圧および第3のLSW電圧はそれぞれ、プリチャージを終了する任意の適した電圧であってよい。1つの実施形態では、第3のLPC電圧および第3のLSW電圧はそれぞれソース供給電圧(「VSS」)であってよい。
第5時間610に、第2のLSW電圧がLSWトランジスタ512のゲートに供給され、かつストローブ電圧がSTB有効トランジスタ516のゲートに供給されるのに応答して、ストローブが開始する。ストローブ電圧は、ストローブを開始する任意の適した電圧であってよい。ストローブ電圧がSTBトランジスタ516のゲートに供給されるのに応答して、VLOPを変える過渡電圧612が、ノード504で生じる。
SENトランジスタ506およびLBUSトランジスタ508の放電に応答して、過渡電圧612がノード504で生じる。過渡電圧612は、第5時間610に始まり、ピーク電圧まで上昇し、その後、第1時間602に設定された初期電圧までVLOPを戻すように低下する。特定の実施形態では、過渡電圧612は、トラフ電圧まで低下後、第1時間602に設定された初期電圧までVLOPを戻すように上昇する場合がある。
第6時間614に、第2のLSW電圧をLSWトランジスタ512に供給せず、かつ、ストローブ電圧をSTB有効トランジスタ516のゲートに供給しないことに応答して、ストローブは終了する。第5時間610と第6時間614の間のストローブの継続時間は、フィードバック信号、およびストローブドライバ518の固定設定など、さまざまなトリガに基づいて変化する場合がある。いくつかの実施形態では、過渡電圧612は、ストローブタイミングをダイナミックに判断するために、STB有効トランジスタ516のゲートにストローブ電圧が供給されている継続時間を判断するために使用されてよい。
図7は、ダイナミックストローブコンポーネント150の1つの実施形態を示す。ダイナミックストローブコンポーネント150は、図1A、図1B、図2、および/または図3に関連して述べたダイナミックストローブコンポーネント150と実質的に同様であってよい。一般に、上述したように、ダイナミックストローブコンポーネント150は、データ転送を促進するためにストローブ信号を生成し、ストローブ信号の起動に応答してフィードバック信号を受信し、フィードバック信号に基づいてストローブ信号の継続時間を制御する。図示した実施形態において、ダイナミックストローブコンポーネント150は、ストローブ生成モジュール702、フィードバックモニタモジュール704、継続時間制御モジュール706を含む。
さまざまな実施形態において、ストローブ生成モジュール702は、データ転送を促進する(例えば、データを読み出す、書き込む、および/または検証する)ためにストローブ信号を生成する。本明細書において使用されるように、「ストローブ信号」は、データの妥当性検査を行うために使用される任意の信号または他の信号、および/またはイベントが生じる際のタイミングウィンドウを提供する任意の信号を参照することができる。特定の実施形態では、ストローブ生成モジュール702は、データ読み出しプロセス、データ書き込みプロセス、および/またはデータ検証プロセス中にデータを検知するためにストローブ信号を生成する。いくつかの実施形態では、ストローブ生成モジュール702は、デフォルトの継続時間に基づいて所定の継続時間でストローブ信号を生成する。ストローブ信号を生成するとは、ストローブ有効信号を出力すること、電圧を出力すること、およびパルスを出力することなどを含むことができる。
特定の実施形態では、ストローブ生成モジュール702は、デフォルトの継続時間に基づいてストローブ信号を停止する(例えば、終了する(terminate))。さまざまな実施形態では、デフォルトの継続時間は、特定の回路をストローブする最大継続時間であってよい。例えば、最大継続時間はおよそ350nsまたは700nsであってよい。1つの実施形態では、ストローブ生成モジュール702は、STB有効トランジスタ516などのSTBトランジスタのゲートに供給されるストローブ信号を生成することができる。
特定の実施形態では、フィードバックモニタモジュール704は、ストローブ信号の起動に応答してフィードバック信号を受信する。フィードバック信号は、ストローブ信号を終了するべきときを指示するのに有用である任意の適した信号であってよい。ストローブ信号の起動は、ストローブ信号の開始、および所定の電圧を通り越すストローブ信号の電圧などを参照することができる。いくつかの実施形態では、フィードバック信号は、複数のトランジスタに共通のノードの電圧の変更に応答して生成される。特定の実施形態では、複数のトランジスタに共通のノードは、SENトランジスタ506およびLBUSトランジスタ508に共通であるノード504であってよい。さまざまな実施形態では、複数のトランジスタに共通のノードの電圧の変更は、ストローブ信号の起動から生じる。1つの実施形態では、ノードの電圧の変更は、ノードの電圧を、初期電圧から過渡電圧に変更する。そのような実施形態では、過渡電圧は、ストローブ信号の起動時にスパイク的に発生(例えば、ピーク電圧まで上昇、トラフ電圧から低下)し、かつスパイクから初期電圧の方へ移行する。特定の実施形態では、フィードバック信号は、過渡電圧によって生成され、および/または過渡電圧であってよい。
ノード504が複数の目的に使用可能であることは留意されるべきである。具体的には、ノード504は、SENトランジスタ506およびLBUSトランジスタ508のソース/ドレインに共通の電圧を提供するために使用されてよい。さらに、ノード504は、初期電圧から過渡電圧へのノードの電圧の変更によってフィードバック信号を提供するために使用されてよい。1つの実施形態では、ノードの電圧の変更は、ノード504における過渡電圧612として図6に示されている。
いくつかの実施形態では、継続時間制御モジュール706は、フィードバック信号に基づいてストローブ信号の継続時間を制御する。ストローブ信号の継続時間は、ストローブ信号が続く時間の長さであってよい。ストローブ信号の継続時間を制御することは、ストローブ信号を起動すること、ストローブ信号を終了すること、および/またはストローブ信号の時間の長さを判断することを意味することができる。1つの実施形態では、継続時間制御モジュール706は、フィードバック信号がバイアス信号に基づいた閾値を満たしていることに応答して、ストローブ信号の継続時間を制御する。閾値を満たすことは、閾値を上回っている、閾値を下回っている、閾値に達している、および/または閾値を通り越していることを意味することができる。例えば、1つの実施形態では、継続時間制御モジュール706は、ノード504のVLOPが閾値(例えば、閾値電圧、バイアス電圧)を上回っていることに応答して、ストローブ信号が継続するように制御する。別の例として、1つの実施形態では、継続時間制御モジュール706は、ノード504のVLOPが閾値を下回っていることに応答して、ストローブ信号を停止する(例えば、終了する(terminate))ように制御する。バイアス信号は、ストローブ信号が始まるおよび/または終了するべきときを判断するために有用である任意の適した信号であってよい。さまざまな実施形態では、バイアス信号は、ストローブ信号が終了するべきであるかどうかを判断するためにVLOPと比較するための閾値として使用されてよい。いくつかの実施形態では、ストローブ信号の継続時間を制御することによって、ストローブ信号はデフォルトの継続時間と比較して低減させることができる。例えば、ストローブ信号は、およそ、10%、20%、50%、70%、80%、または90%低減可能である。ストローブ信号の長さを低減することによって、センス増幅器回路の検知精度を高めることができる。
図8に、ダイナミックストローブコンポーネント150のさらなる実施形態が示されている。ダイナミックストローブコンポーネント150は、図1A、図1B、図2、図3、および/または図7に関連して上述したダイナミックストローブコンポーネント150と実質的に同様であってよい。図示する実施形態では、ダイナミックストローブコンポーネント150は、ストローブ生成モジュール702、フィードバックモニタモジュール704、および継続時間制御モジュール706を含み、さらに、電圧モニタモジュール802、閾値比較モジュール804、ストローブ終了モジュール806を含む。
1つの実施形態では、電圧モニタモジュール802は、フィードバック信号の大きさを監視し、かつ、フィードバック信号が閾値を越える大きさに応答してストローブ信号の生成を停止する電圧モニタを含むことができる。閾値は、フィードバック信号が閾値に達するときにストローブ信号の生成を停止する時間を特定するように予め設定された電圧であってよい。例えば、1つの実施形態では、電圧モニタモジュール802は、VLOPの大きさを監視することができ、かつ、VLOPが閾値(例えば、バイアス電圧)を越える大きさに応答して、ストローブ信号の生成を停止するように継続時間制御モジュール706に指示することができる。本明細書で使用されているように、「閾値を越える」とは、閾値を通り越すことであり、閾値の下方から閾値の上方まで変化すること、閾値の上方から閾値の下方まで変化すること等を意味する。
特定の実施形態では、閾値比較モジュール804は、フィードバック信号をバイアス信号と比較する比較器を含む。いくつかの実施形態では、比較器は、ストローブ信号の継続時間を制御するための制御信号を出力することができる。例えば、1つの実施形態では、比較器は、フィードバック信号がバイアス信号に基づいた閾値を満たすことに応答してストローブ信号が継続するように指示するために制御信号を出力することができる。別の例として、比較器は、フィードバック信号がバイアス信号に基づいた閾値を満たさないことに応答して、ストローブ信号が終了するように指示するために制御信号を出力することができる。いくつかの実施形態では、閾値は、フィードバック信号が閾値に等しい場合に満足されてよい。対照的に、さまざまな実施形態では、閾値は、フィードバック信号が閾値を上回るまたは下回る場合に満たされない場合がある。特定の実施形態では、ストローブ終了モジュール806は、ストローブ信号を終了するようにストローブドライバ(例えば、ストローブドライバ518)を指示することができる。例えば、ストローブ終了モジュール806は、ストローブ信号を終了するようにストローブドライバに指示するために使用される制御信号を出力することができる。
図9は、ダイナミックストローブタイミングを使用する回路構成900の1つの実施形態を示す概略的なブロック図である。回路構成900は、比較器902を追加した、図5の回路構成500と実質的に同様であってよい。いくつかの実施形態では、回路構成900の一部分はセンス増幅器の一部であり、回路構成900の一部分はセンス増幅器の外側にある(例えば、隣にある、隣接している)。例えば、1つの実施形態では、比較器902はセンス増幅器の一部であるが、別の実施形態では、比較器902はセンス増幅器の外側に位置付けられる。特定の実施形態では、複数のセンス増幅器に対して(回路構成を不必要に複製しないように、プレーン全体、ダイ全体、またはチップ全体に対して)比較器902が1つだけあってよい。比較器902は、2つの入力を比較し、かつ2つの入力の間の比較に基づいて出力をもたらすことができる任意の適したタイプのデバイスであってよい。例えば、比較器902は、増幅器、演算増幅器、論理ゲート、論理ゲートの組み合わせ、および回路などであってよい。比較器902は、第1入力904および第2入力906、ならびに出力908を含む。出力908は、第1入力904と第2入力906との比較の結果として生成される。
1つの実施形態では、第1入力904はノード504に結合され、第2入力906はバイアス電圧に結び付けられる。バイアス電圧は任意の適した電圧であってよい。例えば、バイアス電圧は、およそ「0.0」、「0.1」、「0.2」、「0.3」、または「0.4」ボルトであってよい。比較器902は、ノード504のVLOPがバイアス電圧を上回っているかどうかを判断する。さらに、比較器902は出力908を介して制御信号を出力する。制御信号は、ストローブドライバ518に結合されて、ストローブドライバ518が、ストローブ信号を印加し続けるように、またはストローブ信号の印加を停止する(例えば、ストローブ信号を終了する)ように指示することを促進する。
例えば、1つの実施形態では、VLOPがバイアス電圧を上回る場合、制御信号は、ストローブドライバ518にストローブ信号を供給し続けるように指示することができる。対照的に、そのような実施形態では、VLOPがバイアス電圧を下回る場合、制御信号は、ストローブドライバ518にストローブ信号の供給を終了するように指示することができる。さまざまな実施形態では、制御信号は、ロジックロー(logic low)、ロジックハイ(logic high)、「1」、「0」、アナログ信号、および/またはデジタル信号であってよい。
別の実施形態では、VLOPがバイアス電圧を下回る場合、制御信号は、ストローブドライバ518にストローブ信号を供給し続けるように指示することができる。さらに、このような実施形態では、VLOPがバイアス電圧を上回る場合、制御信号は、ストローブドライバ518にストローブ信号の供給を終了するように指示することができる。
回路構成900の動作は、図10と共に後述する。図10は、ダイナミックストローブタイミングを使用する回路構成900の信号タイミング1000の1つの実施形態を示すタイミング図である。具体的には、回路構成900の動作中、第1時間1002に、ノードドライバ502はノード504をVLOP(例えば、0.3ボルトなどの初期電圧)にする。第2時間1004に、第1のLPC電圧がLPCトランジスタ510のゲートに供給され、第1のLSW電圧がLSWトランジスタ512のゲートに供給され、SBUSのプリチャージを促進する。第1のLPC電圧は、VDDSAなど、任意の適した電圧とすることができる。また、第1のLSW電圧は、VDDなど、任意の適した電圧とすることができる。
第3時間1006に、第2のLPC電圧がLPCトランジスタ510のゲートに供給され、第2のLSW電圧がLSWトランジスタ512のゲートに供給され、LBUSのプリチャージを促進する。第2のLPC電圧は、VDDSAを上回る電圧のような、任意の適した電圧であってよい。さらに、第2のLSW電圧は、VDDを上回る電圧のような、任意の適した電圧であってよい。
第4時間1008に、第3のLPC電圧がLPCトランジスタ510のゲートに供給され、第3のLSW電圧がLSWトランジスタ512のゲートに供給され、プリチャージを完了する。第3のLPC電圧および第3のLSW電圧はそれぞれ、任意の適した電圧であってよい。1つの実施形態では、第3のLPC電圧および第3のLSW電圧はそれぞれVSSであってよい。
第5時間1010に、第2のLSW電圧がLSWトランジスタ512のゲートに供給され、かつストローブ電圧がSTB有効トランジスタ516のゲートに供給されるのに応答して、ストローブが開始する。ストローブ電圧は任意の適した電圧であってよい。ストローブ電圧がSTBトランジスタ516のゲートに供給されるのに応答して、VLOPを変える過渡電圧1012が、ノード504で生じる。
第6時間1014に、VLOPはバイアス電圧を上回って上昇することで、比較器902の出力908の制御信号は、ロジックハイからロジックローに移行する。
第7時間1016に、VLOPはバイアス電圧を下回って降下することで、比較器902の出力908の制御信号は、ロジックローからロジックハイに移行する。この、ロジックローからロジックハイへの移行は、ストローブを終了するようにストローブドライバ518に信号で伝える。そのため、第7時間1016に、第2のLSW電圧をLSWトランジスタ512のゲートに供給せず、かつ、ストローブ電圧をSTB有効トランジスタ516のゲートに供給しないことに応答して、ストローブは終了する。第8時間1018に、ノード504が過渡電圧ではないので、VLOPは第1時間1002で供給された初期電圧に戻る。
図11は、ダイナミックストローブタイミングの方法1100の1つの実施形態を示す。方法1100はストローブ信号が提供される度に行われてよい。
方法1100が開始すると、フィードバックモニタモジュール704は、ストローブ信号の印加に応答してノードの電圧変更を受信する(1102)。ノードの電圧変更は、ノードの電圧を初期電圧から過渡電圧に変更する。フィードバックモニタモジュール704は、過渡電圧をバイアス電圧と比較する(1104)。継続時間制御モジュール706が、過渡電圧とバイアス電圧の比較に基づいてストローブ信号の継続時間を制御し(1106)、方法1100を終了する。
いくつかの実施形態では、ストローブ生成モジュール702は、不揮発性記憶セルのセットを読み出すために、不揮発性記憶セルのセットにストローブ信号を印加する。さまざまな実施形態では、継続時間制御モジュール706は、過渡電圧とバイアス電圧の比較に基づいてストローブ信号の継続時間を制御する制御信号を出力する。特定の実施形態では、継続時間制御モジュール706は、過渡電圧がバイアス電圧を上回っていることに応答してストローブ信号が継続するように指示する。いくつかの実施形態では、ストローブ終了モジュール806は、過渡電圧がバイアス電圧を下回っていることに応答してストローブ信号が終了するように指示する。
図12は、ダイナミックストローブタイミングの方法1200のさらなる実施形態を示す概略的なフローチャート図である。方法1200が開始すると、ストローブ生成モジュール702は、不揮発性記憶セルのセットを読み出すために不揮発性記憶セルのセットにストローブ信号を印加する(1202)。また、電圧モニタモジュール802は、ストローブ信号の印加に応答してノードの電圧変更を受信する(1204)。ノードの電圧変更は、ノードの電圧変更を初期電圧から過渡電圧に変更する。閾値比較モジュール804は過渡電圧をバイアス電圧と比較する(1206)。継続時間制御モジュール706は、過渡電圧とバイアス電圧との比較に基づいて、ストローブ信号の継続時間を制御する制御信号を出力する(1208)。ストローブ終了モジュール806は、制御信号を使用して、過渡電圧がバイアス電圧を超えるのに応答してストローブ信号が終了するように指示し(1210)、方法1200は終了する。
ストローブ信号の起動に応答してノードの電圧変更を検出するための手段は、さまざまな実施形態では、ダイナミックストローブコンポーネント150、フィードバックモニタモジュール704、電圧モニタモジュール802、状態マシン222、センスブロック250、回路構成500、比較器、トランジスタ、コントローラ、不揮発性メモリ媒体コントローラ126、ホストコンピューティングデバイス110、デバイスドライバ、ホストコンピューティングデバイス110上で実行するコントローラ(例えば、デバイスドライバなど)、プロセッサ111、FPGA、ASIC、他の論理ハードウェア、および/またはコンピュータ可読記憶媒体に記憶される他の実行可能コードのうちの1つ以上を含むことができる。他の実施形態は、ストローブ信号の起動に応答してノードの電圧変更を検出するための同様のまたは等価の手段を含むことができる。ある特定の実施形態では、ノードの電圧変更は、ノードの電圧を初期電圧から過渡電圧に変更する。
過渡電圧と閾値電圧との間の関係を判断するための手段は、さまざまな実施形態では、ダイナミックストローブコンポーネント150、フィードバックモニタモジュール704、継続時間制御モジュール706、状態マシン222、センスブロック250、回路構成500、比較器、トランジスタ、コントローラ、不揮発性メモリ媒体コントローラ126、電圧モニタモジュール802、閾値比較モジュール804、ホストコンピューティングデバイス110、デバイスドライバ、ホストコンピューティングデバイス110上で実行するコントローラ(例えば、デバイスドライバなど)、プロセッサ111、FPGA、ASIC、他の論理ハードウェア、および/またはコンピュータ可読記憶媒体に記憶される他の実行可能コードを含むことができる。他の実施形態は、過渡電圧と閾値電圧との間の関係を判断するための同様のまたは等価の手段を含むことができる。
過渡電圧と閾値電圧との間の関係に基づいてストローブ信号を終了するための手段は、さまざまな実施形態では、ダイナミックストローブコンポーネント150、継続時間制御モジュール706、ストローブ終了モジュール806、状態マシン222、センスブロック250、回路構成500、比較器、トランジスタ、コントローラ、不揮発性メモリ媒体コントローラ126、ホストコンピューティングデバイス110、デバイスドライバ、ホストコンピューティングデバイス110上で実行するコントローラ(例えば、デバイスドライバ)、プロセッサ111、FPGA、ASIC、他の論理ハードウェア、および/またはコンピュータ可読記憶媒体に記憶される他の実行可能コードを含むことができる。他の実施形態は、過渡電圧と閾値電圧との間の関係に基づいてストローブ信号を終了するための同様のまたは等価の手段を含むことができる。
過渡電圧と閾値電圧との間の関係に基づいてストローブ信号を終了するように構成される制御信号を出力するための手段は、さまざまな実施形態では、ダイナミックストローブコンポーネント150、継続時間制御モジュール706、ストローブ終了モジュール806、状態マシン222、センスブロック250、回路構成500、比較器、トランジスタ、コントローラ、不揮発性メモリ媒体コントローラ126、ホストコンピューティングデバイス110、デバイスドライバ、ホストコンピューティングデバイス110上で実行するコントローラ(例えば、デバイスドライバ)、プロセッサ111、FPGA、ASIC、他の論理ハードウェア、および/またはコンピュータ可読記憶媒体に記憶される他の実行可能コードを含むことができる。他の実施形態は、過渡電圧と閾値電圧との間の関係に基づいてストローブ信号を終了するように構成される制御信号を出力するための同様のまたは等価の手段を含むことができる。
本開示は、この趣旨または本質的な特性から逸脱することなく他の特有の形態で具現化されてよい。説明される実施形態は、あらゆる点で単なる例示であって制限するものではないと見なされるべきである。従って、本発明の範囲は、前述の説明によってではなく添付の特許請求の範囲によって指示される。特許請求の範囲と等価の意味および範囲内で生じる全ての変更は、この範囲内に包含されるものとする。
例示的な装置が以下の項目に記載される。
(項目1)
ストローブ信号を生成してデータ転送を促進し、ストローブ信号の起動に応答してフィードバック信号を受信し、フィードバック信号に基づいてストローブ信号の継続時間を制御する、コントローラを備えている装置。
(項目2)
前記コントローラは、さらに、電圧モニタを備えており、
電圧モニタは、フィードバック信号の大きさを監視するとともに、フィードバック信号が閾値を越える大きさに応答してストローブ信号の生成を停止する、項目1に記載の装置。
(項目3)
前記コントローラは、フィードバック信号がバイアス信号に基づいた閾値を満たしていることに応答して、ストローブ信号の継続時間を制御するように構成されている、項目1に記載の装置。
(項目4)
前記コントローラは、さらに、比較器を備えており、
比較器は、フィードバック信号とバイアス信号を比較するように構成されている、項目1に記載の装置。
(項目5)
比較器が、ストローブ信号の長さを制御するための制御信号を出力するように構成されている、項目4に記載の装置。
(項目6)
比較器が、フィードバック信号がバイアス信号に基づいた閾値を満たすことに応答して、ストローブ信号を継続するように指示するために制御信号を出力するように構成されている、項目4に記載の装置。
(項目7)
比較器が、フィードバック信号がバイアス信号に基づいた閾値を満たさないことに応答して、ストローブ信号を終了するように指示するために制御信号を出力するように構成されている、項目4に記載の装置。
(項目8)
前記コントローラは、さらに、ストローブドライバを備えており、
ストローブドライバは、制御信号を受信したことに応答してストローブ信号を終了するように構成されている、項目5に記載の装置。
(項目9)
フィードバック信号は、複数のトランジスタに共通したノードの電圧の変更に応答して生成される、項目1に記載の装置。
(項目10)
ノードの電圧の変更が、ストローブ信号の開始に起因する、項目9に記載の装置。
(項目11)
ノードの電圧の変更が、ノードの電圧を初期電圧から過渡電圧に変更する、項目9に記載の装置。
(項目12)
過渡電圧は、ストローブ信号を開始したときにスパイク的に発生し、スパイクから初期電圧に向けて移行する、項目11に記載の装置。
(項目13)
センス増幅器ノードを初期電圧にするノードドライバと、
初期電圧におけるノードによる不揮発性メモリセルのセットのメモリセルの読み出しを促進するためにストローブ信号を受信するストローブ有効トランジスタと、
ストローブ信号をストローブ有効トランジスタに提供するストローブドライバと、
ノードの電圧とバイアス電圧を比較する比較器であって、ノードの電圧が閾値電圧を超えることに応答して、ストローブ信号をストローブ有効トランジスタに提供することを終了させるために、ストローブドライバに制御信号を出力する比較器と、
を備えている装置。
(項目14)
ノードの電圧が、比較器への入力として使用されるとともに、不揮発性メモリセルのセットにおける他の目的に使用される、項目13に記載の装置。
(項目15)
ノードの電圧が、ストローブドライバがストローブ信号をストローブ有効トランジスタに提供することに応答して初期電圧から過渡電圧に移行する、項目13に記載の装置。
(項目16)
ストローブ信号の印加に応答してノードの電圧変更を受信する工程であって、ノードの電圧変更が、ノードの電圧を初期電圧から過渡電圧に変更する工程と、
過渡電圧とバイアス電圧を比較する工程と、
過渡電圧とバイアス電圧の比較に基づいてストローブ信号の長さを制御する工程と、
を備えている方法。
(項目17)
さらに、不揮発性記憶セルのセットを読み出すために不揮発性記憶セルのセットにストローブ信号を印加する工程を備えている、項目16に記載の方法。
(項目18)
さらに、過渡電圧とバイアス電圧の比較に基づいてストローブ信号の長さを制御する制御信号を出力する工程を備えている、項目16に記載の方法。
(項目19)
制御信号は、過渡電圧がバイアス電圧を上回っていることに応答して、ストローブ信号を継続するように指示する、項目18に記載の方法。
(項目20)
制御信号は、過渡電圧がバイアス電圧を下回っていることに応答して、ストローブ信号を終了するように指示する、項目18に記載の方法。
(項目21)
ストローブ信号の開始に応答してノードの電圧変更を検出するための手段であって、ノードの電圧変更が、ノードの電圧を初期電圧から過渡電圧に変更することである手段と、
過渡電圧と閾値電圧の間の関係を判定するための手段と、
過渡電圧と閾値電圧の間の関係に基づいてストローブ信号を終了させるための手段と、
を備えている装置。
(項目22)
さらに、過渡電圧と閾値電圧の間の関係に基づいてストローブ信号を終了する制御信号を出力するための手段を備えている、項目21に記載の装置。