(57)【特許請求の範囲】
【請求項１】
外部のホスト装置との間の入出力を司る外部入出力手段と、
前記ホスト装置からのデータが格納されるディスクアレイを構成するディスクドライブ群との接続を可能とするディスクドライブ入出力手段と、
前記ディスクドライブと前記ホスト装置との間の転送データを一時記憶するためのブロック単位で管理されるキャッシュメモリ、２つのデータ間でビット単位の排他的論理和演算を行う排他的論理和回路、及びキャッシュ制御手段を有するディスクキャッシュ手段と、
各部を制御する主制御手段と、
それぞれ３個のレジスタからなる複数組のレジスタ群とを具備し、
前記キャッシュ制御手段は、前記ホスト装置からの更新データの転送に対応する前記ディスクドライブ入出力手段からの指示により、前記更新データを前記キャッシュメモリの任意のブロック内の位置に格納すると共に、前記更新データに対応する更新前データが前記キャッシュメモリに存在しない場合には、当該更新前データが格納されている前記ディスクドライブから前記更新データが格納されている前記キャッシュメモリのブロック内の位置と相対位置が同一の前記キャッシュメモリの任意のブロック内の位置に当該更新前データを読み込み、前記更新データに対応する更新前パリティデータが前記キャッシュメモリに存在しない場合には、当該更新前パリティデータが格納されている前記ディスクドライブから前記更新データが格納されている前記キャッシュメモリのブロック内の位置と相対位置が同一の前記キャッシュメモリの任意のブロック内の位置に当該更新前パリティデータを読み込み、
前記主制御手段は、前記ホスト装置からの前記更新データの転送に対応して、当該更新データ、当該更新データに対応する更新前データ及び更新前パリティデータが格納されている前記キャッシュメモリ内の各ブロックを指定するブロックアドレスを前記複数組のレジスタ群の１つに設定し、
前記キャッシュ制御手段は、前記ホスト装置からの前記更新データの転送に対応して、当該更新データ、当該更新データに対応する更新前データ及び更新前パリティデータが前記キャッシュメモリに揃い、前記複数組のレジスタ群の１つに前記ブロックアドレスが設定される毎に、前記更新データの転送に対応したパリティデータ生成のために前記主制御手段または前記ディスクドライブ入出力手段から与えられる特定のキャッシュリードコマンドであって、前記複数組のレジスタ群の前記１つを指定するレジスタ指定フィールド、及び前記更新データが格納されている前記キャッシュメモリのブロック内のアドレスを示すキャッシュ内アドレス指定フィールドを含む要求アドレスが付された特定のキャッシュリードコマンドに従い、当該要求アドレスの前記レジスタ指定フィールドにより指定される前記複数組のレジスタ群の前記１つでの各設定内容の示す前記キャッシュメモリ内の各ブロックから、当該要求アドレスの前記キャッシュ内アドレス指定フィールドにより指定されるブロック内位置に格納されている、更新データ、更新前データ及び更新前パリティデータを順次読み出して逐次前記排他的論理和回路により排他的論理和演算を行わせることで、当該読み出した更新データ、更新前データ及び更新前パリティデータの各データの排他的論理和演算結果であるパリティデータを生成する
ことを特徴とするディスクアレイ制御装置。
【請求項２】
前記キャッシュリードコマンドに付される要求アドレスには、前記キャッシュメモリから１データを読み出すノーマルアクセスモードであるか、前記キャッシュメモリから複数のデータを順次読み出して各データの排他的論理和演算を行ってパリティデータを生成するパリティデータ生成モードであるかを指定するモード指定フィールドが設けられており、
前記キャッシュメモリ制御手段は、前記キャッシュリードコマンドが与えられた場合、当該コマンドに付される前記要求アドレスのモード指定フィールドにより示されるモードに応じて、当該要求アドレスにより指定される前記キャッシュメモリ内の１つのデータ、または前記キャッシュメモリ内の複数のデータの排他的論理和をとったパリティデータを切り替えて出力することを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項３】
前記ディスクキャッシュ手段を２組備え、一方のディスクキャッシュ手段でパリティデータを生成中に、他方のディスクキャッシュ手段で前記キャッシュメモリに対するデータの読み出し／書き込みが行えるようにしたことを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項４】
前記ディスクキャッシュ手段を、前記ディスクアレイを単位に当該ディスクアレイの個数分だけ備えたことを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項５】
前記各入出力手段及び前記ディスクキャッシュ手段が接続されたデータ転送用の標準バスを更に具備し、
前記各レジスタ群は前記ディスクキャッシュ手段内の前記キャッシュ制御手段に設けられており、前記主制御手段から前記各レジスタ群を構成する前記各レジスタに対し、前記ブロックアドレスを前記標準バス経由で設定可能なように構成されていることを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項６】
前記主制御手段と前記ディスクキャッシュ内の少なくとも前記キャッシュ制御手段とが前記標準バスから独立に設けられた内部バスにより接続されると共に、前記各レジスタ群が前記キャッシュ制御手段に設けられており、前記主制御手段から前記各レジスタ群を構成する前記各レジスタに対し、前記ブロックアドレスを前記内部バス経由で設定可能なように構成されていることを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項７】
外部のホスト装置との間の入出力を司る外部入出力手段と、前記ホスト装置からのデータが格納されるディスクアレイを構成するディスクドライブ群との接続を可能とするディスクドライブ入出力手段と、前記ディスクドライブと前記ホスト装置との間の転送データを一時記憶するためのブロック単位で管理されるキャッシュメモリ、排他的論理和演算回路及びキャッシュ制御手段を有するディスクキャッシュ手段と、各部を制御する主制御手段と、それぞれ３個のレジスタからなる複数組のレジスタ群とを備えたディスクアレイ制御装置に適用されるキャッシュ制御方法であって、
前記ホスト装置からの更新データの転送時に、前記キャッシュ制御手段が、前記ホスト装置からの更新データの転送に対応する前記ディスクドライブ入出力手段からの指示により、当該更新データを前記キャッシュメモリの任意のブロック内の位置に格納すると共に、前記更新データに対応する更新前データが前記キャッシュメモリに存在しない場合には、当該更新前データが格納されている前記ディスクドライブから前記更新データが格納されている前記キャッシュメモリのブロック内の位置と相対位置が同一の前記キャッシュメモリの任意のブロック内の位置に当該更新前データを読み込み、前記更新データに対応する更新前パリティデータが前記キャッシュメモリに存在しない場合には、当該更新前パリティデータが格納されている前記ディスクドライブから前記更新データが格納されている前記キャッシュメモリのブロック内の位置と相対位置が同一の前記キャッシュメモリの任意のブロック内の位置に当該更新前パリティデータを読み込み、
前記主制御手段が、前記ホスト装置からの前記更新データの転送に対応して、当該更新データ、当該更新データに対応する更新前データ及び更新前パリティデータがそれぞれ格納されている前記キャッシュメモリ内の各ブロックを指定するブロックアドレスを、前記複数組のレジスタ群の１つに設定し、
前記ホスト装置からの前記更新データの転送に対応して、当該更新データ、当該更新データに対応する更新前データ及び更新前パリティデータが前記キャッシュメモリに揃い、前記複数組のレジスタ群の１つに前記ブロックアドレスが設定される毎に、前記主制御手段または前記ディスクドライブ入出力手段から前記ディスクキャッシュ手段に対して、前記更新データの転送に対応したパリティデータ生成のために与えられる特定のキャッシュリードコマンドであって、前記複数組のレジスタ群の前記１つを指定するレジスタ指定フィールド、及び前記更新データが格納されている前記キャッシュメモリのブロック内のアドレスを示すキャッシュ内アドレス指定フィールドを含む要求アドレスが付された特定のキャッシュリードコマンドに従い、前記ディスクキャッシュ手段の前記主制御手段が、当該要求アドレスの前記レジスタ指定フィールドにより指定される前記複数組のレジスタ群の前記１つでの各設定内容の示す前記キャッシュメモリ内の各ブロックから、当該要求アドレスの前記キャッシュ内アドレス指定フィールドにより指定される位置に格納されている、更新データ、更新前データ及び更新前パリティデータを順次読み出して前記排他的論理和回路により逐次排他的論理和演算を行わせることで、当該読み出した更新データ、更新前データ及び更新前パリティデータの各データの排他的論理和演算結果であるパリティデータを生成するシーケンス処理を行う
ことを特徴とするキャッシュ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のディスクドライブを備えたディスクアレイ装置に係り、特にディスクドライブとホスト装置との間の転送データを一時記憶しておくキャッシュメモリを備え、ディスクドライブのアクセスを制御するディスクアレイ制御装置及び同装置に適用されるキャッシュ制御方法に関する。
【０００２】
【従来の技術】
ディスクアレイ装置は、複数のディスクドライブを備え、当該複数のディスクドライブを並列に動かしてアクセスの高速化を図ると共に、冗長構成によって信頼性の向上を図るようにした外部記憶装置として知られている。
【０００３】
この種のディスクアレイ装置では、ホスト装置から転送される書き込みデータに対して、データ訂正情報としてのパリティデータを生成し、上記複数のディスクドライブのうちのいずれかに書き込むようになっている。これにより、複数のディスクドライブのうちの１台の故障に対し、このパリティデータと残りのディスクドライブのデータを用いることで、故障したディスクドライブのデータを復元することを可能としている。
【０００４】
このような、パリティ等によるデータ冗長化の方式の１つとして、ＲＡＩＤ  （Redundant Arrays of Inexpensive Disks ）方式が知られている。ＲＡＩＤ方式では、ＲＡＩＤのデータとパリティとの関連において、ＲＡＩＤレベルとして種々のレベルに分類されており、その代表的なものにレベル３とレベル５がある。
【０００５】
レベル３のＲＡＩＤはＲＡＩＤ３と呼ばれており、大量のデータを転送するシーケンシャルアクセス（を伴う業務）に適している。一方、レベル５のＲＡＩＤはＲＡＩＤ５と呼ばれており、少量のデータの読み出し／書き込みが多量に発生するランダムアクセス（を伴う業務）に適している。
【０００６】
さてディスクアレイ制御装置は、ディスクドライブとホスト装置との間の転送データを一時記憶しておくキャッシュメモリ（ディスクキャッシュ）を有しているのが一般的である。このような構成では、キャッシュメモリに目的データが存在する場合には、ＲＡＩＤ３やＲＡＩＤ５といったＲＡＩＤレベルに無関係に、（機械的なアクセス動作を伴う）ディスクドライブをアクセスすることなく、当該キャッシュメモリから目的データを高速アクセスできる。
【０００７】
【発明が解決しようとする課題】
ＲＡＩＤ３では、ホスト装置から転送される更新データを分割して、更新パリティを生成する。これに対し、ＲＡＩＤ５では、ホスト装置から転送される更新データと、当該更新データの格納先となるディスクドライブ内領域に格納されている更新前のデータと、当該更新データの格納先に対応する別のディスクドライブの領域に格納されている更新前のパリティ（パリティデータ）とを使用して、更新パリティを生成する。
【０００８】
従来のディスクアレイ制御装置において、ホスト装置からの更新データに対して更新パリティを生成するには、制御装置内のファームウェアプログラムによって行うか、制御装置自体を専用のハードウェア装置として構成する必要があった。しかしながら、ファームウェアで行うには処理速度の問題があり、専用のハードウェアでは回路が複雑化する問題があった。
【０００９】
そこで本出願人は、特願平８−２３４２６４号において、キャッシュメモリを有するディスクキャッシュ手段側に、キャッシュメモリアクセス時のリード／ライトデータを利用してパリティデータを生成する機能を持たせることで、構成の簡略化、処理の高速化及び制御の容易化が図れるディスクアレイ制御装置を提案している。
【００１０】
このディスク制御装置においては、ＲＡＩＤ３を前提として、キャッシュメモリ上にデータを分割して配置し、キャッシュメモリの制御回路（キャッシュ制御手段）がキャッシュメモリからデータを逐次読み出して排他的論理和をとることで、効率的にパリティデータを生成している。
【００１１】
しかし、この方式をＲＡＩＤ５に適用すると、キャッシュメモリに更新前のデータと更新前のパリティが点在することになり、キャッシュメモリの領域を効率的に使用することができない。その理由について述べる。
【００１２】
まずＲＡＩＤ３では、データ更新時に更新データのみから更新パリティを生成することから、キャッシュメモリ上のデータは全てディスクアレイ（ディスクドライブ）上のデータと一致する。このため、更新データをキャッシュメモリ上に残してもリードデータとして利用できる。
【００１３】
これに対してＲＡＩＤ５では、データ更新時に更新前のデータと更新前のパリティを読み出し、更新データとの排他的論理和をとる必要がある。このため、更新データのみから更新パリティを生成するＲＡＩＤ３と同じ方式で、更新データ、更新前データ及び更新前パリティをキャッシュメモリ上に配置すると、つまり更新前データ及び更新前パリティを、更新データと同様の扱いでキャッシュメモリ上に配置すると、当該キャッシュメモリの更新データの領域（１／３の領域）しか（ディスクドライブのデータの写しが置かれる）キャッシュデータ（リードデータ）の領域として利用できず、更新前データと更新前パリティの領域（キャッシュメモリの２／３の領域）は無駄な領域となる。
【００１４】
このように、ＲＡＩＤ５にＲＡＩＤ３と同じキャッシュ制御方式を適用すると、キャッシュメモリ上にキャッシュデータとして利用できない更新前データ及び更新前パリティが点在することになり、限られたキャッシュメモリの領域を効率的に使用することができない。
【００１５】
そこで本出願人は、特願平１０−１２７４３９号において、更新前データ及び更新前パリティ（パリティデータ）を、キャッシュメモリ上の予め定められた領域に格納し、パリティ生成時に、これらキャッシュメモリ上の更新前データと更新前パリティと、ホスト装置から転送される更新データとの排他的論理和をとり、更新パリティを生成する方式を提案することで、ＲＡＩＤ５においてキャッシュメモリを効率的に使用可能なようにしている。
【００１６】
ところが、上記の改良された方式、即ちＲＡＩＤ５での更新パリティ生成のように、キャッシュメモリ上の予め定められた領域に更新前データと更新前パリティを格納する方式では、更新前データがデータ読み出しなどの他の要因でキャッシュメモリ上に既に格納されていたとしても、上記定められた領域にコピーしておかねばならない。また、キャッシュメモリ上の領域の容量制限により、一度に大量の更新パリティの生成が発生した場合には、待ち時間が発生する虞があった。
【００１７】
本発明は上記事情を考慮してなされたものでその目的は、データ更新時にキャッシュメモリを利用して更新データ、更新前データ及び更新前パリティからシステムのオーバヘッドを招くことなく効率的に更新パリティを生成することができるディスクアレイ制御装置及び同装置に適用されるキャッシュ制御方法を提供することにある。
【００１８】
本発明の他の目的は、ディスクアレイの構成ディスクドライブ数が異なるなど、排他的論理和演算に使用するデータ数が異なる場合でも、キャッシュメモリを利用して一括してパリティデータを生成できるディスクアレイ制御装置及び同装置に適用されるキャッシュ制御方法を提供することにある。
【００１９】
【課題を解決するための手段】
本発明は、外部のホスト装置との間の入出力を司る外部入出力手段と、上記ホスト装置からのデータが格納されるディスクアレイを構成するディスクドライブ群との接続を可能とするディスクドライブ入出力手段と、上記ディスクドライブとホスト装置との間の転送データを一時記憶するためのブロック単位で管理されるキャッシュメモリを有するディスクキャッシュ手段と、上記各入出力手段及びディスクキャッシュ手段が接続されたデータ転送用の標準バスと、各部を制御する主制御手段とを備えたディスクアレイ制御装置において、上記ホスト装置から転送された更新データが格納されるキャッシュメモリ内ブロックを指定するブロックアドレス、当該更新データを使用したパリティデータの生成のために、上記ディスクドライブから読み込まれた更新前データが格納されるキャッシュメモリ内ブロックを指定するブロックアドレス、及び更新前パリティデータが格納されるキャッシュメモリ内ブロックを指定するブロックアドレスがそれぞれ設定される３個のレジスタからなるレジスタ群を複数組備えると共に、上記ディスクキャッシュ手段には、２つのデータ間でビット単位の排他的論理和演算を行う排他的論理和回路と、ホスト装置からの更新データ転送に対応したパリティデータ生成のために上記主制御手段またはディスクドライブ入出力手段から、上記複数組のレジスタ群の１つを指定するレジスタ指定フィールド、及びキャッシュメモリのブロック内のアドレスを示すキャッシュ内アドレス指定フィールドを含む要求アドレスが付された特定のキャッシュリードコマンドが与えられた場合に、当該要求アドレスのレジスタ指定フィールドにより指定されるレジスタ群での各設定内容の示すキャッシュメモリ内各ブロックから、当該要求アドレスのキャッシュ内アドレス指定フィールドにより指定される位置に格納されている、更新データ、更新前データ及び更新前パリティデータを順次読み出して逐次上記排他的論理和回路により排他的論理和演算を行わせることで、当該読み出した更新データ、更新前データ及び更新前パリティデータの各データの排他的論理和演算結果であるパリティデータを生成させるキャッシュ制御手段とを備えていることを特徴とする。
【００２０】
このような構成においては、ホスト装置からの更新データの転送時に、当該更新データを前記キャッシュメモリの任意のブロック内位置に格納した場合、当該更新データ、当該更新データに対応する更新前データ及び更新前パリティデータが格納されているブロックを指定するブロックアドレスを、上記複数組のレジスタ群の１つに設定することで、主制御手段またはディスクドライブ入出力手段からディスクキャッシュ手段に対して、パリティデータ生成のための特定のキャッシュリードコマンドが与えられた場合に、当該要求アドレスのレジスタ指定フィールドにより指定されるレジスタ群での各設定内容の示すキャッシュメモリ内各ブロックから、当該要求アドレスのキャッシュ内アドレス指定フィールドにより指定される位置（ブロック内相対位置）に格納されている、更新データ、更新前データ及び更新前パリティデータを順次読み出して排他的論理和回路により排他的論理和演算を行わせるだけでパリティデータ（更新パリティ）を生成し、上記特定のキャッシュリードコマンドで要求されたリードデータとして出力することができる。なお、更新データに対応する更新前データまたは更新前パリティデータがキャッシュメモリに格納されていない場合には、当該更新前データまたは更新前パリティデータをディスクアレイからキャッシュメモリ内の任意のブロックに読み込めばよい。
【００２１】
このように上記の構成においては、ホスト装置からの更新データの転送に伴う更新パリティの生成にキャッシュメモリが利用でき、しかもレジスタ群によるキャッシュ内ブロックの指定により、更新前データ及び更新前パリティデータを、キャッシュメモリ上でコピーすることなく利用できるため、システムのオーバヘッドを招かずに効率的に更新パリティを生成することができる。
【００２２】
ところで、排他的論理和演算によるデータの生成は、更新データ、更新前データ及び更新前パリティからのパリティデータ生成（更新パリティ）の生成に限らず、ディスクアレイを構成する複数のディスクドライブのうちの１台が故障して、残りのディスクドライブのデータ及びパリティデータから当該故障したディスクドライブのデータを復元する必要がある場合にも行われる。この場合、排他的論理和演算に使用されるデータの数はディスクドライブの数によって、つまりディスクアレイの構成によって異なる。ここでは、Ｎ個のデータの排他的論理和演算により生成されるデータをパリティデータと総称する。
【００２３】
そこで本発明は、最大Ｎ個（Ｎは４以上の整数）のデータの排他的論理和演算によるパリティデータの生成にキャッシュメモリを利用可能とするために、Ｎ個のレジスタからなるレジスタ群を複数組備えると共に、上記要求アドレス中にパリティ生成に使用するデータの数を指定する要素数指定フィールドを追加し、キャッシュ制御手段においては、当該要求アドレスの前記レジスタ指定フィールドにより指定される前記レジスタ群内の、当該要求アドレスの前記要素数指定フィールドにより指定される数の所定のレジスタを選択し、この選択した各レジスタの設定内容の示す前記キャッシュメモリ内各ブロックから、当該要求アドレスの前記キャッシュ内アドレス指定フィールドにより指定される位置に格納されているデータを順次読み出して逐次排他的論理和回路により排他的論理和演算を行わせることでパリティデータを生成するようにしたことをも特徴とする。
【００２４】
このような構成においては、ディスクアレイを構成するディスクドライブの数が変化するなど、パリティ生成に使用するデータの数が変化する場合でも、一括してパリティデータを生成することが可能である。
【００２５】
但し、上記の構成では、要求アドレス中に要素数指定フィールドを追加する必要があるため、そのビット数分だけレジスタ指定フィールドの構成ビット数の減少を招き、指定可能なレジスタ数が減少する。
【００２６】
そこで本発明は、要素数指定フィールドを用いることなく最大Ｎ個のデータの排他的論理和演算によるパリティデータの生成を可能とするために、全てＮ個のレジスタで構成された複数組のレジスタ群を用いるのではなく、レジスタ群の指定アドレスで決まる３以上Ｎ以下（Ｎは４以上の整数）の個数のレジスタからなるレジスタ群、つまり種々の構成レジスタ数（但し、３以上Ｎ以下）の複数組のレジスタ群を用い、レジスタ指定フィールド及びキャッシュ内アドレス指定フィールドを含む要求アドレスが付された特定のキャッシュリードコマンドが与えられた場合に、当該要求アドレスのレジスタ指定フィールドにより指定されるレジスタ群を選択し、そのレジスタ指定フィールドの値で決まる当該レジスタ群の構成レジスタ数に一致する数のブロックであって、当該レジスタ群を構成する各レジスタの設定内容の示すキャッシュメモリ内各ブロックから、当該要求アドレスのキャッシュ内アドレス指定フィールドにより指定される位置に格納されているデータを順次読み出して逐次前記排他的論理和回路により排他的論理和演算を行わせることでパリティデータを生成するようにしたことをも特徴とする。
【００２７】
このように、要求アドレス中のレジスタ指定フィールドを、レジスタ群の指定だけでなく、その指定フィールドの値で決まる、即ちその指定フィールドの値に予め割り当てられた、当該レジスタ群の構成レジスタ数の指定、つまりパリティ生成に使用するデータ数の指定にも用いることで、限られた要求アドレスのビット数で多くのレジスタ群を指定でき、且つディスクアレイの構成ディスクドライブ数を自由に変更しても、一括してパリティデータを生成することが可能である。
【００２８】
また本発明は、上記キャッシュリードコマンドに付されている要求アドレス中に、キャッシュメモリから１データを読み出すノーマルアクセスモードであるか、キャッシュメモリから複数のデータを順次読み出して各データの排他的論理和演算を行ってパリティデータを生成するパリティデータ生成モードであるかを指定するモード指定フィールドを設け、上記キャッシュリードコマンドが与えられた場合に、要求アドレスのモード指定フィールドにより示されるモードに応じて、当該要求アドレスにより指定されるキャッシュメモリ内の１つのデータ、またはキャッシュメモリ内の複数のデータの排他的論理和をとったパリティデータを切り替えて出力するようにしたことをも特徴とする。
【００２９】
このような構成においては、キャッシュリードコマンドに付される要求アドレスの特定フィールド( モード指定フィールド）の指定で、通常のデータと、複数のデータの排他的論理和をとったパリティデータとを、簡単に切り替えることができる。
【００３０】
なお、上記のディスクキャッシュ手段を２組備えるならば、一方のディスクキャッシュ手段でパリティデータを生成中に、他方のディスクキャッシュ手段でキャッシュメモリに対するデータの読み出し／書き込みを行うことが可能となり、パリティ生成によるキャッシュメモリアクセスの競合をなくすことが可能となる。
【００３１】
また、ディスクアレイを複数備えたディスクアレイ装置に適用する場合に、各ディスクアレイを単位に上記ディスクキャッシュ手段を設けることにより、パリティ生成に要する時間の影響が他のディスクアレイに及ぶのを防ぎ、システム性能の向上を図ることが可能となる。ここで、ディスクアレイの数とコストとの関係に応じて、上記のディスクキャッシュ手段を増減可能とするならば、装置の性能とコストとの関係を最適化することが可能となる。
【００３２】
また、上記各レジスタ群の構成レジスタを、上記主制御手段により上記標準バスから書き込み可能な構成とするならば、ディスクキャッシュ手段の独立性を高め、また標準バスに対応することで、パーソナルコンピュータ等の汎用性のあるシステムに適用可能となる。この場合、標準バスのアドレス部で表現されるアドレス空間の一部を上記各レジスタに割り当て、これら各レジスタが標準バスのアドレス部で指定可能なように、つまり標準バスを介して見えるようにすればよい。
【００３３】
同様に、上記各レジスタ群の構成レジスタを、上記主制御手段により上記標準バスから独立した他のバス（経路）から書き込み可能な構成とするならば、レジスタへのブロックアドレス設定のために標準バスを使用する必要がなくなるため、標準バスの使用効率が上がり、システム性能を向上することが可能となる。この場合、主制御手段で使用するアドレス空間の一部を上記各レジスタに割り当てればよい。
【００３４】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
［第１の実施形態］
図１は本発明の第１の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図である。
【００３５】
図１のディスクアレイ装置は、ディスクアレイ１０をなす複数のディスクドライブ、例えば６台のディスクドライブ１１-0〜１１-5と、このディスクドライブ１１-0〜１１-5をアクセス制御するディスクアレイ制御装置２０とから構成されている。
【００３６】
本実施形態において、ディスクドライブ１１-0〜１１-5はハードディスクドライブ（ＨＤＤ）であり、そのうちの１台、例えばディスクドライブ１１-5が（ホットスペアディスクと称される）バックアップディスク用に割り当てられている。つまり本実施形態では、稼働状態では、ディスクドライブ１１-0〜１１-4の５台でディスクアレイ１０が実質的に構成されることになる。
【００３７】
ディスクアレイ装置をＲＡＩＤ３として用いる場合には、例えばディスクドライブ１１-0〜１１-3の４台がデータ格納用（データディスク用）に、ディスクドライブ１１-4がデータ訂正情報としてのパリティデータ格納用（パリティディスク用）に割り当てられる。これに対し、ディスクアレイ装置をＲＡＩＤ５として用いる場合には、ディスクドライブ１１-0〜１１-4がいずれもデータ並びにパリティ（パリティデータ）の格納用（データ・パリティディスク用）に用いられる。
【００３８】
ディスクアレイ制御装置２０は、主制御部２１、外部入出力部２２、ディスク入出力部２３-0〜２３-5及びディスクキャッシュ部２４を備えている。この主制御部２１、外部入出力部２２、ディスク入出力部２３-0〜２３-5及びディスクキャッシュ部２４は、ローカルバス、例えば標準バスとして知られているＰＣＩバス（Peripheral Component Interconnect Bus ）２５により相互接続されている。
【００３９】
主制御部２１は、マイクロプロセッサ２１１と、各入出力部２２，２３-0〜２３-5、及びディスクキャッシュ部２４の制御を行うための制御プログラム（ファームウェア）を記憶したＲＯＭ２１２と、当該プログラムの実行時に使用されるＲＡＭ２１３とを有するマイクロプロセッサ部であり、外部入出力部２２、並びにディスク入出力部２３-0〜２３-5とディスクキャッシュ部２４の間のデータ転送の制御を行う。主制御部２１はまた、ディスクキャッシュ部２４内の後述するキャッシュメモリ２４０（図２参照）に格納されているデータの記憶位置とディスクアレイ１０内の対応するデータの記憶位置との関係を表すディレクトリ情報を保持・管理する。主制御部２１は、条件指定プログラミング等のための図示せぬインタフェース（制御部インタフェース）を有しており、このインタフェース（の図示せぬ制御レジスタ）を通して、後述するＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）２４５の動作回路（論理）を決定する。
【００４０】
外部入出力部２２は、外部のホスト装置（図示せず）と接続されており、当該ホスト装置との入出力部をなす。外部入出力部２２は、ホスト装置とのデータ転送の制御を行い、ホスト装置からのデータをＰＣＩバス２５を介してディスクキャッシュ部２４、または（主制御部２１内の）マイクロプロセッサ２１１が使用するＲＡＭ２１３へ転送する制御と、ディスクキャッシュ部２４のデータ、またはマイクロプロセッサ２１１が使用するＲＡＭ２１３のデータをホスト装置へ転送する制御とを行う。
【００４１】
ディスク入出力部２３-0〜２３-5は、ディスクドライブ１１-0〜１１-5と接続されており、ＰＣＩバス２５とディスクドライブ１１-0〜１１-5との間のデータ転送を行うための手順等の制御を司る。具体的には、ディスク入出力部２３-0〜２３-5は、ディスクドライブ１１-0〜１１-5からのデータをディスクキャッシュ部２４、またはマイクロプロセッサ２１１が使用するＲＡＭ２１３に転送する制御と、ディスクキャッシュ部２４のデータ、またはマイクロプロセッサ２１１が使用するＲＡＭ２１３のデータをディスクドライブ１１-0〜１１-5に転送する制御とを司る。
【００４２】
ディスクキャッシュ部２４は、図２に詳細を示すように、キャッシュメモリ２４０、先入れ先出し方式の記憶手段としてのＦＩＦＯメモリ２４１、ＰＣＩバス２５との間のバスブリッジ回路をなすＰＣＩバスブリッジ２４２、キャッシュメモリ２４０並びにＦＩＦＯメモリ２４１等を制御するキャッシュコントローラ２４３、及び排他的論理和回路（以下、ＥＸ−ＯＲと称する）２４４から構成される。
【００４３】
キャッシュメモリ２４０は、ホスト装置との間の転送データを一時記憶しておくためのもので、例えばＤＲＡＭ群から構成される。本実施形態では、キャッシュメモリ２４０とＰＣＩバス２５との間のデータ転送は、各入出力部２２，２３-0〜２３-5からのコマンドにより、ＰＣＩバス２５の手順に従って３２バイト単位で行われる。
【００４４】
キャッシュメモリ２４０のアドレス（キャッシュメモリアドレス）は、例えば３０ビットで示される。キャッシュメモリ２４０は、図４に示すように、複数のブロックに分割して管理される。各ブロックのサイズは１６ＫＢ（キロバイト）である。この場合、ブロック内のアドレスは、３０ビットのキャッシュメモリアドレスの下位１４ビットで示される。
【００４５】
再び図２を参照すると、ＦＩＦＯメモリ２４１は、キャッシュメモリ２４０またはＰＣＩバス２５からのデータを一時記憶すると共に、当該ＦＩＦＯメモリ２４１自身からのデータとキャッシュメモリ２４０またはＰＣＩバス２５からのデータをもとに（ＥＸ−ＯＲ２４４により）生成されるパリティデータを一時記憶するのに用いられる。ＦＩＦＯメモリ２４１の容量は例えばキャッシュメモリ２４０とＰＣＩバス２５との間の１回のデータ転送サイズに一致する３２バイトである。
【００４６】
ＰＣＩバスブリッジ２４２は、ＰＣＩバス（標準バス）２５との間のデータの授受と、ＰＣＩバス２５からのコマンドの受け取りを行う。またＰＣＩバスブリッジ２４２は、受け取ったコマンドに従って、キャッシュメモリ２４０とＰＣＩバス２５との間の（方向を考慮した）データ転送、キャッシュメモリ２４０またはＰＣＩバス２５からＦＩＦＯメモリ２４１またはＥＸ−ＯＲ２４４へのデータ転送、ＦＩＦＯメモリ２４１からキャッシュメモリ２４０への転送、ＥＸ−ＯＲ２４４からＰＣＩバス２５への転送を適宜行う。
【００４７】
本実施形態において、ＰＣＩバス２５から受け取るコマンドには３２ビットのアドレス（要求アドレス）が付されている。このアドレスは、図３に示すように、上位側から、２ビットのモード指定フィールド３１、４ビットのレジスタ指定フィールド３２、及び２６ビットのキャッシュ内アドレス指定フィールド３３を持つ。
【００４８】
モード指定フィールド３１は、キャッシュメモリ２４０に対する通常のリード／ライト動作を行うノーマルアクセスモード、キャッシュメモリ２４０（からのデータリードを行うと共に、そのリードデータ）を利用してパリティデータを生成するパリティ生成モード等を指示するのに用いられる。ここでは、モード指定フィールド３１の内容が“０１”の場合にノーマルアクセスモードを、“１０”の場合にパリティ生成モードが指定される。
【００４９】
レジスタ指定フィールド３２は、パリティ生成モードの場合には後述する設定レジスタ部４１-0，４１-1…の１つを選択指定するのに用いられる。但し、ノーマルアクセスモードの場合には、レジスタ指定フィールド３２は、３０ビットのキャッシュメモリアドレスの上位４ビットを指定するのに用いられる。
【００５０】
キャッシュ内アドレス指定フィールド３３はキャッシュメモリアドレスの下位アドレスを指定するのに用いられる。ここでは、ノーマルアクセスモードの場合には、キャッシュ内アドレス指定フィールド３３の全体が、キャッシュメモリアドレスの下位２６ビットを指定するのに用いられる。つまり、ノーマルアクセスモードの場合、レジスタ指定フィールド３２とキャッシュ内アドレス指定フィールド３３の３０ビットが、そのままキャッシュメモリアドレスを指定する。これに対し、パリティ生成モードの場合、キャッシュ内アドレス指定フィールド３３は、下位の１４ビットだけが有効であり、キャッシュメモリ２４０内のブロック（サイズ１６ＫＢ）におけるアドレス、つまりブロック内アドレス（ブロック内相対位置）を表す。なお、上記設定レジスタ部４１-0，４１-1…は、後述するようにキャッシュメモリ２４０内の３つのブロックのアドレス（ブロックアドレス）を指定するのに用いられる。パリティ生成モードでは、このブロックアドレス（１６ビット）とキャッシュ内アドレス指定フィールド３３の下位１４ビット（ブロック内アドレス）とにより、キャッシュメモリアドレスが指定される。
【００５１】
キャッシュコントローラ２４３は、ＰＣＩバスブリッジ２４２が受信したコマンドに付されているアドレス（要求アドレス）中のモード指定フィールド３１に従って、キャッシュメモリ２４０へのアクセスがパリティ生成を伴わないノーマルアクセスモードか、或いはパリティ生成を伴うパリティ生成モードか等を判定し、その判定結果に応じてキャッシュメモリ２４０へのリード／ライトタイミング制御等を行う。またキャッシュコントローラ２４３は、上記要求アドレスをもとに、キャッシュメモリ２４０へのアドレス出力を行う。
【００５２】
本実施形態において、上記ＰＣＩバスブリッジ２４２及びキャッシュコントローラ２４３は、ディスクキャッシュ部２４における制御手段（キャッシュ制御手段）を構成しており、プログラマブルなロジックデバイスとしての例えばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）２４５を用いて実現される。このＦＰＧＡ２４５は、主制御部２１のインタフェースから制御レジスタ（いずれも図示せず）を介して内部の論理がローディング（プログラミング）されることによって、その動作回路が決定される。
【００５３】
ＥＸ−ＯＲ２４４は、キャッシュメモリ２４０またはＰＣＩバスブリッジ２４２から送られるデータとＦＩＦＯメモリ２４１から読み出されるデータとの排他的論理和をとってパリティデータを生成する。
【００５４】
ディスクアレイ制御装置２０には、図４に示すように、複数組の設定レジスタ部４１-0，４１-1…と、パリティ生成制御回路４２とが設けられている。このパリティ生成制御回路４２はＦＰＧＡ２４５により実現されるもので、例えばキャッシュコントローラ２４３内に設けられる。
【００５５】
設定レジスタ部４１-k（ｋ＝０，１…）は、ディスクキャッシュ部２４内のブロックを指定する３つの設定レジスタ４１１〜４１３からなる。設定レジスタ４１１には、ホスト装置からのデータ転送によりキャッシュメモリ２４０に書き込まれる更新前のデータ、キャッシュメモリ２４０を利用したＲＡＩＤ５によるパリティ生成のためにディスクアレイ１０側からキャッシュメモリ２４０に読み込まれる更新前のデータ、同じくディスクアレイ１０側からキャッシュメモリ２４０に読み込まれる更新前のパリティのうちの、例えば更新データが格納されているキャッシュメモリ２４０内のブロック位置を指定するブロックアドレスが設定される。また、設定レジスタ４１２には、上記更新前データが格納されているキャッシュメモリ２４０内のブロック位置を指定するブロックアドレスが、設定レジスタ４１３には、上記更新前パリティが格納されているキャッシュメモリ２４０内のブロック位置を指定するブロックアドレスが、それぞれ設定される。
【００５６】
設定レジスタ部４１-kは、ＰＣＩバスブリッジ２４２がＰＣＩバス２５から受け取ったコマンドに付されている３２ビットのアドレス中のレジスタ指定フィールド３２により選択指定される。ここでは、レジスタ指定フィールド３２の内容が例えば“００００”の場合には設定レジスタ部４１-k（ｋ＝０）、即ち設定レジスタ部４１-0が指定され、“１０００”の場合には設定レジスタ部４１-k（ｋ＝１）、即ち設定レジスタ部４１-1が指定される。本実施形態において、レジスタ指定フィールド３２は４ビットであることから、設定レジスタ部４１-kは最大１６組用意することが可能である。
【００５７】
パリティ生成制御回路４２は、ＰＣＩバスブリッジ２４２がＰＣＩバス２５から受け取ったコマンドに付されている３２ビットのアドレスのモード指定フィールド３１により（ＲＡＩＤ５での）パリティ生成モードが指定されている場合に、キャッシュメモリ２４０から、更新データと、対応する更新前データと、対応する更新前パリティ（パリティデータ）とを逐次読み出して排他的論理和をとって更新パリティを生成するための制御を３つのキャッシュメモリアドレスレジスタ４２１〜４２３を使用して実行する。このキャッシュメモリアドレスレジスタ４２１〜４２３には、上記３２ビットの要求アドレスのレジスタ指定フィールド３２により指定される設定レジスタ部４１-kの各設定レジスタ４１１〜４１３に設定されている１６ビットのブロックアドレスと当該要求アドレスのキャッシュ内アドレス指定フィールド３３の下位１４ビット（の示すブロック内アドレス）とが連結された情報が、３０ビットのキャッシュメモリアドレスとして設定される。
【００５８】
次に本実施形態における動作を、キャッシュメモリ２４０に対する通常のリード／ライト動作（ノーマルアクセス動作）と、キャッシュメモリ２４０を利用したＲＡＩＤ５適用時のパリティ生成動作とについて順に説明する。
【００５９】
（１）キャッシュメモリに対する通常のリード／ライト動作
外部入出力部２２またはディスク入出力部２３-iは、ディスクキャッシュ部２４内のキャッシュメモリ２４０に対する何らかのリード／ライト動作が必要な場合、その旨のキャッシュアクセスコマンド（キャッシュリード／ライトコマンド）をＰＣＩバス２５経由でディスクキャッシュ部２４内のＰＣＩバスブリッジ２４２に送出する。このコマンドには、３２ビットのアドレス（要求アドレス）が付されている。
【００６０】
ＰＣＩバスブリッジ２４２は、外部入出力部２２またはディスク入出力部２３-iからのコマンドをＰＣＩバス２５を通して受け取ると、当該コマンドからデータの流れる方向を決定すると共に、当該コマンドをキャッシュコントローラ２４３に送る。
【００６１】
キャッシュコントローラ２４３は、ＰＣＩバスブリッジ２４２からコマンドを受け取ると、当該コマンドに付されている要求アドレスの上位２ビット、即ちモード指定フィールド３１を参照し、“０１”であるならばノーマルアクセスモードであり、“１０”であるならばパリティ生成モードであるものと判断する。このモード判断は、例えばモード指定フィールド３１の内容をデコードすることで実現される。
【００６２】
ここでは、要求アドレスが“４００１００００ｈ”（末尾のｈは１６進表現であることを示す）であるものとすると、上位２ビットは“０１”であることから、ノーマルアクセスモードが判断される。ノーマルアクセスモードでは、要求アドレスの下位３０ビット（ここでは“００１０００００ｈ”）がそのまま３０ビットのキャッシュメモリアドレスを指定するのに用いられる。
【００６３】
そこでキャッシュコントローラ２４３は、ノーマルアクセスモードでのキャッシュリード／ライトのための制御を次のように行う。
キャッシュコントローラ２４３は、ＰＣＩバスブリッジ２４２から受け取ったコマンドに従ってデータの流れる方向を決定する。そしてキャッシュコントローラ２４３は、当該コマンドに付されている要求アドレス（ここでは“４００１００００ｈ”）の下位３０ビットの示すキャッシュメモリアドレスのキャッシュメモリ２４０への設定出力と、キャッシュメモリ２４０に対するリード／ライトのための制御信号の生成出力を行う。
【００６４】
すると、キャッシュメモリ２４０の指定のキャッシュメモリアドレスで示される３２バイト領域に対するデータのリード／ライトが行われる。
以上が、ＰＣＩバス２５を介して受け取った外部入出力部２２またはディスク入出力部２３-iからのコマンドに付されている要求アドレスのモード指定フィールド３１の内容が“０１”である場合、つまり外部入出力部２２またはディスク入出力部２３-iからのコマンドによりキャッシュメモリ２４０に対するノーマルアクセスが指示された場合の動作である。
【００６５】
このノーマルアクセスを指示するコマンド（キャッシュリード／ライトコマンド）は、（ａ）ホスト装置から要求されたディスクドライブ１１-i上のデータがキャッシュメモリ２４０上にも存在するヒット時に、その要求データを当該キャッシュメモリ２４０から読み出す場合、（ｂ）上記要求データがキャッシュメモリ２４０上に存在しないミスヒット時に、ディスクドライブ１１-iからリードされた要求データを当該キャッシュメモリ２４０に書き込む場合、（ｃ）ホスト装置から要求された更新データをディスクドライブ１１-iに書込む際に、当該更新データをキャッシュメモリ２４０にも書込む場合、（ｄ）更にＲＡＩＤ５でのデータ更新時において、更新データに加えて、対応する更新前のデータ及び更新前のパリティ（パリティデータ）をキャッシュメモリ２４０に書込む場合等に用いられる。
【００６６】
（２）ＲＡＩＤ５適用時のパリティ生成動作
次に、ＲＡＩＤ５適用時のパリティ生成動作について、図４及び図５を参照して説明する。
【００６７】
外部入出力部２２は、ＲＡＩＤ５適用時においてホスト装置からディスクドライブ１１-i（ｉは０〜４）上のデータの更新が要求された場合、主制御部２１内のマイクロプロセッサ２１１の制御のもとで、ノーマルアクセスを指示するコマンド（キャッシュライトコマンド）をディスクキャッシュ部２４内のキャッシュコントローラ２４３に送って、ホスト装置からの更新データをキャッシュメモリ２４０の任意のブロック内領域に書き込ませる。
【００６８】
同様に、ディスク入出力部２３-i，２３-j（ｊは０〜４のいずれか、但しｊ≠ｉ）は、主制御部２１内のマイクロプロセッサ２１１の制御のもとで、ホスト装置からの更新データに対応するディスクドライブ１１-i上の更新前データ，当該更新データに対応する他のディスクドライブ１１-j上の更新前パリティについて、ノーマルアクセスを指示するコマンド（キャッシュライトコマンド）をキャッシュコントローラ２４３に送って、任意のブロック内領域に読み込ませる。なお、該当するデータが既にキャッシュメモリ２４０に存在する場合には、当該データに対する上記コマンドの実行は不要である。
【００６９】
ここで、上記更新前データ，更新前パリティの書き込みに使用されるコマンド（キャッシュライトコマンド）に付されている３２ビットの要求アドレスの下位１４ビットの内容（つまりキャッシュ内アドレス指定フィールド３３の下位１４ビットの内容）は、対応する更新データの書き込みに使用されたコマンドに付されている３２ビットの要求アドレスの下位１４ビットの内容（キャッシュ内アドレス指定フィールド３３の下位１４ビットの内容）に一致する。つまり、更新前データ，更新前パリティがディスクドライブ１１-i，ディスクドライブ１１-jからキャッシュメモリ２４０に読み込まれる各ブロック内の位置、言い換えれば更新前データ，更新前パリティが格納されるキャッシュメモリ２４０のブロック内の位置（相対位置）は、更新データが書き込まれているブロック内の位置に一致する。この更新データ，更新前データ，更新前パリティが格納されているブロックを指定するブロックアドレス（レジスタ指定フィールド３２の４ビットとキャッシュ内アドレス指定フィールド３３の上位１２ビットの１６ビットで示されるブロックアドレス）は、例えば主制御部２１内のマイクロプロセッサ２１１の制御により、それぞれ設定レジスタ部４１-0，４１-1…のうちの空きの設定レジスタ部内の設定レジスタ４１１，４１２，４１３に設定される。
【００７０】
以上により、本実施形態では、図４に示すように、キャッシュメモリ２４０の任意のブロック４３１の例えば先頭位置から始まる領域に更新データが、同じく任意のブロック４３２の先頭位置から始まる領域に更新前データが、そして任意のブロック４３３の先頭位置から始まる領域に更新前パリティが、それぞれ書込まれたものとする。また、更新データ，更新前データ，更新前パリティが格納されているブロック４３１，４３２，４３３を指定するブロックアドレスが、それぞれ設定レジスタ部４１-0内の設定レジスタ４１１，４１２，４１３に保持されたものとする。
【００７１】
このように、キャッシュメモリ２４０のブロック４３１，４３２，４３３に更新データ，更新前データ，更新前パリティが揃うと、更新前パリティのキャッシュメモリ２４０への書き込みを指示したディスク入出力部２３-jは、パリティデータの生成とパリティデータの読み出しとを指示する特別のキャッシュリードコマンドを、ＰＣＩバス２５経由でディスクキャッシュ部２４内のＰＣＩバスブリッジ２４２に送出する。このコマンドに付される３２ビットの要求アドレスは、例えば“８００１００００ｈ”である。即ち当該要求アドレスのモード指定フィールド３１にはパリティ生成モードを指定する“１０”が、レジスタ指定フィールド３２には設定レジスタ部４１-0を指定する“００００”が、そしてキャッシュ内アドレス指定フィールド３３の下位１４ビットには、先のノーマルアクセスモード指定時に用いた開始キャッシュメモリアドレスの下位１４ビット、即ちブロック内アドレス“０１０００ｈ”が、それぞれ設定されている。なお、設定レジスタ部４１-1を指定する場合であれば、レジスタ指定フィールド３２に“１０００”を設定する必要があるため、要求アドレスは“Ａ００１００００ｈ”となる。
【００７２】
ＰＣＩバスブリッジ２４２は、上記したパリティ生成モード指定付きのキャッシュリードコマンドをＰＣＩバス２５を通して受け取ると、当該コマンドからデータの流れる方向を決定すると共に、当該コマンドをキャッシュコントローラ２４３に送る。
【００７３】
キャッシュコントローラ２４３は、ＰＣＩバスブリッジ２４２からコマンドを受け取ると、当該コマンドに付されている３２ビットの要求アドレス中のモード指定フィールド３１を参照し、この例のように“１０”である場合には、パリティ生成モードが指定されていると判断し、パリティ生成のためのシーケンス処理を次のように行う。
【００７４】
パリティ生成モードの場合、まずキャッシュコントローラ２４３は、設定レジスタ部４１-0，４１-1…の中から、受け取ったコマンドに付されている３２ビットの要求アドレス“８００１００００ｈ”中のレジスタ指定フィールド３２の内容“００００”の指定する設定レジスタ部を選択する。ここでは、設定レジスタ部４１-0が選択される。
【００７５】
次にキャッシュコントローラ２４３は、選択した設定レジスタ部４１-0の設定レジスタ４１１，４１２，４１３に保持されている１６ビットのブロックアドレスを、パリティ生成制御回路４２内のキャッシュメモリアドレスレジスタ４２１，４２２，４２３の上位１６ビットのフィールドに設定すると共に、上記要求アドレスのキャッシュ内アドレス指定フィールド３３の下位１４ビットを、当該レジスタ４２１，４２２，４２３の下位１４ビットのフィールドに設定する。本実施形態において、キャッシュメモリアドレスレジスタ４２１，４２２，４２３の設定内容は、先に更新データ，更新前データ，更新前パリティが格納されたキャッシュメモリ２４０内のブロック４３１，４３２，４３３と、そのブロック内格納位置を指定するキャッシュメモリアドレスを示す。
【００７６】
しかしてキャッシュコントローラ２４３（内のパリティ生成制御回路４２）は、まずキャッシュメモリアドレスレジスタ４２１に設定されているキャッシュメモリアドレスを選択してキャッシュメモリ２４０に出力すると共に、当該メモリ２４０に対するデータリードのための制御信号の生成出力を行うことで、当該メモリ２４０のブロック４３１から更新データを３２バイト読み出し、図５において符号５１で示すように、ＰＣＩバスブリッジ２４２を介してＦＩＦＯメモリ２４１に書き込む。
【００７７】
キャッシュコントローラ２４３（内のパリティ生成制御回路４２）は、更新データの読み出しが完了すると、今度はキャッシュメモリアドレスレジスタ４２２に設定されているキャッシュメモリアドレスを選択してキャッシュメモリ２４０に出力すると共に、当該メモリ２４０に対するデータリードのための制御信号の生成出力を行うことで、当該メモリ２４０のブロック４３２から更新前データを３２バイト読み出し、図５において符号５２で示すようにＥＸ−ＯＲ２４４側に読み出す。
【００７８】
同時にキャッシュコントローラ２４３は、前回ＦＩＦＯメモリ２４１に書き込んだ更新データも図５において符号５３で示すようにＥＸ−ＯＲ２４４側に読み出す。
【００７９】
ＥＸ−ＯＲ２４４は、ＦＩＦＯメモリ２４１から読み出された更新データとキャッシュメモリ２４０（のブロック４３２）から読み出された更新前データとのビット単位の排他的論理和（ＥＸ−ＯＲ）をとる。このＥＸ−ＯＲ２４４の（３２バイトの）排他的論理和演算結果は、キャッシュコントローラ２４３の制御により、図５において符号５４で示すようにＦＩＦＯメモリ２４１に書き込まれる。
【００８０】
次にキャッシュコントローラ２４３（内のパリティ生成制御回路４２）は、更新前データの読み出しが完了すると、今度はキャッシュメモリアドレスレジスタ４２３に設定されているキャッシュメモリアドレスを選択してキャッシュメモリ２４０に出力すると共に、当該メモリ２４０に対するデータリードのための制御信号の生成出力を行うことで、当該メモリ２４０のブロック４３３から更新前パリティを３２バイト読み出し、図５において符号５５で示すようにＥＸ−ＯＲ２４４側に読み出す。
【００８１】
同時にキャッシュコントローラ２４３は、前回ＦＩＦＯメモリ２４１に書き込んだ（更新データと更新前データとの）排他的論理和演算結果も図５において符号５６で示すようにＥＸ−ＯＲ２４４側に読み出す。
【００８２】
ＥＸ−ＯＲ２４４は、ＦＩＦＯメモリ２４１から読み出された前回の（更新データと更新前データとの）排他的論理和演算結果とキャッシュメモリ２４０（のブロック４３３）から読み出された更新前パリティとのビット単位の排他的論理和（ＥＸ−ＯＲ）をとる。このＥＸ−ＯＲ２４４の（３２バイトの）排他的論理和演算結果は更新パリティ（更新パリティデータ）となり、図５において符号５７で示すようにＰＣＩバスブリッジ２４２からＰＣＩバス２５に送出される。
【００８３】
このように本実施形態においては、ディスク入出力部２３-jからディスクキャッシュ部２４にパリティ生成モードを指示するキャッシュリードコマンドを発行するだけで、ディスクキャッシュ部２４内のキャッシュコントローラ２４３の制御により、当該コマンドに付されている要求アドレス中のレジスタ指定フィールド３２の指定する設定レジスタ部４１-k（を構成する設定レジスタ４１１，４１２，４１３）の示すブロックアドレスにより指定されるキャッシュメモリ２４０内ブロック（４３１，４３２，４３３）から、当該要求アドレス中のキャッシュ内アドレス指定フィールド３３の下位１４ビットにより指定されるブロック内位置の更新データ、対応する更新前データ、及び更新前パリティが順次キャッシュメモリ２４０から読み出されてＥＸ−ＯＲ２４４にて排他的論理和がとられることで、当該コマンドで指定された更新パリティが自動生成され、ＰＣＩバス２５に送出される。つまりディスク入出力部２３-jは、パリティ生成モード指定のキャッシュリードコマンドをディスクキャッシュ部２４に出力するだけで、当該コマンドの指定する更新データに対応する更新パリティをディスクキャッシュ部２４からＰＣＩバス２５に出力させることができる。
【００８４】
ディスク入出力部２３-jからのパリティ生成モード指定のキャッシュリードコマンドに従って生成されてＰＣＩバス２５に出力された更新パリティは、当該ディスク入出力部２３-jにより読み込まれる。ディスク入出力部２３-jは、ＰＣＩバス２５から読み込んだ更新パリティ、即ちディスクキャッシュ部２４から（ＰＣＩバスブリッジ２４２を介して）ＰＣＩバス２５に出力（リード）された更新パリティが例えば１セクタ分に達する毎に、元のパリティ（更新前パリティ）が格納されていたディスクドライブ１１-jの領域に当該更新パリティを格納する。
【００８５】
さて、ディスク入出力部２３-jは、先のパリティ生成コマンド送出時より、３２バイト分だけアドレスがインクリメントされた要求アドレスを持つパリティ生成モード指定のキャッシュリードコマンドをディスクキャッシュ部２４に送出することにより、当該ディスクキャッシュ部２４内のキャッシュコントローラ２４３の制御のもとで、次の３２バイトの更新データ、更新前データ及び更新前パリティをキャッシュメモリ２４０から逐次読み出させて排他的論理和をとることで、次の３２バイトの更新パリティを生成させてＰＣＩバス２５に送出させる。
【００８６】
このように、３２バイト単位（一定のデータサイズ単位）に、キャッシュメモリ２４０上の任意のブロック内に格納された更新データ、更新前データ及び更新前パリティを、設定レジスタ部４１-k内の設定レジスタ４１１，４１２，４１３の設定内容（ブロックアドレス）に基づいて逐次読み出して排他的論理和をとって更新パリティを生成する動作を繰り返すことで、キャッシュメモリ２４０上でのコピー処理を行うことなく、ホスト装置から要求された全更新データに対応する更新パリティを生成することができる。
【００８７】
［第２の実施形態］
前記第１の実施形態は、ディスクキャッシュ部２４でのパリティ生成（排他的論理和演算）に用いられるデータの数（参照データ数）が３つの場合にのみ適用可能であり、４つ以上の場合、つまりディスクアレイ１０を構成するディスクドライブの数が変化してパリティ生成（排他的論理和演算）時に参照されるデータの数も変化する場合には対応できない。そこで、パリティ生成（排他的論理和演算）時の参照データ数（要素数）が変化しても対応可能とした、本発明の第２の実施形態について説明する。なお、ディスクアレイ装置の基本構成、及び（ディスクアレイ装置内の）ディスクキャッシュ部２４の基本構成は図１、図２と同様である。したがって、以下の説明では便宜的に図１及び図２を援用する。
【００８８】
本実施形態では、前記第１の実施形態で適用した３２ビットの要求アドレス中の４ビットのレジスタ指定フィールド３２（図３参照）を、図６に示すように２ビットの要素数指定フィールド３４及び２ビットのレジスタ指定フィールド３５に分割して使用するようにしている。要素数指定フィールド３４は、パリティ生成（排他的論理和演算）時の参照データ数（要素数）を指定するのに用いられる。レジスタ指定フィールド３５は、（前記第１の実施形態における設定レジスタ部４１-0，４１-1…と同様の）複数の設定レジスタ部の１つを指定するのに用いられる。
【００８９】
本実施形態では、図７に示すように、図４中の設定レジスタ部４１-0，４１-1…及びパリティ生成制御回路４２に代えて、設定レジスタ部７１-0，７１-1…及びパリティ生成制御回路７２が設けられる。設定レジスタ部７１-k（ｋ＝０，１…）は、図４中の設定レジスタ部４１-kとは異なって、４つの設定レジスタ４１１，４１２，４１３，４１４からなる。一方、パリティ生成制御回路７２は、図４中のパリティ生成制御回路４２と異なって、４つのキャッシュメモリアドレスレジスタ４２１，４２２，４２３，４２４を持つ。なお、パリティ生成制御回路７２はキャッシュコントローラ２４３に設けられており、この点ではパリティ生成制御回路４２と同様である。
【００９０】
本実施形態において、キャッシュアクセスコマンド（キャッシュリード／ライトコマンド）に付される要求アドレス中のモード指定フィールド３１が“０１”の場合、つまりノーマルアクセスモードの場合の動作は前記第１の実施形態と何ら変わらない。本実施形態が前記第１の実施形態と異なるのは、モード指定フィールド３１の内容が“１０”の場合、つまりパリティ生成モードの場合である。
【００９１】
このパリティ生成モードにおいて、要求アドレス中の要素数指定フィールド３４の内容が“００”の場合、つまり要求アドレスの上位４ビットが“１０００”であり、したがって要求アドレスが“８×××××××ｈ”（×は０ｈ〜Ｆｈのいずれでも構わないことを示す）の場合、参照データ（要素数）＝３を示すようになっている。
【００９２】
この場合、レジスタ指定フィールド３５の指定する設定レジスタ部７１-k内の設定レジスタ４１１〜４１４のうちの設定レジスタ４１１〜４１３の内容が、パリティ生成制御回路７２内のキャッシュメモリアドレスレジスタ４２１〜４２４のうちのレジスタ４２１〜４２３の上位１６ビットに設定される。このレジスタ４２１〜４２３の下位１４ビットには、上記要求アドレス中のキャッシュ内アドレス指定フィールド３３の下位１４ビットがブロック内アドレスとして共通に設定される。
【００９３】
そして、上記３つのレジスタ４２１〜４２３の示すキャッシュメモリアドレスの指定により、前記第１の実施形態で述べたように、キャッシュメモリ２４０内の３つのブロック４３１〜４３３からデータが逐次読み出され、ＥＸ−ＯＲ２４４で排他的論理和がとられることで、パリティデータが生成される。
【００９４】
一方、パリティ生成モードにおいて、要求アドレス中の要素数指定フィールド３４の内容が“１０”の場合、つまり要求アドレスの上位４ビットが“１０１０”であり、したがって要求アドレスが“Ａ×××××××ｈ”の場合、参照データ（要素数）＝４を示すようになっている。
【００９５】
この場合、レジスタ指定フィールド３５の指定する設定レジスタ部７１-k内の設定レジスタ４１１〜４１４の内容が、パリティ生成制御回路７２内のキャッシュメモリアドレスレジスタ４２１〜４２４の上位１６ビットに設定される。このレジスタ４２１〜４２４の下位１４ビットには、上記要求アドレス中のキャッシュ内アドレス指定フィールド３３の下位１４ビットがブロック内アドレスとして共通に設定される。
【００９６】
そして、上記４つのレジスタ４２１〜４２４の示すキャッシュメモリアドレスの指定により、キャッシュメモリ２４０内の４つのブロック４３１〜４３４からデータが逐次読み出され、ＥＸ−ＯＲ２４４で排他的論理和がとられることで、パリティデータが生成される。ここでは、ＦＩＦＯメモリ２４１からの前回までの排他的論理和演算結果の読み出しと、キャッシュメモリ２４０からのデータの読み出しと、両読み出しデータの排他的論理和演算とが、前記第１の実施形態よりそれぞれ１回増加する。
【００９７】
これにより、ディスクアレイ１０を構成するディスクドライブの数が変化し、パリティ生成時の参照データ数が変化した場合でも、一括してパリティデータを生成することができる。なお、ここでのパリティ生成は、ＲＡＩＤ５適用時におけるデータ復元動作、即ちディスクアレイ１０を構成するディスクドライブの１つに障害が発生した場合に、残りの正常なディスクドライブのデータを使って順次排他的論理和をとることで元のデータを復元する動作も含むものとする。即ち本実施形態におけるパリティ生成とは、複数のデータをキャッシュメモリ２４０から逐次読み出して排他的論理和をとることを指すものとする。
【００９８】
［第３の実施形態］
前記第２の実施形態では、ディスクアレイ１０のディスクドライブ数を自由に構成しても一括してパリティデータを生成できるようにするのに、要求アドレス中に要素数指定フィールド３４を設ける必要があった。しかし、要素数指定フィールド３４を設けたことで、新たに確保されたレジスタ指定フィールド３５のビット数は２と、第１の実施形態におけるレジスタ指定フィールド３２の４ビットより小さくなり、指定可能な設定レジスタ部の数は１６から４に減少する。
【００９９】
そこで、ディスクアレイ１０のディスクドライブ数を自由に構成しても一括してパリティデータを生成できるようにしながら、要求アドレスに要素数指定フィールドを設けなくても済むようにした、本発明の第３の実施形態について説明する。なお、ディスクアレイ装置の基本構成、及び（ディスクアレイ装置内の）ディスクキャッシュ部２４の基本構成は図１、図２と同様である。したがって、以下の説明では便宜的に図１及び図２を援用する。
【０１００】
まず本実施形態では、要求アドレスに、前記第１の実施形態で適用したフォーマットを適用している（図３参照）。
本実施形態の特徴の１つは、図４中の設定レジスタ部４１-0，４１-1に代えて、図８に示すように、構成レジスタ数の異なる複数の設定レジスタ部８１-0，８１-1…を設けたことにある。例えば設定レジスタ部８１-0は、図４中の設定レジスタ部４１-0，４１-1と同様に、３つの設定レジスタ４１１〜４１３から構成され、設定レジスタ部８１-1は、図７中の設定レジスタ部７１-0，７１-1と同様に、４つの設定レジスタ４１１〜４１４から構成されている。
【０１０１】
また、設定レジスタ部８１-0，８１-1…のレジスタ構成数の最大値をＮとすると、キャッシュコントローラ２４３には、Ｎ個のキャッシュメモリアドレスレジスタを持つパリティ生成制御回路８２が設けられる。ここでは、Ｎ＝４であるものとすると、パリティ生成制御回路８２には、図７中のパリティ生成制御回路７２と同様に、４つのキャッシュメモリアドレスレジスタ４２１〜４２４が設けられる。
【０１０２】
本実施形態において、キャッシュアクセスコマンド（キャッシュリード／ライトコマンド）に付される要求アドレス中のモード指定フィールド３１が“０１”の場合、つまりノーマルアクセスモードの場合の動作は前記第１及び第２の実施形態と何ら変わらない。本実施形態が前記第１及び第２の実施形態と異なるのは、モード指定フィールド３１の内容が“１０”の場合、つまりパリティ生成モードの場合である。
【０１０３】
このパリティ生成モードにおいて、要求アドレス中のレジスタ指定フィールド３２は、設定レジスタ部８１-kを指定するだけでなく、その設定レジスタ部８１-kの構成レジスタ数、つまりパリティ生成時の参照データ数を指定するようになっている。例えばレジスタ指定フィールド３２の内容が“００００”の場合、即ち要求アドレスが“８００１００００ｈ”の場合、設定レジスタ部８１-0を指定すると共に、その設定レジスタ部８１-0の構成レジスタ数（参照データ数）が３であることを示す。また、レジスタ指定フィールド３２の内容が“１０００”の場合、即ち要求アドレスが“Ａ００１００００ｈ”の場合、設定レジスタ部８１-1を指定すると共に、その設定レジスタ部８１-1の構成レジスタ数（参照データ数）が４であることを示す。
【０１０４】
パリティ生成モードにおいて、要求アドレス中のレジスタ指定フィールド３２により３つの設定レジスタ４１１〜４１３からなる設定レジスタ部、例えば設定レジスタ部８１-0が指定された場合、その３つの設定レジスタ４１１〜４１３の内容が、パリティ生成制御回路８２内のキャッシュメモリアドレスレジスタ４２１〜４２４のうちの（レジスタ指定フィールド３２の値で予め定められる数の、即ち設定レジスタ部８１-0の構成レジスタ数と同数の）レジスタ４２１〜４２３の上位１６ビットに設定される。このレジスタ４２１〜４２３の下位１４ビットには、上記要求アドレス中のキャッシュ内アドレス指定フィールド３３の下位１４ビットがブロック内アドレスとして共通に設定される。
【０１０５】
そして、上記３つのレジスタ４２１〜４２３の示すキャッシュメモリアドレスの指定により、キャッシュメモリ２４０内の３つのブロック４３１〜４３３からデータが逐次読み出され、ＥＸ−ＯＲ２４４で排他的論理和がとられることで、パリティデータが生成される。
【０１０６】
一方、パリティ生成モードにおいて、要求アドレス中のレジスタ指定フィールド３２により４つの設定レジスタ４１１〜４１４からなる設定レジスタ部、例えば設定レジスタ部８１-1が指定された場合には、その４つの設定レジスタ４１１〜４１４の内容が、パリティ生成制御回路８２内の（レジスタ指定フィールド３２の値で予め定められる数の、即ち設定レジスタ部８１-1の構成レジスタ数と同数の）全てのキャッシュメモリアドレスレジスタ４２１〜４２４の上位１６ビットに設定される。このレジスタ４２１〜４２４の下位１４ビットには、上記要求アドレス中のキャッシュ内アドレス指定フィールド３３の下位１４ビットがブロック内アドレスとして共通に設定される。
【０１０７】
そして、上記４つのレジスタ４２１〜４２４の示すキャッシュメモリアドレスの指定により、キャッシュメモリ２４０内の４つのブロック４３１〜４３４からデータが逐次読み出され、ＥＸ−ＯＲ２４４で排他的論理和がとられることで、パリティデータが生成される。
【０１０８】
これにより、限られたアドレスのビット数で多くの設定レジスタ部を指定でき、且つディスクアレイ１０のディスクドライブの数を自由に構成しても、一括してパリティデータを生成することができる。
【０１０９】
［第４の実施形態］
図９は本発明の第４の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図である。なお、図１と同一部分には同一符号を付してある。
【０１１０】
図９の構成の特徴は、図１中のディスクキャッシュ部２４に相当する複数のディスクキャッシュ部、例えば２組のディスクキャッシュ部２４-0，２４-1を設け、キャッシュメモリアクセスをディスクキャッシュ部２４-0と２４-1の２つに分散させるようにした点にある。
【０１１１】
このような構成においては、例えばディスクキャッシュ部２４-0でパリティの生成処理中に、ディスクキャッシュ部２４-1でノーマルアクセスモードでのキャッシュリード／ライトを実行することが可能となる。これにより、パリティ生成に伴うキャッシュメモリアクセスのオーバヘッドを減らし、システムの性能向上を図ることが可能となる。
【０１１２】
［第５の実施形態］
図１０は本発明の第５の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図である。なお、図９と同一部分には同一符号を付してある。
【０１１３】
図１０の構成の特徴は、図９中のディスクアレイ１０に相当する複数組のディスクアレイ、例えば２組のディスクアレイ１０-0，１０-1を設け、そのディスクアレイ１０-0，１０-1毎にディスクキャッシュ部２４-0，２４-1を設けた点にある。
【０１１４】
このように、ディスクアレイ単位にディスクキャッシュ部を設けることで、ディスクキャッシュ部でのパリティ生成等に要する処理時間の影響が他のディスクアレイに及ぼすのを防ぎ、システムの性能向上を図ることが可能となる。また、ディスクアクセスはディスクアレイ単位で行われるため、ディスクアレイ単位にディスクキャッシュ部を設けることで、データの管理も容易となる。
【０１１５】
［第６の実施形態］
第１１図は本発明の第６の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図である。なお、図１０と同一部分には同一符号を付してある。
【０１１６】
図１１の構成の特徴は、図１０の構成におけるディスクキャッシュ部２４-0，２４-1のシステムへの組み込み及びシステムからの切り離しが可能な構成とし、適用するディスクアレイと要求されるコストに応じて増減可能とした点にある。
【０１１７】
このような構成において、図１１の例のように、２組のディスクアレイ１０-0，１０-1を備えている場合に、コストの問題で１つのディスクキャッシュ部２４-0だけをシステムに組み込むときは、当該ディスクキャッシュ部２４-0をディスクアレイ１０-0及び１０-1の両方に共用させればよい。また、ディスクキャッシュ部２４-1を追加できる場合には、ディスクキャッシュ部２４-0を例えばディスクアレイ１０-0用とし、ディスクキャッシュ部２４-1をディスクアレイ１０-1用とすることで、前記第５の実施形態と同様の効果を得ることが可能となる。
【０１１８】
［第７の実施形態］
以上に述べた実施形態では、設定レジスタ部のディスクアレイ制御装置２０内での配置個所と、当該設定レジスタ部内の各設定レジスタにブロックアドレスを設定する場合の経路について特に規定していなかったが、例えばキャッシュコントローラ２４３内に配置し、ＰＣＩバス経由で設定可能とするとよい。そこで、各設定レジスタ部をキャッシュコントローラ２４３内に配置した第７の実施形態について図面を参照して説明する。
【０１１９】
図１２に、図４中の設定レジスタ部４１-0，４１-1…をキャッシュコントローラ２４３内に配置した例を示す。ここでは、設定レジスタ部４１-0，４１-1…は、キャッシュコントローラ２４３に設けられた（図４中のパリティ生成制御回路４２に相当する）パリティ生成制御回路１２２内に配置されている。
【０１２０】
図１２の構成において、各設定レジスタ部４１-k（ｋ＝０，１…）を構成する設定レジスタ（ここでは設定レジスタ４１１〜４１３）はＰＣＩバス２５に接続されている。これらの各設定レジスタには、３２ビットの要求アドレスで示されるメモリアドレス空間の、例えば“Ｅ０００００００ｈ”〜“Ｅ０００ＦＦＦＦｈ”の範囲内のアドレスが割り当てられており、図１中の主制御部２１内のマイクロプロセッサ２１１等からＰＣＩバス２５を介してメモリアドレス（要求アドレス）によりアクセス可能なようになっている。このメモリアドレス空間における各設定レジスタ等へのアドレス割り当ての一例を、図１３に示す。
【０１２１】
このような構成においては、パリティ生成に使用されるデータが格納されているキャッシュメモリ２４０内ブロック位置を示すブロックアドレスを設定レジスタ部４１-k内の設定レジスタに設定する（書き込む）動作が、例えばマイクロプロセッサ２１１によりＰＣＩバス２５を介して実行可能となる。このように、設定レジスタ部４１-k内の設定レジスタへの書き込みが、データ転送に使用するＰＣＩバス２５を介して実行可能とすることで、ディスクキャッシュ部２４の独立性を高めることができる。しかもＰＣＩバス２５に対応することで、つまり標準的なバスに対応することで、汎用性のあるパーソナルコンピュータ等のシステムに適用することが可能である。
【０１２２】
なお、図１２の構成は、図４中の設定レジスタ部に対してだけでなく、図７中の設定レジスタ部及び図８中の設定レジスタ部に対しても同様に適用可能である。
【０１２３】
［第８の実施形態］
前記第７の実施形態では、（設定レジスタ部を構成する）各設定レジスタへのマイクロプロセッサ２１１からのブロックアドレス設定（書き込み）がＰＣＩバス２５経由で行える場合について説明したが、これに限るものではない。そこで、各設定レジスタへのブロックアドレスの設定がＰＣＩバス２５を経由せずにマイクロプロセッサ２１１から直接行えるようにした第８の実施形態について図面を参照して説明する。
【０１２４】
図１４は本発明の第８の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図であり、図１と同一部分には同一符号を付してある。
【０１２５】
図１４の構成の特徴は、マイクロプロセッサ２１１とディスクキャッシュ部２４との間に、マイクロプロセッサ２１１からＰＣＩバス２５を経由せずに直接にディスクキャッシュ部２４内の要素に対してアクセス可能な内部バス（マイクロプロセッサバス）１４１が設けられている点にある。
【０１２６】
ここでは、設定レジスタ部４１-0，４１-1…が、図１５に示すように、ディスクキャッシュ部２４内のキャッシュコントローラ２４３に設けられたパリティ生成制御回路１２２内に配置されている。この点では前記第７の実施形態と同様である。但し本実施形態では、各設定レジスタ部４１-k（ｋ＝０，１…）を構成する設定レジスタ（ここでは設定レジスタ４１１〜４１３）が、ＰＣＩバス２５ではなくて、マイクロプロセッサ２１１の内部バス１４１に接続されている。これらの各設定レジスタには、マイクロプロセッサ２１１で使用するアドレス空間の一部が割り当てられており、当該マイクロプロセッサ２１１から内部バス１４１を介してアクセス可能なようになっている。
【０１２７】
このような構成においては、ＰＣＩバス２５を介してデータ転送が行われている期間でも、マイクロプロセッサ２１１から内部バス１４１経由で設定レジスタ部４１-k内の設定レジスタにブロックアドレスを設定することが可能であり、データ転送に関するオーバヘッドをなくし、システム性能を向上することができる。
【０１２８】
なお、図１５の構成は、図４中の設定レジスタ部に対してだけでなく、図７中の設定レジスタ部及び図８中の設定レジスタ部に対しても同様に適用可能である。
【０１２９】
なお、以上の実施形態では、パリティ生成モード指定付きのキャッシュリードコマンドが、主制御部２１（内のマイクロプロセッサ２１１）の制御のもとで、ディスク入出力部２３-jから出力されるものとして説明したが、主制御部２１（内のマイクロプロセッサ２１１）から出力されるものであっても構わない。
【０１３０】
【発明の効果】
以上詳述したように本発明によれば、データ更新時に更新データが格納されるキャッシュメモリ内ブロック位置と、当該更新データに対応する更新前データ及び更新前パリティがそれぞれ格納されるキャッシュメモリ内各ブロック位置とを任意のレジスタ群により指定し、データ更新に伴うパリティ生成を指定するキャッシュリードコマンドが与えられた場合には、当該コマンドに付されている要求アドレスにより指定されるレジスタ群での各設定内容の示すキャッシュメモリ内各ブロックから指定の各データを順次読み出して逐次排他的論理和演算を行うことでパリティデータを生成する構成としたので、データ更新時にキャッシュメモリを利用して更新データ、更新前データ及び更新前パリティからシステムのオーバヘッドを招くことなく効率的に更新パリティを生成することができる。
【０１３１】
また本発明によれば、排他的論理和演算に使用するデータの数（参照データ数）を要求アドレスの所定フィールドで指定可能とすることで、ディスクアレイの構成ディスクドライブ数が異なるなどの要因で排他的論理和演算に使用するデータの数が変化しても、その数に応じて、常にキャッシュメモリを利用して一括してパリティデータを生成することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図。
【図２】図１中のディスクキャッシュ部２４の構成を示すブロック図。
【図３】同第１の実施形態で適用される要求アドレスのフォーマットを示す図。
【図４】同第１の実施形態においてパリティ生成に使用する任意のブロック内のデータを指定するためのハードウェア構成を示すブロック図。
【図５】同第１の実施形態におけるパリティ生成動作時のデータの流れを説明するための図。
【図６】本発明の第２の実施形態で適用される要求アドレスのフォーマットを示す図。
【図７】同第２の実施形態においてパリティ生成に使用する任意のブロック内のデータを指定するためのハードウェア構成を示すブロック図。
【図８】本発明の第３の実施形態においてパリティ生成に使用する任意のブロック内のデータを指定するためのハードウェア構成を示すブロック図。
【図９】本発明の第４の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図。
【図１０】本発明の第５の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図。
【図１１】本発明の第６の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図。
【図１２】本発明の第７の実施形態においてパリティ生成に使用する任意のブロック内のデータを指定するためのキャッシュコントローラ２４３内のハードウェア構成を示すブロック図。
【図１３】同第７の実施形態で適用されるアドレスマップの一例を示す図。
【図１４】本発明の第８の実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図。
【図１５】同第８の実施形態においてパリティ生成に使用する任意のブロック内のデータを指定するためのキャッシュコントローラ２４３内のハードウェア構成を示すブロック図。
【符号の説明】
１０，１０-0，１０-1…ディスクアレイ
１１-0〜１１-5…ディスクドライブ
２０，９０，１００，１１０，１４０…ディスクアレイ制御装置
２１…主制御部
２２…外部入出力部
２３-0〜２３-5…ディスク入出力部（ディスクドライブ入出力手段）
２４，２４-0，２４-1…ディスクキャッシュ部
２５…ＰＣＩバス（標準バス）
３１…モード指定フィールド
３２，３５…レジスタ指定フィールド
３３…キャッシュ内アドレス指定フィールド
３４…要素数指定フィールド
４１-0，４１-1，７１-0，７１-1，８１-0，８１-1…設定レジスタ部
４２，７２，８２，１２２…パリティ生成制御回路
１４１…内部バス
２４０…キャッシュメモリ
２４１…ＦＩＦＯメモリ
２４２…ＰＣＩバスブリッジ（キャッシュ制御手段）
２４３…キャッシュコントローラ（キャッシュ制御手段）
２４４…ＥＸ−ＯＲ（排他的論理和回路）
２４５…ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ、キャッシュ制御手段）
【図１】
0004057718.tif 000002
【図２】
0004057718.tif 000003
【図３】
0004057718.tif 000004
【図４】
0004057718.tif 000005
【図５】
0004057718.tif 000006
【図６】
0004057718.tif 000007
【図７】
0004057718.tif 000008
【図８】
0004057718.tif 000009
【図９】
0004057718.tif 000010
【図１０】
0004057718.tif 000011
【図１１】
0004057718.tif 000012
【図１２】
0004057718.tif 000013
【図１３】
0004057718.tif 000014
【図１４】
0004057718.tif 000015
【図１５】
0004057718.tif 000016