(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-12
(45)【発行日】2022-10-20
(54)【発明の名称】階層デコーダを使用したエラー訂正
(51)【国際特許分類】
G06F 11/10 20060101AFI20221013BHJP
【FI】
G06F11/10 660
(21)【出願番号】P 2020557901
(86)(22)【出願日】2019-04-01
(86)【国際出願番号】 US2019025161
(87)【国際公開番号】W WO2019204017
(87)【国際公開日】2019-10-24
【審査請求日】2020-11-20
(32)【優先日】2018-04-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー,インク.
(74)【代理人】
【識別番号】100121083
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】アマート パオロ
(72)【発明者】
【氏名】スフォルジン マルコ
【審査官】金田 孝之
(56)【参考文献】
【文献】米国特許出願公開第2009/0276689(US,A1)
【文献】米国特許出願公開第2008/0040647(US,A1)
【文献】米国特許出願公開第2017/0163287(US,A1)
【文献】特開平8-16487(JP,A)
【文献】米国特許第7043679(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/10
(57)【特許請求の範囲】
【請求項1】
メモリアレイと、
第1のデコーダ
と、
を備えたメモリデバイスであって、
前記第1のデコーダは、
前記メモリアレイから入力データを受信することと、
前記入力データがエラーを含むと判定することと、
前記エラーを訂正するとの決定に応答して、前記入力データに対
するエラー検出に関連
付けられた複数の動作を実行すること
であって、前記複数の動作は、前記入力データが前記エラーを含むとの判定に基づいて前記エラーを訂正して出力データを生成する、ことと、
前記エラーを訂正しないとの決定に応答して、前記入力データを前記出力データとして通過させることと、
前記入力データを処理したことに基づき、前記メモリデバイスに結合されたコントローラによってホスティングされる第2のデコーダに
、前記出力データ、有効性フラグ
、及び複数のパリティビットを提供すること
であって、前記有効性フラグの第1の値は、前記出力データにおいて前記エラーが訂正されていることを表し、前記有効性フラグの第2の値は、前記出力データにおいて前記エラーが訂正されていないことを表す、ことと、
を行うように構成され
る、メモリデバイス。
【請求項2】
前記複数のパリティビットが、前記エラー検出を行うために使用される、請求項
1に記載のメモリデバイス。
【請求項3】
前記第1のデコーダがエラー訂正コードデコーダであり、前記第2のデコーダがエラー訂正コードデコーダである、請求項
1に記載のメモリデバイス。
【請求項4】
前記第1のデコーダが、
前記入力データがエラーを含まないと判定することと、
前記入力データが前記エラーを含まないと判定したことに基づいて
、前記入力データを前記出力データとして提供することと
、
を行うようにさらに構成される、請求項1に記載のメモリデバイス。
【請求項5】
メモリデバイスに結合されたコントローラであって、
高精度デコーディング(AD)デコーダであって、
前記メモリデバイスによってホスティングされる第1の高速デコーディング(FD)デコーダから
、データ、有効性フラグ
、及びパリティビットを受信すること
であって、前記有効性フラグの第1の値は、前記データにおいてエラーが訂正されていることを表し、前記有効性フラグの第2の値は、前記データにおいて前記エラーが訂正されていないことを表す、ことと、
前記有効性フラグが
前記第1の値であると判定したことに応答して、前記データ及び前記パリティビットを第2のFDデコーダに提供することと、
前記有効性フラグが
前記第2の値であると判定したことに応答して、
前記パリティビットを使用して前記データに対してエラー訂正動作を実行
し、かつ、
訂正された前記データ及び前記パリティビットを前記第2のFDデコーダに提供することと
、
を行うように構成され
たADデコーダと、
前記パリティビットを使用して前記データに対してエラー訂正を実行するように構成された前記第2のFDデコーダと
、
を含
むコントローラ。
【請求項6】
前記ADデコーダが、
前記有効性フラグが前記第1の値を含む場合に
、訂正済みデータを受信することと、
前記有効性フラグが前記第2の値を含む場合に
、生データを受信することと
、
を行うようにさらに構成される、請求項
5に記載のコントローラ。
【請求項7】
前記ADデコーダがインナーデコーダであり、前記第2のFDデコーダがアウターデコーダである、請求項
5または6に記載のコントローラ。
【請求項8】
データ及びパリティビットを記憶するように構成されたメモリアレイと、
前記データ及び前記パリティビットを受信するように構成された高速デコーディング(FD)デコーダ
と、
を含む装置であって、
前記FDデコーダは、
前記データ及び前記パリティビットからシンドロームを生成するように構成されたシンドローム計算ユニットと、
エラー訂正ユニットであって、
前記データを訂正するとの決定に基づき、前記シンドローム及び前記パリティビットを使用して前記データに対してエラー訂正コードを実行して
、訂正済みデータを生成することと、
前記データ及び前記訂正済みデータのうちの少なくとも一方を
、コントローラによってホスティングされる高精度デコーディング(AD)デコーダに提供することと
、
を行うように構成され
たエラー訂正ユニットと、
誤訂正チェッカユニットであって、
前記エラー訂正ユニット
が前記訂正済みデータを前記ADデコーダに提供する
ことに基づいて
、第1の値を有する有効性フラグを生成
し、前記エラー訂正ユニットが前記データを前記ADデコーダに提供することに基づいて、第2の値を有する有効性フラグを生成することと、
前記有効性フラグを前記ADデコーダに提供することと
、
を行うように構成され
た誤訂正チェッカユニットと
、
を含む
、装置。
【請求項9】
前記誤訂正チェッカユニットが、前記シンドローム計算ユニットによって提供された前記シンドロームに基づいて前記有効性フラグを生成するようにさらに構成される、請求項
8に記載の装置。
【請求項10】
前記誤訂正チェッカユニットが
、前記エラー訂正ユニットが前記データまたは前記訂正済みデータのうちの前記少なくとも一方を前記ADデコーダに提供したかどうかを記述するメッセージを
、前記エラー訂正ユニットから受信するようにさらに構成される、請求項
8または9に記載の装置。
【請求項11】
高速デコーディング(FD)デコーダを使用してエラー訂正コードを実行するための方法であって、
ページがエラーを含むか否かの判定に基づき、メモリデバイスによってホスティングされる前記FDデコーダを使用して
前記ページに対して第1のエラー訂正コードを実行す
るか否かを決定することと、
前記第1のエラー訂正
コードを実行する
との決定に基づき、
前記ページ及びパリティビットから訂正済みページを生成
し、
第1の有効性フラグを生成
し、かつ、
前記第1の有効性フラグ及び前記訂正済みページをマイクロコントローラに提供することと、
前記第1のエラー訂正コードを実行しない
との決定に基づき、
第2の有効性フラグを生成
し、かつ、
前記第2の有効性フラグ、前記ページ及び前記パリティビットを前記マイクロコントローラに提供することと
、
を含
む方法。
【請求項12】
前記第2の有効性フラグを受信したことに基づき、前記マイクロコントローラによってホスティングされる高精度デコーディング(AD)デコーダを使用して
、前記パリティビットを使用して前記ページに対して第2のエラー訂正コードを実行すること
と、
前記第1の有効性フラグを受信したことに基づき、前記ページに対して第2のエラー訂正コードを実行することを差し控えること
と、
を
さらに含む、請求項
11に記載の方法。
【請求項13】
前記FDデコーダが
、代数デコーディング及び組み合わせ論理のうちの一方を利用する、請求項
11または12に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般にメモリに関連し、より具体的には、エラー訂正に関連する装置及び方法に関する。
【背景技術】
【0002】
メモリデバイスは、典型的には、コンピュータまたは他の電子デバイスにおける内部の半導体集積回路として提供される。揮発性及び不揮発性メモリを含む、多くの異なる種類のメモリが存在する。揮発性メモリは、そのデータを維持するために電力を必要とする場合があり、中でも、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、及び同期ダイナミックランダムアクセスメモリ(SDRAM)を含む。不揮発性メモリは、電力供給されていないときに記憶されたデータを保持することによって永続的データを提供することができ、中でも、NANDフラッシュメモリ、NORフラッシュメモリ、リードオンリーメモリ(ROM)、電気的消去可能なプログラマブルROM(EEPROM)、消去可能なプログラマブルROM(EPROM)、相変化ランダムアクセスメモリ(PCRAM)などの抵抗可変メモリ、抵抗性ランダムアクセスメモリ(RRAM)、及び磁気抵抗性ランダムアクセスメモリ(MRAM)を含むことができる。
【0003】
メモリは、広範囲な電気的用途のために揮発性及び不揮発性データストレージとしても利用される。不揮発性メモリは、例えば、パーソナルコンピュータ、ポータブルメモリスティック、デジタルカメラ、携帯電話、MP3プレイヤーなどのポータブルミュージックプレイヤー、ムービープレイヤー及び他の電子デバイスにおいて使用され得る。メモリセルは、アレイに配列される場合があり、アレイは、メモリデバイスにおいて使用される。
【0004】
様々なコンピューティングシステムは、一組の命令(例えば、プログラム、アプリケーションなど)の実行に関連してアクセスされるメモリ(例えば、メモリシステム)に結合された処理リソースを含む。メモリシステムは、エラー訂正コード(ECC)を使用して、データのエラーを検出及び訂正することができる。
【図面の簡単な説明】
【0005】
【
図1】本開示の複数の実施形態を実装することが可能なメモリデバイス及びコントローラを含むメモリシステムのブロック図である。
【
図2】本開示の複数の実施形態にしたがったエラーを訂正することが可能な高速デコーディング(FD)デコーダのブロック図である。
【
図3】本開示の複数の実施形態にしたがったFDデコーダ及び高精度デコーディング(AD)デコーダを利用したエラー訂正に関連するフローチャートを示す。
【
図4】本開示の複数の実施形態にしたがったコードワードの例を示す。
【発明を実施するための形態】
【0006】
本開示は、エラー訂正に関連する装置及び方法を含む。例示的な方法は、メモリアレイから入力データを受信すること、入力データに対してエラー検出に関連する複数の動作を実行すること、ならびに入力データを処理したことに基づき、メモリデバイスに結合されたコントローラによってホスティングされる第2のデコーダに出力データ、有効化フラグ及び複数のパリティビットを提供することを含むことができる。
【0007】
本開示の複数の実施形態は、メモリデバイスを使用して記憶されたデータに対してエラー訂正を実行するために改良されたエラー訂正コード(ECC)を提供することができる。例えば、いくつかの従来のECCは、メッセージを復旧することができるようにメッセージに冗長データまたはパリティデータを追加することを含む。データの送信、記憶及び/または取得中、複数のエラーの指示を受けてデータを回復させることができる。
【0008】
ストレージは、コンピュータシステムにおいて性能のボトルネックになっている。データを記憶し、ストレージからデータを取得する機能は、計算及び動作を実行するコンピュータシステムの機能を制限する原因であった。
【0009】
NANDベースのストレージソリューションにより、ハードドライブのレイテンシは10倍以上改善されたが、ストレージには依然としてレイテンシの遅れがある。相変化メモリ(PCM)、磁気抵抗性ランダムアクセスメモリ(MRAM)、抵抗性ランダムアクセスメモリ(ReRAM)及び/または3D Xpointメモリなどの新興メモリ(EM)技術は、他のメモリ技術に比べてメモリ関連のレイテンシを改善し得る。EMは、システム(例えば、コンピューティングシステム)の他の部分と同じ速さのデータストレージを提供することができる。EMは、コンピューティングシステムの他の構成要素のレイテンシに匹敵するレイテンシを有するデータストレージを提供することができる。ストレージ用途の信頼性目標に対処するために、EMは、エラーを訂正し、EMをホスティングするデバイスの低レイテンシ性能を維持することが可能であるECCを利用してもよい。
【0010】
ストレージ用途は、メモリ用途とは異なり、可変のアクセスレイテンシを許容できることを考えると、低レイテンシのECCデコーダを利用することが有益である場合がある。いくつかの例では、低レイテンシは、複数のナノ秒の範囲内のレイテンシを含み得る。他の例では、より高いレイテンシは、複数のマイクロ秒の範囲内のレイテンシであり得る。
【0011】
訂正機能が高く、かつ低レイテンシのECCデコーダは、ECC連結方式及び階層デコーダを利用することによって実現することができる。本明細書で使用される場合、階層デコーダは、データのエラーを訂正するための複数のデコーダの使用を説明することができる。階層デコーダは、高速デコーディング(FD)デコーダ及び高精度デコーディング(AD)デコーダの使用を含むことができる。いくつかの例では、階層デコーディング方式は、FDデコーダを利用することができ、必要に応じてADデコーダにおいて使用されるより強力なECCを用いることができる。
【0012】
FDデコーダにおいて用いられるECCは、FDデコーダが障害を高確率でフラグ通知することが可能である場合に使用することができる。FDデコーダにおいて使用されたECCがフラグを立てずに失敗した場合、情報ブロックは、デコードイベントが不正確に終わったものとして確定される。いくつかの例では、フラグを立てない障害が、FDデコーダにおいて非常に低い確率で発生し得る。障害を識別するためにFDデコーダによって生成されたフラグは、FDデコーダの低レイテンシに不利にならないように非常に短い時間で生成され得る。
【0013】
複数の実施形態では、階層コードアーキテクチャは、メモリデバイスに組み込まれたFDデコーダ及びストレージコントローラ内に実装されたADデコーダを利用する。効果的かつ効率的なソリューションを持つために、FDデコーダアーキテクチャを
図1に示したような階層方式での使用に適合させることができる。
【0014】
本開示の以下の詳細な説明では、本明細書の一部を構成する添付図面への参照がなされる。これらの図面では、本開示の複数の実施形態がどのように実施され得るかが一例として示されている。これらの実施形態は、当業者が本開示の実施形態を実施することができるように十分詳細に説明されており、本開示の範囲から逸脱することなく、他の実施形態が利用されてもよいこと、ならびにプロセスの変更、電気的変更及び/または構造的変更がなされてもよいことが理解されよう。本明細書で使用される場合、指示子「N」は、そのように指示された複数の特定の特徴を本開示の複数の実施形態と共に含めることができることを示す。
【0015】
本明細書で使用される場合、「幾つかの(a number of)」何かは、そのようなもののうちの1つ以上を指すことができる。例えば、幾つかのメモリデバイスは、メモリデバイスのうちの1つ以上を指すことができる。「複数(plurality)」の何かは、2つ以上を意図している。加えて、特に図面の参照符号に関して本明細書で使用されるような「N」などの指示子は、そのように指示された幾つかの特定の特徴を本開示の幾つかの実施形態と共に含めることができることを示す。
【0016】
本明細書の図面は、最初の一桁または複数桁が描写図面の番号に対応し、残りの桁が図面における要素または構成要素を識別するという付番規則に従う。異なる図面の間の類似の要素または構成要素は、類似の数字を使用することによって識別され得る。理解されるであろうが、本明細書の様々な実施形態に示した要素を追加、交換及び/または削除することによって本開示の複数の追加の実施形態を提供することができる。加えて、図面に提供された要素の比率及び相対的スケールは、本開示の様々な実施形態を例示することを意図し、限定的な意味で使用されることを意図しない。
【0017】
図1は、本開示の複数の実施形態を実装することが可能なメモリデバイス104及びコントローラ102を含むメモリシステム100のブロック図である。メモリシステム100はまた、一般にFEエンコーダ106と呼ばれる複数の高速エンコーディング(FE)エンコーダ106-1及び106-2、ならびに高精度エンコーディング(AE)エンコーダ108を含むことができる。メモリシステム100はまた、一般にFDデコーダ110と呼ばれる複数のFDデコーダ110-1及び110-2、ならびにADデコーダ112を含むことができる。メモリシステム100は、メモリアレイ114をさらに含むことができる。
【0018】
本明細書で使用される場合、「装置」は、限定されることはないが、回路もしくは回路網、1つもしくは複数のダイ、1つもしくは複数のモジュール、1つもしくは複数のデバイス、または1つもしくは複数のシステムなどの、様々な構造または構造の組み合わせを指すことができる。例えば、メモリシステム100、コントローラ102、メモリデバイス104、FEエンコーダ106、AEエンコーダ108、FDデコーダ110、ADデコーダ112及びメモリアレイ114は、個別的または集合的に「装置」と呼ばれる場合がある。
【0019】
この例では、コンピューティングシステムは、メモリシステム100に結合されたコントローラ102に結合されたホストを含む。コンピューティングシステムは、システムの中でも、ラップトップコンピュータ、パーソナルコンピュータ、デジタルカメラ、デジタル録音及び再生デバイス、携帯電話、PDA、メモリカードリーダ、インタフェースハブ、センサ、モノのインターネット(IoT)対応デバイスとすることができ、ホストは、(例えば、コントローラ102を介して)メモリシステム100にアクセス可能な複数の処理リソース(例えば、1つ以上のプロセッサ)を含むことができる。ホストは、オペレーティングシステム(OS)、及び/または(例えば、メモリシステム100からコントローラ102を介して)そのホストにロード可能である様々なアプリケーションの実行を担当してもよい。
【0020】
コントローラ102は、メモリトランザクション要求を(例えば、ロードコマンド及びストアコマンドとそれぞれ呼ばれる場合がある、リードコマンド及びライトコマンドの形態で)ホストから受信してもよい。コントローラ102は、好適なプロトコルを利用して、例えば、バスなどの物理インタフェースを含むことができる複数のインタフェースを通じてホストとメモリシステム100との間でコマンド及び/またはデータを転送することができる。このようなプロトコルは、カスタムもしくは独自仕様であってもよく、またはインタフェースは、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)、Gen-Z、CCIXなどの、標準化されたプロトコルを利用してもよい。コントローラ102は、ハードウェア、ファームウェアもしくはソフトウェア、またはこれら3つの任意の組み合わせの形態をとった制御回路を含むことができる。一例として、コントローラ102は、ステートマシン、シーケンサ、及び/またはプリント回路基板に結合された特定用途向け集積回路(ASIC)の形態で実装され得るいくつかの他のタイプの制御回路を含むことができる。複数の実施形態では、コントローラ102は、(例えば、システム・オン・チップ(SOC)構成において)ホストと同じ場所に配置されてもよい。また、コントローラ102は、メモリシステム100と同じ場所に配置されてもよい。
【0021】
メモリシステム100は、メモリセルの複数のアレイ(例えば、バンク)、及び(例えば、アレイからデータを読み取り、データをアレイに書き込むための)アレイ(複数可)へのアクセスに関連する、対応するサポート回路(例えば、アドレス回路、I/O回路、制御回路、リード/ライト回路など)をそれぞれが含むことができる、複数の物理メモリ「チップ」またはダイを含むことができる。一例として、メモリシステム100は、複数のDRAMデバイス、SRAMデバイス、PCRAMデバイス、RRAMデバイス、FeRAM、相変化メモリ、3DXポイント及び/またはフラッシュメモリデバイスを含むことができる。複数の実施形態では、メモリシステム100は、コンピューティングシステム用のメインメモリとして機能することができる。
【0022】
FDデコーダ110は、FDコードを実施することができる。FDコードは、ある期間でエラーを訂正することができる。期間は、複数のナノ秒を含むことができる。FDコード及びさらにはFDデコーダ110は、多くとも所定量のエラーを訂正することができる。例えば、FDデコーダ110は、メモリアレイ114から取得された所与のデータのページにおいて1~5個のエラーを訂正することができる。FDデコーダ110は、代数デコーディング方式を実装することができる。すなわち、FDデコーダ110は、反復デコーディングではなく代数デコーディングを利用することができる。FDデコーダ110は、組み合わせ論理を利用して代数デコーディングを実装することができる。いくつかの例では、FDデコーダ110は、低レイテンシを維持しつつ、不正確なデコーディングデータが確率的に10-5未満でデータをデコードすることができる。
【0023】
ADデコーダ112は、ADコードを実施することができる。ADコードは、ある期間でエラーを訂正することができる。期間は、複数のマイクロ秒を含むことができる。所定の期間は、FDデコーダ110とADデコーダ112とで別にすることができる。例えば、FDデコーダ110は、所定の期間内で、エラーを訂正すべきかどうかを決定することができ、及び/または、エラーを訂正することができる。ADデコーダ112は、上記所定の期間よりも長い期間で、エラーを訂正すべきかどうかを決定することができ、及び/または、エラーを訂正することができる。
【0024】
ADコード及びさらにはADデコーダ112は、所定量を超えるエラーを訂正することができる。例えば、ADデコーダ112は、メモリアレイ114から取得された所与のデータのページにおいて6個以上のエラーを訂正することができる。例えば、ADデコーダ112は、数百個のエラーを訂正することができる。ADデコーダ112は、反復プロセスを実施することができる。反復プロセスは、順序論理を利用して実施することができる。
【0025】
ADデコーダ112、及びFDデコーダ110のうちの少なくとも1つは、異なるデバイス及び/または装置内に存在することができる。例えば、ADデコーダ112は、FDデコーダ110-2がメモリデバイス104内に存在すると共に、コントローラ102内に存在することができる。いくつかの実施形態では、コントローラ102は、マイクロコントローラ(uC)とすることができる。
【0026】
FDデコーダ110-2は、有効性フラグを利用してADデコーダ112を起動することができる。すなわち、ADデコーダ112は、有効性フラグを受信したことに応答して、かつ/または有効性フラグの値に応答して、データのエラーを訂正するようにADコードを実施すべきかどうかを決定することができる。FDデコーダ110-2は、FDデコーダ110-2が、メモリアレイ114から取得されたデータのエラーを訂正したか、それとも訂正しなかったかに基づいて、有効性フラグを起動することができる。起動された有効性フラグは、FDデコーダ110-2がエラーを訂正したことまたはエラーが存在しないことを識別するために所定の値を含む幾つかのビットを表すことができる。起動された有効性フラグは、ADデコーダ112によるデータ処理を禁止することができる。
【0027】
いくつかの例では、メモリアレイに記憶されたデータはまた、エンコードすることができる。データは、FEエンコーダ106及びAEエンコーダ108のうちの一方を利用してエンコードすることができる。例えば、データは、同じデバイス(例えば、コントローラ102)内に存在するFEエンコーダ106-1及びAEエンコーダ108を利用してエンコードすることができる。データはまた、異なるデバイス内に存在するFEデコーダ106-2及びAEエンコーダ108を利用してエンコードすることができる。FEエンコーダ106-2がメモリデバイス104によってホスティングされると共に、AEエンコーダ108がコントローラ102によってホスティングされることが可能である。
【0028】
いくつかの実施形態では、データ及び/またはパリティビットは、メモリアレイ114からページで取得することができる。いくつかの例では、ページはコードワードを含む。本明細書で使用される場合、パリティビットは、データがエラーを含むかどうかを判定するために使用可能であるビットについて説明する。パリティビットはまた、エラーを識別する、かつ/またはエラーを訂正するために使用することができる。
【0029】
データ及び/またはパリティビットは、FDデコーダ110-2に提供することができる。例えば、コントローラ102は、メモリアレイ114からFDデコーダ110-2へのデータ及び/またはパリティビットの転送を調整することができる。FDデコーダ110-2は、パリティビットを利用して、エラーがデータに存在するかどうか、及び/またはエラーを訂正するかどうかを決定することができる。FDデコーダ110-2は、エラーが訂正されたかどうか、またはエラーが訂正されなかったかどうかに基づいて有効性フラグを生成することができる。
【0030】
FDデコーダ110-2は、データ、パリティビット及び/または有効性フラグをADデコーダ112に提供することができる。ADデコーダ112は、有効性フラグの値に基づいてデータに対してエラー訂正コード(例えば、ADコード)を実行すべきかどうかを決定することができる。例えば、ADデコーダ112は、第1の値を含む有効性フラグを受信したことに応答してデータのエラーを訂正することができる。ADデコーダ112は、第2の値を含む有効性フラグを受信したことに応答してエラーの訂正を控えることができる。FDデコーダ110-2は、データの幾つかのエラーを訂正したことに応答して、アクティブ状態の有効性フラグを生成することができる。アクティブ状態の有効性フラグは論理「1」のビットとすることができ、非アクティブ状態の有効性フラグは論理「0」のビットとすることができる。いくつかの例では、アクティブ状態の有効性フラグは論理「0」のビットとすることができ、非アクティブ状態の有効性フラグは論理「1」のビットとすることができる。
【0031】
ADデコーダ112は、非アクティブ状態の有効性フラグを受信したことに応答してエラーを訂正することができる。すなわち、ADデコーダ112は、非アクティブ状態の有効性フラグを受信したことに応答して受信データにエラーが存在するかどうかを判定することができる。ADデコーダ112は、エラーが存在すると判定したことに応答してエラーを訂正することができる。
【0032】
ADデコーダ112がパリティビットを使用してデータのエラーを訂正する場合、ADデコーダ112は、さらなるエラー訂正のために訂正済みデータをFDデコーダ110-1に提供することができる。いくつかの例では、ADデコーダ112は、FDデコーダ110-1によるさらなる処理を伴わずに要求元装置にデータを提供することができる。
【0033】
他の例では、ADデコーダ112は、アクティブ状態の有効性フラグを受信したことに応答してデータに対してエラー訂正を実行せずに入力データを出力データとして提供することができる。すなわち、ADデコーダ112は、FDデコーダ110-2によって訂正されたデータを受信したことに応答してデータ及び/またはパリティビットをFDデコーダ110-1及び/または要求元装置に渡すことができる。
【0034】
いくつかの例では、ADデコーダ112は、パリティビットを受信せずにFDデコーダ110-2からデータ及び有効性フラグを受信することができる。ADデコーダ112は、データにエラーが存在するかどうかを判定することができる。データにエラーが存在すると判定したことに応答して、ADデコーダ112及び/またはコントローラ102は、メモリデバイス104にパリティビットを要求することができる。例えば、ADデコーダ112は、リードリトライコマンドを使用してパリティビットを要求することができる。ADデコーダ112及び/またはコントローラ102は、リードリトライコマンドを使用してメモリデバイス104にパリティビットを要求することができる。
【0035】
ADデコーダ112は、要求されたパリティビットを使用してエラーを訂正する。要求されたパリティビットは、FDデコーダ110-2から受信されてもよく、かつ/またはFDデコーダ110-2を用いずに受信されてもよい。いくつかの例では、FDデコーダ110-2は、1本以上の専用のパリティビット線を使用してパリティビットを提供することができる。
【0036】
FDデコーダ110-1は、ADデコーダ112からデータを受信することができ、データのエラーを訂正することができる。例えば、FDデコーダ110-1は、ADデコーダ112によって提供されたデータがエラーを含むかどうかを判定することができる。データがエラーを含むと判定したことに応答して、FDデコーダ110-1はエラーを訂正することができる。
【0037】
図2は、本開示の複数の実施形態にしたがったエラーを訂正することが可能なFDデコーダ210のブロック図である。FDデコーダ210は、シンドローム計算ユニット227、エラー訂正ユニット228及び誤訂正チェッカユニット229を含むことができる。
【0038】
いくつかの実施形態では、シンドローム計算ユニット227は、エラー訂正ユニット228及び/または誤訂正チェッカユニット229と通信することができる。誤訂正チェッカユニット229も、エラー訂正ユニット228と通信することができる。
【0039】
FDデコーダ210は、メモリアレイからデータ220及びパリティビット226を受信することができる。FDデコーダ210は、シンドローム計算ユニット227にてデータ220を受信することができる。FDデコーダ210は、専用のパリティビット線を介してコントローラ及び/またはコントローラの装置にパリティビット226を提供することができる。
【0040】
いくつかの例では、FDデコーダ210は、データが訂正されるかデータが訂正されない(例えば、生データ)かに関わらず、パリティビット226を提供することができる。他の例では、FDデコーダ210は、有効性フラグ224が非アクティブ状態(例えば、無効)である場合にデータを提供することができる。FDデコーダ210はまた、要求時にパリティビット226を提供することができる。例えば、FDデコーダ210は、有効性フラグ224の値に関わらず、要求時にパリティビット226を提供してもよい。
【0041】
シンドローム計算ユニット227は、データ220及びパリティビット226からシンドロームを生成することができる。シンドロームは、データ220にエラーがあるかどうかを判定するために使用可能であるベクトルとすることができる。例えば、シンドローム計算ユニット227は、受信した1つ以上のコードワードからシンドロームを生成することができる。シンドロームは、エラー訂正ユニット228及び/または誤訂正チェッカユニット229に提供することができる。
【0042】
エラー訂正ユニット228は、データ220がエラーを含むかどうかを判定するためにシンドロームを利用することができる。エラー訂正ユニット228はまた、ある量のエラーがデータ220に存在することを判定するためにシンドロームを使用することができる。データ220のエラーの量が所定の閾値よりも少ない場合、エラー訂正ユニット228はエラーを訂正することができる。データ220のエラーの量が所定の閾値よりも多い場合、エラー訂正ユニット228はエラーを訂正することを差し控えても良い。このようにして、エラー訂正ユニット228は、訂正済みデータまたは生データを生成することができる。エラー訂正ユニットによって提供されたデータは、データ222、訂正済みデータ222及び/または生データ222として参照されてもよい。FDデコーダ210は、コントローラ及び/またはコントローラによってホスティングされるADデコーダにデータ222を提供することができる。いくつかの例では、エラー訂正ユニット228は、エラーがデータ222において訂正されたかどうかを誤訂正チェッカユニット229に知らせるために、誤訂正チェッカユニット229にメッセージを提供することができる。
【0043】
誤訂正チェッカユニット229は、エラー訂正ユニット228から受信したシンドローム及び/またはメッセージを使用して、エラーがデータ222において訂正されたかどうかを判定することができる。エラーがデータ222において訂正されたかどうかに基づき、エラー訂正ユニット228は有効性フラグ224を生成することができる。データ220のエラーに対する訂正をデータ222が含む場合、誤訂正チェッカユニット229は、アクティブ状態の有効性フラグ224を生成することができる。データ222が訂正を含まない場合、誤訂正チェッカユニット229は、非アクティブ状態の有効性フラグ224を生成することができる。誤訂正チェッカユニット229は、コントローラ及び/またはコントローラによってホスティングされるADデコーダに有効性フラグ224を提供することができる。
【0044】
いくつかの例では、FDデコーダ210は、データ222が訂正を含むかどうかに関わらず、データ222、有効性フラグ224及びパリティビット226をコントローラに提供することができる。他の例では、FDデコーダ210は、データ222が訂正を含むかどうかに関わらず、データ222及び有効性フラグ224をコントローラに提供することができる。FDデコーダ210は、データ222が訂正を含まない場合、パリティビット226をコントローラに提供することができる。
【0045】
図3は、本開示の複数の実施形態にしたがったFDデコーダ及びADデコーダを利用したエラー訂正に関連するフローチャート330を示す。
図3は、アウターエンコーダ306、インナーエンコーダ308、メモリデバイス304、インナーデコーダ312及びアウターデコーダ310を含む。
図3は、アウターFDコードを使用した直列コード連結を示す。
【0046】
アウターエンコーダ306はFEエンコーダとすることができ、インナーエンコーダ308はAEエンコーダとすることができる。インナーデコーダ312はADデコーダとすることができ、アウターデコーダ310はFDデコーダとすることができる。図示されていないが、メモリデバイス304は、FDデコーダを含むことができる。インナーデコーダ312及びアウターデコーダ310は、コントローラによってホスティングすることができる。いくつかの例では、アウターエンコーダ306及びインナーエンコーダ308は、コントローラによってホスティングされる。
【0047】
メモリデバイス304によってホスティングされるFDデコーダによって生成された有効性フラグ及びデータは、インナーデコーダ312及び/またはアウターデコーダ310にデータを提供するかどうかを決定するために使用することができる。例えば、メモリデバイス304によってホスティングされるFDデコーダは、データが未訂正(例えば、生)であることを示す論理「0」などの所定の値を有する有効性フラグを生成したことに応答してインナーデコーダ312に生データを提供することができる。メモリデバイス304によってホスティングされるFDデコーダは、データが訂正されていることを示す論理「1」などの所定の値を有する有効性フラグを生成したことに応答してインナーデコーダ312に訂正済みデータを提供することができる。
【0048】
アウターエンコーダ306は、データ(例えば、生データ)の小さいチャンクをエンコードして、高速コードワードを生成することができる。インナーエンコーダ308を使用して高速コードワードをエンコードして、高精度コードワードを生成することができる。高精度コードワードは、高精度コードと呼ぶことができる。高精度コードは、系統的コードとすることができる。すなわち、高精度コードは、データとパリティビットとを分離することができる。
【0049】
デコーディング段階では、インナーデコーダ312は、高精度コードをデコードして高速コードワードを生成することができる。アウターデコーダ310は、高速コードワードをデコードして、データの小さいチャンクを生成することができる。インナーデコーダ312の後にアウターデコーダ310を利用することにより、フローチャート330を実施するシステムのエラー訂正能力を高めることができる。
【0050】
すなわち、アウターデコーダ310は、潜在的なエラーフロアを除去することができる。アウターデコーダ310は、インナーデコーダ312に比べてより良好な性能を提供するために使用することができる。いくつかの例では、インナーデコーダ312及びアウターデコーダ310は、異なるサイズのデータのチャンクに対して動作することができる。例えば、データの小さいチャンクは第1のサイズとすることができ、高精度コードワードは第2のサイズとすることができ、ここで、第2のサイズは第1のサイズよりも大きい。
【0051】
高精度コードの系統的性質のために、FDデコーダの複製が可能になる。「FDデコーダの複製」とは、メモリデバイス304内のFDデコーダの使用、及びアウターデコーダ310の使用を意味する。高精度コードの系統的性質のため、インナーデコーダ312及び/またはアウターデコーダ310にエラーを訂正する機会を提供する前に、メモリデバイス304内のFDデコーダにエラーを訂正する機会を提供することができる。
【0052】
図3の例は直列コード連結を使用して示されているが、本明細書で説明された例は、インナーFDコードを使用した直列または並列連結に適用することができる。
【0053】
図4は、本開示の複数の実施形態にしたがったコードワード440の例を示す。コードワード440は、ADデータ442及びADパリティビット444を含む。ADデータ442は、FDデータ446及びFDパリティビット448を含む。
【0054】
メモリデバイス(例えば、メモリデバイス304)にデータを記憶する前に、データのチャンク(例えば、FDデータ446のチャンク)に対して作用を及ぼすアウターエンコーダ(例えば、アウターエンコーダ306)は、FDコードワード内のFDデータ446のチャンクのそれぞれを、チャンクのそれぞれに対応するFDパリティビット448を追加することによってエンコードする。すなわち、FDデータ446のチャンクは、FDデータ446及びFDパリティビット448を含むN個のFDコードワードに順次エンコードされる。
【0055】
N個のFDコードワードは、インナーエンコーダ(例えば、インナーエンコーダ308)によってN個のADコードワードにエンコードされる。インナーエンコーダは、N個のFDコードワードをADデータ442として処理する。ここで、ADデータ442のチャンクのそれぞれは、N個のFDコードワードからの異なるコードワードである。インナーエンコーダは、ADデータ442のチャンクのそれぞれについてADパリティビット444を生成する。ADパリティビット444は、FDパリティビット448に依存する。
【0056】
デコーディング段階では、FDコードワードは、FDデコーダによって一時的にデコードされる。FDコードワードが正しくデコードされている場合(例えば、FDコードワードがエラーを持たない、または幾つかのエラーが訂正されている場合)、有効性フラグが全てのFDコードワードについて設定され、ADデコーダが停止される。FDコードワードのうちの少なくとも1つがFDデコーダによって訂正されず、かつFDデコーダがエラーの存在を検出している場合、ADデコーダがアクティブ状態にされ、ADデコーダはFDコードワードを処理する。
【0057】
いくつかの実施形態では、FDデコーダは、FDデコーダにおけるエラー訂正に関連するレイテンシを減少させるためにメモリ内に実装される。FDデコーダは、ADデコーダと通信して、デコーディングプロセスを完了するためにADデコーダの参加を要求することができる。すなわち、FDデコーダは、デコーディングプロセスを開始することができ、FDデコーダは、ADデコーダが有効性フラグを介してデコーディングプロセスを完了することを要求することができる。有効性フラグは、データが訂正可能であることをADデコーダに警告するために、かつ/またはADデコーダをアクティブ状態にするために使用することができる。
【0058】
いくつかの例では、インナーADデコーダを用いて直列連結方式を繰り返すことができる。FEエンコーダとFDデコーダとの両方をメモリデバイス内に実装してレイテンシを減少させることができる。FDデコーダがパリティビット及び有効性フラグをADデコーダに提供できることにより、ADデコーダは、FDデコーダが以前データをデコードした(例えば、データのエラーを訂正した)かどうかに基づいてデータをデコードすることが可能である。
【0059】
特定の実施形態が本明細書で例示及び説明されてきたが、当業者は、同じ結果を達成するように推測される配置構成が、示された特定の実施形態に置き換えられ得ることを認識するであろう。本開示は、本開示の様々な実施形態の適応または変形を網羅するように意図される。上記の説明は、例示的になされたものであり、限定的になされたものではないことが理解されよう。上記の実施形態と、本明細書で具体的に説明されていない他の実施形態との組み合わせは、上記の説明を考察すれば当業者にとって明らかとなるであろう。本開示の様々な実施形態の範囲には、上記の構造及び方法が使用される他の適用が含まれる。したがって、本開示の様々な実施形態の範囲は、添付された特許請求の範囲、ならびにかかる特許請求の範囲の権利が与えられる均等物の全範囲を参照して定められるべきである。
【0060】
前述の発明を実施するための形態では、本開示を簡素化する目的で、様々な特徴が単一の実施形態に共にまとめられている。開示のこの方法は、本開示の開示された実施形態が、各請求項に明示的に記載されたものよりも多くの特徴を使用する必要があるという意図を反映したものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示された実施形態の全ての特徴より少ないところにある。したがって、以下の特許請求の範囲は、本明細書によって発明を実施するための形態に組み込まれ、各請求項は、別個の実施形態として独立している。