以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、画像形成装置としての複合機(MFP:Multi Function Peripheral)を例として説明する。本実施形態に係る画像形成装置は、電子写真方式による複合機であり、画像形成出力を実行する際に生成されるレンダリングデータを不揮発性記憶媒体に格納する際に特徴的な処理を実行するものである。尚、画像形成装置は複合機でなくとも良く、例えば、複写機、プリンタ、ファクシミリ装置等であっても良い。また、以下の説明においては、画像形成出力の際のレンダリングデータを対象として説明するが、複写を実行する際にスキャナによるスキャンによって生成される画像データであるビットマップデータも同様に対象となり得る。
図1は本実施形態に係る複合機の構成を模式的に示すブロック図であり、主要部のみ図示し、その他の公知の各部は図示を省略する。本実施形態に係る複合機は、スキャナ部801とレーザー記録部802によって画像の形成、用紙への印字を行い、後処理部803によって出力紙揃え、ステープル、パンチ穴の処理を行う。
スキャナ部801は、透明ガラス体の原稿台804、その原稿台804の上面に原稿を給送する自動両面原稿送り装置(「RADF」という)805、原稿台804の上面に載置された原稿の画像を読み取るスキャナユニット806によって構成されている。スキャナ部801において読み取られた画像データは、レーザー記録部802に出力される。
RADF(Reverse Automaic Document Feeder)805は、図示を省略した原稿トレイから原稿台804を経由して、同じく図示を省略した排出トレイに至る片面原稿給送路、スキャナユニット806による片面の画像の読み取りが完了した原稿の表裏面を反転して再度原稿台に導く両面原稿給送路を有し、片面、両面の原稿どちらでも対応できる。
スキャナユニット806は、原稿を半導体レーザーが発生する光で照射し、レンズ、ミラー等で原稿の反射光を光電変換素子の受光面に結像させる。その光電変換素子は原稿の画像面における反射光を電気信号に変換し、後述する画像処理ボード826に出力する。
レーザー記録部802は、用紙を搬送する用紙搬送部807、レーザー書込ユニット808及び電子写真プロセス部(画像形成部)809を備えている。用紙搬送部807は、用紙の両面に画像を形成する両面複写モード時、定着ローラを通過した用紙を表裏面を反転して再度電子写真プロセス部809に導く副搬送路を備えている。
レーザー書込ユニット808は、画像処理部ボード826から供給される画像データに基づいてレーザー光を照射する半導体レーザー、その半導体レーザーから照射された光をミラーやレンズを通して電子写真プロセス部809の感光体ドラムの表面に配光する。
感光ドラム表面は静電潜像が形成され、現像装置からトナーが供給されることにより、トナー画像に顕在化される。このトナー画像は用紙搬送部807から導かれた用紙上に転写され、その後、定着ローラにより、加熱及び加圧を受け、トナー画像が溶融して用紙の表面に定着する。このようにして、用紙に画像の書き込みが終了した後、後処理部803において一部分の出力用紙が揃えられ、ステープル、パンチ穴の処理が行われ、トレーに排出される。
次に、本実施形態に係る複合機全体の機能構成について図2を参照して説明する。図2に示すように、本実施形態に係る複合機の制御構成は、大きく分けて画像処理ボード926、マシンコントロールボード907、オペレーションパネルボード917、CCD(Charge Coupled Device)ボード922に分けられる。
マシンコントロールボード907は、本実施形態に係る複合機内のプロセス部903、読取スキャナ部902、両面ユニット901を含む各機器を管理する。マシンコントロールボード907に含まれるCPU(Central Processing Unit)911は、作業領域であるRAM(Random Access Memory)910に読み出された、プロセス部903等の機器を制御するための制御用プログラムに従って演算を行うことにより、各機器の制御を行う。
オペレーションパネルボード917は、本実施形態に係る複合機の上面に設けられたLCD(Liquid Crystal Display)912と操作キー913を含む操作パネル914を管理する。オペレーションパネルボード917に含まれるCPU915は、作業領域であるRAM916に読み出された、操作パネル914の制御用プログラムに従って演算を行うことにより、操作パネル914の制御を行う。
CCDボード922は、スキャナユニット806を構成するための光電変換素子であるCCD921、CCD921を制御するCCD制御部920、CCD921が出力したアナログ信号を処理するアナログ回路918、アナログ回路918によって処理されたアナログ信号をデジタル信号に変換して画像処理ボード926に入力するA/D変換部919が搭載されたハードウェアである。
画像処理ボード926は、ネットワークを介して入力された印刷ジョブや、オペレーションパネルボード917から入力されたコピー実行の命令等に基づき、画像処理に関する制御を行う。画像処理ボード926においては、CPU928が、DRAM(Dynamic RAM)927に読み出されたプログラムに従って全体を制御すると共に、IPU(Image Proccessing Unit) ASIC(Application Spacific Integrated Circuit)925がマシンコントロールボード907及びCCDボード922との間で画像情報のやり取りを行う。
これに対して、マシンコントロールボード907は、主として機器の機械的な動作を制御する。従って、画像処理ボード926のCPU928と、マシンコントロールボード907のCPU911とは、画像処理による画像情報の流れと機器の動作とを合わせるため、通信によってやり取りをしながら制御を実行する。
IPU ASIC925はスキャナからの入力信号の色変換や濃度変換等の画像処理やプリンタへの出力信号の階調変換等の画像処理を行うASICである。CPU928はIPU ASIC925とPCIe(Peripheral Component Interconnect Express) I/Fで接続されている。コピー使用時にはIPU ASIC925からのスキャナの入力信号をDRAM927に蓄え、IPU ASIC925側にプリンタ出力用に出力する。
画像回転処理が必要な場合には、CPU928が、DRAM927に蓄えられたデータに対して回転処理を行い、再度DRAM927に書き込み、書き込み終了後IPU ASIC925側に出力する。1部の原稿から複数部のコピー出力を得る電子ソートを行う場合にはDRAM927から画像データをNANDフラッシュメモリ929に原稿1部分の画像データをすべて書き込み後、NANDフラッシュメモリ929から画像データを読み出し、DRAM927に展開してプリンタ出力する。
これを複数部繰り返すことにより、電子ソートの機能が実現できる。プリンタ使用時には、CPU928が、画像処理ボード926に設けられた図示しないネットワークインタフェースを介してネットワークに接続されたPC(Personal Computer)から印刷ジョブを受信し、DRAM927に一旦記憶する。
CPU928は、プリンタ言語によって記述された印刷ジョブを解読して、画像データとしてDRAM927に描画(レンダリング)を行い、描画終了後IPU ASIC925側に出力する。尚、上記レンダリングは、CPU928によるソフトウェア制御によって実行される場合の他、IPU ASIC925に含まれるハードウェアによって実行される場合があり得る。プリンタで電子ソートを行う場合、CPU928は、コピーと同様に、原稿1部分の画像データをすべてDRAM927から画像データをNANDフラッシュメモリ929に書き込み、NANDフラッシュメモリ929から画像データを読み出し、DRAM927に展開してプリンタ出力する。これを複数部の出力に応じて繰り返すことにより電子ソートが実現される。
ドキュメントBOXは画像を登録して蓄積する機能であり、1度蓄積を行えば、好きな時に読み出して何度も出力することが可能である。ドキュメントBOXの画像を蓄積する場合にはDRAM927に蓄積した画像データをNANDフラッシュメモリ929に蓄積する。これはスキャナ入力からの画像データとネットワークインタフェースからのプリンタ言語を描画した画像データの両方に適用できる。
次に、この本実施形態に係る複合機におけるコピーモードの画像データの処理について説明する。原稿のコピーにおいては、CPU905によって制御されたRADF904により原稿台804に給送された原稿の画像がスキャナユニット806によって順次読みとられる。
スキャナユニット806内においては、CCDボード922上のCCD921がCCD制御部920によって駆動される。CCD921による光電変化によって出力された信号はアナログ回路918でゲイン調整が行われ、A/D変換部919から8ビットの画像データとして画像処理ボード926に送られる。
CCDボード922から画像処理ボード926に入力された画像データは、IPU ASIC925において所定の画像処理が施された後、CPU928により、1度DRAM927に蓄えられる。DRAM927に蓄えられた画像は次にNANDフラッシュメモリ929に格納される。これらの処理がRADF904にセットされた全ての原稿について実行される。
画像の読み取り終了後、NANDフラッシュメモリ929に格納された複数枚の画像データはCPU928により、ページ順に読み出す処理が設定部数回だけ繰り返して実行され、IPU ASIC925において所定の画像処理後、レーザーコントロール部923を介してレーザー書込部924に供給され、用紙に画像の書き込みが終了した後、CPU909によって制御された後処理部908において一部分の出力用紙が揃えられ、ステープル、パンチ穴の処理が行われ、トレーに排出される。従って各原稿の画像を複数部ずつ画像形成する場合にも各原稿の画像についての読み取り動作を1回のみ行うだけでよい。
次に、NANDフラッシュメモリ929へのデータ書き込みに関係するプログラムの構成について、図3を参照して説明する。図3に示すように、NANDフラッシュメモリ929へのデータ書き込みに関係するプログラムとしては、複合機によるコピー動作を制御するコピーアプリ301、複合機によるプリンタ動作を制御するプリンタアプリ302、複合機に含まれる記憶装置へのアクセスを管理する記憶管理プログラム303及びNANDフラッシュメモリ929へのアクセスを制御するNAND制御プログラム304がある。これらのプログラムは、全てDRAM927上に読み出され、CPU928がこれらのプログラムに従って演算を行うことにより機能する。
コピーアプリ301はスキャナから読みこまれる画像データのハンドリングをするプログラムである。プリンタアプリ302はプリンタ画像のハンドリングを行うプログラムである。上述したように、CPU928若しくはIPU ASI C925によるレンダリングによって生成されたレンダリングデータは、通常はDRAM927に格納されるが、所定の条件に合致する場合、DRAM927に格納された後、NANDフラッシュメモリ929に格納される。コピーアプリ301及びプリンタアプリ302に従って演算を行うCPU928は、レンダリングにより生成されたレンダリングデータを記憶媒体に格納する際、その格納先をDRAM927とするかNANDフラッシュメモリ929とするか判断する。
記憶管理プログラム303は、コピーアプリ301及びプリンタアプリ302に従って演算を行うCPU928がNANDフラッシュメモリ929のような不揮発性記憶媒体との間でやりとりする画像データのファイルシステム管理や蓄積領域の割り当てを行うプログラムである。
NAND制御プログラム304は論理アドレスを物理アドレスに変換したり、NANDフラッシュメモリ特有の読み書き制御をおこなったり、1度壊れたブロックを登録して使用しないようにするバッドブロック管理を行うプログラムである。また、本実施形態に係るNAND制御プログラム304によって提供される機能においては、NANDフラッシュメモリ929の記憶領域を、複数の領域に分割して管理しており、格納するデータの種類、用途に応じて夫々の領域を使い分ける。
図4は、本実施形態に係るNAND制御プログラム304による、NANDフラッシュメモリ929の記憶領域の分割管理の態様を示す図である。図4に示すように、本実施形態に係るNAND制御プログラム304においては、NANDフラッシュメモリ929の記憶領域を、テンポラリ領域201、ドキュメントBOX領域202、ログ領域203及びファイルシステム領域204に分けて管理する。
図4に示すような領域の分割は、論理アドレス上で分割されている。即ち、NAND制御プログラム304には、NANDフラッシュメモリ929の論理アドレスが図4に示す各領域のいずれに含まれるかを示す情報が含まれている。
テンポラリ領域201は、CPU928によるレンダリングによって生成されたレンダリングデータ、即ちビットマップデータが格納される領域である。換言すると、テンポラリ領域201は、画像形成出力を実行する画像形成部であるレーザー書込部924に入力するための描画情報を一次的に記憶するための一次記憶領域である。
ドキュメントBOX領域202はドキュメントBOX、即ち、複合機内に画像データを蓄積する用途で使用する領域であり、蓄積した画像データは複数回読みだして使用される。ログ領域203は機器のログ情報を蓄積する領域でシャットダウン時間や出力枚数情報等が記憶される。ファイルシステム領域204はNANDフラッシュメモリに記憶されたファイルの管理情報が記憶されている。ドキュメントBOX領域202、ログ領域203及びファイルシステム領域204は、テンポラリ領域201とは異なり、通常のルールに従って情報が記憶される通常記憶領域である。
尚、図4に示すファイルシステム領域204に格納されるファイル管理情報は、ドキュメントBOX領域202及びログ領域203に格納されるデータについてのファイル管理情報であり、テンポラリ領域201のファル管理情報は、NANDフラッシュメモリ929のファイルシステム領域204には格納されず、DRAM927に格納されている。これは、テンポラリ領域929に格納されるのは、印刷ジョブにおいて一次的に保持されるレンダリングデータであるため、複合機の電源OFFに応じて消去されても問題なく、むしろ消去されるべきだからである。
このようなファイルシステム領域の態様により、テンポラリ領域201についてのファイル管理情報を格納するべき記憶領域を、NANDフラッシュメモリ929上に設ける必要がないため、NANDフラッシュメモリ929の記憶領域を有効に利用することが可能となる。また、DRAM927には、NANDフラッシュメモリ929よりも高速にアクセス可能であるため、画像処理ボード926における処理時間を短縮することができる。
図4に示すような記憶領域の分割管理において、特にテンポラリ領域201を設けたこと及びテンポラリ領域201へのデータ書き込み処理の内容が本実施形態に係る要旨の1つである。
ここで、一般的なNANDフラッシュメモリ929に対するアクセスの態様について以下に説明する。図5は、一般的なNANDフラッシュメモリ929へのデータの書き込み方法を示す図である。NANDメモリは、データの書き込み/読み出しを「ページ」と呼ばれる単位で行なうが、消去は、複数のページをまとめた「ブロック」という単位で行なう必要がある。
ここで、既にデータの書き込み及び不要なデータの消去等が行われ、必要なデータと不要なデータとが混在している使用中のブロックに更にデータを書き込む場合を説明する。尚、上記データの消去とは、実際にページからデータが消去されたわけではなく、ファイルシステム上のインデックスが消去されたことを示す。このような不要なデータが格納されていたページについては、一度データを消去してからでないとデータを書き込むことができない。
このような場合、NAND制御プログラム304に従って演算を行うCPU928は、図5の(1)に示すように、まず必要なデータのみを空きのあるブロックにコピーする。そして、図5の(2)に示すように、対象のブロックに格納されているブロックのデータを消去する。その後、NAND制御プログラム304に従って演算を行うCPU928は、図5の(3)に示すように、更に書き込むべきデータを、(1)において必要なデータをコピーした空きのあるブロックの空きページに書き込み、ブロック全体のデータを元のブロックに書き戻す。
このようなデータの書き込み処理の態様は、「ブロックコピー」と呼ばれている。つまり、NANDフラッシュメモリでは、わずかなデータの変更のために、より多くのデータを書き込まなければならないというムダが発生するため、記憶媒体へのアクセスにおいて余計な処理時間を要する。また、書き込み回数が増加することにより、NANDフラッシュメモリにおいて記憶媒体となるメモリセルの劣化が進むという問題もある。
また、図5に示すように、書き込まれた後に長く保存されるデータと、消去されるデータとがある場合、書き換えが行われるブロックとそうでないブロックとが存在してしまい、ブロックによってメモリセルの劣化度合いが偏ってしまう。このような問題を有するNANDフラッシュメモリにおいては、ブロックごとの書き換え回数を監視して、同じエリアばかりに書き込みが集中しないように平均化するウェアレベリングという技術が用いられている。
例えば、ウェアレベリングの一態様によれば、図5に示すような「ブロックコピー」で最終的に書き込みがされるブロックとして、書き込み回数が少ないブロックを選択することにより、所定のブロックに書き込みが集中して全記憶領域において書き込み回数が偏らないようにする。
このようなブロックコピー及びウェアレベリングの処理は、NANDフラッシュメモリ929の記憶領域を効率的に利用すると共に、バッドブロックが生じるタイミングを可能な限り遅らせるために有効である。しかしながら、ブロックコピー及びウェアレベリングの処理により、記憶媒体にアクセスするために要する時間が増加するという課題がある。
例えば、上述したようなレンダリングデータの格納は、印刷ジョブの実行時にタイムリーに実行される。従って、NANDフラッシュメモリ929へのレンダリングデータの格納処理が印刷ジョブの実行においてボトルネックとならないよう、NANDフラッシュメモリ929へのレンダリングデータの格納は可能な限り迅速に完了する必要がある。このレンダリングデータの格納処理を迅速に完了することが、本実施形態に係る要旨の1つである。
次に、本実施形態に係るテンポラリ領域201の意義及びテンポラリ領域201へのデータ書き込み処理の内容について説明する。図5に示すブロックコピーの処理は、一のブロックにおける複数のページにデータを格納した後、その一部のページのデータを消去することにより、図5に示すように一のブロック中に必要ページと不要ページとが混在することによって必要となる処理である。
これに対して、図4に示すテンポラリ領域201は、上述したように、レンダリングによって生成されたレンダリングデータ、即ちビットマップのデータが格納される領域である。そして、レンダリングデータは、元となる画像データに係る印刷ジョブが完了した後は不要となり消去するべきデータである。即ち、レンダリングデータのみが格納されるテンポラリ領域については、図5に示すような必要データ及び不要データの混在は生じず、図5に示すようなブロックコピーの処理は不要である。
従って、NAND制御プログラム304に従って演算を行うCPU928は、テンポラリ領域201にデータを書き込む際、図5において説明したブロックコピーの処理を行わず、テンポラリ領域内における各ページへの書き込み回数を平均化するための簡易的な処理によってデータを書き込む。これにより、NANDフラッシュメモリ929へのレンダリングデータの格納処理を迅速化し、NANDフラッシュメモリ929へのレンダリングデータの格納が印刷ジョブの実行においてボトルネックとなることを避けている。
次に、NAND制御プログラム304に従って演算を行うCPU928が、NANDフラッシュメモリ929へデータを格納する際の処理について説明する。図6は、本実施形態に係るテンポラリ領域201へのデータの格納処理における格納先の指定の概念を示す図である。図6に示すように、NAND制御プログラム304に従って演算を行うCPU928は、テンポラリ領域201に含まれる複数のブロック0〜Nを、先頭から順番に巡回するようにデータを格納する。
例えば、一の印刷ジョブに係るレンダリングデータが、ブロック0〜ブロック3にわたって格納されたとする。この場合、NAND制御プログラム304に従って演算を行うCPU928は、次の印刷ジョブに係るレンダリングデータをテンポラリ領域201に格納する際、前の印刷ジョブにおいてレンダリングデータが格納された最後尾のアドレスの次のアドレスを先頭アドレスとして、レンダリングデータを格納する。
このように、テンポラリ領域201における記憶領域のアドレスの先頭から順にレンダリングデータを格納していき、テンポラリ領域201における最後尾のアドレスまでレンダリングデータを格納すると、NAND制御プログラム304に従って演算を行うCPU928は、またテンポラリ領域201における先頭のアドレスに戻ってレンダリングデータを格納する。以降、このようなテンポラリ領域201におけるレンダリングデータの格納方法を、巡回書き込み方法と称する。
ここで、上記「次のアドレス」とは、図5に示すようにブロックを構成するページ毎に判断しても良いし、最後尾のデータが格納されたブロックに未使用のページがあったとしても、次のブロックの先頭から次のデータを書き始めても良い。いずれの場合においても、完了した印刷ジョブのレンダリングデータは、その一部が消去されるようなことはないため、毎回の印刷ジョブにおけるレンダリングデータの格納に際して、前回の印刷ジョブに係るレンダリングデータが格納された記憶領域のアドレスの次のアドレスからレンダリングデータを格納することにより、テンポラリ領域201内の全ブロックに対して平均的にデータを書き込むことができる。
図6に示すような巡回書き込み方法は、記憶管理プログラム303側からNANDフラッシュメモリ929の記憶領域を指定するための論理アドレスと、NAND制御プログラム304に従って演算を行うCPU928がNANDフラッシュメモリ929にデータを書き込む際に記憶領域を指定するための物理アドレスとの関連付けを定める関連付けテーブルの制御によって実現される。
図7(a)、(b)は、本実施形態に係る論理アドレスと物理アドレスとの関連付けを定める関連付けテーブルの制御態様を示す図である。図7(a)に示すように、先ず、最初の印刷ジョブにおいて、論理アドレス0〜Mまでが指定された書き込み命令が発生する場合を考える。この場合、図7(a)に示すように、最初は論理アドレスと物理アドレスとが対応しており、書き込み命令に係るデータは、物理アドレス0〜Mの領域に書き込まれる。
このように物理アドレス0〜Mまでにデータが書き込まれると、NAND制御プログラム304に従って演算を行うCPU928が、論理アドレスと物理アドレスとの関連付けを定める関連付けテーブルを更新し、図7(b)に示すように論理アドレス0を物理アドレスのM+1に関連付ける。
これにより、図7(b)に示すように、次の印刷ジョブにおいて、再度論理アドレス0〜Mまでが指定された書き込み命令が発生すると、論理アドレス0は物理アドレスM+1に関連付けられているため、書き込み対象のデータは、物理アドレスM+1〜M+1+Mの領域に書き込まれる。この後、NAND制御プログラム304に従って演算を行うCPU928は、関連付けテーブルを更新し、論理アドレス0を物理アドレスのM+1+M+1に関連付ける。このような処理を繰り返すことにより、複雑な処理を伴うことなく、図6に示すような巡回書き込み方法が実現される。
尚、図7の例においては、毎回の印刷ジョブにおいてNANDフラッシュメモリ929がレンダリングデータの書き込み先として指定される場合、論理アドレスの指定は常にアドレス0から行われる場合を例としているため、物理アドレスにおいてレンダリングデータが書き込まれた最後尾のアドレスの次のアドレスを、論理アドレス0に関連付ける。
しかしながらこれは一例であり、少なくとも、次の印刷ジョブにおいてテンポラリ領域201に情報が書き込まれる際に指定される論理アドレスと、物理アドレスにおいてレンダリングデータが書き込まれた最後尾のアドレスの次のアドレスとを関連付ければ良い。
次に、本実施形態に係る複合機において印刷ジョブが発生した場合の処理について説明する。図8は、レンダリングが開始された後のコピーアプリ301、プリンタアプリ302に従って演算を行うCPU928よるレンダリングデータの格納先の判断動作を示すフローチャートである。
図8に示すように、CPU928は、印刷ジョブについてレンダリングが開始されると(S801)、その印刷ジョブにおいて電子ソートが必要か否か判断する(S802)。尚、レンダリングによって生成されたレンダリングデータは、まずは、DRAM927に格納される。電子ソートが必要である場合(S802/NO)、レンダリングデータはNANDフラッシュメモリ929に格納されるべきであるため、CPU928は、DRAM927に格納されたレンダリングデータの、NANDフラッシュメモリ929のテンポラリ領域への転送命令を発行し(S804)、処理を終了する。
他方、電子ソートが不要である場合(S802/YES)、次にCPU928は、ジャムバックアップが必要か否か判断する(S803)。ジャムバックアップとは、用紙に対して画像形成が実行され、複合機内の搬送を搬送されて排紙されるまでの間に、ジャム、即ち紙詰まりが発生した場合において、搬送中であった用紙に対する画像形成出力を、ジャム解消後に再度実行するため、DRAM927のような揮発性の記憶媒体ではなく、不揮発性の記憶媒体にレンダリングデータを格納しておく処理である。
ジャムバックアップ要否の判断は、例えば、複合機の用紙搬送経路における給紙口から排紙口までの間に最大で存在可能な用紙の枚数(以降、同時搬送枚数とする)と、DRAM927におけるページメモリのページ数との比較結果に基づいて判断される。同時搬送枚数がページメモリのページ数よりも多い場合、画像形成出力が完了したページのレンダリングデータを、そのページが排紙される前に消去する必要があるため、ジャムバックアップが必要であると判断される。
ジャムバックアップが必要であれば(S803/NO)、レンダリングデータはNANDフラッシュメモリ929に格納されるべきであるため、CPU928は、DRAM927に格納されたレンダリングデータの、NANDフラッシュメモリ929のテンポラリ領域への転送命令を発行し(S804)、処理を終了する。他方、ジャムバックアップが不要であれば(S803/YES)、レンダリングデータをNANDフラッシュメモリ929に格納するべき理由はないため、CPU928は、そのまま処理を終了する。このように、コピーアプリ301、プリンタアプリ302が、格納先指定部として機能する。
コピーアプリ301、プリンタアプリ302に従って演算を行うCPU928は、レンダリングデータをNANDフラッシュメモリ929に転送する命令を発行すると、レンダリングデータと共に、格納先としてNANDフラッシュメモリ929のテンポラリ領域を指定する情報(以降、格納先指定情報とする)を記憶管理プログラム303に従った演算に受け渡す。
記憶管理プログラム303に従って演算を行うCPU928は、上記受け渡された格納先指定情報に基づいてNANDフラッシュメモリ929の論理アドレスを指定して書き込み命令を発行し、レンダリングデータをNAND制御プログラム304に従った演算に受け渡す。これにより、NAND制御プログラム304が、NANDフラッシュメモリ929のテンポラリ領域201へのレンダリングデータの書き込み動作を実行する。
図9は、記憶管理プログラム303に従った演算から論理アドレスの指定を受けたNAND制御プログラム304に従って演算を行うCPU928の動作を示すフローチャートである。書き込み命令が発生すると(S901)、CPU928は、その書込み命令を取得し、指定された論理アドレスに基づき、テンポラリ領域への書き込みか否か判断し、テンポラリ領域への書き込みである場合(S902/YES)、テンポラリ領域の論理アドレスに応じた書き込み処理を実行する(S904)。
即ち、NAND制御プログラム304に従って演算を行うCPU928が、NANDフラッシュメモリ929への書込み命令を取得する書込み命令取得部、テンポラリ領域201〜ファイルシステム領域204までのいずれの領域への書込み命令であるかを判断する書き込み先領域判断部、テンポラリ領域への情報の書き込み処理を実行する一次記憶領域書込み部として機能する。
他方、論理アドレスがテンポラリ領域のアドレスではない場合(S902/NO)、次に、CPU928は、ドキュメントBOX領域への書き込みか否か判断し、ドキュメントBOX領域への書き込みである場合(S903/YES)、ドキュメントBOX領域の論理アドレスに応じた書き込み処理を実行する(S905)。
また、論理アドレスがドキュメントBOX領域のアドレスではない場合(S903/NO)、残る領域はログデータ領域のアドレスであるため、CPU928は、ログデータ領域の論理アドレスに応じた書き込み処理を実行する(S906)。即ち、即ち、NAND制御プログラム304に従って演算を行うCPU928が、ドキュメントBOX領域202及びログ領域203への情報の書込み処理を実行する通常記憶領域書込み部として機能する。
図10は、テンポラリ領域201へのデータの書き込み動作を示すフローチャートである。図10に示すように、NAND制御プログラム304に従って演算を行うCPU928は、図7(a)、(b)で説明したように格納先として指定された論理アドレスを物理アドレスに変換する(S1001)。この際、CPU928は、NAND制御プログラム304の一部として実装されている関連付けテーブルに従ってアドレスの変換を行う。
アドレスの変換を完了すると、CPU928は、図7(a)、(b)において説明したように、変換された物理アドレスにレンダリングデータを書き込む(S1002)。図7(a)、(b)において説明したように、テンポラリ領域への書き込みは、関連付けテーブルの制御により巡回型書き込み方法によって実行される。
レンダリングデータの書き込みが完了すると、CP928は、DRAM927上に格納されたテンポラリ領域201のファイル管理情報を更新する(S1003)。その後、印刷ジョブの進行に応じて、NANDフラッシュメモリ929に格納されたレンダリングデータが読み出され、IPU ASIC925を介してレーザーコントロール部923、レーザー書込み部924により画像形成出力が実行される。
そして、CPU928は、印刷ジョブの完了を検知すると(S1004)、S1002においてレンダリングデータを書き込んだ最後尾のアドレスに基づき、図7(a)、(b)において説明したように関連付けテーブルを更新し(S1005)、処理を終了する。このような処理により、NAND制御プログラム304に従って演算を行うCPU928による、NANDフラッシュメモリ929のテンポラリ領域201へのデータの格納動作が完了する。
ここで、S1004における、印刷ジョブの完了の検知態様としては、コピーアプリ301、プリンタアプリ302の処理として、印刷ジョブが完了したことを示す信号を出力する処理を組み込み、NAND制御プログラム304に従って演算を行うCPU928がそれを検知することによって印刷ジョブの完了を検知することができる。
また、NAND制御プログラム304の処理のみによって印刷ジョブの完了を検知する態様としては、その印刷ジョブにおいてNANDフラッシュメモリ929のテンポラリ領域201に格納されたレンダリングデータが全て読み出されたことに基づき、印刷ジョブの完了を検知する態様が考えられる。
また、電子ソートを行う場合、テンポラリ領域201に格納されたレンダリングデータは複数回読み出されるため、格納されたレンダリングデータが全て読み出されたことに基づいては、印刷ジョブの完了を検知することはできない。これに対しては、例えば、レンダリングデータが全て読み出された後、NANDフラッシュメモリ929のテンポラリ領域を指定した書き込みが次に発生した場合に、印刷ジョブの完了を検知し、S1005の関連付けテーブルの更新を行うことも可能である。
この他、コピーアプリ301、プリンタアプリ302の処理として、上述したような特別な信号を出力する処理を組み込むことなく、コピーアプリ301、プリンタアプリ302による印刷ジョブにおける処理を解析し、印刷ジョブが完了した際に実行される処理をNAND制御プログラム304が検知することによって、印刷ジョブの完了を検知しても良い。
以上説明したように、本実施形態に係るNANDフラッシュメモリ929を含む複合機においては、NANDフラッシュメモリ929の記憶領域を格納されるデータの種類に応じて分割し、データ書き込み処理の対象を分割された領域に応じて変化させる。
具体的には、印刷ジョブの実行においてレンダリグにより生成されるビットマップデータが格納されるテンポラリ領域においては、一般的なNANDフラッシュメモリに対するデータの書き込みにおいて用いられるブロックコピーや複雑なウェアレベリングを省略し、巡回型書き込み方法によってデータを書き込む。これにより、画像形成装置に不揮発性の半導体記憶装置を搭載する場合において、その運用を効率化することができ、テンポラリ領域にデータを格納する際の処理負荷を低減して書き込み速度を向上することができる。
尚、上記実施形態においては、図3に示すように、DRAM927に読み出されたNAND制御プログラム304に従ってCPU928が演算を行うことにより、本実施形態の要旨に係る機能が実現される場合を例として説明した。即ち、半導体記憶装置の制御プログラムによって本実施形態の要旨に係る機能が実現される場合を例として説明した。
この他、画像処理ボード926に実装されるNANDフラッシュメモリ929の制御用の回路によって構成される半導体記憶媒体の制御装置として、上述したNAND制御プログラム304の機能を実現することも可能である。
更に、NANDフラッシュメモリ929は、SSD(Solid State Drive)等の独立した装置によって実現される場合もあり得る。そのような場合、その装置のファームウェアにより、上述したNAND制御プログラム304の機能を実現することも可能である。