(57)【要約】【課題】  単純なＤＭＡＣを使って複雑なデータ転送をＣＰＵの介在なしに実行でき、かつ複数のＤＭＡＣをＣＰＵの介在なしに連携動作させることが可能なデータ転送装置の提供を目的とする。【解決手段】  転送終了通知信号出力を有するＤＭＡＣと、書き込まれた値に応じて実行再開信号を出力する手段を有する同期レジスタと、一時停止命令を実行する手段および実行再開信号と転送終了通知信号とによって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスのアドレスをデコードするデコーダと、デコード結果に応じて命令実行ユニットからのアクセスの中継先を切替えるデマルチプレクサと、デマルチプレクサと外部バスの中継および外部バスとマルチプレクサの中継を行うバスインタフェースと、デコーダとバスインタフェースからのアクセスを向上させる。【選択図】  図１
2006119710.tif 000002
【特許請求の範囲】
【請求項１】
転送終了通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、内部状態を保持したまま次の命令の実行を停止する命令を実行する手段およびダイレクトメモリアクセスコントローラからの転送終了通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスを外部バスに中継するバスインタフェースとによって構成されることを特徴とするデータ転送装置。
【請求項２】
転送終了通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、命令を記憶する命令メモリと、命令メモリから命令を読み出す手段および内部状態を保持したまま次の命令の実行を停止する命令を実行する手段およびダイレクトメモリアクセスコントローラからの転送終了通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスを外部バスに中継するバスインタフェースとによって構成されることを特徴とするデータ転送装置。
【請求項３】
転送終了通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、書き込まれた値に応じて実行再開信号を出力する手段を有する同期レジスタと、内部状態を保持したまま次の命令の実行を停止する命令を実行する手段および同期レジスタからの実行再開信号によって命令実行を再開する手段およびダイレクトメモリアクセスコントローラからの転送終了通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスのアドレスをデコードして出力先切替え信号を生成するデコーダと、デコーダからの出力先切替え信号に応じて命令実行ユニットからのアクセスをマルチプレクサまたは第一のバスインタフェースに中継するデマルチプレクサと、デマルチプレクサからのアクセスを外部バスに中継する第一のバスインタフェースと、外部バスからのアクセスをバスマルチプレクサに中継する第二のバスインタフェースと、デコーダと第二のバスインタフェースからのアクセスを多重化して同期レジスタに中継するマルチプレクサとによって構成されることを特徴とするデータ転送装置。
【請求項４】
転送終了通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、命令を記憶する命令メモリと、書き込まれた値に応じて実行再開信号を出力する手段を有する同期レジスタと、命令メモリから命令を読み出す手段および内部状態を保持したまま次の命令の実行を停止する命令を実行する手段および同期レジスタからの実行再開信号によって命令実行を再開する手段およびダイレクトメモリアクセスコントローラからの転送終了通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスのアドレスをデコードして出力先切替え信号を生成するデコーダと、デコーダからの出力先切替え信号に応じて命令実行ユニットからのアクセスをマルチプレクサまたは第一のバスインタフェースに中継するデマルチプレクサと、デマルチプレクサからのアクセスを外部バスに中継する第一のバスインタフェースと、外部バスからのアクセスをバスマルチプレクサに中継する第二のバスインタフェースと、デコーダと第二のバスインタフェースからのアクセスを多重化して同期レジスタに中継するマルチプレクサとによって構成されることを特徴とするデータ転送装置。
【請求項５】
請求項１〜請求項４に記載のデータ転送装置において、ダイレクトメモリコントローラは制御情報および転送命令を書き込むための制御バスインタフェースをデータ転送のためのバスインタフェースから独立して有しており、デマルチプレクサはデコーダからの出力先切替え信号に応じて命令実行ユニットからのアクセスをダイレクトメモリアクセスコントローラの制御バスインタフェースにも中継することを特徴とするデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセスコントローラ（DMAC）の制御方式に関する。
【背景技術】
【０００２】
ダイレクトメモリアクセスはCPUのデータ転送に関わる負荷の軽減と処理の高速化のために、CPUを有するシステムにおいて広く利用されている（例えば［特許文献１］参照）。図１４にダイレクトメモリアクセスコントローラ（DMAC）を有するデータ処理モジュールを用いたシステムの構成例を示す。
【０００３】
1401はシステム全体を制御するCPUである。
【０００４】
1402はCPU(1401)、RAM (1404)、ROM (1403)、データ処理モジュール(1405)が接続されるシステムバスである。
【０００５】
1403はシステムのブートプログラムが格納されているROMである。
【０００６】
1404はCPU(1401)が動作するためのシステムワークメモリであり、データ処理モジュール(1405)で扱うデータを一時記憶するためのバッファメモリでもあるRAMである。
【０００７】
1405はデータ処理部(1406)およびダイレクトメモリアクセスコントローラ(1407)を有しており、メモリからデータを読み込み、読み込んだデータに処理を施し、処理後のデータをメモリに書き出すという一連の動作を実行するデータ処理モジュールである。
【０００８】
1406は入力されたデータに所定の処理を施すデータ処理部である。
【０００９】
1407はデータ処理部(1406)への入出力データをRAM(1404)から読み書きするためのダイレクトメモリアクセスコントローラ（DMAC）である。ここでは入力チャネルと出力チャネルの２つのチャネルを有しているものとする。入力チャネルはデータ処理部(1405)へのデータをメモリから転送するためのチャネルであり、転送先はデータ処理部の入力に固定されている。出力チャネルはデータ処理部(1405)で処理したデータをメモリへ転送するためのチャネルであり、入力元はデータ処理部(1405)の出力に固定されている。
【００１０】
CPU(1401)またはシステムバス(1402)はバスアービトレーションの機能を含むものとする。
【００１１】
図１７のシステムは以下のような手順で動作する。
【００１２】
ステップ１：CPU(1401)はデータ処理部(1405)を起動する際、ダイレクトメモリアクセスコントローラ(1407)の入力チャネルに入力データのアドレスとサイズを設定してダイレクトメモリアクセスコントローラ(1407)を起動する。
【００１３】
ステップ２：ダイレクトメモリアクセスコントローラ(1407)の入力チャネルが入力データサイズに設定されたサイズのデータを転送し、データ処理部(1405)における処理が終わると、CPU(1401)に対して割込み信号を生成してデータ転送および処理の終了を知らせる。
【００１４】
ステップ３：CPU(1401)はデータ処理部(1405)で処理されたデータのサイズを読み取り、ダイレクトメモリアクセスコントローラ(1407)の出力チャネルに出力先アドレスと先にデータ処理部(1405)から読み取ったデータサイズを設定してダイレクトメモリアクセスコントローラ(1407)を起動する。
【００１５】
ステップ４：CPU(1401)は処理データに続きがあれば、再度ステップ１〜３を実行する。
【特許文献１】特開平１１−１２０１２３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、前述した従来例のようにDMACはCPUによって設定された転送アドレスと転送データサイズに応じて連続したデータの転送を行ため、チェーンバッファのような不連続な領域に対するデータ転送など複雑な転送を行う場合、データの連続する部分毎にDMACを起動しなければならずCPUに対する負荷が大きくなるという問題があった。前述のような複雑なデータ転送を行う専用DMACを設計してCPU負荷の軽減を図る方法も用いられてきたが、ハードウェア開発にかかるコストが増大するという問題があった。また複数のDMACを同期させてDMACによって転送されたデータを他のDMACによって転送させる場合には、ひとつのDMACによるデータ転送が終了する毎にCPUが介在しなければならないという問題があった。
【課題を解決するための手段】
【００１７】
上記課題を解決するために、請求項１記載の発明に係るデータ転送装置では、転送終了通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、内部状態を保持したまま次の命令の実行を停止する命令を実行する手段およびダイレクトメモリアクセスコントローラからの転送終了通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスを外部バスに中継するバスインタフェースとによって構成されることを特徴とする。
【００１８】
請求項２記載の発明に係るデータ転送装置では、転送終了通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、命令を記憶する命令メモリと、命令メモリから命令を読み出す手段および内部状態を保持したまま次の命令の実行を停止する命令を実行する手段およびダイレクトメモリアクセスコントローラからの転送終了通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスを外部バスに中継するバスインタフェースとによって構成されることを特徴とする。
【００１９】
請求項３記載の発明に係るデータ転送装置では、転送終了通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、書き込まれた値に応じて実行再開信号を出力する手段を有する同期レジスタと、内部状態を保持したまま次の命令の実行を停止する命令を実行する手段および同期レジスタからの実行再開信号によって命令実行を再開する手段およびダイレクトメモリアクセスコントローラからの転送終了通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスのアドレスをデコードして出力先切替え信号を生成するデコーダと、デコーダからの出力先切替え信号に応じて命令実行ユニットからのアクセスをマルチプレクサまたは第一のバスインタフェースに中継するデマルチプレクサと、デマルチプレクサからのアクセスを外部バスに中継する第一のバスインタフェースと、外部バスからのアクセスをバスマルチプレクサに中継する第二のバスインタフェースと、デコーダと第二のバスインタフェースからのアクセスを多重化して同期レジスタに中継するマルチプレクサとによって構成されることを特徴とする。
【００２０】
請求項４記載の発明に係るデータ転送装置では、転送終了通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、命令を記憶する命令メモリと、書き込まれた値に応じて実行再開信号を出力する手段を有する同期レジスタと、命令メモリから命令を読み出す手段および内部状態を保持したまま次の命令の実行を停止する命令を実行する手段および同期レジスタからの実行再開信号によって命令実行を再開する手段およびダイレクトメモリアクセスコントローラからの転送終了通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスのアドレスをデコードして出力先切替え信号を生成するデコーダと、デコーダからの出力先切替え信号に応じて命令実行ユニットからのアクセスをマルチプレクサまたは第一のバスインタフェースに中継するデマルチプレクサと、デマルチプレクサからのアクセスを外部バスに中継する第一のバスインタフェースと、外部バスからのアクセスをバスマルチプレクサに中継する第二のバスインタフェースと、デコーダと第二のバスインタフェースからのアクセスを多重化して同期レジスタに中継するマルチプレクサとによって構成されることを特徴とする。
【００２１】
請求項５記載の発明に係るデータ転送装置では、請求項１〜請求項４に記載のデータ転送装置において、ダイレクトメモリコントローラは制御情報および転送命令を書き込むための制御バスインタフェースをデータ転送のためのバスインタフェースから独立して有しており、デマルチプレクサはデコーダからの出力先切替え信号に応じて命令実行ユニットからのアクセスをダイレクトメモリアクセスコントローラの制御バスインタフェースにも中継することを特徴とする。
【発明の効果】
【００２２】
以上説明したように、分割された領域に対するデータ転送のように複雑なデータ転送であっても、本発明のデータ転送装置が有する命令実行ユニットによって分割情報の読み込みやDMACのパラメータ計算を行ってDMACを設定・起動するため、CPUに対する負荷を削減できる。また、機能毎に専用のハードウェアを開発する必要がなくなるためハードウェア開発コストの増大も回避できる。さらに、複数のデータ転送装置が互いの同期レジスタにフラグを書き込むことにより同期を取ることができるため、CPUの介在なしに複数のデータ転送装置間の同期が可能となる
【発明を実施するための最良の形態】
【００２３】
（実施形態１）
本発明のデータ転送装置の構成図を図1に示す。
【００２４】
100はデータ転送装置である。
【００２５】
101はダイレクトメモリアクセスコントローラであり、外部バスにアクセスしてメモリ転送を行う手段と転送終了通知信号出力とを有する。
【００２６】
102は命令実行ユニットであり、メモリから命令を読み出して実行する手段と、特に後に続く命令の実行を一時停止する命令を実行する手段と、ダイレクトメモリアクセスコントローラ（DMAC）からの終了転送通知信号により該一時停止状態から後に続く命令の実行を再開する手段とを有する。
【００２７】
103はバスインタフェースユニットであり、命令実行ユニットからのアクセスを外部バスに中継する。
【００２８】
次にデータ転送装置(100)の動作について説明する。
【００２９】
データ転送装置(100)はCPUなどの外部装置によって起動されると、命令実行ユニット(102)が所定のアドレスから命令を読み込み、命令の記述に従ってダイレクトメモリアクセスコントローラ(101)のパラメータ計算を行い、該パラメータを外部バス経由でダイレクトメモリアクセスコントローラ(101)に設定してダイレクトメモリアクセスコントローラ(101)起動し、自身は一時停止(suspend)命令により一時停止状態に遷移する。
【００３０】
ダイレクトメモリアクセスコントローラ(101)は所定のデータ転送を実行し、データ転送終了時に命令実行ユニット(102)に対する転送終了通知信号をアサートする。
【００３１】
転送終了通知信号を受けた命令実行ユニット(102)は一時停止状態から復帰して、該一時停止(suspend)命令の次の命令から実行を再開する。
【００３２】
さらにデータ転送を実行する命令が続いていれば、命令実行ユニット(102)は再度ダイレクトメモリアクセスコントローラ(101)の設定と起動を行い、そうでなければ動作を終了する。
【００３３】
（実施形態２）
本発明のデータ転送装置の構成図を図２に示す。
【００３４】
200はデータ転送装置である。
【００３５】
201はダイレクトメモリアクセスコントローラであり、外部バスにアクセスしてメモリ転送を行う手段と転送終了通知信号出力とを有する。
【００３６】
202は命令メモリであり、命令実行ユニット(203)によって実行される命令を記憶する。
【００３７】
203は命令実行ユニットであり、命令メモリ(202)から命令を読み出して実行する手段と、特に後に続く命令の実行を一時停止する命令を実行する手段と、ダイレクトメモリアクセスコントローラ（DMAC）からの終了転送通知信号により該一時停止状態から後に続く命令の実行を再開する手段とを有する。
【００３８】
204はバスインタフェースユニットであり、命令実行ユニット(203)からのアクセスを外部バスに中継する。
【００３９】
データ転送装置(200)は、命令実行ユニット(203)がデータ転送装置(200)内にある命令メモリ(202)から命令を読み込むことを除いて、データ転送装置(100)と同様に動作する。
【００４０】
（実施形態３）
本発明のデータ転送装置の構成図を図３に示す。
【００４１】
300はデータ転送装置である。
【００４２】
301はダイレクトメモリアクセスコントローラであり、外部バスにアクセスしてメモリ転送を行う手段と転送終了通知信号出力とを有する。
【００４３】
302は同期レジスタであり、書き込まれた値または値の変化に応じて命令実行ユニット(303)に対する実行再開信号をアサートする。
【００４４】
303は命令実行ユニットであり、メモリから命令を読み出して実行する手段と、特に後に続く命令の実行を一時停止する命令を実行する手段と、同期レジスタ(302)からの実行再開信号とダイレクトメモリアクセスコントローラ(301)からの転送終了通知信号により該一時停止状態から後に続く命令の実行を再開する手段とを有する。
【００４５】
304はデコーダであり、命令実行ユニット(303)からのアクセスのアドレスをデコードして出力先切替え信号を生成する。
【００４６】
305はデマルチプレクサであり、デコーダ(304)からの出力先切替え信号に応じて命令実行ユニットからのアクセスをマルチプレクサ(308)または第一のバスインタフェース(306)に中継する。
【００４７】
306は第一のバスインタフェースであり、デマルチプレクサ(305)からのアクセスを外部バスに中継する。
【００４８】
307は第二のバスインタフェースであり、外部バスからのアクセスをマルチプレクサ(308)に中継する。
【００４９】
308はマルチプレクサであり、デマルチプレクサ(305)からのアクセスと第二のバスインタフェース(307)からのアクセスを同期レジスタ(302)に中継する。
【００５０】
データ転送装置(300)を用いたデータ処理モジュールの構成図を図４に示す。
【００５１】
400はデータ処理モジュールであり、ダイレクトメモリアクセス転送により所定のデータを読み込み、該データに所定の処理を行った後に所定の領域に書き込む。
【００５２】
401はデータ転送装置(300)であり、データ処理ユニット(402)の入力データをバス(404)上の任意のアドレスから読み込みデータ処理ユニット(402)に中継する。
【００５３】
402はデータ処理ユニットであり、データ転送装置(401)によって読み込まれたデータに処理を施しデータ転送装置(403)に中継する。
【００５４】
403はデータ転送装置(300)であり、データ処理ユニット(402)から出力データを受け取りバス(404)上の任意のアドレスに転送する。
【００５５】
404はバスであり、データ処理モジュール(400)が接続される。
【００５６】
データ処理モジュール(400)を用いて構成したシステムの構成図を図５に示す。
【００５７】
500は画像入力デバイスであるスキャナ(521)や画像出力デバイスであるプリンタ(520)と接続し、一方ではI/Oインタフェースを介してLANや公衆回線(WAN)に接続することで、画像情報やデバイス情報の入出力、PDLデータのイメージ展開を行う為のシステムコントローラユニットである。
【００５８】
501はシステム全体を制御するCPUである。
【００５９】
502はCPU(501)、レジスタアクセスバスブリッジ(503)、RAMコントローラ(505)、ROMコントローラ(506)、操作部インタフェース(507)、画像出力インタフェース(508)、画像入力インタフェース(510)、画像圧縮モジュール(512)、画像伸張モジュール(513)、色空間変換モジュール(514)、その他のモジュール(515)、I/Oインタフェース(516)が接続されるシステムバスである。
【００６０】
503はシステムバス(502)経由のリードおよびライトアクセスサイクルをレジスタアクセスバスのプロトコルに変換してレジスタアクセスバス(504)に中継するレジスタアクセスバスブリッジである。
【００６１】
504は各モジュールの制御レジスタにアクセスするためのレジスタアクセスバスである。
【００６２】
505はシステムバス(502)経由のリードおよびライトアクセスサイクルをRAM(517)のアクセスプロトコルに変換して中継するとともに、必要に応じてリフレッシュ等の動作を行うRAMコントローラである。
【００６３】
506はシステムバス(502)経由のリードアクセスをROM(518)のアクセスプロトコルに変換して中継するROMコントローラである。
【００６４】
507は操作部(UI)(519)とのインタフェースで、UI(519)に表示する画像データをUI(519)に対して出力するとともに、UI(519)から本システム使用者が入力した情報をCPU(501)に伝える操作部インタフェースである。
【００６５】
508はシステムバス(502)経由の画像データを入力とし、クロックレートなどの変更を行い、画像データをプリンタ用画像処理部(509)へ出力する画像出力インタフェースである。
【００６６】
509はプリンタ出力のための補正画像処理を行い、結果をプリンタ(520)へ出力するプリンタ用画像処理部である。
【００６７】
510はスキャナ用画像処理部(511)により補正画像処理された画像データを入力とし、所定の方法によりクロックレートなどの変更を行い、システムバス(502)に対し出力を行う画像入力インタフェースである。
【００６８】
511は画像入力デバイスであるスキャナ(521)によりスキャンされた画像データを補正画像処理するスキャナ用画像処理部である。
【００６９】
512はデータ処理モジュール(400)におけるデータ処理部(402)の機能として画像圧縮機能を有する画像圧縮モジュールである。
【００７０】
513はデータ処理モジュール(400)におけるデータ処理部(402)の機能として画像伸張機能を有する画像伸張モジュールである。
【００７１】
514はデータ処理モジュール(400)におけるデータ処理部(402)の機能として色空間変換機能を有しており、カラー及びグレースケール画像の色空間の変換を行う色空間変換モジュールである。
【００７２】
515はLANやモデムおよびその他の入出力のための機器のインタフェースとなるI/Oインタフェースである。
【００７３】
516はCPU(501)が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもあるRAMである。
【００７４】
517はシステムのブートプログラムが格納されているROMである。
【００７５】
518は本システムの使用者に対して本システムの動作状況を示すとともに、処理を受け付けるためのインタフェースとなる操作部(UI)である。
【００７６】
519はプリンタ用画像処理部(509)を介して入力された画像データを紙などの物理媒体上に結像させるプリンタである。
【００７７】
520は紙などの物理媒体に記録された画像を読み取り、電子情報に変換してスキャナ用画像処理部(511)に対して出力するスキャナである。
【００７８】
システムコントローラユニット（500）内では、画像データを縦y pixel 横x pixelの矩形領域単位の画像データに分割したパケット形式で取り扱うものとする。パケットのフォーマットを図６に示す。
【００７９】
パケットはヘッダ情報(601)とy pixel × x pixelの画像データ(602)から構成される。
【００８０】
ヘッダ情報(601)に含まれる情報について説明する。
Packet ID(603)にはy pixel × x pixelの画像の並びの順に従って連続した一意の値が割り当てられている。
【００８１】
データパケットは画像データが圧縮されている場合と非圧縮の場合がある。本実施例では、画像データが多値カラーである場合に限定し、圧縮アルゴリズムとしてJPEGを採用するものとする。
【００８２】
圧縮されている場合と非圧縮の場合との区別はCompress Flag(604)で示される。
Data Length(605)は画像データ(602)の長さを表している。
【００８３】
Packet Tableフォーマットを図７に示す。
各PacketはPacket Table(701)によって管理する。
【００８４】
Packet Start Address(702)はパケットの先頭アドレスを示す。
【００８５】
Packet  Length(703)はヘッダを含めたパケット長を示す。
【００８６】
Packet Table(701)はメモリ上で連続した領域に確保されるものとする。
【００８７】
Packet Table(701)は常に走査方向に並んでおり、Yn/Xn＝000/000, 000/001,000/002,．．．．という順で並んでいる。このPacket Table(701)のEntryは一意にひとつのパケットを示す。
【００８８】
以下に示す１〜４からなる処理を例に挙げ、本実施例の動作を説明する。
【００８９】
元データはRGBAで表現された画像を構成する一連のJPEG圧縮データパケット１とする。簡単のためパケット単位では分割されてないものとする。
【００９０】
パケット１を画像伸張モジュール(513)によって伸張しRGBA非圧縮データを中間バッファ１に格納する。
【００９１】
中間バッファ１に格納されたRGBA非圧縮データを色空間変換モジュール(514)によってCMYKに変換し中間バッファ２に格納する。
【００９２】
中間バッファ２に格納されたCMYK非圧縮データを画像圧縮モジュール(512)によってJPEG圧縮し結果格納領域にパケット２として書き込み、同時に所定の領域にパケットテーブル(701)を作成する。簡単のため結果格納領域は連続した十分な大きさの領域を確保できているものとする。
【００９３】
１パケット分の非圧縮データの大きさは、y×x pixelsのデータを含み、かつピクセルあたり4空間分のデータを有しており、それぞれ1byteで表現されるとして4xy bytesの固定値となる。従って、中間バッファ１、２に対してそれぞれ4xy bytesの領域が確保されており、以下この値を中間バッファサイズとする。
【００９４】
画像伸張モジュール(513)のデータ転送装置(401)は図８に示すフローを、色空間変換モジュール(514)のデータ転送装置(401)は図９に示すフローを、画像圧縮モジュール(512) のデータ転送装置(401)は図１０に示すフローをそれぞれ実行する。また、画像圧縮モジュール(512)の出力側データ転送装置(403)のダイレクトメモリアクセスコントローラ(301)は、転送データサイズが出力バッファサイズに達するか、データ処理部(402)から受け取った最終データを転送し終わったときに転送終了通知信号をアサートする。
【００９５】
画像伸張モジュール(513)の動作について図８を参照しながら説明する。
【００９６】
S800は画像伸張モジュール(513)の入力側データ転送装置(401)の命令実行ユニット(303)の動作フローである。データ転送装置(401)は同期レジスタ(302)に中間バッファ１emptyフラグを割り当てるものとする。中間バッファ１emptyフラグの初期値は１（命令実行再開信号アクティブ）である。
【００９７】
S801において、パケットテーブル(701)から一つのエントリを読み込む。
【００９８】
S802において、パケットテーブルエントリ中のPacket Start Address(702)にヘッダ長を加えた値をデータ開始アドレスとしてダイレクトメモリアクセスコントローラ(301)の入力データアドレスに設定する。
【００９９】
S803において、パケットテーブルエントリ中のPacket Length(703)をダイレクトメモリアクセスコントローラ(301)の入力データサイズに設定する。
【０１００】
S804において、一時停止(suspend)命令により一時停止状態に遷移するが、最初は中間バッファ１emptyフラグが１なので即S805の処理へ移行する。それ以降は中間バッファ１emptyフラグが１になるまで一時停止状態のままである。
【０１０１】
S805において、中間バッファ１emptyフラグが１になると命令実行を再開する。
【０１０２】
S806において、中間バッファ１emptyフラグをクリアする。
【０１０３】
S807において、S802とS803とで指定した条件でダイレクトメモリアクセスコントローラ(301)を起動する。
【０１０４】
S808において、一時停止(suspend)命令により一時停止状態に遷移する。
【０１０５】
S809において、ダイレクトメモリアクセスコントローラ(301)による転送が終了するとダイレクトメモリアクセスコントローラ(301)から命令実行ユニット(303)への転送終了通知信号がアサートされ命令実行ユニット(303)は命令実行を再開する。
【０１０６】
S810において、最終パケットであれば処理を終了し、そうでなければS801に戻り次のパケットの処理を行う。
【０１０７】
S820は画像伸張モジュール(513)の出力側データ転送装置(403)の命令実行ユニット(303)動作フローである。
【０１０８】
S821において、中間バッファサイズをダイレクトメモリアクセスコントローラ(301)の出力バッファサイズに設定する。
【０１０９】
S822において、中間バッファ１の先頭アドレスをダイレクトメモリアクセスコントローラ(301)の出力バッファアドレスに設定する。
【０１１０】
S823において、S821とS822とで指定した条件でダイレクトメモリアクセスコントローラ(301)を起動する。
【０１１１】
S824において、一時停止(suspend)命令により一時停止状態に遷移する。
【０１１２】
S825において、ダイレクトメモリアクセスコントローラ(301)による転送が終了するとダイレクトメモリアクセスコントローラ(301)から命令実行ユニット(303)への転送終了通知信号がアサートされ命令実行ユニット(303)は命令実行を再開する。
【０１１３】
S826において、色空間変換モジュール(514)の入力側データ転送装置(401)の同期レジスタ(302)に中間バッファ１有効フラグをセットする。
【０１１４】
S827において、最終パケットであれば処理を終了し、そうでなければS823に戻り次のパケットの処理を行う。
【０１１５】
色空間変換モジュール(514)の動作について図９を参照しながら説明する。
【０１１６】
S900は色空間変換モジュール(514)の入力側データ転送装置(401)の命令実行ユニット(303)の動作フローである。データ転送装置(401)は同期レジスタ(302)に中間バッファ１有効フラグと中間バッファ２emptyフラグを割り当てるものとする。中間バッファ１有効フラグの初期値は０、中間バッファ２emptyフラグの初期値は１である。
【０１１７】
S901において、中間バッファサイズをダイレクトメモリアクセスコントローラ(301)の入力データサイズに設定する。
【０１１８】
S902において、中間バッファ１の先頭アドレスをダイレクトメモリアクセスコントローラ(301)の入力データアドレスに設定する。
【０１１９】
S903において、一時停止(suspend)命令により一時停止状態に遷移する。
【０１２０】
S904において、中間バッファ1有効フラグまたは中間バッファ２emptyフラグが１になると命令実行を再開する。
【０１２１】
S905において、中間バッファ１有効フラグと中間バッファ２emptyフラグのうち１になったフラグを変数に記憶する。ともに１になったときは１になったフラグを記憶する変数をクリアしてS907の処理を行う。そうでない場合にはS906の処理を行う。
【０１２２】
S906において、中間バッファ１有効フラグと中間バッファ２emptyフラグのうち１になったフラグをクリアする。
【０１２３】
S907において、S901とS902とで指定した条件でダイレクトメモリアクセスコントローラ(301)を起動する。
【０１２４】
S908において、一時停止(suspend)命令により一時停止状態に遷移する。
【０１２５】
S909において、ダイレクトメモリアクセスコントローラ(301)による転送が終了するとダイレクトメモリアクセスコントローラ(301)から命令実行ユニット(303)への転送終了通知信号がアサートされ命令実行ユニット(303)は命令実行を再開する。
【０１２６】
S910において、最終パケットであれば処理を終了し、そうでなければS911の処理を行う。
【０１２７】
S911において、画像伸張モジュール(513)の入力側データ転送装置(401)の同期レジスタ(302)の中間バッファemptyフラグをセットする。
【０１２８】
S920は色空間変換モジュール(514)の出力側データ転送装置(403)の命令実行ユニット(303)の動作フローである。
【０１２９】
S921において、中間バッファサイズをダイレクトメモリアクセスコントローラ(301)の出力バッファサイズに設定する。
【０１３０】
S922において、中間バッファ２の先頭アドレスをダイレクトメモリアクセスコントローラ(301)の出力バッファアドレスに設定する。
【０１３１】
S923において、S921とS922とで指定した条件でダイレクトメモリアクセスコントローラ(301)を起動する。
【０１３２】
S924において、一時停止(suspend)命令により一時停止状態に遷移する。
【０１３３】
S925において、ダイレクトメモリアクセスコントローラ(301)による転送が終了するとダイレクトメモリアクセスコントローラ(301)から命令実行ユニット(303)への転送終了通知信号がアサートされ命令実行ユニット(303)は命令実行を再開する。
【０１３４】
S926において、画像圧縮モジュール(512)の入力側データ転送装置(401)の同期レジスタ(302)に中間バッファ２有効フラグをセットする。
【０１３５】
S927において、最終パケットであれば処理を終了し、そうでなければS923に戻り次のパケットの処理を行う。
【０１３６】
画像圧縮モジュール(512)の動作について図１０を参照しながら説明する。
【０１３７】
S1000は画像伸張モジュール(512)の入力側データ転送装置(401)の命令実行ユニット(303)の動作フローである。データ転送装置(401)は同期レジスタ(302)に中間バッファ２有効フラグを割り当てるものとする。中間バッファ２有効フラグの初期値は０である。
【０１３８】
S1001において、中間バッファサイズをダイレクトメモリアクセスコントローラ(301)の入力データサイズに設定する。
【０１３９】
S1002において、中間バッファ２の先頭アドレスをダイレクトメモリアクセスコントローラ(301)の入力データアドレスに設定する。
【０１４０】
S1003において、一時停止(suspend)命令により一時停止状態に遷移する。
【０１４１】
S1004において、中間バッファ２有効フラグが１になると命令実行を再開する。
【０１４２】
S1005において、中間バッファ２有効フラグをクリアする。
【０１４３】
S1006において、S1001とS1002とで指定した条件でダイレクトメモリアクセスコントローラ(301)を起動する。
【０１４４】
S1007において、一時停止(suspend)命令により一時停止状態に遷移する。
【０１４５】
S1008において、ダイレクトメモリアクセスコントローラ(301)による転送が終了するとダイレクトメモリアクセスコントローラ(301)から命令実行ユニット(303)への転送終了通知信号がアサートされ命令実行ユニット(303)は命令実行を再開する。
【０１４６】
S1009において、最終パケットであれば処理を終了し、そうでなければS1010の処理を行う。
【０１４７】
S1010において、色空間変換モジュール(514)の入力側データ転送装置(401)の同期レジスタ(302)の中間バッファ２emptyフラグをセットする。
【０１４８】
S1020は画像伸張モジュール(512)の出力側データ転送装置(403)の命令実行ユニット(303)の動作フローである。データ転送装置(403)は出力先のアドレスを保持する出力先ポインタを変数として更新、記憶している。
【０１４９】
S1021において、パケットテーブル(701)エントリのPacket Start Address(702)の値を出力先ポインタに設定する。
【０１５０】
S1022において、出力先ポインタに示されるアドレスを先頭に所定のPacket ID(703)およびCompress Flag(704)を書き込む。
【０１５１】
S1023において、出力先ポインタにヘッダ長を加算する。
【０１５２】
S1024において、出力先ポインタの値をダイレクトメモリアクセスコントローラ(301)の出力バッファアドレスに設定する。出力バッファサイズにはバッファサイズから出力先ポインタの値を引いた値を設定する。
【０１５３】
S1025において、S1024で指定した条件でダイレクトメモリアクセスコントローラ(301)を起動する。
【０１５４】
S1026において、一時停止(suspend)命令により一時停止状態に遷移する。
【０１５５】
S1027において、ダイレクトメモリアクセスコントローラ(301)による転送が終了するとダイレクトメモリアクセスコントローラ(301)から命令実行ユニット(303)への転送終了通知信号がアサートされ命令実行ユニット(303)は命令実行を再開する。
【０１５６】
S1028において、データ処理部(402)のレジスタ（図中には示していない）にアクセスして圧縮データ長を読む。
【０１５７】
S1029において、ヘッダ領域(601)のData Length(605)にS1028の圧縮データ長を書き込む。
【０１５８】
S1030において、パケットテーブルエントリのPacket Length(703)にS1028の圧縮データ長にヘッダ長を加えた値を書き込む。
【０１５９】
S1031において、最終パケットであれば処理を終了し、そうでなければS1032の処理を行う。
【０１６０】
S1032において、出力先ポインタの値にS1028の圧縮データ長を加算する。
【０１６１】
図８、図９、図１０の同期タイミング図を図１１に示す。
【０１６２】
T1：画像伸張モジュール入力側において、中間バッファ1emptyフラグは初期値１なのでデータ転送が開始される。データ転送開始に先立って中間バッファ１emptyフラグは０にクリアされる。
【０１６３】
T３：画像伸張モジュール出力側において、T1で読み始められたデータが処理されてデータ転送が開始される。
【０１６４】
T4：画像伸張モジュール入力側において、データ転送が終了する。
【０１６５】
T6：画像伸張モジュール出力側において、データ転送が終了し、色空間変換モジュール入力側の中間バッファ１有効フラグをセットする。
【０１６６】
T7：色空間変換モジュール入力側において、中間バッファ１有効フラグと中間バッファ２emptyフラグとがともに１になったので、データ転送を開始する。転送に先立って両フラグはクリアされる。
【０１６７】
T9：色空間変換モジュール出力側において、T7で読み始められたデータが処理されてデータ転送が開始される。
【０１６８】
T10：色空間変換モジュール入力側において、データ転送が終了し、画像伸張モジュール入力側の中間バッファ１emptyフラグをセットする。
【０１６９】
T11：画像伸張モジュール入力側において、中間バッファ１emptyフラグが１になったため次のパケット処理のためのデータ転送を開始する。データ転送開始に先立って中間バッファ１emptyフラグは０にクリアされる。
【０１７０】
T12：色空間変換モジュール出力側において、データ転送が終了し、画像圧縮モジュール入力側に中間バッファ２有効フラグをセットする。
【０１７１】
T13：画像伸張モジュール出力側において、T11で読み始められたデータが処理されデータ転送が開始される。
【０１７２】
T14：画像伸張モジュール入力側において、データ転送が終了する。
画像圧縮モジュール入力側において、中間バッファ２有効フラグが１になったためデータ転送を開始する。
【０１７３】
T16：画像伸張モジュール出力側において、データ転送が終了し、色空間変換モジュール入力側に中間バッファ１有効フラグをセットする。
画像圧縮モジュール出力側において、T14で読み始められたデータが処理されデータ転送が開始される。
【０１７４】
T17：画像圧縮モジュール入力側において、データ転送が終了し、色空間変換モジュール入力側に中間バッファ2emptyフラグをセットする。
【０１７５】
T18：色空間変換モジュール入力側において、中間バッファ１有効フラグと中間バッファ2emptyフラグがともに１になったので、データ転送が開始される。データ転送開始に先立って両フラグはクリアされる。
【０１７６】
T19：画像圧縮モジュール出力側において、データ転送が終了する。
【０１７７】
T21：色空間変換モジュール入力側において、データ転送が終了し、画像伸張モジュール入力側の中間バッファ1emptyフラグをクリアする。
【０１７８】
色空間変換モジュール出力側において、T17で読み始められたデータが処理されデータ転送が開始される。
【０１７９】
T22：画像伸張モジュール入力側において、中間バッファ１emptyフラグが１になったので、次のパケットのためのデータ転送が開始される。データ転送開始に先立って中間バッファ１emptyフラグは０にクリアされる。
【０１８０】
T24：色空間変換モジュール出力側において、データ転送が終了し、画像圧縮モジュール入力側に中間バッファ2有効フラグをセットする。
【０１８１】
T25：画像伸張モジュール入力側において、データ転送が終了する。
【０１８２】
画像伸張モジュール出力側において、T22で読み始められたデータが処理されデータ転送が開始される。
【０１８３】
画像圧縮モジュール入力側において、中間バッファ２有効フラグが１になったのでデータ転送が開始される。
【０１８４】
T27：画像圧縮モジュール出力側において、T25で読み始められたデータが処理されデータ転送が開始される。
【０１８５】
T28：画像圧縮モジュール入力側において、データ転送が終了し、色空間変換モジュール入力側の中間バッファ2emptyフラグをセットする。
【０１８６】
T29：画像伸張モジュール出力側において、データ転送が終了し、色空間変換モジュール入力側に中間バッファ１有効フラグをセットする。
【０１８７】
T30：色空間変換モジュール入力側において、中間バッファ１有効フラグと中間バッファ２emptyフラグがともに１になったのでデータ転送が開始される。データ転送開始に先立って両フラグはクリアされる。
【０１８８】
画像圧縮モジュール出力側において、データ転送が終了する。
【０１８９】
T32：色空間変換モジュール出力側において、T30で読み始められたデータが処理されデータ転送が開始される。
【０１９０】
T33：色空間変換モジュール入力側において、データ転送が終了する。最終パケットなので画像伸張モジュール入力側の中間バッファ1emptyフラグのセットは行わない。
【０１９１】
T35：色空間変換モジュール出力側において、データ転送が終了し、画像圧縮モジュール入力側に中間バッファ2有効フラグをセットする。
【０１９２】
T36：画像圧縮モジュール入力側において、中間バッファ2有効フラグが１になったのでデータ転送が開始される。
【０１９３】
T38：画像圧縮モジュール出力側において、T36で読み始められたデータが処理されデータ転送が開始される。
【０１９４】
T39：画像圧縮モジュール入力側において、データ転送が終了する。最終パケットなので色空間変換モジュール入力側の中間バッファ2emptyフラグのセットは行わない。
【０１９５】
T41：画像圧縮モジュール出力側において、データ転送が終了する。
【０１９６】
（実施形態４）
本発明のデータ転送装置の構成図を図１２に示す。
【０１９７】
1200はダイレクトメモリアクセスコントローラ制御装置である。
【０１９８】
1201はダイレクトメモリアクセスコントローラであり、外部バスにアクセスしてメモリ転送を行う手段と転送終了通知信号出力とを有する。
【０１９９】
1202は命令メモリであり、命令実行ユニット(1204)によって実行される命令を記憶する。
【０２００】
1203は同期レジスタであり、書き込まれた値または値の変化に応じて命令実行ユニット(1204)に対する実行再開信号をアサートする。
【０２０１】
1204は命令実行ユニットであり、メモリから命令を読み出して実行する手段と、特に後に続く命令の実行を一時停止する命令を実行する手段と、同期レジスタ(1203)からの実行再開信号とダイレクトメモリアクセスコントローラ(1201)からの転送終了通知信号により該一時停止状態から後に続く命令の実行を再開する手段とを有する。
【０２０２】
1205はデコーダであり、命令実行ユニット(1204)からのアクセスのアドレスをデコードして出力先切替え信号を生成する。
【０２０３】
1206はデマルチプレクサであり、デコーダ(1205)からの出力先切替え信号に応じて命令実行ユニットからのアクセスをマルチプレクサ(1209)または第一のバスインタフェース(1207)に中継する。
【０２０４】
1207は第一のバスインタフェースであり、デマルチプレクサ(1206)からのアクセスを外部バスに中継する。
【０２０５】
1208は第二のバスインタフェースであり、外部バスからのアクセスをマルチプレクサ(1209)に中継する。
【０２０６】
1209はマルチプレクサであり、デマルチプレクサ(1206)からのアクセスと第二のバスインタフェース(1208)からのアクセスを同期レジスタ(1203)に中継する。
【０２０７】
データ転送装置(1200)は、命令実行ユニット(1204)がデータ転送装置(1200)内にある命令メモリ(1202)から命令を読み込むことを除いて、データ転送装置(300)と同様に動作する。
【０２０８】
（実施形態５）
本発明のデータ転送装置は第一の実施形態から第四の実施形態で述べたデータ転送装置において、ダイレクトメモリアクセスコントローラはデータ転送用のバスインタフェースと制御用バスインタフェースと転送終了通知信号とを有しており、デマルチプレクサはデコーダからの出力切替え信号に応じて命令実行ユニットからのアクセスをダイレクトメモリアクセスコントローラにも中継するデータ転送装置である。図１３に第六の実施形態のデータ転送装置を元にした例を示す。
【０２０９】
1300はデータ転送装置である。
【０２１０】
1301はダイレクトメモリアクセスコントローラであり、メモリ転送を行うデータバスインタフェースと制御パラメータおよび起動コマンドを入力すための制御バスインタフェースと転送終了通知信号出力とを有する。
【０２１１】
1302は命令メモリであり、命令実行ユニット(1304)によって実行される命令を記憶する。
【０２１２】
1303は同期レジスタであり、書き込まれた値または値の変化に応じて命令実行ユニット(1304)に対する実行再開信号をアサートする。
【０２１３】
1304は命令実行ユニットであり、メモリから命令を読み出して実行する手段と、特に後に続く命令の実行を一時停止する命令を実行する手段と、同期レジスタ(1303)からの実行再開信号とダイレクトメモリアクセスコントローラ(1301)からの転送終了通知信号により該一時停止状態から後に続く命令の実行を再開する手段とを有する。
【０２１４】
1305はデコーダであり、命令実行ユニット(1304)からのアクセスのアドレスをデコードして出力先切替え信号を生成する。
【０２１５】
1306はデマルチプレクサであり、デコーダ(1305)からの出力先切替え信号に応じて命令実行ユニットからのアクセスをマルチプレクサ(1309)または第一のバスインタフェース(1307)またはダイレクトメモリアクセスコントローラ(1301)に中継する。
【０２１６】
1307は第一のバスインタフェースであり、デマルチプレクサ(1306)からのアクセスを外部バスに中継する。
【０２１７】
1308は第二のバスインタフェースであり、外部バスからのアクセスをマルチプレクサ(1309)に中継する。
【０２１８】
1309はマルチプレクサであり、デマルチプレクサ(1306)からのアクセスと第二のバスインタフェース(1308)からのアクセスを同期レジスタ(1303)に中継する。
【０２１９】
データ転送装置(1300)は、命令実行ユニット(1304)がデータ転送装置(1300)内にあるダイレクトメモリアクセスコントローラ(1301)にアクセスするときに、外部バス経由ではなくデマルチプレクサから直接ダイレクトメモリアクセスコントローラ(1301)にアクセスする。その他の動作に関してはデータ転送装置(1200)と同様である。
【０２２０】
第一の実施形態〜第五の実施形態のデータ転送装置を本実施形態を適用した場合も、同様の効果が得られる。
【図面の簡単な説明】
【０２２１】
【図１】本発明の第１実施形態に係るデータ転送装置の構成図である。
【図２】本発明の第２実施形態に係るデータ転送装置の構成図である。
【図３】本発明の第３実施形態に係るデータ転送装置の構成図である。
【図４】本発明の第３実施形態に係るデータ処理モジュールの構成図である。
【図５】本発明の第５実施形態に係るシステムコントローラユニットの構成図である。
【図６】本発明の第５実施形態に係るシステムコントローラユニットで扱うパケットフォーマットである。
【図７】本発明の第５実施形態に係るシステムコントローラユニットで扱うパケットテーブルフォーマットである。
【図８】本発明の第５実施形態に係る画像伸張モジュールの処理を示したフローである。
【図９】本発明の第５実施形態に係る色空間変換モジュールの処理を示したフローである。
【図１０】本発明の第５実施形態に係る画像圧縮モジュールの処理を示したフローである。
【図１１】本発明の第５実施形態に係るシステムコントローラユニットにおける画像伸張モジュール、色空間変換モジュール、画像圧縮モジュールの同期タイミング図である。
【図１２】本発明の第６実施形態に係るデータ転送装置の構成図である。
【図１３】本発明の第７実施形態に係るデータ転送装置の構成図である。
【図１４】従来のダイレクトメモリアクセスコントローラを用いたシステムの構成図である。
【符号の説明】
【０２２２】
１００  データ転送装置
１０１  ダイレクトメモリアクセスコントローラ
１０２  命令実行ユニット
１０３  バスインタフェース
２００  データ転送装置
２０１  ダイレクトメモリアクセスコントローラ
２０２  命令メモリ
２０３  命令実行ユニット
２０４  バスインタフェース
３００  データ転送装置
３０１  ダイレクトメモリアクセスコントローラ
３０２  同期レジスタ
３０３  命令実行ユニット
３０４  デコーダ
３０５  デマルチプレクサ
３０６  第一のバスインタフェース
３０７  第二のバスインタフェース
３０８  マルチプレクサ
４００  データ処理モジュール
４０１  データ転送装置
４０２  データ処理ユニット
４０３  データ転送装置
４０４  バス
５００  システムコントローラユニット
５０１  CPU
５０２  システムバス
５０３  レジスタアクセスバスブリッジ
５０４  レジスタアクセスバス
５０５  RAMコントローラ
５０６  ROMコントローラ
５０７  操作部インタフェース
５０８  画像出力インタフェース
５０９  プリンタ用画像処理部
５１０  画像入力インタフェース
５１１  スキャナ用画像処理部
５１２  画像圧縮モジュール
５１３  画像伸張モジュール
５１４  色空間変換モジュール
５１５  I/Oインタフェース
５１６  RAM
５１７  ROM
５１８  UI
５１９  プリンタ
５２０  スキャナ
６０１  Header
６０２  Image Data
６０３  Packet ID
６０４  Compress Flag
６０５  Data Length
７０１  Packet Table
７０２  Packet Start Address
７０３  Packet Length
S800〜S810  画像伸張モジュール入力側の各処理単位
S820〜S827  画像伸張モジュール出力側の各処理単位
S900〜S911  色空間変換モジュール入力側の各処理単位
S920〜S927  色空間変換モジュール出力側の各処理単位
S1000〜S1010  画像圧縮モジュール入力側の各処理単位
S1020〜S1032  画像圧縮モジュール出力側の各処理単位
１２００  データ転送装置
１２０１  ダイレクトメモリアクセスコントローラ
１２０２  命令メモリ
１２０３  同期レジスタ
１２０４  命令実行ユニット
１２０５  デコーダ
１２０６  デマルチプレクサ
１２０７  第一のバスインタフェース
１２０８  第二のバスインタフェース
１２０９  マルチプレクサ
１３００  データ転送装置
１３０１  ダイレクトメモリアクセスコントローラ
１３０２  命令メモリ
１３０３  同期レジスタ
１３０４  命令実行ユニット
１３０５  デコーダ
１３０６  デマルチプレクサ
１３０７  第一のバスインタフェース
１３０８  第二のバスインタフェース
１３０９  マルチプレクサ
１４０１  CPU
１４０２  システムバス
１４０３  ROM
１４０４  RAM
１４０５  データ処理モジュール
１４０６  データ処理部
１４０７  ダイレクトメモリアクセスコントローラ
【図１】
2006119710.tif 000003
【図２】
2006119710.tif 000004
【図３】
2006119710.tif 000005
【図４】
2006119710.tif 000006
【図５】
2006119710.tif 000007
【図６】
2006119710.tif 000008
【図７】
2006119710.tif 000009
【図８】
2006119710.tif 000010
【図９】
2006119710.tif 000011
【図１０】
2006119710.tif 000012
【図１１】
2006119710.tif 000013
【図１２】
2006119710.tif 000014
【図１３】
2006119710.tif 000015
【図１４】
2006119710.tif 000016