(57)【特許請求の範囲】
【請求項１】
プロセッサがオペランドをレジスタバンクに割り当てる方法であって、
前記プロセッサが、
前記オペランドの全ての発生を特定し、
前記オペランドの各発生を参照する複数のノードと、各発生の定義ｄが命令ｕに使用されることを示す定義使用（ｄ→ｕ）を表わすエッジとを有する定義使用グラフを構築し、
最後尾が入力／出力定義であり、かつ先頭部が入力／出力定義使用であるという条件、最後尾が入力／出力定義であり、かつ先頭部に先行する部分が算術論理部使用であるという条件、あるいは先頭部が入力／出力使用であり、かつ最後部に後続する部分が算術論理部定義であるという条件のうちのいずれかの条件を満たす前記定義使用グラフ内の全てのエッジを抵触エッジとして特定し、
前記抵触エッジに対応するノードの生存区間を抵触しない最小単位に、最小カットアルゴリズムに基づき分割し、
ノードの生存区間が分割された定義使用グラフに基づき、前記オペランドをレジスタバンクに割り当てる、
方法。
【請求項２】
なんら抵触が存在しない場合グラフカラーリングを使用して前記オペランドをレジスタバンクに割り当てる、請求項１に記載の方法。
【請求項３】
オペランドを記憶するための複数のレジスタバンクと、
オペランドの全ての発生を特定する工程、前記オペランドの各発生を参照する複数のノードと、各発生の定義ｄが命令ｕに使用されることを示す定義使用（ｄ→ｕ）を表わすエッジとを有する定義使用グラフを構築する工程、最後尾が入力／出力定義であり、かつ先頭部が入力／出力定義使用であるという条件、最後尾が入力／出力定義であり、かつ先頭部に先行する部分が算術論理部使用であるという条件、あるいは先頭部が入力／出力使用であり、かつ最後部に後続する部分が算術論理部定義であるという条件のうちのいずれかの条件を満たす前記定義使用グラフ内の全てのエッジを抵触エッジとして特定する工程、前記抵触エッジに対応するノードの生存区間を抵触しない最小単位に、最小カットアルゴリズムに基づき分割する工程、ノードの生存区間が分割された定義使用グラフに基づき、前記オペランドを前記複数のレジスタバンクに割り当てる工程を実行するプロセッサとを含むシステム。
【請求項４】
前記複数のレジスタバンクは仕切られたレジスタバンクを含む、請求項３に記載のシステム。
【請求項５】
仕切られたレジスタバンクは第一、第二レジスタバンク、メモリ転送レジスタバンク、あるいは次近傍レジスタバンクのうちの少なくとも一つを含む、請求項４に記載のシステム。
【請求項６】
オペランドの全ての発生を特定する工程、
前記オペランドの各発生を参照する複数のノードと、各発生の定義ｄが命令ｕに使用されることを示す定義使用（ｄ→ｕ）を表わすエッジとを有する定義使用グラフを構築する工程、
最後尾が入力／出力定義であり、かつ先頭部が入力／出力定義使用であるという条件、最後尾が入力／出力定義であり、かつ先頭部に先行する部分が算術論理部使用であるという条件、あるいは先頭部が入力／出力使用であり、かつ最後部に後続する部分が算術論理部定義であるという条件のうちのいずれかの条件を満たす前記定義使用グラフ内の全てのエッジを抵触エッジとして特定する工程、
前記抵触エッジに対応するノードの生存区間を抵触しない最小単位に、最小カットアルゴリズムに基づき分割する工程、
ノードの生存区間が分割された定義使用グラフに基づき、前記オペランドをレジスタバンクに割り当てる工程
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
汎用目的のマイクロプロセッサにおいてレジスタは、整数レジスタバンクおよび浮動小数点レジスタバンクなどのレジスタバンク（あるいはファイル）に隔てられている。異なるバンクのレジスタはサイズ、形式の点で異なる可能性があり、レジスタバンク間に直接データ経路は存在しない場合がある。レジスタ割り当て（ＲＡ）は現代の最適コンパイラにおいて重要な役割を果たすことができる。ＲＡの任務は記号レジスタを物理レジスタにマップすることである場合がある。一般的にいうと、一つの命令中の供給先あるいは供給元オペランドのレジスタバンクは該命令のオペコードにより決定される場合がある。従って、ＲＡは単に記号レジスタを各物理レジスタバンクに別個に付与することがある。
【０００２】
ドメイン特有の、あるいは埋込プロセッサは高度に仕切られたレジスタバンクを持つことがある。これらレジスタバンクへの割り当ての目的で、コンパイラはレジスタバンクと記号レジスタのための該バンクの物理レジスタとを選択する義務が課せられていることがある。しかし、これらプロセッサには、レジスタバンク間に抵触を招くようなハードウェア制約があることがある。このような抵触は、コンパイラがレジスタバンクと記号レジスタのための該バンクの物理レジスタとを選択する前に解決が必要となることがある。
【図面の簡単な説明】
【０００３】
本発明の実施の形態の様々な例示的特徴ならびに利点が以下の、関連図面に図示される本発明のより具体的な例示的実施の形態から明らかとなろう、関連図面においては、同様の参照番号は概ね同一の、機能的に類似した、および／または、構造的に類似した要素を示す。
【０００４】
【図１】本発明の実施の形態の一例によるシステムの実施の形態の一例を図示する。
【０００５】
【図２】本発明の実施の形態の一例による方法の実施の形態の一例を図示する。
【０００６】
【図３】本発明の実施の形態の一例による表の実施の形態の一例を図示する。
【０００７】
【図４】本発明の実施の形態の一例による方法の実施の形態の一例を図示する。
【０００８】
【図５】本発明の実施の形態の一例による定義使用のグラフの実施の形態の一例を図示する。
【０００９】
【図６】本発明の実施の形態の一例による定義使用のサブグラフの実施の形態の一例を図示する。
【００１０】
【図７ａ】本発明の実施の形態の一例による有向非巡回グラフの実施の形態の一例を図示する。
【００１１】
【図７ｂ】本発明の実施の形態の一例による有向非巡回グラフの実施の形態の一例を図示する。
【００１２】
【図８】本発明の実施の形態の一例において幾つかの部材に使用できる、コンピュータおよび／または通信システムの実施の形態の一例を図示する。
【発明を実施するための最良の形態】
【００１３】
本発明の実施の形態の一例を以下に説明する。実施の形態の具体的な例を説明するが、これは単に例示目的であると理解されるべきである。関連技術分野の当業者であれば、本発明の精神および範囲から逸脱することなく、他の部材および構成を使用することが可能であることは認識されよう。
【００１４】
本発明の実施の形態の例は、仕切りのあるレジスタバンク内の物理レジスタにオペランドを付与するシステムおよび方法を提供してもよい。図１は、多数バンクレジスタアーキテクチャを持つレジスタバンクアーキテクチャ１００の一例を図示する。本発明の実施の形態の一例においては、アーキテクチャ１００は演算論理部（ＡＬＵ）１０１、オペランドレジスタ１０２ａ、１０２ｂ、汎用目的レジスタ（ＧＰＲ）バンク１０３ａ、１０３ｂ、動的ランダム・アクセス・メモリ（ＤＲＡＭ）転入レジスタバンク１０４、静的ランダム・アクセス・メモリ（ＳＲＡＭ）転入レジスタバンク１０５、次近傍（ＮＮ）レジスタバンク１０６、ＤＲＡＭ転出レジスタバンク１０７、ＳＲＡＭ転出レジスタバンク１０８、ローカルメモリ１０９、およびローカルメモリアドレス１１０ａ、１１０ｂを含んでもよい。
【００１５】
本発明の実施の形態の一例においては、ネットワークプロセッサ（不図示）が十六個の接続マイクロエンジン（ＭＥ）を持つことができる。各ＭＥは例えば、減少命令セットコンピュータ（ＲＩＳＣ）プロセッサであってもよく、十八個のハードウェアスレッドを持っていてもよい。レジスタハードウェアの複雑性を減少してハードウェアマルチスレッディングを支援するべく、各ＭＥは十七個のレジスタバンクを持っていてもよい。このようなレジスタバンクは図１に示すように、ＧＰＲ  ＡとＢバンク、ＳＲＡＭ転入・転出バンク、ＤＲＡＭ転入・転出バンク、および次近傍（ＮＮ）バンクを含んでいてもよい。
【００１６】
本発明の実施の形態の一例においては、レジスタバンクはお互い別個である必要はない。例えば、これらレジスタバンクは３２ビット幅で、値が一つのバンクから別のバンクへ送信されるよう、同じ値を表していてもよい。ＭＥ命令の一つのオペランドが、ある制約を伴ってではあるが多数のバンクに駐在していてもよい。
【００１７】
ＭＥｓの命令セットアーキテクチャ（ＩＳＡ）仕様によると、多くのＭＥの命令のオペランドが多数レジスタバンクに駐在できる。例えば、ＡＬＵ命令の供給元オペランドがＧＰＲ  ＡとＢバンク、ＳＲＡＭとＤＲＡＭ転入バンク、次近傍バンクのいずれに駐在していてもかまわない。このような実施の形態においては、二つの供給元オペランドＡ、Ｂを持つ命令タイプにとっては、二つの供給元オペランド選択規則がさらにレジスタバンクの選択に制限を加える。このような規則の一つによると、同一のバンクをＡ、Ｂオペランドの両方に使用することはできない、とされていてもよい。二つ目のこのような規則によると、ＳＲＡＭ／ＤＲＡＭ転入レジスタバンクと次近傍レジスタバンクはＡ、Ｂオペランドの両方として使用することはできない、とされていてもよい。三番目の規則によると、直近の値をＡ、Ｂオペランド両方に使用することができない、とされている。
【００１８】
例えば、ＡＬＵ加算命令「ｒ１＝ｒ２＋ｒ３」においては、ｒ２およびｒ３の両方がＧＰＲ  ＡバンクあるいはＢバンク内に駐在することはできない。
【００１９】
本発明の実施の形態の一例においては、これら制約を満たすために、異なるレジスタバンク間で値を移動させることができてもよい。従ってＭＥｓに対するレジスタ割り当て（ＲＡ）は、レジスタバンク間のデータ移動に伴うコストを最小限にしながら、バンクの付与、およびレジスタの割り当てを、上述の制約を満たすように適切に行うことができる。
【００２０】
図２は、これら制約を満たし、かつレジスタバンク間でのデータ移動に伴うコストを最小限にする、バンク付与、レジスタ割り当ての方法の一例を図示するフローチャート２００である。当業者には理解されると思われるが、ここで言及される記号レジスタ（ＴＮ）は例えば、コード生成機あるいはコンパイラが対象システム上に物理レジスタを必要とする都度要求されてもよい保管所であってもよい。
【００２１】
図２を参照すると、ブロック２０１にて、各ＴＮに対する候補バンクが特定される。本発明の実施の形態の一例においては、候補バンクはＴＮが駐在することのできるバンクのことであってもよい。ＴＮが参照される様々なプログラム点におけるバンク選択には異なる制約が設けられることから、このＴＮに対する候補バンクの一組は空であることがある。このような場合には、このＴＮはバンク抵触を持つと言われている。ブロック２０２において、これら抵触が存在しているかを判断する。抵触がない場合、ブロック２０４にて各ＴＮがレジスタに割り当てられる。もし抵触がある場合、ブロック２０３にて、各ＴＮに対するバンク抵触を解決することができる。バンク抵触が解決された後、各ＴＮは自身の、空ではない候補バンクを持つことができる。本発明の実施の形態の一例においては、その後ＴＮはＴＮセットに分類されるが、ここで特定の組のＴＮｓは同じ候補バンクを持つことができる。ブロック２０４において、各ＴＮセットに対する伝統的なイントラセットレジスタ割り当ては例えばカラーリング・スピリングタスクを使用して行うことができる。
【００２２】
図２のこれら四つのブロックを以下に詳説する。ＭＥ内の次近傍バンクは専用利用法のために、他のバンクとの微妙な相互作用なしに別個に取り扱われる（そこに書き込むと実際には次のＭＥに行く）ので、以下には詳説しない。
【００２３】
上述のように、ＴＮの候補バンクはＴＮをオペランドとして使用する命令により決定することができる。本発明の実施の形態の一例においては、ＧＰＲ  Ａバンクのための０Ｘ０１や、ＧＰＲ  Ｂバンクのための０Ｘ０２などのように、ＴＮの候補バンクを表すのにビットベクタを使用することがある。ＲＡ前の全ての命令について、その供給元・供給先オペランドの候補バンクは（ＴＮｓの特定のインスタンス）、単に命令のオペコードや種類によって設定することができる。ここで言及されるように生存区間はＴＮの定義と使用法の接続ウェブであってもよい。各生存区間は一意の名称（あるいは番号）をつけられて、ＴＮと直接対応づけられることができる。生存区間の候補バンクを算出するためには、この生存区間のＴＮの全ての発生における候補バンクの交差点を求める方法もある。求められた交差点の組はこの生存区間中のＴＮが付与可能な全てのバンクを表すことができる。
【００２４】
本発明の実施の形態の一例においては、ＴＮｓは入力／出力（Ｉ／Ｏ）読み出しあるいはＡＬＵ命令で定義され得、ＴＮｓはＩ／Ｏ書き込みあるいはＡＬＵ命令により使用され得る。図３は表３００を図示しており、ここでは図１のシステムの一例に基づき定義使用表において可能性のあるＴＮｓの使用可能法のすべてを図示している。例えば、図３が示すように、本表の右下のセルは、ＴＮがＡＬＵ操作で使用されると、該ＴＮはＧＰＲ  Ａ／Ｂ、ＳＲＡＭ／ＤＲＡＭ転入いずれのバンクに駐在していてもよい、ということを示す。定義使用表の行列を横切ると、ＴＮにおける空でない候補バンクの全ての可能性のある組み合わせは以下の通りとなろう。ＴＮはＳＲＡＭ転入にあるべきである、ＴＮはＳＲＡＭ転入あるいはＤＲＡＭ転入にあればよい、ＴＮはＳＲＡＭ転出にあるべきである、ＴＮはＤＲＡＭ転出にあるべきである、あるいはＴＮはＧＰＲ  ＡあるいはＧＰＲ  Ｂにあればよい。
【００２５】
定義使用表の行列を横切ると、ＴＮの候補バンクが空であるかもしれない場合が特定できる。例えば、セル（Ｉ／Ｏ、定義）がセル（Ｉ／Ｏ、使用）を横切ると、空の結果を生んでもよい。ここで言及されているように、空の結果は、利用可能な候補バンクがないことを示す。一般的に、空の結果を生む可能性のある抵触の種類は三つである。ここにおいては、「定義抵触」はＴＮがＩ／Ｏ読み出しとＡＬＵ操作の両方により定義されている場合に存在し得、「使用抵触」はＴＮがＩ／Ｏ書き込みとＡＬＵ操作の両方により使用されている場合に存在し得、「定義使用抵触」はＴＮがＩ／Ｏ読み出しにより定義され、Ｉ／Ｏ書き込みにより使用されている場合に存在し得る。
【００２６】
本発明の実施の形態の一例においては、バンク抵触を解決する方法としては、抵触するＴＮ（生存区間）を抵触しない最小単位に分割し、その後動きを加えるなどして、値をこれら抵触しない最小単位間で移動させるというものがある。図４はフローチャート４００を図示しており、ここでは、バンク抵触を解決するための方法の一例が図示されている。ブロック４０１において、定義使用グラフ（ＤＵＧ）が構築されてもよい。図５はＤＵＧ５００の一例を図示している。図５から分かるように、各ノード５０１はＴＮを参照する命令を表していてもよい。端部５０２ａ−５０２ｄ（ｄ→ｕ）は、命令ｄにおけるＴＮの定義は命令ｕにより使用されることを示していてもよい。当業者には理解されるであろう通り、ＤＵＧ５００内にはＴＮ１＝ＴＮ１＋１などのサイクルがあってもよい。
【００２７】
ブロック４０２においては、ＤＵＧ内の全ての抵触する転送端部の位置を特定することができる。上述の三つの抵触の種類に基づき、ＤＵＧには抵触転送端部があってもよい。本発明の実施の形態の一例においては、一つの抵触転送端部は、二つの端部が以下の条件を一以上満たすようなＤＵＧ内の端部であってもよい。１）転送端部の最後尾がＩ／Ｏ定義であり、同じ転送端部の先頭部がＩ／Ｏ使用である、２）転送端部の最後尾がＩ／Ｏ定義であり、同じ転送端部の先頭部に先行するものの一つがＡＬＵ定義である、あるいは３）転送端部の先頭部がＩ／Ｏ使用であり、同じ転送端部の最後尾に後続するものの一つがＡＬＵ使用である。ブロック４０２で、ＤＵＧの全ての端部をスキャンすることで、全ての抵触転送端部の位置を特定することができる。
【００２８】
図５の例は、ＴＮ１の候補バンクの組が空である定義使用グラフ５００を示す。図５においては、命令「ＴＮ１←ＳＲＡＭ」はＳＲＡＭからＴＮ１へ値をロードする。端部（ｂ、ｆ）は上記に列挙した第二条件を満たすので、抵触転送端部であり得、これはつまり、最後尾ｂがＩ／Ｏ定義であり、ｆに先行するｃがＡＬＵ定義であるということである。
【００２９】
ブロック４０３において、ＤＵＧを仕切ることができる。本発明の実施の形態の一例においては、ＤＵＧを仕切る方法として、全ての抵触転送端部を分割して、ｗのサブグラフＲ１、Ｒ２、・・・、Ｒｗを求めるというものがある。
【００３０】
ひとたびサブグラフを求めると、ブロック４０４で各サブグラフのＴＮを命名しなおす。図５の抵触端部（ｂ、ｆ）を分割して生成され得るサブグラフ６００、６０１を図６に図示する。図６に示すように、二つのサブグラフの各々におけるＴＮ１はＴＮｍとＴＮｎとして命名しなおされていてもよい。
【００３１】
ブロック４０５においては、各サブグラフ間に移動を加えてもよい。本発明の実施の形態の一例においては、各サブグラフ間に移動を加える方法としては以下のものがある。分割した各端部（ｄ、ｕ）について、ｄのＴＮがＴＮｍと命名しなおされ、ｕのＴＮがＴＮｎと命名しなおされたとする。当業者には理解される通り、概念上は「ＴＮｎ＝ＴＮｍ」という移動を定義使用端部に挿入する必要があるはずである。本発明の実施の形態の一例においては、ＴＮの生存区間を命令ｄと命令ｕに分けるために、（一以上の）移動を制御フローグラフ（ＣＦＧ）へ挿入してもよいことになっている。例えば、ＢＢ（ｉ）を使用して命令ｉを含む基礎ブロック（ＢＢ）を表す。挿入される移動の動的コストを最小化するため、実行頻度により重みづけされたＢＢ（ｄ）からＢＢ（ｕ）への経路の最小カットセットが、移動を配置するための最適な場所を表してもよい。ＣＦＧの重要端部とは、先頭部が多数の先行する部分を持ち、最後尾が多数の後続する部分を持つような端部のことであってもよい。ＣＦＧ内の全ての重要端部は、空の基礎ブロックをＲＡ前の各端部上に配置することで分割することもできる。最小カットセットは、ＣＦＧ内のサイクルを削除することで構築される有向非巡回グラフ（ＤＡＧ）に基づき算出されてもよい。このＤＡＧは、もしあればループの後端部を除く、ＢＢ（ｄ）からＢＢ（ｕ）までの全てのＢＢｓと端部とからなることができる。入口がＢＢ（ｄ）であり、出口がＢＢ（ｕ）であるような単一入口単一出口ＤＡＧにとっては、最小カットセットは該入口から該出口まで、最小カットセットのＢＢｓの挿入移動から算出される。
【００３２】
図７ａは上述の例のＤＡＧ７００の一例を図示する。ｂからｆの最小カットセットは｛ｄ｝でもよい。ＴＮｎ＝ＴＮｍという移動は図７ｂに示すように基礎ブロックｄに挿入することもできる。ひとたび全ての移動が挿入されたら、全てのＴＮｓ（つまり生存区間）の候補バンクが特定され、かつ空ではないことになってもよい。各ＴＮは以下の例の組のうちの一つに付与される、その組とは、Ｓ＿Ｘｆｅｒ＿Ｉｎ＿Ｓｅｔ＝｛ＴＮｓはＳＲＡＭ転入になければならない｝、ＳＤ＿Ｘｆｅｒ＿Ｉｎ＿Ｓｅｔ＝｛ＴＮｓはＳＲＡＭ転入あるいはＤＲＡＭ転入にあればよい｝、Ｓ＿Ｘｆｅｒ＿Ｏｕｔ＿Ｓｅｔ＝｛ＴＮｓはＳＲＡＭ転出になければならない｝、Ｄ＿Ｘｆｅｒ＿Ｏｕｔ＿Ｓｅｔ＝｛ＴＮｓはＤＲＡＭ転出になければならない｝、およびＧＰＲ＿Ｓｅｔ＝｛ＴＮｓはＧＲＡ  ＡあるいはＧＰＲ  Ｂにあればよい｝。
【００３３】
ブロック４０６において、イントラセットレジスタが割り当てられてもよい。本発明の実施の形態の一例においては、グラフカラーリングに基づくレジスタ割り当てを上述の各ＴＮセットに別々に使用することができる。上で列挙した二つの供給元オペランド選択規則によれば、特定の処理を以下の場合に施すこともできる。
【００３４】
例えばＲＡをＳ＿Ｘｆｅｒ＿Ｉｎ＿ＳｅｔとＳＤ＿Ｘｆｅｒ＿Ｉｎ＿Ｓｅｔとに対して行う場合、ＳＲＡＭあるいはＤＲＡＭ転入がＡ、Ｂオペランドの両方として使用できない規則を遵守する必要はない。
【００３５】
このような規則を遵守するためには、本発明の実施の形態の一例によると、記号レジスタ抵触グラフ（ＳＲＣＧ）を各ＢＢに対して構築する方法もあろう。当業者であれば理解できる通り、ＳＲＣＧはＤＵＧに似ていてもよい。しかし、ＳＲＣＧにおいては、ノードは転入組内のＴＮｓであることがある。両方が同じ命令内の供給元オペランドである場合、端部は二つのノードをつないでもよい。ＳＲＣＧ内の全ての端部はその後分割されてもよい。端部を分割するには、最高位のノード（近傍ノードが最大数）が選択されて、それを新たなＴＮへ移動させるべく移動命令が挿入される（これら新たなＴＮｓの候補バンクがその後算出され、それらが対応するＴＮセットへ配置されてもよい）。ノード使用は抵触点でこの基礎ブロック内の新たなＴＮを用いて命名しなおされる。本発明の実施の形態の一例においては、これはノードと関連端部をＳＲＣＧから削除することと同義であってもよい。この過程を全ての端部が分割されるまで継続する。その後ＲＡを適用する。
【００３６】
ＲＡをＧＰＲ＿Ｓｅｔに行う際、一つの命令の二つの供給元オペランドはＧＰＲ  ＡバンクあるいはＢバンクのいずれかに同時に駐在することができないという規則を満たす必要がある。
【００３７】
本発明の実施の形態の例示においては、ＧＰＲ＿Ｓｅｔ内のレジスタをカラーリングする別の方法があることがある。例えば、本発明の一つの実施の形態においては、ＧＰＲ＿Ｓｅｔ内のＴＮであるノードを持つＳＲＣＧを構築してもよい。当業者であれば分かるように、そのような実施の形態においては、ＲＡプログラムは、ノードを二部分に（例えばＡ、Ｂに）仕切ることで、ＳＲＣＧ２−カラーリング可能にするのと同様のことを意味する。各部分はその後それぞれＧＰＲ  ＡバンクとＧＰＲ  Ｂバンクからのレジスタを使用してカラーリングされる。グラフが２−カラーリング可能であるための必要十分条件は、該グラフがなんら奇数の長さのサイクルを持たないということである。従って、ＳＲＣＧ内の全ての奇数の長さのサイクルは、もし存在すれば分割されてもよい。この分割は上述のように移動を加えて奇数長のサイクルの端部を分割することで行うことができる。
【００３８】
図８は、本発明の実施の形態の一例におけるシステムのいくつかの部材に使用できるコンピュータおよび／または通信システムの実施の形態の一例を図示する。図８は、本発明の実施の形態の一例におけるシステムのいくつかの部材に使用できるコンピュータ８００の実施の形態の一例を図示する。コンピュータ８００は、例えば、一例としてパソコン（ＰＣ）、ワークステーション、携帯機器、電話、ハンドヘルドＰＣ，携帯情報機器（ＰＤＡ）、シン・クライアント、ファット・クライアント、ネットワーク機器、インターネットブラウザ、ページング、警報機器、テレビ、双方向テレビ、受信機、チューナ、高精細（ＨＤ）テレビ、ＨＤ受信機、ビデオオンデマンド（ＶＯＤ）システム、サーバ、あるいはその他の機器を含む、いかなるコンピュータ装置、あるいは通信装置を含んでもよいが、もちろんこれらに限らない。
【００３９】
実施の形態の一例においては、コンピュータ８００は、バス８０２に連結可能な中央演算処理装置（ＣＰＵ）あるいはプロセッサ８０４を有す。プロセッサ８０４は、例えば主メモリ８０６にバス８０２経由でアクセスすることができる。コンピュータ８００は、ネットワーク８２６にアクセスするために、ネットワークインターフェースカード（ＮＩＣ）８２２やモデム８２４などの入力／出力（Ｉ／Ｏ）サブシステムと連結されていてもよい。コンピュータ８００はさらに例えば、二次メモリ８０８に直接バス８０２経由であるいは主メモリ８０６経由で連結されていてもよい。二次メモリ８０８は、例えばディスク記憶部８１０やその他の記憶媒体を含んでいてもよい。ディスク記憶部８１０の例は、もちろんそれには限られないがハードディスクなどの磁気記憶装置、書き込み一度読み出し多数（ＷＯＲＭ）ドライブやコンパクトディスクなどの光記憶装置、あるいは磁気光装置などを含むことができる。他の二次メモリ８０８の種類は、ＣＤ−ＲＯＭやフロッピーディスケットなどのような取り外し可能な記憶媒体８１４と共に使用できる取り外し可能なディスク記憶装置８１２を含むことができる。一般的には、ディスク記憶部８１０は共通的にオペレーティングシステムとして言及されるコンピュータシステムを操作するためのアプリケーションプログラムを記憶することもできる。ディスク記憶部８１０はさらにデータベース（不図示）のドキュメントを記憶することもできる。コンピュータ８００はＩ／Ｏサブシステムとディスク記憶部８１０とバス８０２を通じて相互作用することができる。バス８０２はさらにディスプレイ８２０と出力のために連結されていてもよく、さらにキーボード８１８とマウス、その他の指示／選択装置８１６などだがそれに限られない入力装置と連結されていてもよい。
【００４０】
本明細書で図示、説明された実施の形態は、発明者が知っている本発明を作成、使用する様々な方法を当業者に対して教示することだけを意図している。本明細書中のいかなるものも本発明の範囲を限定するものとして考えられるべきものではない。提示された例は全て代表例であって非限定的である。当業者であれば、本発明を逸脱することなく本発明の上述の実施の形態を変形したり、変更を加えたりすることができることは理解されるところである。従って本発明は特に記載された以外のやり方でも実施することができる。
【図１】
0004729565.tif 000002
【図２】
0004729565.tif 000003
【図３】
0004729565.tif 000004
【図４】
0004729565.tif 000005
【図５】
0004729565.tif 000006
【図６】
0004729565.tif 000007
【図７】
0004729565.tif 000008
【図８】
0004729565.tif 000009