(57)【要約】      （修正有）【課題】印刷装置において、ピクスマップのメモリ割当要求に応じてフレームバッファメモリ及びディスプレイリストメモリを含むメモリプールから割り当てられるメモリアロケーションユニットの最適なサイズを決定する方法を提供する。【解決手段】ピクスマップのメモリ割当要求に応じてフレームバッファメモリ及びディスプレイリストメモリを含むメモリプールから割り当てられるメモリアロケーションユニットの最適なサイズを決定する方法は、基準メモリアロケーションユニットのサイズの整数倍であるメモリアロケーションユニットサイズを複数用いてピクスマップが格納されるときの未使用メモリの容量を決定するステップと、未使用メモリの容量に基づいて複数のメモリアロケーションユニットサイズからメモリアロケーションユニットサイズを選択するステップと、を含む。【選択図】なし【特許請求の範囲】
【請求項１】
ピクスマップのメモリ割当要求に応じてフレームバッファメモリ及びディスプレイリストメモリを含むメモリプールから割り当てられるメモリアロケーションユニットの最適なサイズを決定する方法であって、
基準メモリアロケーションユニットのサイズの整数倍であるメモリアロケーションユニットサイズを複数用いてピクスマップが格納されるときの未使用メモリの容量を決定するステップと、
前記未使用メモリの容量に基づいて前記複数のメモリアロケーションユニットサイズからメモリアロケーションユニットサイズを選択するステップと、
を含む方法。
【請求項２】
前記選択されたメモリアロケーションユニットサイズは前記ピクスマップのサイズを超える前記基準アロケーションユニットサイズの最小の整数倍である請求項１に記載の方法。
【請求項３】
前記選択されたメモリアロケーションユニットサイズは前記基準メモリアロケーションユニットの整数倍に対する上限によって制限される請求項１に記載の方法。
【請求項４】
前記選択されたメモリアロケーションユニットサイズは前記ピクスマップが格納されるときに未使用メモリの総容量を最小限にするサイズである請求項３に記載の方法。
【請求項５】
前記選択されたメモリアロケーションユニットサイズは、結果的に前記未使用メモリが指定の未使用メモリ閾値以下となるサイズである請求項３に記載の方法。
【請求項６】
前記未使用メモリ閾値はユーザ選択可能な発見的方法を用いて指定される請求項５に記載の方法。
【請求項７】
前記複数のメモリアロケーションユニットサイズは、前記基準メモリ割当サイズ及び前記基準アロケーションユニットサイズの一定の整数倍によって構成される請求項１に記載の方法。
【請求項８】
全ての割り当てられたメモリアロケーションユニットは等しいサイズである請求項１に記載の方法。
【請求項９】
各個別のメモリアロケーションユニットはメモリの連続する部分によって構成される請求項１に記載の方法。
【請求項１０】
前記方法はプリンタにおいて実行される請求項１に記載の方法。
【請求項１１】
前記単独のメモリプールは印刷装置に存在する請求項１に記載の方法。
【請求項１２】
ピクスマップのメモリ割当要求に応じてフレームバッファメモリ及びディスプレイリストメモリを含むメモリプールから割り当てられるメモリアロケーションユニットの最適なサイズを決定する方法のステップを実行するプロセッサを制御する命令を含むコンピュータ読取可能な媒体であって、前記方法は、
基準メモリアロケーションユニットのサイズの整数倍であるメモリアロケーションユニットサイズを複数用いてピクスマップが格納されるときの未使用メモリの容量を決定するステップと、
前記未使用メモリの容量に基づいて前記複数のメモリアロケーションユニットサイズからメモリアロケーションユニットサイズを選択するステップと、
を含む。
【請求項１３】
前記選択されたメモリアロケーションユニットサイズは前記ピクスマップのサイズを超える前記基準アロケーションユニットサイズの最小の整数倍である請求項１２に記載のコンピュータ読取可能な媒体。
【請求項１４】
前記選択されたメモリアロケーションユニットサイズは前記基準メモリアロケーションユニットの整数倍に対する上限によって制限される請求項１２に記載のコンピュータ読取可能な媒体。
【請求項１５】
前記選択されたメモリアロケーションユニットサイズは前記ピクスマップが格納されるときに未使用メモリの総容量を最小限にするサイズである請求項１４に記載のコンピュータ読取可能な媒体。
【請求項１６】
前記選択されたメモリアロケーションユニットサイズは、結果的に前記未使用メモリが指定の未使用メモリ閾値以下となるサイズである請求項１４に記載のコンピュータ読取可能な媒体。
【請求項１７】
前記未使用メモリ閾値はユーザ選択可能な発見的方法を用いて指定される請求項１６に記載のコンピュータ読取可能な媒体。
【請求項１８】
前記複数のメモリアロケーションユニットサイズは、前記基準メモリ割当サイズ及び前記基準アロケーションユニットサイズの一定の整数倍によって構成される請求項１２に記載のコンピュータ読取可能な媒体。
【請求項１９】
全ての割り当てられたメモリアロケーションユニットは等しいサイズである請求項１２に記載のコンピュータ読取可能な媒体。
【請求項２０】
ピクスマップのメモリ割当要求に応じてフレームバッファメモリ及びディスプレイリストメモリを含むメモリプールから割り当てられるメモリアロケーションユニットの最適なサイズを決定する方法のステップを実行するプロセッサを制御する命令を含むコンピュータ読取可能なメモリであって、前記方法は、
基準メモリアロケーションユニットのサイズの整数倍であるメモリアロケーションユニットサイズを複数用いてピクスマップが格納されるときの未使用メモリの容量を決定するステップと、
前記未使用メモリの容量に基づいて前記複数のメモリアロケーションユニットサイズからメモリアロケーションユニットサイズを選択するステップと、
を含む。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は印刷の分野に関し、特に、最適なメモリアロケーションユニットを決定してフレームバッファメモリのメモリ管理を容易にするシステム及び方法に関する。
【背景技術】
【０００２】
文書処理ソフトウェアによってユーザは便利に文書を閲覧、編集、処理、保存、及び印刷することができる。しかし、文書が印刷可能になる前に、文書のページは多くの場合ページ記述言語（「ＰＤＬ」）によって記述される。この文書でも用いられているが、ＰＤＬにはＰｏｓｔＳｃｒｉｐｔ、ＡｄｏｂｅＰＤＦ、ＨＰＰＣＬ、ＭｉｃｒｏｓｏｆｔＸＰＳ及びこれらの変形例等の、文書のページを記述するのに用いられる言語が含まれる。ＰＤＬ記述により文書の各ページの高水準の記述が提供され、多くの場合文書が印刷される際に一連のより低水準のプリンタ特有のコマンドに翻訳される。この処理はラスタライゼーションと称される。ラスタライゼーション処理は複雑でそのプリンタがもつ特徴や性能に依存しうるが、柔軟で移植可能な汎用ラスタライゼーションスキームによってメモリの空き容量、所望の印刷スピード、コスト及びその他の条件に基づいたプリンタ性能の最適化を実現しうる。
【０００３】
従来、印刷システムのメモリは、ディスプレイリストメモリとフレームバッファメモリとからなる二つの別個のプールによって構成されてきた。ディスプレイリストメモリは通常ラスタライゼーション用のディスプレイリストブジェクトを保持し、フレームバッファメモリは通常印刷されたページに示されるマークを示す画像データを保持する。ビットマップはデジタル画像の格納に用いられるメモリ構成の一種で、各ピクセルには一ビットが割り当てられる（つまりピクセルは「オン」か「オフ」かのいずれかである）。ピクスマップ（又はピクセルマップ）という用語はいくつかのビット深度で存在しうるラスタ画像を指して用いる。二つのプールの異なる性質により、ディスプレイリストメモリは通常フレームバッファを目的として用いることができず、逆もまた同様である。よって、印刷の失敗は一方のプールに十分空きメモリがあったとしても他方のプールに十分なメモリがないことによって起こりうる。また、異なるルーチンを用いて二つの別個のプールを管理すると個々の製品において異なる方法や最適化が用いられうるので、ある製品群にわたってメモリを管理するのに用いられるコードの修正及び管理が難しくなりうる。
【０００４】
メモリ資源の最適化はメモリ全体が一つのプールとして扱われているような状況においても重要となりうる。例えば、フレームバッファのピクスマップは従来可変サイズの連続したメモリの塊を用いており、これによりメモリのフラグメンテーションが起こる。フラグメンテーションにより空きメモリが小さな使用不可能なブロックとして点在するので、小さなブロックの空きメモリを合計すると、小さなブロックが連続していればメモリ割当要求をみたすことができたにも関わらず、フラグメンテーションによっていくつかのメモリ割当要求をみたすことができなくなる。
【０００５】
ディスプレイリストとフレームバッファの間でメモリが共用されている場合、プリンタ動作の間、各プールが十分な空きメモリを有し、非効率的な割当により潜在的に空きメモリが失われていないことを確実にするには、メモリの最適化が重要となる。グローバルレベルでは、コスト及び／又は印刷スピード等のプリンタ設計目標が達成されるように、最適化方法によってメモリをディスプレイリストとフレームバッファメモリとの間で割り当てることを確実にしうる。加えて、ローカライズされたディスプレイリスト及びフレームバッファ特有の最適化によってより低レベルで実現可能な最適化が利用されることを確実にする。高価ではないプリンタにおいては、比較的少ないメモリを用いて、効率的なメモリ資源により設計上の機能性が達成されうる。高性能プリンタにおいては、メモリの有効利用によって、印刷アプリケーションに用いるためのより多くのリアルタイムなメモリの空き容量が確保され、性能の向上につながりうる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
よって、シームレスなアップグレードパスを提供しながら、メモリ資源の最適な利用が可能となるフレームバッファメモリを含むラスタライゼーションを行うプリンタ上のメモリを管理するシステム及び方法が必要である。
【課題を解決するための手段】
【０００７】
本発明による実施例には、最適なメモリアロケーションユニットサイズを選択してフレームバッファメモリの管理を容易にするシステム及び方法が提供される。いくつかの実施例においては、ピクスマップのメモリ割当要求に応じてフレームバッファメモリ及びディスプレイリストメモリを含むメモリプールから割り当てられるメモリアロケーションユニットの最適なサイズを決定する方法は、基準メモリアロケーションユニットのサイズの整数倍であるメモリアロケーションユニットサイズを複数用いてピクスマップが格納されるときの未使用メモリの容量を決定するステップと、未使用メモリの容量に基づいて複数のメモリアロケーションユニットサイズからメモリアロケーションユニットサイズを選択するステップと、を含む。
【０００８】
また、開示されている本発明の実施例は、コンピュータ読取可能なメディア又はコンピュータ読取可能なメモリを用いるプロセッサによって作成、格納、アクセス、又は修正される方法に関する。
【０００９】
これら及びその他の実施例について添付の図面を参照しながら詳細に説明する。
【図面の簡単な説明】
【００１０】
【図１】図１は、文書を印刷するシステムの構成要素を示すブロック図を図示している。
【図２】図２は、例示的なプリンタの上位ブロック図を図示している。
【図３】図３は、フレームバッファ管理のシステムの例示的な上位アーキテクチャを図示示している。
【図４】図４は、ラスタライゼーションの間のメモリプール３１０の一部の例示的な割り当てを示すスナップショット４００を図示している。
【図５】図５は、ピクスマップオブジェクト５１０の例示的なデータ構造を示すブロック図５００を図示している。
【図６】図６は、Ｚ個のスーパーブロック４２０−１〜４２０−Ｚにわたって分布されるスキャンライン６１０を含むピクスマップＰの例示的なメモリ構成６００を図示している。
【図７】図７は、スーパーブロック４２０の最適なサイズを選択してピクスマップのメモリ利用を最適化する例示的な方法を示すフローチャート７００を図示している。
【図８】図８は、特定のスーパーブロックサイズの利用されていない空間を算出する例示的ルーチン７４０を示すフローチャートを図示している。
【発明を実施するための形態】
【００１１】
本発明の様々な特徴を示す実施例に基づいて、第一印刷可能データから生成された第二又は中間形式の印刷可能データを自動的に格納、操作、及び処理するシステム及び方法が提示される。いくつかの実施例においては、第一印刷可能データは文書のＰＤＬ記述の形式を取り、中間印刷可能データはＰＤＬ記述から生成されたオブジェクトのディスプレイリストの形式を取りうる。
【００１２】
図１は文書を印刷するシステムの構成要素を示すブロック図を図示している。開示された実施例に基づくコンピュータソフトウェアアプリケーションは、図１に示すように、従来の通信プロトコル及び／又はデータポートインターフェースを用いた情報交換を実現する通信リンクを通じて接続されたコンピュータネットワークにおいて配備されうる。
【００１３】
図１に示すように、例示的システム１００はコンピューティングデバイス１１０及びサーバ１３０を有するコンピュータを含む。また、コンピューティングデバイス１１０とサーバ１３０は、ある実施例においてはインターネットでありうるネットワーク１４０を経由して接続部１２０を通じて通信しうる。コンピューティングデバイス１１０はコンピュータワークステーション、デスクトップパソコン、ノートパソコン、又はその他のネットワーク化された環境で用いることができるあらゆるコンピューティングデバイスでありうる。サーバ１３０はコンピューティングデバイス１１０及びその他の装置（図示せず）に接続することができるプラットフォームであることができる。コンピューティングデバイス１１０及びサーバ１３０はプリンタ１７０を用いて文書の印刷を実現するソフトウェア（図示せず）を実行することができる。
【００１４】
例示的プリンタ１７０は電子データから物理的な文書を作成する装置を含み、レーザプリンタ、インクジェットプリンタ、ＬＥＤプリンタ、プロッタ、ファクシミリ機、及びデジタルコピー機を含むが、これらに限定されない。いくつかの実施例においては、プリンタ１７０は接続部１２０を介してコンピューティング装置１１０又はサーバ１３０から受信した文書を直接印刷することができる。いくつかの実施例においては、このような構成によってコンピューティングデバイス１１０又はサーバ１３０による処理を加えた上で（又は加えずに）直接文書を印刷しうる。いくつかの実施例においては、文書はテキスト、グラフィックス、及び画像のうちの一以上を含みうる。いくつかの実施例においては、プリンタ１７０は印刷される文書のＰＤＬ記述を受信しうる。また、文書印刷処理もまた割り当てることができる。よって、コンピューティングデバイス１１０、サーバ１３０、及び／又はプリンタは、文書がプリンタ１７０によって物理的に印刷される前に、網掛け、色合わせ及び／又はその他の操作処理等の文書印刷処理を部分的に実行しうる。
【００１５】
コンピューティングデバイス１１０は、また、リムーバブルメディアドライブ１５０を含む。リムーバブルメディアドライブ１５０は例えば、３．５インチフロッピードライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤＲＯＭドライブ、ＣＤ±ＲＷもしくはＤＶＤ±ＲＷドライブ、ＵＳＢフラッシュドライブ及び／又は開示される実施例に適合するその他のあらゆるリムーバブルメディアドライブを含みうる。いくつかの実施例においては、ソフトウェアアプリケーションの各部分がリムーバブルメディアに搭載され、リムーバブルメディアドライブ１５０を用いてコンピューティングデバイス１１０によって読み出されて実行される。
【００１６】
接続部１２０はコンピューティングデバイス１１０、サーバ１３０及びプリンタ１７０を接続し、従来の通信プロトコル及び／又はデータポートインターフェースを用いて有線又は無線接続として構築しうる。一般に、接続部１２０は装置間のデータの送受信を実現するあらゆる通信チャンネルであることができる。ある実施例においては、適切な接続を通じたデータの送受信のために、装置に例えば、パラレルポート、シリアルポート、Ｅｔｈｅｒｎｅｔ、ＵＳＢ、ＳＣＳＩ、ＦＩＲＥＷＩＲＥ、及び／又は同軸ケーブルポート等の従来のデータポートを設けることができる。いくつかの実施例においては、接続部１２０はデジタル加入者回線（ＤＳＬ）、非対称型デジタル加入者回線（ＡＤＳＬ）、又はケーブル回線であることができる。接続リンクは無線リンク、有線リンク又は様々な装置間の通信を可能にする、開示される実施例に適合するあらゆる組合せであることができる。
【００１７】
ネットワーク１４０はＬｏｃａｌ Ａｒｅａ Ｎｅｔｗｏｒｋ（ＬＡＮ）、Ｗｉｄｅ Ａｒｅａ Ｎｅｔｗｏｒｋ（ＷＡＮ）、又はインターネットを含みうる。いくつかの実施例においては、ネットワーク１４０上で送信された情報は暗号化することによって、送信されるデータのセキュリティを確保しうる。プリンタ１７０は接続部１２０を通じてネットワーク１４０に接続されうる。いくつかの実施例においては、プリンタ１７０はまた直接コンピューティングデバイス１１０及び／又はサーバ１３０に接続されうる。いくつかの実施例においては、システム１００はまた、その他の周辺機器（図示せず）を含みうる。開示される実施例に適合するコンピュータソフトウェアアプリケーションは図１に示すように、あらゆる典型的なコンピュータに搭載しうる。例えば、コンピューティングデバイス１１０はサーバ１３０から直接ダウンロードしうるソフトウェアを実行することができる。開示される実施例に基づいて、アプリケーションの各部分はプリンタ１７０によっても実行しうる。
【００１８】
図２は例示的なプリンタ１７０の上位ブロック図を示す。いくつかの実施例においては、プリンタ１７０はＣＰＵ１７６、ファームウェア１７１、メモリ１７２、入出力ポート１７５、プリントエンジン１７７及び二次記憶装置１７３を接続するバス１７４を含みうる。また、プリンタ１７０は開示される実施例に基づく文書印刷のためのアプリケーションの各部分を実行することができるその他のＡｐｐｌｉｃａｔｉｏｎ Ｓｐｅｃｉｆｉｃ Ｉｎｔｅｇｒａｔｅｄ Ｃｉｒｃｕｉｔｓ（ＡＳＩＣ）、及び／又はＦｉｅｌｄ Ｐｒｏｇｒａｍｍａｂｌｅ Ｇａｔｅ Ａｒｒａｙｓ（ＦＰＧＡ）１７８を有しうる。いくつかの実施例においては、プリンタ１７０はまたＩ／Ｏポート１７５及び接続部１２０を用いて二次記憶装置又はコンピューティングデバイス１１０のその他のメモリにアクセスすることができる。また、いくつかの実施例においては、プリンタ１７０はプリンタオペレーティングシステム及びその他の適切なアプリケーションソフトウェアを含むソフトウェアを実行することができる。いくつかの実施例においては、プリンタ１７０においてその他のオプション中、用紙サイズ、排紙トレイ、色選択及び印刷解像度はユーザが設定することができる。
【００１９】
いくつかの実施例においては、ＣＰＵ１７６は汎用プロセッサ、専用プロセッサ又は組み込みプロセッサでありうる。ＣＰＵ１７６は制御情報及び命令を含むデータをメモリ１７２及び／又はファームウェア１７１と交換することができる。メモリ１７２はあらゆる種類のＤｙｎａｍｉｃ Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ（「ＤＲＡＭ」）であることができ、例えばＳＤＲＡＭ又はＲＤＲＡＭが含まれるがこれらに限定されない。ファームウェア１７１は命令及びデータを保持することができ、起動シーケンス、予め定義されたルーチン、メモリ管理ルーチン及びその他のコードを含むがこれらに限定されない。いくつかの実施例においては、ファームウェア１７１のコード及びデータはＣＰＵ１７６によって実行される前に、メモリ１７２にコピーしうる。ファームウェア１７１に含まれるルーチンはコンピューティングデバイス１１０から受信されたページ記述をディスプレイリスト及び画像バンドに翻訳するコードを含みうる。いくつかの実施例においては、ファームウェア１７１は、ディスプレイリストを適切なピクスマップにラスタライズし、メモリ１７２にピクスマップを格納するルーチンを含みうる。ファームウェア１７１はまた圧縮ルーチンやメモリ管理ルーチンを含みうる。いくつかの実施例においては、ファームウェア１７１に含まれるデータ及び命令はアップグレードしうる。
【００２０】
いくつかの実施例においては、ＣＰＵ１７６は命令及びデータに従って各ＡＳＩＣ／ＦＰＧＡ１７８及びプリントエンジン１７７を制御し及びデータを提供して印刷文書を生成しうる。また、いくつかの実施例においては、各ＡＳＩＣ／ＦＰＧＡ１７８はプリントエンジン１７７を制御し及びデータを提供しうる。また、各ＦＰＧＡ／ＡＳＩＣ１７８は翻訳、圧縮及びラスタライゼーションアルゴリズムのうちの一以上を実行しうる。いくつかの実施例においては、コンピューティングデバイス１１０は文書データを第一印刷可能データに変換しうる。そして、第一印刷可能データはプリンタ１７０へ送信されて、中間印刷可能データに変換されうる。プリンタ１７０は中間印刷可能データを最終的な形式の印刷可能データに変換して、ピクスマップ形式を取りうるこのような最終的な形式に基づいて印刷しうる。いくつかの実施例においては、第一印刷可能データは文書のＰＤＬ記述に対応しうる。いくつかの実施例においては、文書のＰＤＬ記述から一連のより低水準のプリンタ固有のコマンドを含む最終的な印刷可能データへの翻訳処理には、オブジェクトのディスプレイリストを含む中間印刷可能データの生成を含みうる。
【００２１】
いくつかの実施例においては、ディスプレイリストは、テキスト、グラフィックス、及び画像データオブジェクトのうちの一以上を保持しうる。いくつかの実施例においては、ディスプレイリスト内のオブジェクトはユーザ文書内の類似するオブジェクトに対応しうる。いくつかの実施例においては、ディスプレイリストは中間又は最終印刷可能データの生成を支援しうる。いくつかの実施例においては、ディスプレイリスト及び／又はピクスマップは、メモリ１７２又は二次記憶装置１７３に格納されうる。二次記憶装置１７３の一例としては、内蔵もしくは外付けハードディスク、メモリスティック又はプリンタ１７０で用いることができるその他のあらゆるメモリ記憶装置でありうる。いくつかの実施例においては、ディスプレイリストはプリンタ１７０、コンピューティングデバイス１１０、及びサーバ１３０のうちの一以上の装置に搭載されうる。ディスプレイリスト及び／又はピクスマップを格納するメモリは、専用メモリでありもしくは汎用メモリの一部を形成し、又はいくつかの実施例においてはこれらの何らかの組合せを含みうる。いくつかの実施例においては、メモリは動的に割り当てられ、必要に応じてディスプレイリスト及び／又はピクスマップを保持しうる。いくつかの実施例においては、ディスプレイリスト及び／又はピクスマップを格納するのに割り当てられたメモリは処理後に動的に解放されうる。
【００２２】
図３はフレームバッファ管理のシステムの上位アーキテクチャ３００の一例を図示する。開示される実施例によれば、アーキテクチャ３００によってメモリプール３１０はフレームバッファ３５０及びフレームバッファではないブロックの両方に対応するブロックを含む単独のメモリプールとして管理される。通常、ブロックはメモリ管理部３７５の基準メモリアロケーションユニットとみなすことができる。いくつかの実施例においては、メモリは、基準メモリアロケーションユニットつまり一個のブロック又は基準メモリアロケーションユニットの或る（非ゼロ、正）整数倍でスーパーブロックと称されるものを用いて割り当てうる。
【００２３】
一方、メモリ管理部３７５は、ブロック単位のメモリ割当によってフラグメンテーションが起こることを防止し、メモリ管理に関する実施詳細を捨象し、メモリ管理アプリケーションプログラミングインターフェース（ＡＰＩ）３７０を通じた標準インターフェースを提供し、そのルーチンにアクセスする。他方、ピクスマップコード３４５によって、ピクスマップは一体型のユニットとして論理的にみなされるとともに、メモリ管理ＡＰＩ３７０及びフレームバッファ管理ライブラリ３３５を通じてメモリ管理部３７５が提供する機能を利用することにより、ピクスマップはメモリプール３１０の連続しないメモリブロックを占有することができる。
【００２４】
図３に示されるように、言語サーバ３４０、エンジンサーバ３６０、及びラスタサーバ３２０は相互に通信しうる。また、言語サーバ３４０、エンジンサーバ３６０、及びラスタサーバ３２０はルーチンを実行してＲＤＬライブラリ３３０と通信しうる。また、システムはフレームバッファ管理ライブラリ３３５を含み、フレームバッファ管理ライブラリ３３５は、ピクスマップコード３４５と通信し、並びにメモリ管理ＡＰＩ３７０を通じてラスタサーバ３２０及びエンジンサーバ３６０と通信する。
【００２５】
メモリ管理部３７５はメモリを割り当て、管理する。メモリ管理部３７５のルーチンはメモリ管理ＡＰＩ３７０を用いてアクセスしうる。よって、メモリ管理コードの詳細はディスプレイリスト又はフレームバッファを管理及び／又は操作するのに用いられるプログラムコードから捨象することができる。同様に、いくつかの実施例においては、ピクスマップコード３４５によってピクスマップを単独の論理的構成要素として利用及び操作するとともに、ピクスマップは一以上の連続しないメモリブロックに広がりうる。この抽象化はフレームバッファ管理ライブラリ３３５を用いてピクスマップのブロック及びポインタの割当及び割当解除、ピクスマップに関する状態情報並びにピクスマップを用いる処理の追跡を管理することによって達成することができる。いくつかの実施例においては、ピクスマップコード３４５によってピクスマップのメモリブロックにアクセスしうる。各メモリブロック又はメモリアロケーションユニットは一まとまりの連続するメモリである。メモリブロックは一以上のスキャンラインを有しうる。画像内のピクセルの一列をスキャンラインという。
【００２６】
いくつかの実施例においては、フレームバッファ管理ライブラリ３３５はブロック単位でメモリを割り当てうる。ある実施例においては、ブロックは同じ大きさでありうる。他の実施例においては、メモリは一ブロック単位又はスーパーブロックと称される一以上のブロックの整数倍の単位で割り当てうる。スーパーブロックとは連続するブロックの一セットである。例えば、フレームバッファ管理ライブラリ３３５はメモリをブロック単位及びスーパーブロック単位で割り当て、スーパーブロックは四つのブロックから構成されうる。スーパーブロックはより大きなピクスマップを保持するのに有用であり、異なる紙サイズ、解像度、及び構成のサポートを容易にする。紙サイズ及びその他のパラメータが分かる特定の製品については、ブロックサイズは無駄なメモリを減らすような最適な数字に変更することができる。
【００２７】
いくつかの実施例においては、メモリ管理部３７５によって提供される機能はメモリ管理アプリケーションＡＰＩ３７０を通じて用いられうる。例えば、フレームバッファ管理ライブラリ３３５は、メモリ管理ＡＰＩ３７０に指定されたインターフェースを用いて、メモリ管理部３７５によってブロック及びポインタを取得しうる。メモリ管理部３７５はメモリ管理ＡＰＩ３７０の機能を定義する。いくつかの実施例においては、フレームバッファ管理ライブラリ３３５のコード等、ディスプレイリスト及びフレームバッファ３５０に関するコードはメモリ管理ＡＰＩ３７０を通じてメモリ管理部３７５とインターフェースで接続されうる。よって、これらの実施例においては、メモリ管理部はディスプレイリスト又はフレームバッファを管理及び／又は操作するのに用いられるプログラムコードを変更せずに製品固有のメモリ管理部と交換又は容易に修正することができる。
【００２８】
いくつかの実施例においては、ディスプレイリストは、文書又は印刷される文書内のページのデータオブジェクトとそれらのコンテクストを定義するコマンドを含みうる。これらの表示コマンドは文字又はテキスト、線画又は配列、及び画像又はラスタデータによって構成されるデータを含みうる。
【００２９】
いくつかの実施例においては、ディスプレイリストは動的に再構成可能であり、再構成可能なディスプレイリストと称される（「ＲＤＬ」）。ある実施例においては、ＲＤＬは動的に操作される状態で特定のディスプレイリストオブジェクトが格納されるデータ構造を用いて実装されうる。例えば、画像オブジェクトは所定の位置に圧縮されてメモリの空き容量が増加し、参照及び／又は使用される際には解凍しうる。いくつかの実施例においては、ＲＤＬによればＲＤＬオブジェクトの実際の位置にポインタ、オフセット又はアドレスを保持してＲＤＬオブジェクトがメモリ及び／又は二次記憶装置に格納され、その後参照及び／又は使用される際に読み出されうる。一般に、ＲＤＬによってディスプレイリストオブジェクトはシステム上の制約及びパラメータに基づいて、柔軟に格納及び操作しうる。
【００３０】
ある実施例においては、文書のＰＤＬ記述からディスプレイリスト及び／又はＲＤＬ表現への翻訳はＲＤＬライブラリ３３０及びメモリ管理部３７５のルーチンを用いて言語サーバ３４０によって実行しうる。例えば、言語サーバ３４０はＰＤＬ言語プリミティブを用いてこれらをデータ及びグラフィカルオブジェクトに変換して、これらをＲＤＬライブラリ３３０及びメモリ管理部３７５の作用によって提供される機能を用いて再構成可能なディスプレイリストに加えうる。ある実施例においては、ディスプレイリストはメモリ１７２の一部を構成しうる例示的なメモリプール３１０等の動的に割り当てられたメモリプールに格納し及び操作しうる。
【００３１】
いくつかの実施例においては、ＲＤＬは実際の印刷の前に行われるデータ処理の中間過程において生成されうる。ＲＤＬは次の形式に変換される前に解析されうる。いくつかの実施例においては、次の形式は最終的な表現となることがあり、変換処理はデータのラスタライズと称されうる。例えば、ラスタライゼーションは、フレームバッファ管理ライブラリ３３５及びピクスマップコード３４５のルーチンを用いて、ラスタサーバ３２０により実行しうる。ラスタライゼーションの際にラスタライズされたデータは、メモリ管理ＡＰＩ３７０を通じてアクセスしうるメモリ管理部３７５のルーチンを用いて、メモリプール３１０の一部でありうるフレームバッファ３５０に格納しうる。ある実施例においては、ラスタライズされたデータは印刷されたページ上に生成されるマークを示すビットマップ又はピクスマップの形式を取りうる。
【００３２】
ある実施例においては、メモリ管理部３７５のルーチンはメモリ１７２の空きメモリのいくつかのサブセットをメモリプール３１０として管理し、メモリプール３１０からのメモリを、メモリ管理ＡＰＩ３７０を通じて要求処理に割り当てうる。メモリが要求処理で必要とされなくなると、メモリは割当解除され、メモリプール３１０に戻され、他の処理に利用することができる。よって、例示的なメモリ管理部３７５はメモリ解放のルーチン、メモリ回復のルーチン、及び二次記憶装置１７３とメモリを交換することができる交換ルーチンを含むその他の各種メモリ管理機能を提供することができる。
【００３３】
いくつかの実施例においては、フレームバッファ３５０はメモリプール３１０の一部を構成し、メモリ管理部３７５によって管理されうる。例えば、フレームバッファ管理ライブラリ３３５の機能を呼び出す結果、メモリ管理ＡＰＩ３７０の機能を呼び出しうる。次に、メモリ管理ＡＰＩはメモリ管理部３７５の機能のうち一以上の機能を実行しうる。メモリ管理部３７５によって実行される動作の結果は呼び出し処理に戻されうる。ある実施例において、フレームバッファ３５０は最初の連続するブロックのメモリが割り当てられ、続くメモリブロックは要求されればフレームバッファ３５０に割り当てられうる。メモリブロックはその他のフレームバッファ以外の目的でメモリプール３１０から割り当てうる。いくつかの実施例においては、フレームバッファ３５０又はその他の処理に割り当てられた個々のメモリブロックはメモリ１７２の連続しないメモリ領域を占有しうる。
【００３４】
プリントエンジン１７７はフレームバッファ３５０でラスタライズされたデータを処理し、フレームバッファライブラリ３３５のルーチンを用いる紙等の印刷媒体にページの印刷可能な画像を形成しうる。いくつかの実施例においては、ラスタサーバ３２０及びエンジンサーバ３６０はＲＤＬライブラリ３３０及びピクスマップコード３４５のルーチンを用いてその機能を実行しうる。例えば、ピクスマップコード３４５のルーチンによってラスタサーバ３２０はラスタライゼーションを支援するピクスマップルーチンにアクセスしうる。ある実施例においては、ピクスマップコード３４５のルーチンによって、エンジンサーバ３６０を通じてプリントエンジン１７７は一以上の色平面要素を含む最終的なピクスマップ及びアルファ平面要素を利用しうる。
【００３５】
いくつかの実施例において、エンジンサーバ３６０は制御情報、命令及びデータをプリントエンジン１７７に提供しうる。いくつかの実施例においては、エンジンサーバ３６０は、ピクスマップコード３４５、フレームバッファライブラリ３３５、メモリ管理ＡＰＩ３７０を通じてメモリ管理部３７５により提供される機能を用いて、フレームバッファオブジェクトによって利用されたメモリを処理終了後に解放してメモリプール３１０へ戻すルーチンを実行しうる。ピクスマップコード３４５のルーチンによってエンジンサーバ３６０はピクスマップのスキャンラインにアクセスしうる。いくつかの実施例においては、メモリプール３１０及び／又はフレームバッファ３５０の各部分はメモリ１７２又は二次記憶装置１７３に存在しうる。
【００３６】
いくつかの実施例においては言語サーバ３４０、ラスタサーバ３２０、及びエンジンサーバ３６０のルーチンはファームウェア１７１によって提供され、又はＡＳＩＣ／ＦＰＧＡ１７８を用いて実装されうる。
【００３７】
図４は、ラスタライゼーションの間のメモリプール３１０の一部分の例示的な割当を図示するスナップショット４００を示す。ラスタライゼーションの様々な時点において、メモリプール３１０はブロック４１０、スーパーブロック４２０及び割り当てられていないメモリ４４０の何らかの組合せによって構成されうる。論理的な視点からは、メモリプール３１０は割り当てられていないメモリ４４０又はフリーブロック４１０の集まりとして当初見られうる。図４に示すように、メモリはブロック４１０−１、４１０−２、４１０−３、並びにスーパーブロック４２０−１及び４２０−２によって構成されており、これらは異なるパターンによって示される、五つの別個のピクスマップＡ、Ｂ、Ｃ、Ｄ、及びＥにそれぞれ対応しうる。
【００３８】
例えばピクスマップを格納するため、フレームバッファ３５０によるメモリ使用の要求がされると、ブロック４１０又はスーパーブロック４２０が割り当てられうる。スーパーブロック４２０は一以上のブロック４１０の整数倍を含む連続するメモリの塊である。ＲＤＬのメモリが要求される場合、又は一時的格納及び処理を目的とする場合はブロック４１０が割り当てられうる。図４に示すように、ピクスマップＡ、Ｂ、及びＣは、メモリ１７２にわたって点在する連続しないメモリブロック４１０にわたって分散される。いくつかの実施例においては、メモリデフラグルーチンは一定の間隔でもしくはメモリの空き容量が一定の閾値を下回る場合、又はメモリを解放する方法として実行され、メモリプール３１０内でばらばらに分散したブロック４１０から新しいスーパーブロック４２０が生成される。例えば、メモリ内のオブジェクトは再配置されて、ばらばらに分散したブロックは組み合わされてより大きな連続するメモリ領域が生成される。
【００３９】
いくつかの実施例においては、デフラグはスーパーブロック４２０の利用によって減らしうる。いくつかの実施例においては、スーパーブロックアロケーションユニットのサイズはメモリ利用を最適化するために幅広い範囲にわたる。例えば、図４に示すように、ピクスマップＤはスーパーブロック４２０−１を含むアロケーションユニットを用いており、各スーパーブロック４２０−１のサイズは二個のブロック分である。同様に、ピクスマップＥはスーパーブロック４２０−２を含むアロケーションユニットを用いており、各スーパーブロック４２０−２のサイズは六個のブロック分である。
【００４０】
いくつかの実施例においては、メモリが要求された場合にスーパーブロック４２０を割り当てることができ、単独のブロック４１０が要求された場合に代わりにスーパーブロック４２０を割り当てうる。この場合、割り当てられたスーパーブロック４２０を構成するブロックのうちの一以上のブロックは当初未使用でありうる。さらに単独のブロック４１０が要求されると、前に割り当てられたスーパーブロックからいずれかの未使用のブロックが要求元に提供され、これが未使用のブロックがなくなるまで続き、未使用のブロックがなくなると、別のスーパーブロックが割り当てられうる。いくつかの実施例においては、フレームバッファ３５０を連続しないアロケーションユニットに分割することによって、メモリを効率的に利用しうる。例えば、一つのスキャンラインにアクセスすると、対象のスキャンラインを含まないピクスマップのアロケーションユニットにはメモリ管理又は回復スキームが実行されてメモリの空き容量が増加されうる。例えば、アロケーションユニットはディスクへ交換され又は圧縮されてメモリの空き容量が増加されうる。
【００４１】
図５はピクスマップオブジェクト５１０の例示的なデータ構造のいくつかの部分を図示しているブロック図５００を示す。ピクスマップオブジェクト５１０はピクスマップコード３４５のルーチンによって利用及び処理されうる。いくつかの実施例においては、ピクスマップオブジェクト５１０は例えばピクセルにわたる画像の縦及び横の長さ並びに各ピクセルについてのビット数又は色深度等のピクスマップオブジェクト５１０に関する内部情報５２０によって特徴付けられうる。色深度は各ピクセルが表現することができる色数を決定する。内部情報５２０は構成する平面の数、各構成要素のビットでのサイズ、ピクスマップ要素をパッキングするのに用いられるパッキング形式などのその他のピクスマップについての情報を格納する領域を含みうる。
【００４２】
また、ピクスマップオブジェクト５１０はブロックリスト５３０を含み、これは特定のピクスマップに対応するブロック４１０又はスーパーブロック４２０に関する情報を保持することができる。例として示すブロックリスト５３０は一以上のブロックハンドルを有し、ｂｌｏｃｋ＿ｈａｎｄｌｅ＿１からｂｌｏｃｋ＿ｈａｎｄｌｅ＿ｎとして図示される。いくつかの実施例においては、各ブロックハンドルによってブロック４１０又はスーパーブロック４２０の一以上のスキャンラインにアクセスしうる。ブロックリスト５３０はリストのブロックへのポインタを保持するデータ領域を含みうる。例えば、各ブロックに関連付けられたデータ構造は直後及び／又は直前のブロックへのポインタを保持しうる。いくつかの実施例においては、ブロックリスト５３０は動的配列として実装され、これはサイズを変更することができ、要素を加えたり除いたりすることができる。
【００４３】
いくつかの実施例においては、ブロック４１０又はスーパーブロック４２０によって保持されるスキャンラインの数は、割り当てられたユニットのサイズ及びその他のシステムパラメータによって決定されうる。例えば、ピクスマップに対応する各ブロック４１０はスキャンラインＳｍａｘ個によって構成されうる。しかし、ピクスマップの最後のブロック４１０はＳｍａｘ個より少ない数のスキャンラインを保持しうる。図５に示すように、各ブロック４１０は５個のスキャンライン（Ｓｍａｘ=５）個を保持する。いくつかの実施例においては、スキャンラインはさらに要素平面、アルファ要素等のうちの一以上を含む構成要素に分けられうる。例えば、カラー画像のピクセルはシアン、マゼンタ、イエロー及びブラック（「ＣＭＹＫ」）の要素を含みうる。
【００４４】
図６はＺ個のスーパーブロック４２０−１から４２０−Ｚにわたって分布する、それぞれＳバイトのメモリを有する各スキャンライン６１０から構成されるピクスマップＰのメモリ構成６００を図示している。ピクスマップＰは合計Ｍ個のスキャンラインによって構成されうるので、ピクスマップＰ全体が格納された場合は少なくともＳ＊Ｍバイトのメモリが占有されうる。ＺはピクスマップＰを保持するのに用いられるスーパーブロックの数である。図６に示されるように、スーパーブロック４２０は一以上のスキャンライン６１０によって構成されうる。
【００４５】
特定のサイズにおいて、スーパーブロック４２０はそれぞれＳバイトのスキャンラインを最大Ｓｍａｘ個保持することができる。スーパーブロック４２０のサイズはスキャンラインのサイズＳの整数倍とは限らないので、各スーパーブロック４２０においていくらかのメモリＷＢが未使用となりうる（ただし、最後のスーパーブロック４２０−Ｚは異なる容量のメモリが未使用となりうることから、例外となりうる）。図６はＳｍａｘ個のスキャンライン６１０−１から６１０−Ｓｍａｘによって構成される例示的なスーパーブロック４２０−１を図示している。スーパーブロック４２０はユニットとして割り当てられうるので、最後のスーパーブロック４２０−ＺはＳｍａｘ個より少ないスキャンラインから構成され、よってＷＬの未使用の領域を含みうる。よって、スキャンライン６１０のサイズとスーパーブロック４２０のサイズに応じてピクスマップＰはＳ＊Ｍバイトよりも多くのメモリを用いうる。メモリ管理部３７５、フレームバッファ管理ライブラリ３３５、及びピクスマップコード３４５におけるルーチンはスーパーブロック４２０の割当を管理するのに用いられ、ピクスマップＰのメモリ使用を最適化しうる。
【００４６】
図７はスーパーブロック４２０の最適なサイズを選択してピクスマップのメモリ使用を最適化する例示的な方法のフローチャート７００を図示している。フローチャート７００の方法は、Ｎ＊Ｂがスーパーブロック４２０の最適なサイズを表し、Ｂがブロック４１０のサイズを表す場合に整数Ｎ（Ｎ＞０）を決定するのに用いられうる。少なくともＭ＊Ｓバイトのメモリを用いてＭ個のサイズＳのスキャンライン６１０から構成されるピクスマップＰを保持しうる。
【００４７】
ステップ７１０において、アルゴリズムによって、ピクスマップＰを保持することができる最小の整数倍のブロック数Ｎの値を決定しうる。よって、ステップ７１０において、Ｎは以下の式で算出され、
【数１】
2010079893.tif 000002
Ｎは式（１）が真となる最小の整数である。上述の数値Ｎは未使用領域を最小限にすることによってピクスマップＰによるメモリ使用を最適化しうる。
【００４８】
しかし、システムパラメータによっては、スーパーブロックの最大のサイズを制限し、つまりスーパーブロック４２０を構成する連続するブロックＮの数に上限Ｎｍａｘを設ける方が効果的な場合がありうる。よって、ステップ７２０において、式（１）に基づいて算出された数値ＮはＮｍａｘと比較される。Ｎ≦Ｎｍａｘである場合、アルゴリズムはステップ７９０へ移行し、スーパーブロック４２０のサイズはＮ＊Ｂに設定される。
【００４９】
式（１）に基づいて算出された数値ＮがＮｍａｘを超える場合、ステップ７３０において、反復カウンタの数値ｉはＮｍａｘに初期設定され、すでにアルゴリズムによって検討されているスーパーブロックのサイズの未使用領域の下限を記録する変数Ｗｍｉｎの数値はＮ＊Ｂ又はその他の十分に大きな数値に初期設定しうる。
【００５０】
ルーチン７４０において、アルゴリズムはサイズ（ｉ＊Ｂ）のスーパーブロックの未使用領域Ｗｉを計算しうる。次に、ステップ７６０において、ＷｉはＷｍｉｎの現在値と比較しうる。Ｗｉの現在値がＷｍｉｎのそれよりも低い場合、ＷｍｉｎにＷｉの数値が割り当てられ、ｉの現在値はｉｍｉｎに割り当てられうる。
【００５１】
次に、ステップ７６５において、Ｗｉの現在値はＷｔｈｒｅｓｈと比較することができる。Ｗｔｈｒｅｓｈは使用可能な未使用領域の最大値に対応する閾値を保持しうる。Ｗｔｈｒｅｓｈの数値は印刷システムによって異なり、システムパラメータに依存しうる。例えば、プリンタ１７０の使用可能なメモリに制限がある場合はＷｔｈｒｅｓｈには低い数値が設定されうる。いくつかの実施例においては、Ｗｔｈｒｅｓｈの数値は実験によって集められた発見的データに基づきうる。いくつかの方法においては、Ｗｔｈｒｅｓｈの初期値はプリンタ１７０の動作の際に集められた情報に基づいて更新されうる。例えば、Ｗｔｈｒｅｓｈはピクスマップの未使用メモリの平均、直近五つのピクスマップの未使用メモリの平均、又は様々な統計的及び発見的方法を用いたその他の数値に設定しうる。いくつかの実施例においては、ユーザは可能な最適化のメニューを提供するユーザインタフェースを通じてＷｔｈｒｅｓｈの数値を指定することができる。ステップ７６５において、Ｗｉの数値がＷｔｈｒｅｓｈの数値を下回る場合には、アルゴリズムは直接ステップ７８５に移行し、Ｎにはｉｍｉｎの数値が割り当てられる。Ｗｔｈｒｅｓｈの適切な数値を設定することによって、アルゴリズムはより早く収束して、最適なスーパーブロックのサイズを選択しうる。
【００５２】
ＷｉがＷｔｈｒｅｓｈを超える場合、ステップ７７０においてｉの数値はデクリメントされて、ステップ７８０においてｉがゼロを超えるか判定しうる。ｉがゼロに等しい場合、アルゴリズムはステップ７８５へ移行し、Ｎにはｉｍｉｎの数値が割り当てられうる。ステップ７８０において、ｉが０よりも大きい場合、アルゴリズムはステップ７４０〜７８０を繰り返し適用する。
【００５３】
ステップ７９０において、スーパーブロック４２０のサイズはＮ＊Ｂとして設定される。アルゴリズム７００は様々な状況に対応しうるように変形しうることに留意されたい。例えば、メモリ管理部がブロックサイズＢ又は所定のスーパーブロックのサイズＮ＊Ｂを用いるように構成されている場合、Ｗｍｉｎはこれら二つの値について算出され、他のブロックのサイズについての計算は実行されなくてもよい。また、スーパーブロック４２０がブロックサイズの様々な整数倍で割り当てることができる場合、最後のスーパーブロック４２０−Ｚのサイズはその前のスーパーブロック４２０とは異なるサイズを有し、これにより無駄な領域を最小限に抑えうる。例えば、最後のスーパーブロック４２０−Ｚが一つのスキャンラインを有する場合、ブロック４１０が割り当てられて、これにより最後のスキャンラインが保持され、よって未使用メモリが減少する。その他の多様なスキームが当業者にとっては明らかであり、例示的なフローチャート７００において図示されるアルゴリズムは適宜修正しうる。
【００５４】
図８は特定のスーパーブロックサイズの未使用領域を計算するための例示的なルーチン７４０のフローチャートを図示している。図８において、図７に説明されている構成要素を参照する際は同様の符号を用いる。アルゴリズムは各スーパーブロック４２０（最後を除く）の未使用領域を算出し、これに最後のスーパーブロック４２０−Ｚの未使用領域を加算することによって、ピクスマップＰを保持する場合の未使用領域の合計を計算する。
【００５５】
ステップ７４２において、アルゴリズムはサイズｉ＊Ｂのスーパーブロック４２０が保持することができるスキャンラインの最大値Ｓｍａｘを計算する。Ｓｍａｘは次の式を満たす最大の整数として計算しうる。
【数２】
2010079893.tif 000003
ここでｉは反復カウンタの現在値で、Ｂはブロックサイズで、Ｓは各スキャンラインのサイズである。
【００５６】
ステップ７４４において、各スーパーブロックの最後の未使用領域は以下の式によって算出される。
【数３】
2010079893.tif 000004
「ｍｏｄ」とはモジュロ演算子を指し、除算の後の剰余を算出する。ステップ７４６において、ピクスマップＰ全体を保持することができるスーパーブロックＺの最小数が次の式の最小の整数Ｚとして算出される。
【数４】
2010079893.tif 000005
ここでＭとはピクスマップＰのスキャンラインの合計数をいう。
【００５７】
次に、ステップ７４８において、最後のスーパーブロック４２０−Ｚの未使用領域がスーパーブロック４２０−Ｚのサイズ（ｉ＊Ｂ）から最後のブロックのスキャンラインによって占有されるバイト数を引くことによって算出される。最後のブロックのスキャンラインによって占有されるバイト数は（Ｚ−１）＊Ｓｍａｘ＊Ｓによって得られる最初の（Ｚ−１）個のブロックにおけるスキャンラインで用いられるバイト数からピクスマップＰ＝（Ｍ＊Ｓ）のサイズを引くことによって計算しうる。よって最後のブロックにおける未使用領域ＷＬは以下により算出しうる。
【数５】
2010079893.tif 000006
【００５８】
次に、ステップ７４９において、未使用領域Ｗｉの合計は、各個別のスーパーブロック４２０における未使用領域、つまり（Ｚ−１）＊ＷＢと最後のスーパーブロック４２０−Ｌにおける未使用領域ＷＬの合計として算出される。よって
【数６】
2010079893.tif 000007
【００５９】
ルーチン７４０において算出された数値Ｗｉは例示的なフローチャート７００において図示している方法において用いられうる。
【００６０】
本発明のその他の実施例は、本明細書に開示される、詳細な説明の検討及び実施により当業者にとって明らかとなるであろう。本明細書と実施例は、例示とすることのみを意図しており、本発明の真の範囲や意図は添付される請求項において示される。
【図１】
2010079893.tif 000008
【図２】
2010079893.tif 000009
【図３】
2010079893.tif 000010
【図４】
2010079893.tif 000011
【図５】
2010079893.tif 000012
【図６】
2010079893.tif 000013
【図７】
2010079893.tif 000014
【図８】
2010079893.tif 000015
【外国語明細書】
2010079893000001.pdf
2010079893000002.pdf
2010079893000003.pdf
2010079893000004.pdf