図1は、本実施例のデジタル複写機を概略的に示すブロック図である。本実施例のデジタル複写機1は、原稿の画像を光学的に読み取る画像入力手段としての読取部2、読取部2が読み取った画像に基づく画像データ等を記憶する記憶部3、読取部2が読み取った画像に基づく画像データに基づき画像形成動作を行なう像形成部4、オペレータによる操作を受け付ける操作部5、図示しない外部装置との間でデータの送受信を行なうFAX部6等を有している。本実施例では、像形成部4、FAX部6によって画像出力手段が実現されている。
なお、本実施例では、原稿の画像を光学的に読み取る読取部2によって画像入力手段を実現するようにしたが、これに限るものではなく、例えば、デジタルカメラによって画像入力手段を実現するようにしてもよい。デジタルカメラについては、公知の技術であるため図示および説明を省略する。
また、本実施例では、像形成部4、FAX部6によって画像出力手段を実現するようにしたが、これに限るものではなく、例えば、デジタル複写機1に対してI/Fを介してネットワーク等におけるPC等を通信自在に接続し、読取部2が読み取った画像データをPCに転送するような形態においては、PCに対して画像データを転送するインターフェイス等も画像出力手段として機能する。このとき、ネットワークに接続されたPCとの間でデータ通信を行なうI/Fによってアクセス制御手段およびアクセス制御機能が実現される。
読取部2、記憶部3、像形成部4、操作部5およびFAX部6等の各部は、これらの各部に対して通信自在に接続されたシステム制御部7によって駆動制御される。このシステム制御部7は、読取部2、記憶部3、像形成部4、操作部5およびFAX部6等の各部との間で通信を行なうことにより、読取部2、記憶部3、像形成部4、操作部5およびFAX部6等に対して各部の動作のための各種パラメータを設定する。
ここで、操作部5について説明する。操作部5は、オペレータによる操作を受け付け、オペレータに対するインターフェイスとして機能する。特に図示しないが、操作部5は、各種操作キーや、LCD(Liquid Crystal Display)等によって構成された表示部等を備えている。表示部には、システム制御部7の制御によって、例えば、デジタル複写機1全体の状態等が表示される。操作部5は、オペレータによる各種操作キーが入力操作された場合に、操作されたキーに応じた信号をシステム制御部7に対して伝達する。
また、デジタル複写機1は、システム制御部7によって駆動制御されて、像形成を行なう画像データのソースを読取部2、記憶部3、FAX部6のいずれかから選択するように接続状態を変化させるセレクタ部8を備えている。
次に、読取部2について、読取部2における読み取りプロセスとともに説明する。読取部2は、原稿台9に載置された原稿Gを露光する露光ランプ10と、原稿からの反射光をCCD(Charge Coupled Device)イメージセンサー(以降、CCD)14に向けて反射させる反射ミラー11,12,13とを備えている。露光ランプ10および反射ミラー11,12,13は、原稿台9に沿って副走査方向に走行自在な走行体C1,C2に搭載されており、露光ランプ10を発光させながら図示しない駆動モータによって走行体C1,C2を原稿台9に沿って走行させることにより原稿Gの画像のスキャン露光を行なう。ここで、図2は、原稿台9を上方から見た図である。原稿Gは、図2中右上となる基準角部Xに原稿Gの一の角部を突き当てるようにして原稿台9上に載置される。
また、読取部2は、反射ミラー11,12,13によって反射された原稿Gからの反射光が入力されるCCD14を備えている。原稿Gからの反射光は、図示しないレンズ等によって、CCD14に集光状態で入力される。CCD14は、入力光の光電変換を行ない該入力光の強弱に応じた電気信号を生成し、この電気信号をアナログ画像データとしてIPU(Image Processing Unit)15に出力する。IPU15は、CCD14から出力されたアナログ画像データに対してシェーディング補正等の処理を行った後、該アナログ画像データをA/D(Analog/Digital)変換して8ビットのデジタル画像データ(以降、画像データ)を生成する。さらに、IPU15は、画像データに対して、変倍処理、ディザ処理等の画像処理を行なった後、該画像データを画像同期信号と共に像形成部4へ出力する。本実施例では、読取部2による以上の動作を読み取りプロセスとする。
読取部2は、原稿台9に載置された原稿Gのサイズや読取部2が備える各部の動作状態等を検出する図示しない各種センサや、図示しない駆動モータ等を駆動制御するスキャナ制御部16を備えている。スキャナ制御部16は、上述の読み取りプロセスを実行するために、各種センサからの出力を検知したり、駆動モータを駆動制御したりする。また、スキャナ制御部16は、IPU15に対して、読み取りプロセスに際して参照される各種パラメータの設定を行う。
ここで、読取部2のIPU15から出力される画像同期信号について図3を参照して説明する。図3中に示すフレームゲート信号(/FGATE)は、副走査方向の画像エリアに対しての画像有効範囲を表す信号である。図3に示すように、IPU15から出力される画像データは、このフレームゲート信号(/FGATE)がローレベル(ローアクティブ)の間において有効とされる。また、フレームゲート信号(/FGATE)は、ライン同期信号(/LSYNC)の立ち下がりのエッジでアサートあるいはネゲートされる。
ライン同期信号(/LSYNC)は、画素同期信号(PCLK)の立ち上がりエッジで所定クロック数だけアサートされる。本実施例では、画素同期信号(PCLK)の信号の立ち上がり後、所定クロック後に主走査方向の画像データが有効とされる。送出する画像データは、画素同期信号(PCLK)の1周期に対して1つである。本実施例では、図2に示す基準角部Xを始点として、400dpi相当に分割された画像データを送出する。また、本実施例では、図2に示す基準角部Xを先頭とするラスタ形式のデータとして画像データを送出する。なお、画像データの副走査有効範囲は、通常、転写紙サイズによって決まる。
IPU15が出力した原稿Gの画像データは、記憶部3によって記憶される。これにより、読取部2で読み取った原稿Gの画像を、リピートコピーしたり、回転コピーしたりする等の複写アプリケーションに使用することができる。また、記憶部3は、FAX部6からの2値画像データを一時記憶させるバッファメモリとしても機能する。ここで、FAX部6は、システム制御部の制御によって、IPU15や記憶部3から出力された画像データを、G3、G4等のFAXのデータ転送規定に基づいて2値圧縮し、電話回線へ転送する。また、FAX部6は、電話回線を介して外部装置から転送されてきた画像データを、2値の画像データに復元し、像形成部4の書込部へ出力する。
次に、像形成部4について、像形成部4における像形成プロセスとともに説明する。像形成部4は、一定速度で回転する感光体17、感光体17表面を一様に帯電する帯電チャージャ18、読取部2のIPU15から出力された画像データに基づいて変調したレーザ光を感光体17表面に向けて出射する書込部19を備えており、帯電チャージャ18によって一様に帯電した感光体17表面を書込部19によって露光走査することにより、感光体17表面に画像データに応じた静電潜像を形成する。
また、像形成部4は、感光体17表面の静電潜像に対してトナーを供給することで感光体17表面にトナー像を形成する現像装置20、感光体17表面に形成されたトナー像を被転写体に静電転写させる転写チャージャ21を備えており、給紙トレイ22に積層保持されている転写紙を被転写体として、感光体17表面に形成されたトナー像を該転写紙に転写する。
トナー像が転写される転写紙は、像形成プロセスの実行に際して、給紙コロ23によって給紙トレイ22から搬送経路P中に給紙され、図示しないレジストローラにより転写チャージャ21による転写タイミングにタイミング調整されて転写位置に搬送される。
像形成部4は、転写チャージャ21によってトナー像が転写された転写紙を感光体17、表面から分離させる分離チャージャ25、トナー像が転写された転写紙を加熱することによって転写紙上にトナーを定着させる定着装置26を備えており、定着装置26によってトナーが定着された転写紙を排紙ローラ27を介して排紙トレイ28に排紙する。
さらに、像形成部4は、静電転写後に感光体表面に残存するトナーを除去するクリーニング装置29、静電転写後に感光体に残留する帯電電気を除電する除電チャージャ30を備えており、転写紙が分離された後の感光体表面を清掃および除電を行なう。特に図示しないが、本実施例のクリーニング装置29は、感光体17に圧接される圧接部材を具備している。本実施例では、像形成部4による以上の動作を像形成プロセスとする。
加えて、像形成部4は、像形成部4が備える各部の動作状態等を検出する図示しない各種センサや、感光体17等を駆動制御する図示しないモータ等の、像形成部4が備える各部を駆動制御するプロッタ制御部31を備えている。プロッタ制御部31は、以上の像形成プロセスを実行するために、各種センサからの出力を検知したり、モータを駆動制御したりする。
次に、記憶部3について図4を参照して説明する。記憶部3は、画像入出力DMAC32、メモリ制御部33、画像転送DMAC34、符号転送DMAC35、圧縮伸長器36、HDDコントローラ37、別画像記憶部としてのHDD38、画像記憶部としての画像メモリ39、および、データ形式変換手段およびデータ形式変換機能を実現するMLB40を備えている。
メモリ制御部33は、ROMやRAM等のメモリが接続された図示しないCPU(以降、単にCPUとする)およびロジックで構成されている。メモリ制御部33のメモリには、後述する記憶部3におけるSRC領域、DST領域の取得、解放動作を行なうための画像処理プログラムが格納されている。このため、本実施例では、メモリ制御部33のメモリによって記憶媒体が実現されている。
メモリ制御部33のメモリに記憶されている画像処理プログラムは、可搬性を有するメディアにコンピュータ読み取り可能に記録されたプログラムを図示しないメディア情報読取装置により読み取ることによって格納されている。このため、画像処理プログラムを記憶する可搬性を有するメディアによっても記憶媒体が実現される。可搬性を有するメディアとしては、例えば、CD−ROM等の光情報記憶媒体をはじめとする各種の記録メディアを利用することができ、メディア情報読取装置は記憶媒体として利用した可搬性を有するメディアの種類に応じて適宜選択設定される。
システム制御部7との間で通信自在とされているメモリ制御部33は、システム制御部7との通信によりコマンドを受信し、受信したコマンドに応じた動作設定を行なう。また、メモリ制御部33は、記憶部3の状態を知らせるため、システム制御部7に対して、ステータス情報を送信する。
システム制御部7からメモリ制御部33に送信される動作コマンドとしては、画像入力、画像出力、圧縮、伸長等がある。メモリ制御部33は、システム制御部7から送信されるコマンドが画像入力あるいは画像出力のコマンドである場合に、画像入出力DMAC32を駆動制御する。また、メモリ制御部33は、システム制御部7から送信されるコマンドが圧縮関連のコマンドである場合に、画像転送DMAC34や符号転送DMAC35、あるいは、圧縮伸長器36を駆動制御する。
画像入出力DMAC32は、図示しないCPUおよびロジックで構成され、メモリ制御部33との間で通信自在とされている。画像入出力DMAC32は、メモリ制御部33との通信によりコマンドを受信し、受信したコマンドに応じた動作設定を行なう。また、画像入出力DMAC32は、画像入出力DMAC32の状態を知らせるためステータス情報をメモリ制御部33に送信する。画像入出力DMAC32は、画像入力のコマンドを受けた場合、入力画像データを入力画像同期信号にしたがい8画素単位のメモリデータとしてパッキングして、メモリ制御部33にメモリアクセス信号と共に随時出力する。画像出力のコマンドを受けた場合、メモリ制御部33からの画像データを出力画像同期信号に同期させて出力する。
画像転送DMAC34は、図示しないCPUおよびロジックで構成され、メモリ制御部33との間で通信自在とされている。画像転送DMAC34は、メモリ制御部33との通信によりコマンドを受信し、受信したコマンドに応じた動作設定を行なう。また、画像転送DMAC34は、画像転送DMAC34の状態を知らせるためステータス情報をメモリ制御部33に送信する。画像転送DMAC34は、圧縮のコマンドを受けた場合、メモリ制御部33にメモリアクセス要求信号を出力し、メモリアクセス許可信号がアクティブの場合に画像データを受け取って圧縮伸長器36に転送する。また、画像転送DMAC34は、メモリアクセス要求信号に応じてカウントアップするアドレスカウンタを内蔵しており、圧縮伸長器36へのデータ転送に際しては、画像データが格納される格納場所を示す22ビットのメモリアドレスを圧縮伸長器に出力する。
符号転送DMAC35は、図示しないCPUおよびロジックで構成され、メモリ制御部33との間で通信自在とされている。符号転送DMAC35は、メモリ制御部33との通信によりコマンドを受信し、受信したコマンドに応じた動作設定を行なう。また、符号転送DMAC35は、符号転送DMAC35の状態を知らせるためステータス情報をメモリ制御部33に送信する。メモリ制御部33がシステム制御部7から伸長のコマンドを受けた場合、符号転送DMAC35は、メモリ制御部33にメモリアクセス要求信号を出力し、メモリアクセス許可信号がアクティブの場合に画像データを受け取って圧縮伸長器36に転送する。また、符号転送DMAC35は、メモリアクセス要求信号に応じてカウントアップするアドレスカウンタを内蔵し、画像データが格納される格納場所を示す22ビットのメモリアドレスを出力する。符号転送DMAC35のディスクリプタアクセス動作については後述する。
圧縮伸長器36は、図示しないCPUおよびロジックで構成され、メモリ制御部33との間で通信自在とされている。圧縮伸長器36は、メモリ制御部33との通信によりコマンドを受信し、受信したコマンドに応じて画像データの圧縮/伸長を行なう。圧縮伸長器36による画像データの圧縮/伸長は、2値データをMH符号化方法にて処理する。なお、2値データのMH符号化方法については説明を省略する。また、圧縮伸長器36は、状態を知らせるためのステータス情報をメモリ制御部33に送信する。
ここで、メモリ制御部33について図5を参照して詳細に説明する。メモリ制御部33は、画像入出力DMAC32、画像転送DMAC34、符号転送DMAC35からのメモリアクセス要求信号を調停し、所定の許可先に対してアクセス許可信号を出力するアービタ41を備えている。アービタ41は、図示しないリフレッシュ制御回路を内蔵し、リフレッシュ、画像入出力DMAC32、画像転送DMAC34、符号転送DMAC35の優先順位で、許可先にメモリアクセス許可信号をアクティブ出力する。許可先へのメモリアクセス許可信号のアクティブ出力は、メモリアクセスが非アクティブであることを条件として行われる。アービタ41は、許可先にメモリアクセス許可信号をアクティブ出力するとともに、アドレスセレクタを介して画像メモリのアドレスをセレクトし、アクセス制御回路42にメモリアクセスのスタートを示すトリガ信号を出力する。
アービタ41により入出力あるいは転送が許可された画像データのアドレスは、入出力画像アドレスカウンタ43あるいは転送画像アドレスカウンタ44によってカウントされ、アドレスセレクタ45でセレクトされる。なお、差分算出部46、差分比較部47、ライン設定部48および要求マスク49については説明を省略する。
なお、本実施例では、画像メモリ39にDRAMを用いており、このためにリフレッシュが必要となるが、例えば、SRAMを用いることによりリフレッシュを不要とすることも可能である。しかしながら、本実施例のようにDRAMを用いることにより装置の製造コストを低く抑えることができる。
アクセス制御回路42は、メモリ制御部33に入力された物理アドレスを、半導体メモリであるDRAMによって構成される画像メモリ39に対応させてロウアドレスとカラムアドレスとに分割し、11ビットのアドレスバスに出力する。また、アクセス制御回路42は、アービタ41からのアクセス開始信号にしたがい、DRAM制御信号(RAS、CAS、WE)を出力する。
画像メモリ39は、上述したように、DRAM等の半導体記憶素子で構成され、IPU15から出力される画像データを記憶する。画像メモリ39の記憶容量の合計は、600dpiでA3サイズの2値画像データの2面分である18MBと、データ変換(圧縮)用メモリ9MBとの合計である27MBである。画像メモリ39は、この27MBの他に、画像変換(圧縮)用の専用メモリとして7MBの記憶容量を有している。画像メモリ39の画像データは、メモリ制御部33の制御によって読み出されたり書き込まれたりする。画像メモリ39は、MLB40による変換に供される画像データ(Source:以降、SRC)や、MLB40により変換された画像データ(Destination:以降、DST)を記憶する。このため、本実施例では、画像メモリ39によって記憶手段および記憶機能が実現される。また、本実施例では、画像メモリ39によって変換記憶手段および変換記憶機能が実現される。
MLB40は、画像メモリ39に記憶された画像の変換処理を行ない、ASIC等によって実現される。MLB40は、MLB40での変換に用いる画像データを該画像データを記憶するSRC領域に準備したりHDD38へ保存する画像データを転送したり像形成部4およびネットワーク等へ画像データを転送したり等の変換以外の動作を行うソフトウェアと、準備された画像データ(SRC)を目的のフォーマットに変換したり変換後の画像データ(DST)が書き込まれるDST領域に書き出したりすることを基本動作とするハードウェア(制御ソフトを含む)とによって構成されている。
MLB40による画像変換制御に際しては、図6に示すように、入力画像領域(SRC領域)、出力画像領域(DST領域)を画像記憶部である画像メモリ39に確保する。画像メモリ39に確保するSRC領域、DST領域の取得動作については後述する。
また、MLB40による画像変換制御に際しては、SRC領域、DST領域のそれぞれがリングバッファとして使用され、そのバッファ分割数分に分割される。ここに、MLB40によって、領域分割手段および領域分割機能が実現される。本実施例では、図6に示すようなSRC領域を分割SRC領域としてSRC1とSRC2とに分割し、DST領域を分割DST領域としてDST1とDST2とに分割することで、SRC・DSTをともに2分割した場合について説明する。
図7は、ソフトウェア202と、ハードウェア203と、入出力先201と、共通パラメータ204との関係を示すものである。このうち、入出力先201には、ネットワークへの送出と、2次的記憶領域への読み書きと、印刷としての出力の3種類ある。
ソフトウェア202とハードウェア203との間では、通知のやり取りが行われる。また、ソフトウェア202と入出力先201とでもやり取りが行われる。例えばソフトウェア202は、ネットワークを介して他の機器へ画像データを送出する。または、ソフトウェア202は、ハードディスクのような2次的記憶領域に読み書きを行う。あるいは、ソフトウェア202は、画像データを印刷する。
共通パラメータ204は、ソフトウェア202と、ハードウェア203との各自の状態を表すステータスが保持されているパラメータである。
この共通パラメータは、MLB40による画像変換制御に際し、ソフトウェア202およびハードウェア203のいずれも、お互いの状態を表すステータスを参照する。ソフトウェア202およびハードウェア203のお互いの状態を表すステータスは、本実施例において、図8のステータス206に示されるように、以下の6つのステータスが存在する。
A:SET …実行すべき処理に必要な動作を決める
B:GET …実行する処理に必要なリソースを取得する
C:EXE …処理の実行を開始する
D:RUN …実行中
E:WAIT …ハード側の応答待ち
F:END …終了
これらのステータスは、上述したように、ソフトウェア202とハードウェア203の各々が有する。このように、ソフトウェア側およびハードウェア側のお互いの状態を表すステータスを共通のパラメータとすることで、お互いの処理結果を参照できるようになっている。
次に、MLB40に設けられる各テーブルについて説明する。MLB40には、画像メモリ39におけるSRC領域、DST領域の取得/解放動作で用いられる画像IDテーブル、ディスクリプタテーブルおよびブロックテーブルが設けられている。
なお、本実施例では、画像IDテーブル、ディスクリプタテーブルおよびブロックテーブルをMLB40に設けるようにしたが、これに限るものではなく、例えば、画像メモリ39に設けるようにしてもよい。
画像IDテーブル50は、図9に示すように、画像IDが設定される画像IDエリア51と、開始ディスクリプタテーブルIDが設定される開始ディスクリプタテーブルIDエリア52とによって1単位が構成される単位画像IDテーブル53を複数備えている。
画像IDエリア52に設定される画像IDは、画像記憶部である画像メモリ39と別記憶部であるHDD38との間で共通のユニークなIDであり、各記憶部39,38で、異なった画像で重複したIDが存在してはならない。
本実施例において、画像IDは、0(NULL)を、画像IDエリア51上の初期状態とするために、0はシステム予約IDとして使用できないものとする。
開始ディスクリプタテーブルIDエリア52に設定される開始ディスクリプタテーブルIDは、最初に取得したディスクリプタテーブルIDを示す。
画像IDテーブル50は、画像IDエリア51にNULLが設定され、開始ディスクリプタテーブルIDエリア52にEOD(End Of Descriptor)が設定された状態を初期状態とする。
ディスクリプタテーブル60は、図10に示すように、開始ブロックIDが設定される開始ブロックIDエリア61、使用ブロック数が設定される使用ブロック数エリア62、および、次ディスクリプタテーブルIDが設定される次ディスクリプタテーブルIDエリア63によって1単位が構成される単位ディスクリプタテーブル64を複数備えている。
開始ブロックIDエリア61には、該当するディスクリプタが未使用である場合に、EOB(End Of Block)コードが挿入される。
使用ブロック数エリア62に設定される使用ブロック数は、開始ブロックから連続的に取得しているブロック数を意味している。
次ディスクリプタテーブルIDエリア63に設定される次ディスクリプタテーブルIDは、SRC領域、DST領域を連続して使用することができない場合に、チェーン構造にして、目的とするSRC領域、DST領域を非連続的に取得、管理可能にするために設定されている。チェーンの最後である単位ディスクリプタテーブルの次ディスクリプタテーブルIDエリア63には、次ディスクリプタテーブルIDとしてEOT(End Of Table)が設定される。
ディスクリプタテーブル60は、開始ブロックIDエリア61にEOBが設定され、使用ブロック数エリア62に0が設定され、次ディスクリプタテーブルIDエリア63にEOTが設定されている状態を初期状態とする。
ブロックテーブル70は、図11に示すように、画像メモリ39を固定長サイズのブロックに細分化(以降、ブロック化とする)し、ブロック化により得られる各ブロックの使用状態を1ビットで表わす。本実施例では、0が設定されているブロックを未使用ブロックとし、1が設定されているブロックを使用ブロックと定義する。
例えば、画像メモリ39において、データ変換(圧縮)用の9MB分を目的とするSRC領域、DST領域とし、固定長サイズ(1ブロック)を4KBとした場合、1ブロックを1ビットに対応させるとすると、以下に示す演算を行なうことにより、2304ビットのビットテーブルが必要になる。
9216(KB)÷4(KB)=2304(ブロック)
ブロックテーブル70は、全ブロックに0が設定されている状態(未使用状態)を初期状態とする。
なお、1つの画像データは、少なくとも1ブロック使用し、その1ブロックに対して、1つの画像IDテーブルと、1つのディスクリプタテーブルが必要となるので、画像IDテーブル50とディスクリプタテーブル60の各テーブルの最大数はブロック数分確保しておけば良い。
各テーブルは、以上のようになっている。MLB40には、さらに画像メモリ39におけるSRC領域、DST領域の取得/解放動作に際して用いられるテーブルIDカウンタや、取得済ディスクリプタテーブルカウンタ等の各種カウンタバッファが確保されている。また、MLB40には、画像メモリ39におけるSRC領域、DST領域の取得/解放動作に際して用いられるブロックIDカウンタ、開始ブロックIDおよび未使用ブロックカウンタ等が設けられている。
次に、図4に示したHDDコントローラ37の説明をする。HDDコントローラ37は、図示しないCPUおよびロジックで構成され、HDD38のステータスのリードおよびデータ転送を行なう。HDDコントローラ37は、メモリ制御部33との間で通信自在に設けられており、メモリ制御部33との通信によりコマンドを受信し、受信したコマンドに応じた動作設定を行なう。また、HDDコントローラ37は、HDDコントローラ37の状態を知らせるためステータス情報を送信する。
また、HDD38は、HDDコントローラ37によって駆動制御される2次記憶装置であり、圧縮伸長器36から出力される画像データを記憶する。なお、HDD38については公知の技術であるため説明を省略するが、HDD38には、上述した画像IDテーブル50、ディスクリプタテーブル60およびブロックテーブル70がそれぞれ確保されている。ただし、HDD38の記憶領域の容量は1次記憶領域の容量に比べて大きいため、HDD38におけるブロックテーブル70は、固定長サイズにブロック化する際の単位を論理アドレス上連続的な複数のセクタの固まりで管理している。
このHDD38の不良セクタについて説明する。まず、HDD38へのアクセスは物理アドレスでなく論理アドレス方式で行われている。ここで、HDD38は、HDD38へのアクセスに際して、論理アドレスで指定されたセクタが不良セクタである場合に、自動的に代替セクタ領域に割り当て直して、論理アドレス上は連続して使用可能であるかの如くに制御する。しかしながら、不良セクタを代替セクタに割り当てることにより、物理アドレス上では不良セクタアドレスが不良セクタアドレスの前後で非連続になる。これにより、ヘッドシークが発生し、データ転送時間に微妙ではあるが影響を生じさせてしまう。
このため、本実施例のHDD38には、後述するHDD38におけるSRC領域、DST領域の取得/解放動作に際して参照され、HDD38の代替セクタ処理を抑制させるために、不良セクタが発生したアドレスをアクセス禁止にするために管理しておくためのアクセス禁止セクタテーブルが設けられている。
アクセス禁止セクタテーブル80は、図12に示すように、登録セクタをカウントする登録セクタカウンタ81と、セクタIDが設定される複数のセクタIDエリア82を有するアクセス禁止テーブル83とを備えている。各セクタIDエリア82に0が設定されている状態を、アクセス禁止セクタテーブル80における初期状態とする。登録セクタカウンタ81は、セクタIDエリア82における初期状態を0とした場合に、セクタIDが0であるセクタがアクセス禁止セクタであると誤検出することを抑制するために設けられており、アクセス禁止テーブル83に登録されているセクタ個数を示している。本実施例では、この登録セクタカウンタ81が0になっている場合は、アクセス禁止セクタが登録されていないことを表わすものとする。登録セクタカウンタ81およびアクセス禁止テーブル83の内容は、デジタル複写機の電源投入時にHDD38から画像メモリ39の画像変換(圧縮)用の専用メモリへ転送され参照可能になっている。
アクセス禁止セクタテーブル80は、HDD38等のように大容量の記憶装置に設定されることが好ましい。
なお、アクセス禁止セクタテーブル80によって管理されるアクセス禁止の単位をブロック単位ではなくセクタ単位で管理することにより、ブロック化に際してセクタ数が変更になったり、HDD38のパーティション変更等により使用可能な先頭セクタアドレスが変更になって先頭ブロックの開始セクタにずれが生じて登録しておいた不良セクタとブロックとの整合性がとれなくなってしまったりする等の不具合の発生を防止することができる。
加えて、HDD38には、画像メモリ39と同様に、後述するHDD38におけるSRC領域、DST領域の取得/解放動作に際して用いられるテーブルIDカウンタや、取得済ディスクリプタテーブルカウンタ等の各種カウンタバッファ、ブロックIDカウンタ、開始ブロックIDおよび未使用ブロックカウンタに加えて、内部ループ処理用のカウンタ(ループカウンタ)が設けられている。
上述した構成により、記憶部3は、画像入力およびデータ蓄積に際して、システム制御部7からの指示に応じて画像データを画像メモリ39の所定の画像領域に書き込んだり、読み出したりする。画像データの書き込みや読み出しに際しては、画像転送DMAC34で、画像ライン数がカウントされる。
さらに、画像入出力DMAC32、画像転送DMAC34、符号転送DMAC35には、ディスクリプタを格納するディスクリプタ格納レジスタがそれぞれ確保されている。ここで、図13は、画像転送DMAC34、および、画像転送DMAC34におけるディスクリプタ格納レジスタ90を示している。画像転送DMAC34は、画像データの転送を制御するデータ転送制御部34’を有しており、ディスクリプタ格納レジスタ90はその記憶領域に確保されている。ディスクリプタ格納レジスタ90には、次のディスクリプタの格納アドレスを示すチェーン先アドレス、転送するデータの先頭アドレスを示すデータ転送先アドレス、転送するデータのデータ量をライン数で示すデータ転送ライン数、および、設定されたライン数転送が終了した場合にCPU割り込みを発生するか否かのフォーマット情報を記憶する領域91,92,93,94が、アドレス毎に確保されている。各ディスクリプタ格納レジスタにおいてチェーン先アドレスを記憶する領域91には、CPUによって予めチェーン先アドレスが設定されている。フォーマット情報を記憶する領域94におけるフォーマット情報の最下位ビットには、設定されたライン数の転送が終了した場合にCPU割り込みを発生させるか否かを表わすビットが配置されている。本実施例では、フォーマット情報の最下位ビットが1である場合にCPU割り込みを発生させ、0である場合に要求マスクによってCPU割り込みをマスクする。
次に、ディスクリプタアクセス動作、および、データ転送動作について、画像転送DMAC34を例にとって説明する。図13は、画像転送DMAC34のディスクリプタアクセス動作、および、データ転送動作を示す説明図である。本実施例では、図13に示すように、4つに分割された各バンドで設定されているライン数の画像データ210を画像転送DMAC34によって転送する。
図13には、画像転送DMAC34と、画像データ210と、転送データ213と、ディスクリプタA211と、ディスクリプタA212とが示されている。画像データ210は、分割した4つの画像データからなる。転送データ213は、転送される画像データ213である。ディスクリプタA211とディスクリプタB212は、それぞれチェーン先アドレス91と、データ転送先アドレス92と、データ転送ライン数93と、フォーマット情報211とを有する。
1画像中の総転送ライン数を加算する場合、メモリ制御部33は、システム制御部7からの転送コマンドを受信すると、この転送コマンドを画像転送DMAC34に送信する。
画像転送DMAC34は、メモリ制御部33からの転送コマンドを受信するとDMAを起動し、ディスクリプタ格納レジスタ90に設定されたチェーン先アドレス(例えば、(a))に、ディスクリプタA211をリードアクセスし、画像メモリ39中のディスクリプタの内容をディスクリプタ格納レジスタ90にロードする。
上述したように、ディスクリプタ格納レジスタ90にロードされる内容は、チェーン先アドレス91、データ転送先アドレス92、データ転送ライン数93、および、フォーマット情報94の4ワードで構成されているため、1つの画像を4つのバンドに分割した場合、ディスクリプタ格納レジスタ90にはディスクリプタの4つのフォーマット情報がロードされ、フォーマット情報を記憶する領域94における各フォーマット情報の最下位ビットには、それぞれ、1、1、1、1が配置されている。CPU割り込みは、各バンドの画像データ転送が終了した場合に発生し、このCPU割り込みの発生により、各ディスクリプタに設定されているライン数を加算する。これにより、転送を終了したライン数である転送終了ライン数を検出することができる。
次に、記憶部3におけるSRC領域、DST領域の取得、解放動作について説明する。記憶部3におけるSRC領域、DST領域の取得、解放動作に際しては、上述した画像IDテーブル50、ディスクリプタテーブル60およびブロックテーブル70の3つの管理テーブルを用いる。
記憶部3におけるSRC領域、DST領域の取得、解放動作のうち、まず、記憶部3におけるSRC領域の取得動作について図14ないし図16を参照して説明する。
なお、図14ないし図16が示す処理は、画像IDテーブルの空きを探す処理と、ディスクリプタテーブルからあいているディスクリプタを探して必要ならつなげていく処理と、そのディスプリプタに必要なブロックを取得する処理である。
記憶部3におけるSRC領域、DST領域の取得動作に際しては、まず、ステップS1で、画像IDと、取得するブロックの連続性を指示する連続ブロック数と、該連続ブロック数の複数取得指示を可能にするディスクリプタテーブル個数とを含む取得要求データの入力の有無を判断することによりSRC領域、DST領域の取得要求が発生したと判断するまで待機する。
メモリ制御部33は、ステップS1で、取得要求データの入力によりSRC領域、DST領域の取得要求が発生したと判断した場合には、ステップS2で、入力された取得要求データに含まれる画像ID、連続ブロック数、ディスクリプタテーブル個数を示すデータの異常の有無を判断する。
ステップS2で、メモリ制御部33は、入力された取得要求データに含まれる画像ID、連続ブロック数、ディスクリプタテーブル個数を示すデータに異常があると判断した場合、ステップS3で入力パラメータ異常を出力し、処理を終了する。
一方、ステップS2で、メモリ制御部33が入力された取得要求データに含まれる画像ID、連続ブロック数、ディスクリプタテーブル個数を示すデータに異常がないと判断した場合、メモリ制御部33は、ステップS4で、画像IDテーブル取得処理時に必要となるテーブルIDカウンタと取得済ディスクリプタテーブルカウンタとを初期化し、ステップS5で、単位画像IDテーブル53の取得を試みるため、画像IDテーブル50を検索する。
ステップS5における検索により、画像IDエリア51にNULLが設定されている単位画像IDテーブル53を検出する前に、テーブルIDカウンタが最終テーブルID値になった場合、メモリ制御部33は、全ての単位画像IDテーブル53が使用されているために単位画像IDテーブル53が取得不能であると判定し、ステップS7で「画像IDテーブルフル」を出力して処理を終了する。
一方、テーブルIDカウンタが最終テーブルID値ではないため、画像IDテーブルがFULLではないとメモリ制御部33が判断している場合、ステップS8で、画像IDエリア51にNULLが設定されているかどうか判断する。ステップS8で、メモリ制御部33が、画像IDエリア51がNULLではないと判断した場合、ステップS9で、テーブルIDカウンタを加算し、再びステップS5の処理を実行する。
ステップS8で、メモリ制御部33が、画像IDエリア51にNULLが設定されていると判断した場合、メモリ制御部33は、空いている単位画像IDテーブル53が存在したと判断して、この単位画像IDテーブル53における画像IDエリア51に取得要求データに含まれる画像IDをステップS10で設定する。
続いて、メモリ制御部33は、ステップS11で、テーブルIDカウンタと前ディスクリプタテーブルを初期化する。ここで前ディスクリプタテーブルとは実際のディスクリプタテーブルには存在せず、プログラム上のローカル変数である。その構造は、ディスクリプタテーブル64(図10参照)の構造に、さらにディスクリプタテーブルIDを加えた構造となっている。以下、前ディスクリプタテーブルのディスクリプタテーブルIDを、前ディスクリプタテーブルIDと表現する。
フローチャートの説明に戻る。メモリ制御部33は、ステップS12で、開始ブロックIDエリア61にEOBが設定されている単位ディスクリプタテーブル64を、ディスクリプタテーブル60の先頭から検索する。
ステップS12におけるディスクリプタの検索の結果、テーブルIDカウンタが最終テーブルID値になった場合、全てのディスクリプタテーブル60が使用されているので、メモリ制御部33は、ディスクリプタテーブル取得不能であると判定し、ステップS14で、「ディスクリプタテーブルフル」を出力して処理を終了する。
一方、ステップS12における検索の結果、ディスクリプタテーブルがFULLではない、すなわちテーブルIDカウンタが最終テーブルID値ではない場合、図15のステップS15に処理は進む。ステップS15で、メモリ制御部33が、開始ブロックIDエリア61における開始ブロックIDがEOBではないと判断した場合、ステップS16で、テーブルIDカウンタを加算し、再びステップS12の処理を実行する。
ステップS15で、メモリ制御部33が、開始ブロックIDがEOBであると判断した場合、空いている単位ディスクリプタテーブル64が存在したと判断して、ステップS17で、前ディスクリプタテーブルIDがEOTであるか否かを判断する。
ステップS17で、メモリ制御部33が、前ディスクリプタテーブルIDがEOTであると判断した場合、メモリ制御部33は、ステップS18で、上述した処理で取得済の単位画像IDテーブル53の開始ディスクリプタテーブルIDエリア52に、テーブルIDカウント値を設定する。
一方、ステップS17で、前ディスクリプタテーブルIDがEOTではないと判断した場合、メモリ制御部33は、ステップS19で、前ディスクリプタテーブルの次ディスクリプタテーブルIDエリア63に、テーブルIDカウンタ値を設定する。
次のステップS20で、メモリ制御部33は、前ディスクリプタテーブルの次ディスクリプタテーブルIDエリア63に、取得したテーブルIDカウンタを設定し、取得済ディスクリプタテーブルカウンタを加算する。
続いてメモリ制御部33は、ステップS21で、ブロック取得処理に必要な開始ブロックIDおよび未使用ブロックカウンタをそれぞれ初期化する。次に、メモリ制御部33は、ステップS22で、未使用を意味する0になっているビットをブロックテーブル70の先頭から検索する。
ステップS22における検索により、ステップS23で、ブロックテーブルがFULL、すなわちテーブルIDカウンタが最終ブロックID値になった場合、全てのブロックテーブルが使用されているためにブロックテーブル取得不能であると判定し、ステップS24で、「ブロックテーブルフル」を出力して、処理を終了する。
一方、ステップS23で、ブロックテーブルがFULLではないと判断した場合、メモリ制御部33は、ステップS25で、対象となっているブロックが使用中かどうか判断する。
対象ブロックのビットが1となっており、使用中であると判断した場合、メモリ制御部33は、メモリ制御部33は、ステップS26で未使用ブロックカウンタを初期化し、ステップS27で、ブロックカウンタを加算して、再びステップS22の処理を実行する。
対象ブロックのビットが1ではなく、未使用と判断した場合、メモリ制御部33は、ステップS28で、この未使用ブロックカウンタが初期化されているか否かを判断する。
未使用ブロックが初期化されていないと判断した場合、図16のステップS30へ処理は進む。未使用ブロックが初期化されているとメモリ制御部33が判断した場合、この未使用ブロックを、連続取得を開始する開始ブロックであると判断する。そして、ステップS29で、メモリ制御部33は、開始ブロックIDエリア61にこの未使用ブロックのブロックIDカウンタを保持させ、ステップS30で、未使用ブロックカウンタを加算する。
ステップS30での加算により、未使用ブロックカウンタが要求されたブロック数分取得できたか否かを、ステップS31でメモリ制御部33が判断する。ステップS31で、要求されたブロック数分取得できていないと判断した場合、メモリ制御部33は、再びステップS27の処理を実行する。
ステップS31で、要求されたブロック数分取得できていると判断した場合、メモリ制御部33は、ステップS32で、単位ディスクリプタテーブル64の開始ブロックIDエリア61に開始ブロックIDを設定し、連続ブロック個数分を使用中に設定する。
次のステップS33で、取得要求されたディスクリプタテーブル個数と取得済ディスクリプタテーブルカウンタにおけるカウンタ値とを比較する。
その結果、取得要求中のディスクリプタテーブル個数と取得済ディスクリプタテーブルカウンタのカウンタ値とが一致した場合、取得完了と判断し、ステップS34で取得完了を出力し、処理を終了する。
一方、取得要求中のディスクリプタテーブル個数と取得済ディスクリプタテーブルカウンタのカウンタ値とが一致しない場合、メモリ制御部33は、再びステップS12の処理を実行する。
これにより、記憶部3におけるSRC領域、DST領域を取得することが可能となる。
ところで、上述したように取得したSRC領域、DST領域は、通常の印刷・スキャナ・ファクシミリ等の動作にも使われるため、画像変換用に使用すると他の処理の生産性に影響を与えかねない。
このため、本実施例では、画像メモリ39中に画像変換用の領域を別途用意し、この画像変換用の領域に関しては、他の処理で使用中かどうかだけを管理して、一回のページ単位での変換に動的にSRC領域のみまたはDST領域のみ、もしくはSRC領域およびDST領域として使用することが可能である。
続いて、記憶部3におけるSRC領域、DST領域の取得/解放動作のうち、記憶部3におけるSRC領域、DST領域の解放動作について図17および図18を参照して説明する。
ステップS50は、解放要求待ちであり、解放要求があるとステップS51に処理が進む。ステップS51は、解放要求における入力パラメータが正当かどうか判断する。入力パラメータが正当では無い場合、ステップS52で、メモリ制御部33は、入力パラメータエラー出力を行い、処理を終了する。
入力パラメータに異常がないと判断した場合、ステップS53でメモリ制御部33は、単位画像IDテーブル53の検索に際して必要となるテーブルIDカウンタを初期化し、ステップS54で、入力パラメータの画像IDと一致する画像IDが設定された画像IDエリア51を有する単位画像IDテーブル53を、画像IDテーブル50の先頭から検索する。
ステップS54における検索により、画像IDエリア51における画像IDが入力パラメータの画像IDと一致したと判断する前にテーブルIDカウンタが最終テーブルIDになったと判断した場合、メモリ制御部33は、該当する単位画像IDテーブル53がないと判断し、ステップS56で「該当画像IDなし」を出力して処理を終了する。
一方、ステップS55で画像IDテーブルがFULLではないと判断した場合、メモリ制御部33は、対象画像IDかどうか判断する。対象画像IDではないと判断した場合、メモリ制御部33は、ステップS58で、テーブルIDカウンタを加算し、再びステップS54の処理を実行する。
対象画像IDの場合、メモリ制御部33は、ステップS59で、画像IDテーブルの開始ディスクリプタテーブルIDをテーブルIDカウンタに設定し、前ディスクリプタテーブルIDをEOTに設定する。
次に、メモリ制御部33は、ステップS60で、ディスクリプタテーブル60を検索する。ステップS61で、メモリ制御部33が、ディスクリプタテーブルがFULLであると判断した場合、ステップS62で「ディスクリプタテーブルエラー」を出力し、処理を終了する。
ステップS61で、ディスクリプタテーブルがFULLではないと判断した場合、メモリ制御部33は、ステップS63で、該当ディスクリプタテーブルの次ディスクリプタテーブルIDがEOTかどうか判断する。次ディスクリプタテーブルIDがEOTではない場合、メモリ制御部33は、ステップS64で、前ディスクリプタテーブルIDにテーブルIDカウンタを設定し、テーブルIDカウンタに次ディスクリプタテーブルIDを設定し、再びステップS61の処理を実行する。
次ディスクリプタテーブルIDがEOTの場合、メモリ制御部33は、ステップS65で、前ディスクリプタテーブルの次ディスクリプタテーブルIDをEOTに設定する。
次に、メモリ制御部33は、ステップS66で、対象ディスクリプタテーブルの開始ブロックから使用ブロック数分のブロックテーブルのビットを初期化する。そして、メモリ制御部33は、ステップS67で、前ディスクリプタテーブルIDがEOTかどうか判断する。前ディスクリプタテーブルIDがEOTではない場合、メモリ制御部33は、ステップS68で、テーブルIDカウンタに前ディスクリプタテーブルIDを設定し、再びステップS61の処理を実行する。
前ディスクリプタテーブルIDがEOTの場合、処理は終了する。
次に、HDD38におけるSRC領域、DST領域の取得/解放動作について説明する。HDD38におけるSRC領域、DST領域の取得/解放動作のうち、画像メモリ39におけるSRC領域、DST領域の取得/解放管理動作と同様の動作については図示および説明を省略し、HDD38のみに設けられているアクセス禁止セクタテーブル80に関する処理について図19を参照して説明する。
なお、HDD38においては、HDD38に取得したSRC領域、DST領域を使用時以外は解放する。これにより、使用中のSRC領域、DST領域以外の領域を他の処理で使用することができ、HDD38を効率よく使用することができる。
図19は、アクセス禁止セクタとして不良セクタを対象にした場合の登録動作を示すフローチャートである。通常、不良セクタはHDD38に対する読み出し時に検出されるため、この登録動作は、読み出し動作に際して発生する。
登録動作に際しては、まず、ステップS70で、メモリ制御部33は、読み出したセクタが不良セクタであるか否かを判断する。
ステップS70で、メモリ制御部33が、不良セクタが発生していないと判断した場合には、処理を終了する。
一方、ステップS70で、メモリ制御部33が、読み出したセクタが不良セクタであると判断した場合、メモリ制御部33は、ステップS71で登録セクタカウンタ81(図12参照)を1つ加算するとともに、登録カウンタ番目のアクセス禁止テーブルに不良セクタアドレスを登録して、処理を終了する。
なお、図示を省略するが、登録セクタカウンタ81を有限にして管理し登録カウンタ数を超えてしまった場合には、不良セクタ等でアクセス禁止セクタが多発しておりこのHDD38の信頼性が低下していることを理由として交換指示を促すことも可能である。
次に、アクセス禁止セクタをHDD38の図示しないブロックテーブル(図11参照)に反映する動作フローについて図20を参照して説明する。
HDD38におけるブロックテーブルの初期化終了後、メモリ制御部33は、ステップS80で、内部ループ処理用のカウンタをリセットする。
次のステップS81で、メモリ制御部33は、カウンタと登録セクタカウンタ81とを比較する。メモリ制御部33が、カウンタと登録セクタカウンタ81とが等しいと判断した場合、処理を終了する。
一方、メモリ制御部33が、カウンタと登録セクタカウンタ81とが一致しないと判断した場合には、アクセス禁止セクタが存在すると判断し、ステップS82で、アクセス禁止セクタテーブル80からセクタIDを取得しブロック化する。
次のステップS83で、メモリ制御部33が、ブロック化して図示しないブロックテーブル(図11参照)中の対象ブロックのビットを1とすることで予め使用ブロック状態に設定するとともに、カウンタのカウンタ値を加算して、再びステップS81の処理を実行する。
このように、ハードウェアであるMLB40によりデータ圧縮(データ変換)された画像データを、画像メモリ39とHDD38のSRC領域、DST領域を用いることで、各領域に関して、任意の容量も固定の容量も取得可能となる。
また、画像記憶部として、本実施例の画像メモリ39中の画像変換専用の領域のように、画像変換専用の記憶領域がある場合、その領域をリソース管理(使用中かどうかを管理する)として取得することも可能である。
データ転送を分割する場合は、画像メモリ39におけるSRC領域、DST領域を固定容量で確保し固定容量分データ変換完了してから、HDD38に転送することを繰り返すことで分割転送が可能になる。
次に、画像メモリ39からHDD38へのデータ転送を複数回に分割して行なう場合の動作について図21を参照して説明する。
まず、メモリ制御部33は、ステップS100で、データ変換用に用いられる記憶領域を固定容量確保する。次に、メモリ制御部33は、ステップS101で、ハードウェアであるMLB40を用いて上述ようにデータを変換あるいは圧縮する。
ステップS102で、メモリ制御部33は、変換あるいは圧縮した画像データをステップS100で確保した記憶領域含まれるDST領域に保存するとともに、変換する画像データをSRC領域に補充する。
次のステップS103で、メモリ制御部33は、ステップS102で使用した容量分の転送受容領域をHDD38に確保し、ステップS104で、変換した画像データをHDD38へ転送する。ここに、ステップS103において、転送受容領域確保手段および転送受容領域確保機能が実現される。また、ここに、ステップS104において、転送手段および転送機能が実現される。
なお、ステップS102において、HDD38から画像メモリ39に転送される画像データを補充する場合、ステップS104では、HDD38から対象の画像データ領域を読み出し、読み出した画像データをHDD38へ転送(逆転送)する。ここに、逆転送手段および逆転送機能が実現される。
次のステップS105で、メモリ制御部33は、データ圧縮未完了の画像データの有無を判断する。ステップS105で、メモリ制御部33が、データ圧縮未完了の画像データがあると判断した場合には、画像データの変換が完了していないと判断して、再びステップS101の処理を行う。
ここで、再びステップS101に進み変換処理を継続する場合は、画像データ変換後のデータを、既に転送が完了しているDST領域に上書きする。
ステップS105で、メモリ制御部33が、データ圧縮未完了の画像データがないと判断した場合には、画像データの変換が完了したと判断し、ステップS106で、画像メモリ39に確保した固定容量の記憶領域を解放して処理を終了する。
なお、画像データの補充では、HDD38から同様に転送を繰り返すことで可能である。
ステップS101における画像変換に際しては、画像変換用ASICであるMLB40を使用している。上述したように、MLB40におけるソフトウェア側・ハードウェア側は、それぞれの状態を表すステータスにしたがって動作している。ステップS101における画像変換に際しては、図13中に示すGET、EXE、SETについては、必要な回数だけ繰り返す。
ところで、ハードウェア・ソフトウェアの終了タイミングを通知する際に、例えば、処理実行中の時でステータスがWAIT以外である場合のように、一方がその処理を受け付けられる状態でない場合がある。
本実施例では、終了タイミングの通知を受け取れない状態で通知された情報を一時保存しておき、処理を受け付けられる状態に戻ったときに、即時実行するという方式を採用している。
図22は、SRC領域を分割し、DST領域については十分に大きな変換領域がある場合おける動作タイミングを例示するタイミングチャートである。このタイミングチャートは、2次記憶領域やネットワーク送出、印刷などの入出力201と、ソフトウェア202と、制御ハードウェア220と、ハードウェア203との間で行われるものである。
SRC領域を用いて処理を行なうソフトウェア側のI/Fとしては、以下に示す条件を満たさなければならない。1.最初に、ソフトウェアから画像変換要求を出す。2.ハードウェア側に含まれる制御ソフトウェアは、ソフトウェア側からの画像変換要求を受信したときに、変換が開始できれば(変換可能なSRC領域、DST領域があれば)変換する。3.制御ソフトウェアは、ハードウェアから対象となるSRC領域の画像の変換完了を受けたときに、ソフトウェア側から対となる画像変換要求(ソフトウェアと制御ソフトウェア内では、矢印の方向が逆の組)を受信していれば、応答を返し、まだ受信していなければ、受信後に応答を返す。4.ソフトウェア側は、制御ソフトウェアからの応答を受信後、その中に含まれているネットワークへの送出・印刷などの要求を実行する。ただし、もう用意する画像がない場合は、制御ソフトウェアからの変換完了を受けるために、要求を出す。5.ソフトウェア側は、ネットワークへの送出・印刷などからの応答を受信後、制御ソフトウェアからの応答を受信していれば、変換要求を出し、受信していなければ、受信後に要求を出す。6.制御ソフトウェアはハードウェア側から変換完了を受けた場合は、画像変換完了応答を返す。この場合、ソフトウェア側は必ず、変換を完了したDST領域の画像を保存する。
なお、上述したように、ソフトウェア側とハードウェア側の制御ソフトウェアとの間のSRC・DSTの転送要求等のパラメータは、共通のステータスフラグを利用する。このフラグは、UNIX(登録商標)の共有メモリを利用しており、ソフトウェア側でのみ参照・変更可であり、制御ソフトウェア側では参照のみ可となっている。
共通のステータスフラグは、ソフトウェア側には参照・変更可であり、制御ソフトウェア側には参照のみ可である為、ソフトウェア側は、制御ソフトウェア側の処理結果を応答の返り値として受け取る。
しかし、前記応答は、ソフトウェア側の処理とは非同期に発生する為、ソフトウェア側のステータスがWAITでなければ、処理の実行ができない。その場合は、一時的にソフトウェア側で保存し、ソフトウェア側が処理が可能となった時点で、共通のステータスフラグと内容の照合を行ない、次変換のための準備(SRCの補充やDSTの保存)を行う。
その後、共通のステータスフラグの変更を行い、その結果、画像変換が終了していなければ、再度、画像変換要求を行う。
また制御ソフトウェア側は、その処理結果を、直接反映できない為、共通のステータスフラグに反映するためにローカルな情報を持っている。さらに、制御ソフトウェア側は、画像変換要求を受けた際に、共通のステータスフラグを参照し、内部に保存している。
これは、制御ソフトウェアは処理が終わった時点で、ローカルな情報と画像変換要求を受けた際に内部に保存した情報を比較して、次画像変換が可能かどうかを判断し、可能であれば、次変換処理を実行する為である。
これらを踏まえ、図22の処理内容の説明をする。ソフトウェア202は、ステップS301で、制御ハードウェア220にSRC1の画像変換要求を通知する。制御ハードウェア220は、ステップS302で、ハードウェア203にSRC1の変換開始を通知する。ハードウェア203は、ステップS303で、制御ハードウェア220にSRC1完了を通知する。制御ハードウェア220は、ステップS304で、ソフトウェア202にSRC1の画像変換終了を通知する。ソフトウェア202は、ステップS305で、入出力201にSRC1の処理を通知する。これに対し、入出力先201は、ステップS308で、ソフトウェア202にSRC1の処理完了を通知する。
その間に、制御ハードウェア220は、ステップS306で、ハードウェア203にSRC2の変換開始を通知する。ハードウェア203は、ステップS307で、制御ハードウェア220にSRC2完了を通知する。
次に、ソフトウェア202は、ステップS309で、制御ハードウェア220にSRC2の画像変換要求を通知する。制御ハードウェア220は、ステップS310で、ソフトウェア202にSRC2の画像変換終了を通知する。ソフトウェア202は、ステップS311で、入出力201にSRC2の処理を通知する。制御ハードウェア220は、ステップS312で、ハードウェア203にSRC1の変換開始を通知する。ハードウェア203は、ステップS313で、制御ハードウェア220にSRC1完了を通知する。
入出力先201は、ステップS314で、ソフトウェア202にSRC2の処理完了を通知する。ソフトウェア202は、ステップS315で、制御ハードウェア220にSRC1の画像変換要求を通知する。制御ハードウェア220は、ステップS316で、ソフトウェア202にSRC1の画像変換終了を通知する。ソフトウェア202は、ステップS317で、入出力201にSRC1の処理を通知する。
制御ハードウェア220は、ステップS318で、ハードウェア203にSRC2の変換開始を通知する。入出力先201は、ステップS319で、ソフトウェア202にSRC1の処理完了を通知する。ソフトウェア202は、ステップS320で、制御ハードウェア220にSRC2の画像変換要求を通知する。ハードウェア203は、ステップS321で、制御ハードウェア220にSRC2完了を通知する。制御ハードウェア220は、ステップS322で、ソフトウェア202にSRC2の画像変換終了を通知する。制御ハードウェア220は、ステップS323で、ハードウェア203にSRC1の変換開始を通知する。ソフトウェア202は、ステップS324で、制御ハードウェア220に画像変換要求を通知する。
ハードウェア203は、ステップS325で、制御ハードウェア220に変換終了を通知する。制御ハードウェア220は、ステップS326で、ソフトウェア202に画像変換完了を通知する。ソフトウェア202は、ステップS327で、入出力201にDSTの処理を通知する。入出力先201は、ステップS328で、ソフトウェア202にDSTの処理完了を通知する。ソフトウェア202は、ステップS329で、制御ハードウェア220に画像変換終了要求を通知する。制御ハードウェア220は、ステップS330で、ソフトウェア202に画像変換終了応答を通知する。
次に、DST領域の分割があり、SRCについてはSRC領域内に画像データがすべてある場合についてのI/Fについて図23を参照して説明する。
ソフトウェア202は、ステップS401で、制御ハードウェア220にDST1の画像変換要求を通知する。制御ハードウェア220は、ステップS402で、ハードウェア203にDST1の変換開始を通知する。ハードウェア203は、ステップS403で、制御ハードウェア220にDST1完了を通知する。制御ハードウェア220は、ステップS404で、ソフトウェア202にDST1の画像変換終了を通知する。ソフトウェア202は、ステップS405で、入出力201にDST1の処理を通知する。この「DST1の処理を通知する」とは、DST1における処理が完了したことを通知することである。
制御ハードウェア220は、ステップS406で、ハードウェア203にDST2の変換開始を通知する。ハードウェア203は、ステップS407で、制御ハードウェア220にDST2完了を通知する。
入出力先201は、ステップS408で、ソフトウェア202にDST1の処理完了を通知する。ソフトウェア202は、ステップS409で、制御ハードウェア220にDST2の画像変換要求を通知する。制御ハードウェア220は、ステップS410で、ソフトウェア202にDST2の画像変換終了を通知する。ソフトウェア202は、ステップS411で、入出力201にDST2の処理を通知する。制御ハードウェア220は、ステップS412で、ハードウェア203にDST1の変換開始を通知する。ハードウェア203は、ステップS413で、制御ハードウェア220にDST1完了を通知する。
入出力先201は、ステップS414で、ソフトウェア202にDST2の処理完了を通知する。ソフトウェア202は、ステップS415で、制御ハードウェア220にDST1の画像変換要求を通知する。制御ハードウェア220は、ステップS416で、ソフトウェア202にDST1の画像変換終了を通知する。ソフトウェア202は、ステップS417で、入出力201にDST1の処理を通知する。制御ハードウェア220は、ステップS418で、ハードウェア203にDST2の変換開始を通知する。
入出力先201は、ステップS419で、ソフトウェア202にDST1の処理完了を通知する。ソフトウェア202は、ステップS420で、制御ハードウェア220にDST2の画像変換要求を通知する。ハードウェア203は、ステップS421で、制御ハードウェア220にDST2完了を通知する。制御ハードウェア220は、ステップS422で、ソフトウェア202にDST2の画像変換終了を通知する。ソフトウェア202は、ステップS423で、入出力201にDST2の処理を通知する。制御ハードウェア220は、ステップS424で、ハードウェア203にDST1の変換開始を通知する。入出力先201は、ステップS425で、ソフトウェア202にDST2の処理完了を通知する。ハードウェア203は、ステップS426で、制御ハードウェア220にDST1完了並びに変換終了を通知する。ソフトウェア202は、ステップS427で、制御ハードウェア220にDST1の画像変換要求を通知する。
制御ハードウェア220は、ステップS428で、ソフトウェア202に画像変換完了を通知する。ソフトウェア202は、ステップS429で、入出力201にDST1の処理を通知する。入出力先201は、ステップS430で、ソフトウェア202にDST1の処理完了を通知する。ソフトウェア202は、ステップS431で、制御ハードウェア220に画像変換終了要求を通知する。制御ハードウェア220は、ステップS432で、ソフトウェア202に画像変換終了応答を通知する。
図24は、SRC領域、DST領域の分割動作におけるI/Fを示す説明図である。ソフトウェア202は、ステップS501で、制御ハードウェア220にSRC1の画像変換要求を通知する。制御ハードウェア220は、ステップS502で、ハードウェア203にSRC1からDST1への変換開始を通知する。ハードウェア203は、ステップS503で、制御ハードウェア220にDST1完了を通知する。制御ハードウェア220は、ステップS504で、ソフトウェア202にDST1の画像変換終了を通知する。ソフトウェア202は、ステップS505で、入出力先201にDST1の処理を通知する。
制御ハードウェア220は、ステップS506で、ハードウェア203にSRC1からDST2への変換開始を通知する。ハードウェア203は、ステップS507で、制御ハードウェア220にSRC1完了を通知する。入出力先201は、ステップS508で、ソフトウェア202にDST1の処理完了を通知する。ソフトウェア202は、ステップS509で、制御ハードウェア220に画像変換要求とDST1の完了を通知する。制御ハードウェア220は、ステップS510で、ソフトウェア202にSRC1の画像変換終了を通知する。ソフトウェア202は、ステップS511で、入出力201にSRC1の処理を通知する。
制御ハードウェア220は、ステップS512で、ハードウェア203にSRC2からDST2への変換開始を通知する。ハードウェア203は、ステップS513で、制御ハードウェア220にDST2完了を通知する。
入出力先201は、ステップS514で、ソフトウェア202にSRC1の処理完了を通知する。ソフトウェア202は、ステップS515で、制御ハードウェア220に画像変換要求とSRC1の完了を通知する。制御ハードウェア220は、ステップS516で、ソフトウェア202にDST2の画像変換終了を通知する。ソフトウェア202は、ステップS517で、入出力先201にDST2の処理を通知する。制御ハードウェア220は、ステップS518で、ハードウェア203にSRC2からDST1への変換開始を通知する。
入出力先201は、ステップS519で、ソフトウェア202にDST2の処理完了を通知する。ソフトウェア202は、ステップS520で、制御ハードウェア220に画像変換要求とDST2の完了を通知する。ハードウェア203は、ステップS521で、制御ハードウェア220にSRC2の完了を通知する。制御ハードウェア220は、ステップS522で、ソフトウェア202にSRC2の画像変換終了を通知する。制御ハードウェア203は、ステップS523で、ハードウェア203にSRC1からDST1への変換開始を通知する。ソフトウェア202は、ステップS524で、制御ハードウェア220に画像変換要求を通知する。ハードウェア203は、ステップS525で、制御ハードウェア220に変換終了を通知する。制御ハードウェア220は、ステップS526で、ソフトウェア202に画像変換完了を通知する。ソフトウェア202は、ステップS527で、入出力201にDSTの処理を通知する。
入出力先201は、ステップS528で、ソフトウェア202にDSTの処理完了を通知する。ソフトウェア202は、ステップS529で、制御ハードウェア220に画像変換終了要求を通知する。制御ハードウェア220は、ステップS530で、ソフトウェア202に画像変換終了応答を通知する。
このように入力画像データの準備、および、出力画像データの変換時においては、実行可能な領域を探し出し、無駄なく動作させることにより、高速、かつ、リソースの有効利用が可能となる。
なお、ソフトウェア側からメモリを分割しなければ、入力画像領域の画像データ読み込み完了を待ってから、画像変換を開始する。
以上説明した実施例によれば、入力された画像データに対して分割SRC領域単位で変換を施すことができ、また、変換後の画像データを分割DST領域単位で出力することができるので、変換のための画像データの入力、出力するための画像データの変換、および、記憶部からの画像データの出力等に際して、各動作を実行可能な領域を探し出し、変換対象となるSRC領域、DST領域以外の領域に対して次の画像データとの準備等を行なわせることができるため、無駄なく動作させて、処理の高速化や記憶部のリソースの有効利用を図ることができ、データ転送速度の向上やデータ圧縮率およびMLB等における処理速度等に応じた生産性を確保することができる。
これによって、例えば、それぞれ異なるデータ形式を有する画像出力手段により複数の異なるアプリケーションからの画像要求が生じたにも拘わらず、記憶装置にアプリケーション毎のデータ形式の全ての画像データを格納することができない場合にも、画像出力手段のデータ形式に応じた画像変換を効率よく行なうことができる。
また、記憶部から別記憶部への画像データの転送時間を利用して、別記憶部から記憶部への画像データの逆転送および逆転送された画像データの変換と、画像データの記憶とを同時に行なうことができるので、データ転送効率や記憶装置の利用効率の向上を図るとともに、画像処理装置の生産性を良好に維持することができる。
さらに、例えば、画像処理装置と外部装置とをネットワークを介して接続することにより、画像データをネットワーク上で共有することができ、各外部装置がそれぞれデータ形式の異なる画像出力手段を備えている場合にも、各画像出力手段のデータ形式に適応したデータ形式の画像データを得ることができる。