(57)【要約】【課題】データ転送の処理を効率よく行なうことが可能なデータ転送装置を提供することを目的とする。【解決手段】ホストコンピュータ４０Ａから送信される比較対象となるサーチデータに応じたサーチデータをディスク３５Ａから検索して転送するチャネルアダプタ２０Ａにおいて、データ検索を行うためのディスクリプタを生成するＣＰＵ２２と、ホストコンピュータ４０ＡからのサーチデータおよびＭＰＵ２２によって生成されるディスクリプタを記憶するメモリ２１と、メモリ２１が記憶するディスクリプタを順番に１つずつ読み出すとともに、ディスクリプタに基づいてメモリ２１のサーチデータとディスク３５Ａのサーチデータを読み出して比較し、ディスクリプタの比較条件に応じたディスク３５Ａのサーチデータをホストコンピュータ４０Ａに転送するＤＭＡチップ１０と、を備える。【選択図】    図１
2006190256.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送装置において、
自らの装置全体を制御するとともに、前記データ蓄積メモリから所定の蓄積データを検索するための複数の比較条件情報を生成する制御部と、
前記外部装置からの比較データを記憶する比較データ記憶部と、
前記比較データ記憶部が前記比較データを記憶すると、前記制御部によって生成される比較条件情報を記憶する比較条件記憶部と、
前記比較条件記憶部が記憶する複数の前記比較条件情報を順番に１つずつ読み出すとともに、前記比較データ記憶部から前記比較データを読み出すための比較データ読み出し情報および前記データ蓄積メモリから前記蓄積データを読み出すための蓄積データ読み出し情報を前記比較条件情報から抽出する情報抽出機能と、前記比較データ読み出し情報に基づいて前記比較データ記憶部内の比較データを読み出す比較データリード機能と、前記蓄積データ読み出し情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリード機能と、前記比較データリード機能が読み出した比較データと前記蓄積データリード機能が読み出した蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索機能とを有し、検索した蓄積データを前記外部装置に転送する転送処理部と、
を備えることを特徴とするデータ転送装置。
【請求項２】
前記各蓄積データは、前記比較データとの間で比較対象となる所定の比較用データブロックを含む可変長データフォーマットで記述され、前記比較条件情報は比較対象となる比較データのデータ長および蓄積データ内の所定のフィールドのデータ長に関する情報を含むことを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記蓄積データリード機能は、前記蓄積データ読み出し情報に基づいて、前記転送処理部に接続されるとともに前記データ蓄積メモリ内の蓄積データを一時的に記憶するキャッシュメモリから前記データ蓄積メモリ内の蓄積データを読み出すことを特徴とする請求項１または２に記載のデータ転送装置。
【請求項４】
前記蓄積データ読み出し情報は、前記キャッシュメモリ内で前記蓄積データが記憶されるアドレスに関するキャッシュメモリアドレスを含み、
前記蓄積データリード機能は、前記キャッシュメモリアドレスに基づいて、前記キャッシュメモリから前記蓄積データを読み出すことを特徴とする請求項３に記載のデータ転送装置。
【請求項５】
複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送装置において、
前記外部装置からの比較データを記憶する比較データ記憶部と、
自らの装置全体を制御するとともに、前記蓄積データと前記比較データとを比較するための比較条件情報を生成する制御部と、
前記比較条件情報に基づいて前記比較データ記憶部内の比較データを読み出す比較データリード機能と、前記比較条件情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリード機能と、前記比較データリード機能が読み出した比較データと前記蓄積データリード機能が読み出した蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索機能とを有し、かつ検索した蓄積データを前記外部装置に転送する転送処理部と、
を備え、
前記比較データリード機能は、前記比較データ記憶部内の比較データを読み出して一時的に記憶するとともに、前記一時的に記憶した比較データが前記データ検索機能によって読み出されると次の比較データを比較データ記憶部から読み出して一時的に記憶する比較データ記憶バッファを有し、
前記蓄積データリード機能は、前記データ蓄積メモリ内の蓄積データを読み出して一時的に記憶するとともに、前記一時的に記憶した蓄積データが前記データ検索機能によって読み出されると次の蓄積データを前記データ蓄積メモリから読み出して一時的に記憶する蓄積データ記憶バッファを有することを特徴とするデータ転送装置。
【請求項６】
複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送方法において、
前記データ蓄積メモリから所定の蓄積データを検索するための複数の比較条件情報を生成する比較条件生成ステップと、
前記外部装置からの比較データを第１のメモリに記憶する比較データ記憶ステップと、
前記第１のメモリが前記比較データを記憶すると、前記生成された比較条件情報を第２のメモリに記憶する比較条件記憶ステップと、
前記第２のメモリが記憶する複数の前記比較条件情報を順番に１つずつ読み出すとともに、前記第１のメモリから前記比較データを読み出すための比較データ読み出し情報および前記データ蓄積メモリから前記蓄積データを読み出すための蓄積データ読み出し情報を前記比較条件情報から抽出する情報抽出ステップと、
前記比較データ読み出し情報に基づいて前記第１のメモリ内の比較データを読み出す比較データリードステップと、
前記蓄積データ読み出し情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリードステップと、
前記読み出された比較データと前記読み出された蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索ステップと、
前記検索した蓄積データを前記外部装置に転送する転送処理ステップと、
を含むことを特徴とするデータ転送方法。
【請求項７】
前記各蓄積データは、前記比較データとの間で比較対象となる所定の比較用データブロックを含む可変長データフォーマットで記述され、前記比較条件情報は比較対象となる比較データのデータ長および蓄積データ内の所定のフィールドのデータ長に関する情報を含むことを特徴とする請求項６に記載のデータ転送方法。
【請求項８】
前記蓄積データリードステップは、前記蓄積データ読み出し情報に基づいて、前記データ蓄積メモリ内の蓄積データを一時的に記憶するキャッシュメモリから前記データ蓄積メモリ内の蓄積データを読み出すことを特徴とする請求項６または７に記載のデータ転送方法。
【請求項９】
前記蓄積データ読み出し情報は、前記キャッシュメモリ内で前記蓄積データが記憶されるアドレスに関するキャッシュメモリアドレスを含み、
前記蓄積データリードステップは、前記キャッシュメモリアドレスに基づいて、前記キャッシュメモリから前記蓄積データを読み出すことを特徴とする請求項８に記載のデータ転送方法。
【請求項１０】
複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送方法において、
前記外部装置からの比較データを比較データメモリに記憶する比較データ記憶ステップと、
前記蓄積データと前記比較データとを比較するための比較条件情報を生成する比較条件生成ステップと、
前記比較条件情報に基づいて前記比較データメモリ内の比較データを読み出す比較データリードステップと、
前記比較条件情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリードステップと、
前記読み出された比較データと前記読み出された蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索ステップと、
前記検索した蓄積データを前記外部装置に転送する転送処理ステップと、
を含み、
前記比較データリードステップは、前記比較データメモリ内の比較データを読み出して第１のバッファに一時的に記憶するとともに、前記第１のバッファに一時的に記憶した比較データが読み出されると次の比較データを前記比較データメモリから読み出して前記第１のバッファに一時的に記憶し、
前記蓄積データリードステップは、前記データ蓄積メモリ内の蓄積データを読み出して第２のバッファに一時的に記憶するとともに、前記第２のバッファに一時的に記憶した蓄積データが読み出されると次の蓄積データを前記データ蓄積メモリから読み出して前記第２のバッファに一時的に記憶することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータシステム内でデータ検索をしてＤＭＡ転送するデータ転送装置およびデータ転送方法に関するものである。
【背景技術】
【０００２】
近年、コンピュータシステムの性能を高める技術の開発が急速に進められている。例えば、コンピュータシステム内においてメモリとメモリの間のデータ転送、メモリとＩ／Ｏデバイスの間のデータ転送を効率よく行なうことが望まれている。
【０００３】
データ転送を効率よく行なう方法としてＤＭＡ（Direct memory access）がある。ＤＭＡにおいては、ＣＰＵ（Central Processing Unit）がコンピュータシステム内のデータ転送を行うのではなく、データ転送専用のハードウェアであるＤＭＡ回路がＣＰＵからの命令に基づいてコンピュータシステム内のデータ転送を行う。
【０００４】
図１１は、従来のＤＭＡチップの構成を示すブロック図である。ＤＭＡチップ１００は、ディスクアレイ装置のチャネルアダプタ等に適用され、メモリ（チャネルアダプタ内のＭＰＵからの命令を記憶）と接続するメモリＩ／Ｆ部９１、ディスクアレイ側のキャッシュメモリ（検索対象となるデータを記憶）と接続するキャッシュＩ／Ｆ部９７を備えている。
【０００５】
レジスタ部９９は、チャネルアダプタ内のＭＰＵ（Micro Processing Unit）からの指示（命令）をレジスタライトによって受け、ディスクリプタ内の必要な情報としてサーチデータリード部９２へメモリアドレス、データ長等を提供し、キー・カウントリード部９５へキャッシュアドレス、データ長等を提供している。
【０００６】
サーチデータリード部９２はレジスタに指定されたメモリアドレスから比較データ長のサーチデータを読み出し、キー・カウントリード部９５はレジスタに指定されたキャッシュアドレスから比較データ長のキー部またはカウント部のデータを読み出す。キー・カウントリード部９５は、キャッシュＩ／Ｆ部９７を介してキャッシュメモリからサーチデータを受信すると、サーチデータリード部９２のバッファ９３からのサーチデータを読み出して、夫々のサーチデータの比較を行なう。そして、キー・カウントリード部９５は、サーチデータの比較結果が比較条件を満たしているか（Ｈｉｔ）比較条件を満たしていないか（Ｍｉｓｓ）を判定するとともに、比較処理（データ検索等）を行うたびにＭＰＵへの割り込み処理を行っている。
【０００７】
図１２は、従来のデータサーチの処理手順を示すシーケンス図である。ホストコンピュータ１０１から送信されるデータ検索を行なうための比較データ（比較キー）をチャネルアダプタ内のメモリ１０３に格納する。チャネルアダプタ内のＭＰＵ１０５からＤＭＡチップ１００へメモリアドレス、キャッシュアドレス、モード等をレジスタにより設定しデータ検索をスタートする。
【０００８】
ＤＭＡチップ１００は、ＭＰＵ１０５によって指定されたメモリアドレスとキャッシュアドレスに基づいてメモリ１０３、ディスクアレイ側のキャッシュメモリ１０７から夫々のサーチデータ（比較キー）を受信し、夫々のサーチデータの比較を行う。
【０００９】
サーチデータの比較結果が「Ｍｉｓｓ」の場合、ＤＭＡチップ１００からＭＰＵ１０５へ割り込み処理を行う。そして、ＤＭＡチップ１００が次の比較処理を行うため、ＭＰＵ１０５は再度ＤＭＡチップ１００へレジスタ設定を行い、キーサーチ（サーチデータの比較）を行う。このキーサーチ処理は、サーチデータの比較結果が「Ｈｉｔ」するまで繰り返し行なわれる。サーチデータの比較結果が「Ｈｉｔ」すると、ＤＭＡチップ１００はＭＰＵ１０５への割り込み処理を行なってＤＭＡチップ１００によるデータの比較処理を停止する。
【００１０】
このように、従来のＤＭＡチップ１００によるサーチ動作ではサーチデータの比較が１度で比較条件に一致しない場合、ＭＰＵ１０５が次のサーチデータの比較をＤＭＡチップ１００に指示する必要がある。
【００１１】
ところで、ＤＭＡチップにおいてはホストコンピュータからのデータを受信するバス（データ伝送路）の伝送速度と、キャッシュメモリからのデータを受信するバスの伝送速度が異なる場合がある。
【００１２】
図１３は、従来のプロトコル−ＤＭＡチップの構成を示すブロック図である。プロトコル−ＤＭＡチップ１５０は、ホストコンピュータ（図示せず）との通信におけるプロトコルを制御するプロトコルチップの機能とＤＭＡ回路を有するＤＭＡチップの機能を有している。
【００１３】
プロトコル−ＤＭＡチップ１５０は、ホストコンピュータと接続するホスト（Personal Computer）Ｉ／Ｆ部１５６、ホストコンピュータ（チャネルアダプタ内のＭＰＵ）からのサーチデータを一時的に記憶するバッファ１６１を有したプロトコルコントローラ部１６０、ディスクアレイ側のキャッシュメモリと接続するキャッシュＩ／Ｆ部１５７、メモリＩ／Ｆ部１５１等を備えている。
【００１４】
図１３に示すプロトコル−ＤＭＡチップ１５０においては、ホストコンピュータからのサーチデータ（メモリアドレス、データ長等）がレジスタ部１５９を介さずにサーチデータリード部１５２へ送信されている。そして、比較部１５８がサーチデータリード部１５２のバッファ１５３が記憶するサーチデータとキャッシュメモリからキー・カウントリード部１５５を介して送信されるサーチデータ（キー）を比較している。
【００１５】
このようなプロトコル−ＤＭＡチップ１５０においては、プロトコルコントローラ部１６０内のバッファ１６１に格納されたサーチデータを全てサーチデータリード部１５２のバッファ１５３に格納するまで、キャッシュメモリからのキー等をリードすることができないといった問題があった。
【００１６】
データの比較処理に際してデータの伝送速度が速いバス（例えばキャッシュＩ／Ｆ部１５７とキー・カウントリード部１５５を接続するＰＣＩ（Peripheral Component Interconnect）バス）は、データの伝送速度が遅いバス（例えばプロトコルコントローラ部１６０とサーチデータリード部１５２を接続するバス）の処理を待ってから次のデータ伝送（データの受信）を行なう必要があり、データ転送の処理効率が悪くなるといった問題があった。
【００１７】
特許文献１に記載の非同期式ファイル制御装置は、デバイスに対し、非同期方式のファイル制御を行い、かつキャッシュ機構によるキャッシュ制御を行うファイル制御装置において、転送データを一時格納するデータ転送用バッファと、転送データのコンペア（比較）を行うコンペア回路を具備し、デバイスとの間のデータ転送等を行うデバイスアダプタ内に、転送用バッファより、通常のデータ転送経路と独立して、コンペア回路にデータを供給することのできるレジスタを設け、コンペア回路によるコンペア動作の実行中に、通常のデータ転送経路へのデータ転送も行なっている。
【００１８】
【特許文献１】特開平５−１６５７２５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかしながら、上記従来の技術では、サーチデータの比較が一度で比較条件に一致しない場合、ＭＰＵのオーバーヘッドを抑えてサーチデータの比較を行なうことができないといった問題があった。
【００２０】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、データ転送の処理を効率よく行なうことが可能なデータ転送装置を提供することを目的とする。また、データ転送の処理を少ない負荷で行なうことが可能なデータ転送装置を提供することを目的とする。また、データ転送の処理を効率よく行なうことが可能なデータ転送方法を提供することを目的とする。また、データ転送の処理を少ない負荷で行なうことが可能なデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００２１】
上述した課題を解決し、目的を達成するため、請求項１の発明にかかるデータ転送装置は、複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送装置において、自らの装置全体を制御するとともに、前記データ蓄積メモリから所定の蓄積データを検索するための複数の比較条件情報を生成する制御部と、前記外部装置からの比較データを記憶する比較データ記憶部と、前記比較データ記憶部が前記比較データを記憶すると、前記制御部によって生成される比較条件情報を記憶する比較条件記憶部と、前記比較条件記憶部が記憶する複数の前記比較条件情報を順番に１つずつ読み出すとともに、前記比較データ記憶部から前記比較データを読み出すための比較データ読み出し情報および前記データ蓄積メモリから前記蓄積データを読み出すための蓄積データ読み出し情報を前記比較条件情報から抽出する情報抽出機能と、前記比較データ読み出し情報に基づいて前記比較データ記憶部内の比較データを読み出す比較データリード機能と、前記蓄積データ読み出し情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリード機能と、前記比較データリード機能が読み出した比較データと前記蓄積データリード機能が読み出した蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索機能とを有し、検索した蓄積データを前記外部装置に転送する転送処理部と、を備えることを特徴とする。
【００２２】
また、請求項６の発明にかかるデータ転送方法は、複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送方法において、前記データ蓄積メモリから所定の蓄積データを検索するための複数の比較条件情報を生成する比較条件生成ステップと、前記外部装置からの比較データを第１のメモリに記憶する比較データ記憶ステップと、前記第１のメモリが前記比較データを記憶すると、前記生成された比較条件情報を第２のメモリに記憶する比較条件記憶ステップと、前記第２のメモリが記憶する複数の前記比較条件情報を順番に１つずつ読み出すとともに、前記第１のメモリから前記比較データを読み出すための比較データ読み出し情報および前記データ蓄積メモリから前記蓄積データを読み出すための蓄積データ読み出し情報を前記比較条件情報から抽出する情報抽出ステップと、前記比較データ読み出し情報に基づいて前記第１のメモリ内の比較データを読み出す比較データリードステップと、前記蓄積データ読み出し情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリードステップと、前記読み出された比較データと前記読み出された蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索ステップと、前記検索した蓄積データを前記外部装置に転送する転送処理ステップと、を含むことを特徴とする。
【００２３】
この請求項１，６の発明によれば、生成された複数の比較条件情報を予め記憶しておき、記憶しておいた比較条件情報に基づいて蓄積データを検索するようにしている。
【００２４】
また、請求項２の発明にかかるデータ転送装置は、請求項１の発明において、前記各蓄積データは、前記比較データとの間で比較対象となる所定の比較用データブロックを含む可変長データフォーマットで記述され、前記比較条件情報は比較対象となる比較データのデータ長および蓄積データ内の所定のフィールドのデータ長に関する情報を含むことを特徴とする。
【００２５】
また、請求項７の発明にかかるデータ転送方法は、請求項６の発明において、前記各蓄積データは、前記比較データとの間で比較対象となる所定の比較用データブロックを含む可変長データフォーマットで記述され、前記比較条件情報は比較対象となる比較データのデータ長および蓄積データ内の所定のフィールドのデータ長に関する情報を含むことを特徴とする。
【００２６】
この請求項２，７の発明によれば、蓄積データが比較データのデータ長および蓄積データ内の所定のフィールドのデータ長に関する情報を含むようにしている。
【００２７】
また、請求項３の発明にかかるデータ転送装置は、請求項１または２の発明において、前記蓄積データリード機能は、前記蓄積データ読み出し情報に基づいて、前記転送処理部に接続されるとともに前記データ蓄積メモリ内の蓄積データを一時的に記憶するキャッシュメモリから前記データ蓄積メモリ内の蓄積データを読み出すことを特徴とする。
【００２８】
また、請求項８の発明にかかるデータ転送方法は、請求項６または７の発明において、前記蓄積データリードステップは、前記蓄積データ読み出し情報に基づいて、前記データ蓄積メモリ内の蓄積データを一時的に記憶するキャッシュメモリから前記データ蓄積メモリ内の蓄積データを読み出すことを特徴とする。
【００２９】
この請求項３，８の発明によれば、データ蓄積メモリ内の蓄積データを一時的に記憶するキャッシュメモリからデータ蓄積メモリ内の蓄積データを読み出すようにしている。このように、ディスクアレイ装置３０がキャッシュメモリ３１Ａを備えているのでチャネルアダプタ２０Ａからのデータのアクセス時間を短くすることが可能となる。
【００３０】
また、請求項４の発明にかかるデータ転送装置は、請求項３の発明において、前記蓄積データ読み出し情報は、前記キャッシュメモリ内で前記蓄積データが記憶されるアドレスに関するキャッシュメモリアドレスを含み、前記蓄積データリード機能は、前記キャッシュメモリアドレスに基づいて、前記キャッシュメモリから前記蓄積データを読み出すことを特徴とする。
【００３１】
また、請求項９の発明にかかるデータ転送方法は、請求項８の発明において、前記蓄積データ読み出し情報は、前記キャッシュメモリ内で前記蓄積データが記憶されるアドレスに関するキャッシュメモリアドレスを含み、前記蓄積データリードステップは、前記キャッシュメモリアドレスに基づいて、前記キャッシュメモリから前記蓄積データを読み出すことを特徴とする。
【００３２】
この請求項４，９の発明によれば、蓄積データ読み出し情報が蓄積データのキャッシュメモリアドレスを含むようにしている。
【００３３】
また、請求項５の発明にかかるデータ転送装置は、複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送装置において、前記外部装置からの比較データを記憶する比較データ記憶部と、自らの装置全体を制御するとともに、前記蓄積データと前記比較データとを比較するための比較条件情報を生成する制御部と、前記比較条件情報に基づいて前記比較データ記憶部内の比較データを読み出す比較データリード機能と、前記比較条件情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリード機能と、前記比較データリード機能が読み出した比較データと前記蓄積データリード機能が読み出した蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索機能とを有し、かつ検索した蓄積データを前記外部装置に転送する転送処理部と、を備え、前記比較データリード機能は、前記比較データ記憶部内の比較データを読み出して一時的に記憶するとともに、前記一時的に記憶した比較データが前記データ検索機能によって読み出されると次の比較データを比較データ記憶部から読み出して一時的に記憶する比較データ記憶バッファを有し、前記蓄積データリード機能は、前記データ蓄積メモリ内の蓄積データを読み出して一時的に記憶するとともに、前記一時的に記憶した蓄積データが前記データ検索機能によって読み出されると次の蓄積データを前記データ蓄積メモリから読み出して一時的に記憶する蓄積データ記憶バッファを有することを特徴とする。
【００３４】
また、請求項１０の発明にかかるデータ転送方法は、複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送方法において、前記外部装置からの比較データを比較データメモリに記憶する比較データ記憶ステップと、前記蓄積データと前記比較データとを比較するための比較条件情報を生成する比較条件生成ステップと、前記比較条件情報に基づいて前記比較データメモリ内の比較データを読み出す比較データリードステップと、前記比較条件情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリードステップと、前記読み出された比較データと前記読み出された蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索ステップと、前記検索した蓄積データを前記外部装置に転送する転送処理ステップと、を含み、前記比較データリードステップは、前記比較データメモリ内の比較データを読み出して第１のバッファに一時的に記憶するとともに、前記第１のバッファに一時的に記憶した比較データが読み出されると次の比較データを前記比較データメモリから読み出して前記第１のバッファに一時的に記憶し、前記蓄積データリードステップは、前記データ蓄積メモリ内の蓄積データを読み出して第２のバッファに一時的に記憶するとともに、前記第２のバッファに一時的に記憶した蓄積データが読み出されると次の蓄積データを前記データ蓄積メモリから読み出して前記第２のバッファに一時的に記憶することを特徴とする。
【００３５】
この請求項５，１０の発明によれば、データ蓄積メモリ内の蓄積データを読み出して一時的に記憶するとともに、一時的に記憶した蓄積データが読み出されると次の蓄積データをデータ蓄積メモリから読み出して一時的に記憶するようにしている。
【発明の効果】
【００３６】
請求項１，６の発明によれば、データを比較する度に蓄積データを検索するための複数の情報を１回ずつ生成して送信する必要がなくなるので、データ検索の際の負荷を軽減させることができ、データ検索を迅速に行うことができるとともにデータ転送を効率よく行うことが可能になるという効果を奏する。
【００３７】
請求項２，７の発明によれば、蓄積データが比較データのデータ長および蓄積データ内の所定のフィールドのデータ長に関する情報を含むので、データ検索を詳細に行うことができるという効果を奏する。
【００３８】
請求項３，８の発明によれば、データ蓄積メモリ内の蓄積データを一時的に記憶するキャッシュメモリからデータ蓄積メモリ内の蓄積データを読み出すので、蓄積データの読み出し処理を迅速に行うことができるという効果を奏する。
【００３９】
請求項４，９の発明によれば、蓄積データ読み出し情報が蓄積データのキャッシュメモリアドレスを含むので、蓄積データをキャッシュメモリアドレスに基づいて容易に検索することができるという効果を奏する。
【００４０】
請求項５，１０の発明によれば、データ蓄積メモリ内の蓄積データを読み出して一時的に記憶するバッファを備えているので、一時的に記憶しておいた蓄積データが読み出されると次の蓄積データを読み出すことが可能となり、伝送速度の速いバスによるデータの読み出しが伝送速度の遅いバスによるデータの読み出しを待つ必要がなくなるため、データ検索を迅速に行うことができるとともにデータ転送を効率よく行うことが可能になるという効果を奏する。
【発明を実施するための最良の形態】
【００４１】
以下に添付図面を参照して、この発明に係るデータ転送装置およびデータ転送方法の好適な実施例を詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００４２】
まず、本実施例１に係るＤＭＡ（Direct memory access）制御の概念について説明する。図１は、実施例１に係るＤＭＡ制御の概念を説明するための説明図である。ディスクアレイ装置３０は、ホストコンピュータ（外部装置）４０Ａから送信される指示情報に基づいてディスクアレイ装置３０内のデータをサーチ（検索）し、サーチしたデータをホストコンピュータ４０Ａに提供する。
【００４３】
本実施例１においては、ホストコンピュータ４０Ａから送信されるデータ検索を行なうためのサーチデータをチャネルアダプタ（データ転送装置）２０Ａ内のメモリ２１に格納する。また、ＭＰＵ２２は、複数の要求をディスクリプタ（データサーチを行うための比較条件情報）としてメモリ２１に生成する。そして、チャネルアダプタ２０Ａが備えるＤＭＡ転送を行うＤＭＡチップ１０がメモリ２１のディスクリプタ（一連の情報）を順番に読み出し、読み出したディスクリプタに基づいてメモリ２１内のサーチデータ（比較データ）とディスク３５Ａからのサーチデータを比較する。ＤＭＡチップ１０によってサーチされたデータは、ホストコンピュータ４０Ａに転送される。
【００４４】
図２は、実施例１に係るディスクアレイ装置の構成を示すブロック図である。ディスクアレイ装置３０は、ＤＭＡ制御回路を有したＤＭＡ（後述するＤＭＡチップ１０）が適用されるコンピュータシステムの一例であり、ファイバチャネルリンク４１Ａ，４１Ｂを介してホストコンピュータ４０Ａ，４０Ｂと接続されている。ディスクアレイ装置３０は、ホストコンピュータ４０Ａ，４０Ｂから送信される指示情報に基づいてディスクアレイ装置３０内のデータを検索し、検索したデータをホストコンピュータ４０Ａ，４０Ｂに提供するパーソナルコンピュータ等の装置である。
【００４５】
ディスクアレイ装置３０は、複数のディスク（データ蓄積メモリ）３５Ａ，３５Ｂを組み合わせることによって大量のデータを高速に読み書きするためのＲＡＩＤ（Redundant Arrays of Independent（Inexpensive） Disks）機能を有している。
【００４６】
ディスクアレイ装置３０は、チャネルアダプタ２０Ａ，２０Ｂ、キャッシュメモリ３１Ａ，３１Ｂ、キャッシュコントローラ３２Ａ，３２Ｂ、ディスクアダプタ３３Ａ，３３Ｂ、スイッチ３４Ａ，３４Ｂ、ディスク３５Ａ，３５Ｂを備えている。
【００４７】
なお、チャネルアダプタ２０Ａとチャネルアダプタ２０Ｂ、キャッシュメモリ３１Ａとキャッシュメモリ３１Ｂ、キャッシュコントローラ３２Ａとキャッシュコントローラ３２Ｂ、ディスクアダプタ３３Ａとディスクアダプタ３３Ｂ、スイッチ３４Ａとスイッチ３４Ｂ、ディスク３５Ａとディスク３５Ｂは、それぞれ同様の機能を有するのでここではキャッシュメモリ３１Ａ、キャッシュコントローラ３２Ａ、ディスクアダプタ３３Ａ、スイッチ３４Ａ、ディスク３５Ａを例にとって説明する。
【００４８】
チャネルアダプタ２０Ａは、ホストコンピュータ４０Ａとデータの送受信を行う通信Ｉ／Ｆ（インタフェース）の機能を有するとともに、ＤＭＡ転送を行うＤＭＡチップ１０を有している。キャッシュメモリ３１Ａは、複数のデータを記憶するディスク３５Ａのデータを一時的に記憶する。キャッシュコントローラ３２Ａは、キャッシュメモリ３１Ａを管理、制御する。ディスクアダプタ３３Ａは、ディスク３５Ａとデータの送受信を行う通信Ｉ／Ｆを有している。スイッチ３４Ａは、複数のディスク３５Ａを接続するとともに、各ディスクとディスクアダプタ３３Ａの接続を切替える。ディスク３５Ａは、複数のディスクからなりディスクドライブ（図示せず）によって制御されている。ディスク３５Ａは、転送（検索）対象となるデータ（蓄積データ）を複数記憶している。
【００４９】
チャネルアダプタ２０Ａはホストコンピュータ４０Ａからデータの読み出し（リード）要求を受けると、キャッシュメモリ３１Ａに対してホストコンピュータ４０Ａが指定した所定のデータがキャッシュメモリ３１Ａに存在するか否かを確認する。
【００５０】
キャッシュメモリ３１Ａにホストコンピュータ４０Ａが指定したデータがある場合、キャッシュメモリ３１Ａはチャネルアダプタ２０Ａに対してデータの読み出しが可能であることを通知する。チャネルアダプタ２０Ａはキャッシュメモリ３１Ａから読み出し可能なデータを読み出してホストコンピュータ４０Ａに転送する。
【００５１】
一方、キャッシュメモリ３１Ａにホストコンピュータ４０Ａが指定したデータがない場合、キャッシュメモリ３１Ａはディスクアダプタ３３Ａ、スイッチ３４Ａを介してホストコンピュータ４０Ａが指定した所定のデータを格納しているディスク３５Ａからデータを読み出してキャッシュメモリ３１Ａに記憶する（ステージング）。この後、キャッシュメモリ３１Ａは、チャネルアダプタ２０Ａに対してデータの読み出しが可能であることを通知する。チャネルアダプタ２０Ａは、キャッシュメモリ３１Ａから読み出し可能なデータを読み出してホストコンピュータ４０Ａに転送する。このように、ディスクアレイ装置３０がキャッシュメモリ３１Ａを備えているのでチャネルアダプタ２０Ａからのデータのアクセス時間を短くすることが可能となる。
【００５２】
なお、ホストコンピュータは、ホストコンピュータ４０Ａ，４０Ｂの２つである場合に限られず、ホストコンピュータは１つや３つ以上であってもよい。また、ディスクアレイ装置３０がチャネルアダプタ等を２つ備える構成に限られず、チャネルアダプタは１つや３つ以上であってもよい。
【００５３】
ここで、チャネルアダプタ２０Ａの構成を説明する。図３は、実施例１に係るチャネルアダプタの構成の一例を示すブロック図である。チャネルアダプタ２０Ａは、メモリ２１、ＭＰＵ（制御部）２２、チップセット２６、プロトコルチップ２３、ＳＦＦ（Small Form Factor）２４、ＤＭＡチップ（転送処理部）１０からなる。ここでは、メモリ２１が、特許請求の範囲の比較データ記憶部（第１のメモリ、比較データメモリ）、比較条件記憶部（第２のメモリ）に対応する。
【００５４】
プロトコルチップ２３は、ホストコンピュータ４０Ａとの接続に用いられるファイバチャネル（ファイバチャネルリンク４１Ａ）のプロトコルを制御するためのＬＳＩ（Large Scale Integration）等である。プロトコルチップ２３とホストコンピュータ４０Ａを光ケーブル等によって接続することによってディスクアレイ装置３０とホストコンピュータ４０Ａを接続している。ＳＦＦ２４は、電気―光変換を行なうモジュールである。
【００５５】
ＭＰＵ２２はチャネルアダプタ２０Ａの全体を制御するプロセッサ（ＬＳＩ）であり、チップセット２６はメモリ２１と接続されるメモリインターフェース（ＬＳＩ）である。メモリ２１は、ＤＲＡＭ（Dynamic Random Access Memory）等によって構成され、ＭＰＵ２２からのディスクリプタ（ＭＰＵ２２からＤＭＡチップ１０に対する命令）、ホストコンピュータ４０Ａからのサーチデータ等を記憶する。
【００５６】
ＤＭＡチップ１０は、キャッシュメモリ３１Ａと通信を行うインターフェース機能、ＤＭＡ機能（ＤＭＡ回路）を有している。ＤＭＡチップ１０は、ＭＰＵ２２から送信される指示情報に従ってキャッシュメモリ３１Ａとの間で通信処理を行なう。本実施例１においては、ＤＭＡチップ１０がＭＰＵ２２からメモリ２１に送信されてメモリ２１が記憶するディスクリプタに基づいてデータ転送を行なう。
【００５７】
ＭＰＵ２２、チップセット２６、プロトコルチップ２３、ＤＭＡチップ１０は、互いにＰＣＩ（Peripheral Component Interconnect）バスによって接続されており、互いにデータの転送を行なう。また、ＭＰＵ２２からプロトコルチップ２３やＤＭＡチップ１０への指示もＰＣＩバス等によって行なわれる。
【００５８】
チャネルアダプタ２０Ａは、ファイバチャネルリンク４１Ａを介してホストコンピュータ４０Ａからサーチデータを受信すると、受信したサーチデータをメモリ２１に格納する。また、ＭＰＵ２２は、所定のディスクリプタをメモリ２１に送信し、メモリ２１がＭＰＵ２２からのディスクリプタを記憶する。ＤＭＡチップ１０は、メモリ２１のディスクリプタを順番に１つずつ読み出して、メモリ２１が記憶するサーチデータとキャッシュメモリ３１Ａが記憶するサーチデータ（後述するレコード内のカウント部またはキー部）との比較処理を行う。すなわち、ＤＭＡチップ１０がメモリ２１とキャッシュメモリ３１Ａからそれぞれのサーチデータを読み出してサーチデータの比較を行なう。
【００５９】
つぎに、ＤＭＡチップ１０の構成を説明する。図４は、実施例１に係るＤＭＡチップの構成を示すブロック図である。ＤＭＡチップ１０は、メモリＩ／Ｆ部（メモリＩ／Ｆブロック）１１、サーチデータリード部（サーチデータリードブロック）１２、キー・カウントリード部（キー・カウントリードブロック）１５、ディスクリプタ制御部（ディスクリプタブロック）１４、キャッシュＩ／Ｆ部（キャッシュＩ／Ｆブロック）１７からなる。
【００６０】
メモリＩ／Ｆ部１１は、メモリ２１と接続される通信インターフェースを有しており、この通信インターフェースのプロトコル制御を行なう。メモリＩ／Ｆ部１１は、通信インターフェースを制御する（通信インターフェースに要求を出す）ことによってメモリ２１から所定のデータを受信する。
【００６１】
キャッシュＩ／Ｆ部１７は、キャッシュメモリ３１Ａと接続される通信インターフェースを有しており、この通信インターフェースのプロトコル制御を行なう。キャッシュＩ／Ｆ部１７は、通信インターフェースを制御することによってキャッシュメモリ３１Ａから所定のデータを受信する。
【００６２】
本実施例１においては、メモリＩ／Ｆ部１１、キャッシュＩ／Ｆ部１７の通信インターフェースはＰＣＩバスであり、それぞれＰＣＩバスプロトコル制御回路によって構成されている。
【００６３】
ディスクリプタ制御部（情報抽出機能）１４は、ＭＰＵ２２からの指示を受けて（指示情報を受信して）、メモリ２１が記憶しているディスクリプタを順番に１つずつ読み出す。ディスクリプタ制御部１４は、メモリ２１から読み出したディスクリプタの中から所定の情報（アドレス、データ長、モード）（比較データ読み出し情報、蓄積データ読み出し情報）を抽出してサーチデータリード部１２、キー・カウントリード部１５に送信する。ここでのアドレスには、キャッシュメモリ３１Ａのキャッシュアドレス（比較データアドレス）、メモリ２１のメモリアドレス（キャッシュメモリアドレス）が含まれている。
【００６４】
サーチデータリード部（比較データリード機能）１２は、ディスクリプタに指定されたメモリアドレスに基づいて、メモリ２１から比較データ長のサーチデータを読み出す。サーチデータリード部１２は、バッファ１３を有しており、このバッファ１３がメモリ２１から読み出したサーチデータを保持（記憶）する。バッファ１３が記憶するデータは、キー・カウントリード部１５によって読み出される。
【００６５】
キー・カウントリード（蓄積データリード機能、蓄積データ検索機能）部１５は、ディスクリプタに指定されたキャッシュアドレスに基づいて、キャッシュメモリ３１Ａから比較データ長のキー部またはカウント部のデータをサーチデータとして読み出す。キー・カウントリード部１５は、キャッシュＩ／Ｆ部１７を介してキャッシュメモリ３１Ａからデータ（サーチデータ）を受信すると、サーチデータリード部１２のバッファ１３からサーチデータを読み出す。キー・カウントリード部１５は、キャッシュメモリ３１Ａからのサーチデータとサーチデータリード部１２からのサーチデータを比較する。キー・カウントリード部１５は、サーチデータの比較結果が比較条件を満たしているか（Ｈｉｔ）、比較条件を満たしていないか（Ｍｉｓｓ）を判断し、この判断結果をディスクリプタ制御部１４へ通知する。
【００６６】
ディスクリプタ制御部１４、サーチデータリード部１２、キー・カウントリード部１５は、それぞれ制御機能（制御ブロック）を備えている。各制御ブロックはステートマシンを有し、相互に通信を行いながらＤＭＡチップ１０全体の動作を制御する。
【００６７】
つぎに、チャネルアダプタ２０Ａが行なうデータサーチの処理手順について説明する。図５は、チャネルアダプタのデータサーチの処理手順を示すシーケンス図である。ホストコンピュータ４０Ａから送信されるデータ検索を行なうためのサーチデータをチャネルアダプタ２０Ａ内のメモリ２１に格納する（１０）。ホストコンピュータ４０Ａからのサーチデータがメモリ２１に格納されると、ＭＰＵ２２はメモリ２１にディスクリプタを生成（格納）し（１１）、ＤＭＡチップ１０を起動させる（１２）。
【００６８】
ここで、ディスクアレイ装置３０におけるデータフォーマットおよびディスクリプタの構成について説明する。ディスクアレイ装置３０におけるデータフォーマットとして例えばＣＫＤフォーマットを用いる。図６は、ＣＫＤフォーマットの構成を示す図である。ディスクアレイ装置３０におけるデータはＣＫＤフォーマット（可変長データフォーマット）に従い、レコードを１つの単位としてディスク３５Ａ，３５Ｂ、キャッシュメモリ３１Ａ，３１Ｂに書かれる。各レコードは、カウント部（Ｃ）、キー部（Ｋ）、データ部（Ｄ）からなり、このうちカウント部は固定長、キー部とデータ部は可変長である。
【００６９】
カウント部はレコードの記録されるアドレスとデータ長に関する情報を含んでいる。キー部はＯＳ（Operating System）がレコードの識別のために用いる情報（インデックス等）である。データ部はユーザデータが格納される領域を示す情報である。
【００７０】
図７は、ディスクリプタの構成の一例を示す図である。ディスクリプタは、ＭＰＵ２２によってメモリ２１上に複数生成されており、各ディスクリプタは「モード」、「比較データ長」、「メモリアドレス」、「キャッシュアドレス」の各フィールドからなる。「モード」は、ＤＭＡチップ１０の動作を制御するためのフィールドであり、以下に示す内容（情報）を含んでいる。
（１）サーチデータの比較結果が比較条件を満たした時にＭＰＵ２２へ割り込み処理を行なうか否かの情報。このフィールドが「０」の時は割り込み処理を行なわず、「１」の時は割り込み処理を行なう。本実施例１においては、「モード」を例えば「１」に設定しておく。
（２）比較モード（どの場合に比較条件を満たしたと判断するかの情報）。このフィールドが「００」の時はサーチデータとキー部（またはカウント部）が等しい場合に比較条件を満たすと判断し、「０１」の時はサーチデータよりキー部が大きいか等しい場合に比較条件を満たすと判断し、「１Ｘ」の時はサーチデータよりキーが大きい場合に比較条件を満たすと判断する。
（３）新しいサーチデータをメモリ２１から読み出して使用するか否かの情報。このフィールドが「０」の時は直前のディスクリプタで使用したサーチデータをそのまま使用し、「１」の時はメモリ２１から新しいサーチデータを読み出して使用する。例えば、最初のディスクリプタに対してはこのビットを「１」に設定し、それ以外のディスクリプタに対してはこのビットを「０」に設定しておく。
【００７１】
「比較データ長」は、サーチデータとキー部またはカウント部（比較用データブロック）のバイト長を示している。ＣＫＤフォーマットではカウント部は常に８バイト（固定）であり、キー部は１〜２５５バイトまでの可変長であるため、「比較データ長」は１〜２５５バイトまでのバイト長を指定できるよう８ビットのフィールドとなっている。
【００７２】
「メモリアドレス」は、ＤＭＡチップ１０のためにＭＰＵ２２が用意したサーチデータのメモリ２１上のアドレスであり、３２ビットのフィールドによって指定される。「キャッシュアドレス」は、キャッシュメモリ３１Ａ上のレコード内のキー部またはカウント部のアドレスであり、６４ビットのフィールドによって指定される。「キャッシュアドレス」は、例えばキャッシュメモリ３１Ａの上位４バイトを指定するための「キャッシュアドレス（Ｕ）」とキャッシュメモリ３１Ａの下位４バイトを指定するための「キャッシュアドレス（Ｌ）」によって指定される。
【００７３】
ＤＭＡチップ１０は、メモリ２１に生成されたディスクリプタを読み出す（１３）。ＤＭＡチップ１０は、ディスクリプタに指定された「メモリアドレス」に基づいてメモリ２１からサーチデータを読み出す（１４）。ＤＭＡチップ１０は、ディスクリプタに指定された「キャッシュアドレス」に基づいてディスクアレイ装置３０のキャッシュメモリ３１Ａからサーチデータを読み出す（１５）。
【００７４】
具体的には、ＤＭＡチップ１０のディスクリプタ制御部１４が、ＭＰＵ２２からの指示を受けてメモリ２１が記憶しているディスクリプタを読み出し、読み出したディスクリプタの中から所定の情報（アドレス、データ長、モード）を抽出してサーチデータリード部１２、キー・カウントリード部１５に送信する。
【００７５】
サーチデータリード部１２は、ディスクリプタに指定されたメモリアドレスに基づいてメモリ２１から比較データ長のサーチデータを読み出し、読み出したサーチデータをバッファ１３に記憶する。
【００７６】
キー・カウントリード部１５は、ディスクリプタに指定されたキャッシュアドレスに基づいてキャッシュメモリ３１Ａから比較データ長のキー部またはカウント部のデータ（サーチデータ）を読み出す。キー・カウントリード部１５は、キャッシュＩ／Ｆ部１７を介してキャッシュメモリ３１Ａからデータ（サーチデータ）を受信すると、サーチデータリード部１２のバッファ１３からサーチデータを読み出す。キー・カウントリード部１５は、キャッシュメモリ３１Ａからのサーチデータとサーチデータリード部１２からのサーチデータ（キー部またはカウント部）を比較論理によって比較する。キー・カウントリード部１５は、サーチデータの比較結果が比較条件を満たしているか（Ｈｉｔ）、比較条件を満たしていないか（Ｍｉｓｓ）を判断し、この判断結果をディスクリプタ制御部１４へ通知する。
【００７７】
ＤＭＡチップ１０によるサーチデータの比較結果が「Ｍｉｓｓ」の場合、ＤＭＡチップ１０はメモリ２１から次の新たなディスクリプタを読み出す（１６）。そして、ＤＭＡチップ１０は、新たなディスクリプタに指定された「キャッシュアドレス」に基づいてキャッシュメモリ３１Ａから新たなサーチデータを読み出す（１７）。
【００７８】
ＤＭＡチップ１０は、メモリ２１からのサーチデータとキャッシュメモリ３１Ａからの新たなサーチデータを比較論理によって比較し、比較結果が「Ｈｉｔ」するまで（１６）および（１７）と同様の処理を繰り返す（（１８）、（１９））。すなわち、ＤＭＡチップ１０はメモリ２１からのサーチデータとキャッシュメモリ３１Ａ上の各レコードのカウント部またはキー部との比較を比較条件が満たされるまで連続して行う。
【００７９】
具体的には、ＤＭＡチップ１０はメモリ２１のディスクリプタに従って、所定のサーチ条件を満たすまで複数のレコードに対して順番にサーチデータとカウント部またはキー部の比較を行う。このとき、ＤＭＡチップ１０（チャネルアダプタ２０Ａ）は、ディスク３５Ａに対して直接アクセスできないので、ディスク３５Ａ上のレコードをサーチする動作はキャッシュメモリ３１Ａにステージングされたレコードに対するサーチ動作に置き換えられる。
【００８０】
ＤＭＡチップ１０（キー・カウントリード部１５）によるサーチデータの比較処理は、例えばバッファ１３のサーチデータの値とキャッシュメモリ３１Ａからのデータ（キー部）の値が等しい場合、キー部の値がサーチデータの値以上の場合、キー部の値がサーチデータの値より大きい場合に比較条件を満たす（Ｈｉｔ）と判断する。ＤＭＡチップ１０（ディスクリプタ制御部１４）は、サーチデータの比較結果が「Ｈｉｔ」した（ディスクリプタおよびホストコンピュータ４０Ａからのサーチデータに対応するデータに該当する）と判断すると、ＭＰＵ２２への割り込み処理を行なう（２０）。
【００８１】
つぎに、ＤＭＡチップ１０のステートマシンの動作について説明する。図８は、ＤＭＡチップのステートマシンのステート遷移を示すステート遷移図である。ＤＭＡチップ１０において、ディスクリプタ制御部１４、サーチデータリード部１２、キー・カウントリード部１５の各制御ブロックは相互に通信を行いながらＤＭＡチップ１０全体の動作を制御している。
【００８２】
（ディスクリプタ制御部１４のステート）
ディスクリプタ制御部１４は、「Ｉｄｌｅ」（ステート）状態（５１）の時にＭＰＵ２２からデータチェックの要求を受けると「Ｒｅｑｕｅｓｔ」状態（５２）になる（遷移する）。ディスクリプタ制御部１４は、「Ｒｅｑｕｅｓｔ」状態（５２）の時にメモリ２１からディスクリプタ制御部１４へのディスクリプタの転送が開始されると「Ｒｅｃｅｉｖｅ」状態（５３）になる。
【００８３】
ディスクリプタ制御部１４は、「Ｒｅｃｅｉｖｅ」状態（５３）の時にメモリ２１からディスクリプタ制御部１４へのディスクリプタの転送が終了すると「Ｈｏｌｄ」状態（５４）になる。
【００８４】
ディスクリプタ制御部１４は、「Ｈｏｌｄ」状態（５４）の時にサーチデータリード部１２のステートとキー・カウントリード部１５のステートが「Ｉｄｌｅ」状態であれば「Ｌｏａｄ」状態（５５）になる。
【００８５】
ディスクリプタ制御部１４は、「Ｌｏａｄ」状態（５５）の時にサーチデータリード部１２とキー・カウントリード部１５にディスクリプタを転送し、この転送処理が終了すると「Ｗａｉｔ」状態（５６）になる。
【００８６】
ディスクリプタ制御部１４の「Ｗａｉｔ」状態（５６）からのステート遷移は、キー・カウントリード部１５のステート（後述する（６４）、（６５））に依存する。すなわち、ディスクリプタ制御部１４は、「Ｗａｉｔ」状態（５６）の時にキー・カウントリード部１５のステートが「Ｈｉｔ」と判断した状態であれば、「Ｉｄｌｅ」状態（５１）になる。この後、ディスクリプタ制御部１４は、ＭＰＵ２２から新たな要求を受け取る。また、ディスクリプタ制御部１４は、「Ｗａｉｔ」状態（５６）の時にキー・カウントリード部１５のステートが「Ｍｉｓｓ」と判断した状態であれば、「Ｒｅｑｕｅｓｔ」状態（５２）になる。この後、ディスクリプタ制御部１４は、メモリ２１から新たな次のディスクリプタを受け取り、再度ステート遷移を開始する。
【００８７】
（サーチデータリード部１２のステート）
サーチデータリード部１２の「Ｉｄｌｅ」状態（５７）からのステート遷移は、ディスクリプタ制御部１４から受信したディスクリプタの「モード」を条件として次の状態に遷移する。すなわち、サーチデータリード部１２は、「Ｉｄｌｅ」状態（５７）の時にディスクリプタ制御部１４からディスクリプタを受信し、このディスクリプタの「モード」において新しいサーチデータをメモリ２１から読み出すか否かの設定が「１」（読み出す設定）の時は、「Ｒｅｑｕｅｓｔ」状態（５８）になる。
【００８８】
一方、サーチデータリード部１２は、「Ｉｄｌｅ」状態（５７）の時にディスクリプタ制御部１４からディスクリプタを受信し、このディスクリプタの「モード」において新しいサーチデータをメモリ２１から読み出すか否かの設定が「０」（読み出さない設定）の時は、「Ｒｅｃｅｉｖｅ」状態（５９）になる。
【００８９】
また、サーチデータリード部１２は、「Ｒｅｑｕｅｓｔ」状態（５８）の時にメモリ２１からのデータ転送が開始されると、「Ｒｅｃｅｉｖｅ」状態（５９）になる。サーチデータリード部１２は、「Ｒｅｃｅｉｖｅ」状態（５９）の時にメモリ２１からのデータの転送処理が終了する、またはディスクリプタの「モード」において新しいサーチデータをメモリ２１から読み出さない設定の時、「Ｈｏｌｄ」状態（６０）になる。
【００９０】
サーチデータリード部１２の「Ｈｏｌｄ」状態（６０）は、キー・カウントリード部１５において「Ｈｉｔ」（６４）または「Ｍｉｓｓ」（６５）と判断された後（比較処理の終了後）に「Ｉｄｌｅ」状態（５７）に遷移する。
【００９１】
（キー・カウントリード部１５のステート）
キー・カウントリード部１５は、「Ｉｄｌｅ」状態（６１）の時にメモリ２１からサーチデータの受信を終了すると、「Ｒｅｑｕｅｓｔ」状態（６２）になる。
【００９２】
キー・カウントリード部１５は、「Ｒｅｑｕｅｓｔ」状態（６２）の時にキャッシュメモリ３１Ａからデータ転送が開始されると、「Ｒｅｃｅｉｖｅ」状態（６３）になる。キー・カウントリード部１５は、「Ｒｅｃｅｉｖｅ」状態（６３）の時にキャッシュメモリ３１Ａからのデータ転送が終了すると、データの比較処理（比較論理によるデータの比較）が行われる。そして、キー・カウントリード部１５において、データの比較結果が比較条件を満たすと判断されると、キー・カウントリード部１５は「Ｈｉｔ」と判断した状態（６４）になる。一方、キー・カウントリード部１５において、データの比較結果が比較条件を満たさないと判断されると、キー・カウントリード部１５は「Ｍｉｓｓ」と判断した状態（６５）になる。このキー・カウントリード部１５によるデータの比較処理が終了した後、サーチデータリード部１２、ディスクリプタ制御部１４は次の状態に遷移する。
【００９３】
なお、本実施例１においてはキー・カウントリード部１５によるサーチデータの比較処理において「Ｈｉｔ」の場合に、データチェックを完了し、ＤＭＡチップ１０からＭＰＵ２２へ割り込みを行うこととしたが、キー・カウントリード部１５によるサーチデータの比較処理において「Ｍｉｓｓ」の場合に、データチェックを完了し、ＤＭＡチップ１０からＭＰＵ２２へ割り込みを行うこととしてもよい。
【００９４】
また、本実施例１においてはチャネルアダプタのメモリ２１にディスクリプタを生成することとしたが、ディスクリプタをＤＭＡチップ１０内の所定の記憶手段に生成することとしてもよい。
【００９５】
また、本実施例１においてはチャネルアダプタのメモリ２１がディスクリプタとホストコンピュータ４０Ａからのサーチデータを記憶することとしたが、ディスクリプタとホストコンピュータ４０Ａからのサーチデータは異なる記憶手段によって記憶する構成としてもよい。
【００９６】
このように、ＤＭＡチップ１０がディスクリプタ制御部１４を有するとともにＭＰＵ２２がメモリ２１にディスクリプタを生成するので、１組のサーチデータを比較する度に、ＭＰＵ２２が各レコードのキー部またはカウント部の比較を行うための情報を生成して送信する必要がなくなる。したがって、ＭＰＵ２２がＤＭＡチップ１０に一度データサーチの要求を行うと、ＤＭＡチップ１０はメモリ２１に生成されたディスクリプタに基づいてデータサーチを続けることが可能となる。
【００９７】
このように実施例１によれば、データサーチの際にＭＰＵ２２への負荷を軽減させることができ、ＭＰＵ２２が他の処理を行いながらＤＭＡチップ１０がデータサーチを行うことが可能となる。したがって、データサーチの高速化が図れ、データ転送の処理効率を向上させることが可能となる。
【実施例２】
【００９８】
実施例２においては、ホストコンピュータ４０Ａからのサーチデータのリード処理とキャッシュメモリ３１Ａからのキー部またはカウント部のリード処理を同時に起動し、キー・カウントリード部がバッファに格納したサーチデータが比較部５４に読み出されると次のサーチデータを読み出す。
【００９９】
図９は、実施例２に係るチャネルアダプタの構成の一例を示すブロック図である。図９の各構成要素のうち図３に示す実施例１のチャネルアダプタ２０Ａと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。ここでは、メモリ２１が、特許請求の範囲の比較データ記憶部に対応する。
【０１００】
実施例２に係るチャネルアダプタ２０Ａは、メモリ２１、ＭＰＵ２２、チップセット２６、ｓｅｒｄｅｓ２９、プロトコル−ＤＭＡチップ５０からなる。ｓｅｒｄｅｓ（Serializer／Deserializer）２９は、パラレルデータをシリアルデータに変換し、シリアルデータをパラレルデータに変換するデバイスである。
【０１０１】
プロトコル−ＤＭＡチップ（転送処理部）５０は、プロトコルチップ２３の機能とＤＭＡチップ１０の機能を有している。プロトコル−ＤＭＡチップ５０は、ＰＣＩバス、ＰＣＩ−Ｘバス等によってキャッシュメモリ３１Ａと接続されるとともに、ｓｅｒｄｅｓ２９を介してホストコンピュータ４０Ａと接続されている。
【０１０２】
図１０は、実施例２に係るプロトコル−ＤＭＡチップの構成の一例を示すブロック図である。図１０各構成要素のうち図４に示す実施例１のＤＭＡチップ１０と同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【０１０３】
プロトコル−ＤＭＡチップ５０は、メモリＩ／Ｆ部１１、ディスクリプタ制御部１４、サーチデータリード部１２、キャッシュＩ／Ｆ部１７、ホスト（Personal Computer）Ｉ／Ｆ部５１、プロトコルコントローラ部５２、比較部５４、キー・カウントリード部５５からなる。
【０１０４】
メモリＩ／Ｆ部１１は、ディスクリプタ制御部１４と接続されている。ディスクリプタ制御部１４は、サーチデータリード部１２、比較部５４、キー・カウントリード部５５と接続されている。ディスクリプタ制御部１４は、ＭＰＵ２２からの指示を受けてメモリ２１が記憶しているディスクリプタを読み出し、ディスクリプタ内の情報をサーチデータリード部１２、比較部５４、キー・カウントリード部５５に送信する。ホスト（Personal Computer）Ｉ／Ｆ部５１は、ホストコンピュータ４０Ａとデータの送受信を行う通信Ｉ／Ｆ（インタフェース）の機能を有している。
【０１０５】
プロトコルコントローラ部５２は、ホストコンピュータ４０Ａとの間で通信する際のプロトコルを制御する。プロトコルコントローラ部５２は、ＳＲＡＭ（Static RAM）等で構成されるバッファ５３を備えている。プロトコルコントローラ部５２は、サーチデータリード部１２とホストＩ／Ｆ部５１に接続されており、ホストＩ／Ｆ部５１からのサーチデータをバッファ５３に格納した後、サーチデータリード部１２に送信する。
【０１０６】
サーチデータリード部１２は、プロトコルコントローラ部５２と所定のバス（ファイバチャネル等）によって接続されている。サーチデータリード部１２は、バッファ（第１のバッファ）１３を備えており、プロトコルコントローラ部５２からのサーチデータをバッファ１３に格納した後、サーチデータを比較部５４に送信する。すなわち、バッファ１３はバッファ５３のサーチデータを読み出して一時的に記憶するとともに、一時的に記憶したサーチデータが比較部５４によって読み出されると次のサーチデータをバッファ５３から読み出して一時的に記憶する。
【０１０７】
キー・カウントリード部５５は、キャッシュＩ／Ｆ部１７と所定のバス（ＰＣＩバス等）によって接続されている。キー・カウントリード部５５は、バッファ（第２のバッファ）５６を備えている。キー・カウントリード部５５は、キャッシュＩ／Ｆ部１７を介してキャッシュメモリ３１Ａからサーチデータ（キー部またはカウント部）を受信し、バッファ５６に格納した後、サーチデータを比較部５４に送信する。キー・カウントリード部５５は、バッファ５６に格納したデータが比較部５４によって読み出されると、キャッシュメモリ３１Ａから次のサーチデータを読み出してバッファ５６に格納する。すなわち、バッファ５６はキャッシュメモリ３１Ａのサーチデータを読み出して一時的に記憶するとともに、一時的に記憶したサーチデータが比較部５４によって読み出されると次のサーチデータをキャッシュメモリ３１Ａから読み出して一時的に記憶する。
【０１０８】
比較部５４は、サーチデータリード部１２のバッファ１３が格納するサーチデータとキー・カウントリード部５５のバッファ５６が格納するサーチデータを読み出し、それぞれのサーチデータを比較する。
【０１０９】
実施例２においては、サーチデータリード部１２とプロトコルコントローラ部５２を接続するバスと、キー・カウントリード部５５とキャッシュＩ／Ｆ部１７を接続するバスの伝送速度が異なる。例えば、キー・カウントリード部５５とキャッシュＩ／Ｆ部１７を接続するバスの伝送速度がサーチデータリード部１２とプロトコルコントローラ部５２を接続するバスの伝送速度よりも速い。
【０１１０】
ホストコンピュータ４０Ａから指示によってデータのサーチを行う際、サーチデータリード部１２によるサーチデータのリード処理とキー・カウントリード部１５によるサーチデータのリード処理を同時に起動する。サーチデータリード部１２はバッファ１３に格納したサーチデータが比較部５４に読み出されると次のサーチデータを読み出し、キー・カウントリード部５５はバッファ５６に格納したサーチデータが比較部５４に読み出されると次のサーチデータを読み出す。比較部５４は、サーチデータリード部１２およびキー・カウントリード部５５からサーチデータを読み出すと、それぞれのサーチデータを比較する処理を繰り返す。
【０１１１】
なお、サーチデータリード部１２とプロトコルコントローラ部５２を接続するバスの伝送速度がキー・カウントリード部５５とキャッシュＩ／Ｆ部１７を接続するバスの伝送速度よりも速い場合であってもよい。
【０１１２】
なお、本実施例２においてはプロトコル−ＤＭＡチップ５０がディスクリプタ制御部１４を備える構成としたが、プロトコル−ＤＭＡチップ５０がディスクリプタ制御部１４の代わりにレジスタ部（レジスタブロック）を備える構成としてもよい。この場合、レジスタ部が１組のサーチデータを比較する度に、ＭＰＵ２２に割り込み処理を行い、ＭＰＵ２２からＤＭＡチップ１０にメモリアドレス、キャッシュアドレス、モード等の情報が送信される。
【０１１３】
このように実施例２によれば、キー・カウントリード部５５がバッファ５６を備えるので、キー・カウントリード部５５は、比較部５４によるサーチデータの読み出し処理が完了するとプロトコルコントローラ部５２からサーチデータリード部１２へのサーチデータの読み出し処理が完了する前であっても、キャッシュメモリ３１Ａから次のサーチデータの読み出し処理を行うことが可能となる。換言すると、プロトコルコントローラ部５２内のバッファ５３に格納されたサーチデータをサーチデータリード部１２が全て読み出す前であってもキー・カウントリード部１５は新たなサーチデータの読み出しを行うことが可能となる。これにより、伝送速度の速いバスのリード転送が伝送速度の遅いバスのリード転送を待つことなくリード転送を行うことが可能となり、効率のよいデータ転送を行うことが可能となる。
【実施例３】
【０１１４】
実施例３においては、ＭＰＵ２２がデータ処理をおこなっている間にＤＭＡチップが休止することなくデータサーチを実行することにより、データサーチの高速化を図るとともに、データ転送の処理効率を向上させる場合について説明する。
【０１１５】
図１１は、実施例３に係るＤＭＡ制御の概念を説明するための説明図である。図１１には、実施例３に係るＤＭＡ制御処理（黒丸）と実施例１，２のＤＭＡ制御処理（白丸）とが対比されている。
【０１１６】
実施例１，２のＤＭＡ制御処理では、ホストコンピュータ４０Ａからデータサーチの実行コマンド（コマンド０，コマンド１，コマンド２）が連続して発行された場合に、ＭＰＵ２２が、各コマンドに対応するディスクリプタ（ディスクリプタ０，ディスクリプタ１，ディスクリプタ２）を生成する。
【０１１７】
そして、ＤＭＡチップ１０は、生成したディスクリプタのうち１つのディスクリプタ（ここでは、ディスクリプタ０）を用いてホストコンピュータ４０Ａにより要求されたデータをキャッシュメモリ３１Ａから検索するデータ処理を開始する。
【０１１８】
なお、ホストコンピュータ４０Ａにより要求されたデータがキャッシュメモリ３１Ａに記憶されておらず、ディスク３５Ａから当該データが読み出された場合には、キャッシュメモリ３１Ａはそのデータを記憶する。
【０１１９】
続いて、データ検索の結果、ホストコンピュータ４０Ａにより要求されたデータがキャッシュメモリ３１Ａから検索された場合には、ＤＭＡチップ１０は、ＭＰＵ２２に対して割り込みを行う。そして、ＭＰＵ２２は、キャッシュメモリ３１Ａからそのデータを読み出すデータリード処理をおこない、コマンド０に対応するデータ処理が終了する。
【０１２０】
その後、ＤＭＡチップ１０は、別のディスクリプタ（ここでは、ディスクリプタ１）を用いて上述したデータ処理と同様の処理を実行する。このようにして、コマンド０、コマンド１、コマンド２に対応するデータ処理が順に実行される。
【０１２１】
一方、本実施例３に係るＤＭＡ制御処理では、後に説明するＤＭＡチップ２００がＭＰＵ２２に対して割り込みを行った場合に、ＤＭＡチップ２００はＭＰＵ２２のデータリード処理が終了するのを待たずにつぎのコマンドに対するデータ処理を開始する。
【０１２２】
この場合、ＭＰＵ２２により生成されるディスクリプタには、ホストコンピュータ４０Ａから受信したサーチデータを一意に識別する識別情報が含まれている。そして、ＤＭＡチップ２００は、ホストコンピュータ４０Ａにより要求されたデータがキャッシュメモリ３１Ａから検索された場合に、データが検索されたことを示す情報を上記識別情報と対応付けてメモリに記憶し、つぎのコマンドに対するデータ処理を開始する。
【０１２３】
一方、ＭＰＵ２２は、ＤＭＡチップ２００からの割り込みを受け付けた後、メモリに記憶されたデータの検索結果の情報に基づいて、キャッシュメモリ３１Ａから検索されたデータを読み出すデータリード処理をおこなう。
【０１２４】
このように、本実施例３に係るＤＭＡ制御処理では、ＤＭＡチップ２００がＭＰＵ２２によるデータリード処理の終了を待つことなくつぎのデータサーチ処理を実行するので、データ処理を高速かつ並列的に実行することができる。
【０１２５】
通常、ＤＭＡチップ２００がおこなうデータサーチ処理は数十から数百ｎｓ程度の時間を要するのに対し、ＭＰＵ２２がおこなうデータ処理には数十ｍｓ程度の時間を要するので、ＤＭＡチップ２００が、ＭＰＵ２２によるデータ処理が終了するのを待つことなくつぎのデータサーチを実行することにより大幅に処理能力を向上させることができるようになる。
【０１２６】
つぎに、実施例３に係るＭＰＵの機能について説明する。なお、ＭＰＵが搭載されるチャンネルアダプタの構成は、図３に示した構成と同様であるので、ここでは、図３を用いて実施例３に係るＭＰＵ２２の機能を説明する。
【０１２７】
実施例３に係るＭＰＵ２２は、ホストコンピュータ４０Ａからサーチデータがメモリ２１に格納されると、ディスクリプタを生成してメモリ２１に格納するとともに、ＤＭＡチップ２００を起動させる。ここで、ＭＰＵ２２が生成するディスクリプタには、ホストコンピュータ４０Ａにより送信されたサーチデータを識別する識別情報が含まれている。
【０１２８】
また、ＭＰＵ２２は、ホストコンピュータ４０Ａにより送信されたサーチデータに対応するデータが検索されたか否かを示す検索処理の処理状態に係る情報に基づいて、キャッシュメモリ３１Ａから検索されたデータを読み出すデータリード処理をおこなう。
【０１２９】
図１２は、実施例３に係るディスクリプタの構成の一例を示す図である。ディスクリプタは、ＭＰＵ２２により各サーチデータに対して複数生成され、メモリ２１に格納される。
【０１３０】
ここで、ある１つのサーチデータに対して生成された複数のディスクリプタの集合を、ディスクリプタブロックと呼ぶ。また、ここでは、各ディスクリプタブロックに３つのディスクリプタが属しているものとする。このディスクリプタブロックについては、図１３を用いて詳しく説明する。
【０１３１】
図１２に示すように、ディスクリプタは「スタートフラグ」、「ラストフラグ」、「タグナンバー」、「モード」、「比較データ長」、「メモリアドレス」、「キャッシュアドレス」の各フィールドからなる。
【０１３２】
「スタートフラグ」は、このディスクリプタがディスクリプタブロックにおいて最初にデータサーチが行われるディスクリプタか否かを示す１ビットの情報であり、このフィールドが「１」の時データサーチが最初に行われるディスクリプタであることを示し、「０」の時それ以外のディスクリプタであることを示す。
【０１３３】
「ラストフラグ」は、このディスクリプタがディスクリプタブロックにおいて最後にデータサーチが行われるディスクリプタか否かを示す１ビットの情報であり、このフィールドが「１」の時データサーチが最後に行われるディスクリプタであることを示し、「０」の時それ以外のディスクリプタであることを示す。
【０１３４】
また、「タグナンバー」は、ホストコンピュータ４０Ａにより送信されたサーチデータを識別する２ビットの識別番号であり、ディスクリプタブロックごとに割り当てられる番号である。
【０１３５】
ここで、ディスクリプタブロックについて説明する。図１３は、ディスクリプタブロックについて説明する図である。ディスクリプタブロックの数は任意（たとえば、２０００個など）であるが、図１３では、ディスクリプタブロックを４つまで示している（ディスクリプタブロック０，ディスクリプタブロック１，ディスクリプタブロック２，ディスクリプタブロック３）。
【０１３６】
各ディスクリプタブロックは、３つのディスクリプタ（ディスクリプタ０，ディスクリプタ１，ディスクリプタ２）の集合となっている。そして、各ディスクリプタブロックに属するディスクリプタには、共通の「タグナンバー」が割り振られている。
【０１３７】
また、ディスクリプタ０の「スタートフラグ」が「１」に設定され、ディスクリプタ０が最初にデータサーチが行われるディスクリプタとなっている。また、ディスクリプタ２の「ラストフラグ」が「１」に設定され、ディスクリプタ０が最後にデータサーチが行われるディスクリプタとなっている。ディスクリプタ１は、「スタートフラグ」および「ラストフラグ」が「０」に設定され、２番目にデータサーチが行われるディスクリプタとなっている。
【０１３８】
図１２の説明に戻ると、「モード」、「比較データ長」、「メモリアドレス」、「キャッシュアドレス」は、図７で説明した「モード」、「比較データ長」、「メモリアドレス」、「キャッシュアドレス」と同様のものである。ここで、本実施例３においては、「モード」を「１」に設定しておく。
【０１３９】
つぎに、実施例３に係るＤＭＡチップ２００の構成について説明する。図１４は、実施例３に係るＤＭＡチップ２００の構成を示すブロック図である。このＤＭＡチップ２００は、メモリＩ／Ｆ部（メモリＩ／Ｆブロック）２０１、サーチデータリード部（サーチデータリードブロック）２０２、バッファ２０３、ディスクリプタ制御部（ディスクリプタブロック）２０４、キー・カウントリード部（キー・カウントリードブロック）２０５、タグテーブル記憶部２０６、キャッシュＩ／Ｆ部（キャッシュＩ／Ｆブロック）２０７からなる。
【０１４０】
メモリＩ／Ｆ部２０１、サーチデータリード部２０２、バッファ２０３、キャッシュＩ／Ｆ部２０７は、図４に示したＤＭＡチップ１０のメモリＩ／Ｆ部１１、サーチデータリード部１２、バッファ１３、キャッシュＩ／Ｆ部１７と同様の機能を有する機能部である。また、メモリＩ／Ｆ部２０１、キャッシュＩ／Ｆ部２０７の通信インターフェースはＰＣＩバスであり、それぞれＰＣＩバスプロトコル制御回路によって構成されている。
【０１４１】
タグテーブル記憶部２０６は、ディスクリプタを用いたデータサーチ処理の処理状態に係る情報を含んだタグテーブルを記憶するメモリである。図１５は、タグテーブルの構成について説明する図である。このタグテーブルは、「タグナンバー」、「ヒットフラグ」、「エラーフラグ」、「ラストフラグ」、「バリッドフラグ」の各フィールドからなる。
【０１４２】
「タグナンバー」は、図１２で説明した「タグナンバー」と同様のものであり、ホストコンピュータ４０Ａにより送信されたサーチデータを識別し、ディスクリプタブロックごとに割り当てられる番号である。
【０１４３】
「ヒットフラグ」は、後述するキー・カウントリード部２０５によりキャッシュメモリ３１Ａのサーチデータとサーチデータリード部２０２のサーチデータとが比較され、データの比較結果が比較条件を満足した場合に、比較条件を満足したことを示す情報である。具体的には、「ヒットフラグ」の初期値は「０」に設定されるが、比較条件を満足した場合には「ヒットフラグ」の値は「１」に更新される。
【０１４４】
「エラーフラグ」は、キー・カウントリード部２０５によりキャッシュメモリ３１Ａのサーチデータとサーチデータリード部２０２のサーチデータとが比較され、サーチデータの比較結果が比較条件を満足しなかった場合に、比較条件を満足なかったことを示す情報である。具体的には、「エラーフラグ」の初期値は「０」に設定されるが、比較条件を満足しなかった場合には「エラーフラグ」の値は「１」に更新される。
【０１４５】
「ラストフラグ」は、ディスクリプタブロックに属する各ディスクリプタに対するデータサーチ処理がすべて終了した場合に、データサーチ処理がすべて終了したことを示す情報である。具体的には、「ラストフラグ」の初期値は「０」に設定されるが、データサーチ処理がすべて終了した場合には「ラストフラグ」の値は「１」に更新される。
【０１４６】
「バリッドフラグ」は、「タグナンバー」に対応するデータに対する処理が完了したか否かを示す情報である。具体的には、サーチデータの比較結果が比較条件を満足した場合、あるいは、サーチデータの比較結果が比較条件を満足しなかった場合に、「バリッドフラグ」が「１」に設定される。
【０１４７】
ＭＰＵ２２は、「バリッドフラグ」が「１」である場合に、キャッシュメモリ３１Ａからデータを読み出す。そして、ＭＰＵ２２によりキャッシュメモリ３１Ａからデータを読み出す読み出し処理が完了した後、「バリッドフラグ」の値が「０」に更新される。サーチデータの比較結果が比較条件を満足しなかった場合には、「タグナンバー」や「エラーフラグ」、「ラストフラグ」の値とともに、「バリッドフラグ」の値が「０」にクリアされる。
【０１４８】
なお、「バリッドフラグ」が「１」である処理状態の情報が複数ある場合に、どれを先に処理するかの優先順位の設定はＭＰＵ２２側でおこなわれるため、ＤＭＡチップ２００側では優先順位の設定は行わない。
【０１４９】
図１５において、「タグナンバー」が「０」の例は、「ヒットフラグ」が「１」、「エラーフラグ」が「０」、「ラストフラグ」が「１」、「バリッドフラグ」が「０」であるので、サーチデータの比較結果が比較条件を満足し、ディスクリプタブロックに属する各ディスクリプタに対するデータサーチ処理がすべて終了し、ＭＰＵ２２によりキャッシュメモリ３１Ａからデータが読み出された状態であることを示している。この場合、各フィールドの値は「０」にクリアされる。
【０１５０】
また、「タグナンバー」が「１」の例は、「ヒットフラグ」が「０」、「エラーフラグ」が「１」、「ラストフラグ」が「１」、「バリッドフラグ」が「０」であるので、サーチデータの比較結果が比較条件を満足せず、ディスクリプタブロックに属する各ディスクリプタに対するデータサーチ処理がすべて終了し、サーチデータの比較結果が比較条件を満足しなかった状態であることを示している。この場合、各フィールドの値は「０」にクリアされる。
【０１５１】
また、「タグナンバー」が「２」の例は、「ヒットフラグ」が「１」、「エラーフラグ」が「０」、「ラストフラグ」が「０」、「バリッドフラグ」が「１」であるので、サーチデータの比較結果が比較条件を満足し、ディスクリプタブロックに属する各ディスクリプタに対するデータサーチ処理がすべて終了しておらず（ディスクリプタをすべて用いる以前にサーチデータの比較結果が比較条件を満足し、データサーチ処理がそこで打ち切られた）、ＭＰＵ２２によるデータ処理が完了するのを待機している状態であることを示している。
【０１５２】
また、「タグナンバー」が「３」の例は、「ヒットフラグ」が「０」、「エラーフラグ」が「０」、「ラストフラグ」が「０」、「バリッドフラグ」が「０」であるので、まだ「３」の「タグナンバー」に対応するディスクリプタがデータサーチ処理に用いられていない状態であることを示している。
【０１５３】
図１４の説明に戻ると、ディスクリプタ制御部（情報抽出機能）２０４は、ＭＰＵ２２からの指示を受けて（指示情報を受信して）、メモリ２１が記憶しているディスクリプタを順番に１つずつ読み出す。
【０１５４】
そして、ディスクリプタ制御部２０４は、タグテーブル記憶部２０６に記憶されたタグテーブルの「タグナンバー」にディスクリプタの「タグナンバー」を登録し、さらにディスクリプタがディスクリプタブロックにおいて最後にデータサーチが行われるディスクリプタである場合には、タグテーブルの「ラストフラグ」を「１」に設定する。ディスクリプタ制御部２０４は、この「ラストフラグ」の情報を参照することにより、つぎのディスクリプタブロックのデータサーチ処理に移るか否かを判断する。
【０１５５】
続いて、ディスクリプタ制御部２０４は、メモリ２１から読み出したディスクリプタの中から所定の情報（アドレス、データ長、モード）（比較データ読み出し情報、蓄積データ読み出し情報）を抽出してサーチデータリード部２０２、キー・カウントリード部２０５に送信する。ここでのアドレスには、キャッシュメモリ３１Ａのキャッシュアドレス（比較データアドレス）、メモリ２１のメモリアドレス（キャッシュメモリアドレス）が含まれている。
【０１５６】
また、ディスクリプタ制御部２０４は、キー・カウントリード部２０５によりサーチデータの比較処理がなされ、その比較結果が比較条件を満足した場合に、ＭＰＵ２２に対して割り込み要求をおこなうとともに、タグテーブルの情報をＭＰＵ２２に送信する。
【０１５７】
さらに、ディスクリプタ制御部２０４は、サーチデータの比較結果が比較条件を満足し、キャッシュメモリ３１ＡからデータがＭＰＵ２２により読み出された場合、あるいは、サーチデータの比較結果が比較条件を満足しなかった場合に、タグテーブル記憶部２０６に記憶されているタグテーブルの「バリッドフラグ」を「１」から「０」に更新するとともに、「０」の「バリッドフラグ」に対応する「タグナンバー」、「スタートフラグ」、「エラーフラグ」、「ラストフラグ」の値も「０」にクリアする処理をおこなう。
【０１５８】
キー・カウントリード（蓄積データリード機能、蓄積データ検索機能）部２０５は、ディスクリプタに指定されたキャッシュアドレスに基づいて、キャッシュメモリ３１Ａから比較データ長のキー部またはカウント部のデータをサーチデータとして読み出す。
【０１５９】
そして、キー・カウントリード部２０５は、キャッシュＩ／Ｆ部１７を介してキャッシュメモリ３１Ａからデータ（サーチデータ）を受信すると、サーチデータリード部２０２のバッファ２０３からサーチデータを読み出し、キャッシュメモリ３１Ａからのサーチデータとサーチデータリード部２０２からのサーチデータとを比較論理によって比較する。
【０１６０】
その後、キー・カウントリード部２０５は、サーチデータの比較結果が比較条件を満たしているか否かを判断し、この判断結果をディスクリプタ制御部２０４に通知する。また、キー・カウントリード部２０５は、その判断結果に基づいて、タグテーブル記憶部２０６に記憶されたタグテーブルの「ヒットフラグ」、「エラーフラグ」を更新し、さらに「ヒットフラグ」を「１」に更新した場合には、ＭＰＵ２２によるデータリード処理を待ち受けるため「バリッドフラグ」を「１」に更新する。
【０１６１】
なお、ディスクリプタ制御部２０４、サーチデータリード部２０２、キー・カウントリード部２０５は、それぞれ制御機能（制御ブロック）を備えている。各制御ブロックはステートマシンを有し、相互に通信を行いながらＤＭＡチップ２００全体の動作を制御する。
【０１６２】
つぎに、実施例３に係るチャネルアダプタのデータサーチの処理手順について説明する。図１６は、実施例３に係るチャネルアダプタのデータサーチの処理手順を示すシーケンス図である。また、図１７は、タグテーブルの更新について説明する図である。なお、ここでは、ホストコンピュータ４０Ａからデータ検索を行なうためのサーチデータを３つ連続して受信した場合について説明する。
【０１６３】
図１６に示すように、チャネルアダプタ２０Ａ内のメモリ２１は、ホストコンピュータ４０Ａからデータ検索を行なうためのサーチデータ（サーチデータ０，サーチデータ１，サーチデータ２）が送信された場合に、そのサーチデータを格納する（（１００），（１０２），（１０４））。
【０１６４】
そして、ホストコンピュータ４０Ａからのサーチデータがメモリ２１に格納されると、ＭＰＵ２２は各サーチデータに対応するディスクリプタ（ディスクリプタ０，ディスクリプタ１，ディスクリプタ２）を生成してメモリ２１に格納し（（１０１），（１０３），（１０５））、ＤＭＡチップ２００を起動してサーチデータ０に対するデータサーチ処理を開始する（１０６）。
【０１６５】
続いて、ＤＭＡチップ２００は、メモリ２１に生成されたディスクリプタ０を読み出す（１０７）。そして、ＤＭＡチップ２００は、ディスクリプタに指定された「メモリアドレス」に基づいてメモリ２１からサーチデータを読み出し（（１０８），（１０９））、ディスクリプタに指定された「キャッシュアドレス」に基づいてディスクアレイ装置３０のキャッシュメモリ３１Ａからサーチデータを読み出す（（１１０），（１１１））。
【０１６６】
具体的には、ＤＭＡチップ２００のディスクリプタ制御部２０４が、ＭＰＵ２２からの指示を受けてメモリ２１が記憶しているディスクリプタを読み出し、読み出したディスクリプタの中から所定の情報（アドレス、データ長、モード）を抽出してサーチデータリード部２０２、キー・カウントリード部２０５に送信する。
【０１６７】
サーチデータリード部２０２は、ディスクリプタに指定されたメモリアドレスに基づいてメモリ２１から比較データ長のサーチデータを読み出し、読み出したサーチデータをバッファ２０３に記憶する。
【０１６８】
キー・カウントリード部２０５は、ディスクリプタに指定されたキャッシュアドレスに基づいてキャッシュメモリ３１Ａから比較データ長のキー部またはカウント部のデータ（サーチデータ）を読み出す。
【０１６９】
また、キー・カウントリード部２０５は、キャッシュＩ／Ｆ部２０７を介してキャッシュメモリ３１Ａからデータ（サーチデータ）を受信すると、サーチデータリード部２０２のバッファ２０３からサーチデータを読み出す。
【０１７０】
その後、キー・カウントリード部２０５は、キャッシュメモリ３１Ａからのサーチデータとサーチデータリード部２０２からのサーチデータ（キー部またはカウント部）を比較論理によって比較する。
【０１７１】
そして、キー・カウントリード部２０５は、サーチデータの比較結果が比較条件を満たしているか（Ｈｉｔ）、比較条件を満たしていないか（Ｍｉｓｓ）を判断し、この判断結果をディスクリプタ制御部２０４に通知する。
【０１７２】
キー・カウントリード部２０５によるサーチデータの比較処理は、例えばバッファ２０３のサーチデータの値とキャッシュメモリ３１Ａからのデータ（キー部）の値が等しい場合、キー部の値がサーチデータの値以上の場合、キー部の値がサーチデータの値より大きい場合に比較条件を満たす（Ｈｉｔ）と判断する。
【０１７３】
ＤＭＡチップ２００によるサーチデータの比較結果が「Ｍｉｓｓ」の場合、ＤＭＡチップ２００はメモリ２１からサーチデータ０に対応するディスクリプタブロックに属する次の新たなディスクリプタを読み出す（１１２）。
【０１７４】
そして、ＤＭＡチップ２００は、新たなディスクリプタに指定された「キャッシュアドレス」に基づいてキャッシュメモリ３１Ａから新たなサーチデータを読み出す（（１１３），（１１４））。
【０１７５】
ＤＭＡチップ２００は、メモリ２１からのサーチデータ（１１５）とキャッシュメモリ３１Ａからの新たなサーチデータを比較論理によって比較し、比較結果が「Ｈｉｔ」するか、ディスクリプタに属する各ディスクリプタを用いて行ったサーチデータの比較の結果がすべて「Ｍｉｓｓ」となるまで（１１２）、（１１３）、（１１４）、（１１５）と同様の処理を繰り返す（（１１６），（１１７），（１１８），（１１９））。
【０１７６】
すなわち、ＤＭＡチップ２００はメモリ２１からのサーチデータとキャッシュメモリ３１Ａ上の各レコードのカウント部またはキー部との比較を比較条件が満たされるまで連続して行う。
【０１７７】
具体的には、ＤＭＡチップ２００はメモリ２１のディスクリプタに従って、所定のサーチ条件を満たすまで複数のレコードに対して順番にサーチデータとカウント部またはキー部の比較を行う。このとき、ＤＭＡチップ２００（チャネルアダプタ２０Ａ）は、ディスク３５Ａに対して直接アクセスできないので、ディスク３５Ａ上のレコードをサーチする動作はキャッシュメモリ３１Ａにステージングされたレコードに対するサーチ動作に置き換えられる。
【０１７８】
ＤＭＡチップ２００（ディスクリプタ制御部２０４）は、サーチデータの比較結果が「Ｈｉｔ」した（ディスクリプタおよびホストコンピュータ４０Ａからのサーチデータに対応するデータに該当する）と判断すると、タグテーブル記憶部２０６に記憶されたタグテーブルを更新するとともに（１２０）、ＭＰＵ２２への割り込み処理を行なう（１２１）。
【０１７９】
ここで、更新されたタグテーブルを図１７の上段に示す。このタグテーブルには、「タグナンバー」が３つ（「０」、「１」、「２」）設定されているが、現段階ではサーチデータ０に対応する「タグナンバー」が「０」に対応する情報のみが登録される。
【０１８０】
サーチデータ０に対しては、上述したように比較条件が満足されたので、ＤＭＡチップ２００（キー・カウントリード部２０５）は、「ヒットフラグ」を「１」に設定する。また、ＤＭＡチップ２００（ディスクリプタ制御部２０４）は、ディスクリプタブロックに属する３つのディスクリプタをすべて用いてデータサーチ処理を行ったため、「ラストフラグ」を「１」に設定する。
【０１８１】
さらに、ＤＭＡチップ２００（ディスクリプタ制御部２０４）は、比較条件を満足したデータがＭＰＵ２２によりキャッシュメモリ３１Ａから読み出される処理の実行を待ち受ける待ち状態であることを示すため、「バリッドフラグ」を「１」に設定する。
【０１８２】
ＭＰＵ２２への割り込み処理を行なった後（１２１）、ＤＭＡチップ２００は、比較条件を満足したデータがＭＰＵ２２により読み出される処理の完了を待たずに、サーチデータ１に対するデータサーチ処理を開始する。
【０１８３】
すなわち、ＤＭＡチップ２００は、メモリ２１に生成されたディスクリプタ１を読み出す（１２２）。そして、ＤＭＡチップ２００は、ディスクリプタに指定された「メモリアドレス」に基づいてメモリ２１からサーチデータを読み出し（（１２３），（１２４））、ディスクリプタに指定された「キャッシュアドレス」に基づいてディスクアレイ装置３０のキャッシュメモリ３１Ａからサーチデータを読み出す（（１２５），（１２６））。
【０１８４】
そして、ＤＭＡチップ２００は、サーチデータの比較結果が比較条件を満たしているか（Ｈｉｔ）、比較条件を満たしていないか（Ｍｉｓｓ）を判断し、この判断結果をディスクリプタ制御部２０４に通知する。
【０１８５】
ＤＭＡチップ２００によるサーチデータの比較結果が「Ｍｉｓｓ」の場合、ＤＭＡチップ２００はメモリ２１からサーチデータ１に対応するディスクリプタブロックに属する次の新たなディスクリプタを読み出す（１２７）。
【０１８６】
そして、ＤＭＡチップ２００は、新たなディスクリプタに指定された「キャッシュアドレス」に基づいてキャッシュメモリ３１Ａから新たなサーチデータを読み出す（（１２８），（１２９））。
【０１８７】
ＤＭＡチップ２００は、メモリ２１からのサーチデータ（１３０）とキャッシュメモリ３１Ａからの新たなサーチデータを比較論理によって比較し、比較結果が「Ｈｉｔ」するか、ディスクリプタに属する各ディスクリプタを用いて行ったサーチデータの比較の結果がすべて「Ｍｉｓｓ」となるまで（１２７）、（１２８）、（１２９）、（１３０）と同様の処理を繰り返す。
【０１８８】
ＤＭＡチップ２００は、サーチデータの比較結果が「Ｈｉｔ」したと判断すると、タグテーブル記憶部２０６に記憶されたタグテーブルを更新するとともに（１３１）、ＭＰＵ２２への割り込み処理を行なう（１３２）。
【０１８９】
ここで、更新されたタグテーブルを図１７の中段に示す。この段階では、タグテーブルには、サーチデータ０に対応する「タグナンバー」が「０」の情報と、サーチデータ１に対応する「タグナンバー」が「１」の情報とが登録されることになる。
【０１９０】
なお、この例では、サーチデータ０に対するＭＰＵ２２のデータの読み出し処理はまだ完了していないため、「０」の「タグナンバー」に対応する「バリッドフラグ」は「１」のままになっている。
【０１９１】
サーチデータ１に対しては、上述したように比較条件が満足されたので、ＤＭＡチップ２００は、「ヒットフラグ」を「１」に設定する。また、ディスクリプタブロックに属する３つのディスクリプタのうち、２番目のディスクリプタで比較条件が満足されたため、ＤＭＡチップ２００は「ラストフラグ」の値を「０」のまま変更しない。
【０１９２】
また、ＤＭＡチップ２００は、比較条件を満足したデータがＭＰＵ２２によりキャッシュメモリ３１Ａから読み出される処理の実行を待ち受ける待ち状態であることを示すため、「バリッドフラグ」を「１」に設定する。
【０１９３】
ＭＰＵ２２への割り込み処理を行なった後（１３２）、ＤＭＡチップ２００は、比較条件を満足したデータがＭＰＵ２２により読み出される処理の完了を待たずに、サーチデータ２に対するデータサーチ処理を開始する。
【０１９４】
すなわち、ＤＭＡチップ２００は、メモリ２１に生成されたディスクリプタ２を読み出す（１３３）。そして、ＤＭＡチップ２００は、ディスクリプタに指定された「メモリアドレス」に基づいてメモリ２１からサーチデータを読み出し（（１３４），（１３５））、ディスクリプタに指定された「キャッシュアドレス」に基づいてディスクアレイ装置３０のキャッシュメモリ３１Ａからサーチデータを読み出す（（１３６），（１３７））。
【０１９５】
そして、ＤＭＡチップ２００は、サーチデータの比較結果が比較条件を満たしているか（Ｈｉｔ）、比較条件を満たしていないか（Ｍｉｓｓ）を判断し、この判断結果をディスクリプタ制御部２０４に通知する。
【０１９６】
ＤＭＡチップ２００によるサーチデータの比較結果が「Ｍｉｓｓ」の場合、ＤＭＡチップ２００はメモリ２１からサーチデータ２に対応するディスクリプタブロックに属する次の新たなディスクリプタを読み出す（１３８）。
【０１９７】
そして、ＤＭＡチップ２００は、新たなディスクリプタに指定された「キャッシュアドレス」に基づいてキャッシュメモリ３１Ａから新たなサーチデータを読み出す（（１３９），（１４０））。
【０１９８】
ＤＭＡチップ２００は、メモリ２１からのサーチデータ（１４１）とキャッシュメモリ３１Ａからの新たなサーチデータを比較論理によって比較し、比較結果が「Ｈｉｔ」するか、ディスクリプタに属する各ディスクリプタを用いて行ったサーチデータの比較の結果がすべて「Ｍｉｓｓ」となるまで（１３８）、（１３９）、（１４０）、（１４１）と同様の処理を繰り返す。
【０１９９】
ＤＭＡチップ２００は、サーチデータの比較結果がすべて「Ｍｉｓｓ」したと判断すると、タグテーブル記憶部２０６に記憶されたタグテーブルを更新するとともに（１４６）、ＭＰＵ２２への割り込み処理を行なう（１４７）。
【０２００】
ここで、更新されたタグテーブルを図１７の下段に示す。この段階では、タグテーブルには、サーチデータ０に対応する「タグナンバー」が「０」の情報と、サーチデータ１に対応する「タグナンバー」が「１」の情報と、サーチデータ２に対応する「タグナンバー」が「２」の情報とが登録される。
【０２０１】
なお、この例では、サーチデータ０に対するＭＰＵ２２のデータの読み出し処理が完了したため、「０」の「タグナンバー」に対応する「バリッドフラグ」が「０」に更新されている。また、サーチデータ１に対するＭＰＵ２２のデータの読み出し処理はまだ完了していないため、「１」の「タグナンバー」に対応する「バリッドフラグ」は「１」のままになっている。
【０２０２】
サーチデータ２に対しては、上述したように比較条件が満足されなかったので、ＤＭＡチップ２００は、「エラーフラグ」を「１」に設定する。また、ディスクリプタブロックに属する３つのディスクリプタすべてを用いてデータサーチ処理を行ったので、ＤＭＡチップ２００は「ラストフラグ」の値を「１」に設定する。
【０２０３】
また、ＤＭＡチップ２００は、「２」の「タグナンバー」に対応する情報をクリアする処理の実行を待ち受ける待ち状態であることを示すため、「バリッドフラグ」を「１」に設定する。
【０２０４】
このように実施例３によれば、ＤＭＡチップ２００が、ディスクリプタおよびホストコンピュータ４０Ａにより送信されたサーチデータに対応するデータの検索処理の処理状態に係る情報をデータの検索処理ごとにタグテーブルに複数記憶し、ＭＰＵ２２が、タグテーブルに記憶された処理状態の情報に基づいてディスクリプタおよびホストコンピュータ４０Ａにより送信されたサーチデータに対応するデータの転送要求を行い、ＤＭＡチップ２００が、ＭＰＵ２２によりデータの転送要求がなされた場合に、当該データをホストコンピュータ４０Ａに転送することとしたので、データの検索処理ごとに処理状態の情報を複数記憶しておくことにより、ＭＰＵ２２によるデータ処理を待つことなく、ＤＭＡチップ２００がデータの検索処理を連続して行うことができるとともに、ＭＰＵ２２が他の処理を実行している間にＤＭＡチップ２００がデータサーチ処理を独立して行うことができ、ＭＰＵ２２のオーバーヘッドを軽減することができる。
【０２０５】
また、本実施例３によれば、ディスクリプタは、ホストコンピュータ４０Ａにより送信された各サーチデータを一意に識別するタグナンバーの情報を含み、タグテーブルとして記憶される検索処理の処理状態に係る情報は、タグナンバーと、タグナンバーに対応付けられたデータの検索処理の処理状態に係る情報とを含むこととしたので、ディスクリプタにタグナンバーの情報を追加し、処理状態に係る情報をタグナンバーを用いて管理することによりサーチデータの検索処理が連続して複数回行われた場合でも処理状態に係る情報を容易に特定することができる。
【０２０６】
（付記１）複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送装置において、
自らの装置全体を制御するとともに、前記データ蓄積メモリから所定の蓄積データを検索するための複数の比較条件情報を生成する制御部と、
前記外部装置からの比較データを記憶する比較データ記憶部と、
前記比較データ記憶部が前記比較データを記憶すると、前記制御部によって生成される比較条件情報を記憶する比較条件記憶部と、
前記比較条件記憶部が記憶する複数の前記比較条件情報を順番に１つずつ読み出すとともに、前記比較データ記憶部から前記比較データを読み出すための比較データ読み出し情報および前記データ蓄積メモリから前記蓄積データを読み出すための蓄積データ読み出し情報を前記比較条件情報から抽出する情報抽出機能と、前記比較データ読み出し情報に基づいて前記比較データ記憶部内の比較データを読み出す比較データリード機能と、前記蓄積データ読み出し情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリード機能と、前記比較データリード機能が読み出した比較データと前記蓄積データリード機能が読み出した蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索機能とを有し、検索した蓄積データを前記外部装置に転送する転送処理部と、
を備えることを特徴とするデータ転送装置。
【０２０７】
（付記２）前記各蓄積データは、前記比較データとの間で比較対象となる所定の比較用データブロックを含む可変長データフォーマットで記述され、前記比較条件情報は比較対象となる比較データのデータ長および蓄積データ内の所定のフィールドのデータ長に関する情報を含むことを特徴とする付記１に記載のデータ転送装置。
【０２０８】
（付記３）前記蓄積データリード機能は、前記蓄積データ読み出し情報に基づいて、前記転送処理部に接続されるとともに前記データ蓄積メモリ内の蓄積データを一時的に記憶するキャッシュメモリから前記データ蓄積メモリ内の蓄積データを読み出すことを特徴とする付記１または２に記載のデータ転送装置。
【０２０９】
（付記４）前記比較データ読み出し情報は、前記比較データ記憶部内で前記比較データが記憶されるアドレスに関する比較データアドレスを含み、
前記比較データリード機能は、前記比較データアドレスに基づいて、前記比較データ記憶部から前記比較データを読み出すことを特徴とする付記１〜３のいずれか１つに記載のデータ転送装置。
【０２１０】
（付記５）前記蓄積データ読み出し情報は、前記キャッシュメモリ内で前記蓄積データが記憶されるアドレスに関するキャッシュメモリアドレスを含み、
前記蓄積データリード機能は、前記キャッシュメモリアドレスに基づいて、前記キャッシュメモリから前記蓄積データを読み出すことを特徴とする付記３に記載のデータ転送装置。
【０２１１】
（付記６）前記比較条件情報および前記比較データに対応する蓄積データの転送要求を行うデータ転送要求部をさらに備え、前記転送処理部は、前記比較条件情報および前記比較データに対応する蓄積データの検索処理の処理状態に係る情報を蓄積データの検索処理ごとに複数記憶する検索結果記憶機能をさらに有し、前記データ転送要求部は、前記処理状態に係る情報に基づいて前記比較条件情報および前記比較データに対応する蓄積データの転送要求を行い、前記転送処理部は、前記データ転送要求部により転送要求がなされた場合に、前記比較条件情報および前記比較データに対応する蓄積データを前記外部装置に転送することを特徴とする付記１〜５のいずれか１つに記載のデータ転送装置。
【０２１２】
（付記７）前記比較条件情報は、各比較データを一意に識別する識別情報を含み、前記処理状態に係る情報は、前記識別情報と当該識別情報に対応付けられた蓄積データの検索処理の処理状態に係る情報とを含むことを特徴とする付記６に記載のデータ転送装置。
【０２１３】
（付記８）複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送装置において、
前記外部装置からの比較データを記憶する比較データ記憶部と、
自らの装置全体を制御するとともに、前記蓄積データと前記比較データとを比較するための比較条件情報を生成する制御部と、
前記比較条件情報に基づいて前記比較データ記憶部内の比較データを読み出す比較データリード機能と、前記比較条件情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリード機能と、前記比較データリード機能が読み出した比較データと前記蓄積データリード機能が読み出した蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索機能とを有し、かつ検索した蓄積データを前記外部装置に転送する転送処理部と、
を備え、
前記比較データリード機能は、前記比較データ記憶部内の比較データを読み出して一時的に記憶するとともに、前記一時的に記憶した比較データが前記データ検索機能によって読み出されると次の比較データを比較データ記憶部から読み出して一時的に記憶する比較データ記憶バッファを有し、
前記蓄積データリード機能は、前記データ蓄積メモリ内の蓄積データを読み出して一時的に記憶するとともに、前記一時的に記憶した蓄積データが前記データ検索機能によって読み出されると次の蓄積データを前記データ蓄積メモリから読み出して一時的に記憶する蓄積データ記憶バッファを有することを特徴とするデータ転送装置。
【０２１４】
（付記９）複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送方法において、
前記データ蓄積メモリから所定の蓄積データを検索するための複数の比較条件情報を生成する比較条件生成ステップと、
前記外部装置からの比較データを第１のメモリに記憶する比較データ記憶ステップと、
前記第１のメモリが前記比較データを記憶すると、前記生成された比較条件情報を第２のメモリに記憶する比較条件記憶ステップと、
前記第２のメモリが記憶する複数の前記比較条件情報を順番に１つずつ読み出すとともに、前記第１のメモリから前記比較データを読み出すための比較データ読み出し情報および前記データ蓄積メモリから前記蓄積データを読み出すための蓄積データ読み出し情報を前記比較条件情報から抽出する情報抽出ステップと、
前記比較データ読み出し情報に基づいて前記第１のメモリ内の比較データを読み出す比較データリードステップと、
前記蓄積データ読み出し情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリードステップと、
前記読み出された比較データと前記読み出された蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索ステップと、
前記検索した蓄積データを前記外部装置に転送する転送処理ステップと、
を含むことを特徴とするデータ転送方法。
【０２１５】
（付記１０）前記各蓄積データは、前記比較データとの間で比較対象となる所定の比較用データブロックを含む可変長データフォーマットで記述され、前記比較条件情報は比較対象となる比較データのデータ長および蓄積データ内の所定のフィールドのデータ長に関する情報を含むことを特徴とする付記９に記載のデータ転送方法。
【０２１６】
（付記１１）前記蓄積データリードステップは、前記蓄積データ読み出し情報に基づいて、前記データ蓄積メモリ内の蓄積データを一時的に記憶するキャッシュメモリから前記データ蓄積メモリ内の蓄積データを読み出すことを特徴とする付記９または１０に記載のデータ転送方法。
【０２１７】
（付記１２）前記比較データ読み出し情報は、前記第１のメモリ内で前記比較データが記憶されるアドレスに関する比較データアドレスを含み、
前記比較データリードステップは、前記比較データアドレスに基づいて、前記第１のメモリから前記比較データを読み出すことを特徴とする付記９〜１１のいずれか１つに記載のデータ転送方法。
【０２１８】
（付記１３）前記蓄積データ読み出し情報は、前記キャッシュメモリ内で前記蓄積データが記憶されるアドレスに関するキャッシュメモリアドレスを含み、
前記蓄積データリードステップは、前記キャッシュメモリアドレスに基づいて、前記キャッシュメモリから前記蓄積データを読み出すことを特徴とする付記１２に記載のデータ転送方法。
【０２１９】
（付記１４）前記比較条件情報および前記比較データに対応する蓄積データの転送要求を行うデータ転送要求ステップをさらに含み、前記蓄積データ検索ステップは、前記比較条件情報および前記比較データに対応する蓄積データの検索処理の処理状態に係る情報を蓄積データの検索処理ごとに複数記憶し、前記データ転送要求ステップは、前記処理状態に係る情報に基づいて前記比較条件情報および前記比較データに対応する蓄積データの転送要求を行い、前記転送処理ステップは、前記データ転送要求ステップにより転送要求がなされた場合に、前記比較条件情報および前記比較データに対応する蓄積データを前記外部装置に転送することを特徴とする付記９〜１３のいずれか１つに記載のデータ転送方法。
【０２２０】
（付記１５）前記比較条件情報は、各比較データを一意に識別する識別情報を含み、前記処理状態に係る情報は、前記識別情報と当該識別情報に対応付けられた蓄積データの検索処理の処理状態に係る情報とを含むことを特徴とする付記１４に記載のデータ転送方法。
【０２２１】
（付記１６）複数のデータを複数の蓄積データとして記憶するデータ蓄積メモリと接続され、外部装置から送信される前記蓄積データの比較対象となる比較データに応じたデータを前記データ蓄積メモリ内の蓄積データから検索するとともに、検索した前記蓄積データを前記外部装置に転送するデータ転送方法において、
前記外部装置からの比較データを比較データメモリに記憶する比較データ記憶ステップと、
前記蓄積データと前記比較データとを比較するための比較条件情報を生成する比較条件生成ステップと、
前記比較条件情報に基づいて前記比較データメモリ内の比較データを読み出す比較データリードステップと、
前記比較条件情報に基づいて前記データ蓄積メモリ内の蓄積データを読み出す蓄積データリードステップと、
前記読み出された比較データと前記読み出された蓄積データとを前記比較条件情報に基づいて比較することによって前記比較条件情報および前記比較データに対応する蓄積データを検索する蓄積データ検索ステップと、
前記検索した蓄積データを前記外部装置に転送する転送処理ステップと、
を含み、
前記比較データリードステップは、前記比較データメモリ内の比較データを読み出して第１のバッファに一時的に記憶するとともに、前記第１のバッファに一時的に記憶した比較データが読み出されると次の比較データを前記比較データメモリから読み出して前記第１のバッファに一時的に記憶し、
前記蓄積データリードステップは、前記データ蓄積メモリ内の蓄積データを読み出して第２のバッファに一時的に記憶するとともに、前記第２のバッファに一時的に記憶した蓄積データが読み出されると次の蓄積データを前記データ蓄積メモリから読み出して前記第２のバッファに一時的に記憶することを特徴とするデータ転送方法。
【産業上の利用可能性】
【０２２２】
以上のように、本発明にかかるデータ転送装置およびデータ転送方法は、コンピュータシステム内でのＤＭＡ転送に適している。
【図面の簡単な説明】
【０２２３】
【図１】実施例１に係るＤＭＡ制御の概念を説明するための説明図である。
【図２】実施例１に係るディスクアレイ装置の構成を示すブロック図である。
【図３】実施例１に係るチャネルアダプタの構成の一例を示すブロック図である。
【図４】実施例１に係るＤＭＡチップの構成を示すブロック図である。
【図５】チャネルアダプタのデータサーチの処理手順を示すシーケンス図である。
【図６】ＣＫＤフォーマットの構成を示す図である。
【図７】ディスクリプタの構成の一例を示す図である。
【図８】ＤＭＡチップのステートマシンのステート遷移を示すステート遷移図である。
【図９】実施例２に係るチャネルアダプタの構成の一例を示すブロック図である。
【図１０】実施例２に係るプロトコル−ＤＭＡチップの構成の一例を示すブロック図である。
【図１１】実施例３に係るＤＭＡ制御の概念を説明するための説明図である。
【図１２】実施例３に係るディスクリプタの構成の一例を示す図である。
【図１３】ディスクリプタブロックについて説明する図である。
【図１４】実施例３に係るＤＭＡチップの構成を示すブロック図である。
【図１５】タグテーブルの構成について説明する図である。
【図１６】実施例３に係るチャネルアダプタのデータサーチの処理手順を示すシーケンス図である。
【図１７】タグテーブルの更新について説明する図である。
【図１８】従来のＤＭＡチップの構成を示すブロック図である。
【図１９】従来のデータサーチの処理手順を示すシーケンス図である。
【図２０】従来のプロトコル−ＤＭＡチップの構成を示すブロック図である。
【符号の説明】
【０２２４】
１０，１００，２００  ＤＭＡチップ
１１，９１，１５１，２０３  メモリＩ／Ｆ部
１２，９２，９３，１５２，１６１，２０２  サーチデータリード部
１３，５３，５６，１５３，２０３  バッファ
１４，２０４  ディスクリプタ制御部
１５，５５，９５，１５５，２０５  キー・カウントリード部
１７，２０７  キャッシュＩ／Ｆ部
２０Ａ，２０Ｂ  チャネルアダプタ
２０６  タグテーブル記憶部
２１，１０３  メモリ
２２  ＭＰＵ
２３  プロトコルチップ
２４  ＳＦＦ
２６  チップセット
２９  ｓｅｒｄｅｓ
３０  ディスクアレイ装置
３１Ａ，３１Ｂ，１０７  キャッシュメモリ
３２Ａ，３２Ｂ  キャッシュコントローラ
３３Ａ，３３Ｂ  ディスクアダプタ
３４Ａ，３４Ｂ  スイッチ
３５Ａ，３５Ｂ  ディスク
４０Ａ，４０Ｂ，１０１  ホストコンピュータ
４１Ａ，４１Ｂ  ファイバチャネルリンク
５０，１５０  プロトコル−ＤＭＡチップ１０
５１，１５６  ホストＩ／Ｆ部
５２，１６０  プロトコルコントローラ部
５４，１５８  比較部
５７，９７，１５７  キャッシュＩ／Ｆ部
９９，１５９  レジスタ部
【図１】
2006190256.tif 000003
【図２】
2006190256.tif 000004
【図３】
2006190256.tif 000005
【図４】
2006190256.tif 000006
【図５】
2006190256.tif 000007
【図６】
2006190256.tif 000008
【図７】
2006190256.tif 000009
【図８】
2006190256.tif 000010
【図９】
2006190256.tif 000011
【図１０】
2006190256.tif 000012
【図１１】
2006190256.tif 000013
【図１２】
2006190256.tif 000014
【図１３】
2006190256.tif 000015
【図１４】
2006190256.tif 000016
【図１５】
2006190256.tif 000017
【図１６】
2006190256.tif 000018
【図１７】
2006190256.tif 000019
【図１８】
2006190256.tif 000020
【図１９】
2006190256.tif 000021
【図２０】
2006190256.tif 000022