(57)【要約】【課題】  複雑なＤＭＡ制御を必要とする、大規模なシステムＬＳＩを安価に提供する。【解決手段】  複数のＤＭＡ、各ＤＭＡ固有のＤＭＡ終了通知信号、ＤＭＡ制御プロセッサ、メモリ、複数組のプロセッサ内レジスタ群、サスペンド命令、ＤＭＡ終了通知信号により、レジスタ群を切り替えて制御を再開するレジューム機能を持ち、システム制御のメインのＣＰＵよりコマンドを受け、ＤＭＡプロセッサが、ＤＭＡＣを起動後、サスペンド状態になる。再起動時に、再起動要求信号（ＤＭＡ終了信号）の種別により、プロセッサ内部のレジスタ群を選択的に使用することにより、複雑なＤＭＡ処理を、簡素な単一ストリームプログラムの組み合わせで実現する。【選択図】  図４
2006119971.tif 000002
【特許請求の範囲】
【請求項１】
複数のダイレクトメモリアクセスコントローラ（DMAC）
（上記複数のDMACで共有される）DMAC制御装置、
上記複数のDMAC制御装置内に備わる、
複数のプログラムカウンタ
複数組の汎用レジスタセット
サスペンド命令
外部信号により上記複数組のプログラムカウンタ及び汎用レジスタを選択し処理を再開するレジューム手段
DMAC処理終了通知信号
CPUにより、上記DMAC制御装置内のプログラムカウンタ、汎用レジスタセットの内容を変更する手段
上記CPUにより、DMAC処理終了通知信号をアサートする手段
を有することを特徴とするデータ転送装置。
【請求項２】
請求項1に述べた構成を、単一の半導体基板上に構成することを特徴とする、データ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセスコントローラ（DMAC）を内蔵するデータ転送装置に関する。
【背景技術】
【０００２】
ダイレクトメモリアクセスはCPUのデータ転送に関わる負荷の軽減と処理の高速化のために、CPUを有するシステムにおいて広く利用されている（例えば特許文献１参照）。図2にDMACを有するデータ処理ブロックを用いたシステムの構成例を示す。
【０００３】
201はシステム全体を制御するCPUである。202はCPU(201)、RAM (204)、ROM (203)、データ処理ブロック(205)が接続されるシステムバスである。203はシステムのブートプログラムが格納されているROMである。204はCPU(201)が動作するためのシステムワークメモリであり、データ処理ブロック(205)で扱うデータを一時記憶するためのバッファメモリでもあるRAMである。205はデータ処理部(206)およびDMAC(207)を有しており、メモリからデータを読み込み、読み込んだデータに処理を施し、処理後のデータをメモリに書き出すという一連の動作を実行するデータ処理ブロックである。206は入力されたデータに所定の処理を施すデータ処理部である。207はデータ処理部(206)への入出力データをRAM(204)から読み書きするためのデータ処理ブロックである。208は205とほぼ同等の機能を持つDMACである、ただし、データ処理部における処理が205と異なる。また、図3にDMAC毎にDMAC制御装置を接続した従来の例を示す。301、304は従来のデータ転送装置、302、305は、DMAC制御装置、303、306はDMACである。307はCPU、308はROM、309はRAMである。
【特許文献１】特開平４−１１６７５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、前述した従来例のようにDMACがCPUの管理下にあるシステムにおいては、CPUが一連のプロセスを実行する過程におけるDMACの起動回数の増大に伴いCPUの負荷が増大するという問題があった。特に複数のDMACあるいはDMACチャネルが存在するシステムにおいてはDMAC起動回数が多くなり、前述の問題は顕著となる。
【０００５】
また用途に応じて複雑なデータ転送を行うDMACを設計してCPU負荷の軽減を図る方法も用いられてきたが、ハードウェア開発にかかるコストが増大し機構の複雑さゆえ長期の開発期間、検証期間を必要とするという問題があった。
【０００６】
また、図3に示すように、複数DMACを有するシステムにおいて、各DMACに専用のDMAC制御装置を備える構成が考えられるが、DMA制御装置を複数組持つ必要が生じ、回路規模が大きくなり、システムコストが高くなってしまうという問題がある。
【０００７】
また、従来のDMAC制御装置により、複数のDMACを制御する方式も考えられるが、DMA終了信号による、DMAC制御装置起動後、制御対象DMAC特定のためのレジスタスキャン、その後の条件分岐等のプログラムオーバーヘッドが発生する。また、汎用レジスタの数が限られるため、それぞれのDMACから制御要求があるたびに、レジスタ内容の退避及び復帰が発生し、DMA終了から、次回のDMA転送開始までの時間が長くなってしまい、データ転送スループットを重要視するDMAC制御には不向きな構成になっている。
【０００８】
また、汎用レジスタの本数を増やすことにより、レジスタ内容の退避、復帰のオーバーヘッドは軽減されるが、依然、レジスタスキャン及び条件分岐のオーバーヘッドが残り、加えて、汎用レジスタを複数の処理で確定的に分割使用しなければならないので、プログラムの汎用性が低くなってしまうという問題がある。
【０００９】
いずれの従来例も、開発期間の長期化、システムコストの上昇、制御の複雑化を招き、高品質なシステムコントローラを安価に提供するための障害となっている。
【課題を解決するための手段】
【００１０】
本発明では、DMAを用いてデータ転送を行う単一半導体基板上に形成されたシステムにおいて、
複数のダイレクトメモリアクセスコントローラ（DMAC）
（上記複数のDMACで共有される）DMAC制御装置、
上記複数のDMAC制御装置内に備わる、
複数のプログラムカウンタ
複数組の汎用レジスタセット
サスペンド命令
外部信号により上記複数組のプログラムカウンタ及び汎用レジスタを選択し処理を再開するレジューム手段
DMAC処理終了通知信号
CPU
メモリ
上記CPUにより、上記DMAC制御装置内のプログラムカウンタ、汎用レジスタセットの内容を変更する手段。
【００１１】
上記CPUにより、DMAC処理終了通知信号をアサートする手段を有し、2つ以上のDMAコントローラ群に対し、一つの命令実行ユニットを接続しDMAの制御を行うデータ転送装置において、各DMACの終了を通知するDMAC処理終了通知信号に基づき、命令実行ユニットがサスペンド状態から処理を再開する場合に、複数あるプログラムカウンタ、及び、汎用レジスタセットのうち、特定の一組を選択的に使用し処理を行うことにより、条件検出、分岐を行わずに各DMACに対し、的確な制御が可能となる手段を提供する。
【００１２】
また、この方法により、プログラムは、起動後にどのDMACからの起動が発生したかを検出し、その処理に分岐する必要がなくなり、簡潔な単一の処理フローを持つプログラムにより各DMACの制御が可能になる。
【発明の効果】
【００１３】
以上説明したように本発明では、DMAを用いてデータ転送を行うシステムにおいて、複数のダイレクトメモリアクセスコントローラ（DMAC）、DMAC制御装置、上記複数のDMAC制御装置内に備わる、複数のプログラムカウンタ、複数組の汎用レジスタセット、サスペンド命令、外部信号により上記複数組のプログラムカウンタ及び汎用レジスタを選択し処理を再開するレジューム手段、及び、DMAC制御装置外に、DMAC処理終了通知信号、CPU、メモリ、上記CPUにより上記DMAC制御装置内のプログラムカウンタ、汎用レジスタセットの内容を変更する手段。
【００１４】
上記CPUにより、DMAC処理終了通知信号を強制的にアサートする手段を有し、2つ以上のDMAコントローラ群に対し、一つの命令実行ユニットを接続しDMAの制御を行うデータ転送装置において、各DMACの終了を通知するDMAC処理終了通知信号に基づき、命令実行ユニットがサスペンド状態から処理を再開する場合に、複数あるプログラムカウンタ、及び、汎用レジスタセットのうち、特定の一組を選択的に使用し処理を行うことにより、条件検出、分岐を行わずに各DMACに対し、的確な制御が可能となる手段を提供する。
【００１５】
この構成により、本発明によるデータ転送装置は、複雑なDMA処理を、システム全体の処理を司るCPUに負荷をかけず、ソフトウエアで制御することが可能になり、さらに、プログラムは再起動後にどのDMACからの起動要求が発生したかを検出し、適当な処理に分岐する必要がなくなり、プログラムの複雑さが減少し、短期開発、高品質開発が可能になる。
【００１６】
また、これらの効果は特に、システム全体を単一の半導体基板上に構成する場合に、製造コストの低減に対して顕著となる。
【発明を実施するための最良の形態】
【００１７】
＜実施形態１＞
以下で本発明の装置及びその動作について詳細に説明する。
【００１８】
本発明のデータ転送装置の構成図を図1に示す。
【００１９】
100はCPU、101はメモリ、102はDMAC1、103はデータ処理ブロック1、104はDMAC１によりドライブされるDMA終了信号、105はDMA終了信号のアービタ、106は汎用レジスタセット１、107はプログラムカウンタ1（PC1）、108は汎用レジスタセット0、110はプログラムカウンタ0（PC0）、111はDMA終了信号0、112はデータ処理ブロック0、113はDMAC0、114はバスインターフェースユニット（BIU）、115は命令実行ユニット、116はシステムバス、117は本発明によるデータ転送装置、118はDMAC制御装置である。
【００２０】
115は命令実行ユニットであり、メモリから命令を読み出して実行する手段と、後に続く命令の実行を一時停止する命令（サスペンド命令）を実行する手段と、アービタ（104）からの終了転送通知信号により、一時停止状態から、PC0（110）もしくはPC1（107）の指し示す命令の実行を再開する手段とを有する。114はバスインタフェースユニットであり、命令実行ユニットからのアクセスを外部バス（116）に中継する。102（113）はDMACであり、外部バスにアクセスしてメモリとデータ処理ブロック間でデータ転送を行う手段と、DMA終了信号104（111）を出力する手段とを有する。
【００２１】
図４のフローチャートを用いて、本発明による、DMAC制御装置の動作を説明する。
【００２２】
システムのリセット解除後、DMAC制御装置は、サスペンド命令を発行したのと同等な状態になる（s600）CPU（100）では、必要なシステムの初期化後(s601)、DMAC0の制御を、命令実行ユニットで行うためのプログラムをメモリ（101）上の特定のアドレスに書き込む（s602）。続いて、s603にて、汎用レジスタセット0（108）に初期値を書き込み、プログラムカウンタ0にDMAC0用制御プログラムを格納したアドレスを書き込む。
【００２３】
同様にして、s604、s605にて、DMAC１の制御プログラム及びレジスタ群の設定を行う。
【００２４】
命令実行ユニット（115）が、DMA終了信号0（111）によって再起動された場合を説明する。この場合、命令実行ユニットが使用するプログラムカウンタ及び、汎用レジスタは、アービタ（105）によって、PC0及び汎用レジスタセット0をセレクトするように設定される。よって、命令実行ユニットは、PC0のアドレスから命令を読み込み、命令の記述に従ってDMAC0（113）のパラメータ設定を行い、DMAC0を起動し、自身は一時停止(suspend)命令により一時停止状態に遷移する。
【００２５】
DMAC0(113)は所定のデータ転送を実行し、データ転送終了時に命令実行ユニット(115)に対する終了信号0（111）をアサートする。
【００２６】
終了信号0（111）を受けたアービタは、セレクタを再度PC0及び汎用レジスタセット0にセレクトし、命令実行ユニットに対しレジュームを発行する。命令実行ユニットは一時停止状態から復帰して、一時停止(suspend)命令の次の命令から実行を再開する。実行再開時に、さらなるデータ転送を実行する命令が続いていれば、再度DMAC0(113)の設定を行って実行させ、そうでなければ動作を終了する。
【００２７】
DMA終了信号1（102）により再起動された場合は、DMAC1（102）に対し同様の処理を行う。
【００２８】
本構成を用いた画像処理装置のシステム構成例を図５に示す。本例を用いて、本発明によるデータ転送装置の典型的な適応例を説明する。900は画像入力デバイスであるスキャナ(921)や画像出力デバイスであるプリンタ(920)と接続し、一方ではI/Oインタフェース（916）を介してLANや公衆回線(WAN)に接続することで、画像情報やデバイス情報の入出力、PDLデータのイメージ展開を行う為のシステムコントローラユニットである。901はシステム全体を制御するCPUである。902はCPU(901)、RAMコントローラ(905)、ROMコントローラ(906)、操作部インタフェース(907)、画像出力インタフェース(908)、画像入力インタフェース(910)、画像伸張ブロック(913)、色空間変換ブロック(914)、I/Oインタフェース(916)が接続されるシステムバスである。905はシステムバス(902)経由のリードおよびライトアクセスサイクルをRAM(917)のアクセスプロトコルに変換して中継するとともに、必要に応じてリフレッシュ等の動作を行うRAMコントローラである。906はシステムバス(902)経由のリードアクセスをROM(918)のアクセスプロトコルに変換して中継するROMコントローラである。907は操作部(UI)(919)とのインタフェースで、UI(919)に表示する画像データをUI(919)に対して出力するとともに、UI(919)から本システム使用者が入力した情報をCPU(901)に伝える操作部インタフェースである。908はシステムバス(902)経由の画像データを入力とし、クロックレートなどの変更を行い、画像データをプリンタ用画像処理部(909)へ出力する画像出力インタフェースである。909はプリンタ出力のための補正画像処理を行い、結果をプリンタ(920)へ出力するプリンタ用画像処理部である。910はスキャナ用画像処理部(911)により補正画像処理された画像データを入力とし、所定の方法によりクロックレートなどの変更を行い、システムバス(902)に対し出力を行う画像入力インタフェースである。911は画像入力デバイスであるスキャナ(921)によりスキャンされた画像データを補正画像処理するスキャナ用画像処理部である。913はデータ転送装置(117)におけるデータ処理ブロック1(103)の機能として画像伸張機能を有する画像伸張ブロックである。914はデータ転送装置(117)におけるデータ処理ブロック1(103)の機能として色空間変換機能を有しており、カラー及びグレースケール画像の色空間の変換を行う色空間変換ブロックである。画像伸張ブロック（913）及び、色空間変換ブロック（914）にはDMAC制御装置118が3が図1と同等の信号で接続される。916はLANやモデムおよびその他の入出力のための機器のインタフェースとなるI/Oインタフェースである。917はCPU(901)及び、DMAC制御装置（118）が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもあるRAMである。
【００２９】
システムコントローラユニット（900）内では、画像データを縦32 pixel 横32 pixelの矩形領域（Tile）単位の画像データに分割したパケット形式で取り扱うものとする。パケットのフォーマットを図６に示す。
【００３０】
パケットはヘッダ情報(1001)と32 pixel × 32 pixelの画像データ(1002)から構成される。
【００３１】
ヘッダ情報(1001)に含まれる情報について説明する。パケット番号はTile番号と一致しており、Y方向のTile座標(1003)とX方向のTile座標(1004)の組み合わせで、YnXnで表される。データパケットは画像データが圧縮されている場合と非圧縮の場合がある。本実施例では、画像データが多値カラーである場合に限定し、圧縮アルゴリズムとしてJPEGを採用するものとする。圧縮されている場合と非圧縮の場合との区別はCompressFlag(1005)で示される。ImageDataByteLengh(1006)は画像データのバイト数を表している。
【００３２】
Packet Tableフォーマットを図７に示す。
【００３３】
各PacketはPacket Table(1102)によって管理する。
【００３４】
Packet Start Address(1102)はパケットの先頭アドレスを示す。
【００３５】
Packet  Length(1103)はヘッダを含めたパケット長を示す。
【００３６】
Packet Table(1102)はメモリ上で連続した領域に確保されるものとする。
【００３７】
Packet Table(1102)は常に走査方向に並んでおり、Yn/Xn＝000/000,000/001,000/002,....という順で並んでいる。このPacket Table(1102)のEntryは一意にひとつのTileを示す。また、Yn/Xmaxの次のEntryはYn+1/X0となる。
【００３８】
以下に示す１〜3からなる処理を例に挙げ、本実施例の動作を説明する。
【００３９】
元データはRGBAで表現された画像を構成する一連のJPEG圧縮データパケット１、及び、RGBAで表現された画像を構成する非圧縮のデータパケット2とする。
【００４０】
パケット１を画像伸張ブロック(913)によって伸張しRGBA非圧縮データを中間バッファ１に格納する。
【００４１】
パケット2を色空間変換ブロック(914)によって色空間変換しYCMK非圧縮データを中間バッファ2に格納する。
【００４２】
１パケット分の非圧縮データの大きさは、32 pixel×32 pixelsのデータを含み、かつピクセルあたり4色空間分のデータを有しており、それぞれ1byteで表現されるとして4096byteの固定値となる。従って、中間バッファ１、２に対してそれぞれ4096bytesの領域が確保されており、以下この値を中間バッファサイズとする。
【００４３】
CPU（901）は処理を施すパケット1及びパケット2をシステムのRAM（917）に格納する。同時に、それぞれのデータパケットに対応したパケットテーブル１及び、パケットテーブル2を作成し格納する。
【００４４】
また、パケット1及びパケット2処理後のデータを格納する中間バッファをメモリ上に確保する。
【００４５】
続いてCPUは、s602からs605においてDMAC制御装置内の命令実行ユニット（115）がパケット１の処理のために実行するプログラムをRAM上に格納し、CPUは、汎用レジスタセット0（108）を初期化する。次に、CPUは、PC0（110）にパケット1を処理するプログラムの格納先頭アドレスを書き込む。
【００４６】
さらに、RAM上の上記のアドレスとは異なるアドレスに、パケット2の処理を行うプログラムを格納し、PC1（107）にパケット2を処理するプログラムの先頭アドレスを書き込む。
【００４７】
CPUは、UI、ネットワーク等の指示手段より、画像パケットのデータ伸張処理を指示されると、メモリ上にあらかじめ確保された領域に、図８に示すパケット1のパケットテーブルの先頭アドレス、中間バッファのアドレス等の情報を書き込み、その後、s607にてDMA終了信号0を強制ドライブし、命令実行ユニットによる命令実行をPC0から実行させる。（s612）
命令実行ユニットは、メモリ上の命令に従い、パケットデータの伸張に必要なレジスタ設定を行い、DMAC0を起動し、その後サスペンド命令を実行し、サスペンドする。
【００４８】
DMAC0は、上記パケットテーブルの先頭エントリを読み出し、一連のパケット１中の最初のパケットを検出する。さらに、パケットヘッダを読み出し、データ長を検出しデータを画像伸張ブロック（913）に転送する、画像伸張ブロック（913）では、圧縮画像を伸張し、その結果の画像データが、再び、DMAC0を介しRAM（917）に書き戻される。
【００４９】
DMAC0が最初のパケットの画像伸張後のデータを転送終了すると、DMAC0はアービタ105に対し、レジューム信号（111）をアサートする。レジューム信号は、アービタ（105）によりアービトレーションされ、結果、セレクタ（119）はPC0と汎用レジスタセット0を選択し、同時に、命令実行ユニットに対し、レジューム信号がアサートされる。
【００５０】
以上の動作により、DMAC制御はs611より、s612に移り、パケット1のページテーブルの次のエントリが読み出され、DMAC0に設定される。DMAC0はDMAC制御装置の命令実行ユニットにより起動され、命令実行ユニットは、サスペンド命令によりサスペンドする。１パケットの処理が終了後上記と同様のシーケンスにて、命令実行ユニットがサスペンド状態より、再起動される。以上を繰り返すことにより、複数パケットから成る圧縮画像データが伸張される。
【００５１】
一方、パケット２の処理においても、画像伸張と、色空間変換の処理の違い以外は同様の処理が行われる。ただし、パケット2の処理においては、PC1/汎用レジスタセット1が用いられる。パケット2の処理が再起動される場合には、s611より、s613に処理が進む。
【００５２】
以上の一連の処理が、すべて終了すると、双方のDMAC、DMAC制御装置ともに停止する。
【図面の簡単な説明】
【００５３】
【図１】本発明の第１実施形態に係るデータ転送装置の構成図である。
【図２】従来のデータ転送装置を備えたシステムのブロック構成図である。
【図３】従来のデータ転送装置を備えたシステムの構成図である。
【図４】本発明によるCPU、DMAC制御装置の処理のフロー図
【図５】本発明によるデータ転送装置を備えたシステムコントローラユニットの構成図である。
【図６】本発明を備えるシステムコントローラユニットで扱うパケットフォーマットである。
【図７】本発明を備えるシステムコントローラユニットで扱うパケットテーブルフォーマットである。
【図８】本発明によるシステム内でのデータフォーマットの例を示した図である。
【符号の説明】
【００５４】
100  CPU
101  メモリ
102  DMAC1
103  データ処理ブロック1
104  DMAC１によりドライブされるDMA終了信号
105  DMA終了信号のアービタ
106  汎用レジスタセット１
107  プログラムカウンタ1（PC1）
108  汎用レジスタセット0
110  プログラムカウンタ0（PC0）
111  DMA終了信号0
112  データ処理ブロック0
113  DMAC0
114  バスインターフェースユニット（BIU）
115  命令実行ユニット
116  システムバス
117  本発明によるデータ転送装置
118  DMAC制御装置
【図１】
2006119971.tif 000003
【図２】
2006119971.tif 000004
【図３】
2006119971.tif 000005
【図４】
2006119971.tif 000006
【図５】
2006119971.tif 000007
【図６】
2006119971.tif 000008
【図７】
2006119971.tif 000009
【図８】
2006119971.tif 000010