(57)【要約】  メモリライトエラーの発生に対するリトライ処理による遅延を抑制する。  部分領域コマンド保持部は、ホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する。部分領域アドレス変換部は、部分領域コマンドについてアクセス対象部分領域のアドレスをメモリのアドレスに変換する。部分領域コマンド実行部は、アドレス変換された部分領域コマンドを実行してメモリにアクセスする。アドレス変換管理部は、部分領域コマンドについてメモリにおいてライトエラーが生じた場合にライトエラーを生じた部分領域コマンドのための代替領域の準備処理を、部分領域コマンド実行部における他の部分領域コマンドの実行と並行して行う。
2018051647.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータからメモリにアクセスするために発行されたホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する部分領域コマンド保持部と、
前記部分領域コマンド保持部に保持された前記部分領域コマンドについてアクセス対象部分領域のアドレスを前記メモリのアドレスに変換する部分領域アドレス変換部と、
前記アドレス変換された部分領域コマンドを実行して前記メモリにアクセスを行う部分領域コマンド実行部と、
前記部分領域コマンドについて前記メモリにおいてライトエラーが生じた場合に前記ライトエラーを生じた前記部分領域コマンドのための代替領域の準備処理を前記部分領域コマンド実行部における他の部分領域コマンドの実行と並行して行うアドレス変換管理部と
を具備するメモリコントローラ。
【請求項２】
前記部分領域コマンド保持部に保持された前記部分領域コマンドを前記部分領域コマンド実行部に送信する部分領域コマンド送信部をさらに具備し、
前記部分領域コマンド保持部は、前記部分領域コマンドについて実行が完了するまでの状態を示す状態情報を保持し、
前記部分領域コマンド送信部は、前記状態情報に従って前記部分領域コマンドを前記部分領域コマンド実行部に送信する
請求項１記載のメモリコントローラ。
【請求項３】
前記部分領域コマンド保持部に保持された前記部分領域コマンドについて実行完了までの部分領域数を計数する部分領域カウンタと、
前記ホストコマンドに関する全ての部分領域の前記部分領域コマンドが前記部分領域カウンタによって計数されると前記ホストコンピュータに前記ホストコマンドの完了を送信するホストコマンド完了送信部と
をさらに具備する請求項１記載のメモリコントローラ。
【請求項４】
前記部分領域コマンド保持部に保持された前記部分領域コマンドについてエラーの発生状態を保持する部分領域エラー保持部をさらに具備し、
前記ホストコマンド完了送信部は、前記部分領域エラー保持部に保持されたエラーの発生状態を前記ホストコンピュータに送信する
請求項３記載のメモリコントローラ。
【請求項５】
前記部分領域コマンド保持部は、前記ホストコマンドを識別するホストコマンド識別子をさらに保持し、
前記部分領域カウンタは、前記ホストコマンド識別子ごとに部分領域数を計数し、
前記ホストコマンド完了送信部は、前記ホストコマンド識別子ごとに前記ホストコンピュータに前記ホストコマンドの完了を送信する
請求項３記載のメモリコントローラ。
【請求項６】
前記ホストコンピュータにおける前記メモリの論理アドレスと前記メモリにおける物理アドレスとの対応関係を保持するアドレス変換テーブルをさらに具備し、
前記部分領域アドレス変換部は、前記アドレス変換テーブルに従って前記部分領域コマンドのアドレスを前記論理アドレスから前記物理アドレスに変換する
請求項１記載のメモリコントローラ。
【請求項７】
前記メモリにおける代替領域の使用状態を保持する代替領域管理テーブルをさらに具備し、
前記アドレス変換管理部は、前記代替領域管理テーブルに従って未使用の代替領域のアドレスを前記アドレス変換テーブルにおける前記物理アドレスとして登録する
請求項６記載のメモリコントローラ。
【請求項８】
メモリと、
ホストコンピュータから前記メモリにアクセスするために発行されたホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する部分領域コマンド保持部と、
前記部分領域コマンド保持部に保持された前記部分領域コマンドについてアクセス対象部分領域のアドレスを前記メモリのアドレスに変換する部分領域アドレス変換部と、
前記アドレス変換された部分領域コマンドを実行して前記メモリにアクセスを行う部分領域コマンド実行部と、
前記部分領域コマンドについて前記メモリにおいてライトエラーが生じた場合に前記ライトエラーを生じた前記部分領域コマンドのための代替領域の準備処理を前記部分領域コマンド実行部における他の部分領域コマンドの実行と並行して行うアドレス変換管理部と
を具備するメモリシステム。
【請求項９】
メモリと、
前記メモリにアクセスするためのホストコマンドを発行するホストコンピュータと、
前記ホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する部分領域コマンド保持部と、
前記部分領域コマンド保持部に保持された前記部分領域コマンドについてアクセス対象部分領域のアドレスを前記メモリのアドレスに変換する部分領域アドレス変換部と、
前記アドレス変換された部分領域コマンドを実行して前記メモリにアクセスを行う部分領域コマンド実行部と、
前記部分領域コマンドについて前記メモリにおいてライトエラーが生じた場合に前記ライトエラーを生じた前記部分領域コマンドのための代替領域の準備処理を前記部分領域コマンド実行部における他の部分領域コマンドの実行と並行して行うアドレス変換管理部と
を具備する情報システム。
【請求項１０】
ホストコンピュータからメモリにアクセスするために発行されたホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する部分領域コマンド保持部に保持された前記部分領域コマンドについてアクセス対象部分領域のアドレスを前記メモリのアドレスに変換する部分領域アドレス変換手順と、
前記アドレス変換された部分領域コマンドを実行して前記メモリにアクセスを行う部分領域コマンド実行手順と、
前記部分領域コマンドについて前記メモリにおいてライトエラーが生じた場合に前記ライトエラーを生じた部分領域コマンドのための代替領域の準備処理を前記部分領域コマンド実行手順における他の部分領域コマンドの実行と並行して行うアドレス変換管理手順と
を具備するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリを制御するためのメモリコントローラに関する。詳しくは、ライトエラー時にメモリ領域の代替処理を行うメモリコントローラ、メモリシステム、情報システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
【背景技術】
【０００２】
従来、ＮＡＮＤ型フラッシュメモリなどの不揮発性メモリにおいては、所定のブロックを単位として管理され、ライトエラーが発生した場合には異なるブロックに対してリトライ処理を行うように構成されている。例えば、ライトエラーが発生したブロックについてブロック使用管理テーブルを更新し、または、エラー管理テーブルに登録することにより、不良ブロックを管理するメモリカードが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３２８８２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、ライトエラーの発生のたびにテーブルの更新や、代替ブロックの選択およびリトライが行われる。そのため、それら一連の処理が完了するまでに他のアクセスが遅延されてしまうという問題がある。【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、メモリライトエラーの発生に対するリトライ処理による遅延を抑制することを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、ホストコンピュータからメモリにアクセスするために発行されたホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する部分領域コマンド保持部と、上記部分領域コマンド保持部に保持された上記部分領域コマンドについてアクセス対象部分領域のアドレスを上記メモリのアドレスに変換する部分領域アドレス変換部と、上記アドレス変換された部分領域コマンドを実行して上記メモリにアクセスを行う部分領域コマンド実行部と、上記部分領域コマンドについて上記メモリにおいてライトエラーが生じた場合に上記ライトエラーを生じた上記部分領域コマンドのための代替領域の準備処理を上記部分領域コマンド実行部における他の部分領域コマンドの実行と並行して行うアドレス変換管理部とを具備するメモリコントローラ、メモリシステム、情報処理システム、および、そのメモリ制御方法である。これにより、メモリにおいてライトエラーが生じた場合にライトエラーを生じた部分領域コマンドのための代替領域の準備処理を、他の部分領域コマンドと並行して実行させるという作用をもたらす。【０００７】
また、この第１の側面において、上記部分領域コマンド保持部に保持された上記部分領域コマンドを上記部分領域コマンド実行部に送信する部分領域コマンド送信部をさらに具備し、上記部分領域コマンド保持部は、上記部分領域コマンドについて実行が完了するまでの状態を示す状態情報を保持し、上記部分領域コマンド送信部は、上記状態情報に従って上記部分領域コマンドを上記部分領域コマンド実行部に送信するようにしてもよい。これにより、状態情報に従って部分領域コマンドを実行させるという作用をもたらす。【０００８】
また、この第１の側面において、上記部分領域コマンド保持部に保持された上記部分領域コマンドについて実行完了までの部分領域数を計数する部分領域カウンタと、上記ホストコマンドに関する全ての部分領域の上記部分領域コマンドが上記部分領域カウンタによって計数されると上記ホストコンピュータに上記ホストコマンドの完了を送信するホストコマンド完了送信部とをさらに具備してもよい。これにより、ホストコマンドに関する全ての部分領域の上記部分領域コマンドが実行を完了すると、ホストコマンドの完了が通知されるという作用をもたらす。【０００９】
また、この第１の側面において、上記部分領域コマンド保持部に保持された上記部分領域コマンドについてエラーの発生状態を保持する部分領域エラー保持部をさらに具備し、上記ホストコマンド完了送信部は、上記部分領域エラー保持部に保持されたエラーの発生状態を上記ホストコンピュータに送信するようにしてもよい。これにより、エラーの発生状態が通知されるという作用をもたらす。【００１０】
また、この第１の側面において、上記部分領域コマンド保持部は、上記ホストコマンドを識別するホストコマンド識別子をさらに保持し、上記部分領域カウンタは、上記ホストコマンド識別子ごとに部分領域数を計数し、上記ホストコマンド完了送信部は、上記ホストコマンド識別子ごとに上記ホストコンピュータに上記ホストコマンドの完了を送信するようにしてもよい。これにより、複数のホストコマンドが混在していても、それぞれのホストコマンドの完了が送信されるという作用をもたらす。【００１１】
また、この第１の側面において、上記ホストコンピュータにおける上記メモリの論理アドレスと上記メモリにおける物理アドレスとの対応関係を保持するアドレス変換テーブルをさらに具備し、上記部分領域アドレス変換部は、上記アドレス変換テーブルに従って上記部分領域コマンドのアドレスを上記論理アドレスから上記物理アドレスに変換するようにしてもよい。これにより、アドレス変換テーブルに従ってアドレス変換を実行させるという作用をもたらす。【００１２】
また、この第１の側面において、上記メモリにおける代替領域の使用状態を保持する代替領域管理テーブルをさらに具備し、上記アドレス変換管理部は、上記代替領域管理テーブルに従って未使用の代替領域のアドレスを上記アドレス変換テーブルにおける上記物理アドレスとして登録するようにしてもよい。これにより、代替領域管理テーブルに従って新たな代替領域を用意するという作用をもたらす。
【発明の効果】
【００１３】
本技術によれば、メモリライトエラーの発生に対するリトライ処理による遅延を抑制することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１４】
【図１】図１は、本技術の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態におけるメモリコントローラ２００の一構成例を示す図である。
【図３】本技術の第１の実施の形態におけるホストコンピュータ１００から発行されるホストコマンドのフィールド構成例を示す図である。
【図４】本技術の実施の形態におけるホストコマンド変換部２１０の一構成例を示す図である。
【図５】本技術の第１の実施の形態におけるページコマンドキュー２６０の一構成例を示す図である。
【図６】本技術の実施の形態における状態情報２６３によって示される状態の一例を示す図である。
【図７】本技術の実施の形態における状態情報２６３によって示される状態の遷移例を示す図である。
【図８】本技術の実施の形態における代替ページアドレス変換部２２０の一構成例を示す図である。
【図９】本技術の実施の形態における代替アドレス変換テーブル２２２の一構成例を示す図である。
【図１０】本技術の実施の形態における代替ページ管理テーブル２２４の一構成例を示す図である。
【図１１】本技術の第１の実施の形態のホストコマンド受信部２１１における処理手順の一例を示す流れ図である。
【図１２】本技術の実施の形態のページコマンド送信部２１２における処理手順の一例を示す流れ図である。
【図１３】本技術の実施の形態のページコマンド完了受信部２１４における処理手順の一例を示す流れ図である。
【図１４】本技術の第１の実施の形態のホストコマンド完了送信部２１５における処理手順の一例を示す流れ図である。
【図１５】本技術の実施の形態のページアドレス変換部２２１における処理手順の一例を示す流れ図である。
【図１６】本技術の実施の形態の代替アドレス変換テーブル管理部２２３における処理手順の一例を示す流れ図である。
【図１７】本技術の実施の形態のページコマンド実行部２３０における処理手順の一例を示す流れ図である。
【図１８】本技術の第１の実施の形態の情報処理システムにおける処理タイミングの例を示す図である。
【図１９】本技術の第２の実施の形態におけるホストコンピュータ１００から発行されるホストコマンドのフィールド構成例を示す図である。
【図２０】本技術の第２の実施の形態におけるページコマンドキュー２６０の一構成例を示す図である。
【図２１】本技術の第２の実施の形態のホストコマンド受信部２１１における処理手順の一例を示す流れ図である。
【図２２】本技術の第２の実施の形態のホストコマンド完了送信部２１５における処理手順の一例を示す流れ図である。
【図２３】本技術の第２の実施の形態の情報処理システムにおける処理タイミングの例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（１つのホストコマンドを複数のページコマンドに分解する例）
２．第２の実施の形態（複数のホストコマンドを複数のページコマンドに分解する例）
【００１６】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、メモリコントローラ２００と、メモリ３００とから構成される。メモリコントローラ２００およびメモリ３００はメモリシステム４００を構成する。
【００１７】
ホストコンピュータ１００は、メモリ３００に対してデータのリード処理およびライト処理等を指令するホストコマンドを発行するものである。このホストコンピュータ１００は、ホストコンピュータ１００としての処理を実行する（図示しない）プロセッサと、メモリコントローラ２００との間のやりとりを行うための（図示しない）コントローラインターフェースとを備える。また、ホストコンピュータ１００は、一般的にはデータバッファを備える。ホストコンピュータ１００とメモリコントローラ２００との間は信号線１０９により接続される。
【００１８】
メモリコントローラ２００は、ホストコンピュータ１００から発行されたホストコマンドに従って、メモリ３００に対するリクエスト制御を行うものである。メモリコントローラ２００とメモリ３００との間は信号線３０９により接続される。
【００１９】
メモリ３００は、（図示しない）制御部およびメモリセルアレイを備える。このメモリ３００の制御部は、メモリコントローラ２００からのリクエストに従ってメモリセルへのアクセスを行う。メモリ３００のメモリセルアレイは、複数のメモリセルからなるメモリセルアレイであり、ビット毎に２値の何れかの値を記憶するメモリセル、または、複数ビット毎に多値の何れかの値を記憶するメモリセルが２次元状（マトリクス状）に多数配列されている。このメモリセルアレイは、複数バイトサイズを有するページを読出しまたは書込みのアクセス単位とし、消去することなくデータの上書きが可能な不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）を想定する。
【００２０】
図２は、本技術の実施の形態におけるメモリコントローラ２００の一構成例を示す図である。このメモリコントローラ２００は、ホストコマンド変換部２１０と、代替ページアドレス変換部２２０と、ページコマンド実行部２３０と、ページデータ送信部２４０と、ページデータ受信部２５０とを備える。
【００２１】
ホストコマンド変換部２１０は、ホストコンピュータ１００から発行されたホストコマンドをアクセス対象のページ毎に分解して、ページコマンドに変換するものである。このホストコマンド変換部２１０は、後述するように、ページコマンドを各エントリに保持するキューを備え、このキューに保持されたエントリの状態に応じて代替ページアドレス変換部２２０にページコマンドを送信する。また、このホストコマンド変換部２１０は、キューの各エントリの状態を管理して、ホストコマンドに対応するページコマンドが全て完了すると、ホストコンピュータ１００にその旨を通知する。なお、ページは、メモリ３００における部分領域であり、特許請求の範囲に記載の部分領域の一例である。
【００２２】
代替ページアドレス変換部２２０は、ホストコマンド変換部２１０によって分解されたページコマンドのページアドレスについて、論理ページアドレスをメモリ３００における物理ページアドレスに変換するものである。この代替ページアドレス変換部２２０は、後述するように、アドレス変換を行うためのテーブルを備える。また、この代替ページアドレス変換部２２０は、ライトエラー発生時には、リトライ処理を行うために代替ページを用意して、アドレス変換を行うためのテーブルを更新する処理を行う。
【００２３】
ページコマンド実行部２３０は、代替ページアドレス変換部２２０によってアドレス変換されたページアドレスをアクセス対象として、ページコマンドを実行するものである。このページコマンド実行部２３０は、メモリ３００に対してメモリアクセスのリクエストを発行する。そして、このページコマンド実行部２３０は、メモリ３００からアクセス結果を示すステータスを受信して、代替ページアドレス変換部２２０およびホストコマンド変換部２１０にそのステータスを通知する。なお、ページコマンド実行部２３０は、特許請求の範囲に記載の部分領域コマンド実行部の一例である。
【００２４】
ページデータ送信部２４０は、ホストコンピュータ１００から発行されたライトコマンドに対応するライトデータをメモリ３００に送信するものである。ホストコンピュータ１００から発行されたホストコマンドはページ単位に分解されるため、このページデータ送信部２４０からメモリ３００に送信されるデータもページ単位のページデータである。
【００２５】
ページデータ受信部２５０は、ホストコンピュータ１００から発行されたリードコマンドに対応するリードデータをメモリ３００から受信するものである。ホストコンピュータ１００から発行されたホストコマンドはページ単位に分解されるため、このページデータ受信部２５０がメモリ３００から受信するデータもページ単位のページデータである。
【００２６】
図３は、本技術の第１の実施の形態におけるホストコンピュータ１００から発行されるホストコマンドのフィールド構成例を示す図である。このホストコマンドは、オペコード７１１と、開始ページアドレス７１２と、ページ数７１３との各フィールドを備えている。
【００２７】
オペコード７１１は、ホストコマンドにおける命令の種別を示すフィールドであり、ここでは８ビット幅を想定している。この実施の形態では、メモリ３００へのアクセスを行う命令に注目する。オペコード７１１が「０ｘ０１」を示す場合、メモリ３００からの読出しを行うためのリードコマンドを表す。また、オペコード７１１が「０ｘ０２」を示す場合、メモリ３００への書込みを行うためのライトコマンドを表す。なお、「０ｘ」に続く数字は１６進数であることを意味する。
【００２８】
開始ページアドレス７１２は、ホストコマンドがメモリ３００へのアクセスを行う命令である場合の、開始ページのページアドレスを示すフィールドであり、ここでは２４ビット幅を想定している。ホストコンピュータ１００から発行されるホストコマンドでは、開始ページアドレス７１２として論理アドレスが使用される。
【００２９】
ページ数７１３は、ホストコマンドがメモリ３００へのアクセスを行う命令である場合の、ページ数を示すフィールドであり、ここでは８ビット幅を想定している。開始ページアドレス７１２によって示されるページから、このページ数７１３によって示されるページ数分のアクセスが行われることになる。
【００３０】
図４は、本技術の実施の形態におけるホストコマンド変換部２１０の一構成例を示す図である。このホストコマンド変換部２１０は、ページコマンドキュー２６０と、ホストコマンド受信部２１１と、ページコマンド送信部２１２と、ページコマンド完了受信部２１４と、ホストコマンド完了送信部２１５とを備える。
【００３１】
ホストコマンド受信部２１１は、ホストコンピュータ１００から発行されたホストコマンドを受信して、そのホストコマンドをアクセス対象のページ毎に分解して、ページコマンドに変換するものである。このホストコマンド受信部２１１によって分解されたページコマンドは、ページコマンドキュー２６０に保持される。
【００３２】
ページコマンドキュー２６０は、ホストコマンド受信部２１１によって分解されたページコマンドを保持するものである。後述するように、このページコマンドキュー２６０は、各エントリの状態を保持しており、この状態に応じて、ホストコマンド変換部２１０内の各部が動作を行う。なお、ページコマンドキュー２６０は、特許請求の範囲に記載の部分領域コマンド保持部の一例である。
【００３３】
ページコマンド送信部２１２は、ページコマンドキュー２６０に保持されているページコマンドの中から１つを選択して、代替ページアドレス変換部２２０に送信するものである。いずれのページコマンドを選択するかは、各エントリの状態に依存する。なお、ページコマンド送信部２１２は、特許請求の範囲に記載の部分領域コマンド送信部の一例である。
【００３４】
ページコマンド完了受信部２１４は、メモリ３００におけるページコマンドの処理完了を受信して、その際のステータスに応じて、ページコマンドキュー２６０に保持されるエントリの状態を更新するものである。
【００３５】
ホストコマンド完了送信部２１５は、ページコマンドキュー２６０に保持されるエントリの状態に応じて、ページコマンドの完了を検出し、対応する全てのページコマンドが完了したホストコマンドについてその旨をホストコンピュータ１００に通知するものである。なお、ホストコマンド完了送信部２１５は、特許請求の範囲に記載のホストコマンド完了送信部の一例である。
【００３６】
図５は、本技術の第１の実施の形態におけるページコマンドキュー２６０の一構成例を示す図である。このページコマンドキュー２６０は、ｍ個（ｍは２以上の整数）のエントリを有し、各エントリにページコマンド２６１と、ページアドレス２６２と、状態情報２６３とを関連付けて保持する。
【００３７】
ページコマンド２６１は、ホストコマンド受信部２１１によってページ毎に分解されたコマンドを示すものであり、分解前のホストコマンドのオペコード７１１と同じコマンド種別を保持する。
【００３８】
ページアドレス２６２は、ホストコマンド受信部２１１によってページ毎に分解されたページアドレスを示すものである。このページアドレス２６２には、分解前のホストコマンドの開始ページアドレス７１２によって示されるページから、ページ数７１３によって示されるページ数分のページアドレスが連続的に付与される。ただし、保持するエントリの番号は必ずしも連続している必要はなく、独立して管理される。
【００３９】
状態情報２６３は、対応するエントリの状態を示すものである。この状態情報２６３は、ＳＥＴ、ＷＡＩＴ、ＤＯＮＥの計３ビットのフィールドを有する。これらにより示される意味については後述する。
【００４０】
ページコマンドキュー２６０は、ページコマンドキュー２６０に保持されているページコマンドについて、ページ数を計数するページカウント２６７と、ページエラーの数を計数するページエラー２６８とをさらに保持する。
【００４１】
ページカウント２６７は、ホストコマンド受信部２１１によってホストコマンド受信時に設定され、ページコマンド完了時にホストコマンド完了送信部２１５によって１つ減算される。ページカウント２６７がゼロになると、ホストコマンドに対応する全てのページコマンドが完了したものと判断される。なお、ページカウント２６７は、特許請求の範囲に記載の部分領域カウンタの一例である。
【００４２】
ページエラー２６８は、ホストコマンド受信部２１１によってゼロに設定され、代替不可となるページが検出される度に１つ加算される。ホストコマンドに対応する全てのページコマンドが完了した際に、このページエラー２６８がゼロを示していない場合には、ホストコマンド完了送信部２１５からホストコンピュータ１００にエラー完了ステータスが通知される。なお、ページエラー２６８は、特許請求の範囲に記載の部分領域エラー保持部の一例である。
【００４３】
図６は、本技術の実施の形態における状態情報２６３によって示される状態の一例を示す図である。この実施の形態においては、ページコマンドキュー２６０の各エントリは、次の６つの状態の何れかになることを想定する。
【００４４】
「未登録」状態は、ページコマンドキュー２６０の対応するエントリにページコマンドが登録されていない状態を示す。このとき、状態情報２６３のＳＥＴ、ＷＡＩＴ、ＤＯＮＥの各ビットは「１−１−１」を示す。
【００４５】
「登録（実行前）」状態は、ページコマンドキュー２６０の対応するエントリにページコマンドが登録されているが、まだ実行されていない状態を示す。このとき、状態情報２６３の各ビットは「１−０−０」を示す。
【００４６】
「実行中」状態は、ページコマンドキュー２６０の対応するエントリに登録されているページコマンドが実行中である状態を示す。このとき、状態情報２６３の各ビットは「０−０−０」を示す。
【００４７】
「代替発生」状態は、ページコマンドキュー２６０の対応するエントリに登録されているページコマンドが実行されたものの、その結果として代替のための処理が発生している状態を示す。すなわち、ライトエラーが発生した場合には、そのページに代えて新たに未使用のページを検索して、代替ページとして使用できるように準備する必要がある。そのための処理を行っている間はこの状態となる。このとき、状態情報２６３の各ビットは「０−１−０」を示す。
【００４８】
「正常完了」状態は、ページコマンドキュー２６０の対応するエントリに登録されているページコマンドが実行されて、正常に完了した状態を示す。このとき、状態情報２６３の各ビットは「０−０−１」を示す。
【００４９】
「代替失敗（エラー完了）」状態は、ページコマンドキュー２６０の対応するエントリに登録されているページコマンドについて代替のための処理が行われたものの、代替に失敗した状態を示す。このとき、状態情報２６３の各ビットは「０−１−１」を示す。
【００５０】
図７は、本技術の実施の形態における状態情報２６３によって示される状態の遷移例を示す図である。この状態遷移例における６つの状態については上述の通りである。
【００５１】
ページコマンドキュー２６０のエントリの初期状態は「未登録」状態である。この「未登録」状態のエントリに、ホストコマンド受信部２１１によって新たにページコマンドが登録されると、「登録」状態になる。そして、「登録」状態のページコマンドがページコマンド実行部２３０によって実行されると、その実行中には「実行中」状態になる。
【００５２】
「実行中」状態となったページコマンドが正常に完了すると、「正常完了」状態になる。一方、ページコマンドが実行された結果、代替のための処理が行われている間は、「代替発生」状態になる。そして、代替ページの準備が完了すると、再び「登録」状態になってページコマンドの実行待ちとなる。しかし、未使用のページが検索できず、代替ページの準備に失敗すると、「代替失敗」状態になる。
【００５３】
「正常完了」状態または「代替失敗」状態になった後には、そのエントリがクリアされ、初期状態である「未登録」状態になる。
【００５４】
図８は、本技術の実施の形態における代替ページアドレス変換部２２０の一構成例を示す図である。この代替ページアドレス変換部２２０は、ページアドレス変換部２２１と、代替アドレス変換テーブル２２２と、代替アドレス変換テーブル管理部２２３と、代替ページ管理テーブル２２４とを備える。
【００５５】
ページアドレス変換部２２１は、ページコマンドキュー２６０に保持されたページコマンドについてアクセス対象ページの論理アドレスをメモリ３００の物理アドレスに変換するものである。なお、ページアドレス変換部２２１は、特許請求の範囲に記載の部分領域アドレス変換部の一例である。
【００５６】
代替アドレス変換テーブル２２２は、ホストコマンドの論理アドレスをメモリ３００の物理アドレスに変換するための情報を保持するテーブルである。この代替アドレス変換テーブル２２２の構成例については後述する。なお、代替アドレス変換テーブル２２２は、特許請求の範囲に記載のアドレス変換テーブルの一例である。
【００５７】
代替アドレス変換テーブル管理部２２３は、代替アドレス変換テーブル２２２を管理するものである。この代替アドレス変換テーブル管理部２２３は、ページコマンドについてメモリ３００においてライトエラーが生じた場合に、そのライトエラーを生じたページコマンドのための代替ページの準備処理を行う。その際、代替アドレス変換テーブル管理部２２３は、その代替ページの準備処理を、ページコマンド実行部２３０における他のページコマンドの実行と並行して行う。これにより、代替ページの準備処理に伴う遅延を隠蔽して、リトライ時のメモリ３００のスループットを向上させることができる。なお、代替アドレス変換テーブル管理部２２３は、特許請求の範囲に記載のアドレス変換管理部の一例である。
【００５８】
代替ページ管理テーブル２２４は、代替ページとして使用されるメモリ３００のページについて、その使用状態を管理するための情報を保持するテーブルである。この代替ページ管理テーブル２２４の構成例については後述する。なお、代替ページ管理テーブル２２４は、特許請求の範囲に記載の代替領域管理テーブルの一例である。
【００５９】
図９は、本技術の実施の形態における代替アドレス変換テーブル２２２の一構成例を示す図である。この代替アドレス変換テーブル２２２は、ホストコマンドにおける論理アドレスの論理ページアドレスの各々に対して、メモリ３００の物理ページアドレスを記憶する。
【００６０】
ページアドレス変換部２２１は、論理ページアドレスによってこの代替アドレス変換テーブル２２２を参照することにより、対応する物理ページアドレスを取得することができ、論理ページアドレスから物理ページアドレスに変換することができる。
【００６１】
図１０は、本技術の実施の形態における代替ページ管理テーブル２２４の一構成例を示す図である。この代替ページ管理テーブル２２４は、メモリ３００の物理ページアドレスの各々に対して、その使用状態を記憶する。この使用状態は、例えば、物理ページアドレスによって示されるメモリ３００のページが、既に使用されているか否かを表す。未使用のページであれば新たに代替ページとして使用することが可能であるが、既に他の論理ページとして使用されているページであれば代替ページとして使用することはできない。
【００６２】
代替アドレス変換テーブル管理部２２３は、ライトエラー発生時にこの代替ページ管理テーブル２２４を参照して未使用のページを代替ページとして検索し、代替アドレス変換テーブル２２２の物理ページアドレスにその代替先のページアドレスを登録する。これにより、論理ページアドレスに対応する物理ページアドレスが新たな代替先となり、それ以降はその新たな代替先のページが代替ページとして使用される。
【００６３】
［情報処理システムの動作］
図１１は、本技術の第１の実施の形態のホストコマンド受信部２１１における処理手順の一例を示す流れ図である。
【００６４】
ホストコマンド受信部２１１は、ホストコンピュータ１００から発行されたホストコマンドを受信すると（ステップＳ９１１：Ｙｅｓ）、ページコマンドキュー２６０のページカウント２６７にホストコマンドのページ数７１３を設定する（ステップＳ９１２）。また、このときホストコマンド受信部２１１は、ページコマンドキュー２６０のページエラー２６８に、ページエラーの未発生を示す「０」を設定する（ステップＳ９１２）。また、ホストコマンド受信部２１１は、以下の処理で使用する制御変数ｐに、初期値「０」を設定する（ステップＳ９１２）。
【００６５】
ホストコマンド受信部２１１は、ページコマンドキュー２６０において状態情報２６３が「未登録」状態のエントリを検索する（ステップＳ９１３）。「未登録」状態のエントリが検索できなかった場合には（ステップＳ９１３：Ｎｏ）、新たに「未登録」状態のエントリが検索されるようになるまで待機する。
【００６６】
「未登録」状態のエントリ＃ｉが検索されると（ステップＳ９１３：Ｙｅｓ）、ホストコマンド受信部２１１は、受信したホストコマンドをページコマンドに分解して、ページコマンドキュー２６０のエントリ＃ｉに登録する（ステップＳ９１４）。すなわち、エントリ＃ｉのページコマンド２６１に、ホストコマンドのオペコード７１１を設定する。また、ホストコマンドの開始ページアドレス７１２に制御変数ｐを加えた値を、エントリ＃ｉのページアドレス２６２に設定する。また、エントリ＃ｉの状態情報２６３に、「登録」状態を示す「１−０−０」を設定する。
【００６７】
１つのページコマンドをページコマンドキュー２６０のエントリ＃ｉに登録すると、ホストコマンド受信部２１１は制御変数ｐを１つ加算する（ステップＳ９１５）。そして、制御変数ｐがホストコマンドのページ数７１３に等しくなるまで（ステップＳ９１６：Ｎｏ）、ステップＳ９１３以降の処理を繰り返す。制御変数ｐがホストコマンドのページ数７１３に等しくなると（ステップＳ９１６：Ｙｅｓ）、ホストコマンド受信部２１１は次のホストコマンドの受信を待機する（ステップＳ９１１）。
【００６８】
図１２は、本技術の実施の形態のページコマンド送信部２１２における処理手順の一例を示す流れ図である。
【００６９】
ページコマンド送信部２１２は、ページコマンドキュー２６０において状態情報２６３が「登録」状態のエントリを検索する（ステップＳ９２１）。「登録」状態のエントリが検索できなかった場合には（ステップＳ９２１：Ｎｏ）、新たに「登録」状態のエントリが検索されるようになるまで待機する。
【００７０】
「登録」状態のエントリ＃ｉが検索されると（ステップＳ９２１：Ｙｅｓ）、ページコマンド送信部２１２は、代替ページアドレス変換部２２０にページコマンドを送信可能であるか否かを判断する（ステップＳ９２２）。もし、メモリ３００が他のコマンドを実行していてビジーな状態であれば（ステップＳ９２２：Ｎｏ）、ページコマンド送信部２１２はその状態が解消されるまで待機する。
【００７１】
ページコマンドが送信可能になると（ステップＳ９２２：Ｙｅｓ）、ページコマンド送信部２１２はページコマンドキュー２６０のエントリ＃ｉのページコマンド２６１およびページアドレス２６２を代替ページアドレス変換部２２０に送信する（ステップＳ９２３）。そして、ページコマンド送信部２１２は、そのエントリ＃ｉの状態情報２６３を「実行中」状態に設定する（ステップＳ９２４）。
【００７２】
その後、ページコマンド送信部２１２は、ステップＳ９２１以降の処理を繰り返す。
【００７３】
図１３は、本技術の実施の形態のページコマンド完了受信部２１４における処理手順の一例を示す流れ図である。
【００７４】
ページコマンド完了受信部２１４は、代替ページアドレス変換部２２０からステータス信号を受信して、ページコマンドキュー２６０の状態情報２６３を更新する。このとき、「代替不可」のステータス信号を受信すると（ステップＳ９３１：Ｙｅｓ）、ページコマンドキュー２６０においてそのページコマンドが保持されているエントリ＃ｉを選択する（ステップＳ９３２）。そして、そのエントリ＃ｉの状態情報２６３を「代替失敗」に設定する（ステップＳ９３３）。
【００７５】
また、「代替発生」のステータス信号を受信すると（ステップＳ９３４：Ｙｅｓ）、ページコマンドキュー２６０においてそのページコマンドが保持されているエントリ＃ｉを選択する（ステップＳ９３５）。そして、そのエントリ＃ｉの状態情報２６３を「代替発生」に設定する（ステップＳ９３６）。
【００７６】
また、「代替準備完了」のステータス信号を受信すると（ステップＳ９３７：Ｙｅｓ）、ページコマンドキュー２６０においてそのページコマンドが保持されているエントリ＃ｉを選択する（ステップＳ９３８）。そして、そのエントリ＃ｉの状態情報２６３を「登録」に設定する（ステップＳ９３９）。
【００７７】
また、「正常完了」のステータス信号を受信すると（ステップＳ９４１：Ｙｅｓ）、ページコマンドキュー２６０においてそのページコマンドが保持されているエントリ＃ｉを選択する（ステップＳ９４２）。そして、そのエントリ＃ｉの状態情報２６３を「正常完了」に設定する（ステップＳ９４３）。
【００７８】
その後、ページコマンド完了受信部２１４は、ステップＳ９３１以降の処理を繰り返す。
【００７９】
図１４は、本技術の第１の実施の形態のホストコマンド完了送信部２１５における処理手順の一例を示す流れ図である。
【００８０】
ホストコマンド完了送信部２１５は、ページコマンドキュー２６０において状態情報２６３が完了状態「０−＊−１」となっているエントリ＃ｉを検索する（ステップＳ９５１）。ここで、「＊」は、「０」または「１」の何れであってもよいことを示す。すなわち、この完了状態は、「正常完了」状態または「代替失敗」状態の何れかを意味する。完了状態のエントリが検索できなかった場合には（ステップＳ９５１：Ｎｏ）、新たに完了状態のエントリが検索されるようになるまで待機する。
【００８１】
完了状態のエントリ＃ｉが検索されると（ステップＳ９５１：Ｙｅｓ）、ホストコマンド完了送信部２１５は、ページコマンドキュー２６０のページカウント２６７を１つ減算する（ステップＳ９５３）。このとき、エントリ＃ｉの状態情報２６３が「代替失敗」状態を示している場合には（ステップＳ９５４：Ｙｅｓ）、ホストコマンド完了送信部２１５はページコマンドキュー２６０のページエラー２６８を１つ加算する（ステップＳ９５５）。そして、ホストコマンド完了送信部２１５は、エントリ＃ｉの状態情報２６３に、「未登録」状態を示す「１−１−１」を設定する（ステップＳ９５６）。
【００８２】
ホストコマンド完了送信部２１５は、ページコマンドキュー２６０のページカウント２６７が「０」になっていなければ（ステップＳ９５７：Ｎｏ）、ステップＳ９５１以降の処理を繰り返す。ページカウント２６７が「０」になっていれば（ステップＳ９５７：Ｙｅｓ）、ホストコマンド完了送信部２１５は、ホストコマンドに対応する全てのページコマンドが完了したものとして、以下の処理を行う。
【００８３】
このとき、ページコマンドキュー２６０のページエラー２６８が「０」になっていれば（ステップＳ９５８：Ｎｏ）、ホストコマンドが正常に完了したことになる。そのため、ホストコマンド完了送信部２１５は、ホストコンピュータ１００に正常完了のステータス信号を送信する（ステップＳ９５９）。
【００８４】
一方、ページコマンドキュー２６０のページエラー２６８が「０」になっていなければ（ステップＳ９５８：Ｙｅｓ）、ホストコマンドがエラー完了したことになる。そのため、ホストコマンド完了送信部２１５は、ホストコンピュータ１００にエラー完了のステータス信号を送信する（ステップＳ９６１）。そして、次の処理に備えて、ページコマンドキュー２６０のページエラー２６８を「０」にリセットする（ステップＳ９６２）。
【００８５】
その後、ホストコマンド完了送信部２１５は、ステップＳ９５１以降の処理を繰り返す。
【００８６】
図１５は、本技術の実施の形態のページアドレス変換部２２１における処理手順の一例を示す流れ図である。
【００８７】
ページアドレス変換部２２１は、ページコマンド送信部２１２からページコマンドを受信すると（ステップＳ９７１：Ｙｅｓ）、アドレス変換を行う。すなわち、代替アドレス変換テーブル２２２を参照して、ページコマンドの論理アドレスをメモリ３００の物理アドレスに変換する（ステップＳ９７２）。ページアドレス変換部２２１は、ステップＳ９７１以降の処理を繰り返す。
【００８８】
図１６は、本技術の実施の形態の代替アドレス変換テーブル管理部２２３における処理手順の一例を示す流れ図である。
【００８９】
代替アドレス変換テーブル管理部２２３は、ページコマンド実行部２３０からライトエラーを受信せず（ステップＳ９８１：Ｎｏ）、正常終了を受信すると（ステップＳ９８２：Ｙｅｓ）、ページコマンド完了受信部２１４に正常完了を通知する（ステップＳ９８３）。
【００９０】
代替アドレス変換テーブル管理部２２３は、ページコマンド実行部２３０からライトエラーを受信すると（ステップＳ９８１：Ｙｅｓ）、ページコマンド完了受信部２１４に代替発生を通知する（ステップＳ９８４）。
【００９１】
代替アドレス変換テーブル管理部２２３は、代替ページ管理テーブル２２４を参照して、未使用の代替ページが存在すれば（ステップＳ９８５：Ｙｅｓ）、そのページアドレスを代替先として代替アドレス変換テーブル２２２に登録する（ステップＳ９８６）。そして、代替アドレス変換テーブル管理部２２３は、ページコマンド完了受信部２１４に代替準備完了を通知する（ステップＳ９８７）。
【００９２】
一方、未使用の代替ページが存在しない場合には（ステップＳ９８５：Ｎｏ）、代替アドレス変換テーブル管理部２２３は、ページコマンド完了受信部２１４に代替不可を通知する（ステップＳ９８８）。
【００９３】
その後、代替アドレス変換テーブル管理部２２３は、ステップＳ９８１以降の処理を繰り返す。
【００９４】
図１７は、本技術の実施の形態のページコマンド実行部２３０における処理手順の一例を示す流れ図である。
【００９５】
ページコマンド実行部２３０は、代替ページアドレス変換部２２０からページコマンドの受信を待機する（ステップＳ９９１）。ページコマンドを受信すると（ステップＳ９９１：Ｙｅｓ）、ページコマンド実行部２３０は、ページコマンドの内容に応じて、メモリ３００に対してメモリアクセスのリクエストを発行する（ステップＳ９９２）。
【００９６】
また、ページコマンド実行部２３０は、リクエストに対してメモリ３００からステータスを受信すると（ステップＳ９９３：Ｙｅｓ）、代替ページアドレス変換部２２０にそのステータスを通知する（ステップＳ９９４）。
【００９７】
その後、ページコマンド実行部２３０は、ステップＳ９９１以降の処理を繰り返す。
【００９８】
［効果］
図１８は、本技術の第１の実施の形態の情報処理システムにおける処理タイミングの例を示す図である。この例では、ページ＃１から順にメモリ３００へのアクセスが行われた際、ページ＃２についてライトエラーが発生して、ページ＃２のリトライが行われた場合を想定する。
【００９９】
従来技術では、同図におけるｂに示すように、ページ＃２の代替準備処理の後にページ＃２のリトライが行われ、これを待って次のページ＃３のアクセスが引き続き行われることになる。
【０１００】
この第１の実施の形態では、同図におけるａに示すように、ページ＃２についてライトエラーが発生すると、ページ＃２のリトライを待つことなく、次のページ＃３のアクセスが行われる。すなわち、代替ページ管理テーブル２２４を参照して代替ページを用意して、代替アドレス変換テーブル２２２に代替先のページアドレスを設定する、といった代替準備処理と並行して、次のページコマンドが実行される。これにより、代替ページの準備処理に伴う遅延を隠蔽して、リトライ時のメモリ３００のスループットを向上させることができる。
【０１０１】
このように、本技術の第１の実施の形態では、ホストコマンド受信部２１１がホストコマンドをページ毎のページコマンドに分解し、メモリ３００へのアクセスはページ単位に行われる。そして、ライトエラーが生じた際、代替アドレス変換テーブル管理部２２３は代替ページの準備処理を、ページコマンド実行部２３０における他のページコマンドの実行と並行して行う。これにより、代替ページの準備処理に伴う遅延を隠蔽して、ライトエラーに対するリトライ時のメモリ３００のスループットを向上させることができる。
【０１０２】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、ホストコマンドをページ毎のページコマンドに分解していたが、１つのホストコマンドに対応する全てのページコマンドが完了した後に、次のホストコマンドを処理していた。これに対し、この第２の実施の形態では、異なるホストコマンドに対応するページコマンドを混在させて実行することにより、代替ページの準備処理に伴う遅延を隠蔽する機会を広げ、メモリ３００のさらなるスループットの向上を図る。
【０１０３】
なお、この第２の実施の形態の情報処理システムは、上述の第１の実施の形態の構成と同様であるため、詳細な説明は省略する。
【０１０４】
図１９は、本技術の第２の実施の形態におけるホストコンピュータ１００から発行されるホストコマンドのフィールド構成例を示す図である。
【０１０５】
このホストコマンドは、第１の実施の形態と同様に、オペコード７１１と、開始ページアドレス７１２と、ページ数７１３との各フィールドを備えている。そして、この第２の実施の形態のホストコマンドは、さらにタグ７１４を備える。
【０１０６】
このタグ７１４は、ホストコマンドを識別するホストコマンド識別子であり、ホストコマンド毎に異なる値を有する。ホストコンピュータ１００は、ホストコマンドを発行する際に、タグ７１４を割り当てる。ホストコンピュータ１００は、ホストコマンドの完了やデータ転送を、このタグ７１４を使用して管理する。ホストコマンドがページコマンドに分解される際には、このタグ７１４がページコマンドの各々に付与される。ホストコンピュータ１００は、メモリコントローラ２００がホストコマンドの実行順序を変更したことを、タグ７１４によって検出し、対応することができる。
【０１０７】
図２０は、本技術の第２の実施の形態におけるページコマンドキュー２６０の一構成例を示す図である。
【０１０８】
この第２の実施の形態におけるページコマンドキュー２６０は、第１の実施の形態と同様にｍ個のエントリを有し、各エントリには、ページコマンド２６１と、ページアドレス２６２と、状態情報２６３とを関連付けて保持する。そして、この第２の実施の形態におけるページコマンドキュー２６０は、各エントリに、さらにタグ２６４を関連付けて保持する。このタグ２６４は、ホストコマンドのタグ７１４に対応するものであり、同じホストコマンドに対応するページコマンドに対しては同じタグが付与され、異なるホストコマンドに対応するページコマンドに対しては異なるタグが付与される。これにより、ページコマンドに付与されたタグを参照することにより、そのページコマンドに対応するホストコマンドを識別することができる。
【０１０９】
また、この第２の実施の形態におけるページコマンドキュー２６０は、ｔ個のページカウント２６７およびページエラー２６８の組を有する。ここで、ｔは２以上の整数であり、ホストコマンドのタグ７１４と一致する。したがって、これらページカウント２６７およびページエラー２６８の組はホストコマンドのそれぞれに紐付けられ、完了したページ数およびページエラーの数をホストコマンド毎に計数することができる。
【０１１０】
［情報処理システムの動作］
ここでは、本技術の第２の実施の形態におけるホストコマンド受信部２１１およびホストコマンド完了送信部２１５の動作について説明する。他の各部については上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【０１１１】
図２１は、本技術の第２の実施の形態のホストコマンド受信部２１１における処理手順の一例を示す流れ図である。
【０１１２】
ホストコマンド受信部２１１は、ホストコンピュータ１００から発行されたホストコマンドを受信すると（ステップＳ８１１：Ｙｅｓ）、そのホストコマンドのタグ７１４が制御変数ｃとして認識される（ステップＳ８１２）。そして、ページコマンドキュー２６０のタグ＃ｃのページカウント２６７にホストコマンドのページ数７１３を設定する（ステップＳ８１２）。また、このときホストコマンド受信部２１１は、ページコマンドキュー２６０のタグ＃ｃのページエラー２６８に、ページエラーの未発生を示す「０」を設定する（ステップＳ８１２）。また、ホストコマンド受信部２１１は、以下の処理で使用する制御変数ｐに、初期値「０」を設定する（ステップＳ８１２）。
【０１１３】
ホストコマンド受信部２１１は、ページコマンドキュー２６０において状態情報２６３が「未登録」状態のエントリを検索する（ステップＳ８１３）。「未登録」状態のエントリが検索できなかった場合には（ステップＳ８１３：Ｎｏ）、新たに「未登録」状態のエントリが検索されるようになるまで待機する。
【０１１４】
「未登録」状態のエントリ＃ｉが検索されると（ステップＳ８１３：Ｙｅｓ）、ホストコマンド受信部２１１は、受信したホストコマンドをページコマンドに分解して、ページコマンドキュー２６０のエントリ＃ｉに登録する（ステップＳ８１４）。すなわち、エントリ＃ｉのページコマンド２６１に、ホストコマンドのオペコード７１１を設定する。また、ホストコマンドの開始ページアドレス７１２に制御変数ｐを加えた値を、エントリ＃ｉのページアドレス２６２に設定する。また、エントリ＃ｉの状態情報２６３に、「登録」状態を示す「１−０−０」を設定する。また、エントリ＃ｉのタグ２６４に、制御変数ｃの値を設定する。
【０１１５】
１つのページコマンドをページコマンドキュー２６０のエントリ＃ｉに登録すると、ホストコマンド受信部２１１は制御変数ｐを１つ加算する（ステップＳ８１５）。そして、制御変数ｐが、ページコマンドキュー２６０のタグ＃ｃのページカウント２６７に等しくなるまで（ステップＳ８１６：Ｎｏ）、ステップＳ８１３以降の処理を繰り返す。制御変数ｐが、ページコマンドキュー２６０のタグ＃ｃのページカウント２６７に等しくなると（ステップＳ８１６：Ｙｅｓ）、ホストコマンド受信部２１１は次のホストコマンドの受信を待機する（ステップＳ８１１）。
【０１１６】
図２２は、本技術の第２の実施の形態のホストコマンド完了送信部２１５における処理手順の一例を示す流れ図である。
【０１１７】
ホストコマンド完了送信部２１５は、上述の第１の実施の形態と同様に、ページコマンドキュー２６０において状態情報２６３が完了状態「０−＊−１」となっているエントリ＃ｉを検索する（ステップＳ８５１）。完了状態のエントリが検索できなかった場合には（ステップＳ８５１：Ｎｏ）、新たに完了状態のエントリが検索されるようになるまで待機する。
【０１１８】
完了状態のエントリ＃ｉが検索されると（ステップＳ８５１：Ｙｅｓ）、エントリ＃ｉのタグ２６４が制御変数ｃとして認識される（ステップＳ８５２）。そして、ホストコマンド完了送信部２１５は、ページコマンドキュー２６０のタグ＃ｃのページカウント２６７を１つ減算する（ステップＳ８５３）。このとき、エントリ＃ｉの状態情報２６３が「代替失敗」状態を示している場合には（ステップＳ８５４：Ｙｅｓ）、ホストコマンド完了送信部２１５はページコマンドキュー２６０のタグ＃ｃのページエラー２６８を１つ加算する（ステップＳ８５５）。そして、ホストコマンド完了送信部２１５は、エントリ＃ｉの状態情報２６３に、「未登録」状態を示す「１−１−１」を設定する（ステップＳ８５６）。
【０１１９】
ホストコマンド完了送信部２１５は、ページコマンドキュー２６０のタグ＃ｃのページカウント２６７が「０」になっていなければ（ステップＳ８５７：Ｎｏ）、ステップＳ８５１以降の処理を繰り返す。ページカウント２６７が「０」になっていれば（ステップＳ８５７：Ｙｅｓ）、ホストコマンド完了送信部２１５は、ホストコマンドに対応する全てのページコマンドが完了したものとして、以下の処理を行う。
【０１２０】
このとき、ページコマンドキュー２６０のタグ＃ｃのページエラー２６８が「０」になっていれば（ステップＳ８５８：Ｎｏ）、ホストコマンドが正常に完了したことになる。そのため、ホストコマンド完了送信部２１５は、ホストコンピュータ１００に正常完了のステータス信号を送信する（ステップＳ８５９）。
【０１２１】
一方、ページコマンドキュー２６０のタグ＃ｃのページエラー２６８が「０」になっていなければ（ステップＳ８５８：Ｙｅｓ）、ホストコマンドがエラー完了したことになる。そのため、ホストコマンド完了送信部２１５は、ホストコンピュータ１００にエラー完了のステータス信号を送信する（ステップＳ８６１）。そして、次の処理に備えて、ページコマンドキュー２６０のタグ＃ｃのページエラー２６８を「０」にリセットする（ステップＳ８６２）。
【０１２２】
その後、ホストコマンド完了送信部２１５は、ステップＳ８５１以降の処理を繰り返す。
【０１２３】
［効果］
図２３は、本技術の第２の実施の形態の情報処理システムにおける処理タイミングの例を示す図である。この例では、ページ＃１から順にメモリ３００へのアクセスが行われた際、ページ＃２についてライトエラーが発生して、ページ＃２のリトライが行われた場合を想定する。また、ホストコマンド＃１がページ＃１および＃２にアクセスし、ホストコマンド＃２がページ＃３および＃４にアクセスすることを想定する。
【０１２４】
従来技術では、同図におけるｂに示すように、ページ＃２の代替準備処理の後にページ＃２のリトライが行われ、これを待って次のページ＃３のアクセスが引き続き行われることになる。すなわち、ホストコマンド＃１の完了後に、ホストコマンド＃２が実行される。
【０１２５】
この第２の実施の形態では、同図におけるａに示すように、ページ＃２についてライトエラーが発生すると、ページ＃２のリトライを待つことなく、次のページ＃３のアクセスが行われる。すなわち、代替ページ管理テーブル２２４を参照してページ＃２の代替ページを用意して、代替アドレス変換テーブル２２２に代替先のページアドレスを設定する、といった代替準備処理と並行して、次のページコマンドによるページ＃３へのアクセスが実行される。このページ＃３のアクセスはホストコマンド＃２によるものであるが、この第２の実施の形態ではホストコマンド毎にタグを付与することにより、複数のホストコマンドを混在して実行することができる。これにより、代替ページの準備処理に伴う遅延を複数のホストコマンドに跨って隠蔽して、リトライ時のメモリ３００のスループットをさらに向上させることができる。
【０１２６】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１２７】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１２８】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１２９】
なお、本技術は以下のような構成もとることができる。
（１）ホストコンピュータからメモリにアクセスするために発行されたホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する部分領域コマンド保持部と、
前記部分領域コマンド保持部に保持された前記部分領域コマンドについてアクセス対象部分領域のアドレスを前記メモリのアドレスに変換する部分領域アドレス変換部と、
前記アドレス変換された部分領域コマンドを実行して前記メモリにアクセスを行う部分領域コマンド実行部と、
前記部分領域コマンドについて前記メモリにおいてライトエラーが生じた場合に前記ライトエラーを生じた前記部分領域コマンドのための代替領域の準備処理を前記部分領域コマンド実行部における他の部分領域コマンドの実行と並行して行うアドレス変換管理部と
を具備するメモリコントローラ。
（２）前記部分領域コマンド保持部に保持された前記部分領域コマンドを前記部分領域コマンド実行部に送信する部分領域コマンド送信部をさらに具備し、
前記部分領域コマンド保持部は、前記部分領域コマンドについて実行が完了するまでの状態を示す状態情報を保持し、
前記部分領域コマンド送信部は、前記状態情報に従って前記部分領域コマンドを前記部分領域コマンド実行部に送信する
前記（１）に記載のメモリコントローラ。
（３）前記部分領域コマンド保持部に保持された前記部分領域コマンドについて実行完了までの部分領域数を計数する部分領域カウンタと、
前記ホストコマンドに関する全ての部分領域の前記部分領域コマンドが前記部分領域カウンタによって計数されると前記ホストコンピュータに前記ホストコマンドの完了を送信するホストコマンド完了送信部と
をさらに具備する前記（１）または（２）に記載のメモリコントローラ。
（４）前記部分領域コマンド保持部に保持された前記部分領域コマンドについてエラーの発生状態を保持する部分領域エラー保持部をさらに具備し、
前記ホストコマンド完了送信部は、前記部分領域エラー保持部に保持されたエラーの発生状態を前記ホストコンピュータに送信する
前記（３）に記載のメモリコントローラ。
（５）前記部分領域コマンド保持部は、前記ホストコマンドを識別するホストコマンド識別子をさらに保持し、
前記部分領域カウンタは、前記ホストコマンド識別子ごとに部分領域数を計数し、
前記ホストコマンド完了送信部は、前記ホストコマンド識別子ごとに前記ホストコンピュータに前記ホストコマンドの完了を送信する
前記（３）または（４）に記載のメモリコントローラ。
（６）前記ホストコンピュータにおける前記メモリの論理アドレスと前記メモリにおける物理アドレスとの対応関係を保持するアドレス変換テーブルをさらに具備し、
前記部分領域アドレス変換部は、前記アドレス変換テーブルに従って前記部分領域コマンドのアドレスを前記論理アドレスから前記物理アドレスに変換する
前記（１）から（５）のいずれかに記載のメモリコントローラ。
（７）前記メモリにおける代替領域の使用状態を保持する代替領域管理テーブルをさらに具備し、
前記アドレス変換管理部は、前記代替領域管理テーブルに従って未使用の代替領域のアドレスを前記アドレス変換テーブルにおける前記物理アドレスとして登録する
前記（６）に記載のメモリコントローラ。
（８）メモリと、
ホストコンピュータから前記メモリにアクセスするために発行されたホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する部分領域コマンド保持部と、
前記部分領域コマンド保持部に保持された前記部分領域コマンドについてアクセス対象部分領域のアドレスを前記メモリのアドレスに変換する部分領域アドレス変換部と、
前記アドレス変換された部分領域コマンドを実行して前記メモリにアクセスを行う部分領域コマンド実行部と、
前記部分領域コマンドについて前記メモリにおいてライトエラーが生じた場合に前記ライトエラーを生じた前記部分領域コマンドのための代替領域の準備処理を前記部分領域コマンド実行部における他の部分領域コマンドの実行と並行して行うアドレス変換管理部と
を具備するメモリシステム。
（９）メモリと、
前記メモリにアクセスするためのホストコマンドを発行するホストコンピュータと、
前記ホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する部分領域コマンド保持部と、
前記部分領域コマンド保持部に保持された前記部分領域コマンドについてアクセス対象部分領域のアドレスを前記メモリのアドレスに変換する部分領域アドレス変換部と、
前記アドレス変換された部分領域コマンドを実行して前記メモリにアクセスを行う部分領域コマンド実行部と、
前記部分領域コマンドについて前記メモリにおいてライトエラーが生じた場合に前記ライトエラーを生じた前記部分領域コマンドのための代替領域の準備処理を前記部分領域コマンド実行部における他の部分領域コマンドの実行と並行して行うアドレス変換管理部と
を具備する情報システム。
（１０）ホストコンピュータからメモリにアクセスするために発行されたホストコマンドをアクセス対象の部分領域毎に分解した部分領域コマンドとして保持する部分領域コマンド保持部に保持された前記部分領域コマンドについてアクセス対象部分領域のアドレスを前記メモリのアドレスに変換する部分領域アドレス変換手順と、
前記アドレス変換された部分領域コマンドを実行して前記メモリにアクセスを行う部分領域コマンド実行手順と、
前記部分領域コマンドについて前記メモリにおいてライトエラーが生じた場合に前記ライトエラーを生じた部分領域コマンドのための代替領域の準備処理を前記部分領域コマンド実行手順における他の部分領域コマンドの実行と並行して行うアドレス変換管理手順と
を具備するメモリ制御方法。
【符号の説明】
【０１３０】
１００  ホストコンピュータ
２００  メモリコントローラ
２１０  ホストコマンド変換部
２１１  ホストコマンド受信部
２１２  ページコマンド送信部
２１４  ページコマンド完了受信部
２１５  ホストコマンド完了送信部
２２０  代替ページアドレス変換部
２２１  ページアドレス変換部
２２２  代替アドレス変換テーブル
２２３  代替アドレス変換テーブル管理部
２２４  代替ページ管理テーブル
２３０  ページコマンド実行部
２４０  ページデータ送信部
２５０  ページデータ受信部
２６０  ページコマンドキュー
２６１  ページコマンド
２６２  ページアドレス
２６３  状態情報
２６４  タグ
２６７  ページカウント
２６８  ページエラー
３００  メモリ
４００  メモリシステム
７１１  オペコード
７１２  開始ページアドレス
７１３  ページ数
７１４  タグ
【図１】
2018051647.tif 000003
【図２】
2018051647.tif 000004
【図３】
2018051647.tif 000005
【図４】
2018051647.tif 000006
【図５】
2018051647.tif 000007
【図６】
2018051647.tif 000008
【図７】
2018051647.tif 000009
【図８】
2018051647.tif 000010
【図９】
2018051647.tif 000011
【図１０】
2018051647.tif 000012
【図１１】
2018051647.tif 000013
【図１２】
2018051647.tif 000014
【図１３】
2018051647.tif 000015
【図１４】
2018051647.tif 000016
【図１５】
2018051647.tif 000017
【図１６】
2018051647.tif 000018
【図１７】
2018051647.tif 000019
【図１８】
2018051647.tif 000020
【図１９】
2018051647.tif 000021
【図２０】
2018051647.tif 000022
【図２１】
2018051647.tif 000023
【図２２】
2018051647.tif 000024
【図２３】
2018051647.tif 000025
【国際調査報告】
2018051647.tif 000026
2018051647.tif 000027