[go: up one dir, main page]

JP2011167857A - Image forming apparatus, image forming method, and image forming program - Google Patents

Image forming apparatus, image forming method, and image forming program Download PDF

Info

Publication number
JP2011167857A
JP2011167857A JP2010031169A JP2010031169A JP2011167857A JP 2011167857 A JP2011167857 A JP 2011167857A JP 2010031169 A JP2010031169 A JP 2010031169A JP 2010031169 A JP2010031169 A JP 2010031169A JP 2011167857 A JP2011167857 A JP 2011167857A
Authority
JP
Japan
Prior art keywords
data
page
processing
unit
pdl
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.)
Pending
Application number
JP2010031169A
Other languages
Japanese (ja)
Inventor
Taiji Yanagida
泰司 柳田
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2010031169A priority Critical patent/JP2011167857A/en
Publication of JP2011167857A publication Critical patent/JP2011167857A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Accessory Devices And Overall Control Thereof (AREA)
  • Record Information Processing For Printing (AREA)
  • Image Processing (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide an image forming apparatus which can achieve speed-up of processing by reducing a state of waiting for image outputting by performing parallel processing so that processing of pages of small page numbers is completed with priority, and to provide an image forming method, and an image forming program. <P>SOLUTION: Processing in a PDL processing section is divided to DL data generation processing (pre-processing) by a DL generating part 31 and band drawing processing (post-processing) by a drawing part 32. A control part 431 of a PDL processing managing section 43 makes DL data of a plurality of pages generated by parallel processing by assigning a plurality of CPU cores to processing of the plurality of pages when starting the DL generating part 31 to perform DL data generation processing, while making a plurality of bands of pages of small page numbers drawn by parallel processing by assigning a plurality of CPU cores with priority to processing of the pages when starting the drawing part 32 to perform drawing processing after generation of the DL data. <P>COPYRIGHT: (C)2011,JPO&INPIT

Description

本発明は、複数のCPUコアを用いて画像形成に関わる処理を並列して実行可能な画像形成装置、画像形成方法、および画像形成プログラムに関する。   The present invention relates to an image forming apparatus, an image forming method, and an image forming program capable of executing processes related to image formation in parallel using a plurality of CPU cores.

PDL(Page Descript Language;ページ記述言語)で記述されたPDLデータを解釈して画像を形成する画像形成装置においては、扱う画像の高解像度化や装置自体の高機能化に伴ってCPUの処理負荷が増大する傾向にあり、画像形成に関わる処理を迅速に実行することが難しい状況となってきている。そこで、この種の画像形成装置では、複数のCPUを用いる、あるいはマルチコアCPUを用いることにより画像形成に関わる処理を並列して実行できるようにして、処理の高速化を図ることが検討されている。   In an image forming apparatus that interprets PDL data described in PDL (Page Descript Language) and forms an image, the processing load of the CPU increases as the resolution of the image to be handled increases and the function of the apparatus itself increases. Therefore, it is difficult to quickly execute processing related to image formation. In view of this, in this type of image forming apparatus, it has been studied to increase the processing speed by using a plurality of CPUs or using a multi-core CPU so that processes related to image formation can be executed in parallel. .

例えば、特許文献1には、複数のCPUを用いて複数ページ分のレンダリングを並列処理することが可能な画像形成装置が開示されている。   For example, Patent Document 1 discloses an image forming apparatus that can perform rendering for a plurality of pages in parallel using a plurality of CPUs.

しかしながら、複数のCPUを用いて複数ページ分のレンダリング処理を並列に実行したとしても、画像の出力はページ番号が小さいページから順に行われるため、ページ番号が小さいページの処理が完了しなければ画像の出力は行えないことになる。ここで、ページごとのレンダリング処理の処理負荷はページに記述されている内容によって異なるため、ページ番号が小さいページの処理負荷がページ番号の大きいページの処理負荷よりも大きい場合には、ページ番号の大きいページの処理が先に完了しても出力待ちの状態が生じ、並列処理の利点である処理の高速化が十分に発揮されないという問題がある。   However, even if rendering processing for a plurality of pages is executed in parallel using a plurality of CPUs, the image is output in order from the page with the smallest page number. Cannot be output. Here, since the processing load of rendering processing for each page differs depending on the contents described in the page, if the processing load of a page with a small page number is larger than the processing load of a page with a large page number, the page number Even if processing of a large page is completed first, an output waiting state occurs, and there is a problem that the speeding up of processing, which is an advantage of parallel processing, cannot be sufficiently exhibited.

本発明は、上記に鑑みてなされたものであって、ページ番号の小さいページの処理が優先的に完了するように並列処理を実行して画像の出力待ちの状態を低減し、処理の高速化を実現することができる画像形成装置、画像形成方法、および画像形成プログラムを提供することを目的としている。   The present invention has been made in view of the above, and performs parallel processing so that processing of a page with a small page number is preferentially completed, thereby reducing the waiting state for image output, and speeding up the processing. An object of the present invention is to provide an image forming apparatus, an image forming method, and an image forming program.

上述した課題を解決し、目的を達成するために、本発明は、複数のCPUコアを用いて画像形成に関わる処理を並列して実行可能な画像形成装置において、PDLデータを解析してページごとに独立した描画のための中間データを生成する中間データ生成手段と、前記中間データ生成手段により生成されたページごとの中間データを保持するデータ保持手段と、前記データ保持手段に保持された中間データに基づいて、複数の描画領域に分割された1ページ分の画像を前記描画領域ごとに描画する描画手段と、前記データ保持手段に前記中間データが保持されていない場合は、複数のCPUコアを前記中間データ生成手段による中間データ生成処理に割り当てて、複数ページ分の中間データ生成処理を並列で実行させるとともに、前記データ保持手段に前記中間データが保持されている場合は、複数のCPUコアを前記描画手段による描画処理に割り当てて、ページ番号が小さいページから順に前記複数の描画領域の描画処理を並列で実行させる制御手段と、を備えることを特徴とする。   In order to solve the above-described problems and achieve the object, the present invention analyzes PDL data for each page in an image forming apparatus capable of executing processes related to image formation in parallel using a plurality of CPU cores. Intermediate data generating means for generating intermediate data for independent drawing, data holding means for holding intermediate data for each page generated by the intermediate data generating means, and intermediate data held in the data holding means A drawing unit that draws an image for one page divided into a plurality of drawing regions for each drawing region, and a plurality of CPU cores when the intermediate data is not held in the data holding unit. Assigned to the intermediate data generation process by the intermediate data generation means, the intermediate data generation process for a plurality of pages is executed in parallel, and the data When the intermediate data is held in the holding means, a plurality of CPU cores are assigned to the drawing process by the drawing means, and the drawing processes of the drawing areas are executed in parallel from the page with the smallest page number. And means.

また、本発明にかかる画像形成方法は、複数のCPUコアを用いて画像形成に関わる処理を並列して実行可能な画像形成装置において実行される画像形成方法であって、PDLデータを解析してページごとに独立した描画のための中間データを生成するステップと、生成したページごとの中間データをデータ保持手段に保持させるステップと、前記データ保持手段に保持された中間データに基づいて、複数の描画領域に分割された1ページ分の画像を前記描画領域ごとに描画するステップと、を有し、前記データ保持手段に前記中間データが保持されていない場合は、前記中間データを生成する処理に複数のCPUコアを割り当てて、複数ページ分の中間データ生成処理を並列で実行するとともに、前記データ保持手段に前記中間データが保持されている場合は、前記描画領域ごとに1ページ分の画像を描画する処理に複数のCPUコアを割り当てて、ページ番号が小さいページから順に前記複数の描画領域の描画処理を並列で実行することを特徴とする。   An image forming method according to the present invention is an image forming method executed in an image forming apparatus capable of executing processes related to image formation in parallel using a plurality of CPU cores, and analyzing PDL data. A step of generating intermediate data for independent drawing for each page, a step of causing the data holding means to hold the generated intermediate data for each page, and a plurality of pages based on the intermediate data held in the data holding means Drawing an image for one page divided into drawing areas for each drawing area. If the intermediate data is not held in the data holding means, the intermediate data is generated. A plurality of CPU cores are allocated to execute the intermediate data generation processing for a plurality of pages in parallel, and the intermediate data is stored in the data holding unit. If it is, a plurality of CPU cores are assigned to the process of drawing an image for one page for each drawing area, and the drawing processes of the plurality of drawing areas are executed in parallel from the page with the smallest page number. It is characterized by.

また、本発明にかかる画像形成プログラムは、複数のCPUコアを有するコンピュータに、PDLデータを解析してページごとに独立した描画のための中間データを生成する中間データ生成手段としての機能と、前記中間データ生成手段により生成されたページごとの中間データを保持するデータ保持手段としての機能と、前記データ保持手段に保持された中間データに基づいて、複数の描画領域に分割された1ページ分の画像を前記描画領域ごとに描画する描画手段としての機能と、前記データ保持手段に前記中間データが保持されていない場合は、複数のCPUコアを前記中間データ生成手段による中間データ生成処理に割り当てて、複数ページ分の中間データ生成処理を並列で実行させるとともに、前記データ保持手段に前記中間データが保持されている場合は、複数のCPUコアを前記描画手段による描画処理に割り当てて、ページ番号が小さいページから順に前記複数の描画領域の描画処理を並列で実行させる制御手段としての機能と、を実現させるための画像形成プログラムである。   An image forming program according to the present invention includes a function as an intermediate data generation unit that analyzes PDL data and generates intermediate data for independent drawing for each page in a computer having a plurality of CPU cores. Based on the function as data holding means for holding the intermediate data for each page generated by the intermediate data generating means and the intermediate data held in the data holding means, one page divided into a plurality of drawing areas A function as a drawing means for drawing an image for each drawing area, and if the intermediate data is not held in the data holding means, a plurality of CPU cores are assigned to the intermediate data generation process by the intermediate data generation means. The intermediate data generation processing for a plurality of pages is executed in parallel, and the intermediate data is sent to the data holding means. Is assigned to a plurality of CPU cores for drawing processing by the drawing means, and a function as a control means for executing drawing processing of the plurality of drawing areas in parallel from the page with the smallest page number, Is an image forming program for realizing the above.

本発明によれば、PDLデータから中間データを生成する場合は複数ページ分の処理に複数のCPUコアを割り当ててページ単位の並列処理を行いながら、中間データが生成された後にこの中間データに基づいて描画処理を行う場合には、ページ番号の小さいページの処理に複数のCPUコアを優先的に割り当てて、当該ページの複数の描画領域の描画処理を並列に実行するので、ページ番号の小さいページから順に描画処理を完了させることができ、画像の出力待ちの状態を低減して、処理の高速化を実現することができるという効果を奏する。   According to the present invention, when generating intermediate data from PDL data, a plurality of CPU cores are assigned to processing for a plurality of pages and parallel processing is performed in units of pages. When drawing processing is performed, a plurality of CPU cores are preferentially assigned to processing of a page with a small page number, and drawing processing of a plurality of drawing areas of the page is executed in parallel. The drawing processing can be completed in order, and the effect of speeding up the processing can be achieved by reducing the waiting state for image output.

図1は、画像形成装置のハードウェア構成を示すブロック図である。FIG. 1 is a block diagram illustrating a hardware configuration of the image forming apparatus. 図2は、画像形成装置のコントローラ上で実現される機能構成を示す機能ブロック図である。FIG. 2 is a functional block diagram illustrating a functional configuration realized on the controller of the image forming apparatus. 図3は、構造化されたPDLデータと構造化されていないPDLデータとの違いを説明する図である。FIG. 3 is a diagram for explaining the difference between structured PDL data and unstructured PDL data. 図4は、ホストコンピュータから画像形成装置のコントローラに対して構造化されたPDLデータが送信された場合におけるコントローラによる処理の概要を示す図である。FIG. 4 is a diagram illustrating an outline of processing performed by the controller when structured PDL data is transmitted from the host computer to the controller of the image forming apparatus. 図5は、PDL解析部のPDL処理部およびPDL制御部をさらに詳細に示す機能ブロック図である。FIG. 5 is a functional block diagram illustrating the PDL processing unit and the PDL control unit of the PDL analysis unit in more detail. 図6は、DL処理部のDL生成部によって生成されるDLの一例を示す図である。FIG. 6 is a diagram illustrating an example of a DL generated by the DL generation unit of the DL processing unit. 図7は、バンド分割を説明する図である。FIG. 7 is a diagram for explaining band division. 図8は、PDL処理部のDL生成部をさらに詳細に示す機能ブロック図である。FIG. 8 is a functional block diagram showing the DL generation unit of the PDL processing unit in more detail. 図9は、PDL処理部の描画部を説明する図である。FIG. 9 is a diagram illustrating the drawing unit of the PDL processing unit. 図10は、PDL制御部のPDL処理管理部をさらに詳細に示す機能ブロック図である。FIG. 10 is a functional block diagram illustrating the PDL process management unit of the PDL control unit in more detail. 図11は、CPUコア管理部によるCPUコアの管理方法を説明する模式図である。FIG. 11 is a schematic diagram illustrating a CPU core management method performed by the CPU core management unit. 図12は、CPUコア管理部による処理の概要を示すフローチャートである。FIG. 12 is a flowchart illustrating an outline of processing by the CPU core management unit. 図13は、DL生成待ちキューの概要を説明する模式図である。FIG. 13 is a schematic diagram illustrating an outline of a DL generation waiting queue. 図14は、DL生成実行管理テーブルの概要を説明する模式図である。FIG. 14 is a schematic diagram illustrating an outline of a DL generation execution management table. 図15は、DL生成に関する制御部の処理の流れを示すフローチャートである。FIG. 15 is a flowchart showing a flow of processing of the control unit regarding DL generation. 図16は、描画待ちキューの概要を説明する模式図である。FIG. 16 is a schematic diagram for explaining the outline of the drawing wait queue. 図17は、描画部の起動に関する制御部の処理の流れを示すフローチャートである。FIG. 17 is a flowchart showing a flow of processing of the control unit regarding activation of the drawing unit. 図18は、制御部によるDL生成中断処理の詳細を示すフローチャートである。FIG. 18 is a flowchart showing details of the DL generation interruption processing by the control unit. 図19は、制御部による描画実行処理の詳細を示すフローチャートである。FIG. 19 is a flowchart showing details of the drawing execution processing by the control unit.

以下に添付図面を参照して、この発明にかかる画像形成装置、画像形成方法、および画像形成プログラムの最良な実施の形態を詳細に説明する。   Exemplary embodiments of an image forming apparatus, an image forming method, and an image forming program according to the present invention are explained in detail below with reference to the accompanying drawings.

図1は、本実施の形態にかかる画像形成装置のハードウェア構成を示すブロック図である。この画像形成装置は、コントローラ1と、用紙に画像を印刷するためのプリンタエンジン2と、ユーザの操作入力を受け付けるとともに画像形成装置の状態表示を行うオペレーションパネル3とを備える。また、この画像形成装置は、LANなどのネットワークによりホストコンピュータ4と接続されており、ホストコンピュータ4からネットワーク経由で伝送されるPDL(Page Description Language;ページ記述言語)データに基づいてコントローラ1で画像を形成し、プリンタエンジン2による印刷などの画像出力を行う。   FIG. 1 is a block diagram showing a hardware configuration of the image forming apparatus according to the present embodiment. The image forming apparatus includes a controller 1, a printer engine 2 for printing an image on a sheet, and an operation panel 3 that receives a user operation input and displays a status of the image forming apparatus. The image forming apparatus is connected to the host computer 4 via a network such as a LAN, and the controller 1 uses the image based on PDL (Page Description Language) data transmitted from the host computer 4 via the network. And the image output such as printing by the printer engine 2 is performed.

コントローラ1は、画像を形成するためのソフトウェアとして実装されている画像形成プログラムを実行するCPU10と、画像形成プログラムを格納するROM11と、画像形成プログラムを実行することで生成されるデータを保存するページメモリや画像形成プログラムの実行に必要なワークメモリとして利用するRAM12と、画像形成装置の印刷条件の設定情報などを保存しておく不揮発性メモリであるNVRAM13と、ネットワーク上に接続されたホストコンピュータ4とデータのやり取りを行うためのネットワークI/F14と、プリンタエンジン2に対して印刷指示等を出力するためのエンジンI/F15と、オペレーションパネル3との間でデータの入出力を行うためのパネルI/F16とを備え、これらが内部バス17によって相互に接続された構成である。なお、図1においては1つのCPU10のみを図示しているが、本実施の形態にかかる画像形成装置では、マルチスレッド技術を利用したレンダリングの並列処理を実行可能にするために、複数のCPUコアをコントローラ1内に設けている。複数のCPUコアは複数のCPU10に分散して搭載されていてもよいし、1つのCPU10に搭載する、つまり、CPU10としてマルチコアCPUを用いるようにしてもよい。   The controller 1 includes a CPU 10 that executes an image forming program implemented as software for forming an image, a ROM 11 that stores the image forming program, and a page that stores data generated by executing the image forming program. A RAM 12 used as a work memory necessary for execution of a memory and an image forming program, an NVRAM 13 which is a nonvolatile memory for storing setting information of printing conditions of the image forming apparatus, and a host computer 4 connected on the network A panel for inputting / outputting data to / from the operation panel 3, a network I / F 14 for exchanging data with the engine, an engine I / F 15 for outputting a print instruction to the printer engine 2, and the like. I / F 16 and these are internal bus 17 Thus they are connected to each another. Although only one CPU 10 is illustrated in FIG. 1, in the image forming apparatus according to the present embodiment, a plurality of CPU cores are provided in order to execute parallel rendering processing using multithread technology. Is provided in the controller 1. The plurality of CPU cores may be distributed and mounted on the plurality of CPUs 10, or may be mounted on one CPU 10, that is, a multi-core CPU may be used as the CPU 10.

図2は、コントローラ1のCPU10が画像形成プログラムを実行することによりコントローラ1上で実現される機能構成を示す機能ブロック図である。コントローラ1には、画像形成プログラムによって実現される機能構成として、ネットワークI/F14を制御してホストコンピュータ4との間のデータのやり取りを行うネットワークI/F制御部21と、パネルI/F16を制御してオペレーションパネル3との間のデータの入出力を行うパネルI/F制御部22と、エンジンI/F15を制御してプリンタエンジン2に対する印刷指示等の出力を行うエンジンI/F制御部23と、PDLデータを解析して印刷画像を形成するPDL解析部24と、コントローラ1全体の動作を統括的に制御するプリンタコントロールシステム部(Printer Control System)25の各機能構成が設けられる。ここで、PDL解析部24は、PDLデータから印刷画像を形成する処理を実行するPDL処理部30と、PDL処理部30による処理を制御するPDL制御部40とから構成される。   FIG. 2 is a functional block diagram showing a functional configuration realized on the controller 1 when the CPU 10 of the controller 1 executes an image forming program. The controller 1 includes a network I / F control unit 21 that controls the network I / F 14 to exchange data with the host computer 4 and a panel I / F 16 as functional configurations realized by the image forming program. A panel I / F control unit 22 that controls and inputs / outputs data to / from the operation panel 3, and an engine I / F control unit that controls the engine I / F 15 and outputs a print instruction to the printer engine 2. 23, a PDL analysis unit 24 that analyzes PDL data to form a print image, and a printer control system unit 25 that controls the overall operation of the controller 1 are provided. Here, the PDL analysis unit 24 includes a PDL processing unit 30 that executes processing for forming a print image from PDL data, and a PDL control unit 40 that controls processing by the PDL processing unit 30.

一般的に、PDLデータには、構造化されたPDLデータと、構造化されていないPDLデータとが存在する。図3は、構造化されたPDLデータと構造化されていないPDLデータとの違いを説明する図である。   Generally, PDL data includes structured PDL data and unstructured PDL data. FIG. 3 is a diagram for explaining the difference between structured PDL data and unstructured PDL data.

構造化されていないPDLデータは、図3(A)に示すように、ページごとの描画命令が順次記載されるとともに、印刷が必要な箇所で印刷命令が記述され、これが繰り返されるデータ形式となっている。このため、データを順次受け取りながら処理できるといった特徴があるが、命令はデータの最初から最後まで順番に確認していく必要がある。また、あるページで利用された描画命令をそれ以降のページで利用する場合もあり、単純にそのページだけを抜き出しても描画できない(ページ単位で独立して描画できない、つまりページ独立でない)。このような構造化されていないPDLデータの代表例としては、ヒューレット・パッカード(Hewlett-Packard)社が開発したPCL(Printer Control Language)や、アドビ(Adobe)社が開発したポストスクリプト(PostScript)などが挙げられる。   As shown in FIG. 3 (A), unstructured PDL data has a data format in which drawing commands for each page are sequentially described, and printing commands are described where printing is necessary, and this is repeated. ing. For this reason, there is a feature that data can be processed while being received sequentially, but the instruction needs to be confirmed in order from the beginning to the end of the data. In addition, a drawing command used on a certain page may be used on subsequent pages, and drawing is not possible even if only that page is extracted (it cannot be drawn independently for each page, that is, it is not page-independent). Typical examples of such unstructured PDL data include PCL (Printer Control Language) developed by Hewlett-Packard, and PostScript developed by Adobe. Is mentioned.

一方、構造化されたPDLデータは、例えば図3(B)に示すように、ページごとの文書情報のほかに、ページ情報やページの構成要素の情報の関連が、インデックス情報としてデータ末尾に記載されている。このため、データを解釈する側は、まずデータ末尾のインデックス情報を参照することで、各ページの文書情報、ページ情報、ページ要素の情報を参照していくことが可能である。ただし、構造化されたPDLデータは、構造化されていないPDLデータと異なり、データ末尾にインデックス情報が含まれているため、基本的にはデータを全て参照できる状態(つまり、ランダムアクセス可能な状態)でなければ解釈できない。このような構造化されたPDLデータの代表例としては、アドビ(Adobe)社が開発したPDF(Portable Document Format)や、マイクロソフト(Microsoft)社が開発したXPS(XML paper specification)などが挙げられる。   On the other hand, in the structured PDL data, for example, as shown in FIG. 3 (B), in addition to the document information for each page, the relationship between the page information and the information of the constituent elements of the page is described as index information at the end of the data. Has been. For this reason, the data interpreter can refer to the document information, page information, and page element information of each page by first referring to the index information at the end of the data. However, structured PDL data differs from unstructured PDL data in that it includes index information at the end of the data, so basically all data can be referred to (that is, randomly accessible) ) Can only be interpreted. Representative examples of such structured PDL data include PDF (Portable Document Format) developed by Adobe and XPS (XML paper specification) developed by Microsoft.

