(57)【要約】【課題】ＭＰＵにかかる負荷を軽減し、キーサーチ処理などのサーチ処理の実行中にＭＰＵが他の処理の実行を可能とすることによりＭＰＵの利用効率を高めること。【解決手段】チャネルアダプタ３１ＡのＭＰＵ６１Ａが、可変長のキーデータとキーデータのデータ長に係る情報とを含み、キャッシュメモリ３２Ａの連続する記憶領域に記憶された複数のレコードを連続して読み出す場合に、複数のレコードの読み出し命令であるトラック連続サーチ用ディスクリプタを生成し、チャネルアダプタ３１ＡのＤＭＡチップ６５Ａが、ＭＰＵ６１Ａにより生成されたディスクリプタを受信した場合に、可変長のキーデータのデータ長に係る情報をキャッシュメモリ３２Ａから読み出し、キャッシュメモリ３２Ａからさらに読み出すデータのアドレスをデータ長に係る情報に基づいて算出して、キャッシュメモリ３２Ａからデータを読み出す処理をＭＰＵ６１Ａに代わって実行する。【選択図】    図１
2007179086.tif 000002
【特許請求の範囲】
【請求項１】
ダイレクトメモリアクセスによりメモリにアクセスするメモリアクセス装置であって、
可変長のデータと当該可変長のデータのデータ長に係る情報とを少なくとも含み、前記メモリの連続する記憶領域に記憶された複数のデータを連続して読み出す場合に、複数のデータの読み出し命令を生成する中央演算手段と、
前記中央演算手段により生成された読み出し命令を受信した場合に、前記可変長のデータのデータ長に係る情報を前記メモリから読み出し、当該メモリからさらに読み出すデータの記憶位置を前記データ長に係る情報に基づいて算出することにより、前記メモリからデータを読み出す処理を前記中央演算手段に代わって実行するデータ読み出し手段と、
を備えたことを特徴とするメモリアクセス装置。
【請求項２】
前記データ読み出し手段は、算出した記憶位置の情報に基づいて前記メモリから読み出したデータに所定のデータ群における最後のデータであることを示す情報が含まれている場合に、最後のデータが検出されたことを示す情報を出力することを特徴とする請求項１に記載のメモリアクセス装置。
【請求項３】
前記データ読み出し手段は、算出した記憶位置の情報に基づいて前記メモリから読み出したデータと外部装置から受信したデータとが所定の条件を満足するか否かを判定し、判定結果に係る情報を前記中央演算手段が利用する中央演算手段用メモリに格納することを特徴とする請求項１または２に記載のメモリアクセス装置。
【請求項４】
前記データの読み出し命令は、前記メモリに記憶された所定のデータ群の先頭データの記憶位置に係る情報と、外部装置から受信し、前記中央演算手段用メモリに記憶されたデータの記憶位置に係る情報とを少なくとも含み、前記データ読み出し手段は、前記先頭データの記憶位置に係る情報、および、前記可変長のデータのデータ長に係る情報に基づいて、前記メモリからさらに読み出すデータの記憶位置の情報を算出し、算出した記憶位置の情報に基づいて読み出したデータと、前記外部装置から受信したデータの記憶位置に係る情報に基づいて中央演算手段用メモリから読み出したデータとの間で所定の条件を満足したか否かを判定することを特徴とする請求項３に記載のメモリアクセス装置。
【請求項５】
前記データ読み出し手段は、前記判定結果に係る情報として、算出した記憶位置の情報に基づいて前記メモリから読み出したデータと外部装置から受信したデータとが所定の条件を満足したか否かの判定結果に係る情報に加えて、当該判定結果を導いた根拠に係る情報を前記中央演算手段用メモリに格納することを特徴とする請求項３または４に記載のメモリアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセス（ＤＭＡ，Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）によりメモリにアクセスするメモリアクセス装置に関し、特に、メモリアクセス装置を制御するＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にかかる負荷を軽減するとともに、メモリアクセス中にＭＰＵが他の処理を実行することを可能とし、ＭＰＵの利用効率を高めることができるメモリアクセス装置に関する。
【背景技術】
【０００２】
近年、コンピュータシステムの性能を高める技術の開発が急速に進められている。例えば、コンピュータシステム内においてメモリとメモリの間のデータ転送、メモリとＩ／Ｏデバイスの間のデータ転送を効率よく行なうことが望まれている。
【０００３】
データ転送を効率よく行なう方法としてダイレクトメモリアクセスがある。ダイレクトメモリアクセスにおいては、ＭＰＵがコンピュータシステム内のデータ転送を行うのではなく、データ転送専用のハードウェアであるＤＭＡ回路がＭＰＵからの命令に基づいてコンピュータシステム内のデータ転送を行う（たとえば、特許文献１を参照）。
【０００４】
図８は、従来のディスクアレイ装置１の機能構成を示す図である。ディスクアレイ装置１は、ＤＭＡ制御回路を有したダイレクトメモリアクセスが適用されるコンピュータシステムの一例であり、ファイバチャネルリンク３Ａ，３Ｂを介してホストコンピュータ２Ａ，２Ｂと接続されている。
【０００５】
ディスクアレイ装置１は、ホストコンピュータ２Ａ，２Ｂから送信される指示情報に基づいてディスクアレイ装置１内のデータを検索し、検索したデータをホストコンピュータ２Ａ，２Ｂに提供するパーソナルコンピュータ等の装置である。
【０００６】
このディスクアレイ装置１は、複数のディスク９Ａ，９Ｂを組み合わせることによって大量のデータを高速に読み書きするためのＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ（Ｉｎｅｘｐｅｎｓｉｖｅ）  Ｄｉｓｋｓ）機能を有している。
【０００７】
図８に示すように、ディスクアレイ装置１は、チャネルアダプタ４Ａ，４Ｂ、キャッシュメモリ５Ａ，５Ｂ、キャッシュコントローラ６Ａ，６Ｂ、ディスクアダプタ７Ａ，７Ｂ、スイッチ８Ａ，８Ｂ、ディスク９Ａ，９Ｂを備えている。
【０００８】
なお、チャネルアダプタ４Ａとチャネルアダプタ４Ｂ、キャッシュメモリ５Ａとキャッシュメモリ５Ｂ、キャッシュコントローラ６Ａとキャッシュコントローラ６Ｂ、ディスクアダプタ７Ａとディスクアダプタ７Ｂ、スイッチ８Ａとスイッチ８Ｂ、ディスク９Ａとディスク９Ｂは、それぞれ同様の機能を有するのでここではチャネルアダプタ４Ａ、キャッシュメモリ５Ａ、キャッシュコントローラ６Ａ、ディスクアダプタ７Ａ、スイッチ８Ａ、ディスク９Ａを例にとって説明する。
【０００９】
チャネルアダプタ４Ａは、ホストコンピュータ２Ａとデータの送受信を行う通信Ｉ／Ｆ（インタフェース）の機能を有するとともに、ダイレクトメモリアクセスによりデータ転送をおこなうＤＭＡチップを有している。
【００１０】
キャッシュメモリ５Ａは、複数のデータを記憶するディスク９Ａへホストから書き込まれるデータもしくはホストから読み出されるデータを一時的に記憶する。キャッシュコントローラ６Ａは、キャッシュメモリ５Ａを管理、制御する。ディスクアダプタ７Ａは、ディスク９Ａとデータの送受信をおこなう通信Ｉ／Ｆを有している。
【００１１】
スイッチ８Ａは、複数のディスク９Ａを接続するとともに、各ディスクとディスクアダプタ７Ａの接続を切替える。ディスク９Ａは、複数のディスクからなりディスクドライブ（図示せず）によって制御されている。ディスク９Ａは、転送（検索）対象となるデータを複数記憶している。
【００１２】
チャネルアダプタ４Ａはホストコンピュータ２Ａからデータの読み出し（リード）要求を受けると、キャッシュコントローラ６Ａに対してホストコンピュータ２Ａが指定した所定のデータがキャッシュメモリ５Ａに存在するか否かを確認する。
【００１３】
キャッシュメモリ５Ａにホストコンピュータ２Ａが指定したデータがある場合、キャッシュコントローラ６Ａはチャネルアダプタ４Ａに対してデータの読み出しが可能であることを通知する。チャネルアダプタ４Ａはキャッシュメモリ５Ａから当該データを読み出してホストコンピュータ２Ａに転送する。
【００１４】
一方、キャッシュメモリ５Ａにホストコンピュータ２Ａが指定したデータがない場合、キャッシュコントローラ６Ａはディスクアダプタ７Ａ、スイッチ８Ａを介してホストコンピュータ２Ａが指定した所定のデータを格納しているディスク９Ａからデータを読み出して記憶する（ステージング）。
【００１５】
その後、キャッシュコントローラ６Ａは、チャネルアダプタ４Ａに対してデータの読み出しが可能であることを通知する。チャネルアダプタ４Ａは、キャッシュメモリ５Ａから当該データを読み出してホストコンピュータ２Ａに転送する。
【００１６】
このように、ディスクアレイ装置１がキャッシュメモリ５Ａを備えているのでチャネルアダプタ４Ａからのデータのアクセス時間を短くすることが可能となる。
【００１７】
なお、ホストコンピュータの数は２つに限らず、１つや３つ以上である場合もある。また、ディスクアレイ装置１が備えるチャネルアダプタの数も２つに限らず、１つや３つ以上である場合もある。
【００１８】
図９は、従来のチャネルアダプタの機能構成を示す図である。チャネルアダプタ４Ａは、メモリ１０、ＭＰＵ１１、チップセット１２、プロトコルチップ１３、光−電気変換モジュール１４Ａ，１４Ｂ、ＤＭＡチップ１５からなる。
【００１９】
プロトコルチップ１３は、ホストコンピュータ２Ａとの接続に用いられるファイバチャネル（ファイバチャネルリンク３Ａ）のプロトコルを制御するためのＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）である。プロトコルチップ１３とホストコンピュータ２Ａとを光ケーブル等によって接続することにより、ディスクアレイ装置１とホストコンピュータ２Ａとが接続される。
【００２０】
ＭＰＵ１１はチャネルアダプタ４Ａの全体を制御するプロセッサであり、チップセット１２はメモリ１０と接続されるメモリインターフェースである。
【００２１】
メモリ１０は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等によって構成され、ＭＰＵ１１により生成されたディスクリプタ（ＭＰＵ１１からＤＭＡチップ１５に対する命令）、ホストコンピュータ２Ａにより送信されたサーチデータ等を記憶する。
【００２２】
ＤＭＡチップ１５は、キャッシュメモリ５Ａと通信を行うインターフェース機能、ＤＭＡ機能（ＤＭＡ回路）を有している。ＤＭＡチップ１５は、ＭＰＵ１１から送信される指示情報に従ってキャッシュメモリ５Ａとの間で通信処理を行なう。すなわち、ＤＭＡチップ１５は、ＭＰＵ１１が生成し、メモリ１０が記憶しているディスクリプタに基づいてデータ転送を行なう。
【００２３】
ＭＰＵ１１、チップセット１２、プロトコルチップ１３、ＤＭＡチップ１５は、互いにＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスによって接続されており、互いにデータの転送を行なう。また、ＭＰＵ１１からプロトコルチップ１３やＤＭＡチップ１５への指示もＰＣＩバス等によって行なわれる。
【００２４】
チャネルアダプタ４Ａは、ファイバチャネルリンク３Ａを介してホストコンピュータ２Ａからサーチデータを受信すると、受信したサーチデータをメモリ１０に格納する。また、ＭＰＵ１１は、所定のディスクリプタを生成し、メモリ１０に格納する。
【００２５】
ＤＭＡチップ１５は、メモリ１０のディスクリプタを順番に１つずつ読み出して、メモリ１０が記憶するサーチデータとキャッシュメモリ５Ａが記憶するサーチデータ（後述するレコード内のカウント部またはキー部）との比較処理を行う。すなわち、ＤＭＡチップ１５がメモリ１０とキャッシュメモリ５Ａからそれぞれのサーチデータを読み出してサーチデータの比較を行なう。
【００２６】
図１０は、従来のＤＭＡチップの機能構成を示す図である。ＤＭＡチップ１５は、メモリＩ／Ｆ部２０、サーチデータリード部２１、ディスクリプタ制御部２３、キー・カウントリード部２４、キャッシュＩ／Ｆ部２５からなる。
【００２７】
メモリＩ／Ｆ部２０は、メモリ１０と接続される通信インターフェースを有しており、この通信インターフェースのプロトコル制御を行なう。メモリＩ／Ｆ部２０は、通信インターフェースを制御する（通信インターフェースに要求を出す）ことによってメモリ１０から所定のデータを受信する。
【００２８】
キャッシュＩ／Ｆ部２５は、キャッシュメモリ５Ａと接続される通信インターフェースを有しており、この通信インターフェースのプロトコル制御を行なう。キャッシュＩ／Ｆ部２５は、通信インターフェースを制御することによってキャッシュメモリ５Ａから所定のデータを受信する。
【００２９】
ここで、メモリＩ／Ｆ部２０、キャッシュＩ／Ｆ部２５の通信インターフェースはＰＣＩバスであり、それぞれＰＣＩバスプロトコル制御回路によって構成されている。
【００３０】
ディスクリプタ制御部２３は、ＭＰＵ１１からの指示を受けて（指示情報を受信して）、メモリ１０が記憶しているディスクリプタを順番に１つずつ読み出す。
【００３１】
そして、ディスクリプタ制御部２３は、メモリ１０から読み出したディスクリプタの中からアドレスやデータ長などの情報を抽出してサーチデータリード部２３、キー・カウントリード部２４に送信する。このアドレス情報には、キャッシュメモリ５Ａ上のデータのアドレス、メモリ１０上のデータのアドレスが含まれている。
【００３２】
サーチデータリード部２１は、ディスクリプタにより指定されたメモリアドレスに基づいて、メモリ１０から比較データ長のサーチデータを読み出す。サーチデータリード部２１は、バッファ２２を有しており、このバッファ２２がメモリ１０から読み出したサーチデータを保持（記憶）する。バッファ２２が記憶するデータは、キー・カウントリード部２４によって読み出される。
【００３３】
キー・カウントリード部２４は、ディスクリプタにより指定されたキャッシュアドレスに基づいて、キャッシュメモリ５Ａから比較データ長のキー部またはカウント部のデータをサーチデータとして読み出す。
【００３４】
そして、キー・カウントリード部２４は、キャッシュＩ／Ｆ部２５を介してキャッシュメモリ５Ａからデータ（サーチデータ）を受信すると、サーチデータリード部２１のバッファ２２からサーチデータを読み出す。
【００３５】
さらに、キー・カウントリード部２４は、キャッシュメモリ５Ａからのサーチデータとサーチデータリード部２１からのサーチデータを比較する。そして、キー・カウントリード部２４は、サーチデータの比較結果が比較条件を満たしているか（Ｈｉｔ）、比較条件を満たしていないか（Ｍｉｓｓ）を判断し、この判断結果をディスクリプタ制御部２３へ通知する。
【００３６】
ディスクリプタ制御部２３、サーチデータリード部２１、キー・カウントリード部２４は、それぞれ制御機能を備えている。各制御部はステートマシンを有し、相互に通信を行いながらＤＭＡチップ１５全体の動作を制御する。
【００３７】
図１１は、ディスクのデータフォーマットについて説明する図である。メーンフレームでは、ディスク９Ａの記憶領域を同心円状の複数のトラックに区切り、データを各トラックにレコード単位で書き込んでいる。
【００３８】
各レコードのフォーマットには、ＣＫＤ（Ｃｏｕｎｔ−Ｋｅｙ−Ｄａｔａ）フォーマットが用いられる。すなわち、各レコードは、カウント部（Ｃ）、キー部（Ｋ）、データ部（Ｄ）の３つの部分からなる。このうちカウント部は固定長、キー部とデータ部は可変長である。
【００３９】
カウント部は、レコードの始まりを示すヘッダ情報であり、キー部やデータ部のデータ長の情報や、レコードがトラックの最後のレコードである場合には、最後のレコードであることを示す情報（ＥＯＴ，Ｅｎｄ  ｏｆ  Ｔｒａｃｋ）などを含んでいる。具体的には、カウント部は、レコード構成情報、キー長、データ長、および、保護情報を含む。
【００４０】
レコード構成情報は、当該レコードがトラックの最後のレコードであるか否かを示す情報である。キー長およびデータ長は、当該レコードのキー部およびデータ部のデータ長の情報である。保護情報は、ＣＲＣ（Ｃｙｃｌｉｃａｌ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）方式によるエラー検出に用いられるチェック符号の情報と、ＢＩＤ（Ｂｌｏｃｋ  ＩＤ）論理ボリュームの位置情報を含むタグ情報である。
【００４１】
キー部には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）がレコードの識別のために用いるレコードの属性データ（インデックス等）が記憶される。データ部には、ユーザデータが記憶される。
【００４２】
チャネルアダプタ４Ａは、ホストコンピュータ２Ａからの命令に従って、ディスク９Ａ，９Ｂに記憶されたデータの読み出し、検索、ディスク９Ａ，９Ｂに対するデータの書き込みなどを実施する。
【００４３】
たとえば、ホストコンピュータ２Ａからの命令には、キーサーチ命令やＥＯＴサーチ命令がある。キーサーチ命令は、ホストコンピュータ２Ａが指示するキー部のデータ（以下、キーデータと呼ぶ）と、ディスク９Ａ，９Ｂに記憶されたキーデータとの比較を実施するよう指示する命令である。また、ＥＯＴ命令は、トラック内のすべてのレコードのカウント部を読み出し、ＥＯＴの情報を含んだカウント部を探索するよう指示する命令である。
【００４４】
キーサーチ命令やＥＯＴサーチ命令をホストコンピュータ２Ａから受け付けた場合には、チャネルアダプタ４Ａは、トラック内の複数のレコードを連続して読み出す動作を実行する必要がある。
【００４５】
図１２は、従来のキーサーチ処理の処理手順を示すシーケンス図である。なお、図１２では、ホストコンピュータ２Ａからキーサーチ命令を受け付けた場合に、サーチ対象となるトラックの各レコードがキャッシュメモリ５Ａにすでに記憶されているものとする。
【００４６】
図１２に示すように、ホストコンピュータ２Ａからキーサーチをおこなうための動作パラメータの指定を受け付けると（１）、チャネルアダプタ４ＡのＭＰＵ１１は、サーチ対象となるトラックの各レコードがキャッシュメモリ５Ａに記憶されているか否かを確認するキャッシュヒット確認処理をおこなう（２）。
【００４７】
ここでは、各レコードがキャッシュメモリ５Ａに記憶されているので、ＭＰＵ１１は、ホストコンピュータ２Ａに対してキャッシュヒット通知を送信する（３）。ホストコンピュータ２Ａは、キャッシュヒット通知を受信すると、ＭＰＵ１１に対してサーチするキーデータを含んだキーサーチ命令を送信する（４）。
【００４８】
その後、ＭＰＵ１１は、キャッシュメモリ５Ａに記憶されたカウント部のデータ（以下、カウントデータと呼ぶ）を読み込むようにチャネルアダプタ４ＡのＤＭＡチップ１５に指示するため、ディスクリプタを構築する処理をおこなう（５）。そして、ＭＰＵ１１は、ＤＭＡチップ１５に対して、カウントデータを読み込むようにＤＭＡチップ１５に指示する（６）。
【００４９】
続いて、ＤＭＡチップ１５は、キャッシュメモリ５Ａに記憶されたカウントデータを読み込み、読み込んだカウントデータをＭＰＵ１１に送信する（７）。その後、ＭＰＵ１１は、そのカウントデータに含まれるキー長の情報を基にして、キー部のアドレスを算出するカウント解析をおこなう（８）。
【００５０】
そして、ＭＰＵ１１は、算出したアドレスの情報に基づいて、キャッシュメモリ５Ａに記憶されたキーデータを読み込むようにＤＭＡチップ１５に指示するためのディスクリプタを構築する処理をおこなう（９）。
【００５１】
ここで、ＭＰＵ１１は、カウント解析処理（８）およびキーサーチ用のディスクリプタ構築処理（９）を、カウントデータにＥＯＴ情報が含まれているのを検出するまで反復する。そして、ＭＰＵ１１は、ＥＯＴ情報を検出すると、ＤＭＡチップ１５に対してキーデータを読み込むようにＤＭＡチップ１５に指示する（１０）。
【００５２】
その後、ＤＭＡチップ１５は、ＭＰＵ１１により構築されたディスクリプタの情報を読み込む（１１）。そして、ＤＭＡチップ１５は、そのディスクリプタにより指定されたアドレス情報に基づいて、キャッシュメモリ５Ａに記憶されたキーデータを読み込み、読み込んだキーデータと、ホストコンピュータ２Ａから指定されたキーデータとを比較して所定の比較条件が満たされたか否かを判定する（１２）。
【００５３】
ここで、ＤＭＡチップ１５は、ディスクリプタの読み込み処理（１１）およびキーデータ読み込み処理（１２）を、比較条件が満たされるまで反復する。比較条件が満たされた場合には、ＤＭＡチップ１５は、キーサーチ完了通知をＭＰＵ１１に送信する（１３）。
【００５４】
ＭＰＵ１１は、キーサーチ完了通知を受信すると、ＤＭＡチップ１５からキーサーチ結果の情報を読み込み（１４）、そのキーサーチ結果をホストコンピュータ２Ａにキーサーチ命令（４）に対する応答として通知する（１５）。このようにして、ＭＰＵ１１とＤＭＡチップ１５とは、キーサーチ処理を分担して実行することができる。
【００５５】
【特許文献１】特開２００５−２７５５３８号公報
【発明の開示】
【発明が解決しようとする課題】
【００５６】
しかしながら、上述した従来技術では、ＭＰＵ１１は、カウントデータをキャッシュメモリ５Ａから読み出すためのカウントデータ読み込み用のディスクリプタや、キーデータをキャッシュメモリ５Ａから読み出すためのキーデータ読み込み用のディスクリプタを生成する必要があり、さらに、カウントデータを解析してキーデータが記憶されたキャッシュメモリ５Ａ上のアドレスを算出する必要があったため、ＭＰＵ１１に大きな負荷がかかるという問題があった。
【００５７】
すなわち、キーサーチ処理が開始されると、ＭＰＵ１１の負荷が大きくなるので、ＭＰＵ１１が他の処理を実行することが難しくなるという問題があった。そこで、ＭＰＵ１１にかかる負荷を軽減し、キーサーチ処理の実行中にＭＰＵ１１が他の処理の実行を可能とすることにより、ＭＰＵ１１の利用効率を高める技術の開発が望まれている。
【００５８】
本発明は、上述した従来技術による問題点を解消するためになされたものであり、ＭＰＵにかかる負荷を軽減し、キーサーチ処理などのサーチ処理の実行中にＭＰＵが他の処理の実行を可能とすることによりＭＰＵの利用効率を高めることができるメモリアクセス装置を提供することを目的とする。
【課題を解決するための手段】
【００５９】
上述した課題を解決し、目的を達成するため、本発明は、ダイレクトメモリアクセスによりメモリにアクセスするメモリアクセス装置であって、可変長のデータと当該可変長のデータのデータ長に係る情報とを少なくとも含み、前記メモリの連続する記憶領域に記憶された複数のデータを連続して読み出す場合に、複数のデータの読み出し命令を生成する中央演算手段（図１に示したチャネルアダプタ３１ＡのＭＰＵ６１Ａ）と、前記中央演算手段により生成された読み出し命令を受信した場合に、前記可変長のデータのデータ長に係る情報を前記メモリから読み出し、当該メモリからさらに読み出すデータの記憶位置を前記データ長に係る情報に基づいて算出することにより、前記メモリからデータを読み出す処理を前記中央演算手段に代わって実行するデータ読み出し手段（図１に示したチャネルアダプタ３１ＡのＤＭＡチップ６５Ａ）と、を備えたことを特徴とする。
【００６０】
また、本発明は、上記発明において、前記データ読み出し手段は、算出した記憶位置の情報に基づいて前記メモリから読み出したデータに所定のデータ群における最後のデータであることを示す情報が含まれている場合に、最後のデータが検出されたことを示す情報を出力することを特徴とする。
【００６１】
また、本発明は、上記発明において、前記データ読み出し手段は、算出した記憶位置の情報に基づいて前記メモリから読み出したデータと外部装置から受信したデータとが所定の条件を満足するか否かを判定し、判定結果に係る情報を前記中央演算手段が利用する中央演算手段用メモリに格納することを特徴とする。
【００６２】
また、本発明は、上記発明において、前記データの読み出し命令は、前記メモリに記憶された所定のデータ群の先頭データの記憶位置に係る情報と、外部装置から受信し、前記中央演算手段用メモリに記憶されたデータの記憶位置に係る情報とを少なくとも含み、前記データ読み出し手段は、前記先頭データの記憶位置に係る情報、および、前記可変長のデータのデータ長に係る情報に基づいて、前記メモリからさらに読み出すデータの記憶位置の情報を算出し、算出した記憶位置の情報に基づいて読み出したデータと、前記外部装置から受信したデータの記憶位置に係る情報に基づいて中央演算手段用メモリから読み出したデータとの間で所定の条件を満足したか否かを判定することを特徴とする。
【００６３】
また、本発明は、上記発明において、前記データ読み出し手段は、前記判定結果に係る情報として、算出した記憶位置の情報に基づいて前記メモリから読み出したデータと外部装置から受信したデータとが所定の条件を満足したか否かの判定結果に係る情報に加えて、当該判定結果を導いた根拠に係る情報を前記中央演算手段用メモリに格納することを特徴とする。
【００６４】
また、本発明は、ダイレクトメモリアクセスによりメモリにアクセスするメモリアクセス方法であって、可変長のデータと当該可変長のデータのデータ長に係る情報とを少なくとも含み、前記メモリの連続する記憶領域に記憶された複数のデータを連続して読み出す場合に、中央演算装置が複数のデータの読み出し命令を生成する命令生成工程と、前記命令生成工程により生成された読み出し命令を受信した場合に、前記可変長のデータのデータ長に係る情報を前記メモリから読み出し、当該メモリからさらに読み出すデータの記憶位置を前記データ長に係る情報に基づいて算出することにより、前記メモリからデータを読み出す処理を前記中央演算手段に代わって実行するデータ読み出し工程と、を含んだことを特徴とする。
【発明の効果】
【００６５】
本発明によれば、中央演算手段が、可変長のデータと当該可変長のデータのデータ長に係る情報とを少なくとも含み、メモリの連続する記憶領域に記憶された複数のデータを連続して読み出す場合に、複数のデータの読み出し命令を生成し、データ読み出し手段が、中央演算手段により生成された読み出し命令を受信した場合に、可変長のデータのデータ長に係る情報をメモリから読み出し、当該メモリからさらに読み出すデータの記憶位置をデータ長に係る情報に基づいて算出することにより、メモリからデータを読み出す処理を中央演算手段に代わって実行することとしたので、中央演算手段にかかる負荷を軽減し、メモリアクセス中に中央演算手段が他の処理を実行することを可能とすることにより中央演算手段の利用効率を高めることができるという効果を奏する。
【００６６】
また、本発明によれば、データ読み出し手段は、算出した記憶位置の情報に基づいてメモリから読み出したデータに所定のデータ群における最後のデータであることを示す情報が含まれている場合に、最後のデータが検出されたことを示す情報を出力することとしたので、中央演算手段にかかる負荷を軽減しつつ、所定のデータ群の中から最後のデータを検出する処理を実行することができるという効果を奏する。
【００６７】
また、本発明によれば、データ読み出し手段は、算出した記憶位置の情報に基づいてメモリから読み出したデータと外部装置から受信したデータとが所定の条件を満足するか否かを判定し、判定結果に係る情報を中央演算手段が利用する中央演算手段用メモリに格納することとしたので、中央演算手段は中央演算手段用メモリにアクセスすることにより、比較処理の実行結果をいつでも効率的に取得することができるという効果を奏する。
【００６８】
また、本発明によれば、データの読み出し命令は、メモリに記憶された所定のデータ群の先頭データの記憶位置に係る情報と、外部装置から受信し、中央演算手段用メモリに記憶されたデータの記憶位置に係る情報とを少なくとも含み、データ読み出し手段は、先頭データの記憶位置に係る情報、および、可変長のデータのデータ長に係る情報に基づいて、メモリからさらに読み出すデータの記憶位置の情報を算出し、算出した記憶位置の情報に基づいて読み出したデータと、外部装置から受信したデータの記憶位置に係る情報に基づいて中央演算手段用メモリから読み出したデータとの間で所定の条件を満足したか否かを判定することとしたので、中央演算手段は簡単な命令を生成するだけでデータ読み出し手段にデータの読み出し処理を依頼することができるという効果を奏する。
【００６９】
また、本発明によれば、前記データ読み出し手段は、判定結果に係る情報として、算出した記憶位置の情報に基づいてメモリから読み出したデータと外部装置から受信したデータとが所定の条件を満足したか否かの判定結果に係る情報に加えて、当該判定結果を導いた根拠に係る情報を中央演算手段用メモリに格納することとしたので、中央演算手段は比較結果の詳細情報を容易に取得することができるという効果を奏する。
【発明を実施するための最良の形態】
【００７０】
以下に添付図面を参照して、この発明に係るデータアクセス装置の好適な実施例を詳細に説明する。なお、ここでは、データアクセス装置がキーサーチ処理を実行する場合について説明する。ただし、この実施例によりこの発明が限定されるものではない。
【実施例】
【００７１】
まず、本実施例に係るキーサーチ処理の概念について説明する。図１は、本実施例に係るキーサーチ処理の概念を説明するための説明図である。なお、本実施例では、ディスクアレイ装置３０のディスクにデータが図１１で説明したＣＫＤフォーマットを用いて記憶されるものとする。
【００７２】
また、ディスクアレイ装置３０がホストコンピュータ４０Ａからキーサーチ命令を受け付けた場合に、サーチ対象となるトラックの各レコードはキャッシュメモリ３２Ａにすでに記憶されているものとする。
【００７３】
ディスクアレイ装置３０は、ホストコンピュータ（外部装置）４０Ａから送信される指示情報に基づいてディスクアレイ装置３０内のキーデータをサーチ（検索）し、キーサーチの結果をホストコンピュータ４０Ａに提供する。具体的には、ディスクアレイ装置３０は、キーサーチを行なうためのキーデータをホストコンピュータ４０Ａから受信して、チャネルアダプタ３１Ａ内のメモリ６０に格納する（１）。
【００７４】
また、チャネルアダプタ３１Ａを全体制御するＭＰＵ６１Ａは、ＤＭＡチップ６５Ａにキーサーチを実行させるための命令であるディスクリプタ（トラック連続サーチ用ディスクリプタ）を生成し、メモリ６０に格納する（２）。このディスクリプタは、キャッシュメモリ３２Ａにおけるトラックの先頭レコードのアドレスの情報を含んでいる。
【００７５】
そして、ＤＭＡ転送を行うＤＭＡチップ６５Ａは、メモリ６０に格納されたディスクリプタを読み出し（３）、ディスクリプタに含まれる先頭レコードの情報に基づいてキャッシュメモリ３２Ａから固定長のカウント部のデータ（以下、カウントデータと呼ぶ）を読み込む（４）。
【００７６】
続いて、ＤＭＡチップ６５Ａは、カウントデータに含まれる可変長のキー部のキー長の情報と、可変長のデータ部のデータ長の情報とから、キー部のデータ（以下、キーデータと呼ぶ）のアドレスや、つぎに読み出すカウントデータのアドレスを算出するカウント解析処理をおこなう（５）。
【００７７】
そして、ＤＭＡチップ６５Ａは、ホストコンピュータ４０Ａにより送信され、メモリ６０に格納されたキーデータと、算出したアドレスに基づいてキャッシュメモリ３２Ａから読み込んだキーデータとを比較し（６）〜（８）、その比較結果をキーサーチ結果としてメモリ６０に格納する（９）。
【００７８】
その後、ＤＭＡチップ６５Ａは、カウント解析処理（５）において算出したつぎに読み出すカウントデータのアドレスの情報に基づいて、つぎのカウントデータを読み込む（４）。これらの処理（４）〜（９）は、あらかじめ設定された比較条件が満たされるか、あるいは、ＥＯＴ（Ｅｎｄ  ｏｆ  Ｔｒａｃｋ，レコードがトラックの最後のレコードであることを示す情報）が検出されるまで反復される。
【００７９】
比較条件が満たされた場合、あるいは、ＥＯＴが検出された場合には、ＤＭＡチップ６５Ａは、ＭＰＵ６１Ａに対してキーサーチ処理の完了を通知する。そして、ＭＰＵ６１Ａは、キーサーチ結果をメモリ６０から読み出してホストコンピュータ４０Ａに送信し（１０）、このキーサーチ処理が終了する。
【００８０】
このように、このキーサーチ処理では、チャネルアダプタ３１ＡのＤＭＡチップ６５Ａが、キャッシュメモリ３２Ａにおけるトラックの先頭レコードのアドレスの情報を含んだトラック連続サーチ用ディスクリプタを生成し、、キャッシュメモリ３２Ａにおけるトラックの先頭レコードのアドレスの情報に基づいてカウントデータを読み出し、カウントデータに含まれるキーデータのデータ長の情報に基づいてキャッシュメモリ３２Ａ上のキーデータのアドレスを算出し、キーデータをキャッシュメモリ３２Ａから読み出すこととしたので、ＭＰＵ６１Ａにかかる負荷を軽減し、キーデータの比較処理の実行中にＭＰＵ６１Ａが他の処理を実行することを可能とすることによりＭＰＵ６１Ａの利用効率を高めることができる。
【００８１】
つぎに、本実施例に係るディスクアレイ装置の機能構成について説明する。図２は、本実施例に係るディスクアレイ装置の機能構成を示す図である。ディスクアレイ装置３０は、ＤＭＡ制御回路を有したＤＭＡが適用されるコンピュータシステムの一例であり、ファイバチャネルリンク５０Ａ，５０Ｂを介してホストコンピュータ４０Ａ，４０Ｂと接続されている。
【００８２】
ディスクアレイ装置３０は、ホストコンピュータ４０Ａ，４０Ｂから送信される指示情報に基づいてディスクアレイ装置３０内のデータを検索し、検索したデータをホストコンピュータ４０Ａ，４０Ｂに提供するパーソナルコンピュータ等の装置である。このディスクアレイ装置３０は、複数のディスク３６Ａ，３６Ｂを組み合わせることによって大量のデータを高速に読み書きするためのＲＡＩＤ機能を有している。
【００８３】
図２に示すように、ディスクアレイ装置３０は、チャネルアダプタ３１Ａ，３１Ｂ、キャッシュメモリ３２Ａ，３２Ｂ、キャッシュコントローラ３３Ａ，３３Ｂ、ディスクアダプタ３４Ａ，３４Ｂ、スイッチ３５Ａ，３５Ｂ、ディスク３６Ａ，３６Ｂを備えている。
【００８４】
なお、チャネルアダプタ３１Ａとチャネルアダプタ３１Ｂ、キャッシュメモリ３２Ａとキャッシュメモリ３２Ｂ、キャッシュコントローラ３３Ａとキャッシュコントローラ３３Ｂ、ディスクアダプタ３４Ａとディスクアダプタ３４Ｂ、スイッチ３５Ａとスイッチ３５Ｂ、ディスク３６Ａとディスク３６Ｂは、それぞれ同様の機能を有するのでここではチャネルアダプタ３１Ａ、キャッシュメモリ３２Ａ、キャッシュコントローラ３３Ａ、ディスクアダプタ３４Ａ、スイッチ３５Ａ、ディスク３６Ａを例にとって説明する。
【００８５】
チャネルアダプタ３１Ａは、ホストコンピュータ４０Ａとデータの送受信を行う通信Ｉ／Ｆ（インタフェース）の機能を有するとともに、ＤＭＡ転送を行うＤＭＡチップを有している。
【００８６】
キャッシュメモリ３２Ａは、複数のデータを記憶するディスク３６Ａのデータを一時的に記憶する。キャッシュコントローラ３３Ａは、キャッシュメモリ３２Ａを管理、制御する。ディスクアダプタ３４Ａは、ディスク３６Ａとデータの送受信を行う通信Ｉ／Ｆを有している。
【００８７】
スイッチ３５Ａは、複数のディスク３６Ａを接続するとともに、各ディスクとディスクアダプタ３４Ａの接続を切替える。ディスク３６Ａは、複数のディスクからなりディスクドライブ（図示せず）によって制御されている。ディスク３６Ａは、転送（検索）対象となるデータを複数記憶している。
【００８８】
チャネルアダプタ３１Ａはホストコンピュータ２Ａからデータの読み出し（リード）要求を受けると、キャッシュコントローラ３３Ａに対してホストコンピュータ４０Ａが指定した所定のデータがキャッシュメモリ３２Ａに存在するか否かを確認する。
【００８９】
キャッシュメモリ３２Ａにホストコンピュータ４０Ａが指定したデータがある場合、キャッシュコントローラ３３Ａはチャネルアダプタ３１Ａに対してデータの読み出しが可能であることを通知する。チャネルアダプタ３１Ａはキャッシュメモリ３２Ａから読み出し可能なデータを読み出してホストコンピュータ４０Ａに転送する。
【００９０】
一方、キャッシュメモリ３２Ａにホストコンピュータ４０Ａが指定したデータがない場合、キャッシュコントローラ３３Ａはディスクアダプタ３４Ａ、スイッチ３５Ａを介してホストコンピュータ４０Ａが指定した所定のデータを格納しているディスク３６Ａからデータを読み出して記憶する（ステージング）。
【００９１】
この後、キャッシュコントローラ３３Ａは、チャネルアダプタ３１Ａに対してデータの読み出しが可能であることを通知する。チャネルアダプタ３１Ａは、キャッシュメモリ３２Ａから読み出し可能なデータを読み出してホストコンピュータ４０Ａに転送する。
【００９２】
また、チャネルアダプタ３１Ａは、図１に示したように、ＭＰＵ６１ＡとＤＭＡチップ６５Ａとを有する。ＭＰＵ６１Ａは、チャネルアダプタ３１Ａがホストコンピュータ４０Ａからキーサーチ命令を受け付けた場合に、キーサーチをおこなうためのディスクリプタ（トラック連続サーチ用ディスクリプタ）を生成する。
【００９３】
図３は、トラック連続サーチ用ディスクリプタの構成の一例を示す図である。図３に示すように、ＭＰＵ６１Ａは、キーサーチの対象となるトラックごとにディスクリプタ（ディスクリプタ１〜ディスクリプタｎ）を生成し、チャネルアダプタ３１Ａのメモリ６０に格納する。
【００９４】
各ディスクリプタは、「モード」、「ＣＭＡ」、「Ｒｅａｄ−ＭＥＭＡ」、「Ｗｒｉｔｅ−ＭＥＭＡ」、「ＦＢＩＤ」の各情報から構成される。
【００９５】
「モード」は、ＤＭＡチップ６５Ａの動作を制御するための情報であり、以下に示す４つの内容（情報）を含んでいる。
【００９６】
（１）トラック連続サーチを実施するか否かの情報。この情報が「１」のときは、ＥＯＴが検出されるか、あるいは、以下に説明する比較条件が満たされるまで複数のレコードのカウントデータおよびキーデータを連続的に読み込むトラック連続サーチを実行する。この情報が「０」のときは、カウントデータおよびキーデータを１レコード分だけ読み込む。
【００９７】
（２）比較モード（どのような場合に比較条件を満たしたと判定するかの情報）。この情報が「０１」の場合、ホストコンピュータ４０Ａにより指定されたキーデータとキャッシュメモリ３２Ａから読み出したキーデータとが等しいときに比較条件を満たす（Ｈｉｔ）と判定し、それらが等しくないときには比較条件を満たさない（Ｍｉｓｓ）と判定する。
【００９８】
「１０」の場合、ホストコンピュータ４０Ａにより指定されたキーデータがキャッシュメモリ３２Ａから読み出したキーデータよりも大きいときに比較条件を満たす（Ｈｉｔ）と判定し、大きくないときには比較条件を満たさない（Ｍｉｓｓ）と判定する。
【００９９】
「１１」の場合、ホストコンピュータ４０Ａにより指定されたキーデータがキャッシュメモリ３２Ａから読み出したキーデータよりも大きいか、あるいは、両者が等しいときに比較条件を満たす（Ｈｉｔ）と判定し、それ以外のときには比較条件を満たさない（Ｍｉｓｓ）と判定する。なお、「００」は予約値である。
【０１００】
（３）ＭＰＵ２２に対する割り込みタイミングの設定情報。この情報が「０１」の場合は、比較条件が満たされた場合にＭＰＵ２２に対する割込みが実行される。この情報が「１０」の場合は、ＥＯＴが検出された場合にＭＰＵ２２に対する割込みが実行される。
【０１０１】
（４）ＭＰＵ２２へキーサーチの完了を通知するか否かの設定情報。この情報が「０」の場合は、ＭＰＵ２２へキーサーチの完了を通知しない。この情報が「１」の場合は、ＭＰＵ２２へキーサーチの完了を通知する。
【０１０２】
また、「ＣＭＡ」は、キャッシュメモリ３２Ａに記憶された各レコードのうち、トラックの先頭にあるレコードのカウント部のアドレス情報である。「Ｒｅａｄ−ＭＥＭＡ」は、ホストコンピュータ４０Ａにより指定されたキーデータのメモリ６０上のアドレス情報である。「Ｗｒｉｔｅ−ＭＥＭＡ」は、キーサーチ結果が記憶されるメモリ６０上のアドレス情報である。「ＦＢＩＤ」は、カウントデータのＢＩＤに用いられる情報である。
【０１０３】
図２の説明に戻ると、ＤＭＡチップ６５Ａは、図３に示したディスクリプタがＭＰＵ６１Ａにより生成されると、そのディスクリプタに含まれるカウント部のアドレス情報に基づいて、キャッシュメモリ３２Ａからカウントデータを読み込む。
【０１０４】
そして、ＤＭＡチップ６５Ａが有するカウント解析部７７Ａは、読み込んだカウントデータに含まれる可変長のキー部のキー長の情報と、可変長のデータ部のデータ長の情報とに基づいて、キャッシュメモリ３２Ａ上のキーデータのアドレスや、つぎに読み出すカウントデータのアドレスを算出する。
【０１０５】
その後、ＤＭＡチップ６５Ａは、算出したアドレスに基づいてキャッシュメモリ３２Ａからキーデータを読み出す。また、ＤＭＡチップ６５Ａは、メモリ６０からホストコンピュータ４０Ａにより指定されたキーデータを読み出して、図３に示したディスクリプタに含まれる比較モードの設定に基づき、キーデータの比較をおこなう。
【０１０６】
さらに、ＤＭＡチップ６５Ａが有するテーブルライト部７８は、は、キーデータの比較結果をキーサーチ結果テーブルとしてメモリ６０に記憶する。図４は、メモリ６０に記憶されるキーサーチ結果テーブルの一例を示す図である。
【０１０７】
図４に示すように、このキーサーチ結果テーブルは、「キーサーチ結果」、「比較結果」、「ＥＯＴ」、「エラーおよびエラーコード」、「モード，タグ」、「カウント」の各情報から構成され、それらの情報は実行されたキーサーチ処理ごとに各メモリアドレスオフセットに対応するメモリ６０上の各領域に記憶される。
【０１０８】
「キーサーチ結果」の情報は、ホストコンピュータ４０Ａにより指定されたキーデータとキャッシュメモリ３２Ａから読み出したキーデータとを比較した結果、それらの間に存在した大小関係を示す２ビットの情報である。
【０１０９】
この情報が「１」の場合、ホストコンピュータ４０Ａにより指定されたキーデータとキャッシュメモリ３２Ａから読み出したキーデータとが等しかったことを示し、「２」の場合、ホストコンピュータ４０Ａにより指定されたキーデータがキャッシュメモリ３２Ａから読み出したキーデータよりも大きかった、あるいは、両者が等しかったことを示し、「３」の場合、ホストコンピュータ４０Ａにより指定されたキーデータがキャッシュメモリ３２Ａから読み出したキーデータよりも大きかったことを示す。なお、「０」は予約値である。
【０１１０】
この「キーサーチ結果」の情報は、図３に示したトラック連続サーチ用ディスクリプタの「モード」において比較モードにより設定される比較条件を、ホストコンピュータ４０Ａにより指定されたキーデータとキャッシュメモリ３２Ａから読み出したキーデータとが満たしたか否かが判定された場合に、その判定結果を導いた根拠となった情報である。
【０１１１】
「比較結果」は、図３に示したディスクリプタの比較モードに設定された比較条件を、ホストコンピュータ４０Ａにより指定されたキーデータとキャッシュメモリ３２Ａから読み出したキーデータとが満たしたか否かを示す１ビットの情報である。この情報が「０」の場合、比較条件を両者が満たさなかった（Ｍｉｓｓ）ことを示し、「１」の場合、比較条件を両者が満たした（Ｈｉｔ）ことを示す。
【０１１２】
「ＥＯＴ」は、カウントデータの解析の結果、ＥＯＴが検出されたか否かを示す１ビットの情報である。この情報が「０」の場合、ＥＯＴが検出されていないことを示し、「１」の場合、ＥＯＴが検出されたことを示す。
【０１１３】
「エラーおよびエラーコード」は、データの転送中にエラーが発生したか否かを示す１ビットの情報（エラー）、および、エラーが発生した場合に発生したエラーのエラーコードを示す７ビットの情報（エラーコード）である。
【０１１４】
「モード，タグ」は、ホストコンピュータにより送信されたキーサーチ命令に対応するディスクリプタを識別する５ビットの識別情報（モード）、および、キーサーチ命令を送信したホストコンピュータ４０Ａを識別する５ビットの識別情報（タグ）である。「カウント」は、読み出した８ビットのカウントデータ（保護情報を除く）である。
【０１１５】
なお、図２では、ホストコンピュータの数が２つである場合について説明したが、これに限定されず、ホストコンピュータの数は１つや３つ以上であってもよい。また、ディスクアレイ装置３０に備えられるチャネルアダプタの数も２つに限らず、１つや３つ以上であってもよい。
【０１１６】
つぎに、本実施例に係るチャネルアダプタ３１Ａの機能構成について説明する。図５は、本実施例に係るチャネルアダプタ３１Ａの機能構成を示す図である。このチャネルアダプタ３１Ａは、メモリ６０、ＭＰＵ６１Ａ、チップセット６２、プロトコルチップ６３、光−電気変換モジュール６４Ａ，６４Ｂ、ＤＭＡチップ６５Ａからなる。
【０１１７】
プロトコルチップ６３は、ホストコンピュータ４０Ａとの接続に用いられるファイバチャネル（ファイバチャネルリンク５０Ａ）のプロトコルを制御するためのＬＳＩである。ディスクアレイ装置３０とホストコンピュータ４０Ａとは、プロトコルチップ６３とホストコンピュータ４０Ａとを光ケーブル等によって接続することによって接続される。
【０１１８】
光−電気変換モジュール６４Ａ，６４Ｂは、電気―光変換を行なうモジュールである。ＭＰＵ６１Ａはチャネルアダプタ３１Ａの全体を制御するプロセッサ（ＬＳＩ）であり、チップセット６２はメモリ６０と接続されるメモリインターフェース（ＬＳＩ）である。
【０１１９】
メモリ６０は、ＤＲＡＭ等によって構成されるメモリであり、ＭＰＵ６１Ａが生成・利用する種々のデータを記憶する。具体的には、メモリ６０は、ＭＰＵ６１Ａにより生成されるディスクリプタ（ＭＰＵ６１ＡからＤＭＡチップ６５Ａに対する命令）や、ホストコンピュータ４０Ａにより送信されたサーチデータ等を記憶する。
【０１２０】
ＤＭＡチップ６５Ａは、キャッシュメモリ３２Ａと通信を行うインターフェース機能、ＤＭＡ機能（ＤＭＡ回路）を有している。ＤＭＡチップ６５Ａは、ＭＰＵ６１Ａから送信される指示情報に従ってキャッシュメモリ３２Ａとの間で通信処理を行なう。すなわち、ＤＭＡチップ６５Ａは、ＭＰＵ６１Ａからメモリ６０に送信され、メモリ６０が記憶するディスクリプタに基づいてデータ転送を行なう。
【０１２１】
ＭＰＵ６１Ａ、チップセット６２、プロトコルチップ６３、ＤＭＡチップ６５Ａは、互いにＰＣＩバスによって接続されており、互いにデータの転送を行なう。また、ＭＰＵ６１Ａからプロトコルチップ６３やＤＭＡチップ６５Ａへの指示もＰＣＩバス等によって行なわれる。
【０１２２】
チャネルアダプタ３１Ａは、ファイバチャネルリンク５０Ａを介してホストコンピュータ４０Ａからキーサーチ命令を受け付けると、ホストコンピュータ４０Ａから送信されたキーデータをメモリ６０に格納する。また、ＭＰＵ６１Ａは、キーサーチ実行するためのディスクリプタをメモリ６０に送信し、メモリ６０がＭＰＵ６１Ａからのディスクリプタを記憶する。
【０１２３】
ＤＭＡチップ６５Ａのカウント解析部７７Ａは、メモリ６０のディスクリプタを読み出して、カウントデータの解析処理を実行する。そして、ＤＭＡチップ６５Ａは、メモリ６０が記憶するキーデータとキャッシュメモリ３２Ａが記憶するキーデータとの比較処理をおこなう。すなわち、ＤＭＡチップ６５Ａがメモリ６０とキャッシュメモリ３２Ａからそれぞれのキーデータを読み出してキーデータの比較し、キーサーチ処理を実行する。
【０１２４】
また、ＤＭＡチップ６５Ａのテーブルライト部７８Ａは、図４に示したような、キーサーチ処理の実行結果をメモリ６０に対して書き出す処理をおこなう。
【０１２５】
図６は、本実施例に係るＤＭＡチップ６５Ａの機能構成を示す図である。ＤＭＡチップ６５Ａは、メモリＩ／Ｆ部７０、サーチデータリード部７１、ディスクリプタ制御部７３、キー・カウント比較部７４、キー・カウントリード部７５、キャッシュＩ／Ｆ部７６、カウント解析部７７、テーブルライト部７８からなる。
【０１２６】
メモリＩ／Ｆ部７０は、メモリ６０と接続される通信インターフェースを有しており、この通信インターフェースのプロトコル制御を行なう。メモリＩ／Ｆ部７０は、通信インターフェースを制御する（通信インターフェースに要求を出す）ことによってメモリ６０から所定のデータを受信する。
【０１２７】
キャッシュＩ／Ｆ部７６は、キャッシュメモリ３２Ａと接続される通信インターフェースを有しており、この通信インターフェースのプロトコル制御を行なう。キャッシュＩ／Ｆ部７６は、通信インターフェースを制御することによってキャッシュメモリ３２Ａから所定のデータを受信する。
【０１２８】
ここで、メモリＩ／Ｆ部７０、キャッシュＩ／Ｆ部７６の通信インターフェースはＰＣＩバスであり、それぞれＰＣＩバスプロトコル制御回路によって構成されている。
【０１２９】
ディスクリプタ制御部７３は、ＭＰＵ６１Ａからの指示を受けて（指示情報を受信して）、メモリ６０が記憶しているディスクリプタを読み出す。
【０１３０】
そして、ディスクリプタ制御部７３は、メモリ６０から読み出したディスクリプタの中からアドレス、モードなどの情報を抽出してサーチデータリード部７１、キー・カウント比較部７２、キー・カウントリード部７５、テーブルライト部７８に送信する。
【０１３１】
ここでのアドレスには、キャッシュメモリ３２Ａに記憶されたトラックの先頭レコードのカウントデータのアドレスや、メモリ６０に記憶されたキーデータのアドレス、および、キーサーチ結果を記憶するメモリ６０のアドレスが含まれている。
【０１３２】
サーチデータリード部７１は、ディスクリプタに指定されたアドレス情報に基づいて、メモリ６０からホストコンピュータ４０Ａにより指定されたキーデータを読み出す。このサーチデータリード部７１は、バッファ７２を有しており、このバッファ７２がメモリ６０から読み出したキーデータを記憶する。バッファ７２が記憶するキーデータは、キー・カウント比較部７４によって読み出される。
【０１３３】
キー・カウントリード部７５は、ディスクリプタにより指定されたトラックの先頭レコードのアドレス情報に基づいて、キャッシュメモリ３２Ａからカウントデータを読み出す。また、キー・カウントリード部７５は、カウント解析部７７がカウントデータを基にして算出したカウントデータおよびキーデータのアドレスの情報に基づいて、キャッシュメモリ３２Ａからカウントデータおよびキーデータを読み出す。
【０１３４】
キー・カウント比較部７４は、キー・カウントリード部７５によりキャッシュメモリ３２Ａから読み出されたキーデータと、サーチデータリード部７１のバッファ７２から読み出したキーデータとを比較する。
【０１３５】
そして、キー・カウント比較部７４は、サーチデータの比較結果が比較条件を満たしているか（Ｈｉｔ）、比較条件を満たしていないか（Ｍｉｓｓ）を判断し、この判断結果をテーブルライト部７８へ通知する。
【０１３６】
カウント解析部７７は、キー・カウントリード部７５によりキャッシュメモリ３２Ａから読み出されたカウントデータを解析し、キャッシュメモリ３２Ａ上のカウントデータおよびキーデータのアドレスを算出する。
【０１３７】
具体的には、カウント解析部７７は、トラックの先頭レコードのアドレス情報に基づいて読み出されたレコードのカウントデータに含まれるキー長の情報から、当該レコードのキーデータのアドレスを算出する。また、カウント解析部７７は、そのキー長の情報とカウントデータに含まれるデータ長の情報とから、同一トラックにおけるつぎのレコードのカウントデータのアドレスを算出する。
【０１３８】
カウント解析部７７は、このような処理を繰り返すことにより、同一トラックの各レコードにおけるカウントデータおよびキーデータのアドレスを算出する。カウントデータにＥＯＴ情報が含まれている場合には、カウント解析部７７は、テーブルライト部７８にそれを通知する。
【０１３９】
テーブルライト部７８は、キーデータの比較結果の情報やＥＯＴの検出結果の情報などを取得して、図４に示したようなキーサーチ結果テーブルをメモリＩ／Ｆ部７０を介して出力し、キーサーチ結果テーブルをメモリ６０に格納する。また、テーブルライト部７８は、キーデータの比較条件が満たされた場合、あるいは、ＥＯＴが検出された場合に、ＭＰＵ６１Ａに対する割込みをおこなう。
【０１４０】
ここで、サーチデータリード部７１、ディスクリプタ制御部７２、キー・カウント比較部７４、キー・カウントリード部７５、カウント解析部７７、テーブルライト部７８は、それぞれ制御機能を備えている。各制御部はステートマシンを有し、相互に通信を行いながらＤＭＡチップ６５Ａ全体の動作を制御する。
【０１４１】
つぎに、本実施例に係るキーサーチ処理の処理手順について説明する。図７は、本実施例に係るキーサーチ処理の処理手順を示すシーケンス図である。なお、図７では、ホストコンピュータ４０Ａからキーサーチ命令を受け付けた場合に、サーチ対象となるトラックの各レコードがキャッシュメモリ３２Ａにすでに記憶されているものとする。
【０１４２】
図７に示すように、ホストコンピュータ４０Ａからキーサーチをおこなうための動作パラメータの指定を受け付けると（１）、チャネルアダプタ３１ＡのＭＰＵ６１Ａは、サーチ対象となるトラックの各レコードがキャッシュメモリ３２Ａに記憶されているか否かを確認するキャッシュヒット確認処理をおこなう（２）。
【０１４３】
ここでは、各レコードがキャッシュメモリ３２Ａに記憶されているので、ＭＰＵ６１Ａは、ホストコンピュータ４０Ａに対してキャッシュヒット通知を送信する（３）。ホストコンピュータ４０Ａは、キャッシュヒット通知を受信すると、ＭＰＵ６１Ａに対してキーサーチ命令を送信する（４）。
【０１４４】
その後、ＭＰＵ６１Ａは、キャッシュメモリ３２Ａに記憶されたカウントデータおよびキーデータを読み込むようにチャネルアダプタ３１ＡのＤＭＡチップ１５に指示するため、図３で説明したようなトラック連続サーチ用ディスクリプタを構築し、メモリ６０に記憶する処理をおこなう（５）。そして、ＭＰＵ６１Ａは、ＤＭＡチップ６５Ａに対して、キー読み込み処理を開始するようＤＭＡチップ６５Ａに指示する（６）。
【０１４５】
続いて、ＤＭＡチップ６５Ａは、メモリ６０に記憶されたトラック連続サーチ用ディスクリプタを読み込む（７）。そして、ＤＭＡチップ６５Ａは、トラック連続サーチ用ディスクリプタに含まれるトラックの先頭レコードのアドレスの情報に基づいて、キャッシュメモリ３２Ａからカウントデータを読み込む（８）。
【０１４６】
その後、ＤＭＡチップ６５Ａは、読み込んだカウントデータに含まれるキー長およびデータ長の情報に基づいて、キーデータのアドレス、および、つぎに読み込む同一トラックのカウントデータのアドレスを算出するカウント解析処理をおこなう（９）。
【０１４７】
さらに、ＤＭＡチップ６５Ａは、算出したキーデータのアドレスの情報を基にして、キャッシュメモリ３２Ａからキーデータを読み込み（１０）、ホストコンピュータ４０Ａから送信されたキーデータと、キャッシュメモリ３２Ａから読み出したキーデータとを比較して、比較結果をメモリ６０に書き出す処理をおこなう。また、キャッシュメモリ３２Ａから読み出した８バイトのカウントデータもメモリ６０に書き出す（１１）。
【０１４８】
カウントデータの読み込み処理（８）、カウント解析処理（９）、キーデータの読み込み処理（１０）、キーデータの比較結果とカウントデータの書き出し処理（１１）は、キーデータの比較条件が満たされるか、あるいは、ＥＯＴが検出されるまで反復される。
【０１４９】
キーデータの比較条件が満たされた場合、あるいは、ＥＯＴが検出された場合には、ＤＭＡチップ６５Ａは、ＭＰＵ６１Ａにキーサーチ処理の完了を通知する（１２）。その通知を受け付けたＭＰＵ６１Ａは、ホストコンピュータ４０Ａに対してメモリ６０に記憶されたキーサーチ結果を通知し（１３）、このキーサーチ処理を終了する。
【０１５０】
上述してきたように、本実施例では、チャネルアダプタ３１ＡのＭＰＵ６１Ａが、可変長のキーデータとキーデータのデータ長に係る情報とを少なくとも含み、キャッシュメモリ３２Ａの連続する記憶領域に記憶された複数のレコードを連続して読み出す場合に、複数のレコードの読み出し命令であるトラック連続サーチ用ディスクリプタを生成し、チャネルアダプタ３１ＡのＤＭＡチップ６５Ａが、ＭＰＵ６１Ａにより生成されたトラック連続サーチ用ディスクリプタを受信した場合に、可変長のキーデータのデータ長に係る情報をキャッシュメモリ３２Ａから読み出し、キャッシュメモリ３２Ａからさらに読み出すデータのアドレスをデータ長に係る情報に基づいて算出することにより、キャッシュメモリ３２Ａからデータを読み出す処理をＭＰＵ６１Ａに代わって実行することとしたので、ＭＰＵ６１Ａにかかる負荷を軽減し、メモリアクセス中にＭＰＵ６１Ａが他の処理を実行することを可能とすることによりＭＰＵ６１Ａの利用効率を高めることができる。
【０１５１】
また、本実施例では、ＤＭＡチップ６５Ａは、算出したアドレスの情報に基づいてキャッシュメモリ３２Ａから読み出したデータに所定のトラックにおける最後のレコードであることを示す情報（ＥＯＴ）が含まれている場合に、最後のレコードが検出されたことを示す情報を出力することとしたので、ＭＰＵ６１Ａにかかる負荷を軽減しつつ、所定のデータ群の中から最後のデータを検出する処理を実行することができる。
【０１５２】
また、本実施例では、ＤＭＡチップ６５Ａは、算出したアドレスの情報に基づいてキャッシュメモリ３２Ａから読み出したキーデータと、ホストコンピュータ４０Ａから受信したキーデータとが所定の比較条件（図３に示したトラック連続サーチ用ディスクリプタの「モード」において比較モードにより設定される条件）を満足するか否かを判定し、判定結果に係る情報をＭＰＵ６１Ａが利用するメモリ６０に格納することとしたので、ＭＰＵ６１Ａはメモリ６０にアクセスすることにより、比較処理の実行結果をいつでも効率的に取得することができる。
【０１５３】
また、本実施例では、トラック連続サーチ用ディスクリプタは、キャッシュメモリ３２Ａに記憶された所定のトラックの先頭レコードのアドレスに係る情報と、ホストコンピュータ４０Ａから受信し、メモリ６０に記憶されたキーデータのアドレスに係る情報とを少なくとも含み、ＤＭＡチップ６５Ａは、先頭レコードのカウント部のアドレスに係る情報、および、各レコードの可変長のキー部およびデータ部のデータ長に係る情報に基づいて、キャッシュメモリ３２Ａからさらに読み出すキーデータのアドレスの情報を算出し、算出したアドレスの情報に基づいて読み出したキーデータと、ホストコンピュータ４０Ａから受信したキーデータのアドレスに係る情報に基づいてメモリ６０から読み出したキーデータとの間で所定の比較条件を満足したか否かを判定することとしたので、ＭＰＵ６１Ａは簡単な命令を生成するだけでＤＭＡチップ６５Ａにキーデータの読み出し処理を依頼することができる。
【０１５４】
また、本実施例では、ＤＭＡチップ６５Ａは、上記比較条件の判定結果に係る情報として、算出したアドレスの情報に基づいてキャッシュメモリ３２Ａから読み出したキーデータとホストコンピュータ４０Ａから受信したキーデータとが所定の比較条件を満足したか否かの判定結果に係る情報（図４で説明した「比較結果」）に加えて、当該判定結果を導いた根拠に係る情報（図４で説明した「キーサーチ結果」）をメモリ６０に格納することとしたので、ＭＰＵ６１Ａは比較結果の詳細情報を容易に取得することができる。
【０１５５】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施例にて実施されてもよいものである。
【０１５６】
たとえば、本実施例では、ＤＭＡチップ６５Ａがキーサーチ処理をＭＰＵ６１Ａに負荷をかけることなく実行する場合について説明したが、連続してデータを読み取る必要があるＥＯＴサーチ処理などの他の処理をＤＭＡチップ６５Ａがおこなう場合にも同様に本発明を適用することができる。
【０１５７】
具体的には、ＤＭＡチップ６５Ａがカウントデータに含まれるキー長およびデータ長の情報を基にして、各レコードのカウントデータのアドレスをつぎつぎに算出し、カウントデータをメモリから読み出すことにより、ＥＯＴをＭＰＵ６１Ａに負荷をかけることなく検出することができる。また、カウントデータをキャッシュメモリ３２Ａから読み出し、メモリ６０へ格納することにより、ＭＰＵ６１ＡはＲｅａｄ−ＭＥＭＡからＥＯＴまでのすべてのカウントデータをＭＰＵ６１Ａに負荷をかけることなく読み出すことができる。
【０１５８】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１５９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０１６０】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１６１】
なお、本実施の形態で説明したメモリアクセス方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。
【０１６２】
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【０１６３】
（付記１）ダイレクトメモリアクセスによりメモリにアクセスするメモリアクセス装置であって、
可変長のデータと当該可変長のデータのデータ長に係る情報とを少なくとも含み、前記メモリの連続する記憶領域に記憶された複数のデータを連続して読み出す場合に、複数のデータの読み出し命令を生成する中央演算手段と、
前記中央演算手段により生成された読み出し命令を受信した場合に、前記可変長のデータのデータ長に係る情報を前記メモリから読み出し、当該メモリからさらに読み出すデータの記憶位置を前記データ長に係る情報に基づいて算出することにより、前記メモリからデータを読み出す処理を前記中央演算手段に代わって実行するデータ読み出し手段と、
を備えたことを特徴とするメモリアクセス装置。
【０１６４】
（付記２）前記データ読み出し手段は、算出した記憶位置の情報に基づいて前記メモリから読み出したデータに所定のデータ群における最後のデータであることを示す情報が含まれている場合に、最後のデータが検出されたことを示す情報を出力することを特徴とする付記１に記載のメモリアクセス装置。
【０１６５】
（付記３）前記データ読み出し手段は、算出した記憶位置の情報に基づいて前記メモリから読み出したデータと外部装置から受信したデータとが所定の条件を満足するか否かを判定し、判定結果に係る情報を前記中央演算手段が利用する中央演算手段用メモリに格納することを特徴とする付記１または２に記載のメモリアクセス装置。
【０１６６】
（付記４）前記データの読み出し命令は、前記メモリに記憶された所定のデータ群の先頭データの記憶位置に係る情報と、外部装置から受信し、前記中央演算手段用メモリに記憶されたデータの記憶位置に係る情報とを少なくとも含み、前記データ読み出し手段は、前記先頭データの記憶位置に係る情報、および、前記可変長のデータのデータ長に係る情報に基づいて、前記メモリからさらに読み出すデータの記憶位置の情報を算出し、算出した記憶位置の情報に基づいて読み出したデータと、前記外部装置から受信したデータの記憶位置に係る情報に基づいて中央演算手段用メモリから読み出したデータとの間で所定の条件を満足したか否かを判定することを特徴とする付記３に記載のメモリアクセス装置。
【０１６７】
（付記５）前記データ読み出し手段は、前記判定結果に係る情報として、算出した記憶位置の情報に基づいて前記メモリから読み出したデータと外部装置から受信したデータとが所定の条件を満足したか否かの判定結果に係る情報に加えて、当該判定結果を導いた根拠に係る情報を前記中央演算手段用メモリに格納することを特徴とする付記３または４に記載のメモリアクセス装置。
【０１６８】
（付記６）ダイレクトメモリアクセスによりメモリにアクセスするメモリアクセス方法であって、
可変長のデータと当該可変長のデータのデータ長に係る情報とを少なくとも含み、前記メモリの連続する記憶領域に記憶された複数のデータを連続して読み出す場合に、中央演算装置が複数のデータの読み出し命令を生成する命令生成工程と、
前記命令生成工程により生成された読み出し命令を受信した場合に、前記可変長のデータのデータ長に係る情報を前記メモリから読み出し、当該メモリからさらに読み出すデータの記憶位置を前記データ長に係る情報に基づいて算出することにより、前記メモリからデータを読み出す処理を前記中央演算手段に代わって実行するデータ読み出し工程と、
を含んだことを特徴とするメモリアクセス方法。
【産業上の利用可能性】
【０１６９】
以上のように、本発明に係るメモリアクセス装置は、ダイレクトメモリアクセスによりメモリにアクセスするメモリアクセス装置を制御するＭＰＵにかかる負荷を軽減するとともに、メモリアクセス中にＭＰＵが他の処理を実行することを可能とし、ＭＰＵの利用効率を高めることが必要なメモリアクセスシステムに適している。
【図面の簡単な説明】
【０１７０】
【図１】本実施例に係るキーサーチ処理の概念を説明するための説明図である。
【図２】本実施例に係るディスクアレイ装置３０の機能構成を示す図である。
【図３】トラック連続サーチ用ディスクリプタの構成の一例を示す図である。
【図４】メモリ６０に記憶されるキーサーチ結果テーブルの一例を示す図である。
【図５】本実施例に係るチャネルアダプタ３１Ａの機能構成を示す図である。
【図６】本実施例に係るＤＭＡチップ６５Ａの機能構成を示す図である。
【図７】本実施例に係るキーサーチ処理の処理手順を示すシーケンス図である。
【図８】従来のディスクアレイ装置１の機能構成を示す図である。
【図９】従来のチャネルアダプタ４Ａの機能構成を示す図である。
【図１０】従来のＤＭＡチップ１５の機能構成を示す図である。
【図１１】ディスク９Ａのデータフォーマットについて説明する図である。
【図１２】従来のキーサーチ処理の処理手順を示すシーケンス図である。
【符号の説明】
【０１７１】
１，３０  ディスクアレイ装置
２Ａ，２Ｂ，４０Ａ，４０Ｂ  ホストコンピュータ
３Ａ，３Ｂ，５０Ａ，５０Ｂ  ファイバチャネルリンク
４Ａ，４Ｂ，３１Ａ，３１Ｂ  チャネルアダプタ
５Ａ，５Ｂ，３２Ａ，３２Ｂ  キャッシュメモリ
６Ａ，６Ｂ，３３Ａ，３３Ｂ  キャッシュコントローラ
７Ａ，７Ｂ，３４Ａ，３４Ｂ  ディスクアダプタ
８Ａ，８Ｂ，３５Ａ，３５Ｂ  スイッチ
９Ａ，９Ｂ，３６Ａ，３６Ｂ  ディスク
１０，６０  メモリ
１１，６１Ａ，６１Ｂ  ＭＰＵ
１２，６２  チップセット
１３，６３  プロトコルチップ
１４Ａ，１４Ｂ，６４Ａ，６４Ｂ  光−電気変換モジュール
１５，６５Ａ  ＤＭＡチップ
２０，７０  メモリＩ／Ｆ部
２１，７１  サーチデータリード部
２２，７２  バッファ
２３，７３  ディスクリプタ制御部
２４，７５  キー・カウントリード部
２５，７６  キャッシュＩ／Ｆ部
７４  キー・カウント比較部
７７  カウント解析部
７８  テーブルライト部
【図１】
2007179086.tif 000003
【図２】
2007179086.tif 000004
【図３】
2007179086.tif 000005
【図４】
2007179086.tif 000006
【図５】
2007179086.tif 000007
【図６】
2007179086.tif 000008
【図７】
2007179086.tif 000009
【図８】
2007179086.tif 000010
【図９】
2007179086.tif 000011
【図１０】
2007179086.tif 000012
【図１１】
2007179086.tif 000013
【図１２】
2007179086.tif 000014