説明

後処理カーネルのダイナミックリンキングおよびダイナミックローディング

【課題】後処理カーネルのダイナミックリンキングおよびダイナミックローディングを提供する。
【解決手段】コンピュータシステムは、ランタイム中にリンキングされる複数のコンポーネントカーネルを生成する。当該システムは、複合カーネルKを取り出すための第1の要求を受け取ると該複合カーネルKが存在するかどうか判断する。当該システムは、複合カーネルが存在しない場合、ランタイム中に複数のコンポーネントカーネルから選択されたコンポーネントカーネルに基づいて複合カーネルKを形成する。

【発明の詳細な説明】
【背景技術】
【0001】
一般的なコンピュータシステムは、処理デバイス、メモリデバイス、インターフェースデバイスおよび入出力(I/O)デバイスを備える。ビデオ信号を処理する場合、コンピュータシステムは、フィルムモード検出、インターレースの解除、ProcAmp制御の調整、ビデオスケーリング、アルファベンディング(alpha bending)および色空間補正などの後処理機能を実行する場合がある。独立したカーネルが複数開発され、それぞれが上述した後処理機能のうち1以上の機能を含み得る。各カーネルは、入力データを読み出して結果を書き込むべく、メモリ内で専用のメモリ位置を占有し得る。しかし、異なる後処理機能同士がメモリを介してデータをやり取りすると、多くのプロセッササイクルが費やされ得る。
【図面の簡単な説明】
【0002】
本明細書において説明する発明は例として挙げるに過ぎず、添付図面によって限定されるものではない。説明の便宜上、図示した素子の寸法は必ずしも実寸に基づくものではない。例えば理解し易いように、幾つかの素子の寸法を他の素子のものに比べて相対的に強調している場合がある。さらに、対応する素子または類似の素子を指し示すべく複数の図面において参照番号を適宜繰り返し使用する。
【0003】
【図1】コンピュータシステムの実施形態を示す図である。
【0004】
【図2】図1のグラフィクスメモリコントローラハブ(GMCH)の実施形態を示す図である。
【0005】
【図3】図2のコードパッチ生成器の実施形態の動作を示す図である。
【0006】
【図4】図2のコードマネージャの実施形態の動作を示す図である。
【0007】
【図5】図2のカーネルコンポーザの実施形態の動作を示す図である。
【発明を実施するための最良の形態】
【0008】
以下では後処理カーネルのダイナミックリンキングおよびダイナミックローディングを行うシステムを説明する。以下の説明では、本発明をより深く説明することを目的として、論理実装、リソースパーティション、リソース共有もしくはリソース複写の実装、システム構成要素の種別および相互関係、論理パーティションまたは論理インテグレーションなどの具体的且つ詳細な内容を多く記載する。しかしこういった具体的且つ詳細な内容が無くとも本発明を実施できることは当業者には明らかである。また、制御構造、ゲートレベル回路および完全なソフトウェア命令列は、本発明をあいまいにするのを避けるべく、詳細な説明を省略している。当業者であれば、本明細書の記載内容に基づき、過度の実験を行うことなく適切な機能を実現することができる。
【0009】
明細書中で「一実施形態」、「実施形態」、「実施形態例」といった記載がある場合、説明されている実施形態は特別な特徴、構造または特性を有し得るが、実施形態はどれもが特別な特徴、構造または特性を必ずしも有するわけではない。また、上記の語句は必ずしも同一の実施形態を示すものではない。ある実施形態と関連付けて特別な特徴、構造または特性が説明されている場合、そういった特徴、構造または特性を他の実施形態と対応付けるのは、明確に記載されている場合もそうでない場合も、当業者の知識の範囲内で行われるものとする。
【0010】
本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの任意の組み合わせによって実施され得る。本発明の実施形態はまた、機械可読媒体に格納され、1以上のプロセッサによって読み出されて実行される命令として、実施され得る。機械可読媒体は、機械(例えば、演算デバイス)による読み出しが可能な形式で情報を格納または送る機構であればどのような機構を含むとしてもよい。
【0011】
例を挙げると、機械可読媒体は、ROM(Read Only Memory)、RAM(Random Access Memory)、磁気ディスク格納媒体、光学格納媒体、フラッシュメモリデバイス、電気的、光学的、音響的またはそれ以外の形態で伝播される信号(例えば、搬送波、赤外線信号およびデジタル信号)などを含み得る。また、ファームウェア、ソフトウェア、ルーチン、および命令は、本明細書において、特定の動作を実行するものとして記述され得る。しかし、そういった説明は単に便宜上なされるものであり、動作は実際には演算デバイス、プロセッサ、コントローラといったデバイスがファームウェア、ソフトウェア、ルーチンおよび命令を実行する結果得られるものと解釈されたい。
【0012】
図1は、コンピュータシステム100の実施形態を示す。コンピュータシステム100は、プロセッサ110、メモリ120、チップセット130、1以上のI/Oデバイス160、ビデオ・グラフィクス・アレイ(VGA)インターフェース170、およびアクセラレーテッド・グラフィクス・ポート(AGP)インターフェース180を備え得る。
【0013】
プロセッサ110は、コンピュータシステム100の様々なリソースや処理を管理し得る。プロセッサ110はまた、ソフトウェア命令を実行するとしてもよい。プロセッサ110は例えば、Intel(登録商標)社製マイクロプロセッサのPentium(登録商標)またはItanium(登録商標)ファミリーの中から選ばれた1以上のマイクロプロセッサを含み得る。プロセッサ110は、メモリ120からデータを取り出して、且つメモリ120にデータを格納するべく、チップセット130とインターフェースし得る。
【0014】
メモリ120は、データおよび命令を格納し得る。メモリ120は、DRAM(Dynamic RAM)デバイス、SDRAM(Synchronous DRAM)デバイス、DDR(Double Data Rate)、それ以外のコンピュータ用揮発性/不揮発性メモリデバイスなどの、異なる種別のメモリデバイスを1以上含むとしてもよい。
【0015】
I/Oデバイス160は、キーボード、マウス、ネットワークインターフェースデバイスなどのデバイスを含み得る。データユニットは、チップセット130とI/Oデバイス160との間で、バスを介して転送されるとしてもよい。当該バスは、PCI(Peripheral Component Interconnect)、SATA(Serial Advanced Technology Attachment)、LPC(Low Pin Count)、IDE(Integrated Device Electronics)などのインターコネクト技術を含む。
【0016】
チップセット130は、プロセッサ110、メモリ120、I/Oデバイス160、VGAインターフェース170、およびAGPインターフェース180を接続する、1以上の集積回路またはチップを含み得る。チップセット130は、インテル(登録商標)社製のチップセットファミリーのうちいずれかであってもよい。一実施形態によると、チップセット130は、メモリコントローラハブ143、グラフィクスメモリコントローラハブ(GMCH)145、およびI/Oコントローラハブ(ICH)150を含み得る。ICH150は、ICH150に接続されたI/Oデバイス160と、プロセッサ110およびメモリ120との間のインターフェースを提供し得る。例えば、ICH150は、ハードディスクドライブ、フロッピードライブ、CDドライブ、モデム、キーボード、プリンタ、マウス、エンドポイント、イーサネット(登録商標)、SCSIデバイス等をサポートし得る。MCH143はプロセッサ110とメモリ130との間のインターフェースを提供し得る。
【0017】
一実施形態によると、GMCH145はトランザクションを処理して、対応するデータを、メモリ120、ICH150、プロセッサ110、ならびにVGAインターフェース170およびAGPインターフェース180に接続されたデバイスの間で伝送するとしてもよい。一実施形態によると、GMCH145は後処理カーネルのダイナミックリンキングおよびダイナミックローディングをサポートし得る。一実施形態によると、ビデオ後処理カーネルは、フィルムモード検出、インターレースの解除、ProcAmp制御の調整、ビデオスケーリング、アルファベンディングおよび色空間補正などの後処理機能のうち2以上の後処理機能を所定の順序に沿って配置したシーケンスを含み得る。
【0018】
一例を挙げると、第1の複合カーネルK1は、フィルムモード検出、インターレース解除およびアルファベンディングなどの後処理機能をこの順序で含むとしてもよい。第2の複合カーネルK2は、フィルムモード検出、インターレース解除、ビデオスケーリングおよび色空間補正などの後処理機能をこの順序で含むとしてもよい。一実施形態によると、複合カーネルK1およびK2は、当該カーネルが呼び出される直前に形成されるとしてもよい。このため、静的に形成されたカーネルをそれぞれ格納しておく専用スペースが不要になる。一実施形態によると、コンパイル期間中に複合カーネルを形成するために必要な後処理機能が特定されるとしてもよく、ランタイム中に複合カーネルを形成するべく当該後処理機能が互いに動的にリンクされるとしてもよい。
【0019】
図2は、後処理カーネルのダイナミックリンキングおよびダイナミックローディングをサポートするGMCH145の実施形態を示す。一実施形態によると、GMCH145は、アプリケーション210、プログラミングインターフェース220、コードパッチ生成器230、ドライバ250およびグラフィクスハードウェア280を有するとしてもよい。一実施形態によると、グラフィクスハードウェア280は、ドライバ250が示す機能を実行するべく、ドライバ250とインターフェースし得る。一実施形態によると、グラフィクスハードウェア280はインテル(登録商標)社製のインテグレーテッド・グラフィクス(Integrated Graphics)コントローラ・ファミリーのいずれかを含み得る。
【0020】
一実施形態によると、アプリケーション210はマルチメディアアプリケーションを含み得る。当該マルチメディアアプリケーションを用いて、コンピュータシステム100のユーザは対話し得る。一実施形態によると、プログラミングインターフェース220は1以上のルーチンを含み得る。当該ルーチンは、基礎となるオペレーティングシステムが提供する、より低レベルのサービスと通信することを目的として、アプリケーション210によって利用されるとしてもよい。
【0021】
一実施形態によると、プログラミングインターフェース220は、アプリケーション210とコードパッチ生成器230およびドライバ250との間のプログラミングインターフェースを提供し得る。一実施形態によると、プログラミングインターフェース220は、アプリケーション210から受け取った入力値に基づいてドライバ250に対して後処理機能要求を提供するとしてもよい。一実施形態によると、プログラミングインターフェース220はマイクロソフト(登録商標)社のDxVA(Direct X video acceleration)プログラミングインターフェースを含み得る。
【0022】
一実施形態によると、コードパッチ生成器230は、ランタイム中のダイナミックリンキングを円滑化する予備コードパッチと共に、各コンポーネントカーネルを静的にバイナリへとコンパイルし得る。当該バイナリと予備コードパッチは、ドライバ250のセットアップタイム中に、ドライバ250のカーネルコンポーザ258へとロードされ得る。一実施形態によると、コードパッチ生成器230は、第1のコンポーネントカーネルがデータの読み書きに利用するI/O領域を特定し得る。しかし、コードパッチ生成器230は、第1のコンポーネントカーネルがリンキングされる相手のコンポーネントカーネルを特定せず、そのようなコンポーネントカーネル同士のリンキングはランタイム中に行われるとしてもよい。
【0023】
ドライバ250は、アプリケーション210のような上位層をグラフィクスハードウェア280にインターフェースするとしてもよい。一実施形態によると、ドライバ250はコードマネージャ254とコードコンポーザ258を含み得る。一実施形態によると、ドライバ250はインテル(登録商標)社製のグラフィクスドライバファミリーのうちいずれかを含むとしてもよい。
【0024】
一実施形態によると、コードマネージャ254はプログラミングインターフェース220から、ある複合カーネルを取り出すための取出要求を受け取るとしてもよい。コードマネージャ254は、コードマネージャ254がサポートするデータベース内に当該複合カーネルが存在するかどうか判定し得る。コードマネージャ254は、当該カーネルがデータベース内に存在する場合、当該複合カーネルが存在することを示す信号をプログラミングインターフェース220に送るとしてもよい。コードマネージャ254は、当該複合カーネルが存在しない場合、コードコンポーザ258に当該カーネルを形成するための要求を送るとしてもよい。一実施形態によると、コードマネージャ254はさらに、当該複合カーネルを形成するために必要なコンポーネントカーネルを特定するとしてもよい。
【0025】
一実施形態によると、コードマネージャ254は、新たに形成された複合カーネル用のスペースを割り当てる要求を受け取ると、新たに形成された複合カーネルを格納するためのスペースを割り当てるとしてもよい。一実施形態によると、コードマネージャ254は新たに形成された複合カーネルを格納して、さらに、複合カーネルが形成されたことを示す信号を受け取ると、新たに形成された複合カーネルに対して一意的な識別子を割り当てるとしてもよい。一実施形態によると、コードマネージャ254はさらに、古い複合カーネルを削除することによって複合カーネル格納用のスペースを管理するとしてもよい。
【0026】
一実施形態によると、コードコンポーザ258は複合カーネルを形成するための信号を受け取るとしてもよい。コードコンポーザ258はさらに、複合カーネルを形成するために必要なコンポーネントカーネルを受け取るとしてもよい。一実施形態によると、コードコンポーザ258は、新たに形成された複合カーネルを格納するために必要なスペースを特定して、当該スペースを割り当てる要求を送るとしてもよい。
【0027】
一実施形態によると、コードコンポーザ258は、各コンポーネントカーネルに対して指定されたI/Oレジスタ領域を特定することによって、複合カーネルを形成し得る。一実施形態によると、コードコンポーザ258は、コンポーネントカーネルのバイナリファイルを取り出して割り当てられたスペースにコピーするとしてもよい。コードコンポーザ258はまた、入力レジスタ領域から入力データを読み出すことおよび出力レジスタ領域に出力を書き込むことを目的として、バイナリファイルを固定するための対応するコードパッチを利用するとしてもよい。コードコンポーザ258は、複合カーネルが形成されたことを示す信号を送るとしてもよい。
【0028】
図3は、コードパッチ生成器230の動作の実施形態を示す。ブロック310において、コードパッチ生成器230は、ランタイムにおけるリンキングを円滑化する予備コードパッチと共に、コンポーネントカーネルをコンパイルしてバイナリを生成し得る。一実施形態によると、コードパッチ生成器230は「.declare」構文を利用するGen4アセンブラを含み得る。一実施形態によると、Gen4アセンブラは「.declare」構文を用いて、先行カーネルからデータを読み出す命令および後続カーネルへデータを書き込む命令を識別する。一実施形態によると、入力領域および出力領域の「.declare」構文は以下の通りである。
【数1】

