(57)【要約】【課題】書き込み性能を向上でき、レイテンシの低減に有利なメモリシステムおよび情報処理システムを提供する。【解決手段】実施形態によれば、メモリシステム１０は、不揮発性メモリ１１と、不揮発性メモリ１１を制御するコントローラ１２とを備える。コントローラ１２は、外部２０から発行される第１要求に基づいて、不揮発性メモリ１１へのアクセスを制御するアクセス制御部１２５と、第１要求の発行前に、外部２０から発行される第２要求に基づいて、不揮発性メモリ１１にバックグランド処理を行う処理部１２２と、処理部１２２を制御することでバックグランド処理をスケジューリングするスケジューラ１２１とを備える。【選択図】図１
2016122227.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、前記不揮発性メモリを制御するコントローラと、を備えるメモリシステムであって、
前記コントローラは、
外部から発行される第１要求に基づいて、前記不揮発性メモリへのアクセスを制御するアクセス制御部と、
前記第１要求の発行前に、前記外部から発行される第２要求に基づいて、前記不揮発性メモリにデータを書き込むための空き領域を、前記不揮発性メモリ上に確保するガベージコレクションを行う処理部と、
前記処理部を制御することで前記ガベージコレクションをスケジューリングするスケジューラと、を備える。
【請求項２】
前記第１要求は、前記不揮発性メモリに書き込みを要求する第１コマンドであって、
前記第２要求は、前記第１コマンドの書き込みデータのデータサイズを含む第２コマンドである
請求項１に記載のメモリシステム。
【請求項３】
前記スケジューラは、前記第２コマンドにおける書き込みデータのデータサイズに相当する空き領域が前記不揮発性メモリに形成されるまで、前記ガベージコレクションを実施するように、前記処理部を制御し、
前記アクセス制御部は、前記第１コマンドに基づき、形成した前記不揮発性メモリの空き領域に、書き込みデータを書き込む
請求項２に記載のメモリシステム。
【請求項４】
前記第１要求は、前記不揮発性メモリに書き込みを要求する第１コマンドであって、
前記第２要求は、前記第１コマンドの書き込みデータのデータサイズと、書き込みの開始時刻または書き込みの開始時刻を特定可能なヒント情報と、を含む第２コマンドである
請求項１または２に記載のメモリシステム。
【請求項５】
前記スケジューラは、
前記書き込みデータのデータサイズに相当するガベージコレクションが、前記第２コマンドに記述された前記書き込み開始時刻までに完了するように、次のガベージコレクションをスケジューリングし、
前記書き込みデータのデータサイズに相当する空き領域が前記不揮発性メモリ上に形成されるまで、前記ガベージコレクションを実施するように、前記バックグランド処理の開始をスケジューリングし、
前記アクセス制御部は、
前記第１コマンドに基づき、前記不揮発性メモリの空き領域に書き込みデータを書き込む
請求項４に記載のメモリシステム。
【請求項６】
前記第１要求は、前記不揮発性メモリに書き込みを要求する第１コマンドであって、
前記第２要求は、前記第１コマンドの書き込みデータのデータサイズと、前記ガベージコレクションを実施することまたは停止することを指示するフラグ情報と、を含む第２コマンドである
請求項３に記載のメモリシステム。
【請求項７】
前記外部は、前記第１コマンドの発行前に、前記ガベージコレクションにより形成された前記不揮発性メモリの空き領域のデータサイズを問合わせるための第３コマンドを更に発行して、前記空き領域の作成状況の監視を行い、
前記処理部は、前記ガベージコレクションにより形成した前記不揮発性メモリの空き領域のデータサイズを前記外部に通知し、前記第３コマンドに応答する
請求項６に記載のメモリシステム。
【請求項８】
前記外部は、前記第３コマンドの応答に記述された前記不揮発性メモリの空き領域のデータサイズに基づき、前記第１コマンドを発行し、
前記処理部は、発行された前記第１コマンドに基づき、前記不揮発性メモリの空き領域に書き込みデータを書き込む
請求項７に記載のメモリシステム。
【請求項９】
前記スケジューラまたは前記処理部は、前記第２要求に対する応答を前記外部に通知する
請求項１乃至８のいずれかに記載のメモリシステム。
【請求項１０】
不揮発性メモリを備えるメモリシステムと、前記メモリシステムを駆動して所定の動作を要求するホストと、を備える情報処理システムであって、
前記メモリシステムは、前記ホストから発行される第１要求に基づいて前記不揮発性メモリへのアクセスを制御するアクセス制御部と、前記第１要求の発行前に前記ホストから発行される第２要求に基づいて、前記不揮発性メモリにバックグランド処理を行う処理部とを備える。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、メモリシステムおよび情報処理システムに関する。
【背景技術】
【０００２】
不揮発性の半導体メモリと、当該半導体メモリを制御する制御機能とを有するメモリシステムがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１９１１７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
書き込み性能を向上でき、レイテンシの低減に有利なメモリシステムおよび情報処理システムを提供する。
【課題を解決するための手段】
【０００５】
実施形態によれば、メモリシステムは、不揮発性メモリと、前記不揮発性メモリを制御するコントローラと、を備えるメモリシステムであって、前記コントローラは、外部から発行される第１要求に基づいて、前記不揮発性メモリへのアクセスを制御するアクセス制御部と、前記第１要求の発行前に、前記外部から発行される第２要求に基づいて、前記不揮発性メモリにデータを書き込むための空き領域を、前記不揮発性メモリ上に確保するガベージコレクションを行う処理部と、前記処理部を制御することで前記ガベージコレクションをスケジューリングするスケジューラと、を備える。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係る情報処理システムの構成例を示すブロック図。
【図２】第１実施形態に係る書き込み予告コマンドのコマンドフレームの一例を示す図。
【図３】第１実施形態に係る書き込み予告コマンドの発行を示すフロー。
【図４】第１実施形態に係る書き込みコマンドの発行を示すフロー。
【図５】第１実施形態に係る余剰ブロックの作成を示すフロー。
【図６】第１実施形態に係る書き込み処理を示すフロー。
【図７】第１実施形態に係る書き込み終了処理を示すフロー。
【図８】比較例１に係るバックグランド処理と書き込み処理とを示すタイミングチャート。
【図９】第１実施形態に係るバックグランド処理と書き込み処理とを示すタイミングチャート。
【図１０】ホストによる書き込みとコンパクション書き込みとの比率を示す図であって、（ａ）は比較例１に係る書き込み比率を示す図、（ｂ）は第１実施形態に係る書き込み比率を示す図。
【図１１】ブロックと有効クラスタ率との関係を示す図であって、（ａ）から（ｃ）の各状態における有効クラスタ分布を示す図。
【図１２】比較例１，２および第１実施形態に係るメモリシシステムの各性能を示す比較表。
【図１３】第２実施形態に係る情報処理システムの構成例を示すブロック図。
【図１４Ａ】第２実施形態に係る先行実施Ｏｎ／Ｏｆｆの制御コマンドのコマンドフレームの一例を示す図。
【図１４Ｂ】空き領域の確認の要求のコマンドフレームの一例を示す図。
【図１４Ｃ】空き領域の確認の応答のコマンドフレームの一例を示す図。
【図１５Ａ】第２実施形態に係るバックグランド処理の先行実施Ｏｎの指示を示すフロー。
【図１５Ｂ】第２実施形態に係る余剰ブロック作成を示すフロー。
【図１６Ａ】第２実施形態に係るバックグランド処理の先行実施Ｏｆｆの指示を示すフロー。
【図１６Ｂ】第２実施形態に係る空き容量の応答を示すフロー。
【図１６Ｃ】第２実施形態に係るバックグランド処理の先行実施Ｏｆｆを示すフロー。
【図１７】第２実施形態に係る書き込みコマンド発行を示すフロー。
【図１８】第２実施形態に係る時間とライト量との関係を示すタイミングチャート。
【図１９】変形例１に係る情報処理システムの構成例を示すブロック図。
【図２０】変形例１に係る問合せおよび書き込みコマンドの発行を示すフロー。
【図２１】変形例１に係る時間とライト量との関係を示すタイミングチャート。
【図２２】第３実施形態に係る情報処理システムの詳細を示すブロック図。
【図２３】第３実施形態に係るストレージシステムを示すブロック図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して、発明の実施形態について説明する。この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【０００８】
ここで、本明細書では、いくつかの要素に複数の表現の例を付している。なおこれら表現の例はあくまで例示であり、上記要素が他の表現で表現されることを否定するものではない。また、複数の表現が付されていない要素についても、別の表現で表現されてもよい。また、図面は模式的なものであり、厚みと平面寸法との関係や各層の厚みの比率等は現実のものと異なることがある。また、図面相互間において互いの寸法の関係や比率が異なる部分が含まれることもある。
【０００９】
（第１実施形態）  
［１．構成］
［１−１．情報処理システムの構成］  
まず、図１を用い、第１実施形態に係る情報処理システム１の構成について説明する。図１は、第１実施形態に係る情報処理システム１の構成例を示すブロック図である。図示するように、情報処理システム１は、メモリシステム１０と、ホスト２０とを備える。
【００１０】
［メモリシステム１０］
メモリシステム１０としては、ここでは、ＳＳＤ（Solid State Drive）を一例に挙げる。メモリシステム１０は、ＮＡＮＤ型フラッシュメモリ（以下、「ＮＡＮＤメモリ」という。）１１と、コントローラ１２とを備える。
【００１１】
ＮＡＮＤメモリ１１は、ここでは図示を省略するが、物理的には複数個のチップ（例えば、４ chips）からなる不揮発性メモリである。各ＮＡＮＤメモリ１１は、ワード線とビット線との交点に配置される複数のメモリセルを有する複数の物理ブロック（Block 0〜Block n）から構成される。ＮＡＮＤメモリ１１では、この物理ブロックを単位にデータが一括して消去される。つまり物理ブロックは、データ消去単位である。データ書き込みおよびデータ読み出しは、各ブロックにおけるページ（ワード線）単位にて行う。
【００１２】
コントローラ（メモリコントローラ、ＳＳＤコントローラ）１２は、ＳＳＤ１０の全体の動作を制御する。例えば、コントローラ１２は、ホスト２０からの要求（指示，コマンドＣＯＭ，拡張コマンドｅＣＯＭ等）に従い、ＮＡＮＤメモリ１１へのアクセス（データ書き込み、データ読み出し、データ消去）および先行処理に伴うバックグランド処理ＢＧ等を制御する。コントローラ１２は、処理スケジューラ１２１、バックグランド処理部１２２、書き込み予定量１２３、フリーブロック量１２４、およびデータアクセス制御部１２５を備える。
【００１３】
処理スケジューラ１２１は、ホスト２０から発行される拡張的なコマンドｅＣＯＭ（第２要求）に基づいて所定のバックグランド処理を行うように、制御信号ＩＳをバックグランド処理部１２２に送信し、バックグランド処理をスケジューリングする。また、処理スケジューラ１２１は、受信した拡張的なコマンドｅＣＯＭに基づいて、自己（ＳＳＤ）１０の状態を示す拡張的なステータス信号ＲｅＳを、ホスト装置２０に返信する。
【００１４】
バックグランド処理部１２２は、制御信号ＩＳに基づき、書き込み予定量１２３およびフリーブロック（余剰ブロック）量１２４を参照し、アクセス（データ書き込み等）に先立って、ＮＡＮＤメモリ１１にバックグランド処理ＢＧを先行して行う。
【００１５】
ここで、バックグランド処理ＢＧとは、ＳＳＤ１０の性能を維持するための処理であって、ホスト２０からの要求（第１要求）に応じた処理（データ書き込み等）以外の処理をいう。バックグランド処理ＢＧの例としては、ガベージコレクション、ブロック消去、パトロールリード等がある。バックグランド処理ＢＧとして、ここでは、ガベージコレクションを一例に挙げて説明する。ガベージコレクション（以下、「コンパクション」と称する場合がある。）とは、ＮＡＮＤメモリ１１のメモリ領域のうち、データ書き込み済みの領域（無効クラスタ）を解放して空きブロック領域を形成し、ＮＡＮＤメモリ１１の空きブロック領域を増大させることをいう。パトロールリードとは、主にデータリテンション（data retention）によるエラーの蓄積をエラー訂正不可能になる前に検出するために、周期的にＮＡＮＤメモリ１１からデータを読み出すことである。なお、バックグランド処理ＢＧは、これらの処理に限定されることはなく、例えばリフレッシュ処理を含んでもよい。
【００１６】
書き込み予定量（要求量）１２３は、ホスト２０から要求されるデータ書き込みのデータサイズである。
【００１７】
フリーブロック量１２４は、後述するバックグランド処理ＢＧであるガベージコレクションにより形成したＮＡＮＤメモリ１１上に形成した余剰ブロックのデータサイズである。
【００１８】
データアクセス制御部１２５は、上記バックグランド処理ＢＧが先行して行われた後に、ホスト２０からの要求（第１要求：書き込みコマンドＣＯＭ等）に従い、ＮＡＮＤメモリ１１へのデータアクセス（データ書き込み等）を制御する。
【００１９】
［ホスト２０］
ホスト（ホスト装置、情報処理装置）２０は、ＳＳＤ１０を駆動させ、ユーザデータについての書き込み、読み出し、および消去等をメモリシステム１０に要求する。ホスト装置２０は、ここでは、ソフトフェア構成として、オペレーションシステム２１、ドライバ２２、およびアプリケーション２４を備える。
【００２０】
オペレーションシステム（ＯＳ、制御部）２１は、ドライバ２２およびアプリケーション２４を制御し、このホスト２０全体の動作を制御する。
【００２１】
ドライバ（駆動部）２２は、オペレーションシステム２１またはアプリケーション２４の制御に基づき、ＳＳＤ制御部２３を制御する。ＳＳＤ制御部２３は、ドライバ２２の制御に従い、コントローラ１２へ所定のアクセスを行う。
【００２２】
アプリケーション（Application）２４は、オペレーションシステム２１の制御に基づき、所定の作業の目的に応じて実行されるソフトウェアである。
【００２３】
上記構成において、ホスト２０のＳＳＤ制御部２３は、ライトおよびリードコマンドＣＯＭ（第１要求）とは別定義である拡張的なコマンドｅＣＯＭ（第２要求）を、ＳＳＤ１０に対して意識的（意図的）に発行する。ここで、第２要求は、コマンド形式（ｅＣＯＭ）に限られず、その他の拡張的な（または拡張された）所定の信号（情報、指示等）であればよい。
【００２４】
また、コントローラ１２は、受信した上記拡張的なコマンドｅＣＯＭの応答として、拡張的なステータス信号ＲｅＳをホスト装置２０に返信する。ここでも、ステータス信号形式（ＲｅＳ）に限られず、その他の拡張的な（または拡張された）所定の信号（情報、返信、応答等）であればよい。
【００２５】
従って、ホスト２０は、返信された拡張的なステータス信号ＲｅＳに基づいて、少なくともＮＡＮＤメモリ１１の状態等を検知することができる。その結果、ホスト装置２０は、検知したＮＡＮＤメモリ１１の状態等に応じて、先行的にバックグランド処理（例えば、ガベージコレクション等）を行うことができる。詳細については、以下で説明する。
【００２６】
なお、上記拡張的なコマンドｅＣＯＭや拡張的なステータス信号ＲｅＳは、その送信の順序を問わない。即ち、まず、ＳＳＤ１０からホスト２０へ拡張的な所定の信号を送信し、次いで、ホスト装置２０からＳＳＤ１０へ拡張的な所定の信号を送信してもよい。
【００２７】
［１−２．コマンドフレーム（書き込み予告コマンド）］  
次に、図２を用い、第１実施形態に係る拡張的なコマンドｅＣＯＭのコマンドフレームについて説明する。ここでは、拡張的なコマンドとして、書き込み予告コマンドｅＣＯＭを一例に挙げる。
【００２８】
図示するように、書き込み予告コマンドｅＣＯＭは、そのコマンドフレームとして、書き込みサイズと、書き込み予定時刻と、から構成される。例えば、第１実施形態に係る書き込み予告コマンドｅＣＯＭでは、書き込みサイズは１０ＧＢであり、書き込み予定時刻は６０ｓｅｃ後である。
【００２９】
なお、書き込み予告コマンドｅＣＯＭのコマンドフレームは、図２に示したものに限られない。例えば、書き込み予告コマンドｅＣＯＭは、書き込み予告時刻のほかに、書き込みの開始時刻を特定可能なヒント情報を含むものあってもよい。
【００３０】
［２．バックグランド処理とデータ書き込み動作］
次に、上記説明した構成において、バックグランド処理とデータ書き込み動作について説明する。
【００３１】
［２−１．ホスト２０側の動作］  
まず、図３および図４を用い、ホスト２０側の動作について説明する。
【００３２】
図３に示すように、ステップＳ１１において、ホスト２０側のＳＳＤ制御部２３は、ドライバ２２の指示に基づいて、書き込み予告を把握する。
【００３３】
ステップＳ１２において、ＳＳＤ制御部２３は、拡張的なコマンドである書き込み予告コマンドｅＣＯＭを、ＳＳＤ１０へ発行する。
【００３４】
なお、コントローラ１２は、受信した書き込み予告コマンドｅＣＯＭに基づいて、ＮＡＮＤメモリ１１の余剰ブロックの状態を示す拡張的なステータス信号ＲｅＳを、ホスト装置２０に返信する。詳細は、次の図５において説明する。
【００３５】
続いて、ホスト２０は、返信された拡張的なステータス信号ＲｅＳに基づいて、ＮＡＮＤメモリ１１の余剰ブロックの状態であるフリーブロック量１２４を検知する。従って、図４に示すように、ステップＳ２１において、ＳＳＤ制御部２３は、ステータス信号ＲｅＳに基づいて、ライトコマンドＣＯＭを、ＳＳＤ１０へ発行する。
【００３６】
［２−２．ＳＳＤ１０側の動作］  
次に、図５から図７を用い、ＳＳＤ１０側の動作について説明する。
【００３７】
［２−２−１．余剰ブロック作成（バックグランド処理の先行処理）］
まず、ＳＳＤ１０側のコントローラ１２は、図５に示す動作を行う。
【００３８】
図５のステップＳ１３において、コントローラ１２の処理スケジューラ１２１は、上記書き込み予告コマンドｅＣＯＭを受信すると、ガベージコレクションを先行して開始するように、制御信号ＩＳをバックグランド処理部１２２に送信する。制御信号ＩＳを受けたバックグランド処理部１２２は、フリーブロック（余剰ブロック）量１２４を参照し、受信した予告コマンドｅＣＯＭに記述されていた書き込みサイズの要求量（書き込み予定量：１０ＧＢ）１２３が、参照したＮＡＮＤメモリ１１の余剰ブロック１２４の制限値以上であるか否かを判定する。より具体的には、処理スケジューラ１２１は、上記書き込み予告コマンドｅＣＯＭの書き込みサイズ１０ＧＢと、参照したＮＡＮＤメモリ１１の余剰ブロック１２３の制限値とを比較する。そして、バックグランド処理部１２２は、当該書き込みサイズ１０ＧＢが、ＮＡＮＤメモリ１１の余剰ブロック１２４の制限値以上であるか否かを判定し、判定結果を処理スケジューラ１２１に返信する。
【００３９】
ステップＳ１４において、処理スケジューラ１２１は、上記判定結果に基づいて、上記書き込みサイズの要求量１２３がＮＡＮＤメモリ１１の余剰ブロック１２４の制限値を超える場合（Ｓ１３でＮｏ）、当該要求量１２３を余剰ブロック値１２４の制限値へ変更するように、バックグランド処理部１２２を制御する。
【００４０】
ステップＳ１５において、処理スケジューラ１２１は、上記判定結果に基づいて、上記書き込みサイズの要求量１２３がＮＡＮＤメモリ１１の余剰ブロック１２４の制限値以下である場合（Ｓ１３でＹｅｓ）、ＮＡＮＤメモリ１１の余剰ブロック１２４の作成量を計算する。具体的には、コントローラ１２は、上記書き込みサイズの要求量１２３を満たすサイズから、現在の空き領域のサイズである余剰ブロック量１２４を減算することで、作成量を計算する。ここで、ＮＡＮＤメモリ１１の「空き領域」とは、ガベージコレクション（コンパクション）を行うことなく、ＮＡＮＤメモリ１１に書き込むことが可能な領域またはそのデータ量をいう。
【００４１】
ステップＳ１６において、処理スケジューラ１２１は、上記書き込み予告コマンドｅＣＯＭの書き込み予定時刻からコンパクション（ＣＭＰ）に必要な時間を減算した時間が、現在の時刻以上であるか（正の時間であるか）否かを判定する。具体的には、処理スケジューラ１２１は、上記書き込み予告コマンドｅＣＯＭの書き込み予定時刻６０ｓｅｃ後からＣＭＰに必要な時間を減算した時間が、正の時間以上であるか否かを判定する。
【００４２】
ここで、上記コンパクション（ＣＭＰ）に必要な時間は、各ブロックのコンパクション時間を必要なＮＡＮＤメモリ１１のブロック数分だけ加算することで計算可能である。各ブロックのコンパクション時間は、ブロックの有効クラスタ率（有効クラスタカウンタ）から算出可能である。必要なブロック数は、１ブロックサイズあたりの必要量から算出可能である。なお、コンパクション対象となるブロック（コンパクション元ブロック）は、有効クラスタ率の最も小さいブロックから選択される。
【００４３】
ステップＳ１７において、処理スケジューラ１２１は、Ｓ１６でＮｏの場合、次回の起動用として、図示しないタイマにその時刻をセットする。
【００４４】
ステップＳ１８において、処理スケジューラ１２１は、Ｓ１６でＹｅｓの場合、書き込みサイズの要求量１２３が、Ｓ１５で設定したＮＡＮＤメモリ１１の余剰ブロック量１２４の空き容量以下であるか否かを判定する。ステップＳ１５からＳ１８までに経過した時間に伴い、ＮＡＮＤメモリ１１の当該空き容量が、ホスト２０の要求サイズを満たさない場合が考えられるからである。より具体的には、経過した時間中に、ホスト２０から（書き込み予告ｅＣＯＭ対象外の）ライト要求を、メモリシステム１０が受けることによって、生成したフリーブロックが減ってしまう場合があるからである。例えば、ホスト２０が複数存在する場合等が考えられる。
【００４５】
具体的には、ステップＳ１８において、処理スケジューラ１２１の指示を受けたバックグランド処理部１２２は、書き込み予定量１２３と余剰ブロック量１２４とを参照し、書き込み予定量１２３が、フリーブロック量１２４以下であるか否かを判定する。
【００４６】
ステップＳ１９において、処理スケジューラ１２１は、上記書き込みサイズの要求量１２３がフリーブロック量１２４の容量未満である場合（Ｓ１８でＮｏ）、ＮＡＭＤメモリ１１の１ブロック分のコンパクションを行うように制御する。具体的には、Ｓ１８での条件を満たさない場合（Ｓ１８でＮｏ）、処理スケジューラ１２１からの制御信号ＩＳを受けたバックグランド処理部１２２は、データ書き込みに先立って、さらに１ブロック分のＮＡＮＤメモリ１１へのバックグランド処理ＢＧとしてのガベージコレクション（コンパクション）を行う。以降、スケジューラ１２１は、ステップＳ１８の条件を満たすまで、このステップＳ１９を繰り返す。
【００４７】
最後に、処理スケジューラ１２１は、上記書き込みサイズの要求量がＳ１５で設定したＮＡＮＤメモリ１１の余剰ブロック１２４の空き容量以上である場合（Ｓ１８でＹｅｓ）、余剰ブロックの状態（書き込みサイズ、書き込み開始時刻）等を示す拡張的なステータス信号ＲｅＳを、ホスト２０へ返信する。
【００４８】
［２−２−２．データ書き込み動作（ホスト書き動作）］
ここで、ホスト２０は、ＳＳＤ１０から返信された拡張的なステータス信号ＲｅＳに基づいて、図４に示したライトコマンドＣＯＭを、ＳＳＤ１０のコントローラ１２へ発行する。
【００４９】
次に、ライトコマンドＣＯＭを受けたコントローラ１２は、図６に示すデータ書き込み動作を行う。
【００５０】
ステップＳ２２において、コントローラ１２のデータアクセス制御部１２５は、このデータ書き込みに先行して実施するバックグランド処理ＢＧがあるか否かを判定する。
【００５１】
ステップＳ２３において、データアクセス制御部１２５は、このデータ書き込みに先行して実施するバックグランド処理ＢＧがある場合（Ｓ２２でＹｅｓ）、当該バックグランド処理ＢＧの先行実施を一時的に停止させる。
【００５２】
ステップＳ２４において、データアクセス制御部１２５は、このデータ書き込みに先行して実施するバックグランド処理ＢＧがない場合（Ｓ２２でＮｏ）、優先度を下げられるバックグランド処理ＢＧがあるか否かを判定する。
【００５３】
ステップＳ２５において、データアクセス制御部１２５は、優先度を下げられるバックグランド処理ＢＧがある場合（Ｓ２４でＹｅｓ）、その他のバックグランド処理（例えば、その他のガベージコレクション、ブロック消去等）ＢＧの優先度を下げる。
【００５４】
ステップＳ２６において、データアクセス制御部１２５は、優先度を下げられるバックグランド処理ＢＧがない場合（Ｓ２４でＮｏ）、書き込みコマンドＣＯＭに基づき、所定のアドレスにおいて、書き込みデータをＮＡＮＤメモリ１１に書き込む。
【００５５】
［２−２−３．データ書き込み終了処理］
ここで、データアクセス制御部１２５は、書き込みコマンドＣＯＭに基づき、所定のアドレスにおいて、全ての書き込みデータをＮＡＮＤメモリ１１に書き込んだ後、次に、図７に示す書き込み終了処理を行う。
【００５６】
ステップＳ３１において、データアクセス制御部１２５は、バックグランド処理ＢＧの先行実施において、一時的に停止中のものがあるか否かを判定する。
【００５７】
ステップＳ３２において、データアクセス制御部１２５は、バックグランド処理ＢＧの先行実施において、一時的に停止中のものがある場合（Ｓ３１でＹｅｓ）、当該バックグランド処理の先行実施を再開させる。
【００５８】
ステップＳ３３において、データアクセス制御部１２５は、バックグランド処理ＢＧの先行実施において、一時的に停止中のものがない場合（Ｓ３１でＮｏ）、優先度を下げているバックグランド処理ＢＧがあるか否かを判定する。データアクセス制御部１２５は、優先度を下げているバックグランド処理ＢＧがない場合（Ｓ３２でＮｏ）、この動作を終了する。
【００５９】
ステップＳ３４において、データアクセス制御部１２５は、優先度を下げているバックグランド処理ＢＧがある場合（Ｓ３２でＹｅｓ）、当該バックグランド処理ＢＧの優先度を上げて、この動作を終了する。
【００６０】
［３．作用効果］
以上説明したように、第１実施形態に係る情報処理システム１の構成および動作によれば、少なくとも下記（１）乃至（５）の効果が得られる。この説明においては、必要に応じて、比較例１、２の場合と、第１実施形態の場合とを比較して、以下説明する。
【００６１】
（１）書き込み性能を向上でき、レイテンシを低減できる。
【００６２】
Ａ）比較例１の場合
ここで、比較例１とは、第１実施形態のようにバックグランド処理（ガベージコレクション）処理を先行して実施することはないメモリシステムをいう。
【００６３】
そのため、図８に示すように、比較例１に係るメモリシステムは、空きブロックを確保するためのバックグランド処理（ガベージコレクション）ＢＧＡ，ＢＧＢを、書き込み処理（ホスト書き）ＷＡ，ＷＢと並行して行う必要がある。例えば、図８に示すように、比較例では、時刻ｔ１の際に、バックグランド処理ＢＧＡと書き込み処理ＷＡとを開始する。続いて、時刻ｔ２の際に、書き込み処理ＷＡが終了した後で、バックグランド処理ＢＧＢと書き込み処理ＷＢとを開始する。そのため、時刻ｔ３の際に、全ての書き込み動作が終了する。
【００６４】
このように、比較例１では、書き込み処理ＷＡ，ＷＢにおいて、バックグランド処理ＢＧＡ，ＢＧＢも並行して行う必要がある。そのため、比較例１では、ＮＡＮＤメモリへの書き込み性能のすべてを、書き込み処理（ホスト書き）に振り向けることはできない。その結果、比較例１では、データ書き込み性能が低減し、レイテンシが増大する点で、不利である。
【００６５】
Ｂ）第１実施形態の場合
上記比較例１に対して、第１実施形態では、処理スケジューラ１２１が、ホスト２０から発行される拡張的なコマンドｅＣＯＭ（第２要求）に基づいて、所定のバックグランド処理を行うように、制御信号ＩＳによりバックグランド処理部１２２を制御する。よって、バックグランド処理部１２２は、制御信号ＩＳに基づき、書き込み予定量１２３およびフリーブロック（余剰ブロック）量１２４を参照し、アクセス（データ書き込み等）に先立って、ＮＡＮＤメモリ１１にバックグランド処理ＢＧを先行して行う（図５等）。
【００６６】
例えば、図９に示すように、第１実施形態では、バックグランド処理部１２２は、時刻ｔ０の際に、データ書き込みに先立って、バックグランド処理（ガベージコレクション）ＢＧＡ，ＢＧＢの先行実施を開始する。
【００６７】
よって、時刻ｔ１の際に、バックグランド処理ＢＧＡ，ＢＧＢが全て終了した状態で、書き込み処理（ホスト書き）ＷＡ，ＷＢを開始することができる。
【００６８】
その結果、時刻ｔ２の際に、書き込み処理ＷＡ，ＷＢを完了することができる。
【００６９】
このように、第１実施形態では、ＮＡＮＤメモリ１１への書き込み性能のすべてを、書き込み処理（ホスト書き）ＷＡ，ＷＢに振り向けることはできるので、データ書き込み性能を向上することができる。さらに、典型的な場合において、比較例１と比べて時間Ｔ０だけレイテンシを低減することができる点で有利である。
【００７０】
（２）データ書き込み（ホスト書き）の比率を向上できる。
【００７１】
図１０（ａ）に示すように、比較例１に係るデータ書き込み（ホスト書き）とコンパクション（ガベージコレクション）書きとの比率は、例えば、１：１程度である。
【００７２】
これに対して、第１実施形態に係る情報処理システム１では、ホスト指示ｅＣＯＭによる先行ガベージコレクションの実施（図５のＳ１９等）により、続くデータ書き込み（ホスト書き）において空ブロックのサイズに余裕を形成することができる。当該空きブロックのサイズの余裕によって、コンパクション書きの比率を、ホスト書きの比率に比べて大幅に低減することができ、理想的にはコンパクション書きの比率をほぼなくすことができる。そのため、図１０（ｂ）に示すように、第１実施形態では、データ書き込み（ホスト書き）とコンパクション（ガベージコレクション）書きとの比率を、１：０程度とすることができる。このように、第１実施形態では、データ書き込み（ホスト書き）の比率を向上できる。
【００７３】
（３）ＷＡＦ（write-amplification factor）を低減できる。
【００７４】
これについては、図１１（ａ）〜（ｂ）を用い、比較例２と第１実施形態とを比較して説明する。図１１は、ブロックＢＫと有効クラスタ率との関係を示す図であって、（ａ）は初期状態、（ｂ）は第１状態、（ｃ）は第２状態における有効クラスタ分布を示している。なお、図１１（ａ）〜（ｃ）において、ＳＳＤ１０の容量に対応する斜線で示す部分の面積はいずれも同一である。
【００７５】
ここで、ガベージコレクションは、有効クラスタ率が最も低いブロック（コンパクション元ブロック）ＣＢＫを対象にして行う。例えば、図１１（ａ）の初期状態では、有効率がほぼ等しく１００％であるので、５ＢＫのブロックを対象にコンパクションを行う。これに対して、図１１（ｂ）、（ｃ）の第１、第２状態では、７ＢＫのブロック、１０ＢＫのブロックを対象にそれぞれコンパクションを行う。
【００７６】
Ａ）比較例２の場合
ここで、比較例２とは、ドライブ側であるメモリシステムが、自主的に先行コンパクションを行うメモリシステムをいう。そのため、比較例２に係るメモリシステムは、以下の２点（ａ１），ａ２））に示すように、多くのガベージコレクション（コンパクション）を実施する必要がある。
【００７７】
ａ１）有効クラスタ率の高いコンパクション元ブロックをコンパクションしなければならない点
比較例２の場合では、極論すると、時間的な余裕さえあれば、メモリシステムがフリーブロック数を最大化しておき、次のライト要求でピーク性能を最大限持続させようとする。これは、時間的な余裕さえあれば、図１１（ａ）の初期状態を維持しようとすることに対応する。つまり、比較例２では、図１１（ａ）の初期状態において、フリーブロック１個を生成するために必要なコンパクションの量が多いということになる。
【００７８】
ａ２）図１１（ｃ）の第２状態から図１１（ａ）の初期状態に到達するまでに、多くのコンパクションをしなければならない点
ここで、ホストからのライト要求が続いた後は、図１１（ｃ）の第２状態になっている。そのため、比較例２では、時間的な余裕となる度に、図１１（ｃ）の第２状態から図１１（ａ）の初期状態にしようとして、頻繁にコンパクションを行う。そこで、フリーブロックをたくさん生成するためには、単純に多くのコンパクションを実行する必要がある。
【００７９】
このように、比較例２では、以上の２点の結果、全体として多くのコンパクションする必要があるため、ＷＡＦが高くなる。
【００８０】
なお、比較例１の場合では、ガベージコレクション処理を先行して実施することはない。そのため、図１１（ｃ）の第２状態で定常的にコンパクションを行う。従って、コンパクション元の有効クラスタ率は、２０％程度と低くなり、ＷＡＦは低くなる。しかしながら、比較例１の場合では、常にフリーブロック数が少ないために、データ書き込み（ホスト書き）の比率が低く、ピーク性能が低くなる点で不利となる。
【００８１】
Ｂ）第１実施形態の場合
これに対して、第１実施形態では、ドライバ側であるホスト２０の指示（ｅＣＯＭ）に基づき、ガベージコレクション処理を先行して実施する。これによれば、メモリシステム１０は、ホスト２０の必要なときかつ必要な量に対応してフリーブロック量１２４を生成する。
【００８２】
その結果、比較例２のような効率の悪い無駄なコンパクションを避けることができる。また、比較例１のようにデータ書き込み（ホスト書き）の比率が低くなることはなく、ピーク性能も発揮できる。
【００８３】
（４）ピーク消費電力を低減できる。
【００８４】
上述の通り、第１実施形態では、データ書き込み前に、ガベージコレクション処理ＢＧを先行して実施する。換言すれば、データ書き込みおよびガベージコレクション処理ＢＧを時間的に分散して処理する。このように、第１実施形態では、当該２つの動作を時間的に分散処理するため当該処理に伴う消費電力を分散でき、ピークの消費電力を低減できる点で有利である。
【００８５】
（５）データ消去（ブロック消去）等のその他のバックグランド処理についても、上記（１）乃至（４）と同様の効果が得られる。
【００８６】
図１２に示すように、上述した比較例１および２と第１実施形態との作用効果をまとめると、ピーク性能最大化の方法は、比較例２では、ＳＳＤ（ドライブ）それ自身の判断による積極的なガベージコレクションである。これに対し、第１実施形態では、ホスト２０の指示（ｅＣＯＭ）による先行的なガベージコレクションである点で相違する。
【００８７】
そのため、ピーク性能に関しては、比較例２および第１実施形態はいずれも高い。しかしながら、比較例２では先行コンパクション量が過大であるのに対し、第１実施形態ではホスト指示（ｅＣＯＭ）に基づいたピーク性能に必要な量とすることができる。また、上記（３）に説明した通り、ＷＡＦに関しては、比較例２では大幅に悪化するのに対し、第１実施形態では悪化を最小化することができる。
【００８８】
以上のような効果は、ガベージコレクション（コンパクション）に限られない。即ち、データ消去やパトロールリード等のその他のバックグランド処理についても、上記（１）乃至（４）と同様の効果が得られることは勿論である。
【００８９】
（第２実施形態（ホストがバックグランド処理の先行実施On／Offを要求））  
次に、図１３乃至図１８を用い、第２実施形態に係る情報処理システムについて説明する。第２実施形態は、ホスト２０がバックグランド処理の先行実施のＯｎ／Ｏｆｆを、ＳＳＤ１０に要求する一例に関する。この説明において、上記第１実施形態と重複する構成および動作部分の詳細な説明を省略する。
【００９０】
［情報処理システム］
図１３を用い、第２実施形態に係る情報処理システム１の構成について説明する。図示するように、第２実施形態に係る情報処理システム１は、処理スケジューラ１２１を備えておらず、ホスト２０からバックグランド処理部１２２に拡張的なコマンドｅＣＯＭ１，ｅＣＯＭ２が送信される点で、第１実施形態と相違する。
【００９１】
ホスト２０は、拡張的なコマンドｅＣＯＭ１をバックグランド処理部１２２に送信することで、バックグランド処理の先行実施のＯｎ（実施すること）またはＯｆｆ（実施しないこと）を制御する。さらに、ホスト２０は、拡張的なコマンドｅＣＯＭ２をバックグランド処理部１２２に送信することで、ＮＡＮＤメモリ１１の空き領域の確認を要求し、当該空き領域の状況をチェックする。
【００９２】
拡張的なコマンドｅＣＯＭ１，ｅＣＯＭ２を受けたバックグランド処理部１２２は、これに基づいた拡張的なステータス信号ＲｅＳをホスト２０に返信する。例えば、拡張的なコマンドｅＣＯＭ２を受けたバックグランド処理部１２２は、コマンドｅＣＯＭ２に基づいた拡張的なステータス信号ＲｅＳの内容として、ＮＡＮＤメモリ１１の空き領域のサイズをホスト２０に通知する。なお、これらの詳細については、後述する。
【００９３】
［コマンドフレーム（ｅＣＯＭ１，ｅＣＯＭ２，ＲｅＳ）］  
図１４を用い、第２実施形態に係る拡張的なコマンドおよびステータス信号のコマンドフレームについて説明する。
【００９４】
図１４Ａに示すように、第２実施形態に係る拡張的なコマンドｅＣＯＭ１は、先行実施のＯｎ／Ｏｆｆの制御フラグと、必要なサイズとで構成される。例えば、バックグランド処理の先行実施がＯｎ（実施する）場合、拡張的なコマンドｅＣＯＭ１の制御フラグは、“１”状態とされる。また、バックグランド処理の先行実施がＯｆｆ（実施しない）場合、拡張的なコマンドｅＣＯＭ１の制御フラグは、“０”状態とされる。
【００９５】
図１４Ｂに示すように、第２実施形態に係る拡張的なコマンドｅＣＯＭ２は、特にパラメタは設定されておらず、ＮＡＮＤメモリ１１の空き領域を確認できるように、他の書き込みコマンドＣＯＭ等と別定義であるように構成される。ＮＡＮＤメモリ１１の「空き領域」とは、ガベージコレクション（コンパクション）を行うことなく、ＮＡＮＤメモリ１１に書き込むことが可能な領域またはそのデータ量をいう。
【００９６】
図１４Ｃに示すように、第２実施形態に係る拡張的なステータス信号ＲｅＳは、上記拡張的なコマンドｅＣＯＭ２の返信信号として、ブロック数から換算される空サイズから構成される。例えば、第２実施形態に係る拡張的なステータス信号ＲｅＳの空サイズの内容は、５ＧＢとして記述される。
【００９７】
［バックグランド処理とデータ書き込み動作］
次に、上記説明した構成において、バックグランド処理とデータ書き込み動作について説明する。この説明においては、ホスト２０側とＳＳＤ１０側の一連の動作として説明する。
【００９８】
［バックグランド処理の先行実施Ｏｎの動作］  
図１５Ａに示すように、ステップＳ４１において、ホスト２０のＳＳＤ制御部２３は、ドライバ２２の指示に基づく書き込み予告を把握する。
【００９９】
ステップＳ４１において、ＳＳＤ制御部２３は、先行実施Ｏｎの拡張的なコマンドｅＣＯＭ１を、バックグランド処理部１２２に発行する。より具体的には、ＳＳＤ制御部２３は、バックグランド処理の先行実施を実施するように、制御フラグが“１”状態の拡張的なコマンドｅＣＯＭ１をバックグランド処理部１２２に発行する。
【０１００】
図１５Ｂに示すように、続いて、拡張的なコマンドｅＣＯＭ１を受けたバックグランド処理部１２２は、まず、上記コマンドｅＣＯＭ１の制御フラグが“１”状態であるため、バックグランド処理の先行実施（Ｏｎ）を開始する。
【０１０１】
次に、ステップＳ４３において、バックグランド処理部１２２は、フリーブロック（余剰ブロック）量１２４を参照し、受信したコマンドｅＣＯＭ１に記述された書き込みサイズの要求量が、参照したＮＡＮＤメモリ１１の余剰ブロックの制限値以下であるか否かを判定する。より具体的には、バックグランド処理部１２２は、上記コマンドｅＣＯＭ１の書き込みサイズ１０ＧＢと、参照したＮＡＮＤメモリ１１の余剰ブロック１２４の制限値とを比較する。そして、バックグランド処理部１２２は、当該書き込みサイズ１０ＧＢが、ＮＡＮＤメモリ１１の余剰ブロック１２４の制限値以下であるか否かを判定する。
【０１０２】
ステップＳ４４において、バックグランド処理部１２２は、上記書き込みサイズの要求量がＮＡＮＤメモリ１１の余剰ブロック１２４の制限値未満である場合（Ｓ４３でＮｏ）、当該要求量を余剰ブロックの値１２４へ変更する。
【０１０３】
ステップＳ４５において、バックグランド処理部１２２は、上記書き込みサイズの要求量がＮＡＮＤメモリ１１の余剰ブロック量１２４の制限値以下である場合（Ｓ４３でＹｅｓ）、コマンドｅＣＯＭ１の書き込みサイズの要求量が、Ｓ４３で設定したＮＡＮＤメモリ１１の余剰ブロック量１２４の空き容量以下であるか否かを判定する。経過した時間に伴い、ＮＡＮＤメモリ１１の当該空き容量が、ホスト２０の要求サイズを満たさない場合が考えられるからである。より具体的には、経過した時間中に、ホスト２０から（書き込み予告ｅＣＯＭ対象外の）ライト要求を、メモリシステム１０が受けることによって、生成したフリーブロックが減ってしまう場合があるからである。
【０１０４】
ステップＳ４６において、バックグランド処理部１２２は、上記書き込みサイズの要求量が参照した余剰ブロック量１２４よりも大きい場合（Ｓ４５でＮｏ）、ＮＡＭＤメモリ１１の１ブロックのコンパクションを行うように制御する。具体的には、この場合、バックグランド処理部１２２は、データ書き込みに先立って、１ブロック分のＮＡＮＤメモリ１１へのバックグランド処理ＢＧとしてのガベージコレクション（コンパクション）を予め実行する。以降、バックグランド処理部１２２は、ステップＳ４５の条件を満たすまで、このステップＳ４６を繰り返す。
【０１０５】
最後に、バックグランド処理部１２２は、ステップＳ４５の条件を満たす場合（Ｓ４５でＹｅｓ）、ブロック数から換算した空サイズ（例えば、５ＧＢ）を示す拡張的なステータス信号ＲｅＳを、ホスト２０へ返信する。
【０１０６】
［バックグランド処理の先行実施Ｏｆｆの動作］  
図１６Ａに示すように、ステップＳ５１において、ホスト２０のＳＳＤ制御部２３は、ドライバ２２の指示に基づき、ＳＳＤ１０への空き領域の作成状況の問合せとして、拡張的なコマンドｅＣＯＭ２を、ＳＳＤ１０のバックグランド処理部１２２へ発行する。
【０１０７】
ステップＳ５２において、ＳＳＤ制御部２３は、バックグランド処理部１２２から返信された拡張的なステータス信号ＲｅＳ（図１６Ｂにて詳述する）に基づいて、ＳＳＤ１０の空き領域のサイズ（ＲｅＳの空きサイズ５ＧＢ）が所定の指示値に達したか否かを判定する。
【０１０８】
ステップＳ５３において、ＳＳＤ制御部２３は、ＳＳＤ１０の空き領域のサイズが所定の指示値に達していない場合（Ｓ５２でＮｏ）、次回用の図示しないタイマをセットする。
【０１０９】
ステップＳ５４において、ＳＳＤ制御部２３は、ＳＳＤ１０の空き領域のサイズが所定の指示値に達している場合（Ｓ５２でＹｅｓ）、バックグランド処理の先行実施をＯｆｆとするコマンドｅＣＯＭ１を発行する。具体的に、ＳＳＤ制御部２３は、バックグランド処理の先行実施を実施しないように、制御フラグが“０”状態の拡張的なコマンドｅＣＯＭ１をバックグランド処理部１２２に発行する。
【０１１０】
図１６ＢのステップＳ５５に示すように、図１６ＡのステップＳ５１において空き領域の作成状況の問合せとして拡張的なコマンドｅＣＯＭ２を受けたバックグランド処理部１２２は、余剰空きブロック数を取得する。具体的には、バックグランド処理部１２２は、余剰ブロック量１２４を参照し、ＮＡＮＤメモリ１１へのライトに使い切ることができるブロック数を取得する。
【０１１１】
ステップＳ５６において、バックグランド処理部１２２は、空き領域のデータサイズを計算する。具体的には、バックグランド処理部１２２は、ステップＳ５５で取得した余剰空きブロック数とブロックサイズとを乗算し、当該空き領域のデータサイズを算出する。
【０１１２】
ステップＳ５７において、バックグランド処理部１２２は、ステップＳ５６で計算した空き領域のデータサイズ（例えば、５ＧＢ）を記述したステータス信号ＳｅＲを、ホスト２０へ返信する。
【０１１３】
図１６ＣのステップＳ５８において、図１６ＡのステップＳ５４において拡張的なコマンドｅＣＯＭ１を受けたバックグランド処理部１２２は、先行実施しているバックグランド処理ＢＧがあるか否かを判定する。ステップＳ５８の条件を満たさない場合（Ｓ５８でＮｏ）、バックグランド処理部１２２は、この動作を終了する。
【０１１４】
ステップＳ５９において、バックグランド処理部１２２は、ステップＳ５８の条件を満たす場合（Ｓ５８でＹｅｓ）、実施していたバックグランド処理（例えば、ガベージコレクション処理）ＢＧの実施を停止する。
【０１１５】
［書き込みコマンドの発行］  
図１７に示すように、書き込みコマンドＣＯＭの発行の際、ステップＳ６１において、ＳＳＤ制御部２３は、バックグランド処理ＢＧの先行実施がＯｎ状態か否かを判定する。このステップＳ６１の条件を満たさない場合（Ｓ６１でＮｏ）、ステップＳ６３へ続く。
【０１１６】
ステップＳ６２において、ＳＳＤ制御部２３は、バックグランド処理ＢＧの先行実施をＯｆｆとするため、制御フラグが“０”状態である拡張的なコマンドｅＣＯＭ１を、ＳＳＤ１０へ発行する。
【０１１７】
ステップＳ６２において、ＳＳＤ制御部２３は、バックグランド処理部１２２からステータス信号ＲｅＳを受け、データ書き込みコマンドＣＯＭを、ＳＳＤ１０へ発行する。
【０１１８】
なお、データ書き込みコマンドＣＯＭを受けた後のデータアクセス制御部１２５が行うデータ書き込み動作およびデータ書き込み終了動作については、上記第１実施形態と実質的に同様である。そのため、その詳細な説明を省略する。
【０１１９】
［作用効果］
以上説明したように、第２実施形態に係る情報処理システム１によれば、少なくとも上記（１）乃至（５）と同様の効果を得られる。
【０１２０】
ここで、第２実施形態では、ホスト２０が、ＳＳＤ１０へ拡張的なコマンドｅＣＯＭ１を送信し、バックグランド処理の先行実施Ｏｎ／Ｏｆｆを要求する（図１４Ａ、図１５Ａ）。当該コマンドｅＣＯＭ１を受信したＳＳＤ１０のバックグランド処理部１２２は、先行実施Ｏｎと要求された場合、バックグランド処理であるガベージコレクションを書き込み動作に先行して実施する（図１５Ｂ）。これにより、バックグランド処理部１２２は、フリーブロック量１２４が、書き込み予定量１２３になるまで作成し続ける（図１５Ｂ）。そのため、データ書き込み前に、空きブロックを確保することができる。また、ホスト２０は、データ書き込みを行う場合、ＳＳＤ１０のバックグランド処理の先行実施をＯｆｆとする（図１６Ａから図１６Ｃ、図１７）。
【０１２１】
さらに、第２実施形態では、ホスト２０は、ＳＳＤ１０へ拡張的なコマンドｅＣＯＭ２を送信して問合せ、ＳＳＤ１０の空き領域の作成状況の監視を行う（図１６ＡのＳ５１からＳ５２等）。
【０１２２】
例えば、第２実施形態に係る情報処理システム１が行う上記制御は、図１８のように示される。
【０１２３】
図１８に示すように、時刻ｔ１において、ホスト２０は、ＳＳＤ１０へコマンドｅＣＯＭ２を送信し、ＳＳＤ１０の空き領域の作成状況のチェック１を行う。
【０１２４】
時刻ｔ２において、ホスト２０は、当該チェック１のチェック結果に基づいて、ＳＳＤ１０へコマンドｅＣＯＭ１を送信し、バックグランド処理であるガベージコレクションの先行実施のＯｎを要求する。
【０１２５】
時刻ｔ３および時刻ｔ４において、ホスト２０は、同様にＳＳＤ１０へコマンドｅＣＯＭ２を送信し、ＳＳＤ１０の空き領域の作成状況のチェック２およびチェック３を行う。
【０１２６】
時刻ｔ５のデータ書き込みの直前において、ホスト２０は、当該チェック３のチェック結果に基づいて、ＳＳＤ１０へコマンドｅＣＯＭ１を送信し、バックグランド処理であるガベージコレクションの先行実施のＯｆｆを要求する。
【０１２７】
このように、第２実施形態によれば、処理スケジューラ１２１を備えることなく、情報処理システム１の利便性をより向上できる。また、必要に応じて、第２実施形態を適用することが可能である。
【０１２８】
（変形例１）
次に、図１９乃至図２１を用い、変形例１に係る情報処理システムについて説明する。変形例１は、上記第２実施形態のバリエーションの一例である。この説明において、上記第１、第２実施形態と重複する構成および動作部分の詳細な説明を省略する。
【０１２９】
［情報処理システム］
図１９を用い、変形例１に係る情報処理システム１の構成について説明する。図示するように、変形例１に係る情報処理システム１は、書き込み予定量１２３を備えていない点で、第２実施形態と相違する。
【０１３０】
その他の構成については、上記第２実施形態と実質的に同様であるため、詳細な説明を省略する。
【０１３１】
［問合せおよび書き込みコマンドの発行動作］
図２０を用い、変形例２に係る情報処理システム１の問合せおよび書き込みコマンドの発行動作について説明する。なお、ここでは、ホスト２０から送信された拡張的なコマンドｅＣＯＭ１により、バックグランド処理ＢＧであるガベージコレクションが先行して実施されているものとする。
【０１３２】
ステップＳ７１において、ホスト２０のＳＳＤ制御部２３は、バックグランド処理部１２２へ拡張的なコマンドｅＣＯＭ２を発行し、先行実施されたバックグランド処理ＢＧにより作成された空き領域（フリーブロック量）１２４の作成状況を問合せる。問合せを受けたバックグランド処理部１２２は、拡張的なステータス信号ＲｅＳにより、ＳＳＤ制御部２３へフリーブロック量１２４のデータサイズを返信する。
【０１３３】
ステップＳ７２において、ＳＳＤ制御部２３は、ホスト２０がＮＡＮＤメモリ１１に書き込みたいサイズが、空き領域１２４よりも大きいか否かを判定する。より具体的には、ＳＳＤ制御部２３は、返信されたステータス信号ＲｅＳに記述されたフリーブロック量１２４のデータサイズに基づいて、ホスト２０が希望する書き込みサイズが、フリーブロック量１２４のデータサイズよりも大きいか否かを判定する。ステップＳ７２の条件を満たさない場合（Ｓ７２でＮｏ）、ステップＳ７４へ続く。
【０１３４】
ステップＳ７３において、ＳＳＤ制御部２３は、ホスト２０がＮＡＮＤメモリ１１に書き込みたいサイズが空き領域１２４のデータサイズよりも大きい場合（Ｓ７２でＹｅｓ）、書き込みサイズを空き領域１２４のデータサイズに合致させて、このサイズに設定する。
【０１３５】
ステップＳ７４において、ＳＳＤ制御部２３は、設定したデータサイズに基づき、書き込みコマンドＣＯＭを、データアクセス制御部１２５へ発行する。より具体的には、Ｓ７２でＮｏの場合、先行実施したバックグランド処理ＢＧにより作成した空き領域１２４のデータサイズが、ホスト２０が書き込みたいサイズよりも大きいため、当該作成した空き領域１２４のデータサイズに基づき、データ書き込みを行うように、書き込みコマンドＣＯＭを発行する。一方、Ｓ７３から続く場合、ホスト２０の書き込みサイズを、空き領域１２４のデータサイズに合致させたデータサイズに基づき、データ書き込みを行うように、書き込みコマンドＣＯＭを発行する。
【０１３６】
その他のバックグランド処理の先行実施Ｏｎ／Ｏｆｆ、データ書き込み動作、および書き込み動作等に関しては、上記第１、第２実施形態と実質的に同様であるため、その詳細な説明を省略する。
【０１３７】
［作用効果］
以上説明したように、変形例１に係る情報処理システム１によれば、少なくとも上記（１）乃至（５）と同様の効果を得られる。
【０１３８】
ここで、変形例１によれば、ホスト２０は、ＳＳＤ１０へコマンドｅＣＯＭ２の発行し、ＳＳＤ１０の空き領域１２４の作成状況を問合わせ（図２０のＳ７１）、当該問合せに基づき、空き領域分のデータ量を書き込む（図２０のＳ７２からＳ７４）。換言すれば、変形例１では、ホスト２０は、ＳＳＤ１０がバックグランド処理ＢＧを先行実施中であって、空き領域１２４が書き込み予定量１２３に満たない場合であっても、空き領域１２４のデータサイズに合わせて書けるデータサイズだけ書く（図２０のＳ７３）。また、ホスト２０は、バックグランド処理ＢＧの先行実施Ｏｎの指示を出していない場合であっても、ＮＡＮＤメモリ１１の空き領域に合わせて、書けるデータサイズだけ書くことも可能である。
【０１３９】
例えば、変形例１に係る情報処理システム１により実行される制御は、図２１のように示される。
【０１４０】
図２１に示すように、時刻ｔ１において、ホスト２０は、ＳＳＤ１０へコマンドｅＣＯＭ２を発行し、ＳＳＤ１０の空き領域１２４の作成状況のチェック１を行う（図２０のＳ７１）。
【０１４１】
時刻ｔ２において、ホスト２０は、当該チェック１のチェック結果に基づいて、ＳＳＤ１０へコマンドｅＣＯＭ１を送信し、バックグランド処理であるガベージコレクションの先行実施のＯｎを要求する。
【０１４２】
時刻ｔ３において、ホスト２０は、同様にＳＳＤ１０へコマンドｅＣＯＭ２を発行し、ＳＳＤ１０の空き領域１２４の作成状況のチェック２を行う。
【０１４３】
時刻ｔ４において、ホスト２０は、当該チェック２のチェック結果である拡張的なステータス信号ＲｅＳに記述された空き容量１２４のデータサイズ１ＧＢに基づいて、ＳＳＤ１０へ書き込みコマンドＣＯＭを発行し、ＳＳＤ１０にデータサイズ１ＧＢのデータ書き込みを実行させる。
【０１４４】
このように、変形例１によれば、処理スケジューラ１２１および書き込み予定量１２３を備えることなく、情報処理システム１の利便性をより向上できる。また、必要に応じて、変形例１を適用することが可能である。
【０１４５】
（第３実施形態）
第３実施形態においては、上記第１、第２実施形態および変形例１で説明した情報処理システム１の詳細構成について説明する。
【０１４６】
［情報処理システム１の詳細構成］
図２２は、第３実施形態に係る情報処理システム１の詳細構成の一例を示すブロック図である。図２２において、上記第１、第２実施形態および変形例１に係る処理スケジューラ１２１やグランド処理部１２１は、例えばＣＰＵ４３Ｂ等に対応する。また、上記第１、第２実施形態および変形例１に係るデータアクセス制御部１２５は、例えばホストインタフェース４１等に対応する。書き込み予定量１２３やフリーブロック量１２４は、揮発性のメモリ上に展開されて使用されてもよい。
【０１４７】
図２２に示すように、コントローラ１２は、フロントエンド１２Ｆと、バックエンド１２Ｂとを備える。
【０１４８】
フロントエンド（ホスト通信部）１２Ｆは、ホストインタフェース４１、ホストインタフェースコントローラ４２、暗号化／復号化部４４、及びＣＰＵ４３Ｆを備える。
【０１４９】
ホストインタフェース４１は、情報処理装置２との間で、要求（書き込みコマンド、読み出しコマンド、消去コマンド等）、論理アドレスＬＢＡ及びデータ等を通信する。
【０１５０】
ホストインタフェースコントローラ（制御部）４２は、ＣＰＵ４３Ｆの制御に基づいて、上記ホストインタフェース４１の通信を制御する。
【０１５１】
暗号化／復号化部（Advanced Encryption Standard (AES)）４４は、データ書き込み動作において、ホストインタフェースコントローラ４２から送信される書き込みデータ（平文）を暗号化する。暗号化／復号化部４４は、データ読み出し動作において、バックエンド４ＢのリードバッファＲＢから送信される暗号化された読み出しデータを復号化する。なお、必要に応じて、この暗号化／復号化部４４を介さずに、書き込みデータ及び読み出しデータを送信することも可能である。
【０１５２】
ＣＰＵ４３Ｆは、フロントエンド４Ｆの上記各構成４１，４２，４４を制御し、フロントエンド１２Ｆの全体の動作を制御する。
【０１５３】
バックエンド（メモリ通信部）１２Ｂは、ライトバッファＷＢ、リードバッファＲＢ、ＬＵＴ部４５、ＤＤＲＣ４６、ＤＲＡＭ４７、ＤＭＡＣ４８、ＥＣＣ４９、ランダマイザＲＺ、ＮＡＮＤＣ５０、及びＣＰＵ４３Ｂを備える。
【０１５４】
ライトバッファ（ライトデータ転送部）ＷＢは、ホスト２０から送信された書き込みデータＷＤを一時的に格納する。具体的には、ライトバッファＷＢは、当該書き込みデータＷＤがＮＡＮＤメモリ１１に適した所定のデータサイズになるまで、一時的にデータを格納する。
【０１５５】
リードバッファ（リードデータ転送部）ＲＢは、ＮＡＮＤメモリ１１から読み出された読み出しデータＲＤを一時的に格納する。具体的には、リードバッファＲＢにおいて、読み出しデータＲＤは、ホスト２０に適した順序（ホスト２０が指定した論理アドレスＬＢＡの順序）になるように並び替えられる。
【０１５６】
ＬＵＴ（Look Up Table）４５は、変換テーブルを参照し、論理アドレスＬＢＡを所定の物理アドレスＰＢＡに変換する。
【０１５７】
ＤＤＲＣ４６は、ＤＲＡＭ４７におけるＤＤＲ（Double Data Rate）を制御する。
【０１５８】
ＤＲＡＭ（Dynamic Random Access Memory）４７は、例えば、ＬＵＴ４５を格納する揮発性のメモリである。
【０１５９】
ＤＭＡＣ（Direct Memory Access Controller）４８は、内部バスＩＢを介して、書き込みデータＷＤや読み出しデータＲＤなどを転送する。図２２では、１つのＤＭＡＣ４８が図示されているが、コントローラ１２は、２以上のＤＭＡＣ４８を備えてもよい。ＤＭＡＣ４８は、必要に応じて、コントローラ４内の様々な位置に設定される。
【０１６０】
ＥＣＣ（誤り訂正部）４９は、ライトバッファＷＢから送信される書き込みデータＷＤにＥＣＣ（Error Correcting Code）を付加する。ＥＣＣ４９は、リードバッファＲＢに送信する際に、付加したＥＣＣを用いて、ＮＡＮＤメモリ１１から読み出した読み出しデータＲＤを必要に応じて訂正する。
【０１６１】
ランダマイザＲＺ（又はScrambler）は、データ書き込み動作の際に、書き込みデータＷＤがＮＡＮＤメモリ１１の特定のページ又はワード線方向などに偏らないように、書き込みデータＷＤを分散させる。このように、書き込みデータＷＤを分散させることで、書き込み回数を平準化でき、ＮＡＮＤメモリ１１のメモリセルのセル寿命を長期化できる。そのため、ＮＡＮＤメモリ１１の信頼性を向上できる。また、データ読み出し動作の際に、ＮＡＮＤメモリ１１から読み出された読み出しデータＲＤは、ランダマイザＲＺを通過する。
【０１６２】
ＮＡＮＤＣ（NAND Controller）５０は、所定の速度の要求を満たすため、複数のチャンネル（ここでは、４つのチャンネルＣＨ０〜ＣＨ３）を用いて、並列にＮＡＮＤメモリ１１にアクセスする。
【０１６３】
ＣＰＵ４３Ｂは、バックエンド１２Ｂの上記各構成（４５〜５０，ＲＺ）を制御し、バクエンド１２Ｂの全体の動作を制御する。
【０１６４】
なお、図２２に示したコントローラ１２の構成は例示であり、この構成に限定されることはない。
【０１６５】
［ストレージシステム１００］
図２３は、第３実施形態に係るストレージシステム１００を示す斜視図である。
【０１６６】
ストレージシステム１００は、ＳＳＤとしての複数のメモリシステム１０を備える。
【０１６７】
メモリシステム１０の外観は、例えば比較的小型のモジュールであり、その外形寸法の一例は、２０ｍｍ×３０ｍｍ程度である。なお、メモリシステム１０の大きさ及び寸法は、これに限られるものではなく、種々の大きさのものに適宜変更可能である。
【０１６８】
また、メモリシステム１０は、例えば、企業（エンタープライズ）で運用されるデータセンター又はクラウドコンピューティングシステムにおいて、サーバのような情報処理装置であるホスト２０に装着されて使用可能である。そのため、メモリシステム１０は、エンタープライズ用ＳＳＤ（ｅＳＳＤ）であってもよい。
【０１６９】
メモリシステム１０は、例えば上方に開口した複数のコネクタ（例えばスロット）３０を備える。各コネクタ３０は、例えばＳＡＳ（Serial Attached SCSI）コネクタ等である。このＳＡＳコネクタによれば、6GbpsのDual Portにより、ホスト２０と各メモリシステム１０とが互いに高速通信を行うことが可能である。なお、これに限られず、各コネクタ３０は、例えば、ＰＣＩｅ（PCI Express）又はＮＶＭｅ（NVM Express）等であってもよい。
【０１７０】
複数のメモリシステム１０は、ホスト２０のコネクタ３０にそれぞれ装着され、略鉛直方向に起立した姿勢で互いに並べて支持される。このような構成によれば、複数のメモリシステム１０をコンパクトに纏めて実装可能であり、メモリシステム１０の小型化を図ることができる。さらに、第３実施形態に係るメモリシステム１０の各形状は、２．５型のＳＦＦ（Small Form Factor)である。このような形状により、メモリシステム１０は、エンタープライズ用ＨＤＤ（ｅＨＤＤ）と互換形状（コンパチ形状）を図ることができ、ｅＨＤＤとの容易なシステム互換性を実現することができる。
【０１７１】
なお、メモリシステム１０は、エンタープライズ用に限られない。例えば、メモリシステム１０は、ノートブック型ポータブルコンピュータ又はタブレット型端末のようなコンシューマ用の電子機器の記憶媒体としても適用可能である。
【０１７２】
以上説明したように、第３実施形態に係る情報処理システム１およびストレージシステム１００は、大容量の記憶に、上記第１、第２実施形態、変形例１と同様の効果を得ることができる。
【０１７３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１７４】
１…情報処理システム、１０…メモリシステム、１１…ＮＡＮＤメモリ（不揮発性メモリ）、１２…コントローラ、２０…ホスト、２１…ＯＳ、２２…ドライバ、２３…ＳＳＤ制御部、１２１…処理スケジューラ、１２２…バックグランド処理部、１２３…書き込み予定量、１２４…フリーブロック量、Block 0 〜Block n…物理ブロック
【図１】
2016122227.tif 000003
【図２】
2016122227.tif 000004
【図３】
2016122227.tif 000005
【図４】
2016122227.tif 000006
【図５】
2016122227.tif 000007
【図６】
2016122227.tif 000008
【図７】
2016122227.tif 000009
【図８】
2016122227.tif 000010
【図９】
2016122227.tif 000011
【図１０】
2016122227.tif 000012
【図１１】
2016122227.tif 000013
【図１２】
2016122227.tif 000014
【図１３】
2016122227.tif 000015
【図１４Ａ】
2016122227.tif 000016
【図１４Ｂ】
2016122227.tif 000017
【図１４Ｃ】
2016122227.tif 000018
【図１５Ａ】
2016122227.tif 000019
【図１５Ｂ】
2016122227.tif 000020
【図１６Ａ】
2016122227.tif 000021
【図１６Ｂ】
2016122227.tif 000022
【図１６Ｃ】
2016122227.tif 000023
【図１７】
2016122227.tif 000024
【図１８】
2016122227.tif 000025
【図１９】
2016122227.tif 000026
【図２０】
2016122227.tif 000027
【図２１】
2016122227.tif 000028
【図２２】
2016122227.tif 000029
【図２３】
2016122227.tif 000030