(57)【要約】【課題】メモリのアドレスの障害によるデイスクリプタによる誤ったデータ転送を防止する。【解決手段】データ処理ユニット（３４）が、ディスクリプタを作成するときに、ディスクリプタ内の予め決められた一部に、そのディスクリプタを格納するポインタをメモリ（３８）に書き込み、ＤＭＡエンジン（４０）がメモリ（３８）からディスクリプタを読み出すときに，ＤＭＡエンジン（４０）が、その値が正しいかどうかを確認して、メモリ（３８）のデータのＤＭＡ転送の可否を判定する。ディスクリプタの書き込み、読み出しのどちらの場合においても、アドレス故障に起因するデータの破壊を防ぐことができる。【選択図】図６
2006178795.tif 000002
【特許請求の範囲】
【請求項１】
データ処理ユニットが書き込んだＤＭＡ転送内容を示すディスクリプタを読み出し、メモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するＤＭＡ回路において、
前記メモリに前記データ処理ユニットが書き込んだ複数のディスクリプタのトップポインタとボトムポインタを格納する第１及び第２のレジスタと、
前記ボトムポインタが示す前記メモリのディスクリプタを読み出し、解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、
前記読み出したディスクリプタに含まれるディスクリプタポインタと前記ボトムポインタとを比較し、前記転送回路の転送動作を制御するための比較回路とを有する
ことを特徴とするＤＭＡ回路。
【請求項２】
前記転送回路は、アドレス線とデータ線とが分離された前記メモリをアクセスする
ことを特徴とする請求項１のＤＭＡ回路。
【請求項３】
前記転送回路は、前記比較回路の比較結果が良好でない時は、前記前記メモリの前記ディスクリプタで指定されたアドレスのデータの読み出し動作を中止する
ことを特徴とする請求項１のＤＭＡ回路。
【請求項４】
複数のディスク装置と、
上位からの要求に応じて、前記ディスク装置のデータのリード／ライトを行う制御ユニットとを有し、
前記制御ユニットは、
データ処理ユニットと、
前記ディスク装置のためのデータを格納するキャッシュメモリと、
前記データ処理ユニットが書き込んだＤＭＡ転送内容を示すディスクリプタを読み出し、前記キャッシュメモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するＤＭＡ回路とを有し、
前記ＤＭＡ回路は、
前記キャッシュメモリに前記データ処理ユニットが書き込んだ複数のディスクリプタのトップポインタとボトムポインタを格納する第１及び第２のレジスタと、
前記ボトムポインタが示す前記キャッシュメモリのディスクリプタを読み出し、解析して、前記キャッシュメモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、
前記読み出したディスクリプタに含まれるディスクリプタポインタと前記ボトムポインタとを比較し、前記転送回路の転送動作を制御するための比較回路とを有する
ことを特徴とするディスクアレイ装置。
【請求項５】
前記転送回路は、アドレス線とデータ線とが分離された前記キャッシュメモリをアクセスする
ことを特徴とする請求項４のディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部の指示に応じて、メモリを直接アクセスして、データ転送するＤＭＡ回路及びこれを用いたディスクアレイ装置に関し、特に、コンピュータの外部記憶装置として用いられるディスクアレイ装置内部でのデータの正当性を保証するのに好適なＤＭＡ回路及びこれを用いたディスクアレイ装置に関する。
【背景技術】
【０００２】
近年、様々なデータが電子化されコンピュータ上で扱われるようになるに従い、コンピュータとは独立して大量のデータを効率良く、転送することが要求されている。このため、データを格納するメモリを、外部指示に応じて、独立してアクセスし、データ転送する技術、即ち、ＤＭＡ転送が盛んに利用されている。
【０００３】
例えば、大量のデータを安全に格納することのできるディスクアレイ装置では、ホストコンピュータのアクセスにより、大量のデータをリード又はライトするため、メモリのデータを、ホストコンピュータや内部回路に転送する。
【０００４】
図９及び図１０は、従来技術の説明図である。図９に示すように、キャッシュメモリ１０４に、ＣＰＵ１００が、データを書き込み、ＤＭＡ回路（エンジン）１０２が、キャッシュメモリ１０４の書き込みデータを読出し、転送する。ＣＰＵ１００は、ホスト等の外部からのデータを受け取ると、ディスクリプタを作成し、キャッシュメモリ１０４内に設けた制御領域（ディスクリプタ領域という）１０６に、書き込む。
【０００５】
ディスクリプタは、ＣＰＵ１００が、ＤＭＡエンジン１０２に与えるための命令であり、転送したいデータのキャッシュメモリ１０４でのアドレスとデータバイト数、データ転送先（メモリ）のアドレスを含む。例えば、図１０のディスクリプタのフォーマットに示すように、４ワード（１ワード、６４ビット）のコマンドで構成される。１ワード目は、コマンドフィールドｃｍｄ、割り込み制御フィールド（例えば、「１」なら、本ディスクリプタの終了時に割り込みをあげる等）、ＢＣＣチエックモードＢＣＣ、転送先ノードＴｇｔ，転送先（Ｗｒｉｔｅ  Ｓｉｄｅ）メモリアドレスＤＤＡで構成される。
【０００６】
２ワード目は、転送バイト数ＳＩＺＥ（例えば、最大１Ｍｂｙｔｅ，最小８ｂｙｔｅ），転送元（Ｒｅａｄ  Ｓｉｄｅ）メモリアドレスＳＤＡからなる。３ワード目は、チェック用Ｂｌｏｃｋ−ＩＤ初期値Ｃｈｅｃｋ  ＢＫＩＤ、４ワード目は、生成用（Ｒｅｐｌａｃｅ）Ｂｌｏｃｋ−ＩＤ初期値よりなる。
【０００７】
ＣＰＵ１００は、キャッシュメモリ１０４にデータを書き込む度に、図１０のようなディスクリプタを作成し、キャッシュメモリ１０４内のディスクリプタ領域１０６に書き込む。ディスクリプタ領域１０６は、ディスクリプタ・サイズのＮ倍のメモリ領域が割り当てられる。
【０００８】
更に、ＣＰＵ１００は、ＤＭＡ起動時に、ＤＭＡエンジン１０２の持つディスクリプタ・ベースアドレス・レジスタ１１０に，ディスクリプタ領域１０６自体の先頭アドレスを書き込む。これにより、ＤＭＡエンジン１０２は、ディスクリプタが、キャッシュメモリ１０４のどこから、書き込まれるかを知ることができる。
【０００９】
このＤＭＡエンジン１０２は，ディスクリプタ・トップポインタ・レジスタ１１２とディスクリプタ・ボトムポインタ・レジスタ１１４を持つ。これらのレジスタ１１２，１１４は，それぞれ、ＣＰＵ１００がどれだけのディスクリプタをディスクリプタ領域１０６に用意したか、又、ＤＭＡエンジン１０２が、どれだけのディスクリプタの実行を終えたかを示す。即ち、トップレジスタ１１２は、先頭のディスクリプタ（図では、ディスクリプタ＃５），ボトムレジスタ１１４は、最後のディスクリプタ（図では、ディスクリプタ＃１）を示す。
【００１０】
又、ディスクリプタ・ベースアドレス・レジスタ１１０の指すアドレスから、１つのディスクリプタ・サイズのＮ倍までの連続した空間が、ディスクリプタ領域１０６として使用される。図９の例では、ＣＰＵ１００が、＃０−＃５の６個のディスクリプタを作成し、ディスクリプタ領域１０６に格納すると、ＤＭＡエンジン１０２のディスクリプタ・トップポインタ・レジスタ１１２の値を「６」に進める。これによって、ＤＭＡエンジン１０２は，ディスクリプタが用意されたことを知り、ディスクリプタの読み出しを、最後のディスクリプタから順に始める（例えば、特許文献１、２参照）。
【００１１】
即ち、ＤＭＡエンジン１０２は，ディスクリプタ領域１０６のディスクリプタ・ボトムポインタ・レジスタ１１４の示す位置からディスクリプタを読み出し、解析し、指定されたデータ転送を完了すると、ディスクリプタ・ボトムポインタ・レジスタ１１４を「１」進める。例えば、図９では、ディスクリプタ・ボトムポインタ・レジスタ１１４が「１」である場合を示しており、ディスクリプタ＃０がすでに完了したことを示している。
【特許文献１】特開昭６３−２１１０３２号公報（第３図）
【特許文献２】特開２００４−１１０１５９号公報（図１及び図２）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
データ自体には、チェックコードを付加することで保障しており、キャッシュメモリのデータ自身もＥＣＣ（Error Check Code）を持ち、メモリを構成するＤＲＡＭ素子やメモリコントローラとＤＲＡＭ間のデータパスの異常でデータが破壊されたかを検出できる。
【００１３】
このように、ＤＭＡエンジン１０２によるデータ転送動作では、データは、上記のチェックコードとＥＣＣによって保護されるが、ディスクリプタの保護が十分でない。特に、ＤＭＡ転送時のアドレスは、保護されていないので、例えば、メモリコントローラとメモリ間のアドレス線に障害が発生した場合には、ＣＰＵが間違ったアドレスにディスクリプタを書き込んだり、ＤＭＡエンジンが間違ったアドレスからディスクリプタを読み出したりしてしまう可能性がある。
【００１４】
この場合、本来のデータとは異なるデータが、ＤＭＡ転送されるため、結果的に、データが保障されなくなってしまう。
【課題を解決するための手段】
【００１５】
従って、本発明の目的は、ＤＭＡ転送のためのディスクリプタの保護を行い、正確なＤＭＡ転送を行うためのＤＭＡ回路及びこれを用いたディスクアレイ装置を提供することにある。
【００１６】
又、本発明の他の目的は、ＤＭＡ転送のため、間違ったアドレスにディスクリプタを書き込んだり、間違ったアドレスからディスクリプタを読み出したことを検出するためのＤＭＡ回路及びこれを用いたディスクアレイ装置を提供することにある。
【００１７】
更に、本発明の別の目的は、ＤＭＡ転送のためのメモリアクセス時のアドレス線の障害を検出し、間違ったＤＭＡ転送を防止するためのＤＭＡ回路及びこれを用いたディスクアレイ装置を提供することにある。
【００１８】
この目的の達成のため、本発明のＤＭＡ回路は、データ処理ユニットが書き込んだＤＭＡ転送内容を示すディスクリプタを読み出し、メモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するＤＭＡ回路である。そして、ＤＭＡ回路は、前記メモリに前記データ処理ユニットが書き込んだ複数のディスクリプタのトップポインタとボトムポインタを格納する第１及び第２のレジスタと、前記ボトムポインタが示す前記メモリのディスクリプタを読み出し、解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、前記読み出したディスクリプタに含まれるディスクリプタポインタと前記ボトムポインタとを比較し、前記転送回路の転送動作を制御するための比較回路とを有する。
【００１９】
又、本発明のディスクアレイ装置は、複数のディスク装置と、上位からの要求に応じて、前記ディスク装置のデータのリード／ライトを行う制御ユニットとを有する。そして、前記制御ユニットは、データ処理ユニットと、前記ディスク装置のためのデータを格納するキャッシュメモリと、前記データ処理ユニットが書き込んだＤＭＡ転送内容を示すディスクリプタを読み出し、前記キャッシュメモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するＤＭＡ回路とを有する。更に、前記ＤＭＡ回路は、前記キャッシュメモリに前記データ処理ユニットが書き込んだ複数のディスクリプタのトップポインタとボトムポインタを格納する第１及び第２のレジスタと、前記ボトムポインタが示す前記キャッシュメモリのディスクリプタを読み出し、解析して、前記キャッシュメモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、前記読み出したディスクリプタに含まれるディスクリプタポインタと前記ボトムポインタとを比較し、前記転送回路の転送動作を制御するための比較回路とを有する。
【００２０】
又、本発明では、好ましくは、前記転送回路は、アドレス線とデータ線とが分離された前記メモリをアクセスする。
【００２１】
又、本発明では、好ましくは、前記転送回路は、前記比較回路の比較結果が良好でない時は、前記前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し動作を中止する。
【００２２】
又、本発明では、好ましくは、前記転送回路は、１の前記ディスクリプタの読出し、解析によるデータ転送を完了した後に、前記ボトムポインタを格納する第２のレジスタを更新する。
【００２３】
又、本発明では、好ましくは、前記第１のレジスタのトップポインタと前記第２のレジスタのボトムポインタとを比較する第２の比較回路を有し、前記転送回路は、前記第２の比較回路の比較結果により、指定されたＤＭＡ転送を終了する。
【００２４】
又、本発明では、好ましくは、前記読み出したディスクリプタを格納する第３のレジスタを更に有し、前記比較回路は、前記第３のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第２のレジスタの前記ボトムポインタとを比較する。
【００２５】
又、本発明では、好ましくは、前記メモリのディスクリプタ領域のベース位置を示すベースポインタを格納する第４のレジスタを更に有し、前記転送回路は、前記第２のレジスタの前記ボトムポインタと前記第４のレジスタのベースポインタとの加算値が示す前記メモリのディスクリプタを読み出す。
【００２６】
又、本発明では、好ましくは、前記転送回路は、前記メモリにディスクリプタの読出しを要求するディスクリプタ読出し制御回路と、前記メモリに前記読み出したディスクリプタに応じたデータの読出しを要求するデータ転送回路とを有し、前記ディスクリプタ読出し制御回路は、前記比較回路の比較結果に応じて、前記データ転送回路の読出し要求を制御する。
【００２７】
又、本発明では、好ましくは、前記ディスクリプタ読出し制御回路は、前記ボトムポインタが示す前記メモリのディスクリプタを要求し、前記データ転送回路は、前記読み出したディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する。
【００２８】
又、本発明では、好ましくは、前記読み出したディスクリプタを格納する第３のレジスタを更に有し、前記比較回路は、前記第３のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第２のレジスタの前記ボトムポインタとを比較し、前記データ転送回路は、前記ディスクリプタ読み出し回路の転送許可に応じて、前記第３のレジスタの前記ディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する。
【００２９】
又、本発明では、好ましくは、前記制御ユニットは、前記上位と通信するためのチャネルアダプタと、前記ディスク装置のデータの一部を格納するキャッシュメモリを有する制御回路と、前記ディスク装置と通信するデバイスアダプタとを有し、前記ＤＭＡ回路は、前記チャネルアダプタの前記キャッシュメモリと前記制御回路の前記キャッシュメモリとの間で、前記ＤＭＡ転送する。
【００３０】
又、本発明では、好ましくは、前記上位と通信するためのチャネルアダプタと、前記ディスク装置のデータの一部を格納するキャッシュメモリを有する制御回路と、前記ディスク装置と通信するデバイスアダプタとを有する前記制御ユニットを複数有し、前記ＤＭＡ回路は、１の前記制御ユニットの前記キャッシュメモリと他の前記制御ユニットの前記キャッシュメモリとの間で、前記ＤＭＡ転送によるミラーリングする。
【発明の効果】
【００３１】
本発明では、データ処理ユニットが、ディスクリプタを作成するときに、ディスクリプタ内の予め決められた一部に、そのディスクリプタを格納するポインタを書き込み、ＤＭＡエンジンがディスクリプタを読み出すときに，ＤＭＡエンジンが、その値が正しいかどうかを確認する。
【００３２】
これにより、データ処理ユニットがディスクリプタを書き込んだ際に、メモリと間のアドレスに障害が起きた場合や、ＤＭＡエンジンが，ディスクリプタを読み出すときに、アドレスに故障が起きた場合は、ディスクリプタ内のポインタ情報が読み出そうとしたポインタと一致しないために、読み出したディスクリプタを異常なものと検出できる。
【００３３】
このようにして、ディスクリプタの書き込み、読み出しのどちらの場合においても、アドレス故障に起因するデータの破壊を防ぐことができる。特に、メモリがアドレス線とデータ線とが分離されているものの、アドレス障害を検出し、ディスクアレイ装置のミラーリング処理やデータ転送処理での転送データの誤りを防止でき、信頼性の高いシステムを構築できる。
【発明を実施するための最良の形態】
【００３４】
以下、本発明の実施の形態を、ディスクアレイ装置の第１の実施の形態、ＤＭＡ転送回路、ディスクアレイ装置の第２の実施の形態、他の実施の形態の順で説明するが、本発明は、かかる実施の形態に限られず、種々の変形が可能である。
【００３５】
［ディスクアレイ装置の第１の実施の形態］
図１は、本発明のディスクアレイ装置の第１の実施の形態の全体構成図、図２は、図１の主要部の詳細構成図である。
【００３６】
図１に示すように、ディスクアレイ装置は、主要ユニットであるキャッシュメモリとキャッシュ制御部とをそなえるキャッシュマネージャ（図中、ＣＭと表記）１０−１〜１０−４、ホストコンピュータ（図示略）とのインタフェースであるチャネルアダプタ（図中、ＣＡと表記）１１−１〜１１−８、複数のディスクドライブを備えるディスク装置１２−１〜１２−４、及び、このディスク装置１２−１〜１２−４とのインタフェースであるデバイスアダプタ（図中、ＤＡと表記）１３−１〜１３−８を備える。
【００３７】
そして、キャッシュマネージャ１０−１〜１０−４，チャネルアダプタ１１−１から１１−８，及びデバイスアダプタ１３−１〜１３−８間を互いに接続し、これら主要ユニット間のデータ転送と通信を行うルータ（Router；図中、ＲＴと表記）１４−１〜１４−４とが備えられている。
【００３８】
このディスクアレイ装置は、キャッシュマネージャ１０−１〜１０−４が４つそなえられ、これらのキャッシュマネージャ１０−１〜１０−４に対応して４つのルータ１４−１〜１４−４が備えられている。各キャッシュマネージャ１０−１〜１０−４と各ルータ１４−１〜１４−４とは、１対１で相互に接続されている。これによって、複数のキャッシュマネージャ１０−１〜１０−４間の接続が冗長化され、可用性が高められている。
【００３９】
つまり、１つのルータ１４−１の故障した場合にも、別のルータ１４−２，１４−３，１４−４を経由することで、複数のキャッシュマネージャ１０−１〜１０−４間の接続は確保されており、かかる場合にも、ディスクアレイ装置は通常の動作を継続することができる。
【００４０】
また、このディスクアレイ装置は、各ルータ１４−１〜１４−４に、２つのチャネルアダプタ１１−１，１１−８と２つのデバイスアダプタ１３−１〜１３−８とが接続されている。従って、ディスクアレイ装置は、合計８つのチャネルアダプタ１１−１〜１１−８と合計８つのデバイスアダプタ１３−１〜１３−８とを備えている。
【００４１】
これらのチャネルアダプタ１１−１〜１１−８及びデバイスアダプタ１３−１〜１３−８は、キャッシュマネージャ１０−１〜１０−４とルータ１４−１〜１４−４との相互接続により、全てのキャッシュマネージャ１０−１〜１０−４との間で通信が可能になっている。
【００４２】
このチャネルアダプタ１１−１〜１１−４は、例えば、ファイバチャネルやEthernet（登録商標）によって、複数のディスクに保持されたデータを処理対象とするホストコンピュータ（図示略）に接続されている。又、デバイスアダプタ１３−１〜１３−８は、例えば、ファイバチャネルによって、ディスク装置１２の各ディスクドライブに接続されている。
【００４３】
そして、チャネルアダプタ１１−１〜１１−８とキャッシュマネージャ１０−１〜１０−４との間、及びデバイスアダプタ１３−１〜１３−８とキャッシュマネージャ１０−１〜１０−４との間では、ホストコンピュータからのユーザデータだけではなく、ディスクアレイ装置の内部の動作の一貫性を保つための様々な情報のやり取り（例えば、複数のキャッシュメモリ間のデータのミラーリング処理）がなされる。
【００４４】
そのため、キャッシュマネージャ１０−１〜１０−４，チャネルアダプタ１１―１〜１１−８及びデバイスアダプタ１３−１〜１３−８と、ルータ１４−１〜１４−４との間は、ディスクアレイ装置とホストコンピュータとの間や、ディスク装置との間よりも低いレイテンシ（速い応答速度）を実現できるインタフェースを介して接続されている。
【００４５】
例えば、PCI（Peripheral Component Interconnect）バスのように、ＬＳＩ（Large Scale Integration）やプリント基板の間を接続するために設計されたバスによって、キャッシュマネージャ１０−１〜１０−４，チャネルアダプタ１１−１〜１１−８及びデバイスアダプタ１３−１〜１３−８と、ルータ１４−１〜１４−４との間が接続されている。
【００４６】
さらに、ディスク装置１２−１〜１２−４は、２つのファイバチャネルのポートを有し、各ポートには異なるルータ１４−１〜１４−４配下に属するデバイスアダプタ１３−１〜１３−８が接続される。これにより、デバイスアダプタ１３−１〜１３−８の故障時、もしくはルータ１４−１〜１４−４の故障時にも、キャッシュマネージャ１０−１〜１０−４からの接続が切断されないようになっている。
【００４７】
このディスクアレイ装置は、ＲＡＩＤ技術を取り入れることにより、単純なディスク装置に比べて信頼性を高めている。また，一般にキャッシュを内蔵することにより、データへのアクセス時間を短くすることを可能にしている。
【００４８】
ＲＡＩＤ技術としては、複数のディスクに同じデータを記憶させる(RAID-1)、パリティ情報をディスクに分散して記憶させる(RAID-5)などの手法により信頼性を高めている。更に、ディスクアレイ装置の多くは、データに対してチェックコードを付加することにより、更にデータの保証を行い、信頼性を高める手法が採用されている。
【００４９】
例えば、５１２バイトのデータブロックに対して、データから計算されたCRC(Cyclic  Redundancy  Code)コードとデータの位置情報を示すブロックＩＤを付加することにより行われる。このCRCコードとブロックＩＤを合わせて，データブロックに対するチェックコードと言う意味で、ブロックチェックコード(BCC)と呼ぶことがある。
【００５０】
ＣＲＣは、５１２バイトのデータとシードと呼ばれる予め決められた値に対するある計算によって得られる。ブロックＩＤは、最初の５１２バイトデータブロックに対して定義され、次の５１２バイトに対しては、「１」加算された値が、そのデータブロックのブロックＩＤとなる。
【００５１】
又、ＢＣＣは，ＡＮＳＩ(American National Standards Institute)規格でも、２バイトのCRCコードと６バイトのブロックＩＤ(２バイトのMeta Tagと４バイトのReference Tagから構成される)によるチェックコードが，Ｔ１０コードと言う名称で標準化されている。
【００５２】
図２に示すように、チャネルアダプタ１１（１１−１〜１１−８を総称する）は、ホストコンピュータと接続するためのファイバーチャネルチップ３０と、ＤＭＡエンジン４０を有するインタフェース回路３２と、ＣＰＵ３４と、メモリコントローラ３６と、キャッシュメモリ３８とを有する。
【００５３】
ＣＰＵ３４は、ファイバーチャネルチップ３０とメモリコントローラ３６を操作して、後述するホストインタフェース制御や、ホストとのリード／ライト処理を行う。
【００５４】
キャッシュマネージャモジュール１０（１０−１〜１０−４を総称する）は、２つのＣＰＵ２０，２２と、キャッシュメモリ２６と、ブリッジ回路の役目も果たすメモリコントローラ２４とを有し、後述するアクセス処理を行う。ルータ１４（１４−１〜１４−４を総称）は、スイッチ機能を有する他に、ＤＭＡエンジン１５を搭載する。又、ルータ１４は、デバイスアダプタ（ディスクアダプタ）１３（１３−１から１３−８を総称）にも接続される。
【００５５】
キャッシュメモリ３８，２６は、ＤＤＲ（Double Data Rate）のＤＲＡＭ（Dynamic Random Access Memory）で構成され、アドレスバスＡ−ＢＵＳ（例えば、８ビット）でアドレスが指定され、データバスＤ−ＢＵＳで、データをやりとりする。
【００５６】
次に、上述の構成において、ホストコンピュータがデータを格納する（ライトする）時のディスクアレイ装置の動作を説明する。ホストコンピュータがディスクへ格納するデータは、まずチャネルアダプタ１１へ送信される。チャネルアダプタ１１は、ＦＣチップ３０で、受信したデータを、インタフェース回路３２及びメモリコントローラ３６を介し、キャッシュメモリ３８に書き込む。この時、ＣＰＵ３４は、前述のディスクリプタを作成し、キャッシュメモリ３８のディスクリプタ領域に書き込む。
【００５７】
次に、ＣＰＵ３４は、ホストからのデータ受信を完了すると、ＤＭＡエンジン４０を起動し、ＤＭＡエンジン４０が、キャッシュメモリ３８のディスクリプタを読み出し、ディスクリプタから得たアドレスに従い、キャッシュメモリ３８のライトデータ（受信データ）を読み出し、ルータ１４を介し、キャッシュマネージャ１０のメモリコントローラ２４に、データにブロックチェックコード(BCC)を付加した上で、転送する。
【００５８】
メモリコントローラ２４は、ＣＰＵ２０，２２の制御に従い、キャッシュメモリ２６に、転送データを格納する。その後に、ＤＭＡエンジン１５を起動して，図１のように、他のキャッシュマネージャ１０のメモリコントローラ２４へ当該データを転送する。これにより、ミラーリング処理を行う。
【００５９】
ミラーリングが正常に完了すると、キャッシュマネージャ１０は、チャネルアダプタ１１に、通知を行い、チャネルアダプタ１１は、ホストコンピュータにデータの格納を正常に終了したことを知らせる。更に、キャッシュマネージャ１０は、内部シーケンスに従い、デバイスアダプタ１３を介し、図１の磁気ディスク装置１２−１に、キャッシュメモリ２６内のライトデータをライトバックし、磁気ディスク装置１２−１にデータを格納する。
【００６０】
次に、ホストコンピュータからリード要求が発行された場合、まず、ホストコンピュータからのリード要求をチャネルアダプタ１１が受信する。次いで、リード要求を受信したチャネルアダプタ１１は、担当のキャッシュマネージャ１０に対して当該リード要求の対象データの要求を行う。
【００６１】
そして、担当のキャッシュマネージャ１０は、自身のキャッシュメモリ２６内に当該対象データがあれば、当該対象データが保持されたキャッシュメモリ２６のアドレスを、チャネルアダプタ１１、ルータ１４に通知するとともに、ルータ１４のＤＭＡエンジン１５に読出し指示をする。これにより、ルータ１４は、ＤＭＡエンジン１５を起動し、キャッシュメモリ２６の対象データを、読み出し、チャネルアダプタ１１のキャッシュメモリ３８に転送する。その後、ＤＭＡエンジン４０を起動し、キャッシュメモリ３８の対象データを、ホストへ転送する。
【００６２】
一方、担当のキャッシュマネージャ１０のキャッシュメモリ２６内に当該対象データがない場合、デバイスアダプタ１３に対してディスク１２−１から当該対象データを読み出して、キャッシュメモリ２６へ転送するように要求する。
【００６３】
そして、デバイスアダプタ１３は、当該対象データをディスク１２−１から読み出すと、キャッシュメモリ２６に当該対象データを書き込み、キャッシュマネージャ１０に対して当該対象データの書き込みが終了したことを通知する。
【００６４】
更に、キャッシュマネージャ１０は、デバイスアダプタ１３から当該対象データのキャッシュメモリ２６への書き込みが終了したことを示す通知を受け取ると、キャッシュマネージャ１０は、チャネルアダプタ１１に対して当該対象データの準備ができたことを通知するとともに、ルータ１４に当該対象データの読み出しを指示する。
【００６５】
これにより、ルータ１４は、ＤＭＡエンジン１５を起動し、キャッシュメモリ２６の対象データを、読み出し、チャネルアダプタ１１のキャッシュメモリ３８に転送する。その後、ＤＭＡエンジン４０を起動し、キャッシュメモリ３８の対象データを、ホストへ転送する。
【００６６】
このように、キャッシュメモリ２６，３８に、ＤＲＡＭを使用する場合には、ＤＲＡＭに、アドレスバスＡ−ＢＵＳでアドレスを送り、データバスＤ−ＢＵＳでデータのやり取りを行い、高速性を発揮する。前述のように、データには、ＢＣＣ等のチエック機能を持つが、アドレスバスでのアドレスには、チエック機能を持たない。このため、ＤＭＡ転送時に、アドレスの保証機能を必要とする。
【００６７】
［ＤＭＡ回路］
図３は、本発明の一実施の形態のＤＭＡ転送を説明するためのディスクリプタ書き込み動作の説明図、図４は、本発明の一実施の形態のＤＭＡ転送を説明するためのディスクリプタ読み出し動作の説明図、図５は、本発明の一実施の形態のディスクリプタのフォーマット図である。
【００６８】
図３乃至図４は、図２のチャネルアダプタ１１のＤＭＡ回路４０が、キャッシュメモリ３８のデータを、キャッシュマネージャ１０のキャッシュメモリ２６にＤＭＡ転送する例で示してある。
【００６９】
図３に示すように、ディスクリプタの書き込み動作では、ＣＰＵ３４は、ディスクリプタプログラムを起動し（１）、このプログラムの実行により、ディスクリプタを作成する（２）。この時、後述するように、ＣＰＵ３４は、このディスクリプタの一部に、ディスクリプタの番号を示すディスクリプタ・ポインタ情報を書き込む。そして、ＣＰＵ３４からメモリ３８のディスクリプタ領域３８０に、作成したディスクリプタを書き込む（３）。
【００７０】
次に、ディスクリプタの読み出し動作では、図４に示すように、ＣＰＵ３４は、ＤＭＡプログラムを起動し（１）、このプログラムの実行により、ＤＭＡエンジン４０が起動される（２）。ＤＭＡエンジン４０は、メモリ３８のディスクリプタ領域３８０からディスクリプタを読み出す（３）。
【００７１】
この読み出し後、ＤＭＡエンジン４０は、ＣＰＵ３４が書き込んだディスクリプタ・ポインタ情報を、読み出しに使用したディスクリプタの番号を示すディスクリプタ・ボトムポインタ・レジスタ１１０（図９参照）の値と比較し、異なる場合は、そのディスクリプタを不当と判断し、ＤＭＡ処理を中止する。
【００７２】
又、ＤＭＡエンジン４０は、ディスクリプタの一部にＣＰＵ３４が書き込んだディスクリプタ・ポインタのキャリー情報を、ディスクリプタ・ボトムポインタ・レジスタ１１０のキャリービットと比較し、異なる場合は，そのディスクリプタを不当と判断し、ＤＭＡ処理を中止する。
【００７３】
即ち、ディスクリプタ領域３８０は、サーキュラーバッファとして使用されるので、ディスクリプタ・サイズのＮ倍のディスクリプタ領域は、全て使い終えると、最初の位置に戻って使用される。
【００７４】
このとき1周目は，ディスクリプタ・ポインタのキャリー情報として"０"を指定し、２周目以降は、ディスクリプタ領域を新しく使用するたびに"１"→"０"→"１"と更新する。
【００７５】
図５により、ディスクリプタのフォーマットの一例を説明する。前述のように、ディスクリプタは、ＣＰＵ３４が、ＤＭＡエンジン４０に与えるためのＤＭＡ転送命令であり、転送したいデータのキャッシュメモリ１０４でのアドレスとデータバイト数、データ転送先（メモリ）のアドレスを含む。例えば、図５のディスクリプタのフォーマットに示すように、４ワード（１ワード、６４ビット）のコマンドで構成される。１ワード目は、コマンドフィールドｃｍｄ、割り込み制御フィールド（例えば、「１」なら、本ディスクリプタの終了時に割り込みをあげる等）、ＢＣＣチエックモードＢＣＣ、転送先ノードＴｇｔ，転送先（Ｗｒｉｔｅ  Ｓｉｄｅ）メモリアドレスＤＤＡで構成される。
【００７６】
２ワード目は、転送バイト数ＳＩＺＥ（例えば、最大１Ｍｂｙｔｅ，最小８ｂｙｔｅ），転送元（Ｒｅａｄ  Ｓｉｄｅ）メモリアドレスＳＤＡからなる。３ワード目は、チェック用Ｂｌｏｃｋ−ＩＤ初期値Ｃｈｅｃｋ  ＢＫＩＤ、４ワード目は、生成用（Ｒｅｐｌａｃｅ）Ｂｌｏｃｋ−ＩＤ初期値よりなる。本発明の一実施の形態では、この４ワード目（Ｗｏｒｄ３）に、ディスクリプタ・ポインタ情報ＤＰと、そのキャリー情報Ｃを設ける。
【００７７】
ＣＰＵ３４は、キャッシュメモリ３８にデータを書込む度に、図５のようなディスクリプタ、即ち、そのディスクリプタを格納するポインタ値ＤＰとキャリー情報Ｃを含むディスクリプタを作成し、キャッシュメモリ３８内のディスクリプタ領域３８０に書込む。
【００７８】
更に、ＣＰＵ３４は、ＤＭＡエンジン３８の持つディスクリプタ・ベースアドレス・レジスタ（図６の４８）に，ディスクリプタ領域３８０の先頭アドレスを書き込む。これにより、ＤＭＡエンジン３８は、ディスクリプタが、キャッシュメモリ３８のディスクリプタ領域３８０のどこに書き込まれるかを知ることができる。
【００７９】
このように、ＣＰＵは、ディスクリプタを作成するときに、ディスクリプタ内の予め決められた一部に、そのディスクリプタを格納するポインタの値とキャリー情報を書き込み、ＤＭＡエンジンがディスクリプタを読み出すときに，ＤＭＡエンジンが、その値が正しいかどうかを確認する。
【００８０】
これにより、ＣＰＵ３４がディスクリプタを書き込んだ際に、メモリコントローラ３６とメモリ３８間のアドレスに障害が起きた場合は、本来更新されるべきキャリー情報が更新されてないため、ＤＭＡエンジン４０がこのディスクリプタを読み出すときに、不当なものとして検出できる。
【００８１】
また、ＤＭＡエンジン４０が，ディスクリプタを読み出すときに、アドレスに故障が起きた場合は、ディスクリプタ内のポインタ情報が読み出そうとしたポインタと一致しないために、読み出したディスクリプタを異常なものと検出できる。
【００８２】
このようにして、ディスクリプタの書き込み、読み出しのどちらの場合においても、アドレス故障に起因するデータの破壊を防ぐことができる。
【００８３】
図６は、本発明のかかる検出機能を持つＤＭＡエンジンの一実施の形態の回路図である。図６に示すように、ＤＭＡエンジン４０は，ＣＰＵ  Ｉ／Ｆ制御部４２、メモリＩ／Ｆ制御部５８、ディスクリプタ読み出し制御部６０、データ転送制御部５０を有する。
【００８４】
また、ディスクリプタ・ベースアドレスのレジスタ４８、ディスクリプタ・トップポインタのレジスタ４４、ディスクリプタ・ボトムポインタのレジスタ４６、ディスクリプタ・ストアのレジスタ６２を持つ。
【００８５】
さらに、転送完了により、ディスクリプタ・ボトムレジスタ４６のポイント値を「１」更新するための加算器４７と、レジスタ４８のベースアドレスとレジスタ４６のボトムポインタを加算するための加算器５４と、レジスタ４４のトップポインタとレジスタ４６のボトムポインタを比較するための第１の比較器５２と、レジスタ６２に読み出したディスクリプタ内のポインタＤＰとキャリービットＣ（Ｗｏｒｄ３）を、レジスタ４６のボトムポインタと比較するための第２の比較器５６を持つ。
【００８６】
ディスクリプタ・トップポインタ・レジスタ４４のビット数は、キャッシュメモリ３８上に格納されるディスクリプタの数に応じて決まる。例えば、１０２４個のディスクリプタが格納される場合、トップポインタ・レジスタ４４は、１０ビット必要となる。ディスクリプタ・ボトムポインタ・レジスタ４６のビット数は、トップポインタ・レジスタ４４のビット数に、キャリーの1ビットを加えたものになる。
【００８７】
この構成の動作を説明する。ＣＰＵ３４によるＤＭＡエンジン４０の起動時に、ベースアドレス、トップポインタ、ボトムポインタの各レジスタ４４，４６，４８の設定値を、ＣＰＵ  Ｉ／Ｆ制御部４２を通じて受け取り、各レジスタ４４，４６，４８をそれぞれ指定の値に書き換える。
【００８８】
第１の比較器５２によりトップポインタとボトムポインタの値が異なることを検出すると、ディスクリプタ読み出し制御部６０は、実行すべきディスクリプタが、キャッシュメモリ３８上にあると判断して、ボトムポインタの示す１つのディスクリプタをメモリ３８から読み出すように、メモリＩ／Ｆ制御部５８に指示する。このとき，読み出すべきディスクリプタのメモリ３８上のアドレスは、加算器５４により、ベースアドレスにボトムポインタを加えることによって得られ、このアドレスを読み出しアドレスとして、メモリＩ／Ｆ制御部５８を介しキャッシュメモリ３８とのアドレスバスＡ−ＢＵＳに送出する。
【００８９】
これにより、メモリ３８からデータバスＤ−ＢＵＳを介し、メモリＩ／Ｆ制御部５８を通し、ディスクリプタデータが返され、図５で説明したワード０，１，２，３の順に、ディスクリプタ・ストア・レジスタ６２に格納される。
【００９０】
ディスクリプタを全て受け取ると、第２の比較器５６は、レジスタ６２のディスクリプタ内に指定されたポインタＤＰとキャリービットＣを、ボトムポインタ・レジスタ４６の値と比較する。その比較結果は、ディスクリプタ読み出し制御部６０に通知される。
【００９１】
ディスクリプタ読み出し制御部６０は、第２の比較器５６による比較結果が一致の場合は、データ転送制御部５０に対して、このディスクリプタによるデータ転送を行うよう指示する。データ転送制御部５０は、ディスクリプタ・ストア・レジスタ６２のディスクリプタに従い、データリードリクエストをメモリＩ／Ｆ制御部５８を介しメモリ３８に出力し、メモリ３８から転送データを読み出し、読み出しデータを指定された転送先に転送する。
【００９２】
又、転送制御部５０は、転送完了により、ディスクリプタ読み出し制御部６０を介し、加算器４７を動作し、ボトムレジスタ４６のボトムポインタを「１」加算して、ボトムレジスタ４６を更新する。ディスクリプタ読み出し制御部６０は、前述の第１の比較部５２の比較結果が一致する（即ち、トップレジスタ４４の値と、ボトムレジスタ４６の値が一致する）まで、これを繰り返す。
【００９３】
一方、第２の比較部５６の比較結果が不一致の場合は、ディスクリプタ読み出し制御部６０は、このディスクリプタによるデータ転送は中止し（即ち、転送制御部５０に転送開始を指示しない）、ＣＰＵ３４に対して割り込みでエラー通知を行う。
【００９４】
この比較結果の不一致の原因としては、ＣＰＵ３４からキャッシュメモリ３８に、ディスクリプタを書き込んだ際や、ＤＭＡエンジン４０がキャッシュメモリ３８から、ディスクリプタを読み出す際に、キャッシュメモリ３８とのアドレスバスＡ−ＢＵＳで異常（例えば、断線等）が生じて、アドレスが正確に伝達できない場合である。
【００９５】
特に、キャッシュメモリ３８にＤＲＡＭを使用する場合には、アドレスバスとデータバスとが分離され、且つアドレスバス上のアドレスにチエック情報が存在しないため、かかるＤＭＡ転送のデータエラーを防止するのに有効である。
【００９６】
［ディスクアレイ装置の第２の実施の形態］
図７は、本発明のディスクアレイ装置の第２の実施の形態の構成図、図８は、その要部の詳細構成図である。図７に示すように、ディスクアレイ装置は、ファイバチャネル・リンク１８−１，１８−２によって、２台のホストコンピュータ１７−１，１７−２に接続されている。
【００９７】
ディスクアレイ装置は、ホストインタフェースを担当するホストアダプタ１１−１，１１−２、キャッシュメモリ２６−１，２６−２、キャッシュメモリ２６−１，２６−２の管理等を行なうキャッシュコントローラ１０−１，１０−２、ディスクインタフェースを担当するディスクアダプタ１３−１，１３−２とを有する。
【００９８】
ホストアダプタ１１−１，１１−２、キャッシュメモリ２６−１，２６−２、キャッシュコントローラ１０−１，１０−２、ディスクアダプタ１３−１，１３−２は、図１のチャネルアダプタ、キャッシュマネージャ、デバイスアダプタとそれぞれ同一のものである。
【００９９】
更に、ディスクアレイ装置は、ディスクアダプタ１３−１，１３−２と複数のディスクドライブへの接続を提供するスイッチ１６−１，１６−２、及びディスクドライブ群１２−１，１２−２から構成されている。
【０１００】
このキャッシュコントローラ１０−１，１０−２は、ホストアダプタ１１−１，１１−２とディスクアダプタ１３−１，１３−２の間のデータ転送経路を提供する。また、キャッシュコントローラ１０−１，１０−２間にもデータ転送経路が設けられ、キャッシュメモリ２６−１，２６−２のデータのミラーリングに利用される。
【０１０１】
キャッシュメモリ２６−１，２６−２は、前述のように、ＤＲＡＭなどの揮発性のメモリで構成されるため、1つのキャッシュメモリ２６−１又は２６−２に格納されるデータは、必ずもう一方のキャッシュメモリ２６−２又は２６−１にもコピーを格納する。このコピー動作により、障害発生時にデータが消失することがないように制御される。これをキャッシュのミラーリングと呼ぶ。
【０１０２】
図８で後述するように、各キャッシュコントローラ１０−１，１０−２は、ミラーリングのためのＤＭＡエンジンをもち、キャッシュメモリ２６−１，２６−２内に格納されたデータを，キャッシュコントローラ１０−１，１０−２内のＣＰＵの指示により、別のキャッシュコントローラのメモリに転送することができる。
【０１０３】
この構成のディスクアレイ装置で、ホストコンピュータのデータを格納する時の動作を説明する。ホストコンピュータ１７−１（又は１７−２）が、ディスクへ格納するデータは、まずホストアダプタ１１−１へ送信される。ホストアダプタ１１−１は、受信したデータに、ブロックチェックコード(BCC)を付加した上で、キャッシュコントローラ１０−１へ転送する。
【０１０４】
キャッシュコントローラ１０−１は、転送されたデータを、キャッシュメモリ２６−１内に格納した後に、ＤＭＡエンジンを起動して，キャッシュコントローラ１０−２へ当該データを転送する。キャッシュコントローラ１０−２は、キャッシュメモリ２６−２に転送データを格納する。これにより、ミラーリング処理を行なう。
【０１０５】
ミラーリングが正常に完了すると、キャッシュコントローラ１０−１は、ホストアダプタ１１−１に対して通知を行い、ホストアダプタ１１−１は、ホストコンピュータ１７−１にデータの格納を正常に終了したことを知らせる。
【０１０６】
又、キャッシュメモリ２６−１，２６−２内のディスクドライブ群１２−１，１２−２へのライトバック及びホストコンピュータからのリード動作は、図１及び図２と同一である。
【０１０７】
図８に示すように、キャッシュコントローラ１０−１，１０−２は、ブリッジ回路としても機能し、メモリ制御するメモリコントローラ２４を中心に、ＣＰＵ２０，２２と，ＤＭＡエンジン２８−１，２８−２が接続されて、構成される。図８のように、ＣＰＵの性能要求により、ＣＰＵが、複数装備される場合や、１つ搭載される場合がある。ＣＰＵ２０，２２とＤＭＡエンジン２８−１，２８−２は、メモリコントローラ２４を介して、キャッシュメモリ２６−１，２６−２にアクセスすることができる。
【０１０８】
ＤＭＡエンジン２８−１，２８−２は，キャッシュコントローラ１０−１，１０−２外部にインタフェースを持ち、別のキャッシュコントローラと接続される。また，メモリコントローラ２４には，ホストアダプタ１１−１，１１−２、ディスクアダプタ１３−１，１３−２が接続され、それぞれがキャッシュメモリ２６−１，２６−２にアクセスすることができる。
【０１０９】
ホストコンピュータ１７−１又は１７−２からのデータ（ライトデータ）を受け取った後、データのミラーリング開始の判断は、キャッシュコントローラ１０−１又は１０−２内のＣＰＵ２０，２２が行う。この構成では、図３で説明したように、ＣＰＵ２０，２２は、ホストからのデータを受け取ると、キャッシュメモリ２６−１，２６−２内の制御領域（ディスクリプタ領域）に、ディスクリプタを作成する。
【０１１０】
図５で説明したように、ディスクリプタは、ＣＰＵ２０，２２がＤＭＡエンジン２８−１，２８−２にＤＭＡ転送指示を与えるための命令であり、コマンドフィールド、割り込み制御フィールド、転送元メモリアドレス、転送先メモリアドレス、転送データバイト長、チェック用Block-ID初期値、生成用Block-ID初期値、キャリー情報、ディスクリプタ・ポインタを有する。
【０１１１】
図４及び図６で説明したように、ＤＭＡエンジン２８−１，２８−２は、図６と同一の構成を有し、ディスクリプタ・ベースアドレス・レジスタ４８にディスクリプタ領域の先頭アドレスを書き込まれ、ディスクリプタ・トップポインタ・レジスタ４４とディスクリプタ・ボトムポインタ・レジスタ４６を持つ。これらのレジスタはそれぞれ、ＣＰＵがどれだけのディスクリプタをディスクリプタ領域に用意したか、ＤＭＡエンジンがどれだけのディスクリプタの実行を終えたかを示す。
【０１１２】
又、ＤＭＡエンジン２８−１，２８−２は，ディスクリプタを読み出し、解析し、指定されたデータ転送を完了すると、ディスクリプタ・ボトムポインタ・レジスタ４６を1つ進める。
【０１１３】
この実施の形態では、ミラーリングのためのＤＭＡ転送に、図５及び図６のチエック機構を付与している。即ち、ミラーリングの動作は、データの信頼性を高めるために行われるものなので、その間にデータが破壊されることがあってはならない。
【０１１４】
このため、ストレージ装置は上記に示したようにデータに対してチェックコードを付加することで保障するのが普通であり、またキャッシュメモリ自身もデータに対しＥＣＣコードを持ち、メモリを構成するＤＲＡＭ素子の異常やメモリコントローラとＤＲＡＭ間のデータパスの異常で、データが破壊されると検出し、ミラーリングを中止する。
【０１１５】
一方、このＤＭＡエンジンによるミラーリングの動作では、データは上記のチェックコードとＥＣＣによって保護されるが、ディスクリプタの保護が十分でないため、例えば、メモリコントローラとメモリ間のアドレス線に故障が発生した場合に、ＣＰＵが間違ったアドレスにディスクリプタを書き込んだり、ＤＭＡエンジンが間違ったアドレスからディスクリプタを読み出したりしてしまう可能性がある。
【０１１６】
この場合、本来のデータとは異なるデータが別のキャッシュメモリに書き込まれたり、キャッシュメモリの本来書き込みたいのとは異なるアドレスにデータがミラーリングされたりして、結果的に正しくデータがミラーリングされず、キャッシュ上のデータが保障されなくなってしまう。
【０１１７】
このため、ミラーリングのＤＭＡ転送でも、図５乃至図６で説明したディスクリプタの異常検出機能が、正確なミラーリングに有効である。即ち、ＣＰＵはディスクリプタを作成するときに，ディスクリプタ内の予め決められた一部に、そのディスクリプタを格納するポインタの値とキャリー情報を書き込み、ＤＭＡエンジンがディスクリプタを読み出すときに、その値が正しいかどうかを確認する。
【０１１８】
これにより、ＣＰＵがディスクリプタを書き込んだときに、メモリコントローラとメモリ間のアドレスに故障が起きた場合は、本来更新されるべきキャリー情報が更新されてないため、ＤＭＡエンジンがこのディスクリプタを読み出すときに不当なものとして検出できる。
【０１１９】
また、ＤＭＡエンジンがディスクリプタを読み出すときに、アドレスに故障が起きた場合は、ディスクリプタ内のポインタ情報が読み出そうとしたポインタと一致しないために、読み出したディスクリプタを異常なものと検出できる。このようにして、ディスクリプタの書き込み、読み出しのどちらの場合においても、アドレス故障（アドレス線の断線やアドレス線のドライバの障害等）に起因するデータの破壊を防ぐことができる。
【０１２０】
即ち、この実施の形態によれば、キャッシュメモリに格納されるデータのミラーリングを行なう際に、ＤＭＡが不当なディスクリプタを使ってデータを転送するのを防ぐことができ、装置の信頼性を高める効果がある。
【０１２１】
［他の実施の形態］
なお、本発明は上述した実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。例えば、上述した実施形態では、データを保持する記憶部として磁気ディスク装置を例にあげて説明したが、本発明はこれに限定されるものではなく、記憶部における記憶媒体は、光ディスク、光磁気ディスク等にも適用できる。
【０１２２】
また、上述した第１の実施の形態では、チャネルアダプタから制御モジュールへのライトデータのＤＭＡ転送で説明したが、リードデータのＤＭＡ転送や、ミラーリングのＤＭＡ転送にも適用できる。
【０１２３】
さらに、各構成ユニット（ディスク装置、ホストコンピュータ、制御モジュール、キャッシュマネージャ、チャネルアダプタ、ディスクアダプタ、ＤＭＡエンジン）の数、もしくは、これら各ユニットが有するポートの数は、本発明において限定されるものではなく、必要に応じて適宜変更、組み合わせをして構成してもよい。
【０１２４】
その上、ＤＭＡ転送回路は、前述のディスクアレイ装置への適用を説明したが、他のデータ処理装置にも適用でき，対象とするメモリも、キャッシュメモリに限られない。
【０１２５】
（付記１）データ処理ユニットが書き込んだＤＭＡ転送内容を示すディスクリプタを読み出し、メモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するＤＭＡ回路において、前記メモリに前記データ処理ユニットが書き込んだ複数のディスクリプタのトップポインタとボトムポインタを格納する第１及び第２のレジスタと、前記ボトムポインタが示す前記メモリのディスクリプタを読み出し、解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、前記読み出したディスクリプタに含まれるディスクリプタポインタと前記ボトムポインタとを比較し、前記転送回路の転送動作を制御するための比較回路とを有することを特徴とするＤＭＡ回路。
【０１２６】
（付記２）前記転送回路は、アドレス線とデータ線とが分離された前記メモリをアクセスすることを特徴とする付記１のＤＭＡ回路。
【０１２７】
（付記３）前記転送回路は、前記比較回路の比較結果が良好でない時は、前記前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し動作を中止することを特徴とする付記１のＤＭＡ回路。
【０１２８】
（付記４）前記転送回路は、１の前記ディスクリプタの読出し、解析によるデータ転送を完了した後に、前記ボトムポインタを格納する第２のレジスタを更新することを特徴とする付記１のＤＭＡ回路。
【０１２９】
（付記５）前記第１のレジスタのトップポインタと前記第２のレジスタのボトムポインタとを比較する第２の比較回路を有し、前記転送回路は、前記第２の比較回路の比較結果により、指定されたＤＭＡ転送を終了することを特徴とする付記４のＤＭＡ回路。
【０１３０】
（付記６）前記読み出したディスクリプタを格納する第３のレジスタを更に有し、前記比較回路は、前記第３のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第２のレジスタの前記ボトムポインタとを比較することを特徴とする付記１のＤＭＡ回路。
【０１３１】
（付記７）前記メモリのディスクリプタ領域のベース位置を示すベースポインタを格納する第４のレジスタを更に有し、前記転送回路は、前記第２のレジスタの前記ボトムポインタと前記第４のレジスタのベースポインタとの加算値が示す前記メモリのディスクリプタを読み出すことを特徴とする付記１のＤＭＡ回路。
【０１３２】
（付記８）前記転送回路は、前記メモリにディスクリプタの読出しを要求するディスクリプタ読出し制御回路と、前記メモリに前記読み出したディスクリプタに応じたデータの読出しを要求するデータ転送回路とを有し、前記ディスクリプタ読出し制御回路は、前記比較回路の比較結果に応じて、前記データ転送回路の読出し要求を制御することを特徴とする付記１のＤＭＡ回路。
【０１３３】
（付記９）前記ディスクリプタ読出し制御回路は、前記ボトムポインタが示す前記メモリのディスクリプタを要求し、前記データ転送回路は、前記読み出したディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送することを特徴とする付記８のＤＭＡ回路。
【０１３４】
（付記１０）前記読み出したディスクリプタを格納する第３のレジスタを更に有し、前記比較回路は、前記第３のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第２のレジスタの前記ボトムポインタとを比較し、前記データ転送回路は、前記ディスクリプタ読み出し回路の転送許可に応じて、前記第３のレジスタの前記ディスクリプタを解析して、前記メモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送することを特徴とする付記８のＤＭＡ回路。
【０１３５】
（付記１１）複数のディスク装置と、上位からの要求に応じて、前記ディスク装置のデータのリード／ライトを行う制御ユニットとを有し、前記制御ユニットは、データ処理ユニットと、前記ディスク装置のためのデータを格納するキャッシュメモリと、前記データ処理ユニットが書き込んだＤＭＡ転送内容を示すディスクリプタを読み出し、前記キャッシュメモリからディスクリプタで定義されたアドレスのデータを読み出し、転送するＤＭＡ回路とを有し、前記ＤＭＡ回路は、前記キャッシュメモリに前記データ処理ユニットが書き込んだ複数のディスクリプタのトップポインタとボトムポインタを格納する第１及び第２のレジスタと、前記ボトムポインタが示す前記キャッシュメモリのディスクリプタを読み出し、解析して、前記キャッシュメモリの前記ディスクリプタで指定されたアドレスのデータを読み出し、転送する転送回路と、前記読み出したディスクリプタに含まれるディスクリプタポインタと前記ボトムポインタとを比較し、前記転送回路の転送動作を制御するための比較回路とを有することを特徴とするディスクアレイ装置。
【０１３６】
（付記１２）前記転送回路は、アドレス線とデータ線とが分離された前記キャッシュメモリをアクセスすることを特徴とする付記１１のディスクアレイ装置。
【０１３７】
（付記１３）前記転送回路は、前記比較回路の比較結果が良好でない時は、前記前記キャッシュメモリの前記ディスクリプタで指定されたアドレスのデータを読み出し動作を中止することを特徴とする付記１１のディスクアレイ装置。
【０１３８】
（付記１４）前記転送回路は、１の前記ディスクリプタの読出し、解析によるデータ転送を完了した後に、前記ボトムポインタを格納する第２のレジスタを更新することを特徴とする付記１１のディスクアレイ装置。
【０１３９】
（付記１５）前記第１のレジスタのトップポインタと前記第２のレジスタのボトムポインタとを比較する第２の比較回路を有し、前記転送回路は、前記第２の比較回路の比較結果により、指定されたＤＭＡ転送を終了することを特徴とする付記１１のディスクアレイ装置。
【０１４０】
（付記１６）前記読み出したディスクリプタを格納する第３のレジスタを更に有し、前記比較回路は、前記第３のレジスタの前記読み出したディスクリプタに含まれるディスクリプタポインタと前記第２のレジスタの前記ボトムポインタとを比較することを特徴とする付記１１のディスクアレイ装置。
【０１４１】
（付記１７）前記キャッシュメモリのディスクリプタ領域のベース位置を示すベースポインタを格納する第４のレジスタを更に有し、前記転送回路は、前記第２のレジスタの前記ボトムポインタと前記第４のレジスタのベースポインタとの加算値が示す前記キャッシュメモリのディスクリプタを読み出すことを特徴とする付記１１のディスクアレイ装置。
【０１４２】
（付記１８）前記転送回路は、前記キャッシュメモリにディスクリプタの読出しを要求するディスクリプタ読出し制御回路と、前記キャッシュメモリに前記読み出したディスクリプタに応じたデータの読出しを要求するデータ転送回路とを有し、前記ディスクリプタ読出し制御回路は、前記比較回路の比較結果に応じて、前記データ転送回路の読出し要求を制御することを特徴とする付記１１のディスクアレイ装置。
【０１４３】
（付記１９）前記制御ユニットは、前記上位と通信するためのチャネルアダプタと、前記ディスク装置のデータの一部を格納するキャッシュメモリを有する制御回路と、前記ディスク装置と通信するデバイスアダプタとを有し、前記ＤＭＡ回路は、前記チャネルアダプタの前記キャッシュメモリと前記制御回路の前記キャッシュメモリとの間で、前記ＤＭＡ転送することを特徴とする付記１１のディスクアレイ装置。
【０１４４】
（付記２０）前記上位と通信するためのチャネルアダプタと、前記ディスク装置のデータの一部を格納するキャッシュメモリを有する制御回路と、前記ディスク装置と通信するデバイスアダプタとを有する前記制御ユニットを複数有し、前記ＤＭＡ回路は、１の前記制御ユニットの前記キャッシュメモリと他の前記制御ユニットの前記キャッシュメモリとの間で、前記ＤＭＡ転送によるミラーリングすることを特徴とする付記１１のディスクアレイ装置。
【産業上の利用可能性】
【０１４５】
データ処理ユニットが、ディスクリプタを作成するときに、ディスクリプタ内の予め決められた一部に、そのディスクリプタを格納するポインタを書き込み、ＤＭＡエンジンがディスクリプタを読み出すときに，ＤＭＡエンジンが、その値が正しいかどうかを確認するので、ディスクリプタの書き込み、読み出しのどちらの場合においても、アドレス故障に起因するデータの破壊を防ぐことができる。特に、メモリがアドレス線とデータ線とが分離されているものの、アドレス障害を検出し、ディスクアレイ装置のミラーリング処理やデータ転送処理での転送データの誤りを防止でき、信頼性の高いシステムを構築できる。
【図面の簡単な説明】
【０１４６】
【図１】本発明の第１の実施の形態のディスクアレイ装置の構成を示すブロック図である。
【図２】図１の実施の形態の制御モジュールの構成を示すブロック図である。
【図３】本発明の一実施の形態のディスクリプタ書き込み処理の説明図である。
【図４】本発明の一実施の形態のディスクリプタ読み出し処理の説明図である。
【図５】本発明の実施の形態のディスクリプタのフォーマットの構成図である。
【図６】本発明の実施の形態のＤＭＡ回路の構成を示すブロック図である。
【図７】本発明の第２の実施の形態のディスクアレイ装置の構成を示すブロック図である。
【図８】図７の実施の形態の制御モジュールの構成を示すブロック図である。
【図９】従来のＤＭＡ転送の説明図である。
【図１０】従来のディスクリプタのフォーマットの構成図である。
【符号の説明】
【０１４７】
１０、１０−１，１０−２，１０−３，１０−４  制御モジュール（キャッシュマネージャ）
１１、１１−１〜１１−８  チャネルアダプタ
１２−１〜１２−４  ディスク装置（ディスクドライブ群）
１３、１３−１〜１３−８  デバイスアダプタ
１４，１４−１〜１４−８  ルータ
１６−１，１６−２  スイッチ
１７−１，１７−２  ホストコンピュータ（データ処理装置）
２４，２６−１，２６−２，３８  キャッシュメモリ
２０，２２，３４  ＣＰＵ
１５，２８−１，２８−２，４０  ＤＭＡ回路
４４，４６，４８  ポインタレジスタ
５０  転送制御回路
５２，５６  比較回路
５４  加算回路
６０  ディスクリプタ読み出し制御回路
６２  ディスクリプタ・ストア・レジスタ
３８０  ディスクリプタ領域
【図１】
2006178795.tif 000003
【図２】
2006178795.tif 000004
【図３】
2006178795.tif 000005
【図４】
2006178795.tif 000006
【図５】
2006178795.tif 000007
【図６】
2006178795.tif 000008
【図７】
2006178795.tif 000009
【図８】
2006178795.tif 000010
【図９】
2006178795.tif 000011
【図１０】
2006178795.tif 000012