(57)【要約】【課題】メモリアクセスを低減する画像形成装置を提供する。【解決手段】６１０３／６１０４ＳＤＲＡＭ（メモリ）に格納されている画像データに回転処理を行うときに、前記画像データは予めブロック単位に扱われており、１つのブロック分の画像データが６１４７ＥＤＩＴに送信される。６１９９ＣＭＰにてブロック単位で同一の画像データがあると判断されているとき、６１４７ＥＤＩＴはその同一の画像データに対してはリードを行うことなく、回転処理後の結果がブロックバッファに残っている、既にリード済みの画像データを再利用して、書き込み先アドレスだけを変えるようにする。こうすることで、回転処理の高速化が可能になる。また、メモリアクセスの回数を低減することができ、低消費電力化にもなる。【選択図】        図９
2004214892.tif 000002
【特許請求の範囲】
【請求項１】
非圧縮もしくは固定長圧縮されたラスターデータを受信する受信手段と、受信された前記ラスターデータを回転処理ブロック単位に比較する比較手段と、前記ラスターデータを書き込むメモリと、前記メモリに書き込まれた前記ラスターデータを任意の方向へ回転処理する回転手段を備えた画像形成装置であり、
前記回転手段による回転処理の際、特に隣り合うブロックのラスターデータと比較して同じだった場合には、前記メモリから前記ラスターデータを読まずに回転処理バッファメモリにある前記ラスターデータを再利用することを特徴とする画像形成装置。
【請求項２】
非圧縮もしくは固定長圧縮されたラスターデータを受信する受信手段と、受信された前記ラスターデータを回転処理ユニット単位に比較する比較手段と、前記ラスターデータを書き込むメモリと、前記メモリに書き込まれた前記ラスターデータを任意の方向へ回転処理する回転手段を備えた画像形成装置であり、
前記回転手段による回転処理の際、特に隣り合うユニットのラスターデータと比較して同じだった場合には、回転処理バッファメモリから前記ラスターデータを読まずにユニットにある前記ラスターデータを再利用することを特徴とする画像形成装置。
【請求項３】
非圧縮もしくは固定長圧縮されたラスターデータを受信する受信手段と、受信された前記ラスターデータを回転処理ブロック単位に比較する比較手段と、前記ラスターデータを書き込むメモリと、前記ラスターデータをハードディスク等に読み書きできる制御手段を備えた画像形成装置であり、
前記制御手段が前記ハードディスクに書き込む際、特に隣り合うブロックのラスターデータと比較して同じだった場合には、前記メモリから前記ラスターデータを読まずに前記ハードディスクへ書き込むバッファメモリにある前記ラスターデータを再利用することを特徴とする画像形成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像形成装置に関するものであり、特にメモリアクセスを低減する画像形成装置に関する。
【０００２】
【従来の技術】
スキャナやホストインターフェースなどによる画像入力装置と、プリンタ、ネットワーク出力などの画像出力装置を組み合わせた複合機、もしくは単体プリンタなどの画像形成装置において、集約機能や用紙向きに合わせて画像データを受信して任意の方向へ回転処理や、受信したデータをハードディスクに保存を行う場合がある。しかし一般に画像データはデータ量が大きく、各々の処理は長い時間を要する。これは言い換えると、メモリアクセスの負荷が重いことを表している。このような事情により、画像データを何らかの方式で圧縮処理するとか、メモリをより高速なものに替えたりしながら対応してきている。
【０００３】
ところで、隣り合う画像データは同じである可能性が高いということは経験的にも知られていることであり、この状況を踏まえて、最初に圧縮処理や保存処理といった所定の処理を施したデータと同じデータに対しては、再度同じ処理を施したりすることなく、最初のデータを再利用する技術がある。
【０００４】
例えば、特許文献１に記載の技術では、メモリアクセスの負荷の低減というよりもむしろデータの圧縮効率を高めることを目的としたものであるが、この技術では特にフォントデータに関しては、列方向に連続するイメージデータ列において隣り合う２列前のデータ列の反復性を利用し、２列前のデータ列と同一のデータ列に対しては圧縮処理を行わないような方法を採っている。
【０００５】
【特許文献１】
特開平８−３３７０２０号公報
【０００６】
【発明が解決しようとする課題】
本発明はいずれもこれらを鑑みてなされたものであり、特に隣り合う画像は同じである可能性が高いという性質を利用してメモリアクセスを低減し、各処理をより高速に行うことを目的としている。
【０００７】
請求項１に係る発明では、非圧縮、もしくは固定長圧縮されたラスターデータの回転処理を行う際、低速メモリから高速メモリにブロックごとに移し、高速メモリからブロックの一部（ユニット）を切り出して、フリップフロップでラッチし、ラッチされたデータは任意の方向に切り出して高速メモリに書き戻し、ブロック内のユニット処理が全て終了したら、高速メモリから低速メモリへバーストアクセスで書き戻すようにすることで、低速メモリから高速メモリにブロックごとに移す時間を低減することを可能にする画像形成装置を提供することを目的とする。
【０００８】
請求項２に係る発明では、非圧縮、もしくは固定長圧縮されたラスターデータの回転処理を行う際、低速メモリから高速メモリにブロックごとに移し、高速メモリからブロックの一部（ユニット）を切り出して、フリップフロップ群でラッチし、ラッチされたデータは任意の方向に切り出して高速メモリに書き戻し、ブロック内のユニット処理が全て終了したら、高速メモリから低速メモリへバーストアクセスで書き戻すようにすることで、高速メモリからフリップフロップ群にユニットごとに移す時間を低減することを可能にする画像形成装置を提供することを目的とする。
【０００９】
請求項３に係る発明では、非圧縮、もしくは固定長圧縮されたラスターデータをハードディスクに格納する際、低速メモリから高速メモリにブロックごとに移し、高速メモリからブロックを切り出して、ハードディスクに転送することで、低速メモリから高速メモリにブロックごとに移す時間を低減する画像形成装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
かかる目的を解決するため、請求項１に記載の発明は、非圧縮もしくは固定長圧縮されたラスターデータを受信する受信手段と、受信されたラスターデータを回転処理ブロック単位に比較する比較手段と、ラスターデータを書き込むメモリと、メモリに書き込まれたラスターデータを任意の方向へ回転処理する回転手段を備えた画像形成装置であり、回転手段による回転処理の際、特に隣り合うブロックのラスターデータと比較して同じだった場合には、メモリからラスターデータを読まずに回転処理バッファメモリにあるラスターデータを再利用することを特徴とする。
【００１１】
請求項２に記載の発明は、非圧縮もしくは固定長圧縮されたラスターデータを受信する受信手段と、受信されたラスターデータを回転処理ユニット単位に比較する比較手段と、ラスターデータを書き込むメモリと、メモリに書き込まれたラスターデータを任意の方向へ回転処理する回転手段を備えた画像形成装置であり、回転手段による回転処理の際、特に隣り合うユニットのラスターデータと比較して同じだった場合には、回転処理バッファメモリからラスターデータを読まずにユニットにあるラスターデータを再利用することを特徴とする。
【００１２】
請求項３に記載の発明は、非圧縮もしくは固定長圧縮されたラスターデータを受信する受信手段と、受信されたラスターデータを回転処理ブロック単位に比較する比較手段と、ラスターデータを書き込むメモリと、ラスターデータをハードディスク等に読み書きできる制御手段を備えた画像形成装置であり、制御手段がハードディスクに書き込む際、特に隣り合うブロックのラスターデータと比較して同じだった場合には、メモリからラスターデータを読まずにハードディスクへ書き込むバッファメモリにあるラスターデータを再利用することを特徴とする。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態（実施例１〜３）を図面を参照して説明するが、最初に各実施例を行うさいの共通の動作の説明をしておく。共通の動作の説明としては、（１）初期化、（２）コピー動作、（３）プリンタ動作、（４）スキャナ動作、（５）ネットワークアプリケーション動作を取り上げる。本実施形態で説明する技術はこれらの動作処理に適用可能であり、さらにこれら以外に関連する動作処理に対しても適用可能である。
【００１４】
（各実施例に共通の動作の説明）
まず前記の共通の動作を行う画像形成装置として、複合機の基本構成と、共通とする基本動作およびその基本機能の説明をする。
【００１５】
（１）初期化
初期化の動作処理を説明するために、複合機の基本構成のブロック図を図７に示す。また、図７のブロック図を構成する要素及びその機能を以下に示す。
【００１６】
６００１：ＣＰＵ
６００２：ＡＳＩＣ
６００３：操作部
６００４：ＩＥＥＥ１２８４  ホストＩ／Ｆである。
６００５：ネットワークＩ／Ｆ
６００６：ＲＯＭ０  ＯＳ及び基本アプリケーションプログラムを含むＲＯＭである。
６００７：ＲＯＭ１  オプションアプリケーションを含むＲＯＭである。
６００８：ＲＯＭ２  オプションアプリケーションを含むＲＯＭである。
６００９：ＮＶＲＡＭ  バックアップ可能なＲＡＭ、システムの設定などを保存する。
６０１０：ＭＥＭ０  標準実装されているメモリである。
６０１１：ＭＥＭ１  オプションで追加されるメモリである。
６０１２：ＨＤＤ
６０１３：オプションデバイス  プリンタアプリケーションなどのオプションＩ／Ｆである。
６０１４：ＦＡＸ  ファックスユニット（オプション）
６０１５：エンジン  スキャナとプロッタを備える。
６０１６：コントローラ
６０１７：ＰＣＩバス  エンジンＩ／Ｆとオプションバスを兼ねる。
【００１７】
電源が投入されるとエンジン（６０１５）は搭載されているＣＰＵにより、各機能が初期化され、コントローラ（６０１６）の初期化が終わって、コマンドを受信するまで待機状態になる。
【００１８】
コントローラ（６０１６）の初期化は、電源が投入されるとＡＳＩＣ（６００２）にリセット信号が入力され、ＡＳＩＣ（６００２）はそれぞれリセットが必要なデバイスにリセット信号を分配する。ＣＰＵ（６００１）はリセット信号がアサートされ、ネゲートされるとＣＰＵ（６００１）のリセットベクターの命令をフェッチしようとする。ＡＳＩＣ（６００２）はＣＰＵ（６００１）のフェッチ信号を受け取るとアドレスをデコードして、初期化プログラムの格納されているＲＯＭ０（６００６）のＣＳ信号をアサートし、ＣＰＵ（６００１）が要求したアドレスの内容（命令コードあるいはデータ）を読み出して、ＣＰＵ（６００１）へ渡す。ＣＰＵ（６００１）はＡＳＩＣ（６００２）に命令の読み出しを繰り返し要求し、ＡＳＩＣ（６００２）はそのアドレスに応じてＲＯＭ０（６００６）の命令コードあるいはデータをＣＰＵ（６００１）へ渡す。このようにしてＣＰＵ（６００１）はプログラムを実行することができる。
【００１９】
この初期化プログラムでは、ＣＰＵ（６００１）の初期化、ＡＳＩＣ（６００２）に接続されるメモリ（６０１０）とオプションメモリ（６０１１）の初期化、ＰＣＩ（６０１７）の初期化、エンジン（６０１５）の初期化、操作部（６００３）の初期化、ＨＤＤ（６０１２）の初期化、ホストと接続されるＩＥＥＥ１２８４（６００４）の初期化、ネットワークＩ／Ｆ（６００５）の初期化、また、必要に応じて、ＦＡＸ（６０１４）の初期化、オプション（６０１３）の初期化を行い、その後アプリケーションを起動する。
【００２０】
ＡＳＩＣ（６００２）のＲＯＭ０（６００６）のアクセス時間は、データバス幅に依存するが、ＡＳＩＣ（６００２）の外部端子数を少なく抑えるために、１６ｂｉｔや８ｂｉｔなどのようにＣＰＵ（６００１）のデータバス幅よりも少ないｂｉｔ数で構成されることが多い。また、場合によってはｂｉｔ数が４ｂｉｔ、１ｂｉｔなどのようなシリアルデバイス、たとえば、ＳＥＥＰＲＯＭ、ＳＤカード、メモリスティックのようなデバイスを使用した場合には特に遅くなる。
【００２１】
参考までに上述した種々の初期化のうちの幾つかに関して詳細な説明をする。
【００２２】
・ＣＰＵ（６００１）の初期化
ＣＰＵ（ＭＩＰＳ系）は、ブートコンフィグデータをＡＳＩＣから読み取り、リセット解除後、命令のフェッチを開始し、コールドリセットか、それ以外によるリセット例外かどうかの判定、ＡＳＩＣのローカルバスのアクセスタイミングの初期化、ＣＰＵ内のキャッシュの初期化、ＴＬＢの初期化、例外ベクターの設定、コプロセッサの初期化を行う。
【００２３】
・メモリ（６０１０、６０１１）の初期化
標準で実装されるメモリ（以下、標準メモリと呼ぶ）のタイミングにかかわるパラメータを決定する前に、オプションのメモリが存在するかどうか確認し、もし、存在すれば、オプションメモリの情報を格納してあるＳＥＥＰＲＯＭをアクセスして、そのメモリの容量、速度、構成を読み出し、標準メモリとタイミングを比較し、遅いほうのタイミングを使用して、ＡＳＩＣに設定を行い、メモリの初期化を行う。その後、割り込みベクターの設定、ＲＡＭのデータ領域への初期値の設定などを行う。
【００２４】
・ＰＣＩ（６０１７）の初期化
ＡＳＩＣの内部レジスタのコンフィグ用レジスタを使用して、ＰＣＩバスに存在する全デバイスのサーチを行い、デバイスのタイプを判断して、バスブリッジがあれば、その先のバスのデバイスをサーチする。すべてのデバイスの列挙が完了したら、ＰＣＩのアドレス空間にマッピングを行う。
ＡＳＩＣ管理下のメモリの先頭アドレスを０ｘ００００．００００としてマッピングを行い、その他のデバイスは、ＡＳＩＣのレジスタ空間に用意されたＰＣＩメモリ空間アクセスウインドウあるいはＰＣＩ  Ｉ／Ｏ空間アクセスウインドウ内にマッピングする。マッピングが完了したら、それぞれのデバイスのコマンドレジスタのバスマスタイネーブル、メモリイネーブル、ＩＯイネーブルビットに１を設定して、デバイスが動作する状態にする。
【００２５】
・エンジン（６０１５）の初期化
エンジンとコントローラの通信は、エンジン側ＰＣＩデバイスが持つ送信バッファ／受信バッファを介して行う。
【００２６】
・操作部（６００３）の初期化
操作部とコントローラは操作部Ｉ／Ｆを介して接続され、送信と受信は全二重で行われる。あらかじめ決められているパケットサイズで、パケット通信を行い、操作部にシステムが初期化中であることを表示させる。
【００２７】
・ＨＤＤ（６０１２）の初期化
ＨＤＤが接続されているかどうかの確認を行い、ＨＤＤが接続されている場合には、ＨＤＤの情報を読み出し、あとで利用するために管理情報をメモリに格納する。
【００２８】
コントローラ（６０１６）に搭載されるソフトウエアの構成は図８のようになっている。また、図８に示すソフトウェアの構成要素を以下に示す。
【００２９】
５００１：ＰＲＩＮＴ−ＡＰＬ  プリントアプリケーション
５００２：ＣＯＰＹ−ＡＰＬ  コピーアプリケーション
５００３：ＦＡＸ−ＡＰＬ  ファックスアプリケーション
５００４：ＳＣＡＮ−ＡＰＬ  スキャナアプリケーション
５００５：ＮＥＴＷＯＲＫ−ＡＰＬ  ネットワークアプリケーション
５００６：サービス−ＡＰＩ  サービス層のアプリケーションプログラミングインターフェースである。
５００７：ＥＣＳ  エンジンコントロールサービス
５００８：ＭＣＳ  メモリコントロールサービス
５００９：ＯＣＳ  オペレーションパネルコントロールサービス
５０１０：ＳＣＳ  システムコントロールサービス
５０１１：ＮＣＳ  ネットワークコントロールサービス
５０１２：ＦＣＳ  ファックスコントロールサービス
５０１３：ＳＲＭ  システムリソースマネージャー
５０１４：汎用ＯＳ  ＵＮＩＸライクなＯＳである。
５０１５：エンジンコマンドＩ／Ｆ  エンジンと通信するためのプログラミングインターフェースである。
５０１６：エンジンハードウエア  エンジン本体である。
５０１７：コントローラハードウエア  コントローラのハードウエアリソースである。
【００３０】
ＣＰＵやＡＳＩＣに依存する部分はデバイスドライバ層で吸収することで、異なるＣＰＵや異なるＡＳＩＣでも移植が容易になるように構成されている。アプリケーションが起動すると操作部（６００３）には、デフォルトでコピーアプリケーションの操作画面が表示され、ユーザの指示待ちになる。
【００３１】
ＡＳＩＣ（６００２）の内部構成図を図９に示す。また、図９に示す各構成要素、およびその機能を以下に示す。
【００３２】
６１０１：ＣＰＵ
６１０２：ＡＳＩＣ
６１０３：ＭＥＭ０  標準実装されているメモリである。
６１０４：ＭＥＭ１  オプションで追加されるメモリである。
６１０５：Ａｒｂｉｔｅｒ  メモリアービタ
６１０６：Ｒａｍｃ  メモリのコントロールを行うラムコントローラである。
６１０７：ｃｐｕｉｆ  ＣＰＵにあわせて、ＡＳＩＣ内部のレジスタアクセスやメモリアクセスを行うためのＣＰＵバスプロトコル解釈部である。
６１０８：ＩＲＥＧ  ＡＳＩＣの内部レジスタである。
６１０９：ｌｂｃ  ＣＰＵのプログラムを格納したＲＯＭなどを接続するためのバスを制御するローカルバスコントローラである。
６１１０：ローカルバスのデータバス  １６ｂｉｔ幅を持ち、アドレスの一部とマルチプレクスされる。
６１１１：ローカルバスの制御線とアドレス信号  ６１１０でマルチプレクスされていない下位のアドレスとアドレスをデコードして作られたチップセレクト信号と、リード信号、ライト信号などを含む。
６１１２：ＳＤカード用ＤＭＡＣ  ＳＤカードからデータを読み書きするためのＤＭＡＣで、リードあるいはライトの動作が可能な１次元ＤＭＡＣである。
６１１３：ＳＤカードブートセレクタ    ＳＤカードからのＣＰＵブートとＤＭＡＣを利用したＳＤカードアクセスを切り替えるためのセレクタ。ＳＤカードからのＣＰＵブートが選択された場合は、ＣＰＵのリセット後の最初の命令フェッチはＳＤカードから行われる。
６１１４：ＳＤＣ  外部に接続されたＳＤカードをプロトコルに従ってアクセスするＳＤカードコントローラである。
６１１５：ＳＤカード用信号  ＳＤカードと接続される信号である。
６１１６：ＨＤＣ  ＡＴＡ１００のＨＤＤを制御することができるハードディスクコントローラである。
６１１７：ＤＡＴＡ−ＤＭＡＣ  ＨＤＤのデータを転送するためのＤＭＡＣで、１次元転送と２次元転送が可能である。
６１１８：ＣＭＤ−ＤＭＡＣ  ＨＤＤのコマンドを転送するためのＤＭＡＣである。
６１１９：ＣＤ１  圧縮あるいは伸長ができる圧縮伸長器１である。
６１２０：ＣＤ１用画像用ＤＭＡＣ  画像の入出力用のＤＭＡＣで、圧縮時は入力、伸長時は出力で動作する。
６１２１：ＣＤ１用符号用ＤＭＡＣ  符号の入出力用のＤＭＡＣで、圧縮時は出力、伸長時は入力で動作する。
６１２２：ＣＤ２  圧縮あるいは伸長ができる圧縮伸長器２である。
６１２３：ＣＤ２用画像用ＤＭＡＣ  画像の入出力用のＤＭＡＣで、圧縮時は入力、伸長時は出力で動作する。
６１２４：ＣＤ２用符号用ＤＭＡＣ  符号の入出力用のＤＭＡＣで、圧縮時は出力、伸長時は入力で動作する。
６１２５：ＣＤセレクタ  どの圧縮伸長器とＨＤＤを接続するか選択するためのセレクタである。
６１２６：ビデオセレクタ  どの圧縮伸長器の伸長出力とビデオＤＭＡＣへの入力へ接続するか選択するためのセレクタである。
６１２７：ビデオ画像用ＦＩＦＯ  ビデオ画像用の出力ＦＩＦＯである。
６１２８：ビデオ画像用シフタ  出力時に画像のシフトを行う。
６１２９：ビデオ合成器  出力時に画像とスタンプの合成を行う。合成を行わないことも可能で、その場合は、画像とスタンプは別々の出力を行う。
６１３０：ビデオ用画像出力ＤＭＡＣ  ビデオ画像用の出力用ＤＭＡＣである。
６１３１：スタンプ用ＦＩＦＯ  スタンプ用の出力ＦＩＦＯである。
６１３２：スタンプ用ＤＭＡＣ  スタンプ用の出力用ＤＭＡＣである。
６１３３：画像入力用ＦＩＦＯ
６１３４：画像入力用ＤＭＡＣ
６１３５：ＰＣＩ用ダイレクトパス  ＰＣＩバス側から、メモリをアクセスする場合のデータパスである。
６１３６：ＩＥＥＥ１２８４入力用ＤＭＡＣ  ＩＥＥＥ１２８４のデータを入力するためのＤＭＡＣである。
６１３７：ＩＥＥＥ１２８４コントローラ  ＩＥＥＥ１２８４のプロトコルを解釈してデータ転送を行う。
６１３８：操作部コントローラ  操作部のデータ転送を行う。
６１３９：操作部送信用ＤＭＡＣ  操作部へのデータ出力用のＤＭＡＣである。
６１４０：操作部受信用ＤＭＡＣ  操作部からのデータ入力用のＤＭＡＣである。
６１４１：ＭＡＣ用送信ＤＭＡＣ  ネットワーク送信を行う。
６１４２：ＭＡＣ用受信ＤＭＡＣ  ネットワーク受信を行う。
６１４３：ＭＡＣ  メディアアクセスコントローラ
６１４４：編集器用入力１ＤＭＡＣ
６１４５：編集器用入力２ＤＭＡＣ
６１４６：編集器用出力ＤＭＡＣ
６１４７：ＥＤＩＴ  画像の合成あるいは回転を行う編集器である。
６１４８：ＣＬＲ  設定したデータで領域をフィルする画像クリアコントローラである。
６１４９：画像クリアＤＭＡＣ  ２次元あるいは１次元のメモリフィルが可能である。
６１５０：ＨＤＤインターフェース信号
６１５１：ＰＣＩ−Ａｒｂｉｔｅｒ  外部およびＡＳＩＣのＰＣＩアクセスのアービトレーションを行う。
６１５２：ＰＣＩ−Ｍａｓｔｅｒ  ＰＣＩのマスタアクセスを行う。
６１５３：ＰＣＩ−ＣＯＮＦＩＧ  ＰＣＩコンフィグレジスタである。
６１５５：ＩＥＥＥ１２８４インターフェース信号
６１５６：操作部インターフェース送信用信号
６１５７：操作部インターフェース受信用信号
６１５８：ＰＨＹ接続信号  ＭＡＣとＰＨＹを接続するＭＩＩ信号である。
６１５９：ＰＣＩ−Ｔａｒｇｅｔ  ＰＣＩターゲットとしてアクセスされた場合に応答する。
６１９９：ＣＭＰ  ＰＣＩから入力される画像をユニット比較や、ブロック比較など行う。
【００３３】
また、ＡＳＩＣ（６００２）の管理する物理アドレスとメモリマップを図１０に示す。
【００３４】
各種デバイスの初期化が完了すると汎用ＯＳ（５０１４）は、システムのコンフィグ情報にもとづいてアプリケーションを起動する。
ただし、ＦＡＸユニット（６０１４）が存在しない場合は、ＦＡＸアプリケーション（５００３）は起動しない。
【００３５】
アプリケーション起動後、操作部（６００３）には、デフォルトでコピー操作画面が表示される。また、デフォルトの画面は変更することが可能である。
【００３６】
（２）コピー動作
コピー動作に必要な構成要素を含む複合機のブロック図を図１１に示す。また、図１１のブロック図を構成する要素及びその機能を以下に示す。
【００３７】
６３０１：コントローラ
６３０２：エンジン
６３０３：ＦＡＸ
６３０４：オプション
６３０５：ＣＰＵ
６３０６：ＡＳＩＣ
６３０７：ＭＥＭ
６３０８：操作部
６３０９：ＨＤＤ
６３１０：Ｖｉｎ  ビデオ入力を表す。
６３１１：Ｖｏｕｔ  ビデオ出力を表す。
６３１２：ＨＤＣ  ＨＤＤコントローラである。
６３１３：ＣＤ２  圧縮伸長器２
６３１４：ＣＤ１  圧縮伸長器１
６３１５：ＥＤＩＴ  編集器
６３１６：ＯＰＣ  操作部コントローラ
６３１７：ＬＢＣ  ローカルバスコントローラ
６３１８：ＲＯＭ  プログラム／文字フォントが格納されたＲＯＭである。
６３１９：ＳＤＣ  ＳＤカードコントローラ
６３２０：ＳＤカード
６３２１：ＭＡＣ  ネットワークコントローラ
６３２２：Ｅｎｇｉｎｅ−ＡＳＩＣ  エンジンＡＳＩＣ
６３２３：エンジンＣＰＵ  エンジンの制御を行う。
６３２４：エンジンＲＯＭ  エンジン制御のプログラムを格納したＲＯＭである。
６３２５：エンジンＲＡＭ  エンジン制御に必要なメモリである。
６３２６：出力用画像処理  ガンマ補正などを行う。
６３２７：ＰＬＯＴＴＥＲ  画像出力ユニット
６３２８：ＳＣＡＮＮＥＲ  画像入力ユニット
６３２９：入力用画像処理  シェーディング補正、ガンマ補正などを行う。
【００３８】
コピー動作の中には、ユーザ指定によりさまざまなモードがある。一部を表１に示す。
【００３９】
【表１】
2004214892.tif 000003
【００４０】
他にもモードはあるが省略し、単純コピー（１ｔｏＮコピー：Ｎ＝１の場合）について、画像の流れを図１２で説明する。また、図１２に記載の各符号の説明を以下に示す。
【００４１】
６４０１：入力原稿
６４０２：入力原稿画像の流れ
６４０３：メモリに読み込まれた画像：入力画像データ
６４０４：メモリ上の画像を圧縮する画像の流れ
６４０５：画像圧縮後の符号データ
６４０６：符号をＨＤＤに格納する流れ
６４０７：メモリ上の画像を出力する流れ
６４０８：出力画像のプロットされた用紙
【００４２】
操作部（６３０８）にあるスタートキーを押下することにより、外部イベントを監視しているＳＣＳ（５０１０）がスタートキー押下を検知し、現在、操作部（６３０８）でアクティブになっているアプリケーションであるコピーアプリケーション（５００２）に、スタートキーが押されたことを通知する。
【００４３】
コピーアプリケーション（５００２）は、現在の操作部（６３０８）で選択されているモードから、単純に原稿をスキャンして、１枚原稿を読み取り、１枚出力することが要求されていること検知する。コピーアプリケーション（５００２）は、原稿を１枚読み取って、１枚出力するために必要なシステムリソースを確保するようにＳＣＳ（５０１０）に要求し、システムリソースを確保できる場合には、ＭＣＳ（５００８）に、原稿を１枚読んで、その原稿と等しいサイズで１枚原稿を出力するように要求を出す。ＭＣＳ（５００８）は、必要なメモリをＳＲＭ（５０１３）に要求し、確保してから、ＥＣＳ（５００７）に原稿を１枚読んで、その原稿と等しいサイズで１枚原稿を出力するように要求を出す。するとＥＣＳ（５００７）は汎用ＯＳ（５０１４）へ、コマンドを発行するように要求する。汎用ＯＳ（５０１４）はデバイスドライバーを呼び出して、エンジンコマンドＩ／Ｆ（５０１５）を経由して、エンジン（５０１６）にコマンドを発行する。エンジン（６３０２）のＡＳＩＣ（６３２２）の通信バッファ経由で、エンジンＣＰＵ（６３２３）が、コマンドを受け取ると、自動原稿搬送装置上の原稿を読み取るために、スキャナ（６３２８）の制御をする。
【００４４】
入力原稿画像の流れ（６４０２）が示すように、入力原稿（６４０１）は、スキャナ（６３２８）の原稿搬送装置により、プラテンガラス上に搬送され、キャリッジが走査することで入力画像がＣＣＤ経由で読み取られ、入力画像処理部（６３２９）により、量子化され、画像補正されて、エンジンＡＳＩＣ（６３２２）へ転送される。それに先立ってコントローラ（６３０１）では、Ｖｉｎ（６３１０）の設定を完了しており、エンジンＡＳＩＣ（６３２２）から、画像データを転送することで、メモリ（６３０７）上に、画像データ（６４０３）を格納する。
【００４５】
エンジンＡＳＩＣ（６３２２）とＡＳＩＣ（６３０６）との接続は、ＰＣＩバスを介して行われ、エンジンＡＳＩＣ（６３２２）がマスターとなってライト動作をし、ＡＳＩＣ（６３０６）のＶｉｎ（６３１０）の入力がターゲットとして動作する。画像の転送は、読み取り時に作る擬似ラインシンクに同期して、ライン単位で転送のタイミングが取られ、ライン内ではあらかじめ決められたバースト長に従って、バースト転送が繰り返される。画像入力のタイミングを図１３に、画像転送のタイミングと動作を図１４に示す。また、図１３、１４に記載されている符号の説明を以下に示す。
【００４６】
１８０１：用紙サイズ  主走査と副走査できまる用紙サイズをあらわす。
１８０２：ＦＧＡＴＥ  用紙の副走査の有効範囲を示す信号である。
１８０３：ＬＧＡＴＥ  用紙の主走査の有効範囲を示す信号である。
１８０４：ＬＳＹＮＣ  主走査の先頭でアサートされる同期信号である。
１９０１：ＬＳＹＮＣ  ラインシンク
１９０２：ＤＲＥＱ  データリクエスト
１９０３：ＤＡＴＡ  １ライン分のデータ転送である。
１９０４：ＸＲＥＱ  ＰＣＩバスのバスリクエスト信号である。
１９０５：ＸＧＮＴ  ＰＣＩバスのバスグラント信号である。
１９０６：ＴＲＡＮＺ  ＰＣＩバスのバストランザクションである。
１９０７：ＰＣＩＣＬＫ  ＰＣＩの基本クロックである。
１９０８：ＸＦＲＡＭＥ  ＰＣＩのＦＲＡＭＥ信号である。
１９０９：ＸＤＥＶＳＥＬ  ＰＣＩのＤＥＶＳＥＬ信号である。
１９１０：ＸＩＲＤＹ  ＰＣＩのＩＲＤＹ信号である。
１９１１：ＸＴＲＤＹ  ＰＣＩのＴＲＤＹ信号である。
１９１２：ＡＤ［３１：０］  ＰＣＩのアドレス／データバス信号である。
１９１３：ＣＢＥ［３：０］  ＰＣＩのコマンド／バイトイネーブル信号である。
【００４７】
同様に、画像出力時は、ポリゴンの回転周期などから作成されるラインシンクに同期して、ライン単位で転送のタイミングが取られ、ライン内ではあらかじめ決められたバースト長に従って、バースト転送が繰り返される。
【００４８】
メモリ（６３０７）上に格納された画像データ（６４０３）は、ジャム時のリカバリーのため、あるいは、あとで電子文書としてネットワークなどから、利用するためにＨＤＤ（６３０９）に蓄積する。ＨＤＤ（６３０９）への蓄積は、圧縮データであったり、非圧縮データであったりする。圧縮した結果が圧縮前よりもデータ量が多い場合などは、非圧縮データで蓄積する。圧縮画像の流れ（６４０４）が示すように、圧縮伸長器２（６３１３）を使って、入力画像データ（６４０３）を圧縮して、符号データ（６４０５）をメモリ（６３０７）上に格納する。
【００４９】
メモリ（６３０７）上に格納された１ページ分の符号データ（６４０５）を、複数のブロックに分割して、複数回のディスクアクセスに分解して、ＨＤＤ（６３０９）へ蓄積する。１ページ分のＨＤＤアクセスを連続で行うとネットワークからの電子文書アクセス要求が来た場合に、１ページ分の符号蓄積完了まで、応答が遅れてしまうので、ディスクアクセスは分割して行っている。
【００５０】
ＨＤＤ（６３０９）への符号データ（６４０５）蓄積と並行して、画像データ（６４０３）を出力する。ＭＣＳ（５００８）は、画像の入力が始まると画像出力の要求をＥＣＳ（５００７）に出す。ＥＣＳ（５００７）は汎用ＯＳ（５０１４）へ、画像出力コマンドを発行するように要求する。汎用ＯＳ（５０１４）はデバイスドライバーを呼び出して、エンジンコマンドＩ／Ｆ（５０１５）を経由して、エンジン（５０１６）にコマンドを発行する。エンジン（６３０２）のＡＳＩＣ（６３２２）の通信バッファ経由で、エンジンＣＰＵ（６３２３）が、コマンドを受け取ると用紙トレイから、指定されたサイズの用紙を搬送するようにプロッタ（６３２７）の制御をする。エンジン（６３０２）側のタイミングで、Ｖｏｕｔ（６３１１）のＦＩＦＯから、画像データ（６４０３）を読み出して、用紙にプロットする。それに先立って、ＭＣＳ（５００８）は、Ｖｏｕｔ（６３１１）のＤＭＡＣの設定をして、起動しておく。
このように動作することで、単純コピー（１ｔｏＮ：Ｎ＝１）を行う。
【００５１】
（３）プリンタ動作
プリンタ動作に必要な構成を含むブロック図は図１１と同様である。
データの流れと処理を図１５で説明する。また、図１５に記載の各符号の説明を以下に示す。
【００５２】
６５０１：ホストから、印字命令を含むファイルを受信する。
６５０２：印字命令を含むファイル
６５０３：印字命令を解釈し、ＣＰＵで描画する。
６５０４：描画された画像
６５０５：メモリ上の画像を圧縮する画像の流れ
６５０６：圧縮された符号
６５０７：ＨＤＤに蓄積する流れ
６５０８：出力のために画像を伸長する流れ
６５０９：出力画像
６５１０：出力の画像の流れ
６５１１：出力画像のプロットされた用紙
【００５３】
ホストＩ／Ｆに接続されたホストから印刷命令を含むデータが転送されてくる（６５０１）とＳＣＳ（５０１０）は、印刷命令データ（６５０２）を受信して、プリンタアプリケーション（５００１）に通知する。プリンタアプリケーション（５００１）は、印刷命令データ（６５０２）を解釈し、ＣＰＵ（６３０５）は画像の描画を開始する（６５０３）。それと並行してプリンタアプリケーション（５００１）は、ＭＣＳ（５００８）に画像出力を要求する。するとＭＣＳ（５００８）はＳＣＳ（５０１０）に、画像出力のためのリソースを要求する。ＳＣＳ（５０１０）は、要求されたリソースが使用可能になると使用可能であることをＭＣＳ（５００８）に通知し、出力の準備が整う。
【００５４】
プリンタアプリケーション（５００１）は、描画の完了した画像（６５０４）をＭＣＳ（５００８）に渡す。ＭＣＳ（５００８）は、描画された画像（６５０４）を圧縮伸長器１（６３１４）を使って圧縮する（６５０５）。圧縮された符号（６５０６）は、ジャム時のリカバリーで使うため、あるいは、ネットワークなどから電子文書として利用するためにＨＤＤ（６３０９）に蓄積される。描画は、画像出力よりも高速に行われるため、画像を圧縮した符号（６５０６）が複数ページ分メモリ（６３０７）上とＨＤＤ（６３０９）にたまっていく。
【００５５】
ＭＣＳ（５００８）は出力の準備が整うと印刷順に符号（６５０６）を圧縮伸長器２（６３１３）を使って、メモリ（６３０７）上に出力用画像（６５０９）を伸長し、Ｖｏｕｔ（６３１１）のＤＭＡＣを出力用に設定して、起動をかけ、ＥＣＳ（５００７）に画像出力を指示する。
【００５６】
ＥＣＳ（５００７）は、汎用ＯＳ（５０１４）へ、画像出力コマンドを発行するように要求する。汎用ＯＳ（５０１４）はデバイスドライバーを呼び出して、エンジンコマンドＩ／Ｆ（５０１５）を経由して、エンジン（５０１６）にコマンドを発行する。エンジン（６３０２）のＡＳＩＣ（６３２２）の通信バッファ経由で、エンジンＣＰＵ（６３２３）が、コマンドを受け取ると用紙トレイから、指定されたサイズの用紙を搬送するようにプロッタ（６３２７）の制御をする。エンジン（６３０２）側のタイミングで、Ｖｏｕｔ（６３１１）のＦＩＦＯから、画像データ（６５０９）を読み出して、用紙にプロットする。
【００５７】
（４）スキャナ動作
スキャナ動作に必要な構成を含むブロック図は図１１と同様である。
データの流れと処理を図１６で説明する。また、図１６に記載の各符号の説明を以下に示す。
【００５８】
６６０１：入力原稿
６６０２：読み取った画像データの流れ
６６０３：画像データ
６６０４：ＣＰＵによるメモリ上の画像データを圧縮する画像の流れ
６６０５：圧縮された符号データ
６６０６：ＨＤＤに蓄積する流れ
６６０７：ホストＩ／Ｆを経由して、ホストに転送される符号データの流れ
【００５９】
ユーザーは、操作部（６３０８）のデフォルトのコピーメニュー画面から、スキャナ機能選択ボタンを押下することで、スキャナメニュー画面に移動することができる。ＳＣＳ（５０１０）は、操作部（６３０８）でスキャナ機能が選択されたことを検知するとそれをスキャナアプリケーション（５００４）に通知する。スキャナアプリケーション（５００４）は、操作部（６３０８）にメニュー画面を表示するようにＯＣＳ（５００９）に指示を出す。
【００６０】
ユーザーは原稿を自動原稿搬送装置に置いて、読み取りのモードを設定し、スタートキーを押下する。ＳＣＳ（５０１０）はスタートキーが押下されたことを検知するとスキャナアプリケーション（５００４）に、スタートキーが押されたことを通知する。スキャナアプリケーション（５００４）は、現在選択されているモードを使って、原稿をスキャンするようにＭＣＳ（５００８）に指示を出す。
【００６１】
ＭＣＳ（５００８）は、原稿をスキャンするのに必要なリソースをＳＣＳ（５０１０）に要求する。ＳＣＳ（５０１０）は、要求されたリソースが使える状態になるとそのことをＭＣＳ（５００８）に通知する。
【００６２】
ＭＣＳ（５００８）は、ＥＣＳ（５００７）に原稿を１枚読むように要求を出す。するとＥＣＳ（５００７）は汎用ＯＳ（５０１４）へ、コマンドを発行するように要求する。汎用ＯＳ（５０１４）はデバイスドライバーを呼び出して、エンジンコマンドＩ／Ｆ（５０１５）を経由して、エンジン（５０１６）にコマンドを発行する。エンジン（６３０２）のＡＳＩＣ（６３２２）の通信バッファ経由で、エンジンＣＰＵ（６３２３）が、コマンドを受け取ると、自動原稿搬送装置上の原稿を読み取るために、スキャナ（６３２８）の制御をする。
【００６３】
ＭＣＳ（５００８）は、読み取りに先立って、Ｖｉｎ（６３１０）のＤＭＡＣに設定をし、起動をかけておく。エンジン（６３０２）は、スキャナ（６３２８）を制御して入力原稿（６６０１）の画像を読み込み、画像入力に必要な画像処理を行う画像処理部（６３２９）を経由して、エンジンＡＳＩＣ（６３２２）に画像を送る。基本的な動作はコピー動作時の画像入力と同じである。
【００６４】
スキャナ（６３２３）からメモリ（６３０７）までの入力画像の流れ（６６０２）を通って、画像データ（６６０３）はＭＥＭ（６３０７）上に格納される。スキャナ動作で扱われる画像データ（６６０３）のデータフォーマットは、白黒では８ｂｉｔ多値あるいは１ｂｉｔ２値、カラーではＲＧＢ各８ｂｉｔ多値のデータである。外部のホストＰＣに、適した画像フォーマットに変換するためにＣＰＵ（６３０８）で、ソフト処理で変換する。変換後の符号データ（６６０５）は、メモリ（６３０７）に格納される。場合によっては、変換しない場合もある。スキャナアプリケーション（５００４）のモードに応じて、符号データ（６６０５）をＨＤＤ（６３０９）に格納したり（６６０６）、ホストＰＣへホストＩ／Ｆを経由して、符号データ（６６０５）を転送する（６６０７）。
【００６５】
（５）ネットワークアプリケーション動作
ネットワークアプリケーション動作に必要な構成を含むブロック図は図１１と同様である。
データの流れと処理を図１７で説明する。また、図１７に記載の各符号の説明を以下に示す。
【００６６】
６７０１：ＨＤＤから、要求された文書（画像データ）を取り出す流れ
６７０２：コピー動作時に蓄積された文書データ
６７０３：スキャナ動作時に蓄積された文書データ
６７０４：サムネールの画像データ
６７０５：符号データから、サムネールを作成するＣＰＵ処理の画像の流れ
６７０６：画像データから、サムネールを作成するＣＰＵ処理の画像の流れ
６７０７：符号データをホストに送る流れ
６７０８：画像データをホストに送る流れ
６７０９：サムネールデータをホストに送る流れ
６７１０：出力画像の流れ
６７１１：出力画像
【００６７】
ネットワークアプリケーションとは、ネットワークからＨＤＤに蓄積された文書を扱うアプリケーションで、ホストからの要求に応じて、サムネールを作成したり、ホストに転送したり、印刷したり、別の複合機に転送したり、サーバーに転送したするアプリケーションである。
【００６８】
ネットワークに接続されたホストから、ＨＤＤ（６３０９）に蓄積された文書の一覧要求がくるとＳＣＳ（５０１０）は、ネットワークアプリケーション（５００５）に、一覧要求がきたことを通知する。
【００６９】
ネットワークアプリケーション（５００５）は、必要なリソースをＳＣＳ（５０１０）に要求する。ＳＣＳ（５０１０）は、要求されたリソースが利用可能になったことをネットワークアプリケーション（５００５）に通知し、ネットワークアプリケーション（５００５）は、ＨＤＤ（６３０９）に蓄積されている文書のサムネールをＭＣＳ（５００８）に要求する。ＭＣＳ（５００８）は、ＨＤＤ（６３０９）に蓄積されている文書を、データフォーマットに従った処理をして、サムネールデータを作成し、ネットワークアプリケーション（５００５）に渡す。ＨＤＤ（６３０９）に蓄積された文書は、メモリ（６３０７）に読み出され（６７０１）、圧縮や変換のされていない画像データ（６７０２）は、ＣＰＵ（６３０５）により、サムネール（６７０４）が作成され（６７０６）、圧縮や変換されている符号データ（６７０３）はＣＰＵ（６３０５）により、いったん、元の画像の戻されてから、サムネール（６７０４）が作成され（６７０５）、ホストに転送される（６７０９）。
【００７０】
ネットワークアプリケーション（５００５）は、ＨＤＤ（６３０９）内の文書のサムネールを、ホストの解釈できるファイルフォーマットに変換して、たとえば、ホストがブラウザーで閲覧しているのであれば、ｈｔｍｌ形式、専用アプリケーションで閲覧しているのであれば、専用の形式に変換してホストに転送する。ホストはサムネールを受け取るとユーザの処理待ちになり、たとえば、ユーザがある文書を選択して、ホスト側に転送するように要求を出すと、ブラウザーあるいは専用アプリケーションは指定された文書をホストに転送するように複合機に指示を出す。ホストからの転送要求を受け取るとＳＣＳ（５０１０）は、ネットワークアプリケーション（５００５）に、文書転送の要求がきたことを通知する。
【００７１】
ネットワークアプリケーション（５００５）は、必要なリソースをＳＣＳ（５０１０）に要求する。ＳＣＳ（５０１０）は、要求されたリソースが利用可能になったことをネットワークアプリケーション（５００５）に通知し、ネットワークアプリケーション（５００５）は、ＨＤＤ（６３０９）に蓄積されている文書データ（６７０２）をＭＣＳ（５００８）に要求する。ＭＣＳ（５００８）は、ＨＤＤ（６３０９）に蓄積されている文書データ（６７０２）を、ネットワークアプリケーション（５００５）に渡す。
【００７２】
ネットアプリケーション（５００５）は、文書データ（６７０２）を、ホストに転送する（６７０８）。その後、ブラウザーで閲覧しているユーザーが、文書を選択して、印刷を指示するとブラウザーあるいは専用アプリケーションは指定された文書を印刷するように複合機に指示を出す。ホストからの印刷要求を受け取るとＳＣＳ（５０１０）は、ネットワークアプリケーション（５００５）に、文書印刷の要求がきたことを通知する。
【００７３】
ネットワークアプリケーション（５００５）は、必要なリソースをＳＣＳ（５０１０）に要求する。ＳＣＳ（５０１０）は、要求されたリソースが利用可能になったことをネットワークアプリケーション（５００５）に通知し、ネットワークアプリケーション（５００５）は、ＨＤＤ（６３０９）に蓄積されている文書データ（６７０２）を印刷するようにＭＣＳ（５００８）に要求する。ＭＣＳ（５００８）は、印刷に必要なリソースをＳＣＳ（５０１０）に要求する。コピーアプリケーションの動作と同じようにして、文書を印刷する。
【００７４】
以下、本発明に係る実施例を説明する。
【００７５】
（実施例１）
実施例１にて、回転処理の際に、特に隣り合うブロックのデータと比較して同じだった場合には、メモリからデータを読まずに回転処理バッファメモリにあるデータを再利用する動作処理の説明をする。
【００７６】
（画像回転パスの説明）
まずコピー画像の回転パスを説明する。
図９の６１５４ＰＣＩバスを介して６１５９ＰＣＩターゲット、６１３３ＦＩＦＯ、６１３４ＤＭＡＣ、６１０５メモリアービタを通って、６１０６メモリインターフェース、６１０３／６１０４メモリの順に通る。６１０３／６１０４メモリに格納されるフォーマットはさまざまであり、非圧縮形式や小ブロック単位の固定長圧縮などがある。いずれにしてもラスター順に格納される。
【００７７】
ところで画像データを回転する必要性が印字モードや給紙の状態によって存在する。例えば２枚のＡ４原稿を１枚のＡ４原稿に集約する場合（以下２ｉｎ１）や、給紙するサイズがＡ４Ｒで原稿がＡ４である場合（以下リミットレス回転）などである。この場合、６１０３／６１０４メモリに格納されたデータから６１０６メモリインターフェース、６１０５メモリアービタを通って、６１４４ＤＭＡＣ、６１４７ＥＤＩＴへ読み込み、ここで画像回転処理を行って、今度は６１４６ＤＭＡＣ、６１０５メモリアービタを通って、６１０６メモリインターフェース、６１０３／６１０４メモリの順へ再格納する。
以上のパスにより画像回転を処理することができる。
【００７８】
（ＥＤＩＴの説明）
次に６１４７ＥＤＩＴの動作説明を行う。
図１は回転処理の動作概念図を表している。６１４７ＥＤＩＴ内には大きくわけて２つのバッファが存在する。１つは例えば５１２×５１２のブロック（これをブロック単位と呼ぶ）で高速メモリである。もう一方は、例えば６４×６４のユニット（これをユニット単位と呼ぶ）でフリップフロップ群である。
まず、６１０３／６１０４メモリから１つのブロック分のデータを読み込み、ブロックへ書きこむ。書き込みが終わったら、今度はブロック内の一部（☆１）である６４×６４をユニットへ書き込む。ユニットで任意な方向に画像を切り出して、再度ブロック内の該当部へ書き戻す。これで６４×６４の回転は完了である。
【００７９】
次にブロック内の該当処理部を一つ横に進めて（☆２）を同様にユニットに書き込む。ユニットで任意な方向に画像を切り出して、再度ブロック内の該当部へ書き戻す。同様に☆１〜☆６４の順に処理を行い、完成されたブロックデータを６１０３／６１０４メモリへ書き戻す。
【００８０】
以上により、５１２×５１２のブロック処理が終わり、横のブロックへと処理が移っていく。これを行うことで回転処理を達成する。
【００８１】
ところで、下記のチェックを行うことで毎回回転処理を行うためのブロックデータのリードを低減できる。すなわち、図９の６１９９ＣＭＰ比較部にてブロック一致フラグを確認しながら、１なら直前のブロックと同じと見なして改めてブロックデータのリードをせず、回転処理後の結果がブロックバッファに残っているものを使い、書き込み先アドレスだけ変えればよい。
【００８２】
（チェックの方法）
ところで、隣り合う画像は似ている（同じ）可能性であることが高いという法則からいくと、この５１２×５１２ブロックと隣り合うブロックもこれにあてはまるだろう。従って、同じかどうかの判断は回転処理前に６１０３／６１０４メモリに入力される段階でチェックする。
【００８３】
（ＣＭＰの説明）
図９の６１９９ＣＭＰは本比較部である。
【００８４】
ラスター順次に６１５４ＰＣＩからバースト単位で入力されるので、例えば８バースト６４ビットシステムの場合５１２ビットずつ入力されることになる。これを毎回比較していけばよい。図２はその様子を示したものである。例えば２０４８×５１２の処理について記述する。
【００８５】
まず★１の５１２ビットと★２の５１２ビットを比較する。同じであれば★２の一致フラグを１とし、そうでなければ０とする。★１の一致フラグは比較対象がないので常に０である。
次に★２の５１２ビットと★３の５１２ビットを比較する。同じであれば★３の一致フラグを１とし、そうでなければ０とする。このように順番に比較し、最後は★２０４７と★２０４８を比較する。
次に、★１、★５、★９．．★２０４５のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。（この場合、処理先頭なので必ず０になる）
次に、★２、★６、★１０．．★２０４６のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。
次に、★３、★７、★１１．．★２０４７のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。
最後に、★４、★８、★１２．．★２０４８のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。
【００８６】
図２の例からいくと左から２番目と４番目がそれぞれ左隣の画像データの同じであるので、１番目と３番目のブロック一致フラグが０となり、２番目と４番目のブロック一致フラグが１となる。なお、上記の６１９９ＣＭＰによる比較処理手順をブロック比較フロー図として図３〜５に示す。
【００８７】
図３は、ブロック同士の比較におけるＭＡＩＮフロー図であり、６１９９ＣＭＰは図２に記載した矢印の順で比較処理していくことを設定する縦幅／横幅処理管理、それから各ブロックにフラグを決めていくブロック比較処理の順で実行していく。
【００８８】
図４は、前記縦幅／横幅処理管理のフロー図であり、ラスター順次に６１５４ＰＣＩからバースト単位で入力されたブロックの横幅及び縦幅の処理状況を管理する様子を表している。
【００８９】
図５は、前記ブロック比較処理のフロー図であり、逐次的に隣り合うデータ同士を比較し、フラグを割り当てていく様子を表している。
【００９０】
（実施例２）
実施例２にて、回転処理の際、特に隣り合うユニットのデータと比較して同じだった場合には、回転バッファメモリからデータを読まずにユニットにあるデータを再利用する動作処理の説明をする。
【００９１】
（画像回転パスの説明）
まずコピー画像の回転パスを説明する。
図９の６１５４ＰＣＩバスを介して６１５９ＰＣＩターゲット、６１３３ＦＩＦＯ、６１３４ＤＭＡＣ、６１０５メモリアービタを通って、６１０６メモリインターフェース、６１０３／６１０４メモリの順に通る。６１０３／６１０４メモリに格納されるフォーマットはさまざまであり、非圧縮形式や小ブロック単位の固定長圧縮などがある。いずれにしてもラスター順に格納される。
【００９２】
ところで画像データを回転する必要性が印字モードや給紙の状態によって存在する。例えば２枚のＡ４原稿を１枚のＡ４原稿に集約する場合（以下２ｉｎ１）や、給紙するサイズがＡ４Ｒで原稿がＡ４である場合（以下リミットレス回転）などである。この場合、６１０３／６１０４メモリに格納されたデータから６１０６メモリインターフェース、６１０５メモリアービタを通って、６１４４ＤＭＡＣ、６１４７ＥＤＩＴへ読み込み、ここで画像回転処理を行って、今度は６１４６ＤＭＡＣ、６１０５メモリアービタを通って、６１０６メモリインターフェース、６１０３／６１０４メモリの順へ再格納する。
以上のパスにより画像回転を処理することができる。
【００９３】
（ＥＤＩＴの説明）
次に６１４７ＥＤＩＴの動作説明を行う。
図１の回転処理の動作概念図において、６１４７ＥＤＩＴ内には大きくわけて２つのバッファが存在する。１つは例えば５１２×５１２のブロック（これをブロック単位と呼ぶ）で高速メモリである。もう一方は、例えば６４×６４のユニット（これをユニット単位と呼ぶ）でフリップフロップ群である。
まず、６１０３／６１０４メモリから１つのブロック分のデータを読み込み、ブロックへ書きこむ。書き込みが終わったら、今度はブロック内の一部（☆１）である６４×６４をユニットへ書き込む。ユニットで任意な方向に画像を切り出して、再度ブロック内の該当部へ書き戻す。これで６４×６４の回転は完了である。
【００９４】
次にブロック内の該当処理部を一つ横に進めて（☆２）を同様にユニットに書き込む。ユニットで任意な方向に画像を切り出して、再度ブロック内の該当部へ書き戻す。同様に☆１〜☆６４の順に処理を行い、完成されたブロックデータを６１０３／６１０４メモリへ書き戻す。
【００９５】
以上により、５１２×５１２のブロック処理が終わり、横のブロックへと処理が移っていく。これを行うことで回転処理を達成する。
【００９６】
ところで、下記のチェックを行うことで毎回回転処理を行うためのブロックデータのリードや、ユニットデータのリードを低減できる。すなわち、図９の６１９９ＣＭＰ比較部にて一致フラグやブロック一致フラグを確認しながら、一致フラグが１なら直前のユニットデータと同じと見なして改めてユニットデータのリードをせず、回転処理前のユニットバッファに残っているものを使って任意の方向に切り出せばよい。また、ブロック一致フラグが１なら直前のブロックデータと同じと見なして改めてブロックデータをリードせず、回転処理後の結果がブロックバッファに残っているものを使えばよく、書き込み先アドレスだけ変えればよい。
【００９７】
（チェックの方法）
ところで、隣り合う画像は似ている（同じ）可能性であることが高いという法則からいくと、この５１２×５１２ブロックと隣り合うブロックもこれにあてはまるだろう。従って、同じかどうかの判断は回転処理前に６１０３／６１０４メモリに入力される段階でチェックする。また、ブロック単位ではなく、６４×６４のユニット単位でユニット一致比較を行ってもよい。
【００９８】
（ＣＭＰの説明）
図９の６１９９ＣＭＰは本比較部である。
【００９９】
ラスター順次に６１５４ＰＣＩからバースト単位で入力されるので、例えば８バースト６４ビットシステムの場合５１２ビットずつ入力されることになる。これを毎回比較していけばよい。図２はその様子を示したものである。例えば２０４８×５１２の処理について記述する。
【０１００】
まず★１の５１２ビットと★２の５１２ビットを比較する。同じであれば★２の一致フラグを１とし、そうでなければ０とする。★１の一致フラグは比較対象がないので常に０である。
次に★２の５１２ビットと★３の５１２ビットを比較する。同じであれば★３の一致フラグを１とし、そうでなければ０とする。このように順番に比較し、最後は★２０４７と★２０４８を比較する。
次に、★１、★５、★９．．★２０４５のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。（この場合、処理先頭なので必ず０になる）
次に、★２、★６、★１０．．★２０４６のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。
次に、★３、★７、★１１．．★２０４７のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。
最後に、★４、★８、★１２．．★２０４８のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。
【０１０１】
図２の例からいくと左から２番目と４番目がそれぞれ左隣の画像データの同じであるので、１番目と３番目のブロック一致フラグが０となり、２番目と４番目のブロック一致フラグが１となる。なお、上記の６１９９ＣＭＰによる比較処理手順をブロック比較フロー図として図３〜５に示す。
【０１０２】
図３は、ブロック同士の比較におけるＭＡＩＮフロー図であり、６１９９ＣＭＰは図２に記載した矢印の順で比較処理していくことを設定する縦幅／横幅処理管理、それから各ブロックにフラグを決めていくブロック比較処理の順で実行していく。
【０１０３】
図４は、前記縦幅／横幅処理管理のフロー図であり、ラスター順次に６１５４ＰＣＩからバースト単位で入力されたブロックの横幅及び縦幅の処理状況を管理する様子を表している。
【０１０４】
図５は、前記ブロック比較処理のフロー図であり、逐次的に隣り合うデータ同士を比較し、フラグを割り当てていく様子を表している。
以上は、実施例１の通りブロック比較を行った場合である。
【０１０５】
また、これと合わせて、図６のようにとなりあうユニット６４×６４を比較してもよい。
まず、ブロックに５１２×５１２のデータがたまると、横方向６４ビット単位で比較を行う。同じなら一致フラグを１、異なれば０とする。これを横方向は５１２ビットまで８−１＝７回の比較を行い終わると、次のラインに移って同様に横方向６４ビットずつ比較を行う。これを６４ライン繰り返す。
【０１０６】
次に、横方向６４ビットと縦方向６４ビットの一致フラグが全て１かどうか比較し、（つまり隣り合う６４×６４と同じかどうか比較する。これを「ユニット一致フラグ」という）＠１〜＠８まで繰り返す。図６の場合、２、５、６、７、８ユニットがユニット一致フラグ１となる。
【０１０７】
（実施例３）
実施例３にて、対象データをハードディスクに書き込む際、特に隣り合うブロックのデータと比較して同じだった場合には、メモリからデータを読まずにハードディスクへ書き込むバッファメモリにあるデータを再利用する動作処理の説明をする。
【０１０８】
（画像蓄積パスの説明）
まずコピー画像の蓄積パスを説明する。
図９の６１５４ＰＣＩバスを介して６１５９ＰＣＩターゲット、６１３３ＦＩＦＯ、６１３４ＤＭＡＣ、６１０５メモリアービタを通って、６１０６メモリインターフェース、６１０３／６１０４メモリの順に通る。６１０３／６１０４メモリに格納されるフォーマットはさまざまであり、非圧縮形式や小ブロック単位の固定長圧縮などがある。いずれにしてもラスター順に格納される。
【０１０９】
ところで画像データを蓄積する必要性が印字モードや給紙の状態によって存在する。例えば入力バックアップや、給紙する用紙がなかった場合などである。この場合、６１０３／６１０４メモリに格納されたデータから６１０６メモリインターフェース、６１０５メモリアービタを通って、６１１７ＤＡＴＡ−ＤＭＡＣ、６１１６ＨＤＣを通って、６１５０ハードディスクへ格納する。
以上のパスにより画像蓄積を行うことができる。
【０１１０】
（チェックの方法）
ところで、隣り合う画像は似ている（同じ）可能性であることが高いという法則からいくと、この５１２×５１２ブロックと隣り合うブロックもこれにあてはまるだろう。従って、同じかどうかの判断は回転処理前に６１０３／６１０４メモリに入力される段階でチェックする。
【０１１１】
（ＣＭＰの説明）
図９の６１９９ＣＭＰは本比較部である。
【０１１２】
ラスター順次に６１５４ＰＣＩからバースト単位で入力されるので、例えば８バースト６４ビットシステムの場合５１２ビットずつ入力されることになる。これを毎回比較していけばよい。図２はその様子を示したものである。例えば２０４８×５１２の処理について記述する。
【０１１３】
まず★１の５１２ビットと★２の５１２ビットを比較する。同じであれば★２の一致フラグを１とし、そうでなければ０とする。★１の一致フラグは比較対象がないので常に０である。
次に★２の５１２ビットと★３の５１２ビットを比較する。同じであれば★３の一致フラグを１とし、そうでなければ０とする。このように順番に比較し、最後は★２０４７と★２０４８を比較する。
次に、★１、★５、★９．．★２０４５のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。（この場合、処理先頭なので必ず０になる）
次に、★２、★６、★１０．．★２０４６のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。
次に、★３、★７、★１１．．★２０４７のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。
最後に、★４、★８、★１２．．★２０４８のブロックの一致フラグを全て見て、全て１ならブロック一致フラグを１とする。
【０１１４】
図２の例からいくと左から２番目と４番目がそれぞれ左隣の画像データの同じであるので、１番目と３番目のブロック一致フラグが０となり、２番目と４番目のブロック一致フラグが１となる。なお、上記の６１９９ＣＭＰによる比較処理手順をブロック比較フロー図として図３〜５に示す。
【０１１５】
図３は、ブロック同士の比較におけるＭＡＩＮフロー図であり、６１９９ＣＭＰは図２に記載した矢印の順で比較処理していくことを設定する縦幅／横幅処理管理、それから各ブロックにフラグを決めていくブロック比較処理の順で実行していく。
【０１１６】
図４は、前記縦幅／横幅処理管理のフロー図であり、ラスター順次に６１５４ＰＣＩからバースト単位で入力されたブロックの横幅及び縦幅の処理状況を管理する様子を表している。
【０１１７】
図５は、前記ブロック比較処理のフロー図であり、逐次的に隣り合うデータ同士を比較し、フラグを割り当てていく様子を表している。
【０１１８】
（ＨＤＣの説明）
図２の例からいくと、１番目と３番目のブロック一致フラグが０となり、２番目と４番目のブロック一致フラグが１となるので、１番目のブロックは６１０３／６１０４メモリから読み込み６１１６ＨＤＣ内のバッファに書き込む。そして３２ＫＢのデータは１クラスタとして６１５０ハードディスクへ格納する。
２番目のブロックは１番目に使用した６１１６ＨＤＣ内のバッファを利用して次のクラスタに書き込む。従って６１０３／６１０４メモリのアクセスは行わない。
３番目のブロックは６１０３／６１０４メモリから読み込み６１１６ＨＤＣ内のバッファに書き込む。
そして３２ＫＢのデータは１クラスタとして６１５０ハードディスクへ格納する。
４番目のブロックは３番目に使用した６１１６ＨＤＣ内のバッファを利用して次のクラスタに書き込む。従って６１０３／６１０４メモリのアクセスは行わない。
このようにＣＭＰデータを使いながらハードディスクへ書き込んでいく。
【０１１９】
【発明の効果】
以上の説明からも明らかなように本発明によれば、以下に述べることが可能になる。
【０１２０】
請求項１に記載の発明では、入力データをブロックに分割し、その比較を行って同じデータの場合はメモリからアクセスすることなくブロックバッファの残ったデータを使用して回転処理を行うことができるので、回転処理の高速化が見込める。また、メモリアクセス回数を低減でき、他のリソースにあてることができる。例えば平行動作のプリンタ描画の高速化を行うことができる。また、平行動作がない場合でもメモリアクセス回数が低減できるため、低消費電力化が見込める。
【０１２１】
請求項２に記載の発明では、入力データをブロックに分割し、その比較を行って同じデータの場合はメモリからアクセスすることなくブロックバッファの残ったデータを使用して回転処理を行うことができる。さらに入力データをユニットに分割し、その比較を行って同じ場合は、ブロックからユニットにデータを移す作業を減らすことができるため、さらなる回転処理の高速化が見込める。また、メモリアクセス回数を低減でき、他のリソースにあてることができる。例えば平行動作のプリンタ描画の高速化を行うことができる。また、平行動作がない場合でもメモリアクセス回数が低減できるため、低消費電力化が見込める。
【０１２２】
請求項３に記載の発明では、入力データをブロックに分割し、その比較を行って同じデータの場合はメモリからアクセスすることなくブロックバッファの残ったデータを使用してハードディスクにクラスタ単位で書き込むことができるため、ハードディスク書き込みの高速化が見込める。また、メモリアクセス回数を低減でき、他のリソースにあてることができる。例えば平行動作のプリンタ描画の高速化を行うことができる。また、平行動作がない場合でもメモリアクセス回数が低減できるため、低消費電力化が見込める。
【図面の簡単な説明】
【図１】画像データの回転処理の動作概念図である。
【図２】ブロックを取り扱うときの比較部の動作概念図である。
【図３】ブロック同士の比較におけるＭＡＩＮフロー図である。
【図４】ブロック同士の比較における縦幅／横幅処理管理フロー図である。
【図５】ブロック同士の比較における比較処理フロー図である。
【図６】ユニットを取り扱うときの比較部の動作概念図である。
【図７】複写機の基本構成ブロック図である。
【図８】コントローラ（６０１６）に搭載されるソフトウェアの構成を表すブロック図である。
【図９】ＡＳＩＣ（６００２）の内部構成ブロック図である。
【図１０】ＡＳＩＣ（６００２）のメモリマップである。
【図１１】複写機の内部構成を表すブロック図である。
【図１２】図１１にて、コピー動作における画像データの流れを表したものである。
【図１３】コピー動作における画像入力のタイミングチャートである。
【図１４】コピー動作における画像転送のタイミングチャートである。
【図１５】図１１にて、プリンタ動作における画像データの流れを表したものである。
【図１６】図１１にて、スキャナ動作における画像データの流れを表したものである。
【図１７】図１１にて、ネットワークアプリケーション動作における画像データの流れを表したものである。
【符号の説明】
６１９９  ＣＭＰ
６１０３  ＳＤＲＡＭ（メモリ）
６１０４  ＳＤＲＡＭ（メモリ）
６１４７  ＥＤＩＴ
６１１６  ＨＤＣ
【図１】
2004214892.tif 000004
【図２】
2004214892.tif 000005
【図３】
2004214892.tif 000006
【図４】
2004214892.tif 000007
【図５】
2004214892.tif 000008
【図６】
2004214892.tif 000009
【図７】
2004214892.tif 000010
【図８】
2004214892.tif 000011
【図９】
2004214892.tif 000012
【図１０】
2004214892.tif 000013
【図１１】
2004214892.tif 000014
【図１２】
2004214892.tif 000015
【図１３】
2004214892.tif 000016
【図１４】
2004214892.tif 000017
【図１５】
2004214892.tif 000018
【図１６】
2004214892.tif 000019
【図１７】
2004214892.tif 000020