(57)【要約】      （修正有）【課題】ＣＰＵを効率的に利用することができるデータ転送装置の制御方法、データ転送装置チャネル制御装置、及び記憶デバイス制御装置を提供する。【解決手段】第１のプロセッサと、第１の記憶領域に記憶されているデータを第２の記憶領域へ転送する第２のプロセッサと、メモリと、がバスで接続される構成を含むデータ転送装置の制御方法であって、前記第１のプロセッサが、前記第１の記憶領域における記憶位置を示す情報と、前記第２の記憶領域における記憶位置を示す情報とを含むデータ転送情報を前記メモリに書き込み、前記第２のプロセッサが、前記メモリから前記データ転送情報を読み出し、前記第２のプロセッサが、前記データ転送情報に基づいて、前記第１の記憶領域に記憶されているデータを前記第２の記憶領域に転送するようにする。【選択図】      図２
2005078596.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
第１の記憶領域に記憶されているデータを第２の記憶領域へ転送する第２のプロセッサと、
メモリと、
がバスで接続される構成を含むデータ転送装置の制御方法であって、
前記第１のプロセッサが、前記第１の記憶領域における記憶位置を示す情報と、前記第２の記憶領域における記憶位置を示す情報とを含むデータ転送情報を前記メモリに書き込み、
前記第２のプロセッサが、前記メモリから前記データ転送情報を読み出し、
前記第２のプロセッサが、前記データ転送情報に基づいて、前記第１の記憶領域に記憶されているデータを前記第２の記憶領域に転送すること、
を特徴とするデータ転送装置の制御方法。
【請求項２】
請求項１に記載のデータ転送装置の制御方法であって、
前記データ転送装置は、外部装置から記憶デバイスに対して送信されるデータ入出力要求を受信する受信部を備え、
前記第１のプロセッサは、前記受信部が受信する前記データ入出力要求に応じて、前記第１の記憶領域における記憶位置と前記第２の記憶領域における記憶位置とを特定し、当該データ転送情報を前記メモリに書き込むこと、
を特徴とするデータ転送装置の制御方法。
【請求項３】
請求項１に記載のデータ転送装置の制御方法であって、
前記データ転送装置は、第２のプロセッサを複数備えること、
を特徴とするデータ転送装置の制御方法。
【請求項４】
請求項１に記載のデータ転送装置の制御方法であって、
前記第２のプロセッサは、前記データ転送情報に従って前記第１の記憶領域に記憶されているデータを前記第２の記憶領域に転送した結果である終了ステータス情報を前記メモリに書き込むこと、
を特徴とするデータ転送装置の制御方法。
【請求項５】
請求項４に記載のデータ転送装置の制御方法であって、
前記第１のプロセッサは、前記データ転送情報をメモリに書き込む際に、前記データ転送情報を識別するための識別情報を付与し、
前記第２のプロセッサは、前記終了ステータス情報を前記メモリに書き込む際に、前記読み出したデータ転送情報に付与されている識別情報を前記終了ステータス情報に付与すること、
を特徴とするデータ転送装置の制御方法。
【請求項６】
請求項１に記載のデータ転送装置の制御方法であって、
前記第２のプロセッサは前記バス上でバースト転送を行う機能を備え、
前記第２のプロセッサは、前記データ転送情報をバースト転送によって前記メモリから読み出すこと、
を特徴とするデータ転送装置の制御方法。
【請求項７】
請求項１に記載のデータ転送装置の制御方法であって、
前記第１のプロセッサは、１つ以上の前記データ転送情報のそれぞれを、前記メモリにおける所定の記憶位置である基準位置から連続して前記メモリに書き込むこと、
前記第２のプロセッサは、前記基準位置から何番目のデータ転送情報であるかを示す値であるポインタを記憶する第１及び第２のレジスタを備え、
前記第１のプロセッサは、前記データ転送情報を前記メモリに書き込んだ後に、書き込んだ前記データ転送情報に対する前記ポインタを、前記第２のプロセッサの前記第１のレジスタに設定し、
前記第２のプロセッサは、前記第１のレジスタに設定された値が前記第２のレジスタに設定された値と異なるかどうかに応じて前記転送を行うかどうかを判断し、
前記第２のプロセッサは、前記転送を行った後に、読み出した前記データ転送情報に対する前記ポインタを前記第２のレジスタに設定すること、
を特徴とするデータ転送装置の制御方法。
【請求項８】
請求項１乃至６のいずれかに記載のデータ転送装置の制御方法であって、
前記第１のプロセッサは、前記データ転送情報についての誤り検出符号を生成し、前記誤り検出符号を前記データ転送情報に付帯させて前記メモリに書き込むこと、
を特徴とするデータ転送装置の制御方法。
【請求項９】
請求項７に記載のデータ転送装置の制御方法であって、
前記第１のプロセッサは、前記データ転送情報のそれぞれについて、前記データ転送情報と前記基準位置を示す情報とを計算対象として誤り検出符号を生成し、前記誤り検出符号を前記データ転送情報に付帯させて前記メモリに書き込むこと、
を特徴とするデータ転送装置の制御方法。
【請求項１０】
請求項１に記載のデータ転送装置の制御方法であって、
前記第１のプロセッサは、一群の前記データ転送情報について、前記データ転送情報のそれぞれが関連して処理される前記データ転送情報であることを示す識別情報を、前記データ転送情報のそれぞれに付帯させて前記メモリに書き込むこと、
を特徴とするデータ転送装置の制御方法。
【請求項１１】
第１のプロセッサと、
第１の記憶領域に記憶されているデータを第２の記憶領域へ転送する第２のプロセッサと、
メモリと、
がバスで接続され、
前記第１のプロセッサが、前記第１の記憶領域における記憶位置を示す情報と、前記第２の記憶領域における記憶位置を示す情報とを含むデータ転送情報を前記メモリに書き込み、
前記第２のプロセッサが、前記メモリから前記データ転送情報を読み出し、
前記第２のプロセッサが、前記データ転送情報に基づいて、前記第１の記憶領域に記憶されているデータを前記第２の記憶領域に転送すること、
を特徴とするデータ転送装置。
【請求項１２】
情報処理装置から記憶デバイスに対して送信されるデータ入出力要求を受信する通信インタフェースと、
第１のプロセッサと、
記憶領域間でデータを転送する第２のプロセッサと、
第１及び第２のプロセッサとバスによって読み書き可能に接続されるメモリと、
を備えるチャネル制御装置であって、
前記記憶デバイスとの間で授受されるデータを記憶するキャッシュメモリが接続され、
前記通信インタフェースは、前記情報処理装置との間でやり取りするデータを記憶するバッファメモリを備え、
前記第１のプロセッサは、前記通信インタフェースが受信する前記データ入出力要求に応じて、前記バッファメモリにおける記憶領域を示す情報と、前記キャッシュメモリにおける記憶領域を示す情報とを含むデータ転送情報を前記メモリに書き込み、
前記第２のプロセッサは、前記メモリから前記データ転送情報を読み出し、前記読み出した前記データ転送情報に基づいて、前記バッファメモリにおける記憶領域と前記キャッシュメモリの記憶領域との間でデータを転送すること、
を特徴とするチャネル制御装置。
【請求項１３】
情報処理装置から記憶デバイスに対して送信されるデータ入出力要求を受信するチャネル制御部と、
前記記憶デバイスに対するデータ入出力に関する制御を行うディスク制御部と、
前記チャネル制御部と前記ディスク制御部との間で授受されるデータを記憶するキャッシュメモリと、を備え、
前記チャネル制御部は、前記情報処理装置との間で通信を行う通信インタフェースと、第１のプロセッサと、記憶領域間でデータを転送する第２のプロセッサと、メモリと、がバスで接続される構成を含み、
前記通信インタフェースは、前記情報処理装置との間で授受するデータを記憶するバッファメモリを備え、
前記通信インタフェースは、前記情報処理装置から前記記憶デバイスに対する前記データ入出力要求を受信し、
前記第１のプロセッサは、前記受信したデータ入出力要求に応じて、前記バッファメモリにおける記憶領域を示す情報と、前記キャッシュメモリにおける記憶領域を示す情報とを含むデータ転送情報を前記メモリに書き込み、
前記第１のプロセッサは、前記受信したデータ入出力要求に応じて、前記記憶デバイスに対してデータ入出力を行うように前記ディスク制御部に指示をする記憶デバイス制御コマンドを生成し、
前記第２のプロセッサは、前記メモリから前記データ転送情報を読み出し、前記読み出した前記データ転送情報に基づいて、前記キャッシュメモリと前記バッファメモリとの間でデータを転送し、
前記ディスク制御装置は、前記記憶デバイス制御コマンドに従って前記記憶デバイスに対するデータ入出力に関する制御を行うこと、
を特徴とする記憶デバイス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ転送装置の制御方法、データ転送装置、チャネル制御装置、及び記憶デバイス制御装置に関する。
【背景技術】
【０００２】
ＣＰＵを介さずにメモリとデバイスとの間で直接データを転送する方法として、従来からＤＭＡ（Direct Memory Access）コントローラを用いたＤＭＡ転送技術が広く使われている。ＤＭＡ転送に際して、ＣＰＵはＤＭＡコントローラにデータの転送元や転送先といったデータの転送に必要な情報を設定して、データ転送処理の指示を行う。ＤＭＡコントローラはデータ転送処理の指示がなされると、ＣＰＵを介することなくデータの転送処理を行う。
【特許文献１】特開２００３−９１４９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来のＤＭＡ転送の処理では、ＣＰＵが直接ＤＭＡコントローラのレジスタにデータの転送元などの情報を設定しているため、特にデータ転送処理が頻繁に発生するような状況では、ＣＰＵによるＤＭＡコントローラへの設定処理にかかる時間が無視できない。また、ＤＭＡコントローラはデータ転送処理を終了すると、割り込みなどによってその旨をＣＰＵに通知するが、データ転送処理が増加するにつれ、ＤＭＡコントローラからＣＰＵへの通知も増加するため、通知の度にＣＰＵの処理が中断されてしまうことになる。
【０００４】
本発明は、このような背景を鑑みてなされたものであり、ＣＰＵを効率的に利用することができる、データ転送装置の制御方法、データ転送装置、チャネル制御装置、及び記憶デバイス制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成する本発明の主たる発明は、第１のプロセッサと、第１の記憶領域に記憶されているデータを第２の記憶領域へ転送する第２のプロセッサと、メモリと、がバスで接続される構成を含むデータ転送装置の制御方法であって、前記第１のプロセッサが、前記第１の記憶領域における記憶位置を示す情報と、前記第２の記憶領域における記憶位置を示す情報とを含むデータ転送情報を前記メモリに書き込み、前記第２のプロセッサが、前記メモリから前記データ転送情報を読み出し、前記第２のプロセッサが、前記データ転送情報に基づいて、前記第１の記憶領域に記憶されているデータを前記第２の記憶領域に転送すること、を特徴とする。
【０００６】
前記第１のプロセッサとは、例えば、後述するマイクロプロセッサである。前記第２のプロセッサとは、例えば、後述するデータ転送ＬＳＩである。前記第１の記憶領域とは、例えば、後述するキャッシュメモリの提供する記憶領域である。前記第２の記憶領域とは、例えば、後述するバッファメモリの提供する記憶領域である。
【０００７】
本発明では、第１のプロセッサが第２のプロセッサにデータ転送情報を通知する場合に、第１のプロセッサがメモリにデータ転送情報を書き込んだ後、第２のプロセッサがメモリに書き込まれているデータ転送情報を読み出すように、すなわち、第１のプロセッサからメモリを介して間接的に第２のプロセッサに対してデータ転送情報が通知される。従って、従来のように第１のプロセッサは第２のプロセッサからの通知を待つことなく次の処理の実行に移ることができ、第１のプロセッサ及び第２のプロセッサの効率的な利用が図れる。またその結果、これらプロセッサの連携により行われるデータ転送処理の全体的な処理効率の向上が計られる。
【０００８】
その他、本願が開示する課題、及びその解決方法は、発明の実施の形態の欄、及び図面により明らかにされる。
【発明の効果】
【０００９】
本発明によれば、ＣＰＵを効率的に利用することができる、データ転送装置の制御方法、データ転送装置、チャネル制御装置、及び記憶デバイス制御装置を提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００１１】
＝＝＝第１の実施の形態＝＝＝
図１は、本発明の一実施の形態であるコンピュータを示すブロック図である。  
コンピュータ１は、ＣＰＵ１０、ＲＡＭ２０、記憶装置３０、入力装置４０、出力装置５０、ＤＭＡコントローラ６０、Ｉ／Ｏインタフェース７０を備える。
【００１２】
ＣＰＵ１０は、コンピュータ１の全体の制御を司るプロセッサである。ＣＰＵ１０は記憶装置３０に記録されているプログラムを適宜ＲＡＭ２０に読み出し、ＲＡＭ２０に格納されたプログラムを実行することによって各種の機能を実現する。記憶装置３０には、例えば、ハードディスクやフレキシブルディスク、半導体記憶装置など様々なものを用いることができる。記憶装置３０は図に示すようにコンピュータ１の外部に接続するようにしてもよいし、コンピュータ１に一体的に組み込んでもよい。入力装置４０はユーザによるコンピュータ１へのデータ入力等のために用いられる装置で、例えばキーボードやマウス等である。出力装置５０は情報を外部に出力するための装置で、例えばディスプレイやプリンタ等である。
【００１３】
Ｉ／Ｏインタフェース７０は、コンピュータ１が外部の装置との間で通信を行うためのインタフェースである。Ｉ／Ｏインタフェース７０は、例えば、ＬＡＮ（Local Area Network）に接続する通信インタフェースやシリアル接続のＲＳ２３２Ｃインタフェースなどである。Ｉ／Ｏインタフェース７０はバッファメモリ７１を備えており、ＣＰＵ１０の制御により、受信したデータをバッファメモリ７１に書き込んだり、バッファメモリ７１に記憶されているデータを外部の装置に送信したりすることができる。
【００１４】
ＤＭＡコントローラ６０は、デバイスとメモリとの間、あるいはメモリとメモリとの間でのデータの転送を行うものである。ＤＭＡコントローラ６０は、ＣＰＵ１０の指示によりデータ転送の処理を開始すると、ＣＰＵ１０を介さずにデータ転送処理を続けることができる。ＤＭＡコントローラ６０は、例えば、Ｉ／Ｏインタフェース７０の備えるバッファメモリ７１とＲＡＭ２０との間でデータを転送することができる。
【００１５】
＝＝＝一般的なデータ転送処理＝＝＝
図２は、一般的なデータ転送処理の流れを示すフローチャートである。この図は、バッファメモリ７１とＲＡＭ２０との間でのデータ転送処理の流れを示している。
【００１６】
ＣＰＵ１０は、データ転送処理の転送元あるいは転送先となるバッファメモリ７１のアドレスとＲＡＭ２０のアドレス、転送されるデータのデータ長、データの転送方向（バッファメモリ７１からＲＡＭ２０への転送か、あるいはＲＡＭ２０からバッファメモリ７１への転送かを示す値）といったデータ転送情報をＤＭＡコントローラ６０のレジスタに設定する（S2001）。ＣＰＵ１０はデータ転送情報を全てＤＭＡコントローラ６０に設定すると、ＤＭＡコントローラ６０のデータ転送処理を開始するためのレジスタ（スタートレジスタ）に書き込みを行い、データ転送処理の開始を指示する（S2002）。
【００１７】
ＤＭＡコントローラ６０は、スタートレジスタに書き込みがされると、レジスタに設定されたデータ転送情報に基づいてデータ転送処理を行う（S2003）。ＤＭＡコントローラ６０は、データ転送処理を終了すると、終了ステータスを所定のレジスタ（ステータスレジスタ）に設定する（S2004）。
【００１８】
一方、ＣＰＵ１０は、ステータスレジスタを監視する（S2005）。ＣＰＵ１０はＤＭＡコントローラ６０のステータスレジスタに終了ステータスが書き込まれたことを検出すると（S2005：YES）、その終了ステータスに応じた処理を行う（S2006）。
【００１９】
＝＝＝本実施の形態によるデータ転送処理＝＝＝
図３は、本実施の形態によるデータ転送処理の流れを示すフローチャートである。  
ＣＰＵ１０はデータの転送情報をＲＡＭ２０に書き込み（S3001）、ＤＭＡコントローラ６０のスタートレジスタに書き込みを行って、データ転送処理の開始を指示する（S3002）。  
ＤＭＡコントローラ６０はスタートレジスタに書き込みがされると、ＲＡＭ２０に書き込まれたデータ転送情報を読み出し（S3003）、読み出したデータ転送情報に基づいてデータ転送処理を行う（S3004）。ＤＭＡコントローラ６０はデータ転送処理を終了すると、終了ステータスをＲＡＭ２０に書き込む（S3005）。  
一方、ＣＰＵ１０はＲＡＭ２０を監視して（S3006）、終了ステータスがＲＡＭ２０に書き込まれたことを検出すると（S3006：YES）、その終了ステータスに応じた処理を行う（S3007）。
【００２０】
なお、上述したデータ転送処理では、ＣＰＵ１０がＤＭＡコントローラ６０のスタートレジスタに書き込みを行うことでＤＭＡコントローラ６０はデータ転送処理を開始するようにしたが、ＤＭＡコントローラ６０がＲＡＭ２０を監視し、データ転送情報が書き込まれたことを検出することでデータ転送処理を開始するようにしてもよい。
【００２１】
＝＝＝処理時間の比較＝＝＝
ＣＰＵ１０の処理時間について、上述した一般的なデータ転送処理と本発明によるデータ転送処理とを比較して説明する。図４は、ＣＰＵ１０の処理に、一般的なデータ転送処理によってかかる時間と、本実施の形態によるデータ転送処理によってかかる時間とを比較する説明図である。図４（ａ）は、一般的なデータ転送処理において、ＣＰＵ１０がＤＭＡコントローラ６０にデータ転送処理を指示し、その終了ステータスを取得するまでの流れを示す説明図である。また図４（ｂ）は、本実施の形態によるデータ転送の方法において、ＣＰＵ１０がＤＭＡコントローラ６０にデータ転送を指示し、その終了ステータスを取得するまでの流れを示す説明図である。ここで、ＣＰＵ１０がＤＭＡコントローラ６０のレジスタに対する読み書きは、１度に１ワード（４バイト）分できるものとする。ＣＰＵ１０がＤＭＡコントローラ６０のスタートレジスタに設定する値も１ワードであるものとする。
【００２２】
図４（ａ）に示す一般的なデータ転送処理では、まずＣＰＵ１０はＤＭＡコントローラ６０のレジスタにデータ転送に必要な情報をｎワード分設定する（S4001a）。ＣＰＵ１０はＤＭＡコントローラ６０にデータ転送処理を実行させるため、ＤＭＡプロセッサ６０のスタートレジスタに書き込みを行い（S4002a）、ＤＭＡコントローラ６０のステータスレジスタを監視する。ＣＰＵ１０はステータスレジスタを監視するために、ステータスレジスタにｍ回のアクセスを行う（S4003a）。  
このように、一般的なデータ転送処理では、ＣＰＵ１０はＤＭＡコントローラ６０のレジスタに（ｎ＋１＋ｍ）ワード分のアクセスを行う。
【００２３】
これに対し、図４（ｂ）に示す本実施の形態によるデータ転送処理では、まずＣＰＵ１０はＲＡＭ２０にｎワードのデータ転送に必要な情報を設定する（S4001b）。ＣＰＵ１０はＤＭＡコントローラ６０にデータ転送を実行させるため、ＤＭＡコントローラ６０のスタートレジスタに書き込みを行い（S4002b）、ＲＡＭ２０を監視する。ＣＰＵ１０はＲＡＭ２０を監視して、ＲＡＭ２０に終了ステータスが書き込まれたかどうかを検出するために、ＲＡＭ２０にｍ回のアクセスを行う（S4003b）。  
このように、本実施の形態によるデータ転送処理では、ＣＰＵ１０はＤＭＡコントローラ６０のレジスタに１ワード分のアクセスを行い、ＲＡＭ２０に（ｎ＋ｍ）ワード分のアクセスを行う。
【００２４】
一般的に、ＣＰＵ１０が動作するクロックは、ＤＭＡコントローラ６０に使用されるクロックよりも高速であるため、ＣＰＵ１０からＤＭＡコントローラ６０のレジスタにアクセスする時間よりも、ＲＡＭ２０にアクセスする時間の方が短いことが多い。そのため、本発明によって、ＣＰＵ１０がＤＭＡコントローラ６０に対してデータ転送処理に必要な情報を設定するのにかかる時間は短縮され、ＣＰＵ１０はより効率的に動作することが可能となる。
【００２５】
また、ＤＭＡコントローラ６０は、ＲＡＭ２０からデータ転送情報をバースト転送によって読み出すことで、バスの使用効率のよいデータの読み出しが可能となる。例えば、ＤＭＡコントローラ６０とＲＡＭ２０とがＰＣＩバスで接続され、ＰＣＩバスの転送可能なデータ長は３２ビットであり、データ転送情報は６４バイトであるとする。このときＤＭＡコントローラ６０がＲＡＭ２０からデータを読み出す単位は３２ビットとなるため、ＤＭＡコントローラ６０がＲＡＭ２０からデータ転送情報を読み出すには、４バイトずつの転送処理が必要である。そこで、本発明では、ＤＭＡコントローラ６０がこのデータ転送をバースト転送で行うことにより、複数のデータ転送の間に存在するデータ転送に伴うオーバーヘッドをなくし、効率的な転送処理を実現することが可能となる。
【００２６】
また、一般的な方法では、ＣＰＵ１０がＤＭＡコントローラ６０に連続してデータ転送処理を実行させる場合には、ＣＰＵ１０はＤＭＡコントローラ６０がデータ転送処理が終了したことを検出した後に、続くデータ転送に必要な情報をＤＭＡコントローラ６０に設定しなくてはならない。これに対し、本発明よれば、ＣＰＵ１０はＤＭＡコントローラ６０の動作状況にかかわらず、データ転送処理に必要な情報をＲＡＭ２０に書き込むことができる。そのため、ＣＰＵ１０はＤＭＡコントローラ６０に対して複数のデータ転送処理を指示することもできる。
【００２７】
＝＝＝第２の実施の形態＝＝＝
次に、本発明を、記憶デバイス制御装置に適用した実施の形態を説明する。  
図５は、本発明に係る第２の実施の形態として説明する情報処理システムの全体構成を示すブロック図である。
【００２８】
情報処理装置１００と記憶デバイス制御装置２００とはネットワーク４００に接続され、ネットワーク４００を介して相互に通信が可能となっている。ネットワーク４００は例えば、ＳＡＮ（Storage Area Network）である。ネットワーク４００は、ＳＡＮ以外にも、ＬＡＮ（Local Area Network）による接続としてもよい。ネットワーク４００のプロトコルには、ファイバーチャネル、ＥＳＣＯＮ（登録商標）、ＦＩＣＯＮ（登録商標）、ＳＣＳＩ（Small Computer System Interface）といった様々なものを利用することができる。
【００２９】
情報処理装置１００は、記憶デバイス制御装置２００の提供する記憶資源を利用することにより情報処理サービスを行うコンピュータである。情報処理装置１００の行う情報処理サービスとは、例えば、銀行の自動預金預け払いシステムや航空機の座席予約システムなどである。情報処理装置１００は、ＣＰＵ（Central Processing Unit）やメモリを備えたコンピュータであり、ＣＰＵによって各種のプログラムが実行されることにより様々な機能が実現される。情報処理装置１００は、例えば、メインフレームコンピュータやワークステーション、パーソナルコンピュータ等とすることができる。
【００３０】
記憶デバイス３００は、多数のディスクドライブを備えており、情報処理装置１００に対して記憶領域を提供する。ディスクドライブとしては、例えばハードディスク装置やフレキシブルディスク装置、半導体記憶装置等様々なものを用いることができる。記憶デバイス３００は、例えば複数のディスクドライブによりディスクアレイを構成するようにすることもできる。この場合、情報処理装置１００に対して提供される記憶領域は、ＲＡＩＤにより管理された複数のディスクドライブにより提供されるようにすることもできる。
【００３１】
記憶デバイス制御装置２００は、情報処理装置１００から記憶デバイス３００に対するデータ入出力要求を受け付け、記憶デバイス３００に対するデータ入出力に関する処理を行う装置である。記憶デバイス制御装置２００は、チャネル制御部２１０、共有メモリ２２０、キャッシュメモリ２３０、ディスク制御部２４０を含んで構成される。チャネル制御部２１０は、情報処理装置１００との間で通信を行うための通信インタフェースを備え、情報処理装置１００から記憶デバイス３００に対するデータ入出力要求を受信する機能を有する。チャネル制御部２１０は、受信したデータ入出力要求に応じて、ディスク制御部２４０に記憶デバイス３００に対するデータ入出力を指示するコマンドをディスク制御部２４０に伝達する。ディスク制御部２４０は、このコマンドを受け付け、記憶デバイス３００に対するデータ入出力に関する処理を行う。共有メモリ２２０は、チャネル制御部２１０やディスク制御部２４０により共有されるメモリで、例えば、上記のようなデータ入出力の制御を指示するコマンドなどを記憶する。キャッシュメモリ２３０は、チャネル制御部２１０とディスク制御部２４０との間で授受されるデータを記憶する。
【００３２】
情報処理装置１００が記憶デバイス制御装置２００に対してデータの書き込みを求めるデータ入出力要求（以下、データ書き込み要求と称する）を送信すると、チャネル制御部２１０がそのデータ入出力要求を受信する。チャネル制御部２１０は受信したデータ入出力要求に応じて、データ書き込みを指示するコマンド（以下、データ書き込みコマンドと称する）を生成し、共有メモリ２２０に書き込むとともに、情報処理装置１００から受信した書き込みデータをキャッシュメモリ２３０に書き込む。ディスク制御部２４０はデータ書き込みコマンドを共有メモリ１２０から読み出し、それに基づいてキャッシュメモリ２３０に書き込まれたデータを記憶デバイス３００に対して書き込むための処理を行う。なお、チャネル制御部２１０が共有メモリ２２０に書き込むデータ書き込みコマンドや、チャネル制御部２１０がキャッシュメモリ２３０に書き込むデータは、チャネル制御部２１０が直接ディスク制御部２４０に伝達するようにすることもできる。
【００３３】
＝＝＝チャネル制御部＝＝＝
図６は、チャネル制御部２１０のハードウエア構成を示すブロック図である。この図に示すように、チャネル制御部２１０は、マイクロプロセッサ２１１、ローカルメモリ２１２、通信インタフェース２１３、バッファメモリ２１４、データ転送ＬＳＩ５００を備え、これらが同一のユニットに形成されて構成されている。チャネル制御部２１０は、記憶デバイス制御装置２００に一体的に組み込まれた形態とすることもできるし、記憶デバイス制御装置２００から着脱可能な独立したチャネル制御装置とすることもできる。
【００３４】
なお、この図において、チャネル制御部２１０はマイクロプロセッサ２１１、ローカルメモリ２１２、及び通信インタフェース２１３をそれぞれ４つずつ、またバッファメモリ２１４を２つ、データ転送ＬＳＩ５００を１つ備えているが、これらの数に限定するものではなく、例えば、マイクロプロセッサ２１１を１つ、データ転送ＬＳＩ５００を２つ備えるような形態とすることもできる。チャネル制御部２１０がデータ転送ＬＳＩ５００を複数備える場合、マイクロプロセッサ２１１は複数のデータ転送ＬＳＩ５００のそれぞれに対してデータ転送情報を通知する必要があるが、本発明によればマイクロプロセッサ２１１はデータ転送ＬＳＩ５００からの通知を待つことなく次に行うべき処理に移ることができるため、マイクロプロセッサ２１１はデータ転送ＬＳＩ５００のそれぞれに対してメモリを介して間接的にデータ転送情報を通知することができる。従って、データ転送処理の処理効率の向上が図られる。
【００３５】
マイクロプロセッサ２１１は、チャネル制御部２１０全体の制御を司るプロセッサであり、ローカルメモリ２１２に格納されたプログラムを実行することによって各種の機能を実現する。図６に示す４つのマイクロプロセッサ２１１は、それぞれ独立して通信インタフェース２１３から受信したデータ入出力要求の解釈をし、受信したデータ入出力要求に従ってデータ転送ＬＳＩ５００に対してデータ転送の指示をしたり、ディスク制御部２４０に対して記憶デバイス３００からのデータ読み出しの指示を行ったりする。
【００３６】
ローカルメモリ２１２には様々なプログラムやデータが記憶される。本実施の形態におけるチャネル制御部２１０では、マイクロプロセッサ２１１は、それぞれ１つのローカルメモリ２１２を管理している。ローカルメモリ２１２はバスを介してマイクロプロセッサ２１１に接続されている。またローカルメモリ２１２はマイクロプロセッサ２１１内のバスを介することによって、データ転送ＬＳＩ５００とも間接的に接続されている。ローカルメモリ２１２は、マイクロプロセッサ２１１が実行するプログラムを格納したり、プログラムによって利用されるデータを記憶したりする。
【００３７】
通信インタフェース２１３は、情報処理装置１００との間で通信を行うためのインタフェースであり、情報処理装置１００との間で通信を行うための通信コネクタを備えている。チャネル制御部２１０の場合は、例えばファイバーチャネルやＳＣＳＩ、ＦＩＣＯＮ（登録商標）、ＥＳＣＯＮ（登録商標）、ＡＣＯＮＡＲＣ（登録商標）、ＦＩＢＡＲＣ（登録商標）のプロトコルに従って情報処理装置１００から送信されたデータ入出力要求などを受信する。通信インタフェース２１３は受信したデータをバッファメモリ２１４に記憶する。また、通信インタフェース２１３はバッファメモリ２１４に記憶されたデータを情報処理装置１００に対して送信することもできる。
【００３８】
データ転送ＬＳＩ５００は、２つの記憶領域間でデータを転送する機能を有している。データ転送ＬＳＩ５００は上述した第１の実施の形態であるコンピュータ１の備えるＤＭＡコントローラ６０と同様、デバイスとメモリの間、あるいはメモリとメモリとの間でのデータの転送を行うものである。本発明の形態において、データ転送ＬＳＩ５００は、キャッシュメモリ２３０とバッファメモリ２１４との間でデータを転送する。
【００３９】
本実施の形態において、データ転送ＬＳＩ５００は、主にバッファメモリ２１４とキャッシュメモリ２３０との間でのデータの転送を行う。このデータ転送の処理は、記憶デバイス制御装置２００が情報処理装置１００からデータ入出力要求を受け付けたときの、データの入出力処理の一部として行われる。通信インタフェース２１３がデータ入出力要求を受信すると、マイクロプロセッサ２１１は受信したデータ入出力要求に応じてデータ転送情報を生成し、生成したデータ転送情報をローカルメモリ２１２に書き込む。データ転送ＬＳＩ５００はローカルメモリ２１２に書き込まれたデータ転送情報を読み出し、読み出したデータ転送情報に基づいてデータを転送する。例えば、チャネル制御部２１０が情報処理装置１００からデータ書き込み要求を受信した場合、データ転送ＬＳＩ５００は、通信インタフェース２１３が受信してバッファメモリ２１４に記憶したデータをキャッシュメモリ２３０に転送する。
【００４０】
＝＝＝データ転送ＬＳＩ＝＝＝
図７は、データ転送ＬＳＩ５００の構成を示すブロック図である。  
データ転送ＬＳＩ５００は、ＤＭＡ５０１、ＰＣＩインタフェース５０２、ＰＣＩインタフェース５０３、バッファ制御部５０４、キャッシュインタフェース５０５、データ転送情報フェッチ部５０６を備える。  
ＰＣＩインタフェース５０２は、ＰＣＩバスに接続し、ＰＣＩバスとの間でデータを授受する。データ転送ＬＳＩ５００は、ＰＣＩインタフェース５０２を介して通信インタフェース２１３と接続する。  
ＰＣＩインタフェース５０３もＰＣＩインタフェース５０２と同様、ＰＣＩバスに接続する。データ転送ＬＳＩ５００はＰＣＩインタフェース５０３を介してマイクロプロセッサ２１１やローカルメモリ２１２と接続する。
【００４１】
なお、通信インタフェース２１３やマイクロプロセッサ２１１、ローカルメモリ２１２などとの接続を、同じＰＣＩバスで接続するようにしてもよい。その場合、データ転送ＬＳＩ５００にはＰＣＩインタフェースは少なくとも１つ存在すればよい。また、上記ＰＣＩインタフェース５０２及びＰＣＩインタフェース５０３はＰＣＩバス以外のバスを使用して外部の装置と接続するようにしてもよい。
【００４２】
バッファメモリ２１４は、チャネル制御部２１０が情報処理装置１００との間でデータをやり取りする際にデータを一時的に記憶しておくためのバッファである。バッファ制御部５０４は、バッファメモリ２１４に対するデータのやり取りをするための制御を行う。
【００４３】
キャッシュインタフェース５０５は、キャッシュメモリ２３０との間でデータをやり取りするインタフェースである。キャッシュインタフェース５０５には、より効率的にデータ転送をするためのバッファメモリ等を備えるようにすることもできる。
【００４４】
ＤＭＡ５０１は、例えばＤＭＡ（Direct Memory Access）プロセッサなどである。ＤＭＡ５０１は、データを転送する元となる記憶領域と、データを転送する先となる記憶領域を指定する情報を設定することによって、データ転送元の記憶領域に記憶されているデータをデータ転送先の記憶領域に転送することができる。ＤＭＡ５０１はＤＭＡプロセッサ以外にも、例えばマイクロプロセッサなどのプロセッサ上で実行されるプログラムとしてもよいし、特定用途向けＩＣ上にロジックを組み込むことなどによって実現してもよい。
【００４５】
データ転送情報フェッチ部５０６は、データ転送に必要な情報をローカルメモリ２１２から読み出し、ＤＭＡ５０１のレジスタに設定を行うなどの処理を行う。データ転送情報フェッチ部５０６は、例えば、特定用途向けＩＣやマイクロプロセッサとすることができる。
【００４６】
なお、データ転送ＬＳＩ５００は、データ転送情報フェッチ部５０６を備えず、ＤＭＡ５０１がローカルメモリ２１２にアクセスするようにしてもよい。
【００４７】
＝＝＝データ転送情報＝＝＝
図８は、データ転送ＬＳＩ５００がデータ転送に必要な情報であるデータ転送情報の詳細を示す表である。データ転送情報６００には、マスク欄６０１、転送バイト数欄６０２、キャッシュアドレス欄６０３、ＣＲＣ欄６０４、転送方向欄６０５、フラグ欄６０６、識別情報欄６０７、チェインフラグ欄６０８、ＲＣＲＣ欄６０９、バッファアドレス欄６１０、ＬＲＣ欄６１１が含まれる。本実施の形態では、データ転送情報６００は４バイトを１ワードとした１０ワードのデータ長としている。もちろん、データ転送情報６００のデータ長を任意の長さとすることができる。また、データ転送情報６００のデータ長は可変長であってもよい。
【００４８】
マイクロプロセッサ２１１は、ローカルメモリ２１２の所定のアドレスから複数のデータ転送情報６００を連続的に書き込む。よって、データ転送ＬＳＩ５００は、複数のデータ転送情報のそれぞれを連続してメモリから読み出すことができる。  
また、マイクロプロセッサ２１１は、所定の数のデータ転送情報６００から形成される一群のデータ転送情報６００（以下、転送情報リストと称する）を単位として、一連のデータ転送処理に必要なデータ転送情報６００を管理する。一連のデータ転送処理とは、例えば、チャネル制御部２１０が受信したひとつのデータ入出力要求に応じて行うデータ転送に関して、データの転送元あるいは転送先であるキャッシュメモリ２３０上の記憶領域が不連続であるような場合に、データ転送ＬＳＩ５００が行う複数のデータ転送処理である。
【００４９】
以下に、データ転送情報６００の各欄について説明する。  
マスク欄６０１には、当該データ転送情報６００の所属する転送情報リストに属するデータ転送情報６００のうち、データ転送ＬＳＩ５００が直前に処理をしたデータ転送情報６００の各欄に設定されていた値を引き継ぐ目的として、当該データ転送情報６００の各欄にコピーして利用する場合に、どの欄の値をコピーするかを示す情報が設定される。  
転送バイト数欄６０２には、転送対象となるデータの長さが設定される。  
キャッシュアドレス欄６０３には、データ転送ＬＳＩ５００がデータの転送を行う転送元あるいは転送先として利用する、キャッシュメモリ２３０上のアドレスが設定される。  
ＣＲＣ欄６０４には、転送対象となるデータについての誤り検出符号が設定される。例えば、マイクロプロセッサ２１１は、転送対象となるデータについてＣＲＣ（Cyclic Redundancy Check）手法を用いてＣＲＣ符合を計算し、ＣＲＣ欄６０４に設定する。データ転送ＬＳＩ５００はデータ転送を行う際に、この欄に設定された値を用いて、転送対象となるデータに誤りがないことを確認できる。例えば、転送対象となるデータに誤りがあると判断された場合、データ転送ＬＳＩ５００はデータの転送処理を行わないようにすることができる。  
転送方向欄６０５には、データ転送ＬＳＩ５００が、キャッシュメモリ２３０に記憶されているデータをバッファメモリ２１４に転送するのか、あるいは、バッファメモリ２１４に記憶されているデータをキャッシュメモリ２３０に転送するのかを示す値が設定される。
【００５０】
フラグ欄６０６には、様々な設定項目を示す情報が設定される。マイクロプロセッサ２１１は、例えば、上記のＣＲＣ欄の値を用いたデータの誤り検出をするかどうか、あるいはディスク制御部２４０に対してデータの書き込みを同期的にするか非同期的にするかといった設定を示す値をフラグ欄６０６に設定することができる。  
識別情報欄６０７には、マイクロプロセッサ２１１が転送情報リスト毎に付与する識別情報が設定される。  
チェインフラグ欄６０８には、転送情報リストに属する一連のデータ転送情報６００のおいて、直後に続くデータ転送情報６００を処理するべきかどうかを示すフラグ値が設定される。データ転送ＬＳＩ５００は、識別情報欄６０７あるいはチェインフラグ欄６０８に設定される値を用いて、メモリから読み出したデータ転送情報が関連して処理されるデータ転送情報群に所属するかどうかを判別することができる。また、データ転送ＬＳＩ５００は、当該データ転送情報６００が所属するデータ転送群に所属するの他のデータ転送情報６００を読み出し、データ転送処理を行うことができる。
【００５１】
ＲＣＲＣ欄６０９には、転送対象となるデータについての誤り検出符号が設定される。ＲＣＲＣ欄６０９に設定される誤り検出符号は、例えば、ＣＲＣ手法によって計算される。ＲＣＲＣ欄６０９は、例えば、本記憶デバイス制御装置２００が情報処理装置１００との記憶デバイス３００との間でのデータ転送ではなく、他の記憶装置に対するデータの複製（リモートコピー）に関するデータの転送を実施する場合に転送対象となるデータについての誤り検出符号である。ＲＣＲＣ欄６０９には、上述したＣＲＣ欄６０４と同様に転送対象となるデータについての誤り検出符号が設定されるが、ＲＣＲＣ欄６０９に設定される誤り検出符号は、後述する終了ステータス情報にコピーされ、ローカルメモリ２１２に書き込まれる。よって、マイクロプロセッサ２１１はデータ転送処理終了後に、その転送対象となったデータについての誤り検出符号を取得することができる。マイクロプロセッサ２１１は、例えば、データ転送処理の転送対象となるデータについての誤り検出符合を計算する初期値として、終了ステータス情報から取得した過去のデータ転送処理の転送対象となったデータについての誤り検出符号を用いることができる。マイクロプロセッサ２１１は、複数のデータ転送情報６００に跨って転送対象となるデータ全体についての誤り検出符号を計算することができる。
【００５２】
バッファアドレス欄６１０には、データ転送ＬＳＩ５００がデータの転送を行う転送元あるいは転送先として利用するバッファメモリ２１４上のアドレスが設定される。  
ＬＲＣ欄６１１には、当該データ転送情報６００についての誤り検出符号が設定される。この誤り検出符号は、例えば、ＬＲＣ手法によって計算されたＬＲＣ符号である。マイクロプロセッサ２１１は、データ転送情報６００をローカルメモリ２１２上に書き込む基準となるアドレスを初期値として、マスク欄６０１、転送バイト数欄６０２、キャッシュアドレス欄６０３、ＣＲＣ欄６０４、転送方向欄６０５、フラグ欄６０６、識別情報欄６０７、チェインフラグ欄６０８、ＲＣＲＣ欄６０９、及びバッファアドレス欄６１０の各欄の値を用いてＬＲＣ符号を計算する。
【００５３】
データ転送ＬＳＩ５００は、読み出したデータ転送情報が正しい情報であるかどうかを、データ転送情報に付帯される誤り検出符号により確認することができる。よって、より信頼性の高いデータ転送を実現できる。
【００５４】
また、マイクロプロセッサ２１１は、データ転送情報のみでなく、データ転送ＬＳＩ５００がローカルメモリ２１２からデータ転送情報を読み出す位置を決定するための基準位置も計算対象に含めて誤り検出符号を生成する。そのため、データ転送ＬＳＩ５００は、データ転送情報の内容に誤りがある場合であっても、データ転送ＬＳＩ５００がデータ転送情報を読み出したメモリ上の記憶位置が間違っている場合であっても、誤りがあることを検出することができる。
【００５５】
なお、本実施の形態において、データ転送情報６００のＣＲＣ欄６０４、ＲＣＲＣ欄６０９及びＬＲＣ欄６１１に設定される誤り検出符号は、ＣＲＣ符号やＬＲＣ符号に限定されるものではなく、チェックサムやハミング符号など様々なものを用いることができる。また、データ転送情報６００のＣＲＣ欄６０４、ＲＣＲＣ欄６０９及びＬＲＣ欄６１１に設定される誤り検出符号は、データ転送ＬＳＩ５００が計算するようにしてもよい。
【００５６】
また、本実施の形態では、識別情報欄６０７に設定される識別情報は転送情報リスト単位に設定されるが、データ転送情報６００単位に識別情報が付与されるようにしてもよい。データ転送ＬＳＩ５００は、データ転送情報６００に基づいてデータ転送処理を行い、その結果である後述の終了ステータス情報を転送情報リスト単位に付与された識別情報に対応させてローカルメモリ２１２に書き込む。よって、マイクロプロセッサ２１１は、識別情報を付与する単位でデータ転送処理の結果を取得することができる。
【００５７】
＝＝＝終了ステータス情報＝＝＝
図９は、データ転送ＬＳＩ５００によるデータ転送が終了した際に、データ転送ＬＳＩ５００がローカルメモリ２１２に書き込む終了ステータス情報の一例を示す表である。  
終了ステータス情報７００には、転送終了フラグ欄７０１、障害情報欄７０２、識別子欄７０３、転送処理数欄７０４、ＲＣＲＣ欄７０５が含まれる。  
転送終了フラグ欄７０１には、データ転送ＬＳＩ５００がデータを転送終了したかどうかを示す値が設定される。  
障害情報欄７０２には、データ転送ＬＳＩ５００がデータ転送処理を行った際に何らかの障害が発生した場合に、その障害に関する情報が設定される。障害に関する情報とは、例えば、所定のエラーコードなどである。  
識別情報欄７０３には、データ転送ＬＳＩ５００が読み出したデータ転送情報６００の識別情報欄５０７に設定されている識別情報がそのまま設定される。これにより、データ転送ＬＳＩ５００は終了ステータス情報７００を転送情報リストと対応付ける
本発明によれば、データ転送情報６００と終了ステータス情報７００とが、マイクロプロセッサ２１１がデータ転送情報６００に付与する識別情報によって対応づけられる。従って、例えば、ローカルメモリ２１２に複数の終了ステータス情報７００が併存する場合でも、マイクロプロセッサ２１１は前記各終了ステータスが、それぞれどのデータ転送情報６００についての終了ステータスであるのかを特定することができる。また、マイクロプロセッサ２１１は、データ転送情報６００をデータ転送ＬＳＩ５００が正しく処理して、ローカルメモリ２１２へ終了ステータス情報７００を返答したかを判断することができる。例えば、データ転送ＬＳＩ５００により終了ステータス情報７００が書き込まれるローカルメモリ２１２上のアドレスが既知である場合、マイクロプロセッサ２１１は、データ転送ＬＳＩ５００がローカルメモリ２１２に書き込んだ終了ステータス情報７００が、マイクロプロセッサ２１１が指示したデータ転送情報６００に対応するものであることを確認できる。これにより、マイクロプロセッサ２１１は、データ転送ＬＳＩ５００がマイクロプロセッサ２１１の期待するデータ転送情報６００を読み出したこと、及びデータ転送ＬＳＩ５００がローカルメモリ２１２上の既知のアドレスに終了ステータス情報７００を書き込んだことを検査することができる。
【００５８】
転送処理数欄７０４には、転送情報リストに所属するデータ転送情報６００のうち、データ転送ＬＳＩ５００が処理をしたデータ転送情報６００の数が設定される。マイクロプロセッサ２１１は、データ転送情報６００のチェインフラグ欄６０８を用いて、転送情報リストのうち処理すべきデータ転送情報６００の数をデータ転送ＬＳＩ５００に指示し、データ転送ＬＳＩ５００は、実際にデータ転送の処理を行った数を終了ステータス情報７００の転送処理数欄７０４に設定する。マイクロプロセッサ２１１は、指示したデータ転送処理の数と、データ転送ＬＳＩ５００が行った処理の数とを比較して、データ転送ＬＳＩ５００が正しく動作したかどうかを判断することができる。
【００５９】
ＲＣＲＣ欄７０５には、データ転送情報６００のＲＣＲＣ欄５０９に設定されている値がそのまま設定される。なお、データ転送ＬＳＩ５００が、データ転送情報６００のＲＣＲＣ欄５０９に設定される値に基づいて、転送対象となるデータ等についての誤り検出符号を計算し、その結果をＲＣＲＣ欄７０５に設定するようにもできる。
【００６０】
本発明では、マイクロプロセッサ２１１からデータ転送ＬＳＩ５００に対してローカルメモリ２１２を介して間接的にデータ転送情報が通知される。このようにデータ転送ＬＳＩ５００が終了ステータス情報７００をメモリに書き込むため、例えば、マイクロプロセッサ２１１は終了ステータスを事後的に調べることで、データ転送ＬＳＩ５００によりデータ転送処理が行われたかどうかを調べることができる。
【００６１】
データ転送ＬＳＩ５００は、データ転送処理を終了すると、その結果を終了ステータス情報７００として、ローカルメモリ２１２の所定のアドレスから順に書き込む。本実施の形態では、このローカルメモリ２１２の所定のアドレスは、マイクロプロセッサ２１１が初期設定などによって、予めデータ転送ＬＳＩ５００のレジスタに設定するものとする。以下に、データ転送ＬＳＩ５００の各レジスタの設定について説明する。
【００６２】
＝＝＝レジスタ構成＝＝＝
図１０は、データ転送ＬＳＩ５００が備えるレジスタを示す表である。データ転送ＬＳＩ５００は、ＬＰＢＡレジスタ８０１、ＬＳＢＡレジスタ８０２、ＬＳＩＢＡレジスタ８０３、ＬＮＵＭレジスタ８０４、ＳＮＵＭレジスタ８０５、ＬＩＰレジスタ８０６、ＳＴＰレジスタ８０７、ＬＯＰレジスタ８０８、ＰＯＰレジスタ８０９を備えている。
【００６３】
ＬＰＢＡレジスタ８０１には、マイクロプロセッサ２１１がローカルメモリ２１２にデータ転送情報６００を書き込むアドレスの基準となるアドレス（以下、リストベースアドレスと称する）が設定される。マイクロプロセッサ２１１は、ＬＰＢＡレジスタ８０１に設定されるリストベースアドレスから順にデータ転送情報６００を書き込む。  
ＬＳＢＡレジスタ８０２には、データ転送ＬＳＩ５００がローカルメモリ２１２に終了ステータス情報７００を書き込むアドレスの基準となるアドレス（以下、ステータスベースアドレスと称する）が設定される。データ転送ＬＳＩ５００は、ステータスベースアドレスから順に終了ステータス情報７００を書き込む。  
ＬＳＩＢＡレジスタ８０３には、データ転送ＬＳＩ５００がステータスベースアドレスから何番目に終了ステータス情報７００を書き込んだかを示すポインタ（以下ステータスポインタと称する）を書き込むローカルメモリ２１２上のアドレス（以下、ステータスポインタアドレスと称する）が設定される。  
ＬＮＵＭレジスタ８０４には、１つの転送情報リストに設定可能なデータ転送情報６００の数が設定される。  
ＳＮＵＭレジスタ８０５には、データ転送ＬＳＩ５００がローカルメモリ２１２上に終了ステータス７００を書き込むことのできる数が設定される。
【００６４】
ＬＩＰレジスタ８０６には、マイクロプロセッサ２１１がローカルメモリ２１２に書き込んだ転送情報リストがリストベースアドレスから何番目のものであるかを示す情報（以下、リスト書き込みポインタと称する）がマイクロプロセッサ２１１により設定される。マイクロプロセッサ２１１は転送情報リストに属するデータ転送情報６００をローカルメモリ２１２に書き込む度に、ＬＩＰレジスタ８０６を更新する。
【００６５】
ＳＴＰレジスタ８０７には、ステータスポインタが設定される。データ転送ＬＳＩ５００は、終了ステータス情報７００をローカルメモリ２１２に書き込む度にＳＴＰレジスタ８０７を更新する。また、データ転送ＬＳＩ５００は、ＳＴＰレジスタ８０７に設定された値を、ローカルメモリ２１２上のステータスポインタアドレスに書き込む。
【００６６】
ＬＯＰレジスタ８０８には、データ転送ＬＳＩ５００が読み出したデータ転送情報６００が所属する転送情報リストがリストベースアドレスから何番目のものであるかを示すポインタ（以下、リスト読み出しポインタと称する）がデータ転送ＬＳＩ５００によって設定される。
【００６７】
ＰＯＰレジスタ８０９には、データ転送ＬＳＩ５００がローカルメモリ２１２から読み出したデータ転送情報６００が属する転送情報リストについて、その転送情報リストに属するデータ転送情報６００のうちデータ転送ＬＳＩ５００が実際の処理を行った数が設定される。マイクロプロセッサ２１２は、上述したデータ転送情報６００のチェインフラグ欄６０８などを用いて指示したデータ転送処理の数と、データ転送ＬＳＩ５００が実際に行ったデータ転送処理の数とを比較して、正しくデータ転送処理が行われたことを確認することができる。
【００６８】
データ転送ＬＳＩ５００は、ＬＩＰレジスタ８０６に設定されているリスト書き込みポインタとＬＯＰレジスタ８０８に設定されているリスト読み出しポインタとを比較することによって、マイクロプロセッサ２１１から新しいデータ転送処理の指示が与えられたことを検出することができる。  
データ転送ＬＳＩ５００は、ＬＩＰレジスタ８０６及びＬＯＰレジスタ８０８の内容を比較することにより、データ転送ＬＳＩ５００は、後続して処理すべきデータ転送情報が存在するかどうかを調べることができる。  
なお、データ転送ＬＳＩ５００の備えるレジスタは、データ転送情報フェッチ回路５０６が備える形態、あるいはＤＭＡ５０１が備える形態とすることもできる。また、これらのレジスタに格納する情報は、レジスタではなく、ローカルメモリ２１２や共有メモリ２２０に格納するようにしてもよい。
【００６９】
＝＝＝転送情報リストを用いたデータ転送処理の流れ＝＝＝
次に、本実施の形態による、転送情報リストを用いたデータ転送処理について説明する。図１１は、転送情報リストを用いたデータ転送処理が行われる処理の流れを示すフローチャートである。
【００７０】
マイクロプロセッサ２１１は、データ転送ＬＳＩ５００のＬＮＵＭレジスタ８０４に設定した所定の数のデータ転送情報６００を転送情報リストとしてローカルメモリ２１２に書き込み（S11001）、データ転送ＬＳＩ５００のＬＩＰレジスタ８０６にリストポインタを設定する（S11002）。
【００７１】
一方、データ転送ＬＳＩ５００は、ＬＩＰレジスタ８０６とＬＯＰレジスタ８０８とを比較しながら（S11003）、ＬＩＰレジスタ８０６に新しいリストポインタが設定されるのを待機をしている。データ転送ＬＳＩ５００は、マイクロプロセッサ２１２によってＬＩＰレジスタ８０６にリストポインタが設定されたことを検出すると（S11003：NO）、ローカルメモリ２１２上のデータ転送情報６００を読み出す（S11004）。データ転送ＬＳＩ５００内部では、データ転送情報フェッチ回路５０６がローカルメモリ２１２からデータ転送情報６００が読み出し、ＤＭＡ５０１のレジスタにデータ転送処理に必要な値を設定する（S11005）。データ転送ＬＳＩ５００は読み出したデータ転送情報６００に基づいて、キャッシュメモリ２３０とバッファメモリ２１５との間のデータ転送に関する処理を行う（S11006）。データ転送ＬＳＩ５００はデータ転送処理を終了すると、そのデータ転送情報６００のチェインフラグ欄６０８に設定されている値が「１」であるかどうかを調べる（S11007）。データ転送情報６００のチェインフラグ欄６０８に設定されている値が「１」であった場合（S11007：YES）には（S11004）に進む。ただし、次の（S11004）において読み出すデータ転送情報６００は、先にデータ転送ＬＳＩ５００がデータ転送情報６００を読み出したアドレスから、データ転送情報６００のデータ長分進めたアドレスに記憶されているデータ転送情報６００を読み出す。このようにして、データ転送ＬＳＩ５００は、読み出したデータ転送情報６００のチェインフラグ６０８に基づいて、順次データ転送情報６００を読み出す。なお、データ転送ＬＳＩ５００は、データ転送情報６００の属する転送情報リストに属するデータ転送情報６００の全てを一度に読み出すようにしてもよい。
【００７２】
データ転送情報６００のチェインフラグ欄６０８が「１」でなかった場合（S11007：NO）には、データ転送ＬＳＩ５００は、データ転送処理の結果を終了ステータス情報７００としてローカルメモリ２１２に書き込み（S11008）、ＳＴＰレジスタ８０７に設定されるステータスポインタを１つ増やす（S11009）。データ転送ＬＳＩ５００は、ＳＴＰレジスタ８０７に設定されたステータスポインタをローカルメモリ２１２上のステータスポインタアドレスに書き込み、ＬＯＰレジスタ８０８に設定されるリストポインタを１増やして、ＬＯＰレジスタ８０８を更新する（S11010）。
【００７３】
一方、データ転送ＬＳＩ５００によってステータスポインタが更新されると、マイクロプロセッサ２１１はその更新を検出し（S11011：YES）、ローカルメモリ２１２から終了ステータス情報７００を読み出し、例えば、情報処理装置１００にエラー情報を送信したり、表示装置にエラーの表示をするなど、その終了ステータス情報７００に応じた終了処理を行う（S11012）。
【００７４】
このように、マイクロプロセッサ２１１が、複数のデータ転送情報６００をひとつの転送情報リストとしてローカルメモリ２１２に書き込むことによって、データ転送ＬＳＩ５００は、複数のデータ転送情報のそれぞれを連続してメモリから読み出すことができる。また、データ転送ＬＳＩ５００は、メモリから読み出したデータ転送情報６００が関連して処理されるデータ転送情報群に所属するかどうかを、データ転送情報６００の識別情報を用いて判別することができる。また、データ転送ＬＳＩ５００は、ローカルメモリ２１２から読み出したデータ転送情報６００の識別情報欄６０７あるいはチェインフラグ欄６０８を用いて、そのデータ転送情報が所属するデータ転送群に所属するの他のデータ転送情報６００を読み出し、データ転送処理を行うことができる。
【００７５】
なお、データ転送ＬＳＩ５００はＳＴＰレジスタ８０７に設定されるステータスポインタを定期的にローカルメモリ２１２に書き込むようにしてもよい。また、データ転送ＬＳＩ５００はＳＴＰレジスタを用いず、直接ローカルメモリ２１２にステータスポインタを格納するようにしてもよい。
【００７６】
＝＝＝具体的な処理の流れ＝＝＝
図１２及び図１３は、本実施の形態にかかるデータ転送処理の具体例を表す説明図である。  
図１２では、マイクロプロセッサ２１１が転送情報リストを１つローカルメモリ２１２に書き込んだ場合の処理を、また図１３では、マイクロプロセッサ２１１が転送情報リストを２つローカルメモリ２１２に書き込んだ場合の処理を示している。
【００７７】
図１２及び図１３では、マイクロプロセッサ２１１は、３つのデータ転送情報６００１乃至６００３を生成し、転送情報リスト６１００としてローカルメモリ２１２のリストベースアドレス（ＬＰＢＡ）から連続して書き込んでいる。データ転送情報６００１及び６００２のチェインフラグ欄６０８には「１」が設定され、データ転送情報６００３のチェインフラグ欄６０８には「０」が設定されている。
【００７８】
マイクロプロセッサ２１１は転送リスト６１００に属するデータ転送情報６００１乃至６００３をローカルメモリ２１２に書き込むと、データ転送ＬＳＩ５００のＬＩＰレジスタ８０６に「１」を設定する。データ転送ＬＳＩ５００はＬＯＰ８０８レジスタに設定された「０」とＬＩＰレジスタ８０６に設定された「１」との比較から、データ転送情報６００がローカルメモリ２１２に書き込まれたことを検出する。
【００７９】
データ転送ＬＳＩ５００はまずデータ転送情報６００１を読み出すと、それに基づいてデータ転送処理を行う。データ転送ＬＳＩ５００はデータ転送処理を終了すると、ＰＯＰレジスタ８０９をカウントアップして「１」に設定する。データ転送情報６００１のチェインフラグ欄６０８には「１」が設定されているため、データ転送ＬＳＩ５００は引き続きデータ転送情報６００２を読み出し、同様のデータ転送処理を行う。
【００８０】
なお図１３では、データ転送ＬＳＩ５００がデータ転送情報６００２に基づいてデータ転送を行っているときに、マイクロプロセッサ２１１が２つのデータ転送情報６００４乃至６００５を生成して、転送情報リスト６２００としてローカルメモリ２１２に書き込んでいる。本実施の形態では、転送情報リストには固定的にＬＮＵＭレジスタ８０４に設定した数（ＬＮＵＭ）のデータ転送情報６００を含むことにしているため、転送情報リスト６２００に属する先頭のデータ転送情報６００であるデータ転送情報６００４は、リストベースアドレスから（ＬＮＵＭ＋１）番目のデータ転送情報６００となる。データ転送情報６００４のチェインフラグ欄６０８には「１」が設定され、データ転送情報６００５のチェインフラグ欄６０８には「０」が設定される。マイクロプロセッサ２１１は、これらのデータ転送情報６００４乃至６００５をローカルメモリ２１２に書き込むと、データ転送ＬＳＩ５００のＬＩＰレジスタ８０６を「２」に設定する。
【００８１】
データ転送ＬＳＩ５００はデータ転送情報６００３に基づくデータ転送処理を終了すると、データ転送情報６００３のチェインフラグ欄６０８に設定された値が「０」であることから、最初に読み出したデータ転送情報６００１の属する転送情報リスト６１００に属する全てのデータ転送情報６００を処理したと判断する。データ転送ＬＳＩ５００は、データ転送情報６００３の識別情報欄６０７に設定された値やＰＯＰレジスタ８０９に設定されている値である「３」などを用いて、データ転送処理の結果である終了ステータス情報７００１を生成し、ステータスベースアドレス（ＬＳＢＡ）に書き込む。そして、データ転送ＬＳＩ５００はＳＴＰレジスタ８０７をカウントアップして「１」とした後、ローカルメモリ２１２のステータスポインタアドレス（ＬＳＩＢＡ）にＳＴＰレジスタ８０７に設定された値である「１」を書き込む。データ転送ＬＳＩ５００は転送情報リスト６１００に属するデータ転送情報６００を全て処理したとして、ＬＯＰレジスタ８０８をカウントアップして「１」に設定する。
【００８２】
一方、マイクロプロセッサ２１１は、様々な処理を行いながらステータスポインタアドレスに書き込まれた値を監視している。データ転送ＬＳＩ５００がステータスポインタアドレスに「１」を書き込むと、マイクロプロセッサ２１１はそれを検出し、終了ステータス情報７００１をステータスベースアドレスから読み出し、終了ステータスに応じた処理を行う。
【００８３】
ここで図１３では、データ転送ＬＳＩ５００のＬＩＰレジスタ８０６は「２」に更新されているので、データ転送ＬＳＩ５００はさらにＬＯＰレジスタ８０８に設定されている「１」との差から、次の転送情報リストについてのデータ転送処理を行うと判断する。データ転送ＬＳＩ５００は、データ転送情報６００４に基づくデータ転送処理と、データ転送情報６００５に基づくデータ転送処理とを終了すると、終了ステータス情報７００２をローカルメモリ２１２に書き込む。終了ステータス情報７００２は、ステータスベースアドレス（ＬＳＢＡ）から２番目の終了ステータス情報７００となる。
【００８４】
＝＝＝その他の実施の形態＝＝＝
本実施の形態では、マイクロプロセッサ２１１がローカルメモリ２１２に書き込む単位を転送情報リスト単位としたが、データ転送情報単位とすることもできる。例えば、データ転送ＬＳＩ５００のＬＩＰレジスタ８０４を、ローカルメモリ２１２上に記憶されている複数のデータ転送情報６００の何番目かを示す情報とし、マイクロプロセッサ２１１が連続する複数のデータ転送情報６００を書き込んだ際に、その最後となるデータ転送情報６００がローカルメモリ２１２上で何番目に書き込まれたデータ転送情報になったかを設定する。そして、データ転送ＬＳＩ５００は、ＬＯＰレジスタ８０８リストベースアドレスに、データ転送情報６００のデータ長をＬＯＰレジスタ８０８分足して、ローカルメモリ２１２からデータ転送情報６００を読み出すアドレスとして、データ転送情報６００を読み出す。データ転送ＬＳＩ５００は、読み出したデータ転送情報６００のチェインフラグ欄６０８が「１」である間、読み出すアドレスにデータ転送情報６００のデータ長を足しながら、データ転送情報６００を読み続ける。例えば、こうすることによって、マイクロプロセッサ２１１からデータ転送ＬＳＩ５００に伝達されるデータ転送に関する情報は、転送情報リスト単位ではなくデータ転送情報６００単位となり、可変長のデータ転送情報６００の受け渡しをすることができる。
【００８５】
また、本発明の形態において、データ転送情報６００はマイクロプロセッサ２１１の管理するローカルメモリ２１２に書き込まれるようにしたが、ローカルメモリ２１２の代わりに、共有メモリ２２０やキャッシュメモリ２３０、その他のメモリ等、マイクロプロセッサ及びデータ転送ＬＳＩが同様にアクセス可能な記憶デバイスに記憶するようにしてもよい。
【００８６】
また、本発明はディスク制御部２４０に適用する形態とすることもできる。例えば、ディスク制御部２４０がマイクロプロセッサと、ローカルメモリと、記憶デバイス３００にアクセスするインタフェースと、データ転送ＬＳＩとを備えるとすると、キャッシュメモリ２３０と記憶デバイス３００との間で転送されるデータに関するデータ転送処理に、上述したチャネル制御部２１０でのデータ転送処理と同様のデータ転送処理を実現できる。
【００８７】
以上本実施の形態について説明したが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更、改良され得ると共に、本発明にはその等価物も含まれる。
【図面の簡単な説明】
【００８８】
【図１】本発明の一実施の形態による、コンピュータを示すブロック図である。
【図２】本発明の一実施の形態による、一般的なデータ転送処理の流れを示すフローチャートである。
【図３】本発明の一実施の形態による、データ転送処理の流れを示すフローチャートである。
【図４】本発明の一実施の形態による、ＣＰＵ１０の処理に、一般的なデータ転送処理によってかかる時間と、本実施の形態によるデータ転送処理によってかかる時間とを比較する説明図である。
【図５】本発明の一実施の形態による、情報処理システムの全体構成を示すブロック図である。
【図６】本発明の一実施の形態による、チャネル制御部２１０のハードウエア構成を示すブロック図である。
【図７】本発明の一実施の形態による、データ転送ＬＳＩ５００の構成を示すブロック図である。
【図８】本発明の一実施の形態による、データ転送ＬＳＩ５００がデータ転送に必要な情報であるデータ転送情報の詳細を示す表である。
【図９】本発明の一実施の形態による、データ転送ＬＳＩ５００によるデータ転送が終了した際に、データ転送ＬＳＩ５００がローカルメモリ２１２に書き込む終了ステータス情報の一例を示す表である。
【図１０】本発明の一実施の形態による、データ転送ＬＳＩ５００が備えるレジスタを示す表である。
【図１１】本発明の一実施の形態による、転送情報リストを用いたデータ転送処理が行われる処理の流れを示すフローチャートである。
【図１２】本発明の一実施の形態による、データ転送処理の具体例を表す説明図である。
【図１３】本発明の一実施の形態による、データ転送処理の具体例を表す説明図である。
【符号の説明】
【００８９】
１      コンピュータ
１０    ＣＰＵ
２０    ＲＡＭ
３０    記憶装置
４０    入力装置
５０    出力装置
６０    ＤＭＡコントローラ
７０    Ｉ／Ｏインタフェース
７１    バッファメモリ
１００  情報処理装置
２００  記憶デバイス制御装置
２１０  チャネル制御部
２１１  マイクロプロセッサ
２１２  ローカルメモリ
２１４  バッファメモリ
２２０  共有メモリ
２３０  キャッシュメモリ
２４０  ディスク制御部
３００  記憶デバイス
４００  ＳＡＮ
５００  データ転送ＬＳＩ
６００  データ転送情報
７００  終了ステータス情報
【図１】
2005078596.tif 000003
【図２】
2005078596.tif 000004
【図３】
2005078596.tif 000005
【図４】
2005078596.tif 000006
【図５】
2005078596.tif 000007
【図６】
2005078596.tif 000008
【図７】
2005078596.tif 000009
【図８】
2005078596.tif 000010
【図９】
2005078596.tif 000011
【図１０】
2005078596.tif 000012
【図１１】
2005078596.tif 000013
【図１２】
2005078596.tif 000014
【図１３】
2005078596.tif 000015