【0029】
一実施形態によると、PP_INおよびPP_OUTは、「.declare」を用いて先行カーネルが生成するデータ、および後続カーネルが読み出す出力データを書き込むための書き込みデータ領域にアクセスすることを示す。PP_INおよびPP_OUTの内容は、ランタイムまでデフォルト値に設定されるとしてもよい。ランタイム中に決定される真の値を用いて、PP_INおよびPP_OUTの内容を構成するとしてもよい。一実施形態によると、Gen4アセンブラは、予備コードパッチを生成する前にPP_INおよびPP_OUTで「.declare」を追跡し得る。
【0030】
ブロック350において、コードパッチ生成器230はバイナリおよび予備コードパッチをドライバ250にロードするとしてもよい。
【0031】
図4は、コードマネージャ254の動作の実施形態を示す。ブロック410において、コードマネージャ254は複合カーネルKを取り出すための第1の要求を受け取るとしてもよい。ブロック420において、コードマネージャ254は複合カーネルKが存在するかどうかを確認するとしてもよい。複合カーネルKが存在している場合にはブロック425へと処理を進め、複合カーネルKが存在していない場合にはブロック430へと処理を進めるとしてもよい。
【0032】
ブロック425において、コードマネージャ254は存在する複合カーネル全てについて齢値を増やすとしてもよい。このような方法を採用することによって、最近利用された複合カーネルを識別し得る。一実施形態によると、齢値がより小さい複合カーネルが最近利用された複合カーネルとなる。
【0033】
ブロック430において、コードマネージャ254はカーネルスペースを解放するかどうか決定するとしてもよい。カーネルスペースを解放する場合はブロック435へと処理を進め、カーネルスペースを開放しない場合はブロック440へと処理を進めるとしてもよい。
【0034】
ブロック435において、コードマネージャ254はしきい値よりも大きい齢値を持つ複合カーネルを削除するとしてもよい。一実施形態によると、コードマネージャ254は、複合カーネルそれぞれの齢値をしきい値と比較して、複合カーネルの齢値がしきい値よりも大きいかどうか判定するとしてもよい。
【0035】
ブロック440において、コードマネージャ254は、複合カーネルKを生成するために必要な選択コンポーネントカーネルを特定するとしてもよい。ブロック450において、コードマネージャ254は、選択コンポーネントカーネルと共に、複合カーネルKを形成するための第2の要求を送るとしてもよい。一実施形態によると、コードマネージャ254はコードコンポーザ258に対して、ブール(bool)型アレイの形式で第2の要求を送るとしてもよい。ブール型アレイの一例を挙げると、
【数2】

