本開示の態様は、メモリサブシステムにおいてメモリ動作を行う際に使用される先行読み出し閾値電圧および読み出し閾値電圧を対象とする。メモリサブシステムは、ストレージデバイス、メモリモジュール、またはストレージデバイスとメモリモジュールとのハイブリッドとすることができる。ストレージデバイスおよびメモリモジュールの例については、図1とともに以下で説明する。一般に、ホストシステムは、データを記憶する1つまたは複数のメモリデバイスを含むメモリサブシステムを利用することができる。ホストシステムは、メモリサブシステムに記憶されるデータを供給することができ、メモリサブシステムからのデータの取り出しを要求することができる。
読み出し閾値電圧または先行読み出し閾値電圧とは、メモリコンポーネントのメモリセルに記憶されているデータを、それぞれ読み出しまたは先行読み出しするために使用される電圧レベルを指し得る。読み出し動作、先行読み出し動作および書き込み動作は、メモリサブシステムの動作時に行われるメモリ動作の例である。読み出し動作は、1つまたは複数の読み出し閾値電圧を使用して1つまたは複数のメモリセルに記憶されているデータを読み出すことができる。書き込み動作は、メモリコンポーネントの1つまたは複数のメモリセルにデータを書き込むことができる。先行読み出し動作は、書き込み動作に関連付けることができる。書き込み動作が行われる前に、先行読み出し動作は1つまたは複数のメモリセルの内容を読み出し、その1つまたは複数のメモリセルの内容を、その1つまたは複数のメモリセルに書き込まれるデータと比較することができる。書き込まれるデータと異なる内容(たとえば論理「1」または論理「0」)を有するメモリセルは、メモリセルの内容が(たとえば論理「1」から論理「0」およびその逆に)変更されるように、書き込み動作時に書き込み可能である。書き込まれるデータと一致する内容を有するメモリセルは、書き込みされず、メモリの内容は変更されない(たとえば論理「1」または論理「0」に維持される)。書き込まれるデータと異なる内容を有するメモリセルのみに書き込むことにより、メモリコンポーネントのメモリセルに行われる書き込みサイクル数が少なくなり、それによってメモリコンポーネントとメモリサブシステムの耐久性が向上する。
従来のメモリサブシステムは、閾値電圧を記憶するためのレジスタの数が限られている場合がある。従来のメモリサブシステムのレジスタに記憶されている閾値電圧は、読み出し動作と先行読み出し動作の両方に使用可能である。場合によっては、閾値電圧は、読み出し動作を行うために最適化されることがあり、先行読み出し動作を行うためには最適化されない場合がある。読み出し動作のために最適化されている閾値電圧を使用して先行読み出し動作を行うと、先行読み出し動作に多くのフォールスポジティブを識別させることがあり、すなわち、メモリセルの実際の内容が書き込まれるデータと一致するにもかかわらず、先行読み出し動作が、書き込まれるデータと一致しない内容を有するメモリセルを識別することがある。したがって、書き込まれる必要がない多くのメモリセルが、書き込み動作時に実際に書き込まれ、それによってメモリセルの摩耗が増し、メモリコンポーネントとメモリサブシステムの有用寿命が短くなる。
本開示の態様は、先行読み出し動作と読み出し動作のために異なる1つまたは複数の閾値電圧を実装することによって、上記およびその他の欠陥に対処する。1つまたは複数の先行読み出し閾値電圧を先行読み出しを行うために最適化することができ、1つまたは複数の読み出し閾値電圧を読み出し動作を行うために最適化することができる。最適化された先行読み出し閾値電圧は、読み出し動作を行うために使用される読み出し閾値電圧のいずれとも異なり得る。上述のように、場合によっては、閾値電圧を記憶するレジスタの数が限られていることがある。最適化された先行読み出し閾値電圧は、特定の読み出し閾値電圧よりも頻繁に使用される可能性があり、特定のレジスタに記憶される有効な「デフォルト」閾値電圧となり得る。その特定のレジスタに記憶されている最適化された先行読み出し閾値電圧は、異なる読み出し閾値電圧を使用する読み出し動作によってメモリコンポーネントから読み出されたデータの誤りの訂正不成功の後など、特定の条件下でその特定の読み出し閾値電圧によって置き換え可能である。対応する読み出し閾値電圧を使用して読み出し動作が行われた後、その特定の読み出し閾値電圧はレジスタにおける最適化された先行読み出し閾値電圧に置き換え可能である。
実施形態によっては、メモリサブシステムが、メモリコンポーネントにデータを書き込むための書き込み動作を行う要求を受け取ることができる。メモリコンポーネントへのデータの書き込みの要求の受け取りに応答して、メモリサブシステムは、レジスタに記憶されている先行読み出し閾値電圧を使用してメモリコンポーネントにおけるデータを読み出すために先行読み出し動作を行うことができる。
実施形態によっては、メモリサブシステムは、メモリコンポーネントにおけるデータを読み出す要求を受け取る。この要求に応答して、メモリサブシステムは、初期読み出し閾値電圧を使用してメモリコンポーネントにおけるデータを読み出すために読み出し動作を行うことができる。メモリサブシステムは、初期読み出し閾値電圧を使用してメモリコンポーネントにおいて読み出されたデータが誤りの訂正不成功を伴っていると判定することがある。たとえば、メモリコンポーネントから読み出されたデータは、誤り検出および誤り訂正コード(ECC)を使用した訂正が可能ではない誤りを含んでいる場合がある。
初期読み出し閾値を使用してメモリコンポーネントにおいて読み出されたデータが誤りの訂正不成功を伴っているとの判定に応答して、メモリサブシステムは、レジスタに前に記憶された先行読み出し閾値電圧を置き換えるために、レジスタに後続の読み出し閾値電圧を記憶することができる。この後続の読み出し閾値電圧を使用してメモリコンポーネントにおけるデータを読み出すために、後続の読み出し動作を行うことができる。後続の読み出し動作によって読み出されたデータは、誤りがないかまたは訂正可能な誤りを有し得る。実施形態によっては、後続の読み出し閾値電圧を使用して後続の読み出し動作を行うことに応答して、メモリサブシステムは、レジスタに記憶されている後続の読み出し閾値電圧を先行読み出し閾値電圧に置き換えることができる。
本開示の利点には、メモリサブシステムのパフォーマンス向上が含まれるが、これには限定されない。読み出し動作のために最適化された閾値電圧を使用するのではなく、先行読み出し動作とともに使用するために最適化された先行読み出し閾値電圧を使用することで、メモリコンポーネントの摩耗が低減され、メモリサブシステムの有用寿命が延びる。また、本開示の態様は、先行読み出し動作と読み出し動作のために異なる閾値電圧を使用し、閾値電圧を記憶するための限られた数のレジスタを有するメモリサブシステムを実装するために使用可能である。
図1に、本開示の一部の実施形態によるメモリサブシステム110を含む例示のコンピューティングシステム100を示す。メモリサブシステム110は、1つまたは複数の揮発性メモリデバイス(たとえばメモリデバイス140)、1つまたは複数の不揮発性メモリデバイス(たとえばメモリデバイス130)、またはこれらの組合せなどの媒体を含み得る。
メモリサブシステム110は、ストレージデバイス、メモリモジュール、またはストレージデバイスとメモリモジュールとのハイブリッドとすることができる。ストレージデバイスの例には、ソリッドステートドライブ(SSD)、フラッシュドライブ、ユニバーサルシリアルバス(USB)フラッシュドライブ、エンベデッドマルチメディアコントローラ(eMMC)ドライブ、ユニバーサルフラッシュストレージ(UFS)ドライブ、セキュアデジタル(SD)カード、ハードディスクドライブ(HDD)が含まれる。メモリモジュールの例には、デュアルインラインメモリモジュール(DIMM)、スモールアウトラインDIMM(SO-DIMM)、および不揮発性デュアルインラインメモリモジュール(NVDIMM)が含まれる。
コンピューティングシステム100は、デスクトップコンピュータ、ラップトップコンピュータ、ネットワークサーバ、モバイルデバイス、輸送手段(たとえば航空機、ドローン、列車、自動車またはその他の輸送手段)、物のインターネット(IoT)対応デバイス、組み込み型コンピュータ(たとえば輸送手段、工業機器またはネットワーク化商用デバイスに組み込まれたコンピュータ)、またはメモリと処理デバイスとを含むコンピュータデバイスなどのコンピューティングデバイスとすることができる。
コンピューティングシステム100は、1つまたは複数のメモリサブシステム110に結合されたホストシステム120を含み得る。実施形態によっては、ホストシステム120は、異なる種類のメモリサブシステム110に結合されている。図1に、1つのメモリサブシステム110に結合されたホストシステム120の一例を示す。本明細書で使用される「~と結合される」または「~に結合される」とは、有線か無線かを問わず、電気的、光学的、磁気的接続などの接続を含む、間接通信接続、または(たとえば介在コンポーネントのない)直接通信接続とすることができる、コンポーネント間の接続を全般に指す。
ホストシステム120は、プロセッサチップセットと、プロセッサチップセットにより実行されるソフトウェアスタックとを含み得る。プロセッサチップセットは、1つまたは複数のコア、1つまたは複数のキャッシュ、メモリコントローラ(たとえばNVDIMMコントローラ)、およびストレージプロトコルコントローラ(たとえばPCIeコントローラ、SATAコントローラ)を含み得る。ホストシステム120は、たとえば、メモリサブシステム110にデータを書き込むために、およびメモリサブシステム110からデータを読み出すために、メモリサブシステム110を使用する。
ホストシステム120は、物理ホストインターフェースを介してメモリサブシステム110に結合可能である。物理ホストインターフェースの例には、シリアルアドバンストテクノロジーアタッチメント(SATA)インターフェース、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)インターフェース、ユニバーサルシリアルバス(USB)インターフェース、ファイバーチャネル、スモールコンピュータシステムインターフェース(SCSI)、シリアルアタッチトSCSI(SAS)、デュアルインラインメモリモジュール(DIMM)インターフェース(たとえば、ダブルデータレート(DDR)をサポートするDIMMソケットインターフェース)などが含まれるが、これらには限定されない。物理ホストインターフェースは、ホストシステム120とメモリサブシステム110との間でデータを送信するために使用可能である。ホストシステム120は、メモリサブシステム110がPCIeインターフェースによってホストシステム120に結合される場合にメモリコンポーネント(たとえばメモリデバイス130)にアクセスするために、NVMエクスプレス(NVMe)インターフェースをさらに利用することができる。物理ホストインターフェースは、メモリサブシステム110とホストシステム120との間で、制御信号、アドレス信号、データ信号およびその他の信号を受け渡しするためのインターフェースを提供することができる。
メモリデバイスは、異なる種類の不揮発性メモリデバイスおよび/または揮発性メモリデバイスの任意の組合せを含み得る。揮発性メモリデバイス(たとえばメモリデバイス140)は、ダイナミックランダムアクセスメモリ(DRAM)およびシンクロナスダイナミックランダムアクセスメモリ(SDRAM)などのランダムアクセスメモリ(RAM)とすることができるがこれらには限定されない。
不揮発性メモリデバイス(たとえばメモリデバイス130)のいくつかの例には、否定論理積(NAND)型フラッシュメモリ、および、3次元クロスポイント(「3Dクロスポイント」)メモリなどのインプレース書き込みメモリが含まれる。不揮発性メモリのクロスポイント配列は、積層可能な交差格子データアクセス配列とともにバルク抵抗の変化に基づいてビット記憶を行うことができる。さらに、多くのフラッシュベースのメモリとは異なり、クロスポイント不揮発性メモリは、不揮発性メモリセルを事前に消去せずに不揮発性メモリセルをプログラムすることができる、インプレース書き込み動作を行うことができる。
メモリデバイス130のそれぞれが、メモリセルの1つまたは複数の配列を含むことができる。メモリセルの1種、たとえばシングルレベルセル(SLC)は、1つのセルに1ビットを記憶することができる。マルチレベルセル(MLC)、トリプルレベルセル(TLC)およびクワドレベルセル(QLC)などの他の種類のメモリセルは、1つのセルに複数のビットを記憶することができる。実施形態によっては、メモリデバイス130のそれぞれが、SLC、MLC、TLC、QLCまたはこれらの任意の組合せなどのメモリセルの1つまたは複数の配列を含むことができる。実施形態によっては、特定のメモリデバイスが、メモリセルのSLC部、およびMLC部、TLC部、またはQLC部を含むことができる。メモリデバイス130のメモリセルは、データを記憶するために使用されるメモリデバイスの論理ユニットを指し得るページとしてグループ化可能である。いくつかの種類のメモリ(たとえばNAND)では、ページはブロックを形成するようにグループ化することができる。3Dクロスポイントなどのいくつかの種類のメモリは、管理ユニット(MU)を形成するようにダイおよびチャネルにわたってページをグループ化することができる。3Dクロスポイント型およびNAND型フラッシュメモリなどの不揮発性メモリコンポーネントについて説明するが、メモリデバイス130は、読み出し専用メモリ(ROM)、相変化メモリ(PCM)、自己選択メモリ、その他のカルコゲナイドベースのメモリ、強誘電体ランダムアクセスメモリ(FeRAM)、磁気ランダムアクセスメモリ(MRAM)、否定論理和(NOR)フラッシュメモリ、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)などの任意の他の種類の不揮発性メモリに基づくことができる。
メモリサブシステムコントローラ115(または簡単にコントローラ115)は、メモリデバイス130におけるデータの読み出し、データの書き込み、もしくはデータの消去などの動作またはその他のそのような動作を行うために、メモリデバイス130と通信することができる。メモリサブシステムコントローラ115は、1つまたは複数の集積回路および/または個別コンポーネント、バッファメモリ、またはこれらの組合せなどのハードウェアを含み得る。ハードウェアは、本明細書に記載の動作を行うために専用(すなわちハードコードされた)ロジックを有するデジタル回路を含み得る。メモリサブシステムコントローラ115は、マイクロコントローラ、特殊目的論理回路(たとえばフィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)など)、またはその他の適切なプロセッサとすることができる。
メモリサブシステムコントローラ115は、ローカルメモリ119に記憶された命令を実行するように構成されたプロセッサ117(たとえば処理デバイス)を含み得る。図の実施例では、メモリサブシステムコントローラ115のローカルメモリ119は、メモリサブシステム110とホストシステム120との間の通信の処理を含む、メモリサブシステム110の動作を制御する、様々なプロセス、動作、論理フローおよびルーチンを行うための命令を記憶するように構成された組み込みメモリを含む。
実施形態によっては、ローカルメモリ119は、メモリポインタ、フェッチされたデータなどを記憶するメモリレジスタを含み得る。ローカルメモリ119は、マイクロコードを記憶するための読み出し専用メモリ(ROM)も含み得る。図1の例示のメモリサブシステム110はメモリサブシステムコントローラ115を含むものとして示されているが、本開示の別の実施形態では、メモリサブシステム110はメモリサブシステムコントローラ115を含まず、その代わりに(たとえば外部ホストによって、またはメモリサブシステムとは別個のプロセッサまたはコントローラによって与えられる)外部制御に依拠することができる。
一般に、メモリサブシステムコントローラ115は、ホストシステム120からコマンドまたは操作を受け取ることができ、メモリデバイス130への所望のアクセスを実現するためにそのコマンドまたは操作を命令または適切なコマンドに変換することができる。メモリサブシステムコントローラ115は、ウェアレベリング動作、ガーベッジコレクション動作、誤り検出および誤り訂正コード(ECC)動作、暗号化動作、キャッシング動作、およびメモリデバイス130に関連付けられた論理アドレス(たとえば論理ブロックアドレス(LBA)、ネームスペース)と物理アドレス(たとえば物理MUアドレス、物理ブロックアドレス)との間のアドレス変換など、他の動作を担うこともできる。メモリサブシステムコントローラ115は、物理ホストインターフェースを介してホストシステム120と通信するためのホストインターフェース回路をさらに含み得る。ホストインターフェース回路は、ホストシステムから受け取ったコマンドをメモリデバイス130にアクセスするためのコマンド命令に変換することができ、メモリデバイス130に関連付けられた応答をホストシステム120のための情報に変換することができる。
メモリサブシステム110は、図示されていない追加の回路またはコンポーネントも含み得る。実施形態によっては、メモリサブシステム110は、キャッシュまたはバッファ(たとえばDRAM)と、メモリサブシステムコントローラ115からアドレスを受け取り、メモリデバイス130にアクセスするためにそのアドレスをデコードするアドレス回路(たとえば行デコーダおよび列デコーダ)とを含み得る。
実施形態によっては、メモリデバイス130は、メモリデバイス130の1つまたは複数のメモリセルに対して動作を実行するためにメモリサブシステムコントローラ115とともに動作する、ローカルメディアコントローラ135を含む。例示のコントローラ(たとえばメモリサブシステムコントローラ115)が、メモリデバイス130を外部から管理する(たとえばメモリデバイス130に対してメディア管理動作を行う)ことができる。実施形態によっては、メモリデバイス130は、管理メモリデバイスであり、それは同じメモリデバイスパッケージ内でのメディア管理のためのローカルコントローラ(たとえばローカルコントローラ135)と組み合わさったローメモリデバイスである。管理メモリデバイスの一例は、管理NAND(MNAND)デバイスである。
実施形態では、メモリサブシステム110は、本明細書に記載のような動作を行うメモリサブシステムコントローラ115を含み得る。実施形態によっては、メモリサブシステム110の任意のコンポーネントがメモリサブシステムコントローラ115を含み得る。たとえば、メモリサブシステムコントローラ115は、ホストシステム120、メモリサブシステムコントローラ115、メモリデバイス140、メモリデバイス130、またはオペレーティングシステム(OS)(たとえばホストシステム120のOS)の一部とすることができる。別の実施例では、メモリサブシステムコントローラ115は、本明細書に記載の動作を行うためにローカルメモリ119に記憶されている命令を実行するように構成されたプロセッサ117(処理デバイス)を含み得る。実施形態によっては、メモリ動作は、書き込み動作、読み出し動作、または先行読み出し動作を含み得るが、これらには限定されない。実施形態によっては、先行読み出し動作は書き込み動作の一部とすることができる。
実施形態によっては、メモリサブシステムコントローラ115に関連して記載されているメモリ動作は、不揮発性クロスポイント配列メモリコンポーネントに対して行うことができる。実施形態によっては、不揮発性クロスポイント配列メモリコンポーネントは、複数の書き込み動作モードを有することができ、書き込み動作モードのそれぞれは、不揮発性クロスポイント配列メモリコンポーネントに異なる方式で書き込み、異なるトレードオフを有する、異なる書き込み動作に関連付けられている。限定ではなく例示を目的として、本開示の態様は、複数の書き込み動作のうちの書き込み動作(たとえば、本明細書で「通常書き込み動作」とも呼ぶ)を行うメモリ動作コントローラ113の動作について説明する。本開示の態様は異なる書き込み動作に適用可能であると了解することができる。
実施形態において、書き込み動作は、キャッシュメモリ(たとえば、メモリデバイス130またはメモリデバイス140にデータが書き込まれる前にデータを記憶するために使用されるメモリ)からのデータのデータ単位とメモリデバイス130またはメモリデバイス140に前に記憶されたデータ単位との比較に基づいて、メモリデバイス130またはメモリデバイス140にデータを書き込むことができる。メモリデバイス130またはメモリデバイス140に前に書き込まれたデータ単位は、(たとえば不揮発性クロスポイント配列メモリコンポーネントに消去動作が行われないため)書き込み動作時にメモリデバイス130またはメモリデバイス140にまだ存在し得る。実施形態によっては、すでに書き込まれているデータ単位は、書き込まれようとしているデータ単位と同じ値(たとえば論理「1」または論理「0」)を記憶している場合がある。
実施形態によっては、書き込み動作の前に先行読み出し動作を行うことができる(または、書き込み動作が、メモリデバイス130またはメモリデバイス140にデータを書き込む前に行われる先行読み出し動作を含むことができる)。先行読み出し動作は、まず、メモリデバイス130またはメモリデバイス140における書き込まれる場所を特定することができ、メモリデバイス130またはメモリデバイス140のその特定の場所に現在記憶されているデータを読み出すことができる。記憶されるデータ(たとえばキャッシュメモリからのデータ)の各データ単位は、メモリデバイス130またはメモリデバイス140において対応するデータ単位を有する。先行読み出し動作は、比較サブ動作も含むことができる。たとえば、メモリデバイス130またはメモリデバイス140における特定のデータ単位が、書き込まれるデータの対応するデータ単位と一致するデータを現在記憶している場合、メモリサブシステムコントローラ115は書き込まれる(たとえばキャッシュメモリに記憶されている)データのそのデータ単位に対応する特定のデータをメモリデバイス130またはメモリデバイス140におけるその場所に書き込まないことに決定する。それ以外の場合、メモリデバイス130またはメモリデバイス140における特定のデータ単位が、書き込まれるデータの対応するデータ単位と一致しない場合、メモリデバイス130またはメモリデバイス140のその特定の場所で書き込み動作を行うことができる。
たとえば、メモリデバイス130またはメモリデバイス140の特定の場所に記憶されているデータの値を変更するために、メモリデバイス130またはメモリデバイス140における特定のデータ単位に電圧信号を印加することができる。したがって、この通常書き込み動作では、処理デバイスは、書き込まれる(たとえばキャッシュメモリに記憶されている)対応するデータ単位のデータ値とは異なるデータ値を含むデータ単位について、メモリデバイス130またはメモリデバイス140にデータを書き込む。通常書き込み動作では、データ単位のメモリセルの一部(平均してデータ単位のメモリセルの約半分)が再書き込みされ、データ単位のメモリセルの残りの部分は前の値を維持する。実施形態では、通常書き込み動作は、メモリコンポーネントのライフサイクルにわたる複数の書き込み動作モードの最も頻繁に行われる書き込み動作であり得る。
実施形態では、強制書き込み動作モードに関連付けられた強制書き込み動作(本明細書では「強制書き込み」とも呼ぶ)は、先行読み出し動作を行わない。その代わりに、強制書き込み動作は、書き込まれる(およびキャッシュメモリに記憶されている)データを記憶することになるメモリデバイス130またはメモリデバイス140のすべてのデータ単位に電圧を印加することができる。たとえば、強制書き込み動作は、値「0」を設定するためにデータ単位に電圧を印加することができ、値「1」を設定するために別のデータ単位に別の電圧を印加することができる。したがって、強制書き込み動作は、メモリデバイス130またはメモリデバイス140に書き込まれるデータ全体を書き込むことができる。実施形態によっては、強制書き込み動作モードは、メモリ障害作用を定期的にクリアするために使用可能である。
実施形態では、トグル強制書き込み動作モードに関連付けられたトグル強制書き込み動作(本明細書では「トグル書き込み」または「トグル書き込み動作」とも呼ぶ)は先行読み出し動作を行わない。トグル強制書き込み動作は、2パス強制書き込みとも呼ぶ場合がある。第1パス書き込みは、データがデータ単位に反転データとして書き込まれる反転書き込みとすることができる(たとえば、データビットが「0」の場合に「1」として書き込まれ、その逆もある)。第2パス書き込みは、データがデータ単位に非反転データとして書き込まれる非反転書き込みとすることができる(たとえば、データビットが「0」の場合に「0」として書き込まれ、その逆もある)。トグル強制書き込みは、メモリセルのメモリ状態のリセットを支援するために定期的に行うことができる。
メモリ動作コントローラ113に関する詳細については、以下でさらに説明する。
図2は、本開示の一部の実施形態による、メモリサブシステムのメモリ動作を示すブロック図である。実施形態によっては、メモリ動作コントローラ113はメモリデバイス210に動作可能に結合されている。実施形態によっては、メモリデバイス210は、図1の1つまたは複数のメモリデバイス130または1つまたは複数のメモリデバイス140の一例とすることができる。実施形態によっては、メモリデバイス210はクロスポイント配列不揮発性メモリデバイスである。
実施形態によっては、メモリデバイス210が、212A~212Nによって示されている1つまたは複数のダイ(本明細書では「ダイ212」と総称する)を含むことができる。ダイは、その上に機能電気回路が製作されている半導体材料などの材料のブロックを指し得る。メモリデバイス210などのメモリデバイスは、1つまたは複数のダイ212を含むことができる。実施形態によっては、メモリデバイス210のダイ212は、個別パッケージの外部のリード線またははんだボールなどの端子を使用する個別パッケージにパッケージ化可能である。端子は、メモリデバイス210のダイへのメモリデバイス210の外部の電気信号の伝送、およびその逆の伝送を可能にする。実施形態によっては、メモリデバイス210のダイ212のそれぞれに、レジスタ214A~214C(本明細書では「レジスタ214」と総称する)などの複数のレジスタが関連付けられている。レジスタは、バイナリ情報を記憶可能なデータストレージデバイスを指し得る。実施形態によっては、レジスタは不揮発性メモリの一種である。実施形態によっては、レジスタは、ダイ212のそれぞれの上に製作されるオンダイレジスタである。実施形態によっては、ダイ1つ当たりのレジスタ214の数は限られており、製造時に設定される。実施形態によっては、レジスタ214は、図のような閾値電圧(Vth)などの特定の情報を記憶するために使用可能である。
実施形態によっては、レジスタ214に関連付けられる閾値電圧は異なる電圧とすることができる。たとえば、閾値電圧1(Vth1)は閾値電圧2(Vth2)より小さくすることができ、閾値電圧2は閾値電圧3(Vth3)より小さくすることができる。実施形態によっては、閾値電圧1~3は、たとえば電源投入イベントごとにデフォルト値としてレジスタ214にロードされ、記憶される。例示として、閾値電圧1は読み出し閾値電圧1または先行読み出し閾値電圧1に対応することができ、両方の動作について同じ電圧とすることができる。たとえば、読み出し動作1と先行読み出し動作1の両方に同じ閾値電圧1を使用することができる。閾値電圧2は、読み出し閾値電圧2または先行読み出し閾値電圧2に対応することができ、両方の動作について同じ電圧とすることができる。たとえば、読み出し動作2と先行読み出し動作2の両方に同じ閾値電圧2が使用可能である。実施形態によっては、閾値電圧3は読み出し閾値電圧3または先行読み出し閾値電圧3に対応することができ、各動作について異なる電圧とすることができる。たとえば、読み出し閾値電圧3と先行読み出し閾値電圧3などの異なる閾値電圧3を、それぞれ読み出し動作3と先行読み出し動作3のそれぞれに使用することができる。レジスタ214Cに記憶されている閾値電圧は、後述するように特定の条件下で変更可能である。実施形態によっては、閾値電圧1、閾値電圧2、読み出し閾値電圧3、および先行読み出し閾値電圧3は異なる電圧レベルである。
グラフ220に、メモリデバイス210のメモリセルの閾値電圧分布の一例を示す。閾値電圧分布は、特定の書き込み電圧にプログラムされたメモリセルの閾値電圧の範囲(たとえば閾値電圧の正規分布)を示すことができる。書き込み電圧は、各分布の中点とみなすことができる。たとえば、論理「1」または論理「0」としてプログラムされる複数のメモリセルが特定の書き込み電圧でプログラムされる。同じ書き込み電圧でプログラムされるメモリセルは、対応する閾値電圧分布内に収まる閾値電圧を有することができる。異なる閾値電圧1~3が左から右に上昇するように図示されている。
実施形態によっては、レジスタ2141~214Cにロードされ、記憶されるデフォルト閾値電圧は、閾値電圧1、閾値電圧2、および先行読み出し閾値電圧3である。
実施形態によっては、レジスタ214A~214Cにロードされ、記憶されるデフォルト閾値電圧は、閾値電圧1、閾値電圧2および読み出し閾値電圧3である。メモリ動作コントローラ113が、メモリデバイス210に、レジスタ214Cのデフォルトの内容(たとえばデフォルトレジスタ設定)を示す標識を要求することができる。レジスタ214Cの内容を示す標識がレジスタ214Cに読み出し閾値電圧3が入っていることを示す場合、メモリ動作コントローラ113は、先行読み出し閾値電圧3がレジスタ214Cに「デフォルト」閾値電圧として記憶されるように、レジスタ214Cに読み出し閾値電圧3をロードすることができる。実施形態によっては、上述のように、先行読み出し閾値電圧3はメモリデバイス210の耐用期間中により頻繁に使用され、メモリデバイス210の耐用期間の大半においてレジスタ214Cに記憶されることになる。実施形態によっては、メモリ動作コントローラ113は、メモリデバイス210において読み出し動作を行うことができる。たとえば、メモリサブシステム110(たとえばメモリ動作コントローラ113)が、メモリデバイス210に記憶されているデータを読み出す要求を受け取ることができる。たとえば、ホストシステム120が、メモリサブシステム110に、メモリデバイス210から読み取られる特定のデータを特定する要求を送信することができる。実施形態によっては、メモリ動作コントローラ113は、読み出し要求の受け取りに応答してメモリデバイス210において読み出し動作を行う。メモリ動作コントローラ113は、レジスタ214Aに記憶されている読み出し閾値電圧1を使用してメモリデバイス210において読み出し動作を行うことができる。メモリデバイス210で読み出されたデータは、メモリデバイス210からメモリサブシステム110に送信することができ、メモリサブシステム110においてデータがメモリサブシステムコントローラ115に関連付けられたバッファに記憶される。
例示の実施例では、メモリサブシステム110は、複数のダイ212にわたってデータペイロード(たとえばユーザデータ)を書き込みまたはストライプするストライピング方式を使用することができる。たとえば、ユーザデータがメモリデバイス210の16個のダイにわたって書き込まれる。ダイ212のうちの15個がユーザデータの一部をコードワードとして記憶する。コードワードは、コードワードのユーザデータのためのパリティとして使用可能なパリティデータ(たとえばパリティビット)も含むこともできる。実施例によっては、ダイ212のうちの1つがすべてのコードワードのパリティデータを記憶することができる。たとえば、最初の15個のダイがユーザデータの部分に対応するコードワードとそれぞれのコードワードパリティビットを記憶することができ、16番目のダイが最初の15個のコードワードのパリティデータ(たとえばダイ1からダイ15のコードワードのXOR)を記憶することができる。ユーザデータがメモリデバイス210から読み出されるとき、ユーザデータに対応する各コードワードが複数のダイ212から読み出され、メモリサブシステムコントローラ115に関連付けられたバッファに送信され、そこに一時的に記憶される。
実施形態によっては、メモリ動作コントローラ113は、データに誤りがあるか否かを判定するために、バッファに記憶されているデータに対してECC動作を行うことができる。メモリ動作コントローラ113が、誤りがあると判定した場合、誤りを訂正しようとしてバッファに記憶されているデータにECC動作(たとえばティア1のECC)をさらに適用することができる。データに誤りがない場合、またはECC動作がデータの誤りを訂正することができる場合(たとえば訂正成功)、メモリ動作コントローラ113はその(訂正された)データをホストシステム120に送信する。ECC動作は特定の数の誤りを訂正することができることに注目することができる。データ内の誤りの数が、ECC動作が訂正可能な誤り数以下である場合、ECC動作はそれらの誤りを訂正する(たとえば訂正成功)。データ内の誤りの数が、ECC動作が訂正可能な誤り数より多い場合、ECC動作の結果として、データ内の誤りが訂正されない訂正不成功となる。
たとえば、上述のように、複数のダイ212からのコードワードのうちの1つまたは複数のコードワードが誤りを含む場合がある。実施形態によっては、ECC動作は単一のコードワードの誤りを訂正することができる。しかし、複数のコードワードに誤りがある場合、ECC動作の結果、訂正不成功になる可能性がある。
実施形態によっては、メモリ動作コントローラ113は、メモリサブシステムコントローラ115のバッファに記憶されているデータの誤りを訂正することができない。たとえば、誤りの数がECC動作の誤り訂正能力を超える。実施形態によっては、読み出し閾値電圧1を使用した読み出し動作の結果として誤りの訂正不成功となった場合、メモリ動作コントローラ113は、レジスタ214Bに記憶されている読み出し閾値電圧2などの別の読み出し閾値電圧を使用してもう一度読み出し動作を行うことができる。上述のように、実施形態によっては読み出し閾値電圧2は読み出し閾値電圧1より大きい。メモリデバイス210におけるデータを読み出すためにより高い読み出し閾値電圧を使用すると、場合によってはその結果として読み出し誤り(たとえば閾値電圧分布におけるシフトの結果生じる誤り)が少なくなることがある。
たとえば、上述のように、複数のダイ212からのコードワードのうちの1つまたは複数が誤りを含むことがある。場合によっては、ECC動作によって単一のコードワードの誤りを訂正することができる。しかし、複数のコードワードに誤りがある場合、ECC動作の結果として訂正不成功となることがある。メモリ動作コントローラ113は、コードワード誤りが関連付けられているダイからデータを正確に読み出すには読み出し閾値電圧が低すぎることによって生じる誤りを低減とする試みとして、前に使用された閾値電圧より高い閾値電圧を使用してもう一度読み出し動作を行うことができる。
実施形態によっては、メモリ動作コントローラ113は、レジスタ214Bに記憶されている読み出し閾値電圧2を使用して読み出し動作を行う。読み出し閾値電圧1を使用する読み出し動作と同様に、(読み出し閾値電圧2を使用して)メモリデバイス210において読み出されたデータをメモリデバイス210からメモリサブシステム110に送信することができ、そこでデータがメモリサブシステムコントローラ115に関連付けられたバッファに記憶される。
実施形態によっては、メモリ動作コントローラ113は、データに1つまたは複数の誤りがあるか否かを判定するために、バッファに記憶されている(読み出し閾値電圧2を使用して読み出された)データに対してECC動作を行うことができる。メモリ動作コントローラ113が、誤りがあると判定した場合、誤りを訂正する試みとして、バッファに記憶されているデータにECC動作(たとえばティア1のECC動作)をさらに適用することができる。データに誤りがない場合、またはECC動作によりデータの誤りを訂正することができる(たとえば訂正成功)場合、メモリ動作コントローラ113は、その(訂正された)データをホストシステム120に送信する。データの誤りの数が、ECC動作が訂正可能な誤り数より多い場合、ECC動作の結果として、データの誤りが訂正されない訂正不成功となる。
実施形態によっては、メモリ動作コントローラ113はメモリサブシステムコントローラ115のバッファに記憶されている(たとえば読み出し閾値電圧2を使用して読み出された)データの誤りを訂正することができない。実施形態によっては、読み出し閾値電圧2を使用した読み出し動作の結果として誤りの訂正不成功となった場合、メモリ動作コントローラ113は、読み出し閾値電圧3などの別の読み出し閾値電圧を使用してもう一度読み出し動作を行うことができる。
上述のように、レジスタ214に記憶されるデフォルト閾値電圧は、実施形態によっては先行読み出し閾値電圧3とすることができる。(たとえば読み出し閾値電圧1または読み出し閾値電圧2を使用した)データ読み出しが訂正不成功を伴っているとの判定に応答して、メモリ動作コントローラ113は、レジスタ214Cに前に記憶された先行読み出し閾値電圧3を置き換えるために、レジスタ214Cに読み出し閾値電圧3を記憶することができる。
たとえば、(たとえば読み出し閾値電圧1または読み出し閾値電圧2を使用した)データ読み出しが訂正不成功を伴っているとの判定に応答して、メモリ動作コントローラ113は、ローカルメモリ119に記憶されている読み出し閾値電圧3を特定し、読み出し閾値電圧3がレジスタ214Cに記憶されるように、読み出し閾値電圧3をメモリデバイス210に送ることができる。
実施形態によっては、メモリ動作コントローラ113は、レジスタ214Cに記憶されている読み出し閾値電圧3を使用して読み出し動作を行う。読み出し閾値電圧1または読み出し閾値電圧2を使用した読み出し動作と同様に、(読み出し閾値電圧3を使用して)メモリデバイス210で読み出されたデータは、メモリデバイス210からメモリサブシステム110に送信することができ、メモリサブシステム110においてメモリサブシステムコントローラ115に関連付けられたバッファにデータが記憶される。
実施形態によっては、メモリ動作コントローラ113は、データに誤りがあるか否か判定するために、バッファに記憶されている(読み出し閾値電圧3を使用して読み出された)データに対してECC動作を行うことができる。メモリ動作コントローラ113が、誤りがあると判定した場合、誤りの訂正を試みるために、バッファに記憶されているデータに対してECC動作(たとえばティア1のECC)をさらに適用することができる。データに誤りがない場合、またはECC動作によりデータの誤りを訂正することができる場合(たとえば訂正成功)、メモリ動作コントローラ113はその(訂正された)データをホストシステム120に送信する。データの誤りの数が、ECC動作が訂正可能な誤り数より多い場合、ECC動作の結果として、データの誤りが訂正されない訂正不成功となる。実施形態によっては、ECC動作が、読み出し閾値電圧3を使用してメモリデバイス210から読み出されたデータを訂正することができない場合、誤りを訂正するために追加のECC動作(たとえばティア1のECC動作よりも多くの誤りを訂正することができるティア2のECC動作)を使用することができる。上記では、3つの異なる読み出し閾値電圧を使用した読み出し動作について説明していることがわかる。他の実施形態では、読み出し動作が異なる読み出し閾値電圧を使用して行われる、1つまたは複数の読み出し動作を行うことができる。
読み出し閾値電圧3を使用してメモリデバイス210から読み出されたデータの誤りの訂正に応答して、メモリ動作コントローラ113は、レジスタ214Cに記憶されている読み出し閾値電圧を先行読み出し閾値電圧3で置き換える。
実施形態によっては、メモリサブシステム110(たとえばメモリ動作コントローラ113)がホストシステム120から、メモリサブシステム110にデータを書き込む書き込み動作を行う要求を受け取ることができる。実施形態によっては、書き込み動作を行う要求の受け取りに応答して、メモリ動作コントローラ113は先行読み出し動作を行うことができる。
実施形態によっては、メモリ動作コントローラ113は、先行読み出し動作のそれぞれが異なる先行読み出し閾値電圧を使用して行われる、1つまたは複数の先行読み出し動作を行うことができる。
実施形態によっては、メモリ動作コントローラ113は、メモリ動作コントローラ113が2つの異なる先行読み出し閾値電圧を使用して少なくとも2つの先行読み出し動作を行う、二重電圧方式先行読み出し動作(本明細書では「二重電圧方式」とも呼ぶ)を実施することができる。二重電圧方式では、2つの先行読み出し閾値電圧は、レジスタ214Aに記憶されている先行読み出し/読み出し閾値電圧1およびレジスタ214Cに記憶されている先行読み出し閾値電圧3とすることができる。実施形態によっては、先行読み出し閾値電圧1は先行読み出し閾値電圧3よりも小さい。二重電圧方式では、メモリ動作コントローラ113は、書き込まれるデータが記憶されるメモリデバイス210における場所(たとえばメモリセル)のデータを読み出すために、先行読み出し閾値電圧1を使用して先行読み出し動作を行うことができる。メモリ動作コントローラ113は、メモリデバイス210における同じ場所に記憶されている同じデータを読み出すために、先行読み出し閾値電圧3を使用してもう一度先行読み出し動作を行うこともできる。
実施形態によっては、二重電圧方式の2つの先行読み出し動作は、メモリデバイス210からデータ(たとえばビット)を確実に読み出すことができるか否かを判定するのに役立ち得る。たとえば、異なる先行読み出し閾値電圧を使用する先行読み出し動作が、同じメモリセルについて異なる値を読み出した場合(たとえばメモリセルのビットが閾値電圧分布の末尾(3+シグマ)にあるため)、メモリ動作コントローラ113は、メモリセルの値を確実に読み出すことができないと判定することができる。実施形態によっては、メモリセルを確実に読み出すことができないと判定された場合、メモリ動作コントローラ113は、先行読み出し動作のうちの1つが書き込まれる値と一致する値を読み出しても、メモリセルにそのデータを書き込むことを決定することができる。異なる先行読み出し閾値電圧を使用した先行読み出し動作が同じメモリセルについて同じ値を読み出した場合、メモリ動作コントローラ113はメモリセルの値を確実に読み出すことができると判定することができる。実施形態によっては、メモリ動作コントローラ113がメモリセルを確実に読み出すことができると判定した場合、メモリ動作コントローラ113は一致するデータをそのメモリセルに書き込まないと決定することができる。
実施形態によっては、二重電圧方式は以下のように実装可能である。特定のメモリセルに書き込まれるビットが論理「0」である場合、メモリ動作コントローラ113は、少なくとも先行読み出し閾値電圧3を使用した先行読み出し動作がその特定のメモリセルにおいて論理「0」を読み出す場合に、メモリセルが確実に読み出し可能であると判定することができる。特定のメモリセルに書き込まれるビットが論理「1」である場合、メモリ動作コントローラ113は、少なくとも先行読み出し閾値電圧1を使用した先行読み出し動作がその特定のメモリセルにおいて論理「1」を読み出す場合に、そのメモリセルが確実に読み出し可能であると判定することができる。他のすべての場合、メモリ動作コントローラ113は、メモリセルが確実には読み出されない(たとえば不確かに読み出される)と判定する。メモリ動作コントローラ113が、メモリセルが確実に読み出し可能であると判定した場合、メモリ動作コントローラ113は書き込み動作時にその特定のメモリセルに書き込まない。メモリ動作コントローラ113が、メモリセルが確実に読み出すことが可能ではないと判定した場合、メモリ動作コントローラ113は書き込み動作時にその特定のメモリセルに書き込む。上記は、書き込み動作の一部として書き込まれるデータ単位の各メモリセルに適用される。
実施形態によっては、先行読み出し閾値電圧3は、先行読み出し動作を行った後もレジスタ214Cに記憶されたままである。上述のように、読み出し動作が読み出し閾値電圧3を使用する状況では、先行読み出し閾値電圧3が読み出し閾値電圧3によって一時的に置き換えられる。読み出し閾値電圧3を使用した読み出し動作が完了した後、メモリ動作コントローラ113はレジスタ214Cにおける読み出し閾値電圧3を先行読み出し閾値電圧3に置き換える。
以下で説明する図3および図4の方法300および400は、それぞれハードウェア(たとえば処理デバイス、回路、専用ロジック、プログラマブルロジック、マイクロコード、デバイスのハードウェア、集積回路など)、ソフトウェア(たとえば処理デバイス上で稼働または実行される命令)、またはこれらの組合せを含み得る処理ロジックによって実行可能である。実施形態によっては、方法300または400は、図1のメモリ動作コントローラ113によって行われる。特定のシーケンスまたは順序で示されているが、別に明記されていない限り、動作のシーケンスまたは順序は変更可能である。したがって、図の実施形態は例に過ぎないものと理解すべきであり、図のプロセスは異なる順序で行うことができ、一部のプロセスは並行して行うことができる。また、様々な実施形態において1つまたは複数のプロセスを省くことができる。したがって、すべての実施形態ですべてのプロセスが必要というわけではない。他のプロセスフローも可能である。実施形態によっては、同じ動作、異なる動作、より多くの動作、またはより少ない動作が行われてもよい。
図3は、本開示の実施形態によるメモリサブシステムにおける読み出し動作を行う例示の方法の流れ図である。
動作310で、処理ロジックはメモリコンポーネントにおけるデータを読み出す要求を受け取る。実施形態によっては、メモリコンポーネントはクロスポイント配列メモリを含む。
動作320で、処理ロジックは、第1の読み出し閾値電圧を使用してメモリコンポーネントにおけるデータを読み出すために第1の読み出し動作を行う。たとえば、処理ロジックは、上述のように読み出し閾値電圧1または読み出し閾値電圧2で読み出し動作を行うことができる。
動作330で、処理ロジックは、第1の読み出し閾値電圧を使用してメモリコンポーネントで読み出されたデータが誤りの第1の訂正不成功を伴っていると判定する。たとえば、第1の読み出し閾値電圧を使用してメモリコンポーネントで読み出されたデータは、ティア1のECCによって訂正することができない1つまたは複数の誤りを有する。
動作340で、処理ロジックは、レジスタに前に記憶された第1の先行読み出し閾値電圧を置き換えるために、レジスタに第2の読み出し閾値電圧を記憶する。実施形態によっては、動作340は、第1の読み出し閾値電圧を使用してメモリコンポーネントにおいて読み出されたデータが誤りの第1の訂正不成功を伴っているとの判定に応答して行われる。実施形態によっては、第1の先行読み出し閾値電圧は、メモリコンポーネントにおいて先行読み出し動作を行うために前に使用されたものである。実施形態によっては、第1の読み出し閾値電圧は、第2の読み出し閾値電圧より小さい。
実施形態によっては、レジスタはメモリコンポーネントに関連付けられている。実施形態によっては、レジスタはメモリコンポーネントのダイに関連付けられたオンダイレジスタである。
動作350で、処理ロジックは、第2の読み出し閾値電圧(たとえば読み出し閾値電圧3)を使用してメモリコンポーネントにおいてデータを読み出すために第2の読み出し動作を行う。実施形態によっては、動作350は、第1の読み出し閾値電圧を使用してメモリコンポーネントにおいて読み出されたデータが誤りの第1の訂正不成功を伴っているとの判定に応答して行われる。
実施形態によっては、第1の読み出し閾値電圧を使用してメモリコンポーネントにおいて読み出されたデータが誤りの第1の訂正不成功を伴っているとの判定に応答して、処理ロジックは、第3の読み出し閾値電圧を使用してメモリコンポーネントにおいてデータを読み出すために第3の読み出し動作を行う。処理ロジックは、第3の読み出し閾値電圧を使用してメモリコンポーネントにおいて読み出されたデータが誤りの第2の訂正不成功を伴っていると判定する。第3の読み出し動作は、第2の読み出し動作の前に行われる。第2の読み出し動作の実行は、第1の読み出し閾値電圧を使用してメモリコンポーネントにおいて読み出されたデータが誤りの第1の訂正不成功を伴っているとの判定と、第3の読み出し閾値電圧を使用してメモリコンポーネントにおいて読み出されたデータが誤りの第2の訂正不成功を伴っているとの判定に応答する。実施形態によっては、第1の読み出し閾値電圧または第2の読み出し閾値電圧の少なくとも一方が、メモリコンポーネントにおけるデータの読み出しの要求を受け取る前に、メモリコンポーネントに関連付けられた対応するレジスタに事前ロードされている。
たとえば、第3の読み出し閾値電圧は上述のように読み出し閾値電圧2に対応することができ、第3の読み出し動作は第1の読み出し動作と第2の読み出し動作の間に行うことができる。第1の読み出し動作と第3の読み出し動作の両方の結果、誤りの訂正不成功となることがある。
実施形態によっては、処理ロジックは、第2の読み出し閾値電圧を使用してメモリコンポーネントにおいてデータを読み出すために第2の読み出し動作を行うことに応答して、メモリコンポーネントに関連付けられたレジスタに第1の先行読み出し閾値電圧を記憶する。実施形態によっては、このデータは第1のデータである。処理ロジックは、第2のデータをメモリコンポーネントに書き込む要求を受け取る。メモリコンポーネントに第2のデータを書き込む要求の受け取りに応答して、処理ロジックは、レジスタにロードされている第1の先行読み出し閾値電圧を使用してメモリコンポーネントにおいて第3のデータを読み出すために第1の先行読み出し動作を行う。処理ロジックは、先行読み出し動作に基づいて、(メモリコンポーネントに記憶されている)第3のデータの第1のサブセットのデータ値と一致する(たとえば書き込まれる)第2のデータの第1のサブセットのデータ値と、第3のデータの第2のサブセットのデータ値と異なる第2のデータの第2のサブセットのデータ値とを判定する。処理ロジックは、第2のサブセットのデータ値と異なる第2のデータの第2のサブセットのデータ値を書き込む書き込み動作を行い、第3のデータの第1のサブセットのデータ値と一致する第3のデータの第1のサブセットのデータ値の再書き込みを回避する。
実施形態によっては、メモリコンポーネントにおけるデータを読み出す要求を受け取る前に、処理ロジックは、メモリコンポーネントに関連付けられたレジスタに記憶されているデフォルト電圧が第2の読み出し閾値電圧(たとえば読み出し閾値電圧3)であるか否かを判定する。メモリコンポーネントに関連付けられたレジスタのデフォルト電圧が第2の読み出し閾値電圧であるとの判定に応答して、処理ロジックは、レジスタに前に記憶されたデフォルト電圧を置き換えるためにレジスタに第1の先行読み出し閾値電圧を記憶する。
図4は、本開示の実施形態による、メモリサブシステムにおける書き込み動作を行う例示の方法の流れ図である。
動作410で、処理ロジックは、複数の読み出し閾値電圧のうちの読み出し閾値電圧を使用してメモリコンポーネントにおける第1のデータを読み出すために読み出し動作を行う。複数の読み出し閾値電圧は、メモリコンポーネントにおいて読み出し動作を行うために使用される。
動作420で、処理ロジックは、メモリコンポーネントに第2のデータを書き込むために書き込み動作を行う要求を受け取る。たとえば、メモリサブシステム110が、ホストシステム120からメモリサブシステム110にデータを書き込む要求を受け取ることができる。
動作430で、処理ロジックは、複数の読み出し閾値電圧のうちのいずれとも異なる第1の先行読み出し閾値電圧を使用してメモリコンポーネントにおける第3のデータを読み出すために先行読み出し動作を行う。実施形態によっては、動作430は、メモリコンポーネントに第2のデータを書き込む要求の受け取りに応答して行われる。
実施形態によっては、第2のデータのサブセットは第2のデータの第2のサブセットである。先行読み出し動作を行うために、処理ロジックは、第3のデータの第1のサブセットのデータ値と一致する第2のデータの第1のサブセットのデータ値と、(たとえばメモリコンポーネントに記憶されている)第3のデータの第2のサブセットのデータ値と異なる第2のデータ(たとえば書き込まれるデータ)の第2のサブセットのデータ値とを判定する。
動作440で、処理ロジックは、先行読み出し動作に基づいてメモリコンポーネントに第2のデータのサブセットを書き込む書き込み動作を行う。実施形態によっては、動作440はメモリコンポーネントに第2のデータを書き込む要求の受け取りに応答して行われる。
実施形態によっては、書き込み動作を行うために、処理ロジックは第3のデータの第1のサブセットのデータ値と一致する第3のデータの第1のサブセットのデータ値の再書き込みを回避する。
実施形態によっては、複数の読み出し閾値電圧のうちの読み出し閾値電圧は第1の読み出し閾値電圧である。処理ロジックは、第1の読み出し閾値電圧を使用してメモリコンポーネントで読み出された第1のデータが誤りの第1の訂正不成功を伴っていると判定する。第1の読み出し閾値電圧を使用してメモリコンポーネントで読み出された第1のデータが誤りの第1の訂正不成功を伴っているとの判定に応答して、処理ロジックは、メモリコンポーネントに関連付けられたレジスタに前に記憶されている第1の先行読み出し閾値電圧を置き換えるために、レジスタに第2の読み出し閾値電圧を記憶する。第1の先行読み出し閾値電圧は、メモリコンポーネントにおいて先行読み出し動作を行うために前に使用されたものである。処理ロジックは、第2の読み出し閾値電圧を使用してメモリコンポーネントにおけるデータを読み出すために第2の読み出し動作を行う。
実施形態によっては、第1の読み出し閾値電圧を使用してメモリコンポーネントで読み出された第1のデータが誤りの第1の訂正不成功を伴っているとの判定に応答して、処理ロジックは、複数の読み出し閾値電圧のうちの第3の読み出し閾値電圧を使用してメモリコンポーネントにおける第1のデータを読み出すために第3の読み出し動作を行う。処理ロジックは、第3の読み出し閾値電圧を使用してメモリコンポーネントで読み出された第1のデータが誤りの第2の訂正不成功を伴っていると判定する。第3の読み出し動作は、第2の読み出し動作の前に行われる。実施形態によっては、処理ロジックは第1の読み出し閾値電圧を使用してメモリコンポーネントで読み出されたデータが誤りの第1の訂正不成功を伴っているとの判定と、第3の読み出し閾値電圧を使用してメモリコンポーネントで読み出されたデータが誤りの第2の訂正不成功を伴っているとの判定に応答して第2の読み出し動作を行う。
実施形態によっては、先行読み出し動作は第1の先行読み出し動作である。処理ロジックは、第2の先行読み出し閾値電圧を使用してメモリコンポーネントにおいて第3のデータを読み出すために第2の先行読み出し動作を行う。第2の先行読み出し閾値電圧は、複数の読み出し閾値電圧のうちの1つと同じ閾値電圧であり、第1の先行読み出し閾値電圧とは異なる閾値電圧である。実施形態によっては、第1の先行読み出し閾値電圧は、第2の先行読み出し閾値電圧より大きい。
図5に、機械に本明細書に記載の方法のうちのいずれか1つまたは複数の方法を行わせるための命令のセットが内部で実行可能なコンピュータシステム500の、例示の機械を示す。実施形態によっては、コンピュータシステム500は、メモリサブシステム(たとえば図1のメモリサブシステム110)を含むか、メモリサブシステムに結合されているか、またはメモリサブシステムを利用するホストシステム(たとえば図1のホストシステム120)に対応し得るか、あるいは(たとえば図1のメモリ動作コントローラ113に対応する動作を行うようにオペレーティングシステムを実行するために)コントローラの動作を行うために使用可能である。別の実施形態では、機械はLAN、イントラネット、エクストラネット、および/またはインターネットにおける他の機械に接続(たとえばネットワーク接続)可能である。機械は、クライアント-サーバネットワーク環境におけるサーバマシンもしくはクライアントマシンの能力において、ピアツーピア(または分散)ネットワーク環境におけるピアマシンとして、またはクラウドコンピューティングインフラストラクチャまたは環境におけるサーバマシンもしくはクライアントマシンとして動作可能である。
機械は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルデジタルアシスタント(PDA)、携帯電話、ウェブ機器、サーバ、ネットワークルータ、スイッチもしくはブリッジ、または、その機械によって行われるアクションを指定する(次のまたはその他の)命令のセットを実行することができる任意の機械とすることができる。また、単一の機械が示されているが、「機械」という用語は、本明細書に記載の方法のうちのいずれか1つまたは複数の方法を行うために個別にまたは共同で命令のセット(または複数のセット)を実行する機械の任意の集合を含むものとも解釈されるべきである。
例示のコンピュータシステム500は、バス530を介して互いに通信する、処理デバイス502と、メインメモリ504(たとえば読み出し専用メモリ(ROM)、フラッシュメモリ、シンクロナスDRAM(SDRAM)またはラムバスDRAM(RDRAM)などのダイナミックランダムアクセスメモリ(RDRAM)など)と、スタティックメモリ506(たとえばフラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)と、データストレージシステム518とを含む。
処理デバイス502は、マイクロプロセッサ、中央処理装置などの1つまたは複数の汎用処理デバイスを表す。より具体的には、処理デバイスは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、もしくはその他の命令セットを実装するプロセッサ、または命令セットの組合せを実装するプロセッサとすることができる。処理デバイス502は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、ネットワークプロセッサなどの、1つまたは複数の専用処理デバイスとすることもできる。処理デバイス502は、本明細書に記載の動作およびステップを実行するための命令526を実行するように構成される。コンピュータシステム500は、ネットワークを介して通信するためのネットワークインターフェースデバイス508をさらに含むことができる。
データストレージシステム518は、本明細書に記載の方法または機能のうちのいずれか1つまたは複数を具現化する命令526の1つまたは複数のセットまたはソフトウェアが記憶された機械可読記憶媒体524(コンピュータ可読媒体とも呼ぶ)を含み得る。命令526は、コンピュータシステム500による命令526の実行時に、完全に、または少なくとも部分的に、メインメモリ504内および/または処理デバイス502内に存在することもでき、メインメモリ504および処理デバイス502は、機械可読記憶媒体も構成する。機械可読記憶媒体524、データストレージシステム518および/またはメインメモリ504は、図1のメモリサブシステム110に対応し得る。
一実施形態では、命令526は図1のメモリ動作コントローラ113に対応する機能を実装するための命令を含む。機械可読記憶媒体524は例示の実施形態では単一の媒体であるように図示されているが、「機械可読記憶媒体」という用語は、命令の1つまたは複数のセットを記憶する単一の媒体または複数の媒体を含むものと解釈されるべきである。「機械可読記憶媒体」という用語は、機械による実行のための命令のセットを記憶または符号化することができ、機械に本開示の方法のうちのいずれか1つまたは複数の方法を行わせる、あらゆる媒体を含むものとも解釈されるべきである。したがって、「機械可読記憶媒体」という用語は、ソリッドステートメモリ、光媒体、および磁気媒体を含むがこれらには限定されないものと解釈されるべきである。
上記の詳細な説明の一部は、コンピュータメモリ内のデータビットに対する動作のアルゴリズムおよび記号表現で表して提示されている。これらのアルゴリズム記述および表現は、データ処理技術における業者によって作業の内容を他の当業者に最も効果的に伝えるために使用される方法である。アルゴリズムは、本明細書において、および一般に、望ましい結果に至る動作の自己矛盾のないシーケンスとみなされる。動作は、物理量の物理的操作を必要とする動作である。必ずしもそうとは限らないが、通常は、これらの量は、記憶、組合せ、比較およびその他の操作が可能な電気信号または磁気信号の形態をとる。主として一般的用法であるという理由でこれらの信号を、ビット、値、要素、シンボル、文字、項、数などと呼ぶことが時には好都合であることが実証されている。
ただし、これらおよび類似の用語のすべてが適切な物理量と関連付けられるべきであり、これらの量に適用される好都合な標識に過ぎないことを認識しておく必要がある。本開示は、コンピュータシステムのレジスタおよびメモリ内の物理(電子的)量として表されたデータを操作し、コンピュータシステムメモリまたはレジスタあるいはその他のそのような情報記憶システム内の物理量として同様に表される他のデータに変換する、コンピュータシステムまたは類似の電子コンピューティングデバイスのアクションおよびプロセスに言及している場合がある。
本開示は、本明細書の動作を行うための装置にも関する。この装置は、意図された目的のために特別に構築可能であり、またはコンピュータに記憶されたコンピュータプログラムによって選択的に作動または再構成される汎用コンピュータを含み得る。そのようなコンピュータプログラムは、これらに限定されないが、フロッピーディスク、光ディスク、CD-ROM、および磁気光ディスクを含む任意の種類のディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光カード、または、それぞれがコンピュータシステムバスに結合された、電子的命令を記憶するのに適した任意の種類の媒体などの、コンピュータ可読媒体に記憶することができる。
本明細書で示されているアルゴリズムおよびディスプレイは、いかなる特定のコンピュータまたはその他の装置にも本来的に関係するものではない。本明細書における教示によるプログラムとともに様々な汎用システムを使用することができ、またはこの方法を行うようにより特化された装置を構築することが好都合であることが実証可能である。様々なこれらのシステムの構造は、以下の説明に記載の通りである。また、本開示はいかなる特定のプログラミング言語も参照して説明していない。本明細書に記載の本開示の教示を実装するために様々なプログラミング言語が使用可能であることを理解されたい。
本開示は、本開示によるプロセスを実行するようにコンピュータシステム(またはその他の電子デバイス)をプログラムするために使用可能な命令が記憶された機械可読媒体を含み得る、コンピュータプログラム製品またはソフトウェアとして提供可能である。機械可読媒体は、機械(たとえばコンピュータ)による読み出しが可能な形態で情報を記憶するための任意の機構を含む。実施形態によっては、機械可読(たとえばコンピュータ可読)媒体は、読み出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリコンポーネントなどの機械(たとえばコンピュータ)可読記憶媒体を含む。
本明細書で使用されている「例」または「例示の」という用語は、例、事例または例示となることを意味している。本明細書で「例」または「例示の」として記載されているいずれの態様または設計も、必ずしも他の態様または設計よりも好ましいかまたは有利であるものと解釈されるべきではない。むしろ、「例」または「例示の」という用語の使用は本開示の概念を具体的に示すことが意図されている。本出願で使用されている「または」という用語は、排他的な「または」ではなく包含的な「または」を意味することが意図されている。すなわち、別に明記されていない限り、または文脈から明らかでない限り、「XがAまたはBを含む」とは、自然な包含的置換のいずれも意味することが意図されている。すなわち、XがAを含む、XがBを含む、またはXがAとBの両方を含む場合、これらの場合のいずれにおいても「XがAまたはBを含む」が満たされる。また、本出願および添付の特許請求の範囲で使用されている冠詞「a」および「an」は、別に明記されているか文脈から単数形を指していることが明らかでない限り、「1つまたは複数」を意味するものと一般的に解釈可能である。また、全体を通して「実装形態」または「一実装形態」または「実施形態」または「一実施形態」などという用語の使用は、その旨記載されていない限り同じ実装形態または実装形態を意味することが意図されていない。本明細書に記載の1つまたは複数の実装形態または実施形態は、特定の実装形態または実施形態に組み込まれてもよい。本明細書で使用されている「第1」、「第2」、「第3」、「第4」などの用語は、異なる要素を区別するための標識として意図されており、必ずしもその数字表示による順序付けの意味を有しない。
上記の明細書において、本開示の実施形態について本開示の特定の例示の実施形態を参照しながら説明した。以下の特許請求の範囲に記載されている本開示の実施形態のより広い趣旨および範囲から逸脱することなく、これらに様々な変更を加えることができることは明らかであろう。したがって、本明細書および図面は、制限的な意味ではなく例示的な意味で捉えられるべきである。