なお、構造化されていないデータの代表例として挙げたPCLやポストスクリプトであっても、前のページで利用した描画命令をそれ以降のページで利用しないことを保証した印刷データ(つまりページ独立が保証された印刷データ)であれば、末尾のインデックス情報がなくともページの開始、終了を検索することでページの区切りを検知してページ情報を独立に参照可能となる。ここでは、このようなページ独立が保障された印刷データも含めたものを、構造化されたデータと定義する。   Even in the case of PCL or PostScript listed as typical examples of unstructured data, print data that guarantees that the drawing command used in the previous page will not be used in the subsequent pages (that is, page-independent Guaranteed print data), even if there is no index information at the end, it is possible to refer to page information independently by detecting page breaks by searching for the start and end of the page. Here, data including print data that guarantees such page independence is defined as structured data.

図4は、ホストコンピュータ4から画像形成装置のコントローラ1に対して構造化されたPDLデータが送信された場合におけるコントローラ1による処理の概要を示す図である。この図4に示す処理は、上述した複数のCPUコアにより分散して行われる。   FIG. 4 is a diagram showing an outline of processing performed by the controller 1 when structured PDL data is transmitted from the host computer 4 to the controller 1 of the image forming apparatus. The processing shown in FIG. 4 is performed in a distributed manner by the plurality of CPU cores described above.

まず、プリンタコントロールシステム部25が、ネットワークI/F制御部21を介して構造化されたPDLデータを受信し(ステップS101)、受信したPDLデータをPDL解析部24のPDL制御部40に受け渡す(ステップS102)。PDL制御部40は、プリンタコントロールシステム部25が受信したPDLデータをRAM12にスプールする(ステップS103)。なお、ここではPDLデータをスプールするメモリとしてRAM12を利用しているが、画像形成装置がハードディスクドライブ(HDD)等の補助記憶装置を備える場合は、この補助記憶装置にPDLデータをスプールするようにしてもよい。   First, the printer control system unit 25 receives structured PDL data via the network I / F control unit 21 (step S101), and transfers the received PDL data to the PDL control unit 40 of the PDL analysis unit 24. (Step S102). The PDL control unit 40 spools the PDL data received by the printer control system unit 25 in the RAM 12 (step S103). Here, the RAM 12 is used as a memory for spooling the PDL data. However, when the image forming apparatus includes an auxiliary storage device such as a hard disk drive (HDD), the PDL data is spooled in the auxiliary storage device. May be.

次に、PDL制御部40は、RAM12にスプールしたPDLデータのインデックス情報を参照し、各ページのデータ開始位置を記録する。なお、プリンタコントロールシステム部25が受信したPDLデータがインデックス情報を持たないPDLデータの場合には、PDL制御部40は、PDLデータをRAM12にスプールする際にページの境界を検知してインデックス情報を作成する。そして、PDL制御部40は、PDL処理部30で処理すべきページのデータ開始位置をPDL処理部30に入力する(ステップS104)。なお、ここでは、3ページ分の処理を並列処理する場合を例示しているが、PDL処理部30で並列処理するページ数は設定パラメータに応じて決定され、操作者がパラメータを変更することによって任意の数に設定することができる。   Next, the PDL control unit 40 refers to the index information of the PDL data spooled in the RAM 12 and records the data start position of each page. When the PDL data received by the printer control system unit 25 is PDL data that does not have index information, the PDL control unit 40 detects a page boundary and spools the index information when spooling the PDL data to the RAM 12. create. Then, the PDL control unit 40 inputs the data start position of the page to be processed by the PDL processing unit 30 to the PDL processing unit 30 (step S104). In addition, although the case where the process for 3 pages is processed in parallel is illustrated here, the number of pages to be processed in parallel in the PDL processing unit 30 is determined according to the setting parameter, and the operator changes the parameter. It can be set to any number.

次に、PDL処理部30がRAM12にアクセスし、PDL制御部40から入力されたデータ開始位置にPDLデータを読み込みにいく(ステップS105)。そして、PDL処理部30は、読み込んだPDLデータのページ要素を解釈し、出力デバイスであるプリンタエンジン2が解釈できるビットマップ形式に変換して、変換したビットマップデータをプリンタコントロールシステム部25に受け渡す(ステップS106)。このとき、PDL処理部30は、PDLデータのページ要素を、まず、ディスプレイリスト(Display List)と呼ばれる中間データ形式に変換し(以下、ディスプレイリストの形式に変換されたデータをDLデータという。)、生成したDLデータに基づいて、バンドごとに描画処理を行ってビットマップデータを生成する。ここで、特に本実施の形態にかかる画像形成装置では、PDL処理部30による処理を、DLデータを生成するまでの前処理と、DLデータに基づいて1ページ分の画像をバンドと呼ばれる描画単位(描画領域)ごとに描画する後処理とに分け、前処理はPDLデータの複数のページ処理に複数のCPUコアを割り当ててページ単位で並列処理を行う一方で、後処理にはページ番号の小さいページの複数のバンド処理に複数のCPUコアを優先的に割り当ててバンド単位で並列処理を行い、ページ番号の小さいページから順にビットマップデータの生成が完了するようにしている。   Next, the PDL processing unit 30 accesses the RAM 12, and reads the PDL data at the data start position input from the PDL control unit 40 (step S105). Then, the PDL processing unit 30 interprets the page element of the read PDL data, converts it into a bitmap format that can be interpreted by the printer engine 2 as an output device, and receives the converted bitmap data in the printer control system unit 25. (Step S106) At this time, the PDL processing unit 30 first converts the page element of the PDL data into an intermediate data format called a display list (hereinafter, data converted into the display list format is referred to as DL data). Based on the generated DL data, drawing processing is performed for each band to generate bitmap data. Here, in particular, in the image forming apparatus according to the present embodiment, the processing by the PDL processing unit 30 is a pre-processing until DL data is generated, and an image for one page based on the DL data is a drawing unit called a band. The pre-processing is divided into post-processing to be drawn for each (drawing area). In the pre-processing, a plurality of CPU cores are allocated to a plurality of page processing of PDL data and parallel processing is performed in units of pages. A plurality of CPU cores are preferentially assigned to a plurality of page band processes, and parallel processing is performed in units of bands, so that the generation of bitmap data is completed in order from the page with the smallest page number.

