JP2015135676A - 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置 - Google Patents

複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置 Download PDF

Info

Publication number
JP2015135676A
JP2015135676A JP2015004983A JP2015004983A JP2015135676A JP 2015135676 A JP2015135676 A JP 2015135676A JP 2015004983 A JP2015004983 A JP 2015004983A JP 2015004983 A JP2015004983 A JP 2015004983A JP 2015135676 A JP2015135676 A JP 2015135676A
Authority
JP
Japan
Prior art keywords
circuit
slices
pages
codeword
codewords
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015004983A
Other languages
English (en)
Other versions
JP6491482B2 (ja
Inventor
ニン・チェン
Ning Chen
ユ・カイ
Kai Yu
ユンシャン・ウー
Yunxiang Wu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of JP2015135676A publication Critical patent/JP2015135676A/ja
Application granted granted Critical
Publication of JP6491482B2 publication Critical patent/JP6491482B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/802Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout by encoding redundancy signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】本発明は、複数のメモリへのインターフェイスと回路とを有する装置に関する。【解決手段】複数のメモリへのインターフェイスと回路とを有する装置が開示される。各メモリは、概して、複数の面を有し、不揮発性である。回路は、(i)複数のデータユニットを符号化することによって複数のコード語を生成し、(ii)コード語をパーシングすることによって複数のスライスを生成し、(iii)スライスをインターリーブすることによって複数のページを生成し、(iv)面のそれぞれにページを並行して書き込むように構成される。【選択図】図3

Description

発明の詳細な説明
本件出願は、2014年1月13日に出願された米国特許仮出願第61/926,516号に関し、当該出願の全体が引用によりここに援用される。
発明の分野
本発明は、概してソリッドステートドライブに関し、より特定的には複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置に関する。
背景
フラッシュメモリの外形が小さくなるにつれ、各フラッシュメモリセルに保存される電子の量も小さくなる。電子の数が小さくなるとプロセス変動による影響をより受けやすくなり、様々なフラッシュ面およびダイにおける信頼度の差異がより顕著となる。従来の設計において、各コード語は同じダイに記憶される。このため、最も悪いフラッシュダイ/面の特定のコード語を誤り訂正符号化によって回復できない場合、訂正不能な符号訂正障害が起こる。
概要
本発明は、複数のメモリへのインターフェイスと回路とを有する装置に関する。各メモリは、概して複数の面を有し、不揮発性である。回路は、(i)複数のデータユニットを符号化することによって複数のコード語を生成し、(ii)コード語をパーシングすることによって複数のスライスを生成し、(iii)スライスをインターリーブすることによって複数のページを生成し、(iv)それぞれの面にページを並行して書き込むように構成される。
本発明の実施形態は、以下の詳細な説明、添付の請求項、および図面から明らかとなる。
装置を示すブロック図である。 冗長ブロックを示すブロック図である。 本発明の実施形態に従う書き込みの方法を示すフロー図である。 スライスに分割されたコード語を示す図である。 メモリ面へのスライスのマッピングを示す図である。 読み取りの方法を示すフロー図である。 メモリ面から複数のスライスへのデータのマッピングを示す図である。
実施形態の詳細な説明
本発明の実施形態は、複数のフラッシュ面にわたってコード語をインターリーブすることを含み、これは、(i)複数のフラッシュデバイスにわたってコード語を分配し得る、(ii)既存の技術と比較して信頼度を向上させ得る、(iii)複数のフラッシュデバイスにわたる誤り率を平均化し得る、(iv)プロセス変動によって誘発されるコード語内の誤りを減少させ得る、および/または(v)1つ以上の集積回路として実施され得る。
様々な実施形態において、コード語はスライスされるとともに、複数のフラッシュデバイス(もしくはダイ)にわたって分配される、および/またはフラッシュデバイス内の複数の面にわたって分配される。したがって、単一のコード語内の誤り数は、複数のダイとコード語のサイズとを掛け合わせたものの平均誤り率である。このため、最も悪い場合におけるコード語の純粋な誤り数が減少する。スライスおよび分配により、一般的な技術と比較して信頼度が向上する。信頼性の低いフラッシュ面によって引き起こされる初期障害は、遅延する、または可能性として除去される。このようなことから、フラッシュデバイスのプログラム/消去サイクル寿命および最大保持時間が長くなる。また、スライスおよび分配によって、より予測可能な性能が得られる。コード語内の誤りが平均化されることから、各論理コード語内の誤りの変動が小さくなる。したがって、復号化の性能の変動が小さくなり、性能がより予測可能となる。
図1を参照すると、装置90の例示的な実施のブロック図が示される。装置(回路、デバイス、または集積回路)90は、不揮発性メモリ回路を有するコンピュータによって実施される。装置90は、概して、ブロック(または回路)92と、ブロック(または回路)94と、ブロック(または回路)100とを含む。回路94および100は、ドライブ(またはデバイス)102を形成する。回路92から102は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、もしくは他の実施の態様で実施され得るモジュールおよび/またはブロックを示し得る。
1つ以上の信号(たとえば、HOSTIO)は、回路92のインターフェイスと回路100のインターフェイスとの間で交換される。ホスト入出力信号HOSTIOは、概して、回路102内のデータにアクセスするために使用される論理アドレス構成部分と、回路102を制御するホスト命令構成部分と、書き込みデータユニットを回路92から回路100に転送する書き込みデータ構成部分と、誤りが訂正された読み取りデータユニットを回路100から回路92へ転送する読み取りデータ構成部分とを含むが、これらに限定されない。1つ以上の信号(たとえば、NVMIO)は、回路100のインターフェイスと回路94の他のインターフェイスとの間で交換される。不揮発性メモリ入出力信号NVMIOは、概して、回路94内のデータにアクセスするために使用される物理アドレス構成部分と、回路94を制御する(たとえば、命令の読み取りまたは書き込み)メモリ命令構成部分と、回路100から回路94へ書き込まれる、誤り訂正符号化および巡回冗長検査保護書き込みコード語を担持する書き込みコード語構成部分と、回路94から回路100へ読み取られる、誤り訂正符号化コード語を担持する読み取りコード語構成部分とを含むが、これらに限定されない。
回路92は、ホスト回路によって実施されるものとして示される。回路92は、概して、回路100を介して回路94からのデータの読み取りおよび回路94へのデータの書き込みを行うように動作する。読み取りまたは書き込みを行う場合、回路92は、どのデータの集合が回路94に書き込まれるか、または回路94から読み取られるかを識別するために、信号HOSTIOにおける論理アドレス値を転送する。アドレスは、概して、回路102の論理アドレス範囲に及ぶ。論理アドレスは、SATA(たとえば、シリアルATA)セクターなどの個別のデータユニットをアドレス指定することができる。
回路94は、1つ以上の不揮発性メモリ回路(またはデバイス)によって実施されるものとして示される。様々な実施形態によれば、回路94は、1つ以上の不揮発性半導体デバイスを含む。回路94は、概して、不揮発性の状態でデータを記憶するように動作する。データが回路94から読み取られると、回路94は、信号NVMIOにおいてアドレス(たとえば、物理アドレス)によって識別されたデータの集合(たとえば、複数ビット)にアクセスする。アドレスは、概して、回路94の物理アドレス範囲に及ぶ。
一部の実施形態において、回路94は、1つ以上のフラッシュメモリとして実施される。回路94は、シングルレベルセル(たとえば、SLC)型回路として実施され得る。シングルレベルセル型回路は、概して、メモリセルごとに単一のビットを記憶する(たとえば、論理0または1)。他の実施形態において、回路94は、マルチレベルセル型回路として実施され得る。マルチレベルセル型回路は、メモリセルごとに複数の(たとえば、2つの)ビット(たとえば、論理00、01、10、または11)を記憶することができる。さらに他の実施形態において、回路94は、トリプルレベルセル型回路を実施し得る。トリプルレベルセル回路は、メモリセルごとに複数の(たとえば、3つの)ビット(たとえば、論理000、001、010、011、100、101、110、または111)を記憶する。4レベルセル型回路も実施され得る。
回路94内のデータは、概してユニットの階層で構成される。ブロックは消去の最小量である。ページは書き込みの最小量である。コード語(読み取りユニット、Eページ、またはECCページ)は、読み取りおよび誤り訂正の最小量である。各ブロックは整数のページ数を含む。各ページは整数のコード語数を含む。
回路100は、コントローラ回路を実施するものとして示される。回路100は、概して、回路94の読み取りおよび回路94からの書き込みを制御するように動作する。回路100は、回路92から受け取ったデータユニットを符号化することによって書き込みコード語を生成する。回路100は、回路94から受け取った読み取りコード語を復号化する能力を含む。得られた復号化データは、信号HOSTIOを介して回路92に提示される、および/または再符号化されて信号NVMIOを介して回路94に書き戻される。回路100は、1つ以上のソリッドステートドライブ、埋め込み記憶部、または他の適した制御用途の制御部を実施する1つ以上の集積回路(またはチップもしくはダイ)を含む。
書き込みの一部として、回路100は、概して、それぞれのデータユニットを符号化することによって複数のコード語を生成するように構成される。いくつかのコード語は、組み合わされて複数のバッチを形成し、各バッチは2つ以上のコード語を含む。各バッチのサイズは、回路94における面のサイズと実質的に一致する。また、回路100は、バッチ/コード語をパーシングすることによって複数のスライスを生成する。スライスは、合わせていくつかのページにインターリーブされる。回路100は、複数のページを使用し、回路94に書き込まれる冗長ブロックを作る。
読み取りの一部として、回路100は、概して、回路94から冗長ブロックを読み取ることによってページを再生成するように構成される。ページは、スライスを生成するためにパーシングされる。回路100は、その後にスライスからコード語を再生成する。コード語は、元のデータユニットを再生成するために復号化される。
回路102は、ソリッドステートドライブを実施するものとして示される。回路102は、概して、回路92によって生成されたデータを記憶し、データを回路92に戻すように動作する。様々な実施形態によれば、回路102は、NANDフラッシュデバイス、相変化メモリ(たとえば、PCM)デバイス、または抵抗RAM(たとえば、ReRAM)デバイスなどの不揮発性半導体デバイス、1つ以上の不揮発性デバイスを有するソリッドステートドライブの部分、および任意の他の揮発性もしくは不揮発性記憶媒体を1つ以上含む。回路102は、概して、不揮発性の状態でデータを記憶するように動作する。
図2を参照すると、例示的な冗長ブロックNのブロック図が示される。冗長ブロックNは、概して複数のブロック120a〜120n(たとえば、N0〜N63)を含む。各ブロック120a〜120nは、複数のページを有する。各ブロック120a〜120nは、回路94の異なるいくつかのダイ96a〜96n(たとえば、ダイ0〜ダイ63)に記憶される。たとえば、8キロビットのデータは、8つのダイ96a〜96nをページあたり1キロビットでカバーする。一部の状況において、冗長ブロックNは、ダイ96a〜96nの数よりも少ないブロック120a〜120nを有する。他の状況において、冗長ブロックNは、ダイ96a〜96nの数よりも大きい数のブロック120a〜120nを有する。
冗長ブロックNの寿命の開始時において、平均チャネルパラメータの単一の集合を用いて、すべてのブロック120a〜120nが読み取られる。時間が経過するとともに冗長ブロックNがプログラムおよび消去されるにつれ、1つ以上のブロック(たとえば、ブロック120cおよび120m)が、高い誤り率を有する外れ値ブロックとして識別され得る。このため、誤り率の高まりを考慮に入れるべく、外れ値ブロックの誤り訂正符号化が増加する。
冗長ブロックを粗い粒として適用することにより、回路100は、1つ以上のブロック120a〜120n(または対応するダイ96a〜96n)の損失を許容するフォールトレラント性能を選択的に提供する。様々な実施形態において、回路100は、冗長ブロックNに記憶されているデータから冗長情報(たとえば、パリティ情報)を生成するように動作する。冗長情報は、概して、1つ以上のブロック120a〜120nに障害が起こる事象および/または電力が損失する事象においてデータの再構築を可能とする。データの再構築は、独立ディスクの冗長アレイ(たとえば、RAID)ハードディスクドライブにおける再構築と同様である。冗長情報は、冗長ブロックNの1つ以上のブロック120a〜120nに記憶される。冗長情報のフォールトトレランスは調整可能である。たとえば、単一の冗長ブロック(たとえば、120a)は、単一ブロック120b〜120nの損失から回復するのに十分な冗長情報を記憶するために使用される。2つの冗長ブロック(たとえば、120a〜120b)は、2つのブロック120c〜120nの損失から回復するために使用される。冗長情報がデータのミラーコピーである場合(たとえば、RAID0)、ブロック120a〜120nの半分がデータを記憶し得て、他の半分がデータのミラーコピーを記憶し得る。
図3を参照すると、本発明の実施形態に従う書き込みのための例示的な方法140のフロー図が示される。方法(または処理)140は、回路100によって実施される。方法140は、概して、ステップ(または状態)142と、ステップ(または状態)144と、ステップ(または状態)146と、ステップ(または状態)148と、ステップ(または状態)150と、ステップ(または状態)152とを含む。ステップ142から152は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、または他の実施として実施され得るモジュールおよび/またはブロックを示し得る。ステップ142から152のシーケンスは、代表例として示される。特定の用途の基準を満たすために、他のステップの順序が実施され得る。
ステップ142において、回路100は、信号(たとえば、DATA)において回路92から(信号HOSTIOを介して)受け取られる、内部から回路100へ読み出される、および/または保全作業の一部として回路94から読み出されるデータユニットを符号化する。コード語は、ステップ144において回路100によってバッチに組み合わされる。各バッチは、デバイス96a〜96nにおける面のビット幅と同じ大きさの(実質的に一致する)ビット幅、またはそれよりも小さいビット幅を有する。ステップ146において、バッチおよび/またはバッチ内のコード語は、回路100によってスライスに分割される。
図4を参照すると、例示的なコード語160の図が示される。各コード語160のデータは、小さいサイズのスライス162a〜162nにパーシング(または分割)される。各スライス162a〜162nは、最終的に異なるフラッシュ面に記憶される。結果として、コード語160内の誤り率はすべてのフラッシュ面にわたる平均数となる。コード語160内の誤り数は、コード語160を複数の面にわたって分配する代わりにコード語160を最も悪い面に記憶した場合の誤り数よりも小さい。コード語160のサイズは、対応するデータユニットにおいて行なわれる誤り訂正符号化のレベル(または符号率)に応じて変動する。誤り訂正可能符号化が高いと、概して、低い誤り訂正可能符号化よりもコード語160が大きくなる。
図5を参照すると、デバイス96a〜96nに対する複数のコード語のスライス162a〜162nの例示的なマッピングの図が示される。図3に戻り、ステップ144において作られたバッチ(たとえば、バッチAからバッチN)は、複数のページ(たとえば、ページAからページN)を有する冗長ブロックの形態で回路100によって集められる(または組み合わされる)。ステップ146におけるスライシングにより、各バッチA〜Nにおけるコード語(たとえば、CWAからCWN)が小さい断片に分割される(およびバッチA〜Nが分割される)。
ステップ148において、各バッチA〜Nにおける異なるコード語CWA〜CWNからのスライス162a〜162n、および/または異なるバッチA〜Nからのスライス162a〜162nがページA〜Nにインターリーブされる。図5に示される例において、ページAは、バッチAからの複数の(たとえば、2つの)スライスと、バッチBからの複数の(たとえば、2つの)スライスと、バッチNからの複数の(たとえば、2つの)スライスとを含む。様々な実施形態において、1つ以上のバッチA〜Nは、スライス162a〜162nをインターリーブすることなくページとなり得る。結果として、インターリーブされていないページが、装置(たとえば、回路96b)の面(たとえば、面B)に記憶される。
ステップ150において、インターリーブされた、および/またはインターリーブされていないスライス162a〜162nを含むページA〜Nが組み合わされて冗長ブロックとなる。冗長ブロックは、続いてステップ152において回路94に書き込まれる。書き込み動作の一部として、各ページA〜Nは、面A〜Nのうちのそれぞれの面に記憶される。様々な実施形態において、それぞれの面A〜Nの各々は異なるデバイス96a〜96nに記憶される。一部の実施形態において、それぞれの面のうち2つ以上が同じデバイス96a〜96n内にある(たとえば、ダイにおける2つまたは4つの面が並行してアクセスされ得る)。
各面(たとえば、物理ページ)がm個のコード語のサイズを有し、各コード語がn個のスライスを有する場合の例を考える。同じ列上のすべてのコード語のk番目のスライスは、仮想コード語を形成する。列ごとのスライスにおいて、m個の列がm個の仮想コード語を形成する。m個の仮想コード語は、回路94におけるk番目のフラッシュ面に書き込まれる。インターリーブマッピングによって追加のハードウェアコストおよび/または読み取り/書き込み性能の劣化が生じることはない。マッピングを使用し、各物理コード語が複数のフラッシュ面に分配され、最も悪いフラッシュ面の問題が克服される。
図6を参照すると、読み取りのための例示的な方法180のフロー図が示される。方法(または処理)180は、回路100によって実施される。方法180は、概して、ステップ(または状態)182と、ステップ(または状態)184と、ステップ(または状態)186と、ステップ(または状態)188と、ステップ(または状態)190と、ステップ(または状態)192とを含む。ステップ182から192は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、または他の実施として実施され得るモジュールおよび/またはブロックを示し得る。ステップ182から192のシーケンスは、代表例として示される。特定用途の基準を満たすために、他のステップ順序が実施され得る。
図7を参照すると、複数のコード語CWA〜CWNの複数のスライス162a〜162nへのデバイス96a〜96nにおけるデータの例示的なマッピングの図が示される。図6に戻り、冗長ブロックは、ステップ182において回路94から読み取られる。回路94における所与のアドレスから読み取られた冗長ブロックは、誤りから離れた所与のアドレスに事前に書き込まれた冗長ブロックと同じである。冗長ブロックは、ページA〜Nを生成するためにステップ184において回路100によってパーシングされる。読み取られたページは、事前に書き込まれた冗長ブロックの書き込みページと同じである。
様々な実施形態において、スライス162a〜162nを再生成するために、ページA〜Nはステップ186において回路100によってパーシングされる。スライス162a〜162nは、バッチA〜Nを再生成するために、ステップ188においてデインターリーブされるとともに組み合わされる。書き込みの前にページがインターリーブされていない一部の状況においては、デインターリーブするステップがスキップされ得る。バッチA〜Nは、コード語CWA〜CWNを再生成するために、ステップ190において回路100によってパーシングされる。各コード語CWA〜CWNは、データユニットを回復させるためにステップ192において復号化される。データユニットは、信号DATAにおいて提示される。データユニットは、続いて信号HOSTIOにおいて回路92に転送される、および/または読み取りを開始した回路100内のソースに転送される。
k番目の列を伴う書き込み例に続き、k番目のフラッシュ面を読み取ることにより、m個の仮想コード語を含む物理ページが回路100に戻される。各仮想コード語は、n個のスライスを有する。i番目の仮想コード語およびj番目のスライスは、回路100内の2次元読み取りコード語バッファのi番目の列およびj番目の行にマッピングする。読み取りコード語バッファにおけるデータユニットは、信号DATAにおいて(信号HOSTIOを介して)ホストコンピュータに転送され得る、または読み取りデータを要求した他の宛先(たとえば、回路100の内部)に転送され得る。
回路100は、概して、主要なアクセスパターンが大きなデータサイズの連続的な読み取りおよび/またはアクセスである用途において有用である。たとえば、ビデオファイルおよびオーディオファイルへのアクセスでは、概して、異なるアクセスのレイテンシ変動に敏感な大きなデータへアクセスされる。回路100は、無作為な読み取り集中的な用途および他の無作為な用途にも有用である。
一部の実施において、一般のハードウェア設計は変更され得ず、インターリーブがソフトウェア/ファームウェアによって有効化または無効化される。たとえば、本発明の実施形態は、電流制御器の設計と組み合わせることができる。プログラム/消去サイクルのカウントが小さい場合、回路94へアクセスするために電流設計が使用される。プログラム/消去サイクルのカウントが増加するにつれて、異なるダイ/面における誤り率が概して増加する。異なるダイ/面のプログラム/消去サイクル寿命および最大保持時間も、異なり得る。たとえば、最も悪い面/ダイに記憶されたコード語は、多数の(たとえば、10,000回)プログラム消去/サイクル後において共通して訂正が失敗する。一般の設計において、最も悪いダイに障害が起こった場合、そのダイは使用不能としてマーキングされる。したがって、特定の容量が保証されるとともにインターリーブを行わない一般のフラッシュベースのソリッドステートドライブのプログラム/消去サイクル寿命は、たった10,000回のプログラム/消去サイクルである。インターリーブを可能とすることにより、コード語における誤りは複数のダイ/面の平均となる。したがって、10,000回のプログラム/消去サイクルの後であっても、コード語は訂正可能のままとなる。ソリッドステートドライブは、容量の損失なくして10,000回以上のプログラム/消去サイクルにわたって使用可能なままとなる。
インターリーブは、プログラム/消去サイクルにわたる適応性誤り訂正符号化など、多くの他の技術に対して直交的に実施され得る。適応性誤り訂正符号化が適用されると、符号化率がプログラム/消去サイクルにわたって最初に適応する。プログラム/消去サイクルが増加するにつれ、フラッシュコントローラは、最終的に最も強力な誤り訂正符号化(たとえば、最も低い符号化速度の誤り訂正符号)が適用されるまで、より強力な誤り訂正符号化(たとえば、より低い符号化速度の誤り訂正符号)へ徐々に切り換わる。プログラム/消去サイクルが増加し続けるにつれ、最も弱いフラッシュブロック/ダイ/面の最も低い符号化速度の誤り訂正符号に最終的に障害が起こる。インターリーブを可能とすることにより、最も弱いダイが使用可能であり続け得て、容量損失なくしてプログラム/消去サイクル寿命が拡張される。
本発明の様々な実施により、従来の技術と比較して回路102の性能がより予測可能なものとなる。インターリーブにより、異なるダイ/面に記憶された他のコード語よりも一部のコード語内により多くの誤りが多く存在するという場合が減少する。各コード語を複数の物理フラッシュ面にわたって分配することにより、最も悪いフラッシュ面によって引き起こされるボトルネックが回避される。したがって、信頼性および寿命が向上する。
図1から図7の図によって行われる機能は、関連技術の当業者にとって明らかなように、本明細書の教示に従ってプログラムされた、従来の汎用プロセッサ、デジタルコンピュータ、マイクロプロセッサ、マイクロコントローラ、RISC(縮小命令型コンピュータ)プロセッサ、CISC(複雑命令セットコンピュータ)プロセッサ、SIMD(単一命令多重データ)プロセッサ、信号プロセッサ、中央処理装置(CPU)、算術論理演算ユニット(ALU)、ビデオデジタル信号プロセッサ(VDSP)、および/または同様の計算マシンのうちの1つ以上を用いて実施され得る。適切なソフトウェア、ファームウェア、符号化、ルーチン、指示、演算コード、マイクロコード、および/またはプログラムモジュールは、関連技術の当業者にとって明らかなように、本開示の教示に基づいて熟練のプログラマーによって容易に準備され得る。ソフトウェアは、概して、マシンで実施される1つ以上のプロセッサによって1つまたは複数の媒体から実行される。
本発明は、本明細書に記載されるように、ASIC(特定用途向けIC)、プラットホームASIC、FPGA(フィールドプログラマブルゲートアレイ)、PLD(プログラマブルロジックデバイス)、CPLD(コンプレックスプログラマブルロジックデバイス)、シーオブゲート、RFIC(無線周波数集積回路)、ASSP(特定用途専用標準品)、1つ以上のモノリシック集積回路、フリップチップモジュールおよび/またはマルチチップモジュールとして配置された1つ以上のチップもしくはダイを準備することによって、または従来の構成回路の適切なネットワークを相互接続することによって実施され得て、その変形例は当業者にとって容易に明らかとなる。
したがって、本発明は、本発明に従う1つ以上の処理または方法を行なうようにマシンをプログラムするために使用され得る指示を含む1つの記憶媒体もしくは複数の記憶媒体、および/または1つの送信媒体もしくは複数の送信媒体であり得るコンピュータ製品も含み得る。周囲の回路の動作を伴ってコンピュータ製品に含まれる指示をマシンが実行することにより、入力データが、音声および/もしくは映像描写などの物体および物質を表わす、記憶媒体上の1つ以上のファイルならびに/または1つ以上の出力信号に変換され得る。記憶媒体は、フロッピー(登録商標)ディスク、ハードドライブ、磁気ディスク、光学ディスク、CD−ROM、DVD,および光磁気ディスクなどの任意のタイプのディスク、ROM(読み取り専用メモリ)、RAM(ランダムアクセスメモリ)、EPROM(消去可能プログラマブルROM)、EEPROM(電気的消去可能プログラマブルROM)、UVPROM(紫外線消去可能プログラマブルROM)、フラッシュメモリ、磁気カード、および光カードなどの回路、ならびに/または電子的な指示を記憶するのに適した任意のタイプの媒体を含み得るが、これらに限定されない。
本発明の要素は、1つ以上のデバイス、ユニット、構成部品、システム、マシン、および/または装置の一部または全てを形成し得る。デバイスは、サーバー、ワークステーション、ストレージアレイコントローラ、ストレージシステム、パーソナルコンピュータ、ラップトップコンピュータ、ノートブック型コンピュータ、パームコンピュータ、携帯情報端末、携帯電子デバイス、バッテリーにより給電されるデバイス、セットトップボックス、エンコーダ、デコーダ、トランスコーダ、コンプレッサ、デコンプレッサ、プリプロセッサ、ポストプロセッサ、トランスミッタ、レシーバ、トランシーバ、暗号回路、携帯電話、デジタルカメラ、位置システムおよび/もしくはナビゲーションシステム、医療機器、ヘッドアップディスプレイ、無線デバイス、音声記録、音声記憶、および/もしくは音声再生デバイス、映像記録、映像記憶、および/もしくは映像再生デバイス、ゲームプラットホーム、周辺機器、および/またはマルチチップモジュールを含み得るが、これらに限定されない。関連技術の当業者は、特定用途の基準を満たすために本発明の要素が他のタイプの装置において実施され得ることを理解する。
「〜し得る(may)」および「概して(generally)」の用語は、「〜である(is(are))」および動詞と合わせて本願明細書において使用される場合、その記載が例示的なものであって、本開示に示される特定の例および本開示に基づいて導かれる代表的な例の両方を含むのに十分に広いと考えられることを意味する。本明細書において使用される「〜し得る(may)」および「概して(generally)」の用語は、対応する要素を省略することについての願望または可能性を必ずしも暗示するものと解釈されるべきではない。
本発明は、その実施形態を参照して特定的に示されるとともに記載されたが、形態および詳細に関する様々な変化は本発明の範囲から逸脱することなく行われ得ることが当業者によって理解される。

Claims (18)

  1. 装置であって、
    各々が複数の面を有する複数のメモリへのインターフェイスを備え、前記メモリは不揮発性であり、装置はさらに、
    回路を備え、前記回路は、(i)複数のデータユニットを符号化することによって複数のコード語を生成し、(ii)前記コード語をパーシングすることによって複数のスライスを生成し、(iii)前記スライスをインターリーブすることによって複数のページを生成し、(iv)それぞれの前記面に前記ページを並行して書き込むように構成される、装置。
  2. 前記メモリはフラッシュメモリである、請求項1に記載の装置。
  3. (i)前記回路は、前記複数のコード語を各々が含む複数のバッチを生成するようにさらに構成され、(ii)前記バッチの各々のサイズは実質的に前記面のサイズに一致する、請求項1に記載の装置。
  4. 前記ページのうちの1つ以上は、前記バッチのうちの2つ以上からの前記スライスを含む、請求項3に記載の装置。
  5. 前記回路は、(i)前記メモリから並行して前記面のそれぞれを読み取ることによって前記ページを再生成し、(ii)前記ページをパーシングすることによって前記スライスを再生成し、(iii)前記スライスから前記コード語を再生成し、(iv)前記コードを復号化することによって前記データユニットを再生成するようにさらに構成される、請求項1に記載の装置。
  6. (i)前記回路は、前記複数のコード語を各々が含む複数のバッチを生成するようにさらに構成され、(ii)前記バッチのうちの1つ以上は、前記ページのうちの2つ以上からの前記スライスを含む、請求項5に記載の装置。
  7. 前記コード語は、前記バッチをパーシングすることによって再生成される、請求項6に記載の装置。
  8. 前記ページの各々は、異なる前記メモリにおける前記面のそれぞれに書き込まれる、請求項1に記載の装置。
  9. 前記装置は1つ以上の集積回路として実施される、請求項1に記載の装置。
  10. 複数の面にわたってコード語をインターリーブする方法であって、
    (A)複数のデータユニットを符号化することによって複数の前記コード語を生成するステップと、
    (B)前記コード語をパーシングすることによって複数のスライスを生成するステップと、
    (C)前記スライスをインターリーブすることによって複数のページを生成するステップと、
    (D)複数のメモリにおける前記複数の面の各々にページを並行して書き込むステップとを備え、前記メモリは不揮発性である、方法。
  11. 前記メモリはフラッシュメモリである、請求項10に記載の方法
  12. 各々が複数の前記コード語を含む複数のバッチを生成するステップをさらに備え、前記バッチの各々のサイズは実質的に前記面のサイズに一致する、請求項10に記載の方法。
  13. 前記ページのうちの1つ以上は、前記バッチのうちの2つ以上からの前記スライスを含む、請求項12に記載の方法。
  14. 前記メモリから並行して前記面のそれぞれを読み取ることによって前記ページを生成するステップと、
    前記ページをパーシングすることによって前記スライスを再生成するステップと、
    前記スライスから前記コード語を生成するステップと、
    前記コード語を復号化することによって前記データユニットを再生成するステップとをさらに備える、請求項10に記載の方法。
  15. 複数の前記コード語を各々が含む複数のバッチを生成するステップをさらに備え、前記バッチのうちの1つ以上は前記ページのうちの2つ以上からの前記スライスを含む、請求項14に記載の方法。
  16. 前記コード語は、前記バッチをパーシングすることによって再生成される、請求項15に記載の方法。
  17. 前記ページの各々は、異なる前記メモリにおける前記面のそれぞれに書き込まれる、請求項10に記載の方法。
  18. 装置であって、
    複数のデータユニットを符号化することによって複数のコード語を生成するための手段と、
    前記コード語をパーシングすることによって複数のスライスを生成するための手段と、
    前記スライスをインターリーブすることによって複数のページを生成するための手段と、
    複数のメモリにおける複数の面のそれぞれに前記ページを並行して書き込むステップとを備え、前記メモリは不揮発性である、装置。
JP2015004983A 2014-01-13 2015-01-14 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置 Expired - Fee Related JP6491482B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461926516P 2014-01-13 2014-01-13
US14/156,693 US9405480B2 (en) 2014-01-13 2014-01-16 Interleaving codewords over multiple flash planes
US14/156,693 2014-01-16

Publications (2)

Publication Number Publication Date
JP2015135676A true JP2015135676A (ja) 2015-07-27
JP6491482B2 JP6491482B2 (ja) 2019-03-27

Family

ID=53521406

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015004983A Expired - Fee Related JP6491482B2 (ja) 2014-01-13 2015-01-14 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置

Country Status (4)

Country Link
US (1) US9405480B2 (ja)
JP (1) JP6491482B2 (ja)
KR (1) KR20150085800A (ja)
WO (1) WO2015106263A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI646554B (zh) 2017-03-28 2019-01-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
CN111209232B (zh) * 2018-11-21 2022-04-22 昆仑芯(北京)科技有限公司 访问静态随机存取存储器的方法、装置、设备和存储介质
CN110277134A (zh) * 2019-06-27 2019-09-24 鸿秦(北京)科技有限公司 一种自动化批量测试固态硬盘的系统
WO2023159347A1 (zh) * 2022-02-22 2023-08-31 华为技术有限公司 一种控制数据读写的方法和装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
JP2005202957A (ja) * 2004-01-12 2005-07-28 Hewlett-Packard Development Co Lp エラー訂正のためのデータの分割
US20080034154A1 (en) * 1999-08-04 2008-02-07 Super Talent Electronics Inc. Multi-Channel Flash Module with Plane-Interleaved Sequential ECC Writes and Background Recycling to Restricted-Write Flash Chips
US20100211833A1 (en) * 2007-10-22 2010-08-19 Hanan Weingarten Systems and methods for averaging error rates in non-volatile devices and storage systems
US20110125953A1 (en) * 2009-11-23 2011-05-26 Agiga Tech Inc. Flash memory organization for reduced failure rate
JP2012022422A (ja) * 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
US20120144093A1 (en) * 2010-12-07 2012-06-07 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
JP2013016149A (ja) * 2011-06-08 2013-01-24 Panasonic Corp メモリコントローラ及び不揮発性記憶装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8543742B2 (en) 2007-02-22 2013-09-24 Super Talent Electronics, Inc. Flash-memory device with RAID-type controller
US8176284B2 (en) * 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
KR101616100B1 (ko) * 2009-09-25 2016-04-28 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US8626988B2 (en) 2009-11-19 2014-01-07 Densbits Technologies Ltd. System and method for uncoded bit error rate equalization via interleaving
US8365041B2 (en) 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
US8484408B2 (en) 2010-12-29 2013-07-09 International Business Machines Corporation Storage system cache with flash memory in a raid configuration that commits writes as full stripes
US8732557B2 (en) 2011-05-31 2014-05-20 Micron Technology, Inc. Data protection across multiple memory blocks
US9335939B2 (en) 2011-07-12 2016-05-10 Violin Memory Inc. RAIDed memory system
US20130019057A1 (en) 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
US9424128B2 (en) 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
KR20130111821A (ko) 2012-04-02 2013-10-11 삼성전자주식회사 Raid 메모리 시스템
US8910017B2 (en) 2012-07-02 2014-12-09 Sandisk Technologies Inc. Flash memory with random partition

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US20080034154A1 (en) * 1999-08-04 2008-02-07 Super Talent Electronics Inc. Multi-Channel Flash Module with Plane-Interleaved Sequential ECC Writes and Background Recycling to Restricted-Write Flash Chips
JP2005202957A (ja) * 2004-01-12 2005-07-28 Hewlett-Packard Development Co Lp エラー訂正のためのデータの分割
US20100211833A1 (en) * 2007-10-22 2010-08-19 Hanan Weingarten Systems and methods for averaging error rates in non-volatile devices and storage systems
US20110125953A1 (en) * 2009-11-23 2011-05-26 Agiga Tech Inc. Flash memory organization for reduced failure rate
JP2012022422A (ja) * 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
US20120144093A1 (en) * 2010-12-07 2012-06-07 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
JP2013016149A (ja) * 2011-06-08 2013-01-24 Panasonic Corp メモリコントローラ及び不揮発性記憶装置

Also Published As

Publication number Publication date
US9405480B2 (en) 2016-08-02
US20150199140A1 (en) 2015-07-16
KR20150085800A (ko) 2015-07-24
WO2015106263A1 (en) 2015-07-16
JP6491482B2 (ja) 2019-03-27

Similar Documents

Publication Publication Date Title
KR102645583B1 (ko) 예측성 메모리 유지보수
US10998923B2 (en) Stopping criteria for layered iterative error correction
US8726140B2 (en) Dummy data padding and error code correcting memory controller, data processing method thereof, and memory system including the same
US9673840B2 (en) Turbo product codes for NAND flash
CN107155358B (zh) 用于非易失性存储器的混合粒度较高级别冗余
US10388400B2 (en) Generalized product codes for flash storage
US9465552B2 (en) Selection of redundant storage configuration based on available memory space
US9847139B2 (en) Flash channel parameter management with read scrub
US8694865B2 (en) Data storage device configured to reduce buffer traffic and related method of operation
KR102572357B1 (ko) Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
CN110597654B (zh) 用于超快的具有奇偶校验的纠错码的系统和方法
CN109857584B (zh) 于记忆装置进行访问控制的方法、记忆装置和其控制器
US10120753B2 (en) Methods and apparatuses for error correction
US10223022B2 (en) System and method for implementing super word line zones in a memory device
JP6491482B2 (ja) 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置
KR20190038964A (ko) 에러 정정 코드 유닛, 그것의 인코딩 및 디코딩 방법
US20150149856A1 (en) Decoding with log likelihood ratios stored in a controller
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
KR20170012006A (ko) 메모리 컨트롤러와 이를 포함하는 메모리 시스템
WO2020028801A1 (en) Error correction with scatter-gather list data management
CN111796774B (zh) 存储器控制方法、存储器存储装置及存储器控制器
US20200264953A1 (en) Error correction in data storage devices
CN108170554B (zh) 一种nand的数据编码方法和装置
US9906241B2 (en) Apparatus and method for turbo product codes
US10114569B2 (en) Computing system with shift expandable coding mechanism and method of operation thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181002

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190301

R150 Certificate of patent or registration of utility model

Ref document number: 6491482

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees