特開2021-54065(P2021-54065A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社リコーの特許一覧
<>
  • 特開2021054065-画像処理機構 図000003
  • 特開2021054065-画像処理機構 図000004
  • 特開2021054065-画像処理機構 図000005
  • 特開2021054065-画像処理機構 図000006
  • 特開2021054065-画像処理機構 図000007
  • 特開2021054065-画像処理機構 図000008
  • 特開2021054065-画像処理機構 図000009
  • 特開2021054065-画像処理機構 図000010
  • 特開2021054065-画像処理機構 図000011
  • 特開2021054065-画像処理機構 図000012
  • 特開2021054065-画像処理機構 図000013
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2021-54065(P2021-54065A)
(43)【公開日】2021年4月8日
(54)【発明の名称】画像処理機構
(51)【国際特許分類】
   B41J 5/30 20060101AFI20210312BHJP
   G06F 3/12 20060101ALI20210312BHJP
   H04N 1/00 20060101ALI20210312BHJP
   B41J 29/38 20060101ALI20210312BHJP
【FI】
   B41J5/30 Z
   G06F3/12 311
   G06F3/12 340
   G06F3/12 347
   H04N1/00 912
   B41J29/38 501
   B41J29/38 201
【審査請求】有
【請求項の数】20
【出願形態】OL
【全頁数】17
(21)【出願番号】特願2020-158296(P2020-158296)
(22)【出願日】2020年9月23日
(31)【優先権主張番号】16/588551
(32)【優先日】2019年9月30日
(33)【優先権主張国】US
(71)【出願人】
【識別番号】000006747
【氏名又は名称】株式会社リコー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】ウォルター エフ ケイリー
(72)【発明者】
【氏名】スティーヴン マンドリー
【テーマコード(参考)】
2C061
2C187
5C062
【Fターム(参考)】
2C061AP01
2C061AQ05
2C061AQ06
2C061AR01
2C061HJ06
2C187AC06
2C187AC08
2C187AF03
2C187BF03
2C187FD12
5C062AA05
5C062AA13
5C062AA35
5C062AB38
5C062AB42
5C062AC04
5C062AC22
5C062AC38
5C062AC58
5C062AE10
(57)【要約】
【課題】画像処理機構を提供する。
【解決手段】システムが開示される。システムは、複数のタスク・キューを有する少なくとも1つの物理的なメモリ・デバイスと、複数のシートサイド画像を含む印刷データを受領し、前記複数のシートサイド画像のうちの一つまたは複数を、ネストされたタスク・キューを介して並列に処理するプロセッサとを含む。前記ネストされたタスク・キューは、処理スレッドの第1の集合に関連付けられた第1のタスク・キューと、タスク・キューの第2の集合とを含み、前記第2の集合の各タスク・キューは、処理スレッドの第2の集合に関連付けられ、タスク・キューの前記第2の集合における各タスク・キューは、処理スレッドの前記第1の集合内のスレッドに対応し、タスク・キューの前記第2の集合を介したタスクの実行は、前記第1のタスク・キューにある処理スレッドの前記第1の集合を介したタスクの実行よりも高い優先度指定をもつ。
【選択図】図5B
【特許請求の範囲】
【請求項1】
複数のタスク・キューを有する少なくとも1つの物理的なメモリ・デバイスと;
複数のシートサイド画像を含む印刷データを受領し、前記複数のシートサイド画像のうちの一つまたは複数を、ネストされたタスク・キューを介して並列に処理するプロセッサとを有する印刷システムであって、
前記ネストされたタスク・キューは、処理スレッドの第1の集合に関連付けられた第1のタスク・キューと、タスク・キューの第2の集合とを含み、前記第2の集合の各タスク・キューは、処理スレッドの第2の集合に関連付けられ、タスク・キューの前記第2の集合における各タスク・キューは、処理スレッドの前記第1の集合内のスレッドに対応し、タスク・キューの前記第2の集合を介したタスクの実行は、前記第1のタスク・キューにある処理スレッドの前記第1の集合を介したタスクの実行よりも高い優先度指定をもつ、
印刷システム。
【請求項2】
前記プロセッサが前記複数のシートサイド画像を処理することは、前記複数の画像のそれぞれについて画像マネージャ・タスクを生成し、前記画像マネージャ・タスクのそれぞれを前記第1のタスク・キューに格納し、処理スレッドの前記第1の集合を介して前記画像マネージャ・タスクを処理することをさらに含む、請求項1に記載のシステム。
【請求項3】
前記プロセッサが前記画像マネージャ・タスクのそれぞれを処理することは、ストライプ画像構成要素の対応する集合、ストライプ・タスクの対応する集合を生成し、ストライプ・タスクの前記対応する集合をタスク・キューの前記第2の集合のうちの第1のものに格納することを含む、請求項2に記載のシステム。
【請求項4】
前記プロセッサが前記複数のシートサイド画像を処理することは、前記第1のタスク・キューに格納された前記画像マネージャ・タスクのうちの第1のものに関連付けれられた第1の画像を処理することを含み、該処理は、前記第1の画像のストライプ画像構成要素の第1の集合を生成し、ストライプ画像構成要素の前記第1の集合内の各ストライプ画像構成要素に対応するストライプ・タスクの第1の集合を生成し、ストライプ・タスクの前記第1の集合を、前記画像マネージャ・タスクのうちの前記第1のものを実行している第1のタスク・キュー・スレッドに対応するタスク・キューの前記第2の集合のうちの第1のものに格納し、処理スレッドの前記第2の集合を介してストライプ・タスクの前記第1の集合を処理することを含む、請求項2に記載のシステム。
【請求項5】
前記プロセッサが前記第1の画像を処理することは、ストライプ・タスクの前記第1の集合の処理中に一つまたは複数のメタデータ構造を生成し、一つまたは複数の同期バリア・タスクを生成し、前記一つまたは複数の同期バリア・タスクをタスク・キューの前記第2の集合のうちの前記第1のものに格納することをさらに含む、請求項4に記載のシステム。
【請求項6】
前記第1の画像を処理する前記プロセッサが、前記一つまたは複数の同期バリア・タスクを実行し、その同期バリアの完了は、ストライプ・タスクの前記第1の集合の前記処理が完了したことを判別するために前記第1の画像を処理する前記プロセッサによって使用される、請求項5に記載のシステム。
【請求項7】
前記プロセッサが前記第1の画像を処理することは、ストライプ・タスクの前記第1の集合の前記処理が完了したと前記一つまたは複数の同期バリア・タスクが決定したことを検出すると、スレッドの前記第2の集合から、ストライプ・タスクの前記第1の集合に対応する処理済みデータを受領することをさらに含む、請求項6に記載のシステム。
【請求項8】
前記プロセッサが前記複数のシートサイド画像を処理することは、前記第1の画像マネージャ・タスクの処理中に、前記第1のタスク・キューに記憶された前記画像マネージャ・タスクのうちの第2のタスクに関連付けられた第2の画像を処理することをさらに含む、請求項7に記載のシステム。
【請求項9】
前記プロセッサが前記第2の画像タスクを処理することは、前記第2の画像のストライプ画像構成要素の第2の集合を生成し、ストライプ画像構成要素の前記第2の集合における各ストライプ画像構成要素に対応するストライプ・タスクの第2の集合を生成し、前記画像マネージャ・タスクのうちの前記第2のものを実行している第1のタスク・キュー・スレッドに対応するタスク・キューの前記第2の集合のうちの前記第2のものに、ストライプ・タスクの前記第2の集合を格納し、処理スレッドの前記第2の集合を介してストライプ・タスクの前記第2の集合を処理することを含む、請求項8に記載のシステム。
【請求項10】
前記プロセッサが前記複数のシートサイド画像を処理することは、ストライプ・タスクの前記第1の集合に対応する前記処理済みデータを受領すると、前記第1のタスク・キューに格納された前記画像マネージャ・タスクのうちの第3のものに関連付けられた第3の画像を処理することをさらに含む、請求項8に記載のシステム。
【請求項11】
前記複数のシートサイド画像を印刷するプリンタをさらに有する、請求項1に記載のシステム。
【請求項12】
命令を記憶している少なくとも1つのコンピュータ可読媒体であって、前記命令は、一つまたは複数のプロセッサによって実行されると、該プロセッサに:
複数のシートサイド画像を含む印刷データを受領し、
前記複数のシートサイド画像のうちの二つ以上を、ネストされたタスク・キューを介して並列に処理することを実行させるものであり、
前記ネストされたタスク・キューは、処理スレッドの第1の集合に関連付けられた第1のタスク・キューと、処理スレッドの前記第1の集合におけるスレッドに対応する処理スレッドの第2の集合に関連付けられたタスク・キューの第2の集合とを含み、処理スレッドの前記第2の集合を介したタスクの実行は、処理スレッドの前記第1の集合を介したタスクの実行よりも高い優先度指定をもつ、
コンピュータ可読媒体。
【請求項13】
前記複数のシートサイド画像を処理することが:
前記複数の画像のそれぞれについて画像マネージャ・タスクを生成し;
前記画像マネージャ・タスクのそれぞれを前記第1のタスク・キューに格納し;
処理スレッドの前記第1の集合を介して前記画像マネージャ・タスクを処理することをさらに含む、
請求項12に記載のコンピュータ可読媒体。
【請求項14】
前記画像マネージャ・タスクのそれぞれを処理することが:
ストライプ画像構成要素の対応する集合、ストライプ・タスクの対応する集合を生成し;
ストライプ・タスクの前記対応する集合をタスク・キューの前記第2の集合のうちの第1のものに格納することを含む、
請求項13に記載のコンピュータ可読媒体。
【請求項15】
前記複数のシートサイド画像を処理することは、前記第1のタスク・キューに格納された前記画像マネージャ・タスクのうちの第1のものに関連付けれられた第1の画像を処理することを含み、該処理は:
前記第1の画像のストライプ画像構成要素の第1の集合を生成し;
ストライプ画像構成要素の前記第1の集合内の各ストライプ画像構成要素に対応するストライプ・タスクの第1の集合を生成し;
ストライプ・タスクの前記第1の集合を、前記画像マネージャ・タスクのうちの前記第1のものを実行している第1のタスク・キュー・スレッドに対応するタスク・キューの前記第2の集合のうちの第1のものに格納し;
処理スレッドの前記第2の集合を介してストライプ・タスクの前記第1の集合を処理することを含む、
請求項14に記載のコンピュータ可読媒体。
【請求項16】
前記プロセッサが前記第1の画像を処理することがさらに:
ストライプ・タスクの前記第1の集合の処理中に一つまたは複数のメタデータ構造を生成し;
ストライプ・タスクの前記第1の集合の処理が完了していることを決定する一つまたは複数の同期バリア・タスクを生成し;
前記一つまたは複数の同期バリア・タスクをタスク・キューの前記第2の集合のうちの前記第1のものに格納することを含む、
請求項15に記載のコンピュータ可読媒体。
【請求項17】
複数のシートサイド画像を含む印刷データを受領する段階と;
前記複数のシートサイド画像のうちの二つ以上を、ネストされたタスク・キューを介して並列に処理する段階とを含む方法であって、
前記ネストされたタスク・キューは、処理スレッドの第1の集合に関連付けられた第1のタスク・キューと、処理スレッドの前記第1の集合におけるスレッドに対応する処理スレッドの第2の集合に関連付けられたタスク・キューの第2の集合とを含み、処理スレッドの前記第2の集合を介したタスクの実行は、処理スレッドの前記第1の集合を介したタスクの実行よりも高い優先度指定をもつ、
方法。
【請求項18】
前記複数のシートサイド画像を処理することが、さらに:
前記複数の画像のそれぞれについて画像マネージャ・タスクを生成し;
前記画像マネージャ・タスクのそれぞれを前記第1のタスク・キューに格納し;
処理スレッドの前記第1の集合を介して前記画像マネージャ・タスクを処理することを含む、
請求項17に記載の方法。
【請求項19】
画像マネージャ・タスクを処理することは:
ストライプ画像構成要素の対応する集合、ストライプ・タスクの対応する集合を生成し;
ストライプ・タスクの前記対応する集合を、前記画像マネージャ・タスクを実行している前記画像スレッドに対応する、タスク・キューの前記第2の集合のうちの第1のものに格納することを含む、
請求項18に記載の方法。
【請求項20】
前記複数のシートサイド画像を処理することがさらに、前記第1のタスク・キューに格納された前記画像マネージャ・タスクのうちの第1のものに関連付けれられた第1の画像を処理することを含み、該処理は:
前記第1の画像のストライプ画像構成要素の第1の集合を生成し;
ストライプ画像構成要素の前記第1の集合内の各ストライプ画像構成要素に対応するストライプ・タスクの第1の集合を生成し;
ストライプ・タスクの前記第1の集合を、前記画像マネージャ・タスクのうちの前記第1のものを実行している第1のタスク・キュー・スレッドに対応するタスク・キューの前記第2の集合のうちの前記第1のものに格納し;
タスク・キューの前記第2の集合のうちの前記第1のものの前記スレッドを介してストライプ・タスクの前記第1の集合を処理することを含む、
請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、印刷システムの分野に関し、詳細には、並列画像処理を実行することに関する。
【背景技術】
【0002】
商用およびトランザクションプリンタでは、シートサイド印刷データを処理するためにさまざまな画像処理アプリケーションが実行されることがある。そのような画像処理アプリケーションでは、並列に処理される各画像について、中間記憶バッファの別個のセットが必要とされる。たとえば、画像の圧縮解除およびそれに続くハーフトーン処理は、各画像について、並列に処理される1つの入力バッファ、1つの圧縮解除バッファ、および1つの出力バッファを必要とする。同様に、画像データが暗号化され、かつ圧縮されている場合、各画像を復号するため、同じ量の別個の記憶バッファが必要とされる。このように、画像の並列処理は、中間記憶バッファのために何ギガバイトものメモリを要求することがある。
【0003】
よって、メモリ・サイズを小さくするために、画像処理パイプライン設計は、並列処理される画像の数を制限しなければならない。各画像は並列処理のために複数のセグメントに分割されてもよいので、この制限は、並列処理スレッドの数を制限しない。しかしながら、同時に処理される画像の数が制限されると、それぞれの処理される画像の開始時と終了時におけるアイドル処理スレッドのため、プロセッサ利用率が低下し、次の画像を開始する前にすべてのスレッドが終了するのを待つ必要が生じる。実際、そのようなシステムにおけるアイドルなプロセッサの平均数は、同時に処理される画像の数に反比例する。
【発明の概要】
【発明が解決しようとする課題】
【0004】
よって、それぞれ単一画像のセグメントに対して並列処理を実行する複数のタスク・キューを利用する並列画像処理機構が望まれる。
【課題を解決するための手段】
【0005】
ある実施形態では、方法が開示される。本方法は、複数のシートサイド画像を含む印刷データを受領し、該複数のシートサイド画像のうちの2つ以上を、ネストされたタスク・キューを介して並列に処理することを含み、ネストされたタスク・キューは、処理スレッドの第1の集合に関連付けられた第1のタスク・キューと、第1のタスク・キューの諸スレッドに対応する諸タスク・キューの第2の集合とを含み、第2の集合のタスク・キューのそれぞれは、処理スレッドのさらなる集合に関連付けられており、タスク・キューの第2の集合を介したタスクの実行は、処理スレッドの第1の集合を介したタスクの実行よりも高い優先度指定を有する。
【図面の簡単な説明】
【0006】
本発明のよりよい理解は、以下の図面との関連で以下の詳細な説明から得ることができる:
【0007】
図1】印刷システムのある実施形態のブロック図である。
【0008】
図2】印刷コントローラのある実施形態を示すブロック図である。
【0009】
図3】シートサイド処理機構のある実施形態を示す。
【0010】
図4A】タスク・キューのある実施形態を示す。
【0011】
図4B】処理スレッドのある実施形態を示す。
【0012】
図5A】シートサイド処理機構の別の実施形態を示す。
【0013】
図5B】シートサイド処理機構のさらに別の実施形態を示す。
【0014】
図6】シートサイド画像を処理するためのある実施形態を示すフロー図である。
【0015】
図7】画像マネージャ・タスクを処理するためのある実施形態を示すフロー図である。
【0016】
図8】同期を実行するためのある実施形態を示すフロー図である。
【0017】
図9】コンピュータ・システムのある実施形態を示す。
【発明を実施するための形態】
【0018】
二つ以上のタスク・キュー構造を使ってパイプライン化された並列非同期画像処理を実行する機構が記述される。以下の記述では、説明の目的で、本発明の十全な理解を提供するために、多数の個別的な詳細が記載される。しかしながら、当業者には、本発明が、これらの個別的な詳細のいくつかがなくても実施されうることは明白であろう。他方、本発明の基礎となる原理を不明瞭にすることを避けるために、周知の構造および装置はブロック図の形で示さる。
【0019】
本明細書における「一つの実施形態」または「ある実施形態」への言及は、その実施形態との関連で記述される特定の特徴、構造、または特性が本発明の少なくとも一つの実施形態に含まれることを意味する。本明細書の随所で「ある実施形態において」という句が現われることは、必ずしもみなが同じ実施形態を指しているものではない。
【0020】
本稿を通じて、「論理」、「コンポーネント」、「モジュール」、「エンジン」、「モデル」、「計算機」などの用語は、交換可能に言及されることがあり、たとえば、ソフトウェア、ハードウェア、および/または、ソフトウェアとハードウェアの任意の組み合わせ(ファームウェアなど)を含みうる。さらに、特定のブランド、単語、用語、語句、名前、および/または頭字語のいかなる使用も、製品または本稿の外部の文献においてそのラベルを帯びるソフトウェアまたは装置に実施形態を限定するものと読むべきではない。
【0021】
図1は、印刷システム130のある実施形態を示すブロック図である。ホスト・システム110は、プリンタ160を介して印刷媒体180(たとえば、紙)上にシート画像120を印刷するために、印刷システム130と通信している。結果として得られる印刷媒体180は、カラーで、および/または白および黒を含む多数のグレー階調の任意のもので印刷されうる(たとえば、シアン、マゼンタ、イエロー、およびブラック(CMYK))。ホスト・システム110は、パーソナル・コンピュータ、サーバー、クラウド・インフラストラクチャー、またはさらにはデジタル撮像装置、たとえばデジタル・カメラまたはスキャナのような任意のコンピューティング装置を含みうる。
【0022】
シート画像120は、印刷媒体180のシート上の画像がどのように印刷されるべきかを記述する任意のファイルまたはデータでありうる。たとえば、シート画像120は、PostScriptデータ、プリンタ・コマンド言語(Printer Command Language、PCL)データ、および/または他の任意のプリンタ言語データを含んでいてもよい。印刷コントローラ140は、プリンタ160を介して印刷媒体180に印刷するためのビットマップ150を生成するためにシート画像を処理する。
【0023】
印刷システム130は、比較的大量(たとえば、100ページ/分より多い)を印刷するように動作可能な高速プリンタであってもよい。印刷媒体180は、連続フォーム紙、カットシート紙、および/または印刷に好適な他の任意の有体な媒体でありうる。印刷システム130は、一つの一般化された形では、シート画像120に基づくマーキング材料(たとえば、トナー、インク、コーティング等)を介して、ビットマップ150を印刷媒体180上に呈するための一つまたは複数の印刷エンジンを有するプリンタ160を含む。
【0024】
印刷コントローラ140およびプリンタ160は、両方とも同じ印刷システム130内に実装されてもよく、または別々に実装されて一緒に接続されてもよい。別の実施形態では、印刷コントローラ140は、ホスト・システム110内に実装され、プリンタ160に接続されてもよい。印刷コントローラ140は、印刷媒体180上への印刷に従ってビットマップ150を生成するためにシート画像120を変換するように動作可能な任意のシステム、装置、ソフトウェア、回路、および/または他の好適なコンポーネントでありうる。これに関して、印刷コントローラ140は、処理およびデータ記憶能力を含んでいてもよい。
【0025】
図2は、印刷コントローラ140のある実施形態を示す。図2に示されるように、印刷コントローラ140(たとえば、DFEまたはデジタル・フロント・エンド)は、その一般化された形では、解釈器モジュール212およびハーフトーン処理モジュール214を含む。解釈器モジュール212は、印刷ジョブの画像(たとえば、シート画像120のような生のシートサイド画像)を解釈〔インタープリット〕、レンダリング、ラスタ化、または他の仕方で変換して、シートサイド・ビットマップにするように動作可能である。
【0026】
解釈器モジュール212によって生成されるシートサイド・ビットマップは、それぞれ、印刷ジョブの画像を表わすピクセルの2次元アレイ(たとえば連続トーン画像(Continuous Tone Image、CTI))であり、フル・シートサイド・ビットマップとも呼ばれる。2次元ピクセル・アレイは、ビットマップが画像のためのピクセルの集合全体を含むので、「フル」シートサイド・ビットマップとみなされる。解釈器モジュール212は、レンダリング速度が実質的にプロダクション印刷エンジンのイメージング速度と一致するように、複数の生のシートサイドを同時並行して解釈またはレンダリングするように動作可能である。
【0027】
ハーフトーン処理モジュール214は、シートサイド・ビットマップをインクのハーフトーン・パターンとして表現するように動作可能である。たとえば、ハーフトーン処理モジュール214は、ピクセルを、用紙に適用するためのCMYKインクのハーフトーン・パターンに変換してもよい。ハーフトーン設計は、ピクセル位置に基づく、入力ピクセル・グレーレベルから出力液滴サイズへのあらかじめ定義されたマッピングを含んでいてもよい。
ある実施形態によれば、解釈器212もしくはハーフトーン処理モジュール214またはその両方は、ネストされた(たとえば、2つ以上の)タスク・キュー構造を介して、シートサイド画像のパイプライン化された並列非同期処理を実行するためのシートサイド処理220を含む。そのようなある実施形態では、各フル・シートサイド(たとえば、ページまたはシート)は、第1のタスク・キュー構造を介して処理され、その後、各シートサイドは、タスク・キュー構造(またはタスク・キュー)の第2の集合において処理される構成要素に分離される。
【0028】
あるさらなる実施形態では、2つ以上のシートサイドの前記構成要素は、タスク・キューの第2の集合において並列に処理されてもよい。解釈器モジュール212内に含まれるように図示されているが、他の実施形態は、シートサイド処理220を別個のコンポーネントとして実装してもよい。さらに他の実施形態は、ハーフトーン処理モジュール214内で、または解釈器モジュール212内でありまたハーフトーンモジュール214内で、シートサイド処理220を実装しうる。これは、ハーフトーン処理モジュール214および解釈器モジュール212内での処理要件に依存する。
【0029】
図3は、画像マネージャ310およびストライプ処理320を含む、シートサイド処理220のある実施形態を示す。ある実施形態によれば、画像マネージャ310は、印刷データに含まれる各シートサイド画像(または画像)のページ/シート境界を検出し、各シートサイド画像に関連する画像マネージャ・タスクを生成する。ある実施形態では、タスクは、処理されるべき関数への関数ポインタを表わす。
【0030】
ある実施形態では、画像マネージャ310は、生成された画像マネージャ・タスクのそれぞれを、複数の画像スレッド316(たとえば、処理スレッドの第1の集合)のうちの1つによる処理のために、画像タスク・キュー314(たとえば、第1のタスク・キュー)に記憶する。ある実施形態では、画像タスク・キュー314は、画像スレッド316によってタスクが処理されることができるまで一時的に画像マネージャ・タスクを格納する先入れ先出し(FIFO)構造である。このように、画像スレッド316による画像マネージャ・タスクの実行は、画像タスク・キュー314において受領される順序で開始される。別の実施形態では、画像マネージャ310は、画像タスク・キュー314内の単一の一意的な画像タスクを各シートサイド画像に割り当てる。図4Aは、画像タスク・キュー314として実装するためのタスク・キュー400のある実施形態を示す。
【0031】
あるさらなる実施形態では、各画像スレッド316は、画像タスク・キュー314からタスクを取り出し、そのタスクに関連付けられている関数を呼び出す。処理のために入手可能なタスクがない場合、画像スレッド316は、新しいタスクが画像タスク・キュー314に挿入されるまでスリープする。タスクを実行した後、画像スレッド316は、画像タスク・キュー314にアクセスして、次の入手可能なタスクを取り出し、このプロセスを繰り返す。図4Bは、画像スレッド316として実装するための複数(たとえばn個)の処理スレッド450のある実施形態を示す。
【0032】
ある実施形態によれば、各スレッド316は、必要とされる処理を受け入れるために、メモリ内の中間画像バッファの専用の集合を割り当てられる。そのようなある実施形態では、スレッド316の数は、割り当てなければならない中間バッファ集合の数を制限するために使用される。画像タスク・キュー314に関連するスレッド316が多いほど、プロセッサ利用効率が改善されるが、中間画像バッファの形でのリソース使用が増えるという代償を伴う。よって、メモリおよびハードウェア処理リソースの使用が、所与のハードウェア構成について、第1のタスク・キュー内のスレッドの数を選択することによって、最適化されうる(たとえば、定義されたシステム内のバッファ記憶などの制限されたリソースを超えない範囲で、画像処理利用率を増加させる)。
【0033】
ある実施形態によれば、画像タスク・キュー314内のスレッドの最適数は、それぞれの同時に処理される画像に割り当てられなければならないメモリの量、並列非同期画像処理エンジンの使用のために利用可能なメモリの量、および並列画像処理エンジンによる使用のために利用可能なハードウェア処理スレッドの数に基づいて決定されてもよい。第1のタスク・キューにおけるスレッドの数の決定および/または選択は、ホスト・システム110、印刷コントローラ140またはシートサイド処理220によって行なわれてもよい。
【0034】
あるいはまた、上述の諸要素に対応するスレッドの数は、印刷コントローラ140において、ユーザー・インターフェース230から受領されてもよい。あるいはまた、上述の諸要素に対応するスレッドの数は、記憶されてもよく、および/またはメモリから取り出されてもよい。ある実施形態では、画像マネージャ310は、第1のタスク・キュー内のスレッドの数を、数値的制限を超えないように設定する。
【0035】
ある実施形態では、画像スレッド316によって実行される各画像マネージャ・タスクは、タスクが関連付けられる画像に対応する、ストライプ画像構成要素の集合を生成する。ストライプ処理320は、ストライプ画像構成要素の各集合を受領し、該構成要素を、ストライプ・スレッド326(たとえば、処理スレッドの第2の集合)による処理のために、ストライプ・タスク・キュー324(たとえば、第2のタスク・キュー)に格納する。そのようなある実施形態では、タスク・キュー324は別個のタスク・キューの集まりであり、画像タスク・キュー314に関連付けられた各画像スレッド316について一意的なタスク・キュー324が存在する。
【0036】
あるさらなる実施形態では、ストライプ・タスク・キュー324は、画像タスク・キュー314(たとえば、図4Aに示されるタスク・キュー400を使用して実装される)と同様である。あるさらなる実施形態では、ストライプ・スレッド326は、図4Bに示される処理スレッド450構造を使用して実現され、ストライプ画像構成要素を処理するための作業スレッドとして動作する。
【0037】
ある実施形態によれば、ストライプ・タスク・キュー324は、画像タスク・キュー314と、ネストされた関係をもつ。そのようなある実施形態では、ストライプ・スレッド326による実行のためにストライプ・タスク・キュー324に格納されたストライプ・タスクのそれぞれは、画像スレッド316によって実行される画像タスクに対応する。このように、画像タスクを実行する画像スレッド316は「親」スレッドと呼ばれてもよく、ストライプ・タスクを実行するストライプ・スレッド326は「子」スレッドと呼ばれてもよい。
【0038】
ある実施形態では、ストライプ・タスクはストライプ・スレッド326によって並列に処理される。上記で論じられた画像マネージャ・タスクと同様に、ストライプ・スレッド326によるストライプ・タスクの実行は、ストライプ・タスク・キュー324において受領される順序で開始される。しかしながら、並列処理のため、ストライプ・タスクが順序どおりに完了されることは保証されない。よって、ストライプ処理320は、画像スレッド316によってシートサイド内のすべてのストライプ処理タスクの後にキューに入れられたスレッド同期タスクを実行する。スレッド同期タスクは、ストライプ・タスク・キュー324内のストライプ処理スレッドのそれぞれについて一つある。そのようなある実施形態では、画像タスクは、画像を処理するために必要なストライプ・タスクのすべてをキューに入れた後に、同期バリア327を生成する。
【0039】
ある実施形態では、同期バリア327はバリアを提供し、処理を終了する各ストライプ・スレッド326は、他のすべてのストライプ・スレッド326が同期バリア327に到達するまで、このバリアにおいて待たなければならない。このように、同期バリア327は、ストライプ・タスクの第1の集合の処理が完了したことを決定する。そのようなある実施形態では、同期バリア327は、ストライプ・スレッド326の対応する数またはストライプ・スレッド326の数に1を加えたもの(たとえば、nthreads+1)について生成される。
【0040】
あるさらなる実施形態では、画像スレッド316は、各ストライプ・スレッドについて1つの同期タスクをキューに入れ、次いで、自分で同期タスクを実行し、最終的には、合わせて、nthreads+1個の同期タスクが実行される。これは、すべてのスレッドを解放するためにバリアが実装する数である。あるさらなる実施形態では、画像マネージャ310は、同期の完了時に「サイド完了(side done)」メッセージをシートサイド処理220に送信して、フル・シートサイド内のすべてのストライプ構成要素の処理が完了したことを示す。
【0041】
ひとたび同期バリア327が生成されると、ストライプ処理320は、ストライプ・タスク・キュー324に挿入される同期(またはsync)タスクを生成する。ある実施形態では、ストライプ・タスク・キュー324に挿入される同期タスク328の数は、ストライプ・スレッド326の数(たとえば、nthreads)と等しい。さらに別の実施形態では、ストライプ処理320は、スレッド同期プロセスを実行する前にメタデータ構造を生成してもよい。
【0042】
メタデータ構造は、処理されたデータに関する記述情報、たとえば、シートサイド番号、使用された処理パラメータおよびオプション、およびもしあれば処理エラーの記述を含む。メタデータ構造は、典型的には、終了したばかりの処理の記述なので、シートサイドの処理が完了したときに、画像スレッドからクライアント・プロセス(たとえば、シートサイド処理220またはハーフトーン処理モジュール214)に送られるプロセス間メッセージのペイロードを含む。メタデータ構造は、完成したデータを適正な宛先にルーティングし、どのデータが正常に処理されたか、またエラーが発生した場合はどのデータが正常に処理されなかったかについての正確な記録を容易にするのに有用である。
【0043】
ストライプ・タスク・キュー324から同期タスク328を取り出すと、処理を終了する各ストライプ・スレッド326は、ひとたび同期バリア327に遭遇すると、待機する。ひとたび同期バリア327が満足されると(たとえば、対応するストライプ・スレッド326が処理を終了したことを判別する)、処理済みの画像ストライプ画像構成要素の集合が画像マネージャ310に返され、次いで、それ自体同期を待っている画像スレッド316が、サイド完了メッセージをクライアント・プロセスに送信し、もし残っている場合には、画像タスク・キュー314内の後続の画像タスクを取り出して処理することができる。結果として、画像スレッド316は、上述のように、ストライプ処理320によって処理されるべきストライプ画像構成要素の別の集合を生成することによって、次の画像タスクを処理することができる。
【0044】
ある実施形態によれば、画像マネージャ310は、諸画像を並列に処理してもよい。そのようなある実施形態では、一つまたは複数の画像スレッド316は、第1の画像の処理中に、画像タスク・キュー314に記憶された一つまたは複数の後続の画像タスクを処理することができる。このように、任意の所与の時点において、ストライプ画像構成要素の2つ以上の集合が、ストライプ・スレッド326によって処理されうる。あるさらなる実施形態では、ストライプ・スレッド326の実行優先度は、画像スレッド316の実行優先度と比較して高く構成され、シートサイドが、ひとたび開始されたら、与えられた利用可能なハードウェア・プロセッサでできるだけすみやかに終えられることを確実にする。
【0045】
このように、限られた処理リソースの場合、すでに開始された画像内のストライプ構成要素の処理が、追加の画像の処理を開始するよりも優先される。これは、印刷システムが仕上がった画像を順番に出力するので、有用である。よって、後の画像を開始するために、前の画像の完了からリソースを転用することは望ましくない。
【0046】
図5Aは、シートサイド処理220の別の実施形態を示す。図5Aに示されるように、画像スレッド316は、時間が左から右に進行するにつれて、ストライプ処理作業スレッド510を介して複数のシートサイドを処理していく。さらに、対応する同期バリア327および同期タスク328が、同期を実行するために含まれる。ある実施形態によれば、画像スレッド316は、ひとたび同期が完了すると、「サイド完了」メッセージをクライアント・スレッド(たとえば、シートサイド処理220またはハーフトーン処理モジュール214)に送信する。ある実施形態では、「サイド完了」メッセージは、実行された作業を記述するメタデータを含む。
【0047】
図5Bは、シートサイド処理220のためのプロセス・フローを示す。図5Bに示されるように、シート画像と画像タスクとの1対1対応と、画像スレッド316とストライプ・タスク・キュー324との間の別個の1対1対応がある。さらに、画像タスクDは、別の画像タスクが完了した後に画像スレッド316によって実行されるべく、待機している。ストライプ・タスク・キューは、実用上の目的のため、それぞれ同じ数のストライプ実行スレッドをもつ。しかしながら、これは他の実施形態では必要とされなくてもよい。
【0048】
図6は、シートサイド画像処理を実行するためのプロセス600のある実施形態を示すフロー図である。プロセス600は、ハードウェア(たとえば、回路、専用論理、プログラマブル論理など)、ソフトウェア(たとえば、処理装置上で実行される命令)、またはそれらの組み合わせを含みうる処理論理によって実行されうる。ある実施形態では、プロセス600は、シートサイド処理220によって実行されてもよい。異なる実施形態では、プロセス600は、代替的または追加的に、ハーフトーン・プロセス214によって実行されてもよい。プロセス600は、呈示における簡明のために線形シーケンスで示されているが、それらのうちの任意の数が、並列に、非同期的に、または異なる順序で実行されうることが考えられている。簡明および理解の容易のため、図1図5を参照して議論された詳細の多くは、ここでは議論されず、繰り返されない。
【0049】
プロセス600は、印刷されるべき印刷データにおいてシートサイド画像が受領される処理ブロック610で始まる。処理ブロック620では、各シートサイド画像について画像マネージャ・タスクが生成される。処理ブロック630では、画像マネージャ・タスクが画像タスク・キューに挿入される。続いて、画像マネージャ・タスクのそれぞれは、複数の画像スレッドのうちの1つによって処理される。上述したように、各画像マネージャ・タスクの処理は、画像タスク・スレッドによって実行され、画像に関連付けられたストライプ構成要素の集合を生成する。
【0050】
処理ブロック640では、一つまたは複数の関連する画像の処理の完了を示す、一つまたは複数の「サイド完了」メッセージが受領されてもよい。処理ブロック650では、処理されたシートサイド画像は、さらなる処理のために送信される。ある実施形態では、処理されたシートサイド画像は、ハーフトーン処理モジュール214でのハーフトーン処理のために転送されてもよい。そのようなある実施形態では、実行される処理は、圧縮されたシートサイドの圧縮解除であってよく、シートサイドはその後、ハーフトーン処理のために転送される。別の実施形態では、処理された画像は、圧縮解除画像処理のために転送された復号されたシートサイド画像であってもよく、ここで、シートサイド画像は、プロセス600によって再び処理される。
【0051】
図7は、画像マネージャ・タスクを処理するためのプロセス700のある実施形態を示すフロー図である。プロセス700は、ハードウェア(たとえば、回路、専用論理、プログラマブル論理など)、ソフトウェア(たとえば、処理デバイス上で実行される命令)、またはそれらの組み合わせを含みうる処理論理によって実行されうる。ある実施形態では、プロセス700は、シートサイド処理220によって実行されてもよい。方法700は、呈示における簡明のために線形シーケンスで示されているが、それらのうちの任意の数が、並列に、非同期的に、または異なる順序で実行されうることが考えられている。簡明および理解の容易のため、図1図6を参照して議論された詳細の多くは、ここでは議論されず、繰り返されない。
【0052】
プロセス700は、画像に対応する画像タスクに関連付けられたストライプ画像構成要素が受領される処理ブロック710で始まる。処理ブロック720では、ストライプ画像構成要素のそれぞれについてストライプ・タスクが生成される。処理ブロック730では、ストライプ・タスクはストライプ・タスク・キュー324に挿入される。その後、ストライプ・タスクはストライプ・スレッドによって実行される。処理ブロック740では、完遂された処理作業を記述するメタデータ構造が、ストライプ・スレッドの実行中に生成される。処理ブロック750では、同期処理が実行される。処理ブロック760では、メタデータを含んでいてもよい「サイド完了」メッセージが、同期が完了すると送信され、ストライプ画像構成要素の処理の完了を示す。
【0053】
図8は、同期処理を処理するためのプロセス800のある実施形態を示すフロー図である。プロセス800は、ハードウェア(たとえば、回路、専用論理、プログラマブル論理など)、ソフトウェア(たとえば、処理装置上で実行される命令)、またはそれらの組み合わせを含みうる処理論理によって実行されうる。ある実施形態では、プロセス800は、シートサイド処理220によって実行されてもよい。プロセス800は、呈示における簡明のために線形シーケンスで示されているが、それらのうちの任意の数が、並列に、非同期的に、または異なる順序で実行されうることが考えられている。簡明および理解の容易のため、図1図7を参照して議論された詳細の多くは、ここでは議論されず、繰り返されない。
【0054】
プロセス800は、同期バリア327が生成される処理ブロック810で始まる。処理ブロック820では、同期タスク328が生成される。処理ブロック830では、同期タスク328がストライプ・タスク・キュー324に挿入される。上述のように、各ストライプ・スレッドは、ストライプ・タスク・キュー324から同期タスク328を取り出すと、同期バリア327を待つ。処理ブロック840では、同期バリア327が遭遇され、満たされ、その結果、同期処理が完了する。
【0055】
図9は、印刷ホスト110、印刷システム130および/または印刷コントローラ140がその上に実装されうるコンピュータ・システム1300を示す。コンピュータ・システム1300は、情報を通信するためのシステム・バス1320と、情報を処理するための、バス1320に接続されたプロセッサ1310とを含む。
【0056】
コンピュータ・システム1300は、さらに、プロセッサ1310によって実行される情報および命令を格納するためにバス1320に接続されたランダム・アクセス・メモリ(RAM)または他の動的記憶装置1325(ここではメイン・メモリと称される)を有する。メイン・メモリ1325はまた、プロセッサ1310による命令の実行中に、一時変数または他の中間情報を記憶するために使用されてもよい。コンピュータ・システム1300はまた、プロセッサ1310によって使用される静的情報および命令を記憶するためにバス1320に接続された読み出し専用メモリ(ROM)および/または他の静的記憶装置1326を含んでいてもよい。
【0057】
情報および命令を記憶するために、磁気ディスクまたは光ディスクおよびその対応するドライブなどのデータ記憶装置1327もコンピュータ・システム1300に接続されてもよい。コンピュータ・システム1300は、I/Oインターフェース1330を介して第2のI/Oバス1350に接続されることもできる。表示装置1324、入力装置(たとえば、キーボード1323(たとえば、英数字入力装置)および/またはカーソル制御装置1322)を含む複数の入出力装置が入出力バス1350に接続されてもよい。通信装置1321は、他のコンピュータ(サーバーまたはクライアント)にアクセスするためのものである。通信装置1321は、モデム、ネットワーク・インターフェース・カード、またはイーサネット〔登録商標〕、トークン・リング、または他の型のネットワークへの接続のために使用されるような他の周知のインターフェース装置を含んでいてもよい。
【0058】
本発明の実施形態は、上記のさまざまなステップを含みうる。これらのステップは、機械実行可能命令において具現されてもよい。これらの命令は、汎用プロセッサまたは専用プロセッサにある種のステップを実行させるために使用されることができる。あるいはまた、これらのステップは、ステップを実行するための固定結線論理を含む特定のハードウェア・コンポーネントによって、またはプログラムされたコンピュータ・コンポーネントとカスタム・ハードウェア・コンポーネントの任意の組み合わせによって実行されてもよい。
【0059】
本発明の要素はまた、機械実行可能命令を記憶するための機械可読媒体として提供されてもよい。機械可読媒体は、フロッピーディスケット、光ディスク、CD-ROM、および光磁気ディスク、ROM、RAM、EPROM、EEPROM、磁気カードまたは光カード、伝搬媒体、または電子命令を記憶するのに好適な他の型の媒体/機械可読媒体を含みうるが、これらに限定されない。たとえば、本発明は、リモート・コンピュータ(たとえば、サーバー)から要求元コンピュータ(たとえば、クライアント)に、通信リンク(たとえば、モデムまたはネットワーク接続)を介して搬送波または他の伝搬媒体において具現されたデータ信号によって転送されうるコンピュータ・プログラムとしてダウンロードされてもよい。
【0060】
上記の記述を読んだ後では、当業者には、本発明の多くの変更および修正が明白となるであろうが、例解として示され記述されたどの個別的実施形態も、決して、限定的であると考えられることは意図されていないことを理解しておくべきである。よって、さまざまな実施形態の詳細への言及は、それ自体では本発明にとって本質的とみなされる特徴のみを記載している請求項の範囲を限定することは意図されていない。
図1
図2
図3
図4A
図4B
図5A
図5B
図6
図7
図8
図9