(57)【要約】【課題】  従来のＤＭＡ方式では、高速転送が可能となる一方で、転送エラー等の異常検出がダイレクトに行えないといった問題があった。また、ＤＭＡコントローラに付属した命令実行ユニットを介して転送が行われるため、デバッグの手順が煩雑になるという問題があった。これらの問題を解決する。【解決手段】  データ転送装置の命令実行ユニットへあるいはＣＰＵに対して、ＤＭＡコントローラからの通知信号を選択的に通知することができ、データ転送には命令実行ユニットを用い、異常検知の場合にはＣＰＵに直接通知を行うといった処理の切り替えを容易とした。【選択図】  図１
2006133964.tif 000002
【特許請求の範囲】
【請求項１】
転送終了等の通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、内部状態を保持したまま次の命令の実行を停止する命令を実行する手段およびダイレクトメモリアクセスコントローラからの通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスを外部バスに中継するバスインタフェースとによって構成されるデータ転送装置において、
前記ダイレクトメモリアクセスコントローラからの通知信号を前記命令実行ユニットと、システム全体を制御するＣＰＵとに選択的に通知する通知信号選択手段を有することを特徴とするデータ転送装置。
【請求項２】
前記通知信号選択手段は前記命令実行ユニットとシステム全体を制御するＣＰＵそれぞれに通知信号をマスク可能であることを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記通知信号が転送終了等のデータ転送の同期をとるための通知信号であった場合には、前記命令実行ユニットに通知し、エラー等の異常検出信号であった場合には前記システムを制御するＣＰＵに通知することを特徴とする請求項１、２に記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）の制御方式に関する。
【背景技術】
【０００２】
ダイレクトメモリアクセスはＣＰＵのデータ転送に関わる負荷の軽減と処理の高速化のために、ＣＰＵを有するシステムにおいて広く利用されている。図１１にダイレクトメモリアクセスコントローラ（ＤＭＡＣ）を有するデータ処理モジュールを用いたシステムの構成例を示す。
【０００３】
１０１はシステム全体を制御するＣＰＵである。
【０００４】
１０２はＣＰＵ（１０１）、ＲＡＭ（１０４）、ＲＯＭ（１０３）、データ処理モジュール１（１０５）が接続されるシステムバスである。
【０００５】
１０３はシステムのブートプログラムが格納されているＲＯＭである。
【０００６】
１０４はＣＰＵ（１０１）が動作するためのシステムワークメモリであり、データ処理モジュール（１０５）で扱うデータを一時記憶するためのバッファメモリでもあるＲＡＭである。
【０００７】
１０５はデータ処理部（１０６）およびダイレクトメモリアクセスコントローラ（１０７）を有しており、メモリからデータを読み込み、読み込んだデータに処理を施し、処理後のデータをメモリに書き出すという一連の動作を実行するデータ処理モジュールである。
【０００８】
１０６は入力されたデータに所定の処理を施すデータ処理部である。
【０００９】
１０７はデータ処理部（１０６）への入出力データをＲＡＭ（１０４）から読み書きするためのダイレクトメモリアクセスコントローラ（ＤＭＡＣ）である。ここでは入力チャネルと出力チャネルの２つのチャネルを有しているものとする。入力チャネルはデータ処理部（１０５）へのデータをメモリから転送するためのチャネルであり、転送先はデータ処理部の入力に固定されている。出力チャネルはデータ処理部（１０５）で処理したデータをメモリへ転送するためのチャネルであり、入力元はデータ処理部（１０５）の出力に固定されている。
【００１０】
ＣＰＵ（１０１）またはシステムバス（１０２）はバスアービトレーションの機能を含むものとする。
【００１１】
図１１のシステムは以下のような手順で動作する。
【００１２】
ステップ１：ＣＰＵ（１０１）はデータ処理モジュール１（１０５）を起動する際、ダイレクトメモリアクセスコントローラ（１０７）の入力チャネルに入力データのアドレスとサイズを設定してダイレクトメモリアクセスコントローラ（１０７）を起動する。
【００１３】
ステップ２：ダイレクトメモリアクセスコントローラ（１０７）の入力チャネルが入力データサイズに設定されたサイズのデータを転送し、データ処理モジュール１（１０５）における処理が終わると、ＣＰＵ（１０１）に対して割込み信号を生成してデータ転送および処理の終了を知らせる。
【００１４】
ステップ３：ＣＰＵ（１０１）はデータ処理モジュール１（１０５）で処理されたデータのサイズを読み取り、ダイレクトメモリアクセスコントローラ（１０７）の出力チャネルに出力先アドレスと先にデータ処理モジュール１（１０５）から読み取ったデータサイズを設定してダイレクトメモリアクセスコントローラ（１０７）を起動する。
【００１５】
ステップ４：ＣＰＵ（１０１）は処理データに続きがあれば、再度ステップ１〜３を実行する。
【００１６】
前述した従来例のようにＤＭＡＣはＣＰＵによって設定された転送アドレスと転送データサイズに応じて連続したデータの転送を行うため、チェーンバッファのような不連続な領域に対するデータ転送など複雑な転送を行う場合、データの連続する部分毎にＤＭＡＣを起動しなければならずＣＰＵに対する負荷が大きくなるという問題があった。前述のような複雑なデータ転送を行う専用ＤＭＡＣを設計してＣＰＵ負荷の軽減を図る方法も用いられてきたが、ハードウェア開発にかかるコストが増大するという問題があった。また複数のＤＭＡＣを同期させてＤＭＡＣによって転送されたデータを他のＤＭＡＣによって転送させる場合には、ひとつのＤＭＡＣによるデータ転送が終了する毎にＣＰＵが介在しなければならないという問題があった。
【００１７】
そこで、転送終了通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、内部状態を保持したまま次の命令の実行を停止する命令を実行する手段およびダイレクトメモリアクセスコントローラからの転送終了通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスを外部バスに中継するバスインタフェースとによって構成データ転送装置を用いて、ＣＰＵを介在せず、データの転送を行う方式が考案されている。
【００１８】
又、別の従来例としては、各チャネルの転送順序に起因する転送エラーを確実に検出して、転送順序に起因する転送エラーをＣＰＵに通知するＤＭＡコントローラ（例えば特許文献１参照）をあげることが出来る。
【特許文献１】特開２０００−２６７９８８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかしながら、上述した方式では、ＣＰＵを介在せずダイレクトメモリアクセスコントローラに付属した命令実行ユニットにデータ転送を行わせるため、高速転送が可能となる一方で、転送エラー等の異常検出がダイレクトに行えないといった問題があった。また、ダイレクトメモリアクセスコントローラに付属した命令実行ユニットを介して転送が行われるため、デバッグの手順が煩雑になるという問題があった。
【課題を解決するための手段】
【００２０】
上記課題を解決するために、請求項１記載の発明に係るデータ転送装置では、転送終了等の通知信号を出力する手段を有するダイレクトメモリアクセスコントローラと、内部状態を保持したまま次の命令の実行を停止する命令を実行する手段およびダイレクトメモリアクセスコントローラからの通知信号によって命令実行を再開する手段を有する命令実行ユニットと、命令実行ユニットからのアクセスを外部バスに中継するバスインタフェースとによって構成されるデータ転送装置において、前記ダイレクトメモリアクセスコントローラからの通知信号を前記命令実行ユニットと、システム全体を制御するＣＰＵとに選択的に通知する通知信号選択手段を有することを特徴とする。
【００２１】
請求項２記載の発明に係るデータ転送装置では、前記通知信号選択手段は前記命令実行ユニットとシステム全体を制御するＣＰＵそれぞれに通知信号をマスク可能であることを特徴とする。
【００２２】
請求項３記載の発明に係るデータ転送装置では、前記通知信号が転送終了等のデータ転送の同期をとるための通知信号であった場合には、前記命令実行ユニットに通知し、エラー等の異常検出信号であった場合には前記システムを制御するＣＰＵに通知することを特徴とする。
【発明の効果】
【００２３】
以上説明したように、本発明の通知信号選択手段を用いることによって、データ転送装置の命令実行ユニットへあるいはＣＰＵに対して、ＤＭＡＣからの通知信号を選択的に通知することができる。分割された領域に対するデータ転送のように複雑なデータ転送には命令実行ユニットを用い、データ転送装置が有する命令実行ユニットによって分割情報の読み込みやＤＭＡＣのパラメータ計算を行ってＤＭＡＣを設定・起動するため、ＣＰＵに対する負荷を削減できる。また、異常を検知した場合にはＣＰＵに直接通知を行うことによって、複雑なリカバリー処理を適切に行うことができる。また、機器デバッグ時には全ての通知信号をそのままＣＰＵに伝えることによって、臨機応変にＣＰＵで動作を制御することができ、機器のデバッグを効率良く行うことが可能となる。
【発明を実施するための最良の形態】
【００２４】
以下で本発明の装置及びその動作について詳細に説明する。
【００２５】
本発明のデータ転送装置の構成図を図１に示す。
【００２６】
２００はデータ転送装置である。
【００２７】
２０１はダイレクトメモリアクセスコントローラであり、外部バスにアクセスしてメモリ転送を行う手段と転送終了通知信号出力とを有する。
【００２８】
２０２はレジスタであり、書き込まれた値または値の変化に応じて命令実行ユニット（２０３）に対する実行再開信号をアサートする。また、通知信号選択ユニット（２０９）における通知信号のマスク処理の設定を行う。
【００２９】
２０３は命令実行ユニットであり、メモリから命令を読み出して実行する手段と、特に後に続く命令の実行を一時停止する命令を実行する手段と、レジスタ（２０２）からの実行再開信号とダイレクトメモリアクセスコントローラ（２０１）からの転送終了通知信号により該一時停止状態から後に続く命令の実行を再開する手段とを有する。
【００３０】
２０４はデコーダであり、命令実行ユニット（２０３）からのアクセスのアドレスをデコードして出力先切替え信号を生成する。
【００３１】
２０５はデマルチプレクサであり、デコーダ（２０４）からの出力先切替え信号に応じて命令実行ユニットからのアクセスをマルチプレクサ（２０８）または第一のバスインタフェース（２０６）に中継する。
【００３２】
２０６は第一のバスインタフェースであり、デマルチプレクサ（２０５）からのアクセスを外部バスに中継する。
【００３３】
２０７は第二のバスインタフェースであり、外部バスからのアクセスをマルチプレクサ（２０８）に中継する。
【００３４】
２０８はマルチプレクサであり、デマルチプレクサ（２０５）からのアクセスと第二のバスインタフェース（２０７）からのアクセスをレジスタ（２０２）に中継する。
【００３５】
２０９は通知信号選択ユニットであり、ＤＭＡＣ（２０１）からの通知信号を選択的に命令実行ユニット（２０３）あるいはシステムをつかさどるＣＰＵに対して伝達する。
【００３６】
データ転送装置（２００）内の通知信号選択ユニット（２０９）の詳細図を図３に示す。
【００３７】
通知信号選択ユニット（２０９）は、データ転送装置（２００）からの通知信号（３０３，３０４）を入力として受け、マスクユニット（３０１，３０２）で、割り込みコントローラ（５１２）、あるいは命令実行ユニット（２０３）への通知信号（３０５，３０６）を生成する。マスクユニット（３０１，３０２）の制御はレジスタ（２０２）を介して行う。通知信号（３０３，３０４）は例えば、以下のように構成される。
【００３８】
通知信号３０３はＤＭＡＣの転送が終了し、次の画像処理ブロックに処理を引き継ぎたい場合の転送終了通知信号、３０４はＤＭＡＣ転送処理中に異常が検知された場合に通知される異常検知通知信号である。これらの通知信号は、マスクユニット（３０１，３０２）により、選択的に割り込みコントローラ（５２１）、あるいは命令実行ユニット（２０３）に通知される。
【００３９】
次にデータ転送装置（２００）を用いたデータ処理モジュールの構成図を図４に示す。
【００４０】
４００はデータ処理モジュールであり、ダイレクトメモリアクセス転送により所定のデータを読み込み、該データに所定の処理を行った後に所定の領域に書き込む。
【００４１】
４０１はデータ転送装置（２００）であり、データ処理ユニット（４０２）の入力データをバス（４０４）上の任意のアドレスから読み込みデータ処理ユニット（４０２）に中継する。
【００４２】
４０２はデータ処理ユニットであり、データ転送装置（４０１）によって読み込まれたデータに処理を施しデータ転送装置（４０３）に中継する。
【００４３】
４０３はデータ転送装置（２００）であり、データ処理ユニット（４０２）から出力データを受け取りバス（４０４）上の任意のアドレスに転送する。
【００４４】
４０４はバスであり、データ処理モジュール（４００）が接続される。
【００４５】
データ処理モジュール（４００）を用いて構成したシステムの構成図を図５に示す。
【００４６】
５００は画像入力デバイスであるスキャナ（５２０）や画像出力デバイスであるプリンタ（５１９）と接続し、一方ではＩ／Ｏインタフェースを介してＬＡＮや公衆回線（ＷＡＮ）に接続することで、画像情報やデバイス情報の入出力、ＰＤＬデータのイメージ展開を行う為のシステムコントローラユニットである。
【００４７】
５０１はシステム全体を制御するＣＰＵである。
【００４８】
５０２はＣＰＵ（５０１）、レジスタアクセスバスブリッジ（５０３）、ＲＡＭコントローラ（５０５）、ＲＯＭコントローラ（５０６）、操作部インタフェース（５０７）、画像出力インタフェース（５０８）、画像入力インタフェース（５１０）、画像圧縮モジュール（５１２）、画像伸張モジュール（５１３）、色空間変換モジュール（５１４）、その他のモジュール（５１５）、Ｉ／Ｏインタフェース（５１５）が接続されるシステムバスである。
【００４９】
５０３はシステムバス（５０２）経由のリードおよびライトアクセスサイクルをレジスタアクセスバスのプロトコルに変換してレジスタアクセスバス（５０４）に中継するレジスタアクセスバスブリッジである。
【００５０】
５０４は各モジュールの制御レジスタにアクセスするためのレジスタアクセスバスである。
【００５１】
５０５はシステムバス（５０２）経由のリードおよびライトアクセスサイクルをＲＡＭ（５１６）のアクセスプロトコルに変換して中継するとともに、必要に応じてリフレッシュ等の動作を行うＲＡＭコントローラである。
【００５２】
５０６はシステムバス（５０２）経由のリードアクセスをＲＯＭ（５１７）のアクセスプロトコルに変換して中継するＲＯＭコントローラである。
【００５３】
５０７は操作部（ＵＩ）（５１８）とのインタフェースで、ＵＩ（５１８）に表示する画像データをＵＩ（５１８）に対して出力するとともに、ＵＩ（５１８）から本システム使用者が入力した情報をＣＰＵ（５０１）に伝える操作部インタフェースである。
【００５４】
５０８はシステムバス（５０２）経由の画像データを入力とし、クロックレートなどの変更を行い、画像データをプリンタ用画像処理部（５０９）へ出力する画像出力インタフェースである。
【００５５】
５０９はプリンタ出力のための補正画像処理を行い、結果をプリンタ（５１９）へ出力するプリンタ用画像処理部である。
【００５６】
５１０はスキャナ用画像処理部（５１１）により補正画像処理された画像データを入力とし、所定の方法によりクロックレートなどの変更を行い、システムバス（５０２）に対し出力を行う画像入力インタフェースである。
【００５７】
５１１は画像入力デバイスであるスキャナ（５２０）によりスキャンされた画像データを補正画像処理するスキャナ用画像処理部である。
【００５８】
５１２はデータ処理モジュール（４００）におけるデータ処理ユニット（４０２）の機能として画像圧縮機能を有する画像圧縮モジュールである。
【００５９】
５１３はデータ処理モジュール（４００）におけるデータ処理ユニット（４０２）の機能として画像伸張機能を有する画像伸張モジュールである。
【００６０】
５１４はデータ処理モジュール（４００）におけるデータ処理ユニット（４０２）の機能として色空間変換機能を有しており、カラー及びグレースケール画像の色空間の変換を行う色空間変換モジュールである。
【００６１】
５１５はＬＡＮやモデムおよびその他の入出力のための機器のインタフェースとなるＩ／Ｏインタフェースである。
【００６２】
５１６はＣＰＵ（５０１）が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもあるＲＡＭである。
【００６３】
５１７はシステムのブートプログラムが格納されているＲＯＭである。
【００６４】
５１８は本システムの使用者に対して本システムの動作状況を示すとともに、処理を受け付けるためのインタフェースとなる操作部（ＵＩ）である。
【００６５】
５１９はプリンタ用画像処理部（５０９）を介して入力された画像データを紙などの物理媒体上に結像させるプリンタである。
【００６６】
５２０は紙などの物理媒体に記録された画像を読み取り、電子情報に変換してスキャナ用画像処理部（５１１）に対して出力するスキャナである。
【００６７】
５２１はＣＰＵに対して割り込みを通知する割り込みコントローラである。
【００６８】
システムコントローラユニット（５００）内では、画像データを縦ｙ  ｐｉｘｅｌ  横ｘ  ｐｉｘｅｌの矩形領域単位の画像データに分割したパケット形式で取り扱うものとする。パケットのフォーマットを図６に示す。
【００６９】
パケットはヘッダ情報（６０１）とｙ  ｐｉｘｅｌ  ×  ｘ  ｐｉｘｅｌの画像データ（６０２）から構成される。
【００７０】
ヘッダ情報（６０１）に含まれる情報について説明する。
【００７１】
Ｐａｃｋｅｔ  ＩＤ（６０３）にはｙ  ｐｉｘｅｌ  ×  ｘ  ｐｉｘｅｌの画像の並びの順に従って連続した一意の値が割り当てられている。
【００７２】
データパケットは画像データが圧縮されている場合と非圧縮の場合がある。本実施例では、画像データが多値カラーである場合に限定し、圧縮アルゴリズムとしてＪＰＥＧを採用するものとする。
【００７３】
圧縮されている場合と非圧縮の場合との区別はＣｏｍｐｒｅｓｓ  Ｆｌａｇ（６０４）で示される。
【００７４】
Ｄａｔａ  Ｌｅｎｇｔｈ（６０５）は画像データ（６０２）の長さを表している。
【００７５】
Ｐａｃｋｅｔ  Ｔａｂｌｅフォーマットを図７に示す。
【００７６】
各ＰａｃｋｅｔはＰａｃｋｅｔ  Ｔａｂｌｅ（７０１）によって管理する。
Ｐａｃｋｅｔ  Ｓｔａｒｔ  Ａｄｄｒｅｓｓ（７０２）はパケットの先頭アドレスを示す。
【００７７】
Ｐａｃｋｅｔ    Ｌｅｎｇｔｈ（７０３）はヘッダを含めたパケット長を示す。
【００７８】
Ｐａｃｋｅｔ  Ｔａｂｌｅ（７０１）はメモリ上で連続した領域に確保されるものとする。
【００７９】
Ｐａｃｋｅｔ  Ｔａｂｌｅ（７０１）は常に走査方向に並んでおり、Ｙｎ／Ｘｎ＝０００／０００，  ０００／００１，０００／００２，．．．．という順で並んでいる。このＰａｃｋｅｔ  Ｔａｂｌｅ（７０１）のＥｎｔｒｙは一意にひとつのパケットを示す。
【００８０】
以下に示す１〜４からなる処理を例に挙げ、本実施例の動作を説明する。このとき、ＤＭＡＣからの転送終了通知信号は、通知信号選択ユニット（２０９）により、命令実行ユニット（２０３）のみに通知され、ＣＰＵ（５０１）には通知されない。
【００８１】
１．元データはＲＧＢＡで表現された画像を構成する一連のＪＰＥＧ圧縮データパケット１とする。簡単のためパケット単位では分割されてないものとする。
【００８２】
２．パケット１を画像伸張モジュール（５１３）によって伸張しＲＧＢＡ非圧縮データを中間バッファ１に格納する。
【００８３】
３．中間バッファ１に格納されたＲＧＢＡ非圧縮データを色空間変換モジュール（５１４）によってＣＭＹＫに変換し中間バッファ２に格納する。
【００８４】
４．中間バッファ２に格納されたＣＭＹＫ非圧縮データを画像圧縮モジュール（５１２）によってＪＰＥＧ圧縮し結果格納領域にパケット２として書き込み、同時に所定の領域にパケットテーブル（７０１）を作成する。簡単のため結果格納領域は連続した十分な大きさの領域を確保できているものとする。
【００８５】
１パケット分の非圧縮データの大きさは、ｙ×ｘ  ｐｉｘｅｌｓのデータを含み、かつピクセルあたり４空間分のデータを有しており、それぞれ１ｂｙｔｅで表現されるとして４ｘｙ  ｂｙｔｅｓの固定値となる。従って、中間バッファ１、２に対してそれぞれ４ｘｙ  ｂｙｔｅｓの領域が確保されており、以下この値を中間バッファサイズとする。
【００８６】
画像伸張モジュール（５１３）のデータ転送装置（４０１）は図８に示すフローを、色空間変換モジュール（５１４）のデータ転送装置（４０１）は図９に示すフローを、画像圧縮モジュール（５１２）のデータ転送装置（４０１）は図１０に示すフローをそれぞれ実行する。また、画像圧縮モジュール（５１２）の出力側データ転送装置（４０３）のダイレクトメモリアクセスコントローラ（２０１）は、転送データサイズが出力バッファサイズに達するか、データ処理部（４０２）から受け取った最終データを転送し終わったときに転送終了通知信号をアサートする。
【００８７】
画像伸張モジュール（５１３）の動作について図８を参照しながら説明する。
【００８８】
Ｓ８００は画像伸張モジュール（５１３）の入力側データ転送装置（４０１）の命令実行ユニット（２０３）の動作フローである。データ転送装置（４０１）はレジスタ（２０２）に中間バッファ１ｅｍｐｔｙフラグを割り当てるものとする。中間バッファ１ｅｍｐｔｙフラグの初期値は１（命令実行再開信号アクティブ）である。
【００８９】
Ｓ８０１において、パケットテーブル（７０１）から一つのエントリを読み込む。
【００９０】
Ｓ８０２において、パケットテーブルエントリ中のＰａｃｋｅｔ  Ｓｔａｒｔ  Ａｄｄｒｅｓｓ（７０２）にヘッダ長を加えた値をデータ開始アドレスとしてダイレクトメモリアクセスコントローラ（２０１）の入力データアドレスに設定する。
【００９１】
Ｓ８０３において、パケットテーブルエントリ中のＰａｃｋｅｔ  Ｌｅｎｇｔｈ（７０３）をダイレクトメモリアクセスコントローラ（２０１）の入力データサイズに設定する。
【００９２】
Ｓ８０４において、一時停止（ｓｕｓｐｅｎｄ）命令により一時停止状態に遷移するが、最初は中間バッファ１ｅｍｐｔｙフラグが１なので即Ｓ８０５の処理へ移行する。それ以降は中間バッファ１ｅｍｐｔｙフラグが１になるまで一時停止状態のままである。
【００９３】
Ｓ８０５において、中間バッファ１ｅｍｐｔｙフラグが１になると命令実行を再開する。
【００９４】
Ｓ８０６において、中間バッファ１ｅｍｐｔｙフラグをクリアする。
【００９５】
Ｓ８０７において、Ｓ８０２とＳ８０３とで指定した条件でダイレクトメモリアクセスコントローラ（２０１）を起動する。
【００９６】
Ｓ８０８において、一時停止（ｓｕｓｐｅｎｄ）命令により一時停止状態に遷移する。
【００９７】
Ｓ８０９において、ダイレクトメモリアクセスコントローラ（２０１）による転送が終了するとダイレクトメモリアクセスコントローラ（２０１）から命令実行ユニット（２０３）への転送終了通知信号がアサートされ命令実行ユニット（２０３）は命令実行を再開する。
【００９８】
Ｓ８１０において、最終パケットであれば処理を終了し、そうでなければＳ８０１に戻り次のパケットの処理を行う。
【００９９】
Ｓ８２０は画像伸張モジュール（５１３）の出力側データ転送装置（４０３）の命令実行ユニット（２０３）動作フローである。
【０１００】
Ｓ８２１において、中間バッファサイズをダイレクトメモリアクセスコントローラ（２０１）の出力バッファサイズに設定する。
【０１０１】
Ｓ８２２において、中間バッファ１の先頭アドレスをダイレクトメモリアクセスコントローラ（２０１）の出力バッファアドレスに設定する。
【０１０２】
Ｓ８２３において、Ｓ８２１とＳ８２２とで指定した条件でダイレクトメモリアクセスコントローラ（２０１）を起動する。
【０１０３】
Ｓ８２４において、一時停止（ｓｕｓｐｅｎｄ）命令により一時停止状態に遷移する。
【０１０４】
Ｓ８２５において、ダイレクトメモリアクセスコントローラ（２０１）による転送が終了するとダイレクトメモリアクセスコントローラ（２０１）から命令実行ユニット（２０３）への転送終了通知信号がアサートされ命令実行ユニット（２０３）は命令実行を再開する。
【０１０５】
Ｓ８２６において、色空間変換モジュール（５１４）の入力側データ転送装置（４０１）のレジスタ（２０２）に中間バッファ１有効フラグをセットする。
【０１０６】
Ｓ８２７において、最終パケットであれば処理を終了し、そうでなければＳ８２３に戻り次のパケットの処理を行う。
【０１０７】
色空間変換モジュール（５１４）の動作について図９を参照しながら説明する。
【０１０８】
Ｓ９００は色空間変換モジュール（５１４）の入力側データ転送装置（４０１）の命令実行ユニット（２０３）の動作フローである。データ転送装置（４０１）はレジスタ（２０２）に中間バッファ１有効フラグと中間バッファ２ｅｍｐｔｙフラグを割り当てるものとする。中間バッファ１有効フラグの初期値は０、中間バッファ２ｅｍｐｔｙフラグの初期値は１である。
【０１０９】
Ｓ９０１において、中間バッファサイズをダイレクトメモリアクセスコントローラ（２０１）の入力データサイズに設定する。
【０１１０】
Ｓ９０２において、中間バッファ１の先頭アドレスをダイレクトメモリアクセスコントローラ（２０１）の入力データアドレスに設定する。
【０１１１】
Ｓ９０３において、一時停止（ｓｕｓｐｅｎｄ）命令により一時停止状態に遷移する。
【０１１２】
Ｓ９０４において、中間バッファ１有効フラグまたは中間バッファ２ｅｍｐｔｙフラグが１になると命令実行を再開する。
【０１１３】
Ｓ９０５において、中間バッファ１有効フラグと中間バッファ２ｅｍｐｔｙフラグのうち１になったフラグを変数に記憶する。ともに１になったときは１になったフラグを記憶する変数をクリアしてＳ９０７の処理を行う。そうでない場合にはＳ９０６の処理を行う。
【０１１４】
Ｓ９０６において、中間バッファ１有効フラグと中間バッファ２ｅｍｐｔｙフラグのうち１になったフラグをクリアする。
【０１１５】
Ｓ９０７において、Ｓ９０１とＳ９０２とで指定した条件でダイレクトメモリアクセスコントローラ（２０１）を起動する。
【０１１６】
Ｓ９０８において、一時停止（ｓｕｓｐｅｎｄ）命令により一時停止状態に遷移する。
【０１１７】
Ｓ９０９において、ダイレクトメモリアクセスコントローラ（２０１）による転送が終了するとダイレクトメモリアクセスコントローラ（２０１）から命令実行ユニット（２０３）への転送終了通知信号がアサートされ命令実行ユニット（２０３）は命令実行を再開する。
【０１１８】
Ｓ９１０において、最終パケットであれば処理を終了し、そうでなければＳ９１１の処理を行う。
【０１１９】
Ｓ９１１において、画像伸張モジュール（５１３）の入力側データ転送装置（４０１）のレジスタ（２０２）の中間バッファｅｍｐｔｙフラグをセットする。
【０１２０】
Ｓ９２０は色空間変換モジュール（５１４）の出力側データ転送装置（４０３）の命令実行ユニット（２０３）の動作フローである。
【０１２１】
Ｓ９２１において、中間バッファサイズをダイレクトメモリアクセスコントローラ（２０１）の出力バッファサイズに設定する。
【０１２２】
Ｓ９２２において、中間バッファ２の先頭アドレスをダイレクトメモリアクセスコントローラ（２０１）の出力バッファアドレスに設定する。
【０１２３】
Ｓ９２３において、Ｓ９２１とＳ９２２とで指定した条件でダイレクトメモリアクセスコントローラ（２０１）を起動する。
【０１２４】
Ｓ９２４において、一時停止（ｓｕｓｐｅｎｄ）命令により一時停止状態に遷移する。
【０１２５】
Ｓ９２５において、ダイレクトメモリアクセスコントローラ（２０１）による転送が終了するとダイレクトメモリアクセスコントローラ（２０１）から命令実行ユニット（２０３）への転送終了通知信号がアサートされ命令実行ユニット（２０３）は命令実行を再開する。
【０１２６】
Ｓ９２６において、画像圧縮モジュール（５１２）の入力側データ転送装置（４０１）のレジスタ（２０２）に中間バッファ２有効フラグをセットする。
【０１２７】
Ｓ９２７において、最終パケットであれば処理を終了し、そうでなければＳ９２３に戻り次のパケットの処理を行う。
【０１２８】
画像圧縮モジュール（５１２）の動作について図１０を参照しながら説明する。
【０１２９】
Ｓ１０００は画像伸張モジュール（５１３）の入力側データ転送装置（４０１）の命令実行ユニット（２０３）の動作フローである。データ転送装置（４０１）はレジスタ（２０２）に中間バッファ２有効フラグを割り当てるものとする。中間バッファ２有効フラグの初期値は０である。
【０１３０】
Ｓ１００１において、中間バッファサイズをダイレクトメモリアクセスコントローラ（２０１）の入力データサイズに設定する。
【０１３１】
Ｓ１００２において、中間バッファ２の先頭アドレスをダイレクトメモリアクセスコントローラ（２０１）の入力データアドレスに設定する。
【０１３２】
Ｓ１００３において、一時停止（ｓｕｓｐｅｎｄ）命令により一時停止状態に遷移する。
【０１３３】
Ｓ１００４において、中間バッファ２有効フラグが１になると命令実行を再開する。
【０１３４】
Ｓ１００５において、中間バッファ２有効フラグをクリアする。
【０１３５】
Ｓ１００６において、Ｓ１００１とＳ１００２とで指定した条件でダイレクトメモリアクセスコントローラ（２０１）を起動する。
【０１３６】
Ｓ１００７において、一時停止（ｓｕｓｐｅｎｄ）命令により一時停止状態に遷移する。
【０１３７】
Ｓ１００８において、ダイレクトメモリアクセスコントローラ（２０１）による転送が終了するとダイレクトメモリアクセスコントローラ（２０１）から命令実行ユニット（２０３）への転送終了通知信号がアサートされ命令実行ユニット（２０３）は命令実行を再開する。
【０１３８】
Ｓ１００９において、最終パケットであれば処理を終了し、そうでなければＳ１０１０の処理を行う。
【０１３９】
Ｓ１０１０において、色空間変換モジュール（５１４）の入力側データ転送装置（４０１）のレジスタ（２０２）の中間バッファ２ｅｍｐｔｙフラグをセットする。
【０１４０】
Ｓ１０２０は画像伸張モジュール（５１３）の出力側データ転送装置（４０３）の命令実行ユニット（２０３）の動作フローである。データ転送装置（４０３）は出力先のアドレスを保持する出力先ポインタを変数として更新、記憶している。
【０１４１】
Ｓ１０２１において、パケットテーブル（７０１）エントリのＰａｃｋｅｔ  Ｓｔａｒｔ  Ａｄｄｒｅｓｓ（７０２）の値を出力先ポインタに設定する。
【０１４２】
Ｓ１０２２において、出力先ポインタに示されるアドレスを先頭に所定のＰａｃｋｅｔ  ＩＤ（６０３）およびＣｏｍｐｒｅｓｓ  Ｆｌａｇ（６０４を書き込む。
【０１４３】
Ｓ１０２３において、出力先ポインタにヘッダ長を加算する。
【０１４４】
Ｓ１０２４において、出力先ポインタの値をダイレクトメモリアクセスコントローラ（２０１）の出力バッファアドレスに設定する。出力バッファサイズにはバッファサイズから出力先ポインタの値を引いた値を設定する。
【０１４５】
Ｓ１０２５において、Ｓ１０２４で指定した条件でダイレクトメモリアクセスコントローラ（２０１）を起動する。
【０１４６】
Ｓ１０２６において、一時停止（ｓｕｓｐｅｎｄ）命令により一時停止状態に遷移する。
【０１４７】
Ｓ１０２７において、ダイレクトメモリアクセスコントローラ（２０１）による転送が終了するとダイレクトメモリアクセスコントローラ（２０１）から命令実行ユニット（２０３）への転送終了通知信号がアサートされ命令実行ユニット（２０３）は命令実行を再開する。
【０１４８】
Ｓ１０２８において、データ処理部（４０２）のレジスタ（図中には示していない）にアクセスして圧縮データ長を読む。
【０１４９】
Ｓ１０２９において、ヘッダ領域（６０１）のＤａｔａ  Ｌｅｎｇｔｈ（６０５）にＳ１０２８の圧縮データ長を書き込む。
【０１５０】
Ｓ１０３０において、パケットテーブルエントリのＰａｃｋｅｔ  Ｌｅｎｇｔｈ（７０３）にＳ１０２８の圧縮データ長にヘッダ長を加えた値を書き込む。
【０１５１】
Ｓ１０３１において、最終パケットであれば処理を終了し、そうでなければＳ１０３２の処理を行う。
【０１５２】
Ｓ１０３２において、出力先ポインタの値にＳ１０２８の圧縮データ長を加算する。
【０１５３】
図８、図９、図１０の同期タイミング図を図２に示す。
【０１５４】
Ｔ１：画像伸張モジュール入力側において、中間バッファ１ｅｍｐｔｙフラグは初期値１なのでデータ転送が開始される。データ転送開始に先立って中間バッファ１ｅｍｐｔｙフラグは０にクリアされる。
【０１５５】
Ｔ３：画像伸張モジュール出力側において、Ｔ１で読み始められたデータが処理されてデータ転送が開始される。
【０１５６】
Ｔ４：画像伸張モジュール入力側において、データ転送が終了する。
【０１５７】
Ｔ６：画像伸張モジュール出力側において、データ転送が終了し、色空間変換モジュール入力側の中間バッファ１有効フラグをセットする。
【０１５８】
Ｔ７：色空間変換モジュール入力側において、中間バッファ１有効フラグと中間バッファ２ｅｍｐｔｙフラグとがともに１になったので、データ転送を開始する。転送に先立って両フラグはクリアされる。
【０１５９】
Ｔ９：色空間変換モジュール出力側において、Ｔ７で読み始められたデータが処理されてデータ転送が開始される。
【０１６０】
Ｔ１０：色空間変換モジュール入力側において、データ転送が終了し、画像伸張モジュール入力側の中間バッファ１ｅｍｐｔｙフラグをセットする。
【０１６１】
Ｔ１１：画像伸張モジュール入力側において、中間バッファ１ｅｍｐｔｙフラグが１になったため次のパケット処理のためのデータ転送を開始する。データ転送開始に先立って中間バッファ１ｅｍｐｔｙフラグは０にクリアされる。
【０１６２】
Ｔ１２：色空間変換モジュール出力側において、データ転送が終了し、画像圧縮モジュール入力側に中間バッファ２有効フラグをセットする。
【０１６３】
Ｔ１３：画像伸張モジュール出力側において、Ｔ１１で読み始められたデータが処理されデータ転送が開始される。
【０１６４】
Ｔ１４：画像伸張モジュール入力側において、データ転送が終了する。
画像圧縮モジュール入力側において、中間バッファ２有効フラグが１になったためデータ転送を開始する。
【０１６５】
Ｔ１６：画像伸張モジュール出力側において、データ転送が終了し、色空間変換モジュール入力側に中間バッファ１有効フラグをセットする。
画像圧縮モジュール出力側において、Ｔ１４で読み始められたデータが処理されデータ転送が開始される。
【０１６６】
Ｔ１７：画像圧縮モジュール入力側において、データ転送が終了し、色空間変換モジュール入力側に中間バッファ２ｅｍｐｔｙフラグをセットする。
【０１６７】
Ｔ１８：色空間変換モジュール入力側において、中間バッファ１有効フラグと中間バッファ２ｅｍｐｔｙフラグがともに１になったので、データ転送が開始される。データ転送開始に先立って両フラグはクリアされる。
【０１６８】
Ｔ１９：画像圧縮モジュール出力側において、データ転送が終了する。
【０１６９】
Ｔ２１：色空間変換モジュール入力側において、データ転送が終了し、画像伸張モジュール入力側の中間バッファ１ｅｍｐｔｙフラグをクリアする。
色空間変換モジュール出力側において、Ｔ１７で読み始められたデータが処理されデータ転送が開始される。
【０１７０】
Ｔ２２：画像伸張モジュール入力側において、中間バッファ１ｅｍｐｔｙフラグが１になったので、次のパケットのためのデータ転送が開始される。データ転送開始に先立って中間バッファ１ｅｍｐｔｙフラグは０にクリアされる。
【０１７１】
Ｔ２４：色空間変換モジュール出力側において、データ転送が終了し、画像圧縮モジュール入力側に中間バッファ２有効フラグをセットする。
【０１７２】
Ｔ２５：画像伸張モジュール入力側において、データ転送が終了する。
画像伸張モジュール出力側において、Ｔ２２で読み始められたデータが処理されデータ転送が開始される。
【０１７３】
画像圧縮モジュール入力側において、中間バッファ２有効フラグが１になったのでデータ転送が開始される。
【０１７４】
Ｔ２７：画像圧縮モジュール出力側において、Ｔ２５で読み始められたデータが処理されデータ転送が開始される。
【０１７５】
Ｔ２８：画像圧縮モジュール入力側において、データ転送が終了し、色空間変換モジュール入力側の中間バッファ２ｅｍｐｔｙフラグをセットする。
【０１７６】
Ｔ２９：画像伸張モジュール出力側において、データ転送が終了し、色空間変換モジュール入力側に中間バッファ１有効フラグをセットする。
【０１７７】
Ｔ３０：色空間変換モジュール入力側において、中間バッファ１有効フラグと中間バッファ２ｅｍｐｔｙフラグがともに１になったのでデータ転送が開始される。データ転送開始に先立って両フラグはクリアされる。
【０１７８】
画像圧縮モジュール出力側において、データ転送が終了する。
【０１７９】
Ｔ３２：色空間変換モジュール出力側において、Ｔ３０で読み始められたデータが処理されデータ転送が開始される。
【０１８０】
Ｔ３３：色空間変換モジュール入力側において、データ転送が終了する。最終パケットなので画像伸張モジュール入力側の中間バッファ１ｅｍｐｔｙフラグのセットは行わない。
【０１８１】
Ｔ３５：色空間変換モジュール出力側において、データ転送が終了し、画像圧縮モジュール入力側に中間バッファ２有効フラグをセットする。
【０１８２】
Ｔ３６：画像圧縮モジュール入力側において、中間バッファ２有効フラグが１になったのでデータ転送が開始される。
【０１８３】
Ｔ３８：画像圧縮モジュール出力側において、Ｔ３６で読み始められたデータが処理されデータ転送が開始される。
【０１８４】
Ｔ３９：画像圧縮モジュール入力側において、データ転送が終了する。最終パケットなので色空間変換モジュール入力側の中間バッファ２ｅｍｐｔｙフラグのセットは行わない。
【０１８５】
Ｔ４１：画像圧縮モジュール出力側において、データ転送が終了する。
【０１８６】
上述したように、各データ処理ユニット（５１２，５１３，５１４）間で、各々のデータ転送装置（２００）の制御により、ＣＰＵを介さずに連続的にデータ転送を行うことができる。
【０１８７】
次に、データ転送中に異常が検知された場合の処理について説明する。図２で説明したデータ転送シーケンス中に、画像圧縮モジュール（５１２）で転送異常が発生したとする。このとき、画像圧縮モジュールのデータ転送装置（２００）内のＤＭＡＣ（２０１）は通知信号選択ユニット（２０９）に対して、異常通知信号（３０４）を伝える。マスクユニット（３０１）で異常通知信号（３０４）に対するマスクをあらかじめ解除しておくことによって、異常通知信号（３０４）は即座に割り込みコントローラ（５２１）を介して、ＣＰＵ（５０１）に伝えられる。ＣＰＵ（５０１）各データ処理ユニット（５１２，５１３，５１４）を停止するよう制御を行い、追ってリカバリーシーケンスを行う。
【０１８８】
本実施形態において、通知信号（３０３，３０４）は２本の構成をとっているが、３本以上の構成とすることも可能である。その際も各々の通知信号は独立に命令実行ユニット、ＣＰＵに選択的に伝達が可能である。
【図面の簡単な説明】
【０１８９】
【図１】本発明の実施形態に係るデータ転送装置の構成図である。
【図２】本発明の実施形態に係るシステムコントローラユニットにおける画像伸張モジュール、色空間変換モジュール、画像圧縮モジュールの同期タイミング図である。
【図３】本発明の実施形態に係る通知信号選択ユニットの構成図である。
【図４】本発明の実施形態に係るデータ処理モジュールの構成図である。
【図５】本発明の実施形態に係るシステムコントローラユニットの構成図である。
【図６】本発明の実施形態に係るシステムコントローラユニットで扱うパケットフォーマットである。
【図７】本発明の実施形態に係るシステムコントローラユニットで扱うパケットテーブルフォーマットである。
【図８】本発明の実施形態に係る画像伸張モジュールの処理を示したフローである。
【図９】本発明の実施形態に係る色空間変換モジュールの処理を示したフローである。
【図１０】本発明の実施形態に係る画像圧縮モジュールの処理を示したフローである。
【図１１】従来のダイレクトメモリアクセスコントローラを用いたシステムの構成図である。
【図１】
2006133964.tif 000003
【図２】
2006133964.tif 000004
【図３】
2006133964.tif 000005
【図４】
2006133964.tif 000006
【図５】
2006133964.tif 000007
【図６】
2006133964.tif 000008
【図７】
2006133964.tif 000009
【図８】
2006133964.tif 000010
【図９】
2006133964.tif 000011
【図１０】
2006133964.tif 000012
【図１１】
2006133964.tif 000013