(57)【要約】【課題】  データ転送回路とローカルメモリとの間のバスネックを解消する。【解決手段】  本発明のデータ転送回路（８００）は、ＤＭＡ転送を指示するためにプロセッサ（１１２）がローカルメモリ（１１３）に格納した複数のデータ転送パラメータ（７０１）を一度のバスアクセスでフェッチするフェッチ回路（８０１）と、フェッチ回路（８０１）がフェッチしたデータ転送パラメータ（７０１）を格納するパラメータ格納メモリ（８０２）と、パラメータ格納メモリ（８０２）に格納されたデータ転送パラメータ（７０１）に基づいてＤＭＡ転送を行うＤＭＡ転送回路（８０３）とを備える。一度のバスアクセスで複数のデータ転送パラメータ（７０１）をフェッチすることにより、データ転送回路（８００）とローカルメモリ（１１３）との間のバスネックを解消できる。【選択図】      図４
2006323541.tif 000002
【特許請求の範囲】
【請求項１】
入出力デバイスとメモリとの間のＤＭＡ転送を行うデータ転送回路であって、
前記ＤＭＡ転送を指示するためにプロセッサがローカルメモリに格納した複数のデータ転送パラメータを一度のバスアクセスでフェッチするフェッチ回路と、
前記フェッチ回路がフェッチした前記データ転送パラメータを格納するパラメータ格納メモリと、
前記パラメータ格納メモリに格納された前記データ転送パラメータに基づいて前記ＤＭＡ転送を行うＤＭＡ転送回路と、
を備える、データ転送回路。
【請求項２】
請求項１に記載のデータ転送回路であって、
前記パラメータ格納メモリは、前記複数のデータ転送パラメータのそれぞれの指示に基づくＤＭＡ転送のステータスをそれぞれ格納し、
前記フェッチ回路は、複数の前記ステータスを一度のバスアクセスで前記パラメータ格納メモリから前記ローカルメモリに転送する、データ転送回路。
【請求項３】
請求項１に記載のデータ転送回路であって、
前記パラメータ格納メモリは、前記データ転送パラメータを、ライトコマンドとリードコマンドとに分けて格納し、
前記ＤＭＡ転送回路は、前記ライトコマンドと前記リードコマンドを同時に並行処理する、データ転送回路。
【請求項４】
請求項３に記載のデータ転送回路であって、
前記ＤＭＡ転送回路は、前記入出力デバイスから前記メモリへのＤＭＡ転送を行うインターフェースと、前記メモリから前記入出力デバイスへのＤＭＡ転送を行うインターフェースとを備える、データ転送回路。
【請求項５】
入出力デバイスとメモリとの間のＤＭＡ転送を行うデータ転送方法であって、
前記ＤＭＡ転送を指示するためにプロセッサがローカルメモリに格納した複数のデータ転送パラメータを一度のバスアクセスでフェッチするフェッチステップと、
前記フェッチステップでフェッチされた前記データ転送パラメータをパラメータ格納メモリに格納するパラメータ格納ステップと、
前記パラメータ格納メモリに格納された前記データ転送パラメータに基づいて前記ＤＭＡ転送を行うＤＭＡ転送ステップと、
を備える、データ転送方法。
【請求項６】
請求項５に記載のデータ転送方法であって、
複数の前記データ転送パラメータのそれぞれの指示に基づくＤＭＡ転送のステータスをそれぞれ前記パラメータ格納メモリに格納するステップと、
複数の前記ステータスを一度のバスアクセスで前記パラメータ格納メモリから前記ローカルメモリに転送するステップと、
を更に備える、データ転送方法。
【請求項７】
請求項５に記載のデータ転送方法であって、
前記パラメータ格納ステップにおいて、前記データ転送パラメータをライトコマンドとリードコマンドとに分けて前記パラメータ格納メモリに格納し、
前記ＤＭＡ転送ステップにおいて、前記ライトコマンドと前記リードコマンドを同時に並行処理する、データ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ転送回路及びデータ転送方法に関する。
【背景技術】
【０００２】
従来、ＤＭＡ転送方式の一つとして、プロセッサがローカルメモリにデータ転送パラメータ（データ転送コマンド）をセットし、その後、データ転送回路を起動させることにより、ローカルメモリにセットされたデータ転送パラメータをデータ転送回路がフェッチして、ＤＭＡ転送を行う方式（以下、シーケンシャル方式と称する。）が知られている。シーケンシャル方式によれば、プロセッサがデータ転送パラメータをデータ転送回路に直接セットし、その後、データ転送回路がそのデータ転送パラメータに基づいてＤＭＡ転送を行う方式と比較して、オーバーヘッドを低減し、データ転送の多重度を上げることが可能になる。これは、プロセッサとデータ転送回路との間を、例えば、４バイト幅のＰＣＩインターフェースで接続すると、３２バイト〜６４バイトのデータ転送パラメータをプロセッサがデータ転送回路にセットするには、プロセッサによるデータ転送回路へのアクセスが複数回必要となり、オーバーヘッドが生じるためである。
【０００３】
シーケンシャル方式によれば、データ転送回路がＤＭＡ転送を行っている最中でも、プロセッサは自身の都合のよいタイミング、例えば、他のタスク処理等を実行していないときに、ローカルメモリにデータ転送パラメータをセットすることが可能になる。更に、後続するデータ転送パラメータの存在を示すチェインビットをデータ転送パラメータに含ませることにより、プロセッサはデータ転送回路を１回起動させるだけで、データ転送回路が自動的に複数のデータ転送パラメータをローカルメモリからフェッチしてＤＭＡ転送を行うので、データ転送パラメータを１回実行する毎にプロセッサがデータ転送回路にアクセスしなくて済み、ＰＣＩバスネックを幾分緩和できる。更に、データ転送回路はＤＭＡ転送が完了すると、ＤＭＡ完了を示すステータスをローカルメモリに格納するので、プロセッサは自身の都合のよいタイミングでそのステータスを処理できる。ＤＭＡ転送方式に言及した文献として、例えば、特開２０００−３４７９８８号公報が知られている。
【特許文献１】特開２０００−３４７９８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、シーケンシャル方式では、データ転送回路がローカルメモリからデータ転送パラメータをフェッチして、ＤＭＡ転送を実行し、ＤＭＡ完了を示すステータスをローカルメモリに格納してから、次のデータ転送パラメータを再びローカルメモリからフェッチする、という具合に、それぞれのデータ転送パラメータをシーケンシャルに実行しているので、データ転送回路とローカルメモリとの間のバスネックが問題となっている。
【０００５】
本発明は、上記の問題点に鑑みてなされたもので、本発明の目的は、ＤＭＡ転送を実行するデータ転送回路と、データ転送パラメータを格納するローカルメモリとの間のバスネックを解消することにある。
【課題を解決するための手段】
【０００６】
本発明のデータ転送回路は、入出力デバイスとメモリとの間のＤＭＡ転送を行う。入出力デバイスとして、例えば、データの入出力要求を行うデバイス（例えば、ホスト装置など）やその他の周辺装置などがある。メモリとしては、例えば、キャッシュメモリなどがある。このデータ転送回路は、ＤＭＡ転送を指示するためにプロセッサがローカルメモリに格納した複数のデータ転送パラメータを一度のバスアクセスでフェッチするフェッチ回路と、フェッチ回路がフェッチしたデータ転送パラメータを格納するパラメータ格納メモリと、パラメータ格納メモリに格納されたデータ転送パラメータに基づいてＤＭＡ転送を行うＤＭＡ転送回路と、を備える。一度のバスアクセスで複数のデータ転送パラメータをフェッチすることにより、データ転送回路とローカルメモリとの間のバスネックを解消できる。
【０００７】
例えば、パラメータ格納メモリは、複数のデータ転送パラメータのそれぞれの指示に基づくＤＭＡ転送のステータスをそれぞれ格納する。フェッチ回路は、複数のステータスを一度のバスアクセスでパラメータ格納メモリからローカルメモリに転送する。一度のバスアクセスで複数のステータスをローカルメモリに転送することにより、データ転送回路とローカルメモリとの間のバスネックを解消できる。
【０００８】
また例えば、パラメータ格納メモリは、データ転送パラメータを、ライトコマンドとリードコマンドとに分けて格納する。ＤＭＡ転送回路は、ライトコマンドとリードコマンドを同時に並行処理する。ライトコマンドとリードコマンドを同時に実行することにより、ＤＭＡ転送効率の向上を実現できる。
【０００９】
また例えば、ＤＭＡ転送回路は、入出力デバイスからメモリへのＤＭＡ転送を行うインターフェースと、メモリから入出力デバイスへのＤＭＡ転送を行うインターフェースとを備える。これにより、入出力デバイスからメモリへのＤＭＡ転送と、メモリから入出力デバイスへのＤＭＡ転送とを同時に並行処理できる。
【発明の効果】
【００１０】
本発明によれば、ＤＭＡ転送を実行するデータ転送回路と、データ転送パラメータを格納するローカルメモリとの間のバスネックを解消できる。
【発明を実施するための最良の形態】
【００１１】
以下、各図を参照して、本発明の実施例について説明する。各実施例は特許請求の範囲を限定するものではなく、また実施例で説明されている特徴の全てが発明の解決手段に必須であるとは限らない。
【実施例１】
【００１２】
図１は本実施例に係るストレージシステム６００のハードウェア構成を示している。ストレージシステム６００は、主に、記憶制御装置１００と記憶装置３００とから構成される。記憶制御装置１００は、例えば、ホスト装置２００から受信したコマンドに従って、記憶装置３００へのデータの入出力制御を行う。また、記憶制御装置１００は、例えば、管理サーバ４１０から受信したコマンドに従って、ストレージシステム６００の構成情報の設定又は変更等の各種の処理を行う。
【００１３】
ホスト装置２００は、例えば、パーソナルコンピュータ、ワークステーション、或いはメインフレームコンピュータ等の上位装置であり、銀行の自動預金預け払いシステムや、航空機の座席予約システム等に利用される。ホスト装置２００はＳＡＮ５００を介して、記憶制御装置１００と通信可能に接続されている。ＳＡＮ５００は、記憶装置３００が提供する記憶資源におけるデータの管理単位であるブロックを単位として、ホスト装置２００との間でデータの授受を行うためのネットワークである。ＳＡＮ５００を介してホスト装置２００と記憶制御装置１００との間で行われる通信プロトコルは、例えば、ファイバチャネルプロトコルである。
【００１４】
もとより、ホスト装置２００と記憶制御装置１００との間は、必ずしも、ＳＡＮ５００を介して接続されている必要はなく、例えば、ＬＡＮ（Local Area Network）を介して接続されていてもよく、或いは、ネットワークを介さずに直接に接続されていてもよい。ＬＡＮを介して接続される場合には、例えば、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）に従って通信を行うこともできる。ホスト装置２００と記憶制御装置１００との間を、ネットワークを介さずに直接接続する場合には、例えば、ＦＩＣＯＮ（Fibre Connection）（登録商標）、ＥＳＣＯＮ(Enterprise System Connection) （登録商標）、ＡＣＯＮＡＲＣ（Advanced Connection Architecture）（登録商標）、ＦＩＢＡＲＣ（Fibre Connection Architecture）（登録商標）等の通信プロトコルに従って、通信を行ってもよい。
【００１５】
管理サーバ４１０は、外部ＬＡＮ４００を介して管理端末１６０と接続されている。外部ＬＡＮ４００は、例えば、インターネット或いは専用線等で構成される。外部ＬＡＮ４００を介して行われる、管理サーバ４１０と管理端末１６０との間の通信は、例えば、ＴＣＰ／ＩＰ等の通信プロトコルによって行われる。
【００１６】
記憶装置３００は、複数の物理ディスクドライブ３３０を備えている。物理ディスクドライブ３３０は、例えば、ＡＴＡ（Advanced Technology Attachment）ディスクドライブ、ＳＣＳＩ（Small Computer System Interface）ディスクドライブ、ファイバチャネルディスクドライブ等のハードディスクドライブである。アレイ状に配列された複数のディスクドライブによって、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）を構成することも可能である。物理ディスクドライブ３３０により提供される物理的な記憶領域である物理ボリュームには、論理デバイス（ＬＤＥＶ）を設定することができる。記憶制御装置１００と記憶装置３００との間は、ネットワークを介さずに直接に接続してもよく、或いはネットワークを介して接続してもよい。或いは、記憶装置３００と記憶制御装置１００を一体構成としてもよい。
【００１７】
記憶制御装置１００は、チャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、ディスク制御部１４０、管理端末１６０、及び接続部１５０を備える。
【００１８】
記憶制御装置１００は、チャネル制御部１１０により、ＳＡＮ５００を介してホスト装置２００との間の通信を行う。チャネル制御部１１０は、ホスト装置２００との間で通信を行うための通信インターフェースを備え、ホスト装置２００との間でデータ入出力コマンド等を授受する機能を備える。各々のチャネル制御部１１０は、管理端末１６０と共に内部ＬＡＮ（共有バス）１５１を介して接続されている。これにより、チャネル制御部１１０に実行させるマイクロプログラム等を管理端末１６０からインストールすることが可能である。
【００１９】
接続部１５０は、チャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、ディスク制御部１４０、及び管理端末１６０を相互に接続する。チャネル制御部１１０、共有メモリ１２０、キャッシュメモリ１３０、ディスク制御部１４０、及び管理端末１６０の間におけるデータやコマンドの授受は、接続部１５０を介して行われる。接続部１５０は、例えば、クロスバスイッチ等で構成される。
【００２０】
共有メモリ１２０とキャッシュメモリ１３０は、それぞれチャネル制御部１１０とディスク制御部１４０とによって共有されるメモリ装置である。共有メモリ１２０は、主として、リソースの構成情報や各種コマンド等を記憶するために利用される。キャッシュメモリ１３０は、主として、物理ディスク３３０に読み書きされるデータを一時的に記憶するために利用される。
【００２１】
例えば、あるチャネル制御部１１０がホスト装置２００から受信したデータ入出力要求が書き込みコマンドであった場合には、チャネル制御部１１０は、書き込みコマンドを共有メモリ１２０に書き込むと共に、ホスト装置２００から受信した書き込みデータをキャッシュメモリ１３０に書き込む。
【００２２】
一方、ディスク制御部１４０は、共有メモリ１２０を常時監視しており、共有メモリ１２０に書き込みコマンドが書き込まれたことを検出すると、そのコマンドに従って、キャッシュメモリ１３０からダーティデータを読み出して、これを物理ディスクドライブ３００にデステージする。
【００２３】
また、あるチャネル制御部１１０がホスト装置２００から受信したデータ入出力要求が読み出しコマンドであった場合には、読み出し対象となるデータがキャッシュメモリ１３０に存在するかどうかを調べる。ここで、読み出し対象となるデータがキャッシュメモリ１３０に存在すれば、チャネル制御部１１０は、そのデータをキャッシュメモリ１３０から読み取って、ホスト装置２００に送信する。
【００２４】
一方、読みだし対象となるデータがキャッシュメモリ１３０に存在しない場合には、チャネル制御部１１０は、読み出しコマンドを共有メモリ１２０に書き込む。ディスク制御部１４０は、共有メモリ１２０を常時監視しており、読み出しコマンドが共有メモリ１２０に書き込まれたことを検出すると、ディスク制御部１４０は、記憶装置３００から読みだし対象となるデータを読み出して、これをキャッシュメモリ１３０に書き込むと共に、その旨を共有メモリ１２０に書き込む。すると、チャネル制御部１１０は読みだし対象となるデータがキャッシュメモリ１３０に書き込まれたことを検出し、そのデータをキャッシュメモリ１３０から読み出して、ホスト装置２００に送信する。
【００２５】
このように、チャネル制御部１１０とディスク制御部１４０との間では、キャッシュメモリ１３０を介してデータの授受が行われる。キャッシュメモリ１３０には、物理ディスクドライブ３３０に記憶されるデータのうち、チャネル制御部１１０やディスク制御部１４０によって、読み書きされるデータが一時的に書き込まれる。
【００２６】
尚、チャネル制御部１１０からディスク制御部１４０に対するデータの書き込みや読み出しの指示を、共有メモリ１２０を介在させて間接的に行う構成の他、例えば、チャネル制御部１１０からディスク制御部１４０に対して、データの書き込みや読み出しの指示を、共有メモリ１２０を介さずに直接に行う構成とすることもできる。或いは、チャネル制御部１１０にディスク制御部１４０の機能を持たせて、データの入出力を制御することもできる。
【００２７】
ディスク制御部１４０は、データを記憶する複数の物理ディスクドライブ３３０と通信可能に接続され、記憶装置３００の制御を行う。例えば、上述のように、チャネル制御部１１０がホスト装置２００から受信したデータ入出力要求に応じて、物理ディスクドライブ３３０に対してデータの読み書きを行う。
【００２８】
各ディスク制御部１４０は管理端末１６０と共に内部ＬＡＮ１５１で接続されており、相互に通信を行うことが可能である。これにより、ディスク制御部１４０に実行させるマイクロプログラム等を管理端末１６０から送信しインストールすることが可能となっている。
【００２９】
管理端末１６０は、ストレージシステム６００を管理するためのコンピュータである。システム管理者は管理端末１６０を操作することにより、例えば、物理ディスクドライブ３３０の構成の設定、ホスト装置２００とチャネル制御部１１０との間のパスの設定、チャネル制御部１１０やディスク制御部１４０において実行されるマイクロプログラムのインストール等を行うことができる。ここで、物理ディスクドライブ３３０の構成の設定とは、例えば、物理ディスクドライブ３３０の増設或いは減設、ＲＡＩＤ構成の変更（例えば、ＲＡＩＤ１からＲＡＩＤ５への変更）等をいう。更に、管理端末１６０からは、ストレージシステム６００の動作状態の確認や故障部位の特定、チャネル制御部１１０で実行されるオペレーティングシステムのインストール等の作業を行うこともできる。これら各種の設定や制御は、管理端末１６０が備えるユーザインターフェースを通じて行うことができる。
【００３０】
図２はチャネル制御部１１０のハードウェア構成を示している。チャネル制御部１１０は、通信インターフェース１１１、プロセッサ１１２、ローカルメモリ１１３、バッファメモリ（データ転送用外部メモリ）１１４、及びデータ転送回路８００を備える。
【００３１】
通信インターフェース１１１は、ファイバチャネルプロトコルやＳＣＳＩプロトコル等のプロトコルコントローラを備えており、ホスト装置２００との間の通信を制御する。通信インターフェース１１１は、例えば、ホスト装置２００からのブロックアクセス要求を受け付ける機能を備える。通信インターフェース１１１には、ＮＡＳ（Network Attached Storage）機能を搭載することにより、ホスト装置２００からのファイルアクセス要求を受け付けることもできる。
【００３２】
プロセッサ１１２は、ローカルメモリ１１３に実装されたチャネルアダプタ用ファームウェアに基づいて動作し、例えば、ホスト装置２００とキャッシュメモリ１３０との間のＤＭＡ転送の制御を行う。ローカルメモリ１１３は、プロセッサ１１２のワークエリアとして機能し、ＤＭＡ転送に必要な各種の制御情報（例えば、ＤＭＡ転送を指示するデータ転送パラメータ、ＤＭＡ完了を示すステータスなど）を格納する。バッファメモリ１１４は、ホスト装置２００とキャッシュメモリ１３０との間でＤＭＡ転送されるデータを一時的に格納する。データ転送回路８００は、通信インターフェース１１１、プロセッサ１１２、バッファメモリ１１４、及びキャッシュメモリ１３０に接続されており、ホスト装置２００とキャッシュメモリ１３０との間のＤＭＡ転送を実行する。
【００３３】
図３はデータ転送回路８００のハードウェア構成を示している。データ転送回路８００は、ＰＦ（パラメータフェッチ）／ＳＴ（ステータスストア）回路８０１、ＰＦ／ＳＴ格納メモリ８０２、ＤＭＡ転送回路８０３、ＰＣＩインターフェース８０４、キャッシュインターフェース８０５、ＰＣＩインターフェース８０６、及びバッファインターフェース８０７を備えている。
【００３４】
ＰＦ／ＳＴ回路８０１は、ＰＣＩインターフェース８０６を介してプロセッサ１１２及びローカルメモリ１１３に接続されており、ローカルメモリ１１３に格納されたデータ転送パラメータをフェッチし、これをＰＦ／ＳＴ格納メモリ８０２に格納する他、ＰＦ／ＳＴ格納メモリ８０２に格納されたステータスを読み取って、これをローカルメモリ１１３に転送する。ＰＦ／ＳＴ格納メモリ８０２は、ＰＦ／ＳＴ回路８０１に接続されており、ＰＦ／ＳＴ回路８０１がフェッチしたデータ転送パラメータ、及びＤＭＡ転送回路８０３が生成したステータスを格納する。ＤＭＡ転送回路８０３は、バッファインターフェース８０７を介してバッファメモリ１１４に接続される他、キャッシュインターフェース８０５を介してキャッシュメモリ１３０に接続されている。ＤＭＡ転送回路８０３は、ＰＦ／ＳＴ格納メモリ８０２に格納されたデータ転送パラメータに基づいて、ホスト装置２００とキャッシュメモリ１３０との間のＤＭＡ転送を、バッファメモリ１１４を介して実行する。更に、ＤＭＡ転送回路８０３は、ＤＭＡ転送が完了すると、ステータスを生成し、ＰＦ／ＳＴ格納メモリ８０２に格納する。ステータスには、ＤＭＡ転送が正常に行われた場合には、ＤＭＡ完了報告が含まれ、ＤＭＡ転送が正常に行われなかった場合には、その旨の情報が含まれる。
【００３５】
ＰＣＩインターフェース８０４は、通信インターフェース１１１、バッファインターフェース８０７、及びＰＣＩインターフェース８０６を接続し、データ転送におけるバス調停等を行う。キャッシュインターフェース８０５は、ＤＭＡ転送回路８０３とキャッシュメモリ１３０とを接続する。ＰＣＩインターフェース８０６は、ＤＭＡ転送回路８０３、バッファインターフェース８０７、及びプロセッサ１１２を接続し、データ転送のバス調停等を行う。バッファインターフェース８０７は、ＤＭＡ転送回路８０３、ＰＣＩインターフェース８０４、及びバッファメモリ１１４を接続し、ホスト装置２００とキャッシュメモリ１３０との間でキャッシュメモリ１１４を介して行われるＤＭＡ転送のバス調停を行う。
【００３６】
次に、図４を参照しながら、本実施例におけるＤＭＡ転送処理の流れを説明する。
【００３７】
ローカルメモリ１１３は、データ転送パラメータ７０１を格納するパラメータ格納領域９０１、ステータス７０２を格納するステータスキュー９０２、ステータスキュー９０２に格納されたステータス７０２の数をカウントするステータスキューポインタ９０３などを備える。また、データ転送回路８００とプロセッサ１１２は、ＰＣＩバス８０８を介して接続されている。
【００３８】
プロセッサ１１２は、ＤＭＡ転送の準備段階として、ローカルメモリ１１３のパラメータ格納領域９０１にデータ転送パラメータ７０１を格納する。データ転送パラメータ７０１には、ホスト装置２００からキャッシュメモリ１３０へのＤＭＡ転送を指示するライトコマンド（ＷＲ）や、キャッシュメモリ１３０からホスト装置２００へのＤＭＡ転送を指示するリードコマンド（ＲＤ）が含まれる。プロセッサ１１２は、一度に複数のデータ転送パラメータ７０１をセットすることもできる。
【００３９】
プロセッサ１１２は、ローカルメモリ１１３へのデータ転送パラメータ７０１のセットが完了すると、データ転送回路８００に起動指示を与える。すると、ＰＦ／ＳＴ回路８０１は、ＰＣＩバス８０８を介してローカルメモリ１１３にアクセスし、一度のバスアクセスで複数のデータ転送パラメータ７０１をフェッチする。フェッチされたそれぞれのデータ転送パラメータ７０１は、ＰＦ／ＳＴ格納メモリ８０２に格納される。ＤＭＡ転送回路８０３は、ＰＦ／ＳＴ格納メモリ８０２に格納されたデータ転送パラメータ７０１を読み取って、ＤＭＡ転送を行う。ＤＭＡ転送回路８０３におけるＤＭＡ転送は、必ずしもＰＦ／ＳＴ回路８０１が１回のバスアクセスでフェッチする複数のデータ転送パラメータ７０１のフェッチが全て完了するまで待つ必要はなく、フェッチ済みのデータ転送パラメータ７０１から順次、ＤＭＡ転送を行うように構成するのが望ましい。これにより、ＰＦ／ＳＴ回路８０１がデータ転送パラメータ７０１をフェッチしている最中に、ＤＭＡ転送回路８０３はＤＭＡ転送を行うことができるので、ＤＭＡ転送が完了するまでの時間を短縮できる。
【００４０】
次に、図５を参照しつつ、本実施例のＤＭＡサイクルについて、シーケンシャル方式のＤＭＡサイクルと比較しながら説明を加える。Ｓ１０１〜Ｓ１１１は、本実施例のＤＭＡサイクルを示し、Ｓ２０１〜Ｓ２１４は、シーケンシャル方式のＤＭＡサイクルを示す。ここでは、説明の便宜上、ローカルメモリ１１３には、ホスト装置２００からキャッシュメモリ１３０へのＤＭＡ転送を指示するデータ転送パラメータ（ＷＲ０）と、キャッシュメモリ１３０からホスト装置２００へのＤＭＡ転送を指示するデータ転送パラメータ（ＲＤ０）の二つのデータ転送パラメータ７０１が格納されている場合を例示する。
【００４１】
まず、本実施例のＤＭＡサイクルについて説明する。ＰＦ／ＳＴ回路８０１は、プロセッサ１１２から起動指示を受けると、ＰＣＩバス調停を経て（Ｓ１０１）、ローカルメモリ１３０からデータ転送パラメータ（ＷＲ０）をフェッチする（Ｓ１０２）。続いて、ＰＦ／ＳＴ回路８０１は、データ転送パラメータ（ＲＤ０）をフェッチし（Ｓ１０３）、ＰＣＩバス調停を経て（Ｓ１０４）、ＰＣＩバスサイクルを一旦終了する。
【００４２】
一方、ＤＭＡ転送回路８０３は、ＰＦ／ＳＴ回路８０１がデータ転送パラメータ（ＷＲ０）のフェッチを完了した段階で、データ転送パラメータ（ＷＲ０）に基づくＤＭＡ転送を開始する（Ｓ１０５）。ＤＭＡ転送回路８０３がＤＭＡ転送を始めた時点で、ＰＦ／ＳＴ回路８０１は、次のデータ転送パラメータ（ＲＤ０）のフェッチを開始しているので（Ｓ１０３）、データ転送パラメータ（ＲＤ０）のフェッチ処理（Ｓ１０３）と、データ転送パラメータ（ＷＲ０）に基づくＤＭＡ転送処理（Ｓ１０５）は、同時に実行される。ＤＭＡ転送回路８０３は、データ転送パラメータ（ＷＲ０）に基づくＤＭＡ転送処理（Ｓ１０５）が終了すると、ＤＭＡ完了を示すステータス（ＷＲ０）を生成し、これをＰＦ／ＳＴ格納メモリ８０２に格納する（Ｓ１０６）。更に、ＤＭＡ転送回路８０３は、ＰＦ／ＳＴ回路８０１がデータ転送パラメータ（ＲＤ０）のフェッチを完了した段階で、データ転送パラメータ（ＲＤ０）に基づくＤＭＡ転送を開始する（Ｓ１０７）。
【００４３】
データ転送パラメータ（ＲＤ０）に基づくＤＭＡ転送処理（Ｓ１０７）が終了すると、ＰＦ／ＳＴ回路８０１は、ＰＣＩバス調停を経て（Ｓ１０８）、データ転送パラメータ（ＷＲ０）に基づくＤＭＡ転送処理の完了を示すステータス（ＷＲ０）をローカルメモリ１１３に格納する（Ｓ１０９）。続いて、ＰＦ／ＳＴ回路８０１は、データ転送パラメータ（ＲＤ０）に基づくＤＭＡ転送処理の完了を示すステータス（ＲＤ０）をローカルメモリ１１３に格納し（Ｓ１１０）、ＰＣＩバス調停を経て（Ｓ１１１）、ＰＣＩバスサイクルを終了する。
【００４４】
次に、シーケンシャル方式のＤＭＡサイクルについて説明する。この方式では、ＰＣＩバス調停を経て（Ｓ２０１）、データ転送パラメータ（ＷＲ０）をフェッチし（Ｓ２０２）、その後、ＰＣＩバス調停を経て、ＰＣＩバスサイクルを終了する（Ｓ２０３）。次に、データ転送パラメータ（ＷＲ０）に基づくＤＭＡ転送が行われる（Ｓ２０４）。このＤＭＡ転送が終了すると、再び、ＰＣＩバス調停を経て（Ｓ２０５）、データ転送パラメータ（ＷＲ０）に基づくＤＭＡ転送の完了を示すステータス（ＷＲ０）をローカルメモリに格納し（Ｓ２０６）、ＰＣＩバス調停を経て、ＰＣＩバスサイクルを終了する（Ｓ２０７）。次のデータ転送パラメータ（ＲＤ０）のフェッチ、ＤＭＡ転送、ステータスストアについても、同様のシーケンスを経て、ＤＭＡサイクルが行われる（Ｓ２０８〜Ｓ２１４）。
【００４５】
本実施例によれば、１回のバスアクセスで、複数のデータ転送パラメータをフェッチしてＤＭＡ転送を行うので、データ転送パラメータをフェッチする都度にバスアクセスを実行するシーケンシャル方式と比較して、バスネックを解消できる。また、１回のバスアクセスで、複数のステータスをローカルメモリに格納することにより、バスネックを解消できる。また、データ転送回路８００のハードウェアアーキテクチャの一部を設計変更するだけでよいので、回路規模の増大を抑制できる。また、本実施例のデータ転送回路８００は、従来のマイクロプログラムで動作可能なので、設計変更が最小限で済む。
【実施例２】
【００４６】
次に、図６を参照しながら、本実施例におけるＤＭＡ転送処理の流れを説明する。図４に示した符号と同一符号のリソースは、同一のリソースを示すものとして、その詳細な説明を省略する。
【００４７】
ＤＭＡ転送回路８０３は、ホスト装置２００からバッファメモリ１１４へＤＭＡ転送を行うインターフェース８０３Ａ、バッファメモリ１１４からキャッシュメモリ１３０へＤＭＡ転送を行うインターフェース８０３Ｃ、キャッシュメモリ１３０からバッファメモリ１１４へＤＭＡ転送を行うインターフェース８０３Ｄ、バッファメモリ１１４からホスト装置２００へＤＭＡ転送を行うインターフェース８０３Ｂを備える。ホスト装置２００からキャッシュメモリ１３０にライトデータをＤＭＡ転送するには、インターフェース８０３Ａ，８０３Ｃを動作させる。一方、キャッシュメモリ１３０からホスト装置２００にリードデータをＤＭＡ転送するには、インターフェース８０３Ｄ，８０３Ｂを動作させる。
【００４８】
インターフェース８０３Ａ，８０３Ｂは、バッファメモリ１１４に接続するバス１１５を共有しているので、何れか一方が動作しているときには、他方は動作することができない。つまり、インターフェース８０３Ａ，８０３Ｂは、排他的に動作する。同様に、インターフェース８０３Ｃ，８０３Ｄは、バッファメモリ１１４に接続するバス１１６を共有しているので、何れか一方が動作しているときには、他方は動作することができない。つまり、インターフェース８０３Ｃ，８０３Ｄは、排他的に動作する。
【００４９】
但し、インターフェース８０３Ａ，８０３Ｄはそれぞれ異なるバス１１５，１１６を介してバッファメモリ１１４に接続しているので、互いに干渉することなく、同時に動作することが可能である。同様に、インターフェース８０３Ｂ，８０３Ｃはそれぞれ異なるバス１１５，１１６を介してバッファメモリ１１４に接続しているので、互いに干渉することなく、同時に動作することが可能である。
【００５０】
本実施例のＤＭＡ回路８０３は、上述の構成を備えることにより、ホスト装置２００からキャッシュメモリ１３０へのＤＭＡ転送と、キャッシュメモリ１３０からホスト装置２００へのＤＭＡ転送を同時に実行することができる。つまり、双方向データ転送が可能になる。
【００５１】
次に、図７を参照しつつ、本実施例のＤＭＡサイクルについて、実施例１のＤＭＡサイクルと比較しながら説明を加える。Ｓ３０１〜Ｓ３１２は、本実施例のＤＭＡサイクルを示し、Ｓ１０１〜Ｓ１１１は、実施例１のＤＭＡサイクルを示す。ここでは、説明の便宜上、ローカルメモリ１１３には、ホスト装置２００からキャッシュメモリ１３０へのＤＭＡ転送を指示するデータ転送パラメータ（ＷＲ０）と、キャッシュメモリ１３０からホスト装置２００へのＤＭＡ転送を指示するデータ転送パラメータ（ＲＤ０）の二つのデータ転送パラメータ７０１が格納されている場合を例示する。
【００５２】
本実施例のＤＭＡサイクルでは、ＰＦ／ＳＴ回路８０１は、プロセッサ１１２から起動指示を受けると、ＰＣＩバス調停を経て（Ｓ３０１）、ローカルメモリ１３０からデータ転送パラメータ（ＷＲ０）をフェッチする（Ｓ３０２）。続いて、ＰＦ／ＳＴ回路８０１は、データ転送パラメータ（ＲＤ０）をフェッチし（Ｓ３０３）、ＰＣＩバス調停を経て（Ｓ３０４）、ＰＣＩバスサイクルを一旦終了する。ＰＦ／ＳＴ回路８０１は、フェッチしたデータ転送パラメータ（ＷＲ０）、及びデータ転送パラメータ（ＲＤ０）を、それぞれライトコマンドとリードコマンドに分けて、ＰＦ／ＳＴ格納メモリ８０２に格納する。
【００５３】
一方、ＤＭＡ転送回路８０３は、ＰＦ／ＳＴ回路８０１がデータ転送パラメータ（ＷＲ０）のフェッチを完了した段階で、インターフェース８０３Ａを動作させ、ホスト装置２００からバッファメモリ１１４へのＤＭＡ転送を開始する（Ｓ３０５）。上述の如く、インターフェース８０３Ａ，８０３Ｄは同時に動作することができるので、インターフェース８０３Ａが仮に動作中であったとしても、データ転送パラメータ（ＲＤ０）のフェッチが完了した段階で、インターフェース８０３Ｄは、キャッシュメモリ１３０からバッファメモリ１１４へのＤＭＡ転送を開始する（Ｓ３０６）。
【００５４】
その後、ホスト装置２００からバッファメモリ１１４へのＤＭＡ転送が完了したとしても、インターフェース８０３Ｄが動作している間は、バス１１６はインターフェース８０３Ｄによって占有されているので、インターフェース８０３Ｃを動作させることができない。インターフェース８０３Ｃは、インターフェース８０３ＤのＤＭＡ転送が完了し、バス１１６が開放されるのを待って、バッファメモリ１１４からキャッシュメモリ１３０へのＤＭＡ転送を開始する（Ｓ３０７）。同様に、インターフェース８０３Ｂは、インターフェース８０３ＡがＤＭＡ転送を行っている間は、バス１１５がインターフェース８０３Ａによって占有されているので、ＤＭＡ転送を実行することができない。インターフェース８０３Ｂは、インターフェース８０３ＡのＤＭＡ転送が完了し、バス１１５が開放されるのを待って、バッファメモリ１１４からホスト装置２００へのＤＭＡ転送を開始する（Ｓ３０８）。
【００５５】
上述したシーケンスを経て、ホスト装置２００からキャッシュメモリ１３０へのＤＭＡ転送（Ｓ３０５，Ｓ３０７）と、キャッシュメモリ１３０からホスト装置２００へのＤＭＡ転送（Ｓ３０６，Ｓ３０８）とが完了すると、ＰＦ／ＳＴ回路８０１は、ＰＣＩバス調停を経て（Ｓ３０９）、ステータス（ＷＲ０）をローカルメモリ１１３に格納する（Ｓ３１０）。続いて、ＰＦ／ＳＴ回路８０１は、ステータス（ＲＤ０）をローカルメモリ１１３に格納し（Ｓ３１１）、ＰＣＩバス調停を経て（Ｓ３１２）、ＰＣＩバスサイクルを終了する。
【００５６】
次に、図８を参照しながら、ＤＭＡ転送回路８０３とバッファメモリ１１４との間のバス調停について説明を加える。ＤＭＡ転送回路８０３は、バッファインターフェース８０７を介してバッファメモリ１１４に接続している。上述したバス１１５はバス１１５Ａ，１１５Ｂから成る。バス１１５Ａは、インターフェース８０３Ａとインターフェース８０３Ｂのうち、バッファインターフェース８０７によって排他的に選択された何れか一方とバッファインターフェース８０７とを接続する。バス１１５Ｂは、バッファインターフェース８０７とバッファメモリ１１４とを接続する。同様に、バス１１６はバス１１６Ａ，１１６Ｂから成る。バス１１６Ａは、インターフェース８０３Ｃとインターフェース８０３Ｄのうち、バッファインターフェース８０７によって排他的に選択された何れか一方とバッファインターフェース８０７とを接続する。バス１１６Ｂは、バッファインターフェース８０７とバッファメモリ１１４とを接続する。
【００５７】
さて、ホスト装置２００からキャッシュメモリ１３０へのＤＭＡ転送と、キャッシュメモリ１３０からホスト装置２００へのＤＭＡ転送とが同時に実行される場合における、バッファインターフェース８０７のバス調停について説明する。ホスト装置２００からキャッシュメモリ１３０へのライトデータのＤＭＡ転送を行うには、まず、インターフェース８０３Ａからバッファメモリ１１４へのライトデータのＤＭＡ転送要求がバス１１５Ａを通じてバッファインターフェース８０７に送信される。このとき、バス１１５Ｂは開放されているので、バッファインターフェース８０７は、インターフェース８０３Ａによるバッファメモリ１１４へのライトデータのＤＭＡ転送要求を許可する。すると、インターフェース８０３Ａは、ホスト装置２００からバッファメモリ１１４へのライトデータのＤＭＡ転送を実行する。
【００５８】
一方、キャッシュメモリ１３０からホスト装置２００へのリードデータのＤＭＡ転送を行うには、まず、インターフェース８０３Ｄからバッファメモリ１１４へリードデータのＤＭＡ転送要求がバス１１６Ａを通じてバッファインターフェース８０７に送信される。バス１１６Ｂは開放されているので、バッファインターフェース８０７は、インターフェース８０３Ｄによるバッファメモリ１１４へのリードデータのＤＭＡ転送要求を許可する。すると、インターフェース８０３Ｄは、キャッシュメモリ１３０からバッファメモリ１１４へのリードデータのＤＭＡ転送を実行する。
【００５９】
その後、インターフェース８０３Ｄによる、キャッシュメモリ１３０からバッファメモリ１１４へのリードデータのＤＭＡ転送が完了する。この状態では、バス１１６Ａ，１１６Ｂは開放されている。インターフェース８０３Ｂからホスト装置２００へのリードデータのＤＭＡ転送要求がバス１１５Ａを通じてバッファインターフェース８０７に送信される。しかし、この時点では、インターフェース８０３Ａによる、ホスト装置２００からバッファメモリ１１４へのライトデータのＤＭＡ転送を行っている最中なので、インターフェース８０３Ｂは、バス１１５Ａ，１１５Ｂが開放されるまで待つ。
【００６０】
その後、インターフェース８０３Ａによる、ホスト装置２００からバッファメモリ１１４へのライトデータのＤＭＡ転送が完了すると、バス１１５Ａ，１１５Ｂは開放されるので、バッファインターフェース８０７は、インターフェース８０３Ｂによるバッファメモリ１１４からホスト装置２００へのリードデータのＤＭＡ転送要求を許可する。すると、インターフェース８０３Ｂは、バッファメモリ１１４からホスト装置２００へのリードデータのＤＭＡ転送を実行する。
【００６１】
一方、インターフェース８０３Ｃからキャッシュメモリ１３０へのライトデータのＤＭＡ転送要求がバス１１６Ａを通じてバッファインターフェース８０７に送信される。この時点で、バス１１６Ａ，１１６Ｂは開放されているので、バッファインターフェース８０７は、インターフェース８０３Ｃによる、バッファメモリ１１４からキャッシュメモリ１３０へのライトデータのＤＭＡ転送要求を許可する。すると、インターフェース８０３Ｃは、バッファメモリ１１４からキャッシュメモリ１３０へのライトデータのＤＭＡ転送を実行する。
【００６２】
その後、インターフェース８０３Ｂによる、バッファメモリ１１４からホスト装置２００へのリードデータのＤＭＡ転送が完了する。また、インターフェース８０３Ｃによる、バッファメモリ１１４からキャッシュメモリ１３０へのライトデータのＤＭＡ転送も完了する。
【００６３】
図９は本実施例のＤＭＡ転送におけるシーケンスチャートを示している。同図を参照しながら各部の動作について説明を加える。
【００６４】
プロセッサ１１２は、ローカルメモリ１１３にデータ転送パラメータ（ＷＲ０／ＲＤ０／ＷＲ１／ＲＤ１）をセットし（Ｓ４０１）、ＰＩＰ（Parameter In Pointer）に４を代入して、ＰＦ／ＳＴ回路８０１に起動指示を与える（Ｓ４０２）。ＰＩＰは、プロセッサ１１２がローカルメモリ１１３にセットしたデータ転送パラメータの個数を示すポインタである。
【００６５】
すると、ＰＦ／ＳＴ回路８０１は、ＰＩＰとＰＯＰ（Parameter Out Pointer）とを比較する。ＰＯＰは、ＰＦ／ＳＴ回路８０１がローカルメモリ１１３からフェッチしたデータ転送パラメータの個数を示すポインタである。ＤＭＡ転送の初期段階においては、ＰＯＰ＝０なので、ＰＩＰ≠ＰＯＰとなる。そこで、ＰＦ／ＳＴ回路８０１は、ローカルメモリ１１３からデータ転送パラメータのフェッチを行い（Ｓ４０３）、データ転送パラメータ（ＷＲ０／ＲＤ０）をＰＦ／ＳＴ格納メモリ１１３に格納する（Ｓ４０４）。
【００６６】
すると、ＤＭＡ転送回路８０３が起動し、インターフェース８０３Ａを通じて、ホスト装置２００からバッファメモリ１１４へライトデータがＤＭＡ転送される（Ｓ４０５）。また、インターフェース８０３Ｄを通じて、キャッシュメモリ１３０からバッファメモリ１１４へリードデータがＤＭＡ転送される（Ｓ４０６）。
【００６７】
一方、ＰＦ／ＳＴ回路８０１は、ＤＭＡ転送回路８０３によるＤＭＡ転送とは非同期にデータ転送パラメータ（ＷＲ１／ＲＤ１）をフェッチし、これをＰＦ／ＳＴ格納メモリ１１３に格納する（Ｓ４０７）。
【００６８】
ライトデータのバッファメモリ１１４へのＤＭＡ転送が終了すると、インターフェース８０３Ｃを通じて、バッファメモリ１１４からキャッシュメモリ１３０へのＤＭＡ転送が行われる（Ｓ４０８）。また、リードデータのバッファメモリ１１４へのＤＭＡ転送が終了すると、インターフェース８０３Ｂを通じて、バッファメモリ１１４からホスト装置２００へのＤＭＡ転送が行われる（Ｓ４０９）。
【００６９】
データ転送パラメータ（ＷＲ０／ＲＤ０）に基づくＤＭＡ転送が終了すると、ＰＦ／ＳＴ格納メモリ８０２にステータスＳＴ（ＷＲ０）／ＳＴ（ＲＤ０）が格納され（Ｓ４１０）、ＳＱＰ（Status Queue Pointer）＝２となる。ＳＱＰは、ステータスの数を示すポインタである。
【００７０】
次に、データ転送パラメータ（ＷＲ１／ＲＤ１）に基づくＤＭＡ転送が実行され、インターフェース８０３Ａを通じて、ホスト装置２００からバッファメモリ１１４へライトデータがＤＭＡ転送される（Ｓ４１１）。また、インターフェース８０３Ｄを通じて、キャッシュメモリ１３０からバッファメモリ１１４へリードデータがＤＭＡ転送される（Ｓ４１２）。
【００７１】
ライトデータのバッファメモリ１１４へのＤＭＡ転送が終了すると、インターフェース８０３Ｃを通じて、バッファメモリ１１４からキャッシュメモリ１３０へのＤＭＡ転送が行われる（Ｓ４１３）。また、リードデータのバッファメモリ１１４へのＤＭＡ転送が終了すると、インターフェース８０３Ｂを通じて、バッファメモリ１１４からホスト装置２００へのＤＭＡ転送が行われる（Ｓ４１４）。
【００７２】
データ転送パラメータ（ＷＲ１／ＲＤ１）に基づくＤＭＡ転送が終了すると、ＰＦ／ＳＴ格納メモリ８０２にステータスＳＴ（ＷＲ１）／ＳＴ（ＲＤ１）が格納される（Ｓ４１５）。次に、ローカルメモリ１１３にステータスＳＴ（ＷＲ０，ＲＤ０，ＷＲ１，ＲＤ１）が格納され（Ｓ４１６）、ＳＱＰ＝４となる（Ｓ４１７）。
【００７３】
プロセッサ１１２は、ローカルメモリ１１３にデータ転送パラメータ（ＷＲ０／ＲＤ０／ＷＲ１／ＲＤ１）をセットした後は、ＳＱＰ＝４となるまで定期的にポーリングしていればよいので（Ｓ４１８）、他のタスク処理（例えば、次のデータ転送パラメータの準備、他のプロセッサとの通信、障害診断等）に従事することができる。
【００７４】
本実施例によれば、ローカルメモリ１１３からフェッチしたデータ転送パラメータをライトコマンドとリードコマンドに分けてＰＦ／ＳＴ格納メモリ８０２に格納し、ＤＭＡ転送回路８０３においてライトコマンドとリーコマンドを同時に実行することにより、ＤＭＡ転送効率の向上を実現できる。
【図面の簡単な説明】
【００７５】
【図１】実施例１のストレージシステムのハードウェア構成図である。
【図２】実施例１のチャネル制御部のハードウェア構成図である。
【図３】実施例１のデータ転送回路のハードウェア構成図である。
【図４】実施例１のＤＭＡ転送の処理の流れを示す図である。
【図５】実施例１のＤＭＡサイクルの説明図である。
【図６】実施例２のＤＭＡ転送の処理の流れを示す図である。
【図７】実施例２のＤＭＡサイクルの説明図である。
【図８】実施例２のバッファインターフェースにおけるバス調停の説明図である。
【図９】実施例２のＤＭＡ転送のシーケンスチャートである。
【符号の説明】
【００７６】
１１２…プロセッサ  １１３…ローカルメモリ  １３０…キャッシュメモリ  ２００…ホスト装置  ７０１…データ転送パラメータ  ７０２…ステータス  ８００…データ転送回路  ８０１…ＰＦ／ＳＴ回路  ８０２…ＰＦ／ＳＴ格納メモリ  ８０３…ＤＭＡ転送回路  ８０８…ＰＣＩバス
【図１】
2006323541.tif 000003
【図２】
2006323541.tif 000004
【図３】
2006323541.tif 000005
【図４】
2006323541.tif 000006
【図５】
2006323541.tif 000007
【図６】
2006323541.tif 000008
【図７】
2006323541.tif 000009
【図８】
2006323541.tif 000010
【図９】
2006323541.tif 000011