である。コンポーネントカーネルは、コンポーネントカーネルのブール(boolean)値が真の場合に選択され得る。
【0036】
ブロック460において、コードマネージャ254はコードコンポーザ258から第1の信号を受け取ると、複合カーネルKを格納するためのスペースを割り当てるとしてもよい。ブロック470において、コードマネージャ254は、複合カーネルKを格納するためのスペースが割り当てられたことを示す第2の信号を送るとしてもよい。
【0037】
ブロック480において、コードマネージャ254は、複合カーネルが形成されたかどうかを示す第3の信号を受け取ったかどうか確認するとしてもよい。複合カーネルKが形成されている場合には処理をブロック490に進め、複合カーネルKが形成されていない場合にはブロック480の処理を繰り返すとしてもよい。
【0038】
ブロック490において、コードマネージャ254は、複合カーネルKに対応付けられた一意的な識別子と共に、複合カーネルKをキャッシュまたは格納するとしてもよい。
【0039】
図5は、コードコンポーザ258の動作の実施形態を示す。ブロック510において、コードコンポーザ258は複合カーネルKを生成するための第1の要求を受け取るとしてもよい。ブロック520において、コードコンポーザ258は複合カーネルKを格納するために必要なスペースを決定するとしてもよい。
【0040】
ブロック530において、コードコンポーザ258は、複合カーネルK用のスペースを割り当てるための第1の信号を送るとしてもよい。ブロック540において、コードコンポーザ258は、複合カーネルKを格納するために必要なスペースが割り当てられたことを示す第2の信号を受け取った後、複合カーネルKを生成するべく選択されたコンポーネントカーネルの順序を決定するとしてもよい。
【0041】
ブロック550において、コードコンポーザ258は、選択コンポーネントカーネルが利用する入力レジスタ領域および出力レジスタ領域を決定するとしてもよい。ブロック560において、コードコンポーザ258は、選択コンポーネントカーネルのバイナリを取り出すとしてもよい。
【0042】
ブロック570において、コードコンポーザ258は、割り当てられたスペースにバイナリをコピーするとしてもよい。ブロック580において、コードコンポーザ258は、入力レジスタ領域から入力データを読み出すことと、出力レジスタ領域へ出力データを書き込むこととを目的として、バイナリを固定するコードパッチを利用するとしてもよい。
【0043】
ブロック590において、コードコンポーザ258は、複合カーネルKが形成されたことを示す第3の信号を送るとしてもよい。このような信号はコードマネージャ254へ送られるとしてもよい。
【0044】
本発明の特徴を実施形態例に基づき説明したが、上述の説明は本発明を限定するものと解釈されるべきではない。上述の実施形態例の様々な変形例および上記以外の本発明の実施形態は、当業者には明らかであり、本発明の目的および範囲に含まれると解釈されたい。

