JP7030636B2 - メモリシステムおよびその制御方法 - Google Patents

メモリシステムおよびその制御方法 Download PDF

Info

Publication number
JP7030636B2
JP7030636B2 JP2018132446A JP2018132446A JP7030636B2 JP 7030636 B2 JP7030636 B2 JP 7030636B2 JP 2018132446 A JP2018132446 A JP 2018132446A JP 2018132446 A JP2018132446 A JP 2018132446A JP 7030636 B2 JP7030636 B2 JP 7030636B2
Authority
JP
Japan
Prior art keywords
page
physical
data
memory
pages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018132446A
Other languages
English (en)
Other versions
JP2020009370A (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.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2018132446A priority Critical patent/JP7030636B2/ja
Priority to US16/372,831 priority patent/US11593007B2/en
Publication of JP2020009370A publication Critical patent/JP2020009370A/ja
Application granted granted Critical
Publication of JP7030636B2 publication Critical patent/JP7030636B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

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)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明の実施形態は、メモリシステムおよびその制御方法に関する。
NAND型フラッシュメモリを記憶媒体とするメモリシステムにおいて、最後に書き込まれた物理ページ(以下、最終有効ページという)を検索する際に、2分探索が用いられている。
最終有効ページ以降の物理ページに、不良物理ページまたは消し損じの物理ページ(以下、両者をまとめて表現する場合には、非消去ページという)が存在する場合、非消去ページはプログラム状態であると誤判定されることがあった。このため、起動処理に要する時間の最大値が大きかった。
特許第4524309号公報
本発明の一つの実施形態は、起動処理に要する時間の最大値を抑えることができるメモリシステムおよびその制御方法を提供することを課題とする。
本発明の一つの実施形態によれば、メモリシステムは、不揮発性メモリと、不揮発性メモリへのデータのアクセスを制御するメモリコントローラと、を備える。不揮発性メモリ内にはデータの消去の単位である物理ブロックが複数存在し、物理ブロック内にはデータの読み書きの単位である物理ページが複数存在する。メモリコントローラは、複数の物理ブロックをまとめて論理ブロックとし、複数の物理ページのうち、物理ブロック内における相対的な位置が同じものをまとめて論理ページとする。メモリコントローラは、複数の論理ページに対して予め定められた第1の順序でデータが配置され、かつ、論理ページ内の複数の物理ページに対して予め定められた第2の順序でデータが配置されるように不揮発性メモリにデータ書き込みを指示する。メモリコントローラは、不揮発性メモリから、論理ブロック内で最後にデータが書き込まれた物理ページの候補である最終ページ候補を特定する。メモリコントローラは、最終ページ候補から前記第2の順序とは逆順に存在する第1の範囲数の物理ページのうち、プログラムされた物理ページの数が第1基準値以上であるかを判定する上方向チェック処理を実行する。メモリコントローラは、最終ページ候補から第2の順序と同じ順に存在する第2の範囲数の物理ページのうち、プログラムされた物理ページの数が第2基準値以下であるかを判定する下方向チェック処理を実行する。メモリコントローラは、上方向チェック処理および下方向チェック処理の結果から論理ブロック内で最後にデータが書き込まれた物理ページを特定する。
図1は、実施形態によるメモリシステムの構成の一例を模式的に示すブロック図である。 図2は、物理ブロックと論理ブロックとの関係を模式的に示す図である。 図3は、フレームの構成の一例を示す図である。 図4は、実施形態による上方向チェック処理の概要を模式的に示す図である。 図5は、実施形態による下方向チェック処理の概要を模式的に示す図である。 図6は、実施形態によるメモリシステムの起動時の処理手順の一例を示すフローチャートである。 図7は、実施形態による境界探索処理の手順の一例を示すフローチャートである。 図8は、実施形態による境界探索処理で決定される最終プログラムページの一例の場合を示す図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびその制御方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
図1は、実施形態によるメモリシステムの構成の一例を模式的に示すブロック図である。メモリシステム10は、メモリコントローラ20と、不揮発性メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリという)30と、を備える。メモリシステム10は、ホスト40と接続可能である。図1には、ホスト40と接続された状態のメモリシステム10が示されている。ホスト40は、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
NANDメモリ30は、電源が供給されない状態でも、書き込まれたデータを保持することができる半導体メモリである。NANDメモリ30は、ホスト40から送信されるユーザデータ、およびメモリシステム10内でのデータの保存位置の管理などに使用される管理情報などを記憶する。
NANDメモリ30は、メモリセルアレイを有する1以上のNANDチップによって構成される。メモリセルアレイは、複数のメモリセルがマトリクス状に配列されて構成される。個々のメモリセルアレイは、消去の単位である物理ブロックを複数配列して構成される。各物理ブロックは、メモリセルアレイに対する読み出しおよび書き込みの単位であるページを複数備える。
メモリコントローラ20は、ホスト40からの書き込みコマンド(書き込みの要求)に基づいてNANDメモリ30を制御してデータを書き込ませる。また、ホスト40からの読み出しコマンド(読み出しの要求)に基づいてNANDメモリ30を制御してデータを読み出させる。メモリコントローラ20は、ホストI/F(ホストインタフェース)21、制御部22、データバッファ23、符号化部/復号部(Encoder/Decoder)24およびメモリI/F(メモリインタフェース)25を備える。ホストI/F21、制御部22、データバッファ23、符号化部/復号部24およびメモリI/F25は、内部バス29で接続されている。
ホストI/F21は、ホスト40との間のインタフェース規格に沿った処理を実施し、ホスト40から受信した命令、ユーザデータなどを内部バス29に出力する。また、ホストI/F21は、NANDメモリ30から読み出されたユーザデータ、制御部22からの応答などをホスト40へ送信する。なお、本実施の形態では、ホスト40からの書き込みの要求によりNANDメモリ30へ書き込むデータをユーザデータと呼ぶ。
制御部22は、メモリコントローラ20の各構成要素を統括的に制御する機能部である。制御部22は、ホスト40からホストI/F21経由で命令(コマンド、要求)を受けた場合に、その命令に基づいて、メモリコントローラ20の各構成要素の制御を行う。
制御部22は、NANDメモリ30内の複数の物理ブロックをまとめて論理ブロックとし、複数の物理ページのうち、物理ブロック内における相対的な位置が同じものをまとめて論理ページとして管理する。図2は、物理ブロックと論理ブロックとの関係を模式的に示す図である。図2に示されるように、メモリシステム10では、物理ブロック210が複数まとめられて仮想的なブロックである論理ブロック200が構築される。論理ブロック200は、消去、書き込み、読み出しなどの管理単位として用いられる。論理ブロック200を構成する各物理ブロック210は、例えばそれぞれ異なるNANDチップに属する。また、論理ブロック200は、複数の論理ページ220で構成される。論理ページ220は、論理ブロック200内での書き込みおよび読み出しの単位であり、論理ブロック220を構成する各物理ブロック210の同じ位置の物理ページ230をまとめたものである。図に示されるように、論理ページ220は、論理ブロック200を構成する各物理ブロック210の相対的な位置が同じ物理ページ230をまとめたものである。
例えば、制御部22は、ホスト40からの命令(書き込みコマンド)に基づいてメモリI/F25を制御し、データの書き込みをNANDメモリ30へ指示する。具体的には、制御部22は、複数の論理ページに対して予め定められた第1の順序でデータが配置され、かつ、論理ページ内の複数の物理ページに対して予め定められた第2の順序でデータが配置されるようにメモリI/F25を介してNANDメモリ30にデータ書き込みを指示する。図2には、論理ブロック200におけるデータの配置の順序の一例が示されている。データは、例えば論理ブロック200内に割り当てられたアドレス値の若い方から順に配置される。図2の例では、矢印A1,A2に示されるように、1論理ページ220内では、左から右にデータが順に配置される。また、1論理ブロック内では、矢印A3に示されるように、上の論理ページから下の論理ページに向かってデータが順に配置される。
この明細書では、論理ブロック200中の基準となる物理ページ(以下、基準物理ページという)231から上方向とは、プログラムの順序である第2の順序に対して逆順のことをいう。基準物理ページ231から下方向とは、第2の順序のことをいう。
また、mを自然数とし、基準物理ページ231を基準にして上方向にm物理ページ分とは、基準物理ページ231の上方向に隣接する物理ページからm物理ページ分の対象物理ページ233のことをいう。また、nを自然数とし、基準物理ページ231を基準にして下方向にn論理ページ分とは、基準物理ページ231の下方向に隣接する物理ページからn論理ページ分の対象論理ページ234のことをいう。
また、制御部22は、ホスト40からの命令(読み出しコマンド)に基づいてメモリI/F25を制御し、データの読み出しをNANDメモリ30へ指示する。
制御部22は、ホスト40から書き込みの要求を受信した場合、データバッファ23に蓄積されたユーザデータに対して、NANDメモリ30上の格納領域(メモリ領域)を決定する。すなわち、制御部22は、ユーザデータの書き込み先を管理する。ホスト40から受信したユーザデータの論理アドレスと該ユーザデータが格納されるNANDメモリ30上の格納領域を示す物理アドレスとの対応関係の一覧は管理情報の一例であるアドレス変換テーブルとして格納される。
また、制御部22は、ホスト40から読み出しの要求を受信した場合、読み出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換し、該物理アドレスからの読み出しをメモリI/F25へ指示する。
さらに、制御部22は、所定のタイミングであるいは所定のイベントが発生したときに、メモリI/F25を制御し、管理情報を管理情報保存用の論理ブロックに書き込むようにNANDメモリ30に指示する。また、制御部22は、例えばメモリシステム10の起動時にメモリI/F25を制御し、管理情報保存用の論理ブロックからの管理情報の読み出しをNANDメモリ30に指示する。
データバッファ23は、メモリコントローラ20がホスト40から受信したユーザデータを、それがNANDメモリ30へ記憶されるまで一時的に格納する。また、データバッファ23は、NANDメモリ30から読み出されたユーザデータを、それがホストI/F21を介してホスト40へ送信されるまで一時的に格納する。データバッファ23は、例えば、SRAM(Static Random Access Memory)またはDRAM(Dynamic Random Access Memory)などの汎用メモリである。
ホスト40からメモリコントローラ20へ送信されるユーザデータは、ホストI/F21を介して内部バス29に出力され、さらにデータバッファ23に格納される。符号化部/復号部24は、NANDメモリ30に格納されるデータを符号化して符号語を生成する。符号化部/復号部24は、符号化部(Encoder)26および復号部(Decoder)27を備える。符号化部26は、記憶するデータについて、BCH(Bose-Chaudhurl-Hocquenghem)符号などのパリティ(誤り訂正符号)を生成する。メモリシステムの使用目的に応じて、誤り訂正符号の訂正能力を変えてもよい。復号部27は、パリティを用いて読み出したデータの誤りを検出し、訂正する。
メモリI/F25は、制御部22による制御の下、NANDメモリ30にデータ書き込みを指示する。また、メモリI/F25は、制御部22による制御の下、NANDメモリ30にデータの読み出しを指示する。
NANDメモリ30に対するデータ書き込みは、ユーザデータを含むフレームを単位として指示される。図3は、フレームの構成の一例を示す図である。フレーム300は、ユーザデータを含むデータ部310と、フレーム300に関する情報を示すシグネチャ320と、データ部310に対して生成されるパリティ330と、を含む。シグネチャ320は、フレーム区切り情報と、前回フレーム指示情報と、を含む。フレーム区切り情報は、データの区切りであることを示す固定のビット列である。前回フレーム指示情報は、今回のフレーム300の前に同じ論理ブロック内でプログラムされたフレーム300のシグネチャ320の書き込み位置を示す情報である。一例では、シグネチャ320は1物理ページ分の大きさを有し、パリティ330は2物理ページ分の大きさを有する。パリティ330の大きさは、訂正アルゴリズムの種類によって変更可能である。また、パリティ330は、データ部310とシグネチャ320とに対して生成されてもよい。
制御部22は、データバッファ23に蓄積されたユーザデータに対して、シグネチャ320と、符号化部26で生成されたパリティ330とを付したフレーム300を生成する。また、制御部22は、このフレーム300を先頭から物理ページ230の大きさに分割する。そして、制御部22は、メモリI/F25を制御し、分割されたフレーム300を各物理ブロック210に並列に書き込む(プログラムする)ようにNANDメモリ30に指示する。なお、上述した、分割されたフレーム300の書き込みの指示は、論理ブロック200を構成する各物理ブロック210に対して同時に出されるが、各物理ブロック210での書き込み処理の状況によって、すべての物理ブロック210でフレーム300を構成するデータが同時に書き込まれるとは限らない。すなわち、ある物理ブロック210で、フレーム300を構成するデータが既に書き込まれている状態でも、別の物理ブロック210では、フレーム300を構成するデータがまだ書き込まれていなかったり、書き込み中の状態であったりする。
メモリシステム10は、メモリコントローラ20とNANDメモリ30とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。
メモリシステム10では、起動時に、NANDメモリ30内の所定の物理ブロックに書き込まれた管理情報が読み込まれる。上記したように、NANDメモリ30では、物理ブロックの先頭物理ページから順にデータが書き込まれる(プログラムされる)。そのため、NANDメモリ30では、起動時に、管理情報が読み込むために、最終プログラムページを探す処理が行われる。ここで、最終プログラムページは、論理ブロック内で先頭ページから最も離れたアドレス値を有する非消去ページである。この処理は、プログラムされた物理ページ(以下、プログラムページという)と消去状態の物理ページ(以下、消去ページという)との境界(以下、プログラム/消去境界ともいう)を探索するものであるので、以下では、境界探索処理という。境界探索処理では、ある物理ページがプログラム状態か消去状態かを判別する機能が使用される。これによって、論理ブロック内での最終プログラムページが特定される。
物理ページへの書き込み途中で、不正電源遮断が発生する場合もある。不正電源遮断は、ホスト40からの正式な電源断の指示に依らない不意に生じる電源遮断である。不正電源遮断として、例えば、瞬間的にメモリシステム10への電源の供給が切れる瞬断などがある。不正電源遮断が発生すると、ある論理ページでは、書き込み完了状態、書き込み途中状態および未書き込み状態の物理ページが順不同で並ぶ可能性がある。このような場合、論理ブロックでの最終プログラムページが曖昧になってしまう。
そこで、本実施形態では、制御部22は、境界探索処理を行う際に、メモリI/F25を制御し、論理ブロック内の最終ページ候補を見つける探索処理、最終ページ候補からの上方向チェック処理、最終ページ候補からの下方向チェック処理、の3種類に分類される処理を行うようにNANDメモリ30に指示を出す。ここで、最終ページ候補は、最終プログラムページの候補のことである。
探索処理では、例えば2分探索で最終ページ候補が取得される。上方向チェック処理では、最終ページ候補から上方向に存在する第1の範囲数の物理ページのうち、プログラムページの数が第1基準値以上であるかが判定される。第1の範囲数は、例えば1論理ページに含まれる物理ページの数とすることができる。また、第1基準値は、Xを自然数として、X+1ページ以上とすることができる。
図4は、実施形態による上方向チェック処理の概要を模式的に示す図である。この図に示される例では、最終ページ候補251が決定された後、最終ページ候補251から上方向に第1の範囲数の物理ページ253を対象として、上方向チェック処理が実行される。第1の範囲数は、例えば1論理ページ分の物理ページの数である。上方向チェック処理では、制御部22は、第1の範囲数の物理ページ253のうち、プログラムページの数が第1基準値以上存在するかを判定する。制御部22は、第1の範囲数の物理ページ253のうち、プログラムページの数が第1基準値以上存在する場合には、最終ページ候補251から上方向はプログラム状態であるとみなす。また、制御部22は、第1の範囲数の物理ページ253のうち、プログラムページの数が第1基準値未満存在する場合には、最終ページ候補251から上方向は消去状態であるとみなし、最終ページ候補251は最終プログラムページではないと判定し、つぎの探索処理の範囲を補正する。
上方向チェック処理でプログラムページの数が第1基準値以上であると判定された場合に、下方向チェック処理が実行される。下方向チェック処理では、最終候補ページから下方向に存在する第2の範囲数の物理ページのうち、プログラムページの数が第2基準値以下であるかが判定される。第2の範囲数は、例えば1論理ページに含まれる物理ページの数とすることができる。また、第2基準値は、たとえば、Xを自然数として、Xとすることができる。
図5は、実施形態による下方向チェック処理の概要を模式的に示す図である。この図に示される例では、最終ページ候補251から下方向に第2の範囲数の物理ページ254を対象として、下方向チェック処理が実行される。第2の範囲数は、例えば1論理ページ分の物理ページの数である。下方向チェック処理では、制御部22は、第2の範囲数の物理ページ254のうち、プログラムページの数が第2基準値以下存在するかを判定する。制御部22は、第2の範囲数の物理ページ253のうち、プログラムページの数が第2基準値以下存在する場合には、最終ページ候補251から下方向に最終プログラムページが存在するものと判定する。このとき、第2の範囲数の物理ページ254内のプログラム状態と判別された物理ページのうち、最終ページ候補251から最も離れたアドレス値を有する物理ページが最終プログラムページとされる。また、制御部22は、第2の範囲数の物理ページ253のうち、プログラムページの数が第2基準値より多く存在する場合には、最終ページ候補251から下方向の物理ページはプログラム状態であるとみなす。つまり、制御部22は、第2の範囲数の物理ページ254の中には最終ページはないと判定し、つぎの探索処理の範囲を補正する。このようにして、制御部22は、上方向チェック処理と下方向チェック処理の結果から論理ブロック内の最終プログラムページを特定する。
なお、上記の判定で、プログラムページの数が、最終ページ候補から連続して第1基準値以上あるいは第2基準値以下とはしていない。これは、上記したように管理情報の書き込みの最中での不正電源遮断の発生によって、書き込み完了状態、書き込途中状態および未書き込み状態の物理ページが順不同で並ぶ場合を想定しているためである。
また、上方向チェック処理の第1基準値および下方向チェック処理の第2基準値は、パリティで訂正可能な最大の物理ページ数以下とすることができる。
さらに、下方向チェック処理でプログラムページの数が訂正可能な最大の物理ページ数よりも多い場合、すなわち、訂正能力を超える場合には、データを読み出すことができない。このような場合には、最終ページ候補から下方向に、実際の最終プログラムページが存在する可能性がある。そこで、このような場合には、つぎに行われる探索処理の探索範囲が、現在の最終ページ候補から状態を巻き戻らせない方向となるように、補正される。
図6は、実施形態によるメモリシステムの起動時の処理手順の一例を示すフローチャートであり、図7は、実施形態による境界探索処理の手順の一例を示すフローチャートである。メモリシステム10が起動されると、制御部22による制御の下、メモリI/F25は、NANDメモリ30に境界探索処理を実行させる(ステップS11)。境界探索処理は、プログラム/消去境界を探索する処理、すなわち、論理ブロック内での最終プログラムページを特定する処理である。
境界探索処理によって最終プログラムページが特定されると、つぎにメモリI/F25は、制御部22による制御の下、NANDメモリ30に最終有効ページ特定処理を実行させる(ステップS12)。最終有効ページ特定処理では、制御部22は、最終プログラムページを、正常にフレームが書き込まれたと仮定した場合に論理ブロックの先頭ページから最も離れたアドレス値を有する物理ページであると仮定している。制御部22は、最終プログラムページからシグネチャを取得し、このシグネチャを有するフレームのデータ部を読み出す。そして、制御部22は、データ部を読み出せない場合には、パリティを用いて訂正を施す。データ部を読み出せた場合またはパリティを用いてデータ部を訂正できた場合には、制御部22は、境界探索処理によって特定されていた最終プログラムページを最終有効ページと特定する。また、シグネチャを取得できなかった場合、あるいはパリティを用いてもデータ部を訂正できない場合には、制御部22は、論理ブロック内で、このフレームのつぎに先頭ページから離れたアドレス値を有するフレームのシグネチャについて、同様の処理を行う。制御部22は、最終有効ページを特定するまで上記の処理を繰り返す。制御部22は、最終有効ページ特定処理においては、リニアサーチによって、シグネチャを含む物理ページを検索する。
その後、制御部22は、特定された最終有効ページを含むフレームを読み出し、メモリコントローラ20によるメモリシステム10の起動処理が行われる(ステップS13)。以上で、処理が終了する。
つぎに、ステップS11の境界探索処理の詳細について、図7のフローチャートを参照しながら説明する。メモリI/F25は、2分探索を用いてデータを読み出す論理ブロック内の最終ページ候補を取得する(ステップS31)。ついで、メモリI/F25は、最終ページ候補から上方向に存在する第1の範囲数の物理ページを上方向チェック処理の範囲と決定する(ステップS32)。第1範囲数として、例えば1論理ページ分の物理ページの数とすることができる。その後、メモリI/F25は、上方向チェック処理の範囲内に存在するプログラムページの数が第1基準値以上であるかを判定する(ステップS33)。例えば、第1基準値は、X+1とされる。
上方向チェック処理の範囲内に存在するプログラムページの数が第1基準値以上である場合(ステップS33でYesの場合)には、メモリI/F25は、最終ページ候補から下方向に存在する第2の範囲数の物理ページを下方向チェック処理の範囲とする(ステップS34)。第2の範囲数として、例えば1論理ページ分の物理ページの数とすることができる。その後、メモリI/F25は、下方向チェック処理の範囲内に存在するプログラムページの数が第2基準値以下であるかを判定する(ステップS35)。
下方向チェック処理の範囲内に存在するプログラムページの数が第2基準値以下である場合(ステップS35でYesの場合)には、メモリI/F25は、下方向チェック処理の範囲内に最終プログラムページが存在するものと判定する。そして、メモリI/F25は、下方向チェック処理の範囲内で最終ページ候補から最も離れたアドレス値を有するプログラム状態にあると判別された物理ページを最終プログラムページと特定する(ステップS36)。そして、処理が図6のフローチャートへと戻る。
一方、ステップS33で第1の範囲数の物理ページのうち、プログラムページの数が第1基準値未満である場合(ステップS33でNoの場合)には、メモリI/F25は、第1の範囲は消去状態であると判定する。つまり、メモリI/F25は、最終ページ候補は最終プログラムページではないと判定し(ステップS37)、2分探索の探索範囲を補正する(ステップS38)。そして、処理はステップS31に戻る。
また、ステップS35で下方向チェック処理の範囲内に存在するプログラムページの数が第2基準値よりも大きい場合(ステップS35でNoの場合)には、メモリI/F25は、下方向チェック処理の範囲はプログラム状態であると判定する。この場合にも、ステップS37へと処理が移る。
図8は、実施形態による境界探索処理で決定される最終プログラムページの一例の場合を示す図である。図に示される例では、論理ブロック200には、プログラムページ261と、消去ページ266と、不良物理ブロック211,212と、が含まれている。また、ここでは、Xを2とする。つまり、第1基準値は3、第2基準値は2とする。さらに、この図では、パリティの図示が省略されている。
図8(a)に示される例では、図7のステップS31の探索処理によって、不良物理ブロック212中の不良物理ページが最終ページ候補271として取得されている。なお、この最終ページ候補271のアドレス値と実際の最終プログラムページ275のアドレス値との差は、1論理ページ分のアドレス値である。
この最終ページ候補271について、上方向チェック処理が実行されるとする。図8(b)に示される例では、上方向チェック処理の範囲281は、例えば最終ページ候補271から上方向に1論理ページ分である。この上方向チェック処理の範囲281には、3ページ分のプログラムページ261aと、2ページ分の不良物理ページ211a,212bが存在する。この上方向チェック処理の結果、プログラムページは5ページであり、第1基準値である3ページ以上のとなる。この時、制御部22は、最終ページ候補271について、さらに下方向チェック処理を実行する。
図8(c)に示される例では、下方向チェック処理の範囲282は、例えば最終ページ候補271から下方向に1論理ページ分である。この下方向チェック処理の範囲282には、2ページ分の不良物理ページ211b,212bが存在する。この下方向チェック処理の結果、プログラム状態であるとされる物理ページは2ページであり、第2基準値(=2)以下となる。この時、制御部22は、下方向チェック処理の範囲282に最終プログラムページが存在するものと判定する。そして、制御部22は、下方向チェック処理の範囲282中で最終ページ候補271から最も離れたアドレス値を有するプログラム状態と判別された物理ページ、すなわち誤判定された不良物理ページ212bを最終プログラムページであると特定する。すなわち、メモリI/F25は、不良物理ページ212bと隣接する消去ページ266aとの間がプログラム/消去境界291であると特定する。
この場合、図8(c)に示されるように、特定された最終プログラムページ212bは、実際のプログラム/消去境界275とは異なっている。しかし、実際のプログラム/消去境界275は、特定された最終プログラムページ212bを含む論理ページから3論理ページ以内に存在している。つまり、本実施形態により、最終有効ページ特定処理におけるリニアサーチの検索範囲を狭めることができ、起動処理に要する時間の最大値を抑えることができる。
なお、上述した説明では、境界探索で2分探索を用いているが、2分探索の代わりとして、例えば、8分探索などのN分探索(Nは2以上の自然数)が用いられてもよい。
以上のように、実施形態では、論理ページ内で最終ページ候補を取得した後、最終ページ候補から上方向に存在する第1の範囲数の物理ページのうち、プログラムページが第1基準値以上あるかを判定する上方向チェック処理を行う。上方向チェック処理で第1条件を満たす場合に、最終ページ候補から下方向に存在する第2の範囲数の物理ページのうち、プログラムページが第2基準値以下であるかを判定する下方向チェック処理を行う。下方向チェック処理で第2条件を満たす場合に、第2の範囲数の物理ページのうちで最終ページ候補251から最も離れたアドレス値を有するプログラムページを最終プログラムページとする。このように、最終ページ候補についての最終チェックに冗長性を持たせることで、最終ページ候補が不良物理ページとなった場合でも、一定の精度で最終プログラムページを特定することができる。その結果、非消去ページが含まれる論理ブロックで、最終プログラムページを効率的に検索することができるという効果を有する。
また、論理ブロック内に不良物理ページが含まれている場合であっても、境界探索処理で、実際の最終プログラムページから3論理ページの範囲内に最終プログラムページを確定させることができる。つまり、確定された最終プログラムページから3論理ページの範囲内に実際の最終プログラムページが存在する。そのため、最終有効ページ特定処理でのリニアサーチの検索範囲を狭めることができ、起動処理に要する時間の最大値を抑えることができる。
さらに、実施形態による境界探索処理によって、不良物理ページが含まれない通常のケースでの検索時間を大きく変えずに、最終プログラムページの探索を行うことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…メモリシステム、20…メモリコントローラ、21…ホストI/F、22…制御部、23…データバッファ、24…符号化部/復号部、25…メモリI/F、26…符号化部、27…復号部、29…内部バス、30…NANDメモリ、40…ホスト。

