(57)【要約】  【課題】  データをキャッシュ・メモリにプリフェッチする方法、コンピュータ・プログラム、及びシステムを提供する。  【解決手段】  プログラムが実行されたときに、プログラムの第１のオブジェクトのオブジェクトＩＤが取得される。データ構造のルックアップ処理が実行され、それによって前記オブジェクトＩＤが前記データ構造内に存在するかどうかが判定される。前記オブジェクトＩＤが前記データ構造内に存在することに応答して、前記オブジェクトＩＤによって参照される参照対象オブジェクトＩＤが検索される。その後、前記参照対象オブジェクトＩＤに関連するデータがメイン・メモリから前記キャッシュ・メモリにプリフェッチされる。  【選択図】  図２
2010524106.tif 000002
【特許請求の範囲】
【請求項１】
データ処理システムにおいてデータをキャッシュ・メモリにプリフェッチする方法であって、
プログラムを実行するステップと、
前記プログラムが実行されたときに、前記プログラムの第１のオブジェクトのオブジェクトＩＤを取得するステップと、
データ構造のルックアップ処理を実行して前記オブジェクトＩＤが前記データ構造内に存在するかどうかを判定するステップと、
前記オブジェクトＩＤが前記データ構造内に存在することに応答して、前記オブジェクトＩＤによって参照される参照対象オブジェクトＩＤを検索するステップと、
前記参照対象オブジェクトＩＤに関連するデータをメイン・メモリから前記キャッシュ・メモリにプリフェッチするステップと、
を含む方法。
【請求項２】
前記オブジェクトＩＤが前記データ構造内で発見されなかったことに応答して、前記第１のオブジェクトが第２のオブジェクトを参照しているかどうかを判定するステップと、
前記第１のオブジェクトが前記第２のオブジェクトを参照していることに応答して、前記データ構造に第１のオブジェクト情報が含まれるように入力するステップと、
を更に含む、請求項１に記載の方法。
【請求項３】
前記第２のオブジェクトが第３のオブジェクトを参照しているかどうかを判定するステップと、
前記第２のオブジェクトが前記第３のオブジェクトを参照していることに応答して、前記データ構造に第２のオブジェクト情報が含まれるように入力するステップと、
を更に含む、請求項２に記載の方法。
【請求項４】
前記オブジェクト情報は、前記オブジェクトＩＤ、オフセット、又は前記参照対象オブジェクトＩＤのうちの少なくとも１つを含み、前記オフセットは任意選択で、前記第２のオブジェクトのアドレスが参照される前記第１のオブジェクト内の位置を識別する、請求項２に記載の方法。
【請求項５】
前記第１のオブジェクトは、複数のオブジェクトのうちの１つであり、前記複数のオブジェクトはそれぞれ一意に識別される、請求項１乃至４のいずれかに記載の方法。
【請求項６】
リンカ／ローダ・プログラムは、前記複数の各オブジェクトを一意に識別し、任意選択で前記複数の各オブジェクトに追加的なＩＤを付加することによって前記複数の各オブジェクトを一意に識別する、請求項５に記載の方法。
【請求項７】
コンピュータに読み込み可能なプログラムを有するコンピュータ使用可能な媒体を備えるコンピュータ・プログラムであって、前記コンピュータに読み込み可能なプログラムは、それ自体がデータ処理システム内で実行されたときに前記データ処理システムに
プログラムを実行させ、
前記プログラムが実行されたときに、前記プログラムの第１のオブジェクトのオブジェクトＩＤを取得させ、
データ構造のルックアップ処理を実行して前記オブジェクトＩＤが前記データ構造内に存在するかどうかを判定させ、
前記オブジェクトＩＤが前記データ構造内に存在することに応答して、前記オブジェクトＩＤによって参照される参照対象オブジェクトＩＤを検索させ、
前記参照対象オブジェクトＩＤに関連するデータをメイン・メモリから前記キャッシュ・メモリにプリフェッチさせる、
コンピュータ・プログラム。
【請求項８】
前記コンピュータに読み込み可能なプログラムは更に、前記データ処理システムに
前記オブジェクトＩＤが前記データ構造内で発見されなかったことに応答して、前記第１のオブジェクトが第２のオブジェクトを参照しているかどうかを判定させ、
前記第１のオブジェクトが前記第２のオブジェクトを参照していることに応答して、前記データ構造に第１のオブジェクト情報が含まれるように入力させる、
請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記コンピュータに読み込み可能なプログラムは更に、前記データ処理システムに
前記第２のオブジェクトが第３のオブジェクトを参照しているかどうかを判定させ、
前記第２のオブジェクトが前記第３のオブジェクトを参照していることに応答して、前記データ構造に第２のオブジェクト情報が含まれるように入力させる、
請求項８に記載のコンピュータ・プログラム。
【請求項１０】
前記オブジェクト情報は、前記オブジェクトＩＤ、オフセット、又は前記参照対象オブジェクトＩＤのうちの少なくとも１つを含み、前記オフセットは、前記第２のオブジェクトのアドレスが参照される前記第１のオブジェクト内の位置を識別する、請求項９に記載のコンピュータ・プログラム。
【請求項１１】
前記第１のオブジェクトは、複数のオブジェクトのうちの１つであり、前記複数のオブジェクトはそれぞれ一意に識別され、リンカ／ローダ・プログラムは任意選択で、前記複数の各オブジェクトを一意に識別し、前記複数の各オブジェクトに追加的なＩＤを付加することによって前記複数の各オブジェクトを一意に識別する、請求項９に記載のコンピュータ・プログラム。
【請求項１２】
プロセッサと、
前記プロセッサと結合されたメモリと、
を備えるシステムであって、前記メモリは、それらが前記プロセッサによって実行されたときに前記プロセッサに
プログラムを実行させ、
前記プログラムが実行されたときに、前記プログラムの第１のオブジェクトのオブジェクトＩＤを取得させ、
データ構造のルックアップ処理を実行して前記オブジェクトＩＤが前記データ構造内に存在するかどうかを判定させ、
前記オブジェクトＩＤが前記データ構造内に存在することに応答して、前記オブジェクトＩＤによって参照される参照対象オブジェクトＩＤを検索させ、
前記参照対象オブジェクトＩＤに関連するデータをメイン・メモリから前記キャッシュ・メモリにプリフェッチさせる
命令を備える、システム。
【請求項１３】
前記命令は更に、前記プロセッサに
前記オブジェクトＩＤが前記データ構造内で発見されなかったことに応答して、前記第１のオブジェクトが第２のオブジェクトを参照しているかどうかを判定させ、
前記第１のオブジェクトが前記第２のオブジェクトを参照していることに応答して、前記データ構造に第１のオブジェクト情報が含まれるように入力させる、
請求項１２に記載のシステム。
【請求項１４】
前記命令は更に、前記プロセッサに
前記第２のオブジェクトが第３のオブジェクトを参照しているかどうかを判定させ、
前記第２のオブジェクトが前記第３のオブジェクトを参照していることに応答して、前記データ構造に第２のオブジェクト情報が含まれるように入力させる、
請求項１３に記載のシステム。
【請求項１５】
前記オブジェクト情報は、前記オブジェクトＩＤ、オフセット、又は前記参照対象オブジェクトＩＤのうちの少なくとも１つを含み、前記オフセットは、前記第２のオブジェクトのアドレスが参照される前記第１のオブジェクト内の位置を識別する、請求項１３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は一般にデータ・プリフェッチに関するものである。より詳細には、本願は、プログラマブル・オブジェクト識別（ｐｒｏｇｒａｍｍａｂｌｅ  ｏｂｊｅｃｔ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）を使用してデータをプリフェッチする方法、システム、及びコンピュータ・プログラムに関するものである。
【背景技術】
【０００２】
中央処理装置（ＣＰＵ）キャッシュは、メモリ・アクセスの平均時間を短縮するためにコンピュータのＣＰＵによって使用されるキャッシュである。ＣＰＵキャッシュは、最高使用頻度（ｍｏｓｔ  ｆｒｅｑｕｅｎｔｌｙ  ｕｓｅｄ）のメイン・メモリ位置に所在するデータのコピーを記憶する、より小型且つ高速なメモリである。大部分のメモリ・アクセス対象がキャッシュ・メモリ位置である限り、メモリ・アクセスの平均待ち時間は、メイン・メモリ待ち時間よりもキャッシュ待ち時間の方に近くなる。
【０００３】
プロセッサがメイン・メモリ内のある位置の読み出し又は書き込みを行おうとするときは、まずそのメモリ位置がキャッシュ内にあるかどうかが検査される。この検査は、当該メモリ位置のアドレスと、そのアドレスを含む可能性があるキャッシュ内のすべてのタグとを比較することによって達成される。メモリ位置がキャッシュ内にあることをプロセッサが発見した場合には、キャッシュ・ヒットとなる。メモリ位置がキャッシュ内にあることをプロセッサが発見できない場合には、キャッシュ・ミスとなる。キャッシュ・ヒットの場合は、プロセッサは直ちに該当するキャッシュ・ライン内のデータの読み出し又は書き込みを行う。キャッシュ・ヒットとなるアクセスの割合はヒット率として知られ、これがキャッシュの有効性の尺度となる。
【０００４】
キャッシュ・ミスの場合は、大部分のキャッシュで新しいエントリが割り当てられるが、これには直前にミスとなったタグとメモリのデータのコピーとが含まれる。その後、新しいエントリにはキャッシュ・ヒットの場合と同様の参照が適用され得る。ミスの場合はデータをメイン・メモリに転送する必要があるので、処理は比較的低速となる。メイン・メモリはキャッシュ・メモリよりもずっと低速であるため、このような転送は遅延をもたらし、また、新しいデータをキャッシュに記録してからプロセッサに配信するオーバーヘッドも発生することになる。
【０００５】
キャッシュがいっぱいになったときは、より新しいデータ用のスペースを空けるためにデータをキャッシュから削除しなければならない。キャッシュから削除すべきデータを選択する最も一般的な方法は、特定のデータ・ブロックの最終使用時点を追跡し、未使用時間が最も長い（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）ブロックをキャッシュから削除することである。したがって、データが最近使用されていなければキャッシュ内に存在する可能性は低くなり、ＣＰＵからのアクセスに先立って当該データをメイン・メモリからロードする必要が生じる。その結果、メモリからデータが検索されるまでＣＰＵが待機することになり、性能が低下する恐れがある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
この課題に対する１つの解決策は、近い将来にどのようなデータが必要となるかを予想し、そのデータをキャッシュにプリフェッチすることである。プリフェッチすべきデータの判定に一般に使用される方法は、以下の２つである。
●順次読み出し（ｓｅｑｕｅｎｔｉａｌ  ｒｅａｄ）
●タッチ命令（ｔｏｕｃｈ  ｉｎｓｔｒｕｃｔｉｏｎ）
【０００７】
順次読み出しを使用する際は、最終データ・アクセスの直前又は直後にデータ読み出しが行われる。順次読み出しは、空間的局所性が良好なデータのプリフェッチには有効であるが、ランダム位置のデータ・アクセスには有効でない。
【０００８】
タッチ命令が実行される度に、［０，サイズ−１］の範囲内の乱数がタッチ命令のアドレス・オペランドに追加されて仮想アドレスが生成される。アドレスのページ部分は、そのプロセスのページ参照列（ｐａｇｅ‐ｒｅｆｅｒｅｎｃｅ  ｓｔｒｉｎｇ）内の次の要素を構成する。タッチ命令によって無効なページのページ参照が生成されたときは、インタープリタはそのプロセスにフレームを割り当てなければならない。更に、タッチ命令は一般に勧告的な命令である。勧告的な命令はオプション命令であり、つまり、中央処理装置がビジー状態の場合は実行されない可能性がある。したがって、タッチ命令はハードウェアがビジー状態の場合は無効となる可能性がある。また、オブジェクトＡがオブジェクトＢを参照し、オブジェクトＢがオブジェクトＣを参照している場合のタッチ命令では、各オブジェクトは通常、ソフトウェア・スタックの様々なレイヤに所在している。その結果、オブジェクトＣがオブジェクトＡではなくオブジェクトＢの直下にあることから、オブジェクトＡを対象としたソフトウェア・スタックのレイヤ内の命令は、オブジェクトＣ及びオブジェクトＣよりも下層に所在する他のオブジェクトを認識しないことになる。かかる状況は、タッチ命令を利用した場合にも、ソフトウェア・スタックの所与のレイヤでは階層内の直下に所在するオブジェクトしかプリフェッチすることができないことを意味する。即ち、オブジェクトＡの直下に所在するオブジェクトはオブジェクトＢのみであるため、オブジェクトＡによってプリフェッチ可能なオブジェクトはオブジェクトＢのみとなる。
【課題を解決するための手段】
【０００９】
例示的な諸実施形態は、オブジェクト間の既知の階層関係に基づいて、データをキャッシュにプリフェッチすることができるようにアクセス対象オブジェクトを識別する、インテリジェントな方法を提供する。プログラムが実行されたときに、前記プログラムの第１のオブジェクトのオブジェクトＩＤが取得される。データ構造のルックアップ処理が実行され、それによって前記オブジェクトＩＤが前記データ構造内に存在するかどうかが判定される。前記オブジェクトＩＤが前記データ構造内に存在することに応答して、前記オブジェクトＩＤによって参照される参照対象オブジェクトＩＤ（ｒｅｆｅｒｅｎｃｅｄ  ｏｂｊｅｃｔ  ｉｄｅｎｔｉｆｉｅｒ）が検索される。前記参照対象オブジェクトＩＤに関連するデータがメイン・メモリから前記キャッシュ・メモリに取り出される。
【００１０】
例示的な諸実施形態は、前記オブジェクトＩＤが前記データ構造内で発見されなかったことに応答して、前記第１のオブジェクトが第２のオブジェクトを参照しているかどうかも判定する。前記第１のオブジェクトが前記第２のオブジェクトを参照していることに応答して、第１のオブジェクト情報が前記データ構造に入力される。例示的な諸実施形態は、前記第２のオブジェクトが第３のオブジェクトを参照しているかどうかも判定する。前記第２のオブジェクトが前記第３のオブジェクトを参照していることに応答して、第２のオブジェクト情報が前記データ構造に入力される。
【００１１】
例示的な諸実施形態において、前記オブジェクト情報は、前記オブジェクトＩＤ、オフセット、又は前記参照対象オブジェクトＩＤのうちの少なくとも１つを含むことができ、前記オフセットは、前記第２のオブジェクトのアドレスが参照される前記第１のオブジェクト内の位置を識別する。前記第１のオブジェクトは、複数のオブジェクトのうちの１つとすることができ、前記複数のオブジェクトはそれぞれ一意に識別することができる。リンカ／ローダ・プログラムは、前記複数の各オブジェクトを一意に識別する。前記リンカ／ローダ・プログラムは、前記複数の各オブジェクトに追加的なＩＤを付加することによって前記複数の各オブジェクトを一意に識別する。
【００１２】
他の例示的な諸実施形態では、コンピュータに読み込み可能なプログラムを有するコンピュータ使用可能な媒体を備えるコンピュータ・プログラムが提供される。前記コンピュータに読み込み可能なプログラムは、それ自体がコンピューティング・デバイス上で実行されたときに、上記の例示的な実施形態に係る方法に関して概要を示した様々な処理及びそれらの組合せを前記コンピューティング・デバイスに実行させる。
【００１３】
また別の例示的な実施形態では、システムが提供される。前記システムは、プロセッサと、前記プロセッサと結合されたメモリと、を備えることができる。前記メモリは、それらが前記プロセッサによって実行されたときに、上記の例示的な実施形態に係る方法に関して概要を示した様々な処理及びそれらの組合せを前記プロセッサに実行させる。
【００１４】
本発明ならびに本発明の好ましい使用態様及び他の目的は、以下の例示的な諸実施形態の詳細な説明を添付図面と併せて読めば最も良く理解されるはずである。
【図面の簡単な説明】
【００１５】
【図１】例示的な諸実施形態が実施され得るデータ処理システムのブロック図である。
【図２】例示的な一実施形態に係るプログラマブル・オブジェクト識別を使用したデータ・プリフェッチに使用される各コンポーネントの例示的なブロック図である。
【図３】例示的な一実施形態に係る例示的なオブジェクト関係を示す図である。
【図４】例示的な一実施形態に従ってオブジェクトが参照される例示的な実行可能プログラム・コードの一部分を示す図である。
【図５】例示的な一実施形態に係るオブジェクト・テーブルの例示的な論理表現を示す図である。
【図６】例示的な一実施形態に係る例示的なオブジェクト・アドレッシング・スキームを示す図である。
【図７】例示的な一実施形態に係るデータ・プリフェッチ処理のフローチャートである。
【発明を実施するための形態】
【００１６】
例示的な諸実施形態は、プログラマブル・オブジェクト識別を使用してデータをプリフェッチするメカニズムを提供する。図１は、本発明の諸実施形態が実施され得るデータ処理環境を例示する図である。図１は単なる例示にすぎず、本発明の諸態様又は諸実施形態が実施され得る環境を限定することを主張するものではなく、そのように暗示することも意図しているわけではないことを理解していただきたい。図示の環境には、本発明の趣旨及び範囲から逸脱しない限り様々な変更を施すことができる。
【００１７】
ここで図１を参照すると、例示的な諸実施形態が実施され得るデータ処理システムのブロック図が示されている。データ処理システム１００は、例示的な諸実施形態に関する処理を実行するコンピュータ使用可能なコード又は命令が設置され得るコンピュータの一例である。
【００１８】
図示の例において、データ処理システム１００は、ノース・ブリッジ及びメモリ・コントローラ・ハブ（ＭＣＨ）１０２と、サウス・ブリッジ及び入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＩＣＨ）１０４とを含むハブ・アーキテクチャを利用している。プロセッサ１０６、メイン・メモリ１０８、及びグラフィックス・プロセッサ１１０は、ノース・ブリッジ及びメモリ・コントローラ・ハブ１０２に連結されている。処理ユニット１０６は、１つ又は複数のプロセッサを含むことができ、また、１つ又は複数の異種プロセッサ・システムを使用して実装することもできる。グラフィックス・プロセッサ１１０は、例えば高速グラフィックス・ポート（ＡＧＰ）を介してＭＣＨに連結することができる。
【００１９】
図示の例において、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ１１２は、サウス・ブリッジ及びＩ／Ｏコントローラ・ハブ１０４に連結され、オーディオ・アダプタ１１６、キーボード及びマウス・アダプタ１２０、モデム１２２、読み取り専用メモリ（ＲＯＭ）１２４、ユニバーサル・シリアル・バス（ＵＳＢ）・ポート及び他の通信ポート１３２、ならびにＰＣＩ／ＰＣＩｅデバイス１３４は、バス１３８を介してサウス・ブリッジ及びＩ／Ｏコントローラ・ハブ１０４に連結され、ハード・ディスク・ドライブ（ＨＤＤ）１２６及びＣＤ‐ＲＯＭドライブ１３０は、バス１４０を介してサウス・ブリッジ及びＩ／Ｏコントローラ・ハブ１０４に連結されている。ＰＣＩ／ＰＣＩｅデバイスとしては、例えばイーサネット（Ｒ）・アダプタ、アドイン・カード、及びノート型コンピュータ用のＰＣカード等を挙げることができる。ＰＣＩはカード・バス・コントローラを使用するが、ＰＣＩｅはこれを使用しない。ＲＯＭ  １２４は、例えばフラッシュ・バイナリ入力／出力システム（ＢＩＯＳ）等であってもよい。ハード・ディスク・ドライブ１２６及びＣＤ‐ＲＯＭドライブ１３０は、例えば統合ドライブ・エレクトロニクス（ＩＤＥ）やシリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）・インターフェース等を使用することができる。スーパーＩ／Ｏ（ＳＩＯ）デバイス１３６は、サウス・ブリッジ及びＩ／Ｏコントローラ・ハブ１０４に連結することができる。
【００２０】
オペレーティング・システムは、プロセッサ１０６上で作動して図１のデータ処理システム１００内の様々なコンポーネントの調整を行い、それらの制御を実行する。オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）ＸＰのような市販のオペレーティング・システムであってもよい（「Ｍｉｃｒｏｓｏｆｔ」及び「Ｗｉｎｄｏｗｓ」は、マイクロソフト・コーポレーションの米国その他の国、又はその両方における商標である）。Ｊａｖａ（ＴＭ）プログラミング・システムのようなオブジェクト指向のプログラミング・システムは、上記オペレーティング・システムと連動して作動することができ、データ処理システム１００上で実行されているＪａｖａプログラム又はアプリケーションから当該オペレーティング・システムへのコールを行うものである。「Ｊａｖａ」及び「Ｊａｖａ」に基づくすべての商標は、サン・マイクロシステムズの米国その他の国、又はその両方における商標である。
【００２１】
上記オペレーティング・システムに対する命令、上記オブジェクト指向のプログラミング・システム、及びアプリケーション又はプログラムは、ハード・ディスク・ドライブ１２６のようなストレージ・デバイス上に設置され、処理ユニット１０６による実行のためにメイン・メモリ１０８にロードすることができる。例示的な諸実施形態に関する各処理は、例えばメイン・メモリ１０８や読み取り専用メモリ１２４等のメモリ内に設置することも、１つ又は複数の周辺デバイス内に設置することもできるコンピュータ実装命令を使用して、処理ユニット１０６によって実行され得る。
【００２２】
図１のハードウェアは実装形態に応じて異なる可能性がある。図１に示されるハードウェアに加えて又はその代わりに、フラッシュ・メモリ又は同等の不揮発性メモリあるいは光ディスク・ドライブ等、他の内部ハードウェア又は周辺デバイスを使用することもできる。また、本発明の上記処理は、マルチプロセッサ・データ処理システムにも適用することができる。
【００２３】
いくつかの実例において、データ処理システム１００は一般に、オペレーティング・システム・ファイル又はユーザ生成データあるいはその両方を記憶する不揮発性メモリを提供するフラッシュ・メモリが組み込まれた携帯情報端末（ＰＤＡ）であってもよい。バス・システムは、システム・バス、Ｉ／Ｏバス、ＰＣＩバスのような１つ又は複数のバスから構成されることもある。言うまでもなく、上記バス・システムは、任意のタイプの通信ファブリック又はアーキテクチャであって、当該ファブリック又はアーキテクチャに取り付けられた様々なコンポーネント又はデバイス間でデータの転送を実施する通信ファブリック又はアーキテクチャを使用して実装することができる。通信ユニットは、モデムやネットワーク・アダプタ等、データの送受信に使用される１つ又は複数のデバイスを含むことができる。メモリは、例えばメイン・メモリ１０８であることも、ノース・ブリッジ及びメモリ・コントローラ・ハブ１０２内で見受けられるキャッシュであることもある。処理ユニットは、１つ又は複数のプロセッサあるいはＣＰＵを含むことができる。図１に示される例及び上述の実例は、アーキテクチャ上の限定を暗示することを意図しているわけではない。例えば、データ処理システム１００は、ＰＤＡの形をとるだけでなく、タブレット・コンピュータ、ラップトップ・コンピュータ、あるいは電話デバイスの形をとることもできる。
【００２４】
図２は、例示的な一実施形態に係るプログラマブル・オブジェクト識別を使用したデータ・プリフェッチに使用される各コンポーネントの例示的なブロック図である。例示的な諸実施形態では、オブジェクトがプログラムの基本ビルディング・ブロックとして使用されるランタイム・データ・ストレージの個々の単位となるので、データの代わりにオブジェクトという用語が使用される。プログラマブル・オブジェクト識別を使用してオブジェクトをプリフェッチするために、コンパイラ２０４はまずソース・コード２０２をコンパイルしなければならない。ソース・コード２０２は、図１のデータ処理システム１００のようなデータ処理システムによって実行されるプログラム又はアプリケーションとすることができる。コンパイラ２０４は、ソース・コンピュータ言語で書かれたソース・コード２０２のテキストをターゲット・コンピュータ言語又はオブジェクト・コード２０６に変換するコンピュータ・プログラム又はプログラム・セットである。オブジェクト・コード２０６は、最も一般的にはリンカ／ローダ・モジュール２０８のような他のプログラムによる処理に適した形をとるが、人間が判読可能なテキスト・ファイルとすることもできる。ソース・コード２０２のコンパイル中、コンパイラ２０４は、オブジェクトＩＤ  ２１０を使用してソース・コード２０２内のオブジェクトを識別する。次に、オブジェクト固有ＩＤジェネレータ（ｏｂｊｅｃｔ  ｕｎｉｑｕｅ  ｉｄｅｎｔｉｆｉｅｒ  ｇｅｎｅｒａｔｏｒ）２１２は、オブジェクトＩＤ  ２１０で識別される各オブジェクトに固有ＩＤを割り当てる。その後、それらの一意識別オブジェクト（ｕｎｉｑｕｅｌｙ  ｉｄｅｎｔｉｆｉｅｄ  ｏｂｊｅｃｔ）がオブジェクト・コード２０６に含められる。
【００２５】
ユーザがプログラムの実行を要求したときは、リンカ／ローダ・モジュール２０８は、コンパイラ２０４によって生成されたオブジェクト・コード２０６内の一意識別オブジェクトを識別する。更に、リンカ／ローダ・モジュール２０８は、あるプログラムのオブジェクトと別のプログラムのオブジェクトとを区別することができるように一意識別オブジェクトに追加的なＩＤを付加することによって、一意識別オブジェクトを一意に識別することもできる。更に、後述するように、プログラム固有の固有ＩＤを用いてオブジェクトを区別することにより、オブジェクトを容易に識別することが可能となり、その結果キャッシュ性能が高まる可能性がある。次に、リンカ／ローダ・モジュール２０８は、コンパイラ２０４によって生成されたオブジェクト・コード２０６を解釈して実行可能プログラム２１４にアセンブルする。リンカ／ローダ・モジュール２０８によって作成された実行可能プログラム２１４は、図１のメイン・メモリ１０８のようなメモリ２１６に記憶される。
【００２６】
実行可能プログラム２１４は、それぞれ所与のコンポーネントに属するオブジェクトに作用することによって１組のタスクを達成する、いくつかのレイヤのコンポーネント・コードから成るスタックである。コンポーネントとは、インストール対象となるプログラム部分を指し、例えば単一ファイル、関連ファイル群、オブジェクト、レジストレーション、レジストリ・キー、ショートカット、リソース、ディレクトリにグループ化されるライブラリ、共有コード部分等が該当する。単純な一例としては、下層から順にアダプタ・ドライバ、プロトコル・ドライバ、アレイ・ドライバ、論理ボリューム・ドライバが配置され、以下同様にドライバが配置され得るいくつかのレイヤのドライバで構成されるＩ／Ｏスタックがある。
【００２７】
次に、処理ユニット２１８は、実行可能プログラム２１４を実行する。実行可能プログラム２１４が処理ユニット２１８によって実行されると、プログラマブル・オブジェクト・プリフェッチ／識別モジュール（ｐｒｏｇｒａｍｍａｂｌｅ  ｏｂｊｅｃｔ  ｐｒｅｆｅｔｃｈ／ｉｄｅｎｔｉｆｉｅｒ  ｍｏｄｕｌｅ）２２０は、実行可能プログラム２１４内に現れる一意識別オブジェクトを識別していく。次に、プログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０は、オブジェクト・テーブル２２２を参照して、別のオブジェクトを参照する一意識別オブジェクトがオブジェクト・テーブル２２２内で参照されるかどうかを判定する。オブジェクト・テーブル２２２は、他の一意識別オブジェクトを参照する一意識別オブジェクトから成る２次元データ構造である。プログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０は、プログラムの実行中に一意識別オブジェクトを発見しながらそれらをオブジェクト・テーブル２２２に入力していく。別のオブジェクトを参照する一意識別オブジェクトがオブジェクト・テーブル２２２内で参照されない場合には、プログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０は、一意識別オブジェクトのオブジェクトＩＤと、一意識別オブジェクトによって参照されるすべてのオブジェクトと、各参照対象オブジェクトのアドレス位置に対応する一意識別オブジェクトのアドレス内の各オフセットとをオブジェクト・テーブル２２２に入力する。
【００２８】
次に、プログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０は、参照対象オブジェクトが他のオブジェクトを参照しているかどうかを判定する。参照対象オブジェクトが他のオブジェクトを参照している場合には、プログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０は、参照対象オブジェクトのオブジェクトＩＤと、参照対象オブジェクトによって参照されるすべてのオブジェクトと、他の各参照対象オブジェクトのアドレス位置に対応する参照対象オブジェクトのアドレス内の各オフセットとをオブジェクト・テーブル２２２に入力する。他のオブジェクトによって参照されるオブジェクトをプリフェッチすることによってシステム性能を改善するために、オブジェクト・テーブル２２２には他のオブジェクトを参照するオブジェクトに関するオブジェクト情報だけが含められるので、実行可能プログラム２１４内の参照対象オブジェクトが他のオブジェクトを参照していない場合は、オブジェクト・テーブル２２２に情報は入力されない。
【００２９】
オブジェクト・テーブル２２２内に別のオブジェクトを参照する一意識別オブジェクトが存在する場合には、プログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０は、メイン・メモリ内の参照対象オブジェクト２２４をプリフェッチするために、オブジェクト・テーブル２２２内で識別されたオフセットを使用して一意識別オブジェクトからアドレスを取得する。次に、プログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０は、プリフェッチされたオブジェクトをキャッシュ２２６内に配置する。プログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０は、オブジェクト・テーブル２２２内で識別されたオフセットを使用して一意識別オブジェクト内の各参照対象オブジェクトのアドレスを識別し、各参照対象オブジェクトをキャッシュ２２６にプリフェッチする。
【００３０】
図３は、例示的な一実施形態に係る例示的なオブジェクト関係を示している。オブジェクト関係３００は、図２の実行可能プログラム２１４のような実行可能プログラム内に存在し得るオブジェクト間の関係である。オブジェクト関係３００において、オブジェクトＡ  ３０２は、他の２つのオブジェクト、即ちオブジェクトＢ  ３０４及びオブジェクトＣ  ３０６を参照している。図面から分かるように、オブジェクトＢ  ３０４は更にオブジェクトＤ  ３０８及びオブジェクトＥ  ３１０も参照している。また、オブジェクトＣ  ３０６は、オブジェクトＦ  ３１２を参照している。
【００３１】
実行可能プログラムの実行中にプログラマブル・オブジェクト・プリフェッチ／識別モジュールがオブジェクトＡ  ３０２を発見したときは、オブジェクトＡ  ３０２内のオフセットを使用してオブジェクトＢ  ３０４及びオブジェクトＣ  ３０６がキャッシュにプリフェッチされる。オブジェクトＢ  ３０４及びオブジェクトＣ  ３０６がプリフェッチされると、やはりオブジェクトＢ  ３０４及びオブジェクトＣ  ３０６内の各オフセットを使用してオブジェクトＤ  ３０８、オブジェクトＥ  ３１０、及びオブジェクトＦ  ３１２がキャッシュにプリフェッチされる。
【００３２】
図４は、例示的な一実施形態に従ってオブジェクトが参照される例示的な実行可能プログラム・コードの一部分を示している。実行可能プログラム・コード部分４００は、図２の実行可能プログラム２１４のようなコードであってよい。実行可能プログラム・コード部分４００は、図３のオブジェクト関係を表すプログラム・コードである。実行可能プログラム・コード部分４００において、オブジェクトＡ  ４０２は、他の２つのオブジェクト、即ちオブジェクトＢ  ４０４及びオブジェクトＣ  ４０６を参照している。図面から分かるように、オブジェクトＢ  ４０４は更にオブジェクトＤ  ４０８及びオブジェクトＥ  ４１０も参照している。また、オブジェクトＣ  ４０６はオブジェクトＦ  ４１２を参照している。
【００３３】
このオブジェクト関係を把握することにより、実行可能プログラム・コード部分４００の階層内の他のオブジェクトを効果的にプリフェッチすることが可能となる。重要なポイントは、プリフェッチされるオブジェクトに空間的局所性がないこと、及びオブジェクト関係がテーブルの形で構築されることである。上述のとおり、オブジェクト・タイプ毎に２次元オブジェクト・テーブルが維持される。オブジェクト・テーブルは、一意識別オブジェクトのオブジェクトＩＤ、一意識別オブジェクトによって参照されるすべてのオブジェクト、参照対象オブジェクトのアドレス位置に対応する一意識別オブジェクトのアドレス内の各オフセット等の情報を保持する。
【００３４】
図５は、例示的な一実施形態に係るオブジェクト・テーブルの例示的な論理表現を示している。オブジェクト・テーブル５００は、オブジェクトＩＤ  ５０２と、オブジェクト内オフセット（ｏｆｆｓｅｔ  ｉｎ  ｔｈｅ  ｏｂｊｅｃｔ）５０４と、被参照オブジェクト（ｏｂｊｅｃｔ  ｐｏｉｎｔｅｄ  ｔｏ）５０６とを含む。オブジェクトＩＤ  ５０２は、別のオブジェクトを参照する一意識別オブジェクトのＩＤ又は名前である。オブジェクト内オフセット５０４は、一意識別オブジェクト内で別のオブジェクトを参照するアドレスである。被参照オブジェクト５０６は、一意識別オブジェクトによって参照されるオブジェクトのＩＤである。オブジェクト・テーブル５００は、ハードウェアによって例えばＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ：最長未使用時間）形式やＬＦＵ（Ｌｅａｓｔ  Ｆｒｅｑｕｅｎｔｌｙ  Ｕｓｅｄ：最低使用頻度）形式等で維持することができる。ＬＲＵアルゴリズムは、未使用時間が最も長いアイテムを最初に破棄する。ＬＲＵアルゴリズムでは、いつ何が使用されたかを追跡する必要がある。ＬＦＵアルゴリズムは、あるアイテムが必要とされる頻度をカウントし、使用頻度が最も低いアイテムを最初に破棄する。したがって、オブジェクト・テーブル５００内の大部分のオブジェクト参照は、頻繁に参照又は使用されるオブジェクト・タイプが対象となる。
【００３５】
図６は、例示的な一実施形態に係る例示的なオブジェクト・アドレッシング・スキームを示している。オブジェクト・アドレッシング・スキーム６００において、オブジェクトＡ  ６０２の仮想アドレス（ＶＡ）は「０ｘ１０００」である。図５のオブジェクト・テーブル５００のようなオブジェクト・テーブルを使用した場合、プログラマブル・オブジェクト・プリフェッチ／識別モジュールは、オブジェクトＡ  ６０２を発見したときに（ＶＡ＋０ｘ１０）がオブジェクトＢ  ６０４の仮想アドレス（ＶＢ）「０ｘ２００」を指し、（ＶＡ＋０ｘ４０）がオブジェクトＣ  ６０６の仮想アドレス（ＶＣ）「０ｘ４０００」を指すことも理解する。その後、プログラマブル・オブジェクト・プリフェッチ／識別モジュールは、オブジェクトＢ  ６０４を発見したときに（ＶＢ＋０ｘ８０）がオブジェクトＤ  ６０８の仮想アドレス（ＶＤ）「０ｘ８８００」を指し、（ＶＢ＋０ｘ８８）がオブジェクトＥ  ６１０の仮想アドレス（ＶＥ）「０ｘ２０００」を指すことも理解する。したがって、プログラマブル・オブジェクト・プリフェッチ／識別モジュールはその後、オブジェクトＣ  ６０６を発見したときに（ＶＣ＋０ｘ４８）がオブジェクトＦ  ６１２の仮想アドレス（ＶＦ）「０ｘ１００」を指すことを理解する。このように、図２のプログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０のようなプログラマブル・オブジェクト・プリフェッチ／識別モジュールによるオブジェクト識別は、ソフトウェア・スタックのレイヤ全体にわたるオブジェクトを実時間で効果的にフェッチする。
【００３６】
図７は、例示的な一実施形態に係るデータ・プリフェッチ処理のフローチャートを示している。上述のとおり、例示的な諸実施形態では、オブジェクトがプログラムの基本ビルディング・ブロックとして使用されるランタイム・データ・ストレージの個々の単位となるので、データの代わりにオブジェクトという用語が使用されている。処理が開始されると、図２のコンパイラ２０４のようなコンパイラがソース・コードをコンパイルする（ステップ７０２）。ソース・コードのコンパイル中に、コンパイラはオブジェクトＩＤを使用してソース・コード内のオブジェクトを識別する（ステップ７０４）。次に、コンパイラは、オブジェクト固有ＩＤジェネレータを使用してオブジェクトＩＤで識別される各オブジェクトに固有ＩＤを割り当てる（ステップ７０６）。次に、コンパイラは、一意識別オブジェクトを含むオブジェクト・コードを作成する（ステップ７０８）。
【００３７】
図２の処理ユニット２１８のような処理ユニットがプログラム実行要求を受信すると（ステップ７１０）、図２のリンカ／ローダ・モジュール２０８のようなリンカ／ローダ・モジュールは、コンパイラによって生成されたオブジェクト・コード内の一意識別オブジェクトを識別する（ステップ７１２）。次に、リンカ／ローダ・モジュールは、一意識別オブジェクトに追加的なＩＤを更に付加することによって一意識別オブジェクトを一意に識別する（ステップ７１４）。次に、リンカ／ローダ・モジュールは、オブジェクト・コード及びオブジェクトを単一の実行可能プログラムにアセンブルしてメモリに記憶する（ステップ７１６）。
【００３８】
次に、処理ユニットは、実行可能プログラムを実行する（ステップ７１８）。処理ユニットが実行可能プログラムを実行すると、図２のプログラマブル・オブジェクト・プリフェッチ／識別モジュール２２０のようなプログラマブル・オブジェクト・プリフェッチ／識別モジュールは、実行中のプログラム内に現れる一意識別オブジェクトを識別していく（ステップ７２０）。次に、プログラマブル・オブジェクト・プリフェッチ／識別モジュールは、図２のオブジェクト・テーブル２２２のようなオブジェクト・テーブルを参照する（ステップ７２２）。プログラマブル・オブジェクト・プリフェッチ／識別モジュールは、別のオブジェクトを参照する一意識別オブジェクトがオブジェクト・テーブル内で参照されるかどうかを判定する（ステップ７２４）。
【００３９】
ステップ７２４で別のオブジェクトを参照する一意識別オブジェクトがオブジェクト・テーブル内で参照されない場合には、プログラマブル・オブジェクト・プリフェッチ／識別モジュールは、一意識別オブジェクトのオブジェクトＩＤと、一意識別オブジェクトによって参照されるすべてのオブジェクトと、各参照対象オブジェクトのアドレス位置に対応する一意識別オブジェクトのアドレス内の各オフセットとをオブジェクト・テーブルに入力する（ステップ７２６）。次に、プログラマブル・オブジェクト・プリフェッチ／識別モジュールは、参照対象オブジェクトが他のオブジェクトを参照しているかどうかを判定する（ステップ７２８）。ステップ７２８で参照対象オブジェクトが他のオブジェクトを参照している場合には、プログラマブル・オブジェクト・プリフェッチ／識別モジュールは、参照対象オブジェクトのオブジェクトＩＤと、参照対象オブジェクトによって参照されるすべてのオブジェクトと、他の各参照対象オブジェクトのアドレス位置に対応する参照対象オブジェクトのアドレス内の各オフセットとをオブジェクト・テーブルに入力し（ステップ７３０）、その後ステップ７１８に戻る。ステップ７２８でオブジェクト・テーブル内の参照対象オブジェクトが他のオブジェクトを参照していない場合には、ステップ７１８に戻る。
【００４０】
ステップ７２４に戻って、別のオブジェクトを参照する一意識別オブジェクトがオブジェクト・テーブル内に存在する場合には、プログラマブル・オブジェクト・プリフェッチ／識別モジュールは、オブジェクト・テーブル２２２内で識別されたオフセットを使用して一意識別オブジェクトからアドレスを取得し、それによってメイン・メモリ内のオブジェクトから参照対象オブジェクトをプリフェッチし、当該プリフェッチされたオブジェクトをキャッシュに配置する（ステップ７３２）。その後ステップ７１８に戻る。
【００４１】
このように、例示的な諸実施形態は、プログラマブル・オブジェクト識別を使用してデータをプリフェッチする。プログラムが実行されたときに、前記プログラムの第１のオブジェクトのオブジェクトＩＤが取得される。データ構造のルックアップ処理が実行され、それによって前記オブジェクトＩＤが前記データ構造内に存在するかどうかが判定される。前記オブジェクトＩＤが前記データ構造内に存在することに応答して、前記オブジェクトＩＤによって参照される参照対象オブジェクトＩＤが検索される。前記参照対象オブジェクトＩＤに関連するデータがメイン・メモリから前記キャッシュ・メモリに取り出され、またはプリフェッチされる。
【００４２】
例示的な諸実施形態は全体としてハードウェアの実施形態の形をとることも、全体としてソフトウェアの実施形態の形をとることもでき、ハードウェア要素とソフトウェア要素の両方を含む実施形態とすることもできることを理解していただきたい。例示的な一実施形態において、例示的な各実施形態に係るメカニズムは、必ずしもそれだけに限定されるわけではないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含むソフトウェアで実施される。
【００４３】
更に、例示的な諸実施形態は、コンピュータ又は任意の命令実行システムによって、あるいはそれらに関連して使用されるプログラム・コードを備えるコンピュータ使用可能な又はコンピュータに読み込み可能な媒体からアクセスできる、コンピュータ・プログラム製品の形をとることもできる。本明細書では、コンピュータ使用可能な又はコンピュータに読み込み可能な媒体は、上記命令実行システム、装置、又はデバイスによって、あるいはそれらに関連して使用される上記プログラムを、収容し記憶し通信し伝搬し又は移送することができる任意の装置であってよい。
【００４４】
上記媒体は、電子系媒体、磁気系媒体、光学系媒体、電磁気系媒体、赤外線系媒体、又は半導体系媒体（あるいは装置又はデバイス）あるいは伝搬媒体であってもよい。コンピュータに読み込み可能な媒体の例としては、半導体又は固体メモリ、磁気テープ、着脱自在のコンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、固定磁気ディスク、及び光ディスクが挙げられる。光ディスクの現行例としては、コンパクト・ディスク読み取り専用メモリ（ＣＤ‐ＲＯＭ）、コンパクト・ディスク読み出し／書き込み（ＣＤ‐Ｒ／Ｗ）、及びＤＶＤが挙げられる。プログラム・コードを記憶し又は実行しあるいはその両方を行うのに適したデータ処理システムは、システム・バスを介してメモリ要素に直接又は間接的に連結される少なくとも１つのプロセッサを含む。上記メモリ要素は、上記プログラム・コードの実際の実行中に利用されるローカル・メモリ、バルク・ストレージ、及び実行中にバルク・ストレージからコードを検索しなければならない回数を少なくするために、少なくともいくつかのプログラム・コードを一時的に記憶するキャッシュ・メモリを含むことができる。
【００４５】
入力／出力、即ちＩ／Ｏデバイス（必ずしもそれだけに限定されるわけではないが、キーボード、ディスプレイ、ポインティング・デバイス等を含む）は、上記システムに直接連結することも、Ｉ／Ｏコントローラを介して連結することもできる。介在する私設ネットワーク又は公共ネットワークを通して他のデータ処理システムあるいは遠隔プリンタ又はストレージ・デバイスに、上記データ処理システムが連結できるようにするために、上記システムにネットワーク・アダプタを連結することもできる。モデム、ケーブル・モデム及びイーサネット・カードは、現時点で使用可能なタイプのネットワーク・アダプタのほんのいくつかにすぎない。
【００４６】
本発明の記載は例示及び説明のために提示しているものであって、本発明の実施形態を余すところのないものとし、又は開示の形態に限定することは、本出願人の意図するところではない。当業者には多くの修正、変更が可能なことは明白であろう。上記実施形態は、本発明の諸原理及び実際の応用例が最良の形で説明されるように、また、想定される特定の使用に適するように様々な修正が施された様々な実施形態について当業者が本発明を理解することが可能となるように選択され説明されている。
【図１】
2010524106.tif 000003
【図２】
2010524106.tif 000004
【図３】
2010524106.tif 000005
【図４】
2010524106.tif 000006
【図５】
2010524106.tif 000007
【図６】
2010524106.tif 000008
【図７】
2010524106.tif 000009
【手続補正書】
【提出日】平成21年12月3日(2009.12.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理システムにおいてデータをキャッシュ・メモリにプリフェッチする方法であって、
プログラムを実行するステップと、
前記プログラムが実行されたときに、前記プログラムの第１のオブジェクトのオブジェクトＩＤを取得するステップと、
データ構造のルックアップ処理を実行して前記オブジェクトＩＤが前記データ構造内に存在するかどうかを判定するステップと、
前記オブジェクトＩＤが前記データ構造内に存在することに応答して、前記オブジェクトＩＤによって参照される参照対象オブジェクトＩＤを検索するステップと、
前記参照対象オブジェクトＩＤに関連するデータをメイン・メモリから前記キャッシュ・メモリにプリフェッチするステップと、
を含む方法。
【請求項２】
前記オブジェクトＩＤが前記データ構造内で発見されなかったことに応答して、前記第１のオブジェクトが第２のオブジェクトを参照しているかどうかを判定するステップと、
前記第１のオブジェクトが前記第２のオブジェクトを参照していることに応答して、前記データ構造に第１のオブジェクト情報が含まれるように入力するステップと、
を更に含む、請求項１に記載の方法。
【請求項３】
前記第２のオブジェクトが第３のオブジェクトを参照しているかどうかを判定するステップと、
前記第２のオブジェクトが前記第３のオブジェクトを参照していることに応答して、前記データ構造に第２のオブジェクト情報が含まれるように入力するステップと、
を更に含む、請求項２に記載の方法。
【請求項４】
前記オブジェクト情報は、前記オブジェクトＩＤ、オフセット、又は前記参照対象オブジェクトＩＤのうちの少なくとも１つを含み、前記オフセットは任意選択で、前記第２のオブジェクトのアドレスが参照される前記第１のオブジェクト内の位置を識別する、請求項２に記載の方法。
【請求項５】
前記第１のオブジェクトは、複数のオブジェクトのうちの１つであり、前記複数のオブジェクトはそれぞれ一意に識別される、請求項１乃至４のいずれかに記載の方法。
【請求項６】
リンカ／ローダ・プログラムは、前記複数の各オブジェクトを一意に識別し、任意選択で前記複数の各オブジェクトに追加的なＩＤを付加することによって前記複数の各オブジェクトを一意に識別する、請求項５に記載の方法。
【請求項７】
データ処理システム内で実行されたときに前記データ処理システムに  、
前記プログラムが実行されたときに、前記プログラムの第１のオブジェクトのオブジェクトＩＤを取得させ、
データ構造のルックアップ処理を実行して前記オブジェクトＩＤが前記データ構造内に存在するかどうかを判定させ、
前記オブジェクトＩＤが前記データ構造内に存在することに応答して、前記オブジェクトＩＤによって参照される参照対象オブジェクトＩＤを検索させ、
前記参照対象オブジェクトＩＤに関連するデータをメイン・メモリから前記メモリにプリフェッチさせる、
コンピュータ・プログラム。
【請求項８】
プロセッサと、
前記プロセッサと結合されたメモリと、
を備えるシステムであって、前記メモリは、それらが前記プロセッサによって実行されたときに前記プロセッサに
プログラムを実行させ、
前記プログラムが実行されたときに、前記プログラムの第１のオブジェクトのオブジェクトＩＤを取得させ、
データ構造のルックアップ処理を実行して前記オブジェクトＩＤが前記データ構造内に存在するかどうかを判定させ、
前記オブジェクトＩＤが前記データ構造内に存在することに応答して、前記オブジェクトＩＤによって参照される参照対象オブジェクトＩＤを検索させ、
前記参照対象オブジェクトＩＤに関連するデータをメイン・メモリから前記キャッシュ・メモリにプリフェッチさせる
命令を備える、システム。
【請求項９】
前記命令は更に、前記プロセッサに
前記オブジェクトＩＤが前記データ構造内で発見されなかったことに応答して、前記第１のオブジェクトが第２のオブジェクトを参照しているかどうかを判定させ、
前記第１のオブジェクトが前記第２のオブジェクトを参照していることに応答して、前記データ構造に第１のオブジェクト情報が含まれるように入力させる、
請求項８に記載のシステム。
【請求項１０】
前記命令は更に、前記プロセッサに
前記第２のオブジェクトが第３のオブジェクトを参照しているかどうかを判定させ、
前記第２のオブジェクトが前記第３のオブジェクトを参照していることに応答して、前記データ構造に第２のオブジェクト情報が含まれるように入力させる、
請求項９に記載のシステム。
【請求項１１】
前記オブジェクト情報は、前記オブジェクトＩＤ、オフセット、又は前記参照対象オブジェクトＩＤのうちの少なくとも１つを含み、前記オフセットは、前記第２のオブジェクトのアドレスが参照される前記第１のオブジェクト内の位置を識別する、請求項９に記載のシステム。
【国際調査報告】
2010524106.tif 000010
2010524106.tif 000011