【特許請求の範囲】
【請求項1】
コードパッチ生成器において、ランタイム中にリンキングされる複数のコンポーネントカーネルを生成することと、
コードマネージャに複合カーネルが存在するかどうかを判断することと、
コードコンポーザにおいて前記複合カーネルを形成することと
を含み、
前記複合カーネルが前記コードマネージャに存在しない場合に、前記複数のコンポーネントカーネルから選択されたコンポーネントカーネルに基づいて前記複合カーネルを形成する
方法。
【請求項2】
前記複数のコンポーネントカーネルを生成することはさらに、
ランタイムにおいて先行カーネルからデータを読み出して且つ後続カーネルにデータを書き込むコードパッチを生成すると共に、前記複数のコンポーネントカーネルをコンパイルしてバイナリを生成することと、
前記バイナリおよび前記コードパッチをドライバにロードすることとを含む
請求項1に記載の方法。
【請求項3】
前記複合カーネルを形成することはさらに、
前記複合カーネルを格納するために必要なメモリを決定することと、
前記複数のコンポーネントカーネルから選択された前記コンポーネントカーネルが使用する入力レジスタ領域および出力レジスタ領域を特定することと、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用することとを含む
請求項2に記載の方法。
【請求項4】
前記複合カーネルを格納するために必要な前記メモリを決定することはさらに、
前記コードマネージャに信号を送ることと、
前記複合カーネルを形成するために必要な前記コンポーネントカーネルの順序を決定することとを含む
請求項3に記載の方法。
【請求項5】
前記複合カーネルを形成することはさらに、
前記コンポーネントカーネルの前記バイナリを取り出すことと、
前記バイナリを前記スペースにコピーすることと、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用した後に、前記複合カーネルが形成されたことを示すこととを含む
請求項3に記載の方法。
【請求項6】
前記複合カーネルが存在するかどうかを判断することはさらに、
前記複合カーネルが存在しない場合には、前記複合カーネルを形成するための要求を前記コードコンポーザに送ることを含む
請求項4に記載の方法。
【請求項7】
前記コードコンポーザが送った、前記コードマネージャに前記複合カーネルを格納するための前記メモリを割り当てさせるための前記信号を受け取ることと、
前記複合カーネルを格納するために必要な前記メモリを割り当てることと、
前記コードコンポーザが前記複合カーネルを形成した後で、前記複合カーネルと前記複合カーネルに対応付けられた一意的な識別子とを格納することと
をさらに含む、請求項5に記載の方法。
【請求項8】
ランタイム中にリンキングされる複数のコンポーネントカーネルを生成するコードパッチ生成器と、
前記コードパッチ生成器に接続され、複合カーネルがコードマネージャに存在するかどうか判定する、コードマネージャと、
前記複合カーネルを形成するべく前記コードマネージャに接続されるコードコンポーザと
を備え、
前記複合カーネルが前記コードマネージャに存在しない場合に、前記複数のコンポーネントカーネルから選択されたコンポーネントカーネルに基づいて前記複合カーネルが形成される
装置。
【請求項9】
前記コードパッチ生成器は、ランタイムにおいて先行カーネルからデータを読み出して後続カーネルにデータを書き込むコードパッチを生成すると共に、前記複数のコンポーネントカーネルをコンパイルしてバイナリを生成し、前記バイナリと前記コードパッチをドライバにロードする
請求項8に記載の装置。
【請求項10】
前記コードコンポーザは、
前記複合カーネルを格納するために必要なメモリを決定し、
前記複数のコンポーネントカーネルから選択された前記コンポーネントカーネルが使用する入力レジスタ領域および出力レジスタ領域を特定し、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用する
請求項9に記載の装置。
【請求項11】
前記コードコンポーザは、前記コードマネージャに信号を送り、前記複合カーネルを形成するために必要な前記コンポーネントカーネルの順序を決定する
請求項10に記載の装置。
【請求項12】
前記コードコンポーザは、前記コンポーネントカーネルの前記バイナリを取り出し、前記バイナリを前記スペースにコピーし、前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用した後に前記複合カーネルが形成されたことを示す
請求項10に記載の装置。
【請求項13】
前記コードマネージャは、前記複合カーネルが存在しない場合には、前記複合カーネルを形成するための要求を前記コードコンポーザに送る
請求項11に記載の装置。
【請求項14】
前記コードマネージャは、前記コードコンポーザが送った前記信号を受け取った後で前記複合カーネルを格納するために必要な前記メモリを割り当てて、前記コードコンポーザが前記複合カーネルを形成した後で前記複合カーネルと前記複合カーネルに対応付けられた一意的な識別子とを格納する
請求項12に記載の装置。
【請求項15】
複数の命令を含む機械可読媒体であって、前記複数の命令が実行されると演算デバイスは、
コードパッチ生成器において、ランタイム中にリンキングされる複数のコンポーネントカーネルを生成し、
コードマネージャに複合カーネルが存在するかどうかを判断し、
コードコンポーザにおいて前記複合カーネルを形成し、
前記複合カーネルが前記コードマネージャに存在しない場合に、前記複数のコンポーネントカーネルから選択されたコンポーネントカーネルに基づいて前記複合カーネルが形成される
機械可読媒体。
【請求項16】
前記複数のコンポーネントカーネルを生成することはさらに、
ランタイムにおいて先行カーネルからデータを読み出して後続カーネルにデータを書き込むコードパッチを生成すると共に、前記複数のコンポーネントカーネルをコンパイルしてバイナリを生成することと、
前記バイナリおよび前記コードパッチをドライバにロードすることとを含む
請求項15に記載の機械可読媒体。
【請求項17】
前記複合カーネルを形成することはさらに、
前記複合カーネルを格納するために必要なメモリを決定することと、
前記複数のコンポーネントカーネルから選択された前記コンポーネントカーネルが使用する入力レジスタ領域および出力レジスタ領域を特定することと、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用することとを含む
請求項16に記載の機械可読媒体。
【請求項18】
前記複合カーネルを格納するために必要な前記メモリを決定することはさらに、
前記コードマネージャに信号を送ることと、
前記複合カーネルを形成するために必要な前記コンポーネントカーネルの順序を決定することとを含む
請求項17に記載の機械可読媒体。
【請求項19】
前記複合カーネルを形成することはさらに、
前記コンポーネントカーネルの前記バイナリを取り出すことと、
前記バイナリを前記スペースにコピーすることと、
前記入力レジスタ領域からデータを読み出すことおよび前記出力レジスタ領域にデータを書き込むことを目的として、前記バイナリを指定するための前記コードパッチを利用した後に前記複合カーネルが形成されたことを示すこととを含む
請求項17に記載の機械可読媒体。
【請求項20】
前記コードコンポーザが送った、前記コードマネージャに前記複合カーネルを格納するための前記メモリを割り当てさせるための前記信号を受け取ることと、
前記複合カーネルを格納するために必要な前記メモリを割り当てることと、
前記コードコンポーザが前記複合カーネルを形成した後で、前記複合カーネルと前記複合カーネルに対応付けられた一意的な識別子とを格納することと
をさらに含む、請求項19に記載の機械可読媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2008−305398(P2008−305398A)
【公開日】平成20年12月18日(2008.12.18)
【国際特許分類】
【外国語出願】
【出願番号】特願2008−135731(P2008−135731)
【出願日】平成20年5月23日(2008.5.23)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.フロッピー
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】