Claims (10)

  1. 不揮発性メモリと、
    前記不揮発性メモリへのデータのアクセスを制御するメモリコントローラと、
    を備え、
    前記不揮発性メモリ内にはデータの消去の単位である物理ブロックが複数存在し、
    前記物理ブロック内にはデータの読み書きの単位である物理ページが複数存在し、
    前記メモリコントローラは、
    複数の前記物理ブロックをまとめて論理ブロックとし、
    複数の前記物理ページのうち、前記物理ブロック内における相対的な位置が同じものをまとめて論理ページとし、
    複数の前記論理ページに対して予め定められた第1の順序でデータが配置され、かつ、前記論理ページ内の複数の前記物理ページに対して予め定められた第2の順序でデータが配置されるように前記不揮発性メモリにデータ書き込みを指示し、
    前記不揮発性メモリから、前記論理ブロック内で最後にデータが書き込まれた物理ページの候補である最終ページ候補を特定し、
    前記最終ページ候補から前記第2の順序とは逆順に存在する第1の範囲数の前記物理ページのうち、プログラムされた前記物理ページの数が第1基準値以上であるかを判定する上方向チェック処理を実行し、
    前記最終ページ候補から前記第2の順序と同じ順に存在する第2の範囲数の前記物理ページのうち、プログラムされた前記物理ページの数が第2基準値以下であるかを判定する下方向チェック処理を実行し、
    前記上方向チェック処理および前記下方向チェック処理の結果から前記論理ブロック内で最後にデータが書き込まれた物理ページを特定する、
    メモリシステム。
  2. 前記メモリコントローラは、前記上方向チェック処理でプログラムされた物理ページの数が前記第1基準値以上であり、かつ前記下方向チェック処理でプログラムされた前記物理ページの数が前記第2基準値以下である場合に、前記最終ページ候補から前記第1の範囲数の前記物理ページのうち、最も前記第2の順序と同じ順に存在するプログラムされた物理ページを最後にデータが書き込まれた前記物理ページであると特定する請求項1に記載のメモリシステム。
  3. 前記メモリコントローラは、前記上方向チェック処理でプログラムされた前記物理ページの数が前記第1基準値未満である場合には、前記最終ページ候補の探索範囲を補正して、新たな前記最終ページ候補を取得する請求項1に記載のメモリシステム。
  4. 前記メモリコントローラは、前記下方向チェック処理でプログラムされた前記物理ページの数が前記第2基準値より大きい場合には、前記最終ページ候補の探索範囲を補正して、新たな前記最終ページ候補を取得する請求項1または3に記載のメモリシステム。
  5. 前記メモリコントローラは、N分探索(Nは2以上の自然数)によって前記最終ページ候補を取得する請求項1から4のいずれか1つに記載のメモリシステム。
  6. 前記メモリコントローラは、前記論理ブロックに書き込むデータに対して訂正符号を生成し、前記データに前記訂正符号を付して前記論理ブロックに書き込み、
    前記第1基準値および前記第2基準値は、前記訂正符号の誤り訂正能力によって訂正可能な範囲の物理ページ数に設定される請求項1から5のいずれか1つに記載のメモリシステム。
  7. 前記第1基準値は、3ページであり、
    前記第2基準値は、2ページである請求項6に記載のメモリシステム。
  8. 前記第1の範囲数は、1論理ページに含まれる前記物理ページの数であり、
    前記第2の範囲数は、1論理ページに含まれる前記物理ページの数である請求項1から7のいずれか1つに記載のメモリシステム。
  9. 前記不揮発性メモリは、NAND型フラッシュメモリである請求項1に記載のメモリシステム。
  10. 不揮発性メモリ内に複数存在する、データの消去の単位である物理ブロックを複数まとめて論理ブロックとし、
    前記物理ブロック内に複数存在する、データの読み書きの単位である物理ページのうち、前記物理ブロック内における相対的な位置が同じものをまとめて論理ページとし、
    複数の前記論理ページに対して予め定められた第1の順序でデータが配置され、かつ、前記論理ページ内の複数の前記物理ページに対して予め定められた第2の順序でデータが配置されるように前記不揮発性メモリにデータ書き込みを命令し、
    前記不揮発性メモリから、前記論理ブロック内で最後にデータが書き込まれた物理ページの候補である最終ページ候補を特定し、
    前記最終ページ候補から前記第2の順序とは逆順に存在する第1の範囲数の前記物理ページのうち、プログラムされた前記物理ページの数が第1基準値以上であるかを判定する上方向チェック処理を実行し、
    前記最終ページ候補から前記第2の順序と同じ順に存在する第2の範囲数の前記物理ページのうち、プログラムされた前記物理ページの数が第2基準値以下であるかを判定する下方向チェック処理を実行し、
    前記上方向チェック処理および前記下方向チェック処理の結果から前記論理ブロック内で最後にデータが書き込まれた物理ページを特定する、メモリシステムの制御方法。
