(57)【要約】【課題】ディスクアレイの処理速度を向上させる。【解決手段】ホストＩ／Ｆ制御部２１は、ホストコンピュータからのＩ／Ｏ処理要求を受信するホストＩ／Ｏ受信手段４０と、低優先タスク処理を実行する低優先度Ｉ／Ｏ処理実行手段４３と、低優先タスク処理よりも優先的に高優先タスク処理を実行する高優先度Ｉ／Ｏ処理実行手段４２と、実行タスク選択手段４１とを備えている。実行タスク選択手段４１は、ホストＩ／Ｏ受信手段４０で受信されたＩ／Ｏ処理を、実行中の高優先タスク処理の数が一定数未満の場合は高優先タスク処理とし、実行中の高優先タスク処理の数が一定数に一致する場合は低優先タスク処理とする。少数のタスクのみが優先的に実行されるので、キャッシュヒット時にプロセッサキャッシュにおいてデータの追い出しが発生しにくくなり、これにより処理速度を向上できる。【選択図】        図２
2004252526.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータから出力されたＩ／Ｏ処理要求に基づき、キャッシュメモリを有するディスクアレイに対してマルチタスク処理を実行する手段と、各タスク処理の実行に必要なプログラムや制御情報を使用頻度の高いものに入れ換えつつ保持する記憶部とを備えたディスクアレイ制御装置において、
前記ホストコンピュータからのＩ／Ｏ処理要求を受信するホストＩ／Ｏ受信手段と、
低優先タスク処理を実行する低優先度Ｉ／Ｏ処理実行手段と、
前記低優先タスク処理よりも優先的に高優先タスク処理を実行する高優先度Ｉ／Ｏ処理実行手段と、
前記ホストＩ／Ｏ受信手段で受信されたＩ／Ｏ処理を、実行中の前記高優先タスク処理の数が一定数未満の場合は高優先タスク処理とし、実行中の前記高優先タスク処理の数が前記一定数に一致する場合は低優先タスク処理とする実行タスク選択手段と、
を備えたことを特徴とするディスクアレイ制御装置。
【請求項２】
前記低優先タスク処理の実行直後に当該低優先タスク処理を前記高優先タスク処理に変更するタスク優先度変更手段、
を更に備えた請求項１記載のディスクアレイ制御装置。
【請求項３】
実行されたタスク処理が前記キャシュメモリに対するものである場合にキャッシュヒットと判定するキャッシュヒット判定手段と、
一定時間内に実行されたタスク処理の総数に占める前記キャッシュヒットの数をキャッシュヒット率とし、このキャッシュヒット率が高ければ実行するタスク処理数を少なくし当該キャッシュヒット率が低ければ実行するタスク処理数を多くするキャッシュヒット率監視手段と、
を更に備えた請求項１又は２記載のディスクアレイ制御装置。
【請求項４】
ホストコンピュータから出力されたＩ／Ｏ処理要求に基づき、キャッシュメモリを有するディスクアレイに対してマルチタスク処理を実行する手段と、各タスク処理の実行に必要なプログラムや制御情報を使用頻度の高いものに入れ換えつつ保持する記憶部とを備えたディスクアレイ制御装置に用いられ、
前記ホストコンピュータからＩ／Ｏ処理要求を受信し、
このＩ／Ｏ処理を、実行中の高優先タスク処理の数が一定数未満の場合は高優先タスク処理とし、実行中の前記高優先タスク処理の数が前記一定数に一致する場合は低優先タスク処理とし、
この低優先タスク処理よりも優先的に前記高優先タスク処理を実行する、
ディスクアレイ制御方法。
【請求項５】
前記低優先タスク処理の実行直後に当該低優先タスク処理を前記高優先タスク処理に変更する、
請求項４記載のディスクアレイ制御方法。
【請求項６】
実行されたタスク処理が前記キャシュメモリに対するものである場合にキャッシュヒットと判定し、
一定時間内に実行されたタスク処理の総数に占める前記キャッシュヒットの数をキャッシュヒット率とし、このキャッシュヒット率が高ければ実行するタスク処理数を少なくし当該キャッシュヒット率が低ければ実行するタスク処理数を多くする、
請求項４又は５記載のディスクアレイ制御方法。
【請求項７】
ホストコンピュータから出力されたＩ／Ｏ処理要求に基づき、キャッシュメモリを有するディスクアレイに対してマルチタスク処理を実行するマイクロプロセッサと、各タスク処理の実行に必要なプログラムや制御情報を使用頻度の高いものに入れ換えつつ保持する記憶部とを備えたディスクアレイ制御装置に用いられ、
前記ホストコンピュータからのＩ／Ｏ処理要求を受信するホストＩ／Ｏ受信手段、
低優先タスク処理を実行する低優先度Ｉ／Ｏ処理実行手段、
前記低優先タスク処理よりも優先的に高優先タスク処理を実行する高優先度Ｉ／Ｏ処理実行手段、及び、
前記ホストＩ／Ｏ受信手段で受信されたＩ／Ｏ処理を、実行中の前記高優先タスク処理の数が一定数未満の場合は高優先タスク処理とし、実行中の前記高優先タスク処理の数が前記一定数に一致する場合は低優先タスク処理とする実行タスク選択手段、
として前記マイクロプロセッサを機能させるディスクアレイ制御プログラム。
【請求項８】
前記低優先タスク処理の実行直後に当該低優先タスク処理を前記高優先タスク処理に変更するタスク優先度変更手段、
として前記マイクロプロセッサを更に機能させる請求項７記載のディスクアレイ制御プログラム。
【請求項９】
実行されたタスク処理が前記キャシュメモリに対するものである場合にキャッシュヒットと判定するキャッシュヒット判定手段、及び
一定時間内に実行されたタスク処理の総数に占める前記キャッシュヒットの数をキャッシュヒット率とし、このキャッシュヒット率が高ければ実行するタスク処理数を少なくし当該キャッシュヒット率が低ければ実行するタスク処理数を多くするキャッシュヒット率監視手段、
として前記マイクロプロセッサを更に機能させる請求項７又は８記載のディスクアレイ制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスク装置を複数台並列に接続し、全体をまとめて制御することにより、データ転送速度の高速化及びデータ障害の耐久性の向上を図るディスクアレイに関し、詳しくはディスクアレイに用いられる制御装置等に関する。
【０００２】
【従来の技術】
従来、ディスクアレイでは、ホストコンピュータからの書き込み／読み出し要求に対する処理能力を向上させるため、多数の書き込み／読み出し処理（以下「Ｉ／Ｏ処理」という。）を同時に実行している。これを実現するために、ディスクアレイは、ファームウェアにリアルタイムＯＳ等を使用することにより、マルチタスク処理を行う場合がある（例えば、下記特許文献１，２参照。）。このマルチタスク処理によれば、それぞれのタスクが１つのＩ／Ｏ処理を実行し、また複数のタスクが同時に処理を実行できるため、単位時間あたりのＩ／Ｏ処理能力が向上する。一般にリアルタイムＯＳのマルチタスク処理では、タスク毎にそれぞれ制御用のメモリ領域をローカルメモリに持つことにより、複数のタスクを同時に実行できるようになっている。
【０００３】
一方、近年のディスクアレイでは、マイクロプロセッサにプロセッサキャッシュを搭載することにより、性能の向上を図っている。つまり、ローカルメモリの同じメモリ領域を何度もアクセスする場合に、アクセス速度の速いプロセッサキャッシュ上にデータ（プログラムや制御情報など）を保持しておき、２回目のアクセス以降ではプロセッサキャッシュ上のデータを使用する。これにより、ローカルメモリへのアクセス回数が減るので、処理速度が向上する。プロセッサキャッシュへのデータ格納方式としては、一般にＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式が使用されている。このＬＲＵ方式とは、プロセッサキャッシュにデータを格納するブロックがない場合に、プロセッサキャッシュ上で最後に参照されてから現在までの経過時間が最も長いデータブロックを追い出す方式である。
【０００４】
なお、「キャッシュメモリ」とは、ホストコンピュータからディスク装置に対して書き込み／読み出しされたデータの中でよく使うデータを保持しておくものである。これに対して、「プロセッサキャッシュ」とは、プロセッサが動作するためのマイクロプログラムや制御情報を格納しておくプロセッサ用のメモリ（ローカルメモリ）に格納されたデータの中でよく使うデータを保持しておくものである。また、ここでいう「Ｉ／Ｏ処理」とは、書き込み処理又は読み出し処理のことである。
【０００５】
【特許文献１】
特開平２−２８７８４９号公報
【特許文献２】
特開平５−２９８１２２号公報
【０００６】
【発明が解決しようとする課題】
マルチタスク処理では、タスク毎にメモリ領域を割り当てている（タスクメモリ）。そのため、タスク数が少ない場合には、全てのタスクメモリをプロセッサキャッシュ内に格納できることにより、プロセッサキャッシュのみにアクセスすればよいので、高速に処理することができる。しかし、タスク数が多くなると、全てのタスクメモリをプロセッサキャッシュ内に格納できなくなるため、プロセッサキャッシュのデータに対して追い出しや再読み込みが発生することにより、処理速度が低下してしまう。一方、ディスクアレイにおいては、ホストコンピュータからのＩ／Ｏ処理要求を多重で実行する必要があるため、多数のタスクによって処理しなければ、十分な処理速度を得ることができない。
【０００７】
【発明の目的】
そこで、本発明の目的は、ディスクアレイの処理速度を向上できるディスクアレイ制御装置等を提供することにある。
【０００８】
【課題を解決するための手段】
ホストコンピュータからの読み出し要求時にディスクアレイのキャッシュメモリ内にデータが存在する場合（キャッシュヒット時）は、ディスク装置にアクセスする必要がないので、高速に処理を実行できる。そのため、タスク数は少ない方がプロセッサキャッシュを有効に利用できる。なぜなら、タスク数が少なければ全てのタスクメモリをプロセッサキャッシュ内に格納できるため、プロセッサキャッシュのみにアクセスすればよいので、高速に処理できるからである。
【０００９】
一方、読み出し要求時にディスクアレイのキャッシュメモリ内にデータが存在しないためディスク装置からデータを読み出すような場合（キャッシュミス時）は、一つの処理に時間がかかるため、タスク数が十分にないと全体としての処理速度が低下してしまう。つまり、プロセッサキャッシュが有効に利用されていない時にタスク数を減らしても、プロセッサキャッシュによる処理速度の向上が望めないばかりか、却って処理速度が低下してしまう。
【００１０】
このように、キャッシュヒット時の処理速度を向上させようとしてタスク数を少なくするとキャッシュミス時に処理速度が低下し、逆にキャッシュミス時の処理速度を向上させようとしてタスク数を多くするとキャッシュヒット時に処理速度が低下してしまう。なお、ここでいう「キャッシュヒット時及びキャッシュミス時」は、キャッシュメモリに対するものであり、プロセッサキャッシュに対するものではない。
【００１１】
そこで、本発明に係るディスクアレイ制御装置では、ディスクアレイのキャッシュヒット時及びキャッシュミス時の双方での処理速度を向上できる構成としている。以下に詳しく説明する。
【００１２】
本発明に係るディスクアレイ制御装置は、ホストコンピュータから出力されたＩ／Ｏ処理要求に基づき、キャッシュメモリを有するディスクアレイに対してマルチタスク処理を実行する手段と、各タスク処理の実行に必要なプログラムや制御情報を使用頻度の高いものに入れ換えつつ保持する記憶部とを備えたものである。そして、本発明に係るディスクアレイ制御装置は、ホストＩ／Ｏ受信手段、低優先度Ｉ／Ｏ処理実行手段、高優先度Ｉ／Ｏ処理実行手段、実行タスク選択手段を備えたことを特徴とする。ホストＩ／Ｏ受信手段は、ホストコンピュータからのＩ／Ｏ処理要求を受信する。低優先度Ｉ／Ｏ処理実行手段及び高優先度Ｉ／Ｏ処理実行手段はホストＩ／Ｏ処理を実行する。低優先度Ｉ／Ｏ処理実行手段が実行するＩ／Ｏ処理を「低優先タスク処理」、高優先度Ｉ／Ｏ処理実行手段が実行するＩ／Ｏ処理を「高優先タスク処理」とそれぞれ呼ぶこととする。すなわち、スイッチ低優先度Ｉ／Ｏ処理実行手段は、低優先タスク処理を実行する。高優先度Ｉ／Ｏ処理実行手段は、低優先タスク処理よりも優先的に高優先タスク処理を実行する。実行タスク選択手段は、ホストＩ／Ｏ受信手段で受信されたＩ／Ｏ処理を、実行中の高優先タスク処理の数が一定数未満の場合は高優先タスク処理とし、実行中の高優先タスク処理の数が一定数に一致する場合は低優先タスク処理とする。
【００１３】
実行中の高優先タスク処理の数が一定数未満の場合、ホストＩ／Ｏ受信手段で受信されたＩ／Ｏ処理は、実行タスク選択手段によって高優先タスク処理とされる。一方、実行中の高優先タスク処理の数が一定数に一致する場合、ホストＩ／Ｏ受信手段で受信されたＩ／Ｏ処理は、実行タスク選択手段によって低優先タスク処理とされる。これらの高優先タスク処理及び低優先タスク処理はそれぞれ高優先度Ｉ／Ｏ処理実行手段及び低優先度Ｉ／Ｏ処理実行手段で実行されるが、高優先タスク処理は低優先タスク処理よりも優先的に実行される。
【００１４】
従来技術では、タスクに優先度を設けていないので、キャッシュヒット時でも多数のタスクが順次動作する。このため、タスクの実行に必要な制御情報を保持する記憶部において、データの追い出しが発生する。したがって、次に同じタスクが処理を実行しようとしたときに、記憶部にヒットしないのでアクセスに時間がかかる。
【００１５】
これに対し、本発明では、一定数の高優先タスクを優先的に実行する。したがって、少数のタスクのみが優先的に実行されることにより、キャッシュヒット時に記憶部においてデータの追い出しが発生しにくいので、処理速度が向上する。一方、キャッシュミス時は、一つの処理に長時間かかるため、実行中のタスク数が多くなる。なぜなら、高優先タスクの占める一定数を越えたタスクは、低優先タスクとして実行させるからである。そのため、キャッシュミス時に実行するタスク数を制限する場合に比べて、多くのタスクが実行されるので、処理速度が向上する。
【００１６】
また、低優先タスクのタスク優先度を処理実行開始直後に動的に高優先タスクと同じ優先度に変更し、処理実行完了時に元の優先度に戻す、タスク優先度変更手段を更に備えた、としてもよい。換言すると、低優先タスク処理の実行直後に当該低優先タスク処理を高優先タスク処理に変更するタスク優先度変更手段を更に備えた、としてもよい。
【００１７】
タスクの優先度は、複数のタスクが実行中の場合のタスクの実行順序に影響する。つまり、優先度の高いタスクと優先度の低いタスクとが同時に処理を実行していた場合、優先度の高いタスクばかりが処理を実行し、優先度の低いタスクがいつまでたっても処理を実行できないという現象が発生することがある。これを回避するために、本発明では、低優先タスクの処理実行中はその優先度を高優先タスクと同じにする。
【００１８】
ここで、リアルタイムＯＳ等によるマルチタスク処理について簡単に説明しておく（ただし、本発明をリアルタイムＯＳに限定する主旨ではない。）。ある処理を実行するタスクは、最初は通常「実行待ち状態」にあり、他のあるタスクからの起動指示を待っている。複数のタスクが実行待ち状態にある場合はタスクの「実行待ち行列」が生成され、タスクの起動指示を受けたときにその待ち行列の先頭に並んでいるタスクが処理を引き受け実行する。本発明での「実行待ち行列」では、待ちに入った順番に関係なくタスクの優先度順に、タスクが待ち行列に並ぶ（優先度が同じ場合は待ちに入った順番となる）。
【００１９】
このようなマルチタスク処理において、タスクの優先度は、通常、プログラムの初期化時に固定で設定されるため、動作中に変化することはない。そこで、本発明では、低優先タスクが処理を実行開始直後にその優先度を変更し、処理実行を終了して待ち行列に並ぶ直前に優先度を元に戻す。これが「動的」に優先度を変更するという意味である。
【００２０】
また、タスクの優先度は待ち行列の並び順に影響するだけでなく、複数のタスクが実行中の場合のタスクの実行順序にも影響する。つまり、優先度の高いタスクと優先度の低いタスクとが同時に処理を実行していた場合、優先度の高いタスクばかりが処理を実行し、優先度の低いタスクがいつまでたっても処理を実行できないという現象が発生することがある。これを回避するために、本発明では、低優先タスクの処理実行中はその優先度を高優先タスクと同じにする。
【００２１】
更にまた、実行されたタスク処理がキャシュメモリに対するものである場合にキャッシュヒットと判定するキャッシュヒット判定手段と、一定時間内に実行されたタスク処理の総数に占めるキャッシュヒットの数をキャッシュヒット率とし、このキャッシュヒット率が高ければ実行するタスク処理数を少なくしキャッシュヒット率が低ければ実行するタスク処理数を多くするキャッシュヒット率監視手段とを更に備えた、としてもよい。
【００２２】
キャッシュヒット率が高い場合にタスク処理数を少なくすることにより、実行されるタスク数を確実に少なくできるので、キャッシュヒット時に記憶部においてデータの追い出しがより発生しにくくなり、これにより処理速度がより向上する。一方、キャッシュヒット率が低い場合はタスク処理数を多くすることにより、実行されるタスク数を確実に多くできるので、処理速度がより向上する。
【００２３】
本発明に係るディスクアレイ制御方法（請求項４乃至６）は、本発明に係るディスクアレイ制御装置に用いられるものであり、それぞれ請求項１乃至３記載の構成に対応する。本発明に係るディスクアレイ制御プログラム（請求項７乃至９）は、本発明に係るディスクアレイ制御装置に用いられるものであり、それぞれ請求項１乃至３記載の構成に対応する。
【００２４】
換言すると、本発明は次の（１）〜（３）ような特徴点を有する。（１）マルチタスク処理において、高優先タスクと低優先タスクとの２種類を用意することにより、プロセッサキャッシュを効率的に使用する点。（２）タスク優先度を動的に変更することにより、低優先タスクの処理遅延を防止する点。（３）キャッシュヒット率を監視することにより、タスクの起動数を調整してプロセッサキャッシュを効率的に使用する点。すなわち、本発明は、マルチタスク処理を行うディスクアレイにおいて、ホストＩ／Ｏ受信手段、実行タスク選択手段、高優先度Ｉ／Ｏ処理実行手段（高優先タスク）、低優先度Ｉ／Ｏ処理実行手段（低優先タスク）、タスク優先度変更手段、キャッシュヒット判定手段、キャッシュヒット率監視手段等を備えることにより、プロセッサキャッシュを効率的に使用し、Ｉ／Ｏ処理（書き込み／読み出し処理）の高速化を図ることを特徴とする。
【００２５】
【発明の実施の形態】
以下、本発明に係るディスクアレイ制御装置の実施形態について、図面を参照しつつ説明する。ただし、特許請求の範囲における「ディスクアレイ制御装置」及び「記憶部」は、それぞれ「ホストＩ／Ｆ（インタフェース）制御部」及び「プロセッサキャッシュ」と具体化して言い換えるものとする。なお、本発明に係るディスクアレイ制御方法及びディスクアレイ制御プログラムについては、本発明に係るディスクアレイ制御装置に使用されるものであるので、本発明に係るディスクアレイ制御装置の実施形態を説明する中で同時に説明する。
【００２６】
図１は、本発明に係るディスクアレイ制御装置のハードウェア構成の一例を示すブロック図である。図２は、本発明に係るディスクアレイ制御装置の第一実施形態を示す機能ブロック図である。以下、これらの図面に基づき説明する。
【００２７】
まず、概略的に説明する。図１に示すように、ディスクアレイ２０は、ホストＩ／Ｆ制御部２１、キャッシュメモリ２２、ディスクＩ／Ｆ制御部２３、複数のディスク装置２４等から構成されている。ホストＩ／Ｆ制御部２３は、マイクロプロセッサ３１、プロセッサキャッシュ３２及びローカルメモリ３３を含んで構成され、ホストコンピュータ１０から出力されたＩ／Ｏ処理要求に基づきディスクアレイ２０に対してマルチタスク処理を実行する。プロセッサキャッシュ３２は、各タスク処理の実行に必要なプログラムや制御情報を、使用頻度の高いものに入れ換えつつ保持する。
【００２８】
図２に示すように、ホストＩ／Ｆ制御部２１は、ホストコンピュータ１０からのＩ／Ｏ処理要求を受信するホストＩ／Ｏ受信手段４０と、低優先タスク処理を実行する低優先度Ｉ／Ｏ処理実行手段４３と、低優先タスク処理よりも優先的に高優先タスク処理を実行する高優先度Ｉ／Ｏ処理実行手段４２と、実行タスク選択手段４１とを備えている。実行タスク選択手段４１は、ホストＩ／Ｏ受信手段４０で受信されたＩ／Ｏ処理を、実行中の高優先タスク処理の数が一定数未満の場合は高優先タスク処理とし、実行中の高優先タスク処理の数が一定数に一致する場合は低優先タスク処理とする。また、本実施形態のホストＩ／Ｆ制御部２１は、低優先タスク処理の実行直後に当該低優先タスク処理を高優先タスク処理に変更するタスク優先度変更手段４４を更に備えている。
【００２９】
更に詳しく説明する。ディスクアレイ２０は、ホストコンピュータ１０からのＩ／Ｏ（書き込み／読み出し）要求をホストＩ／Ｆ制御部２１で処理する。ホストＩ／Ｆ制御部２１は、マルチタスク処理によりＩ／Ｏ処理を実行する。マルチタスク処理とは、複数のタスク（ある一連の処理を実行するモジュール）がそれぞれ独立に動作し、同時に多数のタスクが動作することにより、処理能力を向上させるものである。一般にマルチタスク処理においては、それぞれのタスクが個別にメモリ（タスクメモリ）を必要とするため、プロセッサキャッシュ３２を搭載して処理の高速化を図っている。この場合、多数のタスクが動作すると、プロセッサキャッシュ３２内でのデータの追い出しや再読み込みが発生することにより、最適な性能（処理速度）が得られない場合がある。
【００３０】
ディスクアレイ２０がホストコンピュータ１０から書き込み要求を受けると、ホストＩ／Ｆ制御部２１は、キャッシュメモリ２２にデータを書き込んだ後、ホストコンピュータ１０に対して完了報告を行う。また、ディスクＩ／Ｆ制御部２３は、ホストコンピュータ１０からの要求と非同期に、キャッシュメモリ２２に格納された書き込みデータをディスク装置２４に書き込む。また、ディスクアレイ２０がホストコンピュータ１０から読み出し要求を受けると、ホストＩ／Ｆ制御部２１は、キャッシュメモリ２２内に有効なデータが存在するか否かを調査し、存在する場合（キャッシュヒット）にキャッシュメモリ２２内のデータをホストコンピュータ１０に送信する。一方、読み出し要求時にキャッシュメモリ２２内に有効なデータが存在しない場合（キャッシュミス）、ホストＩ／Ｆ制御部２１は、ディスクＩ／Ｆ制御部２３に対してディスク装置２４からのデータ読み出し指示を通知する。通知を受けたディスクＩ／Ｆ制御部２３は、要求されたデータをディスク装置２４からデータを読み出してキャッシュメモリ２２内に書き込み、ホストＩ／Ｆ制御部２１に完了報告を行う。ディスクＩ／Ｆ制御部２３から完了報告を受けたホストＩ／Ｆ制御部２１は、キャッシュメモリ２２に格納されたデータをホストコンピュータ１０に送信して完了報告を行う。
【００３１】
ホストＩ／Ｆ制御部２１は、ローカルメモリ３３を有しており、マイクロプロセッサ３１を動作させるためのマイクロコードとＩ／Ｏ処理を実行するための制御情報とを保持している。また、マイクロプロセッサ３１には、処理の高速化を図るためにプロセッサキャッシュ３２が接続されている。つまり、ローカルメモリ３３内の同じメモリ領域を何度もアクセスする場合はアクセス速度の速いプロセッサキャッシュ３２上にデータを移し、２回目のアクセス以降ではプロセッサキャッシュ３２上のデータを使用することにより、ローカルメモリ３３へのアクセス回数を減らして性能を向上させている。プロセッサキャッシュ３２へのデータ格納方式としては、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式が使用されている。ＬＲＵ方式とは、プロセッサキャッシュ３２にデータを格納するブロックがない場合に、プロセッサキャッシュ３２上で最後に参照されてから現在までの経過時間がもっとも長いデータブロックを追い出す方式である。
【００３２】
次に、言葉を換えてもう一度説明する。
【００３３】
ホストＩ／Ｆ制御部２１を機能毎にブロック化したものが図２である。図２に示すように、ホストＩ／Ｆ制御部２１は、ホストＩ／Ｏ受信手段４０、実行タスク選択手段４１、高優先度Ｉ／Ｏ処理実行手段（複数の高優先タスクＡ）４２、低優先度Ｉ／Ｏ処理実行手段（複数の低優先タスクＢ）４３、及びタスク優先度変更手段４４を備えている。ホストＩ／Ｏ受信手段４０は、ホストコンピュータ１０からのＩ／Ｏ要求を受信して解析する。高優先タスクＡ及び低優先タスクＢはそれぞれ複数存在し、それぞれのタスクが独立にＩ／Ｏ処理を実行する。ここで、低優先タスクＢについては、高優先タスクＡよりもタスク優先度が１つ低くなるように設定しておく。タスクの優先度が異なる場合、優先度の高いタスクの方が優先度の低いタスクよりも優先して処理される。実行タスク選択手段４１は、ホストＩ／Ｏ受信手段４０が解析したＩ／Ｏ処理要求を、高優先度Ｉ／Ｏ処理実行手段４２又は低優先度Ｉ／Ｏ処理実行手段４３に送信する。タスク優先度変更手段４４は、低優先タスクＢのタスク優先度を動的に変更する。
【００３４】
ホストＩ／Ｏ受信手段４０はホストコンピュータ１０からのＩ／Ｏ要求を受信して内容を解析し、Ｉ／Ｏ処理要求を実行タスク選択手段４１に送信する。Ｉ／Ｏ処理要求を受信した実行タスク選択手段４１は、タスク優先度の高い順に高優先度Ｉ／Ｏ処理実行手段４２及び低優先度Ｉ／Ｏ処理実行手段４３に処理を渡していく。つまり、Ｉ／Ｏ処理を実行していない高優先タスクＡが存在する場合は高優先度Ｉ／Ｏ処理実行手段４２に処理を渡し、全ての高優先タスクＡがＩ／Ｏ処理を実行中の場合は低優先度Ｉ／Ｏ処理実行手段４３に処理を渡す。ここで、低優先タスク４２はタスクの優先度を高優先タスク４３よりも１つ低く設定してある。高優先タスクＡ及び低優先タスクＢはそれぞれ独立にデータ転送等のＩ／Ｏ処理を実行する。
【００３５】
これにより、Ｉ／Ｏ処理が短い時間で実行できるような場合（キャッシュヒット時）は、高優先タスクＡのみで処理可能であるので、Ｉ／Ｏ処理を実行するタスク数が限られる。そのため、常にプロセッサキャッシュ３２にヒットする状態で処理を実行できるので、処理速度が向上する。また、Ｉ／Ｏ処理に長い時間を要するような場合（キャッシュミス時）は、低優先タスクＢも含めた多数のタスクが動作する。そのため、プロセッサキャッシュ３２にヒットしない状態となるものの、多数のタスクが多重に動作することにより処理速度が向上する。
【００３６】
ただし、高優先タスクＡと低優先タスクＢとが同時に処理を実行している場合、タスクの優先度が低いために低優先タスクＢの処理が遅延することにより、低優先タスクＢが実行しているＩ／Ｏ処理に対するホストコンピュータ１０への応答が遅くなるという問題が発生する。場合によってはＩ／Ｏエラーに至る可能性がある。これを回避するために、低優先度Ｉ／Ｏ処理実行手段４３は、タスク優先度変更手段４４によって自タスクの優先度を動的に変更させる。すなわち、タスク優先度変更手段４４は、低優先タスクＢの動作開始時にタスクの優先度を１つ上げて高優先タスクＡと同じタスク優先度に変更し、低優先タスクＢがＩ／Ｏ処理を完了した時にタスクの優先度を１つ下げて元の優先度に戻しておく。これにより、低優先タスクＢのＩ／Ｏ処理が遅延することを回避することができる。
【００３７】
図３は、図２のホストＩ／Ｆ制御部におけるＩ／Ｏ処理実行タスクの生成処理を示すフローチャートである。図４は、図２のホストＩ／Ｆ制御部におけるタスク優先度変更手段の動作を示すフローチャートである。以下、図１乃至図４に基づき、ホストＩ／Ｆ制御部２１の動作を説明する。
【００３８】
最初に、Ｉ／Ｏ処理実行タスクの生成処理について、図４のフローチャートを参照して説明する。まず、タスク番号を０とする（Ｓ１２）。続いて、タスク優先度をＮとしてタスクを生成し（Ｓ１３）、タスク番号をインクリメントする（Ｓ１４）。これを高優先タスクＡの一定数分繰り返して高優先タスクＡを生成する（Ｓ１５）。続いて、タスク優先度をＮ−１としてタスクを生成し（Ｓ１６）、タスク番号をインクリメントする（Ｓ１７）。これをタスク番号が全タスク数と一致するまで繰り返して、低優先タスクＢを生成する（Ｓ１８）。これにより、優先度がＮの高優先タスクＡと優先度がＮ−１の低優先タスクＢとが、それぞれ複数生成される。
【００３９】
次に、ホストコンピュータ１０からのＩ／Ｏ処理要求を受信した時の動作について、図１及び図２を参照して説明する。ホストコンピュータ１０からのＩ／Ｏ処理要求を受信したホストＩ／Ｏ受信手段４０は、Ｉ／Ｏ処理内容を解析して実行タスク選択手段４１に送信する。Ｉ／Ｏ処理要求を受信した実行タスク選択手段４１は、タスク優先度の高い順に高優先度Ｉ／Ｏ処理実行手段４２及び低優先度Ｉ／Ｏ処理実行手段４３に処理を渡していく。つまり、Ｉ／Ｏ処理を実行していない高優先タスクＡが存在する場合は高優先度Ｉ／Ｏ処理実行手段４２にタスク処理を渡し、一定数全ての高優先タスクＡがＩ／Ｏ処理を実行中の場合は低優先度Ｉ／Ｏ処理実行手段４３にタスク処理を渡す。これにより、Ｉ／Ｏ処理が短い時間で実行できるような場合（キャッシュヒット時）は、高優先タスクＡのみで処理可能である。そのため、Ｉ／Ｏ処理を実行するタスク数が限られるため、常にプロセッサキャッシュ３２にヒットする状態で処理を実行できるので、処理速度が向上する。また、Ｉ／Ｏ処理に長い時間を要するような場合（キャッシュミス時）は、低優先タスクＢも含めた多数のタスクが動作する。そのため、プロセッサキャッシュ３２にヒットしない状態となるものの、多数のタスクが多重に動作することにより処理速度が向上する。
【００４０】
ただし、高優先タスクＡと低優先タスクＢとが同時に処理を実行している場合、タスクの優先度が低いために低優先タスクＢの処理が遅延し、低優先タスクＢが実行しているＩ／Ｏ処理に対するホストコンピュータ１０への応答が遅くなるという問題が発生する。場合によってはＩ／Ｏエラーに至る可能性がある。これを回避するため、タスク優先度変更手段４４により低優先タスクＢのタスク優先度を動的に変更する。そのフローチャートを図３に示す。
【００４１】
図３において、実行タスク選択手段４１からＩ／Ｏ処理要求を受信した高優先度Ｉ／Ｏ処理実行手段４２及び低優先度Ｉ／Ｏ処理実行手段４３は（Ｓ０１）、自タスクのタスク番号を調査して低優先タスクＢか高優先タスクＡかを判定する（Ｓ０２）。自タスクが低優先タスクＢの場合は、自タスクの優先度をＮに変更する（Ｓ０３）。続いて、データ転送等のＩ／Ｏ処理を実行し（Ｓ０４）、自タスクが低優先タスクＢの場合はタスクの優先度をＮ−１に戻す（Ｓ０５，Ｓ０６）。最後に、Ｉ／Ｏ処理を終了して再度Ｉ／Ｏ処理要求待ち状態に入る（Ｓ０７）。これにより、タスクの優先度が低いことにより、低優先タスクＢが実行するＩ／Ｏ処理が遅延することは、回避される。このようにして、ディスクアレイ２０のキャッシュヒット性能及びキャッシュミス性能の双方を向上できる。
【００４２】
図５は、本発明に係るディスクアレイ制御装置の第二実施形態を示す機能ブロック図である。以下、図１及び図５に基づき説明する。ただし、図５において図２と同じ部分は、同じ符号を付すことにより説明を省略する。
【００４３】
本実施形態のホストＩ／Ｆ制御部３０は、ホストＩ／Ｏ受信手段４０、実行タスク選択手段４１、複数の高優先度Ｉ／Ｏ処理実行手段（高優先タスクＡ）４２、複数の低優先度Ｉ／Ｏ処理実行手段（低優先タスクＢ）４３、タスク優先度変更手段４４、キャッシュヒット判定手段４５、キャッシュヒット率監視手段４６等を備えている。
【００４４】
ホストＩ／Ｏ受信手段４０は、ホストコンピュータ１０からのＩ／Ｏ要求を受信し解析する。高優先タスクＡ及び低優先タスクＢはそれぞれ複数存在し、それぞれのタスクが独立にＩ／Ｏ処理を実行する。ここで、低優先タスクＢについては、高優先タスクＡよりもタスク優先度を１つ低く設定しておく。タスクの優先度が異なる場合、優先度の高いタスクの方が優先度の低いタスクよりも優先して処理される。実行タスク選択手段４１は、ホストＩ／Ｏ受信手段４０から受信したＩ／Ｏ処理要求を高優先度Ｉ／Ｏ処理実行手段４２又は低優先度Ｉ／Ｏ処理実行手段４３に送信する。タスク優先度変更手段４４は、低優先タスクＢのタスク優先度を動的に変更する。キャッシュヒット判定手段４５は、ホストＩ／Ｏがキャッシュヒットしているか否かを判定する。キャッシュヒット率監視手段４６は、ある一定時間内のキャッシュヒット率（キャッシュヒットしたＩ／Ｏ数÷全体のＩ／Ｏ処理数）を監視する。
【００４５】
次に、ホストＩ／Ｆ制御部３０の動作について説明する。ホストコンピュータ１０からのＩ／Ｏ処理要求を受信したホストＩ／Ｏ受信手段４０は、Ｉ／Ｏ処理内容を解析して実行タスク選択手段４１に送信する。一方、キャッシュヒット判定手段４５は、ホストＩ／Ｏ受信手段４０で受信したホストＩ／Ｏがキャッシュヒットしているか否かを判定する。キャッシュヒットとは、ホストＩ／Ｏに該当するアドレスのデータがキャッシュメモリ２２上に存在することを示す。キャッシュヒットしている場合には、ディスク装置２４へのアクセスを行う必要がないため、短時間でＩ／Ｏ処理を実行することができる。キャッシュヒット率監視手段４６は、キャッシュヒット判定手段４５の判定結果を使用してある一定時間内のキャッシュヒット率（キャッシュヒットしたＩ／Ｏ数÷全体のＩ／Ｏ処理数）を監視し、そのキャッシュヒット率を実行タスク選択手段４１に通知する。
【００４６】
ホストＩ／Ｏ受信手段４０からＩ／Ｏ処理要求を受信した実行タスク選択手段４１は、キャッシュヒット率監視手段４３から通知されたキャッシュヒット率の値に応じて、高優先度Ｉ／Ｏ処理実行手段４２及び低優先度Ｉ／Ｏ処理実行手段４３の起動数を調整する。つまり、通知されたキャッシュヒット率がある規定値以上の場合（Ｉ／Ｏ処理を短時間で処理することができる場合）は高優先タスクＡのみで動作するように、高優先タスクＡの一定数を越えてＩ／Ｏ処理を起動しないように制限する。キャッシュヒット率がある規定値未満の場合（Ｉ／Ｏ処理に時間を要する場合）は、低優先タスクＢも動作するように全てのＩ／Ｏ処理を起動する。
【００４７】
これにより、キャッシュヒット時は、高優先タスクＡのみで処理可能であり、Ｉ／Ｏ処理を実行するタスク数が限られる。そのため、常にプロセッサキャッシュ３２にヒットする状態で処理を実行できるので、処理速度が向上する。また、キャッシュミス時は低優先タスクＢも含めた多数のタスクが動作するのでプロセッサキャッシュ３２にヒットしない状態となるものの、多数のタスクが多重に動作することにより処理速度が向上する。このようにして、ディスクアレイ２０のキャッシュヒット性能及びキャッシュミス性能の双方を向上できる。
【００４８】
【発明の効果】
本発明に係るディスクアレイ制御装置等によれば、実行中の高優先タスク処理の数が一定数未満の場合はホストコンピュータから受信したＩ／Ｏ処理を高優先タスク処理とし、実行中の高優先タスク処理の数が一定数に一致する場合はホストコンピュータから受信したＩ／Ｏ処理を低優先タスク処理とすることにより、少数のタスクのみが優先的に実行されるので、キャッシュヒット時に記憶部においてデータの追い出しが発生しにくくなり、これにより処理速度を向上できる。一方、キャッシュミス時は低優先タスクも含めて実行中のタスク数が多くなることにより、キャッシュミス時に実行するタスク数を制限する場合に比べて、処理速度を向上できる。
【００４９】
また、低優先タスク処理を実行直後に高優先タスク処理に変更することにより、低優先タスク処理の遅延を回避できるので、全体としての処理速度を向上できる。
【００５０】
更に、キャッシュヒット率が高い場合にタスク処理数を少なくすることにより、実行されるタスク数を確実に少なくできるので、キャッシュヒット時に記憶部においてデータの追い出しがより発生しにくくなり、これにより処理速度をより向上できる。一方、キャッシュヒット率が低い場合はタスク処理数を多くすることにより、実行されるタスク数を確実に多くできるので、処理速度をより向上できる。
【００５１】
換言すると、本発明によれば次の効果を奏する。
【００５２】
第１の効果は、Ｉ／Ｏ処理が短い時間で実行できるような場合（キャッシュヒット時）のディスクアレイの性能を向上できることにある。その理由は、Ｉ／Ｏ処理が短い時間で実行できるような場合は、高優先タスクのみで処理可能であるため、常にプロセッサキャッシュにヒットする状態で処理を実行できるからである。
【００５３】
第２の効果は、Ｉ／Ｏ処理に長い時間を要するような場合（キャッシュミス時）のディスクアレイの性能を向上できることにある。その理由は、Ｉ／Ｏ処理に長い時間を要するような場合は、低優先タスクも含めた多数のタスクが動作するので、十分な数のタスクを用意しておけば多数のタスクが多重に動作できるからである。
【００５４】
第３の効果は、キャッシュヒット性能及びキャッシュミス性能の双方を向上した上で、ホストコンピュータに対する完了報告を遅延させることなく、各Ｉ／Ｏ処理の処理時間を均等にできることにある。その理由は、タスクの優先度を動的に変更することにより、Ｉ／Ｏ処理実行中に全タスクの優先度が同一になるように制御しているからである。
【図面の簡単な説明】
【図１】本発明に係るディスクアレイ制御装置のハードウェア構成の一例を示すブロック図である。
【図２】本発明に係るディスクアレイ制御装置の第一実施形態を示す機能ブロック図である。
【図３】図２のホストＩ／Ｆ制御部におけるＩ／Ｏ処理実行タスクの生成処理を示すフローチャートである。
【図４】図２のホストＩ／Ｆ制御部におけるタスク優先度変更手段の動作を示すフローチャートである。
【図５】本発明に係るディスクアレイ制御装置の第二実施形態を示す機能ブロック図である。
【符号の説明】
１０  ホストコンピュータ
２０  ディスクアレイ
２１，３０  ホストＩ／Ｆ制御部（ディスクアレイ制御装置）
２２  キャッシュメモリ
２３  ディスクＩ／Ｆ制御部
２４  ディスク装置
３１  マイクロプロセッサ
３２  プロセッサキャッシュ（記憶部）
３３  ローカルメモリ
４０  ホストＩ／Ｏ受信手段
４１  実行タスク選択手段
４２  高優先度Ｉ／Ｏ処理実行手段
４３  低優先度Ｉ／Ｏ処理実行手段
４４  タスク優先度変更手段
４５  キャッシュヒット判定手段
４６  キャッシュヒット率監視手段
【図１】
2004252526.tif 000003
【図２】
2004252526.tif 000004
【図３】
2004252526.tif 000005
【図４】
2004252526.tif 000006
【図５】
2004252526.tif 000007