(57)【要約】  記憶装置がデータの書込みを高速に行う。  記憶装置は、データ領域および制御部を具備する。このデータ領域において、ライトアドレスにより書込み位置が指定される。また、制御部は、ライトアドレスへのデータの書込みが指示されるとライトアドレスへのデータの書込みを行い、そのデータの書込みに失敗した場合には書込みを行ったライトアドレスと異なるアドレスを代替ライトアドレスとして生成して、その代替ライトアドレスへのデータの書込みを行う。
2015182439.tif 000002
【特許請求の範囲】
【請求項１】
ライトアドレスにより書込み位置が指定されるデータ領域と、
前記ライトアドレスにより前記書込み位置が指定されると当該書込み位置への前記データの書込みを行い、前記データの書込みに失敗した場合には前記指定されたライトアドレスと異なるライトアドレスを代替ライトアドレスとして生成して当該代替ライトアドレスにより指定した書込み位置への前記データの書込みを行う制御部と
を具備する記憶装置。
【請求項２】
前記データ領域は、
ライトコマンドによって指定された前記ライトアドレスである通常ライトアドレスにより前記書込み位置が指定される通常データ領域と、
前記通常ライトアドレスに対応する前記代替ライトアドレスにより前記書込み位置が指定される代替データ領域と
を備え、
前記制御部は、前記データの書込みに失敗した場合には前記通常ライトアドレスに対応する前記代替ライトアドレスを生成する
請求項１記載の記憶装置。
【請求項３】
前記代替ライトアドレスに対して前記データの書込みを行ったか否かを示す使用フラグを前記代替ライトアドレスごとに保持する保持部をさらに具備し、
前記制御部は、前記データの書込みに失敗した場合には前記書込みを行っていないことを示す前記使用フラグに係る前記代替ライトアドレスを生成する
請求項１記載の記憶装置。
【請求項４】
ライトアドレスによりデータの書込み位置を指定する制御装置と、
前記ライトアドレスにより前記書込み位置が指定されるデータ領域と、
前記ライトアドレスにより前記書込み位置が指定されると当該書込み位置への前記データの書込みを行い、前記データの書込みに失敗した場合には前記指定されたライトアドレスと異なるライトアドレスを代替ライトアドレスとして生成して当該代替ライトアドレスにより指定した書込み位置への前記データの書込みを行う制御部と
を具備する記憶システム。
【請求項５】
前記制御装置は、
論理アドレスと物理アドレスとを対応付けて保持するアドレス変換テーブルと、
前記論理アドレスに対応する前記物理アドレスを前記ライトアドレスとして取得して当該ライトアドレスにより前記書込み位置を指定し、前記代替ライトアドレスにより指定された前記書込み位置への前記データの書込みが成功した場合には前記代替ライトアドレスを前記論理アドレスに対応付けるアクセス制御部と
を具備する請求項４記載の記憶システム。
【請求項６】
前記データ領域は、
ライトコマンドによって指定された前記ライトアドレスである通常ライトアドレスにより書込み位置が指定される通常データ領域と、
前記通常ライトアドレスに対応する前記代替ライトアドレスにより前記書込み位置が指定される代替データ領域と
を備え、
前記制御部は、前記データの書込みに失敗した場合には前記通常ライトアドレスに対応する前記代替ライトアドレスを生成する
請求項５記載の記憶システム。
【請求項７】
前記制御部は、前記データの書込みに成功したか否かを示すエラーフラグと前記通常ライトアドレスおよび前記代替ライトアドレスのいずれを指定して前記データの書込みを行ったかを示す書込み先フラグとを前記アクセス制御部に供給し、
前記アクセス制御部は、前記データの書込みに成功した旨を示す前記エラーフラグと前記代替ライトアドレスを指定して前記データの書込みを行った旨を示す前記書込み先フラグとが供給された場合には前記通常ライトアドレスに対応する前記代替ライトアドレスを生成して前記論理アドレスに対応付ける
請求項６記載の記憶システム。
【請求項８】
前記制御部は、前記データの書込みに成功したか否かを示すエラーフラグと前記生成した代替ライトアドレスとを前記アクセス制御部に供給し、
前記アクセス制御部は、前記データの書込みに成功した旨を示す前記エラーフラグと前記代替ライトアドレスとが供給された場合には前記供給された代替ライトアドレスを前記論理アドレスに対応付ける
請求項５記載の記憶システム。
【請求項９】
前記ライトアドレスにより書込み位置が指定されると当該書込み位置への前記データの書込みを行う書込み手順と、
前記データの書込みに失敗した場合には前記指定されたライトアドレスと異なるライトアドレスを代替ライトアドレスとして生成して当該代替ライトアドレスにより指定した書込み位置への前記データの書込みを行う再書込み手順と
を具備する記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶装置、記憶システムおよび記憶装置の制御方法に関する。詳しくは、データの書込みを行う記憶装置、記憶システムおよび記憶装置の制御方法に関する。
【背景技術】
【０００２】
従来より、メモリなどの記憶装置においては、ライトデータの書込みの後に、その書込みが成功したか否かを判定するためにベリファイが行われている。ここで、ベリファイとは、ライトデータを記憶装置が保持しておき、ライトアドレスへのライトデータの書込みの後に、そのライトアドレスからデータを読み出し、読み出したデータと保持しておいたライトデータとを記憶装置が照合する処理である。これらのデータが一致しない場合には、ライトエラーがメモリコントローラに通知される。【０００３】
そして、ライトエラーが生じた場合には所定の例外処理が行われる。例えば、ライトコマンド送信後にライトエラーを受け取ったメモリコントローラが、新たなライトアドレスを指定したライトコマンドを再送信して、そのデータの再書込みをメモリに要求するメモリシステムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−７６６１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の従来技術では、データの書込みを高速に行うことが困難である。上述のシステムにおいてメモリは、最初のライトアドレスへの書込みに失敗すると、ライトエラーをメモリコントローラに送信する必要がある。また、メモリコントローラは、ライトコマンド送信後にライトエラーが通知されると、新たなライトアドレスを指定したライトコマンドをメモリに再送信しなければならない。このため、データの再書込みの他、ライトエラーおよびライトコマンドのそれぞれの転送および処理に要する遅延時間が余分に生じて、その分、書込みが完了するまでの時間が長くなってしまうという問題がある。【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、記憶装置がデータの書込みを高速に行うことを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、ライトアドレスにより書込み位置が指定されるデータ領域と、上記ライトアドレスにより上記書込み位置が指定されると当該書込み位置への上記データの書込みを行い、上記データの書込みに失敗した場合には上記指定されたライトアドレスと異なるライトアドレスを代替ライトアドレスとして生成して当該代替ライトアドレスにより指定した書込み位置への上記データの書込みを行う制御部とを具備する記憶装置、および、その制御方法である。これにより、データの書込みに失敗した場合には、代替ライトアドレスが生成されて、その代替ライトアドレスにより指定された書込み位置へのデータの書込みが行われるという作用をもたらす。【０００８】
また、この第１の側面において、上記データ領域は、ライトコマンドによって指定された上記ライトアドレスである通常ライトアドレスにより上記書込み位置が指定される通常データ領域と、上記通常ライトアドレスに対応する上記代替ライトアドレスにより上記書込み位置が指定される代替データ領域とを備え、上記制御部は、上記データの書込みに失敗した場合には上記通常ライトアドレスに対応する上記代替ライトアドレスを生成してもよい。これにより、データの書込みに失敗した場合には、通常ライトアドレスに対応する代替ライトアドレスが生成されるという作用をもたらす。【０００９】
また、この第１の側面において、上記代替ライトアドレスに対して上記データの書込みを行ったか否かを示す使用フラグを上記代替ライトアドレスごとに保持する保持部をさらに具備し、上記制御部は、上記データの書込みに失敗した場合には上記書込みを行っていないことを示す上記使用フラグに係る上記代替ライトアドレスを生成してもよい。これにより、データの書込みに失敗した場合には書込みを行っていないことを示す使用フラグに係る上記代替ライトアドレスが生成されるという作用をもたらす。【００１０】
また、本技術の第２の側面は、ライトアドレスによりデータの書込み位置を指定する制御装置と、上記ライトアドレスにより上記書込み位置が指定されるデータ領域と、上記ライトアドレスにより上記書込み位置が指定されると当該書込み位置への上記データの書込みを行い、上記データの書込みに失敗した場合には上記指定されたライトアドレスと異なるライトアドレスを代替ライトアドレスとして生成して当該代替ライトアドレスにより指定した書込み位置への上記データの書込みを行う制御部とを具備する記憶システムである。これにより、データの書込みに失敗した場合には、代替ライトアドレスが生成されて、その代替ライトアドレスにより指定された書込み位置へのデータの書込みが行われるという作用をもたらす。【００１１】
また、この第２の側面において、上記制御装置は、論理アドレスと物理アドレスとを対応付けて保持するアドレス変換テーブルと、上記論理アドレスに対応する上記物理アドレスを上記ライトアドレスとして取得して当該ライトアドレスにより上記書込み位置を指定し、上記代替ライトアドレスにより指定された上記書込み位置への上記データの書込みが成功した場合には上記代替ライトアドレスを上記論理アドレスに対応付けるアクセス制御部とを具備してもよい。これにより、代替ライトアドレスに対するデータの書込みが成功した場合には代替ライトアドレスが論理アドレスに対応付けられるという作用をもたらす。【００１２】
また、この第２の側面において、上記データ領域は、ライトコマンドによって指定された上記ライトアドレスである通常ライトアドレスにより書込み位置が指定される通常データ領域と、上記通常ライトアドレスに対応する上記代替ライトアドレスにより上記書込み位置が指定される代替データ領域とを備え、上記制御部は、上記データの書込みに失敗した場合には上記書込みを行った上記通常ライトアドレスに対応する上記代替ライトアドレスを生成してもよい。これにより、データの書込みに失敗した場合には書込みを行った通常ライトアドレスに対応する代替ライトアドレスが生成されるという作用をもたらす。【００１３】
また、この第２の側面において、上記制御部は、上記データの書込みに成功したか否かを示すエラーフラグと上記通常ライトアドレスおよび上記代替ライトアドレスのいずれを指定して上記データの書込みを行ったかを示す書込み先フラグとを上記アクセス制御部に供給し、上記アクセス制御部は、上記データの書込みに成功した旨を示す上記エラーフラグと上記代替ライトアドレスを指定して上記データの書込みを行った旨を示す上記書込み先フラグとが供給された場合には上記通常ライトアドレスに対応する上記代替ライトアドレスを生成して上記論理アドレスに対応付けてもよい。これにより、データの書込みに成功した旨を示すエラーフラグと代替ライトアドレスにデータの書込みを行った旨を示す書込み先フラグとが供給された場合には通常ライトアドレスに対応する上記代替ライトアドレスが生成されるという作用をもたらす。【００１４】
また、この第２の側面において、上記制御部は、上記データの書込みに成功したか否かを示すエラーフラグと上記生成した代替ライトアドレスとを上記アクセス制御部に供給し、上記アクセス制御部は、上記データの書込みに成功した旨を示す上記エラーフラグと上記代替ライトアドレスとが供給された場合には上記供給された代替ライトアドレスを上記論理アドレスに対応付けてもよい。これにより、データの書込みに成功した旨を示すエラーフラグと代替ライトアドレスとが供給された場合には供給された代替ライトアドレスが上記論理アドレスに対応付けられるという作用をもたらす。
【発明の効果】
【００１５】
本技術によれば、記憶装置がデータの書込みを高速に行うことができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１６】
【図１】第１の実施の形態におけるメモリシステムの一構成例を示す全体図である。
【図２】第１の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。
【図３】第１の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
【図４】第１の実施の形態におけるアドレス変換テーブルの一例を示す図である。
【図５】第１の実施の形態における不揮発性メモリの一構成例を示すブロック図である。
【図６】第１の実施の形態におけるメモリセルアレイの一構成例を示す図である。
【図７】第１の実施の形態における不揮発性メモリが生成するステータスの一例を示す図である。
【図８】第１の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。
【図９】第１の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。
【図１０】第１の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。
【図１１】第１の実施の形態における不揮発性メモリの動作の一例を示すフローチャートである。
【図１２】第１の実施の形態におけるメモリ側ライト処理の一例を示すフローチャートである。
【図１３】第１の実施の形態の変形例におけるステータスの一例を示す図である。
【図１４】第１の実施の形態の変形例におけるコントローラ側ライト処理の一例を示すフローチャートである。
【図１５】第１の実施の形態の変形例におけるメモリ側ライト処理の一例を示すフローチャートである。
【図１６】第２の実施の形態におけるメモリセルアレイの一構成例を示す図である。
【図１７】第２の実施の形態における代替ライト管理テーブルの一例を示す図である。
【図１８】第２の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。
【図１９】第２の実施の形態におけるメモリ側ライト処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（対応する代替ライトアドレスを生成してデータの書込みを行う例）
２．第２の実施の形態（未使用の代替ライトアドレスのいずれかを生成してデータの書込みを行う例）
【００１８】
＜１．第１の実施の形態＞
［メモリシステムの構成例］
図１は、第１の実施の形態におけるメモリシステムの一構成例を示す全体図である。このメモリシステムは、ホストコンピュータ１００およびストレージ２００を備える。ストレージ２００は、メモリコントローラ３００および不揮発性メモリ４００を備える。なお、このメモリシステムは、特許請求の範囲に記載の記憶システムの一例である。
【００１９】
ホストコンピュータ１００は、メモリシステム全体を制御するものである。具体的には、ホストコンピュータ１００は、メモリコントローラ３００に対し、論理アドレスをアクセス先として指定して、ライトデータの書込みやリードデータの読出しを指示する。
【００２０】
ここで、論理アドレスは、ホストコンピュータ１００やメモリコントローラ３００により定義されたアドレス空間において、ホストコンピュータ１００がストレージ２００にアクセスする際のアクセス単位ごとに割り振られたアドレスである。
【００２１】
メモリコントローラ３００は、不揮発性メモリ４００を制御するものである。このメモリコントローラ３００は、ホストコンピュータ１００によりライトデータの書込みが指示されると、指定された論理アドレスを物理アドレスに変換する。そして、メモリコントローラ３００は、変換した物理アドレスをアクセス先として指定したライトコマンドを発行して、ライトデータとともに不揮発性メモリ４００に信号線３０９を介して供給する。
【００２２】
ここで、物理アドレスは、メモリコントローラ３００が不揮発性メモリ４００にアクセスする際のアクセス単位ごとに不揮発性メモリ４００において割り振られたアドレスである。不揮発性メモリ４００の容量は、論理アドレスのアドレス空間の容量よりも大きいことが望ましい。物理アドレスに対する書込みが失敗した際に代替して論理アドレスに割り当てる分の物理アドレスを確保しておくためである。
【００２３】
また、メモリコントローラ３００は、ホストコンピュータ１００によりリードデータの読出しが指示されると、指定された論理アドレスを物理アドレスに変換する。そして、メモリコントローラ３００は、変換した物理アドレスをアクセス先として指定したリードコマンドを発行して不揮発性メモリ４００に信号線３０９を介して供給する。メモリコントローラ３００は、リードデータを不揮発性メモリ４００から受け取り、ホストコンピュータ１００に転送する。
【００２４】
また、メモリコントローラ３００は、不揮発性メモリ４００からステータスを受け取る。ここで、ステータスは、コマンドの実行結果やメモリコントローラ３００等の状況を通知する情報である。
【００２５】
なお、メモリコントローラ３００は、特許請求の範囲に記載の制御装置の一例である。
【００２６】
不揮発性メモリ４００は、メモリコントローラ３００の制御に従って、データを記憶するものである。この不揮発性メモリ４００は、メモリコントローラ３００からライトコマンドおよびライトデータを受け取ると、そのライトコマンドにより指定された物理アドレスにライトデータを書き込む。また、不揮発性メモリ４００は、メモリコントローラ３００からリードコマンドを受け取ると、そのリードコマンドにより指定された物理アドレスからデータを読み出してメモリコントローラ３００に供給する。また、不揮発性メモリ４００は、ステータスを生成してメモリコントローラ３００に供給する。
【００２７】
なお、不揮発性メモリ４００がデータを記憶する構成としているが、ＨＤＤ（Hard Disk Drive）など、不揮発性メモリ４００以外の記憶装置がデータを記憶してもよい。また、不揮発性メモリ４００は、特許請求の範囲に記載の記憶装置の一例である。
【００２８】
［メモリコントローラの構成例］
図２は、第１の実施の形態におけるメモリコントローラ３００の一構成例を示すブロック図である。このメモリコントローラ３００は、ホストインターフェース３０１、ＲＡＭ（Random Access Memory）３０２およびＣＰＵ（Central Processing Unit）３０３を備える。また、メモリコントローラ３００は、ＥＣＣ処理部３０４、ＲＯＭ（Read Only Memory）３０５、バス３０６およびメモリインターフェース３０７を備える。
【００２９】
ホストインターフェース３０１は、メモリコントローラ３００とホストコンピュータ１００とがデータやコマンドを相互に交換するためのインターフェースである。ＲＡＭ３０２は、ＣＰＵ３０３が実行する処理において必要となるデータを一時的に保持するものである。ＣＰＵ３０３は、メモリコントローラ３００全体を制御するものである。
【００３０】
ＥＣＣ処理部３０４は、データをＥＣＣ（Error detection and Correction Code）に符号化し、ＥＣＣに基づいてデータにおける誤りの検出および訂正を行うものである。ＥＣＣ処理部３０４において、例えば、ＢＣＨ（Bose-Chaudhuri-Hocquenghem）符号や、ＲＳ（Reed-Solomon）符号がＥＣＣとして用いられる。また、ＥＣＣ処理部３０４は、誤りの検出および訂正に失敗すると、リードエラーをステータスに記載してホストコンピュータ１００に供給する。
【００３１】
ＲＯＭ３０５は、ＣＰＵ３０３が実行するプログラム等を記憶するものである。バス３０６は、ホストインターフェース３０１、ＲＡＭ３０２、ＣＰＵ３０３、ＥＣＣ処理部３０４、ＲＯＭ３０５およびメモリインターフェース３０７が相互にデータを交換するための共通の経路である。メモリインターフェース３０７は、メモリコントローラ３００と不揮発性メモリ４００とがデータやコマンドを相互に交換するためのインターフェースである。
【００３２】
［メモリコントローラの構成例］
図３は、第１の実施の形態におけるメモリコントローラ３００の機能構成例を示すブロック図である。このメモリコントローラ３００は、アクセス制御部３１１、アドレス変換テーブル３１２およびＥＣＣ処理部３０４を備える。
【００３３】
図３におけるアクセス制御部３１１の機能は、図２におけるホストインターフェース３０１、ＲＡＭ３０２、ＣＰＵ３０３、ＲＯＭ３０５およびメモリインターフェース３０７などにより実現される。また、図３におけるアドレス変換テーブル３１２は、例えば、図２におけるＲＡＭ３０２に保持される。
【００３４】
アクセス制御部３１１は、不揮発性メモリ４００に対してデータの書込みを指示するライト処理や、データの読出しを指示するリード処理を行うものである。このアクセス制御部３１１は、ライトデータの書込みがホストコンピュータ１００により指示されると、アドレス変換テーブル３１２に基づいて指定された論理アドレスを物理アドレスに変換する。そして、アクセス制御部３１１は、変換した物理アドレスを通常ライトアドレスとして指定したライトコマンドを発行して不揮発性メモリ４００に供給する。
【００３５】
また、通常ライトアドレスと異なる代替ライトアドレスへのデータの書込みを行った旨を通知するステータスが不揮発性メモリ４００から供給されると、アクセス制御部３１１は、そのステータスに基づいてアドレス変換テーブル３１２を更新する。更新内容の詳細については後述する。
【００３６】
また、アクセス制御部３１１は、リードデータの読出しがホストコンピュータ１００により指示されると、アドレス変換テーブル３１２に基づいて指定された論理アドレスを物理アドレスに変換する。そして、アクセス制御部３１１は、変換した物理アドレスをリードアドレスとして指定したリードコマンドを発行して、不揮発性メモリ４００に供給する。
【００３７】
アドレス変換テーブル３１２は、論理アドレスと物理アドレスとを対応付けたテーブルである。このアドレス変換テーブル３１２には、例えば、論理アドレスごとに、その論理アドレスに対応付けられた物理アドレスの有無が記録される。また、アドレス変換テーブル３１２には、物理アドレスごとに使用状況が記録される。物理アドレスの使用状況としては、その物理アドレスが論理アドレスに対応付けられているか否かを示す情報などが記録される。
【００３８】
［アドレス変換テーブルの構成例］
図４は、第１の実施の形態におけるアドレス変換テーブル３１２の一例を示す図である。このアドレス変換テーブル３１２には、例えば、論理アドレスごとに、物理アドレスと、割当ての有無を示す情報とが保持される。割当ての有無は、論理アドレスに物理アドレスが割り当てられているか否かを示すものである。初期状態は、割当て無しの状態である。データの書込み先としてホストコンピュータ１００により指定された論理アドレスに物理アドレスが割り当てられていない場合には、その論理アドレスに物理アドレスが新たに割り当てられる。
【００３９】
ここで、メモリコントローラ３００は、新たに割り当てる物理アドレスを選択する際に、必要に応じてウェアレベリングを行う。ウェアレベリングとは、不揮発性メモリ４００におけるメモリセルの寿命の消耗を平準化するための処理である。ウェアレベリングを行う際には、例えば、メモリコントローラ３００は、アドレスのそれぞれのアクセス頻度を記録し、アクセス頻度の少ないアドレスを優先して選択する。
【００４０】
また、アドレス変換テーブル３１２には、物理アドレスごとに、その物理アドレスのステータスを示す情報が保持される。このステータスは、物理アドレスの使用状況などを示すものであり、例えば、「使用中」、「空き」および「不良」のいずれかを示す。「使用中」は、そのステータスの物理アドレスにデータの書込みが行われることを示す。「空き」は、そのステータスの物理アドレスにデータの書込みが行われていないことを示す。「不良」は、そのステータスの物理アドレスが、寿命が尽きたなどの原因によりデータを書き込むことのできないアドレスであることを示す。
【００４１】
また、代替ライトアドレスへのデータの書込みに成功した旨が不揮発性メモリ４００から通知された場合にメモリコントローラ３００は、書込み先として指定した通常ライトアドレスのステータスを「不良」に更新する。また、メモリコントローラ３００は、代替ライトアドレスを生成し、書込み先として指定された論理アドレスに対し、通常ライトアドレスの代わりに代替ライトアドレスを対応付ける。
【００４２】
一方、データの書込みに失敗した旨が不揮発性メモリ４００から通知された場合にメモリコントローラ３００は、代替ライトアドレスを生成し、書込み先として指定した通常ライトアドレスおよび代替ライトアドレスのステータスを「不良」に更新する。
【００４３】
［不揮発性メモリの構成例］
図５は、第１の実施の形態における不揮発性メモリ４００の一構成例を示すブロック図である。この不揮発性メモリ４００は、データバッファ４１０、メモリセルアレイ４２０、ドライバ４３０、アドレスデコーダ４４０、バス４５０、制御インターフェース４６０、および、メモリ制御部４７０を備える。
【００４４】
データバッファ４１０は、メモリ制御部４７０の制御に従って、ライトデータやリードデータをアクセス単位で保持するものである。メモリセルアレイ４２０は、マトリックス
状に配列された複数のメモリセルを備える。各々のメモリセルとして、不揮発性の記憶素
子が用いられる。具体的には、ＮＡＮＤ型やＮＯＲ型のフラッシュメモリ、ＲｅＲＡＭ（Resistive RAM）、ＰＣＲＡＭ（Phase-Change RAM）、または、ＭＲＡＭ（Magnetoresistive RAM）などが記憶素子として用いられる。
【００４５】
ドライバ４３０は、アドレスデコーダ４４０により選択されたメモリセルに対してデータの書込み、または、データの読出しを行うものである。アドレスデコーダ４４０は、コマンドにより指定されたアドレスを解析して、そのアドレスに対応するメモリセルを選択するものである。バス４５０は、データバッファ４１０、メモリセルアレイ４２０、アドレスデコーダ４４０、メモリ制御部４７０および制御インターフェース４６０が相互にデータを交換するための共通の経路である。制御インターフェース４６０は、メモリコントローラ３００と不揮発性メモリ４００とがデータやコマンドを相互に交換するためのインターフェースである。
【００４６】
メモリ制御部４７０は、ドライバ４３０およびアドレスデコーダ４４０を制御して、データの書込み、または、読出しを行わせるものである。メモリ制御部４７０は、通常ライトアドレスを指定したライトコマンドを受け取ると、ライトデータをデータバッファ４１０に保持させる。また、メモリ制御部４７０は、ライトコマンドにより指定された通常ライトアドレスをアドレスデコーダ４４０に供給する。アドレスデコーダ４４０によりメモリセルが選択されると、メモリ制御部４７０は、ドライバ４３０を制御して、そのメモリセルにデータを書き込ませる。
【００４７】
そして、メモリ制御部４７０は、ドライバ４３０を制御して、データが書き込まれたメモリセルからデータを読み出させる。メモリ制御部４７０は、読み出されたデータと、データバッファ４１０に保持されたライトデータとを照合（ベリファイ）する。照合したデータが一致すれば、メモリ制御部４７０は、通常ライトアドレスへの書込みに成功した旨を通知するステータスを生成し、制御インターフェース４６０を介してメモリコントローラ３００に供給する。
【００４８】
一方、不一致であれば、メモリ制御部４７０は、データの書込みに失敗したと判断し、代替ライトアドレスを生成する。そして、メモリ制御部４７０は、ドライバ４３０およびアドレスデコーダ４４０を制御して、生成した代替ライトアドレスへのライトデータの再度の書込みを行わせる。そして、メモリ制御部４７０は、ドライバ４３０を制御して、代替ライトアドレスに対応するメモリセルからデータを読み出させ、再度のベリファイを行う。このベリファイの結果に基づいてメモリ制御部４７０はステータスを生成し、制御インターフェース４６０を介してメモリコントローラ３００に供給する。
【００４９】
また、メモリ制御部４７０は、リードコマンドを受け取ると、アドレスデコーダ４４０およびドライバ４３０を制御してメモリコントローラ３００へリードデータを出力させる。
【００５０】
なお、メモリ制御部４７０は、特許請求の範囲に記載の制御部の一例である。
【００５１】
前述したように不揮発性メモリ４００は、通常ライトアドレスへの書込みに失敗した際に、代替ライトアドレスを生成して、ライトエラーを通知せずに代替ライトアドレスへの書込みを行う。これにより、不揮発性メモリ４００は、通常ライトアドレスの書込みに失敗した旨を通知するステータスを送信する必要がなくなる。また、メモリコントローラ３００は、通常ライトアドレスを指定したライトコマンドの発行後に、代替ライトアドレスを指定したライトコマンドを発行する必要がなくなる。このため、これらのステータスおよびライトコマンドの送受信および処理に要する時間の分、データの書込み時間を短縮することができる。
【００５２】
［メモリセルアレイの構成例］
図６は、第１の実施の形態におけるメモリセルアレイ４２０の一構成例を示す図である。このメモリセルアレイ４２０には、通常データ領域４２１および代替データ領域４２２とが設けられる。
【００５３】
通常データ領域４２１は、通常ライトアドレスにより書込み位置が指定されるデータ領域である。この通常データ領域４２１には、アドレスが各々に割り当てられた複数のメモリセルが設けられ、通常ライトアドレスにより指定された書込み位置のメモリセルにデータが格納される。また、代替データ領域４２２は、通常ライトアドレスに対応する代替ライトアドレスにより書込み位置が指定されるデータ領域である。この代替データ領域４２２には、アドレスが各々に割り当てられた複数のメモリセルが設けられ、通常ライトアドレスに対応する代替ライトアドレスにより指定された書込み位置のメモリセルにデータが格納される。また、代替データ領域４２２において、代替ライトアドレスごとに、使用フラグが格納される。ここで、使用フラグは、代替ライトアドレスに対してデータの書込みが行われたか否かを示すフラグである。
【００５４】
なお、通常データ領域４２１および代替データ領域４２２からなる領域は、特許請求の範囲に記載のデータ領域の一例である。
【００５５】
図６における矢印は、通常ライトアドレスと代替ライトアドレスとの対応関係を示す。例えば、１６進数表記で「００００」乃至「０００Ｆ」の通常ライトアドレスに１６進数表記で「１０００」の代替ライトアドレスが対応付けられる。以下、アドレスは、特に言及のない限り、１６進数で表されるものとする。
【００５６】
不揮発性メモリ４００は、通常ライトアドレスへのデータの書込みに失敗すると、所定の演算により、その通常ライトアドレスに対応する代替ライトアドレスを生成する。例えば、１６進数表記された通常ライトアドレスの最上位の桁を「１」にし、最下位の桁を「０」にする演算が行われる。この演算により、例えば、「０００５」の通常ライトアドレスに対応する代替アドレスとして「１０００」が生成され、「００１２」の通常ライトアドレスに対応する代替ライトアドレスとして「１０１０」が生成される。
【００５７】
図７は、第１の実施の形態における不揮発性メモリ４００が生成するステータスの一例を示す図である。不揮発性メモリ４００は、エラーフラグおよび書込み先フラグを含むステータスを生成してメモリコントローラ３００に供給する。
【００５８】
エラーフラグは、データの書込みに成功したか否かを示す情報である。このエラーフラグには、例えば、書込みが成功した場合に「０」の値が設定され、失敗した場合に「１」の値が設定される。また、書込み先フラグは、通常ライトアドレスおよび代替ライトアドレスのいずれを指定してデータの書込みを行ったかを示す情報である。この書込み先フラグには、例えば、通常ライトアドレスを指定してデータの書込みに成功した場合に「０」の値が設定され、代替ライトアドレスを指定してデータの書込みが行われた場合に、その成否にかかわらず「１」の値が設定される。
【００５９】
［メモリ制御部の構成例］
図８は、第１の実施の形態におけるメモリ制御部４７０の一構成例を示すブロック図である。このメモリ制御部４７０は、アドレスバッファ４７１、コマンドバッファ４７２、コマンドデコーダ４７３およびライト処理部４７４を備える。なお、同図において、メモリ制御部４７０がリード処理を行う構成は、省略されている。
【００６０】
アドレスバッファ４７１は、コマンドにより指定されたアドレスを保持するものである。通常ライトアドレスや代替ライトアドレスなどがアドレスバッファ４７１に保持される。コマンドバッファ４７２は、メモリコントローラ３００からのコマンドを保持するものである。
【００６１】
コマンドデコーダ４７３は、メモリコントローラ３００からのコマンドをデコードして、ドライバ４３０やアドレスデコーダ４４０を制御する制御信号を生成するものである。コマンドデコーダ４７３は、生成した制御信号をライト処理部４７４に供給する。
【００６２】
ライト処理部４７４は、ドライバ４３０やアドレスデコーダ４４０を制御して通常ライトアドレスまたは代替ライトアドレスにより指定された書込み位置へのデータの書込みを行わせるものである。このライト処理部４７４は、通常ライトアドレスにより指定した書込み位置へのデータの書込みを行わせた後にベリファイを行って、その書込みが成功したか否かを判断する。ライト処理部４７４は、データの書込みに成功した場合に、通常ライトアドレスにデータが書き込まれた旨を通知するステータスを生成してメモリコントローラ３００に供給する。
【００６３】
一方、データの書込みに失敗した場合にライト処理部４７４は、書込みを行った通常ライトアドレスに対応する代替ライトアドレスを生成する。そして、ライト処理部４７４は、ドライバ４３０やアドレスデコーダ４４０を制御して代替ライトアドレスにより指定した書込み位置へのデータの書込みを行わせる。そして、ライト処理部４７４は、ベリファイを行って、その書込みが成功したか否かを判断する。ライト処理部４７４は、データの書込みに成功した場合に、代替ライトアドレスにデータが書き込まれた旨を通知するステータスを生成してメモリコントローラ３００に供給する。一方、データの書込みに失敗した場合にライト処理部４７４は、データの書込みに失敗した旨を通知するステータスを生成してメモリコントローラ３００に供給する。
【００６４】
［メモリコントローラの動作例］
図９は、第１の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。この動作は、例えば、ストレージ２００に電源が投入されたときに開始する。
【００６５】
メモリコントローラ３００は、ホストコンピュータ１００によりデータの書込みが指示されたか否かを判断する（ステップＳ９０１）。データの書込みが指示された場合には（ステップＳ９０１：Ｙｅｓ）、メモリコントローラ３００は、コントローラ側ライト処理を実行する（ステップＳ９１０）。データの書込みが指示されていない場合（ステップＳ９０１：Ｎｏ）またはステップＳ９１０の後、メモリコントローラ３００は、ホストコンピュータ１００によりデータの読出しが指示されたか否かを判断する（ステップＳ９０２）。
【００６６】
データの読出しが指示された場合には（ステップＳ９０２：Ｙｅｓ）、メモリコントローラ３００は、不揮発性メモリ４００からのリードデータの誤り訂正を行い、誤り訂正後のリードデータをホストコンピュータ１００に送信する（ステップＳ９０３）。データの読出しが指示されていない場合（ステップＳ９０２：Ｎｏ）またはステップＳ９０３の後、メモリコントローラ３００は、ステップＳ９０１に戻る。
【００６７】
図１０は、第１の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。メモリコントローラ３００は、ライトデータを符号化する（ステップＳ９１１）。メモリコントローラ３００は、アドレス変換テーブル３１２を使用して、ホストコンピュータ１００により指定された論理アドレスを物理アドレスに変換し、通常ライトアドレスとする（ステップＳ９１２）。そして、メモリコントローラ３００は、通常ライトアドレスを指定したライトコマンドと、符号化したライトデータとを不揮発性メモリ４００に送信する（ステップＳ９１３）。
【００６８】
そして、メモリコントローラ３００は、不揮発性メモリ４００からのエラーフラグを参照してデータの書込みが成功したか否かを判断する（ステップＳ９１４）。例えば、エラーフラグが「０」である場合に、書込みに成功したと判断される。データの書込みに成功した（例えば、エラーフラグが「０」である）場合に（ステップＳ９１４：Ｙｅｓ）、メモリコントローラ３００は、書込み先フラグを参照して通常ライトアドレスにデータが書き込まれたか否かを判断する（ステップＳ９１５）。例えば、書込み先フラグが「０」である場合に、通常ライトアドレスにデータが書き込まれたと判断される。
【００６９】
代替ライトアドレスにデータが書き込まれた（例えば、書込み先フラグが「１」である）場合に（ステップＳ９１５：Ｎｏ）メモリコントローラ３００は、通常ライトアドレスに対応する代替ライトアドレスを生成する（ステップＳ９１６）。そして、メモリコントローラ３００は、アドレス変換テーブル３１２において、代替ライトアドレスを、指定された論理アドレスに対応付ける（ステップＳ９１７）。また、メモリコントローラ３００は、アドレス変換テーブル３１２において、通常ライトアドレスを「不良」のアドレスに更新する（ステップＳ９１８）。
【００７０】
また、データの書込みに失敗した場合に（ステップＳ９１４：Ｎｏ）、メモリコントローラ３００は、通常ライトアドレスに対応する代替ライトアドレスを生成する（ステップＳ９１９）。また、メモリコントローラ３００は、ライトエラーをホストコンピュータ１００に送信する（ステップＳ９２０）。そして、メモリコントローラ３００は、アドレス変換テーブル３１２において、通常ライトアドレスおよび代替ライトアドレスを「不良」のアドレスに更新する（ステップＳ９２１）。
【００７１】
通常ライトアドレスにデータが書き込まれた場合（ステップＳ９１５：Ｙｅｓ）、または、ステップＳ９１８、Ｓ９２１の後、メモリコントローラ３００は、コントローラ側ライト処理を終了する。
【００７２】
［不揮発性メモリの動作例］
図１１は、第１の実施の形態における不揮発性メモリ４００の動作の一例を示すフローチャートである。この動作は、例えば、ストレージ２００に電源が投入されたときに開始する。
【００７３】
不揮発性メモリ４００は、メモリコントローラ３００からライトコマンドを受信したか否かを判断する（ステップＳ９５１）。ライトコマンドを受信した場合に（ステップＳ９５１：Ｙｅｓ）、不揮発性メモリ４００は、メモリ側ライト処理を実行する（ステップＳ９６０）。一方、ライトコマンドを受信していない場合（ステップＳ９５１：Ｎｏ）、または、ステップＳ９６０の後、不揮発性メモリ４００は、メモリコントローラ３００からリードコマンドを受信したか否かを判断する（ステップＳ９５２）。
【００７４】
リードコマンドを受信した場合に（ステップＳ９５２：Ｙｅｓ）、不揮発性メモリ４００は、リードデータの読出しを行い、読み出したリードデータをメモリコントローラ３００に送信する（ステップＳ９５３）。リードコマンドを受信していない場合（ステップＳ９５２：Ｎｏ）、または、ステップＳ９５３の後、不揮発性メモリ４００は、ステップＳ９５１に戻る。
【００７５】
図１２は、第１の実施の形態におけるメモリ側ライト処理の一例を示すフローチャートである。不揮発性メモリ４００は、コマンド、アドレスおよびデータを保持し（ステップＳ９６１）、通常ライトアドレスに対するデータの書込みを行う（ステップＳ９６２）。
【００７６】
そして、不揮発性メモリ４００は、ベリファイを行い、その結果から、通常ライトアドレスにより指定された書込み位置への書込みに成功したか否かを判断する（ステップＳ９６３）。データの書込みに成功した場合に（ステップＳ９６３：Ｙｅｓ）、不揮発性メモリ４００は、通常ライトアドレスに対するデータの書込みに成功した旨を通知するステータスを生成してメモリコントローラ３００に送信する。例えば、「０」のエラーフラグと「０」の書込み先フラグとが通知される（ステップＳ９６８）。
【００７７】
一方、データの書込みに失敗した場合に（ステップＳ９６３：Ｎｏ）、不揮発性メモリ４００は、通常ライトアドレスに対応する代替ライトアドレスを生成し、その代替ライトアドレスが未使用であるか否かを判断する（ステップＳ９６４）。代替ライトアドレスが未使用である場合に（ステップＳ９６４：Ｙｅｓ）、不揮発性メモリ４００は、代替ライトアドレスにより指定した書込み位置へのデータの書込みを行う（ステップＳ９６５）。そして、不揮発性メモリ４００は、ベリファイを行い、その結果から、代替ライトアドレスに対するデータの書込みに成功したか否かを判断する（ステップＳ９６６）。データの書込みに成功した場合に（ステップＳ９６６：Ｙｅｓ）、不揮発性メモリ４００は、代替ライトアドレスに対するデータの書込みに成功した旨を通知するステータスを生成してメモリコントローラ３００に送信する。例えば、「０」のエラーフラグと、「１」の書込み先フラグとが通知される（ステップＳ９６７）。
【００７８】
代替ライトアドレスが使用済である場合（ステップＳ９６４：Ｎｏ）、または、データの書込みに失敗した場合に（ステップＳ９６６：Ｎｏ）、不揮発性メモリ４００は、ライトエラーを通知するステータスを生成してメモリコントローラ３００に送信する。例えば、「１」のエラーフラグと、「１」の書込み先フラグとが通知される（ステップＳ９６９）。ステップＳ９６７、Ｓ９６８またはＳ９６９の後、不揮発性メモリ４００はメモリ側ライト処理を終了する。
【００７９】
このように、本技術の第１の実施の形態によれば、不揮発性メモリ４００が、通常ライトアドレスへのデータの書込み失敗時に代替ライトアドレスを生成するため、書込み失敗時にライトエラーの送信と代替ライトアドレスの受信とを行う必要がなくなる。これにより、ライトエラーの送信と代替ライトアドレスの受信とに要する遅延時間の分、データの書込み時間を短くすることができる。従って、不揮発性メモリ４００は、データの書込みを高速に行うことができる。
【００８０】
［変形例］
第１の実施の形態では、不揮発性メモリ４００は、生成した代替ライトアドレスを送信していなかったが、代替ライトアドレスを送信する構成としてもよい。変形例のメモリシステムは、不揮発性メモリ４００が代替ライトアドレスを送信する点において第１の実施の形態と異なる。
【００８１】
図１３は、第１の実施の形態の変形例におけるステータスの一例を示す図である。同図におけるａは、代替ライトアドレスに対してデータの書込みが行われた場合に通知されるステータスの一例を示す図である。この場合、不揮発性メモリ４００は、エラーフラグと、書込みを行った代替ライトアドレスとを含むステータスを生成してメモリコントローラ３００に通知する。同図におけるｂは、通常ライトアドレスに対してデータの書込みに成功した場合、言い換えれば、代替ライトアドレスへのデータの書込みが行われなかった場合に通知されるステータスの一例を示す図である。この場合、不揮発性メモリ４００は、エラーフラグを含むステータスを生成してメモリコントローラ３００に通知する。
【００８２】
なお、変形例の不揮発性メモリ４００は、書込み先フラグを通知していないが、さらに書込み先フラグを通知してもよい。この場合には、例えば、代替ライトアドレスに対してデータの書込みが行われた場合に、エラーフラグ、書込み先フラグおよび代替ライトアドレスが通知され、そうでない場合にエラーフラグおよび書込み先フラグが通知される。
【００８３】
図１４は、第１の実施の形態の変形例におけるコントローラ側ライト処理の一例を示すフローチャートである。変形例のコントローラ側ライト処理は、ステップＳ９１６およびＳ９１９を実行せず、ステップＳ９１５の代わりにステップＳ９２２を実行する点において第１の実施の形態と異なる。
【００８４】
データの書込みに成功した（例えば、エラーフラグ「０」である）場合に（ステップＳ９１４：Ｙｅｓ）、メモリコントローラ３００は、代替ライトアドレスを受信したか否かを判断する（ステップＳ９２２）。
【００８５】
代替ライトアドレスを受信した場合に（ステップＳ９２２：Ｙｅｓ）メモリコントローラ３００は、アドレス変換テーブル３１２において、代替ライトアドレスを、ホストコンピュータ１００により指定された論理アドレスに対応付ける（ステップＳ９１７）。
【００８６】
また、データの書込みに失敗した場合に（ステップＳ９１４：Ｎｏ）、メモリコントローラ３００は、ライトエラーをホストコンピュータ１００に送信する（ステップＳ９２０）。また、代替ライトアドレスを受信していない場合（ステップＳ９２２：Ｎｏ）、ステップＳ９１８、または、ステップＳ９２１の後に、メモリコントローラ３００は、コントローラ側ライト処理を終了する。
【００８７】
図１５は、第１の実施の形態の第１の変形例におけるメモリ側ライト処理の一例を示すフローチャートである。第１の変形例のメモリ側ライト処理は、ステップＳ９６７、Ｓ９６８およびＳ９６９の代わりにステップＳ９７０、Ｓ９７１およびＳ９７２を実行する点において第１の実施の形態と異なる。
【００８８】
通常ライトアドレスへのデータの書込みに成功した場合に（ステップＳ９６３：Ｙｅｓ）、不揮発性メモリ４００は、通常ライトアドレスに対するデータの書込みに成功した旨を通知するステータスを生成してメモリコントローラ３００に送信する。例えば、「０」のエラーフラグが通知される（ステップＳ９７１）。
【００８９】
また、代替ライトアドレスへのデータの書込みに成功した場合に（ステップＳ９６６：Ｙｅｓ）、不揮発性メモリ４００は、代替ライトアドレスに対するデータの書込みに成功した旨を通知するステータスを生成してメモリコントローラ３００に送信する。例えば、「０」のエラーフラグと、代替ライトアドレスとが通知される（ステップＳ９７０）。
【００９０】
代替ライトアドレスが使用済である場合（ステップＳ９６４：Ｎｏ）、または、データの書込みに失敗した場合に（ステップＳ９６６：Ｎｏ）、不揮発性メモリ４００は、「１」のエラーフラグおよび代替ライトアドレスを通知する（ステップＳ９７２）。
【００９１】
このように、第１の変形例によれば、不揮発性メモリ４００が生成した代替ライトアドレスをメモリコントローラ３００に送信するため、メモリコントローラ３００が代替ライトアドレスを生成する必要がなくなる。
【００９２】
＜２．第２の実施の形態＞
第１の実施の形態では、通常ライトアドレスと代替ライトアドレスとの対応関係を固定とし、不揮発性メモリ４００は、対応する代替ライトアドレスに対してデータへの書込みを行っていた。しかし、対応関係を固定とすると、対応する代替ライトアドレスが使用済の場合に、対応しない代替ライトアドレスが未使用であっても、不揮発性メモリ４００は、その代替ライトアドレスに書込みを行うことができない。このため、不揮発性メモリ４００は、代替データ領域４２２を効率的に利用することができない。対応関係を固定とせず、未使用の代替ライトアドレスのいずれかを不揮発性メモリ４００が選択して書込みを行う構成とすれば、未使用の代替ライトアドレスがなくなるまで再書込みを繰り返すことができる。第２の実施の不揮発性メモリ４００は、未使用の代替ライトアドレスのいずれかを選択して、データの書込みを行う点において第１の実施の形態と異なる。
【００９３】
図１６は、第２の実施の形態におけるメモリセルアレイ４２０の一構成例を示す図である。第２の実施の形態のメモリセルアレイ４２０には、通常データ領域４２１および代替データ領域４２２に加えて、代替ライト管理テーブル４２３がさらに設けられる。代替ライト管理テーブル４２３は、代替ライトアドレスごとに使用フラグを保持するテーブルである。また、第２の実施の形態の代替データ領域４２２には、使用フラグが格納されず、代替ライトアドレスごとに、データのみが格納される。
【００９４】
図１７は、第２の実施の形態における代替ライト管理テーブル４２３の一例を示す図である。この代替ライト管理テーブル４２３には、代替ライトアドレスごとに使用フラグが保持される。なお、代替ライト管理テーブル４２３を保持するメモリセルは、特許請求の範囲に記載の保持部の一例である。
【００９５】
ここで、使用フラグが複数である場合、それらの使用フラグは、まとめて同じアドレスに格納されることが望ましい。例えば、１６個の使用フラグを保持する場合、１６個の使用フラグからなる１６ビットのデータが、１つのアドレスに格納される。使用フラグの個数が多く、１つのアドレスに格納することができない際には、複数のアドレスに分割して格納される。例えば、３２個の使用フラグを保持する場合、３２個の使用フラグからなる３２ビットのデータが２つに分割されて、２つのアドレスに格納される。
【００９６】
図１８は、第２の実施の形態におけるメモリ制御部４７０の一構成例を示すブロック図である。第２の実施の形態のメモリ制御部４７０は、管理テーブルバッファ４７５をさらに保持する点において第１の実施の形態と異なる。
【００９７】
管理テーブルバッファ４７５は、代替ライトアドレスごとの使用フラグを保持するものである。第２の実施の形態のライト処理部４７４は、通常ライトアドレスへの書込みに失敗した際に、代替ライト管理テーブル４２３から代替ライトアドレスのそれぞれの使用フラグを読み出し、管理テーブルバッファ４７５に保持させる。
【００９８】
そして、ライト処理部４７４は、管理テーブルバッファ４７５に保持された使用フラグを参照し、未使用の代替ライトアドレスが１つ以上あれば、それらの代替ライトアドレスのいずれかに対してデータの再書込みを行う。代替ライトアドレスへの書込みに失敗した際には、使用フラグを再度参照し、未使用の代替ライトアドレスのある限り、再書込みを繰り返し行う。
【００９９】
また、通常ライトアドレスへの書込みに成功した場合にライト処理部４７４は、データの書込みに成功した旨をメモリコントローラ３００に通知する。また、代替ライトアドレスへの書込みに成功した場合にライト処理部４７４は、データの書込みに成功した旨と、代替ライトアドレスとをメモリコントローラ３００に通知する。通常ライトアドレスおよび代替ライトアドレスへの書込みに失敗した場合にライト処理部４７４は、データの書込みに失敗した旨と、代替ライトアドレスとをメモリコントローラ３００に通知する。
【０１００】
図１９は、第２の実施の形態におけるメモリ側ライト処理の一例を示すフローチャートである。第２の実施の形態のメモリ側ライト処理は、ステップＳ９６４の代わりにステップＳ９８１およびＳ９８２を実行する点において第１の実施の形態の変形例と異なる。
【０１０１】
通常ライトアドレスへのデータの書込みに失敗した場合に（ステップＳ９６３：Ｎｏ）、不揮発性メモリ４００は、代替ライト管理テーブル４２３を参照し（ステップＳ９８１）、未使用の代替ライトアドレスがあるか否かを判断する（ステップＳ９８２）。
【０１０２】
未使用の代替ライトアドレスがない場合には（ステップＳ９８２：Ｎｏ）、不揮発性メモリ４００は、ステップＳ９７２を実行する。一方、未使用の代替ライトアドレスがある場合には（ステップＳ９８２：Ｙｅｓ）、不揮発性メモリ４００は、その代替ライトアドレスのいずれかを選択して、そのアドレスへのデータの書込みを行う（ステップＳ９６５）。
【０１０３】
そして、不揮発性メモリ４００は、代替ライトアドレスへのデータの書込みに成功したか否かを判断する（ステップＳ９６６）。代替ライトアドレスへのデータの書込みに成功した場合に（ステップＳ９６６：Ｙｅｓ）、不揮発性メモリ４００は、ステップＳ９７０を実行し、失敗した場合に（ステップＳ９６６：Ｎｏ）、ステップＳ９８１に戻る。
【０１０４】
なお、第２の変形例のコントローラ側ライト処理は、図１４に例示した変形例のコントローラ側ライト処理と同様である。
【０１０５】
このように第２の実施の形態によれば、不揮発性メモリ４００は、代替ライトアドレスごとに使用フラグを保持し、未使用の代替ライトアドレスがあれば、再書込みを行うため、未使用の代替ライトアドレスがなくなるまで再書込みを繰り返し行うことができる。したがって、不揮発性メモリ４００は、代替データ領域を効率的に使用することができる。
【０１０６】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１０７】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１０８】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【０１０９】
なお、本技術は以下のような構成もとることができる。
（１）ライトアドレスにより書込み位置が指定されるデータ領域と、
前記ライトアドレスにより前記書込み位置が指定されると当該書込み位置への前記データの書込みを行い、前記データの書込みに失敗した場合には前記指定されたライトアドレスと異なるライトアドレスを代替ライトアドレスとして生成して当該代替ライトアドレスにより指定した書込み位置への前記データの書込みを行う制御部と
を具備する記憶装置。
（２）前記データ領域は、
ライトコマンドによって指定された前記ライトアドレスである通常ライトアドレスにより前記書込み位置が指定される通常データ領域と、
前記通常ライトアドレスに対応する前記代替ライトアドレスにより前記書込み位置が指定される代替データ領域と
を備え、
前記制御部は、前記データの書込みに失敗した場合には前記通常ライトアドレスに対応する前記代替ライトアドレスを生成する
前記（１）記載の記憶装置。
（３）前記代替ライトアドレスに対して前記データの書込みを行ったか否かを示す使用フラグを前記代替ライトアドレスごとに保持する保持部をさらに具備し、
前記制御部は、前記データの書込みに失敗した場合には前記書込みを行っていないことを示す前記使用フラグに係る前記代替ライトアドレスを生成する
前記（１）記載の記憶装置。
（４）ライトアドレスによりデータの書込み位置を指定する制御装置と、
前記ライトアドレスにより前記書込み位置が指定されるデータ領域と、
前記ライトアドレスにより前記書込み位置が指定されると当該書込み位置への前記データの書込みを行い、前記データの書込みに失敗した場合には前記指定されたライトアドレスと異なるライトアドレスを代替ライトアドレスとして生成して当該代替ライトアドレスにより指定した書込み位置への前記データの書込みを行う制御部と
を具備する記憶システム。
（５）前記制御装置は、
論理アドレスと物理アドレスとを対応付けて保持するアドレス変換テーブルと、
前記論理アドレスに対応する前記物理アドレスを前記ライトアドレスとして取得して当該ライトアドレスにより前記書込み位置を指定し、前記代替ライトアドレスにより指定された前記書込み位置への前記データの書込みが成功した場合には前記代替ライトアドレスを前記論理アドレスに対応付けるアクセス制御部と
を具備する前記（４）記載の記憶システム。
（６）前記データ領域は、
ライトコマンドによって指定された前記ライトアドレスである通常ライトアドレスにより書込み位置が指定される通常データ領域と、
前記通常ライトアドレスに対応する前記代替ライトアドレスにより前記書込み位置が指定される代替データ領域と
を備え、
前記制御部は、前記データの書込みに失敗した場合には前記書込みを行った前記通常ライトアドレスに対応する前記代替ライトアドレスを生成する
前記（５）記載の記憶システム。
（７）前記制御部は、前記データの書込みに成功したか否かを示すエラーフラグと前記通常ライトアドレスおよび前記代替ライトアドレスのいずれを指定して前記データの書込みを行ったかを示す書込み先フラグとを前記アクセス制御部に供給し、
前記アクセス制御部は、前記データの書込みに成功した旨を示す前記エラーフラグと前記代替ライトアドレスを指定して前記データの書込みを行った旨を示す前記書込み先フラグとが供給された場合には前記通常ライトアドレスに対応する前記代替ライトアドレスを生成して前記論理アドレスに対応付ける
前記（６）記載の記憶システム。
（８）前記制御部は、前記データの書込みに成功したか否かを示すエラーフラグと前記生成した代替ライトアドレスとを前記アクセス制御部に供給し、
前記アクセス制御部は、前記データの書込みに成功した旨を示す前記エラーフラグと前記代替ライトアドレスとが供給された場合には前記供給された代替ライトアドレスを前記論理アドレスに対応付ける
前記（５）または（６）に記載の記憶システム。
（９）前記ライトアドレスにより書込み位置が指定されると当該書込み位置への前記データの書込みを行う書込み手順と、
前記データの書込みに失敗した場合には前記指定されたライトアドレスと異なるライトアドレスを代替ライトアドレスとして生成して当該代替ライトアドレスにより指定した書込み位置への前記データの書込みを行う再書込み手順と
を具備する記憶装置の制御方法。
【符号の説明】
【０１１０】
１００  ホストコンピュータ
２００  ストレージ
３００  メモリコントローラ
３０１  ホストインターフェース
３０２  ＲＡＭ
３０３  ＣＰＵ
３０４  ＥＣＣ処理部
３０５  ＲＯＭ
３０６、４５０  バス
３０７  メモリインターフェース
３１１  アクセス制御部
３１２  アドレス変換テーブル
４００  不揮発性メモリ
４１０  データバッファ
４２０  メモリセルアレイ
４２１  通常データ領域
４２２  代替データ領域
４２３  代替ライト管理テーブル
４３０  ドライバ
４４０  アドレスデコーダ
４６０  制御インターフェース
４７０  メモリ制御部
４７１  アドレスバッファ
４７２  コマンドバッファ
４７３  コマンドデコーダ
４７４  ライト処理部
４７５  管理テーブルバッファ
【図１】
2015182439.tif 000003
【図２】
2015182439.tif 000004
【図３】
2015182439.tif 000005
【図４】
2015182439.tif 000006
【図５】
2015182439.tif 000007
【図６】
2015182439.tif 000008
【図７】
2015182439.tif 000009
【図８】
2015182439.tif 000010
【図９】
2015182439.tif 000011
【図１０】
2015182439.tif 000012
【図１１】
2015182439.tif 000013
【図１２】
2015182439.tif 000014
【図１３】
2015182439.tif 000015
【図１４】
2015182439.tif 000016
【図１５】
2015182439.tif 000017
【図１６】
2015182439.tif 000018
【図１７】
2015182439.tif 000019
【図１８】
2015182439.tif 000020
【図１９】
2015182439.tif 000021
【国際調査報告】
2015182439.tif 000022
2015182439.tif 000023