The present invention relates to efficient processing of page description language (PDL) objects among processing elements in a digital front end system and more specifically to the field of variable data printing (VDP).
Digital frontends or color print servers are designed to process data for digital printers. A digital frontend will usually receive a job to be printed in the form of a page description language (PDL) for processing.
The PDL job 204, shown in
Since every printed impression on a digital printer can contain different data, variable data printing (VDP) jobs are often used in conjunction with digital printers. Data contained in VDP files can be divided into two categories: reusable and non-reusable content (objects).
An efficient method of VDP data handling is processing (rasterizing) of reusable objects (120, 124) only once, caching processing results and reusing it for composition of pages that include these reusable objects. Further improvement of VDP processing performance is possible by involving multiple processing elements (PE). Those PEs can be multiple processing jobs, multiple processor residing in a single server, multiple servers connected within a single network, or a combination of them. The PDL job 204 is split into plurality of PDL chunks. Each PDL chunk e.g. 208, 212, and 216 is fed to individual PEs 220, 224, and 228 respectively. In such an environment multiple processing engines shall share common cache (not shown) for processed reusable objects.
Traditionally PDL processing is done in a sequential manner from a first page in a PDL job 204 or in a PDL chunk such as 208. Chunks are used, as described above, in the case where a PDL job 204 is if split between several PEs (such as 220). In this case each of the PEs builds an entire layout for each page.
For example, in
This algorithm is simple and straight forward for implementation; however, it has certain cavity which can lead to forced unwanted synchronization of multiple processing engines. PEs 224 and 228 process PDL chunks 212 and 216 respectively. Each of the PEs 224 and 228 encounters a reusable object 232 in the second page of each of the PDL chunks (212, 216) processed by them. A cache inquiry is made by each of the PDL chunks (212, 216) yielding a result that reusable object 232 is in middle of processing by PDL chunks 208. This result in unfavorable in respect to system performance, since it will impose an idle state on both PDL chunks 212 and 216, causing them to wait until reusable object 232 processing is fully completed by PDL chunks 208.
Briefly, according to one aspect of the present invention a method for processing a variable data processing (VDP) print job for digital printing including the steps of: providing a VDP print job to a computer wherein the print job is described by a page description language (PDL); splitting the print job into plurality of PDL chunks wherein each of the chunks may include at least one reusable element and/or at least one specific content element or both; assigning each of the chunks to a different processing element of a plurality of processing elements; and splitting the processing of the PDL chunks in each of processing elements into a first phase and a second phase, wherein the first phase processes the reusable elements in the print job in coordination with the other processing elements; and wherein the second phase processes the specific content of the PDL chunk assigned to each of the processing elements and the reusable elements processed during the first phase.
These and other objects, features, and advantages of the present invention will become apparent to those skilled in the art upon a reading of the following detailed description when taken in conjunction with the drawings wherein there is shown and described an illustrative embodiment of the invention.
The subject matter regarded as the invention will become more clearly understood in light of the ensuing description of embodiments herein, given by way of example and for purposes of illustrative discussion of the present invention only, with reference to the accompanying drawings (Figures, or simply “Figure”), wherein:
In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the disclosure. However, it will be understood by those skilled in the art that the teachings of the present disclosure may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the teachings of the present disclosure.
During the first phase 428 all the processing elements 220, 224 and 228 will process just reusable objects such as 232 and 236, while skipping all non-reusable content (such as 112, 116). During phase 432, PEs 220, 224, and 228 will each process the reusable object of PDL job 204, during time slots 404, 408 and 412 respectively. In the case that during first phase 428 PE 224, for example, will encounter a reusable object 232 which is being processed by PE 220 it should not wait for the completion of the processing of reusable object 232, but will switch to the next reusable object, for example 236, and will process it unless it had not been processed yet. Alternatively, in the case there are no reusable objects to be processed for PE 224, it will complete first phase 428 processing of the PDL chunk assigned to it, in the example of PE 224 it will be chunk 212.
At the stage that a certain PE completed its first phase 428 assignments it will continue to second stage 432, alternatively all PEs can be synchronized, so all will start stage 432 at the same time, however this method might be less efficient. The synchronization between the processing elements between stages 428 and 432 are performed by a coordination element (not shown).
During the second phase 432 PEs 220, 224, and 228 will process just the non-reusable content, such as 112 and 116, during respective processing time slots 416, 420, and 424. Since all reusable objects were processed by time T1 during first phase 428, any cache query to the shared cache storage (not shown) will be guaranteed as a cache hit. Implementation of this solution will avoid inefficiencies described in the background section, and will eliminate any unwanted waiting periods for the processing elements and thus will increase effectiveness and performance of VDP based jobs.
The invention has been described in detail with particular reference to certain preferred embodiments thereof, but it will be understood that variations and modifications can be effected within the scope of the invention.
Reference is made to commonly-assigned copending U.S. Patent Application Ser. No. ______ (Attorney Docket No. 96745/NAB), filed herewith, entitled PROCESSING REUSABLE AND SPECIFIC CONTENT, by Gloukhenki et al.; and U.S. patent application Ser. No. 11/858,477, filed Sep. 20, 2007, now U.S. Publication No. 2009/0080025, entitled PARALLEL PROCESSING OF PAGE DESCRIPTION LANGUAGE, by Aronshtam et al.; the disclosures of which are incorporated herein.