US20120086970A1 - Division of rendering block in image forming apparatus - Google Patents
Division of rendering block in image forming apparatus Download PDFInfo
- Publication number
- US20120086970A1 US20120086970A1 US13/253,191 US201113253191A US2012086970A1 US 20120086970 A1 US20120086970 A1 US 20120086970A1 US 201113253191 A US201113253191 A US 201113253191A US 2012086970 A1 US2012086970 A1 US 2012086970A1
- Authority
- US
- United States
- Prior art keywords
- rendering
- block
- processing units
- processing unit
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 794
- 238000012545 processing Methods 0.000 claims abstract description 327
- 230000004044 response Effects 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims description 36
- 230000008569 process Effects 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 4
- 238000003672 processing method Methods 0.000 description 4
- 239000000725 suspension Substances 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1848—Generation of the printable image
- G06K15/1856—Generation of the printable image characterized by its workflow
- G06K15/1857—Generation of the printable image characterized by its workflow involving parallel processing in the same printing apparatus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1848—Generation of the printable image
- G06K15/1849—Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives
- G06K15/1851—Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives parted in a plurality of segments per page
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1848—Generation of the printable image
- G06K15/1856—Generation of the printable image characterized by its workflow
- G06K15/1859—Generation of the printable image characterized by its workflow involving data processing distributed amongst different data processing apparatus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K15/00—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
- G06K15/02—Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
- G06K15/18—Conditioning data for presenting it to the physical printing elements
- G06K15/1848—Generation of the printable image
- G06K15/1856—Generation of the printable image characterized by its workflow
- G06K15/1861—Generation of the printable image characterized by its workflow taking account of a limited available memory space or rasterization time
- G06K15/1863—Generation of the printable image characterized by its workflow taking account of a limited available memory space or rasterization time by rasterizing in sub-page segments
Definitions
- the disclosures herein generally relate to image forming apparatuses for rendering print data, and particularly relate to an image forming apparatus and an image processing method for which a rendering range can be modified.
- a printer adopting a multi-core structure can perform a plurality of processes in parallel, thereby increasing processing speed.
- Printers generally perform two processes, i.e., a DL generation process for generating intermediate date (i.e., display list) from PDL (page description language) data and a rendering process for rendering the intermediate data.
- a plurality of cores may perform rendering in parallel to increase the speed of printing process (see Japanese Patent Application Publication No. 2006-092125, for example).
- the above-noted patent document discloses an image processing apparatus in which a plurality of image processing processors, although different from a multi-core structure, perform rendering within respective rendering blocks which together constitute one page.
- a block division unit monitors the operating status of each image processing processor. Upon finding an image processing processor in an idle state, the block division unit allocates a rendering block to this image processing processor. This arrangement gives rise to a problem in that the load statuses of processes need to be constantly monitored.
- an image forming apparatus an information processing method, and a non-transitory recording medium having a program embodied therein that can dynamically allocate a rendering block to a rendering unit without monitoring the rendering unit.
- an image forming apparatus for printing an image of print data on a transfer medium includes a rendering command generating unit to analyze the print data to generate rendering command data, which includes rendering commands regarding rendering objects for each page, a rendering command data storing unit to store the rendering command data, and a plurality of rendering processing units to read the rendering command data from the rendering command data storing unit and to execute the rendering commands associated with respective rendering blocks to perform rendering, wherein, upon completing rendering with respect to a first rendering block, a first one of the rendering processing units sends a notice of completion to a second one of the rendering processing units that is performing rendering with respect to a second rendering block, and wherein, in response to the notice, the second one of the rendering processing units divides the second rendering block, and requests the first one of the rendering processing units to perform rendering of part of the second rendering block.
- a method for processing an image in an image forming apparatus for printing an image of print data on a transfer medium includes analyzing, with a rendering command generating unit, the print data to generate rendering command data, which includes rendering commands regarding rendering objects for each page, storing, in a rendering command data storing unit, the rendering command data, reading, with a plurality of rendering processing units, the rendering command data from the rendering command data storing unit to execute the rendering commands associated with respective rendering blocks to perform rendering, sending, from a first one of the rendering processing units upon completing rendering of a first rendering block, a notice of completion to a second one of the rendering processing units that is performing rendering with respect to a second rendering block, and dividing, with the second one of the rendering processing units responding to the notice, the second rendering block to request the first one of the rendering processing units to perform rendering of part of the second rendering block.
- a non-transitory recording medium has a program embodied therein for causing an image forming apparatus for printing an image of print data on a transfer medium to perform a rendering command generating step of analyzing the print data to generate rendering command data, which includes rendering commands regarding rendering objects for each page, storing, in a rendering command data storing unit, the rendering command data, reading, with a plurality of rendering processing units, the rendering command data from the rendering command data storing unit to execute the rendering commands associated with respective rendering blocks to perform rendering, and a control step of performing control such that, upon completing rendering with respect to a first rendering block, a first one of the rendering processing units sends a notice of completion to a second one of the rendering processing units that is performing rendering with respect to a second rendering block, and such that, in response to the notice, the second one of the rendering processing units divides the second rendering block, and requests the first one of the rendering processing units to perform rendering of part of the second rendering block.
- an image forming apparatus and an information processing method are provided that can dynamically allocate a rendering block to a rendering unit without monitoring the rendering unit.
- FIG. 1 is a drawing illustrating the allocation of rendering units in an image forming apparatus according to an embodiment
- FIG. 2 is a drawing showing an example of a print system
- FIG. 3 is a drawing illustrating an example of the hardware configuration of an image forming apparatus
- FIG. 4 is a drawing illustrating the schematic functional configuration of a controller
- FIG. 5 is a drawing showing an example of the functional block configuration of a PDL unit
- FIG. 6 is a drawing illustrating an example of the functional blocks of a rendering processing unit
- FIG. 7 is a flowchart illustrating the procedure performed by the rendering processing unit to divide a rendering block
- FIG. 8 is a flowchart illustrating the procedure performed by a rendering-block dividing unit to divide a rendering block
- FIGS. 9A and 9B are drawings schematically illustrating the division of a rendering block
- FIGS. 10A and 10B are drawings illustrating the division of a rendering result memory
- FIG. 11 is a drawing schematically illustrating rendering commands executed after division of a rendering block
- FIG. 12 is a drawing illustrating an example of relationships between a rendering block and objects
- FIG. 13 is a flowchart illustrating the procedure performed by the rendering unit to determine whether division is necessary
- FIGS. 14A and 14B are drawings illustrating an example of a rendering block when there are two rendering processing units
- FIGS. 15A and 15B are drawings illustrating an example of a rendering block when there are three rendering processing units
- FIG. 16 is a drawing illustrating an example of criteria used by the rendering processing unit to select one of rendering blocks B and D that is to be divided;
- FIGS. 17A and 17B is a drawing illustrating an example of division in the case of four rendering blocks when there are three rendering processing units.
- FIGS. 18A and 18B are drawings illustrating an example of division in the case of plural rendering processing units completing rendering almost simultaneously.
- FIG. 1 is a drawing illustrating the allocation of rendering units in an image forming apparatus according to an embodiment.
- the image forming apparatus includes a plurality of rendering units.
- One page is divided in advance into a plurality of rendering blocks such that the rendering units can simultaneously perform rendering in parallel.
- the rendering blocks are allocated to rendering units 1 and 2 .
- rendering blocks A and C may be allocated to the rendering unit 1
- a rendering block B may be allocated to the rendering unit 2 .
- the rendering blocks A through C are arranged in this order from the upper end of the page to the lower end of the page.
- the rendering unit 1 starts rendering in the rendering block C after completing rendering in the rendering block A.
- the rendering unit 2 completes rendering in the rendering block B.
- the rendering unit 2 offers the rendering unit 1 help to perform rendering in the rendering block C.
- the rendering unit 1 may use decision criteria for deciding whether division is necessary. Upon ascertaining that division is necessary, the rendering unit 1 divides the rendering block C into rendering blocks C 1 and C 2 , followed by allocating the rendering block C 2 to the rendering unit 2 . The rendering unit 1 resumes rendering in the rendering block C 1 , and the rendering unit 2 starts rendering in the rendering block C 2 . Since the rendering block C is processed by the rendering units 1 and 2 , the rendering time will be shortened.
- the rendering unit 2 offers the rendering unit 1 help to perform rendering.
- the image forming apparatus of the present embodiment can dynamically allocate rendering blocks to rendering units without using a particular mechanism that monitors whether there is a rendering unit in an idle state.
- FIG. 2 is a drawing showing an example of a print system 300 .
- a host PC Personal Computer
- an image forming apparatus 200 are connected to each other via a network.
- an application program running on the host PC 150 requests a graphic control unit (e.g., GDI) of the OS to print document data, for example.
- the graphic control unit uses an API (i.e., application program interface: basic function) independent of applications to generate rendering instructions (i.e., intermediate file) for rendering document data.
- API i.e., application program interface: basic function
- the graphic control unit thereafter calls up a printer driver for generating PDL data corresponding to the image forming apparatus 200 .
- a DDI i.e., device driver interface
- the printer driver converts the intermediate file into PDL data interpretable by the printer, and transmits the PDL data to the image forming apparatus 200 .
- PDL data formats for PDL data include those defined by PostScript, PCL, RPCS, PDF (Portable Document Format), and XPS, for example.
- the format of PDL data needs to be interpretable by the image forming apparatus 200 .
- the image forming apparatus 200 analyzes the PDL data to generate a display list (which is sometimes referred to as intermediate data), followed by performing rendering and the like to print data. It may suffice for the image forming apparatus 200 to have a printer function.
- the image forming apparatus 200 may also be provided with a copier function, scanner function, a transmission (FAX, email, and folder) function, or the like.
- FIG. 3 is a drawing illustrating an example of the hardware configuration of the image forming apparatus 200 .
- the image forming apparatus 200 includes a controller 100 for controlling the entire image forming apparatus 200 , an engine 160 for printing an image on a print sheet, and a panel device 170 for displaying various statuses and an operation panel for receiving user input.
- the controller 100 includes a CPU 110 , a ROM 120 , a RAM 130 , an NVRAM 140 , a network interface 151 , an engine interface 161 , a panel interface 171 , and an HDD 180 .
- the CPU 110 is a multi-core CPU including a first core 111 , a second core 112 , a third core 113 , and a fourth core 114 .
- the CPU 110 executes instructions included in a program 181 .
- the program 181 may be divided into four parts, which are provided for the first core 111 , the second core 112 , the third core 113 , and the fourth core 114 , respectively.
- the four cores may execute a single program in an overlapping manner.
- the number of cores of the CPU 110 is two or more, and can be five or more.
- a plurality of CPUs independent of each other, which may be referred to as multi-processors or multi-CPUs, may be provided in place of the multi-core structure.
- the ROM 120 stores a boot program, initial setting values, etc.
- the RAM 130 is used as a storage that stores a display list generated by the controller 100 , and is also used as a work memory required by software to run.
- the NVRAM 140 is a nonvolatile memory that stores print conditions and the like that are set in the image forming apparatus 200 .
- the network interface 151 exchanges data with the host PC 150 , which is connected through the network.
- the engine interface 161 issues a print instruction and the like to control the engine 160 .
- the engine 160 includes at least a plotter engine that generates an image.
- the plotter engine includes photoconductive drums arranged in tandem.
- the plotter engine modulates laser beams based on image data obtained by rendering PDL data received from the host PC 150 to scan the photoconductive drums with the laser beams, thereby creating latent images.
- the latent images are developed by attaching toner. These toner images for one page are transferred to a print sheet by heat and pressure.
- the plotter engine may employ an inkjet system.
- the engine 160 may include a scanner engine and a FAX engine.
- the panel interface 171 controls input/output with respect to the panel device 170 .
- the HDD 180 stores data and the program 181 .
- FIG. 4 is a drawing illustrating the schematic functional configuration of the controller 100 .
- the functions of the controller 100 mainly include a printer control system 204 and a PDL unit 205 , which are implemented by the CPU 110 executing the program 181 .
- the printer control system 204 requests the PDL unit 205 to perform rendering for the purpose of printing PDL data received through the network interface 151 , thereby obtaining print image data as a result of the rendering from the PDL unit 205 .
- the printer control system 204 controls a print procedure, which includes, for example, requesting the engine interface 161 to print the print image data.
- the PDL unit 205 generates rendered output image data based on the PDL data received from the printer control system 204 .
- the PDL unit 205 may conform to various PDL-data formats such as PostScript, PCL, RPCS, PDF, XPS, etc.
- FIG. 5 is a drawing showing an example of the functional block configuration of the PDL unit 205 .
- the PDL unit 205 includes a PDL parser 12 and a rendering core module 301 .
- the rendering core module 301 includes a rendering module interface 13 , an intermediate data storage unit 14 , an intermediate data memory 15 , and rendering processing units 16 .
- the PDL parser 12 performs syntax analysis responsive to the type of PDL data to generate a display list (i.e., intermediate data).
- the rendering core module 301 performs rendering commands contained in the display list to perform rendering of the display list, thereby generating print image data.
- the rendering module interface 13 is an interface for receiving texts, images, vector graphics, and rendering settings.
- the intermediate data storage unit 14 stores rendering data such as texts, images, and vector graphics and rendering setting information about colors, transparency settings, and the like in the intermediate data memory 15 .
- the display list includes the rendering setting information and the rendering data such as texts, images, and vector graphics.
- the intermediate data memory 15 may be implemented by the RAM 130 , the HDD 180 , or the like.
- the rendering processing units 16 perform rendering of output image data based on the display list on a rendering-block-by-rendering-block basis.
- the three rendering processing units 16 may have the same function, or may have different functions such as those having respective advantages in rendering processing (e.g., high-speed rendering).
- the number of rendering processing units 16 is three in this example, but may be any number that is more than one. It should be noted that rendering blocks are the areas into which one page is divided at constant intervals or predetermined varying intervals in the longitudinal direction of the page. Information about the rendering blocks are known to the rendering processing units 16 .
- one of the four cores is assigned to the PDL parser 12 , and the remaining three cores are assigned to the rendering processing units 16 , respectively.
- the rendering processing units 16 may be referred to as rendering processing units 1 through 3 when these units are discriminated from each other.
- FIG. 6 is a drawing illustrating an example of the functional blocks of a rendering processing unit 16 .
- Each rendering processing unit 16 includes a rendering unit 302 for performing rendering and checking whether there is a need to further divide a rendering block, and further includes a rendering-block dividing unit 303 for dividing a rendering block.
- the rendering unit 302 performs rendering of output image data based on a display list. Further, the rendering unit 302 checks whether a rendering block needs to be divided. The check as to whether there is a need to divide a rendering block will be described later in detail. In short, this check is performed based on the area size of a rendering block, the number of remaining rendering commands that have yet to be processed, the processing time responsive to the predetermined capability of each rendering processing unit 16 (e.g., the degrees of capability and function), etc. The check criteria may differ depending on the rendering processing unit 16 .
- the rendering-block dividing unit 303 divides a rendering block when it is ascertained that division is necessary.
- Each rendering processing unit 16 has the rendering-block dividing unit 303 , so that each rendering processing unit 16 can dynamically divide a rendering block.
- FIG. 7 is a flowchart illustrating the procedure performed by the rendering processing unit 16 to divide a rendering block.
- the rendering processing unit 1 has already completed rendering, and the rendering processing unit 2 is still performing rendering.
- the rendering processing unit 1 is to assist the rendering processing unit 2 , so that the rendering processing unit 2 divides the rendering block.
- the roles of the rendering processing units , 1 and 2 are swapped over, but the procedure remains the same.
- the rendering processing unit 1 Upon being notified by the intermediate data storage unit 14 that a display list is stored in the intermediate data memory 15 , the rendering processing unit 1 starts performing rendering with respect to a rendering block that is originally allocated in advance (S 10 ).
- the rendering processing unit 1 Upon completing the rendering of the originally allocated rendering block, the rendering processing unit 1 checks whether the rendering processing unit 2 is performing rendering (S 20 ). It does not matter how this check is performed. The check may be made by detecting that the load rate of the CPU core assigned to the rendering processing unit 2 exceeds a predetermined value, or by detecting that the rendering-block-specific flag indicative of completion of rendering is not yet set, etc.
- the rendering processing unit 1 determines that there is no further rendering block in the need of rendering, thereby finishing the procedure of FIG. 7 .
- the rendering processing unit 1 determines that another rendering processing unit 16 is performing rendering if the rendering processing unit 1 detects that there is at least one rendering processing unit 16 performing rendering.
- the rendering processing unit 1 inquires of the rendering processing unit 2 whether division is necessary (S 30 ). This inquiry may be performed by utilizing inter-core communication, for example.
- the design of the inter-core communication depends on the design of the CPU 110 . Communication may be achieved through shared memory, by use of a dedicated line (ring) connecting the cores, by use of dedicated mesh lines connecting between the cores, etc.
- the rendering unit 302 of the rendering processing unit 2 checks whether division is necessary (S 110 ). The check as to whether division is necessary will be described later.
- the rendering unit 302 of the rendering processing unit 2 transmits a notice indicative of unnecessity to the rendering processing unit 1 (S 120 ).
- the rendering unit 302 of the rendering processing unit 2 transmits a notice indicative of necessity to the rendering processing unit 1 (S 130 ).
- the rendering processing unit 1 receives the result of inquiry (S 40 ). When receiving an inquiry result indicative of unnecessity of division, the rendering processing unit 1 does not need to perform further rendering, resulting in the procedure of FIG. 7 coming to an end.
- the rendering processing unit 1 Upon receiving an inquiry result indicative of necessity of division, the rendering processing unit 1 interrupts the rendering processing unit 2 (S 50 ). Upon being interrupted, the rendering processing unit 2 starts dividing the rendering block.
- the rendering processing unit 2 Upon being interrupted, the rendering processing unit 2 first starts a suspension process (S 140 ).
- the suspension process is performed as preparation to switch from rendering to division.
- the suspension process includes completing rendering commands being performed by the rendering unit 302 of the rendering processing unit 2 and storing the results of rendering obtained by the rendering commands.
- the rendering unit 302 calls up the rendering-block dividing unit 303 immediately upon completing the rendering commands being performed.
- the rendering-block dividing unit 303 divides the rendering block (S 150 ). The detail of division will be described later.
- the rendering-block dividing unit 303 Upon completing the dividing of the rendering block, the rendering-block dividing unit 303 notifies the rendering processing unit 1 of the completion of division (S 160 ).
- the notice indicative of completion of division may include information about a rendering block allocated to the rendering processing unit 1 .
- the rendering processing unit 1 receives the notice indicative of completion of division (S 60 ). In response, the rendering unit 302 of the rendering processing unit 1 starts performing rendering with respect to the rendering block allocated through the division.
- the rendering processing unit 2 may be interrupted by the rendering processing unit 3 during steps S 140 through S 160 (i.e., during the period from the interruption received by the rendering processing unit 2 to the transmission of the notice of division completion). In such a case, the rendering processing unit 2 detects two interruptions from the interruption controller, thereby dividing the rendering block into three blocks. This type of division corresponds to the simultaneous divisions of a single rendering block.
- FIG. 8 is a flowchart illustrating the procedure performed by the rendering-block dividing unit 303 to divide a rendering block.
- the procedure of FIG. 8 corresponds to the procedure performed by the rendering-block dividing unit 303 of the rendering processing unit 2 illustrated in FIG. 7 . It may be noted that the rendering-block dividing unit 303 of the rendering processing unit 16 receiving interruption performs the same procedure.
- the rendering-block dividing unit 303 divides the rendering block and the intermediate data memory 15 storing rendering results (S 210 ).
- the dividing of the rendering block means dividing the rendering block into two.
- a rendering command in the display list contains information indicative of to which rendering block an output image of this rendering command belongs.
- the rendering unit 302 can thus selectively execute rendering commands belonging to the rendering block that is assigned thereto through block division.
- FIGS. 9A and 9B are drawings schematically illustrating the division of a rendering block.
- a display list is provided in a data format that is processable by the rendering processing units 16 .
- a display list contains a list of various rendering commands and setting information of PDL data. For example, “set foreground color (R, G, B)” is a command for defining a foreground color, “set raster operation (Op Code)” a command for indicating an operation to be performed on an image, and “draw rectangle (x, y, w, h)” a command indicating positions and size of a rectangle to perform rendering of the rectangle.
- Data such as x, y, and so on indicates the position of an object (e.g., a geometric figure drawn by the rendering command), and may be used to identify the rendering block to which a rendering command of interest in a display list belongs.
- the rendering processing units 1 and 2 can identify rendering commands that belong to the rendering block B and rendering commands that belong to the rendering block C in the manner described above.
- the rendering-block dividing unit 303 allocates the divided rendering blocks B and C to the rendering processing units 1 and 2 , respectively. Upon obtaining information about the relevant rendering blocks, the rendering processing units 1 and 2 can select rendering commands that they should execute among the rendering commands of the display list.
- FIG. 10A is a drawing illustrating an example of correspondence between the pre-division rendering block A and addresses in the intermediate data memory 15 .
- the result of rendering in the rendering block A is stored at addresses 0 through 10 in the intermediate data memory 15 .
- the area size of a rendering block and a corresponding size in the intermediate data memory 15 are deterministic. In other words, the size required in the intermediate data memory 15 is determined upon knowing the rendering block. Namely, the correspondence between the rendering block and the addresses in the intermediate data memory 15 are known to the rendering-block dividing unit 303 .
- FIG. 10B is a drawing illustrating relationship between the division of a rendering block and the division of the intermediate data memory 15 .
- the rendering block A is divided into rendering blocks B and C.
- the rendering-block dividing unit 303 determines a size required in the intermediate data memory 15 based on the size of the rendering block B, thereby dividing addresses 0through 10 in the intermediate data memory 15 .
- the size required for the rendering block B in the intermediate data memory 15 is 6, so that the rendering-block dividing unit 303 allocates addresses 0 through 5 in the intermediate data memory 15 to the rendering block B.
- the rendering-block dividing unit 303 allocates addresses 6 through 10 in the intermediate data memory 15 to the rendering block C.
- the rendering-block dividing unit 303 notifies the rendering processing units 1 and 2 of allocated addresses in the intermediate data memory 15 .
- the rendering-block dividing unit 303 allocates rendering blocks to the rendering processing units 1 and 2 as illustrated in FIG. 9B , for example, and allocates addresses in the intermediate data memory 15 as illustrated in FIG. 10B (S 220 ).
- the allocation of rendering blocks may be notified of by specifying a start point and an end point in the longitudinal direction of one page (hereinafter referred to as band positions).
- band positions a start point and an end point in the longitudinal direction of one page.
- the rendering-block dividing unit 303 notifies the rendering processing unit 2 of the band positions of the rendering block B, and notifies the rendering processing unit 1 of the band positions of the rendering block C.
- the rendering units 302 of the rendering processing units 1 and 2 resume executing rendering commands of the display list with respect to the allocated rendering blocks C and B, respectively (S 230 ).
- FIG. 11 is a drawing schematically illustrating rendering commands executed after division of a rendering block. While the rendering processing unit 2 is executing a rendering command CM 2 , the rendering processing unit 1 may interrupt the rendering processing unit 2 . In such a case, the rendering unit 302 of the rendering processing unit 2 continues to execute the rendering command CM 2 as part of the suspension process. The rendering commands for which execution is resumed are thus a rendering command CM 3 and onwards.
- the rendering processing units 1 and 2 When the rendering processing units 1 and 2 resume executing rendering commands, thus, the rendering processing units 1 and 2 starts execution from the rendering command CM 3 .
- the rendering processing unit 2 checks whether each rendering command of interest belongs to the allocated rendering block B, and executes only the rendering commands belonging to the rendering block B.
- the rendering processing unit 1 checks whether each rendering command of interest belongs to the allocated rendering block C, and executes only the rendering commands belonging to the rendering block C. In this manner, a rendering block is actually divided.
- the rendering processing units 1 through 3 may have capabilities as follows.
- Rendering Processing Unit 1 Suitable for Rendering of Graphics
- rendering processing units 1 through 3 are characterized as described above, and that rendering blocks include respective objects as illustrated in FIG. 12 .
- the rendering blocks A through E include letters, and the rendering block E include graphics.
- the rendering processing units 1 through 3 may be assigned to the rendering blocks A through C, respectively.
- the rendering processing unit 1 starts performing rendering of the rendering block D upon completing rendering of the rendering block A.
- the rendering processing unit 2 starts performing rendering of the rendering block E upon completing rendering of the rendering block B.
- the rendering processing unit 2 is not suitable for rendering of such objects. A lengthy time would thus be required.
- the rendering block E includes a lot of graphic objects, processing by the rendering unit 302 will be efficient if the rendering processing unit 1 performs rendering of these objects. Such a factor is taken into account when the rendering unit 302 determines whether division is necessary.
- FIG. 13 is a flowchart illustrating the procedure performed by the rendering unit 302 to determine whether division is necessary.
- the rendering unit 302 first checks whether there is an inquiry from another rendering processing unit (e.g., rendering processing unit 1 ) (S 310 ). When there is no inquiry, the procedure of FIG. 13 comes to an end.
- another rendering processing unit e.g., rendering processing unit 1
- the rendering unit 302 reads its own capability and the capability of the rendering unit 302 of the rendering processing unit 1 that has made the inquiry (S 320 ).
- the capabilities are specified by numeric values that indicate the capabilities of the rendering processing units 1 through 3 (or the rendering units thereof) on an object-specific basis.
- the capabilities of the rendering units 302 are reported to the rendering processing units 16 from the printer control system 204 at any timing prior to the generation of a display list.
- the rendering unit 302 estimates a processing time TA by weighting, with its own capability, unprocessed rendering commands belonging to the rendering block that is being processed, and also estimates a processing time TB by weighting, with the capability of the rendering processing unit 1 that has made the inquiry, the unprocessed rendering commands belonging to the rendering block that is being processed.
- the processing time TB of the rendering processing unit 1 may be estimated by counting the rendering commands directed to letters and images as having time counts required to process letters at average processing speed and also by counting the rendering commands directed to graphics as having time counts required to process graphics at high processing speed.
- the processing time A can also be estimated by applying the same or similar calculation to the rendering processing unit 2 .
- the division of the rendering block is expected to reduce the processing time by more than 50%. If the processing time TB is twice as long as the processing time TA, for example, the division of the rendering block into equal halves has little effect in reducing the processing time. Accordingly, division may not be effective if TB ⁇ 2TA.
- the rendering unit 302 determines whether division is necessary in the manner as described above (S 340 ). If division is effective (Yes in S 340 ), the rendering unit 302 determines that division is necessary (S 350 ). If division is not effective (No in S 340 ), the rendering unit 302 determines that division is not necessary (S 360 ).
- the rendering unit 302 sends a notice indicative of the result of determination to the rendering processing unit 1 via inter-core communication. With this arrangement, the rendering processing unit 1 having completed rendering can determine whether to perform interruption.
- the rendering processing unit 2 When the rendering processing unit 2 receives an inquiry, the number of unprocessed rendering commands belonging to the rendering block that is being processed by the rendering processing unit 2 may be sufficiently small. In such a case, there is little need for division. Determination not to perform division is thus made regardless of processing time in such an event.
- the number of unprocessed rendering commands belonging to the rendering block that is being processed by the rendering processing unit 2 may be larger than a predetermined number. Even in such a case, there is little need for division if the area size of the rendering block is sufficiently small. Determination not to perform division is thus made regardless of processing time in such an event.
- the conditions under which the determination to perform division is preferable satisfy all of the following conditions. It should be noted that some part of the conditions may only be used.
- the number of unprocessed rendering commands belonging in the rendering block that is being processed by the rendering processing unit 2 receiving an inquiry is more than a predetermined number.
- the area size of the rendering block that is being processed by the rendering processing unit 2 receiving an inquiry is more than a predetermined threshold.
- FIG. 14A is a drawing illustrating an example of a rendering block when there are two rendering processing units 16 .
- the rendering block A is allocated to the rendering processing unit 1 , the rendering block B allocated to the rendering processing unit 2 , and the rendering block C allocated to the rendering processing unit 1 .
- the rendering of the rendering block A by the rendering processing unit 1 or the rendering of the rendering block B by the rendering processing unit 2 comes to an end ahead of the other.
- the rendering processing unit 1 starts performing rendering of the rendering block C.
- the rendering processing unit 2 inquires of the rendering processing unit 1 whether division is necessary.
- the rendering processing unit 2 inquires of the rendering processing unit 1 whether division is necessary. In this case, the rendering processing unit 1 has part of the rendering block A and all of the rendering block C left to be processed. If the number of remaining rendering commands in the rendering block A is small, the rendering processing unit 1 may determine that no division is necessary for the rendering block A. However, the rendering processing unit 1 may determine that division is necessary for the rendering block C.
- the rendering-block dividing unit 303 of the rendering processing unit 1 will divide the rendering block after the rendering unit 302 of the rendering processing unit 1 checks whether division is necessary.
- FIG. 14B is a drawing schematically illustrating an example of dividing the rendering block C into equal halves.
- the rendering unit 302 of the rendering processing unit 1 determines that division is necessary.
- the rendering-block dividing unit 303 divides the rendering block C into rendering blocks C 1 and C 2 having the same size.
- Such division makes it possible to distribute processing loads regardless of the number of rendering blocks (three in this example) or the number of rendering processing units (two in this example). Further, there is no need for a mechanism for monitoring the rendering processing units 16 .
- division may be made at varying intervals depending on the capabilities of the rendering processing units 16 , for example.
- the rendering block may be divided in proportion to the capabilities of the rendering processing units 16 , or may be divided such that the divided rendering blocks predominantly contain rendering commands that can be processed at high speed.
- an average number of commands executed per clock cycle ⁇ frequency may be known.
- the rendering-block dividing unit 303 may divide the rendering block in proportion to such indicated capabilities (e.g., clock frequencies).
- the sizes of divided rendering blocks may be determined based on the processing time lengths estimated for respective capabilities.
- the processing time TB of the rendering processing unit 1 taking into account the capability thereof may be twice as long as the processing time TA of the rendering processing unit 2 taking into account the capability thereof.
- the processing time length of the rendering unit 302 receiving an inquiry and the processing time length of the rendering unit 302 making the inquiry become almost equal to each other if the rendering block is divided by a ratio of 2 to 1.
- the rendering processing time can be reduced with respect to the rendering blocks as a whole.
- the processing time is reduced to 0.67% of the processing time required to process the original rendering block with the rendering unit 302 .
- the rendering units 302 may multiply the size of the rendering block by a ratio of capabilities thereby to determine the sizes of the divided rendering blocks.
- the rendering block may be divided such that the divided rendering blocks predominantly contain rendering commands that can be processed at high speed.
- the rendering-block dividing unit 303 may divide the rendering block into quarters, and calculates the processing time lengths of the rendering processing units 1 and 2 by taking into account their capabilities for each quarter. Allocation of the quarters of the rendering block to the rendering processing unit 1 or 2 is then determined such that the total processing time becomes the shortest.
- FIG. 15A is a drawing illustrating an example of a rendering block when there are three rendering processing units.
- the rendering block A is allocated to the rendering processing unit 1 , the rendering block B allocated to the rendering processing unit 2 , and the rendering block C allocated to the rendering processing unit 3 .
- the three rendering processing units 1 through 3 performs rendering of three respective rendering blocks, one of the rendering processing units 1 through 3 completes rendering first. Since the procedure performed upon such completion is the same for any one of the rendering processing units 1 through 3 , an example in which the rendering processing unit 1 completes rendering in the rendering block A first is used in FIG. 15A .
- the rendering processing unit 1 there are two other rendering processing units that are performing rendering. That is, when there are three or more rendering processing units in total, there are two or more rendering blocks being processed at the time the rendering processing unit 1 completes its rendering. In such a situation, the rendering processing unit 1 needs to use some criteria to select one of the rendering blocks B and D that is to be divided.
- FIG. 16 is a drawing illustrating an example of the criteria used by the rendering processing unit 1 to select one of the rendering blocks B and D that is to be divided.
- FIG. 16 illustrates the progress of rendering commands processed by the rendering processing units 1 through 3 .
- the rendering processing unit 2 is processing the rendering command CM 3
- the rendering processing unit 3 is processing the rendering command CM 2 .
- the rendering processing unit 1 uses inter-core communication to inquire of the rendering processing units 2 and 3 the positions of rendering commands that are being processed. The rendering processing unit 1 then selects one of the rendering processing units 2 and 3 that has a larger number (or the largest number) of rendering commands left to be processed, and this selected one serves as the rendering processing unit 16 to which an inquiry is made to check whether division is necessary. The rendering processing unit 1 then inquires of the selected one of the rendering processing units 2 and whether it is necessary to divide the rendering block.
- the rendering processing unit 1 may randomly select one of the rendering processing units 2 and 3 .
- the number of unprocessed rendering commands left to be processed is used to select the rendering processing unit to which a division inquiry is made.
- the lengths of processing time of remaining rendering commands may be estimated based on the capabilities, followed by comparing the processing time lengths to select one of the rendering processing units 2 and 3 of which a necessity of division will be inquired.
- one of the rendering processing units 2 and 3 to which a rendering block is allocated to achieve a shorter processing time at the time of processing may be selected.
- the rendering processing unit 1 inquires of the rendering processing unit 3 whether division is necessary, so that the rendering-block dividing unit 303 of the rendering processing unit 3 divides the rendering block. It may be noted that, if the rendering processing unit 2 has a larger number of unprocessed rendering commands than the rendering processing unit 3 , the rendering block B of the rendering processing unit 2 is divided.
- FIG. 15B is a drawing schematically illustrating an example of dividing the rendering block C into equal halves.
- the rendering unit 302 of the rendering processing unit 3 determines that division is necessary.
- the rendering-block dividing unit 303 divides the rendering block C into rendering blocks C 1 and C 2 having the same size.
- division may be made at varying intervals depending on the capabilities of the rendering processing units 1 and 3 as described in connection with FIGS. 14B .
- FIG. 17A is a drawing illustrating an example of division in the case of four rendering blocks when there are three rendering processing units.
- the rendering block A is allocated to the rendering processing unit 1 , the rendering block B allocated to the rendering processing unit 2 , the rendering block C allocated to the rendering processing unit 3 , and the rendering block D allocated to the rendering processing unit 1 .
- the three rendering processing units 1 through 3 perform rendering of four rendering blocks, it is estimated that the processing time of the rendering processing unit 1 processing the broadest total of rendering blocks will be the longest.
- the rendering processing units 1 and 2 have ongoing rendering processes when viewed from the rendering processing unit 3 .
- the rendering processing unit 3 selects one of the rendering processing units 1 and 2 according to the criteria described in connection with FIG. 16 , followed by inquiring of the selected one whether division is necessary. In this example, an inquiry about the necessity of division will be made of the rendering processing unit 2 that has a rendering block of a larger area size allocated thereto.
- FIG. 17B is a drawing schematically illustrating an example of dividing the rendering block B into equal halves.
- the rendering unit 302 of the rendering processing unit 2 determines that division is necessary.
- the rendering-block dividing unit 303 divides the rendering block B into rendering blocks B 1 and B 2 having the same size.
- any given one of the rendering processing units 1 through 3 can divide its rendering block such that the processing time of rendering of one page is shortened.
- FIG. 18A is a drawing schematically illustrating a situation in which the rendering processing units 1 and 3 complete rendering almost simultaneously, and only the rendering processing unit 2 is performing rendering.
- the rendering processing units 1 and 3 may complete rendering of the allocated rendering blocks, respectively. In such a case, all of the rendering processing units 1 through 3 may together perform rendering of the remaining rendering block thereby to shorten the rendering processing time.
- Both of the rendering processing units 1 and 3 inquire of the rendering processing unit 2 whether division is necessary. With this arrangement, the rendering processing unit 2 detects that the rendering block B needs to be divided into three.
- FIG. 18B is a drawing schematically illustrating an example of dividing the rendering block B into three equal parts.
- the rendering unit 302 of the rendering processing unit 2 determines that division is necessary in response to the inquiries sent from the rendering processing units 1 and 2 .
- the rendering-block dividing unit 303 of the rendering processing unit 2 divides the rendering block B into three parts. After this, the rendering processing units 1 , 2 , and 3 resume performing rendering of the rendering blocks B 1 , B 2 , and B 3 .
- rendering blocks may be allocated such that the processing time lengths become substantially equal to each other. In this manner, uniform division may be achieved.
- the image forming apparatus of the present embodiment dynamically allocates rendering blocks to a plurality of rendering units. Further, there is no need for a special mechanism for monitoring the rendering units.
Abstract
Description
- 1. Field of the Invention
- The disclosures herein generally relate to image forming apparatuses for rendering print data, and particularly relate to an image forming apparatus and an image processing method for which a rendering range can be modified.
- 2. Description of the Related Art
- Conventional embedded devices often employ a single core CPU. Due to increasing use of multi-core CPUs such as dual-core CPUs or quad-core CPUs for general-purpose personal computers, there are also an increasing number of embedded devices which employ multi-core CPUs. Study has been underway to adopt a multi-core structure in a printer.
- A printer adopting a multi-core structure can perform a plurality of processes in parallel, thereby increasing processing speed. Printers generally perform two processes, i.e., a DL generation process for generating intermediate date (i.e., display list) from PDL (page description language) data and a rendering process for rendering the intermediate data. A plurality of cores may perform rendering in parallel to increase the speed of printing process (see Japanese Patent Application Publication No. 2006-092125, for example).
- The above-noted patent document discloses an image processing apparatus in which a plurality of image processing processors, although different from a multi-core structure, perform rendering within respective rendering blocks which together constitute one page.
- In the image processing apparatus disclosed in the above-noted patent document, however, a block division unit monitors the operating status of each image processing processor. Upon finding an image processing processor in an idle state, the block division unit allocates a rendering block to this image processing processor. This arrangement gives rise to a problem in that the load statuses of processes need to be constantly monitored.
- Accordingly, it may be desirable to provide an image forming apparatus, an information processing method, and a non-transitory recording medium having a program embodied therein that can dynamically allocate a rendering block to a rendering unit without monitoring the rendering unit.
- It is a general object of at least one embodiment of the present invention to provide an image forming apparatus, an information processing method, and a non-transitory recording medium having a program embodied therein that substantially eliminate one or more problems caused by the limitations and disadvantages of the related art.
- In one embodiment, an image forming apparatus for printing an image of print data on a transfer medium includes a rendering command generating unit to analyze the print data to generate rendering command data, which includes rendering commands regarding rendering objects for each page, a rendering command data storing unit to store the rendering command data, and a plurality of rendering processing units to read the rendering command data from the rendering command data storing unit and to execute the rendering commands associated with respective rendering blocks to perform rendering, wherein, upon completing rendering with respect to a first rendering block, a first one of the rendering processing units sends a notice of completion to a second one of the rendering processing units that is performing rendering with respect to a second rendering block, and wherein, in response to the notice, the second one of the rendering processing units divides the second rendering block, and requests the first one of the rendering processing units to perform rendering of part of the second rendering block.
- In one embodiment, a method for processing an image in an image forming apparatus for printing an image of print data on a transfer medium includes analyzing, with a rendering command generating unit, the print data to generate rendering command data, which includes rendering commands regarding rendering objects for each page, storing, in a rendering command data storing unit, the rendering command data, reading, with a plurality of rendering processing units, the rendering command data from the rendering command data storing unit to execute the rendering commands associated with respective rendering blocks to perform rendering, sending, from a first one of the rendering processing units upon completing rendering of a first rendering block, a notice of completion to a second one of the rendering processing units that is performing rendering with respect to a second rendering block, and dividing, with the second one of the rendering processing units responding to the notice, the second rendering block to request the first one of the rendering processing units to perform rendering of part of the second rendering block.
- In one embodiment, a non-transitory recording medium has a program embodied therein for causing an image forming apparatus for printing an image of print data on a transfer medium to perform a rendering command generating step of analyzing the print data to generate rendering command data, which includes rendering commands regarding rendering objects for each page, storing, in a rendering command data storing unit, the rendering command data, reading, with a plurality of rendering processing units, the rendering command data from the rendering command data storing unit to execute the rendering commands associated with respective rendering blocks to perform rendering, and a control step of performing control such that, upon completing rendering with respect to a first rendering block, a first one of the rendering processing units sends a notice of completion to a second one of the rendering processing units that is performing rendering with respect to a second rendering block, and such that, in response to the notice, the second one of the rendering processing units divides the second rendering block, and requests the first one of the rendering processing units to perform rendering of part of the second rendering block.
- According to at least one embodiment, an image forming apparatus and an information processing method are provided that can dynamically allocate a rendering block to a rendering unit without monitoring the rendering unit.
- Other objects and further features of embodiments will be apparent from the following detailed description when read in conjunction with the accompanying drawings, in which:
-
FIG. 1 is a drawing illustrating the allocation of rendering units in an image forming apparatus according to an embodiment; -
FIG. 2 is a drawing showing an example of a print system; -
FIG. 3 is a drawing illustrating an example of the hardware configuration of an image forming apparatus; -
FIG. 4 is a drawing illustrating the schematic functional configuration of a controller; -
FIG. 5 is a drawing showing an example of the functional block configuration of a PDL unit; -
FIG. 6 is a drawing illustrating an example of the functional blocks of a rendering processing unit; -
FIG. 7 is a flowchart illustrating the procedure performed by the rendering processing unit to divide a rendering block; -
FIG. 8 is a flowchart illustrating the procedure performed by a rendering-block dividing unit to divide a rendering block; -
FIGS. 9A and 9B are drawings schematically illustrating the division of a rendering block; -
FIGS. 10A and 10B are drawings illustrating the division of a rendering result memory; -
FIG. 11 is a drawing schematically illustrating rendering commands executed after division of a rendering block; -
FIG. 12 is a drawing illustrating an example of relationships between a rendering block and objects; -
FIG. 13 is a flowchart illustrating the procedure performed by the rendering unit to determine whether division is necessary; -
FIGS. 14A and 14B are drawings illustrating an example of a rendering block when there are two rendering processing units; -
FIGS. 15A and 15B are drawings illustrating an example of a rendering block when there are three rendering processing units; -
FIG. 16 is a drawing illustrating an example of criteria used by the rendering processing unit to select one of rendering blocks B and D that is to be divided; -
FIGS. 17A and 17B is a drawing illustrating an example of division in the case of four rendering blocks when there are three rendering processing units; and -
FIGS. 18A and 18B are drawings illustrating an example of division in the case of plural rendering processing units completing rendering almost simultaneously. - In the following, embodiments of the present invention will be described with reference to the accompanying drawings.
-
FIG. 1 is a drawing illustrating the allocation of rendering units in an image forming apparatus according to an embodiment. The image forming apparatus includes a plurality of rendering units. One page is divided in advance into a plurality of rendering blocks such that the rendering units can simultaneously perform rendering in parallel. The rendering blocks are allocated to renderingunits rendering unit 1, and a rendering block B may be allocated to therendering unit 2. The rendering blocks A through C are arranged in this order from the upper end of the page to the lower end of the page. - The
rendering unit 1 starts rendering in the rendering block C after completing rendering in the rendering block A. At around the same time, therendering unit 2 completes rendering in the rendering block B. In the image forming apparatus of the present embodiment, therendering unit 2 offers therendering unit 1 help to perform rendering in the rendering block C. - The rendering
unit 1 may use decision criteria for deciding whether division is necessary. Upon ascertaining that division is necessary, therendering unit 1 divides the rendering block C into rendering blocks C1 and C2, followed by allocating the rendering block C2 to therendering unit 2. The renderingunit 1 resumes rendering in the rendering block C1, and therendering unit 2 starts rendering in the rendering block C2. Since the rendering block C is processed by therendering units - As described above, the
rendering unit 2 offers therendering unit 1 help to perform rendering. With such an arrangement, the image forming apparatus of the present embodiment can dynamically allocate rendering blocks to rendering units without using a particular mechanism that monitors whether there is a rendering unit in an idle state. - <Configuration>
-
FIG. 2 is a drawing showing an example of aprint system 300. In theprint system 300, a host PC (Personal Computer) 150 and animage forming apparatus 200 are connected to each other via a network. - In response to a user operation, an application program running on the
host PC 150 requests a graphic control unit (e.g., GDI) of the OS to print document data, for example. The graphic control unit uses an API (i.e., application program interface: basic function) independent of applications to generate rendering instructions (i.e., intermediate file) for rendering document data. - The graphic control unit thereafter calls up a printer driver for generating PDL data corresponding to the
image forming apparatus 200. A DDI (i.e., device driver interface) between the graphic control unit and the printer driver is defined in advance. The printer driver converts the intermediate file into PDL data interpretable by the printer, and transmits the PDL data to theimage forming apparatus 200. - Formats for PDL data include those defined by PostScript, PCL, RPCS, PDF (Portable Document Format), and XPS, for example. The format of PDL data needs to be interpretable by the
image forming apparatus 200. - The
image forming apparatus 200 analyzes the PDL data to generate a display list (which is sometimes referred to as intermediate data), followed by performing rendering and the like to print data. It may suffice for theimage forming apparatus 200 to have a printer function. Theimage forming apparatus 200 may also be provided with a copier function, scanner function, a transmission (FAX, email, and folder) function, or the like. -
FIG. 3 is a drawing illustrating an example of the hardware configuration of theimage forming apparatus 200. Theimage forming apparatus 200 includes acontroller 100 for controlling the entireimage forming apparatus 200, anengine 160 for printing an image on a print sheet, and apanel device 170 for displaying various statuses and an operation panel for receiving user input. - The
controller 100 includes aCPU 110, aROM 120, aRAM 130, anNVRAM 140, anetwork interface 151, anengine interface 161, apanel interface 171, and anHDD 180. - The
CPU 110 is a multi-core CPU including afirst core 111, asecond core 112, athird core 113, and afourth core 114. TheCPU 110 executes instructions included in aprogram 181. Theprogram 181 may be divided into four parts, which are provided for thefirst core 111, thesecond core 112, thethird core 113, and thefourth core 114, respectively. Alternatively, the four cores may execute a single program in an overlapping manner. The number of cores of theCPU 110 is two or more, and can be five or more. A plurality of CPUs independent of each other, which may be referred to as multi-processors or multi-CPUs, may be provided in place of the multi-core structure. - The
ROM 120 stores a boot program, initial setting values, etc. TheRAM 130 is used as a storage that stores a display list generated by thecontroller 100, and is also used as a work memory required by software to run. TheNVRAM 140 is a nonvolatile memory that stores print conditions and the like that are set in theimage forming apparatus 200. Thenetwork interface 151 exchanges data with thehost PC 150, which is connected through the network. Theengine interface 161 issues a print instruction and the like to control theengine 160. - The
engine 160 includes at least a plotter engine that generates an image. The plotter engine includes photoconductive drums arranged in tandem. The plotter engine modulates laser beams based on image data obtained by rendering PDL data received from thehost PC 150 to scan the photoconductive drums with the laser beams, thereby creating latent images. The latent images are developed by attaching toner. These toner images for one page are transferred to a print sheet by heat and pressure. The plotter engine may employ an inkjet system. Theengine 160 may include a scanner engine and a FAX engine. - The
panel interface 171 controls input/output with respect to thepanel device 170. TheHDD 180 stores data and theprogram 181. -
FIG. 4 is a drawing illustrating the schematic functional configuration of thecontroller 100. InFIG. 4 , the same elements as those ofFIG. 3 are referred to by the same numerals, and a description thereof will be omitted. The functions of thecontroller 100 mainly include aprinter control system 204 and aPDL unit 205, which are implemented by theCPU 110 executing theprogram 181. - The
printer control system 204 requests thePDL unit 205 to perform rendering for the purpose of printing PDL data received through thenetwork interface 151, thereby obtaining print image data as a result of the rendering from thePDL unit 205. After this, theprinter control system 204 controls a print procedure, which includes, for example, requesting theengine interface 161 to print the print image data. - The
PDL unit 205 generates rendered output image data based on the PDL data received from theprinter control system 204. ThePDL unit 205 may conform to various PDL-data formats such as PostScript, PCL, RPCS, PDF, XPS, etc. -
FIG. 5 is a drawing showing an example of the functional block configuration of thePDL unit 205. ThePDL unit 205 includes aPDL parser 12 and arendering core module 301. Therendering core module 301 includes arendering module interface 13, an intermediatedata storage unit 14, anintermediate data memory 15, andrendering processing units 16. - The
PDL parser 12 performs syntax analysis responsive to the type of PDL data to generate a display list (i.e., intermediate data). Therendering core module 301 performs rendering commands contained in the display list to perform rendering of the display list, thereby generating print image data. - The
rendering module interface 13 is an interface for receiving texts, images, vector graphics, and rendering settings. The intermediatedata storage unit 14 stores rendering data such as texts, images, and vector graphics and rendering setting information about colors, transparency settings, and the like in theintermediate data memory 15. The display list includes the rendering setting information and the rendering data such as texts, images, and vector graphics. Theintermediate data memory 15 may be implemented by theRAM 130, theHDD 180, or the like. - The
rendering processing units 16 perform rendering of output image data based on the display list on a rendering-block-by-rendering-block basis. The threerendering processing units 16 may have the same function, or may have different functions such as those having respective advantages in rendering processing (e.g., high-speed rendering). The number ofrendering processing units 16 is three in this example, but may be any number that is more than one. It should be noted that rendering blocks are the areas into which one page is divided at constant intervals or predetermined varying intervals in the longitudinal direction of the page. Information about the rendering blocks are known to therendering processing units 16. - The reason why the number of
rendering processing units 16 in this example is three is because the number of cores of theCPU 110 is taken into consideration. In the present embodiment, one of the four cores is assigned to thePDL parser 12, and the remaining three cores are assigned to therendering processing units 16, respectively. In the following, therendering processing units 16 may be referred to asrendering processing units 1 through 3 when these units are discriminated from each other. -
FIG. 6 is a drawing illustrating an example of the functional blocks of arendering processing unit 16. Eachrendering processing unit 16 includes arendering unit 302 for performing rendering and checking whether there is a need to further divide a rendering block, and further includes a rendering-block dividing unit 303 for dividing a rendering block. - The
rendering unit 302 performs rendering of output image data based on a display list. Further, therendering unit 302 checks whether a rendering block needs to be divided. The check as to whether there is a need to divide a rendering block will be described later in detail. In short, this check is performed based on the area size of a rendering block, the number of remaining rendering commands that have yet to be processed, the processing time responsive to the predetermined capability of each rendering processing unit 16 (e.g., the degrees of capability and function), etc. The check criteria may differ depending on therendering processing unit 16. - The rendering-
block dividing unit 303 divides a rendering block when it is ascertained that division is necessary. Eachrendering processing unit 16 has the rendering-block dividing unit 303, so that eachrendering processing unit 16 can dynamically divide a rendering block. - <Procedure for Division>
-
FIG. 7 is a flowchart illustrating the procedure performed by therendering processing unit 16 to divide a rendering block. InFIG. 7 , it is assumed that therendering processing unit 1 has already completed rendering, and therendering processing unit 2 is still performing rendering. Therendering processing unit 1 is to assist therendering processing unit 2, so that therendering processing unit 2 divides the rendering block. In the case where therendering processing unit 2 has already completed rendering, and therendering processing unit 1 is still performing rendering, the roles of the rendering processing units ,1 and 2 are swapped over, but the procedure remains the same. - Upon being notified by the intermediate
data storage unit 14 that a display list is stored in theintermediate data memory 15, therendering processing unit 1 starts performing rendering with respect to a rendering block that is originally allocated in advance (S10). - Upon completing the rendering of the originally allocated rendering block, the
rendering processing unit 1 checks whether therendering processing unit 2 is performing rendering (S20). It does not matter how this check is performed. The check may be made by detecting that the load rate of the CPU core assigned to therendering processing unit 2 exceeds a predetermined value, or by detecting that the rendering-block-specific flag indicative of completion of rendering is not yet set, etc. - When the
rendering processing unit 2 is not performing rendering (No in S20), therendering processing unit 1 determines that there is no further rendering block in the need of rendering, thereby finishing the procedure ofFIG. 7 . When there are three or more rendering processing units, therendering processing unit 1 determines that anotherrendering processing unit 16 is performing rendering if therendering processing unit 1 detects that there is at least onerendering processing unit 16 performing rendering. - When the
rendering processing unit 2 is performing rendering (Yes in S20), therendering processing unit 1 inquires of therendering processing unit 2 whether division is necessary (S30). This inquiry may be performed by utilizing inter-core communication, for example. The design of the inter-core communication depends on the design of theCPU 110. Communication may be achieved through shared memory, by use of a dedicated line (ring) connecting the cores, by use of dedicated mesh lines connecting between the cores, etc. - Upon receiving an inquiry, the
rendering unit 302 of therendering processing unit 2 checks whether division is necessary (S110). The check as to whether division is necessary will be described later. - In the case of division being unnecessary (No in S110), the
rendering unit 302 of therendering processing unit 2 transmits a notice indicative of unnecessity to the rendering processing unit 1 (S120). - In the case of division being necessary (Yes in S110), the
rendering unit 302 of therendering processing unit 2 transmits a notice indicative of necessity to the rendering processing unit 1 (S130). - The
rendering processing unit 1 receives the result of inquiry (S40). When receiving an inquiry result indicative of unnecessity of division, therendering processing unit 1 does not need to perform further rendering, resulting in the procedure ofFIG. 7 coming to an end. - Upon receiving an inquiry result indicative of necessity of division, the
rendering processing unit 1 interrupts the rendering processing unit 2 (S50). Upon being interrupted, therendering processing unit 2 starts dividing the rendering block. - Upon being interrupted, the
rendering processing unit 2 first starts a suspension process (S140). The suspension process is performed as preparation to switch from rendering to division. The suspension process includes completing rendering commands being performed by therendering unit 302 of therendering processing unit 2 and storing the results of rendering obtained by the rendering commands. Therendering unit 302 calls up the rendering-block dividing unit 303 immediately upon completing the rendering commands being performed. - Upon being called, the rendering-
block dividing unit 303 divides the rendering block (S150). The detail of division will be described later. - Upon completing the dividing of the rendering block, the rendering-
block dividing unit 303 notifies therendering processing unit 1 of the completion of division (S160). The notice indicative of completion of division may include information about a rendering block allocated to therendering processing unit 1. - The
rendering processing unit 1 receives the notice indicative of completion of division (S60). In response, therendering unit 302 of therendering processing unit 1 starts performing rendering with respect to the rendering block allocated through the division. - The
rendering processing unit 2 may be interrupted by therendering processing unit 3 during steps S140 through S160 (i.e., during the period from the interruption received by therendering processing unit 2 to the transmission of the notice of division completion). In such a case, therendering processing unit 2 detects two interruptions from the interruption controller, thereby dividing the rendering block into three blocks. This type of division corresponds to the simultaneous divisions of a single rendering block. -
FIG. 8 is a flowchart illustrating the procedure performed by the rendering-block dividing unit 303 to divide a rendering block. The procedure ofFIG. 8 corresponds to the procedure performed by the rendering-block dividing unit 303 of therendering processing unit 2 illustrated inFIG. 7 . It may be noted that the rendering-block dividing unit 303 of therendering processing unit 16 receiving interruption performs the same procedure. - The rendering-
block dividing unit 303 divides the rendering block and theintermediate data memory 15 storing rendering results (S210). The dividing of the rendering block means dividing the rendering block into two. A rendering command in the display list contains information indicative of to which rendering block an output image of this rendering command belongs. Therendering unit 302 can thus selectively execute rendering commands belonging to the rendering block that is assigned thereto through block division. -
FIGS. 9A and 9B are drawings schematically illustrating the division of a rendering block. A display list is provided in a data format that is processable by therendering processing units 16. A display list contains a list of various rendering commands and setting information of PDL data. For example, “set foreground color (R, G, B)” is a command for defining a foreground color, “set raster operation (Op Code)” a command for indicating an operation to be performed on an image, and “draw rectangle (x, y, w, h)” a command indicating positions and size of a rectangle to perform rendering of the rectangle. - Data such as x, y, and so on indicates the position of an object (e.g., a geometric figure drawn by the rendering command), and may be used to identify the rendering block to which a rendering command of interest in a display list belongs.
- When the rendering-
block dividing unit 303 divides a rendering block A into rendering blocks B and C, therendering processing units - The rendering-
block dividing unit 303 allocates the divided rendering blocks B and C to therendering processing units rendering processing units - In the following, the division of the
intermediate data memory 15 will be described by referring toFIGS. 10A and 10B .FIG. 10A is a drawing illustrating an example of correspondence between the pre-division rendering block A and addresses in theintermediate data memory 15. InFIG. 10A , the result of rendering in the rendering block A is stored ataddresses 0 through 10 in theintermediate data memory 15. The area size of a rendering block and a corresponding size in theintermediate data memory 15 are deterministic. In other words, the size required in theintermediate data memory 15 is determined upon knowing the rendering block. Namely, the correspondence between the rendering block and the addresses in theintermediate data memory 15 are known to the rendering-block dividing unit 303. -
FIG. 10B is a drawing illustrating relationship between the division of a rendering block and the division of theintermediate data memory 15. The rendering block A is divided into rendering blocks B and C. The rendering-block dividing unit 303 determines a size required in theintermediate data memory 15 based on the size of the rendering block B, thereby dividing addresses 0through 10 in theintermediate data memory 15. InFIG. 10B , the size required for the rendering block B in theintermediate data memory 15 is 6, so that the rendering-block dividing unit 303 allocatesaddresses 0 through 5 in theintermediate data memory 15 to the rendering block B. Further, the rendering-block dividing unit 303 allocatesaddresses 6 through 10 in theintermediate data memory 15 to the rendering block C. The rendering-block dividing unit 303 notifies therendering processing units intermediate data memory 15. - Referring to
FIG. 8 again, the rendering-block dividing unit 303 allocates rendering blocks to therendering processing units FIG. 9B , for example, and allocates addresses in theintermediate data memory 15 as illustrated inFIG. 10B (S220). The allocation of rendering blocks may be notified of by specifying a start point and an end point in the longitudinal direction of one page (hereinafter referred to as band positions). In the examples illustrated inFIG. 9B andFIG. 10B , the rendering-block dividing unit 303 notifies therendering processing unit 2 of the band positions of the rendering block B, and notifies therendering processing unit 1 of the band positions of the rendering block C. - The
rendering units 302 of therendering processing units -
FIG. 11 is a drawing schematically illustrating rendering commands executed after division of a rendering block. While therendering processing unit 2 is executing a rendering command CM2, therendering processing unit 1 may interrupt therendering processing unit 2. In such a case, therendering unit 302 of therendering processing unit 2 continues to execute the rendering command CM2 as part of the suspension process. The rendering commands for which execution is resumed are thus a rendering command CM3 and onwards. - When the
rendering processing units rendering processing units rendering processing unit 2 checks whether each rendering command of interest belongs to the allocated rendering block B, and executes only the rendering commands belonging to the rendering block B. When executing the rendering command CM3 and onwards, therendering processing unit 1 checks whether each rendering command of interest belongs to the allocated rendering block C, and executes only the rendering commands belonging to the rendering block C. In this manner, a rendering block is actually divided. - <Check of Need for Division>
- A description will be given of the procedure of determining whether division is necessary. The
rendering processing units 1 through 3 may have capabilities as follows. - Rendering Processing Unit 1: Suitable for Rendering of Graphics
- Rendering Processing Unit 2: Unsuitable for Rendering of Graphics
- Rendering Processing Unit 3: No Particular Characteristics
- It is assumed that the
rendering processing units 1 through 3 are characterized as described above, and that rendering blocks include respective objects as illustrated inFIG. 12 . As illustrated inFIG. 12 , the rendering blocks A through E include letters, and the rendering block E include graphics. - The
rendering processing units 1 through 3 may be assigned to the rendering blocks A through C, respectively. Therendering processing unit 1 starts performing rendering of the rendering block D upon completing rendering of the rendering block A. Thereafter, therendering processing unit 2 starts performing rendering of the rendering block E upon completing rendering of the rendering block B. There are a lot of graphic objects in the rendering block E, and therendering processing unit 2 is not suitable for rendering of such objects. A lengthy time would thus be required. Since the rendering block E includes a lot of graphic objects, processing by therendering unit 302 will be efficient if therendering processing unit 1 performs rendering of these objects. Such a factor is taken into account when therendering unit 302 determines whether division is necessary. -
FIG. 13 is a flowchart illustrating the procedure performed by therendering unit 302 to determine whether division is necessary. Therendering unit 302 first checks whether there is an inquiry from another rendering processing unit (e.g., rendering processing unit 1) (S310). When there is no inquiry, the procedure ofFIG. 13 comes to an end. - When there is an inquiry (Yes in S310), the
rendering unit 302 reads its own capability and the capability of therendering unit 302 of therendering processing unit 1 that has made the inquiry (S320). The capabilities are specified by numeric values that indicate the capabilities of therendering processing units 1 through 3 (or the rendering units thereof) on an object-specific basis. - <<
Rendering Processing Unit 1>> - Letter: 2
- Image: 2
- Graphics: 3
- (1: unsuitable, 2: average, 3: suitable)
- The capabilities of the
rendering units 302 are reported to therendering processing units 16 from theprinter control system 204 at any timing prior to the generation of a display list. - The
rendering unit 302 estimates a processing time TA by weighting, with its own capability, unprocessed rendering commands belonging to the rendering block that is being processed, and also estimates a processing time TB by weighting, with the capability of therendering processing unit 1 that has made the inquiry, the unprocessed rendering commands belonging to the rendering block that is being processed. For example, the processing time TB of therendering processing unit 1 may be estimated by counting the rendering commands directed to letters and images as having time counts required to process letters at average processing speed and also by counting the rendering commands directed to graphics as having time counts required to process graphics at high processing speed. The processing time A can also be estimated by applying the same or similar calculation to therendering processing unit 2. - If the processing time TB is equal to or shorter than the processing time TA, the division of the rendering block is expected to reduce the processing time by more than 50%. If the processing time TB is twice as long as the processing time TA, for example, the division of the rendering block into equal halves has little effect in reducing the processing time. Accordingly, division may not be effective if TB≧2TA.
- The
rendering unit 302 determines whether division is necessary in the manner as described above (S340). If division is effective (Yes in S340), therendering unit 302 determines that division is necessary (S350). If division is not effective (No in S340), therendering unit 302 determines that division is not necessary (S360). - The
rendering unit 302 sends a notice indicative of the result of determination to therendering processing unit 1 via inter-core communication. With this arrangement, therendering processing unit 1 having completed rendering can determine whether to perform interruption. - When the
rendering processing unit 2 receives an inquiry, the number of unprocessed rendering commands belonging to the rendering block that is being processed by therendering processing unit 2 may be sufficiently small. In such a case, there is little need for division. Determination not to perform division is thus made regardless of processing time in such an event. - When the
rendering processing unit 2 receives an inquiry, the number of unprocessed rendering commands belonging to the rendering block that is being processed by therendering processing unit 2 may be larger than a predetermined number. Even in such a case, there is little need for division if the area size of the rendering block is sufficiently small. Determination not to perform division is thus made regardless of processing time in such an event. - In consideration of the above, the conditions under which the determination to perform division is preferable satisfy all of the following conditions. It should be noted that some part of the conditions may only be used.
- 1) The number of unprocessed rendering commands belonging in the rendering block that is being processed by the
rendering processing unit 2 receiving an inquiry is more than a predetermined number. - 2) The area size of the rendering block that is being processed by the
rendering processing unit 2 receiving an inquiry is more than a predetermined threshold. - 3) Processing Time TB≧2×Processing Time TA
- <Example of Division>
-
FIG. 14A is a drawing illustrating an example of a rendering block when there are tworendering processing units 16. The rendering block A is allocated to therendering processing unit 1, the rendering block B allocated to therendering processing unit 2, and the rendering block C allocated to therendering processing unit 1. In this case, either the rendering of the rendering block A by therendering processing unit 1 or the rendering of the rendering block B by therendering processing unit 2 comes to an end ahead of the other. - When the rendering of the rendering block A by the
rendering processing unit 1 comes to an end first, therendering processing unit 1 starts performing rendering of the rendering block C. In this case, therendering processing unit 2 inquires of therendering processing unit 1 whether division is necessary. - When the rendering of the rendering block B by the
rendering processing unit 2 comes to an end first, therendering processing unit 2 inquires of therendering processing unit 1 whether division is necessary. In this case, therendering processing unit 1 has part of the rendering block A and all of the rendering block C left to be processed. If the number of remaining rendering commands in the rendering block A is small, therendering processing unit 1 may determine that no division is necessary for the rendering block A. However, therendering processing unit 1 may determine that division is necessary for the rendering block C. - In the absence of special circumstances such as the processing speed of the
rendering processing unit 1 being far faster than that of therendering processing unit 2, the rendering-block dividing unit 303 of therendering processing unit 1 will divide the rendering block after therendering unit 302 of therendering processing unit 1 checks whether division is necessary. -
FIG. 14B is a drawing schematically illustrating an example of dividing the rendering block C into equal halves. Therendering unit 302 of therendering processing unit 1 determines that division is necessary. In response, the rendering-block dividing unit 303 divides the rendering block C into rendering blocks C1 and C2 having the same size. - Such division makes it possible to distribute processing loads regardless of the number of rendering blocks (three in this example) or the number of rendering processing units (two in this example). Further, there is no need for a mechanism for monitoring the
rendering processing units 16. - <Determination of Size of Rendering Blocks upon Division>
- In the following, a description will be given of the sizes of divided rendering blocks. In place of division at equal intervals, division may be made at varying intervals depending on the capabilities of the
rendering processing units 16, for example. Specifically, the rendering block may be divided in proportion to the capabilities of therendering processing units 16, or may be divided such that the divided rendering blocks predominantly contain rendering commands that can be processed at high speed. - For example, “an average number of commands executed per clock cycle×frequency” may be known. In such a case, the rendering-
block dividing unit 303 may divide the rendering block in proportion to such indicated capabilities (e.g., clock frequencies). - As was described in connection with the division check, the sizes of divided rendering blocks may be determined based on the processing time lengths estimated for respective capabilities. For example, the processing time TB of the
rendering processing unit 1 taking into account the capability thereof may be twice as long as the processing time TA of therendering processing unit 2 taking into account the capability thereof. In such a case, the processing time length of therendering unit 302 receiving an inquiry and the processing time length of therendering unit 302 making the inquiry become almost equal to each other if the rendering block is divided by a ratio of 2 to 1. In this manner, the rendering processing time can be reduced with respect to the rendering blocks as a whole. Specifically, the processing time is reduced to 0.67% of the processing time required to process the original rendering block with therendering unit 302. Namely, therendering units 302 may multiply the size of the rendering block by a ratio of capabilities thereby to determine the sizes of the divided rendering blocks. - Further, the rendering block may be divided such that the divided rendering blocks predominantly contain rendering commands that can be processed at high speed. In such a case, the rendering-
block dividing unit 303 may divide the rendering block into quarters, and calculates the processing time lengths of therendering processing units rendering processing unit - It may be noted that when division is made by taking into account the contents of rendering commands, it is preferable to exclude the already processed rendering commands from such calculation.
- <Case of Three Rendering Processing Units>
-
FIG. 15A is a drawing illustrating an example of a rendering block when there are three rendering processing units. The rendering block A is allocated to therendering processing unit 1, the rendering block B allocated to therendering processing unit 2, and the rendering block C allocated to therendering processing unit 3. When the threerendering processing units 1 through 3 performs rendering of three respective rendering blocks, one of therendering processing units 1 through 3 completes rendering first. Since the procedure performed upon such completion is the same for any one of therendering processing units 1 through 3, an example in which therendering processing unit 1 completes rendering in the rendering block A first is used inFIG. 15A . - For the
rendering processing unit 1, there are two other rendering processing units that are performing rendering. That is, when there are three or more rendering processing units in total, there are two or more rendering blocks being processed at the time therendering processing unit 1 completes its rendering. In such a situation, therendering processing unit 1 needs to use some criteria to select one of the rendering blocks B and D that is to be divided. -
FIG. 16 is a drawing illustrating an example of the criteria used by therendering processing unit 1 to select one of the rendering blocks B and D that is to be divided.FIG. 16 illustrates the progress of rendering commands processed by therendering processing units 1 through 3. For therendering processing unit 1, there is no rendering position since the rendering process has come to an end. Therendering processing unit 2 is processing the rendering command CM3, and therendering processing unit 3 is processing the rendering command CM2. - Since the
rendering processing unit 3 has a larger number of rendering commands left to be processed, it is predicted that the remaining processing time will be longer for therendering processing unit 3 than for therendering processing unit 2. Therendering processing unit 1 uses inter-core communication to inquire of therendering processing units rendering processing unit 1 then selects one of therendering processing units rendering processing unit 16 to which an inquiry is made to check whether division is necessary. Therendering processing unit 1 then inquires of the selected one of therendering processing units 2 and whether it is necessary to divide the rendering block. - Alternatively, the
rendering processing unit 1 may randomly select one of therendering processing units FIG. 16 , the number of unprocessed rendering commands left to be processed is used to select the rendering processing unit to which a division inquiry is made. Alternatively, the lengths of processing time of remaining rendering commands may be estimated based on the capabilities, followed by comparing the processing time lengths to select one of therendering processing units rendering processing units - In the manner as described above, the
rendering processing unit 1 inquires of therendering processing unit 3 whether division is necessary, so that the rendering-block dividing unit 303 of therendering processing unit 3 divides the rendering block. It may be noted that, if therendering processing unit 2 has a larger number of unprocessed rendering commands than therendering processing unit 3, the rendering block B of therendering processing unit 2 is divided. -
FIG. 15B is a drawing schematically illustrating an example of dividing the rendering block C into equal halves. Therendering unit 302 of therendering processing unit 3 determines that division is necessary. In response, the rendering-block dividing unit 303 divides the rendering block C into rendering blocks C1 and C2 having the same size. In place of division at equal intervals as illustrated inFIG. 158 , division may be made at varying intervals depending on the capabilities of therendering processing units FIGS. 14B . - <Case of Three Rendering Processing Units and Four Rendering Blocks>
-
FIG. 17A is a drawing illustrating an example of division in the case of four rendering blocks when there are three rendering processing units. The rendering block A is allocated to therendering processing unit 1, the rendering block B allocated to therendering processing unit 2, the rendering block C allocated to therendering processing unit 3, and the rendering block D allocated to therendering processing unit 1. When the threerendering processing units 1 through 3 perform rendering of four rendering blocks, it is estimated that the processing time of therendering processing unit 1 processing the broadest total of rendering blocks will be the longest. - In the following, a description will be given of a situation in which the
rendering processing unit 3 completes performing rendering of the rendering block C while therendering processing unit 1 is performing rendering of the rendering block D after completing rendering of the rendering block A situated at the top. - In such a case, the
rendering processing units rendering processing unit 3. Therendering processing unit 3 selects one of therendering processing units FIG. 16 , followed by inquiring of the selected one whether division is necessary. In this example, an inquiry about the necessity of division will be made of therendering processing unit 2 that has a rendering block of a larger area size allocated thereto. -
FIG. 17B is a drawing schematically illustrating an example of dividing the rendering block B into equal halves. Therendering unit 302 of therendering processing unit 2 determines that division is necessary. In response, the rendering-block dividing unit 303 divides the rendering block B into rendering blocks B1 and B2 having the same size. - In the manner as described above, even when rendering blocks having different sizes are allocated to the rendering processing units, any given one of the
rendering processing units 1 through 3 can divide its rendering block such that the processing time of rendering of one page is shortened. - <Case Where Rendering Processing Units Complete Rendering Almost Simultaneously>
-
FIG. 18A is a drawing schematically illustrating a situation in which therendering processing units rendering processing unit 2 is performing rendering. Therendering processing units rendering processing units 1 through 3 may together perform rendering of the remaining rendering block thereby to shorten the rendering processing time. Both of therendering processing units rendering processing unit 2 whether division is necessary. With this arrangement, therendering processing unit 2 detects that the rendering block B needs to be divided into three. -
FIG. 18B is a drawing schematically illustrating an example of dividing the rendering block B into three equal parts. - The
rendering unit 302 of therendering processing unit 2 determines that division is necessary in response to the inquiries sent from therendering processing units block dividing unit 303 of therendering processing unit 2 divides the rendering block B into three parts. After this, therendering processing units - It may be noted that the capabilities of the
rendering processing units 1 through 3 are known to therendering processing units 1 through 3. Accordingly, rendering blocks may be allocated such that the processing time lengths become substantially equal to each other. In this manner, uniform division may be achieved. - As described above, the image forming apparatus of the present embodiment dynamically allocates rendering blocks to a plurality of rendering units. Further, there is no need for a special mechanism for monitoring the rendering units.
- Further, the present invention is not limited to these embodiments, but various variations and modifications may be made without departing from the, scope of the present invention.
- The present application is based on Japanese priority application No. 2010-228837 filed on Oct. 8, 2010, with the Japanese Patent Office, the entire contents of which are hereby incorporated by reference.
Claims (10)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010228837A JP2012081626A (en) | 2010-10-08 | 2010-10-08 | Image forming apparatus, image processing method, and program |
JP2010-228837 | 2010-10-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
US20120086970A1 true US20120086970A1 (en) | 2012-04-12 |
US8446605B2 US8446605B2 (en) | 2013-05-21 |
Family
ID=45924912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/253,191 Expired - Fee Related US8446605B2 (en) | 2010-10-08 | 2011-10-05 | Division of rendering block in image forming apparatus |
Country Status (2)
Country | Link |
---|---|
US (1) | US8446605B2 (en) |
JP (1) | JP2012081626A (en) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090323102A1 (en) * | 2008-04-08 | 2009-12-31 | Canon Kabushiki Kaisha | Job processing apparatus, method for controlling the same,and storage medium |
US20120320390A1 (en) * | 2011-06-20 | 2012-12-20 | Canon Kabushiki Kaisha | Image forming apparatus, image forming method, and computer-readable medium |
US20130077106A1 (en) * | 2011-09-22 | 2013-03-28 | Samsung Electronics Co., Ltd. | Print controlling apparatus, image forming apparatus, and method for forming image |
US8786908B2 (en) | 2011-04-22 | 2014-07-22 | Ricoh Company, Ltd. | Image forming apparatus, method of controlling drawing processing, and recording medium storing drawing processing control program |
JP2016159437A (en) * | 2015-02-26 | 2016-09-05 | キヤノン株式会社 | Image formation apparatus and control method thereof |
US9471022B2 (en) * | 2015-03-12 | 2016-10-18 | Fuji Xerox Co., Ltd. | Print control apparatus, print control method, image forming system, and non-transitory computer readable medium |
US20170147913A1 (en) * | 2015-11-19 | 2017-05-25 | Canon Kabushiki Kaisha | Image processing apparatus that converts image data from line sequence to block sequence, image processing method, and storage medium |
US20170177983A1 (en) * | 2015-12-18 | 2017-06-22 | Océ-Technologies B.V. | Method of converting image data |
US9875435B2 (en) * | 2016-03-10 | 2018-01-23 | Fuji Xerox Co., Ltd. | Drawing data generation apparatus |
US10338857B2 (en) * | 2016-11-24 | 2019-07-02 | Ricoh Company, Ltd. | Information processing apparatus, information processing system, and information processing method |
US10545708B2 (en) | 2017-10-26 | 2020-01-28 | Ricoh Company, Ltd. | Information processing system and method of processing information |
US10992830B2 (en) | 2019-01-04 | 2021-04-27 | Ricoh Company, Ltd. | Information processing terminal having operable objects on a screen, information processing system having operable objects on a screen, and operation screen display method regarding operable object |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6544905B2 (en) * | 2014-09-29 | 2019-07-17 | キヤノン株式会社 | Image processing apparatus, image processing method, program |
JP7172193B2 (en) * | 2018-07-02 | 2022-11-16 | コニカミノルタ株式会社 | Image forming device and program |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006092125A (en) | 2004-09-22 | 2006-04-06 | Canon Inc | Image processor, image processing method, program and storage medium |
-
2010
- 2010-10-08 JP JP2010228837A patent/JP2012081626A/en active Pending
-
2011
- 2011-10-05 US US13/253,191 patent/US8446605B2/en not_active Expired - Fee Related
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090323102A1 (en) * | 2008-04-08 | 2009-12-31 | Canon Kabushiki Kaisha | Job processing apparatus, method for controlling the same,and storage medium |
US9253344B2 (en) * | 2008-04-08 | 2016-02-02 | Canon Kabushiki Kaisha | Job processing apparatus, method for controlling the same, and storage medium |
US8786908B2 (en) | 2011-04-22 | 2014-07-22 | Ricoh Company, Ltd. | Image forming apparatus, method of controlling drawing processing, and recording medium storing drawing processing control program |
US20120320390A1 (en) * | 2011-06-20 | 2012-12-20 | Canon Kabushiki Kaisha | Image forming apparatus, image forming method, and computer-readable medium |
US9305249B2 (en) * | 2011-06-20 | 2016-04-05 | Canon Kabushiki Kaisha | Image forming apparatus, image forming method, and computer-readable medium for rasterizing scan line using intermediate data |
US20130077106A1 (en) * | 2011-09-22 | 2013-03-28 | Samsung Electronics Co., Ltd. | Print controlling apparatus, image forming apparatus, and method for forming image |
US9036203B2 (en) * | 2011-09-22 | 2015-05-19 | Samsung Electronics Co., Ltd. | Print controlling apparatus, image forming apparatus, and method for forming image |
JP2016159437A (en) * | 2015-02-26 | 2016-09-05 | キヤノン株式会社 | Image formation apparatus and control method thereof |
US9471022B2 (en) * | 2015-03-12 | 2016-10-18 | Fuji Xerox Co., Ltd. | Print control apparatus, print control method, image forming system, and non-transitory computer readable medium |
US20170147913A1 (en) * | 2015-11-19 | 2017-05-25 | Canon Kabushiki Kaisha | Image processing apparatus that converts image data from line sequence to block sequence, image processing method, and storage medium |
US10185902B2 (en) * | 2015-11-19 | 2019-01-22 | Canon Kabushiki Kaisha | Image processing apparatus that converts image data from line sequence to block sequence, image processing method, and storage medium |
US20190108426A1 (en) * | 2015-11-19 | 2019-04-11 | Canon Kabushiki Kaisha | Image processing apparatus that converts image data from line sequence to block sequence, image processing method, and storage medium |
US10832104B2 (en) * | 2015-11-19 | 2020-11-10 | Canon Kabushiki Kaisha | Image processing apparatus that converts image data from line sequence to block sequence, image processing method, and storage medium |
US20170177983A1 (en) * | 2015-12-18 | 2017-06-22 | Océ-Technologies B.V. | Method of converting image data |
US9892346B2 (en) * | 2015-12-18 | 2018-02-13 | Océ-Technologies B.V. | Method of converting image data from source format into target format |
US9875435B2 (en) * | 2016-03-10 | 2018-01-23 | Fuji Xerox Co., Ltd. | Drawing data generation apparatus |
US10338857B2 (en) * | 2016-11-24 | 2019-07-02 | Ricoh Company, Ltd. | Information processing apparatus, information processing system, and information processing method |
US10545708B2 (en) | 2017-10-26 | 2020-01-28 | Ricoh Company, Ltd. | Information processing system and method of processing information |
US10992830B2 (en) | 2019-01-04 | 2021-04-27 | Ricoh Company, Ltd. | Information processing terminal having operable objects on a screen, information processing system having operable objects on a screen, and operation screen display method regarding operable object |
Also Published As
Publication number | Publication date |
---|---|
JP2012081626A (en) | 2012-04-26 |
US8446605B2 (en) | 2013-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8446605B2 (en) | Division of rendering block in image forming apparatus | |
US8625133B2 (en) | Print data processing apparatus, print data processing method, and storage medium | |
KR100757154B1 (en) | Information processing apparatus and its control method | |
US8743389B2 (en) | Methods and systems rendering a print job | |
US8503019B2 (en) | Print document conversion apparatus and computer readable medium | |
US8488168B2 (en) | Image forming apparatus for printing a plurality of logical pages, image forming apparatus control method, and storage medium | |
US8537396B2 (en) | Print document conversion apparatus, print document conversion method, and computer readable medium | |
US9781295B2 (en) | Image processing apparatus, a method for performing specific process on an image processing apparatus, and a computer-readable storage medium for a program to be executed by an image processing apparatus | |
US10534986B2 (en) | Printing apparatus having interpreters interpreting print data, printing method, and storage medium | |
US9100515B2 (en) | Image forming apparatus capable of assignment to print destination | |
JP5099594B2 (en) | Image processing apparatus, image processing system, and image processing program | |
US8941852B2 (en) | Print data processing system, print data processing method, and non-transitory computer readable medium | |
JP6512902B2 (en) | Image processing apparatus, control method thereof and control program | |
JP2012119955A (en) | Print data generation device and print data generation method | |
US20120268796A1 (en) | Image forming apparatus, method of controlling drawing processing, and recording medium storing drawing processing control program | |
JP5392153B2 (en) | Image processing apparatus, image processing method, and program | |
JP2011201146A (en) | Image processing device and image processing program | |
JP4095581B2 (en) | Information processing apparatus and control method thereof | |
US10235611B2 (en) | Image forming apparatus, image forming method, and non-transitory computer readable medium | |
JP2011143576A (en) | Print data generator, image forming apparatus and program | |
JP5664247B2 (en) | Image processing apparatus, image processing method, and program | |
JP2015168132A (en) | Image formation system and print data drawing expansion method for image formation system | |
JP2007152898A (en) | Printing processing apparatus | |
US9434195B2 (en) | Printing instruction apparatus, printing system, printing instruction method, and computer readable medium | |
US20220229616A1 (en) | Information processing apparatus, printing apparatus, and information processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: RICOH COMPANY, LTD., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TAKAHASHI, RINA;REEL/FRAME:027017/0573 Effective date: 20111005 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20210521 |