コントローラおよびメモリシステム
【課題】データの消失を効率よく予防すること。
【解決手段】本発明の一つの実施形態によれば、コントローラは、読み出し検査実行部と、検査ブロック設定部と、タイミング決定部とを備えている。読み出し検査実行部は、不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックの読み出し検査を実行する。検査ブロック設定部は、不揮発性メモリが備える複数のブロックのうちから少なくとも1つに出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する。ここで、タイミング決定部は、検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて読み出し検査実行部による読み出し検査のタイミングを決定する。
【解決手段】本発明の一つの実施形態によれば、コントローラは、読み出し検査実行部と、検査ブロック設定部と、タイミング決定部とを備えている。読み出し検査実行部は、不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックの読み出し検査を実行する。検査ブロック設定部は、不揮発性メモリが備える複数のブロックのうちから少なくとも1つに出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する。ここで、タイミング決定部は、検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて読み出し検査実行部による読み出し検査のタイミングを決定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、コントローラおよびメモリシステムに関する。
【背景技術】
【0002】
コンピュータシステムに用いられるメモリシステムとして、NAND型のフラッシュメモリを備えるメモリチップを搭載したSSD(Solid State Drive)が注目されている。SSDは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【0003】
NAND型を含むフラッシュメモリは、浮遊ゲート電極に蓄えられた電荷が時間とともに抜けていくことによって記憶されたデータが失われるため、データ保持期間(データリテンション)が有限であるという制約を有する。したがって、記憶しているデータを保障するためには、データリテンションが経過する前に記憶しているデータの書き直しを行う必要がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第01/022232号
【特許文献2】特開2001−229698号公報
【特許文献3】特開2001−147862号公報
【特許文献4】特開平7−93988号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の一つの実施形態は、データの消失を効率よく予防するコントローラおよびメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一つの実施形態によれば、コントローラは、読み出し検査実行部と、検査ブロック設定部と、タイミング決定部とを備えている。読み出し検査実行部は、不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックの読み出し検査を実行する。検査ブロック設定部は、不揮発性メモリが備える複数のブロックのうちから少なくとも1つに出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する。ここで、タイミング決定部は、検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて読み出し検査実行部による読み出し検査のタイミングを決定する。
【図面の簡単な説明】
【0007】
【図1】図1は、本発明の第1の実施の形態にかかるSSDの構成例を示す図である。
【図2】図2は、メモリセルアレイに含まれる1個のブロックの構成例を示す回路図である。
【図3】図3は、1個のメモリセルトランジスタMTに2ビットの記憶を行う4値データ記憶方式での閾値分布の例を示している。
【図4】図4は、第1の実施形態の論物変換テーブルのデータ構成例を説明する図である。
【図5】図5は、第1の実施形態のSSDの動作を説明する図である。
【図6】図6は、第2の実施形態にかかるSSDの構成例を示す図である。
【図7】図7は、第2の実施形態の論物変換テーブルのデータ構成例を説明する図である。
【図8】図8は、読み書き制御部が設定する検査ブロックを説明する図である。
【図9】図9は、第2の実施形態のSSDの読み出し検査にかかる動作を説明する図である。
【図10】図10は、第2の実施形態のSSDのデータ書き込みにかかる動作を説明するフローチャートである。
【図11】図11は、パーソナルコンピュータの外観を示す斜視図である。
【図12】図12は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、本発明の実施の形態にかかるコントローラおよびメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。ここでは、メモリシステムの一例としてNAND型のフラッシュメモリを備えるSSDを例に挙げて説明するが、フラッシュメモリはNAND型だけに限定しない。
【0009】
(第1の実施形態)
図1は、本発明の第1の実施の形態にかかるSSDの構成例を示す図である。図示するように、SSD100は、パーソナルコンピュータなどのホスト装置200とATA(Advanced Technology Attachment)規格などの通信インタフェースで接続され、ホスト装置200の外部記憶装置として機能する。SSD100がホスト装置200から受信する書き込み/読み出し要求は、LBA(Logical Block Addressing)で定義されたアクセス対象の先頭アドレスとアクセス対象の領域の範囲を示すセクタサイズとが含まれている。なお、通信インタフェースはSATA規格に限らず、SAS(Serial Attached SCSI)、PCIe(PCI Express)など様々な通信インタフェース規格を採用することが可能である。
【0010】
SSD100は、NANDメモリ1と、ホスト装置200とNANDメモリ1との間のデータ転送を実行するドライブ制御回路2と、バッファメモリ3とを備えている。
【0011】
NANDメモリ1は、夫々個別に動作する複数(ここでは4つ)のメモリチップ11を備えて構成されている。メモリチップ11の夫々は、ホスト装置200からの書き込みデータを記憶するメモリセルアレイ111を備えている。
【0012】
メモリセルアレイ111は、消去の単位となるブロックを複数備えて構成される。図2は、メモリセルアレイ111に含まれる1個のブロックの構成例を示す回路図である。図示するように、各ブロックは、X方向に沿って順に配列された(m+1)個のNANDストリングを備えている(mは、0以上の整数)。(m+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
【0013】
各メモリセルトランジスタMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(metal oxide semiconductor field effect transistor)から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタMTは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタMTは、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
【0014】
各NANDストリングにおいて、(n+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルトランジスタMTから順に、制御ゲート電極がワード線WL0〜WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
【0015】
ワード線WL0〜WLqは、ブロック内のNANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続される。この同一のワード線WLに接続される(m+1)個のメモリセルトランジスタMTは1ページとして取り扱われ、このページごとにデータの書き込み及びデータの読み出しが行われる。
【0016】
また、ビット線BL0〜BLpは、ブロック間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
【0017】
図3は、1個のメモリセルトランジスタMTに2ビットの記憶を行う4値データ記憶方式での閾値分布の例を示している。4値データ記憶方式では、上位ページデータ“x”と下位ページデータ“y”で定義される4値データ“xy”の何れか一つをメモリセルトランジスタMTに保持可能である。この、4値データ“xy”は、メモリセルトランジスタMTの閾値電圧の順に、例えば、データ“11”、“10”、“01”、“00”が割り当てられる。データ“11”は、メモリセルトランジスタMTの閾値電圧が負の消去状態である。
【0018】
ここで、浮遊ゲート電極に蓄えられた電荷は、時間とともに抜けてゆくため、消去状態以外の状態のメモリセルトランジスタMTは、閾値電圧が時間の経過とともに徐々に低下して、結果として書き込んだ値が読み出せなくなってしまうことがある。したがって、書き込んだ値が読み出せなくなってしまうまでの期間(データリテンション)が経過する前にデータを再書き込みする処理が必要となる。
【0019】
再書き込みを行うための技術(以下、比較例にかかる技術という)として、全てのブロックについて最後に読み出した時間を内部管理データとして保持しておき、最後に読み出されてから電源オンとなっている時の積算時間(パワーオン時間)にして所定の時間(例えば1週間)が経過する毎にブロック内のデータの読み出し検査を実行するというものがある。読み出し検査の検査結果がNGであるとき、対象のブロックに格納されているデータの再書き込みがなされる。
【0020】
しかしながら、データリテンションは消去回数の増加に応じて短縮される。比較例にかかる技術によれば、検査周期を、消去回数が製品寿命に近くなった状態を想定した間隔に固定している。したがって、消去回数が少ない時期では検査間隔が不必要に短く、逆にリードディスターブによって近辺のメモリセルトランジスタMTの閾値を変動させてしまうという問題が生じる。
【0021】
また、電源オフ時においても浮遊ゲート電極から電荷が抜けていく。比較例にかかる技術によれば、電源オン時における経過時間しか考慮していないため、電源オフ状態が長く続いた場合にはデータの消失前に再書き込みできない虞があるという問題がある。
【0022】
これに対して、ホスト装置200からの書き込みデータや内部管理データなどの有効データが格納されているブロック(以下、アクティブブロックという)にかかる読み出し検査の頻度を低減するために、実施形態1では、アクティブブロックとは別に、読み出し検査を行うための専用のブロック(以下、検査ブロック)を用意し、当該検査ブロックに書き込まれた検査パターンデータの読み出し検査の検査結果に基づいてアクティブブロックにかかる読み出し検査を実行するか否かを決定するようにした。また、電源オフ時に閾値の低下が進行してデータの消失が発生する状態になった場合であっても定期的な検査パターンデータの読み出し検査を待つことなく再書き込みを行うことができるように、検査パターンデータの読み出し検査を電源オン時にも実行するようにした。
【0023】
なお、閾値が高いデータほどデータリテンションが短縮する傾向がある。そこで、アクティブブロックにおけるデータの消失の発生を事前に検知するために、検査パターンデータとして出来るだけ閾値が高い値を用いることとする。これにより、アクティブブロックにおいてデータの消失が発生する前に検査パターンデータの消失を発生せしめることができるので、検査パターンデータの消失を読み出し検査により検出したときにアクティブブロックの読み出し検査を実行することで、アクティブブロックにおけるデータの消失を予防することができるようになる。なお、ここでは、閾値が最も高い状態であるデータ“00”を検査パターンデータとする。
【0024】
図1に戻り、バッファメモリ3は、ホスト装置200とNANDメモリ1との間の転送データを一時格納するための転送データ一時記憶部31と、前述の検査パターンデータを一時格納するための検査パターンデータ一時記憶部32とを備えている。ホスト装置200から送信されてきたデータは、ドライブ制御回路2の制御の下、いったん転送データ一時記憶部31に格納され、その後、当該転送データ一時記憶部31から読み出されてNANDメモリ1に書き込まれる。また、NANDメモリ1に格納されているデータは、ドライブ制御回路2の制御の下、転送データ一時記憶部31を介してホスト装置200に送信される。
【0025】
また、バッファメモリ3には、NANDメモリ1の物理アドレスとLBAとを対応付ける論物変換テーブル33が格納される。論物変換テーブル33の詳細は後述する。
【0026】
なお、バッファメモリ3は、例えばDRAM(Dynamic Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)など、NANDメモリ1よりも高速動作可能なメモリで構成される。
【0027】
ドライブ制御回路2は、読み書き制御部21、スクランブル処理部22、およびECC回路23を備えている。
【0028】
読み書き制御部21は、NANDメモリ1へのデータ書き込みを制御する。NANDメモリ1内部における書き換え回数分布の極端な偏りの発生により特定の領域が摩耗して動作不能になることを防ぐため、ホスト装置200からの書き込み要求時には、書き換え回数が少ない領域に優先して書き込みを行い、書き換え回数分布を平滑化するスタティックウェアレベリングという書き込み方式が存在する。読み書き制御部21は、転送データ一時記憶部31からNANDメモリ1にデータ転送を行う際には、スタティックウェアレベリング方式に基づいて、書き換え回数ができるだけ少ないブロックを書き込み先に指定する。なお、読み書き制御部21は、転送データの書き込みを実行する毎に論物変換テーブル33を更新する。
【0029】
図4は、第1の実施形態の論物変換テーブル33のデータ構成例を説明する図である。論物変換テーブル33は、ブロック毎に物理アドレスにして昇順にエントリが登録されている。そして、各エントリは、ブロックがアクティブブロックであるか、または有効データが格納されていないフリーブロックであるかを示す有効/無効フラグが格納されるフィールドと、ブロックの先頭が割り当てられる論理アドレスとしてのLBAが格納されるフィールドと、累積の消去回数が格納される領域とを備えている。有効な有効/無効フラグは、対象のブロックはアクティブブロックであることを示し、無効な有効/無効フラグは、対象のブロックはフリーブロックであることを示す。なお、論物変換テーブル33のエントリは、検査ブロックであるか否かを示すフラグ情報が格納されるフィールドを備えていてもよい。また、論物変換テーブル33は、ブロック毎にエントリが昇順に登録されるのではなく、降順に登録されるようにしてもよい。また、論物変換テーブル33の各エントリは、ブロックの先頭の物理ブロックが格納されるフィールドを備えるようにしてもよい。
【0030】
また、読み書き制御部21は、フリーブロックに検査パターンデータを書き込んで検査ブロックを設定する検査ブロック設定部24と、アクティブブロックの読み出し検査を実行する読み出し検査実行部25と、検査ブロックに発生したビット反転数に基づいて前記読み出し検査の実行タイミングを決定するタイミング決定部26とを備えている。なお、検査ブロック設定部24が検査ブロックに検査パターンデータを書き込む際には、書き込み対象の検査パターンデータを検査パターンデータ一時記憶部32に用意する。タイミング決定部26が検査ブロックに発生したビット反転数を測定する際には、検査パターンデータをNANDメモリ1から検査パターンデータ一時記憶部32に読み出す。
【0031】
ECC回路23は、誤り訂正符号のエンコードおよびデコードを行う。誤り訂正符号は、例えば、ハミング符号、BCH(Bose Chaudhuri Hocquenghem)符号、RS(Reed Solomon)符号、或いはLDPC(Low Density Parity Check)符号等であり、ECC回路23は、転送データ一時記憶部31に格納されている転送データがNANDメモリ1に書き込まれる際に付与する。また、ECC回路23は、NANDメモリ1から読み出されたデータに付与されている誤り訂正符号に基づいて当該データの誤り訂正を実行し、誤り訂正後のデータを転送データ一時記憶部31に格納する。
【0032】
スクランブル処理部22は、誤り訂正符号が付されたデータをNANDメモリ1に書き込む際に、当該データと所定の方法で作成したランダムデータとの排他的論理和を演算し、得られたデータを書き込む。例えば書き込み対象のデータが同一の値が連続するデータであっても、書き込み時にこの処理によってランダム化されるので、プログラムディスターブやリードディスターブの問題を緩和し、データの信頼性を向上することができる。以降、書き込みデータとランダムデータとの排他的論理和を演算する処理をスクランブル処理ということとする。
【0033】
また、スクランブル処理部22は、NANDメモリ1からデータを読み出す際に、読み出したデータとスクランブル処理時と同一のランダムデータとの排他的論理和を演算してスクランブル処理前のデータを求め、得られたデータをECC回路23に送る。このスクランブル処理前のデータを求める処理を復元処理ということとする。
【0034】
ここで、スクランブル処理部22は、検査パターンデータをスクランブル処理の対象から外す。そのために、検査ブロック設定部24が検査パターンデータを書き込む際や、タイミング決定部26が検査パターンデータを読み出す際には、スクランブル処理(および復元処理)を無効とする旨の通知であるスクランブル処理無効通知を発行する。スクランブル処理部22は、スクランブル処理無効通知を受信しているときにはスクランブル処理または復元処理を実行し、スクランブル処理無効通知を受信していないときにはスクランブル処理および復元処理を実行しない。
【0035】
次に、本発明の実施形態1のSSD100の動作を説明する。図5は、第1の実施形態のSSD100の動作を説明する図である。
【0036】
出荷状態から電源オンされて動作がスタートする。まず、検査ブロック設定部24は、検査ブロックとして使用するブロックをフリーブロックのうちから選択する(ステップS1)。
【0037】
ここでは、検査ブロックはメモリチップ11毎に一つずつ選択されるとして説明するが、検査ブロックは、メモリチップ11毎に2以上の数だけ選択されるようにしてもよいし、NANDメモリ1全体で1以上の数だけ選択されるようにしてもよい。メモリチップ11毎に検査ブロックが選択される場合、以降の動作はメモリチップ11毎に実行される。NANDメモリ1全体から検査ブロックが選択される場合、以降の動作はNANDメモリ1全体のブロックを対象として実行される。なお、メモリチップ11は、製造プロセスのばらつきにより夫々データリテンションが異なる場合がある。検査ブロックをメモリチップ11毎に設定することによって、メモリチップ11毎にアクティブブロックの読み出し検査のタイミングを決めることができるので、NANDメモリ1全体のブロックから検査ブロックを設定する場合に比べてより効率的にデータの消失を予防することができるようになる。
【0038】
ステップS1の後、検査ブロック設定部24は、選択した検査ブロックに検査パターンデータを書き込む(ステップS2)。ステップS2の処理においては、検査ブロック設定部24は、検査パターンデータ一時記憶部32に1ブロック分が全てデータ“11”となっている検査パターンデータを用意して、スクランブル処理無効通知をアサートする。スクランブル処理部22は、検査パターンデータ一時記憶部32に格納されている検査パターンデータをスクランブル処理を実行せずに検査ブロックに書き込む。検査パターンデータの書き込み後、検査ブロック設定部24は、スクランブル処理無効通知をデアサートする。
【0039】
続いて、タイミング決定部26は、現時点が電源オンがなされたタイミングまたは前回の読み出し検査からパワーオン時間にして所定の時間が経過したタイミング(定期検査タイミング)に該当するか否かを判定する(ステップS3)。現時点が前述の何れのタイミングにも該当しない場合(ステップS3、No)、タイミング決定部26は、ステップS3の判定処理を再度実行する。
【0040】
現時点が前述の何れか1つ(もしくは2つ)のタイミングに該当する場合(ステップS3、Yes)、タイミング決定部26は、検査ブロック内の検査パターンデータを検査パターンデータ一時記憶部32に読み出して(ステップS4)、読み出した検査パターンデータに含まれるビット反転数が予め決められた閾値を超えたか否かを判定する(ステップS5)。
【0041】
なお、ステップS2における書き込みの際と同様に、タイミング決定部26は、検査パターンデータの読み出しの際には、スクランブル処理無効通知をアサートし、検査パターンデータの読み出しが終わると、スクランブル処理無効通知をデアサートする。
【0042】
ステップS5の判定処理において、検査パターンに含まれるビット反転数が前記閾値を超えていない場合(ステップS5、No)、タイミング決定部26は、ステップS3の判定処理を実行する。検査パターンに含まれるビット反転数が前記閾値を超えた場合(ステップS5、Yes)、読み出し検査実行部25は、ステップS6〜ステップS10の処理においてアクティブブロックの読み出し検査を実行する。
【0043】
なお、検査パターンデータは、閾値が最も高い値で構成されているため、スクランブル処理されて閾値が最も高い値以外の値も含んでいるデータよりも閾値低下によるビット反転が発生しやすい。このため、ステップS5の判定処理に使用する閾値を、検査パターンデータおよびスクランブル処理されて書き込まれるデータのビット反転の経時変化を予め実験などにより求め、求めたビット反転の経時変化に基づいて定めるようにしてもよい。例えば、スクランブル処理されて書き込まれたデータにECC回路23が訂正不能となる程度にビット反転が発生する時点の検査パターンデータのビット反転数を求め、当該求めた検査パターンデータのビット反転数よりも所定の数だけ少ない数をステップS5の判定処理の閾値としてもよい。このようにすることによって、アクティブブロックに訂正不能なデータエラーが発生する前にアクティブブロックの再書き込みを実行することができるようになる。
【0044】
また、ここでは、メモリセルアレイ111を構成するメモリセルトランジスタMTは、4値のデータを記憶し、検査パターンデータをデータ“11”としているので、ビット反転とは、メモリセルトランジスタMTに格納されているデータが検査パターンデータ(即ちデータ“11”)以外の値となっていることを指す。
【0045】
ステップS6において、読み出し検査実行部25は、読み出し検査が未実行のアクティブブロックがあるか否かを判定する。読み出し検査が未実行のアクティブブロックがある場合(ステップS6、Yes)、読み出し検査が未実行のアクティブブロックのうちの1つからデータを読み出して(ステップS7)、読み出したデータにデータエラーがあるか否かを判定する(ステップS8)。
【0046】
データエラーが生じているか否かは、ECC回路23が誤りを検出して訂正を行ったか否かを確認することで判定することができる。即ち、読み出し検査実行部25は、誤り(ビット反転)が検出され、当該誤りが訂正された場合には、データエラーが生じていると判定し、誤りが検出されなかった場合には、データエラーが生じていないと判定する。
【0047】
なお、ビット反転は定常的に発生する可能性がある。したがって、ステップS8の判定処理において、ビット反転が発生しているか否かを判定するのではなく、ECC回路23による誤り訂正が不可能となるビット反転数に基づいてビット反転数にかかる閾値を予め設定しておき、ビット反転数が当該閾値を超えたとき、ステップS8、Yes以降の処理に進み、ビット反転数が当該閾値を超えていないとき、ステップS8、No以降の処理に進むようにしてもよい。
【0048】
データエラーが生じていた場合(ステップS8、Yes)、読み出し検査実行部25は、訂正後のデータをフリーブロックに再書き込みし(ステップS9)、ステップS6の判定処理を実行する。データエラーが生じていなかった場合(ステップS8、No)、読み出し検査実行部25は、ステップS9の処理をスキップする。
【0049】
ステップS6において、読み出し検査が未実行のアクティブブロックがなかった場合(ステップS6、No)、検査ブロック設定部24は、検査ブロックから検査パターンデータを消去して当該検査ブロックをフリーブロックとする(ステップS10)。そして、ステップS1に移行して、検査ブロックとして使用する新たなブロックをフリーブロックのうちから選択する。
【0050】
このように、本発明の第1の実施形態によれば、アクティブブロックの読み出し検査を実行する読み出し検査実行部25と、出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する検査ブロック設定部24と、検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいてアクティブブロックの読み出し検査の実行タイミングを決定するタイミング決定部26と、を備えるように構成したので、アクティブブロックにかかる読み出し検査の頻度を低減することができるので、データの消失を効率よく予防することができるようになる。また、アクティブブロックにかかる読み出し検査の頻度を低減することで、読み出し検査によるアクティブブロックに対するリードディスターブの影響を低減することができる。
【0051】
また、タイミング決定部26は、電源オン時に検査パターンデータのビット反転数を測定するように構成したので、電源オン時に読み出し検査を実行することができるようになる。
【0052】
また、タイミング決定部26は、スクランブル処理部22に指令して、検査パターンデータをスクランブル処理の対象から除外させる、ように構成したので、有効データよりも閾値の低下が起こりやすい検査パターンデータを書き込むことができるので、タイミング決定部26は、より早いタイミングでアクティブブロックにおける読み出し検査のタイミングを決めることができる。
【0053】
なお、ステップS6、Noを経由してステップS1に移行してきたとき、読み出し制御部21は、ステップS1において、論物変換テーブル33を参照して、フリーブロックのうちのできるだけ書き込み回数が多いブロックを検査ブロックに選択するとよい。前述のように、書き込み回数が多いほどデータリテンションが短縮する傾向があるので、できるだけ書き込み回数が多いブロックを検査ブロックとすることによって、タイミング決定部26は、より早いタイミングでアクティブブロックにおける読み出し検査のタイミングを決めることができる。
【0054】
また、ステップS9において、読み出し検査実行部25は、訂正後のデータをスタティックウェアレベリングに基づいて選択したフリーブロックに訂正後のデータを書き込むようにしてもよい。
【0055】
また、メモリセルトランジスタMTを3値以上のデータを記憶させるモード(MLCモード)と2値のデータを記憶させるモード(SLCモード)とを切り替えることが可能に構成されているものがある。そのような場合には、検査ブロックをMLCモードで駆動し、出来るだけ高い閾値のデータを検査パターンデータとするとよい。これにより、アクティブブロックをどのモードで駆動する場合でも、アクティブブロックよりも検査ブロックのほうがビット反転を起こしやすい状況をつくることができ、結果としてより効率的にデータリテンションの経過によるデータの消失を予防することができる。
【0056】
(第2の実施形態)
第2の実施形態によれば、アクティブブロックにかかる読み出し検査の実行タイミングにおいて読み出し検査をパスして再書き込みが行われず、結果として当該読み出し検査の実行タイミングにおいて再書き込みが行われたアクティブブロックよりも書き込み時からの経過時間が長くなってしまったアクティブブロックについても、データの消失を予防することができるように、アクティブブロックにかかる読み出し検査を実行した後であっても検査ブロックを残しておくようにする。
【0057】
図6は、第2の実施形態にかかるSSDの構成例を示す図である。図示するように、SSD300は、NANDメモリ1と、バッファメモリ3と、ドライブ制御回路4とを備えている。なお、ここでは、第1の実施形態と同じ構成要素には同一の符号を付して重複する説明を省略する。
【0058】
NANDメモリ1は、夫々メモリセルアレイ111を備える複数(ここでは4つ)のメモリチップ11を備えている。
【0059】
バッファメモリ3は、転送データ一時記憶部31および検査パターンデータ一時記憶部32が確保されている。また、バッファメモリ3には、論物変換テーブル34が格納される。論物変換テーブル34の詳細は後述する。
【0060】
ドライブ制御回路4は、読み書き制御部41、スクランブル処理部22、およびECC回路23を備えている。
【0061】
読み書き制御部41は、NANDメモリ1へのデータ書き込みを制御する。ブロック間で消去回数に差がある場合に、消去回数が少ないブロックに格納されているデータを消去回数が多いブロックにコピーすることで、消去回数が少ないブロックを積極的にフリーブロック化し、ブロック間の消去回数のばらつきを出来るだけ小さくするダイナミックウェアレベリングという手法がある。読み書き制御部41は、スタティックウェアレベリングに基づいてデータの書き込みを行うとともに、ダイナミックウェアレベリングに基づいてアクティブブロック内のデータのコピーを実行する。なお、読み書き制御部41は、転送データの書き込み(コピーを含む)を実行する毎に論物変換テーブル34を更新する。
【0062】
図7は、第2の実施形態の論物変換テーブル34のデータ構成例を説明する図である。論物変換テーブル34は、ブロック毎に物理アドレスにして昇順にエントリが登録されている。そして、各エントリは、ブロックがアクティブブロックであるか、または有効データが格納されていないフリーブロックであるかを示す有効/無効フラグが格納されるフィールドと、ブロックの先頭が割り当てられる論理アドレスとしてのLBAが格納されるフィールドと、消去時間が格納される領域と、累積の消去回数が格納される領域とを備えている。消去時間とは、パワーオン時間にして消去が実行された時間である。
【0063】
また、読み書き制御部41は、検査ブロックの設定を行う検査ブロック設定部42、アクティブブロックの読み出し検査を実行する読み出し検査実行部43、およびアクティブブロックの読み出し検査の実行タイミングを決定するタイミング決定部44を備えている。ここで、読み書き制御部41は、ダイナミックウェアレベリングを実行するので、ブロック間の消去回数の分布がダイナミックウェアレベリングを実行しない場合に比して狭くなる。検査ブロック設定部42は、アクティブブロックの消去回数の分布から消去回数が乖離しないように検査ブロックを設定する。具体的には、どのような消去回数のアクティブブロックであっても誤り訂正不能のデータエラーを予防することができるように、検査ブロック設定部42は、消去回数が異なる複数の検査ブロックを用意する。
【0064】
図8は、検査ブロック設定部42が設定する検査ブロックを説明する図である。本図の縦軸はアクティブブロック毎のブロック数を示し、横軸は消去回数を示している。出荷直後にデータ書き込みがなされた時点においては、全てのアクティブブロックは消去回数がゼロとなっており(分布(1))、消去回数がゼロの検査ブロックが1つ設定される。ブロックの消去回数の平均が増加してアクティブブロックの消去回数が分布(2)のように分布すると、分布(2)を網羅するように複数(ここでは3つ)の検査ブロックが設定される。さらにブロックの消去回数の平均が増加しても、ダイナミックウェアレベリングの効果により、分布の範囲は一定に保たれる。分布(2)の状態からさらに消去回数が増加して、アクティブブロックの消去回数が分布(3)のように分布しても、分布(3)を網羅するように複数(ここでは3つ)の検査ブロックが設定される。
【0065】
図9は、第2の実施形態のSSD300の読み出し検査にかかる動作を説明する図である。ここでは、検査ブロックは、メモリチップ11毎に個別に設定されるものとして説明する。即ち、読み出し検査にかかる動作および後述するデータ書き込みにかかる動作はメモリチップ11毎に個別に実行される。なお、検査ブロックがNANDメモリ1全体のブロックから選択されて設定されるようにしてもかまわない。その場合には、読み出し検査にかかる動作およびデータ書き込みにかかる動作はNANDメモリ1のブロックを対象として実行される。
【0066】
図示するように、動作がスタートすると、タイミング決定部44は、現時点が電源オンがなされたタイミングまたは定期検査タイミングのうちの何れか1つ(または両方)に該当するか否かを判定する(ステップS21)。現時点が前述の何れのタイミングにも該当しない場合(ステップS21、No)、タイミング決定部44は、ステップS21の判定処理を再度実行する。
【0067】
現時点が前述の何れか1つ(または両方)のタイミングに該当する場合(ステップS21、Yes)、タイミング決定部44は、設定されている検査ブロックのうちの一つを選択して(ステップS22)、選択した検査ブロック内の検査パターンデータを検査パターンデータ一時記憶部32に読み出す(ステップS23)。そして、タイミング決定部44は、読み出した検査パターンデータに含まれるビット反転数の増分の割合、即ち前回の読み出し検査からのビット反転数の増分を検査ブロックのビット数から前回の読み出し検査時のビット反転数を減算した値で除した値が、予め決められた閾値を超えたか否かを判定する(ステップS24)。
【0068】
なお、ステップS24の判定処理で使用する閾値は、第1の実施形態におけるステップS5の判定処理に使用する閾値と同様の基準に基づいて定めておくようにしてよい。但し、ステップS24の判定処理で使用する閾値は、ビット反転数ではなく割合で与えられる。
【0069】
ビット反転数の増分の割合が予め決められた閾値を超えた場合(ステップS24、Yes)、タイミング決定部44は、ビット反転数が検査不能となる閾値を超えたか否かをさらに判定する(ステップS25)。検査不能となる閾値とは、反転ビット数が増加しすぎて、アクティブブロックの読み出し検査のタイミングを決めるための判定に使用するには十分な精度が担保できなくなる値をいう。
【0070】
ビット反転数が検査不能となる閾値を超えた場合(ステップS25、Yes)、タイミング決定部44は、当該ブロックをフリーブロック化し(ステップS26)、当該検査ブロックよりも消去時間が古いアクティブブロックを読み出し検査対象に設定する(ステップS27)。ビット反転数が検査不能となる閾値を超えていない場合(ステップS25、No)、タイミング決定部44は、検査ブロックのビット反転数を記録して(ステップS28)、ステップS27の処理を実行する。なお、ビット反転数の記録先はどのような場所であってもよく、例えばバッファメモリ3であってもよい。
【0071】
ステップS27の処理に続き、タイミング決定部44は、読み出し検査を未実行の検査ブロックがあるか否かを判定する(ステップS29)。未実行の検査ブロックがある場合(ステップS29、Yes)、タイミング決定部44は、ステップS21に移行して、未実行の検査ブロックのうちから検査ブロックを一つ選択する。未実行の検査ブロックがない場合(ステップS29、No)、読み出し検査実行部43は、ステップS30〜ステップS35の処理においてアクティブブロックの読み出し検査を実行する。
【0072】
まず、読み出し検査実行部43は、ステップS30において、読み出し検査対象のアクティブブロックがあるか否かを判定する(ステップS30)。読み出し検査対象のアクティブブロックがある場合(ステップS30、Yes)、読み出し検査実行部43は、読み出し検査対象のアクティブブロックを一つ選択する(ステップS31)。そして、読み出し検査実行部43は、選択したアクティブブロックからデータを読み出して(ステップS32)、読み出したデータにデータエラーがあるか否かを判定する(ステップS33)。ステップS33の判定処理は、ステップS8と同様の手法によって実行される。
【0073】
データエラーが生じていた場合(ステップS33、Yes)、読み出し検査実行部43は、訂正後のデータをフリーブロックに再書き込みし(ステップS34)、前記選択したアクティブブロックを読み出し検査対象から外す(ステップS35)。データエラーが生じていない場合(ステップS33、No)、読み出し検査実行部43は、ステップS34の処理をスキップする。読み出し検査実行部43は、ステップS35の処理を実行した後、ステップS30の判定処理を実行する。
【0074】
読み出し検査対象のアクティブブロックがない場合(ステップS30、No)、アクティブブロックの読み出し検査が終了となり、タイミング決定部44は、ステップS21の判定処理を実行する。
【0075】
図10は、第2の実施形態のSSD300のデータ書き込みにかかる動作を説明するフローチャートである。ここでは、一例として、読み書き制御部41は、消去回数の幅が50回程度に収まるようにダイナミックウェアレベリングを実行することとする。また、一例として、検査ブロック設定部42は、メモリチップ11の夫々について原則として3個の検査データを設定するものとする。
【0076】
図示するように、まず、検査ブロック設定部42は、フリーブロックのうち消去回数が最大のものを選択し、選択したフリーブロックをFB_maxとする(ステップS41)。そして、検査ブロック設定部42は、検査ブロックが存在するか否かを判定する(ステップS42)。検査ブロックが存在する場合(ステップS42、Yes)、検査ブロックのうち消去回数が最大のものをCB_maxとする(ステップS43)。なお、名称の先頭に「EC」を付して、そのブロックの消去回数を表記することとする。即ち、例えば消去回数が最大の検査ブロックの消去回数を、「ECCB_max」と表記する。
【0077】
ステップS43の処理の後、検査ブロック設定部42は、消去回数が最大の検査ブロックの消去回数ECCB_maxに50を加算した値が消去回数が最大のフリーブロックの消去回数ECFB_maxよりも小さいか否かを判定する(ステップS44)。ECCB_maxに50を加算した値がECFB_maxよりも小さい場合(ステップS44、Yes)、検査ブロック設定部42は、FB_maxを検査ブロックに設定し、当該設定した検査ブロックに検査パターンデータを書き込む(ステップS45)。その際に、検査ブロック設定部42は、書き込んだ検査パターンデータのビット反転数を記録しておく(ステップS46)。なお、新たに追加した検査パターンに検査パターンデータを書き込んだ直後においては、ビット反転数はゼロであるので、ゼロ値が記録される。
【0078】
検査ブロックが存在しなかった場合(ステップS42、No)、検査ブロック設定部42は、ステップS43およびステップS44の処理をスキップする。
【0079】
検査ブロック設定部42は、ステップS46の処理の後、検査ブロックが3つ以上存在するか否かを判定する(ステップS47)。検査ブロックが3つ以上存在する場合(ステップS47、Yes)、検査ブロック設定部42は、検査ブロックのうち消去回数が最小のものをCB_minとし(ステップS48)、アクティブブロックのうち消去回数が最小のものをAC_minとする(ステップS49)。
【0080】
そして、検査ブロック設定部42は、消去回数が最小の検査ブロックの消去回数ECCB_minが消去回数が最小のアクティブブロックの消去回数ECAC_minよりも小さいか否かを判定する(ステップS50)。ECCB_minがECAC_minよりも小さい場合(ステップS50、Yes)、検査ブロック設定部42は、CB_minをフリーブロック化する(ステップS51)。ECCB_minがECAC_minよりも大きい場合(ステップS50、No)、検査ブロック設定部42は、ステップS51の処理をスキップする。
【0081】
続いて、読み書き制御部41は、フリーブロックのうち消去回数が最小のものをFB_minとし(ステップS52)、ECAC_minがフリーブロックFB_minの消去回数ECFB_minから50を減算した値よりも大きいか否かを判定する(ステップS53)。ECAC_minがECFB_minから50を減算した値よりも大きい場合(ステップS53、Yes)、読み書き制御部41は、AC_minに書き込まれていたデータをFB_minに移動させ、当該移動によりフリーブロックとなったブロックをFB_minとする(ステップS54)。そして、読み書き制御部41は、書き込み対象のデータをFB_minに書き込み(ステップS55)、データ書き込み時の動作を終了する。ECAC_minがECFB_minから50を減算した値よりも小さい場合(ステップS53、No)、読み書き制御部41は、ステップS54の処理をスキップする。
【0082】
なお、検査ブロック設定部42は、アクティブブロックの消去回数の分布を網羅するように消去回数が異なる複数のブロックを検査ブロックに設定するために、消去回数が最大のフリーブロックの消去回数が消去回数が最大の検査ブロックの消去回数を監視して、当該消去回数が所定の数(ここでは50)だけ増加する毎に検査ブロックを追加するようにしている。しかしながら、第2の実施形態においては、ダイナミックウェアレベリングの効果によって消去回数の分布の形状がほぼ一定に保たれるので、検査ブロックを追加するタイミングを決めるための監視対象は、フリーブロックの最大消去回数に限定されない。例えば、アクティブブロックの最大消去回数を監視対象とするようにしてもよいし、フリーブロックおよびアクティブブロックを合わせたブロックの最大消去回数を監視対象とするようにしてもよい。また、最大消去回数ではなく、平均消去回数や最小消去回数を監視対象とすることもできる。
【0083】
また、消去回数が最大のフリーブロックを新たな検査ブロックに設定するものとしているが、新たな検査ブロックとするのはフリーブロックでなくてもよい。例えば、消去回数が最大のアクティブブロックを新たな検査ブロックに設定するようにしてもよい。アクティブブロックを検査ブロックとする場合には、当該アクティブブロック内のデータをフリーブロックに転送した後に検査パターンデータを書き込むようにするとよい。
【0084】
このように、本発明の第2の実施形態によれば、読み書き制御部41は、ダイナミックウェアレベリングを実行するとともに、検査ブロック設定部42は、アクティブブロックの消去回数の分布を網羅するように消去回数が異なる複数のブロックを検査ブロックに設定する、ように構成したので、消去回数が異なるアクティブブロックが含まれている場合であっても、夫々のアクティブブロックのデータの消失を効率的に予防することができる。
【0085】
また、検査ブロック設定部42は、フリーブロックのうちの消去回数が最大のブロックの消去回数が検査ブロックのうちの消去回数が最大のブロックに所定の数を加算した値よりも大きいとき、当該有効データが格納されていない消去回数が最大のブロックを新たに検査ブロックに設定する、ように構成した。
【0086】
また、検査ブロック設定部42は、消去回数が最小の検査ブロックの消去回数が消去回数が最小のアクティブブロックの消去回数よりも小さいとき、当該消去回数が最小の検査ブロックを検査ブロックから削除する、ように構成した。
【0087】
また、検査ブロック設定部42は、検査ブロックを設定する毎に設定した時刻を記録しておき、タイミング決定部44は、ビット反転数の増分のビット反転していない数に対する割合が所定の閾値を超えた検査ブロックよりも古いブロックを読み出し検査の対象に設定する、ように構成したので、読み出し検査対象のアクティブブロック数を効率的に減らすことができる。
【0088】
(第3の実施形態)
図11は、第1の実施形態のSSD100を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
【0089】
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット、及びSSD100等が収容されている。
【0090】
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
【0091】
SSD100は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【0092】
図12は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
【0093】
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
【0094】
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
【0095】
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
【0096】
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
【0097】
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
【0098】
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
【0099】
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
【0100】
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD100を、ATAインタフェースを介して制御する。
【0101】
パーソナルコンピュータ1200は、セクタ単位でSSD100へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がSSD100に入力される。
【0102】
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
【0103】
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
【0104】
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【0105】
なお、パーソナルコンピュータ1200には、第2の実施形態にて説明したSSD300を搭載することができる。
【0106】
なお、各実施形態における各機能構成部(読み書き制御部21および読み書き制御部21が備える各機能構成部、スクランブル処理部22、ECC回路23、ならびに読み書き制御部41および読み書き制御部41が備える各機能構成部)は、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現することができる。このため、各機能ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施態様、或いはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれる。
【0107】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0108】
1 NANDメモリ、2、4 ドライブ制御回路、3 バッファメモリ、11 メモリチップ、21、41 読み書き制御部、22 スクランブル処理部、23 ECC回路、31 転送データ一時記憶部、32 検査パターンデータ一時記憶部、33、34 論物変換テーブル、100、300 SSD、111 メモリセルアレイ、200 ホスト装置。
【技術分野】
【0001】
本発明の実施形態は、コントローラおよびメモリシステムに関する。
【背景技術】
【0002】
コンピュータシステムに用いられるメモリシステムとして、NAND型のフラッシュメモリを備えるメモリチップを搭載したSSD(Solid State Drive)が注目されている。SSDは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【0003】
NAND型を含むフラッシュメモリは、浮遊ゲート電極に蓄えられた電荷が時間とともに抜けていくことによって記憶されたデータが失われるため、データ保持期間(データリテンション)が有限であるという制約を有する。したがって、記憶しているデータを保障するためには、データリテンションが経過する前に記憶しているデータの書き直しを行う必要がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開第01/022232号
【特許文献2】特開2001−229698号公報
【特許文献3】特開2001−147862号公報
【特許文献4】特開平7−93988号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の一つの実施形態は、データの消失を効率よく予防するコントローラおよびメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一つの実施形態によれば、コントローラは、読み出し検査実行部と、検査ブロック設定部と、タイミング決定部とを備えている。読み出し検査実行部は、不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックの読み出し検査を実行する。検査ブロック設定部は、不揮発性メモリが備える複数のブロックのうちから少なくとも1つに出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する。ここで、タイミング決定部は、検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて読み出し検査実行部による読み出し検査のタイミングを決定する。
【図面の簡単な説明】
【0007】
【図1】図1は、本発明の第1の実施の形態にかかるSSDの構成例を示す図である。
【図2】図2は、メモリセルアレイに含まれる1個のブロックの構成例を示す回路図である。
【図3】図3は、1個のメモリセルトランジスタMTに2ビットの記憶を行う4値データ記憶方式での閾値分布の例を示している。
【図4】図4は、第1の実施形態の論物変換テーブルのデータ構成例を説明する図である。
【図5】図5は、第1の実施形態のSSDの動作を説明する図である。
【図6】図6は、第2の実施形態にかかるSSDの構成例を示す図である。
【図7】図7は、第2の実施形態の論物変換テーブルのデータ構成例を説明する図である。
【図8】図8は、読み書き制御部が設定する検査ブロックを説明する図である。
【図9】図9は、第2の実施形態のSSDの読み出し検査にかかる動作を説明する図である。
【図10】図10は、第2の実施形態のSSDのデータ書き込みにかかる動作を説明するフローチャートである。
【図11】図11は、パーソナルコンピュータの外観を示す斜視図である。
【図12】図12は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【0008】
以下に添付図面を参照して、本発明の実施の形態にかかるコントローラおよびメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。ここでは、メモリシステムの一例としてNAND型のフラッシュメモリを備えるSSDを例に挙げて説明するが、フラッシュメモリはNAND型だけに限定しない。
【0009】
(第1の実施形態)
図1は、本発明の第1の実施の形態にかかるSSDの構成例を示す図である。図示するように、SSD100は、パーソナルコンピュータなどのホスト装置200とATA(Advanced Technology Attachment)規格などの通信インタフェースで接続され、ホスト装置200の外部記憶装置として機能する。SSD100がホスト装置200から受信する書き込み/読み出し要求は、LBA(Logical Block Addressing)で定義されたアクセス対象の先頭アドレスとアクセス対象の領域の範囲を示すセクタサイズとが含まれている。なお、通信インタフェースはSATA規格に限らず、SAS(Serial Attached SCSI)、PCIe(PCI Express)など様々な通信インタフェース規格を採用することが可能である。
【0010】
SSD100は、NANDメモリ1と、ホスト装置200とNANDメモリ1との間のデータ転送を実行するドライブ制御回路2と、バッファメモリ3とを備えている。
【0011】
NANDメモリ1は、夫々個別に動作する複数(ここでは4つ)のメモリチップ11を備えて構成されている。メモリチップ11の夫々は、ホスト装置200からの書き込みデータを記憶するメモリセルアレイ111を備えている。
【0012】
メモリセルアレイ111は、消去の単位となるブロックを複数備えて構成される。図2は、メモリセルアレイ111に含まれる1個のブロックの構成例を示す回路図である。図示するように、各ブロックは、X方向に沿って順に配列された(m+1)個のNANDストリングを備えている(mは、0以上の整数)。(m+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
【0013】
各メモリセルトランジスタMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(metal oxide semiconductor field effect transistor)から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタMTは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタMTは、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
【0014】
各NANDストリングにおいて、(n+1)個のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルトランジスタMTから順に、制御ゲート電極がワード線WL0〜WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMTのソースは選択トランジスタST2のドレインに接続されている。
【0015】
ワード線WL0〜WLqは、ブロック内のNANDストリング間で、メモリセルトランジスタMTの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタMTの制御ゲート電極は、同一のワード線WLに接続される。この同一のワード線WLに接続される(m+1)個のメモリセルトランジスタMTは1ページとして取り扱われ、このページごとにデータの書き込み及びデータの読み出しが行われる。
【0016】
また、ビット線BL0〜BLpは、ブロック間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
【0017】
図3は、1個のメモリセルトランジスタMTに2ビットの記憶を行う4値データ記憶方式での閾値分布の例を示している。4値データ記憶方式では、上位ページデータ“x”と下位ページデータ“y”で定義される4値データ“xy”の何れか一つをメモリセルトランジスタMTに保持可能である。この、4値データ“xy”は、メモリセルトランジスタMTの閾値電圧の順に、例えば、データ“11”、“10”、“01”、“00”が割り当てられる。データ“11”は、メモリセルトランジスタMTの閾値電圧が負の消去状態である。
【0018】
ここで、浮遊ゲート電極に蓄えられた電荷は、時間とともに抜けてゆくため、消去状態以外の状態のメモリセルトランジスタMTは、閾値電圧が時間の経過とともに徐々に低下して、結果として書き込んだ値が読み出せなくなってしまうことがある。したがって、書き込んだ値が読み出せなくなってしまうまでの期間(データリテンション)が経過する前にデータを再書き込みする処理が必要となる。
【0019】
再書き込みを行うための技術(以下、比較例にかかる技術という)として、全てのブロックについて最後に読み出した時間を内部管理データとして保持しておき、最後に読み出されてから電源オンとなっている時の積算時間(パワーオン時間)にして所定の時間(例えば1週間)が経過する毎にブロック内のデータの読み出し検査を実行するというものがある。読み出し検査の検査結果がNGであるとき、対象のブロックに格納されているデータの再書き込みがなされる。
【0020】
しかしながら、データリテンションは消去回数の増加に応じて短縮される。比較例にかかる技術によれば、検査周期を、消去回数が製品寿命に近くなった状態を想定した間隔に固定している。したがって、消去回数が少ない時期では検査間隔が不必要に短く、逆にリードディスターブによって近辺のメモリセルトランジスタMTの閾値を変動させてしまうという問題が生じる。
【0021】
また、電源オフ時においても浮遊ゲート電極から電荷が抜けていく。比較例にかかる技術によれば、電源オン時における経過時間しか考慮していないため、電源オフ状態が長く続いた場合にはデータの消失前に再書き込みできない虞があるという問題がある。
【0022】
これに対して、ホスト装置200からの書き込みデータや内部管理データなどの有効データが格納されているブロック(以下、アクティブブロックという)にかかる読み出し検査の頻度を低減するために、実施形態1では、アクティブブロックとは別に、読み出し検査を行うための専用のブロック(以下、検査ブロック)を用意し、当該検査ブロックに書き込まれた検査パターンデータの読み出し検査の検査結果に基づいてアクティブブロックにかかる読み出し検査を実行するか否かを決定するようにした。また、電源オフ時に閾値の低下が進行してデータの消失が発生する状態になった場合であっても定期的な検査パターンデータの読み出し検査を待つことなく再書き込みを行うことができるように、検査パターンデータの読み出し検査を電源オン時にも実行するようにした。
【0023】
なお、閾値が高いデータほどデータリテンションが短縮する傾向がある。そこで、アクティブブロックにおけるデータの消失の発生を事前に検知するために、検査パターンデータとして出来るだけ閾値が高い値を用いることとする。これにより、アクティブブロックにおいてデータの消失が発生する前に検査パターンデータの消失を発生せしめることができるので、検査パターンデータの消失を読み出し検査により検出したときにアクティブブロックの読み出し検査を実行することで、アクティブブロックにおけるデータの消失を予防することができるようになる。なお、ここでは、閾値が最も高い状態であるデータ“00”を検査パターンデータとする。
【0024】
図1に戻り、バッファメモリ3は、ホスト装置200とNANDメモリ1との間の転送データを一時格納するための転送データ一時記憶部31と、前述の検査パターンデータを一時格納するための検査パターンデータ一時記憶部32とを備えている。ホスト装置200から送信されてきたデータは、ドライブ制御回路2の制御の下、いったん転送データ一時記憶部31に格納され、その後、当該転送データ一時記憶部31から読み出されてNANDメモリ1に書き込まれる。また、NANDメモリ1に格納されているデータは、ドライブ制御回路2の制御の下、転送データ一時記憶部31を介してホスト装置200に送信される。
【0025】
また、バッファメモリ3には、NANDメモリ1の物理アドレスとLBAとを対応付ける論物変換テーブル33が格納される。論物変換テーブル33の詳細は後述する。
【0026】
なお、バッファメモリ3は、例えばDRAM(Dynamic Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)など、NANDメモリ1よりも高速動作可能なメモリで構成される。
【0027】
ドライブ制御回路2は、読み書き制御部21、スクランブル処理部22、およびECC回路23を備えている。
【0028】
読み書き制御部21は、NANDメモリ1へのデータ書き込みを制御する。NANDメモリ1内部における書き換え回数分布の極端な偏りの発生により特定の領域が摩耗して動作不能になることを防ぐため、ホスト装置200からの書き込み要求時には、書き換え回数が少ない領域に優先して書き込みを行い、書き換え回数分布を平滑化するスタティックウェアレベリングという書き込み方式が存在する。読み書き制御部21は、転送データ一時記憶部31からNANDメモリ1にデータ転送を行う際には、スタティックウェアレベリング方式に基づいて、書き換え回数ができるだけ少ないブロックを書き込み先に指定する。なお、読み書き制御部21は、転送データの書き込みを実行する毎に論物変換テーブル33を更新する。
【0029】
図4は、第1の実施形態の論物変換テーブル33のデータ構成例を説明する図である。論物変換テーブル33は、ブロック毎に物理アドレスにして昇順にエントリが登録されている。そして、各エントリは、ブロックがアクティブブロックであるか、または有効データが格納されていないフリーブロックであるかを示す有効/無効フラグが格納されるフィールドと、ブロックの先頭が割り当てられる論理アドレスとしてのLBAが格納されるフィールドと、累積の消去回数が格納される領域とを備えている。有効な有効/無効フラグは、対象のブロックはアクティブブロックであることを示し、無効な有効/無効フラグは、対象のブロックはフリーブロックであることを示す。なお、論物変換テーブル33のエントリは、検査ブロックであるか否かを示すフラグ情報が格納されるフィールドを備えていてもよい。また、論物変換テーブル33は、ブロック毎にエントリが昇順に登録されるのではなく、降順に登録されるようにしてもよい。また、論物変換テーブル33の各エントリは、ブロックの先頭の物理ブロックが格納されるフィールドを備えるようにしてもよい。
【0030】
また、読み書き制御部21は、フリーブロックに検査パターンデータを書き込んで検査ブロックを設定する検査ブロック設定部24と、アクティブブロックの読み出し検査を実行する読み出し検査実行部25と、検査ブロックに発生したビット反転数に基づいて前記読み出し検査の実行タイミングを決定するタイミング決定部26とを備えている。なお、検査ブロック設定部24が検査ブロックに検査パターンデータを書き込む際には、書き込み対象の検査パターンデータを検査パターンデータ一時記憶部32に用意する。タイミング決定部26が検査ブロックに発生したビット反転数を測定する際には、検査パターンデータをNANDメモリ1から検査パターンデータ一時記憶部32に読み出す。
【0031】
ECC回路23は、誤り訂正符号のエンコードおよびデコードを行う。誤り訂正符号は、例えば、ハミング符号、BCH(Bose Chaudhuri Hocquenghem)符号、RS(Reed Solomon)符号、或いはLDPC(Low Density Parity Check)符号等であり、ECC回路23は、転送データ一時記憶部31に格納されている転送データがNANDメモリ1に書き込まれる際に付与する。また、ECC回路23は、NANDメモリ1から読み出されたデータに付与されている誤り訂正符号に基づいて当該データの誤り訂正を実行し、誤り訂正後のデータを転送データ一時記憶部31に格納する。
【0032】
スクランブル処理部22は、誤り訂正符号が付されたデータをNANDメモリ1に書き込む際に、当該データと所定の方法で作成したランダムデータとの排他的論理和を演算し、得られたデータを書き込む。例えば書き込み対象のデータが同一の値が連続するデータであっても、書き込み時にこの処理によってランダム化されるので、プログラムディスターブやリードディスターブの問題を緩和し、データの信頼性を向上することができる。以降、書き込みデータとランダムデータとの排他的論理和を演算する処理をスクランブル処理ということとする。
【0033】
また、スクランブル処理部22は、NANDメモリ1からデータを読み出す際に、読み出したデータとスクランブル処理時と同一のランダムデータとの排他的論理和を演算してスクランブル処理前のデータを求め、得られたデータをECC回路23に送る。このスクランブル処理前のデータを求める処理を復元処理ということとする。
【0034】
ここで、スクランブル処理部22は、検査パターンデータをスクランブル処理の対象から外す。そのために、検査ブロック設定部24が検査パターンデータを書き込む際や、タイミング決定部26が検査パターンデータを読み出す際には、スクランブル処理(および復元処理)を無効とする旨の通知であるスクランブル処理無効通知を発行する。スクランブル処理部22は、スクランブル処理無効通知を受信しているときにはスクランブル処理または復元処理を実行し、スクランブル処理無効通知を受信していないときにはスクランブル処理および復元処理を実行しない。
【0035】
次に、本発明の実施形態1のSSD100の動作を説明する。図5は、第1の実施形態のSSD100の動作を説明する図である。
【0036】
出荷状態から電源オンされて動作がスタートする。まず、検査ブロック設定部24は、検査ブロックとして使用するブロックをフリーブロックのうちから選択する(ステップS1)。
【0037】
ここでは、検査ブロックはメモリチップ11毎に一つずつ選択されるとして説明するが、検査ブロックは、メモリチップ11毎に2以上の数だけ選択されるようにしてもよいし、NANDメモリ1全体で1以上の数だけ選択されるようにしてもよい。メモリチップ11毎に検査ブロックが選択される場合、以降の動作はメモリチップ11毎に実行される。NANDメモリ1全体から検査ブロックが選択される場合、以降の動作はNANDメモリ1全体のブロックを対象として実行される。なお、メモリチップ11は、製造プロセスのばらつきにより夫々データリテンションが異なる場合がある。検査ブロックをメモリチップ11毎に設定することによって、メモリチップ11毎にアクティブブロックの読み出し検査のタイミングを決めることができるので、NANDメモリ1全体のブロックから検査ブロックを設定する場合に比べてより効率的にデータの消失を予防することができるようになる。
【0038】
ステップS1の後、検査ブロック設定部24は、選択した検査ブロックに検査パターンデータを書き込む(ステップS2)。ステップS2の処理においては、検査ブロック設定部24は、検査パターンデータ一時記憶部32に1ブロック分が全てデータ“11”となっている検査パターンデータを用意して、スクランブル処理無効通知をアサートする。スクランブル処理部22は、検査パターンデータ一時記憶部32に格納されている検査パターンデータをスクランブル処理を実行せずに検査ブロックに書き込む。検査パターンデータの書き込み後、検査ブロック設定部24は、スクランブル処理無効通知をデアサートする。
【0039】
続いて、タイミング決定部26は、現時点が電源オンがなされたタイミングまたは前回の読み出し検査からパワーオン時間にして所定の時間が経過したタイミング(定期検査タイミング)に該当するか否かを判定する(ステップS3)。現時点が前述の何れのタイミングにも該当しない場合(ステップS3、No)、タイミング決定部26は、ステップS3の判定処理を再度実行する。
【0040】
現時点が前述の何れか1つ(もしくは2つ)のタイミングに該当する場合(ステップS3、Yes)、タイミング決定部26は、検査ブロック内の検査パターンデータを検査パターンデータ一時記憶部32に読み出して(ステップS4)、読み出した検査パターンデータに含まれるビット反転数が予め決められた閾値を超えたか否かを判定する(ステップS5)。
【0041】
なお、ステップS2における書き込みの際と同様に、タイミング決定部26は、検査パターンデータの読み出しの際には、スクランブル処理無効通知をアサートし、検査パターンデータの読み出しが終わると、スクランブル処理無効通知をデアサートする。
【0042】
ステップS5の判定処理において、検査パターンに含まれるビット反転数が前記閾値を超えていない場合(ステップS5、No)、タイミング決定部26は、ステップS3の判定処理を実行する。検査パターンに含まれるビット反転数が前記閾値を超えた場合(ステップS5、Yes)、読み出し検査実行部25は、ステップS6〜ステップS10の処理においてアクティブブロックの読み出し検査を実行する。
【0043】
なお、検査パターンデータは、閾値が最も高い値で構成されているため、スクランブル処理されて閾値が最も高い値以外の値も含んでいるデータよりも閾値低下によるビット反転が発生しやすい。このため、ステップS5の判定処理に使用する閾値を、検査パターンデータおよびスクランブル処理されて書き込まれるデータのビット反転の経時変化を予め実験などにより求め、求めたビット反転の経時変化に基づいて定めるようにしてもよい。例えば、スクランブル処理されて書き込まれたデータにECC回路23が訂正不能となる程度にビット反転が発生する時点の検査パターンデータのビット反転数を求め、当該求めた検査パターンデータのビット反転数よりも所定の数だけ少ない数をステップS5の判定処理の閾値としてもよい。このようにすることによって、アクティブブロックに訂正不能なデータエラーが発生する前にアクティブブロックの再書き込みを実行することができるようになる。
【0044】
また、ここでは、メモリセルアレイ111を構成するメモリセルトランジスタMTは、4値のデータを記憶し、検査パターンデータをデータ“11”としているので、ビット反転とは、メモリセルトランジスタMTに格納されているデータが検査パターンデータ(即ちデータ“11”)以外の値となっていることを指す。
【0045】
ステップS6において、読み出し検査実行部25は、読み出し検査が未実行のアクティブブロックがあるか否かを判定する。読み出し検査が未実行のアクティブブロックがある場合(ステップS6、Yes)、読み出し検査が未実行のアクティブブロックのうちの1つからデータを読み出して(ステップS7)、読み出したデータにデータエラーがあるか否かを判定する(ステップS8)。
【0046】
データエラーが生じているか否かは、ECC回路23が誤りを検出して訂正を行ったか否かを確認することで判定することができる。即ち、読み出し検査実行部25は、誤り(ビット反転)が検出され、当該誤りが訂正された場合には、データエラーが生じていると判定し、誤りが検出されなかった場合には、データエラーが生じていないと判定する。
【0047】
なお、ビット反転は定常的に発生する可能性がある。したがって、ステップS8の判定処理において、ビット反転が発生しているか否かを判定するのではなく、ECC回路23による誤り訂正が不可能となるビット反転数に基づいてビット反転数にかかる閾値を予め設定しておき、ビット反転数が当該閾値を超えたとき、ステップS8、Yes以降の処理に進み、ビット反転数が当該閾値を超えていないとき、ステップS8、No以降の処理に進むようにしてもよい。
【0048】
データエラーが生じていた場合(ステップS8、Yes)、読み出し検査実行部25は、訂正後のデータをフリーブロックに再書き込みし(ステップS9)、ステップS6の判定処理を実行する。データエラーが生じていなかった場合(ステップS8、No)、読み出し検査実行部25は、ステップS9の処理をスキップする。
【0049】
ステップS6において、読み出し検査が未実行のアクティブブロックがなかった場合(ステップS6、No)、検査ブロック設定部24は、検査ブロックから検査パターンデータを消去して当該検査ブロックをフリーブロックとする(ステップS10)。そして、ステップS1に移行して、検査ブロックとして使用する新たなブロックをフリーブロックのうちから選択する。
【0050】
このように、本発明の第1の実施形態によれば、アクティブブロックの読み出し検査を実行する読み出し検査実行部25と、出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する検査ブロック設定部24と、検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいてアクティブブロックの読み出し検査の実行タイミングを決定するタイミング決定部26と、を備えるように構成したので、アクティブブロックにかかる読み出し検査の頻度を低減することができるので、データの消失を効率よく予防することができるようになる。また、アクティブブロックにかかる読み出し検査の頻度を低減することで、読み出し検査によるアクティブブロックに対するリードディスターブの影響を低減することができる。
【0051】
また、タイミング決定部26は、電源オン時に検査パターンデータのビット反転数を測定するように構成したので、電源オン時に読み出し検査を実行することができるようになる。
【0052】
また、タイミング決定部26は、スクランブル処理部22に指令して、検査パターンデータをスクランブル処理の対象から除外させる、ように構成したので、有効データよりも閾値の低下が起こりやすい検査パターンデータを書き込むことができるので、タイミング決定部26は、より早いタイミングでアクティブブロックにおける読み出し検査のタイミングを決めることができる。
【0053】
なお、ステップS6、Noを経由してステップS1に移行してきたとき、読み出し制御部21は、ステップS1において、論物変換テーブル33を参照して、フリーブロックのうちのできるだけ書き込み回数が多いブロックを検査ブロックに選択するとよい。前述のように、書き込み回数が多いほどデータリテンションが短縮する傾向があるので、できるだけ書き込み回数が多いブロックを検査ブロックとすることによって、タイミング決定部26は、より早いタイミングでアクティブブロックにおける読み出し検査のタイミングを決めることができる。
【0054】
また、ステップS9において、読み出し検査実行部25は、訂正後のデータをスタティックウェアレベリングに基づいて選択したフリーブロックに訂正後のデータを書き込むようにしてもよい。
【0055】
また、メモリセルトランジスタMTを3値以上のデータを記憶させるモード(MLCモード)と2値のデータを記憶させるモード(SLCモード)とを切り替えることが可能に構成されているものがある。そのような場合には、検査ブロックをMLCモードで駆動し、出来るだけ高い閾値のデータを検査パターンデータとするとよい。これにより、アクティブブロックをどのモードで駆動する場合でも、アクティブブロックよりも検査ブロックのほうがビット反転を起こしやすい状況をつくることができ、結果としてより効率的にデータリテンションの経過によるデータの消失を予防することができる。
【0056】
(第2の実施形態)
第2の実施形態によれば、アクティブブロックにかかる読み出し検査の実行タイミングにおいて読み出し検査をパスして再書き込みが行われず、結果として当該読み出し検査の実行タイミングにおいて再書き込みが行われたアクティブブロックよりも書き込み時からの経過時間が長くなってしまったアクティブブロックについても、データの消失を予防することができるように、アクティブブロックにかかる読み出し検査を実行した後であっても検査ブロックを残しておくようにする。
【0057】
図6は、第2の実施形態にかかるSSDの構成例を示す図である。図示するように、SSD300は、NANDメモリ1と、バッファメモリ3と、ドライブ制御回路4とを備えている。なお、ここでは、第1の実施形態と同じ構成要素には同一の符号を付して重複する説明を省略する。
【0058】
NANDメモリ1は、夫々メモリセルアレイ111を備える複数(ここでは4つ)のメモリチップ11を備えている。
【0059】
バッファメモリ3は、転送データ一時記憶部31および検査パターンデータ一時記憶部32が確保されている。また、バッファメモリ3には、論物変換テーブル34が格納される。論物変換テーブル34の詳細は後述する。
【0060】
ドライブ制御回路4は、読み書き制御部41、スクランブル処理部22、およびECC回路23を備えている。
【0061】
読み書き制御部41は、NANDメモリ1へのデータ書き込みを制御する。ブロック間で消去回数に差がある場合に、消去回数が少ないブロックに格納されているデータを消去回数が多いブロックにコピーすることで、消去回数が少ないブロックを積極的にフリーブロック化し、ブロック間の消去回数のばらつきを出来るだけ小さくするダイナミックウェアレベリングという手法がある。読み書き制御部41は、スタティックウェアレベリングに基づいてデータの書き込みを行うとともに、ダイナミックウェアレベリングに基づいてアクティブブロック内のデータのコピーを実行する。なお、読み書き制御部41は、転送データの書き込み(コピーを含む)を実行する毎に論物変換テーブル34を更新する。
【0062】
図7は、第2の実施形態の論物変換テーブル34のデータ構成例を説明する図である。論物変換テーブル34は、ブロック毎に物理アドレスにして昇順にエントリが登録されている。そして、各エントリは、ブロックがアクティブブロックであるか、または有効データが格納されていないフリーブロックであるかを示す有効/無効フラグが格納されるフィールドと、ブロックの先頭が割り当てられる論理アドレスとしてのLBAが格納されるフィールドと、消去時間が格納される領域と、累積の消去回数が格納される領域とを備えている。消去時間とは、パワーオン時間にして消去が実行された時間である。
【0063】
また、読み書き制御部41は、検査ブロックの設定を行う検査ブロック設定部42、アクティブブロックの読み出し検査を実行する読み出し検査実行部43、およびアクティブブロックの読み出し検査の実行タイミングを決定するタイミング決定部44を備えている。ここで、読み書き制御部41は、ダイナミックウェアレベリングを実行するので、ブロック間の消去回数の分布がダイナミックウェアレベリングを実行しない場合に比して狭くなる。検査ブロック設定部42は、アクティブブロックの消去回数の分布から消去回数が乖離しないように検査ブロックを設定する。具体的には、どのような消去回数のアクティブブロックであっても誤り訂正不能のデータエラーを予防することができるように、検査ブロック設定部42は、消去回数が異なる複数の検査ブロックを用意する。
【0064】
図8は、検査ブロック設定部42が設定する検査ブロックを説明する図である。本図の縦軸はアクティブブロック毎のブロック数を示し、横軸は消去回数を示している。出荷直後にデータ書き込みがなされた時点においては、全てのアクティブブロックは消去回数がゼロとなっており(分布(1))、消去回数がゼロの検査ブロックが1つ設定される。ブロックの消去回数の平均が増加してアクティブブロックの消去回数が分布(2)のように分布すると、分布(2)を網羅するように複数(ここでは3つ)の検査ブロックが設定される。さらにブロックの消去回数の平均が増加しても、ダイナミックウェアレベリングの効果により、分布の範囲は一定に保たれる。分布(2)の状態からさらに消去回数が増加して、アクティブブロックの消去回数が分布(3)のように分布しても、分布(3)を網羅するように複数(ここでは3つ)の検査ブロックが設定される。
【0065】
図9は、第2の実施形態のSSD300の読み出し検査にかかる動作を説明する図である。ここでは、検査ブロックは、メモリチップ11毎に個別に設定されるものとして説明する。即ち、読み出し検査にかかる動作および後述するデータ書き込みにかかる動作はメモリチップ11毎に個別に実行される。なお、検査ブロックがNANDメモリ1全体のブロックから選択されて設定されるようにしてもかまわない。その場合には、読み出し検査にかかる動作およびデータ書き込みにかかる動作はNANDメモリ1のブロックを対象として実行される。
【0066】
図示するように、動作がスタートすると、タイミング決定部44は、現時点が電源オンがなされたタイミングまたは定期検査タイミングのうちの何れか1つ(または両方)に該当するか否かを判定する(ステップS21)。現時点が前述の何れのタイミングにも該当しない場合(ステップS21、No)、タイミング決定部44は、ステップS21の判定処理を再度実行する。
【0067】
現時点が前述の何れか1つ(または両方)のタイミングに該当する場合(ステップS21、Yes)、タイミング決定部44は、設定されている検査ブロックのうちの一つを選択して(ステップS22)、選択した検査ブロック内の検査パターンデータを検査パターンデータ一時記憶部32に読み出す(ステップS23)。そして、タイミング決定部44は、読み出した検査パターンデータに含まれるビット反転数の増分の割合、即ち前回の読み出し検査からのビット反転数の増分を検査ブロックのビット数から前回の読み出し検査時のビット反転数を減算した値で除した値が、予め決められた閾値を超えたか否かを判定する(ステップS24)。
【0068】
なお、ステップS24の判定処理で使用する閾値は、第1の実施形態におけるステップS5の判定処理に使用する閾値と同様の基準に基づいて定めておくようにしてよい。但し、ステップS24の判定処理で使用する閾値は、ビット反転数ではなく割合で与えられる。
【0069】
ビット反転数の増分の割合が予め決められた閾値を超えた場合(ステップS24、Yes)、タイミング決定部44は、ビット反転数が検査不能となる閾値を超えたか否かをさらに判定する(ステップS25)。検査不能となる閾値とは、反転ビット数が増加しすぎて、アクティブブロックの読み出し検査のタイミングを決めるための判定に使用するには十分な精度が担保できなくなる値をいう。
【0070】
ビット反転数が検査不能となる閾値を超えた場合(ステップS25、Yes)、タイミング決定部44は、当該ブロックをフリーブロック化し(ステップS26)、当該検査ブロックよりも消去時間が古いアクティブブロックを読み出し検査対象に設定する(ステップS27)。ビット反転数が検査不能となる閾値を超えていない場合(ステップS25、No)、タイミング決定部44は、検査ブロックのビット反転数を記録して(ステップS28)、ステップS27の処理を実行する。なお、ビット反転数の記録先はどのような場所であってもよく、例えばバッファメモリ3であってもよい。
【0071】
ステップS27の処理に続き、タイミング決定部44は、読み出し検査を未実行の検査ブロックがあるか否かを判定する(ステップS29)。未実行の検査ブロックがある場合(ステップS29、Yes)、タイミング決定部44は、ステップS21に移行して、未実行の検査ブロックのうちから検査ブロックを一つ選択する。未実行の検査ブロックがない場合(ステップS29、No)、読み出し検査実行部43は、ステップS30〜ステップS35の処理においてアクティブブロックの読み出し検査を実行する。
【0072】
まず、読み出し検査実行部43は、ステップS30において、読み出し検査対象のアクティブブロックがあるか否かを判定する(ステップS30)。読み出し検査対象のアクティブブロックがある場合(ステップS30、Yes)、読み出し検査実行部43は、読み出し検査対象のアクティブブロックを一つ選択する(ステップS31)。そして、読み出し検査実行部43は、選択したアクティブブロックからデータを読み出して(ステップS32)、読み出したデータにデータエラーがあるか否かを判定する(ステップS33)。ステップS33の判定処理は、ステップS8と同様の手法によって実行される。
【0073】
データエラーが生じていた場合(ステップS33、Yes)、読み出し検査実行部43は、訂正後のデータをフリーブロックに再書き込みし(ステップS34)、前記選択したアクティブブロックを読み出し検査対象から外す(ステップS35)。データエラーが生じていない場合(ステップS33、No)、読み出し検査実行部43は、ステップS34の処理をスキップする。読み出し検査実行部43は、ステップS35の処理を実行した後、ステップS30の判定処理を実行する。
【0074】
読み出し検査対象のアクティブブロックがない場合(ステップS30、No)、アクティブブロックの読み出し検査が終了となり、タイミング決定部44は、ステップS21の判定処理を実行する。
【0075】
図10は、第2の実施形態のSSD300のデータ書き込みにかかる動作を説明するフローチャートである。ここでは、一例として、読み書き制御部41は、消去回数の幅が50回程度に収まるようにダイナミックウェアレベリングを実行することとする。また、一例として、検査ブロック設定部42は、メモリチップ11の夫々について原則として3個の検査データを設定するものとする。
【0076】
図示するように、まず、検査ブロック設定部42は、フリーブロックのうち消去回数が最大のものを選択し、選択したフリーブロックをFB_maxとする(ステップS41)。そして、検査ブロック設定部42は、検査ブロックが存在するか否かを判定する(ステップS42)。検査ブロックが存在する場合(ステップS42、Yes)、検査ブロックのうち消去回数が最大のものをCB_maxとする(ステップS43)。なお、名称の先頭に「EC」を付して、そのブロックの消去回数を表記することとする。即ち、例えば消去回数が最大の検査ブロックの消去回数を、「ECCB_max」と表記する。
【0077】
ステップS43の処理の後、検査ブロック設定部42は、消去回数が最大の検査ブロックの消去回数ECCB_maxに50を加算した値が消去回数が最大のフリーブロックの消去回数ECFB_maxよりも小さいか否かを判定する(ステップS44)。ECCB_maxに50を加算した値がECFB_maxよりも小さい場合(ステップS44、Yes)、検査ブロック設定部42は、FB_maxを検査ブロックに設定し、当該設定した検査ブロックに検査パターンデータを書き込む(ステップS45)。その際に、検査ブロック設定部42は、書き込んだ検査パターンデータのビット反転数を記録しておく(ステップS46)。なお、新たに追加した検査パターンに検査パターンデータを書き込んだ直後においては、ビット反転数はゼロであるので、ゼロ値が記録される。
【0078】
検査ブロックが存在しなかった場合(ステップS42、No)、検査ブロック設定部42は、ステップS43およびステップS44の処理をスキップする。
【0079】
検査ブロック設定部42は、ステップS46の処理の後、検査ブロックが3つ以上存在するか否かを判定する(ステップS47)。検査ブロックが3つ以上存在する場合(ステップS47、Yes)、検査ブロック設定部42は、検査ブロックのうち消去回数が最小のものをCB_minとし(ステップS48)、アクティブブロックのうち消去回数が最小のものをAC_minとする(ステップS49)。
【0080】
そして、検査ブロック設定部42は、消去回数が最小の検査ブロックの消去回数ECCB_minが消去回数が最小のアクティブブロックの消去回数ECAC_minよりも小さいか否かを判定する(ステップS50)。ECCB_minがECAC_minよりも小さい場合(ステップS50、Yes)、検査ブロック設定部42は、CB_minをフリーブロック化する(ステップS51)。ECCB_minがECAC_minよりも大きい場合(ステップS50、No)、検査ブロック設定部42は、ステップS51の処理をスキップする。
【0081】
続いて、読み書き制御部41は、フリーブロックのうち消去回数が最小のものをFB_minとし(ステップS52)、ECAC_minがフリーブロックFB_minの消去回数ECFB_minから50を減算した値よりも大きいか否かを判定する(ステップS53)。ECAC_minがECFB_minから50を減算した値よりも大きい場合(ステップS53、Yes)、読み書き制御部41は、AC_minに書き込まれていたデータをFB_minに移動させ、当該移動によりフリーブロックとなったブロックをFB_minとする(ステップS54)。そして、読み書き制御部41は、書き込み対象のデータをFB_minに書き込み(ステップS55)、データ書き込み時の動作を終了する。ECAC_minがECFB_minから50を減算した値よりも小さい場合(ステップS53、No)、読み書き制御部41は、ステップS54の処理をスキップする。
【0082】
なお、検査ブロック設定部42は、アクティブブロックの消去回数の分布を網羅するように消去回数が異なる複数のブロックを検査ブロックに設定するために、消去回数が最大のフリーブロックの消去回数が消去回数が最大の検査ブロックの消去回数を監視して、当該消去回数が所定の数(ここでは50)だけ増加する毎に検査ブロックを追加するようにしている。しかしながら、第2の実施形態においては、ダイナミックウェアレベリングの効果によって消去回数の分布の形状がほぼ一定に保たれるので、検査ブロックを追加するタイミングを決めるための監視対象は、フリーブロックの最大消去回数に限定されない。例えば、アクティブブロックの最大消去回数を監視対象とするようにしてもよいし、フリーブロックおよびアクティブブロックを合わせたブロックの最大消去回数を監視対象とするようにしてもよい。また、最大消去回数ではなく、平均消去回数や最小消去回数を監視対象とすることもできる。
【0083】
また、消去回数が最大のフリーブロックを新たな検査ブロックに設定するものとしているが、新たな検査ブロックとするのはフリーブロックでなくてもよい。例えば、消去回数が最大のアクティブブロックを新たな検査ブロックに設定するようにしてもよい。アクティブブロックを検査ブロックとする場合には、当該アクティブブロック内のデータをフリーブロックに転送した後に検査パターンデータを書き込むようにするとよい。
【0084】
このように、本発明の第2の実施形態によれば、読み書き制御部41は、ダイナミックウェアレベリングを実行するとともに、検査ブロック設定部42は、アクティブブロックの消去回数の分布を網羅するように消去回数が異なる複数のブロックを検査ブロックに設定する、ように構成したので、消去回数が異なるアクティブブロックが含まれている場合であっても、夫々のアクティブブロックのデータの消失を効率的に予防することができる。
【0085】
また、検査ブロック設定部42は、フリーブロックのうちの消去回数が最大のブロックの消去回数が検査ブロックのうちの消去回数が最大のブロックに所定の数を加算した値よりも大きいとき、当該有効データが格納されていない消去回数が最大のブロックを新たに検査ブロックに設定する、ように構成した。
【0086】
また、検査ブロック設定部42は、消去回数が最小の検査ブロックの消去回数が消去回数が最小のアクティブブロックの消去回数よりも小さいとき、当該消去回数が最小の検査ブロックを検査ブロックから削除する、ように構成した。
【0087】
また、検査ブロック設定部42は、検査ブロックを設定する毎に設定した時刻を記録しておき、タイミング決定部44は、ビット反転数の増分のビット反転していない数に対する割合が所定の閾値を超えた検査ブロックよりも古いブロックを読み出し検査の対象に設定する、ように構成したので、読み出し検査対象のアクティブブロック数を効率的に減らすことができる。
【0088】
(第3の実施形態)
図11は、第1の実施形態のSSD100を搭載したパーソナルコンピュータ1200の一例を示す斜視図である。パーソナルコンピュータ1200は、本体1201、及び表示ユニット1202を備えている。表示ユニット1202は、ディスプレイハウジング1203と、このディスプレイハウジング1203に収容された表示装置1204とを備えている。
【0089】
本体1201は、筐体1205と、キーボード1206と、ポインティングデバイスであるタッチパッド1207とを備えている。筐体1205内部には、メイン回路基板、ODD(Optical Disk Device)ユニット、カードスロット、及びSSD100等が収容されている。
【0090】
カードスロットは、筐体1205の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1208が設けられている。ユーザは、この開口部1208を通じて筐体1205の外部から追加デバイスをカードスロットに挿抜することが可能である。
【0091】
SSD100は、従来のHDDの置き換えとして、パーソナルコンピュータ1200内部に実装された状態として使用してもよいし、パーソナルコンピュータ1200が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【0092】
図12は、SSDを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ1200は、CPU1301、ノースブリッジ1302、主メモリ1303、ビデオコントローラ1304、オーディオコントローラ1305、サウスブリッジ1309、BIOS−ROM1310、SSD100、ODDユニット1311、エンベデッドコントローラ/キーボードコントローラIC(EC/KBC)1312、及びネットワークコントローラ1313等を備えている。
【0093】
CPU1301は、パーソナルコンピュータ1200の動作を制御するために設けられたプロセッサであり、SSD100から主メモリ1303にロードされるオペレーティングシステム(OS)を実行する。更に、ODDユニット1311が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも1つの処理の実行を可能にした場合に、CPU1301は、それらの処理の実行をする。
【0094】
また、CPU1301は、BIOS−ROM1310に格納されたシステムBIOS(Basic Input Output System)も実行する。尚、システムBIOSは、パーソナルコンピュータ1200内のハードウェア制御のためのプログラムである。
【0095】
ノースブリッジ1302は、CPU1301のローカルバスとサウスブリッジ1309との間を接続するブリッジデバイスである。ノースブリッジ1302には、主メモリ1303をアクセス制御するメモリコントローラも内蔵されている。
【0096】
また、ノースブリッジ1302は、AGP(Accelerated Graphics Port)バス等を介してビデオコントローラ1304との通信、及びオーディオコントローラ1305との通信を実行する機能も有している。
【0097】
主メモリ1303は、プログラムやデータを一時的に記憶し、CPU1301のワークエリアとして機能する。主メモリ1303は、例えばRAMから構成される。
【0098】
ビデオコントローラ1304は、パーソナルコンピュータ1200のディスプレイモニタとして使用される表示ユニット1202を制御するビデオ再生コントローラである。
【0099】
オーディオコントローラ1305は、パーソナルコンピュータ1200のスピーカ1306を制御するオーディオ再生コントローラである。
【0100】
サウスブリッジ1309は、LPC(Low Pin Count)バス1314上の各デバイス、及びPCI(Peripheral Component Interconnect)バス1315上の各デバイスを制御する。また、サウスブリッジ1309は、各種ソフトウェア及びデータを格納する記憶装置であるSSD100を、ATAインタフェースを介して制御する。
【0101】
パーソナルコンピュータ1200は、セクタ単位でSSD100へのアクセスを行う。ATAインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がSSD100に入力される。
【0102】
また、サウスブリッジ1309は、BIOS−ROM1310、及びODDユニット1311をアクセス制御するための機能も有している。
【0103】
EC/KBC1312は、電力管理のためのエンベデッドコントローラと、キーボード(KB)1206及びタッチパッド1207を制御するためのキーボードコントローラとが集積された1チップマイクロコンピュータである。
【0104】
このEC/KBC1312は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ1200の電源をON/OFFする機能を有している。ネットワークコントローラ1313は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【0105】
なお、パーソナルコンピュータ1200には、第2の実施形態にて説明したSSD300を搭載することができる。
【0106】
なお、各実施形態における各機能構成部(読み書き制御部21および読み書き制御部21が備える各機能構成部、スクランブル処理部22、ECC回路23、ならびに読み書き制御部41および読み書き制御部41が備える各機能構成部)は、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現することができる。このため、各機能ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施態様、或いはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれる。
【0107】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0108】
1 NANDメモリ、2、4 ドライブ制御回路、3 バッファメモリ、11 メモリチップ、21、41 読み書き制御部、22 スクランブル処理部、23 ECC回路、31 転送データ一時記憶部、32 検査パターンデータ一時記憶部、33、34 論物変換テーブル、100、300 SSD、111 メモリセルアレイ、200 ホスト装置。
【特許請求の範囲】
【請求項1】
ブロックを複数備える不揮発性メモリとホスト装置との間のデータ転送を実行するコントローラにおいて、
前記不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックに対し、当該有効データの再書き込みを実行するか否かを決定するための読み出し検査を実行する読み出し検査実行部と、
前記不揮発性メモリが備える複数のブロックのうちから少なくとも1つに出来るだけ高い閾値を有する検査パターンデータを書き込んで、検査ブロックを設定する検査ブロック設定部と、
前記検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて前記読み出し検査実行部による前記読み出し検査のタイミングを決定するタイミング決定部と、
を備えることを特徴とするコントローラ。
【請求項2】
前記検査ブロック設定部は、前記複数のブロックのうちの消去回数ができるだけ大きいブロックを検査ブロックに設定する、
ことを特徴とする請求項1に記載のコントローラ。
【請求項3】
前記検査ブロック設定部は、前記読み出し検査のタイミングに至る毎に検査ブロックを設定し直す、
ことを特徴とする請求項2に記載のコントローラ。
【請求項4】
前記タイミング決定部は、ビット反転数が所定の閾値を超えたとき、前記読み出し検査実行部に前記有効データの読み出し検査を実行させる、
ことを特徴とする請求項1に記載のコントローラ。
【請求項5】
前記複数のブロックのうちの第1のブロックに格納されている有効データを前記第1のブロックよりも消去回数が少ない第2のブロックに転送することで、前記複数のブロック間で消去回数を平滑化するウェアレベリング部をさらに備え、
前記検査ブロック設定部は、有効データが格納されているブロックの消去回数の分布を網羅するように消去回数が異なる複数のブロックを検査ブロックに設定する、
ことを特徴とする請求項1に記載のコントローラ。
【請求項6】
前記検査ブロック設定部は、前記複数のブロックまたは前記複数のブロックのうちの有効データが格納されているブロックまたは前記複数のブロックのうちの有効データが格納されていないブロックの最大消去回数、平均消去回数または最小消去回数が所定の数だけ増加する毎に新たな検査ブロックを設定する、
ことを特徴とする請求項5に記載のコントローラ。
【請求項7】
前記検査ブロック設定部は、前記複数のブロックのうちの消去回数が最大のブロックまたは前記有効データが格納されているブロックのうちの消去回数が最大のブロックまたは前記有効データが格納されていないブロックのうちの消去回数が最大のブロックを新たな検査ブロックに設定する、
ことを特徴とする請求項6に記載のコントローラ。
【請求項8】
前記検査ブロック設定部は、前記検査ブロックのうちの消去回数が最小の検査ブロックの消去回数が前記複数のブロックのうちの有効データが格納されているブロックのうちの消去回数が最小のブロックの消去回数よりも小さいとき、当該消去回数が最小の検査ブロックを検査ブロックから削除する、
ことを特徴とする請求項7に記載のコントローラ。
【請求項9】
前記検査ブロック設定部は、検査ブロックを設定する毎に設定した時刻を記録しておき、
前記タイミング決定部は、ビット反転数の増分のビット反転していない数に対する割合が所定の閾値を超えた検査ブロックよりも古いブロックを読み出し検査の対象に設定する、
ことを特徴とする請求項6に記載のコントローラ。
【請求項10】
前記タイミング決定部は、電源オン時またはパワーオン時間にして所定の時間が経過する毎に前記検査ブロックに書き込まれた検査パターンデータのビット反転数を測定する、
ことを特徴とする請求項1乃至請求項9のうちの何れか一項に記載のコントローラ。
【請求項11】
前記ホスト装置からの転送データをスクランブル処理して前記不揮発性メモリが備えるブロックに書き込むスクランブル処理部をさらに備え、
前記タイミング決定部は、前記スクランブル処理部に指令して、前記検査パターンデータをスクランブル処理の対象から除外する、
ことを特徴とする請求項1乃至請求項9のうちの何れか一項に記載のコントローラ。
【請求項12】
ブロックを複数備える不揮発性メモリと、
前記不揮発性メモリとホスト装置との間のデータ転送を実行するコントローラと、
を備え、
前記コントローラは、
前記不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックの読み出し検査を実行する読み出し検査実行部と、
前記不揮発性メモリが備える複数のブロックのうちから少なくとも1つに出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する検査ブロック設定部と、
前記検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて前記読み出し検査実行部による前記読み出し検査のタイミングを決定するタイミング決定部と、
を備えることを特徴とするメモリシステム。
【請求項1】
ブロックを複数備える不揮発性メモリとホスト装置との間のデータ転送を実行するコントローラにおいて、
前記不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックに対し、当該有効データの再書き込みを実行するか否かを決定するための読み出し検査を実行する読み出し検査実行部と、
前記不揮発性メモリが備える複数のブロックのうちから少なくとも1つに出来るだけ高い閾値を有する検査パターンデータを書き込んで、検査ブロックを設定する検査ブロック設定部と、
前記検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて前記読み出し検査実行部による前記読み出し検査のタイミングを決定するタイミング決定部と、
を備えることを特徴とするコントローラ。
【請求項2】
前記検査ブロック設定部は、前記複数のブロックのうちの消去回数ができるだけ大きいブロックを検査ブロックに設定する、
ことを特徴とする請求項1に記載のコントローラ。
【請求項3】
前記検査ブロック設定部は、前記読み出し検査のタイミングに至る毎に検査ブロックを設定し直す、
ことを特徴とする請求項2に記載のコントローラ。
【請求項4】
前記タイミング決定部は、ビット反転数が所定の閾値を超えたとき、前記読み出し検査実行部に前記有効データの読み出し検査を実行させる、
ことを特徴とする請求項1に記載のコントローラ。
【請求項5】
前記複数のブロックのうちの第1のブロックに格納されている有効データを前記第1のブロックよりも消去回数が少ない第2のブロックに転送することで、前記複数のブロック間で消去回数を平滑化するウェアレベリング部をさらに備え、
前記検査ブロック設定部は、有効データが格納されているブロックの消去回数の分布を網羅するように消去回数が異なる複数のブロックを検査ブロックに設定する、
ことを特徴とする請求項1に記載のコントローラ。
【請求項6】
前記検査ブロック設定部は、前記複数のブロックまたは前記複数のブロックのうちの有効データが格納されているブロックまたは前記複数のブロックのうちの有効データが格納されていないブロックの最大消去回数、平均消去回数または最小消去回数が所定の数だけ増加する毎に新たな検査ブロックを設定する、
ことを特徴とする請求項5に記載のコントローラ。
【請求項7】
前記検査ブロック設定部は、前記複数のブロックのうちの消去回数が最大のブロックまたは前記有効データが格納されているブロックのうちの消去回数が最大のブロックまたは前記有効データが格納されていないブロックのうちの消去回数が最大のブロックを新たな検査ブロックに設定する、
ことを特徴とする請求項6に記載のコントローラ。
【請求項8】
前記検査ブロック設定部は、前記検査ブロックのうちの消去回数が最小の検査ブロックの消去回数が前記複数のブロックのうちの有効データが格納されているブロックのうちの消去回数が最小のブロックの消去回数よりも小さいとき、当該消去回数が最小の検査ブロックを検査ブロックから削除する、
ことを特徴とする請求項7に記載のコントローラ。
【請求項9】
前記検査ブロック設定部は、検査ブロックを設定する毎に設定した時刻を記録しておき、
前記タイミング決定部は、ビット反転数の増分のビット反転していない数に対する割合が所定の閾値を超えた検査ブロックよりも古いブロックを読み出し検査の対象に設定する、
ことを特徴とする請求項6に記載のコントローラ。
【請求項10】
前記タイミング決定部は、電源オン時またはパワーオン時間にして所定の時間が経過する毎に前記検査ブロックに書き込まれた検査パターンデータのビット反転数を測定する、
ことを特徴とする請求項1乃至請求項9のうちの何れか一項に記載のコントローラ。
【請求項11】
前記ホスト装置からの転送データをスクランブル処理して前記不揮発性メモリが備えるブロックに書き込むスクランブル処理部をさらに備え、
前記タイミング決定部は、前記スクランブル処理部に指令して、前記検査パターンデータをスクランブル処理の対象から除外する、
ことを特徴とする請求項1乃至請求項9のうちの何れか一項に記載のコントローラ。
【請求項12】
ブロックを複数備える不揮発性メモリと、
前記不揮発性メモリとホスト装置との間のデータ転送を実行するコントローラと、
を備え、
前記コントローラは、
前記不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックの読み出し検査を実行する読み出し検査実行部と、
前記不揮発性メモリが備える複数のブロックのうちから少なくとも1つに出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する検査ブロック設定部と、
前記検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて前記読み出し検査実行部による前記読み出し検査のタイミングを決定するタイミング決定部と、
を備えることを特徴とするメモリシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−69183(P2013−69183A)
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2011−208442(P2011−208442)
【出願日】平成23年9月26日(2011.9.26)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願日】平成23年9月26日(2011.9.26)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]