(57)【特許請求の範囲】
【請求項１】
外部のホスト装置との間の入出力を司る外部入出力手段と、前記ホスト装置からのデータストリームが一定サイズで分割されて分散配置されるＮ個のディスクドライブを含むディスクドライブ群との接続を可能とするディスクドライブ入出力手段と、前記ディスクドライブと前記ホスト装置との間の転送データを一時記憶するためのキャッシュメモリを有するディスクキャッシュ手段と、各部を制御する主制御手段とを備えたディスクアレイ制御装置であって、
前記ディスクキャッシュ手段は、２つのデータ間でビット単位の排他的論理和演算を行う排他的論理和回路と、前記キャッシュメモリに対するリード／ライトデータ及び前記排他的論理和回路の排他的論理和演算結果のいずれか一方を一時記憶するための先入れ先出し方式の記憶手段と、前記キャッシュメモリに対するアクセス制御、前記記憶手段に対するアクセス制御、及び前記排他的論理和回路の制御を含む前記ディスクキャッシュ手段全体の制御を司るディスクキャッシュ制御手段とを備え、
前記ディスクキャッシュ制御手段は、前記主制御手段から前記キャッシュメモリへのデータ書き込みを指示する特定のライトコマンドが与えられた場合に、前記Ｎ個のディスクドライブの対応領域に分散配置される連続するＮ個のライトデータを、当該コマンドに付されているアドレス情報で指定された前記キャッシュメモリの領域に順番に書き込み、１番目のデータの書き込み時には、当該データを前記記憶手段にも書き込み、２番目乃至Ｎ番目のデータの書き込み時には、当該データとその時点において前記記憶手段に書き込まれているデータとの排他的論理和演算を前記排他的論理和回路により行わせて、その排他的論理和演算結果を前記記憶手段に再度書き込むシーケンス処理を行い、前記Ｎ番目のデータの書き込み時に、前記記憶手段内に前記１番目乃至Ｎ番目のデータのパリティデータが書き込まれ、当該記憶手段に書き込まれたパリティデータが前記ディスクドライブ群のうちの１つのディスクドライブに書き込まれるように制御すると共に、前記キャッシュメモリに書き込まれた前記Ｎ個のライトデータの前記ディスクドライブ群のうちのＮ個のディスクドライブへの書き込みが、前記パリティデータの書き込みよりも後に実行されるように制御する
ことを特徴とするディスクアレイ制御装置。
【請求項２】
前記ディスクキャッシュ制御手段は、前記主制御手段から書き換え可能なプログラマブルなロジックデバイスによって構成されており、電源投入時に、目的とするディスクアレイの構成を前記ロジックデバイスにより変更可能としたことを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項３】
前記キャッシュメモリへのアクセス時に前記パリティデータの生成を行うか否かが、前記キャッシュメモリへのアクセスのために前記主制御手段から前記ディスクキャッシュ制御手段に渡されるアドレス情報の所定部分により指定されるようにしたことを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項４】
前記外部入力手段、前記ディスクドライブ入出力手段、前記ディスクキャッシュ手段及び前記主制御手段は標準バスにより相互接続されており、
前記ディスクキャッシュ制御手段は、前記キャッシュメモリを前記標準バスの手順に従ってアクセスするように構成されていることを特徴とする請求項３記載のディスクアレイ制御装置。
【請求項５】
前記ディスクキャッシュ手段は、前記主制御手段によりアクセス可能な、前記ロジックデバイスに対する制御レジスタ回路を備えており、
前記主制御手段は前記制御レジスタ回路を介して前記ロジックデバイスに前記Ｎの値を通知することを特徴とする請求項２記載のディスクアレイ制御装置。
【請求項６】
前記ディスクドライブ群内の前記Ｎ個のディスクドライブとは別のディスクドライブ、または前記Ｎ個のディスクドライブには、前記Ｎ個のディスクドライブに分散配置されているデータのパリティデータが格納、または分散配置されており、
前記ディスクキャッシュ制御手段は、前記Ｎ個のディスクドライブの１つが故障した場合に、当該ディスクドライブのデータを復元する動作を、前記主制御手段からの指示により、前記ディスクドライブ群に格納されているＮ個のデータ及びそのパリティデータのうち、故障したディスクドライブ内のデータを除くＮ個のデータを前記ディスクキャッシュ手段内で利用して、当該Ｎ個のデータの排他的論理和演算結果を求めることで、前記故障したディスクドライブ内のデータを復元することを特徴とする請求項１記載のディスクアレイ制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のディスクドライブを備えたディスクアレイ装置に係り、特にディスクドライブとホスト装置との間の転送データを一時記憶しておくキャッシュメモリを備え、ディスクドライブのアクセスを制御するディスクアレイ制御装置に関する。
【０００２】
【従来の技術】
ディスクアレイ装置は、複数のディスクドライブを備え、これら複数のディスクドライブ（に装着されている記憶媒体）にホスト装置からのデータを分散して格納することで、並列アクセスを可能としてアクセスの高速化を図ったものである。
【０００３】
ディスクアレイ装置には、ディスクドライブをアクセス制御するディスクアレイ制御装置が設けられている。このディスクアレイ制御装置は、ホスト装置からの転送データ（書き込みデータ）に対して、データ訂正情報としてのパリティデータを生成し、上記複数のディスクドライブのうちのいずれかに書き込むようになっている。これにより、複数のディスクドライブのうちの１台が故障した場合にも、このパリティデータと残りのディスクドライブのデータを用いることで、故障したディスクドライブのデータを復元することができる。なお、パリティデータの書き込み先ディスクは、データの分散配置方法によって異なり、（ＲＡＩＤ３と称される方法に代表されるように）固定の場合と、（ＲＡＩＤ５と称される方法に代表されるように）順次切り換えられる場合とがある。
【０００４】
さてディスクアレイ制御装置は、ディスクドライブとホスト装置との間の転送データを一時記憶しておくキャッシュメモリ（ディスクキャッシュ）を有しているのが一般的であり、当該キャッシュメモリに目的データが存在する場合には、（機械的なアクセス動作を伴う）ディスクドライブをアクセスすることなく、当該キャッシュメモリから目的データを高速アクセスできる。
【０００５】
【発明が解決しようとする課題】
上記した従来のディスクアレイ制御装置において、ホスト装置からの書き込みデータに対してパリティデータを生成して当該パリティデータをディスクドライブに保存しておき、そのパリティデータを用いて元のデータを復元するためには、制御装置内のファームウェアプログラムによって行うか、制御装置自体をパリティデータ生成並びにデータ復元の専用のハードウェア装置として構成する必要があった。
【０００６】
しかしながら、ファームウェアで行うには処理速度の問題があり、専用のハードウェアでは回路が複雑化する問題があった。
本発明は上記事情を考慮してなされたものでその目的は、キャッシュメモリを有するディスクキャッシュ手段側に、キャッシュメモリアクセス時のリード／ライトデータを利用してパリティデータを生成する或いはデータを復元する機能を持たせることで、構成の簡略化、処理の高速化及び制御の容易化が図れるディスクアレイ制御装置を提供することにある。
【０００７】
【課題を解決するための手段】
本発明のディスク制御装置は、外部のホスト装置との間の入出力を司る外部入出力手段と、ホスト装置からのデータストリームが一定サイズで分割されて分散配置されるＮ個のディスクドライブを含むディスクドライブ群との接続を可能とするディスクドライブ入出力手段と、上記ディスクドライブとホスト装置との間の転送データを一時記憶するためのキャッシュメモリを有するディスクキャッシュ手段と、各部を制御する主制御手段とを具備しており、上記ディスクキャッシュ手段には、２つのデータ間でビット単位の排他的論理和演算を行う排他的論理和回路と、上記キャッシュメモリに対するリード／ライトデータ及び上記排他的論理和回路の排他的論理和演算結果のいずれか一方を一時記憶するための先入れ先出し方式の記憶手段と、上記キャッシュメモリに対するアクセス制御、上記記憶手段に対するアクセス制御、及び上記排他的論理和回路の制御を含むディスクキャッシュ手段全体の制御を司るディスクキャッシュ制御手段とを設け、このディスクキャッシュ制御手段により、次のような制御を行うことで、即ち主制御手段からの指示によるキャッシュメモリからのデータ読み出し時に、当該キャッシュメモリから読み出されたデータを上記記憶手段に書き込む動作、または当該キャッシュメモリから読み出されたデータとその時点において上記記憶手段に書き込まれているデータとの排他的論理和演算を上記排他的論理和回路により行わせ、その排他的論理和演算結果を上記記憶手段に再度書き込む、もしくは上記キャッシュメモリの読み出しデータとして出力する動作の制御を行うことで、上記キャッシュメモリに書き込まれているデータを利用して上記Ｎ個のディスクドライブの対応領域に分散配置されるデータの排他的論理和演算結果であるパリティデータを生成して出力することを特徴とする。
【０００８】
また本発明は、上記ディスクキャッシュ制御手段に、次のような制御を行う機能、即ち上記主制御手段からの指示によるキャッシュメモリへのデータ書き込み時に、当該キャッシュメモリに書き込まれるデータを上記記憶手段にも書き込む動作、または当該キャッシュメモリに書き込まれるデータとその時点において上記記憶手段に書き込まれているデータとの排他的論理和演算を上記排他的論理和回路により行わせ、その排他的論理和演算結果を上記記憶手段に再度書き込む動作を制御する機能を持たせることで、上記キャッシュメモリに書き込まれるデータを利用して上記Ｎ個のディスクドライブの対応領域に分散配置されるデータの排他的論理和演算結果であるパリティデータを生成して出力することを特徴とする。
【０００９】
このような構成のディスクアレイ制御装置においては、ディスクキャッシュ手段側に、キャッシュメモリアクセス時のリード／ライトデータを利用してパリティデータを生成する機能を持たせることで、構成の簡略化、処理の高速化及び制御の容易化が図れる。
【００１０】
また本発明は、上記ディスクキャッシュ制御手段に、次のようなシーケンス処理を行う機能、即ち上記キャッシュメモリからのデータ読み出しを指示する特定のリードコマンドが主制御手段から与えられた場合に、当該コマンドに付されているアドレス情報で指定されたデータを含む、上記Ｎ個のディスクドライブの対応領域に分散配置されるＮ個のデータを順番に読み出し、１番目に読み出したデータについてはそのまま上記記憶手段に書き込み、２番目乃至Ｎ−１番目に読み出したデータについては当該データとその時点において上記記憶手段に書き込まれているデータとの排他的論理和演算を上記排他的論理和回路により行わせて、その排他的論理和演算結果を上記記憶手段に再度書き込み、Ｎ番目に読み出したデータについては当該データとその時点において上記記憶手段に書き込まれているデータとの排他的論理和演算を上記排他的論理和回路により行わせて、その排他的論理和演算結果である上記１番目乃至Ｎ番目のデータのパリティデータを生成し、当該パリティデータを上記特定リードコマンドに対するキャッシュメモリの読み出しデータとして出力するシーケンス処理を行う機能を持たせたことを特徴とする。
【００１１】
また本発明は、上記ディスクキャッシュ制御手段に、次のようなシーケンス処理を行う機能、即ち上記主制御手段から上記キャッシュメモリへのデータ書き込みを指示する特定のライトコマンドが与えられた場合に、上記Ｎ個のディスクドライブの対応領域に分散配置される連続するＮ個のライトデータを、当該コマンドに付されているアドレス情報で指定されたキャッシュメモリの領域に順番に書き込み、１番目のデータの書き込み時には、当該データを上記記憶手段にも書き込み、２番目乃至Ｎ番目のデータの書き込み時には、当該データとその時点において上記記憶手段に書き込まれているデータとの排他的論理和演算を上記排他的論理和回路により行わせて、その排他的論理和演算結果を上記記憶手段に再度書き込むシーケンス処理を行う機能を持たせ、Ｎ番目のデータの書き込み時に、上記記憶手段内に１番目乃至Ｎ番目のデータのパリティデータが書き込まれるようにしたことを特徴とする。
【００１２】
このようなディスクアレイ制御装置においては、主制御手段からディスクキャッシュ手段内のディスクキャッシュ制御手段に対して、特定のリードコマンドまたはライトコマンドが与えられるだけで、当該コマンドで指定されたキャッシュデータリード動作またはキャッシュデータライト動作に伴うパリティ生成のためのシーケンス処理が行われるため、処理の一層の高速化が可能となる。特に、キャッシュデータライト動作に伴うパリティ生成では、キャッシュメモリに書き込むと同時にパリティデータが生成できるため、最も高速化が図れる。
【００１３】
また本発明は、上記ディスクキャッシュ制御手段を上記主制御手段から書き換え可能なプログラマブルなロジックデバイスによって構成し、電源投入時に、目的とするディスクアレイの構成を上記ロジックデバイスにより変更可能としたことを特徴とする。
【００１４】
このような構成においては、不必要に大きなデバイスを使用することなく、装置の小形化、高速化のために機能が削減されるのを防ぐことが可能となる。
また本発明は、キャッシュメモリへのアクセス時にパリティデータの生成を行うか否かが、キャッシュメモリへのアクセスのために上記主制御手段からディスクキャッシュ制御手段に渡されるアドレス情報の所定部分により指定されるようにしたことを特徴とする。
【００１５】
このような構成においては、キャッシュメモリへのアクセスに際し、アドレス情報の所定部分だけで通常のキャッシュリード／ライトを行うか、キャッシュリード／ライトデータを利用したパリティ生成を行うかを切り換え指定できる。
【００１６】
また本発明は、上記外部入力手段、ディスクドライブ入出力手段、ディスクキャッシュ手段及び主制御手段が標準バスにより相互接続される構成とすると共に、上記ディスクキャッシュ制御手段が上記キャッシュメモリを上記標準バスの手順に従ってアクセスする構成としたことを特徴とする。
【００１７】
このように、ディスクキャッシュ手段を標準バスに接続可能な独立した構成として、ディスクドライブ群を持つ既存のシステムの標準バスに接続することで、制御プログラムを提供するのみで、特別なハードウェアの変更を加えることなく、信頼性の高いディスクサブシステムを構築することができる。
【００１８】
また本発明は、上記主制御手段から上記ロジックデバイスに対し、当該主制御手段によりアクセス可能な制御レジスタ回路を介して上記Ｎの値（データストリームの分割数）を通知する構成としたことを特徴とする。
【００１９】
このような構成においては、システムの動作中にも、主制御手段から制御レジスタ回路を介してディスクアレイの構成を自由に変更することができる。
また本発明は、上記Ｎ個のディスクドライブとは別のディスクドライブが、このＮ個のディスクドライブに分散配置されているデータのパリティデータを格納する専用のディスク（パリティデータ格納ディスク）として割り当てられているディスクアレイ構成、或いは上記Ｎ個のディスクドライブがパリティデータ格納ディスクを兼ねているディスクアレイ構成において、上記のキャッシュリード／ライト時のパリティ生成をデータ復元に適用し、上記ディスクキャッシュ制御手段に次の機能、即ち上記Ｎ個のディスクドライブの１つが故障した場合に、当該ディスクドライブのデータを復元する動作を、上記主制御手段からの指示により、上記ディスクドライブ群に格納されているＮ個のデータ及びそのパリティデータのうち、故障したディスクドライブ内のデータを除くＮ個のデータを上記ディスクキャッシュ手段内で利用して、当該Ｎ個のデータの排他的論理和演算結果を求めることで、上記故障したディスクドライブ内のデータを復元する機能を持たせたことを特徴とする。この復元されたデータを、ディスクドライブ群内のバックアップ用のディスクドライブ（ホットスペアディスク）に格納すれば、故障したディスクドライブに代えて用いることができる。
このような構成においては、キャッシュメモリアクセス時のリード／ライトデータを利用して障害ディスクのデータを復元することができる。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
図１は本発明の一実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図である。
【００２１】
図１のディスクアレイ装置は、複数、例えば６台のディスクドライブ１０-0〜１０-6と、このディスクドライブ１０-0〜１０-6をアクセス制御するディスクアレイ制御装置２０とから構成されている。
【００２２】
ディスクドライブ１０-0〜１０-5は例えばハードディスクドライブ（ＨＤＤ）であり、ディスクドライブ１０-0〜１０-3の４台がデータ格納用（データディスク用）に、ディスクドライブ１０-4がデータ訂正情報としてのパリティデータ格納用（パリティディスク用）に、そしてディスクドライブ１０-5が（ホットスペアディスクと称される）バックアップディスク用に割り当てられているものとする。
【００２３】
ここではデータストリームを一定サイズＳ、例えば４Ｋバイト（Ｓ＝４Ｋバイト）の塊（チャンク）を単位に分割してディスクドライブ１０-0〜１０-3に分散配置する形態が適用されるものとする。この場合、データストリームをサイズＳ（＝４Ｋバイト）のチャンクＡ0 ，Ｂ0 ，Ｃ0 ，Ｄ0 ，Ａ1 ，Ｂ1 ，Ｃ1 ，Ｄ1 …に分割するものとすると、チャンクＡi （ｉ＝０，１…）はディスクドライブ１０-0に、チャンクＢi はディスクドライブ１０-1に、チャンクＣi はディスクドライブ１０-2に、そしてチャンクＤi はディスクドライブ１０-3に、それぞれ配置されることになる。また、チャンクＡi 〜Ｄi のバリデータＰi はディスクドライブ１０-4に配置される。これらＡi ，Ｂi ，Ｃi ，Ｄi ，Ｐi は、ディスクドライブ１０-0，１０-1，１０-2，１０-3，１０-4の同一ディスク領域に配置されるのが一般的である。ここで、Ａi 〜Ｄi のチャンク数４をデータストリームに対する分割数と呼ぶ。
【００２４】
ディスクアレイ制御装置２０は、制御部２１、外部入出力部２２、ディスク入出力部２３-0〜２３-5及びディスクキャッシュ部２４を備えている。この制御部２１、外部入出力部２２、ディスク入出力部２３-0〜２３-5及びディスクキャッシュ部２４は、ローカルバス、例えば標準バスとして知られているＰＣＩバス（Peripheral Component Interconnect Bus ）２５により相互接続されている。
【００２５】
制御部２１は、マイクロプロセッサ２１１及び（ＲＯＭ或いはＲＡＭ等で構成される）ファームウェアメモリ（Ｆ／Ｗメモリ）２１２を有し、Ｆ／Ｗメモリ２１２に格納されているＦ／Ｗプログラム（ファームウェアプログラム）に従って、外部入出力部２２、ディスク入出力部２３-0〜２３-5及びディスクキャッシュ部２４の制御を行うと共に、これらの間で行われるデータ転送を制御する。制御部２１は、条件指定プログラミング等のためのインタフェース（制御部インタフェース）２１３を有しており、このインタフェース２１３を通して、後述するＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）２４４の動作回路（論理）を決定する。
【００２６】
外部入出力部２２は、外部のホスト装置（図示せず）と接続されており、ＰＣＩバス２５との間でデータ転送を行うための手順等の制御を司る。具体的には、外部入出力部２２は、ホスト装置からのデータをＰＣＩバス２５を介してディスクキャッシュ部２４、ディスク入出力部２３-0〜２３-5へ転送する制御、更にはディスクキャッシュ部２４、ディスク入出力部２３-0〜２３-5からのデータをホスト装置へ転送する制御を行う。
【００２７】
ディスク入出力部２３-0〜２３-5は、ディスクドライブ１０-0〜１０-5と接続されており、ＰＣＩバス２５とディスクドライブ１０-0〜１０-5との間のデータ転送を行うための手順等の制御を司る。具体的には、ＰＣＩバス２５に接続されている外部入出力部２２及びディスクキャッシュ部２４とディスクドライブ１０-0〜１０-5との間のデータ転送を制御する。
【００２８】
ディスクキャッシュ部２４は、図２にその詳細を示すように、キャッシュメモリ２４０、先入れ先出し方式のバッファ（ＦＩＦＯメモリ）２４１、ＰＣＩバス２５との間のバスブリッジ回路をなすＰＣＩバスブリッジ２４２、キャッシュメモリ２４０及びＦＩＦＯメモリ２４１を制御するコントロールロジック２４３、排他的論理和回路（ＥＸ−ＯＲ）２４５、双方向バッファＩＣ２４６、アドレスバッファＩＣ２４７、バッファＩＣ２４８ａ，２４８ｂ及び制御レジスタ２４９から構成される。
【００２９】
キャッシュメモリ２４０は、ホスト装置からの書き込みデータを一時記憶しておくためのもので、例えばＤＲＡＭ群から構成される。キャッシュメモリ２４０は、図３に示すように、データストリームの分割サイズＳでＤＡ，ＤＢ，ＤＣ，ＤＤ…のように複数の分割領域に分割して管理される。分割領域ＤＡ，ＤＢ，ＤＣ，ＤＤは、上記チャンクＡi ，Ｂi ，Ｃi ，Ｄi を一時記憶するのに用いられる。キャッシュメモリ２４０とＰＣＩバス２５との間のデータ転送は、制御部２１からのコマンドにより、ＰＣＩバス２５の手順に従って例えば３２バイト単位で行われるものとする。
【００３０】
ＦＩＦＯメモリ２４１は、キャッシュメモリ２４０またはＰＣＩバス２５からのデータを一時記憶すると共に、当該ＦＩＦＯメモリ２４１自身からのデータとキャッシュメモリ２４０またはＰＣＩバス２５からのデータをもとに（排他的論理和回路２４５により）生成されるパリティデータを一時記憶するのに用いられる。ＦＩＦＯメモリ２４１の容量は例えばキャッシュメモリ２４０とＰＣＩバス２５との間の１回のデータ転送サイズに一致する３２バイトである。
【００３１】
ＰＣＩバスブリッジ２４２は、ＰＣＩバス２５との間のデータの授受と、ＰＣＩバス２５からのコマンドの受け取りを行う。またＰＣＩバスブリッジ２４２は、受け取ったコマンドに従って、キャッシュメモリ２４０とＰＣＩバス２５との間のデータバス２４０１経由での（方向を考慮した）データ転送、キャッシュメモリ２４０またはＰＣＩバス２５からＦＩＦＯメモリ２４１（に対応するバッファＩＣ２４８ａ）または排他的論理和回路２４５へのデータ転送、ＦＩＦＯメモリ２４１からキャッシュメモリ２４０への転送、排他的論理和回路２４５（に対応するバッファＩＣ２４８ｂ）からＰＣＩバス２５への転送を適宜行う。
【００３２】
コントロールロジック２４３は、ＰＣＩバスブリッジ２４２が受信したコマンドに従ってキャッシュメモリ２４０へのアクセスがパリティ生成を伴わないノーマルアクセスモードか、或いはパリティ生成を伴うパリティ生成モードかを判定し、その判定結果に応じてキャッシュメモリ２４０へのリード／ライトタイミング制御等を行う。またコントロールロジック２４３は、受け取ったコマンドからキャッシュメモリ２４０に対するアドレス情報を読み取り、キャッシュメモリ２４０（とアドレスバス２４０２を介して接続されているアドレスバッファＩＣ２４７）へのアドレス出力を行う。
【００３３】
本実施形態において、上記ＰＣＩバスブリッジ２４２及びコントロールロジック２４３は、ディスクキャッシュ部２４における制御手段（ディスクキャッシュ制御手段）を構成しており、プログラマブルなロジックデバイスとしての例えばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）２４４を用いて実現される。このＦＰＧＡ２４４は、制御部２１のインタフェース２１３から制御レジスタ２４９を介して内部の論理がローディング（プログラミング）されることによって、その動作回路が決定される。
【００３４】
排他的論理和回路２４５は、データバス２４０１を介して送られるデータとＦＩＦＯメモリ２４１から読み出されるデータとの排他的論理和をとってパリティデータを生成する。
【００３５】
次に本実施形態における基本的な動作を、ホスト装置からのディスクリード要求に対するディスクリード動作と、ホスト装置からのディスクライト要求に対するディスクライト動作について順に説明する。
【００３６】
（１）ディスクリード動作
まず、ホスト装置からディスクリード要求が出され、当該ディスクリード要求が外部入出力部２２、ＰＣＩバス２５を介して制御部２１に伝達されたものとする。制御部２１は、ホスト装置からのディスクリード要求を受け取ると、要求されたデータがディスクキャッシュ部２４のキャッシュメモリ２４０上に存在するか否かを判定する。この判定の仕方については、従来からよく知られており、且つ本願発明に直接関係しないため、説明を省略する。
【００３７】
制御部２１は、要求されたデータがキャッシュメモリ２４０に存在する場合には、キャッシュメモリ２４０からのデータリードを指示するコマンド（キャッシュデータリードコマンド）を、ＰＣＩバス２５経由でディスクキャッシュ部２４内のＰＣＩバスブリッジ２４２に送出する。このキャッシュデータリードコマンドには、例えば３２ビットのアドレス情報が付されている。
【００３８】
本実施形態において、３２ビットのアドレス情報で示されるアドレス空間の、例えば００００００００ｈ〜０００１００００ｈ（末尾のｈは１６進表現であることを示す）の範囲はファームウェア（Ｆ／Ｗ）プログラム用に割り当てられ、１０００００００ｈ〜１ＦＦＦＦＦＦＦｈと、２０００００００ｈ〜２ＦＦＦＦＦＦＦｈの範囲はいずれもキャッシュメモリ２４０用に割り当てられる。ここで、１０００００００ｈ〜１ＦＦＦＦＦＦＦｈと２０００００００ｈ〜２ＦＦＦＦＦＦＦｈの例えば下位２８ビットによりキャッシュメモリ２４０のアドレスが示される。そして本実施形態では、制御部２１からＰＣＩバスブリッジ２４２に送出されるコマンドに付されている３２ビットのアドレス情報の下位２８ビットにより、目的データ（３２バイト）の先頭キャッシュメモリアドレスが示される。また、上位４ビットの値によって、キャッシュメモリ２４０を対象とする通常のデータリード／ライト（ここではデータリード）を行うノーマルアクセスモードであるか、或いはキャッシュメモリ２４０を対象とするデータリード／ライトを行うと共に、そのリード／ライトデータを利用してパリティデータを生成するパリティ生成モードであるかが示されるようになっている。ここでは、“０００１”（１ｈ）でノーマルアクセスモードが、００１０”（２ｈ）でパリティ生成モードが示される。
【００３９】
ＰＣＩバスブリッジ２４２は、制御部２１からのキャッシュデータリードコマンドをＰＣＩバス２５を通して受け取ると、当該コマンドからデータの流れる方向を決定すると共に、当該コマンドをコントロールロジック２４３に送る。
【００４０】
コントロールロジック２４３は、ＰＣＩバスブリッジ２４２からキャッシュデータリードコマンドを受け取ると、当該コマンドに付されているアドレス情報の上位４ビットを参照し、“０００１”であるならばノーマルアクセスモードであり、００１０”であるならばパリティ生成モードであるものと判断する。ここでは、ノーマルアクセスモードが指定されているものとすると、コントロールロジック２４３は、ノーマルアクセスモードでのキャッシュデータリードのための制御を次のように行う。
【００４１】
コントロールロジック２４３は、ＰＣＩバスブリッジ２４２から受け取ったキャッシュデータリードコマンドに従って、データバス２４０１上の双方向バッファＩＣ２４６を制御する。またコントロールロジック２４３は、アドレスバス２４０２上のアドレスバッファＩＣ２４７を制御し、上記キャッシュデータリードコマンドに付されているアドレス情報（の下位２８ビット）から得られるキャッシュメモリアドレス（先頭キャッシュメモリアドレス）の設定と、キャッシュメモリ２４０に対するデータリードのための制御信号の生成出力を行う。
【００４２】
すると、キャッシュメモリ２４０から指定のキャッシュメモリアドレスで示される３２バイトのデータが（例えば４バイト単位で）読み出される。この３２バイトのデータは双方向バッファＩＣ２４６、データバス２４０１を介してＰＣＩバスブリッジ２４２に（４バイト単位で）導かれ、当該ＰＣＩバスブリッジ２４２によりＰＣＩバス２５を介して外部入出力部２２に転送される。そして外部入出力部２２に転送された３２バイトデータは、当該外部入出力部２２によりホスト装置に転送される。
【００４３】
制御部２１は、ＰＣＩバスブリッジ２４２へのノーマルアクセスモード指定のキャッシュデータリードコマンドの出力を、アドレス情報（の下位２８ビット）を切り換えながら、ホスト装置から要求されたデータが全てリードされるまで繰り返す。
【００４４】
一方、ホスト装置から要求されたデータがキャッシュメモリ２４０に存在しない場合には、制御部２１はディスク入出力部２３-0〜２３-3を制御することで、要求されたデータをディスクドライブ１０-0〜１０-3からＰＣＩバス２５に読み出してディスクキャッシュ部２４のキャッシュメモリ２４０に格納しながら、そのデータを外部入出力部２２に転送する。この外部入出力部２２に転送されたデータは、当該外部入出力部２２によりホスト装置に転送される。
【００４５】
（２）ディスクライト動作
次に、ホスト装置からディスクライト要求が出され、当該ディスクライト要求が外部入出力部２２、ＰＣＩバス２５を介して制御部２１に伝達されたものとする。この場合、ホスト装置からはライトデータ（のストリーム）が転送される。
【００４６】
制御部２１は、ホスト装置からのディスクライト要求を受け取ると、キャッシュメモリ２４０へのデータライトを指示するコマンド（キャッシュデータライトコマンド）を、ＰＣＩバス２５経由でディスクキャッシュ部２４内のＰＣＩバスブリッジ２４２に送出する。このコマンドには３２ビットのアドレス情報が付されている。このアドレス情報の上位４ビットはノーマルアクセスモードを示す“０００１”となっており、下位２８ビットはキャッシュメモリアドレスを示している。
【００４７】
コントロールロジック２４３は、制御部２１からＰＣＩバスブリッジ２４２に送られたキャッシュデータライトコマンドに付されているアドレス情報の上位４ビットが“０００１”の場合、ノーマルアクセスモードでのキャッシュデータライトのための制御を行う。これにより、ホスト装置から外部入出力部２２を介してＰＣＩバス２５に転送されるデータ（ここでは、ライト用のデータストリームの先頭の３２バイトデータ）が、ＰＣＩバスブリッジ２４２によりデータバス２４０１、双方向バッファＩＣ２４６を介してキャッシュメモリ２４０に送られて、上記キャッシュデータライトコマンドに付されているアドレス情報の下位２８ビットの示すキャッシュメモリ２４０内領域に書き込まれる。
【００４８】
制御部２１は、ＰＣＩバスブリッジ２４２へのノーマルアクセスモード指定のキャッシュデータライトコマンドの出力を、アドレス情報（の下位２８ビット）を切り換えながら、ホスト装置から要求されたデータが３２バイト単位で全てキャッシュメモリ２４０に書き込まれるまで繰り返す。
【００４９】
制御部２１は、ホスト装置から要求されたデータが全てキャッシュメモリ２４０に書き込まれると、そのキャッシュメモリ２４０に書き込まれたデータをノーマルアクセスモード指定のキャッシュデータリードコマンドを用いて逐次読み出してディスク入出力部２３-0〜２３-3の１つに転送する制御を行うことで、対応するディスクドライブに格納させる。
【００５０】
制御部２１は、以上のノーマルアクセスモード指定のキャッシュデータリードコマンドを用いた制御を、アドレス情報（の下位２８ビット）を切り換えながら、ホスト装置からのディスクライト要求に従ってキャッシュメモリ２４０に書き込んだデータがディスクドライブ１０-0〜１０-3に全て格納されるまで繰り返す。
【００５１】
さて、ディスクドライブ１０-0〜１０-3へのディスクライト動作が行われた場合、ディスクドライブ１０-4に格納されている対応するパリティデータを更新する必要がある。この場合、制御部２１は、パリティ生成モード指定のキャッシュデータリードコマンドを用いてキャッシュメモリ２４０からデータを読み出してパリティデータを生成する制御を行う。このキャッシュデータリード時のパリティ生成動作について図３及び図４を参照して説明する。
【００５２】
（３）キャッシュデータリード時のパリティ生成動作
今、ホスト装置からのディスクライト要求に従う一連の上記（２）のディスクライト動作により、要求されたライトデータのストリームがキャッシュメモリ２４０に書き込まれると共に、このキャッシュメモリ２４０に書き込まれたライトデータがディスクドライブ１０-0〜１０-3に分散配置されたものとする。ここでは、サイズＳ（＝４Ｋバイト）のデータ（チャンク）Ａi ，Ｂi ，Ｃi ，Ｄi がキャッシュメモリ２４０のサイズＳ（＝４Ｋバイト）の領域ＤＡ，ＤＢ，ＤＣ，ＤＤに書き込まれると共に、ディスクドライブ１０-0，１０-1，１０-2，１０-3に分散配置されたものとする。チャンクＡi は３２バイトデータａi1，ａi2，ａi3…ａinの、チャンクＢi は３２バイトデータｂi1，ｂi2，ｂi3…ｂinの、チャンクＣi は３２バイトデータｃi1，ｃi2，ｃi3…ｃinの、そしてチャンクＤi は３２バイトデータｄi1，ｄi2，ｄi3…ｄinの、それぞれ集合である。
【００５３】
制御部２１はまず、データａi1，ｂi1，ｃi1，ｄi1をリードしてそのパリティデータｐi1を生成するために、パリティ生成モード指定のキャッシュデータリードコマンド、即ち上位４ビットが“００１０”のアドレス情報が付されたキャッシュデータリードコマンドをＰＣＩバス２５を介してＰＣＩバスブリッジ２４２に送出する。このアドレス情報の下位２８ビットは、データａi1，ｂi1，ｃi1，ｄi1のうちの例えばデータａi1が書き込まれているキャッシュメモリ２４０のアドレスを示す。
【００５４】
ＰＣＩバスブリッジ２４２は、制御部２１からのキャッシュデータリードコマンドをＰＣＩバス２５を通して受け取ると、当該コマンドからデータの流れる方向を決定すると共に、当該コマンドをコントロールロジック２４３に送る。
【００５５】
コントロールロジック２４３は、ＰＣＩバスブリッジ２４２からキャッシュデータリードコマンドを受け取ると、当該コマンドに付されているアドレス情報の上位４ビットを参照し、この例のように“００１０”の場合には、パリティ生成モード指定のキャッシュデータリードコマンドであると判断し、そのためのシーケンス処理を次のように実行する。
【００５６】
まずコントロールロジック２４３は、受け取ったコマンドに付されているアドレス情報（の下位２８ビット）から得られるキャッシュメモリアドレス（先頭キャッシュメモリアドレス）の設定と、キャッシュメモリ２４０に対するデータリードのための制御信号の生成出力を行うことで、目的とする３２バイトのデータａi1（チャンクＡi 中の先頭の３２バイトデータ）をキャッシュメモリ２４０から双方向バッファＩＣ２４６を介してデータバス２４０１に（４バイト単位で）読み出し、図４において符号４１で示すように、ＰＣＩバスブリッジ２４２（及びバッファＩＣ２４８ａ）を介してＦＩＦＯメモリ２４１に書き込む。
【００５７】
次にコントロールロジック２４３は、キャッシュメモリ２４０に対するアドレスを上記一定サイズＳ（＝４Ｋバイト）だけ自動的に加算して、パリティ生成の対象となる４組の３２バイトデータａi1，ｂi1，ｃi1，ｄi1中のデータｂi1のアドレスを生成する。そしてコントロールロジックは、この生成したアドレスを用いて、データｂi1（チャンクＢi 中の先頭の３２バイトデータ）をキャッシュメモリ２４０から双方向バッファＩＣ２４６、データバス２４０１を介して、図４において符号４２で示すように排他的論理和回路２４５側に読み出す。
【００５８】
同時にコントロールロジック２４３は、前回ＦＩＦＯメモリ２４１に書き込んだデータａi1を図４において符号４３で示すように排他的論理和回路２４５側に読み出す。
【００５９】
排他的論理和回路２４５は、ＦＩＦＯメモリ２４１から読み出されたデータａi1とキャッシュメモリ２４０から読み出されたデータｂi1とのビット単位の排他的論理和をとる。この排他的論理和回路２４５の（３２バイトの）排他的論理和演算結果は、コントロールロジック２４３の制御により、図４において符号４４で示すように（バッファＩＣ２４８ｂ，２４８ａを介して）ＦＩＦＯメモリ２４１に（４バイト単位で）書き込まれる。
【００６０】
次にコントロールロジック２４３は、前回と同様にキャッシュメモリ２４０に対するアドレスを上記一定サイズＳだけ自動的に加算して、今度はデータｃi1のアドレスを生成することにより、当該データｃi1（チャンクＣi 中の先頭の３２バイトデータ）をキャッシュメモリ２４０から双方向バッファＩＣ２４６、データバス２４０１を介して、図４において符号４２で示すように排他的論理和回路２４５側に読み出す。
【００６１】
同時にコントロールロジック２４３は、前回ＦＩＦＯメモリ２４１に書き込んだデータａi1，ｂi1の排他的論理和結果を図４において符号４３で示すように排他的論理和回路２４５側に読み出す。
【００６２】
排他的論理和回路２４５は、ＦＩＦＯメモリ２４１から読み出されたデータ（データａi1，ｂi1の排他的論理和結果）とキャッシュメモリ２４０から読み出されたデータｃi1とのビット単位の排他的論理和をとる。この排他的論理和回路２４５の（３２バイトの）排他的論理和結果、即ちデータａi1〜ｃi1の排他的論理和結果は、コントロールロジック２４３の制御により、図４において符号４４で示すように（バッファＩＣ２４８ｂ，２４８ａを介して）ＦＩＦＯメモリ２４１に書き込まれる。
【００６３】
次にコントロールロジック２４３は、前回と同様にキャッシュメモリ２４０に対するアドレスを上記一定サイズＳだけ自動的に加算して、今度は４番目のデータｄi1のアドレスを生成することにより、当該データｄi1（チャンクＤi 中の先頭の３２バイトデータ）をキャッシュメモリ２４０から双方向バッファＩＣ２４６、データバス２４０１を介して、図４において符号４５で示すように排他的論理和回路２４５側に読み出す。
【００６４】
同時にコントロールロジック２４３は、前回ＦＩＦＯメモリ２４１に書き込んだデータａi1〜ｃi1の排他的論理和結果の排他的論理和結果を図４において符号４６で示すように排他的論理和回路２４５側に読み出す。
【００６５】
排他的論理和回路２４５は、ＦＩＦＯメモリ２４１から読み出されたデータ（データａi1〜ｃi1の排他的論理和結果）とキャッシュメモリ２４０から読み出されたデータｄi1とのビット単位の排他的論理和をとる。この排他的論理和回路２４５の（３２バイトの）排他的論理和結果は、データａi1〜ｄi1（チャンクＡi 〜Ｄi 中の先頭の３２バイトデータａi1〜ｄi1）のパリティデータｐi1であり、制御部２１からの（パリティ生成モード指定の）キャッシュデータリードコマンドで指定された（キャッシュメモリ２４０からの）リードデータであるかのように、図４において符号４７で示すように（バッファＩＣ２４８ｂ及び）ＰＣＩバスブリッジ２４２を介してＰＣＩバス２５に送出される。このＰＣＩバス２５に送出されたデータａi1〜ｄi1の排他的論理和結果であるパリティデータｐi1は、制御部２１の制御のもとで、ディスク入出力部２３-4により（パリティディスク用に割り当てられている）ディスクドライブ１０-4に格納される。
【００６６】
次に制御部２１は、チャンクＡi 〜Ｄi 中の２番目の３２バイトデータａi2〜ｄi2  をキャッシュメモリ２４０から順次リードしてそのパリティデータｐi2を生成するためのパリティ生成モード指定のキャッシュデータリードコマンドをＰＣＩバス２５を介してＰＣＩバスブリッジ２４２に送出する。このアドレス情報の上位４ビットには“００１０”が設定されており、下位２８ビットは、データａi2，ｂi2，ｃi2，ｄi2のうちのデータａi2が書き込まれているキャッシュメモリ２４０のアドレスを示す。
【００６７】
ディスクキャッシュ部２４では、制御部２１からの２回目のパリティ生成モード指定のキャッシュデータリードコマンド出力に応じて、前記した１回目のパリティ生成モード指定のキャッシュデータリードコマンド出力の場合と同様のシーケンス処理が行われ、キャッシュメモリ２４０からデータａi2，ｂi2，ｃi2，ｄi2が順次リードされて、その排他的論理和がとられ、パリティデータｐi2が生成される。これは、チャンクＡi ，Ｂi ，Ｃi ，Ｄi 中の後続のデータａi2，ｂi2，ｃi2，ｄi2〜ａin，ｂin，ｃin，ｄinについても同様に処理される。
【００６８】
このような、チャンクＡi ，Ｂi ，Ｃi ，Ｄi 中のａi1，ｂi1，ｃi1，ｄi1〜ａin，ｂin，ｃin，ｄinの全ての組についてパリティデータ生成が行われるのは、チャンクＡi ，Ｂi ，Ｃi ，Ｄi の少なくとも１つが全て更新された（ディスクライトされた）場合であり、チャンクＡi ，Ｂi ，Ｃi ，Ｄi 中の一部のデータだけが更新された場合には、該当するデータ組についてだけ上記の処理によるパリティデータ生成が行われる。
【００６９】
なお、前記実施形態では、コントロールロジック２４３にシーケンス処理の機能を持たせ、制御部２１から１つのパリティ生成モード指定のキャッシュデータリードコマンドが与えられるだけで、当該コマンドで指定されるデータａijの他に、当該データと組をなす他のデータｂij，ｃij，ｄijも、キャッシュメモリ２４０上のデータａij，ｂij，ｃij，ｄij相互の配置間隔Ｓをもとにキャッシュメモリアドレスの自動更新を行うことで、キャッシュメモリ２４０から順次リードしてパリティデータｐijを生成する場合について説明したが、これに限るものではない。
【００７０】
例えば、制御部２１からディスクキャッシュ部２４に対して、各データａij，ｂij，ｃij，ｄij毎のリードのためのパリティ生成モード指定のキャッシュデータリードコマンドを逐次発行する構成としても構わない。この場合、制御部２１からパリティ生成モード指定のキャッシュデータリードコマンドが与えられる毎に、当該コマンドで指定されるデータがキャッシュメモリ２４０から読み出され、そのままＦＩＦＯメモリ２４１に格納されるか（１回目のパリティ生成モード指定のキャッシュデータリードコマンドの場合）、その時点においてＦＩＦＯメモリ２４１に格納されているデータと排他的論理和がとられてＦＩＦＯメモリ２４１に格納されるか（２回目及び３回目のパリティ生成モード指定のキャッシュデータリードコマンドの場合）、その時点においてＦＩＦＯメモリ２４１に格納されているデータと排他的論理和がとられて、パリティデータが生成されて、ディスクドライブ１０-4に転送される（最後である４回目のパリティ生成モード指定のキャッシュデータリードコマンドの場合）。
【００７１】
このように、制御部２１からディスクキャッシュ部２４に対して各データａij，ｂij，ｃij，ｄij別に逐次コマンドを発行する方式では、ディスクキャッシュ部２４（内のコントロールロジック２４３）での（キャッシュメモリアドレスの自動更新を含む）シーケンス処理機構を必要としないことから、ハードウェア量は少なくて済むものの、前記実施形態におけるように１回のパリティ生成モード指定のキャッシュデータリードコマンドの発行だけでディスクキャッシュ部２４でのパリティ生成が自動的に行えるものに比べて、動作速度は低下する。
【００７２】
また前記実施形態では、ホスト装置から要求されたデータが全てキャッシュメモリ２４０に書き込まれ、そのキャッシュメモリ２４０に書き込まれたデータがディスクドライブ１０-0〜１０-3に書き込まれた後に、ディスクキャッシュ部２４でのパリティ生成が行われる場合（キャッシュデータリード時のパリティ生成動作）について説明したが、キャッシュメモリ２４０へのデータライト時に、そのライトデータを利用して並行してパリティデータを生成することも可能である。
【００７３】
（４）キャッシュデータライト時のパリティ生成動作
そこで、キャッシュデータライト時のパリティ生成動作について図５を参照して説明する。
【００７４】
まず本実施形態では、データストリームをディスクドライブ１０-0〜１０-3に分散配置する際の分割サイズＳがキャッシュメモリ２４０とＰＣＩバス２５との間の１回のデータ転送サイズである３２バイトに一致することを前提としている。
【００７５】
今、ホスト装置からのディスクライト要求に伴うライトデータ（データストリーム）が、外部入出力部２２を介してＰＣＩバス２５に連続して転送されるものとする。ここでは、説明を簡略化するために、上記ライトデータのサイズが１２８バイトであり、それを３２バイト単位で分割した各チャンクを先頭から順にａi ，ｂi ，ｃi ，ｄi であるとする。
【００７６】
制御部２１はまず、１番目のデータａi をキャッシュメモリ２４０に書き込むと同時にＦＩＦＯメモリ２４１にも書き込むために、パリティ生成モード指定のキャッシュデータライトコマンド、即ち上位４ビットが“００１０”のアドレス情報が付されたキャッシュデータライトコマンドをＰＣＩバス２５を介してＰＣＩバスブリッジ２４２に送出する。このアドレス情報の下位２８ビットは、データａi1の書き込み先となるキャッシュメモリ２４０のアドレスを示す。
【００７７】
ＰＣＩバスブリッジ２４２は、制御部２１からのパリティ生成モード指定のキャッシュデータライトコマンドをＰＣＩバス２５を通して受け取ると、当該コマンドからデータの流れる方向を決定すると共に、当該コマンドをコントロールロジック２４３に送る。
【００７８】
コントロールロジック２４３は、ＰＣＩバスブリッジ２４２から１番目のパリティモード指定のキャッシュデータライトコマンドを受け取ると、まずＰＣＩバス２５上に連続して転送されるライトデータ（データストリーム）中の先頭（１番目）の３２バイトデータａi をＰＣＩバスブリッジ２４２から（データバス２４０１、双方向バッファＩＣ２４６を介して）キャッシュメモリ２４０の指定アドレスに書き込むと共に、図５において符号５１で示すように、ＰＣＩバスブリッジ２４２から（バッファＩＣ２４８ａ）を介してＦＩＦＯメモリ２４１に書き込む。
【００７９】
次に制御部２１は、２番目の３２バイトデータｂi をキャッシュメモリ２４０に書き込むと同時に対応するデータをＦＩＦＯメモリ２４１に書き込むために、パリティ生成モード指定のキャッシュデータライトコマンドをＰＣＩバス２５を介してＰＣＩバスブリッジ２４２に送出する。
【００８０】
コントロールロジック２４３は、制御部２１からＰＣＩバスブリッジ２４２に送出された２番目のパリティ生成モード指定のキャッシュデータライトコマンドを受け取ると、ＰＣＩバス２５上に連続して転送されるライトデータ中の２番目の３２バイトデータｂi をＰＣＩバスブリッジ２４２からキャッシュメモリ２４０の指定アドレスに書き込むと共に、図５において符号５２で示すように、ＰＣＩバスブリッジ２４２を介して排他的論理和回路２４５側に伝達させる。同時にコントロールロジック２４３は、前回ＦＩＦＯメモリ２４１に書き込んだデータａi を図５において符号５３で示すように排他的論理和回路２４５側に読み出す。
【００８１】
排他的論理和回路２４５は、ＦＩＦＯメモリ２４１から読み出されたデータａi とＰＣＩバス２５からＰＣＩバスブリッジ２４２を介して転送されるデータｂi とのビット単位の排他的論理和をとる。この排他的論理和回路２４５の（３２バイトの）排他的論理和結果は、コントロールロジック２４３の制御により、図５において符号５４で示すように（バッファＩＣ２４８ｂ，２４８ａを介して）ＦＩＦＯメモリ２４１に書き込まれる。
【００８２】
次に制御部２１は、３番目の３２バイトデータｃi をキャッシュメモリ２４０に書き込むと同時に対応するデータをＦＩＦＯメモリ２４１に書き込むために、パリティ生成モード指定のキャッシュデータライトコマンドをＰＣＩバス２５を介してＰＣＩバスブリッジ２４２に送出する。
【００８３】
コントロールロジック２４３は、制御部２１からＰＣＩバスブリッジ２４２に送出された３番目のパリティ生成モード指定のキャッシュデータライトコマンドを受け取ると、ＰＣＩバス２５上に連続して転送されるライトデータ中の３番目の３２バイトデータｃi をＰＣＩバスブリッジ２４２からキャッシュメモリ２４０の指定アドレスに書き込むと共に、図５において符号５２で示すように、ＰＣＩバスブリッジ２４２を介して排他的論理和回路２４５側に伝達させる。同時にコントロールロジック２４３は、前回ＦＩＦＯメモリ２４１に書き込んだ１番目のデータａi と２番目のデータｂi との排他的論理和結果を図５において符号５３で示すように排他的論理和回路２４５側に読み出す。
【００８４】
排他的論理和回路２４５は、ＦＩＦＯメモリ２４１から読み出されたデータａi ，ｂi の排他的論理和結果とＰＣＩバス２５からＰＣＩバスブリッジ２４２を介して転送されるデータｃi とのビット単位の排他的論理和をとる。この排他的論理和回路２４５の（３２バイトの）排他的論理和結果は、コントロールロジック２４３の制御により、図５において符号５４で示すように（バッファＩＣ２４８ｂ，２４８ａを介して）ＦＩＦＯメモリ２４１に書き込まれる。
【００８５】
次に制御部２１は、４番目の３２バイトデータｄi をキャッシュメモリ２４０に書き込むと同時に対応するデータをＦＩＦＯメモリ２４１に書き込むために、パリティ生成モード指定のキャッシュデータライトコマンドをＰＣＩバス２５を介してＰＣＩバスブリッジ２４２に送出する。
【００８６】
コントロールロジック２４３は、制御部２１からＰＣＩバスブリッジ２４２に送出された４番目のパリティ生成モード指定のキャッシュデータライトコマンドを受け取ると、ＰＣＩバス２５上に連続して転送されるライトデータ中の４番目の３２バイトデータｄi をＰＣＩバスブリッジ２４２からキャッシュメモリ２４０の指定アドレスに書き込むと共に、図５において符号５２で示すように、ＰＣＩバスブリッジ２４２を介して排他的論理和回路２４５側に伝達させる。同時にコントロールロジック２４３は、前回ＦＩＦＯメモリ２４１に書き込んだデータａi 〜ｃi の排他的論理和結果を図５において符号５３で示すように排他的論理和回路２４５側に読み出す。
【００８７】
排他的論理和回路２４５は、ＦＩＦＯメモリ２４１から読み出されたデータａi 〜ｃi の排他的論理和結果とＰＣＩバス２５からＰＣＩバスブリッジ２４２を介して転送されるデータｄi とのビット単位の排他的論理和をとる。この排他的論理和回路２４５の（３２バイトの）排他的論理和結果、即ちデータａi ，ｂi ，ｃi ，ｄi の排他的論理和結果を、図５において符号５４で示すようにＦＩＦＯメモリ２４１に書き込む。これによりＦＩＦＯメモリ２４１内に、データａi 〜ｄi のパリティデータｐi が生成されたことになる。このＦＩＦＯメモリ２４１内に生成されたデータａi 〜ｄi のパリティデータｐi は、図５において符号５５，５５ａで示すようにＰＣＩバスブリッジ２４２側に読み出されて、当該ＰＣＩバスブリッジ２４２からＰＣＩバス２５を介してディスク入出力部２３-4に転送され、（パリティディスク用に割り当てられている）ディスクドライブ１０-4に格納される。
【００８８】
その後、制御部２１は、キャッシュメモリ２４０に書き込まれたホスト装置からのディスクライトデータをノーマルアクセスモード指定のキャッシュデータリードコマンドを用いて逐次読み出してディスク入出力部２３-0〜２３-3の１つに転送する制御を行うことで、対応するディスクドライブに格納させる。
【００８９】
このキャッシュデータライト時のパリティ生成手法は、キャッシュメモリ２４０にホスト装置からのデータを書き込むと同時に、パリティデータを生成できるため、前記（３）の手法に比べて動作速度は向上する。但し、ハードウェア量は若干多くなる。
【００９０】
以上、ホスト装置からのディスクライト要求に応じてキャッシュメモリ２４０に書き込まれたライトデータ或いはキャッシュメモリ２４０に書き込まれるライトデータを利用して、ディスクキャッシュ部２４にてキャッシュデータリード時或いはキャッシュデータライト時のパリティ生成を行う場合について説明したが、このパリティ生成技術は、ディスクドライブ１０-0〜１０-3のいずれか１つに障害が発生した際に、残りの正常なディスクドライブとパリティディスク用のディスクドライブ１０-4のデータから、障害ディスクのデータを復元してバックアップ（ホットスペアディスク）用のディスクドライブ１０-5に格納するデータ復元処理にも応用可能である。
【００９１】
（５）ディスクキャッシュ部２４でのデータ復元
そこで、ディスクキャッシュ部２４でのデータ復元について、ディスクドライブ１０-0〜１０-3のうちの１つ、例えばディスクドライブ１０-3が故障したために、ディスクドライブ１０-0〜１０-2のデータとディスクドライブ１０-4のデータを用いて、そのデータのキャッシュメモリ２４０へのライト時にデータ復元を行う場合を例に説明する。なお、このデータ復元処理では、ディスクドライブかからのデータの読み出し順が管理できるため、前記（４）のキャッシュデータライト時のパリティ生成動作とは異なって、データストリームの分割サイズＳがキャッシュメモリ２４０とＰＣＩバス２５との間の１回のデータ転送サイズに一致する必要はない。
【００９２】
今、制御部２１は、ディスクドライブ１０-0〜１０-2に格納されているチャンクＡi 〜Ｃi のｊ番目の３２バイトデータａij〜ｃijと、ディスクドライブ１０-4に格納されている、チャンクＡi 〜Ｄi のｊ番目の３２バイトデータａij〜ｄijのパリティデータｐijとから、チャンクＤi のｊ番目の３２バイトデータｄijを復元しようとしているものとする。
【００９３】
この場合、制御部２１は、ディスク入出力部２３-0〜２３-2，２３-4を順に制御して、対応するディスクドライブ１０-0〜１０-2，１０-4からＰＣＩバス２５にデータａij〜ｃij，ｐijを順に読み出させると共に、このデータａij〜ｃij，ｐijをライトデータとするパリティ生成指定のキャッシュデータライトコマンドをディスクキャッシュ部２４に順次発行する。これにより、前記したホスト装置からのライトデータをもとにパリティデータを生成する場合と同様にして、（データａij〜ｃij，ｐijをキャッシュメモリ２４０に書き込むと共に）ＦＩＦＯメモリ２４１内にデータａij〜ｃij，ｐijの排他的論理和結果を生成することができる。ここで、ディスクドライブ１０-4からのデータｐijは、障害発生ディスクドライブ１０-3からのデータとして扱われ、データｄijが読み込まれた際に書き込まれるキャッシュメモリ２４０内領域に書き込まれる。
【００９４】
明らかなように、上記したデータａij〜ｃij，ｐijの排他的論理和結果はデータｄijに一致する。即ち本実施形態では、ディスクドライブ１０-0〜１０-2，１０-4からキャッシュメモリ２４０へのキャッシュデータライト時に、そのライトデータａij〜ｃij，ｐijからデータｄijを復元することができる。このＦＩＦＯメモリ２４１内に復元されたデータｄijは、図５において符号５５，５５ａで示すようにＰＣＩバスブリッジ２４２側に読み出されて、当該ＰＣＩバスブリッジ２４２からＰＣＩバス２５を介してディスク入出力部２３-4に転送され、バックアップ用のディスクドライブ１０-4内の（データａij〜ｃij，ｐija に対応する）領域に格納される。また、ＦＩＦＯメモリ２４１からＰＣＩバスブリッジ２４２側に読み出されたデータｄijは、図５において符号５５ｂで示すようにキャッシュメモリ２４０に転送されて、先に書き込まれているデータｐijが当該データｄijに書き換えられる。
【００９５】
なお、上記したデータｄijの復元を、パリティ生成指定のキャッシュデータリードコマンドを用いて実現することも可能である。ここでは、ディスクドライブ１０-0〜１０-2に格納されているチャンクＡi 〜Ｃi と、ディスクドライブ１０-4に格納されている、チャンクＡi 〜Ｄi のパリティデータＰi を順次読み出して（ノーマルアクセスモード指定のキャッシュデータライトコマンド列を用いて）キャッシュメモリ２４０に書き込んだ後、パリティ生成指定のキャッシュデータリードコマンド列を用いてキャッシュメモリ２４０からチャンクＡi 〜Ｄi の３２バイトデータａij〜ｃij，ｐij（ｊ＝０〜ｎ）を順に読み出させることで、データａij〜ｃij，ｐijの排他的論理和結果、即ち復元したデータｄijを取得することになる。
【００９６】
さて、図１及び図２の構成において、（電源投入時における）システムのリセット、若しくは外部入出力部２２より得たコマンド等によってディスクアレイの構成を変える必要が生じた場合には、制御部２１（内のマイクロプロセッサ２１１）は、Ｆ／Ｗメモリ２１２に実装されたデータを選択し、制御部インタフェース２１３からディスクキャッシュ部２４の制御レジスタ２４９を介してＦＰＧＡ２４４へのローディングを行う。これにより、目的とするディスクアレイの構成（ＲＡＩＤの形態）を簡単に変更することができる。このように本実施形態においては、ディスクキャッシュ部２４のＰＣＩバスブリッジ２４２及びコントロールロジック２４３をＦＰＧＡ２４４を用いて実現することで、不必要に大きなデバイスを使用することなく、装置の小形化、高速化のために機能が削減されるのを防ぐことが可能となる。
【００９７】
また、本実施形態において、ＰＣＩバス２５の手順に従ってアクセスされるキャッシュメモリ２４０を有するディスクキャッシュ部２４は、ＰＣＩバス２５に直接接続可能なようにカード化されている。このように、ディスクキャッシュ部２４を独立したカード構成として、複数のディスクドライブを持つ既存のシステムのＰＣＩバス２５（標準バス）に接続可能なようにすることで、制御プログラムを提供するのみで、特別なハードウェアの変更を加えることなく、信頼性の高いディスクサブシステムを構築することができる。
【００９８】
さて、前記したディスクキャッシュ部２４におけるキャッシュデータリード時のパリティ生成、或いはキャッシュデータライト時のパリティ生成のための一連のシーケンス処理では、制御部２１からのパリティ生成モード指定のキャッシュデータリードコマンド、或いはパリティ生成モード指定のキャッシュデータライトコマンドに応じて、排他的論理和演算が繰り返し行われる。この排他的論理和演算を繰り返し行うデータの数は、データストリームの分割数Ｎに一致する。そこで本実施形態では、この分割数Ｎ（ここでは４）を、制御部２１（内のマイクロプロセッサ２１１）から（当該マイクロプロセッサ２１１によりアクセス可能な）制御レジスタ２４９を介してコントロールロジック２４３に通知するようにしている。したがって、制御部２１（内のマイクロプロセッサ２１１）から制御レジスタ２４９を介してディスクキャッシュ部２４のコントロールロジック２４３に分割数Ｎを通知して、当該コントロールロジック２４３でのシーケンス処理を変更することによって、システムの動作中にも、ディスクアレイの構成を自由に変更することができる。
【００９９】
以上は、パリティデータが専用のディスクドライブ（１０-4）に格納される（ＲＡＩＤ３に代表される）ディスクアレイ構成のディスクアレイ装置に適用した場合について説明したが、本発明は、データと同様にパリティデータについても、各データディスク（ディスクドライブ１０-0〜１０-3）に分散配置される（ＲＡＩＤ５に代表される）ディスクアレイ構成のディスクアレイ装置にも適用可能である。
【０１００】
【発明の効果】
以上詳述したように本発明によれば、キャッシュメモリを有するディスクキャッシュ手段側に、キャッシュメモリアクセス時のリード／ライトデータを利用してパリティデータを生成する或いはデータを復元する機能を持たせることで、構成の簡略化、処理の高速化及び制御の容易化が実現できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るディスクアレイ制御装置を備えたディスクアレイ装置の構成を示すブロック図。
【図２】図１中のディスクキャッシュ部２４の詳細構成を示すブロック図。
【図３】同実施形態において、ディスクキャッシュ部２４上に予め定められた間隔Ｓで並んでいる４個のデータからパリティデータを生成する手順を説明するための図。
【図４】同実施形態におけるキャッシュデータリード時のパリティデータ生成の流れを説明するための図。
【図５】同実施形態におけるキャッシュデータライト時のパリティデータ生成の流れを説明するための図。
【符号の説明】
１０-0〜１０-5…ディスクドライブ、
２０…ディスクアレイ制御装置、
２１…制御部（主制御手段）、
２２…外部入出力部、
２３-0〜２３5 …ディスク入出力部、
２４…ディスクキャッシュ部、
２５…ＰＣＩバス（標準バス）、
２４０…キャッシュメモリ、
２４１…ＦＩＦＯメモリ（先入れ先出し方式の記憶手段）、
２４２…ＰＣＩバスブリッジ（ディスクキャッシュ制御手段）、
２４３…コントロールロジック（ディスクキャッシュ制御手段）、
２４４…ＦＰＧＡ（フィールドプログラマブルゲートアレイ、プログラマブルなロジックデバイス、ディスクキャッシュ制御手段）、
２４５…排他的論理和回路、
２４９…制御レジスタ。
【図１】
0003779385.tif 000002
【図２】
0003779385.tif 000003
【図３】
0003779385.tif 000004
【図４】
0003779385.tif 000005
【図５】
0003779385.tif 000006