(57)【特許請求の範囲】
【請求項１】
転送先アドレスの加算値または減算値と、転送元アドレスの加算値または減算値とが同じであるＤＭＡコントローラにおいて、
転送元アドレスの現状値を格納する転送元アドレスレジスタと、
転送元アドレスの初期値を格納する転送元リロードレジスタと、
転送元アドレスの初期値と転送先アドレスの初期値との差分を求める第１の差分計算用演算器と、
前記第１の差分計算用演算器により求められた差分値を格納する差分保持レジスタと、
前記差分保持レジスタに格納された差分値と前記転送元アドレスレジスタに格納された転送元アドレスの現状値とに基づいて転送先アドレスの現状値を求める第２の差分計算用演算器とを具備し、
前記差分保持レジスタには、前記第１の差分計算用演算器により新たに求められた差分値を格納するときのみ、クロックが供給され、
前記転送元アドレスレジスタに格納された前記転送元アドレスの現状値をデータ転送の転送元アドレスとして出力し、
前記第２の差分計算用演算器の求めた前記転送先アドレスの現状値を転送先アドレスとして出力し、
前記転送元アドレスレジスタに格納されている前記転送元アドレスの現状値は、当該転送元アドレスの現状値に基づいて転送元から読み出されたデータが転送先に書き込まれた直後に、前記加算値または前記減算値により更新されることを特徴とするＤＭＡコントローラ。
【請求項２】
前記第１の差分計算用演算器には、前記転送元リロードレジスタから転送元アドレスの初期値が供給されることを特徴とする請求項１に記載のＤＭＡコントローラ。
【請求項３】
前記転送元アドレスレジスタに格納されている転送元アドレスの現状値は、データ転送が指定された回数だけ終了すると、前記転送元リロードレジスタに格納されている転送元アドレスの初期値に書き換えられることを特徴とする請求項１または２に記載のＤＭＡコントローラ。
【請求項４】
前記転送元アドレスレジスタに格納されている転送元アドレスの現状値が、前記転送元リロードレジスタに格納されている転送元アドレスの初期値に書き換えられると、前記第２の差分計算用演算器は、書き換えられた転送元アドレスの現状値と前記差分保持レジスタに格納された差分値とに基づいて転送先アドレスの初期値を求めることを特徴とする請求項３に記載のＤＭＡコントローラ。
【請求項５】
転送先アドレスの加算値または減算値と、転送元アドレスの加算値または減算値とが同じであるＤＭＡコントローラにおいて、
転送先アドレスの現状値を格納する転送先アドレスレジスタと、
転送先アドレスの初期値を格納する転送先リロードレジスタと、
転送先アドレスの初期値と転送元アドレスの初期値との差分を求める第３の差分計算用演算器と、
前記第３の差分計算用演算器により求められた差分値を格納する差分保持レジスタと、
前記差分保持レジスタに格納された差分値と前記転送先アドレスレジスタに格納された転送先アドレスの現状値とに基づいて転送元アドレスの現状値を求める第４の差分計算用演算器とを具備し、
前記差分保持レジスタには、前記第３の差分計算用演算器により新たに求められた差分値を格納するときのみ、クロックが供給され、
前記転送先アドレスレジスタに格納された前記転送先アドレスの現状値をデータ転送の転送先アドレスとして出力し、
前記第４の差分計算用演算器の求めた前記転送元アドレスの現状値を転送元アドレスとして出力し、
前記転送先アドレスレジスタに格納されている前記転送先アドレスの現状値は、当該転送先アドレスの現状値に該当する領域に、転送元から読み出されたデータが書き込まれた直後に、前記加算値または前記減算値により更新されることを特徴とするＤＭＡコントローラ。
【請求項６】
前記第３の差分計算用演算器には、前記転送先リロードレジスタから転送先アドレスの初期値が供給されることを特徴とする請求項５に記載のＤＭＡコントローラ。
【請求項７】
前記転送先アドレスレジスタに格納されている転送先アドレスの現状値は、データ転送が指定された回数だけ終了すると、前記転送先リロードレジスタに格納されている転送先アドレスの初期値に書き換えられることを特徴とする請求項５または６に記載のＤＭＡコントローラ。
【請求項８】
前記転送先アドレスレジスタに格納されている転送先アドレスの現状値が、前記転送先リロードレジスタに格納されている転送先アドレスの初期値に書き換えられると、前記第４の差分計算用演算器は、書き換えられた転送先アドレスの現状値と前記差分保持レジスタに格納された差分値とに基づいて転送元アドレスの初期値を求めることを特徴とする請求項７に記載のＤＭＡコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、低消費電力型のＤＭＡ（ダイレクト・メモリ・アクセス）コントローラに関する。
【０００２】
近年、家庭電化製品等の電気機器においては、低消費電力化が望まれている。そのため、電気機器に内蔵されるマイクロコンピュータについても、低消費電力で動作するものが要求されている。一方で、マイクロコンピュータを使用する電気機器はますます高性能化されてきており、より高速で動作する回路が必要である。したがって、マイクロコンピュータを搭載した電気機器では、データ転送等の性能を落とさずに低消費電力化をおこなう必要がある。
【０００３】
【従来の技術】
一般に、コンピュータの分野において、メモリ間やメモリと周辺機器との間で高速にデータ転送をおこなう方式として、ＣＰＵを介さずに直接データの授受をおこなうＤＭＡ転送方式がある。図５は、従来の一般的なＤＭＡコントローラの回路構成を示す図である。図５に示すように、従来のＤＭＡコントローラは、データバス１からＣＰＵライトによる転送元アドレス、転送先アドレスおよび転送回数が供給されると、転送元アドレスを転送元アドレス生成部２の転送元アドレスレジスタ（ＳＡ）２１および転送元リロードレジスタ（ＳＡＲ）２２に格納する。
【０００４】
また、転送先アドレスは転送先アドレス生成部３の転送先アドレスレジスタ（ＤＡ）３１および転送先リロードレジスタ（ＤＡＲ）３２に格納される。さらに、転送回数が転送回数設定部４の転送回数レジスタ（ＴＮ）４１および転送回数リロードレジスタ（ＴＮＲ）４２に格納される。このように、各リロードレジスタにそれぞれの初期値が格納されることによって、リロード機能が実現されている。
【０００５】
上述した６個のレジスタ２１，２２，３１，３２，４１，４２にそれぞれ現状値および初期値が書き込まれ、開始信号を受け付けると、１回目のデータ転送が開始される。ＤＭＡコントローラは、転送元アドレスおよび転送先アドレスを出力する。それによって、転送元のメモリ等の、転送元アドレスに該当する領域に格納されたデータが、転送先のメモリ等の、転送先アドレスに該当する領域に書き込まれる。
【０００６】
１回目のデータ転送が終了すると、演算器２４により、転送元アドレスレジスタ２１の格納値に対して、予め設定された増減幅設定値（符号２５で示す）の加算または減算がおこなわれる。その演算の結果得られた値は、セレクタ２３を介して転送元アドレスレジスタ２１に、新たな転送元アドレスとして格納される。
【０００７】
転送先アドレスについても同様であり、１回のデータ転送が終了すると、演算器３４により、転送先アドレスレジスタ３１の格納値に対して、予め設定された増減幅設定値（符号３５で示す）の加算または減算がおこなわる。その演算結果は、セレクタ３３を介して転送先アドレスレジスタ３１に、新たな転送先アドレスとして格納される。ここで、本明細書では、転送元アドレスの増減幅と転送先アドレスの増減幅とは同じであることを前提としている。
【０００８】
また、転送回数については、１回のデータ転送が終了すると、演算器４４により、転送回数レジスタ４１の格納値が１だけ減算される。その演算結果は、セレクタ４３を介して転送回数レジスタ４１に、新たな転送回数として格納される。転送元アドレスレジスタ２１、転送先アドレスレジスタ３１および転送回数レジスタ４１にそれぞれ新たな値が格納されると、２回目のデータ転送が開始される。データ転送は、転送回数レジスタ４１に格納された値が転送の最終値（たとえば「１」）になるまで繰り返しおこなわれる。
【０００９】
転送回数レジスタ４１の格納値が転送の最終値のときのデータ転送が終了すると、転送元リロードレジスタ２２、転送先リロードレジスタ３２および転送回数リロードレジスタ４２にそれぞれ格納されている初期値が、転送元アドレスレジスタ２１、転送先アドレスレジスタ３１および転送回数レジスタ４１に書き込まれる。そして、転送開始を示す信号に応答して、再び上述した動作でデータ転送が繰り返され、停止信号の発生により、停止する。なお、ＣＰＵが現在の転送元アドレス、転送先アドレスまたは転送回数を参照する場合には、転送元アドレスレジスタ２１、転送先アドレスレジスタ３１または転送回数レジスタ４１の各格納値がデータバス１を介してＣＰＵへ送られる。
【００１０】
図６に、図５に示す従来のＤＭＡコントローラにおける転送元アドレスレジスタ２１および転送先アドレスレジスタ３１の更新タイミング、並びに転送データの読み出しおよび書き込みのタイミングを示す。図６に示すように、従来は、転送元のメモリ等から転送対象のデータを読み出した直後に、転送元アドレスレジスタ２１の格納値が更新される。
【００１１】
ところで、転送元アドレスと転送先アドレスの変位量（オフセット）を設定するレジスタを設け、転送元の各アドレスにこの変位量を加減算して転送先の各アドレスを求めるようにした画像編集装置のＤＭＡコントローラ用アドレス発生回路が提案されている（たとえば、特開昭６３−８９９８４号公報）。
【００１２】
【発明が解決しようとする課題】
しかしながら、図５に示す従来のＤＭＡコントローラでは、転送元アドレス生成部２、転送先アドレス生成部３および転送回数設定部４のそれぞれについて、現状値を格納するための転送元アドレスレジスタ２１、転送先アドレスレジスタ３１および転送回数レジスタ４１と、初期値を格納するための転送元リロードレジスタ２２、転送先リロードレジスタ３２および転送回数リロードレジスタ４２が必要である。
【００１３】
そのため、フリップフロップの数が、チャネル数にレジスタのビット数を掛け合わせた数の２倍になってしまい、電力消費の増大および回路規模の増大を招く原因となっている。フリップフロップの電力消費を抑えるため、たとえば周波数を低くすることが考えられるが、この場合には性能低下を招くという不都合が生じる。
【００１４】
また、前記特開昭６３−８９９８４号の提案は、データ転送を高速におこなうためのものであり、消費電力の削減を図るものではない。
【００１５】
本発明は、上記問題点に鑑みてなされたものであって、性能を低下させることなく、低消費電力化および回路規模の縮小化が可能であり、さらには既存の回路に容易に組み込むことが可能な構成のＤＭＡコントローラを提供することを目的とする。
【００１６】
【課題を解決するための手段】
上記目的を達成するため、本発明にかかるＤＭＡコントローラは、転送先アドレス生成部に、転送先アドレスと転送元アドレスとの差分を計算する演算器と、その演算器により求められた差分を格納する差分保持レジスタと、差分保持レジスタに格納された差分と転送元アドレスとに基づいて転送先アドレスを計算して求める演算器とを備える。また、転送元アドレス生成部には、転送元アドレスの現状値を格納する転送元アドレスレジスタと、転送元アドレスの初期値を格納する転送元リロードレジスタを備える。
【００１７】
この発明によれば、転送先アドレス生成部には、転送先アドレスレジスタと転送先リロードレジスタの代わりに、差分保持レジスタが設けられているため、従来に比べてアドレスを保持する一群のレジスタが削減されるので、フリップフロップの数が、チャネル数にレジスタのビット数を掛け合わせた数だけ減る。
【００１８】
また、上記目的を達成するため、本発明にかかるＤＭＡコントローラは、転送元アドレス生成部に、転送元アドレスと転送先アドレスとの差分を計算する演算器と、その演算器により求められた差分を格納する差分保持レジスタと、差分保持レジスタに格納された差分と転送先アドレスとに基づいて転送元アドレスを計算して求める演算器とを備える。また、転送先アドレス生成部には、転送先アドレスの現状値を格納する転送先アドレスレジスタと、転送先アドレスの初期値を格納する転送先リロードレジスタを備える。
【００１９】
この発明によれば、転送元アドレス生成部には、転送元アドレスレジスタと転送元リロードレジスタの代わりに、差分保持レジスタが設けられているため、従来に比べてアドレスを保持する一群のレジスタが削減されるので、フリップフロップの数が、チャネル数にレジスタのビット数を掛け合わせた数だけ減る。
【００２０】
【発明の実施の形態】
以下に、本発明の実施の形態について図面を参照しつつ詳細に説明する。
【００２１】
（実施の形態１）
図１は、本発明の実施の形態１にかかるＤＭＡコントローラの回路構成を示す図である。図１に示すように、このＤＭＡコントローラでは、転送元アドレス生成部２は、転送元アドレスレジスタ（ＳＡ）２１、転送元リロードレジスタ（ＳＡＲ）２２およびセレクタ２３を有する。転送先アドレス生成部５は、第１の差分計算用演算器５１、差分保持レジスタ５２および第２の差分計算用演算器５３を有する。転送回数設定部４は、転送回数レジスタ（ＴＮ）４１、転送回数リロードレジスタ（ＴＮＲ）４２およびセレクタ４３を有する。また、転送元アドレス更新用演算器２４および転送回数更新用演算器４４が設けられている。
【００２２】
転送元アドレスレジスタ２１は、転送元アドレスの現状値を格納するレジスタである。転送元アドレスレジスタ２１に格納された転送元アドレスの現状値は、転送元アドレスとして、転送元のメモリ等に供給される。転送元リロードレジスタ２２は、ＣＰＵライトによりデータバス１から供給された転送元アドレスの初期値を格納するレジスタである。
【００２３】
セレクタ２３は、ＣＰＵライトによりデータバス１から初期値として転送元アドレスが供給されたときには、そのＣＰＵライトにより供給された転送元アドレスを選択する。また、セレクタ２３は、転送回数レジスタ４１により指定された回数のデータ転送が終了したときには、転送元リロードレジスタ２２に格納されている転送元アドレスの初期値を選択する。
【００２４】
また、セレクタ２３は、ＣＰＵライトにより初期値としての転送元アドレスが供給された後、転送回数レジスタ４１により指定された回数のデータ転送が終了する前までは、つぎのアクセスのために転送元アドレス更新用演算器２４により更新された転送元アドレスを選択する。セレクタ２３により選択されたアドレスは現状値として転送元アドレスレジスタ２１に格納される。
【００２５】
転送元アドレス更新用演算器２４は、転送元アドレスレジスタ２１に格納されている転送元アドレスの現状値に対して、予め設定された増減幅設定値（符号２５で示す）の加算または減算をおこなう。その演算結果は、セレクタ２３を介して転送元アドレスレジスタ２１に、新たな転送元アドレスとして格納される。図示しないＣＰＵが現在の転送元アドレスを参照する場合には、転送元アドレスレジスタ２１の格納値がデータバス１を介してＣＰＵへ送られる。
【００２６】
第１の差分計算用演算器５１は、ＣＰＵライトによりデータバス１から初期値として供給された転送先アドレスの、転送元リロードレジスタ２２に格納されている転送元アドレスの初期値に対する差分を計算する。差分保持レジスタ５２は、第１の差分計算用演算器５１により求められた差分値を格納するレジスタである。
【００２７】
第２の差分計算用演算器５３は、差分保持レジスタ５２に格納された差分値を用いて、転送元アドレスレジスタ２１に格納されている転送元アドレスの現状値から転送先アドレスの現状値を計算して求める。第２の差分計算用演算器５３により求められた転送先アドレスの現状値は、転送先アドレスとして、転送先のメモリ等に供給される。転送元アドレスの増減幅と転送先アドレスの増減幅とは同じである。図示しないＣＰＵが現在の転送先アドレスを参照する場合には、第２の差分計算用演算器５３により求められた転送先アドレスの現状値がデータバス１を介してＣＰＵへ送られる。
【００２８】
転送回数レジスタ４１は、転送回数の現状値を格納するレジスタである。転送回数リロードレジスタ４２は、ＣＰＵライトによりデータバス１から供給された転送回数の初期値を格納するレジスタである。
【００２９】
セレクタ４３は、ＣＰＵライトによりデータバス１から初期値として転送回数が供給されたときには、そのＣＰＵライトにより供給された転送回数を選択する。また、セレクタ４３は、転送回数レジスタ４１により指定された回数のデータ転送が終了したときには、転送回数リロードレジスタ４２に格納されている転送回数の初期値を選択する。
【００３０】
また、セレクタ４３は、ＣＰＵライトにより初期値としての転送回数が供給された後、転送回数レジスタ４１により指定された回数のデータ転送が終了する前までは、転送回数更新用演算器４４により更新された転送回数を選択する。セレクタ４３により選択された転送回数は現状値として転送回数レジスタ４１に格納される。
【００３１】
転送回数更新用演算器４４は、転送回数レジスタ４１に格納されている転送回数の現状値から１を引く演算をおこなう。その演算結果は、セレクタ４３を介して転送回数レジスタ４１に、新たな転送回数として格納される。図示しないＣＰＵが現在の転送回数を参照する場合には、転送回数レジスタ４１の格納値がデータバス１を介してＣＰＵへ送られる。
【００３２】
つぎに、図１に示す構成のＤＭＡコントローラの動作について説明する。まず、データバス１からＣＰＵライトによる転送元アドレス、転送先アドレスおよび転送回数が供給される。転送元アドレス生成部２では、供給された転送元アドレスを、転送元アドレスレジスタ２１は現状値として格納し、また転送元リロードレジスタ２２は初期値として格納する。
【００３３】
一方、転送先アドレス生成部５では、供給された転送先アドレスと、転送元リロードレジスタ２２に格納された転送元アドレスの初期値とに基づいて、第１の差分計算用演算器５１によりそれらの差分を求め、それを差分保持レジスタ５２に格納する。また、転送回数は、転送回数レジスタ４１および転送回数リロードレジスタ４２にそれぞれ現状値および初期値として格納される。
【００３４】
転送元アドレスレジスタ２１、転送元リロードレジスタ２２、差分保持レジスタ５２、転送回数レジスタ４１および転送回数リロードレジスタ４２に値が格納され、開始信号を受け付けると、１回目のデータ転送が開始される。ＤＭＡコントローラは、転送元アドレスレジスタ２１の格納値を１回目のデータ転送の転送元アドレスとして転送元のメモリ等に出力する。
【００３５】
このとき、第２の差分計算用演算器５３は、転送元アドレスレジスタ２１に格納されている転送元アドレスに対して、差分保持レジスタ５２の格納値を用いて元の転送先アドレスを求める演算をおこなう。その演算結果は、１回目のデータ転送の転送先アドレスとして転送先のメモリ等に出力される。それによって、転送元のメモリ等の、転送元アドレスに該当する領域に格納されたデータが、転送先のメモリ等の、転送先アドレスに該当する領域に書き込まれる。
【００３６】
１回目のデータ転送が終了すると、転送回数更新用演算器４４により、転送回数レジスタ４１の格納値が１だけ減算される。その演算結果は、セレクタ４３を介して転送回数レジスタ４１に、新たな転送回数として格納される。また、転送元アドレス更新用演算器２４により、転送元アドレスレジスタ２１の格納値に対して、予め設定された増減幅設定値２５の加算または減算がおこなわれる。その演算結果は、転送元アドレスレジスタ２１に２回目のデータ転送の転送元アドレスとして格納され、２回目のデータ転送時に出力される。
【００３７】
一方、２回目のデータ転送時の転送先アドレスは、２回目のデータ転送の転送元アドレスと差分保持レジスタ５２の格納値とに基づいて、第２の差分計算用演算器５３による演算処理によって求められ、２回目のデータ転送時に出力される。３回目以降のデータ転送も同様にしておこなわれる。転送回数レジスタ４１の格納値が転送の最終値のときのデータ転送が終了すると、転送元リロードレジスタ２２に格納されている初期値が、転送元アドレスレジスタ２１に書き込まれる。
【００３８】
このとき、転送先アドレスの初期値は、転送元リロードレジスタ２２から転送元アドレスレジスタ２１に書き込まれた転送元アドレスの初期値と差分保持レジスタ５２の格納値とに基づいて、第２の差分計算用演算器５３による演算処理によって求められる。また、転送回数レジスタ４１には、転送回数リロードレジスタ４２に格納されている初期値が書き込まれる。そして、転送開始を示す信号に応答して、再び上述した動作でデータ転送が繰り返され、停止信号の発生により、停止する。
【００３９】
図２に、図１に示す構成のＤＭＡコントローラにおける転送元アドレスレジスタ２１の更新タイミング、並びに転送データの読み出しおよび書き込みのタイミングを示す。図２に示すように、実施の形態１では、転送先のメモリ等に転送対象のデータを書き込んだ直後に、転送元アドレスレジスタ２１の格納値が更新される。したがって、転送元アドレスレジスタ２１の格納値と差分保持レジスタ５２の格納値とに基づいて転送先アドレスを求めるために、転送元アドレスの現状値を格納するレジスタを別途設けずに済む。
【００４０】
一例として、転送元アドレスと転送先アドレスの増減幅が同じである、３２ビットアドレス空間からチャネル数が８の場合について考察する。転送元アドレス生成部２は、転送元アドレスレジスタ２１と転送元リロードレジスタ２２を有するため、つぎの計算式（１）より５１２ビットのフリップフロップを有する。また、転送先アドレス生成部５は、差分保持レジスタ５２を有するため、差分保持レジスタ５２が３２ビットであるとすると、つぎの計算式（２）より２５６ビットのフリップフロップを有する。
【００４１】
（３２×２）×８＝５１２ビット  ・・・（１）
（３２×１）×８＝２５６ビット  ・・・（２）
【００４２】
それに対して、図５に示す従来のＤＭＡコントローラでは、転送先アドレス生成部３が転送先アドレスレジスタ３１と転送先リロードレジスタ３２を有するため、転送先アドレス生成部３も５１２ビットのフリップフロップを有する。したがって、実施の形態１によれば、つぎの計算式（３）より２５６ビットのフリップフロップを削減することができ、これは従来のフリップフロップの数の２５％に相当する。
【００４３】
５１２ビット×２−（５１２ビット＋２５６ビット）＝２５６ビット  ・・・（３）
【００４４】
また、差分保持レジスタ５２に格納されている差分値は、新たな転送元アドレスと新たな転送先アドレスがＣＰＵライトにより供給されるまでは、普遍である。このため、差分保持レジスタ５２の格納値を書き換えるとき以外は、差分保持レジスタ５２にクロックを供給する必要がない。したがって、差分保持レジスタ５２の書き換え時以外は、クロックを止めても何ら問題がなく、そのようにすることによって、さらに消費電力を低減することができる。具体的に上述した計算例によれば、差分保持レジスタ５２の、前記（２）式より得られた２５６ビットのフリップフロップがほとんど動作することがないため、約５０％の電力の削減効果と２５％の面積削減効果が得られる。
【００４５】
上述した実施の形態１によれば、転送先アドレス生成部５が、転送先アドレスレジスタと転送先リロードレジスタの代わりに、差分保持レジスタ５２を有する構成であるため、従来に比べてアドレスを保持する一群のレジスタが削減され、電力消費の原因であったフリップフロップの数が、チャネル数にレジスタのビット数を掛け合わせた数だけ減る。したがって、ＤＭＡコントローラの消費電力を低減することができる。
【００４６】
また、実施の形態１によれば、フリップフロップの削減により、フリップフロップに付随して存在するクロックバッファを削減することができる。クロックバッファは、クロックを伝える動作をするため、動作率が高く、電力を消費する原因となっているが、これを削減することにより、さらなる低消費電力化を図ることができる。
【００４７】
また、実施の形態１によれば、差分を計算する２つの演算器５１，５３は、削減されたフリップフロップよりも小さい論理回路で構成されるため、回路規模を縮小することができる。
【００４８】
また、実施の形態１によれば、低消費電力化を図るために動作周波数を低くする必要がないので、性能低下を防ぐことができる。
【００４９】
また、実施の形態１によれば、従来のＤＭＡコントローラと同様に、ＤＭＡコントローラから転送先および転送元の各メモリ等にそれぞれ転送先アドレスおよび転送元アドレスが出力され、かつＤＭＡコントローラからデータバス１を介してＣＰＵへ転送先アドレス、転送元アドレスおよび転送回数が出力されるので、ＤＭＡコントローラとその外部との接続関係が従来と同じであり、接続関係の変更をおこなわずに済む。したがって、実施の形態１のＤＭＡコントローラを既存の回路に容易に組み込むことができる。
【００５０】
（実施の形態２）
図３は、本発明の実施の形態２にかかるＤＭＡコントローラの回路構成を示す図である。図３に示すように、このＤＭＡコントローラでは、転送先アドレス生成部３は、転送先アドレスレジスタ（ＤＡ）３１、転送先リロードレジスタ（ＤＡＲ）３２およびセレクタ３３を有する。転送元アドレス生成部６は、第３の差分計算用演算器６１、差分保持レジスタ６２および第４の差分計算用演算器６３を有する。転送回数設定部４および転送回数更新用演算器４４は、実施の形態１と同じ構成であるため、実施の形態１と同一の符号を付して説明を省略する。また、転送先アドレス更新用演算器３４が設けられている。
【００５１】
転送先アドレスレジスタ３１は、転送先アドレスの現状値を格納するレジスタである。転送先アドレスレジスタ３１に格納された転送先アドレスの現状値は、転送先アドレスとして、転送先のメモリ等に供給される。転送先リロードレジスタ３２は、ＣＰＵライトによりデータバス１から供給された転送先アドレスの初期値を格納するレジスタである。
【００５２】
セレクタ３３は、ＣＰＵライトによりデータバス１から初期値として転送先アドレスが供給されたときには、そのＣＰＵライトにより供給された転送先アドレスを選択する。また、セレクタ３３は、転送回数設定部４の転送回数レジスタ４１により指定された回数のデータ転送が終了したときには、転送先リロードレジスタ３２に格納されている転送先アドレスの初期値を選択する。
【００５３】
また、セレクタ３３は、ＣＰＵライトにより初期値としての転送先アドレスが供給された後、転送回数レジスタ４１により指定された回数のデータ転送が終了する前までは、つぎのアクセスのために転送先アドレス更新用演算器３４により更新された転送先アドレスを選択する。セレクタ３３により選択されたアドレスは現状値として転送先アドレスレジスタ３１に格納される。
【００５４】
転送先アドレス更新用演算器３４は、転送先アドレスレジスタ３１に格納されている転送先アドレスの現状値に対して、予め設定された増減幅設定値（符号３５で示す）の加算または減算をおこなう。その演算結果は、セレクタ３３を介して転送先アドレスレジスタ３１に、新たな転送先アドレスとして格納される。図示しないＣＰＵが現在の転送先アドレスを参照する場合には、転送先アドレスレジスタ３１の格納値がデータバス１を介してＣＰＵへ送られる。
【００５５】
第３の差分計算用演算器６１は、ＣＰＵライトによりデータバス１から初期値として供給された転送元アドレスの、転送先リロードレジスタ３２に格納されている転送先アドレスの初期値に対する差分を計算する。差分保持レジスタ６２は、第３の差分計算用演算器６１により求められた差分値を格納するレジスタである。
【００５６】
第４の差分計算用演算器６３は、差分保持レジスタ６２に格納された差分値を用いて、転送先アドレスレジスタ３１に格納されている転送先アドレスの現状値から転送元アドレスの現状値を計算して求める。第４の差分計算用演算器６３により求められた転送元アドレスの現状値は、転送元アドレスとして、転送元のメモリ等に供給される。転送先アドレスの増減幅と転送元アドレスの増減幅とは同じである。図示しないＣＰＵが現在の転送元アドレスを参照する場合には、第４の差分計算用演算器６３により求められた転送元アドレスの現状値がデータバス１を介してＣＰＵへ送られる。
【００５７】
つぎに、図３に示す構成のＤＭＡコントローラの動作について説明する。まず、データバス１からＣＰＵライトによる転送先アドレス、転送元アドレスおよび転送回数が供給される。転送先アドレス生成部３では、供給された転送先アドレスを、転送先アドレスレジスタ３１は現状値として格納し、また転送先リロードレジスタ３２は初期値として格納する。
【００５８】
一方、転送元アドレス生成部６では、供給された転送元アドレスと、転送先リロードレジスタ３２に格納された転送先アドレスの初期値とに基づいて、第３の差分計算用演算器６１によりそれらの差分を求め、それを差分保持レジスタ６２に格納する。また、転送回数は、転送回数設定部４の転送回数レジスタ４１および転送回数リロードレジスタ４２にそれぞれ現状値および初期値として格納される。
【００５９】
転送先アドレスレジスタ３１、転送先リロードレジスタ３２、差分保持レジスタ６２、転送回数レジスタ４１および転送回数リロードレジスタ４２に値が格納され、開始信号を受け付けると、１回目のデータ転送が開始される。ＤＭＡコントローラは、転送先アドレスレジスタ３１の格納値を１回目のデータ転送の転送先アドレスとして転送先のメモリ等に出力する。
【００６０】
一方、第４の差分計算用演算器６３は、転送先アドレスレジスタ３１に格納されている転送先アドレスと、差分保持レジスタ６２の格納値とに基づいて、転送元アドレスを求め、それを１回目のデータ転送の転送元アドレスとして転送元のメモリ等に出力する。それによって、転送元のメモリ等の、転送元アドレスに該当する領域に格納されたデータが、転送先のメモリ等の、転送先アドレスに該当する領域に書き込まれる。
【００６１】
１回目のデータ転送が終了すると、転送回数更新用演算器４４により、転送回数レジスタ４１の格納値が１だけ減算され、その値が、転送回数設定部４のセレクタ４３を介して転送回数レジスタ４１に、新たな転送回数として格納される。また、転送先アドレス更新用演算器３４により、転送先アドレスレジスタ３１の格納値に対して、予め設定された増減幅設定値３５の加算または減算がおこなわれる。その演算結果は、転送先アドレスレジスタ３１に２回目のデータ転送の転送先アドレスとして格納され、２回目のデータ転送時に出力される。
【００６２】
一方、２回目のデータ転送時の転送元アドレスは、２回目のデータ転送の転送先アドレスと差分保持レジスタ６２の格納値とに基づいて、第４の差分計算用演算器６３により求められ、２回目のデータ転送時に出力される。３回目以降のデータ転送も同様にしておこなわれる。転送回数レジスタ４１の格納値が転送の最終値のときのデータ転送が終了すると、転送先リロードレジスタ３２に格納されている初期値が、転送先アドレスレジスタ３１に書き込まれる。
【００６３】
転送元アドレスの初期値は、転送先リロードレジスタ３２から転送先アドレスレジスタ３１に書き込まれた転送先アドレスの初期値と差分保持レジスタ６２の格納値とに基づいて、第４の差分計算用演算器６３により求められる。また、転送回数レジスタ４１には、転送回数リロードレジスタ４２に格納されている初期値が書き込まれる。そして、転送開始を示す信号に応答して、再び上述した動作でデータ転送が繰り返され、停止信号の発生により、停止する。
【００６４】
図４に、図３に示す構成のＤＭＡコントローラにおける転送先アドレスレジスタ３１の更新タイミング、並びに転送データの読み出しおよび書き込みのタイミングを示す。図４に示すように、実施の形態２では、転送先のメモリ等に転送対象のデータを書き込んだ直後に、転送先アドレスレジスタ３１の格納値が更新される。
【００６５】
上述した実施の形態２によれば、実施の形態１と同様に、従来に比べてアドレスを保持する一群のレジスタが削減されるため、フリップフロップの数が、チャネル数にレジスタのビット数を掛け合わせた数だけ減るので、性能低下を招くことなく、ＤＭＡコントローラの消費電力を低減するとともに、回路規模を縮小することができる。
【００６６】
また、実施の形態２によれば、実施の形態１と同様に、ＤＭＡコントローラとその外部との接続関係の変更をおこなわずに済むため、実施の形態２のＤＭＡコントローラを既存の回路に容易に組み込むことができる。
【００６７】
以上において本発明は、上述した各実施の形態に限らず、種々変更可能である。たとえば、アドレス空間の大きさにより差分保持レジスタのビット数が決まるため、小さい空間しか持たない場合には、差分保持レジスタのビット数を減らすことができる。
【００６８】
（付記１）転送先アドレスの加算値または減算値と、転送元アドレスの加算値または減算値とが同じであるＤＭＡコントローラにおいて、
転送元アドレスの現状値を格納する転送元アドレスレジスタと、
転送元アドレスの初期値を格納する転送元リロードレジスタと、
転送元アドレスの初期値と転送先アドレスの初期値との差分を求める第１の差分計算用演算器と、
前記第１の差分計算用演算器により求められた差分値を格納する差分保持レジスタと、
前記差分保持レジスタに格納された差分値と前記転送元アドレスレジスタに格納された転送元アドレスの現状値とに基づいて転送先アドレスの現状値を求める第２の差分計算用演算器と、
を具備することを特徴とするＤＭＡコントローラ。
【００６９】
（付記２）前記第１の差分計算用演算器には、前記転送元リロードレジスタから転送元アドレスの初期値が供給されることを特徴とする付記１に記載のＤＭＡコントローラ。
【００７０】
（付記３）前記転送元アドレスレジスタに格納されている転送元アドレスの現状値は、当該転送元アドレスの現状値に基づいて転送元から読み出されたデータが転送先に書き込まれた直後に、前記加算値または前記減算値により更新されることを特徴とする付記１または２に記載のＤＭＡコントローラ。
【００７１】
（付記４）前記転送元アドレスレジスタに格納されている転送元アドレスの現状値は、データ転送が指定された回数だけ終了すると、前記転送元リロードレジスタに格納されている転送元アドレスの初期値に書き換えられることを特徴とする付記１〜３のいずれか一つに記載のＤＭＡコントローラ。
【００７２】
（付記５）前記転送元アドレスレジスタに格納されている転送元アドレスの現状値が、前記転送元リロードレジスタに格納されている転送元アドレスの初期値に書き換えられると、前記第２の差分計算用演算器は、書き換えられた転送元アドレスの現状値と前記差分保持レジスタに格納された差分値とに基づいて転送先アドレスの初期値を求めることを特徴とする付記４に記載のＤＭＡコントローラ。
【００７３】
（付記６）転送先アドレスの加算値または減算値と、転送元アドレスの加算値または減算値とが同じであるＤＭＡコントローラにおいて、
転送先アドレスの現状値を格納する転送先アドレスレジスタと、
転送先アドレスの初期値を格納する転送先リロードレジスタと、
転送先アドレスの初期値と転送元アドレスの初期値との差分を求める第３の差分計算用演算器と、
前記第３の差分計算用演算器により求められた差分値を格納する差分保持レジスタと、
前記差分保持レジスタに格納された差分値と前記転送先アドレスレジスタに格納された転送先アドレスの現状値とに基づいて転送元アドレスの現状値を求める第４の差分計算用演算器と、
を具備することを特徴とするＤＭＡコントローラ。
【００７４】
（付記７）前記第３の差分計算用演算器には、前記転送先リロードレジスタから転送先アドレスの初期値が供給されることを特徴とする付記６に記載のＤＭＡコントローラ。
【００７５】
（付記８）前記転送先アドレスレジスタに格納されている転送先アドレスの現状値は、当該転送先アドレスの現状値に該当する領域に、転送元から読み出されたデータが書き込まれた直後に、前記加算値または前記減算値により更新されることを特徴とする付記６または７に記載のＤＭＡコントローラ。
【００７６】
（付記９）前記転送先アドレスレジスタに格納されている転送先アドレスの現状値は、データ転送が指定された回数だけ終了すると、前記転送先リロードレジスタに格納されている転送先アドレスの初期値に書き換えられることを特徴とする付記６〜８のいずれか一つに記載のＤＭＡコントローラ。
【００７７】
（付記１０）前記転送先アドレスレジスタに格納されている転送先アドレスの現状値が、前記転送先リロードレジスタに格納されている転送先アドレスの初期値に書き換えられると、前記第４の差分計算用演算器は、書き換えられた転送先アドレスの現状値と前記差分保持レジスタに格納された差分値とに基づいて転送元アドレスの初期値を求めることを特徴とする付記９に記載のＤＭＡコントローラ。
【００７８】
（付記１１）前記差分保持レジスタには、前記第１の差分計算用演算器により新たに求められた差分値を格納するときのみ、クロックが供給されることを特徴とする付記１〜５のいずれか一つに記載のＤＭＡコントローラ。
【００７９】
（付記１２）前記差分保持レジスタには、前記第３の差分計算用演算器により新たに求められた差分値を格納するときのみ、クロックが供給されることを特徴とする付記６〜１０のいずれか一つに記載のＤＭＡコントローラ。
【００８０】
【発明の効果】
本発明によれば、従来に比べてアドレスを保持する一群のレジスタが削減され、フリップフロップの数が、チャネル数にレジスタのビット数を掛け合わせた数だけ減るので、性能低下を招くことなく、ＤＭＡコントローラの消費電力を低減するとともに、回路規模を縮小することができるという効果が得られる。また、本発明によれば、ＤＭＡコントローラとその外部との接続関係の変更をおこなわずに済むため、ＤＭＡコントローラを既存の回路に容易に組み込むことができるという効果が得られる。また、本発明によれば、差分保持レジスタに格納されている差分値は、新たな転送元アドレスと新たな転送先アドレスがＣＰＵライトにより供給されるまでは普遍であり、差分保持レジスタの格納値を書き換えるとき以外は、差分保持レジスタにクロックを供給する必要がないため、差分保持レジスタの書き換え時以外は、クロックを止めることができ、さらに消費電力を低減することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１にかかるＤＭＡコントローラの回路構成を示す図である。
【図２】図１に示すＤＭＡコントローラの動作タイミングを示す図である。
【図３】本発明の実施の形態２にかかるＤＭＡコントローラの回路構成を示す図である。
【図４】図３に示すＤＭＡコントローラの動作タイミングを示す図である。
【図５】従来のＤＭＡコントローラの回路構成を示す図である。
【図６】図５に示すＤＭＡコントローラの動作タイミングを示す図である。
【符号の説明】
２１  転送元アドレスレジスタ
２２  転送元リロードレジスタ
３１  転送先アドレスレジスタ
３２  転送先リロードレジスタ
５１  第１の差分計算用演算器
５２，６２  差分保持レジスタ
５３  第２の差分計算用演算器
６１  第３の差分計算用演算器
６３  第４の差分計算用演算器
【図１】
0004686104.tif 000002
【図２】
0004686104.tif 000003
【図３】
0004686104.tif 000004
【図４】
0004686104.tif 000005
【図５】
0004686104.tif 000006
【図６】
0004686104.tif 000007