JP2010020803A - コプロセッサの性能を強化するシステムおよび方法 - Google Patents
コプロセッサの性能を強化するシステムおよび方法 Download PDFInfo
- Publication number
- JP2010020803A JP2010020803A JP2009245934A JP2009245934A JP2010020803A JP 2010020803 A JP2010020803 A JP 2010020803A JP 2009245934 A JP2009245934 A JP 2009245934A JP 2009245934 A JP2009245934 A JP 2009245934A JP 2010020803 A JP2010020803 A JP 2010020803A
- Authority
- JP
- Japan
- Prior art keywords
- coprocessor
- instruction
- context
- memory
- buffer
- 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.)
- Granted
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/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/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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- 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)
- Testing And Monitoring For Control Systems (AREA)
- Retry When Errors Occur (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】コプロセッサ「長時間停止状態」を最小にする技法、およびより高い効率および威力のためにコプロセッサ内の処理の効果的なスケジューリングの技法。実行リストが設けられて、コプロセッサが、CPU介入を待たずにあるタスクから別のタスクに切り替えられるようになる。「サーフェスフォールト」と称する方法によって、コプロセッサが、タスクの途中の場所ではなく、大きいタスクの初めにフォールトを発生できるようになる。DMA制御命令すなわち「フェンス」、「トラップ」、および「コンテキスト切り替え許可/禁止」を処理ストリームに挿入して、コプロセッサに、コプロセッサの効率および威力を強化するタスクを実行させることができる。
【選択図】図2
Description
前に定義した動作(上のステップ1から16を参照されたい)の一部またはすべてを、DMAバッファがハードウェアにサブミットされる前に行うことができる。しかし、これらの動作の一部は、DMAバッファがハードウェアにサブミットされるまで実行が困難である場合がある。たとえば、メモリリソースの位置は、DMAバッファがコプロセッサにサブミットされる直前まで、判定が困難である可能性がある。これは、補助メモリリソースが、コプロセッサで実行されるときに各DMAバッファと共に移動される可能性があるからである。
コマンドバッファが、APIによってコプロセッサカーネルにサブミットされるときに、カーネルモードドライバは、ハードウェア固有のDMAバッファおよびそのDMAバッファを実行するのに必要なメモリリソースのリストを生成する役割を担うことができる。特定のDMAバッファフォーマットが、IHVによって定義される場合があるが、ソフトウェアプロバイダは、自身がカーネルモードドライバのリソースリストのフォーマットを定義する作業を知ることができる。
一般に、DMAバッファによって参照されるメモリリソースは、コプロセッサによる実行のためにDMAバッファがサブミットされる前に、メモリ内に持ち込まれる。参照されるメモリリソースをメモリ内に持ち込むことを、リソースのページングと称する。ページングに、上で説明した準備ワーカースレッドと、カーネルモードドライバなどのドライバの間の対話を含めることができる。準備ワーカースレッドと補助メモリマネージャの間の動きを示す擬似アルゴリズムについて、図6を参照されたい。
1)追出し:別のリソースのための空きを作るために、特定のメモリリソースを現在のセグメントからシステムメモリに移動する;
2)ページイン:特定のメモリリソースをシステムメモリから補助メモリ内の空き位置に持ち込む;
3)再配置:特定のメモリリソースをある補助メモリ位置から別の補助メモリ位置に移動する。
上で説明したコマンドラインを使用して、スケジューラによってページングバッファを生成して、コマンドを実行することができる。本発明に関連して使用されるページングバッファのさまざまな実施形態は、図7に示されているように実施することができる。
ページングバッファ生成時の前処理;
ページングバッファ内の同期ポイントでのCPU処理;
メモリリソースを移動する「Blit」コマンド;
ページングバッファが完了した後のCPU作業の後処理。
コプロセッサスケジューリングの信頼性を高めるために、コプロセッサによって、DMAバッファ全体より微細な粒度での割込みをサポートすることができる。たとえば、コプロセッサおよびサポートするハードウェアによって、三角形の処理の前または後だけではなく、三角形の処理の中での割込みをサポートすることができる。
上で説明した基本的なスケジューリングモデルの複雑さの一部は、コプロセッサコンテキストが共通のコプロセッサアドレス空間を共有している可能性があるという事実に起因する。このアドレス空間を仮想化することによって、よりスマートなシステムを提供することができる。アドレス空間の仮想化では、補助メモリマネージャによって、メモリを移動することができ、リソースを補助メモリから完全に追い出すことさえできる。これは、リソースに関する実際にコプロセッサから可視のアドレスを、その寿命の間に変更できることを意味する。したがって、ユーザモードで構築されるコマンドバッファは、コマンドバッファが実行のためにスケジューリングされるまでアドレスが未知である可能性があるので、そのアドレスによって割り当てを直接に参照することができない。
1)ハンドルを実際のメモリ位置に置換することによるコマンドバッファのパッチ
2)メモリアクセスに関するコマンドバッファの確認
3)カーネルモードでのメモリリソースリストの構築
4)別々のコマンドバッファおよびDMAバッファの作成
5)割り込まれた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)プリミティブが描かれようとしており、必要なメモリリソースの一部が存在しない(たとえば、頂点シェーダコード、頂点バッファ、テクスチャ)。
1)コプロセッサが、現在キューイングされているすべてのコマンドを完了する
2)コプロセッサが、無効なメモリアクセスによって引き起こされるページフォールトを生成する
3)スケジューラが、異なるコンテキストへの切り替えを要求する
4)コプロセッサが、DMAストリーム内の無効なコマンドに続いて無効動作割込みを生成する
前に提示したデマンドフォールトモデルは、複数のイベントをシグナリングするために割込みを激しく使用する可能性がある。ページフォールトなど、これらのイベントの一部は、メモリ圧迫の下で非常に頻繁に発生する可能性がある。割込みが発生する時と、コプロセッサがCPUによって新しいタスクを与えられる時の間に、コプロセッサが長時間停止状態を生じる可能性がある。割込み待ち時間を隠蔽し、コプロセッサを動作状態に保つために、実行リストという概念が導入された。
1)現在のコンテキストが空である、すなわち、行うべきことが残っていない。
2)現在のコンテキストが、ページフォールトを生成した。
3)現在のコンテキストが、一般保護フォールト(コプロセッサによってサポートされる場合に)を生成した。
4)コプロセッサが、新しい実行リストに切り替えることを要求された。
シナリオ#1
コプロセッサが、現在、実行リスト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である。
1)2要素の実行リスト。
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)コンテキスト切り替えを防ぐ命令を含めることを許可されることができない。
1)CRTタイミングのプログラミング。
2)DACのルックアップテーブルの更新(DAC LUTのプログラミングが、特権的機能性である必要が絶対にないことに留意されたい。というのは、どのアプリケーションでも、望むならば、プライマリスクリーンにレンダリングすることができ、ルックアップテーブル(LUT)の再プログラミングによって、そうでなければアクセスできない情報へのアクセスをアプリケーションがユーザに与えられるようにはならないからである。
3)ディスプレイ出力のプログラミング(TDMS、TV−OUT、…)
4)子デバイス/モニタとの通信(I2C、…)
5)クロックのプログラミング(PLL)
6)コプロセッサの電源状態の変更
7)コプロセッサの構成(構成スペース、BIOS、…)
1)特権フェンスの挿入
2)フリップ命令の挿入
3)「コンテキスト切り替えなし」領域の挿入
特殊なハードウェアサポートを必要としない特権的DMAバッファをサポートする方法の1つが、ハードウェアに送られる実際のDMAバッファをカーネルモードで構築することを要求することである。このシナリオでは、ユーザモードドライバが、DMAバッファによく似たコマンドバッファを構築し、カーネルモードドライバにサブミットする。カーネルモードドライバは、このコマンドバッファを確認し、カーネルモードでのみ可視のDMAバッファにコピーする。確認中に、カーネルモードドライバは、特権的命令が存在しないことを検証する。これは、基本モデルで要求される確認に似ているが、メモリが仮想化されるので、メモリアクセスに関する確認は不要である。
おそらく、特権的DMAチャネルをサポートする最も簡単なハードウェア手法は、特権的コマンドをコプロセッサコンテキストリングに直接に挿入することである。リング自体は、既に特権的チャネルであり、カーネルモードからのみアクセス可能である。これを、図20の図に示す。
コプロセッサ内で限定DMAバッファ対特権的DMAバッファをサポートする異なる手法を、図21に示す。これを参照して、開始アドレスおよび終了アドレスの両方をDWORDに整列できることに留意されたい。アドレスの未使用ビットは、フラグの指定に再利用することができる。開始アドレスの第1ビットによって、リダイレクトされるDMAバッファが特権的DMAバッファであることを指定することができる。セキュリティを強化するために、特権的DMAバッファによって、補助メモリ内の物理アドレスを参照することができる。限定DMAバッファによって、コプロセッサコンテキスト仮想アドレス空間内の仮想アドレスを参照することができる。
スケジューラおよび補助メモリマネージャが、コプロセッサコンテキストの進行を追跡し、そのコンテキストのDMAストリーム内の命令のフローを制御するために、DMAストリーム内で下記の例示的命令をサポートするようにコプロセッサを構成することができる。
1)フェンス(限定および特権的の両方)
2)トラップ
3)コンテキスト切り替えの許可/禁止
1.書込フェンス
書込フェンスは、前に説明したタイプのフェンスであり、唯一の必要なフェンスタイプである。書込フェンスによって、フェンス命令の前に処理されるすべてのメモリ書込が、グローバルに可視になる(すなわち、それらがキャッシュからフラッシュされ、メモリコントローラから肯定応答が受け取られている)ことが保証される。
読取フェンスは、書込フェンスに似た、より軽いタイプのフェンスである。読取フェンスによって、フェンスの前のレンダリング動作に関するメモリ読取のすべてが終了することが保証されるが、一部の書込が、まだ未解決である可能性がある。読取フェンスがサポートされる場合には、スケジューラは、これを使用して、非レンダターゲット割り当ての寿命を制御する。
トップオブパイプフェンスは、非常に軽量のフェンスである。トップオブパイプフェンスのサポートは、任意選択である。トップオブパイプフェンスによって、DMAバッファ内でフェンス命令の前の最後のバイトが、コプロセッサによって読み取られた(必ずしも処理されていない)ことだけが保証される。コプロセッサは、フェンスが処理された後に(そのDMAバッファンの内容がもはや有効でなくなるので)、DMAバッファのうちでトップオブパイプフェンスに先立つ部分を再読み取りしない場合がある。サポートされる場合に、このタイプのフェンスは、DMAバッファの寿命を制御するのにスケジューラによって使用される。
1)特権的DMAバッファだけが処理される。
2)コンテキスト切り替え命令がDMAストリームに存在しない。
3)DMAストリームの命令が使い果たされない。
4)ページフォールトが発生しない(ページレベルフォールトがサポートされる場合)。
全画面アプリケーションが、パイプライン内のバブルなしでシームレスに動作できるようにするために、コプロセッサによって、フリップ(すなわち、ディスプレイのベースアドレスの変更)をキューイングする命令を提供することができる。ディスプレイサーフェスは、一般に、物理モデルから連続的に割り当てられ、仮想アドレスではなく物理アドレスを使用してCRTCによって参照される。したがって、フリップ命令を使用して、CRTCを、表示される新しい物理アドレスにプログラムすることができる。これは、物理アドレスであって仮想アドレスではないので、不良アプリケーションが、潜在的に、補助メモリのうちで別のアプリケーションまたはユーザに属する部分(秘密が含まれる可能性がある)を表示するようにCRTCをプログラムすることができる。このため、フリップ命令を実施して、宛先が確認されてからカーネルモデルドライバによってのみDMAストリームに挿入される特権的命令であることを保証することによって、ほとんどのコンピュータシステムのセキュリティを保護することができる。
前に定義した制御命令を使用して、スケジューラによって、クリティカルセクションおよびミューテクスなどの高水準の同期化オブジェクトを構築することができる。スケジューラは、待機の条件が満たされたならば、CPUによって明示的に再スケジューリングされるまで、選択されたDMAバッファを実行されないように保護することによって、そのような同期化プリミティブを実施することができる。オブジェクトの待機は、フェンスなど、スケジューラによって実施することができる。論理的にフェンスに続くDMAバッファを、スケジューラによってキューイングすることができるが、待機条件が満たされるまで、コプロセッサコンテキストのリングにサブミットすることはできない。オブジェクトを待つようになったならば、シグナリングされるまで、スケジューラによってコプロセッサコンテキストをその特定のオブジェクトのウェイトリストに移動することができる。コプロセッサコンテキストDMAストリームに、割込みコマンドが続くフェンスを挿入することによって、オブジェクトにシグナリングすることができる。そのような割込みを受け取るときに、スケジューラは、どのオブジェクトがシグナリングされているかを識別し、待っているコプロセッサコンテキストをレディキューに戻さなければならないかどうかを判定することができる。コプロセッサコンテキストをレディキューに戻すときに、スケジューラは、リングからしまわれたDMAバッファを挿入する。
1)CreateSynchronizationObject:同期化オブジェクトのカーネル追跡構造体を作成する。後続の待機/解放/削除呼出しで使用することができるオブジェクトへのハンドルをユーザモードに返す。
2)DeleteSynchronizationObject:前に作成されたオブジェクトを破棄する。
3)WaitOnSingleObject/WaitOnMultipleObject:現在のコプロセッサコンテキストのDMAストリームに同期化待機イベントを挿入する。待たれているオブジェクトへの参照と共にイベントをスケジューライベントヒストリに挿入する。
4)ReleaseObject/SignalObject:現在のコプロセッサコンテキストのDMAストリームに同期化シグナルイベントを挿入する(フェンス/割込み)。解放されるかシグナリングされるオブジェクトへの参照と共にイベントをスケジューライベントヒストリに挿入する。
1)待機時に:ミューテクスの状態を検査する。ミューテクスが現在とられていない場合には、ミューテクスをとり、コプロセッサスレッドをスケジューラのレディキューに戻す。ミューテクスがすでに取られている場合には、コプロセッサスレッドをそのミューテクスの待機キューに入れる。
2)シグナリング時に:他のコプロセッサスレッドがミューテクスを待っているかどうかを検査する。他のいくつかのスレッドが待っている場合には、リストの最初の待っているスレッドをとり、スケジューラのレディリストに戻す。待っているスレッドがない場合には、ミューテクスをとられていない状態に戻す。
ミューテクス:1時に1つのコプロセッサスレッドだけが、共有リソースへのアクセス権を有することができる
セマフォ:指定された数のコプロセッサスレッドが、同時に共有リソースへのアクセス権を有することができる。
通知イベント:複数のコプロセサスレッドが、別のコプロセッサスレッドからのシグナルを待つことができる。
スケジューラは、上で説明した同期化機構を複数の目的に使用することができる。割込みによってコプロセッサが停止しないので、CPUは、通知のサブセットだけを見る必要があり、したがって、一部の通知を、一緒に圧搾することができる。DMAバッファ内のすべての通知に正しく応答するために、スケジューラは、挿入されたイベントのヒストリを、これらのイベントを処理するのに必要なすべてのパラメータと共に維持することができる。
現在のコプロセッサは、PCI仕様によって許可される限度に非常に近いところまでPCIアパーチャを公開している。将来の世代のコプロセッサは、アパーチャを介して公開できるものより多くのオンボードの補助メモリを有する。したがって、将来に、すべての補助メモリが同時にPCIアパーチャを介して可視になると仮定することができなくなる。
前に説明したサーフェスレベルフォールトは、ほとんどの場合に良好に働くことができるが、改善できるシナリオがある。たとえば、サーフェスレベルフォールトを使用すると、非常に大きいデータセットを使用するあるアプリケーションが、同時にメモリ内にデータセット全体を置くことができず、したがって正しく機能しない場合がある。高度なモデルで実施できるこれに対する解決策が、ページレベルフォールト機構である。
Claims (28)
- コプロセッサでの処理のためにタスクをスケジューリングする方法であって、
コプロセッサによる処理のためのタスクのリストを含む実行リストを生成するステップであって、前記実行リストは、中央処理装置(CPU)によって生成されるステップと、
スケジューラプロセスに前記実行リストを渡すステップであって、前記スケジューラプロセスは、コプロセッサによる処理のために前記実行リストのタスクを準備するステップと、
前記実行リストによって示される順序で前記コプロセッサによって前記タスクを処理するステップであって、前記タスクの1つを処理するときに切り替えイベントが発生する場合に、前記コプロセッサは、前記実行リストの次のタスクに即座に切り替えるステップと
を備えることを特徴とする方法。 - 前記コプロセッサは、グラフィックス処理ユニット(GPU)であることを特徴とする請求項1に記載の方法。
- 切り替えイベントが、前にサブミットされたタスクの処理の完了、タスクの処理でのページフォールト、タスクの処理での一般保護フォールト、および前記CPUによる新しい実行リストへの切り替えの要求の少なくとも1つを含むことを特徴とする請求項1に記載の方法。
- 前記コプロセッサは前記実行リスト内のあるタスクから前記実行リスト内の次のタスクに切り替えるときに割込み信号を用いて前記CPUにシグナリングするステップをさらに含み、前記CPUは、前記割込み信号を受け取るときに前記コプロセッサのための新しい実行リストを構築することを特徴とする請求項1に記載の方法。
- 前記スケジューラプロセスによって第2実行リストを生成するステップをさらに備え、前記スケジューラプロセスは、前記コプロセッサによって処理されるタスクの順序の変更を開始することができることを特徴とする請求項1に記載の方法。
- 第1実行リストの第1タスクが前記第2実行リストに現れることを禁止するステップをさらに備えることを特徴とする請求項5に記載の方法。
- 第1実行リストの第2タスクが、前記第2実行リストの最初のタスクでなければ、前記第2実行リストに現れることを禁止するステップをさらに備えることを特徴とする請求項5に記載の方法。
- 前記スケジューラによって読み取り可能な指定されたシステムメモリ位置に、タスクからタスクへのコプロセッサ切り替えのヒストリに関する情報を保管するステップをさらに備えることを特徴とする請求項1に記載の方法。
- 前記スケジューラによって読み取り可能な前記システムメモリ位置は、単一コプロセッサのみから使用可能なヒストリバッファであることを特徴とする請求項8に記載の方法。
- 前記ヒストリバッファは、前記実行リストを保管するのに必要な情報の量の少なくとも2倍を保管するのに十分なメモリを含むことを特徴とする請求項8に記載の方法。
- 前記コプロセッサが新しい情報を書き込むことができる前記ヒストリバッファ内の位置を示すコプロセッサ書込ポインタを指定するステップをさらに備えることを特徴とする請求項8に記載の方法。
- 請求項1に記載の方法を実行するコンピュータ実行可能命令を備えることを特徴とするコンピュータ可読媒体。
- 請求項1に記載の方法を実行する手段を備えることを特徴とするコンピューティングデバイス。
- コプロセッサで処理されるDMAストリーム内の命令のフローを制御する1組の命令であって、
データおよびアドレスの両方を含むフェンス命令であって、前記フェンス命令がDMAストリームからコプロセッサによって読み取られるときに、前記コプロセッサは前記アドレスに前記フェンス命令に関連する前記データを書き込むように、前記DMAストリームに挿入することができるフェンス命令と、
トラップ命令であって、前記コプロセッサが前記トラップ命令を読み取るときに、前記コプロセッサがCPU割込みを生成するように、DMAバッファ内に挿入することができるトラップ命令と、
コンテキスト切り替え許可/禁止命令であって、前記コンテキスト切り替え許可/禁止命令が前記コプロセッサにコンテキスト切り替えを許可するように指示するときに、前記コプロセッサは現在のコプロセッサコンテキストから切り替えることを許可し、または前記コンテキスト切り替え許可/禁止命令が前記コプロセッサにコンテキスト切り替えを禁止するように指示するときに、前記コプロセッサは現在のコプロセッサコンテキストから切り替えることを許可しないコンテキスト切り替え許可/禁止命令と
を含むことを特徴とする命令。 - 請求項14に記載の命令をサポートするように構成されることを特徴とするグラフィックス処理ユニット(GPU)。
- 前記フェンス命令は、コプロセッサによって前記DMAストリームから読み取られるときに、前記フェンス命令に先立つプリミティブからのあらゆるピクセルが回収され、メモリに正しく書き込まれたことをまず前記コプロセッサに確認させることを特徴とする請求項14に記載の命令。
- 請求項16に記載の命令をサポートするように構成されたグラフィックス処理ユニット(GPU)であって、前記GPUは前記トラップ命令が回収される前に前記命令の最後のピクセルを待っている間に、前記GPUは、前記フェンス命令に続くプリミティブの処理を継続することを特徴とするグラフィックス処理ユニット。
- 前記トラップ命令は、コプロセッサによって前記DMAストリームから読み取られるときに、前記トラップ命令に先立つプリミティブからのあらゆるピクセルが回収され、メモリに正しく書き込まれたことをまず前記コプロセッサに確認させることを特徴とする請求項14に記載の命令。
- 請求項16に記載の命令をサポートするように構成されたグラフィックス処理ユニット(GPU)であって、前記GPUは、前記フェンス命令の前の命令の最後のピクセルが回収されるのを待っている間に、前記トラップ命令に続くプリミティブの処理を継続することを特徴とするグラフィックス処理ユニット。
- 前記コンテキスト切り替え許可/禁止命令が前記コプロセッサにコンテキスト切り替えを許可するように指示するときに、特権的DMAバッファだけが前記コプロセッサによって処理されること、コプロセッサDMAストリーム内にコンテキスト切り替え命令が存在しないこと、コプロセッサDMAストリームが命令を使い果たさないこと、およびページフォルトが発生しないことの1つを確認するのに追加命令が使用されることを特徴とする請求項14に記載の命令。
- コプロセッサと共に使用されるスケジューラ機構であって、前記スケジューラ機構は、
フェンスを含むウェイト命令を生成するステップであって、フェンスは、DMAストリームに挿入されるデータおよびアドレスの両方を含む命令であり、前記アドレスがコプロセッサによって読み取られるときに、前記コプロセッサに、前記フェンスに関連する前記データを指定された位置に書き込ませるステップと、
CPUによってDMAバッファのセクションが再スケジュールされるまで前記DMAバッファのセクションを実行から保護するステップであって、前記CPUは、前記ウェイト命令が処理された後にDMAバッファのセクションを再スケジューリングするステップと
を備える方法を実行することによって高水準同期化オブジェクトを実施することを特徴とするスケジューラ機構。 - 前記方法は、待機条件が満足されるまで、前記フェンスに論理的に続く1つまたは複数のDMAバッファのコプロセッサコンテキストのリングへのサブミットを抑制するステップをさらに備えることを特徴とする請求項21に記載の方法を実行するスケジューラ機構。
- 前記方法は、オブジェクトがシグナリングされるまで、前記オブジェクトの待機リストにコプロセッサコンテキストを移動するステップをさらに備え、オブジェクトのシグナリングは、コプロセッサコンテキストDMAストリーム内のフェンスおよびそれに続く割込みコマンドを含むことを特徴とする請求項21に記載の方法を実行するスケジューラ機構。
- コプロセッサ可読メモリ位置に第1ディスプレイサーフェスに対応するデータを連続的に割当てるステップであって、第1ベースアドレスは、第1ディスプレイサーフェスに対応する前記データの位置を識別するためにディスプレイデバイスによって使用されるステップと、
コプロセッサ可読メモリ位置に第2ディスプレイサーフェスに対応するデータを連続的に割当てるステップと、
前記ディスプレイデバイスは代わりに第2ベースアドレスの位置を識別するように前記第1ベースアドレスを再割り当てするフリップ命令を生成するステップであって、前記第2ベースアドレスは、第2ディスプレイサーフェスに対応する前記データを参照し、前記フリップ命令は、コプロセッサによって生成されるステップと
を備える方法のステップを実行することによってアプリケーションに関するグラフィックスのシームレスディスプレイをサポートすることを特徴とするコプロセッサ。 - 前記方法は、前記フリップ命令を処理するステップをさらに備え、前記フリップ命令は、前記第1ベースアドレスを即座に再割り当てすることを特徴とする請求項24に記載の方法を実行するコプロセッサ。
- 前記方法は、前記フリップ命令を処理するステップをさらに備え、前記フリップ命令は、後続のディスプレイ同期期間の発生時に前記第1ベースアドレスを再割り当てすることを特徴とする請求項24に記載の方法を実行するコプロセッサ。
- 請求項24に記載のステップを実行する命令を備えることを特徴とするコンピュータ可読媒体。
- 前記コプロセッサはGPUであることを特徴とする請求項24に記載の方法を実行するコプロセッサ。
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,400 | 2003-02-18 | ||
US60/448,402 | 2003-02-18 | ||
US60/448,399 | 2003-02-18 | ||
US47451303P | 2003-05-29 | 2003-05-29 | |
US60/474,513 | 2003-05-29 | ||
US10/763,778 US7421694B2 (en) | 2003-02-18 | 2004-01-22 | Systems and methods for enhancing performance of a coprocessor |
US10/763,778 | 2004-01-22 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004042173A Division JP4896376B2 (ja) | 2003-02-18 | 2004-02-18 | コプロセッサの性能を強化するシステムおよび方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010020803A true JP2010020803A (ja) | 2010-01-28 |
JP5091215B2 JP5091215B2 (ja) | 2012-12-05 |
Family
ID=32738974
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004042173A Expired - Fee Related JP4896376B2 (ja) | 2003-02-18 | 2004-02-18 | コプロセッサの性能を強化するシステムおよび方法 |
JP2009245934A Expired - Fee Related JP5091215B2 (ja) | 2003-02-18 | 2009-10-26 | コプロセッサの性能を強化するシステムおよび方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004042173A Expired - Fee Related JP4896376B2 (ja) | 2003-02-18 | 2004-02-18 | コプロセッサの性能を強化するシステムおよび方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7421694B2 (ja) |
EP (2) | EP1450258A3 (ja) |
JP (2) | JP4896376B2 (ja) |
CN (2) | CN1609812B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013546099A (ja) * | 2010-12-13 | 2013-12-26 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ユーザモードからのグラフィックス処理ディスパッチ |
JP2013546098A (ja) * | 2010-12-13 | 2013-12-26 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | グラフィックス計算プロセススケジューリング |
Families Citing this family (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US6947051B2 (en) * | 2003-02-18 | 2005-09-20 | Microsoft Corporation | Video memory management |
US7203811B2 (en) * | 2003-07-31 | 2007-04-10 | International Business Machines Corporation | Non-fenced list DMA command mechanism |
WO2005020111A2 (en) * | 2003-08-21 | 2005-03-03 | Koninklijke Philips Electronics, N.V. | Hardware register access via task tag id |
US7243200B2 (en) * | 2004-07-15 | 2007-07-10 | International Business Machines Corporation | Establishing command order in an out of order DMA command queue |
JP2006079394A (ja) * | 2004-09-10 | 2006-03-23 | Renesas Technology Corp | データ処理装置 |
US7218291B2 (en) * | 2004-09-13 | 2007-05-15 | Nvidia Corporation | Increased scalability in the fragment shading pipeline |
US7786998B2 (en) * | 2004-11-12 | 2010-08-31 | Ati Technologies Ulc | Methods and apparatus for controlling video playback |
US8817029B2 (en) * | 2005-10-26 | 2014-08-26 | Via Technologies, Inc. | GPU pipeline synchronization and control system and method |
US8212832B2 (en) * | 2005-12-08 | 2012-07-03 | Ati Technologies Ulc | Method and apparatus with dynamic graphics surface memory allocation |
US7698498B2 (en) * | 2005-12-29 | 2010-04-13 | Intel Corporation | Memory controller with bank sorting and scheduling |
US7768517B2 (en) * | 2006-02-21 | 2010-08-03 | Nvidia Corporation | Asymmetric multi-GPU processing |
US7899892B2 (en) * | 2006-03-28 | 2011-03-01 | Microsoft Corporation | Management of extensibility servers and applications |
US7873153B2 (en) * | 2006-03-29 | 2011-01-18 | Microsoft Corporation | Priority task list |
US7523228B2 (en) * | 2006-09-18 | 2009-04-21 | International Business Machines Corporation | Method for performing a direct memory access block move in a direct memory access device |
US7620749B2 (en) * | 2007-01-10 | 2009-11-17 | International Business Machines Corporation | Descriptor prefetch mechanism for high latency and out of order DMA device |
US7603490B2 (en) * | 2007-01-10 | 2009-10-13 | International Business Machines Corporation | Barrier and interrupt mechanism for high latency and out of order DMA device |
US7949801B2 (en) | 2007-01-31 | 2011-05-24 | Pitney Bowes Inc. | Main processor initiating command timing signal via DMA to coprocessor in order to synchronize execution of instructions |
US8237723B2 (en) * | 2007-06-07 | 2012-08-07 | Apple Inc. | Deferred deletion and cleanup for graphics resources |
US8139070B1 (en) * | 2007-10-03 | 2012-03-20 | Matrox Graphics, Inc. | Systems for and methods of context switching in a graphics processing system |
US8520571B2 (en) | 2008-03-26 | 2013-08-27 | Qualcomm Incorporated | Reconfigurable wireless modem sub-circuits to implement multiple air interface standards |
US8458380B2 (en) * | 2008-03-26 | 2013-06-04 | Qualcomm Incorporated | Off-line task list architecture utilizing tightly coupled memory system |
US8787433B2 (en) * | 2008-03-28 | 2014-07-22 | Qualcomm Incorporated | Wall clock timer and system for generic modem |
US20090300629A1 (en) * | 2008-06-02 | 2009-12-03 | Mois Navon | Scheduling of Multiple Tasks in a System Including Multiple Computing Elements |
US8390631B2 (en) * | 2008-06-11 | 2013-03-05 | Microsoft Corporation | Synchronizing queued data access between multiple GPU rendering contexts |
US8082426B2 (en) * | 2008-11-06 | 2011-12-20 | Via Technologies, Inc. | Support of a plurality of graphic processing units |
US20100141664A1 (en) * | 2008-12-08 | 2010-06-10 | Rawson Andrew R | Efficient GPU Context Save And Restore For Hosted Graphics |
US7930519B2 (en) * | 2008-12-17 | 2011-04-19 | Advanced Micro Devices, Inc. | Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit |
US8255615B1 (en) * | 2009-01-08 | 2012-08-28 | Marvell International Ltd. | Flexible sequence design architecture for solid state memory controller |
US9213586B2 (en) * | 2009-03-18 | 2015-12-15 | Sas Institute Inc. | Computer-implemented systems for resource level locking without resource level locks |
US8572617B2 (en) * | 2009-07-21 | 2013-10-29 | Sas Institute Inc. | Processor-implemented systems and methods for event handling |
US8310492B2 (en) * | 2009-09-03 | 2012-11-13 | Ati Technologies Ulc | Hardware-based scheduling of GPU work |
US8405666B2 (en) * | 2009-10-08 | 2013-03-26 | Advanced Micro Devices, Inc. | Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine |
WO2011048442A1 (en) * | 2009-10-22 | 2011-04-28 | Freescale Semiconductor, Inc. | Integrated circuits and methods for debugging |
US20110125726A1 (en) * | 2009-11-25 | 2011-05-26 | Microsoft Corporation | Smart algorithm for reading from crawl queue |
EP2565786A4 (en) * | 2010-04-30 | 2017-07-26 | Nec Corporation | Information processing device and task switching method |
US9256465B2 (en) * | 2010-12-13 | 2016-02-09 | Advanced Micro Devices, Inc. | Process device context switching |
US20120194525A1 (en) * | 2010-12-13 | 2012-08-02 | Advanced Micro Devices, Inc. | Managed Task Scheduling on a Graphics Processing Device (APD) |
US20120229481A1 (en) * | 2010-12-13 | 2012-09-13 | Ati Technologies Ulc | Accessibility of graphics processing compute resources |
WO2012082556A2 (en) * | 2010-12-15 | 2012-06-21 | Advanced Micro Devices, Inc. | Computer system interrupt handling |
WO2012087971A2 (en) | 2010-12-20 | 2012-06-28 | Marvell World Trade Ltd. | Descriptor scheduler |
CN102857458B (zh) * | 2011-06-30 | 2018-01-02 | 中兴通讯股份有限公司 | 导频符号确定方法及装置 |
DE102011119004A1 (de) * | 2011-11-19 | 2013-05-23 | Diehl Aerospace Gmbh | Grafikverarbeitungsvorrichtung, Anzeigevorrichtung für ein Flugzeugcockpit sowie Verfahren zur Anzeige von Grafikdaten |
US20130155077A1 (en) * | 2011-12-14 | 2013-06-20 | Advanced Micro Devices, Inc. | Policies for Shader Resource Allocation in a Shader Core |
US9122522B2 (en) * | 2011-12-14 | 2015-09-01 | Advanced Micro Devices, Inc. | Software mechanisms for managing task scheduling on an accelerated processing device (APD) |
EP3654178B1 (en) | 2012-03-30 | 2023-07-12 | Intel Corporation | Mechanism for issuing requests to an accelerator from multiple threads |
CN108681519B (zh) * | 2012-03-30 | 2022-04-08 | 英特尔公司 | 用于从多线程发送请求至加速器的机制 |
EP2831693B1 (en) * | 2012-03-30 | 2018-06-13 | Intel Corporation | Apparatus and method for accelerating operations in a processor which uses shared virtual memory |
US9558351B2 (en) | 2012-05-22 | 2017-01-31 | Xockets, Inc. | Processing structured and unstructured data using offload processors |
US9495308B2 (en) * | 2012-05-22 | 2016-11-15 | Xockets, Inc. | Offloading of computation for rack level servers and corresponding methods and systems |
EP2867777A4 (en) * | 2012-06-29 | 2016-02-10 | Happy Cloud Inc | MANAGEMENT OF WRITING A RECORD TO A DATA STORAGE DEVICE |
US9373182B2 (en) | 2012-08-17 | 2016-06-21 | Intel Corporation | Memory sharing via a unified memory architecture |
US9250954B2 (en) * | 2013-01-17 | 2016-02-02 | Xockets, Inc. | Offload processor modules for connection to system memory, and corresponding methods and systems |
US9165337B2 (en) | 2013-05-31 | 2015-10-20 | Qualcomm Incorporated | Command instruction management |
US9329899B2 (en) | 2013-06-24 | 2016-05-03 | Sap Se | Parallel execution of parsed query based on a concurrency level corresponding to an average number of available worker threads |
US9507961B2 (en) | 2013-07-01 | 2016-11-29 | Qualcomm Incorporated | System and method for providing secure access control to a graphics processing unit |
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 |
US10110518B2 (en) | 2013-12-18 | 2018-10-23 | Mellanox Technologies, Ltd. | Handling transport layer operations received out of order |
US9275429B2 (en) | 2014-02-17 | 2016-03-01 | Qualcomm Incorporated | Device hang detection and recovery |
KR101855311B1 (ko) | 2014-02-20 | 2018-05-09 | 인텔 코포레이션 | 그래픽 처리 유닛을 위한 작업 부하 일괄 제출 메커니즘 |
US9928564B2 (en) * | 2014-06-26 | 2018-03-27 | Intel Corporation | Efficient hardware mechanism to ensure shared resource data coherency across draw calls |
US9773292B2 (en) | 2014-06-26 | 2017-09-26 | Intel Corporation | Graphics workload submissions by unprivileged applications |
US10733199B2 (en) | 2014-11-05 | 2020-08-04 | International Business Machines Corporation | Optimizing data conversion using pattern frequency |
US10068306B2 (en) * | 2014-12-18 | 2018-09-04 | Intel Corporation | Facilitating dynamic pipelining of workload executions on graphics processing units on computing devices |
US9594697B2 (en) * | 2014-12-24 | 2017-03-14 | Intel Corporation | Apparatus and method for asynchronous tile-based rendering control |
US10452450B2 (en) * | 2015-03-20 | 2019-10-22 | International Business Machines Corporation | Optimizing allocation of multi-tasking servers |
CN106547611A (zh) * | 2015-09-16 | 2017-03-29 | 中兴通讯股份有限公司 | 基于业务流的任务调度方法及装置 |
US10176548B2 (en) * | 2015-12-18 | 2019-01-08 | Ati Technologies Ulc | Graphics context scheduling based on flip queue management |
US20170262367A1 (en) * | 2016-03-11 | 2017-09-14 | Qualcomm Incorporated | Multi-rank collision reduction in a hybrid parallel-serial memory system |
US10185657B2 (en) * | 2016-04-13 | 2019-01-22 | Nanjing University | Method and system for optimizing deterministic garbage collection in NAND flash storage systems |
US9971681B2 (en) * | 2016-06-01 | 2018-05-15 | Nanjing University | Lazy real time garbage collection method |
JP6666439B2 (ja) * | 2016-06-06 | 2020-03-13 | オリンパス株式会社 | データ転送装置、画像処理装置、および撮像装置 |
CN107656883A (zh) * | 2016-07-26 | 2018-02-02 | 忆锐公司 | 基于电阻切换式存储器的协处理器和包括其的计算设备 |
US10198784B2 (en) | 2016-07-29 | 2019-02-05 | Microsoft Technology Licensing, Llc | Capturing commands in a multi-engine graphics processing unit |
US11138009B2 (en) * | 2018-08-10 | 2021-10-05 | Nvidia Corporation | Robust, efficient multiprocessor-coprocessor interface |
CN109542811B (zh) * | 2018-10-15 | 2021-12-07 | 广东宝莱特医用科技股份有限公司 | 一种数据通讯处理方法 |
CN109871274B (zh) * | 2019-02-27 | 2022-12-13 | 西安微电子技术研究所 | 一种嵌入式环境应用的多任务构造及处理方法 |
CN110750304B (zh) * | 2019-09-30 | 2022-04-12 | 百富计算机技术(深圳)有限公司 | 提升任务切换效率的方法及终端设备 |
US11977933B2 (en) * | 2019-12-19 | 2024-05-07 | Advanced Micro Devices, Inc. | Gang scheduling with an onboard graphics processing unit and user-based queues |
US11429451B2 (en) | 2020-01-22 | 2022-08-30 | Microsoft Technology Licensing, Llc | Managing exceptions on a shared resource |
US12079657B2 (en) * | 2021-06-24 | 2024-09-03 | Hewlett Packard Enterprise Development Lp | Handling ownership of process threads |
US11861374B2 (en) | 2021-12-16 | 2024-01-02 | Cryptography Research, Inc. | Batch transfer of commands and data in a secure computer system |
CN114721790B (zh) * | 2022-02-15 | 2024-08-06 | 阿里巴巴(中国)有限公司 | Fpga任务调度方法、调度器和调度系统 |
US11622004B1 (en) | 2022-05-02 | 2023-04-04 | Mellanox Technologies, Ltd. | Transaction-based reliable transport |
CN114579288B (zh) * | 2022-05-09 | 2022-09-02 | 成都登临科技有限公司 | 一种任务处理的方法、装置以及计算机设备 |
CN115617533B (zh) * | 2022-12-14 | 2023-03-10 | 上海登临科技有限公司 | 异构计算中进程切换管理方法及计算装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0212523A (ja) * | 1988-04-20 | 1990-01-17 | Internatl Business Mach Corp <Ibm> | コンピユータ・デイスプレイ・システム |
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 | 情報処理装置 |
JPH04311233A (ja) * | 1991-04-09 | 1992-11-04 | Nec Corp | アドレス変換装置 |
JPH07234821A (ja) * | 1993-12-27 | 1995-09-05 | Toshiba Corp | ページング装置およびディスプレイコントローラ |
JP2000215068A (ja) * | 1999-01-21 | 2000-08-04 | Matsushita Electric Ind Co Ltd | マルチタスクスケジュ―リング装置 |
JP2002183750A (ja) * | 2000-10-04 | 2002-06-28 | Terarikon Inc | レンダリングシステム及びレンダリング方法 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0418638A (ja) * | 1990-05-11 | 1992-01-22 | Fujitsu Ltd | 静的メモリ割当て処理方法 |
US5220653A (en) * | 1990-10-26 | 1993-06-15 | International Business Machines Corporation | Scheduling input/output operations in multitasking systems |
JPH05274249A (ja) * | 1991-11-28 | 1993-10-22 | Ricoh Co Ltd | データ転送処理装置 |
US5777629A (en) | 1995-03-24 | 1998-07-07 | 3Dlabs Inc. Ltd. | Graphics subsystem with smart direct-memory-access operation |
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 |
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 |
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 |
US5983332A (en) | 1996-07-01 | 1999-11-09 | Sun Microsystems, Inc. | Asynchronous transfer mode (ATM) segmentation and reassembly unit virtual address translation unit architecture |
US5896141A (en) | 1996-07-26 | 1999-04-20 | Hewlett-Packard Company | System and method for virtual device access 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 |
TW405090B (en) * | 1997-04-04 | 2000-09-11 | Ibm | Predictive cache loading by program address discontinuity history |
JPH10294834A (ja) * | 1997-04-18 | 1998-11-04 | Fuji Xerox Co Ltd | 画像形成装置の制御方法 |
US6069638A (en) | 1997-06-25 | 2000-05-30 | Micron Electronics, Inc. | System for accelerated graphics port address remapping interface to main memory |
US6704871B1 (en) | 1997-09-16 | 2004-03-09 | Safenet, Inc. | Cryptographic co-processor |
US6708273B1 (en) | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
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 |
US6092124A (en) | 1998-04-17 | 2000-07-18 | Nvidia Corporation | Method and apparatus for accelerating the rendering of images |
EP0981085A3 (en) * | 1998-08-12 | 2005-01-19 | Texas Instruments Incorporated | Application controlled data flow between processing tasks |
US6252600B1 (en) | 1998-10-02 | 2001-06-26 | International Business Machines Corporation | Computer graphics system with dual FIFO interface |
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 |
US6650333B1 (en) | 1999-06-09 | 2003-11-18 | 3Dlabs Inc., Ltd. | Multi-pool texture memory management |
EP1061438A1 (en) * | 1999-06-15 | 2000-12-20 | Hewlett-Packard Company | Computer architecture containing processor and coprocessor |
US6437788B1 (en) | 1999-07-16 | 2002-08-20 | International Business Machines Corporation | Synchronizing graphics texture management in a computer system using threads |
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 |
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 |
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 |
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 |
US7444637B2 (en) | 2003-02-18 | 2008-10-28 | Microsoft Corporation | Systems and methods for scheduling coprocessor resources in a computing system |
US20040231000A1 (en) | 2003-02-18 | 2004-11-18 | Gossalia Anuj B. | Video aperture management |
US6947051B2 (en) | 2003-02-18 | 2005-09-20 | Microsoft Corporation | Video memory management |
-
2004
- 2004-01-22 US US10/763,778 patent/US7421694B2/en not_active Expired - Fee Related
- 2004-02-13 CN CN2004100397671A patent/CN1609812B/zh not_active Expired - Fee Related
- 2004-02-13 CN CN2010101575188A patent/CN101840355B/zh not_active Expired - Fee Related
- 2004-02-17 EP EP04003544A patent/EP1450258A3/en not_active Withdrawn
- 2004-02-17 EP EP12004596.8A patent/EP2562643A3/en not_active Ceased
- 2004-02-18 JP JP2004042173A patent/JP4896376B2/ja not_active Expired - Fee Related
-
2009
- 2009-10-26 JP JP2009245934A patent/JP5091215B2/ja not_active Expired - Fee Related
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0212523A (ja) * | 1988-04-20 | 1990-01-17 | Internatl Business Mach Corp <Ibm> | コンピユータ・デイスプレイ・システム |
US5113180A (en) * | 1988-04-20 | 1992-05-12 | International Business Machines Corporation | Virtual display adapter |
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 | 情報処理装置 |
JPH04311233A (ja) * | 1991-04-09 | 1992-11-04 | Nec Corp | アドレス変換装置 |
JPH07234821A (ja) * | 1993-12-27 | 1995-09-05 | Toshiba Corp | ページング装置およびディスプレイコントローラ |
JP2000215068A (ja) * | 1999-01-21 | 2000-08-04 | Matsushita Electric Ind Co Ltd | マルチタスクスケジュ―リング装置 |
JP2002183750A (ja) * | 2000-10-04 | 2002-06-28 | Terarikon Inc | レンダリングシステム及びレンダリング方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013546099A (ja) * | 2010-12-13 | 2013-12-26 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | ユーザモードからのグラフィックス処理ディスパッチ |
JP2013546098A (ja) * | 2010-12-13 | 2013-12-26 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | グラフィックス計算プロセススケジューリング |
JP2017182820A (ja) * | 2010-12-13 | 2017-10-05 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated | グラフィックス計算プロセススケジューリング |
Also Published As
Publication number | Publication date |
---|---|
EP1450258A3 (en) | 2007-06-06 |
CN1609812A (zh) | 2005-04-27 |
CN101840355B (zh) | 2013-02-13 |
JP4896376B2 (ja) | 2012-03-14 |
US20040187122A1 (en) | 2004-09-23 |
CN1609812B (zh) | 2010-05-26 |
EP2562643A3 (en) | 2016-02-10 |
EP1450258A2 (en) | 2004-08-25 |
JP5091215B2 (ja) | 2012-12-05 |
US7421694B2 (en) | 2008-09-02 |
EP2562643A2 (en) | 2013-02-27 |
JP2004252983A (ja) | 2004-09-09 |
CN101840355A (zh) | 2010-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5091215B2 (ja) | コプロセッサの性能を強化するシステムおよび方法 | |
JP5335743B2 (ja) | タスクのスケジューリングを支援する装置 | |
US20210349763A1 (en) | Technique for computational nested parallelism | |
JP5170782B2 (ja) | ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ | |
US7065630B1 (en) | Dynamically creating or removing a physical-to-virtual address mapping in a memory of a peripheral device | |
US8719543B2 (en) | Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices | |
US9436504B2 (en) | Techniques for managing the execution order of multiple nested tasks executing on a parallel processor | |
CN101685391B (zh) | 管理计算系统中协处理器的计算资源的方法和系统 | |
US6055650A (en) | Processor configured to detect program phase changes and to adapt thereto | |
US20050168472A1 (en) | Video memory management | |
US8984183B2 (en) | Signaling, ordering, and execution of dynamically generated tasks in a processing system | |
US7661115B2 (en) | Method, apparatus and program storage device for preserving locked pages in memory when in user mode | |
US20140025922A1 (en) | Providing multiple quiesce state machines in a computing environment | |
KR100988395B1 (ko) | 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체 | |
US8458438B2 (en) | System, method and computer program product for providing quiesce filtering for shared memory | |
KR101130361B1 (ko) | 코프로세서 내의 연산을 스트림라인하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20091125 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100521 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100823 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110520 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110817 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110822 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110920 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110926 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20111019 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20111024 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111121 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120525 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120822 |
|
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: 20120907 |
|
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: 20120913 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150921 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5091215 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |