(57)【要約】      （修正有）【課題】ガベージコレクションが実行されるタイミングを制御することにより、コマンドの処理とガベージコレクションの処理が競合することを抑制する。【解決手段】コマンドの受信状況に基づいてガベージコレクションの開始タイミング及び停止タイミングを決定する。キャッシュメモリに蓄積されたコマンドの数が所定の値を下回った状態においてガベージコレクションを開始しＴ１、キャッシュメモリに蓄積されたコマンドの数が所定の値を上回った場合にはガベージコレクションを停止するＴ２。これにより、コマンドに基づく処理と、ガベージコレクションの処理との競合を抑制する。【選択図】図８
2018181281.tif 000002
【特許請求の範囲】
【請求項１】
ガベージコレクションを実行するストレージ装置と、
メモリを有し、前記ストレージ装置を制御する制御装置と、
を含むストレージシステムであって、
前記制御装置は、
前記ストレージ装置に対するコマンドを受信し、
受信された前記コマンドを前記メモリに保持し、
前記メモリに保持されている前記コマンドの数が第１の値以下であるかを判定し、
前記メモリに保持されている前記コマンドの数が前記第１の値以下である場合に、前記ガベージコレクションの開始を指示する開始指示を前記ストレージ装置に送信し、
前記ストレージ装置は、前記開始指示に基づき、前記ガベージコレクションを開始する
ことを特徴とするストレージシステム。
【請求項２】
前記制御装置は、前記ガベージコレクションの前記開始指示を送信した後、前記メモリに保持されている前記コマンドの数が第２の値以上になった場合に、前記ガベージコレクションの停止を指示する停止指示を前記ストレージ装置に送信し、
前記ストレージ装置は、前記停止指示に基づき、前記ガベージコレクションを停止する
ことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記制御装置は、前記ストレージ装置の空き容量が第１容量値以下であり、かつ前記メモリに保持されている前記コマンドの数が前記第１の値以下である場合に、前記ガベージコレクションの前記開始指示を前記ストレージ装置に送信する
ことを特徴とする請求項１又は２に記載のストレージシステム。
【請求項４】
前記制御装置は、前記ストレージ装置の空き容量が第２容量値以上であるか、又は、前記メモリに保持されている前記コマンドの数が第２の値以上である場合に、前記ガベージコレクションの前記停止指示を前記ストレージ装置に送信する
ことを特徴とする請求項２又は３に記載のストレージシステム。
【請求項５】
前記制御装置は、前記メモリに保持されている前記コマンドの数が、第１期間に渡って継続して、前記第１の値以下である場合に、前記ガベージコレクションの前記開始指示を前記ストレージ装置に送信する
ことを特徴とする請求項１乃至４何れか一項に記載のストレージシステム。
【請求項６】
前記制御装置は、前記メモリに保持されている前記コマンドの数が、第２期間に渡って継続して、前記第２の値以上である場合に、前記ガベージコレクションの前記停止指示を前記ストレージ装置に送信する
ことを特徴とする請求項２乃至５何れか一項に記載のストレージシステム。
【請求項７】
前記制御装置は、
前記メモリに保持された前記コマンドを実行することにより、前記ストレージ装置へのアクセスを実行し、
前記アクセスに基づき、前記コマンドに対する処理完了通知を送信する
ことを特徴とする請求項１乃至６何れか一項に記載のストレージシステム。
【請求項８】
前記ストレージシステムは、更に電源装置を含み、
前記制御装置は、前記ガベージコレクションの前記開始指示の送信する場合、前記電源装置から前記ストレージ装置へ供給される電力量を増加させるよう、前記ストレージ装置を制御する
ことを特徴とする請求項１乃至７何れか一項に記載のストレージシステム。
【請求項９】
ガベージコレクションを実行するストレージ装置を制御する、メモリを有する制御装置であって、
前記ストレージ装置に対するコマンドを受信し、
受信された前記コマンドを前記メモリに保持し、
前記メモリに保持されている前記コマンドの数が第１の値以下であるかを判定し、
前記メモリに保持されている前記コマンドの数が前記第１の値以下である場合に、前記ガベージコレクションの開始を指示する開始指示を前記ストレージ装置に送信する
ことを特徴とする制御装置。
【請求項１０】
制御装置に接続され、不揮発性メモリを有するストレージ装置であって、
前記不揮発性メモリの空き容量を検出し、
前記空き容量が第１の値以下になった場合に、前記不揮発性メモリの第１ガベージコレクションを開始し、
前記空き容量が前記第１の値よりも大きい第２の値以上になった場合に、前記第１ガベージコレクションを停止し、
前記制御装置から開始指示を受信した場合に、前記不揮発性メモリの第２ガベージコレクションを開始し、
前記制御装置から停止指示を受信した場合に、前記第２ガベージコレクションを停止し、
前記第１ガベージコレクションが実行されている間に前記停止指示を受信した場合は、前記第１ガベージコレクションを継続する
ことを特徴とするストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ストレージシステム、制御装置及びストレージ装置に関する。
【背景技術】
【０００２】
近年、ストレージシステムにおいて、Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ（ＳＳＤ）がデータを格納するストレージ装置として利用されている。ＳＳＤは、データ格納部として不揮発性メモリであるフラッシュメモリを含み、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）に比べて格納されたデータへのランダムアクセス特性などにおいて優位性を有する。
【０００３】
ストレージシステムは、ホストサーバからデータの書き込みを要求するライトコマンドを受信した場合、ライトコマンドの対象となるデータを、ＳＳＤのフラッシュメモリへ書き込む処理を実行する。同様にストレージシステムは、ホストサーバからデータの読み出しを要求するリードコマンドを受信した場合、リードコマンドの対象となるデータを、ＳＳＤのフラッシュメモリから読み出す処理を実行する。データの書き込みや読み出しの処理が終了した後、ストレージシステムは、処理完了通知をホストサーバへ送信する。ホストサーバがライトコマンドやリードコマンド（以下、併せて単に「コマンド」と呼ぶ）をストレージシステムに送信してから、ホストサーバがストレージシステムから処理完了通知を受信するまでの時間をレスポンスタイムと呼ぶ。レスポンスタイムが短いことは、ホストサーバ側から見た場合のストレージシステムの応答速度が速いことを意味し、ストレージシステムの処理性能の指標の一つとなる。
【０００４】
ＳＳＤにおいては、フラッシュメモリの空き容量が減少した場合に、既にフラッシュメモリに書き込まれたデータであって不要となったデータを消去して空き容量を増加させる、ガベージコレクションと呼ばれる処理が実行される。ガベージコレクションにおいては、フラッシュメモリのある領域に格納されたデータの読み出し処理、当該データの他の領域への書き込み処理、及び元の領域の消去処理が実行されることにより、元の領域が空き領域として確保される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１３２５０５号公報
【特許文献２】特開平６−２２２９８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＳＳＤがフラッシュメモリのガベージコレクションを実行している状態において、ＳＳＤに対してコマンドが発行された場合、コマンドに基づくフラッシュメモリへのアクセスが、ガベージコレクションによる処理と競合する。そのため、コマンドに基づく処理が、ガベージコレクションが実行されていない状態における処理に比べて遅延する。この遅延が、レスポンスタイムの悪化の一因となる。
【０００７】
本発明は、ガベージコレクションが実行されるタイミングを制御することにより、コマンドの処理とガベージコレクションの処理が競合することを抑制することを目的とする。
【課題を解決するための手段】
【０００８】
ガベージコレクションを実行するストレージ装置と、メモリを有し、前記ストレージ装置を制御する制御装置と、を含むストレージシステムであって、前記制御装置は、前記ストレージ装置に対するコマンドを受信し、受信された前記コマンドを前記メモリに保持し、前記メモリに保持されている前記コマンドの数が第１の値以下であるかを判定し、前記メモリに保持されている前記コマンドの数が前記第１の値以下である場合に、前記ガベージコレクションの開始を指示する開始指示を前記ストレージ装置に送信し、前記ストレージ装置は、前記開始指示に基づき、前記ガベージコレクションを開始するストレージシステムが開示される。
【発明の効果】
【０００９】
ガベージコレクションが実行されるタイミングを、コマンドの受信状況に基づいて制御することにより、コマンドの処理とガベージコレクションの処理が競合することを抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】ストレージシステムの構成図である。
【図２】制御装置のハードウェア構成を示す図である。
【図３】ストレージ装置のハードウェア構成を示す図である。
【図４】ストレージ装置が実行する自走ＧＣを説明するための図である。
【図５】自走ＧＣが実行されていない状態のストレージ装置に対するデータの書き込み処理を説明するためのラダーチャートである。
【図６】自走ＧＣが実行されている状態のストレージ装置に対するデータの書き込み処理を説明するためのラダーチャートである。
【図７】第１実施例における制御装置のプロセッサの機能ブロック図である。
【図８】第１実施例におけるホストＧＣの開始及び停止のタイミングを説明するための図である。
【図９】第１実施例において制御装置のプロセッサによって実行される処理のフローチャートである。
【図１０】第１実施例におけるプロセッサの機能ブロック図である。
【図１１】第１実施例においてストレージ装置のプロセッサによって実行される処理のフローチャートである。
【図１２】第１実施例の変形例におけるホストＧＣの開始及び停止のタイミングを説明するための図である。
【図１３】第１実施例の変形例において制御装置のプロセッサによって実行される処理のフローチャートである。
【図１４】第２実施例におけるＧＣの実行とフラッシュメモリの空き容量率との関係を示す図である。
【図１５】第２実施例におけるホストＧＣの開始及び停止とフラッシュメモリの空き容量率との関係を示す図である。
【図１６】第２実施例において制御装置のプロセッサによって実行される処理のフローチャートである。
【図１７】第３実施例において制御装置のプロセッサによって実行される処理のフローチャートである。
【図１８】第３実施例においてストレージ装置のプロセッサによって実行される処理のフローチャートである。
【図１９】第４実施例における制御装置のプロセッサの機能ブロック図である。
【図２０】第４実施例におけるストレージ装置のハードウェア構成を示す図である。
【図２１】第４実施例において制御装置のプロセッサによって実行される処理のフローチャートである。
【発明を実施するための形態】
【００１１】
＜第１実施例＞
図１はストレージシステムの構成図である。図１においてストレージシステム２００は、情報処理装置１００に接続される。ストレージシステム２００は、制御装置３００、ストレージ装置４００及び電源装置５００を含む。
【００１２】
情報処理装置１００は例えばサーバであり、ストレージシステム２００にコマンドを送信することにより、データをストレージ装置４００に格納させ、またデータをストレージ装置４００から読み出す。制御装置３００は例えばストレージ装置４００を制御するためのＣｏｎｔｒｏｌ  Ｍｏｄｕｌｅ（ＣＭ）である。制御装置３００は、情報処理装置１００からコマンドを受信し、受信されたコマンドを後述のキャッシュメモリに蓄積させる。そしてキャッシュメモリに蓄積されたコマンドを順次実行することによってストレージ装置４００にアクセスし、データの書き込みやデータの読み出しを実行する。ストレージ装置４００は、後述のフラッシュメモリを含むデータ格納装置、例えばＳＳＤである。ストレージ装置４００は、フラッシュメモリのガベージコレクション（以下、「ＧＣ」と表記する）を実行する機能を有する。電源装置５００は、制御装置３００及びストレージ装置４００に電力を供給する。
【００１３】
図２は、制御装置３００のハードウェア構成を示す図である。制御装置３００は、Ｃｈａｎｎｅｌ  Ａｄａｐｔｏｒ（ＣＡ）３１０と、プロセッサ３２０と、不揮発性メモリ３３０と、揮発性メモリ３４０と、Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｃｏｎｔｒｏｌｌｅｒ（ＩＯＣ）３５０と、Ｅｘｐａｎｄｅｒ（ＥＸＰ）３６０とを有する。
【００１４】
ＣＡ３１０は、情報処理装置１００に対するインターフェース回路であり、情報処理装置１００からコマンドやデータを受信する。また、ストレージ装置４００から読み出されたデータは、ＣＡ３１０を介して情報処理装置１００に対して送信される。また、制御装置３００が情報処理装置１００からコマンドを受信した場合、当該コマンドに関するコマンド処理が完了したことを示す処理完了通知がＣＡ３１０を介して情報処理装置１００に対して送信される。
【００１５】
プロセッサ３２０は、不揮発性メモリ３３０に格納されたコンピュータプログラムを揮発性メモリ３４０にロードして実行する。例えばプロセッサ３２０は、コマンドの受信に応じて、データの書き込み処理又は読み出し処理を実行する。プロセッサ３２０はハードウェアプロセッサであり、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）、Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ（ＭＣＵ）、Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＭＰＵ）、Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ（ＤＳＰ）の他、Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）やＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＡＳＩＣ）も適用可能である。
【００１６】
不揮発性メモリ３３０は、コンピュータで読み取り可能な記録媒体である。不揮発性メモリ３３０には、プロセッサ３２０によって実行されるコンピュータプログラム等が格納される。不揮発性メモリ３３０は、例えばＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）、Ｍａｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（マスクＲＯＭ）、Ｐｒｏｇｒａｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＰＲＯＭ）、フラッシュメモリ、Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＭＲＡＭ）、Ｒｅｓｉｓｔａｎｃｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲｅＲＡＭ）、Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＦｅＲＡＭ）等である。コンピュータプログラムは、不揮発性メモリ３３０以外の記憶媒体であって、コンピュータで読み取り可能な記録媒体（ただし、搬送波は除く）に記録されることもできる。また、コンピュータプログラムが記録されたＤｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ（ＤＶＤ）、Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＣＤ−ＲＯＭ）などの可搬型記録媒体を流通させることもできる。また、コンピュータプログラムは、ネットワークを介して送信され得る。
【００１７】
揮発性メモリ３４０は、コンピュータで読み取り可能な記録媒体である。揮発性メモリ３４０には、不揮発性メモリ３３０に格納されているコンピュータプログラムがロードされる。また揮発性メモリ３４０には、プロセッサ３２０による演算処理に使用されるデータや演算処理の結果であるデータ等が保持される。また揮発性メモリ３４０は、制御装置３００がコマンドを受信した際にキャッシュメモリとして使用され、コマンドや、書き込み対象となるデータ又は読み出し対象となるデータがキャッシュメモリに保持される。揮発性メモリ３４０は、例えばＳｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＳＲＡＭ）やＤｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＤＲＡＭ）等である。
【００１８】
ＩＯＣ３５０は制御装置３００とストレージ装置４００との間で行われるデータの送受信を制御する。ＥＸＰ３６０は、制御装置３００とストレージ装置４００との間で行われるデータの送受信を中継する。
【００１９】
図３は、ストレージ装置４００のハードウェア構成を示す図である。ストレージ装置４００は、インターフェースカード４１０、プロセッサ４２０、不揮発性メモリ４３０、揮発性メモリ４４０、フラッシュメモリ４７０を有する。
【００２０】
インターフェースカード４１０は制御装置３００に対するインターフェース回路として機能する。プロセッサ４２０は、不揮発性メモリ４３０に格納されたコンピュータプログラムを揮発性メモリ４４０にロードして実行することにより、所定のデータ処理を行う。例えばプロセッサ４２０は、フラッシュメモリ４７０に対するＧＣを実行する。またプロセッサ４２０は、コマンドに応じてフラッシュメモリ４７０へのデータの書き込みやデータの読み出しを行う。プロセッサ４２０はハードウェアプロセッサであり、ＣＰＵ、ＭＣＵ、ＭＰＵ、ＤＳＰの他、ＦＰＧＡやＡＳＩＣも適用可能である。
【００２１】
不揮発性メモリ４３０は、コンピュータで読み取り可能な記録媒体である。不揮発性メモリ４３０には、プロセッサ４２０によって実行されるコンピュータプログラム等が格納される。不揮発性メモリ４３０は、例えばＲＯＭ、マスクＲＯＭ、ＰＲＯＭ、フラッシュメモリ、ＭＲＡＭ、ＲｅＲＡＭ、ＦｅＲＡＭ等である。揮発性メモリ４４０は、コンピュータで読み取り可能な記録媒体である。揮発性メモリ４４０には、不揮発性メモリ４３０に格納されているコンピュータプログラムがロードされる。また揮発性メモリ４４０には、プロセッサ４２０による演算処理に使用されるデータや演算処理の結果であるデータ等が保持される。揮発性メモリ４４０は、例えばＳＲＡＭやＤＲＡＭ等である。フラッシュメモリ４７０は不揮発性のメモリであり、ストレージ装置４００のデータ格納部として機能する。
【００２２】
図４はストレージ装置４００が実行する自走ＧＣを説明するための図である。ストレージ装置４００は、フラッシュメモリ４７０の全容量に対する空き容量の比率（以下、空き容量率）をモニタする。空き容量率が所定の値、例えばＡ％以下となった場合には、ストレージ装置４００はフラッシュメモリ４７０のＧＣを実行する。ＧＣが実行されることにより、フラッシュメモリ４７０内の不要データが消去され、フラッシュメモリ４７０の空き容量率が増加する。空き容量率が所定の値、例えばＢ％（Ｂ％＞Ａ％）以上になると、ストレージ装置４００はフラッシュメモリ４７０のＧＣを停止する。このようにストレージ装置４００は、フラッシュメモリ４７０の空き容量率に基づいて、自らＧＣの開始及び停止を行う。本明細書においては、ストレージ装置４００自身の判断に基づいて実行されるＧＣを「自走ＧＣ」と呼ぶ。
【００２３】
尚、図４においては空き容量率に基づくＧＣの開始及び停止の判断が行われる例が説明されたが、空き容量率ではなく、空き容量の絶対量に基づいて、ＧＣの開始及び停止の判断が行われてもよい。尚、本明細書において「空き容量」という表記は、「空き容量率」と「空き容量の絶対量」の両方を含む上位概念の文言として使用されるものとする。
【００２４】
図５は、自走ＧＣが実行されていない状態のストレージ装置４００に対するデータの書き込み処理を説明するためのラダーチャートである。まず処理Ｓ６００において情報処理装置１００が、データＸに関するライトコマンドを生成し、制御装置３００に送信する。ライトコマンドを受信した制御装置３００は、処理Ｓ６１０において、データＸをキャッシュメモリ（揮発性メモリ３４０）に保持させる。その後、処理Ｓ６２０において制御装置３００は、データＸをストレージ装置４００へ送信する。データＸを受信したストレージ装置４００は、処理Ｓ６３０においてデータＸをフラッシュメモリ４７０に格納する。そして処理Ｓ６４０においてストレージ装置４００は、データＸの格納が完了したことを示す格納完了通知を制御装置３００に送信する。格納完了通知を受信した制御装置３００は、処理Ｓ６５０において、ライトコマンドに対する処理が完了したことを示す処理完了通知を、情報処理装置１００に送信する。図５においては、情報処理装置１００がライトコマンドを送信してから、情報処理装置１００が処理完了通知を受信するまでの時間がレスポンスタイムに相当する。
【００２５】
図６は、自走ＧＣが実行されている状態のストレージ装置４００に対するデータの書き込み処理を説明するためのラダーチャートである。図６において、図５にて説明された処理と同一の処理については同一の参照符号が付され、説明は適宜省略される。
【００２６】
処理Ｓ６００において情報処理装置１００がライトコマンドを送信し、当該ライトコマンドに基づき、処理Ｓ６２０において制御装置３００が、データＸをストレージ装置４００に送信する。図５に示された処理と相違し、データＸがストレージ装置４００に送信された時点においては、ストレージ装置４００が自走ＧＣを実行している。この場合、フラッシュメモリ４７０へのデータＸの格納処理（処理Ｓ６３０）は、自走ＧＣによる処理と競合することによって遅延する場合がある。そして処理Ｓ６３０が実行された後、ストレージ装置４００から制御装置３００へ格納完了通知が送信され（処理Ｓ６４０）、更に、処理完了通知が制御装置３００から情報処理装置１００へ送信される（処理Ｓ６５０）。
【００２７】
図５に示された例におけるレスポンスタイムに比べて、図６に示される例におけるレスポンスタイムは約１．５倍から８倍程度となることを示す結果が、発明者による実測により得られた。
【００２８】
上述したように、ストレージ装置４００は、フラッシュメモリ４７０の空き容量をモニタし、空き容量が所定値以下となった場合に、自走ＧＣを実行する。しかし図６に示されたように、コマンド処理が実行されるタイミングにおいて自走ＧＣが実行中であると、コマンドに対するレスポンスタイムが増加するという課題がある。
【００２９】
本発明では、制御装置３００が、コマンドの受信状況に基づいてストレージ装置４００にＧＣの開始及び停止を指示する。本明細書において、制御装置３００の指示に基づいて実行されるフラッシュメモリ４７０のＧＣを「ホストＧＣ」と呼ぶ。尚、単なる「ＧＣ」という文言は、ホストＧＣと自走ＧＣの両方を含む上位概念の文言として用いられる。
【００３０】
図７は、第１実施例における制御装置３００のプロセッサ３２０の機能ブロック図である。プロセッサ３２０は、データ送受信部３２１、キャッシュメモリ制御部３２２、ストレージ装置制御部３２３、ＧＣ制御部３２４として機能する。データ送受信部３２１は、情報処理装置１００からのコマンドやデータを受信し、またデータや処理完了通知を情報処理装置１００へ送信する。キャッシュメモリ制御部３２２は、キャッシュメモリへのコマンドの入力、キャッシュメモリへのデータの書き込みやキャッシュメモリからのデータの読み出し等、キャッシュメモリの制御全般を行う。ストレージ装置制御部３２３は、ストレージ装置４００へのデータの書き込みやストレージ装置４００からのデータの読み出し等、ストレージ装置４００の制御全般を行う。ＧＣ制御部３２４は、キャッシュメモリ内に蓄積されたコマンドの数（以下、「蓄積コマンド数」と呼ぶ）をモニタし、蓄積コマンド数が所定の値以下である場合に、ストレージ装置４００に対してホストＧＣの開始を指示する。
【００３１】
図８は、第１実施例におけるホストＧＣの開始及び停止のタイミングを説明するための図である。図８の（Ａ）および（Ｂ）において、縦軸は蓄積コマンド数を示し、横軸は時間の経過を示す。図８の（Ａ）は、ＧＣ制御部３２４がホストＧＣの開始を指示するタイミングを説明するための図である。まず図８の（Ａ）に示されるように、時刻Ｔ１までの期間においては、蓄積コマンド数が所定の値（第１の値）を超過している。この場合、キャッシュメモリ内に蓄積されたコマンドが順次実行され、フラッシュメモリ４７０へのアクセスが行われるため、仮にこのタイミングでホストＧＣが実行されると、コマンド処理に遅延が発生すると予測される。そのため、ＧＣ制御部３２４は、ホストＧＣの開始指示は行わない。そして時刻Ｔ１に蓄積コマンド数が第１の値以下となると、ＧＣ制御部３２４はホストＧＣの開始をストレージ装置４００に指示する。
【００３２】
図８の（Ｂ）は、ＧＣ制御部３２４がホストＧＣの停止を指示するタイミングを説明するための図である。図８の（Ｂ）において時刻Ｔ２より以前の時刻においてホストＧＣが実行されているものとする。そして時刻Ｔ２に蓄積コマンド数が第２の値以上となると、ＧＣ制御部３２４はホストＧＣの停止をストレージ装置４００に指示する。
【００３３】
このように本実施例では、蓄積コマンド数が第１の値以下になったときにＧＣ制御部３２４がホストＧＣの開始を指示し、蓄積コマンド数が第２の値以上になったときにＧＣ制御部３２４がホストＧＣの停止を指示する。そしてこれらの開始指示や停止指示に基づいて、ストレージ装置４００がフラッシュメモリ４７０のホストＧＣを実行する。これにより、フラッシュメモリ４７０の空き容量が増加するため、ストレージ装置４００が自走ＧＣを実行する回数が抑制されるものと考えられる。自走ＧＣは、コマンドの受信状況とは無関係に実行されるため、受信コマンドに対するレスポンス特性が悪化する原因となるが、自走ＧＣの実行が抑えられることにより、受信コマンドに対するレスポンス特性を向上させることが可能となる。
【００３４】
尚、図８の（Ａ）と（Ｂ）において、第１の値と第２の値は同一の値であってもよく、又は互いに相違する値であってもよい。
【００３５】
図９は、第１実施例において制御装置３００のプロセッサ３２０によって実行される処理のフローチャートである。処理フローは処理Ｓ７００により開始され、処理Ｓ７０５においてＧＣ制御部３２４が、ストレージ装置４００においてＧＣが実行中か否かを判定する。具体的には、ＧＣ制御部３２４が、ＧＣが実行中であるか否かを示す情報をプロセッサ４２０から取得する。ＧＣが実行中であると判定された場合は、処理フローは処理Ｓ７３０へ進み、ＧＣが実行中であると判定されない場合は、処理フローは処理Ｓ７１０へ進む。
【００３６】
処理フローが処理Ｓ７１０へ進んだ場合、処理Ｓ７１０においてＧＣ制御部３２４が、蓄積コマンド数が第１の値以下であるか否かを判定する。蓄積コマンド数が第１の値以下であると判定された場合は、処理フローは処理Ｓ７１５へ進み、蓄積コマンド数が第１の値以下であると判定されない場合は、処理フローは処理Ｓ７０５へ戻る。
【００３７】
処理フローが処理Ｓ７１５へ進んだ場合、処理Ｓ７１５においてＧＣ制御部３２４は、ストレージ装置４００にホストＧＣの開始を指示する。この指示に基づき、ストレージ装置４００はホストＧＣを開始する。その後、処理Ｓ７２０においてＧＣ制御部３２４は、蓄積コマンド数が第２の値以上であるか否かを判定する。蓄積コマンド数が第２の値以上であると判定された場合は、処理フローは処理Ｓ７２５へ進み、蓄積コマンド数が第２の値以上であると判定されない場合は、処理Ｓ７２０が繰り返し実行される。
【００３８】
処理フローが処理Ｓ７２５へ進んだ場合、処理Ｓ７２５においてＧＣ制御部３２４が、ストレージ装置４００にホストＧＣの停止を指示する。この指示に基づいてストレージ装置４００はホストＧＣを停止する。処理Ｓ７２５の後、処理フローは処理Ｓ７０５へ戻る。
【００３９】
また処理フローが処理Ｓ７３０へ進んだ場合、処理Ｓ７３０においてＧＣ制御部３２４が、実行されているＧＣが、ホストＧＣであるかを判定する。後述されるように、ストレージ装置４００は、制御装置３００からの指示に基づいてＧＣを開始する場合、当該ＧＣがホストＧＣであることを示すフラグを登録する。よって処理Ｓ７３０においては、ＧＣ制御部３２４はプロセッサ４２０と通信することで当該フラグを参照し、実行中のＧＣがホストＧＣであるかを判定することができる。そして、処理Ｓ７３０において実行中のＧＣがホストＧＣであると判定された場合は、処理フローは処理Ｓ７２０へ進み、実行中のＧＣがホストＧＣであると判定されない場合は、処理フローは処理Ｓ７０５へ戻る。
【００４０】
図１０は、第１実施例におけるプロセッサ４２０の機能ブロック図である。プロセッサ４２０は、コマンド実行部４２１、指示受信部４２２、ＧＣ実行部４２３、フラグ登録部４２４として機能する。コマンド実行部４２１は、制御装置３００からコマンドの実行が要求された場合に、当該コマンドを実行し、フラッシュメモリ４７０へのデータの書き込みやフラッシュメモリ４７０からのデータの読み出しを実行する。指示受信部４２２は、制御装置３００からの指示、例えばホストＧＣの開始指示やホストＧＣの停止指示を受信する。ＧＣ実行部４２３は、フラッシュメモリ４７０の空き容量に基づき、フラッシュメモリ４７０の自走ＧＣを実行する。またＧＣ実行部４２３は、制御装置３００からのホストＧＣの開始指示又はホストＧＣの停止指示に基づき、フラッシュメモリ４７０のホストＧＣを開始し、又はホストＧＣを停止する。この場合は、フラッシュメモリ４７０の空き容量と関係なく（空き容量率が、図４に示されるＡ％を超過している場合であっても）ホストＧＣが実施される。フラグ登録部４２４は、ホストＧＣが開始される際、当該ＧＣがホストＧＣであることを示すフラグを登録する。またフラグ登録部４２４は、ホストＧＣが停止される際、フラグの消去を行う。先述のＧＣ制御部３２４は、フラグ登録部４２４に登録されたフラグを参照することにより、実行中のＧＣがホストＧＣであるかを判定する。
【００４１】
図１１は、第１実施例においてストレージ装置４００のプロセッサ４２０によって実行される処理のフローチャートである。処理フローは処理Ｓ８００により開始され、処理Ｓ８０５において指示受信部４２２が、制御装置３００からホストＧＣの開始指示が受信されたかを判定する。ホストＧＣの開始指示が受信されたと判定された場合は、処理フローは処理Ｓ８１０へ進み、ホストＧＣの開始指示が受信されたと判定されない場合は、処理フローは処理Ｓ８３５へ進む。
【００４２】
処理フローが処理Ｓ８１０へ進んだ場合、処理Ｓ８１０においてフラグ登録部４２４が、実行されるＧＣがホストＧＣであることを示すフラグを登録する。そして処理Ｓ８１５においてＧＣ実行部４２３がフラッシュメモリ４７０のホストＧＣを開始する。
【００４３】
処理Ｓ８１５においてホストＧＣが開始された後、処理Ｓ８２０において指示受信部４２２が、制御装置３００からホストＧＣの停止指示が受信されたかを判定する。ホストＧＣの停止指示が受信されたと判定された場合は、処理フローは処理Ｓ８２５へ進み、ホストＧＣの停止指示が受信されたと判定されない場合は、処理Ｓ８２０が繰り返し実行される。
【００４４】
処理フローが処理Ｓ８２５に進んだ場合は、処理Ｓ８２５においてＧＣ実行部４２３が、ホストＧＣを停止させる。そして処理Ｓ８３０においてフラグ登録部４２４が、処理Ｓ８１０で登録されたフラグを消去する。その後、処理フローは処理Ｓ８０５へ戻る。
【００４５】
次に、処理フローが処理Ｓ８３５へ進んだ場合について説明する。処理Ｓ８３５においてＧＣ実行部４２３が、フラッシュメモリ４７０の空き容量率がＡ％以下であるかを判定する。フラッシュメモリ４７０の空き容量率がＡ％以下であると判定された場合は、処理フローは処理Ｓ８４０へ進み、フラッシュメモリ４７０の空き容量率がＡ％以下であると判定されない場合は、処理フローは処理Ｓ８０５へ戻る。処理フローが処理Ｓ８４０へ進んだ場合、処理Ｓ８４０においてＧＣ実行部４２３が自走ＧＣを開始する。その後、処理Ｓ８４５においてＧＣ実行部４２３が、フラッシュメモリ４７０の空き容量率がＢ％以上であるかを判定する。フラッシュメモリ４７０の空き容量率がＢ％以上であると判定された場合は、処理フローは処理Ｓ８５０へ進み、フラッシュメモリ４７０の空き容量率がＢ％以上であると判定されない場合は、処理Ｓ８４５が繰り返し実行される。処理Ｓ８５０においてＧＣ実行部４２３が、自走ＧＣを停止させ、その後、処理フローは処理Ｓ８０５へ戻る。
【００４６】
以上、第１実施例が開示された。第１実施例では、蓄積コマンド数に基づいて、制御装置３００がストレージ装置４００に対してホストＧＣの開始指示又は停止指示を送信する。これにより、コマンドに基づく処理が、ＧＣの処理と競合することが抑制される。
【００４７】
（変形例）
次に第１実施例の変形例が開示される。第１実施例では、図８に開示されたように、キャッシュメモリの蓄積コマンド数が第１の値以下になった時点でホストＧＣの開示の指示が発行された。しかし、単位時間に制御装置３００に入力されるコマンド数が一旦低下し、蓄積コマンド数が第１の値以下となった場合であっても、短時間後に再度、制御装置３００に入力されるコマンド数が増加し、蓄積コマンド数が第１の値を超過することがある。このような場合には、開示されたホストＧＣが短時間後に停止されることになり、フラッシュメモリ４７０の空き容量を効率的に増加させることができず、ホストＧＣの開始及び停止にプロセッサ３２０やプロセッサ４２０の処理コストが割かれることになる。ホストＧＣの停止に関しても同様に、蓄積コマンド数が第２の値を超過した時点でホストＧＣの停止指示が発行されると、短期間にホストＧＣの停止及び開始が行われる場合がある。
【００４８】
第１実施例の変形例では、所定の期間継続して、蓄積コマンド数が第１の値以下となった場合に、ホストＧＣの開示の指示が発行される。また、所定の期間継続して、蓄積コマンド数が第２の値以上となった場合に、ホストＧＣの停止指示が発行される。
【００４９】
図１２は、第１実施例の変形例におけるホストＧＣの開始及び停止のタイミングを説明するための図である。図１２の（Ａ）に示されるように、時刻Ｔ１において蓄積コマンド数が第１の値以下となり、時刻Ｔ１から期間Ｐ１が経過するまでの間、蓄積コマンド数が継続して第１の値以下の状態であった場合に、ホストＧＣの開始指示が発行される。また、図１２の（Ｂ）に示されるように、時刻Ｔ２において蓄積コマンド数が第２の値以上となり、時刻Ｔ２から期間Ｐ２が経過するまでの間、蓄積コマンド数が継続して第２の値以上の状態であった場合に、ホストＧＣの停止指示が発行される。尚、期間Ｐ１と期間Ｐ２の長さは同じであってもよく、また異なってもよい。更に、期間Ｐ１と期間Ｐ２の何れか一方だけが適用されてもよい。例えば、ホストＧＣの開始指示は、図１２の（Ａ）に示されるように時刻Ｔ１から期間Ｐ１が経過した後に発行され、一方、ホストＧＣの停止指示は、図８の（Ｂ）と同様に時刻Ｔ２において発行されてもよい。
【００５０】
図１３は、第１実施例の変形例において制御装置３００のプロセッサ３２０によって実行される処理のフローチャートである。図９にて説明された処理と同一の処理については同一の参照符号が付され、説明は適宜省略される。
【００５１】
処理フローが処理Ｓ７００にて開始され、処理Ｓ７０５において、ＧＣが実行中であると判定されない場合は、処理フローは処理Ｓ７１１へ進む。処理Ｓ７１１においてＧＣ制御部３２４が、蓄積コマンド数が期間Ｐ１の間、継続して第１の値以下であるかを判定する。蓄積コマンド数が期間Ｐ１の間、継続して第１の値以下であると判定された場合は、処理フローは処理Ｓ７１５へ進み、処理Ｓ７１５においてホストＧＣの開始指示が発行される。蓄積コマンド数が期間Ｐ１の間、継続して第１の値以下であると判定されない場合は、処理フローは処理Ｓ７０５へ戻る。
【００５２】
また、処理Ｓ７１５の後、又は処理Ｓ７３０の後、処理Ｓ７２１においてＧＣ制御部３２４が、蓄積コマンド数が期間Ｐ２の間、継続して第２の値以上であるかを判定する。蓄積コマンド数が期間Ｐ２の間、継続して第２の値以上であると判定された場合は、処理フローは処理Ｓ７２５へ進み、処理Ｓ７２５においてホストＧＣの停止指示が発行される。蓄積コマンド数が期間Ｐ２の間、継続して第２の値以上であると判定されない場合は、処理Ｓ７２１が繰り返し実行される。以上、第１実施例の変形例が開示された。
【００５３】
＜第２実施例＞
第１実施例では、蓄積コマンド数に基づいて、ホストＧＣの開始及び停止のタイミングが決定された。第２実施例においては、蓄積コマンド数及びフラッシュメモリ４７０の空き容量に基づいて、ホストＧＣの開始及び停止のタイミングが決定される。尚、第１実施例にて開示された、ストレージシステム２００の構成を示す図１、制御装置３００のハードウェア構成を示す図２、ストレージ装置４００のハードウェア構成を示す図３、制御装置３００のプロセッサ３２０の機能ブロックを示す図７、ストレージ装置４００のプロセッサ４２０の機能ブロックを示す図１０は、第２実施例にも適用される。
【００５４】
図１４は、第２実施例におけるＧＣの実行とフラッシュメモリ４７０の空き容量率との関係を示す図である。第１実施例と同様に第２実施例においても、ストレージ装置４００は、フラッシュメモリ４７０の空き容量率をモニタする。空き容量率が所定の値（図１４においてはＡ％）以下となった場合には、ストレージ装置４００はフラッシュメモリ４７０の自走ＧＣを開始し、空き容量率が所定の値（図１４においてはＢ％）以上になると、ストレージ装置４００はフラッシュメモリ４７０の自走ＧＣを停止する。
【００５５】
更に第２実施例においては、制御装置３００がストレージ装置４００から、フラッシュメモリ４７０の空き容量率を示す情報を取得する。そして、フラッシュメモリ４７０の空き容量率が所定の値（図１４においてはＣ％）以下の場合であって、かつ蓄積コマンド数が第１の値以下である場合に、制御装置３００はホストＧＣの開始を指示する。またフラッシュメモリ４７０の空き容量率が所定の値（Ｃ％）以下でない場合、又は蓄積コマンド数が第１の値以下でない場合には、制御装置３００はホストＧＣの開始を指示せず、仮にホストＧＣが実行中であればホストＧＣの停止指示を行う。このように第２実施例においては、ホストＧＣの開始及び停止指示を、蓄積コマンド数とフラッシュメモリ４７０の空き容量率の組み合わせに基づいて行う。尚、ホストＧＣの開始のトリガとなるＣ％は、自走ＧＣの開始のトリガとなるＡ％より大きい値に設定される。またＣ％は、自走ＧＣの停止のトリガとなるＢ％より小さい値に設定される。尚、ホストＧＣの停止のトリガとなる空き容量率は、自走ＧＣの停止のトリガとなるＢ％と同じ値に設定されるものとする。
【００５６】
図１５は、第２実施例におけるホストＧＣの開始及び停止とフラッシュメモリ４７０の空き容量率との関係を示す図である。図１５の（Ａ）は、ＧＣが実行されていない場合における、ホストＧＣの開始指示がなされる要件を示す。蓄積コマンド数が第１の値以下であってかつ空き容量率がＣ％以下である場合に、ホストＧＣの開始指示がなされる。蓄積コマンド数が第１の値を超過している場合、又は空き容量率がＣ％を超過している場合には、ホストＧＣの開始指示は発行されない。
【００５７】
図１５の（Ｂ）は、ホストＧＣが実行されている場合における、ホストＧＣの停止指示がなされる要件を示す図である。図１５の（Ｂ）に示されるように、蓄積コマンド数が第２の値以上である場合又は空き容量率がＢ％以上である場合に、ホストＧＣの停止指示がなされる。蓄積コマンド数が第２の値未満であってかつ空き容量率がＢ％未満の場合には、ホストＧＣの停止指示は発行されない。
【００５８】
図１６は、第２実施例において制御装置３００のプロセッサ３２０によって実行される処理のフローチャートである。図９に示される処理と同一の処理については同一の参照符号が付され、説明は適宜省略される。
【００５９】
処理フローは処理Ｓ７００により開始される。処理Ｓ７０５においてＧＣが実行中であると判定されず、処理Ｓ７１０において蓄積コマンド数が第１の値以下であると判定された場合、処理フローは処理Ｓ７１２へ進む。処理Ｓ７１２においてＧＣ制御部３２４が、フラッシュメモリ４７０の空き容量率がＣ％以下であるかを判定する。フラッシュメモリ４７０の空き容量率がＣ％以下であると判定された場合、処理フローは処理Ｓ７１５へ進み、ホストＧＣの開始指示がなされる。フラッシュメモリ４７０の空き容量率がＣ％以下であると判定されない場合は、処理フローは処理Ｓ７０５へ戻る。
【００６０】
また、処理Ｓ７２０において、蓄積コマンド数が第２の値以上であると判定された場合は、処理フローは処理Ｓ７２５へ進み、処理Ｓ７２５においてホストＧＣの停止指示がなされる。一方、蓄積コマンド数が第２の値以上であると判定されない場合は、処理フローは処理Ｓ７２２へ進む。処理Ｓ７２２においてＧＣ制御部３２４が、フラッシュメモリ４７０の空き容量率がＢ％以上であるかを判定する。フラッシュメモリ４７０の空き容量がＢ％以上であると判定された場合は、処理フローは処理Ｓ７２５へ進み、処理Ｓ７２５においてホストＧＣの停止指示がなされる。一方、フラッシュメモリ４７０の空き容量率がＢ％以上であると判定されない場合は、処理フローは処理Ｓ７２０へ戻る。
【００６１】
以上、第２実施例が説明された。第２実施例では、蓄積コマンド数に加えて、フラッシュメモリ４７０の空き容量が考慮されて、ホストＧＣの開始又は停止指示がなされる。これにより、例えばフラッシュメモリ４７０の空き容量が十分あるにも関わらず、蓄積コマンド数が所定値よりも小さくなったことのみをもってホストＧＣが実行されることが抑制される。ホストＧＣの実行を抑制することにより、フラッシュメモリ４７０の書き込み回数等を抑制し、フラッシュメモリ４７０の劣化を抑制することができる。
【００６２】
＜第３実施例＞
第１及び第２実施例では、ストレージ装置４００にて実行中のＧＣがホストＧＣであるか、自走ＧＣであるか、を制御装置３００が判断し、自走ホストＧＣが実行中である場合にはホストＧＣの停止指示は発行されない例が開示された。第３実施例では、蓄積コマンド数が所定値を超過した場合には、実行中のＧＣがホストＧＣであるか自走ＧＣであるかに係わらず、制御装置３００が停止指示を発行する。一方、ストレージ装置４００は、停止指示を受信した場合に、実行中のＧＣがホストＧＣであるか、自走ＧＣであるか、を判断する。そしてストレージ装置４００は、実行中のＧＣがホストＧＣである場合にはホストＧＣを停止させ、実行中のＧＣが自走ＧＣである場合には自走ＧＣを停止させずに継続させる。
【００６３】
以下、第３実施例について説明する。尚、第１実施例にて開示された、ストレージシステム２００の構成を示す図１、制御装置３００のハードウェア構成を示す図２、ストレージ装置４００のハードウェア構成を示す図３、制御装置３００のプロセッサ３２０の機能ブロックを示す図７、ストレージ装置４００のプロセッサ４２０の機能ブロックを示す図１０は、第３実施例にも適用される。
【００６４】
図１７は、第３実施例において制御装置３００のプロセッサ３２０によって実行される処理のフローチャートである。図９に開示された処理と同一の処理については同一の参照符号が付され、説明は適宜省略される。処理フローが処理Ｓ７００にて開始された後、処理Ｓ７０５においてＧＣ制御部３２４が、ストレージ装置４００においてＧＣが実行中であるかを判定する。ＧＣが実行中であると判定された場合は、処理フローは処理Ｓ７２０へ進み、ＧＣが実行中であると判定されない場合は、処理フローは処理Ｓ７１０へ進む。すなわち、図１７の処理フローにおいて制御装置３００のプロセッサ３２０は、実行中のＧＣがホストＧＣであるか自走ＧＣであるかの判定は行わず、処理Ｓ７２０において蓄積コマンド数が第２の値以上と判定される場合には、処理Ｓ７２５においてホストＧＣの停止指示が発行される。
【００６５】
図１８は、第３実施例においてストレージ装置４００のプロセッサ４２０によって実行される処理のフローチャートである。図１１に開示された処理と同一の処理については同一の参照符号が付され、説明は適宜省略される。
【００６６】
処理Ｓ８１５においてＧＣ実行部４２３がホストＧＣを開始した後、もしくは処理Ｓ８４０にてＧＣ実行部４２３が自走ＧＣを開始した後、処理フローは処理Ｓ８２０へ進む。処理Ｓ８２０において、ホストＧＣの停止指示が受信されたと判定された場合は、処理フローは処理Ｓ８２２へ進み、ホストＧＣの停止指示が受信されたと判定されない場合は、処理フローは処理Ｓ８４５へ進む。
【００６７】
処理フローが処理Ｓ８２２に進んだ場合は、処理Ｓ８２２においてＧＣ実行部４２３が、フラグ登録部４２４によってフラグが登録されているかを判定する。フラグが登録されていると判定される場合には、処理フローは処理Ｓ８２５へ進み、ホストＧＣが停止される。一方、処理フローが処理Ｓ８４５に進んだ場合は、処理Ｓ８４５においてＧＣ実行部４２３が、フラッシュメモリ４７０の空き容量率がＢ％以上であるかを判定する。フラッシュメモリ４７０の空き容量率がＢ％以上であると判定された場合は、処理フローは処理Ｓ８５０へ進み、処理Ｓ８５０においてＧＣ実行部４２３が自走ＧＣを停止する。フラッシュメモリ４７０の空き容量率がＢ％以上であると判定されない場合は、処理フローは処理Ｓ８２０へ戻る。
【００６８】
以上、第３実施例が開示された。第３実施例では、実行中のＧＣがホストＧＣであるか自走ＧＣであるかがストレージ装置４００側で判断され、自走ＧＣ中に停止指示が制御装置３００にて発行された場合は、ストレージ装置４００は自走ＧＣを停止させることなく継続実行させる。
【００６９】
＜第４実施例＞
第４実施例においては、制御装置３００がストレージ装置４００へホストＧＣの実行を指示する場合、電源装置５００からストレージ装置４００へ供給される電力量の上限を増加させることにより、ホストＧＣの実行速度を向上させる点に特徴を有する。尚、第１実施例にて開示された、ストレージシステム２００の構成を示す図１、制御装置３００のハードウェア構成を示す図２、ストレージ装置４００のプロセッサ４２０の機能ブロックを示す図１０は、第４実施例にも適用される。
【００７０】
図１９は、第４実施例における制御装置３００のプロセッサ３２０の機能ブロック図である。図７に示された機能ブロックと同一の機能ブロックについては同一の参照符号が付され、説明は省略される。
【００７１】
プロセッサ３２０は、データ送受信部３２１、キャッシュメモリ制御部３２２、ストレージ装置制御部３２３、ＧＣ制御部３２４の他、電力制御部３２５として機能する。電力制御部３２５は、電源装置５００からストレージ装置４００へ供給される電力量の上限値を制御する機能を有する。ＧＣ制御部３２４がホストＧＣの開始指示をストレージ装置４００に送信する場合、電力制御部３２５が、電源装置５００からストレージ装置４００へ供給される電力量の上限を増加させる制御信号を送信する。また、ＧＣ制御部３２４がホストＧＣの停止指示をストレージ装置４００に送信する場合、電力制御部３２５が、電源装置５００からストレージ装置４００へ供給される電力量の上限を減少させる制御信号を送信する。
【００７２】
図２０は、第４実施例におけるストレージ装置４００のハードウェア構成を示す図である。図３に示された構成と同一の構成については同一の参照符号が付され、説明が適宜省略される。
【００７３】
ストレージ装置４００は、インターフェースカード４１０、プロセッサ４２０、不揮発性メモリ４３０、揮発性メモリ４４０、フラッシュメモリ４７０の他、電流制限回路４８０を有する。電流制限回路４８０は、電源装置５００から供給される電力に関し、電流の上限値を規定する回路であり、電流の上限値は、制御装置３００の電力制御部３２５から送信される制御信号に基づいて制御される。電流制限回路４８０は、例えばバイポーラトランジスタ等を用いたアナログ回路によって構成される。
【００７４】
ＧＣ制御部３２４がホストＧＣの開始指示を送信する場合に、電力制御部３２５は、電流制限回路４８０の電流上限値を第１電流値から、第１電流値よりも高い第２電流値へ変更する制御信号を送信する。またＧＣ制御部３２４がホストＧＣの停止指示を送信する場合には、電力制御部３２５は、電流制限回路４８０の電流上限値を第２電流値から第１電流値へ変更する制御信号を送信する。これにより、ホストＧＣが実行される際にストレージ装置４００に供給される電力量を増加させ、ホストＧＣの実行速度を向上させることができる。例えば電流上限値を第１電流値から第２電流値へ変更することによって、ストレージ装置４００における消費電力を９Ｗから１２Ｗへ増加させ、ホストＧＣの実行速度を約２０％向上させることができるという結果が、発明者の実験によって得られた。
【００７５】
図２１は、第４実施例において制御装置３００のプロセッサ３２０によって実行される処理のフローチャートである。図９に示される処理と同一の処理については同一の参照符号が付され、説明は適宜省略される。
【００７６】
処理フローは処理Ｓ７００により開始される。処理Ｓ７１０において、蓄積コマンド数が第１の値以下であると判定された場合、処理Ｓ７１５にてホストＧＣの開始指示が送信され、更に処理Ｓ７１７において電力制御部３２５が、電流制限回路４８０の電流上限値を増加させるよう、電流制限回路４８０に制御信号を送信する。尚、図２１において、処理Ｓ７１５と処理Ｓ７１７は何れが先に実行されてもよい。
【００７７】
また処理Ｓ７２０において、蓄積コマンド数が第２の値以上であると判定された場合、処理Ｓ７２５にてホストＧＣの停止指示が送信され、更に処理Ｓ７２７において電力制御部３２５が、電流制限回路４８０の電流上限値を減少させるよう、電流制限回路４８０に制御信号を送信する。尚、図２１において、処理Ｓ７２５と処理Ｓ７２７は何れが先に実行されてもよい。
【００７８】
このように第４実施例においては、ホストＧＣが実行される場合に、ストレージ装置４００に供給される電流の上限値が増加するよう変更されるため、ホストＧＣの実行速度を向上させることができる。
【００７９】
以上、第１乃至第４実施例が開示された。これらの複数の実施例は適宜互いに組み合わされて実施されてもよい。
【００８０】
開示の実施例に基づき、更に以下の付記を開示する。
（付記１）
ガベージコレクションを実行するストレージ装置と、
メモリを有し、前記ストレージ装置を制御する制御装置と、
を含むストレージシステムであって、
前記制御装置は、
前記ストレージ装置に対するコマンドを受信し、
受信された前記コマンドを前記メモリに保持し、
前記メモリに保持されている前記コマンドの数が第１の値以下であるかを判定し、
前記メモリに保持されている前記コマンドの数が前記第１の値以下である場合に、前記ガベージコレクションの開始を指示する開始指示を前記ストレージ装置に送信し、
前記ストレージ装置は、前記開始指示に基づき、前記ガベージコレクションを開始する
ことを特徴とするストレージシステム。
（付記２）
前記制御装置は、前記ガベージコレクションの前記開始指示を送信した後、前記メモリに保持されている前記コマンドの数が第２の値以上になった場合に、前記ガベージコレクションの停止を指示する停止指示を前記ストレージ装置に送信し、
前記ストレージ装置は、前記停止指示に基づき、前記ガベージコレクションを停止する
ことを特徴とする付記１に記載のストレージシステム。
（付記３）
前記制御装置は、前記ストレージ装置の空き容量が第１容量値以下であり、かつ前記メモリに保持されている前記コマンドの数が前記第１の値以下である場合に、前記ガベージコレクションの前記開始指示を前記ストレージ装置に送信する
ことを特徴とする付記１又は２に記載のストレージシステム。
（付記４）
前記制御装置は、前記ストレージ装置の空き容量が第２容量値以上であるか、又は、前記メモリに保持されている前記コマンドの数が第２の値以上である場合に、前記ガベージコレクションの前記停止指示を前記ストレージ装置に送信する
ことを特徴とする付記２又は３に記載のストレージシステム。
（付記５）
前記制御装置は、前記メモリに保持されている前記コマンドの数が、第１期間に渡って継続して、前記第１の値以下である場合に、前記ガベージコレクションの前記開始指示を前記ストレージ装置に送信する
ことを特徴とする付記１乃至４何れか一つに記載のストレージシステム。
（付記６）
前記制御装置は、前記メモリに保持されている前記コマンドの数が、第２期間に渡って継続して、前記第２の値以上である場合に、前記ガベージコレクションの前記停止指示を前記ストレージ装置に送信する
ことを特徴とする付記２乃至５何れか一つに記載のストレージシステム。
（付記７）
前記制御装置は、
前記メモリに保持された前記コマンドを実行することにより、前記ストレージ装置へのアクセスを実行し、
前記アクセスに基づき、前記コマンドに対する処理完了通知を送信する
ことを特徴とする付記１乃至６何れか一つに記載のストレージシステム。
（付記８）
前記ストレージ装置は、
前記空き容量が第３容量値以下である場合に、前記ガベージコレクションの前記開始指示に依らずに前記ガベージコレクションを開始し、
前記ガベージコレクションの開始後、前記空き容量が前記第３容量値よりも大きい第４容量値以上となった場合に、前記ガベージコレクションの前記停止指示に依らずに前記ガベージコレクションを停止させる
ことを特徴とする付記２乃至７何れか一つに記載のストレージシステム。
（付記９）
前記第１容量値は、前記第３容量値よりも高く、前記第４容量値よりも低い
ことを特徴とする付記８に記載のストレージシステム。
（付記１０）
前記ストレージシステムは、更に電源装置を含み、
前記制御装置は、前記ガベージコレクションの前記開始指示の送信する場合、前記電源装置から前記ストレージ装置へ供給される電力量を増加させるよう、前記ストレージ装置を制御する
ことを特徴とする付記１乃至９何れか一つに記載のストレージシステム。
（付記１１）
ガベージコレクションを実行するストレージ装置を制御する、メモリを有する制御装置であって、
前記ストレージ装置に対するコマンドを受信し、
受信された前記コマンドを前記メモリに保持し、
前記メモリに保持されている前記コマンドの数が第１の値以下であるかを判定し、
前記メモリに保持されている前記コマンドの数が前記第１の値以下である場合に、前記ガベージコレクションの開始を指示する開始指示を前記ストレージ装置に送信する
ことを特徴とする制御装置。
（付記１２）
前記ガベージコレクションの前記開始指示を送信した後、前記メモリに保持されている前記コマンドの数が第２の値以上になった場合に、前記ガベージコレクションの停止を指示する停止指示を前記ストレージ装置に送信し、
前記ストレージ装置は、前記停止指示に基づき、前記ガベージコレクションを停止する
ことを特徴とする付記１１に記載の制御装置。
（付記１３）
前記ストレージ装置の空き容量が第１容量値以下であり、かつ前記メモリに保持されている前記コマンドの数が前記第１の値以下である場合に、前記ガベージコレクションの前記開始指示を前記ストレージ装置に送信する
ことを特徴とする付記１１又は１２に記載の制御装置。
（付記１４）
前記空き容量が第２容量値以上であるか、又は、前記メモリに保持されている前記コマンドの数が第２の値以上である場合に、前記ガベージコレクションの前記停止指示を前記ストレージ装置に送信する
ことを特徴とする付記１３に記載の制御装置。
（付記１５）
前記メモリに保持されている前記コマンドの数が、第１期間に渡って継続して、前記第１の値以下である場合に、前記ガベージコレクションの前記開始指示を前記ストレージ装置に送信する
ことを特徴とする付記１１乃至１４何れか一つに記載の制御装置。
（付記１６）
前記メモリに保持されている前記コマンドの数が、第２期間に渡って継続して、前記第２の値以上である場合に、前記ガベージコレクションの前記停止指示を前記ストレージ装置に送信する
ことを特徴とする付記１２乃至１５何れか一つに記載の制御装置。
（付記１７）
前記メモリに保持された前記コマンドを実行することにより、前記ストレージ装置へのアクセスを実行し、
前記アクセスに基づき、前記コマンドに対する処理完了通知を送信する
ことを特徴とする付記１１乃至１６何れか一つに記載の制御装置。
（付記１８）
前記ガベージコレクションの前記開始指示の送信する場合、電源装置から前記ストレージ装置へ供給される電力量を増加させるよう、前記ストレージ装置を制御する
ことを特徴とする付記１１乃至１７何れか一つに記載の制御装置。
（付記１９）
制御装置に接続され、不揮発性メモリを有するストレージ装置であって、
前記不揮発性メモリの空き容量を検出し、
前記空き容量が第１の値以下になった場合に、前記不揮発性メモリの第１ガベージコレクションを開始し、
前記空き容量が前記第１の値よりも大きい第２の値以上になった場合に、前記第１ガベージコレクションを停止し、
前記制御装置から開始指示を受信した場合に、前記不揮発性メモリの第２ガベージコレクションを開始し、
前記制御装置から停止指示を受信した場合に、前記第２ガベージコレクションを停止し、
前記第１ガベージコレクションが実行されている間に前記停止指示を受信した場合は、前記第１ガベージコレクションを継続する
ことを特徴とするストレージ装置。
（付記２０）
前記開始指示を受信した場合に、前記第２ガベージコレクションを実行中であることを示す情報を保持し、
前記停止指示を受信した場合に、前記情報に基づき、前記第２ガベージコレクションが実行中であるかを判定し、
前記第２ガベージコレクションが実行中であるかと判定された場合は、前記停止指示に基づき前記第２ガベージコレクションを停止する
ことを特徴とする付記１９に記載のストレージ装置。
【符号の説明】
【００８１】
１００  情報処理装置
２００  ストレージシステム
３００  制御装置
４００  ストレージ装置
５００  電源装置
３１０  ＣＡ
３２０、４２０  プロセッサ
３３０、４３０  不揮発性メモリ
３４０、４４０  揮発性メモリ
３５０  ＩＯＣ
３６０  ＥＸＰ
４１０  インターフェースカード
４７０  フラッシュメモリ
４８０  電流制限回路
３２１  データ送受信部
３２２  キャッシュメモリ制御部
３２３  ストレージ装置制御部
３２４  ＧＣ制御部
３２５  電力制御部
４２１  コマンド実行部
４２２  指示受信部
４２３  ＧＣ実行部
４２４  フラグ登録部
【図１】
2018181281.tif 000003
【図２】
2018181281.tif 000004
【図３】
2018181281.tif 000005
【図４】
2018181281.tif 000006
【図５】
2018181281.tif 000007
【図６】
2018181281.tif 000008
【図７】
2018181281.tif 000009
【図８】
2018181281.tif 000010
【図９】
2018181281.tif 000011
【図１０】
2018181281.tif 000012
【図１１】
2018181281.tif 000013
【図１２】
2018181281.tif 000014
【図１３】
2018181281.tif 000015
【図１４】
2018181281.tif 000016
【図１５】
2018181281.tif 000017
【図１６】
2018181281.tif 000018
【図１７】
2018181281.tif 000019
【図１８】
2018181281.tif 000020
【図１９】
2018181281.tif 000021
【図２０】
2018181281.tif 000022
【図２１】
2018181281.tif 000023