JP2013200741A - 半導体記憶装置、その制御方法及び情報処理装置 - Google Patents
半導体記憶装置、その制御方法及び情報処理装置 Download PDFInfo
- Publication number
- JP2013200741A JP2013200741A JP2012068974A JP2012068974A JP2013200741A JP 2013200741 A JP2013200741 A JP 2013200741A JP 2012068974 A JP2012068974 A JP 2012068974A JP 2012068974 A JP2012068974 A JP 2012068974A JP 2013200741 A JP2013200741 A JP 2013200741A
- Authority
- JP
- Japan
- Prior art keywords
- block
- semiconductor memory
- blocks
- data
- logical
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
Abstract
【課題】論理ブロックを構成する物理ブロック数が可変である場合、表記容量分の記憶領域が確保可能な否かを正確に判定すること。
【解決手段】不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算し、前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第1の管理単位に換算して、利用可能な前記第1の管理単位のデータの個数を演算し、前記演算したフリーブロックの個数が第1の閾値を下回る第1の条件と、前記演算した第1の管理単位のデータの個数が第2の閾値を下回る第2の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる。
【選択図】図1
【解決手段】不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算し、前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第1の管理単位に換算して、利用可能な前記第1の管理単位のデータの個数を演算し、前記演算したフリーブロックの個数が第1の閾値を下回る第1の条件と、前記演算した第1の管理単位のデータの個数が第2の閾値を下回る第2の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる。
【選択図】図1
Description
本発明の実施形態は、不揮発性半導体メモリを有する半導体記憶装置、その制御方法及び情報処理装置に関する。
SSD(solid state drive)においては、フラッシュメモリの消去単位である物理ブロックを複数個組み合わせた仮想ブロックとしての論理ブロックという概念を導入し、この論理ブロック単位に並列に消去、書き込み、読み出しを行うことで、書き込み効率の向上と並列処理による高速化を図る場合がある。
本発明の一つの実施形態は、論理ブロックを構成する物理ブロック数が可変である場合、表記容量分の記憶領域が確保可能な否かを正確に判定可能な半導体記憶装置、その制御方法及び情報処理装置を提供することを目的とする。
本発明の一つの実施形態によれば、半導体記憶装置は、データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、複数の前記物理ブロックを論理ブロックに対応付けて管理するコントローラとを備える。コントローラは、前記物理ブロックにバッドブロックが発生したときは、該バッドブロック以外の複数の物理ブロックに対応付けられる欠損論理ブロックとして前記論理ブロックを管理する。コントローラは、前記不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算する。コントローラは、前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第1の管理単位に換算して、利用可能な前記管理単位のデータの個数を演算する。コントローラは、前記演算したフリーブロックの個数が第1の閾値を下回る第1の条件と、前記演算した第1の管理単位のデータの個数が第2の閾値を下回る第2の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる。
論理ブロックを構成する物理ブロックの個数が固定である場合、一つの論理ブロックに記録可能なユーザデータ量も固定である。このブロック数固定方式では、論理ブロック中に、バッドブロック(誤りが多いなど記憶領域として使用できない物理ブロック)が発生して、論理ブロックを構成できなくなると、システム上、記録可能なフラッシュメモリの記憶容量が論理ブロック単位で減少していく。
このブロック数固定方式では、利用可能なフラッシュメモリの記憶容量が論理ブロックによって規定できるため、表記容量分の記憶領域が確保可能か否かを論理ブロック数のみで判定することができる。
一方、一つの論理ブロックを構成する物理ブロックの個数を可変とすることができる。この場合、バッドブロック発生による論理ブロック中の一部の物理ブロックの欠損を許容する。欠損している場合は、論理ブロック内に記録可能なユーザデータの量が欠損分だけ削減される。つまり、ブロック数可変方式では、システム上、記録可能なフラッシュメモリの記憶容量が論理ブロック単位で減少してはいかない。
このように、ブロック数可変方式では、論理ブロック毎に記録可能なユーザデータの容量が異なるため、単純に論理ブロック数だけでは表記容量分の記憶領域が確保可能か否かを判定することができない。
そこで、本実施形態においては、論理ブロックという第1の管理単位の他に、セクタサイズより大きなサイズであって物理ブロック以下のサイズである第2の管理単位を用意し、第1の管理単位に基づきフリーブロックの不足を判定し、第2の管理単位に基づいて表記容量分の記憶領域が確保可能か否かを判定する。これにより、ブロック数可変方式であってもブロックの枯渇を正確に判定することが可能であり、限界までSSDの動作を継続させることが可能となる。
以下に添付図面を参照して、実施形態にかかる半導体記憶装置、その制御方法及び情報処理装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、SSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)などのホストインタフェース2を介してパーソナルコンピュータあるいはCPUなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部記憶装置として機能する。ホスト1は、例えば、パーソナルコンピュータのCPU、スチルカメラ、ビデオカメラなどの撮像装置のCPUである。SSD100は、ホストインタフェース2と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDと略す)10と、NAND10よりも高速アクセスが可能な半導体メモリであるRAM20と、NANDコントローラ(NANDC)31と、コントローラ30とを備える。
図1は、SSD(Solid State Drive)100の構成例を示すブロック図である。SSD100は、ATAインタフェース(ATA I/F)などのホストインタフェース2を介してパーソナルコンピュータあるいはCPUなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部記憶装置として機能する。ホスト1は、例えば、パーソナルコンピュータのCPU、スチルカメラ、ビデオカメラなどの撮像装置のCPUである。SSD100は、ホストインタフェース2と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDと略す)10と、NAND10よりも高速アクセスが可能な半導体メモリであるRAM20と、NANDコントローラ(NANDC)31と、コントローラ30とを備える。
NAND10は、ホスト1によって指定されたユーザデータ11を記憶したり、RAM20で管理される管理情報を不揮発管理テーブル12としてバックアップ記憶する。NAND10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NAND10は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NAND10では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
図2は、NAND10の詳細構成例を示すものである。この実施形態においては、NAND10は、4チャネル(4ch:ch0〜ch3)を介してNANDコントローラ(NANDC)31に並列接続されており、4つのチャネル並列動作要素10a〜10dを並列動作させることが可能である。チャネル数は4つに限らず、任意のチャネル数を採用可能である。各並列動作要素10a〜10dは、バンクインターリーブが可能な複数のバンク(この場合、4バンク、Bank0〜Bank3)によって構成されており、各バンクは、複数のメモリチップ(この場合、2メモリチップ、Chip0、Chip1)によって構成されている。各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン0、プレーン1の2つの領域(District)に分割されている。プレーン0およびプレーン1は、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備えており、プレーン倍速モードを使用することで、同時に消去/ライト/リードを行うことが可能である。このように、NAND10の各メモリチップは、複数のチャネルによる並列動作、複数のバンクによるバンクインターリーブ動作、複数のプレーンを用いた並列動作が可能である。なお、各メモリチップは、4つのプレーンに分割された構成であってもよいし、あるいは、全く分割されていなくてもよい。
このように、NAND10では、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能であり、チャネル数を4、バンク数を4、プレーン数を2とした場合、最大32個の物理ブロックを並列動作させることが可能となる。
RAM20は、ホスト1からのデータをNAND10にライトする際に一時的にデータを保存するためのライトバッファ25としての記憶領域と、アドレス変換テーブル21、論理ブロック管理テーブル22などの管理情報を記憶、更新するための記憶領域と、NAND10からリードされたデータを一時記憶するなどのための作業領域として機能する。アドレス変換テーブル21、論理ブロック管理テーブル22などの管理情報は、NAND10に記憶されている不揮発管理テーブル12が起動時などに展開されたものである。
ホスト1はSSD100に対し、リードまたはライトする際には、ホストインタフェース2を介して論理アドレスとしてのLBA(Logical Block Addressing)をSSD100に入力する。LBAは、セクタ(サイズ:例えば512B)に対して0からの通し番号をつけた論理アドレスである。本実施の形態においては、ライトバッファ25,NAND10でデータを管理する単位として、セクタサイズよりも大きく、物理ブロックサイズよりも小さいクラスタという管理単位を定義する。この実施形態では、クラスタという1つの管理単位を使用するが、クラスタよりサイズが大きく、物理ブロックサイズ以下のサイズである他の管理単位を追加し、2つの管理単位を使用してもよい。
また、SSD100においては、複数の物理ブロックをまとめて管理する単位として、論理ブロックという仮想的なブロックを定義する。この実施の形態では、論理ブロックは、チャネル並列、バンクインタリーブ、プレーン倍速動作を行えるように物理ブロックを組み合わせる。すなわち、論理ブロックは、チャネル数×バンク数×プレーン数分の物理ブロックで構成される。図2に示したように、チャネル数=4、プレーン数=2、バンク数=4であれば、論理ブロックは、32個の物理ブロックで構成される。なお、論理ブロックは、複数のチャネル分の物理ブロックのみで構成してもよいし、複数のバンク分の物理ブロックのみで構成してもよいし、複数のプレーン分の物理ブロックのみで構成してもよい。また、チャネル並列、バンクインタリーブが行えるように物理ブロックを組み合わせても良いし、チャネル並列、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよいし、バンクインタリーブ、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよい。
図3に示すように、RAM20で管理されるアドレス変換テーブル21には、LBAのクラスタアドレスと、クラスタ情報との対応が登録されている。クラスタアドレスとは、LBAをクラスタサイズで割ったものである。クラスタ情報としては、クラスタデータが記憶されているNAND10上の記憶位置(クラスタデータが記憶されている論理ブロック番号と論理ブロック内記憶位置)、及び当該クラスタが有効か無効かを示すクラスタ有効/無効フラグを含んでいる。
図4に示すように、RAM20で管理される論理ブロック管理テーブル22には、論理ブロック番号と、この論理ブロックを構成する複数の物理ブロックの番号(この実施形態では最大32個)と、欠損ブロック情報と、使用/未使用情報と、管理情報用かユーザデータ用であるかを識別する管理情報識別フラグとの対応関係が登録されている。欠損ブロック情報は、例えば、32個の物理ブロックが全て揃っているか否か、すなわち欠損物理ブロックが存在するか否かを識別する欠損フラグFkと、欠損している物理ブロック番号を示す欠損ブロック識別情報Ik、論理ブロックを構成している物理ブロックの個数を示すブロック構成数情報Nkを含んでいる。ブロック構成数情報Nkを、論理ブロック中で欠損している物理ブロックの個数を示す欠損ブロック数情報としてもよい。欠損して物理ブロックとは、前述したように、誤りが多いなど記憶領域として使用できないバッドブロックBBであり、欠損ブロック識別情報IkによってバッドブロックBBを識別することができる。バッドブロックには、製造段階から発生している先天性バッドブロックと、ユーザの使用中にバッドブロックとなった後発性バッドブロックとが含まれる。
使用/未使用情報は、各論理ブロックが使用中であるか否か、すなわち各論理ブロックがフリーブロックFBであるかアクティブブロックABであるかを識別する。フリーブロックFBとは、内部に有効データを含まない、用途未割り当ての未使用ブロックのことである。アクティブブロックABとは、内部に有効データを含み、用途が割り当てられた使用中ブロックのことである。この使用/未使用情報を使用して、NAND10に対する書き込みの際に使用するフリーブロックFBを選択する。なお、フリーブロックFBは、今まで一度も書き込みが行われなかったブロック及び一旦書き込みが行われたがその後全てのデータが無効データとなったブロックの両方を含む。フリーブロックFBはアクティブブロックABとして利用される前の所定のタイミングで消去される。
管理情報識別フラグは、当該論理ブロックが管理情報のために使用されているか、ユーザデータ記憶用に使用されているかを識別する情報である。管理情報記憶用の論理ブロックは、必要な最大容量を予め固定量だけ確保するようにしてもよいし、NAND10の書き換えが進むに伴い管理情報記憶用の論理ブロックを増減させるようにしてもよい。
このように、論理ブロックは、全ての物理ブロックがフルに存在するフル論理ブロックと、欠損物理ブロックが存在する欠損論理ブロックとを含む。
この実施形態では、コントローラ30は、製造段階での初回電源投入時に、使用不可ブロックを除く物理ブロックを用いて論理ブロックの構築処理を行い、その構築結果を論理ブロック管理テーブル22に登録する。使用不可ブロックは、初期(先天性)バッドブロック、固定管理領域(コントローラ30として機能させるためのファームウェアが記憶される物理ブロック)、予約ブロック(初回電源投入時に管理情報のために確保される物理ブロック)などを含み、使用不可ブロック番号を示す情報は、例えば、静的パーティションブロックに予め登録されている。製造段階に構築された論理ブロックは、その後でのSSD100のユーザ使用時にも、そのまま継続して使用される。ただし、その後のユーザ使用時に、後発性バッドブロックが発生した際には、発生状況に応じて論理ブロック管理テーブル22の欠損ブロック情報が更新される。
なお、欠損する物理ブロック数に許容値(例えば、2個や4個など)を設け、許容値を越えた欠損物理ブロックが発生した論理ブロックについては、使用不可とするようにしてもよい。このようにした場合、許容値を越えた欠損物理ブロックを有する使用不可の論理ブロックが複数個発生した場合、使用可能な論理ブロックの容量が少なくなるので、使用不可の複数の論理ブロックを用いて論理ブロックの再構築を行って、使用可能な論理ブロック数を増加させるようにしてもよい。
SSD100では、論理アドレス(LBA)と物理アドレス(NAND10の記憶位置)との関係は予め静的に決定されておらず、データの書込み時に動的に関係付けられる論物動的変換方式が採用されている。例えば、同じLBAのデータを上書きする場合は、つぎのような操作が行われる。論理アドレスA1にブロックサイズの有効なデータが保存されており、記憶領域としてはブロックB1が使用されていたとする。ホスト1から論理アドレスA1のブロックサイズの更新データを上書きするコマンドを受信した場合、フリーブロックFB(ブロックB2とする)を1個確保し、そのフリーブロックFBにホスト1から受信したデータを書き込む。その後、論理アドレスA1とブロックB2を関係付ける。その結果、ブロックB2はアクティブブロックABになり、ブロックB1に保存されたデータは無効になるためブロックB1はフリーブロックFBとなる。
図1において、NANDC31は、NAND10とのインタフェース処理を行うNAND I/F、誤り訂正回路、DMAコントローラなどを備えており、RAM20に一時記憶されたデータをNAND10に書き込んだり、NAND10に記憶されているデータを読み出してRAM25に転送したりする。
図1において、コントローラ30は、リードライト制御部32、ブロック管理部33、整理部34,フリーブロック数確認部(FB数確認部)35、クラスタ数確認部36、故障判定部37を備える。
リードライト制御部32は、NAND10へライトすべきデータをRAM20のライトバッファ25やRAM20の作業領域を介してNAND10へのライトする処理およびNAND10からのリード処理を実行する。また、リードライト制御部32は、NAND10へのライト動作に伴い、アドレス変換テーブル21や論理ブロック管理テーブル22などの管理テーブルの更新処理を実行する。
ブロック管理部33は、製造段階での初回電源投入時における前述した論理ブロック構築処理を実行するとともに、その後の後天的バッドブロック発生に伴い論理ブロック管理テーブル22の欠損ブロック情報(欠損フラグFk+欠損ブロック識別情報Ik+ブロック構成数情報Nk)の更新を行う。
整理部34は、NAND10でのデータ整理(コンパクション)を実行する。SSDにおいて、データの消去単位(ブロック)と、データの管理単位が異なる場合、NAND10の書き換えが進むと、無効な(最新ではない)データによって、ブロックは穴あき状態になる。このような穴あき状態のブロックが増えると、実質的に使用可能なブロックが少なくなり、NAND10の記憶領域を有効利用できなくなる。そこで、例えば、NAND10のフリーブロックが所定の閾値より少なくなった場合、、論理ブロック内の有効クラスタを集めて別の論理ブロックに書き直すコンパクションなどのNAND10の整理を実行し、用途未割り当てのフリーブロックを確保する。整理部34は、コンパクションの実行に伴い、アドレス変換テーブル21や論理ブロック管理テーブル22などの管理テーブルの更新処理を実行する。
フリーブロック数確認部(FB数確認部)35は、論理ブロック管理テーブル22の使用/未使用情報に基づいて未使用である論理ブロック数を計数することによりフリーブロック数Nfbを取得し、取得したフリーブロック数を故障判定部37に出力する。
クラスタ数確認部36は、論理ブロック管理テーブル22のブロック構成数情報Nkを全ての論理ブロックについて合算することで、使用不可となっていない物理ブロックの合計数Ntotalを算出する。1つの物理ブロックに記憶可能なクラスタ数Nclstrは一意に決まるので、クラスタ数確認部36は、Ntotal×Nclstrを求めることで、使用可能なクラスタ数Ntcを算出する。クラスタ数確認部36は、取得した合計クラスタ数Ntcを故障判定部37に出力する。
故障判定部37は、FB数確認部35から入力されるフリーブロック数Nfbを閾値Frefと比較し、フリーブロック数Nfbが閾値Frefに満たないときに、故障検出信号を出力する。また、故障判定部37は、クラスタ数確認部36から入力される合計クラスタ数Ntcを閾値Crefと比較し、クラスタ数Ntcが閾値Crefに満たないときに、故障検出信号を出力する。
図5は、SSD100でのブロック管理を概念的に示す図である。NAND10では、ホスト1からのユーザデータをライトするための論理ブロックBLKhstと、コンパクションにおいてデータをライトするための論理ブロックBLKcom1およびBLKcom2を常に確保しておく。論理ブロックBLKcom1は、コンパクションでの書き込み先のブロックであり、論理ブロックBLKcom2は、論理ブロックBLKcom1が欠損ブロックであった場合に、書ききれなかったデータを書き込むための予備ブロックである。ホスト1からのデータのライト処理やコンパクション処理によって有効データがライトされたブロックはアクティブブロックABとして管理される。アクティブブロックABは、NAND10の書き換えが進むと、フリーブロックFBとして解放されたり、コンパクションでの書き込み元のブロックを経てフリーブロックFBとして解放される。フリーブロックFBは、その後、ホスト1からのユーザデータをライトするための論理ブロックBLKhstや、コンパクションにおいてデータをライトするための論理ブロックBLKcom1およびBLKcom2として、利用される。
図6は、NAND10の総容量の内訳を示すものである。NAND総容量は、使用不可能領域と、使用可能容量とで構成されている。使用不可能領域は、前述したように、初期バッドブロック、固定管理領域、静的パーティションブロックなどを含む。使用可能容量は、構築することができた論理ブロックの総容量であり、フル論理ブロックと欠損論理ブロックを含む。使用可能領域は、動作に必要な予約分と、表記容量分のユーザデータ領域と、余裕分とを含み、余裕分の容量が大きいほど書き込み性能が向上する。
図6において、動作に必要な予約分とは、図5に示したように、ホスト1からのユーザデータをライトするための論理ブロックBLKhstと、コンパクションにおいてデータをライトするための論理ブロックBLKcom1およびBLKcom2と、アドレス変換テーブル21や論理ブロック管理テーブル22などの管理情報を記憶するための容量分などを含む。図6において、表記容量分のユーザデータ領域を確保できなくなった場合、別言すれば、余裕分の容量が0を下回った場合に、故障モードなる。すなわち、後天性バッドブロックが発生すると、使用可能容量が減少していき、使用可能容量から動作に必要な予約分を差し引いた容量が、表記容量を下回った場合に、故障モードとする。図5の符号Cで囲まれた領域が使用可能容量を計算するための対象領域となる。
つぎに、NAND10のブロック枯渇による故障判定について説明する。NAND10でバッドブロックが後天的に発生すると、ユーザデータなどの記録に使用できるブロックが減少していく。本実施形態においては、以下の条件の何れかを満たした時に、ブロック枯渇と判定する。
A.フリーブロックが不足して、次の書き込みができない状況
B.コンパクションを行っても、余裕分の容量を確保できない状況
A.フリーブロックが不足して、次の書き込みができない状況
B.コンパクションを行っても、余裕分の容量を確保できない状況
フリーブロックが不足して、次の書き込みができない状況とは、フリーブロックの不足によって、図5の論理ブロックBLKhst、BLKcom1およびBLKcom2を確保できない状況である。そこで、フリーブロック数Nfbが閾値Fref未満となった場合に、ブロック枯渇条件Aが成立したと判定する。閾値Frefは、図6で説明した動作に必要な予約分のフリーブロック数であり、このブロック数にマージンを加えてもよい。
すなわち、SSD100が動作し続けるためには、論理ブロックBLKhst、BLKcom1およびBLKcom2が必要である。そのため、フリーブロック数Nfbが減少してきた場合には、コンパクション処理を実行してフリーブロックを生成する。フリーブロック数Nfbが、論理ブロックBLKhst、BLKcom1およびBLKcom2の合計数(3個)未満になりそうな場合には、コンパクションは必須の処理である。通常、コンパクション処理が正常に動作している場合は、フリーブロック数Nfbが3個未満になることはない。しかし、フリーブロック数が減っている状況において、コンパクションでのデータコピー処理やホスト1からのデータ書き込み処理などで、エラーが発生してバッドブロックが発生すると、代替の論理ブロックの確保が必要になり、論理ブロックBLKhst、BLKcom1およびBLKcom2を確保できなくなり、ブロック枯渇条件Aが成立してコンパクション処理自体を行うことが不可能になる。
コンパクションを行っても、余裕容量を確保できない状況とは、コンパクションを複数回継続しても、余裕分の容量が零になって表記容量分のユーザデータ領域を確保できない状況である。そこで、使用可能なクラスタ数Ntcが閾値Crefを下回った場合に、ブロック枯渇条件Bが成立したと判定する。閾値Crefは、表記容量に対応するクラスタ数であり、このクラスタ数にマージンを加えて、閾値Crefを決定してもよい。ただし、使用可能なクラスタ数Ntcを集計する際には、図6で説明した動作に必要な予約分を集計から除く。
つぎに、図7を参照して故障判定部37が行うブロック枯渇条件Aについての故障判定手順について説明する。FB数確認部35は、適宜のタイミングで(例えば、NAND10に書き込みを行う際、後天性バッドブロックが発生して論理ブロック管理テーブル22が更新された時点、NAND整理の最中あるいはNAND整理が終了した時点、あるいは定期的に)、論理ブロック管理テーブル21の使用/未使用情報に基づいて未使用である論理ブロック数を計数することによりフリーブロック数Nfbを取得し、取得したフリーブロック数を故障判定部37に出力する。
故障判定部37は、FB数確認部35からフリーブロック数Nfbが入力されると、フリーブロック数Nfbを閾値Frefと比較し(ステップS100)、フリーブロック数Nfbが閾値Frefに満たないときは、故障検出信号を出力して、SSD100の動作を停止させたり、ユーザデータの記録を中止させたりして、SSD100を故障モードに移行させる(ステップS110)。閾値Frefは、前述したように、ホスト1からのユーザデータをライトするための論理ブロックBLKhstと、コンパクションにおいてデータをライトするための論理ブロックBLKcom1およびBLKcom2との合計数に対応する。
つぎに、図8を参照して故障判定部37が行うブロック枯渇条件Bについての故障判定手順について説明する。クラスタ数確認部36は、ホスト1からのライト要求が発生すると(ステップS200)、使用可能なクラスタ数Ntcを算出する。クラスタ数Ntcは、次のようにして算出する。クラスタ数確認部36は、論理ブロック管理テーブル22のブロック構成数情報Nkを全ての論理ブロックについて合算することで、使用可能な物理ブロックの仮合計数Ntotal´を算出し、この物理ブロックの仮合計数Ntotal´から、図6に示した動作に必要な予約分に対応する物理ブロック数を除外(減算)し、この減算結果を使用可能な物理ブロックの合計数Ntotalとして算出する。
図6に示した動作に必要な予約分とは、図5に示した論理ブロックBLKhst、BLKcom1およびBLKcom2分に対応する物理ブロック数と、アドレス変換テーブル21や論理ブロック管理テーブル22などの管理情報を記憶するための容量分に対応する物理ブロック数である。論理ブロックBLKhst、BLKcom1およびBLKcom2分に対応する物理ブロック数は、予め設定された固定値(例えば3)として計算する。アドレス変換テーブル21や論理ブロック管理テーブル22などの管理情報を記憶するための容量分に対応する物理ブロック数は、管理情報用の論理ブロックを固定的に管理する場合は、予め設定された固定値として計算する。また、管理情報用の論理ブロックを可変的に管理する場合は、論理ブロック管理テーブル22の管理情報識別フラグの欄が管理情報として登録されている論理ブロックを選択し、選択した論理ブロックのブロック構成数情報Nkを合算することで、管理情報が記憶される物理ブロック数を導出する。
クラスタ数確認部36は、導出した使用可能な物理ブロックの合計数Ntotalに、1つの物理ブロックに記憶可能なクラスタ数Nclstrを掛けて、使用可能な合計クラスタ数Ntc(=Ntotal×Nclstr)を求める。クラスタ数確認部36は、取得した合計クラスタ数Ntcを故障判定部37に出力する。
故障判定部37は、クラスタ数確認部36から合計クラスタ数Ntcが入力されると、合計クラスタ数Ntcを閾値Crefと比較し(ステップS210)、クラスタ数Ntcが閾値Crefに満たないときには、前記同様、故障検出信号を出力して、SSD100の動作を停止させたり、ユーザデータの記録を中止させたり、SSD100を故障モードに移行させる(ステップS220)。閾値Crefは、前述したように、表記容量に対応するクラスタ数である。
なお、クラスタ数Ntcの算出は、判定の度に初めから計算していると計算時間がかかるので、クラスタ数Ntcの初期値を、製造段階での初回電源投入時における前述した論理ブロック構築に求め、その後は、論理ブロックの再構築やバッドブロックの発生による論理ブロック管理テーブル22の更新などのイベント発生タイミングで、初期値を順次差分的に増減させる計算を行うことで、効率的に計算することも可能である。
このように第1の実施形態では、フリーブロック数による判定の他に、クラスタ数による判定を行って表記容量分の記憶領域が確保可能か否かを判定するようにしており、これにより、ブロック数可変方式であってもブロックの枯渇を正確に判定することが可能であり、限界までSSDの動作を継続させることが可能となる。
なお、上記では、故障モードの際、SSD100を停止させているが、事前に警告をホスト1に通知するようにしてもよい。具体的には、フリーブロック数の判定閾値Fref、クラスタ数の判定閾値Crefに、数個の論理ブロック分の余裕を持った閾値を用意し、この閾値を用いて前述のブロック枯渇条件A、Bが成立したときに、寿命が近づいていることを統計情報やSMART情報としてホスト1に提示する。
また、上記実施形態では、ブロック枯渇条件Bを判定する際に、クラスタ数を用いるようにしたが、セクタサイズより大きなサイズであって論理ブロックより小さなサイズであれば、例えば、物理ブロック数、物理ページ数、クラスタより大きな別の管理単位を用いてブロック枯渇条件Bを判定するようにしてもよい。
(第2の実施形態)
図9は、SSD100を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
図9は、SSD100を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット、及びSSD100等が収容されている。
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
SSD100は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図10は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD100を、ATAインタフェースを介して制御する。
パーソナルコンピュータ1200は、セクタ単位でSSD100へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がSSD100に入力される。
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
なお、SSD100が搭載される情報処理装置として、スチルカメラ、ビデオカメラなどの撮像装置を採用してもよい。このような情報処理装置は、SSD100を搭載することによって、ランダムリード及びランダムライト性能を向上させることが可能となる。従って、情報処理装置を使用するユーザの利便性が向上する。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 ホスト装置、2 ホストインタフェース、10 NAND型フラッシュメモリ、10a〜10d チャネル並列動作要素、20 RAM、21 アドレス変換テーブル、22 論理ブロック管理テーブル、25 ライトバッファ、30 コントローラ、31 NANDコントローラ、32 リードライト制御部、33 ブロック管理部、34 整理部、35 フリーブロック数確認部、36 クラスタ数確認部、37 故障判定部、100 SSD。
Claims (18)
- データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、
複数の前記物理ブロックを論理ブロックに対応付けて管理するコントローラと、
を備え、
前記コントローラは、前記物理ブロックにバッドブロックが発生したときは、該バッドブロック以外の複数の物理ブロックに対応付けられる欠損論理ブロックとして前記論理ブロックを管理するブロック管理部と、
前記不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算する第1の演算部と、
前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第1の管理単位に換算して、利用可能な前記第1の管理単位のデータの個数を演算する第2の演算部と、
前記演算したフリーブロックの個数が第1の閾値を下回る第1の条件と、前記演算した第1の管理単位のデータの個数が第2の閾値を下回る第2の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる故障判定部と、
を備えることを特徴とする半導体記憶装置。 - 前記第2の閾値は、半導体記憶装置の表記容量に対応することを特徴とする請求項1に記載の半導体記憶装置。
- 前記不揮発性半導体メモリに対しライト動作を行うライト制御部と、
論理ブロック内の有効なデータを集めてフリーブロックに書き直す整理部と、
を更に備え、
第2の演算部は、第1の管理単位に換算する論理ブロックの容量を導出する際、ホストからのデータを次にライトするためのフリーブロックおよび前記整理部による書き込み先のフリーブロックを除外して論理ブロックの容量を集計することを特徴とする請求項1に記載の半導体記憶装置。 - 前記第1の閾値は、ホストからのデータを次にライトするためのフリーブロックの個数および前記整理部による書き込み先のフリーブロックの個数を加算した個数に対応することを特徴とする請求項3に記載の半導体記憶装置。
- 前記第1の管理単位は、前記不揮発性半導体メモリに対するライトデータを管理する単位であることを特徴とする請求項1に記載の半導体記憶装置。
- 前記不揮発性半導体メモリは、複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップは複数のチャネル並列動作要素に跨ってそれぞれがインタリーブ可能な複数のバンクに分割されており、
前記コントローラは、複数のチャネル並列動作要素、複数のプレーン、複数のバンクを跨ぐ複数の物理ブロックの組み合わせとして論理ブロックを管理することを特徴とする請求項1に記載の半導体記憶装置。 - データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリの制御方法であって、
複数の前記物理ブロックを論理ブロックに対応付けて管理し、前記物理ブロックにバッドブロックが発生したときは、該バッドブロック以外の複数の物理ブロックに対応付けられる欠損論理ブロックとして前記論理ブロックを管理し、
前記不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算し、
前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第1の管理単位に換算して、利用可能な前記第1の管理単位のデータの個数を演算し、
前記演算したフリーブロックの個数が第1の閾値を下回る第1の条件と、前記演算した第1の管理単位のデータの個数が第2の閾値を下回る第2の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる
ことを特徴とする半導体記憶装置の制御方法。 - 前記第2の閾値は、半導体記憶装置の表記容量に対応することを特徴とする請求項7に記載の半導体記憶装置の制御方法。
- 前記第1の管理単位に換算する論理ブロック容量を導出する際、ホストからのデータを次にライトするためのフリーブロックおよび前記整理部による書き込み先のフリーブロックを除外して論理ブロックの容量を集計することを特徴とする請求項7に記載の半導体記憶装置の制御方法。
- 前記第1の閾値は、ホストからのデータを次にライトするためのフリーブロックの個数および前記整理部による書き込み先のフリーブロックの個数を加算した個数に対応することを特徴とする請求項7に記載の半導体記憶装置の制御方法。
- 前記第1の管理単位は、前記不揮発性半導体メモリに対するライトデータを管理する単位であることを特徴とする請求項7に記載の半導体記憶装置の制御方法。
- 前記不揮発性半導体メモリは、複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップは複数のチャネル並列動作要素に跨ってそれぞれがインタリーブ可能な複数のバンクに分割されており、
前記論理ブロックを、複数のチャネル並列動作要素、複数のプレーン、複数のバンクを跨ぐ複数の物理ブロックの組み合わせとして管理することを特徴とする請求項7に記載の半導体記憶装置の制御方法。 - ホスト装置と、
データ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、複数の前記物理ブロックを論理ブロックに対応付けて管理するコントローラとを有する半導体記憶装置と、
を備え、
前記コントローラは、
前記物理ブロックにバッドブロックが発生したときは、該バッドブロック以外の複数の物理ブロックに対応付けられる欠損論理ブロックとして前記論理ブロックを管理するブロック管理部と、
前記不揮発性半導体メモリにおける未使用の論理ブロックであるフリーブロックの個数を演算する第1の演算部と、
前記不揮発性半導体メモリにおける論理ブロックの容量を物理ブロック以下のサイズであってセクタより大きなサイズの第1の管理単位に換算して、利用可能な前記第1の管理単位のデータの個数を演算する第2の演算部と、
前記演算したフリーブロックの個数が第1の閾値を下回る第1の条件と、前記演算した第1の管理単位のデータの個数が第2の閾値を下回る第2の条件とのうちの少なくとも一方が成立したとき、故障と判定して、故障モードに移行させる故障判定部と、
を備えることを特徴とする情報処理装置。 - 前記第2の閾値は、半導体記憶装置の表記容量に対応することを特徴とする請求項13に記載の情報処理装置。
- 前記不揮発性半導体メモリに対しライト動作を行うライト制御部と、
論理ブロック内の有効なデータを集めてフリーブロックに書き直す整理部と、
を更に備え、
第2の演算部は、第1の管理単位に換算する論理ブロックの容量を導出する際、ホストからのデータを次にライトするためのフリーブロックおよび前記整理部による書き込み先のフリーブロックを除外して論理ブロックの容量を集計することを特徴とする請求項13に記載の情報処理装置。 - 前記第1の閾値は、ホストからのデータを次にライトするためのフリーブロックの個数および前記整理部による書き込み先のフリーブロックの個数を加算した個数に対応することを特徴とする請求項15に記載の情報処理装置。
- 前記第1の管理単位は、前記不揮発性半導体メモリに対するライトデータを管理する単位であることを特徴とする請求項13に記載の情報処理装置。
- 前記不揮発性半導体メモリは、複数のメモリチップで構成されるチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各メモリチップは並列動作可能な複数のプレーンに分割され、各プレーンはデータ消去の単位である物理ブロックを複数有し、並列駆動される各チャネル並列動作要素内の複数のメモリチップは複数のチャネル並列動作要素に跨ってそれぞれがインタリーブ可能な複数のバンクに分割されており、
前記コントローラは、複数のチャネル並列動作要素、複数のプレーン、複数のバンクを跨ぐ複数の物理ブロックの組み合わせとして論理ブロックを管理することを特徴とする請求項13に記載の情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012068974A JP2013200741A (ja) | 2012-03-26 | 2012-03-26 | 半導体記憶装置、その制御方法及び情報処理装置 |
US13/609,991 US8924636B2 (en) | 2012-02-23 | 2012-09-11 | Management information generating method, logical block constructing method, and semiconductor memory device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012068974A JP2013200741A (ja) | 2012-03-26 | 2012-03-26 | 半導体記憶装置、その制御方法及び情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013200741A true JP2013200741A (ja) | 2013-10-03 |
Family
ID=49520928
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012068974A Pending JP2013200741A (ja) | 2012-02-23 | 2012-03-26 | 半導体記憶装置、その制御方法及び情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2013200741A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9891825B2 (en) | 2015-01-23 | 2018-02-13 | Toshiba Memory Corporation | Memory system of increasing and decreasing first user capacity that is smaller than a second physical capacity |
US10310766B2 (en) | 2017-03-23 | 2019-06-04 | Toshiba Memory Corporation | Memory system and data relocating method |
JP2019168898A (ja) * | 2018-03-23 | 2019-10-03 | 東芝メモリ株式会社 | メモリシステム及びメモリシステムの制御方法 |
JP2020017134A (ja) * | 2018-07-26 | 2020-01-30 | キオクシア株式会社 | 記憶装置及び記憶制御方法 |
CN111562881A (zh) * | 2019-02-14 | 2020-08-21 | 株式会社日立制作所 | 多存储节点系统和多存储节点系统的容量管理方法 |
US20220197862A1 (en) * | 2020-12-17 | 2022-06-23 | SK Hynix Inc. | Journaling apparatus and method in a non-volatile memory system |
-
2012
- 2012-03-26 JP JP2012068974A patent/JP2013200741A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9891825B2 (en) | 2015-01-23 | 2018-02-13 | Toshiba Memory Corporation | Memory system of increasing and decreasing first user capacity that is smaller than a second physical capacity |
US10310766B2 (en) | 2017-03-23 | 2019-06-04 | Toshiba Memory Corporation | Memory system and data relocating method |
JP2019168898A (ja) * | 2018-03-23 | 2019-10-03 | 東芝メモリ株式会社 | メモリシステム及びメモリシステムの制御方法 |
JP7109949B2 (ja) | 2018-03-23 | 2022-08-01 | キオクシア株式会社 | メモリシステム及びメモリシステムの制御方法 |
JP2020017134A (ja) * | 2018-07-26 | 2020-01-30 | キオクシア株式会社 | 記憶装置及び記憶制御方法 |
JP7042716B2 (ja) | 2018-07-26 | 2022-03-28 | キオクシア株式会社 | 記憶装置及び記憶制御方法 |
CN111562881A (zh) * | 2019-02-14 | 2020-08-21 | 株式会社日立制作所 | 多存储节点系统和多存储节点系统的容量管理方法 |
CN111562881B (zh) * | 2019-02-14 | 2024-06-07 | 株式会社日立制作所 | 多存储节点系统和多存储节点系统的容量管理方法 |
US20220197862A1 (en) * | 2020-12-17 | 2022-06-23 | SK Hynix Inc. | Journaling apparatus and method in a non-volatile memory system |
US11704281B2 (en) * | 2020-12-17 | 2023-07-18 | SK Hynix Inc. | Journaling apparatus and method in a non-volatile memory system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8463986B2 (en) | Memory system and method of controlling memory system | |
US8924636B2 (en) | Management information generating method, logical block constructing method, and semiconductor memory device | |
JP5317689B2 (ja) | メモリシステム | |
JP5198245B2 (ja) | メモリシステム | |
US9043536B2 (en) | Method of recording mapping information, and memory controller and memory storage apparatus using the same | |
US8868842B2 (en) | Memory system, method of controlling memory system, and information processing apparatus | |
KR100823171B1 (ko) | 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법 | |
US10310739B2 (en) | Memory management method, memory control circuit unit and memory storage device | |
KR101552207B1 (ko) | 예비 영역을 가지는 반도체 메모리 장치 | |
JP2012008651A (ja) | 半導体記憶装置、その制御方法および情報処理装置 | |
US9201784B2 (en) | Semiconductor storage device and method for controlling nonvolatile semiconductor memory | |
US10620858B2 (en) | Data storage method, memory storage device and memory control circuit unit | |
US20150012687A1 (en) | Method for managing commands in command queue, memory control circuit unit and memory storage apparatus | |
JP2013200741A (ja) | 半導体記憶装置、その制御方法及び情報処理装置 | |
US11036429B2 (en) | Memory control method, memory storage device and memory control circuit unit to determine a source block using interleaving information | |
US11163694B2 (en) | Memory control method, memory storage device and memory control circuit unit | |
JP2013174975A (ja) | メモリシステムとそのデータ書き込み方法 | |
TW201403319A (zh) | 記憶體儲存裝置、其記憶體控制器與資料寫入方法 | |
US20210064284A1 (en) | Memory control method, memory storage device and memory control circuit unit | |
US9710374B2 (en) | Data writing method, memory controller and memory storage device | |
JP5694212B2 (ja) | 管理情報生成方法およびメモリシステム | |
JP2013200722A (ja) | 半導体記憶装置の論理ブロックの構築方法 | |
CN118796119A (zh) | 存储器管理方法与存储装置 | |
JP2022048701A (ja) | プロセッサ,情報処理装置,プログラム及び情報処理方法 | |
CN118747059A (zh) | 存储器管理方法与存储装置 |