(57)【特許請求の範囲】
【請求項１】
キャッシュに電気的に接続されたアクセラレイテッド処理デバイスを含むシステムであって、
コントローラを備え、
前記コントローラは、
コマンドメッセージを受信することであって、前記コマンドメッセージは、前記アクセラレイテッド処理デバイスによる処理の間にアクセスされる命令を含み、前記命令は、メモリの複数の部分のうち一部に関連するデータを含む、ことと、
前記コマンドメッセージが、前記メモリのうちアクセスされる前記一部を前記キャッシュにプレローディングするためのプレローディング命令を含むか否かを判別することによって前記コマンドメッセージを解釈することであって、前記コマンドメッセージが前記プレローディング命令を含むと判別された場合に、少なくとも前記メモリの前記一部を前記キャッシュにプレローディングし、前記コマンドメッセージが前記プレローディング命令を含んでいないと判別された場合に、前記コマンドメッセージの命令をキャッシュアクセス履歴と比較し、前記コマンドメッセージと前記キャッシュアクセス履歴との比較に基づいて、少なくとも前記メモリの前記一部を前記キャッシュにプレローディングすると判別する、ことと、
（ｉ）ローカリティ参照情報および（ｉｉ）前記キャッシュのポリシー情報の少なくとも一方に基づいて、前記メモリのうちどの前記複数の部分を前記キャッシュにプレローディングするのか判別することと、
前記一部の内容に関連するデータを含むフェッチメッセージを作成することと、
前記フェッチメッセージを前記キャッシュに出力することと、
を行うように構成されている、システム。
【請求項２】
前記メモリの前記一部に関連するデータを含む前記コマンドメッセージを出力するように構成されたホストプロセッサをさらに備える、請求項１に記載のシステム。
【請求項３】
前記ポリシー情報は、
前記メモリのうちプレローディングされる前記一部がどのように前記キャッシュに記憶されるのか、及び、前記キャッシュのブロックが、（１）読み取りのみ、又は、（２）読み取りと書き込みの両方、の何れのときに書き込まれるのか、を決定し、
前記フェッチメッセージは、前記キャッシュに、前記ポリシー情報に基づいて前記データを前記メモリの一部からロードさせる、請求項１に記載のシステム。
【請求項４】
前記コマンドメッセージは、参照情報のローカリティを含む、請求項１に記載のシステム。
【請求項５】
前記ローカリティ参照情報は、前記メモリの一部の時間的ローカリティに基づいている、請求項１に記載のシステム。
【請求項６】
前記ローカリティ参照情報は、前記メモリの一部の空間的ローカリティに基づいている、請求項１に記載のシステム。
【請求項７】
キャッシュをプレローディングするための、コンピュータで実施される方法であって、
コマンドメッセージを受信することであって、前記コマンドメッセージは、前記アクセラレイテッド処理デバイスによる処理の間にアクセスされる命令を含み、前記命令は、メモリの複数の部分のうち一部に関連するデータを含む、ことと、
前記コマンドメッセージが、前記メモリのうちアクセスされる前記一部を前記キャッシュにプレローディングするためのプレローディング命令を含むか否かを判別することによって前記コマンドメッセージを解釈することであって、前記コマンドメッセージが前記プレローディング命令を含むと判別された場合に、少なくとも前記メモリの前記一部を前記キャッシュにプレローディングし、前記コマンドメッセージが前記プレローディング命令を含んでいないと判別された場合に、前記コマンドメッセージの命令をキャッシュアクセス履歴と比較し、前記コマンドメッセージと前記キャッシュアクセス履歴との比較に基づいて、少なくとも前記メモリの前記一部を前記キャッシュにプレローディングすると判別する、ことと、
（ｉ）特定されたローカリティ参照情報および（ｉｉ）特定された前記キャッシュのポリシー情報の少なくとも一方に基づいて、前記メモリのうちどの前記複数の部分を前記キャッシュにプレローディングするのか判別することと、
前記一部の内容に関連するデータを含むフェッチメッセージを作成することと、
前記フェッチメッセージを前記キャッシュに送信することと、
を含む、方法。
【請求項８】
前記ポリシー情報は、
前記メモリのうちプレローディングされる前記一部がどのように前記キャッシュに記憶されるのか、及び、前記キャッシュのブロックが、（１）読み取りのみ、又は、（２）読み取りと書き込みの両方、の何れのときに書き込まれるのか、を決定し、
前記フェッチメッセージは、前記キャッシュに、前記メモリの一部からデータをロードさせる、請求項７に記載の方法。
【請求項９】
前記コマンドメッセージは、前記ローカリティ参照情報を含む、請求項７に記載の方法。
【請求項１０】
前記参照情報のローカリティは、前記メモリの一部の時間的ローカリティに基づいている、請求項７に記載の方法。
【請求項１１】
前記参照情報のローカリティは、前記メモリの一部の空間的ローカリティに基づいている、請求項７に記載の方法。
【請求項１２】
前記コントローラは、前記コマンドメッセージが、メモリの各部分に対する物理アドレスを有するプレローディング命令を含むか否かを判別することによって、前記コマンドメッセージを解釈するように構成されている、請求項１に記載のシステム。
【請求項１３】
前記コントローラは、前記コマンドメッセージが、前記メモリの一部に対する仮想アドレスを有するプレローディング命令を含むか否かを判別することによって、コマンドメッセージを解釈するように構成されている、請求項１に記載のシステム。
【請求項１４】
前記コントローラは、前記メモリの一部に対する仮想アドレスを物理アドレスに変換するように構成されている、請求項１３に記載のシステム。
【請求項１５】
前記コマンドメッセージを解釈することは、前記メモリの一部に対する仮想アドレスを有するプレローディング命令を含むか否かを判別することをさらに含む、請求項７に記載の方法。
【請求項１６】
前記メモリの一部に対する仮想アドレスを物理アドレスに変換することをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記コマンドメッセージを解釈することは、前記メモリの一部に対する物理アドレスを有するプレローディング命令を含むか否かを判別することをさらに含む、請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピューティングシステムで実行される計算操作に関する。より具体的には、本発明は、コンピューティングシステムで実行されるグラフィック処理タスクに関する。
【背景技術】
【０００２】
グラフィック処理ユニット（ＧＰＵ）は、グラフィック処理タスクを行うように特別に設計された複雑な集積回路である。例えば、ＧＰＵは、ビデオゲームアプリケーション等のエンドユーザアプリケーションによって要求されるグラフィック処理タスクを実行することができる。ＧＰＵの演算能力は、対応する中央処理装置（ＣＰＵ）プラットフォームの演算能力を上回る速度で発展している。この発展は、モバイルコンピューティング市場（例えば、ノートブック、モバイルスマートフォン、タブレット等）およびそれに必要な支援サーバ／企業システムの拡大と相まって、所望のユーザ体験の特定の質を提供するために使用されている。
【０００３】
しかしながら、ＧＰＵは、従来、主にグラフィックの高速化のために利用可能な制約されたプログラミング環境で動作している。これらの制約は、ＧＰＵが、ＣＰＵほどプログラミングエコシステムが豊富でなかったという事実から生じていた。したがって、その使用は、ほとんどが、二次元（２Ｄ）および三次元（３Ｄ）のグラフィックに限定され、グラフィックおよびビデオのアプリケーションプログラミングインターフェース（ＡＰＩ）を扱うことが既に当然となっている少数の最先端のマルチメディアのアプリケーションに限定されている。
【０００４】
マルチベンダがサポートする標準ＡＰＩおよび支援ツールである、ＯｐｅｎＣＬ（登録商標）およびＤｉｒｅｃｔＣｏｍｐｕｔｅ（登録商標）の出現により、従来のアプリケーションにおけるＧＰＵの制限は、従来のグラフィックを越えて拡大されている。ＯｐｅｎＣＬ（登録商標）およびＤｉｒｅｃｔＣｏｍｐｕｔｅ（登録商標）は、将来性のある始まりではあるが、ＣＰＵとＧＰＵとの組み合わせを、大多数のプログラムタスクに対してＣＰＵと同じように流動的に使用することを可能にする環境およびエコシステムを生成するには、多くの障害が残されている。
【０００５】
一般に、エンドユーザアプリケーションとＧＰＵとの間には、ソフトウェアの複数の層が存在する。エンドユーザアプリケーションは、アプリケーションプログラミングインターフェース（ＡＰＩ）と通信する。ＡＰＩは、エンドユーザアプリケーションが、ＧＰＵに依存する形式ではなく、標準化された形式で、グラフィックデータおよびコマンドを出力することを可能にする。ＡＰＩは、ドライバと通信する。ドライバは、ＡＰＩから受信した標準的なコードを、ＧＰＵによって理解されるネイティブの形式の命令に変換する。ドライバは、典型的に、ＧＰＵの製造業者によって作られている。ＧＰＵは、次いで、ドライバからの命令を実行する。
【０００６】
標準的なＧＰＵは、レンダリングとして知られるプロセスにおいて、画像をその構成要素のより高レベルな記述から作り上げるピクセルを生成する。ＧＰＵは、典型的に、パイプラインの使用による連続的なレンダリングの概念を利用して、ピクセル、テクスチャおよび幾何学的データを処理する。これらのパイプラインは、しばしば、ラスタライザ、セットアップエンジン、カラーブレンダ、テクスチャマッピング、および、シェーダパイプまたはシェーダパイプラインで達成することができるプログラム可能ステージ等の固定機能特殊用途パイプラインの集団と称される。「シェーダ」とは、コンピュータグラフィックにおいて、主にレンダリング効果を行うためにグラフィックリソースによって使用されるソフトウェア命令のセットを指す用語である。さらに、ＧＰＵは、より高度なスループットを得るために、並列処理設計において複数のプログラム可能パイプラインを利用することもできる。複数のシェーダパイプラインは、シェーダパイプアレイと称され得る。
【０００７】
さらに、ＧＰＵは、テクスチャマッピングとして知られる概念に対応する。テクスチャマッピングは、テクスチャの近隣ピクセル、または、テクセルの色の使用を通じて、テクスチャマッピングされるピクセルのテクスチャ色を判定するために使用されるプロセスである。このプロセスは、テクスチャ平滑化またはテクスチャ補間とも称される。しかしながら、高画質のテクスチャマッピングは、高度な計算複雑性を要する。さらに、単一の（統合された）シェーダが搭載されたＧＰＵは、多くの種類のシェーダ処理に同時に対応する。したがって、高性能な汎用メモリアクセス能力に対する要望が増えている。
【０００８】
シェーダエンジンは、テクスチャ、シェーダコードおよび他の種類のデータに関して、ローカルキャッシュメモリへの高速アクセスに依存している。データとともにキャッシュをプレローディングすることにより、時間が集中的であり得る動画またはデータの主要システムメモリへのアクセスの必要がないため、ＧＰＵの操作実行時間を低減させる。これは、メモリの同一または類似の部分にアクセスし、毎回ＧＰＵが実行を開始する場合、ＧＰＵの性能の改善をもたらす。現在、ＧＰＵは、データとともにキャッシュをプレローディングする機能を提供する専用のプログラム可能コントローラを有していない。
【０００９】
新たなソフトウェアアプリケーションの高まり続ける複雑性を考えると、効率的で高品質のレンダリング、テクスチャフィルタリングおよびエラー補正を提供するＧＰＵに対する要望が高まっている。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
したがって、前述の欠点を軽減するためのシステムおよび／または方法が必要とされる。特に、実行用のメモリの関連する部分を有する、選択されたＡＰＤキャッシュの明示的および暗黙的なプレローディングを管理する専用コントローラが必要とされている。
【００１１】
ＧＰＵ、アクセラレイテッド処理ユニット（ＡＰＵ）およびグラフィック処理ユニットの汎用使用（ＧＰＧＰＵ）は、この分野では広く使用されている用語であるが、「アクセラレイテッド処理デバイス（ＡＰＤ）」という表現は、より広範な表現であると考えられる。例えば、ＡＰＤは、加速グラフィック処理タスク、データ並列タスクおよびネスト型データ並列タスクを加速させることに関連するそれらの機能および計算を加速した方式で行う、ハードウェアおよび／またはソフトウェアの任意の協働体を指す。
【課題を解決するための手段】
【００１２】
本発明の実施形態は、ある特定の状況において、キャッシュをプレローディングするための方法およびシステムを含む。本システムは、キャッシュに電気的に接続されたＡＰＤを備え、メモリの一部に関連するデータを含むコマンドメッセージを出力するように構成されたホストプロセッサと、コマンドメッセージを解釈して、（ｉ）キャッシュに関連するポリシー情報を識別することと、（ｉｉ）前記一部の位置およびサイズを判定することと、（ｉｉｉ）前記一部の内容に関連するデータを含むフェッチメッセージを作成することと、を行うように構成されたコントローラと、を備え、コントローラは、フェッチメッセージをキャッシュに出力するように構成されている。
【００１３】
本発明のさらなる実施形態は、キャッシュに電気的に接続されたＡＰＤから構成されているシステムを含み、このシステムは、（ｉ）キャッシュにメモリの一部のプレローディングを明示的に要求するデータを含むコマンドメッセージを受信することと、（ｉｉ）キャッシュに関連するポリシー情報を識別することと、（ｉｉｉ）前記一部の位置およびサイズを判定することと、（ｉｖ）前記一部の内容に関連するデータを含むフェッチメッセージを作成することと、を行うように構成されたコントローラを備え、コントローラは、フェッチメッセージをキャッシュに出力するように構成されている。
【００１４】
本発明のさらなる特徴および利点ならびに本発明の種々の実施形態の構造および操作は、添付の図面を参照して、以下に詳細に記載されている。本発明は、本明細書に記載された特定の実施形態に限定されないことに留意されたい。そのような実施形態は、例示目的のみのために本明細書に提示されている。本明細書に含まれる教示に基づき、追加的な実施形態が当業者において明白となるであろう。
【００１５】
本明細書に組み込まれ、本明細書の一部を形成する添付の図面は、本発明を例示し、さらに、説明とともに本発明の原理を説明するように機能し、当業者が本発明を実施し、利用することを可能にする。本発明の種々の実施形態は、図面を参照して以下に記載され、同様の参照番号は、全体を通じて同様の構成要素を参照して使用される。
【図面の簡単な説明】
【００１６】
【図１Ａ】本発明の実施形態による処理システムの例示的なブロック図である。
【図１Ｂ】図１Ａに例示されるＡＰＤの例示的なブロック図である。
【図２】一実施形態による、メモリの一部とともにキャッシュをプレローディングするＡＰＤの例示的なフローチャートである。
【図３】一実施形態による、メモリの一部とともにキャッシュをプレローディングするＡＰＤの別の例示的なフローチャートである。
【発明を実施するための形態】
【００１７】
本発明を、添付の図面を参照して記載する。一般に、要素が最初に現れる図面は、典型的に、対応する参照番号の左端の数字によって示されている。
【００１８】
以下の詳細な説明において、「一実施形態」、「実施形態」、「例示的な実施形態」等への言及は、記載される実施形態が、特定の特徴、構造または特性を含み得ることを示すが、全ての実施形態が、特定の特徴、構造または特性を必ずしも含むわけではない。さらに、このような語句は、必ずしも同じ実施形態を指すわけではない。さらに、特定の特徴、構造または特性が、実施形態に関連して記載される場合には、かかる特徴、構造または特性を、他の実施形態に関連して達成することは、明確に記載されているか否かにかかわらず、当業者の知識の範囲内であると考えられる。
【００１９】
「本発明の実施形態」という用語は、本発明の全ての実施形態が、提案されている特徴、利点または操作のモードを含むことを要するものではない。本発明の範囲から逸脱することなく、代替の実施形態が発明されてもよく、本発明の周知の要素は、詳細には記述されないか、または、本発明に関連する細部を曖昧にしないために割愛される場合がある。さらに、本明細書に使用される用語は、特定の実施形態を説明する目的のみであり、制限するように意図しているものではない。例えば、本明細書に使用される際、単数形の「１つの（ａ）」、「１つの（ａｎ）」および「その（ｔｈｅ）」は、文脈により別途明確に示されない限り、複数形を含むことを意図している。「備える（ｃｏｍｐｒｉｓｅｓ）」、「備えている（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｅｓ）」および／または「含んでいる（ｉｎｃｌｕｄｉｎｇ）」という用語は、本明細書で使用される際、言及される特徴、完全体、ステップ、操作、要素および／または構成要素の存在を明示するが、１つ以上の他の特徴、完全体、ステップ、操作、要素、構成要素および／またはこれらの群の存在を排除するものではない。
【００２０】
図１Ａは、ＣＰＵ１０２およびＡＰＤ１０４の２つのプロセッサを含む、統合型コンピューティングシステム１００の例示的な図である。ＣＰＵ１０２は、１つ以上の単一コアまたはマルチコアのＣＰＵを含み得る。本発明の一実施形態において、システム１００は、統合型プログラミングおよび実行環境を提供するために、ＣＰＵ１０２およびＡＰＤ１０４を組み合わせて、単一のシリコンダイまたはパッケージ上に形成されている。この環境は、ＡＰＤ１０４を、いくつかのプログラミングタスクについて、ＣＰＵ１０２と同程度またはそれと近い程度に流動的に使用することを可能にする。しかしながら、ＣＰＵ１０２およびＡＰＤ１０４が単一のシリコンダイ上に形成されることは、本発明の絶対的な要件ではない。いくつかの実施形態においては、これらを別個に形成し、同一のまたは異なる基板上に取り付けることが可能である。
【００２１】
一実施例において、システム１００は、システムメモリ１０６、オペレーティングシステム１０８および通信基盤１０９を含む。オペレーティングシステム１０８および通信基盤１０９は、以下に、より詳細に説明される。
【００２２】
システム１００は、カーネルモードドライバ（ＫＭＤ）１１０と、ソフトウェアスケジューラ（ＳＷＳ）１１２と、例えば入出力メモリ管理ユニット（ＩＯＭＭＵ）等のメモリ管理ユニット１１６とを含む。システム１００の構成要素は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの任意の組み合わせとして実装され得る。当業者であれば、システム１００が、図１Ａに示される実施形態で示されているものに加えて、または、それらとは異なる、１つ以上のソフトウェア、ハードウェアおよびファームウェア構成要素を含んでもよいことを理解するであろう。
【００２３】
一実施形態において、ＫＭＤ１１０等のドライバは、典型的に、ハードウェアが接続するコンピュータバスまたは通信サブシステムを通じて、デバイスと通信する。コールプログラムがドライバ内のルーチンを呼び出す際、ドライバは、デバイスに対してコマンドを発行する。デバイスがドライバにデータを送り返すと、ドライバは、元のコールプログラムのルーチンを呼び出す。一実施形態において、ドライバは、ハードウェア依存性であり、オペレーティングシステム固有である。これらは、通常、任意の必要な非同期時間依存性ハードウェアインターフェースに必要とされる割り込み処理を提供する。
【００２４】
デバイスドライバは、特に最新のＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）プラットフォーム上では、カーネルモード（Ｒｉｎｇ０）またはユーザモード（Ｒｉｎｇ３）で作動し得る。ユーザモードでドライバを作動させる主な利点は、下手に作られたユーザモードデバイスドライバがカーネルメモリを上書きすることによって、システムの機能を停止させるのを抑制できるため、安定性が向上することである。一方で、ユーザ／カーネル−モードの移行は、通常、相当な性能オーバーヘッドを課し、それによって、ユーザモードドライバの短い待ち時間と高いスループットに対する要件とを妨げる。カーネル空間は、システムコールの使用を通じてのみ、ユーザモジュールによってアクセスされ得る。ＵＮＩＸ（登録商標）シェルまたは他のＧＵＩに基づくアプリケーションのようなエンドユーザプログラムは、ユーザ空間の一部である。これらのアプリケーションは、カーネルがサポートする機能を通じて、ハードウェアとやりとりする。
【００２５】
ＣＰＵ１０２は、制御プロセッサ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）またはデジタル信号プロセッサ（ＤＳＰ）のうち１つ以上を含み得る（図示されない）。ＣＰＵ１０２は、例えば、オペレーティングシステム１０８、ＫＭＤ１１０、ＳＷＳ１１２およびアプリケーション１１１を含むコンピューティングシステム１００の操作を制御する制御論理を実行する。この例示的な実施形態において、ＣＰＵ１０２は、一実施形態によると、アプリケーション１１１の実行の開始および制御を、例えば、そのアプリケーションに関連する処理をＣＰＵ１０２およびＡＰＤ１０４等の他の処理リソースにわたって分散させることによって行う。
【００２６】
ＡＰＤ１０４は、とりわけ、例えば、特に並列処理に好適であり得るグラフィック操作および他の操作等の選択された機能のためのコマンドおよびプログラムを実行する。一般に、ＡＰＤ１０４は、ピクセル操作、幾何学的計算、および、画像をディスプレイにレンダリングすること等のグラフィックパイプライン操作を実行するために、頻繁に使用され得る。本発明の種々の実施形態において、ＡＰＤ１０４は、ＣＰＵ１０２から受信したコマンドまたは命令に基づいて、計算処理操作（例えば、動画操作、物理学シミュレーション、計算流体力学等のグラフィックとは関連性のない操作）を実行することができる。
【００２７】
例えば、コマンドは、典型的には、命令セットアーキテクチャ（ＩＳＡ）で定義されない特別な命令とみなされ得る。コマンドは、ディスパッチプロセッサ、コマンドプロセッサまたはネットワークコントローラ等の特別なプロセッサによって実行され得る。一方、命令は、例えば、コンピュータアーキテクチャ内のプロセッサの単一の操作とみなされ得る。一実施形態において、２つのセットのＩＳＡを使用する場合には、一部の命令は、ｘ８６プログラムの実行に用いられ、一部の命令は、ＡＰＤ計算ユニット上でのカーネルの実行に用いられる。
【００２８】
例示的な実施形態において、ＣＰＵ１０２は、選択されたコマンドをＡＰＤ１０４に伝送する。これらの選択されたコマンドは、並列実行に適切なグラフィックコマンドおよび他のコマンドを含み得る。計算処理コマンドも含み得るこれらの選択されたコマンドは、ＣＰＵ１０２から実質的に独立して実行され得る。
【００２９】
ＡＰＤ１０４は、限定されないが、１つ以上のＳＩＭＤ処理コア等のように、その独自の計算ユニット（図示されない）を含み得る。本明細書に参照される際、ＳＩＭＤは、カーネルが、独自のデータおよび共有のプログラムカウンタを有する複数の処理要素上で同時に実行される、パイプラインまたはプログラミングモデルである。全ての処理要素は、同一の命令セットを実行する。条件付き実行制御の使用により、発行されたコマンドの各々に対してワークアイテムが関与するか否かを可能にする。
【００３０】
一実施形態において、各ＡＰＤ１０４計算ユニットは、１つ以上のスカラーおよび／もしくはベクトル浮動小数点数演算ユニットならびに／または算術論理ユニット（ＡＬＵ）を含み得る。ＡＰＤ計算ユニットは、逆二乗根ユニットおよびサイン／コサインユニット等の特殊目的の処理ユニット（図示されない）を含み得る。一実施形態において、ＡＰＤ計算ユニットは、本明細書において、シェーダコア１２２と総称される。
【００３１】
１つ以上のＳＩＭＤを有することは、一般的に、ＡＰＤ１０４を、グラフィック処理において一般的なもの等のデータ並列タスクの実行に理想的に適したものにする。
【００３２】
ピクセル処理等の一部のグラフィックパイプライン操作と、他の並列計算操作とは、同じコマンドの流れまたは計算カーネルが、入力データ要素の流れまたは集団上で実行されることを必要とし得る。同じ計算カーネルのそれぞれのインスタンス作成は、そのようなデータ要素を並列に処理するために、シェーダコア１２２内の複数の計算ユニット上で同時に実行され得る。本明細書で参照される際、例えば、計算カーネルは、プログラムで宣言され、ＡＰＤ計算ユニットで実行される命令を含む関数である。この関数は、カーネル、シェーダ、シェーダプログラムまたはプログラムとも称される。
【００３３】
一つの例示的な実施形態において、各計算ユニット（例えば、ＳＩＭＤ処理コア）は、受信データを処理するために、特定のワークアイテムのそれぞれのインスタンス作成を実行し得る。ワークアイテムは、コマンドによってデバイス上に呼び出されるカーネルの並列実行の集合の１つである。ワークアイテムは、計算ユニットで実行するワークグループの一部として、１つ以上の処理要素によって実行され得る。
【００３４】
一実施形態において、ワークアイテムは、コマンドによってデバイスに呼び出されるカーネルの並列実行の集合の１つである。ワークアイテムは、計算ユニットで実行するワークグループの一部として、１つ以上の処理要素によって実行される。
【００３５】
ワークアイテムは、そのグローバルＩＤおよびローカルＩＤにより、集合内の他の実行と区別される。一実施形態において、ＳＩＭＤ上で同時に実行するワークグループのワークアイテムのサブセットは、ウェーブフロント１３６と称され得る。ウェーブフロントの幅は、計算ユニット（例えば、ＳＩＭＤ処理コア）のハードウェアの特性である。本明細書で参照される場合、１つのワークグループとは、単一の計算ユニット上で実行する関連ワークアイテムの集合である。グループ内のワークアイテムは、同じカーネルを実行し、ローカルメモリおよびワークグループバリアを共有する。
【００３６】
例示的な実施形態において、１つのワークグループからの全てのウェーブフロントは、同じＳＩＭＤ処理コア上で処理される。ウェーブフロント全体にわたる命令が１つずつ発行され、全てのワークアイテムが同じ制御フローに従う場合、各ワークアイテムは同じプログラムを実行する。ウェーブフロントは、ワープ、ベクトルまたはスレッドと称され得る。
【００３７】
実行マスクおよびワークアイテム条件付き実行制御を使用して、ウェーブフロント内で分散した制御フローを可能し、個別のワークアイテムがカーネルを通じて固有のコードパスを実際に取得することができる。ウェーブフロント開始時に完全なワークアイテムセットが利用可能でない場合には、部分実装（ｐａｒｔｉａｌｌｙ  ｐｏｐｕｌａｔｅｄ）ウェーブフロントが処理され得る。例えば、シェーダコア１２２は、所定数のウェーブフロント１３６を同時に実行することができ、各ウェーブフロント１３６は複数のワークアイテムを含む。
【００３８】
システム１００内では、ＡＰＤ１０４は、例えばグラフィックメモリ１３０などの独自のメモリを含む（ただし、メモリ１３０は、グラフィックのみの使用に限定されない）。グラフィックメモリ１３０は、ＡＰＤ１０４での計算時に使用するためのローカルメモリを提供する。シェーダコア１２２内の個別の計算ユニット（図示されない）は、それらの独自のローカルデータストア（図示されない）を有し得る。一実施形態において、ＡＰＤ１０４は、ローカルグラフィックメモリ１３０へのアクセスと、メモリ１０６へのアクセスとを含む。別の実施形態において、ＡＰＤ１０４は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）へのアクセス、または、ＡＰＤ１０４に直接取り付けられ、メモリ１０６から分離して取り付けられた他のメモリ（図示されない）へのアクセスを含み得る。
【００３９】
示される実施形態において、ＡＰＤ１０４は、１つまたは「ｎ」個のコマンドプロセッサ（ＣＰ）１２４を含む。ＣＰ１２４は、ＡＰＤ１０４内での処理を制御する。ＣＰ１２４は、実行されるコマンドをメモリ１０６内のコマンドバッファ１２５から取り出し、ＡＰＤ１０４上でそれらのコマンドの実行を調整する。
【００４０】
一実施形態において、ＣＰＵ１０２は、アプリケーション１１１に基づいて、コマンドを適切なコマンドバッファ１２５に入力する。本明細書に参照される際、アプリケーションとは、ＣＰＵおよびＡＰＤ内の計算ユニット上で実行することになるプログラム部分の組み合わせである。
【００４１】
複数のコマンドバッファ１２５は、ＡＰＤ１０４における各プロセスの実行がスケジュールされた状態で維持される。
【００４２】
ＣＰ１２４は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの組み合わせで実装され得る。一実施形態において、ＣＰ１２４は、スケジューリング論理（ｌｏｇｉｃ）を含む論理を実装するためのマイクロコードを有する縮小命令セットコンピュータ（ＲＩＳＣ）エンジンとして実装される。
【００４３】
ＡＰＤ１０４は、１つまたは「ｎ」個のディスパッチコントローラ（ＤＣ）１２６を含む。本願では、ディスパッチという用語は、１セットの計算ユニット上で１セットのワークグループのカーネルの実行を開始するためにコンテキスト状態を使用するディスパッチコントローラによって実行されるコマンドを指す。ＤＣ１２６は、シェーダコア１２２内でワークグループを開始するための論理を含む。いくつかの実施形態において、ＤＣ１２６は、ＣＰ１２４の一部として実装され得る。
【００４４】
システム１００は、ＡＰＤ１０４における実行のためのランリスト１５０からプロセスを選択するためのハードウェアスケジューラ（ＨＷＳ）１２８を含む。ＨＷＳ１２８は、ラウンドロビン方式、優先レベルを使用して、または、他のスケジューリング方針に基づいて、ランリスト１５０からプロセスを選択し得る。優先レベルは、例えば動的に判定され得る。ＨＷＳ１２８は、例えば、新たなプロセスを追加することによって、および、ランリスト１５０から現行のプロセスを削除することによって、ランリスト１５０を管理する機能を含む。ＨＷＳ１２８のランリスト管理論理は、時には、ランリストコントローラ（ＲＬＣ）と称される。
【００４５】
本発明の種々の実施形態において、ＨＷＳ１２８がランリスト１５０からプロセスの実行を開始すると、ＣＰ１２４は、対応するコマンドバッファ１２５からのコマンドの取り出しおよび実行を開始する。いくつかの場合において、ＣＰ１２４は、ＡＰＤ１０４内で実行される１つ以上のコマンドを生成することができ、これは、ＣＰＵ１０２から受信されるコマンドと一致する。一実施形態において、ＣＰ１２４は、他の構成要素とともに、ＡＰＤ１０４のリソースおよび／またはシステム１００のリソースの利用を改善または最大化する方式で、ＡＰＤ１０４上にコマンドの優先順位付けおよびスケジューリングを実装する。
【００４６】
ＡＰＤ１０４は、割り込みジェネレータ１４６へのアクセスを有してもよいし、割り込みジェネレータ１４６を含んでもよい。割り込みジェネレータ１４６は、ＡＰＤ１０４がページフォルト等の割り込みイベントを生じた場合に、オペレーティングシステム１０８に割り込むようにＡＰＤ１０４によって構成され得る。例えば、ＡＰＤ１０４は、上述のページフォルト割り込みを生成することを、ＩＯＭＭＵ１１６内の割り込み生成論理に依存し得る。
【００４７】
ＡＰＤ１０４は、シェーダコア１２２内で現在作動しているプロセスに先制するために、先制およびコンテキストスイッチ論理１２０を含み得る。コンテキストスイッチ論理１２０は、例えば、プロセスを停止させ、その現在の状態（例えば、シェーダコア１２２の状態およびＣＰ１２４の状態）を保存するための機能性を含む。
【００４８】
本明細書で参照される際、状態という用語は、初期状態、中間状態および／または最終状態を含み得る。初期状態は、マシンが、プログラミング命令に従って入力データセットを処理して、出力データセットを作成する開始点である。例えば、処理が進行することを可能にするために、複数の時点で記憶することが必要な中間状態が存在する。この中間状態は、何らかの他のプロセスによる割り込みの際に、後で実行を継続することを可能にするために記憶される場合がある。出力データセットの一部として記録され得る最終状態もまた存在する。
【００４９】
先制およびコンテキストスイッチ論理１２０は、別のプロセスをＡＰＤ１０４にコンテキストスイッチするための論理を含み得る。別のプロセスをＡＰＤ１０４上での作動にコンテキストスイッチするための機能は、例えば、ＣＰ１２４およびＤＣ１２６を通じて、ＡＰＤ１０４上で作動するプロセスのインスタンス化を行うことと、そのプロセスについて前に保存された状態を回復させることと、その実行を開始することと、を含み得る。
【００５０】
メモリ１０６は、ＤＲＡＭ（図示されない）等の非永続的メモリを含み得る。メモリ１０６は、アプリケーションまたは他の処理論理の部分の実行中に、例えば、処理論理命令、定数および変数を記憶し得る。例えば、一実施形態において、ＣＰＵ１０２上で１つ以上の操作を行う制御論理の一部は、ＣＰＵ１０２による操作のそれぞれの部分の実行中にメモリ１０６内に存在し得る。
【００５１】
実行中、それぞれのアプリケーション、オペレーティングシステムの機能、処理論理コマンドおよびシステムソフトウェアは、メモリ１０６内に存在し得る。オペレーティングシステム１０８に必須の制御論理コマンドは、通常、実行中にメモリ１０６内に存在する。例えば、カーネルモードドライバ１１０およびソフトウェアスケジューラ１１２を含む他のソフトウェアコマンドも、システム１００の実行中、メモリ１０６内に存在し得る。
【００５２】
この実施形態において、メモリ１０６は、コマンドをＡＰＤ１０４に送信するためにＣＰＵ１０２によって使用されるコマンドバッファ１２５を含む。メモリ１０６は、プロセスリストおよびプロセス情報（例えば、アクティブリスト１５２およびプロセス制御ブロック１５４）を含む。これらのリストおよび情報は、スケジューリング情報をＡＰＤ１０４および／または関連するスケジューリングハードウェアに伝達するために、ＣＰＵ１０２上で実行するスケジューリングソフトウェアによって使用される。メモリ１０６へのアクセスは、メモリ１０６に連結されているメモリコントローラ１４０によって管理され得る。例えば、メモリ１０６から読み取り、または、メモリ１０６への書き込みを行うためのＣＰＵ１０２または他のデバイスからの要求は、メモリコントローラ１４０によって管理される。
【００５３】
システム１００の他の態様に戻って参照すると、ＩＯＭＭＵ１１６は、マルチコンテキストメモリ管理ユニットである。
【００５４】
本明細書に使用される際、コンテキストは、カーネルが実行される環境、ならびに、同期およびメモリ管理が定義されるドメインとみなされ得る。コンテキストは、１セットのデバイスと、それらのデバイスにアクセス可能なメモリと、その対応するメモリ特性と、カーネルの実行またはメモリオブジェクトへの操作を計画するために使用される１つ以上のコマンドキューと、を含む。
【００５５】
図１Ａに示される実施例に戻って参照すると、ＩＯＭＭＵ１１６は、ＡＰＤ１０４を含むデバイスのメモリページアクセスのための、仮想アドレスから物理アドレスへの変換を行う論理を含む。ＩＯＭＭＵ１１６は、例えば、ＡＰＤ１０４等のデバイスによるページアクセスがページフォルトとなった場合に、割り込みを生成する論理を含んでもよい。ＩＯＭＭＵ１１６は、変換索引バッファ（ＴＬＢ）１１８を含んでもよいし、ＴＬＢ１１８へのアクセスを有し得る。ＴＬＢ１１８は、一例として、ＡＰＤ１０４によって作成されるメモリ１０６内のデータに対する要求に対して、論理（すなわち、仮想）メモリアドレスから物理メモリアドレスへの変換を加速させるための内容アドレスメモリ（ＣＡＭ）において実装され得る。
【００５６】
示される実施例において、通信基盤１０９は、必要に応じて、システム１００の構成要素を相互接続する。通信基盤１０９は、周辺構成要素相互接続（ＰＣＩ）バス、拡張ＰＣＩ（ＰＣＩ−Ｅ）バス、アドバンストマイクロコントローラバスアーキテクチャ（ＡＭＢＡ）バス、アドバンストグラフィックポート（ＡＧＰ）または他のこのような通信基盤のうち１つ以上を含み得る（図示されない）。通信基盤１０９は、イーサネット（登録商標）、同様のネットワークまたはアプリケーションのデータ変換率要件を満たす任意の好適な物理的通信基盤を含み得る。通信基盤１０９は、コンピューティングシステム１００の構成要素を含む構成要素を相互接続するための機能を含む。
【００５７】
この実施例において、オペレーティングシステム１０８は、システム１００のハードウェア構成要素を管理し、共通のサービスを提供するための機能を含む。種々の実施形態において、オペレーティングシステム１０８は、ＣＰＵ１０２上で実行し、共通のサービスを提供し得る。これらの共通のサービスは、例えば、ＣＰＵ１０２内での実行のためのスケジューリングアプリケーション、フォルト管理、割り込みサービスおよび他のアプリケーションの入出力を処理することを含み得る。
【００５８】
いくつかの実施形態において、オペレーティングシステム１０８は、割り込みコントローラ１４８等の割り込みコントローラによって生成される割り込みに基づいて、適切な割り込み処理ルーチンを呼び出す。例えば、オペレーティングシステム１０８は、ページフォルト割り込みを検出すると、割り込みハンドラを呼び出して、関連ページのメモリ１０６へのロードを開始し、対応するページテーブルを更新することができる。
【００５９】
オペレーティングシステム１０８は、ハードウェア構成要素へのアクセスがオペレーティングシステムによって管理されるカーネル機能を通じて媒介されるようにするのを確実にすることによって、システム１００を保護するための機能を含み得る。実際には、オペレーティングシステム１０８は、アプリケーション１１１等のアプリケーションが、ＣＰＵ１０２上でユーザ空間において作動することを確実にする。オペレーティングシステム１０８は、アプリケーション１１１が、ハードウェアおよび／または入出力機能にアクセスするために、オペレーティングシステムによって提供されるカーネル機能性を呼び出すことを確実にする。
【００６０】
例として、アプリケーション１１１は、ＣＰＵ１０２上でも実行されるユーザ計算を行うための様々なプログラムまたはコマンドを含む。ＣＰＵ１０２は、ＡＰＤ１０４での処理のために選択されたコマンドを、連続的に送信することができる。
【００６１】
一実施例において、ＫＭＤ１１０は、アプリケーションプログラムインターフェース（ＡＰＩ）を実装し、それを通じて、ＣＰＵ１０２、またはＣＰＵ１０２もしくは他の論理上で実行するアプリケーションが、ＡＰＤ１０４の機能を呼び出し得る。例えば、ＫＭＤ１１０は、ＣＰＵ１０２からのコマンドをコマンドバッファ１２５のキューに入れることができ、そこからＡＰＤ１０４がその後でコマンドを取り出す。さらに、ＫＭＤ１１０は、ＳＷＳ１１２とともに、ＡＰＤ１０４上で実行されるプロセスのスケジューリングを行うことができる。ＳＷＳ１１２は、例えば、ＡＰＤ上で実行されるプロセスの優先順位付けされたリストを維持するための論理を含み得る。
【００６２】
本発明の他の実施形態において、ＣＰＵ１０２上で実行するアプリケーションは、コマンドをキューに入れるときに、ＫＭＤ１１０を完全にバイパスし得る。
【００６３】
いくつかの実施形態において、ＳＷＳ１１２は、ＡＰＤ１０４上で実行されるプロセスのアクティブリスト１５２をメモリ１０６内に維持する。ＳＷＳ１１２は、ハードウェア内のＨＷＳ１２８によって管理されるアクティブリスト１５２内のプロセスのサブセットを選択する。例示的な実施形態において、プロセスのこの２レベルランリストは、プロセス管理の柔軟性を増加させ、ハードウェアが処理環境の変化に迅速に応答することを可能にする。別の実施形態において、ＡＰＤ１０４上で各プロセスを作動させることに関する情報は、プロセス制御ブロック（ＰＣＢ）１５４を通じて、ＣＰＵ１０２からＡＰＤ１０４に伝達される。
【００６４】
アプリケーション、オペレーティングシステムおよびシステムソフトウェアの処理論理は、マスクワーク／フォトマスクの生成を通じた製造プロセスを最終的に構成して、本明細書に記載される発明の態様を具現化するハードウェアデバイスを生成することを可能にするために、Ｃ等のプログラム言語および／またはＶｅｒｉｌｏｇ、ＲＴＬもしくはネットリスト等のハードウェア記述言語で指定されるコマンドを含み得る。
【００６５】
当業者であれば、本明細書を読むことにより、コンピューティングシステム１００が図１Ａに示されるものよりも多いまたは少ない構成要素を含み得ることを理解するであろう。例えば、コンピューティングシステム１００は、１つ以上の入力インターフェース、不揮発性記憶装置、１つ以上の出力インターフェース、ネットワークインターフェースおよび／または１つ以上のディスプレイもしくはディスプレイインターフェースを含み得る。
【００６６】
図１Ｂは、図１Ａに示されるＡＰＤ１０４のより詳細な図を示す実施形態である。図１Ｂにおいて、ＣＰ１２４は、ＣＰパイプライン１２４ａ，１２４ｂ，１２４ｃを含み得る。ＣＰ１２４は、図１Ａに示されるコマンドバッファ１２５からの入力として提供されるコマンドリストを処理するように構成され得る。図１Ｂの例示的な操作において、ＣＰ入力０（１２４ａ）は、コマンドをグラフィックパイプライン１６２へと進行させることを担う。ＣＰ入力１，２（１２４ｂ，１２４ｃ）は、コマンドを計算パイプライン１６０へと進める。また、ＨＷＳ１２８の操作を制御するためのコントローラ機構１６６も提供される。
【００６７】
図１Ｂにおいて、グラフィックパイプライン１６２は、本明細書では順序パイプライン（ｏｒｄｅｒｅｄ  ｐｉｐｅｌｉｎｅ）１６４と称されるブロックのセットを含み得る。例として、順序パイプライン１６４は、頂点グループ変換器（ＶＧＴ）１６４ａ、初期アセンブラ（ＰＡ）１６４ｂ、スキャンコンバータ（ＳＣ）１６４ｃおよびシェーダエクスポートレンダーバックユニット（ＳＸ／ＲＢ）１７６を含む。順序パイプライン１６４内の各ブロックは、グラフィックパイプライン１６２内で処理されるグラフィックの異なる段階を表し得る。順序パイプライン１６４は、固定関数ハードウェアパイプラインであり得る。本発明の精神および範囲内に含まれる他の実現形態が用いられてもよい。
【００６８】
少量のデータのみがグラフィックパイプライン１６２への入力として提供され得るが、このデータは、グラフィックパイプライン１６２からの出力として提供されるときまでに増幅されることになる。また、グラフィックパイプライン１６２は、ＣＰパイプライン１２４ａから受信したワークアイテムグループ内の範囲を通して計数を行うためのＤＣ１６６を含む。ＤＣ１６６を通じて提出される計算ワークは、グラフィックパイプライン１６２と準同期である。
【００６９】
計算パイプライン１６０は、シェーダＤＣ１６８，１７０を含む。ＤＣ１６８，１７０のそれぞれは、ＣＰパイプライン１２４ｂ，１２４ｃから受信されたワークグループ内の計算範囲を通して計数を行うように構成されている。
【００７０】
図１Ｂに図示されるＤＣ１６６，１６８，１７０は、入力ワークグループを受信し、ワークグループをウェーブフロントに分解し、次いで、ウェーブフロントをシェーダコア１２２に転送する。
【００７１】
グラフィックパイプライン１６２は、一般に固定関数パイプラインであるため、その状態を保存および復元することは困難であり、結果として、グラフィックパイプライン１６２は、コンテキストスイッチを行うことが困難である。したがって、ほとんどの場合において、本明細書に記載されるように、コンテキストスイッチは、グラフィック処理間のコンテキストスイッチには関連しない。シェーダコア１２２内のグラフィックワークに対しては例外であり、コンテキストスイッチが行われ得る。
【００７２】
グラフィックパイプライン１６２内でのワーク処理が完了した後、完了したワークは、奥行きおよび色の計算を行った後に、その最終結果をメモリ１３０に書き込むレンダーバックユニット１７６を通じて処理される。
【００７３】
シェーダコア１２２は、グラフィックパイプライン１６２および計算パイプライン１６０によって共有され得る。シェーダコア１２２は、ウェーブフロントを作動させるように構成される汎用プロセッサであり得る。一実施例において、計算パイプライン１６０内の全ワークは、シェーダコア１２２内で処理される。シェーダコア１２２は、プログラム可能なソフトウェアコードを作動させ、状態データ等の種々の形態のデータを含む。シェーダコア１２２は、ＲＷ  Ｌ２キャッシュ１７４に接続されている。
【００７４】
図２は、本発明の実施形態による例示的な方法２００を示すフローチャートである。方法２００は、図２の記載を通じて参照される、図１Ａおよび１Ｂのシステム１００上で動作し得る。一実施例において、方法２００は、ＡＰＤ１０４のＲＷ  Ｌ２キャッシュ１７４等のＡＰＤのキャッシュをプレローディングするために使用され得る。方法２００は、図示された順序で発生してもよいし、図示された順序で発生しなくてもよいし、全ての操作を必要としなくてもよい。
【００７５】
方法２００は、操作２０２で開始し、操作２０４へと続く。操作２０４では、コマンドメッセージがコントローラによって受信される。一実施形態によると、ホストプロセッサは、メモリの一部に関連するデータを含むコマンドメッセージを出力するように構成されている。ホストプロセッサは、例えば、ＣＰＵ１０２であり得る。コマンドメッセージは、グラフィックメモリ１３０等のメモリの一部に関連するデータを含み得る。一実施形態によると、コマンドメッセージは、ピクセル操作、幾何学的計算および画像をディスプレイにレンダリングすることに関連する、ＡＰＤによって処理される命令を含む。一般に、一連のコマンドメッセージがコントローラによって受信され得る。コントローラは、例えば、限定されないが、ＡＰＤ１０４のＣＰ１２４であり得る。当業者であれば、ＣＰ１２４以外の専用コントローラが、コマンドメッセージを受信するように構成されてもよいことを理解するであろう。
【００７６】
操作２０６において、コマンドメッセージは、例えば、コマンドプロセッサ１２４によって解釈される。上述のように、コマンドメッセージは、ＡＰＤによって行われる一連の操作または計算に関連するデータを含み得る。コマンドメッセージは、命令のリストを含み、その各命令は、ＡＰＤ１０４による命令の処理中にアクセスされることになるメモリの一部に関連するデータを含む。例えば、コマンドメッセージは、グラフィックメモリ１３０の一部に対する参照ポインタを含んでもよく、これは、画像をディスプレイにレンダリングするための処理中に使用され得るピクセルデータまたは定数を含み得る。
【００７７】
一実施形態によると、コマンドメッセージの解釈は、どのメモリの部分をキャッシュにプレローディングするかを判定することを含む。一実施形態において、プレローディングされるメモリの部分は、参照情報のローカリティ（ｌｏｃａｌｉｔｙ）に基づいて判定される。このローカリティは、ＡＰＤが、等しい確率で、そのデータの全てに一度にアクセスしないという原理に基づく。参照情報のローカリティは、メモリの一部の時間的（ｔｅｍｐｏｒａｌ）ローカリティに基づき得る。
【００７８】
例えば、コマンドメッセージが、特定のメモリの一部を参照する命令を含む場合には、同じメモリの部分が、近い将来再び参照される確率が高い。参照情報のローカリティは、例えば、空間的ローカリティに基づくものであってもよい。例えば、コマンドメッセージが、特定のメモリの一部を参照する命令を含む場合には、メモリの当該部分の付近に存在するデータも近い将来参照される確率が高い。
【００７９】
操作２０８において、プレローディングが必要であるかどうかを判定する。図２の実施例において、プレローディングの判定は、ＣＰ１２４によって行われる。一実施形態によると、コントローラ（例えば、ＣＰ１２４）は、キャッシュのアクセス履歴を追跡するように構成され得る。コマンドメッセージの処理中に、命令は、メモリ１３０内の位置等のメモリ位置にアクセスし得る。命令がメモリ位置にアクセスする際、ＡＰＤは、まず、メモリ位置がキャッシュ内に複製されているかどうかを調べる。具体的には、メモリアクセスに関連するアドレスを、キャッシュ内の全てのタグと比較する。所望のメモリ位置がキャッシュ内で検出された場合には、キャッシュヒットが発生する。ＡＰＤ１０４は、直ちに、識別されたキャッシュライン内のデータまたは命令等の情報を読み取り、または、書き込む。所望のメモリ位置がキャッシュ内で検出されない場合には、キャッシュミスとみなされ、結果として、グラフィックメモリ１３０等の別のソースからのデータ取り出しをもたらす。
【００８０】
一実施形態によると、コマンドメッセージが受信され解釈された際に、ＣＰ１２４は、キャッシュアクセス履歴に基づいて、プレローディングが必要であるかどうかを判定するように構成されている。キャッシュヒットまたはキャッシュミスをもたらしたデータは、再びアクセスされる確率の高いデータとみなされる。このデータ、および、グラフィックメモリ１３０の一部内の当該データの位置に関連する情報は、ＣＰ１２４によってログをとり、データベースに記憶される。コマンドメッセージが受信された際、ＣＰ１２４は、コマンドメッセージの命令を、データベースに記憶されたキャッシュアクセス履歴と比較するように構成されている。メモリ位置に関連するコマンドメッセージデータが、キャッシュアクセス履歴データベース内のいずれかのデータに類似する場合には、プレローディングが必要である。方法２００は、プレローディングが必要であると判定すると、操作２１０へと進行し得る。プレローディングが必要ない場合には、方法２００は、操作２１４で終了する。
【００８１】
操作２１０において、プレローディングされるメモリの部分が決定される。例えば、プレローディングされるメモリの部分は、ＣＰ１２４によって決定される。一実施形態によると、プレローディングされるメモリの部分は、参照情報のローカリティに基づく。上述したように、プレローディングされるメモリの部分は、メモリの部分の時間的または空間的ローカリティに基づき得る。ＣＰ１２４が、コマンドメッセージ命令において参照されるメモリの部分を識別すると、その同じメモリの部分は、隣接または付近のメモリブロックに存在するメモリとともに、プレローディングされるメモリの部分として識別され得る。
【００８２】
別の実施形態によると、プレローディングされるメモリの部分は、キャッシュのポリシー情報に基づく。キャッシュのポリシー情報は、いつキャッシュブロックが書き込まれるかを決定することができる。例えば、キャッシュブロックに関連するポリシー情報が「読み取り専用に割り付け」である場合には、キャッシュブロックは、書き込み操作の際に修正されることはない。キャッシュブロックに関連するポリシー情報が「読み取りおよび書き込みに割り付け」である場合、このキャッシュブロックは、書き込みおよび読み取りの両方の操作の際に更新され得る。さらに、システムが複数のキャッシュを含む場合には、ポリシー情報により、どのキャッシュを使用して、特定の情報を記憶するかを決定することができる。キャッシュのポリシー情報は、プレローディングされると識別されたメモリの部分が、どのようにキャッシュ内に記憶されるかを決定する。
【００８３】
操作２１２では、フェッチメッセージが出力される。例えば、フェッチメッセージは、ＣＰ１２４によって、ＲＷ  Ｌ２キャッシュ１７４等の指定キャッシュに出力される。プレローディングされるメモリの部分が識別されると、フェッチメッセージが、ポリシー情報と関連するデータを含むＣＰ１２４によって生成される。一実施形態によると、フェッチメッセージは、キャッシュに、ポリシー情報に基づいてメモリの部分からデータをロードさせる。方法２００は、次いで、操作２１４で終了する。
【００８４】
図３は、本発明の実施形態による例示的な方法３００を示すフローチャートである。方法３００は、図３の記載を通じて参照される、図１Ａおよび１Ｂのシステム１００上で動作し得る。一実施例において、方法３００は、ＡＰＤ１０４のＲＷ  Ｌ２キャッシュ１７４等のＡＰＤのキャッシュをプレローディングするために使用され得る。方法３００は、図示される順序で発生してもよいし、図示される順序で発生しなくてもよいし、全ての操作を必要としなくてもよい。
【００８５】
方法３００は、操作３０２で開始して、操作３０４に続く。操作３０４では、コマンドメッセージがコントローラによって受信される。一実施形態によると、ホストプロセッサは、プリフェッチ命令を含むコマンドメッセージを出力するように構成されている。ホストプロセッサは、例えば、ＣＰＵ１０２であり得る。一実施形態によると、コマンドメッセージは、キャッシュにプレローディングされるメモリの部分を明示的に特定するプレローディング命令を含む。例えば、プレローディング命令は、ＡＰＤ１０４のＲＷ  Ｌ２キャッシュ１７４にプレローディングされるメモリの部分の物理アドレスを含み得る。あるいは、プレローディング命令は、ＲＷ  Ｌ２キャッシュ１７４にプレローディングされるメモリの部分の仮想アドレスを含み得る。仮想アドレスは、仮想メモリ内のメモリの部分の位置である。仮想アドレスは、多数の異なる物理アドレスにマッピングされ得る。この実施形態では、ＣＰ１２４は、メモリの部分の仮想アドレスを物理アドレスに変換するために、例えばＩＯＭＭＵ１１６などのメモリ管理ユニット（ＭＭＵ）にコールを行うように構成されている。
【００８６】
操作３０６において、プレローディングされるメモリの部分は、例えば、ＣＰ１２４によって決定される。一実施形態によると、プレローディングされるメモリの部分は、コマンドメッセージに含まれる物理アドレスに基づく。物理アドレスは、キャッシュにプレローディングされるメモリの部分の位置を明示的に特定する。プレローディングされるメモリの部分は、コマンドメッセージに含まれる仮想アドレスに基づく。コマンドメッセージに含まれる仮想アドレスを物理アドレスに変換した後、プレローディングされるメモリの部分の正確な位置が特定される。
【００８７】
一実施形態において、プレローディングされるメモリの部分は、メモリの部分の時間的または空間的ローカリティに基づき得る。ＣＰ１２４が、物理アドレスまたは仮想アドレスによって特定されるメモリの部分の位置を判定すると、同じメモリの部分は、隣接または付近のメモリブロックに存在するメモリとともに、プレローディングされるメモリの部分として特定され得る。一実施形態において、キャッシュに関するポリシー情報を使用して、いつおよびどの程度の特定されたメモリの部分をキャッシュにプレローディングするかを決定することができる。
【００８８】
操作３０８では、フェッチメッセージが、例えば、ＣＰ１２４によって、ＲＷ  Ｌ２キャッシュ１７４のキャッシュコントローラに出力される。プレローディングされるメモリの部分が特定されると、フェッチメッセージが、この情報と関連するデータを含むＣＰ１２４によって生成される。一実施形態によると、フェッチメッセージは、キャッシュに、メモリの部分からデータをロードさせる。方法３００は、次いで、操作３１０で終了する。
【００８９】
本発明は、ハードウェア、ソフトウェア、ファームウェアまたはこれらの任意の組み合わせで具現化され得る。本発明の実施形態またはこの部分は、ハードウェア記述言語（ＨＤＬ）、アセンブリ言語、Ｃ言語およびネットリスト等の多数のプログラミング言語でコード化され得る。例えば、Ｖｅｒｉｌｏｇ等のＨＤＬを使用して、本発明の１つ以上の実施形態の態様を実現するデバイス（例えば、プロセッサ、特定用途向け集積回路（ＡＳＩＣ）および／または他のハードウェア要素）を、合成、シミュレーションおよび製造することができる。Ｖｅｒｉｌｏｇコードは、コンテンツ認識シームカービングを用いてフレームを拡大縮小することができるプロセッサをモデル化、設計、検証および／または実装するために使用され得る。
【００９０】
例えば、Ｖｅｒｉｌｏｇを使用して、論理のレジスタ転送レベル（ＲＴＬ）記述を生成することができ、これを使用して、コンテンツ認識シームカービングを用いてフレームを拡大縮小することができるように、命令を実行することができる。次いで、論理のＲＴＬ記述を使用して、所望される論理またはデバイスを製造するために使用されるデータ（例えば、グラフィック設計システム（ＧＤＳ）またはＧＤＳ  ＩＩのデータ）を生成することができる。Ｖｅｒｉｌｏｇのコード、ＲＴＬ記述および／またはＧＤＳ  ＩＩのデータは、コンピュータ可読媒体に記憶され得る。本発明の態様を行うために論理によって実行される命令は、ＣおよびＣ＋＋等の広範なプログラミング言語でコードされ、論理または他のデバイスによって実行され得るオブジェクトコードにコンパイルされ得る。
【００９１】
本発明の態様は、全体的または部分的にコンピュータ可読媒体に記憶され得る。コンピュータ可読媒体に記憶された命令を、全体的もしくは部分的に本発明を行うようにプロセッサを適合させるか、または、部分的もしくは全体的に本発明を行うように特別に適合されるデバイス（例えば、プロセッサ、ＡＳＩＣ、他のハードウェア）を生成するように適合され得る。これらの命令は、最終的にマスクワーク／フォトワークの生成を通じた製造プロセスを構成して、本明細書に記載される本発明の態様を具現化するハードウェアデバイスを生成するために使用され得る。
【００９２】
発明の概要および要約の部分ではなく、発明を実施するための形態が、特許請求の範囲を解釈するために使用されることを意図していることを理解されたい。発明の概要および要約の部分は、本発明者によって企図される本発明の１つ以上ではあるが全てではない例示的な実施形態を示してもよく、したがって、本発明および添付の特許請求の範囲を如何様にも限定することを意図するものではない。
【００９３】
本発明は、特定の機能の実現およびそれらの関係を示す機能的な構成要素を用いて上述されている。これらの機能の構成要素の境界線は、説明の便宜のために本明細書に恣意的に定義されている。特定の機能の実現およびそれらの関係が適切に行われる限り、代替的な境界線が定義されてもよい。
【００９４】
特定の実施形態について上述した説明は、当業者の知識の範囲内で適用されることにより、他者が、様々な応用のために、このような特定の実施形態を、過度な実験をすることなく、本発明の概括的な概念から逸脱することなく、容易に変更および／または改造し得る、本発明の概括的な特徴を十分に公表しているであろう。したがって、そのような改造および変更は、本明細書に提示される教示および指導に基づいて、開示される実施形態の均等物の意味および範囲内に含まれることが意図される。本明細書の語法または用語法は、教示および指導に鑑み、当業者により理解されるべきものであるように、本明細書における語法または用語法は、説明目的であって、制限する目的ではないことを理解されたい。
【００９５】
本発明の広がりや範囲は、上記の例示的な実施形態のいずれによっても限定されるべきではなく、以下の特許請求の範囲およびそれらの均等物によってのみ定義されるべきである。
【図１Ａ】
0005973590.tif 000002
【図１Ｂ】
0005973590.tif 000003
【図２】
0005973590.tif 000004
【図３】
0005973590.tif 000005