JP6053078B2 - 物理ページ、論理ページ、およびコードワードの対応 - Google Patents

物理ページ、論理ページ、およびコードワードの対応 Download PDF

Info

Publication number
JP6053078B2
JP6053078B2 JP2015500482A JP2015500482A JP6053078B2 JP 6053078 B2 JP6053078 B2 JP 6053078B2 JP 2015500482 A JP2015500482 A JP 2015500482A JP 2015500482 A JP2015500482 A JP 2015500482A JP 6053078 B2 JP6053078 B2 JP 6053078B2
Authority
JP
Japan
Prior art keywords
data
logical
page
physical
memory
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.)
Active
Application number
JP2015500482A
Other languages
English (en)
Other versions
JP2015510213A (ja
Inventor
エー. マニング,トロイ
エー. マニング,トロイ
ディー. ラーセン,トロイ
ディー. ラーセン,トロイ
エル. カリー,マーティン
エル. カリー,マーティン
Original Assignee
マイクロン テクノロジー, インク.
マイクロン テクノロジー, インク.
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 マイクロン テクノロジー, インク., マイクロン テクノロジー, インク. filed Critical マイクロン テクノロジー, インク.
Publication of JP2015510213A publication Critical patent/JP2015510213A/ja
Application granted granted Critical
Publication of JP6053078B2 publication Critical patent/JP6053078B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/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
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • 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
    • 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
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/104Metadata, i.e. metadata associated with RAID systems with parity
    • 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/061Improving I/O performance
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Landscapes

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

Description

本開示は、全般的には、半導体メモリおよび方法に関し、さらに詳細には、物理ページ、論理ページ、およびコードワードの対応のための装置および方法に関する。
メモリデバイスは、通常、コンピュータまたは他の電子デバイスにおける内蔵型の半導体、集積回路として提供される。揮発性メモリおよび不揮発性メモリを含む多数の異なる種類のメモリが存在する。揮発性メモリはその情報(例えばデータ、エラー情報、その他)を保持するにあたり電力を必要とし、中でもとりわけランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、および同期ダイナミックランダムアクセスメモリ(SDRAM)を含む。不揮発性メモリは、格納されたデータを電力非供給時に保持することにより永続的なデータを提供し得、中でもとりわけNAND型フラッシュメモリ、NOR型フラッシュメモリ、リードオンリーメモリ(ROM)、電気的消去可能プログラマブルROM(EEPROM)、消去可能プログラマブルROM(EPROM)、および可変抵抗メモリ(例えば相変化ランダムアクセスメモリ(PCRAM)、抵抗変化型メモリ(RRAM(登録商標))、および磁気抵抗ランダムアクセスメモリ(MRAM)など)を含み得る。
メモリデバイスをともに組み合わせることにより、メモリシステムのストレージボリューム(ソリッドステートドライブ(SSD)など)が形成され得る。ソリッドステートドライブは、様々なその他の種類の不揮発性メモリおよび揮発性メモリの中でもとりわけ、不揮発性メモリ(例えばNAND型フラッシュメモリおよび/またはNOR型フラッシュメモリ)を含み得、および/または揮発性メモリ(例えばDRAMおよびSRAM)を含み得る。
SSDはコンピュータのための主要なストレージボリュームとしてハードディスク装置に取って代わるために用いられ得る。なぜならソリッドステートドライブは、性能、サイズ、重量、堅牢性、作動温度範囲、および電力消費に関してハードドライブに優れ得るためである。例えばSSDは、可動パーツを有さないため、磁気ディスク装置と比較してより優れた性能を有し得る。可動パーツが存在しないことにより、シークタイムの遅延、レイテンシの遅延、および磁気ディスク装置に関連付けられた他の電気機械的な遅延が回避され得る。SSD製造業者は不揮発性フラッシュメモリを用いることにより、内部バッテリ供給を使用しないフラッシュSSDを作製し得る。それにより、SSDはより多くの用途に適したものとなり、よりコンパクトなものとなる。
SSDは、例えばデータを(例えばメモリデバイスとホストとの間で)転送するための読み出し動作および書き込み動作などのメモリ動作に関連するコマンドをホストから受け取り得る。例えばSSDに関連する処理能力を増強すること、および/またはSSDの格納容量を増加すること、は有益であり得る。
本開示のいくつかの実施形態に係る少なくとも1つのメモリシステムを含むコンピューティングシステムの形態における装置のブロック図である。 本開示のいくつかの実施形態に係るページストライプレイアウトのブロック図である。 本開示のいくつかの実施形態に係る既知の不良部分を含むページストライプレイアウトのブロック図である。 本開示のいくつかの実施形態に係る強制ユニットアクセスを含む、または追加的な書き込みデータを含まない、ページストライプレイアウトのブロック図である。 本開示のいくつかの実施形態に係る論理ページを書き込むためのバッファアロケーションのブロック図である。 本開示のいくつかの実施形態に係るウェアレベリングのためのバッファアロケーションのブロック図である。
本開示は、物理ページ、論理ページ、およびコードワードの対応のための装置および方法に関する。いくつかの方法は、いくつかの論理ページのデータをいくつかのコードワードとしてエラーコーディングすることと、いくつかのコードワードをいくつかの物理ページのメモリに書き込むことと、を含む。データの論理ページの個数はメモリの物理ページの個数と異なり得る。
ページマッピングに対する先行技術に係るいくつかのアプローチは論理ページのデータと物理ページのメモリとの間の1対1対応を含むものであった。すなわち、1つの論理ページのデータ内のデータ量は1つの物理ページのメモリ内に格納されるデータ量に等しいものであった。対照的に本開示のいくつかの実施形態では、1つの論理ページのデータのサイズ(例えばホスト論理ページサイズ)は、1つの物理ページのメモリのサイズ(例えばNANDページサイズ)から分離される。本開示のいくつかの実施形態では、コードワード(例えば誤り訂正符号(ECC)コードワード)は1つの物理ページのメモリのサイズには依存し得るが、1つの論理ページのデータのサイズからは独立し得る。したがって異なるホストセクタサイズが任意のページのメモリにマッピングされ得るよう、柔軟なサイズの論理ページのデータが任意のコードワードサイズにわたって提供され得る。
本開示のいくつかの実施形態は、一定のコードワードサイズを保持しつつ、ECCコードワードに対する可変コードレートを含み得る。したがって本開示のいくつかの実施形態は、(例えば物理ページペイロードサイズにおけるよりもむしろ)コードワードペイロードサイズにおいてバッファメモリを管理し得る。RAINストライプ(例えば柔軟なストライプ長さを含む)の使用可能性は欠陥保護を提供するために保持され得る。ファームウェアは速度を改善するために実行経路から除外され得る。
本開示の以下の詳細な説明において、添付の図面が参照される。なお、添付の図面は本開示の一部を形成するものであり、添付の図面においては1つまたは複数の実施形態が実施され得る1つまたは複数の方法が例示により示される。これらの実施形態は、当業者が本開示の実施形態を実施することが可能となるよう十分詳細に説明される。他の実施形態も利用され得ること、およびプロセス的変更例、電気的変更例、および/または構造的変更例が本開示の範囲から逸脱することなく可能であることが理解されるべきである。特に図面における参照番号に関して本明細書において用いられる「N」という識別子は、そのように指定された特定の特徴物がいくつか含まれ得ることを示す。本明細書で用いられる「いくつかの」特定物は、1つまたは複数の係る特定物を指し得る(例えばいくつかのメモリデバイスは1つまたは複数のメモリデバイスを指し得る)。
本明細書における図面は、番号付与の習慣にしたがって、最初の桁(単数または複数)は図面番号に対応し、残余の桁は図面における構成要素または構成品を指す。異なる図面の間での同様の構成要素または構成品は同一の桁を使用することにより指定され得る。例えば222は図2における要素「22」を参照し、同様の構成要素が図3では322として参照され得る。理解され得るように、本明細書における様々な実施形態において示される構成要素は、本開示のいくつかの追加的な実施形態を提供するために、追加、交換、および/または排除され得る。加えて、理解されるように、これらの図面において提供される構成要素の比率および相対的尺度は本発明の特定の実施形態を示すために用いられたものであり、制限的な意味で解釈されるべきではない。
図1は本開示のいくつかの実施形態に係る少なくとも1つのメモリシステム104を含むコンピューティングシステム100の形態における装置のブロック図である。本明細書で用いるメモリシステム104、コントローラ108、またはメモリデバイス110も、それぞれ「装置」として別個に考えられ得る。メモリシステム104は例えばソリッドステートドライブ(SSD)であり得、ホストインターフェース106、コントローラ108(例えばプロセッサおよび/または他の制御回路)、いくつかのメモリデバイス110−1、……、110−N(例えばNAND型フラッシュデバイスなどのソリッドステートメモリデバイス)を含み得、係るメモリデバイスはメモリシステム104のためのストレージボリュームを提供する。
図1において示すように、コントローラ108は複数のチャネルを介してホストインターフェース106およびメモリデバイス110−1、……、110−Nに連結され得、メモリシステム104とホスト102との間でデータを転送するために用いられ得る。インターフェース106は標準インターフェースの形態であり得る。例えばメモリシステム104がコンピューティングシステム100内のデータストレージのために用いられる場合、インターフェース106は、他のコネクタおよびインターフェースの中でもとりわけ、シリアル・アドバンスド・テクノロジー・アタッチメント(SATA)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe)、または汎用シリアルバス(USB)であり得る。一方、全般に、インターフェース106は、制御信号、アドレス信号、データ信号、および他の信号を、メモリシステム104と、インターフェース106に対する互換性を有するレセプタを有するホスト102と、の間で渡すためのインターフェースを提供し得る。
ホスト102は他種類のホストの中でもとりわけパーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、モバイル電話、またはメモリカードリーダなどのホストシステムであり得る。ホスト102はシステムマザーボードおよび/またはバックプレーンを含み得、いくつかのメモリアクセスデバイス(例えばいくつかのプロセッサ)を含み得る。
コントローラ108は他の動作の中でも、データ読み出し、書き込み、および消去の動作を制御するためにメモリデバイス110−1、……、110−Nと通信し得る。特定的に図示はしないがいくつかの実施形態ではコントローラ108は、コントローラ108をメモリデバイス110−1、……、110−Nに連結する各チャネルに対して個別的なメモリチャネルコントローラを含み得る。コントローラ108は例えば、いくつかのメモリデバイス110−1、……、110−Nへのアクセスを制御するための、および/またはホスト102とメモリデバイス110−1、……、110−Nとの間のデータ転送を支援するための、ハードウェアおよび/もしくはファームウェア(例えば1つまたは複数の集積回路など)の形態におけるいくつかの構成品、ならびに/またはソフトウェアを含み得る。
いくつかの実施形態では図1に示すように、コントローラ108は、エラーコーディングコンポーネント112(例えば誤り訂正符号(ECC)エンジンなどのエラー符号器)、バッファリングコンポーネント114、マッピングコンポーネント116、独立NAND冗長アレイ(RAIN:redundant array of independent NAND)コンポーネント118を含み得る。エラーコーディングコンポーネント112、バッファリングコンポーネント114、マッピングコンポーネント116、およびRAINコンポーネント118のうちのそれぞれは、別個のコンポーネント(例えば特定用途集積回路(ASIC))であってもよく、またはコントローラ108内の回路により提供される機能を反映するものであり、必ずしもコントローラ108の他の部分から分離した別個の物理的形態を有さなくてもよい。図1ではコントローラ108内のコンポーネントとして図示されているが、エラーコーディングコンポーネント112、バッファリングコンポーネント114、マッピングコンポーネント116、およびRAINコンポーネント118のうちのそれぞれはコントローラ108の外部にあってもよく、またはコントローラ108の内部に配置されたいくつかのコンポーネントと、コントローラ108に外部に配置されたいくつかのコンポーネントと、を有してもよい。例えばバッファリングコンポーネントは、コントローラ108上に配置されたいくつかのバッファと、コントローラ108の外部に配置されたいくつかのバッファと、を含み得る。
エラーコーディングコンポーネント112は、いくつかの論理ページのデータをいくつかのコードワードとしてエラーコーディングするよう構成され得る。例えばエラーコーディングコンポーネント112は、本明細書でさらに詳細に説明するように非整数個の論理ページのデータを整数個のコードワードとしてエラーコーディングするよう構成され得る。エラーコーディングコンポーネント112は、1つの論理ページのデータおよび非整数個の追加的な論理ページのデータを整数個のコードワードとしてエラーコーディングするよう構成され得る。
コードワードは、ラッパーおよびペイロードを含む合計サイズを有し得る。コードワードペイロードはコードワード内にエンコードされたデータ(例えばユーザデータ)を指し得る。コードワードラッパーは、ユーザデータとともにコードワード内にエンコードされたエラー情報を指し得る。エラーコーディングコンポーネント112は、可変コードワードラッパーサイズおよび可変コードワードペイロードサイズをプログラム可能に使用し得る。可変コードワードラッパーおよびペイロードサイズは、ユーザ機能としてプログラム可能(例えばホストインターフェース106を介してプログラム可能)であってもよく、または特定用途のために製造後にプログラムされてもよい。例えばコードワードラッパーサイズは、コードワードペイロードに対する誤り訂正の所望量に応じてプログラムされ得る。いくつかの実施形態ではコードワードペイロードサイズは、特定のコードワードラッパーサイズに基づいてプログラムされ得る(例えば、固定のおよび/または整数個のコードワードは、コードワードの合計サイズが固定される一方で、ラッパーおよび/またはペイロードのサイズが可変となるよう、物理ページ内に適合するよう設計される)。合計コードワードサイズのうちでコードワードラッパーが大きいほど、コードワードペイロードに対するエラー保護は大きくなるが、その結果としてコードワードペイロードは小さくなり、したがって、ユーザデータに関するメモリ密度は小さくなる。なぜなら、ユーザデータがより小さい部分に分割され、それぞれの部分には、ユーザデータとともに、より大きいコードワードラッパーが格納されるためである。特定のコードワードラッパーサイズおよび/またはコードワードペイロードサイズがプログラムされると、データは、プログラムされたペイロードサイズを有するコードワードとしてエラーコーディングされ得る。
合計コードワードサイズに対するコードワードペイロードサイズの比率は本明細書ではコードレートとして呼称される。本開示のいくつかの実施形態では、第1論理ページのデータの1部分は第1コードレートを用いて第1コードワードとしてエラーコーディングされ、第2論理ページのデータの1部分は第2コードレートを用いて第2コードワードとしてエラーコーディングされ得る。第1コードワードおよび第2コードワードのサイズは等しくてもよい。したがって第1コードワードのコードワードペイロードサイズは、第2コードワードのコードワードペイロードサイズと異なり得る。いくつかの実施形態ではコードレートはプログラム可能なオプションとして設定され得る。
バッファリングコンポーネント114は、(例えば特定の物理バッファが2つ以上の論理バッファセグメントにセグメント化されるよう、)複数の論理バッファセグメントにセグメント化された複数の物理バッファを含み得る。各論理バッファセグメントはコードワードペイロードサイズに対応し得る(例えば各論理バッファセグメントはコードワードペイロードに格納可能な情報量と同一の情報量を格納可能である)。各物理バッファは物理ページサイズに対応し得る(例えば各物理バッファは各物理ページに格納可能な情報量と同一の情報量を格納可能である)。複数の物理バッファのうちのいくつかはコントローラ108の外部および/または内部に配置され得る。コントローラ108は、論理ページサイズに基づいてホスト102と通信するよう、且つ合計コードワードサイズに基づいてメモリデバイス110−1、……、110−Nをバッファ管理するよう、構成され得る。
いくつかの実施形態では、コントローラ108は、いくつかの論理ページのデータの1部分を、それぞれがいくつかの論理バッファセグメントのうちのそれぞれのサイズに等しいペイロードサイズを有する、いくつかのコードワードとしてエラーコーディングすることにより、いくつかの論理ページのデータの当該部分をいくつかのコードワードとしてエラーコーディングするよう構成され得る。いくつかのコードワードのペイロードは、物理ページのメモリに書き込まれる前に、いくつかの論理バッファセグメントにバッファされ得る。
いくつかの実施形態では、コントローラ108はマッピングコンポーネント116を含み得、複数の論理ページのデータを複数の対応する物理ページのメモリにマッピングするよう構成され得る。複数の論理ページのデータのうちの非整数個は、複数の物理ページのメモリのうちのそれぞれにマッピングされ得る。マッピングコンポーネント116に関連する追加的な機能については、特に図5を参照して本明細書でより詳細に説明する。
RAINコンポーネント118はメモリデバイス110、……、110−Nに格納されたデータを保護することを支援し得る。RAINは、例えば複数のメモリデバイスの間で情報を分割および/または複製するコンピュータ情報格納方式に対する包括的用語である。RAINアレイ内の複数のメモリデバイスは、ユーザおよびコンピュータのオペレーティングシステムに対しては、単一のメモリデバイス(例えばディスク)であるかのように見え得る。RAINは、情報の異なる部分が異なるメモリデバイス(例えばメモリデバイス110、……、110−N)上に格納されるよう、ストライプ化(例えば分割化)情報を含み得る。分割データを格納する2つ以上のデバイスの部分はストライプと総称される。対照的にRAINはミラーリングも含み得、ミラーリングはデータの重複コピーを2つ以上のデバイス上に格納することを含み得る。例えば、書き込みデータはN個のメモリデバイスのうちのN−1個にわたりストライプ化され、エラー情報は第N番目のメモリデバイスに格納され得る。エラー情報(例えばパリティデータ)はRAINコンポーネント118により(例えばXOR回路により)計算され、第N番目のメモリデバイスに書き込まれ得る。RAINコンポーネント118は柔軟なストライプ長さを使用し得る。RAINコンポーネント118は、複数のメモリデバイス110−1、……、110−Nにわたるストライプ状のデータの書き込みおよび/または読み出しを行うよう構成され得る。例えばコントローラ108は複数物理ページのメモリから1つのストライプのデータを読み出すよう構成され得る。ここで複数物理ページのメモリのうちのそれぞれは、それぞれの複数のコードワードを格納する。コントローラ108は、複数物理ページのメモリのうちの1つからのそれぞれの複数のコードワードのうちの2つ以上のペイロード部分を組み合わせることにより、1つの論理ページのデータを形成するよう構成され得る。次に論理ページのデータはホストに(例えばいくつかのセクタとして)転送され得る。RAIN動作に関する追加的な詳細については本明細書で特に図2を参照してより詳細に説明する。
メモリデバイス110−1、……、110−Nはいくつかのアレイのメモリセル(例えば不揮発性メモリセル)を含み得る。係るアレイは例えばNANDアーキテクチャを有するフラッシュアレイであり得る。しかし実施形態は必ずしも特定種類のメモリアレイまたはアレイアーキテクチャに限定されるわけではない。メモリセルは例えばいくつかの物理ページを含むいくつかのブロックへとグループ化され得る。いくつかのブロックが1つのプレーンのメモリセルに含まれ得、アレイはいくつかのプレーンを含み得る。1例として、メモリデバイスは単位ページあたり8KB(キロバイト)のユーザデータ、単位ブロックあたり128ページのユーザデータ、単位プレーンあたり2048ブロック、および単位デバイスあたり16プレーンを格納するよう構成され得る。
動作中、データは例えば1つの物理ページのデータとして、メモリシステム(例えばシステム104のメモリデバイス110−1、……、110−N)のメモリデバイスに書き込まれ得、および/または係るメモリデバイスから読み出され得る。そのため、1つの物理ページのデータはメモリシステムのデータ転送サイズとして呼称され得る。データはホスト(例えばホスト102など)へと、および/またはホストから、セクタ(例えばホストセクタ)と呼称されるデータセグメントにおいて転送され得る。そのため、1つのセクタのデータはホストのデータ転送サイズと呼称され得る。複数のセクタが1つの論理ページのデータを構成し得る。
1つの物理ページのデータのサイズはしばしばいくつかのバイトのユーザデータのみを指し得るが、1つの物理ページのデータはいくつかのバイトのユーザデータ(例えばいくつかのセクタのデータを含むデータペイロード)ならびにそのユーザデータに対応するメタデータを含み得る。例えば4KBのページサイズを有する1つの物理ページのデータは、4KBのユーザデータ(例えば4KB論理ページのデータ)ならびに当該ユーザデータに対応するいくつかのバイト(例えば32B、54B、224B、その他)のメタデータを含み得る。メタデータはユーザデータに対応する他のメタデータの中でもとりわけ、エラーデータ(例えばエラー検出および/または訂正コードデータ)などの整合性データを、および/またはアドレスデータ(例えば論理アドレスデータ)を、含み得る。
図2は、本開示のいくつかの実施形態に係るページストライプレイアウト220のブロック図である。ページストライプレイアウトは、本開示のいくつかの実施形態に係る、いくつかの論理ページ222、いくつかのコードワード224、およびいくつかの物理ページ226間の対応関係を示す。いくつかの論理ページのデータ222はいくつかのコードワード224としてエラーコーディングされ得る。例えば物理ページメタデータ228、論理ページLP0、および論理ページLP1の1部分がコードワードCW0、CW1、CW2、およびCW3としてエラーコーディングされ得る。いくつかのコードワード224はいくつかの物理ページのメモリ226に書き込まれ得る。なおここで、データの論理ページ222の個数はメモリの物理ページ226の個数と異なり得る。例えばコードワードCW0、CW1、CW2、およびCW3は物理ページD0P0(例えばダイ0、プレーン0に関連付けられた物理ページ)に書き込まれ得る。いくつかの実施形態では物理ページメタデータ228は、ストライプの定義(例えばストライプ長さ)、タイムスタンプ、消去カウント、ブロックタイプ、および/または、より多くのもしくはより少ない情報を含み得る。図2に示すように、物理ページメタデータ228は専用のコードワードを有さないが、その代わり論理ページの1部分とともにエンコードされる(例えばCW0は物理ページメタデータ228およびLP0の1部分を含む)。
いくつかの実施形態では、いくつかの論理ページのデータ222の1部分(例えばLP0およびLP1の1部分)はいくつかのコードワード224(例えばCW0、CW1、CW2、およびCW3)としてエンコードされ得る。いくつかのコードワード224(例えばCW0、CW1、CW2、およびCW3)は1つの物理ページのメモリ(例えばD0P0)に書き込まれ得る。いくつかの論理ページのデータの部分は、特定の論理ページのデータ(例えばLP0)を、第1コードワード(例えばCW0)の第1ペイロード部分として、および第2コードワード(例えばCW1)の第2ペイロード部分として、エラーコーディングすることにより、エラーコーディングされ得る。第1コードワード(例えばCW0)のサイズは第2コードワード(例えばCW1)のサイズに等しくなり得る。物理ページのメモリのサイズは、いくつかの論理ページのデータ222のうちのいずれかのサイズに依存し得ない。
図2に示すように論理ページLP1の残余部分は、異なるコードワードCW0として(例えば物理ページメタデータおよび論理ページLP2の1部分とともに)エラーコーディングされ得る。なおこの異なるコードワードCW0は、(例えば物理ページメタデータ、論理ページLP2、および論理ページLP3の1部分とともに)物理ページD0P1に関連付けられ、物理ページD0P1に書き込まれる。したがっていくつかの論理ページのデータをエラーコーディングすることは、非整数個の論理ページのデータを整数個のコードワードとしてエラーコーディングすることを含み得る。図2に示すようにいくつかの実施形態では、各物理ページのメモリは整数個のコードワードに関連付けられ得る(例えば、実施形態はページあたり特定個数のコードワードに必ずしも限定されるわけではないが、物理ページあたり4コードワード)。整数個のコードワードは整数個の物理ページのメモリに書き込まれ得る。所与のストライプに対して、コードワード222の個数は、データの論理ページ224の個数および当該コードワードに関連付けられるメモリの物理ページ226の個数と異なり得る。
特に図2に示す実施形態に対しては、いくつかの論理ページのデータ222をエラーコーディングすることは、物理ページメタデータ228と第1論理ページのデータ(例えばLP0)の第1部分とを第1コードワード(例えばCW0)としてエラーコーディングすることと、第1論理ページのデータ(例えばLP0)の第2部分を第2コードワード(例えばCW1)としてエラーコーディングすることと、第1論理ページのデータ(例えばLP0)の第3部分と第2論理ページのデータ(例えばLP1)の第1部分とを第3コードワード(例えばCW2)としてエラーコーディングすることと、第2論理ページのデータ(例えばLP1)の第2部分を第4コードワード(例えばCW3)としてエラーコーディングすることと、を含み得る。いくつかのコードワード224をいくつかの物理ページのメモリ226に書き込むことは、第1コードワード(例えばCW0)、第2コードワード(例えばCW1)、第3コードワード(例えばCW2)、および第4コードワード(例えばCW3)を第1物理ページのメモリ(例えばD0P0)に書き込むことを含み得る。いくつかの論理ページのデータ222をエラーコーディングすることは、第2物理ページに対する物理ページメタデータと、第2論理ページのデータ(例えばLP1)の第3部分と、第3論理ページのデータ(例えばLP2)の第1部分とを第5コードワード(例えばD0P1におけるCW0)としてエラーコーディングすることをさらに含み得る。他の情報の中で、第5コードワード(例えばD0P1におけるCW0)は第2物理ページのメモリ(例えばD0P1)に書き込まれ得る。
図2にも示すように、ページストライプレイアウト220はストライプに対していくつかのページのパリティデータ(実施形態は特定個数のページのパリティデータには必ずしも限定されないが、例えば「DnP0−プレーン0パリティ」および「DnP1−プレーン1パリティ」)を含み得る。パリティデータの前に、図2は、最終論理ページのデータ(例えばLPx)の末尾に「廃棄」データも示す。本明細書で説明するように非整数個の論理ページのデータが整数個のコードワードとしてエンコードされ得る。したがって本開示のいくつかの実施形態によればいくつかの論理ページのデータにおいて利用可能なデータ量がストライプに対するコードワード境界で終了しない。それ故、「廃棄」データは最終コードワードを充填するために用いられ得る。いくつかの実施形態では、単位物理ページのメモリあたりの整数個のコードワードは、整数個のコードワードのうちのいずれかに対するコードレートに関わらず、一定であり得る。
読み出し動作に関して、1つのストライプのデータは複数の物理ページのメモリ226から読み出され得る。ここで物理ページのメモリ226のうちのそれぞれは、それぞれの複数のコードワード224を格納し、物理ページのメモリのうちの1つからのそれぞれの複数のコードワード224のうちの2つ以上のペイロード部分を組み合わせると、1つの論理ページのデータ222が形成され得る。例えば第1コードワード(例えばCW0)の1部分と第3コードワード(例えばCW2)の1部分とを第2コードワード(例えばCW1)(なお各コードワードは第1物理ページ(例えばD0P0)から読み出されたものである)と組み合わせると、第1論理ページのデータ(例えばLP0)が形成され得る。複数の物理ページのメモリ226のうちの2つ以上からのそれぞれの複数のコードワード224のうちの2つ以上のペイロード部分を組み合わせると、1つの論理ページのデータ222が形成され得る。例えば第1物理ページのメモリ(例えばD0P0)からの第3コードワード(例えばCW2)の1部分と第4コードワード(例えばCW3)とを第2物理ページのメモリ(例えばD0P1)からの第1コードワード(例えばCW0)の1部分と組み合わせると、第2論理ページのデータ(例えばLP1)が形成され得る。
1つのストライプのデータを読み出すことは、整数個のコードワード224を読み出すことを含み得る。例えば、整数個のコードワード224はとりわけ、物理ページのメモリ226ごとに、ダイ(例えば、D0、D1、……、Dn)ごとに、ストライプごとに、読み出され得る。複数の物理ページ226からのそれぞれの複数のコードワード224のペイロード部分を組み合わせると、複数の論理ページのデータ222が形成され得る。それぞれの複数のコードワード222のペイロード部分を組み合わせることは、それぞれの複数のコードワードのうちの第1のコードワード(例えばCW3)のペイロード部分全体と、それぞれの複数のコードワードのうちの第2のコードワード(例えばCW2)のペイロード部分の全体に満たない部分とを組み合わせて、論理ページのデータ(例えばD0P0に関連付けられたLP1)を形成することを含み得る。
論理ページフォーマット例230(例えばLP4のフォーマット)も図2に示される。論理ページフォーマット230は、論理ページメタデータ232と、いくつかのホストセクタ234(例えば単位論理ページあたり8セクタ。しかし実施形態は必ずしもそのように限定されるわけではない)と、を含み得る。論理ページメタデータ232は、より多い情報またはより少ない情報の中で、論理ブロックアドレス(LBA)番号、有効セクタビットマップ、論理ページタイプを含み得る。ホストセクタ234は、より多い情報またはより少ない情報の中で、ペイロード(例えば512〜528バイト。ただし実施形態は必ずしも係るバイト数に限定されるわけではない)およびデータパス保護(DPP)情報を含み得る。いくつかの実施形態ではエラー情報(例えば巡回符号冗長検査(CRC)情報)も論理ページフォーマットとともに含まれ得る。
本開示の他の利益の中で、本明細書で説明するページストライプレイアウトは、可変圧縮率のための他の基準の中でもページ毎の基準における様々な圧縮率を可能にするユーザデータ圧縮方式を可能にする。係る可変圧縮方式の詳細は本開示の範囲を越えるものである。
図3は本開示のいくつかの実施形態に係る既知の不良部分336を含むページストライプレイアウト320のブロック図である。既知の不良部分336を除くと、ページストライプレイアウト320は図2に示すページストライプレイアウト220に類似し得る。すなわちページストライプレイアウト320は論理ページのデータ322、コードワード324、および物理ページのデータ326を含み得る。複数の論理ページのデータ322は複数の対応する物理ページのメモリ326にマッピングされ得る。ここでは複数の論理ページ322のうちの非整数個が複数の物理ページのメモリ326のうちのそれぞれにマッピングされ得る。
例えば図3において、既知の不良部分336は、(D1P1に関連付けられた物理ページもしたがって不良であると知られるよう、例えばD1P1に関連付けられた)不良物理メモリセルブロックであり得る。ストライプレイアウト320が既知の不良部分336を含むこれらの事例に対して、コントローラは、複数の論理ページ322のうちの特定の1つの特定部分336が既知の不良物理ページのメモリ(例えばD1P1)にマッピングされることに少なくとも部分的に応答して、複数の論理ページ322のうちの特定の1つをホストデータでポピュレートすることを省略するよう構成され得る。ポピュレートを省略することは、コントローラが、不良物理ページ(例えばD1P1)に対応する論理ページのデータ322をホストデータでポピュレートすることを回避し得ることを意味する。これらの論理ページのデータ322に普通ならばポピュレートされたはずのデータは、ページストライプレイアウト320における後続の論理ページのデータ322(例えば少なくとも1つの後続の論理ページのデータ)にポピュレートされ得る。
コントローラは、複数の論理ページのデータ322のうちの特定の1つの第2部分をエラーデータでポピュレートするようさらに構成され得る。ここでは、複数の論理ページのデータ322のうちの特定の1つの第2部分は、既知の良好な物理ページのメモリにマッピングされる。コントローラは複数の論理ページのデータ322をRAINストライプにおいて複数の物理ページのメモリ326にマッピングするよう構成され得る。
例えばD1P1に関連付けられた物理ページのメモリが不良であることが知られる。D1P1に関連付けられた物理ページのメモリは、元のページストライプレイアウト320において少なくとも論理ページLP5、LP6、およびLP7の部分に対応する。したがってLP5の1部分およびLP7の1部分のみがD1P1に関連付けられた物理ページのメモリに対応するとしても、論理ページLP5、LP6、およびLP7はコントローラによるポピュレートが省略され得る(例えばホストデータでポピュレートされない)。普通ならばLP5、LP6、およびLP7にポピュレートされたはずのデータは、後続の論理ページ(例えばLP8、LP9、およびLP10)にポピュレートされ得る。図3に示すように、LP5の1部分およびLP7の1部分は良好な物理ページのメモリ(例えばD1P0およびD2P0)に対応する。したがって、LP5およびLP7、または少なくとも良好な物理ページのメモリに対応するLP5およびLP7のこれらの部分は、(例えばパリティデータが計算され、RAINストライプに対して有効となるよう)RAINストライプを保持するために用いられ得るエラーデータでポピュレートされ得る。いくつかの実施形態では、ポピュレートが省略された論理ページに、または良好な物理ページのメモリに対応する当該論理ページに、ポピュレートされたエラーデータはランダムに生成されたデータであり得る。
図4は、本開示のいくつかの実施形態に係る強制ユニットアクセス(FUA)を含む、または追加的な書き込みデータを含まない、ページストライプレイアウト420のブロック図である。FUAは、直ちに(例えば追加的な物理ページのメモリが同時にプログラムされ得るようポピュレートされるべき後続のデータ量を待機することなく)物理メモリに書き込まれるべき論理ページのデータに対して指示され得る。FUAに関するメモリ動作はいくつかの実施形態では追加的な書き込みデータが利用可能でないときのメモリ動作に類似し得る。
例えば図4に関してFUAは、任意のデータが追加的な論理ページのメモリ(例えばLP5)に対してポピュレートされる前にLP4内のデータが対応する物理ページのメモリ(例えばD1P0)に書き込まれるよう、LP4に対して指示され得る。RAINストライプレイアウト420は保持され得るが、一方、物理ページD1P0およびD1P1は、FUAのために異なる書き込み動作の間(例えば同時にではなく)書き込まれ得る。
同様に、論理ページのデータLP4の後に追加的な書き込みデータが利用可能でない場合、LP4内のデータは、任意のデータが追加的な論理ページのメモリ(例えばLP5)に対してポピュレートされる前に、対応する物理ページのメモリ(例えばD1P0)に書き込まれる。RAINストライプレイアウト420は保持され得るが、一方、物理ページD1P0およびD1P1は、例えば追加的な書き込みデータが一時的に欠落しているために、異なる書き込み動作の間(例えば同時にではなく)書き込まれ得る。
したがっていくつかの実施形態では、コントローラは、複数の論理ページのデータ422の以前の1つに関連付けられたFUAに、および/または書き込みのために現時点で利用可能な追加的な書き込みデータが存在しないことに、少なくとも部分的に応答して、複数の論理ページ422のうちの特定の1つ(例えばLP5)をホストデータでポピュレートすることを省略するよう構成され得る。コントローラは、LP4がホストデータでポピュレートされた後であって、しかも複数の論理ページのデータ422のうちの以前の1つ(例えばLP4)に関連付けられたデータを複数の物理ページのメモリ426のうちのいくつか(例えば物理ページD1P0)に書き込む前に、複数の論理ページ422のうちの特定の1つの第1部分440(例えばLP5)をエラーデータ(例えば本明細書で説明したRAINストライプに対するパリティデータなど。いくつかの事例では、これはランダムデータまたは他の非ホストデータであり得る)でポピュレートするよう構成され得る。本明細書で説明するように、係るエラーデータはRAINストライプ(例えばRAINストライプに対するパリティデータ)を保持することを支援し得、係るエラーデータは例えばランダムに生成されたデータを含み得る。エラーデータの他の例は、全部0、全部1、その他を含み得る。
コントローラは、FUAの後に、および/または、追加的な書き込みデータが利用可能となった後に、複数の論理ページのデータ422のうちの特定の1つの第2部分442(例えばLP5)をエラーデータでポピュレートするよう構成され得る。例えばコントローラは、FUAの後に、および/または、追加的な書き込みデータが利用可能となった後に、次の論理ページのデータ(例えばLP6)に有効なホストデータをポピュレートすることを再開するよう構成され得る。
図5は本開示のいくつかの実施形態に係る論理ページを書き込むためのバッファアロケーションのブロック図である。本明細書で説明するように、物理バッファはいくつかの論理バッファセグメントに分離され得る。例えば物理バッファ546−0は第1個数の論理バッファセグメント548−0(例えば「バッファ0」、「バッファ1」、「バッファ2」、および「バッファ3」)に分離され得、物理バッファ546−1は第2個数の論理バッファセグメント548−1(例えば「バッファ4」、「バッファ5」、「バッファ6」、および「バッファ7」)に分離され得、物理バッファ546−2は第3個数の論理バッファセグメント548−2(例えば「バッファ8」)に分離され得る。物理バッファは任意個数の論理バッファセグメントに分離され得るものであり、実施形態は必ずしも図5に示す例に限定されるわけではない。1つの物理バッファは1つの物理ページのメモリに等しいサイズを有し得る(例えば物理バッファ546−0は物理ページのメモリ526−0に等しいサイズを有し得る)。いくつかの実施形態では論理バッファセグメントはコードワードペイロードサイズに等しいサイズを有し得る。例えば第1論理バッファセグメント(例えば「バッファ0」)内にバッファ可能な情報量はECCコードワードのペイロードに等しい量であり得る。論理バッファセグメントは、1つの物理ページのメモリに格納するためにデータをエラーコーディングする前にデータをバッファし得る。したがってコードワードペイロードに等しいサイズを論理バッファセグメントに提供することは、バッファリングコンポーネント(例えば図1に示すバッファリングコンポーネント114)とエラーコーディングコンポーネント(例えば図1に示すエラーコーディングコンポーネント112)との間の高速且つ効果的なデータの転送を提供することを支援し得る。
書き込み動作(例えばストライプ書き込み動作)は第1論理ページのデータに対する書き込み要求により始まり得る。論理ページのデータを格納するために十分ないくつかの論理バッファセグメント(例えばこの事例では3つの論理バッファセグメント「バッファ0」、「バッファ1」、「バッファ2」、および「バッファ3」)がアロケートされ得る。第1論理バッファセグメント(例えば「バッファ0」)の1部分は、物理ページのメモリメタデータ528および論理ページのデータのメタデータ532−0をバッファし得る。第1論理バッファセグメント(例えば「バッファ0」)内の開始部分の位置は、物理ページのメモリメタデータ528(例えば位置0)および論理ページのデータメタデータ(例えば位置27)のそれぞれに対してマッピングされ得る。論理ページのデータの開始部分の位置(例えば位置28)はマッピングされ得る(例えばストライプにマッピングされる)。論理ページのデータの開始部分の位置は、いくつかのコードワードとしてエラーコーディングされるいくつかの論理ページのデータの部分に対応し得る。様々なマッピングが、ストライプから様々な部分を読み出すために有益であり得る。例えばマッピングすることは論理ページのデータの開始部分を含むストライプを特定するために用いられ得、オフセットは、複数の物理ページのメモリのうちの1つと論理ページのデータの開始部分を含む特定のコードワードとを特定するために、ストライプへと計算され得る。いくつかの実施形態では、論理ページのデータに対するアドレスは1組のパラメータ(例えば物理ページのメモリの合計サイズ、物理ページのメモリのメタデータサイズ、コードワード合計サイズ、コードワードペイロードサイズ、ホストセクタサイズ、および論理ページメタデータサイズを含む)に基づいて判定され得る。
ホストセクタは論理ページのデータ(例えば書き込み要求に関連付けられた論理ページのデータ)にポピュレートされ得る。アロケートされた論理バッファセグメント(例えば「バッファ0」、「バッファ1」、「バッファ2」、および「バッファ3」)は少なくとも部分的に論理ページのデータをバッファし得る。いくつかの実施形態ではコントローラは、ホストセクタ基準により、ホストセクタ上のアロケートされた論理バッファセグメント内に情報を少なくとも部分的にバッファするよう構成され得る。例えば第1ホストセクタ「0」、第2ホストセクタ「1」、および第3ホストセクタ「2」は第1論理バッファセグメント(例えば「バッファ0」)内にバッファされ得る。第4ホストセクタ「3」の1部分は、第1論理バッファセグメント(例えば「バッファ0」)を完全に充填するために、第1論理バッファセグメント内にバッファされ得る。第4ホストセクタ「3」の残余部分は第2論理バッファセグメント(例えば「バッファ1」)内にバッファされ得る。いくつかの実施形態では1つの論理ページのデータは8つのホストセクタ(例えばホストセクタ0〜7)を含み得るが、実施形態は単位論理ページのデータあたり特定個数のホストセクタに必ずしも限定されるわけではない。図5に示すように、ホストセクタ4〜7は第2論理バッファセグメント(例えば「バッファ1」)および第3論理バッファセグメント(例えば「バッファ2」)の1部分にバッファされ得る。論理ページのデータが、アロケートされた論理バッファセグメントのうちの1つを除いて全部を充填(例えば完全に充填)する(例えば論理ページのデータが論理バッファセグメント「バッファ0」および論理バッファセグメント「バッファ1」を完全に充填し、論理バッファセグメント「バッファ2」を部分的に充填する等)よう、コントローラは、論理ページのデータをアロケートされた論理バッファセグメント内に少なくとも部分的にバッファするよう構成され得る。
後続の論理ページのデータは、第1論理ページのデータと同一の書き込み要求の部分であったとしても、または後続の書き込み要求であったとしても、そこにアロケートされた論理バッファセグメントを有し得る。例えば第3論理バッファセグメント(例えば「バッファ2」)の残余部分は、第4論理バッファセグメント(例えば「バッファ3」)および第5論理バッファセグメント(例えば「バッファ4」)とともに、そこにアロケートされ得る。後続のアロケートされた論理バッファセグメントは、第3論理バッファセグメント(例えば「バッファ2」)において第1論理ページのデータが中断された位置から開始して(例えば論理ページメタデータ532−1をバッファした後)、充填され得る。図5に示すように後続の論理ページのデータ(例えば後続のホストセクタ0〜7を含む)は、第3論理バッファセグメント(例えば「バッファ2」)および第4論理バッファセグメント(例えば「バッファ3」)にバッファされ、第5論理バッファセグメント(例えば「バッファ4」)に部分的にバッファされ得る。図5は、論理バッファセグメント(例えば「バッファ4」、「バッファ5」、および「バッファ6」)にバッファされた第3論理ページのデータ(例えば第3ホストセクタ0〜7を含む)も示す。図5は、論理バッファセグメント(例えば「バッファ6」、「バッファ7」、および「バッファ8」)にバッファされた第4論理ページのデータ(例えば第3ホストセクタ0〜7を含む)も示す。
論理ページのデータ(および少なくとも1つのホストセクタ)は論理バッファ境界(例えば第1アロケートされた論理バッファセグメント「バッファ0」と第2アロケートされた論理バッファセグメント「バッファ1」との間の境界)を横断し得る。リンクは、アロケートされた論理バッファセグメントのうちの第1(例えば「バッファ0」)からアロケートされた論理バッファセグメントのうちの第2(例えば「バッファ1」)へ、マッピングされ得る。リンクは、第1論理バッファセグメント(例えば「バッファ0」)と第2論理バッファセグメント(例えば「バッファ1」)との間の論理バッファ境界を横断する特定のホストセクタと組み合わせて用いられ得る。さらにリンクは後続の論理バッファセグメント間(例えば論理バッファセグメント「バッファ1」と論理バッファセグメント「バッファ2」との間、その他)でマッピングされ得る。
物理バッファ(例えば当該物理バッファに含まれる論理バッファセグメントを含む)は、充填された後、エラーコーディングされ、1つの物理ページのメモリに書き込まれ得る。例えば物理バッファ546−0はエラーコーディングされ、物理ページのメモリ526−0に書き込まれ得、物理バッファ546−1はエラーコーディングされ、物理ページのメモリ526−1に書き込まれ得る。いくつかの実施形態では複数の物理バッファは複数の物理ページのメモリに一緒に書き込まれ得る(例えばマルチプレーン書き込み動作、およびRAINストライプ書き込み動作、その他において)。
本明細書で説明するようにメモリは、それぞれのコードワードのペイロードを複数の論理バッファセグメントのうちのそれぞれにバッファすることにより合計コードワードサイズに基づいてバッファ管理され得る。ホストとの通信は、1つの論理ページのデータをホストと通信することにより、論理ページサイズに基づき得る。ここで論理ページのデータは複数の論理バッファセグメントのうちのそれぞれからのそれぞれのコードワードペイロードを含む。
図6は、本開示のいくつかの実施形態に係るウェアレベリング動作のためのバッファアロケーションのブロック図である。ウェアレベリング動作の1例はガベージコレクションとして知られる。ガベージコレクションは最も多い無効ページを有する(例えば「グリーディ算法」にしたがって)ブロックを回収する(例えば消去し、書き込みのため利用可能となるようにする)ことを含み得る。代替的にガベージコレクションは閾値量を越える無効ページを有するブロックを回収することを含み得る。無効ページは、例えば、異なるページへと更新された1ページのデータであり得る。
例えば2つの論理ページのデータ(例えば第1論理ページのデータ622−0および第2論理ページのデータ622−1)がウェアレベリングのために指定され得る。この事例では、第1論理ページのデータ622−0はホストセクタ0〜7を含み得、第2論理ページのデータ622−1はホストセクタ8〜15を含み得る。整数個のコードワードが非整数個の論理ページのデータに対応し得るが、各論理ページのデータは対応する個数のコードワードを有し得る(例えば3つのコードワードがそれぞれ各論理ページに対応し得る)。すなわち例えば、各論理ページのデータは3つの対応するコードワードを有し得るが、特定の論理ページのデータは情報の全部を必ずしも全部の3つのコードワードに格納するとは限らない。ウェアレベリングのために指定された論理ページに対する対応する個数のコードワードが読み出され得、コードワードペイロードがウェアレベリング動作のためにアロケートされたいくつかの論理バッファセグメント内にバッファされ得る(例えば第1論理ページ622−0に対するコードワードペイロードは第1個数の論理バッファセグメント648−0にバッファされ得、第2論理ページ622−1に対するコードワードペイロードは第2個数の論理バッファセグメント648−1内にバッファされ得る)。
2つの論理ページのデータのうちのそれぞれの開始部分の位置(例えば特定論理バッファセグメント内の位置)は本明細書で説明するように既知であり得る(例えば論理ページのデータ622−0は古い物理ページメタデータ628−Xの後であるが古い第1論理ページメタデータ632−X0を含む19に開始部分の位置を有し得、論理ページのデータ622−1は、古い第2論理ページのデータメタデータ632−X1を含む231に開始部分の位置を有し得る。物理バッファからセグメント化された第3個数の論理バッファセグメント648−2(例えば「バッファ9」、「バッファ10」、「バッファ11」、および「バッファ12」)はウェアレベリング動作のためにアロケートされ得る。ウェアレベリング動作の一部として書き込まれる新しい物理ページに対する物理ページメタデータ628−Yは生成され、新しくアロケートされたバッファセグメントのうちの第1(例えば「バッファ9」)にバッファされ得る。
リンクされたリストは、ウェアレベリング動作の一部として単一ページ書き込みのためにポピュレートされ得る。リンクされたリストは、ウェアレベリング動作のためにアロケートされた第1論理バッファセグメント(例えばいくつかの論理バッファセグメント648−2のうちの「バッファ9」)の位置の特定と、物理ページメタデータ628−Yに対するカウントと、第1論理ページのデータ622−0および第2論理ページのデータ622−1を格納する各バッファに対するリンクおよびカウントと、を含み得る。リンクされたリストにおけるエントリーは、各エントリーに対するカウント、および次のエントリーに対する(例えば次の論理バッファセグメントへの(例えば「バッファ0」から「バッファ1」へ等)リンクとともに、論理バッファセグメントによりポピュレートされ得る。カウントは各エントリーに関連付けられた情報の量を指定し得る。リンクされたリストは、リスト全体に対する合計カウントも含み得る。したがって第1論理ページのデータ622−0および第2論理ページのデータ622−1からのデータは、論理バッファセグメント648−2(例えばバッファ9〜12)に移動され得る。したがって論理バッファセグメント648−2(例えばバッファ9〜12)は物理ページのメモリ626に書き込まれ得る。
第1論理ページのデータ622−0および第2論理ページのデータ622−1が論理バッファセグメント648−2にバッファされた後、第1論理ページのデータ622−0および第2論理ページのデータ622−1の1部分は物理ページのメモリ626に書き込まれ得る。例えば物理ページのメモリ626に書き込まれた第1論理ページのデータ622−0および第2論理ページのデータ622−1の部分は、第1論理ページメタデータ632−Y0、第2論理ページメタデータ632−Y1、ホストセクタ0〜14の全部、およびホストセクタ15の1部分を含み得る。ホストセクタ15の残余部分は、第2論理ページのデータ622−1に対する論理−物理アドレスの表(例えばLBAテーブル)内のエントリーを更新する前に、新しい物理ページのメモリに書き込まれ得る。
<結論>
本開示は、物理ページ、論理ページ、およびコードワードの対応のための装置および方法に関する。いくつかの方法は、いくつかの論理ページのデータをいくつかのコードワードとしてエラーコーディングすることと、いくつかのコードワードをいくつかの物理ページのメモリに書き込むことと、を含む。データの論理ページの個数はメモリの物理ページの個数と異なり得る。
本明細書では特定の実施形態について例示および説明してきたが、当業者は、同一結果を達成するよう計算された構成が、示された特定的な実施形態の代替となり得ることを理解するであろう。本開示は本開示の1つまたは複数の実施形態の適応例または変化例を含むことを意図するものである。上記の説明が例示としてなされており限定的なものではないことを理解すべきである。上述の実施形態の組み合わせ、および本明細書において特に説明されない他の実施形態は、上記の説明を綿密に調べると、当業者に明らかとなることであろう。本開示の1つまたは複数の実施形態の範囲は上述の構造および方法が用いられる他の応用を含む。したがって、本開示の1つまたは複数の実施形態の範囲は、添付の請求項が権利を有する均等物の全範囲とともに、これらの請求項を参照して決定されるべきである。
前述の詳細な説明では、いくつかの特徴は、本開示を簡素化する目的で、単一の実施形態にまとめられる。この開示の方法は、本開示の開示された実施形態が、各請求項において明示的に記載されるよりも多くの特徴を用いなければならないという意図を反映するものとして解釈されるべきではない。むしろ以下の請求項が反映するように、発明主題は単一の開示された実施形態の全部の特徴よりも少ない特徴の中にある。したがって以下の請求項は、各請求項が本発明の分離された実施形態としてそれ自身存在する状態で、発明を実施するための形態に組み込まれる。

Claims (15)

  1. メモリを動作させるための方法であって、
    複数の論理ページのデータを複数のコードワードとしてエラーコーディングすることと、
    前記複数のコードワードを複数の物理ページのメモリに書き込むことであって、前記複数の論理ページの個数は前記複数の物理ページの個数と異なる、ことと、を含み、
    前記複数の論理ページのデータを前記複数のコードワードとしてエラーコーディングすることは、非整数個の論理ページのデータを整数個のコードワードとしてエラーコーディングすることを含む、方法。
  2. 前記複数のコードワードの個数は、前記複数の論理ページの個数および前記複数の物理ページの個数と異なる、請求項1に記載の方法。
  3. 前記複数のコードワードを前記複数の物理ページのメモリに書き込むことは、
    前記整数個のコードワードを整数個の物理ページのメモリに書き込むことを含む、請求項1に記載の方法。
  4. 前記複数の論理ページのデータをエラーコーディングすることは、
    物理ページメタデータと第1論理ページのデータの第1部分とを第1コードワードとしてエラーコーディングすることと、
    前記第1論理ページのデータの第2部分を第2コードワードとしてエラーコーディングすることと、
    をさらに含み、
    前記複数のコードワードを書き込むことは、前記第1コードワードおよび前記第2コードワードを第1物理ページのメモリに書き込むことをさらに含む、
    請求項1〜請求項3のうちのいずれか1つに記載の方法。
  5. 前記複数の論理ページのデータをエラーコーディングすることは、
    前記第1論理ページのデータの第3部分と第2論理ページのデータの第1部分とを第3コードワードとしてエラーコーディングすることと、
    前記第2論理ページのデータの第2部分を第4コードワードとしてエラーコーディングすることと、をさらに含み、
    前記複数のコードワードを書き込むことは、前記第3コードワードおよび前記第4コードワードを前記第1物理ページのメモリに書き込むことをさらに含む、
    請求項4に記載の方法。
  6. 前記複数の論理ページのデータをエラーコーディングすることは、
    前記物理ページメタデータと、前記第2論理ページのデータの第3部分と、第3論理ページのデータの第1部分と、を第5コードワードとしてエラーコーディングすることと、
    前記第5コードワードを第2物理ページのメモリに書き込むことと、
    をさらに含む、請求項5に記載の方法。
  7. エラーコーディングすることは、前記複数の論理ページのデータを前記複数のコードワードとしてエラーコーディングするために、メモリ装置のコントローラを用いることを含む、請求項1〜請求項3のうちのいずれか1つに記載の方法。
  8. 複数のメモリデバイスと、
    前記複数のメモリデバイスに連結され且つ、複数の論理ページのデータを複数のコードワードへとエラーコーディングすること、および
    前記複数のコードワードを複数の物理ページのメモリに書き込むことであって、前記複数の論理ページの個数は前記複数の物理ページの個数と異なる、こと、
    を行うよう構成されたコントローラと、を含み、
    前記コントローラが、前記複数の論理ページのデータを前記複数のコードワードへとエラーコーディングするよう構成されることは、前記コントローラが、非整数個の論理ページのデータを整数個のコードワードとしてエラーコーディングするよう構成されることを
    さらに含む、装置。
  9. 前記複数のコードワードの個数は、前記複数の論理ページの個数および前記複数の物理ページの個数と異なる、請求項8に記載の装置。
  10. 前記コントローラが、前記複数のコードワードを前記複数の物理ページのメモリに書き込むよう構成されることは、前記コントローラが、前記整数個のコードワードを整数個の物理ページのメモリに書き込むよう構成されることをさらに含む、請求項8に記載の装置。
  11. 前記コントローラが、前記複数の論理ページのデータをエラーコーディングするよう構成されることは、
    前記コントローラが、
    物理ページメタデータと第1論理ページのデータの第1部分とを第1コードワードへとエラーコーディングすることと、
    前記第1論理ページのデータの第2部分を第2コードワードへとエラーコーディングすることと、
    を行うよう構成されることをさらに含み、
    前記コントローラが前記複数のコードワードを書き込むよう構成されることは、前記コントローラが前記第1コードワードおよび前記第2コードワードを第1物理ページのメモリに書き込むよう構成されることをさらに含む、
    請求項8に記載の装置。
  12. 前記コントローラが、前記複数の論理ページのデータをエラーコーディングするよう構成されることは、
    前記コントローラが、
    前記第1論理ページのデータの第3部分と第2論理ページのデータの第1部分とを第3コードワードへとエラーコーディングすることと、
    前記第2論理ページのデータの第2部分を第4コードワードへとエラーコーディングすることと、
    を行うよう構成されることをさらに含み、
    前記コントローラが前記複数のコードワードを書き込むよう構成されることは、前記コントローラが前記第3コードワードおよび前記第4コードワードを前記第1物理ページのメモリに書き込むよう構成されることをさらに含む、
    請求項11に記載の装置。
  13. 前記コントローラが、前記複数の論理ページのデータをエラーコーディングするよう構成されることは、
    前記コントローラが、
    前記物理ページメタデータと、前記第2論理ページのデータの第3部分と、第3論理ページのデータの第1部分と、を第5コードワードへとエラーコーディングすることと、
    前記第5コードワードを第2物理ページのメモリに書き込むことと、
    を行うよう構成されることをさらに含む、請求項12に記載の装置。
  14. メモリを動作させるための方法であって、
    互いに異なるデータを含む複数の論理ページのデータを複数のコードワードとしてエラーコーディングすることと、
    前記複数のコードワードを複数の物理ページのメモリに書き込むことであって、前記複数の論理ページの個数は前記複数の物理ページの個数と異なる、ことと、を含み、
    前記複数のコードワードの個数は、前記複数の論理ページの個数及び前記複数の物理ページの個数と異なる、方法。
  15. 記複数の論理ページの個数が、前記複数の物理ページの個数よりも多く、前記複数のコードワードの個数よりも少ない、請求項14に記載の方法。
JP2015500482A 2012-03-15 2013-03-08 物理ページ、論理ページ、およびコードワードの対応 Active JP6053078B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/421,088 US9026887B2 (en) 2012-03-15 2012-03-15 Physical page, logical page, and codeword correspondence
US13/421,088 2012-03-15
PCT/US2013/029919 WO2013138190A1 (en) 2012-03-15 2013-03-08 Physical page, logical page, and codeword correspondence

Publications (2)

Publication Number Publication Date
JP2015510213A JP2015510213A (ja) 2015-04-02
JP6053078B2 true JP6053078B2 (ja) 2016-12-27

Family

ID=49158860

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015500482A Active JP6053078B2 (ja) 2012-03-15 2013-03-08 物理ページ、論理ページ、およびコードワードの対応

Country Status (7)

Country Link
US (4) US9026887B2 (ja)
EP (1) EP2825960B1 (ja)
JP (1) JP6053078B2 (ja)
KR (1) KR101660150B1 (ja)
CN (3) CN110941507A (ja)
TW (1) TWI514139B (ja)
WO (1) WO2013138190A1 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9159422B1 (en) * 2011-04-12 2015-10-13 Sk Hynix Memory Solutions Inc. Cross page management to avoid NAND physical page size limitation
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US9183085B1 (en) * 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US9176812B1 (en) * 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US9442840B2 (en) * 2012-12-19 2016-09-13 Qualcomm Incorporated Virtual boundary codes in a data image of a read-write memory device
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
KR102195298B1 (ko) 2014-02-13 2020-12-24 삼성전자주식회사 비휘발성 메모리 장치의 부분 페이지 프로그램 방법
US9299457B2 (en) 2014-02-23 2016-03-29 Qualcomm Incorporated Kernel masking of DRAM defects
US9448745B2 (en) * 2014-03-13 2016-09-20 NXGN Data, Inc. Configurable read-modify-write engine and method for operating the same in a solid state drive
KR102308777B1 (ko) 2014-06-02 2021-10-05 삼성전자주식회사 비휘발성 메모리 시스템 및 비휘발성 메모리 시스템의 동작방법
CN105278867A (zh) * 2014-07-24 2016-01-27 宇瞻科技股份有限公司 储存装置的载入方法及分割方法
US10176039B2 (en) 2014-09-19 2019-01-08 Micron Technology, Inc. Self-accumulating exclusive OR program
TWI556254B (zh) * 2014-10-14 2016-11-01 慧榮科技股份有限公司 資料儲存裝置及其資料存取方法
US9703631B2 (en) * 2015-03-20 2017-07-11 Burlywood, LLC Storage emulation in a storage controller
TWI560718B (en) * 2015-03-27 2016-12-01 Silicon Motion Inc Data storage device and encoding method thereof
US20160299844A1 (en) * 2015-04-08 2016-10-13 Sandisk Enterprise Ip Llc Mapping Logical Groups of Data to Physical Locations In Memory
US9946594B2 (en) * 2015-08-19 2018-04-17 International Business Machines Corporation Validation bits and offsets to represent logical pages split between data containers
US9940034B2 (en) 2016-01-25 2018-04-10 International Business Machines Corporation Reducing read access latency by straddling pages across non-volatile memory channels
US10318378B2 (en) 2016-02-25 2019-06-11 Micron Technology, Inc Redundant array of independent NAND for a three-dimensional memory array
US10198313B2 (en) * 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system
US10169142B2 (en) * 2016-07-12 2019-01-01 Futurewei Technologies, Inc. Generating parity for storage device
KR102706994B1 (ko) * 2016-09-07 2024-09-19 에스케이하이닉스 주식회사 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
JP6524039B2 (ja) * 2016-09-23 2019-06-05 東芝メモリ株式会社 メモリシステム及び制御方法
US10877842B2 (en) * 2017-09-08 2020-12-29 Intel Corporation Detecting silent data corruption for mass storage devices
TWI664531B (zh) * 2018-01-25 2019-07-01 矽創電子股份有限公司 快閃記憶體之控制器及控制方法
US11314425B2 (en) 2018-05-08 2022-04-26 Micron Technology, Inc. Read error recovery
CN110489351B (zh) * 2018-05-14 2021-03-09 英韧科技(上海)有限公司 芯片指纹管理装置及安全芯片
US11221910B2 (en) * 2018-07-24 2022-01-11 Micron Technology, Inc. Media scrubber in memory system
US10824502B2 (en) * 2018-08-08 2020-11-03 Micron Technology, Inc. Enhanced codeword for media persistence and diagnostics
US10817430B2 (en) 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
US10789126B2 (en) 2018-10-09 2020-09-29 Micron Technology, Inc. Multiple memory devices having parity protection
US11188250B2 (en) * 2018-10-25 2021-11-30 Micron Technology, Inc. Two-stage hybrid memory buffer for multiple streams
US10963342B2 (en) * 2019-02-01 2021-03-30 Micron Technology, Inc. Metadata-assisted encoding and decoding for a memory sub-system
US10915400B1 (en) * 2019-11-08 2021-02-09 Micron Technology, Inc. Dynamic over provisioning allocation for purposed blocks
US11144392B1 (en) * 2020-07-17 2021-10-12 Toshiba Memory Corporation Payload distribution in solid state drives
US11481151B2 (en) * 2020-07-17 2022-10-25 Kioxia Corporation Payload spill boundary table assisted read in solid state drives
US11620068B2 (en) * 2021-01-06 2023-04-04 EMC IP Holding Company LLC Data transfer optimizations
US11550658B1 (en) 2021-09-02 2023-01-10 Western Digital Technologies, Inc. Storage system and method for storing logical-to-physical address table entries in a codeword in volatile memory

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3020060A (en) 1960-07-13 1962-02-06 Gen Motors Corp Steering arrangement for a solid front axle suspension
WO1992002879A1 (en) 1990-08-03 1992-02-20 Du Pont Pixel Systems Limited Virtual memory system
JP4199519B2 (ja) * 2002-11-05 2008-12-17 パナソニック株式会社 メモリ管理装置及びメモリ管理方法
US7739577B2 (en) * 2004-06-03 2010-06-15 Inphase Technologies Data protection system
US20060282643A1 (en) * 2005-06-10 2006-12-14 Subramanyam Chandramouli Transparent low-density mode for multi-level cell flash memory devices
US7681109B2 (en) 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
WO2007066720A1 (ja) * 2005-12-09 2007-06-14 Matsushita Electric Industrial Co., Ltd. 不揮発性記憶装置並びにデータ書込み方法及びデータ読み出し方法
US8020060B2 (en) * 2006-01-18 2011-09-13 Sandisk Il Ltd Method of arranging data in a multi-level cell memory device
US7844879B2 (en) 2006-01-20 2010-11-30 Marvell World Trade Ltd. Method and system for error correction in flash memory
US20070180349A1 (en) * 2006-01-31 2007-08-02 Jacobsen Eric A Techniques for uequal error protection for layered protection applications
US7810017B2 (en) * 2006-03-20 2010-10-05 Micron Technology, Inc. Variable sector-count ECC
KR100843135B1 (ko) * 2006-11-20 2008-07-02 삼성전자주식회사 비휘발성 메모리 관리 방법 및 장치
US7873779B2 (en) 2007-05-14 2011-01-18 Qualcomm Incorporated Memory page size auto detection
WO2009053962A2 (en) * 2007-10-22 2009-04-30 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
JP5150245B2 (ja) * 2007-12-27 2013-02-20 株式会社東芝 半導体記憶装置
US8724381B2 (en) * 2008-03-11 2014-05-13 Agere Systems Llc Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
KR101398200B1 (ko) * 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
EP2293195A4 (en) * 2008-04-11 2011-11-23 Lg Electronics Inc MEMORY READER THAT CAN OPERATE AS AN OPTICAL DISK DRIVE AND METHOD FOR VIRTUALIZING MEMORY DRIVE AS OPTICAL DISK DRIVE
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
US8732388B2 (en) * 2008-09-16 2014-05-20 Micron Technology, Inc. Embedded mapping information for memory devices
CN101676882B (zh) 2008-09-16 2013-01-16 美光科技公司 存储器装置的内嵌映射信息
US20100070733A1 (en) 2008-09-18 2010-03-18 Seagate Technology Llc System and method of allocating memory locations
KR100965051B1 (ko) 2008-10-01 2010-06-21 서울시립대학교 산학협력단 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
WO2010125574A1 (en) * 2009-04-27 2010-11-04 Kamlesh Gandhi Description
US20110004720A1 (en) 2009-07-02 2011-01-06 Chun-Ying Chiang Method and apparatus for performing full range random writing on a non-volatile memory
TWI400707B (zh) * 2009-07-09 2013-07-01 Phison Electronics Corp 快閃記憶體邏輯區塊管理方法及其控制電路與儲存系統
US8402217B2 (en) 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US8266501B2 (en) 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US8468294B2 (en) * 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
KR20110073932A (ko) * 2009-12-24 2011-06-30 주식회사 하이닉스반도체 Ecc 회로를 포함하는 반도체 스토리지 시스템 및 그 제어 방법
US8589766B2 (en) 2010-02-24 2013-11-19 Apple Inc. Codeword remapping schemes for non-volatile memories
US8406051B2 (en) * 2010-05-17 2013-03-26 Seagate Technology Llc Iterative demodulation and decoding for multi-page memory architecture
US8254167B2 (en) 2010-05-17 2012-08-28 Seagate Technologies Llc Joint encoding of logical pages in multi-page memory architecture
TWI496161B (zh) * 2010-08-06 2015-08-11 Phison Electronics Corp 記憶體識別碼產生方法、管理方法、控制器與儲存系統
TWI451435B (zh) * 2010-10-08 2014-09-01 Phison Electronics Corp 非揮發性記憶體儲存裝置、記憶體控制器與資料儲存方法
WO2012056491A1 (en) * 2010-10-26 2012-05-03 Hitachi, Ltd. Storage apparatus and data control method
TWI579692B (zh) * 2010-10-29 2017-04-21 三星電子股份有限公司 記憶體系統、資料儲存系統、使用者裝置及其資料管理方法
US8626989B2 (en) * 2011-02-02 2014-01-07 Micron Technology, Inc. Control arrangements and methods for accessing block oriented nonvolatile memory
US8589761B2 (en) * 2011-05-31 2013-11-19 Micron Technology, Inc. Apparatus and methods for providing data integrity
US8874994B2 (en) * 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data

Also Published As

Publication number Publication date
US20200272538A1 (en) 2020-08-27
TW201346550A (zh) 2013-11-16
US20180336093A1 (en) 2018-11-22
EP2825960B1 (en) 2019-04-24
KR20140139545A (ko) 2014-12-05
US20150212882A1 (en) 2015-07-30
US10055285B2 (en) 2018-08-21
CN107967187B (zh) 2019-11-26
TWI514139B (zh) 2015-12-21
US10664345B2 (en) 2020-05-26
US20130246891A1 (en) 2013-09-19
EP2825960A1 (en) 2015-01-21
CN107967187A (zh) 2018-04-27
US11354187B2 (en) 2022-06-07
US9026887B2 (en) 2015-05-05
EP2825960A4 (en) 2016-01-06
JP2015510213A (ja) 2015-04-02
CN104272262A (zh) 2015-01-07
CN110941507A (zh) 2020-03-31
CN104272262B (zh) 2018-01-19
WO2013138190A1 (en) 2013-09-19
KR101660150B1 (ko) 2016-09-26

Similar Documents

Publication Publication Date Title
JP6053078B2 (ja) 物理ページ、論理ページ、およびコードワードの対応
US11042437B2 (en) Metadata hardening and parity accumulation for log-structured arrays
US9292382B2 (en) Codewords that span pages of memory
JP6285709B2 (ja) 冗長アレイによる不揮発性メモリのプログラム障害回復
EP2483785B1 (en) Stripe-based memory operation
US8266367B2 (en) Multi-level striping and truncation channel-equalization for flash-memory system
TW201923575A (zh) 運作中磁碟冗餘陣列同位計算
US20130342375A1 (en) Data compression and management
JP2014507717A (ja) より高いレベルの冗長な情報の計算
US20130304970A1 (en) Systems and methods for providing high performance redundant array of independent disks in a solid-state device
US9904472B2 (en) Memory system and method for delta writes
CN114730598A (zh) 利用分区命名空间简缩ssd中的逻辑到物理表指针
CN113838510A (zh) 快速的经由控制器复制
WO2014028183A1 (en) Fractional redundant array of silicon independent elements
US11550658B1 (en) Storage system and method for storing logical-to-physical address table entries in a codeword in volatile memory
CN114730247A (zh) 具有数据的最小写入大小的存储设备
WO2010150283A2 (en) Disk storage performance using digital memory and data compression

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141030

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160127

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160825

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: 20161122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161125

R150 Certificate of patent or registration of utility model

Ref document number: 6053078

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250