プリンタコントロールシステム部25は、PDL処理部30からビットマップデータが送られてくると、このビットマップデータをエンジンI/F制御部23に転送する(ステップS107)。なお、画像形成装置がHDD等の補助記憶装置を備える場合には、PDL処理部30で生成されたビットマップデータを一旦補助記憶装置にスプールし、プリンタエンジン2が必要とするタイミングで、補助記憶装置にスプールしたビットマップデータを読み出してエンジンI/F制御部23に送信するようにしてもよい。また、PDL処理部30からエンジンI/F制御部23にビットマップデータを直接送信するようにしてもかまわない。   When the bitmap data is sent from the PDL processing unit 30, the printer control system unit 25 transfers the bitmap data to the engine I / F control unit 23 (step S107). When the image forming apparatus includes an auxiliary storage device such as an HDD, the bitmap data generated by the PDL processing unit 30 is temporarily spooled in the auxiliary storage device, and the auxiliary storage is performed at a timing required by the printer engine 2. The bitmap data spooled in the apparatus may be read out and transmitted to the engine I / F control unit 23. Further, the bitmap data may be directly transmitted from the PDL processing unit 30 to the engine I / F control unit 23.

以上の処理は、コントローラ1が備える複数のCPUコアによって並列に行われる。なお、PDLデータへの同時読み込みアクセスが可能なため、PDLデータを分割する処理は不要である。   The above processing is performed in parallel by a plurality of CPU cores provided in the controller 1. Since simultaneous reading access to PDL data is possible, processing for dividing PDL data is unnecessary.

図5は、PDL解析部24のPDL処理部30およびPDL制御部40をさらに詳細に示す機能ブロック図である。図5に示すように、PDL制御部40は、ページ検知部41とインデックス生成部42とPDL処理管理部43とを有しており、PDL処理部30は、DL生成部31と描画部32とを有している。   FIG. 5 is a functional block diagram illustrating the PDL processing unit 30 and the PDL control unit 40 of the PDL analysis unit 24 in more detail. As illustrated in FIG. 5, the PDL control unit 40 includes a page detection unit 41, an index generation unit 42, and a PDL processing management unit 43. The PDL processing unit 30 includes a DL generation unit 31, a drawing unit 32, and the like. have.

PDL制御部40は、上述したように、プリンタコントロールシステム部25が受信したPDLデータをRAM12などのメモリにスプールする。この際、PDLデータをメモリ上に展開するときに、ページ検知部41により、PDLデータのページの切れ目であるページ開始オペレータ、ページ終了オペレータを検知する。そして、インデックス生成部42により、当該PDLデータにおける各ページのメモリ上のインデックスを生成する。インデックス生成部42は、各ページのインデックスを生成すると、PDL処理管理部43に対して、メモリ上に展開されたPDLデータのメモリアドレスと各ページのインデックス情報を受け渡す。ここで、各ページのインデックス情報は、先頭データからのオフセットを示している。   As described above, the PDL control unit 40 spools the PDL data received by the printer control system unit 25 in a memory such as the RAM 12. At this time, when the PDL data is expanded on the memory, the page detection unit 41 detects a page start operator and a page end operator that are breaks in the page of the PDL data. Then, the index generation unit 42 generates an index on the memory of each page in the PDL data. When the index generation unit 42 generates an index for each page, the index generation unit 42 passes the memory address of the PDL data expanded on the memory and the index information of each page to the PDL processing management unit 43. Here, the index information of each page indicates an offset from the top data.

PDL処理管理部43は、PDLデータのページごとにDLデータを生成するためのスレッドの生成、バンドごとに描画を行うスレッドの生成と、それぞれのスレッドへのCPUコアの割り当て管理を行う。ここで、スレッドの生成には、例えばPOSIX(Portable Operating System Interface)スレッド(pthread)のAPIを使用する場合は、pthread_create()のコマンドを用いる。また、生成したスレッドにCPUコアを割り当てる方法としては、プロセッサアフィニティと呼ばれる機構を使用することができる。   The PDL processing management unit 43 performs generation of a thread for generating DL data for each page of PDL data, generation of a thread for rendering for each band, and management of assignment of CPU cores to the respective threads. Here, for the generation of a thread, for example, when an API of a POSIX (Portable Operating System Interface) thread (pthread) is used, a pthread_create () command is used. As a method for assigning a CPU core to a generated thread, a mechanism called processor affinity can be used.

PDL処理部30は、PDLデータに基づくレンダリング処理を、DL生成部31による前処理と、描画部32による後処理とに分離して実行する。   The PDL processing unit 30 executes rendering processing based on the PDL data separately into preprocessing by the DL generation unit 31 and postprocessing by the drawing unit 32.

DL生成部31は、PDLデータをページ単位でパーシングしてDLデータを生成し、生成したDLデータをRAM12に保存する。ここで、本実施の形態にかかる画像形成装置においては、複数のCPUコアを用いて複数のDL生成部31を起動し、PDLデータの複数ページのDLデータ生成を複数のDL生成部31により並列に行うようにしている。なお、画像形成装置がHDD等の補助記憶装置を備える場合には、PDL生成部31で生成したDLデータを補助記憶装置に保存するようにしてもよい。以下では、RAM12もしくは補助記憶装置におけるDLデータの保存領域をDL保存用データメモリと表記する。   The DL generation unit 31 parses PDL data in units of pages to generate DL data, and stores the generated DL data in the RAM 12. Here, in the image forming apparatus according to the present embodiment, a plurality of DL generation units 31 are activated using a plurality of CPU cores, and DL data generation of a plurality of pages of PDL data is performed in parallel by the plurality of DL generation units 31. Like to do. When the image forming apparatus includes an auxiliary storage device such as an HDD, the DL data generated by the PDL generation unit 31 may be stored in the auxiliary storage device. Hereinafter, the storage area of DL data in the RAM 12 or the auxiliary storage device is referred to as a DL storage data memory.

描画部32は、DL保存用データメモリに保存されたDLデータに基づいて、バンド単位で描画処理を行う。ここで、本実施の形態にかかる画像処理装置においては、複数のCPUコアを用いて複数の描画部32を起動し、複数バンドの描画処理を並列に行うようにしており、特に、ページ番号の小さいページから優先的に、複数の描画部32による複数バンドの描画処理を実行するようにしている。なお、描画部32の描画処理の単位となるバンドの分割数は、DL生成部30によるDLデータの生成前に決定するようにしてもよいし、DL生成部30によってDLデータが生成された後に決定するようにしてもよい。以下、DLデータ生成前にバンド分割数を決定する場合と、DLデータ生成後にバンド分割数を決定する場合とに分けて、バンド分割数を決定する具体的方法について説明する。   The drawing unit 32 performs a drawing process in units of bands based on the DL data stored in the DL storage data memory. Here, in the image processing apparatus according to the present embodiment, a plurality of drawing units 32 are activated using a plurality of CPU cores, and a plurality of bands are drawn in parallel. The drawing processing of a plurality of bands by the plurality of drawing units 32 is executed with priority from a small page. Note that the number of bands divided as a unit of the drawing process of the drawing unit 32 may be determined before the DL data is generated by the DL generation unit 30, or after the DL data is generated by the DL generation unit 30. It may be determined. Hereinafter, a specific method for determining the number of band divisions will be described for the case of determining the number of band divisions before DL data generation and the case of determining the number of band divisions after DL data generation.

バンド分割数の決定は、PDL制御部40のPDL処理管理部43により実施される。PDL処理管理部43は、DLデータ生成前にバンド分割数を決定する場合には、PDLデータの各ページのデータサイズに応じて、各ページのバンド分割数を決定する。すなわち、PDLデータの切れ目を表すインデックス情報が先頭データからのオフセットを示す情報となっているため、このインデックス情報に基づいて各ページのデータサイズを算出することができる。PDL処理管理部43は、PDLデータのインデックス情報に基づいて算出した各ページのデータサイズに応じて、ページのデータサイズが大きいほどバンド分割数が多くなるように分割するバンド数を決定し、PDL処理部30のDL生成部31の起動時に、バンド分割する単位をDL生成部31に対して指定する。   The determination of the number of band divisions is performed by the PDL process management unit 43 of the PDL control unit 40. When determining the number of band divisions before generating DL data, the PDL process management unit 43 determines the number of band divisions for each page according to the data size of each page of the PDL data. That is, since the index information indicating the break of the PDL data is information indicating the offset from the top data, the data size of each page can be calculated based on the index information. The PDL processing management unit 43 determines the number of bands to be divided in accordance with the data size of each page calculated based on the index information of the PDL data so that the larger the page data size, the larger the number of band divisions. When the DL generation unit 31 of the processing unit 30 is activated, a unit for band division is designated to the DL generation unit 31.

DLデータをバンド分割する方法の1つとして、DLデータ生成時にDLデータを構成する各描画データがどのバンドに入るのかを情報として保存しておく方法が知られている。この方法によりDLデータをバンド分割する場合には、DL生成部31を起動してDLデータの生成を実行するのに先立ってPDLデータの各ページのバンド幅(=バンド分割数)を予め決定しておく必要があり、バンド分割数を決定する方法としては、PDLデータの各ページのデータサイズに応じてバンド分割数を決定する方法を用いる。具体的には、例えばPDLデータの各ページのデータサイズを大、中、小の3つのサイズに分類し、データサイズが“大”のページは描画処理に用いるCPUコアの数を最大にするためにバンド分割数を最大とし、データサイズが“小”のページはバンド分割数を最小、データサイズが“中”のページにはバンド分割数を最大値と最小値との中間値に決定する。このように、DLデータ生成前にPDLデータの各ページのデータサイズに応じてページごとのバンド分割数を決定することにより、簡単な処理でバンド分割を実施しながらバンド並列の描画処理を効率よく実施することができる。   As one method of dividing DL data into bands, there is known a method of storing, as information, which band each drawing data constituting DL data enters when DL data is generated. When DL data is band-divided by this method, the bandwidth (= number of band divisions) of each page of PDL data is determined in advance prior to starting DL generation unit 31 and generating DL data. As a method of determining the number of band divisions, a method of determining the number of band divisions according to the data size of each page of PDL data is used. Specifically, for example, the data size of each page of PDL data is classified into three sizes, large, medium, and small, and a page with a large data size is used to maximize the number of CPU cores used for rendering processing. The number of band divisions is maximized, the page size with the data size “small” is determined to be the minimum, and the page size with the data size “medium” is determined to be an intermediate value between the maximum value and the minimum value. In this way, by determining the number of band divisions for each page according to the data size of each page of PDL data before DL data generation, band parallel drawing processing can be performed efficiently while performing band division with simple processing. Can be implemented.

一方、DLデータ生成後にバンド分割数を決定する場合には、PDL処理管理部43は、PDL処理部30のDL生成部31により1ページ分のDLデータの生成が終了した時点で、生成されたDLデータのサイズ(以下、DLサイズという。)に応じて、当該ページのバンド分割数を決定する。DL生成部31により1ページ分のDLデータの生成が終了すると、そのページのDLサイズが分かるので、PDL処理管理部43は、このDLサイズに応じて分割するバンド数を決定する。具体的には、PDL処理管理部43は、DLサイズを大、中、小の3つのサイズに分類し、DLサイズが“大”の場合は描画処理に用いるCPUコアの数を最大にするためにバンド分割数を最大とし、DLサイズが“小”の場合はバンド分割数を最小、DLのサイズが“中”の場合にはバンド分割数を最大値と最小値との中間値に決定する。   On the other hand, when the number of band divisions is determined after the DL data is generated, the PDL processing management unit 43 is generated when the DL generation unit 31 of the PDL processing unit 30 finishes generating one page of DL data. The band division number of the page is determined according to the DL data size (hereinafter referred to as DL size). When the generation of DL data for one page is completed by the DL generation unit 31, the DL size of the page is known, and the PDL processing management unit 43 determines the number of bands to be divided according to the DL size. Specifically, the PDL processing management unit 43 classifies the DL size into three sizes, large, medium, and small. In order to maximize the number of CPU cores used for drawing processing when the DL size is “large”. When the DL size is “small”, the number of band divisions is minimized, and when the DL size is “medium”, the number of band divisions is determined to be an intermediate value between the maximum value and the minimum value. .

