JP2022023584A - メモリシステム及び制御方法 - Google Patents
メモリシステム及び制御方法 Download PDFInfo
- Publication number
- JP2022023584A JP2022023584A JP2020126616A JP2020126616A JP2022023584A JP 2022023584 A JP2022023584 A JP 2022023584A JP 2020126616 A JP2020126616 A JP 2020126616A JP 2020126616 A JP2020126616 A JP 2020126616A JP 2022023584 A JP2022023584 A JP 2022023584A
- Authority
- JP
- Japan
- Prior art keywords
- block group
- parity
- block
- word lines
- data
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- Memory System (AREA)
Abstract
【課題】メモリ領域を有効利用できる。【解決手段】メモリシステムは、不揮発メモリと、不揮発メモリに対するデータの書き込み、読出し及び消去を制御するコントローラと、を備える。不揮発メモリは、複数のメモリセルを有し、データの書き込み及び読出しの単位であるページと、複数のページを有するブロックと、を含む。コントローラは、複数のブロックを含む第1ブロック群と、複数の第1ブロック群を含む第2ブロック群と、を管理する。第2ブロック群内で発生したエラーを第2ブロック群内の複数の第1ブロック群間のデータで訂正するための第1パリティと、第1ブロック群内で発生したエラーを第1ブロック群内のデータで訂正するための第2パリティと、を生成する。【選択図】図5
Description
本発明の一実施形態は、メモリシステム及び制御方法に関する。
NAND型フラッシュメモリを用いたSSD(Solid State Drive)等のメモリシステムでは、ページ単位で読み書きが行われ、ページよりも大きいサイズであるブロック単位で消去が行われる。メモリシステムではNAND型フラッシュメモリの記憶領域を有効利用するために、ガベージコレクションと呼ばれる処理が行われる。ガベージコレクションは、複数のブロック内に格納されている有効データを、1以上のより少数の空き状態のブロックにコピーする動作を含む。ガベージコレクションは、複数のブロックを単位として行われることが多い。ガベージコレクションは、コンパクションとも呼ばれることがある。
しかしながら、ガベージコレクションの対象となる複数のブロック内の有効データをコピーするには、NAND型フラッシュメモリ内に、対象となる複数のブロックと同サイズ程度の空き状態の記憶領域が必要である。ガベージコレクションのために、NAND型フラッシュメモリの記憶領域をユーザデータ用に利用できないことが発生しうる。
そこで、本発明の一実施形態では、メモリの記憶領域を有効利用できるメモリシステム及び制御方法を提供するものである。
上記の課題を解決するために、本発明の一実施形態によれば、不揮発メモリと、
前記不揮発メモリに対するデータの書き込み、読出し及び消去を制御するコントローラと、を備え、
前記不揮発メモリは、
複数のメモリセルを有し、データの書き込み及び読出しの単位であるページと、
複数のページを有するブロックと、を含み、
前記コントローラは、
複数のブロックを含む第1ブロック群と、複数の第1ブロック群を含む第2ブロック群と、を管理し、
前記第2ブロック群内で発生したエラーを前記第2ブロック群内の前記複数の第1ブロック群間のデータで訂正するための第1パリティと、前記第1ブロック群内で発生したエラーを前記第1ブロック群内のデータで訂正するための第2パリティと、を生成する、メモリシステムが提供される。
前記不揮発メモリに対するデータの書き込み、読出し及び消去を制御するコントローラと、を備え、
前記不揮発メモリは、
複数のメモリセルを有し、データの書き込み及び読出しの単位であるページと、
複数のページを有するブロックと、を含み、
前記コントローラは、
複数のブロックを含む第1ブロック群と、複数の第1ブロック群を含む第2ブロック群と、を管理し、
前記第2ブロック群内で発生したエラーを前記第2ブロック群内の前記複数の第1ブロック群間のデータで訂正するための第1パリティと、前記第1ブロック群内で発生したエラーを前記第1ブロック群内のデータで訂正するための第2パリティと、を生成する、メモリシステムが提供される。
以下、図面を参照して、メモリシステムの実施形態について説明する。以下では、メモリシステムの構成部分を中心に説明するが、メモリシステムには、図示又は説明されていない構成部分や機能が存在しうる。以下の説明は、図示又は説明されていない構成部分や機能を除外するものではない。
図1は一実施形態によるメモリシステム1の概略構成を示すブロック図である。図1のメモリシステム1は、NAND型フラッシュメモリ(以下、単にNANDメモリと称する)2を用いたSSDの構成を示している。なお、図1のメモリシステム1は、SSD以外の種々のシステム、例えばSDカード、USB(Universal Serial Bus)メモリ、UFS(Universal Flash Storage)、MMC(Multi Media Card)等にも適用可能である。
図1のメモリシステム1は、NANDメモリ2と、コントローラ3とを備えている。NANDメモリ2の具体的な構成については後述する。
コントローラ3は、NANDバス4によってNANDメモリ2に接続され、NANDメモリ2を制御する。コントローラ3は、ホストバス5によってホスト機器6に接続されうる。コントローラ3は、ホストバス5を介してホスト機器6から受信した命令に応答して、NANDバス4を介してNANDメモリ2にアクセスする。ホスト機器6は、例えばパーソナルコンピュータ又はサーバ等の電子機器である。ホストバス5は、例えばPCIe(登録商標)、UFS、Ethernet(登録商標)などのインタフェース規格に従ったバスである。NANDバス4は、Toggle IFなどのインタフェース規格に従ったバスである。すなわち、コントローラ3は、ホスト機器6及びNANDメモリ2との間で、それぞれのインタフェース規格に準じて信号の送受信を行う。
コントローラ3は、ホストインタフェース回路(ホスト I/F)11、内蔵メモリ(RAM)12、プロセッサ(CPU)13、バッファメモリ14、NANDインタフェース回路(NAND I/F)15、及びECC(Error Checking and Correcting)回路16を備えている。
ホストインタフェース回路11は、ホストバス5を介してホスト機器6と接続され、ホスト機器6から受信した命令及びデータを、それぞれCPU13及びバッファメモリ14に転送する。またホストインタフェース回路11は、CPU13の命令に応答して、バッファメモリ14内のデータをホスト機器6へ転送する。
CPU13は、コントローラ3の動作を制御する。例えばCPU13は、ホスト機器6から書き込み命令を受信した際には、それに応答して、NANDインタフェース回路15に対して書き込み命令を発行する。CPU13は、読み出し及び消去の際には、それぞれに応答して、NANDインタフェース回路15に対して読み出し命令及び消去命令を発行する。またCPU13は、NANDメモリ2を管理するための様々な処理を実行する。この様々な処理は、ガベージコレクション、リフレッシュ、及びウェアレベリングを含む。なお、以下で説明するコントローラ3の動作はファームウェアをCPU13が実行することで実現されても良いし、またはハードウェアで実現されても良い。
NANDインタフェース回路15は、NANDバス4を介してNANDメモリ2と接続され、NANDメモリ2との通信を司る。そしてNANDインタフェース回路15は、CPU13から受信した命令に基づき、種々の信号をNANDメモリ2へ送信し、またNANDメモリ2から受信する。バッファメモリ14は、書き込みデータや読み出しデータを一時的に記憶する。
RAM12は、例えばDRAMやSRAM等の半導体メモリであり、CPU13の作業領域として使用される。そしてRAM12は、CPU13が実行するファームウェアや、NANDメモリ2を管理するための各種の管理テーブル等を記憶する。
ECC回路16は、NANDメモリ2に格納されるデータに関する誤り検出及び誤り訂正処理を行う。ECC回路16は、符号化器16aと復号器16bを有する。符号化器16aは、データの書き込みに伴って誤り訂正符号を生成して、これを書き込みデータに付加する。復号器16bは、NANDメモリ2から読み出したデータに含まれるエラービットを誤り訂正符号により訂正する。
符号化器16aが生成する誤り訂正符号は、ページ内のデータを利用した誤り訂正を行うための符号(以下、ページ内符号)と、複数ページのデータを利用したページ間の誤り訂正を行うための符号(以下、ページ間符号)とを含んでいる。ページ内符号は、例えば、BCH(Bose Chaudhurl Hocquenghem)符号やLDPC(Low Density Parity Check)符号である。ページ間符号は、例えば、リードソロモン(RS:Read Solomon)符号やEX-OR演算による符号である。以下では、ページ間符号を総称してパリティと呼ぶ。
符号化器16aは、後述するように、第1パリティ生成部、第2パリティ生成部及び第3パリティ生成部として機能する。第1パリティ生成部は、後述するスーパーブロック内のワード線に接続されたすべてのページ群に基づいて第1パリティP1を生成する。第2パリティ生成部は、後述するメディアブロック内のすべてのワード線に接続されたすべてのページ群に基づいて、第2パリティP2を生成する。第3パリティ生成部は、メディアブロック内の複数のワード線それぞれに接続されるページ群のそれぞれに基づいて、ワード線ごとに第3パリティP3を生成する。
次に、NANDメモリ2の構成について説明する。図1に示すように、NANDメモリ2は、メモリセルアレイ21、ロウデコーダ22、ドライバ回路23、カラム制御回路24、レジスタ群25、及びシーケンサ26を備える。
メモリセルアレイ21は、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルを含む複数のブロックを備えている。メモリセルアレイ21内の構成は後に詳述する。メモリセルアレイ21に対するデータの読み書きは、コントローラ3により制御される。
ロウデコーダ22は、ブロックBLK0~BLK3のいずれかを選択し、更に選択したブロックBLKにおけるロウ方向を選択する。ドライバ回路23は、選択されたブロックBLKに対して、ロウデコーダ22を介して電圧を供給する。
カラム制御回路24は、データの読み出し時には、メモリセルアレイ21から読み出されたデータをセンスし、必要な演算を行う。そして、必要な演算後のデータは、コントローラ3に出力される。カラム制御回路24は、データの書き込み時には、コントローラ3から受信された書き込みデータに対応する信号を、メモリセルアレイ21に転送する。
レジスタ群25は、何れも種々の情報を記憶するアドレスレジスタやコマンドレジスタなどを有する。アドレスレジスタは、コントローラ3から受信したアドレスを記憶する。コマンドレジスタは、コントローラ3から受信したコマンドを記憶する。
シーケンサ26は、レジスタ群25に記憶された種々の情報に基づき、NANDメモリ2の動作を制御する。
次に、メモリセルアレイ21の具体的な構成について説明する。メモリセルアレイ21に対しては、ページを単位としてデータの書き込み及び読み出しが行われる。ページのサイズは、例えば16kバイト(131072ビット)である。なお、ページのサイズはこの例に限定されず任意である。NANDメモリ2では、データの上書きができないため、書き込みを行うには、事前にデータの消去を行わなければならない。データの消去は、複数のページを含むブロック単位で行う。本実施形態では、複数のワード線に接続された複数のページを物理ブロックと呼ぶ。
図2はメモリセルアレイ21内の物理ブロックを説明する図である。図2の例では、32本のワード線WL0~WL31が接続される複数のページ(ページ群)を一つの物理ブロックPBとしている。一つの物理ブロックPBに含まれるワード線WLの数は、32に限定されない。
図2に示すように、本実施形態では、8つの物理ブロックPBで1つのメディアブロック(第1ブロック群)MBを構成している。また、4つのメディアブロックMB0~MB3で1つのスーパーブロック(第2ブロック群)SBを構成している。スーパーブロックSBとメディアブロックMBの詳細は後述する。図2では、メディアブロックMB0が物理ブロックPB0~PB7を含み、メディアブロックMB1が物理ブロックPB8~PB15を含み、メディアブロックMB2が物理ブロックPB16~PB23を含み、メディアブロックMB3が物理ブロックPB24~PB31を含む例を示している。
図3は一つの物理ブロックPBの具体的構成の一例を示す回路図である。図3は、32本のワード線WL0~WL31が接続される物理ブロックPBの回路構成を示している。図3において、1本のワード線WLと複数のビット線BLに接続される複数のメモリセルによる構成がページPGであり、複数のワード線WL0~WL31に接続される複数のページPGによる構成が物理ブロックPBである。
図3に示すように、複数のメモリセルが縦続接続されたNANDストリングNSが例えばm個(mは例えば16k)、ワード線WL0~WL31が延びる方向(以下、ワード線方向)に配置されている。各NANDストリングNSの一端側に選択トランジスタST1が接続され、他端側に選択トランジスタST2が接続されている。各選択トランジスタST1のドレインには、対応するビット線BL[0:m-1]が接続されている。選択トランジスタST1のゲートに入力されるゲート信号SGDは、ワード線方向に並ぶすべての選択トランジスタST1をオン又はオフする。選択トランジスタST2のゲートに入力されるゲート信号SGSは、ワード線方向に並ぶすべての選択トランジスタST2をオン又はオフする。
本実施形態では、1つの物理ブロックPBを単位としてデータの消去を行うのではなく、複数の物理ブロックPBを含む1つのメディアブロックMB0~MB3を単位としてデータの消去を行う。メディアブロックは論理ブロックとも呼ばれる。図2の例では、8つの物理ブロックPBで1つの論理ブロック(メディアブロックMB)を構成している。
図2に示すように、1つのメディアブロックMBは、8つの物理ブロックPBを有するが、複数チップに属する複数の物理ブロックPBで構成することができる。図4はメディアブロックMB0内の物理ブロックPB0~PB7とチップとの関係の一例を示す図である。図4に示すように、1つのメディアブロックMB0は、例えば4つのチップに跨って構成することができる。また、各チップには、コントローラ3が一括してアクセス可能な複数のプレーンPLを設けることができる。図4の例では、4つのチップのそれぞれに設けられるプレーンPL0に属する1つの物理ブロックPB及びプレーンPL1に属する1つの物理ブロックPBが、1つのメディアブロックMBに含まれている。これにより、コントローラ3は、各チップ内の2つの物理ブロックPBに対して一括してアクセスすることができる。コントローラ3は、複数のチャネルを介して複数のチップに並行してアクセスすることができる。各チャネルにはそれぞれ、複数の物理ブロックPBが接続される。メディアブロックMBは、複数のチャネルのうち何れか1つのチャネルに接続される物理ブロックPBを所定数のチャネル分含んでいる。これにより、コントローラ3は、複数のチャネルのそれぞれを介して接続される複数のチップを含むメディアブロックMBに対してアクセスすることができる。
本実施形態では、図2に示すように、複数のメディアブロックMB0~MB3により仮想的なメディアブロックMB(以下、スーパーブロックSBと呼ぶ)を構成している。スーパーブロックSBを設ける理由は、ブロック故障に対応できるパリティ構成を維持しつつ、ユーザデータに対するパリティの割合を減らすためである。このため、スーパーブロックSB単位でパリティ(第1パリティP1)が設けられる。第1パリティは、スーパーブロックSB内で発生したエラーをスーパーブロックSB内のメディアブロックMB間のデータで訂正するためのパリティである。
より具体的には、1つのスーパーブロックSBごとに、2ページ分のパリティ(第1パリティP1)を設けることで、2消失訂正を行うことができる。
ところが、スーパーブロックSBを単位として、メディアブロックMB間のエラー訂正用のパリティ(第1パリティP1)を設ける場合、以下のような課題が発生しうる。あるスーパーブロックSBを対象としてガベージコレクションを行う際に、最大でスーパーブロックSBのサイズの空き状態のNANDメモリ2の記憶領域(メモリ領域)を予め用意しておき、そのメモリ領域にスーパーブロックSB内の少なくとも全ての有効データがコピーされる。コピーするデータにエラーが含まれる場合は、パリティ(第1パリティP1)を用いてそのエラーを訂正することが可能である。コピーに成功したことが確認された後、ガベージコレクションの対象のスーパーブロックSBは解放される。すなわち、空きメモリ領域が十分にないとガベージコレクションを行えないため、最大でスーパーブロックSBのサイズの空きメモリ領域を予め用意しておく必要がある。これを解決するために、本実施形態では、スーパーブロックSBを構成するメディアブロックMBごとにパリティ(第2パリティP2)を設けている。第2パリティP1は、メディアブロックMB内で発生したエラーをメディアブロックMB内のデータで訂正するためのパリティである。
図5は本実施形態によるスーパーブロックSB内のパリティの配置場所を示す図である。図5は、スーパーブロックSB内の各メディアブロックMBを偶数ワード線WLと奇数ワード線WLに分けて、偶数ワード線WLに接続された各ページ群(RSフレームとも呼ぶ)でパリティを生成するとともに、奇数ワード線WLに接続されたRSフレームでパリティを生成する例を示している。このように、偶数ワード線WLと奇数ワード線WLに分けてパリティを生成する理由は、NANDメモリの不良モードである隣接ワード線WLの短絡に対する対策のためである。偶数ワード線と奇数ワード線で別々にRSフレームを用意して、各RSフレームで別個にパリティを生成することで、隣接ワード線WLの短絡不良を検出及び救済可能にしている。
なお、偶数ワード線WLと奇数ワード線WLに分けずに、スーパーブロックSB内の全ワード線WLを対象としてパリティを生成する変形例も考えられるが、以下では、偶数ワード線WLと奇数ワード線WLに分けてパリティを生成する例を説明する。
図5は、4つのメディアブロックMBで構成されるスーパーブロックSBにおいて、メディアブロックMBごとに、偶数番目の16本のワード線WL0~WL30に接続される16個のRSフレームを示している。しかし実際には、上述したように、奇数番目の16本のワード線WL1~WL31に接続される16個の別のRSフレームが存在する。奇数ワード線WL用のRSフレーム内のパリティ配置は、図5と同様であるため、以下では、偶数ワード線WL用のRSフレーム内のパリティ配置について主に説明する。
図5には、各メディアブロックMBの各ワード線WLに、8つのページが接続されている例が示されている。各メディアブロックMB内には、各ワード線WLに接続された8つのページを含むページ群がワード線WLごとに16個設けられている。このため、各メディアブロックMBに含まれるRSフレームには、8×16=128個のページが存在する。そのうちの2つのページは、メディアブロックMB内においてページ間のエラー訂正を行うためのパリティ(第2パリティP2)を記憶する領域である。このパリティの一具体例は、リードソロモン符号である。2ページ分のリードソロモン符号を設けることで、最大2ページ分のエラー訂正を行うことができる。ここで、各メディアブロックMBの各ワード線WLの数は、33本以上であってもよい。例えば、1つのメディアブロックMBのワード線WLの数が64本の場合、1つのメディアブロックMBには、偶数と奇数それぞれの2組の16本のワード線WLと、この各ワード線WLに接続される8つのページと、によるRSフレームが4つ含まれる。
なお、本実施形態によるパリティ(第1パリティP1及び第2パリティP2)は、リードソロモン符号以外のエラー訂正符号を用いてもよい。例えば、メディアブロックMB内の各ページのビット列の排他的論理和(EX-OR)の演算値をパリティとして利用してもよい。
図5の各メディアブロックMBに設けられる2ページ分のパリティ(第2パリティP2)は、各メディアブロックMB内のページのデータに依存するものであり、他のメディアブロックMB内のページのデータには依存しない。よって、本実施形態によれば、一つのメディアブロックMBを単位としてデータの消去を行うことができる。ガベージコレクションを行う場合も、一つのメディアブロックMB単位でデータをコピー又は移動することができる。これにより、ガベージコレクションに必要なNANDメモリ2の空き領域を少なくすることでき、その分、SSD内のメモリ領域をユーザデータ用に有効利用できる。
コントローラ3は、図5のスーパーブロックSB内の各メディアブロックMBに含まれる128個のページを、それぞれ異なるページインデックス番号で識別する。図5の例では、ワード線WL0~WL30に接続された各ページには、ページインデックス番号0~125が付されている。ワード線WL30に接続された8つのページのうち最後の2つのページは、パリティ(第2パリティP2)を記憶する領域として用いられる。これらのページには、ページインデックス番号253,254が付されている。
また、同一のワード線WLに接続されるメディアブロックMB0~MB3内の各ページには、連続したページインデックス番号が付されている。例えば、ワード線WL0に接続されるメディアブロックMB0~MB3内の各ページには、連続したページインデックス番号0~29が付されている。メディアブロックMB3内の各ワード線WLに接続された8つのページのうち最後の2つのページはパリティ(第1パリティP1)を記憶する領域として用いられる。これらのページには、ページインデックス番号253,254が付されている。
メディアブロックMB3は、各ワード線WLに接続される最後の各2ページがパリティ(第1パリティP1)を記憶する領域として用いられる。このため、他のメディアブロックMB0~MB2よりも、ユーザデータを記憶するための領域が少なくなっている。また、メディアブロックMB3では、ページインデックス番号30,31は欠番にしている。すなわち、各ワード線WLに接続された複数ページに関するパリティ(第1パリティP1)を記憶する領域のページインデックス番号は何れも253,254である。
なお、スーパーブロックSB内のパリティ(第1パリティP1)を、メディアブロックMB0~MB3とは別のブロックに格納してもよい。この場合、メディアブロックMB3内に格納可能なユーザデータを増やすことができる一方で、データの書き込み回数が1回余計に増えるため、データの書き込みに要する時間が長くなる。
図6はスーパーブロックSB内のパリティ生成手順の一例を示すフローチャートである。このフローチャートは、ホスト機器6がコントローラ3に対して、NANDフラッシュメモリ2へのデータ書き込み命令を送ったときに、コントローラ3が行う処理手順を示している。コントローラ3は、ホスト機器6からデータの書き込み要求を受けると、NANDメモリ2内の一部のメモリ領域を入力バッファとして使用する。コントローラ3は、この入力バッファ内に図5に示したスーパーブロックSBのデータを格納する。
まず、コントローラ3は、各メディアブロックMB0~MB3内のワード線WLごとに、各ワード線方向のパリティ(第3パリティP3)を計算する(S1)。図7は第3パリティP3の計算の処理動作を説明する図である。各メディアブロックMB内の各ワード線WL方向には例えば8つのページが配置されている。図6の(S1)では、コントローラ3は、各メディアブロックMB0~MB3内のワード線WLごとに、これら8ページ分、又は8ページ中の6ページ分のデータを用いてパリティ(第3パリティP3)を計算する。計算された複数のパリティ(第3パリティP3)は、例えばコントローラ3内のRAM12に記憶される。
次に、コントローラ3は、計算された複数のパリティ(第3パリティP3)の排他的論理和演算により、スーパーブロックSB内のワード線WLごとにパリティ(第1パリティP1)を計算する(S2)。コントローラ3は、計算されたパリティ(第1パリティP1)を、メディアブロックMB3に配置された、各ワード線WLの該当ページである最後の2ページに格納する(S3)。
次に、コントローラ3は、スーパーブロックSB内の、対象となるすべてのワード線WLのパリティ(第1パリティP1)の計算が終了したか否かを判定する(S4)。すべてのパリティ(第1パリティP1)が計算されるまで(S4:NO)、(S1)~(S4)の処理が繰り返される。
すべてのパリティ(第1パリティP1)の計算が終了すると(S4:YES)、コントローラ3は、各メディアブロックMBのパリティ(第2パリティP2)を計算する(S5)。コントローラ3は、計算されたパリティ(第2パリティP2)を、各メディアブロックMBの該当ページに格納する(S6)。
図8は第2パリティP2の計算の処理動作を説明する図である。上述した図6の(S1)では、各メディアブロックMB内のワード線WLごとにパリティ(第3パリティP3)が計算されて、例えばRAM12に記憶されている。(S6)では、これらのパリティ(第3パリティP3)の排他的論理和演算した値をパリティ(第2パリティP2)が、各メディアブロックMB内の該当ページであるワード線WL30の最後の2ページに格納される。上述した(S5)では、スーパーブロックSB内の全ワード線WLの第1パリティP1の計算が終了した後に第2パリティP2を計算している。しかし、(S2)でスーパーブロックSB内の各ワード線WLの第1パリティP1が計算されるたびに、各メディアブロックMB内の各ワード線WLの第3パリティP3同士の排他的論理和を演算して、第2パリティP2の計算処理を第1パリティP1の計算処理と並行して行ってもよい。これにより、RAM12に全ワード線WL分の第3パリティP3を必要以上に長く記憶しておく必要がなくなり、RAM12の使用量を節約できる。
図5では、偶数番目の16本のワード線WL0~WL30に接続される4つのメディアブロックMB内の第1及び第2パリティP1,P2の配置を示しているが、図5では省略しているものの、各メディアブロックMBには、奇数番目の16本のワード線WL1~WL31に接続されるRSフレームも存在する。奇数番目の16本のワード線WL1~WL31に接続されるRSフレームは、図5と同様に構成されており、図6と同様の処理手順で第1、第2及び第3パリティP1,P2,P3が計算され、第1パリティP1と第2パリティP2は、図5と同様にメディアブロックMB0~MB3に格納される。
図5に示す第1及び第2パリティP1,P2のうち、各メディアブロックMB内のワード線WL30に接続される2ページ分のパリティ(第2パリティP2)は、各メディアブロックMB内のページ間の誤り訂正を行うためのものであり、他のメディアブロックMBには影響されない値である。よって、本実施形態では、1つのメディアブロックMBを単位として、データの消去と、ガベージコレクションのためのデータ移動が可能となる。
図5に示すように、コントローラ3は、メディアブロックMBを、偶数番目の複数のワード線WLに接続された偶数ワード線WL用メディアブロックMBと、奇数番目の複数のワード線WLに接続された奇数ワード線WL用メディアブロックMBとに分けて管理する。また、コントローラ3は、スーパーブロックSBを、複数の偶数ワード線WL用メディアブロックMBを含む偶数ワード線WL用スーパーブロックSBと、複数の奇数ワード線WL用メディアブロックMBを含む奇数ワード線WL用スーパーブロックSBとに分けて管理する。そして、コントローラ3は、偶数ワード線WL用スーパーブロックSB内で発生したエラーを偶数ワード線WL用スーパーブロックSB内の偶数ワード線WL用メディアブロックMB間のデータで訂正するための第1パリティP1と、偶数ワード線WL用メディアブロックMB内で発生したエラーを偶数ワード線WL用メディアブロックMB内のデータで訂正するための第2パリティP2を生成する。同様に、コントローラ3は、奇数ワード線WL用スーパーブロックSB内で発生したエラーを奇数ワード線WL用スーパーブロックSB内の奇数ワード線WL用メディアブロックMB間のデータで訂正するための第1パリティP1と、奇数ワード線WL用メディアブロックMB内で発生したエラーを奇数ワード線WL用メディアブロックMB内のデータで訂正するための第2パリティP2を生成する。これにより、隣接ワード線の短絡不良の検出及び救済が可能となる。
上述した実施形態では、メモリシステム1内にNANDメモリ2を備える例を説明したが、本実施形態は、NANDメモリ2以外の不揮発メモリを備えるメモリシステム1にも適用可能である。具体的には、ページに相当する単位で読み書きを行い、ページよりも大きなデータサイズであるブロックに相当する単位で消去を行う不揮発メモリであれば、本実施形態を適用可能である。
このように、本実施形態では、複数のメディアブロックMB0~MB3を含むスーパーブロックSBを単位とした複数のパリティ(第1パリティP1)を設けるだけでなく、各メディアブロックMB内にも他のメディアブロックMBに依存しないパリティ(第2パリティP2)を設ける。このため、一つのメディアブロックMBを単位としてデータの消去とガベージコレクションのためのデータ移動を行うことができる。
本実施形態の他の態様として、以下のものが考えられる。
コントローラ3は、第1ブロック群内の複数のワード線のそれぞれに接続されるページ群に基づいて、第1ブロック群内の複数のワード線ごとに第3パリティを生成する第3パリティ生成部を有し、
第2パリティ生成部は、第1ブロック群内のすべてのワード線のそれぞれに接続された複数のページ群に対応する複数の第3パリティに基づいて、第2パリティを生成してもよい。
第1パリティ生成部は、第2ブロック群内の複数のワード線のそれぞれに接続されたすべてのページ群についての複数の第3パリティの排他的論理和を演算した値により複数の第1パリティを生成し、
第2パリティ生成部は、第1ブロック群内のすべてのワード線のそれぞれに接続されたすべてのページ群についての複数の第3パリティの排他的論理和を演算した値により第2パリティを生成してもよい。
コントローラ3は、第1ブロック群内のすべてのページを、それぞれ異なるページインデックス番号で識別してもよい。
コントローラ3は、第2ブロック群内のあるワード線に接続されたすべてのページを、それぞれ異なるページインデックス番号で識別してもよい。
第1パリティ及び第2パリティは、リードソロモン符号を含んでもよい。
第1パリティ及び第2パリティは、訂正対象の複数のページの排他的論理和を演算した値であってもよい。
不揮発メモリは、NAND型フラッシュメモリを含んでもよい。
コントローラ3は、第1ブロック群内の複数のワード線のそれぞれに接続されるページ群に基づいて、第1ブロック群内の複数のワード線ごとに第3パリティを生成する第3パリティ生成部を有し、
第2パリティ生成部は、第1ブロック群内のすべてのワード線のそれぞれに接続された複数のページ群に対応する複数の第3パリティに基づいて、第2パリティを生成してもよい。
第1パリティ生成部は、第2ブロック群内の複数のワード線のそれぞれに接続されたすべてのページ群についての複数の第3パリティの排他的論理和を演算した値により複数の第1パリティを生成し、
第2パリティ生成部は、第1ブロック群内のすべてのワード線のそれぞれに接続されたすべてのページ群についての複数の第3パリティの排他的論理和を演算した値により第2パリティを生成してもよい。
コントローラ3は、第1ブロック群内のすべてのページを、それぞれ異なるページインデックス番号で識別してもよい。
コントローラ3は、第2ブロック群内のあるワード線に接続されたすべてのページを、それぞれ異なるページインデックス番号で識別してもよい。
第1パリティ及び第2パリティは、リードソロモン符号を含んでもよい。
第1パリティ及び第2パリティは、訂正対象の複数のページの排他的論理和を演算した値であってもよい。
不揮発メモリは、NAND型フラッシュメモリを含んでもよい。
本開示の態様は、上述した個々の実施形態に限定されるものではなく、当業者が想到しうる種々の変形も含むものであり、本開示の効果も上述した内容に限定されない。すなわち、特許請求の範囲に規定された内容およびその均等物から導き出される本開示の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
1 メモリシステム、2 NAND型フラッシュメモリ(NANDメモリ)、3 コントローラ、4 NANDバス、5 ホストバス、6 ホスト機器、11 ホストインタフェース回路、12 RAM、13 CPU、14 バッファメモリ、15 NANDインタフェース回路、16 ECC回路、21 メモリセルアレイ、22 ロウデコーダ、23 ドライバ回路、24 カラム制御回路、25 レジスタ群、26 シーケンサ、
Claims (8)
- 不揮発メモリと、
前記不揮発メモリに対するデータの書き込み、読出し及び消去を制御するコントローラと、を備え、
前記不揮発メモリは、
複数のメモリセルを有し、
データの書き込み及び読出しの単位であるページと、
複数のページを有するブロックと、を含み、
前記コントローラは、
複数のブロックを含む第1ブロック群と、複数の第1ブロック群を含む第2ブロック群と、を管理し、
前記第2ブロック群内で発生したエラーを前記第2ブロック群内の前記複数の第1ブロック群間のデータで訂正するための第1パリティと、前記第1ブロック群内で発生したエラーを前記第1ブロック群内のデータで訂正するための第2パリティと、を生成する、メモリシステム。 - 前記第1パリティは、前記第2ブロック群内に記憶され、
前記第2パリティは、前記第1ブロック群内に記憶される、請求項1に記載のメモリシステム。 - 前記第1ブロック群に接続される複数のワード線を備え、
前記第1ブロック群は、前記複数のワード線それぞれに接続される複数のページを有する複数のページ群を有し、
前記コントローラは、
前記第2ブロック群内のあるワード線に接続されたすべてのページ群に基づいて、前記第1パリティを生成する第1パリティ生成部と、
前記第1ブロック群内のすべてのワード線に接続されたすべてのページ群に基づいて、前記第2パリティを生成する第2パリティ生成部と、を有する、請求項1又は2に記載のメモリシステム。 - 前記第1パリティ生成部は、前記第2ブロック群内の複数のワード線のそれぞれに接続されたすべてのページ群に対応づけて、前記第2ブロック群内の前記複数のワード線のそれぞれに対応する複数の前記第1パリティを生成し、
前記第2パリティ生成部は、前記複数の第1ブロック群のそれぞれごとに前記第2パリティを生成する、請求項3に記載のメモリシステム。 - 前記コントローラは、前記第1ブロック群を、偶数番目の複数のワード線に接続された偶数ワード線用第1ブロック群と、奇数番目の複数のワード線に接続された奇数ワード線用第1ブロック群とに分けて管理し、
前記コントローラは、前記第2ブロック群を、複数の偶数ワード線用第1ブロック群を含む偶数ワード線用第2ブロック群と、複数の奇数ワード線用第1ブロック群を含む奇数ワード線用第2ブロック群とに分けて管理し、
前記コントローラは、前記偶数ワード線用第2ブロック群内で発生したエラーを前記偶数ワード線用第2ブロック群内の前記偶数ワード線用第1ブロック群間のデータで訂正するための第1パリティと、前記偶数ワード線用第1ブロック群内で発生したエラーを前記偶数ワード線用第1ブロック群内のデータで訂正するための第2パリティを生成するとともに、
前記奇数ワード線用第2ブロック群内で発生したエラーを前記奇数ワード線用第2ブロック群内の前記奇数ワード線用第1ブロック群間のデータで訂正するための第1パリティと、前記奇数ワード線用第1ブロック群内で発生したエラーを前記奇数ワード線用第1ブロック群内のデータで訂正するための第2パリティを生成する、請求項1乃至4のいずれか一項に記載のメモリシステム。 - 前記第1ブロック群を単位として、データの消去及びガベージコレクション用のデータ移動を行う、請求項1乃至5のいずれか一項に記載のメモリシステム。
- 前記コントローラは並行してアクセス可能な複数のチャネルを有し、
前記第1ブロック群は、前記複数のチャネルのうち何れか1のチャネルに接続される複数のブロックを含む、請求項1乃至6のいずれか一項に記載のメモリシステム。 - データの書き込みの単位であるページを複数有するブロックを含む半導体メモリを備えるメモリシステムの制御方法であって、
複数のブロックを含む第1ブロック群を管理し、
複数の第1ブロック群を含む第2ブロック群を管理し、
前記第2ブロック群内で発生したエラーを前記第2ブロック群内の前記複数の第1ブロック群間のデータで訂正するための第1パリティを生成し、
前記第1ブロック群内で発生したエラーを前記第1ブロック群内のデータで訂正するための第2パリティを生成する、制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020126616A JP2022023584A (ja) | 2020-07-27 | 2020-07-27 | メモリシステム及び制御方法 |
US17/128,369 US11348642B2 (en) | 2020-07-27 | 2020-12-21 | Memory system and control method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020126616A JP2022023584A (ja) | 2020-07-27 | 2020-07-27 | メモリシステム及び制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022023584A true JP2022023584A (ja) | 2022-02-08 |
Family
ID=80226277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020126616A Pending JP2022023584A (ja) | 2020-07-27 | 2020-07-27 | メモリシステム及び制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11348642B2 (ja) |
JP (1) | JP2022023584A (ja) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9026893B1 (en) | 2012-12-13 | 2015-05-05 | Western Digital Technologies, Inc. | Dynamically assigning inactive pages not used in Reed-Solomon code in non-volatile solid-state storage array |
KR102372825B1 (ko) | 2015-07-31 | 2022-03-14 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN107391026B (zh) | 2016-04-27 | 2020-06-02 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
US10110255B2 (en) | 2016-04-27 | 2018-10-23 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10910057B2 (en) * | 2019-04-22 | 2021-02-02 | Western Digital Technologies, Inc. | CAM storage schemes and CAM read operations for detecting matching keys with bit errors |
-
2020
- 2020-07-27 JP JP2020126616A patent/JP2022023584A/ja active Pending
- 2020-12-21 US US17/128,369 patent/US11348642B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11348642B2 (en) | 2022-05-31 |
US20220028456A1 (en) | 2022-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324789B2 (en) | Flash memory controller and memory device for accessing flash memory module, and associated method | |
US8458564B2 (en) | Programming management data for a memory | |
US20130254463A1 (en) | Memory system | |
US10353626B2 (en) | Buffer memory management method and write method using the same | |
CN113409880B (zh) | 半导体装置以及半导体储存装置 | |
CN114664342A (zh) | Ufs装置及其操作方法 | |
JP2006221334A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
US11348642B2 (en) | Memory system and control method thereof | |
US11467903B2 (en) | Memory system and operating method thereof | |
JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
CN115952115A (zh) | 基于融合链表控制同步操作的存储器控制器及其操作方法 | |
CN114530173A (zh) | 存储器系统及其操作方法 | |
CN114187949A (zh) | 存储器系统及其操作方法 | |
JP4692843B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US11645003B2 (en) | Memory system generating parity data based on written data and control method | |
US11669266B2 (en) | Memory system and operating method of memory system | |
US12050533B2 (en) | Memory system and operating method of memory system | |
US11704050B2 (en) | Memory system for determining a memory area in which a journal is stored according to a number of free memory blocks | |
US20240103968A1 (en) | Memory system and control method | |
US11822819B2 (en) | Memory system and operating method thereof | |
US20230297502A1 (en) | Memory system, memory controller and operating method of the memory system for controlling garbage collection | |
US20230376211A1 (en) | Controller for controlling one-time programmable memory, system, and operation method thereof | |
JP2021118011A (ja) | 半導体記憶装置及び半導体記憶装置のリフレッシュ方法 | |
JP2022046887A (ja) | 半導体記憶装置 | |
CN113961141A (zh) | 存储器系统、存储器控制器以及操作存储器系统的方法 |