以下の詳細な説明では、本明細書の一部を形成する添付図面が参照され、添付図面には、特定の実施形態又は例が例示として示される。本開示から逸脱することなく、これらの態様を組み合わせてもよく、他の態様を利用してもよく、構造上の変更を行ってもよい。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではなく、本開示の範囲は、添付の「特許請求の範囲」及びそれらの均等物によって定義される。
通常、データ記憶デバイスは、データがデータ記憶デバイスから読み出されるときに発生する誤りを訂正するための誤り訂正能力を含む。例えば、前に説明したように、データがデータ記憶デバイスに書き込まれるとき、データは、誤り訂正符号(ECC)エンコーダ(例えば、LDPCエンコーダ)によって符号化され、パリティビットが生成される。パリティビットはデータと結合され、ECCコードワードとして記憶される。
ECCコードワードがデータ記憶デバイスから読み出されると、デコーダ(例えば、LDPCデコーダ)は、コードワードを復号し、存在し得る任意の誤りを訂正する。通常、LDPCデコーダは、データ記憶デバイス上で発生するランダム誤りを訂正するために使用される。例えば、LDPCデコーダは、特定のビット誤り率(BER)まで誤りを訂正する。
データ記憶デバイスは、RAID符号化/復号方式を組み込むこともできる。例えば、RAID符号化/復号方式は、第1のパリティ情報及び第2のパリティ情報とともに、複数の異なるソリッドステートドライブ(SSD)にわたって又は単一のSSD内の複数のメモリダイにわたってストライプでデータを分散させる。パリティ情報は、SSD又はメモリダイのうちの1つが失敗した場合、又は1つのフラッシュメモリユニット(FMU)のBERがLDPCデコーダが処理することができる最大BERを超える場合に、ストライプ内のデータの回復を可能にする。
前に説明したように、いくつかのデータ記憶デバイスは、初期復号プロセスに失敗した複数のFMUを訂正する能力を有するジョイントLDPC及びRAID復号方式を実装する。例えば、複数のFMUが初期復号動作に失敗した場合、ジョイント復号方式は、第1の失敗したFMUに対して実装され、ストライプのインデックスに基づく順序で各失敗したFMUに対して反復される。
ジョイント復号方式は、別個のRAID復号方式及び別個のLDPC復号方式と比較したとき、より多くの誤りを訂正する能力を有し得るが、ジョイント復号方式は欠点がないわけではない。例えば、複数のFMUが初期復号プロセスに失敗した場合、FMUのインデックスに基づいてジョイント復号方式が実行される。したがって、FMU2(ストライプ中のインデックス2に位置する)及びFMU4(ストライプ中のインデックス4に位置する)が初期復号プロセスに失敗した場合、ジョイント復号方式は、FMU2に対して実行され、その後にFMU4が続く。
しかしながら、ジョイント復号方式の初期パスがFMU2を復号又は訂正することに失敗した場合、別の繰り返し中にFMU2が正常に復号され得る可能性がある。例えば、ジョイント復号方式がFMU4を正常に復号した場合、FMU4中の訂正された情報は、FMU2中の誤りを訂正するために使用され得る。したがって、複数の復号プロセスが、同じ失敗したFMUに対して実行されることがあり、これは、復号プロセスのレイテンシを増加させる。
上記に対処するために、本開示は、データ記憶デバイスのためのECC順序付けシステムを説明する。一例では、ECC順序付けシステムは、データ記憶デバイスのECCシステムの一部であるか、又は別様でそれに関連付けられる。ECC順序付けシステムは、初期復号プロセスに失敗した2つ以上のFMUがジョイント復号方式を使用して復号されるべき順序又はスケジュールを決定する。一例では、ジョイント復号方式は、第1の復号方式(例えば、LDPC復号方式)と第2の復号方式(例えば、RAID復号方式)とを含む。
例えば、FMUは、第2の復号方式のストライプ(例えば、RAID又はXORストライプ)に関連付けられるか、又は別様で含まれる。2つ以上のFMUが初期復号プロセスに失敗した(例えば、FMUのBERが第1の復号方式の訂正能力を超える)とき、ECC順序付けシステムは、2つのFMUの1つ以上のメトリックに基づいて、FMUがジョイント復号方式を使用して復号される順序を決定する。順序が決定されると、ECCシステムは、決定された順序でFMUに対してジョイント復号方式を実行する。
一例では、スケジュールの順序が基づくメトリックは、各FMUのシンドローム重みである。別の例では、スケジュールの順序が基づくメトリックは、FMUの結合BERに少なくとも部分的に基づく。一例では、結合BERは、各FMUに関連付けられた1つ以上のソフトビットの品質及び/又はFMUの品質を表す。例えば、結合BERは、FMUが正常に復号される可能性を示す。したがって、FMUは、復号される可能性が最も高いものから復号される可能性が最も低いものへと順序付けられる。しかしながら、より多くのFMUが正常に復号されるにつれて、後続のFMUが復号される可能性がより高くなる。したがって、失敗したFMUを復号しようと試みる反復の繰り返しが低減又は排除される。
上記によれば、限定はしないが、データ記憶デバイスにおけるサービス品質を向上させる、失敗したFMUに対するジョイント復号繰り返しの数を低減することによって復号レイテンシを低減することと、データ記憶デバイスの有効誤り訂正能力を改善することと、を含む、多くの技術的利益が実現され得る。
これらの利点は、他の例とともに、図1~図7に関してより詳細に示され、説明される。
図1は、一例による、ホストデバイス105及びデータ記憶デバイス110を含むシステム100のブロック図である。一例では、ホストデバイス105は、プロセッサ115及びメモリ120(例えば、メインメモリ)を含む。メモリ120は、オペレーティングシステム125、カーネル130、及び/又はアプリケーション135を含むか、又は別様でそれらに関連付けられる。
プロセッサ115は、例えば、オペレーティングシステム125及び/又はアプリケーション135からの命令などの様々な命令を実行することができる。プロセッサ115は、マイクロコントローラ、デジタル信号プロセッサ(Digital Signal Processor、DSP)、特定用途向け集積回路(Application-Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)、ハードワイヤードロジック、アナログ回路、及び/又はそれらの様々な組み合わせなどの回路を含む。一例では、プロセッサ115は、システムオンチップ(System on a Chip、SoC)を含む。
一例では、メモリ120は、プロセッサ115によって使用又は実行されるデータを記憶するために、ホストデバイス105によって使用される。メモリ120に記憶されたデータは、通信インターフェース140を介してデータ記憶デバイス110によって提供される命令を含む。メモリ120に記憶されたデータはまた、オペレーティングシステム125及び/又は1つ以上のアプリケーション135からの命令を実行するために使用されるデータを含む。メモリ120は、単一のメモリであってもよいし、例えば、1つ以上の不揮発性メモリ、1つ以上の揮発性メモリ、又はそれらの組み合わせなどの複数のメモリを含んでもよい。
一例では、オペレーティングシステム125は、アプリケーション135及び/又はプロセッサ115によって実行される他のプロセスのための仮想アドレス空間を作成する。仮想アドレス空間は、メモリ120内のロケーションにマッピングする。オペレーティングシステム125はまた、カーネル130を含むか、又は別様にそれに関連付けられる。カーネル130は、ホストデバイス105の様々なリソース(例えば、メモリ割り振り)を管理し、読み出し要求及び書き込み要求などを処理するための命令を含む。
通信インターフェース140は、ホストデバイス105とデータ記憶デバイス110とを通信可能に結合する。通信インターフェース140は、シリアルアドバンストテクノロジーアタッチメント(Serial Advanced Technology Attachment、SATA)、PCIエクスプレス(PCI express、PCIe)バス、スモールコンピュータシステムインターフェース(Small Computer System Interface、SCSI)、シリアルアタッチドSCSI(Serial Attached SCSI、SAS)、イーサネット、ファイバーチャネル、又はWi-Fiであり得る。したがって、ホストデバイス105及びデータ記憶デバイス110は、物理的に同じ場所に配置される必要はなく、ローカルエリアネットワーク(Local Area Network、LAN)又はインターネットなどのワイドエリアネットワーク(Wide Area Network、WAN)などのネットワークを介して通信することができる。更に、ホストデバイス105は、不揮発性メモリエクスプレス(Non-Volatile Memory Express、NVMe)又は高度ホストコントローラインターフェース(Advanced Host Controller Interface、AHCI)などの論理インターフェース規格を使用してデータ記憶デバイス110とインターフェース接続することができる。
データ記憶デバイス110は、コントローラ150及びメモリデバイス155を含む。一例では、コントローラ150は、メモリデバイス155に通信可能に結合される。メモリデバイス155は、1つ以上のメモリダイ(例えば、第1のメモリダイ165及び第2のメモリダイ170)を含む。メモリダイが具体的に言及されるが、メモリデバイス155は、NANDフラッシュメモリセル及び/又はNORフラッシュメモリセルを含む、任意の不揮発性メモリデバイス、記憶デバイス、ストレージ要素、又はストレージ媒体を含み得る。
メモリセルは、固体(例えば、フラッシュ)メモリセルの形態をとることができ、1回プログラム可能、複数回プログラム可能、又は多数回プログラム可能であり得る。更に、メモリセルは、シングルレベルセル(single-level cell、SLC)、マルチレベルセル(multi-level cell、MLC)、トリプルレベルセル(triple-level cell、TLC)、クアッドレベルセル(quad-level cell、QLC)、ペンタレベルセル(penta-level cell、PLC)であってもよく、及び/又は任意の他のメモリ技術を使用してもよい。一例では、メモリセルは二次元構成で配置される。別の例では、メモリセルは、三次元構成で配置される。
一例では、データ記憶デバイス110は、ホストデバイス105に取り付けられるか、又はその中に埋め込まれる。別の例では、データ記憶デバイス110は、ホストデバイス105に通信可能に又は選択的に結合され、ホストデバイス105から取り外され得る外部デバイス又はポータブルデバイスとして実装される。更に別の例では、データ記憶デバイス110は、ネットワークアクセス可能なデータストレージシステム、ネットワーク接続ストレージシステム、クラウドデータストレージシステムなどの構成要素(例えば、ソリッドステートドライブ(SSD))である。
上述したように、データ記憶デバイス110のメモリデバイス155は、第1のメモリダイ165及び第2のメモリダイ170を含む。2つのメモリダイが示されているが、メモリデバイス155は、任意の数のメモリダイ(例えば、1つのメモリダイ、2つのメモリダイ、8つのメモリダイ、又は別の数のメモリダイ)を含み得る。
メモリデバイス155はまた、サポート回路を含む。一例では、サポート回路は、読み出し/書き込み回路160を含む。読み出し/書き込み回路160は、メモリデバイス155のメモリダイの動作をサポートする。読み出し/書き込み回路160は、単一の構成要素として示されているが、読み出し/書き込み回路160は、例えば、読み出し回路及び書き込み回路などの別個の構成要素に分割されてもよい。読み出し/書き込み回路160は、メモリデバイス155のメモリダイの外部にあってもよい。別の例では、メモリダイのうちの1つ以上は、他のメモリダイのいずれかに対する他の読み出し及び/又は書き込み動作とは独立して、1つの個々のメモリダイ内の記憶要素からデータを読み出し、及び/又は記憶要素にデータを書き込むように動作可能な対応する読み出し/書き込み回路160を含み得る。
一例では、第1のメモリダイ165及び第2のメモリダイ170のうちの1つ以上は、1つ以上のメモリブロックを含む。一例では、各メモリブロックは、1つ以上のメモリセルを含む。メモリセルのブロックは、物理的に一緒に消去可能な最小数のメモリセルである。一例では、並列性を高めるために、ブロックの各々は、より大きなブロック又はメタブロックで操作又は編成され得る。例えば、メモリの異なるダイからの1つのブロックは、メタブロックを形成するために一緒に論理的にリンクされ得る。
例えば、図2Aを参照すると、図2Aは、一例による、メモリデバイス200が複数のメモリブロックをどのように含むかを示す。例えば、メモリデバイス200(例えば、記憶要素、メモリダイ、不揮発性メモリデバイス)は、4つのプレーン又はサブアレイ(例えば、第1のプレーン205、第2のプレーン210、第3のプレーン215、及び第4のプレーン220)を含む。一例では、プレーンは、単一のメモリダイ上に統合される。別の例では、プレーンは、2つの異なるメモリダイ上に提供される(例えば、各メモリダイ上に2つのプレーン)。更に別の例では、プレーンは、4つの別個のメモリダイ上に設けられる。4つのプレーンが示され、説明されるが、メモリデバイス200は、任意の数のプレーン及び/又はメモリダイを有することができる。
一例では、各プレーンは、メモリセルを構成するメモリブロックに分割される。図2Aに示すように、長方形は、メモリブロック225、メモリブロック230、メモリブロック235、及びメモリブロック240などのメモリブロックを表す。メモリデバイス200の各プレーンには、数十又は数百のメモリブロックが存在し得る。一例では、各メモリブロックは消去の単位であり、消去ブロックと称されることもある。例えば、メモリブロック225、メモリブロック230、メモリブロック235、及びメモリブロック240は、一緒に消去される最小数のメモリセルを含む。
加えて、様々なメモリブロックは、メタブロックを形成するために、(例えば、コントローラ150(図1)内のテーブル、又は別様でコントローラ150によってアクセス可能なテーブルを使用して)論理的にリンクされるか、又は一緒にグループ化される。メタブロックは、単一のユニットとして書き込まれ、読み出され、及び/又は消去される。例えば、メモリブロック225、メモリブロック230、メモリブロック235、及びメモリブロック240は、第1のメタブロックを形成し、メモリブロック245、メモリブロック250、メモリブロック255、及びメモリブロック260は、第2のメタブロックを形成する。メタブロックを形成するために使用されるメモリブロックは、それぞれのプレーン内の同じ相対ロケーションに制限される必要はない。
一例では、各メモリブロックは、動作目的のために、メモリセルのページに分割される。例えば、図2Bを参照すると、図2Bは、一例による、メモリブロックが1つ以上のページをどのように含むかを示す。例えば、メモリブロック225、メモリブロック230、メモリブロック235、及びメモリブロック240のメモリセルは、N個の異なるページ(P0~PNとして示される)に分割される。図2Bには特定の数のページが示されているが、メモリブロックは、各メモリブロック内に任意の数のページのメモリセルを有することができる。
一例では、ページは、メモリブロック内のデータプログラミングの単位である。各ページは、一度にプログラム可能な最小量のデータを含む。一度に読み出すことができるデータの最小単位は、ページ未満であってもよい。例えば、各ページは、セグメント又はユニットに更に分割可能であり、各セグメントは、基本プログラミング動作として一度に書き込むことができる最小数のメモリセルを含む。メモリセルのセグメント又はユニットに記憶されたデータは、本明細書ではフラッシュメモリユニット(FMU)と称される。FMUは、ページ、ECCページ、コードワードであってもよく、又は別様で、基本プログラミング動作中に一度に書き込まれるデータの量、並びに/又は単一の符号化及び/若しくは復号動作中にECCシステム(例えば、ECCシステム185(図1))によって符号化及び/若しくは復号され得るデータの量を含んでもよい。
メタページ270は、メモリブロック225、メモリブロック230、メモリブロック235、及びメモリブロック240からの1つの物理ページから形成されるものとして図2Bに示されている。図示の例では、メタページ270は、4つのメモリブロックの各々にページP1を含む。しかしながら、メタページ270のページは、各メモリブロック内で同じ相対位置を有する必要はない。メタページ270は、メモリブロック内のプログラミングの最大単位であり得る。
図2A~図2Bに開示されるメモリブロックは、上述のように物理メモリセルのグループに関連するため、本明細書では物理メモリブロックと称される。本明細書で使用される場合、論理メモリブロックは、物理メモリブロックと同じサイズを有するように定義されたアドレス空間の仮想ユニットである。各論理メモリブロックは、ホストから受信されたデータに関連付けられた論理メモリブロックアドレス(logical memory block address、LBA)の範囲を含む。次いで、LBAは、データが物理的に記憶されるデータ記憶デバイス110内の1つ以上の物理メモリブロックにマッピングされる。
上述したように、各メモリブロックは、任意の数のメモリセルを含み得る。メモリブロックの設計、サイズ、及び編成は、各メモリダイに所望されるアーキテクチャ、設計、及び用途に依存し得る。一例では、メモリブロックは、複数のワード線及びビット線を共有するメモリセルの連続したセットを含む。
図2Cは、一例による、メモリブロックが複数のビット線275及びワード線280をどのように含むかを示す。例えば、図2Cに示されるように、メモリブロック225は、ビット線BL0~BLN(集合的にビット線275)を含み、Nはビット線の総数である。加えて、メモリブロック225は、ワード線WL0~WLN(集合的にワード線280)を含み、Nはワード線の総数である。一例では、複数のメモリブロックが同じビット線を共有することができる。
ワード線280は、シングルレベルセル(SLC)ワード線、マルチレベルセル(MLC)ワード線、トライレベルセル(TLC)ワード線、クアッドレベルセル(QLC)ワード線、ペンタレベルセル(PLC)ワード線などとして機能することができる。加えて、各メモリセルは、1つ以上の値を示す状態(例えば、フラッシュ構成における閾値電圧又は抵抗性メモリ構成における抵抗状態)にプログラム可能であり得る。
図2Cに示す例では、4つのメモリセルが直列に接続されてNANDストリングを形成している。4つのメモリセルが図示されているが、任意の数のメモリセル(例えば、16、32、64、128、256又は任意の他の数のメモリセル)が使用され得る。NANDストリングの一方の端子は、(選択ゲートドレイン線SGDに接続された)ドレイン選択ゲートを介して対応するビット線に接続され、NANDストリングの他方の端子は、(選択ゲートソース線SGSに接続された)ソース選択ゲートを介してソース線に接続される。更に、図2Cには8本のビット線が示されているが、任意の数のビット線を使用することができる。
再び図1を参照すると、前述のように、データ記憶デバイス110は、コントローラ150も含む。単一のコントローラ150が示され、説明されているが、データ記憶デバイス110は、複数のコントローラを含むことができる。かかる例では、第1のコントローラは、第1の動作又は動作のセットを実行し、第2のコントローラは、第2の動作又は動作のセットを実行する。一例では、動作の第1のセット及び動作の第2のセットは、同じメモリダイ上で実行される。他の例では、動作の第1のセットは、第1のメモリダイ又はメモリダイの第1のセット上で実行され、動作の第2のセットは、第2のメモリダイ又はメモリダイの第2のセット上で実行される。
コントローラ150は、バス、インターフェース、又は他の通信回路を介してメモリデバイス155に通信可能に結合される。一例では、通信回路は、コントローラ150がメモリデバイス155の第1のメモリダイ165及び/又は第2のメモリダイ170と通信することを可能にするための1つ以上のチャネルを含む。別の例では、通信回路は、コントローラ150がメモリデバイス155の第2のメモリダイ170とは独立して及び/又は並行して第1のメモリダイ165と通信することを可能にする複数の別個のチャネルを含む。
コントローラ150は、ホストデバイス105からデータ及び/又は命令を受信する。コントローラ150はまた、ホストデバイス105にデータを送信する。例えば、コントローラ150は、通信インターフェース140を介してホストデバイス105にデータを送信し、及び/又はホストデバイス105からデータを受信する。コントローラ150はまた、メモリデバイス155にデータ及び/又はコマンドを送信し、及び/又はメモリデバイス155からデータを受信する。
コントローラ150は、データ及び対応する書き込みコマンドをメモリデバイス155に送信して、メモリデバイス155に、メモリデバイス155の指定されたアドレスにデータを記憶させる。一例では、書き込みコマンドは、メモリデバイス155の一部分の物理アドレスを指定する。コントローラ150はまた、1つ以上のバックグラウンドスキャン動作、ガベージコレクション動作、及び/又はウェアレベリング動作に関連付けられたデータ及び/又はコマンドを送信する。
コントローラ150はまた、1つ以上の読み出しコマンドをメモリデバイス155に送信する。一例では、読み出しコマンドは、データが記憶されているメモリデバイス155の一部の物理アドレスを指定する。コントローラ150はまた、メモリデバイス及び/又はメモリデバイス155のメモリダイ上で、又はそれらによって実行されたプログラム/消去サイクル又は他のプログラミング動作の数を追跡する。
コントローラ150はまた、ECCシステム185及び/又はECC順序付けシステム180を含むか、又は別様でそれらに関連付けられる。一例では、ECCシステム185及び/又はECC順序付けシステム180は、他の構成要素/システムとともに使用するために設計されたパッケージ化された機能ハードウェアユニットである。別の例では、ECCシステム185及び/又はECC順序付けシステム180は、プロセッサ又は処理回路によって実行可能なプログラムコード(例えば、ソフトウェア又はファームウェア)の一部である。更に別の例では、ECCシステム185及び/又はECC順序付けシステム180は、他の構成要素及び/又はシステムとインターフェース接続する自己完結型ハードウェア及び/又はソフトウェア構成要素である。ECCシステム185及びECC順序付けシステム180は、コントローラ150の一部として示されているが、ECCシステム185及び/又はECC順序付けシステム180は、コントローラ150とは別個であってもよい。
一例では、ECCシステム185は、メモリデバイス155に記憶されるべきデータを受信し、コードワードを生成する。例えば、ECCシステム185は、第1の符号化方式を使用してデータを符号化するエンコーダを含む。一例では、第1の符号化方式は、リードソロモンエンコーダ、ボーズ・チョードリ・オッケンゲム(Bose Chaudhuri Hocquenghem、BCH)エンコーダ、低密度パリティ検査(LDPC)エンコーダ、ターボコードエンコーダ、1つ以上の他のECC符号化方式を符号化するように構成されたエンコーダ、又はそれらの任意の組み合わせなどのECC符号化方式である。
例えば、データが受信されると、コントローラ150のECCシステム185は、データを1つ以上のコードワードに符号化する。コードワードは、次いで、メモリデバイス155(又は別のロケーション)に記憶される。例えば、データが受信されると、データは、N個のデータワードに分割される。データの第1の部分は、第1のデータワードに対応し、N番目のデータワードは、データの最後のデータワードに対応する。ECCシステム185は、(データ及び関連するパリティビットを含む)第1のコードワードを生成するために第1のデータワードを符号化し、第2のコードワードを生成するために第2のデータワードを符号化する。これは全てのN個のデータワードに対して反復される。
更に、ECCシステム185は、第2の符号化方式に従ってデータを符号化するエンコーダを含む。一例では、第2の符号化方式は、スティープパリティデータを生成するRAID又はXOR符号化方式である。例えば、N個のデータワードに対応するコードワードが生成された(例えば、N個のコードワードをもたらす)場合、ECCシステム185は、第2の符号化方式を利用して、N個のコードワードの各々から複数のビットの複数の列に対応するストライプパリティデータを生成する。例えば、ECCシステム185は、N個のコードワードの各々の第1の部分を符号化することによって、第1のストライプコードワードに対応する第1のパリティデータを生成するように構成される。ECCシステム185は、N個のコードワードの各々の第2の部分を符号化することによって、第2のストライプコードワードを生成する。このプロセスは、コードワードの各部分に対して反復される。
ECCシステム185はまた、第1の復号方式を使用してデータを復号する第1のデコーダと、第2の復号方式を使用してデータを復号する第2のデコーダと、を含む。一例では、第1の復号方式はLDPC復号方式であり、第2の復号方式はRAID又はXOR復号方式である。一例では、第1の復号方式は、生成されたコードワードを復号するために使用され、第2の復号方式は、ストライプコードワードを復号するために使用される。
一例では、コードワードが復号されるとき、ECCシステム185は、コードワードが様々な誤りを含むと判定することができる。いくつかの例では、誤りの数は、第1の復号方式の訂正能力を超えることがある。別の例では、失敗したコードワードの数は、第1の復号方式及び/又は第2の復号方式の訂正能力を超えることがある。かかる例では、誤りを訂正するためにジョイント復号方式が使用される。一例では、ジョイント復号方式は、ECCシステム185によって検出された様々な誤りを訂正するために、第1の復号方式及び第2の復号方式を利用する。
図3Aは、一例による、パリティ情報360を形成するためにストライプ300内の複数のページがどのように組み合わされるかを示す。一例では、ストライプ300内のページは、第1の符号化方式を使用して符号化されたコードワード又はコードワードの一部と等価であるFMUである。
例えば、ストライプ300は、N個のページ、すなわち、ページ1 310、ページ2 320、ページ3 330、ページ4 340、及びページN350に対応するデータを含む。この例では、ページの各々は、RAID又はXORタイプの符号化方式を使用してパリティ情報360(XORページとして表される)を生成するために、(例えば、書き込み又は符号化動作中に)一緒にXORされる。
復号動作中、ECCシステム(例えば、ECCシステム185(図1))は、ストライプ300内のページのうちの2つが正常に復号されなかったと判定する。例えば、図3Bを参照すると、図3Bは、ストライプ300内のページ2 320及びページ4 340が復号プロセスに失敗したことを示す。一例では、失敗した復号プロセスはLDPC復号プロセスである。
図3Cは、一例による、ストライプ300のページ内の誤りを訂正するためにジョイント復号方式がどのように使用されるかを示す。例えば、ECCシステムが、ページ2 320及びページ4 340が復号プロセスに失敗したと判定したとき、及び/又は別様でページが訂正不可能であると判定したとき、ECCシステムはジョイント復号方式を実装する。例えば、図3Cに示されるように、ECCシステムは、ページ2 320が復号されるときに、LDPCデコーダ390に提供されるハードビットと、LDPCデコーダ390に提供される2つのソフトビットとを決定する。
一例では、ハードビット(図3CではHBとして表される)は、ページ2 320のコピー(例えば、訂正されていないコピー)である。第1のソフトビット(ソフトビットページ380又はSB1として表される)は、ページ2 320の自然ソフトビットページ(又はソフトビット表現)である。第2のソフトビット(SB2)は、ページ2 370のXOR表現である。
例えば、ページ2 370のXOR表現を生成するために、ECCシステムは、ページ1 310、ページ3 330、ページ4 340、ページN350を、データが書き込まれた/符号化されたときに生成されたパリティ情報360(例えば、XORページ)とXORする。ページ2 320、ページ2 370のXOR表現、及びソフトビットページ380は、訂正されたページ2 395を生成するために、LDPCデコーダ390に提供される。
一例では、ページ2 320が正常に復号された(例えば、訂正されたページ2 395をもたらした)とECCシステムが判定した場合、訂正されたページ2 395は、ページ4 340内の誤りを訂正するためにECCシステムによって使用される。このプロセスは、ストライプ内の各失敗ページに対して反復される。
しかしながら、いくつかの例では、ページ2 320は、初期繰り返し中に正常に復号されないことがある。したがって、ECCシステムは、同様の動作を使用してページ4 340を復号及び訂正しようと試みる。ページ4 340の復号及び訂正が成功した場合、ECCシステムは、現在訂正されているページ4を用いてページ2 320を復号及び訂正しようと試みる。
ジョイント復号方式の詳細な説明は、「ECC Decoding Using RAID-Type Parity」と題する米国特許第9,940,194号により詳細に記載されており、その開示全体は、参照によりその全体が本明細書に組み込まれる。
再び図1を参照すると、上記で簡単に説明したように、ECCシステム185は、ECC順序付けシステム180を含むか、又は別様でECC順序付けシステム180に関連付けられる。ECC順序付けシステム180は、各失敗したFMU又はページ(例えば、ページ2 320(図3B))に関連付けられた1つ以上のメトリックを決定し、1つ以上のメトリックに基づいて、ジョイント復号方式を使用してページが復号及び/又は訂正されるスケジュール又は順序を決定する。一例では、スケジュール又は順序は、FMUが復号され訂正される可能性に少なくとも部分的に基づく。
例えば、ECC順序付けシステム180が、ページ4 340及びページ2 320(図3B)に関連付けられた1つ以上のメトリックに基づいて、ページ2 320と比較して、ページ4 340がパリティ情報(例えば、XORページ)を使用して訂正される可能性がより高いと判定した場合である。したがって、ECC順序付けシステム180は、ページ2 320の前にページ4 340に対してジョイント復号方式を実行させる。
この例では、ページ4 340はジョイント復号方式によって訂正される。したがって、ここで訂正されたページ4を使用して、ページ2 320内の誤りを訂正することができる。ページ4 340が訂正されたため、ページ2 320もジョイント復号方式によって訂正される可能性が増加する。
1つ以上のFMUが訂正可能であるか否かを判定するために複数の繰り返しが必要とされ得る現在のソリューションと比較すると、FMUの順序が成功の尤度に基づくため、本開示に関連付けられた復号動作のレイテンシは低減される。したがって、ページ4 340がジョイント復号方式を使用して復号可能及び/又は訂正可能でない場合、(例えば、ページ4 340が訂正されなかったので)ページ2 320を試行し、訂正する必要がないことがある。しかしながら、ジョイント復号方式がページ4 340の誤りを訂正することに失敗した場合でも、ジョイント復号方式は依然としてページ2 320に対して実行され得ることが企図される。
一例では、メトリックは、FMUに関連付けられたシンドローム重みである。シンドローム重みは、FMUの基礎となるビット誤り率(BER)の推定値である。例えば、シンドローム重みは、ECCシステム185によって訂正可能な誤りの数を識別する。したがって、ジョイント復号方式が様々な失敗したFMUに適用されるべき順序を決定するとき、ECC順序付けシステム180は、各失敗したFMUのシンドローム重みを決定し、最も低いシンドローム重みから最も高いシンドローム重みまでFMUを順序付ける。次いで、ECCシステム180は、決定された順序で、失敗したFMUに対してジョイント復号方式を開始する。
別の例では、メトリックは、FMUの結合BERに少なくとも部分的に基づく。一例では、FMUの結合BERは、復号されたFMUの品質と、ストライプ内の全てのFMUから生成されたソフトビット情報(例えば、ページ2 370又はSB2(図3C))の品質とに少なくとも部分的に基づく。
例えば、図3Cに戻って参照すると、ページ2 320に関連付けられた結合BERは、ページ2 320をページ2 370のXOR表現と結合することによって決定される。結合BERが各FMUについて決定されると、ECC順序付けシステム180は、結合BERを使用してジョイント復号動作を開始する。
一例では、失敗したFMUの結合BERは、失敗したFMUのシンドローム重みを測定することによって決定される。シンドローム重みが決定されると、失敗したFMUのBERXORが決定される。一例では、失敗したFMUのBERXORは、式BERXOR=1/2・(1-(1-2・BER)t-1)を使用して計算され、ここで、tは、XORページ内の失敗の数である。
BERXORが決定されたとき、ECC順序付けシステム180は、失敗したFMUのBERを推定するためにシンドローム重みを使用する。例えば、失敗したFMUのシンドローム重みは、σ=1/2Q-1(BER1)であるシグマ(「σ」)のガウス分布仮定を使用してBERのガウスシグマを導出するために使用され、ここで
である。一例では、失敗したFMUの推定BERは、BER1として表される。上記の式において、失敗したFMUは、STD=σの正常セル電圧分布を有すると仮定される。
一例では、失敗したFMUのソフトビットページは、失敗したFMUに関連付けられたハードビットレベルの周りの±デルタ(「Δ」)を読み出すことによって生成される。一例では、デルタは、ソフトビット領域内のセルの数及びソフトビット領域外のセルの数を示す。例えば、デルタは、信頼できるビットの数及び信頼できないビットの数を示す。したがって、BER1=α・BERHIGH+(1-α)・BERLOW=Q(1/2σ)となる。
BERが推定されるとき、アルファ(「α」)は、シンドローム重み及びガウス分布から計算される。一例では、αは、以下の式を使用して計算される。
αが計算されている場合、BERHIGH及びBERLOWは、式
を使用して計算される。
次に、ECC順序付けシステムは、以下の式を使用して、α、BERLOW、及びBERXORから結合BERを計算する。
上述したように、各失敗したFMUの結合BERが決定されると、ECC順序付けシステムは、結合BERを使用して失敗したFMUを順序付ける。次いで、ECCシステム180は、指定された順序で、失敗したFMUに対してジョイント復号方式を開始する。
図4Aは、一例による、パリティ情報460を形成するためにストライプ400内の複数のページがどのように組み合わされるかを示す。一例では、ストライプ400内のページは、図3Aに関して示され説明されたストライプ300内のページと同様の方法で組み合わされる。例えば、ストライプ400は、N個のページ、すなわち、ページ1 410、ページ2 420、ページ3 430、ページ4 440、及びページN450に対応するデータを含む。ページの各々は、パリティ情報460を生成するために(例えば、書き込み又は符号化動作中に)一緒にXORされる。
図3Bに関して図示及び説明した例と同様に、復号動作中、ECCシステム(例えば、ECCシステム185(図1))は、ストライプ400内のページのうちの2つが初期復号動作に失敗したこと、及び/又は第1の復号方式若しくは第2の復号方式を使用して訂正不可能であることを決定する。例えば、図4Bを参照すると、図4Bは、ページ2 420及びページ4 440が復号動作に失敗したことを示す。
ECCシステムが、ストライプ内のページが初期復号動作に失敗したと判断すると、ECC順序付けシステムは、各失敗ページに関連付けられた1つ以上のメトリックを生成するか、又は別様で決定する。例えば、前述したように、ECC順序付けシステムは、各失敗ページに関連付けられたBERを決定する。別の例では、ECC順序付けシステムは、各失敗ページに関連付けられた結合BERを決定する。
各失敗ページに関連付けられた1つ以上のメトリックが決定されると、ECC順序付けシステムは、各失敗ページに関連付けられた1つ以上のメトリックに基づいてスケジュール415を生成する。例えば、ECC順序付けシステムは、ページ4 440に関連付けられたメトリックN425を、ページ2 420に関連付けられたメトリックMと比較し、比較に基づいて、ページ4 440が、ページ2 420と比較したとき、正常に復号されるより高い可能性を有すると判定する。したがって、失敗ページに対してジョイント復号方式が実行されると、ページ4 440はページ2 420の前に復号されることになる。
図4Cは、一例による、決定されたメトリックに基づいてストライプ400のページ内の誤りを訂正するためにジョイント復号方式がどのように使用されるかを示す。例えば、ECCシステムが、ページ2 420及びページ4 440が初期復号プロセスに失敗したと判定し、かつ/又は別様でページが訂正不可能であると判定したとき、ECCシステムは、スケジュール415によって決定された順序でジョイント復号方式を実装する。
例えば、ページ4 440は、正常に復号される可能性がより高いため、ECCシステムは、ページ4 420の訂正されていないコピーをLDPCデコーダ490に与える。ECCシステムはまた、第1のソフトビット(ソフトビットページ480又はSB1として表される)をLDPCデコーダ490に提供する。前に説明したように、ソフトビットページ480は、ページ4 400のメモリ(又はソフトビット表現)から読み出された自然ソフトビットページである。ECCシステムはまた、第2のソフトビットページ(SB2)をLDPCデコーダ490に提供する。一例では、第2のソフトビットページは、ページ4 470のXOR表現である。
LDPCがページ4 440の復号及び/又は訂正に成功した場合、プロセスはページ2 420で反復される。しかしながら、いくつかの例では、ページ4 440が正常に復号されなかった場合、ECCシステムは、ページ2 420を復号及び/又は訂正することを試みない。他の例では、ページ4 440が訂正されなかった場合でも、ECCシステムは、ページ2 420を復号及び/又は訂正しようと試みる。しかしながら、かかる例では、ECCシステムは、ページ4 440を2回目に復号しようとしない。例えば、ECCシステムは、ECCシステムが各失敗ページを1回復号しようと試みる「ワンショット」ジョイント復号方式を実装する。
図5は、一例による、ストライプの2つ以上のFMUに対してジョイント復号方式を実行する方法500を示す。一例では、方法500は、データ記憶デバイスのECCシステム及び/又はECC順序付けシステムによって実行される。例えば、方法500は、図1に関して図示及び説明したECCシステム185及び/又はECC順序付けシステム180によって実行される。更に、一例では、方法500は、図4Aに関して示され説明されたストライプ400のページに対して実行される。
方法500は、ECCシステムが、初期復号プロセスに失敗したストライプ内の2つ以上のFMUを識別する(510)ときに開始する。例えば、ECCシステムは、第1の復号方式(例えば、LDPC復号方式)によって実行された初期復号プロセスに失敗した2つ以上のFMUを識別する。別の例では、ECCシステムは、閾値を超えるBERを有するか、そうでなければ誤りを含む及び/又は訂正不可能であると識別された2つ以上のFMUを識別する。
2つ以上の失敗したFMUを識別することに少なくとも部分的に基づいて、ECCシステムは、各失敗したFMUに関連付けられた1つ以上のメトリックを決定する(520)。一例では、1つ以上のメトリックは、各失敗したFMUに関連付けられたシンドローム重み又はBERを示す。別の例では、1つ以上のメトリックは、各失敗したFMUに関連付けられた結合BERを示す。一例では、結合BERは、本明細書で説明される様々な動作を使用して決定される。
各失敗したFMUに関連付けられた1つ以上のメトリックが決定されると、ECCシステムは、復号スケジュールを発生するか、別様で、決定されたメトリック(複数可)に基づいて失敗したFMUを順序付ける(530)。一例では、各失敗したFMUに関連付けられた1つ以上のメトリックは、失敗したFMUがジョイント復号方式中に正常に復号される尤度又は確率を示す。前に説明したように、一例では、ジョイント復号方式は、第1の復号方式(例えば、LDPC復号方式)と第2の復号方式(例えば、RAID又はXOR復号方式)とを利用する。
ECCシステムはまた、決定された復号スケジュールに基づいて、失敗したFMUに対してジョイント復号方式を開始する(540)。例えば、1つ以上のメトリックが、第1のFMUが、第2のFMUと比較して、ジョイント復号方式を使用して正常に復号される可能性が高いことを示す場合、ECCシステムは、ジョイント復号方式を第1のFMUに対して実行させる。
失敗したFMUに対してジョイント復号方式が実行された場合、ECCシステムは、FMUが正常に復号されたかどうかを判定する(550)。ECCシステムが、FMUが正常に復号されなかったと判定した場合、ECCシステムは、現在の復号動作を終了させる(560)。例えば、失敗したFMUは、復号される可能性が最も高いものから復号される可能性が最も低いものへと順序付けられるため、ジョイント復号方式が失敗したFMUを復号することに失敗すると、他の失敗したFMUは復号される可能性がより低いため、それらを復号しようと試みることを続ける必要はない。しかしながら、他の例では、FMUが正常に復号されない場合でも、方法500は、他の失敗したFMUに対して反復される。
しかしながら、ECCシステムが、FMUが正常に復号されたと判定した(550)場合、ECCシステムはまた、復号スケジュールが、初期復号プロセスに失敗した追加のFMUを含むかどうかを判定する(570)。ECCシステムが、スケジュール内に復号する必要がある他のFMUがあると判定した場合、ECCシステムは、スケジュール内の次のFMUに対してジョイント復号方式を開始し(540)、プロセスが反復される。一例では、新たに復号されたFMUは、後続のジョイント復号動作(複数可)において使用可能である。
しかしながら、ECCシステムが、復号スケジュール内にもはや失敗したFMUが存在しないと判定した(570)場合、ECCシステムは、現在の復号動作を終了させる(560)。
図6~図7は、本明細書で説明される様々な特徴とともに使用され得るか、又は別様でそれらを実装し得る例示的な記憶デバイスを説明する。例えば、図6~図7に関して図示及び説明される記憶デバイスは、図1に関して図示及び説明されるシステム及び構成要素と同様の様々なシステム及び構成要素を含み得る。例えば、図7に関して示され、説明されるコントローラ722は、図1のコントローラ150と同様であり得る。同様に、メモリダイ708は、図1の第1のメモリダイ165及び/又は第2のメモリダイ170と同様であり得る。
図6は、一例による三次元(3D)積層不揮発性メモリを含む記憶デバイス600の斜視図である。この例では、記憶デバイス600は基板610を含む。メモリセルのブロックは、基板610上又はその上方に含まれる。ブロックは、第1のブロック(BLK0 620)及び第2のブロック(BLK1 630)を含む。各ブロックは、メモリセル(例えば、不揮発性メモリ素子)で構成される。基板610はまた、第1のブロック及び第2のブロックによって使用されるサポート回路を有する周辺領域640を含む。
基板610はまた、ブロックの下に回路を、回路からの信号を搬送するために導電性経路にパターニングされた1つ以上の下部金属層とともに担持する。一例では、ブロックは、記憶デバイス600の中間領域650に形成される。記憶デバイスはまた、上部領域660を含む。上部領域660は、回路からの信号を搬送するために導電路にパターン化された1つ以上の上部金属層を含む。メモリセルの各ブロックは、メモリセルの積層領域を含む。一例では、スタックの交互のレベルは、ワード線を表す。2つのブロックが示されているが、追加のブロックが使用され、x方向及び/又はy方向に延在してもよい。
一例では、x方向における基板610の平面の長さは、ワード線又は制御ゲート線のための信号経路が延在する方向(例えば、ワード線又はドレイン端選択ゲート(drain-end select gate、SGD)線方向)を表し、y方向における基板610の平面の幅は、ビット線のための信号経路が延在する方向(例えば、ビット線方向)を表す。z方向は、記憶デバイス600の高さを表す。
図7は、一例による記憶デバイス700の機能ブロック図である。一例では、記憶デバイス700は、図6に関して示され説明された3D積層不揮発性記憶デバイス600と同様である。一例では、図7に示される構成要素は電気回路である。一例では、記憶デバイス700は、1つ以上のメモリダイ705を含む。各メモリダイ705は、メモリセルの三次元メモリ構造710(例えば、メモリセルの3Dアレイ)、制御回路715、及び読み出し/書き込み回路720を含む。別の例では、メモリセルの二次元アレイが使用され得る。メモリ構造710は、第1のデコーダ725(例えば、行デコーダ)を使用してワード線によってアドレス指定可能であり、第2のデコーダ730(例えば、列デコーダ)を使用してビット線によってアドレス指定可能である。読み出し/書き込み回路720はまた、メモリセルのページを並列に読み取り又はプログラムできるようにするSB1、SB2、...、SBp(例えば、感知回路)を含む複数の感知ブロック735を含み得る。感知ブロック735は、ビット線ドライバを含むことができる。
一例では、コントローラ740は、1つ以上のメモリダイ705と同じ記憶デバイス700に含まれる。別の例では、コントローラ740は、メモリダイ705に接合されたダイ上に形成され、その場合、各メモリダイ705は、それ自体のコントローラ740を有することができる。更に別の例では、コントローラダイは、メモリダイ705の全てを制御する。単一のコントローラ740が示されているが、記憶デバイス700は、複数のコントローラを含むことができ、各コントローラは、本明細書で説明される異なる動作を担当する。
コマンド及びデータは、データバス750を使用してホスト745とコントローラ740との間で転送される。加えて、コマンド及びデータは、ライン755を経由してコントローラ740とメモリダイ705のうちの1つ以上との間で転送される。一例では、メモリダイ705は、ライン755に接続する入力及び/又は出力(I/O)ピンのセットを含む。
メモリ構造710はまた、メモリセルの1つ以上のアレイを含む。メモリセルは、三次元アレイ又は二次元アレイに配置される。メモリ構造710は、シリコン基板の上方に配置された活性領域を有するメモリセルのアレイの1つ以上の物理レベル上に形成された任意のタイプの不揮発性メモリを含む。メモリ構造710は、関連する回路が基板の上方にあるか基板内にあるかにかかわらず、メモリセルの動作に関連付けられた回路を有する不揮発性メモリデバイス内にあり得る。
制御回路715は、読み出し/書き込み回路720とともに動作して、メモリ構造710に対してメモリ動作(例えば、消去、プログラム、読み出しなど)を実行する。制御回路715は、レジスタ、ROMヒューズ、並びにベース電圧及び他のパラメータなどのデフォルト値を記憶するための他のデバイスを含み得る。
制御回路715はまた、状態マシン760と、オンチップアドレスデコーダ765と、電力制御モジュールと、を含む。状態マシン760は、プログラミングのためにメモリブロックを選択するなど、様々なメモリ動作のチップレベル制御を提供する。状態マシン760は、ソフトウェアによってプログラム可能である。別の例では、状態マシン760は、ソフトウェアを使用せず、ハードウェア(例えば、電気回路)で完全に実装される。
オンチップアドレスデコーダ765は、ホスト745及び/又はコントローラ740によって使用されるアドレスと、第1のデコーダ725及び第2のデコーダ730によって使用されるハードウェアアドレスとの間のアドレスインターフェースを提供する。電力制御モジュール770は、メモリ動作中にワード線及びビット線に供給される電力及び電圧を制御する。電力制御モジュール770は、3D構成のワード線層、選択トランジスタ(例えば、SGS及びSGDトランジスタ)、及びソース線のためのドライバを含み得る。電力制御モジュール770は、電圧を生成するための1つ以上のチャージポンプを含み得る。
制御回路715、状態マシン760、オンチップアドレスデコーダ765、第1のデコーダ725、第2のデコーダ730、電力制御モジュール770、感知ブロック735、読み出し/書き込み回路720、及び/又はコントローラ740は、本明細書に記載される動作の一部又は全部を実行する1つ以上の制御回路及び/又は管理回路と見なされ得る。
一例では、コントローラ740は、オンチップ又はオフチップであり得る電気回路である。更に、コントローラ740は、1つ以上のプロセッサ780、ROM785、RAM790、メモリインターフェース795、及びホストインターフェース797を含むことができ、これらは全て相互接続することができる。一例では、1つ以上のプロセッサ780は、制御回路の一例である。他の例は、1つ以上の機能を実行するように設計された状態マシン又は他のカスタム回路を使用することができる。ROM785及びRAM790などのデバイスは、命令のセットなどのコードを含むことができる。プロセッサ780のうちの1つ以上は、本明細書で説明する機能の一部又は全部を提供するための命令のセットを実行するように動作可能であり得る。
代替的又は追加的に、プロセッサ780のうちの1つ以上は、1つ以上のワード線に接続されたメモリセルの予約領域など、メモリ構造710内のメモリデバイスからコードにアクセスすることができる。ROM785、RAM790、及びプロセッサ780のうちの1つ以上と通信するメモリインターフェース795は、コントローラ740とメモリダイ705との間の電気的インターフェースを提供する電気回路であり得る。例えば、メモリインターフェース795は、信号のフォーマット又はタイミングを変更し、バッファを提供し、サージから隔離し、I/Oをラッチすることなどができる。
1つ以上のプロセッサ780は、メモリインターフェース795を使用して、制御回路715、又はメモリダイ705の任意の他の構成要素にコマンドを発行することができる。ROM785、RAM790、及び1つ以上のプロセッサ780と通信するホストインターフェース797は、コントローラ740とホスト745との間の電気的インターフェースを提供する電気回路であり得る。例えば、ホストインターフェース797は、信号のフォーマット又はタイミングを変更し、バッファを提供し、サージから隔離し、I/Oをラッチすることなどができる。ホスト745からのコマンド及びデータは、ホストインターフェース797を介してコントローラ740によって受信される。ホスト745に送信されるデータは、データバス750を使用して送信され得る。
メモリ構造710内の複数のメモリ素子は、それらが直列に接続されるように、又は各素子が個々にアクセス可能であるように構成され得る。非限定的な例として、NAND構成のフラッシュメモリデバイス(例えば、NANDフラッシュメモリ)は、典型的には、直列に接続されたメモリ素子を含む。NANDストリングは、直列接続されたメモリセル及び選択ゲートトランジスタのセットの一例である。
NANDフラッシュメモリアレイはまた、アレイが複数のNANDストリングを含むように構成され得る。一例では、NANDストリングは、単一のビット線を共有する複数のメモリセルを含み、グループとしてアクセスされる。あるいは、メモリ素子は、各メモリ素子が個々にアクセス可能であるように構成されてもよい(例えば、NORメモリアレイ)。NAND及びNORメモリ構成は例であり、メモリセルは他の構成を有してもよい。
メモリセルは、単一のメモリデバイスレベルにおいて、複数の行及び/又は列などの順序付けられたアレイで配置することができる。しかしながら、メモリ素子は、不規則又は非直交構成で、又はアレイと見なされない構造で配列されてもよい。
一例では、3Dメモリ構造は、複数の2Dメモリデバイスレベルのスタックとして垂直に配置することができる。別の非限定的な例として、3Dメモリアレイは、各列が複数のメモリセルを有する複数の垂直列(例えば、y方向など、基板の主面に実質的に垂直に延在する列)として配置することができる。垂直列は、メモリセルの二次元配置で配置され得、メモリセルは、複数の垂直に積み重ねられたメモリプレーン上にある。三次元のメモリ素子の他の構成がまた、3Dメモリ配列を構築することができる。
別の例では、3D NANDメモリアレイにおいて、メモリ素子は、複数の水平メモリデバイスレベルにわたって横断する垂直NANDストリングを形成するために一緒に結合され得る。他の3D構成が、企図され得、いくつかのNANDストリングは、メモリ素子を単一のメモリレベルで含み、他のストリングは、複数のメモリレベルにわたるメモリ素子を含む。3Dメモリ配列はまた、NOR構成及びReRAM構成で設計されてもよい。
上記に基づいて、本開示の例は、データ記憶デバイスの誤り符号訂正システムによって実行された初期復号動作に失敗した、データ記憶デバイスに関連付けられた2つ以上のフラッシュメモリユニット(FMU)を識別することと、2つ以上のFMUの各々に関連付けられたメトリックを決定することと、2つ以上のFMUの各々に関連付けられたメトリックに少なくとも部分的に基づいて、2つ以上のFMUのための復号スケジュールを生成することと、ジョイント復号方式を使用して、生成された復号スケジュールに基づいて、2つ以上のFMUのうちの第1のFMUに対してジョイント復号動作を実行することと、を含みジョイント復号方式は、第1の復号方式及び第2の復号方式を含む、方法を説明する。一例では、第1の復号方式は、低密度パリティ検査(LDPC)復号方式である。一例では、第2の復号方式は、独立ダイの冗長アレイ(RAID)復号方式である。一例では、本方法はまた、2つ以上のFMUのうちの第1のFMUに対するジョイント復号動作が成功したかどうかを判定することと、2つ以上のFMUのうちの第1のFMUに対するジョイント復号動作が成功したと判定したことに少なくとも部分的に基づいて、2つ以上のFMUのうちの第2のFMUに対してジョイント復号動作を実行することと、を含む。一例では、本方法はまた、2つ以上のFMUのうちの第1のFMUに対するジョイント復号動作が成功したかどうかを判定することと、2つ以上のFMUのうちの第1のFMUに対するジョイント復号動作が不成功であったと判定したことに少なくとも部分的に基づいて、ジョイント復号動作を終了することと、を含む。一例では、メトリックは、2つ以上のFMUのうちの各FMUに関連付けられたシンドローム重みである。一例では、メトリックは、2つ以上のFMUのうちの各FMUに関連付けられた結合ビット誤り率(BER)である。一例では、2つ以上のFMUのうちの各FMUは、ストライプに関連付けられる。
他の例は、コントローラと、コントローラに関連付けられた誤り訂正符号(ECC)システムと、を備えるデータ記憶デバイスを説明し、ECCシステムは、ストライプに関連付けられたフラッシュメモリユニット(FMU)に対して初期復号動作を実行し、任意のFMUが初期復号動作に失敗したかどうかを判定し、2つ以上のFMUが初期復号動作に失敗したと判定したことに少なくとも部分的に基づいて、2つ以上のFMUの各々に関連付けられたメトリックを決定し、2つ以上のFMUの各々に関連付けられたメトリックに少なくとも部分的に基づいて、2つ以上のFMUの各々がジョイント復号方式であって、ジョイント復号方式は、第1の復号方式及び第2の復号方式を含む、ジョイント復号方式を使用してジョイント復号動作を受ける順序を決定し、決定された順序で2つ以上のFMUに対してジョイント復号動作を実行する、ように動作可能である。一例では、ECCシステムは、2つ以上のFMUのうちの第1のFMUに対するジョイント復号動作が成功したかどうかを判定し、2つ以上のFMUのうちの第1のFMUに対するジョイント復号動作が成功したという判定に少なくとも部分的に基づいて、2つ以上のFMUのうちの第2のFMUに対してジョイント復号動作を実行する、ように更に動作可能である。一例では、ECCシステムは、2つ以上のFMUのうちの第1のFMUに対するジョイント復号動作が成功したかどうかを判定し、2つ以上のFMUのうちの第1のFMUに対するジョイント復号動作が不成功であったという判定に少なくとも部分的に基づいて、ジョイント復号動作を終了するし、ように更に動作可能である。一例では、第1の復号方式は、低密度パリティ検査(LDPC)復号方式である。一例では、第2の復号方式は、独立ダイの冗長アレイ(RAID)復号方式である。一例では、メトリックは、2つ以上のFMUのうちの各FMUに関連付けられたシンドローム重みである。一例では、メトリックは、2つ以上のFMUのうちの各FMUに関連付けられた結合ビット誤り率(BER)である。
例はまた、制御手段と、制御手段に関連付けられた誤り訂正手段と、を備えるデータ記憶デバイスを説明し、誤り訂正手段は、データ記憶デバイスに関連付けられた2つ以上のメモリ手段が初期復号動作に失敗したかどうかを判定し、2つ以上のメモリ手段が初期復号動作に失敗したという判定に少なくとも部分的に基づいて、2つ以上のメモリ手段のうちの第1のメモリ手段に関連付けられた第1のメトリックを決定し、2つ以上のメモリ手段のうちの第2のメモリ手段に関連付けられた第2のメトリックを決定し、第1のメトリックと第2のメトリックとを比較するし、第1のメトリックと第2のメトリックとを比較したことに少なくとも部分的に基づいて、復号スケジュールを生成し、復号スケジュールに少なくとも部分的に基づいて、第1のメモリ手段及び第2のメモリ手段のうちの少なくとも1つに対してジョイント復号方式を使用してジョイント復号動作を実行する、ように動作可能であり、ジョイント復号方式は、第1の復号方式及び第2の復号方式を含む。一例では、誤り訂正手段は、第1のメモリ手段及び第2のメモリ手段のうちの少なくとも1つに対するジョイント復号動作が成功したかどうかを判定し、第1のメモリ手段及び第2のメモリ手段のうちの少なくとも1つに対するジョイント復号動作が成功したという判定に少なくとも部分的に基づいて、別のメモリ手段に対してジョイント復号動作を実行する、ように更に動作可能である。一例では、誤り訂正手段は、第1のメモリ手段及び第2のメモリ手段のうちの少なくとも1つに対するジョイント復号動作が成功したかどうかを判定し、第1のメモリ手段及び第2のメモリ手段のうちの少なくとも1つに対するジョイント復号動作が不成功であったという判定に少なくとも部分的に基づいて、ジョイント復号動作を終了する、ように更に動作可能である。一例では、第1の復号方式は低密度パリティ検査(LDPC)復号方式であり、第2の復号方式は独立ダイの冗長アレイ(RAID)復号方式である。一例では、メトリックは、2つ以上の失敗したメモリ手段の各々に関連付けられた結合ビット誤り率(BER)である。
当業者は、本明細書で説明される技術が、単一の特定のメモリ構造に限定されず、本明細書で説明され、当業者によって理解されるような技術の精神及び範囲内の多くの関連するメモリ構造を網羅することを認識するであろう。
本開示において提供される1つ以上の態様の説明及び例示は、本開示の範囲を限定又は制限することを決して意図していない。本開示で提供される態様、例、及び詳細は、所有を伝え、他者が特許請求される開示の最良の形態を作成及び使用することを可能にするのに十分であると考えられる。
特許請求される開示は、本開示において提供される任意の態様、例、又は詳細に限定されるものとして解釈されるべきではない。組み合わせて、又は別々に示され、説明されるかどうかにかかわらず、様々な特徴(構造的及び方法論的の両方)は、特定の特徴のセットを有する実施形態を生成するために、選択的に再配置され、含まれ、又は省略されることが意図される。本開示の説明及び例示を提供してきたが、当業者は、特許請求される開示のより広い範囲から逸脱しない、本開示において具現化される一般的な発明概念のより広い態様の精神の範囲内にある変形、修正、及び代替の態様を想定することができる。
本開示の態様は、本開示の実施形態による方法、装置、システム、及びコンピュータプログラム製品の概略フローチャート図及び/又は概略ブロック図を参照して上述されている。概略的なフローチャート図及び/又は概略的なブロック図の各ブロック、並びに概略的なフローチャート図及び/又は概略的なブロック図におけるブロックの組み合わせは、コンピュータプログラム命令によって実装することができると理解される。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサに提供されて、プロセッサ又は他のプログラマブルデータ処理装置を介して実行する命令が、概略的なフローチャート図及び/又は概略的なブロック図のブロックで指定された機能及び/又は作用を実装するための手段を作成するように、マシンを生成してもよい。
「第1の」、「第2の」など、指定を使用する、本明細書における要素への言及は、一般に、それらの要素の量又は順序を限定しない。むしろ、これらの指定は、2つ以上の要素、又は要素の事例を区別する方法として使用され得る。したがって、第1の要素及び第2の要素への言及は、2つの要素のみが使用され得ること、又は、第1の要素が、第2の要素に先行することを意味しない。加えて、特に明記しない限り、要素のセットは、1つ以上の要素を含み得る。
説明又は請求項で使用される「A、B、又はCのうちの少なくとも1つ」、又は「A、B、C、又はそれらの任意の組み合わせ」の形式の用語は、「A又はB又はC又はこれらの要素の任意の組み合わせ」を意味する。例えば、この用語は、A、又はB、又はC、又はA及びB、又はA及びC、又はA及びB及びC、又は2A、又は2B、又は2C、又は2A及びBなどを含み得る。更なる例として、「A、B、又はCのうちの少なくとも1つ」は、A、B、C、A-B、A-C、B-C、及びA-B-C、並びに同じメンバーのうちの複数を包含することが意図される。同様に、「A、B、及びCのうちの少なくとも1つ」は、A、B、C、A-B、A-C、B-C、及びA-B-C、並びに同じメンバーのうちの複数を包含することが意図される。
同様に、本明細書で使用される場合、「及び/又は」とリンクされた項目のリストを指す句は、項目の任意の組み合わせを指す。例として、「A及び/又はB」は、Aのみ、Bのみ、又はA及びBの組み合わせを包含することが意図されている。別の例として、「A、B、及び/又はC」は、Aのみ、Bのみ、Cのみ、A及びBの組み合わせ、A及びCの組み合わせ、B及びCの組み合わせ、又はA、B、及びCの組み合わせを包含することが意図される。