DLデータ生成後にバンド分割数を決定する方法の場合は、決定されたバンド数に応じて起動される複数の描画部32が、DL保存用データメモリに保存された1ページ分のDLデータの中から、それぞれ担当するバンド内に入るデータを検索して描画を実行することになる(バンディング処理)。このようなバンディング処理は、バンドごとに起動される複数の描画部32において分散されたかたちで実施される点がデメリットとなるが、実際に描画する形態に近いDLデータのサイズに応じてバンド分割数を決定することができるため、上述したPDLデータの各ページのデータサイズに応じてバンド分割数を決定する場合と比較して、描画処理の負荷に応じたバンド分割をより適切なかたちで実施できるといったメリットがある。例えば、ページ全体に円を描く場合、描画する円がページ全体に亘るために描画処理の負荷は比較的大きくなるが、PDLデータでは円は簡単な命令1つで表現されるためにデータサイズが小となり、PDLデータのデータサイズに応じてバンド分割数を決定するとバンド分割数が小さな値となる。これに対して、DLデータでは、円はスキャンラインデータ(ピクセルデータ)に変換されるため、ページ全体に亘って円を描画する場合のDLサイズは大となり、DLサイズに応じてバンド分割数を決定すれば、バンド分割数を大きな値として描画処理を効率よく行うことが可能となる。   In the method of determining the number of band divisions after DL data generation, a plurality of drawing units 32 activated according to the determined number of bands are included in one page of DL data stored in the DL storage data memory. Thus, the data in the band in charge is searched for and the drawing is executed (banding process). Such banding processing is disadvantageous in that it is performed in a distributed form in a plurality of drawing units 32 activated for each band, but band division is performed according to the size of DL data close to the actual drawing form. Since the number can be determined, compared to the case where the number of band divisions is determined according to the data size of each page of the PDL data described above, the band division according to the drawing processing load is performed in a more appropriate manner. There is an advantage that you can. For example, when drawing a circle on the entire page, the drawing processing load is relatively large because the circle to be drawn extends over the entire page. However, in PDL data, the circle is represented by one simple command, so the data size is small. When the number of band divisions is determined according to the data size of the PDL data, the number of band divisions becomes a small value. On the other hand, in DL data, since a circle is converted into scan line data (pixel data), the DL size when a circle is drawn over the entire page is large, and the number of band divisions is set according to the DL size. If it is determined, the drawing process can be efficiently performed with the band division number as a large value.

図6は、PDL処理部30のDL生成部31によって生成されるDLデータの一例を示す図である。中間データとしてのDLデータは、DL保存用データメモリ上に図6に示すようなデータ構造を形成する。なお、この図6に示す例は、DLデータ生成前にバンド分割数が決定されている場合のDLデータの例である。   FIG. 6 is a diagram illustrating an example of DL data generated by the DL generation unit 31 of the PDL processing unit 30. The DL data as the intermediate data forms a data structure as shown in FIG. 6 on the DL storage data memory. The example shown in FIG. 6 is an example of DL data when the number of band divisions is determined before DL data generation.

「ページ情報管理」は、出力デバイスのページ幅、高さ、深さ、描画カラースペース等の情報を保持している領域である。   “Page information management” is an area that holds information such as the page width, height, depth, and drawing color space of the output device.

「band 0 情報管理」から「band n 情報管理」は、1ページをn+1個にバンド分割した場合の各バンドバッファの情報を保持している。具体的には、「band 0 情報管理」から「band n 情報管理」には、基本情報として各バンドの高さ(一般にはバンド幅ともいう)、バンドに含まれているオブジェクト数、全オブジェクトサイズ(ヘッダを含む)が含まれている。また、その他の付加情報としては、オブジェクト種類ごとの数、サイズなどがある。   “Band 0 information management” to “band n information management” hold information of each band buffer when one page is divided into n + 1 bands. Specifically, from “band 0 information management” to “band n information management”, the basic information includes the height of each band (generally also referred to as a bandwidth), the number of objects included in the band, and the total object size. (Including header). Other additional information includes the number and size of each object type.

図7は、バンド分割を説明する図であり、1つのページをband0からband4の5つのバンドバッファに分割し、円を描画した例を示したものである。この図7において、円はband0からband2に跨って描画されている。この図7に示す例において、円はスキャンラインといわれる1ピクセルの高さと幅を持つ情報の集まりに変換され、3つのデータブロックに分割される。それぞれのデータブロックは、band0、band1、band2にそれぞれ描画されることになる。これらのデータブロックは、各バンドの「Object Header」と「Object Data」からなるデータ領域に記録される。各バンドの「band情報管理」は、データ領域へのポインタを保持している。   FIG. 7 is a diagram for explaining band division, and shows an example in which one page is divided into five band buffers band0 to band4 and a circle is drawn. In FIG. 7, the circle is drawn from band0 to band2. In the example shown in FIG. 7, a circle is converted into a collection of information having a height and width of one pixel, called a scan line, and divided into three data blocks. Each data block is drawn in band0, band1, and band2, respectively. These data blocks are recorded in a data area composed of “Object Header” and “Object Data” of each band. “Band information management” of each band holds a pointer to a data area.

図6の「Object Header」は、描画オブジェクトの情報を保持している。その情報は、描画オブジェクトの種類、描画オブジェクトのサイズ、描画オブジェクトのカラースペース等、描画に関係する情報である。なお、描画オブジェクトの種類としては、文字、線、ベクター塗りつぶし図形、スキャンライン、イメージなどがある。図7に示した例では、描画オブジェクトとしてスキャンラインが相当し、スキャンラインのサイズ、カラースペース、カラー値の情報が「Object Header」に保持されている。また、「Object Data」領域には、各描画オブジェクトのデータが記録される。図7に示した例では、スキャンラインデータが相当する。   “Object Header” in FIG. 6 holds information about a drawing object. The information is information related to drawing, such as the type of drawing object, the size of the drawing object, and the color space of the drawing object. The types of drawing objects include characters, lines, vector filled figures, scan lines, images, and the like. In the example illustrated in FIG. 7, a scan line corresponds to a drawing object, and information on the size, color space, and color value of the scan line is held in “Object Header”. Further, data of each drawing object is recorded in the “Object Data” area. In the example shown in FIG. 7, scan line data corresponds.

図8は、PDL処理部30のDL生成部31をさらに詳細に示す機能ブロック図である。DL生成部31は、図8に示すように、DLデータの生成に一度に割り当てられるCPUコアの数Nに応じて複数設けられる。これら複数のDL生成部31−1,31−2・・・31−Nは、それぞれ、PDLパーサ部311−1,311−2・・・311−Nと、描画モジュールI/F部312−1,312−2・・・312−Nと、データ変換部313−1,313−2・・・313−Nと、を有する。   FIG. 8 is a functional block diagram showing the DL generation unit 31 of the PDL processing unit 30 in more detail. As shown in FIG. 8, a plurality of DL generation units 31 are provided according to the number N of CPU cores assigned at one time for DL data generation. The plurality of DL generation units 31-1, 31-2,..., 31-N and the PDL parser units 311-1, 311-2,. , 312-2... 312-N and data converters 313-1, 313-2.

PDLパーサ部311−1,311−2・・・311−Nは、PDLデータの言語解析を行って必要な情報を抽出(パーシングする)モジュールであり、上述したポストスクリプト、PDF、PCL、XPS等の言語ごとに構文を解析する。PDLパーサ部311−1,311−2・・・311−Nは、PDLの形式に依存する構文を解析して描画モジュールI/F部312−1,312−2・・・312−Nを呼ぶことで描画を実行する。   PDL parser units 311-1, 311-2,..., 311-N are modules for extracting (parsing) necessary information by performing language analysis of PDL data, such as the postscript, PDF, PCL, XPS, and the like described above. Parse the syntax for each language. The PDL parser units 311-1, 311-2,... 311-N analyze the syntax depending on the PDL format and call the drawing module I / F units 312-1, 312-2,. Execute drawing.

描画モジュールI/F部312−1,312−2・・・312−Nは、描画インターフェースとなるものであり、文字、線、図形、色指定等の描画指定を行う。   The drawing module I / F units 312-1, 312-2,... 312-N serve as a drawing interface, and perform drawing designation such as character, line, figure, and color designation.

データ変換部313−1,313−2・・・313−Nは、描画モジュールI/F部312−1,312−2・・・312−Nで指定された描画データを、中間データであるDLの形式に変換し、生成したDLデータをDL保存用データメモリ314−1,314−2・・・314−Nに保存する。なお、データ変換部313−1,313−2・・・313−Nは、DLデータ生成時に描画データのバンディング情報を生成することも可能である。   The data conversion units 313-1, 313-2,... 313-N convert the drawing data specified by the drawing module I / F units 312-1, 312-2,. The generated DL data is stored in the DL storage data memories 314-1, 314-2,... 314-N. Note that the data conversion units 313-1, 313-2,... 313-N can also generate banding information of drawing data when generating DL data.

DL保存用データメモリ314−1,314−2・・・314−Nは、上述したようにRAM12もしくは補助記憶装置におけるDLデータの保存領域であり、これらDL保存用データメモリ314−1,314−2・・・314−Nには、DL生成部31-1,31−2・・・31−Nにより生成された1ページ分のDLデータがそれぞれ保存される。   DL storage data memories 314-1, 314-2,... 314-N are storage areas for DL data in the RAM 12 or the auxiliary storage device as described above, and these DL storage data memories 314-1, 314- 2... 314 -N store DL data for one page generated by the DL generation units 31-1, 31-2, and 31 -N.

本実施の形態にかかる画像形成装置においては、以上のような複数のDL生成部31−1,31−2・・・31−NがPDL制御部40のPDL処理管理部43によって同時に起動されることで、PDLデータの複数ページ分のDLデータの生成を並列して行うことが可能となっている。なお、同時に起動されるDL生成部31の数は、コントローラ1が備えるCPUコアの数の範囲内において、設定によって変更することが可能である。   In the image forming apparatus according to the present embodiment, the plurality of DL generation units 31-1, 31-2,... 31-N as described above are simultaneously activated by the PDL processing management unit 43 of the PDL control unit 40. This makes it possible to generate DL data for a plurality of pages of PDL data in parallel. Note that the number of DL generation units 31 activated simultaneously can be changed by setting within the range of the number of CPU cores provided in the controller 1.

PDL処理部30の描画部32は、DL生成部31と同様に、PDL制御部40のPDL処理管理部43によって起動される。ここで、描画部32は、バンドごとの描画処理に一度に割り当てられるCPUコアの数Xに応じて複数設けられる。すなわち、PDL処理管理部43は、描画の対象となるページのバンド分割数に応じて1ページ分の描画をバンド並列で実施するのに必要なCPUコアの数Xを割り出し、図9に示すように、バンド並列での描画処理に割り当てるCPUコアの数Xに応じて、複数の描画部32−1,32−2・・・32−Xを起動する。これら描画部32−1,32−2・・・32−Xは、それぞれ描画の対象となるページのDLデータが格納されたDL保存用データメモリ314からDLデータを読み込んで、バンド分割された領域に書き込む処理行う。なお、各ページのバンド分割数は、上述したようにDLデータ生成前に決定する方法と、DLデータ生成後に決定する方法とのいずれかで行われるが、DLデータ生成後にバンド分割数を決定して描画部32−1,32−2・・・32−Xによりバンディング処理を行う場合には、各描画部32−1,32−2・・・32−Xが、描画処理の対象となるページのDLデータから、描画を担当するバンドのバンドデータを抽出して描画処理を実施することになる。また、バンドごとの描画処理は、PDL処理管理部43がDLデータの生成が終了したページのうちでページ番号が小さいページを優先して描画部32−1,32−2・・・32−Xのスレッドを起動することで、ページ番号が小さいページから順に実行される。   The drawing unit 32 of the PDL processing unit 30 is activated by the PDL processing management unit 43 of the PDL control unit 40, similarly to the DL generation unit 31. Here, a plurality of drawing units 32 are provided according to the number X of CPU cores assigned at once to the drawing process for each band. That is, the PDL processing management unit 43 determines the number X of CPU cores necessary for performing drawing for one page in parallel in accordance with the number of band divisions of the page to be drawn, as shown in FIG. In addition, a plurality of drawing units 32-1, 32-2,..., 32-X are activated in accordance with the number X of CPU cores assigned to the band parallel drawing processing. The drawing units 32-1, 32-2,..., 32-X read DL data from the DL storage data memory 314 in which DL data of a page to be drawn is stored, and are divided into bands. To write to. Note that the number of band divisions for each page is determined by either the method of determining before DL data generation or the method of determining after DL data generation as described above. The number of band divisions is determined after DL data generation. When the banding process is performed by the drawing units 32-1, 32-2,..., 32-X, each drawing unit 32-1, 32-2,. The band data of the band in charge of drawing is extracted from the DL data and the drawing process is performed. Further, the drawing processing for each band is performed by giving priority to the page with the smaller page number among the pages for which the PDL processing management unit 43 has completed the generation of DL data, 32-1, 32-2,. By starting the thread, the pages are executed in order from the page with the smallest page number.

以上のように、本実施の形態にかかる画像形成装置では、PDL処理部30での処理をDL生成部31による処理(前処理)と描画部32による処理(後処理)とに分け、DL生成部31では複数のCPUコアを用いてページ並列でDLデータの生成を行い、描画部32では複数のCPUコアを用いて、ページ番号の小さいページから順に、バンド並列で描画処理を行うようにしている。   As described above, in the image forming apparatus according to the present embodiment, the processing in the PDL processing unit 30 is divided into the processing by the DL generation unit 31 (pre-processing) and the processing by the drawing unit 32 (post-processing). The unit 31 uses a plurality of CPU cores to generate DL data in parallel with the page, and the drawing unit 32 uses a plurality of CPU cores to perform drawing processing in band parallel in order from the page with the smallest page number. Yes.

ここで、コントローラ1が8個のCPUコアを備え、初期設定でDL生成部31での処理に割り当てるCPUコアの数が4つ(同時に起動されるDL生成部31の数が4つ)に設定されている場合を例に挙げて、DL生成部31と描画部32間でCPUコアを動的に切り替える方法の具体例について説明する。   Here, the controller 1 has eight CPU cores, and the number of CPU cores assigned to the processing in the DL generation unit 31 is set to four (the number of DL generation units 31 activated simultaneously is four) in the initial setting. A specific example of a method of dynamically switching the CPU core between the DL generation unit 31 and the drawing unit 32 will be described by taking the case where the processing is performed as an example.

DL生成部31での処理に4つのCPUコアが割り当てられることによって、4ページ分のDLデータの生成が並列で行われることになる。一方、描画部32での処理には、8つのCPUコアのうち、PDL制御部40での処理に用いるCPUコアを除いた7つのCPUコアを割り当てることが可能であり、最大で7バンド分の描画処理を並列で実行できる。   By assigning four CPU cores to the processing in the DL generation unit 31, generation of DL data for four pages is performed in parallel. On the other hand, among the eight CPU cores, seven CPU cores excluding the CPU core used for the processing in the PDL control unit 40 can be assigned to the processing in the drawing unit 32, and a maximum of seven bands. Drawing processing can be executed in parallel.

