(57)【特許請求の範囲】
【請求項１】
バッファと、
前記バッファに保持するデータを出力デバイスに出力する出力手段と、
前記出力手段のバッファのサイズに相当する量のデータを転送する第１モードで前記メモリの保持するデータを前記出力手段のバッファに転送した後に、前記出力手段のバッファのサイズより小さい量のデータを複数回転送する第２モードで前記メモリの保持するデータを前記出力手段のバッファに転送する転送手段と、を有し、
前記転送手段の第２モードでは、前記出力手段が前記出力デバイスへデータを出力する出力レートと前記転送手段が１回の転送処理で転送するデータ量とに基づいた転送間隔で転送し、前記バッファに保持されているデータ量が第１設定量を超えた時間又は前記バッファに保持されているデータ量が第２設定量を下回った時間が所定の時間を超えた場合に前記転送間隔を変更して転送する
ことを特徴とする情報処理装置。
【請求項２】
前記転送手段はクロック信号を参照して動作しており、前記転送間隔を短く変更する場合には、前記クロック信号で次の周期で転送を開始することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記出力手段の出力レートと、前記転送手段が１回に転送するデータ量とに基づいて前記第２モードにおける複数の転送の間隔を決定する制御手段を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記出力手段は前記出力デバイスの性能に応じて前記出力レートを決定することを特徴とする請求項１乃至３何れか１項に記載の情報処理装置。
【請求項５】
前記制御手段は前記第１モードで前記出力手段のバッファが一杯になるまでデータを転送した後に、前記第２モードで前記間隔毎にデータを転送することを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記データは画像データであって、前記制御手段は前記出力手段が前記第２モードで前記画像データの１つのラインを出力した場合に、次のラインの出力を開始することを示す所定の信号が入力されるまで前記転送手段によるデータの転送を停止する第３モードに遷移することを特徴とする請求項３乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記第２モードにおいて前記転送手段が複数回転送する画像データの夫々は前記１つのラインより小さいデータであることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
チップ間バスで接続されている、画像データを保持するメモリを有する制御回路と前記画像データを出力デバイスへ出力する出力回路とを備える画像出力装置であって、
前記出力回路は、バッファと、前記バッファに保持するデータを前記出力デバイスに出力する出力手段とを有し、
前記制御回路は、前記出力手段のバッファのサイズに相当する量のデータを転送する第１モードで前記メモリの保持するデータを前記出力手段のバッファに転送した後に、前記出力手段のバッファのサイズより小さい量のデータを複数回転送する第２モードで前記メモリの保持するデータを前記出力手段のバッファに転送する転送手段を有し、
前記転送手段の第２モードでは、前記出力手段が前記出力デバイスへデータを出力する出力レートと前記転送手段が１回の転送処理で転送するデータ量とに基づいた転送間隔で転送し、前記バッファに保持されているデータ量が第１設定量を超えた時間又は前記バッファに保持されているデータ量が第２設定量を下回った時間が所定の時間を超えた場合に前記転送間隔を変更して転送することを特徴とする画像出力装置。
【請求項９】
バッファと、前記バッファに保持するデータを出力デバイスに出力する出力手段と、メモリに保持しているデータを前記出力手段のバッファに転送する転送手段とを有する情報処理装置における情報処理方法であって、前記出力手段のバッファのサイズに相当する量のデータを転送する第１モードで前記メモリの保持するデータを前記出力手段のバッファに転送した後に、前記出力手段のバッファのサイズより小さい量のデータを複数回転送する第２モードで前記転送手段に前記メモリの保持するデータを前記出力手段のバッファに転送させる転送工程と、を有し、
前記転送工程の第２モードでは、前記出力手段が前記出力デバイスへデータを出力する出力レートと前記転送手段が１回の転送処理で転送するデータ量とに基づいた転送間隔で前記転送手段に転送させ、前記バッファに保持されているデータ量が第１設定量を超えた時間又は前記バッファに保持されているデータ量が第２設定量を下回った時間が所定の時間を超えた場合に前記転送間隔を変更して転送させることを特徴とする情報処理方法。
【請求項１０】
チップ間バスで接続されている、画像データを保持するメモリを有する制御回路と前記画像データを出力デバイスへ出力する出力回路とを備える画像出力装置における情報処理方法であって、
前記出力回路が、バッファと、前記バッファに保持するデータを前記出力デバイスに出力する出力工程と、
前記制御回路が、前記バッファのサイズに相当する量のデータを転送する第１モードで前記メモリの保持するデータを前記バッファに転送した後に、前記バッファのサイズより小さい量のデータを複数回転送する第２モードで前記メモリの保持するデータを前記バッファに転送する転送工程とを有し、
前記転送工程の第２モードでは、前記出力工程で前記出力デバイスへデータを出力する出力レートと前記転送工程で１回の転送処理で転送するデータ量とに基づいた転送間隔で転送し、前記バッファに保持されているデータ量が第１設定量を超えた時間又は前記バッファに保持されているデータ量が第２設定量を下回った時間が所定の時間を超えた場合に前記転送間隔を変更して転送することを特徴とする情報処理方法。
【請求項１１】
請求項９又は１０に記載の情報処理方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ転送に関する情報処理であって、特にデジタル画像データを印刷あるいは表示又は出力するための出力デバイスとの接続に用いられる情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
画像データを出力（表示、印刷、データ送信）する際には一定間隔で画像データ（又は所定サイズ毎に分割した画像データ）を出力するリアルタイム性が求められるため、出力部（プリンタにおける印字部への描画データを転送するスプーラや、ディスプレイにおけるフレームメモリ、入出力部など）にバッファメモリを配置する必要がある。近年、入力される画像データを処理して出力するプリンタやディスプレイ（又はその他の情報処理装置）などの画像処理装置において、出力画像は高フレームレート化、高精細化などが進んでいる。出力画像の高フレームレート化、高精細化によって、単位時間あたりに出力するデータ量（スループット）が増えてくるため、バッファメモリの容量も大型化している。
【０００３】
バッファメモリの容量の大型化を抑制するためには出力部のスループットに近いデータ転送速度を有する接続／通信方法（例えば特許文献１および特許文献２）を用いてチップ間のデータ転送をより高速にすればよい。
【０００４】
特許文献１に開示された方法は、高速シリアルバスであるＰＣＩ−Ｅｘｐｒｅｓｓで接続されたデータ処理部と画像メモリアクセス処理部の間でのデータ転送を行うものである。特許文献１では、データ処理部からメモリへの読み出し要求の代わりに画像メモリアクセス部がメモリから読み出しておいた画像データを書き込み処理で転送させるコマンドを送信することでデータ転送を行っている。
【０００５】
また、特許文献２に開示された方法は、高速シリアルバスであるＩＥＥＥ１３９４で規定されているアイソクロナス転送を用いて転送を行えるようにデータ転送のサイズを設定している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１１２４１３
【特許文献２】特開平１１−１８８９５３
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１記載の方法では、データ転送要求から実際にデータ処理部がデータを受け取り始めるまでの待ち時間（レイテンシ）を考慮する必要がある。
【０００８】
特許文献２に記載の方法では、データ出力部のバッファ状況をモニターする方法が無いため、ある程度のバッファ量を確保する必要がある。また、転送間隔が比較的大きい転送方式ではため、データ転送単位が比較的大きくなり、バッファサイズを小さくできないこともある。
【０００９】
本発明は以上の問題を鑑み、リアルタイムに出力するデータのサイズが大きくなっても転送されるデータを保持するバッファ量の増大を抑えることができる情報処理装置、情報処理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を達成するために、本発明に係る情報処理装置は、バッファと、前記バッファに保持するデータを出力デバイスに出力する出力手段と、前記出力手段のバッファのサイズに相当する量のデータを転送する第１モードで前記メモリの保持するデータを前記出力手段のバッファに転送した後に、前記出力手段のバッファのサイズより小さい量のデータを複数回転送する第２モードで前記メモリの保持するデータを前記出力手段のバッファに転送する転送手段と、を有し、前記転送手段の第２モードでは、前記出力手段が前記出力デバイスへデータを出力する出力レートと前記転送手段が１回の転送処理で転送するデータ量とに基づいた転送間隔で転送し、前記バッファに保持されているデータ量が第１設定量を超えた時間又は前記バッファに保持されているデータ量が第２設定量を下回った時間が所定の時間を超えた場合に前記転送間隔を変更して転送することを特徴とする。
【発明の効果】
【００１１】
本発明を用いることで、リアルタイムにデータを転送する転送効率を向上させ、データ出力部に配置するバッファの容量を小さくすることが可能となる。
【図面の簡単な説明】
【００１２】
【図１】プリンタシステムの概略図である。
【図２】データ制御部の主要な構成を示すブロック図である。
【図３】画像データ出力部の主要な構成を示すブロック図である。
【図４】印刷動作と信号の関係を示す図である。
【図５】エンジンインターフェースに関わる信号のタイミングを示す図である。
【図６】時間管理部の主要な構成を示すブロック図である。
【図７】カウンタの状態遷移図である。
【図８】ＷＲＤＭＡＣの状態遷移図である。
【図９】印刷動作に関する各種信号のタイミングを示すシーケンスチャートである。
【図１０】実施形態１で１ライン分の画像データを転送する際のエンジンバッファの保持するデータ量の推移を示すグラフである。
【図１１】データ制御部の主要な構成を示すブロック図である。
【図１２】画像データ出力部の主要な構成を示すブロック図である。
【図１３】時間管理部の構成を示すブロック図である。
【図１４】画像データ出力部とデータ制御部の扱う信号のタイミングを示すタイミングチャートである。
【図１５】カウンタの状態遷移図である。
【図１６】実施形態２で１ライン分の画像データを転送する際のエンジンバッファの保持するデータ量の推移を示すグラフである。
【図１７】モニター部の状態遷移図である。
【図１８】出力インターフェースの概略を示すブロック図である。
【図１９】時間管理部の構成を示すブロック図である。
【発明を実施するための形態】
【００１３】
＜実施形態１＞
本発明の一実施形態である実施形態１の情報処理装置を説明する。実施形態１の情報処理装置（プリンタ）の全体概略ブロック図を図１に示す。
【００１４】
図１にて、１は図示されていないホストコンピューターから印刷データを受け取り、保持するデータ制御部（制御回路）である。２はホストコンピューターとの通信を行うホストインターフェースである。３はプリンタ全体を制御するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算部である。４はＣＰＵを介さずにダイレクトメモリアクセス（ＤＭＡ）によってデータ転送を行うデータ転送部（ＤＭＡＣ部）である。５はデータ転送部（ＤＭＡＣ部）４で用いられる転送バッファであり、６はデータ転送部（ＤＭＡＣ部）４のデータ転送を起動する時間管理部である。７はメモリ制御部であり、８はメモリ制御部にて制御される外付けのメモリデバイスである。
【００１５】
９はバス接続に用いられるインターフェース（チップ間バス）である。１０は実際に印刷を行う画像データ出力部（出力回路）である。１１は画像データ出力部１０のチップ間のバス接続に用いられるチップ間インターフェース部である。１２は不図示の印刷エンジンに画像データを出力するエンジンインターフェースであり、１３はエンジンインターフェース１２のバッファサイズやエンジンの印刷速度などのエンジン固有データを保持する固有データ保持部である。
【００１６】
図２は図１に示したデータ制御部１の構成の一部の詳細を示すブロック図である。２１はメモリ８から転送バッファ５にデータを読み出してくるＲＤＤＭＡＣ（Ｒｅａｄ  ＤＭＡＣ）、２２は転送バッファ５から画像データ出力部１０にデータを出力するＷＲＤＭＡＣ（Ｗｒｉｔｅ  ＤＭＡＣ）である。それ以外の構成は図１前述したとおりなので、図１と同じ符号を付すと共にその説明は省略する。
【００１７】
一方、図３は図１に示した画像データ出力部の構成の一部の詳細を示すブロック図である。３１はエンジンインターフェース１２におけるチップ内部のバスインターフェース、３２はエンジンバッファ、３３は出力インターフェース部である。
【００１８】
図１に示す情報処理装置の概略動作を説明する。図９は図１に示す情報処理装置による印刷エンジン（出力デバイス）へのデータ転送処理に関するシーケンス図である。
【００１９】
ホストコンピューター（不図示）からの印刷要求とともに印刷データをホストインターフェース２経由でデータ制御部１が受け取ると、データ制御部１は受け取った印刷データに含まれる印刷対象の画像データを、メモリ制御部７を介してメモリ８に格納する。（図９には不図示。）
【００２０】
そして、演算部３はチップ間インターフェース９および１１を介して画像データ出力部１０の固有データ保持部１３にアクセスし、エンジンインターフェース１２のバッファ量や画像出力レートといった固有情報を取得する。演算部３は取得したエンジンインターフェース１２のバッファ量に基づいて、画像データの初期転送（データ制御部が印刷指示をする前にエンジンバッファ３２をフル状態にするためのデータ転送）で転送するデータ量（バッファ３２をフル状態にするだけのデータ量）を決定する。そして、演算部３は印刷対象のデータのうちバッファ３２をフル状態にするデータ量分をＤＭＡ部４に転送させる。なお、バッファ３２は一杯の状態でバッファフル信号をアサートするが、バッファフル信号はほぼ一杯の状態でアサートするようにしてもよい。
【００２１】
本実施形態では第１モードにおいてバッファのサイズに相当するデータを転送する初期転送を実施した後に、第２モードでバッファのサイズより小さい量のデータを複数回転送する本転送を実施する。なお、初期転送では予めバッファをほぼ一杯にする所定量を設定しておき、所定量のデータを転送するようにしてもよい。
【００２２】
演算部３は転送間隔Ｃ（詳細は後述）を取得し、時間管理部６の有するレジスタに設定する。初期転送および転送間隔Ｃの設定を行った後、演算部３はエンジンインターフェース１２に対して印刷開始を指示するための印刷指示を出力する。エンジンインターフェース１２は印刷指示を受けて印刷エンジンを起動させる。（転送間隔についての詳細は後述する。）
【００２３】
印刷エンジンは、印字部が紙送り方向について印刷対象のページの印刷領域に達した場合にＰＴＯＰ信号を出力し、印字部が走査方向について印字開始をする位置に達した際にＢＤ信号を出力する。（印字動作についての詳細は後述する。）
【００２４】
そして、印字部が画像データの示す印字位置に達し出力インターフェース部３３がデータ出力を開始すると、出力インターフェース部３３は出力開始信号（図５のＳｔａｒｔＰａｇｅ）をデータ制御部１の時間管理部６へ出力する。
【００２５】
さらに、印刷動作を開始する前の初期転送においてエンジンバッファ３２へ転送され、エンジンバッファ３２に保持されていた画像データから出力インターフェース部３３が出力を開始する。
【００２６】
出力開始信号がデータ制御部に通知されると、データ制御部１は取得した出力間隔に基づいて、画像データ（初期転送で送った画像データの残り）を画像データ出力部１０へ本転送する。（本転送の制御について詳細は後述する。）そして、画像データ出力部１０は転送中のページの画像データの最終画素を転送すると、転送終了をデータ制御部１に通知する。さらに、印刷データに次のページがあれば、次のページも同様に初期転送を行ってから転送間隔を取得し、出力開始通知に基づいて転送間隔に基づいて転送する。
【００２７】
図９のシーケンス図の示すシステムでは、１ページ目の印刷実行時の任意のタイミングで次のページの印刷指示を出力可能である。なお、次ページの印刷指示は印刷エンジンの仕様や印刷システムの仕様に合わせればよい。
【００２８】
［転送間隔］
次に、演算部３が転送間隔Ｃを取得する処理について説明する。
【００２９】
演算部３はＤＭＡ部４の１回のデータ転送サイズと先に固有データ保持部１３にアクセスを行い得られた画像データ出力レートおよび、時間管理部６にて管理される時間解像度からデータ転送間隔を取得する。データ制御部１から画像出力を行わないブランキング期間を含めた画像出力レート（Ｐｉｘ／ｎｓ）をＤＯ、１Ｂｙｔｅあたりの画像数をＮ（Ｐｉｘ／Ｂｙｔｅ）、１回のデータ転送量をＭ（Ｂｙｔｅ）、時間管理部６の時間管理部クロックの周期をＦ（ｎｓ）、転送間隔（初期カウント値）をＣとした場合、計算式は以下のようになる。
Ｃ  ＝  （Ｍ＊Ｎ／ＤＯ）／Ｆ
なお、転送間隔Ｃは複数のＤＯ，Ｎ，Ｍ，Ｆに基づいて、予め計算された転送間隔Ｃをメモリ８にルックアップテーブルとして格納させておき、演算部３がこのルックアップテーブルを参照して転送間隔Ｃを取得するように構成してもよい。また、１回のデータ転送量Ｍは予めＤＭＡＣ部４に設定されており、データ転送量ＭはＷＲＤＭＡＣの有するＤＭＡバッファ（不図示）のサイズと整数の比の関係となる。また、画像出力レートは外部デバイスの性能を示す値を、予め固有データ保持部が外部デバイスから取得している値の１つである。
【００３０】
以上の式のような転送間隔Ｃで転送することにより、エンジンインターフェース１２のデータ出力のリアルタイム性を維持したまま、ＤＭＡ部４によるデータ転送レートとエンジンインターフェース１２の出力レートとを近づけることができる。
【００３１】
［印刷エンジン］
次に印刷エンジンによる印字動作と印刷エンジンが画像データ出力部１０へ出力する信号について説明する。
【００３２】
印刷は図４に示す印刷領域と記された部分について、水平印刷方向について上流から下流まで印刷する（１ラインを印刷する）と、紙送り方向に記録媒体を送って再び水平印刷方向について上流から下流まで印刷する。これを繰り返すことで垂直印刷方向と水平印刷方向について上流側のスミから順に印刷され垂直印刷方向と水平印刷方向について下流側のスミまで印刷する。
【００３３】
印刷動作が行われる際に、エンジンインターフェース１２に関するタイミング信号を図５に示す。まず、タイミング信号として印刷エンジン（不図示）から、紙送り方向について印刷用紙の始まり（印刷領域の垂直印刷方向の最上流）が印字部に到達することを示すＰＴＯＰ信号（ＰＡＧＥ  ＴＯＰ信号）が入力される。次に、印刷エンジン（不図示）から、印字部が水平方向に走査を開始し、印字部が印刷領域の開始箇所（印刷領域の水平印刷方向の最上流）に到達することを示すＢＤ信号（ＢＥＡＭ  ＤＥＴＥＣＴ信号）が入力される。ＢＤ信号は印字部が印刷領域の１ラインの印刷を開始するタイミング毎に夫々入力されることになる。
【００３４】
これらの信号から実際に画像データ出力を行う有効期間を示す信号は図５に示すＶｖａｌｉｄ（垂直方向有効期間信号）、Ｈｖａｌｉｄ（水平方向有効期間信号）および有効画像出力期間を示すＶａｌｉｄ信号としてエンジンインターフェース１２内の出力インターフェース部３３により生成される。Ｖａｌｉｄ信号はＶｖａｌｉｄおよびＨｖａｌｉｄ信号のＡＮＤを取ることにより生成される。なお、図５では２ページ目の最初の信号（ＰＴＯＰ、ＢＤ）まで表記している。
【００３５】
［本転送の制御］
出力開始信号はデータ制御部１の時間管理部６に通知され、時間管理部６はこの信号をトリガーとして時間の計測を開始する。時間管理部６の構成は図６に示す。図６について、６１は演算部３が取得した転送周期（初期カウント値）Ｃを設定するためのレジスタ。６２はカウンタのカウント動作を有効にする信号を作成するＳＲフリップフロップ（Ｓｅｔ・Ｒｅｓｅｔ型フリップフロップ）。６３は初期値からカウントダウンする動作をするダウンカウンタであり、図７にダウンカウンタ６３の状態遷移図を示す。
【００３６】
ダウンカウンタ６３が初期状態の場合に、出力開始信号が時間管理部６のＳＲフリップフロップのＳｅｔ側に入力されると、ＳＲフリップフロップはＥＮ信号（ｅｎａｂｌｅ信号“１”）をダウンカウンタ６３へ出力し起動させる。ダウンカウンタは起動に伴って、初期カウント値Ｃ（転送周期）を初期値としてレジスタ６１からロードし、カウント状態遷移し一定周期毎にカウントダウンする。
【００３７】
カウント値が０となると転送タイミング信号を出力する。転送タイミング信号はダウンカウンタ６３自身のＬＯＡＤ信号としても機能し、ＤＡＴＡ（転送周期Ｃに相当する）を初期値として取り込み、再度カウントダウンを行う。
【００３８】
ＤＭＡ終了信号（転送終了信号）がＳＲフリップフロップ６２のＲｅｓｅｔ側に入力されると、ダウンカウンタ６２のＥＮ信号（ｅｎａｂｌｅ信号“０”）がクリアされることによってダウンカウンタ６３はカウント値がクリアされ初期状態に遷移する。ＤＭＡ終了信号はＤＭＡ部４から供給される。
【００３９】
ＤＭＡ部４は図２に示されるように、ＲＤＤＭＡＣ部２１とＷＲＤＭＡＣ部２２を備えている。このうちＲＤＤＭＡＣ部２１は一般的なＤＭＡＣ機能を有し、転送バッファ５に空き容量があればメモリ制御部７を介してメモリ８からデータを取り出して、取り出したデータを転送バッファ５に書き込む。一方、ＷＲＤＭＡＣ部２２は転送先アドレス、初期転送回数および総転送回数を保持するレジスタ（不図示）と転送回数をカウントするカウンタ（不図示）を有する。図８はＷＲＤＭＡＣ部２２の状態遷移図を示す。
【００４０】
図８おいて、初期状態にあるＷＲＤＭＡＣ２２は、演算部３からＤＭＡ転送指示を受け、ＷＲＤＭＡＣ２２の転送回数カウンタを０にクリアして初期転送状態に移行する。
【００４１】
初期転送状態では、転送回数カウンタの値と演算部３により設定される初期転送回数との比較を行い、転送回数カウンタの値が初期転送回数に達したら転送待ち状態に移行する。一方、転送回数カウンタの値が初期転送回数未満で、かつ、転送バッファ５が１回の転送に必要な量のデータ（１回の転送サイズ以上のデータに相当）を保持している場合にはデータ転送を実施し、転送回数カウンタの値を１だけカウントアップ（インクリメント）する。
【００４２】
転送待ち状態では、時間管理部６からの転送タイミング信号が１となるまで待ち、転送タイミング信号が１となったら転送バッファ５が１回のデータ転送に必要な量のデータを保持している場合にはデータ転送状態に移行する。この時、データ転送を実施すると同時に転送回数カウンタの値を１つカウントアップする。一方、転送バッファ５が１回のデータ転送に必要な量のデータを保持していない場合にはデータ待ち状態に移行する。
【００４３】
データ待ち状態では、バッファにデータ転送に必要な量のデータが蓄積されるのを待ち、必要な量のデータが蓄積された場合にはデータ転送を実施し、転送カウンタの値を１つカウントアップし、データ転送状態に移行する。なお、ＲＤＤＭＡＣ部２１は転送バッファ５に空きがあればメモリ８からデータを取り込んでくるので、ＷＲＤＭＡＣ部２２のようにデータ待ち状態がない。
【００４４】
ＷＲＤＭＡＣ部２２はデータ転送状態において、転送回数カウンタの値をチェックし、転送カウンタの値が総転送回数として設定された値に達した場合には、ＤＭＡ終了信号を出力して初期状態に戻る。一方、転送カウンタの値が総転送回数に達していない場合には次の転送に備えて転送待ち状態に移行する。
【００４５】
転送されたデータはチップ間インターフェース９，１１およびバスインターフェース３１を介してエンジンバッファ３２に保持される。
【００４６】
なお印刷を開始する前に、出力インターフェース部３３は出力画像の水平画素数および垂直方向ライン数をあらかじめ演算部３により設定されている。そして出力インターフェース部３３は、水平画素数×垂直方向のライン数から判断できる最終画素データを出力すると、１ページ分のデータの出力を終了したことを知らせるページ終了通知（図５のＥｎｄＰ）をデータ制御部１に出力する。
【００４７】
連続的にページ印刷を行う場合には、画像データ出力部１０より通知されるページ終了通知をトリガーとして、データ制御部１が２ページ目の初期転送を開始し、そして、１ページ目と同様に２ページ目のデータ出力開始通知を持ってからデータ転送を行う。
【００４８】
［エンジンバッファ］
以上のように本転送を行った場合、本転送において１ライン分のデータ転送する際の、エンジンバッファ３２のデータ量の推移は図１０に示すようになる。
【００４９】
図１０にて縦軸はエンジンバッファ３２が保持するデータ量（Ｐｉｘｅｌ単位）、横軸は時間（Ｐｉｘｅｌクロック単位）で示すもので、図では１ライン期間を１００００Ｐｉｘｅｌクロック、有効印刷期間を７２００Ｐｉｘｅｌクロックとし、時間０が有効印刷期間の開始タイミングとして図示してある。
【００５０】
１ライン期間における最大データ量（約３０００）と最小データ量（約１０００）とに基づくと、エンジンバッファ３２にその差分（おおよそ２０００）のデータ量を保持できるサイズがあれば良いことがわかる。このデータ量は図１０における１ライン期間の有効データ量（７２００）と比較した場合、１ライン分のデータ量より小さいサイズである。
【００５１】
従って、本実施形態によってバッファサイズを低減さあせることができる。
【００５２】
本実施形態では簡略化のため１色の画像データを転送して印刷する構成で説明したが、複数色の出力を行う場合でも、各色の画像データについて独立に転送処理を実施すればよい。
【００５３】
なお、画像データ出力部１０からデータ制御部１へ送信される出力開始通知および出力終了通知は、チップ間インターフェース９、１１によって通信されても良いし、他の専用端子（不図示）を用いた通信でも良い。またＷＲＤＭＡＣ部２２のレジスタには総転送回数の代わりに総転送サイズを格納させてもよい。その場合は、転送されるデータサイズをあらかじめダウンカウンタ６３に設定しておき、ＷＲＤＭＡＣがエンジンバッファ３２に向けたデータ転送を行うごとに、転送済みのデータ量をダウンカウンタから減らしていけばよい。また、初期転送をＤＭＡ部４に行わせているが演算部３がソフトウェア的に実行してもよい。
【００５４】
＜実施形態２＞
実施形態１と比較してエンジンバッファの容量をさらに削減した形態を実施形態２として説明する。
【００５５】
なお、本実施形態の概略構成は図１に示した構成と同様であり、他の図面についても実施形態１と機能的に変わらない構成については同じ番号を付すとともに、その説明を省略する。
【００５６】
図１１の１１１はＤＭＡのデータ転送を起動する時間管理部である。また、図１２の１１２はエンジンバッファ３２が保持しているデータ量をモニターし、あらかじめ設定されている基準値を所定の期間上回るあるいは下回った場合にデータ制御部１に対してその旨を通知するモニター部である。１１３は出力インターフェース部で、実施形態１の出力インターフェース部３３の機能に加えて水平方向の印刷開始タイミング（水平出力開始）または終了タイミング（水平出力終了）、転送間隔を補正するための情報（転送間隔補正）を通知する機能を有する。
【００５７】
図１３は時間管理部１１１の構成を示す。図１３において、１１３はＡＮＤ回路（論理積演算回路）、１１４はＯＲ回路（論理和演算回路）、１１５は画像出力の有効ライン期間を時間管理部のクロックで表した値を保持するレジスタである。１１６はダウンカウンタ６３の出力が“０”でないかどうかをチェックする比較回路であり、本実施形態ではダウンカウンタ６３の出力が“０”の場合に“０”を、ダウンカウンタ６３の出力が０でない場合に“１”を出力する。１１８はダウンカウンタ１１７の出力が０であるかどうかをチェックする比較回路であり、本実施形態ではダウンカウンタ６３の出力が“０”の場合に“１”を、ダウンタウンタ６３の出力が０でない場合に“０”を出力する。
【００５８】
図１４は、ＷＲＤＭＡＣ２２にデータ転送を指示する転送タイミング信号のタイミングチャートを示す。図１４では画像データ出力部１０からの各種通知信号はチップ間インターフェースを用いて通知されるものとしている。なお、図１４では複数ライン分の画像を出力する際の各信号のタイミングが分かるように次ラインの最初の部分までを記載してある。
【００５９】
図１４では上段（点線より上）には画像データ出力部１０に関する信号を、下段にはデータ制御部１に関する信号を示している。
【００６０】
画像出力クロックは画像データ出力部１０が受信するクロック信号であって、画像データ出力部１０の各構成は画像出力クロックに同期して動作する。また、ＢＤ信号は画像データ出力部１０が印刷エンジンから受信した信号であり、出力有効信号、出力開始通知および出力終了通知は画像データ出力部１０がデータ制御部１へ送信する信号である。
【００６１】
時間管理部クロックは時間管理部１１１が受信するクロック信号であって、時間管理部１１１の各構成は時間管理部クロックに同期して動作する。出力開始通知は画像データ出力部１０から受信する信号であり、カウント値、ＨＥＮ転送タイミング信号は時間管理部１１１が出力する信号である。
【００６２】
図１４に示すように、画像データ出力部１０は印刷エンジンからＢＤ信号を受け取ると、データ出力を開始したことをデータ制御部１へ通知するために出力開始通知を出力する。さらに、印刷エンジンに画像データを出力することを有効にする内部信号“出力有効信号”を作成し、画像データ出力を開始する。
【００６３】
出力有効信号は図５に示す有効画像出力期間を示す信号Ｖａｌｉｄであり、この信号は図１２における出力インターフェース部１１３内部で、出力インターフェース部１１３に印刷エンジン（不図示）から入力されるタイミング信号によってインターフェース部１１３内部のタイミング生成部（１２１）で生成され、同じくインターフェース部１１３内部に含まれる画像データ出力部（１２０）に供給される（図１８参照）。
【００６４】
画像データ出力部１０はあらかじめ、自身が出力すべき１ライン分の画像データ数（１ライン分の画素の個数に対応する）をデータ制御部１により設定されている。そこで、画像データ出力部１０は出力有効信号が‘１（有効）’である期間をカウントし、カウント値が設定されている１ライン分の画像データ数を示す値に達したならば出力有効信号を‘０（無効）’とすると共に、出力終了通知をデータ制御部１に対して出力する。
【００６５】
次に、データ制御部１で使用される水平有効期間信号（図中、ＨＥＮ：Ｈｏｒｉｚａｎｔａｌ  ＥＮａｂｌｅ）を生成する動作について説明する。画像データ出力部１０からの通知はチップ間インターフェース９，１１経由で時間管理部１１１に伝達され、その際、時間管理部１１１の時間管理部クロックについて１パルス幅の信号として入力される。図１４について時間管理部１１１のＳＲフリップフロップ６２のＳｅｔ側に出力開始通知が入力されているので（ＤＭＡ終了信号は入力されていない）、図１３のＳＲフリップフロップ６２出力は‘１’となる。
【００６６】
なお、予め１ライン期間を示す設定値が演算部３によりレジスタ１１５に格納されており、出力開始通知が通知された（信号が“１”にアサートされた）次の周期（時間管理部クロックにおける周期）でレジスタ１１５は保持している設定値を初期状態のダウンカウンタ６３にロードする（図１５の１５０１）。ダウンカウンタ６３に設定値がロードされると、ダウンカウンタは時間管理部クロックに同期してカウント値が０になるまでカウントダウンする（図１５の１５０２）。この時、ダウンカウンタ６３からの出力が“０”でないので、比較回路１１６は“１”を出力する。そして、ダウンカウンタ６３のカウント値が０となった場合に比較回路１１６の出力は‘０’となる。比較回路１１６の出力は水平有効期間信号（ＨＥＮ）としてＡＮＤ回路１１３に入力される。したがって、有効ライン期間設定値の示す期間の間、比較回路１１６の出力が‘１’となる。
【００６７】
ここで、演算部３は画像データの１ライン分を出力インターフェース１１３が出力する期間を示す値を有効ライン期間設定値として時間管理部１１１に設定する。有効ライン期間設定値は出力インターフェース１１３の画像出力クロックと時間管理部１１１の時間管理部クロックとの比と、出力される画像データの水平方向の画素数とに基づいて一意に決定される。また、ＡＮＤ回路１１３のもう一方の入力（ＳＲフリップフロップ６２からの入力）は出力開始通知が時間管理部１１１に入力されてから（ＤＭＡ転送終了が入力されるまで）‘１’となる。ＳＲフリップフロップ６２からの入力が‘１’である場合、ＨＥＮが‘１’である間は後段のダウンカウンタ１１７のＥＮ（Ｅｎａｂｌｅ）側の入力が‘１’となる。
【００６８】
ダウンカウンタ１１７へのＥＮ信号の入力が‘１’となる期間で、比較回路１１８は転送間隔Ｃとして設定されたタイミング毎（ダウンカウンタ１１７の出力が“０”になる度）に転送タイミング信号を出力する（図１５の１５０４）。また、ダウンカウンタ１１７はＥＮ側のＨＥＮの入力が‘０’である場合はカウント動作を停止する（第３モード）。図１３の例では水平出力終了通知は時間管理部１１１における水平有効期間信号（ＨＥＮ）の終了時（‘１’から‘０’に変わった時点）として記載している。
【００６９】
ここで、転送タイミング信号はライン同期を行わない。すなわち、画像データ出力部が１ライン分のデータを転送しているであろうとデータ制御部が推察している間は転送タイミング信号に基づいて所定間隔毎にデータ転送を行うが、画像データ出力部が１ライン分のデータを転送し終わったとデータ制御部が推察すると転送タイミング信号による制御を停止する。これは印字部が１ライン分のデータを出力した際に水平印刷方向の下流に位置しており、次のラインのデータを出力するために印字部を水平印刷方向の上流に戻す間は画像データ出力部１０の出力するデータを出力しないためである。１ライン間のデータ転送は次のＢＤ信号が発信されるまで中断する。これにより、ライン間の間隔を時間管理部１１１で管理する間隔（後述する転送間隔ＣＲ）よりも長くしている。なお、後述するようにダウンカウンタ１１７のＬＯＡＤ側の入力がアサートされている場合は（カウンタの値が０でなくＬＯＡＤ側の入力が‘１’）、カウンタに初期値をロードして次のクロックからカウントダウンする（図１５の１５０３）。
【００７０】
演算部３は水平方向の有効画像出力期間信号（ＨＥＮ）を出力する期間（転送間隔）をレジスタ１１５に設定する。ＨＥＮ信号を出力する期間を示す設定値は、エンジンインターフェース１１３のクロックと時間管理部１１１のクロックとの比と、画像出力部から供給される水平出力開始通知から出力画像の水平方向の画素数とから決定される。なお、図１９に示すように、レジスタ１１５にＨＥＮ信号を出力する期間を設定する代わりに、出力インターフェース１１３から供給される水平出力開始通知と水平出力終了通知を用いてＨＥＮ信号を構成しても良い。
【００７１】
また、時間管理部１１１に設定される転送間隔ＣＲは以下に示す式で計算される。ブランキング期間を含めない有効期間の画像出力レート（Ｐｉｘ／ｎｓ）をＤＯＲ。１Ｂｙｔｅあたりの画像数Ｎ（Ｐｉｘ／Ｂｙｔｅ）。１回のデータ転送量をＭ（Ｂｙｔｅ）。時間管理部１１１の時間管理部クロックの周期をＦ（ｎｓ）。転送間隔のカウント値をＣＲとして以下に示される。
ＣＲ  ＝  （Ｍ＊Ｎ／ＤＯＲ）／Ｆ
【００７２】
次に、転送間隔補正通知の生成と補正の実行についての説明を行う。
【００７３】
実施形態２において、出力インターフェース部１１３の出力レートとデータ制御部１のクロックレート（時間管理部１１１のクロック周期およびシステムクロックの周期）から決まる出力レートとの整合性を取ることが困難な場合がある。データ制御部１の転送レートが画像データ主力部のエンジンの出力レートよりも低かった場合には、エンジンバッファ３２の保持するデータ量は図１６に示すグラフのように遷移する。
【００７４】
図１６は図１０と同様に、縦軸にエンジンバッファ３２が保持するデータ量（Ｐｉｘｅｌ単位）を示し、横軸は時間（Ｐｉｘｅｌクロック単位）を示すものである。図１６では出力インターフェース部１１３の出力レートの方がデータ制御部１から出力インターフェース部１１３へ出力する出力レートより大きい場合を示してある。
【００７５】
出力インターフェース部１１３の出力レートとデータ制御部１の出力インターフェース部へのデータ出力レート（転送レート）が一致しない場合、図１６に示すように、エンジンバッファ３２の保持するデータ量は徐々に少なくなり、１ページ分の画像データの転送が完了する前にエンジンバッファ３２のデータ量が０となり、印刷エンジンによる印刷に不都合が生じることがある。このような事態を抑制するモニター部１１２はエンジンバッファ３２の保持するデータ量に応じて、本転送におけるエンジンインターフェース１２の転送間隔を補正するために、以下に説明する処理をする。
【００７６】
図１７はモニター部１１２の動作を示す状態遷移図である。モニター部１１２は、エンジンバッファ３２の保持するデータ量に応じて転送間隔を補正するために、上限値（第１設定量）と、下限値（第２設定量）と、上限値を連続的に超過してよい期間を示す許容超過時間と、下限値を連続的に下回ってよい期間を示す許容未達時間と、を格納する補正条件設定レジスタ（不図示）を有する。さらにモニター部１１２は、上限値を超過した時間又は下限値に達しない時間をカウントするカウンタ（不図示）を有する。
【００７７】
次に、エンジンバッファ３２の保持するデータ量が下限値を下回った場合についてのモニター部１１２の処理を説明する。図１２において、モニター部１１２は「初期状態」において内部のカウンタを０にクリアし、エンジンバッファ３２のデータ量をチェックしている。エンジンバッファ３２のデータ量が補正条件設定レジスタの格納している下限値を下回ったならば、カウンタの値に１を加え、状態「下限以下」に移行する。
【００７８】
この状態では毎サイクル、エンジンバッファ３２のデータ量のチェックを行い、データ量が増加し、下限値を上回ったらカウンタをクリアして「初期状態」に戻る。一方、エンジンバッファ３２のデータ量が下限値を下回る状態が続きカウンタの値の示す時間が許容未達時間に達したら、モニター部１１２は時間管理部１１１へ「転送周期減少要求信号」を出力し、「間隔減少要求」状態に移行する。カウンタ値の示す時間が許容未達時間に達しない場合には「下限以下」状態を維持し、カウンタの値を１増加させる。モニター部１１２は「間隔減少要求」状態で、データ量が下限値以上になれば「初期状態」に移行する。
【００７９】
エンジンバッファ３２のデータ量が上限値を上回る場合についても同様である。モニター部１１２は、「初期状態」でデータ量が上限値を上回っていれば、「上限以上状態」に遷移しカウンタをカウントアップし、「上限以上状態」が続きカウント値の示す時間が許容超過時間に達すると時間管理部１１１へ「転送周期増加要求」を出力する。
【００８０】
データ制御部１は画像データ出力部１０からの補正信号について、補正信号を演算部３への割り込み処理としてソフトウェア的に処理し、現在の転送間隔設定を変更するようにしてもよい。
【００８１】
図１３に示す構成では転送周期減少要求（‘１’で要求有り、‘０’で要求無し）をダウンカウンタ１１７のＣＬＲ信号（駆動信号）として機能させている。転送周期減少要求が入力されるとダウンカウンタ１１７は現在のカウント値によらず“０”を出力することで比較回路１１８に転送タイミング信号を出力させる。そしてダウンカウンタ１１７は、次のサイクルで間隔設定値をレジスタ６１からロードし、ダウンカウント動作を開始する。一方、転送周期増加要求（‘１’で要求有り、‘０’で要求無し）がＯＲ回路１１４に入力された場合は、カウント値を設定されている値に戻してからダウンカウント動作を再開する。このような構成とすることで、エンジンバッファ３２の要求に迅速に対応させることができる。
【００８２】
なお、本実施形態における補正条件設定レジスタは上限値、下限値のみ格納するようにしてもよい。また、転送間隔を算出する構成について説明したが、予め種々の条件で算出した転送間隔をルックアップテーブル（ＬＵＴ）としてメモリ８に格納し、演算部３が取得したＬＵＴを参照することで転送間隔を取得するように構成してもよい。
【００８３】
なお、上述の実施形態では印字部の詳細な説明を省略しているが、本発明はインクを扱うプリンタやトナーを扱うプリンタにも適用できる。インクを扱うプリンタでは印字部はインクを吐出するプリントヘッダであり、トナーを扱うプリンタでは感光ドラムを走査する露光部である（ここで露光においてはレーザなどが走査するので、ＢＤ信号などに関わるタイミング走査されるレーザの位置に関係する。）。
【００８４】
また、上述の実施形態の説明では初期転送前に演算部３がエンジンバッファ３２のバッファ量を取得し、取得したバッファ量に基づいてデータを転送しているが、エンジンバッファのフル信号が演算部３に通知される構成であれば、バッファ量を取得せずに、フル信号が通知されるまでデータを転送するようにしてもよい。この構成の場合は、フル信号の通知に応じてデータ制御部３の演算部は印刷開始指示を発行し印刷エンジンを起動させればよい。
【００８５】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８６】
１  データ制御部
２  ホストインターフェース
３  ＣＰＵ
４  ＤＭＡ部
５  ＤＭＡ転送バッファ
６  時間管理部
７  メモリ制御部
８  外付けメモリデバイス
９  チップ間インターフェース部
１０  画像データ出力部
【図１】
0005737871.tif 000002
【図２】
0005737871.tif 000003
【図３】
0005737871.tif 000004
【図４】
0005737871.tif 000005
【図５】
0005737871.tif 000006
【図６】
0005737871.tif 000007
【図７】
0005737871.tif 000008
【図８】
0005737871.tif 000009
【図９】
0005737871.tif 000010
【図１０】
0005737871.tif 000011
【図１１】
0005737871.tif 000012
【図１２】
0005737871.tif 000013
【図１３】
0005737871.tif 000014
【図１４】
0005737871.tif 000015
【図１５】
0005737871.tif 000016
【図１６】
0005737871.tif 000017
【図１７】
0005737871.tif 000018
【図１８】
0005737871.tif 000019
【図１９】
0005737871.tif 000020