Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5170782B2 - ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ - Google Patents
[go: Go Back, main page]

JP5170782B2 - ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ - Google Patents

ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ Download PDF

Info

Publication number
JP5170782B2
JP5170782B2 JP2009278608A JP2009278608A JP5170782B2 JP 5170782 B2 JP5170782 B2 JP 5170782B2 JP 2009278608 A JP2009278608 A JP 2009278608A JP 2009278608 A JP2009278608 A JP 2009278608A JP 5170782 B2 JP5170782 B2 JP 5170782B2
Authority
JP
Japan
Prior art keywords
access
virtualization
operating system
hardware
memory
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.)
Active
Application number
JP2009278608A
Other languages
English (en)
Other versions
JP2010186465A (ja
Inventor
ダブリュ. シメラル ブラッド
ブライアン コックス マイケル
Original Assignee
エヌヴィディア コーポレイション
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 エヌヴィディア コーポレイション filed Critical エヌヴィディア コーポレイション
Publication of JP2010186465A publication Critical patent/JP2010186465A/ja
Application granted granted Critical
Publication of JP5170782B2 publication Critical patent/JP5170782B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision of facilities of other operating environments, e.g. WINE
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Bus Control (AREA)

Description

[0001]本発明は、一般にデバイス仮想化の分野に関し、より詳細には、ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤに関する。
[0002]従来のコンピュータシステムでは、中央処理装置(CPU)は、複数のオペレーティングシステム(OS)を実行することができる。それらの相異なるOSの動作を調整するために、ハイパーバイザとして知られるソフトウェアプログラムがしばしば使用される。ハイパーバイザは、各OSからそのコンピュータシステム内に含まれる様々なハードウェアに送られる入出力(I/O)アクセス動作(アクセス)を管理する。これらのハードウェアデバイスは、とりわけメモリモジュール、コンピュータモニタ、ハードディスクドライブ、CD−ROMドライブを含むことができる。ハイパーバイザは、ハードウェアデバイスの仮想インスタンスを作成するために使用することができる、「デバイス仮想化」として知られる技法を使用して、OSのそれぞれがハードウェアデバイスにアクセスすることを可能にする。ハードウェアデバイスは、「ソフトウェア仮想化」及び/又は「ハードウェア仮想化」を通じて仮想化することができる。
[0003]ソフトウェア(SW)仮想化が実装されているとき、ハイパーバイザは、ハードウェアデバイスのリソースを複数の「ゲスト物理リソース」に分割する。次いで、各ゲスト物理リソースを特定のOSに割り当てることができる。ハイパーバイザは、ゲスト物理リソースをOSにアドバタイズし、その結果、あるOSがあるハードウェアデバイスに関連付けられたゲスト物理リソースにアクセスしようと試みたとき、ハイパーバイザはそのアクセスをトラップし、そのOSがそのハードウェアデバイスにアクセスすることを許す前に正しいコンテキストがそのハードウェアデバイスに確実にロードされているようにすることができる。
[0004]ハードウェア(HW)仮想化が実装されているときは、各ハードウェアデバイスがそのHWデバイスの複数のインスタンスをアドバタイズし、その結果、各インスタンスに、そのハードウェアデバイスによって使用可能にされた最大量のリソースが割り振られる。次いで、各OSに、これらのインスタンスの1つが割り当てられる。ハイパーバイザは、どのOSが特定の仮想化デバイスにアクセスすることができるか判定することによって、OS間のアービタとして働く。HW仮想化はハードウェア内で実装されるため、ハイパーバイザは、特定の物理リソースが仮想化されていることに気づかない可能性がある。各HW仮想化デバイスは、他の仮想化デバイスとの競合を認識し、その物理リソースに対してアクションを起こす前に(たとえば、コンテキストを回復する、又はそのデバイスの仮想化インスタンスの1つ又は複数を無活動状態にすることによって)これらの競合を解決する。
[0005]SW仮想化及びHW仮想化は、単一のプロセッサが単一のハイパーバイザ上の複数のOSを実行するとき良好に機能する。しかし、複数のOSを実行する複数のCPUを含む、より多様なプロセッサトポロジは、SW仮想化及び/又はHW仮想化にそれほどなじまない。たとえば、マルチCPUコンピュータシステムは、ハードウェアデバイスの同じグループにそれぞれ接続されているいくつかのCPUを含むことができる。いくつかのハードウェアデバイスはハードウェア内又はソフトウェア内で仮想化することができず、したがってそのコンピュータシステムは、そのハードウェアデバイス用のリソースを1つしか含まず、そのリソースを2つのCPUによって共用することができない。SW仮想化をマルチCPUコンピュータシステム内に実装することにも問題がある。というのは、十分に使用されていないSW仮想化ハードウェアデバイスにOSがアクセスしたいと望むとき、ボトルネックが生じる可能性があるからである。ハードウェアデバイスのリソースがゲスト物理リソースに分割されるため、各OSは、ハードウェアデバイスのリソース全部のうちの一部分を使用することができるにすぎない。1つのOSだけがハードウェアデバイスにアクセスしようと試みているとき、そのOSは、ゲスト物理リソースによって割り振られているリソースより多くのリソースを必要とすることがある。リソースボトルネックは、ハードウェアデバイスのリソースが依然として使用可能であり、しかしそれらが他のゲスト物理リソースに割り振られているため、OSがこれらのリソースを使用することができないために生じる。
[0006]HW仮想化をマルチCPUコンピュータシステム内に実装することにも問題がある。というのは、仮想化デバイスを、各CPU上で動作する各OSについて作成することが必要になるからである。HW仮想化を各ハードウェアデバイスについて実装することは、コンピュータシステム内でアドバタイズされるリソースを著しく増大することになり、特定のハードウェアデバイスによって提供されるリソースを特定のOSが使用することを必要としない可能性があるにもかかわらず、各ハードウェアデバイスを各OSについて強制的に仮想化することになる。
[0007]したがって、当技術分野では、マルチCPUコンピュータシステム内でハードウェアデバイスを仮想化するための改善された技法が依然として求められている。
[0008]本発明の実施形態は、コンピュータシステム内に含まれるハードウェアデバイスに対するオペレーティングシステムアクセスを実現するための方法を提供する。この方法は、コンピュータシステム内に含まれる1つ又は複数のハードウェアデバイス及び1つ又は複数の仮想化デバイスを列挙するステップであり、第1のハードウェアデバイスに関連付けられたリソースがゲスト物理リソースに分割されていると決定し、それによりソフトウェア(SW)仮想化デバイスを作成するステップと、第2のハードウェアデバイスに関連付けられたリソースの複数のインスタンスが第2のハードウェアデバイスによってアドバタイズされていると決定し、それによりハードウェア(HW)仮想化デバイスを作成するステップとを含む、ステップと、複数のオペレーティングシステムのうちのどのオペレーティングシステムがSW仮想化デバイスにアクセスすることを許可されるか指定する第1の許可リストを生成するステップと、複数のオペレーティングシステムのうちのどのオペレーティングシステムがHW仮想化デバイスにアクセスすることを許可されるか指定する第2の許可リストを生成するステップと、SW仮想化デバイスに関連付けられた第1のアドレス空間を、第1の許可リスト内に含まれる各オペレーティングシステムに関連付けられたアドレス空間内にそれぞれがマップする第1のセットの仮想アドレスマップを生成するステップと、HW仮想化デバイスに関連付けられた第2のアドレス空間を、第2の許可リスト内に含まれる各オペレーティングシステムに関連付けられたアドレス空間内にそれぞれがマップする第2のセットの仮想アドレスマップを生成するステップと、複数のオペレーティングシステムのそれぞれからのアクセス要求をアービトレーション(arbitrate:調停)するステップであり、第1のセットの仮想アドレスマップに基づいて、第1の許可リスト内に含まれるオペレーティングシステムがSW仮想化デバイスを使用してアクセス動作を実施することを可能にするステップと、第2のセットの仮想アドレスマップに基づいて、第2の許可リスト内に含まれるオペレーティングシステムがHW仮想化デバイスを使用してアクセス動作を実施することを可能にするステップとを含む、ステップとを含む。
[0009]有利には、本発明の実施形態は、デバイス仮想化を、複数のCPUを含むコンピューティングシステムに延長する。CDVLは、各CPU上で実行されるOSが、そのコンピューティングシステムに結合されている列挙デバイスの共通プールにアクセスすることを可能にする。CDVLをSW仮想化及びHW仮想化と共に使用し、専用の仮想化サポートを、そのようなサポートを必要とするOSに対して提供することができる。
[0010]本発明の上述の特徴を詳細に理解することができるように、上記で簡単に述べた本発明について、添付の図面にそれらの一部が示されている実施形態を参照してより具体的に述べることができる。しかし、添付の図面は、本発明の典型的な実施形態を示しているにすぎず、したがって、本発明には他の均等に有効な実施形態の余地があり得るため、その範囲を限定するものとみなすべきでないことに留意されたい。
本発明の1つ又は複数の態様を実施するように構成されたコンピュータシステムを示すブロック図である。 本発明の一実施形態による、図1のコンピュータシステムのための並列処理サブシステムのブロック図である。 本発明の一実施形態による、図2の並列処理ユニット(PPU)の1つの中の一般処理クラスタ(GPC)のブロック図である。 本発明の一実施形態による、図2のPPUの1つの中のパーティションユニットのブロック図である。 本発明の一実施形態による、集中デバイス仮想化レイヤ(CDVL)を実装するように構成されたコンピュータシステムの概念図である。 本発明の他の実施形態による、集中デバイス仮想化レイヤ(CDVL)を実装するように構成されたコンピュータシステムの概念図である。 本発明の一実施形態による、CDVLを実装するように構成されたマルチプロセッサコンピュータシステムの概念図である。 本発明の一実施形態による、CDVLをコンピュータシステム上で開始するための方法ステップの流れ図である。 本発明の一実施形態による、CDVLをコンピュータシステム上で実施するための方法ステップの流れ図である。
[0019]以下の説明では、本発明をより完全に理解するために、多数の特定の詳細について述べる。しかし、これらの特定の詳細の1つ又は複数がなくても本発明を実施することができることが、当業者には明らかになるであろう。他の場合には、本発明を不明瞭にするのを回避するために、周知の特徴は述べられていない。
システム概要
[0020]図1は、本発明の1つ又は複数の態様を実施するように構成されたコンピュータシステム100を示すブロック図である。コンピュータシステム100は、メモリブリッジ105を通るバス経路を介して通信する中央処理装置(CPU)102とシステムメモリ104を含む。メモリブリッジ105は、図1に示されているように、CPU102内に集積されてもよい。別法として、メモリブリッジ105は、バスを介してCPU102に接続されている従来のデバイス、たとえばノースブリッジ(Northbridge)チップとすることができる。メモリブリッジ105は、通信経路106(たとえば、ハイパートランスポート(HyperTransport)リンク)を介してI/O(入出力)ブリッジ107に接続されている。I/Oブリッジ107は、たとえばサウスブリッジ(Southbridge)チップとすることができ、1つ又は複数のユーザ入力デバイス108(たとえば、キーボード、マウス)からユーザ入力を受け取り、その入力を、経路106及びメモリブリッジ105を介してCPU102に転送する。並列処理サブシステム112は、バス又は他の通信経路113(たとえば、PCIエクスプレス(PCI Express)、AGP(Accelerated Graphics Port)、又はハイパートランスポートリンク)を介してメモリブリッジ105に結合され、一実施形態では、並列処理サブシステム112は、画素をディスプレイデバイス110(従来のCRT又はLCDベースのモニタ)に送達するグラフィックサブシステムである。システムディスク114もまた、I/Oブリッジ107に接続れている。スイッチ116は、I/Oブリッジ107と、ネットワークアダプタ118及び様々なアドインカード120、121など他の構成要素との間の接続を実現する。USB又は他のポート接続、CDドライブ、DVDドライブ、フィルム記録デバイスなどを含む他の構成要素(明示的に図示せず)をもI/Oブリッジ107に接続することができる。図1の様々な構成要素を相互接続する通信経路は、PCI(Peripheral Component Interconnect)、PCIエクスプレス(PCI−E)、AGP(Accelerated Graphics Port)、ハイパートランスポート、又は(1つ又は複数の)任意の他のバス若しくはポイント・トゥ・ポイント通信プロトコルなど、任意の好適なプロトコルを使用して実装することができ、異なるデバイス間の接続は、当技術分野で知られているように、異なるプロトコルを使用することができる。
[0021]一実施形態では、並列処理サブシステム112は、たとえばビデオ出力回路を含めて、グラフィック及びビデオ処理に最適化された回路を組み込んでおり、グラフィック処理装置(GPU)を構成する。他の実施形態では、並列処理サブシステム112は、汎用処理に最適化された回路を組み込んでおり、一方、本明細書でより詳細に述べる、基礎となるコンピュータアーキテクチャを保存している。他の実施形態では、並列処理サブシステム112は、メモリブリッジ105、CPU102、及びI/Oブリッジ107など、1つ又は複数の他のシステム要素と一体化され、システム・オン・チップ(SoC)を形成することができる。
[0022]本明細書に示されているシステムは例示的なものであること、また変形及び修正が可能であることを理解されたい。望むなら、ブリッジの数及び構成を含む接続トポロジを修正することができる。たとえば、いくつかの実施形態では、システムメモリ104は、ブリッジを通るのではなく、直接CPU102に接続され、他のデバイスは、メモリブリッジ105及びCPU102を介してシステムメモリ104と通信する。他の代替のトポロジでは、並列処理サブシステム112は、メモリブリッジ105にではなく、I/Oブリッジ107に、又は直接CPU102に接続される。他の実施形態では、CPU102、I/Oブリッジ107、並列処理サブシステム112、及びメモリブリッジ105のうちの1つ又は複数が、1つ又は複数のチップ内に集積されてもよい。本明細書に示されている特定の構成要素は任意選択であり、たとえば任意の数のアドインカード又は周辺機器がサポートされる可能性がある。いくつかの実施形態では、スイッチ116が省略され、ネットワークアダプタ118及びアドインカード120、121は、直接I/Oブリッジ107に接続する。
[0023]図2は、本発明の一実施形態による並列処理サブシステム112を示す。図では、並列処理サブシステム112は1つ又は複数の並列処理ユニット(PPU)を含み、PPUのそれぞれは、ローカル並列処理(PP)メモリ204に結合されている。一般に、並列処理サブシステムは、U個のPPUを含み、ただしU≧1である。(ここで、同様のオブジェクトの複数のインスタンスは、そのオブジェクトを識別する符号と、必要な場合そのインスタンスを識別する、括弧で括られた番号とで示される。)PPU202及び並列処理メモリ204は、プログラマブルプロセッサ、特定用途向け集積回路(ASIC)、又はメモリデバイスなど、1つ又は複数の集積回路デバイスを使用して、或いは任意の他の、技術的に可能な形で実装することができる。
[0024]図1を再び参照すると、いくつかの実施形態では、並列処理サブシステム112内のPPUの一部又はすべては、CPU102及び/又はシステムメモリ104によって供給されたグラフィックデータからピクセルデータを生成することに関連する様々なタスクを実施するように構成することができる、レンダリングパイプラインを有するグラフィックプロセッサであり、(たとえば従来のフレームバッファを含めてグラフィックメモリとして使用することができる)ローカル並列処理メモリ204と対話しピクセルデータを記憶及び更新し、ピクセルデータをディスプレイデバイス110に送達する、などを行う。いくつかの実施形態では、並列処理サブシステム112は、グラフィックプロセッサとして動作する1つ又は複数のPPU202と、汎用計算に使用される1つ又は複数の他のPPU202とを含むことができる。これらのPPUは、同一でも異なっていてもよく、それ自体の専用の(1つ又は複数の)並列処理メモリデバイスを有していても、専用の並列処理メモリデバイスを有していなくてもよい。1つ又は複数のPPU202がデータをディスプレイデバイス110に出力することも、各PPU202がデータを1つ又は複数のディスプレイデバイス110に出力することもできる。
[0025]動作時には、CPU102がコンピュータシステム100のマスタプロセッサであり、他のシステム構成要素の動作を制御及び調整する。具体的には、CPU102は、PPU202の動作を制御するコマンドを発行する。いくつかの実施形態では、CPU102は、システムメモリ104、並列処理メモリ204、又はCPU102からもPPU202からもアクセス可能な別の記憶ロケーションに位置することができるコマンドバッファ(図1にも図2にも明示的に図示せず)に、各PPU202に対するコマンドのストリームを書き込む。PPU202は、コマンドバッファからコマンドストリームを読み取り、次いで、CPU102の動作に対して同期してコマンドを実行する。CPU102はまた、PPU202がコマンドバッファ内のコマンドに応答して読み取ることができるデータバッファを作成することができる。各コマンドバッファ及びデータバッファは、PPU202のそれぞれが読み取ることができる。
[0026]次に、図2に戻ると、各PPU202は、通信経路113を介してコンピュータシステム100の残りの部分と通信するI/O(入出力)ユニット205を含み、通信経路113は、メモリブリッジ105に(又は、代替の一実施形態では直接CPU102に)接続する。コンピュータシステム100の残りの部分に対するPPU202の接続もまた、変わる可能性がある。いくつかの実施形態では、並列処理サブシステム112は、コンピュータシステム100の拡張スロット内に挿入することができるアドインカードとして実装される。他の実施形態では、PPU202を、単一のチップ上で、メモリブリッジ105又はI/Oブリッジ107など、バスブリッジと一体化することができる。他の実施形態では、PPU202の一部の要素又はすべての要素が、単一のチップ上でCPU102と一体化されてもよい。
[0027]一実施形態では、通信経路113は、当技術分野で知られているように、専用のレーンが各PPU202に割り振られるPCI−Eリンクである。他の通信経路を使用することもできる。I/Oユニット205は、通信経路113上で送るためにパケット(又は他の信号)を生成し、また、通信経路113から着信パケット(又は他の信号)すべてを受け取り、それらの着信パケットをPPU202の適切な構成要素に向けて送る。たとえば、処理タスクに関連するコマンドを、ホストインターフェース206に向けて送ることができ、一方、メモリ動作(たとえば、並列処理メモリ204から読み取ること、又はそこに書き込むこと)に関連するコマンドを、メモリクロスバーユニット210に向けて送ることができる。ホストインターフェース206が各コマンドバッファを読み取り、そのコマンドバッファによって指定されたワーク(work)をフロントエンド212に出力する。
[0028]各PPU202は、高度に並列化された処理アーキテクチャを実装することが有利である。詳細に示されているように、PPU202(0)は、C個の一般処理クラスタ(GPC)208を含む処理クラスタアレイ230を含み、ただしC≧1である。各GPC208は、各スレッドがプログラムのインスタンスである多数(たとえば、数百又は数千)のスレッドを同時に実行することが可能である。様々な応用例では、様々なタイプのプログラムを処理するために、又は様々なタイプの計算を実施するために、様々なGPC208を割り振ることができる。たとえば、グラフィック応用例では、第1のセットのGPC208が、テッセレーション演算を実施するように、またパッチ用のプリミティブトポロジを生成するように割り振られ、第2のセットのGPC208が、テッセレーションシェーディングを実施し、それらのプリミティブトポロジに関するパッチパラメータを評価するように、また頂点位置及び他の頂点毎の属性を決定するように割り振られることがある。GPC208の割振りは、プログラム又は計算のタイプごとに生じるワークロードによって変わることがある。別法として、GPC208は、異なる処理タスク間で切り替えるためにタイムスライス方式を使用して処理タスクを実施するように割り振られてもよい。
[0029]GPC208は、実行すべき処理タスクを、ワーク分配ユニット200を介して受け取り、ワーク分配ユニット200は、処理タスクを規定するコマンドをフロントエンドユニット212から受け取る。処理タスクは、処理すべきデータ、たとえばサーフェス(パッチ)データ、プリミティブデータ、頂点データ、及び/又はピクセルデータに対するポインタ、並びに状態パラメータ、及びそのデータをどのように処理すべきか(たとえば、どのプログラムを実行すべきか)規定するコマンドを含む。ワーク分配ユニット200は、処理タスクに対応するポインタをフェッチするように構成されても、ポインタをフロントエンド212から受け取っても、データをフロントエンド212から直接受け取ってもよい。いくつかの実施形態では、インデックスが、アレイ内のデータのロケーションを指定する。フロントエンド212は、コマンドバッファによって指定された処理が開始される前に、GPC208が有効な状態に、確実に構成されるようにする。
[0030]ワーク分配ユニット200は、処理するためにタスクを複数のGPC208に送ることが可能な頻度でタスクを出力するように構成することができる。本発明のいくつかの実施形態では、GPC208の諸部分が、異なるタイプの処理を実施するように構成される。たとえば、第1の部分は、頂点シェーディング及びトポロジ生成を実施するように構成することができ、第2の部分は、テッセレーション及びジオメトリシェーディングを実施するように構成することができ、第3の部分は、画面空間内のピクセルシェーディングを実施し、レンダリングされた画像を生成するように構成することができる。異なるタイプの処理タスクを実施するためにGPC208の諸部分を割り振ることができることにより、これらの異なるタイプの処理タスクによって生成されるデータの任意の拡張及び収縮が効率的に対処される。GPC208によって生成される中間データをバッファし、下流のGPC208によってデータが受け入れられる速度が、上流のGPC208によってデータが生成される速度より遅れる場合、GPC208間でその中間データが最小限のストールで送られることを可能にすることができる。
[0031]メモリインターフェース214は、並列処理メモリ204の一部分にそれぞれ結合されるD個のメモリパーティションユニットに区分されてもよく、ただしD≧1である。並列処理メモリ204の各部分は、一般に1つ又は複数のメモリデバイス(たとえば、DRAM220)を含む。DRAM220は、他の好適な記憶デバイスと置き換えることができ、概して従来の設計のものとすることができることを、当業者なら理解するであろう。したがって、詳細な説明は省略する。フレームバッファ又はテクスチャマップなどレンダターゲットを、複数のDRAM220にわたって記憶することができ、パーティションユニット215が各レンダターゲットの諸部分を並列で書き込み、並列処理メモリ204の使用可能な帯域幅を効率的に使用することを可能にする。
[0032]GPC208のいずれか1つは、並列処理メモリ204内のパーティションユニット215のいずれかに書き込もうとするデータを処理することができる。クロスバーユニット210は、各GPC208の出力をいずれかのパーティションユニット214の入力に、又はさらに処理するために別のGPC208にルーティング(route:経路指定)するように構成される。GPC208は、クロスバーユニット210を通じてメモリインターフェース214と通信し、様々な外部メモリデバイスから読み取る、又はそれらに書き込む。一実施形態では、I/Oユニット205と通信するためのメモリインターフェース214に対する接続、並びにローカル並列処理メモリ204に対する接続を有し、それにより、様々なGPC208内の処理コアがシステムメモリ104、又はPPU202にとってローカルでない他のメモリと通信することを可能にする。クロスバーユニット210は、仮想チャネルを使用し、GPC208とパーティションユニット215の間のトラフィックストリームを分離することができる。
[0033]この場合も、GPC208は、それだけには限らないが線形データ変換及び非線形データ変換、ビデオ及び/又はオーディオデータのフィルタリング、モデリング演算(たとえば、物理の法則を適用し、オブジェクトの位置、速度、及び他の属性を決定すること)、画像レンダリング演算(たとえば、テッセレーションシェーダプログラム、頂点シェーダプログラム、ジオメトリシェーダプログラム、及び/又はピクセルシェーダプログラム)などを含めて、多種多様な応用例に関する処理タスクを実行するようにプログラムすることができる。PPU202は、システムメモリ104及び/又はローカル並列処理メモリ204から内部(オンチップ)メモリ内にデータを転送し、結果データをシステムメモリ104及び/又はローカル並列処理メモリ204に書き戻すことができ、ここでそのようなデータは、CPU102又は別の並列処理サブシステム112を含めて他のシステム構成要素によるアクセスを受けることができる。
[0034]PPU202は、ローカルメモリがないことを含めて、任意の量のローカル並列処理メモリ204を備えることができ、ローカルメモリとシステムメモリを任意の組合せで使用することができる。たとえば、PPU202は、ユニファイドメモリアーキテクチャ(UMA)実施形態におけるグラフィックプロセッサとすることができる。そのような実施形態では、専用のグラフィック(並列処理)メモリが提供されない、又はほとんど提供されないことになり、PPU202は、システムメモリだけ、又はほぼシステムメモリだけを使用することになる。UMA実施形態では、PPU202は、ブリッジチップ又はプロセッサチップ内に集積することも、ブリッジチップ又は他の通信手段を介してPPU202をシステムメモリに接続する高速リンク(たとえば、PCI−E)をディスクリートチップとして備えることもできる。
[0035]上記で指摘したように、任意の数のPPU202を並列処理サブシステム112内に含むことができる。たとえば、複数のPPU202を単一のアドインカード上に設けることも、複数のアドインカードを通信経路113に接続することも、1つ又は複数のPPU202をブリッジチップ内に集積することもできる。マルチPPUシステム内のPPU202は、互いに同一でも異なっていてもよい。たとえば、様々なPPU202が、様々な数の処理コア、様々な量のローカル並列処理メモリなどを有する可能性がある。複数のPPU202が存在する場合、これらのPPUを並列で動作させ、単一のPPU202を用いて可能なスループットより高いスループットでデータを処理することができる。1つ又は複数のPPU202を組み込むシステムは、デスクトップパーソナルコンピュータ、ラップトップパーソナルコンピュータ、又はハンドヘルドパーソナルコンピュータ、サーバ、ワークステーション、ゲームコンソール、埋込みシステムなどを含めて、様々な構成及びフォームファクタで実施することができる。
処理クラスタアレイ概要
[0036]図3Aは、本発明の一実施形態による、図2のPPU202の1つの中のGPC208のブロック図である。各GPC208は、多数のスレッドを並列で実行するように構成することができ、ここで「スレッド」という用語は、入力データの特性のセットに対して実行する特定のプログラムのインスタンスを指す。いくつかの実施形態では、複数の独立した命令ユニットを用意することなしに多数のスレッドの並列実行をサポートするために、単一命令多重データ(SIMD)命令発行技法が使用される。他の実施形態では、GPC208のそれぞれの中の1組の処理エンジンに命令を発行するように構成された共通の命令ユニットを使用して、多数の、概して同期されたスレッドの並列実行をサポートするために、単一命令多重スレッド(SIMT)技法が使用される。処理エンジンすべてが一般に同一の命令を実行するSIMD実行状況とは異なり、SIMT実行は、相異なるスレッドが、所与のスレッドプログラムを通る分岐実行経路に、より容易に従うことを可能にする。SIMD処理状況がSIMT処理状況の機能上の部分集合を表すことを、当業者なら理解するであろう。
[0037]グラフィック応用例では、GPC208は、それだけには限らないがプリミティブセットアップ、ラスタ化、zカリングを含むことができる画面空間グラフィック処理機能を実施するためのプリミティブエンジンを実装するように構成することができる。プリミティブエンジンは、ワーク分配ユニット200から処理タスクを受け取り、その処理タスクが、プリミティブエンジンによって実施される演算を必要としないとき、その処理タスクは、プリミティブエンジンを経てパイプラインマネージャ305に渡される。GPC208の動作は、処理タスクをストリーミングマルチプロセッサ(SPM)310に分配するパイプラインマネージャ305を介して制御されることが有利である。パイプラインマネージャ305はまた、SPM310によって出力される処理済みデータのための宛先を指定することによってワーク分配クロスバー330を制御するように構成することができる。
[0038]一実施形態では、各GPC208は、M個のSPM310を含み、ただしM≧1であり、各SPM310は、1つ又は複数のスレッドグループを処理するように構成される。また、各SPM310は、パイプライン化することができる機能ユニット(たとえば、算術論理演算ユニットなど)の同一セットを含み、当技術分野で知られているように、前の命令が終わる前に新しい命令が発行されることを可能にすることが有利である。機能ユニットの任意の組合せを用意することができる。一実施形態では、機能ユニットは、整数演算及び浮動小数点演算(たとえば、加算及び乗算)、比較演算、ブール演算(AND、OR、XOR)、ビットシフティング、並びに様々な代数関数(たとえば、平面補間(planar interpolation)、三角関数、指数関数、対数関数など)を含めて、様々な演算をサポートしており、同じ機能ユニットハードウェアを利用し、様々な演算を実施することができる。
[0039]特定のGPC208に送られる命令列は、本明細書において先に規定したように、スレッドを構成し、SPM310内の複数の並列処理エンジン(図示せず)にわたる、いくつかの同時実行スレッドの集まりを、本明細書では「スレッドグループ」と称する。本明細書では、「スレッドグループ」は、様々な入力データに対して同じプログラムを同時実行するスレッドのグループを指し、グループの各スレッドは、SPM310内の異なる処理エンジンに割り当てられる。スレッドグループは、SPM310内の処理エンジンの数より少ないスレッドを含むことができ、その場合には、そのスレッドグループが処理されているサイクル中に、いくつかの処理エンジンがアイドルになる。また、スレッドグループは、SPM310内の処理エンジンの数より多いスレッドを含むことができ、その場合には、処理が複数のクロックサイクルにわたって行われることになる。各SPM310は最大G個のスレッドグループを同時にサポートすることができので、任意の所与の時に、G×M個のスレッドグループがGPC208内で実行中であることができるということになる。
[0040]さらに、複数の関連のスレッドグループが、SPM310内で同時に(様々な実行フェーズで)活動状態になることができる。スレッドグループのこの集まりを、本明細書では、「協働スレッドアレイ」(CTA)と称する。特定のCTAのサイズはmkに等しく、この式で、kは、スレッドグループ内の同時実行スレッドの数であり、典型的にはSPM310内の並列処理エンジンの数の整数の倍数であり、mは、SPM310内で同時に活動状態のスレッドグループの数である。CTAのサイズは、一般に、プログラマと、CTAにとって使用可能な、メモリ又はレジスタなどハードウェアリソースの量とによって決定される。
[0041]排他的なローカルアドレス空間が、各スレッドにとって使用可能であり、CTA内のスレッド間でデータを渡すために、共用のCTA毎のアドレス空間が使用される。スレッド毎のローカルアドレス空間及びCTA毎のアドレス空間内に記憶されたデータは、L1キャッシュ320内に記憶され、追い出しポリシー(eviction policy)を使用し、L1キャッシュ320内のデータを保つことを選ぶことができる。各SPM310は、ロード及びストア動作を実施するために使用される、対応するL1キャッシュ320内の空間を使用する。また、各SPM310は、GPC208すべての間で共用される、またスレッド間でデータを転送するために使用することができる、パーティションユニット215内のL2キャッシュにアクセスすることができる。最後に、SPM310は、たとえば並列処理メモリ204及び/又はシステムメモリ104を含むことができる、オフチップの「グローバル」メモリにアクセスすることもできる。L2キャッシュを使用し、グローバルメモリに書き込まれる、且つそこから読み取られるデータを記憶することができる。PPU202外部の任意のメモリをグローバルメモリとして使用することができることを理解されたい。
[0042]グラフィック応用例では、テクスチャマッピング演算を実施する、たとえばテクスチャサンプル位置を決定し、テクスチャデータを読み取り、テクスチャデータをフィルタリングするために各SPM310がテクスチャユニット315に結合されるように、GPC208を構成することができる。テクスチャデータは、メモリインターフェース214を介して読み取られ、必要に応じてL2キャッシュ、並列処理メモリ204、又はシステムメモリ104からフェッチされる。テクスチャユニット315は、テクスチャデータを内部キャッシュ内に記憶するように構成することができる。いくつかの実施形態では、テクスチャユニット315はL1キャッシュ320に結合され、テクスチャデータはL1キャッシュ320内に記憶される。各SPM310は、さらに処理するために処理済みタスクを別のGPC208に送るために、又は処理済みタスクをL2キャッシュ、並列処理メモリ204、又はシステムメモリ104内にクロスバーユニット210を介して記憶するために、処理済みタスクをワーク分配クロスバー330に出力する。preROP(ラスタ前演算)325は、SPM310からデータを受け取り、パーティションユニット215内のROPユニットにデータを向けて送り、カラーブレンディングのための最適化を実施し、ピクセル色データを編成し、アドレス変換を実施するように構成される。
[0043]本明細書で述べられているコアアーキテクチャは例示的なものであること、また変形及び修正が可能であることを理解されたい。任意の数の処理エンジン、たとえばプリミティブエンジン304、SPM310、テクスチャユニット315、又はpreROP325がGPC208内に含まれる可能性がある。さらに、GPC208が1つだけ示されているが、PPU202は任意の数のGPC208を含むことができ、これらのGPC208は、どのGPC208が特定の処理タスクを受け取るかに実行挙動が依存しないように、互いに機能的に同様であることが有利である。さらに、各GPC208は、別個の異なる処理エンジン、L1キャッシュ320などを使用して、他のGPC208から独立して動作することが有利である。
[0044]図3Bは、本発明の一実施形態による、図2のPPU202の1つの中のパーティションユニット215のブロック図である。図では、パーティションユニット215は、L2キャッシュ350と、フレームバッファ(FB)355と、ラスタ演算ユニット(ROP)360とを含む。L2キャッシュ350は、クロスバーユニット210及びROP360から受け取られたロード及びストア演算を実施するように構成されている読取り/書込みキャッシュである。読取りミス及び緊急のライトバック要求は、L2キャッシュ350によってFB355に、処理するために出力される。ダーティな更新もまた、便宜的(opportunistic)処理のためにFB355に送られる。FB355は、並列処理メモリ204と直接インターフェースし、読取り及び書込み要求を出力し、並列処理メモリ204から読み取られたデータを受け取る。
[0045]グラフィック応用例では、ROP360は、ステンシル、zテスト、ブレンディングなど、ラスタ演算を実施し、グラフィックメモリ内に記憶するために、ピクセルデータを処理済みグラフィックデータとして出力する処理ユニットである。本発明のいくつかの実施形態では、ROP360は、パーティションユニット215ではなく各GPC208内に含まれ、ピクセル読取り及び書込み要求は、ピクセル断片データではなくクロスバーユニット210を介して送られる。
[0046]処理済みグラフィックデータは、ディスプレイデバイス110上で表示することも、さらに処理するためにCPU102によって、又は並列処理サブシステム112内の処理エンティティの1つによってルーティングすることもできる。各パーティションユニット215は、ラスタ演算の処理を分散するために、ROP360を含む。いくつかの実施形態では、ROP360は、メモリに書き込まれるz又は色データを圧縮し、メモリから読み取られるz又は色データを伸張するように構成することができる。
[0047]図1、図2、図3A、図3Bに記載されているアーキテクチャは本発明の範囲を決して限定しないこと、また、本明細書で教示されている技法は、限定することなしに1つ又は複数のCPU、1つ又は複数のマルチコアCPU、1つ又は複数のPPU202、1つ又は複数のGPC208、1つ又は複数のグラフィック処理装置又は専用処理ユニットなどを含めて、本発明の範囲から逸脱することなしに、任意の適正に構成された処理ユニット上で実装することができることを、当業者なら理解するであろう。
[0048]図4Aは、本発明の一実施形態による、集中デバイス仮想化レイヤ(CDVL)を実装するように構成されたコンピュータシステム400の概念図である。図では、コンピュータシステム400は、複数のオペレーティングシステム(OS)402A〜402Nと、ハイパーバイザ404と、中央処理装置(CPU)406と、グラフィック処理装置(GPU)408と、メモリブリッジ410と、メモリ412と、入出力(I/O)管理モジュール414と、周辺ハードウェアデバイス416A〜416Nとを含む。I/O管理モジュール414は、周辺ハードウェアデバイス416A〜416Nに結合されており、集中デバイス仮想化レイヤ(CDVL)426と、集積ハードウェアデバイス420A〜420Nとを含む。CPU406、GPU408、周辺ハードウェアデバイス416A〜416N、及び集積ハードウェアデバイス420A〜420Nは、それぞれメモリ414内に記憶された1つ又は複数のドライバ424に関連付けられている。ドライバ424は、CPU406又はGPU408によって実行されたとき、プログラム命令を様々なタイプの機械コードに変換するソフトウェアプログラムである。たとえば、CPU406は、GPU408に関連付けられたドライバ424を実行し、プログラム命令をGPU408ネイティブの機械コードに変換することができる。
[0049]CPU406は、コンピュータシステム400のプライマリプロセッサであり、ソフトウェアプログラムを実行し、コンピュータシステム400の様々な機能を実施するように構成される。これらのソフトウェアプログラムは、OS402A〜402N、ハイパーバイザ404、及びドライバ424を含む。OS402A〜402Nは、各コンピューティング環境に関連付けられたアプリケーションを実行するために使用することができる様々なコンピューティング環境をユーザに提供する。たとえば、OS402Aは、ウィンドウズ(Windows)(登録商標)XP、すなわちユーザにマイクロソフト(Microsoft)(登録商標)オフィス(Office)などのプログラムに対するアクセスを提供することになるオペレーティングシステムとすることができ、一方、OS402Bは、ファイル転送プロトコル(FTP)サーバとして機能するUNIXベースのオペレーティングシステムとすることができる。ハイパーバイザ404は、下記でより詳細に述べるように、様々なOS402A〜402Nの動作を調整し、競合を回避するように構成される。ドライバ424は、OS402A〜402N、及びOS402A〜402N上で実行されるアプリケーションがCPU406の様々な機能にアクセスすることを可能にすることができる。OS402A〜402N、ハイパーバイザ404、及びドライバ424は、メモリ412内に記憶されもよく、或いは、外部メモリユニット(図示せず)内に記憶されてもよい。
[0050]GPU408は、グラフィック処理演算を実施し、CPU406の処理パワーを補うコプロセッサである。GPU408は、様々な処理タスクを実施するようにGPU408内の様々なハードウェア構成要素(図示せず)を構成するソフトウェアプログラムを実行することができる。GPU408は、構成されたハードウェア構成要素を使用してグラフィックデータを処理することができる。ドライバ424など、GPU408からアクセス可能なソフトウェアプログラムは、メモリ412内に記憶されもよく、或いは、外部メモリユニット内に記憶されてもよい。
[0051]CPU406及びGPU408は、メモリブリッジ410に結合されている。一実施形態では、メモリブリッジ410は、ノースブリッジチップである。メモリブリッジ410は、メモリ412に結合されている。CPU406及びGPU408は、メモリブリッジ410を経てメモリ412からデータを読み込む、且つそこにデータを書き込むことができる。このデータは、ソフトウェアプログラム、並びにグラフィックデータなど他のタイプのデータを含むことができる。
[0052]メモリブリッジ410は、I/O管理モジュール414に結合されている。I/O管理モジュール414は、周辺ハードウェアデバイス416A〜416N及び集積ハードウェアデバイス420A〜420Nを、CPU406、GPU408、及びこれらの処理ユニットによって実行されるソフトウェアプログラムからアクセス可能にする。一実施形態では、I/O管理モジュール414は、サウスブリッジチップである。周辺ハードウェアデバイス416A〜416Nは、たとえばユニバーサルシリアルバス(USB)コネクタ又はファイアウェアコネクタなど、コネクタを使用してI/O管理モジュール414に結合させることができる。周辺機器416A〜416Nは、とりわけキーボード、マウス、プリンタ、スキャナ、ディスクドライブ、フラッシュドライブ、テープドライブ、マイクロフォン、スピーカ、コンピュータモニタ、デジタルビデオカメラ、又は別のコンピュータシステムを含む。
[0053]集積ハードウェアデバイス420A〜420Nは、I/O管理モジュール414を記憶する同じチップ上に位置し、様々なシステム機能をコンピュータシステム400に提供する。集積ハードウェアデバイス420A〜420Nは、とりわけリアルタイムクロック、APM(advanced power management)モジュール、PCI(peripheral component interface)バス、PCIエクスプレス(PCIe)バス、DMA(direct memory access)コントローラ、割込みコントローラ、ベースボード管理コントローラ、PATA(peripheral advanced technology attachment)コントローラ、SATA(serial advanced technology attachment)コントローラ、又は不揮発性の基本入出力システム(BIOS)メモリを含む。
[0054]周辺ハードウェアデバイス416A〜416N及び集積ハードウェアデバイス420A〜420Nは、本明細書ではまとめて「ハードウェアデバイス」と呼ばれ、メモリブリッジ410及びI/O管理モジュール414を介してOS402A〜402Nからアクセス可能である。コンピュータシステム400は、OS402A〜402Nがハードウェアデバイスにアクセスすることができるように、ソフトウェア(SW)仮想化及び/又はハードウェア(HW)仮想化を実装することができる。
[0055]図4Bは、本発明の一実施形態による、CDVL426を実装するように構成されたコンピュータシステム401の概念図である。図では、コンピュータシステム401は、図4Aに記載されているコンピュータシステム400と同じ構成要素の多数を含む。さらに、コンピュータシステム401は、周辺HW仮想化デバイス417A〜417Nと、集積HW仮想化デバイス421A〜421Nとを含む。SW仮想化が特定のハードウェアデバイスのために実装されているとき、ハイパーバイザ404は、そのハードウェアデバイスに関連付けられたリソースをいくつかの部分に分割し、ハイパーバイザ404内に含まれるSW仮想化デバイス422を生成する。SW仮想化デバイス422の各部分は、仮想化されているハードウェアデバイスによって提供されるリソースのごく一部分を表す。次いで、ハイパーバイザ404は、SW仮想化デバイス422の異なる部分をOS402A〜402Nのそれぞれに割り振ることができる。
[0056]ハードウェアデバイスは、そのハードウェアデバイスの複数のインスタンスをアドバタイズすることによって、HW仮想化を実装することができる。周辺ハードウェアデバイス416A〜416N及び/又は集積ハードウェアデバイス420A〜420Nは、HW仮想化を実装することができる。仮想化されている各周辺ハードウェアデバイスは、周辺HW仮想化デバイス417A〜417Nのセットとして表されている。仮想化されている各集積ハードウェアデバイスは、集積HW仮想化デバイス421A〜421Nのセットとして表されている。
[0057]周辺HW仮想化デバイス417A〜417Nの諸セット及び集積HW仮想化デバイス421A〜421Nの諸セットは、まとめて「HW仮想化デバイス」と呼ばれ、それぞれ、仮想化されている単一のハードウェアデバイスの複数のインスタンスを表す。ハイパーバイザ404は、仮想化されているハードウェアデバイスの異なるインスタンスをOS402A〜402Nのそれぞれに割り振ることができる。相異なるOSがHW仮想化デバイスのそれぞれにアクセスすると、仮想化されているハードウェアデバイスは、動作を続行させる前に、OS間の競合を解決する。
[0058]周辺ハードウェアデバイス416A〜416N、周辺HW仮想化デバイス417A〜417N、集積ハードウェアデバイス420A〜420N、集積HW仮想化デバイス421A〜421N、及びSW仮想化デバイス422は、以下まとめて「列挙デバイス」と呼ばれ、コンピュータシステム401及びOS402A〜402Nに広範な補足機能を提供する。これらの補足機能は、印刷、音声データの記録、マウスから位置入力を受け取ること、及び他の機能など、各ハードウェアデバイスに関連付けられた機能を含む。OS402A〜402Nは、アクセス要求を列挙デバイスに提出することによって、これらの機能にアクセスする。アクセス要求は、列挙デバイスとの実施しようとする様々なアクセス動作を指定する。アクセス動作は、コンフィグレーション動作(configuration operation)、又はメモリマップドI/O(MMIO)動作を含む。コンフィグレーション動作は、列挙デバイスを特定のタスクに合わせて構成する。MMIO動作は、列挙デバイスの指定されたアドレス空間を用いてI/O動作を実施する。
[0059]OS402A〜402Nによって送られたアクセス要求、及び対応するアクセス動作は、CDVL426によって管理される。CDVL426は、OS402A〜402N間においてアービトレーションするように、またOS402A〜402Nが列挙デバイスとのアクセス動作を実施することを可能にするように構成された機能ユニットである。CDVL426は、OS402A〜402Nによって送られたアクセス要求をインターセプトする。CDVL426は、列挙デバイスによって提供されるリソースをOS402A〜402Nに割り振り、列挙デバイスにアクセスするOS間の競合を回避するように機能する。また、CDVL426は、各列挙デバイスによって送られる割込みをインターセプトし、それらの割込みをOSにルーティングする。
[0060]HW仮想化が特定のハードウェアデバイスのために実装されているとき、CDVL426は、OSとHW仮想化デバイスの各インスタンスとの間のアクセス動作を調整する。次いで、仮想化されているハードウェアデバイスが、OS間の競合を回避するように物理リソースを割り振る。SW仮想化が特定のハードウェアデバイスのために実装されているとき、ハイパーバイザ404は、SW仮想化デバイス422に対してOS402A〜402Nによってなされたアクセス要求をインターセプトする。ハイパーバイザ404は、それらのアクセス要求をCDVL426に送る。次いで、CDVL426は、SW仮想化されているハードウェアデバイスとのアクセス動作を調整する。
[0061]一実施形態では、CDVL426は、I/O管理モジュール414内に位置するハードウェアユニットとして実装される。他の実施形態では、CDVL426は、ハードウェアとマイクロコントローラの組合せとして実装される。他の実施形態では、CDVL426は、I/O管理モジュール414に関連付けられたメモリ内に記憶されI/O管理モジュール414内に含まれるマイクロコントローラによって実行されるソフトウェアプログラムとして実装される。メモリ412内、外部メモリユニット内、又はI/O管理モジュール414内に位置することができるCDVLセットアップファイル428により、ソフトウェアによって実装されたCDVL426がI/O管理モジュール414内に記憶される。
[0062]他の実施形態では、メモリブリッジ410及びI/O管理モジュール414が境界430内にある単一のチップ上に集積され、CDVL426は、OS402A〜402Nがメモリ412及びGPU408とのアクセス動作を実施することを可能にする。他の実施形態では、メモリブリッジ410とI/O管理モジュール414が別々のチップであり、OS402A〜402Nは、CDVL426を介してハードウェアデバイスにアクセスすることができるだけであってもよい。
[0063]CDVL426は、1つ又は複数の許可リストを維持することによって、OS402A〜402N間の競合を回避する。各許可リストは、どの列挙デバイスに特定のOSがアクセスすることを許可されるかを示すルックアップ・テーブルを備える。CDVL426は、OSに関連付けられた許可リストに基づいて、これらの列挙デバイスに対するアクセスを許可する。一実施形態では、許可リストは、CDVL426によって生成され、その結果、OSが1つだけ、特定の時間に特定の列挙デバイスにアクセスすることを許可され、したがって潜在的な競合を回避する。
[0064]CDVL426はまた、各列挙デバイスのアドレス空間を、その列挙デバイスを使用することが許可されているOSのアドレス空間内にマップする仮想アドレスマップ(VAM)を生成する。VAMにより、アクセス要求を、その列挙デバイスに関連付けられた適切なアドレスにルーティングすることができ、また、その列挙デバイスの関連アドレス空間内でアクセス動作を実施することができる。
[0065]さらに、CDVL426は、割込みマップを生成する。CDVL426は、割込みマップを使用し、列挙デバイスからその列挙デバイスを使用することが許可されているOSに送ることができる割込みをルーティングする。
[0066]CDVL426は、コンピュータシステム401の起動中に活動化される。CDVL426は、OS402A〜402Nを識別し、ハードウェアデバイス及び仮想化デバイスを列挙する。また、CDVL426は、許可リストを生成し、上述のように、VAM及び/又は割込みマップを生成することができる。CDVL426が開始された後で、OS402A〜402Nは列挙デバイスにアクセスすることができる。
[0067]VAM及び割込みマップは、デバイス列挙中に生成することができ、或いは、許可リストが更新されるとき動的に生成することができる。たとえば、OSが、コンピュータシステム401の動作中に、列挙デバイスを使用するための許可を獲得した場合には、CDVL426は、OS−列挙デバイス対に関連付けられたVAM及び割込みマップを動的に生成することができる。
[0068]OSが列挙デバイスの1つにアクセス要求を送るとき、OSは、そのOSを識別するタグをアクセス要求内に含める。CDVL426がそのアクセス要求をインターセプトしたとき、CDVL426はそのタグを調べ、その列挙デバイスに関連付けられた許可リスト上にそのOSが含まれているかどうか判定することによって、そのOSがその列挙デバイスにアクセスすることを許可されているかどうか判定する。そのOSがその列挙デバイスを使用することを許可されていない場合には、CDVL426は、ハイパーバイザ404に通知する。次いで、ハイパーバイザ404は、適切なアクションを起こし、アクセス動作を拒否することができる。
[0069]そのOSがその列挙デバイスを使用することを許可されている場合には、CDVL426は、その列挙デバイスのアドレス空間をそのOSのアドレス空間内にマップするVAMを調べる。CDVL426はアクセス要求を構文解析し、OSによって要求されているアドレスの範囲を指定する情報を抽出する。CDVL426は、要求されているアドレスがマップされているか、それともマップされていないか判定する。要求されているアドレスの1つ又は複数がマップされていない場合には、CDVL426は、要求されているアドレスを含む新しいアドレスマップを生成する。次いで、CDVL426は、そのアクセス要求によって指定されたアクセス動作を列挙デバイスが実施することを可能にするコンテキストを、列挙デバイスにロードする。次いで、列挙デバイスは、そのアクセス要求を主張し、要求されているアクセス動作を実施する。
[0070]OSが列挙デバイスとのアクセス動作を実施するとき、列挙デバイスは、割込みを発行することができる。CDVL426は、これらの割込みをインターセプトし、割込みマップを使用しOSのアドレス空間内の正しいアドレスにこれらの割込みを送る。次いで、OSは、適切なステップをとり、これらの割込みを処理することができる。これらのステップは、追加のアクセス要求を、CDVL426を介して列挙デバイスに送ることを含むことができる。
[0071]コンピュータシステム401の動作中には、追加のハードウェアデバイスをI/O管理モジュール414に取り付けることができる。追加のハードウェアデバイスがI/O管理モジュール414に取り付けられたとき、CDVL426は、その追加のハードウェアデバイスを列挙し、OS402A〜402Nのどれがその追加のハードウェアデバイスを使用することを許可されるか判定する。次いで、CDVL426は、追加のVAM及び追加の割込みマップを生成することができ、その結果、OS402A〜402Nは、その追加のハードウェアデバイスによって提供されるリソースにアクセスすることができる。
[0072]また、CDVL426は、コンピュータシステム401の動作中に、追加のCPUをメモリブリッジ410に取り付けることができるように構成される。追加のCPUは、複数のOSを実行することができる。各CPUは、異なるハイパーバイザを実行し、そのCPUによって実行されるOSを管理することができる。この構成について、図5において下記で述べる。
[0073]図5は、本発明の一実施形態による、CDVL426を実装するように構成されたマルチプロセッサコンピュータシステム500の概念図である。図では、マルチプロセッサコンピュータシステム500は、図4Bに記載されているコンピュータシステム401と同じ構成要素の多数を含む。
[0074]さらに、マルチプロセッサコンピュータシステム500は、CPU502と、ハイパーバイザ504と、OS506A〜506Nと、CPU512と、ハイパーバイザ514と、OS516A〜516Nとを含む。CPU502及びCPU512は、図4Bに記載されているCPU406と同様の並列処理ユニットである。CPU502及びCPU512は、ソフトウェアプログラムを実行し、マルチプロセッサコンピュータシステム500の機能を実施することができる。たとえば、CPU502及びCPU512は、それぞれドライバ424の1つ又は複数を実行することができ、ドライバ424は、実行されたとき、プログラム命令をそれぞれCPU502及びCPU512ネイティブの機械コードに変換することができる。
[0075]CPU502は、ハイパーバイザ504及びOS506A〜506Nを含めて、ソフトウェアプログラムを実行する。ハイパーバイザ504は、ハイパーバイザ404と実質的に同様であり、OS506A〜506Nは、OS402A〜402Nと実質的に同様である。ハイパーバイザ504は、OS506A〜506Nの動作を管理するように構成される。OS506A〜506Nは、メモリブリッジ410及びI/O管理モジュール414を介してハードウェアデバイスにアクセスするように構成される。ハードウェアデバイスの1つ又は複数がSW仮想化されているとき、ハイパーバイザ504は、OS506A〜506Nによってアクセス可能なSW仮想化デバイス508の1つ又は複数のセットを含む。
[0076]CPU502は、ハイパーバイザ514及びOS516A〜516Nを含めて、ソフトウェアプログラムを実行することができる。ハイパーバイザ514は、ハイパーバイザ504と実質的に同様であり、OS516A〜516Nは、OS506A〜506Nと実質的に同様である。ハイパーバイザ514は、OS516A〜516Nの動作を管理するように構成され、ハードウェアデバイスの1つ又は複数がSW仮想化されているとき、SW仮想化デバイス518の1つ又は複数のセットを含むことができる。
[0077]OS506A〜506N及びOS516A〜516Nは、それぞれハイパーバイザ504及びハイパーバイザ514を通じてアクセス要求を送ることによって、ハードウェアデバイスにアクセスすることができる。ハイパーバイザ504及びハイパーバイザ514は、これらのアクセス要求をCDVL426にルーティングする。CDVL426は、図4Bにおいて上述したものと実質的に同様に動作する。したがって、CDVL426は、どのハードウェアデバイスにOS506A〜506N及び/又はOS516A〜516Nがアクセスすることが許可されるかについて説明する許可リストを維持する。また、CDVL426は、それらのハードウェアデバイス、並びにこれらのハードウェアデバイスを使用することが許可されているOS506A〜506N及び/又はOS516A〜516NのためにVAM及び割込みマップを維持する。
[0078]図6は、本発明の一実施形態による、CDVL426をコンピュータシステム上で開始するための方法ステップの流れ図である。方法600について図1〜5のシステムと共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の範囲内にあることを、当業者なら理解するであろう。
[0079]図では、方法600は、CDVL426がロードされるステップ602で始まる。CDVL426がI/O管理モジュール414内に含まれるハードウェアユニットとして実装されているとき、CDVL426をロードすることは、CDVL426の電源をオンにすることを含む。CDVL426がソフトウェアプログラムとして実装されているとき、CDVL426をロードすることは、CDVLセットアップファイル428によりCDVL426がI/O管理モジュール414に関連付けられたメモリユニット内に記憶されることを含む。ソフトウェアによって実装されたCDVL426は、コンピュータシステム内に含まれるプロセッサ、又はI/O管理モジュール414内に含まれるマイクロコントローラによって実行される。
[0080]ステップ604では、CDVL426は、ハードウェアデバイスのそれぞれ、及び仮想化デバイスのそれぞれを識別するデバイスリストを生成することによって、ハードウェアデバイス及び仮想化デバイスを列挙する。また、CDVL426は、各ハードウェアデバイス及び各仮想化デバイスに関連付けられたプロパティをデバイスリスト内に含めることができる。さらに、CDVL426は、ハードウェアデバイス及び仮想化デバイスのそれぞれを調べ、これらのデバイスのそれぞれにアクセスするために使用することができるアドレスの範囲を決定することができる。この情報は、デバイスリスト内に含めることができる。
[0081]ステップ606では、CDVL426は、OS506A〜506N及び/又はOS516A〜516Nのどれが各ハードウェアデバイス及び各仮想化デバイスにアクセスすることを許可されるか指定する許可リストを生成する。一実施形態では、相異なるOSが同時に同じ列挙デバイスとのアクセス動作を実施するのを防止するように許可リストが生成される。
[0082]ステップ608では、CDVL426は、各ハードウェアデバイス及び各仮想化デバイスのアドレス空間を、その列挙デバイスを使用することが許可されているOSのアドレス空間内にマップするVAMを生成する。ステップ610では、CDVL426は、各列挙デバイスの割込みを、その列挙デバイスを使用することが許可されているOSのアドレス空間内にルーティングするために使用することができる割込みマップを生成する。
[0083]図7は、本発明の一実施形態による、CDVL426をコンピュータシステム上で実施するための方法ステップの流れ図である。方法700について図1〜5のシステムと共に述べられているが、これらの方法ステップを任意の順番で実施するように構成された任意のシステムが本発明の範囲内にあることを、当業者なら理解するであろう。
[0084]図では、方法700は、CDVL426がOSからアクセス要求を受け取るステップ702で始まる。このOSは、たとえばOS402A〜402Nの1つ、OS506A〜506Nの1つ、又はOS516A〜516Nの1つとすることができる。アクセス要求は、OSを識別するタグを含む。また、アクセス要求は、OSがアクセスしたいと望む列挙デバイス、OSが実施したいと望むアクセス動作、及びOSがアクセスしたいと望むアドレスを含む。
[0085]ステップ704では、CDVL426は、そのOSが、アクセス要求内で指定されている列挙デバイスにアクセスすることを許可されているかどうか判定する。CDVL426は、アクセス要求に関連付けられたタグを調べ、そのアクセス要求の入手元であるOSを決定する。また、CDVL426は、アクセス要求を調べ、どの列挙デバイスが要求されているか判定する。次いで、CDVL426は、要求されている列挙デバイスに関連付けられた許可リストにアクセスする。許可リストは、上述のように、その列挙デバイスを使用することが許可されているOSを指定する。CDVL426は、そのOSが許可リスト内に含まれているかどうか、次いで、そのOSが、要求されている列挙デバイスにアクセスすることを許可されているかどうか判定する。
[0086]OSが許可リスト上に含まれていない場合には、OSは列挙デバイスにアクセスすることを許可されず、この方法は、ステップ706に進む。ステップ706では、CDVL426は、列挙デバイスに対するOSアクセスを拒否し、方法700は終了する。
[0087]OSが許可リスト上に含まれている場合には、方法700は、ステップ708に進む。ステップ708では、CDVL426は、マップされていないアドレスがアクセス要求内に含まれているかどうか判定する。CDVL426は、アクセス要求を調べ、OSがアクセスすることを意図するアドレスを決定する。また、CDVL426は、そのOS及びその列挙デバイスに関連付けられたVAMにアクセスする。CDVL426は、アクセス要求内に含まれるアドレスをVAMに比較し、指定されたアドレスのいずれかがVAM内に含まれていないかどうか判定する。これは、これらのアドレスがマップされていないことを示す。
[0088]アクセス要求が、マップされていないアドレスを含んでいない(すなわち、アクセス要求内で指定されているアドレスのすべてがVAM内に含まれる)場合には、方法700は、ステップ712に進む。
[0089]アクセス要求内で指定されているいくつかのアドレスがマップされていない場合には、方法700は、ステップ710に進む。ステップ710では、CDVL426は、マップされていないアドレスを列挙デバイスのアドレス空間内にマップすることによって、VAMを更新する。次いで、方法700は、ステップ712に進む。
[0090]ステップ712では、CDVL426は、要求されているアクセス動作が要求されている列挙デバイスと共に継続することを可能にする。CDVL426は、VAMを使用して、OSによって送ることができるコンフィグレーション動作及びMMIO動作を列挙デバイスのアドレス空間内の適切なアドレスにルーティングすることによって、アクセス動作を調整する。また、CDVLは、割込みマップを使用して、列挙デバイスによって生成される割込みをOSのアドレス空間内の適切なアドレスにルーティングする。アクセス動作が完了したとき、方法700は終了する。
[0091]要するに、集中デバイス仮想化レイヤ(CDVL)は、マルチCPUコンピュータシステム内の様々な中央処理装置(CPU)上で実行されるオペレーティングシステム(OS)のためのデバイス仮想化をサポートする。CDVLは、様々なCPUを1つ又は複数の列挙デバイスと接続する、サウスブリッジ(SB)チップなど入出力(I/O)管理モジュール内から動作する。列挙デバイスは、ハードウェアデバイス及び仮想化デバイスを含む。CDVLは、その列挙デバイスにアクセスすることができるOSを含む、各列挙デバイスについての許可リストを生成することによって、どのOSが各列挙デバイスを使用することを許可されているかを追跡する。OSが列挙デバイスを使用することを許可されているとき、そのOSは、コンフィグレーション動作及び/又はメモリマップドI/O動作を含むことができる、その列挙デバイスとのアクセス動作を実施することができる。
[0092]OSが特定の列挙デバイスによって提供されるリソースにアクセスしようと試みるとき、OSは、そのOSを識別するタグを含むアクセス要求を生成する。次いで、OSは、そのOSを管理するハイパーバイザを介して、そのアクセス要求をCDVLに送る。CDVLは、アクセス要求に関連付けられたタグを調べ、そのOSがその列挙デバイスにアクセスすることを許可されているかどうか判定する。あるOSが、そのOSが使用することを許可されていない列挙デバイスにアクセスしようと試みた場合には、CDVLは、そのOSに関連付けられたハイパーバイザに通知する。次いで、ハイパーバイザは、適切なステップをとり、列挙デバイスに対するOSアクセスを拒否することができる。
[0093]CDVLは、仮想アドレスマップ(VAM)を使用して、コンフィグレーション動作及び/又はMMIO動作を列挙デバイスにルーティングする。VAMは、各列挙デバイスのアドレス空間を、その列挙デバイスにアクセスすることが許可されているOSのアドレス空間内にマップすることを可能にする。CDVLは、デバイス列挙中、又はランタイム中にVAMを生成することができる。
[0094]OSがアクセス要求をCDVLに送り、CDVLがそのアクセス要求を認めたときには、CDVLが関連のVAMを調べ、要求されているアドレスがマップされていることを保証する。要求されているアドレスがマップされていない場合には、CDVLは、新しいVAMを生成することができる。CDVLは、そのVAMを使用して、列挙デバイス上の正しいアドレスにアクセス要求をルーティングする。また、CDVLは、コンテキスト切替え又はデバイス無活動化など、アクセスを継続することを可能にする他のアクションを実施することができる。
[0095]CDVLは、特定の列挙デバイスからの割込みを、その列挙デバイスにアクセスすることができるOS内にマップすることによって、列挙デバイス割込みを処理する。列挙デバイスが割込みを発行した場合には、CDVLは、そのOSを管理するハイパーバイザを通じて、OSアドレス空間内の関連のアドレスにその割込みを送ることができる。CDVLは、デバイス列挙中、又は列挙デバイス許可が変化したとき、割込みマップを生成することができる。
[0096]有利には、CDVLは、デバイス仮想化を、複数のCPUを含むコンピューティングシステムに延長する。CDVLは、各CPU上で実行されるOSが、そのコンピューティングシステムに結合されている列挙デバイスの共通プールにアクセスすることを可能にする。CDVLをSW仮想化及びHW仮想化と共に使用し、専用の仮想化サポートを、そのようなサポートを必要とするOSに対して提供することができる。CDVLの他の利点は、追加のCPUをメモリブリッジに結合することによって、追加のCPUをコンピューティングシステムに追加することができることである。追加のCPUそれぞれが1つ又は複数のOSを実行するとき、メモリブリッジに結合されたCPU上で実行されるOSのそれぞれは、CDVLを介して列挙デバイスにアクセスすることができる。
[0097]本発明の一実施形態は、コンピュータシステムと共に使用するためのプログラム製品として実施することができる。プログラム製品の(1つ又は複数の)プログラムは、(本明細書で述べられている方法を含む)実施形態の機能を規定し、様々なコンピュータ可読記憶媒体上で含むことができる。例示的なコンピュータ可読記憶媒体は、それだけには限らないが、(i)情報が永続的に記憶される非書込み可能記憶媒体(たとえば、CD−ROMドライブによって読取り可能なCD−ROMディスク、フラッシュメモリ、ROMチップ、又は任意のタイプのソリッドステート不揮発性半導体メモリ)、及び(ii)変更可能な情報が記憶される書込み可能記憶媒体(たとえば、ディスケットドライブ内のフロッピディスク、又はハードディスクドライブ、又は任意のタイプのソリッドステートランダムアクセス半導体メモリ)を含む。
[0098]以上、本発明について具体的な実施形態を参照して述べた。しかし、添付の特許請求の範囲に述べられている本発明の、より広い精神及び範囲から逸脱することなしに、様々な修正及び変更を本発明に加えることができることを、当業者なら理解するであろう。したがって、前述の説明及び図面は、限定的な意味ではなく例示的な意味で考えるべきである。
100 コンピュータシステム
102 中央処理装置(CPU)
104 システムメモリ
105 メモリブリッジ
106 通信経路
107 I/Oブリッジ
108 入力デバイス
110 ディスプレイデバイス
112 並列処理サブシステム
113 通信経路
114 システムディスク
116 スイッチ
118 ネットワークアダプタ
120 アドインカード
121 アドインカード
200 ワーク分配ユニット
202 並列処理ユニット(PPU)
204 並列処理(PP)メモリ
205 I/Oユニット
206 ホストインターフェース
208 一般処理クラスタ(GPC)
210 メモリクロスバーユニット
212 フロントエンド
214 メモリインターフェース
215 パーティションユニット
220 DRAM
230 処理クラスタアレイ
304 プリミティブエンジン
305 パイプラインマネージャ
310 ストリーミングマルチプロセッサ(SPM)
315 テクスチャユニット
320 L1キャッシュ
325 preROP(ラスタ前演算)
330 ワーク分配クロスバー
350 L2キャッシュ
355 フレームバッファ(FB)
360 ラスタ演算ユニット(ROP)
400 コンピュータシステム
401 コンピュータシステム
402 オペレーティングシステム(OS)
404 ハイパーバイザ
406 中央処理装置(CPU)
408 グラフィック処理装置(GPU)
410 メモリブリッジ
412 メモリ
414 入出力(I/O)管理モジュール
416 周辺ハードウェアデバイス
417 周辺HW仮想化デバイス
420 集積ハードウェアデバイス
421 集積HW仮想化デバイス
422 SW仮想化デバイス
424 ドライバ
426 集中デバイス仮想化レイヤ(CDVL)
428 CDVLセットアップファイル
430 境界
500 マルチプロセッサコンピュータシステム
502 CPU
504 ハイパーバイザ
506 OS
508 SW仮想化デバイス
512 CPU
514 ハイパーバイザ
516 OS
518 SW仮想化デバイス

Claims (8)

  1. 複数のオペレーティングシステムを実行するように構成された第1のプロセッサと、
    第1のハードウェアデバイスと、
    第2のハードウェアデバイスであって、該第2のハードウェアデバイスに関連付けられたリソースの複数のインスタンスをアドバタイズしハードウェア(HW)仮想化デバイスを作成するように構成された第2のハードウェアデバイスと、
    前記第1のハードウェアデバイスに関連付けられたリソースをゲスト物理リソースに分割しソフトウェア(SW)仮想化デバイスを作成するように構成された、前記第1のプロセッサによって実行される第1のハイパーバイザを記憶するシステムメモリと、
    入出力(I/O)管理モジュールと
    を備えるコンピューティングデバイスであって、
    前記I/O管理モジュールは、
    前記複数のオペレーティングシステム内に含まれるどのオペレーティングシステムが許可されて、前記第1のハイパーバイザ内に記憶された前記SW仮想化デバイスにアクセスするかを指定する第1の許可リストを生成するステップと、
    前記複数のオペレーティングシステム内のどのオペレーティングシステムが許可されて、前記HW仮想化デバイスにアクセスするかを指定する第2の許可リストを生成するステップと、
    前記第1のハイパーバイザ内に記憶された前記SW仮想化デバイスに関連付けられた第1のアドレス空間を、前記第1の許可リスト上に含まれる前記オペレーティングシステムのそれぞれに関連付けられたアドレス空間内にそれぞれマップする第1のセットの仮想アドレスマップを生成するステップと、
    前記HW仮想化デバイスに関連付けられた第2のアドレス空間を、前記第2の許可リスト上に含まれる前記オペレーティングシステムのそれぞれに関連付けられたアドレス空間内にそれぞれマップする第2のセットの仮想アドレスマップを生成するステップと、
    前記第1のセットの仮想アドレスマップに基づいて、前記SW仮想化デバイスを使用するアクセス動作を、前記第1の許可リスト内に含まれる前記オペレーティングシステムが実施することを可能にするとともに、前記第2のセットの仮想アドレスマップに基づいて、前記HW仮想化デバイスを使用するアクセス動作を、前記第2の許可リスト内に含まれる前記オペレーティングシステムが実施することを可能にすることによって、前記複数のオペレーティングシステムの各々からのアクセス要求をアービトレーションするステップと
    を実施することによって、前記第1のプロセッサが前記SW仮想化デバイスにアクセスすることを可能にするように構成された命令を記憶するメモリを含む、
    コンピューティングデバイス。
  2. 前記I/O管理モジュール内に含まれる前記メモリが、
    前記複数のオペレーティングシステム内に含まれる第1のオペレーティングシステムから、
    前記第1のオペレーティングシステムがアクセスすることを意図するデバイスを指定する情報と、
    前記第1のオペレーティングシステムが前記指定されたデバイス上で実行することを意図するアクセス動作を指定する情報と
    を含むアクセス要求を受け取るように構成された命令をさらに含む、請求項に記載のコンピューティングデバイス。
  3. 前記指定されたデバイスが前記SW仮想化デバイスを備えており、
    前記I/O管理モジュール内に含まれる前記メモリが、
    前記第1のオペレーティングシステムが前記第1の許可リスト内に含まれていると決定し、
    前記第1のオペレーティングシステムが前記SW仮想化デバイスを使用する前記アクセス動作を実施することを可能にするように構成された命令をさらに含み、前記アクセス動作が、仮想アドレスマップの前記第1のセットを使用して前記第1のオペレーティングシステムから前記SW仮想化デバイスにルーティングされたコンフィグレーション動作及びメモリマップドI/O(MMIO)動作を含む、請求項に記載のコンピューティングデバイス。
  4. 前記指定されたデバイスが前記HW仮想化デバイスを備えており、
    前記I/O管理モジュール内に含まれる前記メモリが、
    前記第1のオペレーティングシステムが前記第2の許可リスト内に含まれていると決定し、
    前記第1のオペレーティングシステムが前記HW仮想化デバイスを使用する前記アクセス動作を実施することを可能にするように構成された命令をさらに含み、前記アクセス動作が、仮想アドレスマップの前記第2のセットを使用して前記第1のオペレーティングシステムから前記HW仮想化デバイスにルーティングされたコンフィグレーション動作及びメモリマップドI/O(MMIO)動作を含む、請求項に記載のコンピューティングデバイス。
  5. コンピュータシステム内に含まれるハードウェアデバイスに対するオペレーティングシステムアクセスを実現するための方法において、
    前記コンピュータシステム内に含まれる1つ又は複数のハードウェアデバイスと、1つ又は複数の仮想化デバイスとを列挙するステップであり、
    第1のハードウェアデバイスに関連付けられたリソースがゲスト物理リソースに分割されていると決定し、それによりソフトウェア(SW)仮想化デバイスを作成する工程と、
    第2のハードウェアデバイスに関連付けられたリソースの複数のインスタンスが前記第2のハードウェアデバイスによってアドバタイズされていると決定し、それによりハードウェア(HW)仮想化デバイスを作成する工程とを含む、ステップと、
    複数のオペレーティングシステムのうちのどのオペレーティングシステムが許可されて、前記SW仮想化デバイスにアクセスするかを指定する第1の許可リストを生成するステップと、
    前記複数のオペレーティングシステムのうちのどのオペレーティングシステムが許可されて、前記HW仮想化デバイスにアクセスするかを指定する第2の許可リストを生成するステップと、
    前記複数のオペレーティングシステムのうちのどのオペレーティングシステムが許可されて、前記第1のハードウェアデバイスにアクセスするかを指定する第3の許可リストを生成するステップと、
    前記SW仮想化デバイスに関連付けられた第1のアドレス空間を、前記第1の許可リスト内に含まれる各オペレーティングシステムに関連付けられたアドレス空間内にそれぞれがマップする仮想アドレスマップの第1のセットを生成するステップと、
    前記HW仮想化デバイスに関連付けられた第2のアドレス空間を、前記第2の許可リスト内に含まれる各オペレーティングシステムに関連付けられたアドレス空間内にそれぞれがマップする仮想アドレスマップの第2のセットを生成するステップと、
    前記第1のハードウェアデバイスに関連付けられた第3のアドレス空間を、前記第3の許可リスト内に含まれる各オペレーティングシステムに関連付けられたアドレス空間内にそれぞれがマップする仮想アドレスマップの第3のセットを生成するステップと、
    前記複数のオペレーティングシステムのそれぞれからのアクセス要求をアービトレーションするステップであり、
    前記第1のセットの仮想アドレスマップに基づいて、前記SW仮想化デバイスを使用するアクセス動作を、前記第1の許可リスト内に含まれる前記オペレーティングシステムが実施することを可能にする工程と、
    前記第2のセットの仮想アドレスマップに基づいて前記HW仮想化デバイスを使用するアクセス動作を、前記第2の許可リスト内に含まれる前記オペレーティングシステムが実施することを可能にする工程と、
    前記第3のセットの仮想アドレスマップに基づいて、前記第1のハードウェアデバイスを使用するアクセス動作を、前記第3の許可リスト内に含まれる前記オペレーティングシステムが実施することを可能にする工程と、
    を含む、ステップと
    を含む方法。
  6. 前記複数のオペレーティングシステム内の第1のオペレーティングシステムから、前記第1のオペレーティングシステムがアクセスすることを意図する第1のハードウェアデバイス又は第1の仮想化デバイスを指定する情報と、前記第1のオペレーティングシステムが前記第1のハードウェアデバイス、又は前記第1の仮想化デバイスに関連付けられたハードウェアデバイス上で実行することを意図するアクセス動作を指定する情報とを含むアクセス要求を受け取るステップをさらに含む、請求項に記載の方法。
  7. 前記第1の仮想化デバイスが前記SW仮想化デバイスを備えており、前記第1のオペレーティングシステムが前記第1の許可リスト内に含まれていると決定し、前記第1のオペレーティングシステムが前記SW仮想化デバイスを使用する前記アクセス動作を実施することを可能にするステップをさらに含む、請求項に記載の方法。
  8. 前記第1の仮想化デバイスが前記HW仮想化デバイスを備えており、前記第1のオペレーティングシステムが前記第2の許可リスト内に含まれていると決定し、前記第1のオペレーティングシステムが前記HW仮想化デバイスを使用する前記アクセス動作を実施することを可能にするステップをさらに含む、請求項に記載の方法。
JP2009278608A 2008-12-08 2009-12-08 ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ Active JP5170782B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/330,466 2008-12-08
US12/330,466 US8239938B2 (en) 2008-12-08 2008-12-08 Centralized device virtualization layer for heterogeneous processing units

Publications (2)

Publication Number Publication Date
JP2010186465A JP2010186465A (ja) 2010-08-26
JP5170782B2 true JP5170782B2 (ja) 2013-03-27

Family

ID=42232586

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009278608A Active JP5170782B2 (ja) 2008-12-08 2009-12-08 ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ

Country Status (4)

Country Link
US (2) US8239938B2 (ja)
JP (1) JP5170782B2 (ja)
KR (1) KR101091224B1 (ja)
CN (2) CN102981892A (ja)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9867530B2 (en) 2006-08-14 2018-01-16 Volcano Corporation Telescopic side port catheter device with imaging system and method for accessing side branch occlusions
WO2009009799A1 (en) 2007-07-12 2009-01-15 Volcano Corporation Catheter for in vivo imaging
US9596993B2 (en) 2007-07-12 2017-03-21 Volcano Corporation Automatic calibration systems and methods of use
US10219780B2 (en) 2007-07-12 2019-03-05 Volcano Corporation OCT-IVUS catheter for concurrent luminal imaging
US9785700B2 (en) 2008-02-11 2017-10-10 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallelized indexing
US8359365B2 (en) 2008-02-11 2013-01-22 Nuix Pty Ltd Systems and methods for load-balancing by secondary processors in parallel document indexing
US9928260B2 (en) 2008-02-11 2018-03-27 Nuix Pty Ltd Systems and methods for scalable delocalized information governance
KR101275293B1 (ko) * 2009-10-26 2013-06-14 한국전자통신연구원 네트워크 장치 및 네트워크 가상화 지원 방법
KR20120066395A (ko) * 2010-12-14 2012-06-22 한국전자통신연구원 네트워크 서비스 지원 시스템 및 그 방법
US11141063B2 (en) 2010-12-23 2021-10-12 Philips Image Guided Therapy Corporation Integrated system architectures and methods of use
US11040140B2 (en) 2010-12-31 2021-06-22 Philips Image Guided Therapy Corporation Deep vein thrombosis therapeutic methods
US20120216048A1 (en) * 2011-02-17 2012-08-23 Nikos Kaburlasos System, method and computer program product for application-agnostic audio acceleration
US9064111B2 (en) * 2011-08-03 2015-06-23 Samsung Electronics Co., Ltd. Sandboxing technology for webruntime system
US8893267B1 (en) * 2011-08-17 2014-11-18 Applied Micro Circuits Corporation System and method for partitioning resources in a system-on-chip (SoC)
US9360630B2 (en) 2011-08-31 2016-06-07 Volcano Corporation Optical-electrical rotary joint and methods of use
US8984478B2 (en) 2011-10-03 2015-03-17 Cisco Technology, Inc. Reorganization of virtualized computer programs
US8893225B2 (en) 2011-10-14 2014-11-18 Samsung Electronics Co., Ltd. Method and apparatus for secure web widget runtime system
US8782472B2 (en) 2011-10-28 2014-07-15 Dell Products L.P. Troubleshooting system using device snapshots
US9558364B2 (en) 2012-02-23 2017-01-31 Mitsubishi Electric Corporation Computing machine, access management method, and access management program
US9575787B2 (en) * 2012-05-30 2017-02-21 Red Hat Israel, Ltd. Managing device access using an address hint
US9658929B1 (en) * 2012-06-27 2017-05-23 EMC IP Holding Company LLC Asynchronous splitting
CN102801945B (zh) * 2012-08-09 2014-09-24 珠海全志科技股份有限公司 数字电视播放录制方法及装置
US9367965B2 (en) 2012-10-05 2016-06-14 Volcano Corporation Systems and methods for generating images of tissue
US9324141B2 (en) 2012-10-05 2016-04-26 Volcano Corporation Removal of A-scan streaking artifact
US20140100454A1 (en) 2012-10-05 2014-04-10 Volcano Corporation Methods and systems for establishing parameters for three-dimensional imaging
US11272845B2 (en) 2012-10-05 2022-03-15 Philips Image Guided Therapy Corporation System and method for instant and automatic border detection
US9858668B2 (en) 2012-10-05 2018-01-02 Volcano Corporation Guidewire artifact removal in images
US9286673B2 (en) 2012-10-05 2016-03-15 Volcano Corporation Systems for correcting distortions in a medical image and methods of use thereof
US9292918B2 (en) 2012-10-05 2016-03-22 Volcano Corporation Methods and systems for transforming luminal images
US10070827B2 (en) 2012-10-05 2018-09-11 Volcano Corporation Automatic image playback
EP2904671B1 (en) 2012-10-05 2022-05-04 David Welford Systems and methods for amplifying light
US10568586B2 (en) 2012-10-05 2020-02-25 Volcano Corporation Systems for indicating parameters in an imaging data set and methods of use
US9307926B2 (en) 2012-10-05 2016-04-12 Volcano Corporation Automatic stent detection
US9840734B2 (en) 2012-10-22 2017-12-12 Raindance Technologies, Inc. Methods for analyzing DNA
EP2931132B1 (en) 2012-12-13 2023-07-05 Philips Image Guided Therapy Corporation System for targeted cannulation
US11406498B2 (en) 2012-12-20 2022-08-09 Philips Image Guided Therapy Corporation Implant delivery system and implants
US9730613B2 (en) 2012-12-20 2017-08-15 Volcano Corporation Locating intravascular images
US10942022B2 (en) 2012-12-20 2021-03-09 Philips Image Guided Therapy Corporation Manual calibration of imaging system
US10939826B2 (en) 2012-12-20 2021-03-09 Philips Image Guided Therapy Corporation Aspirating and removing biological material
US9709379B2 (en) 2012-12-20 2017-07-18 Volcano Corporation Optical coherence tomography system that is reconfigurable between different imaging modes
JP6785554B2 (ja) 2012-12-20 2020-11-18 ボルケーノ コーポレイション 平滑遷移カテーテル
US9486143B2 (en) 2012-12-21 2016-11-08 Volcano Corporation Intravascular forward imaging device
US10058284B2 (en) 2012-12-21 2018-08-28 Volcano Corporation Simultaneous imaging, monitoring, and therapy
WO2014099672A1 (en) 2012-12-21 2014-06-26 Andrew Hancock System and method for multipath processing of image signals
EP2934653B1 (en) 2012-12-21 2018-09-19 Douglas Meyer Rotational ultrasound imaging catheter with extended catheter body telescope
CA2896004A1 (en) 2012-12-21 2014-06-26 Nathaniel J. Kemp Power-efficient optical buffering using optical switch
EP2934280B1 (en) 2012-12-21 2022-10-19 Mai, Jerome Ultrasound imaging with variable line density
EP2936626A4 (en) 2012-12-21 2016-08-17 David Welford SYSTEMS AND METHOD FOR REDUCING A WAVELENGTH LIGHT EMISSION
US10413317B2 (en) 2012-12-21 2019-09-17 Volcano Corporation System and method for catheter steering and operation
US10332228B2 (en) 2012-12-21 2019-06-25 Volcano Corporation System and method for graphical processing of medical data
US9612105B2 (en) 2012-12-21 2017-04-04 Volcano Corporation Polarization sensitive optical coherence tomography system
US10226597B2 (en) 2013-03-07 2019-03-12 Volcano Corporation Guidewire with centering mechanism
EP2965263B1 (en) 2013-03-07 2022-07-20 Bernhard Sturm Multimodal segmentation in intravascular images
JP2016521138A (ja) 2013-03-12 2016-07-21 コリンズ,ドナ 冠動脈微小血管疾患を診断するためのシステム及び方法
US20140276923A1 (en) 2013-03-12 2014-09-18 Volcano Corporation Vibrating catheter and methods of use
US9301687B2 (en) 2013-03-13 2016-04-05 Volcano Corporation System and method for OCT depth calibration
WO2014159819A1 (en) 2013-03-13 2014-10-02 Jinhyoung Park System and methods for producing an image from a rotational intravascular ultrasound device
US11026591B2 (en) 2013-03-13 2021-06-08 Philips Image Guided Therapy Corporation Intravascular pressure sensor calibration
US10292677B2 (en) 2013-03-14 2019-05-21 Volcano Corporation Endoluminal filter having enhanced echogenic properties
US10219887B2 (en) 2013-03-14 2019-03-05 Volcano Corporation Filters with echogenic characteristics
CN105208947B (zh) 2013-03-14 2018-10-12 火山公司 具有回声特性的过滤器
US12343198B2 (en) 2013-03-14 2025-07-01 Philips Image Guided Therapy Corporation Delivery catheter having imaging capabilities
KR102033009B1 (ko) * 2013-09-13 2019-10-16 한국전자통신연구원 가상 물리 시스템 및 그의 가상 머신 모니터링 방법
KR101587579B1 (ko) * 2014-02-19 2016-01-22 한국과학기술원 가상화 시스템에서 메모리 조정방법
CN105765545B (zh) * 2014-07-15 2018-10-12 华为技术有限公司 PCIe I/O设备共享方法及设备与互联系统
US10826930B2 (en) 2014-07-22 2020-11-03 Nuix Pty Ltd Systems and methods for parallelized custom data-processing and search
US9697154B2 (en) * 2014-08-20 2017-07-04 Red Hat Israel, Ltd. Managing message signaled interrupts in virtualized computer systems
US9564108B2 (en) * 2014-10-20 2017-02-07 Amlogic Co., Limited Video frame processing on a mobile operating system
US10019400B2 (en) * 2015-03-27 2018-07-10 Intel Corporation Additional secured execution environment with SR-IOV and xHCI-IOV
US11200249B2 (en) 2015-04-16 2021-12-14 Nuix Limited Systems and methods for data indexing with user-side scripting
CN105653372B (zh) * 2015-12-30 2019-03-29 中电科华云信息技术有限公司 基于云平台实现多虚拟化混合管理与调度的方法
US10108462B2 (en) * 2016-02-12 2018-10-23 Microsoft Technology Licensing, Llc Virtualizing sensors
CN107885748B (zh) * 2016-09-30 2021-10-26 华为技术有限公司 虚拟化实例的文件分层访问方法和装置
KR102275529B1 (ko) * 2019-12-23 2021-07-09 주식회사 텔레칩스 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법
CN113301099B (zh) * 2021-01-18 2024-09-13 阿里巴巴集团控股有限公司 请求处理方法、数据处理方法、装置、设备及cdn系统
CN113900829B (zh) 2021-12-10 2022-04-12 深圳比特微电子科技有限公司 用于设备的内存管理方法、内存管理设备和计算系统
CN114138702B (zh) * 2022-01-29 2022-06-14 阿里云计算有限公司 计算系统、pci设备管理器及其初始化方法
KR102465953B1 (ko) * 2022-05-30 2022-11-11 쿤텍 주식회사 하이퍼바이저 시스템 및 하이퍼바이저 동작 방법
WO2025006984A1 (en) 2023-06-30 2025-01-02 Nuix Limited Systems and methods for data indexing with user-side scripting

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0348937A (ja) * 1989-07-18 1991-03-01 Nec Corp 仮想計算機システムにおける入出力命令実行方式
JP3765201B2 (ja) * 1999-07-07 2006-04-12 株式会社日立製作所 計算機システム
JP2001034571A (ja) * 1999-07-16 2001-02-09 Hitachi Ltd 情報処理装置
US6665759B2 (en) * 2001-03-01 2003-12-16 International Business Machines Corporation Method and apparatus to implement logical partitioning of PCI I/O slots
US6820164B2 (en) * 2001-04-17 2004-11-16 International Business Machines Corporation Peripheral component interconnect bus detection in logically partitioned computer system involving authorizing guest operating system to conduct configuration input-output operation with functions of pci devices
US6907510B2 (en) * 2002-04-01 2005-06-14 Intel Corporation Mapping of interconnect configuration space
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
US7272664B2 (en) * 2002-12-05 2007-09-18 International Business Machines Corporation Cross partition sharing of state information
US20040117587A1 (en) * 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
JP4123942B2 (ja) * 2003-01-14 2008-07-23 株式会社日立製作所 情報処理装置
US7783779B1 (en) * 2003-09-19 2010-08-24 Vmware, Inc Storage multipath management in a virtual computer system
US7558723B2 (en) * 2003-12-12 2009-07-07 Microsoft Corporation Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US7426625B2 (en) * 2004-03-31 2008-09-16 International Business Machines Corporation Data processing system and computer program product for support of system memory addresses with holes
US20050246453A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US7574709B2 (en) * 2004-04-30 2009-08-11 Microsoft Corporation VEX-virtual extension framework
US7539986B2 (en) * 2004-06-30 2009-05-26 Intel Corporation Method for guest operating system integrity validation
US7383405B2 (en) * 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US7330942B2 (en) * 2004-07-31 2008-02-12 Hewlett-Packard Development Company, L.P. Method for efficient virtualization of physical memory in a virtual-machine monitor
JP4295184B2 (ja) * 2004-09-17 2009-07-15 株式会社日立製作所 仮想計算機システム
US7757231B2 (en) * 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US7293129B2 (en) * 2005-04-22 2007-11-06 Sun Microsystems, Inc. Flexible routing and addressing
JP4394624B2 (ja) * 2005-09-21 2010-01-06 株式会社日立製作所 計算機システム及びi/oブリッジ
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
JP4800059B2 (ja) * 2006-02-13 2011-10-26 株式会社日立製作所 仮想ストレージシステム及びその制御方法
US8099730B2 (en) * 2006-03-30 2012-01-17 Intel Corporation Heterogeneous virtualization of host and guest OS having different register sizes using translation layer to extract device port numbers for host OS system memory addresses
JP4233585B2 (ja) * 2006-07-25 2009-03-04 株式会社エヌ・ティ・ティ・ドコモ ペリフェラル切替装置及びペリフェラル切替制御装置
EP2057543A4 (en) * 2006-08-07 2012-07-04 Oracle Int Corp SYSTEM AND METHOD FOR VIRTUALIZING EQUIPMENT IN A VIRTUAL MACHINE ENVIRONMENT
US8479195B2 (en) * 2007-05-16 2013-07-02 Vmware, Inc. Dynamic selection and application of multiple virtualization techniques
JP5018252B2 (ja) * 2007-06-06 2012-09-05 株式会社日立製作所 デバイス割り当て変更方法

Also Published As

Publication number Publication date
US8239938B2 (en) 2012-08-07
US20100146620A1 (en) 2010-06-10
US8943584B2 (en) 2015-01-27
KR101091224B1 (ko) 2011-12-07
KR20100066405A (ko) 2010-06-17
US20120304285A1 (en) 2012-11-29
CN102981892A (zh) 2013-03-20
JP2010186465A (ja) 2010-08-26
CN101751285A (zh) 2010-06-23
CN101751285B (zh) 2013-01-16

Similar Documents

Publication Publication Date Title
JP5170782B2 (ja) ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ
CN103777926B (zh) 多线程处理单元中的高效存储器虚拟化
US8982140B2 (en) Hierarchical memory addressing
CN103365631B (zh) 用于存储器访问的动态库模式寻址
US10310973B2 (en) Efficient memory virtualization in multi-threaded processing units
CN103218208B (zh) 用于实施成形的存储器访问操作的系统和方法
US10169091B2 (en) Efficient memory virtualization in multi-threaded processing units
CN103207774B (zh) 用于解决线程发散的方法和系统
US8619087B2 (en) Inter-shader attribute buffer optimization
US8539130B2 (en) Virtual channels for effective packet transfer
US9626216B2 (en) Graphics processing unit sharing between many applications
CN103262035B (zh) 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告
CN103197916A (zh) 用于源操作数收集器高速缓存的方法和装置
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
JP2010140480A (ja) Cpuトラフィックを特殊とマークすることによるデッドロックの回避
CN103197918B (zh) 多通道时间片组
US10235208B2 (en) Technique for saving and restoring thread group operating state
US8667200B1 (en) Fast and highly scalable quota-based weighted arbitration
US9262348B2 (en) Memory bandwidth reallocation for isochronous traffic
US8570916B1 (en) Just in time distributed transaction crediting
US8948167B2 (en) System and method for using domains to identify dependent and independent operations
US9098383B1 (en) Consolidated crossbar that supports a multitude of traffic types

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110802

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111102

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120712

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121221

R150 Certificate of patent or registration of utility model

Ref document number: 5170782

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

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