JP5475307B2 - ラスタ化のためのメモリマネージメント方法、コンピュータ可読媒体及び装置 - Google Patents

ラスタ化のためのメモリマネージメント方法、コンピュータ可読媒体及び装置 Download PDF

Info

Publication number
JP5475307B2
JP5475307B2 JP2009081519A JP2009081519A JP5475307B2 JP 5475307 B2 JP5475307 B2 JP 5475307B2 JP 2009081519 A JP2009081519 A JP 2009081519A JP 2009081519 A JP2009081519 A JP 2009081519A JP 5475307 B2 JP5475307 B2 JP 5475307B2
Authority
JP
Japan
Prior art keywords
memory
pool
block
objects
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009081519A
Other languages
English (en)
Other versions
JP2009245437A (ja
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 JP2009245437A publication Critical patent/JP2009245437A/ja
Application granted granted Critical
Publication of JP5475307B2 publication Critical patent/JP5475307B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems

Description

本発明は、印刷の分野に関し、詳しくは、ラスタ化のためのメモリマネージメント方法、コンピュータ可読媒体及び装置に関する。
文書処理ソフトウェアによれば、ユーザは、文書を都合よく閲覧し、編集し、処理し、記憶することができる。文書中のページは、それらが印刷物に現れるとおりに、スクリーン上に正確に表示され得る。しかしながら、文書を印刷する前に、文書中のページは、多くの場合、ページ記述言語(「PDL」)で記述される。この文書において使用されるように、PDLには、ポストスクリプト(商標)、アドビ(商標)PDF、HP(商標)PCL、マイクロソフト(商標)XPS(商標)、並びにこれらの変形体、および文書中のページを記述するために使用される他の言語が含まれ得る。文書のPDL記述によれば、文書中のそれぞれのページのハイレベルな記述がもたらされる。このPDL記述は、文書が印刷されるときには、多くの場合、一連のよりローレベルなプリンタ特有コマンドへ変換される。文書のPDL記述から、印刷媒体にマークを付けるために使用することのできる、よりローレベルの記述への変換の処理は、ラスタ化と称される。
PDLからよりローレベルなプリンタ特有コマンドへの変換処理は、複雑になりかねず、また、特定のプリンタによってもたらされる特性および機能に左右されることがある。文書のPDL記述をプリンタ特有コマンドへ変換するための、順応性がありかつ移植可能な(portable)多目的方式によれば、利用可能なメモリ、所望の印刷速度、他のコストおよび性能基準に基づいたプリンタ性能の最適化が可能になる。
従来、印刷システムにおけるメモリは、ディスプレイリストメモリとフレームバッファメモリとを備える2つの別個のプールに体系化(organized)されている。ディスプレイリストメモリは、一般にラスタ化のためのディスプレイリストオブジェクトを保持し、フレームバッファメモリは、一般に、印刷されるページに形成されるべきマークを特定するビットマップデータを保持する。別個のメモリプールの使用は、フレームバッファ目的のためのディスプレイリストメモリの使用を妨げ、逆もまた同様である。印刷失敗はいずれかのプール内のメモリ不足に起因して生じる可能性がある。このような状況では、一方のプール内に十分な追加メモリが存在することがあるが、2つのプールの分離性のため、メモリは他方のメモリプールで使用するためには利用不可能である。その上、ディスプレイリストメモリプールおよびフレームバッファメモリプールをマネージメントするための別個のメモリのマネージメントルーチンの使用は、プロダクトファミリを通じてメモリをマネージメントするために使用されるコードを修正し維持するのを困難にすることがある。個別のプロダクトにおいては、異なるストラテジー(strategies)および最適化が使用され得るためである。たとえば、ディスプレイリストメモリが使い尽くされるとき、あるプロダクトは事前ラスタ化を始動させ、別のプロダクトはディスプレイリストメモリをディスクにスワップすることがある。統一性の欠如と、実施されるメモリマネージメントルーチンの多くの場合でのばらばらな組み合わせとが、最新版を提供すること、および機能性と性能を改善することの困難さを非常に増大させる。
よって、ラスタ化のためのプリンタ上のメモリをマネージメントする方法、コンピュータ可読媒体及びコンピュータ可読メモリであって、付加的な最適化を行いつつ、継ぎ目のないアップグレードパスを可能にするものが求められている。
開示された実施形態によれば、ページ記述言語に基づいてビットマップを生成する装置における方法、コンピュータ可読媒体及び装置が示される。いくつかの実施形態では、前記装置は、ページ記述言語をディスプレイリストに変換する言語サーバと、前記ディスプレイリストをビットマップに変換するラスタサーバと、前記ディスプレイリストとビットマップとが保存される単一のメモリプールとを備え、単一のメモリプールは、前記ビットマップを保存するためのフレームバッファによる使用のためにメモリ要求されたときに割り当てられる複数のスーパーブロックオブジェクトを有するスーパーブロックプールと、複数のノードオブジェクトを有するノードプールと、前記ディスプレイリストによる使用のためにメモリ要求されたときに割り当てられる複数のブロックオブジェクトを有するブロックプールと、を含むサブプールを備えることができる。この方法は、サブプールのうちの少なくとも1つへ向けられたメモリ割り当て要求を受信するステップと、ローカルオブジェクトがメモリ要求を満たすためにサブプール内で利用可能である場合に、メモリ要求に応答してサブプールにローカルなオブジェクトを割り当てるステップと、メモリ要求がノードプールまたはブロックプールへ向けられており、メモリ要求を満たすためにそれぞれのサブプール内に利用可能なローカルオブジェクトが存在しない場合に、メモリ要求に応答してスーパーブロックプールからのオブジェクトを割り当てるステップと、いずれのサブプール内にも利用可能な空きオブジェクトが存在しない場合に、複数のメモリ解放ストラテジーのうちの少なくとも1つを適用するステップと、を備えることがある。
実施形態は、コンピュータ可読媒体またはコンピュータ可読メモリを使用してプロセッサによって作成、保存、アクセス、または、修正された方法にも関する。
上記の実施形態およびその他の実施形態は次の図面を参照して以下にさらに説明されている。
いくつかの実施形態により文書を印刷するシステムにおける構成要素を示すブロック図である。 例示的なプリンタのハイレベルブロック図である。 メモリプールのマネージメントのためのシステムの例示的なハイレベルアーキテクチャを示す図である。 メモリプール310のマネージメントのための例示的なクラス階層を示す図である。 ラスタ化での例示的なメモリの割り当てを説明するためのスナップショットを示す図である。 メモリプール310からの新しいブロックの割り当てのためのアルゴリズムの例示的なフローチャート700である。 割り当てられたブロックへのポインタを取得するために例示的な方法で実行されるステップを説明するフローチャートである。 割り当てられるべき適切なメモリプールと、対応するオブジェクトとを決定する例示的な所定のルーチン730のフローチャートである。
本発明の種々の特徴を反映する実施形態によれば、第1の印刷可能データから生成される第2の形式すなわち中間形式の印刷可能データの自動的な保存、操作、および処理のシステムおよび方法が示される。いくつかの実施形態では、第1の印刷可能データは文書のPDL記述の形式をとることがあり、中間印刷可能データはPDL記述から生成されるオブジェクトのディスプレイリストの形式をとることがある。
図1は、本発明のいくつかの実施形態によって文書を印刷するためのシステムにおける構成要素を示すブロック図である。図1に示すように、本発明と整合性を有するコンピュータソフトウェアアプリケーションはコンピュータのネットワークで展開することができ、このネットワークは、従来の通信プロトコルおよび/またはデータポートインターフェースを使って情報が交換されることを可能にする通信リンクを介して接続されている。
図1に示すように、例示的なシステム100には、演算装置110とサーバ130とを含む複数のコンピュータが備えられる。さらに演算装置110とサーバ130とはコネクション120を通して交信し、コネクションはネットワーク140を通る。ネットワーク140は、一例ではインターネットとすることもできる。演算装置110はコンピュータワークステーション、デスクトップコンピュータ、ラップトップコンピュータ、またはネットワーク環境で使用することのできる他の演算装置とすることができる。サーバ130は、演算装置110およびその他の装置(図示しない)へ接続することのできるプラットフォームとすることができる。演算装置110とサーバ130とは、プリンタ170を使った文書の印刷を可能にするソフトウェア(図示しない)を実行することができる。
例示的なプリンタ170は電子データから物理文書を生成する装置を含んでおり、この装置にはレーザープリンタ、インクジェットプリンタ、LEDプリンタ、プロッタ、ファクシミリ装置、およびディジタルコピー機が包含されるが、これらに限定されない。いくつかの実施形態では、プリンタ170は、演算装置110またはサーバ130からコネクション120を介して受信した文書を直接印刷することもできる。いくつかの実施形態においては、このような構成は、演算装置110またはサーバ130による追加の処理を伴って(またはこれを伴わずに)、文書の直接印刷を可能にする。いくつかの実施形態においては、文書はテキスト、図形、および画像のうちの1つ以上を含む。いくつかの実施形態においては、プリンタ170は印刷用の文書のPDL記述を受信することができる。また、文書印刷処理を分散させることもできることに留意されたい。よって、演算装置110、サーバ130、および/またはプリンタ170は、文書がプリンタ170によって物理的に印刷される前に、ハーフトーニング、カラーマッチング、および/またはその他の操作プロセスといった文書印刷処理の部分を実行し得る。
また演算装置110は着脱可能型メディアドライブ150も含む。着脱可能型メディアドライブ150には、例えば、3.5インチフロッピードライブ、CD−ROMドライブ、DVD−ROMドライブ、CD±RWもしくはDVD±RWドライブ、USBフラッシュドライブ、および/または本発明の実施形態と整合性を有する他の着脱可能型メディアドライブなどが含まれ得る。いくつかの実施形態においては、ソフトウェア・アプリケーションの一部は、着脱可能型メディアに存在していてもよく、また、着脱可能型メディアドライブ150を使用して演算装置110によって読み取られ、実行される。
コネクション120は、演算装置110とサーバ130とプリンタ170とを接続するものであり、従来の通信プロトコルおよび/またはデータポートインターフェースを使った有線または無線の接続として実施され得る。一般にコネクション120は、装置間のデータの伝送を可能にする任意の通信路とすることができる。一実施形態では、例えば各装置は、パラレルポート、シリアルポート、イーサネット(商標)、USB、SCSI、FIREWIRE(商標)、および/または適切な接続を介したデータ伝送用の同軸ケーブルポートといった、従来のデータポートを備える。いくつかの実施形態においては、コネクション120は、ディジタル加入者線(DSL)、非対称ディジタル加入者線(ADSL)、またはケーブル接続とすることができる。通信リンクは無線リンクでも、有線リンクでも、様々な装置間の通信を可能とする本発明の各実施形態と整合性を有する任意の組み合わせとすることもできる。
ネットワーク140はローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、またはインターネットを含んでいてもよい。いくつかの実施形態においては、ネットワーク140を介して送られる情報は、送信されるデータのセキュリティを確保するために暗号化することができる。プリンタ170はコネクション120を介してネットワーク140へ接続することができる。いくつかの実施形態においては、プリンタ170は演算装置110および/またはサーバ130へ直接接続される。またシステム100は、本発明のいくつかの実施形態によれば、他の周辺機器(図示しない)を含んでいてもよい。本発明と整合性を有するコンピュータソフトウェアアプリケーションは、図1に示すように、例示的コンピュータおよびプリンタのいずれに配備されていてもよい。例えば、演算装置110は、サーバ130から直接ダウンロードされるソフトウェアを実行することもできる。これらのアプリケーションの各部分は、本発明のいくつかの実施形態に従って、プリンタ170によって実行されても良い。
図2に例示的なプリンタ170のハイレベルなブロック図を示す。いくつかの実施形態においては、プリンタ170は、CPU176、ファームウェア171、メモリ172、入出力ポート175、印刷エンジン177、および補助記憶装置173を接続するバス174を含む。またプリンタ170は、本発明のいくつかの実施形態によれば、PPMLを処理するためのアプリケーションの一部分を実行することのできるその他の特定用途向け集積回路(ASIC)、および/またはフィールドプログラマブルゲートアレイ(FPGA)178を含んでいてもよい。いくつかの実施形態では、プリンタ170は、入出力ポート175およびコネクション120を使って2次記憶メモリまたは演算装置110内のその他のメモリにアクセスすることもできる。いくつかの実施形態では、プリンタ170は、プリンタオペレーティングシステムおよび他の適切なアプリケーションソフトウェアを含むソフトウェアを実行することもできる。いくつかの実施形態においては、プリンタ170は、他のオプションのうち、用紙サイズ、排紙トレイ、色選択、および印刷解像度をユーザ設定可能なものにすることができる。
いくつかの実施形態では、CPU176は、汎用プロセッサとすることも、専用プロセッサとすることも、組み込みプロセッサとすることもできる。CPU176は、制御情報および命令を含むデータをメモリ172および/またはファームウェア171と交換することができる。メモリ172は、SDRAMやRDRAMといった任意の種類のダイナミックランダムアクセスメモリ(DRAM)とすることができるが、これらには限定されない。ファームウェア171は、起動シーケンス、事前定義のルーチン、およびその他のコードを含む命令およびデータを保持するが、これらには限定されない。いくつかの実施形態では、ファームウェア171の中のコードおよびデータは、CPU176によって処理される前にメモリ172へコピーされる。ファームウェア171に含まれるルーチンには、演算装置110から受け取られるページ記述をディスプレイリストおよび画像バンドへ変換するためのコードを含めることができる。いくつかの実施形態においては、ファームウェア171には、ディスプレイリストにおける表示コマンドを適切なラスタ化ビットマップへ変換するとともに当該ビットマップをメモリ172の中に記憶するためのラスタ化ルーチンが含まれても良い。また、ファームウェア171には、圧縮ルーチンおよびメモリマネージメントルーチンが含まれていてもよい。いくつかの実施形態においては、ファームウェア171内のデータおよび命令をアップグレード可能とすることもできる。
いくつかの実施形態においては、CPU176が命令およびデータに従って動作し、ASICS/FPGAS178および印刷エンジン177に制御およびデータを提供して印刷文書を生成する。いくつかの実施形態においては、ASICS/FPGAS178が印刷エンジン177に制御およびデータを提供する。またFPGAS/ASICS178は、変換、圧縮、およびラスタ化のアルゴリズムのうちの1つ以上を実施してもよい。いくつかの実施形態においては、演算装置110が文書データを第1の印刷可能データに変換することができる。次いで第1の印刷可能データを、中間印刷可能データに変換するためにプリンタ170に送ることができる。プリンタ170は、中間印刷可能データを最終形態の印刷可能データに変換して、この最終形態に従って印刷を行う。いくつかの実施形態においては、第1の印刷可能データは、文書のPDL記述に該当する。いくつかの実施形態では、文書のPDL記述から、一連のよりローレベルなプリンタ特有コマンドを有する上記最終形態の印刷可能データへの変換処理には、オブジェクトのディスプレイリストを有する中間印刷可能データの生成が含まれている。
いくつかの実施形態では、ディスプレイリストには、テキスト、図形、および画像のデータオブジェクトの1つ以上が保有されていてもよい。いくつかの実施形態では、ディスプレイリストの中のオブジェクトは、ユーザ文書の中の類似オブジェクトに対応していてもよい。いくつかの実施形態では、ディスプレイリストは、中間印刷可能データの生成を支援することができる。いくつかの実施形態では、ディスプレイリストは、メモリ172あるいは補助記憶装置173の中に記憶することができる。例示的な補助記憶装置173は、内部あるいは外部のハードディスク、メモリスティック、あるいはシステム200に使用することのできる他の記憶装置であってよい。いくつかの実施形態では、上記ディスプレイリストは、プリンタ170、演算装置110、およびサーバ130の1つ以上に存在していてもよい。ディスプレイリストを記憶するためのメモリは、開示された実施形態によれば、専用メモリであってもよく、または、汎用メモリの一部を形成してもよく、または、専用メモリと汎用メモリのある種の組み合わせでもよい。いくつかの実施形態では、メモリは、複数のディスプレイリストを必要に応じて保有するために動的(dynamically)に割り当てることができるようになっている。いくつかの実施形態では、複数のディスプレイリストを記憶するために割り当てられたメモリは、処理の後に動的に解放(released)されるようになっている。
図3はメモリプールのマネージメントのためのシステムの例示的なハイレベルアーキテクチャを示している。図3に示されているように、言語サーバ340、エンジンサーバ360、およびラスタサーバ320は、互いに通信することができる。加えて、言語サーバ340、エンジンサーバ360、およびラスタサーバ320は、ルーチンを呼び出すとともにRDLライブラリ330と通信することができる。このシステムは、ラスタサーバ320、エンジンサーバ360、およびメモリマネージメントアプリケーションプログラミングインターフェイス(API)370と通信するフレームバッファマネージメントライブラリ335をさらに含んでもよい。いくつかの実施形態では、メモリマネージャ375によって提供される機能性(functionality)の使用は、メモリマネージメントアプリケーションプログラミングインターフェイス(API)370を介して行われてもよい。メモリマネージャ375はメモリマネージメントAPI370の機能(functions)を定義する。いくつかの実施形態では、フレームバッファマネージメントライブラリ335内のコードのように、ディスプレイリストおよびフレームバッファ350に関係があるコードは、メモリマネージメントAPI370を介してメモリマネージャ375と接続する(intreface)。したがって、これらの実施形態では、メモリマネージャは、ディスプレイリストまたはフレームバッファをマネージメントおよび/または操作するために使用されるプログラムコードを変更することなく、プロダクト固有のメモリマネージャによって置き換えられるか、または修正され得る。いくつかの実施形態では、ディスプレイリストは、印刷されるべき文書内、または印刷されるべき文書におけるページ内でのデータオブジェクトと、これらデータオブジェクトのコンテキストとを定義するコマンドを含んでもよい。これらの表示コマンドには、文字あるいはテキスト、ラインドローイングあるいはベクトル、及び、画像あるいははラスタデータを有するデータが含まれていてもよい。
いくつかの実施形態では、ディスプレイリストは、動的に再構成することのできるものであり、また、再構成可能型ディスプレイリスト(RDL)と呼ばれる。1つの実施形態では、或るディスプレイリストオブジェクトが動的に操作できる態様で記憶されるデータ構造を使用して、RDLを実施することができる。例えば、画像オブジェクトは、利用可能なメモリの量を増大させるために適切に圧縮されてもよく、また、参照されかつ/または使用されるときに復元されてもよい。いくつかの実施形態では、RDLはまた、RDLオブジェクトの実際の記憶場所へのポインタ、オフセット値(offsets)、あるいはアドレスを保持することでRDLオブジェクトをメモリおよび/または補助記憶装置に記憶させることができ、その後、RDLオブジェクトが参照されかつ/または使用されるときにこの実際の記憶場所が検索される。一般に、RDLによれば、ディスプレイリストオブジェクトは、順応性を伴って記憶することができるとともに、システムの制約条件およびパラメータに基づいて操作することができる。
1つの実施形態では、文書のPDL記述をディスプレイリストおよび/またはRDL表示へ変換することは、RDLライブラリ330およびメモリマネージャ375の中のルーチンを用いて言語サーバ340によって実行することができる。例えば、言語サーバ340は、PDL言語基本要素を受け取り、かつ、これらのPDL言語基本要素をデータおよび図形オブジェクトに変換し、さらに、RDLライブラリ330およびメモリマネージャ375の中の関数によってもたらされる機能を用いて、再構成可能なディスプレイリストへこれらデータおよび図形オブジェクトを追加することができる。いくつかの実施形態では、メモリマネージャ375の中の関数およびルーチンへのアクセスは、メモリマネージメントAPI370を通してもたらされる。いくつかの実施形態では、ディスプレイリストは、例示的なメモリプール30のような、動的に割り当てられたメモリプールの中において、記憶され、操作される。このメモリプールは、メモリ172の一部であってもよい。
いくつかの実施形態では、RDLを作成することは、実際の印刷に先立つデータの処理における中間ステップであってもよい。RDLは、変換される前に、その後の形態(a subsequent form)に構文解析される。いくつかの実施形態では、その後の形態は最終表示であってもよく、また、変換処理はデータのラスタ化と呼ばれることがある。いくつかの実施形態では、フレームバッファマネージメントライブラリ335内のルーチンを使用してラスタ化はラスタサーバ320によって実行されてもよい。ラスタ化の際に、ラスタ化されたデータは、メモリマネージメントAPI370を介してアクセスされるメモリマネージャ375内のルーチンを使用して、メモリプール310の一部分であるフレームバッファ350内に保存されてもよい。いくつかの実施形態では、ラスタ化されたデータは、印刷ページに付けられるマークを指定するビットマップの形態を採ることができる。
一実施形態では、メモリマネージャ375内のルーチンは、メモリ172内における利用可能なメモリのいくつかのサブセットをメモリプール310として管理し、メモリマネージメントAPI370を介して、要求されている処理にメモリプール310中からメモリを割り当ててもよい。いくつかの実施形態では、メモリマネージャ375は、メモリマネージメントAPI370と相互作用し、メモリマネージャ375によって提供される機能へのアクセスがメモリマネージメントAPI370を介して行われる。要求されている処理によってメモリがもはや必要とされないときには、メモリは、割り当て解除されてメモリプール130へ戻り、他の処理に利用可能なものとなることができる。いくつかの実施形態では、メモリマネージャ370内のルーチンには、メモリ解放へのルーチン(routines to free memory)、メモリ回復へのルーチン(routines to recover memory)、およびメモリを補助記憶装置173へスワップすることのできるスワッピングルーチンが包含される他のさまざまなメモリマネージメントルーチンもまた含まれている。いくつかの実施形態では、フレームバッファ350はメモリプール310の一部分でもよく、メモリマネージャ370によって管理されてもよい。たとえば、フレームバッファマネージメントライブラリ335内の関数への呼び出しは、メモリマネージメントAPI370内の関数への呼び出しをもたらすことがある。その後に、メモリマネージメントAPIは、メモリマネージャ370内の1つ以上の関数を呼び出すことがある。メモリマネージャ375によって行われた動作の結果は、呼び出し側プロセスへ送られる(be routed back to)ことがある。一実施形態では、フレームバッファ350は、メモリの一次連続ブロック(an initial contiguous block)へ割り当てられてもよく、また、その後のメモリブロックは、要求されたときにフレームバッファ350へ割り当てられてもよい。メモリブロックは、他のフレームバッファ目的のためにメモリプール310から割り当てられてもよい。いくつかの実施形態では、フレームバッファ350またはその他の処理に割り当てられた異なるメモリブロックによって、メモリ172内の非連続な記憶場所が占領される。
印刷エンジン177は、フレームバッファマネージメントライブラリ335内のルーチンを使用して、ラスタ化されたデータをフレームバッファ350の中で処理し、用紙のような印刷媒体の上にページの印刷可能画像を形成することができる。いくつかの実施形態では、ラスタサーバ320およびエンジンサーバ360はまた、これらの機能を実行するために、RDLライブラリ330の中のルーチンを使用することができる。いくつかの実施形態では、エンジンサーバ360は、印刷エンジン177へ制御情報、指示、およびデータを提供することができる。いくつかの実施形態では、エンジンサーバ360は、メモリプール30へ返却するための処理後に、フレームバッファマネージメントライブラリ及びメモリマネージメントAPI370を介してメモリマネージャ375によって提供される機能を使用して、ディスプレイリストオブジェクトによって使用されたメモリを解放させるルーチンを呼び出すことがある。いくつかの実施形態では、RDLメモリプールの一部および/またはフレームバッファ350は、メモリ172あるいは補助記憶装置173の中に存在していてもよい。いくつかの実施形態では、言語サーバ340、ラスタサーバ320、およびエンジンサーバ360のためのルーチンはファームウェア171の中に設けられてもよく、あるいは、ASICS/FPGAS178を使用して実施されてもよい。
図4は、ラスタ化中にメモリプールをマネージメントするシステムの例示的なオブジェクト指向型実施における例示的なクラス図500の一部を示している。このクラス構造は、永続的な(persistent)単体のmm主制御装置510を含む。mm主制御装置510を永続的な単体として宣言することによって、mm主制御装置510の単一インスタンスがあるということと、mm主制御装置510の同一性がコード実行中に変化しないということと、mm主制御装置510へのアクセスの大域包括的な箇所(a global point of access to Master Control)があるということが保証される。クラス、サブクラス、および/またはオブジェクト520〜560によって、ラスタ化中のメモリマネージメントのためのシステムの一つの実施が示されている。さまざまなクラスに属しているオブジェクトは、実行中にインスタンス化することができる。
図4に示されているように、mm主制御装置510は、クラスmmプール560の3つのオブジェクトを含む。これらのオブジェクトは、ノードオブジェクト、ブロックオブジェクト、およびスーパーブロックオブジェクトを有する。これらのmmプールオブジェクトは、共有されたメモリプール310のマネージメントにおいて使用され得る。たとえば、メモリプール310は、スーパーブロックプール560−1、ノードプール560−2、およびブロックプール560−3を有すると論理的にみなされ得る。したがって、スーパーブロックプール560−1、ノードプール560−2、およびブロックプール560−3は、メモリプール310のサブプールである。さらに、各サブプールは当該サブプールにローカルな(local to that sub-pool)オブジェクトを有する可能性がある。オブジェクトと共に「ローカル」という用語を使用することは、記述的な目的のためにオブジェクトとそれぞれのプールとを関連付けるだけのために役立つ。したがって、スーパーブロックオブジェクトはスーパーブロックプール560−1にローカルでもよく、ノードオブジェクトはノードプール560−2にローカルでもよく、ブロックオブジェクトはブロックプール560−3にローカルでもよい。たとえば、フレームバッファ350と関連付けられたフレームバッファマネージメントライブラリ335内のルーチンは、メモリマネージメントAPI370を介してメモリマネージャ375を使用し、スーパープール560−1にスーパーブロックを要求することが可能である。同様に、RDLによってブロックオブジェクトがブロックプール560−3に要求されることがある。mmノードオブジェクト530は、ブロック割り当ておよびスーパーブロック割り当てをマネージメントする要求時に、ノードプール560−2からメモリマネージャ575によって割り当てられ得る。一実施形態では、1つのmmノードオブジェクト530は、ブロックの割り当て毎、或いはスーパーブロックの割り当て毎に使用されてもよい。いくつかの実施形態では、1つずつの個別のオブジェクトは、メモリの離散的な連続セクションを含んでもよい。
いくつかの実施形態では、mm主制御装置510は、mm優先度つきキューオブジェクト(PriorityQueue object)550を含むことができる。図4に示されているように、mm優先度つきキューオブジェクト550はmmリストオブジェクト540を含むことができる。さらに、mmリストオブジェクト540は、mmリンクオブジェクト520を使用してmmノードオブジェクト530を保持する。いくつかの実施では、mmノードオブジェクト530は、割り当て済みのブロックまたはスーパーブロックのそれぞれの経過を追う(keeps track)。mm優先度つきキューオブジェクト550はスワップ可能なブロックの経過を追うために使用され得る。利用可能なメモリが少なく、スワッピングが使用可能であるとき、mm優先度つきキューオブジェクト550は、メモリからブロックをスワップする順序を決定するために使用され得る。たとえば、割り当て済みブロックは優先度と関連付けられ得る。たとえば、優先度は、ブロックをアクセスしやすい状態に保つことで得られる性能優位性の指標である場合がある。一実施形態では、mm優先度つきキューオブジェクト550は、優先度の増加する順序にオブジェクトを順序付け、これによって、低優先度ブロックが高優先度ブロックよりも先にスワップアウトされることを可能にすることがある。その他の関数およびルーチンは、1つ以上の高優先度のメモリチャンクを瞬時にアクセスできる形式に保つために優先番号を使用することがある。
図5は、ラスタ化でのメモリプール310の例示的な割り当てを説明するためのスナップショット600を示している。ラスタ化中の様々な時点で、メモリプール310は、空きスーパーブロック630、割り当て済みスーパーブロック630−2、空きブロック610−1および割り当て済みブロック610−2にのいくつかの組み合わせを含むことがある。論理的な観点から、メモリプール310は、最初は空きスーパーブロック630−1、ノードブロック、および空きブロック610−1の集まりであると考えてもよい。いくつかの実施形態では、全てのスーパーブロックオブジェクトは、一様な一定サイズでもよい。いくつかの実施形態では、ブロックオブジェクトもまた一様な一定サイズでもよい。いくつかの実施形態では、ブロックオブジェクトの一様な一定サイズは、スーパーブロックオブジェクトのサイズより小さく、スーパーブロックオブジェクトのサイズと異なる。いくつかの実施形態では、スーパーブロックオブジェクトのサイズはブロックオブジェクトのサイズの整数倍でもよい。いくつかの実施形態では、スーパーブロックオブジェクトのサイズはブロックオブジェクトのサイズの偶数倍でもよい。たとえば、図5に示されているように、スーパーブロック630のサイズは4つのブロック610のサイズと等しくてもよい。
例えばビットマップを保存するためなど、フレームバッファ350による使用のためにメモリが要求されるときには、スーパーブロック630−1が割り当てられ得る。RDLのため、または一時的な保存および処理の目的のためにメモリが要求されるときには、より小さい単位のメモリが割り当てられ得る。たとえば、空きスーパーブロック630−1は等しいサイズのブロック610に分割されることができ、これらのブロック610の1つがRDLのため、または、一時的な保存および処理の目的のために使用されるときに割り当てられ得る。スーパーブロックプール560−1、ノードプール560−2、およびブロックプール560−3の使用は、一つには、メモリ割り当ての細かさ(granularity)を制御することを可能にする。ノードプール560−1およびブロックブール560−3は、スーパーブロックプール560−1からのメモリを割り当てるときに増大することができる。いくつかの実施形態では、メモリプール310内でばらばらに散在するブロックから新しいスーパーブロックを作成するために、メモリデフラグルーチンは、周期的に、または、利用可能なメモリがある種の閾値より少ないときに用いられ、或いは、メモリを解放するストラテジーとして用いられることがある。
図6は、メモリプール310から新しいブロック610−1を割り当てるアルゴリズムの例示的なフローチャート700を示している。ステップ710において、アルゴリズムが呼び出される。次に、所定のルーチン730において、新しいノードオブジェクトがノードプール560−2から割り当てられる。いくつかの実施形態では、新しいオブジェクトのためのメモリの割り当ては、新しい要素を割り当てる一般的な(generic)所定のルーチンを使用して実行されることがある。所定のルーチン730は、適切なメモリプール560と、割り当てられるべき対応オブジェクトとを決定するために、供給されるパラメータを使用することがある。たとえば、所定のルーチン730は、ノードプール560−2から新しいノードを割り当ててもよい。ステップ740において割り当てが成功であると判定される場合には、異なるパラメータのセットと共に所定のルーチン730を使用して、新しいスーパーブロック630−1又はブロック610−1が割り当てられてもよい。たとえば、メモリがビットマップを保存するためにフレームバッファ350によって使用中である場合には、所定のルーチン730はスーパーブロックプール560−3から新しいスーパーブロック630−1を割り当てることがある。ステップ760において割り当てが成功であると判定される場合には、新たに割り当てられるブロック610−2がノードに割り当てられ、当該ノードはステップ770において優先度つきキューに収容されることがある。いくつかの実施形態では、ノードはmm優先度つきキューオブジェクト550にリンクされてもよい。所定のルーチン730を使用した割り当てが失敗である場合には、アルゴリズムはステップ780へ進み、「割り当て失敗」メッセージが呼び出し側ルーチンへ返送されてもよい。
図7は、割り当て済みブロック610−2へのポインタを取得するための例示的な方法で実行されるステップを示すフローチャート800である。ステップ810において、アルゴリズムが呼び出される。次に、ステップ820において、割り当て済みブロック610−2に対応するノードが決定され得る。ステップ830および840においてそれぞれ判定されるように、ブロック610−2がメモリ内に存在し、ブロック610−2に対応するノードの参照カウントが「0」である場合には、ステップ850において、ノードが優先度つきキューから削除されることがある。いくつかの実施形態では、ノードを削除するために適切な動作がmm優先度つきキューオブジェクト550で実行されることがある。
ステップ830において判定され得るように、ブロック610−2がメモリ内に存在しない場合には、所定のルーチン730は供給されるパラメータを使用し、適切なメモリプール560と、割り当てられるべき、対応するスーパーブロック又はブロックオブジェクトとを決定することができる。次に、ステップ880において判定され得るように、オブジェクトの割り当てが成功の場合には、ブロック610−2のためのデータが補助記憶装置173から読み出されるか、またはスワップインされ、アルゴリズムはステップ860へ進む。ステップ840において、ノードの参照カウントが零でない場合には、アルゴリズムはステップ860へ進むことができる。ステップ860において、ノードの参照カウントが1つ増加され、ブロック610−2へのポインタが返却されることがある。ステップ880において所定のルーチン730によるメモリの割り当てが失敗であると判定される場合には、ステップ895において「メモリ不足」メッセージが呼び出し側ルーチンへ返送される。
図8は、適切なメモリプールと、割り当てられるべき対応オブジェクトとを決定する例示的な所定のルーチン730のフローチャートを示している。ステップ910において、アルゴリズムが呼び出される。次に、ステップ920において、使用されるべきサブプールが決定される。いくつかの実施形態では、サブプールは、スーパーブロックプール560−1でもよく、または、ノードプール560−2とブロックプール560−3との一方でもよい。割り当て要求がスーパーブロックプール560−1に対して行われると、ステップ930において、スーパーブロックプール560−1内のスーパーブロック630−1の可用性が決定され得る。スーパーブロック630−1が利用可能である場合には、ステップ940においてスーパーブロック630−1が割り当てられ得る。たとえば、スーパーブロック630−1は、フレームバッファ350と関連付けられたルーチンに割り当てられることがある。
ノードプール560−2またはブロックプール560−3に対してブロック610−1の要求が行われる場合には、ステップ965において、ノードプール560−2またはブロックプール560−3における空き、もしくは割り当てられていない要素又は割り当てユニットについての可用性が決定され得る。ノードオブジェクトまたはブロック610−1が利用可能である場合には、ステップ970において、要求されるオブジェクトのタイプに基づいてノードオブジェクトまたはブロック610−1が割り当てられ得る。たとえば、ノードオブジェクトがメモリマネージャ375による内部使用のために割り当てられてもよい。ステップ965における可用性のチェックによってノードプール560−2またはブロックプール560−3内に空き要素または割り当てられていない要素が存在しないと判定される場合には、アルゴリズムはステップ930へ進む。ステップ930において、スーパーブロックプール560−1内のスーパーブロック630−1の可用性が判定され得る。スーパーブロック630−1が利用可能である場合には、ステップ940においてスーパーブロックはブロック610−1に分割され、適切なプール560−2または560−3に割り当てられ得る。たとえば、スーパーブロック630−1はブロック610−1に分割され、1つのブロック610−1がRDLに割り当てられてもよい。
スーパーブロックプール560−1内に利用可能なスーパーブロック630−1が存在しない場合には、ステップ960において、アルゴリズムは、複数のメモリ解放ストラテジーのうちの一つを呼び出すことができる。たとえば、このアルゴリズムは、メモリが別のプロセスによって解放されるまで待機することができる。いくつかの実施形態では、アルゴリズムは、低優先度のノードを優先度つきキューから補助記憶装置173にスワップすることがある。メモリ解放ストラテジーが失敗の場合には、アルゴリズムは、メモリ不足を呼び出し側プロセスに報告することがある。
本発明の他の実施形態は、本明細書の考察、及び、本明細書中に開示された本発明の1つ以上の実施形態の実施により、当業者にとって明らかになるであろう。明細書及び例は例示的なものに過ぎないことを意図しており、本発明の本来の範囲及び要旨は、以下の特許請求の範囲に示されるものである。
100 システム
110 演算装置
120 コネクション
130 サーバ
140 ネットワーク
150 着脱可能型メディアドライブ
170 プリンタ
171 ファームウェア
172 メモリ
173 補助記憶装置
174 バス
175 入出力ポート
176 CPU
177 印刷エンジン
178 FPGA
310 メモリプール
320 ラスタサーバ
330 RDLライブラリ
335 フレームバッファマネージメントライブラリ
340 言語サーバ
350 フレームバッファ
360 エンジンサーバ
370 メモリマネージメントアプリケーションプログラミングインターフェイス
375 メモリマネージャ
510,520,530,540,550,560 オブジェクト
560−1 スーパーブロックプール
560−2 ノードプール
560−3 ブロックプール
600 メモリレイアウト
610−1 空きブロック
610−2 割り当て済みブロック
630−1 空きスーパーブロック
630−2 割り当て済みスーパーブロック

Claims (20)

  1. ページ記述言語に基づいてビットマップを生成する装置における方法であって、
    前記装置は、
    ページ記述言語をディスプレイリストに変換する言語サーバと、
    前記ディスプレイリストをビットマップに変換するラスタサーバと、
    前記ディスプレイリストとビットマップとが保存される単一のメモリプールとを備え、
    前記単一のメモリプールは、
    前記ビットマップを保存するためのフレームバッファによる使用のためにメモリ要求されたときに割り当てられる複数のスーパーブロックオブジェクトを有するスーパーブロックプールと、
    複数のノードオブジェクトを有するノードプールと、
    前記ディスプレイリストによる使用のためにメモリ要求されたときに割り当てられる複数のブロックオブジェクトを有するブロックプールと、
    を含むサブプールを備え、
    当該方法は、
    前記サブプールのうちの少なくとも1つへ向けられたメモリ割り当て要求を受信するステップと、
    前記メモリ要求を満たすためにローカルオブジェクトが前記サブプール内で利用可能である場合に、前記メモリ要求内で識別された前記サブプールにローカルなオブジェクトを割り当てるステップと、
    前記メモリ要求が前記ノードプールまたは前記ブロックプールへ向けられており、前記メモリ要求を満たすために各サブプール内に利用可能なローカルオブジェクトが存在しない場合に、前記スーパーブロックプールからのオブジェクトを割り当てるステップと、
    いずれの前記サブプール内にも利用可能な空きオブジェクトが存在しない場合に、複数のメモリ解放ストラテジーのうちの少なくとも1つを適用するステップと、
    を備える方法。
  2. 前記スーパーブロックプールが整数個の均一サイズのスーパーブロックオブジェクトを備え、
    前記ブロックプールが整数個の均一サイズのブロックオブジェクトを備え、
    前記スーパーブロックオブジェクトのサイズが前記ブロックオブジェクトのサイズの整数倍である請求項1に記載の方法。
  3. 前記スーパーブロックオブジェクトのサイズが前記ブロックオブジェクトのサイズの偶数倍である請求項2に記載の方法。
  4. 前記複数のメモリ解放ストラテジーが、
    割り当て済みのメモリ常駐ブロックオブジェクトが解放されるのを待機するステップと、
    前記ノードプールおよび前記ブロックプールのうちの少なくとも一方をデフラグするステップと、
    メモリ常駐ブロックオブジェクトを補助記憶装置に保存するステップと、
    のうちの少なくとも1つを備える請求項1〜3の何れか一項に記載の方法。
  5. 前記スーパーブロックオブジェクトのサイズが複数の所定のサイズのうちの1つから選択される請求項1〜4の何れか一項に記載の方法。
  6. 前記単一のメモリプールが印刷装置に常駐する請求項1〜5の何れか一項に記載の方法。
  7. メモリ常駐ブロックオブジェクトが補助記憶装置に保存される順序は、当該メモリ常駐ブロックオブジェクトに対応するノードオブジェクトと関連付けられた優先度に基づく請求項4に記載の方法。
  8. アプリケーションプログラミングインターフェイスを使用して呼び出される請求項1〜7の何れか一項に記載の方法。
  9. フレームバッファメモリの要求が前記スーパーブロックプールへ向けられる請求項1〜8の何れか一項に記載の方法。
  10. ディスプレイリストメモリの要求が前記ブロックプールへ向けられる請求項1〜9の何れか一項に記載の方法。
  11. 複数の命令を記憶するコンピュータ可読媒体であって、
    前記複数の命令は、プロセッサによって実行されると、ページ記述言語に基づいてビットマップを生成する装置における方法を実行するものであり、
    前記装置は、
    ページ記述言語をディスプレイリストに変換する言語サーバと、
    前記ディスプレイリストをビットマップに変換するラスタサーバと、
    前記ディスプレイリストとビットマップとが保存される単一のメモリプールとを備え、
    前記単一のメモリプールは、
    前記ビットマップを保存するためのフレームバッファによる使用のためにメモリ要求されたときに割り当てられる複数のスーパーブロックオブジェクトを有するスーパーブロックプールと、
    複数のノードオブジェクトを有するノードプールと、
    前記ディスプレイリストによる使用のためにメモリ要求されたときに割り当てられる複数のブロックオブジェクトを有するブロックプールと、
    を含むサブプールを備え、
    前記方法は、
    前記サブプールのうちの少なくとも1つへ向けられたメモリ割り当て要求を受信するステップと、
    前記メモリ要求を満たすためにローカルオブジェクトが前記サブプール内で利用可能である場合に、前記メモリ要求内で識別された前記サブプールにローカルなオブジェクトを割り当てるステップと、
    前記メモリ要求が前記ノードプールまたは前記ブロックプールへ向けられており、前記メモリ要求を満たすために各サブプール内に利用可能なローカルオブジェクトが存在しない場合に、前記スーパーブロックプールからのオブジェクトを割り当てるステップと、
    いずれの前記サブプール内にも利用可能な空きオブジェクトが存在しない場合に、複数のメモリ解放ストラテジーのうちの少なくとも1つを適用するステップと、
    を備えるコンピュータ可読媒体。
  12. 前記スーパーブロックプールが整数個の均一サイズのスーパーブロックオブジェクトを備え、
    前記ブロックプールが整数個の均一サイズのブロックオブジェクトを備え、
    前記スーパーブロックオブジェクトのサイズが前記ブロックオブジェクトのサイズの整数倍である請求項11に記載のコンピュータ可読媒体。
  13. 前記スーパーブロックオブジェクトのサイズが前記ブロックオブジェクトのサイズの偶数倍である請求項12に記載のコンピュータ可読媒体。
  14. 前記複数のメモリ解放ストラテジーが、
    メモリ常駐ブロックオブジェクトが解放されるのを待機するステップと、
    前記ノードプールおよび前記ブロックプールのうちの少なくとも一方をデフラグするステップと、
    メモリ常駐ブロックオブジェクトを補助記憶装置に保存するステップと、
    のうちの少なくとも1つを備える請求項11〜13の何れか一項に記載のコンピュータ可読媒体。
  15. 前記メモリプールが印刷装置に常駐する請求項11〜14の何れか一項に記載のコンピュータ可読媒体。
  16. メモリ常駐ブロックオブジェクトが補助記憶装置に保存される順序は、当該メモリ常駐ブロックオブジェクトに対応するノードオブジェクトと関連付けられた優先度に基づく請求項14に記載のコンピュータ可読媒体。
  17. 前記方法がアプリケーションプログラミングインターフェイスを使用して呼び出される請求項11〜16の何れか一項に記載のコンピュータ可読媒体。
  18. ページ記述言語に基づいてビットマップを生成する装置であって、
    ページ記述言語をディスプレイリストに変換する言語サーバと、
    前記ディスプレイリストをビットマップに変換するラスタサーバと、
    前記ディスプレイリストとビットマップとが保存される単一のメモリプールとを備え、
    前記単一のメモリプールは、
    前記ビットマップを保存するためのフレームバッファによる使用のためにメモリ要求されたときに割り当てられる複数のスーパーブロックオブジェクトを有するスーパーブロックプールと、
    複数のノードオブジェクトを有するノードプールと、
    前記ディスプレイリストによる使用のためにメモリ要求されたときに割り当てられる複数のブロックオブジェクトを有するブロックプールと、
    を含むサブプールを備え、
    当該装置は、
    前記サブプールのうちの少なくとも1つへ向けられたメモリ割り当て要求を受信する手段と、
    前記メモリ要求を満たすためにローカルオブジェクトが前記サブプール内で利用可能である場合に、前記メモリ要求内で識別された前記サブプールにローカルなオブジェクトを割り当てる手段と、
    前記メモリ要求が前記ノードプールまたは前記ブロックプールへ向けられており、前記メモリ要求を満たすために一つ一つの前記サブプール内に利用可能なローカルオブジェクトが存在しない場合に、前記スーパーブロックプールからのオブジェクトを割り当てる手段と、
    いずれの前記サブプール内にも利用可能な空きオブジェクトが存在しない場合に、複数のメモリ解放ストラテジーのうちの少なくとも1つを適用する手段と、
    を備える装置。
  19. 前記スーパーブロックプールが整数個の均一サイズのスーパーブロックオブジェクトを備え、
    前記ブロックプールが整数個の均一サイズのブロックオブジェクトを備え、
    前記スーパーブロックオブジェクトのサイズが前記ブロックオブジェクトのサイズの整数倍である請求項18に記載の装置。
  20. 前記複数のメモリ解放ストラテジーが、
    メモリ常駐ブロックオブジェクトが解放されるのを待機するステップと、
    前記ノードプールおよび前記ブロックプールのうちの少なくとも一方をデフラグするステップと、
    メモリ常駐ブロックオブジェクトを補助記憶装置に保存するステップと、
    のうちの少なくとも1つを備える請求項1〜9の何れか一項に記載の方法。
JP2009081519A 2008-03-31 2009-03-30 ラスタ化のためのメモリマネージメント方法、コンピュータ可読媒体及び装置 Expired - Fee Related JP5475307B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/059,692 US8782371B2 (en) 2008-03-31 2008-03-31 Systems and methods for memory management for rasterization
US12/059,692 2008-03-31

Publications (2)

Publication Number Publication Date
JP2009245437A JP2009245437A (ja) 2009-10-22
JP5475307B2 true JP5475307B2 (ja) 2014-04-16

Family

ID=41118900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009081519A Expired - Fee Related JP5475307B2 (ja) 2008-03-31 2009-03-30 ラスタ化のためのメモリマネージメント方法、コンピュータ可読媒体及び装置

Country Status (2)

Country Link
US (1) US8782371B2 (ja)
JP (1) JP5475307B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8526049B2 (en) * 2006-03-31 2013-09-03 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for display list management
US8228555B2 (en) * 2008-03-31 2012-07-24 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for parallel display list rasterization
US8817032B2 (en) 2008-08-29 2014-08-26 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for framebuffer management
US8854680B2 (en) * 2008-09-11 2014-10-07 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimal memory allocation units
US8861014B2 (en) * 2008-09-30 2014-10-14 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimized printer throughput in a multi-core environment
JP2011126210A (ja) * 2009-12-18 2011-06-30 Canon Inc 印刷データ処理装置、印刷データ処理方法、およびプログラム
US9639792B2 (en) * 2011-07-18 2017-05-02 Ricoh Company, Ltd. Resolution of out of memory conditions for shared memory in a print controller
CN104170364B (zh) * 2012-01-10 2017-03-15 京瓷办公信息系统株式会社 图像形成装置
US9395935B1 (en) * 2014-01-08 2016-07-19 Emc Corporation Inter-storage processor storage pool job status communication
US10290287B1 (en) * 2014-07-01 2019-05-14 Xilinx, Inc. Visualizing operation of a memory controller
CN107305506A (zh) * 2016-04-20 2017-10-31 阿里巴巴集团控股有限公司 动态分配内存的方法、装置及系统
US10437601B2 (en) 2017-06-30 2019-10-08 Microsoft Technology Licensing, Llc Centralized memory management for multiple device streams
JP6853227B2 (ja) * 2018-10-10 2021-03-31 株式会社日立製作所 ストレージシステム及びストレージ制御方法
CN109710409B (zh) * 2018-12-24 2022-02-18 郑州云海信息技术有限公司 一种内存管理方法、系统、装置及可读存储介质

Family Cites Families (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4782398A (en) 1986-02-14 1988-11-01 Canon Kabushiki Kaisha Image processing apparatus
US5010515A (en) 1987-07-28 1991-04-23 Raster Technologies, Inc. Parallel graphics processor with workload distributing and dependency mechanisms and method for distributing workload
JP2797400B2 (ja) 1989-04-18 1998-09-17 富士ゼロックス株式会社 データ表示制御装置
US5041920A (en) 1989-11-15 1991-08-20 Xerox Corporation Image halftone generation by static RAM look-up table
US5319778A (en) 1991-07-16 1994-06-07 International Business Machines Corporation System for manipulating elements in linked lists sharing one or more common elements using head nodes containing common offsets for pointers of the linked lists
US6092171A (en) 1991-09-16 2000-07-18 Advanced Micro Devices, Inc. System and method for using a memory management unit to reduce memory requirements
US5477257A (en) 1991-11-11 1995-12-19 Matsushita Electric Industrial Co., Ltd. Image forming method and apparatus using rotated screen with pulse width modulation
JPH05244371A (ja) 1992-02-27 1993-09-21 Canon Inc 記録装置および方法
US5479587A (en) 1992-09-03 1995-12-26 Hewlett-Packard Company Page printer having adaptive data compression for memory minimization
US5491808A (en) 1992-09-30 1996-02-13 Conner Peripherals, Inc. Method for tracking memory allocation in network file server
JPH06149757A (ja) 1992-11-10 1994-05-31 Hitachi Ltd 並列処理装置
US5542031A (en) 1993-04-30 1996-07-30 Douglass; Clay S. Halftone computer imager
US5646670A (en) 1993-08-31 1997-07-08 Canon Kabushiki Kaisha Color image forming apparatus which reduces toner consumption during image formation
US5502462A (en) 1993-11-01 1996-03-26 The 3Do Company Display list management mechanism for real-time control of by-the-line modifiable video display system
US5577243A (en) * 1994-03-31 1996-11-19 Lexmark International, Inc. Reallocation of returned memory blocks sorted in predetermined sizes and addressed by pointer addresses in a free memory list
US5864342A (en) 1995-08-04 1999-01-26 Microsoft Corporation Method and system for rendering graphical objects to image chunks
JP3466808B2 (ja) 1996-02-29 2003-11-17 キヤノン株式会社 画像処理装置及び方法
US5946334A (en) 1996-03-27 1999-08-31 Ricoh Company, Inc. Semiconductor laser control system
US5793937A (en) 1996-03-29 1998-08-11 Peerless Systems Corporation Fallback processing for page generation using memory reduction techniques
US5778414A (en) 1996-06-13 1998-07-07 Racal-Datacom, Inc. Performance enhancing memory interleaver for data frame processing
US5978893A (en) * 1996-06-19 1999-11-02 Apple Computer, Inc. Method and system for memory management
US5913018A (en) 1996-07-24 1999-06-15 Adobe Systems Incorporated Print band rendering system
US6269190B1 (en) 1996-09-24 2001-07-31 Electronics For Imaging, Inc. Computer system for processing images using a virtual frame buffer
US6031995A (en) 1996-11-06 2000-02-29 George; A. Chacko Object-oriented sequencing using hierarchical configuration streams
JP3156605B2 (ja) 1996-11-19 2001-04-16 セイコーエプソン株式会社 トナー転写式の印刷装置のためのパルス幅データの生成装置及び方法
US6111582A (en) 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
US6057847A (en) 1996-12-20 2000-05-02 Jenkins; Barry System and method of image generation and encoding using primitive reprojection
US6178036B1 (en) 1997-01-14 2001-01-23 California Institute Of Technology Opto-electronic devices and systems based on brillouin selective sideband amplification
US5999709A (en) 1997-04-18 1999-12-07 Adobe Systems Incorporated Printer memory boost
US6040917A (en) 1997-10-27 2000-03-21 Hewlett-Packard Company Memory partitioning for multi-resolution pauseless page printing
US6490670B1 (en) * 1998-04-24 2002-12-03 International Business Machines Corporation Method and apparatus for efficiently allocating objects in object oriented systems
US6252675B1 (en) 1998-05-08 2001-06-26 Xerox Corporation Apparatus and method for halftone hybrid screen generation
US20010015820A1 (en) 1998-07-13 2001-08-23 Hewlett-Packard Company Method and apparatus for conservation of memory in a printer through selective compression of a display list
US6366289B1 (en) 1998-07-17 2002-04-02 Microsoft Corporation Method and system for managing a display image in compressed and uncompressed blocks
US20020093669A1 (en) 1998-08-28 2002-07-18 Russell Campbell Complexity extensions for band management in a printer page pipe
US20020063894A1 (en) 1998-08-28 2002-05-30 Russell Campbell Conservation of printer memory on the composition page
JP3620310B2 (ja) 1998-10-16 2005-02-16 富士ゼロックス株式会社 パルス発生装置および画像記録装置
US6192157B1 (en) 1998-10-27 2001-02-20 Hewlett-Packard Company Modifications of postscript adaptive data compression (ADC) for 3 plane, 8 bit color images, JPEG lossy compression, and variable Q factors
JP2000141811A (ja) 1998-11-11 2000-05-23 Nec Corp プリンタシステム
US6707563B1 (en) 1999-01-11 2004-03-16 T/R Systems Multiple print engine with error handling capability
US6684304B2 (en) * 1999-01-29 2004-01-27 Micron Technology, Inc. Method to access memory based on a programmable page limit
US6701420B1 (en) 1999-02-01 2004-03-02 Hewlett-Packard Company Memory management system and method for allocating and reusing memory
US6249793B1 (en) 1999-06-10 2001-06-19 Sun Microsystems, Inc. Mostly concurrent compaction in a garbage collection system
US6778292B1 (en) 1999-08-19 2004-08-17 Seiko Epson Corporation Printer host and storage medium storing the operation program therefor
GB2354416B (en) 1999-09-17 2004-04-21 Technologies Limit Imagination Depth based blending for 3D graphics systems
JP3983449B2 (ja) 1999-10-15 2007-09-26 株式会社リコー パルス幅変調回路、光書き込み装置及び画像形成装置
US7111190B2 (en) 2001-02-23 2006-09-19 Intel Corporation Method and apparatus for reconfigurable memory
US6326993B1 (en) 2000-03-15 2001-12-04 Toshiba Tec Kabushiki Kaisha Pulse width modulation system and image forming apparatus having the pulse width modulation system
US7064859B1 (en) 2000-03-27 2006-06-20 International Business Machines Corporation Method, system, program, and data structure for producing a look-up table to enhance print quality
US6879416B2 (en) 2000-04-27 2005-04-12 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and storage medium
JP2001350439A (ja) 2000-06-06 2001-12-21 Sony Corp 変調回路およびこれを用いた画像表示装置
US20020039100A1 (en) 2000-06-08 2002-04-04 Stephen Morphet Memory management for systems for generating 3-dimensional computer images
JP3985437B2 (ja) 2000-08-03 2007-10-03 セイコーエプソン株式会社 電子写真の画像形成装置及びその画像形成プログラム製品
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US7031025B1 (en) 2000-08-23 2006-04-18 Hewlett-Packard Development Company, L.P. Combined dot density and dot size modulation
AUPQ995700A0 (en) 2000-09-07 2000-09-28 Canon Kabushiki Kaisha Method and apparatus for printing computer generated images
US20020097418A1 (en) 2001-01-19 2002-07-25 Chang William Ho Raster image processor and processing method for universal data output
JP2002267963A (ja) 2001-03-07 2002-09-18 Ricoh Co Ltd 画像形成装置
EP1241869B1 (en) 2001-03-14 2010-08-11 Ricoh Company, Ltd. Light-emission modulation having effective scheme of creating gray scale on image
US6643759B2 (en) 2001-03-30 2003-11-04 Mips Technologies, Inc. Mechanism to extend computer memory protection schemes
CN1541358A (zh) * 2001-08-15 2004-10-27 皇家飞利浦电子股份有限公司 具有移动存储块的存储池
US7113302B2 (en) 2001-10-16 2006-09-26 Texas Instruments Incorporated Printer with unified display list and banded display lists
US7038671B2 (en) 2002-02-22 2006-05-02 Intel Corporation Digitally driving pixels from pulse width modulated waveforms
US7330956B1 (en) * 2002-04-16 2008-02-12 Emc Corporation Bucket based memory allocation
US7715031B2 (en) 2002-06-14 2010-05-11 Kyocera Mita Corporation Method and apparatus for generating an image for output to a raster device
US7069396B2 (en) 2002-06-27 2006-06-27 Hewlett-Packard Development Company, L.P. Deferred memory allocation for application threads
JP2004038527A (ja) 2002-07-03 2004-02-05 Canon Inc プリンタドライバおよび印刷制御方法およびコンピュータが読み取り可能な記憶媒体およびプログラム
US6895486B2 (en) 2002-08-29 2005-05-17 Micron Technology, Inc. Linear object management for a range of flash memory
US8045215B2 (en) 2002-10-18 2011-10-25 Hewlett-Packard Development Company, L.P. Printer object list resolutions
US20040098544A1 (en) 2002-11-15 2004-05-20 Gaither Blaine D. Method and apparatus for managing a memory system
US20040120007A1 (en) 2002-12-19 2004-06-24 Jacobsen Dana A. Method and apparatus for forming a display list
US7280246B2 (en) 2003-02-12 2007-10-09 Marvell International Technology Ltd. Laser print apparatus that generates pulse width value and justification value based on pixels in a multi-bit image
JP4144395B2 (ja) 2003-03-25 2008-09-03 ブラザー工業株式会社 画像処理装置およびそれを備えた画像形成装置
JP2005065043A (ja) 2003-08-18 2005-03-10 Minolta Co Ltd データ処理装置
JP2005073004A (ja) 2003-08-26 2005-03-17 Konica Minolta Business Technologies Inc フレームバッファ管理方法及びフレームバッファ管理装置
US7583397B2 (en) 2003-09-30 2009-09-01 Canon Kabushiki Kaisha Method for generating a display list
US7284107B2 (en) 2004-04-30 2007-10-16 Microsoft Corporation Special-use heaps
JP4563737B2 (ja) 2004-07-02 2010-10-13 ルネサスエレクトロニクス株式会社 パルス幅変調回路
US7747834B2 (en) 2004-09-30 2010-06-29 Kyocera Wireless Corp. Memory manager for an embedded system
US7205729B2 (en) 2004-10-07 2007-04-17 Barco, Naamloze Vennootschap Control system and method for controlling lighting and video devices
JP4053545B2 (ja) 2005-01-11 2008-02-27 株式会社ルネサステクノロジ グラフィックスプロセッサおよび図形処理装置
JP4484770B2 (ja) 2005-06-09 2010-06-16 キヤノン株式会社 画像処理装置およびその方法
US7437529B2 (en) 2005-06-16 2008-10-14 International Business Machines Corporation Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment
JP2007034556A (ja) * 2005-07-26 2007-02-08 Fujifilm Corp 動的メモリ管理方法及び装置、並びにこれを用いた電子機器
US7782442B2 (en) 2005-12-06 2010-08-24 Nikon Corporation Exposure apparatus, exposure method, projection optical system and device producing method
JP4281738B2 (ja) 2005-12-26 2009-06-17 コニカミノルタビジネステクノロジーズ株式会社 画像形成装置、画像形成方法及びプログラム
US7447836B2 (en) 2006-02-14 2008-11-04 Software Site Applications, Limited Liability Company Disk drive storage defragmentation system
US8526049B2 (en) * 2006-03-31 2013-09-03 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for display list management
US7619644B2 (en) 2006-06-30 2009-11-17 Konica Minolta Systems Laboratory, Inc. Method and apparatus for image alignment
US7957025B2 (en) 2006-06-30 2011-06-07 Konica Minolta Systems Laboratory, Inc. Systems and methods for processing pixel data for a printer
US20080002229A1 (en) 2006-06-30 2008-01-03 Konica Minolta Systems Laboratory, Inc. Systems and method for saving memory on screen
US7907303B2 (en) 2006-06-30 2011-03-15 Konica Minolta Systems Laboratory, Inc. Systems and methods for processing pixel data for a printer
US7428075B2 (en) 2006-06-30 2008-09-23 Konica Minolta Systems Laboratory, Inc. Circuitry to support justification of PWM pixels
US7822115B2 (en) 2006-06-30 2010-10-26 Konica Minolta Systems Laboratory, Inc. Systems for generating a pulse width modulated signal
JP2008052115A (ja) * 2006-08-25 2008-03-06 Canon Inc 印刷装置及びその印刷実行方法、並びに印刷実行のプログラム
JP2008065735A (ja) * 2006-09-11 2008-03-21 Matsushita Electric Ind Co Ltd 動的メモリ管理方式
US20090086254A1 (en) 2007-09-28 2009-04-02 Mike Hy Duong Systems and Methods for Dynamic Printer Configuration
EP2075698A1 (en) * 2007-12-28 2009-07-01 Software AG Method and system for allocating memory in a broker system
US8228555B2 (en) 2008-03-31 2012-07-24 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for parallel display list rasterization
US8817032B2 (en) 2008-08-29 2014-08-26 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for framebuffer management
US8854680B2 (en) 2008-09-11 2014-10-07 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimal memory allocation units
US8861014B2 (en) 2008-09-30 2014-10-14 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimized printer throughput in a multi-core environment

Also Published As

Publication number Publication date
JP2009245437A (ja) 2009-10-22
US8782371B2 (en) 2014-07-15
US20090249017A1 (en) 2009-10-01

Similar Documents

Publication Publication Date Title
JP5475307B2 (ja) ラスタ化のためのメモリマネージメント方法、コンピュータ可読媒体及び装置
JP5437754B2 (ja) ディスプレイリストの並列生成及び並行ラスタライゼーションのための方法及びコンピュータにより読取可能な媒体
JP5663941B2 (ja) 印刷文書変換装置およびプログラム
US8526049B2 (en) Systems and methods for display list management
JP5238526B2 (ja) 印刷リソース管理のためのシステム及び方法
JP5226581B2 (ja) ディスプレイリストの並行ラスタ化のための方法、コンピュータ可読媒体及びコンピュータ可読メモリ
JP4417153B2 (ja) 並行印刷システム
JP5680841B2 (ja) 最適なメモリアロケーションユニットのシステム及び方法
JP5747489B2 (ja) 印刷文書処理システム、キャッシュ装置及びプログラム
US8705108B1 (en) Non-transitory computer readable medium storing program for executing print image processing system
JP5261250B2 (ja) ページ記述言語を処理する印刷データ処理装置、方法及びコンピュータ可読媒体
US20140104644A1 (en) Print image processing system and non-transitory computer readable medium
JP5642951B2 (ja) ピクスマップの管理方法、プログラム及びプログラムを記録した記録媒体
US7911639B2 (en) Image forming device
JP5832556B2 (ja) 画像処理装置および画像形成装置
JP2011257972A (ja) 画像処理装置、プログラム及び画像処理方法
JP6539022B2 (ja) 印刷装置、処理方法及びプログラム
JP2004102945A (ja) プリントジョブスケジュール方法及び該方法を実行するためのプログラムを格納したコンピュータ読み取り可能な記憶媒体
JP2016155280A (ja) 制御装置、制御方法およびプログラム
JP6078954B2 (ja) 画像処理装置
JP2008139968A (ja) 画像処理装置及びプログラム
KR20050072224A (ko) 화상형성장치 및 그의 메모리 관리방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110920

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110920

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130520

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130611

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130626

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140206

R150 Certificate of patent or registration of utility model

Ref document number: 5475307

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees