JP4979880B2 - グラフィックス処理ユニットのマルチスレッド式カーネル - Google Patents
グラフィックス処理ユニットのマルチスレッド式カーネル Download PDFInfo
- Publication number
- JP4979880B2 JP4979880B2 JP2004042172A JP2004042172A JP4979880B2 JP 4979880 B2 JP4979880 B2 JP 4979880B2 JP 2004042172 A JP2004042172 A JP 2004042172A JP 2004042172 A JP2004042172 A JP 2004042172A JP 4979880 B2 JP4979880 B2 JP 4979880B2
- Authority
- JP
- Japan
- Prior art keywords
- coprocessor
- memory
- buffer
- context
- dma
- 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)、Inter−Integrated Circuit(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 (22)
- コプロセッサによる処理のためにタスクをスケジューリングする方法であって、
コンピュータのプロセッサにおいて、
コプロセッサによる処理のための第1アプリケーションに関するタスクを、前記第1アプリケーションのコンテキストにおいて割り当てられたユーザモードのコマンドバッファに集めるステップと、
前記タスクをスケジューラに渡すステップであって、前記タスクは、1つまたは複数の他のアプリケーションに関するタスクを含むことができるステップと、
前記スケジューラにより前記タスクの処理の順序を判定するステップであって、前記順序は、前記タスクに関する第1アプリケーションと追加のタスクに関する1つまたは複数の他のアプリケーションとの間の任意の相対優先順位、ならびに前記第1アプリケーションおよび1つまたは複数の他のアプリケーションが資格を与えられる処理時間の対応する量を考慮に入れるステップと、
カーネルモードドライバにおいて、前記ユーザモードのコマンドバッファの内容に基づいて、ダイナミックメモリアクセス(DMA)バッファを生成するステップと、
前記コプロセッサによる処理を必要とする複数のタスクを、カーネルページング可能メモリから割り当てられた前記DMAバッファに格納することによって、処理のためにタスクを準備するステップであって、前記タスクの準備は、前記スケジューラによって決定される前記順序で行われ、前記スケジューラは前記カーネルモードドライバを呼び出して、前記DMAバッファ内のタスクを前記コプロセッサにサブミットする前に、前記DMAバッファに必要なメモリリソースを確保するステップと、
前記準備に従って準備されたタスクを処理のために前記コプロセッサにサブミットするステップと
を備えることを特徴とする方法。 - 前記コプロセッサは、グラフィックス処理ユニット(GPU)を含むことを特徴とする請求項1に記載の方法。
- 前記第1アプリケーションが前記コプロセッサによる処理を必要とする1つまたは複数のタスクを有するときに、アプリケーションプログラムインターフェース(API)を呼び出すステップをさらに備えることを特徴とする請求項1に記載の方法。
- ユーザモードドライバを呼び出すステップをさらに備え、前記ユーザモードドライバの機能は、前記1つまたは複数のタスクに関連するレンダリングコマンドを前記ユーザモードのコマンドバッファに置くことを含むことを特徴とする請求項3に記載の方法。
- 前記レンダリングコマンドを前記APIに返すステップと、これをコプロセッサカーネルにサブミットするステップとをさらに備えることを特徴とする請求項4に記載の方法。
- 前記カーネルモードドライバによってメモリリソースのリストを生成するステップをさらに備え、前記リストによって表される前記メモリリソースは、前記DMAバッファによって表される1つまたは複数のタスクを処理するために前記コプロセッサによって必要とされることを特徴とする請求項1に記載の方法。
- 前記メモリリソースのリスト上のメモリリソースを、前記コプロセッサによりアクセス可能なメモリ位置内の正しいメモリアドレスに移動するために、ページングバッファを構築するステップをさらに備えることを特徴とする請求項6に記載の方法。
- 前記準備するステップは、前記タスクを処理するために前記コプロセッサにより必要なメモリリソースをページングするために前記コプロセッサによりアクセス可能なメモリ位置内の位置を判定することができるメモリマネージャプロセスを呼び出す準備スレッドによって達成されることを特徴とする請求項1に記載の方法。
- すべての必要なメモリリソースをページングするのに十分な空きが前記コプロセッサによりアクセス可能なメモリ位置にないと前記メモリマネージャプロセスが判定するときに、DMAバッファを複数の部分に分割し、各々の部分は前記DMAバッファ全体より少ないメモリリソースを必要とするステップをさらに備え、前記DMAバッファは、カーネルページング可能メモリから割り当てられ、かつ前記コプロセッサによる処理を必要とする1つまたは複数のタスクを格納することを特徴とする請求項8に記載の方法。
- 請求項1に記載の方法を実行するプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
- 請求項1に記載の方法を実行する手段を備えることを特徴とするコンピューティングデバイス。
- コプロセッサによりアクセス可能なメモリをさまざまなタスクの間で配分するために前記コプロセッサによりアクセス可能なDMAバッファを管理し、かつ前記タスクに関するコンテキストごとの仮想アドレス空間を提供するために、コプロセッサによる処理のためのタスクをスケジューリングする方法であって、
コンピュータのプロセッサにおいて、
コプロセッサによる処理のための第1アプリケーションに関するタスクを、前記第1アプリケーションのコンテキストにおいて割り当てられるユーザモードのコマンドバッファに集めるステップと、
前記タスクをスケジューラに渡すステップであって、前記タスクは、1つまたは複数の他のアプリケーションに関するタスクを含むことができるステップと、
前記スケジューラにより前記タスクの処理の順序を判定するステップであって、前記順序は、前記タスクに関する第1アプリケーションと追加のタスクに関する1つまたは複数の他のアプリケーションとの間の任意の相対優先順位、ならびに前記第1アプリケーションおよび1つまたは複数の他のアプリケーションが資格を与えられる処理時間の対応する量を考慮に入れるステップと、
前記コプロセッサが前記タスクを処理するために必要なメモリリソースを割り当てることによって、処理のためにタスクを準備するステップであって、前記タスクの準備は、前記スケジューラによって決定される前記順序で行われるステップと、
前記コプロセッサによる処理が必要な複数のタスクをDMAバッファに保管するステップであって、前記DMAバッファは、前記コマンドバッファのコンテキストに基づいてカーネルモードドライバにより生成され、前記DMAバッファは、カーネルページング可能メモリから割り当てられ、前記カーネルモードドライバは、前記DMAバッファ内のタスクを前記コプロセッサにサブミットする前に、前記DMAバッファに必要なメモリリソースを確保するために呼び出されるステップと、
タスクを処理のために前記コプロセッサにサブミットするステップと
を含むことを特徴とする方法。 - 前記コプロセッサは、グラフィックス処理ユニット(GPU)であることを特徴とする請求項12に記載の方法。
- 前記DMAバッファに関連するリソースリストで参照されるメモリリソースを確認するステップをさらに備え、確認するステップは、空いているコプロセッサによりアクセス可能なメモリの範囲を見つけるステップと、その範囲にページテーブルまたは前記DMAバッファが使用するアドレスをマッピングするようにカーネルモードドライバに要求するステップとを伴うことを特徴とする請求項12に記載の方法。
- 前記仮想アドレス空間は、コプロセッサによりアクセス可能なメモリを事前定義されたメモリ量のページに分割するフラットページテーブルの使用を介して仮想化され、各ページは前記コプロセッサによりアクセス可能なメモリ全体より少ないメモリリソースを必要とし、さらに、コプロセッサによりアクセス可能なメモリのアドレスを指定する識別子を含むページテーブルは、前記仮想アドレス空間内に設けられることを特徴とする請求項12に記載の方法。
- 前記仮想アドレス空間は、コプロセッサによりアクセス可能なメモリを事前定義のメモリ量のページに分割するマルチレベルページテーブルの使用を介して仮想化され、各ページは前記コプロセッサによりアクセス可能なメモリ全体より少ないメモリリソースを必要とし、さらに、コプロセッサによりアクセス可能なメモリのアドレスを指定する識別子を含む複数ページテーブルは、前記仮想アドレス空間内に設けられることを特徴とする請求項12に記載の方法。
- コプロセッサによりアクセス可能なメモリの一部は、処理を必要とするタスクに関連するすべての必要なメモリリソースがコプロセッサによりアクセス可能なメモリ内で使用可能であるかどうかを示すのに使用されることを特徴とする請求項12に記載の方法。
- 請求項12に記載の方法を実行するプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
- 請求項12に記載の方法を実行する手段を含むことを特徴とするコンピューティングデバイス。
- ディスプレイサーフェスのベースアドレスを割り当てるステップであって、前記ディスプレイサーフェスは、コプロセッサによりアクセス可能なメモリ内で連続的に割り当てられるステップと、
タスクを前記スケジューラに渡すステップであって、前記タスクの処理は、ディスプレイサーフェスの前記ベースアドレスを再割り当てするステップと
をさらに備えることを特徴とする請求項12に記載の方法。 - 前記タスクの処理は、ディスプレイサーフェスの前記ベースアドレスを再割り当てすることを特徴とする請求項12に記載の方法。
- 前記タスクの処理は、後続のディスプレイ同期期間の発生時にディスプレイサーフェスの前記ベースアドレスを再割り当てすることを特徴とする請求項20に記載の方法。
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,400 | 2003-02-18 | ||
| US60/448,399 | 2003-02-18 | ||
| US47451303P | 2003-05-29 | 2003-05-29 | |
| US60/474,513 | 2003-05-29 | ||
| US10/763,777 | 2004-01-22 | ||
| US10/763,777 US7673304B2 (en) | 2003-02-18 | 2004-01-22 | Multithreaded kernel for graphics processing unit |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010186585A Division JP5335743B2 (ja) | 2003-02-18 | 2010-08-23 | タスクのスケジューリングを支援する装置 |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2004272894A JP2004272894A (ja) | 2004-09-30 |
| JP2004272894A5 JP2004272894A5 (ja) | 2007-04-05 |
| JP4979880B2 true JP4979880B2 (ja) | 2012-07-18 |
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 After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010186585A Expired - Fee Related JP5335743B2 (ja) | 2003-02-18 | 2010-08-23 | タスクのスケジューリングを支援する装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (4) | US7673304B2 (ja) |
| EP (2) | EP2560097A3 (ja) |
| JP (2) | JP4979880B2 (ja) |
| CN (2) | CN1538296B (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2015130282A1 (en) * | 2014-02-27 | 2015-09-03 | Hewlett-Packard Development Company, L. P. | Communication between integrated graphics processing units |
Families Citing this family (184)
| 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 |
| 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 |
| WO2006022202A1 (ja) * | 2004-08-27 | 2006-03-02 | Matsushita Electric Industrial Co., Ltd. | 情報処理装置、例外制御回路 |
| 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 |
| US7545381B2 (en) * | 2005-11-10 | 2009-06-09 | Via Technologies, Inc. | Interruptible GPU and method for context saving and restoring |
| 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 | 通信端末、通信方法および通信プログラム |
| US8477143B2 (en) | 2008-03-04 | 2013-07-02 | Apple Inc. | Buffers for display acceleration |
| 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 |
| 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 |
| US8627036B2 (en) | 2011-09-12 | 2014-01-07 | Microsoft Corporation | Memory management techniques |
| CN103842978A (zh) * | 2011-09-12 | 2014-06-04 | 英特尔公司 | 在相同屏幕上的多个同时显示 |
| 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 |
| CN108681519B (zh) * | 2012-03-30 | 2022-04-08 | 英特尔公司 | 用于从多线程发送请求至加速器的机制 |
| CN104221005B (zh) * | 2012-03-30 | 2018-04-27 | 英特尔公司 | 用于从多线程发送请求至加速器的机制 |
| US20130307860A1 (en) * | 2012-03-30 | 2013-11-21 | Mostafa Hagog | Preempting Fixed Function Media Devices |
| CN104204990B (zh) | 2012-03-30 | 2018-04-10 | 英特尔公司 | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 |
| WO2013177310A2 (en) * | 2012-05-22 | 2013-11-28 | Xockets IP, LLC | Offloading of computation for rack level servers and corresponding methods and systems |
| 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 |
| 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 |
| US9286118B2 (en) | 2012-06-15 | 2016-03-15 | Freescale Semiconductor, Inc. | System and method for improved job processing to reduce contention for shared resources |
| 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 |
| 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 | 上海交通大学 | 基于应用效果即时反馈的显卡虚拟化下的资源调度系统 |
| CN109032791B (zh) * | 2012-08-22 | 2022-10-21 | 汞王国资产有限公司 | 多核架构中的资源分配 |
| 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 | 中国科学院计算技术研究所 | 一种物联网计算任务调度系统及其方法 |
| 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 |
| US10423424B2 (en) * | 2012-09-28 | 2019-09-24 | Nvidia Corporation | Replicated stateless copy engine |
| US11013993B2 (en) | 2012-09-28 | 2021-05-25 | Sony Interactive Entertainment Inc. | Pre-loading translated code in cloud based emulated applications |
| 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 |
| US20140201409A1 (en) * | 2013-01-17 | 2014-07-17 | Xockets IP, LLC | Offload processor modules for connection to system memory, and corresponding methods and systems |
| 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 |
| CN105683914B (zh) * | 2013-11-22 | 2019-09-24 | 英特尔公司 | 改进图形处理单元上的链式任务的性能的方法和装置 |
| US20160328272A1 (en) * | 2014-01-06 | 2016-11-10 | Jonson Controls Technology Company | Vehicle with multiple user interface operating domains |
| KR102114245B1 (ko) | 2014-04-10 | 2020-06-05 | 삼성전자 주식회사 | 그래픽스 상태 관리 장치 및 방법 |
| 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 |
| 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 |
| US9928564B2 (en) * | 2014-06-26 | 2018-03-27 | Intel Corporation | Efficient hardware mechanism to ensure shared resource data coherency across draw calls |
| JP6437579B2 (ja) * | 2014-06-26 | 2018-12-12 | インテル コーポレイション | 仮想化環境におけるインテリジェントgpuスケジューリング |
| 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 |
| US10061714B2 (en) | 2016-03-18 | 2018-08-28 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors |
| US10402425B2 (en) | 2016-03-18 | 2019-09-03 | Oracle International Corporation | Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors |
| US10061832B2 (en) | 2016-11-28 | 2018-08-28 | Oracle International Corporation | Database tuple-encoding-aware data partitioning in a direct memory access engine |
| 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 |
| US10459859B2 (en) | 2016-11-28 | 2019-10-29 | Oracle International Corporation | Multicast copy ring for database direct memory access filtering engine |
| US10176114B2 (en) | 2016-11-28 | 2019-01-08 | Oracle International Corporation | Row identification number generation in database direct memory access 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的实现方法、装置及系统 |
| AT519669B1 (de) | 2017-06-07 | 2018-09-15 | Voestalpine Schienen Gmbh | Gleisteil und Verfahren zur Herstellung eines Gleisteils |
| KR102824345B1 (ko) * | 2017-08-08 | 2025-06-25 | 삼성전자주식회사 | 네트워크에서 메모리 요구 사항을 결정하는 방법 및 장치 |
| US10423478B2 (en) * | 2017-08-29 | 2019-09-24 | Red Hat, Inc. | Security enhanced out of process user space handling of hardware events |
| US20190068466A1 (en) * | 2017-08-30 | 2019-02-28 | Intel Corporation | Technologies for auto-discovery of fault domains |
| US20190044809A1 (en) | 2017-08-30 | 2019-02-07 | Intel Corporation | Technologies for managing a flexible host interface of a network interface controller |
| 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 |
| KR102700419B1 (ko) * | 2018-09-04 | 2024-08-30 | 삼성전자주식회사 | 전자장치 및 그 제어방법 |
| 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 | 苏州浪潮智能科技有限公司 | 一种协处理器、一种电子设备及一种数据处理方法 |
| TWI709308B (zh) * | 2019-07-22 | 2020-11-01 | 思銳科技股份有限公司 | 網路模擬器平台上之時間控管方法及系統 |
| DE102020117505B4 (de) * | 2019-07-27 | 2025-06-18 | Analog Devices International Unlimited Company | Autonomes system zum einreihen von jobs in eine warteschlange für hardware-beschleuniger |
| US11397612B2 (en) | 2019-07-27 | 2022-07-26 | Analog Devices International Unlimited Company | Autonomous job queueing system for hardware accelerators |
| 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 | 百富计算机技术(深圳)有限公司 | 提升任务切换效率的方法及终端设备 |
| US11586465B2 (en) * | 2020-04-16 | 2023-02-21 | Texas Instruments Incorporated | Scalable hardware thread scheduler |
| US11416961B2 (en) | 2020-05-29 | 2022-08-16 | Samsung Electronics Co., Ltd. | Variable entry transitional ring storage for efficiently accessing graphics states |
| US12086899B2 (en) * | 2020-08-07 | 2024-09-10 | Advanced Micro Devices, Inc. | Graphics processing unit with selective two-level binning |
| US11714759B2 (en) * | 2020-08-17 | 2023-08-01 | Apple Inc. | Private memory management using utility thread |
| US11335296B2 (en) | 2020-09-14 | 2022-05-17 | Apple Inc. | Low-latency context switch systems and methods |
| US11947465B2 (en) * | 2020-10-13 | 2024-04-02 | International Business Machines Corporation | Buffer overflow trapping |
| US12266030B2 (en) | 2020-11-13 | 2025-04-01 | Advanced Micro Devices, Inc. | Processing system with selective priority-based two-level binning |
| 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 | 荣耀终端有限公司 | 图像处理的方法、设备、存储介质 |
| CN118715510A (zh) * | 2022-02-23 | 2024-09-27 | 华为技术有限公司 | 使用驱动的内存映射 |
| TWI897789B (zh) * | 2024-11-04 | 2025-09-11 | 慧榮科技股份有限公司 | 快閃記憶體控制器及快閃記憶體控制器的資料讀取方法 |
| CN119722433B (zh) * | 2024-12-06 | 2025-08-29 | 摩尔线程智能科技(北京)股份有限公司 | 一种用于gpu中任务流间同步的系统、方法、电子设备和存储介质 |
Family Cites Families (87)
| 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 |
| 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 |
| 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 |
| 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 |
| DE19754555A1 (de) | 1997-12-09 | 1999-06-24 | Clariant Gmbh | Verfahren zur Herstellung von Ethylen-Mischpolymerisaten und deren Verwendung als Zusatz zu Mineralöl und Mineralöldestillaten |
| US6065071A (en) | 1998-03-26 | 2000-05-16 | Nvidia Corporation | Method and apparatus for trapping unimplemented operations in input/output devices |
| 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 |
| 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 |
| CA2345661A1 (en) * | 1998-10-02 | 2000-04-13 | International Business Machines Corporation | Conversational browser and conversational systems |
| US6252600B1 (en) | 1998-10-02 | 2001-06-26 | International Business Machines Corporation | Computer graphics system with dual FIFO interface |
| 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 |
| US6437788B1 (en) | 1999-07-16 | 2002-08-20 | International Business Machines Corporation | Synchronizing graphics texture management in a computer system using threads |
| US6493837B1 (en) * | 1999-07-16 | 2002-12-10 | Microsoft Corporation | Using log buffers to trace an event in a computer system |
| 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 |
| TW501045B (en) * | 2000-03-03 | 2002-09-01 | Sony Computer Entertainment Inc | Entertainment device and computer system having exchangeability |
| 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 |
| US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
| US7444637B2 (en) | 2003-02-18 | 2008-10-28 | Microsoft Corporation | Systems and methods for scheduling coprocessor resources in a computing system |
| US7421694B2 (en) | 2003-02-18 | 2008-09-02 | Microsoft Corporation | Systems and methods for enhancing performance of a coprocessor |
| US6947051B2 (en) | 2003-02-18 | 2005-09-20 | Microsoft Corporation | Video memory management |
| US20040231000A1 (en) | 2003-02-18 | 2004-11-18 | Gossalia Anuj B. | Video aperture management |
| JP5135147B2 (ja) | 2008-09-29 | 2013-01-30 | 富士フイルム株式会社 | 動画ファイル送信サーバおよびその動作制御方法 |
-
2004
- 2004-01-22 US US10/763,777 patent/US7673304B2/en active Active
- 2004-02-17 EP EP12004595.0A patent/EP2560097A3/en not_active Withdrawn
- 2004-02-17 EP EP20040003537 patent/EP1450257A3/en not_active Withdrawn
- 2004-02-18 CN CN2004100283577A patent/CN1538296B/zh not_active Expired - Fee Related
- 2004-02-18 JP JP2004042172A patent/JP4979880B2/ja not_active Expired - Fee Related
- 2004-02-18 CN CN2010101586125A patent/CN101894044B/zh 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 - Fee Related
- 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
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2015130282A1 (en) * | 2014-02-27 | 2015-09-03 | Hewlett-Packard Development Company, L. P. | Communication between integrated graphics processing units |
| US10062137B2 (en) | 2014-02-27 | 2018-08-28 | Hewlett Packard Enterprise Development Lp | Communication between integrated graphics processing units |
Also Published As
| Publication number | Publication date |
|---|---|
| US20100122259A1 (en) | 2010-05-13 |
| EP1450257A2 (en) | 2004-08-25 |
| CN1538296A (zh) | 2004-10-20 |
| EP1450257A3 (en) | 2007-09-05 |
| US20160259671A1 (en) | 2016-09-08 |
| US20040160446A1 (en) | 2004-08-19 |
| CN1538296B (zh) | 2010-05-26 |
| US9298498B2 (en) | 2016-03-29 |
| JP2010287254A (ja) | 2010-12-24 |
| EP2560097A3 (en) | 2016-02-10 |
| CN101894044B (zh) | 2012-05-09 |
| JP2004272894A (ja) | 2004-09-30 |
| US8671411B2 (en) | 2014-03-11 |
| EP2560097A2 (en) | 2013-02-20 |
| CN101894044A (zh) | 2010-11-24 |
| JP5335743B2 (ja) | 2013-11-06 |
| US20080301687A1 (en) | 2008-12-04 |
| US7673304B2 (en) | 2010-03-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4979880B2 (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) | 管理计算系统中协处理器的计算资源的方法和系统 | |
| US7065630B1 (en) | Dynamically creating or removing a physical-to-virtual address mapping in a memory of a peripheral device | |
| KR101091224B1 (ko) | 이종 처리 유닛을 위한 중앙집중형 디바이스 가상화 계층 | |
| US6947051B2 (en) | Video memory management | |
| KR100988395B1 (ko) | 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체 | |
| US20110161620A1 (en) | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices | |
| US20040064601A1 (en) | Atomic memory migration apparatus and method | |
| US20090217269A1 (en) | System, method and computer program product for providing multiple quiesce state machines | |
| KR20020088063A (ko) | 정보 처리 시스템에서 병렬 처리되는 작업들간의 데이터종속성의 대략적인 결정 | |
| CN100527087C (zh) | 多核计算机系统驱动程序的支持多执行绪指令执行的方法 | |
| US7661115B2 (en) | Method, apparatus and program storage device for preserving locked pages in memory when in user mode | |
| KR101130361B1 (ko) | 코프로세서 내의 연산을 스트림라인하는 방법 | |
| JP2024116638A (ja) | 情報処理装置 | |
| JPH06309183A (ja) | グラフィックス資源共用アクセス方法および装置 | |
| HK1140564B (en) | Methods and systems for managing computational resources of a coprocessor in a computing system | |
| HK1172108A1 (en) | Shared virtual memory |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070215 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070215 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090724 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091026 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100521 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100823 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110520 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110920 |
|
| RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20110921 |
|
| A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110927 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20110921 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111216 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120316 |
|
| 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: 20120410 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120418 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150427 Year of fee payment: 3 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4979880 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| 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 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| LAPS | Cancellation because of no payment of annual fees |