JP2003233508A - コンピューティングシステム中のコプロセッサの計算リソースを制御するための方法およびコンピューティング装置 - Google Patents
コンピューティングシステム中のコプロセッサの計算リソースを制御するための方法およびコンピューティング装置Info
- Publication number
- JP2003233508A JP2003233508A JP2003000689A JP2003000689A JP2003233508A JP 2003233508 A JP2003233508 A JP 2003233508A JP 2003000689 A JP2003000689 A JP 2003000689A JP 2003000689 A JP2003000689 A JP 2003000689A JP 2003233508 A JP2003233508 A JP 2003233508A
- Authority
- JP
- Japan
- Prior art keywords
- coprocessor
- command buffer
- computer
- hardware
- managed object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 81
- 238000004364 calculation method Methods 0.000 title abstract description 6
- 239000000872 buffer Substances 0.000 claims abstract description 324
- 238000012545 processing Methods 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 6
- 238000010276 construction Methods 0.000 claims 3
- 238000001514 detection method Methods 0.000 claims 3
- 230000009466 transformation Effects 0.000 claims 1
- 239000000306 component Substances 0.000 description 25
- 230000008901 benefit Effects 0.000 description 23
- 238000007726 management method Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 22
- 230000007246 mechanism Effects 0.000 description 21
- 230000008569 process Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 15
- 230000002093 peripheral effect Effects 0.000 description 12
- 239000002609 medium Substances 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 238000011068 loading method Methods 0.000 description 6
- 230000006855 networking Effects 0.000 description 6
- 230000011664 signaling Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000005055 memory storage Effects 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000007717 exclusion Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 101100005280 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) cat-3 gene Proteins 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 1
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000007853 buffer solution Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009429 electrical wiring Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000001459 lithography Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 239000006163 transport media Substances 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Image Processing (AREA)
Abstract
クスプロセッサなどのコプロセッサの計算リソースを管
理するためのシステムおよび方法を提供する。 【解決手段】 コマンドバッファが作成され初期化され
初期化状態201に入る。スレッドはコマンドバッファ
をサブミットする。コマンドバッファは待機状態203
に入り、待機基準を満たした後コマンドバッファはレデ
ィ状態204に入る。コマンドバッファを実行するもの
として選択した後、スタンバイ状態205に入る。シス
テムはコンテキストをコマンドバッファの要求するコン
テキストに切り換え、コマンドバッファをハードウェア
にサブミットする。コマンドバッファは実行されるまで
実行状態206のままである。コマンドバッファが実行
され終了状態207に入り、再初期化するのに利用可能
となり、初期化状態201で別のスレッドから利用可能
となる。
Description
グシステム中のコプロセッサの計算リソースを制御する
ための方法およびコンピューティング装置に関する。
アリングシステムに始まり、オペレーティングシステム
(OS)は、複数のアプリケーションが互いについての認識
を有さずにコンピュータの計算リソースを共用すること
を可能にする多数の方法を実装してきた。各アプリケー
ションに小さな「タイムスライス」を割り振り、「タイ
ムスライス」が満了したときに中断することにより、コ
ンピュータは、各アプリケーションがコンピュータ上で
単独で動作しているかのように各アプリケーションを呈
示することができる。例えば、2つのアプリケーション
は、1ミリ秒のタイムスライスを用いてシステム上で動
作することができる。このような場合、各アプリケーシ
ョンは、それぞれ毎秒500タイムスライスを得て、コ
ンピュータ上で単独で動作している場合の速度の半分よ
りも幾分低速に動作する(2つの間でスワップするのに
必要なオーバーヘッドのため)。タイムスライスを長く
するとオーバーヘッドが減少するが、実行の細分性も粗
くなり、タイミングに敏感なアプリケーションに対して
システムが適さなくなる。
リソースを共用することを可能にするソフトウェアモデ
ルをアプリケーションに提供する仮想メモリ、プロセ
ス、およびスレッドなどの様々な抽象化の開発に、多大
の労力が注がれてきた。しかし、これらの抽象化は、グ
ラフィックスプロセッサ(GPU)ならびにホストマイクロ
プロセッサでの計算リソースの管理に適用できるように
はまだ向上していない。
クスプロセッサは著しく実用的になった。PCグラフィッ
クスチップ中のトランジスタの数は、Mooreの法則が示
唆するよりもずっと早く増加している。すなわち、グラ
フィックスチップ中のトランジスタの数は、1995年
の約200000トランジスタから2001年には60
000000トランジスタまで増加した。このチップの
計算能力もトランジスタの数と共に増加した。すなわち
グラフィックスチップは、より多くのデータを処理でき
るだけでなく、データに対してより複雑な計算を適用す
ることもできる。その結果、今日では、コンピュータシ
ステム中のグラフィックスチップは、ホストマイクロプ
ロセッサの計算リソースを補う計算リソースとみなすこ
とができる。
ソフトウェアモデルは、ホストマイクロプロセッサによ
って呈示されるソフトウェアモデルとは幾分異なる。ど
ちらのモデルも、プロセッサが行っていることを正確に
記述する1組のデータであるコンテキストを含む。コン
テキストは、現在実行されているどんなオペレーション
の中間結果も含むデータレジスタ、またはプロセッサが
あるオペレーションを実行するときのプロセッサの挙動
を変更する制御レジスタを含むことができる。32ビッ
トINTEL(登録商標)プロセッサ上では、EAXデータレジス
タがアキュムレータとして使用され、乗算の実行、関数
の返り値の保持などが行われる。浮動小数点制御語(FPC
W)は、浮動小数点命令が不正確な結果をどのように丸め
るか(単精度、倍精度、または拡張精度、正または負の
無限大に向けて、ゼロに向けて、あるいは最近隣に向け
てなど)を制御する制御レジスタである。しかし通例と
して、グラフィックスプロセッサは、汎用マイクロプロ
セッサよりも制御レジスタ中にずっと多くの状態を有す
る。グラフィックスプロセッサの高い性能は、そのパイ
プライン型の、柔軟で、しかも固定の関数アーキテクチ
ャに由来する。グラフィックスプロセッサで実行される
オペレーションをセットアップするには、多数の制御レ
ジスタ状態が必要である。例えば、1組の制御レジスタ
は、(a)現在入力として供給されている1つまたは複数
のテクスチャマップのベースアドレスおよび寸法、(b)
テクスチャ値と補間されるカラー値との間で実行される
ブレンドオペレーションであるテクスチャアドレッシン
グモードおよびフィルタリングモード、(c)フラグメン
トのアルファ値およびZ値に適用し、フラグメントをカ
ラーバッファに組み込むかどうかを判定するテスト、
(d)カラーフラグメントをカラーバッファに組み込むと
きに最終レンダリングステージで使用するアルファブレ
ンドオペレーションを含むことができる。グラフィック
スプロセッサはその処理を制御するイテレータ(iterat
or)などの多数のスクラッチレジスタを含むが、一般に
は、コンテキスト切換えを保存することが必要な細分性
に対してコンテキスト切換えは許可されないので、コン
テキストが切り換わる間にそれらのレジスタを保存する
必要はない。いずれにしても、コンテキスト切換え中に
そのようなレジスタを保存しなければならない場合であ
っても、一般にレジスタはソフトウェアアプリケーショ
ンから直接利用可能ではない。クライアントソフトウェ
アに対する揮発性レジスタ状態の不透明度は、グラフィ
ックスプロセッサによって呈示されるソフトウェアモデ
ルを、汎用マイクロプロセッサによって呈示されるソフ
トウェアモデルと比較したときの単なる1つの相違に過
ぎない。
のコプロセッサの計算リソースを管理する試みは、良く
てもその場しのぎのものであった。歴史的には、一度に
1つのアプリケーションしかアクティブではなかったの
で、この計算リソースを注意深く管理することについて
多くの要求があった。3Dアクセラレーションハードウ
ェアが当初3Dモデリングおよび3Dアニメーションなど
を加速するように設計された市販のワークステーション
アプリケーションの状況では、エンドユーザは、一般に
一度に1つのアプリケーションを操作する。複数のアプ
リケーションが所与の時間にアクティブであっても、エ
ンドユーザは、別のアプリケーションに切り換えるまで
に各アプリケーション上で著しい量の作業を実行するこ
とになり、アプリケーション間の切換えの細分性は、数
秒程度、あるいはそれよりずっと長い。ゲームアプリケ
ーションは、グラフィックスハードウェアアクセラレー
ションからかなりの利益を得るアプリケーションの第2
の組であり、やはり一般に一度に1つのアプリケーショ
ンが動作する。実際、WINDOWS(登録商標)中のDIRECTX
(登録商標)アプリケーションプログラミングインターフ
ェース(API)により、特にゲームアプリケーションがコ
ンピュータシステム、具体的にはグラフィックスチップ
中のハードウェアリソースへの排他的アクセスを得るこ
とが可能になる。
につれ、グラフィックスチップからの著しい計算リソー
スを要求するアクティブなアプリケーションの数が増加
し、このアプリケーション間の切換えの細分性がより細
かくなることを予期することは妥当なことである。ある
領域では、この傾向は既に明らかとなっている。例え
ば、ハードウェアアクセラレーテッドモーション補償
(「mocomp」)およびIDCT(integer discrete cosine tr
ansform)などのビデオ復号化アクセラレーションが、2
001年にほとんどのグラフィックスチップに追加され
た。ビデオ再生アプリケーションを立ち上げ、同時に他
のアプリケーションを実行することが可能であるので、
ビデオを再生し、グラフィックスプロセッサからの計算
リソースを要求する他の任意のアプリケーションを実行
することは、ビデオ再生と他のアプリケーションがどち
らも高品質なエンドユーザ体験を達成することを保証す
るために、それらのリソースの注意深い管理が必要とな
る。
を求める要求を増大させる他の潜在的ソースには、複数
のアプリケーションの出力の合成や、GDI(グラフィカル
デベロッパインターフェース)またはGDI+などの2Dグラ
フィックスAPIによるハードウェアアクセラレーション
の利用率の向上が含まれる。手短に言えば、コンピュー
ティングシステム中のグラフィックスプロセッサの計算
リソースの効率的かつ効果的な管理の必要は、グラフィ
ックプロセッサ自体の能力、柔軟性、および速度の向
上、ならびにグラフィックスプロセッサの計算リソース
を同時に使用するアプリケーションの数の増加と共にの
み増大することになる。
に関連した技術内容が開示されている(例えば、非特許
文献1〜4参照)。
with Modula-2」J.Pascal AdaModula 2、1986年、
5(5)、p.46−51
phics CPU with Direct Unified Memory Controller Su
itable for Car Car Information and Control Syste
m」Proceeding of the IEEE 2001 Custom Integrated C
ircuits Conference、2001年、p.421−423
Design, Boosts Performance」Computer Design、19
86年、25(11)、p.73−77
sts Virtual Memory」ComputerDesign、1986年、2
5(7)、p.43−44
タスク環境で複数のアプリケーションを効率的に実行す
ることを容易にするという点において、上記従来技術に
は未だ改善の余地があった。
たもので、その目的とするところは、計算リソースの効
率的な管理を可能とするコンピューティングシステム中
のコプロセッサの計算リソースを制御するための方法お
よびコンピューティング装置を提供することにある。
は、コンピューティングシステム中のグラフィックスプ
ロセッサなどのコプロセッサの計算リソースを管理する
ためのシステムおよび方法を提供する。このシステムお
よび方法により、コプロセッサの計算リソースの管理が
例示され、マルチタスク環境での複数のアプリケーショ
ンの効率的な実行が容易となる。複数の実行スレッドが
コマンドバッファを並列に構成することを可能にし、オ
ペレーティングシステムでスケジューリングおよびディ
スパッチするためにこのコマンドバッファをサブミット
(submit)し、かつコマンドバッファの完了を通知する
割込みを処理することにより、このシステムは、このシ
ステムで利用可能な複数のアプリケーションが計算リソ
ースを効率的に共有することを可能とする。
ロセッサを有するホストコンピューティングシステム中
のコプロセッサの計算リソースを制御する方法を提供す
る。この方法は、ホストプロセッサによってコプロセッ
サにサブミットされるコマンドバッファでコンピューテ
ィングシステムの1つまたは複数のコプロセッサを制御
するステップと、コマンドバッファ中のコマンドに応答
してホストコンピューティングシステムにデータを送り
戻すステップと、ホストコンピューティングシステム中
に含まれるオブジェクトを管理することによってコマン
ドバッファの伝送をスケジューリングするステップとを
含み、コプロセッサの計算リソースは、ホストコンピュ
ーティングシステム上でインスタンス化された複数のア
プリケーションから同時に利用可能である。
は、本発明は、コンピューティング装置と、ホストプロ
セッサを有するホストコンピューティングシステム中の
コプロセッサの計算リソースを制御するための複数のコ
ンピュータ実行可能モジュールが格納されたコンピュー
タ読み取り可能な記録媒体とを提供する。このコンピュ
ーティング装置およびコンピュータ実行可能モジュール
はそれぞれ、ホストプロセッサによってコプロセッサに
サブミットされるコマンドバッファでコンピューティン
グシステムのコプロセッサを制御し、かつコマンドバッ
ファの伝送をスケジューリングするための管理オブジェ
クトを含む。このコンピューティング装置およびコンピ
ュータ実行可能モジュールはまた、コマンドバッファ中
のコマンドに応答してホストコンピューティングシステ
ムにデータを送り戻すための手段をそれぞれ含み、それ
によってコプロセッサの計算リソースは、ホストコンピ
ューティングシステム上でインスタンス化された複数の
アプリケーションから同時に利用可能である。
説明する。
スプロセッサの計算リソースを管理するためのシステム
および方法をさらに説明する。
施形態を詳細に説明する。
の計算リソースを求める要求を増大させる、多くの現時
点でのソースおよび潜在的ソースが存在する。これらの
ソースのうちの複数がほぼ同時にグラフィックスプロセ
ッサへのアクセスを要求するとき、グラフィックスプロ
セッサは、両方のソースに対して要求を十分に満たすよ
うに自由に機能できない可能性がある。したがって、本
発明は、グラフィックスプロセッサなどのコプロセッサ
装置の計算リソースが要求側アプリケーションに効率的
に配布されることを保証するために、複数のアプリケー
ションによるグラフィックス処理要求のスケジューリン
グおよびディスパッチを管理する様々な方式を提供す
る。したがって、本発明は、ホストコンピューティング
システム中のコプロセッサの計算リソースを制御するた
めの方法およびシステムを提供する。このコプロセッサ
は、ホストプロセッサによってサブミットされるコマン
ドバッファで制御され、コプロセッサへのコマンドバッ
ファの伝送のスケジューリングは、ホストコンピューテ
ィングシステムの、オペレーティングシステムなどのオ
ブジェクトによって実施され、コプロセッサの計算リソ
ースが複数のアプリケーションに対して同時に利用可能
となる。
語を参照するための用語の簡潔なリストと、対応する定
義である。
(AGP)は、ホストマイクロプロセッサからグラフィック
ス周辺機器へのデータの迅速な伝送を容易にするように
設計された高速バスである。
ドウェアによる消費のために用意されたハードウェア特
有の描画コマンドのストリームである。例えば下記のト
ークンストリームについて定義を参照されたい。
実行するのに利用するハードウェア状態である。本明細
書では、スレッドコンテキストは、ホストマイクロプロ
セッサのハードウェア状態を指し、ハードウェアコンテ
キストは、グラフィックスハードウェアの状態を指す。
コンテキストは、(ホスト上の)命令または(グラフィッ
クスチップ上の)コマンドのストリームが実行できるよ
うになる前にロードされる。
プロセッサを含む。
は、ハードウェアドライバと対話するためにオペレーテ
ィングシステムが使用する標準化インターフェースであ
る。
ハードウェアに対する一連のコマンドであり、それによ
って、元の一連のコマンドが再び実行された場合に、コ
マンドをより効率的に、容易に「再生」することができ
るとされている。表示リストは、しばしばアプリケーシ
ョンに対して不透明である。すなわち表示リストは編集
することができない。表示リストはハードウェア特有の
形式に変換されているからである。
複数のプロセスに同時にリンクすることができ、複数の
プロセスで同時に共用することができる実行可能コード
の単位である。この文書では、DLL中のコードはユーザ
モードで実行されると想定する。
機器がホストアクセス可能メモリを直接読み書きするこ
とを可能にするハードウェア機能である。
は割込みに応答して実行されるが、割込みサービスルー
チン(下記のISRを参照)よりもわずかに低い優先順位で
動作する、WINDOWS(登録商標)などのオペレーティング
システムによって呼び出されるルーチンである。通例と
して、割込みサービスルーチンは、割込みに応答するの
に必要な他の作業を行うために、割込みを解決し、DPC
を待ち行列に入れるのに必要な最小限の処理を行うべき
である。
ック転送(BLT)などのグラフィックス用の描画コマン
ド、ならびに三角形ラスタ化などの3Dグラフィックス
プリミティブ描画プロセスを加速するように設計された
ハードウェア周辺機器である。この点で、グラフィック
スプロセッサを、ホストマイクロプロセッサのより一般
的で扱いにくいリソースと対比することができる。
ィングシステム、および/またはオペレーティングシス
テム中で動作するアプリケーションを実行するプロセッ
サである。システム中のホストマイクロプロセッサは、
グラフィックスプロセッサ、またはシステム中の他の計
算リソースとは対照的である。
セッサの現プロセスからホストマイクロプロセッサをそ
らし、制御をメモリ中の特別な位置に移転することを可
能にするハードウェア機能である。オペレーティングシ
ステムはこの機構を使用して、割込みサービスルーチン
(ISR)として知られるドライバコードを呼び出し、割込
みに応答する。
バによって制御されるハードウェアが割込みを信号で知
らせたときにオペレーティングシステムによって呼び出
される、通常はデバイスドライバ中の関数である。例え
ばDPCも参照されたい。
コードからオブジェクトコードへの変換で余分のステッ
プを導入するコンパイルプロセスである。この点で、ソ
ースコードは、容易にコンパイル可能なハードウェア独
立の中間言語に変換され、この中間言語がクライアント
コンピュータに送られ、そこで中間言語は、クライアン
ト上で動作することができるオブジェクトコードに「ジ
ャストインタイムに」コンパイルされる。
ドウェアリソースへの直接アクセスを有することを可能
にする特権プロセッサモードである。
の仕事の論理的分割である。WINDOWS(登録商標)では、
プロセスは、仮想アドレス空間、実行可能プログラム、
1つまたは複数の実行スレッド、ユーザのリソース割当
量の一部、およびオペレーティングシステムがプロセス
のスレッドに割り振ったシステムリソースを有する。
アクセス、または単一のスレッドへの排他的アクセスを
与えることができる同期プリミティブである。
ョン、mutex、セマフォー、またはイベントなどの共用
リソースへの複数のスレッドのアクセスを同期するのに
使用することができるオブジェクトである。
モードスタック、カーネルモードスタック、および1組
のレジスタ値を有する実行可能エンティティである。
ーションを記述するハードウェア独立なトークンのスト
リームである。トークンストリームは、ドライバなどの
ハードウェア特有のソフトウェアコンポーネントによっ
て、コマンドバッファまたは他の一連のハードウェアコ
マンドに変換することができる。
ソースに直接アクセスすることを許可されない、ホスト
マイクロプロセッサのモードである。
ーバ装置は、コンピュータネットワークの一部として、
あるいは分散コンピューティング環境中に配置できるこ
とを当業者は理解できよう。この点で、本発明は、任意
の数のメモリ装置または記憶装置と、コプロセッサのリ
ソースに要求を行うことができる、任意の数の記憶装置
または記憶ボリュームにわたって生じる、任意の数のア
プリケーションおよびプロセスとを備える任意のコンピ
ュータシステムに関する。本発明は、リモートまたはロ
ーカルの記憶装置を有する、ネットワーク環境に配置さ
れたサーバコンピュータとクライアントコンピュータを
備える環境、すなわち分散コンピューティング環境に適
用することができる。本発明はまた、リモートまたはロ
ーカルのサービスと共に情報を生成、受信、および送信
するためのプログラミング言語機能、解釈能力および実
行能力を備えるスタンドアロンのコンピューティング装
置にも適用することができる。
ィング装置間およびコンピューティングシステム間の直
接の交換によりコンピュータリソースとサービスを共有
することを容易にする。このリソースとサービスには、
情報の交換、キャッシュ記憶、およびファイルのディス
ク記憶が含まれる。分散コンピューティングはネットワ
ーク接続性を利用して、クライアントがその全体の能力
を活用して企業全体に利益をもたらすことを可能にす
る。これに関して、様々な装置が、本発明の技法によっ
て管理されるコプロセッシングリソースに対して要求を
行うことができるアプリケーション、オブジェクト、ま
たはリソースを有することができる。
は分散コンピューティング環境の略図を示す。この分散
コンピューティング環境は、コンピューティングオブジ
ェクト10a、10bなど、ならびにコンピューティング
オブジェクトまたはコンピューティング装置110a、
110b、110cなどを含む。これらのオブジェクト
は、プログラム、メソッド、データストア、プログラマ
ブルロジックなどを含むことができる。このオブジェク
トは、PDA、テレビジョン、MP3プレーヤ、パーソナル
コンピュータなど、同じ装置あるいは異なる装置の一部
を有することができる。各オブジェクトは、通信ネット
ワーク14によって相互に通信することができる。この
ネットワーク自体は、図1Aのシステムにサービスを提
供する他のコンピューティングオブジェクトとコンピュ
ーティング装置を含むことができる。本発明の一態様に
よれば、各オブジェクト10a、10bまたは110a
〜110eは、ホストシステムのコプロセッシングリソ
ースを要求する可能性のあるアプリケーションを含む可
能性がある。
は、従来はもっぱらクライアントとして使用されてきた
コンピュータが相互に直接通信し、ネットワークにとっ
て最も効果的な役割が何であるかを推定して、クライア
ントとサーバのどちらとしても機能することができる。
これによりサーバの負荷が軽減され、すべてのクライア
ントが他のクライアント上で利用可能なリソースにアク
セスすることが可能になり、その結果ネットワーク全体
の機能と効率が向上する。したがって、本発明によるコ
プロセッシングリソースの管理は、クライアントとサー
バの間で分散することができ、ネットワーク全体にとっ
て効率的な方式で専用のコプロセッシングを管理するよ
うに動作することができる。
々の地理的境界を越えてサービスと機能をより効率的に
配信するための助けとすることができる。さらに分散コ
ンピューティングは、データが消費される地点のより近
くにデータを移動させることができ、ネットワークのキ
ャッシング機構として機能する。分散コンピューティン
グはまた、コンピューティングネットワークがインテリ
ジェントエージェントを使用して動的に協働することも
可能にする。エージェントはピアコンピュータ上に常駐
し、様々な種類の情報を通信する。エージェントは、他
のピアシステムの代わりにタスクを開始することもでき
る。例えば、インテリジェントエージェントを使用し
て、ネットワーク上のタスクを優先順位付けし、トラフ
ィックフローを変更し、ローカルにファイルを検索し、
あるいはウィルスなど異常な挙動を判定し、ネットワー
クに影響を及ぼす前にそれを阻止することができる。他
のすべての種類のサービスも同様に企図することができ
る。実際には、非常に専門化されたコプロセッシングリ
ソースは、物理的に1つまたは複数の場所に位置する可
能性があり、そのリソースの使用を要求するアプリケー
ションの管理は、そのようなシステムで非常に有用であ
る。
のコンピューティング装置10a、10bまたは110
a、110b等上でホストできることも理解されよう。
したがって、図の物理的環境では接続された装置をコン
ピュータとして示しているが、この図は単なる例であ
り、その代わりに、PDA、テレビジョン、MP3プレーヤ
など様々なデジタル装置や、インターフェース、COMオ
ブジェクトなどのソフトウェアオブジェクトを含む物理
的環境を図示または説明することもできる。
るシステム、コンポーネント、およびネットワーク構成
には様々なものがある。例えば、ワイヤラインシステム
または無線システム、ローカルネットワークまたは広域
分散ネットワークによってコンピュータシステムを共に
接続することができる。現在ネットワークの多くはイン
ターネットに結合されているが、インターネットは広域
分散コンピューティングのためのインフラストラクチャ
を提供し、多くの異なるネットワークを包含する。
線、データ(無線および有線の両方)、音声(例えば電
話)、およびエンターテイメントメディアなどの固有の
プロトコルをそれぞれサポートすることができる、少な
くとも4つの異なるネットワーク移送媒体が存在する。
光スイッチおよび電気器具などの大部分の家庭制御装置
は、接続性のために電力線を使用することができる。デ
ータサービスは、ブロードバンド(例えば、DSLまたはケ
ーブルモデム)として家庭に入ることができ、無線(例え
ばHomeRFまたは802.11b)接続性または有線(例えば
Home PNA、Cat 5、さらには電力線)接続性を使用して
家庭内でアクセス可能である。音声トラフィックは、有
線(例えばCat 3)または無線(例えば携帯電話)として家
庭に入ることができ、Cat 3配線を使用して家庭内に配
布することができる。エンターテイメントメディアは、
衛星またはケーブルを介して家庭に入ることができ、通
常は同軸ケーブルを使用して家庭内に配布される。IEEE
1394およびDVIもメディア装置のクラスタ用のデジ
タル相互接続として登場しつつある。これらのネットワ
ーク環境のすべて、およびプロトコル標準として登場す
る可能性のある他の環境は、相互接続してイントラネッ
トを形成することができ、イントラネットはインターネ
ットによって外界に接続することができる。手短に言え
ば、データを格納および伝送するための様々な異なるデ
ータ源が存在し、したがってコンピューティング装置
は、グラフィックスチップによるデータの処理に付随す
る、アクセスまたは使用されるデータなどのデータを共
用する方法が必要となる。
タネットワーキングの分野では非常によく知られるTCP/
IPプロトコル一式を利用するネットワークとゲートウェ
イの集合を指す。TCP/IPは「伝送制御プロトコル/イン
ターネットプロトコル」の頭字語である。インターネッ
トは、ユーザがネットワークを通じて対話し、情報を共
有することを可能にするネットワーキングプロトコルを
実行するコンピュータによって相互接続された、地理的
に分散したリモートコンピュータネットワークからなる
システムとして説明することができる。この広範囲にわ
たる情報の共有のために、一般にインターネットなどの
リモートネットワークは、現在までの発展の結果、開発
者が専門化した動作やサービスを実施するためのソフト
ウェアアプリケーションを基本的に制約を受けずに設計
することができるオープンシステムとなっている。
トラクチャにより、クライアント/サーバ、ピアツーピ
ア、あるいはハイブリッドアーキテクチャなど多くのネ
ットワークトポロジが可能になっている。「クライアン
ト」とは、それが関連していない別のクラスまたはグル
ープのサービスを使用するあるクラスまたはグループの
メンバである。したがって、コンピューティングの際、
クライアントは、別のプログラムによって提供されるサ
ービスを要求するプロセス、すなわち大まかに言うと1
組の命令またはタスクとなる。クライアントプロセス
は、他のプログラムあるいはサービス自体についての動
作上の詳細を一切「知る」必要なしに、要求したサービ
スを利用する。クライアント/サーバアーキテクチャ、
特にネットワーク化されたシステムでは、クライアント
は通常、例えばサーバなど別のコンピュータが提供する
共有ネットワークリソースにアクセスするコンピュータ
である。図1Aの例では、コンピュータ110a、11
0bなどをクライアントとみなすことができ、コンピュ
ータ10a、10bなどをサーバとみなすことができる
が、この場合はサーバ10a、10bなどがデータを維持
し、次いでそのデータをクライアントコンピュータ11
0a、110bなどで複製する。
ートネットワークを介してアクセスすることのできるリ
モートコンピュータシステムである。第1のコンピュー
タシステムでクライアントプロセスをアクティブにする
ことができ、第2のコンピュータシステムでサーバプロ
セスをアクティブにすることができ、通信媒体を通じて
相互に通信することにより、分散した機能が提供され、
複数のクライアントがサーバの情報収集機能を利用する
ことが可能となる。
よって提供される機能を利用して相互に通信する。例え
ば、ハイパーテキスト転送プロトコル(HTTP)は、ワール
ドワイドウェブ(WWW)、あるいは簡単に「Web」と共に使
用される一般的なプロトコルである。通常、ユニバーサ
ルリソースロケータ(URL)あるいはインターネットプロ
トコル(IP)アドレスなどのコンピュータネットワークア
ドレスを使用して、サーバコンピュータまたはクライア
ントコンピュータを相互に識別する。ネットワークアド
レスは、ユニバーサルリソースロケータアドレスと呼ぶ
ことができる。例えば、通信は通信媒体を介して提供す
ることができる。具体的には、クライアントとサーバは
高容量通信用のTCP/IP接続を介して相互に結合すること
ができる。
とができる、サーバがネットワーク/バスを介してクラ
イアントコンピュータと通信する例示的ネットワーク環
境あるいは分散環境を示している。より詳細には、いく
つかのサーバ10a、10bなどが、通信ネットワーク/
バス14を介して、携帯型コンピュータ、ハンドヘルド
コンピュータ、シンクライアント、ネットワーク電気器
具などの複数のクライアントあるいはリモートのコンピ
ューティング装置110a、110b、110c、110
d、110eなど、あるいはVCR、TV、オーブン、照明、
ヒーターなど本発明による他の装置と相互接続されてい
る。通信ネットワーク/バス14はLAN、WAM、イントラ
ネット、インターネットなどでよい。したがって、コプ
ロセッサの計算リソースを管理することが望ましい任意
のコンピューティング装置に本発明を適用できることが
企図される。
ターネットであるネットワーク環境では、例えばサーバ
10a、10bをウェブサーバとすることができ、クラ
イアント110a、110b、110c、110d、110
eなどはハイパーテキスト転送プロトコル(HTTP)などい
くつかの周知のプロトコルを介してこのサーバと通信す
る。サーバ10a、10bは、分散コンピューティング
環境の特色であるが、クライアントとして機能すること
もできる。通信は、必要に応じて有線でも無線でもよ
い。クライアント装置110a、110b、110c、1
10d、110eは、通信ネットワーク/バス14を介し
て通信してもしなくともよく、またそれに関連付けられ
た独立した通信を備えることができる。例えば、TVやVC
Rの場合は、その制御にネットワーク化された性質があ
ってもなくともよい。クライアントコンピュータ110
a、110b、110c、110d、110eとサーバコン
ピュータ10a、10bはそれぞれ、様々なアプリケー
ションプログラムモジュールあるいはオブジェクト13
5a〜135eを備えることができ、また、ファイルを
それらにわたって格納し、あるいはファイルの一部をそ
れらにダウンロードまたは移動することが可能な様々な
タイプの記憶要素あるいはオブジェクトへの接続または
アクセスを備えることができる。コンピュータ10a、
10b、110a、110bなどはいずれも、グラフィッ
クスデータiを格納するデータベースまたはメモリ20
などの、本発明によるデータベース20または他の記憶
要素の保守および更新を担当することができる。したが
って本発明は、コンピュータネットワーク/バス14に
アクセスしそれと対話することのできるクライアントコ
ンピュータ110a、110bと、クライアントコンピュ
ータ110a、110bなど、あるいはその他の装置、お
よびデータベース20と対話することのできるサーバコ
ンピュータ10a、10bなどを有するコンピュータネッ
トワーク環境で利用することができる。
な、適切なコンピューティング環境の簡潔で一般的な説
明を提供するものである。しかし、ハンドヘルド型、携
帯型、およびその他のコンピューティング装置と、すべ
ての種類のコンピューティングオブジェクトを本発明と
共に使用することが企図されることを理解されたい。以
下では汎用コンピュータについて記述するが、これは単
なる一例であり、本発明はネットワーク/バスの相互運
用性と対話を備えるシンクライアントで実施することも
できる。したがって、本発明は、非常に少数あるいは最
低限のクライアントリソースが関係するネットワークホ
ストサービスの環境、例えば電気器具内に配置されたオ
ブジェクトなどの、クライアント装置が単にネットワー
ク/バスへのインターフェースとして機能するネットワ
ーク環境で実施することができる。基本的には、データ
を格納することができ、またはデータを取り出すことの
できるどんな場所でも、本発明のコプロセッサリソース
の管理が動作するのに望ましい、あるいは適切な環境で
ある。
ェクト向けのサービスの開発者が使用するために、オペ
レーティングシステムを介して実施することができ、か
つ/または計算リソースを管理する助けとなるアプリケ
ーションソフトウェア中に含めることができる。ソフト
ウェアは、クライアントワークステーション、サーバ、
あるいはその他の装置など1つまたは複数のコンピュー
タによって実行されるプログラムモジュールなどのコン
ピュータ実行可能命令の一般的な状況で説明することが
できる。一般に、プログラムモジュールには、特定のタ
スクを実行する、あるいは特定の抽象データタイプを実
装するルーチン、プログラム、オブジェクト、コンポー
ネント、データ構造などが含まれる。通常、プログラム
モジュールの機能は、各種実施形態で必要に応じて組み
合わせても分散させてもよい。さらに、本発明を他のコ
ンピュータシステム構成を用いて実施できることを当業
者は理解されよう。本発明に使用するのに適している可
能性のある他の周知のコンピューティングシステム、環
境、および/または構成には、限定はしないが、パーソ
ナルコンピュータ(PC)、現金自動預払機、サーバコンピ
ュータ、ハンドヘルド装置またはラップトップ装置、マ
ルチプロセッサシステム、マイクロプロセッサベースの
システム、プログラム可能な消費者向け電気器具、ネッ
トワークPC、電気器具、照明、環境制御要素、ミニコン
ピュータ、メインフレームコンピュータなどが含まれ
る。本発明は、通信ネットワーク/バスあるいはその他
のデータ伝送媒体を通じてリンクされたリモートのプロ
セッサでタスクを実行する分散コンピューティング環境
で実施することもできる。分散コンピューティング環境
では、プログラムモジュールはメモリ記憶装置を含むロ
ーカルとリモートの両方のコンピュータ記憶媒体に配置
することができ、クライアントノードがサーバノードと
して振舞うことができる。
とのできる適切なコンピューティングシステム環境10
0の一例を示しているが、上記で明らかにしたようにコ
ンピューティングシステム環境100は適切なコンピュ
ーティング環境の一例に過ぎず、本発明の使用または機
能の範囲について何らかの制限を示唆するものではな
い。また、コンピューティング環境100は、例示的動
作環境100に示す構成要素のいずれか1つあるいは組
合せに関して何らかの依存関係や要件を有するものとも
解釈すべきでない。
示的システムは、コンピュータ110の形態の汎用コン
ピューティング装置を含む。コンピュータ110の構成
要素には、限定はしないが、プロセッサ120、システ
ムメモリ130、およびシステムメモリを含む様々なシ
ステム構成要素をプロセッサ120に結合するシステム
バス121を含めることができる。システムバス121
は、様々なバスアーキテクチャのいずれかを使用する、
メモリバスあるいはメモリコントローラ、周辺バス、お
よびローカルバスを含むいくつかのタイプのバス構造の
いずれでもよい。例えばこのアーキテクチャには、限定
はしないが、ISA(Industry Standard Architecture)バ
ス、MCA(Micro Channel Architecture)バス、EISA(Enha
nced ISA)バス、VESA(Video Electronics Standards As
sociation)ローカルバス、およびPCI(Peripheral Compo
nent Interconnect)バス(メザニンバスとも称される)が
含まれる。
ュータ可読媒体を含む。コンピュータ可読媒体はコンピ
ュータ110がアクセスできる利用可能などんな媒体で
もよく、不揮発性媒体と揮発性媒体の両方、リムーバル
媒体とノンリムーバルノンリムーバル媒体の両方を含
む。例えば、限定はしないが、コンピュータ可読媒体に
はコンピュータ記憶媒体と通信媒体が含まれる。コンピ
ュータ記憶媒体には、コンピュータ可読命令、データ構
造、プログラムモジュール、あるいはその他のデータな
どの情報を格納するために任意の方法または技術で実装
された揮発性および不揮発性、リムーバルおよびノンリ
ムーバルノンリムーバルの媒体が含まれる。コンピュー
タ記憶媒体には、限定はしないが、RAM、ROM、EEPROM、
フラッシュメモリまたはその他のメモリ技術、CDROM、
デジタルバーサタイルディスク(DVD)、またはその他の
光ディスク記憶装置、磁気カセット、磁気テープ、磁気
ディスク記憶装置、またははその他の磁気記憶装置、あ
るいは所望の情報を格納するのに使用でき、コンピュー
タ110がアクセスが可能などんな媒体も含まれる。通
信媒体は通常、コンピュータ可読命令、データ構造、プ
ログラムモジュール、あるいはその他のデータを、搬送
波または他の移送機構などの変調データ信号で具体化
し、任意の情報配信媒体を含む。用語「変調データ信
号」とは、その特性集合のうち1つまたは複数を有する
信号、または情報を信号中に符号化するような方式で変
化する信号を意味する。例えば、限定はしないが、通信
媒体には、配線ネットワークあるいは直接配線接続など
の配線媒体と、音響、RF、赤外線、およびその他の無線
媒体などの無線媒体が含まれる。上記の媒体のいずれの
組合せもコンピュータ可読媒体の範囲に含めるべきであ
る。
リ(ROM)131およびランダムアクセスメモリ(RAM)13
2など、揮発性および/または不揮発性メモリの形態の
コンピュータ記憶媒体を含む。起動時などにコンピュー
タ110内の要素間で情報を転送する助けとなる基本ル
ーチンを含む基本入出力システム133(BIOS)は、通常
ROM131に格納される。RAM132は通常、プロセッサ
120から即座にアクセス可能であり、かつ/またはプ
ロセッサ120によって現在操作されているデータおよ
び/またはプログラムモジュールを含む。例えば、限定
はしないが、図1Bに、オペレーティングシステム13
4、アプリケーションプログラム135、その他のプロ
グラムモジュール136、およびプログラムデータ13
7を示す。
ル/ノンリムーバルノンリムーバル、揮発性/不揮発性の
コンピュータ記憶媒体も含むことができる。単なる例に
過ぎないが、図1Bに、ノンリムーバルノンリムーバル
な不揮発性の磁気媒体を読み書きするハードディスクド
ライブ141、リムーバルな不揮発性の磁気ディスク1
52を読み書きする磁気ディスクドライブ151、およ
びCDROMやその他の光学媒体などのリムーバルな不揮発
性の光ディスク156を読み書きする光ディスクドライ
ブ155を示す。この例示的動作環境で使用することが
可能なその他のリムーバル/ノンリムーバルノンリムー
バル、揮発性/不揮発性のコンピュータ記憶媒体には、
限定はしないが、磁気テープカセット、フラッシュメモ
リカード、デジタルバーサタイルディスク、デジタルビ
デオテープ、ソリッドステートRAM、固体ROMなどがあ
る。ハードディスクドライブ141は通常、インターフ
ェース140などノンリムーバルなメモリインタフェー
スを介してシステムバス121に接続し、磁気ディスク
ドライブ151および光ディスクドライブ155は通
常、インターフェース150などリムーバルなメモリイ
ンタフェースによってシステムバス121に接続する。
れに関連するコンピュータ記憶媒体は、コンピュータ1
10のコンピュータ可読命令、データ構造、プログラム
モジュール、およびその他のデータの記憶を実現する。
例えば図1Bでは、ハードディスクドライブ141を、
オペレーティングシステム144、アプリケーションプ
ログラム145、その他のプログラムモジュール14
6、およびプログラムデータ147を格納するものとし
て図示している。これらの構成要素は、オペレーティン
グシステム134、アプリケーションプログラム13
5、その他のプログラムモジュール136、およびプロ
グラムデータ137と同じものでも異なるものでもよい
ことに留意されたい。ここでは少なくともそれらが異な
る複製であることを表すために、オペレーティングシス
テム144、アプリケーションプログラム145、その
他のプログラムモジュール146、およびプログラムデ
ータ147に異なる参照符号をつけている。ユーザは、
キーボード162と、一般にマウス、トラックボール、
あるいはタッチパッドと呼ばれるポインティング装置1
61などの入力装置を介してコンピュータ110にコマ
ンドと情報を入力することができる。その他の入力装置
(図示せず)には、マイクロフォン、ジョイスティック、
ゲームパッド、サテライトディッシュ、スキャナなどが
ある。上記およびその他の入力装置は、しばしばシステ
ムバス121に結合されたユーザ入力インターフェース
160を通じてプロセッサ120に接続されるが、パラ
レルポート、ゲームポート、あるいはユニバーサルシリ
アルバス(USB)など他のインターフェースおよびバス構
造によって接続することもできる。ノースブリッジなど
のグラフィックスインタフェース182もシステムバス
121に接続することができる。ノースブリッジは、CP
Uと通信し、あるいはプロセッサ120をホストし、AGP
通信を担当するチップセットである。1つまたは複数の
グラフィックスプロセッサ(GPU)184は、グラフィッ
クスインタフェース182と通信することができる。こ
れに関してGPU 184は一般にレジスタ記憶域などのオ
ンチップメモリ記憶域を含み、ビデオメモリ186と通
信する。任意のコプロセッサに関連して、本発明をより
一般的に説明することができ、GPU 184は一例に過ぎ
ない。モニタ191またはその他のタイプの表示装置も
ビデオインタフェース190などのインターフェースを
介してシステムバス121に接続され、ビデオインタフ
ェース190はビデオメモリ186と通信することがで
きる。コンピュータはモニタ191に加えてスピーカ1
97やプリンタ196など他の周辺出力装置も含むこと
ができ、これらの装置は出力周辺インターフェース19
5を介して接続することができる。
ータ180など1つまたは複数のリモートコンピュータ
への論理接続を使用するネットワーク環境あるいは分散
環境で動作することができる。リモートコンピュータ1
80は、パーソナルコンピュータ、サーバ、ルータ、ネ
ットワークPC、ピア装置、あるいはその他の共通ネット
ワークノードでよく、図1Bにはメモリ記憶装置181
しか示していないが、通常は上記でコンピュータ110
に関連して説明した要素のうちの多くあるいはすべてを
含む。図1Bに示す論理接続には、構内ネットワーク(L
AN)171と広域ネットワーク(WAN)173が含まれる
が、その他のネットワーク/バスも含むことができる。
このようなネットワーキング環境は、家庭、オフィス、
企業全体のコンピュータネットワーク、イントラネッ
ト、およびインターネットなどで一般的なものである。
き、コンピュータ110はネットワークインタフェース
あるいはアダプタ170を通じてLAN171に接続す
る。WANネットワーキング環境で使用する場合、コンピ
ュータ110は通常インターネットなどのWAN173を
介して通信を確立するためのモデム172あるいはその
他の手段を含む。モデム172は内蔵でも外付けでもよ
く、ユーザ入力インターフェース160またはその他の
適切な機構を介してシステムバス121に接続すること
ができる。ネットワーク環境では、コンピュータ110
に関連して図示するプログラムモジュールまたはその一
部をリモートのメモリ記憶装置に格納してもよい。例え
ば、限定はしないが、図1Bではリモートアプリケーシ
ョンプログラム185がメモリ装置181上に常駐して
いる。図のネットワーク接続は例示的なものであり、コ
ンピュータ間に通信リンクを確立する他の手段を使用で
きることを理解されよう。
ークまたはアーキテクチャ パーソナルコンピューティングとインターネットの収束
という観点から、様々な分散コンピューティングのフレ
ームワークが開発されてきた。個人やビジネスユーザに
も同様に、アプリケーションやコンピューティング装置
向けのシームレスな相互運用が可能でWebに対応したイ
ンターフェースが提供され、コンピューティングアクテ
ィビティはますますウェブブラウザ指向またはネットワ
ーク指向になりつつある。
ムは、サーバと、ウェブベースのデータ記憶やダウンロ
ード可能なデバイスソフトウェアなどのビルディングブ
ロックサービスとを含む。大まかに言うと.Netプラット
フォームは次のような機能を提供する。(1)コンピュー
ティング装置の範囲全体を協働させ、それらすべての装
置でユーザ情報を自動的に更新し、同期する能力。(2)
HTMLではなくXMLを多く使用することで可能になる、よ
り高いウェブサイト間の対話機能。(3)例えば電子メー
ルや、Office.Netなどのソフトウェアなどの様々なアプ
リケーションを管理するための、製品およびサービスへ
のカスタマイズされたアクセスと、中央の開始点からユ
ーザへのその配信を特徴とするオンラインサービス。
(4)データ記憶の集中化。これにより情報へのアクセス
と、ユーザと装置間の情報の同期の効率と容易さが向上
する。(5)Eメール、ファックス、電話など様々な通信
媒体を統合する能力。(6)開発者は再使用可能なモジュ
ールを作成することができ、これにより生産性を増し、
プログラミングエラーの数を低減することができる。
(7)その他の多くのクロスプラットフォームの統合機
能。
トウェアに関連して本明細書の例示的実施形態を説明す
るが、本発明の1つまたは複数の部分は、オペレーティ
ングシステムを介して、またはコプロセッサと要求側オ
ブジェクトとの間の「仲介」オブジェクトを介して実装
することもでき、その結果.NETの言語およびサービスの
すべてによってイメージ処理サービスを実施することが
でき、.NETの言語およびサービスのすべての中でサポー
トすることができ、または.NETの言語およびサービスの
すべてを介してアクセスすることができる。他の分散コ
ンピューティングフレームワークでも同様である。
ースの管理 I.グラフィックスプロセッサプログラミング まず、グラフィックスプロセッサを制御するための様々
な機構の簡単な説明とその兼ね合いを呈示する。本発明
の様々な実施形態をグラフィックスプロセッサの状況で
説明するが、本発明はホストプロセッサのオペレーショ
ンを補うコプロセッサに適用することができる。様々な
機構を呈示した後、本発明に従ってグラフィックスプロ
セッサを制御する方法を説明する。本発明の方法は、オ
ペレーティングシステムによるグラフィックプロセッサ
の計算リソースの管理が容易となるように実装される。
マンドを受け取る方式の一部を列挙する。
は、周辺機器から情報を要求するためのIN命令と、周辺
装置に情報を送るためのOUT命令を実行することを含
む。PIOは非常に非効率であり、一般にはシステム中の
所与のハードウェアの複数のインスタンスとは十分には
釣り合わない。その結果、INおよびOUT命令を実行する
ことができるのは、ハードウェアの直接操作が可能なマ
イクロプロセッサモードであるカーネルモードだけであ
る。ユーザモードスレッドがこのような命令に直面した
場合、システムは例外を生成する。ユーザモードスレッ
ドがハードウェアの制御を試みている場合、例外によ
り、通常はスレッドは実行を終了する。
読み書きによってハードウェアを制御することを可能に
する。MMIOの1つの利点は、所与の1つのハードウェア
を制御するメモリ位置を変更することができる場合、ハ
ードウェアの複数のインスタンスが単一のシステム内に
常駐することができることである。いわゆる再配置可能
MMIOは、例えばPCに対する複数モニタサポートに関する
主要な機能であった。PIOと同様に、MMIOは一般に、カ
ーネルモードでカーネルモードアドレスを使用して実行
される。しかし一部のシステムは、ユーザモードに対す
るMMIOアドレスを公開し、それによってハードウェア
が、カーネルモードへの遷移を行わずに直接プログラム
される可能性がある。相互排他は依然として実施しなけ
ればならず、信用できない、またはバグの多い(buggy)
ユーザモードソフトウェアによる偽の書込みが、ハード
ウェアによる予測不能な挙動を引き起こす可能性があ
る。したがって、ほとんどのMMIO実装では、カーネルモ
ードを介してアクセスすべきメモリ位置が必要である
が、一部のMMIO実装では、ハードウェアへのユーザモー
ドアクセスが可能である。このような設計は、ハードウ
ェアがそのレジスタへの偽の書込みに対して堅牢でない
場合、予測不能な、破局的な障害の危険がある。
きるのは1つのスレッドだけである。これらのオペレー
ションはハードウェアの状態に直接影響を及ぼすからで
ある。したがって、システムがPIOとMMIOのどちらもサ
ポートするとき、システムは、PIOおよび/またはMMIOを
使用してハードウェアに命令を送るコードパス間の相互
排他を実施する。すなわちどんなときでも、ハードウェ
アをプログラムするのは1つのスレッドだけとなること
が保証される。通常、このことは、スレッドがコードを
実行してPIOまたはMMIOを介してハードウェアをプログ
ラムする前に、クリティカルセクションまたはmutex(相
互排他オブジェクト)などのロックを待機しなければな
らないことを意味する。ロックを獲得し、解放すること
は、それに対する競合がない場合であっても時間がかか
る。競合がある場合、すなわち複数のスレッドが同時に
所与のロックを獲得しようと試みる場合、全性能は、多
くのスレッドがロックを獲得するために長時間待機しな
ければならない場合に低下する可能性がある。
ピュータシステム内でデータを移動する一般的な方法で
あり、ディスクドライブ、ネットワークアダプタ、なら
びにUSBおよびIEEE 1394などの外部バスの制御だけ
でなく、グラフィックスプロセッサの制御における応用
が見出された。DMAは一般に、デジタルカメラまたはデ
ィスクコントローラなどの周辺装置の能力を参照し、ホ
ストプロセッサを直接使用せずにメモリに読み書きす
る。ホストは、あらかじめDMA転送をセットアップし、
例えばデジタルカメラが撮影しようとしている写真から
のイメージデータを書き込むべき場所のメモリ領域をペ
ージ固定し、そのメモリ位置をカメラに指定する。ペー
ジ固定は、仮想メモリマネージャに、当該のメモリ位置
をディスクに書き出すことを先行させる。これを行った
後、カメラは写真を撮影し、イメージデータをメモリに
書き込み、次いでDMA転送が完了したことをホストに通
知する。グラフィックスプロセッサ制御の状況では、グ
ラフィックスプロセッサに対する一連のコマンドは、メ
モリに書き込むことができ、次いでDMAオペレーション
を介してグラフィックスプロセッサに転送することがで
きる。
ドをサブミットする他の方法に勝る多くの利点を有す
る。第1に、DMAにより、ホストプロセッサとグラフィ
ックスプロセッサによる並列実行が容易になる。CPUで
実施すべき、これらの「他のオペレーション」はしばし
ば、グラフィックスプロセッサ対にするコマンドをより
多く生成することを含むので、複数のDMAバッファを維
持してそれらを「ピンポン」し、グラフィックスプロセ
ッサが一方を読み取り、実行する間に、他方を書き込む
ことが一般的である。第2に、DMAにより、複数のアプ
リケーションがコマンドバッファをメモリに書き込み、
次いでその複数のアプリケーションの実行の準備ができ
たときに、コマンドバッファの内容をグラフィックスプ
ロセッサにサブミットすることが可能となる。グラフィ
ックスプロセッサが一度に実行できるのは1つのコマン
ドバッファだけであるが、異なるスレッドがコマンドバ
ッファを含む別個のメモリ領域に書込みことができるの
で、DMAにより、多くのコマンドバッファを同時に構築
することが容易になる。第3に、DMAにより、しばしば
システム中のバスリソースの使用がより効率的になる。
言い換えれば、DMAを介して達成可能な帯域幅は、しば
しばホストマイクロプロセッサの直接参加することによ
って達成可能な帯域幅よりも大きい。
(AGP)は、システムメモリからグラフィックスプロセッ
サにデータを転送するために高帯域幅コンジットとして
働くように特に設計された特殊なバスである。この説明
では、AGPはDMAの特別な場合とみなすことができる。
ドウェアから受け取るための機構の他に、本発明者らの
背景の解説で行う別の重要な特質は、グラフィックスプ
ロセッサがあるタスクを完了し、またはグラフィックス
プロセッサにとって可視のあるイベントが発生したとい
う、ホストマイクロプロセッサの通知に集中する。タス
クの非限定的な例には、コマンドバッファの実行の完
了、または特定のコマンドの完了が含まれる。イベント
の非限定的な例は、ディスプレイ装置の垂直帰線、ビデ
オポートからのデジタル化ビデオのフィールドの完了、
またはディスプレイ装置中の特定の走査線のリトレーシ
ングが含まれる。
ハードウェアを反復的にプローブして、イベントが発生
したか、またはタスクが完了したかを確認するものであ
る。ポーリングは、IN命令またはMMIO読取りでハードウ
ェアレジスタを読み取ること、またはホストがその後で
読み取ることができる特定のメモリ位置に答えを書き込
むよう要求するコマンドを送ることを必要とする。すべ
てのポーリング方法に共通する特徴は、タスクが完了す
るか、イベントが発生するまでチェックを反復的に実施
しなければならないことである。通例として、ポーリン
グはホストマイクロプロセッサ中の計算リソースを浪費
する。
または外部イベントを通知する代替方法は割込みとして
知られている。割込みは、ホストマイクロプロセッサが
行っていることが何であってもそのことからホストマイ
クロプロセッサをそらせ、メモリ中の特別な位置に制御
を移転するハードウェア機構である。オペレーティング
システムはこの機構を使用して、割込みサービスルーチ
ンとして知られるドライバコードを呼び出し、割込みに
応答する。
くつかの利点を有する。例えば、セットアップし、割込
みに応答するコストは固定であるのに対して、ポーリン
グベースの機構のコストは、実施されるポーリングの数
に対してほぼ線形に増加する。その結果、割込みベース
の方式は、ポーリングベースの方式よりもバス帯域幅が
小さく、CPUサイクルが少ない。割込みはまた、イベン
トが発生するときと次のポーリングが実施されるときの
間の時間よりも割込み待ち時間が短い場合、より適時に
通知することができる。
ックスプロセッサ中の計算リソースを合理的に管理する
ことを可能にする1組の仮定を展開させる。本発明はま
た、システムがこのような管理の効果性および/または
信頼性を高めることを可能にする、あるハードウェア機
能を識別する。
にDMAベースの入力を使用することである。この第1の
仮定は、グラフィックスプロセッサに対するコマンドの
多くをDMA機構を介してサブミットすべきであるという
ことである。前述のように、DMAベースのコマンドバッ
ファのサブミットにより、ホストマイクロプロセッサ上
で動作する複数のアプリケーションによって生成された
複数のDMAバッファのグラフィックスプロセッサによる
最終的な消費が促進される。DMAコマンドストリームの
実行の開始などの低頻度のコマンドは、MMIOなどの方法
を介してハードウェアに送ることができる。しかし、イ
メージデータのロード、直線および三角形などの特徴を
描画するためのコマンド、およびハードウェア状態を変
更するためのコマンドなど、グラフィックスチップに対
する高頻度のコマンドの大部分はDMAを介して送るべき
である。
知が好ましいということである。したがって、本発明に
よれば、コマンドバッファの完了または一部完了、ホス
トプロセッサにとって可視であるメモリ中にデータを書
き込むためのDMAオペレーションの完了、ディスプレイ
装置の垂直帰線、あるいは特定のコマンドの完了など、
グラフィックスプロセッサによるイベントの通知の大部
分に対して割込みが使用される。したがってホストは、
ホストが認識する必要のあるイベントの割込み通知をセ
ットアップすることが期待され、その割込みに適時応答
することが期待される。
ィックスプロセッサから広げることができ、以下のよう
な2つのプロセッサを備えるシステムを企図することが
できる。そのプロセッサとは、ホストCPUと、CPUからの
コマンドバッファの送出によって制御され、CPUにデー
タを戻すことができ、かつ様々なイベントが発生したと
きにそのイベントをCPUに通知することによって制御を
調整するコプロセッサである。この文書中の例では、
(生じ得る同期の問題と、この問題を効率的に解決する
ようにシステムをどのように設計することができるかを
説明するときのように)しばしばコプロセッサがグラフ
ィックスプロセッサであると仮定するが、それらの例は
単なる例に過ぎず、本発明の範囲をグラフィックスプロ
セッサに限定するものではない。
ースに関する上記の仮定に沿って、コプロセッサ中の計
算リソースを効率的に共用する非限定的システムを以下
で説明する。
コプロセッサにコマンドを送るためにコマンドバッファ
がアプリケーションで使用されるときの、コマンドバッ
ファのライフサイクルを示す。コマンドバッファが作成
され、初期化されるとき、バッファは初期化状態201
に入る。次いでコマンドバッファは、グラフィックスプ
ロセッサにコマンドを発行しようとするスレッドが選択
し、書き込むために利用可能となる。スレッドがコマン
ドバッファを選択するとき、コマンドバッファ中のメモ
リが、(恐らくコマンドバッファ中のメモリをスレッド
のアドレス空間にマッピングすることによって)そのス
レッドから利用可能となる。当業者は理解できるであろ
うが、このマッピングの詳細は変化する可能性がある。
例えば、コマンドバッファメモリは、ユーザモード、カ
ーネルモード、あるいはその両方から可視にすることが
できる。加えて、受取側コマンドバッファに書き込まれ
る実行可能コードの性質に関して多数の選択肢がある。
この点に関して、図3Aから3Eに、その選択肢のうち
のいくつか、すなわちコマンドバッファに書き込むため
のいくつかの異なるアーキテクチャを示す。
は、システムに関与するある特定のグラフィックアプリ
ケーションを実施するプロセス、またはプロセス中のス
レッドである。ランタイムは、アプリケーションが使用
するオペレーティングシステムで提供されるミドルウェ
アである。とりわけ、ランタイムは、アプリケーション
がアプリケーションプログラミングインターフェース(A
PI)を使用することに関する妥当性検査を行うこと、使
用が簡単な高レベルAPI呼出しを、ハードウェアコマン
ドに容易に変換可能な、より複雑な低レベル構成に変換
することなどをすることができる。
ハードウェア固有のコマンドに変換する、ハードウェア
特有のコンポーネントである。図3Aから3Eに示すド
ライバコンポーネントは、ランタイムレベルコマンドを
ハードウェア特有のコマンドに変換するドライバの一部
である。割込み処理およびコマンドバッファディスパッ
チなど、この変換以外のタスクを実施するドライバのあ
る部分は、恐らくカーネルモードで常駐することにな
り、図3Aから3Eでは考慮していない。図3Aから3
Eに示すオブジェクトコードのほとんどはユーザモード
で動作することができるが、以下で指摘するように、一
部はカーネルモードで動作することができる。コマンド
バッファは、あるDMA機構を介してハードウェアで直接
消費することができるコマンドを含む1つのメモリであ
る。図のうちのいくつかにはトークンストリームも示
す。トークンストリームは、ドライバによってハードウ
ェア特有のコマンドに変換することができるランタイム
レベルプリミティブの、ハードウェア独立なストリーム
である。
独立な中間言語を、ホストマイクロプロセッサが実行す
るためのオブジェクトコードに変換することができるJI
T(Just-in-time)コンパイルコンポーネントを示す。隅
にOBJと記したボックスは、マイクロプロセッサが直接
実行することができるオブジェクトコードを含む。隅に
MSILと記したボックスは、マイクロプロセッサ上で実行
するためにJITによってコンパイルされる中間コード
を含む。アプリケーションおよびランタイムがどちらも
クライアント上で中間形式で利用可能である場合、JIT
は、図3Cから3Eのそれぞれ実行可能アプリケーショ
ン324、334、および345として示す、アプリケ
ーションを実施する統合された1つのオブジェクトコー
ドに、アプリケーションおよびランタイムを変換にする
ことができる。
ライバ303がハードウェア特有のコマンドをコマンド
バッファ304に書き込むまで、低レベルオブジェクト
コードを呼び出す、アプリケーション301、ランタイ
ム302、およびドライバ303を示す。アプリケーシ
ョン301は実行可能プロセス、またはプロセス中のス
レッドでよく、ランタイム302およびドライバ303
は、それぞれDLL中に常駐することができる。図3Aに
示すように、オブジェクトコードのすべてはユーザモー
ドに常駐することができる(しかし、ランタイム302
および/またはドライバ303の一部または全部はカー
ネルモードに常駐することができる)。実行を続行する
前にコマンドバッファ304をサブミットしなければな
らないとランタイム302が判定した場合、またはコマ
ンドバッファ304がスペースを欠いているとドライバ
303が判定した場合、続行するために、カーネルモー
ドへの遷移を要求してコマンドバッファ304をサブミ
ットし、別のコマンドバッファを取り出すことができ
る。
ア独立なコマンドのストリームをバッファ313に放出
し、次いでバッファ313をドライバ314で構文解析
し、コマンドバッファ315に書き込む変形形態を示
す。アプリケーション311は、ランタイム312と共
に低レベルオブジェクトコードを呼び出すように動作す
る。図3Bは、ランタイムがアプリケーション活動をDr
awPrimitive2(「DP2」)トークンに変換する、DIRECTX
(登録商標)ソフトウェアコンポーネントの現在のアーキ
テクチャを模倣したものである。DP2トークンストリー
ムをサブミットしたとき、カーネル遷移が行われ、ドラ
イバ314は、カーネルモードでDP2トークンストリー
ムをハードウェア特有のコマンドに変換する。図3Bで
は、ドライバ314がユーザモードにあるか、それとも
カーネルモードにあるかについての仮定は行っておら
ず、この点でドライバコンポーネント314は、ユーザ
モードならびにカーネルモードで常駐することができ
る。
ランタイム322が、JITコンパイラ323によって、
統合された1つのオブジェクトコードに合成される変形
形態を示す。次いで、得られる1つのオブジェクトコー
ド324はドライバ325と対話し、ハードウェア特有
のコマンドをコマンドバッファ326に書き込む。
トリーム335がドライバ336の上のソフトウェア3
34によって放出される、図3Bについて述べた状況の
JIT変形形態を示す。次いでドライバ336は、トーク
ンストリームを、コマンドバッファ337に対するハー
ドウェア特有のコマンドに変換する。図3Cと同様に、
アプリケーション331およびランタイム332は、JI
Tコンパイラ333によって、統合した1つのオブジェ
クトコード334に合成される。
タイム342、およびドライバ343の一部が、すべて
中間言語形MSILでクライアント上で利用可能なシステム
を示す。JITコンパイラ344は、これらのコンポーネ
ントを、ホストマイクロプロセッサだけではなくコプロ
セッサハードウェア構成も考慮に入れて、特定のクライ
アントコンピュータ上で動作するように特に最適化され
た、統合された1つのオブジェクトコード345に合成
する。
ルに戻ると、コマンドがコマンドバッファに書き込まれ
る方法の如何に関わらず、受取側コマンドバッファに書
き込むスレッドは、コマンドバッファが充填されたた
め、またはバッファに書き込まれた描画コマンドが直ち
に実行されるため、コマンドバッファにサブミットす
る。そのとき、コマンドバッファは待機状態203に入
り、コマンドバッファの内容は、コマンドバッファを実
行するために使用されるリソースのすべてが利用可能と
なるまで、ハードウェアにサブミットすることができな
い。待機が強制される可能性のある環境の例として、ア
プリケーションが表面に描画する場合、その描画は、表
面がテクスチャとして選択することができる前に完了し
なければならない。
はレディ状態204に入り、その状態で、スケジューラ
はコマンドバッファをコプロセッサにサブミットするこ
とに関してコマンドバッファを検討する。スケジューラ
は、どのコマンドバッファをハードウェアにサブミット
すべきかを決定する際に、多大な柔軟性を有する。スケ
ジューラは、コマンドバッファの優先順位、スレッドの
要求についての優先順位、システムのリアルタイム要件
などがある場合、それを考慮に入れることができる。コ
マンドバッファを次に実行するものとして選択した後、
コマンドバッファはスタンバイ状態205に入る。ある
システムでは、システム中でスタンバイ状態205にす
ることができるのは、コプロセッサ当り1つのコマンド
バッファだけである。
をハードウェアにサブミットすることができるとき、シ
ステムは、コプロセッサコンテキストを、コマンドバッ
ファの要求するコンテキストに切り換え、次いでコマン
ドバッファをハードウェアにサブミットする。このオペ
レーションは、例えばコマンドバッファのベースアドレ
スおよびサイズを使用してDMAオペレーションを開始す
るために、ドライバからの何らかの介入を必要とする。
コマンドバッファは、コマンドバッファの実行があるイ
ベントに切り替わるか、またはコマンドバッファの内容
全体が読み取られ、実行されるまで、実行状態206の
ままである。
コマンドバッファは終了状態207に入り、その状態
で、コマンドバッファはシステムがシステムを再初期化
するのに利用可能となり、初期化状態201で別のスレ
ッドから利用可能となる。
替えが行われたときにコマンドバッファの実行を再開す
ることができるように、ハードウェアがハードウェアコ
ンテキストを保存する能力を有することが想定される。
次いでコマンドバッファはレディ状態204中でリサク
ルすることができ、ハードウェアに再サブミットして、
停止した場所から再開することができる。プリエンプテ
ィブルコマンドバッファ実行に関する以下の説明で、こ
のことをより詳細に述べる。
テムは、ハードウェアアクセラレーテッド(hardware-a
ccelerated)コンテキスト切換え、または少なくともド
ライバファシリテイティッド(driver-facilitated)コ
ンテキスト切換えに対処することができる。このコンテ
キスト切換えでは、ハードウェアコンテキストがドライ
バによって維持され、コンテキスト切換えをハードウェ
アでネイティブにサポートすることができる。コンテキ
ストは、例えばローカルビデオメモリまたは他の高速メ
モリ内にキャッシュすることができる。この場合、オペ
レーティングシステムは、ドライバが所与のコンテキス
トをハードウェアにロードすることを要求する。コンテ
キスト切換えおよびコマンドバッファディスパッチは、
性能上の理由で、単一のDDI(デバイスドライバインター
フェース)呼出しで指定することができる。
ードウェアコンテキストのカノニカル概念を維持するこ
とができ、所与のコンテキストに対応する状態にハード
ウェアを設定するコマンドバッファを構築することがで
きる。この場合、スタンバイ状態205から実行状態2
06への遷移中にコンテキストをロードすることは、こ
のように構築したコマンドバッファをハードウェアにデ
ィスパッチすることを伴う。あるいは、コマンドバッフ
ァの先頭を任意選択のコンテキスト切換え用に予約する
こともできる。例えばハードウェアが既に適切なコンテ
キストを含んでいるために、コンテキスト切換えがオペ
レーティングシステムで不要とみなされる場合、オペレ
ーティングシステムは、コンテキスト切換えブロックの
すぐ上のコマンドを、コマンドバッファのベースアドレ
スとして指定することができる。オペレーティングシス
テムが別々のコマンドバッファ、コマンドバッファの先
頭、または他の機構を利用して実行の開始前にコンテキ
ストをハードウェアにロードするかに関わらず、ドライ
バの複雑さは軽減される。ドライバは、ハードウェアコ
ンテキストをロードしているか、それとも描画コマンド
を実行しているかを認識せず、ハードウェアにコマンド
バッファをディスパッチしていることだけを認識するこ
とになるからである。しかし、高速メモリを使用するコ
ンテキスト切換えに対するネイティブハードウェアサポ
ートはコマンドバッファベースのコンテキスト切換えに
勝る性能上の利点を有する可能性があるので、ドライバ
の複雑さは、潜在的な性能コストで軽減される。しか
し、このようなシステムは、既存のドライバに対する軽
量コンテキスト切換えの追加などの改変が行いやすくな
る。
コンテキストは、アプリケーションのあるクラスには不
要である可能性のある多数の状態を含む。例えば、コプ
ロセッサがグラフィックスプロセッサである場合、現代
のグラフィックスチップの完全なマルチテクスチャリン
グ状態、バーテックスシェーディング状態、およびピク
セルシェーディング状態は、単純な2Dグラフィックス
アプリケーションに対しては不要である可能性がある。
このようなアプリケーションに対処するため、システム
は、コマンドバッファの実行開始前にハードウェアによ
り効率的にロードされる、1つまたは複数の軽量コンテ
キストタイプを定義することができる。加えて、システ
ムは、重量コンテキスト状態のどの部分が軽量コンテキ
ストのロードによって影響を受けなかったかを潜在的に
記憶し、既にハードウェア中に存在する状態を再ロード
することを回避するように後続のコンテキスト切換えを
最適化することができる。このような最適化は、ドライ
バレベルでのコンテキスト切換えシステムの正式なサポ
ートを必要とするシステムで、またはコマンドバッファ
または他の機構を使用して手動でハードウェアコンテキ
ストをロードしたシステムで実施することができる。
セッサハードウェアが実行中に、有用な作業のホストマ
イクロプロセッサの性能を促進するので、コプロセッサ
の計算リソースを効率的に管理するのに使用することが
できる。現在説明している実施形態で、システム内の割
込みに関するアプリケーションの一部と、各ケースで割
込み可能となる機能を詳述する。すべてのケースにおい
て、割込みは、オペレーティングシステムに、メモリに
書き込むことによって、またはイベントなどのスレッド
同期オブジェクトを信号で知らせることによって、割込
みを引き起こしたイベントをクライアントに通知する機
会を与える。
マンドバッファが実行を終了したとき、システムは通知
を受け、したがってシステムは、別のコマンドバッファ
を選択してハードウェアにサブミットすることができ
る。コプロセッサが割込みを信号で知らせたときから、
別のコマンドバッファがサブミットされるまでコプロセ
ッサがアイドル状態であるか、それとも(以下で説明す
るように)コプロセッサが以前に待ち行列に入れられた
コマンドバッファの実行を開始するかに関わらず、シス
テムが別のバッファを選択してハードウェアにサブミッ
トする(または最終的にサブミットする)ことができるよ
うに、システムに通知しなければならない。コマンドバ
ッファが実行されたことを割込みが信号で知らせるの
で、システムは、コマンドバッファのために必要であっ
たリソースのすべてを解放し、そのリソースを必要とす
る保留のコマンドバッファを非ブロック化することがで
き、別のアプリケーションで使用するためにコマンドバ
ッファをリサイクルすることもできる。
では、先行するコマンドが実行を終了したときにハード
ウェアに割込みを信号で知らせるよう命令するコマンド
を書き込むことができる場合、システムは、1つのメモ
リへの書込みから、割込みコマンドに直面したときにイ
ベントまたは他のスレッド同期オブジェクトを設定する
ことにわたって、クライアントアプリケーションに細分
化されたアプリケーション制御の完了通知を提供するこ
とができる。
の発生時の割込みでは、VSYNC(ディスプレイ装置の垂直
帰線)発生時の割り込みは、システム中の様々な機能を
割込み可能にする。
ページが反転した場合、VSYNC割込みは、表示フレーム
のバックバッファを構成する(すなわち次にVSYNCの準備
をする)必要を信号で知らせることになる。
のフレームの呈示時間を推定することができ、この情報
をクライアントにとって利用可能にすることができる。
ビデオでは、これにより、呈示の時間に対応する補間お
よび/またはインターレース解除した出力フレームの合
成が可能となる。連続的時間領域によって制御される一
時的アニメーションでは、これにより、呈示に対応する
正確な時間にアニメーションをレンダリングすることが
可能となる。
アントがクライアントのフレーム速度を表示リフレッシ
ュに減速することが可能となる。すなわち、表示が85
Hzでリフレッシュしている場合、85Hzでレンダリング
される。クライアントアプリケーションでは、呈示呼出
しは、同期させることができる(イベントが信号で知ら
されるまでスレッドをブロックし、VSYNCに関するイベ
ントを信号で知らせる)。より精巧なクライアントは、
具体的にイベントに対して待機することができ、それら
の描画の終了と、表示リフレッシュの待機との間の合間
に有用な作業を行うことができる。
ときの割込みでは、表示リフレッシュが所与の走査線に
達したときに信号で知らされる割込みにより、時限式送
達を実装するシステムが、予想される呈示の時間を注意
深く制御することが可能となる。T=0を現在表示されて
いる第1の呈示時間とし、T=1を、反転され次のVSYNC
にエンドユーザが見ることになるバックバッファの呈示
時間とし、T2を、次にVSYNCに構成されることになるバ
ックバッファの呈示時間とし、T=3をその後の次のディ
スプレイフレームの呈示時間とする。クライアントが描
画するための呈示時間を要求するとき、時限式送達の実
装は、バックバッファに合成するために結果が必要とな
る前に、アプリケーションの描画が終了するための十分
な時間を確実にアプリケーションが有するように、T=3
を指定することができる。しかしディスプレイが最近に
なってリフレッシングを開始した場合、クライアントが
T=2を目標として描画するための時間が存在する可能性
があり、さらにはVSYNCが行われた後でも、バックバッ
ファ合成への参加を時間内に完了する可能性がある。デ
ィスプレイが所与の走査線をリフレッシュしたときを信
号で知らせる割込みにより、ディスプレイがまさにリフ
レッシングを終了しようとしているかどうかに応じて、
時限式送達サブシステムがクライアントに様々な呈示時
間を与えることが可能となる。例えば、システムは、デ
ィスプレイがリフレッシングを半分終了するまで、予想
される呈示時間としてT=2をクライアントに渡すことが
できる。次いでシステムは、予想される呈示時間として
T=3をクライアントに渡すことを開始することができ
る。この挙動変更を引き起こす走査線番号は、システム
負荷に従って調整することもできる。
ee)更新は、更新すべき領域がディスプレイ装置によっ
てリフレッシュされた直後に、この割込みを信号に設定
することによって実施することができる。割込みが信号
で知らされたとき、ディスプレイを更新するのに必要な
描画オペレーションを実施するようにグラフィックスプ
ロセッサに依頼することができ、更新が行われるときに
表示リフレッシュが再び更新領域に達する程、システム
がそのコマンドを実行するのに長い時間かかるのでない
限り、ティアは観察されないことになる。
めに、システムは、クライアントアプリケーションによ
って操作されるオブジェクト間の依存関係を追跡し、そ
の依存関係がコマンドバッファディスパッチ中に考慮さ
れる。図2の待機状態203は、コマンドバッファが依
存したオペレーションが完了するまで待機する機会を表
す。例えば、アプリケーションが表面をレンダリング
し、次いでその表面をテクスチャとして選択した場合、
別の描画に移ることができる前にそのレンダリングは完
了しなければならない。同様に、アプリケーションが表
面を描画し、次いでその表面をソース表面として使用し
てBltを要求する場合、その描画は、Bltを開始すること
ができる前に完了しなければならない。同期要件の別の
例はページ反転である。アプリケーションがオーバーレ
イ面を作成し、オーバーレイのバックバッファ中に描画
し、ページ反転を要求する場合、描画は、オーバーレイ
のフロントバッファ中への描画が終了するときにページ
反転またはレンダリングアーティファクトが観察される
前に完了しなければならない。
にコマンドバッファディスパッチをスケジュールするシ
ステム内で吸収することができる。アプリケーションが
コマンドをコマンドバッファ内に書き込むとき、システ
ムは、そのコマンドバッファが実行するためにどのリソ
ースを必要とするかを追跡することができる。あるリソ
ースは非排他的に獲得することができ(例えば、読み取
るパレットまたは表面、あるいはテクスチャマッピング
する表面)、他のリソースは、排他的に獲得しなければ
ならない(例えば書き込む表面、または3Dレンダリング
を実施する表面)。システムはスレッド同期プリミティ
ブを潜在的に活用して、コマンドバッファのこの同期を
実施することができる。例えば、任意の数のスレッドが
非排他的に獲得することができ、または単一スレッドが
排他的に獲得することができるスレッド同期プリミティ
ブがWINDOWS(登録商標)NTに存在する。コマンドバッフ
ァが、排他的アクセスが必要であるかどうかと共に、獲
得する必要のあるリソースの関連リストを有する場合、
コマンドバッファをディスパッチするスレッドは、コマ
ンドバッファに関連する同期オブジェクトを待機するこ
とによって、待機状態からレディ状態にコマンドバッフ
ァを遷移することができる。必要な同期オブジェクトの
すべてをスレッドが獲得した後、コマンドバッファをハ
ードウェアにサブミットすることができる。
に実行された、コマンドバッファ中の以前のコマンドに
依存するリソースが要求されるケースを検出しなければ
ならない。このことが生じたとき、スレッドはコマンド
バッファをサブミットし、別のコマンドバッファの構成
を開始しなければならない。第2コマンドバッファは単
にリソースを指定することができ、前述の同期機構はそ
の依存関係を吸収することになる。
に関しては、グラフィックスハードウェアが高性能であ
るために、コマンドバッファ完了と別のコマンドバッフ
ァのサブミットとの間の待ち時間を最小にすることが重
要である。そうでない場合、グラフィックスハードウェ
アは、別のコマンドバッファがサブミットされることを
待機して、貴重な時間を浪費する。この問題に対する1
つの可能な解決策は、現コマンドバッファが実行を終了
する前に、コンテキスト切換えおよびコマンドバッファ
ディスパッチを待ち行列に入れることである。次いで、
ハードウェアおよびドライバがこの機能をサポートする
ことを条件として、ハードウェアは、現コマンドバッフ
ァが完了したときに、別のコマンドバッファの実行を直
ちに開始することができる。するとシステムは、実行の
ために別のコマンドバッファを準備するための時間をよ
り多く有する。グラフィックスハードウェアは、別のコ
マンドバッファが待ち行列に入れられる前に新しいコマ
ンドバッファを完了する場合にだけアイドル状態になる
ことになる。
に関しては、ここでは記載のシステムは、切り替えに対
するハードウェアサポートを提供する。様々なイベント
が、VSYNCなどの外部イベントからタイムクォンタム(t
ime quantum)のハードウェア実施にわたって、実行中
にコマンドバッファの切り替えを潜在的に引き起こす。
この機能を実施するためには、切り替わったコマンドバ
ッファの実行を中断したところから再開することができ
るように、ハードウェアおよびドライバにより、ハード
ウェアコンテキストを保存することが可能でなければな
らず、オペレーティングシステムがコマンドバッファを
図2で触れたレディ状態に戻すことができるように、オ
ペレーティングシステムは通知を受けなければならな
い。このような切り替えを実施する1つの理由は、(次
のVSYNCが行われるときに表示フレームの準備ができて
いることを保証するために)表示フレームがVSYNCの直後
に構成されることを保証するためである。タイムクォン
タムのハードウェア実施により、2ミリ秒などのある設
定期間に実行した後にコマンドバッファが切り替わる。
テクスチャマッピングされ、アルファブレンドされた大
きな三角形などの非常に負荷の高いコマンドをコマンド
バッファが含む場合、ハードウェアは、他のコマンドバ
ッファをサブミットすることを考慮することが可能とな
るように、この実行を切り替えなければならない可能性
がある。
行する解説では一般に、コマンドバッファを均質なもの
として扱ったが、システムが、対応するハードウェアコ
ンテキストを有するアプリケーション特有のコマンドバ
ッファを提供できない理由はない。例えば、システム
で、コマンドバッファレベルで2D/3D描画とビデオ復
号化を別々に扱うこと、および所与のタイプのコマンド
バッファのディスパッチの前に、異なるハードウェアコ
ンテキストのロードを扱うことが望まれる可能性があ
る。
うアイデアは、軽量コンテキストのアイデアと良好な相
乗作用を有する。軽量コンテキストを操作するときに、
利用可能なコマンドのサブセットだけが利用可能である
からである。
るための保護ページに関しては、コマンドバッファに書
き込むユーザモードコードは、コマンドバッファ内に残
されたバイト数を追跡し、所与のコマンドを書き込むの
に必要なバイト数が利用可能なバイト数を超過したとき
に検出することができる。しかし、このバッファに書き
込むのに必要なコマンドに寄与する変数が多数であるた
め、このバイトカウントを手動で追跡することは煩わし
く、エラーの生じやすいプログラミングタスクとなる。
このタスクの複雑さを低減する1つの方法は、コマンド
バッファの終わりの直後に保護ページを割り振り、その
ページを書込み不能にすることである。次いでバッファ
をオーバーランするメモリ書込みが例外を引き起こす。
コマンドバッファに書き込むユーザモードコードは、構
造化例外処理ブロックで書込み命令を取り囲み、例外を
処理し、コマンドバッファがオーバーフローした場合に
エラーをランタイムに返すことができる。次いでユーザ
モードドライバに対するインターフェースは、バイトカ
ウントがランタイムとユーザモードドライバの間で渡さ
れる代替実装よりも単純で、効率的になる。
に関しては、ユーザモードコードがコマンドバッファに
書き込むことを許可するシステムにおいて、不正な書込
みにより、コマンドバッファの内容がハードウェアにサ
ブミットされる前に、その内容が破壊される可能性があ
る。注意深く防御設計を行わない場合、このような破壊
により、システムがハングし、またはシステムの挙動が
不安定になる可能性がある。基礎となるハードウェア設
計に応じて、この不測の事態に対処するためにいくつか
の方法がある。
り、実行するときにコマンドバッファを妥当性検査する
能力を有する場合、無効コマンドに直面したとき、割込
み、またはコマンドバッファの時期尚早な終了を信号で
知らせることができる。システムはエラー戻り、例外、
および他の何らかの機構を用いて、このようなイベント
をクライアントプロセスに通知することができる。
ァを実行するときにコマンドバッファを妥当性検査する
ことができない場合、ハードウェアがある時間フレーム
内に応答しなかった場合にシステムにハードウェアをリ
セットするオプションを与えることもできる。
ては、システム中のスレッド同期の量を低減する1つの
方法は、スレッドに対して装置を選択することを可能に
し、スレッドが「現装置」の概念を有することを可能に
し、それによって装置とスレッドとの間に1対1対応が
存在するようにすることである。この手法の利点は、相
互排他を保証するためにクリティカルセクション、mute
x、または他の同期プリミティブを獲得しなくても、装
置の範囲内で相互排他が保証されることである。グロー
バルにアクセス可能な表面に対してあるオペレーション
を実行することなど、装置の範囲から逸脱するオペレー
ションは、依然として同期しなければならない。このよ
うなオペレーションであっても、表面などのグローバル
オブジェクトを装置にバインドすることを可能にするこ
とにより、スレッドにバインドされた装置の相互排他特
性を活用することができる。
するシステムにより、アプリケーションが任意の装置に
アクセスすることが依然として可能である。このような
アクセスを可能にするソフトウェアインフラストラクチ
ャが行わなければならないのは単に、ある追加の性能コ
ストで、他のスレッドと分離し、他のスレッドと同期す
ることだけである。
な描画コマンドの維持に関しては、あるアプリケーショ
ンでは、「トークンストリーム」と呼ばれるハードウェ
ア独立な1つのメモリ中のグラフィックスハードウェア
に対する一連のコマンドをキャッシュする能力を有する
ことにより、アプリケーションがバッファを構成するの
に必要な労力を償却することを可能にすることによって
より高い性能が得られる。例えば、回転を含んだ一連の
描画コマンドは、このようなバッファに書き込むことが
できる。次いでアプリケーションは、単にバッファ中の
値をいくらか変更し、トークンストリームに再サブミッ
トすることによって、異なる回転角でシーンを再描画す
ることができる。DIRECT3D(登録商標)実行バッファ
は、このアイデアの実装の良い例である。
は、アプリケーションとハードウェアの間の重要な中間
ステップとして働く。ある点では、描画コマンドは、ハ
ードウェアで実行するために、ハードウェア特有のコマ
ンドに変換しなければならない。しかし、アプリケーシ
ョンが描画呼出しを行うときに(いわゆる「即時モー
ド」)その変換をリアルタイムで実施することは、描画
を実施するための常に最も効率的な方法であるわけでは
ない。ハードウェア特有のバッファ(この文書では「コ
マンドバッファ」と呼ぶ)は、アプリケーションに対し
て本質的に不透明である。ハードウェア特有のコマンド
への変換の詳細により、アプリケーションがそのバッフ
ァを編集することが難しくなり、または不可能となるか
らである。したがって、トークンストリームは、システ
ムがGPUに対する一連のコマンドのハードウェア独立な
潜在的に編集可能な記述を実装する必要があるかどうか
に応じて、システムで実装することができ、または実装
することができない重要な中間データ構造として働く。
ドウェア依存描画コマンドに関しては、グラフィックス
ハードウェア産業では、アプリケーションに対して不透
明に一連の描画コマンドをキャッシュする慣例があり、
それによってその一連の描画コマンドをより効率的に再
度実行することができるとされている。このキャッシュ
された描画コマンドは、しばしば「表示リスト」と呼ば
れる。このアイデアは、シーン(剛性オブジェクトなど)
の静的要素を表示リストに「レンダリング」することが
でき、次いでシーンを描画するとき、アプリケーション
が、表示更新毎に描画呼出しを実行するのではなく、適
切な表示リストを起動するというものである。実際に
は、表示リストの実行特性は、実装毎に大幅に変化し、
そのことによってアプリケーションは、実行特性を使用
するかどうかを決定するために、基礎となる実装につい
ての煩わしい想定を行わなければならない。
ルコマンドをハードウェア特有のコマンドに変換するユ
ーザモードドライバインターフェースを使用することに
よって、表示リスト機能を容易に公開することができ
る。表示リストの構築方法の詳細は変化する可能性があ
る。アプリケーションは、描画コマンドを実行する代わ
りに、描画コマンドを表示リスト内に記録させるモード
を設定することができ(OpenGLでは、このモードはglNew
Listを呼び出すことによって設定される)、またはアプ
リケーションがトークンストリームを構築し、次いでト
ークンストリームを表示リストに変換することを要求す
ることができる。いずれにしても、システムは、コマン
ドのDDI側をハードウェア特有のコマンドに変換し、そ
れを一時バッファに書き込むようにユーザモードドライ
バコンポーネントに依頼することになる(ハードウェア
特有のコマンドストリームの正確なサイズは、変換を実
施した後になるまでわからないからである)。記録が停
止したとき、またはトークンストリームが構文解析され
た後、システムは、適切なサイズのコマンドバッファを
割り振り、変換したハードウェアコマンドをその中にコ
ピーし、それによってハードウェアはコマンドバッファ
を容易に実行することができる。
た想定により、本発明の状況で表示リストを実装するこ
とは、ハードウェア実装毎の実行特性がより一貫すると
いう利点を有する。言い換えれば、表示リストが1つの
ハードウェア実装に対する性能上の利点を与える場合、
表示リストはすべてのハードウェア実装にわたってより
高速となる可能性が高い。アプリケーション開発者が関
する限りでは、この整合性は非常に大きな利点である。
表示リストの使用はアプリケーション開発者にとって重
荷であり、アプリケーション開発者は、表示リストを利
用するのに必要な追加の投資が割に合う場合について決
断することができなければならないからである。
ィックスハードウェアに関しては、複数のコマンドバッ
ファを同時に実行することができるグラフィックスハー
ドウェアをサポートするようにシステムを変更すること
ができる。例えば、グラフィックスハードウェアは、並
列に動作することができる複数の離散的グラフィックス
プロセッサを含むことができる。そのような一部のハー
ドウェアは並列処理を使用して、「走査線インターリー
ビング」を介してフィルレートを増加させるが、このよ
うなプロセッサによって別個のコマンドバッファを実行
することも可能である。このようなハードウェアアーキ
テクチャを提供することは、複数のコマンドバッファを
スタンバイ状態にすることを可能にする際の課題とな
り、複数のコマンドバッファを実行することをカーネル
モードスケジューラに保証させることにより、読取り専
用でアクセスすることを除いて(テクスチャマッピング
など)、同じリソースのいずれもアクセスされない。
明するシステムは、ビデオメモリ表面、頂点、索引バッ
ファ、および他の限定されたハードウェアリソースなど
のリソースを視覚化することができる。「視覚化する」
という用語は、アプリケーションがシステム全体で利用
可能なリソースよりも多くのリソースを有するかのよう
に振舞うことができるアイデアを指す。例えば、「仮想
メモリ」により、システム内に物理的に存在するメモリ
よりも多くのメモリをアプリケーションが割り振ること
が可能となり、メモリが物理的に存在するという錯覚を
維持するために、オペレーティングシステムがローカル
な大容量記憶装置とメモリをスワップする。CPUは、オ
ペレーティングシステムがメモリ使用量を監視すること
を可能にする機能を有し、それによって現在必要ではな
い物理メモリをディスクに「ページアウト」し、必要な
メモリのための空間を作成することができる。
Uリソースも同様に、所与のコマンドバッファの実行に
必要なリソースを追跡し、コマンドバッファがハードウ
ェアに発行されるときにそのリソースが利用可能となる
ことを保証することによって視覚化することができる。
ビデオメモリは、ビデオメモリ表面を「ページアウト」
するためにシステムメモリを扱うシステムを「大容量記
憶装置」として用いて、上記の仮想メモリと同様に管理
することができる。システムメモリ中に戻された表面を
必要とする実行のためにコマンドバッファが選択された
とき、オペレーティングシステムは、(恐らくビデオメ
モリ表面を解放することによって、またはビデオメモリ
からシステムメモリに他の表面を引き抜くことによって
空間を作成して)新しいビデオメモリ表面を割り振り、
システムメモリの内容をその表面にコピーしなければな
らないことになる。得られる表面は、元の位置とは異な
る位置になる可能性が高く、したがってオペレーティン
グシステムは、ビデオメモリ表面へのリファレンスを追
跡し、コマンドバッファをハードウェアにディスパッチ
する前にコマンドバッファ内にこのリファレンスを「用
意」しなければならないことになる。
のドライバDLLの実装を示す。図4では、アプリケーシ
ョン401、ランタイム402、およびドライバ403
の一部はユーザモードで動作して、描画コマンドをDMA
メモリ中のハードウェア特有のコマンドバッファに書き
込む。一般に、現在のPCシステムではこれらの書込みは
AGPメモリへの非一時的な書込みであり、この実装で図
示するように、アプリケーション401はEXEに存在
し、ランタイム402とユーザモードドライバ403は
動的にアプリケーション401にリンクされるDLLに存
在する。以下で説明するように、システムのユーザモー
ド部分のこの詳細は異なる可能性があり、具体的には、
アプリケーション401、アプリケーション401およ
びランタイム402、またはアプリケーション401、
ランタイム402、およびユーザモードドライバ403
が潜在的に管理コードとなる可能性がある。
換えられるのを防ぐために、システムは、ユーザモード
ドライバDLL403のロードについてはカーネルドライ
バ405に照会する(セキュリティの観点から見てカー
ネルコードは信頼されるため)。
(「スケジューラ」)とカーネルドライバ405は、カー
ネルモードで協働してコマンドバッファをハードウェア
406にディスパッチする(スケジューラ404は、ど
のコマンドバッファをディスパッチすべきかを決定し、
カーネルドライバ405はスケジューラの要求時にコマ
ンドバッファをディスパッチすることをハードウェア4
06に指令する)。このシステムでは、ドライバロジッ
クの大半はカーネルドライバ405ではなくユーザモー
ドドライバDLL 403に存在することを企図する。ユー
ザモードドライバは、DLLレベルの呼出しをハードウェ
ア特有のコマンドにマッピングする(この操作は、特に
頂点および/またはシェーダプログラムをコンパイルす
る際には複雑になり、エラーが発生しやすくなる可能性
がある)大量のコードを含むことができるのに対して、
カーネルドライバは比較的小さく単純であり、システム
の堅牢性が最大となる。
行ってグラフィックスオペレーションを実施している際
に発生するイベントの順序を具体的に示す。図5のブロ
ック図の構成要素は、陰影を付けて示してある。すなわ
ち、ユーザモード構成要素には陰影を付け、カーネルモ
ードの構成要素には陰影を付けず、ハードウェアには陰
影とハッチングを付けてある。図5では、コマンドバッ
ファをハードウェア構成要素としては具体的に図示して
いない。図5によれば、ユーザモードドライバ520
は、ハードウェア特有のコマンドを装置の現コマンドバ
ッファに書き込み、コマンドバッファスケジューラ(シ
ステムカーネルサポート530の一部)は、カーネルモ
ードドライバ550を介してコマンドバッファをハード
ウェア560にディスパッチし、終了したコマンドバッ
ファは、システムのアプリケーションが使用するために
リサイクルされる。潜在的には、システムカーネルサポ
ート530がリソースの共用を仲裁することで、複数の
アプリケーション500が、利用可能なコマンドバッフ
ァのプールを共用できることに留意されたい。
描画コンテキストを作成すると、システムカーネルサポ
ート530は、531で新しいコマンドバッファを作成
できるかどうかを確認する。可能である場合には532
で新しいコマンドバッファを作成して533で初期化
し、スレッドが534で初期化済みコマンドバッファを
取得した後、アプリケーション500は描画呼出し50
2を行うことができる。ステップ531でコマンドバッ
ファを作成することができない場合は、アプリケーショ
ン500は534で初期化済みコマンドバッファが利用
できるようになるまで待機しなければならない。アプリ
ケーション500がコマンドバッファを取得すると、ア
プリケーション500、ランタイム510、およびユー
ザモードドライバ520は3つのコンポーネント間の典
型的な対話に入り、これによりハードウェア特有のコマ
ンドがコマンドバッファに書き込まれる。アプリケーシ
ョン500による描画呼出し502は511でランタイ
ム510によって妥当性検査され、次いでチェック51
2により現在のコマンドバッファのフラッシュが必要で
あるかどうかを判定する。必要でない場合は、513で
描画コマンドをより単純なカノニカルDDI呼出しに変換
し、ユーザモードドライバ520に渡す。ドライバはこ
のDDI呼出しをハードウェア特有のコマンドに変換し、
それをコマンドバッファに書き込むことを試みる。フラ
ッシュについてのチェック522でコマンドバッファに
空きがないと判定される場合は、コマンドを書き込み、
実行を継続する前に、コマンドバッファをシステムカー
ネルサポート530にサブミットして、システムカーネ
ルサポート530から新しいコマンドバッファを取得し
なければならない。ランタイム510またはユーザモー
ドドライバ520により、フラッシュが必要であると判
定される場合、ステップ535でコマンドバッファを待
ち行列に加える。このとき、システムカーネルは、53
6で(一般には実行中のコマンドバッファがないために)
コマンドバッファを直ちにサブミットすることができる
かどうかを調べることができる。直ちにサブミットする
ことができない場合はコマンドバッファを待ち行列に入
れたままにし、534で新しいコマンドバッファを取得
しなければならない。適切な初期化済みコマンドバッフ
ァが使用できるようになるのを待ち、次いでそれを装置
に割り当てるこの機能ブロックは、アプリケーション5
00が描画を開始できるようになる前に必要な操作と同
一であることに留意されたい。
は、アプリケーション500が初期化されて描画コマン
ドを実行し、ランタイム510およびユーザモードドラ
イバ520がその描画コマンドをハードウェア特有のコ
マンドに変換し、それをコマンドバッファに書き込むと
きの「典型的な」スレッド実行をたどっている。フラッ
シュが必要であるとランタイム510またはユーザモー
ドドライバ520が判定した場合(すなわちコマンドバ
ッファをサブミットしなければならないと判定した場
合)、(ランタイム510、ユーザモードドライバ52
0、システムカーネルサポート530に渡る)第1の白
抜きの矢印で示すスレッドの実行が続く。すなわち、コ
マンドバッファが待ち行列に加えられ、可能な場合にサ
ブミットされ、次いで新しいコマンドバッファが得ら
れ、したがって実行を続行することができる。
5でコマンドバッファを待ち行列に加えた後にコマンド
バッファが取る「典型的」な経路をたどっている。コマ
ンドバッファを直ちにディスパッチすることができる場
合(チェック536)、コマンドバッファを537でレデ
ィ状態としてマークし、540でディスパッチするため
に選択する。そうでない場合、待機コマンドバッファ
は、現実行コマンドバッファが実行を終了するときに、
イベントの通常の過程でレディ状態としてマークしなけ
ればならない。
ディスパッチするために選択するとき、システムカーネ
ルサポート530は、カーネルドライバ550に、ハー
ドウェアを適切なコンテキストにコンテキスト切換えを
させ(551)、コマンドバッファをハードウェアにデ
ィスパッチさせる(552)。次いでハードウェアは、
コマンドバッファが切り替わるか、またはコマンドバッ
ファが終了するまで、コマンドバッファを読み取り、実
行する(561)。コマンドバッファが563で普通に
完了した場合、ハードウェアは割込みを信号で知らせ、
割込みサービスルーチン553が実行される。このと
き、ISRは、ハードウェアコンテキストを保存しようと
する(554)可能性があるが、ハードウェアが同じコ
ンテキストに対して作用する連続する2つのコマンドバ
ッファを実行するように依頼される場合、ドライバは、
コンテキスト切換え551へこのオペレーションを延期
しようとする可能性がある。このステップ554の後、
カーネルシステムサポート530は、そのコマンドバッ
ファが必要とするリソースを解放することができ、関係
するクライアントにコマンドバッファが完了したことを
知らせるためのイベントなど、どんな通知機構も信号で
知らせることができる(538)。ステップ538の
後、カーネルシステムサポートは2つの異なるタスクを
有する。すなわち、カーネルシステムは、新たに利用可
能となったコマンドバッファを再初期化し、それを初期
化プールに加えなければならず(533)、かつ任意の
待ちコマンドバッファを非ブロック化し、それをレディ
待ち行列に移動しなければならない(539)。ステッ
プ539の後、別のコマンドバッファをディスパッチす
るために540で選択することができる。
550、システムカーネルサポート530に渡る)第2
の白抜きの矢印で示すように、切り替えの場合は、通常
のコマンドバッファ完了とわずかに異なるように処理さ
れる。切り替えたコマンドバッファは終了しなかったの
で、システムは、コマンドバッファの完了を通知(ステ
ップ538)してはならず、従属コマンドバッファを非
ブロック化(ステップ539)してもならない。その代わ
り、ドライバは、切り替えが行われたところから再始動
することができるように、部分的に実行したコマンドバ
ッファのコンテキストを保存し(554)、切り替えに
ついて認識する必要のある任意のクライアントに通知し
(541)、次のレディコマンドバッファをでディスパ
ッチするために選択する(540)。
例には、VSYNCなどの外部イベント、または走査線など
の特定の位置に対する表示リフレッシュの到着、または
タイムクォンタムの満了が含まれる。加えて、タイムク
ォンタムの管理に関して、オペレーティングシステム
は、カーネルドライバ550を呼び出すことによってグ
ラフィックスプロセッサを切り替えるための機構を使用
することができる。これは、グラフィックスプロセッサ
をいつ切り替えるかを決定し、次いでハードウェア56
0ではなく、システムカーネルサポート530にとどま
ることに関する複雑さおよび責任を除き、ハードウェア
で調停されたタイムクォンタムの満了と同等である。リ
フレッシュが(ティアフリー更新のために)ある走査線を
通過するときに一連のBltコマンドを実行することな
ど、そのようなイベントに対する応答をシステムが先に
セットアップしているとみなす。
よび5に関連して説明したシステムに適用できることに
留意されたい。例えば、上記により、システムカーネル
サポート530は、カーネルドライバ550にコンテキ
スト切換えコマンドバッファをディスパッチさせること
によって、潜在的にコンテキスト切換えタスク551を
引き継ぐことができる。別の例では、上記でより詳細に
説明したように、コンテキストタイプと、コマンドバッ
ファのタイプを潜在的に区別することによって、軽量コ
ンテキストをこのシステムでサポートすることができ
る。別の例では、実行コマンドバッファが終了すると同
時に、ハードウェアが先に選択したコマンドバッファの
実行を開始する、上記で呈示したアイデアを利用するた
めに、ステップ540(「レディコマンドバッファをデ
ィスパッチするために選択する」)をわずかに修正する
ことができる。さらに別の例では、ランタイム510お
よびユーザモードドライバ520がコマンドバッファオ
ーバーフロー522を検出するための効率的な方法は、
システムカーネルサポート530が書込み不能保護ペー
ジを各コマンドバッファの終わりに割り振り、構造化例
外処理を使用して、保護ページへの書込みが試みられた
ときを検出することである。最後に、無効コマンドバッ
ファに対してシステムを堅牢にするアイデアは、無効コ
マンドがハードウェアに割込みを生成させるときに例外
を信号で送ることによって、またはハードウェアが過度
に長期間応答しなくなった場合に、特別なカーネルドラ
イバ550のエントリポイントを介してハードウェアを
リセットすることによって容易にこのシステムに組み込
むことができる。
ノニカルコマンドバッファのフォーマットを示す。図6
は、上述の本発明の特定の実装である。この実装は、コ
マンドがランタイム602(オペレーティングシステム
の一部)によってカノニカルコマンドバッファフォーマ
ットを使用するバッファに書き込まれることを除いて、
図4に関連して説明した実装と同様である。そのような
フォーマットについては、当業界で前例がある。その前
例は、例えばDIRECT3D(登録商標)で使用されている「D
rawPrimitive2」トークンストリームである。このフォ
ーマットがハードウェアによる直接消費に適している場
合、実行は、ユーザモードドライバDLL403中の変換
層を必要とする代わりに、ハードウェアがランタイム6
02からの出力を直接消費することができることを除い
て、図4に関連して説明したのと同様に進行する。
ニカルコマンドバッファを示す。
マットでコマンドのバッファ703を生成し、次いでそ
のバッファをスケジューリングする、システムの別の変
形形態を示す。ディスパッチするために選択した後、カ
ーネルモードドライバ405は、全バッファを読み取
り、それをハードウェア特有のコマンドに変換しなけれ
ばならない。図7は、これらのコマンドがカーネルモー
ドドライバによってDMAメモリ707に書き込まれるこ
とを示す。しかし、このようなシステムでは、ハードウ
ェアを制御するどんな機構でも使用することができる。
図7のシステムは、DrawPrimitives2トークンストリー
ムがカーネルモードドライバ405に渡されるという点
で、DIRECT3D(登録商標)ドライバ構造での現況技術と
酷似している。主な差は、図7のシステムがコマンドバ
ッファのOS調停スケジューリングを企図しているのに対
して、DIRECT3D(登録商標)は現在のところ正式にはGPU
の時間をスケジューリングしないことである。
て、CPU上でのスレッド実行の定義を当業者は理解でき
よう。すなわちスレッドが、複数のタスクを同時に動作
することを可能にするためにオペレーティングシステム
でコンテキスト切換えしなければならない揮発性CPUレ
ジスタと、他のCPU状態とをカプセル化する。十分に細
かい細分性でスレッドコンテキストをCPUの内外にスワ
ップし、それぞれがある期間(しばしば「スレッドクォ
ンタム」として知られている)に実行することを可能に
することにより、オペレーティングシステムは、スレッ
ドによって並列に実行される錯覚を実現することができ
る。
テキストのGPU類似物が同様に実現される。しかし、GPU
コンテキストがCPUスレッドコンテキストと関連する場
合にいくつかの利点があり、それによって、そのスレッ
ドで実行中のCPUコードだけでGPUコンテキストを操作で
きることを理解されたい。CPUスレッドコンテキストが
有することができるのが、CPUスレッドコンテキストに
関連する1つのGPUコンテキスト(「現コンテキスト」)
だけとなる、CPUコンテキストとGPUコンテキストの間の
1対1対応については当業界で前例がある(OpenGL API
を参照)。このようなシステムでのGPUコンテキストの管
理は、当該のOpenGLアクセラレータのベンダから提供さ
れるモノリシックドライバによって、オペレーティング
システムをほとんどまたは全く使用せずに調整され、し
たがってOpenGLのコンテキスト中のスレッド/GPUコンテ
キスト関係から得られる利点は、ここで述べるシステム
中の関係とは著しく異なる。
一のCPUスレッドとを関連付けることによる明白な利点
は、GPU状態を変更するのに、スレッド同期(例えばスピ
ンロック、クリティカルセクション、またはmutex)の必
要がないことである。そのスレッドは、GPUコンテキス
ト上で動作することができる唯一のスレッドであること
がわかっているからである。スレッド同期量を低減する
ことにより、性能上の利点が得られる。例えば、図5に
示す高頻度イベント(描画呼出し502、妥当性検査5
11、フラッシュチェック512、DDIへの変換51
3、DDIからハードウェアコマンドへの変換521、フ
ラッシュチェック522、およびコマンド書込み52
3)中にスレッド同期プリミティブを獲得する必要はな
い。
ミティブを活用することを示す。現代のオペレーティン
グシステムが、スピンロック、クリティカルセクショ
ン、mutex、イベント、セマフォー、(多重スレッドによ
って共用アクセス用に獲得することができ、または単一
スレッドによって排他的アクセス用に獲得することがで
きる)リソースなど、多数のスレッド同期プリミティブ
を提供することを当業者は理解できよう。これらのスレ
ッド同期プリミティブにより、一般に、あるイベントが
発生するまで(外部イベント、リソースが利用可能とな
るなど)実行スレッドが実行を中断することが可能とな
る。スレッドがそのような同期プリミティブを待機して
いる場合、オペレーティングシステムは、スレッドが実
行を続行することができるように、プリミティブが「信
号で知らせを受ける」ときを検出する。上記で列挙した
様々な同期プリミティブのセマンティクスは良くドキュ
メント化される。例えば、共用リソースへのアクセスを
調整するのに使用する「mutex」プリミティブを説明す
る。「mutex」は、一度に1つのスレッドだけが獲得す
ることができ、別のスレッドがmutexを獲得することが
できる前に解放しなければならない。mutexを解放した
とき、複数のスレッドがmutexを待機している可能性が
あり、その場合、オペレーティングシステムはmutexを
単一のスレッドに与えて、そのスレッドがmutexを解放
するまでそのスレッドを非ブロック化しなければならな
い。GPUコンテキストをCPUスレッドに関連付ける利点
は、セマンティクスの詳細とスレッド同期プリミティブ
の実装(これらは当業者に良く理解されている)とは無関
係であり、したがってこの詳細をここで詳述しない。
トがシステム中の1つのCPUスレッドと関連する場合、
そのスレッドをスレッド同期プリミティブを使用して中
断することにより、本質的に、CPUスレッドが非ブロッ
ク化されるまで、そのGPUコンテキストがアプリケーシ
ョンから利用不能となることである。GPUコンテキスト
のそのような要求を行うことができるのは中断されたス
レッドだけなので、スレッドが中断される限り、そのGP
Uコンテキストに描画オペレーションまたは他のオペレ
ーションを実施するよう依頼することはできない。基礎
となるシステムが適切な低レベル機能(例えば対応するG
PUへの保留描画コマンドのフラッシュ)を提供する場
合、アプリケーションはスレッド同期プリミティブを使
用して、描画を他のスレッドのオペレーションと調整す
ることができる。
テムが、スレッド中に選択されたGPUコンテキストを有
するスレッドを中断し、当該のスレッドが非ブロック化
されるまでそのGPUの動作を防止するための多数のアプ
リケーションが存在する。例えば、リソース管理の目的
で、GPUリソースのすべてを単一アプリケーションに渡
すことが必要であることがある(例えば、WINDOWS(登録
商標)では、フルスクリーンの排他的DirectX(登録商標)
ゲームはアプリケーションフォーカスを取得する)。オ
ペレーティングシステムは、GPUで描画しようとする他
のスレッドを中断することができ、したがってそのスレ
ッドは、描画するのに必要なリソースがそのスレッドか
ら利用不能である間に描画を試みることで、貴重な時間
を浪費することがない。
切換えとを統合することに関しては、CPUコンテキスト
が有することができるのが1つの関連するGPUコンテキ
ストだけとなるように上述のGPUコンテキスト/CPUコン
テキストの関連が強化される場合、CPUとGPUとの間に密
接な関連が存在する、あるハードウェアアーキテクチャ
(統合グラフィックスアーキテクチャおよび/またはUMA
グラフィックスアーキテクチャ)に関して別の利点が潜
在的に得られる。この場合、オペレーティングシステム
のスレッドコンテキスト切換えコードは、CPUのコンテ
キストがロードされるのと同時に、関連するGPUコンテ
キストを任意選択でロードすることができる。この実装
の方策は、CPUコードが図5に示す外部メモリ内に常駐
するコマンドバッファにGPUコマンドを書き込むことが
必要でない可能性のある、あるシステムに対して特に有
利である。スレッドの現GPUコンテキストは、そのコン
テキストがCPU内にあるスレッドのコンテキストで実行
中のコードによって操作することができる可能性のある
唯一のコンテキストであるので、スレッドのGPUコンテ
キストに対応するハードウェアレジスタを、CPUコンテ
キストがロードされると同時にそのスレッドから利用可
能にすることにより、描画コマンドをGPUによる後の消
費のためにバッファに書き込むのとは対照的に、描画コ
マンドをGPUに即時ディスパッチすることが容易とな
る。例えば、x86アーキテクチャでは、ハードウェア
レジスタをポートI/Oスペースにマッピングすることが
でき、それによってIN/OUT命令をGPUと通信するのに使
用することができ、あるいは、メモリマップ済みレジス
タに公開することができ、それによって特定のメモリ位
置への読み書きがGPUと通信することになる。このよう
な機能は、ハードウェアにサブミットされるコマンドの
厳格な妥当性検査によって実施しなければならず、した
がってバグの多いコードまたは悪意あるコードによって
開始された偽のオペレーションが、オペレーティングシ
ステムをクラッシュまたは破壊することはできない。次
いで図5のユーザモードドライバ520は、コマンドを
コマンドバッファに書き込むのではなく、これらのハー
ドウェア機能に関するオペレーションを現スレッドに公
開されたものとして単に実施する。
ーリング問題および待機問題のほとんど、またはすべて
が、オペレーティングシステムのスレッドスケジューリ
ング機構に効果的に合併される。例えば、オペレーティ
ングシステムは、所与のリソースが利用可能となるまで
(例えば1つのメモリがページインされた後に利用可能
となるまで)実行することができないスレッドを中断す
るための機能を含む。この機能は増強しなければなら
ず、それによってこのスレッドの現GPUコンテキストに
対して必要なリソースを含む、実行を続行するのに必要
なリソースすべてが利用可能になるまで、現GPUコンテ
キストを有するスレッドが中断される。オペレーティン
グシステム中の仮想メモリ/ページング機能に関して
は、オペレーティングシステムと基礎となるハードウェ
ア機能との間の密接な協調が、そのようなシステムを実
施するのに必要となる。
ドコンテキスト切換えがより高価になるかもしれない
が、コンテキストが現在ロードされているCPUスレッド
にとってGPUコンテキストが現行ではない場合に、GPUを
コンテキスト切り換えしないことなどの最適化を実施す
るのが簡単である。
で、管理コードを活用することができる。例えば、20
02年1月4日に出願された「管理ドライバアプリケー
ション」という名称の、同時係属出願の米国特許出願第
10/039,035号に記載されているように、固有
のグラフィックス処理およびグラフィックスシステムの
方式で、中間言語形式でオブジェクトを管理するシステ
ムおよび方法が説明されている。図5のシステムは、具
体的には、アプリケーション500、ランタイム51
0、および/またはユーザモードドライバ520の部分
が中間言語形式で送達され、クライアント上でJITコン
パイルされる管理コードを活用することができる。この
3つのコンポーネントは、中間言語形式でクライアント
に別々に送達される。次いでJITコンパイラは、3つの
コンポーネントのすべての部分を含む、統合された1つ
のオブジェクトコードにそれらを合成する。このような
アーキテクチャの潜在的な利点は、より最適なオブジェ
クトコードが実行されることである。例えばクライアン
トコンピュータ上で利用可能なマイクロプロセッサに特
有の最適化などの利点とは無関係に、エントリポイント
へのアプリケーション500の呼出しでの定数は、ラン
タイム510およびユーザモードドライバ520に伝播
することができ、潜在的には、同じ結果を達成するため
に何回か関数呼出し境界を横断する代わりに、いくつか
の一定の語をコマンドバッファに書き込むオブジェクト
コードが得られる。ユーザモードドライバ520はクラ
イアント上のグラフィックスハードウェアに特有である
ので、アプリケーション500の中間言語形式は依然と
してハードウェア独立である。
ーネント(アプリケーション500、ランタイム51
0、およびユーザモードドライバ520)すべてに対す
る管理コードを生成することによって達成されるのに対
して、システムはアプリケーション500およびランタ
イム510を管理させ、別々のユーザモードドライバ5
20と対話することができ、さらには単にアプリケーシ
ョン500を管理させ、別々のランタイム510および
ユーザモードドライバ520と対話することができる。
実際、このようなサブシステムは、ランタイム510お
よび/またはユーザモードドライバ520の中間言語形
式およびユーザモードDLL形式がどちらも利用可能であ
ることを条件として、安全に共存するように作成するこ
とができる。
について説明したレイトバウンド(late-bound)管理コ
ードからも利点を得ることができる。ランタイム602
および702が管理される場合、JITは、実行時のパラ
メータ妥当性チェックなどの最適化を実施することがで
きる。図6のシステムでは、JITによって生成された、
統合された1つのオブジェクトコードは、ハードウェア
への最終的なサブミットのために、カノニカルコマンド
バッファデータをDMA可能メモリに書き込む。図7のシ
ステムでは、JITによって生成されたオブジェクトコー
ドは、カーネルモードドライバによる構文解析および変
換のために、中間バッファにデータを放出する。
ステムは、ハードウェアがDMA可能であることを想定し
ている。複数のクライアントアプリケーションがハード
ウェアにコマンドを送ろうとする可能性があり、DMA
は、それらのアプリケーションが互いの干渉または競合
を最小となるように並列に動作させるための直接的な方
法であるからである。本発明は、PIOまたはMMIOなどの
異なるモデルを使用してプログラムされる非DMAハード
ウェア上で動作するように再構築することができる。こ
のようなシステムを実装するには、ドライバのユーザモ
ード部分は、ハードウェアで直接消費することができる
ハードウェア特有のトークンストリームではなく、1組
のハードウェア独立なトークンをバッファに書き込むこ
とができる。スケジューラがコマンドバッファをカーネ
ルドライバにサブミットしたとき、カーネルドライバ
は、ハードウェア独立なトークンをハードウェア特有の
コマンドに変換し、それをハードウェアのネイティブ制
御機構を介して送る。このような実装に対処するため
に、システムは、ユーザモードドライバが書き込むため
の非DMAメモリの割振りを提供しなければならず、コマ
ンドバッファ完了を通知するための適切な機構を実装し
なければならない。非DMAメモリを割り振る問題に対処
するために、システムは、コマンドバッファメモリをそ
のユーザモード複製に割り振り、書き込むオプションを
カーネルドライバに与えることができる。コマンドバッ
ファの完了を通知する問題に対処するために、カーネル
ドライバに対するインターフェースは、コマンドバッフ
ァがハードウェアによって実行されたという返り値を介
して、スケジューラに通知するオプションを、ドライバ
に与えることができる。
装置およびネットワークアーキテクチャに関連して本発
明の例示的実施形態を説明したが、基礎となる概念は、
コプロセッシングリソースを管理することが望ましいど
んなコンピューティング装置またはシステムにも適用す
ることができる。したがって、本発明による、コプロセ
ッサの計算リソースを管理する技術は、様々なアプリケ
ーションおよび装置に適用することができる。例えば、
本発明の管理技法は、装置上の別個のオブジェクトとし
て、別のオブジェクトの一部として、サーバからダウン
ロード可能なオブジェクトとして、装置またはオブジェ
クトとネットワーク間の「仲介役」として、分散オブジ
ェクトなどとして提供されるコンピューティング装置の
グラフィックシステムに適用することができる。本明細
書では、様々な選択肢の代表的なものとして例示的プロ
グラミング言語、名前、および例を選んだが、これらの
言語、名前、および例は限定的なものではない。
ェアまたはソフトウェア、あるいは適切な場合には両方
の組合せと共に実装することができる。したがって、本
発明の方法および装置、またはその特定の態様または部
分は、フロッピー(登録商標)ディスケット、CD-ROM、
ハードドライブ、あるいはその他の任意の機械可読記憶
媒体など有形の媒体で実施されるプログラムコード(す
なわち命令)の形をとることができ、この場合このプロ
グラムコードがコンピュータなどのマシンにロードさ
れ、実行されると、そのマシンは本発明を実施する装置
となる。プログラム可能なコンピュータでプログラムコ
ードを実行する場合、コンピューティング装置は一般
に、プロセッサ、プロセッサで可読な記憶媒体(揮発性
および不揮発性のメモリおよび/または記憶素子)、少な
くとも1つの入力装置、および少なくとも1つの出力装
置を含む。例えばデータ処理APIなどを使用することに
より、本発明の管理技法を利用することが可能な1つま
たは複数のプログラムは、高レベルの手続き型プログラ
ミング言語またはオブジェクト指向プログラミング言語
で実装してコンピュータシステムと通信することが好ま
しい。しかし、望ましい場合はアセンブリ言語や機械語
でプログラムを実装することができる。いずれの場合
も、言語はコンパイル型言語またはインタプリタ型言語
でよく、ハードウェア実装と組み合わせることができ
る。
またはケーブル、光ケーブル、あるいは他の任意の形態
の伝送などの、何らかの伝送媒体を介して伝送されるプ
ログラムコードの形で実施された通信を介して実施する
ことも可能であり、この場合は、プログラムコードが、
EPROM、ゲートアレイ、プログラマブルロジックデバイ
ス(PLD)、クライアントコンピュータ、ビデオレコーダ
などのマシンで受信され、ロードされ、実行されると、
上記の例示的実施形態で説明したリソース管理機能を有
する受信側のマシンが本発明を実施する装置になる。汎
用プロセッサで実装するとき、このプログラムコード
は、プロセッサと組み合わされ、本発明の機能を起動す
るように動作する固有の装置を提供する。さらに、本発
明に関連して使用する任意の記憶技術は常にハードウェ
アとソフトウェアの組合せでよい。
を説明したが、他の類似の実施形態を使用することがで
き、あるいは本発明から逸脱することなく本発明と同じ
機能を実施するために記載の実施形態に修正や追加を行
うことができることを理解されたい。例えば、本発明の
例示的なネットワーク環境は、ピアツーピアのネットワ
ーク環境などネットワーク環境の状況で説明している
が、本発明はこれに限定されず、本願に記載の方法は、
有線、無線を問わず、ゲームコンソール、ハンドヘルド
コンピュータ、ポータブルコンピュータなど任意のコン
ピューティング装置や環境に応用することができ、また
通信ネットワークを介して接続され、そのネットワーク
を介して接続された任意の数の上記のようなコンピュー
ティング装置に応用できることを当業者は理解されよ
う。さらに、特に無線ネットワーク装置の数が依然とし
て増加しているので、ハンドヘルド装置のオペレーティ
ングシステム、およびアプリケーション特有のオペレー
ティングシステムを含む様々なコンピュータプラットフ
ォームが企図されることを強調しておく。さらに、本発
明は、複数の処理チップまたはプロセッサ中に、あるい
は複数の処理チップおよびプロセッサにわたって実施す
ることができ、記憶装置も同様に複数の装置にわたって
実施することができる。したがって、本発明はどの単一
の実施形態にも限定されず、特許請求の範囲による広さ
と範囲において解釈すべきである。
ンピューティングシステム中のコプロセッサの計算リソ
ースの効率的な管理が可能となる。
ピューティング装置を有する例示的ネットワーク環境を
表すブロック図である。
限定的コンピューティング装置を表すブロック図であ
る。
ーションがコマンドバッファを使用するときの、コマン
ドバッファの例示的ライフサイクルを示す図である。
有のコマンドに変換するドライバコンポーネントの例示
的実装を示す図である。
有のコマンドに変換するドライバコンポーネントの例示
的実装を示す図である。
有のコマンドに変換するドライバコンポーネントの例示
的実装を示す図である。
有のコマンドに変換するドライバコンポーネントの例示
的実装を示す図である。
有のコマンドに変換するドライバコンポーネントの例示
的実装を示す図である。
実装を示す図である。
ミングインターフェース呼出しを行って、グラフィック
スオペレーションを実施するときに発生するイベントの
例示的シーケンスを例として詳細に示す図である。
消費可能カノニカルコマンドバッファのフォーマットを
示す図である。
コマンドバッファのフォーマットを示す図である。
ピューティング装置 120 プロセッサ 121 システムバス 130 システムメモリ 131 ROM 132 RAM 133 BIOS 134、144 オペレーティングシステム 135、145、185 アプリケーションプログラム 135a〜135e オブジェクト 136、146 他のプログラムモジュール 137、147 プログラムデータ 140、150 インターフェース 141 ハードディスクドライブ 151 磁気ディスクドライブ 152 磁気ディスク 155 光ディスクドライブ 156 光ディスク 160 ユーザ入力インターフェース 161 ポインティングデバイス 162 キーボード 170 アダプタ 171 LAN 172 モデム 173 WAN 180 リモートコンピュータ 181 メモリ記憶装置 182 グラフィックスインタフェース 184 GPU 186 ビデオメモリ 190 ビデオインタフェース 191 モニタ 195 出力周辺インターフェース 196 プリンタ 197 スピーカ 201 初期化 202 受け取り 203 待機 204 レディ 205 スタンバイ 206 実行 207 終了 301、311、321、331、341、401、5
00 アプリケーション 302、312、322、332、342、510、6
02、702 ランタイム 303、314、324、336、343、403、4
05 ドライバ 304、315、325、337、346 コマンドバ
ッファ 306、406 ハードウェア 313、335 トークンストリーム 323、334、345 実行可能アプリケーション 404 コマンドバッッファスケジューラ 405 カーネルドライバ 410 DMAメモリ 520 ユーザモードドライバ 530 システムカーネルサポート 550 カーネルドライバ 560 ハードウェア 703 バッファ 707 DMAメモリ
Claims (74)
- 【請求項1】 ホストプロセッサを有するホストコンピ
ューティングシステム中の少なくとも1つのコプロセッ
サの計算リソースを制御するための方法であって、 前記ホストコンピューティングシステムのホストプロセ
ッサによって前記少なくとも1つのコプロセッサにサブ
ミットされたコマンドバッファで、前記コンピューティ
ングシステムの前記少なくとも1つのコプロセッサを制
御するステップと、 前記コマンドバッファの少なくとも1つのコマンドバッ
ファ中のコマンドに応答して、前記少なくとも1つのコ
プロセッサによって前記ホストコンピューティングシス
テムにデータを戻して伝送するステップと、 前記ホストコンピューティングシステム中に含まれる管
理オブジェクトによって前記コマンドバッファの前記伝
送をスケジューリングするステップとを備え、 前記少なくとも1つのコプロセッサの前記計算リソース
は、前記ホストコンピューティングシステム上でインス
タンス化された複数のアプリケーションから同時に利用
可能であることを特徴とする方法。 - 【請求項2】 前記スケジューリングは、前記ホストコ
ンピューティングシステム中に含まれるオペレーティン
グシステムによって、前記コマンドバッファの前記伝送
をスケジューリングすることを含むことを特徴とする請
求項1に記載の方法。 - 【請求項3】 前記管理オブジェクトは、コプロセッサ
から、コマンドバッファが実行を終了したという通知を
受けることを特徴とする請求項1に記載の方法。 - 【請求項4】 現コマンドバッファが終了したときにコ
プロセッサが実行を開始するための新しいコマンドバッ
ファを待ち行列に入れるステップをさらに含むことを特
徴とする請求項1に記載の方法。 - 【請求項5】 コマンドバッファがサブミットされたと
きにコプロセッサコンテキスト切換えを指定するステッ
プをさらに含むことを特徴とする請求項1に記載の方
法。 - 【請求項6】 前記管理オブジェクトにより、複数のタ
イプのコプロセッサコンテキストが可能となることを特
徴とする請求項1に記載の方法。 - 【請求項7】 コプロセッサコンテキストをホストプロ
セッサスレッドコンテキストと関係付けるステップをさ
らに含むことを特徴とする請求項6に記載の方法。 - 【請求項8】 前記管理オブジェクトにより、前記ホス
トプロセッサおよび前記コプロセッサに対するコンテキ
スト切換えコードを統合するステップをさらに含むこと
を特徴とする請求項7に記載の方法。 - 【請求項9】 コマンドバッファが無効であることを、
コプロセッサによって前記管理オブジェクトに通知する
ステップをさらに含むことを特徴とする請求項1に記載
の方法。 - 【請求項10】 前記少なくとも1つのコプロセッサの
うちのコプロセッサが所定の期間応答しない場合に、前
記コプロセッサをリセットするステップをさらに含むこ
とを特徴とする請求項1に記載の方法。 - 【請求項11】 前記コマンドバッファの合成中に、ハ
ードウェア特有のドライバオブジェクトにより、前記管
理オブジェクトのアプリケーションプログラミングイン
ターフェースを介してコマンドバッファの命令をハード
ウェア特有の命令に変換するステップをさらに含むこと
を特徴とする請求項1に記載の方法。 - 【請求項12】 前記変換はユーザモードで動作するこ
とを特徴とする請求項11に記載の方法。 - 【請求項13】 バッファオーバーフローを効率的に検
出することを容易にするために、保護ページを前記コマ
ンドバッファの終わりに割り振るステップをさらに含む
ことを特徴とする請求項12に記載の方法。 - 【請求項14】 前記ユーザモードドライバ、および対
応するランタイムコンポーネントが中間言語形式で提供
され、前記ユーザモードドライバおよびランタイムコン
ポーネントを有するクライアント装置上でのjust in ti
me(JIT)コンパイルをさらに含むことを特徴とする請求
項12に記載の方法。 - 【請求項15】 前記アプリケーションも中間言語形式
で提供され、前記JITコンパイルは、前記ユーザモード
ドライバおよびランタイムを有する前記クライアント装
置上での前記アプリケーションのJITコンパイルを含む
ことを特徴とする請求項14に記載の方法。 - 【請求項16】 前記ドライバオブジェクトは、対応す
るカーネルモードドライバオブジェクトと協働し、前記
コマンドバッファをハードウェアにサブミットする前に
編集することを特徴とする請求項12に記載の方法。 - 【請求項17】 前記少なくとも1つのコプロセッサ
は、少なくとも1つのグラフィックスプロセッサを含む
ことを特徴とする請求項1に記載の方法。 - 【請求項18】 外部イベントの発生時に、前記少なく
とも1つのコプロセッサによって切り替えるステップを
さらに含むことを特徴とする請求項1に記載の方法。 - 【請求項19】 前記外部イベントは、オペレーティン
グシステムが対応するカーネルモードドライバオブジェ
クトに呼出しを行って前記少なくとも1つのコプロセッ
サを切り替えることであることを特徴とする請求項18
に記載の方法。 - 【請求項20】 前記ホストプロセッサは、処理時間の
スケジューリングを調整するために割込みを受けること
を特徴とする請求項18に記載の方法。 - 【請求項21】 コマンドバッファの前記制御データス
トリームをコプロセッサにサブミットする前に編集する
間、前記管理オブジェクトによって、前記少なくとも1
つのコプロセッサの少なくとも1つのリソースを仮想化
するステップをさらに含むことを特徴とする請求項1に
記載の方法。 - 【請求項22】 前記少なくとも1つのコプロセッサの
前記管理オブジェクトによって仮想化された前記少なく
とも1つのリソースはメモリであることを特徴とする請
求項21に記載の方法。 - 【請求項23】 前記管理オブジェクトはスレッド同期
プリミティブを使用して、コプロセッサコマンドバッフ
ァの構築、スケジューリング、およびサブミットを調整
することを特徴とする請求項1に記載の方法。 - 【請求項24】 請求項1の方法を実施するための複数
のコンピュータ実行可能命令を格納したことを特徴とす
るコンピュータ読み取り可能な記録媒体。 - 【請求項25】 請求項1の方法を実施するためのコン
ピュータ実行可能命令を搬送することを特徴とする変調
データ信号。 - 【請求項26】 請求項1の方法を実施する手段を備え
たことを特徴とするコンピューティング装置。 - 【請求項27】 ホストプロセッサを有するホストコン
ピューティングシステム中の少なくとも1つのコプロセ
ッサの計算リソースを制御するための複数のコンピュー
タ実行可能モジュールを格納した少なくとも1つのコン
ピュータ読み取り可能な記録媒体であって、前記コンピ
ュータ実行可能モジュールは、 前記ホストコンピューティングシステムのホストプロセ
ッサによって前記少なくとも1つのコプロセッサにサブ
ミットされたコマンドバッファで、前記コンピューティ
ングシステムの前記少なくとも1つのコプロセッサを制
御し、かつ前記コマンドバッファの伝送をスケジューリ
ングするための管理オブジェクトと、 前記コマンドバッファの少なくとも1つのコマンドバッ
ファ中のコマンドに応答して、前記少なくとも1つのコ
プロセッサによって前記ホストコンピューティングシス
テムにデータを戻して伝送する手段とを備え、 それによって、前記少なくとも1つのコプロセッサの前
記計算リソースが、前記ホストコンピューティングシス
テム上でインスタンス化された複数のアプリケーション
から同時に利用可能であることを特徴とする少なくとも
1つのコンピュータ読み取り可能な記録媒体。 - 【請求項28】 前記管理オブジェクトは、前記ホスト
コンピューティングシステムの前記オペレーティングシ
ステム中に含まれることを特徴とする請求項27に記載
の少なくとも1つのコンピュータ読み取り可能な記録媒
体。 - 【請求項29】 前記管理オブジェクトは、コプロセッ
サから、コマンドバッファが実行を終了したという通知
を受けることを特徴とする請求項27に記載の少なくと
も1つのコンピュータ読み取り可能な記録媒体。 - 【請求項30】 前記管理オブジェクトは、現コマンド
バッファが終了したときにコプロセッサが実行を開始す
るための新しいコマンドバッファを待ち行列に入れるこ
とを特徴とする請求項27に記載の少なくとも1つのコ
ンピュータ読み取り可能な記録媒体。 - 【請求項31】 前記管理オブジェクトは、コマンドバ
ッファがサブミットされたときにコプロセッサコンテキ
スト切換えを指定することを特徴とする請求項27に記
載の少なくとも1つのコンピュータ読み取り可能な記録
媒体。 - 【請求項32】 前記管理オブジェクトにより、複数の
タイプのコプロセッサコンテキストが可能となることを
特徴とする請求項27に記載の少なくとも1つのコンピ
ュータ読み取り可能な記録媒体。 - 【請求項33】 前記管理オブジェクトは、コプロセッ
サコンテキストをホストプロセッサスレッドコンテキス
トと関係付けることを特徴とする請求項32に記載の少
なくとも1つのコンピュータ読み取り可能な記録媒体。 - 【請求項34】 前記管理オブジェクトは、前記ホスト
プロセッサおよび前記コプロセッサに対するコンテキス
ト切換えコードを統合することを特徴とする請求項33
に記載の少なくとも1つのコンピュータ読み取り可能な
記録媒体。 - 【請求項35】 コプロセッサは、コマンドバッファが
無効であることを前記管理オブジェクトに通知する手段
を備えたことを特徴とする請求項27に記載の少なくと
も1つのコンピュータ読み取り可能な記録媒体。 - 【請求項36】 前記管理オブジェクトは、前記少なく
とも1つのコプロセッサのうちのコプロセッサが所定の
期間応答しない場合に、前記コプロセッサをリセットす
ることを特徴とする請求項27に記載の少なくとも1つ
のコンピュータ読み取り可能な記録媒体。 - 【請求項37】 前記管理オブジェクトにより、前記コ
マンドバッファの合成中に、ハードウェア特有のドライ
バオブジェクトによってコマンドバッファの命令をハー
ドウェア特有の命令に変換することが可能となることを
特徴とする請求項27に記載の少なくとも1つのコンピ
ュータ読み取り可能な記録媒体。 - 【請求項38】 前記ドライバオブジェクトによる前記
変換はユーザモードで動作することを特徴とする請求項
37に記載の少なくとも1つのコンピュータ読み取り可
能な記録媒体。 - 【請求項39】 前記管理オブジェクトは、バッファオ
ーバーフローを効率的に検出することを容易にするため
に、保護ページを前記コマンドバッファの終わりに割り
振ることを特徴とする請求項38に記載の少なくとも1
つのコンピュータ読み取り可能な記録媒体。 - 【請求項40】 前記ユーザモードドライバ、および対
応するランタイムコンポーネントは中間言語形式で提供
され、前記ユーザモードドライバおよびランタイムコン
ポーネントは、just in time(JIT)コンパイルされるこ
とを特徴とする請求項38に記載の少なくとも1つのコ
ンピュータ読み取り可能な記録媒体。 - 【請求項41】 前記アプリケーションも中間言語形式
で提供され、前記アプリケーション、前記ユーザモード
ドライバ、およびランタイムはJITコンパイルされるこ
とを特徴とする請求項40に記載の少なくとも1つのコ
ンピュータ読み取り可能な記録媒体。 - 【請求項42】 前記ドライバオブジェクトは、対応す
るカーネルモードドライバオブジェクトと協働し、前記
コマンドバッファをハードウェアにサブミットする前に
編集することを特徴とする請求項38に記載の少なくと
も1つのコンピュータ読み取り可能な記録媒体。 - 【請求項43】 前記少なくとも1つのコプロセッサ
は、少なくとも1つのグラフィックスプロセッサを含む
ことを特徴とする請求項27に記載の少なくとも1つの
コンピュータ読み取り可能な記録媒体。 - 【請求項44】 前記管理オブジェクトは、外部イベン
トの発生時に、前記少なくとも1つのコプロセッサによ
って切り替わることを特徴とする請求項27に記載の少
なくとも1つのコンピュータ読み取り可能な記録媒体。 - 【請求項45】 前記外部イベントは、オペレーティン
グシステムが対応するカーネルモードドライバオブジェ
クトに呼出しを行って前記少なくとも1つのコプロセッ
サを切り替えることであることを特徴とする請求項44
に記載の少なくとも1つのコンピュータ読み取り可能な
記録媒体。 - 【請求項46】 前記ホストプロセッサは、処理時間の
スケジューリングを調整するために前記管理オブジェク
トによって割込みを受けることを特徴とする請求項27
に記載の少なくとも1つのコンピュータ読み取り可能な
記録媒体。 - 【請求項47】 コマンドバッファの制御データストリ
ームをコプロセッサにサブミットする前に編集する間、
前記管理オブジェクトは、前記少なくとも1つのコプロ
セッサの少なくとも1つのリソースを仮想化することを
特徴とする請求項27に記載の少なくとも1つのコンピ
ュータ読み取り可能な記録媒体。 - 【請求項48】 前記少なくとも1つのコプロセッサの
前記管理オブジェクトによって仮想化された前記少なく
とも1つのリソースはメモリであることを特徴とする請
求項47に記載の少なくとも1つのコンピュータ読み取
り可能な記録媒体。 - 【請求項49】 前記管理オブジェクトはスレッド同期
プリミティブを使用して、コプロセッサコマンドバッフ
ァの構築、スケジューリング、およびサブミットを調整
することを特徴とする請求項27に記載の少なくとも1
つのコンピュータ読み取り可能な記録媒体。 - 【請求項50】 請求項27に記載の前記コンピュータ
読み取り可能な記録媒体の前記複数のコンピュータ実行
可能命令の実行の結果として出力されたコンピュータ実
行可能命令を搬送することを特徴とする変調データ信
号。 - 【請求項51】 請求項27に記載の前記コンピュータ
読み取り可能な記録媒体の前記複数のコンピュータ実行
可能命令を実施する手段を備えたことを特徴とするコン
ピューティング装置。 - 【請求項52】 ホストプロセッサを有するホストコン
ピューティングシステム中の少なくとも1つのコプロセ
ッサの計算リソースを制御するためのコンピューティン
グ装置であって、 前記ホストコンピューティングシステムのホストプロセ
ッサによって前記少なくとも1つのコプロセッサにサブ
ミットされたコマンドバッファで、前記コンピューティ
ングシステムの前記少なくとも1つのコプロセッサを制
御し、かつ前記コマンドバッファの伝送をスケジューリ
ングするための管理オブジェクトと、 前記コマンドバッファの少なくとも1つのコマンドバッ
ファ中のコマンドに応答して、前記少なくとも1つのコ
プロセッサによって前記ホストコンピューティングシス
テムにデータを戻して伝送する手段とを備え、 それによって、前記少なくとも1つのコプロセッサの前
記計算リソースが、前記ホストコンピューティングシス
テム上でインスタンス化された複数のアプリケーション
から同時に利用可能であることを特徴とするコンピュー
ティング装置。 - 【請求項53】 前記管理オブジェクトは、前記ホスト
コンピューティングシステムのオペレーティングシステ
ム中に含まれることを特徴とする請求項52に記載のコ
ンピューティング装置。 - 【請求項54】 前記管理オブジェクトは、コプロセッ
サから、コマンドバッファが実行を終了したという通知
を受けることを特徴とする請求項52に記載のコンピュ
ーティング装置。 - 【請求項55】 前記管理オブジェクトは、現コマンド
バッファが終了したときにコプロセッサが実行を開始す
るための新しいコマンドバッファを待ち行列に入れるこ
とを特徴とする請求項52に記載のコンピューティング
装置。 - 【請求項56】 前記管理オブジェクトは、コマンドバ
ッファがサブミットされたときにコプロセッサコンテキ
スト切換えを指定することを特徴とする請求項52に記
載のコンピューティング装置。 - 【請求項57】 前記管理オブジェクトにより、複数の
タイプのコプロセッサコンテキストが可能となることを
特徴とする請求項52に記載のコンピューティング装
置。 - 【請求項58】 前記管理オブジェクトは、コプロセッ
サコンテキストをホストプロセッサスレッドコンテキス
トと関係付けることを特徴とする請求項57に記載のコ
ンピューティング装置。 - 【請求項59】 前記管理オブジェクトは、前記ホスト
プロセッサおよび前記コプロセッサに対するコンテキス
ト切換えコードを統合することを特徴とする請求項58
に記載のコンピューティング装置。 - 【請求項60】 コプロセッサは、コマンドバッファが
無効であることを前記管理オブジェクトに通知する手段
を備えたことを特徴とする請求項52に記載のコンピュ
ーティング装置。 - 【請求項61】 前記管理オブジェクトは、前記少なく
とも1つのコプロセッサのうちのコプロセッサが所定の
期間応答しない場合に、前記コプロセッサをリセットす
ることを特徴とする請求項52に記載のコンピューティ
ング装置。 - 【請求項62】 前記管理オブジェクトにより、前記コ
マンドバッファの合成中に、ハードウェア特有のドライ
バオブジェクトによってコマンドバッファの命令をハー
ドウェア特有の命令に変換することが可能となることを
特徴とする請求項52に記載のコンピューティング装
置。 - 【請求項63】 前記ドライバオブジェクトによる前記
変換はユーザモードで動作することを特徴とする請求項
62に記載のコンピューティング装置。 - 【請求項64】 前記管理オブジェクトは、バッファオ
ーバーフローを効率的に検出することを容易にするため
に、保護ページを前記コマンドバッファの終わりに割り
振ることを特徴とする請求項63に記載のコンピューテ
ィング装置。 - 【請求項65】 前記ユーザモードドライバ、および対
応するランタイムコンポーネントは中間言語形式で提供
され、前記ユーザモードドライバおよびランタイムコン
ポーネントは、just in time(JIT)コンパイルされるこ
とを特徴とする請求項63に記載のコンピューティング
装置。 - 【請求項66】 前記アプリケーションも中間言語形式
で提供され、前記アプリケーション、前記ユーザモード
ドライバ、およびランタイムはJITコンパイルされるこ
とを特徴とする請求項65に記載のコンピューティング
装置。 - 【請求項67】 前記ドライバオブジェクトは、対応す
るカーネルモードドライバオブジェクトと協働し、前記
コマンドバッファをハードウェアにサブミットする前に
編集することを特徴とする請求項63に記載のコンピュ
ーティング装置。 - 【請求項68】 前記少なくとも1つのコプロセッサ
は、少なくとも1つのグラフィックスプロセッサを含む
ことを特徴とする請求項52に記載のコンピューティン
グ装置。 - 【請求項69】 前記管理オブジェクトが、外部イベン
トの発生時に、前記少なくとも1つのコプロセッサによ
って切り替わることを特徴とする請求項52に記載のコ
ンピューティング装置。 - 【請求項70】 前記外部イベントは、オペレーティン
グシステムが対応するカーネルモードドライバオブジェ
クトに呼出しを行って前記少なくとも1つのコプロセッ
サを切り替えることであることを特徴とする請求項69
に記載のコンピューティング装置。 - 【請求項71】 前記ホストプロセッサは、処理時間の
スケジューリングを調整するために前記管理オブジェク
トによって割込みを受けることを特徴とする請求項52
に記載のコンピューティング装置。 - 【請求項72】 コマンドバッファの制御データストリ
ームをコプロセッサにサブミットする前に編集する間、
前記管理オブジェクトは、前記少なくとも1つのコプロ
セッサの少なくとも1つのリソースを仮想化することを
特徴とする請求項52に記載のコンピューティング装
置。 - 【請求項73】 前記少なくとも1つのコプロセッサの
前記管理オブジェクトによって仮想化された前記少なく
とも1つのリソースはメモリであることを特徴とする請
求項72に記載のコンピューティング装置。 - 【請求項74】 前記管理オブジェクトはスレッド同期
プリミティブを使用して、コプロセッサコマンドバッフ
ァの構築、スケジューリング、およびサブミットを調整
することを特徴とする請求項52に記載のコンピューテ
ィング装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/039,036 | 2002-01-04 | ||
US10/039,036 US7234144B2 (en) | 2002-01-04 | 2002-01-04 | Methods and system for managing computational resources of a coprocessor in a computing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003233508A true JP2003233508A (ja) | 2003-08-22 |
JP2003233508A5 JP2003233508A5 (ja) | 2006-02-23 |
Family
ID=21903312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003000689A Pending JP2003233508A (ja) | 2002-01-04 | 2003-01-06 | コンピューティングシステム中のコプロセッサの計算リソースを制御するための方法およびコンピューティング装置 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7234144B2 (ja) |
EP (1) | EP1326165A3 (ja) |
JP (1) | JP2003233508A (ja) |
CN (2) | CN1549964A (ja) |
CA (1) | CA2415583A1 (ja) |
HK (1) | HK1140564A1 (ja) |
WO (1) | WO2003058431A1 (ja) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008269198A (ja) * | 2007-04-19 | 2008-11-06 | Ize:Kk | シンクライアント用オペレーティングシステム、シンクライアント装置、サーバ・シンクライアントシステム、及びシンクライアント用オペレーティングシステムの実行方法 |
JP2010511227A (ja) * | 2006-11-28 | 2010-04-08 | マイクロソフト コーポレーション | 信頼性の低いアドレス空間への実行コードのコンパイル |
KR20120058605A (ko) * | 2009-09-03 | 2012-06-07 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | Gpu 워크의 하드웨어 기반 스케쥴링 |
JP2013062690A (ja) * | 2011-09-13 | 2013-04-04 | Fujitsu Ltd | 画像圧縮方法、画像圧縮装置およびシステム |
JP2013546098A (ja) * | 2010-12-13 | 2013-12-26 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | グラフィックス計算プロセススケジューリング |
JP2013546099A (ja) * | 2010-12-13 | 2013-12-26 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ユーザモードからのグラフィックス処理ディスパッチ |
JP2014522038A (ja) * | 2011-07-29 | 2014-08-28 | インテル コーポレイション | 中央処理ユニット及び画像処理ユニットの同期機構 |
JP2015502618A (ja) * | 2011-12-14 | 2015-01-22 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | シェーダコアにおけるシェーダリソース割当てのポリシー |
JP2017507405A (ja) * | 2014-02-20 | 2017-03-16 | インテル・コーポレーション | グラフィック処理ユニットのためのワークロードバッチサブミットメカニズム |
JP2020038626A (ja) * | 2018-08-10 | 2020-03-12 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | 人工知能チップに用いられる命令実行方法及び装置 |
Families Citing this family (220)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL145104A (en) * | 2001-08-23 | 2007-02-11 | Gregory Bondar | A method and system for balancing the load on a computer resource between computers |
US6809735B1 (en) * | 2002-01-08 | 2004-10-26 | Apple Computer, Inc. | Virtualization of graphics resources |
US7015919B1 (en) * | 2002-01-08 | 2006-03-21 | Apple Computer, Inc. | Virtualization of graphics resources |
US6809736B1 (en) * | 2002-01-08 | 2004-10-26 | Apple Computer, Inc. | Virtualization of graphics resources |
US7768522B2 (en) * | 2002-01-08 | 2010-08-03 | Apple Inc. | Virtualization of graphics resources and thread blocking |
US20030167347A1 (en) * | 2002-02-11 | 2003-09-04 | Combs James Lee | Home network printer adapter |
WO2003075116A2 (en) | 2002-03-01 | 2003-09-12 | T5 Labs Ltd | Centralised interactive graphical application server |
US7342883B2 (en) * | 2002-04-25 | 2008-03-11 | Intel Corporation | Method and apparatus for managing network traffic |
US6988268B2 (en) * | 2002-04-30 | 2006-01-17 | Microsoft Corporation | IO completion architecture for user-mode networking |
US9344235B1 (en) * | 2002-06-07 | 2016-05-17 | Datacore Software Corporation | Network managed volumes |
US7810133B2 (en) | 2002-08-23 | 2010-10-05 | Exit-Cube, Inc. | Encrypting operating system |
US6804729B2 (en) * | 2002-09-30 | 2004-10-12 | International Business Machines Corporation | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel |
IL152530A0 (en) * | 2002-10-28 | 2003-05-29 | Sphera Corp | Hierarchical repository for configuration-related and performance-related information related to computerized systems |
US7444637B2 (en) * | 2003-02-18 | 2008-10-28 | Microsoft Corporation | Systems and methods for scheduling coprocessor resources in a computing system |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US6947051B2 (en) * | 2003-02-18 | 2005-09-20 | Microsoft Corporation | Video memory management |
US7421694B2 (en) * | 2003-02-18 | 2008-09-02 | Microsoft Corporation | Systems and methods for enhancing performance of a coprocessor |
US7370212B2 (en) | 2003-02-25 | 2008-05-06 | Microsoft Corporation | Issuing a publisher use license off-line in a digital rights management (DRM) system |
US7015913B1 (en) * | 2003-06-27 | 2006-03-21 | Nvidia Corporation | Method and apparatus for multithreaded processing of data in a programmable graphics processor |
US8117624B2 (en) * | 2003-09-16 | 2012-02-14 | Matrox Electronic Systems Ltd. | Method and apparatus for performing real-time commands in a non real-time operating system environment |
US7340547B1 (en) * | 2003-12-02 | 2008-03-04 | Nvidia Corporation | Servicing of multiple interrupts using a deferred procedure call in a multiprocessor system |
US20050132032A1 (en) * | 2003-12-15 | 2005-06-16 | Bertrand Daniel W. | Autonomous agent-based system management |
US7735093B2 (en) * | 2004-03-02 | 2010-06-08 | Qualcomm Incorporated | Method and apparatus for processing real-time command information |
US8704837B2 (en) * | 2004-04-16 | 2014-04-22 | Apple Inc. | High-level program interface for graphics operations |
US7231632B2 (en) * | 2004-04-16 | 2007-06-12 | Apple Computer, Inc. | System for reducing the number of programs necessary to render an image |
US8134561B2 (en) | 2004-04-16 | 2012-03-13 | Apple Inc. | System for optimizing graphics operations |
US20060242406A1 (en) | 2005-04-22 | 2006-10-26 | Microsoft Corporation | Protected computing environment |
US20050278720A1 (en) * | 2004-05-27 | 2005-12-15 | Samsung Electronics Co., Ltd. | Distribution of operating system functions for increased data processing performance in a multi-processor architecture |
US7483898B2 (en) * | 2004-06-14 | 2009-01-27 | Microsoft Corporation | System and method for auditing a network |
US7889645B2 (en) * | 2004-06-17 | 2011-02-15 | Qualcomm Incorporated | Hybrid coordination function implementation |
EP1621897B1 (en) * | 2004-07-28 | 2010-07-28 | Medison Co., Ltd. | Ultrasound imaging apparatus having a function of selecting transmit focal points and method thereof |
US7320063B1 (en) | 2005-02-04 | 2008-01-15 | Sun Microsystems, Inc. | Synchronization primitives for flexible scheduling of functional unit operations |
US8347078B2 (en) | 2004-10-18 | 2013-01-01 | Microsoft Corporation | Device certificate individualization |
US8458713B2 (en) * | 2004-10-27 | 2013-06-04 | International Business Machines Corporation | Method, system, and apparatus for allocating resources to a software configurable computing environment |
US8464348B2 (en) * | 2004-11-15 | 2013-06-11 | Microsoft Corporation | Isolated computing environment anchored into CPU and motherboard |
US8176564B2 (en) | 2004-11-15 | 2012-05-08 | Microsoft Corporation | Special PC mode entered upon detection of undesired state |
US8336085B2 (en) | 2004-11-15 | 2012-12-18 | Microsoft Corporation | Tuning product policy using observed evidence of customer behavior |
US20060106920A1 (en) * | 2004-11-15 | 2006-05-18 | Microsoft Corporation | Method and apparatus for dynamically activating/deactivating an operating system |
US7581034B2 (en) * | 2004-11-23 | 2009-08-25 | Microsoft Corporation | Sending notifications to auxiliary displays |
US7586492B2 (en) * | 2004-12-20 | 2009-09-08 | Nvidia Corporation | Real-time display post-processing using programmable hardware |
US8274518B2 (en) * | 2004-12-30 | 2012-09-25 | Microsoft Corporation | Systems and methods for virtualizing graphics subsystems |
US20060146055A1 (en) * | 2005-01-06 | 2006-07-06 | Raymond Chow | Graphics controller providing for animated windows |
US7822994B2 (en) * | 2005-01-07 | 2010-10-26 | Konica Minolta Systems Laboratory, Inc. | Data bus line and bus having an encryption/decryption device |
US20060161715A1 (en) * | 2005-01-18 | 2006-07-20 | Konica Minolta Systems Laboratory, Inc. | Data bus line and bus |
TW200627258A (en) * | 2005-01-27 | 2006-08-01 | Lite On Technology Corp | Medium transfer-recording control method and the embedded system using the same |
US8219823B2 (en) | 2005-03-04 | 2012-07-10 | Carter Ernst B | System for and method of managing access to a system using combinations of user information |
US7839854B2 (en) * | 2005-03-08 | 2010-11-23 | Thomas Alexander | System and method for a fast, programmable packet processing system |
US8438645B2 (en) | 2005-04-27 | 2013-05-07 | Microsoft Corporation | Secure clock with grace periods |
US8725646B2 (en) | 2005-04-15 | 2014-05-13 | Microsoft Corporation | Output protection levels |
US9436804B2 (en) | 2005-04-22 | 2016-09-06 | Microsoft Technology Licensing, Llc | Establishing a unique session key using a hardware functionality scan |
US9363481B2 (en) | 2005-04-22 | 2016-06-07 | Microsoft Technology Licensing, Llc | Protected media pipeline |
US20060265758A1 (en) | 2005-05-20 | 2006-11-23 | Microsoft Corporation | Extensible media rights |
US8353046B2 (en) | 2005-06-08 | 2013-01-08 | Microsoft Corporation | System and method for delivery of a modular operating system |
TWI348652B (en) * | 2005-10-17 | 2011-09-11 | Via Tech Inc | Driver assisted asynchronous command processing |
US7711990B1 (en) | 2005-12-13 | 2010-05-04 | Nvidia Corporation | Apparatus and method for debugging a graphics processing unit in response to a debug instruction |
US7600155B1 (en) | 2005-12-13 | 2009-10-06 | Nvidia Corporation | Apparatus and method for monitoring and debugging a graphics processing unit |
US8212824B1 (en) * | 2005-12-19 | 2012-07-03 | Nvidia Corporation | Apparatus and method for serial save and restore of graphics processing unit state information |
US7697007B1 (en) * | 2005-12-19 | 2010-04-13 | Nvidia Corporation | Predicated launching of compute thread arrays |
TW200725412A (en) * | 2005-12-30 | 2007-07-01 | Tatung Co Ltd | Method for converting high-level programming language method into hardware component graph |
US8102398B2 (en) * | 2006-03-03 | 2012-01-24 | Ati Technologies Ulc | Dynamically controlled power reduction method and circuit for a graphics processor |
US7586493B1 (en) * | 2006-05-24 | 2009-09-08 | Nvidia Corporation | System and method for offloading application tasks in a multi-processor environment utilizing a driver |
US7773090B1 (en) * | 2006-06-13 | 2010-08-10 | Nvidia Corporation | Kernel mode graphics driver for dual-core computer system |
US8146066B2 (en) * | 2006-06-20 | 2012-03-27 | Google Inc. | Systems and methods for caching compute kernels for an application running on a parallel-processing computer system |
US8375368B2 (en) * | 2006-06-20 | 2013-02-12 | Google Inc. | Systems and methods for profiling an application running on a parallel-processing computer system |
US8136104B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for determining compute kernels for an application in a parallel-processing computer system |
US8108844B2 (en) * | 2006-06-20 | 2012-01-31 | Google Inc. | Systems and methods for dynamically choosing a processing element for a compute kernel |
US8381202B2 (en) * | 2006-06-20 | 2013-02-19 | Google Inc. | Runtime system for executing an application in a parallel-processing computer system |
US8261270B2 (en) * | 2006-06-20 | 2012-09-04 | Google Inc. | Systems and methods for generating reference results using a parallel-processing computer system |
US7814486B2 (en) * | 2006-06-20 | 2010-10-12 | Google Inc. | Multi-thread runtime system |
US8136102B2 (en) | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
US8443348B2 (en) | 2006-06-20 | 2013-05-14 | Google Inc. | Application program interface of a parallel-processing computer system that supports multiple programming languages |
US8024708B2 (en) * | 2006-06-20 | 2011-09-20 | Google Inc. | Systems and methods for debugging an application running on a parallel-processing computer system |
US7737984B2 (en) * | 2006-06-30 | 2010-06-15 | Honeywell International Inc. | Method and system for an external front buffer for a graphical system |
US7640421B1 (en) * | 2006-07-28 | 2009-12-29 | Nvidia Corporation | Method and system for determining context switch state |
US8345756B2 (en) * | 2006-08-31 | 2013-01-01 | Ati Technologies, Inc. | Method and system for parallel intra-prediction decoding of video data |
US7830389B2 (en) * | 2006-10-03 | 2010-11-09 | Honeywell International Inc. | Dual processor accelerated graphics rendering |
US7830387B2 (en) * | 2006-11-07 | 2010-11-09 | Microsoft Corporation | Parallel engine support in display driver model |
US8056093B1 (en) * | 2006-12-07 | 2011-11-08 | Nvidia Corporation | Asynchronous kernel processing for a graphics processing system |
US8207972B2 (en) * | 2006-12-22 | 2012-06-26 | Qualcomm Incorporated | Quick pixel rendering processing |
US20080162825A1 (en) * | 2007-01-02 | 2008-07-03 | International Business Machines Corporation | Method for optimizing distributed memory access using a protected page |
US8533697B2 (en) * | 2007-02-14 | 2013-09-10 | The Mathworks, Inc. | Graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment |
US8549500B2 (en) | 2007-02-14 | 2013-10-01 | The Mathworks, Inc. | Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment |
KR101116615B1 (ko) * | 2007-03-28 | 2012-03-07 | 삼성전자주식회사 | 자바 가상 머신 상에서 이뤄지는 애플리케이션 및 스레드의자원 관리 시스템 및 방법 |
US11836506B2 (en) | 2007-04-11 | 2023-12-05 | Apple Inc. | Parallel runtime execution on multiple processors |
US8341611B2 (en) * | 2007-04-11 | 2012-12-25 | Apple Inc. | Application interface on multiple processors |
US8286196B2 (en) | 2007-05-03 | 2012-10-09 | Apple Inc. | Parallel runtime execution on multiple processors |
CN101657795B (zh) | 2007-04-11 | 2013-10-23 | 苹果公司 | 多处理器上的数据并行计算 |
US8276164B2 (en) | 2007-05-03 | 2012-09-25 | Apple Inc. | Data parallel computing on multiple processors |
US8020150B1 (en) * | 2007-05-11 | 2011-09-13 | Nvidia Corporation | System, method, and computer program product for controlling a driver utilizing scripts |
US8237723B2 (en) * | 2007-06-07 | 2012-08-07 | Apple Inc. | Deferred deletion and cleanup for graphics resources |
US8269780B2 (en) | 2007-06-07 | 2012-09-18 | Apple Inc. | Batching graphics operations with time stamp tracking |
US8115773B2 (en) * | 2007-06-07 | 2012-02-14 | Apple Inc. | Serializing command streams for graphics processors |
US8193092B2 (en) | 2007-07-31 | 2012-06-05 | Micron Technology, Inc. | Semiconductor devices including a through-substrate conductive member with an exposed end and methods of manufacturing such semiconductor devices |
US20090040232A1 (en) * | 2007-08-10 | 2009-02-12 | Manjunath Basappa Muttur | Method to record bus data in a graphics subsystem that uses dma transfers |
US20090158299A1 (en) * | 2007-10-31 | 2009-06-18 | Carter Ernst B | System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed |
US8433747B2 (en) * | 2008-02-01 | 2013-04-30 | Microsoft Corporation | Graphics remoting architecture |
US8434098B2 (en) * | 2008-02-07 | 2013-04-30 | Microsoft Corporation | Synchronizing split user-mode/kernel-mode device driver architecture |
US8387075B1 (en) * | 2008-03-28 | 2013-02-26 | Emc Corporation | Common scheduling and synchronization primitives |
CN101359333B (zh) * | 2008-05-23 | 2010-06-16 | 中国科学院软件研究所 | 一种基于隐含狄利克雷分配模型的并行数据处理方法 |
US8225325B2 (en) | 2008-06-06 | 2012-07-17 | Apple Inc. | Multi-dimensional thread grouping for multiple processors |
US8286198B2 (en) | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
US8390631B2 (en) * | 2008-06-11 | 2013-03-05 | Microsoft Corporation | Synchronizing queued data access between multiple GPU rendering contexts |
US20090322768A1 (en) * | 2008-06-25 | 2009-12-31 | Lalonde Paul A | Compile-time type-safe composable state objects |
US8555292B2 (en) | 2008-06-27 | 2013-10-08 | Microsoft Corporation | Synchronizing communication over shared memory |
US8276145B2 (en) * | 2008-06-27 | 2012-09-25 | Microsoft Corporation | Protected mode scheduling of operations |
US8938738B2 (en) * | 2008-06-27 | 2015-01-20 | Microsoft Corporation | Shared user-mode for controlling synchronized access to a shared resource |
US9542192B1 (en) * | 2008-08-15 | 2017-01-10 | Nvidia Corporation | Tokenized streams for concurrent execution between asymmetric multiprocessors |
CN101661405B (zh) | 2008-08-28 | 2012-08-29 | 国际商业机器公司 | 一种基于多处理器系统的多库函数调用方法和系统 |
US8456478B2 (en) * | 2008-10-30 | 2013-06-04 | Microchip Technology Incorporated | Microcontroller with integrated graphical processing unit |
US8294723B2 (en) | 2008-11-07 | 2012-10-23 | Google Inc. | Hardware-accelerated graphics for web applications using native code modules |
US20100122253A1 (en) * | 2008-11-09 | 2010-05-13 | Mccart Perry Benjamin | System, method and computer program product for programming a concurrent software application |
US20100125740A1 (en) * | 2008-11-19 | 2010-05-20 | Accenture Global Services Gmbh | System for securing multithreaded server applications |
CN101403983B (zh) * | 2008-11-25 | 2010-10-13 | 北京航空航天大学 | 基于虚拟机的多核处理器的资源监控方法及系统 |
JP5195408B2 (ja) * | 2008-12-25 | 2013-05-08 | 富士通セミコンダクター株式会社 | マルチコアシステム |
US8307103B2 (en) * | 2009-03-09 | 2012-11-06 | Microsoft Corporation | Tear-free remote desktop protocol (RDP) display |
US8368707B2 (en) * | 2009-05-18 | 2013-02-05 | Apple Inc. | Memory management based on automatic full-screen detection |
US8797337B1 (en) | 2009-07-02 | 2014-08-05 | Google Inc. | Graphics scenegraph rendering for web applications using native code modules |
US8484647B2 (en) * | 2009-07-24 | 2013-07-09 | Apple Inc. | Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU |
US8743131B2 (en) * | 2009-09-10 | 2014-06-03 | Advanced Micro Devices, Inc. | Course grain command buffer |
US20110063305A1 (en) * | 2009-09-16 | 2011-03-17 | Nvidia Corporation | Co-processing techniques on heterogeneous graphics processing units |
US10169072B2 (en) * | 2009-09-23 | 2019-01-01 | Nvidia Corporation | Hardware for parallel command list generation |
US9830889B2 (en) | 2009-12-31 | 2017-11-28 | Nvidia Corporation | Methods and system for artifically and dynamically limiting the display resolution of an application |
US8478877B2 (en) * | 2010-02-24 | 2013-07-02 | Oracle International Corporation | Architecture-aware allocation of network buffers |
JP5396314B2 (ja) * | 2010-03-10 | 2014-01-22 | 株式会社日立製作所 | 不正操作検知システム及び不正操作検知方法 |
CN102214122B (zh) * | 2010-04-01 | 2014-01-29 | 联咏科技股份有限公司 | 配置计算机系统的装置 |
CN101799773B (zh) * | 2010-04-07 | 2013-04-17 | 福州福昕软件开发有限公司 | 并行计算的内存访问方法 |
CN101854254A (zh) * | 2010-05-10 | 2010-10-06 | 浪潮电子信息产业股份有限公司 | 一种监控服务器资源利用情况的方法 |
US8803892B2 (en) * | 2010-06-10 | 2014-08-12 | Otoy, Inc. | Allocation of GPU resources across multiple clients |
US8510763B2 (en) * | 2010-06-14 | 2013-08-13 | Microsoft Corporation | Changing streaming media quality level based on current device resource usage |
US20120001925A1 (en) * | 2010-06-30 | 2012-01-05 | Ati Technologies, Ulc | Dynamic Feedback Load Balancing |
CA2711874C (en) | 2010-08-26 | 2011-05-31 | Microsoft Corporation | Aligning animation state update and frame composition |
US8407710B2 (en) * | 2010-10-14 | 2013-03-26 | International Business Machines Corporation | Systems and methods for dynamically scanning a plurality of active ports for priority schedule of work |
US8619116B2 (en) * | 2010-10-22 | 2013-12-31 | Litl Llc | Video integration |
US11265510B2 (en) | 2010-10-22 | 2022-03-01 | Litl Llc | Video integration |
US9256465B2 (en) * | 2010-12-13 | 2016-02-09 | Advanced Micro Devices, Inc. | Process device context switching |
US20120194525A1 (en) * | 2010-12-13 | 2012-08-02 | Advanced Micro Devices, Inc. | Managed Task Scheduling on a Graphics Processing Device (APD) |
US20120229481A1 (en) * | 2010-12-13 | 2012-09-13 | Ati Technologies Ulc | Accessibility of graphics processing compute resources |
US20120188259A1 (en) * | 2010-12-13 | 2012-07-26 | Advanced Micro Devices, Inc. | Mechanisms for Enabling Task Scheduling |
US9299121B2 (en) * | 2010-12-15 | 2016-03-29 | Advanced Micro Devices, Inc. | Preemptive context switching |
US9507632B2 (en) * | 2010-12-15 | 2016-11-29 | Advanced Micro Devices, Inc. | Preemptive context switching of processes on ac accelerated processing device (APD) based on time quanta |
US8786619B2 (en) * | 2011-02-25 | 2014-07-22 | Adobe Systems Incorporated | Parallelized definition and display of content in a scripting environment |
GB2489278B (en) * | 2011-03-24 | 2019-12-25 | Advanced Risc Mach Ltd | Improving the scheduling of tasks to be performed by a non-coherent device |
US8533698B2 (en) | 2011-06-13 | 2013-09-10 | Microsoft Corporation | Optimizing execution of kernels |
DE102011119004A1 (de) * | 2011-11-19 | 2013-05-23 | Diehl Aerospace Gmbh | Grafikverarbeitungsvorrichtung, Anzeigevorrichtung für ein Flugzeugcockpit sowie Verfahren zur Anzeige von Grafikdaten |
US20130141447A1 (en) * | 2011-12-06 | 2013-06-06 | Advanced Micro Devices, Inc. | Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs |
US8933942B2 (en) | 2011-12-08 | 2015-01-13 | Advanced Micro Devices, Inc. | Partitioning resources of a processor |
KR101885211B1 (ko) | 2012-01-27 | 2018-08-29 | 삼성전자 주식회사 | Gpu의 자원 할당을 위한 방법 및 장치 |
US9229847B1 (en) * | 2012-04-18 | 2016-01-05 | Open Invention Network, Llc | Memory sharing for buffered macro-pipelined data plane processing in multicore embedded systems |
US9836316B2 (en) * | 2012-09-28 | 2017-12-05 | Intel Corporation | Flexible acceleration of code execution |
US9633230B2 (en) | 2012-10-11 | 2017-04-25 | Intel Corporation | Hardware assist for privilege access violation checks |
US10062141B2 (en) * | 2012-10-24 | 2018-08-28 | Nubo Software | Server-based fast remote display on client devices |
US9323543B2 (en) | 2013-01-04 | 2016-04-26 | Microsoft Technology Licensing, Llc | Capability based device driver framework |
US9811319B2 (en) | 2013-01-04 | 2017-11-07 | Microsoft Technology Licensing, Llc | Software interface for a hardware device |
US20140195834A1 (en) * | 2013-01-04 | 2014-07-10 | Microsoft Corporation | High throughput low latency user mode drivers implemented in managed code |
US9195575B2 (en) | 2013-05-17 | 2015-11-24 | Coherent Logix, Incorporated | Dynamic reconfiguration of applications on a multi-processor embedded system |
US9165337B2 (en) | 2013-05-31 | 2015-10-20 | Qualcomm Incorporated | Command instruction management |
US9904915B2 (en) * | 2013-08-08 | 2018-02-27 | Ncr Corporation | Virtualized ATM |
US9230518B2 (en) | 2013-09-10 | 2016-01-05 | Qualcomm Incorporated | Fault-tolerant preemption mechanism at arbitrary control points for graphics processing |
CN105683914B (zh) * | 2013-11-22 | 2019-09-24 | 英特尔公司 | 改进图形处理单元上的链式任务的性能的方法和装置 |
US9684709B2 (en) * | 2013-12-14 | 2017-06-20 | Microsoft Technology Licensing, Llc | Building features and indexing for knowledge-based matching |
US10157593B2 (en) * | 2014-02-24 | 2018-12-18 | Microsoft Technology Licensing, Llc | Cross-platform rendering engine |
TWI516982B (zh) * | 2014-04-22 | 2016-01-11 | 晨星半導體股份有限公司 | 計算裝置及計算裝置之處理安全服務之方法 |
CN105022970B (zh) * | 2014-04-29 | 2018-03-02 | 晨星半导体股份有限公司 | 计算装置及计算装置的处理安全服务的方法 |
US10031770B2 (en) * | 2014-04-30 | 2018-07-24 | Intel Corporation | System and method of delayed context switching in processor registers |
US9928564B2 (en) * | 2014-06-26 | 2018-03-27 | Intel Corporation | Efficient hardware mechanism to ensure shared resource data coherency across draw calls |
US9760406B2 (en) | 2014-09-02 | 2017-09-12 | Ab Initio Technology Llc | Controlling data processing tasks |
EP3189432B1 (en) * | 2014-09-02 | 2022-05-18 | AB Initio Technology LLC | Controlling data processing tasks |
KR102375350B1 (ko) | 2014-09-02 | 2022-03-16 | 아브 이니티오 테크놀로지 엘엘시 | 그래프 기반 프로그램 명세의 컴파일링 |
US10021161B2 (en) * | 2014-11-05 | 2018-07-10 | Qualcomm Incorporated | Compression of graphical commands for remote display |
US9635412B2 (en) * | 2014-11-24 | 2017-04-25 | The Directv Group, Inc. | System and method for providing a callback proxy for a set top box of with support of ISM-band wide area network access |
CN105812893B (zh) * | 2014-12-29 | 2019-07-26 | 深圳Tcl数字技术有限公司 | 页面视频播放的方法和系统 |
US9817776B2 (en) | 2015-01-19 | 2017-11-14 | Microsoft Technology Licensing, Llc | Memory descriptor list caching and pipeline processing |
US11797641B2 (en) | 2015-02-03 | 2023-10-24 | 1Qb Information Technologies Inc. | Method and system for solving the lagrangian dual of a constrained binary quadratic programming problem using a quantum annealer |
CA2881033C (en) | 2015-02-03 | 2016-03-15 | 1Qb Information Technologies Inc. | Method and system for solving lagrangian dual of a constrained binary quadratic programming problem |
US9734000B2 (en) * | 2015-06-18 | 2017-08-15 | Microsoft Technology Licensing, Llc | Seamless transitions between applications and devices |
US20170139740A1 (en) * | 2015-11-12 | 2017-05-18 | Futurewei Technologies, Inc. | Systems and Methods for Real Time Context Based Isolation and Virtualization |
KR102551695B1 (ko) * | 2015-11-25 | 2023-07-06 | 삼성메디슨 주식회사 | 의료 영상 장치 및 그 동작방법 |
WO2017107059A1 (en) * | 2015-12-22 | 2017-06-29 | Intel Corporation | Method and apparatus for best effort quality of service (qos) scheduling in a graphics processing architecture |
US10210593B2 (en) * | 2016-01-28 | 2019-02-19 | Qualcomm Incorporated | Adaptive context switching |
CA3017275C (en) | 2016-03-11 | 2023-05-23 | 1Qb Information Technologies Inc. | Methods and systems for quantum computing |
US10044638B2 (en) | 2016-05-26 | 2018-08-07 | 1Qb Information Technologies Inc. | Methods and systems for quantum computing |
US9870273B2 (en) | 2016-06-13 | 2018-01-16 | 1Qb Information Technologies Inc. | Methods and systems for quantum ready and quantum enabled computations |
US11157332B2 (en) | 2016-07-06 | 2021-10-26 | International Business Machines Corporation | Determining when to release a lock from a first task holding the lock to grant to a second task waiting for the lock |
US10417147B2 (en) * | 2016-08-12 | 2019-09-17 | Nxp B.V. | Buffer device, an electronic system, and a method for operating a buffer device |
EP3301572B1 (en) * | 2016-09-30 | 2023-05-24 | Dassault Systèmes | Method, program and system for simulating a 3d scene with a set of computing resources running in parallel |
EP3545414A1 (en) * | 2016-11-28 | 2019-10-02 | Amazon Technologies Inc. | On-demand code execution in a localized device coordinator |
CA3043974C (en) * | 2016-12-08 | 2021-11-09 | Ab Initio Technology Llc | Computational resource allocation |
US10296338B2 (en) * | 2016-12-09 | 2019-05-21 | Intel Corporation | System, apparatus and method for low overhead control transfer to alternate address space in a processor |
US10657619B2 (en) * | 2017-06-02 | 2020-05-19 | Apple Inc. | Task execution on a graphics processor using indirect argument buffers |
US11055807B2 (en) * | 2017-06-12 | 2021-07-06 | Apple Inc. | Method and system for a transactional based display pipeline to interface with graphics processing units |
EP3637272A4 (en) * | 2017-06-26 | 2020-09-02 | Shanghai Cambricon Information Technology Co., Ltd | DATA-SHARING SYSTEM AND RELATED DATA-SHARING PROCESS |
US10761983B2 (en) * | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10552070B2 (en) * | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10496437B2 (en) | 2017-11-14 | 2019-12-03 | International Business Machines Corporation | Context switch by changing memory pointers |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10698686B2 (en) * | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10635602B2 (en) * | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10664181B2 (en) | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
GB2572404B (en) * | 2018-03-29 | 2020-04-15 | Imagination Tech Ltd | Method and system for controlling processing |
US10424043B1 (en) * | 2018-07-02 | 2019-09-24 | Intel Corporation | Efficiently enqueuing workloads from user mode to hardware across privilege domains |
CN110765462B (zh) * | 2018-07-28 | 2023-06-27 | 阿里巴巴集团控股有限公司 | 一种操作控制方法、装置、计算系统及电子设备 |
US10795840B2 (en) * | 2018-11-12 | 2020-10-06 | At&T Intellectual Property I, L.P. | Persistent kernel for graphics processing unit direct memory access network packet processing |
US10705993B2 (en) * | 2018-11-19 | 2020-07-07 | Xilinx, Inc. | Programming and controlling compute units in an integrated circuit |
CN111581124A (zh) * | 2019-02-19 | 2020-08-25 | 睿宽智能科技有限公司 | 可缩短内文交换时间的方法及其半导体装置 |
WO2020168505A1 (zh) * | 2019-02-21 | 2020-08-27 | 华为技术有限公司 | 一种在多个处理器之间调度软件任务的方法和装置 |
CN109857564A (zh) * | 2019-03-05 | 2019-06-07 | 上海交通大学 | 基于细粒度的gpu的资源管理方法及其应用的gpu |
EP3720098B1 (en) * | 2019-04-02 | 2023-10-11 | The Raymond Corporation | Systems and methods for an arbitration controller to arbitrate multiple automation requests on a warehouse material handling vehicle |
CA3126553A1 (en) | 2019-06-19 | 2020-12-24 | 1Qb Information Technologies Inc. | Method and system for mapping a dataset from a hilbert space of a given dimension to a hilbert space of a different dimension |
CN111061511A (zh) * | 2019-11-22 | 2020-04-24 | 腾讯科技(深圳)有限公司 | 一种服务处理方法、装置及存储介质和服务器 |
US11153391B2 (en) * | 2020-01-31 | 2021-10-19 | Hewlett Packard Enterprise Development Lp | Connecting application instances to client devices |
CN113391917B (zh) * | 2020-03-13 | 2024-04-30 | 中国石油天然气集团有限公司 | 针对物探应用的多机异构并行计算方法及装置 |
CN111624908B (zh) * | 2020-05-18 | 2024-01-23 | 武汉理工大学 | 一种基于物联网技术的智能冷藏车车载数据采集终端系统 |
CN111796939A (zh) * | 2020-06-30 | 2020-10-20 | 联想(北京)有限公司 | 一种处理方法、装置及电子设备 |
CN114511683A (zh) * | 2020-10-27 | 2022-05-17 | 北京京东方光电科技有限公司 | 显示切换控制方法及系统、电子设备和存储介质 |
CN116776788B (zh) * | 2023-08-22 | 2024-03-19 | 摩尔线程智能科技(北京)有限责任公司 | 上下文切换验证方法及装置 |
CN117112029B (zh) * | 2023-10-24 | 2024-03-12 | 上海芯联芯智能科技有限公司 | 一种指令执行方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0495137A (ja) * | 1990-08-07 | 1992-03-27 | Nec Corp | オペレーティングシステムのコンテキスト切替方式 |
JPH04178739A (ja) * | 1990-11-13 | 1992-06-25 | Nec Corp | マイクロプロセッサ |
JPH0535835A (ja) * | 1991-07-25 | 1993-02-12 | Canon Inc | データ処理装置 |
JPH07271344A (ja) * | 1994-03-29 | 1995-10-20 | Hitachi Ltd | グラフィック表示装置 |
JPH09212371A (ja) * | 1996-02-07 | 1997-08-15 | Nec Corp | レジスタ退避及び復元システム |
JPH11120146A (ja) * | 1997-10-17 | 1999-04-30 | Nec Corp | 並列処理プログラムとコプロセッサとの間の排他制御方法およびその排他制御機能を有する計算システム |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5369749A (en) * | 1989-05-17 | 1994-11-29 | Ibm Corporation | Method and apparatus for the direct transfer of information between application programs running on distinct processors without utilizing the services of one or both operating systems |
US5144692A (en) * | 1989-05-17 | 1992-09-01 | International Business Machines Corporation | System for controlling access by first system to portion of main memory dedicated exclusively to second system to facilitate input/output processing via first system |
CA2069711C (en) * | 1991-09-18 | 1999-11-30 | Donald Edward Carmon | Multi-media signal processor computer system |
GB9123271D0 (en) * | 1991-11-02 | 1991-12-18 | Int Computers Ltd | Data processing system |
JPH07504054A (ja) * | 1992-02-18 | 1995-04-27 | アプル・コンピュータ・インコーポレーテッド | コンピュータシステムにおけるコプロセッサのプログラミングモデル |
US5708830A (en) * | 1992-09-15 | 1998-01-13 | Morphometrix Inc. | Asynchronous data coprocessor utilizing systolic array processors and an auxiliary microprocessor interacting therewith |
US5357614A (en) * | 1992-09-17 | 1994-10-18 | Rexon/Tecmar, Inc. | Data compression controller |
US6243762B1 (en) * | 1994-08-08 | 2001-06-05 | Mercury Computer Systems, Inc. | Methods and apparatus for data access and program generation on a multiprocessing computer |
US5657478A (en) * | 1995-08-22 | 1997-08-12 | Rendition, Inc. | Method and apparatus for batchable frame switch and synchronization operations |
US6212574B1 (en) * | 1997-04-04 | 2001-04-03 | Microsoft Corporation | User mode proxy of kernel mode operations in a computer operating system |
US6414687B1 (en) * | 1997-04-30 | 2002-07-02 | Canon Kabushiki Kaisha | Register setting-micro programming system |
JPH1165989A (ja) * | 1997-08-22 | 1999-03-09 | Sony Computer Entertainment:Kk | 情報処理装置 |
US6148438A (en) * | 1998-01-06 | 2000-11-14 | National Instruments Corporation | System and method for creating composite classes for objects having virtual functions for avoidance of user mode/kernel mode transitions |
KR100572945B1 (ko) * | 1998-02-04 | 2006-04-24 | 텍사스 인스트루먼츠 인코포레이티드 | 효율적으로 접속 가능한 하드웨어 보조 처리기를 구비하는디지탈 신호 처리기 |
US6487642B1 (en) * | 1998-10-22 | 2002-11-26 | Sony Corporation | Command manager |
US6473777B1 (en) * | 1998-10-30 | 2002-10-29 | National Semiconductor Corporation | Method for accelerating java virtual machine bytecode verification, just-in-time compilation and garbage collection by using a dedicated co-processor |
US6618767B1 (en) | 1998-11-17 | 2003-09-09 | Sun Microsystems, Inc. | Mechanism by which devices on unforeseen platform variants may be supported without re-release of core platform kernel software |
US6871350B2 (en) * | 1998-12-15 | 2005-03-22 | Microsoft Corporation | User mode device driver interface for translating source code from the user mode device driver to be executed in the kernel mode or user mode |
US6594761B1 (en) * | 1999-06-09 | 2003-07-15 | Cloakware Corporation | Tamper resistant software encoding |
EP1061438A1 (en) * | 1999-06-15 | 2000-12-20 | Hewlett-Packard Company | Computer architecture containing processor and coprocessor |
US6615167B1 (en) * | 2000-01-31 | 2003-09-02 | International Business Machines Corporation | Processor-independent system-on-chip verification for embedded processor systems |
US6922735B2 (en) * | 2000-04-03 | 2005-07-26 | Texas Instruments Incorporated | Management of co-processor information by integrating non-program information with program information |
US7076551B2 (en) * | 2000-04-03 | 2006-07-11 | Texas Instruments Incorporated | Using remote procedure calls to manage co-processor resources |
AU5319901A (en) * | 2000-04-05 | 2001-10-23 | Chicory Systems Inc | Method for making efficient service calls to a hardware coprocessor |
US6769115B1 (en) * | 2000-05-01 | 2004-07-27 | Emc Corporation | Adaptive interface for a software development environment |
EP1168168A3 (en) * | 2000-06-20 | 2005-04-13 | Interuniversitair Microelektronica Centrum Vzw | Virtual hardware machine methods and devices |
-
2002
- 2002-01-04 US US10/039,036 patent/US7234144B2/en active Active
- 2002-12-31 CA CA002415583A patent/CA2415583A1/en not_active Abandoned
-
2003
- 2003-01-03 EP EP03000153A patent/EP1326165A3/en not_active Withdrawn
- 2003-01-06 JP JP2003000689A patent/JP2003233508A/ja active Pending
- 2003-01-06 CN CNA038000040A patent/CN1549964A/zh active Pending
- 2003-01-06 WO PCT/US2003/000396 patent/WO2003058431A1/en active Application Filing
- 2003-01-06 CN CN200910204637.1A patent/CN101685391B/zh not_active Expired - Fee Related
-
2007
- 2007-02-01 US US11/670,226 patent/US7631309B2/en not_active Expired - Fee Related
-
2010
- 2010-07-13 HK HK10106776.5A patent/HK1140564A1/zh not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0495137A (ja) * | 1990-08-07 | 1992-03-27 | Nec Corp | オペレーティングシステムのコンテキスト切替方式 |
JPH04178739A (ja) * | 1990-11-13 | 1992-06-25 | Nec Corp | マイクロプロセッサ |
JPH0535835A (ja) * | 1991-07-25 | 1993-02-12 | Canon Inc | データ処理装置 |
JPH07271344A (ja) * | 1994-03-29 | 1995-10-20 | Hitachi Ltd | グラフィック表示装置 |
JPH09212371A (ja) * | 1996-02-07 | 1997-08-15 | Nec Corp | レジスタ退避及び復元システム |
JPH11120146A (ja) * | 1997-10-17 | 1999-04-30 | Nec Corp | 並列処理プログラムとコプロセッサとの間の排他制御方法およびその排他制御機能を有する計算システム |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010511227A (ja) * | 2006-11-28 | 2010-04-08 | マイクロソフト コーポレーション | 信頼性の低いアドレス空間への実行コードのコンパイル |
JP2008269198A (ja) * | 2007-04-19 | 2008-11-06 | Ize:Kk | シンクライアント用オペレーティングシステム、シンクライアント装置、サーバ・シンクライアントシステム、及びシンクライアント用オペレーティングシステムの実行方法 |
KR101587201B1 (ko) | 2009-09-03 | 2016-01-20 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | Gpu 워크의 하드웨어 기반 스케쥴링 |
JP2013504127A (ja) * | 2009-09-03 | 2013-02-04 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | Gpuワークのハードウエアベースでのスケジューリング |
KR20120058605A (ko) * | 2009-09-03 | 2012-06-07 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | Gpu 워크의 하드웨어 기반 스케쥴링 |
JP2013546098A (ja) * | 2010-12-13 | 2013-12-26 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | グラフィックス計算プロセススケジューリング |
JP2013546099A (ja) * | 2010-12-13 | 2013-12-26 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ユーザモードからのグラフィックス処理ディスパッチ |
KR101786768B1 (ko) | 2010-12-13 | 2017-10-18 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 그래픽 연산 처리 스케줄링 |
KR101786767B1 (ko) | 2010-12-13 | 2017-10-18 | 어드밴스드 마이크로 디바이시즈, 인코포레이티드 | 유저 모드로부터 그래픽 처리 디스패치 |
JP2017182820A (ja) * | 2010-12-13 | 2017-10-05 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | グラフィックス計算プロセススケジューリング |
JP2014522038A (ja) * | 2011-07-29 | 2014-08-28 | インテル コーポレイション | 中央処理ユニット及び画像処理ユニットの同期機構 |
US9892481B2 (en) | 2011-07-29 | 2018-02-13 | Intel Corporation | CPU/GPU synchronization mechanism |
JP2016173836A (ja) * | 2011-07-29 | 2016-09-29 | インテル コーポレイション | 中央処理ユニット及び画像処理ユニットの同期機構 |
JP2013062690A (ja) * | 2011-09-13 | 2013-04-04 | Fujitsu Ltd | 画像圧縮方法、画像圧縮装置およびシステム |
JP2015502618A (ja) * | 2011-12-14 | 2015-01-22 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | シェーダコアにおけるシェーダリソース割当てのポリシー |
JP2017507405A (ja) * | 2014-02-20 | 2017-03-16 | インテル・コーポレーション | グラフィック処理ユニットのためのワークロードバッチサブミットメカニズム |
KR101855311B1 (ko) * | 2014-02-20 | 2018-05-09 | 인텔 코포레이션 | 그래픽 처리 유닛을 위한 작업 부하 일괄 제출 메커니즘 |
JP2020038626A (ja) * | 2018-08-10 | 2020-03-12 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | 人工知能チップに用いられる命令実行方法及び装置 |
JP7001643B2 (ja) | 2018-08-10 | 2022-01-19 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | 人工知能チップに用いられる命令実行方法及び装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1326165A3 (en) | 2007-12-12 |
US7234144B2 (en) | 2007-06-19 |
CN101685391B (zh) | 2016-04-13 |
CA2415583A1 (en) | 2003-07-04 |
CN1549964A (zh) | 2004-11-24 |
US7631309B2 (en) | 2009-12-08 |
US20030140179A1 (en) | 2003-07-24 |
WO2003058431A1 (en) | 2003-07-17 |
HK1140564A1 (zh) | 2010-10-15 |
EP1326165A2 (en) | 2003-07-09 |
CN101685391A (zh) | 2010-03-31 |
US20070136730A1 (en) | 2007-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2003233508A (ja) | コンピューティングシステム中のコプロセッサの計算リソースを制御するための方法およびコンピューティング装置 | |
JP4374590B2 (ja) | シーングラフのための汎用パラメータ設定 | |
US6078942A (en) | Resource management for multimedia devices in a computer | |
US6954933B2 (en) | Method and apparatus for providing and integrating high-performance message queues in a user interface environment | |
US5917502A (en) | Peer-to-peer parallel processing graphics accelerator | |
US20100289804A1 (en) | System, mechanism, and apparatus for a customizable and extensible distributed rendering api | |
US20110063306A1 (en) | CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE | |
US10719970B2 (en) | Low latency firmware command selection using a directed acyclic graph | |
WO2005078571A2 (en) | A method and graphics subsystem for a computing device | |
JP2006190281A (ja) | グラフィックサブシステムを仮想化するシステムおよび方法 | |
ZA200602390B (en) | System and method for a unified composition engine in a graphics processing system | |
CN109313557B (zh) | 用于优化gpu线程共享本地存储器访问的装置 | |
US9563971B2 (en) | Composition system thread | |
CN108604185B (zh) | 用于将工作负荷有效地提交到高性能图形子系统的方法和装置 | |
WO2009092033A1 (en) | Multi-buffer support for off-screen surfaces in a graphics processing system | |
US10558496B2 (en) | Techniques for accessing a graphical processing unit memory by an application | |
JP2020113252A (ja) | 分散されたグラフィックス・デバイスにおけるワークロード・スケジューリング及び分散 | |
JP2014135013A (ja) | 画像転送方法、サーバ機器及びプログラム | |
CN114741081B (zh) | 一种基于异构缓存访问的跨运行环境显示输出共享方法 | |
US20050046634A1 (en) | Virtualization of graphics resources | |
WO2023044877A1 (zh) | 一种渲染任务处理方法、装置、电子设备及存储介质 | |
US11403223B2 (en) | De-prioritization supporting frame buffer caching | |
CN108776949B (zh) | 用于图形处理环境中的存储器管理的设备和方法 | |
AU2014204556B2 (en) | Parallel runtime execution on multiple processors | |
Hui et al. | X Server Multi-rendering for OpenGL and PEX |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060105 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060105 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080516 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080818 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080821 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080916 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081205 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090305 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090424 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090722 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090925 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100125 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20100125 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100125 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20100216 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20100702 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110428 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110509 |