本実施の形態にかかる画像形成装置では、ページ並列でDLデータの生成を行いつつ、ページ番号の小さいページから順に描画処理をできるだけ早く終了させるようにするために、並列処理でDLデータの生成を行っている複数のページのうちで、ページ番号が最も小さいページのDLが生成された段階でそのページのバンド並列での描画処理に多くのCPUコアを割り当てることが求められる。ここで、ページ番号が最も小さいページのDLデータが生成された段階でそのページの描画処理に7つのCPUコアを割り当てようとしても、他のページのDLデータの生成が継続されている状態では、7つのCPUコアを割り当てることができない。   In the image forming apparatus according to the present embodiment, DL data is generated in parallel processing in order to finish drawing processing in order from the page with the smallest page number as soon as possible while generating DL data in page parallel. It is required to allocate a large number of CPU cores to the band parallel drawing processing of the page when the DL of the page with the smallest page number is generated among the plurality of pages being performed. Here, even when seven CPU cores are assigned to the drawing process of the page at the stage where the DL data of the page with the smallest page number is generated, in a state where the generation of DL data of other pages is continued, Seven CPU cores cannot be assigned.

そこで、本実施の形態にかかる画像形成装置では、ページ番号が最も小さいページの描画処理を優先させるために、ページ番号が最も小さいページのDLデータが生成された段階で他のページのDLの生成が継続されている場合は、PDL処理管理部43が、必要なCPUコアの数だけ、DLデータを生成するためのスレッドに対して処理の中断を要求して、DLデータの生成に割り当てられているCPUコアを開放し、開放したCPUコアをページ番号が最も小さいページの描画処理に割り当てるようにしている。   Therefore, in the image forming apparatus according to the present embodiment, in order to prioritize the drawing process of the page with the smallest page number, the DL generation of the other page is generated when the DL data of the page with the smallest page number is generated. Is continued, the PDL process management unit 43 requests the interruption of the process to the thread for generating the DL data for the required number of CPU cores, and is assigned to generate the DL data. The released CPU core is released, and the released CPU core is assigned to the drawing process of the page having the smallest page number.

具体的には、例えば、ページ番号が最も小さいページのバンド分割数が当該ページのデータサイズから6バンド分割とされている場合において、ページ番号が最も小さいページのDLデータが生成された段階で、並列処理されている他の3ページのDLデータの生成処理が継続中である場合には、この状態でページ番号が最も小さいページの描画処理に割り当て可能なCPUコアの数は4つであり、6バンド並列で描画処理を行うには2つのCPUコアが不足することとなる。そこで、PDL処理管理部43は、DLデータ生成中のページのうちで、ページ番号が大きなページから順に2つのページのDLデータの生成を中断し、それによって開放された2つのCPUコアを、ページ番号が最も小さいページの描画処理に割り当てる。これにより、ページ番号が最も小さいページの6バンドの描画処理を並列で行うことが可能となる。   Specifically, for example, when the band division number of the page with the smallest page number is set to 6 band division from the data size of the page, when the DL data of the page with the smallest page number is generated, When the generation processing of DL data of the other three pages being processed in parallel is ongoing, the number of CPU cores that can be assigned to the drawing processing of the page with the smallest page number in this state is four, Two CPU cores are insufficient to perform drawing processing in parallel with 6 bands. Therefore, the PDL processing management unit 43 suspends the generation of DL data for two pages in order from the page with the largest page number among the pages for which DL data is being generated, Assigned to the drawing process for the page with the smallest number. This makes it possible to perform 6-band drawing processing of the page with the smallest page number in parallel.

以上のようなCPUコアの割り当て管理は、PDL制御部40のPDL処理管理部43によって実施される。なお、スレッドの中断(停止)は、例えばPOSIXスレッド(pthread)のAPIを使用する場合は、thr_suspend()のコマンドによりスレッドの実行中断を行うことが可能であり、thr_continue()のコマンドによりスレッドの実行再開を行うことが可能である。   The CPU core allocation management as described above is performed by the PDL processing management unit 43 of the PDL control unit 40. For example, when the API of a POSIX thread (pthread) is used, the thread can be suspended (suspended) with the thr_suspend () command, and the thread can be suspended with the thr_continue () command. It is possible to resume execution.

図10は、PDL制御部40のPDL処理管理部43をさらに詳細に示す機能ブロック図である。PDL処理管理部43は、図10に示すように、制御部431と、CPUコア管理部432と、DL生成待ちキュー433と、DL生成実行管理テーブル434と、描画待ちキュー435とを有する。   FIG. 10 is a functional block diagram showing the PDL process management unit 43 of the PDL control unit 40 in more detail. As illustrated in FIG. 10, the PDL processing management unit 43 includes a control unit 431, a CPU core management unit 432, a DL generation wait queue 433, a DL generation execution management table 434, and a drawing wait queue 435.

制御部431は、インデックス生成部42から、RAM12上に展開されたジョブ全体のPDLデータの先頭アドレスと各ページの先頭アドレスからの位置(オフセット)を示すインデックス情報を受け取る。また、制御部431は、初期設定パラメータに基づいて、一度に起動するDL生成部31の数を決定し、CPUコア管理部432に対して必要なCPUコアの数を要求して、使用可能なCPUコアに関する情報を取得する。なお、コントローラ1上に搭載されている複数のCPUコアにはそれぞれ固有の番号(コア番号)が割り当てられており、制御部431は、CPUコア管理部432から、使用可能なCPUコアの数および使用可能なCPUコアのコア番号を取得する。   The control unit 431 receives index information indicating the start address of the PDL data of the entire job developed on the RAM 12 and the position (offset) from the start address of each page from the index generation unit 42. Further, the control unit 431 determines the number of DL generation units 31 to be activated at a time based on the initial setting parameters, requests the CPU core management unit 432 for the necessary number of CPU cores, and can be used. Obtain information about the CPU core. Each of the plurality of CPU cores mounted on the controller 1 is assigned a unique number (core number), and the control unit 431 receives the number of available CPU cores from the CPU core management unit 432. Obtain a core number of an available CPU core.

CPUコア管理部432は、未使用のCPUコア(空きCPUコア)と使用中のCPUコアとをリスト管理しており、ある処理にCPUコアを割り当てた場合は、図11に示すように、当該CPUコアのコア番号を未使用リストから使用中リストに移動させる。また、CPUコア管理部432は、CPUコアを割り当てている処理が完了した場合には、当該CPUコアのコア番号を使用中リストから未使用リストに移動させる。なお、図11では、コア番号が1〜3の3つの未使用のCPUコアのうち、コア番号1のCPUコアをある処理に割り当てた場合を例示している。   The CPU core management unit 432 manages a list of unused CPU cores (free CPU cores) and in-use CPU cores. When a CPU core is assigned to a certain process, as shown in FIG. The core number of the CPU core is moved from the unused list to the busy list. In addition, when the process of assigning a CPU core is completed, the CPU core management unit 432 moves the core number of the CPU core from the in-use list to the unused list. FIG. 11 illustrates the case where the CPU core with the core number 1 among the three unused CPU cores with the core numbers 1 to 3 is assigned to a certain process.

図12は、CPUコア管理部432による処理の概要を示すフローチャートである。CPUコア管理部432は、制御部431から必要個数のCPUコアの要求があると、まず、使用可能なCPUコアの数を表す取得コア数CORE_NUMの値をゼロに初期化し(ステップS201)、未使用リストから空きCPUコアを検索する(ステップS202)。そして、空きCPUコアがあれば(ステップS203でYES)、当該CPUコアのコア番号を未使用リストから使用中リストへと移動させて(ステップS204)、取得コア数CORE_NUMの値をインクリメント(1UP)する(ステップS205)。   FIG. 12 is a flowchart illustrating an outline of processing by the CPU core management unit 432. When there is a request for the required number of CPU cores from the control unit 431, the CPU core management unit 432 first initializes the value of the acquired core number CORE_NUM representing the number of usable CPU cores to zero (step S201). An empty CPU core is searched from the use list (step S202). If there is an empty CPU core (YES in step S203), the core number of the CPU core is moved from the unused list to the in-use list (step S204), and the value of the acquired core number CORE_NUM is incremented (1UP). (Step S205).

CPUコア管理部432は、以上のステップS202からステップS205の処理を、制御部431から要求されているCPUコアの個数分だけ繰り返し、取得できたCPUコアのコア番号と取得コア数CORE_NUMを制御部431に返す(ステップS206)。また、CPUコア管理部432は、処理の途中で空きCPUコアがゼロになった場合(ステップS203でNO)には、それまでに取得できたCPUコアのコア番号と取得コア数CORE_NUMを制御部431に返す(ステップS206)。   The CPU core management unit 432 repeats the processing from step S202 to step S205 as many as the number of CPU cores requested from the control unit 431, and obtains the CPU core number and the acquired core number CORE_NUM that have been acquired. It returns to 431 (step S206). Further, when the number of empty CPU cores becomes zero during the process (NO in step S203), the CPU core management unit 432 determines the CPU core number and the acquired core number CORE_NUM that have been acquired so far. It returns to 431 (step S206).

制御部431は、CPUコア管理部432から使用可能なCPUコアに関する情報を取得すると、DL生成部31によるDLデータの生成を実行するためにスレッドを作成して、各スレッドにCPUコアを割り当ててDLデータ生成の処理を実行させる。このとき、制御部431は、ページ番号の小さいページからDL生成の処理を開始させるために、DL生成待ちキュー433を利用する。このDL生成待ちキュー433は、図13に示すように、DLデータに変換されていないページデータをページ番号順に並べたキューであり、ページ番号の小さいページから順にDLデータの生成処理を実行させる構造となっている。   When the control unit 431 acquires information about available CPU cores from the CPU core management unit 432, the control unit 431 creates threads to execute the generation of DL data by the DL generation unit 31, and assigns a CPU core to each thread. The DL data generation process is executed. At this time, the control unit 431 uses the DL generation waiting queue 433 in order to start the DL generation processing from a page with a small page number. As shown in FIG. 13, the DL generation waiting queue 433 is a queue in which page data that has not been converted into DL data is arranged in order of page number, and has a structure that executes DL data generation processing in order from the page with the smallest page number. It has become.

制御部431は、DLデータ生成の準備が整ったページのページデータをDL生成待ちキュー433に登録する。ここで、DL生成待ちキュー433は、ページ番号が小さいページのページデータが前になるように、各ページのページデータをページ番号順にソートする。したがって、新たに登録するページデータはDL生成待ちキュー433の後ろに入れればよい。次に、制御部431は、DL生成待ちキュー433の先頭からページデータを取り出して、該当するページのDLデータを生成するためにDL生成部31を起動する。   The control unit 431 registers the page data of the page ready for DL data generation in the DL generation waiting queue 433. Here, the DL generation waiting queue 433 sorts the page data of each page in the order of the page numbers so that the page data of the page with the smaller page number comes first. Therefore, page data to be newly registered may be placed behind the DL generation waiting queue 433. Next, the control unit 431 extracts the page data from the head of the DL generation waiting queue 433, and activates the DL generation unit 31 to generate DL data of the corresponding page.

また、制御部431は、DL生成実行管理テーブル434を用いて、DLデータ生成処理を実行中のDL生成部31を管理する。DL生成実行管理テーブル434には、図14に示すように、DLデータ生成処理を実行中のページに関する情報として、各ページのページ番号、DLポインタ、PDLデータポインタ、スレッド情報などが登録される。制御部431は、DL生成部31を起動してDLデータ生成処理を開始させた場合は、DL生成実行管理テーブル434に以上のようなDLデータ生成処理を実行中のページに関する情報を登録し、DLデータ生成処理が終了すると、該当するページに関する情報をDL生成実行管理テーブル434から消去する。また、制御部431は、上述したように、ページ番号の小さいページの描画処理に多くのCPUコアを割り当てるために実行中のDLデータ生成処理を中断させる場合は、ページ番号の大きいページから順にDLデータ生成のスレッド実行を中断して、該当するページの情報をDL生成実行管理テーブル434から消去するとともに、該当するページのページデータをDL生成待ちキュー433に再度登録する。このとき、DLデータ生成処理を中断したページのページデータは、DL生成待ちキュー433の先頭から挿入していくことで、中断したDLデータ生成処理を再開させる場合にも、ページ番号の小さいページからDLデータ生成処理を再開させることができる。   Also, the control unit 431 manages the DL generation unit 31 that is executing the DL data generation process, using the DL generation execution management table 434. In the DL generation execution management table 434, as shown in FIG. 14, the page number, DL pointer, PDL data pointer, thread information, and the like of each page are registered as information related to the page on which DL data generation processing is being executed. When the control unit 431 activates the DL generation unit 31 and starts the DL data generation processing, the control unit 431 registers information regarding the page on which the DL data generation processing as described above is being executed in the DL generation execution management table 434. When the DL data generation process ends, the information about the corresponding page is deleted from the DL generation execution management table 434. In addition, as described above, the control unit 431 suspends the DL data generation process being executed in order to allocate a large number of CPU cores to the drawing process of the page with the small page number, and the DL is sequentially performed from the page with the large page number. The data generation thread execution is interrupted, the information of the corresponding page is deleted from the DL generation execution management table 434, and the page data of the corresponding page is registered again in the DL generation waiting queue 433. At this time, the page data of the page for which the DL data generation process is interrupted is inserted from the head of the DL generation wait queue 433 so that the interrupted DL data generation process is resumed from the page with the smaller page number. The DL data generation process can be resumed.

