(57)【要約】【課題】受け取った転送単位をそのままメモリに書き込む方式と比べて、全体データを保持するのに必要なメモリ容量を削減する。【解決手段】転送Ｉ／Ｆは、データ生成装置から転送されて来るフレームを受け取る。各フレームには、１ページの画像を分割したバンドと無効データとが含まれている。ＤＭＡＣは、システムにより設定されたディスクリプタに従い、各フレーム内のバンドを、画像データ領域２８に対して連続したアドレスで転送すると共に、各フレーム内の無効データは、同じ無効データ領域３０に転送する。【選択図】図３
2018049362.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
転送対象の全体データを複数に分割した分割データのサイズと、前記分割データを含んで転送元から順次転送されて来る転送単位のサイズと、の情報を取得する取得手段、
前記全体データのための記憶領域をメモリ内に確保する確保手段、
前記転送元から順次転送されて来る前記転送単位を設定された出力先に出力する出力手段に対して、前記転送単位のうち前記分割データの出力先を前記記憶領域に設定し、前記転送単位のうち前記分割データ以外の無効データの出力先を前記記憶領域とは異なる無効データ受入部に設定する設定手段、
として機能させるためのプログラム。
【請求項２】
前記設定手段は、転送単位の前記分割データの出力先とする前記記憶領域内のアドレスを、その転送単位の前に転送されて来る転送単位内の前記分割データが書き込まれる前記記憶領域内のアドレス範囲の次のアドレスに設定する、ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記無効データ受入部は、前記メモリとは異なるハードウエア回路であることを特徴とする請求項１又は２に記載のプログラム。
【請求項４】
前記無効データ受入部は、前記メモリ内の前記記憶領域とは異なるアドレス範囲の領域であることを特徴とする請求項１又は２に記載のプログラム。
【請求項５】
前記設定手段は、前記全体データのうちの最初の前記分割データを含む転送単位から最後の１つ前の分割データを含む転送単位までの各転送単位については、転送単位の前記出力先を、その転送単位の前に転送されてきた転送単位内の前記無効データの前記メモリ内での先頭アドレスに設定し、前記全体データのうちの最後の前記分割データを含む転送単位については、その分割データの出力先を、その転送単位の前に転送されてきた転送単位内の前記無効データの前記メモリ内での先頭アドレスに設定すると共に、その転送単位内の前記無効データの出力先を前記無効データ受入部に設定する、ことを特徴とする請求項１〜４のいずれか１項に記載のプログラム。
【請求項６】
転送対象の全体データを複数に分割した分割データのサイズと、前記分割データを含んで転送元から順次転送されて来る転送単位のサイズと、の情報を取得する取得手段と、
前記全体データのための記憶領域をメモリ内に確保する確保手段と、
前記転送元から順次転送されて来る前記転送単位を設定された出力先に出力する出力手段に対して、前記転送単位のうち前記分割データの出力先を前記記憶領域に設定し、前記転送単位のうち前記分割データ以外の無効データの出力先を前記記憶領域とは異なる無効データ受入部に設定する設定手段と、
を含む情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
従来、画像形成システム内のデータ発生源（スキャナ等）からデータ利用側（プリンタ制御部等）への画像データの転送には、例えばPCI Express等のインターフェースを用い、指定したバンドサイズ単位ごとに転送を行う転送コントローラを用いている。転送コントローラには、画像形成システムのメーカーが設計したカスタム品を用いている。
【０００３】
一方、コスト削減のために、画像形成システムのデータ転送機構に汎用品を用いる必要性が高まっている。例えば、モバイル機器内のカメラやディスプレイとの間のデータ転送インターフェースの規格であるＭＩＰＩ（Mobile Industry Processor Interface）は広く普及しており、ＭＩＰＩ準拠のインターフェスコントローラを採用することで、カスタム品を用いる場合よりも大幅なコスト削減が可能になる。
【０００４】
ＭＩＰＩはカメラで撮像した静止画や動画、及びディスプレイに表示する画像のデータ転送のためのインターフェース規格であり、転送を動画や静止画のフレームサイズ単位で行う。動画等のフレームサイズは、印刷分野でのページの画素数とはまったく独立したものである。どの用紙サイズであれどの解像度であれ、１ページの画素数と、動画等のフレームサイズの画素数とは、実質的に互いに素な関係にある。１ページの画像を複数のバンドに分割したとしても同様である。１バンドのサイズは、転送されて来る画像データを利用する装置（例えばプリントエンジン）やその他のシステムの要件によって決まる等の理由から、１バンドが１フレームにぴったり収まることは通常ない。したがって、１バンドの画像データをＭＩＰＩの１フレームで転送する場合、各フレームには、画像データ以外に無効データが含まれることになる。
【０００５】
特許文献１には、スキャナによりライン単位で読み取られた画像データをラインバッファメモリにＤＭＡ転送するファクシミリ装置が開示される。この装置は、ライン単位の転送開始アドレスを設定する１ライン目スタートアドレスラッチと２ライン目スタートアドレスラッチを備えて、スキャナからラインバッファメモリへのＤＭＡ転送を２ライン毎に制御する。先頭無効バイト数を設定する無効バイト数ラッチと、有効データ転送バイト数を設定する転送バイト数ラッチはそれぞれ２ラインで共通化している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平８−１６３３３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
全体データ（例えば１ページの画像データ）を複数の分割データ（例えばバンド）に分割して転送する場合、分割データのサイズを１回あたりの転送単位（例えばフレーム）のサイズに一致させられない場合がある。この場合、転送単位には分割データ以外の無効データが含まれることになる。転送を受ける装置は、全体データを構成するすべての分割データを取得できるまで、転送単位を繰り返し受信してメモリに書き込んでいく。このとき、転送単位をそのままメモリに書き込む方式では、後の利用のために全体データをメモリに保持させるためには、メモリには各転送単位内の無効データも含む記憶領域を確保する必要があった。
【０００８】
本発明は、受け取った転送単位をそのままメモリに書き込む方式と比べて、全体データを保持するのに必要なメモリ容量を削減することを目的とする。
【課題を解決するための手段】
【０００９】
請求項１に係る発明は、コンピュータを、転送対象の全体データを複数に分割した分割データのサイズと、前記分割データを含んで転送元から順次転送されて来る転送単位のサイズと、の情報を取得する取得手段、前記全体データのための記憶領域をメモリ内に確保する確保手段、前記転送元から順次転送されて来る前記転送単位を設定された出力先に出力する出力手段に対して、前記転送単位のうち前記分割データの出力先を前記記憶領域に設定し、前記転送単位のうち前記分割データ以外の無効データの出力先を前記記憶領域とは異なる無効データ受入部に設定する設定手段、として機能させるためのプログラムである。
【００１０】
請求項２に係る発明は、前記設定手段は、転送単位の前記分割データの出力先とする前記記憶領域内のアドレスを、その転送単位の前に転送されて来る転送単位内の前記分割データが書き込まれる前記記憶領域内のアドレス範囲の次のアドレスに設定する、ことを特徴とする請求項１に記載のプログラムである。
【００１１】
請求項３に係る発明は、前記無効データ受入部は、前記メモリとは異なるハードウエア回路であることを特徴とする請求項１又は２に記載のプログラムである。
【００１２】
請求項４に係る発明は、前記無効データ受入部は、前記メモリ内の前記記憶領域とは異なるアドレス範囲の領域であることを特徴とする請求項１又は２に記載のプログラムである。
【００１３】
請求項５に係る発明は、前記設定手段は、前記全体データのうちの最初の前記分割データを含む転送単位から最後の１つ前の分割データを含む転送単位までの各転送単位については、転送単位の前記出力先を、その転送単位の前に転送されてきた転送単位内の前記無効データの前記メモリ内での先頭アドレスに設定し、前記全体データのうちの最後の前記分割データを含む転送単位については、その分割データの出力先を、その転送単位の前に転送されてきた転送単位内の前記無効データの前記メモリ内での先頭アドレスに設定すると共に、その転送単位内の前記無効データの出力先を前記無効データ受入部に設定する、ことを特徴とする請求項１〜４のいずれか１項に記載のプログラムである。
【００１４】
請求項６に係る発明は、転送対象の全体データを複数に分割した分割データのサイズと、前記分割データを含んで転送元から順次転送されて来る転送単位のサイズと、の情報を取得する取得手段と、前記全体データのための記憶領域をメモリ内に確保する確保手段と、前記転送元から順次転送されて来る前記転送単位を設定された出力先に出力する出力手段に対して、前記転送単位のうち前記分割データの出力先を前記記憶領域に設定し、前記転送単位のうち前記分割データ以外の無効データの出力先を前記記憶領域とは異なる無効データ受入部に設定する設定手段と、を含む情報処理装置である。
【発明の効果】
【００１５】
請求項１又は６に係る発明によれば、受け取った転送単位をそのままメモリに書き込む方式と比べて、全体データを保持するのに必要なメモリ容量を削減することができる。
【００１６】
請求項２に係る発明によれば、無効データを含む転送単位を記憶領域に書き込む方式と比べて、記憶領域内の全体データを取り扱うプログラムを、メモリ上の全体データが無効データにより分断されていることを想定したものとしなくてよい。
【００１７】
請求項３に係る発明によれば、無効データをメモリ上に書き込む方式と比べて、必要なメモリ容量を少なくすることができる。
【００１８】
請求項４に係る発明によれば、無効データを受け入れる回路が存在しない場合でも、無効データを分割データとは別けて出力することができる。
【００１９】
請求項５に係る発明によれば、全体データを分割したすべての分割データを転送するすべての転送単位について分割データと無効データを別々の出力先に出力する場合と比べて、出力先の切り替えが少ない分だけ処理を高速化できる。
【図面の簡単な説明】
【００２０】
【図１】実施形態のシステム構成の一例を示す図である。
【図２】比較例のＤＭＡ転送方式でのメモリ上の画像データの記憶状況を示す図である。
【図３】実施形態のＤＭＡ転送方式でのメモリ上の画像データの記憶状況を示す図である。
【図４】システムが実行する処理手順の例を示す図である。
【図５】ＤＭＡＣが参照するディスクリプタテーブルの例を示す図である。
【図６】変形例のＤＭＡ転送方式を説明するための図である。
【図７】ＤＭＡＣが参照するディスクリプタテーブルの別の例を示す図である。
【発明を実施するための形態】
【００２１】
図１を参照して、本実施形態のシステム構成の一例を説明する。このシステムは、データ生成装置１０とデータ利用装置２０とを含む。
【００２２】
データ生成装置１０は、画像データを生成する装置である。一例として、データ生成装置１０は、例えば、デジタル印刷業界で定められたサイズ及び解像度の画像データを生成する装置である。この場合、データ生成装置１０は、例えばＡ４、Ａ３、Ｂ４、レターサイズ等の複数の用紙サイズと、２００、４００、６００ｄｐｉ等の複数の解像度とに対応したものであってよい。単体のスキャナ装置、複合機（プリンタ、スキャナ、コピー機、ファクシミリ等の機能を併せ持つ装置）に内蔵されるスキャナ機構、ページ記述言語で記述された印刷データをラスター画像に変換する装置、等がその一例である。
【００２３】
データ利用装置２０は、データ生成装置１０が生成した画像データを利用する装置である。データ利用装置２０が行う画像データの利用には、画像データの印刷、ファクシミリ回線を通じた送信、送信する電子メールへの添付、ネットワーク上のデータベースへの登録など様々な形態があり得る。データ利用装置２０は、それら利用形態のうちの１以上で画像データを利用した処理を行う機構を有する。
【００２４】
データ生成装置１０が生成した画像データは、あるデータ転送インターフェース規格（以下、転送規格と呼ぶ）に準拠した転送経路４０を介してデータ利用装置２０に転送される。データ生成装置１０のコントローラ１２に内蔵されたインターフェース回路（図示省略）と、データ利用装置２０の転送Ｉ／Ｆ（インターフェース回路）３４は、その転送規格に準拠した転送制御回路であり、前者から後者へ、転送経路４０経由で、その転送規格に従って画像データが転送される。この転送規格では、指定されたフレームサイズ（画像の縦横の画素数）の画像データを、指定されたフレームレート（１秒あたりに転送するフレーム数）で繰り返し転送する。この転送規格でのフレームサイズは、データ生成装置１０が生成する画像のサイズや解像度（例えば印刷業界で定められたもの）とは無関係に定められたものである。このような転送規格の一例として、例えばＭＩＰＩ（例えばそのうちのＣＳＩ：Camera Serial Interface）を用いてもよい。
【００２５】
図１では、データ生成装置１０がスキャナ装置として構成されている場合を例示している。このデータ生成装置１０は、コントローラ１２、スキャナ１４、メモリ１６を有する。
【００２６】
コントローラ１２は、データ生成装置１０の動作を制御する装置であり、例えばその制御のためのプログラムを実行するプロセッサを含んでいる。そのプログラムは、例えば図示省略したＲＯＭ（リードオンリーメモリ）や不揮発性メモリに記憶されている。
【００２７】
スキャナ１４は、原稿の面上の画像を光学的に読み取ることで、その画像を表す画像データを生成する。
【００２８】
メモリ１６は、コントローラ１２が制御プログラムの実行の際の作業領域として用いる一次記憶である。スキャンが行われる場合、メモリ１６内にバッファ領域が確保され、スキャナ１４が生成した画像データはそのバッファ領域に一時的に保持される。
【００２９】
またコントローラ１２は、ページメモリ領域に保持された画像データを上述の転送規格に従ってデータ利用装置２０側の転送Ｉ／Ｆ３４に転送するインターフェース回路を備える。
【００３０】
データ利用装置２０は、バスを介して相互接続されたＣＰＵ（中央演算装置）２２、ＲＯＭ２４、メモリ２６、転送Ｉ／Ｆ３４、ＤＭＡＣ３８を有している。
【００３１】
ＣＰＵ２２は、ＲＯＭ２４や図示省略した不揮発性メモリ等に記憶されている制御プログラムを実行することで、データ利用装置２０の動作を制御する。ＲＯＭ２４には、制御プログラムが記憶されている。メモリ２６は、ＣＰＵ２２が制御プログラムの実行の際の作業領域として用いる一次記憶である。ＣＰＵ２２は、データ生成装置１０から画像データの転送を受ける場合、その画像データを記憶するのに必要なサイズを持つ画像データ領域２８をメモリ２６内に確保する。またこのときＣＰＵ２２は、その転送のためにＤＭＡＣ３８が参照するディスクリプタテーブル３２をメモリ２６に書き込む。
【００３２】
転送Ｉ／Ｆ３４は、上述の転送規格に従ったデータ転送を行う転送制御回路である。転送Ｉ／Ｆ３４としては、例えば、ＭＩＰＩのＣＳＩに準拠した市販のインターフェースチップを用いればよい。
【００３３】
ＤＭＡＣ（Direct Memory Access Controller）３８は、ＣＰＵ２２からの指示に従い、転送Ｉ／Ｆ３４がデータ生成装置１０の転送インターフェースから受信したデータを、メモリ２６にＤＭＡ転送する。ＤＭＡＣ３８は、ディスクリプタテーブル３２を参照して、このＤＭＡ転送を行う。ディスクリプタテーブル３２を参照してＤＭＡ転送を行う機能は、一般的なＤＭＡＣ３８が通常持っている機能である。したがって、ＤＭＡＣ３８としてカスタム品を用意する必要はなく、通常の汎用品を用いればよい。
【００３４】
なお、転送Ｉ／Ｆ３４とＤＭＡＣ３８との間に、ＩＳＰ（イメージ・シグナル・プロセッサ）３６を設けてもよい。ＩＳＰ３６は、転送Ｉ／Ｆ３４が受信した画像データに対して、あらかじめ定められた画像処理を実行する。ＩＳＰを設ける場合、ＤＭＡＣ３８は、ＩＳＰ３６による画像処理後の画像データを画像データ領域２８に転送する。以下では、説明を完結するために、ＩＳＰ３６が含まれない装置構成を説明する。
【００３５】
さて、前述のようにデータ生成装置１０が生成する画像データ（例えばＡ４原稿１ページの画像）のサイズと、データ生成装置１０とデータ利用装置２０との間の画像データの転送経路４０の転送単位であるフレームのサイズとは、互いに独立に定められたものである。したがって、画像データ全体、あるいはその画像データをいくつかに分割した分割データが、フレームにぴったり収まる（すなわち画像データ又は分割データのサイズと、フレームのサイズが等しくなる）ことは、一般に期待できない。
【００３６】
例えば、データ生成装置１０が原稿ページの画像を読み取るスキャナ装置であり、転送経路４０がモバイル機器のカメラと制御システムとの間の画像の転送規格であるＭＩＰＩ（例えばそのうちのＣＳＩ）に準拠したものである場合を考える。この場合、例えばＡ４サイズのページのスキャン画像（例えば６００ｄｐｉ程度の解像度）は、ＭＩＰＩがサポートしているフレームサイズの１つであるフルＨＤ（１９２０×１０８０）のフレームには収まらない。例えば、Ａ４サイズの６００ｄｐｉの画像データは、現状のＭＩＰＩの仕様でサポートしている８Ｋ（７６８０×４３２０）のフレームに収まらず、１２００ｄｐｉの場合はなおさらである。そこで、Ａ４ページのスキャン画像を複数に分割して複数のフレームで転送することを考える。デジタル印刷技術ではページの画像を分割する場合、その画像を副走査方向に均等幅の複数の帯状領域（バンドと呼ばれる）に分割することが一般的である。１バンドはｍライン（主走査線）（ｍは正の整数）の幅を持つ（ただし、１ページの最終バンドは、余りの部分なのでライン数はｍ未満となる場合もある）。このようにバンドに含まれる画素数（ひいてはデータのバイト数）は１ラインの画素数×ｍであり、１バンドのライン数ｍを様々に調整したとしても、１ラインの画素数ごとにしか変化しないので、フレームのサイズにぴったり合わせることは一般的にできない。したがって、転送されるフレーム内には、どうしても画像データ以外の無効データが含まれることになる。また、バンドのライン数ｍは、データ利用装置２０で画像データを用いるプログラム（例えば印刷制御プログラム）の都合により決まるので、ライン数ｍの選択肢は限られており、フレーム中の無効データが最小となるライン数ｍを選ぶことができるとは限らない。いずれにしても、転送されるフレーム内には、ある程度の量の無効データが含まれることになる。
【００３７】
転送Ｉ／Ｆ３４がこのように無効データを含んだフレームをデータ生成装置１０から受け取った場合、何の工夫もしなければ、ＤＭＡＣ３８は、単純にそのフレームのデータをメモリ２６に転送していくことになる。この単純な方式でのメモリ２６への画像データの転送（書き込み）の様子を、本実施形態の方式に対する比較例として図２に示す。
【００３８】
図２の例では、１ページの画像データは、Ｎ個のバンドに分割されて転送される。各バンド１、２、・・・Ｎを転送する第１、第２、・・・第Ｎフレームには、それぞれ末尾に無効データが含まれる。転送Ｉ／Ｆ３４は、このように無効データを含むフレームを受信する。ＤＭＡＣ３８は、まず転送Ｉ／Ｆ３４が受信した第１フレームのデータを、ＣＰＵ２２（転送されて来る画像データを受け取るプログラム）が確保した画像データ領域２８の先頭のアドレスに対して、フレームサイズ分だけ転送する。次にＤＭＡＣ３８は転送Ｉ／Ｆ３４が受信した第２フレームのデータを、画像データ領域２８の第１フレームのデータの末尾の次のアドレスに対して転送する。同様の処理を、残りのフレームの分だけ繰り返す。これにより、画像データ領域２８には、１ページ分の画像データが保持された状態となる。
【００３９】
この比較例の方式では、画像データ領域２８には無効データも格納される。したがって、画像データ領域２８として、１ページの画像データのデータサイズ（例えばＲＧＢの各原色について１バイトのデータを割り当てる場合は、１ページの画素サイズ×３バイト）に、Ｎフレーム分の無効データのサイズを足した分のアドレス空間をメモリ２６内に確保する必要がある。
【００４０】
また、この方式では、画像データ領域２８内の個々のバンドの画像データは、間に無効データの領域を挟んだ飛び飛びのアドレスに格納される。このため、ＣＰＵ２２で実行されるその画像データを利用するプログラムは、各バンドの画像データがそのように飛び飛びのアドレスにあることを想定したものである必要がある。従来のカスタム品の転送インターフェースを用いる方式では、無効データを含まないバンドのみを転送することができたため、ＤＭＡＣは転送されて来る各バンドをメモリ上に単に連続アドレスで書き込んでいけば、メモリ上に１ページ分の連続した画像データが形成された。このため、プログラムも、単にその１ページの連続した画像データを扱えばよかった。これに対し、比較例の方式を採用した場合、このような従来のプログラムに対し、各バンドが飛び飛びのアドレスに格納されていることに対応する修正を加える必要がある。
【００４１】
なお、データ生成装置１０のコントローラ１２が、（例えばデジタル印刷分野でのバンド分割を取りやめて）各フレームに対して画像データを詰め込んで（この場合フレーム内に無効データは含まれない）転送を行えば、上述した無効データに起因する問題の大部分は解決される。しかし、従来からバンド分割を取りやめてまでそのような詰め込みを行うことには、コスト（バンド分割の取りやめ、画像データを新しい方法で分割すること）に見合うメリットがあまりない。これは、転送経路４０（例えばＭＩＰＩインターフェース）の転送速度が、印刷やスキャン目的の画像データの転送にとって十分すぎるほど高速であるためである。
【００４２】
例えばＭＩＰＩ  ＣＳＩの場合、フルＨＤや４Ｋ等の高解像度の画像を、毎秒３０フレーム程度の動画として転送することができる。Ａ４サイズ６００ｄｐｉの１ページの画像データは、４Ｋ解像度のフレームだと数フレーム程度のデータサイズである。したがって、４Ｋのフレームに画像データを一杯に詰めて、数フレームで転送することも考えられる。
【００４３】
その一方、データ利用装置２０側の印刷機構は、Ａ４サイズを１秒間に１ページ印刷できれば、非常に高速な部類に属する。したがって、Ａ４サイズ６００ｄｐｉの画像を１秒間に１ページ転送できれば、印刷目的には現状十分といえる。毎秒約３０フレームのＭＩＰＩを用いれば、Ａ４サイズ６００ｄｐｉの画像を例えば３０バンドに分けて１秒間３０フレームで転送しても印刷に間に合う。
【００４４】
４Ｋのフレームに一杯に画像データを詰めて数フレームで１ページを転送すれば高速に転送できるように思える。しかし、その１ページの画像データの生成（例えばスキャン処理）にある程度の時間（例えば１秒程度）がかかるのであれば、１フレームのデータが生成されるのに待ちが生じ、数フレームで転送することによる高速さが打ち消されることになる。
【００４５】
その一方、４Ｋのフレームサイズに画像データを一杯に詰めて転送するには、転送元（コントローラ１２）も転送先（転送Ｉ／Ｆ３４）も４Ｋサイズを保持できるサイズのバッファ（ピンポンバッファ方式を用いる場合はその２倍のサイズ）を容易する必要がある。このことはインターフェース回路のコスト上昇を招く。
【００４６】
これに対して、フレーム内に無効データが含まれるのを前提としてしまえば、転送元及び転送先は１バンド分のバッファを用意すれば足り、このバッファのサイズは、例えば４Ｋサイズのフレームを保持するためのバッファに比べてかなり小さい。１フレームあたりの有効な転送データ（バンド）の量は少なくても、前述の通り十分高速なフレームレートで繰り返し転送すれば利用側（例えば印刷機構）の速度要件を満たせる。したがって、この目的では、従来のバンド分割をやめてフレームに一杯データを詰め込んで転送する方式よりも、フレームに無効データを含め、より多数回の転送で同じ量のデータを転送する方式の方が、転送に必要なバッファが少ないという点でメリットがある。
【００４７】
次に、本実施形態での、転送されて来るフレームのデータのメモリ２６への転送の方式を、図３を参照して説明する。
【００４８】
本実施形態では、ＤＭＡＣ３８は、転送Ｉ／Ｆ３４が受信したフレームのうち有効データ（すなわち画像データのバンド）の部分は画像データ領域２８に転送し、無効データの部分は画像データ領域２８とは別にメモリ２６内に確保された無効データ領域３０に転送する。ＤＭＡＣ３８は、画像データ領域２８の先頭アドレスＰＳに対して第１フレーム内のバンド１を書き込み、そのバンド１を書き込んだ領域の次のアドレス（ＰＳ＋Ｂｄ）から第２フレーム内のバンド２を書き込む。Ｂｄはバンド（第Ｎバンドを除く）のサイズ（バイト単位）である。第３フレーム以降も、同様にそれまで画像データ領域２８に書き込んだバンドの末尾の次のアドレスから、新たなフレーム内のバンドを追記していく。このようにして、画像データ領域２８には、順に転送されて来る各フレーム内のバンド（有効データ）が連続アドレスで書き込まれる。
【００４９】
またＤＭＡＣ３８は、各フレームを受信する毎に、無効データ領域３０に対して、そのフレーム中の無効データを上書きしていく。無効データ領域３０としては、Ｎフレーム（Ｎは１ページを分割したバンド数）での無効データの最大サイズの領域を確保しておけばよい。一般的には、１ページの最後のバンドを除き、すべてのバンドのライン数（従ってデータサイズ）は同じであり、最後のバンドだけそのライン数に満たない余りのライン数のバンドとなるので、最終（第Ｎ）フレームの無効データが全フレームの中で最大である。無効データ領域３０は、例えば、画像データの転送処理の完了後、転送のためのプログラムによって解放される。
【００５０】
図３に示したように、本実施形態の方式では、画像データ領域２８には無効データが格納されず、有効データ（バンド）のみが連続アドレスで格納される。したがって、転送時に必要な画像データ領域２８のサイズは、転送するページの画像データと同サイズで済む。また、画像データ領域２８内の各バンドの画像データは（間に無効データを挟まずに）連続しているので、画像データ領域２８内のデータを扱うプログラムは、無効データの介在を想定する必要はない。
【００５１】
次に図４を参照して、ＣＰＵ２２が実行する、画像データの転送を受けるプログラムの処理手順の一例を説明する。このプログラムをＣＰＵ２２が実行することで実現される処理装置を、以下の手順の説明では「システム」と呼ぶ。
【００５２】
この手順では、まずシステムは、転送される１ページの画像データのサイズ、バンドサイズ、フレームサイズ等を含んだ転送条件の情報を取得する（Ｓ１０）。画像データのサイズは、データ生成装置１０から取得すればよい。バンドサイズは、システム自身が決定してもよいし、システムにデータ転送管理を依頼したアプリケーション（例えば転送された画像データを利用する印刷制御プログラム等）が決定してもよい。この決定においてデータ生成装置１０とネゴシエーションを行ってもよい。またフレームサイズは、システムが起動した転送Ｉ／Ｆ３４がデータ生成装置１０のコントローラ１２の転送インターフェースとネゴシエーションすることにより決定し、システムはこの決定されたフレームサイズを取得する。１つの例では、画像データを利用するアプリケーションの要求に従ってバンドサイズを決めてから、そのバンドサイズを収容可能なフレームサイズの選択肢の中から、ネゴシエーションによって使用するフレームサイズを決定する。また別の例として、フレームサイズを先に決定し、そのフレームサイズに収まるバンドサイズの選択肢の中から、システム又はアプリケーションが使用するバンドサイズを選択してもよい。
【００５３】
なお、１ページの最後のバンドのサイズは他のバンドのサイズより小さい場合があるが、システムは、この最終バンドのサイズを取得してもよいし、画像データのサイズとバンドサイズから最終バンドのサイズを計算してもよい。また、システムは、１ページを構成するバンド数Ｎを計算してもよいし、バンドサイズを決定したアプリケーション等から取得してもよい。
【００５４】
次にシステムは、メモリ２６のアドレス空間内に、画像データ領域２８と無効データ領域３０を確保する（Ｓ１２）。画像データ領域２８としては、Ｓ１０で取得した画像データのサイズの領域を確保する。また無効データ領域３０としては、１ページの最終フレームの無効データのサイズの領域を確保する。最終フレームは、内包するバンドのサイズが最も小さいので、無効データの量が最も多い。最終フレームの無効データのサイズは、フレームのサイズから最終バンドのサイズを減算することで求めればよい。
【００５５】
次にシステムは、ＤＭＡ転送のためのディスクリプタテーブル３２を作成する（Ｓ１４）。このときシステムが作成するディスクリプタテーブル３２のデータ内容の例を図５に示す。
【００５６】
図５の例では、最初のディスクリプタ（左上）には、転送先アドレスとして画像データ領域２８の先頭アドレスＰＳが設定され、転送サイズとしてバンドサイズＢｄが設定され、次エントリとして２番目のディスクリプタへのポインタが設定される。この２番目のディスクリプタには、転送先アドレスとして無効データ領域３０の先頭アドレスＩＳが設定され、転送サイズとして無効データのサイズ（Ｉｄ）が設定され、次エントリとして３番目のディスクリプタへのポインタが設定される。無効データのサイズは、フレームサイズからバンドサイズを減算すれば得られる。３番目のディスクリプタには、転送先アドレスとしてＰＳ＋Ｂｄが設定され、転送サイズとしてバンドサイズＢｄが設定され、次エントリとして４番目のディスクリプタへのポインタが設定される。このように、奇数番目のディスクリプタには、フレームの有効データ（バンド）部分の転送先・転送量が設定され、偶数番目のディスクリプタには、無効データ部分の転送先・転送量が設定される。ここで、無効データ部分の転送先は常に同じアドレスＩＳである。最後、すなわち第Ｎ番目のフレームのみバンドのサイズ（Ｂｄｅ）が他のフレームのバンドサイズ（Ｂｄ）と異なり、これに伴い無効データのサイズ（Ｉｄｅ）も他のフレームのもの（Ｉｄ）と異なってくる。最後のディスクリプタは、最後のフレームの無効データ部分の転送条件を指示するものであり、この後に転送するものはないので、次エントリは空（Ｎｕｌｌ）となっている。
【００５７】
図４の手順の説明に戻ると、ディスクリプタテーブル３２の作成が完了すると、システムは、ディスクリプタテーブル３２のアドレスをＤＭＡＣ３８に渡して、ＤＭＡ転送の開始を指示する（Ｓ１６）。この指示を受けたＤＭＡＣ３８は、ディスクリプタテーブル３２に従って、転送Ｉ／Ｆ３４が受信したフレームのデータをメモリ２６に転送していく。
【００５８】
すなわち、ＤＭＡＣ３８は、転送Ｉ／Ｆ３４が受信しはじめたデータを、まずディスクリプタテーブル３２の最初のディスクリプタ（左上）に従って、画像データ領域２８の先頭アドレスＰＳへと転送する。この後バンドサイズＢｄ分の転送が完了すると、２番目のディスクリプタ（右上）に従って、その後に続く無効データサイズ（Ｉｄ）分のデータを無効データ領域３０の先頭アドレスＩＳに転送する。次に、その後に続く２番目のフレームのバンドの部分を、３番目のディスクリプタに従ってアドレスＰＳ＋Ｂｄへと転送し、更にその後４番目のディスクリプタに従って、その後の無効データ部分を無効データ領域３０の先頭アドレスＧＳへと転送する。同様の処理を、１ページの最後のフレームをメモリ２６に転送し終わるまで繰り返す。
【００５９】
ＤＭＡＣ３８は、ディスクリプタテーブル３２に規定されたデータ転送が終了すると、システムに対して終了割り込みを行う。システムは、ＤＭＡＣ３８から終了割り込みが来るのを待ち（Ｓ１８）、終了割り込みが来ると、図４に示した処理を終了する。
【００６０】
図３及び図５を参照して説明した例は、１ページの画像データを転送する際のすべてのフレーム内の無効データを無効データ領域３０に転送して廃棄した。これに対し、別の例として、図６に示す方式もある。
【００６１】
図６の方式では、第１フレームから第（Ｎ−１）フレーム（すなわちページの最後の１つ前のフレーム）までは、ＤＭＡＣ３８は、無効データを含むフレーム全体のデータを画像データ領域２８に書き込む。ただし、次のフレームは、前のフレームの無効データ部分に重ねて書き込む。例えば、第２フレームは、メモリ２６上に書き込んだ第１フレームの有効データ部分（バンド１）の末尾の次、すなわち第１フレームの無効データ部分の先頭アドレスに書き込む。このように前のフレームの無効データ部分に次のフレームのバンド部分を書き込むことを繰り返し、第Ｎフレームの無効データのみ、無効データ領域３０に書き込む。
【００６２】
この方式でも、画像データ領域２８のサイズは、転送対象の１ページの画像のデータサイズと同じでよく、画像データ領域２８に最終的に蓄積される画像データは、１ページの連続アドレスの画像となる。
【００６３】
図７は、この方式において、画像データの転送を受けるプログラムが作成するディスクリプタテーブル３２の例である。この例では、１ページ分の転送の最初のディスクリプタには、転送先として画像データ領域２８の先頭アドレスＰＳが設定され、転送サイズとしてフレームのサイズＦｒが設定される。これに続く２番目のディスクリプタには、転送先として画像データ領域２８の先頭アドレスＰＳに１バンド分のサイズを足した（ＰＳ＋Ｂｄ）が設定され、転送サイズにはフレームのサイズＦｒが設定される。以降、（Ｎ−１）番目のフレームまでは、同様に、転送先が前のフレームのバンドの領域の次のアドレス、転送サイズがＦｒに設定される。そして、Ｎ番目（ページの最後）のフレームのみ、バンド部分と無効データ部分の２つのディスクリプタに分けられる（図７の最下段の２つ）。すなわち、Ｎ番目のディスクリプタでは、転送先はアドレス（ＰＳ＋（Ｎ−１）Ｂｄ）に設定され、転送サイズはＮ番目のバンドのサイズ（Ｂｄｅ）に設定される。そして、その次の最後のディスクリプタには、転送先が無効データ領域３０の先頭アドレスＩＳに設定され、転送サイズはＮ番目のフレームの無効データサイズ（Ｉｄｅ＝Ｆｒ−Ｂｄｅ）に設定される。
【００６４】
以上に説明した実施形態はあくまで一例に過ぎず、本発明の範囲内で様々な変形が可能である。
【００６５】
例えば、上記実施形態では、メモリ２６内に無効データ領域３０を確保したが、この代わりに、バスにＳＲＡＭ（Static RAM）、ＦＩＦＯ（First In, First Out）回路、その他の擬似的にデータを受け取る回路が接続されていれば、それらＳＲＡＭ等を無効データ領域３０の代わりに用いてもよい。例えばメモリマップドＩ／Ｏ（入出力）方式を用いている場合、システムは、ディスクリプタテーブル３２の無効データを転送するディスクリプタに、転送先としてＳＲＡＭ等の回路に割り当てられたアドレスを設定すればよい。ＳＲＡＭ、ＦＩＦＯ回路等は、メモリ２６よりも一般に応答が速いので、ＤＭＡＣ３８からの無効データの出力も、メモリ２６上の無効データ領域３０に書き込むより早く終わる。
【符号の説明】
【００６６】
１０  データ生成装置、１２  コントローラ、１４  スキャナ、１６  メモリ、２０  データ利用装置、２２  ＣＰＵ、２４  ＲＯＭ、２６  メモリ、２８  画像データ領域、３０  無効データ領域、３２  ディスクリプタテーブル、３４  転送Ｉ／Ｆ、３６  ＩＳＰ、３８  ＤＭＡＣ、４０  転送経路。
【図１】
2018049362.tif 000003
【図２】
2018049362.tif 000004
【図３】
2018049362.tif 000005
【図４】
2018049362.tif 000006
【図５】
2018049362.tif 000007
【図６】
2018049362.tif 000008
【図７】
2018049362.tif 000009