(57)【要約】【課題】ディスクリプタ方式のＤＭＡコントローラを有する情報処理システムでのバスの使用効率を改善する。【解決手段】ＣＰＵ１がディスクリプタテーブル２１のディスクリプタに有効な情報を書き込む際にバスＢＵＳ上を伝送される信号によって、ＣＰＵによるディスクリプタへの有効な情報の書き込みの検出を書き込み検出部１５が行い、ディスクリプタへの有効な情報の書き込みが検出された後に、ＤＭＡ制御部１１にて対応するチャネルを起動してメモリ４からディスクリプタを読み出してディスクリプタの情報を取得しダイレクトメモリアクセスによるデータ転送処理を行うようにして、ディスクリプタテーブルへのアクセスを１回ですませ、ディスクリプタテーブルに対するポーリング動作をなくし、バスの使用効率を改善する。【選択図】図１
2011197810.tif 000002
【特許請求の範囲】
【請求項１】
外部のメモリからディスクリプタを読み出してデータ転送に係る指示情報を取得し、当該指示情報に従ってダイレクトメモリアクセスによるデータ転送処理を行うＤＭＡ制御部と、
前記メモリ内の前記ディスクリプタに有効な前記指示情報が書き込まれたことを、バス上を伝送される信号に基づいて検出する書き込み検出部とを備え、
前記ディスクリプタへの前記有効な指示情報の書き込みが前記書き込み検出部により検出されると、前記ＤＭＡ制御部が起動することを特徴とするＤＭＡコントローラ。
【請求項２】
前記ディスクリプタは、当該ディスクリプタにおける前記指示情報が有効であるか無効であるかを示す特定のビットを有し、
前記書き込み検出部は、前記特定のビットに対する書き込みを検出することを特徴とする請求項１記載のＤＭＡコントローラ。
【請求項３】
前記書き込み検出部は、前記メモリ内の前記ディスクリプタにアクセスするためのアドレス情報と、前記バス上で行われているアクセスのアドレス情報とを比較するアドレス比較部と、
前記アドレス比較部による比較結果と、前記バス上を伝送されるライトイネーブル信号及びデータとに基づいて、前記ディスクリプタにおける前記指示情報が有効であることを示す値が前記特定のビットに書き込まれたか否かを判定する判定部とを有することを特徴とする請求項２記載のＤＭＡコントローラ。
【請求項４】
前記書き込み検出部は、前記ディスクリプタが有する前記特定のビットに対する書き込み動作によって同じ値が書き込まれるミラービットを有し、当該ミラービットに基づいて前記ディスクリプタに前記有効な指示情報が書き込まれたことを検出することを特徴とする請求項２記載のＤＭＡコントローラ。
【請求項５】
前記ＤＭＡ制御部の起動及び停止を制御する制御ビットを有し、
前記制御ビットは、前記ディスクリプタへの前記有効な指示情報の書き込み検出後に前記ＤＭＡ制御部を起動させるよう設定され、当該ディスクリプタから取得した前記指示情報に応じたデータ転送処理の終了時に前記ＤＭＡ制御部を停止させるよう設定されることを特徴とする請求項１記載のＤＭＡコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセス（ＤＭＡ：Direct Memory Access）によるデータ転送を行うＤＭＡコントローラに関する。
【背景技術】
【０００２】
図６は、従来のＤＭＡコントローラを用いた情報処理システムの構成を示すブロック図である。図６において、１０１はＣＰＵ（Central Processing Unit）、１０２はＤＭＡ（Direct Memory Access）コントローラ、１０３はメモリコントローラ、１０４はメモリである。ＣＰＵ１０１、ＤＭＡコントローラ１０２、及びメモリコントローラ１０３は、バスＢＵＳを介して接続されている。
【０００３】
ＣＰＵ１０１は、供給されるプログラムを実行することで、データの処理や演算を行うとともに、バスＢＵＳを介して接続された機能部を制御する。メモリコントローラ１０３は、外部からの要求に応じてメモリ１０４へのデータの書き込みやメモリ１０４からのデータの読み出しを行う。メモリ１０４は、各種のデータを記憶する。また、メモリ１０４は、ディスクリプタを記憶するものであり、１以上のディスクリプタで構成されるディスクリプタテーブル１０８を有する。
【０００４】
ＤＭＡコントローラ１０２は、ディスクリプタ方式のＤＭＡコントローラであり、外部のディスクリプタから情報を取得して、ＣＰＵ１０１を介さずに行うリソース（装置、デバイス）及びメモリ間等のダイレクトメモリアクセスによるデータ転送を制御する。ディスクリプタは、データ転送の指示情報であり、アドレス情報（転送元アドレス、転送先アドレス）や転送データ情報（転送データ量など）等の情報を含む。
【０００５】
ＤＭＡコントローラ１０２は、ディスクリプタテーブルアドレスレジスタ１０５、スタートビットレジスタ１０６、及び転送処理部１０７を有する。ディスクリプタテーブルアドレスレジスタ１０５には、チャネル番号毎のディスクリプタにアクセスするためのアドレス（メモリアドレス）が格納される。スタートビットレジスタ１０６には、ＤＭＡコントローラ１０２におけるチャネル番号毎のスタートビットが格納される。転送処理部１０７は、ディスクリプタの情報に応じて、ダイレクトメモリアクセスによるデータ転送処理を行う。
【０００６】
ＤＭＡコントローラ１０２は、例えば、スタートビットレジスタ１０６に格納されているスタートビットの値が“１”にセットされると、対応するチャネルを起動して、ディスクリプタの参照（メモリ１０４からのディスクリプタの読み出し）を開始する。ディスクリプタの参照は、ディスクリプタテーブルアドレスレジスタ１０５に格納されているアドレスに基づいて行われ、スタートビットの値が“１”である期間において継続して行われる。なお、ＤＭＡコントローラ１０２は、例えば、スタートビットレジスタ１０６に格納されているスタートビットの値が“０”にリセットされると、対応するチャネルの機能動作を停止する。
【０００７】
ディスクリプタテーブル１０８の各ディスクリプタは、そのデータが有効であるか無効であるかを示すビット（オーナービット）ＯＢ０、ＯＢ１、ＯＢ２、ＯＢ３を有している。本明細書においては、ディスクリプタの情報が有効であればオーナービットの値が“１”にセットされ、無効であれば値が“０”にリセットされるものとする。すなわち、ＣＰＵ１０１がディスクリプタにディスクリプタ情報を書き込み後、そのディスクリプタのオーナービットは“１”にセットされ、ＤＭＡコントローラ１０２がデータ転送を終了後にオーナービットは“０”にリセットされる。
【０００８】
したがって、メモリ１０４から読み出したディスクリプタのオーナービットの値が“１”であれば、転送処理部１０７が、そのディスクリプタから取得した情報に従ってデータ転送処理を行う。一方、メモリ１０４から読み出したディスクリプタのオーナービットの値が“０”のときは、そのディスクリプタの情報は無効であるのでデータ転送処理を行わずに、読み出したディスクリプタは破棄される。
【０００９】
図７は、図６に示したＤＭＡコントローラ１０２の動作を示すフローチャートである。
ＤＭＡコントローラ１０２に電力の供給が開始されるなどして動作が開始されると、ステップＳ３１にて、ＤＭＡコントローラ１０２は、ＣＰＵ１０１によって初期設定が行われる。この初期設定では、例えばディスクリプタにアクセスするためのアドレスがディスクリプタテーブルアドレスレジスタ１０５に設定される。次に、ステップＳ３２にて、ＣＰＵ１０１によりスタートビットレジスタ１０６のスタートビットに“１”が設定されることで、ＤＭＡコントローラ１０２は、対応するチャネルを起動して送信・受信機能に係る動作を開始する。
【００１０】
続いて、ステップＳ３３にて、ＤＭＡコントローラ１０２は、ディスクリプタテーブルアドレスレジスタ１０５に格納されているアドレスに基づいてメモリ１０４からディスクリプタを読み出しディスクリプタ情報を取得する。次に、ステップＳ３４にて、ＤＭＡコントローラ１０２は、取得したディスクリプタ情報において、オーナービットの値が“１”であるか否かを判定する。
【００１１】
ステップＳ３４での判定の結果、オーナービットの値が“１”である場合には、ステップＳ３５にて、ＤＭＡコントローラ１０２は送信・受信動作を開始する。これにより、ＤＭＡコントローラ１０２の転送処理部１０７は、ステップＳ３３において取得されたディスクリプタ情報に従って、リソース（装置、デバイス）及びメモリ間等のダイレクトメモリアクセスによるデータ転送を行う。そして、ディスクリプタ情報に応じたデータ転送が完了すると、ステップＳ３６にて、ＤＭＡコントローラ１０２は送信・受信動作を終了する。次に、ステップＳ３７にて、ＤＭＡコントローラ１０２は、次の転送を行うか否かを判断し、次の転送を行う場合にはステップＳ３３に戻り、次の転送を行わない場合には動作を終了する。なお、次の転送を行うか否かの判断は、例えばＤＭＡコントローラ１０２自体の動作を禁止するビットが設けられており、そのビットが設定されているか否かに基づいて行われる。
【００１２】
ステップＳ３４での判定の結果、オーナービットの値が“１”でない、すなわちオーナービットの値が“０”である場合にはステップＳ３３に戻り、ＤＭＡコントローラ１０２は、メモリ１０４からのディスクリプタの読み出しを行う。すなわち、ＤＭＡコントローラ１０２は、スタートビットが“１”にセットされた後、オーナービットの値が“１”にセットされるまで、メモリ１０４のディスクリプタテーブル１０８に対し、いわゆるポーリング動作を行い、ディスクリプタの読み出しを繰り返し行う。
【００１３】
また、ポインタ情報によって連鎖可能にされた複数のディスクリプタを順次参照しながらデータのチェインブロック転送を制御可能なＤＭＡ制御部を用いたチェインブロック転送方法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００３−１５０５３４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
前述のようなディスクリプタ方式のＤＭＡコントローラは、ディスクリプタの情報を取得する際にそのデータが無効である（例えばオーナービットの値が“０”である）と、有効になる（例えばオーナービットの値が“１”にセットされる）までディスクリプタの読み出しを繰り返し行う。つまり、外部のディスクリプタテーブルに対するポーリング動作が発生する。そのため、前述のようなディスクリプタ方式のＤＭＡコントローラを用いた情報処理システムにおいては、ディスクリプタテーブルに対するＤＭＡコントローラのポーリング動作に係るバスの使用頻度が高くなり、バスの使用効率が低下してしまう。
【課題を解決するための手段】
【００１６】
本発明の一観点によれば、メモリから読み出したディスクリプタのデータ転送に係る指示情報に従ってダイレクトメモリアクセスによるデータ転送処理を行うＤＭＡ制御部と、メモリ内のディスクリプタに有効な指示情報が書き込まれたことを、バス上を伝送される信号に基づいて検出する書き込み検出部とを備えるＤＭＡコントローラが提供される。メモリ内のディスクリプタへの有効な指示情報の書き込みが書き込み検出部により検出されると、ＤＭＡ制御部が起動する。
【発明の効果】
【００１７】
開示のＤＭＡコントローラは、メモリ内のディスクリプタへの有効な指示情報の書き込みを検出した後に、ＤＭＡ制御部が起動しメモリからのディスクリプタの読み出しを行うので、メモリへのアクセスは１回ですみ、ポーリング動作がなくなり、バスの使用効率が改善するという効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】第１の実施形態によるＤＭＡコントローラを有する情報処理システムの構成例を示す図である。
【図２】第１の実施形態における書き込み検出部の構成例を示す図である。
【図３】第１の実施形態によるＤＭＡコントローラの動作例を示すフローチャートである。
【図４】第２の実施形態によるＤＭＡコントローラを有する情報処理システムの構成例を示す図である。
【図５】第２の実施形態によるＤＭＡコントローラの動作例を示すフローチャートである。
【図６】従来のＤＭＡコントローラを用いた情報処理システムの構成を示す図である。
【図７】図６に示したＤＭＡコントローラの動作を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態を図面に基づいて説明する。
【００２０】
（第１の実施形態）
本発明の第１の実施形態について説明する。
図１は、第１の実施形態によるＤＭＡ（Direct Memory Access）コントローラを有する情報処理システムの構成例を示すブロック図である。図１において、１はＣＰＵ（Central Processing Unit）、２はＤＭＡコントローラ、３はメモリコントローラ、及び４はメモリである。ＣＰＵ１、ＤＭＡコントローラ２、及びメモリコントローラ３は、バスＢＵＳを介して接続されている。
【００２１】
ＣＰＵ１は、供給されるプログラムを実行することで、データの処理や演算を行うとともに、バスＢＵＳを介して接続された機能部を制御する。メモリコントローラ３は、バスＢＵＳを介して入力されるメモリアクセス要求に応じて、メモリ４へのデータの書き込みやメモリ４からのデータの読み出しを行う。メモリコントローラ３は、メモリアクセス要求に応じた制御信号をメモリ４に対して送受信し、メモリ４との間でデータを送受信する。
【００２２】
メモリ４は、各種のデータを記憶する。また、メモリ４は、ディスクリプタを記憶するものであり、１以上のディスクリプタで構成されるディスクリプタテーブル２１を有する。ここで、ディスクリプタは、ＤＭＡコントローラ２によって制御されるダイナミックメモリアクセスによるデータ転送の指示情報である。ディスクリプタテーブル２１の各ディスクリプタは、アドレス情報（転送元アドレス、転送先アドレス）や転送データ情報（転送データ量など）等の情報を含む。
【００２３】
また、ディスクリプタテーブル２１の各ディスクリプタは、そのデータが有効であるか無効であるかを示すビット（オーナービット）ＯＢ０、ＯＢ１、ＯＢ２、ＯＢ３を有している。オーナービットＯＢ０〜ＯＢ３は、ＣＰＵ１によるディスクリプタへのディスクリプタ情報の書き込みに伴って、そのディスクリプタのオーナービットが“１”にセットされ、ＤＭＡコントローラ２によるディスクリプタ情報の取得により“０”にリセットされる。
【００２４】
ＤＭＡコントローラ２は、ディスクリプタ方式のＤＭＡコントローラである。ＤＭＡコントローラ２は、メモリ４に記憶されているディスクリプタテーブル２１のディスクリプタから情報を取得して、ＣＰＵ１を介さずに行うリソース（装置、デバイス）及びメモリ間等のダイレクトメモリアクセスによるデータ転送を制御する。なお、ＤＭＡコントローラ２によって制御されるダイレクトメモリアクセスによるデータ転送は、バスＢＵＳのみを介したリソース及びメモリ間等のデータ転送に限られるものではない。例えば、バスＢＵＳとは異なるイーサネット（登録商標）等の通信路のみを介したリソース及びメモリ間等のデータ転送や、イーサネット等の通信路とバスＢＵＳとを介したリソース及びメモリ間等のデータ転送も、ダイレクトメモリアクセスによるデータ転送が可能である。
【００２５】
ＤＭＡコントローラ２は、ＤＭＡ制御部１１、書き込み検出部１５、及びバス制御部１６を有する。ＤＭＡ制御部１１は、ディスクリプタテーブルアドレスレジスタ１２、スタートビットレジスタ１３、及び転送処理部１４を有し、ディスクリプタ情報の取得やそのディスクリプタ情報に従ったダイレクトメモリアクセスによるデータ転送に係る処理を行う。
【００２６】
ディスクリプタテーブルアドレスレジスタ１２には、チャネル番号毎のディスクリプタにアクセスするためのアドレス（メモリアドレス）、すなわちメモリ４における各ディスクリプタの格納領域を示すアドレス値が格納される。
【００２７】
スタートビットレジスタ１３には、ＤＭＡコントローラ２（ＤＭＡ制御部１１）におけるチャネル番号毎のスタートビットが格納される。ここで、スタートビットは、ＤＭＡ制御部１１におけるチャネル番号毎の機能の動作許可／禁止を指示するビットである。ＤＭＡ制御部１１は、スタートビットの値が“１”にセットされると、対応するチャネルを起動してメモリ４からのディスクリプタの読み出し（ディスクリプタの参照）を開始する。メモリ４からのディスクリプタの読み出しは、ディスクリプタテーブルアドレスレジスタ１２に格納されているアドレスに基づいて行われる。また、ＤＭＡ制御部１１は、スタートビットの値が“０”にリセットされると、対応するチャネルの機能動作を停止する。
【００２８】
転送処理部１４は、ディスクリプタの情報に応じて、ダイレクトメモリアクセスによるデータ転送処理を行う。転送処理部１４は、メモリ４から読み出したディスクリプタのオーナービットの値が“１”のとき、そのディスクリプタ情報に従って転送元アドレスとして示されるアドレスからデータを読み出し、転送先アドレスとして示されるアドレスにそのデータを書き込む。この転送元アドレスから転送先アドレスへのデータ転送を、転送データ量として示される分行う。なお、本実施形態で発生することはないが、メモリ４から読み出したディスクリプタのオーナービットの値が“０”のとき、ＤＭＡ制御部１１は、そのディスクリプタの情報は無効であるとして、データ転送処理を行わずに読み出したディスクリプタを破棄する。
【００２９】
バス制御部１６は、ＤＭＡコントローラ２内の各機能部とバスＢＵＳとを接続するためのものである。バス制御部１６は、ＤＭＡコントローラ２内の各機能部とバスＢＵＳとの間でのアドレス信号を含む制御信号及びデータ信号の送受信に係る制御を行う。
【００３０】
書き込み検出部１５は、バスＢＵＳ上を伝送される信号に基づいて、メモリ４に持つディスクリプタテーブル２１のディスクリプタに有効なディスクリプタ情報が書き込まれたことを検出する。第１の実施形態では書き込み検出部１５は、バスＢＵＳ上を伝送される信号をモニターしており、ＣＰＵ１が有効な情報をディスクリプタに書き込む際にバスＢＵＳ上を伝送される信号によって、ＣＰＵ１によるオーナービットへの値“１”の書き込みを検出する。書き込み検出部１５は、チャネル番号毎に設けられており、有効なディスクリプタ情報がディスクリプタに書き込まれたことを検出すると、すなわちオーナービットに対する値“１”の書き込みを検出すると、対応するスタートビットの値を“１”にセットする。
【００３１】
第１の実施形態における書き込み検出部１５は、バス制御部１６よりアドレス情報Ａ＿ＤＴ、ライトイネーブル信号ＷＥ、及びデータＯ＿ＤＴが入力され、ＤＭＡ制御部１１よりアドレス情報ＡＲ＿ＤＴ＿ＣＨＸが入力される。また、第１の実施形態における書き込み検出部１５は、ＤＭＡ制御部１１に制御信号ＰＬＣ＿ＣＨＸを出力する。
【００３２】
バスＢＵＳ上を伝送されるアドレス信号によって示されるアドレス値が、アドレス情報Ａ＿ＤＴとして入力される。ライトイネーブル信号ＷＥは、バスＢＵＳ上を伝送されるライトイネーブル信号である。また、バスＢＵＳ上を伝送されるデータ信号のうち、ディスクリプタにおけるオーナービットのビット位置に対応するデータ信号によって示されるデータ値が、データＯ＿ＤＴとして入力される。したがって、ディスクリプタのオーナービットに値“１”を書き込むときにデータＯ＿ＤＴは“１”となる。
【００３３】
また、ディスクリプタテーブルアドレスレジスタ１０５に格納されているアドレス値であって、チャネル番号Ｘ（図１に示す例では、Ｘ＝０、１、２、３）のディスクリプタにアクセスするためのアドレス値が、アドレス情報ＡＲ＿ＤＴ＿ＣＨＸとして入力される。制御信号ＰＬＣ＿ＣＨＸは、チャネル番号Ｘのディスクリプタに有効なディスクリプタ情報が書き込まれたことを検出した場合、すなわちオーナービットに対する値“１”の書き込みを検出した場合に、アサートされる信号である。チャネル番号Ｘの制御信号ＰＬＣ＿ＣＨＸがアサートされることで、対応するチャネル番号Ｘのスタートビットの値が“１”にセットされる。
【００３４】
図２は、第１の実施形態における書き込み検出部１５の構成例を示すブロック図である。図２において、図１に示した構成要素と同一の構成要素には同一の符号を付している。書き込み検出部１５は、アドレス比較部３１及び判定部３２を有する。
【００３５】
アドレス比較部３１は、アドレス情報Ａ＿ＤＴとアドレス情報ＡＲ＿ＤＴ＿ＣＨＸとを比較し、バスＢＵＳ上で行われているアクセスがメモリ４に持つディスクリプタテーブル２１のディスクリプタに対するアクセスであるか否かを判断する。アドレス比較部３１は、アドレス情報Ａ＿ＤＴとアドレス情報ＡＲ＿ＤＴ＿ＣＨＸとが一致した場合には、チャネル番号Ｘのディスクリプタに対してアクセスが行われていると判断し、信号ＡＥＱ＿ＣＨＸをアサートする。
【００３６】
判定部３２は、入力される信号ＡＥＱ＿ＣＨＸ、ライトイネーブル信号ＷＥ、及びデータＯ＿ＤＴに基づいて、チャネル番号Ｘのディスクリプタのオーナービットに値“１”が書き込まれたか否かを判定し、判定結果を制御信号ＰＬＣ＿ＣＨＸとして出力する。判定部３２は、チャネル番号Ｘのディスクリプタのオーナービットに値“１”が書き込まれたと判定した場合に、制御信号ＰＬＣ＿ＣＨＸをアサートする。すなわち、判定部３２は、信号ＡＥＱ＿ＣＨＸ及びライトイネーブル信号ＷＥがアサートされ、かつデータＯ＿ＤＴが“１”であるときに、制御信号ＰＬＣ＿ＣＨＸをアサートする。例えば、信号ＡＥＱ＿ＣＨＸ、ライトイネーブル信号ＷＥ、及び制御信号ＰＬＣ＿ＣＨＸのそれぞれにおいてアサートされたときの信号が“１”とすると、判定部３２は、３入力のＡＮＤ回路（論理積演算回路）で構成することができる。
【００３７】
次に、第１の実施形態におけるＤＭＡコントローラの動作について説明する。
図３は、第１の実施形態によるＤＭＡコントローラの動作例を示すフローチャートである。
【００３８】
ＤＭＡコントローラ２に電力の供給が開始されるなどして動作が開始されると、ステップＳ１１にて、ＤＭＡコントローラ２は、ＣＰＵ１によって初期設定が行われる。この初期設定では、例えばディスクリプタテーブルアドレスレジスタ１２に対してディスクリプタにアクセスするためのアドレスの設定が行われたり、送信・受信に係る各モード等の設定が行われたりする。また、この初期設定において、必要のない割込みをマスクしたり、アドレスフィルタ処理の設定等を行ったりしても良い。
【００３９】
初期設定が終了すると、ステップＳ１２にて、ＤＭＡコントローラ２の書き込み検出部１５は、ディスクリプタのオーナービットへのＣＰＵ１による値“１”の書き込みの検出を行う。
【００４０】
そして、ＣＰＵ１によるチャネル番号Ｘのディスクリプタのオーナービットへの値“１”の書き込みが検出されると、ステップＳ１３にて、書き込み検出部１５は、チャネル番号Ｘの制御信号ＰＬＣ＿ＣＨＸをアサートする。チャネル番号Ｘの制御信号ＰＬＣ＿ＣＨＸがアサートされることで、ＤＭＡ制御部１１のスタートビットレジスタ１３において、対応するチャネル番号Ｘのスタートビットの値が“１”にセットされる。これにより、ＤＭＡ制御部１１は、対応するチャネルを起動して送信・受信機能に係る動作を開始する。
【００４１】
続いて、ステップＳ１４にて、ＤＭＡ制御部１１は、ディスクリプタテーブルアドレスレジスタ１２に格納されているアドレスに基づいてメモリ４からチャネル番号Ｘのディスクリプタを読み出しディスクリプタ情報を取得する。ここで、オーナービットへの値“１”の書き込み検出後にディスクリプタの読み出しを行っているので、取得したディスクリプタ情報において、オーナービットの値は必ず“１”である。ディスクリプタからディスクリプタ情報を取得すると、ＤＭＡ制御部１１は、そのディスクリプタのオーナービットの値を“０”に書き換える。
【００４２】
前述のようにステップＳ１４において取得したディスクリプタ情報においてオーナービットの値は“１”であるので、次に、ステップＳ１５にて、ＤＭＡ制御部１１は送信・受信動作を開始する。これにより、ＤＭＡ制御部１１の転送処理部１４は、ステップＳ１４において取得されたディスクリプタ情報に従って、ダイレクトメモリアクセスによるデータ転送を行う。
【００４３】
そして、ディスクリプタ情報に応じたデータ転送が完了すると、ステップＳ１６にて、ＤＭＡ制御部１１は、送信・受信動作を終了する。続いて、ＤＭＡ制御部１１は、スタートビットレジスタ１３におけるチャネル番号Ｘのスタートビットの値を“０”にリセットし、対応するチャネルの送信・受信機能に係る動作を停止する。
【００４４】
次に、ステップＳ１８にて、ＤＭＡコントローラ２は、次の転送を行うか否かを判断し、次の転送を行う場合にはステップＳ１２に戻り、次の転送を行わない場合には動作を終了する。なお、次の転送を行うか否かの判断は、例えばＤＭＡコントローラ２自体の動作を禁止するビットが設けられており、そのビットが設定されているか否かに基づいて行われる。
【００４５】
第１の実施形態によれば、ＤＭＡコントローラ２の書き込み検出部１５が、ＣＰＵ１によるディスクリプタテーブル２１のディスクリプタへの有効な情報の書き込み、すなわちオーナービットへの値“１”の書き込みの検出を行う。そして、オーナービットへの値“１”の書き込みを検出するとＤＭＡ制御部１１の対応するチャネル番号のスタートビットの値が“１”に設定され、そのチャネルが起動されて送信・受信機能に係る動作を開始し、メモリ４からのディスクリプタの読み出しを行う。そのため、メモリ４が持つディスクリプタテーブル２１へのアクセスは、ＣＰＵ１によるオーナービットへの値“１”の書き込み検出後に１回だけ行えば良い。したがって、ＤＭＡコントローラ２のディスクリプタテーブルに対するポーリング動作が発生することなく、バスの使用効率を改善することができる。
【００４６】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
図４は、第２の実施形態によるＤＭＡコントローラを有する情報処理システムの構成例を示すブロック図である。図４において、図１に示した構成要素等と同一の機能を有する構成要素等には同一の符号を付し、重複する説明は省略する。
【００４７】
第２の実施形態において、ＤＭＡコントローラ２の書き込み検出部１５は、ミラーレジスタ４１を有し、メモリ４に持つディスクリプタテーブル２１のディスクリプタに有効なディスクリプタ情報が書き込まれたことを検出する。ミラーレジスタ４１は、メモリ４が持つディスクリプタテーブル２１に対応しており、ディスクリプタテーブル２１の各ディスクリプタが有するオーナービットＯＢ０〜ＯＢ３に対応するミラービットＭＯＢ０〜ＭＯＢ３を有する。
【００４８】
また、ミラーレジスタ４１の各レジスタと、ディスクリプタテーブル２１の各ディスクリプタとは、同じアドレスを持つ。したがって、ＣＰＵ１によるディスクリプタのオーナービットへの値“１”の書き込みが行われると、そのときバスＢＵＳ上を伝送される信号によって、値“１”が書き込まれたオーナービットに対応するミラービットＭＯＢ０〜ＭＯＢ３も値“１”が書き込まれる。つまり、ディスクリプタテーブル２１におけるオーナービットＯＢ０〜ＯＢ３が“１”にセットされると、ミラーレジスタ４１の対応するミラービットＭＯＢ０〜ＭＯＢ３が“１”にセットされる。同様に、オーナービットＯＢ０〜ＯＢ３が“０”にリセットされると、対応するミラービットＭＯＢ０〜ＭＯＢ３が“０”にリセットされる。
【００４９】
次に、第２の実施形態におけるＤＭＡコントローラの動作について説明する。
図５は、第２の実施形態によるＤＭＡコントローラの動作例を示すフローチャートである。
【００５０】
ＤＭＡコントローラ２に電力の供給が開始されるなどして動作が開始されると、ステップＳ２１にて、ＤＭＡコントローラ２は、ＣＰＵ１によって初期設定が行われる。このステップＳ２１での初期設定は、図３に示したステップＳ１１での初期設定と同様である。
【００５１】
初期設定が終了すると、ステップＳ２２にて、ＤＭＡコントローラ２の書き込み検出部１５は、ミラーレジスタ４１において値“１”がセットされているミラービットＭＯＢ０〜ＭＯＢ３があるか否かを判断する。
【００５２】
判断の結果、ミラービットＭＯＢ０〜ＭＯＢ３のいずれかの値が“１”であれば、ステップＳ２３にて、書き込み検出部１５が、ミラーレジスタ４１のミラービットＭＯＢ０〜ＭＯＢ３の値をスタートビットレジスタ１３のスタートビットに反映させる。ここで、ミラービットＭＯＢＸが、チャネル番号Ｘのスタートビットに対応している。これにより、ミラービットＭＯＢ０〜ＭＯＢ３の値と、各チャネル番号のスタートビットの値とが同じになる。
【００５３】
続いて、ステップＳ２４にて、ＤＭＡ制御部１１は、スタートビットレジスタ１３において値“１”がセットされたチャネル番号Ｘのスタートビットに対応するチャネルを起動して送信・受信機能に係る動作を開始する。なお、値“１”がセットされているスタートビットが２つ以上ある場合には、予め決めた規則に従って、値“１”がセットされているスタートビットに対応するチャネルのうちのいずれか１つのチャネルが起動される。
【００５４】
ＤＭＡ制御部１１は、ディスクリプタテーブルアドレスレジスタ１２に格納されているアドレスに基づいてメモリ４からチャネル番号Ｘのディスクリプタを読み出しディスクリプタ情報を取得する。ここで、ミラービットに値“１”がセットされた後にディスクリプタの読み出しを行っているので、取得したディスクリプタ情報において、オーナービットの値は必ず“１”である。ディスクリプタからディスクリプタ情報を取得すると、ＤＭＡ制御部１１は、そのディスクリプタのオーナービットの値を“０”に書き換える。また、オーナービットの値を“０”に書き換えることで、対応するミラービットの値も“０”になる。
【００５５】
前述のようにステップＳ２４において取得したディスクリプタ情報においてオーナービットの値は“１”であるので、次に、ステップＳ２５にて、ＤＭＡ制御部１１は送信・受信動作を開始する。これにより、ＤＭＡ制御部１１の転送処理部１４は、ステップＳ２４において取得されたディスクリプタ情報に従って、ダイレクトメモリアクセスによるデータ転送を行う。そして、ディスクリプタ情報に応じたデータ転送が完了すると、ステップＳ２６にて、ＤＭＡ制御部１１は、送信・受信動作を終了する。
【００５６】
続いて、ステップＳ２７にて、書き込み検出部１５が、ミラーレジスタ４１のミラービットＭＯＢ０〜ＭＯＢ３の値をスタートビットレジスタ１３のスタートビットに反映させる。そして、ステップＳ２８にて、ＤＭＡ制御部１１は、スタートビットレジスタ１３のスタートビットの値がすべて“０”であるか否かを判断し、スタートビットの値がすべて“０”である場合には、ステップＳ２９へ進み、そうでない場合にはステップＳ２４へ戻る。
【００５７】
ステップＳ２９にて、ＤＭＡコントローラ２は、次の転送を行うか否かを判断し、次の転送を行う場合にはステップＳ２２に戻り、次の転送を行わない場合には動作を終了する。なお、次の転送を行うか否かの判断は、例えばＤＭＡコントローラ２自体の動作を禁止するビットが設けられており、そのビットが設定されているか否かに基づいて行われる。
【００５８】
以上のように、スタートビットレジスタ１３のスタートビットの値がすべて“０”のとき、ミラーレジスタ４１のミラービットＭＯＢ０〜ＭＯＢ３のいずれかに値“１”が設定されると、各チャネル番号のミラービットの値とスタートビットの値を同じにする。また、スタートビットレジスタ１３のスタートビットのいずれかの値が“１”のとき、送信・受信動作が終了すると、各チャネル番号のミラービットの値とスタートビットの値を同じにする。これにより、ＣＰＵ１によるディスクリプタへの有効な情報の書き込み、すなわちオーナービットへの値“１”の書き込みに伴って、ミラービットの値が“１”に設定された後、対応するチャネル番号のスタートビットの値が“１”に設定される。そのため、ディスクリプタテーブル２１へのアクセスは、ＣＰＵ１による有効な情報の書き込み後の１回だけですむので、ＤＭＡコントローラ２のディスクリプタテーブルに対するポーリング動作が発生することなく、バスの使用効率を改善することができる。
【００５９】
なお、第２の実施形態においては、ディスクリプタテーブル２１に対応させるようにミラーレジスタ４１を設けているが、これに限定されるものではなく、少なくとも各ディスクリプタが有するオーナービットに対応したミラービットを設けていれば良い。
【００６０】
なお、前述した第１及び第２の実施形態では、ディスクリプタからディスクリプタ情報を取得した後に、そのディスクリプタのオーナービットの値を“０”に書き換えるようにしているが、これに限定されるものではない。オーナービットの値の“０”への書き換えは、ディスクリプタ情報の取得後から送信・受信動作の終了までの期間に行えば良く、そのタイミングは任意である。
【００６１】
また、第１及び第２の実施形態では、情報処理システムが有する構成要素として、ＣＰＵ１、ＤＭＡコントローラ２、メモリコントローラ３、及びメモリのみを図示しているが、これに限らず、他の装置やデバイス等を有していても良い。
【００６２】
また、前述した説明では、便宜上、各ディスクリプタのオーナービットは、ディスクリプタの情報が有効であれば値“１”にセットされ、無効であれば値“０”にリセットされるものとしている。しかし、これは一例であり値は逆であっても良く、その場合にはオーナービットの値が“０”であればディスクリプタの情報が有効であると解釈し、値が“１”であれば無効であると解釈して動作を行うようにすれば良い。
【００６３】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６４】
１  ＣＰＵ
２  ＤＭＡコントローラ
３  メモリコントローラ
４  メモリ
１１  ＤＭＡ制御部
１２  ディスクリプタテーブルアドレスレジスタ
１３  スタートビットレジスタ
１４  転送処理部
１５  書き込み検出部
１６  バス制御部
２１  ディスクリプタテーブル
３１  アドレス比較部
３２  判定部
４１  ミラーレジスタ
ＢＵＳ  バス
【図１】
2011197810.tif 000003
【図２】
2011197810.tif 000004
【図３】
2011197810.tif 000005
【図４】
2011197810.tif 000006
【図５】
2011197810.tif 000007
【図６】
2011197810.tif 000008
【図７】
2011197810.tif 000009