説明

DMA転送制御装置およびDMA転送制御方法

【課題】転送効率を向上したDMA転送を可能にする低消費電力で回路規模の小さなDMA転送制御装置の実現。
【解決手段】転送元からの転送データを一時的にメモリ4に書き込み、メモリに書き込まれた転送データを、転送指示に応じて読み出して転送先に出力するDMA転送制御装置3であって、書き込まれた転送データのメモリにおける先頭位置を示すライトポインタWPと、転送指示で指示済みの転送データのメモリにおける位置を示す指示済リードポインタRAPと、を備え、ライトポインタWPと指示済リードポインタRAPの差分と、転送サイズXとを比較し、差分が転送サイズ以上の時に、転送指示を発行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバイス間でデータを転送するDMA転送制御装置およびDMA転送制御方法に関する。
【背景技術】
【0002】
DMA(Direct Memory Access)転送は、CPUを経由せずデバイス間でデータを転送する技術であり、メモリ、周辺機器などのデバイス間で直接データを転送する場合に広く使用されている。
【0003】
一般的なDMA転送では、転送元および転送先のアドレスや転送データサイズなどデータ転送に必要な情報をDMA転送制御装置のレジスタなどに設定し、その後CPUなどが転送開始を制御することにより転送が開始される。
【0004】
DMA転送中には、CPUによる転送制御を必要としないため、CPUを経由する場合に比べて高速に転送を行うことが可能であり、CPUの負担を低減できる。
【0005】
DMA転送によるデータの転送は、指定されたサイズ単位で行われる。上記のように、DMA転送制御装置は、CPUによる制御に応じてDMA転送を開始し、指定されたサイズのDMA転送終了後、レジスタなどに設定された設定によりDMA転送終了割り込みをアサートする。
【0006】
CPUは、DMA転送終了割り込みを検出すると、DMA転送制御装置のレジスタの値(ポインタ)を読み込んで、DMA転送の結果やステータス情報を得る。そして、CPUは、これらの情報に基づいて、引き続きDMA処理を行う、DMA処理の終了などの次の処理に移行する。
【0007】
図1の(A)は、DMA転送制御装置を含む一般的なコンピュータシステムの構成例を示す図であり、図1の(B)はDMA転送制御装置によるDMA転送を説明する図である。
【0008】
図1の(A)に示すように、図示のコンピュータシステムでは、CPU1、デバイス2A、デバイス2B、…、デバイス2N、DMA転送制御装置3が、システムバス5を介して接続され、CPU1と通信することが可能である。また、デバイス2A、デバイス2B、…、デバイス2N、DMA転送制御装置3は、DMAバス6を介して相互に接続されており、デバイス2A、デバイス2B、…、デバイス2Nは、DMA転送制御装置3を介してデバイス間でDMA転送を行うことが可能である。DMA転送制御装置3にはRAM4が接続されている。RAM4は、一般的にはSRAMなどが使用され、DMA転送制御装置3内に設けることもあるが、ここではDMA転送制御装置3に外付けで接続される例を示している。
【0009】
図1の(B)に示すように、DMAバス6は、2系統のDMAバス6AおよびDMAバス6Bを備える。DMA転送制御装置3は、DMAバス6Aに接続される入力制御部11と、RAM情報管理部12と、DMAバス6Bに接続される出力制御部13と、を備える。入力制御部11、RAM情報管理部12および出力制御部13は、システムバス5を介してそれぞれCPUと通信可能である。
【0010】
入力制御部11に入力された転送データは、RAM情報管理部12を介してRAM4に書き込まれ、一時的に保持される。RAM4から読み出された転送データは、RAM情報管理部12を介して出力制御部13に送られ、転送先のデバイスに出力される。RAM4は、データを書き込まれた順に出力するFIFO(First-In-First-Out)メモリとして動作する。FIFOメモリは、書き込んだデータの先頭位置(アドレス)を示す書込ポインタWPと、読み出したデータの後尾位置(アドレス)を示す読出ポインタRPと、を設け、書込動作および読出動作をWPとRPの示すアドレスで制御することにより、実現できる。書込ポインタWPおよび読出ポインタRPは、RAMの最大アドレスになると最小アドレスに戻る循環動作を繰り返す。RAM情報管理部12は、RAM4をFIFOメモリとして使用するため、書込ポインタWP14と、読出ポインタRP15と、を備える。
【0011】
したがって、転送元のデバイス2Pから転送先のデバイス2Qにデータを転送する場合の経路は、図1の(B)において破線で示す経路になる。すなわち、転送データは、転送元のデバイス2PからDMAバス6Aに出力され、入力制御部11に入力され、RAM情報管理部12を介してRAM4に書き込まれる。RAM4に書き込まれた転送データは、読み出されて、RAM情報管理部12を介して出力制御部13に送られ、出力制御部13からDMAバス6Bに出力され、転送先のデバイス2Qに入力されて、転送が完了する。
【0012】
上記のように、DMAバス6は、DMAバス6AおよびDMAバス6Bの2系統バスを備えており、RAM4へのデータ書込およびRAM4からのデータ読出は独立に行えるようになっている。これにより、転送元のデバイス2Pから出力された転送データのRAM4への書込と、RAM4からの転送データの読出は、独立に行える。RAM4への転送データの書込と読出が独立して行う時、RAM4が転送データで一杯になるオーバーフローと、RAM4に読み出す転送データが存在しないアンダーフローと、が発生する場合が生じる。オーバーフローまたはアンダーフローが発生すると、バスやデバイスが長時間待機状態になり効率が低下する。そこで、転送元のデバイスからRAM4にデータを転送する処理では、RAM4に転送するデータ量以上の空き領域があるかを確認した後転送を指示することにより、オーバーフローを防止する。また、RAM4から転送先のデバイスにデータを転送する処理では、RAM4に転送するデータ量以上のデータが蓄積されているかを確認した後転送を指示することにより、アンダーフローを防止する。
【0013】
上記のように、RAM4へのデータ書込およびRAM4からのデータ読出は独立に行えるようになっており、オーバーフローおよびアンダーフローの防止も独立に制御される。以下の説明では、RAM4からのデータ読出処理を例として説明を行う。一般に、転送元のデバイスからDMA制御装置を経由して転送先のデバイスにデータを送る一連の動作を転送動作と称するが、ここでは、RAM4から読み出したデータを転送先のデバイスに出力する動作も、転送動作と称する。さらに、転送元のデバイスからのデータをRAM4に書き込む動作も転送動作と称する場合がある。
【0014】
図2は、DMA転送処理を示すフローチャートであり、RAM4からのデータ転送処理に関係する。
【0015】
ステップ101では、CPU1が、転送先のアドレス、DMA転送のサイズなどのDMA転送に必要な情報を、RAM情報管理部12および出力制御部13内のレジスタに設定する。
【0016】
上記のように、RAM4へのデータ転送(書込)は独立して行われており、書込ポインタWP14は順次増加する。しかし、RAM4からのデータ転送(読出)は行われていないので、読出ポインタRP15は変化しない。
【0017】
ステップ102では、RAM情報管理部12が、書込ポインタWP14と読出ポインタRP15の差が、指定サイズに到達したかを判定する。この差はRAM4に蓄積されている転送データ量を示しており、この差が指定サイズより少ない場合には、RAM4から転送する転送データが準備できていないことを意味する。そこで、この差が指定サイズに到達に到達していなければ待機し、到達していればCPU1に対して指定サイズ到達の割り込みを発生し、ステップ103に進む。
【0018】
ステップ103では、CPU1が、RAM4から転送先のデバイス2Qへのデータ転送の開始を指示する。これに応じて、RAM4からデータを読み出し、出力制御部13を介して転送先のデバイス2Qにデータを転送する。したがって、読出ポインタRP15は順次増加する。
【0019】
ステップ104では、RAM情報管理部12が、読出処理が完了したか、すなわちRAM4に書き込まれた指定されたサイズの転送データがすべて読み出されたかを判定し、完了していなければ待機し、完了していればCPU1に対して読出完了の割り込みを発生し、ステップ105に進む。
【0020】
ステップ105では、CPU1が、次のDMA要求が残っているかを判定し、あればステップ102に戻り、なければDMA処理を終了する。例えば、16バイトのデータを4バイトずつ転送する場合には、以上の転送処理を4回繰り返すことになる。
【0021】
図3は、上記のDMA転送処理を説明する図である。図において、WPが書込ポインタの示すアドレス位置を、RPが読出ポインタの示すアドレス位置を、Xが指定サイズを示す。図3において、(a)のように、CPUが前回のRAM4からの転送処理が終了しているかを確認する。そして、DMA情報管理部12は、WP−RP≧Xになって1番目のデータAがRAM4に蓄積されているかを確認する。そして、蓄積されていれば指定サイズ到達の割り込みをCPUに対して発生し、CPUの指示に応じてデータAのRAM4からの読出処理を開始する。これにより、(b)のように、RPが増加する。この読出処理の間もRAM4へのデータの書込は並行して独立に行われるので、WPも独立して増加する。ここで、(b)のようにWPの方がRPより速く増加する場合、(c)のように、2番目のデータBのRAM4への書込が終了しても、データAのRAM4からの読出は終了していないことになる。この場合、データAのRAM4からの読出が終了するまでデータBのRAM4からの読出は行わず待機する。
【0022】
そして、(d)のように、CPUがデータAのRAM4からの読出が終了していることを確認する。そして、DMA情報管理部12は、WP−RP≧Xになって2番目のデータBがRAM4に蓄積されていることを確認すると、CPUに対して指定サイズ到達の割り込みを発生し、CPUの指示に応じてデータBのRAM4からの転送処理を開始する。この間、RAM4へのデータの書込は並行して独立に行われるので、WPは独立して増加している。
【0023】
以上説明したように、上記のDMA転送の例では、前回のRAM4からの転送処理が完了し且つ設定されたサイズ分の転送データがRAM4に書き込まれたことを確認した後、DMA転送のRAM4からの次の転送処理を開始していた。そのため、転送先のデバイスにアクセスする時のレイテンシーが大きい場合には、アクセスのための遅延が大きくなり、転送効率が向上しないという問題が生じていた。
【0024】
そこで、CPUが、転送元のアドレス、転送先のアドレス、DMA転送のサイズなどのDMA転送に必要な情報をDMA転送制御装置のレジスタに書き込むDMA転送指示を、先行して発行することが提案されている。この場合、DMA転送指示を先行して発行する時にも、アンダーフローおよびオーバーフローが発生しないようにする必要がある。そこで、先行して発行した転送指示によるデータ転送量を考慮してアンダーフローおよびオーバーフローが発生しないように制御することが提案されている。具体的には、RAM4に書き込まれているデータ量を示すカウンタと、先行して発行した転送指示により転送される予定のデータ量から既に転送完了したデータ量を減じた未転送データ量を示すカウンタを設ける。そして、2個のカウンタの差に基づいてアンダーフローが発生しないと判定した場合に、たとえ前回の転送処理が完了していなくても次の転送指示を発行する。また、転送元のデバイスからの転送データをRAM4に書き込む場合についても、先行して発行した転送(書込)指示によるデータ転送量を考慮してオーバーフローが発生しないように制御することが提案されている。この場合にも、カウンタを使用する。
【0025】
上記のような複数のカウンタを設ける場合、回路規模が大きくなりコスト増加という問題を生じる。また、これらのカウンタは、RAM4でのデータの書込および読出が行われるたびに加算および減算が行われカウント値が変化する。そのため、カウンタの状態は頻繁に変化することになり、それに伴って消費電力が大きくなるという問題があった。
【先行技術文献】
【特許文献】
【0026】
【特許文献1】特開2008−83911号公報
【特許文献2】特開2002−41445号公報
【発明の概要】
【発明が解決しようとする課題】
【0027】
開示の実施形態では、DMA転送指示を先行して発行しても、アンダーフローおよびオーバーフローの発生を防止できるDMA転送制御装置および方法が、小さな回路規模で且つ低消費電力で実現される。
【課題を解決するための手段】
【0028】
実施形態の第1の態様は、転送元からの転送データを一時的にメモリに書き込み、メモリに書き込まれた転送データを、転送指示に応じて読み出して転送先に出力するDMA転送制御装置である。第1の態様のDMA転送制御装置は、書き込まれた転送データのメモリにおける先頭位置を示すライトポインタと、転送指示で指示済みの転送データのメモリにおける位置を示す指示済リードポインタと、を備え、ライトポインタと指示済リードポインタの差分と、転送サイズとを比較し、差分が転送サイズ以上の時に、読出指示を発行する。
【発明の効果】
【0029】
実施形態のDMA転送制御装置および方法によれば、ポインタを1個追加することで、CPUの負荷を増加させることなくDMA転送効率を向上することができる。また、実施形態のDMA転送制御装置および方法は、低消費電力および小規模回路で実現可能である。
【図面の簡単な説明】
【0030】
【図1】図1は、DMA転送制御装置を含む一般的なコンピュータシステムの構成例を示し、DMA転送制御装置によるDMA転送を説明する図である。
【図2】図2は、図1のDMA転送処理を示すフローチャートである。
【図3】図3は、図1のDMA転送処理における動作を説明する図である。
【図4】図4は、第1実施形態のDMA転送制御装置を含むコンピュータシステムの構成を示す図である。
【図5】図5は、第1実施形態のDMA転送制御装置の詳細な構成を示す図である。
【図6】図6は、第1実施形態におけるDMA転送処理を示すフローチャートである。
【図7】図7は、第1実施形態におけるDMA転送処理の動作を説明する図である。
【図8】図8は、第1実施形態におけるDMA転送処理の動作例を示すタイムチャートである。
【図9】図9は、第1実施形態におけるDMA転送処理の別の動作例を示すタイムチャートである。
【図10】図10は、第2実施形態のDMA転送制御装置を含むコンピュータシステムの構成を示す図である。
【発明を実施するための形態】
【0031】
図4は、第1実施形態のコンピュータシステムの構成を示す図である。
【0032】
図4に示すように、第1実施形態のコンピュータシステムは、CPU1と、転送元のデバイス2Pと、転送先のデバイス2Qと、DMA転送制御装置3と、DMA転送制御装置3に接続されたFIFOメモリを形成するためのRAM4と、システムバス5と、DMAバス6A、6Bと、を備える。RAM4は、SRAMなどが使用され、DMA転送制御装置3内に設けることも可能である。コンピュータシステムには、他にも各種のデバイスが接続されるが、ここではDMA転送に関係する部分のみを示している。
【0033】
第1実施形態のコンピュータシステムでは、DMA転送指示は、前のDMA転送動作が完了する前に先行して発行することが可能であり、2つ以上のDMA転送指示を先行して発行することが可能である。
【0034】
転送元のデバイス2Pおよび転送先のデバイス2Qは、メモリコントローラおよびそれに接続されたメモリや、磁気ディスク装置などの外部記憶装置や、通信インターフェースなどの各種のデバイスである。CPU1、転送元のデバイス2P、転送先のデバイス2Q、DMA転送制御装置3およびRAM4は、それぞれ1チップの半導体装置として形成し、システムバス5とおよびDMAバス6を形成したプリント基板上に搭載することが可能である。また、CPU1、DMA転送制御装置3およびシステムバス5に、転送元のデバイス2Pおよび転送先のデバイス2Q、他のデバイスおよびDMAバス6A、6Bの一部またはすべて、さらにRAM4などを1チップに搭載することも可能である。
【0035】
図4に示すように、CPU1、転送元のデバイス2P、転送先のデバイス2QおよびDMA転送制御装置3は、システムバス5を介して接続され、相互にデータを通信することが可能である。また、転送元のデバイス2P、転送先のデバイス2QおよびDMA転送制御装置3は、DMAバス6A、6Bを介して相互に接続されている。これにより、転送元のデバイス2Pと転送先のデバイス2Qは、DMA転送制御装置3を介してデバイス間でDMA転送を行うことが可能である。
【0036】
DMAバス6Aは、転送元のデバイス2Pのデータを、DMA転送制御装置3を介してRAM4にDMA転送するのに使用される。DMAバス6Bは、RAM4に書き込まれたデータを、DMA転送制御装置3を介して転送先のデバイス2QにDMA転送するのに使用される。2つのDMAバス6AおよびDMAバス6Bが設けられているので、転送元のデバイス2Pから出力された転送データのRAM4への書込と、RAM4からの転送データの読出は、独立に行える。
【0037】
また、RAM4への転送データの書込と読出が独立して行うため、オーバーフローおよびアンダーフローの防止も独立して制御される。ここでは、RAM4から転送先のデバイス2QへのDMA転送、すなわちRAM4からのデータ読出処理を例として説明を行う。しかし、転送元のデバイス2PからRAM4へのDMA転送、すなわちRAM4へのデータ書込処理についても開示の技術が同様に適用できることは、当業者には容易に理解できることである。
【0038】
DMA転送制御装置3は、DMAバス6Aに接続される入力制御部11と、RAM情報管理部12と、DMAバス6Bに接続される出力制御部13と、を備える。入力制御部11、RAM情報管理部12および出力制御部13は、システムバス5を介してそれぞれCPU1と通信可能である。
【0039】
RAM情報管理部12は、RAM4をFIFOメモリとして動作させるために、RAM4において、書き込んだデータの先頭位置(アドレス)を示す書込ポインタWP14と、読み出したデータの後尾位置(アドレス)を示す読出ポインタRP15と、備える。RAM情報管理部12は、直前に発行したDMA転送指示で既に読出指示を行ったデータの位置(アドレス)を示す読出指示済ポインタRAP16を更に備える。
【0040】
図5は、RAM情報管理部12のより詳細な構成を示す図である。図5に示すように、RAM情報管理部12は、CPUインターフェース(CPU I/F)20と、入力制御部I/F31と、出力制御部I/F32と、RAMI/F33と、を備える。また、CPUインターフェース20は、レジスタ群21と、書込ポインタWPの値から読出指示済ポインタRAPを減じた値が指定サイズX以上であるかを判定して条件を満たした時にレジスタに指定サイズ到達を示す値の書込を行う演算器22と、レジスタ制御部23と、を備える。レジスタ群21は、RAM4へ書き込まれた転送データの先頭位置を示す書込ポインタWPと、CPU1から指示されたDMA転送の指定サイズXと、RAM4に書き込まれた転送データの後尾位置を示す読出ポインタRPと、読出指示済ポインタRAPと、を記憶するレジスタを含む。レジスタ群21は、さらに指定サイズ到達割り込みの発生を示すレジスタを備える。書込ポインタWPは、入力制御部11を介して入力された転送データをRAM4に書き込むたびに更新される。読出ポインタRPは、RAM4から記憶された転送データを読み出すたびに更新される。読出指示済ポインタRAPは、CPU1が転送指示を発行する時に、その時点の読出指示済ポインタRAPに指定サイズXを加えた値に更新される。レジスタ制御部23は、CPU1から指示された指定サイズXをレジスタに記憶し、書込ポインタWP、読出ポインタRPおよび読出指示済ポインタRAPを更新する。また、指定サイズ到達割り込みの発生を示すレジスタに指定サイズ到達を示す値が設定されると、CPU1に対して指定サイズ到達割り込みが発生する。
【0041】
図6は、第1実施形態におけるDMA転送処理を示すフローチャートであり、RAM4からのデータ読出処理に関係するフローチャートである。
【0042】
ステップ201では、CPU1が、転送先のアドレス、DMA転送のサイズなどのDMA転送に必要な情報を、RAM情報管理部12および出力制御部13内のレジスタに設定する。
【0043】
上記のように、RAM4へのデータ書込は独立して行われており、書込ポインタWP14は順次増加する。
【0044】
ステップ202では、書込ポインタWP14から指示済読出ポインタRAPを減じた値が、指定サイズX以上であるかを判定する。この判定は、演算器22で行われ、条件を満たさない時には待機し、条件を満たした時にはレジスタへの書き込みが行われ、それに応じてCPU1に対して指定サイズ到達割り込みが発生する。この条件が満たされた時は、RAM4に書き込まれた転送データのうちで、転送(読出)がされていないデータの量が指定サイズ以上であり、アンダーフローを生じないで転送が行えることを意味する。指定サイズ到達割り込みが発生すると、ステップ203に進む。
【0045】
ステップ203では、CPU1は、指定サイズ到達の割り込みを受けると、DMA制御装置3に対して、RAM3から転送先のデバイスへのDMA転送指示を発行し、ステップ204に進む。DMA転送指示を受けると、RAM制御情報管理部12のレジスタ制御部23は、その時点の読出指示済ポインタRAPの値に指定サイズXを加えた値を、新たに読出指示済ポインタRAPとして記憶する。この時に発行されたDMA転送指示が1回目の指示であれば、RAM4からのデータの転送はただちに開始され、2回目以降の指示であれば、前のDMA転送が終了した直後に開始される。
【0046】
ステップ204では、CPU1は、RAM4から転送先のデバイスにDMA転送する処理が残っているかを判定し、残っていればステップ202に戻り、残っていなければDMA転送を終了する。
【0047】
図7は、第1実施形態のDMA転送処理を説明する図である。図において、WPが書込ポインタの示すアドレス位置を、RPが読出ポインタの示すアドレス位置を、Xが指定サイズを示す。図7において、(a)のように、RAM4からのDMA転送のための読出が行われていない状態では、読出ポインタRPおよび読出指示済ポインタRAPは同じ位置(アドレス)を示している。RAM4へのデータの書き込みは独立に行われており、書込ポインタWPは随時変化している。DMA情報管理部12は、WP−RAP≧Xになって、DMA転送指示を発行していない1番目のデータAがRAM4に蓄積されているかを確認する。そして、蓄積されていれば、DMA情報管理部12は、指定サイズ到達の割り込みをCPUに対して発生し、RAPをその時点のRAPにXを加えた値に変化させた後、CPUの指示に応じてデータAのRAM4からの読出処理を開始する。これにより、(b)のように、RAPがXだけ増加する。そして、読出処理に伴ってRPが変化する。
【0048】
この読出処理の間もRAM4へのデータの書込は並行して独立に行われるので、WPは独立して増加する。ここで、(b)のようにWPの方がRPより速く増加する場合、(c)のように、2番目のデータBのRAM4への書込が終了しても、データAのRAM4からの転送は終了していないことになる。
【0049】
ここで、2番目のデータBのRAM4への転送(書込)が終了すると、WP−RAP≧Xを満たす。そのため、指定サイズ到達の割り込みがCPUに対して発生し、RAPをその時点のRAPにXを加えた値に変化させた後、CPUはデータBのRAM4からの転送指示を発行する。これにより、RAPはデータBの先頭位置を示す値になるが、上記のように、データBのRAM4からの転送指示が発行されても、データAのRAM4からの読出が終了していないので、そのままデータAのRAM4からの転送が行われる。そして、データAのRAM4からの転送が終了すると、(d)のように、RPはデータBの後尾位置になる。この時、WPは更に先に進んでいる。データBの転送指示はすでに発行されているので、データBの転送が引き続いて行われる。
【0050】
図7に示すように、第1実施形態では、前データの転送処理が終了する前に次のデータの転送指示が発行されるため、その分無駄な時間を消費することがなくなり、転送効率の高いDMA転送が実現できる。
【0051】
なお、WP−RAP≧Xの条件が満たされるならば、2つ以上の転送指示を先行して発行することが可能である。例えば、16バイトのデータを1回のDMA転送で4バイトずつ転送する場合、16バイトのデータがRAM4に既に書き込まれている場合には、特に何もなければ転送指示が4回続けて発行されることになる。これにより、最初の4バイトのデータが転送されている時に、すでに3つの転送指示が発行済みである。
【0052】
図8は、第1実施形態におけるRAMからのDMA転送の動作例を示すタイムチャートであり、(A)が図1から図3で説明した背景技術における動作例を、(B)が第1実施形態における動作例を示す。図8の動作例では、読出処理はすべて1サイクルで行う。また、この動作例では、指定サイズは4バイトで、DMA転送処理における3回の読出動作を示す。
【0053】
図8の(A)に示すように、背景技術では、1回のDMA転送動作の完了後、次のDMA転送動作に関して転送可能かどうかの判定を行い、転送可能であればDMA転送指示を発行する。この判定動作および転送指示動作は、図8の(A)において、2番目のデータについてはクロック(CLK)11から13で、3番目のデータについてはCLK17から19で、行われる。
【0054】
これに対して、図8の(B)に示すように、第1実施形態では、1回のDMA転送動作の完了を待たずに、次のDMA転送動作に関して転送可能かどうかの判定を行い、転送可能であればDMA転送指示を発行する。この転送指示動作は、図8の(B)において、2番目のデータについてはCLK11で、3番目のデータについてはCLK15で、行われる。
【0055】
図8の(A)と(B)を比較して明らかなように、3回のDMA転送動作が、背景技術ではCLK23で終了しているのに対して、第1実施形態ではCLK19で終了しており、4クロック早く完了している。
【0056】
図9は、第1実施形態におけるRAMからの読出に関するDMA転送の別の動作例を示すタイムチャートであり、(A)が図1から図3で説明した背景技術における動作例を、(B)が第1実施形態における動作例を示す。図9の(A)では、読出処理を、RPの値が偶数の場合は1サイクルで行い、奇数の場合は2サイクルで行う。同様に、図9の(B)では、読出処理を、RAPの値が偶数の場合は1サイクルで行い、奇数の場合は2サイクルで行う。また、この動作例では、指定サイズは4バイトで、DMA転送処理における3回の読出動作を示す。
【0057】
図9の(A)に示すように、背景技術では、1回のDMA転送動作の完了後、次のDMA転送動作に関して転送可能かどうかの判定を行い、転送可能であればDMA転送指示を発行する。この判定動作および転送指示動作は、図9の(A)において、2番目のデータについてはクロック(CLK)13から15で、3番目のデータについてはCLK21から23で、行われる。
【0058】
これに対して、図9の(B)に示すように、第1実施形態では、RAMに指定サイズ以上のデータが書き込まれた状態で、1回のDMA転送動作の完了を待たずに、次のDMA転送指示を発行する。この転送指示動作は、図9の(B)において、2番目のデータについてはCLK11で、3番目のデータについてはCLK15で、行われる。
【0059】
図9の(A)と(B)を比較して明らかなように、3回目のDMA転送動作が、背景技術ではCLK24で開始されるのに対して、第1実施形態ではCLK20で開始されており、4クロック早く開始している。
【0060】
図8の(B)および図9の(B)では、RAPが所定の値になった時に1回分のDMAが開始されていることが分かる。
【0061】
このことは、転送可能なDMAを複数個先行発行することが可能なため、転送予定のDMA転送指示の発行を早い段階で完了することができ、CPUは別の処理に移行することができるようになり、結果としてCPUの処理効率を向上することができることを示している。
【0062】
以上説明したように、第1実施形態では、DMA転送制御装置3にポインタを1個追加するだけで、CPUの負荷を増加させることなくDMA転送効率を向上することができる。また、第1実施形態のDMA転送制御装置3は、ポインタを1個追加しただけなので、低消費電力および小規模回路で実現可能である。
【0063】
図10は、第2実施形態のコンピュータシステムの構成を示す図であり、図4に対応する図である。図4と比較して明らかなように、第2実施形態のDMA制御装置3は、第1実施形態のDMA制御装置3のRAM情報管理部12に、書込指示済ポインタWAP17を更に設けたことが異なる。書込指示済ポインタWAP17は、直前に発行した転送元のデバイスからRAM4へのDMA転送指示で既に書込指示を行ったデータの位置(アドレス)を示す。
【0064】
第2実施形態では、転送元のデバイスからRAM4への転送指示を、先行して発行することが可能になり、転送元のデバイスからRAM4への転送動作で、第1実施形態と同様の効果が更に得られる。なお、当業者であれば、第2実施形態の動作について、第1実施形態の説明により容易に理解できるので、詳しい説明は省略する。
【0065】
ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【0066】
1 CPU
2A、2B、2N デバイス
2P 転送元デバイス
2Q 転送先デバイス
3 DMA転送制御装置
4 RAM
5 システムバス
6、6A、6B DMAバス
11 入力制御部
12 RAM情報管理部
13 出力制御部
14 書込ポインタ(WP)
15 読出ポインタ(RP)
16 指示済読出ポインタ(RAP)
17 指示済書込ポインタ(WAP)