図15は、DLデータ生成に関する制御部431の処理の流れを示すフローチャートである。なお、この図15のフローチャートで示す例は、各ページのバンド分割数をDLデータ生成前に決定する例である。バンド分割数をDLデータ生成後に決定する場合には、以下に示すステップS305およびステップS306の処理が省略され、DLデータが生成された段階で、DLサイズに応じてバンド分割数が決定されることになる。   FIG. 15 is a flowchart showing a flow of processing of the control unit 431 regarding DL data generation. The example shown in the flowchart of FIG. 15 is an example in which the number of band divisions for each page is determined before DL data generation. When the number of band divisions is determined after DL data generation, the processing in steps S305 and S306 shown below is omitted, and the band division number is determined according to the DL size when DL data is generated. become.

制御部431は、まず、初期設定パラメータに基づいて一度に起動するDL生成部31の数Nを決定し(ステップS301)、CPUコア管理部432に対して必要なCPUコアの数を要求して、CPUコア管理部432から使用可能なCPUコアのコア数Mとコア番号を取得する(ステップS302)。   First, the control unit 431 determines the number N of DL generation units 31 to be activated at a time based on the initial setting parameters (step S301), and requests the CPU core management unit 432 for the number of CPU cores required. The CPU core management unit 432 acquires the number of CPU cores M that can be used and the core number (step S302).

次に、制御部431は、ステップS302で取得した使用可能なCPUコアのコア数MがステップS301で決定した一度に起動するDL生成部31の数Nと一致するか否かを判定し(ステップS303)、一致しない場合(ステップS303でNO)には、一度に起動するDL生成部31の数Nを使用可能なCPUコアのコア数Mに変更する(ステップS304)。一方、ステップS302で取得した使用可能なCPUコアのコア数MがステップS301で決定した一度に起動するDL生成部31の数Nと一致する場合(ステップS303でYES)には、ステップS301で決定した一度に起動するDL生成部31の数Nを維持する。   Next, the control unit 431 determines whether or not the number M of cores of usable CPU cores acquired in step S302 matches the number N of DL generation units 31 activated at one time determined in step S301 (step S301). If they do not match (NO in step S303), the number N of DL generation units 31 activated at a time is changed to the number M of CPU cores that can be used (step S304). On the other hand, when the number M of usable CPU cores acquired in step S302 matches the number N of DL generation units 31 activated at one time determined in step S301 (YES in step S303), the determination is made in step S301. The number N of DL generation units 31 activated at a time is maintained.

次に、制御部431は、PDLデータの各ページのインデックス情報に基づいてページのデータサイズを求め(ステップS305)、ページのデータサイズからバンド分割数を決定して(ステップS306)、当該ページのページデータをDL生成待ちキュー433に登録する(ステップS307)。制御部431は、以上のステップS305からステップS307の処理を、一度に起動するDL生成部31の数N個分だけ繰り返す。   Next, the control unit 431 obtains the page data size based on the index information of each page of the PDL data (step S305), determines the number of band divisions from the page data size (step S306), and The page data is registered in the DL generation waiting queue 433 (step S307). The control unit 431 repeats the processes from step S305 to step S307 for the number N of DL generation units 31 activated at a time.

次に、制御部431は、DL生成待ちキュー433の先頭からページデータを取り出す(ステップS308)。そして、制御部431は、DL生成待ちキュー433から取り出したページデータがDLデータ生成処理を中断したページのページデータかどうかを確認し(ステップS309)、DLデータ生成処理を中断したページではない新規なページのページデータであれば(ステップS309でNO)、ステップS302で取得したコア番号で識別される使用可能なCPUコアをDLデータ生成のためのスレッドに割り当ててDL生成部31を起動し、DLデータ生成処理を実行させる(ステップS310)。   Next, the control unit 431 extracts page data from the head of the DL generation waiting queue 433 (step S308). Then, the control unit 431 confirms whether or not the page data extracted from the DL generation waiting queue 433 is the page data of the page for which the DL data generation process has been interrupted (step S309). If it is page data of a correct page (NO in step S309), an available CPU core identified by the core number acquired in step S302 is assigned to a thread for generating DL data, and the DL generation unit 31 is started. DL data generation processing is executed (step S310).

一方、DL生成待ちキュー433から取り出したページデータがDLデータ生成処理を中断しているページのページデータであれば(ステップS309でYES)、制御部431は、中断中のスレッドを再開させるコマンドを生成して、ステップS302で取得したコア番号で識別される使用可能なCPUコアを中断中のスレッドに割り当てて、DLデータ生成処理を再開させる(ステップS311)。そして、制御部431は、DLデータ生成処理を実行中のページに関する情報をDL生成実行管理テーブル434に登録する(ステップS312)。制御部431は、以上のステップS308からステップS312の処理を、一度に起動するDL生成部31の数N個分だけ繰り返し、DLデータ生成に関する一連の処理を終了する。   On the other hand, if the page data fetched from the DL generation wait queue 433 is page data of a page for which the DL data generation processing is interrupted (YES in step S309), the control unit 431 issues a command for resuming the interrupted thread. A usable CPU core that is generated and identified by the core number acquired in step S302 is assigned to the suspended thread, and the DL data generation process is resumed (step S311). Then, the control unit 431 registers information regarding the page on which the DL data generation process is being executed in the DL generation execution management table 434 (step S312). The control unit 431 repeats the processes from step S308 to step S312 for the number N of DL generation units 31 activated at a time, and ends a series of processes related to DL data generation.

DL生成部31によるDLデータ生成処理が終了すると、制御部431は、該当ページのDLデータを描画待ちキュー435に登録する。描画待ちキュー435は、図16に示すように、生成されたDLデータをページ番号順に並べたキューであり、ページ番号の小さいページから順に描画処理を実行させる構造となっている。すなわち、描画待ちキュー435に登録されたDLデータは、ページ番号が小さいページのDLデータが前になるようにページ番号順にソートされる。   When the DL data generation process by the DL generation unit 31 is completed, the control unit 431 registers the DL data of the corresponding page in the drawing wait queue 435. As shown in FIG. 16, the drawing wait queue 435 is a queue in which the generated DL data is arranged in the order of page numbers, and has a structure in which drawing processing is executed in order from the page with the smallest page number. That is, the DL data registered in the drawing wait queue 435 is sorted in the order of page numbers so that the DL data of the page with the smaller page number comes before.

また、制御部431は、DLデータを描画待ちキュー435に登録した後、描画待ちキュー435に登録されているDLデータの総数を表すカウンタ(Enque_count)の値をインクリメント(1UP)しておく。また、制御部431は、起動中の描画部32の総数を表すカウンタ(draw_count)の値を監視している。そして、起動中の描画部32の総数が、描画待ちキュー435に登録されているDLデータの総数以下であることを条件として、描画待ちキュー435の先頭からDLデータを取り出して、該当するページの描画処理をバンド並列で実行するために複数の描画部32を起動する。   Further, after registering the DL data in the drawing wait queue 435, the control unit 431 increments (1UP) the value of a counter (Enque_count) indicating the total number of DL data registered in the drawing wait queue 435. The control unit 431 monitors the value of a counter (draw_count) that represents the total number of the drawing units 32 that are active. Then, on the condition that the total number of the drawing units 32 being activated is equal to or less than the total number of DL data registered in the drawing wait queue 435, the DL data is extracted from the head of the drawing wait queue 435, and the corresponding page In order to execute the drawing processing in parallel with the band, a plurality of drawing units 32 are activated.

図17は、描画部32の起動に関する制御部431の処理の流れを示すフローチャートである。制御部431は、まず、DL生成部31により生成されたDLデータを描画待ちキュー435に登録し(ステップS401)、カウンタEnque_countの値をインクリメント(1UP)する(ステップS402)。   FIG. 17 is a flowchart illustrating a processing flow of the control unit 431 regarding the activation of the drawing unit 32. First, the control unit 431 registers the DL data generated by the DL generation unit 31 in the drawing wait queue 435 (step S401), and increments (1UP) the value of the counter Enque_count (step S402).

次に、制御部431は、カウンタdraw_countの値とカウンタEnque_countの値とを比較し、カウンタdraw_countの値がカウンタEnque_countの値以下となっているか否か、つまり、起動中の描画部32の総数が、描画待ちキュー435に登録されているDLデータの総数以下であるか否かを判定する(ステップS403)。そして、起動中の描画部32の総数が、描画待ちキュー435に登録されているDLデータの総数以下である場合(ステップS403でYES)に、描画待ちキュー435の先頭からDLデータを取得(Deque)する(ステップS404)。   Next, the control unit 431 compares the value of the counter draw_count with the value of the counter Enque_count, and determines whether or not the value of the counter draw_count is equal to or smaller than the value of the counter Enque_count, that is, the total number of the drawing units 32 that are activated. Then, it is determined whether or not it is equal to or less than the total number of DL data registered in the drawing wait queue 435 (step S403). If the total number of drawing units 32 that are active is equal to or less than the total number of DL data registered in the drawing queue 435 (YES in step S403), DL data is acquired from the top of the drawing queue 435 (Deque). (Step S404).

次に、制御部431は、DLデータ上に保存されたバンド分割数の情報に基づいて、バンド並列で描画処理を実行するための描画部32の起動数Xを算出し(ステップS405)、CPUコア管理部432に対して必要なCPUコアの数を要求して、CPUコア管理部432から使用可能なCPUコアのコア数Mとコア番号を取得する(ステップS406)。   Next, the control unit 431 calculates the activation number X of the drawing unit 32 for performing drawing processing in parallel with the band based on the information on the number of band divisions stored on the DL data (step S405), and the CPU The core management unit 432 is requested for the number of necessary CPU cores, and the CPU core management unit 432 acquires the number of CPU cores M and the core number that can be used (step S406).

次に、制御部431は、ステップS406で取得した使用可能なCPUコアのコア数MがステップS405で算出した描画部32の起動数Xよりも小さいか否かを判定し(ステップS407)、描画部32の起動数X分のCPUコアが使用可能であれば(ステップS407でNO)、これらのCPUコアを描画のためのスレッドに割り当てて描画部32を起動し、バンド並列での描画処理を実行させる(ステップS410)。   Next, the control unit 431 determines whether or not the number M of usable CPU cores acquired in step S406 is smaller than the activation number X of the drawing unit 32 calculated in step S405 (step S407). If CPU cores corresponding to the number of activations of the unit 32 are available (NO in step S407), these CPU cores are assigned to threads for rendering and the rendering unit 32 is activated to perform rendering processing in band parallel. This is executed (step S410).

一方、使用可能なCPUコアのコア数Mが描画部32の起動数Xよりも小さい場合(ステップS407でYES)には、制御部431は、現在実行されているDLデータの生成中断の処理を実行する(ステップS408)。そして、DLデータの生成中断によって開放されるCPUコアが1つ以上あれば(ステップS409でYES)、当該CPUコアを使用可能なCPUコアに加えて、これらのCPUコアを描画のためのスレッドに割り当てて描画部32を起動し、バンド並列での描画処理を実行させる(ステップS410)。この場合、使用可能なCPUコアの総数がステップS405で算出した起動数Xに満たない場合でも、1つのスレッドに複数バンドの描画を担当させることで必要な描画部32の起動数を減らし、使用可能なCPUを利用したバンド並列での描画処理を実行させる。   On the other hand, when the number M of CPU cores that can be used is smaller than the number of activations X of the drawing unit 32 (YES in step S407), the control unit 431 performs the process of interrupting the generation of DL data currently being executed. Execute (step S408). If one or more CPU cores are released due to the DL data generation interruption (YES in step S409), in addition to the CPU core that can use the CPU core, these CPU cores can be used as threads for drawing. The drawing unit 32 is allocated and activated, and drawing processing in band parallel is executed (step S410). In this case, even if the total number of usable CPU cores is less than the number of activations X calculated in step S405, the number of activations of the drawing unit 32 required can be reduced by causing one thread to perform drawing of a plurality of bands. A band parallel drawing process using a possible CPU is executed.

一方、DLデータの生成中断によって開放されるCPUコアがない場合(ステップS409でNO)には、制御部431は、描画待ちキュー435から取り出したDLデータを描画待ちキュー435の先頭に挿入する(ステップS411)。   On the other hand, if there is no CPU core released due to the interruption of DL data generation (NO in step S409), the control unit 431 inserts the DL data extracted from the drawing wait queue 435 at the head of the drawing wait queue 435 ( Step S411).

制御部431は、以上のフローに従って描画部32を起動することによって、描画部32がDLデータの生成待ちの状態とならないように制御することができ、CPUコアの割り当てを適切に行って効率のよい描画を実現することができる。   The control unit 431 can control the drawing unit 32 so that it does not enter the DL data generation waiting state by starting the drawing unit 32 in accordance with the above flow. Good drawing can be realized.

図18は、図17のステップS408におけるDL生成中断処理の詳細を示すフローチャートである。制御部431は、DL生成中断処理を開始すると、まず、DL生成実行管理テーブル434を参照して、DLデータ生成処理を実行中のページのうちで、ページ番号が最も大きいページを検索する(ステップS501)。DL生成実行管理テーブル434には、上述したように、DLデータ生成処理を実行中のページのページ番号が管理されているので、この情報を用いて検索が可能である。なお、DL生成実行管理テーブル434の形式として例えばハッシュテーブルなどを利用することで、高速に検索することが可能となる。   FIG. 18 is a flowchart showing details of the DL generation interruption processing in step S408 of FIG. When starting the DL generation interruption process, the control unit 431 first refers to the DL generation execution management table 434 and searches for a page with the largest page number among the pages that are executing the DL data generation process (Step S431). S501). In the DL generation execution management table 434, as described above, the page number of the page that is executing the DL data generation process is managed, so that it is possible to search using this information. It is possible to search at high speed by using, for example, a hash table as the format of the DL generation execution management table 434.

