(58)【調査した分野】(Int.Cl.,DB名)
複数のページバッファー及びバンドバッファーを含む主記憶手段と、補助記憶手段と、文書データをページデータの単位で入力して前記ページバッファーに記憶させるデータ入力手段と、前記ページバッファーに記憶された前記ページデータを所定速度で出力するデータ出力手段とを備える画像形成装置において、
前記データ入力手段による前記ページデータの入力を停止させないようにするため、前記データ入力手段により複数の前記ページバッファーの一つに記憶された前記ページデータを前記補助記憶手段へ、前記データ出力手段による前記ページデータの出力に対して非同期で保存する非同期データ書き込み手段と、
前記データ出力手段により出力される前記ページデータの次に出力される前記ページデータが他の前記ページバッファーになければ、前記非同期データ書き込み手段により前記補助記憶手段に保存された前記ページデータを他の前記ページバッファーに先読みするデータ先読み手段と、
該データ先読み手段により先読みされた前記ページデータ又は前記データ入力手段により入力された前記ページデータの前記データ出力手段による出力が完了した場合、出力が完了した前記ページデータを前記ページバッファーの一つから削除するデータ削除手段とを備え、
前記データ入力手段は、前記ページバッファーに空きが無かった場合、前記ページデータよりも小さいバンドデータの単位ずつ前記バンドバッファーに記憶させ、
前記非同期データ書き込み手段は、前記バンドバッファーに記憶された前記バンドデータを、前記ページデータと同様にして、前記補助記憶手段へ保存し、
前記文書データは、リンクリストにより、前記文書データと、前記ページデータと、前記バンドデータとがそれぞれ参照されており、
前記リンクリストには、文書データのリストの層、ページデータのリストの層、バンドデータのリストの層の三階層のツリー構造のデータ構造が用いられ、
前記文書データは、前記リンクリストにより、物理的なアドレス空間が、論理アドレス空間にマッピングされ、
前記非同期データ書き込み手段は、
前記バンドデータの書き込みが終了したら前記バンドデータのリストの層の前記リンクリストを設定し、前記ページデータの書き込みが終了したら前記ページデータのリストの層の前記リンクリストを設定し、前記リンクリストが枯渇した場合は待ち処理の後で前記リンクリストを取得する再トライ処理を行い、
前記バンドデータの書き込み完了毎に、前記バンドデータを前記補助記憶手段に保存して前記バンドバッファーから消去し、
前記データ先読み手段は、
読み込む前記ページデータが前記非同期データ書き込み手段により前記補助記憶手段に書き込み中の場合、前記主記憶手段の前記ページバッファー上に残っている前記ページデータをそのまま利用して前記リンクリストを設定し、前記補助記憶手段側の書き込みを停止させるイベントを前記非同期データ書き込み手段へ送信し、
前記主記憶手段のメモリー容量の空きがある場合、複数の前記ページデータを読み込んでおき、他の前記ページバッファーに読み込まれた前記ページデータに対して、次に前記データ出力手段からページ取得要求があった場合、実時間で読み出し可能なように前記リンクリストを設定する
ことを特徴とする画像形成装置。
複数のページバッファー及びバンドバッファーを含む主記憶手段と、補助記憶手段と、文書データをページデータの単位で入力して前記ページバッファーに記憶させるデータ入力手段と、前記ページバッファーに記憶された前記ページデータを所定速度で出力するデータ出力手段とを備える画像形成装置による画像形成方法において、
前記データ入力手段による前記ページデータの入力を停止させないようにするため、前記データ入力手段により複数の前記ページバッファーの一つに記憶された前記ページデータを前記補助記憶手段へ、前記データ出力手段による前記ページデータの出力に対して非同期で保存し、
前記ページバッファーに空きが無かった場合、前記ページデータよりも小さいバンドデータの単位ずつ前記バンドバッファーに記憶させ、
前記バンドバッファーに記憶された前記バンドデータを、前記ページデータと同様にして、前記補助記憶手段へ保存し、
前記データ出力手段により出力される前記ページデータの次に出力される前記ページデータが他の前記ページバッファーになければ、非同期データ書き込み手段により前記補助記憶手段に保存された前記ページデータを他の前記ページバッファーに先読みし、
先読みされた前記ページデータ又は前記データ入力手段により入力された前記ページデータの前記データ出力手段による出力が完了した場合、出力が完了した前記ページデータを前記ページバッファーの一つから削除し、
前記文書データは、リンクリストにより、前記文書データと、前記ページデータと、前記バンドデータとがそれぞれ参照されており、
前記リンクリストには、文書データのリストの層、ページデータのリストの層、バンドデータのリストの層の三階層のツリー構造のデータ構造が用いられ、
前記文書データは、前記リンクリストにより、物理的なアドレス空間が、論理アドレス空間にマッピングされ、
前記非同期の保存は、
前記バンドデータの書き込みが終了したら前記バンドデータのリストの層の前記リンクリストを設定し、前記ページデータの書き込みが終了したら前記ページデータのリストの層の前記リンクリストを設定し、前記リンクリストが枯渇した場合は待ち処理の後で前記リンクリストを取得する再トライ処理を行い、
前記バンドデータの書き込み完了毎に、前記バンドデータを前記補助記憶手段に保存して前記バンドバッファーから消去し、
前記他の前記ページバッファーへの先読みは、
読み込む前記ページデータが前記非同期データ書き込み手段により前記補助記憶手段に書き込み中の場合、前記主記憶手段の前記ページバッファー上に残っている前記ページデータをそのまま利用して前記リンクリストを設定し、前記補助記憶手段側の書き込みを停止させるイベントを前記非同期データ書き込み手段へ送信し、
前記主記憶手段のメモリー容量の空きがある場合、複数の前記ページデータを読み込んでおき、他の前記ページバッファーに読み込まれた前記ページデータに対して、次に前記データ出力手段からページ取得要求があった場合、実時間で読み出し可能なように前記リンクリストを設定する
ことを特徴とする画像形成方法。
【発明を実施するための形態】
【0010】
<実施の形態>
〔画像形成装置1の全体の構成〕
まず、
図10を参照して、画像形成装置1のシステム構成について説明する。
【0011】
画像形成装置1は、画像処理部11、原稿読取部12、原稿給送部13、搬送部(給紙ローラー42b、搬送ローラー44、排出ローラー45)、ネットワーク送受信部15、操作パネル部16、画像形成部17(画像形成手段)、主記憶部18(主記憶手段)及び補助記憶部19(補助記憶手段)等が、バス等により制御部10に接続されている。各部は、制御部10によって動作制御される。
【0012】
制御部10は、GPP(General Purpose Processor)、CPU(Central Processing Unit、中央処理装置)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)、ASIC(Application Specific Processor、特定用途向けプロセッサー)等の情報処理手段である。
制御部10は、補助記憶部19のROMやHDDに記憶されている制御プログラムを読み出して、この制御プログラムを主記憶部18のRAMに展開させて実行することで、後述する機能ブロックの各手段として動作させられる。また、制御部10は、図示しない外部の端末や操作パネル部16から入力された所定の指示情報に応じて、装置全体の制御を行う。
【0013】
画像処理部11は、DSP(Digital Signal Processor)やGPU(Graphics Processing Unit)等の制御演算手段である。画像処理部11は、画像データに対して所定の画像処理を行う手段であり、例えば、拡大縮小、濃度調整、階調調整、画像改善等の各種画像処理を行う。
画像処理部11は、原稿読取部12で読み取られた画像を、補助記憶部19に印刷データとして記憶する。この際、画像処理部11は、印刷データをPDFやTIFF等のフォーマットのファイル単位に変換することも可能である。
【0014】
原稿読取部12は、セットされた原稿を読み取る(スキャン)手段である。
原稿給送部13は、原稿読取部12で読み取られる原稿を搬送する手段である。
画像形成部17は、ユーザーの出力指示により、補助記憶部19に記憶され、原稿読取部12で読み取られ、又は外部の端末から取得されたデータから記録紙への画像形成を行わせる手段である。
搬送部は、給紙カセット42a(
図11)から記録紙を搬送し、画像形成部17で画像形成させ、その後にスタックトレイ50へ搬送する。
なお、原稿読取部12、原稿給送部13、搬送部、画像形成部17の動作については後述する。
【0015】
ネットワーク送受信部15は、LAN、無線LAN、WAN、携帯電話網等の外部ネットワークに接続するためのLANボードや無線送受信機等を含むネットワーク接続手段である。
ネットワーク送受信部15は、データ通信用の回線ではデータを送受信し、音声電話回線では音声信号を送受信する。
【0016】
操作パネル部16は、LCD等の表示部と、テンキー、スタート、キャンセル、複写やFAX送信やスキャナー等の動作モードの切り換えのボタン、選択された文書の印刷や送信や保存や記録等に関するジョブの実行に係る指示を行うためのボタンやタッチパネル等の入力部とを備えている。
操作パネル部16は、ユーザーによる画像形成装置1の各種ジョブの指示を取得する。また、操作パネル部16から取得したユーザーの指示により、各ユーザーの情報を入力、変更することも可能である。
【0017】
主記憶部18は、DRAM(Dynamic Random Access Memory)、SRAM、MRAMのような半導体メモリー等の記憶手段である。主記憶部18は、補助記憶部19から読み出され展開されたプログラムやデータを記憶する。
【0018】
補助記憶部19は、ROM(Read Only Memory)やSSD(Solid State Drive)やオンボードの半導体メモリーやHDD(Hard Disk Drive)等の記憶手段である。補助記憶部19は、各種プログラムやデータを記憶している。
また、補助記憶部19には画像形成装置1の動作制御を行うための制御プログラムが記憶されている。また、補助記憶部19には、ユーザー毎の保存フォルダーの領域が含まれていてもよい。
また、補助記憶部19は、データ出力部130(
図1)がデータを出力する速度等である所定速度よりも読み出し及び書き込み速度が高速である。
また、補助記憶部19は、制御部10を介さずにDMA(Direct Memory Access)転送による書き込み/読み出しが可能である。また、補助記憶部19の書き込み/読み出し用の専用コントローラーを備えていてもよい。
【0019】
なお、画像形成装置1において、制御部10及び画像処理部11は、GPU内蔵CPU等やチップ・オン・モジュールパッケージのように、一体的に形成されていてもよい。
また、制御部10及び画像処理部11は、RAMやROMやフラッシュメモリー等を内蔵していてもよい。
また、画像形成装置1は、ファクシミリの送受信を行うFAX送受信部を備えていてもよい。
【0020】
〔画像形成装置1の動作〕
次に、
図11を参照して、本発明の実施の形態に係る画像形成装置1の動作について説明する。
原稿読取部12は、本体部14の上部に配設され、原稿給送部13は、原稿読取部12の上部に配設されている。スタックトレイ50は、本体部14に形成された記録紙の排出口41側に配設され、また、操作パネル部16は、画像形成装置1のフロント側に配設されている。
【0021】
原稿読取部12は、スキャナー12aと、プラテンガラス12bと、原稿読取スリット12cとを備えている。スキャナー12aは、露光ランプ、及びCCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)撮像センサー等から構成され、原稿給送部13による原稿の搬送方向に移動可能に構成されている。
プラテンガラス12bは、ガラス等の透明部材により構成された原稿台である。原稿読取スリット12cは、原稿給送部13による原稿の搬送方向と直交方向に形成されたスリットを有する。
【0022】
プラテンガラス12bに載置された原稿を読み取る場合には、スキャナー12aは、プラテンガラス12bに対向する位置に移動され、プラテンガラス12bに載置された原稿を走査しながら原稿を読み取って画像データを取得して、取得した画像データを本体部14に出力する。
また、原稿給送部13により搬送された原稿を読み取る場合には、スキャナー12aは原稿読取スリット12cと対向する位置に移動され、原稿読取スリット12cを介し、原稿給送部13による原稿の搬送動作と同期して原稿を読み取って画像データを取得し、取得した画像データを本体部14に出力する。
【0023】
原稿給送部13は、原稿載置部13aと、原稿排出部13bと、原稿搬送機構13cとを備えている。原稿載置部13aに載置された原稿は、原稿搬送機構13cによって、1枚ずつ順に繰り出されて原稿読取スリット12cに対向する位置へ搬送され、その後、原稿排出部13bに排出される。
なお、原稿給送部13は、可倒式に構成され、原稿給送部13を上方に持ち上げることで、プラテンガラス12bの上面を開放させることができる。
【0024】
本体部14は、画像形成部17を備えると共に、給紙部42と、用紙搬送路43と、搬送ローラー44と、排出ローラー45とを備えている。給紙部42は、それぞれサイズ又は向きが異なる記録紙を収納する複数の給紙カセット42aと、給紙カセット42aから記録紙を1枚ずつ用紙搬送路43に繰り出す給紙ローラー42bとを備えている。給紙ローラー42b、搬送ローラー44、及び排出ローラー45は、搬送部として機能する。記録紙は、この搬送部により搬送される。
給紙ローラー42bによって用紙搬送路43に繰り出された記録紙は、搬送ローラー44によって画像形成部17に搬送される。そして、画像形成部17によって記録が施された記録紙は、排出ローラー45によってスタックトレイ50に排出される。
【0025】
画像形成部17は、感光体ドラム17aと、露光部17bと、現像部17cと、転写部17dと、定着部17eとを備えている。露光部17bは、レーザー装置やミラーやレンズやLEDアレイ等を備えた光学ユニットであり、画像データに基づいて光等を出力して感光体ドラム17aを露光し、感光体ドラム17aの表面に静電潜像を形成する。現像部17cは、トナーを用いて感光体ドラム17aに形成された静電潜像を現像する現像ユニットであり、静電潜像に基づいたトナー像を感光体ドラム17a上に形成させる。転写部17dは、現像部17cによって感光体ドラム17a上に形成されたトナー像を記録紙に転写させる。定着部17eは、転写部17dによってトナー像が転写された記録紙を加熱してトナー像を記録紙に定着させる。
【0026】
〔画像形成装置1のシステム構成〕
図1を参照し、画像形成装置1のシステム構成について説明する。
画像形成装置1は、データ入力部100(データ入力手段)、非同期データライト部110(非同期データ書き込み手段)、データ先読み部120(データ先読み手段)、データ出力部130(データ出力手段)、及びデータ削除部140(データ削除手段)を備えている。
主記憶部18(主記憶手段)には、複数のページバッファー200、及びバンドバッファー210の領域が確保されている。また、主記憶部18には、リンクリスト320が記憶されている。ページバッファー200には、ページデータ300が保存される。バンドバッファー210には複数のバンドデータ310が保存される。リンクリスト320は、ページデータ300及びバンドデータ310を参照させる。
補助記憶部19(補助記憶手段)には、ページデータ300が保存される。
【0027】
データ入力部100は、原稿読取部12、ネットワーク送受信部15に接続された外部の端末やサーバー(図示せず)、外部記録媒体(図示せず)等から、文書データ500を入力する。
【0028】
非同期データライト部110は、データ入力部100により入力された文書データ500を、所定出力単位としてページデータ300単位で複数のページバッファー200の一つに記憶させる。また、非同期データライト部110は、ページバッファー200の一つに記憶されたページデータ300を、データ出力部130の出力とは非同期に補助記憶部へ保存する。
また、非同期データライト部110は、ページバッファー200の全てにページデータ300が書き込まれており、データ入力部100により入力された文書データ500中のページデータ300をページバッファー200のいずれにも保存できない場合、ページデータ300の一部であり、ページデータ300よりも容量の小さい所定単位であるバンドデータ310単位ずつバンドバッファー210及び補助記憶部19に保存する。なお、ページデータ300は、所定数のバンドデータ310を含んで構成されている。
【0029】
データ先読み部120は、データ出力部130からページデータ300の取得要求があった場合、ページバッファー200の一つに保存された当該ページデータ300の次に出力されるページデータ300が他のページバッファー200になければ、非同期データライト部110により補助記憶部に保存されたページデータ300を他のページバッファー200に読み出す。つまり、データ先読み部120は、ページデータ300の取得要求で取得されるページデータ300の次のページデータ300を先読みする。
【0030】
データ出力部130は、データ先読み部120により先読みされてページバッファー200の一つに保存されたページデータ300、又はデータ入力部100により入力されてページバッファー200の一つに保存されたページデータ300を、ページバッファー200からページデータ300単位ずつ読み出して所定速度で出力する。データ出力部130は、この読み出しの際に他の各部に、ページデータ300の取得要求(以下、ページ取得要求という。)のイベントの送信を行う。
【0031】
データ削除部140は、出力が完了した所定出力単位のデータをページバッファー200の一つから削除する。データ削除部140は、この際に、ページ消去のイベントの送信を行う。
【0032】
データ入力部100、非同期データライト部110、データ先読み部120、データ出力部130、及びデータ削除部140の間では、ページ取得要求及びページ消去のイベントに加え、ページバッファー200のページデータ300の書き込み要求、ページバッファー200へのページデータ300の書き込み/読み出しの開始/完了、補助記憶部19へのページバッファー200又はバンドバッファー210の書き込み/読み出しの開始/完了、バンドバッファー210のバンドデータ310の書き込み/読み出しの開始/完了等の各種イベントを送受信可能である。各部は、例えば、待ち状態の際にイベントを受信して、当該イベントによりタイミングを調整して後述する各処理を行う。
【0033】
また、画像形成装置1の制御部10は、補助記憶部19に記憶された制御プログラムを実行することで、データ入力部100、非同期データライト部110、データ先読み部120、データ出力部130、及びデータ削除部140として機能する。
また、上述の画像形成装置1の各部は、本発明の画像形成方法を実行するハードウェア資源となる。
【0034】
次に、
図2を参照して、データ入力部100(
図1)により入力される文書データ500の構成について説明する。
文書データ500は、一以上〜複数のページデータ300により構成されている。ページデータ300は、所定出力単位のデータである。また、ページデータ300は、所定単位の複数ラインをまとめられたバンドデータ310を所定数含んでいる。バンドデータ310は、所定出力単位のページデータ300よりも小さい所定単位のデータである。
【0035】
また、文書データ500は、リンクリスト320により、文書データ500、ページデータ300、バンドデータ310がそれぞれ参照されている。
リンクリスト320は、バンドデータ310の検索が高速化するため
、例えば、文書データ500のリストの層(文書データ層)、ページデータ300のリストの層(ページデータ層)、バンドデータ310のリストの層(バンド層)のような三階層のツリー構造のデータ構造を用いることが好適である。この場合、例えば、文書データ層とページデータ層はブランチノードのリンクリスト320になり、バンド層は要素のリンクリスト320となる。
つまり、文書データ500は、これらのリンクリスト320により、物理的なアドレス空間が、論理アドレス空間にマッピングされる。これにより、文書データ500は、データ出力部130からは、シーケンシャルに出力されているかのように途切れなく出力することができる。
また、リンクリスト320は、ページデータ300及びバンドデータ310が主記憶部18及び補助記憶部19にあるか否かに関係なく参照させることができる。
【0036】
〔画像形成装置1による非同期データ保存処理、データ先読み処理、データ出力処理〕
次に、
図3〜
図9を参照して、本発明の実施の形態に係る画像形成装置1による非同期データ保存処理、データ先読み処理、データ出力処理の説明を行う。
これらの処理では、所定速度で画像形成部17にて出力するため、入力される文書データ500を読み出し、ページバッファー200とバンドバッファー210と補助記憶部19とへの書き込みを行う。また、これらの処理では、文書データ500の入力から出力までを、一つのジョブとして管理して行う。
また、これらの処理は、主に制御部10が、補助記憶部19に記憶されたプログラムを主記憶部18に展開して、各部と協働し、ハードウェア資源を用いて実行する。また、これらの処理は、主に制御部10が、複数のスレッドやプロセス(以下、「スレッド等」という。)を起動して、同期データ保存処理は非同期データライト部110により、データ先読み処理はデータ先読み部120により、データ出力処理はデータ出力部130及びデータ削除部140により、同時並行的にファイル単位での書き込み/読み出しを行うことで実現させる。つまり、制御部10は、別スレッド等により、ファイル単位でのデータの書き込みと読み出しを並列的に動作させる。
以下で、
図3〜5のフローチャートを参照して、非同期データ保存処理、データ先読み処理、データ出力処理の各処理の詳細をステップ毎に説明する。
【0037】
図3を参照して、非同期データライト部110による非同期データ保存処理について説明する。
【0038】
(ステップS100)
まず、制御部10が、初期化処理を行う。
制御部10は、ジョブの開始時に、主記憶部18にページバッファー200とバンドバッファー210の領域を確保してクリアし、「空き」の状態にする。
また、制御部10は、補助記憶部19への書き込み/読み出しを並行に行うために補助記憶部19へそれぞれ書き込み及び読み出しを行わせるスレッド等を作成し起動させる。制御部10は、文書データ500のジョブ一つにつき書き込み/読み出しそれぞれ専用のスレッド等を作成し起動させる。下記で説明する非同期データライト部110による非同期の保存、データ先読み部120による同期/非同期の書き込み/読み出しのどちらの要求もスレッド等を解して行う。制御部10は、各スレッド等により、指定されたジョブの文書データ500に対してイベントを受信した場合、ページバッファー200のページデータ300等の参照を行う。
【0039】
なお、この非同期の読み出し/書き込みのため、スレッド等へイベントを送信するためのキュー(queue)を主記憶部18に記憶させてもよい。
この際、例えば、posix使用のメッセージキュー(MsgQueue())はSend済みのイベントの取り消しができないため使用しない方がよい。また、書き込み/読み出しの各スレッド等は、ページデータ300又はバンドデータ310を参照させるため、主記憶部18上に記憶されたリンクリスト320を含めて送信してもよい。また、キューのサイズは、例えば、文書データ500の容量に合わせて用意してもよい。
また、以下で説明するデータ先読み部120によるデータ先読み処理、データ出力部130によるデータ出力処理においても、スレッド等の作成により同様に書き込み/読み出しの処理を行う。
なお、
図6〜
図9においては、各ページデータ300a〜300dに対応するバンドデータ310を、それぞれ、311a〜311c、312a〜312c、313a〜313c、314a〜314bとして示す。
【0040】
(ステップS101)
次に、制御部10が、入力データ取得処理を行う。
制御部10は、データ入力部100から、文書データ500のページデータ300を一つ取得する。
制御部10は、他の端末やサーバー(図示せず)から送信される連続してシーケンシャルに送信される文書データ500をネットワーク送受信部15から取得する。
また、制御部10は、原稿読取部12に載置された原稿を文書データ500として読み取って取得してもよい。
また、制御部10は、外部に接続された記録媒体(図示せず)から文書データ500を取得してもよい。
【0041】
(ステップS102)
次に、制御部10が、主記憶部18に確保された複数のページバッファー200に空きがあるか否かを判定する。制御部10は、ページデータ300を保存可能な「空き」のページバッファー200があった場合に、Yesと判定する。制御部10は、それ以外の場合には、Noと判定する。
Yesの場合、制御部10は、処理をステップS103に進める。
Noの場合、制御部10は、処理をステップS104に進める。
【0042】
(ステップS103)
ページバッファー200に空きがあった場合、制御部10が、ページバッファー出力処理を行う。
制御部10は、データ入力部100から入力されたページデータ300を、複数のページバッファー200のうち「空き」のページバッファー200の一つに保存する。制御部10は、当該ページバッファー200への保存が完了した後に、ページバッファー200への書き込み完了のイベントを送信する。
図6及び
図7を参照して説明すると、
図6の例では、データ出力部130からのデータ出力前に、ページバッファー200aにページデータ300aを保存している。また、
図7の例では、データ出力部130からのページデータ300aの出力中にページデータ300bを保存している。
その後、制御部10は、処理をステップS105に進める。
【0043】
また、制御部10は、入力されたページデータ300について、補助記憶部19へのページデータ300の保存を行い、主記憶部18のページバッファーを消さないモードに設定してもよい。
制御部10は、ジョブによる文書データ500のオープンとクローズの管理を行うために、スレッド等による管理を行ってもよい。この際、書き込みだけでなく読み出しも専用スレッド等で行ってもよい。
【0044】
(ステップS104)
ページバッファー200に空きがなかった場合、制御部10が、バンドデータ出力処理を行う。
制御部10は、データ入力部100により入力されたデータをページバッファー200に保存できない場合、当該ページデータ300よりも小さいバンドデータ310の単位ずつ補助記憶部19に保存する。
図8を参照すると、制御部10は、「空き」のページバッファー200がない場合、例えば、二つ以上のバンドデータ310を保存可能なバンドバッファー210に、ページデータ300のバンドデータ310を保存する。この際、制御部10は、補助記憶部19に保存
し、保存後にバンドバッファー210内のバンドデータ310を削除するモードに設定する。
図8の例では、制御部10は、ページデータ300cのバンドデータ310aをバンドバッファー210へ保存している。
制御部10は、バンドバッファー210にバンドデータ310の保存が完了する度に、バンドデータ310の書き込み完了のイベントを送信する。
【0045】
(ステップS105)
ここで、制御部10が、非同期保存処理を行う。
制御部10は、ページバッファー200の一つに記憶されたページデータ300を、補助記憶部19へ非同期で保存する。
図6及び
図7を再び参照すると、制御部10は、補助記憶部19にデータ入力部100により入力されたページデータ300を、補助記憶部19に保存していき、データ入力部100によるデータの入力を停止させないようにする。
図6ではページバッファー200aに保存されたページデータ300aを補助記憶部19へ保存し、
図7ではページバッファー200bに保存されたページデータ300bを補助記憶部19へ保存している。
制御部10は、補助記憶部19への保存は、読み出しのスレッド等とは別の書き込み用のスレッド等で非同期に行う。この際、制御部10は、書き込み用のスレッド等により、ページバッファー200又はバンドバッファー210から、例えば、4KB等の単位で分割してファイルへ書き込み、fflush()等によりフラッシュし、書き込みを完了させる。
制御部10は、補助記憶部19への保存後に、ページデータ300の書き込み完了のイベントを送信する。
【0046】
この処理において、制御部10は、書き込み用のスレッド等の場合書き込みするファイル名を読み出し用のスレッド等に送信し、補助記憶部19へファイルハンドルを作成してから書き込みさせる。読み出し用のスレッド等は、待機状態になっている場合、書き込み用のスレッド等の補助記憶部19への書き込みが終了した旨を通知する。また、読み出しのスレッド等は、受信したファイル名により別のファイルハンドルを作成して、補助記憶部19から読み出しする。
制御部10は、ページデータ300を、オープン、書き込み、フラッシュ、書き込み、フラッシュ、……、クローズの順番に、バンドデータ310の単位で書き込みしてフラッシュする。このために1つのページデータ300に対して、ファイルハンドルは一つあればよい。また、このように、制御部10がページデータ300をバンドデータ310単位で書き込み/読み出しするため、バンドデータ310を書き込みしている際に、別のバンドデータ310の読み出しが可能になり、書き込み/読み出しが並行的に動作させることが可能となる。
【0047】
制御部10は、ページバッファー200又はバンドバッファー210の書き込みが終了した場合、各部へ書き込み終了のイベント通知を行う。
また、制御部10は、バンドデータ310の書き込みが終了したらバンド層のリンクリスト320を設定し、ページデータ300の書き込みが終了したらページデータ層のブランチのリンクリスト320を設定する。リンクリスト320が枯渇した場合は、待ち処理に入り、後述するページバッファー200の消去後に、リンクリスト320解放のイベントを受けて再度、リンクリスト320を取得する再トライ処理を行ってもよい。
また、制御部10は、バンドデータ310出力処理にてバンドデータ310の書き込み完了のイベントを受信する毎に、バンドデータ310を補助記憶部19に保存してバンドバッファー210から消去してもよい。この際、制御部10は、補助記憶部19に保存されたバンドデータ310がページデータ300単位のサイズに到達したか確認し、ページデータ300単位のサイズに到達した場合は、補助記憶部19へのページデータ300の保存完了のイベントを送信する。
以上により、本発明の実施の形態に係る非同期データ保存処理を終了する。
【0048】
次に、
図4を参照して、データ先読み部120によるデータ先読み処理について説明する。
【0049】
(ステップS201)
まず、制御部10が、出力待機処理を行う。
制御部10は、ページ出力部がページを出力している間、待機する。
この処理では、制御部10は、下記に示すように、ページ取得要求のイベントがあるまで待機する。
【0050】
(ステップS202)
次に、制御部10が、ページ取得要求があったか否かを判定する。制御部10は、データ出力部130からのページ取得要求のイベントを受信した場合に、Yesと判定する。制御部10は、それ以外の場合には、Noと判定する。
Yesの場合、制御部10は、処理をステップS203に進める。
Noの場合、制御部10は、処理をステップS201に戻して待機を続ける。
【0051】
(ステップS203)
ページ取得要求があった場合、制御部10が、次ページデータ確認処理を行う。
制御部10は、データ出力部130によるページ取得要求にて取得されるページデータ300が保存されたページバッファー200が存在することを確認する。
制御部10は、当該ページデータ300の次に出力されるページデータ300があるか否かについて、他のページバッファー200を検索して確認する。
【0052】
(ステップS204)
次に、制御部10が、次に出力されるページデータ300が他のページバッファー200にあるか否かを判定する。
制御部10は、次ページデータ300確認処理にて、他のページバッファー200に、データ出力部130が次に出力するページデータ300が検索された場合に、Yesと判定する。制御部10は、それ以外の場合、つまり、データ出力部130によるページ取得要求にて取得されるページデータ300の次に出力されるページデータ300が他のページバッファー200に存在しない場合にはNoと判定する。
Yesの場合、制御部10は、データ先読み処理を終了する。
Noの場合、制御部10は、処理をステップS205に進める。
【0053】
(ステップS205)
データ出力部130からのページ取得要求により出力されるページデータ300の次のページデータ300が他のページバッファー200になければ、制御部10は、先読み処理を行う。
制御部10は、データ出力部130からのページデータ300の出力に先行して、次のページデータ300を補助記憶部19から主記憶部18の「空き」のページバッファー200へ読み込む。
図9の例を参照すると、制御部10は、データ出力部130が出力するページデータ300bの次のページデータ300cを、ページバッファー200aに保存している。
【0054】
また、読み込むページデータ300が非同期データライト部110により補助記憶部19に書き込み中の場合、又は書き込み用のスレッド等のリンクリスト320にある場合、主記憶部18のページバッファー200上に当該ページデータ300が残っている。このため、制御部10は、このページデータ300をそのまま利用してリンクリスト320を設定し、補助記憶部19側の書き込みを停止させるイベントを非同期データライト部110へ送信してもよい。
また、制御部10は、主記憶部18のメモリー容量の空きがあれば、複数のページデータ300を読み込んでおいてもよい。また、制御部10は、他のページバッファー200に読み込まれたページデータ300に対して、次にデータ出力部130からページ取得要求があった場合、リアルタイム(実時間)で読み出し可能なように、リンクリスト320等を設定してもよい。また、制御部10は、次のページデータ300のバンドデータ310を、例えば二つ分、バンドバッファー210に先読みしてもよい。
以上により、本発明の実施の形態に係るデータ先読み処理を終了する。
【0055】
次に、
図5を参照し、データ出力部130及びデータ削除部140によるデータ出力処理について説明する。
【0056】
(ステップS301)
まず、制御部10が、データ出力部130により、バッファー読み出し処理を行う。
制御部10は、ページ取得要求のイベントを送信する。制御部10は、読み出しを行うページデータ300が参照されたリンクリスト320から、読み出しを行うページバッファー200を指定する。制御部10は、この読み出しの指定を行うページバッファー200として、データ入力部100により入力されたページデータ300が保存されたページバッファー200、又はデータ先読み部120により先読みされたページデータ300が保存されたページバッファー200のいずれかを指定可能である。
制御部10は、指定したページバッファー200からページデータ300を読み出して出力可能な状態になった場合、読み出し開始のイベントを送信する。
【0057】
また、制御部10は、読み出しの際、指定したページバッファー200内に読み出し分のサイズのデータが書きこまれているか確認してもよい。制御部10は、読み出し分のサイズが書きこまれていない場合、出力を停止して、非同期データライト部110によるページバッファー200へのページデータ300の書き込み完了のイベントの受信を待ち、読み出しを再実行してもよい。
【0058】
(ステップS302)
次に、制御部10が、データ出力部130により、出力処理を行う。
制御部10は、指定されたページバッファー200から、ページデータ300を読み出して所定速度で出力し、画像形成部17等に送信する。
この際、補助記憶部19からの読み出しパフォーマンスが、ページデータ300の出力の速度より早ければ、所定速度で出力可能である。
図7〜
図9を再び参照すると、制御部10は、指定されたページバッファー200からページデータ300を出力する。
図7及び
図8の例では、制御部10は、ページバッファー200aからページデータ300aを出力している。
図9の例では、制御部10は、ページバッファー200bからページデータ300bを出力している。
【0059】
(ステップS303)
次に、制御部10が、データ出力部130により、ページデータ300の出力を完了したか否かを判定する。制御部10は、
図7及び
図8の例では、制御部10は、指定されたページバッファー200aからページデータ300aの出力を完了した場合に、Yesと判定する。
図9の例では、制御部10は、指定されたページバッファー200bからページデータ300bの出力を完了した場合に、Yesと判定する。制御部10は、それ以外の場合には、Noと判定する。
Yesの場合、制御部10は、処理をステップS304に進める。
Noの場合、制御部10は、処理をステップS302に戻して、ページデータ300の出力を続ける。
【0060】
(ステップS304)
ページバッファー200からページデータ300の出力が完了した場合には、制御部10が、データ削除部140により、バッファー削除処理を行う。
制御部10は、データ出力部130により読み出しが終了した補助記憶部19のページデータ300を消去する。これにより、当該ページバッファー200が「空き」の状態となる。また、制御部10は、消去されたページデータ300のリンクリスト320を進めて、消去されたページデータ300のリンクリスト320とバンドデータ310のリンクリスト320を解放する。進んだ先のリンクリスト320が参照するページバッファー200のページデータ300が新たに出力されるデータとなる。
制御部10は、ページデータ300の消去の完了後に、ページ消去のイベントを送信する。
図7及び
図8の例では、制御部10は、ページバッファー200aからページデータ300aを削除することになる。
図9の例では、指定されたページバッファー200bからページデータ300bを削除することになる。
【0061】
また、バッファー削除処理において、ページ消去のイベントを受信した場合、制御部10は、補助記憶部19へページデータ300が既に保存されているページバッファー200を消去して「空き」の状態にしてもよい。
これにより、データ先読み部120により、上述のデータ先読み処理を行うページバッファー200を確保しやすくすることができる。
【0062】
(ステップS305)
次に、制御部10が、データ出力部130により、文書データ500の出力が完了したか否かを判定する。
制御部10は、文書データ500の全てのページデータ300の出力を完了した場合には、Yesと判定する。制御部10は、それ以外の場合には、Noと判定する。
Yesの場合、制御部10は、処理をステップS306に進める。
Noの場合、制御部10は、処理をステップS301に戻して、ページデータ300の出力を続ける。
【0063】
(ステップS306)
文書データ500の出力が完了した場合、制御部10が、データ出力部130及びデータ削除部140により、終了処理を行う。
制御部10は、文書データ500の出力の完了の際に、ファイル書き込み用のスレッド等に対して、現在処理しているファイルのクローズ以外、すべてキューから削除させてもよい。
ここで、書き込み用のスレッド等のキューには、終了するジョブの文書データ500に対する非同期での補助記憶部19への書き込みのコマンドが残っている場合がある。キューに積まれている補助記憶部19への書き込み処理をすべて終了するまで待っていると、ジョブ終了が遅れる。このため、キューから削除させることで、無駄な補助記憶部19への書き込み処理を行う必要がなくなり、ジョブの終了を高速化できる。
また、制御部10は、補助記憶部19に記憶されたページデータ300やバンドデータ310についても削除し、リンクリスト320を全て解放する。
以上により、本発明の実施の形態に係るデータ出力処理を終了する。
【0064】
以上のように構成することで、以下のような効果を得ることができる。
従来、特許文献1の情報処理装置のような技術を画像形成装置に適用した場合、画像形成手段がペーパージャムや紙なし等で停止した時でも、スキャナーやネットワーク等から入力データが受信されるため、主記憶手段の容量が不足し、バッファーがオーバーフローするという問題があった。
これに対して、本発明の実施の形態に係る画像形成装置1は、ページデータ300を入力するデータ入力部100と、データ入力部100により入力されたページデータ300を、所定出力単位で複数のページバッファー200の一つに記憶させ、ページバッファー200の一つに記憶された所定出力単位のページデータ300を、所定速度よりも読み出し及び書き込み速度が高速な補助記憶部へ非同期で保存する非同期データライト部110と、ページバッファー200の一つから出力されるデータの次に出力される所定出力単位のページデータ300が他のページバッファー200になければ、非同期データライト部110により補助記憶部に保存されたページデータ300を他のページバッファー200に読み出すデータ先読み部120と、データ先読み部120により先読みされたページデータ300又はデータ入力手段により入力されたページデータ300を、ページバッファー200から所定出力単位ずつ読み出して所定速度で出力し、出力が完了した所定出力単位のデータをページバッファー200の一つから削除するデータ出力部130とを備えることを特徴とする。
このように構成することで、ペーパージャムや紙なし等で画像形成部17による出力が停止しても、入力された文書データ500のページデータ300で主記憶部18が占有されてしまうことがなくなる。このため、データ入力部100からの入力を主記憶部18のバッファーのオーバーフローがなくなり、継続して印刷をさせることができる。また、主記憶部18のメモリー容量の不足で、データ入力部100を停止等させる必要もなくなり安定して印刷を継続できる。
【0065】
また、従来、画像形成装置のデータ入力手段の速度が、画像形成を行う印字側より大きい場合、出力側の出力速度に依存し、データ入力手段がページデータ300の取得待ちで止まってしまうため、次のデータ入力ができず、効率が悪かった。
これに対して、本実施形態の画像形成装置1は、画像形成の速度がデータ入力の速度より速く、途中の画像処理もデータ入力のスピードより速く、2つのページデータ300分のページバッファー200の領域が主記憶部18上に確保できれば、データ入力部100のページデータ300入力と同様のスピードで連続に画像形成することができる。つまり画像形成部17のエンジンのスピードと同様のスピードで高速印刷を行うことが可能になる。
【0066】
また、ネットワーク送受信手段や原稿読取手段から入力されたページデータ300をデータ出力手段によりリアルタイムで取得するためには、ページデータ300がバッファー上にある必要がある。従来は、ページデータ300の取得にHDD等が介在するとリアルタイムにページデータ300の取得ができないので、出力のパフォーマンスが確保できなかった。
これに対して、本発明の実施の形態に係る画像形成装置1は、一旦、複数あるページバッファー200の一つにページデータ300を保存した後、このページデータ300を補助記憶部19へ非同期で保存し、次のページデータ300まで先読みする。このため、補助記憶部19への保存速度がデータ入力部100による入力速度より速ければ、データ入力部100からのページデータ300の入力スピードを低下させないで、データ出力部130の出力を行うことが可能となる。
【0067】
また、本発明の実施の形態に係る画像形成装置1は、非同期データライト部110が、データ入力部100により入力されたデータをページバッファー200に保存できない場合は、当該ページデータ300をページバッファー200よりも容量の小さい所定単位ずつ補助記憶部に保存することを特徴とする。
このように構成することで、ページバッファー200に保存できない場合であっても、より小さいバンドデータ310等の所定単位で、補助記憶部19に記憶させることができる。このため、主記憶部18に確保するページバッファー200の領域の記憶容量を削減でき、画像形成装置1のコストを削減できる。
【0068】
また、従来、HDDにすでに登録してある文書データ500をリードする場合、バンド単位の読み出し要求で、バンド分のデータを補助記憶部19から読み出し、システムメモリーにコピーしていた。これでは、バンド単位の読み出し要求毎に、HDDから読み込むことになるのでパフォーマンスが悪く、読み出し要求がまとめて入る場合にはHDDのコントローラーが常に制御を行うことになり、パフォーマンスが低下していた。つまり、従来は、CPUによるソフトウェア処理と、HDDのコントローラーによるハードウェアの処理とが直列的に行われていた。
これに対して、本発明の実施の形態に係る画像形成装置1は、ページデータ300又はバンドデータ310について、一つのバンドデータ310分の読み出しの要求がきた場合に、スレッド等により、次のバンドデータ310を先に複数のバンドデータ310分、補助記憶部19から読み出し、主記憶部18上にコピーしておくことが可能である。画像形成装置1は、この動作を、バンドデータ310の読み出し要求が来るたびに繰り返すように構成することができる。結果として、バンドデータ310の読み出しを行うスレッド等は、先頭のバンドデータ310以外について主記憶部18から読み込むため、パフォーマンスが上がる。つまり、ソフトウェア処理とハードウェア処理とが並列的に処理され、補助記憶部19からの読み出しのパフォーマンスを向上させることができる。
【0069】
また、従来、HDDの書き込みの速度が遅い場合や、HDDへのアクセスが多い場合には、単一のスレッド等でHDDへの書き込みを行うと、制御部へ処理を戻すまでに時間がかかっていた。つまり、書き込みを行うスレッドについては、次の書き込みまで待たされていた。
これに対して、本発明の実施の形態に係る画像形成装置1は、補助記憶部19へ書き込む専用のスレッド等を作成し起動させる。書き込み用のスレッド等と読み出し用のスレッド等を用意して、書き込み側へ補助記憶部19に書き込みする前に処理を戻す。これにより、並列的に補助記憶部19への書き込みと読み出しを行うことができ、各スレッドの動作効率を上げることができる。
【0070】
また、従来、データを同時に読み出し書き込みするような複数のジョブが起動すると、複数ドキュメントの複数ページが参照され、読み込むバンドのデータ数が莫大になる。このため、バンドを検索するのに、バンドのデータを毎回、先頭から検索すると検索時間に多くの時間を費やすことになっていた。
これに対して、本発明の実施の形態に係る画像形成装置1は、リンクリスト320を用いることで、複数のスレッドやジョブにより、バンドデータ310の保存された論理アドレスと物理アドレスとが異なる場合でも、バンドデータ310を素早く検索して、所定速度で出力可能となる。
【0071】
なお、上述の実施の形態では、入力するデータを画像形成装置1のページデータ300を含む文書データ500として、ページプリンター用の入出力を行う例について示したものの、これに限られない。
本発明は、データの出力手段側と入力手段側のデータ送受信スピードが異なり、RAM等のバッファーの他に、出力手段の出力する所定速度よりもデータの書き込み/読み出しが高速な補助記憶手段を備えた各種機器に適用できる。
たとえば、入力するデータとして、動画像や静止画像データ、音声データ、通信データ等の各種データについて、データの送受信を行うことが可能である。この場合、所定出力単位として、動画像や静止画像データのフレーム、音声データのチャンク、通信データのパケットやフレーム等の単位を用いてもよい。また、この場合、バッファーよりも容量の小さい所定単位として、動画像や静止画像データのフレーム内のチャンク、音声データのサンプリングデータの所定単位、通信データのパケットやフレーム等の一部等の単位を用いてもよい。また、入力されたデータを情報処理装置で変換して出力してもよい。
このように構成することで、画像形成装置1以外の情報処理装置においても、入力データでバッファオーバーフローを起こすことなく、出力することが可能となる。
【0072】
また、本発明は、画像形成装置以外の情報処理装置にも適用できる。つまり、ネットワークスキャナ、スキャナーをUSB等で別途接続したサーバー等を用いる構成であってもよい。
【0073】
また、上記実施の形態の構成及び動作は例であって、本発明の趣旨を逸脱しない範囲で適宜変更して実行することができることは言うまでもない。