(57)【要約】【課題】ダイレクトメモリアクセスによりデータを転送するＤＭＡチップがデータを分割して転送する場合、ＤＭＡチップにおいて異常が発生したか否かを監視すること。【解決手段】転送指示保持部４２３は、ＤＭＡ回路４２１が転送するデータのアドレスおよびデータ長を指示する。期待値テーブル４２４は、転送指示保持部４２３の転送指示を参照して、転送されるデータのアドレスおよびデータ長の期待値を保持する。転送監視部４２５は、バス４７におけるデータのデータ長およびタグ情報を取得する。テーブル更新部４２６は、転送監視部４２５から通知されたデータ長およびタグ情報に基づいて、期待値テーブル４２４の開始アドレスおよびデータ長を更新する。判定部４２７は、データ転送後のＤＭＡ回路４２１に対応する開始アドレスが終了アドレスと一致しており、かつ、データ長が０となっているか否かを判定する。【選択図】        図３
2008146546.tif 000002
【特許請求の範囲】
【請求項１】
転送回路が転送指示に従って実行するデータ転送を監視する監視装置であって、
前記転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶する記憶手段と、
前記転送回路が実際に転送したデータのデータ長を取得する取得手段と、
前記取得手段によって取得されたデータ長に基づいて前記記憶手段に記憶されたアドレスおよびデータ長を更新する更新手段と、
前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する判定手段と
を有することを特徴とする監視装置。
【請求項２】
前記更新手段は、
前記取得手段によって取得されたデータ長を前記記憶手段によって記憶されたデータ長から減算することを特徴とする請求項１記載の監視装置。
【請求項３】
前記判定手段は、
前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶されたデータ長が０である場合に、データ転送が正常終了したと判定することを特徴とする請求項２記載の監視装置。
【請求項４】
前記取得手段は、
転送対象データのうち前記転送回路が転送路を割り当てられる間に転送する部分データのデータ長を取得することを特徴とする請求項１記載の監視装置。
【請求項５】
前記判定手段は、
前記転送回路による部分データの転送開始時に、この部分データに付加された当該部分データに係るアドレス情報が前記記憶手段によって記憶されたアドレスに一致するか否かを判定することを特徴とする請求項４記載の監視装置。
【請求項６】
プロセッサからの転送指示に従ってダイレクトメモリアクセスによってデータ転送を実行する転送回路を備えた半導体集積回路であって、
前記転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶する記憶手段と、
前記転送回路が実際に転送したデータのデータ長を取得する取得手段と、
前記取得手段によって取得されたデータ長に基づいて前記記憶手段に記憶されたアドレスおよびデータ長を更新する更新手段と、
前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する判定手段と
を有することを特徴とする半導体集積回路。
【請求項７】
転送回路が転送指示に従って実行するデータ転送を監視する監視方法であって、
前記転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶回路に記憶する記憶工程と、
前記転送回路が実際に転送したデータのデータ長を取得する取得工程と、
前記取得工程にて取得されたデータ長に基づいて前記記憶回路に記憶されたアドレスおよびデータ長を更新する更新工程と、
前記転送回路による転送対象データの転送終了時に、前記記憶回路に記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する判定工程と
を有することを特徴とする監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送回路が転送指示に従って実行するデータ転送を監視する監視装置、半導体集積回路、および監視方法に関し、特に、ダイレクトメモリアクセスによりデータを転送するＤＭＡチップがデータを分割して転送する場合、ＤＭＡチップにおいて異常が発生したか否かを監視することができる監視装置、半導体集積回路、および監視方法に関する。
【背景技術】
【０００２】
近年のコンピュータの処理能力の向上に伴って、コンピュータが利用するデータは肥大化の一途をたどっており、膨大なデータを記憶しておくためのストレージに関する検討が多く行われている。具体的には、例えばＲＡＩＤ（Redundant Array of Independent Disks）と呼ばれ、複数のハードディスクドライブを組み合わせることにより、高速・大容量・高信頼性を実現するディスクシステムを構築する技術などが確立されている。
【０００３】
このＲＡＩＤなどのディスクシステムにおいては、データを記憶する複数のディスクを備えたディスクアレイ装置が上位装置であるホストコンピュータなどからコマンドを受け付け、データの書き込み（ライト）や読み出し（リード）が行われる。このとき、ホストコンピュータとディスクの間でやり取りされるデータは、ディスクアレイ装置内のキャッシュメモリにもキャッシュされ、以降の処理においては、キャッシュメモリからこのデータを読み出して高速化を図るのが一般的である。また、ホストコンピュータは、ディスクアレイ装置内のチャネルアダプタに接続しており、チャネルアダプタによって、ホストコンピュータとキャッシュメモリやディスクとの間でデータ転送が実行される。
【０００４】
チャネルアダプタは、内部にダイレクトメモリアクセス（Direct Memory Access：以下「ＤＭＡ」と略記する）によるデータ転送を制御するＬＳＩ（Large Scale Integration）などのＤＭＡチップを備えており、ＤＭＡチップがＣＰＵ（Central Processing Unit）からのデータ転送の指示（ディスクリプタ）に従ってデータを転送する。すなわち、ディスクリプタを受け取ったＤＭＡチップは、ディスクリプタによって指定されるアドレスおよびデータ長のデータをキャッシュメモリなどとの間のバスを介して送受する。
【０００５】
このとき、例えばバスの容量やデータ転送先における処理状況によっては、ＤＭＡチップが転送するデータを分割して転送することがある。すなわち、ＤＭＡチップには、バスを制御するバスコントローラが設けられており、このバスコントローラがひとまとまりのデータをバスの容量に応じたデータ長の部分データに分割したり、データ転送先からの指示により一時的にデータの転送を中断したりする。
【０００６】
具体的には、例えば図８に示すように、ひとまとまりのライトデータを転送する際、ＤＭＡチップに設けられたバスコントローラは、ライトデータを例えばデータ＃１〜＃４の部分データに分割し、キャッシュメモリなどの転送先へ転送する。また、このとき、各部分データの転送の間には、他のコマンドが処理されることがあり、図８においては、データ＃２とデータ＃３の転送の間に、リードデータの転送が実行されている。
【０００７】
さらに、ＤＭＡチップ内には一般に複数のＤＭＡ回路が備えられており、例えば特許文献１に記載されているように、アービタによってそれぞれのＤＭＡ回路の転送順序の調停（アービトレーション）が行われている。したがって、ＤＭＡチップ内の１つのＤＭＡ回路による転送データがバスコントローラによって複数の部分データに分割されて転送される際、各部分データの転送の間には、他のＤＭＡ回路からの転送データが転送されることもある。
【０００８】
【特許文献１】特開２００５−１１５４６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述のようなバスコントローラによるデータ転送においては、例えばＤＭＡチップにおけるソフトエラーや論理障害などの異常により、一部の部分データが正常に転送されない場合でも、バスプロトコル上はエラーが発生せず、異常発生箇所の特定が困難であるという問題がある。すなわち、バスコントローラが元のデータを部分データに分割して転送する場合、例えば一部の部分データが完全に消滅してしまうなどの異常が発生しても、他の部分データが正常に転送されていれば、バスプロトコル上はエラーが発生したことにはならない。このため、データの転送先において部分データが結合された時点でエラーが検出され、エラー原因の特定は容易ではなくなる。
【００１０】
特に、ＤＭＡチップのバスコントローラとして既製品が利用される場合には、このバスコントローラはブラックボックスとなっており、バスコントローラにおける処理が正常に実行されているという確証が得られない。したがって、データの転送先においてエラーが検出されると、異常発生箇所がＤＭＡチップであるか否かが不明となってしまう。
【００１１】
本発明はかかる点に鑑みてなされたものであり、ダイレクトメモリアクセスによりデータを転送するＤＭＡチップがデータを分割して転送する場合、ＤＭＡチップにおいて異常が発生したか否かを監視することができる監視装置、半導体集積回路、および監視方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明は、転送回路が転送指示に従って実行するデータ転送を監視する監視装置であって、前記転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶する記憶手段と、前記転送回路が実際に転送したデータのデータ長を取得する取得手段と、前記取得手段によって取得されたデータ長に基づいて前記記憶手段に記憶されたアドレスおよびデータ長を更新する更新手段と、前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する判定手段とを有することを特徴とする。
【００１３】
また、本発明は、上記発明において、前記記憶手段は、転送対象データの開始アドレス、終了アドレス、およびデータ長を記憶することを特徴とする。
【００１４】
また、本発明は、上記発明において、前記更新手段は、前記取得手段によって取得されたデータ長を前記記憶手段によって記憶された開始アドレスに加算することを特徴とする。
【００１５】
また、本発明は、上記発明において、前記判定手段は、前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶された開始アドレスが終了アドレスに一致している場合に、データ転送が正常終了したと判定することを特徴とする。
【００１６】
また、本発明は、上記発明において、前記更新手段は、前記取得手段によって取得されたデータ長を前記記憶手段によって記憶されたデータ長から減算することを特徴とする。
【００１７】
また、本発明は、上記発明において、前記判定手段は、前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶されたデータ長が０である場合に、データ転送が正常終了したと判定することを特徴とする。
【００１８】
また、本発明は、上記発明において、前記取得手段は、転送対象データのうち前記転送回路が転送路を割り当てられる間に転送する部分データのデータ長を取得することを特徴とする。
【００１９】
また、本発明は、上記発明において、前記判定手段は、前記転送回路による部分データの転送開始時に、この部分データに付加された当該部分データに係るアドレス情報が前記記憶手段によって記憶されたアドレスに一致するか否かを判定することを特徴とする。
【００２０】
また、本発明は、プロセッサからの転送指示に従ってダイレクトメモリアクセスによってデータ転送を実行する転送回路を備えた半導体集積回路であって、前記転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶する記憶手段と、前記転送回路が実際に転送したデータのデータ長を取得する取得手段と、前記取得手段によって取得されたデータ長に基づいて前記記憶手段に記憶されたアドレスおよびデータ長を更新する更新手段と、前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する判定手段とを有することを特徴とする。
【００２１】
また、本発明は、転送回路が転送指示に従って実行するデータ転送を監視する監視方法であって、前記転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶回路に記憶する記憶工程と、前記転送回路が実際に転送したデータのデータ長を取得する取得工程と、前記取得工程にて取得されたデータ長に基づいて前記記憶回路に記憶されたアドレスおよびデータ長を更新する更新工程と、前記転送回路による転送対象データの転送終了時に、前記記憶回路に記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する判定工程とを有することを特徴とする。
【発明の効果】
【００２２】
本発明によれば、転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶し、転送回路が実際に転送したデータのデータ長を取得し、取得されたデータ長に基づいて記憶されたアドレスおよびデータ長を更新し、転送回路による転送対象データの転送終了時に、記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する。このため、プロセッサなどからデータ転送を指示された転送回路が指示通りにデータを転送したことを確認することができ、ダイレクトメモリアクセスによりデータを転送するＤＭＡチップがデータを分割して転送する場合、ＤＭＡチップにおいて異常が発生したか否かを監視することができる。
【００２３】
また、本発明によれば、転送対象データの開始アドレス、終了アドレス、およびデータ長を記憶するため、アドレスとデータ長の双方からデータ転送を監視することができ、確実にデータ転送が正常終了したか否かを判定することができる。
【００２４】
また、本発明によれば、取得されたデータ長を記憶された開始アドレスに加算するため、既に転送されたデータ長が開始アドレスに正確に反映され、記憶された開始アドレスを利用してデータ転送の正当性を確認することができる。
【００２５】
また、本発明によれば、転送回路による転送対象データの転送終了時に、記憶された開始アドレスが終了アドレスに一致している場合に、データ転送が正常終了したと判定するため、データ全体が分割されて転送された場合でも、最終的にデータ全体が正しく転送されたことをアドレスから確認することができる。
【００２６】
また、本発明によれば、取得されたデータ長を記憶されたデータ長から減算するため、既に転送されたデータ長が記憶されたデータ長に正確に反映され、記憶されたデータ長を利用してデータ転送の正当性を確認することができる。
【００２７】
また、本発明によれば、転送回路による転送対象データの転送終了時に、記憶されたデータ長が０である場合に、データ転送が正常終了したと判定するため、データ全体が分割されて転送された場合でも、最終的にデータ全体が正しく転送されたことをデータ長から確認することができる。
【００２８】
また、本発明によれば、転送対象データのうち転送回路が転送路を割り当てられる間に転送する部分データのデータ長を取得するため、転送を指示されたデータ全体が一度で転送されず、部分データに分割されて転送される場合でも、記憶されたアドレスおよびデータ長を正確に更新することができる。
【００２９】
また、本発明によれば、転送回路による部分データの転送開始時に、この部分データに付加された当該部分データに係るアドレス情報が記憶されたアドレスに一致するか否かを判定する。このため、データ全体が部分データに分割されて転送される際に、部分データの消滅などがなく、部分データがすべて連続することを確認しながら転送することができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の一実施の形態について、図面を参照して詳細に説明する。
【００３１】
図１は、本実施の形態に係るディスクアレイ装置１０の概略構成を示すブロック図である。同図に示すディスクアレイ装置１０は、ダイレクトメモリアクセス（ＤＭＡ）が適用されるコンピュータシステムの一例であり、ファイバチャネルリンク３０Ａ、３０Ｂを介してホストコンピュータ２０Ａ、２０Ｂと接続されている。このディスクアレイ装置１０は、高信頼性を確保するために二重化構成が採られており、各構成要素が２系統ずつ（図中、参照符号に付加したＡ、Ｂによって区別する）備えられている。それぞれの系統の構成要素は互いに同等の機能を有するため、以下では一方の系統についてのみ構成要素の説明をする。
【００３２】
ディスクアレイ装置１０は、チャネルアダプタ４０Ａ、キャッシュメモリ５０Ａ、キャッシュコントローラ６０Ａ、ディスクアダプタ７０Ａ、スイッチ８０Ａ、およびディスク９０Ａを有している。
【００３３】
チャネルアダプタ４０Ａは、ホストコンピュータ２０Ａとデータの送受信を行う通信インタフェースとしての機能を有するとともに、ＤＭＡによりデータ転送を行うＬＳＩ（すなわちＤＭＡチップ）を有している。本実施の形態においては、主にチャネルアダプタ４０Ａがデータをキャッシュコントローラ６０Ａ経由でキャッシュメモリ５０Ａへ転送する場合について説明する。このとき、チャネルアダプタ４０Ａでは、ＬＳＩがＣＰＵからのディスクリプタに応じてデータをキャッシュコントローラ６０Ａへ転送する。チャネルアダプタ４０Ａの具体的な構成および動作について、後に詳述する。
【００３４】
キャッシュメモリ５０Ａは、ホストコンピュータ２０Ａから複数のディスク９０Ａへ書き込まれるデータ、または複数のディスク９０Ａからホストコンピュータ２０Ａへ読み出されるデータを一時的に記憶する。
【００３５】
キャッシュコントローラ６０Ａは、キャッシュメモリ５０Ａにおけるデータの書き込みおよび読み出しを管理・制御する。なお、キャッシュコントローラ６０Ａは、他方の系統のキャッシュコントローラ６０Ｂとキャッシュ間リンクによって接続されており、キャッシュメモリ５０Ａ、５０Ｂに書き込まれるデータが共有されるようになっている。
【００３６】
ディスクアダプタ７０Ａは、複数のディスク９０Ａとデータの送受信を行う通信インタフェースとしての機能を有する。すなわち、ディスクアダプタ７０Ａは、キャッシュメモリ５０Ａから読み出されたデータを複数のディスク９０Ａへ送信したり、キャッシュメモリ５０Ａへ書き込まれるデータを複数のディスク９０Ａから受信したりする。
【００３７】
スイッチ８０Ａは、複数のディスク９０Ａを接続するとともに、各ディスクとディスクアダプタ７０Ａの接続を切り替える。複数のディスク９０Ａは、例えば複数のハードディスクドライブからなり、それぞれのディスクが転送対象となるデータを記憶している。
【００３８】
図２は、本実施の形態に係るチャネルアダプタ４０の内部構成を示すブロック図である。同図においては、図１の参照符号におけるＡ、Ｂの表記を省略し、例えばホストコンピュータ２０Ａ、２０Ｂをホストコンピュータ２０と表記している。図２に示すチャネルアダプタ４０は、データバッファ４１、ＬＳＩ４２、ＣＰＵ４３、メモリ４４、プロトコルコントローラ４５、光モジュール４６、およびバス４７を有している。
【００３９】
データバッファ４１は、例えばホストコンピュータ２０から転送され、キャッシュコントローラ６０への転送を待機しているデータを一時的に保持する。なお、データバッファ４１は、キャッシュコントローラ６０から転送され、例えばホストコンピュータ２０への転送を待機しているデータも一時的に保持する。
【００４０】
ＬＳＩ４２は、複数のＤＭＡ回路を備えており、ＣＰＵ４３からのディスクリプタに従って、データバッファ４１に保持されたデータをキャッシュコントローラ６０を通じてキャッシュメモリへ転送する。このとき、ＬＳＩ４２は、バス４７の容量やキャッシュコントローラ６０における処理状況に応じてデータを複数の部分データに分割して転送する。そして、本実施の形態に係るＬＳＩ４２は、バス４７を転送される部分データのアドレスおよびデータ長を監視するロジックアナライザを備えており、ディスクリプタによって指定された元のデータが正常に転送されたか否かを判定する。ＬＳＩ４２の要部構成および動作については、後に詳述する。
【００４１】
ＣＰＵ４３は、チャネルアダプタ４０の全体を統括制御するプロセッサであり、ホストコンピュータ２０からのコマンドを解釈してディスクリプタをメモリ４４に蓄積し、メモリ４４に蓄積されたディスクリプタを順次ＬＳＩ４２へ送出する。
【００４２】
メモリ４４は、例えばＤＲＡＭ（Dynamic Random Access Memory）などから構成され、ＣＰＵ４３により生成されたディスクリプタなどを記憶する。
【００４３】
プロトコルコントローラ４５は、ホストコンピュータ２０との接続に用いられるファイバチャネル（図１のファイバチャネルリンク３０Ａ、３０Ｂ）のプロトコルを制御する。プロトコルコントローラ４５は、ホストコンピュータ２０から転送されるデータやコマンドをＣＰＵ４３へ出力する。
【００４４】
光モジュール４６は、ホストコンピュータ２０と接続され、ホストコンピュータ２０から光ファイバなどによって伝送される光信号を電気信号に変換する一方、プロトコルコントローラ４５から出力される電気信号を光信号に変換してホストコンピュータ２０へ転送する。
【００４５】
バス４７は、例えばＰＣＩ（Peripheral Component Interconnect）、ＰＣＩ−Ｘ、およびＰＣＩ−Ｅｘｐｒｅｓｓなどの規格に則ったバスであり、ＬＳＩ４２から出力される部分データをキャッシュコントローラ６０へ伝送する。また、バス４７は、様々な制御用信号が通過する信号線を備えており、部分データの伝送に伴って制御用信号をキャッシュコントローラ６０との間でやり取りする。
【００４６】
図３は、本実施の形態に係るＬＳＩ４２の要部構成を示すブロック図である。同図に示すＬＳＩ４２は、複数のＤＭＡ回路４２１、バス制御部４２２、転送指示保持部４２３、期待値テーブル４２４、転送監視部４２５、テーブル更新部４２６、および判定部４２７を有している。なお、期待値テーブル４２４、転送監視部４２５、テーブル更新部４２６、および判定部４２７は、本実施の形態に係るロジックアナライザを構成している。
【００４７】
複数のＤＭＡ回路４２１は、それぞれが転送指示保持部４２３から指示されるアドレスおよびデータ長のデータをデータバッファ４１から読み出し、バス制御部４２２を介してキャッシュコントローラ６０へ転送したり、ホストコンピュータ２０への転送データとして出力したりする。具体的には、各ＤＭＡ回路４２１は、バス制御部４２２によってバス４７が割り当てられている間に、データバッファ４１から読み出したデータにタグ情報を付加して送出する。タグ情報には、ＤＭＡ回路４２１を一意に識別する情報や、データの先頭であるか否かを示す転送開始ビットが含まれている。
【００４８】
また、ＤＭＡ回路４２１は、バス制御部４２２によってバス４７が割り当てられている間に転送すべきデータをすべて送出しきれない場合は、次回以降バス４７が割り当てられた時に、残りのデータに再度タグ情報を付加して送出する。換言すれば、ＤＭＡ回路４２１は、データを部分データに分割し、各部分データにタグ情報を付加した上でバス制御部４２２へ送出する。また、複数のＤＭＡ回路４２１は、それぞれキャッシュコントローラ６０へのデータの転送が完了すると、データの転送が正常に完了したか否かを判定部４２７へ問い合わせる。
【００４９】
バス制御部４２２は、複数のＤＭＡ回路４２１に対するバス４７の割り当てをアービトレーションによって制御し、バス４７に備えられた信号線の１つを用いてＤＭＡ回路４２１から送出される部分データをバースト転送する。具体的には、バス制御部４２２は、例えば図４に示すように、信号名が「ＡＤ（Address, Data）」の信号を時分割で使用し、アドレスフェーズ（図４のＡＤＲ）およびアトリビュートフェーズ（図４のＡＴＴ）に続くデータフェーズ（図４のＤＴ０からＤＴ３）においてＤＭＡ回路４２１からの部分データを転送する。上述したタグ情報は、図４に示すように、アトリビュートフェーズに含まれる。なお、図４において、アトリビュートフェーズとデータフェーズの間は、転送先となるキャッシュコントローラ６０からの応答があるフェーズである。
【００５０】
転送指示保持部４２３は、ＣＰＵ４３から送出されるディスクリプタに基づいてＤＭＡ回路４２１が転送するデータのアドレスおよびデータ長からなる転送指示を生成して保持し、データの転送が実行可能であるＤＭＡ回路４２１に対して、転送するデータのアドレスおよびデータ長を指示する。
【００５１】
期待値テーブル４２４は、転送指示保持部４２３に保持される転送指示を参照して、ＤＭＡ回路４２１によって転送されるデータのアドレスおよびデータ長の期待値をテーブル形式で保持する。具体的には、期待値テーブル４２４は、例えば図５に示すように、各ＤＭＡ回路４２１を一意に識別するタグ情報（図５では「ＤＭＡ＃１」などと表記する）に、転送されるデータの開始アドレス、終了アドレス、およびデータ長を関連付けて記憶する。ただし、期待値テーブル４２４は、いずれかのＤＭＡ回路４２１によって新たなデータの転送が開始されたことがテーブル更新部４２６から通知された場合に、転送指示保持部４２３から該当するＤＭＡ回路４２１へ指示されたアドレスおよびデータ長を読み出して、開始アドレス、終了アドレス、およびデータ長の期待値を更新する。
【００５２】
転送監視部４２５は、バス４７における部分データの転送状況を監視し、期待値テーブル４２４の更新や判定部４２７による判定に必要な情報を取得する。具体的には、転送監視部４２５は、バス４７において転送されるデータのアドレスを取得して判定部４２７へ通知し、データ長を取得してテーブル更新部４２６へ通知する。また、転送監視部４２５は、バス４７において転送されるタグ情報を取得し、アドレスやデータ長とともに判定部４２７またはテーブル更新部４２６へ通知する。
【００５３】
ここで、転送監視部４２５がバス４７から情報を取得する方法について、図６を参照しながら説明する。図６は、バス４７におけるバスシーケンスの一例を示す図である。同図に示すように、バス４７においては、上述したＡＤ以外にも様々な信号名の信号が出力されている。すなわち、図６において、「ＦＲＡＭＥ＃」は、バースト転送が開始される時から出力され、「Ｃ／ＢＥ（Command/Byte Enable）は、コマンドやバイトイネーブルを含む信号であり、「ＩＲＤＹ＃」は、バス制御部４２２からのデータ転送の準備が完了した時から出力され、「ＤＥＶＳＥＬ＃」は、データ転送先のキャッシュコントローラ６０が応答する時から出力され、「ＴＲＤＹ＃」は、データ転送先のキャッシュコントローラ６０がデータを受ける準備が完了した時から出力される。
【００５４】
転送監視部４２５は、「ＦＲＡＭＥ＃」の信号が出力されたことを検知すると、「ＡＤ」のアドレスフェーズであることを把握し、この信号に含まれるアドレスを取得する。ここで取得されるアドレスは、転送されるデータの先頭のアドレスであり、バス制御部４２２によるデータ転送が正常に実行されていれば、アトリビュートフェーズの終了時点で期待値テーブル４２４における開始アドレスに一致することになる。
【００５５】
転送監視部４２５は、引き続きアトリビュートフェーズにおいて、タグ情報を取得する。そして、転送監視部４２５は、タグ情報に含まれる転送開始ビットを確認し、転送開始ビットがデータの先頭であることを示す値（例えば「１」）である場合には、新たなデータの転送が開始されたことをテーブル更新部４２６へ通知する。また、転送監視部４２５は、転送開始ビットに拘わらず、取得されたアドレスおよびタグ情報を判定部４２７へ通知する。
【００５６】
また、転送監視部４２５は、「ＩＲＤＹ＃」および「ＴＲＤＹ＃」の信号が出力されている間は、「ＡＤ」のデータフェーズであることを把握し、この信号に含まれるデータのデータ長を計測する。そして、転送監視部４２５は、取得されたデータ長およびタグ情報をテーブル更新部４２６へ通知する。
【００５７】
図３の説明に戻り、テーブル更新部４２６は、新たなデータの転送が開始されたことが転送監視部４２５から通知されると、新たなデータの転送を開始したＤＭＡ回路４２１を期待値テーブル４２４へ通知する。また、テーブル更新部４２６は、データ長およびタグ情報が通知されると、タグ情報から特定されるＤＭＡ回路４２１に対応して期待値テーブル４２４に記憶されている開始アドレスおよびデータ長を更新する。すなわち、テーブル更新部４２６は、期待値テーブル４２４に記憶されている開始アドレスに通知されたデータ長を加算（インクリメント）し、期待値テーブル４２４に記憶されているデータ長から通知されたデータ長を減算（デクリメント）する。
【００５８】
判定部４２７は、アドレスおよびタグ情報が通知されると、タグ情報から特定されるＤＭＡ回路４２１に対応して期待値テーブル４２４に記憶されている開始アドレスを読み出し、通知されたアドレスと一致するか否か判定する。そして、判定部４２７は、開始アドレスが通知されたアドレスと異なっている場合には、バス制御部４２２によるデータ転送が正常に実行されていないものと判断し、その旨をＤＭＡ回路４２１へ通知する。
【００５９】
また、判定部４２７は、各ＤＭＡ回路４２１からデータの転送が正常に完了したか否かが問い合わせられると、このＤＭＡ回路４２１に対応して期待値テーブル４２４に記憶されている開始アドレスが終了アドレスと一致しており、かつ、データ長が０となっているか否かを判定する。そして、判定部４２７は、期待値テーブル４２４において開始アドレスと終了アドレスが一致していないか、または、データ長が０となっていない場合には、バス制御部４２２によるデータ転送が正常に実行されていないものと判断し、その旨をＤＭＡ回路４２１へ通知する。
【００６０】
次いで、上記のように構成されたＬＳＩ４２におけるデータ転送の監視動作について、図７に示すフロー図を参照して説明する。
【００６１】
ＣＰＵ４３からデータ転送の指示であるディスクリプタがＬＳＩ４２へ送出されると、このディスクリプタは、転送指示保持部４２３によって取得され、ディスクリプタに応じて転送するデータのアドレスおよびデータ長がＤＭＡ回路４２１へ指示される。このとき、転送指示保持部４２３は、複数のＤＭＡ回路４２１のうち処理を実行中ではないＤＭＡ回路４２１へデータの転送を指示する。指示を受けたＤＭＡ回路４２１は、指示されたデータをデータバッファ４１から読み出し、バス制御部４２２によってバス４７が割り当てられるタイミングで、ＤＭＡ回路４２１を一意に識別する情報と転送開始ビットを含むタグ情報をデータに付加してキャッシュコントローラ６０へ転送する。ここで転送されるデータは、転送指示保持部４２３から転送が指示されたデータの先頭部分であるため、ＤＭＡ回路４２１は、転送開始ビットをデータの先頭であることを示す「１」とする。
【００６２】
転送されるデータは、バス制御部４２２からバス４７を介してキャッシュコントローラ６０へ転送されるが、バス４７における転送状況は、転送監視部４２５によって監視されている。すなわち、転送監視部４２５によって、バス４７における信号線が監視されており、図６に示した「ＦＲＡＭＥ＃」が出力されたことが検知されると、データ転送のアドレスフェーズであることが把握され、「ＡＤ」の信号からアドレスが取得される（ステップＳ１０１）。このアドレスは、転送されるデータの開始アドレスである。
【００６３】
アドレスフェーズの直後はアトリビュートフェーズであるため、引き続き転送監視部４２５によって、「ＡＤ」の信号から上述したタグ情報が取得される（ステップＳ１０２）。すなわち、バス４７を使用してデータを転送するＤＭＡ回路４２１の識別情報と転送開始ビットが転送監視部４２５によって取得される。そして、転送監視部４２５は、タグ情報の転送開始ビットを参照し、転送されるデータが先頭部分であるか否かを判定する。換言すれば、転送開始ビットがデータの先頭であることを示す「１」であるか否かを判定する（ステップＳ１０３）。
【００６４】
この判定の結果、転送開始ビットが「１」である場合は（ステップＳ１０３Ｙｅｓ）、今回のバースト転送において転送されるデータは、新たに転送されるデータの先頭部分であることになるため、このデータのアドレスおよびデータ長を期待値テーブル４２４に記憶させる必要がある。そこで、転送監視部４２５によって、新たなデータの転送が開始されたことがテーブル更新部４２６を経由して期待値テーブル４２４へ通知され、期待値テーブル４２４によって、転送指示保持部４２３に保持されたアドレスおよびデータ長が読み出され、ＤＭＡ回路４２１が新たに転送するデータの開始アドレス、終了アドレス、およびデータ長の期待値が記憶された期待値テーブル４２４が新たに生成される（ステップＳ１０４）。具体的には、例えば図５に示す「ＤＭＡ＃１」にバス４７が割り当てられており、この「ＤＭＡ＃１」が新たなデータの転送を開始する際には、「ＤＭＡ＃１」に対して指示されたアドレスおよびデータ長が転送指示保持部４２３から読み出され、「ＤＭＡ＃１」に対応する開始アドレス、終了アドレス、およびデータ長が更新される。
【００６５】
また、転送開始ビットに係る判定の結果、転送開始ビットが「１」でない場合や（ステップＳ１０３Ｎｏ）、上述のように新たな期待値テーブル４２４が生成された後は、既にアドレスフェーズにおいて転送監視部４２５によって取得されたアドレスがＤＭＡ回路４２１の識別情報とともに判定部４２７へ通知され、判定部４２７によって、アドレスが期待値テーブル４２４に記憶された開始アドレスに一致するか否かが判定される（ステップＳ１０５）。
【００６６】
ここで、転送開始ビットが「１」であり、期待値テーブル４２４が新たに生成されていれば、アドレスフェーズにおけるアドレスは、アトリビュートフェーズにおいて記憶された開始アドレスと一致するはずである。また、転送開始ビットが「１」でなく、アドレスフェーズにおいてデータの先頭以外のアドレスが取得されている場合でも、後述するように期待値テーブル４２４の開始アドレスが随時更新されているため、アドレスフェーズにおけるアドレスと期待値テーブル４２４に記憶された開始アドレスとは一致するはずである。
【００６７】
そこで、判定部４２７によるアドレス一致の判定の結果、アドレスフェーズにおいて取得されたアドレスと期待値テーブル４２４に記憶された開始アドレスとが一致しない場合は（ステップＳ１０５Ｎｏ）、ＬＳＩ４２においてデータ転送のエラーが発生したものと判断され、判定部４２７からデータ転送中のＤＭＡ回路４２１へエラーの通知が行われる（ステップＳ１１１）。
【００６８】
一方、アドレスフェーズにおいて取得されたアドレスと期待値テーブル４２４に記憶された開始アドレスとが一致する場合は（ステップＳ１０５Ｙｅｓ）、続いて転送監視部４２５によって、「ＩＲＤＹ＃」および「ＴＲＤＹ＃」の信号からデータフェーズの開始が検知され、バス４７において転送されるデータのデータ長が計測される。転送監視部４２５によるデータ長の計測は、「ＩＲＤＹ＃」、「ＤＥＶＳＥＬ＃」、および「ＴＲＤＹ＃」の信号が出力されなくなり、バースト転送のデータフェーズが完了するまで行われ、このバースト転送で転送される部分データのデータ長が得られる。
【００６９】
そして、計測されたデータ長は、ＤＭＡ回路４２１の識別情報とともにテーブル更新部４２６へ通知される。そして、テーブル更新部４２６によって、期待値テーブル４２４におけるデータ長から通知されたデータ長が減算（デクリメント）されるとともに（ステップＳ１０６）、期待値テーブル４２４における開始アドレスに通知されたデータ長が加算（インクリメント）されて更新される（ステップＳ１０７）。これにより、期待値テーブル４２４における開始アドレスは、次回同一のＤＭＡ回路４２１にバス４７が割り当てられた時に転送を再開するアドレスに更新されたことになるとともに、期待値テーブル４２４におけるデータ長は、転送指示されたデータのうち未転送のデータの長さを示していることになる。
【００７０】
本実施の形態においては、このように期待値テーブル４２４における開始アドレスおよびデータ長を、実際にバス４７において転送されたデータ長に基づいて更新するため、データ全体の転送が終了するときには、期待値テーブル４２４における開始アドレスと終了アドレスが一致し、かつ、データ長が０となっているはずである。したがって、ＤＭＡ回路４２１がデータ転送を終了する際に、期待値テーブル４２４の開始アドレス、終了アドレス、およびデータ長を確認することにより、ＬＳＩ４２におけるデータ転送が正常に完了したか否かを判断することができる。換言すれば、データの転送中、ＤＭＡチップ（ＬＳＩ４２）において異常が発生したか否かを監視し、ＤＭＡチップ（ＬＳＩ４２）が異常発生箇所となっている場合に、異常発生箇所を容易に特定することができる。
【００７１】
このようなことから、ＤＭＡ回路４２１は、バス４７を使用した１回のバースト転送が完了すると、転送指示保持部４２３から指示されたデータ全体の転送が終了したか否かを判断し（ステップＳ１０８）、データの転送が終了していなければ（ステップＳ１０８Ｎｏ）、再度バス制御部４２２によってバス４７が割り当てられるタイミングにおいてタグ情報を付加したデータの転送を開始する。この場合には、タグ情報の転送開始ビットは「１」ではないが、期待値テーブル４２４の開始アドレスおよびデータ長は転送済みの部分データに応じて更新されているため、部分データの転送が正常に実行されていれば、アドレスフェーズにおいて取得されるアドレスと期待値テーブル４２４の開始アドレスとは一致するはずである。
【００７２】
また、データの転送が終了していれば（ステップＳ１０８Ｙｅｓ）、ＤＭＡ回路４２１によって、データの転送が正常に完了したか否かが判定部４２７へ問い合わせられ、判定部４２７によって、期待値テーブル４２４のデータ長が０となっているか否かが判定される（ステップＳ１０９）。上述したように、ＬＳＩ４２においてデータの転送が正常に実行されていれば、期待値テーブル４２４におけるデータ長は０となっているはずであるため、データ長が０となっていなければ（ステップＳ１０９Ｎｏ）、ＬＳＩ４２においてデータ転送のエラーが発生したものと判断され、判定部４２７からデータ転送済みのＤＭＡ回路４２１へエラーの通知が行われる（ステップＳ１１１）。
【００７３】
一方、期待値テーブル４２４におけるデータ長が０となっており（ステップＳ１０９Ｙｅｓ）、さらに開始アドレスと終了アドレスが一致していれば、ＬＳＩ４２におけるデータの転送は正常に終了したものとして、判定部４２７からデータ転送済みのＤＭＡ回路４２１へ正常終了の通知が行われる（ステップＳ１１０）。
【００７４】
以上のように、本実施の形態によれば、データ転送の開始時に転送するデータの開始アドレス、終了アドレス、およびデータ長の期待値を転送指示から取得しておき、実際にデータが部分データに分割されて転送されるたびに、転送された部分データのデータ長から開始アドレスおよびデータ長の期待値を更新する。このため、データ全体の終了時には、開始アドレスと終了アドレスが一致し、データ長の期待値が０となっていることを確認して、ＤＭＡチップにおけるデータ転送が正常に実行されたことを確認することができ、ＤＭＡチップにおいて異常が発生したか否かを監視することができる。
【００７５】
なお、上記一実施の形態においては、ＤＭＡ回路４２１がキャッシュコントローラ６０へデータを転送する場合の例について説明したが、ＤＭＡ回路４２１が同様にバスを介してデータを転送する場合であれば、上記一実施の形態と同様に本発明を適用することができる。また、チャネルアダプタ４０やキャッシュコントローラ６０の内部には、ＣＰＵの代わりに例えばＭＰＵ（Micro Processing Unit）など他のプロセッサが設けられていても良い。
【００７６】
さらに、上記一実施の形態においては、ＤＭＡチップであるＬＳＩ４２にロジックアナライザが設けられ、このロジックアナライザによってバス４７におけるデータ転送が監視されるものとしたが、本発明は、必ずしもロジックアナライザによって実現しなくても良い。すなわち、例えばＤＭＡチップなどの半導体集積回路の外部にこの半導体集積回路におけるデータ転送を監視する監視装置を設ける構成としても良い。
【００７７】
（付記１）転送回路が転送指示に従って実行するデータ転送を監視する監視装置であって、
前記転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶する記憶手段と、
前記転送回路が実際に転送したデータのデータ長を取得する取得手段と、
前記取得手段によって取得されたデータ長に基づいて前記記憶手段に記憶されたアドレスおよびデータ長を更新する更新手段と、
前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する判定手段と
を有することを特徴とする監視装置。
【００７８】
（付記２）前記記憶手段は、
転送対象データの開始アドレス、終了アドレス、およびデータ長を記憶することを特徴とする付記１記載の監視装置。
【００７９】
（付記３）前記更新手段は、
前記取得手段によって取得されたデータ長を前記記憶手段によって記憶された開始アドレスに加算することを特徴とする付記２記載の監視装置。
【００８０】
（付記４）前記判定手段は、
前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶された開始アドレスが終了アドレスに一致している場合に、データ転送が正常終了したと判定することを特徴とする付記３記載の監視装置。
【００８１】
（付記５）前記更新手段は、
前記取得手段によって取得されたデータ長を前記記憶手段によって記憶されたデータ長から減算することを特徴とする付記１記載の監視装置。
【００８２】
（付記６）前記判定手段は、
前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶されたデータ長が０である場合に、データ転送が正常終了したと判定することを特徴とする付記５記載の監視装置。
【００８３】
（付記７）前記取得手段は、
転送対象データのうち前記転送回路が転送路を割り当てられる間に転送する部分データのデータ長を取得することを特徴とする付記１記載の監視装置。
【００８４】
（付記８）前記判定手段は、
前記転送回路による部分データの転送開始時に、この部分データに付加された当該部分データに係るアドレス情報が前記記憶手段によって記憶されたアドレスに一致するか否かを判定することを特徴とする付記７記載の監視装置。
【００８５】
（付記９）プロセッサからの転送指示に従ってダイレクトメモリアクセスによってデータ転送を実行する転送回路を備えた半導体集積回路であって、
前記転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶する記憶手段と、
前記転送回路が実際に転送したデータのデータ長を取得する取得手段と、
前記取得手段によって取得されたデータ長に基づいて前記記憶手段に記憶されたアドレスおよびデータ長を更新する更新手段と、
前記転送回路による転送対象データの転送終了時に、前記記憶手段によって記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する判定手段と
を有することを特徴とする半導体集積回路。
【００８６】
（付記１０）転送回路が転送指示に従って実行するデータ転送を監視する監視方法であって、
前記転送指示によって指示された転送対象データのアドレスおよびデータ長を記憶回路に記憶する記憶工程と、
前記転送回路が実際に転送したデータのデータ長を取得する取得工程と、
前記取得工程にて取得されたデータ長に基づいて前記記憶回路に記憶されたアドレスおよびデータ長を更新する更新工程と、
前記転送回路による転送対象データの転送終了時に、前記記憶回路に記憶されたアドレスまたはデータ長からデータ転送が正常終了したか否かを判定する判定工程と
を有することを特徴とする監視方法。
【産業上の利用可能性】
【００８７】
本発明は、ダイレクトメモリアクセスによりデータを転送するＤＭＡチップがデータを分割して転送する場合、ＤＭＡチップにおいて異常が発生したか否かを監視する際に適用することができる。
【図面の簡単な説明】
【００８８】
【図１】一実施の形態に係るディスクアレイ装置の概略構成を示すブロック図である。
【図２】一実施の形態に係るチャネルアダプタの内部構成を示すブロック図である。
【図３】一実施の形態に係るＬＳＩの要部構成を示すブロック図である。
【図４】一実施の形態に係るバスにおけるデータ転送の様子を示す図である。
【図５】一実施の形態に係る期待値テーブルの一例を示す図である。
【図６】一実施の形態に係るバスシーケンスの一例を示す図である。
【図７】一実施の形態に係るロジックアナライザの動作を示すフロー図である。
【図８】ＤＭＡによるライトデータ転送の一例を示す模式図である。
【符号の説明】
【００８９】
４１  データバッファ
４２  ＬＳＩ
４２１  ＤＭＡ回路
４２２  バス制御部
４２３  転送指示保持部
４２４  期待値テーブル
４２５  転送監視部
４２６  テーブル更新部
４２７  判定部
４３  ＣＰＵ
４４  メモリ
４５  プロトコルコントローラ
４６  光モジュール
４７  バス
【図１】
2008146546.tif 000003
【図２】
2008146546.tif 000004
【図３】
2008146546.tif 000005
【図４】
2008146546.tif 000006
【図５】
2008146546.tif 000007
【図６】
2008146546.tif 000008
【図７】
2008146546.tif 000009
【図８】
2008146546.tif 000010