制御部431は、ステップS501での検索の結果、DLデータの生成を中断させる対象となるページが取得できた場合(ステップS502でYES)には、該当するページのDLデータ生成のスレッド実行を中断し(ステップS503)、該当するページのページデータをDL生成待ちキュー433の先頭に登録する(ステップS504)。なお、DLデータ生成処理を中断させる場合には、処理済みのDLデータへのポインタ、生成途中のDLデータへのポインタ、書き込み開始ポインタ等を保存しておき、適切に再開できるようにしておくことが望ましい。   As a result of the search in step S501, the control unit 431 suspends the thread execution of DL data generation for the corresponding page when the page that is the target of interrupting the generation of DL data can be acquired (YES in step S502). Then, the page data of the corresponding page is registered at the head of the DL generation waiting queue 433 (step S504). When interrupting the DL data generation process, save the pointer to the processed DL data, the pointer to the DL data being generated, the write start pointer, etc. so that they can be restarted appropriately. Is desirable.

制御部431は、以上のステップS501からステップS504の処理を、不足するCPUコアの個数分(上述した描画部32の起動数Xと使用可能なCPUコアの数Mとの差分)だけ繰り返した後、DL生成中断処理を終了する。また、処理の途中でDLデータ生成を実行中のページがなくなった場合(ステップS502でNO)は、その時点でDL生成中断処理を終了する。   After the control unit 431 repeats the above-described processing from step S501 to step S504 by the number of CPU cores that are insufficient (the difference between the number of activations X of the drawing unit 32 described above and the number M of usable CPU cores). Then, the DL generation interruption process is terminated. If there is no page for which DL data generation is being executed during the process (NO in step S502), the DL generation interruption process ends at that point.

図19は、図17のステップS410における描画実行処理の詳細を示すフローチャートである。制御部431は、描画実行処理を開始すると、描画対象となるページのバンドを描画する関数をスレッドとして生成し、生成したスレッドに使用可能なCPUを割り当てることで描画部32を起動する(ステップS601)。制御部431は、このステップS601の処理を描画対象となるページのバンド数分繰り返し、起動した描画部32にバンド並列での描画を実行させる。そして、バンド描画が終了したら、そのバンド描画のスレッドに割り当てられているCPUコアの開放を、CPUコア管理部432に対して要求する(ステップS602)。   FIG. 19 is a flowchart showing details of the drawing execution process in step S410 of FIG. When the drawing execution process is started, the control unit 431 generates a function for drawing the band of the page to be drawn as a thread, and activates the drawing unit 32 by assigning a usable CPU to the generated thread (step S601). ). The control unit 431 repeats the processing in step S601 for the number of bands of the page to be rendered, and causes the activated rendering unit 32 to perform rendering in band parallel. When the band drawing is completed, the CPU core management unit 432 is requested to release the CPU core assigned to the band drawing thread (step S602).

制御部431は、以上のようにしてDL生成のためのスレッドの生成およびCPUコアの割り当てと、バンド描画のためのスレッドの生成およびCPUコアの割り当てを行うことで、DL生成部31によるページ並列でのDL生成と、描画部32によるバンド並列での描画を実行させるが、各スレッドの実行中にはスレッド終了の待ち合わせを行う。   The control unit 431 performs page parallelization by the DL generation unit 31 by generating threads and assigning CPU cores for DL generation and generating threads and assigning CPU cores for band drawing as described above. DL is generated and the drawing unit 32 performs band parallel drawing. While each thread is being executed, the end of the thread is waited.

具体的には、制御部431は、POSIXスレッド(pthread)のAPIを使用する場合、上述したように、pthread_create()のコマンドを用いてスレッドを生成するが、任意のスレッドの待ち合わせは、pthread_cond_wait()のコマンドを用い、条件変数が書き換わるまでポーリングを行う。この場合、各スレッドを実行中のCPUコアは、スレッドの実行が終了すると、pthread_cond_signal()のコマンドを実行することで、スレッドの終了を制御部431に通知することができる。制御部431は、DL生成のためのスレッドを生成してDL生成部31を起動した後は、pthread_cond_wait()のコマンドを用いてスレッドの待ち合わせを行い、スレッドの終了通知を受け取ると、バンド描画のためのスレッドを生成して描画部32を起動する。また、制御部431は、バンド描画のためのスレッドを生成して描画部32を起動した後も、pthread_cond_wait()のコマンドを用いてスレッドの待ち合わせを行う。このような条件変数による待ち合わせ機構を利用することによって、いずれかのスレッドが終了した場合に、制御部431がスレッド終了の通知を受け取ることができる。   Specifically, when using the API of the POSIX thread (pthread), the control unit 431 generates a thread using the pthread_create () command as described above. ) Polling until the condition variable is rewritten. In this case, the CPU core that is executing each thread can notify the control unit 431 of the end of the thread by executing the pthread_cond_signal () command when the execution of the thread ends. After generating a thread for DL generation and starting the DL generation unit 31, the control unit 431 waits for the thread by using the pthread_cond_wait () command, and upon receiving a thread end notification, A thread for generating the image is generated and the drawing unit 32 is activated. The control unit 431 also waits for a thread using the pthread_cond_wait () command even after generating a thread for band drawing and activating the drawing unit 32. By using such a waiting mechanism based on condition variables, when any thread is terminated, the control unit 431 can receive a thread termination notification.

以上、具体的な例を挙げながら詳細に説明したように、本実施の形態にかかる画像形成装置では、PDL処理部30での処理をDL生成部31によるDLデータ生成処理(前処理)と描画部32によるバンド描画処理(後処理)とに分け、PDL処理管理部43の制御部431が、DL生成部31を起動してDLデータ生成処理を実行させる場合には、複数ページ分の処理に複数のCPUコアを割り当てて複数ページ分のDLデータの生成を並列処理で実行させながら、DLデータの生成後に描画部32を起動して描画処理を実行させる場合には、ページ番号の小さいページの処理に複数のCPUコアを優先的に割り当てて、当該ページの複数バンドの描画を並列処理で実行させるようにしている。したがって、本実施の形態にかかる画像形成装置によれば、ページ番号の小さいページから順に描画処理を完了させることができ、画像の出力待ちの状態を低減して、処理の高速化を実現することができる。   As described above in detail with specific examples, in the image forming apparatus according to the present embodiment, the processing in the PDL processing unit 30 includes the DL data generation processing (pre-processing) by the DL generation unit 31 and the drawing. When the control unit 431 of the PDL processing management unit 43 activates the DL generation unit 31 to execute the DL data generation processing, the processing is divided into the band drawing processing (post-processing) by the unit 32. When a plurality of CPU cores are allocated and DL data generation for a plurality of pages is executed in parallel processing, the drawing unit 32 is started after DL data generation to execute drawing processing. A plurality of CPU cores are preferentially assigned to processing, and a plurality of bands on the page are rendered in parallel processing. Therefore, according to the image forming apparatus according to the present embodiment, drawing processing can be completed in order from the page with the smallest page number, and the waiting state for image output can be reduced, thereby realizing high-speed processing. Can do.

また、本実施の形態にかかる画像形成装置では、PDL処理管理部43が、描画部32による描画処理の単位となるバンドの分割数を、PDLデータの各ページのデータサイズに応じてDLデータ生成前に決定することにより、簡単な処理でバンド分割を実施しながらバンド並列での描画処理を効率よく実施することが可能となる。一方、バンド分割数をDLデータが生成された後に生成されたDLデータのサイズに応じて決定するようにした場合には、描画処理の負荷に応じたバンド分割をより適切なかたちで実施することが可能となる。   Further, in the image forming apparatus according to the present embodiment, the PDL processing management unit 43 generates the DL data according to the data size of each page of the PDL data, based on the number of bands divided as a unit of drawing processing by the drawing unit 32. By determining in advance, it is possible to efficiently perform the drawing processing in the band parallel while performing the band division by a simple process. On the other hand, when the number of band divisions is determined according to the size of the DL data generated after the DL data is generated, band division according to the drawing processing load should be performed in a more appropriate manner. Is possible.

また、本実施の形態にかかる画像形成装置では、PDL処理管理部43の制御部431が、描画部32による描画処理に複数のCPUコアを割り当てる際に、空き状態にあるCPUコアの数が描画対象となるページのバンド分割数に満たない場合に、DL生成部31によるDL生成処理をページ番号の大きい順に中断させて、DL生成処理の中断により開放されたCPUコアを描画部32による描画処理に割り当てるようにしているので、限られた個数のCPUコアを効率よく利用しながら、ページ番号の小さいページの描画処理を迅速に完了させることができる。   Further, in the image forming apparatus according to the present embodiment, when the control unit 431 of the PDL process management unit 43 assigns a plurality of CPU cores to the drawing process by the drawing unit 32, the number of CPU cores in the free state is drawn. When the number of band divisions of the target page is not reached, the DL generation processing by the DL generation unit 31 is interrupted in descending order of the page number, and the CPU core released by the interruption of the DL generation processing is drawn by the drawing unit 32 Therefore, drawing processing for a page with a small page number can be completed quickly while efficiently using a limited number of CPU cores.

また、本実施の形態にかかる画像形成装置では、PDL処理管理部43のCPUコア管理部432がCPUコア管理リストを用いてコントローラ1に搭載されている複数のCPUコアの稼動状態を管理し、PDL処理管理部43の制御部431が、CPUコア管理部432への問い合わせによって空き状態にあるCPUコアを確認するようにしているので、CPUコアの稼動状態が適切に管理されるとともに、実行する処理に対するCPUコアの割り当てを適切に実施することができる。   In the image forming apparatus according to the present embodiment, the CPU core management unit 432 of the PDL processing management unit 43 manages the operating states of the plurality of CPU cores mounted on the controller 1 using the CPU core management list. Since the control unit 431 of the PDL processing management unit 43 confirms a CPU core that is in an empty state by an inquiry to the CPU core management unit 432, the operating state of the CPU core is appropriately managed and executed. The CPU core can be appropriately assigned to the process.

また、本実施の形態にかかる画像形成装置では、コントローラ1に入力されたPDLデータがインデックス情報を持たないPDLデータの場合には、PDL制御部40のページ検知部41によりPDLデータのページの切れ目であるページ開始オペレータ、ページ終了オペレータを検知し、インデックス生成部42によりPDLデータの各ページの境界を表すインデックス情報を生成するようにしているので、インデックス情報を持たないPDLデータが入力された場合にも、ページ単位でのDLデータ生成の並列処理およびバンド描画の並列処理を実行することができる。   In the image forming apparatus according to the present embodiment, when the PDL data input to the controller 1 is PDL data having no index information, the page detection unit 41 of the PDL control unit 40 causes the page break of the PDL data. When the page start operator and the page end operator are detected and the index information indicating the boundary of each page of the PDL data is generated by the index generation unit 42, the PDL data having no index information is input. In addition, it is possible to execute parallel processing for DL data generation and band drawing for each page.

以上説明した本実施の形態にかかる画像形成装置において特徴的な機能は、上述したように、コントローラ1において画像形成プログラムが実行されることによって実現される。画像形成装置のコントローラ1で実行される画像形成プログラムは、例えば、コントローラ1内のROM11に予め組み込まれて提供される。また、画像形成装置のコントローラ1において実行される画像形成プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。さらに、画像形成装置のコントローラ1で実行される画像形成プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、画像形成装置のコントローラ1で実行される画像形成プログラムを、インターネット等のネットワーク経由で提供または配布するように構成してもよい。   As described above, the characteristic functions of the image forming apparatus according to the present embodiment described above are realized by executing the image forming program in the controller 1. The image forming program executed by the controller 1 of the image forming apparatus is provided by being incorporated in advance in the ROM 11 in the controller 1, for example. The image forming program executed in the controller 1 of the image forming apparatus is an installable or executable file in a CD-ROM, flexible disk (FD), CD-R, DVD (Digital Versatile Disk), or the like. It may be configured to be recorded on a computer-readable recording medium. Furthermore, the image forming program executed by the controller 1 of the image forming apparatus may be provided by being stored on a computer connected to a network such as the Internet and downloaded via the network. The image forming program executed by the controller 1 of the image forming apparatus may be provided or distributed via a network such as the Internet.

画像形成装置のコントローラ1で実行される画像形成プログラムは、上述したPDL解析部24の各部、すなわちPDL制御部40のページ検知部41、インデックス生成部42、PDL処理管理部43(制御部431、CPUコア管理部432)や、PDL処理部30のDL生成部31、描画部32を含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)10が上記ROM11から画像形成プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、PDL制御部40のページ検知部41、インデックス生成部42、PDL処理管理部43(制御部431、CPUコア管理部432)や、PDL処理部30のDL生成部31、描画部32が主記憶装置上に生成されるようになっている。   The image forming program executed by the controller 1 of the image forming apparatus includes the above-described units of the PDL analysis unit 24, that is, the page detection unit 41 of the PDL control unit 40, the index generation unit 42, and the PDL process management unit 43 (control unit 431, The CPU core management unit 432), the DL generation unit 31 of the PDL processing unit 30, and the drawing unit 32 are included in the module configuration. As actual hardware, the CPU (processor) 10 reads an image forming program from the ROM 11. The above-described units are loaded on the main storage device, and the page detection unit 41, index generation unit 42, PDL processing management unit 43 (control unit 431, CPU core management unit 432) of the PDL control unit 40, PDL The DL generation unit 31 and the drawing unit 32 of the processing unit 30 are generated on the main storage device. .

なお、本発明は、上述した実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。例えば、上述した実施の形態では、1ページ分の描画処理をバンド単位で実行するようにしているが、例えば、1ページ分の画像をCMYK、RGB等の描画プレーン単位で複数の描画領域に分割して、描画プレーン単位で描画処理を行うなど、他の基準で描画処理を分散させるようにしてもよい。また、上述した実施の形態では、画像形成装置の例としてプリンタエンジン2により画像の印刷を行うプリンタを例示しているが、本発明は、プリンタ以外にも、複写機、スキャナ装置、ファクシミリ装置、あるいはこれらの機能を併せ持つ複合機など、各種の画像形成装置において有効に適用可能である。   Note that the present invention is not limited to the above-described embodiments as they are, and can be embodied by modifying the constituent elements without departing from the scope of the invention in the implementation stage. For example, in the embodiment described above, drawing processing for one page is executed in units of bands. For example, an image for one page is divided into a plurality of drawing areas in units of drawing planes such as CMYK and RGB. Then, the drawing processing may be distributed according to other criteria such as drawing processing in units of drawing planes. In the above-described embodiment, a printer that prints an image using the printer engine 2 is illustrated as an example of the image forming apparatus. However, the present invention is not limited to a printer, but includes a copying machine, a scanner device, a facsimile device, Alternatively, the present invention can be effectively applied to various image forming apparatuses such as a multifunction machine having these functions.

