(57)【特許請求の範囲】
【請求項１】
メモリにおけるライト後の検証の実行回数を含むステータスを前記メモリから取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と
を具備し、
前記領域選択部は、前記条件として高速性が要求されている場合には前記履歴情報における前記検証の実行回数に基づいて領域を選択する
記憶制御装置。
【請求項２】
前記領域選択部は、前記条件として高速性が要求されている場合には前記履歴情報において前記検証の実行回数がより少ない領域を選択する
請求項１記載の記憶制御装置。
【請求項３】
メモリにおけるライト後の検証の実行回数を含むステータスを前記メモリから取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と
を具備し、
前記ステータス取得部は、前記ステータスとして前記検証において検出されたエラー数を受け取り、
前記領域選択部は、前記条件として高信頼性が要求されている場合には前記履歴情報における前記検出されたエラー数に基づいて領域を選択する
記憶制御装置。
【請求項４】
前記領域選択部は、前記条件として高信頼性が要求されている場合には前記履歴情報において前記検出されたエラー数がより少ない領域を選択する
請求項３記載の記憶制御装置。
【請求項５】
メモリにおけるライト後の検証の実行回数を含むステータスを前記メモリから取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と、
前記メモリに対して新たなライトを行う際には前記履歴情報に従ってパラメータを指定するパラメータ指定部と
を具備し、
前記パラメータ指定部は、ライト後の検証において許容されるエラー数を前記パラメータとして指定する
記憶制御装置。
【請求項６】
前記ステータス取得部は、前記ステータスとして前記検証において検出されたエラー数を受け取り、
前記パラメータ指定部は、前記履歴情報に含まれる前記検出されたエラー数に従って前記許容されるエラー数を前記パラメータとして指定する
請求項５記載の記憶制御装置。
【請求項７】
メモリアレイと、
前記メモリアレイにおけるライト後の検証を実行する検証部と、
前記検証の実行回数を計数する検証回数カウンタと、
前記検証の実行回数を含むステータスを取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリアレイの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリアレイにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と
を具備し、
前記領域選択部は、前記条件として高速性が要求されている場合には前記履歴情報における前記検証の実行回数に基づいて領域を選択する
記憶装置。
【請求項８】
メモリアレイと、
前記メモリアレイにおけるライト後の検証を実行する検証部と、
前記検証の実行回数を計数する検証回数カウンタと、
前記検証の実行回数を含むステータスを取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリアレイの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリアレイにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と
を具備し、
前記検証において検出されたエラー数を計数する検出エラー数カウンタをさらに具備し、
前記ステータス取得部は、前記ステータスとして前記検出されたエラー数を受け取り、
前記領域選択部は、前記条件として高信頼性が要求されている場合には前記履歴情報において前記検出されたエラー数がより少ない領域を選択する
記憶装置。
【請求項９】
メモリアレイと、
前記メモリアレイにおけるライト後の検証を実行する検証部と、
前記検証の実行回数を計数する検証回数カウンタと、
前記検証の実行回数を含むステータスを取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリアレイの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリアレイにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と、
前記メモリアレイに対するライトコマンドを発行するホストコンピュータと
を具備し、
前記領域選択部は、前記条件として高速性が要求されている場合には前記履歴情報における前記検証の実行回数に基づいて領域を選択する
情報処理システム。
【請求項１０】
メモリアレイと、
前記メモリアレイにおけるライト後の検証を実行する検証部と、
前記検証の実行回数を計数する検証回数カウンタと、
前記検証の実行回数を含むステータスを取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリアレイの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリアレイにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と、
前記メモリアレイに対するライトコマンドを発行するホストコンピュータと
を具備し、
前記ステータス取得部は、前記ステータスとして前記検証において検出されたエラー数を受け取り、
前記領域選択部は、前記条件として高信頼性が要求されている場合には前記履歴情報における前記検出されたエラー数に基づいて領域を選択する
情報処理システム。
【請求項１１】
メモリにおけるライト後の検証の実行回数を含むステータスを前記メモリから取得するステータス取得手順と、
前記ステータスの履歴を履歴情報として前記メモリの所定の領域毎に関連付けて履歴情報保持部に保持させる履歴情報保持手順と、
前記メモリにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択手順と
を具備し、
前記領域選択手順において、前記条件として高速性が要求されている場合には前記履歴情報における前記検証の実行回数に基づいて領域を選択する
記憶制御方法。
【請求項１２】
メモリにおけるライト後の検証の実行回数を含むステータスを前記メモリから取得するステータス取得手順と、
前記ステータスの履歴を履歴情報として前記メモリの所定の領域毎に関連付けて履歴情報保持部に保持させる履歴情報保持手順と、
前記メモリにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択手順と
を具備し、
前記ステータス取得手順において、前記ステータスとして前記検証において検出されたエラー数を受け取り、
前記領域選択部手順において、前記条件として高信頼性が要求されている場合には前記履歴情報における前記検出されたエラー数に基づいて領域を選択する
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、不揮発性メモリのための記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリやＲｅＲＡＭ（Resistance RAM）などの不揮発性メモリにおいては、選択されたワードラインに接続されたメモリセルに対して一括して書込みや消去が行われる。データの書込み時または消去時には、データの信頼性を保証するために、メモリセルへの書込み動作または消去動作の実行後、検証（ベリファイ）読出しをする方式が用いられている。製造プロセスに起因するばらつきの影響によって、メモリセルへの書込み動作または消去動作と検証読出しの実行を１回実行しただけでは正しく書込み動作または消去動作が終了しないことがある。この場合、書込み動作または消去動作と検証読出しの実行とが複数回繰り返して実行されることになる。
【０００３】
一方、ＮＡＮＤフラッシュメモリやＲｅＲＡＭにおいてデータを誤りなく記録または読み出しを行うために、メモリチップ内部もしくはメモリコントローラに誤り訂正機能を有している。この誤り訂正機能を利用することにより、ある程度のエラーの発生を許容して、上述の繰り返し回数を減らして、データの書込みまたは消去を高速化する方法も提案されている（例えば、特許文献１乃至３参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０６−１３１８８４号公報
【特許文献２】特開２００２−０４８７８３号公報
【特許文献３】特開平１０−２２２９９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の従来技術では、誤り訂正機能を前提とすることにより、ある程度のエラーの発生を許容して、データの書込みまたは消去の高速化を図っている。しかしながら、上述の従来技術では、書込み動作または消去動作と検証読出しの実行との繰返しの程度を予測することができず、メモリセルの性質を把握することができなかった。そのため、メモリに対する要求性能に合わせてメモリの使用領域を選択することができなかった。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、メモリに対する要求性能に合わせてメモリの使用領域を選択することを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、メモリにおけるライト後の検証の実行回数を含むステータスを上記メモリから取得するステータス取得部と、上記ステータスの履歴を履歴情報として上記メモリの所定の領域毎に関連付けて保持する履歴情報保持部と、上記メモリにおいて新たな領域を使用する際には上記履歴情報に従って条件に合致した領域を選択する領域選択部とを具備する記憶制御装置またはその記憶制御方法である。これにより、ライト後の検証の履歴情報に従って条件に合致した領域をメモリにおいて選択するという作用をもたらす。
【０００８】
また、この第１の側面において、上記領域選択部は、上記条件として高速性が要求されている場合には上記履歴情報における上記検証の実行回数に基づいて領域を選択するようにしてもよい。これにより、高速性という条件に合致した領域をメモリにおいて選択するという作用をもたらす。この場合において、特に、上記履歴情報において上記検証の実行回数がより少ない領域を選択するようにしてもよい。
【０００９】
また、この第１の側面において、上記ステータス取得部は、上記ステータスとして上記検証において検出されたエラー数を受け取り、上記領域選択部は、上記条件として高信頼性が要求されている場合には上記履歴情報における上記検出されたエラー数に基づいて領域を選択するようにしてもよい。これにより、高信頼性という条件に合致した領域をメモリにおいて選択するという作用をもたらす。この場合において、特に、上記履歴情報において上記検出されたエラー数がより少ない領域を選択するようにしてもよい。
【００１０】
また、この第１の側面において、上記メモリに対して新たなライトを行う際には上記履歴情報に従ってパラメータを指定するパラメータ指定部をさらに具備してもよい。これにより、指定されたパラメータによりライトを実行するという作用をもたらす。
【００１１】
また、この第１の側面において、上記パラメータ指定部は、ライト後の検証において許容されるエラー数を上記パラメータとして指定するようにしてもよい。これにより、指定された許容エラー数を上限としてライトを実行するという作用をもたらす。
【００１２】
また、この第１の側面において、上記ステータス取得部は、上記ステータスとして上記検証において検出されたエラー数を受け取り、上記パラメータ指定部は、上記履歴情報に含まれる上記検出されたエラー数に従って上記許容されるエラー数を上記パラメータとして指定するようにしてもよい。これにより、過去のライト時に検出されたエラー数に従って許容エラー数を指定してライトを実行するという作用をもたらす。
【００１３】
また、この第１の側面において、上記パラメータ指定部は、ライトの際に上記メモリにおいて印加すべきパルスの電圧レベルの初期値を上記パラメータとして指定するようにしてもよい。これにより、指定された電圧レベルを初期値としてパルスを印加してライトを実行するという作用をもたらす。
【００１４】
また、この第１の側面において、上記履歴情報保持部は、上記パラメータとして指定した電圧レベルの初期値を上記履歴情報として保持し、上記パラメータ指定部は、上記履歴情報に含まれる上記電圧レベルの初期値に従って新たなライトの際に上記メモリにおいて印加すべきパルスの電圧レベルの初期値を上記パラメータとして指定するようにしてもよい。これにより、過去のライト時の電圧レベルの初期値に従って、新たなライトの電圧レベルの初期値を指定してライトを実行するという作用をもたらす。
【００１５】
また、本技術の第２の側面は、メモリアレイと、上記メモリアレイにおけるライト後の検証を実行する検証部と、上記検証の実行回数を計数する検証回数カウンタと、上記検証の実行回数を含むステータスを取得するステータス取得部と、上記ステータスの履歴を履歴情報として上記メモリアレイの所定の領域毎に関連付けて保持する履歴情報保持部と、上記メモリアレイにおいて新たな領域を使用する際には上記履歴情報に従って条件に合致した領域を選択する領域選択部とを具備する記憶装置である。これにより、メモリアレイにおけるライト後の検証の履歴情報に従って条件に合致した領域をメモリにおいて選択するという作用をもたらす。
【００１６】
また、この第２の側面において、上記検証において検出されたエラー数を計数する検出エラー数カウンタをさらに具備し、上記ステータス取得部は、上記ステータスとして上記検出されたエラー数を受け取り、上記領域選択部は、上記条件として高信頼性が要求されている場合には上記履歴情報において上記検出されたエラー数がより少ない領域を選択するようにしてもよい。これにより、高信頼性という条件に合致した領域をメモリにおいて選択するという作用をもたらす。
【００１７】
また、本技術の第３の側面は、メモリアレイと、上記メモリアレイにおけるライト後の検証を実行する検証部と、上記検証の実行回数を計数する検証回数カウンタと、上記検証の実行回数を含むステータスを取得するステータス取得部と、上記ステータスの履歴を履歴情報として上記メモリアレイの所定の領域毎に関連付けて保持する履歴情報保持部と、上記メモリアレイにおいて新たな領域を使用する際には上記履歴情報に従って条件に合致した領域を選択する領域選択部と、上記メモリアレイに対するライトコマンドを発行するホストコンピュータとを具備する情報処理システムである。これにより、新たに発行したライトコマンドを実行する際、メモリアレイにおけるライト後の検証の履歴情報に従って条件に合致した領域をメモリにおいて選択するという作用をもたらす。
【発明の効果】
【００１８】
本技術によれば、メモリに対する要求性能に合わせてメモリの使用領域を選択することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１９】
【図１】本技術の第１の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の第１の実施の形態における記憶制御部２００の機能構成例を示す図である。
【図３】本技術の第１の実施の形態における不揮発性メモリ３００の一構成例を示す図である。
【図４】本技術の第１の実施の形態における不揮発性メモリ３００に記憶されるデータ構成例を示す図である。
【図５】本技術の第１の実施の形態におけるアドレス変換テーブル２２１の一構成例を示す図である。
【図６】本技術の第１の実施の形態における履歴情報管理テーブル２２２の一構成例を示す図である。
【図７】本技術の第１の実施の形態における記憶制御部２００のライトコマンド処理手順の一例を示す流れ図である。
【図８】本技術の第１の実施の形態における記憶制御部２００の論理ページライト処理の処理手順例を示す流れ図である。
【図９】本技術の実施の形態における記憶制御部２００のライト処理の処理手順例を示す流れ図である。
【図１０】本技術の実施の形態における不揮発性メモリ３００のプログラム動作の処理手順例を示す流れ図である。
【図１１】本技術の実施の形態における不揮発性メモリ３００の消去動作の処理手順例を示す流れ図である。
【図１２】本技術の第２の実施の形態における情報処理システムの一構成例を示す図である。
【図１３】本技術の第２の実施の形態における不揮発性メモリ３０１および３０２に記憶されるデータ構成例を示す図である。
【図１４】本技術の第２の実施の形態におけるアドレス変換テーブル２２１の一構成例を示す図である。
【図１５】本技術の第２の実施の形態における、不揮発性メモリ３０１の履歴情報管理テーブル２２２の一構成例を示す図である。
【図１６】本技術の第２の実施の形態における、不揮発性メモリ３０２の履歴情報管理テーブル２２２の一構成例を示す図である。
【図１７】本技術の第２の実施の形態における記憶制御部２００の論理ページライト処理の処理手順例を示す流れ図である。
【図１８】本技術の第３の実施の形態における不揮発性メモリ３０１または３０２の一構成例を示す図である。
【図１９】本技術の第３の実施の形態における不揮発性メモリ３０１の履歴情報管理テーブル２２２の一構成例を示す図である。
【図２０】本技術の第３の実施の形態における不揮発性メモリ３０２の履歴情報管理テーブル２２２の一構成例を示す図である。
【図２１】本技術の第３の実施の形態における不揮発性メモリ３００のプログラム動作の処理手順例を示す流れ図である。
【図２２】本技術の第３の実施の形態における不揮発性メモリ３００の消去動作の処理手順例を示す流れ図である。
【発明を実施するための形態】
【００２０】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（検証実行回数と検出エラー数を履歴情報に含む例）
２．第２の実施の形態（複数のＮＶＭを組み合わせて使用する例）
３．第３の実施の形態（検証実行回数と印加パルスの開始レベルを履歴情報に含む例）
【００２１】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の第１の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、記憶制御部２００と、不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）３００とから構成される。記憶制御部２００および不揮発性メモリ３００はストレージシステムを構成する。
【００２２】
ホストコンピュータ１００は、不揮発性メモリ３００に対してデータのリードまたはライトを要求するコマンドを発行するものである。
【００２３】
記憶制御部２００は、ホストコンピュータ１００と通信してコマンドを受信し、不揮発性メモリ３００へのデータ書込みおよび不揮発性メモリ３００からのデータ読出しを実行するものである。記憶制御部２００は、ライトコマンドを受信した場合、ホストコンピュータ１００から受信したデータを、不揮発性メモリ３００に書き込む。また、記憶制御部２００は、リードコマンドを受信した場合、不揮発性メモリ３００からデータを読み出してホストコンピュータ１００に転送する。
【００２４】
ホストコンピュータ１００がライトコマンド、リードコマンドを実行するとき、記憶制御部２００内で、データの位置情報を表すアドレスとして論理アドレスが用いられる。論理アドレスは、例えば５１２バイトでアドレッシングされるものとする。ホストコンピュータ１００が、ライトコマンドやリードコマンドを実行するときには、アクセスを開始する先頭論理アドレスおよびデータサイズを指定する。データサイズで指定される値は、５１２×ｎバイトで表されるｎである。
【００２５】
記憶制御部２００は、プロセッサ２１０と、ＲＡＭ２２０と、ＲＯＭ２３０と、ＥＣＣ処理部２４０と、ホストインターフェース２０１と、ＮＶＭインターフェース２０３とを備える。
【００２６】
プロセッサ２１０は、記憶制御部２００全体の制御を行うものである。このプロセッサ２１０は、ＲＯＭ２３０に格納されたソフトウェアを実行する。ＲＡＭ２２０は、揮発性のメモリであり、プロセッサ２１０のワーキングメモリや、不揮発性メモリ３００を管理するデータを一時的に保持するための領域として用いられる。また、ＲＡＭ２２０は、ホストコンピュータ１００と記憶制御部２００との間で転送されるデータを一時的に保持するための領域や、記憶制御部２００と不揮発性メモリ３００との間で転送されるデータを一時的に保持するための領域としても用いられる。ＲＯＭ２３０は、ストレージシステムを制御するためのソフトウェアプログラムを格納するメモリである。
【００２７】
ＥＣＣ処理部２４０は、不揮発性メモリ３００に記録されるデータのエラー訂正コード（ＥＣＣ：Error Correcting Code）の生成、および、不揮発性メモリ３００から読み出したデータのエラー訂正処理を実行するものである。
【００２８】
不揮発性メモリ３００は、不揮発性のメモリであり、ストレージシステムの記憶領域として動作する。この不揮発性メモリ３００では、ホストコンピュータ１００からのライトコマンドに基づくライト処理として、プログラム動作および消去動作を行う。プログラム動作においては、任意の値が不揮発性メモリ３００のメモリアレイの指定された領域に書き込まれる。消去動作では不揮発性メモリ３００のメモリアレイの指定された領域が消去される。プログラム動作および消去動作の何れにおいても、直後に検証（ベリファイ）のための読出しが行われ、プログラム動作および消去動作が確実に行われたか否かが確認される。
【００２９】
ホストインターフェース２０１は、ホストコンピュータ１００と接続され、ホストコンピュータ１００からのコマンドの受信、および、ホストコンピュータ１００とのデータの受送信を実行するものである。
【００３０】
ＮＶＭインターフェース２０３は、不揮発性メモリ３００と接続され、不揮発性メモリ３００に対する指示の送信、ライトデータの送信、および、リードデータの受信を実行するものである。
【００３１】
［記憶制御部の機能構成］
図２は、本技術の第１の実施の形態における記憶制御部２００の機能構成例を示す図である。ここでは、記憶制御部２００の機能構成として、アドレス変換テーブル２２１と、履歴情報管理テーブル２２２と、ステータス取得部２１１と、ページ選択部２１２と、パラメータ指定部２１３とが示されている。なお、ここでは、実施の形態に関連性のある機能にフォーカスして示しており、通常のメモリアクセスに関する機能については省略している。
【００３２】
アドレス変換テーブル２２１は、論理アドレスから物理アドレスへ変換するためのテーブルである。ホストコンピュータ１００からのコマンドにおいては通常の場合、論理アドレスが用いられるため、このアドレス変換テーブル２２１を用いて物理アドレスへの変換が行われる。
【００３３】
履歴情報管理テーブル２２２は、不揮発性メモリ３００におけるライト処理の履歴情報を保持して管理するためのテーブルである。この履歴情報としては、後述するように、不揮発性メモリ３００からのステータスを用いることができる。なお、この履歴情報管理テーブル２２２は、特許請求の範囲に記載の履歴情報保持部の一例である。
【００３４】
これらアドレス変換テーブル２２１および履歴情報管理テーブル２２２は、ストレージシステムに電源が供給されていない間は、不揮発性メモリ３００の予め定められた位置に記憶されている。記憶制御部２００は、電源投入時の初期化処理において、予め定められた位置から２つのテーブルを読み出し、それらをＲＡＭ２２０に一時的に保持する。記憶制御部２００は、ホストコンピュータ１００から電源遮断を予告されると、２つのテーブルを不揮発性メモリ３００の定められた位置に書き込む。予期せぬ電源遮断の影響を最小限に抑えるため、一定の処理ごとにデータを不揮発性メモリ３００に書き込む処理を行うことが望ましい。なお、アドレス変換テーブル２２１および履歴情報管理テーブル２２２の具体的な構成については後述する。
【００３５】
ステータス取得部２１１は、不揮発性メモリ３００におけるライト後のステータスを不揮発性メモリ３００から取得するものである。この第１の実施の形態においては、ステータスとして、検証を実行した回数（検証実行回数）、および、検証により検出されたエラー数（検出エラー数）を想定する。ここで、エラー数とは、エラーを生じたビットの数をいう。このステータス取得部２１１によって取得されたステータスは、アドレス変換テーブル２２１および履歴情報管理テーブル２２２の更新のために用いられる。
【００３６】
ページ選択部２１２は、不揮発性メモリ３００において新たな領域を使用する際に、履歴情報管理テーブル２２２に保持された履歴情報に従って、条件に合致した物理ページを選択するものである。ここにいう条件とは、ページの属性に関する条件であり、例えば、高信頼性や、高速性などの条件をいう。この条件の指定は、ホストコンピュータ１００からライト時に指定することができる。また、ホストコンピュータ１００からライト時に指定された論理アドレスに基づいて、その論理アドレスの属する領域の性質から推定するようにしてもよい。例えば、その論理アドレスがファイル管理領域に属する場合には、高信頼性が要求されるものと推定することができる。ページ選択部２１２は、新たな物理ページを選択して論理ページに割り当てる場合、アドレス変換テーブル２２１に物理ページと論理ページの組合せを登録する。
【００３７】
パラメータ指定部２１３は、不揮発性メモリ３００に対してライト処理を指示する際に、ライト処理に使用されるパラメータを指定するものである。この第１の実施の形態においては、パラメータとして、ライト処理の検証の際に許容されるエラー数（許容エラー数）を想定する。上述のように、記憶制御部２００はＥＣＣ処理部２４０を有しており、このＥＣＣ処理部２４０において訂正可能な範囲であればある程度のエラーは許容することも可能である。そこで、この第１の実施の形態では、ライト処理を指示する際に許容エラー数をパラメータとして指定できるようにしている。
【００３８】
［不揮発性メモリの構成］
図３は、本技術の第１の実施の形態における不揮発性メモリ３００の一構成例を示す図である。この不揮発性メモリ３００は、メモリアレイ３１０と、データバッファ３２０と、検証部３３０と、検証回数カウンタ３４０と、検証成否判定部３５０と、検出エラー数カウンタ３６０と、許容エラー数レジスタ３７０と、制御部３９０とを備えている。
【００３９】
また、この不揮発性メモリ３００は、記憶制御部２００との間のインターフェースである制御インターフェース３０９を備えている。この制御インターフェース３０９は、記憶制御部２００からのコマンドや物理アドレスおよびパラメータの受信、メモリアレイ３１０へのライトデータの受信、メモリアレイ３１０からのリードデータの送信、制御データの受送信などを行う。
【００４０】
メモリアレイ３１０は、不揮発性のメモリセルアレイであり、ビット毎に２値の何れかの値を記憶するメモリセルが２次元状に多数配列されている。このメモリアレイ３１０にアクセスするホストコンピュータ１００からのコマンドの単位は物理ページ単位である。物理ページには物理ページアドレスが割り振られている。
【００４１】
データバッファ３２０は、記憶制御部２００から出力されたライトデータ、および、メモリアレイ３１０から読み出されたリードデータを一時的に保持するバッファである。
【００４２】
検証部３３０は、メモリアレイ３１０に書き込んだライトデータの検証（ベリファイ）処理を実行するものである。検証回数カウンタ３４０は、検証部３３０において検証処理を実行した回数をカウントするものである。
【００４３】
検出エラー数カウンタ３６０は、検証動作時に検出されたエラー数、すなわちエラーを生じたビット数をカウントするものである。許容エラー数レジスタ３７０は、記憶制御部２００から受信した許容エラー数をパラメータとして一時的に保持するレジスタである。検証成否判定部３５０は、許容エラー数レジスタ３７０に保持されたパラメータと、検出エラー数カウンタ３６０でカウントされた数とに基づいて、記憶制御部２００から指示されたライト処理が、最終的に成功したか否かを判定するものである。
【００４４】
制御部３９０は、メモリアレイ３１０に対するデータの書込み、消去、読出し処理の制御を行うものである。
【００４５】
［不揮発性メモリにおけるデータ構成］
図４は、本技術の第１の実施の形態における不揮発性メモリ３００に記憶されるデータ構成例を示す図である。不揮発性メモリ３００にアクセスするホストコンピュータ１００からのコマンドの単位は物理ページ単位である。この例では、物理ページが５１２バイト（４０９６ビット）であることを想定している。また、ＥＣＣ処理部２４０は、５１２バイトのデータに対して５２ビットのエラー訂正コードを生成する。したがって、物理ページの全体の長さは４１４８ビットになる。このエラー訂正コードは、５１２バイトのデータにおいて４ビットの訂正能力があることを想定している。
【００４６】
［アドレス変換テーブルの構成］
図５は、本技術の第１の実施の形態におけるアドレス変換テーブル２２１の一構成例を示す図である。このアドレス変換テーブル２２１では、論理ページの論理アドレスに関連付けて、それぞれデータフラグおよび物理ページアドレスが保持されている。
【００４７】
データフラグは、対応する論理アドレスに有効なデータが書き込まれているか否かを示すフラグである。このデータフラグは、有効なデータが書き込まれていれば「Ｔｒｕｅ」を示し、有効なデータが書き込まれていなければ「Ｆａｌｓｅ」を示す。データフラグが「Ｆａｌｓｅ」を示す場合には、物理ページアドレスには有効なアドレスは保持されない。
【００４８】
［履歴情報管理テーブル２２２の構成］
図６は、本技術の第１の実施の形態における履歴情報管理テーブル２２２の一構成例を示す図である。この履歴情報管理テーブル２２２は、不揮発性メモリ３００の状態およびライト処理の履歴情報を、不揮発性メモリ３００の物理ページアドレス毎に関連付けて保持する。
【００４９】
ここで、不揮発性メモリ３００の状態とは、物理ページの使用状態であり、「使用中」、「空き」、「未消去」の３つの値をとる。「使用中」は、該当する物理ページアドレスに有効なデータが書き込まれており、アドレス変換テーブル２２１によって管理されている物理ページアドレスであることを示す。「空き」は、該当する物理ページアドレスは消去動作が実行済みであり、プログラム動作が実行可能である物理ページアドレスであることを示す。「未消去」は、該当する物理ページアドレスに無効なデータが残っている状態であり、プログラム動作を実行する前に、消去動作の実行が必要である物理ページアドレスであることを示す。
【００５０】
ライト処理の履歴情報として、この第１の実施の形態では、プログラム動作および消去動作のそれぞれについて、検証における検出エラー数および検証実行回数を過去３回に遡って保持している。これらは、不揮発性メモリ３００からのステータスとして得られるものである。
【００５１】
［情報処理システムの動作］
図７は、本技術の第１の実施の形態における記憶制御部２００のライトコマンド処理手順の一例を示す流れ図である。ここでは、ホストコンピュータ１００から記憶制御部２００にライトコマンドが発行された際の、記憶制御部２００の動作を示している。このライトコマンドによって、記憶制御部２００は、先頭論理アドレス、データサイズ、および、ライトデータを受信する。このうち、ライトデータはＲＡＭ２２０に一時的に保持される。
【００５２】
プロセッサ２１０は、ライトコマンドにおいて実行するライト処理を、先頭論理アドレスおよびデータサイズに基づいて、論理ページ単位に分割する（ステップＳ９３１）。これにより、ライトコマンドにおいて実行するライト処理が全て完了するまで、以下の処理を論理ページ単位で繰返し実行する（ステップＳ９３２）。
【００５３】
論理ページ単位のライト処理において、プロセッサ２１０は、処理対象となる論理ページを決定する（ステップＳ９３３）。例えば、ステップＳ９３２において分割した論理ページで未処理のもののうち、最も小さい論理アドレスを有する論理ページを処理対象として決定する。
【００５４】
そして、プロセッサ２１０は、ステップＳ９３３で決定された処理対象の論理ページに対して、ＲＡＭ２２０に保持していた１ページ（５１２バイト）分のライトデータについて、不揮発性メモリ３００にライト処理を指示する（ステップＳ９４０）。このライト処理の詳細については後述する。
【００５５】
ライト処理が完了すると、プロセッサ２１０は、ライト処理の対象となったページに関する情報をアドレス変換テーブル２２１において更新する（ステップＳ９３５）。更新されるアドレス変換テーブル２２１の情報は、データフラグおよび物理ページアドレスである。データフラグは、更新前の値が「Ｆａｌｓｅ」である場合は、「Ｔｒｕｅ」に更新され、更新前の値が「Ｔｒｕｅ」である場合は、そのまま「Ｔｒｕｅ」が維持される。物理ページアドレスの値は、データをライトした物理ページアドレスに更新される。更新後、プロセッサ２１０は、アドレス変換テーブル２２１を不揮発性メモリ３００に記録する。
【００５６】
図８は、本技術の第１の実施の形態における記憶制御部２００の論理ページライト処理（ステップＳ９４０）の処理手順例を示す流れ図である。記憶制御部２００は、ステップＳ９３３において処理対象として決定された論理ページについて、不揮発性メモリ３００に対してライト処理を実行するよう指示する（ステップＳ９５０）。その際、プロセッサ２１０は、要求される条件に合う物理ページアドレスを不揮発性メモリ３００から検索して選択する。
【００５７】
そして、ライト処理の処理結果としてステータスが不揮発性メモリ３００から戻ってくると、プロセッサ２１０はそのステータスに基づいて履歴情報管理テーブル２２２を更新する（ステップＳ９４２）。
【００５８】
すなわち、履歴情報管理テーブル２２２において、プログラム動作を実行した物理ページアドレスの「プログラム」の「検出エラー数」および「検証実行回数」を、プログラム動作のステータスに含まれる検出エラー数および検証実行回数によって更新する。さらに、プログラム動作を実行した物理ページアドレスの「状態」は、プログラム動作が正常終了した場合は「使用中」に、異常終了した場合は「未消去」に更新する。
【００５９】
また、履歴情報管理テーブル２２２において、消去動作を実行した物理ページアドレスの「消去」の「検出エラー数」および「検証実行回数」を、消去動作のステータスに含まれる検出エラー数および検証実行回数によって更新する。さらに、消去動作を実行した物理ページアドレスの「状態」は、消去動作が正常終了した場合は「空き」に、異常終了した場合は「未消去」に更新する。
【００６０】
プロセッサ２１０は、履歴情報管理テーブル２２２を更新した後、その履歴情報管理テーブル２２２を不揮発性メモリ３００に記録する。
【００６１】
ステータスに含まれる検証結果が、検証成功を示していれば（ステップＳ９４３：Ｙｅｓ）、ライト処理が正常に終了したものとして論理ページのライト処理を終了する。一方、検証失敗を示している場合には（ステップＳ９４３：Ｎｏ）、ステップＳ９５０に戻って不揮発性メモリ３００に対してライト処理を実行するよう指示する。
【００６２】
図９は、本技術の実施の形態における記憶制御部２００のライト処理（ステップＳ９５０）の処理手順例を示す流れ図である。プロセッサ２１０は、ライトデータが、信頼性の高い物理ページに記録されることが要求されているかを判定する（ステップＳ９５１）。高い信頼性が要求されると判断された場合は（ステップＳ９５１：Ｙｅｓ）、高信頼性のデータライトが可能な物理ページを検索し、プログラム動作を実行する物理ページとして選択する（ステップＳ９５２）。
【００６３】
ここでは、履歴情報管理テーブル２２２を参照して、プログラム動作実行時の検証による検出エラー数が少ない物理ページを、信頼性が高い物理ページとみなして検索する。履歴情報として最近の実行結果を重視し、検索結果に影響が大きくなるように重み付けを行う。以下では、図６に示した例を用いて説明する。
【００６４】
プロセッサ２１０は、状態が「空き」であり、次式で計算される値Ｘ１が最も小さくなる物理ページを、物理ページアドレス「０ｘ００００００００」（「０ｘ」以下に続く数字は１６進数を表す。以下、これに同じ。）から順に検索する。
Ｘ１＝「１回前のプログラム動作時の検出エラー数」×３
＋「２回前のプログラム動作時の検出エラー数」×２
＋「３回前のプログラム動作時の検出エラー数」×１
状態が「空き」である物理ページアドレスが「ｋ＋１」、「ｋ＋２」、「ｋ＋３」のみである場合、プロセッサ２１０は「ｋ＋２」の物理ページアドレスを選択する。
【００６５】
なお、ＥＣＣ処理部２４０の誤り訂正能力は４ビットと仮定しているため、履歴情報管理テーブル２２２において「プログラム動作時の検出エラー数」が「４」以上を示す物理ページは、不良が発生した物理ページとみなして、検索の対象としない。以下のステップＳ９５５およびＳ９５７においても同様である。
【００６６】
プロセッサ２１０は、ステップＳ９５２において選択した物理ページに対してプログラム動作を行う（ステップＳ９５３）。ここでは、高信頼性を要求する場合のパラメータとして、検証動作時の許容エラー数を「０」と指定する。
【００６７】
ステップＳ９５１において、高い信頼性が要求されないと判断された場合は（ステップＳ９５１：Ｎｏ）、プロセッサ２１０は、ライトデータが、高速なデータライトが要求されているかを判定する（ステップＳ９５４）高速なデータライトが要求されると判断された場合は（ステップＳ９５４：Ｙｅｓ）、高速なデータライトが可能な物理ページを検索し、プログラム動作を実行する物理ページとして選択する（ステップＳ９５５）。
【００６８】
ここでは、履歴情報管理テーブル２２２を参照して、プログラム動作実行時の検証実行回数が少ない物理ページを、高速なデータライトが可能な物理ページとみなして検索する。履歴情報として最近の実行結果を重視し、検索結果に影響が大きくなるように重み付けを行う。以下では、図６に示した例を用いて説明する。
【００６９】
プロセッサ２１０は、状態が「空き」であり、次式で計算される値Ｘ２が最も小さくなる物理ページを、物理ページアドレス「０ｘ００００００００」から順に検索する。
Ｘ２＝「１回前のプログラム動作時の検証実行回数」×３
＋「２回前のプログラム動作時の検証実行回数」×２
＋「３回前のプログラム動作時の検証実行回数」×１
状態が「空き」である物理ページアドレスが「ｋ＋１」、「ｋ＋２」、「ｋ＋３」のみである場合、プロセッサ２１０は「ｋ＋１」の物理ページアドレスを選択する。
【００７０】
プロセッサ２１０は、ステップＳ９５５において選択した物理ページに対してプログラム動作を行う（ステップＳ９５６）。ここでは、高速性を要求する場合のパラメータとして、検証動作時の許容エラー数を「４」と指定する。検証動作時の許容エラー数が大きい値である方が、不揮発性メモリ３００で実行されるプログラム動作の処理が早く終わることが期待されるが、ＥＣＣ処理部２４０の誤り訂正能力は４ビットと仮定しているため、許容されるエラー数の最大値は「４」だからである。
【００７１】
ステップＳ９５４において、高速性が要求されないと判断された場合は（ステップＳ９５４：Ｎｏ）、プロセッサ２１０は、高信頼性および高速性の何れにも該当しない物理ページを検索する（ステップＳ９５７）。ここでは、プロセッサ２１０は、履歴情報管理テーブル２２２を参照して、ステップＳ９５２またはＳ９５５の検索においてヒットしにくい物理ページを検索する。
【００７２】
プロセッサ２１０は、状態が「空き」であり、「１回前のプログラム動作時の検出エラー数」が「３」である物理ページを、物理ページアドレス「０ｘ００００００００」から順に検索する。存在しない場合は、「２回前のプログラム動作時の検出エラー数」が「３」である物理ページ、「３回前のプログラム動作時の検出エラー数」が「３」である物理ページを順に検索する。それも存在しない場合には、「１回前のプログラム動作時の検出エラー数」が「２」である物理ページ、「２回前のプログラム動作時の検出エラー数」が「２」である物理ページ、「３回前のプログラム動作時の検出エラー数」が「２」である物理ページを順に検索する。図６に示した例では、物理ページアドレスが「ｋ＋３」の物理ページが選択される。
【００７３】
プロセッサ２１０は、ステップＳ９５７において選択した物理ページに対してプログラム動作を行う（ステップＳ９５８）。ここでは、高信頼性および高速性を要求しない場合のパラメータとして、ステップＳ９５７で検索した物理ページの「１回前のプログラム動作時の検出エラー数」をそのまま利用して、検証動作時の許容エラー数を「３」と指定する。
【００７４】
ステップＳ９５３、Ｓ９５６またはＳ９５８においてプログラム動作が実行されると、プロセッサ２１０はプログラム動作によってライトデータが無効となった物理ページに対して消去動作を実行する（ステップＳ９５９）。
【００７５】
この消去動作を実行する際に、プロセッサ２１０が指定する「許容される検出エラー数」は、消去動作の直前のプログラム動作に準じて、以下の条件で指定される。ステップＳ９５３のプログラム動作後の消去動作であれば、「許容される検出エラー数」は「０」が指定される。ステップＳ９５６のプログラム動作後の消去動作であれば、「許容される検出エラー数」は「４」が指定される。ステップＳ９５８のプログラム動作後の消去動作であれば、「許容される検出エラー数」は「０」が指定される。
【００７６】
この処理手順例では、高信頼性や高速性が要求される旨の判断を行っているが、これらは、ホストコンピュータ１００がライトコマンドを発行する際にそのパラメータとして指定することができる。また、その判断は、記憶制御部２００が独自に行ってもよい。例えば、ストレージシステムとしてＦＡＴ（File Allocation Table）方式が採用されている場合を想定する。ＦＡＴ方式では、ファイルアロケーションテーブルはファイルの位置情報を示すテーブルであり、データが破損するとファイルが読めなくなることがある。このファイルアロケーションテーブルは、特定の論理アドレス領域に対して書き込まれる。ホストコンピュータ１００がライトコマンドにおいて指定する論理アドレスがファイルアロケーションテーブルの論理アドレス領域であった場合、記憶制御部２００は、高信頼性が要求されるライトであるものとして処理を実行することができる。また、記憶制御部２００が扱うアドレス変換テーブル２２１や履歴情報管理テーブル２２２に対する書込みについて、高信頼性が要求されるものとして扱っても構わない。
【００７７】
図１０は、本技術の実施の形態における不揮発性メモリ３００のプログラム動作（ステップＳ９５３、Ｓ９５６およびＳ９５８）の処理手順例を示す流れ図である。不揮発性メモリ３００は記憶制御部２００からのプログラム動作の指示を制御インターフェース３０９において受信すると、プログラム動作を開始する。プログラム動作の開始時には、検証回数カウンタ３４０の保持する数は「０」に初期化されている。
【００７８】
許容エラー数レジスタ３７０には、制御インターフェース３０９においてパラメータとして受信された許容エラー数が保持される（ステップＳ９１１）。また、データバッファ３２０には、制御インターフェース３０９において受信されたライトデータが保持される（ステップＳ９１２）。
【００７９】
そして、制御インターフェース３０９において受信された物理アドレスが制御部３９０に転送されて、メモリアレイ３１０上の指定された物理アドレスに対して、データバッファ３２０に保持されているライトデータが書き込まれる（ステップＳ９１３）。ライトデータが確実に書き込まれたか否かを検証するために、その物理ページアドレスからデータが読み出され、検証部３３０において、データバッファに保持されているライトデータと比較される（ステップＳ９１４）。その結果、一致しないビットについては、その数が検出エラー数カウンタ３６０において計数される。また、検証回数カウンタ３４０の検証回数が１つ加算される。
【００８０】
検出エラー数カウンタ３６０において計数された検出エラー数と、許容エラー数レジスタ３７０に保持されている許容エラー数とが検証成否判定部３５０において比較され、検出エラー数が許容範囲内であるか否かが判断される（ステップＳ９１５）。その結果、検出エラー数が許容エラー数以下である場合には（ステップＳ９１５：Ｙｅｓ）、正常終了となる。この場合、検出エラー数カウンタ３６０において計数された検出エラー数と、検証回数カウンタ３４０に保持された検証回数とが記憶制御部２００にステータスとして転送される（ステップＳ９１６）。
【００８１】
ステップＳ９１５において検出エラー数が許容エラー数より大きいと判断された場合には、検証回数カウンタ３４０に保持された検証実行回数と不揮発性メモリ３００の製造時に予め定められている検証動作最大実行回数とが比較される（ステップＳ９１７）。その結果、検証実行回数が検証動作最大実行回数より小さい場合には、ステップＳ９１３以降の処理手順を繰り返す（ステップＳ９１７：Ｙｅｓ）。一方、検証実行回数が検証動作最大実行回数以上となった場合には（ステップＳ９１７：Ｎｏ）、異常終了となる。この場合、検出エラー数カウンタ３６０において計数された検出エラー数と、検証回数カウンタ３４０に保持された検証回数とが記憶制御部２００にステータスとして転送される（ステップＳ９１８）。
【００８２】
図１１は、本技術の実施の形態における不揮発性メモリ３００の消去動作（ステップＳ９５９）の処理手順例を示す流れ図である。不揮発性メモリ３００は記憶制御部２００からの消去動作の指示を制御インターフェース３０９において受信すると、消去動作を開始する。消去動作の開始時には、検証回数カウンタ３４０の保持する数は「０」に初期化されている。
【００８３】
許容エラー数レジスタ３７０には、制御インターフェース３０９においてパラメータとして受信された許容エラー数が保持される（ステップＳ９２１）。
【００８４】
そして、制御インターフェース３０９において受信された物理アドレスが制御部３９０に転送されて、メモリアレイ３１０上の指定された物理アドレスにおいて消去が行われる（ステップＳ９２３）。消去が確実に行われたか否かを検証するために、その物理ページアドレスからデータが読み出され、検証部３３０において、消去後のデータとして期待されるデータ（例えば、全ビット「１」）と比較される（ステップＳ９２４）。その結果、一致しないビットについては、その数が検出エラー数カウンタ３６０において計数される。また、検証回数カウンタ３４０の検証回数が１つ加算される。
【００８５】
検出エラー数カウンタ３６０において計数された検出エラー数と、許容エラー数レジスタ３７０に保持されている許容エラー数とが検証成否判定部３５０において比較され、検出エラー数が許容範囲内であるか否かが判断される（ステップＳ９２５）。その結果、検出エラー数が許容エラー数以下である場合には（ステップＳ９２５：Ｙｅｓ）、正常終了となる。この場合、検出エラー数カウンタ３６０において計数された検出エラー数と、検証回数カウンタ３４０に保持された検証回数とが記憶制御部２００にステータスとして転送される（ステップＳ９２６）。
【００８６】
ステップＳ９２５において検出エラー数が許容エラー数より大きいと判断された場合には、検証回数カウンタ３４０に保持された検証実行回数と不揮発性メモリ３００の製造時に予め定められている検証動作最大実行回数とが比較される（ステップＳ９２７）。その結果、検証実行回数が検証動作最大実行回数より小さい場合には、ステップＳ９２３以降の処理手順を繰り返す（ステップＳ９２７：Ｙｅｓ）。一方、検証実行回数が検証動作最大実行回数以上となった場合には（ステップＳ９２７：Ｎｏ）、異常終了となる。この場合、検出エラー数カウンタ３６０において計数された検出エラー数と、検証回数カウンタ３４０に保持された検証回数とが記憶制御部２００にステータスとして転送される（ステップＳ９２８）。
【００８７】
このように、本技術の第１の実施の形態によれば、プログラムおよび消去時の検証の履歴情報に基づいて、高信頼性や高速性などの条件に合致するように、ライト処理対象の物理ページを選択することができる。また、ライト処理のパラメータとして検証動作時の許容エラー数を指定する際、プログラムおよび消去時の検証の履歴情報を用いることができる。例えば、プログラム動作において高信頼性および高速性を要求しない場合のパラメータとして、「１回前のプログラム動作時の検出エラー数」を利用して、検証動作時の許容エラー数を指定することができる。
【００８８】
＜２．第２の実施の形態＞
［情報処理システムの構成］
図１２は、本技術の第２の実施の形態における情報処理システムの一構成例を示す図である。この第２の実施の形態の情報処理システムは、第１の実施の形態のものと異なり、２つの不揮発性メモリ３０１および３０２を備える。これに対応して、記憶制御部２００にも、それぞれＮＶＭインターフェース２０４および２０５が設けられている。
【００８９】
不揮発性メモリ３０１および３０２のそれぞれの構成は、図３において説明した第１の実施の形態の不揮発性メモリ３００と同様である。また、不揮発性メモリ３０１および３０２におけるそれぞれの動作も、図１０および１１により説明した処理手順と同様である。
【００９０】
［不揮発性メモリにおけるデータ構成］
図１３は、本技術の第２の実施の形態における不揮発性メモリ３０１および３０２に記憶されるデータ構成例を示す図である。上述のように、不揮発性メモリ３００にアクセスするホストコンピュータ１００からのコマンドの単位は物理ページ単位であり、この実施の形態においても、物理ページが５１２バイト（４０９６ビット）であることを想定している。
【００９１】
ただし、この実施の形態では、物理ページを２分割してそれぞれ不揮発性メモリ３０１および３０２に記憶する。すなわち、同図のａに示すように物理ページの前半の２０４８ビットが不揮発性メモリ３０１に記憶され、同図のｂに示すように物理ページの後半の２０４８ビットが不揮発性メモリ３０２に記憶される。５１２バイトのデータに対する５２ビットのエラー訂正コードは、不揮発性メモリ３０２のデータ（２５６バイト）に続く領域に記憶する。不揮発性メモリ３０１のデータに続く領域には、例えば全部「１」を示すビットが記憶される。なお、ここではエラー訂正コードを不揮発性メモリ３０２に記憶する例を示したが、反対に不揮発性メモリ３０１に記憶するようにしてもよい。
【００９２】
［アドレス変換テーブルの構成］
図１４は、本技術の第２の実施の形態におけるアドレス変換テーブル２２１の一構成例を示す図である。このアドレス変換テーブル２２１では、論理ページの論理アドレスに関連付けて、それぞれデータフラグ、第１物理ページアドレスおよび第２物理ページアドレスが保持されている。第１物理ページアドレスは不揮発性メモリ３０１における物理ページアドレスを示し、第２物理ページアドレスは不揮発性メモリ３０２における物理ページアドレスを示す。すなわち、物理ページの前半のデータが記憶される不揮発性メモリ３０１の物理アドレスが第１物理ページアドレスとして示され、物理ページの後半のデータが記憶される不揮発性メモリ３０２の物理アドレスが第２物理ページアドレスとして示される。
【００９３】
なお、データフラグについては第１の実施の形態と同様であり、対応する論理アドレスに有効なデータが不揮発性メモリ３０１および３０２に書き込まれているか否かを示す。
【００９４】
［履歴情報管理テーブル２２２の構成］
図１５および図１６は、本技術の第２の実施の形態における履歴情報管理テーブル２２２の一構成例を示す図である。第１の実施の形態では１つの不揮発性メモリ３００に対して履歴情報を保持したが、この第２の実施の形態では２つの不揮発性メモリ３０１および３０２に対してそれぞれ履歴情報を保持する。図１５では、不揮発性メモリ３０１における第１物理ページアドレス毎に関連付けて、不揮発性メモリ３０１の状態およびライト処理の履歴情報を保持している。図１６では、不揮発性メモリ３０２における第２物理ページアドレス毎に関連付けて、不揮発性メモリ３０２の状態およびライト処理の履歴情報を保持している。
【００９５】
履歴情報管理テーブル２２２に保持される不揮発性メモリ３０１または３０２の状態およびライト処理の履歴情報の項目は、第１の実施の形態において説明したものと同様である。
【００９６】
［情報処理システムの動作］
上述のように、この第２の実施の形態は、２つの不揮発性メモリ３０１および３０２を備える点で第１の実施の形態とは異なるが、それ以外の点では第１の実施の形態と同様である。したがって、第２の実施の形態における動作は、２つの不揮発性メモリ３０１および３０２に対する処理を行う点を除き、第１の実施の形態と同様である。すなわち、図７、図８、図１０および図１１の処理手順においては、第１の実施の形態の場合と同様である。
【００９７】
図１７は、本技術の第２の実施の形態における記憶制御部２００の論理ページライト処理（ステップＳ９４０）の処理手順例を示す流れ図である。記憶制御部２００は、ステップＳ９３３において処理対象として決定された論理ページについて、不揮発性メモリ３０１に対してライト処理を実行するよう指示する（ステップＳ９４４）。その際、プロセッサ２１０は、要求される条件に合う物理ページアドレスを不揮発性メモリ３０１から検索して選択する。
【００９８】
そして、ライト処理の処理結果としてステータスが不揮発性メモリ３０１から戻ってくると、プロセッサ２１０はそのステータスに基づいて履歴情報管理テーブル２２２を更新する（ステップＳ９４５）。更新処理の内容は上述の第１の実施の形態と同様である。
【００９９】
プロセッサ２１０は、履歴情報管理テーブル２２２を更新した後、その履歴情報管理テーブル２２２を不揮発性メモリ３００に記録する。
【０１００】
ステータスに含まれる検証結果が、検証成功を示していれば（ステップＳ９４６：Ｙｅｓ）、不揮発性メモリ３０１に対するライト処理が正常に終了したものとして、不揮発性メモリ３０２に対するライト処理に進む。一方、検証失敗を示している場合には（ステップＳ９４６：Ｎｏ）、ステップＳ９４４に戻って不揮発性メモリ３０１に対してライト処理を実行するよう指示する。
【０１０１】
不揮発性メモリ３０１に対するライト処理が正常に終了すると、記憶制御部２００は、ステップＳ９３３において処理対象として決定された論理ページについて、不揮発性メモリ３０２に対してライト処理を実行するよう指示する（ステップＳ９４７）。その際、プロセッサ２１０は、要求される条件に合う物理ページアドレスを不揮発性メモリ３０２から検索して選択する。
【０１０２】
そして、ライト処理の処理結果としてステータスが不揮発性メモリ３０２から戻ってくると、プロセッサ２１０はそのステータスに基づいて履歴情報管理テーブル２２２を更新する（ステップＳ９４８）。更新処理の内容は上述の第１の実施の形態と同様である。
【０１０３】
プロセッサ２１０は、履歴情報管理テーブル２２２を更新した後、その履歴情報管理テーブル２２２を不揮発性メモリ３００に記録する。
【０１０４】
ステータスに含まれる検証結果が、検証成功を示していれば（ステップＳ９４９：Ｙｅｓ）、ライト処理が正常に終了したものとして論理ページのライト処理を終了する。一方、検証失敗を示している場合には（ステップＳ９４９：Ｎｏ）、ステップＳ９４７に戻って不揮発性メモリ３０２に対してライト処理を実行するよう指示する。
【０１０５】
第１の実施の形態では図９において不揮発性メモリ３００の物理ページを選択したが、この第２の実施の形態では不揮発性メモリ３０１および３０２の両者について物理ページを選択する。
【０１０６】
図９のステップＳ９５２において、プロセッサ２１０は、履歴情報管理テーブル２２２を参照して、プログラム動作実行時の検証による検出エラー数が少ない物理ページを、信頼性が高い物理ページとみなして検索する。図１５に示した例では、不揮発性メモリ３０１について、状態が「空き」である物理ページアドレスが「ｋ＋１」、「ｋ＋２」、「ｋ＋３」のみである場合、プロセッサ２１０は「ｋ＋２」の物理ページアドレスを選択する。また、図１６に示した例では、不揮発性メモリ３０２について、状態が「空き」である物理ページアドレスが「ｊ」、「ｊ＋２」、「ｊ＋３」のみである場合、プロセッサ２１０は「ｊ＋２」の物理ページアドレスを選択する。
【０１０７】
図９のステップＳ９５５において、プロセッサ２１０は、履歴情報管理テーブル２２２を参照して、プログラム動作実行時の検証実行回数が少ない物理ページを、高速なデータライトが可能な物理ページとみなして検索する。図１５に示した例では、不揮発性メモリ３０１について、状態が「空き」である物理ページアドレスが「ｋ＋１」、「ｋ＋２」、「ｋ＋３」のみである場合、プロセッサ２１０は「ｋ＋１」の物理ページアドレスを選択する。また、図１６に示した例では、不揮発性メモリ３０２について、状態が「空き」である物理ページアドレスが「ｊ」、「ｊ＋２」、「ｊ＋３」のみである場合、プロセッサ２１０は「ｊ」の物理ページアドレスを選択する。
【０１０８】
図９のステップＳ９５７において、プロセッサ２１０は、履歴情報管理テーブル２２２を参照して、ステップＳ９５２またはＳ９５５の検索においてヒットしにくい物理ページを検索する。図１５に示した例では、不揮発性メモリ３０１について、物理ページアドレスが「ｋ＋３」の物理ページが選択される。また、プロセッサ２１０は、この物理ページと組み合わせて使う不揮発性メモリ３０２の物理ページとして、状態が「空き」であり、次式で計算される値Ｘ３を満たす「１回前のプログラム動作時の検出エラー数」となる物理ページを検索する。その際、物理ページアドレス「０ｘ００００００００」から順に検索される。検索してヒットしない場合には、値Ｘ３を１つずつ減算して、ヒットするまで検索する。
Ｘ３＝４−
（不揮発性メモリ３０１のページの）「１回前のプログラム動作時の検出エラー数」
上式における「４」は、ＥＣＣ処理部２４０の誤り訂正能力のビット数である。図１５に示した例では、不揮発性メモリ３０１について、物理ページアドレスが「ｋ＋３」の物理ページが選択されるため、値Ｘ３は「１」となる。そして、図１６に示した例では、物理ページアドレスが「ｊ」のエントリが「１」を示しているため、プロセッサ２１０は「ｊ」の物理ページアドレスを選択する。
【０１０９】
このように、本技術の第２の実施の形態によれば、物理ページを複数の不揮発性メモリ３０１および３０２に分散記憶することにより、より精細に最適な物理ページの選択を行うことができる。
【０１１０】
＜３．第３の実施の形態＞
上述の第１および第２の実施の形態では、検証による検出エラー数を利用してページを選択し、また、ライト処理のパラメータとして許容エラー数を指定していた。この第３の実施の形態では、不揮発性メモリとしてＲｅＲＡＭ（Resistance RAM）を想定し、セルに対してパルスを印加する際の電圧レベルを利用してページを選択し、また、ライト処理のパラメータとして電圧レベルを指定する例について説明する。
【０１１１】
ＲｅＲＡＭのメモリアレイにデータのライト処理を実行するとき、メモリセルに対してパルスを印加することによりメモリセルの抵抗値を変化させて、データを記録する。パルスを印加する際の手法として、データのライト処理と検証を繰り返すサイクルにおいて、検証でエラーとなったセルに対して、印加するパルスの電圧を段階的に高くするＤＳＩＰ（Direct Sense In Programming）が提案されている。このＤＳＩＰについては、例えば、「Wataru Otsuka, et al, "A 4Mb Conductive-Bridge Resistive Memory with 2.3GB/s Read-Throughput and 216MB/s Program-Throughput," ISSCC pp.20-21」（２０１１年２月）に開示されている。メモリセルの性質として、高い電圧をかけることによりセルの抵抗値を短時間で変化させることは可能であるが、メモリセルのデータ保持特性が悪くなることが知られている。ＤＳＩＰは、同一物理ページ内のセルにおける製造プロセスに起因するばらつきや、データの書き込み頻度によるばらつきを考慮し、メモリセルの保持特性を維持できるようにした手法である。すなわち、低い電圧で抵抗変化させることが可能なセルには低い電圧のパルスでデータを書き込み、高い電圧のパルスが必要なセルには高い電圧でデータを書き込むものである。
【０１１２】
情報処理システムとしての構成および記憶制御部２００の機能構成は第１または第２の実施の形態と同様であるため、説明を省略する。不揮発性メモリは第１の実施の形態のように１つでもよく、第２の実施の形態のように複数でもよい。以下では、第２の実施の形態と同様に、２つの不揮発性メモリ３０１および３０２を備えることを想定する。
【０１１３】
［不揮発性メモリの構成］
図１８は、本技術の第３の実施の形態における不揮発性メモリ３０１または３０２の一構成例を示す図である。この第３の実施の形態における不揮発性メモリ３０１または３０２は、第１または第２の実施の形態の不揮発性メモリにおける検出エラー数カウンタ３６０および許容エラー数レジスタ３７０を備えずに、新たに電圧レベルカウンタ３８０を備える。電圧レベルカウンタ３８０は、ＤＳＩＰによりパルスを印加する際の電圧レベルを保持するカウンタである。
【０１１４】
制御部３９０は、プログラム動作または消去動作の際には、指定された物理ページアドレスのセルに対して、ＤＳＩＰでパルスを印加する。ここでは、最大４回のパルスが印加されることを想定し、４回の印加されるパルスを、電圧の小さい順にレベル１からレベル４とする。記憶制御部２００はプログラム動作または消去動作を実行する際のパラメータとして、レベル１からレベル４の何れかを指定することができる。制御部３９０は、パラメータとして指定された電圧レベルを電圧レベルカウンタ３８０に保持する。制御部３９０は電圧レベルカウンタ３８０に保持された電圧レベルを開始レベルとして、ＤＳＩＰによってパルスを印加してプログラム動作または消去動作を実行する。
【０１１５】
［不揮発性メモリにおけるデータ構成］
本技術の第３の実施の形態における不揮発性メモリ３０１および３０２に記憶されるデータ構成は、図１３により説明した第２の実施の形態におけるデータ構成と同様である。
【０１１６】
［アドレス変換テーブルの構成］
本技術の第３の実施の形態におけるアドレス変換テーブル２２１の構成は、図１４により説明した第２の実施の形態におけるアドレス変換テーブル２２１と同様である。
【０１１７】
［履歴情報管理テーブル２２２の構成］
図１９および図２０は、本技術の第３の実施の形態における履歴情報管理テーブル２２２の一構成例を示す図である。図１９では、不揮発性メモリ３０１における第１物理ページアドレス毎に関連付けて、不揮発性メモリ３０１の状態およびライト処理の履歴情報を保持している。図２０では、不揮発性メモリ３０２における第２物理ページアドレス毎に関連付けて、不揮発性メモリ３０２の状態およびライト処理の履歴情報を保持している。
【０１１８】
上述の第１および第２の実施の形態では、ライト処理の履歴情報として、検証における検出エラー数および検証実行回数を保持していたが、この第３の実施の形態では、印加パルス電圧の開始レベルおよび検証実行回数を保持する。履歴情報のうち、検証実行回数は、不揮発性メモリ３０１または３０２からのステータスとして得られるものである。一方、印加パルス電圧の開始レベルは、不揮発性メモリ３０１または３０２に対するパラメータとして指定したものである。
【０１１９】
［情報処理システムの動作］
本技術の第３の実施の形態における情報処理システムの動作は、基本的には上述の第１または第２の実施の形態のものと同様である。すなわち、記憶制御部２００のライトコマンド処理手順は、図７により説明したものと同様である。
【０１２０】
また、記憶制御部２００の論理ページライト処理手順は、図１７により説明したものと同様である。ただし、ステップＳ９４５において履歴情報管理テーブル２２２を更新する際、「プログラム」の「開始レベル」を、プログラム動作を実行したときにパラメータとして指定した開始レベルの値に更新する。同様に、「消去」の「開始レベル」を、消去動作を実行したときにパラメータとして指定した開始レベルの値に更新する。また、ステップＳ９４８において履歴情報管理テーブル２２２を更新する際も同様の動作を行う。
【０１２１】
また、記憶制御部２００のライト処理手順は、図９により説明したものと同様である。ただし、ステップＳ９５２において高信頼性のデータライトが可能な物理ページを検索する際には、プログラム動作時の開始レベルが小さい値で、かつ、検証実行回数が少ない物理ページを、信頼性が高い物理ページと見なして検索をする。履歴情報として最近の実行結果を重視し、検索結果に影響が大きくなるように重み付けを行う。以下では、図１９および図２０に示した例を用いて説明する。
【０１２２】
プロセッサ２１０は、状態が「空き」であり、次式で計算される値Ｘ４が最も小さくなる物理ページを、物理ページアドレス「０ｘ００００００００」から順に検索する。
Ｘ４＝（「１回前のプログラム動作時の検証実行回数」
＋「１回前のプログラム動作時の開始レベル」）×３
＋（「２回前のプログラム動作時の検証実行回数」
＋「２回前のプログラム動作時の開始レベル」）×２
＋（「３回前のプログラム動作時の検証実行回数」
＋「３回前のプログラム動作時の開始レベル」）×１
図１９に示した例では、不揮発性メモリ３０１について、状態が「空き」である物理ページアドレスが「ｋ＋１」、「ｋ＋２」、「ｋ＋３」のみである場合、プロセッサ２１０は「ｋ＋２」の物理ページアドレスを選択する。また、図２０に示した例では、不揮発性メモリ３０２について、状態が「空き」である物理ページアドレスが「ｊ」、「ｊ＋２」、「ｊ＋３」のみである場合、プロセッサ２１０は「ｊ＋２」の物理ページアドレスを選択する。
【０１２３】
また、ステップＳ９５３において高信頼性のデータライト動作を実行する際、パラメータとして、開始レベル「１」を指定する。
【０１２４】
また、ステップＳ９５５において高速なデータライトが可能な物理ページを検索する際には、プログラム動作実行時の検証実行回数が少ない物理ページを、高速なデータライトが可能な物理ページとみなして検索する。履歴情報として最近の実行結果を重視し、検索結果に影響が大きくなるように重み付けを行う。プロセッサ２１０は、状態が「空き」であり、上述の値Ｘ２が最も小さくなる物理ページを、物理ページアドレス「０ｘ００００００００」から順に検索する。図１９に示した例では、不揮発性メモリ３０１について、状態が「空き」である物理ページアドレスが「ｋ＋１」、「ｋ＋２」、「ｋ＋３」のみである場合、プロセッサ２１０は「ｋ＋１」の物理ページアドレスを選択する。また、図２０に示した例では、不揮発性メモリ３０２について、状態が「空き」である物理ページアドレスが「ｊ」、「ｊ＋２」、「ｊ＋３」のみである場合、プロセッサ２１０は「ｊ」の物理ページアドレスを選択する。
【０１２５】
また、ステップＳ９５６において高速性のデータライト動作を実行する際、パラメータとして、次式で計算される値Ｘ５を開始レベルとして指定する。この値Ｘ５は、１回前の実行結果に基づいて検証実行回数が１回で終了することが期待される開始レベルを示している。
Ｘ５＝「１回前のプログラム動作時の検証実行回数」
＋「１回前のプログラム動作時の開始レベル」−１
【０１２６】
また、ステップＳ９５７では、ステップＳ９５２またはＳ９５５の検索においてヒットしにくい物理ページを検索する。プロセッサ２１０は、履歴情報管理テーブル２２２を検索して、状態が「空き」であり、「１回前のプログラム動作時の検証実行回数」が「４」である物理ページを、物理ページアドレス「０ｘ００００００００」から順に検索する。存在しない場合は、「２回前のプログラム動作時の検証実行回数」が「４」である物理ページ、「３回前のプログラム動作時の検証実行回数」が「４」である物理ページを順に検索する。それも存在しない場合には、「１回前のプログラム動作時の検証実行回数」が「３」である物理ページ、「２回前のプログラム動作時の検証実行回数」が「３」である物理ページ、「３回前のプログラム動作時の検証実行回数」が「３」である物理ページを順に検索する。図１９に示した例では、不揮発性メモリ３０１について、物理ページアドレスが「ｋ＋３」の物理ページが選択される。また、図２０に示した例では、不揮発性メモリ３０２について、状態が「空き」である物理ページアドレスが「ｊ」、「ｊ＋２」、「ｊ＋３」のみである場合、プロセッサ２１０は「ｊ＋２」の物理ページアドレスを選択する。
【０１２７】
また、ステップＳ９５８においてデータライト動作を実行する際、高信頼性または高速性を要求しない場合のパラメータとして、開始レベル「１」を指定する。
【０１２８】
また、ステップＳ９５９において消去動作を実行する際、プロセッサ２１０が指定する「開始レベル」は、消去動作の直前のプログラム動作に準じて、以下の条件で指定される。ステップＳ９５３のプログラム動作後の消去動作であれば、「開始レベル」は「１」が指定される。ステップＳ９５６のプログラム動作後の消去動作であれば、次式で計算される値Ｘ６を開始レベルとして指定する。この値Ｘ６は、消去動作後の検証実行回数が短時間で終了することが期待される開始レベルを示している。
Ｘ６＝「１回前の消去動作時の検証実行回数」
＋「１回前の消去動作時の開始レベル」−１
ステップＳ９５８のプログラム動作後の消去動作であれば、「開始レベル」は「１」が指定される。
【０１２９】
図２１は、本技術の第３の実施の形態における不揮発性メモリ３００のプログラム動作（ステップＳ９５３、Ｓ９５６およびＳ９５８）の処理手順例を示す流れ図である。不揮発性メモリ３００は記憶制御部２００からのプログラム動作の指示を制御インターフェース３０９において受信すると、プログラム動作を開始する。プログラム動作の開始時には、検証回数カウンタ３４０の保持する数は「０」に初期化されている。
【０１３０】
データバッファ３２０には、制御インターフェース３０９において受信されたライトデータが保持される（ステップＳ９６１）。また、電圧レベルカウンタ３８０には、制御インターフェース３０９においてパラメータとして受信された印加パルス電圧の開始レベルが保持される（ステップＳ９６２）。
【０１３１】
そして、制御インターフェース３０９において受信された物理アドレスが制御部３９０に転送されて、メモリアレイ３１０上の指定された物理アドレスに対して、電圧レベルカウンタ３８０に保持された開始レベルのパルスが印加される。これにより、データバッファ３２０に保持されているライトデータが書き込まれる（ステップＳ９６３）。ライトデータが確実に書き込まれたか否かを検証するために、その物理ページアドレスからデータが読み出され、検証部３３０において、データバッファに保持されているライトデータと比較される（ステップＳ９６４）。また、検証回数カウンタ３４０の検証回数が１つ加算される。
【０１３２】
検証成否判定部３５０において、検証部３３０の検証結果が判定され、検出エラーがない場合には（ステップＳ９６５：Ｎｏ）、正常終了となる。この場合、検証回数カウンタ３４０に保持された検証回数が記憶制御部２００にステータスとして転送される（ステップＳ９６６）。
【０１３３】
ステップＳ９６５において検出エラーがあると判断された場合には、その際に印加された電圧レベルが最上レベルの「４」であるか否かが判断される（ステップＳ９６７）。その結果、印加された電圧レベルが最上レベルでない場合には（ステップＳ９６７：Ｎｏ）、電圧レベルカウンタ３８０のレベルを１段階高く設定して（ステップＳ９６９）、ステップＳ９６３以降の処理手順を繰り返す。一方、印加された電圧レベルが最上レベルである場合には（ステップＳ９６７：Ｙｅｓ）、異常終了となる。この場合、検証回数カウンタ３４０に保持された検証回数が記憶制御部２００にステータスとして転送される（ステップＳ９６８）。
【０１３４】
図２２は、本技術の第３の実施の形態における不揮発性メモリ３００の消去動作（ステップＳ９５９）の処理手順例を示す流れ図である。不揮発性メモリ３００は記憶制御部２００からの消去動作の指示を制御インターフェース３０９において受信すると、消去動作を開始する。消去動作の開始時には、検証回数カウンタ３４０の保持する数は「０」に初期化されている。
【０１３５】
電圧レベルカウンタ３８０には、制御インターフェース３０９においてパラメータとして受信された印加パルス電圧の開始レベルが保持される（ステップＳ９７２）。
【０１３６】
そして、制御インターフェース３０９において受信された物理アドレスが制御部３９０に転送されて、メモリアレイ３１０上の指定された物理アドレスに対して、電圧レベルカウンタ３８０に保持された開始レベルのパルスが印加される（ステップＳ９７３）。これにより、消去動作が行われる。消去動作が確実に書き込まれたか否かを検証するために、その物理ページアドレスからデータが読み出され、検証部３３０において、消去後のデータとして期待されるデータ（例えば、全ビット「１」）と比較される（ステップＳ９７４）。また、検証回数カウンタ３４０の検証回数が１つ加算される。
【０１３７】
検証成否判定部３５０において、検証部３３０の検証結果が判定され、検出エラーがない場合には（ステップＳ９７５：Ｎｏ）、正常終了となる。この場合、検証回数カウンタ３４０に保持された検証回数が記憶制御部２００にステータスとして転送される（ステップＳ９７６）。
【０１３８】
ステップＳ９７５において検出エラーがあると判断された場合には、その際に印加された電圧レベルが最上レベルの「４」であるか否かが判断される（ステップＳ９７７）。その結果、印加された電圧レベルが最上レベルでない場合には（ステップＳ９７７：Ｎｏ）、電圧レベルカウンタ３８０のレベルを１段階高く設定して（ステップＳ９７９）、ステップＳ９７３以降の処理手順を繰り返す。一方、印加された電圧レベルが最上レベルである場合には（ステップＳ９７７：Ｙｅｓ）、異常終了となる。この場合、検証回数カウンタ３４０に保持された検証回数が記憶制御部２００にステータスとして転送される（ステップＳ９７８）。
【０１３９】
このように、本技術の第３の実施の形態によれば、ＲｅＲＡＭの印加電圧の開始レベルを含む履歴情報に基づいて、高信頼性や高速性などの条件に合致するように、ライト処理対象の物理ページを選択することができる。また、ライト処理のパラメータとして印加電圧の開始レベルを指定する際、プログラムおよび消去時の検証の履歴情報を用いることができる。例えば、プログラム動作において高速性を要求する場合のパラメータとして、消去動作後の検証実行回数が短時間で終了することが期待される開始レベルを指定することができる。
【０１４０】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１４１】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【０１４２】
なお、本技術は以下のような構成もとることができる。
（１）メモリにおけるライト後の検証の実行回数を含むステータスを前記メモリから取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と
を具備する記憶制御装置。
（２）前記領域選択部は、前記条件として高速性が要求されている場合には前記履歴情報における前記検証の実行回数に基づいて領域を選択する
前記（１）に記載の記憶制御装置。
（３）前記領域選択部は、前記条件として高速性が要求されている場合には前記履歴情報において前記検証の実行回数がより少ない領域を選択する
前記（１）または（２）に記載の記憶制御装置。
（４）前記ステータス取得部は、前記ステータスとして前記検証において検出されたエラー数を受け取り、
前記領域選択部は、前記条件として高信頼性が要求されている場合には前記履歴情報における前記検出されたエラー数に基づいて領域を選択する
前記（１）から（３）のいずれかに記載の記憶制御装置。
（５）前記領域選択部は、前記条件として高信頼性が要求されている場合には前記履歴情報において前記検出されたエラー数がより少ない領域を選択する
前記（４）に記載の記憶制御装置。
（６）前記メモリに対して新たなライトを行う際には前記履歴情報に従ってパラメータを指定するパラメータ指定部をさらに具備する前記（１）から（５）のいずれかに記載の記憶制御装置。
（７）前記パラメータ指定部は、ライト後の検証において許容されるエラー数を前記パラメータとして指定する
前記（６）に記載の記憶制御装置。
（８）前記ステータス取得部は、前記ステータスとして前記検証において検出されたエラー数を受け取り、
前記パラメータ指定部は、前記履歴情報に含まれる前記検出されたエラー数に従って前記許容されるエラー数を前記パラメータとして指定する
前記（７）に記載の記憶制御装置。
（９）前記パラメータ指定部は、ライトの際に前記メモリにおいて印加すべきパルスの電圧レベルの初期値を前記パラメータとして指定する
前記（６）に記載の記憶制御装置。
（１０）前記履歴情報保持部は、前記パラメータとして指定した電圧レベルの初期値を前記履歴情報として保持し、
前記パラメータ指定部は、前記履歴情報に含まれる前記電圧レベルの初期値に従って新たなライトの際に前記メモリにおいて印加すべきパルスの電圧レベルの初期値を前記パラメータとして指定する
前記（９）に記載の記憶制御装置。
（１１）メモリアレイと、
前記メモリアレイにおけるライト後の検証を実行する検証部と、
前記検証の実行回数を計数する検証回数カウンタと、
前記検証の実行回数を含むステータスを取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリアレイの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリアレイにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と
を具備する記憶装置。
（１２）前記検証において検出されたエラー数を計数する検出エラー数カウンタをさらに具備し、
前記ステータス取得部は、前記ステータスとして前記検出されたエラー数を受け取り、
前記領域選択部は、前記条件として高信頼性が要求されている場合には前記履歴情報において前記検出されたエラー数がより少ない領域を選択する
前記（１１）に記載の記憶装置。
（１３）メモリアレイと、
前記メモリアレイにおけるライト後の検証を実行する検証部と、
前記検証の実行回数を計数する検証回数カウンタと、
前記検証の実行回数を含むステータスを取得するステータス取得部と、
前記ステータスの履歴を履歴情報として前記メモリアレイの所定の領域毎に関連付けて保持する履歴情報保持部と、
前記メモリアレイにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択部と、
前記メモリアレイに対するライトコマンドを発行するホストコンピュータと
を具備する情報処理システム。
（１４）メモリにおけるライト後の検証の実行回数を含むステータスを前記メモリから取得するステータス取得手順と、
前記ステータスの履歴を履歴情報として前記メモリの所定の領域毎に関連付けて履歴情報保持に保持させる履歴情報保持手順と、
前記メモリにおいて新たな領域を使用する際には前記履歴情報に従って条件に合致した領域を選択する領域選択手順と
を具備する記憶制御方法。
【符号の説明】
【０１４３】
１００  ホストコンピュータ
２００  記憶制御部
２０１  ホストインターフェース
２０３〜２０５  ＮＶＭインターフェース
２１０  プロセッサ
２１１  ステータス取得部
２１２  ページ選択部
２１３  パラメータ指定部
２２０  ＲＡＭ
２２１  アドレス変換テーブル
２２２  履歴情報管理テーブル
２３０  ＲＯＭ
２４０  ＥＣＣ処理部
３００〜３０２  不揮発性メモリ（ＮＶＭ）
３０９  制御インターフェース
３１０  メモリアレイ
３２０  データバッファ
３３０  検証部
３４０  検証回数カウンタ
３５０  検証成否判定部
３６０  検出エラー数カウンタ
３７０  許容エラー数レジスタ
３８０  電圧レベルカウンタ
３９０  制御部
【図１】
0005929456.tif 000002
【図２】
0005929456.tif 000003
【図３】
0005929456.tif 000004
【図４】
0005929456.tif 000005
【図５】
0005929456.tif 000006
【図６】
0005929456.tif 000007
【図７】
0005929456.tif 000008
【図８】
0005929456.tif 000009
【図９】
0005929456.tif 000010
【図１０】
0005929456.tif 000011
【図１１】
0005929456.tif 000012
【図１２】
0005929456.tif 000013
【図１３】
0005929456.tif 000014
【図１４】
0005929456.tif 000015
【図１５】
0005929456.tif 000016
【図１６】
0005929456.tif 000017
【図１７】
0005929456.tif 000018
【図１８】
0005929456.tif 000019
【図１９】
0005929456.tif 000020
【図２０】
0005929456.tif 000021
【図２１】
0005929456.tif 000022
【図２２】
0005929456.tif 000023