JP5335743B2 - タスクのスケジューリングを支援する装置 - Google Patents
タスクのスケジューリングを支援する装置 Download PDFInfo
- Publication number
- JP5335743B2 JP5335743B2 JP2010186585A JP2010186585A JP5335743B2 JP 5335743 B2 JP5335743 B2 JP 5335743B2 JP 2010186585 A JP2010186585 A JP 2010186585A JP 2010186585 A JP2010186585 A JP 2010186585A JP 5335743 B2 JP5335743 B2 JP 5335743B2
- Authority
- JP
- Japan
- Prior art keywords
- coprocessor
- memory
- context
- buffer
- task
- 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.)
- Expired - Fee Related
Links
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
Description
前に定義した動作(上のステップ1から16を参照されたい)の一部またはすべてを、DMAバッファがハードウェアにサブミットされる前に行うことができる。しかし、これらの動作の一部は、DMAバッファがハードウェアにサブミットされるまで実行が困難である場合がある。たとえば、メモリリソースの位置は、DMAバッファがコプロセッサにサブミットされる直前まで、判定が困難である可能性がある。これは、補助メモリリソースが、コプロセッサで実行されるときに各DMAバッファと共に移動される可能性があるからである。
コマンドバッファが、APIによってコプロセッサカーネルにサブミットされるときに、カーネルモードドライバは、ハードウェア固有のDMAバッファおよびそのDMAバッファを実行するのに必要なメモリリソースのリストを生成する役割を担うことができる。特定のDMAバッファフォーマットが、IHVによって定義される場合があるが、ソフトウェアプロバイダは、自身がカーネルモードドライバのリソースリストのフォーマットを定義する作業を知ることができる。
一般に、DMAバッファによって参照されるメモリリソースは、コプロセッサによる実行のためにDMAバッファがサブミットされる前に、メモリ内に持ち込まれる。参照されるメモリリソースをメモリ内に持ち込むことを、リソースのページングと称する。ページングに、上で説明した準備ワーカースレッドと、カーネルモードドライバなどのドライバの間の対話を含めることができる。準備ワーカースレッドと補助メモリマネージャの間の動きを示す擬似アルゴリズムについて、図6を参照されたい。
2)ページイン:特定のメモリリソースをシステムメモリから補助メモリ内の空き位置に持ち込む;
3)再配置:特定のメモリリソースをある補助メモリ位置から別の補助メモリ位置に移動する。
上で説明したコマンドラインを使用して、スケジューラによってページングバッファを生成して、コマンドを実行することができる。本発明に関連して使用されるページングバッファのさまざまな実施形態は、図7に示されているように実施することができる。
ページングバッファ生成時の前処理;
ページングバッファ内の同期ポイントでのCPU処理;
メモリリソースを移動する「Blit」コマンド;
ページングバッファが完了した後のCPU作業の後処理。
コプロセッサスケジューリングの信頼性を高めるために、コプロセッサによって、DMAバッファ全体より微細な粒度での割込みをサポートすることができる。たとえば、コプロセッサおよびサポートするハードウェアによって、三角形の処理の前または後だけではなく、三角形の処理の中での割込みをサポートすることができる。
上で説明した基本的なスケジューリングモデルの複雑さの一部は、コプロセッサコンテキストが共通のコプロセッサアドレス空間を共有している可能性があるという事実に起因する。このアドレス空間を仮想化することによって、よりスマートなシステムを提供することができる。アドレス空間の仮想化では、補助メモリマネージャによって、メモリを移動することができ、リソースを補助メモリから完全に追い出すことさえできる。これは、リソースに関する実際にコプロセッサから可視のアドレスを、その寿命の間に変更できることを意味する。したがって、ユーザモードで構築されるコマンドバッファは、コマンドバッファが実行のためにスケジューリングされるまでアドレスが未知である可能性があるので、そのアドレスによって割り当てを直接に参照することができない。
2)メモリアクセスに関するコマンドバッファの確認
3)カーネルモードでのメモリリソースリストの構築
4)別々のコマンドバッファおよびDMAバッファの作成
5)割り込まれたDMAバッファのリソースの割込み前の位置への移動
プロセッサコンテキストごとの仮想アドレス空間を提供する際に、特定のコプロセッサコンテキスト内での割り当てによって、そのコンテキストのアドレス空間内の独自のアドレスを得ることができる。このアドレスは、割り当ての寿命の間に変更する必要がない。したがって、コマンドバッファによって、このアドレスを直接に参照することができ、パッチは不要である。コマンドバッファを確認し、DMAバッファにコピーする必要もなくなる。DMAバッファでのメモリ参照は、コプロセッサの仮想アドレス空間内であり、そのアドレス空間が、実際にすべてのコプロセッサコンテキストについてプライベートなので、有効性に関してメモリ参照を確認する必要はなく、したがって、アプリケーションに可視でないDMAバッファ内のコマンドバッファの確認された内容を隠蔽する必要はない。割り当てまたは追い出された割り当てによって占められていないアドレス空間(ハンドルまたは実アドレス)は、ハードウェアによってダミーページにリダイレクトされるか、アクセスフォールトを引き起こすことができる。これによって、コンテキストが、アクセスすると思われないメモリにアクセスできないので、カーネルモードメモリのセキュリティが保たれる。
高度なモデルで、カーネルモードのビデオメモリマネージャ「VidMm」などの補助メモリマネージャによって、コプロセッサコンテキストに関する仮想アドレス空間を提供でき、さまざまなコプロセッサコンテキストの間で、これらがメモリの公平な分け前を得られるように物理メモリを管理することができる。基本モデルの割り当て方式に対するこの改善のさまざまな実施形態を、図9に示す。図9には、当業者に馴染みのある用語を使用して本発明の実施形態を示す。というのは、これが、当技術分野で認識された概念に対応するからである。たとえば、「VidMm」は、ビデオメモリマネージャであり、「サンク(Thunk)インターフェース」は、サンクインターフェースである。しかし、この用語は、本発明をより明瞭に説明するのに使用されるが、本発明を制限する意図の表明と解釈するべきではないことに留意されたい。したがって、「VidMm」は、任意の補助メモリに関するメモリマネージャとすることができ、「サンクインターフェース」は、任意の適当なインターフェースとすることができる。
高度なモデルでのスケジューリングは、基本モデルでのスケジューリングに非常に似ている。DMAバッファがコプロセッサにサブミットされる前にDMAバッファを準備するワーカースレッドが依然としてある。しかし、高度なモデルでワーカースレッドによって達成できる作業は、ページング動作だけに制限される必要がある。
高度なモデルでのページングは、基本モデルのページングと異なる。高度なモデルでは、ページングされる割り当てのアドレスが、既に知られており、メモリマネージャは、単に、それを有効にする必要がある。リソースリスト内の割り当てを有効にするために、メモリマネージャは、空いている物理補助メモリの範囲を見つけ、ドライバに、ページテーブルまたはハンドルをその範囲にマッピングするように要求する必要がある。必要であれば、物理メモリの範囲が連続するページのセットになることを要求することができる。
当技術分野で既知または将来に開発される、仮想アドレス空間の提供に関する技法のいずれかを、本発明と共に使用することができる。そのようなアドレス空間を使用できる方法を示すために、共通の仮想アドレス空間技法を使用する2つの例を、本明細書で示す。コプロセッサの仮想アドレス空間を作成する複数の方法があり、当業者が本明細書の例から外挿できることを理解されたい。これに関して、可変長フラットページテーブルおよびマルチレベルページテーブルを使用する仮想アドレス空間を、本明細書で説明する。
1)ページテーブル自体を、物理アドレスを介して参照することができる。
2)陰極線管(CRT)を、連続するメモリ範囲について物理アドレスにプログラムすることができる。
3)仮想印刷エンジン(VPE)によって、物理アドレスに直接にDMAを実行することができる。
4)オーバーレイは、物理アドレスから直接に読み取ることができる。
5)コプロセッサコンテキストを、物理アドレスを介して参照することができる。
6)プライマリリングバッファを、物理アドレスを介して参照することができる。
コプロセッサコンテキストごとの仮想アドレス空間の追加によって、高度なスケジューリングモデルが、適度に良好に動作し、一般に、特にメモリ圧迫がほとんどまたはまったくないときに、大きいCPUオーバーヘッドを必要としない。ほとんどの場合に、DMAバッファをスケジューラにサブミットできるときに、そのバッファによって参照されるリソースが、既にメモリ内に存在し、したがって、DMAバッファは、ページングスレッドによるページングをまったく必要としない。しかし、スケジューリングに関して、タイムキーピング(time keeping)の精度を高めることによって、モデルをさらに改善することができる。
1)無効なリングバッファまたはDMAバッファを参照しているコンテキストへのコンテキスト切り替えが発生する。
2)プリミティブが描かれようとしており、必要なメモリリソースの一部が存在しない(たとえば、頂点シェーダコード、頂点バッファ、テクスチャ)。
2)コプロセッサが、無効なメモリアクセスによって引き起こされるページフォールトを生成する
3)スケジューラが、異なるコンテキストへの切り替えを要求する
4)コプロセッサが、DMAストリーム内の無効なコマンドに続いて無効動作割込みを生成する
前に提示したデマンドフォールトモデルは、複数のイベントをシグナリングするために割込みを激しく使用する可能性がある。ページフォールトなど、これらのイベントの一部は、メモリ圧迫の下で非常に頻繁に発生する可能性がある。割込みが発生する時と、コプロセッサがCPUによって新しいタスクを与えられる時の間に、コプロセッサが長時間停止状態を生じる可能性がある。割込み待ち時間を隠蔽し、コプロセッサを動作状態に保つために、実行リストという概念が導入された。
2)現在のコンテキストが、ページフォールトを生成した。
3)現在のコンテキストが、一般保護フォールト(コプロセッサによってサポートされる場合に)を生成した。
4)コプロセッサが、新しい実行リストに切り替えることを要求された。
コプロセッサが、現在、実行リストA(1−3−5−2)を実行している。
コンテキスト4に関するコマンドがサブミットされるが、コンテキスト4は、アイドルであり、コンテキスト1より高い優先順位である。実行リストB(4−1−3−2)が生成され、スケジューラが、実行リストBをコプロセッサにサブミットする。
コンテキスト#1は、コプロセッサが、実行リストBからのコンテキスト#4に遷移するまで実行される。
コプロセッサが、遷移をシグナリングする割込みを生成する。
コプロセッサが、コンテキスト#4から#1に遷移し、その後、CPUが割り込まれる前に#3に遷移する。
CPUが、割り込まれ、コンテキスト切り替えハンドラが呼び出される。
ドライバが、現在のコプロセッサコンテキストをサンプリングするが、これは#3である。
コプロセッサが、現在、実行リストA(1−3−5−2)を実行している。
コンテキスト4に関するコマンドがサブミットされるが、コンテキスト4は、アイドルであり、コンテキスト1より高い優先順位である。スケジューラが、実行リストBをコプロセッサにサブミットする。
スケジューラが、実行リストBを構築するのにビジーである間に、コプロセッサがコンテキスト#3に遷移する。
コプロセッサが、コンテキスト#3への遷移をシグナリングする割込みを生成する。
CPUが、割り込まれ、コンテキスト切り替えハンドラが呼び出される。
ドライバが現在のコプロセッサコンテキストをサンプリングするが、これは#3である。
2)各コンテキスト切り替え(コンテキストXからXへのにせのコンテキスト切り替えを含む)に割込みを生成する能力。
3)VidMmが任意の時に現在実行されているコプロセッサコンテキストを照会する方法。
4)割込みの前に、進行中のコプロセッサコンテキストをメモリに保存すること。
5)スケジューラがコンテキスト切り替えの理由を判定できるようにするためにCPUによってコンテキストが可読になる方法でのコプロセッサコンテキストの保存。
2)コンテキスト#1のタイムカンタムが満了し、スケジューラが、新しい実行リストB(2−3−4−5−1)を送る。
3)CPUでカンタム満了を処理している間に、コプロセッサが、コンテキスト#1が空になるのでコンテキスト#1について完了し、したがってコンテキスト#2に遷移する。コプロセッサは、このイベントについてコンテキスト切り替え割込みを生成した。
4)コプロセッサが、新しい実行リストに関する通知をCPUから受け取り、したがって、それに遷移した。コプロセッサが、このイベントに関するコンテキスト切り替え割込みを生成した。
5)新しい実行リストのコンテキスト#2のレンダリングコマンドを処理している間に、コプロセッサが、ページフォールトに出会い、したがって、コンテキスト#3に遷移した。コプロセッサが、このイベントに関するコンテキスト切り替え割込みを生成した。
6)コンテキスト#3が、ページフォールトを発生し、したがって、コプロセッサが、コンテキスト#4に切り替えた。コプロセッサが、このイベントに関するコンテキスト切り替え割込みを生成した。
7)CPUが、最終的にコンテキスト切り替えについて割り込まれる。最初の割込みが送出されて以来、4つのコンテキスト切り替えが実際に発生した。
高度なスケジューリングモデルでのメモリ保護の導入に伴って、コプロセッサに送られるDMAバッファが、主として、実行中のアプリケーションのプロセス内部のユーザモードドライバによって構築される可能性がある。これらのDMAバッファは、アプリケーションのプロセス内でマッピングされる可能性があり、ユーザモードドライバは、これらに直接に書き込むことができるが、カーネルドライバは、これを確認することができない。DMAバッファは、誤ってその仮想アドレスにアクセスするアプリケーションによって、または悪意のあるアプリケーションによって故意に、書き込まれる可能性がある。ドライバモデルがセキュアであることを可能にするために、すなわち、アプリケーションが、するべきではないリソースにアクセスできなくするために、ユーザモードで構築されるDMAバッファを、行うことが許可されるものに関して制限することができる。具体的に言うと、組み込まれるDMAバッファは、下記の例示的な方法で制限された機能性を有することができる。
2)現在のディスプレイ(たとえば、CRT、随意アクセス制御(DAC)、Technical Document Management System(TDMS)、Television−Out Port(TV−OUT)、Internet2(I2C)バス)に影響する命令を含めることを許可されることができない。
3)アダプタ全般(たとえば位相ロックループ(PLL))に影響する命令を含めることができない。
4)限られた電源管理および/または構成スペースを有することができる。
5)コンテキスト切り替えを防ぐ命令を含めることを許可されることができない。
2)DACのルックアップテーブルの更新(DAC LUTのプログラミングが、特権的機能性である必要が絶対にないことに留意されたい。というのは、どのアプリケーションでも、望むならば、プライマリスクリーンにレンダリングすることができ、ルックアップテーブル(LUT)の再プログラミングによって、そうでなければアクセスできない情報へのアクセスをアプリケーションがユーザに与えられるようにはならないからである。
3)ディスプレイ出力のプログラミング(TDMS、TV−OUT、…)
4)子デバイス/モニタとの通信(I2C、…)
5)クロックのプログラミング(PLL)
6)コプロセッサの電源状態の変更
7)コプロセッサの構成(構成スペース、BIOS、…)
この機能性は、通常は、アプリケーションレンダリングストリームと完全に独立のシステムイベント(たとえば、ブート、解像度変更、pnp検出、電源管理)の後に必要になる。したがって、この機能性は、特定のアプリケーションのコプロセッサコンテキストでキューイングされることを必要としない。この機能性は、特定のシステムイベントが発生しているときに、ユーザモードドライバからの介入を一切伴わずに、カーネルモードドライバ自体によって使用することができる。
1)特権フェンスの挿入
2)フリップ命令の挿入
3)「コンテキスト切り替えなし」領域の挿入
特殊なハードウェアサポートを必要としない特権的DMAバッファをサポートする方法の1つが、ハードウェアに送られる実際のDMAバッファをカーネルモードで構築することを要求することである。このシナリオでは、ユーザモードドライバが、DMAバッファによく似たコマンドバッファを構築し、カーネルモードドライバにサブミットする。カーネルモードドライバは、このコマンドバッファを確認し、カーネルモードでのみ可視のDMAバッファにコピーする。確認中に、カーネルモードドライバは、特権的命令が存在しないことを検証する。これは、基本モデルで要求される確認に似ているが、メモリが仮想化されるので、メモリアクセスに関する確認は不要である。
おそらく、特権的DMAチャネルをサポートする最も簡単なハードウェア手法は、特権的コマンドをコプロセッサコンテキストリングに直接に挿入することである。リング自体は、既に特権的チャネルであり、カーネルモードからのみアクセス可能である。これを、図20の図に示す。
コプロセッサ内で限定DMAバッファ対特権的DMAバッファをサポートする異なる手法を、図21に示す。これを参照して、開始アドレスおよび終了アドレスの両方をDWORDに整列できることに留意されたい。アドレスの未使用ビットは、フラグの指定に再利用することができる。開始アドレスの第1ビットによって、リダイレクトされるDMAバッファが特権的DMAバッファであることを指定することができる。セキュリティを強化するために、特権的DMAバッファによって、補助メモリ内の物理アドレスを参照することができる。限定DMAバッファによって、コプロセッサコンテキスト仮想アドレス空間内の仮想アドレスを参照することができる。
スケジューラおよび補助メモリマネージャが、コプロセッサコンテキストの進行を追跡し、そのコンテキストのDMAストリーム内の命令のフローを制御するために、DMAストリーム内で下記の例示的命令をサポートするようにコプロセッサを構成することができる。
1)フェンス(限定および特権的の両方)
2)トラップ
3)コンテキスト切り替えの許可/禁止
書込フェンスは、前に説明したタイプのフェンスであり、唯一の必要なフェンスタイプである。書込フェンスによって、フェンス命令の前に処理されるすべてのメモリ書込が、グローバルに可視になる(すなわち、それらがキャッシュからフラッシュされ、メモリコントローラから肯定応答が受け取られている)ことが保証される。
読取フェンスは、書込フェンスに似た、より軽いタイプのフェンスである。読取フェンスによって、フェンスの前のレンダリング動作に関するメモリ読取のすべてが終了することが保証されるが、一部の書込が、まだ未解決である可能性がある。読取フェンスがサポートされる場合には、スケジューラは、これを使用して、非レンダターゲット割り当ての寿命を制御する。
トップオブパイプフェンスは、非常に軽量のフェンスである。トップオブパイプフェンスのサポートは、任意選択である。トップオブパイプフェンスによって、DMAバッファ内でフェンス命令の前の最後のバイトが、コプロセッサによって読み取られた(必ずしも処理されていない)ことだけが保証される。コプロセッサは、フェンスが処理された後に(そのDMAバッファンの内容がもはや有効でなくなるので)、DMAバッファのうちでトップオブパイプフェンスに先立つ部分を再読み取りしない場合がある。サポートされる場合に、このタイプのフェンスは、DMAバッファの寿命を制御するのにスケジューラによって使用される。
2)コンテキスト切り替え命令がDMAストリームに存在しない。
3)DMAストリームの命令が使い果たされない。
4)ページフォールトが発生しない(ページレベルフォールトがサポートされる場合)。
全画面アプリケーションが、パイプライン内のバブルなしでシームレスに動作できるようにするために、コプロセッサによって、フリップ(すなわち、ディスプレイのベースアドレスの変更)をキューイングする命令を提供することができる。ディスプレイサーフェスは、一般に、物理モデルから連続的に割り当てられ、仮想アドレスではなく物理アドレスを使用してCRTCによって参照される。したがって、フリップ命令を使用して、CRTCを、表示される新しい物理アドレスにプログラムすることができる。これは、物理アドレスであって仮想アドレスではないので、不良アプリケーションが、潜在的に、補助メモリのうちで別のアプリケーションまたはユーザに属する部分(秘密が含まれる可能性がある)を表示するようにCRTCをプログラムすることができる。このため、フリップ命令を実施して、宛先が確認されてからカーネルモデルドライバによってのみDMAストリームに挿入される特権的命令であることを保証することによって、ほとんどのコンピュータシステムのセキュリティを保護することができる。
前に定義した制御命令を使用して、スケジューラによって、クリティカルセクションおよびミューテクスなどの高水準の同期化オブジェクトを構築することができる。スケジューラは、待機の条件が満たされたならば、CPUによって明示的に再スケジューリングされるまで、選択されたDMAバッファを実行されないように保護することによって、そのような同期化プリミティブを実施することができる。オブジェクトの待機は、フェンスなど、スケジューラによって実施することができる。論理的にフェンスに続くDMAバッファを、スケジューラによってキューイングすることができるが、待機条件が満たされるまで、コプロセッサコンテキストのリングにサブミットすることはできない。オブジェクトを待つようになったならば、シグナリングされるまで、スケジューラによってコプロセッサコンテキストをその特定のオブジェクトのウェイトリストに移動することができる。コプロセッサコンテキストDMAストリームに、割込みコマンドが続くフェンスを挿入することによって、オブジェクトにシグナリングすることができる。そのような割込みを受け取るときに、スケジューラは、どのオブジェクトがシグナリングされているかを識別し、待っているコプロセッサコンテキストをレディキューに戻さなければならないかどうかを判定することができる。コプロセッサコンテキストをレディキューに戻すときに、スケジューラは、リングからしまわれたDMAバッファを挿入する。
セマフォ:指定された数のコプロセッサスレッドが、同時に共有リソースへのアクセス権を有することができる。
スケジューラは、上で説明した同期化機構を複数の目的に使用することができる。割込みによってコプロセッサが停止しないので、CPUは、通知のサブセットだけを見る必要があり、したがって、一部の通知を、一緒に圧搾することができる。DMAバッファ内のすべての通知に正しく応答するために、スケジューラは、挿入されたイベントのヒストリを、これらのイベントを処理するのに必要なすべてのパラメータと共に維持することができる。
現在のコプロセッサは、PCI仕様によって許可される限度に非常に近いところまでPCIアパーチャを公開している。将来の世代のコプロセッサは、アパーチャを介して公開できるものより多くのオンボードの補助メモリを有する。したがって、将来に、すべての補助メモリが同時にPCIアパーチャを介して可視になると仮定することができなくなる。
前に説明したサーフェスレベルフォールトは、ほとんどの場合に良好に働くことができるが、改善できるシナリオがある。たとえば、サーフェスレベルフォールトを使用すると、非常に大きいデータセットを使用するあるアプリケーションが、同時にメモリ内にデータセット全体を置くことができず、したがって正しく機能しない場合がある。高度なモデルで実施できるこれに対する解決策が、ページレベルフォールト機構である。
Claims (18)
- コプロセッサによる処理のためにタスクのスケジューリングを支援する装置であって、
中央処理装置(CPU)と、
コプロセッサと、
前記コプロセッサによる処理のために前記CPUにタスクを生成させる1つまたは複数のアプリケーションであって、前記タスクは、まず、アプリケーション固有メモリ位置に保管される1つまたは複数のアプリケーションと、
前記コプロセッサにおいて前記タスクが処理される順序を判定するために前記CPUによって実行されるスケジューラプロセスと
を備え、前記順序は、第1アプリケーションと1つまたは複数の他のアプリケーションとの間の任意の相対優先順位、ならびに前記第1アプリケーションおよび1つまたは複数の他のアプリケーションが資格を与えられる処理時間の対応する量を考慮に入れ、前記タスクは、前記第1アプリケーションおよび1つまたは複数の他のアプリケーションのいずれかが連続して前記コプロセッサのリソースを占有しないように分割され、
前記コプロセッサはコンピュータ実行可能な命令にしたがって動作することによって前記タスクを処理するものであり、前記コンピュータ実行可能な命令はフェンス命令を含み、前記フェンス命令はデータとアドレスとを含み、前記コプロセッサに前記フェンス命令で指定されるアドレスに前記データを書き込ませ、
前記フェンス命令は、ユーザモードドライバによって作成された第1のDMAバッファに挿入された第1のフェンス命令と、カーネルモードドライバによって作成された第2のDMAバッファに挿入された第2のフェンス命令とを含み、前記第1及び第2のDMAバッファは、前記タスクを前記コプロセッサにサブミットするためのコマンドバッファとして機能することを特徴とする装置。 - 前記コプロセッサは、GPUであることを特徴とする請求項1に記載の装置。
- 前記コプロセッサは、タスク情報をコプロセッサによりアクセス可能なメモリ位置に自動的に保存することによって、タスクの処理中に割込みを支援することを特徴とする請求項1に記載の装置。
- 1つまたは複数のタスクのプライベートアドレス空間、タスクが累積されるプライベートリングバッファ、およびタスクが処理されていないときにハードウェア状態が保存されるコプロセッサによりアクセス可能なメモリのプライベート部分の少なくとも1つをさらに備えることを特徴とする請求項3に記載の装置。
- 前記コプロッサは、前記スケジューラプロセスによって読み取り可能な指定されたシステムメモリ位置に、タスクからタスクへのコプロセッサ切り替えのヒストリに関する情報を保管することができることを特徴とする請求項1に記載の装置。
- 前記コプロセッサは、前記システムメモリ位置にタスクからタスクへのコプロセッサ切り替えの前記ヒストリに関する情報を保管する前に、前記システムメモリ位置のベースアドレスを指定することを特徴とする請求項5に記載の装置。
- 前記コプロセッサは、前記システムメモリ位置にタスクからタスクへのコプロセッサ切り替えの前記ヒストリに関する情報を保管する前に、前記システムメモリ位置のサイズを指定することを特徴とする請求項5に記載の装置。
- 前記コプロセッサは、前記システムメモリ位置のどこに前記コプロセッサが次に書き込まなければならないかを示す書込ポインタを指定することを特徴とする請求項5に記載の装置。
- 前記コプロセッサはコンピュータ実行可能な命令にしたがって動作し、前記コンピュータ実行可能な命令はトラップ命令を含み、前記トラップ命令は、前記コプロセッサにCPU割込みを生成させることを特徴とする請求項1に記載の装置。
- 前記コプロセッサは、コンテキスト切り替えが禁止されるときに前記コプロセッサが現在のコプロセッサタスクから切り替えないようにするコンテキスト切り替え許可/禁止命令を支援することを特徴とする請求項1に記載の装置。
- コプロセッシングスケジューラとして機能するプロセッサと共に使用されるコプロセッサであって、
前記プロセッサが実行するスケジューラプロセスによってそれにサブミットされるタスクを処理するコプロセッサであって、前記スケジューラプロセスは、前記タスクの処理を要求するアプリケーションの優先順位に従って前記コプロセッサにタスクをサブミットし、前記優先順位は、1つまたは複数のアプリケーションが資格を与えられるコプロセッサ時間の量を決定し、前記タスクは、前記タスクに関連する第1アプリケーションおよび1つまたは複数の他のアプリケーションのいずれかが前記コプロセッサのリソースを連続して占有しないように分割されるコプロセッサ
を備え、
前記コプロセッサはコンピュータ実行可能な命令にしたがって動作することによって前記タスクを処理するものであり、前記コンピュータ実行可能な命令はフェンス命令を含み、前記フェンス命令はデータとアドレスとを含み、前記コプロセッサに前記フェンス命令で指定されるアドレスに前記データを書き込ませ、
前記フェンス命令は、ユーザモードドライバによって作成された第1のDMAバッファにデータを挿入された第1のフェンス命令と、カーネルモードドライバによって作成された第2のDMAバッファにデータを挿入された第2のフェンス命令とを含み、前記第1及び第2のDMAバッファは、前記タスクを前記コプロセッサにサブミットするためのコマンドバッファとして機能することを特徴とするコプロセッサ。 - 前記タスクは、まず、アプリケーション固有メモリ位置に保管されることを特徴とする請求項11に記載のコプロセッサ。
- 前記コプロセッサは、コンテキストごとのアドレス空間内にタスクに関する情報を保管し、さらに、タスクに関する前記情報は、1つまたは複数の間に入るタスクを処理した後に前記コプロセッサが前記タスクまたは前記タスクの一部を処理できるようにすることを特徴とする請求項11に記載のコプロセッサ。
- 前記コプロセッサは、切り替えイベントが発生するときに実行リストの後続タスクに切り替えることによって、前記実行リストからのタスクを処理することを特徴とする請求項11に記載のコプロセッサ。
- 切り替えイベントが、前にサブミットされたタスクの処理の完了、タスクの処理でのページフォールト、タスクの処理での一般保護フォールト、および中央処理装置(CPU)による新しい実行リストへの切り替えの要求の少なくとも1つを含むことを特徴とする請求項14に記載のコプロセッサ。
- 前記コプロセッサは、GPUであることを特徴とする請求項11に記載のコプロセッサ。
- 前記コプロセッサは、メモリマネージャによって、コプロセッサ可読メモリ内のメモリリソースにアクセスすることを特徴とする請求項11に記載のコプロセッサ。
- 前記メモリリソースは、仮想メモリアドレスへの参照を含むことを特徴とする請求項17に記載のコプロセッサ。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US44839903P | 2003-02-18 | 2003-02-18 | |
US44840003P | 2003-02-18 | 2003-02-18 | |
US44840203P | 2003-02-18 | 2003-02-18 | |
US60/448,402 | 2003-02-18 | ||
US60/448,399 | 2003-02-18 | ||
US60/448,400 | 2003-02-18 | ||
US47451303P | 2003-05-29 | 2003-05-29 | |
US60/474,513 | 2003-05-29 | ||
US10/763,777 US7673304B2 (en) | 2003-02-18 | 2004-01-22 | Multithreaded kernel for graphics processing unit |
US10/763,777 | 2004-01-22 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004042172A Division JP4979880B2 (ja) | 2003-02-18 | 2004-02-18 | グラフィックス処理ユニットのマルチスレッド式カーネル |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010287254A JP2010287254A (ja) | 2010-12-24 |
JP5335743B2 true JP5335743B2 (ja) | 2013-11-06 |
Family
ID=32738973
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004042172A Expired - Fee Related JP4979880B2 (ja) | 2003-02-18 | 2004-02-18 | グラフィックス処理ユニットのマルチスレッド式カーネル |
JP2010186585A Expired - Fee Related JP5335743B2 (ja) | 2003-02-18 | 2010-08-23 | タスクのスケジューリングを支援する装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004042172A Expired - Fee Related JP4979880B2 (ja) | 2003-02-18 | 2004-02-18 | グラフィックス処理ユニットのマルチスレッド式カーネル |
Country Status (4)
Country | Link |
---|---|
US (4) | US7673304B2 (ja) |
EP (2) | EP1450257A3 (ja) |
JP (2) | JP4979880B2 (ja) |
CN (2) | CN1538296B (ja) |
Families Citing this family (173)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6895520B1 (en) | 2001-03-02 | 2005-05-17 | Advanced Micro Devices, Inc. | Performance and power optimization via block oriented performance measurement and control |
US9849372B2 (en) * | 2012-09-28 | 2017-12-26 | Sony Interactive Entertainment Inc. | Method and apparatus for improving efficiency without increasing latency in emulation of a legacy application title |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US7015913B1 (en) * | 2003-06-27 | 2006-03-21 | Nvidia Corporation | Method and apparatus for multithreaded processing of data in a programmable graphics processor |
US7239322B2 (en) | 2003-09-29 | 2007-07-03 | Ati Technologies Inc | Multi-thread graphic processing system |
US7676809B2 (en) * | 2003-10-09 | 2010-03-09 | International Business Machines Corporation | System, apparatus and method of enhancing priority boosting of scheduled threads |
US7725618B2 (en) * | 2004-07-29 | 2010-05-25 | International Business Machines Corporation | Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment |
JP4564011B2 (ja) * | 2004-08-27 | 2010-10-20 | パナソニック株式会社 | 情報処理装置、例外制御回路 |
US7369135B2 (en) * | 2004-10-29 | 2008-05-06 | Nvidia Corporation | Memory management system having a forward progress bit |
US7409719B2 (en) * | 2004-12-21 | 2008-08-05 | Microsoft Corporation | Computer security management, such as in a virtual machine or hardened operating system |
US7647557B2 (en) * | 2005-06-29 | 2010-01-12 | Intel Corporation | Techniques for shuffling video information |
US20070038939A1 (en) * | 2005-07-11 | 2007-02-15 | Challen Richard F | Display servers and systems and methods of graphical display |
US8817029B2 (en) * | 2005-10-26 | 2014-08-26 | Via Technologies, Inc. | GPU pipeline synchronization and control system and method |
US8087021B1 (en) * | 2005-11-29 | 2011-12-27 | Oracle America, Inc. | Automated activity processing |
US8212832B2 (en) * | 2005-12-08 | 2012-07-03 | Ati Technologies Ulc | Method and apparatus with dynamic graphics surface memory allocation |
US7656409B2 (en) * | 2005-12-23 | 2010-02-02 | Intel Corporation | Graphics processing on a processor core |
US7911474B2 (en) * | 2006-04-03 | 2011-03-22 | Siemens Medical Solutions Usa, Inc. | Memory management system and method for GPU-based volume rendering |
US8081184B1 (en) * | 2006-05-05 | 2011-12-20 | Nvidia Corporation | Pixel shader program thread assembly |
CN101071388B (zh) * | 2006-05-12 | 2010-05-12 | 联想(北京)有限公司 | 一种进程隔离控制系统及方法 |
US7756911B2 (en) * | 2006-06-09 | 2010-07-13 | International Business Machines Corporation | Method and system for executing a task and medium storing a program therefor |
US7454596B2 (en) * | 2006-06-29 | 2008-11-18 | Intel Corporation | Method and apparatus for partitioned pipelined fetching of multiple execution threads |
US20080147915A1 (en) * | 2006-09-29 | 2008-06-19 | Alexander Kleymenov | Management of memory buffers for computer programs |
US8438365B2 (en) * | 2006-10-06 | 2013-05-07 | Calos Fund Limited Liability Company | Efficient data loading in a data-parallel processor |
JP2008102778A (ja) * | 2006-10-19 | 2008-05-01 | Fujitsu Ltd | 情報処理装置、情報処理装置の制御方法及びプログラム |
US8031198B1 (en) * | 2006-10-31 | 2011-10-04 | Nvidia Corporation | Apparatus and method for servicing multiple graphics processing channels |
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 |
US7876328B2 (en) * | 2007-02-08 | 2011-01-25 | Via Technologies, Inc. | Managing multiple contexts in a decentralized graphics processing unit |
US7617386B2 (en) * | 2007-04-17 | 2009-11-10 | Xmos Limited | Scheduling thread upon ready signal set when port transfers data on trigger time activation |
US8233527B2 (en) * | 2007-05-11 | 2012-07-31 | Advanced Micro Devices, Inc. | Software video transcoder with GPU acceleration |
US20080278595A1 (en) * | 2007-05-11 | 2008-11-13 | Advance Micro Devices, Inc. | Video Data Capture and Streaming |
US8861591B2 (en) * | 2007-05-11 | 2014-10-14 | Advanced Micro Devices, Inc. | Software video encoder with GPU acceleration |
US8139070B1 (en) * | 2007-10-03 | 2012-03-20 | Matrox Graphics, Inc. | Systems for and methods of context switching in a graphics processing system |
US20090160867A1 (en) * | 2007-12-19 | 2009-06-25 | Advance Micro Devices, Inc. | Autonomous Context Scheduler For Graphics Processing Units |
JP2009157648A (ja) * | 2007-12-26 | 2009-07-16 | Softbank Mobile Corp | 通信端末、通信方法および通信プログラム |
US8289333B2 (en) | 2008-03-04 | 2012-10-16 | Apple Inc. | Multi-context graphics processing |
US9418171B2 (en) | 2008-03-04 | 2016-08-16 | Apple Inc. | Acceleration of rendering of web-based content |
US8477143B2 (en) | 2008-03-04 | 2013-07-02 | Apple Inc. | Buffers for display acceleration |
US8386664B2 (en) * | 2008-05-22 | 2013-02-26 | International Business Machines Corporation | Reducing runtime coherency checking with global data flow analysis |
GB2462860B (en) * | 2008-08-22 | 2012-05-16 | Advanced Risc Mach Ltd | Apparatus and method for communicating between a central processing unit and a graphics processing unit |
US8312433B2 (en) * | 2008-12-15 | 2012-11-13 | International Business Machines Corporation | Operating system aided code coverage |
US8698823B2 (en) * | 2009-04-08 | 2014-04-15 | Nvidia Corporation | System and method for deadlock-free pipelining |
US8413153B2 (en) * | 2009-06-12 | 2013-04-02 | Freescale Semiconductor Inc. | Methods and systems for sharing common job information |
US7970963B2 (en) * | 2009-06-29 | 2011-06-28 | Oracle America, Inc. | Efficient buffer management in a multi-threaded network interface |
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 |
EP2282264A1 (en) | 2009-07-24 | 2011-02-09 | ProximusDA GmbH | Scheduling and communication in computing systems |
CN101996082B (zh) * | 2009-08-28 | 2014-06-11 | 国际商业机器公司 | 协处理器系统和在本地存储器上加载应用程序的方法 |
US8310492B2 (en) * | 2009-09-03 | 2012-11-13 | Ati Technologies Ulc | Hardware-based scheduling of GPU work |
KR101080845B1 (ko) * | 2009-10-30 | 2011-11-07 | (주)지노게임즈 | 교착 상태의 방지를 위한 데이터 처리 방법 및 시스템 |
US8643655B2 (en) * | 2009-11-12 | 2014-02-04 | Nvidia Corporation | Method and system for communicating with external device through processing unit in graphics system |
CN101706741B (zh) * | 2009-12-11 | 2012-10-24 | 中国人民解放军国防科学技术大学 | 一种基于负载平衡的cpu和gpu两级动态任务划分方法 |
US8860743B2 (en) * | 2009-12-31 | 2014-10-14 | Nvidia Corporation | Sparse texture systems and methods |
US8823724B2 (en) * | 2009-12-31 | 2014-09-02 | Nvidia Corporation | Sparse texture systems and methods |
US8681169B2 (en) * | 2009-12-31 | 2014-03-25 | Nvidia Corporation | Sparse texture systems and methods |
CN101833438A (zh) * | 2010-04-19 | 2010-09-15 | 浙江大学 | 一种基于多重并行的数据通用处理方法 |
DE102010028227A1 (de) * | 2010-04-27 | 2011-10-27 | Robert Bosch Gmbh | Coprozessor mit Ablaufsteuerung |
JP5776688B2 (ja) * | 2010-04-30 | 2015-09-09 | 日本電気株式会社 | 情報処理装置及びタスク切り替え方法 |
US8723877B2 (en) | 2010-05-20 | 2014-05-13 | Apple Inc. | Subbuffer objects |
US9058675B2 (en) | 2010-05-29 | 2015-06-16 | Intel Corporation | Non-volatile storage for graphics hardware |
CN102013191B (zh) * | 2010-09-02 | 2012-10-03 | 东北师范大学 | 一种用于操作系统实验教学的智能教具 |
US8464104B2 (en) | 2010-09-10 | 2013-06-11 | International Business Machines Corporation | Mobility of versioned workload partitions |
US9176795B2 (en) * | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics processing dispatch from user mode |
US20120194526A1 (en) * | 2010-12-15 | 2012-08-02 | Benjamin Thomas Sander | Task Scheduling |
US8797332B2 (en) * | 2010-12-15 | 2014-08-05 | Ati Technologies Ulc | Device discovery and topology reporting in a combined CPU/GPU architecture system |
WO2012098684A1 (ja) | 2011-01-21 | 2012-07-26 | 富士通株式会社 | スケジューリング方法およびスケジューリングシステム |
US20120198464A1 (en) * | 2011-01-31 | 2012-08-02 | Toyota Jidosha Kabushiki Kaisha | Safety controller and safety control method |
US9633407B2 (en) * | 2011-07-29 | 2017-04-25 | Intel Corporation | CPU/GPU synchronization mechanism |
CN103842978A (zh) * | 2011-09-12 | 2014-06-04 | 英特尔公司 | 在相同屏幕上的多个同时显示 |
US8627036B2 (en) * | 2011-09-12 | 2014-01-07 | Microsoft Corporation | Memory management techniques |
US9886312B2 (en) | 2011-09-28 | 2018-02-06 | Microsoft Technology Licensing, Llc | Dynamic provisioning of virtual video memory based on virtual video controller configuration |
US9652282B2 (en) * | 2011-11-08 | 2017-05-16 | Nvidia Corporation | Software-assisted instruction level execution preemption |
US10534606B2 (en) | 2011-12-08 | 2020-01-14 | Oracle International Corporation | Run-length encoding decompression |
US9122522B2 (en) * | 2011-12-14 | 2015-09-01 | Advanced Micro Devices, Inc. | Software mechanisms for managing task scheduling on an accelerated processing device (APD) |
US20130155077A1 (en) * | 2011-12-14 | 2013-06-20 | Advanced Micro Devices, Inc. | Policies for Shader Resource Allocation in a Shader Core |
KR101869939B1 (ko) | 2012-01-05 | 2018-06-21 | 삼성전자주식회사 | 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치 |
US8692832B2 (en) * | 2012-01-23 | 2014-04-08 | Microsoft Corporation | Para-virtualized asymmetric GPU processors |
US9256915B2 (en) * | 2012-01-27 | 2016-02-09 | Qualcomm Incorporated | Graphics processing unit buffer management |
US9384711B2 (en) | 2012-02-15 | 2016-07-05 | Microsoft Technology Licensing, Llc | Speculative render ahead and caching in multiple passes |
US9996394B2 (en) * | 2012-03-01 | 2018-06-12 | Microsoft Technology Licensing, Llc | Scheduling accelerator tasks on accelerators using graphs |
WO2013147828A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Preempting fixed function media devices |
CN104221005B (zh) * | 2012-03-30 | 2018-04-27 | 英特尔公司 | 用于从多线程发送请求至加速器的机制 |
WO2013147885A1 (en) | 2012-03-30 | 2013-10-03 | Intel Corporation | Apparatus and method for accelerating operations in a processor which uses shared virtual memory |
CN108681519B (zh) * | 2012-03-30 | 2022-04-08 | 英特尔公司 | 用于从多线程发送请求至加速器的机制 |
US9495308B2 (en) * | 2012-05-22 | 2016-11-15 | Xockets, Inc. | Offloading of computation for rack level servers and corresponding methods and systems |
US9286122B2 (en) * | 2012-05-31 | 2016-03-15 | Microsoft Technology Licensing, Llc | Display techniques using virtual surface allocation |
US9235925B2 (en) | 2012-05-31 | 2016-01-12 | Microsoft Technology Licensing, Llc | Virtual surface rendering |
US9177533B2 (en) | 2012-05-31 | 2015-11-03 | Microsoft Technology Licensing, Llc | Virtual surface compaction |
US9230517B2 (en) | 2012-05-31 | 2016-01-05 | Microsoft Technology Licensing, Llc | Virtual surface gutters |
US9104478B2 (en) | 2012-06-15 | 2015-08-11 | Freescale Semiconductor, Inc. | System and method for improved job processing of a number of jobs belonging to communication streams within a data processor |
US9286118B2 (en) | 2012-06-15 | 2016-03-15 | Freescale Semiconductor, Inc. | System and method for improved job processing to reduce contention for shared resources |
US10002021B2 (en) | 2012-07-20 | 2018-06-19 | Qualcomm Incorporated | Deferred preemption techniques for scheduling graphics processing unit command streams |
CN102890643B (zh) * | 2012-07-26 | 2015-01-21 | 上海交通大学 | 基于应用效果即时反馈的显卡虚拟化下的资源调度系统 |
US8990828B2 (en) * | 2012-08-22 | 2015-03-24 | Empire Technology Development Llc | Resource allocation in multi-core architectures |
US9058268B1 (en) | 2012-09-20 | 2015-06-16 | Matrox Graphics Inc. | Apparatus, system and method for memory management |
CN103677984B (zh) * | 2012-09-20 | 2016-12-21 | 中国科学院计算技术研究所 | 一种物联网计算任务调度系统及其方法 |
US11013993B2 (en) | 2012-09-28 | 2021-05-25 | Sony Interactive Entertainment Inc. | Pre-loading translated code in cloud based emulated applications |
US10423424B2 (en) * | 2012-09-28 | 2019-09-24 | Nvidia Corporation | Replicated stateless copy engine |
US9633230B2 (en) * | 2012-10-11 | 2017-04-25 | Intel Corporation | Hardware assist for privilege access violation checks |
US9361116B2 (en) * | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
WO2014113055A1 (en) * | 2013-01-17 | 2014-07-24 | Xockets IP, LLC | Offload processor modules for connection to system memory |
US9575634B2 (en) * | 2013-03-04 | 2017-02-21 | Facebook, Inc. | Techniques for asynchronous rendering |
US9632977B2 (en) | 2013-03-13 | 2017-04-25 | Nxp Usa, Inc. | System and method for ordering packet transfers in a data processor |
US9086813B2 (en) * | 2013-03-15 | 2015-07-21 | Qualcomm Incorporated | Method and apparatus to save and restore system memory management unit (MMU) contexts |
US9665409B2 (en) * | 2013-05-29 | 2017-05-30 | Citrix Systems, Inc. | Methods and apparatus facilitating access to storage among multiple computers |
US9741090B2 (en) | 2013-06-03 | 2017-08-22 | Panasonic Intellectual Property Corporation Of America | Graphics display processing device, graphics display processing method, and vehicle equipped with graphics display processing device |
US9307007B2 (en) | 2013-06-14 | 2016-04-05 | Microsoft Technology Licensing, Llc | Content pre-render and pre-fetch techniques |
US9563561B2 (en) | 2013-06-25 | 2017-02-07 | Intel Corporation | Initiation of cache flushes and invalidations on graphics processors |
US9424079B2 (en) | 2013-06-27 | 2016-08-23 | Microsoft Technology Licensing, Llc | Iteration support in a heterogeneous dataflow engine |
US9507961B2 (en) | 2013-07-01 | 2016-11-29 | Qualcomm Incorporated | System and method for providing secure access control to a graphics processing unit |
CN104346298B (zh) * | 2013-08-06 | 2018-12-25 | 北京数码视讯软件技术发展有限公司 | 基于智能卡的数据处理方法、装置及智能卡 |
US11113054B2 (en) | 2013-09-10 | 2021-09-07 | Oracle International Corporation | Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression |
US20150109315A1 (en) * | 2013-10-23 | 2015-04-23 | Nvidia Corporation | System, method, and computer program product for mapping tiles to physical memory locations |
CN103559166A (zh) * | 2013-11-11 | 2014-02-05 | 厦门亿联网络技术股份有限公司 | 一种多核之间的高速数据传输的方法 |
US9547767B2 (en) * | 2013-11-13 | 2017-01-17 | Via Technologies, Inc. | Event-based apparatus and method for securing bios in a trusted computing system during execution |
US9805440B2 (en) * | 2013-11-22 | 2017-10-31 | Intel Corporation | Method and apparatus to improve performance of chained tasks on a graphics processing unit |
US20160328272A1 (en) * | 2014-01-06 | 2016-11-10 | Jonson Controls Technology Company | Vehicle with multiple user interface operating domains |
WO2015130282A1 (en) * | 2014-02-27 | 2015-09-03 | Hewlett-Packard Development Company, L. P. | Communication between integrated graphics processing units |
KR102114245B1 (ko) | 2014-04-10 | 2020-06-05 | 삼성전자 주식회사 | 그래픽스 상태 관리 장치 및 방법 |
US10346941B2 (en) | 2014-05-30 | 2019-07-09 | Apple Inc. | System and method for unified application programming interface and model |
US9740464B2 (en) | 2014-05-30 | 2017-08-22 | Apple Inc. | Unified intermediate representation |
US10430169B2 (en) | 2014-05-30 | 2019-10-01 | Apple Inc. | Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit |
WO2015196409A1 (en) | 2014-06-26 | 2015-12-30 | Intel Corporation | Intelligent gpu scheduling in a virtualization environment |
US9928564B2 (en) * | 2014-06-26 | 2018-03-27 | Intel Corporation | Efficient hardware mechanism to ensure shared resource data coherency across draw calls |
US10521874B2 (en) * | 2014-09-26 | 2019-12-31 | Intel Corporation | Method and apparatus for a highly efficient graphics processing unit (GPU) execution model |
US9564108B2 (en) * | 2014-10-20 | 2017-02-07 | Amlogic Co., Limited | Video frame processing on a mobile operating system |
US9792663B2 (en) | 2014-12-15 | 2017-10-17 | Microsoft Technology Licensing, Llc | User-defined command buffer formats supporting data-parallel translation |
US10068306B2 (en) * | 2014-12-18 | 2018-09-04 | Intel Corporation | Facilitating dynamic pipelining of workload executions on graphics processing units on computing devices |
US9817776B2 (en) * | 2015-01-19 | 2017-11-14 | Microsoft Technology Licensing, Llc | Memory descriptor list caching and pipeline processing |
MA41915A (fr) * | 2015-04-07 | 2018-02-13 | Benjamin Gittins | Unités de requête de transfert de mémoire programmable |
CN106155811B (zh) * | 2015-04-28 | 2020-01-07 | 阿里巴巴集团控股有限公司 | 资源服务装置、资源调度方法和装置 |
US10067954B2 (en) | 2015-07-22 | 2018-09-04 | Oracle International Corporation | Use of dynamic dictionary encoding with an associated hash table to support many-to-many joins and aggregations |
US10169105B2 (en) * | 2015-07-30 | 2019-01-01 | Qualcomm Incorporated | Method for simplified task-based runtime for efficient parallel computing |
US10176548B2 (en) * | 2015-12-18 | 2019-01-08 | Ati Technologies Ulc | Graphics context scheduling based on flip queue management |
US10061832B2 (en) | 2016-11-28 | 2018-08-28 | Oracle International Corporation | Database tuple-encoding-aware data partitioning in a direct memory access engine |
US10402425B2 (en) | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
US10055358B2 (en) | 2016-03-18 | 2018-08-21 | Oracle International Corporation | Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors |
US10599488B2 (en) * | 2016-06-29 | 2020-03-24 | Oracle International Corporation | Multi-purpose events for notification and sequence control in multi-core processor systems |
US10380058B2 (en) | 2016-09-06 | 2019-08-13 | Oracle International Corporation | Processor core to coprocessor interface with FIFO semantics |
US10783102B2 (en) | 2016-10-11 | 2020-09-22 | Oracle International Corporation | Dynamically configurable high performance database-aware hash engine |
US10176114B2 (en) | 2016-11-28 | 2019-01-08 | Oracle International Corporation | Row identification number generation in database direct memory access engine |
US10459859B2 (en) | 2016-11-28 | 2019-10-29 | Oracle International Corporation | Multicast copy ring for database direct memory access filtering engine |
US10725947B2 (en) | 2016-11-29 | 2020-07-28 | Oracle International Corporation | Bit vector gather row count calculation and handling in direct memory access engine |
CN108984264B (zh) * | 2017-06-02 | 2022-11-15 | 阿里巴巴集团控股有限公司 | 虚拟gpu的实现方法、装置及系统 |
US11593644B2 (en) * | 2017-08-08 | 2023-02-28 | Samsung Electronics Co., Ltd. | Method and apparatus for determining memory requirement in a network |
US10423478B2 (en) * | 2017-08-29 | 2019-09-24 | Red Hat, Inc. | Security enhanced out of process user space handling of hardware events |
US10846223B2 (en) * | 2017-10-19 | 2020-11-24 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd | Cache coherency between a device and a processor |
CN109697114B (zh) * | 2017-10-20 | 2023-07-28 | 伊姆西Ip控股有限责任公司 | 用于应用迁移的方法和机器 |
US10437735B2 (en) | 2017-12-13 | 2019-10-08 | Red Hat, Inc. | Process isolation for out of process page fault handling |
US11132145B2 (en) * | 2018-03-14 | 2021-09-28 | Apple Inc. | Techniques for reducing write amplification on solid state storage devices (SSDs) |
CN110389826B (zh) * | 2018-04-20 | 2023-03-31 | 伊姆西Ip控股有限责任公司 | 用于处理计算任务的方法、设备和计算程序产品 |
CN108874468B (zh) * | 2018-06-20 | 2021-03-26 | 深圳市腾讯网络信息技术有限公司 | 应用程序的加载方法、装置、计算机设备及存储介质 |
GB2570743B (en) | 2018-06-29 | 2021-06-23 | Imagination Tech Ltd | Tile assignment to processing cores within a graphics processing unit |
CN109445847B (zh) * | 2018-07-09 | 2021-09-17 | 北京东土科技股份有限公司 | 工业服务器微内核架构实现方法 |
US11138009B2 (en) * | 2018-08-10 | 2021-10-05 | Nvidia Corporation | Robust, efficient multiprocessor-coprocessor interface |
KR20200027204A (ko) * | 2018-09-04 | 2020-03-12 | 삼성전자주식회사 | 전자장치 및 그 제어방법 |
DE102018217581A1 (de) * | 2018-10-15 | 2020-04-16 | Robert Bosch Gmbh | Verfahren zur Steuerung einer Produktionsanlage, Computerprogramm, maschinenlesbares Speichermedium, elektronische Steuereinheit sowie Produktionsanlage |
CN110399215A (zh) * | 2019-06-25 | 2019-11-01 | 苏州浪潮智能科技有限公司 | 一种协处理器、一种电子设备及一种数据处理方法 |
US11397612B2 (en) * | 2019-07-27 | 2022-07-26 | Analog Devices International Unlimited Company | Autonomous job queueing system for hardware accelerators |
DE102020117505A1 (de) * | 2019-07-27 | 2021-01-28 | Analog Devices International Unlimited Company | Autonomes system zum einreihen von jobs in eine warteschlange für hardware -beschleuniger |
US11481255B2 (en) | 2019-09-10 | 2022-10-25 | International Business Machines Corporation | Management of memory pages for a set of non-consecutive work elements in work queue designated by a sliding window for execution on a coherent accelerator |
CN110750304B (zh) * | 2019-09-30 | 2022-04-12 | 百富计算机技术(深圳)有限公司 | 提升任务切换效率的方法及终端设备 |
US11416961B2 (en) | 2020-05-29 | 2022-08-16 | Samsung Electronics Co., Ltd. | Variable entry transitional ring storage for efficiently accessing graphics states |
US20220044350A1 (en) * | 2020-08-07 | 2022-02-10 | Advanced Micro Devices, Inc. | Graphics processing unit with selective two-level binning |
US11335296B2 (en) | 2020-09-14 | 2022-05-17 | Apple Inc. | Low-latency context switch systems and methods |
CN112506676B (zh) * | 2020-12-02 | 2024-04-05 | 深圳市广和通无线股份有限公司 | 进程间的数据传输方法、计算机设备和存储介质 |
CN112579254B (zh) * | 2020-12-08 | 2022-03-29 | 成都海光微电子技术有限公司 | 图形处理器的仿真方法、装置、电子设备和存储介质 |
CN113448698B (zh) * | 2020-12-24 | 2024-04-02 | 北京新氧科技有限公司 | 业务模块相互调用的实现方法、装置、设备及存储介质 |
CN113253664B (zh) * | 2021-07-02 | 2021-10-15 | 峰岹科技(深圳)股份有限公司 | 协处理器、协处理器控制方法、终端及存储介质 |
CN113747060B (zh) * | 2021-08-12 | 2022-10-21 | 荣耀终端有限公司 | 图像处理的方法、设备、存储介质 |
Family Cites Families (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4713748A (en) * | 1985-02-12 | 1987-12-15 | Texas Instruments Incorporated | Microprocessor with block move instruction |
US5113180A (en) * | 1988-04-20 | 1992-05-12 | International Business Machines Corporation | Virtual display adapter |
US4992958A (en) * | 1988-06-27 | 1991-02-12 | Hitachi, Ltd. | Method and apparatus for controlling printer |
US5016161A (en) * | 1989-04-12 | 1991-05-14 | Sun Microsystems, Inc. | Method and apparatus for the flow control of devices |
JPH0312768A (ja) | 1989-06-09 | 1991-01-21 | Hitachi Micro Comput Eng Ltd | I/oコントローラ |
JPH03202941A (ja) * | 1989-12-28 | 1991-09-04 | Toshiba Corp | 情報処理装置 |
US5253340A (en) * | 1990-01-19 | 1993-10-12 | Canon Kabushiki Kaisha | Data processing apparatus having a graphics device with priority scheduling of drawing requests |
JPH0418638A (ja) * | 1990-05-11 | 1992-01-22 | Fujitsu Ltd | 静的メモリ割当て処理方法 |
CA2050658C (en) | 1990-09-14 | 1997-01-28 | John M. Peaslee | Dual hardware channels and hardware context switching in a graphics rendering processor |
US5220653A (en) * | 1990-10-26 | 1993-06-15 | International Business Machines Corporation | Scheduling input/output operations in multitasking systems |
JPH04311233A (ja) * | 1991-04-09 | 1992-11-04 | Nec Corp | アドレス変換装置 |
JPH0797413B2 (ja) | 1991-05-16 | 1995-10-18 | インターナショナル・ビジネス・マシーンズ・コーポレイション | グラフィックス・システムにおけるピック方法および装置 |
US5630128A (en) | 1991-08-09 | 1997-05-13 | International Business Machines Corporation | Controlled scheduling of program threads in a multitasking operating system |
US5437017A (en) * | 1992-10-09 | 1995-07-25 | International Business Machines Corporation | Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system |
JPH07234821A (ja) | 1993-12-27 | 1995-09-05 | Toshiba Corp | ページング装置およびディスプレイコントローラ |
JPH07271344A (ja) * | 1994-03-29 | 1995-10-20 | Hitachi Ltd | グラフィック表示装置 |
JPH08180001A (ja) * | 1994-04-12 | 1996-07-12 | Mitsubishi Electric Corp | 通信方式及び通信方法及びネットワークインタフェース |
US5777629A (en) * | 1995-03-24 | 1998-07-07 | 3Dlabs Inc. Ltd. | Graphics subsystem with smart direct-memory-access operation |
US5794037A (en) * | 1995-05-01 | 1998-08-11 | Intergraph Corporation | Direct access to slave processing by unprotected application using context saving and restoration |
US5748468A (en) * | 1995-05-04 | 1998-05-05 | Microsoft Corporation | Prioritized co-processor resource manager and method |
US5918050A (en) * | 1995-05-05 | 1999-06-29 | Nvidia Corporation | Apparatus accessed at a physical I/O address for address and data translation and for context switching of I/O devices in response to commands from application programs |
US5887190A (en) * | 1995-05-15 | 1999-03-23 | Nvidia Corporation | System for determining from a command storing in a storage circuit an application program which has initiated the command to determine an input/output device address |
US5852443A (en) | 1995-08-04 | 1998-12-22 | Microsoft Corporation | Method and system for memory decomposition in a graphics rendering system |
US5742797A (en) * | 1995-08-11 | 1998-04-21 | International Business Machines Corporation | Dynamic off-screen display memory manager |
US5854637A (en) * | 1995-08-17 | 1998-12-29 | Intel Corporation | Method and apparatus for managing access to a computer system memory shared by a graphics controller and a memory controller |
US5797115A (en) * | 1995-08-24 | 1998-08-18 | Fuller; Billy | Measuring direct and indirect usage of a central processing unit |
US5696927A (en) * | 1995-12-21 | 1997-12-09 | Advanced Micro Devices, Inc. | Memory paging system and method including compressed page mapping hierarchy |
US5864713A (en) * | 1996-02-12 | 1999-01-26 | Hewlett-Packard Company | Method for determining if data should be written at the beginning of a buffer depending on space available after unread data in the buffer |
EP0892972A1 (en) * | 1996-04-12 | 1999-01-27 | Intergraph Corporation | High-speed video frame buffer using single port memory chips where pixel intensity values for display regions are stored at consecutive addresses of memory blocks |
US6049329A (en) | 1996-06-04 | 2000-04-11 | International Business Machines Corporartion | Method of and system for facilitating user input into a small GUI window using a stylus |
US5983332A (en) * | 1996-07-01 | 1999-11-09 | Sun Microsystems, Inc. | Asynchronous transfer mode (ATM) segmentation and reassembly unit virtual address translation unit architecture |
US5826079A (en) * | 1996-07-05 | 1998-10-20 | Ncr Corporation | Method for improving the execution efficiency of frequently communicating processes utilizing affinity process scheduling by identifying and assigning the frequently communicating processes to the same processor |
US5896141A (en) * | 1996-07-26 | 1999-04-20 | Hewlett-Packard Company | System and method for virtual device access in a computer system |
US6061711A (en) * | 1996-08-19 | 2000-05-09 | Samsung Electronics, Inc. | Efficient context saving and restoring in a multi-tasking computing system environment |
US6317134B1 (en) * | 1996-09-13 | 2001-11-13 | Silicon Graphics, Inc. | System software for use in a graphics computer system having a shared system memory and supporting DM Pbuffers and other constructs aliased as DM buffers |
US6070002A (en) * | 1996-09-13 | 2000-05-30 | Silicon Graphics, Inc. | System software for use in a graphics computer system having a shared system memory |
US5761506A (en) * | 1996-09-20 | 1998-06-02 | Bay Networks, Inc. | Method and apparatus for handling cache misses in a computer system |
US5930827A (en) * | 1996-12-02 | 1999-07-27 | Intel Corporation | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner |
JPH10294834A (ja) | 1997-04-18 | 1998-11-04 | Fuji Xerox Co Ltd | 画像形成装置の制御方法 |
US6349320B1 (en) * | 1997-06-03 | 2002-02-19 | Fmr Corp. | Computer executable workflow management and control system |
US6069638A (en) * | 1997-06-25 | 2000-05-30 | Micron Electronics, Inc. | System for accelerated graphics port address remapping interface to main memory |
US6708273B1 (en) * | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
US6704871B1 (en) * | 1997-09-16 | 2004-03-09 | Safenet, Inc. | Cryptographic co-processor |
US6212544B1 (en) | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
US6075546A (en) | 1997-11-10 | 2000-06-13 | Silicon Grahphics, Inc. | Packetized command interface to graphics processor |
US6081854A (en) * | 1998-03-26 | 2000-06-27 | Nvidia Corporation | System for providing fast transfers to input/output device by assuring commands from only one application program reside in FIFO |
US6065071A (en) * | 1998-03-26 | 2000-05-16 | Nvidia Corporation | Method and apparatus for trapping unimplemented operations in input/output devices |
US6023738A (en) * | 1998-03-30 | 2000-02-08 | Nvidia Corporation | Method and apparatus for accelerating the transfer of graphical images |
US6496916B1 (en) * | 1998-04-17 | 2002-12-17 | Agere Systems Inc. | System for flexible memory paging in partitioning memory |
US6092124A (en) * | 1998-04-17 | 2000-07-18 | Nvidia Corporation | Method and apparatus for accelerating the rendering of images |
US6092127A (en) * | 1998-05-15 | 2000-07-18 | Hewlett-Packard Company | Dynamic allocation and reallocation of buffers in links of chained DMA operations by receiving notification of buffer full and maintaining a queue of buffers available |
US6480952B2 (en) * | 1998-05-26 | 2002-11-12 | Advanced Micro Devices, Inc. | Emulation coprocessor |
US6065089A (en) * | 1998-06-25 | 2000-05-16 | Lsi Logic Corporation | Method and apparatus for coalescing I/O interrupts that efficiently balances performance and latency |
US6252600B1 (en) * | 1998-10-02 | 2001-06-26 | International Business Machines Corporation | Computer graphics system with dual FIFO interface |
CA2345661A1 (en) * | 1998-10-02 | 2000-04-13 | International Business Machines Corporation | Conversational browser and conversational systems |
TW511034B (en) | 1998-11-09 | 2002-11-21 | Intel Corp | Scheduling requests in a system |
US6295602B1 (en) * | 1998-12-30 | 2001-09-25 | Spyrus, Inc. | Event-driven serialization of access to shared resources |
JP2000215068A (ja) | 1999-01-21 | 2000-08-04 | Matsushita Electric Ind Co Ltd | マルチタスクスケジュ―リング装置 |
US6496912B1 (en) * | 1999-03-25 | 2002-12-17 | Microsoft Corporation | System, method, and software for memory management with intelligent trimming of pages of working sets |
JP2000285246A (ja) | 1999-03-31 | 2000-10-13 | Toshiba Corp | 情報処理装置 |
US6650333B1 (en) * | 1999-06-09 | 2003-11-18 | 3Dlabs Inc., Ltd. | Multi-pool texture memory management |
US6493837B1 (en) * | 1999-07-16 | 2002-12-10 | Microsoft Corporation | Using log buffers to trace an event in a computer system |
US6437788B1 (en) * | 1999-07-16 | 2002-08-20 | International Business Machines Corporation | Synchronizing graphics texture management in a computer system using threads |
US6137126A (en) * | 1999-08-17 | 2000-10-24 | Advanced Micro Devices, Inc. | Method to reduce gate-to-local interconnect capacitance using a low dielectric constant material for LDD spacer |
US6518973B1 (en) * | 1999-08-31 | 2003-02-11 | Microsoft Corporation | Method, system, and computer program product for efficient buffer level management of memory-buffered graphics data |
US6604156B1 (en) | 1999-09-15 | 2003-08-05 | Koninklijke Philips Electronics N.V. | Message buffer full handling in a CAN device that employs reconfigurable message buffers |
JP2001092657A (ja) | 1999-09-22 | 2001-04-06 | Toshiba Corp | 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体 |
US6446186B1 (en) * | 1999-10-27 | 2002-09-03 | Nvidia Corporation | Method, apparatus and article of manufacture for mapping physical memory in a virtual address system |
US6525739B1 (en) * | 1999-12-02 | 2003-02-25 | Intel Corporation | Method and apparatus to reuse physical memory overlapping a graphics aperture range |
US6600493B1 (en) * | 1999-12-29 | 2003-07-29 | Intel Corporation | Allocating memory based on memory device organization |
US6477612B1 (en) * | 2000-02-08 | 2002-11-05 | Microsoft Corporation | Providing access to physical memory allocated to a process by selectively mapping pages of the physical memory with virtual memory allocated to the process |
US6677951B2 (en) * | 2000-03-03 | 2004-01-13 | Sony Computer Entertainment, Inc. | Entertainment apparatus having compatibility and computer system |
US7397949B2 (en) | 2000-06-21 | 2008-07-08 | Microsoft Corporation | Serial storage of ink and its properties |
US6782432B1 (en) * | 2000-06-30 | 2004-08-24 | Intel Corporation | Automatic state savings in a graphics pipeline |
TW531706B (en) | 2000-07-20 | 2003-05-11 | Ibm | Method and apparatus in a data processing system for dynamic graphics context switching |
US6859208B1 (en) * | 2000-09-29 | 2005-02-22 | Intel Corporation | Shared translation address caching |
EP1195718A2 (en) | 2000-10-04 | 2002-04-10 | TeraRecon, Inc. | Parallel pipelined image rendering system |
US6798421B2 (en) * | 2001-02-28 | 2004-09-28 | 3D Labs, Inc. Ltd. | Same tile method |
US7234144B2 (en) * | 2002-01-04 | 2007-06-19 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
US7448036B2 (en) * | 2002-05-02 | 2008-11-04 | International Business Machines Corporation | System and method for thread scheduling with weak preemption policy |
US7444637B2 (en) * | 2003-02-18 | 2008-10-28 | Microsoft Corporation | Systems and methods for scheduling coprocessor resources in a computing system |
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 |
US20040231000A1 (en) * | 2003-02-18 | 2004-11-18 | Gossalia Anuj B. | Video aperture management |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
-
2004
- 2004-01-22 US US10/763,777 patent/US7673304B2/en active Active
- 2004-02-17 EP EP20040003537 patent/EP1450257A3/en not_active Withdrawn
- 2004-02-17 EP EP12004595.0A patent/EP2560097A3/en not_active Withdrawn
- 2004-02-18 CN CN2004100283577A patent/CN1538296B/zh not_active Expired - Fee Related
- 2004-02-18 CN CN2010101586125A patent/CN101894044B/zh not_active Expired - Fee Related
- 2004-02-18 JP JP2004042172A patent/JP4979880B2/ja not_active Expired - Fee Related
-
2008
- 2008-07-14 US US12/172,910 patent/US9298498B2/en active Active
-
2010
- 2010-01-15 US US12/657,278 patent/US8671411B2/en not_active Expired - Lifetime
- 2010-08-23 JP JP2010186585A patent/JP5335743B2/ja not_active Expired - Fee Related
-
2016
- 2016-03-07 US US15/063,074 patent/US20160259671A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US9298498B2 (en) | 2016-03-29 |
JP4979880B2 (ja) | 2012-07-18 |
US20080301687A1 (en) | 2008-12-04 |
JP2004272894A (ja) | 2004-09-30 |
US20160259671A1 (en) | 2016-09-08 |
US8671411B2 (en) | 2014-03-11 |
CN1538296B (zh) | 2010-05-26 |
US20040160446A1 (en) | 2004-08-19 |
JP2010287254A (ja) | 2010-12-24 |
US20100122259A1 (en) | 2010-05-13 |
EP2560097A2 (en) | 2013-02-20 |
CN1538296A (zh) | 2004-10-20 |
EP2560097A3 (en) | 2016-02-10 |
US7673304B2 (en) | 2010-03-02 |
CN101894044A (zh) | 2010-11-24 |
EP1450257A3 (en) | 2007-09-05 |
EP1450257A2 (en) | 2004-08-25 |
CN101894044B (zh) | 2012-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5335743B2 (ja) | タスクのスケジューリングを支援する装置 | |
JP5091215B2 (ja) | コプロセッサの性能を強化するシステムおよび方法 | |
US8719543B2 (en) | Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices | |
CN101685391B (zh) | 管理计算系统中协处理器的计算资源的方法和系统 | |
JP5170782B2 (ja) | ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ | |
US6804729B2 (en) | 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 | |
US6055650A (en) | Processor configured to detect program phase changes and to adapt thereto | |
US20050168472A1 (en) | Video memory management | |
US20110161620A1 (en) | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices | |
US20040216120A1 (en) | Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor | |
US7661115B2 (en) | Method, apparatus and program storage device for preserving locked pages in memory when in user mode | |
US20090217269A1 (en) | System, method and computer program product for providing multiple quiesce state machines | |
WO2013090594A2 (en) | Infrastructure support for gpu memory paging without operating system integration | |
KR100988395B1 (ko) | 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체 | |
US8458438B2 (en) | System, method and computer program product for providing quiesce filtering for shared memory | |
KR20020088063A (ko) | 정보 처리 시스템에서 병렬 처리되는 작업들간의 데이터종속성의 대략적인 결정 | |
KR101130361B1 (ko) | 코프로세서 내의 연산을 스트림라인하는 방법 | |
US8782675B2 (en) | Method and system of accessing display window memory | |
Groote et al. | Computer Organization | |
JPH06309183A (ja) | グラフィックス資源共用アクセス方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110527 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110825 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110830 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110927 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110930 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111027 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120615 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120918 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20130214 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20130214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130319 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130614 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130702 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130731 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5335743 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |