JP2017079050A - 保護されたデータとは別個のパリティデータの記憶 - Google Patents

保護されたデータとは別個のパリティデータの記憶 Download PDF

Info

Publication number
JP2017079050A
JP2017079050A JP2016157672A JP2016157672A JP2017079050A JP 2017079050 A JP2017079050 A JP 2017079050A JP 2016157672 A JP2016157672 A JP 2016157672A JP 2016157672 A JP2016157672 A JP 2016157672A JP 2017079050 A JP2017079050 A JP 2017079050A
Authority
JP
Japan
Prior art keywords
data
parity
block
memory devices
parity data
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.)
Pending
Application number
JP2016157672A
Other languages
English (en)
Inventor
ゼット バンディック ズヴォニミール
Z Bandic Zvonimir
ゼット バンディック ズヴォニミール
イー マッテッシュ ロバート
E Mateescu Robert
イー マッテッシュ ロバート
ソン セウン−ワァン
Seung-Hwan Song
ソン セウン−ワァン
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.)
HGST Netherlands BV
Original Assignee
HGST Netherlands BV
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 HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of JP2017079050A publication Critical patent/JP2017079050A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • 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
    • G11C2029/0411Online error correction
    • 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
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Abstract

【課題】保護されたデータとは別個のパリティデータの記憶を提供する。【解決手段】記憶環境2において、記憶デバイスは、複数のメモリデバイスを含む主記憶アレイと、1つまたは複数のパリティメモリデバイスと、データのブロックを記憶するように構成されたコントローラと、を含む。コントローラは、少なくとも、データのブロックを主記憶アレイに書き込み、データのブロックに対するパリティデータを判定し、判定されたパリティデータの少なくとも一部を1つまたは複数のパリティメモリデバイスに書き込むことによって、データのブロックを記憶するように構成される。【選択図】図1

Description

