JP2009116712A - Image forming apparatus - Google Patents

Image forming apparatus Download PDF

Info

Publication number
JP2009116712A
JP2009116712A JP2007290332A JP2007290332A JP2009116712A JP 2009116712 A JP2009116712 A JP 2009116712A JP 2007290332 A JP2007290332 A JP 2007290332A JP 2007290332 A JP2007290332 A JP 2007290332A JP 2009116712 A JP2009116712 A JP 2009116712A
Authority
JP
Japan
Prior art keywords
processing
heap memory
program
forming apparatus
image forming
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007290332A
Other languages
Japanese (ja)
Other versions
JP5150214B2 (en
Inventor
Hiroyuki Hara
博幸 原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kyocera Document Solutions Inc
Original Assignee
Kyocera Mita Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kyocera Mita Corp filed Critical Kyocera Mita Corp
Priority to JP2007290332A priority Critical patent/JP5150214B2/en
Priority to US12/124,538 priority patent/US8619310B2/en
Publication of JP2009116712A publication Critical patent/JP2009116712A/en
Application granted granted Critical
Publication of JP5150214B2 publication Critical patent/JP5150214B2/en
Priority to US14/076,218 priority patent/US9202149B2/en
Priority to US14/076,221 priority patent/US8861013B2/en
Priority to US14/076,217 priority patent/US8928903B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Record Information Processing For Printing (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To reduce a delay on heap memory allocation by reducing frequency of garbage collection. <P>SOLUTION: When two or more pages of a display list remain (S52), it can be estimated that a display list for one page may be soon released, and after the number of remaining pages is decreased and an event is generated (S53), the process returns to step S50. On the other hand, when the number of completion bands of the display list is less than a rasterization start condition (S54), rasterization is forcedly executed, and after releasing one page of the display list (S55), the process is returned to step S50. Before executing garbage collection (GC), the locking of semaphores corresponding to respective threads except a heap memory management part 126 using a heap memory 132 are acquired (S58). After executing the GC, the semaphores corresponding to the threads is released (5A). <P>COPYRIGHT: (C)2009,JPO&INPIT

Description

本発明は、複数タスクからのヒープメモリ獲得要求に応答して、必要に応じガベージコレクションを行うヒープメモリ割当プログラムを備えた画像形成装置に係り、特に、メモリ解放を待てば要求サイズのメモリを確保できると予測できる場合にメモリ解放を待つヒープメモリ割当プログラムを備えた画像形成装置に関する。   The present invention relates to an image forming apparatus provided with a heap memory allocation program that performs garbage collection as needed in response to heap memory acquisition requests from a plurality of tasks, and in particular, secures a memory of a requested size when waiting for memory release. The present invention relates to an image forming apparatus provided with a heap memory allocation program that waits for memory release when it can be predicted.

C++やJava(登録商標)等のオブジェクト指向プログラミング言語では、ヒープメモリ内の領域の動的確保及び解放がシステム側(ランタイムライブラリ)で行われる。要求サイズのメモリ領域を確保できない場合、ガベージコレクションが行われて、参照されなくなったオブジェクトが解放され、また、コンパクションが行われて連続した空き領域が生成される。   In an object-oriented programming language such as C ++ or Java (registered trademark), an area in the heap memory is dynamically secured and released on the system side (runtime library). When a memory area of the requested size cannot be secured, garbage collection is performed to release objects that are no longer referenced, and compaction is performed to generate continuous free areas.

しかしながら、ヒープメモリサイズが比較的大きいので、コンパクションでのオブジェクトのコピーに要する時間が比較的長く、また、ガベージコレクションが何時行われるかアプリケーションにおいて予測ができず、不意に処理が遅延する原因となる。   However, since the heap memory size is relatively large, it takes a relatively long time to copy objects in compaction, and the application cannot predict when garbage collection will occur, causing unexpected processing delays. .

そこで、下記特許文献1では、画像形成装置において、外部からの印刷データの待ち受け時間にガベージコレクションを行うことにより、印刷処理への影響を低減している。
特開2006−344184号公報
Therefore, in Patent Document 1 described below, the garbage collection is performed during the standby time of print data from the outside in the image forming apparatus, thereby reducing the influence on the print processing.
JP 2006-344184 A

しかし、印刷データを受信した後、印刷データを遅滞なく処理して印刷を行いたい場合、処理実行のためのメモリ割当ができなくてガベージコレクションが実行されると、処理が遅延する。   However, when it is desired to process the print data without delay after receiving the print data, the memory is not allocated for execution of the process, and the garbage collection is executed, the process is delayed.

一般に、ガベージコレクション実行時にはその他の全処理が停止されるので、特に、複数の処理を効率よく並列実行している場合、ガベージコレクションが度々実行されると、処理遅延の影響が比較的大きくなる。   In general, all other processes are stopped when garbage collection is executed. Therefore, particularly when a plurality of processes are efficiently executed in parallel, the effect of processing delay becomes relatively large when garbage collection is frequently executed.

本発明の目的は、このような問題点に鑑み、ヒープメモリ確保遅延を抑制することが可能な画像形成装置を提供することにある。   In view of such problems, an object of the present invention is to provide an image forming apparatus capable of suppressing a heap memory securing delay.

本発明の第1態様では、プロセッサと、該プロセッサに結合され、ヒープメモリ割当プログラムが格納された記憶手段と、を有する画像形成装置において、該ヒープメモリ割当プログラムは、該プロセッサに対し、
(a)要求サイズの記憶領域を確保可能か否かを判定させ、肯定判定した場合には要求サイズの記憶領域を確保させ、
(b)処理(a)で否定判定した場合には、第1状態であれば第2状態になるのを待って処理(a)に戻らせ、
(c)処理(b)で該第1状態でなければ、ガベージコレクションを行わせた後に該要求サイズの記憶領域を確保させる。
In a first aspect of the present invention, in an image forming apparatus including a processor and a storage unit coupled to the processor and storing a heap memory allocation program, the heap memory allocation program
(A) Determine whether it is possible to secure a storage area of the requested size, and if affirmative determination is made, secure a storage area of the requested size,
(B) If a negative determination is made in process (a), if it is the first state, the process waits for the second state to return to process (a),
(C) If the process (b) is not in the first state, a storage area of the requested size is secured after garbage collection is performed.

本発明による画像形成装置の第2態様では、第1態様において、該第1状態は、処理中を含むメモリ上ディスプレイリスト残存頁数が2以上であり、該第2状態は、該処理中を含むメモリ上ディスプレイリスト残存頁数が1以下であることを含む。   In a second aspect of the image forming apparatus according to the present invention, in the first aspect, the first state is that the number of remaining pages in the display list in the memory including the processing is two or more, and the second state is that the processing is in progress. The number of remaining pages in the display list on the memory is 1 or less.

本発明による画像形成装置の第3態様では、第2態様において、処理(c)は、該プロセッサに対し、
(c1)該第1状態でなければ、該処理中を含むメモリ上ディスプレイリスト残存頁数が1以下かつ処理中ディスプレイリストの作成済バンド数がラスタライズ開始条件未満の値であるか否かを判定させ、
(c2)処理(c1)で肯定判定した場合には、例外としてラスタライズを開始させ、処理(a)に戻らせ、
(c3)処理(c1)で否定判定した場合には、該ガベージコレクションを行わせた後に該要求サイズの記憶領域を確保させる。
In a third aspect of the image forming apparatus according to the present invention, in the second aspect, the process (c)
(C1) If not in the first state, it is determined whether or not the number of remaining pages in the display list including the processing is 1 or less and the number of created bands of the processing display list is less than the rasterization start condition. Let
(C2) When an affirmative determination is made in process (c1), rasterization is started as an exception, and the process returns to process (a).
(C3) If a negative determination is made in step (c1), a storage area of the requested size is secured after the garbage collection is performed.

本発明による画像形成装置の第4態様では、第3態様において、
処理(c3)は、該プロセッサに対し、
(c31)処理(c1)で否定判定した場合には、記憶領域確保要求が、ディスプレイリスト作成処前の処理を行うプログラムからの要求であるか否かを判定させ、肯定判定した場合には、フォントキャッシュを解放させて処理(a)に戻らせ、
(c32)処理(c31)で否定判定した場合には、該ガベージコレクションを行わせた後に該要求サイズの記憶領域を確保させる。
In a fourth aspect of the image forming apparatus according to the present invention, in the third aspect,
The process (c3)
(C31) If a negative determination is made in the process (c1), it is determined whether or not the storage area securing request is a request from a program that performs a process before the display list creation process. Release the font cache and return to process (a),
(C32) If a negative determination is made in step (c31), a storage area of the requested size is secured after the garbage collection is performed.

本発明の第5態様では、プロセッサと、該プロセッサに結合され、それぞれ異なるタスクとして実行される複数の処理プログラムと、ヒープメモリ管理プログラムとが格納された記憶手段と、を有する画像形成装置において、
該複数の処理プログラムのそれぞれは、該プロセッサに対し、本体処理の前処理として自タスクに対応したセマフォのロックを獲得させ、該本体処理の後処理としてこのロックを解放させ、
該ヒープメモリ管理プログラムは、該タスクと別のタスクとして実行されるヒープメモリ割当プログラムと、該ヒープメモリ割当プログラムと並列実行可能なヒープメモリ解放プログラムとを有し、
該ヒープメモリ割当プログラムは、該プロセッサに対し、要求サイズの記憶領域を確保できないないと判断した場合、ガベージコレクションの前処理として、該複数の処理プログラムのそれぞれに対応したセマフォのロックを獲得させ、該ガベージコレクションを行わせ、該ガベージコレクションの後処理としてこれらセマフォのロックを解放させ、
該ヒープメモリ解放プログラムは該プロセッサに対し、該複数の処理プログラムの任意の1つからの解放要求に応答して、該ヒープメモリの対応する記憶領域を解放させ、
該複数の処理プログラムの任意の1つは、該プロセッサに対し、該ヒープメモリ割当プログラムを介しヒープメモリ割当要求する前に、自タスクに対応したセマフォのロックを解放させ、該ヒープメモリ割当プログラムから戻った後にこのセマフォのロックを獲得させる。
In a fifth aspect of the present invention, in an image forming apparatus comprising a processor, a plurality of processing programs coupled to the processor and executed as different tasks, and storage means storing a heap memory management program,
Each of the plurality of processing programs causes the processor to acquire the lock of the semaphore corresponding to its own task as the preprocessing of the main body processing, and to release the lock as the postprocessing of the main body processing,
The heap memory management program includes a heap memory allocation program that is executed as a task different from the task, and a heap memory release program that can be executed in parallel with the heap memory allocation program.
When the heap memory allocation program determines that the storage area of the requested size cannot be secured for the processor, the heap memory allocation program acquires a semaphore lock corresponding to each of the plurality of processing programs as preprocessing of the garbage collection, Let the garbage collection occur, let the lock on these semaphores be released as post-processing of the garbage collection,
The heap memory release program causes the processor to release a corresponding storage area of the heap memory in response to a release request from any one of the plurality of processing programs,
Any one of the plurality of processing programs causes the processor to release the lock of the semaphore corresponding to the invoking task before requesting heap memory allocation via the heap memory allocation program. Get this semaphore lock after returning.

上記第1態様の構成によれば、第1状態であれば第2状態になるのを待って、要求サイズの記憶領域を確保可能か否かを判定し、否定判定した場合にガベージコレクションを行わせるので、ガベージコレクション実行回数を低減してヒープメモリ確保遅延を抑制することが可能となるという効果を奏する。   According to the configuration of the first aspect, after waiting for the second state to enter the second state, it is determined whether the storage area of the requested size can be secured, and if a negative determination is made, garbage collection is performed. Therefore, there is an effect that it is possible to suppress the heap memory securing delay by reducing the number of times of executing garbage collection.

上記第2態様の構成によれば、該第1状態は処理中を含むメモリ上ディスプレイリスト残存頁数が2以上であり、該第2状態は該処理中を含むメモリ上ディスプレイリスト残存頁数が1以下であることを含むので、効率よくガベージコレクション実行回数を低減してヒープメモリ確保遅延を抑制することが可能となるという効果を奏する。   According to the configuration of the second aspect, the number of remaining pages in the display list in the memory including the processing in the first state is 2 or more, and the number of remaining pages in the display list in the memory including the processing in the second state is the second state. Since it includes 1 or less, there is an effect that it is possible to efficiently reduce the number of garbage collection executions and suppress a heap memory securing delay.

上記第3態様の構成によれば、該第1状態でなくても、該処理中を含むメモリ上ディスプレイリスト残存頁数が1以下かつ処理中ディスプレイリストの作成済バンド数がラスタライズ開始条件未満の値であると判定した場合には、例外としてラスタライズを開始させて、要求サイズの記憶領域が確保可能になるのを待つので、さらに効率よくガベージコレクション実行回数を低減してヒープメモリ確保遅延を抑制することが可能となるという効果を奏する。   According to the configuration of the third aspect, even if the state is not the first state, the number of remaining pages of the display list in the memory including the processing is 1 or less and the number of created bands of the processing display list is less than the rasterization start condition. If the value is determined to be a value, rasterization is started as an exception and waits until a storage area of the requested size can be secured, thus reducing the number of garbage collection executions more efficiently and suppressing the delay in securing heap memory. It is possible to do this.

上記第4態様の構成によれば、記憶領域確保要求が、ディスプレイリスト作成処前の処理を行うプログラムからの要求である場合、フォントキャッシュを解放させて要求サイズの記憶領域が確保可能か否かを判定するので、さらに効率よくガベージコレクション実行回数を低減してヒープメモリ確保遅延を抑制することが可能となるという効果を奏する。   According to the configuration of the fourth aspect, if the storage area securing request is a request from a program that performs processing prior to the display list creation process, whether or not the storage area of the requested size can be secured by releasing the font cache. Therefore, it is possible to reduce the number of garbage collection executions more efficiently and suppress the heap memory allocation delay.

上記第5態様の構成によれば、それぞれ異なるタスクとして実行される複数の処理プログラムのうち、ヒープメモリ割当プログラムを呼び出したもの以外が1頁分処理を終了するまで、該ヒープメモリ割当プログラムにおいてガベージコレクションの実行が待たされるので、この実行の開始時には参照されなくなったデータの量が比較的多いと考えられ、ガベージコレクション実行により確保可能になる連続領域が比較的大きくなって効率よくガベージコレクションを実行することができるとともに、これによりガベージコレクション実行回数を低減してヒープメモリ確保遅延を抑制することが可能となるという効果を奏する。   According to the configuration of the fifth aspect, garbage is allocated in the heap memory allocation program until one page of the plurality of processing programs executed as different tasks other than the one calling the heap memory allocation program is completed. Since collection execution is awaited, the amount of data that is no longer referenced at the start of this execution is considered to be relatively large, and the continuous area that can be secured by executing garbage collection becomes relatively large, and garbage collection is performed efficiently. As a result, it is possible to reduce the number of garbage collection executions and suppress the delay in securing the heap memory.

本発明の他の目的、構成及び効果は以下の説明から明らかになる。   Other objects, configurations and effects of the present invention will become apparent from the following description.

以下、図面を参照して本発明の実施例を説明する。なお、ガベージコレクションに関しては実施例4で説明する。   Embodiments of the present invention will be described below with reference to the drawings. The garbage collection will be described in the fourth embodiment.

図21は、本発明の実施例1に係る画像形成装置10のハードウェア構成を示す概略ブロック図である。   FIG. 21 is a schematic block diagram illustrating a hardware configuration of the image forming apparatus 10 according to the first embodiment of the invention.

この画像形成装置10では、CPU11、EEPROM12、RAM13、圧縮・伸長プロセッサ14、通信インターフェイス15、パネルインターフェイス16、エンジンコントローラ17及び搬送コントローラ18がバス19で結合され、インターフェイス16、インターフェイスを含むエンジンコントローラ17並びに搬送コントローラ18にそれぞれ操作パネル20、プリントエンジン21及び用紙搬送装置22が結合されている。通信インターフェイス15には、不図示のホストコンピュータが結合される。   In this image forming apparatus 10, a CPU 11, an EEPROM 12, a RAM 13, a compression / decompression processor 14, a communication interface 15, a panel interface 16, an engine controller 17, and a transport controller 18 are connected by a bus 19, and an engine controller 17 including an interface 16 and an interface. In addition, an operation panel 20, a print engine 21, and a paper transport device 22 are coupled to the transport controller 18. A host computer (not shown) is coupled to the communication interface 15.

EEPROM12には、OS(Operating System)、ドライバ及びアプリケーションが格納される。RAM13には、一時的なデータが格納される。このOSは、アプリケーションのマルチスレッドに対応し、かつ、セマフォ機能を備えている。   The EEPROM 12 stores an OS (Operating System), a driver, and an application. The RAM 13 stores temporary data. This OS supports multi-threading of applications and has a semaphore function.

圧縮・伸長プロセッサ14は、例えばASIC(Application Specific Integrated Circuit)で構成され、圧縮処理と伸長処理とを同時に行うことができる。圧縮・伸長プロセッサ14は、互いに並列処理可能な圧縮部141、伸長部142及び伸長部143(図図1参照)と、DMAC(Direct Memory Access Controller)とを備え、RAM13内のデータを圧縮部141、伸長部142又は伸長部143にDMAでブロック転送させて圧縮又は伸長を行い、その結果をRAM13又はエンジンコントローラ17へDMAでブロック転送させることが可能である。DMACは、圧縮・伸長プロセッサ14と別体であってもよい。   The compression / decompression processor 14 is composed of, for example, an ASIC (Application Specific Integrated Circuit), and can perform compression processing and decompression processing simultaneously. The compression / decompression processor 14 includes a compression unit 141, an expansion unit 142 and an expansion unit 143 (see FIG. 1) that can be processed in parallel with each other, and a DMAC (Direct Memory Access Controller), and compresses data in the RAM 13 into a compression unit 141. The decompression unit 142 or the decompression unit 143 can perform block transfer by DMA to perform compression or decompression, and block the result to the RAM 13 or the engine controller 17 by DMA. The DMAC may be separate from the compression / decompression processor 14.

操作パネル20は、キー及び表示パネルを供えている。エンジンコントローラ17は、CPUと、プリントエンジン制御用プログラムが格納されたメモリと、受信したビットマップデータを格納するバッファメモリとを備えている。   The operation panel 20 includes keys and a display panel. The engine controller 17 includes a CPU, a memory that stores a print engine control program, and a buffer memory that stores received bitmap data.

図1は、ホストコンピュータから受信した印刷データをビットマップ展開する部分の機能ブロック図である。   FIG. 1 is a functional block diagram of a part that develops a bitmap of print data received from a host computer.

この印刷データは、頁記述言語(PDL)で記述されており、通信インターフェイス15を介してバッファメモリ131に格納される。図1において、バッファメモリ131、ヒープメモリ132及び共有メモリ133はRAM13中の記憶領域である。インタープリタ121、RIP122及び制御部123はいずれも、上記アプリケーションプログラムの一部に対応しており、CPU11により実行される。   This print data is described in a page description language (PDL) and is stored in the buffer memory 131 via the communication interface 15. In FIG. 1, a buffer memory 131, a heap memory 132, and a shared memory 133 are storage areas in the RAM 13. The interpreter 121, the RIP 122, and the control unit 123 all correspond to a part of the application program and are executed by the CPU 11.

制御部123は、ホストコンピュータからの印刷要求に対し、ホストコンピュータからの印刷データを、通信インターフェイス15を介してバッファメモリ131に格納させる。制御部123は、インタープリタ121を起動させることにより、この印刷データを、各頁について、バンドごとのディスプレイリスト(中間コード)に変換させ、ヒープメモリ132に格納させる。制御部123は、RIP122及び圧縮・伸長プロセッサ14を起動させることにより、それぞれ後述の処理をさせる。   In response to a print request from the host computer, the control unit 123 stores print data from the host computer in the buffer memory 131 via the communication interface 15. The control unit 123 activates the interpreter 121 to convert the print data into a display list (intermediate code) for each page and store the print data in the heap memory 132. The control unit 123 activates the RIP 122 and the compression / decompression processor 14 to perform the processes described later.

図10(A)〜(C)は、ディスプレイリスト概略説明図である。   10A to 10C are schematic diagrams for explaining the display list.

図10(A)に示す如く、1頁分の印刷データ30には、図形オブジェクト31〜34がこの順にPDLで記述されており、これらを記述順にラスタライズすることにより、ビットマップデータ領域上で、図形オブジェクト31に図形オブジェクト33が上書きされ、図形オブジェクト33に図形オブジェクト34が上書きされて、図10(A)に示すような画像が得られる。必要なメモリ容量を低減するために、図10(B)に示すように、印刷データ30をバンド40〜43に分割するとともに、ラスタライズを高速処理するために、分割されたオブジェクトを中間コードに変換する。一般に、オブジェクトには図形オブジェクト以外に文字オブジェクト及びイメージオブジェクトが含まれる。オブジェクトの中間コード化において、ベクトルデータの文字オブジェクトは、イメージデータに変換される。   As shown in FIG. 10A, the graphic objects 31 to 34 are described in PDL in this order in the print data 30 for one page, and by rasterizing them in the description order, The graphic object 33 is overwritten on the graphic object 31, and the graphic object 34 is overwritten on the graphic object 33, so that an image as shown in FIG. 10A is obtained. In order to reduce the required memory capacity, as shown in FIG. 10B, the print data 30 is divided into bands 40 to 43, and the divided objects are converted into intermediate codes for high-speed rasterization processing. To do. In general, objects include character objects and image objects in addition to graphic objects. In the intermediate coding of an object, a vector data character object is converted into image data.

図10(C)は、印刷データ30に含まれる各図形オブジェクトがバンド毎の中間コードデータに変換されている状態をイメージ的に示す。図中の中間コードブロックLijは、バンドiのディスプレイリストを構成するj番目のブロックであることを示している。図形の合成が適正に行われるようにするために、各バンドでのブロック記述順は、図形オブジェクトの記述順に従っている。例えばバンド41のディスプレイリストでのブロック記述順は、中間コードブロックL10、L11、L12、L21となっている。   FIG. 10C conceptually shows a state in which each graphic object included in the print data 30 is converted into intermediate code data for each band. The intermediate code block Lij in the figure indicates that it is the jth block constituting the display list of band i. In order to properly combine the figures, the block description order in each band follows the description order of the graphic objects. For example, the block description order in the display list of the band 41 is intermediate code blocks L10, L11, L12, and L21.

バンド数が多いほど、所要メモリ容量を低減することができるが、トータル処理時間が増加するので、RAM13の容量に応じてバンド数が決定され、この値は例えば36である。また、メモリ管理を容易にするために、1ブロックの最大記憶容量が決定され、この容量の各ブロックLijに、できるだけ多くの中間コードが詰め込まれる。   As the number of bands increases, the required memory capacity can be reduced. However, since the total processing time increases, the number of bands is determined according to the capacity of the RAM 13, and this value is, for example, 36. In order to facilitate memory management, the maximum storage capacity of one block is determined, and as many intermediate codes as possible are packed in each block Lij of this capacity.

図2は、ヒープメモリ132に格納されるディスプレイリストのデータ構造を示している。このデータ構造は、リスト構造である。   FIG. 2 shows the data structure of the display list stored in the heap memory 132. This data structure is a list structure.

Lバンド配列1320は、その要素数がバンド数に等しく、要素i(iは0〜nのいずれか)はディスプレイリストLiのポインタである。各ディスプレイリストLiのブロック数は一定ではない。図1では簡単化のために、各ディスプレイリストLiのブロック数が3である場合を示している。ブロックLijの中間コードは、イメージデータの場合、イメージデータ格納先を示すポインタとデータのバイト数とを含むコードであり、イメージデータ自体はブロックLij内に含まれない。イメージデータがバンド境界を含む場合には、バンド境界で分割されたイメージデータがポインタとデータのバイト数とで同様に指定される。   In the L band array 1320, the number of elements is equal to the number of bands, and the element i (i is one of 0 to n) is a pointer of the display list Li. The number of blocks in each display list Li is not constant. FIG. 1 shows a case where the number of blocks in each display list Li is 3 for simplification. In the case of image data, the intermediate code of the block Lij is a code including a pointer indicating the image data storage destination and the number of data bytes, and the image data itself is not included in the block Lij. When the image data includes a band boundary, the image data divided at the band boundary is similarly specified by the pointer and the number of bytes of data.

一方、共有メモリ133には、ビットマップデータ領域133Bと圧縮データ領域133Cとが確保される。また、圧縮・伸長プロセッサ14は互いに並列処理可能な圧縮部141と伸長部142とを備えている。   On the other hand, a bitmap data area 133B and a compressed data area 133C are secured in the shared memory 133. The compression / decompression processor 14 includes a compression unit 141 and an expansion unit 142 that can perform parallel processing.

次に、RIP122、圧縮・伸長プロセッサ14及びこれらを制御する制御部123によるバンドiの処理について説明する。ブロック識別変数jの初期値は0である。制御部123は、RIP122を頁毎に開始制御し、制御圧縮・伸長プロセッサ14をバンド毎に開始制御する。   Next, processing of band i by the RIP 122, the compression / decompression processor 14, and the control unit 123 that controls them will be described. The initial value of the block identification variable j is 0. The control unit 123 controls the start of the RIP 122 for each page, and controls the control compression / decompression processor 14 for each band.

(1)j=0の場合は、ステップ(2)へ進む。j>0の場合、伸長部142は、圧縮バンド領域Ciに格納されている圧縮データを呼び出し、元のビットマップデータに伸長させて、サブ領域BMPkに格納する。   (1) If j = 0, go to step (2). When j> 0, the decompressing unit 142 calls the compressed data stored in the compressed band area Ci, decompresses the compressed data to the original bitmap data, and stores it in the sub-area BMPk.

(2)RIP122は、ヒープメモリ132内の中間コードブロックLijをビップマップデータに変換して、サブ領域BMPkに格納させることにより、(1)で伸長されたビットマップデータに上書きする。   (2) The RIP 122 overwrites the bitmap data expanded in (1) by converting the intermediate code block Lij in the heap memory 132 into the bit map data and storing it in the sub-region BMPk.

(3)圧縮部141は、サブ領域BMPkに格納されたビットマップデータを圧縮して、圧縮データ領域133C内の圧縮バンド領域Ciに格納する。   (3) The compression unit 141 compresses the bitmap data stored in the sub-region BMPk and stores it in the compressed band region Ci in the compressed data region 133C.

(4)RIP122は、jを1だけインクリメントし、中間コードブロックLijがヒープメモリ132内に存在すれば、上記ステップ(1)へ戻る。   (4) The RIP 122 increments j by 1, and if the intermediate code block Lij exists in the heap memory 132, returns to the above step (1).

圧縮部141と伸長部142とを並列に動作させることができ、かつ、圧縮・伸長プロセッサ14での処理とディスプレイリスト作成及びラスタライズのソフトウェア処理とを並列に行うことが可能である。一方、同一バンドについて圧縮処理と伸長処理とソフトウェア処理とのうちの任意の2つを同時に行うことができない。そこで、図4に示す如く、同時に3バンドの処理を行う。そして、例えば、バンド0の伸長を行っているときにバンド1の圧縮を行うとともに、バンド2のディスプレイリスト作成とラスタライズとを直列処理する。これら圧縮、伸長及びラスタライズはいずれも、ビップマップデータを取り扱うので、図1に示す如く、ビットマップデータ領域133Bは、BMP0〜BMP2に分割された3バンド分の領域を有している。   The compression unit 141 and the decompression unit 142 can be operated in parallel, and the processing by the compression / decompression processor 14 and the software processing for display list creation and rasterization can be performed in parallel. On the other hand, any two of compression processing, decompression processing, and software processing cannot be performed simultaneously for the same band. Therefore, as shown in FIG. 4, three band processing is performed simultaneously. For example, when band 0 is being expanded, band 1 is compressed, and band 2 display list creation and rasterization are serially processed. Since all of these compression, decompression, and rasterization handle bipmap data, as shown in FIG. 1, the bitmap data area 133B has an area for three bands divided into BMP0 to BMP2.

圧縮部141の平均圧縮率を1/c(c=圧縮後のサイズ/圧縮前のサイズ)、1頁のバンド数をn+1とすると、1頁分のビットマップデータに対する圧縮データと3バンド分ビットマップ領域との合計の圧縮率は、3/(n+1)+1/cとなる。例えば、n=35、c=10の場合、圧縮率は3/36+1/10=11/60となる。   When the average compression rate of the compression unit 141 is 1 / c (c = size after compression / size before compression) and the number of bands on one page is n + 1, the compressed data and the bits for three bands for the bitmap data for one page The total compression ratio with the map area is 3 / (n + 1) + 1 / c. For example, when n = 35 and c = 10, the compression ratio is 3/36 + 1/10 = 11/60.

図3は、共有メモリ133に格納される、ラスタライズ、圧縮及び伸張に関係したデータの構造を示す。   FIG. 3 shows the structure of data related to rasterization, compression, and expansion stored in the shared memory 133.

Cバンド配列1330は、その要素数がバンド数に等しく、要素i(iは0〜nのいずれか)は圧縮バンド領域Ciのポインタである。ブロック最大番号配列1331は、その要素数がバンド数に等しく、要素iにはバンドiのブロック番号最大値je(i)が格納されている。Bバンド配列1332は、その要素数が3であり、要素k(kは0〜2のいずれか)はサブ領域BMPkのポインタである。   In the C band array 1330, the number of elements is equal to the number of bands, and the element i (i is any one of 0 to n) is a pointer of the compression band region Ci. The block maximum number array 1331 has the same number of elements as the number of bands, and the element i stores the block number maximum value je (i) of the band i. The number of elements of the B band array 1332 is 3, and the element k (k is any of 0 to 2) is a pointer of the sub-region BMPk.

バンド・ブロック番号変数群1333には、変数R、C及びDについてそれぞれ、現在の処理対象のバンド番号とブロック番号との組(i,j)、(p,q)及び(r,s)が格納される。変数R、C及びDは、スレッド間でブロックの処理完了を通知して(図5のステップS5、図6(A)のステップS16及び図6(B)のステップS24)、次のブロックの処理開始時点を適正にするために、すなわち、同一バンドに関し、伸張が完了してからラスタライズし、ラスタライズが完了してから圧縮し、圧縮が完了してから伸張を行うために用いられる。以下の例では、バンド・ブロック番号変数群1333には次の又は処理中の処理対象のバンド番号とブロック番号とが格納されるが、このデータは、1つ前の処理対象の処理完了も意味している。   In the band / block number variable group 1333, for the variables R, C, and D, pairs (i, j), (p, q), and (r, s) of the current band number and block number to be processed are respectively stored. Stored. The variables R, C, and D notify the completion of block processing between threads (step S5 in FIG. 5, step S16 in FIG. 6A, and step S24 in FIG. 6B), and processing of the next block In order to make the start point appropriate, that is, for the same band, the rasterization is performed after the expansion is completed, the rasterization is performed after the rasterization is completed, and the compression is performed after the compression is completed. In the example below, the band / block number variable group 1333 stores the band number and block number of the next or processing target being processed, but this data also means the completion of the processing of the previous processing target. is doing.

図7は、ソフトウェアと圧縮部141と伸長部142との並列処理を示す概略タイミングチャートである。図7は、バンド0〜2のそれぞれが3ブロックのディスプレイリストを有する場合を示す。図8は、バンドBND0〜BND2毎に図7の処理を再配列したものを示している。   FIG. 7 is a schematic timing chart showing parallel processing of the software, the compression unit 141, and the decompression unit 142. FIG. 7 shows a case where each of the bands 0 to 2 has a display list of 3 blocks. FIG. 8 shows a rearrangement of the processing of FIG. 7 for each of the bands BND0 to BND2.

Lij、Rij、Cij及びDijはそれぞれ、バンドi及びブロックjに関するディスプレイリスト作成、ラスタライズ、圧縮及び伸長の処理を示す。   Lij, Rij, Cij, and Dij indicate display list creation, rasterization, compression, and decompression processing for band i and block j, respectively.

図1及び図7において、制御部123のソフトウェア構成を簡単にするために、圧縮部141及び伸長部142に対する処理開始制御はそれぞれ、制御部123でのスレッドTh1及びTh2で行われる。インタープリタ121及びRIP122の処理は、スレッドTh0での処理である。すなわち、3スレッドによる並列処理が行われる。   In FIG. 1 and FIG. 7, in order to simplify the software configuration of the control unit 123, processing start control for the compression unit 141 and the decompression unit 142 is performed by threads Th <b> 1 and Th <b> 2 in the control unit 123, respectively. The processes of the interpreter 121 and the RIP 122 are processes in the thread Th0. That is, parallel processing by three threads is performed.

スレッドTh0は、制御部123により生成されて開始される。スレッドTh0において、中間コードブロックL00の作成処理が行われ、次いでラスタライズR00の処理が行われ、ラスタライズR00が完了すると、スレッドTh0によりスレッドTh1が生成されて開始される。スレッドTh1により、圧縮部141を介して圧縮C00の処理が行われ、圧縮C00の処理が完了すると、スレッドTh1により、Th2が生成されて開始される。スレッドTh1及びTh2によりそれぞれ、圧縮部141及び伸長部142を介して圧縮C10及び伸長D00の処理が行われる。   The thread Th0 is generated and started by the control unit 123. In the thread Th0, an intermediate code block L00 creation process is performed, and then a rasterize R00 process is performed. When the rasterize R00 is completed, a thread Th1 is generated and started by the thread Th0. The process of compression C00 is performed by the thread Th1 via the compression unit 141, and when the process of compression C00 is completed, Th2 is generated and started by the thread Th1. The threads Th1 and Th2 perform compression C10 and decompression D00 via the compression unit 141 and the decompression unit 142, respectively.

一般に、スレッドTh0では、中間コードブロックLijの作成及びラスタライズRijの処理がバンド順次ブロック順次に行われ、通常、圧縮Cijを開始する時点では、ラスタライズRijの処理が完了している。ここにバンド順次ブロック順次とは、ブロックj及びバンドi0の初期値を共に0とし、バンドi及びブロックjを次のように変化させることを意味する。   In general, in the thread Th0, the intermediate code block Lij creation and rasterization Rij processing are performed in the band sequential block order, and the rasterization Rij processing is usually completed at the time when compression Cij is started. Here, the band sequential block sequential means that the initial values of the block j and the band i0 are both 0, and the band i and the block j are changed as follows.

(a)ブロックjを一定にしてバンドiをi0、i0+1、i0+2と順次変化させ、
(b)jがブロック番号最大値je(i)より小さければブロックjを1だけインクリメントさせて、(a)へ戻り、そうでなければ(d)へ進む。
(A) With block j kept constant, band i is sequentially changed to i0, i0 + 1, i0 + 2,
(B) If j is smaller than the block number maximum value je (i), the block j is incremented by 1, and the process returns to (a). Otherwise, the process proceeds to (d).

(d)i0+2がバンド番号最大値nより小さければj=0とし且つi0を3だけインクリメントさせて、(a)へ戻る。   (D) If i0 + 2 is smaller than the band number maximum value n, j = 0 and i0 is incremented by 3, and the process returns to (a).

スレッドTh1では、1ブロックに対する圧縮部141の処理完了通知に応答してバンド順次ブロック順次になるようにバンドp及びブロックqが更新され、対応するラスタライズRpqの処理が完了していることを条件に、圧縮部141に対し圧縮Cpqの処理を開始させる。試験例では、図7に示すように、圧縮Cpqを間断なく連続的に行うことができた。   In the thread Th1, the band p and the block q are updated so that the band sequential block sequential is made in response to the processing completion notification of the compression unit 141 for one block, and the processing of the corresponding rasterization Rpq is completed. Then, the compression unit 141 is caused to start the compression Cpq process. In the test example, as shown in FIG. 7, the compression Cpq could be continuously performed without interruption.

スレッドTh2では、1ブロックに対する伸長部142の完了通知に応答してバンド順次ブロック順次になるようにバンドr及びブロックsが更新され、伸長部142に対し伸長Drsの処理を開始させる。ただし、各バンドrについて、最後のブロックje(r)に関しては、伸長Drsの処理を開始させない。   In the thread Th2, the band r and the block s are updated so that the band sequential block sequential in response to the completion notification of the decompression unit 142 for one block, and the decompression unit 142 starts the process of decompression Drs. However, for each band r, the process of decompression Drs is not started for the last block je (r).

図5は、スレッドTh0の処理を示すフローチャートである。i0の初期値は0である。以下、カッコ内は図中のステップ識別符号を示す。   FIG. 5 is a flowchart showing the processing of the thread Th0. The initial value of i0 is 0. In the following, the step identification codes in the figure are shown in parentheses.

(S0)ブロック最大番号配列1331の要素iに格納されている値je(i)を読み出し、ステップS1〜SAの処理を、ブロックjが0からje(i)までについて順次繰り返す。   (S0) The value je (i) stored in the element i of the block maximum number array 1331 is read, and the processing of steps S1 to SA is sequentially repeated for the block j from 0 to je (i).

(S1)i=i0からi0+2までについて順次、ステップS2からS9までの処理を繰り返す。   (S1) The processes from step S2 to S9 are repeated sequentially for i = i0 to i0 + 2.

(S2)ヒープメモリ132内に中間コードブロックLijを作成する。   (S2) An intermediate code block Lij is created in the heap memory 132.

(S3、S4)j=0であれば、サブ領域BMPkをゼロクリアする。ここにkはi=i0+kを満たす値である。   (S3, S4) If j = 0, the sub-region BMPk is cleared to zero. Here, k is a value satisfying i = i0 + k.

(S5)バンド・ブロック番号変数群1333の変数Dの内容rsを見て伸張Di(j−1)の処理が完了しているか否か(ただし、j=0の場合には伸張D(i−1)jの処理が完了しているか否か)を判定し、すなわち、r=i且つs=jであるか否かを判定し、肯定判定した場合にはステップS6へ進む。   (S5) Whether or not the process of expansion Di (j-1) is completed by looking at the content rs of variable D of band block number variable group 1333 (however, if j = 0, expansion D (i- 1) Whether or not the processing of j has been completed is determined, that is, whether or not r = i and s = j is determined. If the determination is affirmative, the process proceeds to step S6.

(S6)ヒープメモリ132からこの中間コードブロックLijを読出し、ラスタライズしてビットマップデータ領域133Bのサブ領域BMPkに上書きする。   (S6) The intermediate code block Lij is read from the heap memory 132, rasterized, and overwritten on the sub area BMPk of the bitmap data area 133B.

(S7、S8)i0=0かつj=0であれば、スレッドTh1を生成し開始させる。   (S7, S8) If i0 = 0 and j = 0, the thread Th1 is generated and started.

(S9)バンド・ブロック番号変数群1333の変数Rの内容(i,j)を上記のように更新する。すなわち、(i,j)をバンド順次ブロック順次における次の値にする。   (S9) The contents (i, j) of the variable R in the band / block number variable group 1333 are updated as described above. That is, (i, j) is set to the next value in band sequential block sequential.

(SC)i0を3だけインクリメントする。   (SC) Increment i0 by 3.

(SD)i0>nであれば処理を終了し、そうでなければステップS0へ戻る。   If (SD) i0> n, the process is terminated; otherwise, the process returns to step S0.

図6(A)は、スレッドTh1での処理を示すフローチャートである。   FIG. 6A is a flowchart showing processing in the thread Th1.

(S10)バンド・ブロック番号変数群1333の変数Cの内容(p,q)を読み出し、圧縮部141に対し圧縮Cpqの処理を開始させる。この際、圧縮部141には、圧縮データ格納先先頭アドレスとしてCバンド配列1330の要素iの内容と、圧縮対象データ先頭アドレスとしてBバンド配列1332の要素kの内容が供給される。ここにkは、pを3で割ったときの剰余である。   (S10) The contents (p, q) of the variable C in the band / block number variable group 1333 are read, and the compression unit 141 starts the process of compression Cpq. At this time, the compression unit 141 is supplied with the contents of the element i of the C band array 1330 as the compressed data storage destination start address and the contents of the element k of the B band array 1332 as the compression target data start address. Here, k is a remainder when p is divided by 3.

(S11)圧縮部141の処理完了イベント発生を待つ。このイベント発生により、ウエイト状態が解除されてステップS12へ進む。ウエイト状態解除前は、OSにより直ぐに次のスレッドに切り替えられるので、図5の処理遅延が防止される。   (S11) Wait for the processing completion event of the compression unit 141 to occur. When this event occurs, the wait state is canceled and the process proceeds to step S12. Since the OS immediately switches to the next thread before the wait state is released, the processing delay of FIG. 5 is prevented.

(S12、S13)p=0かつq=0であれば、スレッドTh2を生成し開始させる。   (S12, S13) If p = 0 and q = 0, a thread Th2 is generated and started.

(S14)p=nであり、かつ、q=je(n)であれば処理を終了し、そうでなければステップS15へ進む。   (S14) If p = n and q = je (n), the process ends. If not, the process proceeds to step S15.

(S15)バンド・ブロック番号変数群1333の変数Cの内容(p,q)を上記のように更新する。   (S15) The contents (p, q) of the variable C in the band block number variable group 1333 are updated as described above.

(S16)バンド・ブロック番号変数群1333の変数Rの内容ijを見てRpqの処理が完了しているか否かを判定し、すなわち、0≦q≦je(p)−1のときはi=p且つj=q+1であるか否かを判定しq=je(p)のときはi=p+1且つj=0であるか否かを判定し、肯定判定した場合にはステップS10へ戻る。   (S16) By looking at the contents ij of the variable R in the band block number variable group 1333, it is determined whether or not the processing of Rpq is completed. That is, if 0 ≦ q ≦ je (p) −1, i = It is determined whether or not p and j = q + 1. When q = je (p), it is determined whether i = p + 1 and j = 0. If the determination is affirmative, the process returns to step S10.

図6(B)は、スレッドTh3での処理を示すフローチャートである。   FIG. 6B is a flowchart showing processing in the thread Th3.

(S20)バンド・ブロック番号変数群1333の変数Dの内容(r,s)を読み出し、伸長部142に対し伸張Dpqの処理を開始させる。この際、伸長部142には、伸張対象先頭アドレスとしてCバンド配列1330の要素iの内容と、伸張データ格納先先頭アドレスとしてBバンド配列1332の要素kの内容が供給される。ここにkは、rを3で割ったときの剰余である。   (S20) The contents (r, s) of the variable D in the band / block number variable group 1333 are read, and the decompression unit 142 starts the decompression Dpq process. At this time, the contents of the element i of the C band array 1330 are supplied to the decompression unit 142 as the decompression target start address, and the contents of the element k of the B band array 1332 are provided as the decompression data storage destination top address. Here, k is a remainder when r is divided by 3.

(S21)伸長部142の処理完了イベント発生を待つ。このイベント発生により、ウエイト状態が解除されてステップS22へ進む。ウエイト状態解除前は、OSにより直ぐに次のスレッドに切り替えられる。   (S21) Wait for the processing completion event of the decompression unit 142 to occur. When this event occurs, the wait state is canceled and the process proceeds to step S22. Before the wait state is canceled, the OS immediately switches to the next thread.

(S22)r=nであり、かつ、s=je(n)−1であれば処理を終了し、そうでなければステップS23へ進む。   (S22) If r = n and s = je (n) −1, the process is terminated; otherwise, the process proceeds to step S23.

(S23)バンド・ブロック番号変数群1333の変数Dの内容(r,s)を上記のように更新する。   (S23) The contents (r, s) of the variable D of the band / block number variable group 1333 are updated as described above.

(S24)バンド・ブロック番号変数群1333の変数Cの内容pqを見てCrsの処理が完了しているか否かを判定し、すなわち、0≦s≦je(r)−1のときはp=r且つq=s+1であるか否かを判定しs=je(r)のときはp=r+1且つq=0であるか否かを判定し、肯定判定した場合にはステップS20へ戻る。   (S24) The contents pq of the variable C in the band / block number variable group 1333 are viewed to determine whether or not the Crs processing has been completed. That is, when 0 ≦ s ≦ je (r) −1, p = It is determined whether r and q = s + 1. When s = je (r), it is determined whether p = r + 1 and q = 0. If the determination is affirmative, the process returns to step S20.

以上のような処理により、1頁分の圧縮データ(頁データ)が圧縮データ領域133C上に生成される。制御部123はこれに応答して、上記3スレッドとは別の、制御部123に含まれるスレッドThPを生成し開始させる。   Through the above processing, one page of compressed data (page data) is generated in the compressed data area 133C. In response to this, the control unit 123 generates and starts a thread ThP included in the control unit 123, which is different from the above three threads.

スレッドThPでは、エンジンコントローラ17のデータ入力がレディ状態であることを確認して、この頁データをバンド順次に、伸長部143を介し、伸長させエンジンコントローラ17へ転送させる。この際、バンドiに関しては、伸長部143に、伸長対象データ先頭アドレスとしてCバンド配列1330の要素iの内容と、転送先アドレスとしてエンジンコントローラ17のアドレスとが供給される。   In the thread ThP, it is confirmed that the data input of the engine controller 17 is in a ready state, and this page data is expanded in band order via the expansion unit 143 and transferred to the engine controller 17. At this time, for the band i, the contents of the element i of the C band array 1330 are supplied to the decompression unit 143 as the decompression target data start address, and the address of the engine controller 17 as the transfer destination address.

エンジンコントローラ17は、転送されたビットマップデータを受け取ってそのバッファメモリに格納した後、直列データに変換しさらにビデオ信号に変換してプリントエンジン21へ供給する。プリントエンジン21は、この信号とエンジンコントローラ17からの制御信号とに基づき、感光ドラムに静電潜像を形成させ、これにトナーを付着させて現像し、そのトナー像を用紙に転写させ、加熱及び加圧によりトナー像を用紙に定着させる。一方、CPU11は、プログラムに従って、搬送コントローラ18を介し用紙搬送装置22に対し用紙をプリントエンジン21へ搬送させ、印刷された用紙を搬送させてトレイ上に排紙させる。   The engine controller 17 receives the transferred bitmap data, stores it in its buffer memory, converts it into serial data, further converts it into a video signal, and supplies it to the print engine 21. Based on this signal and a control signal from the engine controller 17, the print engine 21 forms an electrostatic latent image on the photosensitive drum, develops it by attaching toner to the photosensitive drum, transfers the toner image to a sheet, and heats it. Then, the toner image is fixed on the paper by pressing. On the other hand, according to the program, the CPU 11 causes the paper transport device 22 to transport the paper to the print engine 21 via the transport controller 18, transports the printed paper, and discharges it onto the tray.

図9は、圧縮された頁データの伸長・転送処理と他の処理とを示す概略タイムチャートである。   FIG. 9 is a schematic time chart showing decompression / transfer processing of compressed page data and other processing.

このような処理により、スレッドTh0〜Th2による2頁目の各バンドの伸長・ラスタライズ・圧縮処理と、スレッドThPによる1頁目の頁データ伸長・転送処理とが並列に実行され、3頁目についても同様である。   By such processing, the expansion / rasterization / compression processing of each band of the second page by the threads Th0 to Th2 and the page data expansion / transfer processing of the first page by the thread ThP are executed in parallel. Is the same.

本実施例1によれば、ビットマップデータ領域133Bが3バンド分で足りるので、必要なメモリ容量の増大を抑制することができ、また、3バンド分が伸長、ラスタライズ及び圧縮に関し互いにずれて並列処理されるので、圧縮及び伸長のそれぞれを殆ど連続的に行うことができ、印刷データを高速にビットマップ展開することができるという効果を奏する。さらに、伸長、ラスタライズ及び圧縮のそれぞれが異なるタスクで並列処理されるので、比較的簡単に圧縮及び伸長のそれぞれを殆ど連続的に行うことができるという効果を奏する。   According to the first embodiment, since the bitmap data area 133B is sufficient for three bands, an increase in necessary memory capacity can be suppressed, and the three bands are shifted in parallel with respect to expansion, rasterization, and compression. Since it is processed, each of compression and decompression can be performed almost continuously, and the print data can be bitmap-developed at high speed. Furthermore, since decompression, rasterization, and compression are performed in parallel by different tasks, there is an effect that compression and decompression can be performed almost continuously relatively easily.

また、圧縮1チャンネル伸長2チャンネルのハードウェア圧縮伸長プロセッサ14を用いるとともに、圧縮・伸長プロセッサ14に対する伸長及び圧縮の開始制御を上記のようなスレッドTh1、Th2及びThPで実行しているので、これらの処理のCPU負荷が比較的小さい。このため、これらスレッドによるスレッドTh0の処理遅延が比較的小さく、また、並列処理により、全体として効率よく高速処理することが可能となる。さらに、多スレッド化によりプログラム構造が簡単化されるので、開発期間を短縮して製造コストを削減することが可能となる。   Since the compression / decompression processor 14 uses the compression / decompression processor 14 and the compression / decompression processor 14 performs the decompression and compression start control by the threads Th1, Th2 and ThP as described above. The CPU load for this process is relatively small. For this reason, the processing delay of the thread Th0 due to these threads is relatively small, and high-speed processing as a whole can be efficiently performed by parallel processing. Further, since the program structure is simplified by the multi-threading, the development period can be shortened and the manufacturing cost can be reduced.

なお、伸長部143をエンジンコントローラ17に備えてエンジンコントローラ17側で伸長させることにより、頁データ転送効率を高めてもよい。   Note that the page data transfer efficiency may be increased by providing the decompression unit 143 in the engine controller 17 and decompressing the decompression unit 143 on the engine controller 17 side.

上記実施例1では、ディスプレイリスト作成とラスタライズの処理を直列に行っていたが、両者を別スレッドにして並列処理することも可能であり、これを本発明の実施例2として以下に説明する。   In the first embodiment, the display list creation and rasterization processing are performed in series. However, it is also possible to perform both processes in separate threads, which will be described below as a second embodiment of the present invention.

図12に示すように、ディスプレイリストのみの処理を行うスレッドTh3を、スレッドTh0よりも前に生成して開始させ、バンド順次ブロック順次に(i,j)を更新して中間コードブロックLijの作成処理を行う。   As shown in FIG. 12, a thread Th3 for processing only the display list is generated and started before the thread Th0, and the intermediate code block Lij is created by updating (i, j) in the band sequential block order. Process.

図11は、この場合のスレッドTh0での処理を示すフローチャートである。図5の処理と異なるのは、ステップS2及びS5の替わりにステップS3aにおいて、伸張Di(j−1)のみならず中間コードブロックLijの作成完了も待つ点である。中間コードブロックLijの作成完了を通知するために、1333に変数Lを追加し、スレッドTh3で1ブロックの中間コード作成処理を完了する毎に、バンド番号及びブロック番号を更新する。   FIG. 11 is a flowchart showing processing in the thread Th0 in this case. A difference from the processing of FIG. 5 is that, in step S3a instead of steps S2 and S5, not only expansion Di (j−1) but also completion of creation of the intermediate code block Lij is awaited. In order to notify the completion of the creation of the intermediate code block Lij, a variable L is added to 1333, and the band number and the block number are updated every time one block of intermediate code creation processing is completed in the thread Th3.

図13は、バンドBND0〜BN2毎に図12の処理を再配列したものを示す図である。   FIG. 13 is a diagram showing a rearranged process of FIG. 12 for each of the bands BND0 to BN2.

他の点は、実施例1と同じである。   The other points are the same as those in the first embodiment.

本実施例2によれば、ディスプレイリスト作成とラスタライズとが並列処理させるので、それぞれの処理が簡単になり、また、ラスタライズの休止期間に対するラスタライズ実行時間が比較的小さいので、時分割並列処理におけるディスプレイリスト作成とラスタライズとの間の切り替えのオーバヘッドが比較的小さくなり、全体として効果的である。   According to the second embodiment, since display list creation and rasterization are processed in parallel, the respective processes are simplified, and the rasterization execution time is relatively small during the rasterization pause period. The overhead of switching between list creation and rasterization is relatively small and effective as a whole.

上記実施例1及び2では、伸長開始制御とラスタライズと圧縮開始制御とをそれぞれ異なるスレッドで実行するとともに、各スレッドで3バンド分をバンド順次に処理する場合を説明したが、各スレッドで1バンド分の伸長開始制御とラスタライズと圧縮開始制御とを実行することもできる。この場合、3スレッドのそれぞれは、変数領域のみ互いに異なる同一関数を用いることができる。   In the first and second embodiments, the case where the decompression start control, rasterization, and compression start control are executed by different threads and three bands are sequentially processed by each thread has been described. It is also possible to execute the decompression start control, rasterization, and compression start control for the minute. In this case, each of the three threads can use the same function that is different only in the variable area.

圧縮及び伸長のそれぞれについては同時に1バンド分しか処理できないので、スレッド間で同期を取る必要がある。このため、図15に示す如く、サブ領域BMPk、k=0〜2のそれぞれについて、圧縮完了フラグFc(k)及び伸長完了フラグFd(k)を、共有メモリ133内に備える。共有メモリ133内にはまた、図3のバンド・ブロック番号変数群1333の替わりに、中間コードブロックの作成がどこまで完了しているかを示すバンド・ブロック番号変数1333aが備えられている。図15の他の点は図3と同一である。   Since only one band can be processed at the same time for each of compression and decompression, it is necessary to synchronize between threads. Therefore, as shown in FIG. 15, the compression completion flag Fc (k) and the expansion completion flag Fd (k) are provided in the shared memory 133 for each of the sub-regions BMPk, k = 0 to 2. In the shared memory 133, a band block number variable 1333a indicating how far the creation of the intermediate code block has been completed is provided instead of the band block number variable group 1333 of FIG. Other points in FIG. 15 are the same as those in FIG.

図16は、スレッドTh0A、Th1A、Th2A及びTh3と、圧縮部141及び伸長部142の処理との概略タイミングチャートである。図16では複雑化を避けるため、圧縮及び伸長とスレッドとの間の関係を示す点線はスレッドTh0Aについてのみ記載している。   FIG. 16 is a schematic timing chart of the threads Th0A, Th1A, Th2A, and Th3 and the processing of the compression unit 141 and the expansion unit 142. In FIG. 16, in order to avoid complication, a dotted line indicating a relationship between compression and decompression and a thread describes only the thread Th0A.

スレッドTh3は図12のそれと同じであり、スレッドTh0A〜Th2Aと並列に処理される。スレッドTh0A、Th1A及びTh2Aはそれぞれ、スレッドTh3で中間コードブロックL00、L10及びL20の作成が完了したタイミングで生成され開始される。この生成及び開始は、スレッドTh3で行っても、不図示の別スレッドで行ってもよい。   The thread Th3 is the same as that of FIG. 12, and is processed in parallel with the threads Th0A to Th2A. The threads Th0A, Th1A, and Th2A are generated and started at the timing when the creation of the intermediate code blocks L00, L10, and L20 is completed in the thread Th3, respectively. This generation and start may be performed by the thread Th3 or by another thread (not shown).

図12では、圧縮Cij及び伸長Dijの2番目のインデックスjはブロック番号を表していたが、図16での対応する2番目のインデックスはサブ領域BMPkのkを示している。そこで、図14ではこれらをCik及びDikと表している。すなわち、圧縮Cikは、サブ領域BMPkのビットマップデータを圧縮してバンドiの圧縮データ領域に格納することを意味し、伸長Dikは、バンドiの圧縮データ領域に格納されているデータを伸長してサブ領域BMPkに格納することを意味する。   In FIG. 12, the second index j of the compressed Cij and the expanded Dij represents the block number, but the corresponding second index in FIG. 16 indicates k of the sub-region BMPk. Therefore, in FIG. 14, these are represented as Cik and Dik. That is, the compression Cik means that the bitmap data of the sub-region BMPk is compressed and stored in the compressed data region of the band i, and the decompression Dik decompresses the data stored in the compressed data region of the band i. Storing in the sub-region BMPk.

図14は、スレッドTh0A〜Th2Aのうちの任意のスレッドThkで実行される処理を示すフローチャートである。   FIG. 14 is a flowchart showing processing executed by an arbitrary thread Thk among the threads Th0A to Th2A.

(S30)バンド識別変数iにkを代入し、このバンドのブロック識別変数jに初期値0を代入する。   (S30) k is substituted into the band identification variable i, and the initial value 0 is substituted into the block identification variable j of this band.

(S31)サブ領域BMPkをゼロクリアする。   (S31) The sub-region BMPk is cleared to zero.

(S32)中間コードブロックLijの作成が完了していれば、ステップS33へ進む。   (S32) If the creation of the intermediate code block Lij is completed, the process proceeds to step S33.

(S33)ラスタライズRijの処理を行う。   (S33) Rasterize Rij processing is performed.

(S34)圧縮Ci(k−1)が完了するのを待つ。すなわち、スレッドTh(k−1)Aで開始制御された圧縮部141の処理完了イベントが発生すると、そのイベントハンドラにおいて、図15の圧縮完了フラグFc(k−1)の値が1であれば、この値を0にしてステップS35へ進み、そうでなければこのイベントハンドラを抜け、OSにより次のスレッドに切り替えられる。ただし、Ci(k−1)及びFc(k−1)において、k=0の場合にはk=3とみなす。圧縮部141の処理完了イベントが発生していないウエイト状態解除前は、OSにより直ぐに次のスレッドに切り替えられるので、図14の処理遅延が防止される。この点は、他のウエイト状態についても同様である。   (S34) Wait for compression Ci (k-1) to complete. That is, when the processing completion event of the compression unit 141 controlled to start with the thread Th (k−1) A occurs, if the value of the compression completion flag Fc (k−1) in FIG. If this value is set to 0, the process proceeds to step S35. Otherwise, the event handler is exited, and the OS switches to the next thread. However, in Ci (k-1) and Fc (k-1), when k = 0, it is considered that k = 3. Since the OS immediately switches to the next thread before releasing the wait state in which the processing completion event of the compression unit 141 has not occurred, the processing delay in FIG. 14 is prevented. This also applies to other wait states.

(S35)圧縮部141に対し圧縮Cikの処理を開始させる。この際、圧縮部141には、圧縮データ格納先先頭アドレスとしてCバンド配列1330の要素iの内容と、圧縮対象データ先頭アドレスとしてBバンド配列1332の要素kの内容とが供給される。   (S35) The compression unit 141 starts the compression Cik process. At this time, the compression unit 141 is supplied with the contents of the element i of the C band array 1330 as the compressed data storage destination start address and the contents of the element k of the B band array 1332 as the compression target data start address.

(S36)ステップS35で開始制御された圧縮部141の処理完了イベントが発生すると、そのイベントハンドラにおいて、図15の圧縮完了フラグFc(k)の値を1にして、ステップS37へ進む。   (S36) When the processing completion event of the compression unit 141 whose start is controlled in step S35 occurs, the event handler sets the value of the compression completion flag Fc (k) in FIG. 15 to 1, and proceeds to step S37.

(S37)(i,j)を実施例1で述べたようにバンド順次ブロック順次における次の値にする。   (S37) (i, j) is set to the next value in the band sequential block sequence as described in the first embodiment.

(S38)j=je(i)であればステップS3Cへ進み、そうでなければステップS39へ進む。   (S38) If j = je (i), the process proceeds to step S3C; otherwise, the process proceeds to step S39.

(S39)伸長Di(k−1)が完了するのを待つ。すなわち、図15の伸長完了フラグFd(k−1)の値が1であれば、この値を0にしてステップS3Aへ進む。ただし、Di(k−1)及びFd(k−1)において、k=0の場合にはk=3とみなす。   (S39) Wait for the expansion Di (k-1) to be completed. That is, if the value of the expansion completion flag Fd (k−1) in FIG. 15 is 1, this value is set to 0 and the process proceeds to step S3A. However, in Di (k−1) and Fd (k−1), k = 3 is considered when k = 0.

(S3A)伸長部142に対し伸張Dikの処理を開始させる。この際、伸長部142には、伸張対象先頭アドレスとしてCバンド配列1330の要素iの内容と、伸張データ格納先先頭アドレスとしてBバンド配列1332の要素kの内容が供給される。   (S3A) The expansion unit 142 starts the expansion Dik process. At this time, the contents of the element i of the C band array 1330 are supplied to the decompression unit 142 as the decompression target start address, and the contents of the element k of the B band array 1332 are provided as the decompression data storage destination top address.

(S3B)ステップS3Aで開始制御された伸長部142の処理完了イベントが発生すると、そのイベントハンドラにおいて、図15の伸長完了フラグFd(k)の値を1にしてステップS32へ進む。   (S3B) When the processing completion event of the decompression unit 142 controlled to start in step S3A occurs, the event handler sets the value of the decompression completion flag Fd (k) in FIG. 15 to 1 and proceeds to step S32.

(S3C)iを3だけインクリメントし、また、jを0に初期化する。   (S3C) Increment i by 3 and initialize j to 0.

(S3D)i>nであれば処理を終了し、そうでなければステップS31へ戻る。   (S3D) If i> n, the process is terminated; otherwise, the process returns to step S31.

他の点は、実施例1と同じである。   The other points are the same as those in the first embodiment.

本実施例3によれば、3バンド分について圧縮及び伸長のそれぞれをほぼ連続的に行うことができるので、印刷データを高速にビットマップ展開することができる。   According to the third embodiment, since compression and decompression can be performed almost continuously for the three bands, print data can be bitmap-developed at high speed.

また、1つのバンドについて伸長、ラスタライズ及び圧縮の一連の処理が1つのスレッド内でシーケンシャルに行われるので、その同期をスレッド間で取る必要がない。   In addition, since a series of processing of expansion, rasterization, and compression is performed sequentially within one thread for one band, it is not necessary to synchronize between the threads.

また、スレッドTh0A〜Th2Aで共通の関数を用いることができるので、実施例1及び2の場合よりもメモリ使用量を削減することができる。   Further, since a common function can be used in the threads Th0A to Th2A, the memory usage can be reduced as compared with the cases of the first and second embodiments.

さらに、ディスプレイリスト作成がスレッドTh0A〜Th2Aと異なるスレッドで実行されるので、スレッドTh0A〜Th2Aの各々でディスプレイリストを作成する場合よりもオーバヘッドが少なくなり、処理効率がよい。   Furthermore, since the display list creation is executed by a thread different from the threads Th0A to Th2A, the overhead is reduced and the processing efficiency is better than when the display list is created by each of the threads Th0A to Th2A.

同様に、スレッドTh0A〜Th2Aの各々で頁データ伸長・転送制御する場合よりも別スレッドThPで頁データ伸長・転送制御した方が、オーバヘッドが少なくなり、処理効率がよい。   Similarly, the page data decompression / transfer control with another thread ThP reduces the overhead and the processing efficiency is better than the page data decompression / transfer control with each of the threads Th0A to Th2A.

図17は、本発明の実施例4に係る、ホストコンピュータから印刷データを受信した後、中間言語に変換する迄の部分の機能ブロック図である。ラスタライズ以降の処理は図1と同じである。   FIG. 17 is a functional block diagram of a part from receiving print data from the host computer to converting it into an intermediate language according to the fourth embodiment of the present invention. The processing after rasterization is the same as in FIG.

この実施例4では、制御部123Aがホストコンピュータから通信インターフェイス15を介した印刷要求を受け付けると、印刷データ前処理部124のスレッドを生成する。印刷データ前処理部124はこれに応答して、通信インターフェイス15を介し受信した1頁分の印刷データ1321をヒープメモリ132に格納する。制御部123Aは、改ページコマンド受信毎に、印刷データ前処理部124のスレッドを生成する。印刷データ前処理部124は、図1の制御部123の一部に相当し、図17の制御部123Aは、図1の制御部123からこの印刷データ前処理部124を除いたものに相当する。   In the fourth embodiment, when the control unit 123A receives a print request from the host computer via the communication interface 15, a thread for the print data preprocessing unit 124 is generated. In response to this, the print data preprocessing unit 124 stores the print data 1321 for one page received via the communication interface 15 in the heap memory 132. The control unit 123A generates a thread for the print data preprocessing unit 124 every time a page break command is received. The print data preprocessing unit 124 corresponds to a part of the control unit 123 in FIG. 1, and the control unit 123A in FIG. 17 corresponds to the control unit 123 in FIG. 1 excluding the print data preprocessing unit 124. .

EEPROM12(図21)には特定の書体のフォントファイル125が格納されており、印刷データ前処理部124は、印刷データがこの書体を使用している場合、フォントファイル125を参照し印刷データ中の文字コード列を文字列イメージ1321aに変換する。この際、フォントキャッシュ1322にその文字コードの文字イメージが存在すればこれを用い、存在しなければ、これを文字イメージに変換してフォントキャッシュ1322に格納する。印刷データ前処理部124は、図形オブジェクトを台形等の基本図形に変換することにより、図1のRIP122での処理時間を短縮させてもよい。   The font file 125 of a specific typeface is stored in the EEPROM 12 (FIG. 21), and the print data preprocessing unit 124 refers to the font file 125 when the print data uses this typeface, The character code string is converted into a character string image 1321a. At this time, if there is a character image of the character code in the font cache 1322, this is used, and if it does not exist, it is converted into a character image and stored in the font cache 1322. The print data preprocessing unit 124 may shorten the processing time in the RIP 122 of FIG. 1 by converting the graphic object into a basic graphic such as a trapezoid.

印刷データ前処理部124は、受信開始時にインタープリタ121のスレッドを生成する。   The print data preprocessing unit 124 generates a thread of the interpreter 121 at the start of reception.

インタープリタ121は、これに応答して、印刷データ前処理部124による処理と並列して、上記実施例1で述べた処理を行い、ヒープメモリ132にディスプレイリスト1323を1頁分作成する。文字列イメージ1321aは、印刷データ1321内のイメージオブジェクトと同様に(実施例1参照)、ディスプレイリスト1323内のポインタによりリンクされている。   In response to this, the interpreter 121 performs the processing described in the first embodiment in parallel with the processing by the print data preprocessing unit 124, and creates the display list 1323 for one page in the heap memory 132. The character string image 1321a is linked by a pointer in the display list 1323 similarly to the image object in the print data 1321 (see the first embodiment).

印刷データ前処理部124及びインタープリタ121はそれぞれ、ヒープメモリ管理部126を介してヒープメモリ132内の領域の確保及び解放を行う。   Each of the print data preprocessing unit 124 and the interpreter 121 secures and releases an area in the heap memory 132 via the heap memory management unit 126.

図18は、ヒープメモリ管理部126関係の構成を示す概略ブロック図である。   FIG. 18 is a schematic block diagram showing a configuration related to the heap memory management unit 126.

ヒープメモリ管理部126は、メモリ割当メソッド1260と、メモリ解放メソッド1261と、カウントメソッド1262とを備えている。メモリ割当メソッド1260及びメモリ解放メソッド1261はそれぞれ、印刷データ前処理部124又はインタープリタ121とは別のスレッドで実行される。一方、RAM13の一部領域であるスタティックメモリ134には、ヒープメモリ管理部126で使用されるヒープメモリ上印刷データ残存頁数1340とヒープメモリ上ディスプレイリスト残存頁数1341とが確保される。ここに「残存頁数」は、処理中の頁も含む頁数である。   The heap memory management unit 126 includes a memory allocation method 1260, a memory release method 1261, and a count method 1262. The memory allocation method 1260 and the memory release method 1261 are each executed by a thread different from the print data preprocessing unit 124 or the interpreter 121. On the other hand, in the static memory 134 which is a partial area of the RAM 13, the number of remaining print data pages 1340 on the heap memory and the number 1341 of remaining display lists on the heap memory used by the heap memory management unit 126 are secured. Here, the “number of remaining pages” is the number of pages including the page being processed.

印刷データ残存頁数1340の初期値は0であり、印刷データ前処理部124は、印刷データ1321をヒープメモリ132内に1頁読み込む毎にカウントメソッド1262を介し印刷データ残存頁数1340を1だけインクリメントし、インタープリタ121からの解放指令に応答して、メモリ解放メソッド1261を介し該当頁の印刷データ1321(ディスプレイリスト1323からリンクされているイメージは対象外)をメモリから解放させ、カウントメソッド1262を介し印刷データ残存頁数1340を1だけデクリメントする。この解放指令は、インタープリタ121が1頁分のディスプレイリスト作成を終了したときに供給される。   The initial value of the print data remaining page number 1340 is 0, and the print data preprocessing unit 124 increments the print data remaining page number 1340 by 1 every time the print data 1321 is read into the heap memory 132 via the count method 1262. In response to the release command from the interpreter 121, the print data 1321 of the corresponding page (the image linked from the display list 1323 is not a target) is released from the memory via the memory release method 1261, and the count method 1262 is set. Then, the print data remaining page number 1340 is decremented by one. This release command is supplied when the interpreter 121 finishes creating one page of display list.

ディスプレイリスト残存頁数1341の初期値は0であり、インタープリタ121は、ディスプレイリスト1323をヒープメモリ132内に1頁作成する毎にカウントメソッド1262を介しディスプレイリスト残存頁数1341を1だけインクリメントし、図1のRIP122からの解放指令に応答して、メモリ解放メソッド1261を介し該当頁のディスプレイリスト1323をメモリから解放させ、カウントメソッド1262を介しディスプレイリスト残存頁数1341を1だけデクリメントする。この解放指令は、RIP122が1頁分のラスタライズを終了したときに供給される。   The initial value of the display list remaining page number 1341 is 0, and the interpreter 121 increments the display list remaining page number 1341 by 1 through the count method 1262 every time one page of the display list 1323 is created in the heap memory 132. In response to the release command from the RIP 122 in FIG. 1, the display list 1323 of the corresponding page is released from the memory via the memory release method 1261, and the display list remaining page number 1341 is decremented by 1 via the count method 1262. This release command is supplied when the RIP 122 completes rasterization for one page.

メモリ割当メソッド1260は、後述の所定条件を満たしていないことによりメモリ解放メソッド1261による解放を待っても要求サイズの記憶領域を確保できないないと判断した場合に、ガベージコレクタGCを呼び出す。メモリ解放メソッド1261は、メモリ割当メソッド1260と並列に実行される。このガベージコレクタGCは、システム側(ランタイムライブラリ内)であっても、アプリケーション側プログラムであってもよい。   The memory allocation method 1260 calls the garbage collector GC when it is determined that the storage area of the requested size cannot be secured even after waiting for the release by the memory release method 1261 because the predetermined condition described later is not satisfied. The memory release method 1261 is executed in parallel with the memory allocation method 1260. The garbage collector GC may be a system side (in a runtime library) or an application side program.

従来では、該条件を満たしているか否かを判定せずに、要求サイズの記憶領域を確保できないないと判断した場合にガベージコレクタGCが呼び出されていたので、処理に遅延が生ずる原因となっていた。しかし、本実施例4によれば、該条件を満たしている場合にはメモリ解放を待ってメモリ確保処理を行うので、ガベージコレクタGCが呼び出される確率が低減して、ガベージコレクタGCの実行による処理遅延を抑制できるという効果を奏する。   Conventionally, the garbage collector GC is called when it is determined that the storage area of the requested size cannot be secured without determining whether or not the condition is satisfied, which causes a delay in processing. It was. However, according to the fourth embodiment, when the condition is satisfied, the memory securing process is performed after the memory is released, so that the probability that the garbage collector GC is called is reduced, and the process by the execution of the garbage collector GC is performed. There is an effect that the delay can be suppressed.

ガベージコレクタGC実行中に他のスレッドが動作していると、オブジェクト参照が変化してガベージコレクションに誤りが生ずる。また、コンパクション中にコピー元のデータが変化するとコピーに誤りが生ずる。   If another thread is operating during execution of the garbage collector GC, the object reference changes and an error occurs in garbage collection. Further, if the copy source data changes during compaction, an error occurs in copying.

そこで、OSの機能であるバイナリセマフォを使用して、ヒープメモリ132を使用する、ヒープメモリ管理部126外のスレッド、本実施例4では印刷データ前処理部124のスレッドとインタープリタ121のスレッドとが動作を停止するのを待ってから、ガベージコレクタGCの実行を開始させる。   Therefore, a thread outside the heap memory management unit 126 that uses the heap memory 132 using a binary semaphore that is a function of the OS, that is, a thread of the print data preprocessing unit 124 and a thread of the interpreter 121 in the fourth embodiment. After waiting for the operation to stop, execution of the garbage collector GC is started.

図19は、ヒープメモリ132を使用する、ヒープメモリ管理部126外の任意のスレッドAでの、主にセマフォのロック獲得とロック解放とを示すフローチャートである。   FIG. 19 is a flowchart showing mainly semaphore lock acquisition and lock release in an arbitrary thread A outside the heap memory management unit 126 that uses the heap memory 132.

ステップS41での本体処理(1頁分の処理)の前処理として、ステップS40において、自スレッドAに対応したセマフォのロックを獲得し、ステップS41の後処理としてこのロックを解放させる。   As a pre-process of the main body process (process for one page) in step S41, a lock of the semaphore corresponding to the own thread A is acquired in step S40, and this lock is released as a post-process of step S41.

これにより、メモリ割当メソッド1260のスレッド(スレッドB)においてガベージコレクタGC呼び出し前(図20のステップS58)にこのセマフォのロックを獲得しようとすると、スレッドAに対応したセマフォのロックが既に獲得されていた場合、スレッドBは、OSにより待ち行列に入れられて、ステップS12の処理終了までウエイト状態となる。   As a result, when the thread of the memory allocation method 1260 (thread B) tries to acquire the lock of the semaphore before the garbage collector GC is called (step S58 in FIG. 20), the lock of the semaphore corresponding to the thread A is already acquired. If this happens, the thread B is queued by the OS and remains in a wait state until the processing in step S12 ends.

またステップS41内において、ステップS411でメモリ割当メソッド1260を呼び出す場合、その前処理として、ステップS410で、自スレッドAに対応したセマフォのロックを解放させ、ステップS411の後処理としてこのロックを獲得する。   In step S41, when the memory allocation method 1260 is called in step S411, as a pre-processing, the lock of the semaphore corresponding to the own thread A is released in step S410, and this lock is acquired as a post-processing in step S411. .

これにより、スレッドAがメモリ割当メソッド1260のスレッド(スレッドB)を生成してメモリ割当要求した場合、スレッドBはガベージコレクタGC呼び出し前(図20のステップS58)にスレッドAに対応したセマフォを獲得できるので、スレッドA、B間でのデッドロックが回避される。   Thus, when thread A creates a thread (thread B) of the memory allocation method 1260 and requests memory allocation, thread B acquires a semaphore corresponding to thread A before the garbage collector GC is called (step S58 in FIG. 20). As a result, deadlock between threads A and B is avoided.

図20は、メモリ割当メソッド1260の処理を示すフローチャートである。このメソッドのスレッドBは、印刷データ前処理部124又はインタープリタ121がヒープメモリ割当要求する際に、印刷データ前処理部124又はインタープリタ121により生成される。   FIG. 20 is a flowchart showing the processing of the memory allocation method 1260. The thread B of this method is generated by the print data preprocessing unit 124 or the interpreter 121 when the print data preprocessing unit 124 or the interpreter 121 makes a heap memory allocation request.

(S50)要求サイズの記憶領域の確保可否を判定し、肯定判定した場合には該確保を実行する。   (S50) It is determined whether or not the storage area of the requested size can be secured, and if the determination is affirmative, the securing is executed.

(S51)ステップS50で確保できた場合には図20の処理を終了(スレッドBが自動消滅)し、そうでない場合にはステップS52へ進む。   (S51) If it can be secured in step S50, the processing of FIG. 20 is terminated (thread B is automatically extinguished), otherwise, the process proceeds to step S52.

(S52)ディスプレイリスト残存頁数1341の値が2以上であれば、1頁分のディスプレイリスト1323の解放が間近と推定できるので、ステップS53へ進み、そうでなければステップS54へ進む。   (S52) If the value of the display list remaining page number 1341 is 2 or more, it can be estimated that the display list 1323 for one page is about to be released, so the process proceeds to step S53. Otherwise, the process proceeds to step S54.

(S53)ディスプレイリスト残存頁数1341がデクリメントされてイベントが発生するのを待つ。このデクリメントイベント発生に応答して、ステップS50へ戻る。   (S53) The display list remaining page number 1341 is decremented and an event is generated. In response to the occurrence of the decrement event, the process returns to step S50.

(S54)ディスプレイリスト1323の完了バンド数iがit未満(ラスタライズ開始条件未満)であればステップS55へ進み、そうでなければステップS56へ進む。ここで、図14のステップS32での待ち時間を無くするために、原則としてi=itである場合に図14の処理が開始される。   (S54) If the number of completed bands i in the display list 1323 is less than it (less than the rasterization start condition), the process proceeds to step S55, and if not, the process proceeds to step S56. Here, in order to eliminate the waiting time in step S32 of FIG. 14, the process of FIG. 14 is started when i = it in principle.

(S55)この原則の例外として、図14の処理を開始させることにより、図14の処理が終わってディスプレイリスト1323が1頁分解放されるのを待ち、ステップS50へ戻る。   (S55) As an exception to this principle, by starting the process of FIG. 14, the process of FIG. 14 is completed and the display list 1323 is released for one page, and the process returns to step S50.

(S56)印刷データ前処理部124からのメモリ割当要求であればステップS57へ進み、そうでなければステップS58へ進む。   (S56) If it is a memory allocation request from the print data preprocessing unit 124, the process proceeds to step S57; otherwise, the process proceeds to step S58.

(S57)フォントファイル125を解放させて、ステップS50へ戻る。この場合、ステップS51で否定判定したときにはステップS51からステップS58へ進む(不図示)。   (S57) The font file 125 is released and the process returns to step S50. In this case, when a negative determination is made in step S51, the process proceeds from step S51 to step S58 (not shown).

(S58)ヒープメモリ132を使用する、ヒープメモリ管理部126外の各スレッドに対応したセマフォのロックを獲得する。獲得できない場合、スレッドBは、この獲得ができるまでOSにより待ち行列に入れられる。本実施例4では、印刷データ前処理部124とインタープリタ121の一方のスレッドからのメモリ割当要求であり、該一方についてはステップS411の処理によりセマフォのロックを直ぐに獲得できるので、他方のスレッドがステップS42を処理するまで、スレッドBはOSにより待ち行列に入れられる。   (S58) A semaphore lock corresponding to each thread outside the heap memory management unit 126 that uses the heap memory 132 is acquired. If it cannot be acquired, thread B is queued by the OS until it can be acquired. In the fourth embodiment, it is a memory allocation request from one thread of the print data pre-processing unit 124 and the interpreter 121, and for this one, the semaphore lock can be acquired immediately by the process of step S411. Thread B is queued by the OS until S42 is processed.

(S59)ガベージコレクタGCを呼び出す。   (S59) Call the garbage collector GC.

ステップS58でウエイト中にインタープリタ121の処理が終了した場合、ラスタライズが終了して参照されなくなったディスプレイリスト1323中のバンド及びこれにリンクされた、印刷データ1321中のイメージデータが、ガベージコレクタGCにより解放され、その量は比較的多い。このため、ガベージコレクション実行により確保可能になる連続領域が比較的大きくなって効率よくガベージコレクションを実行することができるとともに、これによりガベージコレクション実行回数を低減してヒープメモリ確保遅延を抑制することが可能となる。   When the processing of the interpreter 121 is completed during the wait in step S58, the band in the display list 1323 that is no longer referred to after the rasterization is completed and the image data in the print data 1321 linked to the band are displayed by the garbage collector GC. Liberated, the amount is relatively large. For this reason, the continuous area that can be secured by executing garbage collection can be relatively large and garbage collection can be executed efficiently, and this can reduce the number of garbage collection execution times and suppress heap memory allocation delay. It becomes possible.

(S5A)ヒープメモリ132を使用する、ヒープメモリ管理部126外の各スレッドに対応したセマフォのロックを解放する。   (S5A) The semaphore lock corresponding to each thread outside the heap memory management unit 126 that uses the heap memory 132 is released.

(S5B)要求サイズの記憶領域の確保可否を判定し、肯定判定した場合には該確保を実行する。   (S5B) Whether or not the storage area of the requested size can be secured is determined, and when the determination is affirmative, the securing is executed.

(S5C、S5D)ステップS5Bで確保できなかった場合には、メモリフルエラーの異常表示を操作パネル20に表示させてプリントジョブを異常終了する。   (S5C, S5D) If it cannot be secured in step S5B, an abnormal display of memory full error is displayed on the operation panel 20 and the print job is terminated abnormally.

なお、本発明には外にも種々の変形例が含まれる。   The present invention includes various modifications in addition to the above.

例えば、バンド・ブロック番号変数群1333のデータ更新は、ラスタライズ等の処理開始前であってもよいことは勿論である。   For example, the data update of the band / block number variable group 1333 may be performed before the start of the process such as rasterization.

また、上記実施例では、2つのビットマップデータの合成が、一方のビットマップデータに対する他方のビットマップデータの上書きである場合を説明したが、ビットマップデータ間の論理演算を行うことによる合成であってもよい。   In the above-described embodiment, the case has been described in which the combination of two bitmap data is an overwrite of the other bitmap data with respect to one bitmap data. There may be.

さらに、マルチタスクとして、マルチスレッドの替わりにマルチプロセスを用いてもよい。   Furthermore, as a multitask, a multiprocess may be used instead of a multithread.

さらにまた、CPU11としてダブルコアCPUを用い、一方のコアと圧縮・伸張プログラムとの組を圧縮・伸長プロセッサとして用いる構成であってもよい。この場合、圧縮処理と伸張処理とをマルチタスク処理する。   Further, a double core CPU may be used as the CPU 11, and a combination of one core and a compression / decompression program may be used as a compression / decompression processor. In this case, the compression process and the decompression process are multitasked.

また、メモリ割当メソッド1260は、ステップS50〜S57の処理に特徴があるので、セマフォを用いずにメモリ割当メソッド1260から、印刷データ前処理部124とインタープリタ121のうち動作中のスレッドを停止させて、ガベージコレクタGCを実行させる構成であってもよい。また、該動作中のスレッドを停止させずに、これによりエラーが生じたら該エラーを修正する公知の方法を適用してもよい。   Further, the memory allocation method 1260 is characterized by the processing of steps S50 to S57. Therefore, the operating thread of the print data preprocessing unit 124 and the interpreter 121 is stopped from the memory allocation method 1260 without using a semaphore. The garbage collector GC may be executed. In addition, a known method for correcting the error may be applied when an error occurs without stopping the operating thread.

さらに、メモリ割当メソッド1260は、ステップS58〜S5Aの処理にも特徴があるので、この場合にはステップS52〜S57の処理を含まない構成であってもよい。   Further, since the memory allocation method 1260 is also characterized by the processing of steps S58 to S5A, in this case, the configuration may not include the processing of steps S52 to S57.

また、図19のステップS411での本体処理は1頁分に限定されず、所定バンド数などの所定量であればよい。   Also, the main body process in step S411 in FIG. 19 is not limited to one page, and may be a predetermined amount such as a predetermined number of bands.

また、印刷データ前処理部124又はインタープリタ121を複数の機能に分割してそれぞれをスレッドで実行する構成であってもよい。   Alternatively, the print data preprocessing unit 124 or the interpreter 121 may be divided into a plurality of functions and each may be executed by a thread.

本発明の実施例1〜3に係る、ホストコンピュータから受信した印刷データをビットマップ展開する部分の機能ブロック図である。FIG. 4 is a functional block diagram of a portion that develops a bitmap of print data received from a host computer according to Embodiments 1 to 3 of the present invention. ディスプレイリストのデータ構造説明図である。It is data structure explanatory drawing of a display list. ラスタライズ、圧縮及び伸張に関係したデータ構造説明図である。It is data structure explanatory drawing related to rasterization, compression, and expansion | extension. バンド処理順説明図である。It is band processing order explanatory drawing. スレッドTh0で行われるディスプレイリスト作成及びラスタライズの処理を示すフローチャートである。12 is a flowchart showing display list creation and rasterization processing performed in a thread Th0. (A)はスレッドTh1で行われる圧縮処理のフローチャートであり、(B)はスレッドTh2で行われる伸張処理のフローチャートである。(A) is a flowchart of compression processing performed in the thread Th1, and (B) is a flowchart of decompression processing performed in the thread Th2. 図5、図6(A)及び図6(B)での処理結果の一部を示す概略タイミングチャートである。FIG. 7 is a schematic timing chart showing a part of the processing results in FIG. 5, FIG. 6 (A) and FIG. 6 (B). バンドBND0〜BN2毎に図7の処理を再配列したものを示す図である。It is a figure which shows what rearranged the process of FIG. 7 for every band BND0-BN2. 圧縮された頁データの伸長・転送処理と他の処理とを示す概略タイムチャートである。10 is a schematic time chart showing decompression / transfer processing of compressed page data and other processing. (A)〜(C)は、ディスプレイリスト概略説明図である。(A)-(C) are display list schematic explanatory drawings. 本発明の実施例2に係るディスプレイリスト作成及びラスタライズの処理を示すフローチャートである。It is a flowchart which shows the display list preparation and rasterization process which concern on Example 2 of this invention. 実施例2での処理結果の一部を示す概略タイミングチャートである。12 is a schematic timing chart showing a part of the processing result in the second embodiment. バンドBND0〜BN2毎に図12の処理を再配列したものを示す図である。It is a figure which shows what rearranged the process of FIG. 12 for every band BND0-BN2. 本発明の実施例3に係るスレッドTh0A〜Th2Aの任意の1つで実行される処理を示すフローチャートである。It is a flowchart which shows the process performed by arbitrary one of thread | sled Th0A-Th2A which concerns on Example 3 of this invention. 本発明の実施例3に係るラスタライズ、圧縮及び伸張に関係したデータ構造説明図である。It is data structure explanatory drawing related to the rasterization based on Example 3 of this invention, compression, and expansion | extension. 実施例3での処理結果の一部を示す概略タイミングチャートである。10 is a schematic timing chart showing a part of the processing result in the third embodiment. 本発明の実施例4に係る、ホストコンピュータから印刷データを受信した後中間言語に変換する迄の部分の機能ブロック図である。FIG. 10 is a functional block diagram of a portion until print data is received from a host computer and converted to an intermediate language according to a fourth embodiment of the present invention. 図17中のヒープメモリ管理部関係の構成を示す概略ブロック図である。FIG. 18 is a schematic block diagram illustrating a configuration related to a heap memory management unit in FIG. 17. ヒープメモリを使用する、ガベージコレクタ以外の任意のスレッドでの主にセマフォのロックの獲得と解放とを示すフローチャートである。It is a flowchart which mainly shows acquisition and release of a semaphore lock in an arbitrary thread other than the garbage collector using heap memory. 図18中のメモリ割当メソッドの処理を示すフローチャートである。It is a flowchart which shows the process of the memory allocation method in FIG. 本発明の実施例1〜4に係る画像形成装置のハードウェア構成を示す概略ブロック図である。1 is a schematic block diagram illustrating a hardware configuration of an image forming apparatus according to Embodiments 1 to 4 of the present invention.

符号の説明Explanation of symbols

10 画像形成装置
11 CPU
12 EEPROM
121 インタープリタ
122 RIP
123 制御部
124 印刷データ前処理部
125 フォントファイル
126 ヒープメモリ管理部
1260 メモリ割当メソッド
1261 メモリ解放メソッド
1262 カウントメソッド
13 RAM
131 バッファメモリ
132 ヒープメモリ
1321 印刷データ
1321a 文字列イメージ
1322 フォントキャッシュ
1323 ディスプレイリスト
133 共有メモリ
134 スタティックメモリ
1340 印刷データ残存頁数
1341 ディスプレイリスト残存頁数
133C 圧縮データ領域
133B ビットマップデータ領域
1320 Lバンド配列
1330 Cバンド配列
1331 ブロック最大番号配列
1332 Bバンド配列
1333 バンド・ブロック番号変数群
14 圧縮・伸長プロセッサ
141 圧縮部
142、143 伸長部
15 通信インターフェイス
16 パネルインターフェイス
17 エンジンコントローラ
18 搬送コントローラ
19 バス
20 操作パネル
21 プリントエンジン
22 用紙搬送装置
30 印刷データ
31〜34 図形オブジェクト
40〜43 バンド
Th0〜Th3、Th0A、Th1A、Th2A、ThP スレッド
L0〜Ln ディスプレイリスト
Lij 中間コードブロック
Rij ラスタライズ
Cpq 圧縮
Drs 伸長
BND0〜BND2 バンド
BMP0〜BMP2 サブ領域
GC ガベージコレクタ
10 Image forming apparatus 11 CPU
12 EEPROM
121 interpreter 122 RIP
123 Control Unit 124 Print Data Pre-Processing Unit 125 Font File 126 Heap Memory Management Unit 1260 Memory Allocation Method 1261 Memory Release Method 1262 Count Method 13 RAM
131 Buffer memory 132 Heap memory 1321 Print data 1321a Character string image 1322 Display list 133 Shared memory 134 Static memory 1340 Number of remaining print data pages 1341 Number of remaining display list pages 133C Compressed data area 133B Bitmap data area 1320 L band array 1330 C band array 1331 block maximum number array 1332 B band array 1333 band block number variable group 14 compression / decompression processor 141 compression unit 142, 143 expansion unit 15 communication interface 16 panel interface 17 engine controller 18 transport controller 19 bus 20 operation panel 21 Print Engine 22 Paper Transport Device 30 Print Data 31-34 Graphic object 40-43 Band Th0-Th3, Th0A, Th1A, Th2A, ThP Thread L0-Ln Display list Lij Intermediate code block Rij Rasterization Cpq Compression Drs decompression BND0-BND2 Band BMP0-BMP2 Base collector GC

Claims (10)

プロセッサと、
該プロセッサに結合され、ヒープメモリ割当プログラムが格納された記憶手段と、
を有する画像形成装置において、
該ヒープメモリ割当プログラムは、該プロセッサに対し、
(a)要求サイズの記憶領域を確保可能か否かを判定させ、肯定判定した場合には要求サイズの記憶領域を確保させ、
(b)処理(a)で否定判定した場合には、第1状態であれば第2状態になるのを待って処理(a)に戻らせ、
(c)処理(b)で該第1状態でなければ、ガベージコレクションを行わせた後に該要求サイズの記憶領域を確保させる、
ことを特徴とする画像形成装置。
A processor;
Storage means coupled to the processor and storing a heap memory allocation program;
In an image forming apparatus having
The heap memory allocation program
(A) Determine whether it is possible to secure a storage area of the requested size, and if affirmative determination is made, secure a storage area of the requested size,
(B) If a negative determination is made in process (a), if it is the first state, the process waits for the second state to return to process (a),
(C) If the process (b) is not in the first state, a storage area of the requested size is secured after garbage collection is performed.
An image forming apparatus.
該第1状態は、処理中を含むメモリ上ディスプレイリスト残存頁数が2以上であり、該第2状態は、該処理中を含むメモリ上ディスプレイリスト残存頁数が1以下であることを含むことを特徴とする請求項1に記載の画像形成装置。   The first state includes that the number of remaining pages in the display list on the memory including the processing is two or more, and the second state includes that the number of remaining pages of the display list on the memory including the processing is one or less. The image forming apparatus according to claim 1. 処理(c)は、該プロセッサに対し、
(c1)該第1状態でなければ、該処理中を含むメモリ上ディスプレイリスト残存頁数が1以下かつ処理中ディスプレイリストの作成済バンド数がラスタライズ開始条件未満の値であるか否かを判定させ、
(c2)処理(c1)で肯定判定した場合には、例外としてラスタライズを開始させ、処理(a)に戻らせ、
(c3)処理(c1)で否定判定した場合には、該ガベージコレクションを行わせた後に該要求サイズの記憶領域を確保させる、
ことを特徴とする請求項2に記載の画像形成装置。
The process (c)
(C1) If not in the first state, it is determined whether or not the number of remaining pages in the display list including the processing is 1 or less and the number of created bands of the processing display list is less than the rasterization start condition. Let
(C2) When an affirmative determination is made in process (c1), rasterization is started as an exception, and the process returns to process (a).
(C3) If a negative determination is made in step (c1), a storage area of the requested size is secured after the garbage collection is performed.
The image forming apparatus according to claim 2.
処理(c3)は、該プロセッサに対し、
(c31)処理(c1)で否定判定した場合には、記憶領域確保要求が、ディスプレイリスト作成処前の処理を行うプログラムからの要求であるか否かを判定させ、肯定判定した場合には、フォントキャッシュを解放させて処理(a)に戻らせ、
(c32)処理(c31)で否定判定した場合には、該ガベージコレクションを行わせた後に該要求サイズの記憶領域を確保させる、
ことを特徴とする請求項3に記載の画像形成装置。
The process (c3)
(C31) If a negative determination is made in the process (c1), it is determined whether or not the storage area securing request is a request from a program that performs a process before the display list creation process. Release the font cache and return to process (a),
(C32) If a negative determination is made in step (c31), a storage area of the requested size is secured after the garbage collection is performed.
The image forming apparatus according to claim 3.
プロセッサと、
該プロセッサに結合され、それぞれ異なるタスクとして実行される複数の処理プログラムと、ヒープメモリ管理プログラムとが格納された記憶手段と、
を有する画像形成装置において、
該複数の処理プログラムのそれぞれは、該プロセッサに対し、本体処理の前処理として自タスクに対応したセマフォのロックを獲得させ、該本体処理の後処理としてこのロックを解放させ、
該ヒープメモリ管理プログラムは、該タスクと別のタスクとして実行されるヒープメモリ割当プログラムと、該ヒープメモリ割当プログラムと並列実行可能なヒープメモリ解放プログラムとを有し、
該ヒープメモリ割当プログラムは、該プロセッサに対し、要求サイズの記憶領域を確保できないないと判断した場合、ガベージコレクションの前処理として、該複数の処理プログラムのそれぞれに対応したセマフォのロックを獲得させ、該ガベージコレクションを行わせ、該ガベージコレクションの後処理としてこれらセマフォのロックを解放させ、
該ヒープメモリ解放プログラムは該プロセッサに対し、該複数の処理プログラムの任意の1つからの解放要求に応答して、該ヒープメモリの対応する記憶領域を解放させ、
該複数の処理プログラムの任意の1つは、該プロセッサに対し、該ヒープメモリ割当プログラムを介しヒープメモリ割当要求する前に、自タスクに対応したセマフォのロックを解放させ、該ヒープメモリ割当プログラムから戻った後にこのセマフォのロックを獲得させる、
ことを特徴とする画像形成装置。
A processor;
A plurality of processing programs coupled to the processor and executed as different tasks, and storage means storing a heap memory management program;
In an image forming apparatus having
Each of the plurality of processing programs causes the processor to acquire the lock of the semaphore corresponding to its own task as the preprocessing of the main body processing, and to release the lock as the postprocessing of the main body processing,
The heap memory management program includes a heap memory allocation program that is executed as a task different from the task, and a heap memory release program that can be executed in parallel with the heap memory allocation program.
When the heap memory allocation program determines that the storage area of the requested size cannot be secured for the processor, the heap memory allocation program acquires a semaphore lock corresponding to each of the plurality of processing programs as preprocessing of the garbage collection, Let the garbage collection occur, let the lock on these semaphores be released as post-processing of the garbage collection,
The heap memory release program causes the processor to release a corresponding storage area of the heap memory in response to a release request from any one of the plurality of processing programs,
Any one of the plurality of processing programs causes the processor to release the lock of the semaphore corresponding to the invoking task before requesting heap memory allocation via the heap memory allocation program. Get this semaphore lock after returning,
An image forming apparatus.
該ヒープメモリ割当プログラムは、該プロセッサに対し、該複数の処理プログラムの任意の1つからの割当要求に応答して、
(a)要求サイズの記憶領域の確保可否を判定させ、肯定判定した場合には該確保を実行させて割当要求処理を終了させ、
(b)処理(a)で否定判定した場合には、該ヒープメモリ解放プログラムの実行を待てば該要求サイズの記憶領域を確保できると推定できる第1所定状態であるか否かを判定させ、
(c)処理(b)で肯定判定した場合には、第2所定状態になるのを待って処理(a)に戻らせ、
(d)処理(b)で否定判定した場合には、該ガベージコレクションを行わせ、
(e)該ガベージコレクション後に該要求サイズの記憶領域を確保させる、
ことを特徴とする請求項5に記載の画像形成装置。
The heap memory allocation program responds to an allocation request from any one of the plurality of processing programs to the processor,
(A) Whether to secure a storage area of the requested size is determined. If the determination is affirmative, the allocation request processing is terminated by executing the allocation,
(B) If a negative determination is made in the process (a), it is determined whether or not it is a first predetermined state in which it can be estimated that a storage area of the required size can be secured if the heap memory release program is executed,
(C) If an affirmative determination is made in process (b), the process waits for the second predetermined state to return to process (a);
(D) When a negative determination is made in the process (b), the garbage collection is performed.
(E) ensuring a storage area of the requested size after the garbage collection;
The image forming apparatus according to claim 5.
処理(b)の該第1所定状態は、未処理を含むモリ上ディスプレイリスト残存頁数が2以上であり、
処理(c)の該第2所定状態は、該頁が1頁であることを含む、
ことを特徴とする請求項6に記載の画像形成装置。
In the first predetermined state of the process (b), the number of remaining display lists on the memory including unprocessed is 2 or more,
The second predetermined state of the processing (c) includes that the page is one page.
The image forming apparatus according to claim 6.
処理(d)は該プロセッサに対し、
(d1)処理(b)で否定判定した場合には、該残存頁数が1以下であり、かつ、中間言語の作成済バンド数がラスタライズ開始条件未満の値であるか否かを判定させ、
(d2)処理(d1)で肯定判定した場合には、ラスタライズ処理プログラムを強制実行させた後に処理(a)に戻らせ、
(d3)処理(d2)で否定判定した場合には、該ガベージコレクションを行わせる、
ことを特徴とする請求項7に記載の画像形成装置。
Process (d)
(D1) If a negative determination is made in step (b), it is determined whether or not the number of remaining pages is 1 or less and the number of generated bands in the intermediate language is a value less than the rasterization start condition.
(D2) If an affirmative determination is made in process (d1), the rasterization process program is forcibly executed and then the process is returned to process (a).
(D3) If a negative determination is made in step (d2), the garbage collection is performed.
The image forming apparatus according to claim 7.
該複数の処理プログラムは、該プロセッサに対し、受信した印刷データを該ヒープメモリに格納させ該印刷データを中間言語に変換させて該ヒープメモリに格納させる処理を複数の機能に分割したときの該複数の機能のそれぞれをタスクとして実行させるものであることを特徴とする請求項6乃至8のいずれか1つに記載の画像形成装置。   The plurality of processing programs store the received print data in the heap memory, convert the print data into an intermediate language, and store the stored print data in the heap memory into a plurality of functions. The image forming apparatus according to claim 6, wherein each of the plurality of functions is executed as a task. 該複数の処理プログラムは、
該プロセッサに対し、受信した印刷データを該ヒープメモリに格納させる処理プログラムと、
該プロセッサに対し、該ヒープメモリ内の該印刷データを中間言語に変換させて該ヒープメモリに格納させる処理プログラムと、
を有することを特徴とする請求項9に記載の画像形成装置。
The plurality of processing programs are:
A processing program for causing the processor to store the received print data in the heap memory;
A processing program that causes the processor to convert the print data in the heap memory into an intermediate language and store the converted data in the heap memory;
The image forming apparatus according to claim 9, further comprising:
JP2007290332A 2004-05-25 2007-11-08 Image forming apparatus Expired - Fee Related JP5150214B2 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007290332A JP5150214B2 (en) 2007-11-08 2007-11-08 Image forming apparatus
US12/124,538 US8619310B2 (en) 2007-05-25 2008-05-21 Image forming apparatus
US14/076,218 US9202149B2 (en) 2004-05-25 2013-11-10 Image forming apparatus
US14/076,221 US8861013B2 (en) 2007-05-25 2013-11-10 Image forming apparatus
US14/076,217 US8928903B2 (en) 2007-05-25 2013-11-10 Image forming apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007290332A JP5150214B2 (en) 2007-11-08 2007-11-08 Image forming apparatus

Publications (2)

Publication Number Publication Date
JP2009116712A true JP2009116712A (en) 2009-05-28
JP5150214B2 JP5150214B2 (en) 2013-02-20

Family

ID=40783775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007290332A Expired - Fee Related JP5150214B2 (en) 2004-05-25 2007-11-08 Image forming apparatus

Country Status (1)

Country Link
JP (1) JP5150214B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013178634A (en) * 2012-02-28 2013-09-09 Ricoh Co Ltd Electronic device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1097435A (en) * 1996-09-20 1998-04-14 Nec Corp Resource allocation system
JPH10320264A (en) * 1997-05-20 1998-12-04 Fujitsu Ltd Memory space control system
JP2006344184A (en) * 2005-06-10 2006-12-21 Kyocera Mita Corp Image formation device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1097435A (en) * 1996-09-20 1998-04-14 Nec Corp Resource allocation system
JPH10320264A (en) * 1997-05-20 1998-12-04 Fujitsu Ltd Memory space control system
JP2006344184A (en) * 2005-06-10 2006-12-21 Kyocera Mita Corp Image formation device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013178634A (en) * 2012-02-28 2013-09-09 Ricoh Co Ltd Electronic device

Also Published As

Publication number Publication date
JP5150214B2 (en) 2013-02-20

Similar Documents

Publication Publication Date Title
US9202149B2 (en) Image forming apparatus
JP3872558B2 (en) Fallback processing for page generation using memory reduction techniques
US8141076B2 (en) Cell processor methods and apparatus
US8625133B2 (en) Print data processing apparatus, print data processing method, and storage medium
JP5655392B2 (en) Print image processing apparatus and program
JP5051327B1 (en) Image processing apparatus and program
JP5150214B2 (en) Image forming apparatus
US8614822B2 (en) Print data processing apparatus, print data processing method, and storage medium
JP4343976B2 (en) Image forming apparatus
JP4343975B2 (en) Image forming apparatus
JP4343974B2 (en) Image forming apparatus
JP4370346B2 (en) Image forming apparatus
US9870184B2 (en) Information processing apparatus combining multiple filters, recording medium, and control method
JP5251995B2 (en) Image data generating apparatus, image forming apparatus, and program
JP2010282152A (en) Image forming apparatus
US10262247B2 (en) Image forming apparatus for converting print data into intermediate data, method for controlling image forming apparatus, and storage medium
US10121098B2 (en) Image forming apparatus having plurality of processing units for generating intermediate data, and method for controlling the image forming apparatus
JP7186541B2 (en) IMAGE PROCESSING DEVICE, CONTROL METHOD THEREOF, AND PROGRAM
JP2019057207A (en) Print controller, image forming system, and image forming apparatus
JP2009053829A (en) Information processor and information processing program
JP2022094793A (en) Image formation device, image formation method, and program
JP5252136B2 (en) Image data generator
JP5252116B2 (en) Image data generator
JP2014078175A (en) Information processor, control method thereof, and program
JP5212566B2 (en) Image data generating apparatus, image forming apparatus, and program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121203

R150 Certificate of patent or registration of utility model

Ref document number: 5150214

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151207

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees