(57)【要約】【課題】記憶装置がデータの書込みを高速に行う。【解決手段】アドレス取得部が、データの書込み先として指定された通常ライトアドレスと前記データの書込みが失敗した際に用いられる代替ライトアドレスとを通常ライトアドレスに対するデータの書込みが行われる前に取得する。ライト処理部が、前記データの書込みが指示されると通常ライトアドレスに対して前記データの書込みを行い、通常ライトアドレスに対するデータの書込みが失敗した場合には代替ライトアドレスに対して前記データの書込みを行う。【選択図】図８
2015118499.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）等を用いることができる。
【０１１４】
なお、本技術は以下のような構成もとることができる。
（１）データの書込み先として指定された通常ライトアドレスと前記データの書込みが失敗した際に用いられる代替ライトアドレスとを前記通常ライトアドレスに対するデータの書込みが行われる前に取得するアドレス取得部と、
前記データの書込みが指示されると前記通常ライトアドレスに対して前記データの書込みを行う通常ライト処理部と、
前記通常ライトアドレスに対する前記データの書込みが失敗した場合には前記代替ライトアドレスに対して前記データの書込みを行う代替ライト処理部と
を具備する記憶装置。
（２）前記ライト処理部は、
前記データの書込みが指示されると前記通常ライトアドレスに対して前記データの書込みを行う通常ライト処理部と、
前記通常ライトアドレスに対する前記データの書込みが失敗した場合には前記代替ライトアドレスに対して前記データの書込みを行う代替ライト処理部と
を備える前記（１）記載の記憶装置。
（３）複数の前記代替ライトアドレスのそれぞれについて前記データの書込みが行われたか否かを示す管理情報を保持する保持部をさらに具備し、
前記アドレス取得部は、前記通常ライトアドレスに対するデータの書込みが行われる前に前記複数の代替ライトアドレスを取得しておき、
前記ライト処理部は、前記通常ライトアドレスに対する前記データの書込みが失敗した場合には前記複数の代替ライトアドレスの中から前記データの書込みが行われていない代替ライトアドレスを前記管理情報に基づいて選択して前記データの書込みを行う
前記（１）または（２）記載の記憶装置。
（４）前記アドレス取得部は、前記データの書込みを指示するライトコマンドに含まれる前記通常ライトアドレスおよび前記代替ライトアドレスを取得し、
前記ライト処理部は、前記ライトコマンドに従って前記データの書込みを行う
前記（１）または（２）記載の記憶装置。
（５）データの書込みを指示するアクセス制御部と、
前記データの書込み先として指定された通常ライトアドレスと前記データの書込みが失敗した際に用いられる代替ライトアドレスとを前記通常ライトアドレスに対する前記データの書込みが行われる前に供給するアドレス供給部と
を具備する制御装置。
（６）データの書込みを指示するアクセス制御部と、
前記データの書込み先として指定された通常ライトアドレスと前記データの書込みが失敗した際に用いられる代替ライトアドレスとを前記通常ライトアドレスに対する前記データの書込みが行われる前に供給するアドレス供給部と、
前記通常ライトアドレスと前記代替ライトアドレスとを前記通常ライトアドレスに対するデータの書込みが行われる前に取得するアドレス取得部と、
前記データの書込みが指示されると前記通常ライトアドレスに対して前記データの書込みを行い、前記通常ライトアドレスに対する前記データの書込みが失敗した場合には前記代替ライトアドレスに対して前記データの書込みを行うライト処理部と
を具備する記憶システム。
（７）前記ライト処理部は、
前記データの書込みが指示されると前記通常ライトアドレスに対して前記データの書込みを行う通常ライト処理部と、
前記通常ライトアドレスに対する前記データの書込みが失敗した場合には前記代替ライトアドレスに対して前記データの書込みを行う代替ライト処理部と
を備える前記（６）記載の記憶システム。
（８）前記アドレス供給部は、前記通常ライトアドレスに対する前記データの書込みが行われる前に複数の前記代替ライトアドレスを供給し、
前記ライト処理部は、前記複数の代替ライトアドレスのいずれかに対して前記データの書込みを行うたびに当該データの書込みを行った代替ライトアドレスを識別する識別情報を前記アドレス供給部へ通知し、
前記アドレス供給部は、前記供給した代替ライトアドレスの全てに対して前記データの書込みが行われたか否かを前記識別情報に基づいて判断して前記代替ライトアドレスの全てに対してデータの書込みが行われると新たな複数の代替ライトアドレスを供給する
前記（６）または（７）記載の記憶システム。
（９）論理アドレスと物理アドレスとを対応付けたアドレス変換テーブルをさらに具備し、
前記アドレス供給部は、前記論理アドレスのいずれかが前記データの書込み先として指定されると当該指定された論理アドレスに対応付けられていない前記物理アドレスを前記代替ライトアドレスとして供給し、
前記ライト処理部は、前記代替ライトアドレスに対して前記データの書込みを行った後に前記データの書込みに成功したか否かを判断して前記書込みに成功した場合には前記代替ライトアドレスに前記データに書き込まれた旨を前記アドレス供給部へ通知し、
前記アドレス供給部は、前記代替ライトアドレスに前記データが書き込まれた旨が通知されると前記アドレス変換テーブルにおいて前記指定された論理アドレスに前記代替ライトアドレスを対応付ける
前記（６）から（８）のいずれかに記載の記憶システム。
（１０）アドレス取得部が、データの書込み先として指定された通常ライトアドレスと前記データの書込みが失敗した際に用いられる代替ライトアドレスとを前記通常ライトアドレスに対するデータの書込みが行われる前に取得するアドレス取得手順と、
通常ライト処理部が、前記データの書込みが指示されると前記通常ライトアドレスに対して前記データの書込みを行い、前記通常ライトアドレスに対する前記データの書込みが失敗した場合には前記代替ライトアドレスに対して前記データの書込みを行うライト処理手順と
を具備する記憶装置の制御方法。
【符号の説明】
【０１１５】
１００  ホストコンピュータ
２００  ストレージ
３００  メモリコントローラ
３０１  ホストインターフェース
３０２  ＲＡＭ
３０３  ＣＰＵ
３０４  ＥＣＣ処理部
３０５  ＲＯＭ
３０６  バス
３０７  メモリインターフェース
３１１  アクセス制御部
３１２  アドレス変換テーブル
３１３、３１４  代替ライトアドレス供給部
４００  不揮発性メモリ
４１０  データバッファ
４２０  メモリセルアレイ
４３０  ドライバ
４４０  アドレスデコーダ
４５０  バス
４６０  制御インターフェース
４７０  メモリ制御部
４７１  アドレスバッファ
４７２  コマンドバッファ
４７３  コマンドデコーダ
４７４  ライト処理部
４７５  通常ライト処理部
４７６  代替ライト処理部
４７７  代替アドレステーブル管理部
【図１】
2015118499.tif 000003
【図２】
2015118499.tif 000004
【図３】
2015118499.tif 000005
【図４】
2015118499.tif 000006
【図５】
2015118499.tif 000007
【図６】
2015118499.tif 000008
【図７】
2015118499.tif 000009
【図８】
2015118499.tif 000010
【図９】
2015118499.tif 000011
【図１０】
2015118499.tif 000012
【図１１】
2015118499.tif 000013
【図１２】
2015118499.tif 000014
【図１３】
2015118499.tif 000015
【図１４】
2015118499.tif 000016
【図１５】
2015118499.tif 000017
【図１６】
2015118499.tif 000018
【図１７】
2015118499.tif 000019
【図１８】
2015118499.tif 000020
【図１９】
2015118499.tif 000021
【図２０】
2015118499.tif 000022