JP2016194952A - フラッシュメモリの信頼性および寿命を改善するシステムおよび方法 - Google Patents

フラッシュメモリの信頼性および寿命を改善するシステムおよび方法 Download PDF

Info

Publication number
JP2016194952A
JP2016194952A JP2016138292A JP2016138292A JP2016194952A JP 2016194952 A JP2016194952 A JP 2016194952A JP 2016138292 A JP2016138292 A JP 2016138292A JP 2016138292 A JP2016138292 A JP 2016138292A JP 2016194952 A JP2016194952 A JP 2016194952A
Authority
JP
Japan
Prior art keywords
page
available memory
fec
memory indicator
electronic device
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
JP2016138292A
Other languages
English (en)
Other versions
JP6257708B2 (ja
Inventor
イニアン・マオ
Mao Yinian
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2016194952A publication Critical patent/JP2016194952A/ja
Application granted granted Critical
Publication of JP6257708B2 publication Critical patent/JP6257708B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • 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]

Landscapes

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

Abstract

【課題】フラッシュメモリを制御するための方法を提供すること。
【解決手段】この方法は、現在の順方向誤り訂正(FEC)パラメータセットより高い冗長性を提供する新しいFECパラメータセットを選択するステップを含む。この方法は、フラッシュメモリ内の第1の破壊されたページへの書込み動作中に、新しいFECパラメータセットを使用してソース情報ビットをコーディングするステップをも含む。この方法は、第1の破壊されたページおよびフラッシュメモリ内の少なくとも1つの追加の破壊されたページを、期待されるページサイズを有する単一の論理ページにマッピングするステップをさらに含む。
【選択図】図1

Description