1 コントローラ
10 CPU
11 ROM
12 RAM
24 PDL解析部
30 PDL処理部
31 DL生成部
314 DL保存用データメモリ
32 描画部
40 PDL制御部
41 ページ検知部
42 インデックス生成部
43 PDL処理管理部
431 制御部
432 CPUコア管理部
433 DL生成待ちキュー
434 DL生成実行管理テーブル
435 描画待ちキュー
1 Controller 10 CPU
11 ROM
12 RAM
24 PDL analysis unit 30 PDL processing unit 31 DL generation unit 314 DL storage data memory 32 Drawing unit 40 PDL control unit 41 Page detection unit 42 Index generation unit 43 PDL processing management unit 431 control unit 432 CPU core management unit 433 Wait for DL generation Queue 434 DL generation execution management table 435 Drawing wait queue

特開2006−159738号公報JP 2006-159738 A

Claims (7)

複数のCPUコアを用いて画像形成に関わる処理を並列して実行可能な画像形成装置において、
PDLデータを解析してページごとに独立した描画のための中間データを生成する中間データ生成手段と、
前記中間データ生成手段により生成されたページごとの中間データを保持するデータ保持手段と、
前記データ保持手段に保持された中間データに基づいて、複数の描画領域に分割された1ページ分の画像を前記描画領域ごとに描画する描画手段と、
前記データ保持手段に前記中間データが保持されていない場合は、複数のCPUコアを前記中間データ生成手段による中間データ生成処理に割り当てて、複数ページ分の中間データ生成処理を並列で実行させるとともに、前記データ保持手段に前記中間データが保持されている場合は、複数のCPUコアを前記描画手段による描画処理に割り当てて、ページ番号が小さいページから順に前記複数の描画領域の描画処理を並列で実行させる制御手段と、を備えることを特徴とする画像形成装置。
In an image forming apparatus capable of executing processes related to image formation in parallel using a plurality of CPU cores,
Intermediate data generating means for analyzing the PDL data and generating intermediate data for independent drawing for each page;
Data holding means for holding intermediate data for each page generated by the intermediate data generating means;
Drawing means for drawing an image for one page divided into a plurality of drawing areas for each drawing area based on the intermediate data held in the data holding means;
When the intermediate data is not held in the data holding unit, a plurality of CPU cores are assigned to the intermediate data generation process by the intermediate data generation unit, and the intermediate data generation process for a plurality of pages is executed in parallel. When the intermediate data is held in the data holding unit, a plurality of CPU cores are assigned to the drawing process by the drawing unit, and the drawing processes of the plurality of drawing areas are executed in parallel from the page with the smallest page number. And an image forming apparatus.
前記描画手段による描画処理の単位となる前記描画領域の1ページ分の画像における分割数は、前記PDLデータにおける当該ページのデータサイズに応じて決定されることを特徴とする請求項1に記載の画像形成装置。   The number of divisions in an image for one page of the drawing area, which is a unit of drawing processing by the drawing means, is determined according to the data size of the page in the PDL data. Image forming apparatus. 前記描画手段による描画処理の単位となる前記描画領域の1ページ分の画像における分割数は、当該ページに対応する前記中間データのデータサイズに応じて決定されることを特徴とする請求項1に記載の画像形成装置。   The number of divisions in an image for one page of the drawing area, which is a unit of drawing processing by the drawing means, is determined according to the data size of the intermediate data corresponding to the page. The image forming apparatus described. 前記制御手段は、前記描画手段による描画処理に複数のCPUコアを割り当てるときに、空き状態にあるCPUコアの数が、描画処理の対象としたページの描画領域の分割数に満たない場合は、前記中間データ生成手段による中間データ生成処理をページ番号が大きいページから順に中断することでCPUコアを開放し、開放したCPUコアを前記描画手段による描画処理に割り当てることを特徴とする請求項1ないし3のいずれか一つに記載の画像形成装置。   When the control means assigns a plurality of CPU cores to the drawing process by the drawing means, if the number of CPU cores in the free state is less than the number of divisions of the drawing area of the page targeted for the drawing process, The CPU core is released by interrupting the intermediate data generation processing by the intermediate data generation means in order from the page with the largest page number, and the released CPU core is assigned to the drawing processing by the drawing means. 4. The image forming apparatus according to any one of items 3. 前記PDLデータがインデックス情報を持たない場合に、当該PDLを構成する各ページの開始および終了位置を検知して各ページの境界を表すインデックスを生成するインデックス生成手段をさらに備えることを特徴とする請求項1ないし4のいずれか一つに記載の画像形成装置。   The apparatus further comprises index generation means for detecting the start and end positions of each page constituting the PDL and generating an index representing a boundary between the pages when the PDL data does not have index information. Item 5. The image forming apparatus according to any one of Items 1 to 4. 複数のCPUコアを用いて画像形成に関わる処理を並列して実行可能な画像形成装置において実行される画像形成方法であって、
PDLデータを解析してページごとに独立した描画のための中間データを生成するステップと、
生成したページごとの中間データをデータ保持手段に保持させるステップと、
前記データ保持手段に保持された中間データに基づいて、複数の描画領域に分割された1ページ分の画像を前記描画領域ごとに描画するステップと、を有し、
前記データ保持手段に前記中間データが保持されていない場合は、前記中間データを生成する処理に複数のCPUコアを割り当てて、複数ページ分の中間データ生成処理を並列で実行するとともに、前記データ保持手段に前記中間データが保持されている場合は、前記描画領域ごとに1ページ分の画像を描画する処理に複数のCPUコアを割り当てて、ページ番号が小さいページから順に前記複数の描画領域の描画処理を並列で実行することを特徴とする画像形成方法。
An image forming method executed in an image forming apparatus capable of executing processes related to image formation in parallel using a plurality of CPU cores,
Analyzing the PDL data and generating intermediate data for independent rendering for each page;
Causing the data holding means to hold the generated intermediate data for each page;
Drawing an image for one page divided into a plurality of drawing areas for each drawing area based on the intermediate data held in the data holding means,
If the intermediate data is not held in the data holding means, a plurality of CPU cores are assigned to the process for generating the intermediate data, and the intermediate data generation process for a plurality of pages is executed in parallel and the data holding is performed. When the intermediate data is stored in the means, a plurality of CPU cores are assigned to the process of drawing one page of image for each drawing area, and the drawing areas are drawn in order from the page with the smallest page number. An image forming method, wherein the processes are executed in parallel.
複数のCPUコアを有するコンピュータに、
PDLデータを解析してページごとに独立した描画のための中間データを生成する中間データ生成手段としての機能と、
前記中間データ生成手段により生成されたページごとの中間データを保持するデータ保持手段としての機能と、
前記データ保持手段に保持された中間データに基づいて、複数の描画領域に分割された1ページ分の画像を前記描画領域ごとに描画する描画手段としての機能と、
前記データ保持手段に前記中間データが保持されていない場合は、複数のCPUコアを前記中間データ生成手段による中間データ生成処理に割り当てて、複数ページ分の中間データ生成処理を並列で実行させるとともに、前記データ保持手段に前記中間データが保持されている場合は、複数のCPUコアを前記描画手段による描画処理に割り当てて、ページ番号が小さいページから順に前記複数の描画領域の描画処理を並列で実行させる制御手段としての機能と、を実現させるための画像形成プログラム。
In a computer having a plurality of CPU cores,
A function as intermediate data generation means for analyzing PDL data and generating intermediate data for independent rendering for each page;
A function as data holding means for holding intermediate data for each page generated by the intermediate data generating means;
A function as a drawing means for drawing an image for one page divided into a plurality of drawing areas for each drawing area based on the intermediate data held in the data holding means;
When the intermediate data is not held in the data holding unit, a plurality of CPU cores are assigned to the intermediate data generation process by the intermediate data generation unit, and the intermediate data generation process for a plurality of pages is executed in parallel. When the intermediate data is held in the data holding unit, a plurality of CPU cores are assigned to the drawing process by the drawing unit, and the drawing processes of the plurality of drawing areas are executed in parallel from the page with the smallest page number. And an image forming program for realizing a function as a control unit.
JP2010031169A 2010-02-16 2010-02-16 Image forming apparatus, image forming method, and image forming program Pending JP2011167857A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010031169A JP2011167857A (en) 2010-02-16 2010-02-16 Image forming apparatus, image forming method, and image forming program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010031169A JP2011167857A (en) 2010-02-16 2010-02-16 Image forming apparatus, image forming method, and image forming program

Publications (1)

Publication Number Publication Date
JP2011167857A true JP2011167857A (en) 2011-09-01

Family

ID=44682493

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010031169A Pending JP2011167857A (en) 2010-02-16 2010-02-16 Image forming apparatus, image forming method, and image forming program

Country Status (1)

Country Link
JP (1) JP2011167857A (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013052568A (en) * 2011-09-02 2013-03-21 Ricoh Co Ltd Image forming apparatus, control method and control program
JP2013233759A (en) * 2012-05-10 2013-11-21 Canon Inc Device, method, system and program of information processing
JP2016210175A (en) * 2015-04-30 2016-12-15 キヤノン株式会社 Image formation apparatus, control method of the same, and program
JP2019140593A (en) * 2018-02-14 2019-08-22 ブラザー工業株式会社 Program and information processing apparatus
US10743009B2 (en) 2015-05-20 2020-08-11 Socionext Inc. Image processing apparatus and image processing method
JP2021057652A (en) * 2019-09-27 2021-04-08 京セラドキュメントソリューションズ株式会社 Image forming device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04128068A (en) * 1990-09-19 1992-04-28 Fuji Xerox Co Ltd Page description language processing and printing apparatus
JPH0683916A (en) * 1992-09-02 1994-03-25 Ricoh Co Ltd Method for displaying processing state in image processor
JP2001306275A (en) * 2000-04-25 2001-11-02 Fuji Xerox Co Ltd Image processing system
JP2005254469A (en) * 2004-03-09 2005-09-22 Riso Kagaku Corp Printing device
JP2007156613A (en) * 2005-12-01 2007-06-21 Canon Inc Drawing controller, drawing control method, storage medium and program

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04128068A (en) * 1990-09-19 1992-04-28 Fuji Xerox Co Ltd Page description language processing and printing apparatus
JPH0683916A (en) * 1992-09-02 1994-03-25 Ricoh Co Ltd Method for displaying processing state in image processor
JP2001306275A (en) * 2000-04-25 2001-11-02 Fuji Xerox Co Ltd Image processing system
JP2005254469A (en) * 2004-03-09 2005-09-22 Riso Kagaku Corp Printing device
JP2007156613A (en) * 2005-12-01 2007-06-21 Canon Inc Drawing controller, drawing control method, storage medium and program

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013052568A (en) * 2011-09-02 2013-03-21 Ricoh Co Ltd Image forming apparatus, control method and control program
JP2013233759A (en) * 2012-05-10 2013-11-21 Canon Inc Device, method, system and program of information processing
US8873076B2 (en) 2012-05-10 2014-10-28 Canon Kabushiki Kaisha Information processing apparatus, information processing method, information processing system, and storage medium
JP2016210175A (en) * 2015-04-30 2016-12-15 キヤノン株式会社 Image formation apparatus, control method of the same, and program
US10743009B2 (en) 2015-05-20 2020-08-11 Socionext Inc. Image processing apparatus and image processing method
JP2019140593A (en) * 2018-02-14 2019-08-22 ブラザー工業株式会社 Program and information processing apparatus
JP7022318B2 (en) 2018-02-14 2022-02-18 ブラザー工業株式会社 Programs and information processing equipment
JP2021057652A (en) * 2019-09-27 2021-04-08 京セラドキュメントソリューションズ株式会社 Image forming device
JP7383955B2 (en) 2019-09-27 2023-11-21 京セラドキュメントソリューションズ株式会社 image forming device

Similar Documents

Publication Publication Date Title
CN102236531B (en) Print-document conversion apparatus and print-document conversion method
JP5594470B2 (en) Printing control apparatus, printing system, and program
JP4900530B1 (en) Image processing apparatus and program
US8625133B2 (en) Print data processing apparatus, print data processing method, and storage medium
US8755060B2 (en) Print control apparatus, image forming system, and non-transitory computer readable medium
JP2011167857A (en) Image forming apparatus, image forming method, and image forming program
JP2012030575A (en) Printing apparatus, control method thereof, and program
JP6512902B2 (en) Image processing apparatus, control method thereof and control program
JP4738948B2 (en) Information processing apparatus, image processing method, and computer program
US8928914B2 (en) Image processing apparatus, information processing method, and storage medium
JP2009245436A (en) Method for parallel rasterization of display list, computer readable medium, and computer readable memory
US8767247B2 (en) Print data generation device, print data generation method and computer-readable medium for controlling rasterization processing
US10534986B2 (en) Printing apparatus having interpreters interpreting print data, printing method, and storage medium
JP5268427B2 (en) Image forming apparatus and image forming system
US10209931B2 (en) Image processing apparatus and image forming apparatus
JP2013028012A (en) Printing device, information processing device, printing system, printing control method, and program
JPH10289066A (en) Image processor and its method
JP5560823B2 (en) Image processing control apparatus, image processing apparatus, and program
US10242299B2 (en) Print data processing apparatus
US9836252B2 (en) Image forming apparatus, control method thereof, and non-transitory computer-readable storage medium
JP5799968B2 (en) Printing system
JP5589582B2 (en) Image processing apparatus and program
JP5704318B2 (en) Image forming method and image forming apparatus
US10262247B2 (en) Image forming apparatus for converting print data into intermediate data, method for controlling image forming apparatus, and storage medium
US8629997B2 (en) Print control apparatus and image forming system for rendering image data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130820

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131018

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131112