本開示は、メモリ管理、特に、記憶デバイスにおいてパリティデータを割り当てることに関する。
コンピュータで使用されるメモリデバイスまたは他の電子デバイスは、不揮発性メモリまたは揮発性メモリであることがある。不揮発性メモリと揮発性メモリとの間の主な差異は、不揮発性メモリは、持続的な電力供給を必要とすることなくデータを記憶し続けることができることである。結果として、不揮発性メモリデバイスは、広範囲な電子用途のために一般的なタイプのメモリに発展してきた。例えば、フラッシュメモリデバイスを含む不揮発性メモリデバイスは、通常、ソリッドステートドライブ(SSD)などのソリッドステート記憶デバイスに組み込まれる。
いくつかの例では、データを不揮発性メモリデバイスに書き込むとき、コントローラは、データをメモリ誤りから保護するための1つまたは複数の動作を実行することができる。例えば、データを不揮発性メモリデバイスに書き込むことに加え、コントローラは、メモリ誤りの場合など、データを復元するために使用することができるパリティデータを生成し、およびメモリデバイスに書き込むことができる。
1つの例では、記憶デバイスは、複数のメモリデバイスを含む主記憶アレイと、1つまたは複数のパリティメモリデバイスと、データのブロックを記憶するように構成されたコントローラと、を含む。この例では、コントローラは、少なくとも、データのブロックを主記憶アレイに書き込み、データのブロックに対するパリティデータを判定し、および判定されたパリティデータの少なくとも一部を1つまたは複数のパリティメモリデバイスに書き込むことによって、データのブロックを記憶するように構成される。
別の例では、方法は、記憶デバイスのコントローラによって、データのブロックを、複数のメモリデバイスを含む主記憶アレイに書き込むステップと、コントローラによって、データのブロックに対するパリティデータを判定するステップと、コントローラによって、判定されたパリティデータを1つまたは複数のパリティメモリデバイスに書き込むステップと、を含む。
別の例では、コンピュータ可読記憶媒体は、実行されるときに、記憶デバイスの1つまたは複数のプロセッサに、データのブロックを、複数のメモリデバイスを含む主記憶アレイに書き込ませ、データのブロックに対するパリティデータを判定させ、および判定されたパリティデータを1つまたは複数のパリティメモリデバイスに書き込ませる、命令を記憶する。
別の例では、システムは、複数のメモリデバイスを含む主記憶アレイと、1つまたは複数のパリティメモリデバイスと、データのブロックを主記憶アレイに書き込む手段と、データのブロックに対するパリティデータを判定する手段と、判定されたパリティデータを1つまたは複数のパリティメモリデバイスに書き込む手段と、を含む。
1つまたは複数の例の詳細が、添付図面および以下の詳細な説明で示される。他の特徴、目的、および利点は、詳細な説明および図面から、ならびに特許請求の範囲から明らかとなるであろう。
本開示の1つまたは複数の技術に従った、記憶デバイスがホストデバイスに対する記憶デバイスとして機能することができる例示的な記憶環境を示す概念的かつ概略的なブロック図である。 本開示の1つまたは複数の技術に従った、複数のブロックを含み、各ブロックが複数のページを含む例示的なメモリデバイスを示す概念的なブロック図である。 本開示の1つまたは複数の技術に従った、コントローラの例示的な詳細を示す概念的かつ概略的なブロック図である。 本開示の1つまたは複数の技術に従った、メモリデバイスの同一のページに記憶されたユーザデータおよび対応するパリティデータの例示的な論理的構成を示す概念的なブロック図である。 本開示の1つまたは複数の技術に従った、メモリデバイスの同一のページに記憶されたユーザデータおよび対応するパリティデータの例示的な物理的構成を示す概念的なブロック図である。 本開示の1つまたは複数の技術に従った、メモリデバイスの異なるページに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な論理的構成を示す概念的なブロック図である。 本開示の1つまたは複数の技術に従った、メモリデバイスの異なるページに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な物理的構成を示す概念的なブロック図である。 本開示の1つまたは複数の技術に従った、異なるメモリデバイスに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な論理的構成を示す概念的なブロック図である。 本開示の1つまたは複数の技術に従った、異なるメモリデバイスに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な物理的構成を示す概念的なブロック図である。 本開示の1つまたは複数の技術に従った、少なくともいくつかのパリティデータを、関連付けられたユーザデータとは異なるメモリデバイスに記憶する例示的な技術を示すフローチャートである。
本開示は、ユーザデータを主メモリデバイスに記憶し、およびユーザデータと関連付けられた少なくともいくつかの誤り訂正コード(ECC)パリティデータをパリティメモリデバイスに記憶するように構成されたコントローラを含む記憶デバイスを説明する。少なくともいくつかのECCパリティデータをパリティメモリデバイスに記憶することによって、ECCパリティデータによってより大きな量の記憶を使用することができ、それは、より強度のあるECCパリティ技術を可能にし、ユーザデータの完全性をより良好に保護することができる。相対的に、いくつかの記憶デバイスでは、ECCパリティデータのサイズは、ユーザデータのブロックのサイズとメモリデバイスの物理的ページのサイズとの間の差に制限されることがある。例えば、メモリデバイスにおける物理的ページが8320バイトを含み、およびユーザデータのブロックのサイズが8192バイトである場合、パリティデータのサイズは、128バイトに制限されることがある。少なくともいくつかのECCパリティデータをパリティメモリデバイスに記憶することはまた、柔軟性のあるECC強度を促進することができ、例えば、記憶デバイスの年月が増加するにつれて、ECCパリティデータの量が増加する。
さらに、少なくともいくつかのECCパリティデータをパリティメモリデバイスに記憶することは、ECCパリティ情報を記憶するために主メモリデバイス内でデータの複数のページを利用することと比較して、主メモリデバイスの読み込みアクセスを低減させることができる。いくつかの例では、進化した論理−物理アドレスマッピングスキームをコントローラが使用する場合など、コントローラによって使用されるパリティデータのサイズは、メモリデバイスの物理的ページのサイズと独立してもよい。特に、コントローラは、パリティデータを記憶するために複数の物理的ページアドレスを割り当ててもよい。このようにして、コントローラは、より高いECC強度を使用することができる。しかしながら、パリティデータの一部がユーザデータとは別個のメモリデバイスのページに記憶されるので、コントローラは、ユーザデータを読み出すために、第1の物理的ページおよび第2の物理的ページの両方を読み込む必要があることがある。同様に、ユーザデータを記憶するとき、コントローラは、メモリデバイスにおける2つの異なる物理アドレスに書き込む必要があることがあり、これは、望ましくないことがある(例えば、サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加することに起因して)。主メモリデバイスの読み込みおよび書き込みアクセスを低減させることが、主メモリデバイスの摩耗を低減させることができ、および主メモリデバイスの寿命を延ばすことができる。
本開示の1つまたは複数の技術に従って、コントローラは、ECCパリティデータの少なくとも一部を別個のパリティメモリデバイスに記憶してもよい。例えば、コントローラは、ユーザデータのブロックと関連付けられたパリティデータを判定し、ユーザデータのブロックを主メモリデバイスに記憶し、およびパリティデータの少なくとも一部を、主メモリデバイスとは別個であるパリティメモリデバイスに記憶してもよい。いくつかの例では、コントローラは、パリティデータの少なくとも一部をパリティメモリデバイスに書き込むのと並列して、ユーザデータのブロックを主メモリデバイスに書き込んでもよい。同様に、いくつかの例では、コントローラは、パリティデータの少なくとも一部をパリティメモリデバイスから読み込むのと並列して、ユーザデータのブロックを主メモリデバイスから読み込んでもよい。このようにして、コントローラは、性能を著しく低減させることなく、より大きなサイズのパリティデータを使用することができる。
いくつかの例では、パリティメモリデバイスは、主メモリデバイスと同一のタイプのメモリデバイスであってもよい。例えば、いくつかの例では、パリティメモリデバイスおよび主メモリデバイスの両方は、NANDフラッシュメモリデバイスであってもよいが、コントローラによって別個にアドレス可能であってもよい。しかしながら、パリティデータのサイズは、ユーザデータのサイズよりも著しく小さくてもよく、したがって、パリティメモリデバイスのサイズは、主メモリデバイスのサイズよりも著しく小さくてもよい。例えば、パリティメモリデバイスに記憶されたパリティデータのサイズは、主メモリデバイスに記憶されたユーザデータのサイズの10分の1よりも小さくてもよい。
本開示の1つまたは複数の技術に従って、記憶デバイスは、主メモリデバイスと、主メモリデバイスとは異なるタイプのメモリデバイスであるパリティメモリデバイスとを含んでもよい。いくつかの例では、主記憶デバイスは、NANDフラッシュメモリデバイスであってもよく、およびパリティメモリデバイスは、磁気抵抗ランダムアクセスメモリ(MRAM)デバイス、相変化ランダムアクセスメモリ(PRAM)デバイス、または抵抗ランダムアクセスメモリ(ReRAM)デバイスなど、ストレージクラスタイプのメモリデバイスであってもよい。いくつかのフラッシュメモリデバイス(例えば、NANDフラッシュメモリデバイス)と比較して、そのようなストレージクラスメモリデバイスは、増加したビットあたりのコスト、および低減した待ち時間(例えば、マイクロ秒に対してナノ秒)を有することができる。上記議論されたように、パリティデータのサイズは、ユーザデータのサイズよりも著しく小さくてもよい。したがって、パリティメモリデバイスのサイズは、主メモリデバイスのサイズよりも著しく小さくすることができ、これは、パリティメモリデバイスのコストを著しく少なくすることができる。加えて、パリティメモリデバイスが、主メモリデバイスよりも短い待ち時間を有することができるので、パリティメモリデバイスに対するパリティデータの書き込みおよび読み込みは、主メモリデバイスに対するユーザデータの書き込みおよび読み込みに要する時間よりも少なくすることができる。このようにして、コントローラは、性能を著しく低減させることなく、より大きなサイズのパリティデータを使用することができる。
図1は、本開示の1つまたは複数の技術に従った、記憶デバイス6がホストデバイス4に対する記憶デバイスとして機能することができる例示的な記憶環境2を示す概念的かつ簡略的なブロック図である。例えば、ホストデバイス4は、データを記憶および読み出すために記憶デバイス6に含まれる不揮発性メモリデバイスを利用してもよい。いくつかの例では、記憶環境2は、記憶アレイとして動作することができる、記憶デバイス6などの複数の記憶デバイスを含んでもよい。例えば、記憶環境2は、総合的にホストデバイス4に対する大容量記憶デバイスとして機能するリダンダント・アレイ・オブ・インエクスペンシブ/インディペンデント・ディスクズ(RAID)として構成された複数の記憶デバイス6を含んでもよい。
記憶環境2は、記憶デバイス6などの1つまたは複数の記憶デバイスに、および/または1つまたは複数の記憶デバイスから、データを記憶および/または読み出すことができるホストデバイス4を含んでもよい。図1に示されるように、ホストデバイス4は、インタフェース14を介して記憶デバイス6と通信してもよい。ホストデバイス4は、コンピュータサーバ、ネットワークアタッチトストレージ(NAS)ユニット、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどの電話ハンドセット、テレビ、カメラ、ディスプレイデバイス、デジタルメディアプレイヤ、ビデオゲームコンソール、およびビデオストリーミングデバイスなどを含む広範囲なデバイスを含んでもよい。
図1に示されるように、記憶デバイス6は、コントローラ8、不揮発性メモリアレイ10(NVMA10)、揮発性メモリ12、インタフェース14、およびパリティメモリデバイス20を含んでもよい。いくつかの例では、記憶デバイス6は、明確にするために図1には示されていない追加の構成要素を含んでもよい。例えば、記憶デバイス6は、記憶デバイス6の構成要素が機械的に取り付けられ、および記憶デバイス6の構成要素を電子的に相互接続する導電性トレースを含むなどのプリントボード(PB)を含んでもよい。いくつかの例では、記憶デバイス6の物理的寸法およびコネクタ構成は、1つまたは複数の標準フォームファクタに従ってもよい。いくつかの例示的な標準フォームファクタは、3.5 ハードディスクドライブ(HDD)、2.5 HDD、1.8 HDD、ペリフェラル・コンポーネント・インターコネクト(PCI)、PCI−エクステンデッド(PCI−X)、PCIエクスプレス(PCIe)(例えば、PCIe x1、x4、x8、x16、PCIeミニカード、ミニPCIなど)を含むが、それらに限定されない。いくつかの例では、記憶デバイス6は、ホストデバイス4のマザーボードに直接結合されてもよい(例えば、直接半田付けされる)。
記憶デバイス6は、ホストデバイス4とインタフェースするためのインタフェース14を含んでもよい。インタフェース14は、ホストデバイス4とデータを交換するためのデータバス、およびホストデバイス4とコマンドを交換するための制御バスのうちの1つまたは両方を含んでもよい。インタフェース14は、任意の適切なプロトコルに従って動作してもよい。例えば、インタフェース14は、以下のプロトコル、アドバンスドテクノロジーアタッチメント(ATA)(例えば、シリアルATA(SATA)、およびパラレルATA(PATA))、ファイバーチャネル、スモールコンピュータシステムインタフェース(SCSI)、シリアル・アッタチドSCSI(SAS)、ペリフェラル・コンポーネント・インターコネクト(PCI)、PCI−エクスプレス、またはノンボラタイル・メモリ・エクスプレス(NVMe)、のうちの1つまたは複数に従って動作してもよい。インタフェース14の電子的接続(例えば、データバス、制御バス、またはその両方)は、コントローラ8に電子的に接続され、ホストデバイス4とコントローラ8との間の電子的接続をもたらし、およびホストデバイス4とコントローラ8との間でデータが交換されることを可能にする。いくつかの例では、インタフェース14の電子的接続はまた、記憶デバイス6が電力をホストデバイス4から受信することを可能にすることができる。
記憶デバイス6は、複数のメモリデバイス16Aa〜16Nn(総合的に、「メモリデバイス16」)を含むことができる、NVMA10を含んでもよい。メモリデバイス16の各々は、データを記憶および/または読み出すように構成されてもよい。例えば、メモリデバイス16のメモリデバイスは、データおよびメッセージを、データを記憶するようにメモリデバイスに指示するコントローラ8から受信してもよい。同様に、メモリデバイス16のメモリデバイスは、メッセージを、データを読み出すようにメモリデバイスに指示するコントローラ8から受信してもよい。いくつかの例では、メモリデバイス16の各々は、ダイと称されてもよい。いくつかの例では、単一の物理的チップは、複数のダイ(すなわち、複数のメモリデバイス16)を含んでもよい。いくつかの例では、メモリデバイス16の各々は、比較的大容量のデータ(例えば、128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TBなど)を記憶するように構成されてもよい。
いくつかの例では、メモリデバイス16は、フラッシュメモリデバイスを含んでもよい。フラッシュメモリデバイスは、NANDまたはNORベースのフラッシュメモリデバイスを含んでもよく、およびフラッシュメモリセルごとにトランジスタのフローティングゲートに含まれる電荷に基づいてデータを記憶してもよい。NANDフラッシュメモリデバイスでは、フラッシュメモリデバイスは、複数のブロックに分割されてもよい。図2は、複数のブロック17A〜17N(総合的に、「ブロック17」)を含み、各ブロックは、複数のページ19Aa〜19Nm(総合的に、「ページ19」)を含む例示的なメモリデバイス16Aaを示す概念的なブロック図である。ブロック17の各ブロックは、複数のNANDセルを含んでもよい。NANDセルの行は、ページ(ページ19の1つのページ)を定義するためにワードラインを使用して連続して電子的に接続されてもよい。複数のページ19の各々におけるそれぞれのセルは、それぞれのビットラインに電子的に接続されてもよい。コントローラ8は、ページレベルにおいてデータをNANDフラッシュメモリデバイスに書き込み、およびデータをNANDフラッシュメモリデバイスから読み込んでもよく、ならびにブロックレベルにおいてデータをNANDフラッシュメモリデバイスから消去してもよい。
いくつかの例では、メモリデバイス16は、任意のタイプの不揮発性メモリデバイスを含んでもよい。メモリデバイス16のいくつかの例は、フラッシュメモリデバイス(例えば、NANDまたはNOR)、相変化メモリ(PCM)デバイス、抵抗ランダムアクセスメモリ(ReRAM)デバイス、磁気抵抗ランダムアクセスメモリ(MRAM)デバイス、強誘電体ランダムアクセスメモリ(F−RAM)、ホログラフィックメモリデバイス、および任意の他のタイプの不揮発性メモリデバイスを含むが、それらに限定されない。
いくつかの例では、コントローラ8がメモリデバイス16の各メモリデバイスに別個に接続されることは実用的でないことがある。このように、メモリデバイス16とコントローラ8との間の接続が多重化されてもよい。例として、メモリデバイス16は、チャネル18A〜18N(総合的に、「チャネル18」)にグループ化されてもよい。例えば、図1に示されるように、メモリデバイス16Aa〜16Anは、第1のチャネル18Aにグループ化されてもよく、およびメモリデバイス16Na〜16Nnは、第Nのチャネル18Nにグループ化されてもよい。チャネル18の各々にグループ化されたメモリデバイス16は、コントローラ8への1つまたは複数の接続を共有してもよい。例えば、第1のチャネル18Aにグループ化されたメモリデバイス16は、共通I/Oバスおよび共通制御バスに取り付けられてもよい。記憶デバイス6は、チャネル18の各々のそれぞれのチャネルに対する共通I/Oバスおよび共通制御バスを含んでもよい。いくつかの例では、チャネル18の各チャネルは、各チャネル上でメモリデバイスを多重化するために使用することができるチップ対応(CE)ラインの組を含んでもよい。例えば、各CEラインは、メモリデバイス16のそれぞれのメモリデバイスに接続されてもよい。このようにして、コントローラ8とメモリデバイス16との間のいくつかの別個の接続を低減させることができる。加えて、各チャネルがコントローラ8への独立した組の接続を有するので、コントローラ8が異なるコマンドを各チャネルに対して同時に発行するにつれて、接続の低減がデータスループット率に著しく影響を与えないことがある。
記憶デバイス6は、記憶デバイス6の1つまたは複数の構成要素に電力を供給することができる電力供給装置11を含んでもよい。標準モードで動作するとき、電力供給装置11は、ホストデバイス4などの外部デバイスによって供給される電力を使用して、電力を1つまたは複数の構成要素に供給してもよい。例えば、電力供給装置11は、インタフェース14を介してホストデバイス4から受信された電力を使用して、電力を1つまたは複数の構成要素に供給してもよい。いくつかの例では、電力供給装置11は、電力が外部デバイスから受信されるのを停止する場合など、シャットダウンモードで動作するときに電力を1つまたは複数の構成要素に供給するように構成された1つまたは複数の蓄電構成要素を含んでもよい。このようにして、電力供給装置11は、オンボードのバックアップ電源として機能することができる。1つまたは複数の蓄電構成要素のいくつかの例は、コンデンサ、超コンデンサ、およびバッテリなどを含むが、それらに限定されない。
記憶デバイス6はまた、情報を記憶するためにコントローラ8によって使用することができる揮発性メモリ12を含んでもよい。いくつかの例では、コントローラ8は、揮発性メモリ12をキャッシュとして使用してもよい。例えば、コントローラ8は、キャッシュされた情報13がメモリデバイス16に書き込まれるまで、キャッシュされた情報13を揮発性メモリ12に記憶してもよい。図1に示されるように、揮発性メモリ12は、電力供給装置11から受信された電力を消費してもよい。揮発性メモリ12の例は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックRAM(SRAM)、ならびに同時性ダイナミックRAM(SDRAM(例えば、DDR1、DDR2、DDR3、DDR3L、LPDDR3、およびDDR4など))を含むが、それらに限定されない。
記憶デバイス6は、記憶デバイス6の1つまたは複数の動作を管理することができるコントローラ8を含む。例えば、コントローラ8は、メモリデバイス16からのデータの読み込み、および/またはメモリデバイス16へのデータの書き込みを管理してもよい。いくつかの例では、コントローラ8は、メモリデバイス16によって記憶されたデータを管理するための1つまたは複数の動作を実行してもよい。例えば、コントローラ8は、メモリデバイス16によって記憶されたユーザデータに対するパリティデータを記憶することなど、メモリデバイス16によって記憶されたデータの完全性を保証するための1つまたは複数の動作を実行してもよい。コントローラ8の追加的な詳細は、図3を参照して以下で議論される。
本開示の1つまたは複数の技術に従って、記憶デバイス6は、少なくともいくつかのパリティ情報を記憶するためにコントローラ8によって使用することができる1つまたは複数のパリティメモリデバイス20を含んでもよい。いくつかの例では、パリティメモリデバイス20は、任意のタイプの不揮発性メモリデバイスを含んでもよい。パリティメモリデバイス20のいくつかの例は、NANDフラッシュメモリデバイスおよび/またはNORフラッシュメモリデバイスなどのフラッシュメモリデバイス、ストレージクラスメモリデバイス、ホログラフィックメモリデバイス、ならびに任意の他のタイプの不揮発性メモリデバイスを含むが、それらに限定されない。ストレージクラスメモリデバイスのいくつかの例は、相変化メモリ(PCM)デバイス、抵抗ランダムアクセスメモリ(ReRAM)デバイス、磁気抵抗ランダムアクセスメモリ(MRAM)デバイス、および強誘電体ランダムアクセスメモリ(F−RAM)を含むが、それらに限定されない。いくつかの例では、ストレージクラスメモリデバイスは、バイトアクセス可能であることができ、比較的高い持続性を有することができ(フラッシュメモリと比較して、またはフラッシュメモリよりも高い)、比較的低い書き込みおよび書き込み待ち時間を有することができる(例えば、フラッシュメモリよりも低く、いくつかの例では、DRAMと比較して)。
上記議論されたように、コントローラ8は、メモリデバイス16、パリティメモリデバイス20、またはその両方に、メモリデバイス16によって記憶されたユーザデータと関連付けられたパリティデータを記憶させてもよい。例えば、ユーザデータのブロックを記憶するとき、コントローラ8は、ユーザデータのブロックの排他的−OR(XOR)を判定し、およびユーザデータとともに記憶してもよい。ユーザデータのブロックを読み出すとき、コントローラ8は、ユーザデータの記憶されたブロックおよびユーザデータのブロックと関連付けられた記憶されたパリティデータの両方を読み込んでもよく、ならびにユーザデータのブロックを検証するために記憶されたパリティデータを使用してもよい。いくつかの例では、コントローラ8は、パリティデータをユーザデータとともにメモリデバイスの同一の物理的ページに記憶してもよい。例えば、コントローラ8は、パリティデータをユーザデータとともに図2のメモリデバイス16Aaのブロック17Aのページ19Aaに記憶してもよい。
コントローラ8によって使用されるパリティデータのサイズは、ECC強度と称されてもよい。いくつかの例では、より大きいサイズのパリティデータは、データ破損誤りに対するより良好な保護をもたらすことができる。しかしながら、パリティデータのサイズが増加するにつれて、パリティデータによって消費されるメモリの量も増加する。いくつかの例では、コントローラ8がパリティデータをユーザデータとともにメモリデバイスの同一の物理的ページに記憶する場合など、パリティデータのサイズは、ユーザデータのブロックのサイズとメモリデバイスの物理的ページのサイズとの間の差に制限されることがある。例えば、物理的ページ19Aaのサイズが8320バイトであり、およびユーザデータのブロックのサイズが8192バイトである場合、コントローラ8がユーザデータとして同一のページに記憶することができるパリティデータのサイズが128バイトに制限されることがある。しかしながら、いくつかの例では、例えば、データ破損誤りに対するより強度のある保護をもたらすために、ユーザデータのブロックのサイズとメモリデバイスの物理的ページのサイズとの間の制限されたサイズ差よりも大きいパリティデータをコントローラ8が記憶することが望ましいことがある。
いくつかの例では、コントローラ8は、パリティデータのサイズをメモリデバイス16の物理的ページのサイズ、メモリデバイス16の物理的ページのサイズとユーザデータのブロックのサイズとの間の差、またはその両方から独立させてもよい。例えば、コントローラ8は、ユーザデータおよびパリティデータの少なくともいくつかを、メモリデバイス16内の異なる物理的ページに記憶してもよい。1つの例として、コントローラ8は、パリティデータの第1の部分をユーザデータとともにメモリデバイス16Aaのページ19Aaに記憶してもよく、およびパリティデータの第2の部分をメモリデバイス16Aaのページ19Abに記憶してもよい。しかしながら、パリティデータの第2の部分がユーザデータとは別個のメモリデバイス16のページに記憶されるので、コントローラ8は、ユーザデータを読み出しおよび復号化するために、両方のページ(例えば、ページ19Aaおよびページ19Ab)を読み込む必要があることがある。同様に、ユーザデータを記憶するとき、コントローラ8は、メモリデバイス16における2つの異なる物理的ページに書き込む必要があることがあり、これは望ましくないことがある(例えば、サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加することに起因して)。別の例として、パリティデータを、メモリデバイス16のメモリデバイス内の対応するユーザデータとは異なる物理的ページに記憶することとは反対に、コントローラ8は、パリティデータの少なくとも一部をパリティメモリデバイス20に記憶してもよい。例えば、コントローラ8は、ユーザデータのブロックに対するパリティデータを判定し、ユーザデータのブロックをメモリデバイス16に記憶し、およびパリティデータの少なくとも一部をパリティメモリデバイス20に記憶してもよい。いくつかの例では、コントローラ8は、パリティデータの少なくとも一部をパリティメモリデバイス20に書き込むのと並列して、ユーザデータのブロックをメモリデバイス16に書き込んでもよい。同様に、いくつかの例では、コントローラ8は、パリティデータの少なくとも一部をパリティメモリデバイス20から読み込むのと並列して、ユーザデータのブロックをメモリデバイス16から読み込んでもよい。このようにして、コントローラ8は、望ましくない影響(サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加することに起因すること)なしに、またはその影響を低減させて、より大きなサイズのパリティデータを使用することができる。
図3は、コントローラ8の例示的な詳細を示す概念的かつ簡略的なブロック図である。いくつかの例では、コントローラ8は、アドレス変換モジュール22、書き込みモジュール24、維持モジュール26、読み込みモジュール28、スケジューリングモジュール30、および複数のチャネルコントローラ32A〜32N(総合的に、「チャネルコントローラ32」)を含んでもよい。他の例では、コントローラ8は、追加のモジュールもしくはハードウェアユニットを含んでもよく、またはより少ないモジュールもしくはハードウェアユニットを含んでもよい。コントローラ8は、マイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他のデジタル論理回路を含んでもよい。
コントローラ8は、インタフェース14を介してホストデバイス4とインタフェースしてもよく、ならびにメモリデバイス16へのデータの記憶およびメモリデバイス16からのデータの読み出しを管理してもよい。例えば、コントローラ8の書き込みモジュール24は、メモリデバイス16への書き込みを管理してもよい。例えば、書き込みモジュール24は、インタフェース14を介して、論理アドレスと関連付けられたデータ、およびユーザデータと称されてもよいデータを記憶するよう記憶デバイス6に指示するメッセージをホストデバイス4から受信してもよい。書き込みモジュール24は、メモリデバイス16へのユーザデータの書き込みを管理してもよい。
例えば、書き込みモジュール24は、データの記憶位置を管理するためにホストデバイス4によって使用される論理アドレスとメモリデバイスへのデータの書き込みを命令するために書き込みモジュール24によって使用される物理ブロックアドレスとの間の変換を管理するアドレス変換モジュール22と通信してもよい。コントローラ8のアドレス変換モジュール22は、メモリデバイス16によって記憶されたデータの論理アドレス(または論理ブロックアドレス)を、メモリデバイス16によって記憶されたデータの物理ブロックアドレスに変換するフラッシュ変換レイヤまたはテーブルを利用してもよい。例えば、ホストデバイス4は、記憶デバイス6への命令またはメッセージにおいてメモリデバイス16によって記憶されたデータの論理ブロックアドレスを利用してもよく、書き込みモジュール24は、メモリデバイス16へのデータの書き込みを制御するためにデータの物理ブロックアドレスを利用する。(同様に、読み込みモジュール28は、メモリデバイス16からのデータの読み込みを制御するために物理ブロックアドレスを利用してもよい。)物理ブロックアドレスは、メモリデバイス16の実際の、物理ブロックに対応する。いくつかの例では、アドレス変換モジュール22は、フラッシュ変換レイヤまたはテーブルを、キャッシュされた情報13内など、揮発性メモリ12に記憶してもよい。
このようにして、ホストデバイス4は、ある組のデータに対する静的論理ブロックアドレスを使用することを許可されることができ、データが実際に記憶される物理ブロックアドレスが変化することができる。アドレス変換モジュール22は、論理ブロックアドレスを物理ブロックアドレスにマッピングして、例えば、ウェアレベリング、またはガーベッジコレクションなどに起因してデータの物理ブロックアドレスが変化することができる間、ホストデバイス4による静的論理ブロックアドレスの使用を許可するためにフラッシュ変換レイヤまたはテーブルを維持してもよい。
上記議論されたように、コントローラ8の書き込みモジュール24は、メモリデバイス16へのデータの書き込みを管理するための1つまたは複数の動作を実行してもよい。例えば、書き込みモジュール24は、データを記憶するためにメモリデバイス16内の1つまたは複数のブロックを選択し、および選択されたブロックを含むメモリデバイス16のメモリデバイスに実際にデータを記憶させることによって、メモリデバイス16へのデータの書き込みを管理してもよい。上記議論されたように、書き込みモジュール24は、アドレス変換モジュール22に、選択されたブロックに基づいてフラッシュ変換レイヤまたはテーブルを更新させてもよい。例えば、書き込みモジュール24は、データおよび論理ブロックアドレスの一式を含むメッセージをホストデバイス4から受信し、データを記憶するためにメモリデバイス16の特定のメモリデバイス内のブロックを選択し、メモリデバイス16の特定のメモリデバイスに実際にデータを記憶させ(例えば、特定のメモリデバイスに対応するチャネルコントローラ32のチャネルコントローラを介して)、ならびにアドレス変換モジュール22に、論理ブロックアドレスが特定のメモリデバイス内の選択されたブロックに対応することを示すようにフラッシュ変換レイヤまたはテーブルを更新させてもよい。
読み込みモジュール28は同様に、メモリデバイス16からのデータの読み込みを制御してもよい。例えば、読み込みモジュール28は、関連付けられた論理ブロックアドレスを有するデータを要求するメッセージをホストデバイス4から受信してもよい。アドレス変換モジュール22は、フラッシュ変換レイヤまたはテーブルを使用して、論理ブロックアドレスを物理ブロックアドレスに変換してもよい。次いで、読み込みモジュール28は、データを物理ブロックアドレスから読み出すようにチャネルコントローラ32のうちの1つまたは複数を制御してもよい。書き込みモジュール24と同様に、読み込みモジュール28は、1つまたは複数のブロックを選択し、およびチャネルコントローラ32に、データを選択されたブロックから読み込ませることができるメッセージをチャネルコントローラ32に通信してもよい。
0の論理値(荷電した)を有するビットを1の前の論理値(荷電していない)を有するビットに書き込むために、大電流が使用される。この電流は、隣接フラッシュメモリセルの荷電に対する意図しない変化を生じさせることがあるのに十分に大きいことがある。意図しない変化から保護するために、任意のデータをブロック内のセルに書き込む前に、フラッシュメモリセルのブロック全体が1の論理値(荷電していない)に消去されてもよい。これを理由に、フラッシュメモリセルは、ブロックレベルにおいて消去され、およびページレベルにおいて書き込まれてもよい。
よって、1つのページさえも消費しない量のデータを書き込むために、コントローラ8は、ブロック全体を消去させてもよい。これは、メモリデバイス16に書き込まれることになるホストデバイス4から受信されたデータの量と、メモリデバイス16に実際に書き込まれたデータの量との間の比率を指す、ライトアンプリフィケーションにつながることがある。ライトアンプリフィケーションは、ライトアンプリフィケーションとともに発生しないフラッシュメモリセルのより早い摩耗の一因となる。フラッシュメモリセルに対する摩耗は、フラッシュメモリセルを消去するために使用される比較的高い電圧に起因してフラッシュメモリセルが消去されるときに発生することがある。複数の消去サイクルを通じて、比較的高い電圧によって、フラッシュメモリセルへの変化をもたらすことがある。最終的に、フラッシュメモリセルが使い古され、それによって、データがこれ以上セルに書き込まれないことがある。
コントローラ8がライトアンプリフィケーションおよびフラッシュメモリセルの磨耗を低減させるために実装することができる1つの技術は、ホストデバイス4から受信されたデータを、未使用ブロック(例えば、図2のブロック17)または部分的に使用されているブロックに書き込むことを含む。例えば、ホストデバイス4がデータを記憶デバイス6に送信する場合、それは、記憶デバイス6によって既に記憶されているデータからのわずかな変更のみを含む。次いで、コントローラは、旧データを古いまたはもはや有効でないものとしてマーク付けしてもよい。時間とともに、これは、旧データを保持するブロックを消去し、および更新されたデータを同一のブロックに書き込むことと比較して、露呈されるブロックの消去動作の数を低減させることができる。
書き込みコマンドをホストデバイス4から受信したことに応じて、書き込みモジュール24は、データを書き込むためのメモリデバイス16の物理的位置(ブロック17)を判定してもよい。例えば、書き込みモジュール24は、アドレス変換モジュール22または維持モジュール26から、空であり(例えば、データを記憶していない)、部分的に空であり(例えば、ブロックのいくつかのページのみがデータを記憶している)、または少なくともいくつかの有効でない(もしくは古い)データを記憶している1つまたは複数の物理ブロックアドレスを要求してもよい。1つまたは複数の物理ブロックアドレスを受信すると、書き込みモジュール24は、1つまたは複数のブロックを定義および/または選択し、ならびにチャネルコントローラ32にデータをブロックに書き込ませるメッセージをチャネルコントローラ32A〜32N(総合的に、「チャネルコントローラ32」)に通信してもよい。
チャネルコントローラ32の各チャネルコントローラは、チャネル18のそれぞれのチャネルに接続されてもよい。いくつかの例では、コントローラ8は、記憶デバイス6のチャネル18の数と同一の数のチャネルコントローラ32を含んでもよい。チャネルコントローラ32は、例えば、書き込みモジュール24、読み込みモジュール28、および/または維持モジュール26の制御の下、それぞれのチャネルに接続されたメモリデバイス16のアドレス指定、プログラミング、消去、および読み込みの詳細な制御を実行してもよい。
維持モジュール26は、記憶デバイス6(例えば、メモリデバイス16)の性能を維持し、および有効寿命を延ばすことに関連する動作を実行してもよい。例えば、維持モジュール26は、ウェアレベリングまたはガーベッジコレクションのうちの少なくとも1つを実装してもよい。
コントローラ8のスケジューリングモジュール30は、メモリデバイス16によって実行されることになる活動をスケジュールするための1つまたは複数の動作を実行してもよい。例えば、スケジューリングモジュール30は、メモリデバイス16のうちの1つまたは複数に、実行時間の間に1つまたは複数の活動を実行するよう命令するためにコントローラ8の他の構成要素から受信される要求をスケジュールしてもよい。いくつかの例では、スケジューリングモジュール30は、それらが受信された順序(例えば、ファーストイン・ファーストアウト、すなわちFIFO)で実行されることになる要求をスケジュールしてもよい。いくつかの例では、スケジューリングモジュール30は、要求のタイプ(例えば、読み込み要求、書き込み要求、消去要求、ガーベッジコレクション要求など)、要求が受信されてからの経過時間の量、要求の実行によって消費される電力の量、および帯域幅の考慮などを含むことができるが、それらに限定されない1つまたは複数のファクタに基づいて要求をスケジュールしてもよい。
いくつかの例では、ユーザデータの一式をメモリデバイス16によって記憶させることに加え、書き込みモジュール24は、メモリデバイス16に、データの一式を回復させ、および/またはデータの一式が損失もしくは破損したはずであるブロックのうちの1つもしくは複数であることを確認するために使用することができる情報(パリティデータ)を記憶させてもよい。いくつかの例では、書き込みモジュール24は、パリティデータをユーザデータとともにメモリデバイス16のメモリデバイスの同一の物理的ページに記憶させてもよい。例えば、アドレス変換モジュール22は、単一の物理的ページアドレスを単一の論理的ページアドレスにマッピングすることができる単純な論理−物理アドレスマッピングスキームを実装してもよい。そのようなスキームの例は、図4および5を参照して以下で説明される。
いくつかの例では、書き込みモジュール24がさらなるパリティデータをユーザデータのブロックに対して記憶させることが望ましいことがある。例えば、メモリデバイス16が使用され、および古くなるにつれて、メモリデバイス16のメモリセルの信頼性が低下することがある。いくつかの例では、メモリデバイス16のメモリセルの信頼性は、ビット誤り率(BER)として定量化されてもよい。そのようにして、読み込みモジュール28がユーザデータのブロックを読み出すことに成功する確率を改善するために、書き込みモジュール24は、BERが増加するにつれてさらなる大きなサイズのパリティデータを記憶してもよい。1つの例として、BERが閾値未満である場合、書き込みモジュール24は、BERが閾値を上回るときよりも少ないパリティデータをユーザデータのブロックごとに記憶してもよい。
しかしながら、いくつかの例では、書き込みモジュール24は、記憶されるパリティデータの量をさらに大きくさせることが容易に可能でないことがある。例えば、書き込みモジュール24がユーザデータのブロックに対するパリティデータをユーザデータとともにメモリデバイス16のメモリデバイスの同一の物理的ページに記憶させる例では、パリティデータのサイズが、ユーザデータのブロックのサイズとメモリデバイスの物理的ページのサイズとの間の差に制限されることがある。例えば、メモリデバイスにおける物理的ページが8320バイトを記憶することができ、およびユーザデータのブロックのサイズが8192バイトである場合、パリティデータのサイズが128バイトに制限されることがある。このサイズ制限は、書き込みモジュール24が、記憶されるパリティデータの量を容易に増加させることを阻害することがあり、それは望ましくないことがある。
図4は、メモリデバイスの同一のページに記憶されたユーザデータおよび対応するパリティデータの例示的な論理的構成を示す概念的な図である。図4に示されるように、ユーザデータ40Aおよび対応するパリティデータ42Aは、論理的ページアドレス44Aと関連付けられてもよく、ならびにユーザデータ40Bおよび対応するパリティデータ42Bは、論理的ページアドレス44Bと関連付けられてもよい。長さ46は、各論理的ページアドレスにおけるユーザデータおよびパリティデータの組み合わされた長さを表してもよい。いくつかの例では、ユーザデータ40Aおよびユーザデータ40Bは各々、8192バイト長であってもよく、ならびにパリティデータ42Aおよびパリティデータ42Bは各々、128バイト長であってもよく、それによって、各論理的ページアドレスに記憶されることになるデータの組み合わされた長さは、8320バイトとすることができる。図5は、メモリデバイスの同一のページに記憶されたユーザデータおよび対応するパリティデータの例示的な物理的構成を示す概念的な図である。いくつかの例では、物理的ページアドレス50Aおよび物理的ページアドレス50Bはそれぞれ、図2のページ19Aaおよびページ19Abに対応してもよい。長さ48は、書き込みモジュール24が各物理的ページアドレスに記憶させることができるデータの最大サイズを表してもよい。いくつかの例では、長さ48は、8320バイトであってもよい。
論理的ページアドレスにおけるデータのブロックの組み合わされたサイズが、各物理的ページアドレスに記憶することができるデータの最大サイズ以下である場合、書き込みモジュール24は、各物理的ページアドレスにおけるデータのブロックを、再配置なしで物理的ページアドレスに書き込ませてもよい。図4および5の例では、論理的ページアドレス44Aにおけるデータ(すなわち、ユーザデータ40Aおよびパリティデータ42A)のブロックの組み合わされた長さが長さ48以下であるので、書き込みモジュール24は、論理的ページアドレス44Aにおけるデータのブロックを、再配置なしで物理的ページアドレス50Aに書き込ませてもよい。しかしながら、この例では、書き込みモジュール24が、ユーザデータ40Aおよびパリティデータ42Aの組み合わされたサイズが長さ48よりも大きくなることなく、パリティデータ42Aのサイズを増加させることは可能でない。上記議論されたように、この制限は望ましくないことがある。
いくつかの例では、書き込みモジュール24は、パリティデータのサイズをメモリデバイス16の物理的ページのサイズと独立させてもよい。例えば、書き込みモジュール24は、ユーザデータおよびパリティデータの少なくともいくつかを、メモリデバイス16内の異なる物理的ページに記憶してもよい。1つの例として、コントローラ8は、パリティデータの第1の部分をユーザデータとともに、メモリデバイス16Aaのページ19Aaに記憶し、およびパリティデータの第2の部分をメモリデバイス16Aaのページ19Abに記憶してもよい。パリティデータの第2の部分がユーザデータとは別個のメモリデバイス16のページに記憶されるので、読み込みモジュール28は、ユーザデータを読み出すために、両方のページ(例えば、ページ19Aaおよびページ19Ab)を読み込んでもよい。同様に、ユーザデータを記憶するとき、書き込みモジュール24はメモリデバイス16における2つの異なる物理的ページに書き込んでもよい。
いくつかの例では、書き込みモジュール24によって記憶されたパリティデータのサイズは、メモリデバイスの物理的ページのサイズと独立してもよい。例えば、アドレス変換モジュール22は、論理的ページアドレスを複数の物理的ページアドレスにマッピングすることができる進化した論理−物理アドレスマッピングスキームを実装してもよい。そのようなスキームの例は、図6および7を参照して以下で説明される。
図6は、メモリデバイスの異なるページに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な論理的構成を示す概念的な図である。図6に示されるように、ユーザデータ40Aと対応するパリティデータ42A1およびパリティデータ42A2とは、論理的ページアドレス44Aと関連付けられてもよく、ならびにユーザデータ40Bと対応するパリティデータ42B1およびパリティデータ42B2とは、論理的ページアドレス44Bと関連付けられてもよい。長さ46は、各論理的ページアドレスにおけるユーザデータおよびパリティデータの組み合わされた長さを表してもよい。図6の例では、ユーザデータ40Aおよびユーザデータ40Bは各々、8192バイト長であってもよく、ならびにパリティデータ42A1、パリティデータ42A2、パリティデータ42B1、およびパリティデータ42B2は各々、128バイト長であってもよく、それによって、各論理的ページアドレスに記憶されることになるデータの組み合わされた長さは、8448バイトとすることができる。図7は、メモリデバイスの異なるページに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な物理的構成を示す概念的な図である。いくつかの例では、物理的ページアドレス50A、物理的ページアドレス50B、および物理的ページアドレス50Cはそれぞれ、図2のページ19Aa、19Ab、およびページ19Acに対応してもよい。長さ48は、書き込みモジュール24が各物理的ページアドレスに記憶させることができるデータの最大サイズを表してもよい。図7の例では、長さ48は、8320バイトであってもよい。
上記議論されたように、論理的ページアドレスにおけるデータのブロックの組み合わされたサイズが、各物理的ページアドレスに記憶することができるデータの最大サイズ以下である場合、書き込みモジュール24は、各物理的ページアドレスにおけるデータのブロックを、再配置なしで物理的ページアドレスに書き込ませてもよい。しかしながら、図6および7の例では、論理的ページアドレス44Aにおけるデータ(すなわち、ユーザデータ40A、パリティデータ42A1、およびパリティデータ42A2)のブロックの組み合わされた長さが長さ48よりも大きいので、書き込みモジュール24は、論理的ページアドレス44Aにおけるデータのブロックを、複数の物理的ページアドレスに書き込ませてもよい。例えば、書き込みモジュール24がデータのブロックを論理的ページアドレス44Aに記憶することを可能にするために、アドレス変換モジュール22は、論理的ページアドレス44Aを、物理的ページアドレス50Aの全て、および物理的ページアドレス50Bの第1の部分にマッピングしてもよい。同様に、書き込みモジュール24がデータのブロックを論理的ページアドレス44Bに記憶することを可能にするために、アドレス変換モジュール22は、論理的ページアドレス44Bを物理的ページアドレス50Bの第2の部分、および物理的ページアドレス50Cの第1の部分にマッピングしてもよい。マッピングに基づいて、書き込みモジュール24は、ユーザデータ40Aおよびパリティデータ42A1を物理的ページアドレス50Aに記憶し、パリティデータ42A2およびユーザデータ40Bを物理的ページアドレス50Bに記憶し、ならびにパリティデータ42B1およびパリティデータ42B2を物理的ページアドレス50Cに記憶してもよい。このようにして、書き込みモジュール24は、より大きいサイズのパリティデータを記憶することができる。
パリティデータの一部がユーザデータとは別個のページに記憶されてもよいので、書き込みモジュール24は、ユーザデータのブロックを記憶するために、2つの書き込み動作を実行してもよい。同様に、読み込みモジュール28は、ユーザデータのブロックを読み出すために、2つの読み込み動作を実行してもよい。いくつかの例では、ユーザデータの単一のブロックを読み出しまたは記憶するための複数の読み込みまたは書き込み動作が望ましくないことがある(例えば、サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加することに起因して)。
よって、いくつかの例では、パリティデータの少なくとも一部を、単一のメモリデバイス(例えば、メモリデバイス16のメモリデバイス)内の対応するユーザデータとは異なる物理的ページに記憶する代わりに、書き込みモジュール24は、パリティデータの少なくとも一部をパリティメモリデバイス20に記憶してもよい。例えば、書き込みモジュール24は、ユーザデータのブロックに対するパリティデータを判定し、ユーザデータのブロックをメモリデバイス16に記憶し、およびパリティデータの少なくとも一部をパリティメモリデバイス20に記憶してもよい。そのようなスキームの例は、図8および9を参照して以下で説明される。いくつかの例では、書き込みモジュール24は、パリティデータの一部をパリティメモリデバイス20に書き込むのと並列して、ユーザデータのブロックをメモリデバイス16に書き込んでもよい。同様に、いくつかの例では、読み込みモジュール28は、パリティデータの一部をパリティメモリデバイス20から読み込むのと並列して、ユーザデータのブロックをメモリデバイス16から読み込んでもよい。このようにして、書き込みモジュール24は、望ましくない影響(例えば、サイクルカウントが増加し、性能が低減し、信頼性が低減し、および読み込み障害が増加すること)なしに、またはその影響を低減させて、より大きなサイズのパリティデータを使用することができる。
図8は、異なるメモリデバイスに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な論理的構成を示す概念的な図である。図8に示されるように、ユーザデータ40Aと対応するパリティデータ42A1およびパリティデータ42A2とは、論理的ページアドレス44Aと関連付けられてもよく、ならびにユーザデータ40Bと対応するパリティデータ42B1およびパリティデータ42B2とは、論理的ページアドレス44Bと関連付けられてもよい。長さ46は、各論理的ページアドレスにおけるユーザデータおよびパリティデータの組み合わされた長さを表してもよい。図8の例では、ユーザデータ40Aおよびユーザデータ40Bは各々、8192バイト長であってもよく、ならびにパリティデータ42A1、パリティデータ42A2、パリティデータ42B1、およびパリティデータ42B2は各々、128バイト長であってもよく、それによって、各論理的ページアドレスに記憶されることになるデータの組み合わされた長さは、8448バイトとすることができる。
図9は、異なるメモリデバイスに記憶されたユーザデータおよび少なくともいくつかのパリティデータの例示的な物理的構成を示す概念的な図である。いくつかの例では、物理的ページアドレス50A、および物理的ページアドレス50Bはそれぞれ、図2のページ19Aaおよびページ19Abに対応してもよい。長さ48は、書き込みモジュール24がメモリデバイス16の各物理的ページアドレスに記憶させることができるデータの最大サイズを表してもよい。図9の例では、長さ48は、8320バイトであってもよい。長さ52は、パリティメモリデバイス20のパリティメモリデバイスに書き込まれるパリティデータのサイズを表してもよい。
図9に示されるように、書き込みモジュール24は、パリティデータの少なくとも一部をパリティメモリデバイス20に記憶してもよい。例えば、書き込みモジュール24は、ユーザデータ40Aに対する第1のパリティデータ42A1および第2のパリティデータ42A2を判定してもよい。図8に示されるように、ユーザデータ40A、第1のパリティデータ42A1、および第2のパリティデータ42A2は全て、論理的ページアドレス44Aと関連付けられてもよい。アドレス変換モジュール22は、ユーザデータ40Aおよび第1のパリティデータ42A1を、図2のページ19Aaに対応することができるメモリデバイス16の物理的ページアドレス50Aにマッピングし、ならびに第2のパリティデータ42A2をパリティメモリデバイス20にマッピングするマッピングを提供してもよい。マッピングに基づいて、書き込みモジュール24は、ユーザデータ40Aおよび第1のパリティデータ42A1を、図2のメモリデバイス16Aaのページ19Aaに書き込ませてもよく、ならびに第2のパリティデータ42A2をパリティメモリデバイス20に書き込ませてもよい。
図10は、本開示の1つまたは複数の技術に従った、パリティデータを、対応するユーザデータとは異なるメモリデバイスに記憶するための例示的な技術を示すフローチャートである。図10の技術は、説明を容易にするために、図1および3の記憶デバイス6およびコントローラ8を同時に参照して説明されるが、記憶デバイス6およびコントローラ8とは異なる構成を有するコンピューティングデバイスが、図10の技術を実行してもよい。
図10に示されるように、コントローラ8は、記憶されることになるデータのブロックを受信してもよい(1002)。例えば、コントローラ8の書き込みモジュール24は、記憶されることになるユーザデータのブロックを、図1のホスト4から受信してもよい。コントローラ8は、データのブロックに対するパリティデータを判定してもよい(1004)。例えば、書き込みモジュール24は、ホストデバイス4によって受信されたユーザデータのブロックに対するXORパリティデータを判定してもよい。いくつかの例では、書き込みモジュール24は、データのブロックに対して判定するためにパリティデータのサイズを選択してもよい。例えば、書き込みモジュール24は、ビット誤り率(BER)など、メモリデバイス16の1つまたは複数のヘルス統計に基づいてパリティデータのサイズを選択してもよい。1つの例として、BERが閾値未満である場合、書き込みモジュール24は、次いで、BERが閾値を上回るときに(例えば、データのブロックのサイズが8192バイトである場合、256バイト)データのブロックに対して判定するために、より小さなサイズのパリティデータ(例えば、データのブロックのサイズが8192バイトの場合、128バイト)を選択してもよい。
コントローラ8は、パリティデータおよびデータのブロックの組み合わされたサイズが主記憶アレイのページのサイズよりも大きいか否かを判定してもよい(1006)。例えば、書き込みモジュール24は、パリティデータおよびデータのブロックの組み合わされたサイズが、不揮発性メモリアレイ10のメモリデバイス16のメモリデバイスのページのサイズよりも大きいか否かを判定してもよい。
パリティデータおよびデータのブロックの組み合わされたサイズが主記憶アレイのページのサイズ以下である場合(1006の分岐で「No」)、コントローラ8は、データのブロックおよびパリティデータを主記憶アレイのページに書き込んでもよい(1008)。例えば、書き込みモジュール24は、チャネルコントローラ32Aに、データのブロックおよびパリティデータを、図2のメモリデバイス16Aaのブロック17Aのページ19Aaに書き込ませてもよい。
パリティデータおよびデータのブロックの組み合わされたサイズが主記憶アレイのページのサイズよりも大きい場合(1006の分岐で「Yes」)、コントローラ8は、データのブロックおよびパリティデータの第1の部分を主記憶アレイのページに書き込み、ならびにパリティデータの第2の部分をパリティメモリデバイスに書き込んでもよい(1010)。例えば、書き込みモジュール24は、チャネルコントローラ32Aに、データのブロックおよびパリティデータの第1の部分をページ19Aaに書き込ませ、ならびにパリティメモリデバイス20のパリティメモリデバイスに、パリティデータの第2の部分を記憶させてもよい。このようにして、コントローラ8は、パリティデータの少なくとも一部を、データの対応するブロックとは別個のメモリデバイスに記憶することができる。
上記動作は1つの例にすぎず、および他の変形例が考えられてもよい。例えば、いくつかの例では、コントローラ8は、パリティデータのサイズに関わらず、パリティデータのいずれも主記憶アレイに記憶しなくてもよく、およびパリティデータをパリティメモリデバイスに常に記憶してもよい。
本開示で説明された技術は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。例えば、説明された技術の種々の態様は、そのような構成要素の任意の組み合わせとともに、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または任意の他の同等な集積もしくは個別論理回路を含む、1つまたは複数のプロセッサ内で実装されてもよい。用語「プロセッサ」または「処理回路」は概して、上述した論理回路の単独、または他の論理回路もしくは任意の他の同等な回路との組み合わせのうちのいずれかを指してもよい。ハードウェアを含む制御ユニットはまた、本開示の技術のうちの1つまたは複数を実行してもよい。
そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示で説明された種々の技術をサポートするために、同一のデバイス内で、または別個のデバイス内で実装されてもよい。加えて、説明されたユニット、モジュールまたは構成要素のうちのいずれかは、ともに、または個別であるが、相互動作可能論理デバイスとして別個に実装されてもよい。モジュールまたはユニットとしての異なる特徴の説明は、異なる機能的態様を強調することが意図され、およびそのようなモジュールまたはユニットが、別個のハードウェア、ファームウェア、またはソフトウェア構成要素によって実現されるべきであることを必ずしも意味していない。むしろ、1つまたは複数のモジュールまたはユニットと関連付けられた機能は、別個のハードウェア、ファームウェア、もしくはソフトウェア構成要素によって実行されてもよく、または共通もしくは別個のハードウェア、ファームウェア、もしくはソフトウェア構成要素内で統合されてもよい。
本開示で説明された技術はまた、命令で符号化されたコンピュータ可読記憶媒体を含む製品で具体化または符号化されてもよい。符号化されたコンピュータ可読記憶媒体を含む製品に組み込まれ、または符号化された命令は、1つまたは複数のプログラマブルプロセッサ、または他のプロセッサに、コンピュータ可読記憶媒体に含まれ、または符号化された命令が1つまたは複数のプロセッサによって実行されるときなど、本明細書で説明された技術のうちの1つまたは複数を実装させてもよい。コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルリードオンリメモリ(PROM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電子的消去可能プログラマブルリードオンリメモリ(EEPROM)、フラッシュメモリ、ハードディスク、コンパクトディスクROM(CD−ROM)、フロッピーディスク、カセット、磁気媒体、光学媒体、または他のコンピュータ可読媒体を含んでもよい。いくつかの例では、製品は、1つまたは複数のコンピュータ可読記憶媒体を含んでもよい。
いくつかの例では、コンピュータ可読記憶媒体は、非一時的媒体を含んでもよい。用語「非一時的」は、記憶媒体が搬送波または伝播信号で具体化されないことを示す。ある例では、非一時的記憶媒体は、時間とともに変化することがあるデータを記憶してもよい(例えば、RAMまたはキャッシュに)。
種々の例が説明されてきた。それらのおよび他の例は、以下の特許請求の範囲の中にある。
2 記憶環境
4 ホストデバイス
6 記憶デバイス
8 コントローラ
10 不揮発性メモリアレイ
11 電力供給装置
12 揮発性メモリ
13 情報
14 インタフェース
16 メモリデバイス
16Aa メモリデバイス
16An メモリデバイス
16Na メモリデバイス
16Nn メモリデバイス
17 ブロック
17A ブロック
17N ブロック
18 チャネル
18A チャネル
18N チャネル
19Aa 物理的ページ
20 パリティメモリデバイス
22 アドレス変換モジュール
24 書き込みモジュール
26 維持モジュール
28 読み込みモジュール
30 スケジューリングモジュール
32 チャネルコントローラ
32A チャネルコントローラ
40A ユーザデータ
40B ユーザデータ
42A パリティデータ
42A1 パリティデータ
42A2 パリティデータ
42B パリティデータ
42B1 パリティデータ
42B2 パリティデータ
44A 論理的ページアドレス
44B 論理的ページアドレス
50A 物理的ページアドレス
50B 物理的ページアドレス
50C 物理的ページアドレス

Claims (20)

  1. 複数のメモリデバイスを含む主記憶アレイと、
    1つまたは複数のパリティメモリデバイスと、
    少なくとも、
    データのブロックを前記主記憶アレイに書き込み、
    前記データのブロックに対するパリティデータを判定し、および
    前記判定されたパリティデータの少なくとも一部を前記1つまたは複数のパリティメモリデバイスに書き込む
    ことによって、前記データのブロックを記憶するように構成されたコントローラと
    を備える、記憶デバイス。
  2. 前記コントローラは、
    前記データのブロックに対して判定するためにパリティデータのサイズを選択し、および
    前記判定されたパリティデータの前記少なくとも一部を前記1つまたは複数のパリティメモリデバイスに書き込むようにさらに構成され、
    前記選択されたパリティデータのサイズおよび前記データのブロックの組み合わされたサイズは、前記主記憶アレイのページのサイズよりも大きい
    請求項1に記載の記憶デバイス。
  3. 前記パリティデータを判定するために、前記コントローラは、前記データのブロックに対する第1のパリティデータおよび第2のパリティデータを判定するように構成され、
    前記データのブロックを前記主記憶アレイに書き込むために、前記コントローラは、前記データのブロックおよび前記第1のパリティデータを前記主記憶アレイのページに書き込むように構成され、ならびに
    前記パリティデータの前記一部を前記1つまたは複数のパリティメモリデバイスに書き込むために、前記コントローラは、前記第2のパリティデータを前記1つまたは複数のパリティメモリデバイスに書き込むように構成される
    請求項2に記載の記憶デバイス。
  4. 前記コントローラは、少なくとも、
    前記データのブロックを前記主記憶アレイから読み込み、
    前記パリティデータを前記1つまたは複数のパリティメモリデバイスから読み込み、および
    前記パリティデータに基づいて前記データのブロックを検証する
    ことによって、前記データのブロックを読み出すようにさらに構成される
    請求項1に記載の記憶デバイス。
  5. 前記1つまたは複数のパリティメモリデバイスは、前記主記憶アレイの前記複数のメモリデバイスとは異なるタイプのメモリデバイスである、請求項1に記載の記憶デバイス。
  6. 前記主記憶アレイの前記複数のメモリデバイスは、複数のフラッシュメモリデバイスを含み、および前記1つまたは複数のパリティメモリデバイスは、1つまたは複数の磁気抵抗ランダムアクセスメモリ(MRAM)、相変化ランダムアクセスメモリ(PRAM)、または抵抗ランダムアクセスメモリ(ReRAM)デバイスを含む、請求項5に記載の記憶デバイス。
  7. 記憶デバイスのコントローラによって、データのブロックを、複数のメモリデバイスを含む主記憶アレイに書き込むステップと、
    前記コントローラによって、前記データのブロックに対するパリティデータを判定するステップと、
    前記コントローラによって、前記判定されたパリティデータの少なくとも一部を1つまたは複数のパリティメモリデバイスに書き込むステップと
    を備える、方法。
  8. 前記データのブロックに対して判定するためにパリティデータのサイズを選択するステップと、
    前記判定されたパリティデータの前記少なくとも一部を前記1つまたは複数のパリティメモリデバイスに書き込むステップと
    をさらに備え、
    前記選択されたパリティデータのサイズおよび前記データのブロックの組み合わされたサイズは、前記主記憶アレイのページのサイズよりも大きい
    請求項7に記載の方法。
  9. 前記パリティデータを判定するステップは、前記データのブロックに対する第1のパリティデータおよび第2のパリティデータを判定するステップを含み、
    前記データのブロックを前記主記憶アレイに書き込むステップは、前記データのブロックおよび前記第1のパリティデータを前記主記憶アレイのページに書き込むステップを含み、ならびに
    前記パリティデータの前記一部を前記1つまたは複数のパリティメモリデバイスに書き込むステップは、前記第2のパリティデータを前記1つまたは複数のパリティメモリデバイスに書き込むステップを含む
    請求項8に記載の方法。
  10. 少なくとも、
    前記データのブロックを前記主記憶アレイから読み込み、
    前記パリティデータを前記1つまたは複数のパリティメモリデバイスから読み込み、および
    前記パリティデータに基づいて前記データのブロックを検証する
    ことによって、前記データのブロックを読み出すステップをさらに備える
    請求項7に記載の方法。
  11. 前記1つまたは複数のパリティメモリデバイスは、前記主記憶アレイの前記複数のメモリデバイスとは異なるタイプのメモリデバイスである、請求項7に記載の方法。
  12. 前記主記憶アレイの前記複数のメモリデバイスは、複数のフラッシュメモリデバイスを含み、および前記1つまたは複数のパリティメモリデバイスは、1つまたは複数の磁気抵抗ランダムアクセスメモリ(MRAM)、相変化ランダムアクセスメモリ(PRAM)、または抵抗ランダムアクセスメモリ(ReRAM)メモリデバイスを含む、請求項11に記載の方法。
  13. 実行されるときに、記憶デバイスの1つまたは複数のプロセッサに、
    データのブロックを、複数のメモリデバイスを含む主記憶アレイに書き込ませ、
    前記データのブロックに対するパリティデータを判定させ、および
    前記判定されたパリティデータの少なくとも一部を1つまたは複数のパリティメモリデバイスに書き込ませる、
    命令を記憶したコンピュータ可読記憶媒体。
  14. 前記1つまたは複数のプロセッサに、
    前記データのブロックに対して判定するためにパリティデータのサイズを選択させ、および
    前記判定されたパリティデータの前記少なくとも一部を前記1つまたは複数のパリティメモリデバイスに書き込ませる
    命令をさらに記憶し、
    前記選択されたパリティデータのサイズおよび前記データのブロックの組み合わされたサイズは、前記主記憶アレイのページのサイズよりも大きい
    請求項13に記載のコンピュータ可読記憶媒体。
  15. 前記1つまたは複数のプロセッサに、前記パリティデータを判定させる前記命令は、前記1つまたは複数のプロセッサに、前記データのブロックに対する第1のパリティデータおよび第2のパリティデータを判定させる命令を含み、
    前記1つまたは複数のプロセッサに、前記データのブロックを前記主記憶アレイに書き込ませる前記命令は、前記1つまたは複数のプロセッサに、前記データのブロックおよび前記第1のパリティデータを前記主記憶アレイのページに書き込ませる命令を含み、および
    前記1つまたは複数のプロセッサに、前記パリティデータの前記一部を前記1つまたは複数のパリティメモリデバイスに書き込ませる前記命令は、前記1つまたは複数のプロセッサに、前記第2のパリティデータを前記1つまたは複数のパリティメモリデバイスに書き込ませる命令を含む
    請求項14に記載のコンピュータ可読記憶媒体。
  16. 前記1つまたは複数のパリティメモリデバイスは、前記主記憶アレイの前記複数のメモリデバイスとは異なるタイプのメモリデバイスである、請求項13に記載のコンピュータ可読記憶媒体。
  17. 複数のメモリデバイスを含む主記憶アレイと、
    1つまたは複数のパリティメモリデバイスと、
    データのブロックを前記主記憶アレイに書き込む手段と、
    前記データのブロックに対するパリティデータを判定する手段と、
    前記判定されたパリティデータの少なくとも一部を1つまたは複数のパリティメモリデバイスに書き込む手段と
    を備える、システム。
  18. 前記データのブロックに対して判定するためにパリティデータのサイズを選択する手段と、
    前記判定されたパリティデータの前記少なくとも一部を前記1つまたは複数のパリティメモリデバイスに書き込む手段と
    をさらに備え、
    前記選択されたパリティデータのサイズおよび前記データのブロックの組み合わされたサイズは、前記主記憶アレイのページのサイズよりも大きい
    請求項17に記載のシステム。
  19. 前記パリティデータを判定する前記手段は、前記データのブロックに対する第1のパリティデータおよび第2のパリティデータを判定する手段を含み、
    前記データのブロックを前記主記憶アレイに書き込む前記手段は、前記データのブロックおよび前記第1のパリティデータを前記主記憶アレイのページに書き込む手段を含み、ならびに
    前記パリティデータの前記一部を前記1つまたは複数のパリティメモリデバイスに書き込む前記手段は、前記第2のパリティデータを前記1つまたは複数のパリティメモリデバイスに書き込む手段を含む
    請求項18に記載のシステム。
  20. 前記1つまたは複数のパリティメモリデバイスは、前記主記憶アレイの前記複数のメモリデバイスとは異なるタイプのメモリデバイスである、請求項17に記載のシステム。

JP2016157672A 2015-08-11 2016-08-10 保護されたデータとは別個のパリティデータの記憶 Pending JP2017079050A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/823,796 US10133625B2 (en) 2015-08-11 2015-08-11 Storing parity data separate from protected data
US14/823,796 2015-08-11

Publications (1)

Publication Number Publication Date
JP2017079050A true JP2017079050A (ja) 2017-04-27

Family

ID=57799964

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016157672A Pending JP2017079050A (ja) 2015-08-11 2016-08-10 保護されたデータとは別個のパリティデータの記憶

Country Status (8)

Country Link
US (1) US10133625B2 (ja)
JP (1) JP2017079050A (ja)
KR (1) KR101861924B1 (ja)
CN (1) CN106445724B (ja)
AU (1) AU2016213809B2 (ja)
CA (1) CA2938584A1 (ja)
DE (1) DE102016009806A1 (ja)
GB (1) GB2541299B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10120751B2 (en) * 2015-09-25 2018-11-06 Intel Corporation Techniques to recover data using exclusive OR (XOR) parity information
US10120797B1 (en) * 2016-09-30 2018-11-06 EMC IP Holding Company LLC Managing mapping metadata in storage systems
US20180137005A1 (en) * 2016-11-15 2018-05-17 Intel Corporation Increased redundancy in multi-device memory package to improve reliability
US10459809B2 (en) 2017-06-30 2019-10-29 Intel Corporation Stacked memory chip device with enhanced data protection capability
US10474527B1 (en) * 2017-06-30 2019-11-12 Seagate Technology Llc Host-assisted error recovery
US10970204B2 (en) * 2017-08-29 2021-04-06 Samsung Electronics Co., Ltd. Reducing read-write interference by adaptive scheduling in NAND flash SSDs
CN112074816A (zh) * 2018-03-16 2020-12-11 美光科技公司 Nand数据放置模式的集群奇偶校验
US10997071B2 (en) * 2018-11-27 2021-05-04 Micron Technology, Inc. Write width aligned storage device buffer flush
US10949297B2 (en) 2018-12-05 2021-03-16 Micron Technology, Inc. NAND device mixed parity management
US10942809B2 (en) * 2018-12-20 2021-03-09 Micron Technology, Inc. Changing of error correction codes based on the wear of a memory sub-system
US11106534B2 (en) 2019-02-27 2021-08-31 Western Digital Technologies, Inc. 3-dimensional NAND flash layer variation aware SSD raid
CN109992444A (zh) * 2019-03-25 2019-07-09 深圳忆联信息系统有限公司 一种基于硬件的端对端数据保护方法、装置、计算机设备及存储介质
US11164652B2 (en) 2019-06-21 2021-11-02 Micron Technology, Inc. Two-layer code with low parity cost for memory sub-systems
US10838811B1 (en) * 2019-08-14 2020-11-17 Silicon Motion, Inc. Non-volatile memory write method using data protection with aid of pre-calculation information rotation, and associated apparatus
TWI714248B (zh) * 2019-09-09 2020-12-21 新唐科技股份有限公司 記憶體控制器與資料保護方法
KR20210034711A (ko) 2019-09-20 2021-03-31 삼성전자주식회사 메모리 셀의 신뢰성에 따라 패리티 비트들을 선택적으로 생성하는 저장 장치 및 그것의 동작 방법
US11416336B2 (en) 2019-10-15 2022-08-16 International Business Machines Corporation Managing parity data associated with configuration register data
CN110708513B (zh) * 2019-10-18 2021-06-01 中国科学院长春光学精密机械与物理研究所 一种8k视频多核异构处理装置
US11119855B2 (en) * 2019-10-24 2021-09-14 International Business Machines Corporation Selectively storing parity data in different types of memory
US11004535B1 (en) 2019-12-17 2021-05-11 Sandisk Technologies Llc Robust storage of bad column data and parity bits on word line
US11630725B2 (en) * 2019-12-24 2023-04-18 Micron Technology, Inc. Management of parity data in a memory sub-system
US11200162B2 (en) 2020-04-28 2021-12-14 Western Digital Technologies, Inc. Condensing logical to physical table pointers in SSDs utilizing zoned namespaces
US11296729B2 (en) 2020-07-23 2022-04-05 Micron Technology, Inc. Data reliability for extreme temperature usage conditions in data storage
US11385961B2 (en) * 2020-08-14 2022-07-12 Micron Technology, Inc. Adaptive parity techniques for a memory device
CN112764683B (zh) * 2021-01-22 2023-01-10 苏州浪潮智能科技有限公司 存储块管理信息同步记录方法、系统、终端及存储介质
JP2022146585A (ja) 2021-03-22 2022-10-05 キオクシア株式会社 メモリシステム
US11822814B2 (en) * 2022-02-28 2023-11-21 Western Digital Technologies, Inc. Dynamic XOR bin mapping in memory devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05326871A (ja) * 1992-05-26 1993-12-10 Kokusai Electric Co Ltd メモリモジュール
JP2013130899A (ja) * 2011-12-20 2013-07-04 Sony Corp 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2013225830A (ja) * 2012-03-19 2013-10-31 Toshiba Corp メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080080882A (ko) * 2007-03-02 2008-09-05 삼성전자주식회사 Ecc용 레이어를 구비하는 다층 구조 반도체 메모리 장치및 이를 이용하는 에러 검출 및 정정 방법
CN101604250B (zh) * 2008-06-12 2014-07-16 普安科技股份有限公司 储存虚拟化系统中更新实体储存装置的控制程序的方法
US8516343B2 (en) 2008-11-10 2013-08-20 Fusion-Io, Inc. Apparatus, system, and method for retiring storage regions
KR101526497B1 (ko) * 2008-11-27 2015-06-10 삼성전자주식회사 시스템 온 칩 및 이에 대한 정보 처리 방법
US7818525B1 (en) 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
EP2513795B1 (en) 2009-12-16 2014-03-12 SanDisk IL Ltd Auxiliary parity bits for data written in multi-level cells
US8726126B2 (en) 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8533550B2 (en) 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
US8769374B2 (en) 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
CN103329103B (zh) 2010-10-27 2017-04-05 希捷科技有限公司 使用用于基于闪存的数据存储的自适应ecc技术的方法和设备
US9058288B2 (en) 2011-04-03 2015-06-16 Apple Inc. Redundant storage in non-volatile memory by storing redundancy information in volatile memory
US8880977B2 (en) * 2011-07-22 2014-11-04 Sandisk Technologies Inc. Systems and methods of storing data
US8898541B2 (en) 2011-11-30 2014-11-25 Sony Corporation Storage controller, storage device, information processing system, and storage controlling method
US8656257B1 (en) 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
KR101938210B1 (ko) 2012-04-18 2019-01-15 삼성전자주식회사 낸드 플래시 메모리, 가변 저항 메모리 및 컨트롤러를 포함하는 메모리 시스템의 동작 방법
WO2013190597A1 (en) 2012-06-21 2013-12-27 Hitachi, Ltd. Flash memory device and storage control method
US8924820B2 (en) * 2012-07-27 2014-12-30 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory system, and memory control method
US9021339B2 (en) 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems
JP6327714B2 (ja) 2012-11-30 2018-05-23 学校法人 中央大学 半導体記憶装置およびその制御方法
KR101977684B1 (ko) 2012-12-12 2019-05-13 삼성전자 주식회사 저항체를 이용한 비휘발성 메모리 장치를 제어하는 메모리 컨트롤러 동작방법, 상기 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 메모리 시스템 및 비휘발성 메모리 장치
CN103164343B (zh) * 2013-02-27 2015-12-09 山东大学 基于相变存储器的分页、ecc校验及多位预取方法及其结构
US9262267B2 (en) 2013-12-02 2016-02-16 Intel Corporation Error correction in solid state drives (SSD)
US9262268B2 (en) * 2013-12-20 2016-02-16 Seagate Technology Llc Method to distribute user data and error correction data over different page types by leveraging error rate variations
US10182447B2 (en) 2014-05-08 2019-01-15 Lg Electronics Inc. Method for processing received signal by forming RE group in MIMO receiver
US9348695B2 (en) * 2014-05-21 2016-05-24 Sandisk Technologies Inc. System and method of storing redundancy data
KR102298607B1 (ko) * 2015-02-17 2021-09-06 삼성전자주식회사 저항성 메모리 시스템 및 저항성 메모리 시스템의 동작 방법
US9830093B2 (en) * 2015-03-27 2017-11-28 Intel Corporation Method and apparatus for improving immunity to defects in a non-volatile memory
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05326871A (ja) * 1992-05-26 1993-12-10 Kokusai Electric Co Ltd メモリモジュール
JP2013130899A (ja) * 2011-12-20 2013-07-04 Sony Corp 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2013225830A (ja) * 2012-03-19 2013-10-31 Toshiba Corp メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data

Also Published As

Publication number Publication date
KR101861924B1 (ko) 2018-05-28
GB2541299B (en) 2020-02-05
CA2938584A1 (en) 2017-02-11
AU2016213809B2 (en) 2017-11-23
DE102016009806A1 (de) 2017-02-16
CN106445724A (zh) 2017-02-22
US20170046221A1 (en) 2017-02-16
KR20170019330A (ko) 2017-02-21
CN106445724B (zh) 2020-06-16
AU2016213809A1 (en) 2017-03-02
GB2541299A (en) 2017-02-15
US10133625B2 (en) 2018-11-20

Similar Documents

Publication Publication Date Title
CN106445724B (zh) 与受保护数据分开存储奇偶校验数据
US11068170B2 (en) Multi-tier scheme for logical storage management
US9842059B2 (en) Wear leveling in storage devices
US10275310B2 (en) Updating exclusive-or parity data
US10289408B2 (en) Managing wear of system areas of storage devices
US9645769B2 (en) Performance acceleration during shutdown of a data storage device
KR101933763B1 (ko) 연판정 디코딩을 위한 물리적 페이지 어드레스들을 상관시키는 것
US9582192B2 (en) Geometry aware block reclamation
US20170206170A1 (en) Reducing a size of a logical to physical data address translation table
US10025664B2 (en) Selective buffer protection
US20180024751A1 (en) Metadata management on a storage device
CN116888585A (zh) 用于简单复制命令的基于高速缓存的流
US20160211024A1 (en) Decoding data using a reserved word line
CN114730247A (zh) 具有数据的最小写入大小的存储设备
US11893253B1 (en) Dynamic TD-PPM state and die mapping in multi-NAND channels
US11650758B2 (en) Data storage device and method for host-initiated cached read to recover corrupted data within timeout constraints
WO2023080928A1 (en) Dynamic controller buffer management and configuration
WO2023043501A1 (en) Data storage devices, systems, and related methods to determine writing fragmentation levels of memory devices
CN116301570A (zh) 用于无dram ssd的企业主存储器缓冲区

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170809

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180404

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180508