優先権出願
本願は、その全体が参照によって本明細書に組み込まれている、2013年4月12日に出願した米国特許出願第13/861691号、名称「SYSTEMS AND METHODS TO IMPROVE THE RELIABILITY AND LIFESPAN OF FLASH MEMORY」の優先権を主張するものである。
本開示は、全般的にはフラッシュメモリに関する。より具体的には、本開示は、フラッシュメモリの信頼性および寿命を改善するシステムおよび方法に関する。
電子デバイス(セルラー電話、ワイヤレスモデム、コンピュータ、デジタル音楽プレイヤ、全地球測位システムユニット、携帯情報端末、ゲーム機など)が、日常生活の一部になった。現在では、小型のコンピューティングデバイスが、自動車から住宅の鍵に至るまで、あらゆるものに設けられている。電子デバイスは、ここ数年で劇的に複雑になっている。たとえば、多くの電子デバイスは、デバイスの制御を助ける1つまたは複数のプロセッサを有するとともに、そのプロセッサおよびデバイスの他の部分を支援するための、多数のデジタル回路も有する。
電子デバイスは、しばしば、メモリ内にデータを記憶する。メモリは、フラッシュメモリ、具体的にはNANDフラッシュメモリ(すなわち、NAND論理を使用するフラッシュメモリ)とすることができる。したがって、フラッシュメモリの信頼性および寿命を改善することによって、利益を実現することができる。
フラッシュメモリを制御するための方法が説明される。この方法は、現在の順方向誤り訂正(FEC)パラメータセットより高い冗長性を提供する新しいFECパラメータセットを選択するステップを含む。ソース情報ビットが、フラッシュメモリ内の第1の破壊されたページへの書込み動作中に、新しいFECパラメータセットを使用してコーディングされる。第1の破壊されたページおよびフラッシュメモリ内の少なくとも1つの追加の破壊されたページが、期待されるページサイズを有する単一の論理ページにマッピングされる。
選択するステップは、第1の破壊されたページへの書込み失敗(write failure)に応答して、または推定されたページ誤り率が第1の破壊されたページからの読取り動作中にFECしきい値を超える時に、実行され得る。選択するステップは、それぞれが異なる量の冗長性を提供する複数のFECパラメータセットの中から新しいFECパラメータセットを選択するステップを含むことができる。新しいFECパラメータセットは、現在のFECパラメータセットより多い、1ページ当たりに訂正され得るビットエラー(誤り)の個数を有することができる。
この方法は、新しいFECパラメータセットを第1の破壊されたページに、別のFECパラメータセットを少なくとも1つの追加の破壊されたページに記憶するステップをも含むことができる。この方法は、第1の破壊されたページおよび少なくとも1つの追加の破壊されたページから単一の論理ページへのマッピングを示すマッピングインジケータを、第1の破壊されたページおよび少なくとも1つの追加の破壊されたページに記憶するステップをさらに含むことができる。この方法は、第1の破壊されたページおよび少なくとも1つの追加の破壊されたページに記憶されたデータの配置を示す順序情報を、第1の破壊されたページおよび少なくとも1つの追加の破壊されたページに記憶するステップをさらに含むことができる。この方法は、受け取られた命令に基づいて、単一の論理ページからデータを読み取り、単一の論理ページにデータを書き込むステップをも含むことができる。
この方法は、第1の破壊されたページを部分的に劣化したページリストに記録するステップをも含むことができる。部分的に劣化したページリストから、少なくとも1つの追加の破壊されたページを検索することができる。この方法は、第1の破壊されたページの使用可能データバイトと少なくとも1つの追加の破壊されたページの使用可能データバイトとの合計が、期待されるページサイズ以上であることを判定するステップをも含むことができる。グループ化情報が、論理ページ情報テーブルに記録され得る。グループ化情報は、第1の破壊されたページおよび少なくとも1つの追加の破壊されたページのメタデータに記録され得る。
この方法は、単一の論理ページに関するインターフェース一貫性を維持するステップをも含むことができる。この方法は、ページ誤り率を推定するステップをさらに含むことができる。新しいFECパラメータセットを選択するステップは、ページ誤り率に基づくものとすることができる。
フラッシュメモリを制御するための電子デバイスも説明される。この電子デバイスは、プロセッサと、プロセッサと電子通信しているメモリとを含む。メモリは、実行可能な命令を含む。現在の順方向誤り訂正(FEC)パラメータセットより高い冗長性を提供する新しいFECパラメータセットが、選択される。ソース情報ビットが、フラッシュメモリ内の第1の破壊されたページへの書込み動作中に、新しいFECパラメータセットを使用してコーディングされる。第1の破壊されたページおよびフラッシュメモリ内の少なくとも1つの追加の破壊されたページが、期待されるページサイズを有する単一の論理ページにマッピングされる。
フラッシュメモリを制御するためのコンピュータプログラム製品も説明される。このコンピュータプログラム製品は、命令をその上に有する非一時的有形コンピュータ可読媒体を含む。この命令は、電子デバイスに、現在の順方向誤り訂正(FEC)パラメータセットより高い冗長性を提供する新しいFECパラメータセットを選択させるコードを含む。この命令は、電子デバイスに、フラッシュメモリ内の第1の破壊されたページへの書込み動作中に、新しいFECパラメータセットを使用してソース情報ビットをコーディングさせるコードをも含む。この命令は、電子デバイスに、第1の破壊されたページおよびフラッシュメモリ内の少なくとも1つの追加の破壊されたページを、期待されるページサイズを有する単一の論理ページにコードマッピングさせるコードをさらに含む。
フラッシュメモリを制御するための電子デバイスも説明される。この電子デバイスは、現在の順方向誤り訂正(FEC)パラメータセットより高い冗長性を提供する新しいFECパラメータセットを選択するように構成された回路を含む。この回路は、フラッシュメモリ内の第1の破壊されたページへの書込み動作中に、新しいFECパラメータセットを使用してソース情報ビットをコーディングするようにも構成される。この回路は、第1の破壊されたページおよびフラッシュメモリ内の少なくとも1つの追加の破壊されたページを、期待されるページサイズを有する単一の論理ページにマッピングするようにさらに構成される。
フラッシュメモリを制御するための装置も説明される。この装置は、現在の順方向誤り訂正(FEC)パラメータセットより高い冗長性を提供する新しいFECパラメータセットを選択するための手段を含む。この装置は、フラッシュメモリ内の第1の破壊されたページへの書込み動作中に、新しいFECパラメータセットを使用してソース情報ビットをコーディングするための手段をも含む。この装置は、第1の破壊されたページおよびフラッシュメモリ内の少なくとも1つの追加の破壊されたページを、期待されるページサイズを有する単一の論理ページにマッピングするための手段をさらに含む。
フラッシュメモリを制御するための方法も説明される。この方法は、フラッシュメモリ内のページにデータを書き込むステップを含む。ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータが、判定される。使用可能メモリインジケータが、記憶される。ページ内に追加データを記憶すべきかどうかが、使用可能メモリインジケータに基づいて判定される。
記憶するステップは、使用可能メモリインジケータをページ内に記憶するステップを含むことができる。記憶するステップは、使用可能メモリインジケータをフラッシュコントローラ内に記憶するステップをも含むことができる。使用可能メモリインジケータは、オペレーティングシステムに関する期待されるページサイズ未満であるページの使用可能データバイトの量を示すことができる。
この方法は、ページへの後続の書込み動作またはページからの後続の読取り動作を実行するステップをも含むことができる。ページ誤り率が、ページへの後続の書込み動作またはページからの後続の読取り動作に基づいて推定され得る。使用可能メモリインジケータが、ページ誤り率に基づいて更新され得る。
フラッシュメモリを制御するための電子デバイスも説明される。この電子デバイスは、プロセッサと、プロセッサと電子通信しているメモリとを含む。メモリは、実行可能な命令を含む。データが、フラッシュメモリ内のページに書き込まれる。ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータが、判定される。使用可能メモリインジケータが、記憶される。ページ内に追加データを記憶すべきかどうかが、使用可能メモリインジケータに基づいて判定される。
フラッシュメモリを制御するためのコンピュータプログラム製品も説明される。このコンピュータプログラム製品は、命令をその上に有する非一時的有形コンピュータ可読媒体を含む。この命令は、電子デバイスに、フラッシュメモリ内のページにデータを書き込ませるためのコードを含む。この命令は、電子デバイスに、ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータを判定させるためのコードをも含む。この命令は、電子デバイスに、使用可能メモリインジケータを記憶させるためのコードをさらに含む。この命令は、電子デバイスに、使用可能メモリインジケータに基づいて、ページ内に追加データを記憶すべきかどうかを判定させるためのコードをさらに含む。
フラッシュメモリを制御するための電子デバイスも説明される。この電子デバイスは、フラッシュメモリ内のページにデータを書き込むように構成された回路を含む。この回路は、ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータを判定するようにも構成される。この回路は、使用可能メモリインジケータを記憶するようにさらに構成される。この回路は、使用可能メモリインジケータに基づいて、ページ内に追加データを記憶すべきかどうかを判定するようにさらに構成される。
フラッシュメモリを制御するための装置も説明される。この装置は、フラッシュメモリ内のページにデータを書き込むための手段を含む。この装置は、ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータを判定するための手段をも含む。この装置は、使用可能メモリインジケータを記憶するための手段をさらに含む。この装置は、使用可能メモリインジケータに基づいて、ページ内に追加データを記憶すべきかどうかを判定するための手段をさらに含む。
フラッシュメモリの信頼性および寿命を改善するためのフラッシュコントローラを含む電子デバイスを示すブロック図である。 フラッシュメモリを制御するための方法を示す流れ図である。 フラッシュメモリ内の破壊されていないページおよび破壊されたページを示すブロック図である。 フラッシュメモリの信頼性および寿命を改善するためのフラッシュコントローラのより詳細な構成を示すブロック図である。 データをフラッシュメモリに書き込むための方法を示す流れ図である。 論理ページからデータを読み取るための方法を示す流れ図である。 フラッシュメモリ内の破壊されたページのもう1つの構成を示すブロック図である。 フラッシュメモリを制御するためのもう1つの方法を示す流れ図である。 電子デバイス内に含めることができる、ある種の構成要素を示す図である。
今日の消費者用電子デバイスの多くは、NANDフラッシュメモリを使用する。フラッシュは、電力が除去された後であっても記憶されたデータを保持することができる不揮発性メモリである。フラッシュの1タイプであるNANDフラッシュは、高密度設計であり、大きい記憶容量(たとえば、1ギガビット以上)、連続アクセスに関する良い速度、および低いコストを含む、他のタイプのメモリに対するある種の利点を有する。しかしながら、NANDフラッシュは、NANDフラッシュの動作耐用期間(operation lifetime)にわたるビットエラーに対する感受性の増加を含む固有の欠点をも有する。
NANDフラッシュは、シングルレベルセルNANDフラッシュまたはマルチレベルセル(MLC) NANDフラッシュとすることができる。シングルレベルセルNANDフラッシュと比較した時に、MLC NANDフラッシュは、より低い信頼性という犠牲をはらって、大きいメモリ容量を提供することができる。NANDフラッシュは、通常はページ単位で、一時に1ページずつアクセスされ(たとえば読取り動作および書込み動作を介して)、各ページの使用可能なデータバイトは、特定のサイズ(たとえば、512バイト、2048バイト、または4096バイト)を有する。NANDフラッシュは、その耐用期間の中での書込みサイクルの回数に対する制限を有する。フラッシュデバイスエラーのタイプは、プログラムエラー、保持エラー、消去エラー、および読取りエラーとして分類することができる。一般に、すべてのタイプのエラーが、生のフラッシュセルがプログラムされたサイクル数に伴って増加する。本システムおよび本方法を使用して、すべてのタイプのエラーに起因するフラッシュメモリの信頼性を高め、寿命を延ばすことができる。いくつかのフラッシュコントローラ(またはフラッシュドライバ)は、ページを不良としてマークし、そのページをメモリの別のブロックに再マッピングすることができる、すなわち、フラッシュの容量は、各失われたページに伴って減少する。したがって、ページがどのようにして不良と判定されるのかと、ページがどのように他のページにマッピングされ得るのかとを変更することによって、利益を実現することができる。
図1は、フラッシュメモリ106の信頼性および寿命を改善するためのフラッシュコントローラ104を含む電子デバイス102を示すブロック図である。フラッシュコントローラ104は、フラッシュメモリ106とオペレーティングシステムまたは他のユーザアプリケーションとの間のインターフェースとして働くことができる。フラッシュコントローラ104は、フラッシュメモリ106内の物理セル(たとえば、ページ120)を管理することの複雑さを隠すことができる。オペレーティングシステムまたは他のユーザアプリケーションは、フラッシュメモリ106に記憶されるソース情報ビットをフラッシュコントローラ104に供給することができ、フラッシュコントローラ104は、ソース情報ビットをフラッシュメモリ106に記憶し、フラッシュメモリ106から取り出す。フラッシュコントローラ104が、ハードウェア(たとえば、回路)、ソフトウェア(たとえば、フラッシュドライバ)、またはハードウェアとソフトウェアとの組合せとして実施され得ることに留意されたい。また、図1に示された要素のうちの1つまたは複数を、いくつかの構成で回路(たとえば、集積回路)内で実施できることに留意されたい。
フラッシュメモリ106に書き込む前に、フラッシュコントローラ104は、符号語を作るために、順方向誤り訂正(FEC)符号122を用いてソース情報ビットを符号化することができる。永続メモリストレージ(フラッシュメモリ106など)は、ソース情報ビットを符号化するのにFEC符号122を利用することができる。FEC符号122は、データストレージエラーを制御するのに使用されるアルゴリズムである。ソース情報ビットを、誤り訂正符号(ECC)を使用して冗長な形で記憶することができる。FECに関連する冗長性は、フラッシュコントローラ104が、書込み/読取りプロセス中に発生する可能性があるエラーのうちの制限された個数を検出し、しばしば、オリジナルのソース情報ビットを参照せずにこれらのエラーを訂正することを可能にすることができる。
1つの構成では、フラッシュコントローラ104は、ソース情報ビットを符号語に変換することができる。たとえば、書込みプロセスは、ソース情報ビット(またはシンボル)を符号語に符号化し、符号化された符号語をフラッシュメモリ106に記憶することができる。読取りプロセスは、フラッシュメモリ106から符号語を取り出し、符号語をソース情報ビットに復号することができる。このプロセス中に、FEC符号122を使用して、エラーを検出し、いくつかの場合にエラーを訂正することができる。ソース情報ビットを符号化するのに使用できる、異なるタイプのFEC符号122がある。たとえば、FEC符号122を、リードソロモン(RS)符号とすることができる。
符号化動作は、誤り検出および訂正を可能にするために、ある冗長データ(たとえば、FECビット)を導入することができる。より良い誤り検出および訂正を可能にするが、より多くの誤り訂正用FECビットが記憶されることを必要とする、異なるパラメータが、所与のFEC符号122方式について選択され得る。たとえば、所与のFEC符号122について、異なるFECパラメータセット112を選択して、FEC符号122の誤り訂正能力を調整することができる。1つの構成では、線形FEC符号122のFECパラメータセット112は、情報ビットの個数(N)、誤り訂正ビットの個数(k)、および訂正できるビットエラーの個数(t)を含むことができる。別の構成では、FECパラメータセット112は、FEC符号122によって使用される誤り訂正ビットの個数(k)だけを含むことができる。もう1つの構成では、FECパラメータセット112は、FEC符号122のFECコーディングレートをさらに含むことができる。いくつかの構成では、FECパラメータセット112は、単一のFECコーディングパラメータを含むことができる。本明細書で使用される時に、FECコーディングパラメータという用語は、FECパラメータセット112と交換可能に使用され得る。
いくつかのフラッシュコントローラ104は、固定されたFECパラメータ(および書込み失敗が宣言される前に訂正できるビットエラーの対応する固定された個数)を有するFEC符号122を使用する場合がある。したがって、従来のフラッシュコントローラ104は、フラッシュメモリ106の耐用期間の間にFEC符号122について1つの特定のFECパラメータセット112を使用する。しかしながら、いくつかのFEC符号122方式は、FECパラメータセット112の簡単な調整を可能にすることができ、より多くの誤り訂正用FECビット(またはシンボル)が、エラーを起こしやすいページ120の信頼性を高めるために追加され得る。
フラッシュメモリ106の有用な寿命に対する制限する要因の1つが、フラッシュメモリ106に対して実行される書込み動作の回数である(たとえば、メモリウェア)。最終的に、フラッシュメモリ106の複数の部分が、壊れる可能性があり、信頼できる形でデータを記憶し、読み出すことができず、その点で、フラッシュメモリ106のこれらの部分は、もはや有用ではなくなる。フラッシュメモリ106は、物理ブロックまたはページ120によって編成され得る。フラッシュコントローラ104は、オペレーティングシステムまたはユーザアプリケーションなどの外部モジュールによってアドレッシング可能な論理ページにページ120をマッピングすることができる。書込み動作中に、フラッシュコントローラ104は、フラッシュメモリ106内の特定のページ120にFECコーディングされたデータ(たとえば、符号語)を書き込むことができ、その後に、書き込まれたデータが、正確さを検証するために読み取られる。読み出されたデータが、書き込まれたデータと一致しない場合には、FEC符号122を使用してすべてのエラーを訂正することを試みた後に、書込み失敗が宣言される。その点で、固定されたFECパラメータを使用するフラッシュコントローラ104は、ページ120全体を破壊されたものとしてマークし、フラッシュメモリ106を論理的に再マッピングすることができ、その結果、破壊されたページ120は、もはや使用されなくなる。
対照的に、本明細書で説明されるシステムおよび方法によるフラッシュコントローラ104は、グレースフルデグラデーションを使用することができる。ページ120全体を不良または破壊としてマークするのではなく、フラッシュコントローラ104は、現在のFECパラメータセット112より高い冗長性を提供する新しいFECパラメータセット112を選択することができる。したがって、フラッシュコントローラ104は、破壊されたページ120を不良としてマークし、破壊されたページ120への読取りおよび書込みを防ぐためにマッピングするのではなく、フラッシュメモリ106内の破壊されたページ120の一部を利用し続けることができる。しかしながら、新しいFECパラメータセット112に関連する高められた冗長性は、ページ120の減らされた記憶容量を犠牲にして成り立つ可能性がある。
1つの構成では、フラッシュコントローラ104は、書込み失敗に応答して新しいFECパラメータセット112を選択する、動的FECパラメータセレクタ110を含むことができる。たとえば、符号器108が、符号語を作るためにFEC符号122および現在のFECパラメータセット112を使用してソース情報ビットをコーディングした後に、フラッシュコントローラ104は、フラッシュメモリ106内のページ120にその符号語を書き込むことができる。復号器114は、フラッシュメモリ106から符号語を取り出し、データの正確さを検証することができる。1つの構成では、復号器114は、エラーチェッカ116を含むことができ、このエラーチェッカ116は、エラーを検出するために符号語をチェックする。ページ120が破壊され、エラーが検出される場合には、動的FECパラメータセレクタ110は、より高い誤り訂正能力を提供するために、現在のFECパラメータより高い冗長性を有する新しいFECパラメータセット112を選択することができる。これは、単一の書込み失敗が、ページ120全体の使用を除外しないので、フラッシュメモリ106全体の寿命を延ばすことができる。
上で説明した構成では、フラッシュコントローラ104は、1つのFEC符号122方式を使用することができるが、フラッシュコントローラ104は、異なるFECパラメータセット112を備えることができる。たとえば、RS符号を、ページ120長nを有するFEC符号122として使用することができる。
誤り訂正ビットの固定された個数(k)を使用するのではなく、各FECパラメータセット112は、より大きい値kを有することができる。FEC符号122のために使用可能な誤り訂正ビット数(k)を、集合K={k1, k2,…, kN}、ただしk1 < k2 <…< kNと表すことができる。より大きい値kは、より高い誤り訂正能力およびより少ない記憶容量を示す。したがって、フラッシュメモリ106ライフサイクルの始めに、すべてのページ120は、最大の容量および最低の誤り訂正能力を提供する、k1に関連するFECパラメータセット112から開始することができる。フラッシュコントローラ104が、ページ120への書込み失敗に出会う時に、フラッシュコントローラ104は、そのページ120のモードを異なるFECパラメータセット112(すなわち、k2以上に関連するFECパラメータセット112)に切り替えることができ、したがって、より高い信頼性を提供するが、減らされた記憶容量を提供することができる。この構成では、RS符号以外のFEC符号122を使用することもできることに留意されたい。
オペレーティングシステムが、読取り/書込み動作について同一のページサイズを期待する可能性があるので、フラッシュコントローラ104は、複数の物理的に劣化したページ120を、期待されるページサイズを有する単一の論理ページにマッピングすることができる。破壊されたページ120の容量が、新しいFECパラメータセット112に関連する高められた冗長性に起因して減らされる可能性があるので、破壊されたページ120の使用可能なデータバイトは、期待されるページサイズ未満になる場合がある。たとえば、オペレーティングシステムは、ページ120が4096バイトの使用可能データを有すると期待する可能性があるが、高められた冗長性のゆえに、破壊されたページ120の使用可能データバイトが、2048バイトにすぎない場合がある。1つの構成では、マッピングモジュール118が、複数の破壊されたページ120を、期待されるページ120サイズを有する単一の論理ページにマッピングすることができる。そのような論理ページは、より高いコーディングレベルを使用し、通常のページ120と同一のサイズを有する「良い」ブロックとしてオペレーティングシステムに提示され得る。たとえば、2048個の使用可能なデータバイトを有する2つの破壊されたページ120を、期待される4096個の使用可能なデータバイトを有する単一の論理ページにマッピングすることができる。そのような動作は、各ページ120の使用可能な記憶容量の不均一をオペレーティングシステムから隠すことができる。
図2は、フラッシュメモリ106を制御するための方法200を示す流れ図である。方法200は、フラッシュコントローラ104によって実行され得る。いくつかの構成では、図2に関連して説明されるフラッシュコントローラ104を、図1に関連して説明されたフラッシュコントローラ104に従って実施することができる。
1つの構成では、フラッシュコントローラ104は、記憶される符号語を作るために順方向誤り訂正(FEC)符号122を使用してソース情報ビットを符号化することによって、書込み動作を実行することができる。フラッシュコントローラ104は、現在のFECパラメータセット112に基づいてソース情報ビットを符号化することができる。フラッシュコントローラ104は、記憶される符号語をフラッシュメモリ106内の第1の破壊されたページ120に書き込むことができる。
フラッシュコントローラ104は、記憶されたデータの正確さを検証するために、記憶されたデータを読み戻すことができる。書込み失敗が発生する(たとえば、第1の破壊されたページ120が破壊され、書込みエラーが検出される)場合には、フラッシュコントローラ104は、現在のFECパラメータセット112より高い冗長性を提供する新しいFECパラメータセット112を選択する202ことができる。新しいFECパラメータセット112は、より高い誤り訂正能力を提供することができる。1つの構成では、新しいFECパラメータセット112は、複数のFECパラメータセット112の中から選択され得、各FECパラメータセット112は、異なる量の冗長性を提供する。新しいFECパラメータセット112は、現在のFECパラメータセット112より多数の、ページ120ごとに訂正され得るビットエラーの個数を提供することができる。したがって、フラッシュコントローラ104は、第1の破壊されたページ120に正確にデータを記憶するのに十分な冗長性を保証するが、第1の破壊されたページ120の使用可能な容量を減らす不必要な冗長性を導入しない、新しいFECパラメータセット112を選択することができる。
フラッシュコントローラ104は、フラッシュメモリ106内の第1の破壊されたページ120への書込み動作中に、新しいFECパラメータセット112を使用してソース情報ビットをコーディングする204ことができる。たとえば、フラッシュコントローラ104は、新しいFECパラメータセット112に基づいて符号語を作るために、FEC符号122および新しいFECパラメータセット112を使用してソース情報ビットを再符号化することができる。フラッシュコントローラ104は、フラッシュメモリ106内の第1の破壊されたページ120に符号語を書き込むことができる。
フラッシュコントローラ104は、第1の破壊されたページ120と少なくとも1つの追加の破壊されたページ120とを、期待されるページサイズを有する単一の論理ページにマッピングする206ことができる。オペレーティングシステム(または他のユーザアプリケーション)が、あるページサイズを期待する可能性があるので、第1の破壊されたページ120および少なくとも1つの追加の破壊されたページ120は、期待されるページサイズを有する単一の論理ページを形成するために組み合わされ(たとえば、マッピングされ)得る。したがって、フラッシュコントローラ104は、命令を(たとえば、オペレーティングシステムから)受け取ることができ、その単一の論理ページからデータを読み取り、その単一の論理ページにデータを書き込むことができる。
いくつかの構成では、第1の破壊されたページ120および1つまたは複数の追加の破壊されたページ120が、単一の論理ページを形成するために一緒にマッピングされる206場合に、フラッシュコントローラ104は、第1の破壊されたページ120および1つまたは複数の追加の破壊されたページ120に追加のグループ化情報を記憶することができる。グループ化情報は、第1の破壊されたページ120および1つまたは複数の追加の破壊されたページ120のメタデータ内に記憶され得る。たとえば、フラッシュコントローラ104は、各破壊されたページ120のために使用される新しいFECパラメータセット112を記憶することができる。新しいFECパラメータセット112が、破壊されたページ120ごとに別々に決定されるので、第1の破壊されたページ120のために使用される新しいFECパラメータセット112は、追加の破壊されたページ120のために使用される新しいFECパラメータセット112とは異なるものとされ得る。
フラッシュコントローラ104は、第1の破壊されたページ120および1つまたは複数の追加の破壊されたページ120にマッピングインジケータを記憶することもできる。マッピングインジケータは、第1の破壊されたページ120および1つまたは複数の追加の破壊されたページ120から単一の論理ページへのマッピングを示すことができる。
フラッシュコントローラ104は、第1の破壊されたページ120および1つまたは複数の追加の破壊されたページ120に順序情報をさらに記憶することができる。順序情報は、第1の破壊されたページ120および1つまたは複数の追加の破壊されたページ120内に記憶されたデータの配置を示すことができる。たとえば、フラッシュコントローラ104は、第1の破壊されたページ120に第1のデータセグメントを記憶することができ、1つまたは複数の追加の破壊されたページ120に追加のデータセグメントを記憶することができる。順序情報は、データの正しい再構成を容易にするために、フラッシュコントローラ104が単一の論理ページにデータを記憶する時のページ120の順序を示すことができる。
図3は、フラッシュメモリ106内の破壊されていないページ320aおよび破壊されたページ320b〜cを示すブロック図である。ページ320は、メモリの特定のブロックを指すことができる。いくつかの構成では、フラッシュメモリ106をNANDフラッシュメモリとすることができ、このNANDフラッシュメモリは、繰り返されたプログラミングの後に書込みエラーに出会う可能性がある。通常、各ページ320は、個別にプログラムされ(たとえば、書き込まれ)、ページ320のプログラミングは、選択されたビットを1から0にセットすることを伴う。プログラミング論理は、さらに、プログラミングが成功であったかどうかをチェックするために、プログラムされた結果を読み出すことができる。
生のページ320を、データエリアと予備エリアとに分割することができる。データエリアは、使用可能なデータバイトを含むことができる。予備エリアは、FECビットおよびメタデータを含むことができる。フラッシュメモリ106のユーザ(たとえば、オペレーティングシステム)は、あるデータエリアサイズを期待することができる。外部の観点から、各ページ320は、通常、2048バイトまたは4096バイトなど、通常は2のべきのバイトの固定されたサイズであるものとすることができる。予備エリアを使用して、FEC情報(たとえば、FECビット)および他のメタデータを記憶することができる。予備エリアは、数十バイトであるものとすることができる(たとえば、やはり通常はサイズにおいて2のべきの、64バイト、128バイト)。しかしながら、フラッシュメモリ106内の生のビットが、どのタイプのデータがフラッシュメモリ106内の所与のビットに記憶されているのかの間で区別しないので、使用可能なデータバイト、FECビット、およびメタデータの間の区別は、表面的なものである。
破壊されていないページ320aは、フラッシュメモリ106内の正常なページ320を表す。破壊されていないページ320aは、FECビット、使用可能なデータバイト、およびメタデータを含むことができる。FECビットは、フラッシュコントローラ304によって、順方向誤り訂正(FEC)に使用され得る。FECビットの量は、使用されるFECパラメータセット112に依存して変化する可能性がある。たとえば、k1は、破壊されていないページ320aについて、書込み失敗が宣言されており、より高い冗長性を提供するFECパラメータセット112が選択されている破壊されたページ320よりも小さいものとすることができる。
破壊されていないページ320a内の使用可能なデータバイトを使用して、データ(たとえば、ソース情報ビット)を記憶することができる。図示の構成では、期待されるサイズは4096バイトであるが、任意の適切な値を使用することができる。しかしながら、使用可能なデータバイトの個数は、変化する可能性がある。破壊されていないページ320a内の使用可能なデータバイト数は、オペレーティングシステムによって期待されるページサイズに対応するものとすることができる。
メタデータは、ソース情報ビットが破壊されていないページ320a内にどのように記憶されるのかに関する情報を含むことができる。メタデータは、ソース情報ビットを符号化するのに使用されたFEC符号122、特定のページ320のために選択されたFECパラメータセット112、およびページ320が破壊されたページ320と考えられるかどうかの表示を含むことができる。
第1の破壊されたページ320bおよび第2の破壊されたページ320cは、各々、破壊されたビットを含む。破壊されたビットは、書込みエラーをもたらす可能性がある。ページ320が書込みエラーに出会い始める時に、従来のフラッシュ管理は、これらのエラーを訂正するのにFECビットに頼ることができる、すなわち、ページ320内のバイトエラーの個数が、既存のFECが信頼できる形でエラーを訂正するのに使用され得ない範囲まで増加した後には、ページ320は、不良と考えられ、放棄されたものとしてマークされる。
しかしながら、ページ320を不良ページ320として破棄するのではなく、本システムおよび本方法のフラッシュコントローラ104は、従来のデータエリア(たとえば、使用可能なデータバイト)からの生のビットセルを使用して、より多くのFECビットを記憶し、ページ320内の使用可能なデータバイトの個数を減らすことができる。たとえば、現在のFECパラメータセット112より高い冗長性を提供する新しいFECパラメータセット112を選択することができる。新しいFECパラメータセット112が選択される時に、より高い冗長性がFECコーディング中に導入されるので、より少数の使用可能なデータバイトが使用可能になる可能性がある。この例では、破壊されたページ320b〜cの使用可能なデータバイトの個数は、2048バイトである。複数の破壊されたページ320の使用可能なデータバイト数が、同一であってもなくてもよいことに留意されたい。
第1の破壊されたページ320bおよび第2の破壊されたページ320cは、FECビット、使用可能なデータバイト、およびメタデータを含むことができる。破壊されていないページ320aと同様に、FECビットは、フラッシュコントローラ304によって、破壊されたページ320b〜cの順方向誤り訂正(FEC)に使用され得る。
しかしながら、各破壊されたページ320b〜cについて、より高い冗長性を提供するFECパラメータセット112が選択され得る。この場合に、FECビットの個数は、破壊されていないページ320aのために使用されるk1個のFECビットより多数であるk2個である。
破壊されたページ320b〜c内の使用可能なデータバイトは、破壊されていないページ320aより少ない可能性がある。これは、全体的な使用可能なデータバイトを減らす、破壊されたビットに起因する可能性がある。さらに、使用可能なデータバイトは、FECビットが増えるにつれて減る可能性がある。言い換えると、より多くのFECビットが、エラーを起こしやすい破壊されたページ320b〜cの信頼性を高めるためにより多くの冗長性を提供するのに使用されるので、使用可能なデータバイトは、減る。
破壊されたページ320b〜cを組み合わせて、期待されるページサイズを有する1つの論理ページ324を形成することができる。フラッシュコントローラ304は、複数の破壊されたページ320b〜cを1つの論理的な「良い」ページ324に組み合わせることができる。この形で、ユーザアプリケーションまたはオペレーティングシステムが、破壊されたページ320b〜cを利用できるものとすることができる。したがって、フラッシュコントローラ304は、ユーザアプリケーションから複雑さを隠し、インターフェース一貫性を維持する。図3は、各々が期待される使用可能なデータバイトの50%を有する2つの破壊されたページ320b〜cを組み合わせる構成を示すが、合計で期待される使用可能なデータバイトの100%になる任意の組合せを使用することができる。たとえば、期待される使用可能なデータバイトの10%を有する10個のページ320を、一緒にグループ化することができる。同様に、各々期待される使用可能なデータバイトの25%を有する4個のページ320を、グループ化することができるなどである。代替案では、使用可能なデータバイトのパーセンテージが、単一の論理ページ324に一緒にグループ化される破壊されたページ320ごとに同一でなくてもよい。たとえば、30%容量を有するページ320を、70%容量を有するページ320と組み合わせることができる。
論理ページ324が、破壊されていないページ320a内と同一のメタデータのうちのいくつかを有することができることに留意されたい。たとえば、論理ページ324のメタデータは、ページが最後に書き込まれた時を示すことができる。しかし、論理ページ324は、その論理ページ324を構成する複数の物理ページ320b〜cをポイントするためのメタデータを含むこともできる。インターフェースの観点から、オペレーティングシステムに提示されるメタデータは、論理ページ324が1つの物理ページ320からなるのか複数の物理ページ320からなるのかによって変化してはならない。しかしながら、追加のメタデータを使用して、フラッシュコントローラ304が物理ページマッピングのために論理ページ324を識別するのを助けることができる。
破壊されたページ320b〜cのためのメタデータは、ソース情報ビットが破壊されたページ320b〜c内にどのように記憶されているのかに関する情報を含むことができる。
メタデータは、ソース情報ビットを符号化するのに使用されたFEC符号122、特定のページ320のために選択されたFECパラメータセット112、およびページ320が破壊されたページ320b〜cと考えられるのかどうかの表示を含むことができる。
メタデータは、さらに、どのページ320b〜cが一緒にグループ化されるのか、グループ化されるページ320b〜cの順序、および論理ページ情報(たとえば、論理ページID)を含むことができるマッピング情報を含むことができる。
図4は、フラッシュメモリ406の信頼性および寿命を改善するためのフラッシュコントローラ404のより詳細な構成を示すブロック図である。図4に関連して説明されるフラッシュコントローラ404は、図1に関連して説明されたフラッシュコントローラ104に従って実施され得る。たとえば、フラッシュコントローラ404を、電子デバイス102内に含めることができる。
いくつかの構成では、フラッシュコントローラ404は、ソースバッファ426、符号器408、動的FECパラメータセレクタ410、復号器414、およびマッピングモジュール418を含むことができる。ソースバッファ426は、フラッシュメモリ406内に保存されるべきソース情報ビット428を受け取ることができる。ソース情報ビット428は、オペレーティングシステムまたはユーザアプリケーションから発するものとすることができる。符号器408は、FEC符号422を使用してソース情報ビットを符号化することができる。上で図1に関連して説明したように、FEC符号422を使用して、フラッシュメモリ406に関連するデータストレージエラーを検出し、訂正することができる。符号器408は、記憶される符号語430を作るために、FEC符号422を使用してソース情報ビット428を符号化することができる。
書込み動作中に、記憶される符号語430を、フラッシュメモリ406内のページ420に記憶する(たとえば、書き込む)ことができる。たとえば、書込み動作中に、FECビット432、使用可能データバイト434、およびメタデータ436を、ページ420に書き込むことができる。記憶される符号語430を、使用可能データバイト434に書き込むことができる。FECビット432は、FEC符号422によってソース情報ビット428に追加される冗長誤り訂正ビットとすることができる。メタデータ436は、ソース情報ビット428を符号化するのに使用されたFEC符号422、ページ420のために選択されたFECパラメータセット412、およびページ420が破壊されたページ420と考えられるかどうかの表示を含むことができる。
記憶される符号語430を書き込む際に、フラッシュコントローラ404は、記憶されたデータの正確さを検証するために、記憶されたデータを取り出し、読み取ることができる。たとえば、復号器414は、取り出された符号語438を復号することができる。エラーチェッカ416は、書込み失敗が発生した可能性があるかどうかを判定するために、FECチェックを実行することができる。エラーチェッカ416は、ページ誤り率442を入手するために、FEC符号422に基づいてFECビット432を比較することができる。たとえば、エラーチェッカ416は、書込み失敗を検出することができ、FEC符号422を使用してページ誤り率442を推定することができる。ページ誤り率442を、ビット誤り率とも称する場合があることに留意されたい。
1つの構成では、線形FEC符号422の特定のタイプが、入力ビット(たとえば、ソース情報ビット428)のある部分に基づいて各FECビット432を計算できる形で、たとえば、計算が、異なる位置の入力ビットのサブセットのXOR演算を用いることができる形で、FECビット432(パリティチェックビットとも称する)を作ることができる。読取り動作を実行する時に、新しいFECビット432を、入力データビットに基づいて再計算し、フラッシュデバイス上に記憶されたFECビット432と比較することができる。この形で、記憶されたFECビット432と新しいFECビット432とにおける相違の個数をカウントすることができ、この相違個数は、ビット誤り率(たとえば、ページ誤り率442)の範囲を示すことができる。
いくつかのシナリオでは、フラッシュメモリの所与のページ420が、複数のFEC符号語を含むことができる。各符号語は、それ自体のパリティチェックビット(たとえば、FECビット432)を有することができる。したがって、ビットエラーの総数は、ページ420内のFEC符号語からすべてのビットエラーを集計することによって推定され得る。FECコーディングパラメータ(たとえば、FECパラメータセット412)の適合は、現在のページ420がそれでも正しく復号され得るが、推定されたページ誤り率442が復号不能領域に近すぎると思われる時であっても、発生することができる。この場合に、フラッシュコントローラ404は、より強力なFECパラメータセット412を選択することによって、先を見越して冗長性を高めることができる。
もう1つの構成では、FECパラメータセット412適合は、読取り動作の後にも行われ得る。たとえば、フラッシュコントローラ404は、読取り動作を実行することができ、ここで、ページ420での推定されたビット誤り率(たとえば、ページ誤り率442)が、継続使用のために安全であるには高すぎると考えられる。この場合に、フラッシュコントローラ404は、現在のページ420のために別のFECパラメータセット412を選択することができる。フラッシュコントローラ404は、さらに、論理ページ324を形成するために1つまたは複数の劣化したフラッシュページ420を現在のページ420と組み合わせ、現在のページ420内のデータのある部分を、組み合わされた論理ページ324に再配置することができる。
ページ誤り率442が、最大誤り率しきい値440を超える場合には、ページ420は、信頼できる形でデータを記憶するためには破壊されすぎていると判定される。フラッシュコントローラ404は、破壊されたページ420を破壊されているものとしてマークし、破壊されたページ420がもはや使用されなくなるようにするために、フラッシュメモリ406を論理的に再マッピングすることができる。しかしながら、ページ誤り率442が、最大誤り率しきい値440未満である場合には、ページ420は、それでも、さらなる冗長性がFEC符号422に追加される場合に、信頼できる形で使用され得る。
動的FECパラメータセレクタ410は、ページ誤り率442に基づいてFECパラメータセット412を選択することができる。動的FECパラメータセレクタ410は、高まる冗長性をFEC符号422に提供することができる複数のFECパラメータセット412a〜nを含むことができる。たとえば、フラッシュメモリ406ライフサイクルの始めに、ページ420は、第1のFECパラメータセット412aから開始することができ、この第1のFECパラメータセット412aは、最大の容量と最低の誤り訂正能力とを提供する。次いで、ページ誤り率442に依存して、動的FECパラメータセレクタ410は、第1のFECパラメータセット412aより高い冗長性を提供する新しいFECパラメータセット412を選択することができる。動的FECパラメータセレクタ410は、ページ誤り率442に基づいて、信頼できるデータストレージを提供する新しいFECパラメータセット412を選択することができる。ソース情報ビット428は、新しいFECパラメータセット412を用いて符号化され得、記憶される符号語430は、フラッシュメモリ406の破壊されたページ420に記憶され得る。フラッシュコントローラ404は、ソース情報ビットを符号化するのに使用された新しいFECパラメータセット412をメタデータ436に記憶することもできる。
マッピングモジュール418は、複数の破壊されたページ420を単一の論理ページ324に組み合わせることができる。1つの構成では、オペレーティングシステムが、期待されるページサイズ444を要求することができる。しかしながら、破壊されたページ420の容量が、新しいFECパラメータセット412に関連する高められた冗長性に起因して減らされている可能性があるので、破壊されたページ420の使用可能データバイト434は、期待されるページサイズ444より少ない可能性がある。たとえば、期待されるページサイズ444が、4096バイトである可能性があるが、劣化およびFEC動作に起因して、破壊されたページ420の使用可能データバイト434が、2048バイトにすぎない場合がある。
マッピングモジュール418は、破壊されたページ420を、フラッシュメモリ406内の少なくとも1つの追加の破壊されたページ420とともに、期待されるページサイズ444を有する単一の論理ページ324にマッピングすることができる。1つの構成では、マッピングモジュール418は、部分的に劣化したページリスト446を含むことができ、部分的に劣化したページリスト446は、現在のFECパラメータセット412の誤り率のFECしきい値より高い推定された誤り率をエラーチェッカ416が検出する時に、破壊されたページ420に関連するエントリを投入され得る。部分的に劣化したページリスト446は、破壊されたページ420の使用可能データバイト434に関する情報を含むこともできる。マッピングモジュール418は、論理ページ情報テーブル448をも含むことができ、論理ページ情報テーブル448は、特定の論理ページ324にマッピングされている各破壊されたページ420の論理ページIDとアドレスとを含むことができる。
図5は、データをフラッシュメモリ406に書き込むための方法500を示す流れ図である。方法500は、フラッシュコントローラ404によって実行され得る。フラッシュコントローラ404は、現在のページ420への書込み動作を実行する502ことができる。たとえば、フラッシュコントローラ404は、記憶される符号語430を作るために、順方向誤り訂正(FEC)符号422を使用してソース情報ビット428を符号化することができる。フラッシュコントローラ404は、現在のFECパラメータセット412に基づいて、FECビット432を用いてソース情報ビット428を符号化することができる。フラッシュコントローラ404は、フラッシュメモリ406内の現在のページ420に符号化されたソース情報ビット428(たとえば、記憶される符号語430)を書き込むことができる。
フラッシュコントローラ404は、ページ誤り率442を入手する504ことができる。コンテンツ(たとえば、記憶される符号語430)を現在のページ420に書き込む際に、フラッシュコントローラ404は、コンテンツ(たとえば、取り出された符号語438)を読み戻すことによってページ誤り率442を入手する504ことができ、FEC符号422を使用して誤り率推定を実行することができる。1つの構成では、フラッシュコントローラ404は、ページ誤り率442を入手する504ために、記憶されたFECビット432とFEC符号422に基づいて新たに計算されたFECビット(使用可能データバイト434内に記憶されたデータビットから入手される)とを比較することができる。フラッシュコントローラ404は、ページ420の推定されたビット誤り率(たとえば、ページ誤り率442)を、FECパラメータセット412に関連する事前に決定されたFECしきい値のセットと比較する506ことができる。たとえば、推定されたページ誤り率442が1%未満である場合には、最低の冗長性を有する第1のFECコーディングパラメータ(たとえば、第1のFECパラメータセット412a)が使用され、推定されたページ誤り率442が1%を超えるが2%未満である場合には、第2のFECコーディングパラメータ(たとえば、第2のFECパラメータセット412b)が使用されるなどである。最後に、推定されたページ誤り率442が最大誤り率しきい値440を超える場合には、フラッシュコントローラ404は、現在のページ420を不良としてマークする508ことができ、現在のページ420は、もはや使用されなくなる。1つの構成では、最大誤り率しきい値440は、10%の推定されたビット誤り率とすることができる。しかしながら、ページ誤り率442が最大誤り率しきい値440未満である場合には、現在のページ420は、まだ使用され得る。
フラッシュコントローラ404が、ページ誤り率442が最大誤り率しきい値440未満であると判定する506場合には、フラッシュコントローラ404は、ページ誤り率442に基づいてFECパラメータセット412に関連するFECコーディングレートを選択する510ことができる。所与のページ誤り率442に対応するFECコーディングレートは、フラッシュコントローラ404が、より多くのエラーを有する場合であっても成功の復号をほぼ保証できるように設計される。1つの構成では、これは、符号化中により高い冗長性を追加する(たとえば、ソース情報ビット428により多くのFECビット432を追加する)ことによって達成され得る。フラッシュコントローラ404は、現在のページ420のメタデータ436にFEC情報を書き込む512ことができる。FEC情報は、使用されたFEC符号422と、選択されたFECパラメータセット412(FECコーディングレートを含む)とを含むことができる。
FECパラメータセット412(たとえば、FECコーディングパラメータ)が、推定されたページ誤り率442(たとえば、ページ420のビット誤り率)を使用して判定された後に、フラッシュコントローラ404は、ページ420内の使用可能データバイト434の量が期待されるページサイズ444未満であるかどうかを判定する514ことができる。ページ420内の使用可能データバイト434の量が期待されるページサイズ444以上である場合には、ページ420容量(たとえば、使用可能データバイト434)は、オペレーティングシステムの期待に従う。したがって、フラッシュコントローラ404は、他のページ420とのマッピングを行わずにページ420を使用する516ことができる。しかしながら、フラッシュコントローラ404が、ページ420内の使用可能データバイト434の個数が期待されるページサイズ444(FECビット432を含む)未満であると判定する514場合には、フラッシュコントローラ404は、ページ420を1つまたは複数の部分的に劣化したページ420とともにグループ化する(たとえば、マッピングする)ことができる。
フラッシュコントローラ404は、ページIDを部分的に劣化したページリスト446に記録する518ことができる。ページIDは、フラッシュメモリ406内の現在のページ420のアドレスまたは他の一意識別子とすることができる。部分的に劣化したページリスト446は、部分的に劣化したページリスト446内の各ページ420に関連する使用可能データバイト434の個数によってソートされ得る。
フラッシュコントローラ404は、別の部分的に劣化したページ420とともに現在のページ420をグループ化する520ことができる。1つの構成では、フラッシュコントローラ404は、現在のページ420とともにグループ化520すべき別の部分的に劣化したページ420を検索することができ、ここで、使用可能データバイト434の合計は、期待されるページサイズ444を最小量だけ超える。たとえば、フラッシュコントローラ404は、現在のページ420とともにグループ化520すべき別の部分的に劣化したページ420を、部分的に劣化したページリスト446から検索することができる。フラッシュコントローラ404が、使用可能データバイト434の合計が期待されるページサイズ444未満であると判定する522場合には、フラッシュコントローラ404は、グループ化されたページ420とともに少なくとも1つの他の部分的に劣化したページ420をグループ化する524ことができる。1つの構成では、フラッシュコントローラ404は、単一の追加の部分的に劣化したページ420をグループに追加することができる。もう1つの構成では、フラッシュコントローラ404は、部分的に劣化したページ420の対をグループに追加することができる。もう1つの構成では、フラッシュコントローラ404は、2のべき単位で部分的に劣化したページ420を追加することができる(たとえば、グループは、2個、4個、8個、16個などの部分的に劣化したページ420を含むことができる)。
グループ化されたページ420の使用可能データバイト434の合計が、期待されるページサイズ444以上である場合には、フラッシュコントローラ404は、グループ化情報を論理ページ情報テーブル448に記録する526ことができる。グループ化されたページ420を、単一の論理ページ324に組み合わせることができ、この単一の論理ページ324を、期待されるページサイズ444を有するブロックとしてオペレーティングシステムに提示することができる。したがって、論理ページ情報テーブル448内の各エントリは、別々の論理ページ324に関するものとすることができ、論理ページ324を形成するために一緒にマッピングされた物理ページ420の各々の論理ページIDとアドレスとを含むことができる。
フラッシュコントローラ404は、すべてのグループ化されたページ420のメタデータ436にグループ化情報を記録する528ことができる。フラッシュコントローラ404は、同一の論理ページ番号、グループ内の物理ページ420の順序を示すサブページ番号、グループ内の次のサブページのアドレス、および現在の物理ページ420内に記憶されたデータバイトの個数を、論理ページ324を形成するすべての物理ページ420に記録する528ことができる。このグループ化情報は、FEC情報と一緒に、ページ420の予備エリア(たとえば、メタデータ436)に書き込まれ得る。
図6は、論理ページ324からデータを読み取るための方法600を示す流れ図である。方法600は、フラッシュコントローラ404によって実行され得る。フラッシュコントローラ404は、論理ページ324に対する読取り動作を開始する602ことができる。読取り動作は、フラッシュコントローラ404が論理ページ324に記憶されたデータに関する要求を(たとえば、オペレーティングシステムから)受け取る時に、開始され得る。論理ページ324は、上で図5に関連して説明したように、論理ページ324を形成するために一緒にマッピングされた複数の部分的に劣化したページ420を含むことができる。
フラッシュコントローラ404は、論理ページIDに基づいて、論理ページ324を形成する物理ページ420をルックアップする604ことができる。たとえば、フラッシュコントローラ404は、各論理ページ324のエントリを含む論理ページ情報テーブル448を含むことができる。論理ページ情報テーブル448内のエントリは、論理ページ324を形成するために組み合わされた物理ページ420の各々の論理ページIDとアドレスとを含むことができる。論理ページ情報テーブル448内の論理ページIDをルックアップする604ことによって、フラッシュコントローラ404は、フラッシュメモリ406内のどの物理ページ420が論理ページ324を形成するのかを判定することができる。
フラッシュコントローラ404は、論理ページ324を形成する各物理ページ420のFEC情報およびメタデータ436を読み取る606ことができる。FEC情報は、ソース情報ビット428を符号化するのに使用されたFEC符号422および選択されるFECパラメータセット412(FECコーディングレートを含む)を含むことができる。本明細書で説明されるシステムおよび方法によれば、選択されるFECパラメータセット412が、何個のページ420が破壊されているのかに応じて変化し得ることに留意されたい。したがって、論理ページ324を形成する物理ページ420の各々は、同一のまたは異なるFECパラメータセット412を有する可能性がある。メタデータ436は、論理ページ番号、グループ内の物理ページ420の順序を示すサブページ番号、グループ内の次のサブページのアドレス、および現在の物理ページ420内に記憶されたデータバイトの個数などのグループ化情報を含むことができる。
フラッシュコントローラ404は、各物理ページ420に関連するFEC情報およびメタデータ436に基づいて各物理ページ420内のデータを復号する608ことができる。ページ420内に記憶されたFEC情報およびメタデータ436は、ページ420内に記憶されたデータをどのように復号608すべきかをフラッシュコントローラ404に示すことができる。たとえば、フラッシュコントローラ404は、FECパラメータセット412をFEC符号422に適用して、各物理ページ420内のデータを正しく復号する608ことができる。
フラッシュコントローラ404は、各物理ページ420から復号されたデータを組み合わせる610ことができる。1つの構成では、フラッシュコントローラ404は、メタデータ436内に含まれるグループ化情報に基づいて、復号されたデータを組み合わせる610ことができる。たとえば、グループ化情報は、グループ化されたページ420内に記憶されたデータの配置を示すことができる。したがって、グループ化情報は、フラッシュコントローラ404が、各物理ページ420から復号されたデータからソース情報ビット428を再構成することを可能にすることができる。復号されたデータを組み合わせる610際に、フラッシュコントローラ404は、組み合わされたデータを配送する612ことができる。フラッシュコントローラ404は、オペレーティングシステムまたは記憶されたデータに関する要求を行ったユーザアプリケーションに、組み合わされたデータを配送する612ことができる。
図7は、フラッシュメモリ106内の破壊されたページ720のもう1つの構成を示すブロック図である。破壊されたページ720は、FECビット732、使用可能データバイト734、メタデータ736、および破壊されたデータバイト750を含むことができる。FECビット732は、フラッシュコントローラ104によって、順方向誤り訂正(FEC)に使用され得る。FECビット732の量は、使用されるFECパラメータセット112に依存して変化し得る。
破壊されたページ720内の使用可能データバイト734は、データ(たとえば、ソース情報ビット428)を記憶するのに使用され得る。使用可能データバイト734の個数は、変化する可能性がある。たとえば、破壊されたデータバイト750およびFECビット732が、使用可能データバイト734の個数を減らす可能性がある。
メタデータ736は、データが破壊されたページ720内にどのように記憶されているのかに関する情報を含むことができる。上で説明したように、メタデータ736は、FEC情報752を含むことができ、このFEC情報752は、ソース情報ビット428を符号化するのに使用されたFEC符号122と、ページ720のために選択されたFECパラメータセット112とを示す。メタデータ736は、ページ720が破壊されたページ720と考えられるかどうかを示すことができる破壊されたページインジケータ754をも含むことができる。
メタデータ736は、さらに、ページ720の使用可能データバイト734および破壊されたデータバイト750の量を示す使用可能メモリインジケータ756を含むことができる。1つの構成では、使用可能メモリインジケータ756は、使用可能データバイト734および破壊されたデータバイト750の量を数として表すことができる。たとえば、使用可能データバイト734を、Xバイトとして表すことができ、破壊されたデータバイト750を、Yバイトとして表すことができる。もう1つの構成では、使用可能メモリインジケータ756は、使用可能データバイト734および破壊されたデータバイト750の量を、使用可能メモリのパーセンテージ(または比率)として表すことができる。たとえば、使用可能データバイト734を、破壊されたページ720の総容量によって除算して、使用可能メモリのパーセンテージを入手することができる。代替案では、破壊されたデータバイト750を、使用可能データバイト734によって除算して、破壊されたメモリと使用可能メモリとの比率を入手することができる。もう1つの構成では、使用可能メモリインジケータ756を、破壊されたページ720ではなくフラッシュコントローラ104内に記憶することができる。
使用可能メモリインジケータ756は、FECコーディングパラメータ(たとえば、FECパラメータセット412)とページ420内の使用可能データバイト434の総数と基づいて決定され得る。FECコーディングパラメータは、推定されたページ誤り率442に基づいて決定され得る。たとえば、フラッシュコントローラ404が、記憶されたデータの正確さを検証するために記憶されたデータを読み戻す時に、フラッシュコントローラ404は、FEC符号422に基づいてFECビット732を比較して、推定されたページ誤り率442を入手することができる。次いで、フラッシュコントローラ404は、推定されたページ誤り率442と、所与のコーディング誤り率(たとえば、ページ誤り率442)を特定のFECコーディングパラメータにマッピングする事前に決定されたFECしきい値のセットとに基づいて、FECコーディングパラメータを決定することができる。次いで、FECコーディングパラメータとページ420内で使用可能な総ビット数(データビット434とFECビット432との両方を含む)とに基づいて、フラッシュコントローラ404は、使用可能データバイト734の個数を判定することができる。
特定のビットを破壊されたまたは使用可能として区別する必要がないことに留意されたい。読取り/書込み動作がFECに基づくので、フラッシュコントローラ104は、推定されたビットエラーが選択されたFEC符号422によって訂正可能であるか否かを知ることだけを必要とする可能性がある。ビットエラーが訂正可能である場合には、復号の後の読取り結果が正しくなる。このプロセスでは、選択されたFEC符号422がそのページ内の既存のエラービットを訂正するだけではなく、将来により多くのエラービットを処理するようにするために、あるヘッドルームを割り当てることができる。
図8は、フラッシュメモリ106を制御するためのもう1つの方法800を示す流れ図である。方法800は、フラッシュコントローラ104によって実行され得る。いくつかの構成では、図8に関連して説明されるフラッシュコントローラ104は、図1に関連して説明されたフラッシュコントローラ104に従って実施され得る。たとえば、フラッシュコントローラ104は、FEC符号122および選択されたFECパラメータセット112を使用してソース情報ビット428を符号化することができる。
フラッシュコントローラ104は、フラッシュメモリ106内のページ120にデータを書き込む802ことができる。これは、図1に関連して説明したように行うことができる。
フラッシュコントローラ104は、使用可能データバイト434および破壊されたデータバイト750の量を示す使用可能メモリインジケータ756を判定する804ことができる。たとえば、フラッシュコントローラ104が、記憶されたデータの正確さを検証するために記憶されたデータを読み戻す時に、フラッシュコントローラ104は、ページ誤り率442を入手するために、FEC符号122に基づいてFECビット432を比較することができる。フラッシュコントローラ104は、ページ誤り率442に基づいて、使用可能データバイト434および破壊されたデータバイト750の量を判定することができる。これは、上で図7に関連して説明したように達成することができる。たとえば、フラッシュコントローラ104が、記憶されたデータの正確さを検証するために記憶されたデータを読み戻す時に、フラッシュコントローラ104は、推定されたページ誤り率442を入手するために、FEC符号122に基づいてFECビット432を比較することができる。次いで、フラッシュコントローラ104は、推定されたページ誤り率442と、所与のコーディング誤り率(たとえば、ページ誤り率442)を特定のFECコーディングパラメータにマッピングする事前に決定されたFECしきい値のセットとに基づいて、FECコーディングパラメータを決定することができる。次いで、FECコーディングパラメータとページ420内で使用可能な総ビット数(データビット434とFECビット432との両方を含む)に基づいて、フラッシュコントローラ404は、使用可能データバイト434の個数を判定することができる。
フラッシュコントローラ104は、使用可能メモリインジケータ756を記憶する806ことができる。1つの構成では、使用可能メモリインジケータ756は、上で図7に関連して説明したように、ページ720のメタデータ736内に記憶され得る。もう1つの構成では、使用可能メモリインジケータ756は、フラッシュコントローラ104内に配置されたリストまたはテーブル内に記憶され得る。たとえば、フラッシュコントローラ104は、フラッシュメモリ406内のページ120のリストを記憶することができる。フラッシュコントローラ104は、ページ120のリスト内の特定のページ120に関連する使用可能メモリインジケータ756を記憶することもできる。フラッシュコントローラ104が、後続の書込み動作を実行する場合に、フラッシュコントローラ104は、使用可能メモリインジケータ756をもう一度判定することができ、使用可能メモリインジケータ756の記憶された値を更新することができる。それに加えてまたはその代わりに、フラッシュコントローラ104が、ページ120からの後続の読取り動作を実行する場合に、フラッシュコントローラ104は、使用可能メモリインジケータ756をもう一度判定し、使用可能メモリインジケータ756の記憶された値を更新することができる。たとえば、後続の書込み動作または後続の読取り動作を実行する際に、フラッシュコントローラ104は、書込み動作または読取り動作に基づいて、ページ誤り率442を推定することができる。フラッシュコントローラ104は、ページ誤り率442に基づいて、使用可能メモリインジケータ756の記憶された値を更新することができる。
フラッシュコントローラ104は、使用可能メモリインジケータ756に基づいて、ページ120内に追加データを記憶すべきかどうかを判定する808ことができる。この形で、フラッシュコントローラ104は、追加データを記憶するのにページ120を使用すべきかどうかをすばやく判定する808ことができる。1つの構成では、書込み動作を実行する時に、フラッシュコントローラ104は、まず、ページ120が期待されるページサイズ444を有するかどうかを判定するために、使用可能メモリインジケータ756をルックアップすることができる。ページ120の使用可能データバイト434の個数が、期待されるページサイズ444未満である場合には、フラッシュコントローラ104は、上で説明したように、他の部分的に劣化したページとともにページ120をマッピングすることなくページ120を使用することがないものとすることができる。
もう1つの構成では、使用可能メモリインジケータ756は、ページ120の使用可能な容量(たとえば、使用可能データバイト434)が期待されるページサイズ444未満であることを示すことができるが、フラッシュコントローラ104は、使用可能な容量が追加データを記憶するのに十分である場合に、その追加データをページ120に記憶することができる。したがって、フラッシュコントローラ104は、破壊されたページ120がオペレーティングシステムに関する期待されるページサイズ444未満を有するにもかかわらず、データが使用可能メモリインジケータ756によって示される使用可能な容量未満である場合に、そのデータを破壊されたページ120に記憶することができる。これは、オペレーティングシステムとハードウェアコントローラとの間のソフトウェアインターフェースを使用することと、記憶されるファイルに関する情報をオペレーティングシステムからフラッシュコントローラ104に渡すこととを含むことができる。1つの構成では、渡される情報は、アプリケーションソフトウェアによって使用されるファイルの、オペレーティングシステムによって認識される実際のサイズとすることができる。
図9に、電子デバイス902内に含めることができる、ある種の構成要素を示す。電子デバイス902は、上で説明した電子デバイス102のうちの1つまたは複数に従って実施され得る。電子デバイス902は、プロセッサ909を含む。プロセッサ909は、汎用の単一チップまたはマルチチップのマイクロプロセッサ(たとえば、ARM)、特殊目的マイクロプロセッサ(たとえば、デジタル信号プロセッサ(DSP))、マイクロコントローラ、プログラマブルゲートアレイなどとすることができる。プロセッサ909は、中央処理装置(CPU)と称する場合がある。図9の電子デバイス902内には、単一のプロセッサ909が図示されているが、代替の構成では、プロセッサの組合せ(たとえば、ARMおよびDSP)を使用することができる。
電子デバイス902は、プロセッサ909と電子通信しているメモリ903をも含む(すなわち、プロセッサ909は、メモリ903から情報を読み取り、かつ/またはメモリ903に情報を書き込むことができる)。メモリ903は、電子情報を記憶することができる任意の電子構成要素とすることができる。メモリ903は、その組合せを含めて、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、磁気ディスク記憶媒体、光記憶媒体、RAM内のフラッシュメモリデバイス、プロセッサとともに含まれるオンボードメモリ、プログラム可能読取り専用メモリ(PROM)、消去可能プログラム可能読取り専用メモリ(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、その他とすることができる。
データ905aおよび命令907aを、メモリ903内に記憶することができる。命令907aは、1つまたは複数のプログラム、ルーチン、サブルーチン、機能、手続きなどを含み得る。命令907aは、単一のコンピュータ可読ステートメントまたは多数のコンピュータ可読ステートメントを含むことができる。命令907aは、上で説明した方法のうちの1つまたは複数を実施するためにプロセッサ909によって実行可能であり得る。命令907aを実行することは、メモリ903内に記憶されたデータ905aを使用することを必要とし得る。図9は、プロセッサ909にロードされたいくつかの命令907bおよびデータ905bを示す。
電子デバイス902は、電子デバイス902とリモート位置(たとえば、基地局または他の電子デバイス)との間の信号の送信および受信を可能にするために、送信器915および受信器917を含むこともできる。送信器915および受信器917を、集合的にトランシーバ913と称する場合がある。アンテナ911を、トランシーバ913に電気的に結合することができる。電子デバイス902は、(図示されていない)複数の送信器、複数の受信器、複数のトランシーバ、および/または複数のアンテナを含むこともできる。
電子デバイス902の様々な構成要素を、1つまたは複数のバスによって一緒に結合することができ、このバスは、電力バス、制御信号バス、状況信号バス、データバスなどを含むことができる。単純さのために、様々なバスは、図9ではバスシステム919として図示されている。
上記の説明では、時として参照番号が様々な用語に関連して使用されている。用語が参照番号に関して使用される時、これは、図面のうちの1つまたは複数で示す特定の要素を指すことを意味する場合がある。用語が参照番号なしで使用される時、これは任意の特定の図面に限定せずに、一般に、その用語を指すことを意味する場合がある。
「determining(決定すること/判定すること)」という用語は、様々な行為を包含し、したがって、「determining」は、計算すること、コンピューティング、処理すること、導出すること、調査すること、ルックアップすること(たとえば、テーブル、データベース、または別のデータ構造でのルックアップ)、確認すること、および類似物を含むことができる。また、「determining」は、受信すること(たとえば、情報の受信)、アクセスすること(たとえば、メモリ内のデータへのアクセス)、および類似物を含むことができる。また、「determining」は、解決すること、選択すること、選ぶこと、確立すること、および類似物を含むことができる。
「〜に基づく」という句は、そうではないと明示的に指定されない限り、「〜だけに基づく」を意味しない。言い換えると、「〜に基づく」という句は、「〜だけに基づく」と「少なくとも〜に基づく」との両方を記述するものである。
「結合する」という用語およびその活用形は、要素の間の直接または間接の接続を示すことができる。たとえば、第2の要素に結合された第1の要素は、第2の要素に直接に接続され、または別の要素を介して第2の要素に間接的に接続され得る。
「プロセッサ」という用語は、汎用プロセッサ、中央処理装置(CPU)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、コントローラ、マイクロコントローラ、状態機械などを包含するように、広く解釈されなければならない。いくつかの情況の下で、「プロセッサ」は、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)などを指すことができる。「プロセッサ」という用語は、たとえば、デジタル信号プロセッサ(DSP)とマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)コアと連動する1つまたは複数のマイクロプロセッサ、または他の任意のそのような構成など、処理デバイスの組合せを指すことができる。
「メモリ」という用語は、電子情報を記憶することができるすべての電子構成要素を包含するように広く解釈されなければならない。メモリという用語は、たとえばランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、不揮発性ランダムアクセスメモリ(NVRAM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能PROM(EEPROM)、フラッシュメモリ、磁気または光学のデータストレージ、レジスタなどの様々なタイプのプロセッサ可読媒体を指し得る。メモリは、プロセッサがそのメモリから情報を読み取り、かつ/またはそのメモリに情報を書き込むことができる場合に、プロセッサと電子通信していると言われる。プロセッサと一体のメモリは、そのプロセッサと電子通信している。
「命令」および「コード」という用語は、すべてのタイプのコンピュータ可読ステートメントを含むように広く解釈されなければならない。たとえば、「命令」および「コード」という用語は、1つまたは複数のプログラム、ルーチン、サブルーチン、関数、手続きなどを指すことができる。「命令」および「コード」は、単一のコンピュータ可読ステートメントまたは多数のコンピュータ可読ステートメントを含むことができる。
本明細書で説明した機能は、プロセッサ可読媒体上またはコンピュータ可読媒体上に1つもしくは複数の命令として記憶され得る。「コンピュータ可読媒体」という用語は、コンピュータまたはプロセッサによってアクセスされ得る任意の利用可能な媒体を指す。限定ではなく、例として、そのような媒体は、RAM、ROM、EEPROM、フラッシュメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージデバイスもしくは他の磁気ストレージデバイス、あるいは所望のプログラムコードを命令またはデータ構造の形で記憶するために使用可能であり、かつコンピュータによってアクセス可能な任意の他の媒体を含み得る。ディスク(disk)およびディスク(disc)は、本明細書で使用される時に、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピディスク(disk)、およびBlu-ray(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常はデータを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。コンピュータ可読媒体を、有形かつ非一時的とすることができることに留意されたい。「コンピュータプログラム製品」という用語は、コンピューティングデバイスまたはプロセッサによって実行され、処理され、または計算され得るコードまたは命令(たとえば、「プログラム」)と組み合わされたコンピューティングデバイスまたはプロセッサを指す。本明細書で使用される時に、「コード」という用語は、コンピューティングデバイスまたはプロセッサによって実行可能であるソフトウェア、命令、コード、またはデータを指すことができる。
ソフトウェアまたは命令を、伝送媒体を介して伝送することもできる。たとえば、ソフトウェアが、ウェブサイト、サーバ、または他のリモートソースから同軸ケーブル、光ファイバケーブル、より対線、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して伝送される場合に、同軸ケーブル、光ファイバケーブル、より対線、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、伝送媒体の定義に含まれる。
本明細書で開示される方法は、説明される方法を達成するための1つまたは複数のステップまたは行為を含む。方法ステップおよび/または行為を、特許請求の範囲の範囲から逸脱せずにお互いと交換することができる。言い換えると、ステップまたは行為の特定の順序が、説明されつつある方法の正しい動作のために必要である場合を除いて、特定のステップおよび/または行為の順序および/または使用を、特許請求の範囲の範囲から逸脱せずに変更することができる。
特許請求の範囲が、上で示された正確な構成および構成要素に限定されないことを理解されたい。特許請求の範囲の範囲から逸脱せずに、本明細書で説明されるシステム、方法、および装置の配置、動作、および詳細において、様々な修正、変更、および変形を作ることができる。
102 電子デバイス
104 フラッシュコントローラ
106 フラッシュメモリ
108 符号器
110 動的FECパラメータセレクタ
112 FECパラメータセット
114 復号器
116 エラーチェッカ
118 マッピングモジュール
120 ページ
122 順方向誤り訂正(FEC)符号
200 方法
304 フラッシュコントローラ
320 ページ
320a 破壊されていないページ
320b 破壊されたページ
320c 破壊されたページ
324 論理ページ
404 フラッシュコントローラ
406 フラッシュメモリ
408 符号器
410 動的FECパラメータセレクタ
412 FECパラメータセット
412a〜n FECパラメータセット
414 復号器
416 エラーチェッカ
418 マッピングモジュール
420 ページ
422 FEC符号
426 ソースバッファ
428 ソース情報ビット
430 記憶される符号語
432 FECビット
434 使用可能なデータバイト
436 メタデータ
438 取り出された符号語
440 最大誤り率しきい値
442 ページ誤り率
444 期待されるページサイズ
446 部分的に劣化したページリスト
448 論理ページ情報テーブル
500 方法
600 方法
720 破壊されたページ
732 FECビット
734 使用可能なデータバイト
736 メタデータ
750 破壊されたデータバイト
752 FEC情報
754 破壊されたページインジケータ
756 使用可能メモリインジケータ
800 方法
902 電子デバイス
903 メモリ
905a データ
905b データ
907a 命令
907b 命令
909 プロセッサ
911 アンテナ
913 トランシーバ
915 送信器
917 受信器
919 バスシステム

Claims (25)

  1. フラッシュメモリを制御するための方法であって、
    前記フラッシュメモリ内のページにデータを書き込むステップと、
    前記ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータを判定するステップと、
    前記使用可能メモリインジケータを記憶するステップと、
    前記使用可能メモリインジケータに基づいて、前記ページ内に追加データを記憶すべきかどうかを判定するステップと
    を含む方法。
  2. 記憶する前記ステップは、前記使用可能メモリインジケータを前記ページ内に記憶するステップを含む、請求項1に記載の方法。
  3. 記憶する前記ステップは、前記使用可能メモリインジケータをフラッシュコントローラ内に記憶するステップを含む、請求項1に記載の方法。
  4. 前記ページへの後続の書込み動作または前記ページからの後続の読取り動作を実行するステップと、
    前記ページへの前記後続の書込み動作または前記ページからの前記後続の読取り動作に基づいてページ誤り率を推定するステップと、
    前記ページ誤り率に基づいて前記使用可能メモリインジケータを更新するステップと
    をさらに含む、請求項1に記載の方法。
  5. 前記使用可能メモリインジケータは、オペレーティングシステムに関する期待されるページサイズ未満である前記ページの使用可能データバイトの量を示す、請求項1に記載の方法。
  6. フラッシュメモリを制御するための電子デバイスであって、
    プロセッサと、
    前記プロセッサと電子通信しているメモリと、
    前記フラッシュメモリ内のページにデータを書き込み、
    前記ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータを判定し、
    前記使用可能メモリインジケータを記憶し、
    前記使用可能メモリインジケータに基づいて、前記ページ内に追加データを記憶すべきかどうかを判定する
    ために前記プロセッサによって実行可能な、前記メモリ内に記憶された命令と
    を含む電子デバイス。
  7. 記憶するために前記プロセッサによって実行可能な前記命令は、前記使用可能メモリインジケータを前記ページ内に記憶するために実行可能な命令を含む、請求項6に記載の電子デバイス。
  8. 記憶するために前記プロセッサによって実行可能な前記命令は、前記使用可能メモリインジケータをフラッシュコントローラ内に記憶するために実行可能な命令を含む、請求項6に記載の電子デバイス。
  9. 前記ページへの後続の書込み動作または前記ページからの後続の読取り動作を実行し、
    前記ページへの前記後続の書込み動作または前記ページからの前記後続の読取り動作に基づいてページ誤り率を推定し、
    前記ページ誤り率に基づいて前記使用可能メモリインジケータを更新する
    ために実行可能な命令をさらに含む、請求項6に記載の電子デバイス。
  10. 前記使用可能メモリインジケータは、オペレーティングシステムに関する期待されるページサイズ未満である前記ページの使用可能データバイトの量を示す、請求項6に記載の電子デバイス。
  11. フラッシュメモリを制御するためのコンピュータプログラムであって、
    電子デバイスに、前記フラッシュメモリ内のページにデータを書き込ませるためのコードと、
    前記電子デバイスに、前記ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータを判定させるためのコードと、
    前記電子デバイスに、前記使用可能メモリインジケータを記憶させるためのコードと、
    前記電子デバイスに、前記使用可能メモリインジケータに基づいて、前記ページ内に追加データを記憶すべきかどうかを判定させるためのコードと
    を含む命令を含むコンピュータプログラム。
  12. 前記電子デバイスに記憶させるための前記コードは、前記電子デバイスに、前記使用可能メモリインジケータを前記ページ内に記憶させるためのコードを含む、請求項11に記載のコンピュータプログラム。
  13. 前記電子デバイスに記憶させるための前記コードは、前記電子デバイスに、前記使用可能メモリインジケータをフラッシュコントローラ内に記憶させるためのコードを含む、請求項11に記載のコンピュータプログラム。
  14. 前記電子デバイスに、前記ページへの後続の書込み動作または前記ページからの後続の読取り動作を実行させるためのコードと、
    前記電子デバイスに、前記ページへの前記後続の書込み動作または前記ページからの前記後続の読取り動作に基づいてページ誤り率を推定させるためのコードと、
    前記電子デバイスに、前記ページ誤り率に基づいて前記使用可能メモリインジケータを更新させるためのコードと
    をさらに含む、請求項11に記載のコンピュータプログラム。
  15. 前記使用可能メモリインジケータは、オペレーティングシステムに関する期待されるページサイズ未満である前記ページの使用可能データバイトの量を示す、請求項11に記載のコンピュータプログラム。
  16. フラッシュメモリを制御するための電子デバイスであって、
    前記フラッシュメモリ内のページにデータを書き込み、前記ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータを判定し、前記使用可能メモリインジケータを記憶し、前記使用可能メモリインジケータに基づいて、前記ページ内に追加データを記憶すべきかどうかを判定するように構成された回路
    を含む電子デバイス。
  17. 前記記憶することは、前記使用可能メモリインジケータを前記ページ内に記憶するように構成された回路を含む、請求項16に記載の電子デバイス。
  18. 前記記憶することは、前記使用可能メモリインジケータをフラッシュコントローラ内に記憶するように構成された回路を含む、請求項16に記載の電子デバイス。
  19. 前記ページへの後続の書込み動作または前記ページからの後続の読取り動作を実行し、前記ページへの前記後続の書込み動作または前記ページからの前記後続の読取り動作に基づいてページ誤り率を推定し、前記ページ誤り率に基づいて前記使用可能メモリインジケータを更新するように構成された回路
    をさらに含む、請求項16に記載の電子デバイス。
  20. 前記使用可能メモリインジケータは、オペレーティングシステムに関する期待されるページサイズ未満である前記ページの使用可能データバイトの量を示す、請求項16に記載の電子デバイス。
  21. フラッシュメモリを制御するための装置であって、
    前記フラッシュメモリ内のページにデータを書き込むための手段と、
    前記ページの使用可能データバイトおよび破壊されたデータバイトの量を示す使用可能メモリインジケータを判定するための手段と、
    前記使用可能メモリインジケータを記憶するための手段と、
    前記使用可能メモリインジケータに基づいて、前記ページ内に追加データを記憶すべきかどうかを判定するための手段と
    を含む装置。
  22. 前記記憶するための手段は、前記使用可能メモリインジケータを前記ページ内に記憶するための手段を含む、請求項21に記載の装置。
  23. 前記記憶するための手段は、前記使用可能メモリインジケータをフラッシュコントローラ内に記憶するための手段を含む、請求項21に記載の装置。
  24. 前記ページへの後続の書込み動作または前記ページからの後続の読取り動作を実行するための手段と、
    前記ページへの前記後続の書込み動作または前記ページからの前記後続の読取り動作に基づいてページ誤り率を推定するための手段と、
    前記ページ誤り率に基づいて前記使用可能メモリインジケータを更新するための手段と
    をさらに含む、請求項21に記載の装置。
  25. 前記使用可能メモリインジケータは、オペレーティングシステムに関する期待されるページサイズ未満である前記ページの使用可能データバイトの量を示す、請求項21に記載の装置。
JP2016138292A 2013-04-12 2016-07-13 フラッシュメモリの信頼性および寿命を改善するシステムおよび方法 Active JP6257708B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/861,691 US9235468B2 (en) 2013-04-12 2013-04-12 Systems and methods to improve the reliability and lifespan of flash memory
US13/861,691 2013-04-12

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016507632A Division JP5976979B2 (ja) 2013-04-12 2014-04-09 フラッシュメモリの信頼性および寿命を改善するシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2016194952A true JP2016194952A (ja) 2016-11-17
JP6257708B2 JP6257708B2 (ja) 2018-01-10

Family

ID=50729839

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016507632A Active JP5976979B2 (ja) 2013-04-12 2014-04-09 フラッシュメモリの信頼性および寿命を改善するシステムおよび方法
JP2016138292A Active JP6257708B2 (ja) 2013-04-12 2016-07-13 フラッシュメモリの信頼性および寿命を改善するシステムおよび方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016507632A Active JP5976979B2 (ja) 2013-04-12 2014-04-09 フラッシュメモリの信頼性および寿命を改善するシステムおよび方法

Country Status (5)

Country Link
US (2) US9235468B2 (ja)
EP (2) EP3121719B1 (ja)
JP (2) JP5976979B2 (ja)
CN (2) CN107451009B (ja)
WO (1) WO2014169028A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9235468B2 (en) 2013-04-12 2016-01-12 Qualcomm Incorporated Systems and methods to improve the reliability and lifespan of flash memory
GB2514354A (en) * 2013-05-20 2014-11-26 Ibm Managing storage devices having a lifetime of a finite number of operations
TWI544492B (zh) * 2013-12-31 2016-08-01 慧榮科技股份有限公司 電子裝置及其資料維護方法
US10078540B2 (en) * 2014-06-13 2018-09-18 Cisco Technology, Inc. Accurate and fast in-service estimation of input bit error ratio of low density parity check decoders
US9959059B2 (en) * 2014-10-20 2018-05-01 Sandisk Technologies Llc Storage error management
JP6819319B2 (ja) * 2017-01-27 2021-01-27 日本電気株式会社 情報処理システムおよび情報処理システムの制御方法
CN107423160B (zh) * 2017-07-24 2020-04-17 山东华芯半导体有限公司 一种提高NAND flash读速度的方法及装置
CN109508148B (zh) * 2018-11-09 2021-08-10 浪潮电子信息产业股份有限公司 一种元数据重建方法、装置和计算机可读存储介质
CN109783411B (zh) * 2018-12-20 2022-05-17 成都旋极历通信息技术有限公司 一种基于fpga的flash阵列控制方法及控制器
TWI731775B (zh) * 2020-08-24 2021-06-21 點序科技股份有限公司 快閃記憶體的記憶體控制器及其控制方法
JP2022049552A (ja) * 2020-09-16 2022-03-29 キオクシア株式会社 半導体装置および方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003131954A (ja) * 2001-08-16 2003-05-09 Hewlett Packard Co <Hp> 動的可変長誤り訂正符号
JP2007286813A (ja) * 2006-04-14 2007-11-01 Sony Corp メモリ制御装置、メモリ制御方法
JP2008033801A (ja) * 2006-07-31 2008-02-14 Victor Co Of Japan Ltd メモリデータ管理装置
US20090132889A1 (en) * 2007-11-21 2009-05-21 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
JP2010518523A (ja) * 2007-03-08 2010-05-27 インテル・コーポレーション 動的ecc符号化率調節方法、装置、およびシステム
US20110060967A1 (en) * 2009-09-08 2011-03-10 Lsi Corporation Systems and Methods for Re-Designating Memory Regions as Error Code Corrected Memory Regions
JP2011514595A (ja) * 2008-02-29 2011-05-06 サムスン エレクトロニクス カンパニー リミテッド メモリセルに格納されるデータのビット数を決定する装置
JP2012014415A (ja) * 2010-06-30 2012-01-19 Toshiba Corp 情報処理装置、raidコントローラカード、およびミラーリング方法
JP2012084127A (ja) * 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US20120151260A1 (en) * 2010-12-08 2012-06-14 Arnaldo Zimmermann System and Method for Autonomous NAND Refresh
US20120284587A1 (en) * 2008-06-18 2012-11-08 Super Talent Electronics, Inc. Super-Endurance Solid-State Drive with Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
HRPK20010687B3 (en) * 2001-09-19 2005-10-31 Leskovec Krešo System and apparatus for safety of the crew and passangers on the public conveyance
US7007195B2 (en) * 2002-03-27 2006-02-28 Intel Corporation BIOS shadowed small-print hard disk drive as robust, always on, backup for hard disk image & software failure
ATE504446T1 (de) * 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
CN101095115A (zh) * 2004-11-05 2007-12-26 数据机器人技术公司 存储系统条件指示器和方法
US7739576B2 (en) 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
US7669092B2 (en) 2007-02-26 2010-02-23 Micron Technology, Inc. Apparatus, method, and system of NAND defect management
US8213229B2 (en) 2008-08-22 2012-07-03 HGST Netherlands, B.V. Error control in a flash memory device
US8296620B2 (en) 2008-08-26 2012-10-23 Seagate Technology Llc Data devices including multiple error correction codes and methods of utilizing
US7996736B2 (en) 2008-10-26 2011-08-09 Sandisk 3D Llc Bad page marking strategy for fast readout in memory
US8566510B2 (en) 2009-05-12 2013-10-22 Densbits Technologies Ltd. Systems and method for flash memory management
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
US7941696B2 (en) * 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
CN101872326B (zh) * 2010-06-24 2012-04-04 济南大学 一种嵌入式环境下otp闪存的数据存储管理方法
US20120254686A1 (en) * 2010-10-01 2012-10-04 SIGLEAD Inc. Non-volatile semiconductor memory devices and error correction methods
US8572466B2 (en) 2011-06-06 2013-10-29 Micron Technology, Inc. Apparatuses, systems, devices, and methods of replacing at least partially non-functional portions of memory
JP5764392B2 (ja) * 2011-06-13 2015-08-19 株式会社メガチップス メモリコントローラ
US9329948B2 (en) * 2012-09-15 2016-05-03 Seagate Technology Llc Measuring cell damage for wear leveling in a non-volatile memory
US9235468B2 (en) 2013-04-12 2016-01-12 Qualcomm Incorporated Systems and methods to improve the reliability and lifespan of flash memory

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003131954A (ja) * 2001-08-16 2003-05-09 Hewlett Packard Co <Hp> 動的可変長誤り訂正符号
JP2007286813A (ja) * 2006-04-14 2007-11-01 Sony Corp メモリ制御装置、メモリ制御方法
JP2008033801A (ja) * 2006-07-31 2008-02-14 Victor Co Of Japan Ltd メモリデータ管理装置
JP2010518523A (ja) * 2007-03-08 2010-05-27 インテル・コーポレーション 動的ecc符号化率調節方法、装置、およびシステム
US20090132889A1 (en) * 2007-11-21 2009-05-21 Micron Technology, Inc. Memory controller supporting rate-compatible punctured codes
JP2011504271A (ja) * 2007-11-21 2011-02-03 マイクロン テクノロジー, インク. レートコンパチブルパンクチャドコードをサポートするメモリコントローラ
JP2011514595A (ja) * 2008-02-29 2011-05-06 サムスン エレクトロニクス カンパニー リミテッド メモリセルに格納されるデータのビット数を決定する装置
US20120284587A1 (en) * 2008-06-18 2012-11-08 Super Talent Electronics, Inc. Super-Endurance Solid-State Drive with Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear
US20110060967A1 (en) * 2009-09-08 2011-03-10 Lsi Corporation Systems and Methods for Re-Designating Memory Regions as Error Code Corrected Memory Regions
JP2012014415A (ja) * 2010-06-30 2012-01-19 Toshiba Corp 情報処理装置、raidコントローラカード、およびミラーリング方法
JP2012084127A (ja) * 2010-09-15 2012-04-26 Toshiba Corp 半導体装置
US20120151260A1 (en) * 2010-12-08 2012-06-14 Arnaldo Zimmermann System and Method for Autonomous NAND Refresh

Also Published As

Publication number Publication date
CN105103131B (zh) 2018-03-30
EP2984569A2 (en) 2016-02-17
US9778861B2 (en) 2017-10-03
WO2014169028A2 (en) 2014-10-16
US9235468B2 (en) 2016-01-12
US20160034207A1 (en) 2016-02-04
CN107451009B (zh) 2020-09-29
WO2014169028A3 (en) 2015-03-19
JP6257708B2 (ja) 2018-01-10
EP3121719A1 (en) 2017-01-25
JP5976979B2 (ja) 2016-08-24
US20140310573A1 (en) 2014-10-16
EP2984569B1 (en) 2017-03-01
CN105103131A (zh) 2015-11-25
CN107451009A (zh) 2017-12-08
EP3121719B1 (en) 2018-01-31
JP2016514883A (ja) 2016-05-23

Similar Documents

Publication Publication Date Title
JP6257708B2 (ja) フラッシュメモリの信頼性および寿命を改善するシステムおよび方法
TWI381273B (zh) 用於儲存數據至記憶體單元和從記憶體單元擷取數據的自適應系統及其方法
US8429468B2 (en) System and method to correct data errors using a stored count of bit values
US11550663B2 (en) Changing of error correction codes based on the wear of a memory sub-system
US9032278B2 (en) Method for performing data shaping, and associated memory device and controller thereof
US20150149856A1 (en) Decoding with log likelihood ratios stored in a controller
US11709733B2 (en) Metadata-assisted encoding and decoding for a memory sub-system
US11281533B2 (en) Hybrid iterative error correcting and redundancy decoding operations for memory sub-systems
EP3743814A1 (en) Storing critical data at a memory system
US11632137B2 (en) Early decoding termination for a memory sub-system
US11923868B1 (en) Stall mitigation in iterative decoders
US11748008B2 (en) Changing of memory components to be used for a stripe based on an endurance condition

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170529

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171205

R150 Certificate of patent or registration of utility model

Ref document number: 6257708

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