JP2013522792A - メタデータタグを介した不規則なパリティ分布の検出 - Google Patents

メタデータタグを介した不規則なパリティ分布の検出 Download PDF

Info

Publication number
JP2013522792A
JP2013522792A JP2013501263A JP2013501263A JP2013522792A JP 2013522792 A JP2013522792 A JP 2013522792A JP 2013501263 A JP2013501263 A JP 2013501263A JP 2013501263 A JP2013501263 A JP 2013501263A JP 2013522792 A JP2013522792 A JP 2013522792A
Authority
JP
Japan
Prior art keywords
page
parity
pages
nvm
codeword
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
JP2013501263A
Other languages
English (en)
Other versions
JP5675954B2 (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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Publication of JP2013522792A publication Critical patent/JP2013522792A/ja
Application granted granted Critical
Publication of JP5675954B2 publication Critical patent/JP5675954B2/ja
Expired - Fee Related 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本発明は、フラッシュメモリなどの不揮発性メモリ(「NVM」)の不規則なパリティ分布、及びメタデータタグを介した不規則なパリティの検出に関することができる。例えば、NVMの各コードワードが、NVM内にランダムに分布できる1又はそれ以上のパリティページを含むことができる。ページをパリティページとして識別するために、このページのメタデータにパリティページマーカーを含めることができる。NVMの起動中、ページの論理−物理アドレスマッピングを含むアドレステーブルを作成することができる。しかしながら、パリティページマーカーを含むページについては、このアドレステーブルの作成中にスキップすることができる。また、コードワードに関連する2又はそれ以上のパリティページを有することにより、このコードワード内のエラーを修復するための追加の保護層を提供することもできる。
【選択図】 なし

Description

本発明は、フラッシュメモリなどの不揮発性メモリの不規則なパリティ分布、及びこの不規則なパリティをメタデータタグを介して検出することに関することができる。
一般に、大容量記憶には、NANDフラッシュメモリ及びその他の種類の不揮発性メモリ(「NVM」)が使用される。例えば、ポータブルメディアプレーヤ又は携帯電話機などの消費者向け電子機器は、音楽、ビデオ、及びその他の媒体を記憶するために未処理のフラッシュメモリ又はフラッシュカードを有していることが多い。
NANDフラッシュメモリなどの不揮発性メモリには、メモリ位置に初期不良が含まれるものもあり、又は使用を通じて不良が出現することもある。また、使用可能なメモリ位置に記憶されているデータに、読み込み妨害又は電荷保持の問題などのその他のエラー誘発現象が発生することもある。従って、これらのメモリ位置に記憶されたデータを正確に検索できることを保証するために、「パリティデータ」を算出してデータとともに記憶することができる。例えば、これらのデータにエラー訂正符号を適用して、このようなパリティデータを生成することができる。
さらに、今日の消費者向け電子機器は、装置の動作を制御して(読み取り、書き込み、又は消去コマンドなどの)NVMへのアクセス要求を実行する埋め込みシステムを含むことが多い。電子装置に最初に電力が印加されると、この電子装置は、NVMを走査してNVMの(例えば、NVMの各ページの)コンテンツを特定することができる。例えば、この走査中、電子装置は、各ページに関連する論理アドレスを識別することができる。
米国特許出願第12/562,860号明細書 米国特許出願第__________号明細書 米国特許出願第12/509,071号明細書
(NANDフラッシュメモリのような)フラッシュメモリなどの不揮発性メモリ(「NVM」)内の不規則なパリティ分布のためのシステム及び方法を開示する。さらに、本明細書では、メタデータタグを介してこのような不規則なパリティ分布を検出するためのシステム及び方法を開示する。
いくつかの実施形態では、システムオンチップ及びNVMを含むことができる電子装置を提供することができる。NVMは、NANDフラッシュメモリなどのフラッシュメモリ、又は他のいずれかの好適な種類の不揮発性メモリを含むことができる。システムオンチップは、NVMにアクセスするためのNVMインターフェイスを含むことができる。いくつかの実施形態では、NVMインターフェイスが、NVMにユーザデータを記憶するためのファイルシステムからの書き込み要求、NVMに記憶されたデータを検索する(例えば、読み取る、又は別様にアクセスする)ための検索要求、或いはこれらの両方を受け取ることができる。
いくつかの実施形態では、全体として「コードワード」を構成するNVMの(物理アドレスなどの)2又はそれ以上の連続するページにデータを記憶することができる。コードワードの各ページは、そのページのエラーを訂正するための(「内部ECC」などの)ECCデータを含むことができる。さらに、コードワードには、1又はそれ以上の「パリティページ」を含めることができ、各パリティページは、全体としてのコードワードに関連する(「外部ECC」などの)ECCデータを提供することができる。各パリティページは、コードワードのエラーを訂正するための追加の保護層を提供することができる。例えば、コードワードが「m」個のパリティページを含む場合には、たとえコードワードが最大「m」個の訂正不能ページを含む場合でも、このコードワード内のエラーを好適に訂正することができる(例えば、この場合、「訂正不能ページ」は、このページのエラーを訂正するのに不十分な可能性のある内部ECCデータを含むページを意味することができる)。
いくつかの実施形態では、パリティページが、NVMにわたって不規則に分布することができる。一例として、パリティページの「規則的な分布」は、常にNVMのスーパーブロックの同じチップ番号に位置するパリティページを含むことができる。対象的に、パリティページの分布が不規則なNVMは、必ずしも同じチップ番号に位置するとは限らず、むしろNVMのあらゆる好適な位置に存在できるパリティページを含むことができる。同様に、コードワードは、(スーパーブロックの同じチップ番号などの)同じ位置で開始及び終了することに限定されず、開始位置及び終了位置が不規則に分布すること、及び長さが不規則に分布することを含むことができる。
このように、パリティページの不規則な分布は、あるデータをより強力に保護する役に立つことができる。一例として、重要度の高い情報を保護するためにより多くのパリティページを使用することができ、重要度の低い情報を保護するためにより少ないパリティページを使用することができる。別の例として、いくつかの実施形態では、エラーを起こしやすいページを保護するためにより多くのパリティページを使用することができ、エラーを起こしにくいページを保護するためにより少ないパリティページを使用することができる。
NVMメモリのパリティページは、不規則に分布することができるので、NVMのどのページ(例えば、物理アドレス)がパリティページであるかを直ちに認識できないこともある。どのページがパリティページであるかを判断するために、例えば、各ページのメタデータ情報に「パリティページマーカー」を含めることができる。NVMインターフェイス、又は電子装置の他の好適な構成要素がこのメタデータタグを読み取って、特定のページがパリティページであるか否かを判定することができる。
いくつかの実施形態では、電子装置の起動中に、NVMのページの論理−物理アドレスをマッピングするテーブルを生成することができる。このテーブルは、例えば、起動時にページ全体を走査してこれらの論理アドレスを読み取り、次にこれらの論理アドレス及び読み取ったページの関連する物理アドレスを論理−物理アドレステーブルに記憶することによって生成することができる。しかしながら、このようなテーブルに外部ECCデータを含めることが必要な場合もあるので、この走査中に各ページのパリティページマーカーを読み取ることができる。このパリティページマーカーが、ページがパリティページであることを示す場合には、このページをスキップして、このページの情報を論理−物理アドレステーブルに含めないようにすることができる。
いくつかの実施形態では、パリティページの不規則な分布が、NVMからのデータの検索に影響することがある。例えば、NVMからコードワードを検索している間に、訂正不能ページに遭遇することがある。しかしながら、パリティページの不規則な分布により、そのコードワードにどれほどのパリティページが関連しているかを直ちに認識できず、従って訂正不能ページを修復できるかどうかを直ちに認識できないことがある。従って、いくつかの実施形態では、コードワードが検索されている間に、このコードワードのデータをバッファすることができる。コードワードの最後に到達すると、NVMインターフェイス(又はその他の好適な構成要素など)は、そのコードワードにどれほどのパリティページが含まれているか、従って(もしあれば)このコードワードの訂正不能ページを修復できるか否かを判断することができる。訂正不能ページを修復できる場合、バッファしたデータ及びパリティページを使用して、この訂正不能ページを修復することができる。
いくつかの実施形態では、NVMインターフェイスが、コードワード内の最初の訂正不能ページに遭遇した時にのみ、コードワードのバッファを開始する。このシナリオでは、訂正不能ページに遭遇した場合、NVMインターフェイスが、コードワードを「左向きに走査」して、コードワードの全ての前のページ及び現在のページをバッファすることができる。次に、NVMインターフェイスは、コードワードの残り部分を検索する時に、コードワードの検索及びコードワードの残りのバッファを継続することができる。コードワードの最後に到達した時点でパリティページの数を特定することができ、好適な数のパリティページが存在する場合には、訂正不能ページを修復することができる。
いくつかの実施形態では、データをバッファするのではなく、訂正不能なコードワードの修復に必要な計算を「オンザフライ」で行うことができる。例えば、NVMインターフェイスは、検索中のコードワードに関連するパリティページが2つ(又は他のいずれかの好適な数)存在すると「推定」することができる。NVMインターフェイスは、コードワードの検索中に、検索したページのデータを使用して2つの計算を更新し、各計算を、推定されるパリティページの異なる方に関連付けることができる。コードワードの最後に到達した時点で、実際のパリティページの数及び訂正不能ページの数を特定することができる。(訂正不能ページがたった1つ又はそれ以下の場合、又は実際のパリティページが1つのみの場合などの)第2の計算が必要でない場合、第2の計算を廃棄することができる。(実際のパリティページが2つ存在する場合、訂正不能ページが2つ存在する場合などの)両方の計算が必要な場合、2つの計算を使用して訂正不能ページを修復することができる。
全体を通じて同じ参照記号が同じ部分を示す添付図面とともに以下の詳細な説明を検討すれば、本発明の上記の及びその他の態様及び利点がより明らかになるであろう。
本発明のいくつかの実施形態により構成される電子装置の概略図である。 本発明のいくつかの実施形態により構成される電子装置の概略図である。 本発明のいくつかの実施形態による不揮発性メモリの機能図である。 本発明のいくつかの実施形態による不揮発性メモリの機能図である。 本発明のいくつかの実施形態による、パリティの不規則な分布を示すスーパーブロックの機能図である。 本発明のいくつかの実施形態による、起動時に不揮発性メモリのアドレステーブルを構築する処理を示す図である。 本発明のいくつかの実施形態による、不揮発性メモリからデータを検索する処理を示す図である。 本発明のいくつかの実施形態による、不揮発性メモリからデータを検索する処理を示す図である。 本発明のいくつかの実施形態による、不揮発性メモリからデータを検索する処理を示す図である。
図1は、電子装置100の概略図である。いくつかの実施形態では、電子装置100が、(カリフォルニア州クパチーノのApple社から市販されているiPod(商標)などの)ポータブルメディアプレーヤ、(Apple社から市販されているiPhone(商標)などの)携帯電話機、ポケットサイズ・パーソナルコンピュータ、携帯情報端末(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、携帯ゲーム機、遠隔制御装置、及びその他のいずれの好適な種類の電子装置であってもよく、又はこれらの電子装置を含んでいてもよい。
電子装置100は、システムオンチップ(「SoC」)110及び不揮発性メモリ(「NVM」)120を含むことができる。SoC110は、制御回路112、メモリ114、エラー訂正符号(「ECC」)モジュール116、及びNVMインターフェイス118を含むことができる。NVMインターフェイス118、ECCモジュール116、及び制御回路112を、システムオンチップに含まれる別個のモジュールとして示しているが、これは本発明の実施形態の説明を単純化するためにすぎない。例えば、いくつかの実施形態では、これらのモジュールを全て別個の物理エンティティとすることができ、及び/又は独自の超小型電子チップとして形成することもできる。別の例として、いくつかの実施形態では、これらのモジュールを全て単一の超小型電子チップに形成することができ、またこれらのモジュールが同じ基板及び/又はハードウェアを共有することもできる。さらに別の例として、いくつかの実施形態では、これらのモジュールが、ハードウェア構成要素、ソフトウェア構成要素、又はこれらの両方のいくつかの部分を共有することもできる。従って、制御回路112及びNVMインターフェイス118を統合した部分を、総称して「制御回路」と呼ぶこともある。
不揮発性メモリ120を使用して情報を記憶し、電子装置100の電力が切断された時にこれを保持することができる。本明細書で使用する場合、及び状況に応じて、「不揮発性メモリ」は、データを記憶できるNVM集積回路、又はこのような(NVM120などの)NVM集積回路を含むNVMパッケージを意味することができる。
不揮発性メモリ120は、フローティングゲート又は電荷トラップ技術に基づくNANDフラッシュメモリ、NORフラッシュメモリ、EPROM、EEPROM、強誘電RAM(「FRAM(登録商標)」)、磁気抵抗RAM(「MRAM」)、他のあらゆる既知の又は将来の不揮発性メモリ技術、或いはこれらのあらゆる組み合わせを含むことができる。いくつかの実施形態では、NVM120が、外部電子装置100である取り外し可能記憶装置を含むことができる。この場合、NVM120は、例えば、ユニバーサルシリアルバス(「USB」)メモリドライブ、(フラッシュカードなどの)メモリカード、又は他のあらゆる好適な取り外し可能記憶装置を含むことができる。いくつかの実施形態では、電子装置100にNVM120を組み込むことができる。この場合、NVMパッケージ120を、例えば電子装置の統合メモリとすることができる。
NVM120は、複数のチップ(すなわち、集積回路)を含むことができ、この場合、各チップを1又はそれ以上の「ブロック」に編成すること、及び各ブロックを一度に消去することができる。各ブロックは、さらに「ページ」に編成することができ、この場合、各ページを一度にプログラムすること、及び読み取ることができる。例えば、各ページは、NVMの特定の「物理アドレス」に対応することができ、この物理アドレスにデータを書き込み、及び/又はこの物理アドレスからデータを読み取ることができる。(各チップからの、チップ内の位置又は「ブロック番号」が同じ1つのブロックなどの)NVM120の対応するチップからのブロックは、「スーパーブロック」と呼ばれる論理記憶ユニットを形成することができる。さらに、NVM120のチップは、あらゆる好適な数のブロック及びページを含むことができる。ページに加え、(物理ブロックアドレスなどの)物理アドレスを使用してNVM120の(ブロック等の)各メモリ位置を処理することもできる。
図1及びそれ以降の図、並びに様々な開示する実施形態を、フラッシュ技術を使用する観点から説明することがある。しかしながら、これは限定を意図するものではなく、他のあらゆる種類の不揮発性メモリを代わりに実装することができる。さらに、電子装置100は、電力供給装置又はいずれかのユーザ入力又は出力構成要素などの他のあらゆる好適な構成要素を含むこともでき、これらについては、図が複雑になり過ぎないように図1には示してない。
上述したように、システムオンチップ110は、制御回路112、メモリ114、エラー訂正符号(「ECC」)モジュール116、並びにNVMインターフェイス150を含むことができる。制御回路112は、SoC110、並びにSoC112及び/又は電子装置100のその他の構成要素の一般的動作及び機能を制御することができる。例えば、制御回路112は、ユーザ入力及び/又はアプリケーションの命令に応答して、NVM120からデータを取得し又はNVM120にデータを記憶するための読み取り又は書き込みコマンドをNVMインターフェイス118に発行することができる。説明を明確にするために、制御回路112が記憶又は検索を要求するデータについては、たとえこのデータがユーザ又はユーザアプリケーションに直接関連しない場合でも「ユーザデータ」と呼ぶことができる。むしろ、ユーザデータは、(アプリケーションなどを介して)制御回路112により生成又は取得されたあらゆる好適な一連のデジタル情報を含むことができる。
制御回路112は、ハードウェア、ソフトウェア、及びファームウェアのいずれかの組み合わせ、並びに電子装置100の機能を引き起こすいずれかの構成要素、回路又は論理回路を含むことができる。例えば、制御回路112は、NVM120及び/又はメモリ114に記憶されたソフトウェア/ファームウェアの制御下で動作する1又はそれ以上のプロセッサを含むことができる。
メモリ114は、ダイナミック・ランダム・アクセス・メモリ(DRAM)、同期ダイナミック・ランダム・アクセス・メモリ(SDRAM)、ダブルデータレート(DDR)RAM、キャッシュメモリ、リード・オンリ・メモリ(ROM)、他のいずれかの好適なメモリ、又はこれらのいずれかの組み合わせなどの、あらゆる好適な種類の揮発性又は不揮発性メモリを含むことができる。メモリ140は、不揮発性メモリにプログラムするための、又は不揮発性メモリ120から読み取るためのユーザデータを一時的に記憶することができるデータソースを含むことができる。いくつかの実施形態では、メモリ140が、制御回路112の一部として実現されるあらゆるプロセッサのためのメインメモリとして機能することができる。
ECCモジュール116は、リードソロモン(「RS」)符号、Bose−Chaudhuri−Hocquenghem(「BCH」)符号、周期的冗長検査(「CRC」)符号、或いはECCデータを生成するためのその他のあらゆる好適なエラー訂正又は検出符号などの1又はそれ以上のエラー訂正符号又はエラー検出符号を採用することができる。本明細書で使用する「ECCデータ」という用語は、エラー訂正及び/又は検出符号をユーザデータに適用することにより生成されるあらゆる好適なデータを意味することができ、このECCデータを使用して、ユーザデータの検証、ユーザデータの訂正、又はこれらの両方を行うことができる。
いくつかの実施形態では、ECCモジュールが、単一ページのユーザデータにエラー訂正符号を適用して「内部ECCデータ」を生成することができる。その後、この内部ECCデータを使用して、この単一ページのユーザデータを訂正及び/又は検証することができる。さらに、以下でより詳細に説明するように、いくつかの実施形態では、ECCモジュールが、(2又はそれ以上の連続ページなどの)コードワード全体のユーザデータにエラー訂正符号を適用することもできる。この場合、ECCモジュールは、コードワードのユーザデータを全体として訂正するために使用できる「外部ECCデータ」を生成することができる。この外部ECCデータを1又はそれ以上の「パリティページ」に記憶することができ、このパリティページを、この外部ECCデータの記憶専用のページとすることができる。パリティページ及び外部ECCデータについては、以下でより詳細に説明する。
ECCモジュール116は、ある「強度」を有することができ、このECCの「強度」は、ECCモジュール116により生成された内部ECCによって訂正できる(フリップ化ビットなどの)最大エラー数を示すことができる。例えば、ECCモジュール116は、エラー訂正符号を使用して、あるページ内の最大「t」個のエラーを訂正することができ、あるページ内の最大「n」個のエラーを検出することができる(nは、tよりも大きなエラー数とすることができる)。本明細書で使用する「t個のエラー」という用語は、ECCコードがページ内で訂正できる最大エラー数を意味し、「n個のエラー」は、ECCコードがページ内で検出できる最大エラー数を意味する。例えば、あるページがt個よりも多くのエラーを含む場合、このページは、内部ECCデータによって「訂正不能」とすることができる。同様に、あるページがn個よりも多くのエラーを含む場合、内部ECCデータは、このページ内にどれほどのエラーが存在するかを適切に判断することができない。
ECCモジュール116は、例えば、1又はそれ以上の線形フィードバックシフトレジスタ(LFSR)などのハードウェアの形で実現してもよく、或いはプロセッサにより実行されるソフトウェアの形で実現してもよい。ソフトウェアによる実現では、対応するプログラムコードを、例えばNVM120又はメモリ114に記憶することができる。
NVMインターフェイス118は、制御回路112とNVM120の間のインターフェイス又はドライバとして機能するように構成されたハードウェアとソフトウェアのあらゆる好適な組み合わせを含むことができる。NVMインターフェイス118に含まれるあらゆるソフトウェアモジュールに関して、対応するプログラムコードをNVM120又はメモリ114に記憶することができる。
NVMインターフェイス118は、制御回路112がNVM120にアクセスして、NVM120の(ページ、ブロック、スーパーブロック、チップなどの)メモリ位置及びそこに記憶された(ユーザデータなどの)データを管理できるようにする様々な機能を実行することができる。例えば、NVMインターフェイス118は、制御回路112からの読み取り又は書き込みコマンドを解釈し、ECCモジュール116に、NVM120に記憶するユーザデータを符号化するように指示し、ECCモジュール116に、NVM120から読み取ったユーザデータを復号するように指示し、ガーベージコレクションを実行し、ウェアレベリングを実行し、NVM120のバスプロトコルと互換性のある読み取り及びプログラム命令を生成することなどができる。
図2は、電子装置200の概略図であり、この図には、様々な実施形態による電子装置100(図1)のソフトウェア及びハードウェア構成要素のいくつかを詳細に示すことができる。従って、電子装置200は、図1に関連して上述した特徴及び機能のいずれかを有することができ、逆もまた同様である。電子装置200は、ファイルシステム210、NVMインターフェイス218、及びNVM220を含むことができる。NVMインターフェイス218は、例えば、図1のNVMインターフェイス118に対応することができ、NVMドライバ232及びNVMバスコントローラ234を含むことができる。ファイルシステム210及びNVMドライバ232は、ソフトウェアモジュールとすることができ、NVMバスコントローラ234及びNVM220は、ハードウェアモジュールとすることができる。従って、NVMドライバ232は、NVMインターフェイス218のソフトウェア面を表すことができ、NVMバスコントローラ234は、NVMインターフェイス218のハードウェア面を表すことができる。
ファイルシステム210は、ファイルアロケーションテーブル(「FAT」)ファイルシステムなどのあらゆる好適な種類のファイルシステムを含むことができ、電子装置200のオペレーティングシステムの一部(図1のSoC制御回路112の一部など)であることができる。いくつかの実施形態では、ファイルシステム210が、Yet Another Flash File System(「YAFFS」)などのフラッシュファイルシステムを含むことができる。これらの実施形態では、ファイルシステム210が、以下で説明するNVMドライバ232の機能の一部又は全部を実行することができ、従ってファイルシステム210とNVMドライバ232は別個のモジュールであることも、又はそうでないこともある。
ファイルシステム210は、アプリケーション及びオペレーティングシステムのファイル及びフォルダ構造を管理することができる。ファイルシステム210は、電子装置200上で実行されるアプリケーション又はオペレーティングシステムの制御下で動作することができ、このアプリケーション又はオペレーティングシステムによってNVM220から情報を読み取ること又はNVM220に情報を記憶することが要求された時に、NVMドライバ232に読み取り及び書き込みコマンドをそれぞれ与えることができる。ファイルシステム210は、各読み取り又は書き込みコマンドとともに、論理ページアドレス、又はページオフセットを含む論理ブロックアドレスなどの、ユーザデータをどこから読み取り又はどこに書き込むべきかを示す論理アドレスを提供することができる。
ファイルシステム210は、NVM220と直接的な互換性のないNVMドライバ232に読み取り及び書き込み要求を提供することができる。例えば、論理アドレスは、ハードドライブベースのシステム固有の規約又は協約を使用することができる。ハードドライブベースのシステムは、フラッシュメモリとは異なり、最初にブロックの削除を行わずにメモリ位置に上書きすることができる。さらに、ハードドライブは、装置の寿命を延ばすためにウェアレベリングを必要としない。従って、NVMインターフェイス218は、ファイルシステム要求を処理するための、及び他の管理機能を実施するためのメモリ固有の、ベンダ固有の、又はこれらの両方のいずれかの機能を、NVM220に適した形で実行することができる。
NVMドライバ232は、トランスレーションレイヤ236を含むことができる。いくつかの実施形態では、トランスレーションレイヤ236を、フラッシュトランスレーションレイヤ(「FTL」)とすることができる。書き込み動作時には、トランスレーションレイヤ236が、NVM220上の未使用の消去済みの物理アドレスに論理アドレスをマッピングすることができる。読み取り動作時には、トランスレーションレイヤ236が、この論理アドレスを使用して、要求されたデータが記憶されている物理アドレスを特定することができる。各NVMは、NVMのサイズ又はベンダに応じて異なるレイアウトを有することができるので、このマッピング動作は、メモリ及び/又はベンダに特化したものとなり得る。トランスレーションレイヤ236は、論理−物理アドレスマッピングに加え、他にもあらゆる好適な機能を実行することができる。例えば、トランスレーションレイヤ236は、ガーベージコレクション及びウェアレベリングなどの、フラッシュトランスレーションレイヤに特有のその他の機能のいずれかを実行することができる。
NVMドライバ232は、NVMバスコントローラ234と相互作用して、(書き込み要求、読み取り要求、削除要求などの)NVMアクセス要求を完了することができる。例えば、NVMドライバ232は、NVMバスコントローラ234に、データを記憶又は検索するための、及び書き込み要求の場合には、対応する書き込むべきデータベクトルを記憶又は検索するための物理アドレスを提供することができる。NVMバスコントローラ216は、NVM220へのハードウェアインターフェイスとして機能することができ、またバスプロトコル、データ速度、及びNVM220のその他の仕様を使用してNVM220と通信することができる。
NVMインターフェイス218は、本明細書では「メタデータ」と呼ぶこともあるメモリ管理データに基づいてNVM220を管理することができる。メタデータは、NVMドライバ232によって生成することもでき、又はNVMドライバ232の制御下で動作するモジュールによって生成することもできる。メタデータは、例えば、(ファイルシステム210により提供される「論理アドレス」などの)論理アドレスと物理アドレスの間のマッピング、不良ブロック管理情報、ウェアレベリング情報、ガーベージコレクション情報、エラー訂正符号(「ECC」)データ、又はこれらのいずれかの組み合わせを管理するために使用されるあらゆる情報を含むことができる。従って、一般に、本明細書で使用する「メタデータ」という用語は、一般に不揮発性メモリの動作及びメモリ位置を管理するために使用できるユーザデータについての又はこれに関連するあらゆる情報(及びユーザデータではない情報など)を意味することができる。
NVMインターフェイス218は、NVM220にメタデータを記憶するように構成することができる。いくつかの実施形態では、NVMインターフェイス218が、ユーザデータに関連するメタデータを、ユーザデータを記憶した(ページなどの)位置と同じメモリ位置に記憶することができる。例えば、NVMインターフェイス218は、ユーザデータ、関連する論理アドレス、ユーザデータのECCデータ、及びその他のあらゆる好適なメタデータを、NVM220の1つのメモリ位置に記憶することができる。別の例として、NVM220のあらゆる好適なメモリ位置にメタデータを記憶することもできる。
上述したように、(図1のNVM120などの)不揮発性メモリは、チップ、ブロック、ページ、スーパーブロックなどに編成することができる。例えば、図3及び図4に、NVM320の概略的なレイアウトを示す。図3及び図4は、NVM320の組織的レイアウトを例示するためのものにすぎず、不揮発性メモリの実際の物理レイアウトを示すものではない。例えば、図3及び図4には、チップ0がチップ1に隣接するように示しているが、これは、これらのチップの機能関係を例示するためのものにすぎず、NVM320の実際の物理レイアウトでは、これらのチップが互いに近くに位置することも、又はしないこともある。さらに、図3及び図4には、一定数のチップ、ブロック、及びページを示しているが、これは例示目的にすぎず、当業者であれば、NVM320があらゆる好適な数のチップ、ブロック、及びページを含むことができると理解するであろう。一例として、NVM320の各チップは、4096個のブロックを含むことができ、各ブロックは、そのブロックがSLCブロックであるか、2−bitMLCブロックであるか、又は3−bitMLCブロックであるかどうかに基づいて、64個、128個、又は192個のページを含むことができ、各ページは512バイトを含むことができる。
図3に示すように、NVM320は、チップ0、チップ1、チップ2及びチップ3などの1又はそれ以上のチップ(すなわち、集積回路)を含むことができる。次に、各チップを1又はそれ以上の「ブロック」に編成することができる。例えば、チップ0を、ブロック0〜3に編成された形で示している。NVM320の消去コマンド中には、メモリのブロック全体を一度に消去することができる。次に、チップの各ブロックを1又はそれ以上のページに編成することができる。例えば、チップ2の(ブロック302などの)ブロック0を、ページ0〜3に編成された形で示している。NVM320の読み取り又は書き込みコマンド中には、全ページの読み込み又は書き込みをそれぞれ一度に行うことができる。NVM320は、各チップからのチップ内の同じ位置又は「ブロック番号」を有する1ブロックを含む1又はそれ以上のスーパーブロックを含むこともできる。例えば、NVM320のスーパーブロック0は、チップ0〜3の各々のブロック0を含むことができる。同様に、NVM320のスーパーブロック1は、チップ0〜3の各々のブロック1を含むことができ、NVM320のスーパーブロック2は、チップ0〜3の各々のブロック2を含むことができ、以下同様である。
NVM320の各スーパーブロックは、スーパーブロックの各チップからの1ページを含むことにより形成される1又はそれ以上の「ストライプ」を含むことができ、各ページは、そのチップ内の同じページ番号を有する。例えば、図4に、NVM320のストライプ310を示している。ストライプ310は、スーパーブロック0のチップ1〜3の各々の同じページ番号を含むことができる。NVM320の動作中には、このストライプ及び/又はスーパーブロックのページを順に処理することができる。例えば、ストライプ310の読み取り又は書き込み動作中には、ページ320を処理し、その後ページ330を処理し、ページ340を処理し、そしてページ350を処理することができる。このように、ストライプ312に含まれるデータを、情報の「コードワード」と見なすことができる。具体的には、本明細書で使用する「コードワード」という用語は、不揮発性メモリの1又はそれ以上の連続するページに含まれる、全体として1つの情報を形成するデータを意味することができる。以下でより詳細に説明するように、コードワードは、単一のストライプに限定されるわけではなく、1又はそれ以上のストライプの連続するページからのデータを含むことができる。
NVM320の各ページは、あらゆる好適な情報を含むことができる。例えば、これらのページは、ユーザデータ、メタデータ、又はこれらの両方を含むことができる。いくつかの実施形態では、ECCデータなどのメタデータをページに含めて、NVM320に記憶された情報のエラー検出及び/又は訂正のために提供することができる。例えば、(図1のECCモジュール116などの)ECCモジュールは、単一ページのユーザデータにエラー訂正符号を適用して「内部ECCデータ」を生成することができる。次に、この内部ECCデータを使用して、この単一ページのユーザデータを訂正及び/又は検証することができる。一例として、図4に、ページ322、332、342及び352を含むことができるストライプ312を示す。ページ322、332、342及び352内のデータは、全体としてコードワード390を形成することができる。例えば、ページ322は、ユーザデータ324から成る第1の部分と、内部ECCデータ326から成る第2の部分とを含むことができる。説明を単純にするために図示してはいないが、ページ322は、NVM320の管理又は動作のための他のあらゆる好適なデータ又は(位置データ、生成データなどの)メタデータを含むこともできる。上述したように、ECCデータ326は、好適なECCモジュールに、ページ322のユーザデータに対してエラー訂正符号を実行させて、このECCデータを生成することにより生成することができる。
(記憶されたデータを読み取ること、又はこのデータに別様にアクセスすることなどの)ページ322の検索中には、ページ322の内部ECCデータを使用して、ページ322のユーザデータの完全性を維持することができる。例えば、ページ322のユーザデータ内に「t個」以下のエラーしか存在しない場合、このページの内部ECCデータを使用してこれらのエラー訂正することができる。同様に、ページ322のユーザデータ内にn個以下のエラーしか存在しない場合、このページの内部ECCデータは、ページ322内にどれほどのエラーが存在するかを識別することができる(例えば、この場合nの方がtよりも大きいものとすることができる)。同様に、ページ332及びページ342などのページは、ユーザデータ及びこれらの関連する内部ECCデータを含むことができる。
いくつかの実施形態では、ECCデータを1又はそれ以上のページのユーザデータにさらに提供することができる。例えば、(図1のECCモジュール116などの)ECCモジュールは、コードワード全体のユーザデータにエラー訂正符号を適用して、「外部ECCデータ」を生成することができる。この外部ECCデータを使用して、コードワードのユーザデータを全体として訂正することができる。一例として、図4に、ページ322、332及び342のユーザデータに関連できる外部ECCデータ356を含むことができるストライプ312のページ352を示している。換言すれば、ページ352の外部ECCデータ356を使用して、コードワード390全体のエラーを訂正及び/又は検出することができる。外部ECCデータ356を生成するためには、上述したようにコードワード390全体に対して好適なエラー訂正を実行したはずである。
ページ352は、(例えば、単一ページのみのための内部ECCデータではなく)コードワード390全体のための外部ECCデータを含むことができるので、ページ352を「パリティページ」352と呼ぶことができる。本明細書で使用する「パリティページ」という用語は、2又はそれ以上のデータページのユーザデータ内のエラーを訂正及び/又は検出するための外部ECCデータを含むことができるNVMのページを意味する。いくつかの実施形態では、パリティページを外部ECCデータ専用にすることができ、パリティページが独自のユーザデータを含まなくてもよい。さらに、図4には外部ECCデータ356を示し、これが(例えば、パリティページ352内の情報の全てのバイトを使用しているので)パリティページ352全体を満たしているが、これとは別に、外部ECCデータ356がページ352の一部しか満たさない場合もある。具体的には、外部ECCデータは、この外部ECCデータを保持するのに必要なだけのパリティページの空間しか使用しなくてよい。例えば、コードワード390のための外部ECCデータが400バイトの情報を含み、パリティページ352が512バイトを記憶できる場合、この外部ECCデータは、パリティページ352の512バイトのうちの400バイトしか占めなくてよい。
このようにすることで、これらのコードワード390の各ページ内のデータを2回保護することができる。最初に、各ページは、そのページの内部ECCデータによって保護される(例えば、内部ECCデータ326によってユーザデータ324を保護することができる)。一例として、ユーザデータ324がt個以下のエラーしか有していない場合、内部ECCデータ326を使用してこれらのエラーを訂正することができる。次に、パリティページ352の外部ECCデータ356を通じて、ユーザデータ322に第2の保護層を提供することができる。例えば、ユーザデータ322が、t個よりも多くのエラーを有する場合、ページ322の内部ECCデータ326だけでは、ユーザデータ322を訂正するのに不十分な恐れがある。この場合、パリティページ352の外部ECCデータ356を使用して、ユーザデータ322を訂正することができる。例えば、コードワードのページのユーザデータ、及びパリティページの外部ECCデータに関わる方程式を生成することができる。説明を簡単にするために、一例として単純な加算方程式を以下に示す。
X=A+B+C (1)
式中、Xは、パリティページ352の外部ECCデータに関連し、Aは、ページ322のユーザデータに関連し、Bは、ページ332のユーザデータに関連し、Cは、ページ342のユーザデータに関連することができる。説明を単純にするために、方程式(1)を加算方程式として示しているが、これとは別に、X、A、B、及びCを含む他のあらゆる好適な方程式を使用することもできる。B及びCが両方ともt個よりも少ないエラーしか含まないと仮定すれば、B及びCのユーザデータを正しく認識することができる。Aがt個よりも多くのエラーを有する場合、Aは、Aを訂正するのに内部ECCデータでは不十分な「訂正不能」ページとなり得る。この場合、方程式(1)をAについて解くことにより、Aの正しいユーザデータを求めることができる。
A=X−B−E (2)
このように、パリティページ352の外部ECCデータ356を使用して、ページの正しいユーザデータを求めることができ、NVM320のユーザデータに第2のレベルの保護を提供することができる。さらに、これにより、あるページがt個よりも多くのエラーを含んでいる場合(例えば、ページが「訂正不能」である場合)でも、このページのユーザデータを訂正することができる。
いくつかの実施形態では、NVM320が、例えば、不揮発性メモリ内の他のデータよりも重要な又はエラーを起こしやすいユーザデータを含むことがある。このような場合、このようなデータに追加の保護を行うことが望ましい場合がある。例えば、コードワードに1つのパリティページが提供されている場合、t個よりも多くのエラーを有するページが1つ以下の場合には、依然としてこのページ内のユーザデータを訂正することができる。しかしながら、コードワードが、t個よりも多くのエラーを有するページを2つ又はそれ以上含む場合、(例えば、方程式(1)などの1つの方程式から2つの未知数を求めることはできないので)単一の外部ECCデータだけでは、これらの両方のページを訂正できない場合がある。従って、いくつかの実施形態では、(2又はそれ以上のパリティページなどの)2又はそれ以上のECCデータの組をコードワードに提供して、このコードワードのユーザデータに追加の保護を行うことができる。例えば、ECCモジュールは、コードワード全体のユーザデータに対して2つのエラー訂正符号を実行することができ、各エラー訂正符号により1組のECCデータを生成することができる。その後、この2組のECCデータをコードワードの2つのパリティページに記憶することができる。
いくつかの実施形態では、コードワードが、単一のストライプに限定されるのではなく、スーパーブロックの2又はそれ以上のストライプにわたることができる。例えば、図5に、不揮発性メモリのスーパーブロック500を示す。例えば、スーパーブロック500は、図3のNVM320のスーパーブロック0〜3のいずれかに対応することができる。図5には、スーパーブロック500が、4つのチップ(すなわち、チップ0〜3)の各々からのブロックを含むものとして示し、これらのブロックの各々が4つのページ(すなわち、ページ0〜4)を有するものとして示しているが、これは例示目的にすぎない。これとは別に、スーパーブロック500は、あらゆる好適な数のチップ及び/又はページを含むことができる。
図5に示すように、ページA1、B1及びY1は、単一のコードワード(「コードワード1」)を形成することができ、Y1をコードワード1のパリティページとすることができる。同様に、A1、B2、C2、X1及びX2は、単一のコードワード(「コードワード2」)を形成することができ、X1及びX2を、それぞれコードワード2のパリティページとすることができる。コードワード1及びコードワード2を、それぞれ3つ及び4つのページを有するものとして示しているが、これは例示目的であり、これとは別に、コードワード1及びコードワード2は、あらゆる好適な数のページを含むことができる。従って、図5には、コードワードがスーパーブロック500のあらゆる好適な位置において開始又は終了することができ、特定の位置において開始及び終了することに限定されない(例えば、ストライプの最初から開始し、又はストライプの最後で終了することなどに限定されない)ことを示している。このように、不揮発性メモリのパリティページは、スーパーブロック内で不規則に分布することができる。
図5には、コードワードのユーザデータを保護するために、この単一のコードワードが2又はそれ以上のパリティページを含むことができることも示している。いくつかの実施形態では、重要度の高い情報を保護するためにより多くのパリティページを使用することができ、重要度の低い情報を保護するためにより少ないパリティページを使用することができる。別の例として、いくつかの実施形態では、エラーを起こしやすいページを保護するためにより多くのパリティページを使用することができ、エラーを起こしにくいページを保護するためにより少ないパリティページを使用することができる。
従って、コードワードは、これに関連する複数のパリティページを有することができるので、複数のページがt個よりも多くのエラーを有する場合(例えば、複数のページが「訂正不能」である場合)にもコードワードを訂正することができる。一例として、図5のコードワード2は、X1及びX2という2つのパリティページを有する。このように、2つのパリティページを利用できるので、コードワードのページのユーザデータ、及びパリティページのECCデータに関わる2つの好適な方程式を生成することができる。例えば、以下に2つの例示的な方程式を示す。
X1=A2+B2+C2 (3)
X2=A2*B2*C2 (4)
方程式(3)及び(4)は、例示を目的とするものにすぎず、2つの訂正不能ページの復元を十分にサポートする他のいずれの2つの方程式を使用してもよい。例えば、いくつかの実施形態では、第1の方程式を(GF(2)加算方程式などの)単純なXOR方程式とすることができ、第2の方程式をGF(2x)に基づくリードソロモン方程式とすることができ、この場合、xは、8又はその他のいずれかの好適な数に相当することができる。
従って、コードワード2の最大2ページがt個よりも多くのエラーを有する(例えば、「訂正不能」である)場合、(例えば、2つの方程式からは2つの未知数を求めることができるので)方程式(3)及び(4)を同時に解いて、これらのページの正しいユーザデータを求めることができる。このように、コードワードのための追加の外部ECCデータの組を生成することにより、追加の保護層を提供して、コードワードをデータエラーから保護することができる。同様に、コードワードを保護するために、あらゆる好適な数のパリティページ及び外部ECCデータの組を含めることができる。例えば、(例えば、t個以上のエラーを有する)「訂正不能」なページがn個以下の場合、コードワードのために「n」組の外部ECCデータを生成して、このコードワードを訂正することができる。
本明細書で使用する「訂正不能」又は「訂正不能ページ」という用語は、t個よりも多くのエラーを有し、そのページ内の内部ECCデータによって訂正できないページを意味することができる。しかしながら、訂正不能ページを含むコードワードが(例えば、適切な数の外部ECCデータの組を有する)好適な数のパリティページを有する場合には、依然としてこの訂正不能ページを修復することができる。従って、本明細書で使用する「訂正不能ページ」という用語は、1又はそれ以上のパリティページの使用を通じてこのようなページを修復することができるので、このページを絶対に訂正できないことを意味するものではない。
図5のパリティページは不規則に分布しているので、(例えば、コードワードはあらゆる位置において開始及び終了できるので)スーパーブロックのパリティページがどこに位置するかを直ちに認識できないこともある。従って、いくつかの実施形態では、ページのメタデータに、どのページがパリティページであるかを示すためのマーカーを含めることができる。例えば、各ページのメタデータタグとして「パリティページマーカー」を含めることができる。一般に、このメタデータタグとして単一ビットを使用することができる。例えば、ページがパリティページである場合には、ビットを「1」とすることができ、ページがパリティページでない場合には、「0」とすることができ、又は逆であってもよい。或いは、パリティページマーカーのために他のあらゆる好適な数のビットを使用することもできる。
各ページのメタデータタグにパリティページマーカーを記憶することにより、システムのメモリ内の空間を節約することができる。例えば、パリティページマーカーを含んでいなければ、不揮発性メモリの各ページ、及びそのページがパリティページであるか否かを記録する(例えば、図1のNVM120又はメモリ114に記憶される)別個のテーブルを記憶することが必要となり得る。しかしながら、各ページが、別個のテーブルを維持する代わりにパリティページマーカーを含んでいる場合、あるページを(読み取り、又はそのデータに別様にアクセスすることなどの)処理のために検索する際に、システムは、そのページがパリティページであるかどうかを判断することができる。
ページがパリティページ又は非パリティページとして正しく識別されることを支援するために、このパリティページマーカーを含むメタデータタグを冗長的に記憶することができる。例えば、(図1のNVMインターフェイス118などの)NVMインターフェイスは、書き込み要求に応答して、データ及びその関連するパリティページマーカーを(ページなどの)第1のメモリ位置に記憶し、このパリティページマーカーの冗長コピーを第2のメモリ位置に記憶することができる。こうすれば、たとえ第1のメモリ位置がアクセス不能になったとしても、メモリインターフェイスは、なおも第2のメモリ位置に記憶されたバックアップコピーからパリティページマーカーを回収することができる。従って、システムは、ページがパリティページであるか否かを依然として正確に判断することができる。2009年9月18日に出願された「不揮発性メモリのためのメタデータ冗長方式(METADATA REDUNDANCY SCHEMES FOR NON−VOLATILE MEMORIES)」という名称の、同一出願人による同時係属中の米国特許出願第12/562,860号に記載されるように、パリティページマーカーに加えて、他のあらゆる好適なメタデータを冗長的に記憶することもでき、この特許出願はその全体が本明細書に組み入れられる。
NVMの各ページは、パリティページマーカーを含むことができるので、あらゆるコードワード内からそのコードワードのサイズを特定することができる。例えば、再び図5を参照して、NVMインターフェイス(又は電子装置の他のあらゆる好適な構成要素など)が、スーパーブロック500のデータを走査(例えば、読み取り)しているものとする。一例として、NVMインターフェイスが、現在コードワード2のページA2を走査しているものとする。NVMインターフェイスは、コードワード2のサイズを特定するために、パリティページに遭遇するまで「左向きに走査」することができる。
本明細書で使用する「左向きに走査」という用語は、NVMのページを現在の処理方向とは逆の方向に走査することを意味する。例えば、図5では、「左向きに走査」するために、スーパーブロック500のページをA2、Y1、B1、A1、・・・のような順序で走査することができる。ここでも、図5はNVMの機能を示すものにすぎず、NVMの物理レイアウトを示すことは意図していないので、「左向きに走査」という用語は、ページの物理レイアウトを示すものではなく、ページを処理する順序を示すためのものにすぎない。さらに、左向きに走査する場合、この走査は、ページをラップアラウンドして、1つのストリップから別のストリップへ進むことができる。例えば、左向きに走査する場合、C1、B2、A2、・・・のような順序でページを処理することができる。同様に、本明細書で使用する「右向きに走査」という用語は、NVMのページを現在の処理方向に走査することを意味する。例えば、図5では、「右向きに走査」するために、スーパーブロック500のページをY1、A2、B2、C1、X1、・・・のような順序で走査することができる。
従って、NVMインターフェイス(又は電子装置の他の好適な構成要素など)は、図示のようなコードワードのサイズを特定するために、ページA2から左向きに走査することができる。NVMインターフェイスは、パリティページ(すなわち、ページY1)に遭遇するまで左向きに走査し続けることができる。例えば、NVMインターフェイスは、ページのパリティページマーカーを読み取ることにより、そのページがパリティページであると判断することができる。ページY1は、前のコードワードの最後を示すことができるので、NVMインターフェイスは、コードワード2がページY1の右側のページ(すなわち、ページA2)から開始すると判断することができる。NVMインターフェイスは、コードワード2の最後を特定するために、パリティページ(すなわち、ページX1)に遭遇するまで右向きに走査することができる。その後、NVMインターフェイスは、非パリティページ(すなわち、ページA3)に遭遇し、従って新たなコードワードの指示が開始されるまで、右向きに走査し続けることができる。この結果、NVMインターフェイスは、これらの2つの走査から、(例えば、右向きの走査において2つのパリティページに遭遇したという理由で)コードワード2が2つのパリティページを有し、コードワードのサイズが(ページA2、B2、C2、X1及びX2などの)5ページの長さにわたると判断することができる。
いくつかの実施形態では、パリティページマーカーに加えて、又はパリティページマーカーの代わりに、ページは、「最初のページ」マーカーを含むことができる。例えば、あるページのメタデータに、このページがコードワードの最初のページであることを示すメタデータタグを含めることができる(例えば、ページA2が、最初のページのメタデータタグを含むことができる)。従って、この場合、コードワードの先頭を特定するために、NVMインターフェイスは、最初のページのメタデータタグに遭遇するまで左向きに走査することができる。
いくつかの実施形態では、不規則な分布のパリティページを含めると、電子装置の様々な動作に影響することがある。一例として、不規則な分布のパリティページは、装置の起動シーケンスに影響を及ぼすことがある。上述したように、NVMインターフェイスは、NVMのユーザデータの論理−物理アドレスマッピングを記憶することができる。具体的には、この論理−物理アドレスマッピングを維持するために別個のテーブル(すなわち「アドレステーブル」)を作成することができる。しかしながら、このアドレステーブルは、隣接位置、障害、読み取り動作の失敗による阻害作用、又は他の何らかのエラー誘発現象に起因して、無効になること(例えば、テーブルが更新されずにユーザデータが移動すること)、或いはエラーを生じること又は読み取り不能になることがある。従って、アドレステーブルの完全性を保持する助けとするために、NVMの起動時にこのテーブルを再構築することができる。例えば、起動時に、NVMの各ページを走査して、(ページのメタデータから)各ページの論理アドレスを読み取ることができる。その後、この論理アドレスをページの物理アドレスに関連付けて、アドレステーブルに記憶することができる。
しかしながら、パリティページは、ユーザデータを含まないこともあるので、一般的には、パリティページの論理アドレスをアドレステーブルに記憶する必要はないと考えられる。従って、電子装置の起動中にアドレステーブルを作成する際に、これらのページを「スキップ」することができる。しかしながら、パリティページの不規則な分布に起因して、システムがパリティページの位置を容易に認識できないこともある。従って、起動中に、各ページのパリティページマーカーを読み取ることができる。このパリティマーカーが、ページが非パリティページであることを示す場合、このページの論理アドレス及び関連する物理アドレスをアドレステーブルに記憶することができる。一方、パリティページマーカーが、ページがパリティページであることを示す場合には、このページをスキップし、このページの論理アドレスがアドレステーブルに記憶されないようにすることができる。
ここで図6を参照すると、本発明のいくつかの実施形態による処理600の例示的なフローチャートを示している。(図1の電子装置100などの)電子装置の起動時に、処理600を実行してアドレステーブルを構築することができる。具体的には、処理600を実行して、パリティページが不規則な分布した不揮発性メモリに関連するアドレステーブルを構築することができる。処理600は、図1及び図2のNVMインターフェイス118又は218などのあらゆる好適なメモリインターフェイスによってそれぞれ実行することができ、処理600をそのように説明していることもある。しかしながら、メモリシステム又は電子装置内の他のあらゆる好適な(単複の)構成要素を、これらのステップを実行するように構成することもできると理解されたい。
処理600は、ステップ602から開始することができる。例えば、ステップ602は、電子装置の起動時に行うことができる。ステップ604において、処理600は、現在のページのパリティページマーカーを読み取ることによってNVMのページを走査することができる。ステップ606において、パリティページマーカーを解析して、このページがパリティページであるか否かを判定することができる。例えば、「1」のパリティページマーカーは、ページがパリティページであることを示すことができ、「0」のパリティページマーカーは、ページがパリティページでないことを示すことができる。これとは別に、他のあらゆる好適なマーカー又はビットシーケンスを使用して、ページがパリティページであるか否かを示すことができる。
ページがパリティページでないと判定されたことに応答して、処理600はステップ608へ進み、このページをアドレステーブルに追加することができる。具体的には、ステップ608において、ページの論理アドレスを読み取ることができる。ステップ608において、この読み取った論理アドレスをページの物理アドレスに関連付けて、アドレステーブルに記憶することができる。
ステップ612において、処理600は、NVM内に未だ走査されていないページ(例えば、物理的位置)がさらに存在するかどうかを判断することができる。さらなるページが存在することに応答して、処理600は、ステップ616においてNVMの次のページへ進むことができる。その後、NVM全体が走査されてアドレステーブルが完成するまで、必要に応じてステップ604、606、608、610、612及び616をループ及び反復することができる。NVM内に走査すべきページがこれ以上存在しないことに応答して、処理600は、ステップ612からステップ614へ進んで処理を終えることができる。
ステップ606に戻ると、パリティページマーカーが、現在のページがパリティページであることを示すことに応答して、処理600は、直接ステップ612へ進むことができる。このように、ステップ608及びステップ610を迂回することにより、パリティページの論理アドレスをスキップし、これがアドレステーブルに記憶されないようにすることができる。従って、処理600を実行することにより、NVMインターフェイスは、ユーザデータを含むページ(例えば、非パリティページ)の論理−物理アドレスを含むアドレステーブルを構築する一方で、外部ECCデータしか含まない全てのページ(例えば、パリティページ)を迂回する。具体的には、ページがパリティページであると判断した時点で、処理300は、このパリティページを無視し(例えば、このパリティページのメタデータの論理アドレス領域を無視し)、代わりに非パリティページが見つかるまでNVMのページを走査し続けることができる。
パリティページの不規則な分布によって影響されることがあるシステム動作の別の例に、NVMからのデータの検索がある。例えば、データの検索は、いつパリティページが読み取られ、処理され、又はその記憶データに別様にアクセスさせるかを含むことができる。データを検索する際には、(t個よりも多くのエラーを有するページなどの)1又はそれ以上の訂正不能ページに遭遇することがある。単一のパリティページ及び/又は規則的に分布するパリティページしか含まないシステムでは、システムが、コードワード内のどれほどの訂正不能ページを修復できるかを自動的に認識することができる。しかしながら、不規則な分布のパリティページを含むシステムでは、このシステムは、コードワードを修復できるかどうかを判断する前に、まずこのコードワードに関連するパリティページの数を特定することを必要とすることができる。例えば、コードワードの検索中に、2つの訂正不能ページに遭遇した場合、システムは、このコードワードが2(又はそれ以上の)組の外部ECCデータを有しているかどうかの判断を必要とすることができる。このコードワードが、2又はそれ以上の組の外部ECCデータを伴っている場合、この2つの訂正不能ページをエラーのないページに置き換えて、コードワードの信憑性を復元することができる。
上述したように、システムは、(例えば、コードワードが1組の外部ECCデータを有する場合には)方程式(1)、又は(例えば、コードワードが2組の外部ECCデータを有する場合には)方程式(3)及び方程式(4)などの方程式、又は他のあらゆる好適な方程式を適用して、t個よりも多くのエラーを含むコードワード内の訂正不能ページを修復することができる。従って、いくつかの実施形態では、あるコードワードを検索する時に、このコードワードのデータをバッファすることができる。その後、コードワード全体の検索が完了した時に、システムは、どれほどの訂正不能ページが存在し、そのコードワードにどれほどのパリティページが利用可能であるかを判断することができる。この情報から、システムは、訂正不能ページを修復できるかどうかを判断することができ、できる場合には、バッファしているデータを適用して適当な方程式を解き、これにより訂正不能ページの正しい値を求めることができる。
いくつかの実施形態では、コードワードを検索する最初からコードワードをバッファするのではなく、訂正不能ページを検出した後にバッファを開始することができる。訂正不能ページを有していないコードワードはバッファしなくてもよいので、例えば、これによりシステム内のメモリを節約することができる。
一例として、システムが、図5のコードワード2を検索し、ページB2が訂正不能であると判断したとする。システムは、訂正不能ページに遭遇すると、(ページA2などの)そのコードワードの先頭に遭遇するまで左向きに走査することができる。次に、システムは、ページB2の左側にある1又は複数のページをバッファするとともに、ページB2自体もバッファすることができる。次に、システムは、ページB2の後のコードワードのページの検索及びバッファに進むことができる。さらなる訂正不能ページに遭遇したことに応答して、システムは、これらの訂正不能ページを修復するための好適な数のパリティページが存在する可能性があるので、コードワードのページの検索及びバッファを継続することができる。換言すれば、これらの訂正不能ページを修復するための好適な数の外部ECCデータの組がコードワードの最後に存在する可能性もあるので、システムは、訂正不能ページに遭遇した時点でコードワードが修復不能であると自動的に見なすことができない。システムは、コードワードの最後に行き着くと、(例えば、ページのパリティページマーカーを読み取ることによって)どれほどのパリティページが利用可能であるかを判断し、好適な数のパリティページが存在する場合には、(例えば、方程式(1)、(3)、(4)、又はいずれかの好適な数の外部ECCデータの組に関連する他のあらゆる好適な方程式を適用することによって)訂正不能ページを修復することができる。
いくつかの実施形態では、コードワードをバッファするのではなく、コードワードを検索している時に、ページを訂正するための1又はそれ以上の好適な方程式を「オンザフライで」計算することができる。一例として、システムは、コードワードを検索する時に、このコードワードが2つのパリティページ(又は他のいずれかの好適な数のパリティページなど)を伴っているかのようにページを処理することができる。従って、ページを検索する時に、このページのデータを使用して、方程式(3)及び方程式(4)(又はその他のあらゆる好適な方程式)などの方程式の計算をオンザフライで更新することができる。システムは、コードワードの最後に到達し、実際にどれほどのパリティページが存在するかを判断した時点で、例えば、両方の方程式を適用し、方程式の一方のみを適用し、方程式を適用せず、又はコードワードを廃棄することができる。例えば、2つの訂正不能ページ及び2つのパリティページが存在するとの判断時には、両方の方程式を適用してこれらのページを修復することができる。別の例として、1つの訂正不能ページ及び1つのパリティページが存在するとの判断時には、計算した方程式の一方を使用してこのページを訂正することができる(例えば、同時に他方の計算した方程式を廃棄することができる)。さらに別の例として、訂正不能ページが存在しないとの判断時には、修復の必要がないので、いずれの計算した方程式も使用しなくてよい。さらに別の例として、訂正不能ページを修復するのに十分なパリティページが存在しないとの判断時には、このコードワードを不正確なデータを有しているものとして廃棄することができる。同様に、コードワードを検索した時に、3又はそれ以上の方程式を計算する「オンザフライ」法を使用することもできる。
図7A、図7B、及び図8には、不揮発性メモリのコードワードからデータを検索するための処理700、750、及び800をそれぞれ示す。処理700、750、及び800は、図1及び図2のNVMインターフェイス118又は218などのあらゆる好適なメモリインターフェイスによってそれぞれ実行することができ、これらの処理をそのように説明していることもある。しかしながら、メモリシステム又は電子装置内の他のあらゆる好適な(単複の)構成要素を、これらのステップを実行するように構成することもできると理解されたい。
例えば、処理700及び750では、コードワードのページのデータが検索された時に、このデータをバッファすることができる。その後、このバッファされたデータを使用して、コードワードの訂正不能ページを修復することができる。
処理700は、ステップ702から開始することができる。704において、NVMから特定のデータの組を検索する要求を受け取ることができる。例えば、データを読み取る要求、データを処理する要求、又は別様にデータにアクセスする要求を受け取ることができる。ステップ706において、この要求を、関連する物理アドレスの組に変換することができる。例えば、特定のデータの組を記憶するページの物理アドレスを決定することができる。
ステップ708において、ステップ706の物理アドレスに記憶されたデータを検索することができる。データの検索中、処理700は、ステップ710において、訂正不能ページに遭遇したかどうかを判断することができる。訂正不能ページに遭遇してないことに応答して、物理アドレスのデータの検索を「正常に」続行することができる。換言すれば、外部ECCデータに関連する、又は訂正不能ページを修復することに関連する追加ステップを実行することなくデータを検索することができる。
一方、処理700は、訂正不能ページに遭遇したことに応答してステップ716へ進むことができる。ステップ716において、検索を要求されたデータをバッファすることができる。例えば、NVMは、訂正不能ページから開始して左向きに、その後右向きに走査して、ステップ706において決定された物理アドレスに記憶されているデータをバッファすることができる。その後、このバッファされたデータを使用して、訂正不能ページを修復することができる。例えば、このバッファされたデータを、このデータに関連する1又はそれ以上の外部ECCコードとともに使用して、訂正不能ページ修復することができる。その後、処理700は、ステップ714において終了することができる。
図7Bに進むと、処理750は、例えば、コードワードのページのデータを検索する時に、このデータをバッファすることができる。処理750のステップのいくつかは、図7Aの処理700のステップの1又はそれ以上に対応することができる。例えば、処理750のステップは、処理700のステップ708、710、712、及び714をより詳細に示すことができる。
処理750は、ステップ752から開始することができる。ステップ754において、コードワードの最初のページ(例えば、物理アドレス)を検索することができる。例えば、この「コードワード」は、処理700のステップ706において決定された物理アドレスの組に対応することができる。ページのデータを検索するために、このページを読み取り、処理し、又はその記憶データにアクセスさせることができる。ステップ756において、処理750は、ステップ754において検索されたページが訂正不能であるかどうかを判断することができる。例えば、このページがt個よりも多くのエラーを有している場合、このページを訂正不能、従ってページの内部ECCデータではこのページのエラーを訂正できないものとすることができる。ページが訂正不能でないことに応答して、処理750は、ステップ758において、コードワードの最後に到達したかどうかを判定することができる。コードワードの最後に到達していない場合、処理750は、ステップ754へ戻って次のページ(例えば、物理アドレス)を検索することができる。或いは、コードワードの最後に到達した場合、処理750は、ステップ760において終了することができる。このように、コードワードのページがいずれも訂正不能でない場合、コードワード全体を検索することができ(すなわち、ステップ754、756、及び756をループすることにより)、処理750は、いずれのページもバッファさせることなく終了することができる。
ステップ756に戻ると、コードワードのページが訂正不能であることに応答して、NVMインターフェイスは、ステップ762において、そのコードワードの先頭まで「左向きに走査」することができる。例えば、NVMインターフェイスは、ページがパリティページであることを示す(メタデータタグなどの)パリティページマーカーを有するページに到達するまで左向きに走査することにより、コードワードの先頭を識別することができる。この場合、パリティページに直接続くページを、コードワードの先頭として特定することができる。別の例として、NVMインターフェイスは、最初にメタデータタグに遭遇し、従ってそのページがコードワードの最初のページであることが示されるまで左向きに走査することができる。NVMインターフェイスは、ステップ754において検索したページの左側にあるページ、及びステップ754において検索したページ自体をバッファすることができる。その後、処理750は、ステップ764及びステップ766において、コードワードの残りのページの検索及びバッファを継続することができる。
コードワードの最後に到達したこと、及びコードワード全体がバッファされたことに応答して、ステップ768において、パリティページ及び訂正不能ページの数を特定することができる。例えば、NVMインターフェイスは、訂正不能ページが検索された時に、これらのページの数の集計を保持しておくことができる。パリティページの数を特定するために、NVMインターフェイスは、これらのパリティページを、ページがパリティページでないことを示す(従って、コードワードの全てのパリティページを走査し終えたことなどを示す)パリティページマーカーを有するページに到達するまで「右向きに走査」することができる。
1又はそれ以上のパリティページの使用を通じてページを修復できない可能性がある例も存在し得る。これらの例では、NVMコントローラが、複数の訂正不能エラー処理ポリシのいずれか1つを呼び出すことができる。例えば、ユーザデータページが訂正不能である場合、NVMコントローラは、揮発性メモリのデータ構造にアクセスすることによってこのページを回復し、このページのメタデータを取得することができる。訂正不能エラーからの回復により、システムが動作を継続し、データの一貫性を保持できるようになる。訂正不能エラーから回復させるためのさらなる詳細は、例えば、Post他による、__年__月__日に(本願と同時に)出願された「不揮発性メモリのための訂正不能エラー処理方式(Uncorrectable Error Handling Schemes for Non−Volatile Memories)」という名称の米国特許出願第_______号(代理人整理番号P8905US1)に見出だすことができ、この開示はその全体が引用により組み入れられる。別の例として、インデックスページ(すなわち、論理セクタから物理アドレスへのマッピングを記憶するNVM内のページ)が訂正不能である場合、NVMは、復元動作を呼び出す前に、揮発性メモリのデータ構造にアクセスすることによってこのページを再構成しようと試みることができる。訂正不能エラーを有するインデックスページを処理するためのさらなる詳細は、例えば、Wakrat他による、2009年7月24日に出願された米国特許出願第12/509,071号、及びPOSTらによる、__年__月__日に(本願と同時に)出願された、「インデックスブロックのためのガーベージコレクション方式(Garbage Collection Schemes for Index Block)」という名称の米国特許出願第_______号(代理人整理番号P8907US1)において見出すことができ、これらの両開示はその全体が引用により組み入れられる。
ステップ770において、処理750は、コードワードが修復可能であるかどうかを判定することができる。例えば、パリティページの数が訂正不能ページの数以上である場合、このコードワードは修復できる可能性がある。別の例として、パリティページの数が訂正不能ページの数未満である場合、このコードワードは修復できない可能性がある。コードワードが修復可能であることに応答して、ステップ772において、このコードワードを修復することができる。例えば、(例えば、コードワードが1組の外部ECCデータを有している場合には)方程式(1)、又は(例えば、コードワードが2組の外部ECCデータを有している場合には)方程式(3)及び方程式(4)などの方程式、又はその他のあらゆる好適な方程式を計算して、訂正不能ページを修復することができる。その後、処理750は、ステップ760において終了することができる。一方、コードワードが修復可能でない場合、ステップ774において、このコードワードを、例えば不正確なデータを有するものとして廃棄することができる。
いくつかの実施形態では、これとは別に、処理750がステップ764から開始し、それよりも前のステップを省くことができる。例えば、そうすることで、最初に少なくとも1つの訂正不能ページが存在するかどうかを判断せずに、常にコードワードのデータをバッファするシステムを実現することができる。
図8に、不揮発性メモリのコードワードからデータを検索するための処理800を示す。例えば、処理800は、データを検索する時に、方程式を「オンザフライ」で計算して、コードワードの訂正不能ページを修復することができる。換言すれば、処理800は、訂正不能ページのデータをバッファする必要なくこれらのページを修復することができる。説明を単純にするために図示してはいないが、処理800は、処理700のステップ704及びステップ706などの、コードワードの検索要求を受け取り、この検索要求を物理アドレスの組に変換する事前のステップをさらに含むことができる。
処理800は、ステップ802から開始することができる。ステップ804において、この処理は、コードワードが「m」個のパリティページ(例えば、「m」組の外部ECCデータ)を有し、これらのパリティページに関連する方程式が「m」個存在すると推定することができる(例えば、「m」は1、2、3、4、又はその他のあらゆる好適な数であってよい)。例えば、mが1に等しい場合、処理800は、方程式(1)を推定することができる。別の例として、mが2に等しい場合、処理800は、方程式(3)及び方程式(4)を推定することができる。
ステップ806において、コードワード内の最初のページを検索することができる。例えば、このページを読み取り、処理し、又はその記憶データに別様にアクセスさせることができる。ステップ808において、ステップ804で特定した1又は複数の方程式の計算を、検索したページのデータを使用して更新することができる。ステップ810において、処理800は、コードワードの最後に到達したかどうかを判定することができる。最後に到達していないことに応答して、処理800はステップ806へ戻り、ステップ808及びステップ810を繰り返すことができる。このように、コードワードの最後に到達するまでステップ806、808及び810をループすることにより、コードワードを継続的に進行してページを検索し、この検索したページのデータを使用して計算を更新することによってステップ804の方程式を「オンザフライ」で計算することができる。
コードワードの最後に到達したことに応答して、処理800は、ステップ812において、そのコードワードに関連する実際のパリティページの数を特定することができる。例えば、NVMインターフェイスは、コードワードのパリティページに到達すると、ページがパリティページでないことを示す(従って、このコードワードの全てのパリティページが走査されたことを示す)パリティページマーカーを有するページに到達するまでパリティページを「右向きに走査」することにより、パリティページの数を特定することができる。ステップ812で特定された実際のパリティページの数は、ステップ804で推定したパリティページの数「m」と等しい場合も、又は等しくない場合もある。ステップ812において、NVMインターフェイスは、コードワード内の訂正不能ページの数を特定することもできる。例えば、NVMインターフェイスは、コードワードを検索する時に、t個よりも多くのエラーを含むページの数の集計を保持しておくことができる。
ステップ814において、「m」個の方程式から(もしあれば)「誤った」方程式を廃棄することができる。誤った方程式は、処理800で計算した、存在すると推定はしたものの、方程式を作成するための好適な外部ECCデータが存在しないあらゆる方程式を含むことができる。一例として、ステップ804において、NVMインターフェイスが、2つのパリティページが存在すると推定し、従ってコードワードが検索された時に方程式(3)及び方程式(4)をオンザフライで計算したと考える。しかしながら、ステップ812において、NVMインターフェイスが、コードワードに関連する実際のパリティページが1つしか存在しないと判断したと考える。この結果、ステップ814において、方程式(4)を誤った方程式として廃棄することができる。
ステップ816において、処理800は、コードワードが修復可能であるかどうかを判断することができる。例えば、ステップ814で廃棄されなかった方程式の数(又はステップ812において特定された実際のパリティページの数など)が訂正不能ページの数以上である場合、コードワードを修復することができる。コードワードが修復可能であることに応答して、ステップ818においてこのコードワードを修復し、処理はステップ820において終了することができる。例えば、ステップ814で廃棄されなかった1又はそれ以上の「m」個の方程式を使用して、訂正不能ページの正しい値を解くことができる。一方、コードワードが修復可能でない場合、ステップ882において、このコードワードを、例えば不正確なデータを有するものとして廃棄することができる。
上述した処理は例示にすぎないと理解されたい。本発明の範囲から逸脱することなく、ステップのいずれかを除去し、修正し、又は組み合わせることができ、あらゆる追加のステップを加えることができる。
説明した本発明の実施形態は、限定ではなく例示目的で示したものである。

Claims (24)

  1. 複数のページを含む不揮発性メモリ(「NVM」)にデータを記憶する方法であって、
    前記複数のページの1つよりも大きなサイズの前記データに対して使用する符号化技術を選択するステップと、
    前記符号化技術を前記データに適用して、パリティメタデータに値する少なくとも1つのページを生成するステップと、
    前記データを前記複数のページの第1の部分にプログラムするステップと、
    前記パリティメタデータを前記複数のページの第2の部分に記憶するステップと、
    を含み、前記記憶するステップが、前記第2の部分の各ページのメタデータフィールドに、前記第2の部分が前記パリティメタデータを記憶していることを示すマークを付けるステップを含む、
    ことを特徴とする方法。
  2. 前記第2の部分が、少なくとも2つのページを含む、
    ことを特徴とする請求項1に記載の方法。
  3. 前記第2の部分が前記パリティメタデータを記憶していることを示す前記メタデータフィールドを、前記NVMの第2のメモリ位置に冗長的に記憶するステップをさらに含む、
    ことを特徴とする請求項1に記載の方法。
  4. 前記第2の部分が、前記NVMにわたる不規則な分布を含む、
    ことを特徴とする請求項1に記載の方法。
  5. 前記第1の部分が、少なくとも1つの訂正不能ページを含んでいると判断するステップと、
    前記パリティメタデータを使用して、前記少なくとも1つの訂正不能ページを修復するステップと、
    をさらに含むことを特徴とする請求項1に記載の方法。
  6. 前記不揮発性メモリが、フラッシュメモリを含む、
    ことを特徴とする請求項1に記載の方法。
  7. 各々が一意の物理アドレスに関連する複数のページを含む不揮発性メモリ(「NVM」)の論理−物理マッピングアドレステーブルを構築する方法であって、
    前記複数のページの第1のページを、
    前記第1のページがパリティページであるか否かを示す、前記第1のページの第1のメタデータタグを読み取り、
    前記第1のメタデータタグが、前記第1のページがパリティページでないことを示していると判断することに応答して、
    前記第1のページの第1の論理アドレスを決定し、
    前記第1の論理アドレスを前記第1のページの一意の物理アドレスとともに前記論理−物理間のマッピングのアドレステーブルに記憶し、
    前記第1のメタデータタグが、前記第1のページがパリティページであることを示していると判断することに応答して、
    前記第1の論理アドレスが前記アドレステーブルに記憶されないように前記第1のページをスキップする、
    ことによって処理するステップを含む、
    ことを特徴とする方法。
  8. 前記NVMの電源がオンになったと判断するステップをさらに含み、前記第1のメタデータタグの前記読み取りが、前記NVMの電源がオンになったと判断することに応答して行われる、
    ことを特徴とする請求項7に記載の方法。
  9. 前記複数のページの各ページを、前記複数のページの次のページに進むことによって連続的に処理し、前記複数のページの最終ページが処理されるまで前記次のページに対して前記処理を行うステップをさらに含む、
    ことを特徴とする請求項7に記載の方法。
  10. 前記第1の論理アドレスの決定が、前記第1のページのメタデータから前記第1の論理アドレスを読み取ることを含む、
    ことを特徴とする請求項7に記載の方法。
  11. 複数のページを含む不揮発性メモリ(「NVM」)を備え、
    前記複数のページのサブセットがパリティページであり、
    前記複数のページが複数のコードワードにグループ化され、該複数のコードワードの各コードワードが、前記複数のページのうちの少なくとも2つの連続ページと、少なくとも1つのパリティページとを含み、前記複数のコードワードの少なくとも第1のサブセットが、少なくとも2つのパリティページを含み、
    前記NVMの前記ページへのアクセスを制御するためのプロセッサをさらに備え、
    前記プロセッサが、各パリティページのメタデータフィールドに、前記ページがパリティページであることを示すためのマークを付けるように構成される、
    ことを特徴とする電子装置。
  12. 前記複数のコードワードのうちの特定のコードワードのユーザデータに符号化技術を適用して、前記特定のコードワードに関連するパリティメタデータを生成するように構成されたエラー訂正符号モジュールをさらに備え、前記プロセッサが、前記特定のコードワードの少なくとも1つのパリティページに前記パリティメタデータを記憶するようにさらに構成される、
    ことを特徴とする請求項11に記載の電子装置。
  13. 前記プロセッサが、
    特定のコードワードの各ページを検索し、
    前記検索中に、前記特定のコードワードの訂正不能ページを識別し、
    前記遭遇に応答して、前記特定のコードワード内の各ページのデータを、前記訂正不能ページまで左向きに走査してバッファし、
    前記遭遇に応答して、右向きに走査して前記特定のコードワードの最後を判別し、
    前記訂正不能ページよりも後の各ページを検索する時に、前記訂正不能ページのデータ、及び前記コードワード内の前記訂正不能ページよりも後の各ページのデータをバッファするようにさらに構成される、
    ことを特徴とする請求項11に記載の電子装置。
  14. 前記プロセッサが、パリティページマーカーに遭遇するまで左向きに走査することにより、前記特定のコードワードの先頭を判別するようにさらに構成される、
    ことを特徴とする請求項13に記載の電子装置。
  15. 前記プロセッサが、第1のページのメタデータタグに遭遇するまで左向きに走査することにより、前記特定のコードワードの先頭を判別するようにさらに構成される、
    ことを特徴とする請求項13に記載の電子装置。
  16. 前記プロセッサが、パリティページマーカーの次の非パリティページマーカーに遭遇するまで右向きに走査することにより、前記特定のコードワードの最後を判別するようにさらに構成される、
    ことを特徴とする請求項13に記載の電子装置。
  17. 前記プロセッサが、第1のページのメタデータタグに遭遇するまで右向きに走査することにより、前記特定のコードワードの最後を判別するようにさらに構成される、
    ことを特徴とする請求項13に記載の電子装置。
  18. 前記プロセッサが、前記バッファしたデータ、及び前記特定のコードワードに含まれる少なくとも1つのパリティページに基づいて、前記訂正不能ページを修復するようにさらに構成される、
    ことを特徴とする請求項13に記載の電子装置。
  19. 前記プロセッサが、
    特定のコードワードが第1の数の推定されるパリティページを含むという事前推定に基づいて少なくとも2つのパリティ方程式を生成し、
    前記特定のコードワードを検索し、
    各ページを検索する時に、前記特定のコードワードの各ページのデータを使用して前記少なくとも2つのパリティ方程式の計算を更新する、
    ようにさらに構成されることを特徴とする請求項11に記載の電子装置。
  20. 前記プロセッサが、
    各実際のパリティページのメタデータタグを読み取ることにより、前記特定のコードワードの最後を検索した時点で前記特定のコードワードに関連する第2の数の実際のパリティページを特定し、
    前記第2の数が前記第1の数よりも少ないと判断し、
    前記少なくとも2つのパリティ方程式の第2の数の前記更新された計算を除いて全て廃棄する、
    ようにさらに構成されることを特徴とする請求項19に記載の電子装置。
  21. 前記プロセッサが、
    各実際のパリティページのメタデータタグを読み取ることにより、前記特定のコードワードの最後を検索した時点で前記特定のコードワードに関連する第2の数の実際のパリティページを特定し、
    前記第2の数が前記第1の数に等しいと判断し、
    前記少なくとも2つのパリティの方程式の前記更新された計算を使用して、前記特定のコードワードの少なくとも1つの訂正不能ページを修復する、
    ようにさらに構成されることを特徴とする請求項19に記載の電子装置。
  22. 前記NVM及び前記プロセッサを含む集積回路パッケージをさらに備える、
    ことを特徴とする請求項11に記載の電子装置。
  23. 前記NVMを含む集積回路パッケージをさらに備え、前記プロセッサが、前記集積回路パッケージの外部のシステムオンチップに実装される、
    ことを特徴とする請求項11に記載の電子装置。
  24. 前記不揮発性メモリが、フラッシュメモリを含む、
    ことを特徴とする請求項11に記載の電子装置。
JP2013501263A 2010-03-23 2011-01-31 メタデータタグを介した不規則なパリティ分布の検出 Expired - Fee Related JP5675954B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/729,564 2010-03-23
US12/729,564 US8726126B2 (en) 2010-03-23 2010-03-23 Non-regular parity distribution detection via metadata tag
PCT/US2011/023197 WO2011119255A2 (en) 2010-03-23 2011-01-31 Non-regular parity distribution detection via metadata tag

Publications (2)

Publication Number Publication Date
JP2013522792A true JP2013522792A (ja) 2013-06-13
JP5675954B2 JP5675954B2 (ja) 2015-02-25

Family

ID=44509772

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013501263A Expired - Fee Related JP5675954B2 (ja) 2010-03-23 2011-01-31 メタデータタグを介した不規則なパリティ分布の検出

Country Status (9)

Country Link
US (2) US8726126B2 (ja)
EP (1) EP2550745B1 (ja)
JP (1) JP5675954B2 (ja)
KR (2) KR101730510B1 (ja)
CN (1) CN103038830B (ja)
AU (1) AU2011229938B2 (ja)
BR (1) BR112012023932A2 (ja)
MX (1) MX2012010944A (ja)
WO (1) WO2011119255A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015535640A (ja) * 2012-12-03 2015-12-14 ウェスタン デジタル テクノロジーズ インコーポレーテッド ランタイム可変raid保護スキームを有する方法、ソリッドステートドライブコントローラー、及びデータ格納装置
JP2016505937A (ja) * 2012-11-29 2016-02-25 ウェスタン デジタル テクノロジーズ インコーポレーテッド データストレージシステムのためのデータ信頼性スキーム

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
KR20120029239A (ko) * 2010-09-16 2012-03-26 삼성전자주식회사 Pram을 이용하는 데이터 기록 시스템 및 그 방법
KR101732030B1 (ko) * 2010-12-22 2017-05-04 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
TWI444825B (zh) * 2011-03-29 2014-07-11 Phison Electronics Corp 記憶體儲存裝置、記憶體控制器與資料寫入方法
US20120297256A1 (en) * 2011-05-20 2012-11-22 Qualcomm Incorporated Large Ram Cache
JP5364807B2 (ja) * 2011-06-08 2013-12-11 パナソニック株式会社 メモリコントローラ及び不揮発性記憶装置
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US8756458B2 (en) 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
WO2013089715A1 (en) * 2011-12-14 2013-06-20 Intel Corporation Storage of codeword portions
US9239781B2 (en) * 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
CN104220991B (zh) * 2012-03-16 2017-08-29 马维尔国际贸易有限公司 用于允许数据在nand闪存上的有效存储的架构
US9146856B2 (en) 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
JP5874525B2 (ja) * 2012-05-11 2016-03-02 ソニー株式会社 制御装置、記憶装置、記憶制御方法
US8972826B2 (en) 2012-10-24 2015-03-03 Western Digital Technologies, Inc. Adaptive error correction codes for data storage systems
EP2908247A4 (en) * 2012-11-23 2015-11-11 Huawei Tech Co Ltd METHOD AND DEVICE FOR DATA RECOVERY
US9671962B2 (en) * 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9214963B1 (en) 2012-12-21 2015-12-15 Western Digital Technologies, Inc. Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9146808B1 (en) * 2013-01-24 2015-09-29 Emulex Corporation Soft error protection for content addressable memory
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9218890B2 (en) 2013-06-03 2015-12-22 Sandisk Technologies Inc. Adaptive operation of three dimensional memory
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9880926B1 (en) * 2013-08-20 2018-01-30 Seagate Technology Llc Log structured reserved zone for a data storage device
CN104424107B (zh) * 2013-09-03 2020-02-04 北京谊安医疗系统股份有限公司 麻醉机标校数据的可靠存储方法及装置
KR101767018B1 (ko) 2013-09-27 2017-08-09 인텔 코포레이션 비휘발성 메모리에서의 오류 정정
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
US9588882B2 (en) 2013-12-02 2017-03-07 Intel Corporation Non-volatile memory sector rotation
US9612908B2 (en) 2015-02-20 2017-04-04 Qualcomm Incorporated Performing memory data scrubbing operations in processor-based memory in response to periodic memory controller wake-up periods
DE102015205827A1 (de) * 2015-03-31 2016-10-06 Siemens Aktiengesellschaft Verfahren zum Schutz sicherheitsrelevanter Daten in einem Cachespeicher
US9552163B1 (en) 2015-07-03 2017-01-24 Qualcomm Incorporated Systems and methods for providing non-power-of-two flash cell mapping
US9921909B2 (en) * 2015-07-03 2018-03-20 Qualcomm Incorporated Systems and methods for providing error code detection using non-power-of-two flash cell mapping
KR20170004693A (ko) * 2015-07-03 2017-01-11 에스케이하이닉스 주식회사 메모리 장치의 컨트롤러 및 그 동작 방법
US10133625B2 (en) * 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data
US9946594B2 (en) 2015-08-19 2018-04-17 International Business Machines Corporation Validation bits and offsets to represent logical pages split between data containers
US9929750B2 (en) 2015-09-08 2018-03-27 Toshiba Memory Corporation Memory system
US10459793B2 (en) 2016-03-17 2019-10-29 Western Digital Technologies, Inc. Data reliability information in a non-volatile memory device
US9910772B2 (en) * 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US10289487B2 (en) 2016-04-27 2019-05-14 Silicon Motion Inc. Method for accessing flash memory module and associated flash memory controller and memory device
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
CN107391296B (zh) 2016-04-27 2020-11-06 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
US10554334B2 (en) * 2017-10-17 2020-02-04 Hewlett Packard Enterprise Development Lp Nominally unguaranteed error-detection codes for sub-data packets
JP7030636B2 (ja) * 2018-07-12 2022-03-07 キオクシア株式会社 メモリシステムおよびその制御方法
US10929069B2 (en) 2018-09-12 2021-02-23 International Business Machines Corporation Addressing page-correlated read issues using intra-block parity
US20200127685A1 (en) * 2018-10-19 2020-04-23 Nyquist Semiconductor Limited Systems and methods for a hybrid non-volatile storage system
WO2020107301A1 (zh) * 2018-11-29 2020-06-04 华为技术有限公司 一种编码方法、译码方法以及存储控制器
US10769014B2 (en) 2018-12-28 2020-09-08 Micron Technology, Inc. Disposable parity
CN110389724B (zh) * 2019-07-23 2023-06-06 深圳忆联信息系统有限公司 基于固态硬盘的parity page识别方法和装置
US11301325B2 (en) * 2020-05-29 2022-04-12 Intel Corporation Memory in integrity performance enhancement systems and methods
WO2022205332A1 (en) 2021-04-01 2022-10-06 Micron Technology, Inc. Recording and decoding of information related to memory errors identified by microprocessors
US11726873B2 (en) * 2021-12-20 2023-08-15 Micron Technology, Inc. Handling memory errors identified by microprocessors

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5009A (en) * 1847-03-13 Ratchet-wrench
JPS62257558A (ja) * 1986-04-25 1987-11-10 インターナショナル ビジネス マシーンズ コーポレーション パリテイ検査回路
JP2004152194A (ja) * 2002-10-31 2004-05-27 Ricoh Co Ltd メモリデータ保護方法
JP2005056397A (ja) * 2003-07-31 2005-03-03 Hewlett-Packard Development Co Lp 複数のセットの誤り修正コードを有するデータ
WO2008136562A1 (en) * 2007-05-02 2008-11-13 Samsung Electronics Co., Ltd. Error control code apparatuses and methods of using the same

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529997B1 (en) * 2000-08-11 2003-03-04 Storage Technology Corporation Apparatus and method for writing and reading data to and from a virtual volume of redundant storage devices
JP4256600B2 (ja) * 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP2004152196A (ja) 2002-10-31 2004-05-27 Lexer Research Inc 機能オブジェクト表象装置
US7139863B1 (en) * 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
TWI309776B (en) * 2003-10-24 2009-05-11 Hon Hai Prec Ind Co Ltd Secure storage system and method for solid memory
US7328305B2 (en) 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US7549089B1 (en) * 2004-09-27 2009-06-16 Network Appliance, Inc. Lost write detection in a storage redundancy layer of a storage server
US7366825B2 (en) * 2005-04-26 2008-04-29 Microsoft Corporation NAND flash memory management
US7389397B2 (en) * 2005-06-01 2008-06-17 Sandisk Il Ltd Method of storing control information in a large-page flash memory device
US7533330B2 (en) * 2005-06-27 2009-05-12 Seagate Technology Llc Redundancy for storage data structures
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US20070268905A1 (en) * 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
JP2008077783A (ja) * 2006-09-22 2008-04-03 Fujitsu Ltd 記憶データ処理装置、記憶装置、記憶データ処理プログラム
US7694091B2 (en) * 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
US20080288712A1 (en) * 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
US8332574B2 (en) * 2007-04-30 2012-12-11 Sandisk Il Ltd. Method for efficient storage of metadata in flash memory
KR101433859B1 (ko) * 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
US7761740B2 (en) * 2007-12-13 2010-07-20 Spansion Llc Power safe translation table operation in flash memory
US8185685B2 (en) * 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
US8762620B2 (en) * 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
US7941692B2 (en) * 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US9542431B2 (en) * 2008-10-24 2017-01-10 Microsoft Technology Licensing, Llc Cyclic commit transaction protocol
US9141475B2 (en) * 2008-11-23 2015-09-22 Sandisk Technologies Methods for tag-grouping of blocks in storage devices
KR101014040B1 (ko) * 2009-03-19 2011-02-14 (주)인디링스 디램 버퍼 관리 장치 및 방법
US8307261B2 (en) * 2009-05-04 2012-11-06 National Tsing Hua University Non-volatile memory management method
US8468293B2 (en) * 2009-07-24 2013-06-18 Apple Inc. Restore index page
US8281065B2 (en) * 2009-09-01 2012-10-02 Apple Inc. Systems and methods for determining the status of memory locations in a non-volatile memory
US9063886B2 (en) * 2009-09-18 2015-06-23 Apple Inc. Metadata redundancy schemes for non-volatile memories
US8316175B2 (en) * 2009-11-03 2012-11-20 Inphi Corporation High throughput flash memory system
WO2011055407A1 (en) * 2009-11-04 2011-05-12 Hitachi, Ltd. Flash memory module
US8364886B2 (en) * 2010-01-26 2013-01-29 Seagate Technology Llc Verifying whether metadata identifies a most current version of stored data in a memory space
KR101678868B1 (ko) * 2010-02-11 2016-11-23 삼성전자주식회사 플래시 주소 변환 장치 및 그 방법
US8478796B2 (en) 2010-03-23 2013-07-02 Apple Inc. Uncorrectable error handling schemes for non-volatile memories
US8812816B2 (en) 2010-03-23 2014-08-19 Apple Inc. Garbage collection schemes for index block

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5009A (en) * 1847-03-13 Ratchet-wrench
JPS62257558A (ja) * 1986-04-25 1987-11-10 インターナショナル ビジネス マシーンズ コーポレーション パリテイ検査回路
JP2004152194A (ja) * 2002-10-31 2004-05-27 Ricoh Co Ltd メモリデータ保護方法
JP2005056397A (ja) * 2003-07-31 2005-03-03 Hewlett-Packard Development Co Lp 複数のセットの誤り修正コードを有するデータ
WO2008136562A1 (en) * 2007-05-02 2008-11-13 Samsung Electronics Co., Ltd. Error control code apparatuses and methods of using the same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016505937A (ja) * 2012-11-29 2016-02-25 ウェスタン デジタル テクノロジーズ インコーポレーテッド データストレージシステムのためのデータ信頼性スキーム
JP2015535640A (ja) * 2012-12-03 2015-12-14 ウェスタン デジタル テクノロジーズ インコーポレーテッド ランタイム可変raid保護スキームを有する方法、ソリッドステートドライブコントローラー、及びデータ格納装置

Also Published As

Publication number Publication date
KR20120134144A (ko) 2012-12-11
US9274887B2 (en) 2016-03-01
EP2550745B1 (en) 2014-08-27
AU2011229938B2 (en) 2014-07-31
KR101730510B1 (ko) 2017-04-26
US20140143634A1 (en) 2014-05-22
WO2011119255A3 (en) 2012-10-11
US8726126B2 (en) 2014-05-13
CN103038830A (zh) 2013-04-10
CN103038830B (zh) 2016-03-09
EP2550745A2 (en) 2013-01-30
BR112012023932A2 (pt) 2016-08-02
US20110239088A1 (en) 2011-09-29
MX2012010944A (es) 2013-03-05
WO2011119255A2 (en) 2011-09-29
AU2011229938A1 (en) 2012-11-08
JP5675954B2 (ja) 2015-02-25
KR20120139830A (ko) 2012-12-27
KR101417561B1 (ko) 2014-07-08

Similar Documents

Publication Publication Date Title
JP5675954B2 (ja) メタデータタグを介した不規則なパリティ分布の検出
TWI639917B (zh) 資料儲存裝置及映射表重建方法
US9430329B2 (en) Data integrity management in a data storage device
KR101405741B1 (ko) 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작
US8904261B2 (en) Data management in solid state storage devices
US8578242B1 (en) Data storage device employing seed array for data path protection
US10037153B2 (en) Memory device, electronic system, and methods associated with modifying data and a file of a memory device
TWI645404B (zh) 資料儲存裝置以及非揮發式記憶體操作方法
US20080307270A1 (en) Emerging bad block detection
US20120047409A1 (en) Systems and methods for generating dynamic super blocks
TWI646535B (zh) 資料儲存裝置以及非揮發式記憶體操作方法
US20150046772A1 (en) Method and device for error correcting code (ecc) error handling
US20120215962A1 (en) Partitioning pages of an electronic memory
US20200089566A1 (en) Apparatus for diagnosing memory system and operating method thereof
US20150324283A1 (en) Flash memory control chip and data storage device and flash memory control method
US9754682B2 (en) Implementing enhanced performance with read before write to phase change memory
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140115

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140415

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140611

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141224

R150 Certificate of patent or registration of utility model

Ref document number: 5675954

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

LAPS Cancellation because of no payment of annual fees