(57)【要約】【課題】優先度の高いデータ転送がある場合でも、それ以前にプロセッサがＤＭＡ制御回路に対して出したディスクリプタが全て実行された後でないと優先度の高いデータ転送が行なわれない。【解決手段】Ｉ／Ｏコントローラ４にＤＭＡ制御回路６を備え、プロセッサ１はメモリ３にそれぞれ異なる優先度の複数のディスクリプタ領域を設定し、ＤＭＡ制御回路６にプロセッサ１がメモリ３に用意したディスクリプタをフェッチするディスクリプタフェッチ回路１１と、ディスクリプタフェッチ回路１１に対しＤＭＡ転送の指示情報を出力する複数組のＤＭＡ転送制御指示部３０、３１を備え、ディスクリプタフェッチ回路１１は複数組のＤＭＡ転送制御指示部３０、３１の出力を基に優先度の高いディスクリプタを優先してフェッチする機能を有し、ＤＭＡ制御回路６ではディスクリプタフェッチ回路１１がフェッチしたディスクリプタに基づいてデータ転送制御を行う。【選択図】  図１
2005258509.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータに接続され、ディスク装置との間でデータ転送を行うストレージ装置において、
プロセッサと、メモリと、前記ディスク装置の制御を行うＩ／Ｏコントローラを有し、該Ｉ／Ｏコントローラには専用のハードウェアにより、前記プロセッサからの命令に基づき前記メモリとディスク装置間のデータ転送制御を行うＤＭＡ制御回路を備え、
前記プロセッサは、前記メモリにそれぞれ異なる優先度の複数のディスクリプタ領域を設定する機能を有し、
前記ＤＭＡ制御回路には、前記プロセッサが前記メモリに用意したディスクリプタをフェッチするディスクリプタフェッチ回路と、
前記ディスクリプタフェッチ回路に対し、ＤＭＡ転送の指示情報を出力する複数組のＤＭＡ転送制御指示部を備え、
前記ディスクリプタフェッチ回路は、前記複数組のＤＭＡ転送制御指示部の出力を基に、優先度の高いディスクリプタを優先してフェッチする機能を有し、前記ＤＭＡ制御回路ではディスクリプタフェッチ回路がフェッチしたディスクリプタに基づいてデータ転送制御を行う機能を備えていることを特徴とするストレージ装置。
【請求項２】
ホストコンピュータに接続され、ディスク装置との間でデータ転送を行うストレージ装置において、
データを蓄積するためのディスク装置と、
ストレージ装置の制御を行うストレージ制御部を有し、
前記ストレージ制御部には、各種制御を行うプロセッサと、メモリと、該メモリの制御を行うメモリコントローラと、前記ディスク装置の制御を行うＩ／Ｏコントローラを有し、該Ｉ／Ｏコントローラには専用のハードウェアにより、前記プロセッサ命令に基づき前記メモリとディスク装置間のデータ転送制御を自動的に行うＤＭＡ制御回路を備え、
前記プロセッサは、前記メモリコントローラを介して前記メモリにそれぞれ異なる優先度の複数のディスクリプタ領域を設定する機能を有し、
前記ＤＭＡ制御回路には、
前記プロセッサが前記メモリに用意したディスクリプタをフェッチするディスクリプタフェッチ回路と、
前記ディスクリプタフェッチ回路に対し、ＤＭＡ転送の指示情報を出力する複数組のＤＭＡ転送制御指示部を備えると共に、
前記ディスクリプタフェッチ回路により、前記メモリからフェッチしたディスクリプタを一時的に格納するディスクリプタバッファと、
前記ディスクリプタバッファのディスクリプタを解析するステートマシンと、
前記ステートマシンの解析結果に基づき、前記メモリとディスク装置の間でのデータ転送制御を行うデータ転送制御部とを備え、
前記ディスクリプタフェッチ回路は、前記複数組のＤＭＡ転送制御指示部の出力を基に、優先度の高いディスクリプタから順にフェッチする機能を有し、
前記データ転送制御部は、前記ディスクリプタフェッチ回路がフェッチしたディスクリプタに基づいて前記メモリとディスク装置の間でのデータ転送制御を行う機能を備えていることを特徴とするストレージ装置。
【請求項３】
前記ディスクリプタフェッチ回路に、
前記プロセッサがアービトレーション方法を選択するための情報を設定するアービトレーション方法選択レジスタと、
固定優先度のアービトレーション方法を選択するための固定優先度アービトレーション回路と、
重み付けした情報によりアービトレーションを選択するための重み付けラウンドロビンアービトレーション回路と、
前記アービトレーション方法選択レジスタの情報に基づいて、前記固定優先度アービトレーション回路の出力と、前記重み付けラウンドロビンアービトレーション回路の出力の何れか一方の出力を選択し、選択した方の出力をフェッチ選択信号として出力するセレクタとを備え、
前記ディスクリプタフェッチ回路は、前記セレクタから出力されたフェッチ選択信号に基いて前記メモリからディスクリプタをフェッチする機能を備えていることを特徴とする請求項１又は２記載のストレージ装置。
【請求項４】
前記ＤＭＡ転送制御指示部は、
前記プロセッサがメモリ上に幾つディスクリプタを用意したかを示すポインタとして機能するＴＯＰレジスタと、前記プロセッサがメモリ上のどのアドレスにディスクリプタを配置するかを設定するＢＡＳＥレジスタと、ＤＭＡ制御回路が幾つディスクリプタの処理を終えたかを示すポインタとして機能するＢＴＭレジスタを備えると共に、
前記ＴＯＰレジスタの値と前記ＢＴＭレジスタの値を比較して監視する比較回路と、
前記ＢＡＳＥレジスタの値とＢＴＭレジスタの値を加算する加算回路を備え、前記比較回路の出力と加算回路の出力をディスクリプタフェッチ回路へ出力する構成であり、
前記ＴＯＰレジスタと、ＢＡＳＥレジスタと、ＢＴＭレジスタと、比較回路と、加算回路を含めて１組のＤＭＡ転送制御指示部を構成し、このＤＭＡ転送制御指示部の組を複数組備えていることを特徴とする請求項１又は２又は３記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストコンピュータに接続され、ディスク装置との間でデータ転送を行うストレージ装置に関するものである。特に、コンピュータシステムにおけるデータ転送の効率化を図ったＤＭＡ（Direct Memory Access）制御回路を有するストレージ装置に関し、更に詳細には、１つのＤＭＡ制御回路で優先度の異なるデータ転送制御を行うＤＭＡ制御回路を有するストレージ装置に関する。
【背景技術】
【０００２】
(1) ：従来例１の説明
図４は従来のシステム構成図、図５は従来のＤＭＡ制御回路、図６は従来のディスクリプタの一例、図７は従来のＤＭＡ制御回路がディスクリプタを読み出す仕組みを説明する図、図８は従来のＤＭＡ制御回路の制御シーケンス図、図９は従来のマルチプロセッサの説明図である。以下、図４乃至図９に基づいて従来例１を説明する。
【０００３】
(a) ：構成の説明
従来、コンピュータシステムにおいて、メモリとメモリの間、又はメモリとＩ／Ｏデバイスの間のデータ転送を効率良く行うことは、コンピュータシステムの性能を高めるために重要な課題であるが、この課題を解決するための方法として、ＤＭＡ（Direct Memory Access）制御回路が知られている。
【０００４】
これは、コンピュータのＣＰＵが前記コンピュータシステム内のデータ転送を行う代わりに、ＤＭＡ制御回路と呼ばれる専用のハードウェアが、ＣＰＵ等のプロセッサからの命令に基づいてデータ転送を行う仕組みである。ＣＰＵからＤＭＡ制御回路に対する命令は、ディスクリプタと呼ばれ、メモリ上に用意した後、ＤＭＡ制御回路が自身で読み出して参照する方法が広く用いられている。
【０００５】
図４にＤＭＡ制御回路が装備されたコンピュータシステムの一例を示す。この例は、ホストコンピュータ２５に接続され、Ｉ／Ｏデバイス５との間でデータ転送を行うストレージ装置２６の例である。
【０００６】
このストレージ装置２６には、１つ又は複数のＩ／Ｏデバイス５と、ストレージ制御部２７を有し、ストレージ制御部２７には、各種制御を行うプロセッサ１（例えば、ＣＰＵ）と、メモリ３と、該メモリ３の制御を行うメモリコントローラ２と、Ｉ／Ｏデバイス５の制御を行うＩ／Ｏコントローラ４を有し、該Ｉ／Ｏコントローラ４には専用のハードウェアにより、前記プロセッサからの命令に基づいてデータ転送を自動的に行うＤＭＡ制御回路６を備えている。
【０００７】
このように、メモリコントローラ２を中心にプロセッサ１、メモリ３、Ｉ／Ｏコントローラ４が接続され、Ｉ／Ｏコントローラ４はＤＭＡ制御回路６を装備する。また、Ｉ／Ｏコントローラ４には１つ又は複数のＩ／Ｏデバイス５が接続される。この図の例において、ＤＭＡ制御回路６はメモリ３とＩ／Ｏデバイス５間でデータ転送を行う。
【０００８】
図５には、ＤＭＡ制御回路６のブロック図が示されている。ＤＭＡ制御回路６は、Ｉ／Ｏコントローラ４のメモリＩ／Ｆ部（メモリインタフェース部）７を通じてディスクリプタをメモリ３から読み出すディスクリプタフェッチ回路１１、ディスクリプタフェッチ回路１１からディスクリプタを受け取って一時的に保持するディスクリプタバッファ１２、ディスクリプタを解析しデータ転送制御回路１４へデータ転送指示を行うステートマシン１３、ステートマシン１３の指示を受けてメモリＩ／Ｆ部７とＩ／ＯデバイスＩ／Ｆ８を通じてデータ転送を行うデータ転送制御回路１４を備えている。
【０００９】
図６にディスクリプタの一例が図示されている。この例ではディスクリプタは８バイト＊３ワードの長さを持ち、コマンド、フラグ、転送バイト長、転送元アドレス、転送先アドレスから構成される。ここでフラグはＤＭＡの様々な動作を制御するためのビットである。一例として、ＤＭＡ制御回路６に対してデータ転送の終了後に割り込み（ＣＰＵへ終了報告をするための割り込み）を発生させるように指示する。
【００１０】
この場合、転送バイト長は、ＤＭＡ制御回路６に対して、メモリやＩ／Ｏデバイス間で転送するデータ長を指示するためのフィールドである。転送元アドレスは、転送するためのデータを読み出すメモリ又はＩ／Ｏアドレスが指示される。転送先アドレスは、転送データを書き込むためのメモリ又はＩ／Ｏアドレスが指示される。
【００１１】
図７にＤＭＡ制御回路６がディスクリプタを読み出す仕組みを示している。ＤＭＡ制御回路６は、ディスクリプタを参照するためのＢＡＳＥ、ＴＯＰ、ＢＴＭの３つのレジスタを持つ。ＢＡＳＥレジスタ２０は、ＣＰＵ等のプロセッサ１がメモリ３上のどのアドレスにディスクリプタを配置するかを設定する。例えば、このレジスタに設定されたアドレスから１Ｍバイトの領域がディスクリプタ領域として設定される。
【００１２】
ＴＯＰレジスタ１８は、ＣＰＵ等のプロセッサ１がいくつディスクリプタを用意したかを示すポインタであり、図７では６つのディスクリプタが用意されているので、ＣＰＵ等のプロセッサ１によって６つ進められている。ＢＴＭレジスタ１９は、ＤＭＡ制御回路６がいくつディスクリプタの処理を終えたかを示すポインタであり、図７では２つのディスクリプタが処理を完了しているので２つ進められている。
【００１３】
ＤＭＡ制御回路６内では、ＴＯＰレジスタ１８とＢＴＭレジスタ１９の値が比較回路１６によって比較監視され、２つのレジスタの値が異なる時に、ディスクリプタフェッチ回路１１がディスクリプタを読み出す。この時、ディスクリプタを読み出すメモリアドレスは、ＢＡＳＥレジスタ２０とＢＴＭレジスタ１９の値を加算回路１７により加算して得られる。
【００１４】
メモリ３から読み出されたディスクリプタはディスクリプタバッファ１２に格納される。ディスクリプタフェッチ回路１１は、ディスクリプタを読み出すとステートマシン１３にディスクリプタの実行を要求する。ステートマシン１３は、実行要求を受け取ると、ディスクリプタバッファ１２内のディスクリプタを参照し、データ転送制御部１４に要求されたデータ転送処理を実行させる。データ転送が終わると、ＢＴＭレジスタの値を＋１（インクリメント）して、ディスクリプタの実行が終わったことを知らせる。
【００１５】
(b) ：ＤＭＡ制御回路の動作説明
次に、図８のシーケンスを参照しながらＤＭＡ制御回路の動作を説明する。なお、以下の説明では、前記プロセッサ１としてＣＰＵを使用した場合について説明する。
【００１６】
動作(1) ：ＣＰＵ（プロセッサ１）がメモリ３上のディスクリプタで指定するアドレスに転送データを用意する。
【００１７】
動作(2) ：ＣＰＵがメモリ３上の予め決められたアドレスに、図６に示したフォーマットによるライト転送のためのディスクリプタを用意する。
【００１８】
動作(3) ：ＣＰＵがＤＭＡ制御回路６内のＴＯＰポインタ（ＴＯＰレジスタ１８の値）を更新することでＤＭＡ制御回路６を起動する。
【００１９】
動作(4) ：ＤＭＡ制御回路６はＣＰＵからの起動を受けると、予め決められたアドレスからディスクリプタを読み出す。
【００２０】
動作(5) ：ＤＭＡ制御回路６は、読み出したディスクリプタを解析し、ディスクリプタ内に指定された転送元アドレスから、指定されたバイト数のデータを読み出す。データはメモリ３から読み出される場合もあるし、Ｉ／Ｏデバイスから読み出される場合もある。      
【００２１】
動作(6) ：ついで、ＤＭＡ制御回路６は、読み出したデータを、ディスクリプタ内に指定された転送先アドレスに基づいてメモリ３又はＩ／Ｏデバイス５へ転送する。
【００２２】
動作(7) ：ＤＭＡ制御回路６は、データ転送が終了すると、ＢＴＭポインタ（ＢＴＭレジスタ１９の値）を更新し、ディスクリプタ内のフラグの指示に従って、ＣＰＵに対して割り込みを行う。
【００２３】
上記のシーケンスから分かるように、ＣＰＵはディスクリプタを用意してＤＭＡ制御回路６を起動すると、割り込みによって通知が行なわれるまでのデータ転送が行なわれている時間は別の処理を行うことができる。これによってＣＰＵはデータ転送という比較的単純な処理から開放されて、より複雑な処理に時間を割くことができ、システムの性能を向上させることができる。
【００２４】
(c) ：マルチプロセッサシステムの説明
図９にはＡシステムの装置とＢシステムの装置とがあり、これらでマルチプロセッサシステムを構成している。そして、Ａ組とＢ組のシステムには、それぞれ、ＣＰＵ等のプロセッサ１と、メモリ３と、メモリコントローラ２と、Ｉ／Ｏコントローラ４とＩ／Ｏデバイス５が設けてある。なお、図９に示したＡ、Ｂ組のシステムは、それぞれ図４に示したシステムと同じ構成である。
【００２５】
(2) ：従来例２
以下、特許文献１を従来例２として説明する。
【００２６】
従来例２は、チェーン式ＤＭＡ方式及びそのためのＤＭＡコントローラに関するものであり、ディスクリプタ領域を大きくせず、ディスクリプタの読み込み動作量も増大させずに柔軟なチェーンが行なえるようにすることを目的としたものである。
【００２７】
そして従来例２は、ディスクリプタ情報読み込み制御手段と、ディスクリプタ情報を記憶するレジスタ群とを備えるチェーン式ＤＭＡコントローラであって、レジスタ群は次のディスクリプタ情報の形式を規定するフォーマット指定情報を記憶するフォーマット指定レジスタを備え、ディスクリプタ読み込み制御手段は、フォーマット指定情報に従って次のディスクリプタ情報を読み込むように構成している。
【特許文献１】特開平６−１０３２２５号公報
【発明の開示】
【発明が解決しようとする課題】
【００２８】
(1) ：ＤＭＡ制御回路はデータ転送をＣＰＵ等のプロセッサに代わって行なうことで、ＣＰＵ等のプロセッサの負荷を下げ、システムの処理性能を高めるのに有効であるが、従来例１では、ＣＰＵからＤＭＡ制御回路への命令であるディスクリプタはメモリ上に連続して配置されていて、ＤＭＡ制御回路はそれをＣＰＵから与えられた順に処理する。
【００２９】
そのため、ＣＰＵからＤＭＡ制御回路に対して緊急で行ないたい（優先度の高い）データ転送がある場合でも、それ以前にＣＰＵがＤＭＡ制御回路に対して出した命令（ディスクリプタ）が全て実行された後でないと、優先度の高いデータ転送が行なわれないという課題があった。これは特にＤＭＡの負荷が重くＣＰＵからの命令（ディスクリプタ）が処理されずに溜まってしまった場合に問題となる。
【００３０】
(2) ：一例として、図９のようなマルチプロセッサシステムにおいて、ＤＭＡ制御回路を使用してノード間のデータやメッセージの転送を行なう場合、普通メッセージ転送はデータ転送より高い優先度を求められる。また、メッセージ転送においても、エラー通知のような緊急メッセージ転送は普通処理のメッセード転送より高い優先度が求められる。        
【００３１】
(3) ：前記問題を解決する１つの方法として、ＤＭＡ制御回路を複数用意してそれぞれ異なる優先度を割り当てることが考えられる。データ転送はＣＰＵがより低い優先度のＤＭＡ制御回路に処理を割り当てて実行させ、メッセージ転送をより高い優先度のＤＭＡ制御回路に割り当てて実行させる。
【００３２】
必要であれば、緊急メッセージ転送は更に優先度の高いＤＭＡ制御回路に割り当てて実行させることで、緊急性の処理が優先度の低い処理を待つ間処理されずに放置されることを防ぐことができる。
【００３３】
しかし、この方法では、ＤＭＡ制御回路を必要とされる優先度に合わせて複数持つ必要がある。優先度の高いＤＭＡ制御回路ほど使用頻度が低いのが普通なので、あまり使われない処理のために回路を持つことになり、コストとハードウェアの実装面で問題がある。すなわち、高価なハードウェアを有効に使えないので無駄である。
【００３４】
(4) ：従来例２では、各ディスクリプタ情報が次のディスクリプタ情報の形式を規定するフォーマット指定情報を有するようにし、最初のディスクリプタ情報の読み込み以外は、読み込まれたフォーマット情報に従って次のディスクリプタ情報の読み込みを行うものである。このように従来例２は本発明と異なり、本発明の参考程度の技術にすぎない。
【００３５】
本発明は前記課題を解決し、プロセッサがメモリ上に複数のディスクリプタ領域を設定できるようにし、その内の一つをＤＭＡ制御回路に優先的に実行させることができるようにすることで優先度の高い処理が待たされることなく実行できるようにすることを目的とする。
【課題を解決するための手段】
【００３６】
本発明は前記の目的を達成するため、次のように構成した。
【００３７】
(1) ：ホストコンピュータに接続され、ディスク装置との間でデータ転送を行うストレージ装置において、プロセッサ（例えば、ＣＰＵ）と、メモリ（ＲＡＭ等の書き込み可能なメモリ）と、前記ディスク装置（例えば、磁気ディスク装置）の制御を行うＩ／Ｏコントローラ（例えば、磁気ディスク制御装置）を有し、該Ｉ／Ｏコントローラには専用のハードウェアにより、前記プロセッサからの命令に基づき前記メモリとディスク装置間のデータ転送制御を行うＤＭＡ制御回路を備え、前記プロセッサは、前記メモリにそれぞれ異なる優先度の複数のディスクリプタ領域を設定する機能を有し、前記ＤＭＡ制御回路には、前記プロセッサが前記メモリに用意したディスクリプタをフェッチするディスクリプタフェッチ回路と、前記ディスクリプタフェッチ回路に対し、ＤＭＡ転送の指示情報を出力する複数組のＤＭＡ転送制御指示部を備え、前記ディスクリプタフェッチ回路は、前記複数組のＤＭＡ転送制御指示部の出力を基に、優先度の高いディスクリプタを優先してフェッチする機能を有し、前記ＤＭＡ制御回路ではディスクリプタフェッチ回路がフェッチしたディスクリプタに基づいてデータ転送制御を行う機能を備えていることを特徴とする。      
【００３８】
(2) ：ホストコンピュータに接続され、ディスク装置との間でデータ転送を行うストレージ装置において、データを蓄積するためのディスク装置と、ストレージ装置の制御を行うストレージ制御部を有し、前記ストレージ制御部には、各種制御を行うプロセッサと、メモリと、該メモリの制御を行うメモリコントローラと、前記ディスク装置の制御を行うＩ／Ｏコントローラを有し、該Ｉ／Ｏコントローラには専用のハードウェアにより、前記プロセッサ命令に基づき前記メモリとディスク装置間のデータ転送制御を自動的に行うＤＭＡ制御回路を備え、前記プロセッサは、前記メモリコントローラを介して前記メモリにそれぞれ異なる優先度の複数のディスクリプタ領域を設定する機能を有し、前記ＤＭＡ制御回路には、前記プロセッサが前記メモリに用意したディスクリプタをフェッチするディスクリプタフェッチ回路と、前記ディスクリプタフェッチ回路に対し、ＤＭＡ転送の指示情報を出力する複数組のＤＭＡ転送制御指示部を備えると共に、前記ディスクリプタフェッチ回路により、前記メモリからフェッチしたディスクリプタを一時的に格納するディスクリプタバッファと、前記ディスクリプタバッファのディスクリプタを解析するステートマシンと、前記ステートマシンの解析結果に基づき、前記メモリとディスク装置の間でのデータ転送制御を行うデータ転送制御部とを備え、前記ディスクリプタフェッチ回路は、前記複数組のＤＭＡ転送制御指示部の出力を基に、優先度の高いディスクリプタから順にフェッチする機能を有し、前記データ転送制御部は、前記ディスクリプタフェッチ回路がフェッチしたディスクリプタに基づいて前記メモリとディスク装置の間でのデータ転送制御を行う機能を備えていることを特徴とする。
【００３９】
(3) ：前記(1) 又は(2) のストレージ装置において、前記ディスクリプタフェッチ回路に、前記プロセッサがアービトレーション方法を選択するための情報を設定するアービトレーション方法選択レジスタと、固定優先度のアービトレーション方法を選択するための固定優先度アービトレーション回路と、重み付けした情報によりアービトレーションを選択するための重み付けラウンドロビンアービトレーション回路と、前記アービトレーション方法選択レジスタの情報に基づいて、前記固定優先度アービトレーション回路の出力と、前記重み付けラウンドロビンアービトレーション回路の出力の何れか一方の出力を選択し、選択した方の出力をフェッチ選択信号として出力するセレクタとを備え、前記ディスクリプタフェッチ回路は、前記セレクタから出力されたフェッチ選択信号に基いて前記メモリからディスクリプタをフェッチする機能を備えていることを特徴とする。
【００４０】
(4) ：前記(1) 乃至(3) のいずれかのストレージ装置において、前記ＤＭＡ転送制御指示部は、前記プロセッサがメモリ上に幾つディスクリプタを用意したかを示すポインタとして機能するＴＯＰレジスタと、前記プロセッサがメモリ上のどのアドレスにディスクリプタを配置するかを設定するＢＡＳＥレジスタと、ＤＭＡ制御回路が幾つディスクリプタの処理を終えたかを示すポインタとして機能するＢＴＭレジスタを備えると共に、前記ＴＯＰレジスタの値と前記ＢＴＭレジスタの値を比較して監視する比較回路と、前記ＢＡＳＥレジスタの値とＢＴＭレジスタの値を加算する加算回路を備え、前記比較回路の出力と加算回路の出力をディスクリプタフェッチ回路へ出力する構成であり、前記ＴＯＰレジスタと、ＢＡＳＥレジスタと、ＢＴＭレジスタと、比較回路と、加算回路を含めて１組のＤＭＡ転送制御指示部を構成し、このＤＭＡ転送制御指示部の組を複数組備えていることを特徴とする。
【００４１】
（作用）
以下、図１に基づいて前記(1) 乃至(4) の作用を説明する。
【００４２】
(a) ：前記(1) の作用
先ず、プロセッサ１がディスクリプタで指定するメモリ３上のアドレスに転送データを用意し、次いで、メモリ３上の予め決められたアドレスに、予め決められたフォーマットによるデータ転送のためのディスクリプタ領域を複数組（例えば、ディスクリプタ領域＃０、ディスクリプタ領域＃１等）を用意する。
【００４３】
次に、プロセッサ１は、ＤＭＡ制御回路６内のポインタ（プロセッサ１がメモリ３上に幾つディスクリプタを用意したかを示すポインタ）を更新することでＤＭＡ制御回路６を起動する。ＤＭＡ制御回路６はプロセッサ１からの起動を受けると、予め決められたメモリ３上のアドレスからディスクリプタを読み出す。
【００４４】
そして、ＤＭＡ制御回路６は、読み出したディスクリプタを解析し、ディスクリプタ内に指定された転送アドレスから、指定されたバイト数のデータを読み出す。前記データはメモリ３から読み出される場合もあるし、ディスク装置２８から読み出される場合もある。次いで、ＤＭＡ制御回路６は読み出したデータを、ディスクリプタ内に指定された転送アドレスに基づいてメモリ３とディスク装置２８間で転送する。
【００４５】
その後、ＤＭＡ制御回路６はデータ転送が終了すると、ポインタ（ＤＭＡ制御回路６が幾つディスクリプタの処理を終えたかを示すポインタ）を更新し、ディスクリプタ内のフラグの指示に従って、プロセッサ１に対して割り込みを行い、データ転送の終了を通知する。
【００４６】
上記のように、プロセッサ１はディスクリプタを用意してＤＭＡ制御回路６を起動すると、割り込みによって終了の通知が行なわれるまでのデータ転送が行なわれている時間は別の処理を行うことができる。これによってプロセッサ１はデータ転送という比較的単純な処理から開放されて、より複雑な処理に時間を割くことができ、システムの性能を向上させることができる。
【００４７】
この場合、プロセッサ１がメモリ３上に複数のディスクリプタ領域を設定できるようにし、その内の一つをＤＭＡ制御回路に優先的に実行させることができる。そのため、優先度の高い処理が待たされることなく実行できる。
【００４８】
(b) ：前記(2) の作用
先ず、プロセッサ１がディスクリプタで指定するメモリ３上のアドレスに転送データを用意し、次いで、メモリ３上の予め決められたアドレスに、予め決められたフォーマットによるデータ転送のためのディスクリプタ領域を複数組（例えば、ディスクリプタ領域＃０、ディスクリプタ領域＃１等）を用意する。
【００４９】
次に、プロセッサ１はＤＭＡ制御回路６内のポインタ（プロセッサ１がメモリ３上に幾つディスクリプタを用意したかを示すポインタ）を更新することでＤＭＡ制御回路６を起動する。ＤＭＡ制御回路６はプロセッサ１からの起動を受けると、予め決められたアドレスからディスクリプタを読み出し、ディスクリプタバッファ１２へ一時格納する。
【００５０】
そして、ＤＭＡ制御回路６のステートマシン１３は、ディスクリプタバッファ１２のディスクリプタを解析し、データ転送制御部１４はディスクリプタ内に指定された転送アドレスから、指定されたバイト数のデータを読み出す。
【００５１】
この場合のデータはメモリ３から読み出される場合もあるし、ディスク装置２８から読み出される場合もある。次いで、ＤＭＡ制御回路６のデータ転送制御部１４は読み出したデータを、ディスクリプタ内に指定された転送アドレスに基づいてメモリ３とディスク装置２８間で転送する。
【００５２】
その後、ＤＭＡ制御回路６は、データ転送が終了すると、ポインタ（ＤＭＡ制御回路６が幾つディスクリプタの処理を終えたかを示すポインタ）を更新し、ディスクリプタ内のフラグの指示に従って、プロセッサ１に対して割り込みを行い、データ転送の終了を通知する。
【００５３】
上記のように、プロセッサ１がメモリ上に複数組のディスクリプタ領域を用意してＤＭＡ制御回路６を起動すると、割り込みによってデータ転送終了の通知が行なわれるまでのデータ転送が行なわれている時間は別の処理を行うことができる。これによってプロセッサ１はデータ転送という比較的単純な処理から開放されて、より複雑な処理に時間を割くことができ、システムの性能を向上させることができる。
【００５４】
この場合、プロセッサ１がメモリ３上に複数のディスクリプタ領域を設定できるようにしており、その内の一つをＤＭＡ制御回路に優先的に実行させることができる。そのため、優先度の高い処理が待たされることなく実行できる。
【００５５】
(c) ：前記(3) の作用
前記(a) 又は(b) の作用を行う際、前記ディスクリプタフェッチ回路１１は、内部のセレクタから出力されたフェッチ選択信号を基いて前記メモリ１からディスクリプタをフェッチする。
【００５６】
このようにして、前記ディスクリプタフェッチ回路１１は、前記複数組のＤＭＡ転送制御指示部３０、３１等の出力を基に、優先度の高いディスクリプタを優先してフェッチする機能を実現でき、前記ＤＭＡ制御回路６ではディスクリプタフェッチ回路１１がフェッチしたディスクリプタに基づいて、前記(a) 又は(b) と同様なデータ転送制御を行うことができる。
【００５７】
この場合にも、前記(a) 又は(b) の作用と同様に、プロセッサ１がメモリ３上に複数組のディスクリプタ領域を設定できるので、その内の一つをＤＭＡ制御回路に優先的に実行させることができる。そのため、優先度の高い処理が待たされることなく実行できる。
【００５８】
(d) ：前記(4) の作用
前記(1) 乃至(3) のいずれかの作用に加え、次のような作用がある。
【００５９】
プロセッサ１は、メモリ３上にディスクリプタを設定する場合、例えば、優先度の低い処理のためのディスクリプタをディスクリプタ領域＃０へ、優先度の高い処理のためのディスクリプタはディスクリプタ領域＃１へ配置し、それぞれのＤＭＡ転送指示部３０、３１等のＴＯＰレジスタの値を、用意したディスクリプタの個数だけ進める。
【００６０】
ＤＭＡ転送指示部３０又は３１内のＴＯＰレジスタと、ＢＴＭレジスタはそれぞれ比較回路によって比較され、不一致の場合はディスクリプタフェッチ回路１１へ読み出し要求が送られる。ディスクリプタフェッチ回路１１は、例えば、第２の比較回路（例えば、＃１）からの要求があれば第２の加算回路（例えば、＃１）の出力するアドレスからディスクリプタを読み出し、前記要求がなく、第１の比較回路からの要求がある場合は、第１の加算回路（例えば、＃０）の出力するアドレスからディスクリプタを読み出す。メモリ３から読み出されたディスクリプタはディスクリプタバッファ１２へ格納される。
【００６１】
ディスクリプタフェッチ回路１１は、ディスクリプタを読み出すとステートマシン１３にディスクリプタの実行を要求する。ステートマシン１３は、実行要求を受け取ると、ディスクリプタバッファ１２内のディスクリプタを解析し、データ転送制御部１４に、要求されたデータ転送処理を実行させる。データ転送処理が終わると、ＤＭＡ転送指示部３０又は３１内のＢＴＭ＃０レジスタ、又はＢＴＭ＃１レジスタの値を＋１して、ディスクリプタの実行が終わったことをプロセッサ１へ通知する。
【００６２】
この場合にも、前記(a) 又は(b) 又は(c) の作用と同様に、プロセッサ１がメモリ３上に複数のディスクリプタ領域を設定できるので、その内の一つをＤＭＡ制御回路６に優先的に実行させることができる。そのため、優先度の高い処理が待たされることなく実行できる。
【発明の効果】
【００６３】
本発明は、前記(1) 乃至(4) の構成により次のような効果がある。
【００６４】
(1) ：１つのＤＭＡ制御回路が複数のディスクリプタ領域を指定でき、その内の１つを優先的に実行することで、優先度の高い処理が待たされることなく実行される。
【００６５】
(2) ：１つのＤＭＡ制御回路が複数のディスクリプタ領域（制御部）を持つことにより、プロセッサ（ＣＰＵ）はあたかも複数のＤＭＡ制御回路があるように、低優先度のデータ転送の間に高優先度のデータ転送を割り込ませて実行させることができ、従来例に見られた高優先度のデータ転送が長時間待たされることが無くなる。また、必要なハードウェアの量は複数のＤＭＡ制御回路を装備するのに比べて少なくて済み、コストと実装の面での優位性がある。
【００６６】
(3) ：プロセッサがメモリ上に複数のディスクリプタ領域を設定できるようにし、その内の一つをＤＭＡ制御回路に優先的に実行させることができる。そのため、優先度の高い処理が待たされることなく実行できる。
【発明を実施するための最良の形態】
【００６７】
以下、本発明を実施するための最良の形態について説明する。
【００６８】
§１：ＤＭＡ制御回路等の概要説明
以下に説明するＤＭＡ制御回路の特徴は次の通りである。
【００６９】
(a) ：メモリ上のディスクリプタを指すためのＴＯＰ、ＢＴＭ、ＢＡＳＥの各レジスタと、比較器、加算器を含むＤＭＡ転送指示部の組を複数組持つ。
【００７０】
(b) ：ＴＯＰレジスタはプロセッサがディスクリプタをメモリに用意したことをＤＭＡ制御回路に知らせるために書き、ＢＴＭレジスタはＤＭＡ制御回路がディスクリプタの実行を終了したことをプロセッサ（ＣＰＵ）に知らせるために値を更新する。
【００７１】
(c) ：ＴＯＰ、ＢＴＭ、ＢＡＳＥの各レジスタに対応してメモリ上にも複数のディスクリプタ領域があり、プロセッサはそれぞれ異なる優先度のデータ転送処理に対するディスクリプタを配置する。
【００７２】
(d) ：各組のＴＯＰとＢＴＭのレジスタの値が一致しなければ実行すべきプロセッサから命令（ディスクリプタ）が存在する。この時ディスクリプタフェッチ回路がディスクリプタを読み出す必要があることを認識する。
【００７３】
(e) ：ディスクリプタフェッチ回路は複数のディスクリプタ制御部によるディスクリプタ読み出し要求の間で、予め定めておいた優先順位（ハードウェアにより予め決めておく）に従って実行する。
【００７４】
(f) ：データ転送回路は、ディスクリプタフェッチ回路が読み出した順にディスクリプタを実行する。
【００７５】
本発明では、１つのＤＭＡ制御回路が複数のディスクリプタ領域（制御部）を持つことにより、プロセッサ（ＣＰＵ）はあたかも複数のＤＭＡ制御回路があるように、低優先度のデータ転送の間に高優先度のデータ転送を割り込ませて実行させることができ、従来例に見られた高優先度のデータ転送が長時間待たされることが無くなる。また、必要なハードウェアの量は複数のＤＭＡ制御回路を装備するのに比べて少なくて済み、コストと実装の面での優位性がある。
【００７６】
§２：具体例による説明
(1) ：ストレージ装置の説明
図１はシステムの説明図である。図１に示したように、ストレージ装置２６は、ホストコンピュータ２５に接続され、ディスク装置２８との間でデータ転送を行うものである。このストレージ装置２６は、データを蓄積するためのディスク装置２８（磁気ディスク装置等）と、ストレージ装置２６の制御を行うストレージ制御部２７を有する。
【００７７】
前記ストレージ制御部２７には、各種制御を行うプロセッサ１（例えば、ＣＰＵ）と、メモリ３と、該メモリ３の制御を行うメモリコントローラ２と、ディスク装置２８の制御を行うＩ／Ｏコントローラ４を有し、該Ｉ／Ｏコントローラ４には専用のハードウェアにより、前記プロセッサからの命令に基づいてデータ転送を自動的に行うＤＭＡ制御回路６を備えている。
【００７８】
また、前記ＤＭＡ制御回路には、メモリ３にプロセッサ１が用意したディスクリプタをフェッチするためのディスクリプタフェッチ回路１１と、ディスクリプタフェッチ回路１１に対し、ＤＭＡ転送の指示情報を出力するＤＭＡ転送指示部３０、３１を複数組（図１の例では、ＤＭＡ転送指示部が２個の例）備える。
【００７９】
また、ディスクリプタフェッチ回路１１により、メモリ３からフェッチしたディスクリプタを一時的に格納するディスクリプタバッファ１２と、ディスクリプタバッファ１２のディスクリプタを解析するステートマシン１３と、ディスクリプタバッファ１２の解析結果に基づき、メモリ３とディスク装置２８の間でデータ転送制御を行うデータ転送制御部１４とを備えている。
【００８０】
そして、前記ディスクリプタフェッチ回路１１は、複数組のＤＭＡ転送指示部３０、３１の出力を基に、優先度の高いディスクリプタから順にフェッチする機能を有し、前記データ転送制御部１４は、ディスクリプタフェッチ回路１１がフェッチしたディスクリプタに基づいてメモリ３とディスク装置２８の間でのデータ転送制御を行う機能を備えている。
【００８１】
(2) ：ＤＭＡ制御回路の構成の説明
図２はＤＭＡ制御回路の説明図である。以下、図１、図２を参照しながらＤＭＡ制御回路の構成を説明する。
【００８２】
図１に示したＤＭＡ転送指示部３０、３１は、それぞれプロセッサ１がメモリ３上に幾つディスクリプタを用意したかを示すポインタとして機能するＴＯＰレジスタと、プロセッサ１がメモリ３上のどのアドレスにディスクリプタを配置するかを設定するＢＡＳＥレジスタと、ＤＭＡ制御回路６が幾つディスクリプタの処理を終えたかを示すポインタとして機能するＢＴＭレジスタを備えている。
【００８３】
また、図２に示したように、ＴＯＰレジスタの値とＢＴＭレジスタの値を比較して監視する比較回路１６と、ＢＡＳＥレジスタの値とＢＴＭレジスタの値を加算する加算回路１７を備え、比較回路１６の出力と加算回路の出力をディスクリプタフェッチ回路１１へ出力する構成であり、ＴＯＰレジスタと、ＢＡＳＥレジスタと、ＢＴＭレジスタと、比較回路１６と、加算回路１７を含めて１組のＤＭＡ転送指示部を構成し、このＤＭＡ転送指示部の組を複数組備えている。
【００８４】
なお、図２に示したＤＭＡ制御回路６の例では、０と１の２組のＢＡＳＥレジスタ、ＴＯＰレジスタ、ＢＴＭレジスタを持ち、それぞれのレジスタによってメモリ３上に別々のアドレスをディスクリプタ領域として指定できるように構成されている。ここでは、ＢＡＳＥレジスタ＃０で指定された領域をディスクリプタ領域＃０、ＢＡＳＥレジスタ＃１で指定された領域をディスクリプタ領域＃１と呼ぶ。
【００８５】
図２の例では、ＴＯＰレジスタ＃０、ＢＴＭレジスタ＃０、ＢＡＳＥレジスタ＃０、比較回路＃０、加算回路＃０を含めた回路は、図１に示したＤＭＡ転送指示部３０を構成する。また、ＴＯＰレジスタ＃１、ＢＴＭレジスタ＃１、ＢＡＳＥレジスタ＃１、比較回路＃１、加算回路＃１を含めた回路は、図１に示したＤＭＡ転送指示部３１を構成する。
【００８６】
(3) ：ＤＭＡ制御回路の一部詳細構成の説明
図３はＤＭＡ制御回路の一部詳細構成の説明図である。図３に示したように、この例では、ＤＭＡ制御回路６内のディスクリプタフェッチ回路１１に、プロセッサ１がアービトレーション方法を選択するための情報を設定するアービトレーション方法選択レジスタ３５と、固定優先度のアービトレーション方法を選択するための固定優先度アービトレーション回路３７と、重み付けした情報によりアービトレーションを選択するための重み付けラウンドロビンアービトレーション回路３８と、アービトレーション方法選択レジスタ３５の情報に基づいて、固定優先度アービトレーション回路３７の出力と、重み付けラウンドロビンアービトレーション回路３８の出力の何れか一方の出力を選択し、選択した方の出力をフェッチ選択信号として出力するセレクタ３６とを備え、ディスクリプタフェッチ回路１１は、セレクタ３６から出力されたフェッチ選択信号に基いてメモリ３からディスクリプタをフェッチする機能を備えている。
【００８７】
なお、図３では、固定優先度アービトレーション回路３７と、重み付けラウンドロビンアービトレーション回路３８には、それぞれ、前記比較回路１６からの出力として、＃０比較回路出力、＃１比較回路出力、＃２比較回路出力の各出力が取り込まれているが、これは、比較回路１６が３個ある場合の例である。従って、図２のように比較回路１６が２個の場合には、＃０比較回路出力と、＃１比較回路出力が取り込まれる。
【００８８】
また、比較回路出力は、例えば、０又は１の出力であり、固定優先度アービトレーション回路３７では、これらの各出力に応じて固定的にフェッチ選択信号が出されるが、重み付けラウンドロビンアービトレーション回路３８では、前記各比較回路出力に対して重み付けした値を取り込んでフェッチ選択信号が出される。
【００８９】
このようなハードウェアを備えれば、アービトレーション方法選択レジスタ３５にプロセッサ１が０又は１の値をセットするだけで、それに合わせてセレクタ３６が、固定優先度アービトレーション回路３７か、又は重み付けラウンドロビンアービトレーション回路３８の出力のいずれかを選択してフェッチ選択信号を出力する。従って、ディスクリプタフェッチ回路１１では、プロセッサ１が選択した方のフェッチ選択信号によりディスクリプタの選択をすることができる。
【００９０】
(4) ：ストレージ装置の動作の説明
以下、図１乃至図３に基づいてストレージ装置の動作を説明する。なお、図４、図５、図６に示した従来例の図は本発明でも同じなので、これらの図も参照しながらストレージ装置の動作を説明する。
【００９１】
ストレージ制御部２７内のプロセッサ１（例えば、ＣＰＵ）は、メモリ３上にディスクリプタを設定する場合、例えば、優先度の低い処理のためのディスクリプタをディスクリプタ領域＃０へ、優先度の高い処理のためのディスクリプタはディスクリプタ領域＃１へ配置し、それぞれのＤＭＡ転送指示部３０、３１等のＴＯＰレジスタを用意したディスクリプタの個数だけ進める。
【００９２】
ＤＭＡ転送指示部３０又は３１内のＴＯＰレジスタと、ＢＴＭレジスタはそれぞれ比較回路１６によって比較され、不一致の場合はディスクリプタフェッチ回路１１へ読み出し要求が送られる。ディスクリプタフェッチ回路１１は、比較回路１６（例えば、＃１）からの要求があれば加算回路１７（例えば、＃１）の出力するアドレスからディスクリプタを読み出し、前記要求がない場合は、加算回路１７（例えば、＃０）の出力するアドレスからディスクリプタを読み出す。メモリ３から読み出されたディスクリプタはディスクリプタバッファ１２へ一時的に格納される。
【００９３】
ディスクリプタフェッチ回路１１は、ディスクリプタを読み出すとステートマシン１３にディスクリプタの実行を要求する。ステートマシン１３は、実行要求を受け取ると、ディスクリプタバッファ１２内のディスクリプタを解析し、データ転送制御部１４に、要求されたデータ転送処理を実行させる。データ転送処理が終わると、ＤＭＡ転送指示部３０又は３１内のＢＴＭレジスタ＃０、又はＢＴＭレジスタ＃１の値を＋１して、ディスクリプタの実行が終わったことをプロセッサ１へ通知する。
【図面の簡単な説明】
【００９４】
【図１】本発明の実施の形態におけるシステムの説明図である。
【図２】実施の形態におけるＤＭＡ制御回路の説明図である。
【図３】実施の形態におけるＤＭＡ制御回路の一部詳細構成の説明図である。
【図４】従来のシステム構成図である。
【図５】従来のＤＭＡ制御回路である。
【図６】従来のディスクリプタの一例である。
【図７】従来のＤＭＡ制御回路がディスクリプタを読み出す仕組みを説明する図である。
【図８】従来のＤＭＡ制御回路の制御シーケンス図である。
【図９】従来のマルチプロセッサの説明図である。
【符号の説明】
【００９５】
１  プロセッサ（ＣＰＵ等）
２  メモリコントローラ
３  メモリ
４  Ｉ／Ｏコントローラ
５  Ｉ／Ｏデバイス
６  ＤＭＡ制御回路
７  メモリＩ／Ｆ（メモリインタフェース）
８  Ｉ／ＯデバイスＩ／Ｆ（入出力デバイスインタフェース）
１１  ディスクリプタフェッチ回路
１２  ディスクリプタバッファ
１３  ステートマシン
１４  データ転送制御回路
１６  比較回路
１７  加算回路
１８  ＴＯＰレジスタ
１９  ＢＴＭレジスタ
２０  ＢＡＳＥレジスタ
２５  ホストコンピュータ
２６  ストレージ装置
２７  ストレージ制御部
２８  ディスク装置
３０、３１  ＤＭＡ転送指示部
３５  アービトレーション方法選択レジスタ
３６  セレクタ
３７  固定優先度アービトレーション回路
３８  重み付けラウンドロビンアービトレーション回路
【図１】
2005258509.tif 000003
【図２】
2005258509.tif 000004
【図３】
2005258509.tif 000005
【図４】
2005258509.tif 000006
【図５】
2005258509.tif 000007
【図６】
2005258509.tif 000008
【図７】
2005258509.tif 000009
【図８】
2005258509.tif 000010
【図９】
2005258509.tif 000011