(57)【要約】【課題】データの消失を効率よく予防すること。【解決手段】本発明の一つの実施形態によれば、コントローラは、読み出し検査実行部と、検査ブロック設定部と、タイミング決定部とを備えている。読み出し検査実行部は、不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックの読み出し検査を実行する。検査ブロック設定部は、不揮発性メモリが備える複数のブロックのうちから少なくとも１つに出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する。ここで、タイミング決定部は、検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて読み出し検査実行部による読み出し検査のタイミングを決定する。【選択図】図５
2013069183.tif 000002
【特許請求の範囲】
【請求項１】
ブロックを複数備える不揮発性メモリとホスト装置との間のデータ転送を実行するコントローラにおいて、
前記不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックに対し、当該有効データの再書き込みを実行するか否かを決定するための読み出し検査を実行する読み出し検査実行部と、
前記不揮発性メモリが備える複数のブロックのうちから少なくとも１つに出来るだけ高い閾値を有する検査パターンデータを書き込んで、検査ブロックを設定する検査ブロック設定部と、
前記検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて前記読み出し検査実行部による前記読み出し検査のタイミングを決定するタイミング決定部と、
を備えることを特徴とするコントローラ。
【請求項２】
前記検査ブロック設定部は、前記複数のブロックのうちの消去回数ができるだけ大きいブロックを検査ブロックに設定する、
ことを特徴とする請求項１に記載のコントローラ。
【請求項３】
前記検査ブロック設定部は、前記読み出し検査のタイミングに至る毎に検査ブロックを設定し直す、
ことを特徴とする請求項２に記載のコントローラ。
【請求項４】
前記タイミング決定部は、ビット反転数が所定の閾値を超えたとき、前記読み出し検査実行部に前記有効データの読み出し検査を実行させる、
ことを特徴とする請求項１に記載のコントローラ。
【請求項５】
前記複数のブロックのうちの第１のブロックに格納されている有効データを前記第１のブロックよりも消去回数が少ない第２のブロックに転送することで、前記複数のブロック間で消去回数を平滑化するウェアレベリング部をさらに備え、
前記検査ブロック設定部は、有効データが格納されているブロックの消去回数の分布を網羅するように消去回数が異なる複数のブロックを検査ブロックに設定する、
ことを特徴とする請求項１に記載のコントローラ。
【請求項６】
前記検査ブロック設定部は、前記複数のブロックまたは前記複数のブロックのうちの有効データが格納されているブロックまたは前記複数のブロックのうちの有効データが格納されていないブロックの最大消去回数、平均消去回数または最小消去回数が所定の数だけ増加する毎に新たな検査ブロックを設定する、
ことを特徴とする請求項５に記載のコントローラ。
【請求項７】
前記検査ブロック設定部は、前記複数のブロックのうちの消去回数が最大のブロックまたは前記有効データが格納されているブロックのうちの消去回数が最大のブロックまたは前記有効データが格納されていないブロックのうちの消去回数が最大のブロックを新たな検査ブロックに設定する、
ことを特徴とする請求項６に記載のコントローラ。
【請求項８】
前記検査ブロック設定部は、前記検査ブロックのうちの消去回数が最小の検査ブロックの消去回数が前記複数のブロックのうちの有効データが格納されているブロックのうちの消去回数が最小のブロックの消去回数よりも小さいとき、当該消去回数が最小の検査ブロックを検査ブロックから削除する、
ことを特徴とする請求項７に記載のコントローラ。
【請求項９】
前記検査ブロック設定部は、検査ブロックを設定する毎に設定した時刻を記録しておき、
前記タイミング決定部は、ビット反転数の増分のビット反転していない数に対する割合が所定の閾値を超えた検査ブロックよりも古いブロックを読み出し検査の対象に設定する、
ことを特徴とする請求項６に記載のコントローラ。
【請求項１０】
前記タイミング決定部は、電源オン時またはパワーオン時間にして所定の時間が経過する毎に前記検査ブロックに書き込まれた検査パターンデータのビット反転数を測定する、
ことを特徴とする請求項１乃至請求項９のうちの何れか一項に記載のコントローラ。
【請求項１１】
前記ホスト装置からの転送データをスクランブル処理して前記不揮発性メモリが備えるブロックに書き込むスクランブル処理部をさらに備え、
前記タイミング決定部は、前記スクランブル処理部に指令して、前記検査パターンデータをスクランブル処理の対象から除外する、
ことを特徴とする請求項１乃至請求項９のうちの何れか一項に記載のコントローラ。
【請求項１２】
ブロックを複数備える不揮発性メモリと、
前記不揮発性メモリとホスト装置との間のデータ転送を実行するコントローラと、
を備え、
前記コントローラは、
前記不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックの読み出し検査を実行する読み出し検査実行部と、
前記不揮発性メモリが備える複数のブロックのうちから少なくとも１つに出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する検査ブロック設定部と、
前記検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて前記読み出し検査実行部による前記読み出し検査のタイミングを決定するタイミング決定部と、
を備えることを特徴とするメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、コントローラおよびメモリシステムに関する。
【背景技術】
【０００２】
コンピュータシステムに用いられるメモリシステムとして、ＮＡＮＤ型のフラッシュメモリを備えるメモリチップを搭載したＳＳＤ（Solid  State  Drive）が注目されている。ＳＳＤは、磁気ディスク装置に比べ、高速、軽量などの利点を有している。
【０００３】
ＮＡＮＤ型を含むフラッシュメモリは、浮遊ゲート電極に蓄えられた電荷が時間とともに抜けていくことによって記憶されたデータが失われるため、データ保持期間（データリテンション）が有限であるという制約を有する。したがって、記憶しているデータを保障するためには、データリテンションが経過する前に記憶しているデータの書き直しを行う必要がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第０１／０２２２３２号
【特許文献２】特開２００１−２２９６９８号公報
【特許文献３】特開２００１−１４７８６２号公報
【特許文献４】特開平７−９３９８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、データの消失を効率よく予防するコントローラおよびメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、コントローラは、読み出し検査実行部と、検査ブロック設定部と、タイミング決定部とを備えている。読み出し検査実行部は、不揮発性メモリが備える複数のブロックのうちの有効データが格納されているブロックの読み出し検査を実行する。検査ブロック設定部は、不揮発性メモリが備える複数のブロックのうちから少なくとも１つに出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する。ここで、タイミング決定部は、検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいて読み出し検査実行部による読み出し検査のタイミングを決定する。
【図面の簡単な説明】
【０００７】
【図１】図１は、本発明の第１の実施の形態にかかるＳＳＤの構成例を示す図である。
【図２】図２は、メモリセルアレイに含まれる１個のブロックの構成例を示す回路図である。
【図３】図３は、１個のメモリセルトランジスタＭＴに２ビットの記憶を行う４値データ記憶方式での閾値分布の例を示している。
【図４】図４は、第１の実施形態の論物変換テーブルのデータ構成例を説明する図である。
【図５】図５は、第１の実施形態のＳＳＤの動作を説明する図である。
【図６】図６は、第２の実施形態にかかるＳＳＤの構成例を示す図である。
【図７】図７は、第２の実施形態の論物変換テーブルのデータ構成例を説明する図である。
【図８】図８は、読み書き制御部が設定する検査ブロックを説明する図である。
【図９】図９は、第２の実施形態のＳＳＤの読み出し検査にかかる動作を説明する図である。
【図１０】図１０は、第２の実施形態のＳＳＤのデータ書き込みにかかる動作を説明するフローチャートである。
【図１１】図１１は、パーソナルコンピュータの外観を示す斜視図である。
【図１２】図１２は、パーソナルコンピュータの機能構成例を示す図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、本発明の実施の形態にかかるコントローラおよびメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。ここでは、メモリシステムの一例としてＮＡＮＤ型のフラッシュメモリを備えるＳＳＤを例に挙げて説明するが、フラッシュメモリはＮＡＮＤ型だけに限定しない。
【０００９】
（第１の実施形態）
図１は、本発明の第１の実施の形態にかかるＳＳＤの構成例を示す図である。図示するように、ＳＳＤ１００は、パーソナルコンピュータなどのホスト装置２００とＡＴＡ（Advanced  Technology  Attachment）規格などの通信インタフェースで接続され、ホスト装置２００の外部記憶装置として機能する。ＳＳＤ１００がホスト装置２００から受信する書き込み／読み出し要求は、ＬＢＡ（Logical  Block  Addressing）で定義されたアクセス対象の先頭アドレスとアクセス対象の領域の範囲を示すセクタサイズとが含まれている。なお、通信インタフェースはＳＡＴＡ規格に限らず、ＳＡＳ（Serial  Attached  SCSI）、ＰＣＩｅ（PCI  Express）など様々な通信インタフェース規格を採用することが可能である。 
【００１０】
ＳＳＤ１００は、ＮＡＮＤメモリ１と、ホスト装置２００とＮＡＮＤメモリ１との間のデータ転送を実行するドライブ制御回路２と、バッファメモリ３とを備えている。
【００１１】
ＮＡＮＤメモリ１は、夫々個別に動作する複数（ここでは４つ）のメモリチップ１１を備えて構成されている。メモリチップ１１の夫々は、ホスト装置２００からの書き込みデータを記憶するメモリセルアレイ１１１を備えている。
【００１２】
メモリセルアレイ１１１は、消去の単位となるブロックを複数備えて構成される。図２は、メモリセルアレイ１１１に含まれる１個のブロックの構成例を示す回路図である。図示するように、各ブロックは、Ｘ方向に沿って順に配列された（ｍ＋１）個のＮＡＮＤストリングを備えている（ｍは、０以上の整数）。（ｍ＋１）個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｐに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００１３】
各メモリセルトランジスタＭＴは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（metal  oxide  semiconductor  field  effect  transistor）から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮遊ゲート電極）、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタＭＴは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタＭＴは、１ビットを記憶するように構成されていてもよいし、多値（２ビット以上のデータ）を記憶するように構成されていてもよい。
【００１４】
各ＮＡＮＤストリングにおいて、（ｎ＋１）個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｑにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｑに接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００１５】
ワード線ＷＬ０〜ＷＬｑは、ブロック内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。この同一のワード線ＷＬに接続される（ｍ＋１）個のメモリセルトランジスタＭＴは１ページとして取り扱われ、このページごとにデータの書き込み及びデータの読み出しが行われる。
【００１６】
また、ビット線ＢＬ０〜ＢＬｐは、ブロック間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。
【００１７】
図３は、１個のメモリセルトランジスタＭＴに２ビットの記憶を行う４値データ記憶方式での閾値分布の例を示している。４値データ記憶方式では、上位ページデータ“ｘ”と下位ページデータ“ｙ”で定義される４値データ“ｘｙ”の何れか一つをメモリセルトランジスタＭＴに保持可能である。この、４値データ“ｘｙ”は、メモリセルトランジスタＭＴの閾値電圧の順に、例えば、データ“１１”、“１０”、“０１”、“００”が割り当てられる。データ“１１”は、メモリセルトランジスタＭＴの閾値電圧が負の消去状態である。
【００１８】
ここで、浮遊ゲート電極に蓄えられた電荷は、時間とともに抜けてゆくため、消去状態以外の状態のメモリセルトランジスタＭＴは、閾値電圧が時間の経過とともに徐々に低下して、結果として書き込んだ値が読み出せなくなってしまうことがある。したがって、書き込んだ値が読み出せなくなってしまうまでの期間（データリテンション）が経過する前にデータを再書き込みする処理が必要となる。
【００１９】
再書き込みを行うための技術（以下、比較例にかかる技術という）として、全てのブロックについて最後に読み出した時間を内部管理データとして保持しておき、最後に読み出されてから電源オンとなっている時の積算時間（パワーオン時間）にして所定の時間（例えば１週間）が経過する毎にブロック内のデータの読み出し検査を実行するというものがある。読み出し検査の検査結果がＮＧであるとき、対象のブロックに格納されているデータの再書き込みがなされる。
【００２０】
しかしながら、データリテンションは消去回数の増加に応じて短縮される。比較例にかかる技術によれば、検査周期を、消去回数が製品寿命に近くなった状態を想定した間隔に固定している。したがって、消去回数が少ない時期では検査間隔が不必要に短く、逆にリードディスターブによって近辺のメモリセルトランジスタＭＴの閾値を変動させてしまうという問題が生じる。
【００２１】
また、電源オフ時においても浮遊ゲート電極から電荷が抜けていく。比較例にかかる技術によれば、電源オン時における経過時間しか考慮していないため、電源オフ状態が長く続いた場合にはデータの消失前に再書き込みできない虞があるという問題がある。
【００２２】
これに対して、ホスト装置２００からの書き込みデータや内部管理データなどの有効データが格納されているブロック（以下、アクティブブロックという）にかかる読み出し検査の頻度を低減するために、実施形態１では、アクティブブロックとは別に、読み出し検査を行うための専用のブロック（以下、検査ブロック）を用意し、当該検査ブロックに書き込まれた検査パターンデータの読み出し検査の検査結果に基づいてアクティブブロックにかかる読み出し検査を実行するか否かを決定するようにした。また、電源オフ時に閾値の低下が進行してデータの消失が発生する状態になった場合であっても定期的な検査パターンデータの読み出し検査を待つことなく再書き込みを行うことができるように、検査パターンデータの読み出し検査を電源オン時にも実行するようにした。
【００２３】
なお、閾値が高いデータほどデータリテンションが短縮する傾向がある。そこで、アクティブブロックにおけるデータの消失の発生を事前に検知するために、検査パターンデータとして出来るだけ閾値が高い値を用いることとする。これにより、アクティブブロックにおいてデータの消失が発生する前に検査パターンデータの消失を発生せしめることができるので、検査パターンデータの消失を読み出し検査により検出したときにアクティブブロックの読み出し検査を実行することで、アクティブブロックにおけるデータの消失を予防することができるようになる。なお、ここでは、閾値が最も高い状態であるデータ“００”を検査パターンデータとする。
【００２４】
図１に戻り、バッファメモリ３は、ホスト装置２００とＮＡＮＤメモリ１との間の転送データを一時格納するための転送データ一時記憶部３１と、前述の検査パターンデータを一時格納するための検査パターンデータ一時記憶部３２とを備えている。ホスト装置２００から送信されてきたデータは、ドライブ制御回路２の制御の下、いったん転送データ一時記憶部３１に格納され、その後、当該転送データ一時記憶部３１から読み出されてＮＡＮＤメモリ１に書き込まれる。また、ＮＡＮＤメモリ１に格納されているデータは、ドライブ制御回路２の制御の下、転送データ一時記憶部３１を介してホスト装置２００に送信される。
【００２５】
また、バッファメモリ３には、ＮＡＮＤメモリ１の物理アドレスとＬＢＡとを対応付ける論物変換テーブル３３が格納される。論物変換テーブル３３の詳細は後述する。
【００２６】
なお、バッファメモリ３は、例えばＤＲＡＭ（Dynamic  Random  Access  Memory）、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）、ＦｅＲＡＭ（Ferroelectric  Random  Access  Memory）など、ＮＡＮＤメモリ１よりも高速動作可能なメモリで構成される。
【００２７】
ドライブ制御回路２は、読み書き制御部２１、スクランブル処理部２２、およびＥＣＣ回路２３を備えている。
【００２８】
読み書き制御部２１は、ＮＡＮＤメモリ１へのデータ書き込みを制御する。ＮＡＮＤメモリ１内部における書き換え回数分布の極端な偏りの発生により特定の領域が摩耗して動作不能になることを防ぐため、ホスト装置２００からの書き込み要求時には、書き換え回数が少ない領域に優先して書き込みを行い、書き換え回数分布を平滑化するスタティックウェアレベリングという書き込み方式が存在する。読み書き制御部２１は、転送データ一時記憶部３１からＮＡＮＤメモリ１にデータ転送を行う際には、スタティックウェアレベリング方式に基づいて、書き換え回数ができるだけ少ないブロックを書き込み先に指定する。なお、読み書き制御部２１は、転送データの書き込みを実行する毎に論物変換テーブル３３を更新する。
【００２９】
図４は、第１の実施形態の論物変換テーブル３３のデータ構成例を説明する図である。論物変換テーブル３３は、ブロック毎に物理アドレスにして昇順にエントリが登録されている。そして、各エントリは、ブロックがアクティブブロックであるか、または有効データが格納されていないフリーブロックであるかを示す有効／無効フラグが格納されるフィールドと、ブロックの先頭が割り当てられる論理アドレスとしてのＬＢＡが格納されるフィールドと、累積の消去回数が格納される領域とを備えている。有効な有効／無効フラグは、対象のブロックはアクティブブロックであることを示し、無効な有効／無効フラグは、対象のブロックはフリーブロックであることを示す。なお、論物変換テーブル３３のエントリは、検査ブロックであるか否かを示すフラグ情報が格納されるフィールドを備えていてもよい。また、論物変換テーブル３３は、ブロック毎にエントリが昇順に登録されるのではなく、降順に登録されるようにしてもよい。また、論物変換テーブル３３の各エントリは、ブロックの先頭の物理ブロックが格納されるフィールドを備えるようにしてもよい。
【００３０】
また、読み書き制御部２１は、フリーブロックに検査パターンデータを書き込んで検査ブロックを設定する検査ブロック設定部２４と、アクティブブロックの読み出し検査を実行する読み出し検査実行部２５と、検査ブロックに発生したビット反転数に基づいて前記読み出し検査の実行タイミングを決定するタイミング決定部２６とを備えている。なお、検査ブロック設定部２４が検査ブロックに検査パターンデータを書き込む際には、書き込み対象の検査パターンデータを検査パターンデータ一時記憶部３２に用意する。タイミング決定部２６が検査ブロックに発生したビット反転数を測定する際には、検査パターンデータをＮＡＮＤメモリ１から検査パターンデータ一時記憶部３２に読み出す。
【００３１】
ＥＣＣ回路２３は、誤り訂正符号のエンコードおよびデコードを行う。誤り訂正符号は、例えば、ハミング符号、ＢＣＨ（Bose  Chaudhuri  Hocquenghem）符号、ＲＳ(Reed  Solomon)符号、或いはＬＤＰＣ（Low  Density  Parity  Check）符号等であり、ＥＣＣ回路２３は、転送データ一時記憶部３１に格納されている転送データがＮＡＮＤメモリ１に書き込まれる際に付与する。また、ＥＣＣ回路２３は、ＮＡＮＤメモリ１から読み出されたデータに付与されている誤り訂正符号に基づいて当該データの誤り訂正を実行し、誤り訂正後のデータを転送データ一時記憶部３１に格納する。
【００３２】
スクランブル処理部２２は、誤り訂正符号が付されたデータをＮＡＮＤメモリ１に書き込む際に、当該データと所定の方法で作成したランダムデータとの排他的論理和を演算し、得られたデータを書き込む。例えば書き込み対象のデータが同一の値が連続するデータであっても、書き込み時にこの処理によってランダム化されるので、プログラムディスターブやリードディスターブの問題を緩和し、データの信頼性を向上することができる。以降、書き込みデータとランダムデータとの排他的論理和を演算する処理をスクランブル処理ということとする。
【００３３】
また、スクランブル処理部２２は、ＮＡＮＤメモリ１からデータを読み出す際に、読み出したデータとスクランブル処理時と同一のランダムデータとの排他的論理和を演算してスクランブル処理前のデータを求め、得られたデータをＥＣＣ回路２３に送る。このスクランブル処理前のデータを求める処理を復元処理ということとする。
【００３４】
ここで、スクランブル処理部２２は、検査パターンデータをスクランブル処理の対象から外す。そのために、検査ブロック設定部２４が検査パターンデータを書き込む際や、タイミング決定部２６が検査パターンデータを読み出す際には、スクランブル処理（および復元処理）を無効とする旨の通知であるスクランブル処理無効通知を発行する。スクランブル処理部２２は、スクランブル処理無効通知を受信しているときにはスクランブル処理または復元処理を実行し、スクランブル処理無効通知を受信していないときにはスクランブル処理および復元処理を実行しない。
【００３５】
次に、本発明の実施形態１のＳＳＤ１００の動作を説明する。図５は、第１の実施形態のＳＳＤ１００の動作を説明する図である。
【００３６】
出荷状態から電源オンされて動作がスタートする。まず、検査ブロック設定部２４は、検査ブロックとして使用するブロックをフリーブロックのうちから選択する（ステップＳ１）。
【００３７】
ここでは、検査ブロックはメモリチップ１１毎に一つずつ選択されるとして説明するが、検査ブロックは、メモリチップ１１毎に２以上の数だけ選択されるようにしてもよいし、ＮＡＮＤメモリ１全体で１以上の数だけ選択されるようにしてもよい。メモリチップ１１毎に検査ブロックが選択される場合、以降の動作はメモリチップ１１毎に実行される。ＮＡＮＤメモリ１全体から検査ブロックが選択される場合、以降の動作はＮＡＮＤメモリ１全体のブロックを対象として実行される。なお、メモリチップ１１は、製造プロセスのばらつきにより夫々データリテンションが異なる場合がある。検査ブロックをメモリチップ１１毎に設定することによって、メモリチップ１１毎にアクティブブロックの読み出し検査のタイミングを決めることができるので、ＮＡＮＤメモリ１全体のブロックから検査ブロックを設定する場合に比べてより効率的にデータの消失を予防することができるようになる。
【００３８】
ステップＳ１の後、検査ブロック設定部２４は、選択した検査ブロックに検査パターンデータを書き込む（ステップＳ２）。ステップＳ２の処理においては、検査ブロック設定部２４は、検査パターンデータ一時記憶部３２に１ブロック分が全てデータ“１１”となっている検査パターンデータを用意して、スクランブル処理無効通知をアサートする。スクランブル処理部２２は、検査パターンデータ一時記憶部３２に格納されている検査パターンデータをスクランブル処理を実行せずに検査ブロックに書き込む。検査パターンデータの書き込み後、検査ブロック設定部２４は、スクランブル処理無効通知をデアサートする。
【００３９】
続いて、タイミング決定部２６は、現時点が電源オンがなされたタイミングまたは前回の読み出し検査からパワーオン時間にして所定の時間が経過したタイミング（定期検査タイミング）に該当するか否かを判定する（ステップＳ３）。現時点が前述の何れのタイミングにも該当しない場合（ステップＳ３、Ｎｏ）、タイミング決定部２６は、ステップＳ３の判定処理を再度実行する。
【００４０】
現時点が前述の何れか１つ（もしくは２つ）のタイミングに該当する場合（ステップＳ３、Ｙｅｓ）、タイミング決定部２６は、検査ブロック内の検査パターンデータを検査パターンデータ一時記憶部３２に読み出して（ステップＳ４）、読み出した検査パターンデータに含まれるビット反転数が予め決められた閾値を超えたか否かを判定する（ステップＳ５）。
【００４１】
なお、ステップＳ２における書き込みの際と同様に、タイミング決定部２６は、検査パターンデータの読み出しの際には、スクランブル処理無効通知をアサートし、検査パターンデータの読み出しが終わると、スクランブル処理無効通知をデアサートする。
【００４２】
ステップＳ５の判定処理において、検査パターンに含まれるビット反転数が前記閾値を超えていない場合（ステップＳ５、Ｎｏ）、タイミング決定部２６は、ステップＳ３の判定処理を実行する。検査パターンに含まれるビット反転数が前記閾値を超えた場合（ステップＳ５、Ｙｅｓ）、読み出し検査実行部２５は、ステップＳ６〜ステップＳ１０の処理においてアクティブブロックの読み出し検査を実行する。
【００４３】
なお、検査パターンデータは、閾値が最も高い値で構成されているため、スクランブル処理されて閾値が最も高い値以外の値も含んでいるデータよりも閾値低下によるビット反転が発生しやすい。このため、ステップＳ５の判定処理に使用する閾値を、検査パターンデータおよびスクランブル処理されて書き込まれるデータのビット反転の経時変化を予め実験などにより求め、求めたビット反転の経時変化に基づいて定めるようにしてもよい。例えば、スクランブル処理されて書き込まれたデータにＥＣＣ回路２３が訂正不能となる程度にビット反転が発生する時点の検査パターンデータのビット反転数を求め、当該求めた検査パターンデータのビット反転数よりも所定の数だけ少ない数をステップＳ５の判定処理の閾値としてもよい。このようにすることによって、アクティブブロックに訂正不能なデータエラーが発生する前にアクティブブロックの再書き込みを実行することができるようになる。
【００４４】
また、ここでは、メモリセルアレイ１１１を構成するメモリセルトランジスタＭＴは、４値のデータを記憶し、検査パターンデータをデータ“１１”としているので、ビット反転とは、メモリセルトランジスタＭＴに格納されているデータが検査パターンデータ（即ちデータ“１１”）以外の値となっていることを指す。
【００４５】
ステップＳ６において、読み出し検査実行部２５は、読み出し検査が未実行のアクティブブロックがあるか否かを判定する。読み出し検査が未実行のアクティブブロックがある場合（ステップＳ６、Ｙｅｓ）、読み出し検査が未実行のアクティブブロックのうちの１つからデータを読み出して（ステップＳ７）、読み出したデータにデータエラーがあるか否かを判定する（ステップＳ８）。
【００４６】
データエラーが生じているか否かは、ＥＣＣ回路２３が誤りを検出して訂正を行ったか否かを確認することで判定することができる。即ち、読み出し検査実行部２５は、誤り（ビット反転）が検出され、当該誤りが訂正された場合には、データエラーが生じていると判定し、誤りが検出されなかった場合には、データエラーが生じていないと判定する。
【００４７】
なお、ビット反転は定常的に発生する可能性がある。したがって、ステップＳ８の判定処理において、ビット反転が発生しているか否かを判定するのではなく、ＥＣＣ回路２３による誤り訂正が不可能となるビット反転数に基づいてビット反転数にかかる閾値を予め設定しておき、ビット反転数が当該閾値を超えたとき、ステップＳ８、Ｙｅｓ以降の処理に進み、ビット反転数が当該閾値を超えていないとき、ステップＳ８、Ｎｏ以降の処理に進むようにしてもよい。
【００４８】
データエラーが生じていた場合（ステップＳ８、Ｙｅｓ）、読み出し検査実行部２５は、訂正後のデータをフリーブロックに再書き込みし（ステップＳ９）、ステップＳ６の判定処理を実行する。データエラーが生じていなかった場合（ステップＳ８、Ｎｏ）、読み出し検査実行部２５は、ステップＳ９の処理をスキップする。
【００４９】
ステップＳ６において、読み出し検査が未実行のアクティブブロックがなかった場合（ステップＳ６、Ｎｏ）、検査ブロック設定部２４は、検査ブロックから検査パターンデータを消去して当該検査ブロックをフリーブロックとする（ステップＳ１０）。そして、ステップＳ１に移行して、検査ブロックとして使用する新たなブロックをフリーブロックのうちから選択する。
【００５０】
このように、本発明の第１の実施形態によれば、アクティブブロックの読み出し検査を実行する読み出し検査実行部２５と、出来るだけ高い閾値を有する検査パターンデータを書き込んで検査ブロックを設定する検査ブロック設定部２４と、検査ブロックに書き込まれた検査パターンデータに発生するビット反転数に基づいてアクティブブロックの読み出し検査の実行タイミングを決定するタイミング決定部２６と、を備えるように構成したので、アクティブブロックにかかる読み出し検査の頻度を低減することができるので、データの消失を効率よく予防することができるようになる。また、アクティブブロックにかかる読み出し検査の頻度を低減することで、読み出し検査によるアクティブブロックに対するリードディスターブの影響を低減することができる。
【００５１】
また、タイミング決定部２６は、電源オン時に検査パターンデータのビット反転数を測定するように構成したので、電源オン時に読み出し検査を実行することができるようになる。
【００５２】
また、タイミング決定部２６は、スクランブル処理部２２に指令して、検査パターンデータをスクランブル処理の対象から除外させる、ように構成したので、有効データよりも閾値の低下が起こりやすい検査パターンデータを書き込むことができるので、タイミング決定部２６は、より早いタイミングでアクティブブロックにおける読み出し検査のタイミングを決めることができる。
【００５３】
なお、ステップＳ６、Ｎｏを経由してステップＳ１に移行してきたとき、読み出し制御部２１は、ステップＳ１において、論物変換テーブル３３を参照して、フリーブロックのうちのできるだけ書き込み回数が多いブロックを検査ブロックに選択するとよい。前述のように、書き込み回数が多いほどデータリテンションが短縮する傾向があるので、できるだけ書き込み回数が多いブロックを検査ブロックとすることによって、タイミング決定部２６は、より早いタイミングでアクティブブロックにおける読み出し検査のタイミングを決めることができる。
【００５４】
また、ステップＳ９において、読み出し検査実行部２５は、訂正後のデータをスタティックウェアレベリングに基づいて選択したフリーブロックに訂正後のデータを書き込むようにしてもよい。
【００５５】
また、メモリセルトランジスタＭＴを３値以上のデータを記憶させるモード（ＭＬＣモード）と２値のデータを記憶させるモード（ＳＬＣモード）とを切り替えることが可能に構成されているものがある。そのような場合には、検査ブロックをＭＬＣモードで駆動し、出来るだけ高い閾値のデータを検査パターンデータとするとよい。これにより、アクティブブロックをどのモードで駆動する場合でも、アクティブブロックよりも検査ブロックのほうがビット反転を起こしやすい状況をつくることができ、結果としてより効率的にデータリテンションの経過によるデータの消失を予防することができる。
【００５６】
（第２の実施形態）
第２の実施形態によれば、アクティブブロックにかかる読み出し検査の実行タイミングにおいて読み出し検査をパスして再書き込みが行われず、結果として当該読み出し検査の実行タイミングにおいて再書き込みが行われたアクティブブロックよりも書き込み時からの経過時間が長くなってしまったアクティブブロックについても、データの消失を予防することができるように、アクティブブロックにかかる読み出し検査を実行した後であっても検査ブロックを残しておくようにする。
【００５７】
図６は、第２の実施形態にかかるＳＳＤの構成例を示す図である。図示するように、ＳＳＤ３００は、ＮＡＮＤメモリ１と、バッファメモリ３と、ドライブ制御回路４とを備えている。なお、ここでは、第１の実施形態と同じ構成要素には同一の符号を付して重複する説明を省略する。
【００５８】
ＮＡＮＤメモリ１は、夫々メモリセルアレイ１１１を備える複数（ここでは４つ）のメモリチップ１１を備えている。
【００５９】
バッファメモリ３は、転送データ一時記憶部３１および検査パターンデータ一時記憶部３２が確保されている。また、バッファメモリ３には、論物変換テーブル３４が格納される。論物変換テーブル３４の詳細は後述する。
【００６０】
ドライブ制御回路４は、読み書き制御部４１、スクランブル処理部２２、およびＥＣＣ回路２３を備えている。
【００６１】
読み書き制御部４１は、ＮＡＮＤメモリ１へのデータ書き込みを制御する。ブロック間で消去回数に差がある場合に、消去回数が少ないブロックに格納されているデータを消去回数が多いブロックにコピーすることで、消去回数が少ないブロックを積極的にフリーブロック化し、ブロック間の消去回数のばらつきを出来るだけ小さくするダイナミックウェアレベリングという手法がある。読み書き制御部４１は、スタティックウェアレベリングに基づいてデータの書き込みを行うとともに、ダイナミックウェアレベリングに基づいてアクティブブロック内のデータのコピーを実行する。なお、読み書き制御部４１は、転送データの書き込み（コピーを含む）を実行する毎に論物変換テーブル３４を更新する。
【００６２】
図７は、第２の実施形態の論物変換テーブル３４のデータ構成例を説明する図である。論物変換テーブル３４は、ブロック毎に物理アドレスにして昇順にエントリが登録されている。そして、各エントリは、ブロックがアクティブブロックであるか、または有効データが格納されていないフリーブロックであるかを示す有効／無効フラグが格納されるフィールドと、ブロックの先頭が割り当てられる論理アドレスとしてのＬＢＡが格納されるフィールドと、消去時間が格納される領域と、累積の消去回数が格納される領域とを備えている。消去時間とは、パワーオン時間にして消去が実行された時間である。
【００６３】
また、読み書き制御部４１は、検査ブロックの設定を行う検査ブロック設定部４２、アクティブブロックの読み出し検査を実行する読み出し検査実行部４３、およびアクティブブロックの読み出し検査の実行タイミングを決定するタイミング決定部４４を備えている。ここで、読み書き制御部４１は、ダイナミックウェアレベリングを実行するので、ブロック間の消去回数の分布がダイナミックウェアレベリングを実行しない場合に比して狭くなる。検査ブロック設定部４２は、アクティブブロックの消去回数の分布から消去回数が乖離しないように検査ブロックを設定する。具体的には、どのような消去回数のアクティブブロックであっても誤り訂正不能のデータエラーを予防することができるように、検査ブロック設定部４２は、消去回数が異なる複数の検査ブロックを用意する。
【００６４】
図８は、検査ブロック設定部４２が設定する検査ブロックを説明する図である。本図の縦軸はアクティブブロック毎のブロック数を示し、横軸は消去回数を示している。出荷直後にデータ書き込みがなされた時点においては、全てのアクティブブロックは消去回数がゼロとなっており（分布（１））、消去回数がゼロの検査ブロックが１つ設定される。ブロックの消去回数の平均が増加してアクティブブロックの消去回数が分布（２）のように分布すると、分布（２）を網羅するように複数（ここでは３つ）の検査ブロックが設定される。さらにブロックの消去回数の平均が増加しても、ダイナミックウェアレベリングの効果により、分布の範囲は一定に保たれる。分布（２）の状態からさらに消去回数が増加して、アクティブブロックの消去回数が分布（３）のように分布しても、分布（３）を網羅するように複数（ここでは３つ）の検査ブロックが設定される。
【００６５】
図９は、第２の実施形態のＳＳＤ３００の読み出し検査にかかる動作を説明する図である。ここでは、検査ブロックは、メモリチップ１１毎に個別に設定されるものとして説明する。即ち、読み出し検査にかかる動作および後述するデータ書き込みにかかる動作はメモリチップ１１毎に個別に実行される。なお、検査ブロックがＮＡＮＤメモリ１全体のブロックから選択されて設定されるようにしてもかまわない。その場合には、読み出し検査にかかる動作およびデータ書き込みにかかる動作はＮＡＮＤメモリ１のブロックを対象として実行される。
【００６６】
図示するように、動作がスタートすると、タイミング決定部４４は、現時点が電源オンがなされたタイミングまたは定期検査タイミングのうちの何れか１つ（または両方）に該当するか否かを判定する（ステップＳ２１）。現時点が前述の何れのタイミングにも該当しない場合（ステップＳ２１、Ｎｏ）、タイミング決定部４４は、ステップＳ２１の判定処理を再度実行する。
【００６７】
現時点が前述の何れか１つ（または両方）のタイミングに該当する場合（ステップＳ２１、Ｙｅｓ）、タイミング決定部４４は、設定されている検査ブロックのうちの一つを選択して（ステップＳ２２）、選択した検査ブロック内の検査パターンデータを検査パターンデータ一時記憶部３２に読み出す（ステップＳ２３）。そして、タイミング決定部４４は、読み出した検査パターンデータに含まれるビット反転数の増分の割合、即ち前回の読み出し検査からのビット反転数の増分を検査ブロックのビット数から前回の読み出し検査時のビット反転数を減算した値で除した値が、予め決められた閾値を超えたか否かを判定する（ステップＳ２４）。
【００６８】
なお、ステップＳ２４の判定処理で使用する閾値は、第１の実施形態におけるステップＳ５の判定処理に使用する閾値と同様の基準に基づいて定めておくようにしてよい。但し、ステップＳ２４の判定処理で使用する閾値は、ビット反転数ではなく割合で与えられる。
【００６９】
ビット反転数の増分の割合が予め決められた閾値を超えた場合（ステップＳ２４、Ｙｅｓ）、タイミング決定部４４は、ビット反転数が検査不能となる閾値を超えたか否かをさらに判定する（ステップＳ２５）。検査不能となる閾値とは、反転ビット数が増加しすぎて、アクティブブロックの読み出し検査のタイミングを決めるための判定に使用するには十分な精度が担保できなくなる値をいう。
【００７０】
ビット反転数が検査不能となる閾値を超えた場合（ステップＳ２５、Ｙｅｓ）、タイミング決定部４４は、当該ブロックをフリーブロック化し（ステップＳ２６）、当該検査ブロックよりも消去時間が古いアクティブブロックを読み出し検査対象に設定する（ステップＳ２７）。ビット反転数が検査不能となる閾値を超えていない場合（ステップＳ２５、Ｎｏ）、タイミング決定部４４は、検査ブロックのビット反転数を記録して（ステップＳ２８）、ステップＳ２７の処理を実行する。なお、ビット反転数の記録先はどのような場所であってもよく、例えばバッファメモリ３であってもよい。
【００７１】
ステップＳ２７の処理に続き、タイミング決定部４４は、読み出し検査を未実行の検査ブロックがあるか否かを判定する（ステップＳ２９）。未実行の検査ブロックがある場合（ステップＳ２９、Ｙｅｓ）、タイミング決定部４４は、ステップＳ２１に移行して、未実行の検査ブロックのうちから検査ブロックを一つ選択する。未実行の検査ブロックがない場合（ステップＳ２９、Ｎｏ）、読み出し検査実行部４３は、ステップＳ３０〜ステップＳ３５の処理においてアクティブブロックの読み出し検査を実行する。
【００７２】
まず、読み出し検査実行部４３は、ステップＳ３０において、読み出し検査対象のアクティブブロックがあるか否かを判定する（ステップＳ３０）。読み出し検査対象のアクティブブロックがある場合（ステップＳ３０、Ｙｅｓ）、読み出し検査実行部４３は、読み出し検査対象のアクティブブロックを一つ選択する（ステップＳ３１）。そして、読み出し検査実行部４３は、選択したアクティブブロックからデータを読み出して（ステップＳ３２）、読み出したデータにデータエラーがあるか否かを判定する（ステップＳ３３）。ステップＳ３３の判定処理は、ステップＳ８と同様の手法によって実行される。
【００７３】
データエラーが生じていた場合（ステップＳ３３、Ｙｅｓ）、読み出し検査実行部４３は、訂正後のデータをフリーブロックに再書き込みし（ステップＳ３４）、前記選択したアクティブブロックを読み出し検査対象から外す（ステップＳ３５）。データエラーが生じていない場合（ステップＳ３３、Ｎｏ）、読み出し検査実行部４３は、ステップＳ３４の処理をスキップする。読み出し検査実行部４３は、ステップＳ３５の処理を実行した後、ステップＳ３０の判定処理を実行する。
【００７４】
読み出し検査対象のアクティブブロックがない場合（ステップＳ３０、Ｎｏ）、アクティブブロックの読み出し検査が終了となり、タイミング決定部４４は、ステップＳ２１の判定処理を実行する。
【００７５】
図１０は、第２の実施形態のＳＳＤ３００のデータ書き込みにかかる動作を説明するフローチャートである。ここでは、一例として、読み書き制御部４１は、消去回数の幅が５０回程度に収まるようにダイナミックウェアレベリングを実行することとする。また、一例として、検査ブロック設定部４２は、メモリチップ１１の夫々について原則として３個の検査データを設定するものとする。
【００７６】
図示するように、まず、検査ブロック設定部４２は、フリーブロックのうち消去回数が最大のものを選択し、選択したフリーブロックをＦＢ＿ｍａｘとする（ステップＳ４１）。そして、検査ブロック設定部４２は、検査ブロックが存在するか否かを判定する（ステップＳ４２）。検査ブロックが存在する場合（ステップＳ４２、Ｙｅｓ）、検査ブロックのうち消去回数が最大のものをＣＢ＿ｍａｘとする（ステップＳ４３）。なお、名称の先頭に「ＥＣ」を付して、そのブロックの消去回数を表記することとする。即ち、例えば消去回数が最大の検査ブロックの消去回数を、「ＥＣＣＢ＿ｍａｘ」と表記する。
【００７７】
ステップＳ４３の処理の後、検査ブロック設定部４２は、消去回数が最大の検査ブロックの消去回数ＥＣＣＢ＿ｍａｘに５０を加算した値が消去回数が最大のフリーブロックの消去回数ＥＣＦＢ＿ｍａｘよりも小さいか否かを判定する（ステップＳ４４）。ＥＣＣＢ＿ｍａｘに５０を加算した値がＥＣＦＢ＿ｍａｘよりも小さい場合（ステップＳ４４、Ｙｅｓ）、検査ブロック設定部４２は、ＦＢ＿ｍａｘを検査ブロックに設定し、当該設定した検査ブロックに検査パターンデータを書き込む（ステップＳ４５）。その際に、検査ブロック設定部４２は、書き込んだ検査パターンデータのビット反転数を記録しておく（ステップＳ４６）。なお、新たに追加した検査パターンに検査パターンデータを書き込んだ直後においては、ビット反転数はゼロであるので、ゼロ値が記録される。
【００７８】
検査ブロックが存在しなかった場合（ステップＳ４２、Ｎｏ）、検査ブロック設定部４２は、ステップＳ４３およびステップＳ４４の処理をスキップする。
【００７９】
検査ブロック設定部４２は、ステップＳ４６の処理の後、検査ブロックが３つ以上存在するか否かを判定する（ステップＳ４７）。検査ブロックが３つ以上存在する場合（ステップＳ４７、Ｙｅｓ）、検査ブロック設定部４２は、検査ブロックのうち消去回数が最小のものをＣＢ＿ｍｉｎとし（ステップＳ４８）、アクティブブロックのうち消去回数が最小のものをＡＣ＿ｍｉｎとする（ステップＳ４９）。
【００８０】
そして、検査ブロック設定部４２は、消去回数が最小の検査ブロックの消去回数ＥＣＣＢ＿ｍｉｎが消去回数が最小のアクティブブロックの消去回数ＥＣＡＣ＿ｍｉｎよりも小さいか否かを判定する（ステップＳ５０）。ＥＣＣＢ＿ｍｉｎがＥＣＡＣ＿ｍｉｎよりも小さい場合（ステップＳ５０、Ｙｅｓ）、検査ブロック設定部４２は、ＣＢ＿ｍｉｎをフリーブロック化する（ステップＳ５１）。ＥＣＣＢ＿ｍｉｎがＥＣＡＣ＿ｍｉｎよりも大きい場合（ステップＳ５０、Ｎｏ）、検査ブロック設定部４２は、ステップＳ５１の処理をスキップする。
【００８１】
続いて、読み書き制御部４１は、フリーブロックのうち消去回数が最小のものをＦＢ＿ｍｉｎとし（ステップＳ５２）、ＥＣＡＣ＿ｍｉｎがフリーブロックＦＢ＿ｍｉｎの消去回数ＥＣＦＢ＿ｍｉｎから５０を減算した値よりも大きいか否かを判定する（ステップＳ５３）。ＥＣＡＣ＿ｍｉｎがＥＣＦＢ＿ｍｉｎから５０を減算した値よりも大きい場合（ステップＳ５３、Ｙｅｓ）、読み書き制御部４１は、ＡＣ＿ｍｉｎに書き込まれていたデータをＦＢ＿ｍｉｎに移動させ、当該移動によりフリーブロックとなったブロックをＦＢ＿ｍｉｎとする（ステップＳ５４）。そして、読み書き制御部４１は、書き込み対象のデータをＦＢ＿ｍｉｎに書き込み（ステップＳ５５）、データ書き込み時の動作を終了する。ＥＣＡＣ＿ｍｉｎがＥＣＦＢ＿ｍｉｎから５０を減算した値よりも小さい場合（ステップＳ５３、Ｎｏ）、読み書き制御部４１は、ステップＳ５４の処理をスキップする。
【００８２】
なお、検査ブロック設定部４２は、アクティブブロックの消去回数の分布を網羅するように消去回数が異なる複数のブロックを検査ブロックに設定するために、消去回数が最大のフリーブロックの消去回数が消去回数が最大の検査ブロックの消去回数を監視して、当該消去回数が所定の数（ここでは５０）だけ増加する毎に検査ブロックを追加するようにしている。しかしながら、第２の実施形態においては、ダイナミックウェアレベリングの効果によって消去回数の分布の形状がほぼ一定に保たれるので、検査ブロックを追加するタイミングを決めるための監視対象は、フリーブロックの最大消去回数に限定されない。例えば、アクティブブロックの最大消去回数を監視対象とするようにしてもよいし、フリーブロックおよびアクティブブロックを合わせたブロックの最大消去回数を監視対象とするようにしてもよい。また、最大消去回数ではなく、平均消去回数や最小消去回数を監視対象とすることもできる。
【００８３】
また、消去回数が最大のフリーブロックを新たな検査ブロックに設定するものとしているが、新たな検査ブロックとするのはフリーブロックでなくてもよい。例えば、消去回数が最大のアクティブブロックを新たな検査ブロックに設定するようにしてもよい。アクティブブロックを検査ブロックとする場合には、当該アクティブブロック内のデータをフリーブロックに転送した後に検査パターンデータを書き込むようにするとよい。
【００８４】
このように、本発明の第２の実施形態によれば、読み書き制御部４１は、ダイナミックウェアレベリングを実行するとともに、検査ブロック設定部４２は、アクティブブロックの消去回数の分布を網羅するように消去回数が異なる複数のブロックを検査ブロックに設定する、ように構成したので、消去回数が異なるアクティブブロックが含まれている場合であっても、夫々のアクティブブロックのデータの消失を効率的に予防することができる。
【００８５】
また、検査ブロック設定部４２は、フリーブロックのうちの消去回数が最大のブロックの消去回数が検査ブロックのうちの消去回数が最大のブロックに所定の数を加算した値よりも大きいとき、当該有効データが格納されていない消去回数が最大のブロックを新たに検査ブロックに設定する、ように構成した。
【００８６】
また、検査ブロック設定部４２は、消去回数が最小の検査ブロックの消去回数が消去回数が最小のアクティブブロックの消去回数よりも小さいとき、当該消去回数が最小の検査ブロックを検査ブロックから削除する、ように構成した。
【００８７】
また、検査ブロック設定部４２は、検査ブロックを設定する毎に設定した時刻を記録しておき、タイミング決定部４４は、ビット反転数の増分のビット反転していない数に対する割合が所定の閾値を超えた検査ブロックよりも古いブロックを読み出し検査の対象に設定する、ように構成したので、読み出し検査対象のアクティブブロック数を効率的に減らすことができる。
【００８８】
（第３の実施形態）
図１１は、第１の実施形態のＳＳＤ１００を搭載したパーソナルコンピュータ１２００の一例を示す斜視図である。パーソナルコンピュータ１２００は、本体１２０１、及び表示ユニット１２０２を備えている。表示ユニット１２０２は、ディスプレイハウジング１２０３と、このディスプレイハウジング１２０３に収容された表示装置１２０４とを備えている。
【００８９】
本体１２０１は、筐体１２０５と、キーボード１２０６と、ポインティングデバイスであるタッチパッド１２０７とを備えている。筐体１２０５内部には、メイン回路基板、ＯＤＤ（Optical  Disk  Device）ユニット、カードスロット、及びＳＳＤ１００等が収容されている。
【００９０】
カードスロットは、筐体１２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１２０８が設けられている。ユーザは、この開口部１２０８を通じて筐体１２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【００９１】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１２００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【００９２】
図１２は、ＳＳＤを搭載したパーソナルコンピュータのシステム構成例を示している。パーソナルコンピュータ１２００は、ＣＰＵ１３０１、ノースブリッジ１３０２、主メモリ１３０３、ビデオコントローラ１３０４、オーディオコントローラ１３０５、サウスブリッジ１３０９、ＢＩＯＳ−ＲＯＭ１３１０、ＳＳＤ１００、ＯＤＤユニット１３１１、エンベデッドコントローラ／キーボードコントローラＩＣ（ＥＣ／ＫＢＣ）１３１２、及びネットワークコントローラ１３１３等を備えている。
【００９３】
ＣＰＵ１３０１は、パーソナルコンピュータ１２００の動作を制御するために設けられたプロセッサであり、ＳＳＤ１００から主メモリ１３０３にロードされるオペレーティングシステム（ＯＳ）を実行する。更に、ＯＤＤユニット１３１１が、装填された光ディスクに対して読出し処理及び書込み処理の少なくとも１つの処理の実行を可能にした場合に、ＣＰＵ１３０１は、それらの処理の実行をする。
【００９４】
また、ＣＰＵ１３０１は、ＢＩＯＳ−ＲＯＭ１３１０に格納されたシステムＢＩＯＳ（Basic  Input  Output  System）も実行する。尚、システムＢＩＯＳは、パーソナルコンピュータ１２００内のハードウェア制御のためのプログラムである。
【００９５】
ノースブリッジ１３０２は、ＣＰＵ１３０１のローカルバスとサウスブリッジ１３０９との間を接続するブリッジデバイスである。ノースブリッジ１３０２には、主メモリ１３０３をアクセス制御するメモリコントローラも内蔵されている。
【００９６】
また、ノースブリッジ１３０２は、ＡＧＰ（Accelerated  Graphics  Port）バス等を介してビデオコントローラ１３０４との通信、及びオーディオコントローラ１３０５との通信を実行する機能も有している。
【００９７】
主メモリ１３０３は、プログラムやデータを一時的に記憶し、ＣＰＵ１３０１のワークエリアとして機能する。主メモリ１３０３は、例えばＲＡＭから構成される。
【００９８】
ビデオコントローラ１３０４は、パーソナルコンピュータ１２００のディスプレイモニタとして使用される表示ユニット１２０２を制御するビデオ再生コントローラである。
【００９９】
オーディオコントローラ１３０５は、パーソナルコンピュータ１２００のスピーカ１３０６を制御するオーディオ再生コントローラである。
【０１００】
サウスブリッジ１３０９は、ＬＰＣ（Low  Pin  Count）バス１３１４上の各デバイス、及びＰＣＩ（Peripheral  Component  Interconnect）バス１３１５上の各デバイスを制御する。また、サウスブリッジ１３０９は、各種ソフトウェア及びデータを格納する記憶装置であるＳＳＤ１００を、ＡＴＡインタフェースを介して制御する。
【０１０１】
パーソナルコンピュータ１２００は、セクタ単位でＳＳＤ１００へのアクセスを行う。ＡＴＡインタフェースを介して、書き込みコマンド、読出しコマンド、キャッシュフラッシュコマンド等がＳＳＤ１００に入力される。
【０１０２】
また、サウスブリッジ１３０９は、ＢＩＯＳ−ＲＯＭ１３１０、及びＯＤＤユニット１３１１をアクセス制御するための機能も有している。
【０１０３】
ＥＣ／ＫＢＣ１３１２は、電力管理のためのエンベデッドコントローラと、キーボード（ＫＢ）１２０６及びタッチパッド１２０７を制御するためのキーボードコントローラとが集積された１チップマイクロコンピュータである。
【０１０４】
このＥＣ／ＫＢＣ１３１２は、ユーザによるパワーボタンの操作に応じてパーソナルコンピュータ１２００の電源をＯＮ／ＯＦＦする機能を有している。ネットワークコントローラ１３１３は、例えばインターネット等の外部ネットワークとの通信を実行する通信装置である。
【０１０５】
なお、パーソナルコンピュータ１２００には、第２の実施形態にて説明したＳＳＤ３００を搭載することができる。
【０１０６】
なお、各実施形態における各機能構成部（読み書き制御部２１および読み書き制御部２１が備える各機能構成部、スクランブル処理部２２、ＥＣＣ回路２３、ならびに読み書き制御部４１および読み書き制御部４１が備える各機能構成部）は、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現することができる。このため、各機能ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施態様、或いはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれる。
【０１０７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０８】
１  ＮＡＮＤメモリ、２、４  ドライブ制御回路、３  バッファメモリ、１１  メモリチップ、２１、４１  読み書き制御部、２２  スクランブル処理部、２３  ＥＣＣ回路、３１  転送データ一時記憶部、３２  検査パターンデータ一時記憶部、３３、３４  論物変換テーブル、１００、３００  ＳＳＤ、１１１  メモリセルアレイ、２００  ホスト装置。
【図１】
2013069183.tif 000003
【図２】
2013069183.tif 000004
【図３】
2013069183.tif 000005
【図４】
2013069183.tif 000006
【図５】
2013069183.tif 000007
【図６】
2013069183.tif 000008
【図７】
2013069183.tif 000009
【図８】
2013069183.tif 000010
【図９】
2013069183.tif 000011
【図１０】
2013069183.tif 000012
【図１１】
2013069183.tif 000013
【図１２】
2013069183.tif 000014