(57)【要約】【課題】転送効率を向上したＤＭＡ転送を可能にする低消費電力で回路規模の小さなＤＭＡ転送制御装置の実現。【解決手段】転送元からの転送データを一時的にメモリ4に書き込み、メモリに書き込まれた転送データを、転送指示に応じて読み出して転送先に出力するＤＭＡ転送制御装置3であって、書き込まれた転送データのメモリにおける先頭位置を示すライトポインタWPと、転送指示で指示済みの転送データのメモリにおける位置を示す指示済リードポインタRAPと、を備え、ライトポインタWPと指示済リードポインタRAPの差分と、転送サイズXとを比較し、差分が転送サイズ以上の時に、転送指示を発行する。【選択図】図４
2010287185.tif 000002
【特許請求の範囲】
【請求項１】
転送元からの転送データを一時的にメモリに書き込み、前記メモリに書き込まれた前記転送データを、転送指示に応じて読み出して転送先に出力するＤＭＡ転送制御装置であって、
書き込まれた前記転送データの前記メモリにおける先頭位置を示すライトポインタと、
前記転送指示で指示済みの前記転送データの前記メモリにおける位置を示す指示済リードポインタと、を備え、
前記ライトポインタと前記指示済リードポインタの差分と、転送サイズとを比較し、前記差分が前記転送サイズ以上の時に、前記転送指示を発行することを特徴とするＤＭＡ転送制御装置。
【請求項２】
書き込まれた前記転送データの前記メモリにおける後尾位置を示す第１リードポインタを、さらに備える請求項１に記載のＤＭＡ転送制御装置。
【請求項３】
２個以上の前記転送指示が先行して発行される請求項１または２に記載のＤＭＡ転送制御装置。
【請求項４】
転送元からの転送データを一時的にメモリに書き込み、前記メモリに書き込まれた前記転送データを転送指示に応じて読み出して転送先に出力するＤＭＡ転送制御方法であって、
書き込まれた前記転送データの前記メモリにおける先頭位置を示すライトポインタの値を検出し、
前記転送指示で指示済みの前記転送データの前記メモリにおける位置を示す指示済リードポインタの値を検出し、
前記ライトポインタと前記指示済リードポインタの差分と、転送サイズとを比較し、
前記差分が前記転送サイズ以上の時に、前記転送指示を発行する、ことを特徴とするＤＭＡ転送制御方法。
【請求項５】
２個以上の前記転送指示が先行して発行される請求項４に記載のＤＭＡ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイス間でデータを転送するＤＭＡ転送制御装置およびＤＭＡ転送制御方法に関する。
【背景技術】
【０００２】
ＤＭＡ(Direct Memory Access)転送は、ＣＰＵを経由せずデバイス間でデータを転送する技術であり、メモリ、周辺機器などのデバイス間で直接データを転送する場合に広く使用されている。
【０００３】
一般的なＤＭＡ転送では、転送元および転送先のアドレスや転送データサイズなどデータ転送に必要な情報をＤＭＡ転送制御装置のレジスタなどに設定し、その後ＣＰＵなどが転送開始を制御することにより転送が開始される。
【０００４】
ＤＭＡ転送中には、ＣＰＵによる転送制御を必要としないため、ＣＰＵを経由する場合に比べて高速に転送を行うことが可能であり、ＣＰＵの負担を低減できる。
【０００５】
ＤＭＡ転送によるデータの転送は、指定されたサイズ単位で行われる。上記のように、ＤＭＡ転送制御装置は、ＣＰＵによる制御に応じてＤＭＡ転送を開始し、指定されたサイズのＤＭＡ転送終了後、レジスタなどに設定された設定によりＤＭＡ転送終了割り込みをアサートする。
【０００６】
ＣＰＵは、ＤＭＡ転送終了割り込みを検出すると、ＤＭＡ転送制御装置のレジスタの値（ポインタ）を読み込んで、ＤＭＡ転送の結果やステータス情報を得る。そして、ＣＰＵは、これらの情報に基づいて、引き続きＤＭＡ処理を行う、ＤＭＡ処理の終了などの次の処理に移行する。
【０００７】
図１の（Ａ）は、ＤＭＡ転送制御装置を含む一般的なコンピュータシステムの構成例を示す図であり、図１の（Ｂ）はＤＭＡ転送制御装置によるＤＭＡ転送を説明する図である。
【０００８】
図１の（Ａ）に示すように、図示のコンピュータシステムでは、ＣＰＵ１、デバイス２Ａ、デバイス２Ｂ、…、デバイス２Ｎ、ＤＭＡ転送制御装置３が、システムバス５を介して接続され、ＣＰＵ１と通信することが可能である。また、デバイス２Ａ、デバイス２Ｂ、…、デバイス２Ｎ、ＤＭＡ転送制御装置３は、ＤＭＡバス６を介して相互に接続されており、デバイス２Ａ、デバイス２Ｂ、…、デバイス２Ｎは、ＤＭＡ転送制御装置３を介してデバイス間でＤＭＡ転送を行うことが可能である。ＤＭＡ転送制御装置３にはＲＡＭ４が接続されている。ＲＡＭ４は、一般的にはＳＲＡＭなどが使用され、ＤＭＡ転送制御装置３内に設けることもあるが、ここではＤＭＡ転送制御装置３に外付けで接続される例を示している。
【０００９】
図１の（Ｂ）に示すように、ＤＭＡバス６は、２系統のＤＭＡバス６ＡおよびＤＭＡバス６Ｂを備える。ＤＭＡ転送制御装置３は、ＤＭＡバス６Ａに接続される入力制御部１１と、ＲＡＭ情報管理部１２と、ＤＭＡバス６Ｂに接続される出力制御部１３と、を備える。入力制御部１１、ＲＡＭ情報管理部１２および出力制御部１３は、システムバス５を介してそれぞれＣＰＵと通信可能である。
【００１０】
入力制御部１１に入力された転送データは、ＲＡＭ情報管理部１２を介してＲＡＭ４に書き込まれ、一時的に保持される。ＲＡＭ４から読み出された転送データは、ＲＡＭ情報管理部１２を介して出力制御部１３に送られ、転送先のデバイスに出力される。ＲＡＭ４は、データを書き込まれた順に出力するＦＩＦＯ(First-In-First-Out)メモリとして動作する。ＦＩＦＯメモリは、書き込んだデータの先頭位置（アドレス）を示す書込ポインタＷＰと、読み出したデータの後尾位置（アドレス）を示す読出ポインタＲＰと、を設け、書込動作および読出動作をＷＰとＲＰの示すアドレスで制御することにより、実現できる。書込ポインタＷＰおよび読出ポインタＲＰは、ＲＡＭの最大アドレスになると最小アドレスに戻る循環動作を繰り返す。ＲＡＭ情報管理部１２は、ＲＡＭ４をＦＩＦＯメモリとして使用するため、書込ポインタＷＰ１４と、読出ポインタＲＰ１５と、を備える。
【００１１】
したがって、転送元のデバイス２Ｐから転送先のデバイス２Ｑにデータを転送する場合の経路は、図１の（Ｂ）において破線で示す経路になる。すなわち、転送データは、転送元のデバイス２ＰからＤＭＡバス６Ａに出力され、入力制御部１１に入力され、ＲＡＭ情報管理部１２を介してＲＡＭ４に書き込まれる。ＲＡＭ４に書き込まれた転送データは、読み出されて、ＲＡＭ情報管理部１２を介して出力制御部１３に送られ、出力制御部１３からＤＭＡバス６Ｂに出力され、転送先のデバイス２Ｑに入力されて、転送が完了する。
【００１２】
上記のように、ＤＭＡバス６は、ＤＭＡバス６ＡおよびＤＭＡバス６Ｂの２系統バスを備えており、ＲＡＭ４へのデータ書込およびＲＡＭ４からのデータ読出は独立に行えるようになっている。これにより、転送元のデバイス２Ｐから出力された転送データのＲＡＭ４への書込と、ＲＡＭ４からの転送データの読出は、独立に行える。ＲＡＭ４への転送データの書込と読出が独立して行う時、ＲＡＭ４が転送データで一杯になるオーバーフローと、ＲＡＭ４に読み出す転送データが存在しないアンダーフローと、が発生する場合が生じる。オーバーフローまたはアンダーフローが発生すると、バスやデバイスが長時間待機状態になり効率が低下する。そこで、転送元のデバイスからＲＡＭ４にデータを転送する処理では、ＲＡＭ４に転送するデータ量以上の空き領域があるかを確認した後転送を指示することにより、オーバーフローを防止する。また、ＲＡＭ４から転送先のデバイスにデータを転送する処理では、ＲＡＭ４に転送するデータ量以上のデータが蓄積されているかを確認した後転送を指示することにより、アンダーフローを防止する。
【００１３】
上記のように、ＲＡＭ４へのデータ書込およびＲＡＭ４からのデータ読出は独立に行えるようになっており、オーバーフローおよびアンダーフローの防止も独立に制御される。以下の説明では、ＲＡＭ４からのデータ読出処理を例として説明を行う。一般に、転送元のデバイスからＤＭＡ制御装置を経由して転送先のデバイスにデータを送る一連の動作を転送動作と称するが、ここでは、ＲＡＭ４から読み出したデータを転送先のデバイスに出力する動作も、転送動作と称する。さらに、転送元のデバイスからのデータをＲＡＭ４に書き込む動作も転送動作と称する場合がある。
【００１４】
図２は、ＤＭＡ転送処理を示すフローチャートであり、ＲＡＭ４からのデータ転送処理に関係する。
【００１５】
ステップ１０１では、ＣＰＵ１が、転送先のアドレス、ＤＭＡ転送のサイズなどのＤＭＡ転送に必要な情報を、ＲＡＭ情報管理部１２および出力制御部１３内のレジスタに設定する。
【００１６】
上記のように、ＲＡＭ４へのデータ転送（書込）は独立して行われており、書込ポインタＷＰ１４は順次増加する。しかし、ＲＡＭ４からのデータ転送（読出）は行われていないので、読出ポインタＲＰ１５は変化しない。
【００１７】
ステップ１０２では、ＲＡＭ情報管理部１２が、書込ポインタＷＰ１４と読出ポインタＲＰ１５の差が、指定サイズに到達したかを判定する。この差はＲＡＭ４に蓄積されている転送データ量を示しており、この差が指定サイズより少ない場合には、ＲＡＭ４から転送する転送データが準備できていないことを意味する。そこで、この差が指定サイズに到達に到達していなければ待機し、到達していればＣＰＵ１に対して指定サイズ到達の割り込みを発生し、ステップ１０３に進む。
【００１８】
ステップ１０３では、ＣＰＵ１が、ＲＡＭ４から転送先のデバイス２Ｑへのデータ転送の開始を指示する。これに応じて、ＲＡＭ４からデータを読み出し、出力制御部１３を介して転送先のデバイス２Ｑにデータを転送する。したがって、読出ポインタＲＰ１５は順次増加する。
【００１９】
ステップ１０４では、ＲＡＭ情報管理部１２が、読出処理が完了したか、すなわちＲＡＭ４に書き込まれた指定されたサイズの転送データがすべて読み出されたかを判定し、完了していなければ待機し、完了していればＣＰＵ１に対して読出完了の割り込みを発生し、ステップ１０５に進む。
【００２０】
ステップ１０５では、ＣＰＵ１が、次のＤＭＡ要求が残っているかを判定し、あればステップ１０２に戻り、なければＤＭＡ処理を終了する。例えば、１６バイトのデータを４バイトずつ転送する場合には、以上の転送処理を４回繰り返すことになる。
【００２１】
図３は、上記のＤＭＡ転送処理を説明する図である。図において、ＷＰが書込ポインタの示すアドレス位置を、ＲＰが読出ポインタの示すアドレス位置を、Ｘが指定サイズを示す。図３において、（ａ）のように、ＣＰＵが前回のＲＡＭ４からの転送処理が終了しているかを確認する。そして、ＤＭＡ情報管理部１２は、ＷＰ−ＲＰ≧Ｘになって１番目のデータＡがＲＡＭ４に蓄積されているかを確認する。そして、蓄積されていれば指定サイズ到達の割り込みをＣＰＵに対して発生し、ＣＰＵの指示に応じてデータＡのＲＡＭ４からの読出処理を開始する。これにより、（ｂ）のように、ＲＰが増加する。この読出処理の間もＲＡＭ４へのデータの書込は並行して独立に行われるので、ＷＰも独立して増加する。ここで、（ｂ）のようにＷＰの方がＲＰより速く増加する場合、（ｃ）のように、２番目のデータＢのＲＡＭ４への書込が終了しても、データＡのＲＡＭ４からの読出は終了していないことになる。この場合、データＡのＲＡＭ４からの読出が終了するまでデータＢのＲＡＭ４からの読出は行わず待機する。
【００２２】
そして、（ｄ）のように、ＣＰＵがデータＡのＲＡＭ４からの読出が終了していることを確認する。そして、ＤＭＡ情報管理部１２は、ＷＰ−ＲＰ≧Ｘになって２番目のデータＢがＲＡＭ４に蓄積されていることを確認すると、ＣＰＵに対して指定サイズ到達の割り込みを発生し、ＣＰＵの指示に応じてデータＢのＲＡＭ４からの転送処理を開始する。この間、ＲＡＭ４へのデータの書込は並行して独立に行われるので、ＷＰは独立して増加している。
【００２３】
以上説明したように、上記のＤＭＡ転送の例では、前回のＲＡＭ４からの転送処理が完了し且つ設定されたサイズ分の転送データがＲＡＭ４に書き込まれたことを確認した後、ＤＭＡ転送のＲＡＭ４からの次の転送処理を開始していた。そのため、転送先のデバイスにアクセスする時のレイテンシーが大きい場合には、アクセスのための遅延が大きくなり、転送効率が向上しないという問題が生じていた。
【００２４】
そこで、ＣＰＵが、転送元のアドレス、転送先のアドレス、ＤＭＡ転送のサイズなどのＤＭＡ転送に必要な情報をＤＭＡ転送制御装置のレジスタに書き込むＤＭＡ転送指示を、先行して発行することが提案されている。この場合、ＤＭＡ転送指示を先行して発行する時にも、アンダーフローおよびオーバーフローが発生しないようにする必要がある。そこで、先行して発行した転送指示によるデータ転送量を考慮してアンダーフローおよびオーバーフローが発生しないように制御することが提案されている。具体的には、ＲＡＭ４に書き込まれているデータ量を示すカウンタと、先行して発行した転送指示により転送される予定のデータ量から既に転送完了したデータ量を減じた未転送データ量を示すカウンタを設ける。そして、２個のカウンタの差に基づいてアンダーフローが発生しないと判定した場合に、たとえ前回の転送処理が完了していなくても次の転送指示を発行する。また、転送元のデバイスからの転送データをＲＡＭ４に書き込む場合についても、先行して発行した転送（書込）指示によるデータ転送量を考慮してオーバーフローが発生しないように制御することが提案されている。この場合にも、カウンタを使用する。
【００２５】
上記のような複数のカウンタを設ける場合、回路規模が大きくなりコスト増加という問題を生じる。また、これらのカウンタは、ＲＡＭ４でのデータの書込および読出が行われるたびに加算および減算が行われカウント値が変化する。そのため、カウンタの状態は頻繁に変化することになり、それに伴って消費電力が大きくなるという問題があった。
【先行技術文献】
【特許文献】
【００２６】
【特許文献１】特開２００８−８３９１１号公報
【特許文献２】特開２００２−４１４４５号公報
【発明の概要】
【発明が解決しようとする課題】
【００２７】
開示の実施形態では、ＤＭＡ転送指示を先行して発行しても、アンダーフローおよびオーバーフローの発生を防止できるＤＭＡ転送制御装置および方法が、小さな回路規模で且つ低消費電力で実現される。
【課題を解決するための手段】
【００２８】
実施形態の第１の態様は、転送元からの転送データを一時的にメモリに書き込み、メモリに書き込まれた転送データを、転送指示に応じて読み出して転送先に出力するＤＭＡ転送制御装置である。第１の態様のＤＭＡ転送制御装置は、書き込まれた転送データのメモリにおける先頭位置を示すライトポインタと、転送指示で指示済みの転送データのメモリにおける位置を示す指示済リードポインタと、を備え、ライトポインタと指示済リードポインタの差分と、転送サイズとを比較し、差分が転送サイズ以上の時に、読出指示を発行する。
【発明の効果】
【００２９】
実施形態のＤＭＡ転送制御装置および方法によれば、ポインタを１個追加することで、ＣＰＵの負荷を増加させることなくＤＭＡ転送効率を向上することができる。また、実施形態のＤＭＡ転送制御装置および方法は、低消費電力および小規模回路で実現可能である。
【図面の簡単な説明】
【００３０】
【図１】図１は、ＤＭＡ転送制御装置を含む一般的なコンピュータシステムの構成例を示し、ＤＭＡ転送制御装置によるＤＭＡ転送を説明する図である。
【図２】図２は、図１のＤＭＡ転送処理を示すフローチャートである。
【図３】図３は、図１のＤＭＡ転送処理における動作を説明する図である。
【図４】図４は、第１実施形態のＤＭＡ転送制御装置を含むコンピュータシステムの構成を示す図である。
【図５】図５は、第１実施形態のＤＭＡ転送制御装置の詳細な構成を示す図である。
【図６】図６は、第１実施形態におけるＤＭＡ転送処理を示すフローチャートである。
【図７】図７は、第１実施形態におけるＤＭＡ転送処理の動作を説明する図である。
【図８】図８は、第１実施形態におけるＤＭＡ転送処理の動作例を示すタイムチャートである。
【図９】図９は、第１実施形態におけるＤＭＡ転送処理の別の動作例を示すタイムチャートである。
【図１０】図１０は、第２実施形態のＤＭＡ転送制御装置を含むコンピュータシステムの構成を示す図である。
【発明を実施するための形態】
【００３１】
図４は、第１実施形態のコンピュータシステムの構成を示す図である。
【００３２】
図４に示すように、第１実施形態のコンピュータシステムは、ＣＰＵ１と、転送元のデバイス２Ｐと、転送先のデバイス２Ｑと、ＤＭＡ転送制御装置３と、ＤＭＡ転送制御装置３に接続されたＦＩＦＯメモリを形成するためのＲＡＭ４と、システムバス５と、ＤＭＡバス６Ａ、６Ｂと、を備える。ＲＡＭ４は、ＳＲＡＭなどが使用され、ＤＭＡ転送制御装置３内に設けることも可能である。コンピュータシステムには、他にも各種のデバイスが接続されるが、ここではＤＭＡ転送に関係する部分のみを示している。
【００３３】
第１実施形態のコンピュータシステムでは、ＤＭＡ転送指示は、前のＤＭＡ転送動作が完了する前に先行して発行することが可能であり、２つ以上のＤＭＡ転送指示を先行して発行することが可能である。
【００３４】
転送元のデバイス２Ｐおよび転送先のデバイス２Ｑは、メモリコントローラおよびそれに接続されたメモリや、磁気ディスク装置などの外部記憶装置や、通信インターフェースなどの各種のデバイスである。ＣＰＵ１、転送元のデバイス２Ｐ、転送先のデバイス２Ｑ、ＤＭＡ転送制御装置３およびＲＡＭ４は、それぞれ１チップの半導体装置として形成し、システムバス５とおよびＤＭＡバス６を形成したプリント基板上に搭載することが可能である。また、ＣＰＵ１、ＤＭＡ転送制御装置３およびシステムバス５に、転送元のデバイス２Ｐおよび転送先のデバイス２Ｑ、他のデバイスおよびＤＭＡバス６Ａ、６Ｂの一部またはすべて、さらにＲＡＭ４などを１チップに搭載することも可能である。
【００３５】
図４に示すように、ＣＰＵ１、転送元のデバイス２Ｐ、転送先のデバイス２ＱおよびＤＭＡ転送制御装置３は、システムバス５を介して接続され、相互にデータを通信することが可能である。また、転送元のデバイス２Ｐ、転送先のデバイス２ＱおよびＤＭＡ転送制御装置３は、ＤＭＡバス６Ａ、６Ｂを介して相互に接続されている。これにより、転送元のデバイス２Ｐと転送先のデバイス２Ｑは、ＤＭＡ転送制御装置３を介してデバイス間でＤＭＡ転送を行うことが可能である。
【００３６】
ＤＭＡバス６Ａは、転送元のデバイス２Ｐのデータを、ＤＭＡ転送制御装置３を介してＲＡＭ４にＤＭＡ転送するのに使用される。ＤＭＡバス６Ｂは、ＲＡＭ４に書き込まれたデータを、ＤＭＡ転送制御装置３を介して転送先のデバイス２ＱにＤＭＡ転送するのに使用される。２つのＤＭＡバス６ＡおよびＤＭＡバス６Ｂが設けられているので、転送元のデバイス２Ｐから出力された転送データのＲＡＭ４への書込と、ＲＡＭ４からの転送データの読出は、独立に行える。
【００３７】
また、ＲＡＭ４への転送データの書込と読出が独立して行うため、オーバーフローおよびアンダーフローの防止も独立して制御される。ここでは、ＲＡＭ４から転送先のデバイス２ＱへのＤＭＡ転送、すなわちＲＡＭ４からのデータ読出処理を例として説明を行う。しかし、転送元のデバイス２ＰからＲＡＭ４へのＤＭＡ転送、すなわちＲＡＭ４へのデータ書込処理についても開示の技術が同様に適用できることは、当業者には容易に理解できることである。
【００３８】
ＤＭＡ転送制御装置３は、ＤＭＡバス６Ａに接続される入力制御部１１と、ＲＡＭ情報管理部１２と、ＤＭＡバス６Ｂに接続される出力制御部１３と、を備える。入力制御部１１、ＲＡＭ情報管理部１２および出力制御部１３は、システムバス５を介してそれぞれＣＰＵ１と通信可能である。
【００３９】
ＲＡＭ情報管理部１２は、ＲＡＭ４をＦＩＦＯメモリとして動作させるために、ＲＡＭ４において、書き込んだデータの先頭位置（アドレス）を示す書込ポインタＷＰ１４と、読み出したデータの後尾位置（アドレス）を示す読出ポインタＲＰ１５と、備える。ＲＡＭ情報管理部１２は、直前に発行したＤＭＡ転送指示で既に読出指示を行ったデータの位置（アドレス）を示す読出指示済ポインタＲＡＰ１６を更に備える。
【００４０】
図５は、ＲＡＭ情報管理部１２のより詳細な構成を示す図である。図５に示すように、ＲＡＭ情報管理部１２は、ＣＰＵインターフェース(CPU I/F)２０と、入力制御部Ｉ／Ｆ３１と、出力制御部Ｉ／Ｆ３２と、ＲＡＭＩ／Ｆ３３と、を備える。また、ＣＰＵインターフェース２０は、レジスタ群２１と、書込ポインタＷＰの値から読出指示済ポインタＲＡＰを減じた値が指定サイズＸ以上であるかを判定して条件を満たした時にレジスタに指定サイズ到達を示す値の書込を行う演算器２２と、レジスタ制御部２３と、を備える。レジスタ群２１は、ＲＡＭ４へ書き込まれた転送データの先頭位置を示す書込ポインタＷＰと、ＣＰＵ１から指示されたＤＭＡ転送の指定サイズＸと、ＲＡＭ４に書き込まれた転送データの後尾位置を示す読出ポインタＲＰと、読出指示済ポインタＲＡＰと、を記憶するレジスタを含む。レジスタ群２１は、さらに指定サイズ到達割り込みの発生を示すレジスタを備える。書込ポインタＷＰは、入力制御部１１を介して入力された転送データをＲＡＭ４に書き込むたびに更新される。読出ポインタＲＰは、ＲＡＭ４から記憶された転送データを読み出すたびに更新される。読出指示済ポインタＲＡＰは、ＣＰＵ１が転送指示を発行する時に、その時点の読出指示済ポインタＲＡＰに指定サイズＸを加えた値に更新される。レジスタ制御部２３は、ＣＰＵ１から指示された指定サイズＸをレジスタに記憶し、書込ポインタＷＰ、読出ポインタＲＰおよび読出指示済ポインタＲＡＰを更新する。また、指定サイズ到達割り込みの発生を示すレジスタに指定サイズ到達を示す値が設定されると、ＣＰＵ１に対して指定サイズ到達割り込みが発生する。
【００４１】
図６は、第１実施形態におけるＤＭＡ転送処理を示すフローチャートであり、ＲＡＭ４からのデータ読出処理に関係するフローチャートである。
【００４２】
ステップ２０１では、ＣＰＵ１が、転送先のアドレス、ＤＭＡ転送のサイズなどのＤＭＡ転送に必要な情報を、ＲＡＭ情報管理部１２および出力制御部１３内のレジスタに設定する。
【００４３】
上記のように、ＲＡＭ４へのデータ書込は独立して行われており、書込ポインタＷＰ１４は順次増加する。
【００４４】
ステップ２０２では、書込ポインタＷＰ１４から指示済読出ポインタＲＡＰを減じた値が、指定サイズＸ以上であるかを判定する。この判定は、演算器２２で行われ、条件を満たさない時には待機し、条件を満たした時にはレジスタへの書き込みが行われ、それに応じてＣＰＵ１に対して指定サイズ到達割り込みが発生する。この条件が満たされた時は、ＲＡＭ４に書き込まれた転送データのうちで、転送（読出）がされていないデータの量が指定サイズ以上であり、アンダーフローを生じないで転送が行えることを意味する。指定サイズ到達割り込みが発生すると、ステップ２０３に進む。
【００４５】
ステップ２０３では、ＣＰＵ１は、指定サイズ到達の割り込みを受けると、ＤＭＡ制御装置３に対して、ＲＡＭ３から転送先のデバイスへのＤＭＡ転送指示を発行し、ステップ２０４に進む。ＤＭＡ転送指示を受けると、ＲＡＭ制御情報管理部１２のレジスタ制御部２３は、その時点の読出指示済ポインタＲＡＰの値に指定サイズＸを加えた値を、新たに読出指示済ポインタＲＡＰとして記憶する。この時に発行されたＤＭＡ転送指示が１回目の指示であれば、ＲＡＭ４からのデータの転送はただちに開始され、２回目以降の指示であれば、前のＤＭＡ転送が終了した直後に開始される。
【００４６】
ステップ２０４では、ＣＰＵ１は、ＲＡＭ４から転送先のデバイスにＤＭＡ転送する処理が残っているかを判定し、残っていればステップ２０２に戻り、残っていなければＤＭＡ転送を終了する。
【００４７】
図７は、第１実施形態のＤＭＡ転送処理を説明する図である。図において、ＷＰが書込ポインタの示すアドレス位置を、ＲＰが読出ポインタの示すアドレス位置を、Ｘが指定サイズを示す。図７において、（ａ）のように、ＲＡＭ４からのＤＭＡ転送のための読出が行われていない状態では、読出ポインタＲＰおよび読出指示済ポインタＲＡＰは同じ位置（アドレス）を示している。ＲＡＭ４へのデータの書き込みは独立に行われており、書込ポインタＷＰは随時変化している。ＤＭＡ情報管理部１２は、ＷＰ−ＲＡＰ≧Ｘになって、ＤＭＡ転送指示を発行していない１番目のデータＡがＲＡＭ４に蓄積されているかを確認する。そして、蓄積されていれば、ＤＭＡ情報管理部１２は、指定サイズ到達の割り込みをＣＰＵに対して発生し、ＲＡＰをその時点のＲＡＰにＸを加えた値に変化させた後、ＣＰＵの指示に応じてデータＡのＲＡＭ４からの読出処理を開始する。これにより、（ｂ）のように、ＲＡＰがＸだけ増加する。そして、読出処理に伴ってＲＰが変化する。
【００４８】
この読出処理の間もＲＡＭ４へのデータの書込は並行して独立に行われるので、ＷＰは独立して増加する。ここで、（ｂ）のようにＷＰの方がＲＰより速く増加する場合、（ｃ）のように、２番目のデータＢのＲＡＭ４への書込が終了しても、データＡのＲＡＭ４からの転送は終了していないことになる。
【００４９】
ここで、２番目のデータＢのＲＡＭ４への転送（書込）が終了すると、ＷＰ−ＲＡＰ≧Ｘを満たす。そのため、指定サイズ到達の割り込みがＣＰＵに対して発生し、ＲＡＰをその時点のＲＡＰにＸを加えた値に変化させた後、ＣＰＵはデータＢのＲＡＭ４からの転送指示を発行する。これにより、ＲＡＰはデータＢの先頭位置を示す値になるが、上記のように、データＢのＲＡＭ４からの転送指示が発行されても、データＡのＲＡＭ４からの読出が終了していないので、そのままデータＡのＲＡＭ４からの転送が行われる。そして、データＡのＲＡＭ４からの転送が終了すると、（ｄ）のように、ＲＰはデータＢの後尾位置になる。この時、ＷＰは更に先に進んでいる。データＢの転送指示はすでに発行されているので、データＢの転送が引き続いて行われる。
【００５０】
図７に示すように、第１実施形態では、前データの転送処理が終了する前に次のデータの転送指示が発行されるため、その分無駄な時間を消費することがなくなり、転送効率の高いＤＭＡ転送が実現できる。
【００５１】
なお、ＷＰ−ＲＡＰ≧Ｘの条件が満たされるならば、２つ以上の転送指示を先行して発行することが可能である。例えば、１６バイトのデータを１回のＤＭＡ転送で４バイトずつ転送する場合、１６バイトのデータがＲＡＭ４に既に書き込まれている場合には、特に何もなければ転送指示が４回続けて発行されることになる。これにより、最初の４バイトのデータが転送されている時に、すでに３つの転送指示が発行済みである。
【００５２】
図８は、第１実施形態におけるＲＡＭからのＤＭＡ転送の動作例を示すタイムチャートであり、（Ａ）が図１から図３で説明した背景技術における動作例を、（Ｂ）が第１実施形態における動作例を示す。図８の動作例では、読出処理はすべて１サイクルで行う。また、この動作例では、指定サイズは４バイトで、ＤＭＡ転送処理における３回の読出動作を示す。
【００５３】
図８の（Ａ）に示すように、背景技術では、１回のＤＭＡ転送動作の完了後、次のＤＭＡ転送動作に関して転送可能かどうかの判定を行い、転送可能であればＤＭＡ転送指示を発行する。この判定動作および転送指示動作は、図８の（Ａ）において、２番目のデータについてはクロック（ＣＬＫ）１１から１３で、３番目のデータについてはＣＬＫ１７から１９で、行われる。
【００５４】
これに対して、図８の（Ｂ）に示すように、第１実施形態では、１回のＤＭＡ転送動作の完了を待たずに、次のＤＭＡ転送動作に関して転送可能かどうかの判定を行い、転送可能であればＤＭＡ転送指示を発行する。この転送指示動作は、図８の（Ｂ）において、２番目のデータについてはＣＬＫ１１で、３番目のデータについてはＣＬＫ１５で、行われる。
【００５５】
図８の（Ａ）と（Ｂ）を比較して明らかなように、３回のＤＭＡ転送動作が、背景技術ではＣＬＫ２３で終了しているのに対して、第１実施形態ではＣＬＫ１９で終了しており、４クロック早く完了している。
【００５６】
図９は、第１実施形態におけるＲＡＭからの読出に関するＤＭＡ転送の別の動作例を示すタイムチャートであり、（Ａ）が図１から図３で説明した背景技術における動作例を、（Ｂ）が第１実施形態における動作例を示す。図９の（Ａ）では、読出処理を、ＲＰの値が偶数の場合は１サイクルで行い、奇数の場合は２サイクルで行う。同様に、図９の（Ｂ）では、読出処理を、ＲＡＰの値が偶数の場合は１サイクルで行い、奇数の場合は２サイクルで行う。また、この動作例では、指定サイズは４バイトで、ＤＭＡ転送処理における３回の読出動作を示す。
【００５７】
図９の（Ａ）に示すように、背景技術では、１回のＤＭＡ転送動作の完了後、次のＤＭＡ転送動作に関して転送可能かどうかの判定を行い、転送可能であればＤＭＡ転送指示を発行する。この判定動作および転送指示動作は、図９の（Ａ）において、２番目のデータについてはクロック（ＣＬＫ）１３から１５で、３番目のデータについてはＣＬＫ２１から２３で、行われる。
【００５８】
これに対して、図９の（Ｂ）に示すように、第１実施形態では、ＲＡＭに指定サイズ以上のデータが書き込まれた状態で、１回のＤＭＡ転送動作の完了を待たずに、次のＤＭＡ転送指示を発行する。この転送指示動作は、図９の（Ｂ）において、２番目のデータについてはＣＬＫ１１で、３番目のデータについてはＣＬＫ１５で、行われる。
【００５９】
図９の（Ａ）と（Ｂ）を比較して明らかなように、３回目のＤＭＡ転送動作が、背景技術ではＣＬＫ２４で開始されるのに対して、第１実施形態ではＣＬＫ２０で開始されており、４クロック早く開始している。
【００６０】
図８の（Ｂ）および図９の（Ｂ）では、ＲＡＰが所定の値になった時に１回分のＤＭＡが開始されていることが分かる。
【００６１】
このことは、転送可能なＤＭＡを複数個先行発行することが可能なため、転送予定のＤＭＡ転送指示の発行を早い段階で完了することができ、ＣＰＵは別の処理に移行することができるようになり、結果としてＣＰＵの処理効率を向上することができることを示している。
【００６２】
以上説明したように、第１実施形態では、ＤＭＡ転送制御装置３にポインタを１個追加するだけで、ＣＰＵの負荷を増加させることなくＤＭＡ転送効率を向上することができる。また、第１実施形態のＤＭＡ転送制御装置３は、ポインタを１個追加しただけなので、低消費電力および小規模回路で実現可能である。
【００６３】
図１０は、第２実施形態のコンピュータシステムの構成を示す図であり、図４に対応する図である。図４と比較して明らかなように、第２実施形態のＤＭＡ制御装置３は、第１実施形態のＤＭＡ制御装置３のＲＡＭ情報管理部１２に、書込指示済ポインタＷＡＰ１７を更に設けたことが異なる。書込指示済ポインタＷＡＰ１７は、直前に発行した転送元のデバイスからＲＡＭ４へのＤＭＡ転送指示で既に書込指示を行ったデータの位置（アドレス）を示す。
【００６４】
第２実施形態では、転送元のデバイスからＲＡＭ４への転送指示を、先行して発行することが可能になり、転送元のデバイスからＲＡＭ４への転送動作で、第１実施形態と同様の効果が更に得られる。なお、当業者であれば、第２実施形態の動作について、第１実施形態の説明により容易に理解できるので、詳しい説明は省略する。
【００６５】
ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００６６】
１    ＣＰＵ
２Ａ、２Ｂ、２Ｎ    デバイス
２Ｐ    転送元デバイス
２Ｑ    転送先デバイス
３    ＤＭＡ転送制御装置
４    ＲＡＭ
５    システムバス
６、６Ａ、６Ｂ    ＤＭＡバス
１１    入力制御部
１２    ＲＡＭ情報管理部
１３    出力制御部
１４    書込ポインタ（ＷＰ）
１５    読出ポインタ（ＲＰ）
１６    指示済読出ポインタ（ＲＡＰ）
１７    指示済書込ポインタ（ＷＡＰ）
【図１】
2010287185.tif 000003
【図２】
2010287185.tif 000004
【図３】
2010287185.tif 000005
【図４】
2010287185.tif 000006
【図５】
2010287185.tif 000007
【図６】
2010287185.tif 000008
【図７】
2010287185.tif 000009
【図８】
2010287185.tif 000010
【図９】
2010287185.tif 000011
【図１０】
2010287185.tif 000012