(57)【要約】【課題】ストレージ装置への読み出しアクセスの応答時間の増大を抑制することを目的とする。【解決手段】本実施形態のストレージ制御装置は、受信部と、制御部とを備える。前記受信部は、内部または外部のコマンド発行装置から、ストレージ装置に対する読み出しコマンドまたは書き込みコマンドを受信する。前記制御部は、前記受信部で書き込みコマンドが受信されたときは、前記書き込みコマンドの１つ前に受信した書き込みコマンドの出力から少なくとも第１の間隔時間が経過するまで前記書き込みコマンドを待機させ、前記第１の間隔時間経過後、前記書き込みコマンドを出力し、前記書き込みコマンドの待機中に前記読み出しコマンドが受信されたときは、前記待機中の書き込みコマンドより先に前記読み出しコマンドを出力する。【選択図】図２
2014154023.tif 000002
【特許請求の範囲】
【請求項１】
内部または外部のコマンド発行装置から、ストレージ装置に対する読み出しコマンドまたは書き込みコマンドを受信する受信部と、
前記受信部で書き込みコマンドが受信されたときは、前記書き込みコマンドの１つ前に受信した書き込みコマンドの出力から少なくとも第１の間隔時間が経過するまで前記書き込みコマンドを待機させ、前記第１の間隔時間経過後、前記書き込みコマンドを出力し、前記書き込みコマンドの待機中に前記読み出しコマンドが受信されたときは、前記待機中の書き込みコマンドより先に前記読み出しコマンドを出力する制御部と、
を備えたストレージ制御装置。
【請求項２】
前記制御部は、前記書き込みコマンドおよび前記読み出しコマンドを、前記ストレージ装置、または前記ストレージ装置にアクセスするストレージドライバに出力する
請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、前記１つ前に出力した書き込みコマンドによる書き込みデータ量に応じて、前記第１の間隔時間の値を設定する
請求項１または２に記載のストレージ制御装置。
【請求項４】
前記読み出しコマンドまたは書き込みコマンドを出力してから前記ストレージ装置のコマンド応答が返されるまでの応答時間を測定する測定部と、を備え、
前記制御部は、前記応答時間が大きいほど、前記第１の間隔時間の値を大きくする
請求項１または２に記載のストレージ制御装置。
【請求項５】
前記制御部は、前記応答時間が閾値より大きいか否かに応じて、前記第１の間隔時間の値を設定する
請求項４に記載のストレージ制御装置。
【請求項６】
状態取得部をさらに備え、
前記状態取得部は、前記コマンド発行装置内に前記受信部への送信を待機している読み出しコマンドに関する情報を、前記コマンド発行装置から取得し、
前記制御部は、前記情報に基づいて、前記第１の間隔時間の値を設定する
請求項１または２に記載のストレージ制御装置。
【請求項７】
前記制御部は、前記コマンド発行装置内に待機している読み出しコマンドが存在するか否かに基づいて、前記第１の間隔時間の値を設定する
請求項５または６に記載のストレージ制御装置。
【請求項８】
前記制御部は、前記待機している読み出しコマンドの個数、または前記待機している読み出しコマンドによる読み出しデータ量の合計に応じて、前記第１の間隔時間の値を設定する
請求項６に記載のストレージ制御装置。
【請求項９】
前記ストレージ装置は、フラッシュメモリの記憶領域を有し、
前記制御部は、出力した書き込みコマンドの履歴に基づいて、対象となる書き込みコマンドを前記ストレージ装置に出力した場合に当該対象となる書き込みコマンドによるデータ書き込みが実行される前に前記ストレージ装置で書き込み領域確保のためのデータ消去処理が行われるか判断し、判断結果に応じて、前記対象となる書き込みコマンドの次に出力する書き込みコマンドに適用する第１の間隔時間の値を設定する
請求項１または２に記載のストレージ装置。
【請求項１０】
前記制御部は、前記履歴として、出力した書き込みコマンドの個数、または出力した書き込みコマンドによる書き込みデータ量を用いる
請求項９に記載のストレージ装置。
【請求項１１】
前記書き込みコマンドを出力し、前記書き込みコマンドへの応答を取得するまでの応答時間を計測し、前記応答時間が閾値以上のときは前記ストレージ装置でメモリ消去処理が発生したと判断する試験を繰り返し行うことにより、前記ストレージ装置でデータの書き込み前にメモリ消去処理が発生する条件を取得する条件確認部をさらに備え、
前記制御部は、前記条件に基づいて、前記メモリ消去処理が実行されるかを判断する
請求項９または１０に記載のストレージ装置。
【請求項１２】
コマンド発行装置から、ストレージ装置に対する読み出しコマンドまたは書き込みコマンドを受信する受信ステップと、
前記書き込みコマンドが受信されたときは、前記書き込みコマンドの１つ前に受信した書き込みコマンドの出力から少なくとも第１の間隔時間経過するまで前記書き込みコマンドを待機させ、前記第１の間隔時間経過後、前記書き込みコマンドに出力し、前記書き込みコマンドの待機中に前記読み出しコマンドが受信されたときは、前記待機中の書き込みコマンドより先に前記読み出しコマンドを出力する制御ステップと、
をコンピュータに実行させるためのプログラム。
【請求項１３】
コマンド発行装置から、ストレージ装置に対する読み出しコマンドまたは書き込みコマンドを受信する受信ステップと、
前記書き込みコマンドが受信されたときは、前記書き込みコマンドの１つ前に受信した書き込みコマンドの出力から少なくとも第１の間隔時間経過するまで前記書き込みコマンドを待機させ、前記第１の間隔時間経過後、前記書き込みコマンドを出力し、前記書き込みコマンドの待機中に前記読み出しコマンドが受信されたときは、前記待機中の書き込みコマンドより先に前記読み出しコマンドを出力する制御ステップと、
を備えたストレージ制御方法。
【請求項１４】
外部または内部のコマンド発行装置から、読み出しコマンドまたは書き込みコマンドを受信する受信部と、
記憶領域にデータを格納し、前記読み出しコマンドまたは前記書き込みコマンドを実行可能なストレージ装置と、
前記受信部で書き込みコマンドが受信されたときは、前記書き込みコマンドの１つ前に受信した書き込みコマンドの出力から少なくとも第１の間隔時間経過するまで前記コマンドを待機させ、前記第１の間隔時間経過後、前記書き込みコマンドを前記ストレージ装置あるいは前記ストレージ装置にアクセスするストレージドライバに出力し、前記書き込みコマンドの待機中に前記読み出しコマンドが受信されたときは、前記待機中の書き込みコマンドより先に前記読み出しコマンドを前記ストレージ装置あるいは前記ストレージドライバに出力する制御部と、
を備えたストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージ制御装置、ストレージ制御方法、ストレージシステムおよびプログラムに関する。
【背景技術】
【０００２】
各種データを記憶する、従来のハードディスクドライブ（ＨＤＤ）に代わる装置として、記憶素子としてフラッシュメモリを備える大容量ストレージ装置が知られている。このストレージ装置は一般にソリッドステートドライブ（ＳＳＤ）と呼ばれる。ＳＳＤは、ＨＤＤに比べてアクセス時間が短いこと、および物理的な衝撃による故障の可能性が低いこと、などの長所を有する。しかしながら、書き込み速度は読み出し速度に比べて遅いため、読み出しコマンドの前に書き込みコマンドが集中すると、読み出しアクセスの応答時間が増大する問題を内包する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第６１１７８５号広報
【特許文献２】特開２０１０−１０２３６９広報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、ストレージ装置への読み出しアクセスの応答時間の増大を抑制することを目的とする。
【課題を解決するための手段】
【０００５】
本実施形態のストレージ制御装置は、受信部と、制御部とを備える。
【０００６】
前記受信部は、内部または外部のコマンド発行装置から、ストレージ装置に対する読み出しコマンドまたは書き込みコマンドを受信する。
【０００７】
前記制御部は、前記受信部で書き込みコマンドが受信されたときは、前記書き込みコマンドの１つ前に受信した書き込みコマンドの出力から少なくとも第１の間隔時間が経過するまで前記書き込みコマンドを待機させ、前記第１の間隔時間経過後、前記書き込みコマンドを出力し、前記書き込みコマンドの待機中に前記読み出しコマンドが受信されたときは、前記待機中の書き込みコマンドより先に前記読み出しコマンドを出力する。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係るストレージ搭載コンピュータの全体構成を示すブロック図。
【図２】図１に示したストレージ搭載コンピュータの詳細構成を示すブロック図。
【図３】第２の実施形態にかかるストレージ搭載コンピュータの詳細構成を示すブロック図。
【図４】第３の実施形態にかかるストレージ搭載コンピュータの詳細構成を示すブロック図。
【図５】第４の実施形態にかかるストレージ搭載コンピュータの詳細構成を示すブロック図。
【図６】第５の実施形態にかかるストレージ搭載コンピュータの詳細構成を示すブロック図。
【図７】第１の実施形態の動作を説明するためのフローチャート。
【図８】第１の実施形態に係るストレージコマンド制御部の他の構成例を示すブロック図。
【図９】第１の変形例に係るストレージ搭載コンピュータを示すブロック図。
【図１０】第２の変形例に係るストレージ搭載コンピュータを示すブロック図。
【発明を実施するための形態】
【０００９】
まず、本発明の実施形態に係る技術的背景について説明する。
【００１０】
ソリッドステートドライブ（SSD:Solid State Drive）では記憶素子としてフラッシュメモリが用いられ、ＳＳＤは従来のＨＤＤに比べアクセス時間が短い特徴を有する。一方、ＳＳＤで用いられるフラッシュメモリは、既にデータが書き込まれている領域に新たなデータを上書きすることが不可能であるという制約がある。
【００１１】
既にデータが書き込まれているフラッシュメモリの領域に別のデータを書き込む場合には、その領域のデータをいったん消去してから新規のデータを書き込む必要がある。
【００１２】
フラッシュメモリの消去は長時間かかる操作であるため、データを上書きするたびに消去を行なうと、書き込みを高速に行なえないという問題がある。
【００１３】
そこで、新たに書き込むデータを、あらかじめ消去してあるフラッシュメモリの別の領域に書き込む方式がある。ＳＳＤは、データがフラッシュメモリのどの領域に記憶されているかを示す管理情報を保持しており、書き込んだデータが存在する場所を示すように、この管理情報の更新をする。当該方式で書き込みを行なうことにより、上書きのたびに消去を行なう場合に比べ、データの書き込みの速度が大幅に改善される。
【００１４】
しかし、書き込みを繰り返した結果、あらかじめ消去してあるフラッシュメモリの領域が少なくなると、データを書き込む前にフラッシュメモリの消去を行なう必要が生じる。
【００１５】
このためＳＳＤの書き込みアクセス時間は一定ではなく、消去が必要な場合は、消去が不要の場合に比べて、書き込みアクセスに長い時間が必要となる。
【００１６】
また、書き込みアクセスを行なっている途中で読み出しを要求したときには、書き込みアクセスが完了してから読み出しアクセスが実行される。このため、書き込みアクセスにフラッシュメモリの消去が必要な場合の遅延は、読み出しアクセスの応答時間を増大させる原因ともなる。
【００１７】
このような性質を有するＳＳＤを備えたストレージシステムにおいて、読み出しアクセスの応答時間が増大することを回避する技術がある。
【００１８】
当該技術では、ストレージシステムはＲＡＩＤ構成を有し、複数のＳＳＤにデータを冗長に保持している。
【００１９】
ＳＳＤの読み出しアクセスの応答時間が増大するのは、書き込みを行なっている場合である。したがって、データが冗長に保持されていることを利用し、書き込みを行なっていないＳＳＤから読み出しを行なえば、読み出しアクセスの応答時間の増大を回避することができる。ただしこの技術を適用するには、データを冗長に保持する必要があるため、ストレージ容量の使用効率が悪い。
【００２０】
また、ＲＡＩＤ ５のようにパリティにより冗長性を持たせている場合には、目的のデータを得るためにＳＳＤから読み出しが必要なデータの量は、目的のデータの量よりも多くなる。つまり、読み出すデータの実データが、書き込み中のドライブに存在する場合、他のドライブからデータを読み出し当該データを復元する必要があるが、復元のために必要なデータ量は当該データ量よりも大きくなる。このため、ストレージシステムの読み出しのスループットは、当該技術を使わなかった場合に比べて低下する。
【００２１】
本発明の実施形態は、これらの問題を解決して、ストレージ装置への読み出しのスループットの低下を抑制する方式を提案する。なお、本発明の実施形態ではストレージ装置としてとりわけＳＳＤを想定するが、これに限定されるものではなく、ＨＤＤやＳＤカードなど、他の装置でもかまわない。
【００２２】
以下、図面を参照しながら、本発明の実施形態について詳細に説明する。
【００２３】
（第１の実施形態）
図１は、第１の実施形態に係るストレージ搭載コンピュータを示すブロック図である。
【００２４】
このストレージ搭載コンピュータは、ホストシステム１０１とストレージシステム１０３とを備える。
【００２５】
ホストシステム１０１では、オペレーティングシステム上で種々のアプリケーションが実行される。これらのアプリケーションは、ストレージアクセスコマンド指示部（コマンド発行装置）１０２と、ストレージコマンド制御部１０５と、ストレージドライバ１０４介して、ストレージシステム１０３にアクセスする。これらの各要素１０２、１０５、１０４は、たとえばオペレーティングシステムに実装されてもよい。オペレーティングシステムの具体例として、Windows （登録商標）や Linux（登録商標）等がある。
【００２６】
本コンピュータの用途は特定のものに限定されないが、一例として映像ストリーミング配信用のサーバとして用いることができる。ストレージシステム１０３のストレージ装置１０６に配信用の映像データを格納しておき、図示しないクライアントにストレージ装置１０６内の映像データを読み出して、ネットワークを介して、ストリーミング配信する。クライアントに映像が定常して届くように、ストレージ装置１０６から、安定した（遅延の少ない）データの読み出しが要求される。このため、ストレージ装置１０６への映像データの書き込みと、クライアントへの配信時の映像データの読み出しの時間帯が重なるときは、映像データの書き込みにより、映像データの読み出しが遅延しないようにする必要がある。
【００２７】
ストレージアクセスコマンド指示部１０２は、書き込みコマンド、および読み出しコマンドを発行する。例えば、ホストシステムで動作するアプリケーションがストレージ装置１０６上のファイル等のデータをホストシステムに読み出す場合には、ストレージアクセスコマンド指示部１０２は、読み出しコマンドを発行する。一方、当該アプリケーションがストレージ装置１０６にファイルを書き込む場合には、ストレージアクセスコマンド指示部１０２は、書き込みコマンドを発行する。発行されたコマンドは、ストレージコマンド制御部１０５に渡される。
【００２８】
ストレージアクセスコマンド指示部１０２は、発行したコマンドを一時的に保持するバッファを備えていても良い。この場合、ストレージアクセスコマンド指示部１０２は、バッファ内のコマンドを、格納した順に出力する、または、ストレージコマンド制御部１０５に取得させる。ストレージアクセスコマンド指示部１０２は、ストレージシステム１０３と制御信号のやりとりを行ってから、コマンドを出力する構成も可能である。例えば、ストレージアクセスコマンド指示部１０２が、ストレージコマンド制御部１０５およびストレージドライバ１０４を介して、ストレージ装置１０６に制御信号を出力し、ストレージ装置１０６は、コマンドを受け付け可能であるとき、もしくは受け付け可能になったとき、コマンドの出力を許可する制御信号をストレージアクセスコマンド指示部１０２に返す。ストレージアクセスコマンド指示部１０２は、当該制御信号を受信したら、コマンドを出力する。
【００２９】
なお、ストレージアクセスコマンド指示部１０２は、ホストシステム上に実装されることに限定するものでなく、他のサブシステム上（例えば、他のストレージシステム上やネットワークＩＦシステム上など）に実装されていても良い。また、単一である必要は無く、ホストシステムおよび他のサブシステムの両方に実装されていてもよい。これは、後述する他の実施形態についても同様である。
【００３０】
同様に、ストレージコマンド制御部１０５は、単一である必要は無く、ホストシステムおよび他のサブシステムの両方に実装されていてもよい。これは、後述する他の実施形態についても同様である。
【００３１】
本実施形態に係るストレージコマンド制御部１０５は、ストレージアクセスコマンド指示部１０２から受けたコマンドの出力を制御し、当該コマンドを、ストレージ装置にアクセスするストレージドライバ１０４に出力する。ストレージドライバ１０４は、ストレージコマンド制御部１０５から受けたコマンドに基づきストレージ装置１０６にアクセスする。たとえばストレージドライバ１０４は、ストレージコマンド制御部１０５から受けたコマンドをストレージ装置１０６に適した形に変換して、ストレージ装置１０６に出力する。また、ストレージコマンド制御部１０５は、ストレージ装置１０６で実行されたコマンドの実行結果をストレージドライバ１０４を介して受け取る。ストレージコマンド制御部１０５は、当該実行結果を、ストレージアクセスコマンド指示部１０２に返す。
【００３２】
ストレージ装置１０６は、データを記憶する装置であり、例えば SSD （Solid State Drive）である。ストレージ装置１０６は、複数の SSD を接続した RAID システムでもよい。ストレージ装置１０６は、読み出し速度に比べて、書き込み速度が遅い特性を持つストレージデバイスであれば何でも良い。SDメモリカード、HDDなども考えられる。ホストシステム１０１とストレージシステム１０３の接続は、 PCI Express、Fiber Cannel、Ethernet、USB、Thunderbolt、SATA、SAS 等々ストレージを接続可能なインタフェースであれば何でも良い。
【００３３】
ストレージ装置１０６は、ストレージコマンド制御部１０５からストレージドライバ１０４を介して受けたコマンドを実行する。ストレージ装置１０６は、実行するコマンドを格納するバッファを備えていても良い。ストレージ装置１０６は、コマンドを格納した順に実行し、読み出しコマンドであれば、該当する記憶領域からデータを読み出し、ホストシステムによって指定されたメモリにデータを書き込む。書き込みコマンドであれば、データ書き込みに利用する記憶領域を特定し、特定した記憶領域に、データを書き込む。データ書き込み可能な記憶領域（データ消去済みの記憶領域）が存在しない場合は、不要なデータを消去して領域を確保し、当該確保した領域にデータを書き込む。なお、ストレージ装置は、後述するように、特定の条件が満たされた場合は、不要なデータを消去して、空き領域を確保するデータ消去処理を行うこともあり得る。
【００３４】
図２は、図１に示したストレージ搭載コンピュータの詳細構成を示すブロック図である。特に、ストレージコマンド制御部１０５の詳細な構成が示される。
【００３５】
ストレージアクセスコマンド指示部１０２は、ストレージ装置に対する書き込みコマンド、および読み出しコマンドを発行する。
【００３６】
発行されたコマンドはコマンド待機制御部２０１が受ける。コマンド待機制御部２０１は、コマンドを受信する受信部を含む。あるいは、ストレージアクセスコマンド指示部１０２からコマンドを受信する機能をコマンド待機制御部２０１から取り出して、図１０に示すように、受信部２００として設けてもよい。この場合、受信部２００でストレージアクセスコマンド指示部１０２からコマンドを受信して、受信部２００からコマンド待機制御部２０１にコマンドを送出する。コマンド待機制御部２０１は、受けたコマンドが書き込みコマンドか、読み出しコマンドかを識別する。コマンド待機制御部２０１は、書き込みコマンドを一時的に格納するためのバッファを備えている。
【００３７】
コマンド待機制御部２０１は、受け取ったコマンドが読み出しコマンドの場合は、当該コマンドをコマンド出力制御部２０３に即時に出力する。当該受け取ったコマンドが書き込みコマンドの場合は、タイマー２０２を用いて、当該書き込みコマンドを、直前に出力した書き込みコマンドの出力から少なくとも一定時間（第1の間隔時間）経過するまで上記バッファで待機させる。当該一定時間が経過したら、当該書き込みコマンドをバッファから出力する。
【００３８】
書き込みコマンドの待機中に、読み出しコマンドが受信された場合には、当該読み出しコマンドを、待機中の書き込みコマンドより先に、コマンド出力制御部２０３に出力する。書き込みコマンドの待機中に別の書き込みコマンドを受信した場合は、当該別の書き込みコマンドを、先に受け取った書き込みコマンドの後に当該バッファに追加する。当該別の書き込みコマンドは、１つ前の書き込みコマンドの出力から一定時間経過した後に、出力する。
【００３９】
書き込みコマンドの出力の間隔時間の長さは、読み出しコマンドの読み出し遅延の許容値以上であることが望ましい。すべての書き込みコマンド間で出力間隔時間を同じにしてもよい。この場合、書き込みコマンドによる書き込みデータサイズ（データ量）の最大値、最小値、中央値または平均値等に基づき、出力間隔時間を決定してもよい。直前の書き込みコマンドの書き込みサイズが大きいほど、次の書き込みコマンドに適用する間隔時間を長くしてもよい。
【００４０】
コマンド出力制御部２０３は、コマンド待機制御部２０１から入力されたコマンド（読み出しコマンド、または、書き込みコマンド）を、コマンド入出力部２０４を介して出力する。出力されたコマンドは、ストレージドライバ１０４によりストレージ装置１０６に出力される。
【００４１】
本実施形態の制御部は、コマンド待機制御部２０１およびコマンド出力制御部２０３を含む。当該制御部は、書き込みコマンドが受信されたときは、書き込みコマンドの１つ前に受信した書き込みコマンドの出力から少なくとも第１の間隔時間が経過するまで当該書き込みコマンドを待機させ、第１の間隔時間経過後、当該書き込みコマンドをストレージドライバ１０４に出力する。当該制御部は、書き込みコマンドの待機中に読み出しコマンドが受信されたときは、待機中の書き込みコマンドより先に読み出しコマンドをストレージドライバ１０４に出力する。
【００４２】
コマンド入出力部２０４は、ストレージ装置１０６で実行されたコマンドの実行結果であるコマンド応答を、ストレージドライバ１０４を介して受け取り、コマンド応答をコマンド応答通知部２０５に通知する。読み出しコマンドで読み出しが成功した場合は、読み出したデータを含むコマンド応答がコマンド応答通知部２０５に通知される。書き込みコマンドで書き込みが成功した場合は、書き込み完了の通知を含むコマンド応答がコマンド応答通知部２０５に通知される。
【００４３】
コマンド応答通知部２０５は、コマンド入力部２０４から通知されたコマンド応答を、ストレージアクセスコマンド指示部１０２に返す。
【００４４】
図７は、本実施形態のストレージコマンド制御部１０５の動作を示すフローチャートである。
【００４５】
ストレージアクセスコマンド指示部１０２からコマンドを受け取り（S11）、当該コマンドが読み出しコマンドか、書き込みコマンドかを識別する（S12）。書き込みコマンドであれば、１つ前に出力した書き込みコマンドの出力から一定時間が経過するまでに当該書き込みコマンドを待機させる（S13）。一定時間が経過したら、当該書き込みコマンドをストレージドライバ１０４に出力する（S14）。なお、最初の書き込みコマンドの場合は、それより先の書き込みコマンドが存在しないため、即時出力してよい。一方、読み出しコマンドが受信された場合は、当該読み出しコマンドをストレージドライバ１０４に即時出力する（S15）。読み出しコマンドの受信時に、待機中の書き込みコマンドがある場合は、当該待機中の書き込みコマンドより先に当該読み出しコマンドが出力される。
【００４６】
一例として、書き込みコマンドA、読み出しコマンドB、読み出しコマンドC、書き込みコマンドD、読み出しコマンドEの順でコマンドが受信された場合を考える。書き込みコマンドAが出力された後、読み出しコマンドB、Cが受信され、読み出しコマンドB、Cはこの順で即時出力される。読み出しコマンドCの受信後、書き込みコマンドDが受信され、書き込みコマンドDは、書き込みコマンドAが出力された後、一定時間経過するまで待機させられ、その後、出力される。書き込みコマンドDの待機中に読み出しコマンドEが受信された場合は、読み出しコマンドEが書き込みコマンドDの先に出力される。なお、書き込みコマンドDが受信された時点ですでに、書き込みコマンドAが出力された後、一定時間経過が経過していれば、書き込みコマンドDは即時出力される。
【００４７】
図９は、第１の変形例に係るストレージ搭載コンピュータを示すブロック図である。図１と同一名称の要素には同一の符号を付してある。図１に示した構成との違いは、ストレージコマンド制御部１０５とストレージシステム１０３の間にストレージドライバが設けられていない点にある。この場合、ストレージアクセスコマンド指示部１０２がストレージドライバの一部として含まれていても良い。図９の構成の場合は、ストレージコマンド制御部１０５からのコマンドの出力先は、ストレージドライバではなく、ストレージ装置になる。このようにストレージコマンド制御部１０５とストレージシステム１０３の間にストレージドライバを設けない構成でも本発明は実施可能である。
【００４８】
また、図１０は、第２の変形例に係るストレージ搭載コンピュータを示すブロック図である。図１と同一名称の要素には同一の符号を付してある。図１に示した構成との違いは、ストレージコマンド制御部１０５がストレージシステムに設けられたことと、ストレージコマンド制御部１０５とストレージシステム１０３の間にストレージドライバが設けられていないことにある。この場合、ストレージアクセスコマンド指示部１０２がストレージドライバの一部として含まれていても良い。このようにストレージコマンド制御部１０５が、ホストシステムでなく、ストレージシステムに設けられる構成でも本発明は実施可能である。
【００４９】
以上、本実施形態によれば、書き込みコマンドの出力間隔を一定時間以上開けるため、読み出しコマンドの前に書き込みコマンドが連続して実行あるいは待機されることを防止できる。よって、読み出しアクセス時間（読み出し遅延）が増大する可能性を低減できる。すなわち、読み出し遅延が許容値を超えて大きくなる可能性を低減できる。なお、読み出し遅延は、ストレージアクセスコマンド指示部１０２が読み出しコマンドを発行または出力してから、コマンド応答を受け取るまでの時間として定義されることができるが、これに限定されるものではない。
【００５０】
（第２の実施形態）
図３は、第２の実施形態にかかるストレージ搭載コンピュータの詳細構成を示す。
【００５１】
第１の実施形態のストレージコマンド制御部に対し、コマンド実行時間測定部３０６と、判定部３０７が追加されている。ストレージコマンド制御部３００内のその他の要素、すなわち、コマンド待機制御部３０１、タイマー３０２、コマンド出力制御部３０３、コマンド入出力部３０４、コマンド応答通知部３０５の動作は、第１の実施形態の同一名称の要素と基本的に同様であり、拡張された処理の除き、重複する説明を省略する。
【００５２】
コマンド実行時間測定部３０６は、ストレージドライバ１０４（図９または図１０の構成の場合はストレージ装置）に出力された書き込みコマンドまたは読み出しコマンドのアクセスの応答時間の測定を行なう。コマンド出力制御部３０３は、読み出しコマンドまたは書き込みコマンドをコマンド入出力部３０４に出力するとともに、開始通知をコマンド実行時間測定部３０６に出力する。コマンド応答通知部３０５は、コマンド応答をストレージアクセスコマンド指示部１０２に出力するとともに、完了通知をコマンド実行時間測定部３０６に通知する。コマンド実行時間測定部３０６は、完了通知を受けた時刻と、開始通知を受けた時刻との差分を計算することにより、応答時間を測定する。
【００５３】
判定部３０７は、コマンド実行時間測定部３０６で測定された応答時間を閾値と比較する。応答時間が閾値より大きいときは、アクセスの応答時間が遅延していると判断できる。遅延の原因として、ストレージ装置１０６に、実行待ちの書き込みコマンドが多数存在する場合や、フラッシュメモリ領域のデータ消去処理が行われた場合などが考えられる。判定部３０７は、応答時間が閾値より大きいか否かを示す信号を、コマンド待機制御部３０１に出力する。
【００５４】
コマンド待機制御部３０１は、応答時間が閾値以下であること示す信号が入力された場合は、書き込みコマンドの出力間隔時間として、第１の間隔時間を用いる。一方、応答時間が閾値より大きいこと示す信号が入力された場合は、第１の間隔時間よりも大きい第２の間隔時間を用いる。閾値と応答時間との差が大きいほど、第２の間隔時間の値を大きくしてもよい。また、読み出しコマンドか、書き込みコマンドかで、異なる閾値を用いてもよい。また、読み出しコマンドよる読み出しデータ量、または書き込みコマンドよる書き込みデータ量に応じて、異なる閾値を用いてもよい。
【００５５】
また変形例として、閾値を用いない構成も可能である。たとえば、応答時間の長さが大きいほど、書き込みコマンド間の出力間隔を長くしてもよい。
【００５６】
以上、本実施形態によれば、ストレージ装置に書き込みコマンドが蓄積されることによる読み出し遅延の増大を防ぐことができる。
【００５７】
（第３の実施形態）
図４は、第３の実施形態にかかるストレージ搭載コンピュータの詳細構成を示す。
【００５８】
第１の実施形態のストレージコマンド制御部に対し、指示待ち読み出しコマンド状態取得部４０６と、判定部４０７が追加されている。ストレージコマンド制御部４００内のその他の要素、すなわち、コマンド待機制御部４０１、タイマー４０２、コマンド出力制御部４０３、コマンド入出力部４０４、コマンド応答通知部４０５の動作は、図２の同一名称の要素と基本的に同様であり、拡張された処理の除き、重複する説明を省略する。
【００５９】
指示待ち読み出しコマンド状態取得部４０６は、ストレージアクセスコマンド指示部１０２内のバッファに、ストレージコマンド制御部４００への出力待ちとなっている読み出しコマンドが存在するかを検査する。ストレージアクセスコマンド指示部１０２で読み出しコマンドが発行されたものの、ストレージコマンド制御部４００へ出力されずにバッファに残っている読み出しコマンドがこれに該当する。前述したように、ストレージアクセスコマンド指示部１０２がストレージ装置１０６と制御信号をやりとした後でコマンドを出力する構成を採用した場合等に、このような状態が起こりえる。
【００６０】
判定部４０７は、ストレージアクセスコマンド指示部１０２で出力待ちの読み出しコマンドが存在するときは、書き込みコマンドの出力間隔時間を現在の値より大きな値に決定し（たとえば一定値だけ大きくし）、決定された値を、コマンド待機制御部４０１に指示する。コマンド待機制御部４０１は、判定部４０７からの指示に応じて、書き込みコマンドの出力間隔時間を変更する。
【００６１】
別の構成例として、指示待ち読み出しコマンド状態取得部４０６は、ストレージアクセスコマンド指示部１０２で待機させられている読み出しコマンドの個数を取得してもよい。判定部４０７が、当該読み出しコマンドの個数に応じて、書き込みコマンドの出力間隔時間を設定してもよい。読み出しコマンドの個数が大きいほど、書き込みコマンドの出力間隔時間の値を大きくしてもよい。
【００６２】
さらに別の構成例として、指示待ち読み出しコマンド状態取得部４０６は、ストレージアクセスコマンド指示部１０２で待機させられている読み出しコマンドの読み出しデータ量を取得してもよい。判定部４０７は、当該読み出しコマンドの読み出しデータ量の合計を計算し、合計データ量に応じて、書き込みコマンドの出力間隔時間を設定してもよい。読み出しデータ量の合計が大きいほど、書き込みコマンドの出力間隔時間の値を大きくしてもよい。
【００６３】
以上、本実施形態によれば、読み出しアクセスの遅延が大きいことが見込まれる場合に、読み出しコマンドの前に多くの書き込みコマンドがたまることを防止できる。よって、読み出しアクセスの遅延が増大することを抑制できる。
【００６４】
（第４の実施形態）
ＳＳＤにおいては、あらかじめ消去してあるフラッシュメモリの領域が少なくなると、データを書き込む前にフラッシュメモリのデータ消去を行なう必要がある。このためＳＳＤの書き込みアクセス時間は一定ではなく、データ消去が必要な場合は、消去が不要の場合に比べて書き込みアクセスに長い時間が必要である。このようなデータ消去処理が伴う書き込みが発生する条件あるいはタイミングは、それまでの書き込みコマンドの履歴に依存し、たとえば書き込みコマンド数、および書き込みデータ量に関連性が高い。たとえば一定の書き込みデータ量の書き込みコマンドを繰り返し実行すれば、周期的かそれに近い形で、ＳＳＤでデータ消去処理が発生することが考えられる。本実施形態では、ある書き込みコマンドについて、当該書き込みコマンドの実行直前にストレージ装置でデータ消去処理が発生する可能性が高いと判断した場合、当該ある書き込みコマンドの次の書き込みコマンドに適用する出力間隔時間を大きくすることを特徴とする。以下、本実施形態の詳細を説明する。
【００６５】
図５は、第４の実施形態にかかるストレージ搭載コンピュータの詳細構成を示す。
【００６６】
第１の実施形態のストレージコマンド制御部に対し、指示待ち読み出しコマンド状態取得部５０６と、判定部５０７が追加されている。ストレージコマンド制御部５００内のその他の要素、すなわち、コマンド待機制御部５０１、タイマー５０２、コマンド発行制御５０３、コマンド入出力部５０４、コマンド応答通知部５０５の動作は、第１の実施形態の同一名称の要素と基本的に同様であり、拡張された処理の除き、重複する説明を省略する。
【００６７】
指示待ち読み出しコマンド状態取得部５０６は、第３の実施形態と同様の動作を行うため、説明を省略する。
【００６８】
コマンド出力制御部５０３は、コマンド入出力部５０４に書き込みコマンドを出力するごとに、書き込みコマンドの出力の通知と、書き込みデータ量の情報を、判定部５０７に出力する。
【００６９】
判定部５０７は、ストレージアクセスコマンド指示部１０２内に待機中の読み出しコマンドが存在している場合に、当該書き込みコマンドがストレージ装置でのデータ消去処理を伴うかを判断する。すなわち、当該書き込みコマンドの実行前にデータ消去処理が行われるかを判断する。これまで出力した書き込みコマンドの履歴、たとえば書き込みコマンド数や、書き込みコマンドのデータ量の履歴に基づき、判断を行う。書き込みコマンドの履歴が、あらかじめ与えた所定の条件を満たすときは、データ消去処理が発生する可能性が高いと判断する。例えば、前回データ消去処理を伴う書き込みが行われた以降の書き込みデータ量の合計が閾値以上になった場合に、データ消去処理が発生する可能性が高いと判断する。このとき、判定部５０７は、出力間隔時間の値を増加させ、増加した値の情報をコマンド待機制御部５０１に指示する。
【００７０】
また、判定部５０７は、ストレージ装置５０４でデータ消去処理が行われたと判断した場合は、コマンド待機制御部５０１に、出力間隔時間の低減（たとえば初期値に戻す）を指示する。データ消去処理が行われたかどうかは、第３の実施形態と同様にして、コマンドが出力されてからコマンド応答が返されるまでの時間が閾値を超えたかで判断すればよい。なお、ストレージ装置がデータ消去処理を行った旨を通知する機構を備える場合は、ストレージ装置からの通知をもって、データ消去処理が行われたと判断することも可能である。
【００７１】
コマンド待機制御部５０１は、判定部５０７からの指示に応じて、書き込みコマンドの出力間隔時間を制御する。
【００７２】
以上、本実施形態によれば、読み出しアクセスの遅延が大きいことが見込まれる場合に、読み出しコマンドの前に多くの書き込みコマンドがストレージ装置１０６に蓄積されることを防止できる。よって、読み出しアクセスの遅延が増大することを抑制できる。
【００７３】
（第５の実施形態）
図６は、第５の実施形態にかかるストレージ搭載コンピュータの詳細構成を示す。
【００７４】
第４の実施形態に対して、条件確認部５０８が追加されている。第５の実施形態で説明したデータ消去処理の発生する条件は、ストレージ装置（たとえばメーカ、型番等）よって異なると考えられる。したがって、データ消去処理が発生するかを判定するための条件を事前に固定することは困難である。そこで、条件確認部５０８は、利用するストレージ装置に対する書き込み試験を事前に実施し、書き込みコマンドの出力からコマンド応答が返されるまでの時間（書き込みアクセスの時間）を測定する。書き込みコマンドの出力間隔は十分大きな値とすればよい。書き込みアクセスの時間が閾値を越えた場合は、データ消去処理が発生したと判断する。このような試験を繰り返すことで、条件確認部５０８は、データ消去処理が発生する条件を特定し、特定した条件を、判定部５０７に通知する。
【００７５】
以上、本実施形態によれば、ストレージ装置でフラッシュメモリ（たとえばNAND型フラッシュメモリ）のデータ消去処理が行われる条件を取得することにより、利用するストレージ装置の種類にかかわらず、書き込みコマンドの蓄積を防止して、読み出しアクセスの遅延が増大することを抑制できる。
【００７６】
以上に説明した実施形態におけるストレージ搭載コンピュータは、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。たとえば、ストレージコマンド制御部の各ブロックの処理は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、ストレージコマンド制御部は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD-ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。
【００７７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００７８】
以上説明した少なくともひとつの実施形態によれば、ストレージ装置への読み出しアクセスの応答時間の増大を抑制することができる。
【図１】
2014154023.tif 000003
【図２】
2014154023.tif 000004
【図３】
2014154023.tif 000005
【図４】
2014154023.tif 000006
【図５】
2014154023.tif 000007
【図６】
2014154023.tif 000008
【図７】
2014154023.tif 000009
【図８】
2014154023.tif 000010
【図９】
2014154023.tif 000011
【図１０】
2014154023.tif 000012
【手続補正書】
【提出日】平成25年10月23日(2013.10.23)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
【特許文献１】米国特許第６１１５７８５号明細書
【特許文献２】特開２０１０−１０２３６９号公報