説明

フレームバッファ管理のシステム及び方法

【課題】メモリ資源の最適な利用を実現する。
【解決手段】画像形成装置においてフレームバッファメモリ及びディスプレイリストメモリを有する単独のメモリプールのフレームバッファを管理する方法が開示されている。いくつかの実施形態においては、メモリプールから、少なくとも一つのピクスマップに割り当てられた等しいサイズのブロックを用いた画像に対応する前記ピクスマップを管理する方法は、前記画像のスキャンラインのうち少なくとも一つを求める要求を受け付けるステップと、前記メモリプールに使用可能なメモリブロックがある場合、前記スキャンラインのうち少なくとも一つを求める要求に対して前記メモリプールのブロックのうち少なくとも一つのブロックにポインタを固定するステップと、前記メモリプールに使用可能なメモリブロックがない場合、複数のメモリ解放方法のうち少なくとも一つを適用するステップと、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は印刷の分野に関し、特にフレームバッファ管理のシステム及び方法に関する。
【背景技術】
【0002】
文書処理ソフトウェアによってユーザは便利に文書を閲覧、編集、処理、保存、及び印刷することができる。しかし、文書が印刷可能になる前に、文書のページは多くの場合ページ記述言語(「PDL」)によって記述される。この文書でも用いられているが、PDLにはPostScript、AdobePDF、HPPCL、MicrosoftXPS及びこれらの変形例等の、文書のページを記述するのに用いられる言語が含まれる。PDL記述により文書の各ページの高レベルの記述が提供され、多くの場合文書が印刷される際に一連のより低レベルのプリンタ特有のコマンドに翻訳される。この処理はラスタライゼーションと称される。ラスタライゼーション処理は複雑でそのプリンタがもつ特徴や性能に依存しうるが、柔軟で移植可能な汎用ラスタライゼーションスキームによってメモリの空き容量、所望の印刷スピード、コスト及びその他の条件に基づいたプリンタ性能の最適化を実現しうる。
【0003】
従来、印刷システムのメモリは、ディスプレイリストメモリとフレームバッファメモリとからなる二つの別個のプールによって構成されてきた。ディスプレイリストメモリは通常ラスタライゼーション用のディスプレイリストオブジェクトを保持し、フレームバッファメモリは通常印刷されたページに示される画像データを示すマークを保持する。ビットマップはデジタル画像の格納に用いられるメモリ構成の一種で、各ピクセルには一ビットが割り当てられる(つまりピクセルは「オン」か「オフ」かのいずれかである)。ピクスマップ(又はピクセルマップ)という用語はいくつかのビット深度で存在しうるラスタ画像を指して用いる。二つのプールの異なる性質により、ディスプレイリストメモリは通常フレームバッファを目的として用いることができず、逆もまた同様である。よって、印刷の失敗は一方のプールに十分空きメモリがあったとしても他方のプールに十分なメモリがないことによって起こりうる。また、個々の製品において異なる方法や最適化が用いられうるので、異なるルーチンを用いて二つの別個のプールを管理することによって、ある製品群にわたってメモリを管理するのに用いられるコードの修正及び管理が難しくなりうる。
【0004】
メモリ資源の最適化はメモリ全体が一つのプールとして扱われているような状況においても重要となりうる。例えば、フレームバッファのピクスマップは従来可変サイズの連続したメモリの塊を用いており、これによりメモリのフラグメンテーションが起こる。フラグメンテーションにより空きメモリが小さな使用不可能なブロックとして点在するので、小さなブロックの空きメモリを合計すると、小さなブロックが連続していればメモリ割当要求をみたすことができたにも関わらず、フラグメンテーションによっていくつかのメモリ割当要求をみたすことができなくなる。
【0005】
ディスプレイリストとフレームバッファの間でメモリが共用されている場合、プリンタ動作の間、各プールが十分な空きメモリを有し、非効率的な割当により潜在的に空きメモリが失われていないことを確実にするには、メモリの最適化が重要となる。グローバルレベルでは、コスト及び/又は印刷スピード等のプリンタ設計目標が達成されるように、最適化方法によってメモリをディスプレイリストとフレームバッファメモリとの間で割り当てることを確実にしうる。加えて、ローカライズされたディスプレイリスト及びフレームバッファ特有の最適化によってより低レベルで実現可能な最適化がエクスプロイトされることを確実にする。高価ではないプリンタにおいては、比較的少ないメモリを用いて、効率的なメモリ資源により設計上の機能性が達成されうる。高性能プリンタにおいては、メモリの有効利用によって、印刷アプリケーションに用いるためのより多くのリアルタイムなメモリの空き容量が確保され、性能の向上につながりうる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
よって、シームレスアップグレードパスを提供しながら、メモリ資源の最適な利用を実現するフレームバッファメモリを含むラスタライゼーションを行うプリンタ上のメモリを管理するシステム及び方法が求められている。
【課題を解決するための手段】
【0007】
開示された実施例によれば、フレームバッファメモリを管理するシステム及び方法が開示されている。いくつかの実施形態においては、メモリプールから、少なくとも一つのピクスマップに割り当てられた等しいサイズのブロックを用いた画像に対応する前記ピクスマップを管理する方法は、前記画像のスキャンラインのうち少なくとも一つを求める要求を受け付けるステップと、前記メモリプールに使用可能なメモリブロックがある場合、前記スキャンラインのうち少なくとも一つを求める要求に対して前記メモリプールのブロックのうち少なくとも一つのブロックにポインタを固定するステップと、前記メモリプールに使用可能なメモリブロックがない場合、複数のメモリ解放方法のうち少なくとも一つを適用するステップと、を備える。メモリプールはフレームバッファメモリ及びディスプレイリストメモリを有しうる。
【0008】
また、開示されている本発明の実施例は、コンピュータ読取可能なメディア又はコンピュータ読取可能なメモリを用いるプロセッサによって作成、格納、アクセス、又は修正される方法に関する。
【0009】
これら及びその他の実施例について添付の図面を参照しながら詳細に説明する。
【図面の簡単な説明】
【0010】
【図1】図1は、文書を印刷するシステムの構成要素を示すブロック図を図示している。
【図2】図2は、例示的なプリンタの高レベルブロック図を図示している。
【図3】図3は、フレームバッファ管理のシステムの例示的な高レベルアーキテクチャを図示している。
【図4】図4は、ラスタライゼーションの間のメモリプール310の一部の例示的な割当を示すスナップショット400を図示している。
【図5】図5は、ピクスマップオブジェクト510の例示的なデータ構造を示すブロック図500を図示している。
【図6】図6は、スキャンライン要素の二つの代替構成を示すブロック図600を図示している。
【図7】図7は、個別ピクスマップの生成の例示的な処理のフロー700を示すブロック図を図示している。
【発明を実施するための形態】
【0011】
本発明の様々な特徴を示す実施例に基づいて、第一印刷可能データから生成された第二又は中間形式の印刷可能データを自動的に格納、操作、及び処理するシステム及び方法が提示される。いくつかの実施例においては、第一印刷可能データは文書のPDL記述の形式を取り、中間印刷可能データはPDL記述から生成されたオブジェクトのディスプレイリストの形式を取りうる。
【0012】
図1は文書を印刷するシステムの構成要素を示すブロック図を図示している。開示された実施例に基づくコンピュータソフトウェアアプリケーションは、図1に示すように、従来の通信プロトコル及び/又はデータポートインターフェースを用いた情報交換を実現する通信リンクを通じて接続されたコンピュータネットワークにおいて配備されうる。
【0013】
図1に示すように、例示的システム100はコンピューティングデバイス110及びサーバ130を有するコンピュータを含む。また、コンピューティングデバイス110とサーバ130は、ある実施例においてはインターネットでありうるネットワーク140を経由して接続部120を通じて通信しうる。コンピューティングデバイス110はコンピュータワークステーション、デスクトップパソコン、ノートパソコン、又はその他のネットワーク化された環境で用いることができるあらゆるコンピューティングデバイスでありうる。サーバ130はコンピューティングデバイス110及びその他の装置(図示せず)に接続することができるプラットフォームであることができる。コンピューティングデバイス110及びサーバ130はプリンタ170を用いて文書の印刷を実現するソフトウェア(図示せず)を実行することができる。
【0014】
例示的プリンタ170は電子データから物理的な文書を作成する装置を含み、レーザプリンタ、インクジェットプリンタ、LEDプリンタ、プロッタ、ファクシミリ機、及びデジタルコピー機を含むが、これらに限定されない。いくつかの実施例においては、プリンタ170は接続部120を介してコンピューティング装置110又はサーバ130から受信した文書を直接印刷することができる。いくつかの実施例においては、このような構成によってコンピューティングデバイス110又はサーバ130による処理を加えた上で(又は加えずに)直接文書を印刷しうる。いくつかの実施例においては、文書はテキスト、グラフィックス、及びイメージのうちの一以上を含みうる。いくつかの実施例においては、プリンタ170は印刷される文書のPDL記述を受信しうる。また、文書印刷処理もまた割り当てることができる。よって、コンピューティングデバイス110、サーバ130、及び/又はプリンタは、文書がプリンタ170によって物理的に印刷される前に、網掛け、色合わせ及び/又はその他の操作処理等の文書印刷処理を部分的に実行しうる。
【0015】
コンピューティングデバイス110は、また、リムーバブルメディアドライブ150を含む。リムーバブルメディアドライブ150は例えば、3.5インチフロッピードライブ、CD−ROMドライブ、DVDROMドライブ、CD±RWもしくはDVD±RWドライブ、USBフラッシュドライブ及び/又は開示される実施例に適合するその他のあらゆるリムーバブルメディアドライブを含みうる。いくつかの実施例においては、ソフトウェアアプリケーションの各部分がリムーバブルメディアに搭載され、リムーバブルメディアドライブ150を用いてコンピューティングデバイス110によって読み出されて実行される。
【0016】
接続部120はコンピューティングデバイス110、サーバ130及びプリンタ170を接続し、従来の通信プロトコル及び/又はデータポートインターフェースを用いて有線又は無線接続として構築しうる。一般に、接続部120は装置間のデータの送受信を実現するあらゆる通信チャンネルであることができる。ある実施例においては、適切な接続を通じたデータの送受信のために、装置に例えば、パラレルポート、シリアルポート、Ethernet、USB、SCSI、FIREWIRE、及び/又は同軸ケーブルポート等の従来のデータポートを設けることができる。いくつかの実施例においては、接続部120はデジタル加入者回線(DSL)、非対称型デジタル加入者回線(ADSL)、又はケーブル回線であることができる。接続リンクは無線リンク、有線リンク又は様々な装置間の通信を可能にする、開示される実施例に適合するあらゆる組合せであることができる。
【0017】
ネットワーク140はLocalAreaNetwork(LAN)、WideAreaNetwork(WAN)、又はインターネットを含みうる。いくつかの実施例においては、ネットワーク140上で送信された情報は暗号化することによって、送信されるデータのセキュリティを確保しうる。プリンタ170は接続部120を通じてネットワーク140に接続されうる。いくつかの実施例においては、プリンタ170はまた直接コンピューティングデバイス110及び/又はサーバ130に接続されうる。いくつかの実施例においては、システム100はまた、その他の周辺機器(図示せず)を含みうる。開示される実施例に適合するコンピュータソフトウェアアプリケーションは図1に示すように、あらゆる例示的コンピュータに搭載しうる。例えば、コンピューティングデバイス110はサーバ130から直接ダウンロードしうるソフトウェアを実行することができる。開示される実施例に基づいて、アプリケーションの各部分はプリンタ170によっても実行しうる。
【0018】
図2は例示的プリンタ170の高レベルブロック図を示す。いくつかの実施例においては、プリンタ170はCPU176、ファームウェア171、メモリ172、入出力ポート175、プリントエンジン177及び二次記憶装置173を接続するバス174を含みうる。また、プリンタ170は開示される実施例に基づく文書印刷のためのアプリケーションの各部分を実行することができるその他のApplicationSpecificIntegratedCircuit(ASIC)、及び/又はFieldProgrammableGateArray(FPGA)178を有しうる。いくつかの実施例においては、プリンタ170はまたI/Oポート175及び接続部120を用いて二次記憶装置又はコンピューティングデバイス110のその他のメモリにアクセスすることができる。また、いくつかの実施例においては、プリンタ170はプリンタオペレーティングシステム及びその他の適切なアプリケーションソフトウェアを含むソフトウェアを実行することができる。いくつかの実施例においては、プリンタ170においてその他のオプション中、用紙サイズ、排紙トレイ、色選択及び印刷解像度はユーザが設定することができる。
【0019】
いくつかの実施例においては、CPU176は汎用プロセッサ、専用プロセッサ又は組み込みプロセッサでありうる。CPU176は制御情報及び命令を含むデータをメモリ172及び/又はファームウェア171と交換することができる。メモリ172はあらゆる種類のDynamicRandomAccessMemory(「DRAM」)であることができ、例えばSDRAM又はRDRAMが含まれるがこれらに限定されない。ファームウェア171は命令及びデータを保持することができ、起動シーケンス、予め定義されたルーチン、メモリ管理ルーチン及びその他のコードを含むがこれらに限定されない。いくつかの実施例においては、ファームウェア171のコード及びデータはCPU176によって実行される前に、メモリ172にコピーしうる。ファームウェア171に含まれるルーチンはコンピューティングデバイス110から受信されたページ記述をディスプレイリスト及び画像バンドに翻訳するコードを含みうる。いくつかの実施例においては、ファームウェア171は、ディスプレイリストを適切なピクスマップにラスタライズし、メモリ172にピクスマップを格納するルーチンを含みうる。ファームウェア171はまた圧縮ルーチンやメモリ管理ルーチンを含みうる。いくつかの実施例においては、ファームウェア171に含まれるデータ及び命令はアップグレードしうる。
【0020】
いくつかの実施例においては、CPU176は命令及びデータに従って各ASIC/FPGA178及びプリントエンジン177を制御し及びデータを提供して印刷文書を生成しうる。また、いくつかの実施例においては、各ASIC/FPGA178はプリントエンジン177を制御し及びデータを提供しうる。また、各FPGA/ASIC178は翻訳、圧縮及びラスタライゼーションアルゴリズムのうちの一以上を実行しうる。いくつかの実施例においては、コンピューティングデバイス110は文書データを第一印刷可能データに変換しうる。いくつかの実施例においては、第一印刷可能データは文書のPDL記述に対応しうる。そして、第一印刷可能データはプリンタ170へ送信されて、中間印刷可能データに変換されうる。プリンタ170は中間印刷可能データを最終的な形式の印刷可能データに変換して、ピクスマップ形式を取りうるこのような最終的な形式に基づいて印刷しうる。いくつかの実施例においては、第一印刷可能データは文書のPDL記述に対応しうる。いくつかの実施例においては、文書のPDL記述から一連のより低レベルのプリンタ固有のコマンドを含む最終的な印刷可能データへの翻訳処理には、オブジェクトのディスプレイリストを含む中間印刷可能データの生成を含みうる。
【0021】
いくつかの実施例においては、ディスプレイリストは、テキスト、グラフィックス、及びイメージデータオブジェクトのうちの一以上を保持しうる。いくつかの実施例においては、ディスプレイリスト内のオブジェクトはユーザ文書内の類似するオブジェクトに対応しうる。いくつかの実施例においては、ディスプレイリストは中間又は最終印刷可能データの生成を支援しうる。いくつかの実施例においては、ディスプレイリスト及び/又はピクスマップは、メモリ172又は二次記憶装置173に格納されうる。例示的二次記憶装置173は、内蔵もしくは外付けハードディスク、メモリスティック又はプリンタ170で用いることができるその他のあらゆるメモリ記憶装置でありうる。いくつかの実施例においては、ディスプレイリストはプリンタ170、コンピューティングデバイス110、及びサーバ130のうちの一以上の装置に搭載されうる。ディスプレイリスト及び/又はピクスマップを格納するメモリは、専用メモリでありもしくは汎用メモリの一部を形成し、又はいくつかの実施例においてはこれらの何らかの組合せを含みうる。いくつかの実施例においては、メモリは動的に割り当てられ、必要に応じてディスプレイリスト及び/又はピクスマップを保持しうる。いくつかの実施例においては、ディスプレイリスト及び/又はピクスマップを格納するのに割り当てられたメモリは処理後に動的に解放されうる。
【0022】
図3はフレームバッファ管理のシステムの例示的な高レベルアーキテクチャ300を図示する。開示される実施例によれば、アーキテクチャ300によってメモリプール310はフレームバッファ350及びフレームバッファではないブロックの両方に対応するブロックを含む単独のメモリプールとして管理される。一方、メモリ管理部375は、ブロック単位のメモリ割当によってフラグメンテーションが起こることを防止し、メモリ管理を実装するための詳細を抽象化し、メモリ管理アプリケーションプログラミングインターフェース(API)370を通じた標準インターフェースを提供し、そのルーチンにアクセスする。他方、ピクスマップコード345によって、ピクスマップは一体型のユニットとして論理的にみなされるとともに、メモリ管理API370及びフレームバッファ管理ライブラリ335を通じてメモリ管理部375が提供する機能を利用することにより、ピクスマップはメモリプール310の連続しないメモリブロックを占有することができる。
【0023】
図3に示されるように、言語サーバ340、エンジンサーバ360、及びラスタサーバ320は相互に通信しうる。また、言語サーバ340、エンジンサーバ360、及びラスタサーバ320はルーチンを実行してRDLライブラリ330と通信しうる。また、システムはフレームバッファ管理ライブラリ335を含み、フレームバッファ管理ライブラリ335は、ピクスマップコード345と通信し、並びにメモリ管理API370を通じてラスタサーバ320及びエンジンサーバ360と通信する。
【0024】
メモリ管理部375はメモリを割り当て、管理する。メモリ管理部375のルーチンはメモリ管理API370を用いてアクセスしうる。よって、メモリ管理コードの詳細はディスプレイリスト又はフレームバッファを管理及び/又は操作するのに用いられるプログラムコードから抽象化することができる。同様に、いくつかの実施例においては、ピクスマップコード345によってピクスマップを単独の論理的構成要素として利用及び操作するとともに、ピクスマップは一以上の連続しないメモリブロックに渡りうる。この抽象化はフレームバッファ管理ライブラリ335を用いてピクスマップのブロック及びポインタの割当及び割当解除、ピクスマップに関する状態情報並びにピクスマップを用いる処理の追跡を管理することによって達成することができる。いくつかの実施例においては、ピクスマップコード345によってピクスマップのメモリブロックにアクセスしうる。各メモリブロックは一まとまりの連続するメモリである。メモリブロックは一以上のスキャンラインを有しうる。画像内のピクセルの一列をスキャンラインという。
【0025】
いくつかの実施例においては、フレームバッファ管理ライブラリ335はブロック単位でメモリを割り当てうる。ある実施例においては、ブロックは同じ大きさでありうる。他の実施例においては、メモリはブロック単位又はスーパーブロックと称されるブロックの整数倍の単位で割り当てうる。スーパーブロックとは連続するブロックの一セットである。例えば、フレームバッファ管理ライブラリ335はメモリをブロック及びスーパーブロック単位で割り当て、スーパーブロックは四つのブロックから構成されうる。スーパーブロックはより大きなピクスマップを保持するのに有用であり、異なる紙サイズ、解像度、及び構成のサポートを容易にする。紙サイズ及びその他のパラメータが分かる特定の製品については、ブロックサイズは無駄なメモリを減らすような最適な数字に変更することができる。
【0026】
いくつかの実施例においては、メモリ管理部375によって提供される機能はメモリ管理アプリケーションAPI370を通じて用いられうる。例えば、フレームバッファ管理ライブラリ335はメモリ管理API370に指定されたインターフェースを用いて、メモリ管理部375によってブロック及びポインタを取得しうる。メモリ管理部375はメモリ管理API370の機能を定義する。いくつかの実施例においては、フレームバッファ管理ライブラリ335のコード等、ディスプレイリスト及びフレームバッファ350に関するコードはメモリ管理API370を通じてメモリ管理部375とインターフェースで接続されうる。よって、これらの実施例においては、メモリ管理部はディスプレイリスト又はフレームバッファを管理及び/又は操作するのに用いられるプログラムコードを変更せずに製品固有のメモリ管理部と交換又は容易に修正することができる。
【0027】
いくつかの実施例においては、ディスプレイリストは、文書又は印刷される文書内のページのデータオブジェクトとそれらのコンテクストを定義するコマンドを含みうる。これらの表示コマンドは文字又はテキスト、線画又は配列、及びイメージ又はラスタデータによって構成されるデータを含みうる。
【0028】
いくつかの実施例においては、ディスプレイリストは動的に再構成可能であり、再構成可能なディスプレイリストと称される(「RDL」)。ある実施例においては、RDLは動的に操作される状態で特定のディスプレイリストオブジェクトが格納されるデータ構造を用いて実装されうる。例えば、画像オブジェクトは所定の位置に圧縮されてメモリの空き容量が増加し、参照及び/又は使用される際には解凍しうる。いくつかの実施例においては、RDLによればRDLオブジェクトの実際の位置にポインタ、オフセット又はアドレスを保持してRDLオブジェクトがメモリ及び/又は二次記憶装置に格納され、その後参照及び/又は使用される際に検出しうる。一般に、RDLによってディスプレイリストオブジェクトはシステム上の制約及びパラメータに基づいて、柔軟に格納及び操作しうる。
【0029】
ある実施例においては、文書のPDL記述からディスプレイリスト及び/又はRDL表現への翻訳はRDLライブラリ330及びメモリ管理部375のルーチンを用いて言語サーバ340によって実行しうる。例えば、言語サーバ340はPDL言語プリミティブを用いてこれらをデータ及びグラフィカルオブジェクトに変換して、これらをRDLライブラリ330及びメモリ管理部375の作用によって提供される機能を用いて再構成可能なディスプレイリストに加えうる。ある実施例においては、ディスプレイリストはメモリ172の一部を構成しうる例示的なメモリプール310等の動的に割り当てられたメモリプールに格納し及び操作しうる。
【0030】
いくつかの実施例においては、RDLは実際の印刷の前に行われるデータ処理の中間過程において生成されうる。RDLは次の形式に変換される前に解析されうる。いくつかの実施例においては、次の形式は最終的な表現となることがあり、変換処理はデータのラスタライズと称されうる。例えば、ラスタライゼーションは、フレームバッファ管理ライブラリ335及びピクスマップコード345のルーチンを用いて、ラスタサーバ320により実行しうる。ラスタライゼーションの際にラスタライズされたデータは、メモリ管理API370を通じてアクセスしうるメモリ管理部375のルーチンを用いて、メモリプール310の一部でありうるフレームバッファ350に格納しうる。ある実施例においては、ラスタライズされたデータは印刷されたページ上に生成されるマークを示すビットマップ又はピクスマップの形式を取りうる。
【0031】
ある実施例においては、メモリ管理部375のルーチンはメモリ172の空きメモリのいくつかのサブセットをメモリプール310として管理し、メモリプール310からのメモリを、メモリ管理API370を通じて要求処理に割り当てうる。メモリが要求処理で必要とされなくなると、メモリは割当解除され、メモリプール310に戻され、他の処理に利用することができる。よって、例示的メモリ管理部375はその他の各種メモリ管理機能を提供し、メモリ解放のルーチン、メモリ回復のルーチン、及び二次記憶装置173とメモリを交換することができる交換ルーチンを含む。
【0032】
いくつかの実施例においては、フレームバッファ350はメモリプール310の一部を構成し、メモリ管理部375によって管理されうる。例えば、フレームバッファ管理ライブラリ335の機能を呼び出す結果、メモリ管理API370の機能を呼び出しうる。次に、メモリ管理APIはメモリ管理部375の機能のうち一以上の機能を実行しうる。メモリ管理部375によって実行される動作の結果は呼び出し処理に戻されうる。ある実施例において、フレームバッファ350は最初の連続するブロックのメモリが割り当てられ、続くメモリブロックは要求されればフレームバッファ350に割り当てられうる。メモリブロックはその他のフレームバッファ以外の目的でメモリプール310から割り当てうる。いくつかの実施例においては、フレームバッファ350又はその他の処理に割り当てられた個々のメモリブロックはメモリ172の連続しないメモリ領域を占有しうる。
【0033】
プリントエンジン177はフレームバッファ350のラスタライズされたデータを処理し、フレームバッファライブラリ335のルーチンを用いる紙等の印刷媒体にページの印刷可能な画像を形成しうる。いくつかの実施例においては、ラスタサーバ320及びエンジンサーバ360はRDLライブラリ330及びピクスマップコード345のルーチンを用いてその機能を実行しうる。例えば、ピクスマップコード345のルーチンによってラスタサーバ320はラスタライゼーションを支援するピクスマップルーチンにアクセスしうる。ある実施例においては、ピクスマップコード345のルーチンによって、エンジンサーバ360を通じてプリントエンジン177は一以上の色平面要素を含む最終的なピクスマップ及びアルファ平面要素を利用しうる。
【0034】
いくつかの実施例において、エンジンサーバ360は制御情報、命令及びデータをプリントエンジン177に提供しうる。いくつかの実施例においては、エンジンサーバ360は、ピクスマップコード345、フレームバッファライブラリ335、メモリ管理API370を通じてメモリ管理部375により提供される機能を用いて、フレームバッファオブジェクトによって利用されたメモリを処理終了後に解放してメモリプール310へ戻すルーチンを実行しうる。ピクスマップコード345のルーチンによってエンジンサーバ360はピクスマップのスキャンラインにアクセスしうる。いくつかの実施例においては、メモリプール310及び/又はフレームバッファ350の各部分はメモリ172又は二次記憶装置173に存在しうる。
【0035】
いくつかの実施例においては言語サーバ340、ラスタサーバ320、及びエンジンサーバ360のルーチンはファームウェア171によって提供され、又はASIC/FPGA178を用いて実装されうる。
【0036】
図4は、ラスタライゼーションの間のメモリプール310の一部分の例示的な割当を図示するスナップショット400を示す。ラスタライゼーションの様々な時点において、メモリプール310はブロック410、スーパーブロック420及び割り当てられていないメモリ440の何らかの組合せによって構成されうる。論理的な視点からは、メモリプール310は割り当てられていないメモリ440又はフリーブロック410の集まりとして当初見られうる。図4に示すように、メモリはブロック410−1、410−2、410−3、及び410−4によって構成されており、これらは四つの別個のピクスマップA、B、C、及びDにそれぞれ対応しうる。
【0037】
例えばピクスマップを格納するため、フレームバッファ350によるメモリ使用の要求がされると、ブロック410又はスーパーブロック420が割り当てられうる。RDLのメモリが要求される場合、又は一時的格納及び処理を目的とする場合はブロック410が割り当てられうる。図4に示すように、ピクスマップA、B、及びCは、メモリ172にわたって点在する連続しないメモリブロック410にわたって分散される。いくつかの実施例においては、メモリデフラグルーチンは一定の間隔でもしくはメモリの空き容量が一定の閾値を下回る場合、又はメモリを解放する方法として実行され、メモリプール310内でばらばらに分散したブロック410から新しいスーパーブロック420が生成される。例えば、メモリ内のオブジェクトは再配置されて、ばらばらに分散したブロックは組み合わされてより大きな連続するメモリ領域が生成される。
【0038】
いくつかの実施例においては、デフラグはスーパーブロックの利用によって不要となりうる。つまり、ブロックが要求された場合にスーパーブロックを割り当てうる。一つのブロックしか要求されていないので、スーパーブロックのブロックのうちの一以上のブロックが未使用でありうる。さらにブロックが要求されると、前に割り当てられたスーパーブロックからいずれかの未使用のブロックが要求元に提供され、これが未使用のブロックがなくなるまで続き、未使用のブロックがなくなると、別のスーパーブロックが割り当てられうる。例えば、図4に示すように、ピクスマップDはスーパーブロック420内に含まれる。
【0039】
いくつかの実施例においては、フレームバッファ350を連続しないブロック410に分割することによって、メモリを効率的に利用しうる。例えば、一つのスキャンラインにアクセスすると、対象のスキャンラインを含まないピクスマップのブロックにはメモリ温存又は回復スキームが実行されてメモリの空き容量が増加されうる。例えば、メモリブロックはディスクへ交換され又は圧縮されてメモリの空き容量が増加されうる。
【0040】
図5はピクスマップオブジェクト510の例示的データ構造のいくつかの部分を図示しているブロック図500を示す。ピクスマップオブジェクト510はピクスマップコード345のルーチンによって利用及び処理されうる。いくつかの実施例においては、ピクスマップオブジェクト510は例えばピクセルにわたる画像の縦及び横の長さ並びに各ピクセルについてのビット数又は色深度等のピクスマップオブジェクト510に関する内部情報520によって特徴付けられうる。色深度は各ピクセルが表現することができる色数を決定する。内部情報520は構成する平面の数、各構成要素のビットでのサイズ、ピクスマップ要素をパッキングするのに用いられるパッキング形式などのその他のピクスマップについての情報を格納する領域を含みうる。
【0041】
また、ピクスマップオブジェクト510はブロックリスト530を含み、これは特定のピクスマップに対応するブロック410又はスーパーブロック420に関する情報を保持することができる。例示的ブロックリスト530は一以上のブロックハンドルを有し、block_handle_1からblock_handle_nとして図示される。いくつかの実施例においては、各ブロックハンドルによってブロック410又はスーパーブロック420の一以上のスキャンラインにアクセスしうる。ブロックリスト530はリストのブロックへのポインタを保持するデータ領域を含みうる。例えば、各ブロックに関連付けられたデータ構造は直後及び/又は直前のブロックへのポインタを保持しうる。いくつかの実施例においては、ブロックリスト530は動的配列として実装され、これはサイズを変更することができ、要素を加えたり除いたりすることができる。
【0042】
いくつかの実施例においては、ブロック410又はスーパーブロック420によって保持されるスキャンラインの数は、割り当てられたユニットのサイズ及びその他のシステムパラメータによって決定されうる。例えば、ピクスマップに対応する各ブロック410はスキャンラインN個によって構成されうる。しかし、ピクスマップの最後のブロック410はN個より少ない数のスキャンラインを保持しうる。図5に示すように、各ブロック410は5個のスキャンラインを保持する。いくつかの実施例においては、スキャンラインはさらに要素平面、アルファ要素等のうちの一以上を含む構成要素に分けられうる。例えば、カラー画像のピクセルはシアン、マゼンタ、イエロー及びブラック(「CMYK」)の要素を含みうる。
【0043】
図6はスキャンライン要素の二つの代替構成を示すブロック図600を図示している。いくつかの実施例においては、ピクスマップの各要素平面はまとめてパッキングされてピクスマップブロック410の要素スキャンラインはインタリーブされうる。スキャンライン要素のインタリーブされた構成610が図6に図示されている。プリントエンジンがタンデム式で動作する場合、転写ベルト(又は感光体ドラム)に各要素平面からの画像は連続して重ねられ、合成画像は一回の通過により印刷媒体に転写されうる。よって、タンデムプリントエンジンを有するプリンタ170においては、インタリーブされたスキャンライン構成610が有用となりうる。要素スキャンラインがインタリーブされた場合、各要素スキャンラインは転写ベルト(又は感光体ドラム)に連続して出力されてからプリントエンジンは次のスキャンラインに進む。
【0044】
いくつかの実施例においては、ピクスマップのスキャンラインはまとめてパッキングされ、ピクスマップブロック410の要素平面はインタリーブされる。インタリーブされた要素平面構成620が図6に示される。四サイクルのプリントエンジンを有するプリンタにおいては、印刷媒体は転写ベルト(又は感光体ドラム)を四回通過する。一回通過する毎に要素画像が転写されて、四回通過した後に合成画像が得られる。四サイクルプリントエンジンを有するプリンタ170においてはインタリーブされた色平面構成620が有用となりうる。インタリーブされた色平面構成620においては、色成分の全てのスキャンラインはまとめてパッキングされる。例えば、C色成分622は全てのシアンのスキャンラインを保持する。同様にM色成分624、Y色成分626、及びK色成分628はそれぞれ全てのマゼンタ、イエロー、及びブラックのスキャンラインを保持する。要素平面がインタリーブされる場合、各要素平面のスキャンラインは転写ベルト(又は感光体ドラム)に連続して出力されてからプリントエンジンは次の色平面のスキャンラインに進む。いくつかの実施例においては、エンジンは互いにオフセットされてサイクル時間が大幅に短縮されうる。
【0045】
図7は個別ピクスマップの生成の例示的な処理のフロー700を示すブロック図を図示している。いくつかの実施例においては、ステップ710においてピクスマップが生成されうる。ピクスマップが生成されると、ピクスマップのブロックが割り当てられうる。ある実施例においては、ピクスマップのブロックが全て割り当てられうるが、割当時にはこれらのブロックはメインメモリ172に物理的に存在しないことがありうる。
【0046】
ステップ720において、ピクスマップオブジェクト510はアクティブにされうる。ピクスマップオブジェクト510が処理によってアクティブにされた場合、ピクスマップオブジェクト510はその処理によって使用中であることがマークされて、内部ポインタは適宜リフレッシュされうる。よって、ピクスマップオブジェクト510とアクティブにするステップに続く処理の間で関連付けが存在する。ピクスマップオブジェクト510と処理の間で関連付けを保つことはメモリ回復スキームの実装において有用となりうる。例えば、ある処理において追加のフレームバッファメモリを取得することができない場合に実行される、あらゆるメモリ回復方法は当該処理に関連付けられているピクスマップオブジェクト510に適用しうる。
【0047】
いくつかの実施例においては、ステップ730において、ピクスマップオブジェクト510のスキャンラインの最初の要求を受ける際に、ブロック410又はスーパーブロック420へのポインタが取得されうる。例えば、ピクスマップオブジェクト510のスキャンラインが要求されて、ブロック410へのポインタがまだ入手できない場合、ブロック410へのポインタを取得しうる。ブロック410へのポインタの取得に成功することによってブロック410がメモリ172に物理的に存在することが保証される。
【0048】
ステップ740において、ピクスマップオブジェクト510は非アクティブにされうる。例えば、ピクスマップオブジェクト510は、処理がピクスマップオブジェクト510に関する動作を完了した場合に非アクティブにされうる。非アクティブにすることによって、ブロック410又はスーパーブロック420と関連付けられたポインタを解放する。非アクティブにされた後、ピクスマップオブジェクト510を構成するブロック410又はスーパーブロック420は二次記憶装置173に交換されうる。いくつかの実施例においては、ブロック410又はスーパーブロック420へのポインタはピクスマップオブジェクト510が非アクティブにされるまで存続しうる。
【0049】
いくつかの実施例においては、要求処理の際に追加のフレームバッファメモリ又はブロックへのポインタを取得することができない場合、メモリ回復方法が実行されうる。メモリ回復方法には他の処理がメモリを解放するまで待機することが含まれうる。待機が時間切れになる場合、追加のメモリ回復方法が実行されうる。例えば、要求処理によってアクティブにされたあらゆるピクスマップオブジェクト510の未使用のブロックへのポインタは解放されうる。ポインタの解放によって、メモリ管理部375はこれらのブロックを二次記憶装置173と交換し、これにより要求処理のためのメモリが解放される。
【0050】
ステップ750において、ピクスマップオブジェクト510が続いて追加の処理に用いられるか決定されうる。もしピクスマップオブジェクト510がさらなる処理に用いられない場合は、ステップ760において、ピクスマップオブジェクト510を削除しうる。その他の場合は、ピクスマップはアクティブにされるまで、引き続き(二次記憶装置173において)非アクティブにされたままでありうる。ピクスマップオブジェクト510の利用が終了するまで、処理はステップ720〜750を繰り返しうる。次にピクスマップオブジェクト510はステップ760において削除しうる。ピクスマップオブジェクト510が削除されることによって、ピクスマップオブジェクト510に関連付けられたブロック410及び/又はスーパーブロック420がメモリプールに戻される。いくつかの実施例においては、非アクティブにするステップ740とともにステップ760のピクスマップオブジェクト510の削除のステップを実行しうる。
【0051】
本発明のその他の実施例は、本明細書に開示される、詳細な説明の検討及び本発明の一以上の実施例の実施により当業者にとって明らかとなるであろう。本明細書と実施例は、例示とすることのみを意図しており、本発明の真の範囲や意図は添付される請求項において示される。