【特許請求の範囲】
【請求項1】
転送元からの転送データを一時的にメモリに書き込み、前記メモリに書き込まれた前記転送データを、転送指示に応じて読み出して転送先に出力するDMA転送制御装置であって、
書き込まれた前記転送データの前記メモリにおける先頭位置を示すライトポインタと、
前記転送指示で指示済みの前記転送データの前記メモリにおける位置を示す指示済リードポインタと、を備え、
前記ライトポインタと前記指示済リードポインタの差分と、転送サイズとを比較し、前記差分が前記転送サイズ以上の時に、前記転送指示を発行することを特徴とするDMA転送制御装置。
【請求項2】
書き込まれた前記転送データの前記メモリにおける後尾位置を示す第1リードポインタを、さらに備える請求項1に記載のDMA転送制御装置。
【請求項3】
2個以上の前記転送指示が先行して発行される請求項1または2に記載のDMA転送制御装置。
【請求項4】
転送元からの転送データを一時的にメモリに書き込み、前記メモリに書き込まれた前記転送データを転送指示に応じて読み出して転送先に出力するDMA転送制御方法であって、
書き込まれた前記転送データの前記メモリにおける先頭位置を示すライトポインタの値を検出し、
前記転送指示で指示済みの前記転送データの前記メモリにおける位置を示す指示済リードポインタの値を検出し、
前記ライトポインタと前記指示済リードポインタの差分と、転送サイズとを比較し、
前記差分が前記転送サイズ以上の時に、前記転送指示を発行する、ことを特徴とするDMA転送制御方法。
【請求項5】
2個以上の前記転送指示が先行して発行される請求項4に記載のDMA転送制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate