(57)【要約】【課題】  半導体ストレージデバイスへのデータの書き込みに失敗した後の再書き込みを効率化できるメモリシステムを実現する。【解決手段】  実施形態によれば、メモリシステムは、半導体ストレージデバイスと、前記半導体ストレージデバイスと電気的に接続される第１コントローラとから構成される。前記半導体ストレージデバイスは、複数のブロックを含む不揮発性メモリと、第２コントローラとを具備する。第２コントローラは、前記第１コントローラによって、前記不揮発性メモリ内の第１ブロックに含まれる第１ページに第１データを書き込むことが要求された場合に、前記第１ページへの前記第１データの書き込みが失敗したならば、当該書き込みの失敗を前記第１コントローラに通知することなく、前記第１データが、前記不揮発性メモリ内の第２ブロックに書き込まれるように制御する。【選択図】図３
2019215777.tif 000002
【特許請求の範囲】
【請求項１】
半導体ストレージデバイスと、
前記半導体ストレージデバイスと電気的に接続される第１コントローラとから構成されるメモリシステムであって、
前記半導体ストレージデバイスは、
複数のブロックを含む不揮発性メモリと、
前記第１コントローラによって、前記不揮発性メモリ内の第１ブロックに含まれる第１ページに第１データを書き込むことが要求された場合に、前記第１ページへの前記第１データの書き込みが失敗したならば、当該書き込みの失敗を前記第１コントローラに通知することなく、前記第１データが、前記不揮発性メモリ内の第２ブロックに書き込まれるように制御する第２コントローラとを具備するメモリシステム。
【請求項２】
前記第２コントローラは、さらに、前記第２ブロックへの前記第１データの書き込みが成功した後、前記第１コントローラによって、前記第１ブロック内の前記第１ページより後の第２ページに第２データを書き込むことが要求された場合、前記第２データが、前記第２ブロックに書き込まれるように制御する請求項１記載のメモリシステム。
【請求項３】
前記第２コントローラは、さらに、前記第２ブロックへの前記第１データの書き込みが失敗したならば、当該書き込みの失敗を前記第１コントローラに通知することなく、前記第１データが、前記不揮発性メモリ内の第３ブロックに書き込まれるように制御する請求項１記載のメモリシステム。
【請求項４】
前記第２コントローラは、さらに、前記第３ブロックへの前記第１データの書き込みが成功した後、前記第１コントローラによって、前記第１ブロック内の前記第１ページより後の第２ページに第２データを書き込むことが要求された場合、前記第２データが、前記第３ブロックに書き込まれるように制御する請求項３記載のメモリシステム。
【請求項５】
前記第２コントローラは、さらに、前記第１ページへの前記第１データの書き込みが失敗したならば、前記第１ブロックに書き込まれているデータと前記第１データとが、前記第２ブロックに書き込まれるように制御する請求項１記載のメモリシステム。
【請求項６】
前記第２コントローラは、さらに、前記第１ページへの前記第１データの書き込みが失敗したならば、前記第１データが、前記第２ブロックの先頭のページに書き込まれるように制御する請求項１記載のメモリシステム。
【請求項７】
前記第２コントローラは、さらに、前記第１ページへの前記第１データの書き込みが失敗したならば、前記第１データが、前記第２ブロック内の、前記第１ページと同一のページ番号を有するページに書き込まれるように制御する請求項１記載のメモリシステム。
【請求項８】
前記第２コントローラは、前記第１ページへの前記第１データの書き込みが失敗したならば、（ａ）前記第１ブロックに書き込まれているデータと前記第１データとを前記第２ブロックに書き込むこと、（ｂ）前記第１データを前記第２ブロックの先頭ページに書き込むこと、および（ｃ）前記第２ブロック内の、前記第１ページと同一のページ番号を有するページに、前記第１データを書き込むこと、の内のいずれかを選択するように構成される請求項１記載のメモリシステム。
【請求項９】
前記第２コントローラは、さらに、前記第２ブロックへの前記第１データの書き込みが成功した後、前記第１コントローラによって、前記第１ブロック内の前記第１ページから前記第１データを読み出すことが要求された場合、前記第２ブロックから前記第１データが読み出されるように制御する請求項１記載のメモリシステム。
【請求項１０】
前記第２コントローラは、さらに、前記第１ブロックおよび前記第１ページを示す書き込み失敗位置と、前記書き込み失敗位置に関連付けられ、前記第２ブロックを示す置き換え位置とを記録する請求項１記載のメモリシステム。
【請求項１１】
前記第２コントローラは、前記第１ページへの前記第１データの書き込みが失敗したならば、前記第１ブロックに含まれる複数のページの内、前記第１ページ以降のページにデータが書き込まれないように制御する請求項１記載のメモリシステム。
【請求項１２】
前記第１コントローラは、
第１論理アドレスに前記第１データを書き込むことが要求された場合に、前記第１データが書き込まれるべき第１物理アドレスを決定し、
前記第１物理アドレスに対応する前記第１ブロック内の前記第１ページに前記第１データを書き込むことを前記半導体ストレージデバイスに要求し、
前記第１データの書き込みが完了する前に、前記第１論理アドレスと前記第１物理アドレスとの対応を示すように論理物理アドレス変換テーブルを更新するように構成される請求項１記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。  
このようなメモリシステムの一つとして、ＮＡＮＤ型フラッシュメモリを備えるソリッドステートドライブ（ＳＳＤ）が知られている。ＳＳＤは、様々なコンピューティングデバイスのメインストレージとして使用されている。
【０００３】
ＳＳＤは、例えば、ＮＡＮＤ型フラッシュメモリのような不揮発性メモリを備える半導体ストレージデバイスと、この半導体ストレージデバイスに対するライトやリードのような各種のアクセスを制御するメモリコントローラとを備える。例えば、メモリコントローラによる書き込み要求に応じてデータが半導体ストレージデバイスに書き込まれる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５１９３８２２号公報
【特許文献２】特許第５３７７５２６号公報
【特許文献３】米国特許第９１２８８２２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このような書き込みが失敗した場合、半導体ストレージデバイスはメモリコントローラに失敗を通知する。メモリコントローラは、通知に応じて、半導体ストレージデバイスに対してデータの書き込みを再度要求し、要求に応じてデータが半導体ストレージデバイスに再度書き込まれる。
【０００６】
本発明が解決しようとする課題は、半導体ストレージデバイスへのデータの書き込みに失敗した後の再書き込みを効率化できるメモリシステムを提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、メモリシステムは、半導体ストレージデバイスと、前記半導体ストレージデバイスと電気的に接続される第１コントローラとから構成される。前記半導体ストレージデバイスは、複数のブロックを含む不揮発性メモリと、第２コントローラとを具備する。第２コントローラは、前記第１コントローラによって、前記不揮発性メモリ内の第１ブロックに含まれる第１ページに第１データを書き込むことが要求された場合に、前記第１ページへの前記第１データの書き込みが失敗したならば、当該書き込みの失敗を前記第１コントローラに通知することなく、前記第１データが、前記不揮発性メモリ内の第２ブロックに書き込まれるように制御する。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係るメモリシステムの構成の例を示すブロック図。
【図２】第１実施形態のメモリシステムによって用いられる置き換えテーブルの一構成例を示す図。
【図３】第１実施形態のメモリシステムによって、書き込み失敗時にブロックが置き換えられる第１の例を示す図。
【図４】第１実施形態のメモリシステムによって、書き込み失敗時にブロックが置き換えられる第２の例を示す図。
【図５】図３の置き換え先のブロックにデータがさらに書き込まれる例を示す図。
【図６】第１実施形態のメモリシステムによって、書き込み失敗時にブロックが置き換えられる第３の例を示す図。
【図７】第１実施形態のメモリシステムによって、書き込み失敗時にブロックが置き換えられる第４の例を示す図。
【図８】図７の置き換え先のブロックにデータがさらに書き込まれる例を示す図。
【図９】セクタにデータが書き込まれる例を示す図。
【図１０】図９の書き込みに対応する論理物理アドレス変換テーブルの例を示す図。
【図１１】図９のセクタにデータがさらに書き込まれる例を示す図。
【図１２】図１１の書き込みに対応する論理物理アドレス変換テーブルの例を示す図。
【図１３】図１１の書き込みにおいて書き込み失敗が発生した場合に、別のセクタにデータが書き込まれる例を示す図。
【図１４】図１３の書き込みに対応する論理物理アドレス変換テーブルの例を示す図。
【図１５】第１実施形態のメモリシステムに設けられる半導体ストレージデバイス内のセクタにデータが書き込まれる例を示す図。
【図１６】図１５の書き込みに対応する論理物理アドレス変換テーブルの例を示す図。
【図１７】図１５の書き込みにおいて書き込み失敗が発生した場合に、置き換えブロックにデータが書き込まれる例を示す図。
【図１８】図１５のセクタにデータがさらに書き込まれる例を示す図。
【図１９】図１８の書き込みに対応する論理物理アドレス変換テーブルの例を示す図。
【図２０】図１５の半導体ストレージデバイスによる書き込み失敗時のブロックの置き換えと、置き換えが発生したブロックの外部からのイメージとを示す図。
【図２１】図１５の半導体ストレージデバイスによって用いられる置き換えテーブルの例を示す図。
【図２２】図１５の半導体ストレージデバイスによる置き換えブロックへの書き込みにおいて書き込み失敗が発生した場合に、別の置き換えブロックにデータが書き込まれる例を示す図。
【図２３】図２２の置き換えに対応する置き換えテーブルの例を示す図。
【図２４】図１５の半導体ストレージデバイスによる置き換えの第１の例を示す図。
【図２５】図２４の置き換えに対応する置き換えテーブルの例を示す図。
【図２６】図１５の半導体ストレージデバイスによる置き換えの第２の例を示す図。
【図２７】図２６の置き換えに対応する置き換えテーブルの例を示す図。
【図２８】図１５の半導体ストレージデバイスによる置き換えの第３の例を示す図。
【図２９】図２８の置き換えに対応する置き換えテーブルの例を示す図。
【図３０】半導体ストレージデバイスによって書き込み失敗が通知される場合にメモリコントローラによって実行される書き込み動作のシーケンスを示すタイミングチャート。
【図３１】第１実施形態のメモリシステムに設けられるメモリコントローラによって実行される書き込み動作のシーケンスを示すタイミングチャート。
【図３２】メモリコントローラによって実行される書き込み処理の手順の例を示すフローチャート。
【図３３】半導体ストレージデバイスによって実行される書き込み処理の手順の例を示すフローチャート。
【図３４】第１実施形態のメモリシステムに設けられるメモリコントローラによって実行される書き込み処理の手順の例を示すフローチャート。
【図３５】第１実施形態のメモリシステムに設けられる半導体ストレージデバイスによって実行される書き込み処理の手順の例を示すフローチャート。
【図３６】第２実施形態のメモリシステムの構成の例を示すブロック図。
【発明を実施するための形態】
【０００９】
以下、実施の形態について図面を参照して説明する。
【００１０】
（第１実施形態）  
まず、図１を参照して、第１実施形態に係るメモリシステム１の構成を説明する。
【００１１】
メモリシステム１は、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された一つ以上の半導体ストレージデバイス５を含む。メモリシステム１は、当該メモリシステム１にアクセスするホスト２とで、コンピュータシステムを構成し得る。
【００１２】
ホスト２は、メモリシステム１にアクセスする情報処理装置（コンピューティングデバイス）である。ホスト２は、大量且つ多様なデータをメモリシステム１に保存するサーバ（ストレージサーバ）であってもよいし、パーソナルコンピュータであってもよい。メモリシステム１は、例えば、ＮＡＮＤ型フラッシュメモリを備えたソリッドステートドライブ（ＳＳＤ）として実現され得る。
【００１３】
メモリシステム１は、ホスト２として機能する情報処理装置のメインストレージとして使用され得る。メモリシステム１は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１４】
ホスト２とメモリシステム１とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）等が使用され得る。
【００１５】
メモリシステム１は、半導体ストレージデバイス５と、この半導体ストレージデバイス５に電気的に接続されるメモリコントローラ４とから構成される。半導体ストレージデバイス５は、不揮発性メモリのメモリセルアレイ３１を備える。この不揮発性メモリは、例えば、ＮＡＮＤ型フラッシュメモリであり、半導体ストレージデバイス５は、例えば、ＮＡＮＤ型フラッシュメモリチップである。
【００１６】
メモリコントローラ４は、Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ（ＳｏＣ）のような回路によって実現され得る。メモリシステム１は、揮発性メモリであるランダムアクセスメモリ、例えば、ＤＲＡＭ６を備えていてもよい。あるいは、ＳＲＡＭのようなランダムアクセスメモリがメモリコントローラ４に内蔵されていてもよい。
【００１７】
ＤＲＡＭ６等のランダムアクセスメモリには、論理物理アドレス変換テーブル２１のキャッシュ領域が設けられている。論理物理アドレス変換テーブル２１は、ホスト２が指定する論理アドレスそれぞれと半導体ストレージデバイス５（より詳しくはメモリセルアレイ３１）の物理アドレスそれぞれとの間のマッピングを管理し、例えば、ルックアップテーブル（ＬＵＴ）として実現される。ＤＲＡＭ６等のランダムアクセスメモリには、さらに、半導体ストレージデバイス５から読み出されたデータを一時的に格納するためのバッファ領域であるリードバッファ、半導体ストレージデバイス５に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ、およびガベージコレクション（ＧＣ）に用いられるデータを一時的に格納するためのバッファ領域であるＧＣバッファ、ブロック管理に用いられる各種の情報（例えば、後述するプログラム／イレーズ（Ｐ／Ｅ）サイクル数）の格納領域等が設けられてもよい。なお、ＤＲＡＭ６は、メモリコントローラ４の内部に設けられていてもよい。
【００１８】
メモリコントローラ４は、Ｔｏｇｇｌｅ  ＤＤＲ、Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ（ＯＮＦＩ）等のインタフェース規格に対応するＮＡＮＤインタフェース１３を介して、半導体ストレージデバイス５に電気的に接続されている。ＮＡＮＤインタフェース１３は、半導体ストレージデバイス５を制御するように構成されたＮＡＮＤ制御回路として機能する。
【００１９】
メモリコントローラ４は、半導体ストレージデバイス５を制御するように構成されたメモリコントローラとして機能する。
【００２０】
メモリコントローラ４は、半導体ストレージデバイス５のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能してもよい。このＦＴＬによって実行されるデータ管理には、（１）論理アドレスそれぞれと半導体ストレージデバイス５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、（２）ページ単位のリード／ライトとブロック単位の消去（イレーズ）動作とを隠蔽するための処理、等が含まれる。論理アドレスは、メモリシステム１をアドレス指定するためにホスト２によって使用されるアドレスである。この論理アドレスとしては、例えば、論理ブロックアドレス（ＬＢＡ）が使用される。
【００２１】
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、論理物理アドレス変換テーブル２１を用いて実行される。メモリコントローラ４は、論理物理アドレス変換テーブル２１を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータがライトされた半導体ストレージデバイス５内の物理記憶位置を示す。論理物理アドレス変換テーブル２１は、メモリシステム１の電源オン時に半導体ストレージデバイス５からＤＲＡＭ６にロードされてもよい。
【００２２】
半導体ストレージデバイス５は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイ３１を含む。このメモリセルアレイ３１は、複数のブロックＢ０〜Ｂｍ−１を含む。ブロックＢ０〜Ｂｍ−１の各々は複数のページ（ここではページＰ０〜Ｐｎ−１）を含む。ブロックＢ０〜Ｂｍ−１は、データ消去の最小単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページＰ０〜Ｐｎ−１の各々は、同一ワード線に接続された複数のメモリセルを含む。ページＰ０〜Ｐｎ−１は、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
【００２３】
ブロックＢ０〜Ｂｍ−１の各々に対して許容できる最大Ｐ／Ｅサイクル数は限られている。あるブロックの１回のＰ／Ｅサイクルは、このブロック内の全てのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作（プログラム動作）とを含む。
【００２４】
したがって、１つのページへのデータ書き込みは、１つのＰ／Ｅサイクル当たり１回のみ可能である。このため、メモリコントローラ４は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、メモリコントローラ４は、論理物理アドレス変換テーブル２１を更新してこの論理アドレスをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。以下では、論理物理アドレス変換テーブル２１から参照されているデータ（すなわち論理アドレスと紐付けられているデータ）を有効データと称する。また、どの論理アドレスとも紐付けられていないデータを無効データと称する。有効データは、後にホスト２からリードされる可能性があるデータである。無効データは、もはやホスト２からリードされる可能性が無いデータである。
【００２５】
ブロック管理には、ウェアレベリング、ガベージコレクション（ＧＣ）等が含まれる。なお、本実施形態では、後述するように、メモリコントローラ４によるバッドブロックの管理は必要ない。
【００２６】
メモリコントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４等を含んでもよい。これらホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４は、バス１０を介して相互接続されていてもよい。
【００２７】
ホストインタフェース１１は、ホスト２から様々なコマンド、例えば、Ｉ／Ｏコマンド、各種制御コマンド、等を受信する回路として機能する。Ｉ／Ｏコマンドには、ライトコマンド、リードコマンド、アンマップコマンド（トリムコマンド）、フォーマットコマンド、フラッシュコマンド等が含まれ得る。
【００２８】
ＤＲＡＭインタフェース１４は、ＤＲＡＭ６のアクセスを制御するように構成されたＤＲＡＭ制御回路として機能する。ＤＲＡＭ６の記憶領域は、論理物理アドレス変換テーブル２１を格納するための領域や、図示しないリードバッファ、ライトバッファ、ＧＣバッファ等として利用される領域に割り当てられる。
【００２９】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、およびＤＲＡＭインタフェース１４を制御するように構成されたプロセッサである。ＣＰＵ１２は、図示しないＲＯＭ等に格納されている制御プログラム（ファームウェア）を実行することによって様々な処理を行う。このＣＰＵ１２は、上述のＦＴＬの処理に加え、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ１２の動作は、ＣＰＵ１２によって実行される上述のファームウェアによって制御される。なお、ＦＴＬ処理およびコマンド処理の一部または全部は、メモリコントローラ４内の専用ハードウェアによって実行されてもよい。
【００３０】
ＣＰＵ１２は、例えば、リード制御部１２１、ライト制御部１２２、およびＧＣ制御部１２３として機能することができる。
【００３１】
リード制御部１２１は、論理アドレスに対応する論理物理アドレス変換テーブル２１のエントリに基づいて、論理アドレスに対応する物理アドレスを求め、半導体ストレージデバイス５からリードコマンドに応じたデータを読み出す。
【００３２】
ライト制御部１２２は、ライトコマンドとともにホスト２から受信されたユーザデータを、ＤＲＡＭ６上のライトバッファに蓄積する。また、ライト制御部１２２は、このライトコマンドよってユーザデータをある論理アドレスに書き込むことが要求されている場合、このユーザデータが書き込まれるべき物理アドレスを決定する。そして、ライト制御部１２２は、そのユーザデータを、決定された物理アドレスに対応するブロックおよびページに書き込むことを半導体ストレージデバイス５に要求する。より具体的には、ライト制御部１２２は、半導体ストレージデバイス５に、物理アドレスを示す情報（例えばブロックおよびページ）と、ユーザデータとを送出する。
【００３３】
次いで、ライト制御部１２２は、半導体ストレージデバイス５にプログラムを指示する。すなわち、ライト制御部１２２は、半導体ストレージデバイス５にプログラムコマンドを送ることにより、半導体ストレージデバイス５に対して、送出されたユーザデータを書き込み先のブロックおよびページにプログラムさせる。
【００３４】
半導体ストレージデバイス５内のメモリセルアレイ３１は複数のブロックを含んでいる。ブロックは、有効データを格納しているブロック（アクティブブロック）と、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なブロック（フリーブロック）とに大別される。１つ以上のフリーブロックから１つが選択され、イレーズ処理を経ることで、書き込み先ブロックとして割り当てられる。書き込み先ブロックは、有効データを格納し得る。
【００３５】
また、ライト制御部１２２は、ライトバッファ内の、送出されたユーザデータが蓄積されていた領域を解放する。ライト制御部１２２は、論理アドレスと物理アドレスとをマッピングする。このマッピングは、論理物理アドレス変換テーブル２１内のエントリとして記録される。ライト制御部１２２は、半導体ストレージデバイス５に書き込みを要求した後、半導体ストレージデバイス５によるその書き込みが完了する前に、論理アドレスと物理アドレスとをマッピングし、当該マッピングを示すエントリを用いて論理物理アドレス変換テーブル２１を更新する。
【００３６】
ＧＣ制御部１２３も、ＧＣバッファを用いて、上述したようなライト制御部１２２による書き込み動作と同様にして、半導体ストレージデバイス５への書き込みを行うことができる。ＧＣ制御部１２３は、有効データを格納しているアクティブブロック群からガベージコレクションソースブロック（ＧＣソースブロック）を選択し、このＧＣソースブロック内の有効データを、フリーブロック群から書き込み先ブロックとして確保されたガベージコレクションデスティネーションブロック（ＧＣデスティネーションブロック）に書き込むことを半導体ストレージデバイス５に要求する。
【００３７】
半導体ストレージデバイス５は、メモリセルアレイ３１、入出力バッファ３２、制御回路３３、置き換えコントローラ３４、ＲＡＭ３５、周辺回路３６、等を備える。ＮＡＮＤインタフェース１３を介して、メモリコントローラ４から供給されるか、あるいはメモリコントローラ４に供給される各種の制御信号、コマンド、アドレス、およびデータは、入出力バッファ３２に蓄積される。つまり、メモリコントローラ４と半導体ストレージデバイス５とは、ＮＡＮＤインタフェース１３および入出力バッファ３２を介して制御信号、コマンド、アドレス、およびデータの授受を行う。
【００３８】
メモリセルアレイ３１は複数のブロックを含む。メモリセルアレイ３１は、あるブロックのあるページへの書き込みが失敗した場合、そのブロックにおいて、書き込みが失敗したページ以降のページに書き込み（追記書き込み）ができなくなるという特性を有している場合がある。
【００３９】
制御回路３３は、入出力バッファ３２を介してメモリコントローラ４から供給される各種の外部制御信号（書き込みイネーブル信号、読み出しイネーブル信号、コマンドラッチイネーブル信号、アドレスラッチイネーブル信号、等）とコマンドとに基づき、データの書き込み動作、消去動作、および読み出し動作を制御する。
【００４０】
周辺回路３６は、制御回路３３と協働して、ワード線およびビット線の駆動、書き込み、消去および読み出しの動作に必要な内部電圧の発生等を制御する。
【００４１】
置き換えコントローラ３４は、例えば、回路として実現され、制御回路３３による、メモリセルアレイ３１内のあるブロックのあるページに対するデータの書き込みが失敗した場合に、置き換えのための置き換えブロックを割り当て、置き換えブロックにそのデータが書き込まれるように制御回路３３等を制御する。置き換えコントローラ３４は、あるブロックのあるページに対するデータの書き込みが失敗したならば、そのブロックのそのページ以降にデータが書き込まれないように制御し、そのページ以降に書き込まれるべきであったデータが置き換えブロックに書き込まれるように制御する。また、書き込みが失敗したページ以降からのデータの読み出しが要求される場合に、実際にデータが書き込まれた置き換えブロック内のページからデータが読み出されるように制御回路３３等を制御する。
【００４２】
ＲＡＭ３５には、置き換えテーブル３８とフリーブロック情報３９とが格納されている。
【００４３】
置き換えテーブル３８には、あるデータが書き込まれるべきであった書き込み失敗位置と、当該書き込み失敗位置への書き込みの失敗に応じて確保された置き換え位置とが相互に関連付けて記録される。
【００４４】
例えば、図２に示すように、置き換えテーブル３８は、書き込み失敗位置と置き換え位置とをそれぞれ含む一つ以上のエントリを含み得る。書き込み失敗位置は、書き込みに失敗した物理記憶位置を示し、例えば、ブロック番号とページ番号とで表される。置き換え位置は、この書き込み失敗位置が置き換えられた物理記憶位置を示し、例えば、ブロック番号で表される。なお、書き込み失敗位置がブロック番号で表されてもよいし、置き換え位置がブロック番号とページ番号とで表されてもよい。
【００４５】
また、フリーブロック情報３９は、有効データを含まない１つ以上のフリーブロックにそれぞれ対応する１つ以上のブロック番号を含む。
【００４６】
置き換えコントローラ３４は、あるブロックのあるページに対するデータの書き込みが失敗したことに応じて、フリーブロック情報３９を用いて、１つ以上のフリーブロックから１個を選択し、イレーズ処理を施して、置き換えブロックとして割り当てる。置き換えブロックは、有効データを格納し得る。そして、置き換えコントローラ３４は、書き込みが失敗したブロックおよびページを示す書き込み失敗位置と、置き換えブロックを示す置き換え位置とを含むエントリを、置き換えテーブル３８に追加する。また、置き換えコントローラ３４は、割り当てられた置き換えブロックのブロック番号を、フリーブロック情報３９から削除する。
【００４７】
図３から図８を参照して、半導体ストレージデバイス５において、あるブロックのあるページに対するデータの書き込みが失敗した場合に、そのページ以降に書き込まれるべきであったデータが置き換えブロックに書き込まれる例について説明する。
【００４８】
図３に示すように、例えば、メモリコントローラ４によって、メモリセルアレイ３１内のブロック１００に含まれるページ１にデータＢを書き込むことが要求される場合、制御回路３３および周辺回路３６は、このページ１にデータＢを書き込む。置き換えコントローラ３４は、ページ１へのデータＢの書き込みが失敗したならば、当該書き込みの失敗をメモリコントローラ４に通知することなく、データＢが、メモリセルアレイ３１内の置き換えのためのブロック２００（置き換えブロック）に書き込まれるように制御する。データＢは、図３に示すように、例えば、ブロック２００の先頭のページ０に書き込まれる。
【００４９】
なお、データＢは、図４に示すように、書き込みに失敗したページ１と同一のページ番号を有する、ブロック２００内のページ１に書き込まれてもよい。
【００５０】
また、図５に示すように、ブロック２００のページ０へのデータＢの書き込みが成功した後、メモリコントローラ４によって、ブロック１００内のページ１より後のページ（ここでは、ページ２）にデータＣを書き込むことが要求された場合、置き換えコントローラ３４は、データＣが、ブロック２００に書き込まれるように制御する。つまり、ブロック１００内のページ１以降に書き込まれることが要求されたデータは、ブロック２００に書き込まれる。
【００５１】
なお、図６に示すように、置き換えコントローラ３４は、データＢだけでなく、ブロック１００のページ１へのデータＢの書き込みが失敗した時点でブロック１００に既に書き込まれていたデータ（ここでは、データＡ）も、ブロック２００に書き込まれるようにしてもよい。
【００５２】
したがって、置き換えコントローラ３４は、ブロック１００のページ１へのデータＢの書き込みが失敗した場合、（ａ）ブロック１００に既に書き込まれているデータＡと書き込みに失敗したデータＢとをブロック２００に書き込むこと、（ｂ）データＢをブロック２００の先頭のページ０に書き込むこと、および（ｃ）ブロック２００内の、書き込みに失敗したページ１と同一のページ番号を有するページ１に、データＢを書き込むこと、の内のいずれかを選択することができる。
【００５３】
また、図７に示すように、置き換えのためのブロック２００へのデータＢの書き込みが失敗したならば、置き換えコントローラ３４は、当該書き込みの失敗をメモリコントローラ４に通知することなく、データＢが、メモリセルアレイ３１内のさらに別のブロック３００に書き込まれるように制御する。図８に示すように、このブロック３００へのデータＢの書き込みが成功した後、メモリコントローラ４によって、ブロック１００内のページ１より後のページ（ここでは、ページ２）にデータＣを書き込むことが要求された場合、置き換えコントローラ３４は、データＣが、ブロック３００に書き込まれるように制御する。つまり、ブロック１００内のページ１以降に書き込まれることが要求されたデータは、ブロック３００に書き込まれる。
【００５４】
なお、ブロック３００へのデータＢの書き込みが失敗したならば、置き換えコントローラ３４は、当該書き込みの失敗をメモリコントローラ４に通知することなく、データＢが、メモリセルアレイ３１内のさらに別のブロック（例えば、ブロック４００）に書き込まれるように制御する。さらに、ブロック４００へのデータＢの書き込みが失敗したならば、置き換えコントローラ３４は、当該書き込みの失敗をメモリコントローラ４に通知することなく、データＢが、メモリセルアレイ３１内のさらに別のブロック（例えば、ブロック５００）に書き込まれるように制御する。このように、置き換えコントローラ３４は、あるブロックへのデータＢの書き込みが失敗したならば、さらに別のブロックを確保してデータＢが書き込まれるように制御する動作を、書き込みが成功するまで繰り返す。
【００５５】
本実施形態の半導体ストレージデバイス５は、このような置き換えコントローラ３４の動作により、あるブロックへのデータの書き込みが失敗したとしても、書き込みの失敗をメモリコントローラ４に通知することなく、そのデータを置き換えブロックに書き込むことができる。
【００５６】
このように、本実施形態の半導体ストレージデバイス５は書き込みの失敗をメモリコントローラ４に通知しないように構成されるが、書き込みの失敗をメモリコントローラに通知するように構成される半導体ストレージデバイスがある。この半導体ストレージデバイスによって書き込みの失敗が通知された場合、メモリコントローラは、その半導体ストレージデバイスに対して、書き込みに失敗したデータと巻き添えで破壊されたデータとを別のブロックに書き込むことを要求する。
【００５７】
半導体ストレージデバイスでは、書き込みのためのプログラム動作において、１つのメモリセルに対してデータが複数のプログラム段階を経て書き込まれる場合がある。例えば、半導体ストレージデバイスが、メモリセル当たりに２ビットのデータを格納可能なマルチレベルセル（ＭＬＣ）フラッシュメモリを備える場合、あるワード線に接続された１つのメモリセルに、２ページ分のデータである下位ページデータと上位ページデータとが分けて書き込まれる。このようなメモリセルでは、上位ページデータの書き込みに失敗したことによって、既に書き込まれていた下位ページデータが破壊されることがある。このように、書き込みに失敗したページとは別のページに書き込まれていて破壊されたデータを、巻き添えで破壊されたデータと称する。
【００５８】
なお、書き込み時に、隣接するワード線と物理的にショートしたことによって、その隣接するワード線に接続されたメモリセル内のデータが破壊されることがある。このように破壊されたデータも、巻き添えで破壊されたデータである。
【００５９】
図９から図１４を参照して、メモリコントローラと、書き込み失敗時にその失敗をメモリコントローラに通知する半導体ストレージデバイスとによる書き込み処理の例について説明する。以下では、複数のブロックのセットをセクタと称する。
【００６０】
ここでは、セクタ４１にデータが書き込まれる例を示す。一般に、データの書き込み先としてセクタが用いられる。以下では、説明を分かりやすくするために、一例として、セクタ４１が４つのブロック１００，２００，３００，４００を含み、これらブロック１００，２００，３００，４００の各々がページ０からページ３の４つのページを含む場合について示す。
【００６１】
セクタに含まれる複数のページには、それぞれ物理アドレスが割り当てられる。図９に示すセクタ４１には１６ページが含まれている。これら１６ページには、ページ番号が小さい順に、且つブロック番号が小さい順に、物理アドレス０〜１５が割り当てられている。つまり、セクタ４１では、ブロック１００のページ０に物理アドレス０、ブロック２００のページ０に物理アドレス１、ブロック３００のページ０に物理アドレス２、ブロック４００のページ０に物理アドレス３、ブロック１００のページ１に物理アドレス４、ブロック２００のページ１に物理アドレス５、……、ブロック３００のページ３に物理アドレス１４、ブロック４００のページ３に物理アドレス１５が割り当てられる。なお、セクタ４１に含まれるブロックの数と、各ブロックに含まれるページの数とは、メモリシステムの特性や用途等に応じて任意に設定可能である。
【００６２】
この例における半導体ストレージデバイスは、本実施形態の半導体ストレージデバイス５とは異なり、書き込み失敗時に、メモリコントローラに失敗を通知することなく別のブロックにデータを書き込む置き換え機能を有していない。メモリコントローラは半導体ストレージデバイスからの書き込み失敗の通知に応じて、新たな書き込み先のセクタを確保し、そのセクタに対して、書き込みが失敗したデータと後続するデータとを書き込むように構成される。
【００６３】
メモリコントローラは、ホスト２によってある論理アドレスにデータを書き込むことが要求された場合に、そのデータをある物理アドレスに書き込むことを決定し、当該物理アドレスにデータを書き込むことを半導体ストレージデバイスに要求する。そして、メモリコントローラは、それら論理アドレスと物理アドレスとをマッピングする。このマッピングは、論理物理アドレス変換テーブル２１−１内のエントリとして記録される。メモリコントローラは、半導体ストレージデバイスに書き込みを要求した後、半導体ストレージデバイスによるその書き込みが完了する前に、論理アドレスと物理アドレスとをマッピングし、当該マッピングを示すエントリを用いて論理物理アドレス変換テーブル２１−１を更新する。
【００６４】
セクタ４１では、割り当てられた物理アドレスが小さいページから順にデータが書き込まれる。つまり、セクタ４１では、ブロック１００、ブロック２００、ブロック３００、ブロック４００の順に、各ブロック内の１ページにデータが書き込まれる。また、各ブロック内では、先頭のページ０から順にデータが書き込まれる。したがって、セクタ４１では、ブロック１００のページ０、ブロック２００のページ０、ブロック３００のページ０、ブロック４００のページ０、ブロック１００のページ１、ブロック２００のページ１、……、ブロック３００のページ３、ブロック４００のページ３の順にデータが書き込まれることになる。このような順序の書き込みにより、セクタにおける追記書き込みが実現される。
【００６５】
図９において、ページを表す各領域には、“物理アドレス［論理アドレス］”のフォーマットで、そのページに対応する物理アドレスおよび論理アドレスが示されている。また、これら領域の内、ハッチングで示された領域は、対応するページにまだデータが書き込まれていないことを示し、物理アドレスのみが示されている。したがって、図９に示す例では、物理アドレス０〜９のページに対するデータの書き込みが完了し、それら物理アドレス０〜９のそれぞれに、論理アドレス８，７，６，５，４，３，２，１，１５，１４のそれぞれがマッピングされている。また、物理アドレス１０〜１５のページにはデータがまだ書き込まれておらず、それら物理アドレス１０〜１５にはいずれの論理アドレスもマッピングされていない。
【００６６】
図１０は、このセクタ４１に対応する論理物理アドレス変換テーブル２１−１を示す。論理物理アドレス変換テーブル２１−１は、論理アドレス１，２，３，４，５，６，７，８，１４，１５のそれぞれに、物理アドレス７，６，５，４，３，２，１，０，９，８のそれぞれがマッピングされ、論理アドレス０，９〜１３にはいずれの物理アドレスもマッピングされていないことを示している。
【００６７】
図１１に示すように、ホスト２によって論理アドレス１３にデータを書き込むことがさらに要求された場合、メモリコントローラは、当該データを物理アドレス１０に書き込むことを決定する。メモリコントローラは、半導体ストレージデバイスに対して物理アドレス１０にデータを書き込むことを要求する。メモリコントローラは、半導体ストレージデバイスに書き込みを要求した後、半導体ストレージデバイスによる書き込みが完了する前に、図１２に示すように、論理アドレス１３と物理アドレス１０とのマッピングを示すエントリを論理物理アドレス変換テーブル２１−１に追加する。
【００６８】
ここで、図１３および図１４を参照して、半導体ストレージデバイスによる物理アドレス１０［論理アドレス１３］へのデータの書き込みが失敗した場合について説明する。
【００６９】
図１３に示すように、ブロック３００内のページ２である物理アドレス１０へのデータの書き込みが失敗した場合、半導体ストレージデバイスは、その失敗をメモリコントローラに通知する。メモリコントローラは、通知に応じて、新たな書き込み先セクタ４２を確保する。セクタ４２は、セクタ４１と同様に、４つのブロック５００，６００，７００，８００を含み、これらブロック５００，６００，７００，８００の各々がページ０からページ３の４つのページを含む。
【００７０】
セクタ４２には１６ページが含まれている。これら１６ページには、ページ番号が小さい順に、且つブロック番号が小さい順に、物理アドレス１６〜３１が割り当てられている。つまり、セクタ４２では、ブロック５００のページ０に物理アドレス１６、ブロック６００のページ０に物理アドレス１７、ブロック７００のページ０に物理アドレス１８、ブロック８００のページ０に物理アドレス１９、ブロック５００のページ１に物理アドレス２０、ブロック６００のページ１に物理アドレス２１、……、ブロック７００のページ３に物理アドレス３０、ブロック８００のページ３に物理アドレス３１が割り当てられる。
【００７１】
メモリコントローラは、書き込みが失敗した論理アドレス１３に書き込まれるべきデータを、物理アドレス１６に書き込むことを決定する。メモリコントローラは、そのデータを物理アドレス１６に書き込むことを半導体ストレージデバイスに要求する。そして、メモリコントローラは、図１４に示すように、論理アドレス１３と物理アドレス１６とのマッピングを示すエントリを追加することにより、論理物理アドレス変換テーブル２１−１を更新する。
【００７２】
また、ホスト２からさらなるデータの書き込みが要求された場合には、書き込みセクタ４２内の物理アドレス１７〜３１のページに順にデータが書き込まれることになる。したがって、物理アドレス１０への書き込み失敗に応じて新たなセクタ４２が確保され、元のセクタ４１内の、書き込みに失敗した物理アドレス１０に後続する物理アドレス１１〜１５にはデータが書き込まれない。
【００７３】
ここでは、ブロック３００が、書き込みが失敗したページ２（物理アドレス１０）と、これより後のページ３（物理アドレス１４）とにはデータを書き込む（追記する）ことができない特性を有していることを想定している。そのため、セクタ４１に対して物理アドレスの順にデータを書き込むことができなくなくなる。さらに、書き込み失敗が発生していなければセクタ４１に追記されたであろうデータは、別のセクタ４２に書き込まれることになる。図１３に示すように、この別のセクタ４２に割り当てられた物理アドレス１６〜３１は、セクタ４１に書き込み済みのデータの物理アドレス１〜９とは連続していない。このように、連続した物理アドレスにデータが書き込まれないならば、有効データが断片化される度合いが高まり、それに伴うＧＣの発生頻度が増加することによって、半導体ストレージデバイスに対するアクセス性能が低下する可能性がある。
【００７４】
このような構成では、メモリコントローラは、書き込みの失敗を常に想定して、書き込み対象のデータだけでなく、その書き込み失敗時に破壊され得る範囲のデータをライトバッファ等に保持しておく必要がある。また、メモリコントローラは、書き込みが失敗したブロックが再利用されないように、そのブロックをバッドブロック（不良ブロック）として管理する必要がある。
【００７５】
また、メモリコントローラは、セクタ４１内の物理アドレス１０への書き込みを要求したことに応じて、論理物理アドレス変換テーブル２１−１を更新し、書き込みの失敗が発生し、セクタ４２内の物理アドレス１６への書き込みを要求したことに応じて、論理物理アドレス変換テーブル２１−１をさらに更新する。論理物理アドレス変換テーブル２１−１が膨大なサイズを有することがある。その場合、メモリコントローラは、論理物理アドレス変換テーブル２１−１の更新のための処理に時間を要し、半導体ストレージデバイスへの書き込みのための処理の効率が低下する。
【００７６】
半導体ストレージデバイスにおける書き込み失敗に対処するためのこのようなメモリコントローラの動作は、メモリシステムにおいて非常に大きな負担となるものである。
【００７７】
さらに、ブロック１００，２００，４００において書き込みの失敗が発生していないにも関わらず、ブロック１００のページ３、ブロック２００のページ３、並びにブロック４００のページ２およびページ３にはデータを書き込むことができない。つまり、それらページ分の記憶容量を利用することができなくなる。
【００７８】
そのため本実施形態では、半導体ストレージデバイス５を、あるブロックのあるページへのデータの書き込みが失敗した場合に、メモリコントローラ４に失敗を通知することなく、別のブロックにそのデータを書き込むように構成する。半導体ストレージデバイス５は、書き込みが失敗したとしてもメモリコントローラ４に通知することなく、成功するまでその内部で書き込み動作を繰り返すことにより、メモリセルアレイ３１にデータを書き込むことができる。
【００７９】
図１５から図２１を参照して、本実施形態のメモリコントローラ４と半導体ストレージデバイス５とによる書き込み処理の例について説明する。ここでは、セクタ４５にデータが書き込まれる例を示す。以下では、説明を分かりやすくするために、一例として、セクタ４５が４つのブロック１００，２００，３００，４００を含み、これらブロック１００，２００，３００，４００の各々がページ０からページ３の４つのページを含む場合について示す。上述したように、セクタ４５に含まれるブロックの数と、各ブロックに含まれるページの数とは、メモリシステム１の特性や用途等に応じて任意に設定可能である。また、セクタ４５内でデータが書き込まれるページの順序（セクタにおける追記書き込みの順序）と物理アドレスの割り当ては、図９を参照して上述したセクタ４１と同様である。
【００８０】
図１５は、物理アドレス０〜９のページに対するデータの書き込みが完了した後、物理アドレス１０のページに対するデータの書き込みが要求された時点のセクタ４５を示す。物理アドレス０〜１０のそれぞれには、論理アドレス８，７，６，５，４，３，２，１，１５，１４，１３のそれぞれがマッピングされている。
【００８１】
図１６は、このセクタ４５に対応する論理物理アドレス変換テーブル２１を示す。論理物理アドレス変換テーブル２１は、論理アドレス１，２，３，４，５，６，７，８，１４，１５のそれぞれに、物理アドレス７，６，５，４，３，２，１，０，９，８のそれぞれがマッピングされていることを示す。また、物理アドレス１０のページに対するデータの書き込みが要求された後、論理物理アドレス変換テーブル２１に、論理アドレス１３と物理アドレス１０とのマッピングを示すエントリが追加されている。
【００８２】
図１７は、物理アドレス１０のページ、すなわち、ブロック３００のページ２に対する書き込み失敗が発生した場合のセクタ４５を示す。ここでは、ブロック３００が、書き込みが失敗したページ２と、これより後のページ３とにはデータを書き込む（追記する）ことができない特性を有していることを想定している。そのため、半導体ストレージデバイス５は、この書き込み失敗の発生に応じて、データの書き込み先を置き換えるためのブロック５００を割り当てる。ブロック５００には、有効データを含まないフリーブロック群から選択された１つのブロックが、イレーズ処理を経ることで用いられる。
【００８３】
半導体ストレージデバイス５は、ブロック５００の、例えば、ページ０にデータ（ブロック３００のページ２への書き込みに失敗したデータ）を書き込む。書き込まれるデータは、例えば、入出力バッファ３２に蓄積されているデータである。また、書き込み時に、書き込みデータの復元用のパリティデータを生成しながら書き込む方法が用いられる場合、置き換え先のブロック５００に書き込まれるデータには、パリティデータを用いて復元されたデータが用いられてもよい。この場合、書き込み失敗時のリトライのためのデータが入出力バッファ３２に蓄積されないので、入出力バッファ３２に蓄積されるデータ量を削減できる。
【００８４】
そして、半導体ストレージデバイス５は、書き込みに失敗したブロック３００と置き換え先のブロック５００とをペアで管理する。なお、論理物理アドレス変換テーブル２１は、図１６に示したように、物理アドレス１０と論理アドレス１３とのマッピングを示すエントリを含んだままでよく、更新する必要はない。
【００８５】
次いで、図１８に示すように、ホスト２から論理アドレス１２，１１，１０のそれぞれにデータを書き込むことが要求された場合、メモリコントローラ４は、データを物理アドレス１１，１２，１３のそれぞれに書き込むことを決定する。なお、書き込みの要求は、ホスト２による要求に限らず、ガベージコレクション処理のようなメモリシステム１の内部動作によって生じた要求であってもよい。メモリコントローラ４は、半導体ストレージデバイス５に対して物理アドレス１１，１２，１３のそれぞれにデータを書き込むことを要求する。この要求に応じて、半導体ストレージデバイス５は、ブロック４００のページ２、ブロック１００のページ３、およびブロック２００のページ３のそれぞれにデータを書き込む。
【００８６】
そして、ホスト２から論理アドレス９にデータを書き込むことが要求された場合、メモリコントローラ４は、当該データを物理アドレス１４に書き込むことを決定する。メモリコントローラ４は、半導体ストレージデバイス５に対して物理アドレス１４にデータを書き込むことを要求する。半導体ストレージデバイス５は、ブロック３００のページ２における書き込み失敗によって、ブロック３００のページ３にデータを書き込むことができないので、データを置き換えブロック５００のページ１に書き込む。このページ１は、書き込みに失敗したデータが書き込まれたブロック５００のページ０に後続するページである。
【００８７】
さらに、ホスト２から論理アドレス８にデータを書き込むことが要求された場合、メモリコントローラ４は、当該データを物理アドレス１５に書き込むことを決定する。メモリコントローラ４は、半導体ストレージデバイス５に対して物理アドレス１５にデータを書き込むことを要求する。半導体ストレージデバイス５は、データをブロック５００のページ３に書き込む。
【００８８】
このように、ブロック３００のページ２への書き込みにエラーが発生した場合、このページ２に書き込まれるべきであったデータを、半導体ストレージデバイス５において内部的に、置き換えブロック５００に改めて書き込む。これにより、後続するデータを、書き込みに失敗したブロック３００を除いたブロック１００，２００，４００と、置き換えブロック５００とに対して継続して書き込む（追記する）ことができる。
【００８９】
図１９は、このセクタ４５に対応する論理物理アドレス変換テーブル２１を示す。図１６に示した論理物理アドレス変換テーブル２１と比較して、この論理物理アドレス変換テーブル２１には、論理アドレス８〜１２のそれぞれに、物理アドレス１５〜１１のそれぞれがマッピングされていることを示すエントリが追加されている。
【００９０】
また、図２０（ａ）に示すように、半導体ストレージデバイス５において、書き込みに失敗したブロック３００と置き換えブロック５００とはペアで管理されている。上述した通り、ブロック３００のページ２に対する書き込みが失敗したことにより、ブロック３００のページ２に書き込まれるべきであったデータは、置き換えブロック５００のページ０に書き込まれている。また、ブロック３００のページ３に書き込まれるべきデータは、置き換えブロック５００のページ１に書き込まれている。
【００９１】
書き込み失敗によってブロック３００のページの少なくとも一部がブロック５００のページに置き換えられ、ブロック３００とブロック５００とがペアで管理されていることは、メモリコントローラ４のような半導体ストレージデバイス５の外部からは隠蔽されている。つまり、図２０（ｂ）に示すように、書き込み失敗による置き換えが発生していても、外部（例えば、メモリコントローラ４）からはブロック３００のページ０からページ３である物理アドレス２，６，１０，１４にデータが書き込まれているものと認識される。したがって、メモリコントローラ４は、書き込み失敗による置き換えを何等考慮することなく、半導体ストレージデバイス５にアクセスすることができる。
【００９２】
図２１は、書き込み失敗が発生したブロック３００とその置き換えのためのブロック５００とを管理するための置き換えテーブル３８の例を示す。置き換えテーブル３８内の各エントリは、書き込み失敗位置と置き換え位置とを含む。上述したように、書き込み失敗位置は、書き込みに失敗した物理記憶位置を示し、例えば、ブロック番号とページ番号とで表される。置き換え位置は、この書き込み失敗位置が置き換えられた物理記憶位置を示し、例えば、ブロック番号で表される。
【００９３】
図２１に示す置き換えテーブル３８では、書き込み失敗位置が“３００−２”であって、置き換え位置が“５００”であるエントリにより、ブロック３００のページ２が、ブロック５００に置き換えられたことが示されている。半導体ストレージデバイス５は、このエントリに基づいて、ブロック３００のページ２に書き込まれるべきであったデータが、ブロック５００のページ０に書き込まれていることを認識できると共に、ブロック３００のページ２より後のページに書き込まれるべきデータが、ブロック５００のページ１から順に継続して書き込まれ得ることを認識できる。
【００９４】
このような構成により、セクタ４５内のブロック３００のページ２に対するデータの書き込みが失敗した場合、失敗したページ２以降のページ（すなわち、ページ２およびページ３）が、別のブロック５００内のページ（例えば、ページ０およびページ１）に置き換えられるので、セクタ４５に継続してデータを書き込むことができる。
【００９５】
なお、メモリコントローラ４によって、半導体ストレージデバイス５内のあるブロックのあるページからデータを読み出すことが要求された場合、半導体ストレージデバイス５は、置き換えテーブル３８を用いて、そのページが置き換えられたページであるか否かを判定する。半導体ストレージデバイス５は、例えば、データの読み出しが要求されたブロック内のページが、置き換えテーブル３８の各エントリにおいて書き込み失敗位置として示されるブロック内のページ以降のページ（すなわち、書き込みに失敗したページ以降のページ）に該当するか否かを判定する。いずれのエントリにおいても該当しない場合、半導体ストレージデバイス５は、読み出しが要求されたブロック内のページからデータを読み出す。
【００９６】
一方、該当するエントリがある場合、半導体ストレージデバイス５は、そのエントリの置き換え位置として示されるブロックにおいて、読み出し対象のページが置き換えられたページを特定し、そのページからデータを読み出す。半導体ストレージデバイス５は、書き込み失敗位置として示されたページと読み出し対象のページとの相対的な関係に基づいて、置き換えられたページを特定することができる。
【００９７】
例えば、図２０（ａ）に示した例において、メモリコントローラ４によってブロック３００のページ３からデータを読み出すことが要求された場合、半導体ストレージデバイス５は、図２１に示した置き換えテーブル３８を用いて、読み出し対象のブロック３００のページ３が置き換えられたブロック５００内のページを特定する。置き換えテーブル３８に含まれる一つのエントリは、書き込み失敗位置として示されるブロック３００のページ２が、置き換え位置として示されるブロック５００の先頭のページに置き換えられていることを示している。読み出し対象のブロック３００のページ３は、書き込み失敗位置として示されるブロック３００のページ２よりも一つ後のページである。したがって、置き換えブロック５００の先頭のページ０よりも一つ後のページであるページ１が、読み出し対象であるブロック３００のページ３が置き換えられたページとして特定される。
【００９８】
このように、置き換えテーブル３８を用いることにより、あるブロックに対する書き込みが失敗したことにより置き換えブロックに書き込まれたデータを適切に読み出すことができる。
【００９９】
次いで、図２２および図２３を参照して、置き換えブロックにおいてさらに書き込み失敗が発生する場合の書き込み処理の例を示す。
【０１００】
図２２に示すセクタ４５では、物理アドレス０〜５のページに対するデータの書き込みが完了した後、物理アドレス６のページ、すなわち、ブロック３００のページ１に対するデータの書き込みが失敗し、置き換えのためのブロック５００のページ０にそのデータが書き込まれている。半導体ストレージデバイス５は、ブロック３００とブロック５００とをペアで管理する。より具体的には、図２３に示すように、書き込み失敗位置がブロック３００のページ１であって、置き換え位置がブロック５００であることを示すエントリが、置き換えテーブル３８に追加される。
【０１０１】
そして、セクタ４５では、物理アドレス６〜９のページに対する書き込みが完了した後、物理アドレス１０のページ、すなわち、ブロック５００のページ１に対するデータの書き込みがさらに失敗し、新たな置き換えのためのブロック６００のページ０にそのデータが書き込まれている。半導体ストレージデバイス５は、ブロック５００とブロック６００とをペアで管理する。より具体的には、図２３に示すように、書き込み失敗位置がブロック５００のページ１であって、置き換え位置がブロック６００であることを示すエントリが、置き換えテーブル３８に追加される。
【０１０２】
このように、本実施形態の半導体ストレージデバイス５は、置き換えブロック５００で書き込み失敗が発生した場合に、さらなる置き換えブロック６００にデータを書き込むと共に、この置き換えの関係を置き換えテーブル３８に記述するように構成される。そのため、あるブロック３００に対応する物理アドレス２，６，１０，１４に対する複数の書き込み失敗にも容易に対応することができる。
【０１０３】
したがって、半導体ストレージデバイス５における書き込み失敗を考慮することなく追記書き込みを要求できるシンプルなインタフェースを、メモリコントローラ４に対して提供することができる。メモリコントローラ４では書き込み失敗に応じたエラー処理が行われず、且つメモリコントローラ４と半導体ストレージデバイス５との間でエラー処理のためのデータ伝送が行われないので、書き込み失敗に対処するための処理を簡素化および高速化することができる。また、半導体ストレージデバイス５において、書き込みに失敗したバッドブロックを、置き換えテーブル３８を用いて認識できるので、メモリコントローラ４ではバッドブロックの管理が不要となる。
【０１０４】
なお、上述した例では、あるブロックにおいて、書き込みが失敗したページ以降に書き込まれるべきであったデータを、別のブロックの先頭から順に書き込むことにより、ブロックを置き換えるアルゴリズムを示した。書き込み失敗が発生したブロックの置き換えは、このアルゴリズムに限られず、以下のような種々のアルゴリズムが用いられ得る。
【０１０５】
図２４および図２５は、ブロック全体が置き換えられる例を示す。この例では、ブロック３００のページ１へのデータの書き込みが失敗した場合に、ブロック３００に書き込まれるべき全てのデータが、置き換えブロック５００に書き込まれる。この場合、ブロック３００が、書き込みに失敗したページ１より後のページ２，３にデータを書き込む（追記する）ことができる特性を有していたとしても、ブロック３００に書き込まれるべき全てのデータが、置き換えブロック５００に書き込まれる。なお、ブロック３００のページ０に既に書き込まれていたデータは、このページ０から読み出されて、置き換えブロック５００のページ０に書き込まれる。
【０１０６】
置き換えテーブル３８には、図２５に示すように、書き込み失敗位置がブロック３００であって、置き換え位置がブロック５００であることを示すエントリが追加される。ブロック全体が置き換えられるので、このエントリではブロック番号のみが管理されればよく、ページ番号を管理する必要がない。したがって、置き換えテーブル３８のサイズをより小さくすることができる。
【０１０７】
図２６および図２７は、ブロック内のページが部分的に置き換えられる例を示す。この例では、各ブロックが、書き込みが失敗したページにはデータを書き込むことができないものの、その書き込みが失敗したページより後のページにデータを書き込むことができる特性を有していることを想定する。
【０１０８】
ブロック３００のページ１へのデータの書き込みが失敗した場合、そのデータのみが置き換えブロック５００に書き込まれる。また、ブロック３００内の後続するページ２およびページ３に書き込まれるべきデータは、それらページ２およびページ３に書き込まれ、置き換えブロック５００には書き込まれない。
【０１０９】
置き換えテーブル３８には、図２７に示すように、書き込み失敗位置がブロック３００のページ１であって、置き換え位置がブロック５００であることを示すエントリが追加される。
【０１１０】
なお、書き込みが失敗したデータは、置き換えブロック５００内の先頭のページ０に限らず、任意のページに書き込まれ得る。その場合、置き換えテーブル３８内の対応するエントリでは、置き換え位置としてブロック番号とページ番号とが示される。
【０１１１】
また、置き換えブロック５００内のデータが書き込まれていないページを、ブロック３００以外の別のブロックの置き換えに使用することもできる。
【０１１２】
図２８および図２９は、ブロック内のページが部分的に置き換えられる別の例を示す。この例では、各ブロックが、書き込みが失敗したページ以降のページにデータを書き込むことができない特性を有していることを想定する。
【０１１３】
ブロック３００のページ１へのデータの書き込みが失敗した場合、ブロック３００のページ１とこれより後のページ２およびページ３とに書き込まれるべきであったデータが、置き換えブロック５００内の対応するページ１〜３に書き込まれる。つまり、元のブロック３００においてデータの書き込みが完了しているページ０に対応する置き換えブロック５００内のページ０には、データが書き込まれないように制御される。
【０１１４】
置き換えテーブル３８には、図２９に示すように、書き込み失敗位置がブロック３００のページ１であって、置き換え位置がブロック５００のページ１であることを示すエントリが追加される。なお、置き換えブロック５００では、書き込み失敗位置のページ（ここでは、ページ１）と同一のページ番号を有するページからデータが書き込まれるので、置き換え位置に示されるページ番号は省略することができる。すなわち、置き換えテーブル３８には、書き込み失敗位置がブロック３００のページ１であって、置き換え位置がブロック５００であることを示すエントリが追加されてもよい。
【０１１５】
半導体ストレージデバイス５では、上述したような種々のブロック置き換えアルゴリズムが用いられ、状況に応じて最適なアルゴリズムを選択することもできる。そのような選択により、ブロックの置き換えによるメモリシステム１のパフォーマンスの低下を最低限に抑制することができる。また、半導体ストレージデバイス５のメモリセルアレイ３１が、書き込みが失敗したページ以降にデータを書き込むことができない特性を有する場合や、書き込みが失敗したページより後のページにもデータを書き込むことができる特性を有する場合に、その特性に応じて最適なブロック置き換えアルゴリズムを選択することができる。
【０１１６】
図３０および図３１を参照して、書き込み失敗を通知する半導体ストレージデバイスに接続されたメモリコントローラの動作と、本実施形態の書き込み失敗を通知しない半導体ストレージデバイス５に接続されたメモリコントローラ４の動作との差異を説明する。
【０１１７】
図３０のタイミングチャートは、書き込み失敗を通知する半導体ストレージデバイス（ＮＡＮＤ型フラッシュメモリチップ）における、メモリセルアレイ内のあるブロックのあるページへのプログラム動作シーケンスの例を示す。メモリコントローラ（ＮＡＮＤ  Ｉ／Ｆ）は、シリアル入力コマンド“８０ｈ”、プログラム動作が実行されるべきブロックおよびページを指定するアドレス、書き込むべきデータ、プログラム開始コマンド“１０ｈ”を、入出力バッファを介してこの半導体ストレージデバイスに送出する。そして、メモリコントローラは、この半導体ストレージデバイスのレディ／ビジー信号（ＲＹ／ＢＹ）を監視し、プログラム動作の完了を待つ。この半導体ストレージデバイスにおいてプログラム動作が実行されている間（ｔＰＲＯＧ）、この半導体ストレージデバイスはビジー状態に維持される。また、メモリコントローラは、プログラム動作が実行されている間に、論理物理アドレス変換テーブルを更新する。
【０１１８】
半導体ストレージデバイスは、プログラム動作が成功したか否かを検証するためのベリファイ動作を実行する。プログラムおよびベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびベリファイ動作のループ回数が、設定された最大ループ回数に達するまで繰り返される。プログラムおよびベリファイ動作が完了すると、半導体ストレージデバイスは、レディ状態に戻る。半導体ストレージデバイスがレディ状態になると、メモリコントローラは、ステータスリードコマンド“７０ｈ”を、入出力バッファを介して半導体ストレージデバイスに送出する。プログラム動作が成功したならば、成功を示すステータス（ｐａｓｓステータス）が半導体ストレージデバイスからメモリコントローラに通知される。一方、プログラム動作が成功しなかったならば、失敗を示すステータス（ｆａｉｌステータス）が半導体ストレージデバイスからメモリコントローラに通知される。
【０１１９】
失敗を示すステータスが通知された場合、メモリコントローラは、プログラム動作が新たに実行されるべきアドレス（すなわち、ブロックおよびページ）を決定する。なお、書き込みが失敗したページを有するブロックがセクタを構成している場合、図１３を参照して上述したように、そのセクタと同数のブロックを含む新たな書き込みセクタが確保される。これは、ライト性能およびリード性能が低下しないように、あるセクタ内で連続してデータを書き込むためである。メモリコントローラは、確保された新たな書き込みセクタにおいて、プログラム動作が新たに実行されるべきアドレスを決定する。
【０１２０】
そして、メモリコントローラは、新たなアドレスへのデータ書き込みを要求するために、再度、シリアル入力コマンド“８０ｈ”、決定されたプログラム動作が実行されるべきブロックおよびページを指定するアドレス、書き込むべきデータ、プログラム開始コマンド“１０ｈ”を、入出力バッファを介してこの半導体ストレージデバイスに送出する。また、メモリコントローラは、半導体ストレージデバイスによってプログラム動作が実行され、ビジー状態である間に、論理物理アドレス変換テーブルを再度更新する。
【０１２１】
半導体ストレージデバイスがビジー状態からレディ状態に戻った場合、メモリコントローラは、ステータスリードコマンド“７０ｈ”を、入出力バッファを介して半導体ストレージデバイスに送出する。メモリコントローラは、半導体ストレージデバイスから成功を示すステータスまたは失敗を示すステータスの通知を受ける。
【０１２２】
メモリコントローラは、例えば、書き込みの成功を示すステータスが半導体ストレージデバイスからメモリコントローラに通知されるまで、上述のシリアル入力コマンドを送出してからステータスの通知を受けるまでの動作を繰り返す。論理物理アドレス変換テーブルは、この動作毎に更新される。そのため、論理物理アドレス変換テーブルが膨大なデータ量を有するテーブルであるならば、その更新のための処理に時間を要し、半導体ストレージデバイスへの書き込みのための処理の効率が低下する。
【０１２３】
さらに、上述したように、あるページへの書き込み失敗に応じて、新たな書き込みセクタにデータが書き込まれるので、元のセクタでは、バッドブロックではない正常なブロック内のページであるにも関わらず、データの書き込みに利用されないページが発生する。
【０１２４】
一方、図３１のタイミングチャートは、本実施形態の半導体ストレージデバイス５における、メモリセルアレイ３１内のあるブロックのあるページへのプログラム動作シーケンスの例を示す。メモリコントローラ４（ＮＡＮＤ  Ｉ／Ｆ１３）は、シリアル入力コマンド“８０ｈ”、プログラム動作が実行されるべきブロックおよびページを指定するアドレス、書き込むべきデータ、プログラム開始コマンド“１０ｈ”を、入出力バッファ３２を介して半導体ストレージデバイス５に送出する。そして、メモリコントローラ４は、半導体ストレージデバイス５のレディ／ビジー信号（ＲＹ／ＢＹ）を監視し、プログラム動作の完了を待つ。半導体ストレージデバイス５においてプログラム動作が実行されている間（ｔＰＲＯＧ）、半導体ストレージデバイス５はビジー状態に維持される。また、メモリコントローラ４は、プログラム動作が実行されている間に、論理物理アドレス変換テーブル２１を更新する。
【０１２５】
半導体ストレージデバイス５は、プログラム動作が成功したか否かを検証するためのベリファイ動作を実行する。プログラムおよびベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびベリファイ動作のループ回数が、設定された最大ループ回数に達するまで繰り返される。プログラムおよびベリファイ動作が完了し、プログラム動作が成功したならば、半導体ストレージデバイス５は、レディ状態に戻る。
【０１２６】
プログラムおよびベリファイ動作が完了し、プログラム動作が失敗したならば、半導体ストレージデバイス５は、ビジー状態のまま、書き込みに失敗したブロック内のページを置き換えるための、置き換えブロック内のページに対して、プログラムおよびベリファイ動作を実行する。半導体ストレージデバイス５は、この置き換えブロックに対するプログラムおよびベリファイ動作が完了し、プログラム動作が成功したならば、レディ状態に戻る。一方、このプログラム動作が失敗したならば、さらに別の置き換えブロックに対するプログラムおよびベリファイ動作が実行される。つまり、このようなプログラムおよびベリファイ動作が、置き換えブロックに対するプログラム動作が成功するまで繰り返される。
【０１２７】
このように、半導体ストレージデバイス５は、メモリコントローラ４から要求されたプログラム動作が失敗したとしても、その失敗をメモリコントローラ４に通知せず、半導体ストレージデバイス５の内部で、書き込みに失敗したデータを別のブロックに書き込むためのプログラム動作を実行する。また、メモリコントローラ４は、プログラム開始コマンド“１０ｈ”を送出して、半導体ストレージデバイス５にプログラム動作を要求した後、そのプログラム動作に関して、半導体ストレージデバイス５との間で何等処理を行うことがない。したがって、あるブロック内のページへのプログラム動作に失敗した後、メモリコントローラ４にその失敗を通知せずに、半導体ストレージデバイス５の内部で、置き換えブロックのページへのプログラム動作を効率的に行うことができる。
【０１２８】
図３２および図３３のフローチャートを参照して、メモリコントローラと、書き込み失敗時にその失敗をメモリコントローラに通知する半導体ストレージデバイスとによる書き込み処理について説明する。この半導体ストレージデバイスは、本実施形態の半導体ストレージデバイス５とは異なり、書き込み失敗時に、メモリコントローラに失敗を通知することなく別のブロックにデータを書き込む置き換え機能を有していない。
【０１２９】
図３２のフローチャートは、メモリコントローラによって実行される書き込み処理の手順の例を示す。
【０１３０】
メモリコントローラは、ある論理アドレスにデータを書き込む場合、そのデータが書き込まれる物理アドレス（書き込み先物理アドレス）を決定する（ステップＳ１１）。メモリコントローラは、半導体ストレージデバイスに対して、書き込み先物理アドレスに対応するブロックのページにデータを書き込むことを要求する（ステップＳ１２）。そして、メモリコントローラは、ステップＳ１１における論理アドレスと物理アドレスとを示すエントリを用いて、論理物理アドレス変換テーブルを更新する（ステップＳ１３）。
【０１３１】
次いで、メモリコントローラは、半導体ストレージデバイスによる書き込みが完了したか否かを判定する（ステップＳ１４）。メモリコントローラは、半導体ストレージデバイスのレディ／ビジー信号（ＲＹ／ＢＹ）を監視し、書き込みを要求した後、ビジー状態からレディ状態に戻ったことに応じて、書き込みが完了したと判断する。より具体的には、メモリコントローラは、半導体ストレージデバイスによるプログラム動作およびベリファイ動作が完了したか否かを判定する。メモリコントローラは、半導体ストレージデバイスのレディ／ビジー信号（ＲＹ／ＢＹ）を監視し、プログラム開始コマンドを送出した後、ビジー状態からレディ状態に戻ったことに応じて、プログラム動作およびベリファイ動作が完了したと判断する。
【０１３２】
書き込みが完了していない場合（ステップＳ１４のＮＯ）、ステップＳ１４に戻り、半導体ストレージデバイスによる書き込みが完了したか否かが再度判定される。したがって、メモリコントローラは、半導体ストレージデバイスによる書き込みが完了するまで、後続する手順の実行を待つ。
【０１３３】
一方、書き込みが完了した場合（ステップＳ１４のＹＥＳ）、メモリコントローラは、半導体ストレージデバイスにステータスの通知を要求する（ステップＳ１５）。プログラム動作が成功したならば、成功を示すステータスが半導体ストレージデバイスからメモリコントローラに通知される。一方、プログラム動作が失敗したならば、失敗を示すステータスが半導体ストレージデバイスからメモリコントローラに通知される。
【０１３４】
メモリコントローラは、通知されたステータスに基づき、書き込みが成功したか否かを判定する（ステップＳ１６）。書き込みが成功した場合（ステップＳ１６のＹＥＳ）、処理を終了する。
【０１３５】
書き込みが失敗した場合（ステップＳ１６のＮＯ）、メモリコントローラは、エラー内容を確認し、ライトリトライを準備し（ステップＳ１７）、ステップＳ１１に戻る。すなわち、書き込みが失敗したデータを半導体ストレージデバイス内の別の物理アドレスに書き込むための手順がさらに実行される。
【０１３６】
図３３のフローチャートは、書き込み失敗時にその失敗をメモリコントローラに通知する半導体ストレージデバイスによって実行される書き込み処理の手順の例を示す。
【０１３７】
半導体ストレージデバイスは、メモリコントローラから書き込みが要求されたか否かを判定する（ステップＳ２１）。メモリコントローラによる書き込みの要求においては、書き込み先のブロックおよびページを指定するアドレスと書き込むべきデータとがメモリコントローラから半導体ストレージデバイスに送出される。書き込みが要求されていない場合（ステップＳ２１のＮＯ）、ステップＳ２１に戻る。
【０１３８】
一方、書き込みが要求された場合（ステップＳ２１のＹＥＳ）、半導体ストレージデバイスは、レディ／ビジー信号（ＲＹ／ＢＹ）をレディ状態からビジー状態に遷移させ、書き込み先のブロックのページにデータを書き込む（ステップＳ２２）。より具体的には、半導体ストレージデバイスは、書き込み先のブロックのページにデータをプログラムするためのプログラム動作を実行し、そしてプログラム動作が成功したか否かを検証するためのベリファイ動作を実行する。プログラムおよびベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびベリファイ動作のループ回数が、設定された最大ループ回数に達するまで繰り返される。
【０１３９】
書き込み動作（すなわち、プログラムおよびベリファイ動作）が完了し、書き込みが成功したならば（ステップＳ２３のＹＥＳ）、半導体ストレージデバイスは成功を示すステータスを入出力バッファ（ステータスレジスタ）に設定する（ステップＳ２４）。一方、書き込みが失敗したならば（ステップＳ２３のＮＯ）、半導体ストレージデバイスは失敗を示すステータスを入出力バッファに設定する（ステップＳ２５）。そして、半導体ストレージデバイスは、レディ／ビジー信号（ＲＹ／ＢＹ）をレディ状態に戻す（ステップＳ２６）。
【０１４０】
次いで、半導体ストレージデバイスは、メモリコントローラからステータスの通知が要求されたか否かを判定する（ステップＳ２７）。ステータスの通知が要求されていない場合（ステップＳ２７のＮＯ）、ステップＳ２７に戻る。
【０１４１】
ステータスの通知が要求された場合（ステップＳ２７のＹＥＳ）、半導体ストレージデバイスは、書き込みの成功または失敗を示すステータスをメモリコントローラに通知し（ステップＳ２８）、処理を終了する。
【０１４２】
以上により、半導体ストレージデバイスにおいて書き込みが失敗した場合、半導体ストレージデバイスによる通知に応じて、メモリコントローラは半導体ストレージデバイスにライトリトライのための書き込み動作を実行させる。このようなライトリトライにより、書き込まれるデータが断片化し、アクセス性能が低下する可能性がある。また、論理物理アドレス変換テーブルはライトリトライの度に更新されるが、論理物理アドレス変換テーブルが膨大なサイズを有する場合には、更新のための処理に時間を要し、半導体ストレージデバイスへの書き込みのための処理の効率が低下する。
【０１４３】
これに対して、図３４および図３５のフローチャートは、本実施形態のメモリコントローラ４と半導体ストレージデバイス５とによって実行される書き込み処理の例を示す。半導体ストレージデバイス５は、書き込み失敗時に、メモリコントローラ４に失敗を通知することなく、別のブロックにデータを書き込む置き換え機能を有している。
【０１４４】
図３４のフローチャートを参照して、メモリコントローラ４によって実行される書き込み処理の手順の例を説明する。
【０１４５】
メモリコントローラ４は、ある論理アドレスにデータを書き込む場合、そのデータが書き込まれるべき物理アドレスを決定する（ステップＳ３１）。メモリコントローラ４は、半導体ストレージデバイス５に対して、書き込み先物理アドレスに対応するブロックのページにデータを書き込むことを要求する（ステップＳ３２）。そして、メモリコントローラ４は、ステップＳ３１における論理アドレスと物理アドレスとを示すエントリを用いて、論理物理アドレス変換テーブル２１を更新し（ステップＳ３３）、処理を終了する。
【０１４６】
このように、メモリコントローラ４は、半導体ストレージデバイス５に書き込みを要求するだけでよく、書き込みの成功／失敗の通知を要求したり、失敗時にライトリトライのための処理を行ったりする必要がない。
【０１４７】
図３５のフローチャートは、半導体ストレージデバイス５によって実行される書き込み処理の手順の例を示す。
【０１４８】
半導体ストレージデバイス５は、メモリコントローラ４から書き込みが要求されたか否かを判定する（ステップＳ４０１）。メモリコントローラ４による書き込みの要求においては、書き込み先のブロックおよびページを指定するアドレスと書き込むべきデータとがメモリコントローラ４から半導体ストレージデバイス５に送出される。書き込みが要求されていない場合（ステップＳ４０１のＮＯ）、ステップＳ４０１に戻る。
【０１４９】
一方、書き込みが要求された場合（ステップＳ４０１のＹＥＳ）、半導体ストレージデバイス５は、置き換えテーブル３８を用いて、メモリコントローラ４によって書き込み先のアドレスとして指定されたブロックのページが書き込み可能であるか否かを判定する（ステップＳ４０２）。
【０１５０】
書き込み先のブロックのページが書き込み可能である場合（ステップＳ４０２のＹＥＳ）、半導体ストレージデバイス５は、その書き込み先のブロックのページにデータを書き込む（ステップＳ４０３）。より具体的には、半導体ストレージデバイス５は、書き込み先のブロックのページにデータをプログラムするためのプログラム動作を実行し、そしてプログラム動作が成功したか否かを検証するためのベリファイ動作を実行する。プログラムおよびベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびベリファイ動作のループ回数が、設定された最大ループ回数に達するまで繰り返される。
【０１５１】
書き込み動作（すなわち、プログラムおよびベリファイ動作）が完了したならば、半導体ストレージデバイス５は、書き込みが成功したか否かを判定する（ステップＳ４０４）。書き込みが成功した場合（ステップＳ４０４のＹＥＳ）、処理を終了する。
【０１５２】
書き込みが失敗した場合（ステップＳ４０４のＮＯ）、あるいは書き込み先のブロックのページが書き込み不可である場合（ステップＳ４０２のＮＯ）、半導体ストレージデバイス５は、書き込み先の置き換えのための置き換えブロックが割り当て済みであるか否かを判定する（ステップＳ４０５）。置き換えブロックが割り当てられていない場合（ステップＳ４０５のＮＯ）、半導体ストレージデバイス５は、有効データを含まないフリーブロック群から一つのブロックを選択し、イレーズ処理を施して、置き換えブロックとして割り当てる（ステップＳ４０６）。そして、半導体ストレージデバイス５は置き換えテーブル３８を更新する（ステップＳ４０７）。半導体ストレージデバイス５は、書き込みに失敗した物理記憶位置と、その書き込み先から置き換えられた物理記憶位置とを示すエントリを、置き換えテーブル３８に追加する。
【０１５３】
置き換えブロックが割り当てられている場合（ステップＳ４０５のＹＥＳ）、ステップＳ４０６およびステップＳ４０７がスキップされる。
【０１５４】
次いで、半導体ストレージデバイス５は、その置き換えブロック内の置き換え先のページを決定する（ステップＳ４０８）。半導体ストレージデバイス５は、決定された置き換え先のページにデータを書き込む（ステップＳ４０９）。そして、半導体ストレージデバイス５は、書き込みが成功したか否かを判定する（ステップＳ４１０）。書き込みが失敗した場合（ステップＳ４１０のＮＯ）、ステップＳ４０５に戻り、別の置き換え先にデータを書き込むための手順が実行される。
【０１５５】
一方、書き込みが成功した場合（ステップＳ４１０のＹＥＳ）、処理を終了する。
【０１５６】
以上の構成により、第１実施形態によれば、半導体ストレージデバイスへのデータの書き込みに失敗した後の再書き込みを効率化することができる。置き換えコントローラ３４は、メモリコントローラ４によって、メモリセルアレイ３１内の第１ブロックに含まれる第１ページに第１データを書き込むことが要求された場合に、第１ページへの第１データの書き込みが失敗したならば、当該書き込みの失敗をメモリコントローラ４に通知することなく、第１データを、メモリセルアレイ３１内の第２ブロックに書き込む。
【０１５７】
これにより、半導体ストレージデバイス５における書き込み失敗を考慮することなく追記書き込みを要求できるシンプルなインタフェースを、メモリコントローラ４に対して提供することができる。メモリコントローラ４では書き込み失敗に応じたエラー処理が行われず、且つメモリコントローラ４と半導体ストレージデバイス５との間でエラー処理のためのデータ伝送が行われないので、書き込み失敗に対処するための処理を簡素化および高速化することができる。
【０１５８】
また、半導体ストレージデバイス５では、書き込みに失敗したブロックと、その置き換えに用いられたブロックとが、置き換えテーブル３８を用いて管理される。これにより、書き込みに失敗したバッドブロックを、置き換えテーブル３８を用いて認識できるので、メモリコントローラ４ではバッドブロックの管理が不要となる。
【０１５９】
（第２実施形態）
第１実施形態では、メモリコントローラ４と半導体ストレージデバイス５とが、ＮＡＮＤインタフェース１３および入出力バッファ３２を介して制御信号、コマンド、アドレス、およびデータの授受を行う。これに対して、第２実施形態では、ＮＡＮＤインタフェース１３と入出力バッファ３２との間に、書き込みに失敗したブロックを別のブロックに置き換えるための置き換えコントローラ３４を含むモジュールが設けられる。
【０１６０】
第２実施形態に係るメモリシステム１の構成は第１実施形態のメモリシステム１と同様であり、第２実施形態と第１実施形態とでは、半導体ストレージデバイス５において、置き換えコントローラ３４およびＲＡＭ３５を含むモジュールと、メモリセルアレイ３１、入出力バッファ３２、制御回路３３、および周辺回路３６を含むモジュールとが別々に設けられる点のみが異なる。以下、第１実施形態と異なる点のみを説明する。
【０１６１】
図３６に示すように、半導体ストレージデバイス５は、置き換えモジュール５１とメモリモジュール５２とを備える。置き換えモジュール５１は、置き換えコントローラ３４およびＲＡＭ３５を備える。メモリモジュール５２は、メモリセルアレイ３１、入出力バッファ３２、制御回路３３、および周辺回路３６を備える。置き換えモジュール５１とメモリモジュール５２とは、別々のチップに設けられる。また、置き換えモジュール５１が設けられるチップと、メモリモジュール５２が設けられるチップとは、同一パッケージ内（すなわち、一つの半導体ストレージデバイス５内）に含まれる。
【０１６２】
置き換えコントローラ３４は、入出力バッファ３２を介して、制御回路３３による、あるブロックのあるページへのデータの書き込みが失敗したことを検出する。置き換えコントローラ３４は、検出された書き込みの失敗に応じて、置き換え先のブロックを決定し、書き込みが失敗したデータを置き換え先のブロック内のページ（例えば、先頭のページ、書き込みが失敗したページと同一のページ番号のページ、等）に書き込むように、制御回路３３に要求する。より具体的には、置き換えコントローラ３４は、この要求のために、例えば、シリアル入力コマンド“８０ｈ”、プログラム動作が実行されるべき置き換え先のブロックおよびページを指定するアドレス、書き込むべきデータ、プログラム開始コマンド“１０ｈ”を入出力バッファ３２に送出する。制御回路３３は、この要求（コマンドおよびデータ）に応じて、置き換え先のブロック内のページに対するデータの書き込み動作を行う。また、置き換えコントローラ３４は、書き込みが失敗したブロック内のページを示す書き込み失敗位置と、置き換え先のブロックを示す置き換え位置とを含むエントリを置き換えテーブル３８に追加する。
【０１６３】
また、置き換えコントローラ３４は、置き換えテーブル３８を用いて、メモリコントローラ４から半導体ストレージデバイス５に供給される外部制御信号、コマンド、アドレス、およびデータの内、ブロックの置き換えに関わる外部制御信号、コマンド、アドレス、およびデータを検出する。より具体的には、置き換えコントローラ３４は、メモリコントローラ４による、例えば、書き込みが失敗したページより後のページへの書き込み要求や、書き込みに失敗したページ以降のページからの読み出し要求に関わる外部制御信号、コマンド、アドレス、およびデータを検出する。
【０１６４】
置き換えコントローラ３４は、書き込みが失敗したページより後のページへの書き込み要求を、対応する置き換えブロック内のページへの書き込み要求に変換し、変換された書き込み要求に対応する外部制御信号、コマンド、アドレス、およびデータを入出力バッファ３２に送出する。また、置き換えコントローラ３４は、書き込みに失敗したページ以降のページからの読み出し要求を、対応する置き換えブロック内のページからの読み出し要求に変換し、変換された読み出し要求に対応する外部制御信号、コマンド、アドレス、およびデータを入出力バッファ３２に送出する。なお、置き換えコントローラ３４は、ブロックの置き換えに関わらない外部制御信号、コマンド、アドレス、およびデータをそのまま入出力バッファ３２に送出する。
【０１６５】
制御回路３３は、第１実施形態において上述した動作と同様に、入出力バッファ３２を介して供給される各種の外部制御信号と、コマンド、アドレスとに基づき、データの書き込み動作、消去動作、および読み出し動作を制御する。
【０１６６】
なお、置き換えモジュール５１が設けられるチップと、メモリモジュール５２が設けられるチップとは、別々のパッケージ内に含まれていてもよい。例えば、メモリモジュール５２のチップが半導体ストレージデバイス５のパッケージ内に含まれる一方、置き換えモジュール５１のチップがこれとは別のパッケージ内に含まれていてもよい。
【０１６７】
以上説明したように、第１および第２実施形態によれば、半導体ストレージデバイスへのデータの書き込みに失敗した後の再書き込みを効率化することができる。メモリシステム１は、半導体ストレージデバイス５と、当該半導体ストレージデバイス５と電気的に接続されるメモリコントローラ４から構成される。半導体ストレージデバイス５は、複数のブロックを含むメモリセルアレイ３１と置き換えコントローラ３４とを備える。置き換えコントローラ３４は、メモリコントローラ４によって、メモリセルアレイ３１内の第１ブロックに含まれる第１ページに第１データを書き込むことが要求された場合に、第１ページへの第１データの書き込みが失敗したならば、当該書き込みの失敗をメモリコントローラ４に通知することなく、第１データを、メモリセルアレイ３１内の第２ブロックに書き込む。
【０１６８】
このように、メモリコントローラ４との間で何等処理を行うことなく、書き込みに失敗した第１データを別の第２ブロックに書き込むことができるので、書き込みに失敗した後の再書き込みを効率化することができる。
【０１６９】
なお、第１および第２実施形態では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例示した。しかし、これら実施形態の機能は、例えば、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような他の様々な不揮発性メモリにも適用できる。
【０１７０】
また、第１および第２実施形態に記載された様々な機能の各々は、回路（処理回路）によって実現されてもよい。処理回路の例には、中央処理装置（ＣＰＵ）のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム（命令群）を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。これら実施形態に記載されたＣＰＵ以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
【０１７１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１７２】
１…メモリシステム、２…ホスト、４…メモリコントローラ、５…半導体ストレージデバイス、６…ＤＲＡＭ、１０…バス、１１…ホスト  Ｉ／Ｆ、１２…ＣＰＵ、１３…ＮＡＮＤ  Ｉ／Ｆ、１４…ＤＲＡＭ  Ｉ／Ｆ、１２１…リード制御部、１２２…ライト制御部、１２３…ＧＣ制御部、２１…論理物理アドレス変換テーブル、３０…バス、３１…メモリセルアレイ、３２…入出力バッファ、３３…制御回路、３４…置き換えコントローラ、３５…ＲＡＭ、３６…周辺回路、３８…置き換えテーブル、３９…フリーブロック情報。
【図１】
2019215777.tif 000003
【図２】
2019215777.tif 000004
【図３】
2019215777.tif 000005
【図４】
2019215777.tif 000006
【図５】
2019215777.tif 000007
【図６】
2019215777.tif 000008
【図７】
2019215777.tif 000009
【図８】
2019215777.tif 000010
【図９】
2019215777.tif 000011
【図１０】
2019215777.tif 000012
【図１１】
2019215777.tif 000013
【図１２】
2019215777.tif 000014
【図１３】
2019215777.tif 000015
【図１４】
2019215777.tif 000016
【図１５】
2019215777.tif 000017
【図１６】
2019215777.tif 000018
【図１７】
2019215777.tif 000019
【図１８】
2019215777.tif 000020
【図１９】
2019215777.tif 000021
【図２０】
2019215777.tif 000022
【図２１】
2019215777.tif 000023
【図２２】
2019215777.tif 000024
【図２３】
2019215777.tif 000025
【図２４】
2019215777.tif 000026
【図２５】
2019215777.tif 000027
【図２６】
2019215777.tif 000028
【図２７】
2019215777.tif 000029
【図２８】
2019215777.tif 000030
【図２９】
2019215777.tif 000031
【図３０】
2019215777.tif 000032
【図３１】
2019215777.tif 000033
【図３２】
2019215777.tif 000034
【図３３】
2019215777.tif 000035
【図３４】
2019215777.tif 000036
【図３５】
2019215777.tif 000037
【図３６】
2019215777.tif 000038