【特許請求の範囲】
【請求項1】
フレームバッファメモリ及びディスプレイリストメモリを有するメモリプールから、少なくとも一つのピクスマップに割り当てられた等しいサイズのブロックを用いた画像に対応する前記ピクスマップの管理方法であって、
前記画像のスキャンラインのうち少なくとも一つを要求する要求を受け付けるステップと、
前記メモリプールに使用可能なメモリブロックがある場合、前記スキャンラインの少なくとも一つの要求に対して前記メモリプールのブロックのうち少なくとも一つのブロックにポインタを固定するステップと、
前記メモリプールに使用可能なメモリブロックがない場合、複数のメモリ解放方法のうち少なくとも一つを適用するステップと、
を備える方法。
【請求項2】
前記スキャンラインのうち少なくとも一つを求める要求に対して前記メモリプールのブロックのうち少なくとも一つのブロックにポインタを固定するステップは、
前記ピクスマップによって固定されたポインタのリストに前記ポインタを加えるステップと、
前記割り当てられたブロックに前記少なくとも一つのスキャンラインを関連付けるステップと、
前記ブロックに前記スキャンラインを格納するステップと、
をさらに備える請求項1に記載の方法。
【請求項3】
前記ポインタのリストはリンクされたリスト又は静的配列として実装されている、請求項2に記載の方法。
【請求項4】
前記リンクされたリストは前記リンクされたリストの各ブロックと関連付けられた、直後のブロックへのポインタを保持するデータフィールドを少なくとも一つ有する、請求項3に記載の方法。
【請求項5】
前記複数のメモリ回復方法は
割り当てられて、メモリに存在するブロックオブジェクトが解放されるのを待つステップと、
前記メモリプールをデフラグするステップと、
ピクスマップに関連付けられたメモリに存在するブロックを二次記憶装置に格納するステップと
のうちの少なくとも一以上を含む請求項1に記載の方法。
【請求項6】
前記ピクスマップブロックのリストの前記ブロックは不連続のメモリ領域を占有する、請求項2に記載の方法。
【請求項7】
前記単独のメモリプールは印刷装置上に搭載される、請求項1に記載の方法。
【請求項8】
インタリーブされたスキャンラインの構成が前記ピクスマップのパッキング形式として用いられる、請求項1に記載の方法。
【請求項9】
インタリーブされた要素平面構成が前記ピクスマップのパッキング形式として用いられる、請求項1に記載の方法。
【請求項10】
フレームバッファメモリ及びディスプレイリストメモリを有するメモリプールから、少なくとも一つのピクスマップに割り当てられた等しいサイズのブロックを用いた画像に対応する前記ピクスマップを管理する方法のステップを実行するプロセッサを制御する命令を含むコンピュータ読取可能な媒体であって、前記方法は、
前記画像のスキャンラインのうち少なくとも一つを求める要求を受け付けるステップと、
前記メモリプールに使用可能なメモリブロックがある場合、前記スキャンラインのうち少なくとも一つを求める要求に対して前記メモリプールのブロックのうち少なくとも一つのブロックにポインタを固定するステップと、
前記メモリプールに使用可能なメモリブロックがない場合、複数のメモリ解放方法のうち少なくとも一つを適用するステップと、
を備える。
【請求項11】
前記スキャンラインのうち少なくとも一つを求める要求に対して前記メモリプールのブロックのうち少なくとも一つのブロックにポインタを固定するステップは、
前記ピクスマップに割り当てられたブロックのリストに前記ブロックを加えるステップと、
前記割り当てられたブロックに前記少なくとも一つのスキャンラインを関連付けるステップと、
前記ブロックに前記スキャンラインを格納するステップと、
をさらに備える請求項10に記載のコンピュータ読取可能な媒体。
【請求項12】
前記ブロックのリストはリンクされたリスト又は静的配列として実装されている、請求項11に記載のコンピュータ読取可能な媒体。
【請求項13】
前記リンクされたリストは前記リンクされたリストの各ブロックと関連付けられた、直後のブロックにポインタを固定するデータフィールドを少なくとも一つ有する、請求項12に記載のコンピュータ読取可能な媒体。
【請求項14】
前記ピクスマップブロックのリストの前記ブロックは不連続のメモリ領域を占有する、請求項11に記載のコンピュータ読取可能な媒体。
【請求項15】
前記単独のメモリプールは印刷装置上に搭載される、請求項10に記載のコンピュータ読取可能な媒体。
【請求項16】
インタリーブされたスキャンラインの構成が前記ピクスマップのパッキング形式として用いられる、請求項10に記載のコンピュータ読取可能な媒体。
【請求項17】
インタリーブされた要素平面構成が前記ピクスマップのパッキング形式として用いられる、請求項10に記載のコンピュータ読取可能な媒体。
【請求項18】
フレームバッファメモリ及びディスプレイリストメモリを有するメモリプールから、少なくとも一つのピクスマップに割り当てられた等しいサイズのブロックを用いた画像に対応する前記ピクスマップを管理する方法のステップを実行するプロセッサを制御する命令を含むコンピュータ読取可能なメモリであって、前記方法は、
前記画像のスキャンラインのうち少なくとも一つを求める要求を受け付けるステップと、
前記メモリプールに使用可能なメモリブロックがある場合、前記スキャンラインのうち少なくとも一つを求める要求に対して前記メモリプールのブロックのうち少なくとも一つのブロックにポインタを固定するステップと、
前記メモリプールに使用可能なメモリブロックがない場合、複数のメモリ解放方法のうち少なくとも一つを適用するステップと、
を備える。
【請求項19】
前記スキャンラインのうち少なくとも一つを求める要求に対して前記メモリプールのブロックのうち少なくとも一つのブロックにポインタを固定するステップは、
前記ピクスマップに割り当てられたブロックのリストに前記ブロックを加えるステップと、
前記割り当てられたブロックに前記少なくとも一つのスキャンラインを関連付けるステップと、
前記ブロックに前記スキャンラインを格納するステップと、
をさらに備える請求項18に記載のコンピュータ読取可能なメモリ。
【請求項20】
前記ブロックのリストはリンクされたリスト又は静的配列として実装されている、請求項19に記載のコンピュータ読取可能なメモリ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2010−120376(P2010−120376A)
【公開日】平成22年6月3日(2010.6.3)
【国際特許分類】
【外国語出願】
【出願番号】特願2009−192942(P2009−192942)
【出願日】平成21年8月24日(2009.8.24)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
2.ETHERNET
【出願人】(507031918)コニカ ミノルタ システムズ ラボラトリー, インコーポレイテッド (157)
【Fターム(参考)】