JP2013530473A - フラッシュ・メモリのセルをウェアレベリングする方法 - Google Patents

フラッシュ・メモリのセルをウェアレベリングする方法 Download PDF

Info

Publication number
JP2013530473A
JP2013530473A JP2013517603A JP2013517603A JP2013530473A JP 2013530473 A JP2013530473 A JP 2013530473A JP 2013517603 A JP2013517603 A JP 2013517603A JP 2013517603 A JP2013517603 A JP 2013517603A JP 2013530473 A JP2013530473 A JP 2013530473A
Authority
JP
Japan
Prior art keywords
memory
cell
block
page
subpage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013517603A
Other languages
English (en)
Other versions
JP5706520B2 (ja
Inventor
シデシヤン、ロイ、ダロン
エレフセリウ、エバンゲロス、エス
ハース、ロバート
フー、シャオユー
イリアディス、イリアス
プレッカ、ローマン、エー.
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013530473A publication Critical patent/JP2013530473A/ja
Application granted granted Critical
Publication of JP5706520B2 publication Critical patent/JP5706520B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

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

Abstract

【課題】フラッシュ・メモリなどのメモリのセルまたはページまたはサブページまたはブロックをウェアレベリングする方法を提供する。
【解決手段】本方法は、
− メモリのセルまたはページまたはサブページまたはブロックへの書き込み対象のデータ・チャンクを受信するステップ(S10)と、
− 受信したデータ・チャンク中の、書き込み対象のバイナリ・データの所与の型「0」または「1」の回数をカウントするステップ(S40)と、
− 受信したデータ・チャンクの、メモリのセルまたはページまたはサブページまたはブロックの間への書き込みを、書き込み対象のデータ・チャンク中でカウントされたバイナリ・データの所与の型「0」または「1」の数に照らして、メモリがウェアレベルされるように分配するステップ(S50)と、
を含む。
【選択図】図3

Description

本発明は、メモリ管理の分野に関し、具体的には、フラッシュ・メモリなどのメモリに使われるウェアレベリング技法に関する。
固体メモリまたは固体デバイス(SSDとしても知られる)は、例えばNANDベースのフラッシュ・メモリの中にデータを格納する。読み取りおよび書き込みオペレーションなどSSD上で遂行されるオペレーションは、固体メモリ・コントローラまたはフラッシュ・メモリ・コントローラによって制御される。新しいデータをSSDのセグメントに書き込む前に、そのセグメントに既に書き込まれているデータを消去して新規データが上書きできるようにしなければならない。これらのメモリは、有限の消去−書き込みサイクル回数、通常、10,000〜1,000,000の間の回数だけ持久することができ、これは一般にこれらデバイスの耐久性として知られる。耐久性は、SSDの信頼性を測定するための重要な設計基準である。
フラッシュ・メモリは、多数の消去ブロックまたはセクタに編成されており、その各々はデータを書き込む前に消去されなければならない。典型的な消去ブロックは256KBのサイズであるが、128KBから2,048KBまたはもっと大きい範囲に亘り得る。消去ブロック内のどの所与のアドレスも、一旦消去しなければ再書き込みはできない。消去サイクルは累積的であり、サイクルされた消去ブロックだけが影響を受ける。言い換えれば、いずれかのブロック中のエラーは、そのブロックのデータに限定される。消去サイクルは、供給者の製造プロセスの如何により、10,000から1,000,000回に亘る。
ウェアレベリング(wear-levering)は、SSDの寿命期間を延長するため用いられる一般的な技法である。この機能は、通常、固体メモリ・コントローラまたはフラッシュ・メモリ・コントローラ中に実装される。ウェアレベリングは、データ書き込みが、ストレージ媒体全体に亘って均等に分配されることを可能にする。さらに正確には、ウェアレベリングは、これによって、ストレージ・デバイス中のコントローラが、例えば、論理ブロック・アドレスをSSD中の異なる物理ブロック・アドレスに再マッピングすることによって、全体的な摩耗を全フラッシュ・ブロックの間で均等化するためのアルゴリズムである。
現行技術中には、多くの既存のウェアレベリング・アルゴリズムがある。これらは、あらゆるフラッシュ・ブロックを均等に使うことに重点を置いている。これらのアルゴリズムは、主として、ブロックの再マッピングの頻度、書き込み対象の「最小摩耗」ブロックを検知するアルゴリズム、およびデータ・ブロックのスワッピング能力の違いに関して相互に異なっている。これらのアルゴリズムは、静的データ・ブロックをあちこち移動させるかどうかによって、2つのカテゴリ、動的ウェアレベリングと静的ウェアレベリングとに分類することができる。ウェアレベリング・アルゴリズムが、静的データ・ブロックをあちこち移動させない場合それは動的といわれ、そうでない場合はそれを静的といわれる。
既存のウェアレベリング・アルゴリズムはすべて、動的であれまたは静的であれ、ブロック・レベルで動作する。すなわち、これらは、SSD中で利用可能な全てのフラッシュ・ブロック上の消去/書き込みオペレーションをバランスさせることを目指している。また一方、任意の特定のセルに生じる実際の摩耗は、それまでにそれに書き込まれた0の数に比例する。例えば、フラッシュ・セルが、10,000消去/書き込みサイクルの耐久性仕様(endurance specification)を有する場合、各セルは、従って0を使って10,000回の消去および書き込みが可能ということになる。そうすると、フラッシュ・ブロックに書き込まれるデータ・チャンクはランダムと考えられ、しかして必ずしも同じ0の数を有しないので、フラッシュ・ブロックは、これらに書き込まれる0の数の違いに起因して、大幅に異なる摩耗レベルを経験することがあり得、これにより、ブロックの一部が他の部分よりもかなり早く摩耗することにつながり得る。
従って、ブロック・レベルのウェアレベリングの欠点は、主に、相異なるデータ・ブロックは、フラッシュ・ブロックに相異なる摩耗を与え得、しかして、任意の2つのブロックの実際の摩耗は、双方が全く同じ消去−書き込みオペレーションの回数を有していても、大きく異なることがあり得る、という事実に起因して生じる。
フラッシュ・セルは、ブロック全体が故障に至る可能性となり得る最小のメモリ単位なので、個別のメモリ・セルの摩耗を追跡し制御するセル・ベースのウェアレベリング・アルゴリズムが望ましい。
第一態様によれば、本発明は、フラッシュ・メモリなどのメモリのセルまたはページまたはサブページまたはブロックをウェアレベリングする方法として具現される。本方法は、
− メモリのセルまたはページまたはサブページまたはブロックへの書き込み対象のデータ・チャンクを受信するステップと、
− 受信したデータ・チャンク中の、書き込み対象のバイナリ・データの所与の型「0」または「1」の回数をカウントするステップと、
− 受信したデータ・チャンクの、メモリのセルまたはページまたはサブページまたはブロックの間への書き込みを、書き込み対象のデータ・チャンク中でカウントされたバイナリ・データの所与の型「0」または「1」の数に関連させて、メモリがウェアレベルされるように分配するステップと、
を含む。
諸実施形態において、本方法は、以下の特徴、
− 受信したデータ・チャンクの書き込みを分配するステップは、メモリのセルまたはページまたはサブページまたはブロックの各々に関連するウェアレベリング情報に照らしてさらに実行される;
− 上記ウェアレベリング情報は、メモリのセルまたはページまたはサブページまたはブロックに今までに書き込まれた「0」の数である;
− 受信したデータ・チャンクのプールを維持する;
− プール中の受信したデータ・チャンク群の間で最多の「0」の数を有するデータ・チャンクが、メモリの最小摩耗セルまたはページまたはサブページまたはブロックを表すウェアレベリング情報を有する、メモリのセルまたはページまたはサブページまたはブロックに書き込まれる;
− プール中の受信したデータ・チャンク群の間で最少の「0」の数を有するデータ・チャンクが、メモリの最大摩耗セルまたはページまたはサブページまたはブロックを表すウェアレベリング情報を有する、メモリのセルまたはページまたはサブページまたはブロックに書き込まれる;
− メモリの最小摩耗セルまたはページまたはサブページまたはブロックは、最少の「0」の数を有するウェアレベリング情報と関連付けられ、メモリの最大摩耗セルまたはページまたはサブページまたはブロックは、最多の「0」の数を有するウェアレベリング情報と関連付けられる;
− メモリのセルまたはページまたはサブページまたはブロックの各々は、それらそれぞれのウェアレベリング情報とともにカウンタ中に記録される;
− カウンタに記録されたセルまたはページまたはサブページまたはブロックはソートされる;
− 受信した各データ・チャンクの書き込みの各分配の後で、ウェアレベリング情報が更新される;
− 受信したデータ・チャンクの書き込みの分配は、メモリのセルまたはページまたはサブページまたはブロックのセットに限定され、メモリのセルまたはページまたはサブページまたはブロックの該セットは、相異なるウェアレベリング情報を有する、メモリのセルまたはページまたはサブページまたはブロックを含む;
の一つ以上を含む。
別の態様によれば、本発明は、フラッシュ・メモリなどのメモリのセルまたはページまたはサブページまたはブロックをウェアレベリングするためのシステムとして具現され、本システムは、
− メモリのセルまたはページまたはサブページまたはブロックに書き込まれるデータ・チャンクを受信するための手段と、
− メモリ・コントローラと、
を含み、メモリ・コントローラは、
− 受信したデータ・チャンク中の、書き込み対象のバイナリ・データの所与の型「0」または「1」の回数をカウントし、
− 受信したデータ・チャンクの、メモリのセルまたはページまたはサブページまたはブロックの間への書き込みを、書き込み対象のデータ・チャンク中でカウントされたバイナリ・データの所与の型「0」または「1」の数に照らして、メモリがウェアレベルされるように分配する。
諸実施形態において、本システムは、以下の特徴、
− メモリ・コントローラは、メモリの各セルまたはページまたはサブページまたはブロックに対するウェアレベリング情報をカウンタ中に記録し、各受信したデータ・チャンクの書き込みの各分配の後でウェアレベリング情報を更新する;
− メモリ・コントローラは、メモリのセルまたはページまたはサブページまたはブロックのセットを維持する書き込みアロケータをさらに含み、メモリのセルまたはページまたはサブページまたはブロックの該セットは、相異なるウェアレベリング情報を有する、メモリのセルまたはページまたはサブページまたはブロックを含む;
の一つ以上を含む。
別の態様によれば、本発明は、コンピュータに、本発明による方法のステップを実行させるためのコード手段を含む、フラッシュ・メモリなどのメモリのセルまたはページまたはサブページまたはブロックをウェアレベリングするための、コンピュータ可読媒体に格納されたコンピュータ・プログラムとして具現される。
限定されない事例として、添付の図面を参照しながら、本発明を具現するシステムおよびプロセスを以下に説明する。
あるフラッシュ・メモリの概略図である。 ある固体デバイスの概略図である。 本発明によるプロセスの実施形態のフローチャートである。 本発明の実施形態による、コンピュータ・ハードウェアのブロック図である。
本発明は、フラッシュ・メモリなどのメモリのセルまたはページまたはサブページまたはブロック(以下、セル/ページ/サブページ/ブロックと記載する)をウェアレベリングする方法を対象とする。セル/ページ/サブページ/ブロックをウェアレベリングするとは、メモリのセル/ページ/サブページ/ブロックの摩耗を均等化することをいう。このための、メモリのセル/ページ/サブページ/ブロックに書き込むデータ・チャンクが受信される。次いで、受信したデータ・チャンク中の、書き込み対象のバイナリ・データの所与の型「0」または「1」の回数がカウントされる。次に、受信したデータ・チャンクの、メモリのセル/ページ/サブページ/ブロックの間への書き込みが、書き込み対象のデータ・チャンク中でカウントされたバイナリ・データの所与の型「0」または「1」の数に照らして、メモリがウェアレベルされるように分配される。
フラッシュ・メモリなどのメモリでは、その中に格納されたデータは、2基数体系(base-2 number system)とも言われる2進法で表現される。このことは、データ・チャンクが、2つの記号「0」および「1」を使った数値で表されるバイナリ・データから成ることを意味し、これはバイナリ・データが「0の群」もしくは「1の群」またはその両方で表現されるということである。その結果として、データ・チャンク内のあるバイナリ・データの所与の型(例えば「0」)の数がカウントされるとき、データ・チャンク内の他方のバイナリ・データの所与の型(例えば「1」)の数も暗黙裡にカウントされていることになる。言い換えれば、「0」をカウントすることは「1」をカウントすることを意味し、その逆もいえる。
上記を鑑み、本発明は、例えば、フラッシュ・メモリといった固体デバイスのメモリなどのメモリをウェアレベリングするための新しいソリューションを提案する。これは、統計的なセル・ベースのウェアレベリングを利用する。この統計的セル・ベースのウェアレベリング(statisticalcell-based wear-leveling)は、従来技術で既知のブロック群に対する大まかな摩耗均等化の代わりに、メモリの全セルに対する均等な摩耗を維持することを目指す。本発明は、セルへの「0」の書き込みだけがセルを摩耗させるのであり、しかして、全セルに対し統計的に一様な「0」書き込みの合計数を保つことが、セル・レベルの均等な摩耗を実現する、という原理を用いる。本発明のある実施形態は、セル/ページ/サブページ/ブロック・レベルでの「0」書き込みの回数の追跡を保持し、メモリに書き込まれるデータ・チャンク(chunks of data)の0の数を計算し、高い「0」書き込みの履歴を有するセル/ブロック/ページ/サブページには、より少ない0を有するデータ・チャンクを書き込み、その逆も行う。
ここで図1を参照すると、NANDメモリなどのフラッシュ・メモリ1の概略図が示されている。このフラッシュ・メモリは、フローティングゲート・トランジスタ2、4、6、8、10、12から成るセルのアレイ中に情報を格納する。フローティングゲート・トランジスタは、ドレイン(D)、ソース(S)およびゲートを含む在来のMOSFETと類似の電解効果型トランジスタであるが、電気的に分離されたフローティング・ゲート(FG)をさらに含み、ここで電子を捕捉することができる。図1のセル10はドレイン(D)、ソース(S)、制御ゲート(CG)、およびフローティング・ゲート(FG)を含む。
フラッシュ・メモリ1のフローティングゲート・トランジスタ2、4、6は直列に接続されており、しかして第一ビットライン14を形成している。フローティングゲート・トランジスタ8、10、12は直列に接続されており、第二ビットライン16を形成している。例えば、セル10のドレイン(D)は、セル8のソースと直列に接続されており、セル10のソース(S)はセル12のドレインと直列に接続されている。さらに、それぞれのフローティングゲート・トランジスタから成るこれらのセル(2と8)、(4と10)および(6と12)は、これらそれぞれの制御ゲート(CG)を介して、それぞれ、ワード・ライン22、20、および18に接続されている。図1が、フラッシュ・メモリ1を形成するセルのアレイの小さな部分だけを示していることは理解されよう。
各個別のセル2、4、6、8、10、12は、制御ゲート(CG)およびドレイン(D)に電圧を印加し、ソース(S)を接地することによってプログラムすることができる。電子がフローティング・ゲートに注入され、フローティング・ゲート中に捕捉され従って該ゲートは荷電される。結果として、セルはバイナリ・データ「0」にセットされる。
各個別のセル2、4、6、8、10、12は、いくつかの仕方で消去できる。一つのアプローチとして、制御ゲート(CG)を接地し、ソース(S)に電圧を印加して、捕捉された電子をフローティング・ゲート(FG)からソース(S)へ逃がすことがある。この結果、フローティング・ゲートは放電され、セルはバイナリ・データ「1」にセットされる。
シングルレベル・セル(SLC)メモリでは、セルは1ビット(バイナリ・データ「0」または「1」)だけを格納する。マルチレベル・セル(MLC)デバイスでは、セルは複数のビット(例えば、2つのバイナリ・データ)を格納することができる。
従って、セルのフローティング・ゲートに捕捉された電荷が、メモリのセルから読み取られる論理レベルを決める。もう少し簡単にいえば、メモリは次のように機能する、すなわち、フラッシュ・メモリ上にバイナリ・データ「0」をプログラミングする(一般には「0」を書き込む、という)ことは、フローティング・ゲートを荷電し、論理値をゼロにすることに相当する。さらに、消去されたセルだけに、プログラムする(すなわち、フローティング・ゲートを荷電させる)ことが可能である。加えて、セルを消去する場合、フラッシュ・メモリのフローティング・ゲート上にバイナリ・データ「1」がプログラムされ、これはセルを放電することに相当し、これは倫理「1」として読み取られる。
フラッシュ・メモリなどのメモリは、ページ、サブページ、およびブロックに配列される。各ブロックは、通常、サイズが512または2,048または4,096バイトのいくつかののページから成る。各ページは、エラー訂正コード(ECC)チェックサムを格納するための数バイトに関連付けられる。通常、ページは複数のセルを含み、ブロックは複数のページを含む。さらに、ページはサブページに分割することができ、例えば、サイズが4,096バイトのページは、各々が512バイトの8つのサブページに分割することができる。メモリのセルは、バイナリ・データを格納するための最小の単位である。
ここで図2を参照すると、固体デバイス(または固体メモリ)の概略図が示されている。固体デバイス20は、例えば、図1に示されたNANDメモリのようなフラッシュ・メモリなどの主メモリ206を含む。ちなみに、主メモリには一つ以上のチップを含めることができる。チップは、複数のセルを含む集積回路である。固体デバイスには、読み取り、書き込み、および消去オペレーションなど、SSD上で遂行されるオペレーションを実施するための機能を実装するメモリ・コントローラ202を含めることができる。メモリ・コントローラには、SSDの管理のための他の機能を実装することもできる。さらに、このSSDは、(例えばコンピュータなどの)デバイスとデータを交換するための、入力/出力(I/O:input/output)インタフェース204aおよび204bを含む。I/Oインタフェースは、主メモリ206に書き込まれるデータ・チャンクの受信、および主メモリ206に既に格納されているデータ・チャンクの送信を可能にする。このI/Oインタフェースは、受信したデータ・チャンクを一時的に格納できる二次メモリ210に接続することができる。この二次メモリ210は、主メモリ206に書き込むよう意図された受信したデータ・チャンクのプールを提供することを目的としている。二次メモリ210は、データ・バッファとして機能し、DRAM、フラッシュ、または別のメモリ・テクノロジーとすることができる。かくして、受信されたデータ・チャンクは、第一ステップにおいて、二次メモリ210に格納され、これらは、第二ステップで主メモリ206に移動される。受信したデータ・チャンクのプールに遂行されるオペレーションは、メモリ・コントローラ202によって管理される。また、SSD20には、カウンタ208を含め、これに主メモリ206のセル/ページ/サブページ/ブロックの各々に関連付けられたウェアレベリング情報を記録することもできる。セル/ページ/サブページ/ブロックのウェアレベリング情報は、例えばフラッシュ・メモリなどの主メモリ206の残存耐用年数(remaining servicelife)を表す。言い換えれば、ウェアレベリング情報は、主メモリ206のセル/ページ/サブページ/ブロックに対し、これから先どれだけの数の消去/書き込みサイクルが実施可能かを顕す。実際上は、カウンタ208はメモリであり、これをDRAM、フラッシュ、または別のメモリ・テクノロジーとすることができ、カウンタ208上で遂行されるオペレーションはメモリ・コントローラ202によって制御される。
通例主メモリ206をメモリといい、固体デバイス20の各種メモリを区別する際に、明確化のため、用語、主メモリ206、二次メモリ210、およびカウンタ208を使っていることを理解されたい。
ここで図3を参照すると、例えば、図2に記載の固体デバイスの実施形態を念頭におきながら、フラッシュ・メモリなどのメモリのセル/ページ/サブページ/ブロックをウェアレベリングする方法のある実施形態が示されている。
ステップS10でデータ・チャンクが受信される。図2を参照しながら説明したように、固体デバイス20は、入力/出力(I/O)インタフェース204aおよび204bを介し、データ・チャンクを受信することができる。
次に、ステップS20で、受信したデータ・チャンクは、その前に受信した他のデータ・チャンクとともに格納され、受信したデータ・チャンクのプールが維持される。受信したデータ・チャンクのプールは、SSD20の二次メモリ210に格納することができる。しかして、プールは、メモリのセル/ページ/サブページ/ブロックへの次の書き込み対象のデータ・チャンクを含む。
次いで、ステップS30で、カウンタに記録されているセル/ページ/サブページ/ブロックがソートされる(S30)。このソートは、セル/ページ/サブページ/ブロックの各々に関連するそれぞれのウェアレベリング情報に従って行われる。
メモリのセル/ページ/サブページ/ブロックのウェアレベリング情報は、メモリの当該セル/ページ/サブページ/ブロックに既に書き込まれた「0」の数とすることができる。実際には、消去されているセル、すなわち、フラッシュ・メモリのフローティング・ゲートにバイナリ・データ「1」がプログラムされているセルをプログラムすることが可能なだけであり、このことは、どの特定のセルに生じた実際の摩耗も、それに対し今までに書き込まれた0の数に比例することを意味する。従って、メモリの最小摩耗セル/ページ/サブページ/ブロックは、最少の「0」の数を有するウェアレベリング情報に関連付けられることが理解されよう。逆に、メモリの最大摩耗セル/ページ/サブページ/ブロックは、最多の「0」の数を有するウェアレベリング情報に関連付けられる。ウェアレベリング情報をソートすることによって、メモリの最大および最小摩耗セル/ページ/サブページ/ブロックを容易に識別することが可能である。
実際上は、カウンタ(例えば、メモリなど)は、メモリの各セル/ページ/サブページ/ブロックに書き込まれる「0」の数を恒久的にカウントしており、各セル/ページ/サブページ/ブロックに書き込まれた「0」の数に関連する表がカウンタによって維持される。この表に記録されたセル/ページ/サブページ/ブロックは、これらそれぞれの「0」の数に基づいて容易にソートすることができる。
ウェアレベリング情報を、セル毎に、またはページ毎に、またはサブページ毎に、またはブロック毎に記録するかどうかは、実装上の複雑性/コストとウェアレベリング効果との間のトレードオフ如何による。ページ(サブページ)毎のウェアレベリング情報の維持は、最高の実装複雑性およびコストを代償として、最高のウェアレベリング効果を有し、一方、ブロック毎のカウンタは、最小の実装労力を要するだけであるが、最小のウェアレベリング効果が得られるだけである。
次に、ステップS40で、受信した各データ・チャンクに対し、メモリのセル/ページ/サブページ/ブロックに書き込まれることになるバイナリ・データの所与の型「0」または「1」の回数がカウントされる。実際上は、データ・チャンク中にカウントされた「0」または「1」の数は、例えば二次メモリ210などのメモリに格納される。
次いで、ステップS50で、受信したデータ・チャンクの書き込みが、書き込み対象のデータ・チャンク中にカウントされたバイナリ・データの所与の型「0」または「1」の数に照らして、メモリがウェアレベリングされるようにして、メモリのセル/ページ/サブページ/ブロックの間に分配される。しかして、統計的意味ですなわち平均としてセル・レベルのウェアレベリングを実行することができ、書き込み対象のデータ・チャンク中の「0」の数に基づいてデータ・チャンクの分配が行われるので、長期的には、各セルが、それに書き込まれた0の数に関連して、同じ様な摩耗を経る可能性が非常に高いことになる。書き込み対象データ・チャンク中の「1」の数をカウントすることは、暗黙裡にそのデータ・チャンク中の「0」の数をカウントすることを意味しているので、データ・チャンクの分配を、書き込み対象データ・チャンク中の「1」の数に基づいても実施できることを理解されたい。
さらに、メモリのセル/ページ/サブページ/ブロックの各々に関連するウェアレベリング情報に照らして、受信したデータ・チャンクの書き込みを分配することができる。有利には、本ウェアレベリングは、個別セルのウェアレベリングを考慮に入れている点で改良されている。
上記に換えて、受信したデータ・チャンクの書き込みを、メモリのセル/ページ/サブページ/ブロックのセットに限定して、それらセル/ページ/サブページ/ブロックが相異なるウェアレベリング情報を有するようにする。これは、受信したデータ・チャンクを直ちに書き込むことを可能にし、しかして、ウェアレベリングの整合性とデータ・チャンクの処理の速度とを大幅に改善する。
実際上は、メモリのセル/ページ/サブページ/ブロックのセットは、固体デバイス20のメモリ・コントローラ202に管理される書き込みアロケータによって維持される。
分配の2つのモードの分配(S60、S70)を実行することができる。ステップS60とS70とは、同時に、または引き続いて、または二者択一的に実行することができる。
ステップS60で、分配は、プールの受信したデータ・チャンク群の間で最多の「0」の数を有するデータ・チャンクが、メモリの最小摩耗セル/ページ/サブページ/ブロックを表すウェアレベリング情報を有する、メモリのセル/ページ/サブページ/ブロックに書き込まれるように、遂行される。上記から分かるように、最小摩耗セル/ページ/サブページ/ブロックは、メモリのセル/ページ/サブページ/ブロックの間で、最少の「0」の数を有するウェアレベリング情報を有する。
上記に換えて、分配を、プールの受信したデータ・チャンク群の間で最少の「1」の数を有するデータ・チャンクを、メモリの最小摩耗セル/ページ/サブページ/ブロックを表すウェアレベリング情報を有する、メモリのセル/ページ/サブページ/ブロックに書き込むように行うこともできる。
ステップS70で、分配は、プールの受信したデータ・チャンク群の間で最少の「0」の数を有するデータ・チャンクが、メモリの最大摩耗セル/ページ/サブページ/ブロックを表すウェアレベリング情報を有する、メモリのセル/ページ/サブページ/ブロックに書き込まれるように遂行され、最大摩耗セル/ページ/サブページ/ブロックは、メモリのセル/ページ/サブページ/ブロックの間で最多の「0」の数を有するウェアレベリング情報を有する。
上記に換えて、分配を、プールの受信したデータ・チャンク群の間で最多の「1」の数を有するデータ・チャンクを、メモリの最大摩耗セル/ページ/サブページ/ブロックを表すウェアレベリング情報を有する、メモリのセル/ページ/サブページ/ブロックに書き込むように行うこともできる。
チャンクの書き込みが遂行されたならば、その書き込まれたセル/ページ/サブページ/ブロックのウェアレベリング情報が更新される(ステップS80)。通常、この更新は、ステップS40で、書き込みデータ・チャンクに対してカウントされたバイナリ・データの所与の型「0」または「1」の回数を、カウンタ208に送信することによって行うことができる。このオペレーションは、メモリ・コントローラ202によって遂行することができる。
本発明の方法は、主メモリを形成するチップに対しても、同様に適用可能なことを理解されたい。この場合、ウェアレベリング情報は、主メモリの各チップに関連付けられる。
図3に記載された実施形態は、1ビットだけを格納可能なシングルレベル・セル(SLC)を念頭において説明されている。
別の実施形態において、本発明の方法は、同様な方法でマルチレベル・セル(MLC)にも適用される。MLC中の各セルは、例えば2ビットの複数ビットを含む。消去の後、セルは、11のデータ・パターンを使ってリセットされ、これはセルが放電されたことを意味する。しかして、01、10、および00など他のデータ・パターンがセルに書き込まれるとき且つその時に限って摩耗が生じる。従って、本発明は、当然ながら、これら01、10、および00のパターンの全てを処理することによってMLCメモリにも具現することができる。
さらに具体的には、各セル、ページ、サブページ、ブロックに対し、それに書き込まれた01、10、および00の一切のパターンまたはパターン群の発生の数についてのウェアレベリング情報が保持される。書き込み対象のデータ・チャンクのプールが維持され、各受信したデータ・チャンクに対し01、10、および00のパターンの数がカウントされる。次いで、データ・チャンクの書き込みの分配が実施される。
当業者ならよく理解するであろうように、本発明の態様は、方法、システム、またはコンピュータ・プログラム製品として具現することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態(ファームウエア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは、一般に本明細書では全て「回路」、「モジュール」、または「システム」といわれる、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の態様は、内部に具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体(群)中に具現されたコンピュータ・プログラム製品の形を取ることもできる。
一つ以上のコンピュータ可読媒体(群)の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体、またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的な、または半導体の、システム、装置、もしくはデバイス、あるいはこれらの任意の適切な組み合わせとすることができる。コンピュータ可読記憶媒体のさらに具体的な例(非包括的リスト)には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み取り専用メモリ(EPROM(erasable programmable read−only memory)またはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM:compact disc read−only memory)、光記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組み合わせが含まれよう。本文書の文脈において、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体とすることができる。
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現されたコンピュータ可読のプログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではないが、命令実行システム、装置、またはデバイスによってまたはこれらに関連させて使用するためのプログラムを通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
コンピュータ可読媒体中に具現されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、RFなど、またはこれらの任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、“C”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合せで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで全体的に、ユーザのコンピュータで部分的に実行することができ、ユーザのコンピュータで部分的に、遠隔コンピュータで部分的に、または遠隔のコンピュータまたはサーバで全体的に実行することができる。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN:local area network)または広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することができ、あるいは(例えばインターネット・サービス・プロバイダを使いインターネットを介し)外部のコンピュータへの接続を行うことができる。
本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様を上記で説明している。フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合せは、コンピュータ・プログラム命令によって実行可能であることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに供給し、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/処理群を実施するための手段を生成するようにすることができる。
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令できるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能/処理を実施する命令群を包含する製造品を形成するようにすることができる。
同様に、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードして、これらコンピュータ、他のプログラム可能装置、またはコンピュータ実行のプロセスを生成する他のデバイス上で一連のオペレーション・ステップを実行させて、これらコンピュータまたは他のプログラム可能装置で実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に規定された機能群/処理群を実施するためのプロセスを提供するようにすることもできる。
図中のフローチャートおよびブロック図は、本発明のさまざまな実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、およびオペレーションを例示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、所定の論理機能(群)を実行するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図に記載された順序を外れて行われることがあり得ることに留意すべきである。例えば、連続して示された2つのブロックが、実際にはほぼ同時に実行されることがあり、関与する機能によっては、時には、これらブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロックの組み合わせは、特定の機能または処理を実施する、特殊用途のハードウェア・ベースのシステム、または特殊用途のハードウェアとコンピュータ命令との組み合わせによって実施可能なことにも留意すべきである。
図4は、本発明のある実施形態によるコンピュータ・ハードウェアのブロック図である。本発明の実施形態によるコンピュータ・システム(401)は、CPU(404)および主メモリ(402)を含み、これらはバス(400)に接続されている。バス(400)は、LCDモニタなどのディスプレイまたはスクリーン(414)に連結されたディスプレイ・コントローラ(412)に接続されている。このディスプレイ等(414)は、コンピュータ・システムについての情報を表示するために使われる。また、バス(400)は、IDEまたはSATAコントローラなどのデバイス・コントローラ(406)を介して、ハード・ディスク(408)またはDVD(410)などの記憶デバイスにも接続されている。バス(404)は、キーボード/マウス・コントローラ(420)またはUSBコントローラ(図示せず)を介して、キーボード(422)およびマウス(424)にさらに接続されている。また、バスは、例えば、イーサネット(R)プロトコルに適合する通信コントローラ(418)にも接続されている。通信コントローラ(418)は、コンピュータ・システム(401)をネットワーク(416)に物理的に接続するために使われる。

Claims (15)

  1. フラッシュ・メモリなどのメモリのセルまたはページまたはサブページまたはブロックをウェアレベリングする方法であって、前記方法は、
    − 前記メモリのセルまたはページまたはサブページまたはブロックへの書き込み対象のデータ・チャンクを受信するステップ(S10)と、
    − 前記受信したデータ・チャンク中の、書き込み対象のバイナリ・データの所与の型「0」または「1」の回数をカウントするステップ(S40)と、
    − 前記受信したデータ・チャンクの、前記メモリのセルまたはページまたはサブページまたはブロックの間への前記書き込みを、書き込み対象の前記データ・チャンク中でカウントされた前記バイナリ・データの所与の型「0」または「1」の前記数に照らして、前記メモリがウェアレベルされるように分配するステップ(S50)と、
    を含む方法。
  2. 前記受信したデータ・チャンクの前記書き込みを分配するステップは、前記メモリの前記セルまたはページまたはサブページまたはブロックの各々に関連するウェアレベリング情報に照らしてさらに実行される、請求項1に記載の方法。
  3. 前記ウェアレベリング情報は、前記メモリのセルまたはページまたはサブページまたはブロックに今までに書き込まれた「0」の前記数である、請求項2に記載の方法。
  4. 受信したデータ・チャンクのプールを維持するステップ(S20)をさらに含む、請求項2〜3のいずれか一つに記載の方法。
  5. 前記プール中の前記受信したデータ・チャンク群の間で最多の「0」の前記数を有する前記データ・チャンクが、前記メモリの前記最小摩耗セルまたはページまたはサブページまたはブロックを表す前記ウェアレベリング情報を有する、前記メモリの前記セルまたはページまたはサブページまたはブロックに書き込まれる(S60)、請求項4に記載の方法。
  6. 前記プール中の前記受信したデータ・チャンク群の間で最少の「0」の前記数を有する前記データ・チャンクが、前記メモリの前記最大摩耗セルまたはページまたはサブページまたはブロックを表す前記ウェアレベリング情報を有する、前記メモリの前記セルまたはページまたはサブページまたはブロックに書き込まれる(S70)、請求項4または5に記載の方法。
  7. − 前記メモリの前記最小摩耗セルまたはページまたはサブページまたはブロックは、最少の「0」の前記数を有する前記ウェアレベリング情報と関連付けられ、
    − 前記メモリの前記最大摩耗セルまたはページまたはサブページまたはブロックは、最多の「0」の前記数を有する前記ウェアレベリング情報と関連付けられる、
    請求項5または6に記載の方法。
  8. 前記メモリの前記セルまたはページまたはサブページまたはブロックの各々は、それらそれぞれのウェアレベリング情報とともにカウンタ中に記録される、請求項2〜7の一つに記載の方法。
  9. 前記カウンタに記録された前記セルまたはページまたはサブページまたはブロックはソートされる(S30)、請求項8に記載の方法。
  10. 各受信したデータ・チャンクの前記書き込みの各分配の後で、前記ウェアレベリング情報が更新される(S80)、請求項2〜10のいずれか一つに記載の方法。
  11. 前記受信したデータ・チャンクの前記書き込みを分配するステップは、前記メモリのセルまたはページまたはサブページまたはブロックのセットに限定され、前記メモリのセルまたはページまたはサブページまたはブロックの前記セットは、相異なるウェアレベリング情報を有する、前記メモリのセルまたはページまたはサブページまたはブロックを含む、請求項2〜11のいずれか一つに記載の方法。
  12. フラッシュ・メモリなどのメモリのセルまたはページまたはサブページまたはブロックをウェアレベリングするためのシステムであって、
    − 前記メモリのセルまたはページまたはサブページまたはブロックに書き込まれるデータ・チャンクを受信するための手段と、
    − メモリ・コントローラと、
    を含み、前記メモリ・コントローラは、
    − 前記受信したデータ・チャンク中の、書き込み対象のバイナリ・データの所与の型「0」または「1」の回数をカウントし、
    − 前記受信したデータ・チャンクの、前記メモリのセルまたはページまたはサブページまたはブロックの間への前記書き込みを、書き込み対象の前記データ・チャンク中でカウントされた前記バイナリ・データの所与の型「0」または「1」の前記数に照らして、前記メモリがウェアレベルされるように分配する、
    前記システム。
  13. 前記メモリ・コントローラは、
    − 前記メモリの各セルまたはページまたはサブページまたはブロックに対する前記ウェアレベリング情報をカウンタ中に記録し、
    − 各受信したデータ・チャンクの前記書き込みの各分配の後で前記ウェアレベリング情報を更新する、
    請求項12に記載のシステム。
  14. 前記メモリ・コントローラは、前記メモリのセルまたはページまたはサブページまたはブロックのセットを維持する書き込みアロケータをさらに含み、前記メモリのセルまたはページまたはサブページまたはブロックの前記セットは、相異なるウェアレベリング情報を有する、前記メモリのセルまたはページまたはサブページまたはブロックを含む、請求項12または13に記載のシステム。
  15. コンピュータに、請求項1〜11のいずれか一つに記載の前記方法の前記ステップを実行させるためのコード手段を含む、フラッシュ・メモリなどのメモリのセルまたはページまたはサブページまたはブロックをウェアレベリングするための、コンピュータ可読媒体に格納されたコンピュータ・プログラム。
JP2013517603A 2010-06-28 2011-06-08 フラッシュ・メモリのセルをウェアレベリングする方法 Active JP5706520B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10167547 2010-06-28
EP10167547.8 2010-06-28
PCT/IB2011/052492 WO2012001556A1 (en) 2010-06-28 2011-06-08 Wear-leveling of cells/pages/sub-pages/blocks of a memory

Publications (2)

Publication Number Publication Date
JP2013530473A true JP2013530473A (ja) 2013-07-25
JP5706520B2 JP5706520B2 (ja) 2015-04-22

Family

ID=44454748

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013517603A Active JP5706520B2 (ja) 2010-06-28 2011-06-08 フラッシュ・メモリのセルをウェアレベリングする方法

Country Status (6)

Country Link
US (1) US9170933B2 (ja)
JP (1) JP5706520B2 (ja)
CN (1) CN102918601B (ja)
DE (1) DE112011102160B4 (ja)
GB (1) GB2495873B (ja)
WO (1) WO2012001556A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017017842A1 (ja) * 2015-07-30 2017-02-02 株式会社日立製作所 メモリの制御装置、記憶装置、および、メモリの書込み方法
JP2017514867A (ja) * 2014-05-07 2017-06-08 エヴォテック・インターナショナル・ゲゼルシャフト・ミット・ベシュレンクテル・ハフツングEvotec International GmbH 医薬組成物のためのスルホキシイミン置換キナゾリン
KR20200032764A (ko) * 2017-08-23 2020-03-26 마이크론 테크놀로지, 인크 메모리에서의 감지 동작

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095641A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Sub-block based wear leveling
US9262336B2 (en) 2011-12-23 2016-02-16 Intel Corporation Page miss handler including wear leveling logic
KR101695341B1 (ko) * 2012-04-30 2017-01-11 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 솔리드 스테이트 저장 장치의 수명을 향상시키기 위한 숫자 표현
US20140089560A1 (en) * 2012-09-25 2014-03-27 Adesto Technologies Corporation Memory devices and methods having write data permutation for cell wear reduction
US9117533B2 (en) 2013-03-13 2015-08-25 Sandisk Technologies Inc. Tracking erase operations to regions of non-volatile memory
US9153331B2 (en) 2013-03-13 2015-10-06 Sandisk Technologies Inc. Tracking cell erase counts of non-volatile memory
US20160196076A1 (en) * 2013-07-08 2016-07-07 Wilus Institute Of Standards And Technology Inc. Memory system and method for controlling same
GB201322075D0 (en) 2013-12-13 2014-01-29 Ibm Device for selecting a level for at least one read voltage
US9563373B2 (en) 2014-10-21 2017-02-07 International Business Machines Corporation Detecting error count deviations for non-volatile memory blocks for advanced non-volatile memory block management
US9830087B2 (en) * 2014-11-13 2017-11-28 Micron Technology, Inc. Memory wear leveling
US9990279B2 (en) 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
US10339048B2 (en) 2014-12-23 2019-07-02 International Business Machines Corporation Endurance enhancement scheme using memory re-evaluation
US10452560B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Wear leveling in non-volatile memories
US10445232B2 (en) 2015-07-14 2019-10-15 Western Digital Technologies, Inc. Determining control states for address mapping in non-volatile memories
US10445251B2 (en) 2015-07-14 2019-10-15 Western Digital Technologies, Inc. Wear leveling in non-volatile memories
US10452533B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Access network for address mapping in non-volatile memories
US9921969B2 (en) 2015-07-14 2018-03-20 Western Digital Technologies, Inc. Generation of random address mapping in non-volatile memories using local and global interleaving
US9842059B2 (en) 2016-04-14 2017-12-12 Western Digital Technologies, Inc. Wear leveling in storage devices
CN105931660A (zh) * 2016-05-20 2016-09-07 西安紫光国芯半导体有限公司 一种数据拓扑转换器及转换方法及动态存储器
US10489076B2 (en) 2016-06-20 2019-11-26 Samsung Electronics Co., Ltd. Morphic storage device
US10055159B2 (en) 2016-06-20 2018-08-21 Samsung Electronics Co., Ltd. Morphic storage device
US10740466B1 (en) 2016-09-29 2020-08-11 Amazon Technologies, Inc. Securing interfaces of a compute node
US10901627B1 (en) * 2017-02-28 2021-01-26 Amazon Technologies, Inc. Tracking persistent memory usage
CN107102820B (zh) * 2017-04-17 2018-07-06 北京得瑞领新科技有限公司 一种nand闪存设备的数据处理方法及装置
KR102556459B1 (ko) 2017-12-20 2023-07-18 에스케이하이닉스 주식회사 메모리 장치 및 메모리 컨트롤러를 포함하는 메모리 시스템, 및 그의 라이트 동작방법
US10761739B2 (en) 2018-08-23 2020-09-01 Micron Technology, Inc. Multi-level wear leveling for non-volatile memory
US11537307B2 (en) * 2018-08-23 2022-12-27 Micron Technology, Inc. Hybrid wear leveling for in-place data replacement media
KR20200031924A (ko) 2018-09-17 2020-03-25 삼성전자주식회사 메모리 컨트롤러, 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 스토리지 장치
US10817430B2 (en) * 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
US10860219B2 (en) * 2018-10-05 2020-12-08 Micron Technology, Inc. Performing hybrid wear leveling operations based on a sub-total write counter

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056785A (ja) * 1999-08-20 2001-02-27 Matsushita Electric Ind Co Ltd メモリ制御装置及びメモリ制御方法
US20080094914A1 (en) * 2006-10-20 2008-04-24 Samsung Electronics Co., Ltd. Methods of restoring data in flash memory devices and related flash memory device memory systems
JP2008217857A (ja) * 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
WO2008145070A1 (en) * 2007-05-30 2008-12-04 Memoright Memoritech (Shenzhen) Co., Ltd Flash memory data read/write processing method
US20100011260A1 (en) * 2006-11-30 2010-01-14 Kabushiki Kaisha Toshiba Memory system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292868B1 (en) * 1996-10-15 2001-09-18 Micron Technology, Inc. System and method for encoding data to reduce power and time required to write the encoded data to a flash memory
US8078794B2 (en) 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US7610438B2 (en) * 2000-01-06 2009-10-27 Super Talent Electronics, Inc. Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
JP3881869B2 (ja) 2001-11-05 2007-02-14 株式会社ルネサステクノロジ 半導体記憶装置
US6973531B1 (en) 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7237074B2 (en) 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
JP2006012367A (ja) 2004-06-29 2006-01-12 Toshiba Corp 不揮発性半導体記憶装置
US7355892B2 (en) 2006-06-30 2008-04-08 Sandisk Corporation Partial page fail bit detection in flash memory devices
US7366017B2 (en) 2006-08-22 2008-04-29 Micron Technology, Inc. Method for modifying data more than once in a multi-level cell memory location within a memory array
US7697325B2 (en) 2007-09-24 2010-04-13 Sandisk Corporation Non-volatile memory cell endurance using data encoding
US7924628B2 (en) 2007-11-14 2011-04-12 Spansion Israel Ltd Operation of a non-volatile memory array
US7903486B2 (en) * 2007-11-19 2011-03-08 Sandforce, Inc. System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory
KR100857252B1 (ko) 2007-12-27 2008-09-05 (주)인디링스 마모도를 비트 수준에서 평준화하는 플래시 메모리 장치 및플래시 메모리 프로그래밍 방법
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8250417B2 (en) * 2009-01-14 2012-08-21 Micron Technology, Inc. Method for detecting flash program failures

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001056785A (ja) * 1999-08-20 2001-02-27 Matsushita Electric Ind Co Ltd メモリ制御装置及びメモリ制御方法
US20080094914A1 (en) * 2006-10-20 2008-04-24 Samsung Electronics Co., Ltd. Methods of restoring data in flash memory devices and related flash memory device memory systems
US20100011260A1 (en) * 2006-11-30 2010-01-14 Kabushiki Kaisha Toshiba Memory system
JP2008217857A (ja) * 2007-02-28 2008-09-18 Toshiba Corp メモリコントローラ及び半導体装置
WO2008145070A1 (en) * 2007-05-30 2008-12-04 Memoright Memoritech (Shenzhen) Co., Ltd Flash memory data read/write processing method

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017514867A (ja) * 2014-05-07 2017-06-08 エヴォテック・インターナショナル・ゲゼルシャフト・ミット・ベシュレンクテル・ハフツングEvotec International GmbH 医薬組成物のためのスルホキシイミン置換キナゾリン
WO2017017842A1 (ja) * 2015-07-30 2017-02-02 株式会社日立製作所 メモリの制御装置、記憶装置、および、メモリの書込み方法
KR20200032764A (ko) * 2017-08-23 2020-03-26 마이크론 테크놀로지, 인크 메모리에서의 감지 동작
KR102371039B1 (ko) 2017-08-23 2022-03-07 마이크론 테크놀로지, 인크 메모리에서의 감지 동작

Also Published As

Publication number Publication date
GB201300772D0 (en) 2013-02-27
GB2495873B (en) 2015-06-10
US9170933B2 (en) 2015-10-27
CN102918601A (zh) 2013-02-06
CN102918601B (zh) 2015-10-14
JP5706520B2 (ja) 2015-04-22
DE112011102160B4 (de) 2016-10-27
GB2495873A (en) 2013-04-24
US20130166827A1 (en) 2013-06-27
DE112011102160T5 (de) 2013-05-02
WO2012001556A1 (en) 2012-01-05

Similar Documents

Publication Publication Date Title
JP5706520B2 (ja) フラッシュ・メモリのセルをウェアレベリングする方法
US10152273B2 (en) Nonvolatile memory controller and method for erase suspend management that increments the number of program and erase cycles after erase suspend
US10824352B2 (en) Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded
US10082962B2 (en) Wear leveling of a memory array
KR102174293B1 (ko) 확률론적 데이터 구조에 기초한 메모리 내의 사전적인 교정 조치
US9448868B2 (en) Data storing method, memory control circuit unit and memory storage apparatus
US10552063B2 (en) Background mitigation reads in a non-volatile memory system
US10956317B2 (en) Garbage collection in non-volatile memory that fully programs dependent layers in a target block
KR20210077586A (ko) Nand 메모리 내에서의 판독 방해를 방지하기 위한 기술들
US9141476B2 (en) Method of storing system data, and memory controller and memory storage apparatus using the same
US8489942B1 (en) Memory management method, and memory controller and memory storage device using the same
US10254979B1 (en) Relocating or aborting a block of data by a host, based on media policies managed by a storage device
US9418731B1 (en) Memory management method, memory storage device and memory control circuit unit
US9430325B2 (en) Method for programming data, memory storage device and memory control circuit unit
US10656847B2 (en) Mitigating asymmetric transient errors in non-volatile memory by proactive data relocation
US10545700B2 (en) Memory management method, memory storage device and memory control circuit unit
CN109799949B (zh) 于记忆装置中进行刷新管理的方法、记忆装置和其控制器
US20190391752A1 (en) Block health estimation for wear leveling in non-volatile memories
US9760456B2 (en) Memory management method, memory storage device and memory control circuit unit
US20230195324A1 (en) Storage device
KR20230094110A (ko) 스토리지 장치
US20190065101A1 (en) Data storing method, memory control circuit unit and memory storage device
US9613707B1 (en) Data programming method for avoiding unavailability of rewritable non-volatile memory module due to higher erase count of part of physical erasing units, and memory control circuit unit and memory storage device using the same
US20240176508A1 (en) Reliability gain in memory devices with adaptively selected erase policies

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130104

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150120

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150226

R150 Certificate of patent or registration of utility model

Ref document number: 5706520

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150