(57)【特許請求の範囲】
【請求項１】
記憶装置に対するアクセス処理が要求されたとき、要求されたアクセス処理の優先度を示すアクセス優先度を判定し、優先度ごとに設けられた複数のキューのうち前記アクセス優先度に対応するキューに、前記要求されたアクセス処理に対応する要素を登録する登録部と、
前記複数のキューから取り出されて前記記憶装置のキューに登録されている要素の数、または当該要素のうちアクセス処理が未処理のコマンドの数が、所定の閾値以下になるたびに、前記複数のキューのそれぞれを順番にチェックし、前記複数のキューのうち要素が登録されているキューのそれぞれから要素を１つずつ順番に取り出し、取り出した要素に対応するアクセス処理の実行を前記記憶装置に指示する指示部と、
を有するストレージ制御装置。
【請求項２】
記憶装置に対するアクセス処理が要求されたとき、要求されたアクセス処理の優先度を示すアクセス優先度を判定し、前記要求されたアクセス処理における書き込みデータまたは読み出しデータを、前記アクセス優先度が低いほど分割数が多くなるように均等に分割し、優先度ごとに設けられた複数のキューのうち前記アクセス優先度に対応するキューに、分割されたデータそれぞれについてのアクセス処理に対応する要素を登録する登録部と、
前記複数のキューのそれぞれを順番にチェックし、前記複数のキューのうち要素が登録されているキューのそれぞれから要素を１つずつ順番に取り出し、取り出した要素に対応するアクセス処理の実行を前記記憶装置に指示する処理を、周期的に実行する指示部と、
を有するストレージ制御装置。
【請求項３】
前記登録部は、前記アクセス優先度の判定時点での前記記憶装置におけるアクセス負荷を検知し、前記書き込みデータまたは前記読み出しデータを、さらに前記アクセス負荷が高いほど分割数が多くなるように分割する、
請求項２記載のストレージ制御装置。
【請求項４】
ホスト装置から記憶装置へのアクセス時に利用される１次キャッシュと、
前記ホスト装置から前記記憶装置へのアクセス時に利用される２次キャッシュと、
前記２次キャッシュに対するアクセス処理が要求されたとき、要求されたアクセス処理の優先度を示すアクセス優先度を判定し、優先度ごとに設けられた複数のキューのうち前記アクセス優先度に対応するキューに、前記要求されたアクセス処理に対応する要素を登録する登録部と、
前記複数のキューのそれぞれを順番にチェックし、前記複数のキューのうち要素が登録されているキューのそれぞれから要素を１つずつ順番に取り出し、取り出した要素に対応するアクセス処理の実行を前記２次キャッシュに指示する処理を、周期的に実行する指示部と、
を有し、
前記登録部は、前記１次キャッシュに記憶されていない第１のデータに対する前記ホスト装置からの読み出し要求に応じて、前記第１のデータを前記２次キャッシュから読み出す処理が要求されたときの前記アクセス優先度を、前記１次キャッシュから追い出された回数が所定値を超えた第２のデータを前記記憶装置から前記２次キャッシュへ書き込む処理が要求されたときの前記アクセス優先度より高いと判定する、
ストレージ制御装置。
【請求項５】
コンピュータが、
記憶装置に対するアクセス処理が要求されたとき、要求されたアクセス処理の優先度を示すアクセス優先度を判定し、
優先度ごとに設けられた複数のキューのうち前記アクセス優先度に対応するキューに、前記要求されたアクセス処理に対応する要素を登録し、
前記複数のキューから取り出されて前記記憶装置のキューに登録されている要素の数、または当該要素のうちアクセス処理が未処理のコマンドの数が、所定の閾値以下になるたびに、前記複数のキューのそれぞれを順番にチェックし、前記複数のキューのうち要素が登録されているキューのそれぞれから要素を１つずつ順番に取り出し、取り出した要素に対応するアクセス処理の実行を前記記憶装置に指示する、
ストレージ制御方法。
【請求項６】
コンピュータに、
記憶装置に対するアクセス処理が要求されたとき、要求されたアクセス処理の優先度を示すアクセス優先度を判定し、
優先度ごとに設けられた複数のキューのうち前記アクセス優先度に対応するキューに、前記要求されたアクセス処理に対応する要素を登録し、
前記複数のキューから取り出されて前記記憶装置のキューに登録されている要素の数、または当該要素のうちアクセス処理が未処理のコマンドの数が、所定の閾値以下になるたびに、前記複数のキューのそれぞれを順番にチェックし、前記複数のキューのうち要素が登録されているキューのそれぞれから要素を１つずつ順番に取り出し、取り出した要素に対応するアクセス処理の実行を前記記憶装置に指示する、
処理を実行させるストレージ制御プログラム。
【請求項７】
コンピュータに、
記憶装置に対するアクセス処理が要求されたとき、要求されたアクセス処理の優先度を示すアクセス優先度を判定し、
前記要求されたアクセス処理における書き込みデータまたは読み出しデータを、前記アクセス優先度が低いほど分割数が多くなるように均等に分割し、
優先度ごとに設けられた複数のキューのうち前記アクセス優先度に対応するキューに、分割されたデータそれぞれについてのアクセス処理に対応する要素を登録し、
前記複数のキューのそれぞれを順番にチェックし、前記複数のキューのうち要素が登録されているキューのそれぞれから要素を１つずつ順番に取り出し、取り出した要素に対応するアクセス処理の実行を前記記憶装置に指示する処理を、周期的に実行する、
処理を実行させるストレージ制御プログラム。
【請求項８】
ホスト装置から記憶装置へのアクセス時に利用される１次キャッシュと、前記ホスト装置から前記記憶装置へのアクセス時に利用される２次キャッシュとを有するコンピュータに、
前記２次キャッシュに対するアクセス処理が要求されたとき、要求されたアクセス処理の優先度を示すアクセス優先度を判定し、優先度ごとに設けられた複数のキューのうち前記アクセス優先度に対応するキューに、前記要求されたアクセス処理に対応する要素を登録し、
前記複数のキューのそれぞれを順番にチェックし、前記複数のキューのうち要素が登録されているキューのそれぞれから要素を１つずつ順番に取り出し、取り出した要素に対応するアクセス処理の実行を前記２次キャッシュに指示する処理を、周期的に実行する、
処理を実行させるストレージ制御プログラムであって、
前記登録では、前記１次キャッシュに記憶されていない第１のデータに対する前記ホスト装置からの読み出し要求に応じて、前記第１のデータを前記２次キャッシュから読み出す処理が要求されたときの前記アクセス優先度を、前記１次キャッシュから追い出された回数が所定値を超えた第２のデータを前記記憶装置から前記２次キャッシュへ書き込む処理が要求されたときの前記アクセス優先度より高いと判定する、
ストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
一般に、コンピュータ内のプロセッサは、記憶装置に対してコマンドを発行することで記憶装置にアクセスする。その際に、コマンドを一時的に記憶するキューが用いられることがある。
【０００３】
例えば、ディスクメモリとフラッシュメモリとを有する記憶装置に関する次のような技術が提案されている。この記憶装置では、ホストシステムから受信したコマンドは１次待ち行列に入れられ、それらのうちフラッシュメモリに向けられたコマンドは、フラッシュ待ち行列にさらに記憶された後、フラッシュコントローラに出力される。
【０００４】
また、記憶装置へのアクセス制御技術の例として、複数個のディスクドライブに対する書き込み制御をライトアフタ方式で行う、次のようなディスク制御装置が提案されている。このディスク制御装置では、デステージ処理の対象候補であり、かつ、ホストコンピュータからの直接のアクセス要求があったディスクドライブに、高い優先度が付与され、次のデステージ処理の対象となるディスクドライブを選択する場合に、優先度の高いディスクドライブから優先的に選択される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１３０１５０号公報
【特許文献２】特開平４−４４２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、プロセッサがコマンドを用いて実行を要求するアクセス処理には、優先度が高い処理と低い処理とが含まれる場合がある。優先度が高いアクセス処理ほど、短時間で実行されることが望まれる。しかし、コマンドをキューに一旦登録してから記憶装置に発行する構成では、そのキューにおいて、優先度の高いアクセス処理のコマンドの前に優先度の低いアクセス処理のコマンドが多数残っている場合には、優先度の高いアクセス処理が実行されるまでに長い時間がかかってしまうという問題がある。
【０００７】
また、キューが記憶装置側に搭載されている場合もある。その場合、例えば、プロセッサから送信されたコマンドは、記憶装置内のキューに一旦記憶される。そして、キューの先頭からコマンドが取り出され、取り出されたコマンドに応じたアクセス動作が実行される。このような構成でも、優先度の高いアクセス処理のコマンドが記憶装置に送信される際に、優先度の低いアクセス処理のコマンドが記憶装置内のキューに多数残っている場合には、優先度の高いアクセス処理が実行されるまでに長い時間がかかってしまう。
【０００８】
１つの側面では、本発明は、記憶装置に対する優先度の高いアクセス処理の実行遅延を抑制することが可能なストレージ制御装置、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、登録部と指示部とを有する次のようなストレージ制御装置が提供される。このストレージ制御装置において、登録部は、記憶装置に対するアクセス処理が要求されたとき、要求されたアクセス処理の優先度を示すアクセス優先度を判定し、優先度ごとに設けられた複数のキューのうちアクセス優先度に対応するキューに、要求されたアクセス処理に対応する要素を登録する。指示部は、複数のキューを間欠的なチェックタイミングでチェックし、各チェックタイミングにおいて、複数のキューのうち要素が登録されているキューから要素を１つずつ取り出し、取り出した要素に対応するアクセス処理の実行を記憶装置に指示する。
【００１０】
また、１つの案では、上記のストレージ制御装置と同様の処理が実行されるストレージ制御方法が提供される。
さらに、１つの案では、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、記憶装置に対する優先度の高いアクセス処理の実行遅延を抑制できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ＣＭの処理機能の構成例を示すブロック図である。
【図４】２次キャッシュに対するアクセスについて説明するための図である。
【図５】コマンドの発行から対応するアクセス処理が完了するまでの時間経過の比較例を示すタイミングチャートである。
【図６】発行制御部およびＳＳＤの内部構成例を示す図である。
【図７】優先度およびアクセス負荷と分割数との対応関係の例を示す図である。
【図８】登録処理部によるキュー登録処理手順の例を示すフローチャートである。
【図９】発行処理部によるコマンド発行処理手順の例を示すフローチャートである。
【図１０】キャッシュ制御部から発行されるコマンドの例を示す図である。
【図１１】キューに対するコマンド格納の例を示す図である。
【図１２】コマンドの発行から対応するアクセス処理が完了するまでの時間経過の例を示すタイミングチャートである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージ制御装置の構成例および処理例を示す図である。図１に示すストレージ制御装置１は、登録部１ａと指示部１ｂを有する。登録部１ａと指示部１ｂの処理は、例えば、ストレージ制御装置１が備えるプロセッサが所定のプログラムを実行することで実現される。また、ストレージ制御装置１には記憶装置２が接続されている。なお、記憶装置２は、ストレージ制御装置１の内部に搭載されていてもよい。
【００１４】
登録部１ａは、記憶装置２に対するアクセス処理が要求されたとき、次のような処理を実行する。なお、アクセス処理は、例えば、ストレージ制御装置１内のアプリケーションの処理によって要求される。あるいは、アクセス処理は、ストレージ制御装置１の外部の装置から要求されてもよい。
【００１５】
登録部１ａは、要求されたアクセス処理の優先度を判定する。登録部１ａは、優先度ごとに設けられた複数のキューのうち、判定された優先度に対応するキューに対して、要求されたアクセス処理に対応する要素を登録する。登録される要素は、例えば、対応するアクセス処理を要求するためのコマンドである。
【００１６】
図１の例では、３つのキュー３ａ〜３ｃがストレージ制御装置１に実装される。キュー３ａは、優先度が最も高い「優先度１」に対応づけられている。キュー３ｂは、優先度が中程度の「優先度２」に対応づけられている。キュー３ｃは、優先度が最も低い「優先度３」に対応づけられている。
【００１７】
また、図１の例では、アクセス処理Ｐａ，Ｐｂ，Ｐｃ，Ｐｄ，Ｐｅ，Ｐｆ，Ｐｇの順に要求されたものとする。アクセス処理Ｐａ，Ｐｆの優先度は優先度１であり、アクセス処理Ｐｂ，Ｐｇの優先度は優先度２であり、アクセス処理Ｐｃ，Ｐｄ，Ｐｅの優先度は優先度３であるものとする。
【００１８】
この場合、キュー３ａには、アクセス処理Ｐａ，Ｐｆの順に、各アクセス処理に対応する要素が登録される。キュー３ｂには、アクセス処理Ｐｂ，Ｐｇの順に、各アクセス処理に対応する要素が登録される。キュー３ｃには、アクセス処理Ｐｃ，Ｐｄ，Ｐｅの順に、各アクセス処理に対応する要素が登録される。
【００１９】
指示部１ｂは、キュー３ａ〜３ｃを間欠的なチェックタイミングでチェックする。チェックタイミングは、例えば、記憶装置２にアクセス処理の実行を指示できるタイミングであり、具体的な例としては、記憶装置２に実行を指示済みで、かつ実行が完了していないアクセス処理の数が一定数以下になったタイミングである。
【００２０】
指示部１ｂは、各チェックタイミングにおいて、キュー３ａ〜３ｃのうち要素が登録されているキューから、要素を１つずつ取り出す。これにより、各チェックタイミングでは、最大でキューの個数と同じ数の要素が取り出される。指示部１ｂは、取り出した要素に対応するアクセス処理の実行を記憶装置２に指示する。例えば、取り出された要素が記憶装置２に送信されて、記憶装置２が備えるキューに格納される。
【００２１】
図１の例では、このような指示部１ｂの処理により、アクセス処理Ｐａ，Ｐｂ，Ｐｃ，Ｐｆ，Ｐｇ，Ｐｄ，Ｐｅの順で、各アクセス処理に対応する要素が取り出される。これにより、優先度１のアクセス処理が複数要求されている場合に、それらのアクセス処理が３回に１回以上実行されるように、アクセス処理が並び替えられる。
【００２２】
したがって、例えば、優先度１のアクセス処理Ｐｆについての記憶装置２での実行順は、それより先に登録部１ａに要求されていたアクセス処理Ｐｄ，Ｐｅより前の位置に変更される。その結果、登録部１ａに要求された順序と同じ順序で記憶装置２にアクセス処理の実行を指示した場合と比較して、アクセス処理Ｐｆが要求されてから記憶装置２で実行されるまでの時間が短縮される。
【００２３】
以上のストレージ制御装置１によれば、優先度の高いアクセス処理の実行遅延を抑制することができる。
〔第２の実施の形態〕
次に、図１の記憶装置２の例として、ＳＳＤ（Solid State Drive）を用いた２次キャッシュを有するストレージシステムについて説明する。
【００２４】
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ストレージ装置５０を有する。ストレージ装置５０は、ＣＭ（Controller Module）１００とＤＥ（Drive Enclosure）２００を有する。また、ＣＭ１００には、ホスト装置３００が接続されている。ＣＭ１００とホスト装置３００とは、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続される。
【００２５】
ＣＭ１００は、ホスト装置３００からの要求に応じて、ＤＥ２００に搭載された記憶装置へのアクセスを制御するストレージ制御装置である。ＤＥ２００には、ホスト装置３００からのアクセス対象となる記憶装置が複数台搭載されている。本実施の形態では例として、ＤＥ２００は、記憶装置として複数台のＨＤＤ（Hard Disk Drive）２０１，２０２，２０３，・・・が搭載されたディスクアレイ装置である。
【００２６】
ＣＭ１００は、プロセッサ１０１、ＲＡＭ（Random Access Memory）１０２、ＳＳＤ１０３、ＣＡ（Channel Adapter）１０４およびＤＩ（Drive Interface）１０５を有する。これらの構成要素は、バス１０６を介して接続されている。
【００２７】
プロセッサ１０１は、ＣＭ１００全体を統括的に制御する。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２８】
ＲＡＭ１０２は、ＣＭ１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。例えば、ＲＡＭ１０２には、ホスト装置３００からの要求に応じたＤＥ２００へのアクセス制御の際に用いられる１次キャッシュの領域が確保される。
【００２９】
ＳＳＤ１０３は、ＣＭ１００の補助記憶装置として使用される。ＳＳＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。また、ＳＳＤ１０３には、ホスト装置３００からの要求に応じてＤＥ２００へのアクセス制御の際に用いられる２次キャッシュの領域が確保される。また、ＳＳＤ１０３には、内部の記憶領域へのアクセスを制御する３つのＣＰＵ１０３ａ〜１０３ｃと、揮発性のメモリ１０３ｄとが搭載されている。
【００３０】
ＣＡ１０４は、ホスト装置３００と通信するためのインタフェースである。ＤＩ１０５は、ＤＥ２００と通信するためのインタフェースである。ＤＩ１０５は、例えば、ＳＡＳ（Serial Attached SCSI）インタフェースである。
【００３１】
以上のハードウェア構成によってＣＭ１００の処理機能が実現される。
図３は、ＣＭの処理機能の構成例を示すブロック図である。ＣＭ１００は、１次キャッシュ１１１、２次キャッシュ１１２、記憶部１２０、キャッシュ制御部１３０および発行制御部１４０を有する。
【００３２】
１次キャッシュ１１１と２次キャッシュ１１２は、ホスト装置３００からのアクセス要求に応じてＤＥ２００にアクセスする際のキャッシュ領域として利用される。２次キャッシュ１１２は、ＤＥ２００内の記憶装置（ＨＤＤ）よりアクセス性能の高い記憶装置に確保された記憶領域として実装され、本実施の形態では、ＳＳＤ１０３に確保された記憶領域として実装される。なお、２次キャッシュ１１２の記憶領域が確保されるＳＳＤは、ＯＳプログラムやアプリケーションプログラムが格納されるＳＳＤとは別のＳＳＤであってもよい。１次キャッシュ１１１は、２次キャッシュ１１２を実現する記憶装置よりアクセス性能の高い記憶装置に確保された記憶領域として実装され、本実施の形態ではＲＡＭ１０２に確保された記憶領域として実装される。
【００３３】
記憶部１２０は、例えば、ＲＡＭ１０２またはＳＳＤ１０３の記憶領域として実装される。記憶部１２０は、ボリューム管理テーブル領域１２１、キャッシュ管理テーブル領域１２２およびカウントテーブル領域１２３を有し、各種テーブルの情報を記憶する。
【００３４】
ボリューム管理テーブルは、ホスト装置３００からのアクセスの対象となる論理ボリュームに関する情報を記憶する。論理ボリュームとは、ＤＥ２００内の任意のＨＤＤによって実現される論理記憶領域である。
【００３５】
キャッシュ管理テーブルは、論理ボリュームのデータのうち、１次キャッシュ１１１および２次キャッシュ１１２に格納されているデータを管理するための情報を記憶する。キャッシュ管理テーブルは、例えば、１次キャッシュ１１１および２次キャッシュ１１２の各領域について、論理ボリュームのブロックのうち、領域に記憶されているブロックの識別情報や、そのブロックに対する最終アクセス時刻などを保持する。
【００３６】
カウントテーブルは、論理ボリュームのブロックのうち、１次キャッシュ１１１から１回以上追い出されたブロックの識別情報と、追い出された回数とを記憶する。１次キャッシュ１１１に空きがない状態で、ホスト装置３００からのアクセス要求に応じて１次キャッシュ１１１に新たなブロックが格納される場合、１次キャッシュ１１１に格納されたブロックのうち、最終アクセス時刻が最も古いブロックが消去される。１次キャッシュ１１１からの追い出しとは、このように１次キャッシュ１１１に格納されたブロックが消去されることを言う。
【００３７】
キャッシュ制御部１３０と発行制御部１４０の処理は、例えば、プロセッサ１０１が所定のプログラムを実行することで実現される。
キャッシュ制御部１３０は、１次キャッシュ１１１と２次キャッシュ１１２を用いて、ホスト装置３００からの要求に応じた論理ボリュームへのアクセスを制御する。１次キャッシュ１１１と２次キャッシュ１１２を用いた処理の詳細については後述する。
【００３８】
発行制御部１４０は、キャッシュ制御部１３０からの２次キャッシュ１１２へのアクセス要求を受け付け、要求に応じたアクセス処理の実行を２次キャッシュ１１２に指示するタイミングを制御する。具体的には、発行制御部１４０は、２次キャッシュ１１２にアクセスするためのコマンドをキャッシュ制御部１３０から受信し、受信したコマンドの２次キャッシュ１１２への発行タイミングを制御する。後述するように、発行制御部１４０は、コマンドに基づくアクセス処理の優先度に応じて、受信したコマンドの発行順を入れ替える。
【００３９】
ここで、キャッシュ制御部１３０による１次キャッシュ１１１と２次キャッシュ１１２を用いた処理について説明する。
ホスト装置３００から読み出しが要求されたデータが１次キャッシュ１１１に格納されている場合、キャッシュ制御部１３０は、そのデータを１次キャッシュ１１１から読み出してホスト装置３００に送信する。また、ホスト装置３００から読み出しが要求されたデータが１次キャッシュ１１１に格納されていない場合、キャッシュ制御部１３０は、そのデータが２次キャッシュ１１２に格納されているかを判定する。
【００４０】
そのデータが２次キャッシュ１１２に格納されている場合には、キャッシュ制御部１３０は、そのデータを２次キャッシュ１１２から読み出して１次キャッシュ１１１に格納した後、ホスト装置３００に送信する。一方、そのデータが２次キャッシュ１１２に格納されていない場合、キャッシュ制御部１３０は、そのデータをＤＥ２００から読み出して１次キャッシュ１１１に格納した後、ホスト装置３００に送信する。
【００４１】
１次キャッシュ１１１に格納されたデータに対する更新がホスト装置３００から要求された場合、キャッシュ制御部１３０は、１次キャッシュ１１１内のそのデータを受信データによって更新し、その後の非同期のタイミングでライトバックを実行する。ライトバックでは、ＤＥ２００内の対応するデータが受信データによって更新される。このとき、同じデータが２次キャッシュ１１２にも格納されている場合には、２次キャッシュ１１２内のそのデータも受信データによって更新される。
【００４２】
１次キャッシュ１１１に空き領域がない状態で１次キャッシュ１１１に新たなデータが格納される場合、キャッシュ制御部１３０は、１次キャッシュ１１１に格納されているデータのうち、最終アクセス時刻が最も早いデータを１次キャッシュ１１１から追い出す。キャッシュ制御部１３０は、１次キャッシュ１１１から追い出された回数をブロックごとにカウントテーブル１２３ａに登録する。そして、キャッシュ制御部１３０は、カウントテーブル１２３ａに基づき、１次キャッシュ１１１から追い出された回数が所定回数を超えたブロックを、ＤＥ２００から読み出して２次キャッシュ１１２に格納する。以下、このようなＤＥ２００から２次キャッシュ１１２へのデータの読み出しを「ステージング」と記載する。このような追い出し回数に基づくステージング処理は、追い出し回数が多いデータには、その後のどこかのタイミングで再度ホスト装置３００からアクセスが要求される可能性が高い、という考え方に基づく処理であり、いわゆる「先読み」の一種である。なお、カウントテーブル１２３ａに保持された回数のカウント値のうち、２次キャッシュ１１２にステージングされたブロックに対応するカウント値は、０にリセットされる。
【００４３】
図４は、２次キャッシュに対するアクセスについて説明するための図である。ここでは、１次キャッシュ１１１と２次キャッシュ１１２を用いた上記の処理のうち、２次キャッシュ１１２に対するアクセスに注目する。２次キャッシュ１１２に対するアクセス処理のタイプとしては、大別して次の３種類がある。なお、「ホストＩ／Ｏ（In/Out）」とは、ホスト装置３００からのアクセス要求を指す。
【００４４】
（タイプ１）ホストＩ／Ｏに応じたアクセス処理。
（タイプ２）ホストＩ／Ｏとは非同期のアクセス処理。
（タイプ３）ホストＩ／Ｏとは無関係のアクセス処理。
【００４５】
タイプ１のアクセス処理の例としては、ホスト装置３００からの読み出し要求に応じた２次キャッシュ１１２から１次キャッシュ１１１へのデータ読み出しがある。この処理は、ホスト装置３００から読み出しが要求されたデータが、１次キャッシュ１１１には格納されていないものの、２次キャッシュ１１２に格納されていた場合に実行される。
【００４６】
図４ではこの処理の例として、データ＃１を２次キャッシュ１１２から１次キャッシュ１１１へ読み出す処理（ステップＳＴ１１ａ）を示している。なお、データ＃１は、１次キャッシュ１１１に格納された後、ホスト装置３００に送信される（ステップＳＴ１１ｂ）。
【００４７】
タイプ２のアクセス処理は、ホストＩ／Ｏに関係するが、ホストＩ／Ｏとは非同期で行われる処理である。このようなアクセス処理の例としては、１次キャッシュ１１１から２次キャッシュ１１２へのライトバックがある。ライトバックは、１次キャッシュ１１１と２次キャッシュ１１２の両方に格納されたデータに対して、ホスト装置３００から更新が要求された場合に、１次キャッシュ１１１上のデータが更新データによって上書きされた後、非同期のタイミングで２次キャッシュ１１２上の対応するデータが更新データによって上書きされる処理である。
【００４８】
図４ではこの処理の例として、データ＃２がデータ＃２ａに更新される場合の処理を示している。ホスト装置３００は、論理ボリューム上のある位置のデータ＃２をデータ＃２ａに更新するための書き込み要求を送信する（ステップＳＴ１２ａ）。キャッシュ制御部１３０は、１次キャッシュ１１１上のデータ＃２をデータ＃２ａに更新する。キャッシュ制御部１３０は、ホスト装置３００に書き込み完了の応答を行った後の任意のタイミングで、２次キャッシュ１１２上のデータ＃２をデータ＃２ａに更新してライトバックを行う（ステップＳＴ１２ｂ）。
【００４９】
タイプ３のアクセス処理の例としては、ＤＥ２００内のＨＤＤから２次キャッシュ１１２へのステージングがある。このステージングは、カウントテーブル１２３ａに基づき、１次キャッシュ１１１から追い出された回数が所定の閾値を超えたデータについて実行される。図４ではこの処理の例として、データ＃３のステージング（ステップＳＴ３）を示している。
【００５０】
上記のタイプ１〜３のアクセス処理のうち、タイプ１のアクセス処理は、ホストＩ／Ｏが発生してからできるだけ短時間で実行を完了することが望まれる。なぜなら、このアクセス処理の完了までに時間がかかると、ホスト装置３００に応答するまでの時間が長くなり、論理ボリュームに対するアクセス性能が低下するからである。このため、タイプ２，３のアクセス処理と比較して優先度が高い。一方、タイプ３のアクセス処理は、ホストＩ／Ｏの発生タイミングとは無関係なので、タイプ１，２のアクセス処理と比較して優先度が低いと言える。
【００５１】
このように、ホスト装置３００から論理ボリュームへのアクセス性能を高めるためには、タイプ１のアクセス処理を短時間で完了させることが重要である。ところが、キャッシュ制御部１３０から２次キャッシュ１１２に対して発行されるコマンドの中には、各タイプのアクセス処理を要求するものが混在している。しかも、それらのアクセス処理における書き込みデータまたは読み出しデータのサイズも様々である。そのため、キャッシュ制御部１３０からタイプ１のアクセス処理を要求するためのコマンドが発行されたとき、それ以前に発行されたコマンドに基づくアクセス処理に時間がかかっているために、タイプ１のアクセス処理の開始が遅延することがある。その結果、ホスト装置３００への応答までに時間がかかってしまう。
【００５２】
以下、このような問題が発生するケースについて、図５に示す比較例を用いて説明する。図５は、コマンドの発行から対応するアクセス処理が完了するまでの時間経過の比較例を示すタイミングチャートである。
【００５３】
この図５の比較例では、キャッシュ制御部１３０から発行されたコマンドは、発行制御部１４０を介さずに２次キャッシュ１１２に直接的に送信されるものとする。また、図２に示したように、ＳＳＤ１０３には３個のＣＰＵ１０３ａ〜１０３ｃが搭載されている。さらに、ＳＳＤ１０３のメモリ１０３ｄには、キャッシュ制御部１３０から発行されたコマンドを一時的に記憶するＳＳＤキューが実装されているものとする。そして、ＣＰＵ１０３ａ〜１０３ｃは、ＳＳＤキューから取り出したコマンドに基づく２次キャッシュ１１２へのアクセスを並列に実行可能であるものとする。
【００５４】
なお、図５では、「ＣＰＵ１０３ａ，１０３ｂ，１０３ｃ」のそれぞれの記載の右側に示した、各コマンドに対応する矩形は、その左右方向の長さが処理の長さを示す。ここでは例として、処理の長さは、アクセスされるデータのサイズ（具体的には、読み出しデータまたは書き込みデータのサイズ）に比例するものとする。以下、アクセスされるデータのサイズを「処理サイズ」と記載する場合がある。
【００５５】
図５の例では、キャッシュ制御部１３０から２次キャッシュ１１２に対して、それぞれ２次キャッシュ１１２へのアクセスを要求するためのコマンドＡ〜Ｚが順に発行されるものとする。これらのうち、コマンドＡ，Ｄ，Ｇ，Ｊ，Ｍ，Ｐ，Ｓ，Ｖ，Ｙは、タイプ１のアクセス処理を要求するものであり、アクセス処理の優先度は最も高い「１」である。また、コマンドＢ，Ｅ，Ｈ，Ｋ，Ｎ，Ｑ，Ｔ，Ｗ，Ｚは、タイプ２のアクセス処理を要求するものであり、アクセス処理の優先度は中間の「２」である。また、コマンドＣ，Ｆ，Ｉ，Ｌ，Ｏ，Ｒ，Ｕ，Ｘは、タイプ３のアクセス処理を要求するものであり、アクセス処理の優先度は最も低い「３」である。
【００５６】
コマンドＡが発行されると、ＣＰＵ１０３ａがコマンドＡに基づくアクセス処理を開始し、コマンドＢが発行されると、ＣＰＵ１０３ｂがコマンドＢに基づくアクセス処理を開始する。また、コマンドＣが発行されたとき、コマンドＡに基づくアクセス処理が完了したため、ＣＰＵ１０３ａはコマンドＣに基づくアクセス処理を開始する。以後、コマンドＤはＣＰＵ１０３ｂにより実行され、コマンドＥはＣＰＵ１０３ｃにより実行される。
【００５７】
図５の例では、コマンドＡからコマンドＧまでは、発行されるとすぐにＣＰＵ１０３ａ〜１０３ｃのいずれかによって実行される。しかし、コマンドＨは、それ以前に発行されたコマンドＣ，Ｆに基づく各アクセス処理の処理サイズが大きいことから、その発行から実行までに間隔が空く。さらに、後続のコマンドＩ，Ｌ，Ｏ，Ｒに基づくアクセス処理の処理サイズも大きいことから、コマンドＩ以降ではその発行から実行までの遅延量が徐々に大きくなっていく。
【００５８】
例えば、コマンドが一定周期で発行されるものとすると、優先度１のコマンドＳが発行されてから、コマンドＳに基づくアクセス処理が開始されるまでには、４周期分の時間がかかっている。したがって、ホスト装置３００からの、コマンドＳに対応するアクセス要求に対する応答性能が、大きく低下している。
【００５９】
以上の図５の例のように、処理サイズの大きいアクセス処理が完了していない高負荷の状態では、優先度１のコマンドが発行されてから、そのコマンドに基づくアクセス処理の実行が開始されるまでに長い時間がかかる可能性がある。特に、本実施の形態では、タイプ１，２のアクセス処理での処理サイズを１ブロック単位で可変としている一方、タイプ３のアクセス処理での処理サイズを複数ブロックの固定サイズとしている。その理由の１つは、１次キャッシュ１１１と比較して２次キャッシュ１１２の容量は大きいので、ステージングするデータ量を大きくしてヒットする確率を上げるためである。また、他の理由としては、ステージング対象のデータをＨＤＤから読み出す際に大きいサイズのデータを読み出した方が効率がよいからである。
【００６０】
このような処理サイズの条件により、優先度１，２のコマンドに基づくアクセス処理より優先度３のコマンドに基づくアクセス処理の方が、処理サイズが大きくなりやすい。そのため、上記のように優先度１のコマンドに基づくアクセス処理の開始タイミングが遅延しやすい。
【００６１】
さらに、処理サイズに関係なく、優先度の低いコマンドが連続して多数２次キャッシュ１１２に発行されてしまった場合にも、優先度１のコマンドに基づくアクセス処理の開始タイミングが遅延するという現象が発生し得る。
【００６２】
そこで、本実施の形態では、発行制御部１４０が、キャッシュ制御部１３０から発行されたコマンドを優先度別のキューに振り分け、各キューから１つずつコマンドを取り出して２次キャッシュ１１２に発行する。これにより、優先度１のコマンドが最低限、一定間隔で発行されるように、２次キャッシュ１１２へのコマンドの発行順が変更される。その結果、優先度１のコマンドの実行遅延量や実行遅延の発生確率が抑制される。
【００６３】
また、発行制御部１４０はさらに、優先度の低いコマンドに基づくアクセス処理の処理サイズを分割することで、そのコマンドを複数のコマンドに変換し、変換されたコマンドをキューに登録する。これにより、優先度が低く、処理サイズが大きいアクセス処理が要求された場合でも、優先度１のコマンドの実行遅延量や実行遅延の発生確率を抑制できる。
【００６４】
図６は、発行制御部およびＳＳＤの内部構成例を示す図である。発行制御部１４０は、登録処理部１４１、キュー１４２ａ〜１４２ｃおよび発行処理部１４３を有する。
キュー１４２ａ〜１４２ｃのそれぞれは、コマンドをＦＩＦＯ（First In First Out）方式で一時的に記憶する。キュー１４２ａ〜１４２ｃは、例えば、ＲＡＭ１０２に記憶されたコマンドの管理情報によって実現される。キュー１４２ａは優先度１に、キュー１４２ｂは優先度２に、キュー１４２ｃは優先度３にそれぞれ対応づけられている。
【００６５】
登録処理部１４１は、キャッシュ制御部１３０から発行されたコマンドを受信し、受信したコマンドに対応するアクセス処理の優先度を判定する。また、登録処理部１４１は、コマンド受信時点での２次キャッシュ１１２におけるアクセス負荷を検知する。アクセス負荷は、例えば、ＳＳＤ１０３のディスクビジー率として検知される。登録処理部１４１は、優先度とアクセス負荷に基づいて、アクセス処理の分割数を決定する。
【００６６】
登録処理部１４１は、分割数を１（すなわち、分割しない）と決定した場合、受信したコマンドを、キュー１４２ａ〜１４２ｃのうち判定された優先度に対応するキューに登録する。
【００６７】
一方、登録処理部１４１は、分割数を２以上と決定した場合、受信したコマンドに基づくアクセス処理の処理サイズを、決定された分割数だけ均等に分割する。登録処理部１４１は、分割数分のコマンドを作成し、各コマンドに、分割された処理サイズ分のデータの書き込みまたは読み出しを行うための情報を設定する。登録処理部１４１は、このようにして元のコマンドを変換して得られた複数のコマンドを、キュー１４２ａ〜１４２ｃのうち判定された優先度に対応するキューに登録する。
【００６８】
発行処理部１４３は、２次キャッシュ１１２にコマンドを発行可能かを判定する。発行処理部１４３は、例えば、２次キャッシュ１１２に発行済みのコマンドのうち、アクセス処理が未完了のコマンドの数が所定の閾値以下になったときに、コマンドを発行可能と判定する。発行処理部１４３は、コマンドを発行可能と判定すると、キュー１４２ａ〜１４２ｃのうちコマンドが１以上登録されている各キューから１つずつコマンドを取り出し、取り出したコマンドを２次キャッシュ１１２に発行する。
【００６９】
一方、ＳＳＤ１０３は、ＳＳＤキュー１０３ｅを有する。ＳＳＤキュー１０３ｅは、発行制御部１４０から２次キャッシュ１１２に発行されたコマンドを、ＦＩＦＯ方式で一時的に記憶する。ＳＳＤキュー１０３ｅは、例えば、ＳＳＤ１０３が備えるメモリ１０３ｄ上に実装される。
【００７０】
ＳＳＤ１０３に搭載されたＣＰＵ１０３ａ〜１０３ｃは、ＳＳＤキュー１０３ｅから取り出したコマンドに基づく２次キャッシュ１１２へのアクセス処理を実行する。ＣＰＵ１０３ａ〜１０３ｃはそれぞれ、実行中のアクセス処理が完了すると、ＳＳＤキュー１０３ｅからその先頭に登録されたコマンドを取り出す。ＣＰＵ１０３ａ〜１０３ｃは、取り出したコマンドに基づく２次キャッシュ１１２へのアクセス処理を並列に実行可能である。
【００７１】
図７は、優先度およびアクセス負荷と分割数との対応関係の例を示す図である。ここでは例として、アクセス負荷の高さがＳＳＤ１０３のディスクビジー率（ＳＳＤビジー率）として検知されるものとする。
【００７２】
登録処理部１４１は、例えば、図７に示す分割数対応表１２４に基づいて、アクセス処理の分割数を決定する。この場合、分割数対応表１２４は、例えば、記憶部１２０に記憶され、登録処理部１４１によって参照される。
【００７３】
図７の分割数対応表１２４の例のように、登録処理部１４１は、優先度が低いほど、アクセス処理の分割数を多くする。これにより、優先度が低く、処理サイズが大きいアクセス処理は、処理サイズが小さい複数のアクセス処理に分割され、分割された各アクセス処理に対応するコマンドが低優先度のキューに登録される。このように元のコマンドが複数のコマンドに分割されることで、元のコマンドに基づくアクセス処理全体が実行される間に、優先度の高いアクセス処理が割り込まれて実行される。したがって、優先度の高いアクセス処理の方が優先的に先に実行されるようになる。その結果、優先度の高いアクセス処理の実行遅延量や実行遅延の発生確率を抑制できる。
【００７４】
また、登録処理部１４１は、アクセス負荷が高いほど、アクセス処理の分割数を多くする。アクセス負荷が高い場合には、低い場合と比較して、キャッシュ制御部１３０からコマンドが発行されてからコマンドに基づくアクセス処理が開始されるまでの遅延が大きくなりやすい。そこで、アクセス負荷が高いほどアクセス処理の分割数を多くすることで、優先度の高いアクセス処理の実行遅延量や実行遅延の発生確率を抑制できる。一方、アクセス負荷が低く、アクセス処理の実行遅延が生じにくい状態では、アクセス処理の分割数を減らすことで、２次キャッシュ１１２でのアクセス処理効率が向上する。
【００７５】
なお、アクセス処理を分割する際には、分割後のアクセスサイズが、ＳＳＤ１０３に対する読み書きの最小単位の整数倍とされることが望ましい。これにより、２次キャッシュ１１２へのアクセスを効率化することができる。
【００７６】
次に、ＣＭ１００の処理についてフローチャートを用いて説明する。
図８は、登録処理部によるキュー登録処理手順の例を示すフローチャートである。
［ステップＳＴ１１］登録処理部１４１は、キャッシュ制御部１３０から、２次キャッシュ１１２にアクセスするためのコマンドを受信すると、ステップＳＴ１２以降の処理を実行する。なお、登録処理部１４１は、キャッシュ制御部１３０から、コマンドとともに、コマンドに基づくアクセス処理のタイプを示す情報も受信する。
【００７７】
［ステップＳＴ１２］登録処理部１４１は、受信したコマンドに基づくアクセス処理のタイプに基づいて、アクセス処理の優先度を判定する。登録処理部１４１は、タイプ１の場合はステップＳＴ１３のような判定を行い、タイプ２の場合はステップＳＴ１４のような判定を行い、タイプ３の場合はステップＳＴ１５のような判定を行う。
【００７８】
［ステップＳＴ１３］登録処理部１４１は、優先度１と判定する。
［ステップＳＴ１４］登録処理部１４１は、優先度２と判定する。
［ステップＳＴ１５］登録処理部１４１は、優先度３と判定する。
【００７９】
［ステップＳＴ１６］登録処理部１４１は、２次キャッシュ１１２におけるアクセス負荷を判定する。例えば、登録処理部１４１は、アクセス負荷を示す指標として、ＳＳＤビジー率を検知する。なお、アクセス負荷を示す指標の他の例として、キュー１４２ａ〜１４２ｃに蓄積されているコマンドの総数を用いることもできる。
【００８０】
［ステップＳＴ１７］登録処理部１４１は、ステップＳＴ１３〜ＳＴ１５で判定された優先度と、ステップＳＴ１６で判定されたアクセス負荷とに基づいて、アクセス処理の分割数を決定する。この決定は、例えば、図７に示した分割数対応表１２４を参照することで行われる。
【００８１】
［ステップＳＴ１８］決定された分割数が１である場合、登録処理部１４１は、ステップＳＴ１１で受信したコマンドを、キュー１４２ａ〜１４２ｃのうち判定された優先度に対応するキューに登録する。一方、決定された分割数が２以上である場合、登録処理部１４１は、ステップＳＴ１１で受信したコマンドに基づくアクセス処理の処理サイズを、決定された分割数だけ均等に分割する。登録処理部１４１は、分割数分のコマンドを作成し、各コマンドに、分割された処理サイズ分のデータの書き込みまたは読み出しを行うための情報を設定する。登録処理部１４１は、このようにして元のコマンドを変換して得られた複数のコマンドを、キュー１４２ａ〜１４２ｃのうち判定された優先度に対応するキューに登録する。
【００８２】
図９は、発行処理部によるコマンド発行処理手順の例を示すフローチャートである。
［ステップＳＴ２１］発行処理部１４３は、２次キャッシュ１１２に発行済みのコマンドのうち、アクセス処理が未完了のコマンドの数が所定の閾値以下になると、ステップＳＴ２２以降の処理を実行する。あるいは、発行処理部１４３は、例えば、ＳＳＤキュー１０３ｅに格納されているコマンドの数が所定の閾値以下になったとき、ステップＳＴ２２以降の処理を実行してもよい。
【００８３】
［ステップＳＴ２２］発行処理部１４３は、優先度１に対応するキュー１４２ａにコマンドが格納されているかを判定する。発行処理部１４３は、コマンドが格納されている場合、処理をステップＳＴ２３に進め、コマンドが格納されていない場合、処理をステップＳＴ２４に進める。
【００８４】
［ステップＳＴ２３］発行処理部１４３は、キュー１４２ａの先頭に格納されたコマンドを取り出し、取り出したコマンドをＳＳＤ１０３に発行する。発行されたコマンドはＳＳＤキュー１０３ｅに格納される。
【００８５】
［ステップＳＴ２４］発行処理部１４３は、優先度２に対応するキュー１４２ｂにコマンドが格納されているかを判定する。発行処理部１４３は、コマンドが格納されている場合、処理をステップＳＴ２５に進め、コマンドが格納されていない場合、処理をステップＳＴ２６に進める。
【００８６】
［ステップＳＴ２５］発行処理部１４３は、キュー１４２ｂの先頭に格納されたコマンドを取り出し、取り出したコマンドをＳＳＤ１０３に発行する。発行されたコマンドはＳＳＤキュー１０３ｅに格納される。
【００８７】
［ステップＳＴ２６］発行処理部１４３は、優先度３に対応するキュー１４２ｃにコマンドが格納されているかを判定する。発行処理部１４３は、コマンドが格納されている場合、処理をステップＳＴ２７に進め、コマンドが格納されていない場合、処理を終了する。
【００８８】
［ステップＳＴ２７］発行処理部１４３は、キュー１４２ｃの先頭に格納されたコマンドを取り出し、取り出したコマンドをＳＳＤ１０３に発行する。発行されたコマンドはＳＳＤキュー１０３ｅに格納される。
【００８９】
次に、コマンド発行の具体例を挙げて説明する。
図１０は、キャッシュ制御部から発行されるコマンドの例を示す図である。この図１０の例では、キャッシュ制御部１３０からコマンドＡ〜Ｇが順に発行されるものとする。コマンドＡ，Ｄ，Ｇは、タイプ１のアクセス処理を要求するものであり、処理サイズは２ブロックとなっている。コマンドＢ，Ｅは、タイプ２のアクセス処理を要求するものであり、処理サイズは２ブロックとなっている。コマンドＣ，Ｆは、タイプ３のアクセス処理を要求するものであり、処理サイズは８ブロックとなっている。
【００９０】
コマンドＡ〜Ｃが発行された期間では、ＳＳＤビジー率が１５％となっている。この期間では、コマンドＡ〜Ｃに基づくアクセス処理は分割されない。一方、コマンドＤ〜Ｇが発行された期間では、ＳＳＤビジー率が５０％に上昇している。この期間では、コマンドＥに基づくアクセス処理は、それぞれ処理サイズが１ブロックの２つのアクセス処理に分割され、コマンドＦに基づくアクセス処理は、それぞれ処理サイズが１ブロックの８つのアクセス処理に分割される。
【００９１】
図１１は、キューに対するコマンド格納の例を示す図である。この図１１は、図１０に示したようにコマンドが発行された場合のキュー１４２ａ〜１４２ｃおよびＳＳＤキュー１０３ｅの様子を示す。ただし、図１１は、あくまで各キューへのコマンドの格納順を示すものであり、ある１つの瞬間に図１１のようにコマンドが格納されていることを示す訳ではない。
【００９２】
また、図１１において、コマンドＥ１，Ｅ２は、コマンドＥに基づくアクセス処理を分割することで作成されたコマンドである。また、コマンドＦ１〜Ｆ８は、コマンドＦに基づくアクセス処理を分割することで作成されたコマンドである。
【００９３】
キュー１４２ａには、コマンドＡ，Ｄ，Ｇの順にコマンドが格納される。キュー１４２ｂには、コマンドＢ，Ｅ１，Ｅ２の順にコマンドが格納される。キュー１４２ｃには、コマンドＣ，Ｆ１，Ｆ２，Ｆ３，Ｆ４，Ｆ５，Ｆ６，Ｆ７，Ｆ８の順にコマンドが格納される。
【００９４】
そして、発行処理部１４３の処理により、ＳＳＤキュー１０３ｅには、コマンドＡ，Ｂ，Ｃ，Ｄ，Ｅ１，Ｆ１，Ｇ，・・・の順にコマンドが格納される。このコマンドの格納順をキャッシュ制御部１３０からのコマンドの発行順と比較すると、コマンドＤとコマンドＧとの間のコマンドＥ，Ｆが、処理サイズの小さいコマンドＥ１，Ｆ１に変更されている。これにより、コマンドＧの前に発行されたコマンドに基づくアクセス処理にかかる時間が短縮され、その結果、コマンドＧの実行遅延量や実行遅延の発生確率が抑制される。
【００９５】
図１２は、コマンドの発行から対応するアクセス処理が完了するまでの時間経過の例を示すタイミングチャートである。図１２の例では、キャッシュ制御部１３０からは図５と同様のコマンドＡ〜Ｚが順に発行されるものとする。
【００９６】
また、図１２では、コマンドＡ〜Ｚが発行された全期間で、ＳＳＤビジー率が５０％になっているものとする。このため、コマンドＢはコマンドＢ１，Ｂ２に変換され、コマンドＥはコマンドＥ１，Ｅ２に変換され、コマンドＨはコマンドＨ１，Ｈ２に変換され、コマンドＫはコマンドＫ１，Ｋ２に変換され、コマンドＮはコマンドＮ１，Ｎ２に変換され、コマンドＱはコマンドＱ１，Ｑ２に変換され、コマンドＴはコマンドＴ１，Ｔ２に変換され、コマンドＷはコマンドＷ１，Ｗ２に変換され、コマンドＺはコマンドＺ１，Ｚ２に変換される。ただし、コマンドＺ２は図示していない。
【００９７】
また、コマンドＣはコマンドＣ１〜Ｃ８に変換され、コマンドＦはコマンドＦ１〜Ｆ８に変換され、コマンドＩはコマンドＩ１〜Ｉ８に変換され、コマンドＬはコマンドＬ１〜Ｌ８に変換され、コマンドＯはコマンドＯ１〜Ｏ８に変換され、コマンドＲはコマンドＲ１〜Ｒ８に変換され、コマンドＵはコマンドＵ１〜Ｕ８に変換され、コマンドＸはコマンドＸ１〜Ｘ８に変換される。ただし、コマンドＲ２〜Ｒ８，Ｕ１〜Ｕ８，Ｘ１〜Ｘ８は図示していない。
【００９８】
このように、優先度の低いアクセス処理は、処理サイズの小さい複数のアクセス処理に分割される。そして、優先度の高いアクセス処理が、分割されたアクセス処理の間に実行されるように、アクセス処理の実行順が変更される。その結果、優先度が高いアクセス処理の実行遅延が生じにくくなる。
【００９９】
例えば、図５の例では、優先度１のコマンドＳが発行されてから、コマンドＳに基づくアクセス処理が開始されるまでには、４周期分の時間がかかっていた。これに対して、図１２の例では、コマンドＳが発行されると、コマンドＳに基づくアクセス処理がすぐに開始されている。したがって、ホスト装置３００からの、コマンドＳに対応するアクセス要求に対する応答性能が、大きく改善されている。
【０１００】
なお、上記の各実施の形態に示した装置（ストレージ制御装置１およびＣＭ１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１０１】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１０２】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１０３】
１  ストレージ制御装置
１ａ  登録部
１ｂ  指示部
２  記憶装置
３ａ〜３ｃ  キュー
【図１】
0006721821.tif 000002
【図２】
0006721821.tif 000003
【図３】
0006721821.tif 000004
【図４】
0006721821.tif 000005
【図５】
0006721821.tif 000006
【図６】
0006721821.tif 000007
【図７】
0006721821.tif 000008
【図８】
0006721821.tif 000009
【図９】
0006721821.tif 000010
【図１０】
0006721821.tif 000011
【図１１】
0006721821.tif 000012
【図１２】
0006721821.tif 000013