JP2014053033A - Cpu及びgpuの間のリソース共有 - Google Patents

Cpu及びgpuの間のリソース共有 Download PDF

Info

Publication number
JP2014053033A
JP2014053033A JP2013228304A JP2013228304A JP2014053033A JP 2014053033 A JP2014053033 A JP 2014053033A JP 2013228304 A JP2013228304 A JP 2013228304A JP 2013228304 A JP2013228304 A JP 2013228304A JP 2014053033 A JP2014053033 A JP 2014053033A
Authority
JP
Japan
Prior art keywords
cpu
gpu
processor
logic
instructions
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
Application number
JP2013228304A
Other languages
English (en)
Other versions
JP5918739B2 (ja
Inventor
Eric Sprangle
スプラングル、エリック
Matthew Craighead
クレイグヘッド、マシュー
Chris Goodman
グッドマン、クリス
Belliappa Kuttanna
クッタナ、ベリアパ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2014053033A publication Critical patent/JP2014053033A/ja
Application granted granted Critical
Publication of JP5918739B2 publication Critical patent/JP5918739B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor

Abstract

【課題】実行リソースを提供する技術を提供する。
【解決手段】CPUとGPUとの間で命令及び情報をスケジュール及び転送することにより、ワークロード、電力条件、又は利用可能なリソースに応じて、CPUとGPUとがリソースを共有する。
【選択図】図1

Description

本発明の実施形態は、情報処理の分野に関し、特に、中央演算処理装置(CPU)、グラフィックス・プロセッシング・ユニット(GPU)又はこれらの組み合わせといったプロセッサ内の共有コンピューティングリソースの分野に関する。
多くのアプリケーションが、マルチプロセッシングシステム及びマイクロプロセッサの並列処理(parallel processing)能力を利用するようになり、処理するワークの種類に応じてコンピューティングリソースを共有する要求が高まっている。例えば、並列プログラムは、GPUのような特定の処理に特化したハードウェアを利用することができ、一方、順次的に実行されるプログラムは、汎用CPUを利用することができる。現代のプログラムでは、並列及び順次オペレーションが入り交じって実行されることがあり、CPU及びGPUリソースを並行して、又は連続的に使用することにより、オペレーションの種類又は実行されるプログラムに応じて、コンピューティングリソースの最適化を図ることが考えられる。
本発明の実施形態は、例示の目的で示されるものであり、本発明を限定することを意図していない。また、添付の図面において、同様な構成要素には、同じ参照番号を付与している。
本発明の少なくとも1つの実施形態を利用することが考えられるマイクロプロセッサシステムのブロック図である。 一実施形態に係るCPU及びGPUが共有するリソースを示した図である。 一実施形態に係る3Dグラフィックス・レンダリング・パイプラインを示した図である。 一実施形態に係る、複数のプロセッサによって共有される浮動小数点ロジックを示した図である。 一実施形態に従って実行されるオペレーションのフロー図である。 少なくとも一実施形態を使用可能な共有接続システムを示した図である。 本発明の少なくとも一実施形態を使用可能なポイント・ツー・ポイント接続コンピュータシステムを示した図である。
本発明の実施形態は、並列アプリケーション又は"スループット"アプリケーションを処理する、及び順次的にプログラムを実行するプロセッシングデバイス及びシステムに関する。ある実施形態は、より順次的なコードを実行するCPU及びより並列的なコードを実行するGPUといった少なくとも2つのプロセッシングユニットを含む。並列的なプログラムの例としては、例えば、単一命令複数データ流(SIMD)若しくは"パックされた"命令又は"ベクトル"命令を使用して、並列処理を利用する3Dグラフィックスプログラム、科学的プログラム又は金融プログラムが挙げられる。一実施形態では、基礎となっているプロセッシングリソース(CPU又はGPU)を考慮することなくプログラムが書かれた場合であって、いずれのプロセッシングリソースを使用すればプログラムの命令又はスレッドを最も好適に実行できるかという判断は、ハードウェア自身、ドライバ、ドライバのようなプログラム、仮想マシンマネージャ又は"ハイパーバイザ"のようなミドルウェアソフトウェアが行ってもよい。また、ある実施形態では、CPU又はGPUで実行されるスレッド又は命令グループは、スレッド又は命令によって実行されるオペレーションの複数部分について、CPU又はGPUといった他のプロセッシングリソースの処理能力を利用してもよく、この場合、共有メモリスペース又はダイレクトリンク接続を通じて、情報が共有される。
様々な種類のオペレーション及びプログラムが、実施形態を利用可能であり、この実施形態において、タスクはGPU及びCPUの間で共有され、GPUオペレーション"パイプライン"に従ってオペレーションを実行する3Dグラフィックスレンダリングプログラムを含む。例えば、視錐台クリッピングは、多くの3Dグラフィックスアプリケーションで使用され、所与の時間に、どの多角形が視錐台に現れるかを決定する。これは、計算を主としたオペレーションであり、必ずしも、GPUの並列リソースを必要とするようなオペレーションではない。したがって、一実施形態では、視錐台クリッピングにおける一部又は全てのオペレーションを、GPUが他のオペレーションを実行している間に、利用可能な処理能力を有するCPUに対して、"オフロード"することが可能である。CPUが視錐台クリッピングを実行するのに必要なデータは、ダイレクトリンクを使用してGPUからCPUへと直接的に送信してもよいし、PCIメモリ又は共有キャッシュ等の共有メモリスペースを通じて送信してもよい。視錐台クリッピングの結果は、共有記憶装置又はダイレクトリンクを通じて、CPUからGPUへと戻され、GPUは、CPUから送信された視錐台クリッピングの結果を使用してシーン(scene)のレンダリングを続けることができる。一実施形態において、この種のリソース共有は、CPU及び/又はGPU(又は、これらの外側のロジック)内のロジックにより制御され、他の実施形態においては、リソース共有は、ドライバ、ハイパーバイザ等のミドルウェアソフトウェアにより制御されるが、ユーザーソフトウェアは、リソース共有については認識していない。
本発明の実施形態は、ソフトウェアアプリケーションが、複数のプロセッサに対応して設けられた複数のストレージ構造にアクセスし、情報を格納するのを可能にする。例えば、単一命令複数データ流(SIMD)オペレーション又は複数命令複数データ流(MIMD)オペレーションを使用する並列命令又は並列アプリケーションを処理する場合に、このような構成が有用である。というのも、各SIMD又はMIMDオペレーションは、それらが位置する特定のメモリ構造を考慮することなく、共有メモリ構造から、オペランドデータ要素にアクセスできるからである。大量の情報の処理を並行して行うことができるため、特に、3Dグラフィックスアプリケーションや、金融アプリケーションに有効である。しかしながら、より順次的(sequential)な典型的なCPUアプリケーションであっても、複数の異なるロケーションに格納された情報を利用できるので、有用である。
ある実施形態では、プログラム又はスレッドが、GPUでの処理が適している部分を含むCPUで実行されることが考えられる。この場合、GPUで実行可能な命令及びスレッドは、上述したのと同様な形で、GPUで実行されてもよく、実行結果はCPUに戻されて、さらなる処理を実行してもよい。典型的なGPUは、非常に並列的な浮動小数点リソースを含むので、例えば、CPUにスケジュールされている浮動小数点命令を、共有メモリ又はダイレクトリンクを通じてGPUに転送し、CPUが他の命令を実行している間に、GPUにて実行してもよい。そして、浮動小数点オペレーションは、結果を、共有メモリ又はダイレクトリンクを通じてCPUに戻し、CPUは、これらの結果を、プログラムで実行されるべきオペレーションの残りの部分に取り込んでもよい。一実施形態において、CPUは、浮動小数点リソースを全く含まない又はほんの僅かな浮動小数点リソースを含み、例えば、GPUとCPUとで浮動小数点リソースを共有するといった形で、CPUは、GPUの浮動小数点リソースに実質的に依存している。
ある実施形態では、メモリは、例えば、"ページ"のようなセグメントに従って編成及びアクセスされ、ページにアクセスするプロセッサ(又はメモリインターフェースロジック)は、構造(例えば、"ページテーブル")を維持して、特定のメモリ構造のページサイズ又は組織を、プロセッサの又はメモリコントローラのページングサイズ又はスキームへと変換(map)してもよい。一実施形態では、例えば、プロセッサ又はメモリコントローラが、特定のメモリの物理ページを、一連の複数の仮想ページに変換してもよく、プログラムがページにアクセスするのに応答して、プロセッサ又はメモリコントローラはページの開閉をしてもよい。
ある実施形態では、プロセッサ又はメモリインターフェースのそれぞれは、他のメモリ構造にアクセスし、そのアクセスは他のプロセッサメモリインターフェースによって制御される又は他のプロセッサメモリインターフェースに対応することから、各プロセッサ又はメモリコントローラのページ状態(オープン/クローズ)間の一貫性を保つために、複数のプロセッサ及び複数のメモリコントローラ間で通信を行うことが望ましい。一実施形態において、n幅の相互接続("n"は、チャネル/ピン/レーン/トレースの数を表す可変数であり、1以上の数)を使用して、様々なプロセッサ又はメモリコンローラ間のページ状態を通信してもよく、ある1つのプロセッサは、別のプロセッサがアクセスを必要とするようなメモリのページを閉じない。様々なプロセッサ(GPU及びCPUのような)又は1つ以上のメモリにアクセスするメモリコントローラ間のページ状態を通信することにより、不必要なページ開閉オペレーションを回避することができ、様々なプロセッサ又はメモリコントローラ間のアクセス性能を改善することができる。また、ある実施形態では、n幅の相互接続は、相対的に低い帯域幅のものであってもよく、過度の数のピン、電力、又はその他のリソースを不要とすることができる。
本発明の実施形態によれば、データが格納されている又は格納される予定であるメモリデバイスを考慮することなく、複数のプロセッサでアプリケーションを実行することが可能となる。これは、例えば、一のグラフィックプロセッサが、ピクセルスクリーンの1/2をレンダリングし、別のグラフィックプロセッサが、残りの1/2をレンダリングするといったようなグラフィックスアプリケーションにおいて、特に有用である。このような場合では、一のプロセッサが、一のメモリから、隣接するテクセル情報(対応するプロセッサの1/2スクリーンにおけるに対応する情報)にアクセスする必要があり、別のプロセッサが、別のメモリから、隣接する情報(対応するプロセッサの1/2スクリーンにおけるに対応する情報)にアクセスする必要があることから、境界上のトライアングルは、フィルタされる場合に遅延を生じさせてしまう場合がある。この時、対応していないメモリから情報を必要としているプロセッサは、対応しているプロセッサを通じて情報を要求する必要があり、対応しているプロセッサは、要求元のプロセッサに情報を返答しなければならないため、プロセッサ間で比較的高い帯域幅のバスを必要とする帯域幅を使用してしまうことになる。このようなことを防ぐために、ソフトウェア開発者は、データの格納場所に制限を設けることを考えるが、特に、境界をまたぐようなトライアングルをレンダリングする場合などは、制限を設けることは非常に困難である。
一実施形態において、ページテーブルは、ソフトウェアによって提供されるアドレスを、スループットアプリケーションを実行するのに使用される2つのプロセッサに対応する2つのメモリにおけるロケーションに変換(map)する。特に、ページテーブルは、アドレスの複数のビットを使用して、2つのメモリ内の交互(alternating)のロケーションに格納されたアドレス情報を含むテーブルのエントリ(要素)にアクセスする。したがって、ソフトウェアが情報を格納する又は情報にアクセスする時には、ページテーブルにより自動的にそのアクセスについて適切なメモリへのルートが提示されるので、要求元のソフトウェア(OS又はアプリケーション)が、情報が実際に格納されている場所を探索する又は考慮する必要がない。このようにして、いずれかのメモリから交互に、バースト速度で情報がアクセスされ、各プロセッサのメモリインターフェースの帯域幅を最大化することができ、相対的に高い帯域幅のバスを回避することができ、クロスメモリ/プロセッサアクセスをサポートすることができる。
ある実施形態では、コヒーレンシフィルタを使用する等の効率的な方法で要求を管理することにより、複数のプロセッサ(例えば、CPU及びGPU)が、要求元アプリケーションにデータを提供してもよい。一実施形態では、コヒーレンシフィルタは、1つ以上のコヒーレンシテーブル、又は1つ以上のプロセッサによりアクセス可能な又は対応するその他の構造を含んでもよく、一のプロセッサで実行されているアプリケーションからのデータ要求が発生すると、別のプロセッサが現在アクセス可能なデータ(プロセッサのキャッシュ、バッファ又は他の構造における対応するデータ、又はプロセッサの対応するメモリにおいて現在オープンとなっているページにおける対応データ)のアドレスを示すテーブルに、このプロセッサがアクセスするようにしてもよい。要求されたデータの直近のバージョンが、別のプロセッサのキャッシュに存在する場合、要求を受信したプロセッサは、別のプロセッサに対して、要求されたデータを要求元アプリケーションに返答するよう信号で通知してもよいし、あるいは、要求を受信したプロセッサが、n幅のプロセッサ間相互接続を通じて、別のプロセッサからデータを読み出してもよい。ある実施形態では、プロセッサは、複数のプロセッサを含んでもよく、この場合、各プロセッサは、プロセッサソケットに対応していてもよい。
ある実施形態では、上述した技術は、2、4、8又はそれ以上の数のプロセッサ又はコアを有するプロセッサ又はシステムに適用してもよく、同じ種類(CPU)又は異なる種類(CPUとGPU)、若しくはその他のアクセラレータが含まれていてもよい。また、本発明の実施形態は、汎用コンピュータ、グラフィックスゲームコンソール、グラフィックスカードアプリケーションなどを含む様々なシステム、処理構成又はアプリケーションに適用可能である。一実施形態では、ここに記載される技術は、金融アプリケーション、医療アプリケーション、イメージングアプリケーションなどの3Dグラフィックス又は他のアプリケーションの実行する1つ以上のプロセッサに関する。他の実施形態では、ここに記載される技術は、順次的な又は典型的なワークロードを実行するため汎用CPUと共に利用される場合もある。また、他の実施形態では、ここに記載される技術は、典型的なCPU及びグラフィック専用ロジック(CPU+GPU)を含むプロセッサなど、典型的なCPUワークロードとスループットアプリケーションの両方を実行するよう設計されたハイブリッドプロセッサに関連して、利用されてもよい。また、一実施形態では、ここに記載される技術は、グラフィックテクスチャサンプリングロジックなど、並列アプリケーション専用ロジックと共に相互接続に連結され、SIMD命令を実行可能ないくつかのCPUプロセッサコアを有する1以上のプロセッサに関連して、利用される。
図1は、本発明の少なくとも1つの実施形態を利用することが考えられるマイクロプロセッサを示す。図1には、典型的なCPUアプリケーション、スループットアプリケーション(例えば、3Dグラフィックスアプリケーション)又は典型的なCPUアプリケーションとスループットアプリケーションとの組み合わせに対して、利用可能なプロセッサが示されている。プロセッサ100は、複数のプロセッシングコア100−1〜100−Nと、専用スループットアプリケーションハードウェア110(例えば、グラフィックス・テクスチャ・サンプリングハードウェア)と、メモリインターフェースロジック120とを含み、リング相互接続130に沿って配置されている。ある実施形態では、プロセッサ100は、コア100−1〜100−Nそれぞれに位置するキャッシュ101−1〜101−Nからの情報を包含する1つ以上のラストレベルキャッシュ135を含んでもよい。一実施形態では、1つ以上のプロセッシングコア100−1〜100−Nは、SIMD処理を実行可能である。
一実施形態では、CPUはそれぞれ、GPUハードウェアにスケジュールされたオペレーションのいくつかを、共有メモリ又はダイレクトリンク(又は図1に示す実施形態における環状リンク)を通じて転送することにより、これらのオペレーションを実行することができる。反対に、グラフィックスハードウェアにスケジュールされたオペレーションを、同様のメカニズムを用いて利用可能なCPUに転送することもできる。
ある実施形態では、グラフィックテクスチャのような情報又は比較的大量のメモリ帯域幅を必要とする他の情報に対して、アプリケーションソフトウェアが当該情報を格納するメモリを認識せず又は考慮することなく、他のプロセッサ(図示せず)に対応する他のメモリからアクセスがある場合が考えられる。また、ある実施形態では、プロセッサ100は、図1に示されるより多くの又は少ない数のメモリコントローラを含んでもよい。また、図1のメモリコントローラは、プロセッサ100の内部又は外部に設けられていてもよい。
図2は、一実施形態に係るGPU及びCPUが共有するリソースを示したものである。一実施形態において、CPU201は、順次的な(sequential)プログラムを実行するのに優先的に使用され、一方、GPU205は、並列的(parallel)なプログラムを実行するのに使用される。一実施形態において、CPU又はGPUのいずれかにスケジュールされた命令を、共有ストレージ210を使用してCPUとGPUとの間で転送又は"移動"することができる。一実施形態において、共有ストレージは、PCI共有メモリとして数えられるメモリの領域であり、CPU又はGPUは、移動された命令に関連する情報を読み書きすることができる。例えば、グラフィックスオペレーションがGPUにより実行される一実施形態において、グラフィックスオペレーションの一部は、CPUが利用可能である場合は、CPUへと転送し処理することができる。CPUが実行すべき命令及びデータを共有メモリに書き込み、また、割り込み又はCPU及びGPU間のダイレクトリンクを通じて、CPUが共有メモリリソースから情報を読み出すべきであり、そこに示された情報を実行すべきであることを指示する。一実施形態において、CPUが転送されてきたタスクを処理している間に、GPUはその他のオペレーションの処理を続けてもよい。CPUのタスクが完了すると、CPUは結果を共有メモリに書き込み、割り込み又はダイレクト通信リンクを使用して、GPUに結果が利用可能になったことを通知する、例えば、GPUが結果を読み込むことが可能であり、グラフィックス・レンダリング・パイプラインに取り込み可能であることを通知する。一実施形態において、共有メモリリソースの逆の使用方法を実行してもよく、CPUがオペレーションを実行し、そのうちの一部をGPUに実行させてもよい。
一実施形態において、CPU及びGPU間で転送される情報を共有する(例えば、共有メモリを使用する替わりに)及び/又は共有メモリにおいて利用可能な情報を互いに信号で伝えるのに、ダイレクトリンク(直接結合)215が使用される。一実施形態では、ダイレクトリンクは、ページ情報を共有するのに使用され、一のプロセッサが、他のプロセッサが必要とするかもしれないページを閉じてしまわないようにしている。一実施形態では、CPUとGPUとの間でのリソースの共有は、CPU、GPU又はこれらの両方に位置するロジック、又はシステムのその他の位置に存在するロジックによって制御される。ある実施形態では、リソースの共有は、ミドルウェア、ドライバ、ドライバ状ソフトウェア、又は仮想マシンマネージャ、又はハイパーバイザにより制御される。利点として、アプリケーションソフトウェア又はOSが、リソースの共有について何も認識することなく、実施形態を利用することができるということが挙げられる。一実施形態において、グラフィックスAPIの複数部分が、CPU及びGPUのリソース共有を制御してもよい。特に、基礎となるリソースを認識しているAPIは、自身のグラフィックス・レンダリング・パイプラインで実行されるオペレーションに基づいて、リソースを使用してもよい。
図3は、一実施形態に係るグラフィックス・レンダリング・パイプラインを示したものである。一実施形態において、図3のグラフィックス・レンダリング・パイプラインは、入力アセンブラステージ301、頂点シェーダ(shader)ステージ305、ジオメトリシェーダステージ310、ストリーム出力ステージ315、ラスタライザ(rasterizer)ステージ320、ピクセルシェーダステージ325及び出力合成ステージ330を含む。また、グラフィックス・レンダリング・パイプラインは、共有メモリリソース335に位置するバッファのような、共有メモリリソースを利用してもよい。
一実施形態において、図3に示したグラフィックス・レンダリング・パイプラインの1以上のステージ又は1以上のステージの一部を、実行されるオペレーション及びハードウェアリソースの利用可能度に応じて、CPUリソース又は別のGPUリソースに転送してもよい。例えば、一実施形態では、利用可能なハードウェアリソースを持つCPUにより、頂点シェーダステージを実行し、この場合、例えば、共有メモリリソースを使用して、APIにより命令をこのCPUに転送又はスケジュールする。CPUがオペレーションを完了したら、共有メモリリソースを使用して、その結果をGPUに転送してもよい。一実施形態において、API又はその他のソフトウェアは、実行すべき命令をCPUにスケジュールし、また一部をGPUにスケジュールしてもよく、この場合、CPU及びGPUはそれぞれ、独自のスケジューリングロジック又は共有スケジューリングロジック、及び浮動小数点ロジックのような共有リソースを有する。一実施形態において、整数オペレーションを、(CPU内に位置してもよい)整数ロジックにスケジュールし、浮動小数点オペレーションを、(GPU内に位置してもよい)浮動小数点ロジックにスケジュールしてもよい。
図4は、CPU及びGPUが、浮動小数点リソース及び整数リソースを共有する1つの実施形態を示したものである。図4に示すように、プロセッサ400は、命令をフェッチするフェッチロジック401、命令をデコードするデコードロジック405、命令が使用するデータを格納するL1データキャッシュ410a〜b、複数のエージェントによって使用される共有L2キャッシュ415及び共有L3キャッシュ420を有する。また、図4には、整数命令を実行する整数実行リソース425a〜h、及び浮動小数点命令を実行する浮動小数点実行リソース430a〜bが示されている。また、一実施形態では、浮動小数点実行リソース及び整数実行リソースは、それぞれ自身専用のスケジューリングロジック435a〜b及び440を有する。一実施形態では、浮動小数点リソースは、128ビット浮動小数点乗算累算(FMAC)ロジックを含む。ある実施形態では、スケジューリングリソースは、少なくとも一部共有される。
一実施形態では、浮動小数点リソースを必要とする命令を、浮動小数点スケジューラを使用して、浮動小数点リソースにスケジュールすることができ、整数実行リソースを必要とする命令を、整数スケジューラを使用して、整数実行ユニットにスケジュールすることができる。一実施形態では、ハイパーバイザ、ミドルウェアドライバ、又はAPIは、浮動小数点リソースを必要とするプログラムの複数部分を、浮動小数点スケジューラロジックを使用して、浮動小数点リソースにスケジュールすることができ、これと並行して又は順次的に、整数命令も、整数スケジューラにより整数実行リソースにスケジュールされる。一実施形態において、図4が示す構成はCPUであり、他の実施形態では、図4が示す構成はGPUであり、また別の実施形態では、図4が示す構成はCPU及びGPUであある。
図5は、一実施形態に従って実行されるオペレーションのフロー図である。501において、命令が、GPU又はCPUにスケジュールされる。オペレーション505において、GPU又はCPUにスケジュールされた命令を、共有メモリ又はダイレクトリンクを使用して情報を共有するため、情報を共有メモリ又はダイレクトリンクに書き込む。オペレーション510において、共有された情報を利用するユーザーは、共有メモリ又はダイレクトリンクから情報を読み出す。他の実施形態では、その他のオペレーションを実行してもよい。
図6は、本発明の一実施形態を使用可能な共有バスコンピュータシステム(例えば、フロントサイドバス(FSB)コンピュータシステム)を示している。プロセッサ601、605、610又は615のいずれも、非対称コア(性能、パワー、動作電圧、クロックスピード又はISAが異なる)を含んでもよく、非対称コアは、そこに位置するローカルレベル1(L1)のキャッシュメモリ620、625、630、235、640、645、650、655からの情報にアクセスすることができる、又はプロセッサコア623、627、633、637、643、647、653、657のうちの1つと関連付けられていてもよい。また、プロセッサ601、605、610又は615は、共有レベル2(L2)キャッシュ603、607、613、617からの情報、又はシステムメモリ660からの情報に、チップセット665を通じてアクセスしてもよい。
本発明の実施形態は、図6に示すプロセッサ又はエージェントのいずれに存在してもよい。例えば、ロジック619を、プロセッサ623、627、633、637、643、647、653、657のいずれか又は全てに組み込んで、少なくとも一実施形態の側面を実行するようにしてもよい。特に、ロジック619を使用して、システム内の他のエージェントからの信号の検出、送信及び割り込みを行い、ページが現在、別のエージェントによってアクセスされているかに基づいて、メモリのページがオープンとなっているか、又はクローズとなっているのかを判断してもよい。他の実施形態では、ロジック619は、複数エージェントに分配されてもよい。また、別の実施形態では、ロジック660は、ソフトウェア、ハードウェア又はこれらの組み合わせを含んでもよい。
図6に示したFSBコンピュータシステムの他に、他のシステム構成を、本発明の様々な実施形態に関連して使用してもよく、ポイント・ツー・ポイント(P2P)相互接続システム又はリング相互接続システムなどを使用してもよい。図7のP2Pシステムは、例えば、図には、2つのプロセッサ770、780しか示されていないが、それ以上の個数のプロセッサを含んでもよい。プロセッサ770、780はそれぞれ、ローカル・メモリコントローラハブ(MCH)772、782を有し、メモリ72、74と接続されている。プロセッサ770、780は、ポイント・ツー・ポイント(PtP)インターフェース回路778、788を使用して、PtPインターフェース750を通じたデータ交換をしてもよい。プロセッサ770、780はそれぞれ、ポイント・ツー・ポイントインターフェース回路776、794、786、798を使用して、別個のPtPインターフェース752、754を通じて、チップセット790とデータを交換してもよい。チップセット790も、高性能グラフィックスインターフェース739を介して、高性能グラフィックス回路738とデータを交換してもよい。
本発明の実施形態は、図7に示すあらゆるプロセッサ又はエージェントに取り込んでもよい。例えば、ロジック799を、プロセッサ770、780のいずれか一方又は両方に組み込み、少なくとも一実施形態の側面を実行するようにしてもよい。特に、ロジック799を使用して、システム内の他のエージェントからの信号の検出、送信及び割り込みを行い、ページが現在、別のエージェントによってアクセスされているか否かに基づいて、メモリのページがオープンとなっているか、又はクローズとなっているのかを判断してもよい。他の実施形態では、ロジック799は、複数エージェントに分配されてもよい。また、別の実施形態では、ロジック799は、ソフトウェア、ハードウェア又はこれらの組み合わせを含んでもよい。
多数の異なる種類のプロセッシングデバイスが、このようなプロセス再割当技術を利用することの利益を享受できる。例えば、処理ユニット600−1〜600−Nは、汎用プロセッサ(例えば、マイクロプロセッサ)であってもよいし、又は(1つのダイ上の)複数コア・マイクロプロセッサのマイクロプロセッサコアであってもよい。あるいは、複数の並列ユニット又はコアを備えるシステムにおいて使用されるデジタル信号プロセッサ、グラフィックスプロセッサ、ネットワークプロセッサ又はあらゆる種類の特定用途プロセッサが、熱(又はパワー)に起因した、プロセッシングユニット間のプロセスシフトの恩恵を享受することができる。プロセッシングユニット又はプロセッサは、少なくとも部分的に重複をした機能を有するか、又は互いに同じであってもよい。すなわち、複数のプロセッシングユニット又はプロセッサ上で実行可能なプロセスが少なくとも(全部ではないが)複数存在するように、各プロセッシングユニットは、共通の命令セット又はコマンドセットを有する。他の実施形態では、複数のプロセッシングユニットは非対称であってもよく、パフォーマンス能力、トランジスタの個数、電力消費、熱特性、クロック周波数又はISAのいずれか又はこれらの組み合わせにおいて、異なっていてもよい。
迅速な処理及び要求データの返答を促進するため、少なくとも1つの実施形態において、アプリケーションにより要求されたデータを抽出読み出す最善の(例えば、最速の)方法を決定するために、コヒーレンシフィルタを採用してもよい。例えば、一実施形態において、コヒーレンシフィルタは、システムの1つ以上のプロセッサが現在アクセス可能なデータに関する情報を各エントリに含むコヒーレンシテーブルを有してもよい。一実施形態では、プロセッサのコヒーレンシテーブルは、システムの他のプロセッサのキャッシュ、バッファ又はその他のストレージ構造において利用可能なデータを示すアドレスのリストを含んでもよく、アプリケーションがデータを要求する時に、プロセッサは、最初に自身のコヒーレンシテーブルをチェックして、他のプロセッサがこのデータを現在有しているか確認することができる。他のプロセッサがデータを有する場合は、要求を受け付けたプロセッサが、プロセッサ間のn幅の相互接続に渡ってデータを読み出すことにより、データが読み出されてもよい。一実施形態において、テーブルは、プロセッサのキャッシュ/バッファなどにおいて利用可能なデータの一部しか示さないため(実際には、テーブルによって含まれる情報の量は様々であるが)、n幅のプロセッサ間相互接続のトラフィックは、コヒーレンシテーブルの情報又はサイズにより、削減又は少なくとも制御可能である。
図12は、コヒーレンシフィルタを含む本発明の一実施形態で利用可能なシステムを示す。図12において、プロセッサ1205上で実行されるアプリケーション又はスレッド1240は、プロセッサ1205にアドレスを提供することによって、データを要求してもよい。そして、プロセッサ1205は、要求されたデータがプロセッサ1200内のバッファ又はキャッシュ内に現在存在するかを判断するため、プロセッサがアクセス可能なメモリ又はプロセッサに格納されているコヒーレンシテーブル1245にアクセスしてもよい。例えば、テーブルが、要求されたデータがプロセッサ1200において現在利用可能であることを示している場合、プロセッサ1205は、相互接続1208を介しプロセッサ1200からデータを読み出すので、これにより、最も迅速に、プログラムにデータを提供することができる。一実施形態において、テーブルは、アプリケーション又はスレッド1240によりプロセッサ1205に提供されるアドレスの一部に関して参照される。さらに少なくとも1つの実施形態において、異なるテーブル(又は同一のテーブル)が、システムのプロセッサそれぞれに対応し、他のプロセッサにおいて検出される要求された各アドレスについてテーブル内にエントリを生成することにより、テーブルが維持される。さらに、各エントリは、データが他のプロセッサ内に検出されない場合を示す情報を有してもよく、又はエントリが一緒に削除されてもよい。様々なコヒーレンシテーブルのメンテナンススキーム及びアルゴリズムを使用して、相互接続1208を介して複数のプロセッサ間で共有される情報を追跡してもよい。
機械に読み出された場合に当該機械に上述の技術を実行させるロジックを生成させ、プロセッサ内の様々なロジックを表す機械可読媒体に格納される典型的なデータにより、少なくとも一実施形態の1以上の側面を実装してもよい。"IPコア"として知られるこのような表現は、有形の機械可読媒体(テープ)に格納され、実際のロジック又はプロセッサを生成する製造装置にロードする製造者、又は様々なカスタマに供給されると考えられる。
以上、マイクロアーキテクチャメモリ領域アクセスに関する方法及び装置について記載した。上記説明は、例示的なものであって限定することを意図していないことが理解されるべきである。上述の説明を読み理解することで、その他多くの実施形態が可能であることは、当業者にとって明白である。したがって、本発明の範囲は、添付の特許請求の範囲、及び請求項の均等物の全範囲を参照することにより決定されるべきである。
以上、マイクロアーキテクチャメモリ領域アクセスに関する方法及び装置について記載した。上記説明は、例示的なものであって限定することを意図していないことが理解されるべきである。上述の説明を読み理解することで、その他多くの実施形態が可能であることは、当業者にとって明白である。したがって、本発明の範囲は、添付の特許請求の範囲、及び請求項の均等物の全範囲を参照することにより決定されるべきである。ここで、本発明の実施形態の例を項目として挙げる。
[項目1]
中央処理演算装置(CPU)と、
CPUに連結されたグラフィックスプロセッシングユニット(GPU)と、
CPU及びGPUの実行リソースを共有するためのロジックと
を備える装置。
[項目2]
CPUとGPUとの間でページ情報を通信するためのロジックをさらに備える項目1に記載の装置。
[項目3]
ロジックは、CPU及びGPUに共有される情報を格納する共有メモリリソースを有する項目1に記載の装置。
[項目4]
ロジックは、情報共有を促進するための、CPUとGPUとの間のダイレクトリンクを有する項目1に記載の装置。
[項目5]
GPUは、CPUによって使用される浮動小数点実行リソースを有する項目2に記載の装置。
[項目6]
CPUは、GPUによって使用される整数実行リソースを有する項目2に記載の装置。
[項目7]
GPUにスケジュールされる命令が、CPUに移動され、移動された命令の結果が、GPUに転送される項目1に記載の装置。
[項目8]
CPUにスケジュールされる命令が、GPUに移動され、移動された命令の結果が、CPUに転送される項目1に記載の装置。
[項目9]
中央処理演算装置(CPU)と
CPUに連結されたグラフィックスプロセッシングユニット(GPU)と、
CPU及びGPUの実行リソースを共有するためのロジックと、
CPUまたはGPUによって使用されるシステムメモリと
を備えるシステム。
[項目10]
CPUとGPUとの間でページ情報を通信するためのロジックをさらに備える項目9に記載のシステム。
[項目11]
ロジックは、CPU及びGPUに共有される情報を格納する共有メモリリソースを有する項目9に記載のシステム。
[項目12]
ロジックは、情報共有を促進するための、CPUとGPUとの間のダイレクトリンクを有する項目9に記載のシステム。
[項目13]
GPUは、CPUによって使用される浮動小数点実行リソースを有する項目10に記載のシステム。
[項目14]
CPUは、GPUによって使用される整数実行リソースを有する項目10に記載のシステム。
[項目15]
GPUにスケジュールされる命令が、CPUに移動され、移動された命令の結果が、GPUに転送される項目9に記載のシステム。
[項目16]
CPUにスケジュールされる命令が、GPUに移動され、移動された命令の結果が、CPUに転送される項目9に記載のシステム。
[項目17]
中央処理演算装置(CPU)と、
CPUに連結されたグラフィックスプロセッシングユニット(GPU)と、
CPU及びGPUの実行リソースを共有するためのロジックと、
CPU及びGPUに連結され、命令をデコードするデコードロジックと、
命令を格納する命令キャッシュと、
命令をスケジュールするスケジューラロジックと
を備えるプロセッサ。
[項目18]
CPUとGPUとの間でページ情報を通信するためのロジックをさらに備える項目17に記載のプロセッサ。
[項目19]
ロジックは、CPU及びGPUに共有される情報を格納する共有メモリリソースを有する項目17に記載のプロセッサ。
[項目20]
ロジックは、情報共有を促進するための、CPUとGPUとの間のダイレクトリンクを有する項目17に記載のプロセッサ。
[項目21]
GPUは、CPUによって使用される浮動小数点実行リソースを有する項目19に記載のプロセッサ。
[項目22]
CPUは、GPUによって使用される整数実行リソースを有する項目19に記載のプロセッサ。
[項目23]
GPUにスケジュールされる命令が、CPUに移動され、移動された命令の結果が、GPUに転送される項目17に記載のプロセッサ。
[項目24]
CPUにスケジュールされる命令が、GPUに移動され、移動された命令の結果が、CPUに転送される項目17に記載のプロセッサ。
[項目25]
スケジューラロジックは、整数命令をスケジュールする第1のスケジューラロジックと、浮動小数点命令をスケジュールする第2のスケジューラロジックとを有する項目17に記載のプロセッサ。
[項目26]
CPUとGPUとが、第2のスケジューラロジックを共有する項目25に記載のプロセッサ。
[項目27]
命令を、実行リソースの第1セットを有する第1のプロセッサにスケジュールする段階と、
命令を、実行リソースの第2セットを有する第2のプロセッサに移動させる段階と、
第2のプロセッサにおいて命令を実行して得られた情報を、第1のプロセッサに転送する段階とを備える方法。
[項目28]
第1のプロセッサは、中央演算処理装置(CPU)であり、第2のプロセッサは、グラフィックスプロセッシングユニット(GPU)である項目27に記載の方法。
[項目29]
第1のプロセッサは、GPUであり、第2のプロセッサは、CPUである項目27に記載の方法。
[項目30]
第1のプロセッサと第2のプロセッサとの間で、ページング情報を通信する段階をさらに備える項目27に記載の方法。

Claims (30)

  1. 中央処理演算装置(CPU)と、
    前記CPUに連結されたグラフィックスプロセッシングユニット(GPU)と、
    前記CPU及び前記GPUの実行リソースを共有するためのロジックと
    を備える装置。
  2. 前記CPUと前記GPUとの間でページ情報を通信するためのロジックをさらに備える請求項1に記載の装置。
  3. 前記ロジックは、前記CPU及び前記GPUに共有される情報を格納する共有メモリリソースを有する請求項1に記載の装置。
  4. 前記ロジックは、情報共有を促進するための、前記CPUと前記GPUとの間のダイレクトリンクを有する請求項1に記載の装置。
  5. 前記GPUは、前記CPUによって使用される浮動小数点実行リソースを有する請求項2に記載の装置。
  6. 前記CPUは、前記GPUによって使用される整数実行リソースを有する請求項2に記載の装置。
  7. 前記GPUにスケジュールされる命令が、前記CPUに移動され、前記移動された命令の結果が、前記GPUに転送される請求項1に記載の装置。
  8. 前記CPUにスケジュールされる命令が、前記GPUに移動され、前記移動された命令の結果が、前記CPUに転送される請求項1に記載の装置。
  9. 中央処理演算装置(CPU)と
    前記CPUに連結されたグラフィックスプロセッシングユニット(GPU)と、
    前記CPU及び前記GPUの実行リソースを共有するためのロジックと、
    前記CPU又は前記GPUによって使用されるシステムメモリと
    を備えるシステム。
  10. 前記CPUと前記GPUとの間でページ情報を通信するためのロジックをさらに備える請求項9に記載のシステム。
  11. 前記ロジックは、前記CPU及び前記GPUに共有される情報を格納する共有メモリリソースを有する請求項9に記載のシステム。
  12. 前記ロジックは、情報共有を促進するための、前記CPUと前記GPUとの間のダイレクトリンクを有する請求項9に記載のシステム。
  13. 前記GPUは、前記CPUによって使用される浮動小数点実行リソースを有する請求項10に記載のシステム。
  14. 前記CPUは、前記GPUによって使用される整数実行リソースを有する請求項10に記載のシステム。
  15. 前記GPUにスケジュールされる命令が、前記CPUに移動され、前記移動された命令の結果が、前記GPUに転送される請求項9に記載のシステム。
  16. 前記CPUにスケジュールされる命令が、前記GPUに移動され、前記移動された命令の結果が、前記CPUに転送される請求項9に記載のシステム。
  17. 中央処理演算装置(CPU)と、
    前記CPUに連結されたグラフィックスプロセッシングユニット(GPU)と、
    前記CPU及び前記GPUの実行リソースを共有するためのロジックと、
    前記CPU及び前記GPUに連結され、命令をデコードするデコードロジックと、
    前記命令を格納する命令キャッシュと、
    前記命令をスケジュールするスケジューラロジックと
    を備えるプロセッサ。
  18. 前記CPUと前記GPUとの間でページ情報を通信するためのロジックをさらに備える請求項17に記載のプロセッサ。
  19. 前記ロジックは、前記CPU及び前記GPUに共有される情報を格納する共有メモリリソースを有する請求項17に記載のプロセッサ。
  20. 前記ロジックは、情報共有を促進するための、前記CPUと前記GPUとの間のダイレクトリンクを有する請求項17に記載のプロセッサ。
  21. 前記GPUは、前記CPUによって使用される浮動小数点実行リソースを有する請求項19に記載のプロセッサ。
  22. 前記CPUは、前記GPUによって使用される整数実行リソースを有する請求項19に記載のプロセッサ。
  23. 前記GPUにスケジュールされる命令が、前記CPUに移動され、前記移動された命令の結果が、前記GPUに転送される請求項17に記載のプロセッサ。
  24. 前記CPUにスケジュールされる命令が、前記GPUに移動され、前記移動された命令の結果が、前記CPUに転送される請求項17に記載のプロセッサ。
  25. 前記スケジューラロジックは、整数命令をスケジュールする第1のスケジューラロジックと、浮動小数点命令をスケジュールする第2のスケジューラロジックとを有する請求項17に記載のプロセッサ。
  26. 前記CPUと前記GPUとが、前記第2のスケジューラロジックを共有する請求項25に記載のプロセッサ。
  27. 命令を、実行リソースの第1セットを有する第1のプロセッサにスケジュールする段階と、
    前記命令を、実行リソースの第2セットを有する第2のプロセッサに移動させる段階と、
    前記第2のプロセッサにおいて前記命令を実行して得られた情報を、前記第1のプロセッサに転送する段階とを備える方法。
  28. 前記第1のプロセッサは、中央演算処理装置(CPU)であり、前記第2のプロセッサは、グラフィックスプロセッシングユニット(GPU)である請求項27に記載の方法。
  29. 前記第1のプロセッサは、GPUであり、前記第2のプロセッサは、CPUである請求項27に記載の方法。
  30. 前記第1のプロセッサと前記第2のプロセッサとの間で、ページング情報を通信する段階をさらに備える請求項27に記載の方法。
JP2013228304A 2009-12-31 2013-11-01 Cpu及びgpuの間のリソース共有 Active JP5918739B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/655,577 2009-12-31
US12/655,577 US8669990B2 (en) 2009-12-31 2009-12-31 Sharing resources between a CPU and GPU

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010279280A Division JP5484305B2 (ja) 2009-12-31 2010-12-15 Cpu及びgpuの間のリソース共有

Publications (2)

Publication Number Publication Date
JP2014053033A true JP2014053033A (ja) 2014-03-20
JP5918739B2 JP5918739B2 (ja) 2016-05-18

Family

ID=44186959

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010279280A Expired - Fee Related JP5484305B2 (ja) 2009-12-31 2010-12-15 Cpu及びgpuの間のリソース共有
JP2013228304A Active JP5918739B2 (ja) 2009-12-31 2013-11-01 Cpu及びgpuの間のリソース共有

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2010279280A Expired - Fee Related JP5484305B2 (ja) 2009-12-31 2010-12-15 Cpu及びgpuの間のリソース共有

Country Status (5)

Country Link
US (2) US8669990B2 (ja)
JP (2) JP5484305B2 (ja)
CN (1) CN102117260B (ja)
DE (1) DE102010055267A1 (ja)
TW (2) TWI620128B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017007044A1 (ko) * 2015-07-07 2017-01-12 삼성전자 주식회사 신호 처리 장치 및 방법

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US8723877B2 (en) 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects
US9519943B2 (en) * 2010-12-07 2016-12-13 Advanced Micro Devices, Inc. Priority-based command execution
US8830245B2 (en) * 2010-12-14 2014-09-09 Amazon Technologies, Inc. Load balancing between general purpose processors and graphics processors
GB201103698D0 (en) * 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphics processing
GB201103699D0 (en) 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphic processing
CN102323917B (zh) * 2011-09-06 2013-05-15 中国人民解放军国防科学技术大学 一种基于共享内存实现多进程共享gpu的方法
US20130159630A1 (en) * 2011-12-20 2013-06-20 Ati Technologies Ulc Selective cache for inter-operations in a processor-based environment
WO2013095475A1 (en) * 2011-12-21 2013-06-27 Intel Corporation Apparatus and method for memory-hierarchy aware producer-consumer instruction
US9058201B2 (en) * 2011-12-28 2015-06-16 Intel Corporation Managing and tracking thread access to operating system extended features using map-tables containing location references and thread identifiers
WO2013119226A1 (en) * 2012-02-08 2013-08-15 Intel Corporation Dynamic cpu gpu load balancing using power
US9430807B2 (en) * 2012-02-27 2016-08-30 Qualcomm Incorporated Execution model for heterogeneous computing
US10255104B2 (en) * 2012-03-29 2019-04-09 Advanced Micro Devices, Inc. System call queue between visible and invisible computing devices
CN108681519B (zh) * 2012-03-30 2022-04-08 英特尔公司 用于从多线程发送请求至加速器的机制
US9864638B2 (en) * 2012-06-22 2018-01-09 Intel Corporation Techniques for accessing a graphical processing unit memory by an application
CN102890643B (zh) * 2012-07-26 2015-01-21 上海交通大学 基于应用效果即时反馈的显卡虚拟化下的资源调度系统
US9009419B2 (en) * 2012-07-31 2015-04-14 Advanced Micro Devices, Inc. Shared memory space in a unified memory model
US8938602B2 (en) * 2012-08-02 2015-01-20 Qualcomm Incorporated Multiple sets of attribute fields within a single page table entry
US9319254B2 (en) * 2012-08-03 2016-04-19 Ati Technologies Ulc Methods and systems for processing network messages in an accelerated processing device
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US8959298B2 (en) 2012-12-10 2015-02-17 Qualcomm Incorporated System and method for managing performance of a computing device having dissimilar memory types
US9110795B2 (en) 2012-12-10 2015-08-18 Qualcomm Incorporated System and method for dynamically allocating memory in a memory subsystem having asymmetric memory components
US9092327B2 (en) 2012-12-10 2015-07-28 Qualcomm Incorporated System and method for allocating memory to dissimilar memory devices using quality of service
WO2014108743A1 (en) * 2013-01-09 2014-07-17 Freescale Semiconductor, Inc. A method and apparatus for using a cpu cache memory for non-cpu related tasks
CN103164839B (zh) * 2013-03-07 2019-06-21 华为技术有限公司 一种绘图方法、装置及终端
KR101442643B1 (ko) * 2013-04-30 2014-09-19 전자부품연구원 Cpu와 gpu 간의 협업 시스템 및 그 방법
CN105892931A (zh) * 2014-05-16 2016-08-24 上海京知信息科技有限公司 一种支持基于智能闪存缓存的异构cpu-gpu系统架构的操作系统原型
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
JP2016162303A (ja) * 2015-03-03 2016-09-05 株式会社東芝 無線通信装置
US9704217B2 (en) * 2015-04-20 2017-07-11 Intel Corporation Apparatus and method for non-uniform frame buffer rasterization
JP6345627B2 (ja) * 2015-05-20 2018-06-20 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置および情報処理方法
CN107124286B (zh) * 2016-02-24 2020-05-26 深圳市知穹科技有限公司 一种海量数据高速处理、交互的系统及方法
EP3436929A4 (en) * 2016-06-17 2019-10-16 Hewlett-Packard Development Company, L.P. COMMON MACHINE LEARNING STRUCTURE
US10310908B2 (en) 2016-08-19 2019-06-04 International Business Machines Corporation Dynamic usage balance of central processing units and accelerators
US10580189B2 (en) * 2016-09-16 2020-03-03 Intel Corporation Apparatus and method for optimized ray tracing
US10203988B2 (en) 2016-10-13 2019-02-12 International Business Machines Corporation Adaptive parallelism of task execution on machines with accelerators
KR102657587B1 (ko) * 2016-11-21 2024-04-15 삼성전자주식회사 커브 렌더링을 수행하는 방법 및 장치.
US10776144B2 (en) 2017-01-08 2020-09-15 International Business Machines Corporation Address space management with respect to a coherent accelerator processor interface architecture
US10459817B2 (en) * 2017-01-18 2019-10-29 International Business Machines Corporation Evaluating performance improvement of executing instructions in a first processor over execution on a second processor
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11237872B2 (en) * 2017-05-23 2022-02-01 Kla-Tencor Corporation Semiconductor inspection and metrology systems for distributing job among the CPUs or GPUs based on logical image processing boundaries
US10685473B2 (en) * 2017-05-31 2020-06-16 Vmware, Inc. Emulation of geometry shaders and stream output using compute shaders
US10585703B2 (en) * 2017-06-03 2020-03-10 Apple Inc. Dynamic operation allocation for neural networks
US10552161B2 (en) 2017-06-21 2020-02-04 International Business Machines Corporation Cluster graphical processing unit (GPU) resource sharing efficiency by directed acyclic graph (DAG) generation
KR102403379B1 (ko) * 2017-09-12 2022-06-02 주식회사 코코링크 다중 gpu간 데이터 공유 방법
US10732694B2 (en) 2017-09-22 2020-08-04 Qualcomm Incorporated Power state control of a mobile device
CN109726005B (zh) * 2017-10-27 2023-02-28 伊姆西Ip控股有限责任公司 用于管理资源的方法、服务器系统和计算机可读介质
US10672095B2 (en) * 2017-12-15 2020-06-02 Ati Technologies Ulc Parallel data transfer to increase bandwidth for accelerated processing devices
JPWO2020045269A1 (ja) * 2018-08-28 2021-08-10 tonoi株式会社 システム、情報処理方法、及びプログラム
US11900157B2 (en) * 2018-09-19 2024-02-13 Intel Corporation Hybrid virtual GPU co-scheduling
WO2020080458A1 (ja) * 2018-10-19 2020-04-23 日本電信電話株式会社 データ処理システム、中央演算処理装置及びデータ処理方法
CN111127293B (zh) * 2018-10-31 2024-04-26 伊姆西Ip控股有限责任公司 用于处理数据的方法、设备和计算机程序产品
US20220180467A1 (en) 2019-03-15 2022-06-09 Intel Corporation Systems and methods for updating memory side caches in a multi-gpu configuration
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
CN113383310A (zh) 2019-03-15 2021-09-10 英特尔公司 矩阵加速器架构内的脉动分解
CN111030747B (zh) * 2019-11-22 2021-08-31 中国科学院国家空间科学中心 一种基于FPGA的SpaceFibre节点IP核
US11579942B2 (en) * 2020-06-02 2023-02-14 Vmware, Inc. VGPU scheduling policy-aware migration
CN112199149A (zh) * 2020-10-16 2021-01-08 维沃移动通信有限公司 界面渲染方法、装置及电子设备
US11947941B2 (en) 2021-08-24 2024-04-02 Red Hat, Inc. Dynamic computation offloading to graphics processing unit

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63271537A (ja) * 1987-04-28 1988-11-09 Seiko Epson Corp 割り込み制御装置
JP2004171234A (ja) * 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
JP2008536224A (ja) * 2005-04-05 2008-09-04 インテル コーポレイション シーケンサー・アドレス管理
JP2009205696A (ja) * 2009-06-15 2009-09-10 Hitachi Ltd マルチコアプロセッサ計算機の制御方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2845857B2 (ja) * 1997-04-01 1999-01-13 コナミ株式会社 画像の半透明表示装置,半透明表示方法,及びコンピュータプログラムを記録した機械読取り可能な記録媒体
JP2001067237A (ja) * 1999-08-25 2001-03-16 Nec Corp 計算機システム及びその処理方法
US6868481B1 (en) * 2000-10-31 2005-03-15 Hewlett-Packard Development Company, L.P. Cache coherence protocol for a multiple bus multiprocessor system
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US7777748B2 (en) * 2003-11-19 2010-08-17 Lucid Information Technology, Ltd. PC-level computing system with a multi-mode parallel graphics rendering subsystem employing an automatic mode controller, responsive to performance data collected during the run-time of graphics applications
US20050237329A1 (en) 2004-04-27 2005-10-27 Nvidia Corporation GPU rendering to system memory
US7490215B2 (en) * 2004-12-22 2009-02-10 Intel Corporation Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information
US7839854B2 (en) * 2005-03-08 2010-11-23 Thomas Alexander System and method for a fast, programmable packet processing system
US8341624B1 (en) * 2006-09-28 2012-12-25 Teradici Corporation Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine
US7769983B2 (en) 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US7818806B1 (en) * 2005-11-08 2010-10-19 Nvidia Corporation Apparatus, system, and method for offloading pattern matching scanning
JP2008097358A (ja) * 2006-10-12 2008-04-24 Toyota Infotechnology Center Co Ltd 分散処理システム
JP2008234191A (ja) * 2007-03-19 2008-10-02 Toshiba Corp ハードウエアモニタ管理装置及びハードウエアモニタ機能の実行方法
KR100864834B1 (ko) * 2007-04-30 2008-10-23 한국전자통신연구원 메모리 재할당을 이용한 다중 프로세서 간의 데이터 전송장치 및 방법
US8861591B2 (en) * 2007-05-11 2014-10-14 Advanced Micro Devices, Inc. Software video encoder with GPU acceleration
US8230425B2 (en) 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
US20090160863A1 (en) * 2007-12-21 2009-06-25 Michael Frank Unified Processor Architecture For Processing General and Graphics Workload
KR101520067B1 (ko) * 2008-10-02 2015-05-13 삼성전자 주식회사 윈도우 시스템을 구현한 그래픽 처리 방법 및 그 장치
CN101526934A (zh) * 2009-04-21 2009-09-09 浪潮电子信息产业股份有限公司 一种gpu与cpu复合处理器的组建方法
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US8723877B2 (en) 2010-05-20 2014-05-13 Apple Inc. Subbuffer objects
CN102323917B (zh) 2011-09-06 2013-05-15 中国人民解放军国防科学技术大学 一种基于共享内存实现多进程共享gpu的方法
WO2013119226A1 (en) 2012-02-08 2013-08-15 Intel Corporation Dynamic cpu gpu load balancing using power

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63271537A (ja) * 1987-04-28 1988-11-09 Seiko Epson Corp 割り込み制御装置
JP2004171234A (ja) * 2002-11-19 2004-06-17 Toshiba Corp マルチプロセッサシステムにおけるタスク割り付け方法、タスク割り付けプログラム及びマルチプロセッサシステム
JP2008536224A (ja) * 2005-04-05 2008-09-04 インテル コーポレイション シーケンサー・アドレス管理
JP2009205696A (ja) * 2009-06-15 2009-09-10 Hitachi Ltd マルチコアプロセッサ計算機の制御方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG200900586008; 深谷猛ほか: '正方行列向け特異値分解のCUDAによる高速化' 情報処理学会論文誌 論文誌トランザクション 平成21年度▲1▼ [CD-ROM] 第2巻 第2号, 200907, 98-109頁, 社団法人情報処理学会 *
JPN6012044202; 深谷猛ほか: '正方行列向け特異値分解のCUDAによる高速化' 情報処理学会論文誌 論文誌トランザクション 平成21年度▲1▼ [CD-ROM] 第2巻 第2号, 200907, 98-109頁, 社団法人情報処理学会 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017007044A1 (ko) * 2015-07-07 2017-01-12 삼성전자 주식회사 신호 처리 장치 및 방법
KR20180015176A (ko) * 2015-07-07 2018-02-12 삼성전자주식회사 신호 처리 장치 및 방법
KR102001222B1 (ko) * 2015-07-07 2019-07-17 삼성전자주식회사 신호 처리 장치 및 방법
US10956154B2 (en) 2015-07-07 2021-03-23 Samsung Electronics Co., Ltd. Signal processing device and method

Also Published As

Publication number Publication date
US20140078159A1 (en) 2014-03-20
JP5918739B2 (ja) 2016-05-18
JP2011175624A (ja) 2011-09-08
US8669990B2 (en) 2014-03-11
JP5484305B2 (ja) 2014-05-07
US20110157195A1 (en) 2011-06-30
TW201145172A (en) 2011-12-16
DE102010055267A1 (de) 2011-07-28
CN102117260B (zh) 2017-06-27
CN102117260A (zh) 2011-07-06
TW201614493A (en) 2016-04-16
TWI620128B (zh) 2018-04-01
US10181171B2 (en) 2019-01-15
TWI520071B (zh) 2016-02-01

Similar Documents

Publication Publication Date Title
JP5918739B2 (ja) Cpu及びgpuの間のリソース共有
US8239938B2 (en) Centralized device virtualization layer for heterogeneous processing units
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
US9606808B2 (en) Method and system for resolving thread divergences
US20220351325A1 (en) Page faulting and selective preemption
US8619087B2 (en) Inter-shader attribute buffer optimization
US9710306B2 (en) Methods and apparatus for auto-throttling encapsulated compute tasks
US9069609B2 (en) Scheduling and execution of compute tasks
US20130166882A1 (en) Methods and apparatus for scheduling instructions without instruction decode
US20110072177A1 (en) Virtual channels for effective packet transfer
US9626191B2 (en) Shaped register file reads
US8195858B1 (en) Managing conflicts on shared L2 bus
JP2013178823A (ja) パーティションフリーマルチソケットメモリシステムアーキテクチャ
US10152329B2 (en) Pre-scheduled replays of divergent operations
US9442759B2 (en) Concurrent execution of independent streams in multi-channel time slice groups
US8321618B1 (en) Managing conflicts on shared L2 bus
US9262348B2 (en) Memory bandwidth reallocation for isochronous traffic
US20180267804A1 (en) Hints for Shared Store Pipeline and Multi-Rate Targets
US9665920B1 (en) Simultaneous execution of compute and graphics applications
KR101131376B1 (ko) 파션-프리 멀티-소켓 메모리 시스템 아키텍쳐

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150617

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151125

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: 20160209

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160309

R155 Notification before disposition of declining of application

Free format text: JAPANESE INTERMEDIATE CODE: R155

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160408

R150 Certificate of patent or registration of utility model

Ref document number: 5918739

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250