(57)【要約】【課題】後処理カーネルのダイナミックリンキングおよびダイナミックローディングを提供する。【解決手段】コンピュータシステムは、ランタイム中にリンキングされる複数のコンポーネントカーネルを生成する。当該システムは、複合カーネルＫを取り出すための第１の要求を受け取ると該複合カーネルＫが存在するかどうか判断する。当該システムは、複合カーネルが存在しない場合、ランタイム中に複数のコンポーネントカーネルから選択されたコンポーネントカーネルに基づいて複合カーネルＫを形成する。【選択図】図１
2008305398.tif 000002
【特許請求の範囲】
【請求項１】
コードパッチ生成器において、ランタイム中にリンキングされる複数のコンポーネントカーネルを生成することと、
コードマネージャに複合カーネルが存在するかどうかを判断することと、
コードコンポーザにおいて前記複合カーネルを形成することと
を含み、
前記複合カーネルが前記コードマネージャに存在しない場合に、前記複数のコンポーネントカーネルから選択されたコンポーネントカーネルに基づいて前記複合カーネルを形成する
方法。
【請求項２】
前記複数のコンポーネントカーネルを生成することはさらに、
ランタイムにおいて先行カーネルからデータを読み出して且つ後続カーネルにデータを書き込むコードパッチを生成すると共に、前記複数のコンポーネントカーネルをコンパイルしてバイナリを生成することと、
前記バイナリおよび前記コードパッチをドライバにロードすることとを含む
請求項１に記載の方法。
【請求項３】
前記複合カーネルを形成することはさらに、
前記複合カーネルを格納するために必要なメモリを決定することと、
前記複数のコンポーネントカーネルから選択された前記コンポーネントカーネルが使用する入力レジスタ領域および出力レジスタ領域を特定することと、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用することとを含む
請求項２に記載の方法。
【請求項４】
前記複合カーネルを格納するために必要な前記メモリを決定することはさらに、
前記コードマネージャに信号を送ることと、
前記複合カーネルを形成するために必要な前記コンポーネントカーネルの順序を決定することとを含む
請求項３に記載の方法。
【請求項５】
前記複合カーネルを形成することはさらに、
前記コンポーネントカーネルの前記バイナリを取り出すことと、
前記バイナリを前記スペースにコピーすることと、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用した後に、前記複合カーネルが形成されたことを示すこととを含む
請求項３に記載の方法。
【請求項６】
前記複合カーネルが存在するかどうかを判断することはさらに、
前記複合カーネルが存在しない場合には、前記複合カーネルを形成するための要求を前記コードコンポーザに送ることを含む
請求項４に記載の方法。
【請求項７】
前記コードコンポーザが送った、前記コードマネージャに前記複合カーネルを格納するための前記メモリを割り当てさせるための前記信号を受け取ることと、
前記複合カーネルを格納するために必要な前記メモリを割り当てることと、
前記コードコンポーザが前記複合カーネルを形成した後で、前記複合カーネルと前記複合カーネルに対応付けられた一意的な識別子とを格納することと
をさらに含む、請求項５に記載の方法。
【請求項８】
ランタイム中にリンキングされる複数のコンポーネントカーネルを生成するコードパッチ生成器と、
前記コードパッチ生成器に接続され、複合カーネルがコードマネージャに存在するかどうか判定する、コードマネージャと、
前記複合カーネルを形成するべく前記コードマネージャに接続されるコードコンポーザと
を備え、
前記複合カーネルが前記コードマネージャに存在しない場合に、前記複数のコンポーネントカーネルから選択されたコンポーネントカーネルに基づいて前記複合カーネルが形成される
装置。
【請求項９】
前記コードパッチ生成器は、ランタイムにおいて先行カーネルからデータを読み出して後続カーネルにデータを書き込むコードパッチを生成すると共に、前記複数のコンポーネントカーネルをコンパイルしてバイナリを生成し、前記バイナリと前記コードパッチをドライバにロードする
請求項８に記載の装置。
【請求項１０】
前記コードコンポーザは、
前記複合カーネルを格納するために必要なメモリを決定し、
前記複数のコンポーネントカーネルから選択された前記コンポーネントカーネルが使用する入力レジスタ領域および出力レジスタ領域を特定し、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用する
請求項９に記載の装置。
【請求項１１】
前記コードコンポーザは、前記コードマネージャに信号を送り、前記複合カーネルを形成するために必要な前記コンポーネントカーネルの順序を決定する
請求項１０に記載の装置。
【請求項１２】
前記コードコンポーザは、前記コンポーネントカーネルの前記バイナリを取り出し、前記バイナリを前記スペースにコピーし、前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用した後に前記複合カーネルが形成されたことを示す
請求項１０に記載の装置。
【請求項１３】
前記コードマネージャは、前記複合カーネルが存在しない場合には、前記複合カーネルを形成するための要求を前記コードコンポーザに送る
請求項１１に記載の装置。
【請求項１４】
前記コードマネージャは、前記コードコンポーザが送った前記信号を受け取った後で前記複合カーネルを格納するために必要な前記メモリを割り当てて、前記コードコンポーザが前記複合カーネルを形成した後で前記複合カーネルと前記複合カーネルに対応付けられた一意的な識別子とを格納する
請求項１２に記載の装置。
【請求項１５】
複数の命令を含む機械可読媒体であって、前記複数の命令が実行されると演算デバイスは、
コードパッチ生成器において、ランタイム中にリンキングされる複数のコンポーネントカーネルを生成し、
コードマネージャに複合カーネルが存在するかどうかを判断し、
コードコンポーザにおいて前記複合カーネルを形成し、
前記複合カーネルが前記コードマネージャに存在しない場合に、前記複数のコンポーネントカーネルから選択されたコンポーネントカーネルに基づいて前記複合カーネルが形成される
機械可読媒体。
【請求項１６】
前記複数のコンポーネントカーネルを生成することはさらに、
ランタイムにおいて先行カーネルからデータを読み出して後続カーネルにデータを書き込むコードパッチを生成すると共に、前記複数のコンポーネントカーネルをコンパイルしてバイナリを生成することと、
前記バイナリおよび前記コードパッチをドライバにロードすることとを含む
請求項１５に記載の機械可読媒体。
【請求項１７】
前記複合カーネルを形成することはさらに、
前記複合カーネルを格納するために必要なメモリを決定することと、
前記複数のコンポーネントカーネルから選択された前記コンポーネントカーネルが使用する入力レジスタ領域および出力レジスタ領域を特定することと、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用することとを含む
請求項１６に記載の機械可読媒体。
【請求項１８】
前記複合カーネルを格納するために必要な前記メモリを決定することはさらに、
前記コードマネージャに信号を送ることと、
前記複合カーネルを形成するために必要な前記コンポーネントカーネルの順序を決定することとを含む
請求項１７に記載の機械可読媒体。
【請求項１９】
前記複合カーネルを形成することはさらに、
前記コンポーネントカーネルの前記バイナリを取り出すことと、
前記バイナリを前記スペースにコピーすることと、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用した後に前記複合カーネルが形成されたことを示すこととを含む
請求項１７に記載の機械可読媒体。
【請求項２０】
前記コードコンポーザが送った、前記コードマネージャに前記複合カーネルを格納するための前記メモリを割り当てさせるための前記信号を受け取ることと、
前記複合カーネルを格納するために必要な前記メモリを割り当てることと、
前記コードコンポーザが前記複合カーネルを形成した後で、前記複合カーネルと前記複合カーネルに対応付けられた一意的な識別子とを格納することと
をさらに含む、請求項１９に記載の機械可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
一般的なコンピュータシステムは、処理デバイス、メモリデバイス、インターフェースデバイスおよび入出力（Ｉ／Ｏ）デバイスを備える。ビデオ信号を処理する場合、コンピュータシステムは、フィルムモード検出、インターレースの解除、ＰｒｏｃＡｍｐ制御の調整、ビデオスケーリング、アルファベンディング（ａｌｐｈａ  ｂｅｎｄｉｎｇ）および色空間補正などの後処理機能を実行する場合がある。独立したカーネルが複数開発され、それぞれが上述した後処理機能のうち１以上の機能を含み得る。各カーネルは、入力データを読み出して結果を書き込むべく、メモリ内で専用のメモリ位置を占有し得る。しかし、異なる後処理機能同士がメモリを介してデータをやり取りすると、多くのプロセッササイクルが費やされ得る。
【図面の簡単な説明】
【０００２】
本明細書において説明する発明は例として挙げるに過ぎず、添付図面によって限定されるものではない。説明の便宜上、図示した素子の寸法は必ずしも実寸に基づくものではない。例えば理解し易いように、幾つかの素子の寸法を他の素子のものに比べて相対的に強調している場合がある。さらに、対応する素子または類似の素子を指し示すべく複数の図面において参照番号を適宜繰り返し使用する。
【０００３】
【図１】コンピュータシステムの実施形態を示す図である。
【０００４】
【図２】図１のグラフィクスメモリコントローラハブ（ＧＭＣＨ）の実施形態を示す図である。
【０００５】
【図３】図２のコードパッチ生成器の実施形態の動作を示す図である。
【０００６】
【図４】図２のコードマネージャの実施形態の動作を示す図である。
【０００７】
【図５】図２のカーネルコンポーザの実施形態の動作を示す図である。
【発明を実施するための最良の形態】
【０００８】
以下では後処理カーネルのダイナミックリンキングおよびダイナミックローディングを行うシステムを説明する。以下の説明では、本発明をより深く説明することを目的として、論理実装、リソースパーティション、リソース共有もしくはリソース複写の実装、システム構成要素の種別および相互関係、論理パーティションまたは論理インテグレーションなどの具体的且つ詳細な内容を多く記載する。しかしこういった具体的且つ詳細な内容が無くとも本発明を実施できることは当業者には明らかである。また、制御構造、ゲートレベル回路および完全なソフトウェア命令列は、本発明をあいまいにするのを避けるべく、詳細な説明を省略している。当業者であれば、本明細書の記載内容に基づき、過度の実験を行うことなく適切な機能を実現することができる。
【０００９】
明細書中で「一実施形態」、「実施形態」、「実施形態例」といった記載がある場合、説明されている実施形態は特別な特徴、構造または特性を有し得るが、実施形態はどれもが特別な特徴、構造または特性を必ずしも有するわけではない。また、上記の語句は必ずしも同一の実施形態を示すものではない。ある実施形態と関連付けて特別な特徴、構造または特性が説明されている場合、そういった特徴、構造または特性を他の実施形態と対応付けるのは、明確に記載されている場合もそうでない場合も、当業者の知識の範囲内で行われるものとする。
【００１０】
本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組み合わせによって実施され得る。本発明の実施形態はまた、機械可読媒体に格納され、１以上のプロセッサによって読み出されて実行される命令として、実施され得る。機械可読媒体は、機械（例えば、演算デバイス）による読み出しが可能な形式で情報を格納または送る機構であればどのような機構を含むとしてもよい。
【００１１】
例を挙げると、機械可読媒体は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク格納媒体、光学格納媒体、フラッシュメモリデバイス、電気的、光学的、音響的またはそれ以外の形態で伝播される信号（例えば、搬送波、赤外線信号およびデジタル信号）などを含み得る。また、ファームウェア、ソフトウェア、ルーチン、および命令は、本明細書において、特定の動作を実行するものとして記述され得る。しかし、そういった説明は単に便宜上なされるものであり、動作は実際には演算デバイス、プロセッサ、コントローラといったデバイスがファームウェア、ソフトウェア、ルーチンおよび命令を実行する結果得られるものと解釈されたい。
【００１２】
図１は、コンピュータシステム１００の実施形態を示す。コンピュータシステム１００は、プロセッサ１１０、メモリ１２０、チップセット１３０、１以上のＩ／Ｏデバイス１６０、ビデオ・グラフィクス・アレイ（ＶＧＡ）インターフェース１７０、およびアクセラレーテッド・グラフィクス・ポート（ＡＧＰ）インターフェース１８０を備え得る。
【００１３】
プロセッサ１１０は、コンピュータシステム１００の様々なリソースや処理を管理し得る。プロセッサ１１０はまた、ソフトウェア命令を実行するとしてもよい。プロセッサ１１０は例えば、Ｉｎｔｅｌ（登録商標）社製マイクロプロセッサのＰｅｎｔｉｕｍ（登録商標）またはＩｔａｎｉｕｍ（登録商標）ファミリーの中から選ばれた１以上のマイクロプロセッサを含み得る。プロセッサ１１０は、メモリ１２０からデータを取り出して、且つメモリ１２０にデータを格納するべく、チップセット１３０とインターフェースし得る。
【００１４】
メモリ１２０は、データおよび命令を格納し得る。メモリ１２０は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）デバイス、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）デバイス、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）、それ以外のコンピュータ用揮発性／不揮発性メモリデバイスなどの、異なる種別のメモリデバイスを１以上含むとしてもよい。
【００１５】
Ｉ／Ｏデバイス１６０は、キーボード、マウス、ネットワークインターフェースデバイスなどのデバイスを含み得る。データユニットは、チップセット１３０とＩ／Ｏデバイス１６０との間で、バスを介して転送されるとしてもよい。当該バスは、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、ＬＰＣ（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ）、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｅｖｉｃｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）などのインターコネクト技術を含む。
【００１６】
チップセット１３０は、プロセッサ１１０、メモリ１２０、Ｉ／Ｏデバイス１６０、ＶＧＡインターフェース１７０、およびＡＧＰインターフェース１８０を接続する、１以上の集積回路またはチップを含み得る。チップセット１３０は、インテル（登録商標）社製のチップセットファミリーのうちいずれかであってもよい。一実施形態によると、チップセット１３０は、メモリコントローラハブ１４３、グラフィクスメモリコントローラハブ（ＧＭＣＨ）１４５、およびＩ／Ｏコントローラハブ（ＩＣＨ）１５０を含み得る。ＩＣＨ１５０は、ＩＣＨ１５０に接続されたＩ／Ｏデバイス１６０と、プロセッサ１１０およびメモリ１２０との間のインターフェースを提供し得る。例えば、ＩＣＨ１５０は、ハードディスクドライブ、フロッピードライブ、ＣＤドライブ、モデム、キーボード、プリンタ、マウス、エンドポイント、イーサネット（登録商標）、ＳＣＳＩデバイス等をサポートし得る。ＭＣＨ１４３はプロセッサ１１０とメモリ１３０との間のインターフェースを提供し得る。
【００１７】
一実施形態によると、ＧＭＣＨ１４５はトランザクションを処理して、対応するデータを、メモリ１２０、ＩＣＨ１５０、プロセッサ１１０、ならびにＶＧＡインターフェース１７０およびＡＧＰインターフェース１８０に接続されたデバイスの間で伝送するとしてもよい。一実施形態によると、ＧＭＣＨ１４５は後処理カーネルのダイナミックリンキングおよびダイナミックローディングをサポートし得る。一実施形態によると、ビデオ後処理カーネルは、フィルムモード検出、インターレースの解除、ＰｒｏｃＡｍｐ制御の調整、ビデオスケーリング、アルファベンディングおよび色空間補正などの後処理機能のうち２以上の後処理機能を所定の順序に沿って配置したシーケンスを含み得る。
【００１８】
一例を挙げると、第１の複合カーネルＫ１は、フィルムモード検出、インターレース解除およびアルファベンディングなどの後処理機能をこの順序で含むとしてもよい。第２の複合カーネルＫ２は、フィルムモード検出、インターレース解除、ビデオスケーリングおよび色空間補正などの後処理機能をこの順序で含むとしてもよい。一実施形態によると、複合カーネルＫ１およびＫ２は、当該カーネルが呼び出される直前に形成されるとしてもよい。このため、静的に形成されたカーネルをそれぞれ格納しておく専用スペースが不要になる。一実施形態によると、コンパイル期間中に複合カーネルを形成するために必要な後処理機能が特定されるとしてもよく、ランタイム中に複合カーネルを形成するべく当該後処理機能が互いに動的にリンクされるとしてもよい。
【００１９】
図２は、後処理カーネルのダイナミックリンキングおよびダイナミックローディングをサポートするＧＭＣＨ１４５の実施形態を示す。一実施形態によると、ＧＭＣＨ１４５は、アプリケーション２１０、プログラミングインターフェース２２０、コードパッチ生成器２３０、ドライバ２５０およびグラフィクスハードウェア２８０を有するとしてもよい。一実施形態によると、グラフィクスハードウェア２８０は、ドライバ２５０が示す機能を実行するべく、ドライバ２５０とインターフェースし得る。一実施形態によると、グラフィクスハードウェア２８０はインテル（登録商標）社製のインテグレーテッド・グラフィクス（Ｉｎｔｅｇｒａｔｅｄ  Ｇｒａｐｈｉｃｓ）コントローラ・ファミリーのいずれかを含み得る。
【００２０】
一実施形態によると、アプリケーション２１０はマルチメディアアプリケーションを含み得る。当該マルチメディアアプリケーションを用いて、コンピュータシステム１００のユーザは対話し得る。一実施形態によると、プログラミングインターフェース２２０は１以上のルーチンを含み得る。当該ルーチンは、基礎となるオペレーティングシステムが提供する、より低レベルのサービスと通信することを目的として、アプリケーション２１０によって利用されるとしてもよい。
【００２１】
一実施形態によると、プログラミングインターフェース２２０は、アプリケーション２１０とコードパッチ生成器２３０およびドライバ２５０との間のプログラミングインターフェースを提供し得る。一実施形態によると、プログラミングインターフェース２２０は、アプリケーション２１０から受け取った入力値に基づいてドライバ２５０に対して後処理機能要求を提供するとしてもよい。一実施形態によると、プログラミングインターフェース２２０はマイクロソフト（登録商標）社のＤｘＶＡ（Ｄｉｒｅｃｔ  Ｘ  ｖｉｄｅｏ  ａｃｃｅｌｅｒａｔｉｏｎ）プログラミングインターフェースを含み得る。
【００２２】
一実施形態によると、コードパッチ生成器２３０は、ランタイム中のダイナミックリンキングを円滑化する予備コードパッチと共に、各コンポーネントカーネルを静的にバイナリへとコンパイルし得る。当該バイナリと予備コードパッチは、ドライバ２５０のセットアップタイム中に、ドライバ２５０のカーネルコンポーザ２５８へとロードされ得る。一実施形態によると、コードパッチ生成器２３０は、第１のコンポーネントカーネルがデータの読み書きに利用するＩ／Ｏ領域を特定し得る。しかし、コードパッチ生成器２３０は、第１のコンポーネントカーネルがリンキングされる相手のコンポーネントカーネルを特定せず、そのようなコンポーネントカーネル同士のリンキングはランタイム中に行われるとしてもよい。
【００２３】
ドライバ２５０は、アプリケーション２１０のような上位層をグラフィクスハードウェア２８０にインターフェースするとしてもよい。一実施形態によると、ドライバ２５０はコードマネージャ２５４とコードコンポーザ２５８を含み得る。一実施形態によると、ドライバ２５０はインテル（登録商標）社製のグラフィクスドライバファミリーのうちいずれかを含むとしてもよい。
【００２４】
一実施形態によると、コードマネージャ２５４はプログラミングインターフェース２２０から、ある複合カーネルを取り出すための取出要求を受け取るとしてもよい。コードマネージャ２５４は、コードマネージャ２５４がサポートするデータベース内に当該複合カーネルが存在するかどうか判定し得る。コードマネージャ２５４は、当該カーネルがデータベース内に存在する場合、当該複合カーネルが存在することを示す信号をプログラミングインターフェース２２０に送るとしてもよい。コードマネージャ２５４は、当該複合カーネルが存在しない場合、コードコンポーザ２５８に当該カーネルを形成するための要求を送るとしてもよい。一実施形態によると、コードマネージャ２５４はさらに、当該複合カーネルを形成するために必要なコンポーネントカーネルを特定するとしてもよい。
【００２５】
一実施形態によると、コードマネージャ２５４は、新たに形成された複合カーネル用のスペースを割り当てる要求を受け取ると、新たに形成された複合カーネルを格納するためのスペースを割り当てるとしてもよい。一実施形態によると、コードマネージャ２５４は新たに形成された複合カーネルを格納して、さらに、複合カーネルが形成されたことを示す信号を受け取ると、新たに形成された複合カーネルに対して一意的な識別子を割り当てるとしてもよい。一実施形態によると、コードマネージャ２５４はさらに、古い複合カーネルを削除することによって複合カーネル格納用のスペースを管理するとしてもよい。
【００２６】
一実施形態によると、コードコンポーザ２５８は複合カーネルを形成するための信号を受け取るとしてもよい。コードコンポーザ２５８はさらに、複合カーネルを形成するために必要なコンポーネントカーネルを受け取るとしてもよい。一実施形態によると、コードコンポーザ２５８は、新たに形成された複合カーネルを格納するために必要なスペースを特定して、当該スペースを割り当てる要求を送るとしてもよい。
【００２７】
一実施形態によると、コードコンポーザ２５８は、各コンポーネントカーネルに対して指定されたＩ／Ｏレジスタ領域を特定することによって、複合カーネルを形成し得る。一実施形態によると、コードコンポーザ２５８は、コンポーネントカーネルのバイナリファイルを取り出して割り当てられたスペースにコピーするとしてもよい。コードコンポーザ２５８はまた、入力レジスタ領域から入力データを読み出すことおよび出力レジスタ領域に出力を書き込むことを目的として、バイナリファイルを固定するための対応するコードパッチを利用するとしてもよい。コードコンポーザ２５８は、複合カーネルが形成されたことを示す信号を送るとしてもよい。
【００２８】
図３は、コードパッチ生成器２３０の動作の実施形態を示す。ブロック３１０において、コードパッチ生成器２３０は、ランタイムにおけるリンキングを円滑化する予備コードパッチと共に、コンポーネントカーネルをコンパイルしてバイナリを生成し得る。一実施形態によると、コードパッチ生成器２３０は「．ｄｅｃｌａｒｅ」構文を利用するＧｅｎ４アセンブラを含み得る。一実施形態によると、Ｇｅｎ４アセンブラは「．ｄｅｃｌａｒｅ」構文を用いて、先行カーネルからデータを読み出す命令および後続カーネルへデータを書き込む命令を識別する。一実施形態によると、入力領域および出力領域の「．ｄｅｃｌａｒｅ」構文は以下の通りである。
【数１】
2008305398.tif 000003
【００２９】
一実施形態によると、ＰＰ＿ＩＮおよびＰＰ＿ＯＵＴは、「．ｄｅｃｌａｒｅ」を用いて先行カーネルが生成するデータ、および後続カーネルが読み出す出力データを書き込むための書き込みデータ領域にアクセスすることを示す。ＰＰ＿ＩＮおよびＰＰ＿ＯＵＴの内容は、ランタイムまでデフォルト値に設定されるとしてもよい。ランタイム中に決定される真の値を用いて、ＰＰ＿ＩＮおよびＰＰ＿ＯＵＴの内容を構成するとしてもよい。一実施形態によると、Ｇｅｎ４アセンブラは、予備コードパッチを生成する前にＰＰ＿ＩＮおよびＰＰ＿ＯＵＴで「．ｄｅｃｌａｒｅ」を追跡し得る。
【００３０】
ブロック３５０において、コードパッチ生成器２３０はバイナリおよび予備コードパッチをドライバ２５０にロードするとしてもよい。
【００３１】
図４は、コードマネージャ２５４の動作の実施形態を示す。ブロック４１０において、コードマネージャ２５４は複合カーネルＫを取り出すための第１の要求を受け取るとしてもよい。ブロック４２０において、コードマネージャ２５４は複合カーネルＫが存在するかどうかを確認するとしてもよい。複合カーネルＫが存在している場合にはブロック４２５へと処理を進め、複合カーネルＫが存在していない場合にはブロック４３０へと処理を進めるとしてもよい。
【００３２】
ブロック４２５において、コードマネージャ２５４は存在する複合カーネル全てについて齢値を増やすとしてもよい。このような方法を採用することによって、最近利用された複合カーネルを識別し得る。一実施形態によると、齢値がより小さい複合カーネルが最近利用された複合カーネルとなる。
【００３３】
ブロック４３０において、コードマネージャ２５４はカーネルスペースを解放するかどうか決定するとしてもよい。カーネルスペースを解放する場合はブロック４３５へと処理を進め、カーネルスペースを開放しない場合はブロック４４０へと処理を進めるとしてもよい。
【００３４】
ブロック４３５において、コードマネージャ２５４はしきい値よりも大きい齢値を持つ複合カーネルを削除するとしてもよい。一実施形態によると、コードマネージャ２５４は、複合カーネルそれぞれの齢値をしきい値と比較して、複合カーネルの齢値がしきい値よりも大きいかどうか判定するとしてもよい。
【００３５】
ブロック４４０において、コードマネージャ２５４は、複合カーネルＫを生成するために必要な選択コンポーネントカーネルを特定するとしてもよい。ブロック４５０において、コードマネージャ２５４は、選択コンポーネントカーネルと共に、複合カーネルＫを形成するための第２の要求を送るとしてもよい。一実施形態によると、コードマネージャ２５４はコードコンポーザ２５８に対して、ブール（ｂｏｏｌ）型アレイの形式で第２の要求を送るとしてもよい。ブール型アレイの一例を挙げると、
【数２】
2008305398.tif 000004
である。コンポーネントカーネルは、コンポーネントカーネルのブール（ｂｏｏｌｅａｎ）値が真の場合に選択され得る。
【００３６】
ブロック４６０において、コードマネージャ２５４はコードコンポーザ２５８から第１の信号を受け取ると、複合カーネルＫを格納するためのスペースを割り当てるとしてもよい。ブロック４７０において、コードマネージャ２５４は、複合カーネルＫを格納するためのスペースが割り当てられたことを示す第２の信号を送るとしてもよい。
【００３７】
ブロック４８０において、コードマネージャ２５４は、複合カーネルが形成されたかどうかを示す第３の信号を受け取ったかどうか確認するとしてもよい。複合カーネルＫが形成されている場合には処理をブロック４９０に進め、複合カーネルＫが形成されていない場合にはブロック４８０の処理を繰り返すとしてもよい。
【００３８】
ブロック４９０において、コードマネージャ２５４は、複合カーネルＫに対応付けられた一意的な識別子と共に、複合カーネルＫをキャッシュまたは格納するとしてもよい。
【００３９】
図５は、コードコンポーザ２５８の動作の実施形態を示す。ブロック５１０において、コードコンポーザ２５８は複合カーネルＫを生成するための第１の要求を受け取るとしてもよい。ブロック５２０において、コードコンポーザ２５８は複合カーネルＫを格納するために必要なスペースを決定するとしてもよい。
【００４０】
ブロック５３０において、コードコンポーザ２５８は、複合カーネルＫ用のスペースを割り当てるための第１の信号を送るとしてもよい。ブロック５４０において、コードコンポーザ２５８は、複合カーネルＫを格納するために必要なスペースが割り当てられたことを示す第２の信号を受け取った後、複合カーネルＫを生成するべく選択されたコンポーネントカーネルの順序を決定するとしてもよい。
【００４１】
ブロック５５０において、コードコンポーザ２５８は、選択コンポーネントカーネルが利用する入力レジスタ領域および出力レジスタ領域を決定するとしてもよい。ブロック５６０において、コードコンポーザ２５８は、選択コンポーネントカーネルのバイナリを取り出すとしてもよい。
【００４２】
ブロック５７０において、コードコンポーザ２５８は、割り当てられたスペースにバイナリをコピーするとしてもよい。ブロック５８０において、コードコンポーザ２５８は、入力レジスタ領域から入力データを読み出すことと、出力レジスタ領域へ出力データを書き込むこととを目的として、バイナリを固定するコードパッチを利用するとしてもよい。
【００４３】
ブロック５９０において、コードコンポーザ２５８は、複合カーネルＫが形成されたことを示す第３の信号を送るとしてもよい。このような信号はコードマネージャ２５４へ送られるとしてもよい。
【００４４】
本発明の特徴を実施形態例に基づき説明したが、上述の説明は本発明を限定するものと解釈されるべきではない。上述の実施形態例の様々な変形例および上記以外の本発明の実施形態は、当業者には明らかであり、本発明の目的および範囲に含まれると解釈されたい。
【図１】
2008305398.tif 000005
【図２】
2008305398.tif 000006
【図３】
2008305398.tif 000007
【図４】
2008305398.tif 000008
【図５】
2008305398.tif 000009
【外国語明細書】
2008305398.tif 000010
2008305398.tif 000011
2008305398.tif 000012
2008305398.tif 000013
2008305398.tif 000014
2008305398.tif 000015
2008305398.tif 000016
2008305398.tif 000017
2008305398.tif 000018
2008305398.tif 000019
2008305398.tif 000020
2008305398.tif 000021
2008305398.tif 000022
2008305398.tif 000023
2008305398.tif 000024
2008305398.tif 000025
2008305398.tif 000026