(58)【調査した分野】(Int.Cl.,DB名)
前記解析手段は、しきい値より多い量のデータの転送を開始するためのコマンドをデコードしたら、前記切替手段に第1通知を行い、前記しきい値より少ない量のデータの転送を開始するためのコマンドをデコードしたら、前記切替手段に第2通知を行い、
前記切替手段は、前記第1通知に応じて前記発行手段によって発行される一連のリクエストの状態を前記第2状態に遷移させ、前記第2通知に応じて前記第1状態に遷移させる請求項3または4に記載の転送装置。
前記切替手段は、前記第1状態において、前記発行手段によって発行されるリクエストを分割せず、前記第2状態において、前記発行手段によって発行されるリクエストを分割する請求項10に記載の転送装置。
前記切替手段は、前記第2状態において、前記発行手段によって発行されるリクエストを、所与の連続転送回数を有する少なくともひとつのリクエストと、前記所与の連続転送回数よりも少ない連続転送回数を有するリクエストと、に分割する請求項11に記載の転送装置。
記憶装置と処理装置との間でデータを転送する複数の転送装置の1つの転送装置の制御方法であって、前記記憶装置と前記転送装置とはバスを介して接続され、前記制御方法は、
前記バスを介してデータを転送するためのリクエストを発行することと、
転送されるデータを解析することと、
発行される一連のリクエストの状態を、第1状態と、他の転送装置からのリクエストが前記第1状態よりも割り込みやすい第2状態と、の間で、前記解析で得られる前記転送されるデータのデータ量に基づいて切り替えることと、を含む制御方法。
【発明を実施するための形態】
【0010】
以下、各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【0011】
実施の形態では、データの転送装置において、転送するデータの属性や内容に応じて、高速にデータ転送が行われる高速転送モードとデータ転送速度が抑制される抑制転送モードとが自律的に切り替えられる。これにより、CPUが介在すること無く、適切なタイミングでデータ転送速度が制御されるため、各処理部がデータ転送する際に必要とするバスの帯域を確保することができる。
【0012】
(第1の実施の形態)
図1は、第1の実施の形態に係る複合機100の構成例を示すブロック図である。複合機100は、制御部110と、スキャナ120と、プリンタ130と、を備える。スキャナ120は原稿121を読み取り、画像データに変換する光学装置である。具体的には、スキャナ120は原稿121に光を照射し、撮像素子によってその反射光を受光してアナログデータを生成し、A/D変換することで画像データを得る。プリンタ130はプリント(印刷)画像データに従い、用紙131に対してインクを吐出することで、用紙131上に画像を形成するプリント装置である。なお、プリンタ130はこのようなインクジェット方式のプリント装置に限られず、電子写真方式やその他のプリント方式を用いたプリント装置であってもよい。
【0013】
制御部110はスキャナ120やプリンタ130に対する動作の指示や、画像の転送、画像処理を行う制御装置である。制御部110は、CPU111と、メモリコントローラ112と、DRAM113と、スキャナI/F114と、プリンタI/F115と、演算部116と、を含む。これらの構成要素はそれぞれバス117と接続され、バス117を介してデータのやりとりを行う。
【0014】
スキャナI/F114はスキャナ120とバス117との間に設けられ、それらの間のインタフェースとして機能する。プリンタI/F115はプリンタ130とバス117との間に設けられ、それらの間のインタフェースとして機能する。CPU111は複合機100を制御するプロセッサである。バス117は制御部110の構成要素間でデータを転送する際に用いられる信号伝送路である。バス117上では同時に複数の構成要素からデータを転送することができないため、バス117上でどの構成要素からデータを転送するかはメモリコントローラ112で制御される。
【0015】
メモリコントローラ112は、制御部110の構成要素の間で、バス117へ信号を送り出す権利(バスの使用権)を調停する調停手段(Bus arbiter)である。メモリコントローラ112はバス117上で行うデータ転送のリクエストを管理する。メモリコントローラ112は、各構成要素から送られたリクエストを受信し、順に実行する。メモリコントローラ112は、同時に複数の構成要素からリクエストを受信した場合、優先順位の高いリクエストから順次実行する。
【0016】
DRAM113は複合機100の主記憶装置である。DRAM113は、スキャンやプリントに用いる画像データや、演算部116の設定値や、ディスプレイリストを記憶(保持)する。ディスプレイリストは、演算部116がどのような処理をするべきかが記載されたコマンド列を示すデータである。
【0017】
演算部116はディスプレイリストによって制御され、スキャン画像やプリント画像に対して画像処理を行う装置である。画像処理はスキャン画像処理とプリント画像処理とを含む。スキャン画像処理では、スキャナ120によって読み取った画像データに対して、光学素子の特性によってずれてしまった色調を自然な色に修正するガンマ(γ)補正や、文字の輪郭をはっきりさせるためのエッジ強調等が行われる。プリント画像処理では、プリント対象の画像データに対して、プリント可能なCMYK色空間に変換する色空間変換や、インクで表現するのに適切な階調へと変換するガンマ(γ)変換等が行われる。
【0018】
図2は、スキャン処理を行う際のディスプレイリスト150の一例を示す模式図である。演算部116がディスプレイリスト150によりどのように制御されるかを説明する。
図2は、ディスプレイリスト150と、LUT(Look-Up Table)データ151と、画像データ152と、がDRAM113に保持されている状態を示している。ディスプレイリスト150は上から順に処理されるので、最初に演算部設定コマンド153が実行される。演算部設定コマンド153により、後述の第1イベント制御部211や第1入力側転送部212や第1出力側転送部213に対する設定がなされる。具体的には、演算部設定コマンド153により、DMA(Direct Memory Access)転送時のバースト長や、CPU111に送信する割り込みの種別や、画像転送コマンド156やLUT転送コマンド155をデコード(Decode、復号)した際に転送されるデータのアドレスやデータ量等、の設定がなされる。
【0019】
次に、スキャン画像処理部設定コマンド154が実行され、後述のスキャン画像処理部214に対して、処理対象の画像の大きさやフォーマットの設定がなされる。その後、LUT転送コマンド155が実行され、DRAM113に記憶されているLUTデータが、前述の演算部設定コマンド153による設定に応じて読み出される。LUTデータは、スキャン画像処理部214に対して、色空間変換のように設定値を比較的多く持つ処理の設定を行うためのものである。次に、画像転送コマンド156が実行され、DRAM113に記憶されている、スキャナ120で読み取られた画像データが、前述の演算部設定コマンド153による設定に応じて読み出される。各種設定がなされた演算部116は、読み出された画像データに対するスキャン画像処理を実行する。最後に、終了コマンド157が実行され、演算部116がCPU111に対して割り込みを送信する。
プリント処理を行う際のディスプレイリストは、
図2に示されるディスプレイリスト150と同様の構成を有する。
【0020】
図3は、
図1の複合機100がコピー処理を行う際の動作の流れの一例を示すフロー図である。S330で、ユーザの操作によってコピー処理の開始が指示されると、CPU111はコピー処理のプログラムの実行を開始する。S331で、CPU111はスキャナI/F114を通してスキャナ120を起動し、S332で、スキャナ120はスキャン処理すなわち原稿の読み取りを開始する。スキャナI/F114はスキャナ120で読み取った画像データをDRAM113に書き込むようメモリコントローラ112に対して転送リクエストを発行する。S333で、スキャナI/F114は該転送リクエストに応じて、読み取られた画像データをDRAM113に書き込む。Nライン分(Nは所与の自然数)のスキャンデータがDRAM113に書き込まれると(S334のY)、S335でスキャナI/F114はCPU111に対して割り込みを送信する。
【0021】
CPU111はこの割り込みを受けて、スキャン画像に対する処理を実行するために、S336で演算部116を起動する。S337で、演算部116はスキャン用のディスプレイリストによって各種設定を行う。S338で、演算部116はDRAM113からスキャンされた画像データを読み出し、S339でスキャン画像処理を行う。S340で、演算部116は、処理後の画像データをDRAM113に書き戻す。演算部116は、処理したデータを全てDRAM113に書き戻したら(S341のY)、S342でCPU111に対して割り込みを送信する。
【0022】
CPU111はスキャン画像処理の完了を受けて、プリント処理に向けた制御を開始する。CPU111はプリント用画像データの生成を行うために、S343で再度演算部116を起動する。S344で、演算部116はプリント用のディスプレイリストによって各種設定を行う。演算部116は、S345でDRAM113からスキャン画像処理された画像データを読み出し、S346でプリント画像処理を行う。S347で、演算部116は、処理後の画像データをDRAM113に書き戻す。演算部116は、処理したデータを全てDRAM113に書き戻したら(S348のY)、S349でCPU111に対して割り込みを送信する。
【0023】
CPU111はこの割り込みを受けて、S350で、プリントを行うためにプリンタI/F115を通してプリンタ130を起動する。S351で、プリンタI/F115はDRAM113上のプリント画像処理が施された画像データを読み出し、プリンタ130に送信する。S352で、プリンタ130は受信した画像データを用いて用紙131に対するプリントを行う。以上の処理を原稿121全体に対して繰り返し行うことで、コピー処理が完了する。
【0024】
上記のコピー処理においては、スキャン処理とプリント処理とが同時に行えるよう、各構成要素は並行して動作するよう制御される。例えば、スキャナI/F114が割り込みを送信し、CPU111が演算部116を起動している間にもスキャナ120は並行して原稿121の続きを読み取り続けている(S353、S354)。その後、演算部116で処理が進められている間にも、スキャナ120がNライン分のスキャンを完了したら、スキャナI/F114は再度割り込みを送信する。このように、コピー処理ではスキャン処理とプリント処理とが同時に行われるため、各処理が用紙131へのプリント速度に遅れないよう動作することが望ましい。また、プリンタ130へのデータ供給が滞りなく行われるよう、プリント処理の動作速度よりもスキャン処理の動作速度の方が大きくなるように設計される。
【0025】
しかしながら、スキャナI/F114、プリンタI/F115、演算部116がそれぞれ並行して動作するなか、スキャナ側で大量のラインを読み進める場合などのように、スキャナが一時的に大量のデータ転送を発生させてしまう場合が生じうる。この場合、
図4(a)に示されるように一時的にバス117の帯域がスキャナ処理に占有される。その結果、プリントを行うためのデータをプリンタ130に供給するのに必要なバス117の帯域が足りず、プリントが正しく行われなくなるか、またはプリント処理が滞る虞がある。本実施の形態では、この課題を解決する構成を演算部116に設けている。以下、演算部116について説明する。
【0026】
図5は、
図1の演算部116の機能および構成を示すブロック図である。演算部116は、DMA転送コントローラ201と、スキャンデータ処理部210と、プリントデータ処理部220と、を含む。スキャンデータ処理部210はDRAM113から画像データを取得してスキャン画像処理を行い、DRAM113に送信する。スキャンデータ処理部210は、第1イベント制御部211と、第1入力側転送部212と、第1出力側転送部213と、スキャン画像処理部214と、を有する。プリントデータ処理部220はDRAM113から画像データを取得してプリント画像処理を行い、DRAM113に送信する。プリントデータ処理部220は、第2イベント制御部221と、第2入力側転送部222と、第2出力側転送部223と、プリント画像処理部224と、を有する。
【0027】
DMA転送コントローラ201は複数のポートからDMA転送リクエストを受信し、メモリコントローラ112に送信する制御部である。具体的には、DMA転送コントローラ201は第1入力側転送部212、第1出力側転送部213、第2入力側転送部222、第2出力側転送部223と接続され、そのそれぞれからDMA転送リクエストを受信可能に構成される。DMA転送コントローラ201はバス117を介してDRAM113と接続される。DMA転送コントローラ201は、DRAM113から受信したデータを、該データに対応するDMA転送リクエストの発行元に送信する。また、複数のポートからDMA転送リクエストを同時に受信するような競合が起こった場合には、DMA転送コントローラ201はそれらのDMA転送リクエストをタスクに積んで、受け付けた順番に処理する(First-in First-out)。競合は、例えば第1入力側転送部212からのDMA転送リクエストと第2入力側転送部222からのDMA転送リクエストとが同時にDMA転送コントローラ201によって受け付けられた場合に生じる。
【0028】
第1入力側転送部212(第2入力側転送部222)は、DRAM113から画像データやディスプレイリストを取得するためのDMA転送リクエストを発行し、受信したデータをスキャン画像処理部214(プリント画像処理部224)に送信する。第1入力側転送部212(第2入力側転送部222)は、終了コマンドを実行すると第1イベント制御部211(第2イベント制御部221)に通知し、動作を停止する。
【0029】
第1出力側転送部213(第2出力側転送部223)は、スキャン画像処理部214(プリント画像処理部224)から処理済みの画像データやディスプレイリストを受信し、受信したデータをDRAM113に書き出すためのDMA転送リクエストを発行する。第1出力側転送部213(第2出力側転送部223)は、終了コマンドを実行すると第1イベント制御部211(第2イベント制御部221)に通知し、動作を停止する。
【0030】
第1イベント制御部211(第2イベント制御部221)は、演算部116が起動された際に第1入力側転送部212(第2入力側転送部222)と第1出力側転送部213(第2出力側転送部223)とに動作開始の指示を行う。第1イベント制御部211(第2イベント制御部221)は、第1入力側転送部212(第2入力側転送部222)および第1出力側転送部213(第2出力側転送部223)の両方から処理の終了の通知を受けるとCPU111への割り込みを発行する。その後、第1イベント制御部211(第2イベント制御部221)は動作を停止する。
【0031】
スキャン画像処理部214は第1入力側転送部212から送信された画像データに対してスキャン画像処理を行い、第1出力側転送部213に送信する。プリント画像処理部224は、プリンタ130によるプリントに適合させるようにデータを処理する。具体的には、プリント画像処理部224は第2入力側転送部222から送信された画像データに対してプリント画像処理を行い、第2出力側転送部223に送信する。
【0032】
演算部116がスキャン画像処理を行う際の動作について説明する。CPU111は第1イベント制御部211に対して、演算部116の起動を通知する。第1イベント制御部211は第1入力側転送部212にデータの転送を開始するよう指示し、第1出力側転送部213にデータの受信を待機するよう指示する。第1入力側転送部212はデータ転送開始の指示に従って、DRAM113からディスプレイリストや画像データを読み出すためのDMA転送リクエストを発行し、DMA転送コントローラ201に送信する。DMA転送コントローラ201は第1入力側転送部212から受信したDMA転送リクエストに従ってDRAM113からデータを読み出し、読み出したデータを第1入力側転送部212に送信する。
【0033】
第1入力側転送部212はDMA転送コントローラ201から受信したデータをスキャン画像処理部214に転送すると共に、受信したデータの解析を行い、終了コマンドを受信すると第1イベント制御部211にその旨を通知する。スキャン画像処理部214は、第1入力側転送部212から転送されてきたデータに対してスキャン画像処理を行い、処理後のデータを第1出力側転送部213に送信する。
【0034】
第1出力側転送部213はスキャン画像処理部214から受信したデータをDRAM113に書き出すためのDMA転送リクエストを発行すると共に、受信したデータの解析を行い、終了コマンドを受信すると第1イベント制御部211にその旨を通知する。DMA転送コントローラ201は第1出力側転送部213から受信したDMA転送リクエストに従ってDRAM113にデータの書き出しを行う。最後に、第1イベント制御部211は、第1入力側転送部212および第1出力側転送部213の両方から終了の通知を受け取るとスキャン画像処理を終了し、CPU111に割り込みを送信する。なお、一般には入力側の転送処理は出力側の転送処理よりも先に終了するので、第1イベント制御部211は第1出力側転送部213から終了の通知を受け取るとスキャン画像処理を終了してもよい。演算部116がプリント画像処理を行う際の動作は上述のスキャン画像処理を行う際の動作と同様である。
【0035】
図6は、
図5の第1入力側転送部212の機能および構成を示すブロック図である。第1入力側転送部212は、DMA転送部301と、バッファ転送部302と、コマンド解析部303と、同期制御部304と、バッファ部308と、を有する。バッファ部308は、バッファコントローラ305と、第1バッファ306と、第2バッファ307と、を有する。第1出力側転送部213、第2入力側転送部222、第2出力側転送部223はそれぞれ、
図6に示される第1入力側転送部212の構成と同様の構成を有する。
【0036】
DMA転送部301は同期制御部304からの指示に応じてDMA転送コントローラ201にDMA転送リクエストを発行する。第1入力側転送部212、第2入力側転送部222については、DMA転送リクエストはDRAM113からバッファ部308にデータを転送するためのリクエストである。第1出力側転送部213、第2出力側転送部223については、DMA転送リクエストはバッファ部308からDRAM113にデータを転送するためのリクエストである。DRAM113とバッファ部308との間でのデータの転送が完了したら、DMA転送コントローラ201はその旨をDMA転送部301に通知する。DMA転送部301は、この通知を受けて同期制御部304にデータ転送の完了を通知する。
【0037】
バッファ転送部302は同期制御部304からの指示に応じてバッファ部308にアクセスする。第1入力側転送部212、第2入力側転送部222については、バッファ転送部302はバッファ部308からデータを読み出し、コマンド解析部303に送信する。第1出力側転送部213、第2出力側転送部223については、バッファ転送部302はコマンド解析部303から受信したデータをバッファ部308へ書き込む。バッファ部308とコマンド解析部303との間でのデータの転送が完了したら、バッファ転送部302は同期制御部304にデータ転送の完了を通知する。
【0038】
バッファコントローラ305は、データを保持する第1バッファ306、第2バッファ307への書き込みやそれらからの読み出しを制御するコントローラである。バッファ部308への書き込みのためのアクセスがあった場合は、バッファコントローラ305は空いているバッファにアクセスする。バッファ部308からの読み出しのためのアクセスがあった場合は、バッファコントローラ305はデータの溜まっているバッファにアクセスする。これらの動作は書き込みのためのアクセスと読み出しのためのアクセスとが同時に起こった場合には並行して行われる。これにより、DMA転送部301によるアクセスとバッファ転送部302によるアクセスとは並行して行われうる。
【0039】
コマンド解析部303はバッファ転送部302とスキャン画像処理部214(第2入力側転送部222、第2出力側転送部223の場合はプリント画像処理部224)との間でやりとりされるデータの内容を解析する。コマンド解析部303は解析の結果を同期制御部304に送信して同期制御部304を設定すると共に、第1イベント制御部211にも解析の結果を通知する。同期制御部304の設定は、例えば、演算部設定コマンド153をデコードすることによって得られる、バッファチェンジの制御を行う際に用いられるタイマの設定である。コマンド解析部303は、終了コマンド157をデコードした場合は第1イベント制御部211に対して処理の終了を通知する。コマンド解析部303は、画像転送コマンド156をデコードした場合は画像データ転送開始を、画像データの最終画素コマンドをデコードした場合は設定データ転送開始を、同期制御部304に通知する。
【0040】
同期制御部304は、コマンド解析部303における解析の結果得られるデータの属性に応じて転送シーケンスを制御し、転送シーケンスに応じたタイミングでDMA転送部301やバッファ転送部302にデータの転送を実行するための指示を与える。転送シーケンスでは、データの属性に応じて高速転送モードと抑制転送モードとの間の遷移が発生する。
図4(b)、(c)に関連して後述するように、DMA転送部301によって発行される一連のDMA転送リクエストの状態には、高速転送モードのときに実現される高速転送状態と、抑制転送モードのときに実現される抑制転送状態と、がある。同期制御部304は、データの属性に応じてモードを切り替えることで、一連の転送リクエストの状態を高速転送状態と抑制転送状態との間で切り替える。
【0041】
図7は、転送シーケンスの制御を説明するための図である。データ転送が開始されると、転送シーケンスは高速転送モードに遷移する。高速転送モードにおいて、コマンド解析部303から同期制御部304に画像データの転送の開始が通知されると、転送シーケンスは抑制転送モードに遷移する。この遷移は、DMA転送部301およびバッファ転送部302に対するデータ転送の指示の制御と同期する。一方、抑制転送モードにおいて、設定データの転送の開始が通知されると、転送シーケンスは高速転送モードに遷移する。この遷移は、DMA転送部301およびバッファ転送部302に対するデータ転送の指示の制御と同期する。
図2に示されるディスプレイリスト150の例では、設定コマンドやLUTデータ151の転送中は転送シーケンスが高速転送モードとなり、画像データ152の転送中は転送シーケンスが抑制転送モードとなる。
【0042】
本実施の形態では、転送するデータ量が多い画像データ152の転送時に抑制転送モードを用いるが、これに限られない。例えば、LUTのデータ量が多くなる場合には、LUTデータ151の転送を行う際も抑制転送モードを用いてもよい。つまり、転送するデータ量が多く、集中的なバス117へのアクセスが発生してバス117が占有されてしまう蓋然性が高いコマンドをデコードした場合、抑制転送モードに遷移することが望ましい。
【0043】
図6に戻り、転送シーケンスの各モードにおけるデータ転送のための指示について説明する。第1入力側転送部212、第2入力側転送部222についてのデータ転送のための指示は以下の二つを含む。
(1)バッファ部308が空いている場合にDMA転送部301に送信される、転送を開始するための指示。この場合、バッファ部308へのデータの溜め込みが行われる。
(2)バッファ部308にデータが溜まっている場合にバッファ転送部302に送信される、転送を開始するための指示。この場合、バッファ部308内のデータの読み出しが行われる。
【0044】
第1出力側転送部213、第2出力側転送部223についてのデータ転送のための指示は以下の二つを含む。
(3)バッファ部308が空いている場合にバッファ転送部302に送信される、転送を開始するための指示。
(4)バッファ部308にデータが溜まっている場合にDMA転送部301に送信される、転送を開始するための指示。
【0045】
データ転送のための指示はDMA転送部301とバッファ転送部302との間で同期する形で行われる。
図8は、同期制御を説明するフローチャートである。データ転送が開始されると、S601で、同期制御部304はDMA転送部301およびバッファ転送部302に対して転送の開始を指示する。この指示に応じてDMA転送部301からDMA転送リクエストが発行される。S602で、同期制御部304は転送シーケンスのモードを判定または確認し、高速転送モードであればS603に、抑制転送モードであればS604に移行する。
【0046】
高速転送モードに対応するS603で、同期制御部304はDMA転送部301およびバッファ転送部302の両方から転送完了が通知されるまで待機し、それらの通知を両方とも受信した時点でデータ転送が完了したと判定し、S607に移行する。一方、抑制転送モードにおいて、DMA転送部301およびバッファ転送部302の両方から転送完了の通知を受信すると、同期制御部304は前回のバッファチェンジから所定の待機期間が経過したか否かを判定する。経過していない場合、同期制御部304はバッファチェンジを行わないまま、すなわち次のデータ転送への移行を行わないまま待機する。このため、S604で、同期制御部304はタイマを初期化する。S605で、同期制御部304は転送完了の通知が発行されているか否か、および待機期間が経過しているか否かを判定する。DMA転送部301およびバッファ転送部302の両方から転送完了の通知が発行されていたとしても、待機期間が経過していない場合は、S606で同期制御部304はタイマのカウントアップを行い、再度S605にて終了判定を行う。DMA転送部301およびバッファ転送部302の両方から転送完了の通知を受信し、かつ待機期間が経過したら同期制御部304はデータ転送が完了したと判定し、S607に移行する。S607で、同期制御部304は受信用のバッファと送信用のバッファとを入れ替えるバッファチェンジのための制御を行う。合わせて同期制御部304は転送シーケンスの更新を行う。具体的には、同期制御部304は前述のようにコマンド解析部303の解析結果を確認し、
図7に関連して説明された態様でモードの切替を行う。バッファチェンジの後、同期制御部304は次のDMA転送リクエストの発行を許可する。上記の通り、待機期間は、同期制御部304がバッファチェンジが可能となるまで次の指示を発行せずに待機する期間である。
【0047】
バッファチェンジについて
図6を参照して具体的に説明する。例えば、第1バッファ306に対してライトを行い、第2バッファ307からはリードが行われている場合、ライトおよびリードの両方が完了した時点で次の動作が指示される。このとき、第2バッファ307はリードが完了して空になっており、第1バッファ306にはライトの完了によりデータが溜まっている。このため、次のライトは空の第2バッファ307に対して行われ、リードはデータがある第1バッファ306に対して行われる。このように、ライト対象のバッファとリード対象のバッファとを同期して入れ替えることをバッファチェンジと呼ぶ。
図8を参照して説明されたように、バッファチェンジのタイミングは転送シーケンスのモードに応じて異なる。
【0048】
上記のように、本実施の形態では、解析の結果得られるデータの属性(設定データであるか、画像データ等の非設定データであるか)に応じてデータの転送が完了したと判定するための条件を切り替える。これにより、バス117上のデータ転送が頻繁に発生するスキャン画像処理時は、ライトおよびリードが完了しても所定の待機期間が経過するまで次のデータ転送が発生しなくなる。
【0049】
図9(a)は、抑制転送モードにおける処理の進行を示す模式図である。抑制転送モードでは、あるバッファチェンジの後のライトおよびリードの両方のデータ転送が完了する時刻T1において次のバッファチェンジは行われない。同期制御部304は、時刻T1の後、タイマがカウントアップして待機期間が経過したと判定される時刻T2まで待機する。すなわち、同期制御部304は時刻T2になるまで次のバッファチェンジを行わないので、時刻T2まで次のデータ転送は開始されない。従って、抑制転送モードではバス117の帯域を時刻T1から時刻T2までの期間空けることができる。
【0050】
抑制転送モードにおけるリクエスト競合の処理が
図4(b)に示される。スキャン画像処理に係る一連のDMA転送リクエストについて、リクエスト発行の周期は待機期間以上となる。具体的には、スキャン画像処理に係る一連のDMA転送リクエストRS1〜RS4について、RS1が発行された後、対応するデータのリード/ライトが完了しても待機期間が経過するまでは次のRS2は発行されない。待機期間が経過するとバッファチェンジと共にRS2が発行される。RS2とRS3との関係についても同様である。RS3が発行された後、対応するデータのリード/ライトが完了しても待機期間が経過するまでは次のRS4は発行されない。ここで、RS3に対応するデータのリード/ライトが完了してから待機期間が満了するまでの期間P1に、プリント画像処理に係るDMA転送リクエストRP1、RP2の処理が開始される。例えば、RP2はRS3ともRS4とも競合しないので、発行後すぐに処理される。その後、RS4が発行される。これにより、プリント処理に必要な画像転送の帯域が確保できるようになる。
図4(b)に示されるスキャン画像処理に係る一連のDMA転送リクエストRS1〜RS4の状態は、上述の抑制転送状態である。
【0051】
図9(b)は、高速転送モードにおける処理の進行を示す模式図である。データ転送が少なくバス117の占有が起きにくい設定値等の転送を行う際は、
図9(b)に示されるように、ライト、リードのデータ転送が完了した時刻T1の時点でバッファチェンジを行う。したがって、データ転送速度の抑制が不要な場合には該抑制が発生しにくくなるか発生しなくなる。
【0052】
高速転送モードに対応する
図4(a)では、スキャン画像処理に係る一連のDMA転送リクエストRS1〜RS5について、待機期間による制限はない。RS3に対応するデータのリード/ライトが完了した時点で競合がなければ、バッファチェンジと共に次のRS4が発行される。このRS4とプリント画像処理に係るDMA転送リクエストRP1とが競合し、RP1の処理が遅れる。RS5についても同様にプリント画像処理に係るDMA転送リクエストRP2と競合する。
図4(a)に示されるスキャン画像処理に係る一連のDMA転送リクエストRS1〜RS4の状態は上述の高速転送状態である。
【0053】
図4(b)に示されるスキャン画像処理に係る一連のDMA転送リクエストRS1〜RS4の抑制転送状態は、
図4(a)に示される高速転送状態よりも、プリント画像処理に係るDMA転送リクエストがより割り込みやすい状態である。本実施の形態において、抑制転送状態ではリクエスト間の間隔が比較的空いており、高速転送状態ではリクエスト間の間隔が比較的密であるとも表現できる。あるいはまた、抑制転送状態と高速転送状態との間で、DMA転送リクエストがバス117を占有する頻度が切り替えられると表現できる。あるいはまた、抑制転送状態では、スキャン画像処理に係る一連のDMA転送リクエストについて、あるDMA転送リクエストにより生じるバス占有期間と、次のDMA転送リクエストにより生じるバス占有期間と、の間に隙間を空けて両者を離す。これにより、プリント画像処理に係るDMA転送リクエストが割り込みやすくなる。
【0054】
また、本実施の形態に係る複合機100では、Nライン分の処理が終わるごとにCPU111から演算部116に起動の割り込みがなされている。起動された後は演算部116がディスプレイリストに応じて画像転送やLUT転送を切り替えながら実行していく。CPU111がこの転送状態を監視し、CPU111が都度演算部116のデータ転送速度を制御することとすると、負荷が重く処理が大幅に遅くなる可能性がある。しかしながら、本実施の形態に係るCPU111とは無関係に行われる自律的な制御により、データ転送の転送シーケンスが自律的に切り替えられるようになるため、演算部116が動作を止めること無く適切なタイミングで動作することができる。
【0055】
また、本実施の形態に係る複合機100では、第1入力側転送部212、第1出力側転送部213、第2入力側転送部222、第2出力側転送部223のそれぞれに転送シーケンスに応じたモード切り替え機能を実装する。これにより、画像処理によって画像の大きさが変わる場合にも適切なデータ転送速度の切り替えを行うことができる。
【0056】
例えば、スキャン画像処理部214において入力画像の拡大処理が行われる場合、出力側で転送するデータ量が大きくなる。本実施の形態では、第1出力側転送部213は第1入力側転送部212と同様のモード切り替え機能を有するので、出力データの増大にも対応することができる。
【0057】
なお、入力側および出力側のうち転送する画像データが大きい方が、バス117の帯域に影響を与えやすい。このことから、スキャン画像処理部214が縮小処理を行う場合は第1入力側転送部212に、拡大処理を行う場合は第1出力側転送部213に、それぞれモード切り替え機能を実装するまたは有効化する構成するとしてもよい。
【0058】
(第2の実施の形態)
第2の実施の形態の主な目的は、演算部でデータ転送が行われない間に消費される電力を抑えることにある。
図10は、第2の実施の形態に係る第1入力側転送部612の機能および構成を示すブロック図である。本実施の形態では、第1入力側転送部612にクロック制御部608を設ける。第1出力側転送部、第2入力側転送部、第2出力側転送部についても同様である。
【0059】
クロック制御部608は、スキャン画像処理部214に供給するクロックのオン・オフを、同期制御部604から送信されるクロック制御信号に応じて切り替える制御回路である。
【0060】
同期制御部604は、データ転送の転送シーケンスに応じて、クロック制御部608にクロック制御信号を発行する。同期制御部604は、抑制転送モードにおいて、DMA転送部301およびバッファ転送部302の両方からデータ転送の完了が通知されてから待機期間が経過するまでの間、クロックの供給を停止させるようクロック制御部608を制御する。
図9(a)を参照して説明すると、時刻T1から時刻T2までの期間がクロック供給をオフにする期間となる。そして、再度データ転送を開始する際には同期制御部604はクロック供給を開始するようクロック制御部608を制御する。高速転送モードにおいてはクロック供給は常にオンとなるよう制御される。
【0061】
本実施の形態に係る複合機によると、第1の実施の形態に係る複合機100により奏される作用効果と同様の作用効果が奏される。加えて、データ転送が行われない間にスキャン画像処理部214にクロックの供給が行われていると、画像を処理していない間に電力を消費することとなる。これに対して、本実施の形態では、同期制御部604によりクロック制御部608を上記のように制御する。これにより、データ転送が行われない間は、スキャン画像処理部214へのクロック供給が止まるので、不要な電力の消費を抑えることができる。
【0062】
(第3の実施の形態)
第3の実施の形態の主な目的は、データの属性に応じて、DMA転送リクエストのデータ量を制御し、バス117の帯域を有効に利用しつつ適切なタイミングで優先度の高いDMA転送に帯域を割り当てることを可能とすることにある。
図11は、第3の実施の形態に係る第1入力側転送部712の機能および構成を示すブロック図である。本実施の形態では、第1入力側転送部712にDMA分割部709を設ける。第1出力側転送部、第2入力側転送部、第2出力側転送部についても同様である。
【0063】
DMA分割部709は、同期制御部704の転送シーケンスに応じて、DMA転送部301からのDMA転送リクエストを分割する際の分割数を切り替える制御回路である。
【0064】
図12は、DMA分割部709における分割制御を説明するフローチャートである。S1001で、DMA分割部709はDMA転送部301からのDMA転送リクエストを受信する。S1002で、DMA分割部709は同期制御部704の転送シーケンスを参照する。DMA分割部709は転送シーケンスのモードが高速転送モードである場合はS1003に移行する。S1003で、DMA分割部709はDMA転送部301からのDMA転送リクエストを、そのデータ量を変化させずに発行する。例えば、DMA分割部709はDMA転送部301からのDMA転送リクエストをそのままDMA転送コントローラ201に送信する。S1002でDMA分割部709は転送シーケンスのモードが抑制転送モードである場合はS1004に移行する。S1004で、DMA分割部709はDMA転送部301からのDMA転送リクエストを分割し、複数の新たなDMA転送リクエスト(分割リクエストと称す)を生成し、DMA転送コントローラ201に発行する。
【0065】
S1004における分割リクエストの生成について説明する。
図13(a)〜(e)は、DMA転送リクエストの分割を説明するための図である。
図13(a)〜(e)ではDMA転送部301から発行されたDMA転送リクエスト(
図13(a))の連続転送回数をR、分割により得られる分割リクエスト(
図13(b)〜(d))の連続転送回数をTで表す。分割リクエストの連続転送回数Tはコマンド解析部303が演算部設定コマンドをデコードした際に設定される。
【0066】
DMA分割部709はDMA転送部301からのDMA転送リクエスト(
図13(a))の連続転送回数Rと分割リクエストの連続転送回数Tとを比較し、R>Tの場合、連続転送回数Tを有する分割リクエスト(
図13(b))を生成する。この分割リクエストは、DMA転送部301からのDMA転送リクエストの連続転送回数RをTに置き換えることで生成されてもよい。なお、T≧Rの場合、DMA分割部709はDMA転送部301からのDMA転送リクエストをそのままDMA転送コントローラ201に送信する(分割しない)。
【0067】
次に、DMA分割部709はR−T(すなわち、分割後の残りの連続転送回数)とTとを比較し、R−T>Tの場合、連続転送回数Tを有する分割リクエスト(
図13(c))を生成する。この分割リクエストは、DMA転送部301からのDMA転送リクエストの連続転送回数RをTに置き換えると共に他のフィールドに大きさTのオフセットを加えることで生成されてもよい。
【0068】
次に、DMA分割部709はR−2TとTとを比較し、R−2T>Tの場合、連続転送回数Tを有する分割リクエスト(
図13(d))を生成する。この分割リクエストは、DMA転送部301からのDMA転送リクエストの連続転送回数RをTに置き換えると共に他のフィールドに大きさ2Tのオフセットを加えることで生成されてもよい。
【0069】
次に、DMA分割部709はR−3TとTとを比較し、R−3T≦Tの場合、連続転送回数を未転送分の連続転送回数(R−3T)に設定した分割リクエスト(
図13(e))を生成する。この分割リクエストは、DMA転送部301からのDMA転送リクエストの連続転送回数RをR−3Tに置き換えると共に他のフィールドに大きさ3Tのオフセットを加えることで生成されてもよい。
【0070】
図12に戻り、S1005で、DMA分割部709は、発行済みの分割リクエストの連続転送回数の合計がR回に達していない場合はS1004に移行して、再度分割リクエストの生成、発行を行う。一方、連続転送回数の合計がRに達している場合は、DMA分割部709は分割制御を完了し、DMA転送部301から次のDMA転送リクエストを受けるまで待機する
【0071】
本実施の形態に係る複合機によると、DMA分割部709は抑制転送モードにおいてDMA転送リクエストを分割し、高速転送モードにおいて分割を行わない。これにより、同期制御部704の転送シーケンスに応じて、分割制御が切り替えられる。その結果、転送シーケンスのモードに応じてDMA転送リクエストの帯域利用率を切り替えることができる。具体的には、演算部116の設定値の読み出し等、データ量が少なくかつ高速な転送が望まれるデータ転送については分割制御を行わず優先的なバス帯域の利用を許す。一方で、画像データの読み出し等、データ量が多いデータ転送については、他のデバイスがバス117を利用できない期間が比較的多く発生する。本実施の形態ではこのようなデータ転送について、DMA転送リクエストを複数の分割リクエストに分割するので、各分割リクエストにより転送されるデータの量は元のDMA転送リクエストにより転送されるべきデータの量よりも少なくなる。これにより、
図4(c)のように他のデバイスから発行されるDMA転送リクエストが割り込みやすくなる。具体的には、プリント画像処理に係るDMA転送リクエストRP1、RP2はスキャン画像処理に係る一連のDMA転送リクエスト(の分割リクエスト)RS’1、RS’2、RS’3、RS’4と競合する。しかしながら、各分割リクエストがバス117を占有する期間は比較的短いので、RP1やRP2の処理が待たされる時間も比較的短くなる。これは、「割り込みやすい状態」の一態様である。
【0072】
このように本実施の形態に係る複合機によると、スキャナ側で転送シーケンスに応じてバス帯域を占有する頻度を切り替えることで、並行動作を可能としつつ、プリンタのようにリアルタイムな動作が要求されるデバイスのデータ転送を優先的に行うことができる。
【0073】
以上、実施の形態に係る複合機の構成と動作について説明した。これらの実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0074】
第1から第3の実施の形態では、データの属性として、設定データであるか画像データ等の非設定データであるかの別を採用する場合を説明したが、これに限られない。例えば、データの量についてしきい値を設定し、データの量が該しきい値より多いか少ないかの別をデータの属性として採用してもよい。あるいはまた、データの属性は、実施の形態に係る技術的思想が適用されるアプリケーションに応じて設定されてもよい。
【0075】
第1から第3の実施の形態では、主にスキャン画像処理に係るDMA転送リクエストとプリント画像処理に係るDMA転送リクエストとが競合する場合について説明したが、これに限られない。任意の第1処理に係るDMA転送リクエストと任意の第2処理に係るDMA転送リクエストとの競合が生じうる場合に、実施の形態に係る技術的思想を適用可能である。例えば、第1処理と第2処理との間に優先度の差があってもよい。この場合、優先度の低い処理について転送シーケンスによるモード切り替えを適用することで、並行処理を行いつつ優先度の高い処理を優先することができる。
【0076】
第1から第3の実施の形態では、DMA転送リクエストが割り込みやすくなる態様として、DMA転送リクエスト間の間隔を空ける場合と、各リクエストの占有期間を短くする場合と、を説明したがこれに限られない。例えば、DMA転送リクエストに優先度を含め、転送シーケンスに応じて該優先度を設定してもよい。この場合、抑制転送モードであれば優先度を比較的低く設定してもよい。
【0077】
第1から第3の実施の形態では、コマンドを解析して転送シーケンスのモードを切り替える機能を入力側転送部や出力側転送部が有する場合について説明したが、これに限られない。例えば、当該機能をDMA転送コントローラに実装してもよい。