"システムであって、物理記憶サイズおよび論理配置を有するコンピュータメモリと、前記コンピュータメモリ内に配置されたコンポーネントリソースアフィニティテーブルと、前記コンピュータメモリに接続された中央処理ユニットCPUであって、いくつかの発見可能なプロパティを有し、1つ以上の命令の実行に応じて、前記CPU、アクセラレーテッド処理デバイスおよび前記メモリの前記発見可能なプロパティのうち、少なくとも1つを提供するように構成されたCPUと、前記コンピュータメモリに接続されたアクセラレーテッド処理デバイスAPDであって、いくつかの発見可能なプロパティを有し、APDローカルメモリに接続されているAPDと、前記コンピュータメモリに接続されたメモリ管理ユニットであって、前記CPUおよび前記アクセラレーテッド処理デバイスに共有されるメモリ管理ユニットとを備え、前記システムは、オペレーティングシステムを実行するように構成されており、前記発見可能なプロパティは、前記CPUおよび前記APDに対する演算タスクのスケジューリングおよび分散に関連しており、前記オペレーティングシステムが別々に管理する前記コンピュータメモリまたは前記APDローカルメモリのコヒーレントアクセス範囲および非コヒーレントアクセス範囲を開示する、システム。前記発見されたプロパティをエンコードし、前記エンコードされたプロパティをメモリテーブル内に記憶するロジックをさらに備える、請求項1に記載のシステム。前記メモリテーブルは、前記コンピュータメモリ内に常駐する、請求項2に記載のシステム。アクセラレーテッド処理デバイスローカルメモリをさらに備え、前記アクセラレーテッド処理デバイスローカルメモリの前記プロパティは、前記メモリテーブル内に記憶されている、請求項2に記載のシステム。組み合わせた中央処理ユニットCPUおよびアクセラレーテッド処理デバイスAPDアーキテクチャシステムを作動する方法であって、1つ以上のCPU計算コアのプロパティを発見するステップと、1つ以上のアクセラレーテッド処理デバイス計算コアのプロパティを発見するステップと、1つ以上の補助コンポーネントのプロパティを発見するステップと、システムメモリのプロパティを発見するステップと、アクセラレーテッド処理デバイスローカルメモリが存在する場合に、前記アクセラレーテッド処理デバイスローカルメモリのプロパティを発見するステップと、タイプ、幅、速度、コヒーレンスおよびレイテンシのうち1つ以上を含むデータパスのプロパティを発見するステップと、1つ以上の情報構造を提供するステップであって、前記1つ以上の情報構造のうち少なくとも1つに情報を記憶し、前記記憶された情報は、前記発見されたプロパティの少なくとも1つを表すステップとを含む、方法。前記発見されたプロパティは、前記組み合わせたCPU/APDアーキテクチャシステム内の複数の演算リソースのうち1つ以上に対する演算タスクのスケジューリングに関連している、請求項5に記載の方法。複数の演算リソースのうち少なくとも1つによって1つ以上の命令を実行するステップであって、前記命令の実行は、前記1つ以上の命令を実行する前記演算リソースの1つ以上のレジスタ内の情報、または前記演算リソースに接続されたメモリの1つ以上のメモリ位置内の情報を提供するステップをさらに含む、請求項5に記載の方法。少なくとも1つのハードウェアリソースの追加または除去を検出した後に、1つ以上の前記発見するステップを繰り返し行うステップをさらに含む、請求項5に記載の方法。前記発見されたプロパティのうち少なくとも1つをエンコードするステップをさらに含む、請求項5に記載の方法。組み合わせた中央処理ユニットCPUおよびアクセラレーテッド処理デバイスAPDアーキテクチャシステムを作動する方法であって、組み合わせたCPU/APDアーキテクチャシステムの作動により、組み合わせたCPU/APDアーキテクチャシステム内の演算タスクのスケジューリングおよび分散に関連するプロパティを発見するステップと、前記組み合わせたCPU/APDアーキテクチャシステムの作動により、1つ以上の情報構造を提供するステップであって、前記1つ以上の情報構造のうち少なくとも1つに情報を記憶し、前記記憶された情報は、前記発見されたプロパティの少なくとも1つを表すステップと、前記組み合わせたCPU/APDアーキテクチャシステムの作動により、1つ以上のハードウェアリソースが、前記組み合わせたCPU/APDアーキテクチャシステムに追加または削除されたか否かを判断するステップと、1つ以上のハードウェアリソースが、前記組み合わせたCPU/APDアーキテクチャシステムに追加または削除されたことを判断した後に、前記組み合わせたCPU/APDアーキテクチャシステムの作動により、前記組み合わせたCPU/APDシステム内の演算タスクのスケジューリングおよび分散に関連する少なくとも1つのプロパティを発見するステップと、を含む、方法。ハードウェアリソースの追加は、前記ハードウェアリソースを、前記組み合わせたCPU/APDアーキテクチャシステムにホットプラグすることを含む、請求項10に記載の方法。ハードウェアリソースの追加は、ファームウェアまたはソフトウェアのアクションによって、前記ハードウェアリソースを有効にすることを含む、請求項10に記載の方法。ハードウェアリソースの削除は、前記組み合わせたCPU/APDアーキテクチャシステムから前記ハードウェアリソースを物理的に削除することを含む、請求項10に記載の方法。ハードウェアリソースの削除は、ファームウェアまたはソフトウェアのアクションにより前記ハードウェアリソースを無効にすることを含む、請求項10に記載の方法。前記プロパティは、組み合わせたCPU/APDアーキテクチャシステムのコンポーネントの存在と、1つ以上の前記コンポーネント間の相互接続と、前記コンポーネントの1つ以上の属性とを含む、請求項10に記載の方法。前記プロパティは、コアの数、キャッシュの数、キャッシュアフィニティ、階層およびレイテンシ、TLB、FPU、実行状態、電力状態のうち1つ以上を含む、請求項10に記載の方法。前記プロパティは、SIMDサイズ、SIMD配置、ローカルデータストアアフィニティ、ワークキュープロパティ、IOMMUアフィニティ、ハードウェアコンテキストメモリサイズのうち1つ以上を含む、請求項10に記載の方法。前記プロパティは、バススイッチ、メモリコントローラチャネルおよびバンクのうち1つ以上を含む、請求項10に記載の方法。前記プロパティは、システムメモリおよびアクセラレーテッド処理デバイスローカルメモリのコヒーレントアクセス範囲および非コヒーレントアクセス範囲を含む、請求項10に記載の方法。前記プロパティは、システムメモリおよびアクセラレーテッド処理デバイスローカルメモリの属性を含む、請求項10に記載の方法。一般的に、機能の使用およびタスクスケジューリングのプラットフォームの実行機能をよりよく利用可能にするために、ソフトウェアは、下層のハードウェアの特性を認識すべきである。組み合わせたCPU/APDアーキテクチャシステムの演算リソースを効率的に使用するために、プラットフォームの特徴、プロパティ、相互接続、属性および/または特性は、発見され、且つ、ソフトウェアに報告レポートされなければならない。組み合わせたCPU/APDアーキテクチャシステムの種々の演算リソースに対する、演算タスクの効率的なスケジューリングおよび分散に関連するデバイスおよびシステムトポロジーのプロパティを発見し、レポートするという、組み合わせたCPU/APDアーキテクチャシステムの態様として、方法および機器が提供される。本発明による、組み合わせたCPU/APDアーキテクチャは、柔軟なコンピューティング環境において、CPUとAPDとを統合化する。いくつかの実施形態では、組み合わせたCPU/APDアーキテクチャの性能は、単一の集積回路内で実装され、集積回路の構成要素は、より詳細に後述するように、1つ以上のCPUコアと、1つ以上の統合化APDコアとを含むことが可能である。CPUおよびAPDが、通常、分離している例えば、別個のカードまたはボード上、または分離したパッケージ内に常駐している従来のコンピューティング環境とは対照的に、組み合わせたCPU/APDアーキテクチャは、既存および新しいプログラミング構造、言語およびツールを構成可能な基礎を作る。組み合わせたCPU/APDシステムアーキテクチャの統合化された環境は、プログラマが、CPUおよびAPDの各々が提供する必要のあるもっとも優れた属性から恩恵を受けて、CPUおよびAPD間のデータの処理をシームレスに移行するアプリケーションを作成することを可能にする。統合化された単一のプログラミングプラットフォームは、並列処理を利用する言語、構造およびアプリケーションの開発に対して、強力な基礎を提供可能である。以下の詳細な説明においては、1つの実施形態、ある実施形態、例示的実施形態またはその他を参照することは、本明細書において説明される実施形態が、特定の特徴、構造または特性を有することを示すが、全ての実施形態が当該特定の特徴、構造または特性を必ずしも含むとは限らない。さらに、係る語句は、同一の実施形態を参照するとは限らない。さらに、特定の特徴、構造または特性が、1つの実施形態に関連して説明される場合に、当該特長、構造または特性を、他の実施形態との関連で実施することは、明示されているかいないかによらず、当業者の知識の範囲内であることが提起される。本発明の実施形態という用語は、本発明の実施形態の全てが、検討の対象である特徴、特長または操作モードを含むことを必ずしも要求しない。代替的な実施形態が本発明の範囲から逸脱することなく考案され、本発明の既知の構成要素は、本発明の関連する詳細を不明瞭化しないために、必ずしも詳細に説明されるとは限らず、または省略され得る。加えて、本明細書において用いられる用語は、特定の実施形態を説明することのみを目的とし、本発明を制限することを意図するものではない。例えば、本明細書において用いられる単数形の1つのおよびそのは、内容的に明らかに単数のみを指す場合を除き、複数形をも含むことを意図するものである。本明細書において用いられる場合、含む、備える、包含するおよび/または有するという用語は、述べられた特徴、整数、ステップ、操作、構成要素および/またはコンポーネントが存在することを指定するが、1つまたは複数の他の特徴、整数、ステップ、操作、構成要素、コンポーネントおよび/またはこれらの群の存在または追加を除外しない。例えばCPU識別CPUIDなどのような、CPUベースの機能検出およびスケジューリング用の従来のメカニズムは、今日のオペレーティングシステムおよびプラットフォームで一般的に使用される、均一および比較的単純なCPUトポロジーに対してさえ、厳しい制限に陥る。入力/出力メモリ管理ユニットIOMMUを適切に構成するために、CPU/メモリ/APD/ネットワークのトポロジー例えばアドインボード、メモリコントローラ、ノース/サウスブリッジなどを発見する必要がある。同様に、アプリケーションソフトウェアは、適切にスケジューリングおよび作業負荷決定をするために、例えば、異なるAPDおよび計算ユニットをいくつ利用可能であるか、および、APDおよび計算ユニットは、どのようなプロパティを有しているのか、といった情報を必要とする。従って、1つ以上のプロセス、1つ以上のハードウェアメカニズムまたは両方の組み合わせが、本発明によるデバイスの発見およびトポロジーの報告に必要とされる。より一般的には、少なくとも1つのメカニズム、少なくとも1つのプロセス、または少なくとも1つのメカニズムおよび少なくとも1つのプロセスが、デバイスの発見およびトポロジーの報告に必要とされる。本発明の1つの実施形態において、デバイスおよびトポロジーに関する情報は、アプリケーションソフトウェアに報告される前にエンコードされる。1つの方法では、アドバンストコンフィギュレーションアンドパワーインターフェースACPI仕様によるテーブルを、オペレーティングシステムレベルおよびユーザモードレベルに提供する。デバイスおよびトポロジーの発見に関連する情報であって、スケジューリングおよび作業負荷決定のユーティリティを有する情報を、上記テーブルを通して通信してもよい。テーブルは、局所性情報例えば、どのメモリがAPDに最も近いかを有してもよいが、それに限定されない。最も近いことは、信号パスが短ければ、ローディングが軽くなり、信号移動時間が短くなることを意味するので、通常、メモリが物理的に最も近いことを意味する。しかし、本明細書で使用する最も近いはより広く、データを最も迅速に転送するように動作可能なメモリを含む。CPU/スカラー計算コアに関して、発見可能なプロパティは、コアの数、キャッシュの数、キャッシュトポロジー例えば、キャッシュアフィニティ、階層構造、レイテンシ、変換索引バッファTLB、浮動小数点ユニットFPU、実行状態、電力状態などを含むが、これらに限定されない。例えば、ソケットあたりのコアの数およびキャッシュサイズなどのいくつかのプロパティは、現在では、CPUID命令を通して開示される。例えば、ソケットの数、ソケットトポロジー、実行/電力状態などの付加的なプロパティは、従来のシステムに適用されるACPI定義を通して定義されるACPIテーブルを通して開示される。CPUコアを、異なる局所領域非均一メモリアーキテクチャNUMAにわたって分散してもよい。しかし、第1の順序として、コアは、OSおよび仮想メモリマネジャVMMスケジューラによって均一に管理される。APD計算コアに関して、発見可能なプロパティは、単一命令多重データSIMDサイズ、SIMD配列、ローカルデータストアアフィニティ、ワークキュープロパティ、CPUコア、IOMMUアフィニティ、ハードウェアコンテキストメモリサイズなどを含むが、これらに限定されない。いくつかの個別APDコアは、ライブプラットフォームに取付可能または着脱可能であってもよく、その一方で、統合APDコアは、配線構成であってもよいし、本発明の実施形態によるアクセラレーテッド処理ユニットの一部であってもよい。補助コンポーネントに関して、発見可能なコンポーネントは、拡張周辺部品相互接続PCIeスイッチ、メモリコントローラチャネル、APUまたは個別APDのバンク、および非計算I/Oデバイス例えば、AHCI、USB、ディスプレイコントローラなどを含む。システムおよびAPDローカルメモリは、オペレーティングシステムが別に管理し、CPUまたはAPDに特定のアフィニティを有し得る様々なコヒーレントおよび非コヒーレントアクセス範囲を開示してもよい。タイプ、幅、速度、コヒーレンスプロパティおよびレイテンシを含むが、これらに限定されない他のデータパスプロパティは、発見可能であってもよい。いくつかのプロパティは、PCI-E機能構造またはACPIテーブルを通して開示される。しかし、デバイス発見およびトポロジーレポーティングに関連する全ての特性は、従来のメカニズムで表現され得るとは限らない。CPUIDは、CPUのような演算リソースにより実行される場合に、当該CPUの特定の特徴および特性についての情報を提供する命令を指す。例えば、x86アーキテクチャCPUは、ベンダID、プロセッサ情報および特徴ビット、キャッシュおよびTLB記述子情報、プロセッサシリアル番号、最大拡張サポート関数、拡張プロセッサ情報および特徴ビット、プロセッサブランドストリング、L1キャッシュおよびTLB識別子、拡張L2キャッシュの特徴、高度な電力管理情報並びに仮想および物理的アドレスサイズのような情報を提供してもよい。図1Aは、CPU102およびAPD104を含む統合化されたコンピューティングシステム100の例示的な図である。CPU102は、1つ以上のシングルコアまたはマルチコアCPUを含み得る。本発明の一実施形態において、システム100は、統合化されたプログラミング環境および実行環境を提供するために、CPU102およびAPD104を組み合わせた単一のシリコンダイまたはパッケージ上に形成される。この環境は、APD104が、いくつかのプログラミングタスクに対して、CPU102と同程度に流動的に用いられることを可能にする。しかし、CPU102およびAPD104が単一のシリコンダイ上に形成されることは、本発明の絶対的な要件ではない。いくつかの実施形態において、CPU102およびAPD104は別個に形成され、同一の基板または異なる基板上に搭載されることが可能である。1つの例において、システム100は、メモリ106、オペレーティングシステム108および通信インフラストラクチャ109を含む。オペレーティングシステム108および通信インフラストラクチャ109は、以下でより詳細に説明される。システム100は、カーネルモードドライバKMD:kernelmodedriver110と、ソフトウェアスケジューラSWS:softwarescheduler112と、例えばIOMMU等のメモリ管理ユニット116とを含む。システム100の構成品は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの任意の組合せとして実装され得る。当業者は、システム100が図1Aに示される実施形態において示されるものに加えて、またはこれらとは異なる、1つ以上のソフトウェアコンポーネント、ハードウェアコンポーネントおよびファームウェアコンポーネントを含み得ることを理解するであろう。1つの例において、KMD110等のドライバは、通常、ハードウェアが接続されたコンピュータバスまたは通信サブシステムを通してデバイスと通信する。呼び出しプログラムがドライバにおいてルーチンを呼び出すと、ドライバは、デバイスに対してコマンドを発行する。デバイスがドライバに対してデータを戻すと、ドライバは、元の呼び出しプログラムにおいてルーチンを呼び出し得る。1つの例において、ドライバは、ハードウェア依存的であり、オペレーティングシステム固有である。ドライバは、通常、任意の必要な非同期的時間依存性のハードウェアインターフェースに対して要求されるインタラプトハンドリングを提供する。デバイスドライバは、特に現代のウィンドウズ登録商標プラットフォームにおいては、カーネルモードリング0またはユーザモードリング3において実行され得る。ドライバをユーザモードにおいて実行することの利益は、安定性が改善されることである。なぜなら、不完全な形で書かれたユーザモードデバイスドライバは、カーネルメモリを上書きすることによってシステムをクラッシュさせることができないためである。一方、ユーザモード/カーネルモードの遷移は、通常、顕著な性能オーバーヘッドを与え、それにより、低レイテンシおよび高スループット要件目的のユーザモードドライバを阻害する。カーネルスペースは、システムコールの使用を通してのみ、ユーザモジュールからのアクセスが可能である。UNIX登録商標シェルまたは他のGUIベースのアプリケーションなどのエンドユーザプログラムは、ユーザスペースの一部である。これらのアプリケーションは、カーネルにサポートされた機能を通してハードウェアと相互作用する。CPU102は、制御プロセッサ、フィールドプログラマブルゲートアレイFPGA:fieldprogrammablegatearray、特定用途集積回路ASIC:applicationspecificintegratedcircuitまたはデジタルシグナルプロセッサDSP:digitalsignalprocessorのうち1つ以上を含み得る図示せず。CPU102は、例えば、コンピューティングシステム100の動作を制御する、オペレーティングシステム108、KMD110、SWS112およびアプリケーション111を含む制御ロジックを実行する。この例示的な実施形態において、CPU102は、1つの実施形態によれば、アプリケーション111の実行の起動および制御を、例えばそのアプリケーションに関連する処理をCPU102とAPD104等の他の処理リソースとの間に分散させることにより行う。APD104は、とりわけ、グラフィックス演算や、例えば特に並列処理に好適となり得る他の演算等の、選択された機能のためのコマンドおよびプログラムを実行する。一般に、APD104は、ピクセル処理、幾何学演算およびディスプレイに対する画像のレンダリング等のグラフィックスパイプライン処理を実行するために、しばしば用いられ得る。本発明の様々な実施形態において、APD104は、CPU102から受信したコマンドまたは命令に基づいて、計算処理演算例えば、ビデオ演算、物理シミュレーション、計算流体力学、その他等の、グラフィックスに関連しない演算も実行し得る。例えば、コマンドは、命令セットアーキテクチャISA:instructionsetarchitectureに定義されない特殊な命令であるとみなすことができ、所与のISAまたは独特なハードウェアからの1組の命令によって大抵得られる。コマンドは、例えばディスパッチプロセッサ、コマンドプロセッサまたはネットワークコントローラ等の特殊なプロセッサにより実行され得る。一方、命令は、例えばコンピュータアーキテクチャ内のプロセッサの単一の演算であるとみなされ得る。1つの例において、2セットのISAが用いられる場合には、いくつかの命令は、x86プログラムを実行するために用いられ、いくつかの命令は、APD計算ユニット上でカーネルを実行するために用いられる。例示的な実施形態において、CPU102は、選択されたコマンドをAPD104に伝達する。これらの選択されたコマンドは、並列実行に適したグラフィックスコマンドと、並列実行に適した他のコマンドとを含み得る。計算処理コマンドを含み得るこれらの選択されたコマンドは、実質的にCPU102から独立して実行され得る。APD104は、例えば1つ以上の単一命令複数データSIMD:singleinstructionmultipledata処理コア等ではあるがこれに制限されない、自身の計算ユニット図示せずを含み得る。本明細書で参照されるSIMDは、パイプライン、すなわち、それぞれが自身のデータおよび共有プログラムカウンタを有する複数の処理エレメント上でカーネルが同時に実行されるプログラミングモデルである。全ての処理エレメントは、同一の1組の命令を実行する。プレディケーションを用いることにより、発行されたコマンドごとに、ワークアイテムを関与させることまたはさせないことが可能となる。1つの例において、各APD計算ユニット104は、1つ以上のスカラーおよび/またはベクトル浮動小数点演算ユニットおよび/または算術論理ユニットALU:arithmeticandlogicunitを含み得る。APD計算ユニットは、逆平方根ユニットおよびサイン/コサインユニット等の特殊用途処理ユニット図示せずも含み得る。1つの例において、APD計算ユニットは、本明細書においてシェーダコア122と総称される。1つ以上のSIMDが存在することにより、一般に、APD104は、グラフィックス処理において一般的なデータ並列タスク等のデータ並列タスクの実行に、理想的に好適なものとなる。ピクセル処理等のいくつかのグラフィックスパイプライン処理と、他の並列演算処理とは、同一のコマンドストリームまたは計算カーネルが、ストリームまたは入力データ要素の集合体上で実行されることを要求する。同一の計算カーネルのそれぞれのインスタンス化は、上記データ要素を並列に処理するために、シェーダコア122の複数の計算ユニット上で同時に実行され得る。本明細書で参照されるように、例えば計算カーネルは、プログラム上で宣言され、APD計算ユニット上で実行される命令を含む関数である。この関数は、カーネル、シェーダ、シェーダプログラムまたはプログラムとも称される。1つの例示的な実施形態において、各計算ユニット例えばSIMD処理コアは、入力されるデータを処理するために、特定ワークアイテムのそれぞれのインスタンス化を実行し得る。ワークアイテムは、コマンドによりデバイス上で呼び出されるカーネルの並列実行の集合体のうちの1つである。ワークアイテムは、計算ユニット上で実行されるワークグループの一部として、1つ以上の処理エレメントにより実行され得る。ワークアイテムは、自身のグローバルIDおよびローカルIDによって、集合体内の他の実行から区別される。1つの例において、ワークグループにおいて1つのSIMDエンジンで同時に実行されるワークアイテムの一部は、ウェーブフロント136と称され得る。ウェーブフロントの幅は、計算ユニット例えば、SIMD処理コアのハードウェアの特性である。本明細書で参照されるワークグループは、単一の計算ユニット上で実行される関連するワークアイテムの集合体である。ワークグループ内のワークアイテムは、同一のカーネルを実行し、ローカルメモリおよびワークグループバリアを共有する。代表的な実施形態において、1つのワークグループからの全てのウェーブフロントは、同一のSIMD処理コアで処理される。ウェーブフロントにわたる命令は1つずつ発行され、全てのワークアイテムが同一の制御フローに従う場合には、各ワークアイテムは、同一のプログラムを実行する。ウェーブフロントは、ワープ、ベクトルまたはスレッドと称され得る。実行マスクおよびワークアイテムプレディケーションは、ウェーブフロント内の拡散的な制御フローを可能にするために用いられる。なお、拡散的な制御フローにおいては、各個別のワークアイテムは、カーネルを通じて一意的なコードパスを実際に取り得る。部分的に占められたウェーブフロントは、ワークアイテムの全てのセットがウェーブフロント開始時にて必ずしも利用可能とは限らない場合に、処理され得る。例えば、シェーダコア122は、所定数のウェーブフロント136を同時に実行し得る。なお、各ウェーブフロント136は、複数のワークアイテムを含む。システム100において、APD104は、グラフィックスメモリ130等の自身のメモリを含むなお、メモリ130は、グラフィックス専用に制限されるとは限らない。グラフィックスメモリ130は、APD104における計算実行の間の使用のために、ローカルメモリを提供する。シェーダコア122内の個々の計算ユニット図示せずは、自身のローカルデータ記憶装置図示せずを有し得る。1つの実施形態において、APD104は、ローカルグラフィックスメモリ130へのアクセス、ならびにメモリ106へのアクセスを含む。他の実施形態において、APD104は、ダイナミックランダムアクセスメモリDRAM:dynamicrandomaccessmemory、または、APD104には直接的に接続されているがメモリ106からは分離している他のメモリ図示せずへのアクセスを含み得る。図示の例において、APD104は、1つまたはn個のコマンドプロセッサCP:commandprocessor124を含み得る。CP124は、APD104内の処理を制御する。CP124は、実行されるべきコマンドを、メモリ106内のコマンドバッファ125から取得し、APD104でのこれらのコマンドの実行を調整する。1つの例において、CPU102は、アプリケーション111に基づくコマンドを、適切なコマンドバッファ125に入力する。本明細書において参照されるように、アプリケーションは、CPU内またはAPD内の計算ユニット上で実行されるプログラム部分の組合せである。複数のコマンドバッファ125は、各プロセスがAPD104での実行のためにスケジュールされた状態で、保持され得る。CP124は、ハードウェア、ファームウェア、ソフトウェアまたはこれらの組合せにおいて実装され得る。1つの実施形態において、CP124は、スケジューリングロジックを含むロジックを実装するためのマイクロコードを有する縮小命令セットコンピュータRISC:reducedinstructionsetcomputerエンジンとして実装される。APD104は、1つまたはn個のディスパッチコントローラDC:dispatchcontroller126を含み得る。本願において、ディスパッチという用語は、1セットの計算ユニット上の1セットのワークグループに対するカーネルの実行のスタートを起動するために、コンテキスト状態を使用するディスパッチコントローラにより実行されるコマンドを指す。DC126は、シェーダコア122内でワークグループを起動するためのロジックを含む。いくつかの実施形態において、DC126は、CP124の一部として実装され得る。システム100は、APD104上で実行するためのプロセスを実行リスト150から選択するためのハードウェアスケジューラHWS:hardwarescheduler128を含む。HWS128は、ラウンドロビン方式、優先レベルを用いて、または他のスケジューリングポリシーに基づいて、プロセスを実行リスト150から選択し得る。優先レベルは、例えば、動的に決定され得る。HWS128は、例えば、新規のプロセスを追加することによって、あるいは既存のプロセスを実行リスト150から削除することによって、実行リスト150を管理する機能を含み得る。HWS128の実行リスト管理ロジックは、実行リストコントローラRLC:runlistcontrollerと称されることもある。本発明の様々な実施形態において、HWS128が、RLC150からのプロセスの実行を開始すると、CP124は、対応するコマンドバッファ125からのコマンドの取得および実行を開始する。いくつかの事例において、CP124は、CPU102から受信したコマンドに対応する、APD104内で実行される1つ以上のコマンドを生成し得る。1つの実施形態において、CP124は、APD104リソースおよび/またはシステム100のリソースの利用が改善または最大化されるように、APD104におけるコマンドの優先化およびスケジューリングを、他のコンポーネントとともに実装する。APD104は、インタラプトジェネレータ146に対してアクセスを有するか、またはインタラプトジェネレータ146を含み得る。インタラプトジェネレータ146は、APD104がページフォールト等のインタラプトイベントに遭遇すると、APD104によってオペレーティングシステム108にインタラプトをかけるよう構成され得る。例えば、APD104は、IOMMU116内のインタラプト生成ロジックに依存して、上述のページフォールトインタラプトを生成し得る。APD104は、シェーダコア122内で現在実行中のプロセスを切り替えるためのプリエンプションおよびコンテキストスイッチロジック120を含み得る。コンテキストスイッチロジック120は、例えばプロセスを停止させ、その現在状態例えばシェーダコア122状態およびCP124状態を保存する機能を含む。本明細書において参照される状態という用語は、初期状態、中間状態および/または最終状態を含み得る。初期状態は、機械がプログラム順序に従って入力データセットを処理することによって、データの出力セットを生成する開始点である。例えば、処理を前進させるためにいくつかのポイントにおいて記憶される必要がある中間状態が存在する。この中間状態は、他のプロセスによってインタラプトがかけられた場合に、後に実行を継続することを可能にするために記憶される場合もある。出力データセットの一部として記録され得る最終状態も存在する。プリエンプションおよびコンテキストスイッチロジック120は、他のプロセスを、APD104にコンテキストスイッチするためのロジックを含み得る。他のプロセスをAPD104で実行するようにコンテキストスイッチするための機能は、APD104上で実行するために、例えばCP124およびDC126によってプロセスをインスタンス化することと、当該プロセスに対して以前に保存された状態を復元することと、当該プロセスの実行を開始することと、を含み得る。メモリ106は、DRAM図示せず等の非永続型メモリを含み得る。メモリ106は、例えば、アプリケーションまたは他の処理ロジックの部分を実行する間に、処理ロジック命令、定数および様々な変数を記憶し得る。例えば、1つの実施形態において、CPU102上で1つ以上の演算を実行するための制御ロジックの部分は、CPU102によって演算のそれぞれの部分が実行される間にメモリ106内に常駐し得る。実行中、個別のアプリケーション、オペレーティングシステム関数、処理ロジックコマンドおよびシステムソフトウェアは、メモリ106に常駐し得る。オペレーティングシステム108に対して必須である制御ロジックコマンドは、一般に、実行中にはメモリ106に常駐することとなるであろう。他のソフトウェアコマンド、例えばカーネルモードドライバ110およびソフトウェアスケジューラ112は、システム100の実行中にはメモリ106に常駐し得る。この例において、メモリ106は、コマンドをAPD104に送るために、CPU102によって用いられるコマンドバッファ125を含む。メモリ106は、プロセスリストおよびプロセス情報例えば、アクティブリスト152およびプロセス制御ブロック154を含み得る。これらのリストおよび情報は、スケジュール情報を、APD104および/または関連するスケジューリングハードウェアに伝えるために、CPU102上で実行されるスケジューリングソフトウェアによって使用される。メモリ106に対するアクセスは、メモリ106に接続されたメモリコントローラ140によって管理され得る。例えば、メモリ106に対する読み出しおよび書き込みを実行するための、CPU102または他のデバイスからの要求は、メモリコントローラ140によって管理される。システム100の他の態様に戻ると、IOMMU116は、マルチコンテキストメモリ管理ユニットである。本明細書で用いられるコンテキストプロセスともよばれるという用語は、カーネルが実行される環境であって、同期およびメモリ管理が定義されるドメインであるとみなされる。コンテキストは、1セットのデバイスと、これらのデバイスに対してアクセス可能であるメモリと、対応するメモリ特性と、メモリオブジェクトにおけるカーネル単数または複数または演算の実行をスケジュールするために用いられる1つ以上のコマンドキューとを含む。図1Aにおいて示される例に戻ると、IOMMU116は、APD104を含むデバイスに対するメモリページアクセスに対して、仮想アドレスから物理アドレスへの変換を実行するためのロジックを含む。IOMMU116は、例えば、APD104等のデバイスによるページアクセスの結果としてページフォールトが生じる場合に、インタラプトを生成するためのロジックを含み得る。IOMMU116は、TLB118を含むか、あるいはTLB118に対するアクセスを有し得る。TLB118は、1つの例として、メモリ106内のデータ用にAPD104によりなされた要求に対して、論理すなわち仮想メモリアドレスから物理メモリアドレスへの変換を高速化するために、コンテントアドレサブルメモリCAM:contentaddressablememoryに実装され得る。示された例において、通信インフラストラクチャ109は、必要に応じてシステム100のコンポーネントを相互接続する。通信インフラストラクチャ109は、周辺構成要素相互接続PCIバス、拡張PCIPCI-Eバス、アドバンストマイクロコントローラバスアーキテクチャAMBAバス、アドバンストグラフィックスポートAGPまたは他の通信インフラストラクチャのうち1つ以上を含み得る図示せず。通信インフラストラクチャ109は、イーサネット登録商標若しくは同様のネットワークまたはアプリケーションの転送速度要求を満足する任意の好適な物理的通信インフラストラクチャを含み得る。通信インフラストラクチャ109は、コンピューティングシステム100のコンポーネントを含むコンポーネントを相互接続するための機能を含む。この例において、オペレーティングシステム108は、システム100のハードウェアコンポーネントを管理する機能と、共通サービスを提供するための機能とを含む。様々な実施形態において、オペレーティングシステム108は、CPU102上で実行し、共通サービスを提供する。これらの共通サービスは、例えば、CPU102内での実行のためにアプリケーションをスケジューリングすることと、フォールト管理と、インタラプトサービスと、他のアプリケーションの入力および出力を処理することと、を含む。いくつかの実施形態において、オペレーティングシステム108は、例えばインタラプトコントローラ148等のインタラプトコントローラによって生成されたインタラプトに基づいて、適切なインタラプトハンドリングルーチンを呼び出す。例えば、オペレーティングシステム108は、ページフォールトインタラプトを検出すると、関連するページをメモリ106にロードし始め、且つ、対応するページテーブルを更新するために、インタラプトハンドラを呼び出す。オペレーティングシステム108は、オペレーティングシステムにより管理されるカーネル機能を通して、ハードウェア部品に対するアクセスが仲介されることを確保することによって、システム100を保護する機能を含み得る。事実、オペレーティングシステム108は、アプリケーション111等のアプリケーションが、CPU102上でユーザスペースにおいて実行されることを確保する。オペレーティングシステム108は、アプリケーション111が、ハードウェアにアクセスするためにオペレーティングシステムにより提供されるカーネル機能および/または入出力機能を呼び出すことも確保する。例として、アプリケーション111は、CPU102上でも実行されるユーザ計算を実行するための様々なプログラムまたはコマンドを含む。CPU102は、選択されたコマンドを、APD104で処理するためにシームレスに送信し得る。1つの例において、KMD110は、CPU102、CPU102上で実行されるアプリケーションまたは他のロジックが、APD104の機能を呼び出し得るアプリケーションプログラミングインタフェースAPIを実装する。例えば、KMD110は、CPU102からのコマンドを、コマンドバッファ125にエンキューし得る。なお、APD104は、このコマンドバッファ125からコマンドを続けて取得することとなる。加えて、KMD110は、APD104上で実行されるプロセスのスケジューリングを、SWS112とともに実行する。SWS112は、例えば、APD上で実行されるプロセスの優先度リストを保持するためのロジックを含み得る。本発明の他の実施形態において、CPU102上で実行するアプリケーションは、コマンドをエンキューするときに、KMD110を完全にバイパスし得る。いくつかの実施形態において、SWS112は、APD104上で実行されるプロセスのアクティブリスト152を、メモリ106に保持する。SWS112は、アクティブリスト152におけるプロセスのうち、ハードウェアのHWS128により管理される一部を選択する。各プロセスをAPD104上で実行することに関する情報は、CPU102からプロセス制御ブロックPCB:processcontrolblock154を通して、APD104に伝えられる。アプリケーション、オペレーティングシステムおよびシステムソフトウェアのための処理ロジックは、マスクワーク/フォトマスクの生成を通して最終的に製造プロセスを構成することで、本明細書において説明される本発明の態様を具体化するハードウェア装置を生成することを可能にするための、例えば、C言語等のプログラム言語および/またはVerilog、RTL等のハードウェア記述言語もしくはネットリストにおいて指定されるコマンドを含み得る。当業者は、コンピューティングシステム100が、図1Aにおいて示されるコンポーネントよりも多数または少数のコンポーネントを含み得ることを、本明細書を読むことで理解するであろう。例えば、コンピューティングシステム100は、1つ以上の入力インターフェースと、不揮発性ストレージと、1つ以上の出力インターフェースと、ネットワークインターフェースと、1つ以上のディスプレイまたはディスプレイインターフェースと、を含み得る。図1Bは、図1Aにおいて示されるAPD104のより詳細な例示を示す実施形態である。図1Bにおいて、CP124は、CPパイプライン124a,124b,124cを含み得る。CP124は、図1Aにおいて示されるコマンドバッファ125から入力として提供されるコマンドリストを処理するように、構成され得る。図1Bの典型的な動作において、CP入力0124aは、コマンドをグラフィックスパイプライン162に駆動することを担当する。CP入力1および2124bおよび124cは、コマンドを計算パイプライン160に伝える。HWS128の動作を制御するためのコントローラ機構166も提供される。図1Bにおいて、グラフィックスパイプライン162は、本明細書において順序化パイプライン164と称される、1セットのブロックを含み得る。例えば、順序化パイプライン164は、頂点グループ変換器VGT:vertexgrouptranslator164aと、プリミティブアセンブラPA:primitiveassembler164bと、スキャンコンバータSC:scanconverter164cと、シェーダエクスポートレンダーバックユニットSX/RB:shader-export,render-backunit176とを含む。順序化パイプライン164内の各ブロックは、グラフィックスパイプライン162内の異なる段階のグラフィックス処理を表し得る。順序化パイプライン164は、固定機能ハードウェアパイプラインであり得る。本発明の精神および範囲に含まれ得る他の実装を用いることも可能である。わずかな量のデータが、入力としてグラフィックスパイプライン162に提供されるが、このデータは、グラフィックスパイプライン162からの出力として提供される時まで増幅されることとなるであろう。グラフィックスパイプライン162は、CPパイプライン124aから受け取ったワークアイテムグループ内の範囲にわたってカウントするためのDC166も含む。DC166を通して提示された計算作業は、グラフィックスパイプライン162と準同期している。計算パイプライン160は、シェーダDC168,170を含む。DC168,170のそれぞれは、CPパイプライン124b,124cから受け取ったワークグループ内の計算範囲にわたってカウントするように構成されている。図1Bにおいて示されるDC166,168,170は、入力範囲を受け取り、入力範囲をワークグループに分割し、次いでこれらのワークグループをシェーダコア122に伝える。グラフィックスパイプライン162は、一般に固定機能パイプラインであるため、その状態を保存および復元することは困難であり、そのためグラフィックスパイプライン162は、コンテキストスイッチが困難である。したがって、ほとんどの場合、本明細書において論じられるコンテキストスイッチは、グラフィックス処理におけるコンテキストスイッチに関係しない。例外は、シェーダコア122におけるグラフィックス作業であり、これはコンテキストスイッチされ得る。グラフィックスパイプライン162内のワーク処理が完了した後、完了したワークを、レンダーバックユニット176を通じて処理する。レンダーバックユニット176は、デプス計算およびカラー計算を行い、次いで、この最終結果をメモリ130に書き込む。シェーダコア122は、グラフィックスパイプライン162および計算パイプライン160により共有され得る。シェーダコア122は、ウェーブフロントを実行するように構成された汎用プロセッサであり得る。1つの例において、計算パイプライン160内の全てのワークは、シェーダコア122内で処理される。シェーダコア122は、プログラム可能なソフトウェアコードを実行し、多様な形態のデータ例えば、状態データを含む。全てのワークアイテムがAPDリソースにアクセスできないとき、QoS内で中断が起こる。本発明の実施形態は、APD104内のリソースに対する2つ以上のタスクの効率的および同時の起動を容易にし、全てのワークアイテムが種々のAPDリソースにアクセスするのを可能にする。1つの実施形態では、APD入力スキームは、APDの作業負荷を管理することにより、全てのワークアイテムが並列にAPDリソースへのアクセスを有することを可能にする。APDの作業負荷が最大レベルに近づくとき例えば最大I/Oレートの達成中、このAPD入力スキームは、未使用となり得た処理リソースが多くのシナリオで同時に使用可能であるように補助する。シリアル入力ストリームは、例えば、APDへの並列同時入力として現れるように抽出可能である。例えば、CP124の各々は、APD104内の他のリソースへ入力として送る1つ以上のタスクを有することが可能であり、各タスクは、複数のウェーブフロントを表すことが可能である。第1のタスクが入力として送られた後に、このタスクは、一定期間にわたって、タスクの完了に必要な全てのAPDリソースを使用するように起動することが許可されてもよい。この第1のタスクは、単独で、最大APD使用閾値に達するかもしれないし、達しないかもしれない。しかし、他のタスクがエンキューされ、APD104内で処理されるのを待っているので、APDリソースの割り当ては、全てのタスクがAPD104を同時に使用でき、各タスクがAPDの最大使用率を達成するのを保証するように管理されることが可能である。複数のタスクによるAPD104の同時使用、およびこれらの組み合わせた使用率は、予め定められた最大APD使用閾値に達することを保証する。組み合わせたCPU/APDアーキテクチャシステムのプロパティの発見は、図2に示された代表的なシステムに関連して後述する。後述するように、代表的なシステムは、プロセッサ間通信リンクで互いに接続された2つのAPUと、2つのAPUのうち第1のAPUに接続された第1のアドインボードであって、専用のAPDおよびローカルメモリを有する第1のアドインボードと、2つのAPUのうち第2のAPUに接続された第2のアドインボードであって、それぞれ自身のローカルメモリに接続された2つの専用APDを有する第2のアドインボードとを含み、両方のAPDは、共用のPCIeブリッジを通して第2のAPUに接続されている。この例示的なシステムは、それらの存在、プロパティ、相互接続および/または属性が、限定されないが例えばアプリケーションソフトウェアなどのソフトウェアに認識される場合に、プラットフォームの演算リソースをより効率的に使用するように当該ソフトウェアが使用可能な種々の特徴、プロパティおよび性能を示すのに使用される。当業者が理解するように、異なる構成および配置を有する代替的な実施形態が考えられる。本発明によれば、柔軟および拡張可能、且つ、一貫した方法で、組み合わせたCPU/APDアーキテクチャシステムアーキテクチャのプロパティを、発見可能なプラットフォームプロパティに組み込むことを可能にする、確立されたプラットフォームインフラストラクチャ発見メカニズムへのいくつかの拡張例えばACPIへの拡張が提供される。他の実施形態では、ACPIに加え、またはこれに代えて他の通信プロトコルも採用する。本発明の種々の実施形態は、CPU、APUおよびAPDプロパティを、整合したインフラストラクチャに組み込む特徴および改良を導入し、ソフトウェアを補助する。このソフトウェアを、オペレーティングシステムプラットフォーム/電力管理ソフトウェアOSPMと呼んでもよい。図2は、本明細書に開示されるモデルの一例である異機種環境のプラットフォームデザインのブロック図であり、種々のコンポーネントおよび/またはサブシステムを示し、それらの存在および/または属性の発見は、タスクの効果的なスケジューリングが実行されるように、システムおよび/またはアプリケーションソフトウェアに必要とされる情報を提供する。以下の記載において、種々のコンポーネントに関連するプロパティの概要の説明を補助するために、図2を使用する。そのような理由により、2つのAPUを有するプラットフォームを1つの例として示す。本発明は、図2の一例の実施形態に限定されず、また本発明の実施形態は、同様の方法で3つ以上または1つのAPUソケットを有する、より大きいまたは小さいプラットフォームデザインの両方を含むことを述べておく。本明細書に記載された実施形態は、例示の目的のためであり、本発明による他の実施形態が可能であることを理解すべきである。本発明による特定のプラットフォームデザインの詳細な実装プロパティは、異なってもよい。図2を参照すると、プラットフォームコンポーネントは、多数のブロックに分かれており、各ブロックは、異なる特徴、プロパティ、相互接続および/または属性を有してもよい。より小さいアプリケーションソフトウェアを含むソフトウェアは、これらの機能、プロパティ、相互接続および/または属性を列挙し、これらをコード演算に組み込む。本発明によるシステムプラットフォーム200は、第1のAPU202と、第2のAPU204とを有する。APU202およびAPU204は、第1のプロセッサ間通信リンク206によって通信できるように接続されている。1つの実施形態では、第1のプロセッサ間通信リンク206は、HyperTransportリンクである。APU202,204の各々は、複数のコアを有するCPUと、複数のSIMDコアを有するAPDと、入力/出力メモリマネジャユニットを有する。一例のシステムプラットフォーム200は、第1のメモリバス210によって第1のAPU202に接続された第1のシステムメモリ208を有する。第1のシステムメモリ208は、コヒーレントキャッシュ可能部209aと、非コヒーレントキャッシュ不可能部209bとを有する。システムプラットフォーム202は、第1のアドインボード218と、第2のアドインボード230とを有する。第1のアドインボード218は、第1のPCIeバス250によって、第1のAPU202に接続されている。第2のアドインボード230は、第2のPCIeバス252によって、第2のAPUに接続される。種々の他の実施形態では、第1のアドインボード218および第2のアドインボード230のうち1つ若しくは両方の、物理的コンポーネントおよび/またはソフトウェア、ファームウェア若しくはマイクロコードのいくつかまたは全ては、1つ以上のAPUと共に、共用の基板例えば、プリント回路基板に配置される。第1のアドインボード218は、第1の専用APD220と、メモリバス224により第1の専用APD220に接続された第1のローカルメモリ222と、例えばVBIOSUEFIGOPビデオ基本入出力システム、統合拡張ファームウェアインターフェース、グラフィックス出力プロトコルなどのファームウェアを内部に格納した第1のファームウェアメモリ226とを有する。第1のファームウェアメモリ226は、通常、不揮発性メモリとして物理的に実装されるが、このような実装は本発明の必要条件ではない。第1の専用APD220は、1つ以上のSIMDユニットを有する。第1のローカルメモリ222は、コヒーレントである第1の部分223aと、非コヒーレントである第2の部分223bとを有する。第1のローカルメモリ222は、通常、揮発性メモリとして物理的に実装されるが、このような実装は本発明の必要条件ではない。第2のアドインボード230は、第2の専用APD232と、メモリバス236により第2のAPD232に接続された第2のローカルメモリと、第3の専用APD238と、メモリバス242により第3の専用APD238に接続された第3のローカルメモリ240と、PCIeバス246により第2の専用APD232に接続されたPCIeブリッジ244とを有しており、PCIeブリッジ244は、PCIeバス248により第3の専用APD238に接続されている。第2のローカルメモリ234は、コヒーレントである第1の部分235aと、非コヒーレントである第2の部分235bとを有する。第3のローカルメモリ240は、コヒーレントである第1の部分241aと、非コヒーレントである第2の部分241bとを有する。第2および第3のローカルメモリ234,240は、通常、揮発性メモリとして物理的に実装されるが、このような実装は本発明の必要条件ではない。第2のアドインボード230は、VBIOSUEFIGOPのようなファームウェアを内部に格納した第2のファームウェアメモリ254を有する。従来、CPU機能およびリソース例えば、性能、特徴、電力および実行状態などは、CPUID命令ならびにACPIテーブルおよび方法を通じて開示され、その一方で、システムの他のデバイス、例えば周辺装置には、PCIe性能構造が使用される。これらのメカニズムを通して記載される基本特性は、リソース機能およびリソースアフィニティを含む。前者は同一の特徴および特性例えば、CPUコアで統一したコンポーネントのプールとして通常記載され、後者はそれらのリソース間のトポロジーおよび関係を記載する階層表現を一般に必要とする。これらの表示の各々は、あるタスクに対して利点を有し、従って、本発明の実施形態の列挙プロセスで保持してもよい。組み合わせたCPU/APD演算システムアーキテクチャと関連して、種々の設計原理および列挙のために開示された詳細なコンポーネントプロパティを、これらのプロパティを開示する方法およびメカニズムと共に後述する。いくつかのプロパティを、1つ以上の実行された命令例えば、CPUIDによって開示してもよいし、テーブルのような情報構造により開示してもよい。種々の別の実施形態で、特定のプロパティを、CPUID、情報構造またはこれら両方により開示してもよい。組み合わせたCPU/APD演算システムアーキテクチャプラットフォームの基本検出を、CPUID命令の実行により遂行してもよい。しかし、CPUID命令の実行は、組み合わせたCPU/APD演算システム構成要素の詳細な性能の発見については通常提供しない。正しくは、このメカニズムは、システム自身が組み合わせたCPU/APD演算システムであるか否かに関して、通常、yes/noの返答のみを提供する。従って、本発明の態様によると、組み合わせたCPU/APD演算システムアーキテクチャの詳細な特徴は、組み合わせたCPU/APD演算システムアーキテクチャプラットフォームの関連する特徴を詳細に規定する、改良されたACPIテーブルなどの情報構造を介して、提供される。1つの実施形態では、CPUが、改善されたCPUID命令を実行してもよいように、および、実行したときに、組み合わせたCPU/APDアーキテクチャシステムに関する基本情報を開示するように、CPUは実装される。この一例の実施形態で、CPUIDFn8000_001EEDXは、組み合わせたCPU/APDアーキテクチャシステムの基本情報の開示に使用される後述の表1参照。アプリケーションおよび他のソフトウェアは、組み合わせたCPU/APDアーキテクチャの受け入れ可能なプラットフォーム上で自身が実行しているか否かを識別するのに、ビット0を使用可能である。組み合わせたCPU/APDアーキテクチャの受け入れ可能なプラットフォーム上の実行は、プラットフォームが、組み合わせたCPU/APDアーキテクチャ準拠CPUおよびAPD機能、すなわち計算ユニットおよびSIMDの両方を含む少なくとも1つのAPUを有することを意味する。ソフトウェアは、改良されたACPIテーブルの内容を発見および評価して、可能な機能およびトポロジーの詳細な情報を取得してもよい。本発明は、CPUID命令についてこの特別なopコードに、または表1に示されるビットまたはフィールドの特定の配列に限定されないことを述べておく。本発明の実施形態によると、図2に示されるようなプラットフォームの発見プロセスは、ローカリティに基づき、大まかな階層構造で利用可能な構成要素に関する情報を開示する。発見プロセスは、ACPINUMAノード定義ACPI4.0仕様と概念的に同様であるが、特定のAPD/SIMDプロパティおよびIOMMU機能をノードプロパティに含むように改良されている。組み合わせたCPU/APDアーキテクチャシステムプラットフォームは、CPU/APDアーキテクチャに準拠する1つ以上の処理ユニットを含むように特徴付けられ、処理ユニットの少なくとも1つはAPUであるすなわち、CPU計算およびAPD-SIMD実行ユニットの両方を含む。処理ユニットの各々は、その物理的表現で大まかに定義され例えばAPUソケット、APDアダプタ/デバイス、例えば、CPU計算ユニットおよびキャッシュ任意に、組み合わせたアーキテクチャ準拠分散APDデバイスではどれも表現されないかもしれない、APDSIMDおよびキャッシュ任意に、従来のCPUプロパティが表現される場合、メモリコントローラおよび接続、IOMMU任意に、組み合わせたアーキテクチャ準拠分散APDについてはどれも表現されないかもしれないならびにIO接続インターフェース例えば、PCIe、HyperTransport、DMI、内部の、または他のなどであって、これらに限定されない、発見可能な内部の副構成要素およびプロパティを有する。全てのメモリリソース例えば、APDローカルメモリが必ずしもコヒーレントなグローバルメモリの部分ではないので、これらのプロパティを表現するための措置が採られる。従って、システムリソースアフィニティテーブルSRATを使用するのではなく、組み合わせたCPU/APDシステムアーキテクチャに関連する情報を提供するための改良された情報構造が提供される。とりわけ、本明細書にてコンポーネントリソースアフィニティテーブルCRATと呼ぶ本発明による新しい基礎構造と、多数の関連する副構造とが導入される。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。CRATは、例示的な実施形態における、発見可能な組み合わせたCPU/APDアーキテクチャプラットフォームプロパティのヘッド構造である。ソフトウェアは、テーブルを解析して、発見可能な処理ユニット、プロパティおよびそれらのアフィニティを見つけ、構成要素のローカリティを識別するのが可能になる。CRATの内容は、実行中にいくつかの物理コンポーネントがシステムに出入りする場合例えばCPU/APUおよび/または個別APDのホットプラグに、変更してもよい。表2は、CRATのフィールドの識別および説明である。CRATヘッダは、実際のコンポーネント情報を含む副コンポーネント構造を有し、また副コンポーネント構造の前に存在する。副コンポーネントは、後述の副コンポーネントテーブルにより記載される。本発明の種々の実施形態は、APUアフィニティ情報構造を提供する。この副コンポーネントは、APUノードコンポーネント、利用可能なI/Oインターフェースおよびこれらの帯域幅を記載し、この情報をソフトウェアに提供する。より複雑なAPUプラットフォームプロパティを適切に記載するために、同一のノードに対して複数の上記構造が表現されてもよい。表3は、CRATAPUアフィニティ情報構造のフィールドの識別および説明である。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。表4は、APUアフィニティ情報構造のフラグフィールドを記載し、パラメータについてさらに情報を提供する。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。表5は、構造のトポロジー内のメモリノードの存在を示すメモリコンポーネントアフィニティ構造を示す。同一の構造が、記載システムメモリおよび視認可能なデバイスローカルメモリリソースの両方に使用される。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。表6は、このノードのパラメータについてさらなる情報を提供するメモリアフィニティ構造のフラグフィールドを示す。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。表7は、以下のトポロジー情報をオペレーティングシステムに提供するキャッシュアフィニティ情報構造を示す。キャッシュの相対レベルすなわち、L1、L2またはL3と、当該キャッシュが属する組み合わせたアーキテクチャ近接ドメインとの間の関連と、キャッシュが可能にされたか否かについての情報と、キャッシュのサイズについての情報と、キャッシュラインについての情報とが含まれる。キャッシュアフィニティ構造は、従来のCPUキャッシュトポロジーおよびAPDキャッシュプロパティの両方を、ソフトウェアへ体系的な方法で表現するのに使用される。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。表7の‘CacheLatency’フィールドについて、種々の他の実施形態が、より大きいまたは小さい一時的な粒度、および/または異なる丸め方針を使用してもよいことを述べておく。また他の実施形態では、ベンダの製品間に存在する現在のマイクロアーキテクチャの違いを考慮してでも、キャッシュ交換方針に関する情報を有してもよいことを述べておく。表8は、CRATキャッシュアフィニティ情報構造のフラグフィールドに格納された情報の識別および説明である。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。最新のプロセッサは、TLBを有してもよい。TLBは、物理プロセッサのページ変換のキャッシュである。表9に示されたTLBアフィニティ構造は、プロセッサ用のオペレーティングシステムに対して、以下のトポロジー情報を静的に提供する。TLBコンポーネンの相対レベルすなわち、L1、L2またはL3と、コンポーネントを共用する兄弟同種プロセッサとの間の関連と、TLBアフィニティ構造が可能にされたか否かについての情報と、TLBアフィニティ構造がデータまたは命令の変換を含むか否かについての情報とが含まれる。TLBアフィニティ構造は、プラットフォームに対する静的リソース割り当て構造のリストを拡張したものである。将来のアーキテクチャのページレベル補助の変更は、このテーブルの拡張を必要とする。この構造は副構造の配列で、それぞれが異なるページサイズを記載してもよいことを述べておく。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。本発明の種々の実施形態は、オペレーティングシステムに以下のトポロジー情報を提供するFPUアフィニティ情報構造を有する。FPUと、当該FPUを共用する論理プロセッサCPUとの間の関連と、FPUのサイズが含まれる。FPUアフィニティ構造は、プラットフォームに対する静的リソース割り当て構造のリストを拡張したものである。この情報は、プロセッサが兄弟同種であると相互に関連づけるためにAVX命令を使用するアプリケーションにとって、有用となり得る。CRATFPUアフィニティ情報構造の詳細は、表11に示される。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。本発明の種々の実施形態は、IOアフィニティ情報構造表13および表14参照を有する。CRATIOアフィニティ情報構造は、オペレーティングシステムに以下のトポロジー情報を提供する。発見可能なIOインターフェースと、当該インターフェースを共有する組み合わせたCPU/APDアーキテクチャノードとの間の関連、ならびに当該インターフェースの最大帯域幅、最小帯域幅、レイテンシ評価およびサイズが含まれる。IOアフィニティ構造は、プラットフォームに対するリストリソース割り当て構造を拡張したものである。この情報は、プロセッサが兄弟同種であると相互に関連づけるためにAVX命令を使用するアプリケーションにとって、有用となり得る。これは一例の実施形態であり、他の情報構造を整えることは本発明の範囲内であることを述べておく。本発明の種々の実施形態は、コンポーネントローカリティ距離情報テーブル‘CDIT’を有する。このテーブルは、全ての組み合わせたCPU/APDアーキテクチャシステムローカリティ間のトランザクションレイテンシの観点から相対的な距離を示す、組み合わせたCPU/APDアーキテクチャプラットフォーム用のメカニズムを提供する。また本明細書では、このシステムローカリティを、組み合わせたCPU/APDアーキテクチャ近接ドメインとも呼ぶ。これらの実施形態は、ACPI4.0仕様で定義されるシステムローカリティ距離情報テーブルSLITの改良を表す。iが行列の行で、jが行列の列を表すCDIT内のそれぞれのエントリ[i,j]の値は、コンポーネントローカリティ/近接ドメインiからシステム内のあらゆる他のコンポーネントローカリティj自身を含むへの相対的な距離を示す。i,jの行および列の値は、CRATテーブル内に定義される融合近接ドメインと関連がある。この一例の実施形態では、エントリ値は、1バイトの符号のない整数である。コンポーネントローカリティiからコンポーネントローカリティjへの相対的な距離は、行列内のi×NJ番目のエントリインデックス値は2バイトの符号のない整数であり、Nは組み合わせたCPU/APDアーキテクチャ近接ドメインの数である。コンポーネントローカリティからそれ自身への相対的な距離を除き、それぞれの相対的な距離は行列内に2回格納される。これは、コンポーネントローカリティ間の2つの方向に対する相対的な距離が異なるシナリオを記載する性能を提供する。1つのコンポーネントローカリティが他から到達不可能であれば、そのテーブルエントリに値2550xFFが記憶される。コンポーネントローカリティからそれ自身への相対的な距離は値10に統一され、距離値0~9は予約されており意味を持たない。本発明の種々の実施形態は、組み合わせたCPU/APDアーキテクチャテーブル発見デバイスを有する。組み合わせたCPU/APDアーキテクチャデバイスACPIノードに配置される‘CRAT’メソッドが評価される場合に、CRATが返される。組み合わせたCPU/APDアーキテクチャデバイスACPIノードに配置される‘CDIT’メソッドが評価される場合に、コンポーネントローカリティ距離情報テーブルCDITが返される。組み合わせたCPU/APDアーキテクチャ発見デバイスが存在することで、組み合わせたCPU/APDアーキテクチャコンポーネントのホットプラグ通知およびホットアンプラグ通知のための一定の通知メカニズムが可能になり、その一方で、この通知がテーブルおよび方法の再評価を必要とする。この論理ACPIデバイスは、組み合わせたCPU/APDアーキテクチャシステム互換プラットフォームについて必要とされる。図5は、本発明による発見およびレポーティング報告プロセス、組み合わせたCPU/APDアーキテクチャシステムのプロパティおよびトポロジーを示すフローチャートである。発見されたプロパティは、組み合わせたCPU/APDアーキテクチャシステムの演算リソース内の演算タスクのスケジューリングおよび分散に関連し得る。そのような演算タスクのスケジューリングおよび分散を、オペレーティングシステム、アプリケーションソフトウェアまたはこれら両方が扱ってもよい。一例のプロセスは、コアの数、キャッシュの数、キャッシュアフィニティ、階層およびレイテンシ、TLB、FPU、実行状態、電力状態などの1つ以上の様々なCPU計算コアプロパティの発見502を含む。図5の一例のプロセスは、発見504、発見506、発見508、発見510、エンコーディング512、提供514をさらに含む。APD計算コアのプロパティの発見504は、SIMDサイズ、SIMD配列、ローカルデータストアアフィニティ、ワークキュープロパティ、IOMMUアフィニティおよびハードウェアコンテキストメモリサイズのうち1つ以上の発見を含む。補助コンポーネントのプロパティの発見506は、バススイッチ、メモリコントローラチャネルおよびバンクのうち1つ以上の発見を含む。システムメモリおよびAPDローカルメモリプロパティの発見508は、コヒーレントおよび非コヒーレントアクセス範囲の発見を含むが、これらに限定されない。1つ以上のデータパスのプロパティの発見510は、タイプ、幅、速度、コヒーレンスおよびレイテンシのうち1つ以上の発見を含む。エンコーディング512は、発見されたプロパティの少なくとも一部のエンコーディングである。提供514は、1つ以上の情報構造を提供し、1つ以上の情報構造のうち少なくとも1つに情報を記憶する。記憶された情報は、発見されたプロパティの少なくとも一部を表す。本発明は、種々のプロパティが発見される特別な順序に限定されないことを述べておく。また本発明は、発見されたプロパティが記憶され、エンコードされ、レポートされ、そうでなければ通信され、送られ、または任意のハードウェア、ファームウェア、オペレーティングシステム若しくはアプリケーションソフトウェアにより使用、処理若しくは検査が可能にされる特別な順序に限定されないことをさらに述べておく。なお、本発明は、本発明による1つ以上の情報構造が記憶される特定のメモリアドレス範囲またはメモリの物理的タイプに限定されないことをさらに述べておく。本発明は、プロパティ発見の特定の手段または方法に限定されない。例えば、限定するものではないが、複数の演算リソースのうち少なくとも1つによって、1つ以上の命令を実行することでいくつかのプロパティを開示、または発見してもよく、そのような命令の実行は、1つ以上のレジスタ、または1つ以上のメモリ位置内の情報を提供する。なお、組み合わせたCPU/APDアーキテクチャシステムの演算リソース内で演算タスクをスケジュールまたは分散するために、オペレーティングシステムまたはアプリケーションソフトウェアによりどの特定のプロパティが使用されるかによって、本発明は限定されないことをさらに述べておく。図6は、本発明による組み合わせたCPU/APDアーキテクチャシステムを作動する一例の方法のフローチャートである。この一例の方法は、発見602、提供604、判断606、その後の判断および発見608を含む。発見602は、組み合わせたCPU/APDアーキテクチャシステム内の演算タスクをスケジューリングし、分散に関連する1つ以上のプロパティを発見する。提供604は、1つ以上の情報構造を提供し、1つ以上の情報構造のうち少なくとも1つに情報を記憶する。記憶された情報は、発見されたプロパティの少なくとも一部を表す。判断606は、組み合わせたCPU/APDアーキテクチャシステムに1つ以上のハードウェア資源が追加または削除されたか否かの判断である。発見608は、組み合わせたCPU/APDアーキテクチャシステムに1つ以上のハードウェアリソースが追加または削除されたか否かの判断の後、組み合わせたCPU/APDシステム内の演算タスクをスケジューリングし、分散に関連する少なくとも1つのプロパティを発見する。プロパティ情報が、演算タスクのスケジューリングおよび/または分散において組み合わせたCPU/APDアーキテクチャシステムの1つ以上の演算リソースによってプロパティ情報が使用される場合に、プロパティは、演算タスクのスケジューリングおよび分散に関連する。図6の一例の実施形態の記載に関して、ハードウェアリソースは、iオペレーティングシステムソフトウェア、アプリケーションソフトウェアまたはこれら両方のスケジューリングおよび分散ロジックにより1つ以上の演算タスクを実行するよう割り当てられ得る少なくとも1つの演算リソース、または、iiオペレーティングシステムソフトウェア、アプリケーションソフトウェアまたはこれら両方のスケジューリングおよび分散ロジックにより1つ以上の演算タスクへ割り当て可能なメモリ、である。ハードウェアリソースの追加は、ボードまたはカードをシステム内へホットプラグする結果として起こりうることを述べておく。代替的に、ハードウェアリソースはシステム内に物理的に存在してもよいが、ハードウェアリソースをオペレーティングシステムソフトウェア、アプリケーションソフトウェアまたはこれら両方のスケジューリングおよび分散ロジックに可能または視認可能にするファームウェアまたはソフトウェアの動作を通して、当該ハードウェアリソースが追加されるまで、演算タスクには割り当てできない。このケースでは、追加するを有効にするといってもよい。同様にハードウェアリソースを、物理的に取り除くことによって、不可能にすることによって、またはオペレーティングシステムソフトウェア、アプリケーションソフトウェア若しくはこれら両方のスケジューリングおよび分散ロジックに視認可能でなくすることによって、システムから取り除いてもよい。このケースでは、取り除くを無効にするといってもよい。本発明は、ハードウェアリソースを有効または無効にするあらゆる特別な手段または方法に限定されないことを述べておく。そのようなハードウェアリソースを有効にして特定の実行レベルを達成し、あるいは無効にして電力消費を減少してもよい。代替的に、そのハードウェアリソースは他の目的で予約されたので、ハードウェアリソースを無効にする、すなわちスケジューリングおよび分散ロジックからタスクを受け取ることを不可能にしてもよい。本発明の一例の実施形態において、システムは、所定の物理記憶サイズおよび論理配置を有する第1のコンピュータメモリと、所定数の発見可能なプロパティを有する第1のCPUであって、第1のコンピュータメモリに接続された第1のCPUと、所定数の発見可能なプロパティを有する第1のAPDであって、第1のコンピュータメモリに接続された第1のAPDと、第1のCPUの発見可能なプロパティのうち少なくとも1つおよび第1のAPDの発見可能なプロパティのうち少なくとも1つを判断し、発見されたプロパティをエンコードし、エンコードされたプロパティをメモリテーブル内に記憶する手段とを含むが、それらに限定されない。判断する手段は、第1のCPUによって実行されるソフトウェア、第1のAPDによって実行されるソフトウェアまたは第1のCPUおよび第1のAPDの両方によって実行されるソフトウェアを含むが、それらに限定されないことを述べておく。本発明による組み合わせたCPU/APDアーキテクチャシステムを作動する一例の方法は、1つ以上のCPU計算コアのプロパティを発見するステップと、1つ以上のAPD計算コアのプロパティを発見するステップと、1つ以上の補助コンポーネントのプロパティを発見するステップと、システムメモリのプロパティを発見するステップと、APDローカルメモリが存在する場合に、APDローカルメモリのプロパティを発見するステップと、タイプ、幅、速度、コヒーレンスおよびレイテンシのうち1つ以上を含むデータパスのプロパティを発見するステップと、発見されたプロパティの少なくとも1つをエンコードするステップと、1つ以上の情報構造を提供し、1つ以上の情報構造のうち少なくとも1つに情報を記憶し、記憶された情報は、発見されたプロパティの少なくとも1つを表すステップと、を有する。通常、発見されたプロパティは、組み合わせたCPU/APDアーキテクチャシステム内の複数の演算リソースのうち1つ以上への演算タスクのスケジューリングに関連する。いくつかの実施形態では、発見されたプロパティの少なくとも1つは複数の演算リソースのうち少なくとも1つで1つ以上の命令を実行することにより発見され、そのような命令の実行は、1つ以上の命令を実行する演算リソースの1つ以上のレジスタ内の情報または演算リソースに接続されたメモリの1つ以上のメモリ位置内の情報を提供する。種々の代替的な実施形態において、組み合わせたCPU/APDアーキテクチャシステムを作動する方法は、少なくとも1つのハードウェアリソースの追加または除去の検出の後に、1つ以上の発見動作を繰り返すステップを含む。このようにして、演算タスクのスケジューリングおよび分散に関連する情報を動的に更新し、特定の時点で利用可能なハードウェアリソースを反映してもよい。本発明による組み合わせたCPU/APDアーキテクチャシステムを作動する他の一例の方法は、組み合わせたCPU/APDアーキテクチャシステムの作動により、組み合わせたCPU/APDアーキテクチャシステム内の演算タスクのスケジューリングおよび分散に関連するプロパティを発見するステップと、組み合わせたCPU/APDアーキテクチャシステムの作動により、1つ以上の情報構造を提供し、1つ以上の情報構造のうち少なくとも1つに情報を記憶し、記憶された情報は発見されたプロパティの少なくとも1つを表すステップと、組み合わせたCPU/APDアーキテクチャシステムの作動により、1つ以上のハードウェアリソースが、組み合わせたCPU/APDアーキテクチャシステムに追加または削除されたか否かを判断するステップと、1つ以上のハードウェアリソースが、組み合わせたCPU/APDアーキテクチャシステムに追加または削除されたことを判断した後に、組み合わせたCPU/APDアーキテクチャシステムの作動により、組み合わせたCPU/APDシステム内の演算タスクのスケジューリングおよび分散に関連する少なくとも1つのプロパティを発見するステップと、を含む。結論本発明は、x86CPUコアとAPDの組み合わせに限定されず、APDと組み合わせた種々のCPUまたは命令セットアーキテクチャに適用可能であることを述べておく。本明細書に示され記載された例示的な方法および機器は、少なくとも計算装置ノートブック、デスクトップ、サーバ、ハンドヘルド、モバイルおよびタブレットコンピュータ、セットトップボックス、メディアサーバ、テレビなどを含むが、それらに限定されない、グラフィックス処理、異機種環境の演算リソースに関する統合プログラミング環境の分野のアプリケーションを見出す。本発明は前述の例示的な実施形態に限定されず、添付の請求項およびそれらの均等物の範囲内の全ての実施形態を包含することを理解すべきである。"