(57)【要約】【課題】  多次元のデータを転送可能な汎用的なデータ転送装置と、そのデータ転送装置を含んだ画像処理装置を提供する。【解決手段】  ＤＭＡコントローラ１内に、２次元（ｎ次元）のデータ領域において１次元（（ｎ−１）次元）内に含まれるデータ数を設定するＡＮ０Ｒレジスタと、前記２次元のデータ領域にあって転送対象となる例えば２次元のブロックデータ領域での各次元（第２次元および第１次元）のサイズをそれぞれ設定するＢＳ１ＲレジスタおよびＢＳ０Ｒレジスタなどを設け、前記ブロックデータ領域の転送元アドレスとなるＳＡＲを起点に、以降のブロックデータ領域のアドレスを前記ＡＮ０Ｒ、ＢＳ１ＲおよびＳＡＲの値を用いて生成し、その生成したアドレスによりブロックデータ領域を抽出し、転送する。そして、このようなＤＭＡコントローラ１を画像処理装置に搭載する。【選択図】  図１
2005063376.tif 000002
【特許請求の範囲】
【請求項１】
メモリ上に格納されたｎ次元（ｎ≧２）のデータ領域内で、その一部の領域であるｎ次元以下のブロックデータ領域を転送対象とした際に、そのブロックデータ領域の先頭アドレスを設定することで、その先頭アドレス以降のアドレスをＣＰＵの処理を介さずに生成することができ、その生成したアドレスを用いてデータ転送を行うデータ転送装置であって、
前記ｎ次元のデータ領域の大きさを、（ｎ−１）次元内から１次元内までの各次元内に含まれるデータ数で設定する第１のレジスタと、
前記ｎ次元以下のブロックデータ領域の大きさを、各次元のサイズでそれぞれ設定する第２のレジスタと、
前記ブロックデータ領域の先頭アドレスと前記第１のレジスタに設定した値と前記第２のレジスタに設定した値とを用いて演算処理を行うことで、前記ｎ次元以下のブロックデータ領域の先頭アドレス以降のアドレスを生成する手段とを有することを特徴とするデータ転送装置。
【請求項２】
請求項１記載のデータ転送装置であって、
さらに、前記ｎ次元以下のブロックデータ領域の先頭アドレスに対する増分を設定する第３のレジスタと、
前記ｎ次元以下のブロックデータ領域のデータ転送の終了時に、前記先頭アドレスに対して前記第３のレジスタに設定した値を加算し、前記先頭アドレスを更新する手段とを有することを特徴とするデータ転送装置。
【請求項３】
請求項１または２記載のデータ転送装置であって、
前記生成したアドレスを用いてデータ転送を行う際の、そのアドレスは、データ転送元アドレスかデータ転送先アドレスかのいずれか一方として設定可能であることを特徴とするデータ転送装置。
【請求項４】
請求項１〜３のいずれか１項に記載のデータ転送装置と、入力された画像データに対して処理を行う画像処理モジュールとを含む画像処理装置であって、
前記データ転送装置は、前記画像処理モジュールとの間で画像データを入出力する際に用いられることを特徴とする画像処理装置。
【請求項５】
請求項４記載の画像処理装置であって、
前記データ転送装置と前記画像処理モジュールとの間で画像データを入出力する際に用いるバスは、独立したバスで構成されることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送装置および画像処理装置に関し、特に、多次元配列からなるデータを転送するデータ転送装置およびそのデータ転送装置を搭載した画像処理装置に適用して有効な技術に関するものである。
【背景技術】
【０００２】
例えば、特開平１１−７４３２号公報（特許文献１）には、並列アルゴリズムを実行する並列計算機において、実時間で実信号を処理可能な情報処理装置が開示されている。すなわち、この情報処理装置は、並列処理型（ＳＩＭＤ型）とし、並列アルゴリズムの実行に並行して、情報処理装置外部の実環境から得られる情報を演算データとして全てのプロセッサに入出力可能な構成とし、プロセッサとの間、あるいは制御装置とプロセッサとの間のデータ通信手段と共に、前記実環境とプロセッサとの間にデータ通信手段を設けることで、双方を並列動作可能にしたものである。そして、前記実環境から得られる情報には、例えば画像データ、音声データなどが含まれる。
【０００３】
また、特開２００２−８２８９７号公報（特許文献２）には、不連続なアドレスからのデータ転送を行うことができるデータ転送装置が開示されている。すなわち、基点アドレスにオフセット値を加算することを繰り返し、さらに転送開始アドレスにブロック長を加算することを繰り返すことで、２次元配列データの行を間引きし、さらに列ごとにデータ転送を行うことを可能にしている。これによって、とりわけ、プリンタなどとのデータ転送に最適な技術となる。
【０００４】
そして、特開２００２−１０８８０２号公報（特許文献３）には、ＣＰＵに負荷をかけることなく、不連続なアドレスに散在するデータの転送制御を行うことが可能なデータ転送装置が開示されている。すなわち、表示する画像データのアドレス幅と、表示しない画像データのアドレス幅を設定し、前記表示する画像データのアドレス幅分のデータ転送と、その後に表示しない画像データのアドレス幅を加算する処理とを繰り返すことで２次元データの転送を行うことを可能にしている。これによって、とりわけ、ディスプレイなどに画像データを表示する際に最適な技術となる。
【特許文献１】特開平１１−７４３２号公報
【特許文献２】特開２００２−８２８９７号公報
【特許文献３】特開２００２−１０８８０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
一般的な動画圧縮規格として、ＭＰＥＧ（ＩＳＯ／ＩＥＣ１４４９６−２（ＭＰＥＧ４），ＩＳＯ／ＩＥＣ１３８１８−２（ＭＰＥＧ２），ＩＳＯ／ＩＥＣ１１１７２−２（ＭＰＥＧ１））が知られている。この動画圧縮規格によれば、デジタル化された画像をブロック分割して各ブロック毎に動きベクトルを検出し、ＤＴＣ（離散コサイン変換）、及び量子化を施し、ハフマン符号化して画像データを圧縮する。
【０００６】
このような動画圧縮を含めた画像処理は比較的単純な計算アルゴリズムの反復であるが、画像単位あたりメガオーダを超える画素データが処理対象となるため、演算量は膨大である。そのため、デジタルビデオカメラなどの画像処理機能を有するデジタル機器では、画像処理にかかる演算をＣＰＵ周辺モジュールで処理することにより、ＣＰＵの負荷を軽減する構成が図られる。
【０００７】
そのような、ＣＰＵ周辺モジュール（機能モジュール）の構成例としては、例えば、前記特許文献１で述べたような並列処理型（ＳＩＭＤ型）の情報処理装置などが挙げられる。このＳＩＭＤ型の計算アーキテクチャでは、複数のプロセッサと１つの制御系を用いて、制御系が全プロセッサへ共通の命令とデータをブロードキャストすることで動作する。また、その各プロセッサはローカルメモリや演算器を備えている。
【０００８】
ＭＰＥＧ動画圧縮において、前記のような並列処理型の機能モジュールを用いると、前記複数のプロセッサを前記画像ブロックの計算単位として動作されることができる。すなわち、動きベクトル検出では、検出範囲のシフトブロックを複数プロセッサのローカルメモリに配置し、制御系から圧縮対象のブロックを全プロセッサにブロードキャストしてフレーム差を並列演算することで、プロセッサ数倍の高速化が期待できる。
【０００９】
また、圧縮対象のブロック画像あるいは検出した動きベクトル位置とのブロック単位のフレーム差データを複数プロセッサのローカルメモリに配置し、ＤＣＴ（あるいはＩＤＣＴ）あるいは量子化（あるいは逆量子化）の計算を並列演算することで、プロセッサ数倍の高速化が期待できる。
【００１０】
前記並列処理型の機能モジュールに対する画像データの入出力は、ダイレクトメモリアクセスコントローラ（ＤＭＡコントローラ）を用いることでＣＰＵの負荷を低減することができる。つまり、このＤＭＡコントローラが、ＣＰＵの代わりにバスマスタとしてレジスタに設定されたデータ転送先アドレス、データ転送元アドレスおよびデータ転送数に従って、メモリや周辺モジュール（外部デバイス）間のデータ転送を行うことで、ＣＰＵは、このデータ転送に捉われることなくキャッシュメモリ内のプログラム実行を継続的に行うことができる。
【００１１】
ところで、前記ＤＭＡコントローラは、通常、レジスタに設定されたデータ転送先アドレスとデータ転送数とによって決まる連続データを転送することができる。しかしながら、ランダムアクセスメモリ（ＲＡＭ）内に格納された例えば２次元画像データに対して、その任意位置の画像ブロックのデータを転送するような場合、部分的に連続データでは転送できない箇所が存在する。このため、複数回のＤＭＡ転送が必要となり、そのＤＭＡ転送の都度にＣＰＵによる介入（レジスタ設定等）が発生する。
【００１２】
このような問題は、前記特許文献２または３で述べたようなデータ転送装置を用いることで、２次元画像データのＤＭＡ転送に対しては解決することができる。ただし、このようなデータ転送装置は、汎用的な構成にはなっておらず、３次元のデータといった多次元のデータに対する対応などは特に明記はされていない。また、前記のような並列処理型の機能モジュールとの入出力に関しても、特に明記はされてはおらず、このモジュールに対する入出力装置として適した構成にはなっていない。
【００１３】
そこで、本発明の目的は、多次元のデータを転送可能な汎用的なデータ転送装置と、そのデータ転送装置を含んだ画像処理装置を提供することにある。
【００１４】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１５】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１６】
本発明によるデータ転送装置は、メモリ上に格納されたｎ次元（ｎ≧２）のデータ領域内で、その一部の領域であるｎ次元以下のブロックデータ領域を転送対象とした際に、そのブロックデータ領域の先頭アドレスを設定することで、その先頭アドレス以降のアドレスをＣＰＵの処理を介さずに生成することができ、その生成したアドレスを用いてデータ転送を行うデータ転送装置であって、前記ｎ次元のデータ領域の大きさを、（ｎ−１）次元内から１次元内までの各次元内に含まれるデータ数で設定する第１のレジスタと、前記ｎ次元以下のブロックデータ領域の大きさを、各次元のサイズでそれぞれ設定する第２のレジスタと、前記ブロックデータ領域の先頭アドレスと前記第１のレジスタに設定した値と前記第２のレジスタに設定した値を用いて演算処理を行うことで、前記ｎ次元以下のブロックデータ領域の先頭アドレス以降のアドレスを生成する手段とを有するものである。
【００１７】
これによって、ｎ次元のデータ領域から最上位次元を除いたデータ領域の大きさと、ブロックデータ領域の各次元の大きさという最低限の情報を与えることで、１回のデータ転送起動制御でブロックデータ領域のデータ転送が可能となる。また、この構成では、ユーザの必要性に応じたｎの値を定め、その分の設定レジスタなどを設ければよく、それによってｎ次元以下のブロックデータ領域に対応できるようになることから、汎用的なデータ転送装置として用いることができる。
【００１８】
また、本発明によるデータ転送装置は、さらに前記ｎ次元以下のブロックデータ領域の先頭アドレスに対する増分を設定する第３のレジスタと、前記ｎ次元以下のブロックデータ領域のデータ転送の終了時に、前記先頭アドレスに対して前記第３のレジスタに設定した値を加算し、前記先頭アドレスを更新する手段とを有するものである。これによって、ｎ次元のデータ領域上で等間隔のブロックデータ領域を連続的に転送するような場合に、その都度ＣＰＵがデータ転送元アドレスを設定するという処理ステップを省略することができる。
【００１９】
そして、前記生成したアドレスを用いてデータ転送を行う際の、そのアドレスは、データ転送元アドレスかデータ転送先アドレスかのいずれか一方として設定可能となっている。これによって、例えば、メモリ上のブロックデータ領域を抽出して周辺モジュールなどに転送することと、周辺モジュールなどから受け取ったデータをメモリ上のブロックデータ領域に格納することの両方が可能になる。
【００２０】
また、これまでに説明したようなデータ処理装置は、例えば画像圧縮などの処理を行う画像処理モジュールとの間で、その画像データの入出力を行う装置として用いた場合に、特に有益なものとなる。また、この際に、データ処理装置と画像処理モジュールとの間のバスは、ＣＰＵなども使用できる共通バスではなく、独立したバスとすることで、データ転送の効率を更に向上させることができる。
【発明の効果】
【００２１】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２２】
（１）ｎ次元のデータ領域に対し、最上位次元を除いた（ｎ−１）次元内から１次元内までの各次元内に含まれるデータ領域の大きさと、ブロックデータ領域に対する各次元の大きさという最低限の情報を与えることで、ｎ次元のデータ領域におけるｎ次元までのブロックデータ領域の転送を、ＣＰＵによるデータ転送元アドレス等の再設定を要せずに行うことが可能なデータ転送装置を実現できる。
【００２３】
（２）アドレス更新レジスタを設けることで、ｎ次元のデータ領域上で等間隔のブロックデータ領域を連続的に転送するような場合に、２回目以降の転送について、データ転送元アドレスを設定する処理ステップを省略することができる。
【００２４】
（３）前記（１）、（２）によって、ＣＰＵ、あるいは画像処理モジュールなどのプログラム実行制御系の実行効率を向上させることができ、例えば画像処理などの処理時間を短縮することができる。
【００２５】
（４）前記（１）によって、１次元のデータ転送といった通常のＤＭＡコントローラが備えているような機能を包含することができ、汎用的なデータ転送装置を実現することができる。
【００２６】
（５）前記（１）〜（３）によって、とりわけ画像処理装置に搭載して有益なデータ転送装置を実現できる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２８】
本発明の一実施の形態のデータ転送装置は、メモリ上などに格納されている多次元（多次元配列）のデータ領域の中から、そのデータ領域の一部で、本来部分的な連続データの集まりとなるブロックデータ領域を一貫した連続データとして抽出し、その抽出したブロックデータ領域をＣＰＵを介さずに（ＣＰＵによるレジスタの再設定等の介入無しに）転送することを可能にする装置である。
【００２９】
また、このデータ転送装置の特徴の一つは、後述するように汎用的な構成となっており、例えば、３次元のブロックデータ領域の抽出および転送を可能にする構成とした場合、その構成で２次元や１次元のブロックデータ領域を抽出および転送することも可能になる。
【００３０】
以降においては、２次元までのブロックデータ領域に対応できるデータ転送装置と３次元までのブロックデータ領域に対応できるデータ転送装置を例示し、本発明の一実施の形態のデータ転送装置の構成および動作などを説明する。
【００３１】
図１は、本発明の一実施の形態のデータ転送装置において、２次元までのブロックデータ領域を抽出および転送するデータ転送装置の構成の一例と、それを含めたシステム構成および処理動作の一例を示す概略図である。図１に示すシステムは、例えば、データ転送装置（ＤＭＡコントローラ）１と、ＣＰＵ２と、メモリ３と、周辺モジュール４などから構成されている。このようなシステムにおいて、ＤＭＡコントローラ１は、例えばメモリ３上に記憶された２次元のデータ領域内の任意ブロックデータ領域を抽出し、周辺モジュール４などに対して転送する機能などを有している。
【００３２】
図１において、ＤＭＡコントローラ１には、ＣＰＵ２からアクセス可能な機能レジスタとして（１）ＤＯＲ、（２）ＡＮ０Ｒ、（３）ＤＣＲ、（４）ＳＡＲ、（５）ＤＡＲ、（６）ＢＳ０Ｒ、（７）ＢＳ１Ｒ、（８）ＭＡＲなどを含み、これらによって、ＣＰＵプログラムからＤＭＡ転送の設定あるいは制御がなされる。
【００３３】
また、紙面上省略したが、このＤＭＡコントローラ１は、複数のチャネルを含み、各チャネル毎に（３）ＤＣＲ、（４）ＳＡＲ、（５）ＤＡＲ、（６）ＢＳ０Ｒ、（７）ＢＳ１Ｒ、（８）ＭＡＲが含まれている。さらに、ここでは各チャネル毎に、ＤＭＡ転送要求信号ＤＲＥＱ入力とＤＭＡ転送受領信号ＤＡＣＫ出力を備え、ＤＲＥＱとＤＡＣＫ制御による周辺モジュールのＤＭＡ転送を可能とする。
【００３４】
以下に、前記（１）〜（８）の機能レジスタについて説明する。
【００３５】
（１）ＤＯＲ…ＤＭＡ操作レジスタである。例えば、ＤＭＡコントローラ全体の起動許可を与えるＤＯＲ＿ＤＭＥビット、および実行するチャネルの優先順位を決定するビットなどを含んでいる。
【００３６】
（２）ＡＮ０Ｒ（第１のレジスタ）…ｎ次元のデータ領域において１次元内に含まれる要素数設定レジスタである。ここでは、２次元のデータ領域において１次元内に含まれるデータ数を設定する。本設定は全チャネルで共通に使用される。
【００３７】
（３）ＤＣＲ…ＤＭＡチャネルコントロールレジスタである。このレジスタでは、データ転送の制御に関する設定を行う。例えば、メモリ３上のブロックデータ領域を転送元として周辺モジュール４などにデータを送るか、もしくはメモリ３上のブロックデータ領域を転送先として周辺モジュール４などからデータを受け取るかを指定するＤＣＲ＿ＴＤＳビットと、転送先または転送元となる前記周辺モジュールなどのアドレスを固定するか増加するか減少するかを示すＤＣＲ＿ＡＭ０〜１ビットなどを含む。
【００３８】
さらに、このレジスタは、例えば、当該チャネルのＤＭＡ転送を起動するＤＣＲ＿ＤＥビット、ＤＭＡ転送が終了したことを示すＤＣＲ＿ＴＥビット、ＤＭＡ転送終了時にＣＰＵに対して割り込み信号を発行するか否かを指定するＤＣＲ＿ＩＥビット、転送対象がＤＲＥＱ付きか否かを指定するＤＣＲ＿ＲＳビットなども含む。
【００３９】
（４）ＳＡＲ…ソースアドレスレジスタである。このレジスタでは、データ転送元のアドレス値を設定する。
【００４０】
（５）ＤＡＲ…ディスティネーションアドレスレジスタである。このレジスタでは、データ転送先のアドレス値を設定する。
【００４１】
（６）ＢＳ０Ｒ（第２のレジスタ）…ブロックデータ領域の第１次元方向のサイズ設定レジスタである。ここでは、転送対象となる２次元のブロックデータ領域の第１次元方向のデータ数を設定する。
【００４２】
（７）ＢＳ１Ｒ（第２のレジスタ）…ブロックデータ領域の第２次元方向のサイズ設定レジスタである。ここでは、転送対象となる２次元のブロックデータ領域の第２次元方向のデータ数を設定する。
【００４３】
（８）ＭＡＲ（第３のレジスタ）…アドレス更新レジスタである。このレジスタでは、例えば、あるＳＡＲまたはＤＡＲによるブロックデータ領域のＤＭＡ転送が終了した後、そのＳＡＲまたはＤＡＲの値を次のＤＭＡ転送に備えて更新するための加算値を設定する。
【００４４】
以上のように、図１のＤＭＡコントローラ１は、一般的なＤＭＡコントローラに比べて、（２）ＡＮ０Ｒ、（６）ＢＳ０Ｒ、（７）ＢＳ１Ｒ、（８）ＭＡＲの設定レジスタが追加され、それに応じて（３）ＤＣＲのコントロールレジスタに機能が加わったものとなっている。
【００４５】
つぎに、図１に示すＤＭＡコントローラ１の動作について説明する。このＤＭＡコントローラ１は、ＤＯＲおよびＤＣＲで設定されたＤＭＡ転送要求があると、ＤＯＲで設定されたチャネルの優先順位に従って転送を開始し、ＢＳ０ＲとＢＳ１Ｒで設定されたサイズのブロックデータ領域のＤＭＡ転送を行う。
【００４６】
転送要求は、ＤＣＲ＿ＲＳの設定によって異なる。転送対象がＤＲＥＱ付きと設定された場合は、ＤＣＲ＿ＴＥがネゲートかつＤＯＲ＿ＤＭＥがアサートかつＤＣＲ＿ＤＥがアサートかつ当該チャネルのＤＲＥＱのアサートで１データ毎の転送要求となる。転送対象がＤＲＥＱ付きでないと設定された場合は、ＤＣＲ＿ＴＥがネゲートかつＤＯＲ＿ＤＭＥがアサートかつＤＣＲ＿ＤＥがアサートでブロックデータ領域の転送要求となる。
【００４７】
ＤＭＡ転送の対象となるデータは、１次元内に含まれるデータ数をＡＮ０Ｒ設定値とする２次元のデータ領域内にあって、その一部の領域となるブロックデータ領域である。図１に例示したように２次元のデータ領域内のブロックデータ領域を転送元とする（ＤＣＲ＿ＴＤＳで指定）場合、前記２次元のデータ領域内にあってＳＡＲ設定値を先頭アドレスとし第１次元方向のデータ数がＢＳ０Ｒ設定値、第２次元方向のデータ数がＢＳ１Ｒ設定値であるブロックデータ領域上のデータを、ＤＡＲ設定値を先頭とするアドレス空間にＤＭＡ転送する。
【００４８】
このとき、ＤＣＲ＿ＡＭ０〜１の設定によりアドレス固定にした場合、転送先アドレスはＤＡＲ設定値に固定された転送になる。アドレス減少にした場合、転送先アドレスは逆順となり、ＤＡＲ設定値は転送先アドレス空間の最後尾アドレスになる。
【００４９】
２次元のデータ領域内のブロックデータ領域を転送先とする（ＤＣＲ＿ＴＤＳで指定）場合、前記２次元のデータ領域内にあってＤＡＲ設定値を先頭アドレスとし第１次元方向のデータ数がＢＳ０Ｒ設定値、第２次元方向のデータ数がＢＳ１Ｒ設定値であるブロックデータ領域に対して、ＳＡＲ設定値を先頭とするアドレス空間上のデータをＤＭＡ転送する。つまり、図１において、「転送元」と「転送先」を入れ替え、ＳＡＲとＤＡＲを入れ替えたような状態となる。
【００５０】
このとき、ＤＣＲ＿ＡＭ０〜１の設定によりアドレス固定にした場合、転送元アドレスはＳＡＲ設定値に固定され単一空間アドレスからの転送になる。アドレス減少にした場合、転送元アドレスは逆順となり、ＳＡＲ設定値は転送元アドレス空間の最後尾アドレスになる。
【００５１】
ブロックデータ領域のデータ数は、（ＢＳ０Ｒの設定値）×（ＢＳ１Ｒの設定値）である。各チャネルにおいて、このデータ数のＤＭＡ転送が終了すると、ＤＣＲ＿ＴＥがアサートされる。ＤＣＲ＿ＴＥがクリア（ネゲート）されるまで該チャネルのＤＭＡ転送は再起動できない。ＤＣＲ＿ＴＥはリードクリアビットであり、ＣＰＵ２によりＤＣＲがリードされるとクリアされる。
【００５２】
図１において、メモリ３あるいは周辺モジュール４とデータ授受を行うためのデータバスのバスマスタは、ＣＰＵ２またはＤＭＡコントローラ１である。ＣＰＵ２およびＤＭＡコントローラ１間におけるデータバスの使用権の調停は、バス使用要求信号ＢＲＥＱとバス使用許可信号ＢＡＣＫで行われる。ＤＭＡコントローラ１がＤＭＡ転送を行う際、ＣＰＵ２に対してＢＲＥＱ信号をアサートする。
【００５３】
ＣＰＵ２は、ＢＲＥＱのアサートを受け、可能な時点でデータバスのバス制御を開放（アドレスバスおよび紙面上省略されているがリード／ライトストローブなどのアクセス制御信号の駆動を停止）し、ＢＡＣＫ信号をアサートする。ＤＭＡコントローラ１は、ＢＡＣＫ信号のアサートを受け、ＣＰＵ２の変わりにデータバスのバスマスタとしてバス制御を駆動しデータ授受を開始することで、メモリ３および周辺モジュール４間のＤＭＡ転送が可能となる。
【００５４】
また、ＤＭＡコントローラ１がデータバスのバス制御を開放しＢＲＥＱをネゲートすることで、ＣＰＵ２はＢＡＣＫをネゲートし、バスマスタがＣＰＵ２に戻る。また、ＣＰＵ２が（ＢＲＥＱに因らず）ＢＡＣＫをネゲートすると、ＤＭＡコントローラ１は当該バスサイクル終了時点でデータバスのバス制御を開放してＢＲＥＱをネゲートし、バスマスタをＣＰＵ２に戻すことができる。
【００５５】
なお、紙面上省略したが、ＤＭＡコントローラ１とＣＰＵ２間には、ＤＭＡコントローラ１内の各チャネル毎に出力される割り込み要求信号があり、対応するチャネルのＤＣＲ＿ＩＥで割り込み出力許可が設定されている場合、前記ＤＣＲ＿ＴＥがアサートされるのと同時に該チャネルの割り込み要求信号がアサート（１パルス出力）する。
【００５６】
以下、図１において、メモリ３上に格納された２次元のデータ領域内のブロックデータ領域を、ＤＲＥＱとＤＡＣＫ制御により、メモリマップから周辺モジュールに転送する場合を例として、その動作を図２〜６を用いて詳細に説明する。
【００５７】
図２は、本発明の一実施の形態のデータ転送装置において、メモリ上に格納された２次元のデータ領域から２次元のブロックデータ領域を抽出する際の、メモリマップとブロックデータ領域の関係の一例を示す説明図である。図２のように、２次元配列によって２次元のデータ領域をメモリマップ上にアロケートした場合、その２次元のデータ領域の一部領域であるブロックデータ領域（ｂｌｏｃｋ＿ｄａｔａ［０］［０］〜ｂｌｏｃｋ＿ｄａｔａ［ＢＳ１Ｒ−１］［ＢＳ０Ｒ−１］の２次元配列領域）は、メモリマップ上で連続データとはならない。
【００５８】
そうすると、このブロックデータ領域を抽出する場合において、例えば、メモリマップ上のｂｌｏｃｋ＿ｄａｔａ［０］［０］〜ｂｌｏｃｋ＿ｄａｔａ［０］［ＢＳ０Ｒ−１］を抽出するような際、すなわち第１次元方向を推移させてデータを抽出する際は連続データとして抽出することができる。ところが、その後ｂｌｏｃｋ＿ｄａｔａ［１］［０］を抽出するような際、すなわち第２次元方向を推移させてデータを抽出する際にはアドレススキップが必要となる。そして、このアドレススキップ後の先頭アドレスとなるｂｌｏｃｋ＿ｄａｔａ［Ｎ］［０］（Ｎは整数：０〜（ＢＳ１Ｒ−１））に対応するアドレスは、ＳＡＲ＋ＡＮ０Ｒ×Ｎとなる。
【００５９】
そこで、ＤＭＡコントローラ１に対して、２次元のデータ領域内にあるブロックデータ領域の情報として、ＳＡＲに設定する先頭アドレスと、ブロックデータ領域のサイズＢＳ０ＲおよびＢＳ１Ｒと、２次元のデータ領域の情報としてその１次元内に含まれるデータ数ＡＮ０Ｒとを与える。そして、ＤＭＡコントローラ１内において、前記ＳＡＲ、ＢＳ１ＲおよびＡＮ０Ｒなどを用いて演算処理を行い、前記アドレススキップ後の先頭アドレスを生成することで、ブロックデータ領域を連続データとして抽出することができる。
【００６０】
これによって、図３に示すように、この抽出したブロックデータ領域を周辺モジュール４のＤＡＲが示すアドレスに転送した際に、周辺モジュール４におけるアドレスマップでは、このブロックデータ領域が連続データとして扱われる。
【００６１】
すなわち、ＤＭＡコントローラ１に図４〜図６に示すような処理フローを実行させることで、メモリ３上の２次元のブロックデータ領域を周辺モジュール４に対して連続データとして転送することができる。図４は、本発明の一実施の形態のデータ転送装置において、メモリ上の２次元のブロックデータ領域を周辺モジュールに対して転送する際のＤＭＡコントローラの処理の一例を示すフロー図であり、図５は図４に続く処理の一例を示すフロー図、図６は図５に続く処理の一例を示すフロー図である。
【００６２】
ここでは、ＤＭＡコントローラ１と周辺モジュール４間のＤＲＥＱとＤＡＣＫによって、１データ毎のデータ転送が行われるものとして説明する。なお、以下の説明において、Ｓ４０１〜Ｓ４０３は図４に、Ｓ５０１〜Ｓ５０４は図５に、Ｓ６０１〜Ｓ６１２は図６に該当する。
【００６３】
Ｓ４０１において、ＤＯＲ＿ＤＭＥが‘１’か否かをチェックする。すなわち、ＤＭＡコントローラ１に起動許可が与えられているかを判定する。‘１’であれば、ＤＭＡコントローラ１を起動してＳ４０２へ移行し、‘０’であれば、Ｓ４０１でＤＭＡコントローラ１の起動許可が与えられるのを待つ。
【００６４】
Ｓ４０２において、２次元のデータ領域における１次元内に含まれるデータ数であるＡＮ０Ｒが０より大きいか否かを判定する。ＡＮ０Ｒのデータ数が０より大きい場合、そのデータ数を内部レジスタＡＮ０Ｂに格納し、そうでない場合、内部レジスタＡＮ０Ｂに０を格納する。その後、ＤＭＡコントローラ１のチャネルが待機状態となる。そしてＳ４０３へ移行する。
【００６５】
Ｓ４０３において、ＤＣＲ＿ＤＥ＝１か否かをチェックする。すなわち、ＤＭＡコントローラ１のチャネルが起動可能かを判定する。‘１’の場合、起動可能としてＳ５０１へ移行し、そうでない場合、Ｓ４０３で起動可能になるのを待つ。
【００６６】
Ｓ５０１において、（ＢＳ１Ｒ＞０）なおかつ（ＢＳ０Ｒ＞０）であるかをチェックする。すなわち、ブロックデータ領域の第２次元方向のサイズ（ＢＳ１Ｒ）および第１次元方向のサイズ（ＢＳ０Ｒ）が共に０より大きいか否かを判定する。共に０より大きい場合は、Ｓ５０２へ移行し、そうでない場合はＳ５０４へ移行する。
【００６７】
Ｓ５０２において、ＤＡＲの値（転送先アドレス値）を内部レジスタＤＡＢに格納する。そして、Ｓ５０３へ移行する。
【００６８】
Ｓ５０３において、ＢＳ１Ｒの値を内部レジスタＢＳ１Ｂに格納し、ＳＡＲの値（転送元アドレス値）を内部レジスタＷＫ０Ｂに格納する。そして、Ｓ６０１へ移行する。
【００６９】
Ｓ５０４において、終了処理として、ＤＣＲ＿ＴＥビットに‘１’を立て、ＳＡＲの値にＭＡＲの値を加えてＳＡＲの値を更新する。すなわち、ＤＣＲ＿ＴＥビットのアサートでＤＭＡ転送の終了を出力し、また、ＳＡＲに対しては、その値にＭＡＲの値を加えることで次の転送対象となるブロックデータ領域の先頭アドレスを準備しておく。なお、前述したＤＣＲ＿ＩＥビットで割り込み出力を設定している場合は、ここでＣＰＵ２に対して割り込み信号を１パルス出力する。
【００７０】
Ｓ６０１において、ＢＳ０Ｒの値を内部レジスタＢＳ０Ｂに格納し、内部レジスタＷＫ０Ｂの値を内部レジスタＳＡＢに格納する。そして、Ｓ６０２へ移行する。
【００７１】
Ｓ６０２において、ＤＭＡコントローラ１のチャネルが起動状態で、ＤＲＥＱがアサートか否かをチェックする。すなわち、周辺モジュール４がＤＭＡコントローラ１に対してデータ転送を要求しているか否かを判定する。要求している場合はＳ６０３へ移行し、そうでない場合はＳ６０２において要求されるのを待つ。
【００７２】
Ｓ６０３において、周辺モジュール４に対してはＤＡＣＫのアサートを出力してデータ転送を許可し、ＣＰＵ２に対してはＢＲＥＱのアサートを出力してバス権の要求を行う。なお、ＤＭＡコントローラ１が多チャネルの場合には、ＤＣＲ＿ＤＥが‘１’のチャネルの内最も優先順位が高いチャネルがＤＡＣＫをアサートして、その後の処理を行う。そしてＳ６０４へ移行する。
【００７３】
Ｓ６０４において、ＣＰＵ２がＢＡＣＫをアサートするか否かをチェックする。アサートした場合、バス権を取得してＳ６０５へ移行し、そうでない場合、Ｓ６０４においてＣＰＵがアサートするのを待つ。
【００７４】
Ｓ６０５において、内部レジスタＳＡＢが示すアドレスに対して、リードサイクルを実行し、１データを取得する。そして、内部レジスタＤＡＢが示すアドレスに対して、ライトサイクルを実行し、前記取得した１データを書き込む。そして、Ｓ６０６へ移行する。
【００７５】
Ｓ６０６において、ＣＰＵ２に対してはＢＲＥＱのネゲートを出力してバス権を開放し、周辺モジュール４に対してはＤＡＣＫのネゲートを出力する。そして、Ｓ６０７へ移行する。
【００７６】
Ｓ６０７において、内部レジスタＤＡＢを＋１インクリメントし、内部レジスタＢＳ０Ｂを−１デクリメントする。なお、ここでは前述したＤＣＲ＿ＡＭ０〜１ビットにより、内部レジスタＤＡＢをインクリメント設定としたが、例えば周辺モジュール４が、固定アドレスでシリアル入力によりデータを受け付ける場合には、固定アドレス設定とする。そして、Ｓ６０８へ移行する。
【００７７】
Ｓ６０８において、内部レジスタＢＳ０Ｂが０か否かをチェックする。すなわち、ブロックデータ領域に対する第１次元方向の推移が終了したか否かを判定し、終了した場合（ＢＳ０Ｂ＝０の場合）はＳ６０９へ移行し、そうでない場合はＳ６１１へ移行する。
【００７８】
Ｓ６０９において、内部レジスタＢＳ１Ｂを−１デクリメントする。そしてＳ６１０へ移行する。
【００７９】
Ｓ６１０において、内部レジスタＢＳ１Ｂが０か否かをチェックする。すなわち、前記Ｓ６０８におけるブロックデータ領域に対する第１次元方向の推移が終了した後、ここでの処理により第２次元方向の推移も終了したか否かを判定し、終了した場合（ＢＳ１Ｂ＝０の場合）はＳ５０４へ移行し、そうでない場合はＳ６１２へ移行する。
【００８０】
Ｓ６１１において、前記Ｓ６０８でブロックデータ領域に対する第１次元方向の推移が終了していない場合、内部レジスタＳＡＢに＋１をインクリメントする。これによって、第１次元方向の推移に伴うアドレスを生成する。そしてＳ６０２へ移行する。
【００８１】
Ｓ６１２において、前記Ｓ６１０でブロックデータ領域に対する第１次元方向の推移は終了したが、第２次元方向の推移が終了していない場合、内部レジスタＷＫ０Ｂの値を、その値に内部レジスタＡＮ０Ｂの値を加えることで更新する。これによって、第２次元方向の推移に伴うアドレスを生成する。すなわち、前記Ｓ５０３でＷＫ０Ｂの値をＳＡＲの値とし、このＳ６１２での処理により第２次元方向の推移に伴って、その都度ＡＮ０Ｒの値が加算されていく。したがって、前記図２で説明したように、第２次元方向の推移に伴うアドレススキップ後の先頭アドレス（ＳＡＲ＋ＡＮ０Ｒ×Ｎ）が生成される。そしてＳ６０１へ移行する。
【００８２】
以上のような処理フローによって、２次元のブロックデータ領域のＤＭＡ転送が可能になる。ここで、１次元のデータ（ブロックデータ領域）を転送する際には、ＢＳ１Ｒに１を、ＢＳ０Ｒにデータ転送数を設定して図４〜図６のフローを実行すればよい。これによって、転送開始アドレスからＢＳ０Ｒに設定した分のデータ転送を行うという通常のＤＭＡコントローラの機能も包含することができる。また、このＤＭＡ転送におけるアドレス生成の演算処理は、加算／減算で賄えるため、ＤＭＡコントローラ１のハード量もさほど増加することがない。
【００８３】
なお、この処理フローでは、メモリ３上のブロックデータ領域を抽出して周辺モジュール４に転送する場合を例としたが、逆に周辺モジュール４からのデータをメモリ３上のブロックデータ領域に受け入れる場合は、図４〜図６のＳＡＲとＤＡＲを入れ替えたような処理を行うことで実現可能となる。また、周辺モジュール４がＤＲＥＱやＤＡＣＫを有しない場合には、図６よりＤＲＥＱやＤＡＣＫの記載を省いたような処理となり、また、データ転送を１データ毎でなくバースト転送で行う場合には、前記Ｓ６０６のバス権開放およびＤＡＣＫネゲートの処理を前記Ｓ５０４の終了処理時に行うような処理となる。
【００８４】
つぎに、３次元までのブロックデータ領域に対応できるデータ転送装置の一例を説明する。図７は、本発明の一実施の形態のデータ転送装置において、３次元までのブロックデータ領域を抽出および転送するデータ転送装置の構成の一例と、それを含めたシステム構成および処理動作の一例を示す概略図である。
【００８５】
図７に示すデータ転送装置（ＤＭＡコントローラ）５は、前記図１で説明した２次元までのブロックデータ領域に対応できるＤＭＡコントローラ１が備える（１）〜（８）の機能レジスタに加えて、さらに以下の機能レジスタを備えている。
【００８６】
（９）ＡＮ１Ｒ（第１のレジスタ）…ｎ次元のデータ領域において２次元内に含まれる要素数設定レジスタである。ここでは、３次元のデータ領域において２次元内に含まれるデータ数を設定する。つまり、図７の３次元のデータ領域における（第１次元方向のサイズ）×（第２次元方向のサイズ）で求まる値である。本設定は全チャネルで共通に使用される。
【００８７】
（１０）ＢＳ２Ｒ（第２のレジスタ）…ブロックデータ領域の第３次元方向のサイズ設定レジスタである。このレジスタでは、転送対象となるブロックデータ領域の第３次元方向のデータ数を設定する。
【００８８】
このように、ｎ次元のデータ領域内の任意のブロックデータ領域を転送可能にするＤＭＡコントローラを構成するには、ｎ次元のデータ領域の大きさを、（ｎ−１）次元内から１次元内までの各次元内に含まれるデータ数で設定する第１のレジスタと、ｎ次元以下のブロックデータ領域の大きさを、各次元のサイズでそれぞれ設定する第２のレジスタとを設ければよい。
【００８９】
すなわち、ｎ次元のデータ領域の大きさに関する情報として、１次元内に含まれるデータ数、２次元内に含まれるデータ数、…、（ｎ−１）次元内に含まれるデータ数を設定する機能レジスタ（第１のレジスタ）ＡＮ０Ｒ、ＡＮ１Ｒ、…、ＡＮ（ｎ−２）Ｒと、ｎ次元のブロックデータ領域のサイズを指定する情報として、第１次元方向のサイズ、第２次元方向のサイズ、…、第ｎ次元方向のサイズを設定する機能レジスタ（第２のレジスタ）ＢＳ０Ｒ、ＢＳ１Ｒ、…、ＢＳ（ｎ−１）Ｒとを設けることで、ｎ次元のデータ領域内の任意のｎ次元までのブロックデータ領域を転送することが可能になる。
【００９０】
次に、このようなＤＭＡコントローラ５を用いて、メモリ３上に格納された３次元のデータ領域から３次元のブロックデータ領域を抽出し、転送する際の動作を図６および図８〜図１１を用いて説明する。図８は、本発明の一実施の形態のデータ転送装置において、メモリ上に格納された３次元のデータ領域からブロックデータ領域を抽出する際の、メモリマップとブロックデータ領域の関係の一例を示す説明図である。
【００９１】
図８のように、３次元配列によって３次元のデータ領域をメモリマップ上にアロケートした場合、その３次元のデータ領域の一部領域であるブロックデータ領域（ｂｌｏｃｋ＿ｄａｔａ［０］［０］［０］〜ｂｌｏｃｋ＿ｄａｔａ［ＢＳ２Ｒ−１］［ＢＳ１Ｒ−１］［ＢＳ０Ｒ−１］の３次元配列領域）は、メモリマップ上で連続データとはならない。
【００９２】
そうすると、このブロックデータ領域を抽出する場合において、メモリマップ上で、例えばｂｌｏｃｋ＿ｄａｔａ［０］［０］［０］〜ｂｌｏｃｋ＿ｄａｔａ［０］［０］［ＢＳ０Ｒ−１］を抽出する際、すなわちブロックデータ領域に対して第１次元方向を推移させる際は連続データで抽出することができる。しかし、その後、第２次元方向を推移させてｂｌｏｃｋ＿ｄａｔａ［０］［１］［０］のデータを抽出する際などでは、前述した図２の場合と同様のアドレススキップが必要となる。つまり、このアドレススキップ後の先頭アドレスとなるｂｌｏｃｋ＿ｄａｔａ［０］［Ｎ］［０］（Ｎは整数：０〜（ＢＳ１Ｒ−１））が格納されているアドレスは、ＳＡＲ＋ＡＮ０Ｒ×Ｎとなる。
【００９３】
図８においては、さらに、ｂｌｏｃｋ＿ｄａｔａ［０］［０］［０］〜ｂｌｏｃｋ＿ｄａｔａ［０］［ＢＳ１Ｒ−１］［ＢＳ０Ｒ−１］などのように第１次元方向と第２次元方向を推移させてデータを抽出後、第３次元方向を推移させてｂｌｏｃｋ＿ｄａｔａ［１］［０］［０］を抽出する際などでも、前記第２次元方向を推移させた際とは別の大きさを持つアドレススキップが必要となる。つまり、このアドレススキップ後の先頭アドレスとなるｂｌｏｃｋ＿ｄａｔａ［Ｍ］［０］［０］（Ｍは整数：０〜（ＢＳ２Ｒ−１））が格納されているアドレスは、ＳＡＲ＋ＡＮ１Ｒ×Ｍとなる。
【００９４】
したがって、前記第２次元方向と第３次元方向の両方の推移に伴って、アドレススキップ後の先頭アドレスとなるｂｌｏｃｋ＿ｄａｔａ［Ｍ］［Ｎ］［０］（Ｍ：０〜（ＢＳ２Ｒ−１）、Ｎ：０〜（ＢＳ１Ｒ−１））が格納されているアドレスは、ＳＡＲ＋ＡＮ１Ｒ×Ｍ＋ＡＮ０Ｒ×Ｎで表すことができる。
【００９５】
そこで、ＤＭＡコントローラ５に対して、３次元のデータ領域内にあるブロックデータ領域の情報として、ＳＡＲに設定する転送開始アドレスと、ブロックデータ領域のサイズＢＳ０ＲおよびＢＳ１ＲおよびＢＳ２Ｒと、３次元のデータ領域の情報としてその１次元内に含まれるデータ数ＡＮ０Ｒおよびその２次元内に含まれるデータ数ＡＮ１Ｒとを与える。そして、ＤＭＡコントローラ５内において、前記ＳＡＲ、ＢＳ１Ｒ、ＢＳ２Ｒ、ＡＮ０ＲおよびＡＮ１Ｒなどを用いて演算処理を行い、前記アドレススキップ後の先頭アドレスを生成することで、ブロックデータ領域を連続データとして抽出することができる。
【００９６】
これによって、図９に示すように、その抽出したブロックデータ領域を周辺モジュール４のＤＡＲが示すアドレスに転送する際に、周辺モジュール４におけるアドレスマップでは、このブロックデータ領域が連続データとして扱われる。
【００９７】
すなわち、ＤＭＡコントローラ５に図１０、図１１ならびに前記図６に示すような処理フローを実行されることで、メモリ３上の３次元のブロックデータ領域を周辺モジュール４に対して連続データとして転送することができる。図１０は、本発明の一実施の形態のデータ転送装置において、メモリ上の３次元のブロックデータ領域を周辺モジュールに対して転送する際のＤＭＡコントローラの処理の一例を示すフロー図であり、図１１は図１０に続く処理の一例を示すフロー図である。
【００９８】
図１０および図１１ならびに前記図６に示す処理フローは、前記図４〜図６で説明した２次元のブロックデータ領域に対する処理フローを３次元に拡張したものであるため、前記図４〜図６とほぼ同様な処理となる。したがって、前述した２次元のブロックデータ領域に対する処理フローとの相違点に重点をおいて以下に簡単に説明する。なお、以下の説明において、Ｓ１００１〜Ｓ１００４は図１０に、Ｓ１１０１〜Ｓ１１０８は図１１に該当する。
【００９９】
Ｓ１００１〜Ｓ１００２において、前述したＳ４０１〜Ｓ４０２と同様にＤＭＡコントローラ５の起動判定と、ＡＮ０Ｒ値の内部レジスタＡＮ０Ｂへの格納などを行う。そして、Ｓ１００３へ移行する。
【０１００】
Ｓ１００３において、３次元のデータ領域における２次元内に含まれるデータ数を示すＡＮ１Ｒが０より大きいか否かを判定する。そして、０より大きい場合、そのデータ数を内部レジスタＡＮ１Ｂに格納し、そうでない場合、内部レジスタＡＮ１Ｂに０を格納する。そしてＳ１００４へ移行する。
【０１０１】
Ｓ１００４において、前述したＳ４０３と同様にＤＭＡチャネルの起動判定を行う。そしてＳ１１０１へ移行する。
【０１０２】
Ｓ１１０１において、（ＢＳ２Ｒ＞０）なおかつ（ＢＳ１Ｒ＞０）なおかつ（ＢＳ０Ｒ＞０）であるか否かを判定する。そうであるならばＳ１１０２へ移行し、そうでなければＳ１１０７へ移行する。なお、ここでの処理は、前述したＳ５０１での処理に、ブロックデータ領域の第３次元方向のサイズであるＢＳ２Ｒの判定が追加されたものである。
【０１０３】
Ｓ１１０２において、前述したＳ５０２と同様、ＤＡＲの値を内部レジスタＤＡＢに格納する。そして、Ｓ１１０３へ移行する。
【０１０４】
Ｓ１１０３において、ＢＳ２Ｒの値を内部レジスタＢＳ２Ｂに格納し、ＳＡＲの値を内部レジスタＷＫ１Ｂに格納する。そして、Ｓ１１０４へ移行する。
【０１０５】
Ｓ１１０４において、ＢＳ１Ｒの値を内部レジスタＢＳ１Ｂに格納し、内部レジスタＷＫ１Ｂの値を内部レジスタＷＫ０Ｂに格納する。そして、前述したＳ６０１〜Ｓ６１２の処理へ移行する。
【０１０６】
前述したＳ６０１〜Ｓ６１２の処理によって、３次元のブロックデータ領域の第１次元方向と第２次元方向を推移させながらアドレスを生成し、このブロックデータ領域の２次元内に含まれるデータ数（（ＢＳ０Ｒの設定値）×（ＢＳ１Ｒの設定値））分のデータ抽出および転送が行われる。そして、Ｓ１１０５へ移行する。
【０１０７】
Ｓ１１０５において、内部レジスタＢＳ２Ｂを−１デクリメントする。そしてＳ１１０６へ移行する。
【０１０８】
Ｓ１１０６において、内部レジスタＢＳ２Ｂが０か否かをチェックする。すなわち、前述したＳ６０１〜Ｓ６１２によってブロックデータ領域に対する第１次元方向および第２次元方向の推移が終了した後、このＳ１１０６での処理によって第３次元方向の推移も終了したか否かを判定し、終了した場合はＳ１１０７へ移行し、そうでない場合はＳ１１０８へ移行する。
【０１０９】
Ｓ１１０７において、前述したＳ５０４と同様の終了処理を行う。
【０１１０】
Ｓ１１０８において、前記Ｓ１１０６でブロックデータ領域に対する第１次元方向および第２次元方向の推移は終了したが、ブロックデータ領域の第３次元方向の推移が終了していない場合、内部レジスタＷＫ１Ｂの値を、その値に内部レジスタＡＮ１Ｂの値を加えることで更新する。これによって、第３次元方向の推移に伴うアドレスを生成する。すなわち、前記Ｓ１１０３でＷＫ１Ｂの値をＳＡＲとし、このＳ１１０８での処理により、第３次元方向の推移に伴ってその都度ＡＮ１Ｒの値が加算される。したがって、前記図８で説明したように、第３次元方向の推移に伴うアドレススキップ後の先頭アドレス（ＳＡＲ＋ＡＮ１Ｒ×Ｍ）が生成される。そしてＳ１１０４へ移行する。
【０１１１】
以降は、この（ＳＡＲ＋ＡＮ１Ｒ×Ｍ）に対して、Ｓ６０１〜Ｓ６１２内で第２次元方向の推移に伴ってその都度ＡＮ０Ｒの値が加算されることから、前記図８で説明したように、第２次元方向および第３次元方向の推移に伴うアドレススキップ後の先頭アドレス（ＳＡＲ＋ＡＮ１Ｒ×Ｍ＋ＡＮ０Ｒ×Ｎ）が生成される。
【０１１２】
以上のような処理フローによって、３次元のブロックデータ領域のＤＭＡ転送が可能になる。ここで、２次元のブロックデータ領域を転送する際には、ＢＳ２Ｒに１を設定し、ＢＳ１ＲとＢＳ０Ｒにそれぞれ第２次元と第１次元のブロックデータ領域のサイズを設定して、図１０、図１１および図６のフローを実行すればよい。また、１次元のデータ（ブロックデータ領域）を転送する際には、ＢＳ２ＲとＢＳ１Ｒに１を設定し、ＢＳ０Ｒにデータ転送数を設定し、同様の処理を行えばよい。なお、このＤＭＡ転送におけるアドレス生成の演算処理も、図１で前述した２次元の場合と同様に加算／減算で賄えるため、ＤＭＡコントローラ５のハード量もさほど増加することがない。
【０１１３】
以上、これまでに説明した２次元および３次元まで対応可能なデータ転送装置の一例から判るように、本発明の一実施の形態のデータ転送装置によれば、ｎ次元のデータ領域から最上位次元を除いた各次元内に含まれるデータ領域の大きさと、ブロックデータ領域の各次元の大きさという最低限の情報を与えることで、ｎ次元のデータ領域におけるｎ次元までのブロックデータ領域の転送を実現することができる。
【０１１４】
また、このデータ転送装置では、ユーザの必要性に応じたｎの値を定め、その分の設定レジスタなどを設ければよく、それによってｎ次元以下のブロックデータ領域に対応できるようになることから、汎用的な装置として用いることができる。
【０１１５】
そして、このようなデータ転送装置は、とりわけ、画像処理装置のデータ入出力部として用いた場合に有益なものとなる。図１２は、本発明の一実施の形態の画像処理装置において、データ転送装置を搭載した画像処理装置の一例を示す構成図である。
【０１１６】
図１２に示す画像処理装置は、例えば、ＣＰＵ２、データ転送装置（ＤＭＡコントローラ）１ａ、メモリ３、および周辺モジュールとして、画像処理モジュール７、画像入力コントローラ８、および外部記憶装置入出力コントローラ９などから構成される。ＣＰＵ２、ＤＭＡコントローラ１ａ、メモリ３、および周辺モジュールは、データを授受するためのデータバスで接続して構成され、これらに含まれるレジスタあるいはメモリは単一のアドレスでマッピングされる。
【０１１７】
ＤＭＡコントローラ１ａは、前記図１に示した２次元までのブロックデータ領域を抽出および転送するＤＭＡコントローラ１と同様であり、５つのチャネルを含んで構成されたものとする。データバスのバスマスタは、ＣＰＵ２あるいはＤＭＡコントローラ１ａであり、前記説明したＢＲＥＱおよびＢＡＣＫによるデータバスの使用権の調停によって、ＤＭＡコントローラ１ａが、ＣＰＵ２のかわりにメモリ３および周辺モジュール間のデータ転送を行う。
【０１１８】
画像入力コントローラ８は、カメラから入力した画像データをバッファリングして、所定の単位の画素データ数を取り込むとＤＭＡコントローラ１ａのチャネル０に対してＤＲＥＱ０をアサートする。ＤＭＡコントローラ１ａのチャネル０は、ＤＲＥＱ０のアサートに呼応して、バッファリングされた画像データをメモリ３に転送する。
【０１１９】
このときのＤＭＡコントローラ１ａのチャネル０の設定は、ＢＳ１Ｒを１、ＢＳ０Ｒを１フレーム分の画像データ数とする従来技術同様のＤＭＡ転送である。ＤＭＡコントローラ１ａからのＤＭＡ転送終了の割り込み信号をＣＰＵに発行することによって、ＣＰＵ２は、メモリ３に取り込まれる画像データについて１フレーム毎に、ＣＰＵ２内のプログラムの実行と同期を取ることができる。
【０１２０】
画像処理モジュール７は、例えば、並列処理型（ＳＩＭＤ型）計算アーキテクチャを備えたものなどが挙げられる。この画像処理モジュール７では、例えば、画像データを８×８画素のブロックごとに動き検出、ブロック間差画像計算、ＤＣＴ、量子化して、これをハフマン符号化して出力するというＭＰＥＧによる動画圧縮が行われる。
【０１２１】
この際、動き検出では、例えば、圧縮対象の画像フレームから１６×１６画素のマクロブロックの入力と、動き検出の参照画像フレームから４８×４８画素のデータを入力する。この参照画像フレームは時間的に前あるいは後の復元画像であるため、画像処理モジュール７は、圧縮途中の画像ブロックについて、ハフマン符号化前のデータを逆量子化、ＩＤＣＴ、参照画像加算して復元してメモリ３に出力する。
【０１２２】
そして、このような画像処理モジュール７への画像ブロックの入出力は、ＤＭＡコントローラ１ａのチャネル１から３を用いる。すなわち、チャネル１は、例えば、ＢＳ１Ｒに１６画素分のデータ数、ＢＳ０Ｒに１６画素分のデータ数を設定しメモリ３から画像処理モジュール７への圧縮対象マクロブロックの転送とする。また、チャネル１のＭＡＲ（第３のレジスタ）に次のマクロブロックの先頭アドレスとの差分を設定すれば、等間隔にあるマクロブロックについては、ＣＰＵ２による機能レジスタ再設定が不要になる。
【０１２３】
チャネル２は、例えば、ＢＳ１Ｒに４８画素分のデータ数、ＢＳ０Ｒに４８画素分のデータ数を設定しメモリ３から画像処理モジュール７への４８×４８画素の参照画像データの転送とする。また、チャネル２のＭＡＲに次の参照画像データの先頭アドレスとの差分を設定すれば、等間隔にある参照画像データについては、機能レジスタ再設定が不要になる。
【０１２４】
チャネル３は、例えば、ＢＳ１Ｒに１６画素分のデータ数、ＢＳ０Ｒに１６画素分のデータ数を設定し、画像処理モジュール７からメモリ３への復元したマクロブロックの転送とする。また、チャネル３のＭＡＲに次のマクロブロックの先頭アドレスとの差分を設定すれば、等間隔にあるマクロブロックについては、機能レジスタ再設定が不要になる。
【０１２５】
このとき、画像フレームサイズは共通のため、ＡＮ０Ｒには画像フレームの１次元内に含まれるサイズを設定する。また、前記チャネル１とチャネル２は、転送元をメモリ上の２次元のデータ領域内のブロックデータ領域とし、チャネル３は、転送先がメモリ上の２次元のデータ領域内のブロックデータ領域となるように設定する。
【０１２６】
これらのＤＭＡ転送は、ＤＲＥＱとＤＡＣＫにより画像処理モジュール７における処理の進行と同期し、ＤＭＡコントローラ１ａから対応するＤＭＡ転送の終了の割り込み信号をＣＰＵ２に発行することで、ＣＰＵプログラムとの同期を取ることができる。
【０１２７】
外部記憶装置入出力コントローラ９は、例えば固体メモリ装置へのデータの入出力を制御する。前記画像処理モジュール７のＭＰＥＧ画像圧縮データを固体メモリ装置に保存する場合には、例えばＤＭＡコントローラ１ａのチャネル４を用いて、画像処理モジュール７から外部記憶装置入出力コントローラ９への転送を行えばよい。このときのＤＭＡコントローラ１ａのチャネル４の設定は、ＢＳ１Ｒを１、ＢＳ０Ｒを圧縮データ数とする従来技術同様のＤＭＡ転送である。
【０１２８】
なお、ＤＭＡコントローラ１ａからのＤＭＡ転送終了の割り込み信号をＣＰＵに発行することによって、ＣＰＵ２は、メモリ３に取り込まれる画像データについて１フレーム毎に、ＣＰＵ２内のプログラムの実行と同期を取ることができる。
【０１２９】
以上のように、データ転送装置の複数のチャネルを用いて、それぞれのチャネルを画像処理モジュールなどに対する入出力手段とすることで、ＣＰＵあるいは画像処理モジュールなどのプログラム実行制御系の実行効率を向上させることができ、画像処理時間などの短縮が可能になる。また、このデータ転送装置は、前述したように汎用的な構成となっているため、画像処理モジュールに限らず外部記憶装置や各種周辺モジュールに対する入出力手段としても利用できる。
【０１３０】
なお、図１２に示した画像処理装置では、１つのデータ転送装置を搭載したが、これを複数搭載してもよい。図１３は、本発明の一実施の形態の画像処理装置において、データ転送装置を複数搭載した画像処理装置の一例を示す構成図である。図１３に示す画像処理装置は、前記図１２で説明した画像処理装置に対して、画像入力コントローラ８からメモリ（１）３ａへの画像データの取り込み、および、画像処理モジュール７の画像入出力をＣＰＵ２のデータバス（０）から分離することによって、ＣＰＵバスの負荷を軽減した例である。
【０１３１】
図１３において、分割したデータバス（１）のバスマスタは、ＤＭＡコントローラ（１）１ｃであり、前記図１２で説明したＤＭＡコントローラ１ａのチャネル０〜３の動作をＤＭＡコントローラ（１）１ｃのチャネル０〜３で行う。また、図１３におけるデータバス（０）のバスマスタは図１２と同様にＣＰＵ２とＤＭＡコントローラ（０）１ｂである。
【０１３２】
ＤＭＡコントローラ（１）１ｃの機能レジスタの設定は、ＣＰＵ２からデータバス（０）を介して行なわれる。ＤＭＡコントローラ（１）１ｃの各チャネルのＤＭＡ転送終了後の割り込み信号は、図１２と同様にＣＰＵ２に対して送られる。なお、紙面上省略したが、画像入力コントローラ８内の機能レジスタの設定はデータバス（０）を介してＣＰＵ２で行なわれる。
【０１３３】
このように、図１３の画像処理装置は、図１２の画像処理装置と同様にＣＰＵプログラムによる同期と制御が可能である。そして、画像処理モジュール７とＤＭＡコントローラ（１）１ｃ間に独立バス（アドレスバス（１）およびデータバス（１））を設けることで、ＣＰＵが動作する際と画像データを転送する際のバスのスループットを向上できる効果がある。
【０１３４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１３５】
例えば、これまでの例ではＡＮ０Ｒ等の値を各チャネル共通で用いたが、各チャネル毎に、それぞれ、ｎ次元のデータ領域を指定する情報として、１次元内に含まれるデータ数、２次元内に含まれるデータ数、…、（ｎ−１）次元内に含まれるデータ数を設定する機能レジスタＡＮ０Ｒ、ＡＮ１Ｒ、…、ＡＮ（ｎ−２）Ｒを設けてもよい。これにより、異なるｎ次元データサイズ内のブロックデータ領域の転送が可能になる。
【０１３６】
また、例えば、これまでの例では、メモリ上のブロックデータ領域と画像処理モジュール等の周辺モジュールとの間でデータ転送を行うデータ転送装置の構成例を示したが、転送先と転送元の両方を多次元のデータ領域内の任意のブロックデータ領域とする構成にしてもよい。
【図面の簡単な説明】
【０１３７】
【図１】本発明の一実施の形態のデータ転送装置において、２次元までのブロックデータ領域を抽出および転送するデータ転送装置の構成の一例と、それを含めたシステム構成および処理動作の一例を示す概略図である。
【図２】本発明の一実施の形態のデータ転送装置において、メモリ上に格納された２次元のデータ領域から２次元のブロックデータ領域を抽出する際の、メモリマップとブロックデータ領域の関係の一例を示す説明図である。
【図３】本発明の一実施の形態のデータ転送装置において、抽出した２次元のブロックデータ領域をＤＡＲが示すアドレスに転送する際の、ブロックデータ領域と転送先アドレスマップとの関係の一例を示す説明図である。
【図４】本発明の一実施の形態のデータ転送装置において、メモリ上の２次元のブロックデータ領域を周辺モジュールに対して転送する際のＤＭＡコントローラの処理の一例を示すフロー図である。
【図５】本発明の一実施の形態のデータ転送装置において、メモリ上の２次元のブロックデータ領域を周辺モジュールに対して転送する際の図４に続くＤＭＡコントローラの処理の一例を示すフロー図である。
【図６】本発明の一実施の形態のデータ転送装置において、メモリ上の２次元のブロックデータ領域を周辺モジュールに対して転送する際の図５に続くＤＭＡコントローラの処理の一例を示すフロー図である。
【図７】本発明の一実施の形態のデータ転送装置において、３次元までのブロックデータ領域を抽出および転送するデータ転送装置の構成の一例と、それを含めたシステム構成および処理動作の一例を示す概略図である。
【図８】本発明の一実施の形態のデータ転送装置において、メモリ上に格納された３次元のデータ領域からブロックデータ領域を抽出する際の、メモリマップとブロックデータ領域の関係の一例を示す説明図である。
【図９】本発明の一実施の形態のデータ転送装置において、抽出した３次元のブロックデータ領域をＤＡＲが示すアドレスに転送する際の、ブロックデータ領域と転送先アドレスマップとの関係の一例を示す説明図である。
【図１０】本発明の一実施の形態のデータ転送装置において、メモリ上の３次元のブロックデータ領域を周辺モジュールに対して転送する際のＤＭＡコントローラの処理の一例を示すフロー図である。
【図１１】本発明の一実施の形態のデータ転送装置において、メモリ上の３次元のブロックデータ領域を周辺モジュールに対して転送する際の図１０に続くＤＭＡコントローラの処理の一例を示すフロー図である。
【図１２】本発明の一実施の形態の画像処理装置において、データ転送装置を搭載した画像処理装置の一例を示す構成図である。
【図１３】本発明の一実施の形態の画像処理装置において、データ転送装置を複数搭載した画像処理装置の一例を示す構成図である。
【符号の説明】
【０１３８】
１，１ａ，１ｂ，１ｃ  ＤＭＡコントローラ（２次元対応）
５  ＤＭＡコントローラ（３次元対応）
２  ＣＰＵ
３，３ａ，３ｂ  メモリ
４  周辺モジュール
７  画像処理モジュール
８  画像入力コントローラ
９  外部記憶装置入出力コントローラ
【図１】
2005063376.tif 000003
【図２】
2005063376.tif 000004
【図３】
2005063376.tif 000005
【図４】
2005063376.tif 000006
【図５】
2005063376.tif 000007
【図６】
2005063376.tif 000008
【図７】
2005063376.tif 000009
【図８】
2005063376.tif 000010
【図９】
2005063376.tif 000011
【図１０】
2005063376.tif 000012
【図１１】
2005063376.tif 000013
【図１２】
2005063376.tif 000014
【図１３】
2005063376.tif 000015