JP2018132446A 2018-07-12 2018-07-12 メモリシステムおよびその制御方法 Active JP7030636B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018132446A JP7030636B2 (ja) 2018-07-12 2018-07-12 メモリシステムおよびその制御方法
US16/372,831 US11593007B2 (en) 2018-07-12 2019-04-02 Memory system and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018132446A JP7030636B2 (ja) 2018-07-12 2018-07-12 メモリシステムおよびその制御方法

Publications (2)

Publication Number Publication Date
JP2020009370A JP2020009370A (ja) 2020-01-16
JP7030636B2 true JP7030636B2 (ja) 2022-03-07

Family

ID=69139114

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018132446A Active JP7030636B2 (ja) 2018-07-12 2018-07-12 メモリシステムおよびその制御方法

Country Status (2)

Country Link
US (1) US11593007B2 (ja)
JP (1) JP7030636B2 (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007119267A1 (ja) 2006-03-13 2007-10-25 Matsushita Electric Industrial Co., Ltd. フラッシュメモリ用のメモリコントローラ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4729062B2 (ja) 2008-03-07 2011-07-20 株式会社東芝 メモリシステム
US8726126B2 (en) * 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US9189389B2 (en) * 2013-03-11 2015-11-17 Kabushiki Kaisha Toshiba Memory controller and memory system
IN2014MU00845A (ja) 2014-03-13 2015-09-25 Sandisk Technologies Inc
US10977186B2 (en) * 2017-11-21 2021-04-13 Micron Technology, Inc. Last written page searching

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007119267A1 (ja) 2006-03-13 2007-10-25 Matsushita Electric Industrial Co., Ltd. フラッシュメモリ用のメモリコントローラ

Also Published As

Publication number Publication date
US11593007B2 (en) 2023-02-28
US20200019314A1 (en) 2020-01-16
JP2020009370A (ja) 2020-01-16

Similar Documents

Publication Publication Date Title
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9075740B2 (en) Memory system
JP4524309B2 (ja) フラッシュメモリ用のメモリコントローラ
JP6258399B2 (ja) 半導体装置
US8694748B2 (en) Data merging method for non-volatile memory module, and memory controller and memory storage device using the same
US8200892B2 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
US8316208B2 (en) Memory controller, flash memory system with memory controller, and method of controlling flash memory
JP2008146254A (ja) 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
US9778862B2 (en) Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus
JP2008251154A (ja) 不揮発性半導体記憶装置
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
JP7030636B2 (ja) メモリシステムおよびその制御方法
JP4710918B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4332132B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US9208863B1 (en) Memory system and method of controlling memory system
JP2012068764A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US8503241B2 (en) Electronic apparatus and data reading method
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP2008112455A (ja) メモリカード
JP4641034B2 (ja) 不揮発性記憶システム
JP2012037971A (ja) メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2006318303A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4245594B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP2011048852A (ja) 不揮発性記憶システム

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180905

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210317

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220119

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220222

R151 Written notification of patent or utility model registration

Ref document number: 7030636

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151