KR20170085973A - 인쇄 데이터 처리 장치, 인쇄 데이터 처리 방법, 및 저장 매체 - Google Patents

인쇄 데이터 처리 장치, 인쇄 데이터 처리 방법, 및 저장 매체 Download PDF

Info

Publication number
KR20170085973A
KR20170085973A KR1020170004797A KR20170004797A KR20170085973A KR 20170085973 A KR20170085973 A KR 20170085973A KR 1020170004797 A KR1020170004797 A KR 1020170004797A KR 20170004797 A KR20170004797 A KR 20170004797A KR 20170085973 A KR20170085973 A KR 20170085973A
Authority
KR
South Korea
Prior art keywords
unit
page
pages
data
interpreted
Prior art date
Application number
KR1020170004797A
Other languages
English (en)
Other versions
KR102145809B1 (ko
Inventor
슈이치 다케나카
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Publication of KR20170085973A publication Critical patent/KR20170085973A/ko
Application granted granted Critical
Publication of KR102145809B1 publication Critical patent/KR102145809B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/125Page layout or assigning input pages onto output media, e.g. imposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/40Details not directly involved in printing, e.g. machine management, management of the arrangement as a whole or of its constitutive parts
    • G06K15/408Handling exceptions, e.g. faults
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/24Resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/121Facilitating exception or error detection and recovery, e.g. fault, media or consumables depleted
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1248Job translation or job parsing, e.g. page banding by printer language recognition, e.g. PDL, PCL, PDF
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1297Printer code translation, conversion, emulation, compression; Configuration of printer parameters
    • G06F3/1298Printer language recognition, e.g. programme control language, page description language
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1803Receiving particular commands
    • G06K15/1806Receiving job control commands
    • G06K15/1807Receiving job control commands relating to the print image preparation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/181Receiving print data characterized by its formatting, e.g. particular page description languages
    • G06K15/1811Receiving print data characterized by its formatting, e.g. particular page description languages including high level document description only
    • G06K15/1813Page description language recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1817Buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1801Input data handling means
    • G06K15/1822Analysing the received data before processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1848Generation of the printable image
    • G06K15/1849Generation of the printable image using an intermediate representation, e.g. a list of graphical primitives
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K2215/00Arrangements for producing a permanent visual presentation of the output data
    • G06K2215/0002Handling the output data
    • G06K2215/0062Handling the output data combining generic and host data, e.g. filling a raster
    • G06K2215/0065Page or partial page composition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Record Information Processing For Printing (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

인쇄 데이터의 페이지를 병렬로 해석하는 인쇄 데이터 처리 장치를 사용한 처리에서, 이미 해석된 페이지 수를 리셋하는 커맨드가 인쇄 데이터에 포함되는 경우, 인쇄될 특정 페이지는 인쇄되지 않는다. 지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 인터프리터는, 무효화 커맨드를 검지한 시점에서 이미 해석된 페이지 수를 캐시에 저장한다. 그 다음, 인터프리터는, 캐시된 값과 인터프리터에 의해 관리되는 이미 해석된 페이지 수와의 합이 처리 대상 페이지 번호와 일치하는 경우에 중간 데이터를 생성한다.

Description

인쇄 데이터 처리 장치, 인쇄 데이터 처리 방법, 및 저장 매체{PRINT DATA PROCESSING APPARATUS, PRINT DATA PROCESSING METHOD, AND STORAGE MEDIUM}
본 발명은 인쇄 데이터를 해석하는 처리에 관한 것이다.
인쇄 장치는, 페이지 기술 언어(PDL)로 기술된 인쇄 데이터(PDL 데이터)를 해석하고, 해석 결과에 기초하여 중간 데이터를 일시적으로 생성한다. 그 다음, 인쇄 장치는, 그 중간 데이터로부터 화상을 생성하고, 생성한 화상을 인쇄한다. 일본 특허 공개 제2013-14039호 공보는, 인쇄 데이터에 있어서의 별도의 페이지를 병렬로 해석해서 중간 데이터를 생성하는 인쇄 장치를 개시한다.
인쇄 데이터에 있어서의 별도의 페이지를 병렬로 해석할 경우, 페이지를 병렬로 해석하도록 구성된 복수의 데이터 해석 유닛과, 복수의 데이터 해석 유닛에는 중간 데이터를 생성해야 할 페이지를 통지하도록 구성된 제어 유닛이 이용된다. 구체적으로는, 인쇄 작업의 개시에 수반하여, 각각의 데이터 해석 유닛은, 인쇄 데이터를 선두의 페이지로부터 순서대로 해석하기 시작해서, 이미 해석된 페이지 수를 관리한다. 한편, 제어 유닛은, 중간 데이터를 생성해야 할 페이지의 번호(페이지 번호)를 인쇄 작업의 개시부터 1, 2, 3...의 순서대로 증분하면서, 각각의 데이터 해석 유닛에는 중간 데이터를 생성해야 할 각각의 별도 페이지 번호를 통지한다. 예를 들어, 제어 유닛은, 특정 데이터 해석 유닛에 대하여 페이지 번호 "1"을 통지한 다음, 다음의 데이터 해석 유닛에는 페이지 번호 "2"를 통지한다. 그 다음, 특정 페이지의 해석을 완료했을 때에, 각각의 데이터 해석 유닛은, 각각의 데이터 해석 유닛 자체가 관리하는 이미 해석된 페이지 수와, 통지된 페이지 번호가 일치하는 경우에, 그 페이지의 중간 데이터를 생성한다. 그 다음, 중간 데이터가 생성된 페이지가 인쇄된다.
인쇄 데이터에는, 인쇄 작업의 도중에 있어서도, 데이터 해석 유닛에 의해 관리되어 있는 이미 해석된 페이지 수를 리셋하는 커맨드가 존재한다. 그러한 커맨드의 예는 PostScript(등록 상표)에 있어서의 startjob이다. 이러한 커맨드는 페이지 리셋 커맨드라고 불린다. 페이지 리셋 커맨드를 검지(해석)하면, 데이터 해석 유닛은 데이터 해석 유닛 자체가 관리하는 이미 해석된 페이지 수를 "0"으로 리셋한다. 여기에서 말하는, 이미 해석된 페이지 수는 데이터 해석 유닛 내의 페이지 카운터이며, 이 페이지 카운터의 값은 인쇄 장치의 설정에 따라서 페이지 수의 인쇄에 사용된다. 예를 들어, 페이지 수를 리셋함으로써, 동일한 인쇄 작업 내의 개별 페이지에 동일한 페이지 번호를 할당하는 것이 가능해진다. 예를 들어, 인쇄 데이터의 제2 페이지에 페이지 리셋 커맨드를 포함함으로써, 인쇄 데이터의 제1 페이지와, 페이지 리셋 커맨드를 포함한 페이지(즉, 인쇄 데이터의 제2 페이지)에, 페이지 번호 "1"을 할당하는 것이 가능해진다.
상기의 페이지 리셋 커맨드가 인쇄 데이터에 포함되는 경우에, 종래의 데이터 해석 유닛과, 제어 유닛을 사용한 인쇄 장치에서는, 페이지 리셋 커맨드를 포함한 페이지가 인쇄되지 않는다는 과제가 발생한다. 종래의 데이터 해석 유닛에서는, 페이지 리셋 커맨드가 포함되는 페이지를 해석하는 경우, 데이터 해석 유닛에 의해 관리되는 이미 해석된 페이지 수는 "0"으로 리셋된다. 그러나, 제어 유닛은 그 것을 파악하지 않고, 중간 데이터를 생성해야 할 페이지 번호를 데이터 해석 유닛에 통지한다. 그 결과, 특정 데이터 해석 유닛으로 하여금 중간 데이터를 생성하게 하기 위해서 제어 유닛에 의해 통지된 페이지 번호와, 데이터 해석 유닛 자체에 의해 관리되는 이미 해석된 페이지 수 사이에서 불일치가 발생해서, 결과적으로, 페이지 리셋 커맨드를 포함한 페이지가 인쇄되지 않게 된다. 예를 들어, 제어 유닛은, 인쇄 데이터의 제2 페이지의 중간 데이터의 생성을 데이터 해석 유닛 X로 하여금 행하게 하기 위해서 페이지 번호 "2"를 데이터 해석 유닛 X에 통지한다. 여기서, 인쇄 데이터의 제2 페이지에 페이지 리셋 커맨드가 포함되어 있는 경우에, 데이터 해석 유닛 X에 의해 관리되는 이미 해석된 페이지 수는, 페이지 리셋 커맨드의 검지 시에는 "0"으로 리셋된다. 그 다음, 데이터 해석 유닛 X는, 페이지 리셋 커맨드에 계속되는 인쇄 데이터의 제2 페이지의 해석을 개시하게 된다. 그러나, 데이터 해석 유닛 X에 의해 관리되는 이미 해석된 페이지 수가 리셋되어 있기 때문에, 인쇄 데이터의 제2 페이지의 해석 완료 시에는, 데이터 해석 유닛 X에 의해 관리되는 이미 해석된 페이지 수는 "2"가 아닌 "1"이다. 그로 인해, 이미 해석된 페이지 수 "1"은, 제어 유닛에 의해 통지된 통지 페이지 번호 "2"와 일치하지 않고, 따라서 인쇄 데이터의 제2 페이지의 중간 데이터가 생성되지 않는다. 그 결과, 인쇄 데이터의 제2 페이지가 인쇄되지 않게 된다.
본 발명에 따른 인쇄 데이터 처리 장치는, 인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛을 각각 갖는 복수의 해석 유닛; 및 중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 가운데 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하는 인쇄 데이터 처리 장치이며, 상기 해석 유닛은, 상기 제1 유지 유닛의 페이지 수와는 다른 종류의 페이지 수를 유지하도록 구성된 제2 유지 유닛; 지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 무효화 커맨드의 검지 시점에서 상기 제1 유지 유닛에 의해 유지된 페이지 수를 상기 제2 유지 유닛에 의해 유지된 페이지 수에 가산함으로써 상기 제2 유지 유닛에 의해 유지된 페이지 수를 갱신하고, 상기 제1 유지 유닛에 의해 유지된 상기 이미 해석된 페이지 수를 리셋하도록 구성된 제1 처리 유닛; 및 상기 제1 유지 유닛에 의해 유지된 페이지 수와 상기 제2 유지 유닛에 의해 유지된 페이지 수의 합이 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛으로 하여금 상기 중간 데이터의 생성을 수행하게 하도록 구성된 제2 처리 유닛을 추가로 갖는다.
본 발명의 추가 특징은 (첨부된 도면을 참조하여) 이하의 예시적인 실시예의 설명으로부터 명백해질 것이다.
도 1은 제1 실시예의 설명에서 사용하는, 화상 형성 장치의 하드웨어 구성도이다.
도 2는 제1 실시예의 설명에서 사용하는, 화상 형성 장치의 소프트웨어 구성도이다.
도 3a 및 도 3b는 제1 실시예의 설명에서 사용하는, 인쇄 데이터의 기술예와 묘화 내용이다.
도 4는 제1 실시예의 설명에서 사용하는, 페이지 스킵 처리와 페이지 묘화 처리를 설명하는 도면이다.
도 5는 제1 실시예의 설명에서 사용하는, 페이지 병렬 처리의 간이 시퀀스도이다.
도 6은 종래 기술에서의 페이지 병렬 처리의 간이 시퀀스도이다.
도 7은 제1 실시예에서의 페이지 병렬 제어 처리의 간이 시퀀스도이다.
도 8은 제1 실시예에서의 페이지 병렬 제어 유닛의 흐름도이다.
도 9는 제1 실시예에서의 인터프리터의 흐름도이다.
도 10은 제2 실시예에서의 페이지 병렬 처리의 간이 시퀀스도이다.
도 11은 제2 실시예에서의 인터프리터의 흐름도이다.
이하, 본 발명을 실시하기 위한 실시예에 대해서 도면을 사용해서 설명한다. 그러나, 이 실시예에 기재되어 있는 도면은 단지 예시이며, 본 발명의 범위를 그것에만 한정하려는 것은 아니다.
(제1 실시예)
이하, 제1 실시예를 설명한다. 본 실시예에서는, 인쇄 데이터를 기술하는 PDL로서 페이지 비독립적인 PDL을 사용하는 예를 설명한다. 페이지 비독립적인 PDL은, 페이지를 결쳐서 인쇄 데이터의 모든 부분에 인쇄 처리를 위한 정보를 기술 가능한 PDL이다. 따라서, 페이지 비독립적인 PDL을, 복수의 데이터 해석 유닛을 사용해서 병렬 처리를 행해서 해석하는 경우에는, 각각의 데이터 해석 유닛이 중간 데이터를 생성하는 대상의 페이지뿐만 아니라, 인쇄 데이터의 선두로부터의 페이지를 해석할 필요가 있다. 본 실시예에서는, 페이지 비독립적인 PDL의 예로서, PostScript(등록 상표)(이하, PS라고 말함)을 예로 사용하여 설명한다. 페이지 비독립적인 PDL은, PS에 한정되는 것은 아니고, PCL 등 다른 PDL일 수 있다.
(화상 형성 장치의 하드웨어 블록도)
도 1은 본 실시예의 화상 형성 장치의 구성을 설명하는 하드웨어 블록도이다. 도 1의 화상 형성 장치는, 컨트롤러 유닛(100)을 갖는다. 컨트롤러 유닛(100)은, 화상 신호 및 디바이스 정보의 입/출력을 제어한다. 또한, 화상 형성 장치를 인쇄 데이터 처리 장치로 칭할 수 있고, 컨트롤러 유닛(100)을 인쇄 데이터 처리 장치로 칭할 수 있다.
중앙 처리 유닛(101)은 보조 저장 디바이스(103)에 저장된 프로그램을 주 저장 디바이스(102) 상에 판독하여, 이 프로그램을 실행한다. 또한, 중앙 처리 유닛(101)은 시스템 버스(109)에 접속된 각각의 디바이스를 통괄적으로 제어한다. 본 실시예에서의 중앙 처리 유닛(101)은 병렬 처리를 실현한다. 병렬 처리를 실현하기 위해서, 중앙 처리 유닛(101)은 하드웨어로서 복수의 프로세서를 갖는 멀티코어 시스템을 채택한다. 또는, 복수의 프로세서 코어를 포함하고 있는 마이크로프로세서를 사용할 수도 있다. 또한, 하이퍼 스레딩(hyper threading)과 같이, 프로세서 내의 레지스터 및 파이프라인의 유휴 시간을 유용하게 이용해서 1개의 프로세서를 마치 복수의 프로세서인 것 같이 기능하게 하는 기술을 이용할 수 있는 것을 사용할 수 있다.
주 저장 디바이스(102)는, 중앙 처리 유닛(101)의 주 메모리 및 워크 메모리로서 기능한다.
보조 저장 디바이스(103)는 대용량 데이터를 일시적 또는 장기적으로 유지하는 목적에도 사용된다. 본 실시예에서는, 파이프라인 병렬을 실시할 때에, 버퍼 영역에 데이터가 보존된다. 주 저장 디바이스(102) 또는 보조 저장 디바이스(103)는, 버퍼 영역을 제공한다.
네트워크 I/F(104)는 네트워크(105)에 접속되고, 화상 형성 장치 외부와의 인쇄 데이터 및 디바이스 정보의 입/출력을 담당한다.
RIP(106)은 중간 데이터인 DL(Display List)을 래스터 화상(raster image)(화상 데이터)으로 전개한다. RIP(106)은, 중앙 처리 유닛(101)에 의해 주 저장 디바이스(102) 및 보조 저장 디바이스(103) 상에 생성된 DL의 처리를, 고속으로 및 중앙 처리 유닛(101)의 실행과 병렬로, 수행한다.
디바이스 I/F(107)는 중앙 처리 유닛(101)의 지시에 기초하여, 화상 신호를 송출하고, 디바이스 동작 지시를 제공하며, 디바이스 정보를 수신한다. 컨트롤러 유닛(100)은 디바이스 I/F(107)를 통해 프린터 엔진(108)에 접속된다.
프린터 엔진(108)은 컨트롤러 유닛(100)으로부터의 화상 신호에 기초하여 화상을 인쇄 매체 상에 출력하는 출력 디바이스이며, 전자 사진 방식의 프린터 엔진 및 잉크젯 방식의 프린터 엔진 중 임의의 것일 수 있다.
(화상 형성 장치의 소프트웨어 구성도)
도 2는 본 실시예에서의 화상 형성 장치의 소프트웨어 구성도이다. 도 2에 기재한 각각의 소프트웨어 구성은, 프로그램으로서 보조 저장 디바이스(103)에 저장되고, 주 저장 디바이스(102)에 로드되어 중앙 처리 유닛(101)에 의해 실행된다.
페이지 병렬 제어 유닛(200)은, 복수의 스레드를 확립(기동)하고, 각각의 스레드 상에서 PS 인터프리터(201)를 수행시키게 한다. 그 다음, 페이지 병렬 제어 유닛(200)은 각각의 스레드를 제어한다. 인쇄 처리를 병렬 처리하기 위해서, 페이지 병렬 제어 유닛(200)은, 인쇄 데이터를 페이지 단위로 구획하고, 각각의 스레드에 처리 대상 페이지를 할당하도록 구성된 처리 유닛을 갖는다. 본 실시예에서는, 병렬 처리를 수행하는 2개의 스레드가 기동되는 구성을 상정하고 있기 때문에, 도 2에는, 2개의 PS 인터프리터(201)가 존재하는 예가 도시되어 있다. 그러나, 그 구성은 이것에 한정되는 것은 아니고, 중앙 처리 유닛(101)의 프로세서 코어가 병렬 제어할 수 있는 수만큼 스레드를 기동하고, PS 인터프리터(201)를 스레드 각각에 할당할 수 있게 된다.
PS 인터프리터(201)는 PDL 언어 데이터 해석 유닛(202)과 DL 생성 유닛(203)을 갖는다. PS 인터프리터(201)는, 인쇄 데이터를 해석하고, 중간 데이터로서 DL(Display List)을 생성한다.
PDL 언어 데이터 해석 유닛(202)은, 페이지 기술 언어(PDL)에 의해 기술되어 있는 인쇄 데이터의 기술 내용을 해석하도록 구성된 데이터 해석 유닛이다. 본 실시예에서는, PS의 언어 해석이 상정된다. 또한, PDL 언어 데이터 해석 유닛(202)은, PDL 언어 데이터 해석 유닛(202) 자체에 의해 이미 해석된 페이지 수를 카운트하는 페이지 카운터를 유지하도록 구성된 유지 유닛을 갖는다. 또한, PS 인터프리터(201)는, PDL 언어 데이터 해석 유닛(202)의 해석 결과에 기초하여, 리셋 처리를 행하고, 페이지 카운터의 값을 리셋하는 등의 처리를 하도록 구성된 처리 유닛을 갖는다.
DL 생성 유닛(203)은, PDL 언어 데이터 해석 유닛(202)에 의해 해석된 결과에 기초하여 중간 데이터로서 DL을 생성 가능하다. DL 생성 유닛(203)이 DL을 생성하는 경우와 DL 생성 유닛(203)이 DL을 생성하지 않는 경우가 있다. 그 상세는 후술한다.
버퍼(204)는, 복수의 PS 인터프리터(201)로부터 생성된 DL들을 버퍼링한다. 페이지 병렬 기술을 채택하면, 각각의 스레드의 처리를 완료하는 순서가 페이지의 순서가 아니고, 특정 페이지를 선행하는 또 다른 페이지의 처리보다 먼저 완료되는 경우가 이따끔 있다. 그 이유는, 기술 내용이 많은 페이지 및 기술 내용이 복잡한 페이지에서는 DL 생성에 시간이 걸리는 반면에, 기술 내용이 적은 페이지에서는 DL 생성에 시간이 걸리지 않는 경우가 있기 때문이다. 인쇄 데이터는 페이지의 순서로 RIP(106)에 출력될 필요가 있기 때문에, 미처리의 페이지가 완료할 때까지의 버퍼 영역으로서, 버퍼(204)가 사용된다. 본 실시예에서는, 주 저장 디바이스(102)의 일부가 버퍼 영역으로서 확보된다. 그러나, 주 저장 디바이스(102)에 버퍼링할 수 있을 만큼의 충분한 영역이 없는 경우에는, 보조 저장 디바이스(103)의 일부를 대체 영역으로서 사용할 수 있다.
렌더링 유닛(205)은, 버퍼(204)에 저장된 DL을 도 1에 도시한 RIP(106)에 전송한다.
(인쇄 데이터의 기술예와 묘화 내용)
도 3a 및 도 3b는, 인쇄 데이터에 기술되는 묘화 오브젝트의 기술예와 그 묘화 내용을 나타낸다. 도 3a는 PostScript(등록 상표)을 사용한 인쇄 데이터의 기술예 일례이다. Page 1의 부분에서는, 기울어진 선분을 정의하고 있다. Page 2의 부분에서는, 문자열 "I am string."을 정의하고 있다. Page 3의 부분에서는, 체크 무늬의 패턴 오브젝트를 정의하고 있다. Page 4의 부분에서는, Page 2의 부분과 마찬가지로 문자열 "I am string."을 정의하고 있다. PostScript의 페이지의 경계에서는, "showpage" 커맨드(오퍼레이터)가 삽입된다. 이미 해석된 페이지 수를 리셋하는 PDL 커맨드는, 도 3a에 나타내는 예에서는 PS의 "startjob" 커맨드이며, Page 1의 "showpage" 커맨드에 이어 기술되어 있다. 따라서, 형식적으로, Page 2의 첫머리에 startjob가 기술되어 있다. 이 startjob 커맨드는, 지금까지 해석된 작업의 내용을 리셋하고, startjob 커맨드 이후의 기술로부터 새로운 작업을 개시시키는 커맨드(페이지 리셋 커맨드)이다. 즉, 페이지 비독립적인 언어에서는, 현재 해석되고 있는 페이지뿐만 아니라, 지금까지 해석된 페이지에 기술된 내용이 축적된 형태로 해석이 수행되고, startjob 커맨드는, 이 축적한 내용을 일단 리셋하는 커맨드이다. 도 3a에 나타내는 예에서, 페이지 리셋 커맨드를 제외한 부분은, 인쇄 데이터의 제2 페이지의 실질적인 기술 내용이다. startjob의 기술 사양에 관한 더 많은 정보는, 공개 문서인 PostScript(등록 상표)의 참조 매뉴얼을 참고한다.
도 3b는 도 3a에 기술된 묘화 오브젝트의 묘화 내용을 나타낸다. 데이터의 내용으로서는, 4 페이지분이 기술되어 있다. 그러나, 전술한 바와 같이, Page 1과 Page 2의 사이에, startjob가 기술되어 있다. 그로 인해, PDL 언어 데이터 해석 유닛(202)에 의해 이미 해석된 페이지 수는 startjob의 검지(해석)의 시점에 내부적으로 리셋된다.
설명을 간편하게 하기 위해서, 도 3b에 도시된 바와 같이, 논리 페이지의 1 페이지가 물리 페이지의 1 페이지에 대응하는 예가 설명된다. 논리 페이지의 N 페이지가 물리 페이지의 1 페이지에 대응하는 Nup 인쇄를 행하는 경우에는, 각각의 PDL 언어 데이터 해석 유닛(202)에 의해 관리되는 페이지 카운터에 의해 카운트된 이미 해석된 페이지 수는, 논리 페이지의 수이다.
도 3b에 나타내는 예에서는, 인쇄 데이터의 페이지 수는 4이다. 이 인쇄 데이터를 전체로서 본 경우, 도 3b에 도시한 바와 같이 페이지 번호의 할당이 된다. 한편, 페이지 리셋 커맨드를 검지(해석)한 PDL 언어 데이터 해석 유닛(202)으로부터 인쇄 데이터를 보는 경우, 도 3b의 Page 1과 Page 2 양쪽은, 페이지 번호로서는 제1 페이지로서 해석된다. 이와 같이, 인쇄 데이터를 전체로서 본 경우의 페이지 번호와, PDL 언어 데이터 해석 유닛(202)으로부터 인쇄 데이터를 본 경우의 페이지 번호를 구별하기 위해서, 이하에서는, 인쇄 데이터를 전체로서 본 경우의 페이지 번호를, 인쇄 데이터의 제3 페이지 등으로 표현한다. 한편, PDL 언어 데이터 해석 유닛(202)으로부터 인쇄 데이터를 본 경우의 페이지 번호를, 해석중인(또는 이미 해석된) 제3 페이지 등으로 표현한다.
(페이지 병렬 처리의 시퀀스)
본 실시예는, 인쇄 데이터의 페이지 기술 언어로서 페이지 비독립적인 기술이 가능한 PS를 채택하는 경우의 페이지 병렬 처리를 대상으로 하고 있다. PS에서는, 인쇄 처리를 위한 정보를, 페이지를 걸쳐서 인쇄 데이터의 모든 부분에 기술 가능하다.
그 때문에, PS의 인쇄 처리에 대하여 페이지 병렬 기술을 채택하는 경우, 멀티스레드 처리를 행하기 위한 각각의 스레드의 PDL 언어 데이터 해석 유닛(202)이, 데이터의 선두로부터 데이터의 언어를 해석할 필요가 있다.
본 실시예에서는, 도 4에 도시한 바와 같이, PS 인터프리터(201)는 2개의 동작 모드에서 처리를 수행한다. 첫번째 처리는 페이지 스킵 처리이다. 페이지 스킵 처리에서, PS 인터프리터(201)는, PDL 언어 데이터 해석 유닛(202)을 사용한 언어 해석 처리를 행한다. 다른 처리는 페이지 묘화 처리이다. 페이지 묘화 처리에서, PS 인터프리터(201)는, PDL 언어 데이터 해석 유닛(202)을 사용한 언어 해석 처리와, DL 생성 유닛(203)을 사용한 DL 생성 처리 양쪽을 수행한다. 페이지 스킵 처리는, DL 생성 처리를 행하지 않기 때문에 빨리 진행하고, 따라서 DL 생성 대상 페이지 직전의 페이지가 도달할 때까지 페이지 스킵 처리에 의해 처리가 행해진다. 한편, DL 생성 대상 페이지에 대해서는, PS 인터프리터(201)는 페이지 묘화 처리에 의해 처리를 행한다. 페이지 스킵 처리 및 페이지 묘화 처리 양쪽에서도 언어 해석 처리가 행해진다. 그로 인해, 데이터의 선두 페이지로부터 DL 생성 대상 페이지까지 예외 없이 언어 해석 처리가 행하여지므로, 해당 DL 생성 대상 페이지에 필요한 정보가 부족하게 될 가능성은 없고, 정상적으로 인쇄 처리를 행할 수 있다.
페이지 스킵 처리 및 페이지 묘화 처리가 모두 완료되면, 이미 해석된 페이지 수를 나타내는 페이지 카운터(이하, PageCount)에 의해 이미 해석된 페이지 수가 각각의 PS 인터프리터(201)에서 카운트된다. PageCount의 값은 언어 해석 처리가 시작되기 전에 초기값으로서 "0"으로 설정되지만, 언어 해석 처리가 문제없이 완료되면 그 값은 "1"로 증분된다. 예를 들어, 도 3a에 나타내는 Page 1의 "showpage" 커맨드에 의해 나타내는 것 같은 페이지 구획자 커맨드의 해석이 완료되면, PageCount의 값이 "1"로 증분된다.
도 5는, 페이지 병렬 처리의 간이 시퀀스도를 나타낸다. 도 5에서는, 전술한 페이지 리셋 커맨드를 포함하지 않은 일반적인 인쇄 데이터에 대해 처리가 행해지는 경우의 예가 나타나고 있다.
스레드 A로서 기동되는 페이지 병렬 제어 유닛(200)에 의해, 스레드 B1 및 스레드 B2가 기동되고, 스레드 B1 및 B2의 각각에 PS 인터프리터(201)가 할당된다. 처리의 개시에 응답하여, PS 인터프리터(201)는 페이지 병렬 제어 유닛(200)에 처리 대상 페이지 번호를 문의한다. 이때, 각각의 PS 인터프리터(201)의 PageCount는, 아직 언어 해석 처리가 시작되기 전이므로 "0"이다.
페이지 병렬 제어 유닛(200)은, 각각의 스레드의 병렬성을 고려하여, 각각의 스레드에 할당되는 DL 생성 대상 페이지 번호를 통지한다. 도 5에 도시하는 예에서는, 스레드 B1는 먼저 제2 페이지를 처리하도록 지시되고, 스레드 B2는 제1 페이지를 처리하도록 지시된다. 도 5에 도시하는 예에서는, 페이지 병렬 제어 유닛(200)은, DL 생성 대상 페이지 번호를 파라미터 "OutputPage"에 의해 관리하고, 각각의 PS 인터프리터(201)에 OutputPage의 값을 통지함으로써 각각의 PS 인터프리터(201)에 DL 생성 대상 페이지 번호를 통지한다. 페이지 병렬 제어 유닛(200)에 의해 OutputPage가 통지되면, PS 인터프리터(201)는 OutputPage가 나타내는 페이지 번호까지의 페이지에 대하여 페이지 스킵 처리를 행한다. 그 다음, PS 인터프리터(201)는, OutputPage가 나타내는 페이지 번호의 페이지에 대하여 페이지 묘화 처리를 행한다. 즉, PS 인터프리터(201)는, PageCount가 나타내는 이미 해석된 페이지 수와 OutputPage가 나타내는 페이지 번호가 서로 일치하는 페이지에 대하여 페이지 묘화 처리를 행하고, 이미 해석된 페이지 수와 페이지 번호가 서로 일치하지 않는 페이지에 대해서는 페이지 스킵 처리를 행한다.
스레드 B2에 통지되는 OutputPage가 나타내는 페이지 번호는, "1"이다. 따라서, 스레드 B2는, 제1 페이지에 대하여 페이지 묘화 처리를 행한다. 구체적으로는, 언어 해석 처리가 완료되면, 스레드 B2의 PS 인터프리터(201)는 PS 인터프리터(201) 자체가 관리하는 PageCount를 "1"로 증분한다. 그 후, 스레드 B2의 PS 인터프리터(201)는, 페이지 병렬 제어 유닛(200)에 의해 통지된 OutputPage와 PageCount를 비교한다. 그 다음, 비교 결과가 양쪽 값이 동일한 값인 것을 나타내는 경우, 스레드 B2의 PS 인터프리터(201)는, 계속해서 OutputPage가 나타내는 페이지 번호의 페이지의 DL 생성 처리를 행한다. 이와 같이, 언어 해석 처리의 완료 시의 PageCount와 OutputPage의 비교 결과에 따라, 언어 해석 처리만을 행함으로써 완료되는 페이지 스킵 처리와, DL 생성 처리까지 처리가 행해지는 페이지 묘화 처리 사이에서 처리가 전환된다.
한편, 스레드 B1에 통지되는 OutputPage가 나타내는 페이지 번호는 "2"이다. 따라서, 스레드 B1은, 제1 페이지에 대해서는 페이지 스킵 처리를 행하고, 제2 페이지에 대해서는 페이지 묘화 처리를 행한다. 이 처리는 상세하게 설명된다. 스레드 B1에서는, 제1 페이지의 페이지 스킵 처리의 언어 해석 처리가 완료되면, 스레드 B1의 PS 인터프리터(201)는 PS 인터프리터(201) 자체가 관리하는 PageCount를 "1"로 증분한다. 그 다음, PS 인터프리터(201)는, 페이지 병렬 제어 유닛(200)에 의해 통지된 OutputPage와 PageCount를 비교한다. 제1 페이지의 언어 해석이 완료된 시점에서는, OutputPage의 값은 PageCount의 값과는 상이하다. 그로 인해, 스레드 B1의 PS 인터프리터(201)는, DL 생성 처리를 행하지 않고, 계속해서 다음 페이지의 언어 해석 처리를 개시한다. 제2 페이지의 페이지 묘화 처리의 언어 해석 처리가 완료되면, 스레드 B1의 PS 인터프리터(201)는, PageCount를 "2"로 증분하고, 다시 OutputPage와 PageCount를 비교한다. 제2 페이지의 언어 해석이 완료된 시점에서는, OutputPage의 값과 PageCount의 값은 동일한 값이기 때문에, 스레드 B1의 PS 인터프리터(201)는, 가장 최근에 해석을 완료한 페이지(여기서는, 제2 페이지)의 DL 생성 처리를 수행한다.
그 후, 제1 페이지의 페이지 묘화 처리가 완료되면, 스레드 B2는 페이지 병렬 제어 유닛(200)에 DL 생성의 완료를 통지하고, 다음 처리 대상 페이지 번호를 문의한다. 도 5에 도시하는 예에서, 스레드 B2로부터 상기 문의를 수신하는 타이밍에서는, 아직 제3 페이지의 처리를 지시하고 있지 않다. 따라서, 제3 페이지를 나타내는 페이지 번호를 OutputPage로서 스레드 B2에 통지한다. 이후, 마찬가지로 PS 인터프리터(201)는 페이지 병렬 제어 유닛(200)에 DL 생성 대상 페이지를 문의하고, 언어 해석 처리를 행하고, PageCount 값을 증분하고, PageCount를 OutputPage와 비교하고, 따라서 DL 생성 판정을 반복한다. 이에 의해, 페이지 스킵 처리와 페이지 묘화 처리 간의 전환을 행하면서 최종 페이지가 도달될 때까지 처리가 계속되어, 페이지 병렬 처리가 실현된다.
도 6은, 도 3a에 도시된 바와 같은, startjob가 제1 페이지와 제2 페이지의 사이에 포함되는 경우의, 종래 기술에서의 페이지 병렬 처리의 간이 시퀀스도를 나타내고 있다. 도 5에 도시하는 예와 마찬가지로, 페이지 병렬 제어 유닛(200)에 의해, 스레드 B1 및 스레드 B2가 기동되고, 각각의 스레드에는 PS 인터프리터(201)가 할당된다. 각각의 스레드에는 페이지 병렬 제어 유닛(200)에 의해 순서대로 OutputPage가 통지되지만, 도 6에 나타내는 예에서는, 도 3a에 나타내는 인쇄 데이터와 같이, startjob가 제1 페이지의 "Showpage" 이후, 즉, 제2 페이지의 첫머리에 존재한다. startjob와 같은 페이지 리셋 커맨드를 검지(해석)하면, PS 인터프리터(201)는, 각각의 PS 인터프리터(201)에 의해 관리되고 있는 PageCount를 "0"으로 리셋한다. 한편, 페이지 병렬 제어 유닛(200)은 PS 인터프리터(201)에 의해 PageCount가 리셋된 것을 파악하고 있지 않으므로, 페이지 병렬 제어 유닛(200)은 PS 인터프리터(201)에 대해서는, 리셋을 고려하고 있지 않은 OutputPage의 값을 그대로 통지한다.
도 6에 나타내는 예에서는, 작업을 개시할 시에, 스레드 B1에는 페이지 병렬 제어 유닛(200)에 의해 페이지 번호로서 "2"를 나타내는 OutputPage가 통지된다. 따라서, 스레드 B1의 PS 인터프리터(201)는, 제1 페이지의 처리를 페이지 스킵 처리에 의해 수행하고, PageCount를 "1"로 증분한다. 그 후, 제2 페이지의 언어 해석 처리에 의해 startjob가 검지되기 때문에, 스레드 B1의 PS 인터프리터(201)는, PS 인터프리터(201) 자체에 의해 관리되는 PageCount를 "0"으로 리셋한다. 전술한 바와 같이, startjob는, 지금까지의 작업에 의해 정의되어 있는 내용 등을 초기화해서 무효화하는 커맨드이다. 따라서, 스레드 B1의 PS 인터프리터(201)는, 제1 페이지의 처리와 마찬가지의 동작을 수행한다. 즉, 스레드 B1의 PS 인터프리터(201)는, 페이지 병렬 제어 유닛(200)에 처리 대상 페이지를 문의한다. 그러나, 페이지 병렬 제어 유닛(200)은 리셋을 고려하고 있지 않다. 이로 인해, 페이지 병렬 제어 유닛(200)은, 스레드 B1에 대하여 통지된 OutputPage "2"의 생성 완료의 통지를 받지 않고 있으므로, 페이지 병렬 제어 유닛(200)은 스레드 B1에 대하여 OutputPage로서 "2"를 다시 통지한다. 스레드 B1에서는, 인쇄 데이터의 제2 페이지의 처리에서는, 언어 해석 처리의 완료 시점에서의 PageCount는 "1"이며, 이는 OutputPage의 "2"와 일치하지 않는다. 따라서, 스레드 B1에서는, 인쇄 데이터의 제2 페이지에 대해서는 페이지 스킵 처리가 수행되므로, DL 생성이 수행되지 않게 된다.
이어서, 다른 스레드 B2의 처리에 대해서 설명한다. 작업을 개시하면, 스레드 B2에는 페이지 병렬 제어 유닛(200)에 의해 OutputPage로서 "1"이 통지된다. 이로 인해, 제1 페이지에 대해서는, 페이지 묘화 처리가 행해지고, PageCount는 "1"로 증분된다. 그 후, 스레드 B2의 PS 인터프리터(201)에 의한 페이지 병렬 제어 유닛(200)에의 OutputPage의 문의에 응답하여, "3"이 통지된다. 이로 인해, 스레드 B2의 PS 인터프리터(201)는, 제3 페이지의 페이지 묘화 처리를 행하기 위해서, 미해석의 페이지인 제2 페이지의 페이지 스킵 처리를 개시한다. 그때, 제2 페이지의 선두에서 startjob가 검지되므로, 스레드 B2의 PS 인터프리터(201)는, PS 인터프리터(201) 자체가 관리하는 PageCount를 "0"으로 리셋한다. 그 후, 스레드 B2의 PS 인터프리터(201)는, 다시 페이지 병렬 제어 유닛(200)에 OutputPage를 문의한다. 이때, 페이지 병렬 제어 유닛(200)은 리셋을 고려하고 있지 않다. 따라서, 페이지 병렬 제어 유닛(200)은, 스레드 B2에 대하여 통지된 "3"의 페이지의 DL 생성의 완료 통지를 아직 수신하지 않았으므로, 페이지 병렬 제어 유닛(200)은 스레드 B2에 대하여 OutputPage로서, "3"을 다시 통지한다. 이 결과, 스레드 B2에 의한 인쇄 작업의 제2 페이지의 처리에서는, PageCount와 OutputPage가 서로 일치하지 않고, 인쇄 데이터의 제2 페이지는 페이지 스킵 처리에 의해 처리되고, DL 생성은 수행되지 않는다. 따라서, 인쇄 데이터의 제2 페이지는 인쇄 용지 상에 출력되지 않는다.
그 후의 처리에서는, 도 6에 도시한 바와 같이, 처리 대상 페이지 번호에서 불일치가 발생한 상태에서 DL이 생성된다. 페이지 리셋 커맨드를 포함하는 페이지(본 예에서는, 인쇄 데이터의 제2 페이지) 이후의 페이지(인쇄 데이터의 제3 페이지 및 이후 페이지)에 대해서, 처리를 행하는 PS 인터프리터에서의 불일치가 발생하더라도, DL 자체가 생성된다. 따라서, 결과로서는, 페이지 리셋 커맨드를 포함하는 페이지의 인쇄가 수행되지 않는 현상이 발생한다. 이와 같이, 도 6에 나타내는 예에서는, startjob의 페이지 리셋 커맨드의 처리에 기인하는, PageCount와 OutputPage 사이의 값의 불일치에 기인해서 제2 페이지가 인쇄되지 않는 상황에서 처리가 수행된다. 이로 인해, 본 실시예에서는, PS 인터프리터(201)에서, 이러한 불일치를 해결함으로써, startjob를 포함하는 인쇄 데이터에서도, 정상적인 출력 결과를 얻는 것이 가능하게 된다.
도 7은 도 3a에 도시한 바와 같이, startjob가 제1 페이지와 제2 페이지 사이에 포함되는 경우에 본 실시예에서의 페이지 병렬 처리의 간이 시퀀스도를 나타내고 있다. 여기에서는, PS 인터프리터(201)는 PageCount뿐만 아니라, 페이지 카운터 값, 즉 CachePage를 유지한다. CachePage는 startjob의 검지 시에 이미 언어 해석이 완료된 페이지 수를 유지하는 카운터 값이다. 즉, CachePage는 PageCount와는 다른 종류의 페이지 수를 유지하는 카운터 값이다. 또한, CachePage는 전술한 페이지 리셋 커맨드를 검지한 경우에도 리셋되지 않는다. startjob가 검지된 후에 페이지 병렬 제어 유닛(200)이 리셋을 고려할 수 없는 것에 기인하는, PageCount와 OutputPage 사이의 페이지 수 차이는, CachePage에 의해 제거된다. 도 6에 나타내는 처리에서는, DL 생성을 수행할지를 판정하는 경우에, PS 인터프리터(201)는 OutputPage를 PageCount와 비교하고 있지만, 본 실시예에서는, 이러한 비교 처리를 변경한다. 구체적으로는, 본 실시예의 PS 인터프리터(201)는, PageCount와 CachePage의 합을, OutputPage와 비교한다. 그 다음, 양쪽값이 동일한 값일 경우에, DL 생성 처리가 수행된다.
도 7에 나타내는 처리에서는, 인쇄 데이터의 제1 페이지 스레드 B1 및 B2의 처리는, 도 6에 나타내는 제1 페이지의 처리와 동일하다. 인쇄 데이터의 제2 페이지의 언어 해석 처리를 개시하고 startjob를 검지하면, 스레드 B1 및 스레드 B2는, CachePage에 PageCount의 값을 설정하고 나서, PageCount를 "0"으로 리셋한다. 도 7에 나타내는 예에서는, startjob의 검지 타이밍에서는, CachePage에는 "1"이 설정된다.
스레드 B1에서는, startjob를 검지하는, 인쇄 데이터의 제2 페이지의 처리 시에는, 페이지 병렬 제어 유닛(200)에 의해 OutputPage로서 다시 "2"가 통지된다. 도 7에 나타내는 처리에서는, PageCount와 CachePage의 합을 사용하는 처리를 행한다. 인쇄 데이터의 제2 페이지의 언어 해석 처리 후, PageCount가 증분되고, 그 결과, PageCount와 CachePage의 합은, "1"+"1"="2"이 되고, 이는 OutputPage와 동일한 값이 된다. 따라서, 스레드 B1은, 인쇄 데이터의 제2 페이지의 DL 생성 처리를 수행한다. 그 결과, 인쇄 데이터의 제2 페이지는 기록 용지 상에 출력된다.
스레드 B2의 처리가 논의된다. 스레드 B2에서는, startjob가 검지되는, 인쇄 데이터의 제2 페이지의 처리 시에, 페이지 병렬 제어 유닛(200)에 의해 OutputPage로서 다시 "3"이 통지된다. 한편, 스레드 B2에서의 인쇄 데이터의 제2 페이지의 언어 해석 처리 후에, PageCount가 증분되어 "1"이 된다. 즉, PageCount와 CachePage의 합은 "1"+"1"="2"이 되고, 이는 OutputPage와 동등하지 않다. 따라서, 스레드 B2에서는, 인쇄 데이터의 제2 페이지의 DL 생성 처리가 행하여지지 않고, 페이지 스킵 처리가 행해진다. 그 후, 스레드 B2에서는, 인쇄 데이터의 제3 페이지의 처리가 계속되고, 언어 해석 처리가 완료되면, PageCount는 "2"가 된다. 그 다음, PageCount와 CachePage의 합은 "2"+"1"="3"이 되고, 이는 OutputPage와 동등하다. 따라서, DL 생성 처리가 수행된다. 이와 같이, PageCount와 CachePage의 합이 OutputPage와 동일하게 되는 경우를 DL 생성 처리의 수행 조건으로서 설정함으로써, OutputPage와 PageCount 사이의 값의 차이를 제거하고, 정상적으로 페이지 병렬 처리를 수행할 수 있다.
(페이지 병렬 제어 유닛의 제어 플로우)
다음으로, 도 8을 사용하여, 페이지 병렬 제어 유닛(200)에서의 페이지 병렬 처리의 페이지 제어에 대해서 설명한다. 페이지 병렬 제어 유닛(200)은, 페이지 제어를 위한 페이지 카운터 값으로서 OutputPage를 페이지 병렬 제어 유닛(200) 자체에 의해 관리한다. OutputPage는, DL 생성을 수행시키는 처리 대상 페이지 번호를 PS 인터프리터에 통지하기 위해서 사용된다. OutputPage의 값은, 인쇄 데이터의 페이지 번호를 나타낸 값이며, 페이지 리셋 커맨드가 있는 경우에도 그 값을 유지하고 있으므로, OutputPage의 값은 오리지날 페이지 번호라고도 말할 수 있다. 인쇄 데이터가 네트워크 I/F(104)에서 수신되는 경우, 중앙 처리 유닛(101)에 의해, 도 8에 나타내는 처리가 개시된다. 도 8에 나타내는 처리는, 주 저장 디바이스(102) 상에 전개된 프로그램을 중앙 처리 유닛(101)이 실행함으로써 실현된다. 중앙 처리 유닛(101)은, 프로그램의 실행에 따라, 페이지 병렬 제어 유닛(200)으로서 기능한다.
먼저, 단계 S800에서 페이지 병렬 제어 유닛(200)은, 인쇄 데이터를 수신한다.
이어서, 단계 S801에서, 페이지 병렬 제어 유닛(200)은, 초기화 처리로서 OutputPage에 0을 설정한다.
다음으로, 단계 S802에서, 페이지 병렬 제어 유닛(200)은, PS 인터프리터로서 기능하는 PS 인터프리터 스레드를 기동한다. 여기에서는, 도 7에 나타난 바와 같이, 스레드 B1 및 B2는 PS 인터프리터(201)로서 기동된다.
다음으로, 단계 S803에서, 페이지 병렬 제어 유닛(200)은, 단계 S802에서 기동된 PS 인터프리터(201)로부터의 통신을 대기한다. 여기에서는, 페이지 병렬 제어 유닛(200)은 PS 인터프리터(201)로부터의 DL 생성 대상 페이지에 대한 문의 또는 DL 생성 완료 통지의 통신을 대기한다. PS 인터프리터(201)의 스레드로부터 문의 또는 통지의 통신을 수신하면, 페이지 병렬 제어 유닛(200)은 단계 S804으로 처리를 진행시킨다.
다음으로, 단계 S804에서, 페이지 병렬 제어 유닛(200)은, 단계 S803에서 PS 인터프리터(201)로부터 수신한 통신이, DL 생성 처리 대상 페이지에 대한 문의인지를 판정한다. 통신이 DL 생성 처리 대상 페이지에 대한 문의인 경우에, 페이지 병렬 제어 유닛(200)은 단계 S805로 처리를 진행시킨다. 통신이 처리 대상 페이지에 대한 문의가 아닌 경우에는, 페이지 병렬 제어 유닛(200)은 단계 S808로 처리를 진행시킨다.
이어서, 단계 S805에서, 페이지 병렬 제어 유닛(200)은, 문의를 받은 스레드에 대하여 통지된 OutputPage의 DL 생성 처리가 완료되었는지의 여부를 판정한다. 페이지 병렬 제어 유닛(200)은, 스레드마다 DL 생성 처리 대상 페이지를 할당하고 있고, 어느 스레드에 어느 처리 대상 페이지를 할당하는지를 관리하고 있다. 구체적으로는, 페이지 병렬 제어 유닛(200)은, 문의를 받은 스레드와, 그 스레드에 대하여 통지된 OutputPage의 값을 서로 관련지어서 관리하고 있다. 문의를 받은 스레드에 대하여 통지된 OutputPage에 대한 DL 생성 완료 통지를 아직 수신하지 않은 경우에는, 처리는 단계 S807로 진행한다. 문의를 받은 스레드에 대하여 통지된 OutputPage에 대한 DL 생성 완료 통지를 수신한 경우에는, 처리는 단계 S806으로 진행한다. 단계 S805에서, 스레드에 대하여 할당된 OutputPage가 없을 경우, 즉, 제1 페이지의 처리 경우에는, 처리는 단계 S806으로 진행하는 것으로 가정한다.
단계 S806에서, 페이지 병렬 제어 유닛(200)은, OutputPage에 1을 가산함으로써 다음 DL 생성 처리 대상 페이지로서 통지될 값을 갱신한다.
단계 S807에서, 페이지 병렬 제어 유닛(200)은, 처리 대상 페이지에 대한 문의를 받은 스레드(여기에서는, PS 인터프리터(201))에, OutputPage의 값을 통지한다. 그 후, 페이지 병렬 제어 유닛(200)은 단계 S803으로 처리를 복귀시킨다.
단계 S804에서 통신이 처리 대상 페이지에 대한 문의가 아닌 것으로 판정한 경우, 단계 S808에서 페이지 병렬 제어 유닛(200)은, 단계 S803에서 PS 인터프리터(201)로부터 수신한 통신이, DL 생성 완료 통지인 지를 판정한다. 통신이 DL 생성 완료 통지인 경우에는, 페이지 병렬 제어 유닛(200)은 단계 S809으로 처리를 진행시킨다. 통신이 DL 생성 완료 통지가 아닌 경우에는, 페이지 병렬 제어 유닛(200)은 단계 S803으로 복귀되어 처리를 반복한다.
다음으로, 단계 S809에서, 페이지 병렬 제어 유닛(200)은, 생성된 DL을 버퍼(204)의 버퍼 영역에 스풀한다. 각각의 스레드에 의해 DL 생성의 순서가 반전되는 경우가 있으므로, 페이지 병렬 제어 유닛(200)은, 생성된 DL을 일시적으로 버퍼 영역에 스풀한다.
이어서, 단계 S810에서, 페이지 병렬 제어 유닛(200)은, 단계 S803에서 PS 인터프리터(201)로부터 수신한 DL 생성 완료 통지의 페이지 번호까지의 모든 페이지 번호에 대해 DL 생성이 완료되었는 지를 판정한다. 모든 페이지 번호에 대해 DL 생성이 완료된 경우에는, 페이지 병렬 제어 유닛(200)은 단계 S811으로 처리를 진행시킨다. 모든 페이지 번호에 대해 DL 생성이 아직 완료되지 않은 경우에는, 페이지 병렬 제어 유닛(200)은 단계 S803으로 복귀되어 처리를 반복한다.
다음으로, 단계 S811에서, 페이지 병렬 제어 유닛(200)은, 버퍼(204)에 스풀되어 있는 모든 DL을 페이지 순서에 따라 렌더링 유닛(205)에 전송한다.
다음으로, 단계 S812에서, 페이지 병렬 제어 유닛(200)은, 인쇄 데이터에 포함되는 모든 페이지 분의 DL을 전송했는지를 판정한다. 이러한 판정을, 예를 들어 단계 S802에서 기동된 스레드 B1 및 스레드 B2의 양쪽이 정지하고 있는지의 여부를 판정함으로써, 수행할 수 있다. 인쇄 데이터에 포함되는 모든 페이지 분의 DL을 전송한 경우에는, 페이지 병렬 제어 유닛(200)은 단계 S813으로 처리를 진행시킨다. 인쇄 데이터에 포함되는 모든 페이지 분의 DL을 아직 전송하지 않은 경우에는, 페이지 병렬 제어 유닛(200)은 단계 S803으로 복귀되어, 처리를 반복한다.
다음으로, 단계 S813에서, 페이지 병렬 제어 유닛(200)은, 페이지 병렬 제어 유닛(200) 자체의 스레드인 스레드 A를 정지시키고, 본 처리를 완료한다.
이상의 처리에 의해, 페이지 병렬 제어 유닛(200)에 의한 페이지 병렬 처리의 페이지 제어가 수행된다.
(PS 인터프리터의 병렬 DL 생성 제어의 플로우)
다음으로, 도 9에 나타내는 흐름도를 사용하여, PS 인터프리터(201)의 스레드 B1 및 B2에서의 병렬 DL 생성 제어의 플로우에 대해서 설명한다. 이들 스레드는, 도 8에 나타내는 단계 S802에서의 처리에서 페이지 병렬 제어 유닛(200)에 의해 기동되는 스레드이다. 그 다음, 도 9에 나타내는 처리는, 페이지 병렬 제어 유닛(200)에 의해 PS 인터프리터(201)로서 스레드가 기동된 후의 각각의 스레드의 처리이다. 먼저, 도 9에 나타내는 처리의 전체적인 개요를 설명한다.
PS 인터프리터(201)는 PS 인터프리터(201) 자체가 관리하는 페이지 카운터로서, 3개의 카운터 값, 즉 PageCount, CachePage, 및 myOutputPage를 갖고 있다. PageCount는 이미 설명한 바와 같이, PS 인터프리터(201)가 언어 해석을 이미 완료한 페이지 수를 나타내는 값을 저장하는 카운터 값이다. CachePage는 startjob 등, PageCount를 리셋하는 PDL 커맨드를 검지한 시점에 이미 언어 해석이 완료된 페이지 수의 값(즉, 그 시점의 PageCount의 값)을 저장하는 카운터 값이다. CachePage에 저장되어 있는 값에 PageCount의 값을 가산함으로써, CachePage에 저장되어 있는 값은 갱신된다. 또한, myOutputPage는 도 8에서 설명한 OutputPage가 페이지 병렬 제어 유닛(200)에 의해 통지된 시점에 OutputPage가 나타내는 값을 내부적으로 저장하는 카운터 값이다. 이들 카운터 값 중, CachePage는 페이지 리셋 커맨드를 검지한 경우에도 그 값을 계속해서 유지하는 카운터 값이다.
페이지 병렬 제어 유닛(200)으로부터 처리 대상 페이지 번호(OutputPage)를 수신하면, PS 인터프리터(201)는 myOutputPage에 그 값을 저장하고, 처리를 개시한다. 그 다음, PageCount와 CachePage의 합이 myOutputPage보다도 작은 동안에는, PS 인터프리터(201)는, PageCount를 증분하면서, 언어 해석 처리만을 수행한다(즉, 페이지 스킵 처리를 수행한다). PageCount와 CachePage의 합이 myOutputPage와 동일하게 되는 경우에, PS 인터프리터(201)는, 언어 해석과 DL 생성(즉 페이지 묘화 처리)을 수행한다. DL 생성이 완료되면, PS 인터프리터(201)는, 페이지 병렬 제어 유닛(200)에 DL 생성이 수행된 페이지 번호와 함께 완료를 통지하고, 다음의 처리 대상 페이지 번호를 페이지 병렬 제어 유닛(200)에 문의한다.
startjob를 검지하면, PS 인터프리터(201)는, CachePage에 PageCount와 CachePage의 합을 설정하고, PageCount의 값을 "0"으로 리셋한다. 그 후, PS 인터프리터(201)는, 페이지 병렬 제어 유닛(200)에 처리 대상 페이지 번호를 다시 문의하고, 처리를 반복한다. PageCount의 값은 startjob가 검지되는 경우에 리셋되지만, 리셋 전의 PageCount의 값은 CachePage에 유지되어 있다. 따라서, PS 인터프리터(201)는, 처리 중에 페이지에 대한 DL 생성을 수행할지를 판정할 시에 PageCount와 CachePage의 합을 사용함으로써 페이지에서의 불일치를 해결할 수 있다.
이하, 도 9에 나타내는 흐름도에 대해서 설명한다. 도 5에 도시하는 단계 S802에서, 페이지 병렬 제어 유닛(200)에 의해 스레드 B1 및 B2가 확립되는 경우에, 본 처리가 개시된다.
먼저, 단계 S901에서, PS 인터프리터(201)는, 초기화 처리로서, 페이지 카운터 값의 CachePage를 0으로 설정한다. 단계 S902에서, PS 인터프리터(201)는, 초기화 처리로서, 페이지 카운터 값의 myOutputPage를 0으로 설정한다. 단계 S903에서, PS 인터프리터(201)는, 초기화 처리로서, 페이지 카운터 값의 PageCount를 0으로 설정한다.
다음으로, 단계 S904에서, PS 인터프리터(201)는, 페이지 병렬 제어 유닛(200)에 DL 생성 처리 대상 페이지의 페이지 번호를 문의한다. 페이지 병렬 제어 유닛(200)에 의해 처리 대상 페이지의 페이지 번호(OutputPage)가 통지되면, PS 인터프리터(201)는 단계 S905로 처리를 진행시킨다.
다음으로, 단계 S905에서, PS 인터프리터(201)는, 내부 페이지 카운터 값의 myOutputPage에, 단계 S904에서 통지된 DL 생성 대상 페이지의 페이지 번호의 값을 저장한다.
다음으로, 단계 S906에서, PS 인터프리터(201)는, PDL 언어 데이터 해석 유닛(202)에 의해 인쇄 데이터의 언어 해석 처리를 수행한다. 이러한 언어 해석 처리는, 페이지 리셋 커맨드 또는 페이지 구획자 커맨드를 검지할 때까지 수행된다.
다음으로, 단계 S907에서, PS 인터프리터(201)는, 단계 S906에서, 언어 해석을 수행한 결과, startjob 등, PageCount를 리셋하는 페이지 리셋 커맨드를 검지했는지를 판정한다. 페이지 리셋 커맨드를 검지하지 않은 경우에는, PS 인터프리터(201)는 단계 S909로 처리를 진행시킨다. 페이지 리셋 커맨드를 검지한 경우에는, PS 인터프리터(201)는 단계 S908로 처리를 진행시킨다.
다음으로, 단계 S908에서, PS 인터프리터(201)는, CachePage의 값을 갱신한다. 전술한 바와 같이, startjob를 검지했을 경우, PS 인터프리터(201)는, 내부적인 페이지 수 제어값인 PageCount를 리셋해야만 한다. 본 실시예에서는, 리셋의 관점에서 리셋 전의 PageCount의 값을 CachePage에 저장함으로써, 페이지 병렬 제어 유닛(200)에 의해 관리되고 있는 OutputPage의 값과의 차이가 제거된다. 또한, 복수의 페이지 리셋 커맨드가 인쇄 데이터에 포함되어 있는 경우도 있으므로, 단계 S908에서의 처리에서는, 그 시점까지의 CachePage의 값에 PageCount의 값을 가산하여 얻은 값을 CachePage의 값으로서 갱신하는 처리가 행해진다. 그 다음, PS 인터프리터(201)는 단계 S902로 처리를 복귀시킨다.
한편, 단계 S909에서, PS 인터프리터(201)는, 언어 해석을 수행한 결과, 페이지 구획자 커맨드를 검지했는지를 판정한다. 페이지 구획자 커맨드는, PS에서 showpage, erasepage, 및 copypage 등의 커맨드(오퍼레이터)에 해당된다. 페이지 구획자 커맨드를 검지한 경우에는, PS 인터프리터(201)는 단계 S910으로 처리를 진행시킨다. 페이지 구획자 커맨드를 검지하지 않았을 경우, 이는 PDL 데이터의 종단부에 도달한 것을 의미하므로, PS 인터프리터(201)는 처리를 완료한다.
단계 S910에서, PS 인터프리터(201)는, PageCount의 값에 1을 가산함으로써 카운터 값을 갱신한다.
단계 S911에서, PS 인터프리터(201)는, myOutputPage의 값이 PageCount와 CachePage의 합과 동등한지를 판정한다. 단계 S911에서의 처리에서는, 단계 S906에서의 처리를 통해서 언어 해석이 완료된 페이지가 페이지 병렬 제어 유닛(200)에 의해 통지된 DL 생성 처리 대상 페이지(OutputPage)인지가 판정된다. 양쪽이 동등한 경우에는, PS 인터프리터(201)는 단계 S906에서의 처리에 의해 언어 해석이 완료된 페이지가 DL 생성 처리 대상 페이지라고 판정하고, 단계 S912로 처리를 진행시킨다. 양쪽이 동등하지 않은 경우에는, PS 인터프리터(201)는 단계 S906으로 복귀되어, 처리를 반복한다.
다음으로, 단계 S912에서, PS 인터프리터(201)는, DL 생성 유닛(203)을 사용해서 단계 S906에서의 처리에 의해 언어 해석이 완료된 페이지의 DL 생성 처리를 수행한다.
다음으로, 단계 S913에서, PS 인터프리터(201)는, 페이지 병렬 제어 유닛(200)에, myOutputPage의 DL 생성 처리가 완료된 것을 통지한다.
이상의 처리에 의해, PS 인터프리터(201)에 의한, 스레드 B1 및 B2에서의 병렬 DL 생성 제어가 수행된다.
이상 설명한 바와 같이, 본 실시예에서의 멀티코어 시스템을 채택한 중앙 처리 유닛(101)을 포함하는 화상 형성 장치는, 멀티스레드에 의해 인쇄 처리를 수행한다. 이 인쇄 처리의 수행 시에 페이지 리셋을 지시하는 PDL 커맨드를 검지하면, 화상 형성 장치는, 내부의 캐시 값에 리셋 전의 페이지 카운터 값을 저장하고, 이후의 처리를 계속한다. 내부 페이지 카운터 값의 리셋 후, DL 생성을 수행할지를 판정하는 경우에, 이 캐시 값을 판정 처리에 이용함으로써, 페이지 병렬 제어 유닛(200)과 PS 인터프리터(201) 사이의 내부 페이지 카운터 값의 차이를 제거할 수 있다. 이에 의해, 페이지 리셋 커맨드를 포함하는 인쇄 데이터를 처리하는 경우에, 페이지 제어의 불일치를 회피할 수 있다. 또한, 내부 페이지 카운터 값 자체는, 페이지 리셋 커맨드에 따라서 리셋되므로, 예를 들어, 동일 작업 내에서 동일한 페이지 번호를 복수 사용해서 인쇄를 행하는 경우에 대응할 수 있다.
(변형예)
제1 실시예에서는, 각각의 PS 인터프리터(201)가 CachePage를 유지하고 페이지 수의 불일치가 해결되는 예를 설명하였다. 변형예에 있어서는, CachePage에 상당하는 카운터 값을 페이지 병렬 제어 유닛(200)이 유지할 수도 있고, 페이지 병렬 제어 유닛(200) 측의 제어에 의해 불일치가 해결될 수 있다. 이 경우에는, PS 인터프리터(201)에 의해 startjob를 검지한 시점의 PageCount의 값을 페이지 병렬 제어 유닛(200)에 통지한다. 그 다음, 페이지 병렬 제어 유닛(200)에서는, PS 인터프리터(201)에 의해 통지된 PageCount의 값이, 페이지 병렬 제어 유닛(200) 자체가 관리하는 CachePage로 설정된다. 그때, 페이지 병렬 제어 유닛(200)은, PageCount의 값의 통지원인 PS 인터프리터(201)에 대하여 통지된 OutputPage를 리셋한다. 즉, PageCount의 값의 통지원인 PS 인터프리터(201)로부터 다시 처리 대상 페이지에 대한 문의를 수신하면, 페이지 병렬 제어 유닛(200)은, OutputPage의 값으로부터 CachePage의 값을 차감하여 얻은 값을 PS 인터프리터(201)에 통지한다. PS 인터프리터(201) 측에서는, PS 인터프리터(201)가 startjob를 검지한 시점에서의 PageCount의 값을 페이지 병렬 제어 유닛(200)에 통지하는 처리만을 행하는 것이 필요하다. 즉, PS 인터프리터(201) 측에서는, PageCount값을 OutputPage와 비교해서 양쪽 값이 일치한 페이지에 대하여 DL 생성 처리를 행하는 처리만을 행하는 것이 필요하다. 이와 같이, 페이지 병렬 제어 유닛(200) 측의 제어에 의해, 페이지 병렬 제어를 행하는 경우에 불일치를 회피하는 것도 가능하다.
(제2 실시예)
제1 실시예에서는, 페이지 병렬 제어 유닛(200)과 PDL 언어 데이터 해석 유닛(202) 사이의 내부 페이지 카운터 값의 차이 자체가 캐시 값으로서 유지되는 예를 설명하였다. 그 다음, 페이지 병렬 제어 유닛(200) 또는 PDL 언어 데이터 해석 유닛(202)에 의해 수행된 불일치를 해결하는 처리를 설명하였다. 본 실시예에서는, 양자 사이의 페이지 카운터 값의 차이를 유지하는 대신 페이지 리셋 커맨드의 지정을 무시하고, 총 페이지 수를 카운트하는 페이지 카운터 값을 제공하고, 그 값을 DL 생성을 수행할지의 여부의 판정에 사용하는 처리를 설명한다. 즉, 제2 실시예에서는, 캐시 값 대신, 페이지 리셋 커맨드의 지정에 영향받지 않는, 총 페이지 수를 카운트하는 페이지 카운터를 사용하는 예를 설명한다. 총 페이지 수를 카운트하는 카운터 값을 TotalPage로서 설명한다.
(페이지 병렬 처리의 시퀀스)
도 10은, 제2 실시예에서의 간이 시퀀스도이다. 본 실시예에서도, 도 3a에서 설명한 인쇄 데이터에서와 마찬가지로, startjob가 제1 페이지와 제2 페이지의 사이에 포함되어 있는 예를 사용해서 설명한다. 스레드 B1 및 B2에는, 각각 페이지 병렬 제어 유닛(200)에 의해 "2" 및 "1"이 OutputPage로서 통지된다. 각각의 스레드에 대응하는 각각의 PS 인터프리터(201)는, OutputPage에 의해 지정된 페이지의 DL 생성을 행할 때까지, 언어 해석 처리를 수행한다. 본 실시예에서는, 현재 처리 중인 페이지의 DL 생성을 수행할지의 여부를 판정하는 경우에, PS 인터프리터가, PS 인터프리터 자체가 관리하는 TotalPage를 OutputPage와 비교하고, 양자가 동등할 경우에 DL 생성을 수행한다. PageCount와 마찬가지로, TotalPage는 언어 해석 처리가 완료될 때마다 증분되지만, startjob 등, 페이지 리셋 커맨드가 검지되는 경우에도, 카운터 값은 리셋되지 않는다.
스레드 B1에는, 페이지 병렬 제어 유닛(200)으로부터 OutputPage로서 "2"가 통지된다. 제1 페이지의 언어 해석 처리가 완료되면, 스레드 B1은, TotalPage와 PageCount의 양쪽 모두를 각각 "1" 및 "1"로 증분한다. DL 생성을 수행할지의 여부를 판정하기 위해서, OutputPage는 TotalPage와 비교되지만, 이 둘은 동일한 값이 아니기 때문에, 스레드 B1은 제1 페이지의 DL 생성을 행하지 않는다. startjob는제1 페이지와 제2 페이지의 사이에 존재하기 때문에, 스레드 B1은, 제2 페이지의 처리를 개시하기 전에, PageCount의 값을 리셋하지만, TotalPage의 값을 리셋하지 않는다. 그 다음, 스레드 B1은, 제2 페이지의 언어 해석 처리를 수행하고, PageCount와 TotalPage를 각각 "1" 및 "2"로 증분한다. 이때, 스레드 B1에는, 페이지 병렬 제어 유닛(200)에 의해 OutputPage로서 다시 "2"가 통지된다. 스레드 B1은, TotalPage가 "2"이며, OutputPage와 동일한 값이므로, DL 생성 처리를 행한다.
한편, 스레드 B2에는, 페이지 병렬 제어 유닛(200)에 의해 OutputPage로서 "1"이 통지된다. 제1 페이지의 언어 해석 처리가 완료되면, 스레드 B2는 TotalPage와 PageCount를 각각 "1" 및 "1"로 증분한다. DL 생성을 수행할지를 판정하기 위해서, 스레드 B2는, OutputPage를 TotalPage와 비교한다. 그 다음, 양쪽 값이 동일한 값이기 때문에, 스레드 B2는, 제1 페이지의 DL 생성을 수행한다. startjob는 제1 페이지와 제2 페이지의 사이에 존재하기 때문에, 스레드 B2는 또한, 제2 페이지의 처리를 개시하기 전에 PageCount의 값을 리셋하지만, TotalPage의 값을 리셋하지 않는다. 그 다음, 스레드 B2는, 제2 페이지의 언어 해석 처리를 수행하고, PageCount와 TotalPage를 각각 "1" 및 "2"로 증분한다. 이때, 스레드 B2에는, 페이지 병렬 제어 유닛(200)에 의해 OutputPage로서 "3"이 통지된다. TotalPage는 "2"이며, OutputPage의 값은 TotalPage와 동일한 값이 아니기 때문에, DL 생성은 행하여지지 않는다(페이지 스킵 처리). 계속해서, 스레드 B2는, 제3 페이지의 언어 해석 처리를 개시한다. 제3 페이지의 언어 해석 처리가 완료되면, 스레드 B2는, TotalPage와 PageCount의 값을 모두 각각 "2" 및 "3"으로 증분한다. 여기서, OutputPage와 TotalPage 간의 비교는 양쪽 값이 동일한 값임을 나타내기 때문에, 스레드 B2는 DL 생성을 수행한다.
이상과 같이, 페이지 리셋 커맨드에 영향받지 않는 TotalPage의 값이 OutputPage의 값과 동등해지는 경우를, DL 생성 처리를 수행하는 조건으로 설정함으로써, 정상적으로 페이지 병렬 처리를 수행할 수 있다.
(PS 인터프리터의 병렬 DL 생성 제어의 플로우)
다음으로, 도 11에 도시하는 흐름도를 사용하여, 제2 실시예의 PS 인터프리터(201)의 스레드 B1 및 B2에서의 병렬 DL 생성 제어의 플로우에 대해서 설명한다.
PS 인터프리터(201)는 내부 페이지 카운터로서, PageCount, TotalPage, 및 myOutputPage의 3개의 카운터 값을 갖고 있다. PageCount와 myOutputPage는 제1 실시예와 마찬가지이다. TotalPage는 startjob 등, PageCount를 리셋하는 PDL 커맨드에 영향받지 않는, 언어 해석이 이미 완료된 총 페이지 수의 값을 저장하는 카운터 값이다.
페이지 병렬 제어 유닛(200)으로부터 처리 대상 페이지 수를 수신하면, PS 인터프리터(201)는 myOutputPage에 값을 저장하고, 처리를 개시한다. TotalPage가 myOutputPage보다도 작은 동안, PS 인터프리터(201)는, PageCount와 TotalPage를 증분하면서, 언어 해석 처리만을 수행한다(즉, 페이지 스킵 처리를 수행한다). PS 인터프리터(201)는, TotalPage가 OutputPage와 동등해지는 경우에 언어 해석과 DL 생성(페이지 묘화 처리)을 수행한다. DL 생성이 완료되면, PS 인터프리터(201)는, 페이지 병렬 제어 유닛(200)에, DL 생성이 수행된 페이지 번호와 함께 완료를 통지하고, 다음의 처리 대상 페이지 번호를 페이지 병렬 제어 유닛(200)에 문의한다.
startjob가 검지되면, PageCount의 값은 "0"으로 리셋되지만, TotalPage는 그대로의 값을 계속 유지한다. 그 후, PS 인터프리터(201)는, 페이지 병렬 제어 유닛(200)에 DL 생성 대상 페이지를 다시 문의하고, 처리를 반복한다. PageCount의 값은 startjob가 검지되는 경우에 리셋되지만, 이 리셋 처리에 관계없이 총 페이지 수가 TotalPage에 의해 관리된다. 그로 인해, 처리 중인 페이지에 대해 DL 생성을 수행할지를 판정할 때에, TotalPage의 값을 사용함으로써, 리셋 처리에 영향을 받지 않는 페이지 제어를 가능하게 한다. 제1 실시예에서 설명한 PS 인터프리터의 처리와 마찬가지로, 도 11에 도시한 처리는 도 5에 도시한 단계 S802에서 페이지 병렬 제어 유닛(200)에 의해 스레드 B1 및 B2의 기동 시에 개시된다.
먼저, 단계 S1101에서, PS 인터프리터(201)는, 초기화 처리로서, 내부 페이지 카운터 값의 TotalPage를 0으로 설정한다. 단계 S1102에서, PS 인터프리터(201)는, 초기화 처리로서, 내부 페이지 카운터 값의 myOutputPage를 0으로 설정한다. 단계 S1103에서, PS 인터프리터(201)는, 초기화 처리로서, 내부 페이지 카운터 값의 PageCount를 0으로 설정한다.
그 후, 단계 S1104 내지 단계 S1107에서의 처리는, 도 9에 도시한 단계 S904 내지 단계 S907에서의 처리와 마찬가지이다.
다음으로, 단계 S1107에서, PS 인터프리터(201)는, 단계 S1106에서 언어 해석을 수행한 결과, startjob 등, PageCount를 리셋하는 커맨드를 검지했는지를 판정한다. 커맨드를 검지하지 않은 경우에는, PS 인터프리터(201)는 단계 S1108로 처리를 진행시킨다. 커맨드를 검지한 경우에는, PS 인터프리터(201)는 단계 S1102로 복귀되고, 처리를 반복한다.
다음으로, 단계 S1108에서, PS 인터프리터(201)는, 언어 해석을 수행한 결과, 페이지 구획자 커맨드를 검지했는지를 판정한다. 페이지 구획자 커맨드를 검지한 경우에는, PS 인터프리터(201)는 단계 S1109로 처리를 진행시킨다. 페이지 구획자 커맨드를 검지하지 않았을 경우, 이는 PDL 데이터의 종단부에 도달한 것을 의미하기 때문에, PS 인터프리터(201)는 처리를 완료한다.
다음으로, 단계 S1109에서, PS 인터프리터(201)는, TotalPage의 값에 1을 가산한다.
다음으로, 단계 S1110에서, PS 인터프리터(201)는, PageCount의 값에 1을 가산한다.
다음으로, 단계 S1111에서, PS 인터프리터(201)는, myOutputPage의 값이 TotalPage의 값과 동등한지를 판정한다. 양쪽이 동등한 경우에는, PS 인터프리터(201)는, 단계 S1106으로 언어 해석을 행한 처리 중의 페이지가 DL 생성 처리 대상 페이지라고 판단하고, 단계 S1112으로 처리를 진행시킨다. 양쪽이 동등하지 않은 경우에는, PS 인터프리터(201)는 단계 S1104로 복귀되고, 처리를 반복한다.
다음으로, 단계 S1112와 S1113에서의 처리는, 도 9에 나타내는 단계 S912와 S913에서와 동일한 처리이므로, 설명을 생략한다.
이상의 처리에 의해, PS 인터프리터(201)에 의한, 스레드 B1 및 B2에서의 병렬 DL 생성 제어가 수행된다.
이상, 본 실시예에서는, 멀티스레드에 의한 인쇄 처리를 수행할 시에 페이지 리셋을 수행하도록 지시하는 PDL 커맨드를 검지한 경우, 내부 페이지 카운터 값을 리셋한다. 한편, 총 페이지 수는 또 다른 카운터 값에서 유지되고, 이후의 처리를 계속한다. 이 총 페이지 수의 카운터 값을 사용해서 DL 생성을 수행할지를 판정할 때에, 페이지 병렬 제어 유닛(200)과 PDL 언어 데이터 해석 유닛(202) 사이의 내부 페이지 카운터 값의 차이를 고려하지 않고 처리를 계속할 수 있다. 따라서, 인쇄 데이터의 불일치를 회피할 수 있다.
(다른 실시예)
상기 각각의 실시예에서는, 페이지 리셋 커맨드의 예로서는 PS의 startjob 오퍼레이터를 든다. 그러나, 본 발명의 적용 범위는, 이러한 오퍼레이터에 한정되는 것은 아니라, 이 오퍼레이터는 PS의 exitserver 커맨드(오퍼레이터)일 수 있다. 또한, 또 다른 PDL에서 마찬가지의 의미를 갖는 커맨드에 대해서도 본 발명을 적용 가능하다.
또한, 상기 각각의 실시예에서는, 페이지 병렬 제어 유닛(200)과 PS 인터프리터(201)가 서로 구별되는 양태를 설명했지만, PS 인터프리터 중 하나가 내부의 페이지 병렬 제어 유닛에 의해 행해진 기능을 갖게 하는 것도 가능하다.
본 발명의 실시예(들)는 또한 하나 이상의 상기 실시예(들)의 기능을 수행하기 위해 저장 매체(이는 또한 더 완전하게는 '비일시적 컴퓨터-판독가능 저장 매체'로서 지칭될 수 있음)에 기록된 컴퓨터 실행가능 명령어(예를 들어, 하나 이상의 프로그램)을 판독하고 실행하며 및/또는 하나 이상의 상기 실시예(들)의 기능을 수행하기 위한 하나 이상의 회로(예를 들어, 주문형 집적 회로(ASIC))를 포함하는 시스템 또는 장치의 컴퓨터에 의해, 그리고 예를 들어, 하나 이상의 상기 실시예(들)의 기능을 수행하기 위해 저장 매체로부터 컴퓨터 실행가능 명령어를 판독하고 실행함으로써 및/또는 하나 이상의 상기 실시예(들)의 기능을 수행하기 위해 하나 이상의 회로를 제어함으로써 시스템 또는 장치의 컴퓨터에 의해 수행된 방법에 의해 실현될 수 있다. 컴퓨터는 하나 이상의 프로세서(예를 들어, 중앙 처리 유닛(CPU), 마이크로 처리 유닛(MPU))를 포함할 수 있으며, 컴퓨터 실행가능 명령어를 판독하고 실행하기 위해 개별 컴퓨터 또는 개별 프로세서의 네트워크를 포함할 수 있다. 컴퓨터 실행가능 명령어는 예를 들어, 네트워크 또는 저장 매체로부터 컴퓨터에 제공될 수있다. 저장 매체는 예를 들어, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 분산형 컴퓨팅 시스템의 저장 장치, 광학 디스크(예를 들어, 컴팩트 디스크(CD), 디지털 다기능 디스크(DVD), 또는 블루-레이 디스크(BD)TM), 플래시 메모리 디바이스, 메모리 카드 등에서 하나 이상을 포함할 수 있다.
(기타의 실시예)
본 발명은, 상기의 실시예의 1개 이상의 기능을 실현하는 프로그램을, 네트워크 또는 저장 매체를 개입하여 시스템 또는 장치에 공급하고, 그 시스템 또는 장치의 컴퓨터에 있어서 1개 이상의 프로세서가 프로그램을 판독하여 실행하는 처리에서도 실현가능하다. 또한, 1개 이상의 기능을 실현하는 회로(예를 들어, ASIC)에 의해서도 실행가능하다.
인쇄 데이터의 페이지를 병렬로 해석하는 인쇄 데이터 처리 장치를 이용한 처리에서, 인쇄 데이터에 이미 해석된 페이지 수를 리셋하는 커맨드가 포함되어 있는 경우에도, 페이지의 누락이 없는 인쇄 결과를 출력할 수 있다.
본 발명은 예시적인 실시예를 참조하여 설명되었지만, 본 발명은 개시된 예시적인 실시예에 한정되지 않는다는 것을 이해해야 한다. 이하의 특허 청구의 범위는 그러한 모든 수정 및 균등 구조 및 기능을 포함하도록 가장 넓게 해석되어야 한다.

Claims (16)

  1. 인쇄 데이터 처리 장치로서,
    인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛을 각각 갖는 복수의 해석 유닛; 및
    중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 중 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하며,
    상기 해석 유닛은,
    상기 제1 유지 유닛의 페이지 수와는 다른 종류의 페이지 수를 유지하도록 구성된 제2 유지 유닛;
    지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 무효화 커맨드를 검지한 시점에서 상기 제1 유지 유닛에 의해 유지된 페이지 수를 상기 제2 유지 유닛에 의해 유지된 페이지 수에 가산함으로써 상기 제2 유지 유닛에 의해 유지된 페이지 수를 갱신하고, 상기 제1 유지 유닛에 의해 유지된 상기 이미 해석된 페이지 수를 리셋하도록 구성된 제1 처리 유닛; 및
    상기 제1 유지 유닛에 의해 유지된 페이지 수와 상기 제2 유지 유닛에 의해 유지된 페이지 수와의 합이, 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛에 상기 중간 데이터의 생성을 수행시키도록 구성된 제2 처리 유닛을 추가로 갖는, 인쇄 데이터 처리 장치.
  2. 인쇄 데이터 처리 장치로서,
    인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛을 각각 갖는 복수의 해석 유닛; 및
    중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 중 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하며,
    상기 해석 유닛은,
    상기 데이터 해석 유닛에 의해 이미 해석된 총 페이지 수를 유지하도록 구성된 제2 유지 유닛;
    지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 제1 유지 유닛에 의해 유지된 상기 이미 해석된 페이지 수를 리셋하도록 구성된 제1 처리 유닛; 및
    상기 제2 유지 유닛에 의해 유지된 페이지 수가 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛에 상기 중간 데이터의 생성을 수행시키도록 구성된 제2 처리 유닛을 추가로 갖는, 인쇄 데이터 처리 장치.
  3. 제1항에 있어서,
    상기 제2 유지 유닛에 의해 유지된 페이지 수는, 상기 무효화 커맨드를 검지한 경우에 리셋되지 않는, 인쇄 데이터 처리 장치.
  4. 인쇄 데이터 처리 장치로서,
    인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛을 각각 갖는 복수의 해석 유닛; 및
    중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 중 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하며,
    상기 해석 유닛은,
    지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 제1 유지 유닛에 의해 유지된 상기 이미 해석된 페이지 수를 상기 통지 유닛에 통지하고, 상기 이미 해석된 페이지 수를 리셋하도록 구성된 제1 처리 유닛; 및
    상기 제1 유지 유닛에 의해 유지된 페이지 수가 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛에 상기 중간 데이터의 생성을 수행시키도록 구성된 제2 처리 유닛을 추가로 갖고,
    상기 통지 유닛은, 상기 해석 유닛에 의해 통지된 페이지 수를 상기 중간 데이터를 생성해야 할 페이지 번호로부터 차감하여 얻은 값을 상기 해석 유닛에 통지하도록 구성된 제3 처리 유닛을 갖는, 인쇄 데이터 처리 장치.
  5. 제1항에 있어서,
    상기 생성 유닛은, 상기 제1 유지 유닛에 의해 유지된 이미 해석된 페이지 수를 대응하는 페이지의 페이지 번호로서 사용하는 중간 데이터를 생성하는, 인쇄 데이터 처리 장치.
  6. 제1항에 있어서,
    상기 통지 유닛은, 상기 복수의 해석 유닛에 대하여 각각 상이한 페이지 번호를 통지하는, 인쇄 데이터 처리 장치.
  7. 제1항에 있어서,
    상기 해석 유닛은, 상기 데이터 해석 유닛에 상기 인쇄 데이터의 모든 페이지의 데이터를 해석시키는, 인쇄 데이터 처리 장치.
  8. 제1항에 있어서,
    상기 인쇄 데이터는 페이지 비독립적인 언어의 PDL 데이터인, 인쇄 데이터 처리 장치.
  9. 제8항에 있어서,
    상기 페이지 비독립적인 언어는 PostScript이며, 상기 무효화 커맨드는 startjob 커맨드 또는 exitserver 커맨드인, 인쇄 데이터 처리 장치.
  10. 제1항에 있어서,
    상기 해석 유닛 및 상기 통지 유닛은 스레드로서 기동되는, 인쇄 데이터 처리 장치.
  11. 인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛과, 상기 제1 유지 유닛의 페이지 수와는 다른 종류의 페이지 수를 유지하도록 구성된 제2 유지 유닛을 각각 갖는 복수의 해석 유닛; 및
    중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 중 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하는 인쇄 데이터 처리 장치에서의 인쇄 데이터 처리 방법으로서,
    상기 해석 유닛은,
    지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 무효화 커맨드를 검지한 시점에서 상기 제1 유지 유닛에 의해 유지된 페이지 수를 상기 제2 유지 유닛에 의해 유지된 페이지 수에 가산함으로써 상기 제2 유지 유닛에 의해 유지된 페이지 수를 갱신하고, 상기 제1 유지 유닛에 유지하고 있는 상기 이미 해석된 페이지 수를 리셋하는 제1 처리 단계; 및
    상기 제1 유지 유닛에 의해 유지된 페이지 수와 상기 제2 유지 유닛에 의해 유지된 페이지 수와의 합이, 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛에 상기 중간 데이터의 생성을 수행시키는 제2 처리 단계를 수행하는, 인쇄 데이터 처리 방법.
  12. 인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 총 페이지 수를 유지하도록 구성된 제2 유지 유닛을 각각 갖는 복수의 해석 유닛; 및
    중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 중 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하는 인쇄 데이터 처리 장치에서의 인쇄 데이터 처리 방법으로서,
    상기 해석 유닛은,
    지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 제1 유지 유닛에 의해 유지된 상기 이미 해석된 페이지 수를 리셋하는 제1 처리 단계; 및
    상기 제2 유지 유닛에 의해 유지된 페이지 수가 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛에 상기 중간 데이터의 생성을 수행시키는 제2 처리 단계를 수행하는, 인쇄 데이터 처리 방법.
  13. 인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛을 각각 갖는 복수의 해석 유닛; 및
    중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 중 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하는 인쇄 데이터 처리 장치에서의 인쇄 데이터 처리 방법으로서,
    상기 해석 유닛은,
    지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 제1 유지 유닛에 의해 유지된 상기 이미 해석된 페이지 수를 상기 통지 유닛에 통지하고, 상기 이미 해석된 페이지 수를 리셋하는 제1 처리 단계; 및
    상기 제1 유지 유닛에 의해 유지된 페이지 수가 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛에 상기 중간 데이터의 생성을 수행시키는 제2 처리 단계를 수행하고,
    상기 통지 유닛은, 상기 해석 유닛에 의해 통지된 페이지 수를 상기 중간 데이터를 생성해야 할 페이지 번호로부터 차감하여 얻은 값을 상기 해석 유닛에 통지하는 제3 처리 단계를 수행하는, 인쇄 데이터 처리 방법.
  14. 인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛과, 상기 제1 유지 유닛의 페이지 수와는 다른 종류의 페이지 수를 유지하도록 구성된 제2 유지 유닛을 각각 갖는 복수의 해석 유닛; 및
    중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 중 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하는 인쇄 데이터 처리 장치에서의 인쇄 데이터 처리 방법을 컴퓨터에 수행시키게 하기 위한 프로그램을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    상기 해석 유닛에 의해, 지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 무효화 커맨드를 검지한 시점에서 상기 제1 유지 유닛에 의해 유지된 페이지 수를 상기 제2 유지 유닛에 의해 유지된 페이지 수에 가산함으로써 상기 제2 유지 유닛에 의해 유지된 페이지 수를 갱신하고, 상기 제1 유지 유닛에 유지하고 있는 상기 이미 해석된 페이지 수를 리셋하는 단계; 및
    상기 해석 유닛에 의해, 상기 제1 유지 유닛에 의해 유지된 페이지 수와 상기 제2 유지 유닛에 의해 유지된 페이지 수와의 합이, 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛에 상기 중간 데이터의 생성을 수행시키는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  15. 인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 총 페이지 수를 유지하도록 구성된 제2 유지 유닛을 각각 갖는 복수의 해석 유닛; 및
    중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 중 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하는 인쇄 데이터 처리 장치에서의 인쇄 데이터 처리 방법을 컴퓨터에 수행시키게 하기 위한 프로그램을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    상기 해석 유닛에 의해, 지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 제1 유지 유닛에 유지하고 있는 상기 이미 해석된 페이지 수를 리셋하는 단계; 및
    상기 해석 유닛에 의해, 상기 제2 유지 유닛에 의해 유지된 페이지 수가 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛에 상기 중간 데이터의 생성을 수행시키는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  16. 인쇄 데이터를 해석하도록 구성된 데이터 해석 유닛과, 상기 데이터 해석 유닛에 의한 해석에 기초하여 상기 인쇄 데이터의 중간 데이터를 생성 가능한 생성 유닛과, 상기 데이터 해석 유닛에 의해 이미 해석된 페이지 수를 유지하도록 구성된 제1 유지 유닛을 각각 갖는 복수의 해석 유닛; 및
    중간 데이터를 생성해야 할 페이지 번호를 상기 복수의 해석 유닛 중 대응하는 해석 유닛에 통지하도록 구성된 통지 유닛을 포함하는 인쇄 데이터 처리 장치에서의 인쇄 데이터 처리 방법을 컴퓨터에 수행시키게 하기 위한 프로그램을 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 방법은,
    상기 해석 유닛에 의해, 지금까지 해석된 내용을 무효화하는 커맨드를 검지한 경우, 상기 제1 유지 유닛에 유지하고 있는 상기 이미 해석된 페이지 수를 상기 통지 유닛에 통지하고, 상기 이미 해석된 페이지 수를 리셋하는 단계;
    상기 해석 유닛에 의해, 상기 제1 유지 유닛에 의해 유지된 페이지 수가, 상기 통지 유닛에 의해 통지된 페이지 번호와 일치하는 경우, 상기 생성 유닛에 상기 중간 데이터의 생성을 수행시키는 단계; 및
    상기 통지 유닛에 의해, 상기 해석 유닛에 의해 통지된 페이지 수를 상기 중간 데이터를 생성해야 할 페이지 번호로부터 차감하여 얻은 값을 상기 해석 유닛에 통지하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
KR1020170004797A 2016-01-15 2017-01-12 인쇄 데이터 처리 장치, 인쇄 데이터 처리 방법, 및 저장 매체 KR102145809B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2016-006673 2016-01-15
JP2016006673A JP6666036B2 (ja) 2016-01-15 2016-01-15 印刷データ処理装置、印刷データ処理方法、およびプログラム

Publications (2)

Publication Number Publication Date
KR20170085973A true KR20170085973A (ko) 2017-07-25
KR102145809B1 KR102145809B1 (ko) 2020-08-19

Family

ID=57755056

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170004797A KR102145809B1 (ko) 2016-01-15 2017-01-12 인쇄 데이터 처리 장치, 인쇄 데이터 처리 방법, 및 저장 매체

Country Status (4)

Country Link
US (2) US10242299B2 (ko)
EP (1) EP3193249B1 (ko)
JP (1) JP6666036B2 (ko)
KR (1) KR102145809B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101996786B1 (ko) 2019-04-18 2019-07-04 유용호 데이터 다중 병렬 처리를 통한 원격 프린트 콘트롤 시스템

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6996884B2 (ja) * 2017-07-06 2022-01-17 株式会社東芝 画像処理装置、画像処理方法及びプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013067144A (ja) * 2011-09-26 2013-04-18 Fuji Xerox Co Ltd 印刷データ処理システム及びプログラム
JP2013233759A (ja) * 2012-05-10 2013-11-21 Canon Inc 情報処理装置、情報処理方法、情報処理システム、プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5393343B2 (ja) 2009-08-21 2014-01-22 キヤノン株式会社 印刷データ処理装置、印刷データ処理方法、プログラム
JP5586934B2 (ja) * 2009-12-16 2014-09-10 キヤノン株式会社 情報処理方法、情報処理装置、及びコンピュータプログラム
JP5847460B2 (ja) 2011-07-01 2016-01-20 キヤノン株式会社 画像形成装置、データ処理方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013067144A (ja) * 2011-09-26 2013-04-18 Fuji Xerox Co Ltd 印刷データ処理システム及びプログラム
JP2013233759A (ja) * 2012-05-10 2013-11-21 Canon Inc 情報処理装置、情報処理方法、情報処理システム、プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101996786B1 (ko) 2019-04-18 2019-07-04 유용호 데이터 다중 병렬 처리를 통한 원격 프린트 콘트롤 시스템

Also Published As

Publication number Publication date
US20190171918A1 (en) 2019-06-06
EP3193249A1 (en) 2017-07-19
US10885409B2 (en) 2021-01-05
US10242299B2 (en) 2019-03-26
KR102145809B1 (ko) 2020-08-19
US20170206442A1 (en) 2017-07-20
JP2017124589A (ja) 2017-07-20
JP6666036B2 (ja) 2020-03-13
EP3193249B1 (en) 2020-08-12

Similar Documents

Publication Publication Date Title
JP5349481B2 (ja) ページ記述言語の並行処理
JP6245806B2 (ja) 情報処理装置およびその制御方法、
US20070008579A1 (en) Job status monitoring system, job status monitoring method, program, and storage medium
US20110043855A1 (en) Print data processing apparatus, print data processing method, and storage medium
US8792124B2 (en) Print control apparatus, image forming system, and non-transitory computer readable medium
US8498000B1 (en) Spool control device and non-transitory computer readable medium
US20170243089A1 (en) Printing apparatus having interpreters interpreting print data, printing method, and storage medium
KR102145809B1 (ko) 인쇄 데이터 처리 장치, 인쇄 데이터 처리 방법, 및 저장 매체
KR20160018075A (ko) 화상형성장치, 화상형성방법, 인쇄 제어 단말 장치 및 컴퓨터 판독가능 기록매체
CN105302505B (zh) 图像处理装置及信息处理方法
KR100657331B1 (ko) 멀티 프로세서를 채용한 화상형성장치 및 이를 이용한화상형성방법
US20140247458A1 (en) Image forming apparatus, image forming method, and storage medium
JP6312073B2 (ja) 画像形成装置、画像形成装置の制御方法、及びプログラム
US10262247B2 (en) Image forming apparatus for converting print data into intermediate data, method for controlling image forming apparatus, and storage medium
JP6187110B2 (ja) 印刷制御装置及びプログラム
US10540124B2 (en) Fast page first print optimization
US20140362405A1 (en) Information processing apparatus, recording medium, and control method
US9171240B2 (en) Generating a display list for processing by a rendering unit
US20180039870A1 (en) Image processing apparatus, method for controlling image processing apparatus, and storage medium
JP2012000778A (ja) 画像処理装置及びプログラム
JP6415487B2 (ja) 画像処理装置及び画像処理方法
JP5745389B2 (ja) 画像形成装置及び画像形成プログラム
JP5582241B2 (ja) マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム
JP2014078175A (ja) 情報処理装置、その制御方法、及びプログラム
JP2016170487A (ja) 情報処理装置、該装置の制御方法、及びプログラム

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant