JP7245179B2 - 仮想化デバイス用のファームウェアの変更 - Google Patents

仮想化デバイス用のファームウェアの変更 Download PDF

Info

Publication number
JP7245179B2
JP7245179B2 JP2019571290A JP2019571290A JP7245179B2 JP 7245179 B2 JP7245179 B2 JP 7245179B2 JP 2019571290 A JP2019571290 A JP 2019571290A JP 2019571290 A JP2019571290 A JP 2019571290A JP 7245179 B2 JP7245179 B2 JP 7245179B2
Authority
JP
Japan
Prior art keywords
virtualization
processing device
firmware
client
work
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
JP2019571290A
Other languages
English (en)
Other versions
JP2020525914A (ja
Inventor
ジャン イーナン
エム. アブデルハレク アフメド
チャオ グオペイ
スン アンディ
リウ ハイボー
ミン デジ
シュー ジドン
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.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
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 ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of JP2020525914A publication Critical patent/JP2020525914A/ja
Application granted granted Critical
Publication of JP7245179B2 publication Critical patent/JP7245179B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/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/45558Hypervisor-specific management and integration aspects
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/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/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/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/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)
  • Image Generation (AREA)

Description

(関連出願の相互参照)
本願は、2017年6月30日に出願された米国特許出願第15/639,971号の利益を主張するものであり、その内容は、本明細書に完全に記載されているかのように、言及することによって本明細書に組み込まれる。
コンピュータ仮想化は、コンピュータシステムの異なる仮想インスタンス間でハードウェアの単一のセットを共有する技術である。各インスタンス、つまり仮想マシン(VM)は、ハードウェアコンピュータシステム全体を所有していると信じているが、実際には、コンピュータシステムのハードウェアリソースは、異なるVM間で共有されている。CPUやシステムメモリ等以外のデバイスの仮想化の進歩を含めて、仮想化の進歩が絶えず行われている。
添付の図面と併せて例として与えられる以下の説明から、より詳細な理解が得られる。
本開示の1つ以上の特徴を実施することができる例示的なデバイスのブロック図である。 一例による、仮想化に関連する詳細を示す図1のデバイスのブロック図である。 図2に示すグラフィックス処理パイプラインの追加の詳細を示すブロック図である。 一例による、変更するファームウェアに関連する図1のワークエンジンの特徴を示すブロック図である。 一例による、仮想化デバイス上でファームウェアを変更する方法のフロー図である。
仮想化デバイスにおける異なる仮想機能用のファームウェアを変更する技術を提供する。仮想化デバイスは、ハードウェアアクセラレータと、ファームウェアを実行するマイクロコントローラと、を含む。仮想化デバイスは、(異なる仮想マシンに関連する異なる仮想機能を用いて)異なる仮想機能用のワークを実行し、各機能が、その機能のためのワークが実行される「タイムスライス」を得る、という点で仮想化される。ファームウェアを変更するために、仮想化デバイスが、現在の仮想機能のワークを実行することから後続の仮想機能のワークに切り替わる毎に、仮想化デバイスの1つ以上のマイクロコントローラは、後続の仮想機能のファームウェアのアドレスを記憶するメモリを検査し、その後続の仮想機能のファームウェアの実行を開始する。ファームウェアのアドレスは、構成時に対応する仮想マシンによって提供される。
図1は、本開示の1つ以上の特徴を実施することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含むことができる。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションとして、入力ドライバ112と出力ドライバ114とを含むことができる。デバイス100は、図1に示されていない追加のコンポーネントを含むことができると理解される。
様々な代替例において、プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替例において、メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別々に配置されてもよい。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM又はキャッシュ)を含む。
ストレージ106は、固定又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク又はフラッシュドライブ等)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリクススキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112及び出力ドライバ114は、入力デバイス108及び出力デバイス110の各々とインタフェースし、これらを駆動するように構成された1つ以上のハードウェア、ソフトウェア及びファームウェアコンポーネントを含む。入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108からの入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションのコンポーネントであり、入力ドライバ112及び出力ドライバ114が存在しない場合には、デバイス100が同様に動作することに留意されたい。出力ドライバ114は、ディスプレイデバイス118に接続されたアクセラレーテッド処理デバイス(APD)116を含む。ディスプレイデバイス118は、いくつかの例では、出力を表示するために遠隔表示プロトコルを使用する物理ディスプレイデバイス又はシミュレートされたデバイスである。APDは、計算コマンド及びグラフィックスレンダリングコマンドをプロセッサ102から受信し、これらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、ピクセル出力を表示のためにディスプレイデバイス118に提供するように構成されている。以下にさらに詳細に説明するように、APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を実行するように構成された1つ以上の並列処理ユニットを含む。したがって、本明細書では、様々な機能がAPD116によって又はAPD116と共に実行されるものとして説明しているが、様々な代替例では、APD116によって実行されるものとして説明される機能は、追加的に又は代替的に、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、グラフィックス出力をディスプレイデバイス118に提供するように構成された同様の機能を有する他のコンピューティングデバイスによって実行される。例えば、SIMDパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明する機能を実行するように構成されてもよいことが考えられる。或いは、SIMDパラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明する機能を実行することが考えられる。また、出力ドライバ114は、仮想化された1つ以上のワークエンジン117を含む。ワークエンジン117は、プロセッサ102、APD116又は他のエンティティの要求に応じてワークを実行する。1つの例では、ワークエンジン117は、APD116によって生成された画像データのフレームを圧縮されたビデオデータにエンコードするエンジン等のビデオエンコーダエンジンを含む。このようなビデオエンコードワークエンジン117は、高効率ビデオエンコーディング(HEVC、H.265としても知られる)コーデック、アドバンスドビデオコーディング(AVC、H.264としても知られる)コーデック、VP9ビデオコーデック、又は、任意の他のコーデック等の規格に従って、データをエンコードすることができる。他の例では、ワークエンジン117は、他のタイプのエンコードワーク、又は、デコード若しくは他のワーク等の他のタイプの非エンコードワークを実行することができる。
プロセッサ102は、複数の仮想マシンがプロセッサ102上で実行される仮想化スキームをサポートするように構成されている。各仮想マシン(VM)は、完全に「実際の」ハードウェアコンピュータシステムとしてそのVMで実行されるソフトウェアに「見える」が、実際には、デバイス100を他の仮想マシンと共有することができる仮想化コンピューティング環境を含む。仮想化は、ソフトウェアで完全にサポートされている場合もあれば、ハードウェアで部分的にサポートされ、ソフトウェアで部分的にサポートされる場合もあり、ハードウェアで完全にサポートされる場合もある。また、APD116は、仮想化をサポートする。仮想化は、APD116が、プロセッサ102上で実行される複数の仮想マシン間で共有することができ、各VMが、VMが実際のハードウェアAPD116の完全な所有権を有していると「信じている」ことを意味する。VMは、仮想化のために、プロセッサ102上で順番に実行される。あるVMから別のVMへの切り替えは、本明細書では「仮想化コンテキストスイッチ」と呼ばれる。1つ以上のワークエンジン117は、仮想化もサポートする。
図2は、一例による、仮想化に関連するデバイス100及びAPD116の詳細を示す図である。プロセッサ102は、複数の仮想マシンをサポートする。専用のホスト仮想マシン202は、ゲストVM204のような「汎用」VMではないが、その代わりに、ゲストVM204が使用するためのAPD116の仮想化をサポートする。ハイパバイザ206は、仮想化サポートを仮想マシンに提供し、これは、仮想マシンに割り当てられたリソースを管理すること、仮想マシンを生成し終了すること、システムコールを処理すること、周辺デバイスへのアクセスを管理すること、メモリ及びページテーブルを管理すること、並びに、様々な他の機能等の多種多様な機能を含む。
APD116は、仮想マシン間でAPD116を時間ベースで共有するのを可能にすることによって、仮想化をサポートする。APD116では、ホストVM202が物理機能208にマッピングされ、ゲストVM204が仮想機能210にマッピングされる。「物理機能」は、基本的に、PCIエクスプレス(PCIe)規格におけるアドレス指定パラメータである。より具体的には、物理機能は、PCIe相互接続ファブリックに接続されたデバイスを含む通信がデバイスの特定の物理機能を指定するのを可能にし、これにより、デバイスは、その物理機能に具体的に割り当てられた機能に従って通信を処理することができる。一例では、物理機能は、APD116等のグラフィックス処理デバイス上の通常のグラフィックスレンダリングに関連している。本明細書では、単一の物理機能について説明しているが、本開示の教示は、複数の物理機能がアクティブなAPD116に適用される。
仮想機能は、ハードウェア仮想化を促進するPCIe規格の機能であり、PCIe規格におけるアドレス指定パラメータとしても機能する。典型的には、仮想機能のセットは、特定の物理機能に関連付けられる。各仮想マシンには異なる仮想機能が割り当てられ、ハイパバイザ206は、VMと仮想機能との相関関係を管理する。ホストVM202が物理機能208及び異なる仮想機能210にアクセス可能であることを除いて、仮想機能と仮想マシンとの間のこの相関関係は、図2のシステムに大部分が当てはまる。この意味において、ホストVM202は、APD仮想化のための一種の「マスタ仮想マシン」として機能する。
上述したように、物理機能及び仮想機能は、PCIe内のアドレス指定パラメータである。PCIe間で行われるトランザクションは、特定の仮想機能及び/又は物理機能を指定又は対象とし、プロセッサ102又はAPD116が、それに従って応答する(PCIe上でアドレス指定するいくつかの方法は、仮想機能又は物理機能を明示的に指定しないことに留意されたい。例えば、PCIe上のトランザクションは、機能によって明示的にルーティングされるのではなく、メモリアドレスによってルーティングされ得る。デバイスは、何れの機能が特定のメモリアドレスに関連付けられているかを暗黙的に理解することができる)。プロセッサ102は、メモリマッピングメカニズムを介して、特定のVMに関するトランザクションをAPD116の適切な仮想機能に向ける。具体的には、仮想マシンがAPD116にアクセスすると、そのアクセスに使用されるメモリアドレスが、ゲスト物理アドレスからシステム物理アドレスに変換される。使用される特定のシステム物理アドレスは、メモリマッピングメカニズムによってAPD116の特定の仮想機能にマッピングされ、これにより、行われるトランザクションは、マッピング情報を介してAPD116及び適切な仮想機能にルーティングされる。
APD116を異なる仮想マシン間で共有することは、異なる仮想マシン間でAPD116の動作を時分割することによって達成される。仮想化スケジューラ212は、このタスクを実行して、仮想マシンに割り当てられた実行時間の経過に応じて、異なる仮想マシンに対するワークを切り替えることによって、異なる仮想マシンの動作をスケジューリングする。APD116は、異なる仮想マシン間で共有されるが、各仮想マシンは、それが実際のハードウェアAPD116の個々のインスタンスを有すると認識する。「仮想機能」及び「物理機能」という用語は、PCIe規格のアドレス指定パラメータを指すが、これらの機能が異なるVMにマッピングされることから、本明細書では、特定の仮想マシンに割り当てられたAPD116の論理インスタンスも、仮想機能又は物理機能と呼ぶ。換言すれば、本開示は、例えば、「仮想機能(又は物理機能)がタスクを実行する」、「動作が仮想機能(又は物理機能)に対して実行される」等などの用語を使用することができ、この用語は、APD116が、その特定の仮想機能若しくは物理機能に関連するVM、又は、その仮想機能若しくは物理機能に関連するVMの代わりに割り当てられたタイムスライスの間、そのタスクを実行することを意味すると解釈されるべきである。
ホストVM202及びゲストVM204は、オペレーティングシステム120を有する。ホストVM202は、管理アプリケーション123と、GPU仮想化ドライバ121と、を有する。ゲストVM204は、アプリケーション126と、オペレーティングシステム120と、GPUドライバ122と、を有する。これらの要素は、プロセッサ102及びAPD116の動作の様々な特徴を制御する。
上述したように、ホストVM202は、ゲストVM204のためのAPD116における仮想化の態様を構成する。したがって、ホストVM202は、管理アプリケーション123及びGPU仮想化ドライバ121等の他の要素の実行をサポートするオペレーティングシステム120を含む。GPU仮想化ドライバ121は、APD116の仮想化の態様を理解することなく、単にグラフィックレンダリング(又は、他の)コマンドと通信してAPD116に送信する従来のグラフィックスドライバではない。代わりに、GPU仮想化ドライバ121は、APD116と通信して、仮想化のためにAPD116の様々な態様を構成する。一例では、GPU仮想化ドライバ121は、異なるVM間でAPD116を共有するためのタイムスライシングメカニズムに関連するパラメータを管理して、例えば、各タイムスライスの時間の長さ、異なる仮想機能間でのスイッチング方法等のパラメータを制御する。GPU仮想化ドライバ121は、グラフィックス関連コマンドをAPD116に送信する異なるグラフィックドライバとは別のものであってもよいし、このようなグラフィックス関連ドライバに組み込まれてもよい。換言すれば、仮想化関連機能は、グラフィックス機能とは別のドライバに含まれていてもよいし、グラフィックス機能を有する単一のドライバに含まれていてもよい。管理アプリケーション123は、仮想化を管理するための1つ以上のタスク、及び/又は、複数の異なるゲストVM204からのデータを含む1つ以上のタスクを実行する。一例では、ホストVM202は、管理アプリケーション123を介してデスクトップ合成機能を実行する。デスクトップ合成機能は、異なるゲストVM204からレンダリングされたフレームにアクセスし、これらのフレームを単一の出力ビューに合成する。
ゲストVM204は、オペレーティングシステム120と、GPUドライバ122と、アプリケーション126と、を含む。オペレーティングシステム120は、プロセッサ102上で実行可能な任意のタイプのオペレーティングシステムである。GPUドライバ122は、GPUドライバ122が実行しているゲストVM204用のAPD116の動作を制御し、グラフィックスレンダリングタスク又は他のワーク等のタスクをAPD116に送信して処理する、という点において、APD116用の「ネイティブ」ドライバである。ネイティブドライバは、ベアメタル非仮想化コンピューティングシステムに存在するGPU用のデバイスドライバの未修正又は僅かに修正されたバージョンであってもよい。
GPU仮想化ドライバ121は、ホストVM202内に含まれているものとして説明されているが、他の実施態様では、GPU仮想化ドライバ121は、代わりにハイパバイザ206に含まれる。このような実施形態では、ホストVM202が存在せず、ホストVM202の機能は、ハイパバイザ206によって実行されてもよい。
ホストVM202及びゲストVM204のオペレーティングシステム120は、ハードウェアと通信することと、リソース及びファイルシステムを管理することと、仮想メモリを管理することと、ネットワークスタックを管理することと、他の多くの機能等と、の仮想化環境におけるオペレーティングシステムの標準的な機能を実行する。GPUドライバ122は、例えば、APD116の様々な機能にアクセスするために、アプリケーションプログラミングインタフェース(API)をソフトウェア(例えば、アプリケーション126)に提供することによって、任意の特定のゲストVM204用のAPD116の動作を制御する。ドライバ122は、APD116のコンポーネント(例えば、以下により詳細に説明するSIMDユニット138等)を処理することによって、実行されるプログラムをコンパイルするジャストインタイムコンパイラも含む。任意の特定のゲストVM204に関して、GPUドライバ122は、他のVM用ではなく、当該ゲストVM204に関連するAPD116上の機能を制御する。
APD116は、例えば、グラフィックス動作及び非グラフィックス動作等のように並列処理に適している選択された機能のためのコマンド及びプログラムを実行する。APD116は、ピクセル演算、幾何学的計算等のグラフィックスパイプライン動作を実行し、プロセッサ102から受信したコマンドに基づいてディスプレイデバイス118に画像をレンダリングするために使用することができる。APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスクに関連する動作等のように、グラフィックス動作に直接関連しない計算処理動作も実行する。コマンドプロセッサ213は、プロセッサ102(又は、別のソース)からコマンドを受信し、これらのコマンドに関連するタスクを、グラフィックス処理パイプライン134及び計算ユニット132等のAPD116の様々な要素に委任する。VMは、ドアベルメモリ214を用いて、ドアベルメカニズムを介して実行される新たなタスクに関してAPD116に通知する。
APD116は、SIMDパラダイムに従う並列方式で、プロセッサ102の要求に応じて動作を実行するように構成された1つ以上のSIMDユニット138を有する計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、これにより、同じプログラムを実行するが、異なるデータを用いてそのプログラムを実行することができるというものである。一例では、各SIMDユニット138は、16のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータを用いて当該命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合、予測を用いてレーンをオフに切り替えることができる。予測は、分岐する制御フローを有するプログラムを実行するために使用することができる。具体的には、制御フローが個々のレーンによって実行される計算に基づく、条件分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測及び異なる制御フローパスの連続実行は、任意の制御フローを可能にする。
計算ユニット132における実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンで並列に実行されるプログラムの単一インスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138上で「ウェーブフロント」として同時に実行され得る。1つ以上のウェーブフロントは、同じプログラムを実行するように指定されたワークアイテムの集合を含む「ワークグループ」に含まれる。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行され得る。或いは、ウェーブフロントは、単一のSIMDユニット138上で順次実行されてもよいし、異なるSIMDユニット138上で部分的又は完全に並列に実行されてもよい。ウェーブフロントは、単一のSIMDユニット138上で同時に実行可能なワークアイテムの最大集合と考えることができる。したがって、プロセッサ102から受信したコマンドは、特定のプログラムが単一のSIMDユニット138上で同時に実行できない程度に並列化されることを示す場合、当該プログラムは、複数のSIMDユニット138上で並列化されるか、同じSIMDユニット138上で直列化される(又は、必要に応じて並列化と直列化の両方が行われる)ウェーブフロントに分割される。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上で様々なウェーブフロントをスケジューリングすることに関連する動作を実行するように構成されている。
計算ユニット132によって与えられる並列処理は、ピクセル値計算、頂点変換、及び、他のグラフィックス動作等のグラフィック関連動作に適している。したがって、いくつかの場合では、プロセッサ102からグラフィックス処理コマンドを受信するグラフィックスパイプライン134は、計算タスクを、並列実行するために計算ユニット132に提供する。
計算ユニット132は、グラフィックスに関連しない、又は、グラフィックスパイプライン134の「通常」動作(例えば、グラフィックスパイプライン134の動作のために実行される処理を補助するために実行されるカスタム動作)の一部として実行されない計算タスクを実行するために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、このような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
仮想化スケジューラ212は、異なる仮想マシン間でのAPD116の時間共有を管理する。各タイムスライスにおいて、仮想化スケジューラ212は、そのタイムスライスに関連付けられた仮想マシンのワークをAPD116で進行させる。ドアベルメモリ214は、特定の仮想マシンについてAPD116上でワークを実行する準備ができていることを示す指標であるドアベルを記憶する。ドアベルメカニズムは、何れの仮想マシンがAPD116上でのワークのために現在スケジュールされているかに関して非同期に動作する。これは、ドアベルをドアベルメモリ214に配置したVM以外のVMのタスクがAPD116上で実行されている場合に、特定の仮想マシンがドアベルをドアベルメモリ214に配置してもよいことを意味する。
APD116上の仮想化は、以下のように動作する。仮想化スケジューラ212は、APD116を共有するVM(ホストVM202及びゲストVMS204の両方)について、APD116上でタイムスライスを管理する。仮想化スケジューラ212は、タイムスライスを追跡し、特定のVMのタイムスライスが満了したときにAPD116上のワークを停止し、次のタイムスライスを有するVMのワークを開始する。したがって、仮想化スケジューラ212は、APD116上で実行されるワークを有する異なるVM間の切り替えを行う。
特定のVMに関連付けられた特定のタイムスライスに関するワークを開始するために、仮想化スケジューラ212は、当該VMに関連付けられた仮想機能を選択して実行させ、当該VMの実行をコマンドプロセッサ213に開始させる。コマンドプロセッサ213は、そのVMのドアベルを検査し、ドアベルは、処理されるコマンドが記憶される場所を示すコマンドバッファへのポインタである。コマンドプロセッサ213は、ドアベルによって示されたコマンドを実行して、例えばグラフィックス処理パイプライン134内及び/又は汎用コンピューティングワーク等のコマンドをAPD116APD116上で実行する。
APD116の他の部分のうち、仮想化の文脈において機能が具体的に説明されていない部分は、上述したように、仮想化が発生していないかのように動作することに留意されたい。例えば、グラフィックス処理パイプライン134は、コマンドプロセッサ213によってフェッチされたグラフィックスレンダリングコマンドに応じて、グラフィックスレンダリングに関連する動作を実行する。グラフィックス処理パイプライン134に関連するグラフィックスレンダリングコマンドの少なくとも一部、及び/又は、汎用計算動作のために、SIMDスケジューラ136は、コマンドプロセッサ213によって処理されるコマンドに従って、計算ユニット132のSIMDユニット138上で実行されるウェーブフロントを生成及び管理する。一例では、コマンドは、グラフィックス処理パイプライン134の他の機能のうち特定のピクセルシェーダプログラムを用いて、ジオメトリの特定の部分をレンダリングするためのコマンドである。グラフィックス処理パイプライン134は、入力アセンブラステージ302と、ハルシェーダステージ306と、テッセレータステージ308等と、のグラフィックス処理パイプライン134の様々なステージを通じてジオメトリを処理し、ピクセルシェーダステージ316において、SIMDユニット138上で特定のピクセルシェーダを用いてジオメトリを処理させる。SIMDスケジューラ136は、実行のためにピクセルシェーダのウェーブフロントを管理し、スケジューリングする。
図3は、図2に示すグラフィックス処理パイプライン134の追加の詳細を示すブロック図である。グラフィックス処理パイプライン134は、各々が特定の機能を実行するステージを含む。ステージは、グラフィックス処理パイプライン134の機能の小区分を表す。各ステージは、プログラム可能な計算ユニット132において実行されるシェーダプログラムとして、又は、計算ユニット132の外部の固定機能のプログラム不可能なハードウェアとして、部分的に若しくは完全に実装される。
入力アセンブラステージ302は、ユーザが充填したバッファ(例えば、プロセッサ102によって実行されるアプリケーション126等のソフトウェアの要求によって充填されるバッファ)からプリミティブデータを読み出し、当該データを、パイプラインの残りの部分によって使用されるプリミティブにアセンブルする。入力アセンブラステージ302は、ユーザが充填したバッファに含まれるプリミティブデータに基づいて、異なるタイプのプリミティブを生成することができる。入力アセンブラステージ302は、パイプラインの残りの部分で使用するために、アセンブルされたプリミティブをフォーマットする。
頂点シェーダステージ304は、入力アセンブラステージ302によってアセンブルされたプリミティブの頂点を処理する。頂点シェーダステージ304は、変換、スキニング、モーフィング及び頂点毎のライティング等の様々な頂点毎の操作を実行する。変換操作は、頂点の座標を変換するための様々な操作を含むことができる。これらの操作には、モデリング変換、表示変換、投影変換、パースペクティブ分割及びビューポート変換のうち1つ以上が含まれてもよい。本明細書では、このような変換は、変換が実行される頂点の座標、つまり「位置」を変更するものとみなされる。頂点シェーダステージ304の他の操作によって、座標以外の属性が変更されてもよい。
頂点シェーダステージ304は、1つ以上の計算ユニット132上で実行される頂点シェーダプログラムとして部分的に又は完全に実装される。頂点シェーダプログラムは、プロセッサ102によって提供され、コンピュータプログラマによって事前に書かれたプログラムに基づいている。ドライバ122は、このようなコンピュータプログラムをコンパイルして、計算ユニット132内での実行に適したフォーマットを有する頂点シェーダプログラムを生成する。
ハルシェーダステージ306、テッセレータステージ308及びドメインシェーダステージ310は、連携してテッセレーションを実施し、プリミティブを更に分割することによって、単純なプリミティブをより複雑なプリミティブに変換する。ハルシェーダステージ306は、入力プリミティブに基づいてテッセレーションのためのパッチを生成する。テッセレータステージ308は、パッチのサンプルセットを生成する。ドメインシェーダステージ310は、パッチのサンプルに対応する頂点の頂点位置を計算する。ハルシェーダステージ306及びドメインシェーダステージ310は、計算ユニット132上で実行されるシェーダプログラムとして実装することができる。
ジオメトリシェーダステージ312は、プリミティブ毎に頂点操作を実行する。ジオメトリシェーダステージ312によって、例えば、ポイントスプライト展開、動的パーティクルシステム操作、ファーフィン(fur-fin)生成、シャドウボリューム生成、キューブマップへのシングルパスレンダリング、プリミティブ毎のマテリアルスワップ、プリミティブ毎のマテリアル設定等の操作を含む、様々な異なるタイプの操作を実行することができる。いくつかの例では、計算ユニット132上で実行されるシェーダプログラムは、ジオメトリシェーダステージ312の操作を実行する。
ラスタライザステージ314は、上流で生成された単純なプリミティブを受け入れてラスタライズする。ラスタライズは、特定のプリミティブによってカバーされているスクリーンピクセル(又は、サブピクセルサンプル)を判別することから構成されている。ラスタライズは、固定機能ハードウェアによって実行される。
ピクセルシェーダステージ316は、上流で生成されたプリミティブとラスタライズの結果とに基づいて、スクリーンピクセルの出力値を計算する。ピクセルシェーダステージ316は、テクスチャをテクスチャメモリから適用することができる。ピクセルシェーダステージ316の操作は、計算ユニット132上で実行されるシェーダプログラムによって実行される。
出力マージャステージ318は、ピクセルシェーダステージ316からの出力を受信し、これらの出力を結合(マージ)し、zテスト及びアルファブレンディング等の操作を行うことによって、スクリーンピクセルの最終色を決定する。
図2に戻って参照すると、仮想化スケジューラ212は、APD116上で現在実行されているワークを有するVMのタイムスライスが満了したと判別した場合、APD116に、新たなワークを受け入れることなくそのワークを完了させる(例えば、ドアベルメモリ214に記憶されたドアベルによって指し示される新たなタスクを受け入れないが、グラフィックス処理パイプライン134及び/又は計算ユニット132内で既に「インフライト」のタスクを完了させる)。タスクを完了させることは、APD116内で現在インフライトのワークを、完了させ、ターゲットメモリ位置に書き込まれた最終的な出力値を有するのを可能にすることを含む。例えば、グラフィックスレンダリングの場合、出力ピクセルは、フレームバッファ(又は、他のレンダリングターゲット)に書き込まれる。(APD116において現在実行されているワークが完了しない又は完了するのに非常に長い時間がかかるストールが発生し得ることに留意されたい。)仮想化スケジューラ212、GPU仮想化ドライバ121、ホストVM202内の管理アプリケーション123、及び/又は、別のエンティティは、独立して動作してもよいし、ストールを処理するために協働してもよい。
特定のVMについてのワークが完了した後、仮想化スケジューラ212は、次のVMについてのタイムスライスに進み、コマンドプロセッサ213に、ドアベルメモリ214の内容に基づいて当該VMのタスクをフェッチさせ、グラフィックス処理パイプライン134上及び/又は(例えば、汎用計算のために)計算ユニット132においてこれらのタスクを直接実行させる。満了したタイムスライスに関するワークの実行を停止し、次のVMについてのワークを開始するこのプロセスは、APD116の時間共有を異なるVMに提供し続ける。
あるVMについてのワークの実行と、別のVMについてのワークの実行との間の変更は、本明細書では「仮想化コンテキストスイッチ」と呼ばれる。仮想化コンテキストスイッチは、あるVMについてのワークを停止して別のVMについてのワークを開始することに加えて、スイッチ先のVMの状態を保存し、スイッチ先のVMの状態をロードすることも含む。概して、状態は、APD116のために実行されるワークフローの態様を管理するAPD116の全体を通して又はAPD116のために記憶された値を含む。様々な例では、状態は、グラフィックスがどのようにレンダリングされるか、SIMDワークがどのように実行されるか、シェーダがどのように実行されるかを制御し、APD116上の動作の様々な他の態様を制御するレジスタ(例えば、レジスタ216)に記憶された値を含むことができる。状態を保存することは、状態を、使用中の位置(状態値が実際にAPD116の動作に影響する場合)からVMの状態保存位置に書き込むことを含む。状態をロードすることは、状態を、VMの状態保存位置から使用中の位置にロードすることを含む。
APD116は、APD116上で1つ以上の機能を実行する1つ以上のプログラマブルマイクロコントローラ230を含む。各マイクロコントローラ230は、ファームウェアを実行して、関連する機能を実行する。少なくとも1つのマイクロコントローラ230によって実行されるファームウェアは、VF毎のファームウェア232である。VF毎のファームウェア232は、異なるVFに対して異なるバージョンを実行することができるファームウェアである。マイクロコントローラ230は、VF毎のファームウェアアドレス233を参照して、所定のVFに対して実行するファームウェアのアドレスを知る。仮想化コンテキストスイッチが発生すると、マイクロコントローラ230は、現在の仮想機能に関するファームウェアの実行を停止し、後続の機能に関するファームウェアの実行を開始する。VF毎のファームウェアアドレス233は、APD116の初期化の際に指定される。いくつかの例では、VF毎のファームウェアアドレスは、特定の仮想機能又は物理機能についてのみ「理解可能」であり、他の如何なる機能によっても理解できない。ある例では、この「理解可能性」に対する「制限」は、アドレスが、VF毎のファームウェアアドレスが関連付けられているVMのゲスト仮想アドレス空間又はゲスト物理アドレス空間内にあるという事実に起因する。したがって、アドレスは、1つの特定のVMに対してのみ意味を有する。
図4は、一例による、変更するファームウェアに関連する図1のワークエンジン117の特徴を示すブロック図である。図4は、図2の要素の多くを示しているが、明瞭にするために省略されたAPD116を図示していない。
様々なワークエンジン117が示されている。1つ以上のワークエンジン117は、1つ以上のハードウェアアクセラレータ234と、1つ以上のマイクロコントローラ230と、1つ以上の仮想機能毎のファームウェアアドレス233と、を含む。本明細書において、「ハードウェアアクセラレータ234」及び「マイクロコントローラ230」という用語を使用することができ、これらの用語は、特定のワークエンジン117が1つ以上のハードウェアアクセラレータ234及び/又は1つ以上のマイクロコントローラ230を含むことを示している。様々なワークエンジン117は、様々なタイプのワークを実行するために割り当てられている。このようなワークの一例は、例えばH.264コーデックに基づいてAPD116によって生成された画像のエンコーディング等のビデオエンコーディングである。
ワークエンジン117のハードウェアアクセラレータ234及びマイクロコントローラ230は、連携して、関連するワークエンジン117に割り当てられたワークを実行する。マイクロコントローラ230は、ソフトウェア(図示するように、APD116内のメモリ、システムメモリ104又は他の場所に記憶されたVF毎のファームウェア232)を実行してワークを実行するプログラマブルコンポーネントである。VF毎のファームウェア232は、破線で示されており、VF毎のファームウェア232の特定の位置は、必須ではない(例えば、VF毎のファームウェア232を、APD116、システムメモリ104又は別の場所に記憶することができる)ことを示していることに留意されたい。マイクロコントローラ230は、他のタスクのうち、ハードウェアアクセラレータ234の動作を制御する。また、マイクロコントローラ230は、ワークエンジン117によって実行されるワークに関連するデータを任意に処理する。ハードウェアアクセラレータ234は、ソフトウェアを実行しないが、「固定機能」であると考えられるハードウェアを含む。マイクロコントローラ230は、VF毎のファームウェア232を実行することによって、ハードウェアアクセラレータ234を構成及び/又は制御して、所望のワークを実行する。典型的には、(常にではないが)ハードウェアアクセラレータ234は、(例えば、プログラマブルマイクロコントローラ230によって又はプロセッサ102上で)ソフトウェアで実行されるよりも高速に、所望のワークを実行する。
特定のワークエンジン117に関連するワークを実行するために、マイクロコントローラ230は、VF毎のファームウェア232を実行する。VF毎のファームウェア232は、通常、データを特定の方法で処理するようにハードウェアアクセラレータ234を構成するための命令と、ハードウェアアクセラレータ234と協働してマイクロコントローラ230自体にデータを処理させる命令と、の両方を含む。いくつかの例では、ハードウェアアクセラレータ234を構成することは、レジスタ値を設定することを含む。いくつかの例では、データを処理することは、(例えば、プロセッサ102からの、又は、ワークエンジン117自体からを含むデバイス100のいくつかの他のコンポーネントからの)入力としてデータを受信することと、VF毎のファームウェア232によって指定される命令に従って当該データを処理することと、処理されたデータを1つ以上のハードウェアアクセラレータ234に渡すことと、を含む。いくつかの例では、データを処理することは、1つ以上のハードウェアアクセラレータ234からデータを受信することと、VF毎のファームウェア232の命令に従って当該データを処理することと、を代替的又は追加的に含む。この処理の後、マイクロコントローラ230は、処理されたデータを、適切なコンポーネント(例えば、さらなる処理のためのハードウェアアクセラレータ234、ワークエンジン117からの出力としてのプロセッサ102、又は、他の機能のための別のコンポーネント)に転送する。
上述したように、1つ以上のワークエンジン117が仮想化される。APD116と同様に、ワークエンジン117は、異なる仮想機能間でワークの実行の切り替えを行う。APD116と同様に、異なる仮想マシンが、ワークエンジン117上で異なる仮想機能に関連付けられる。仮想化スケジューラ236は、現在の仮想機能についてのワークを停止し、後続の仮想機能についてのワークを開始することによって、異なる仮想機能間でのワークの切り替えを行う。仮想化スケジューラ236は、ワークエンジン117内の仮想化スケジューラ236のオプションの位置を示すために、点線で示されている。より具体的には、ワークエンジン117内に仮想化スケジューラ236が存在しない実装では、プロセッサ102又は他のエンティティ上で実行される仮想化ドライバ(図示省略)によって仮想化スケジューリング制御が行われる。したがって、本明細書では、仮想化スケジューラ236によって実行されるように説明する動作は、仮想化スケジューリングを実行する任意のエンティティによって実行可能であると理解されるべきである。ワークエンジン117上での仮想機能間の切り替え動作は、(APD116と同様に)仮想化コンテキストスイッチと呼ばれる。ワークエンジン117上の仮想化は、デバイス100の他の要素の仮想化に対して非同期であることに留意されたい。したがって、ワークエンジン117は、異なる仮想マシンがプロセッサ102上で実行されている間、及び、さらに別の仮想マシンについてのワークがAPD116上で実行されている間に、1つの仮想マシンについてのワークに関して動作していてもよい。
VF毎のファームウェア232は、異なるバージョンのファームウェアが異なる仮想機能について実行可能であるという意味において「VF毎」である。全ての仮想機能が異なるファームウェアバージョンを実行可能であり、いくつかの仮想機能が同じファームウェアバージョンを実行可能であって、それ以外の仮想機能が異なるファームウェアバージョンを実行可能であり、又は、全ての仮想機能が同じファームウェアバージョンを実行可能であることに留意されたい。「異なるバージョンのファームウェアが異なる仮想機能について実行可能であること」とは、仮想機能のうち一部又は全てが、同じ又は異なるファームウェアバージョンを実行することを意味する。仮想化コンテキストスイッチが発生したときに異なるファームウェアを実行させるために、VF毎のファームウェアアドレス233は、例えば、初期化時、即ち、プロセッサ102が仮想マシンの起動時にワークエンジン117を構成する場合に、VF毎のファームウェア232のアドレスを含むように構成されている。VF毎のファームウェアアドレス233は、仮想機能を、関連するファームウェアインスタンスに関連付ける。仮想化スケジューラ236が現在の仮想機能から後続の仮想機能への仮想化コンテキストスイッチを実行する場合、仮想化スケジューラ236は、マイクロコントローラ230に、後続の仮想機能に関連付けられたファームウェアインスタンスのアドレスについてVF毎のファームウェアアドレス233を検査させ、そのファームウェアを実行させる。仮想化コンテキストスイッチは、ワークエンジン117上で「リセット」を実行することも含み、ワークエンジン117は、現在の仮想機能についてのワークをハードウェアアクセラレータ234及びマイクロコントローラ230において停止させ、ハードウェアアクセラレータ234及びマイクロコントローラ230を再起動させる。再起動により、仮想化スケジューラ236は、ハードウェアアクセラレータ234の再初期化を実行し、マイクロコントローラ230のファームウェア位置を再プログラムする。再初期化及び再プログラミングが行われると、仮想化スケジューラ236は、ハードウェアアクセラレータ234及びマイクロコントローラ230に、保留中のジョブの処理を開始させる。
図5は、一例による、仮想化デバイス上でファームウェアを変更する方法500のフロー図である。図1~図4のシステムに関して説明したが、図示したステップ又は他の技術的に実行可能な順序で任意のシステムによって実行される方法500が本発明の範囲内にあることを理解されたい。
方法500は、ステップ502で開始し、ステップ502において、ワークエンジン117は、仮想化コンテキストスイッチがワークエンジン117上で発生すると判別する。様々な実施形態において、この判別は、ワークエンジン117の仮想化スケジューラ236、又は、デバイス内の他の場所の仮想化スケジューラによって行われる。さらに、いくつかの実施形態では、この判別は、現在の仮想機能の現在のタイムスライスについての時間が満了した後に行われる。
ステップ504において、仮想化スケジューラ236は、現在の仮想機能についてのワークエンジン上でのワークの実行を停止する。ステップ506において、ワークエンジン117は、後続の仮想機能についてのファームウェアのアドレスを取得する。ステップ508において、ワークエンジン117は、後続の仮想機能についてのファームウェアの実行を開始することを含む、後続の仮想機能についてのワークを開始する。
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。機能及び要素は、特定の組み合わせで上述したように説明されているが、各機能又は要素は、他の機能や要素なしに単独で使用されてもよいし、他の機能や要素を伴って若しくは伴わずに様々な組み合わせで使用されてもよい。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令、及び、ネットリストを含む他の中間データ(このような命令はコンピュータ可読媒体に記憶され得る)の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供される方法又はフローチャートは、汎用コンピュータ若しくはプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体(CD-ROMディスク等)、デジタル多用途ディスク(DVD)等が含まれる。

Claims (20)

  1. 仮想化処理デバイス上でファームウェアを実行する方法であって、
    前記仮想化処理デバイスの第1クライアントについて、前記仮想化処理デバイス上で前記第1クライアントの第1ファームウェアを実行することであって、前記仮想化処理デバイスは、仮想マシンを実行するプロセッサから受信したワークを実行するように構成されたハードウェアアクセラレータを備え、前記第1ファームウェアは、前記ハードウェアアクセラレータを介した前記ワークの処理を制御する、ことと、
    前記仮想化処理デバイスの第1クライアントから第2クライアントへの仮想化コンテキストスイッチを検出することと、
    前記仮想化コンテキストスイッチに応じて、前記仮想化処理デバイス上の前記第1ファームウェアの実行を停止し、前記仮想化処理デバイス上の第2ファームウェアの実行を開始することであって、前記第2ファームウェアは、前記第2クライアントに関連付けられており、前記第1ファームウェアとは異なっており、前記第2ファームウェアは、前記プロセッサから受信したワークの前記ハードウェアアクセラレータを介した処理を制御する、ことと、を含む、
    方法。
  2. 前記第1クライアントは、第1仮想機能に対応する、
    請求項1の方法。
  3. 前記第1仮想機能は、第1仮想マシンに対応しており、第1期間において、前記仮想化処理デバイスは、前記第1仮想マシンのワークを実行するように構成されている、
    請求項2の方法。
  4. 前記第2クライアントは、第2仮想機能に対応する、
    請求項1の方法。
  5. 前記第2仮想機能は、第2仮想マシンに対応しており、第2期間において、前記仮想化処理デバイスは、前記第2仮想マシンのワークを実行するように構成されている、
    請求項4の方法。
  6. 前記仮想化コンテキストスイッチに応じて、前記仮想化処理デバイス上の前記第1クライアントに関連するワークを停止することと、前記仮想化処理デバイス上の前記第2クライアントに関連するワークを開始することと、をさらに含む、
    請求項1の方法。
  7. 前記第1ファームウェア及び前記第2ファームウェアは、前記仮想化処理デバイスのハードウェアアクセラレータを制御する命令を含む、
    請求項1の方法。
  8. 前記第1ファームウェア及び前記第2ファームウェアは、前記仮想化処理デバイスのデータを処理する命令を含む、
    請求項1の方法。
  9. 前記仮想化処理デバイスは、ハードウェアアクセラレーテッドビデオエンコーダを含む、
    請求項1の方法。
  10. 仮想化処理デバイスであって、
    プロセッサと、
    仮想化スケジューラと、を備え、
    前記仮想化スケジューラは、
    前記仮想化処理デバイスの第1クライアントについて、前記仮想化処理デバイス上で前記第1クライアントの第1ファームウェアを実行することであって、前記仮想化処理デバイスは、仮想マシンを実行するプロセッサから受信したワークを実行するように構成されたハードウェアアクセラレータを備え、前記第1ファームウェアは、前記ハードウェアアクセラレータを介した前記ワークの処理を制御する、ことと、
    前記仮想化処理デバイスの第1クライアントから第2クライアントへの仮想化コンテキストスイッチを検出することと、
    前記仮想化コンテキストスイッチに応じて、前記仮想化処理デバイス上の前記第1ファームウェアの実行を停止し、前記仮想化処理デバイス上の第2ファームウェアの実行を開始することであって、前記第2ファームウェアは、前記第2クライアントに関連付けられており、前記第1ファームウェアとは異なっており、前記第2ファームウェアは、前記プロセッサから受信したワークの前記ハードウェアアクセラレータを介した処理を制御する、ことと、
    を行うように構成されている、
    仮想化処理デバイス。
  11. 前記第1クライアントは、第1仮想機能に対応する、
    請求項10の仮想化処理デバイス。
  12. 前記第1仮想機能は、第1仮想マシンに対応しており、第1期間において、前記仮想化処理デバイスは、前記第1仮想マシンのワークを実行するように構成されている、
    請求項11の仮想化処理デバイス。
  13. 前記第2クライアントは、第2仮想機能に対応する、
    請求項10の仮想化処理デバイス。
  14. 前記第2仮想機能は、第2仮想マシンに対応しており、第2期間において、前記仮想化処理デバイスは、前記第2仮想マシンのワークを実行するように構成されている、
    請求項13の仮想化処理デバイス。
  15. 前記仮想化スケジューラは、
    前記仮想化コンテキストスイッチに応じて、前記仮想化処理デバイス上の前記第1クライアントに関連するワークを停止することと、前記仮想化処理デバイス上の前記第2クライアントに関連するワークを開始することと、を行うように構成されている、
    請求項10の仮想化処理デバイス。
  16. 前記第1ファームウェア及び前記第2ファームウェアは、前記仮想化処理デバイスのハードウェアアクセラレータを制御する命令を含む、
    請求項10の仮想化処理デバイス。
  17. 前記第1ファームウェア及び前記第2ファームウェアは、前記仮想化処理デバイスのデータを処理する命令を含む、
    請求項10の仮想化処理デバイス。
  18. 前記仮想化処理デバイスは、ハードウェアアクセラレーテッドビデオエンコーダを含む、
    請求項10の仮想化処理デバイス。
  19. 第1プロセッサと、
    前記第1プロセッサの要求でワークを実行するように構成された仮想化処理デバイスと、を備え、
    前記仮想化処理デバイスは、
    第2プロセッサと、
    仮想化スケジューラと、を備え、
    前記仮想化スケジューラは、
    前記仮想化処理デバイスの第1クライアントについて、前記第1クライアントの第1ファームウェアを実行することであって、前記仮想化処理デバイスは、仮想マシンを実行するプロセッサから受信したワークを実行するように構成されたハードウェアアクセラレータを備え、前記第1ファームウェアは、前記ハードウェアアクセラレータを介した前記ワークの処理を制御する、ことと、
    前記仮想化処理デバイスの第1クライアントから第2クライアントへの仮想化コンテキストスイッチを検出することと、
    前記仮想化コンテキストスイッチに応じて、前記仮想化処理デバイス上の前記第1ファームウェアの実行を停止し、前記仮想化処理デバイス上の第2ファームウェアの実行を開始することであって、前記第2ファームウェアは、前記第2クライアントに関連付けられており、前記第1ファームウェアとは異なっており、前記第2ファームウェアは、前記プロセッサから受信したワークの前記ハードウェアアクセラレータを介した処理を制御する、ことと、
    を行うように構成されている、
    コンピューティングデバイス。
  20. 前記第1クライアントは、第1仮想機能に対応しており、前記第2クライアントは、第2仮想機能に対応している、
    請求項19のコンピューティングデバイス。
JP2019571290A 2017-06-30 2018-06-28 仮想化デバイス用のファームウェアの変更 Active JP7245179B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/639,971 US10459751B2 (en) 2017-06-30 2017-06-30 Varying firmware for virtualized device
US15/639,971 2017-06-30
PCT/IB2018/054821 WO2019003186A1 (en) 2017-06-30 2018-06-28 VARIATION OF FIRMWARE FOR VIRTUALIZED DEVICE

Publications (2)

Publication Number Publication Date
JP2020525914A JP2020525914A (ja) 2020-08-27
JP7245179B2 true JP7245179B2 (ja) 2023-03-23

Family

ID=64734833

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019571290A Active JP7245179B2 (ja) 2017-06-30 2018-06-28 仮想化デバイス用のファームウェアの変更

Country Status (6)

Country Link
US (3) US10459751B2 (ja)
EP (1) EP3646178B1 (ja)
JP (1) JP7245179B2 (ja)
KR (1) KR102605312B1 (ja)
CN (1) CN110741349A (ja)
WO (1) WO2019003186A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11789883B2 (en) * 2018-08-14 2023-10-17 Intel Corporation Inter-die communication of programmable logic devices
US20240168785A1 (en) * 2022-11-22 2024-05-23 Ati Technologies Ulc Remote desktop composition

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004522234A (ja) 2000-11-24 2004-07-22 キャサロン プロダクションズ, インコーポレイテッド 仮想スレッドを介したコンピューター多重タスク
JP2012220990A (ja) 2011-04-04 2012-11-12 Fujitsu Ltd ハイパーバイザ置き換え方法および情報処理装置
US20130191821A1 (en) 2011-01-11 2013-07-25 International Business Machines Corporation Transparent update of adapter firmware for self-virtualizing input/output device

Family Cites Families (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6414992B1 (en) * 1999-01-27 2002-07-02 Sun Microsystems, Inc. Optimal encoding of motion compensated video
JP4555569B2 (ja) * 2001-11-13 2010-10-06 セレーター ファーマシューティカルズ, インコーポレイテッド 増強された血中安定性を有する脂質キャリア組成物
US20040117793A1 (en) * 2002-12-17 2004-06-17 Sun Microsystems, Inc. Operating system architecture employing synchronous tasks
US7370324B2 (en) * 2003-09-30 2008-05-06 Intel Corporation Switching between a service virtual machine and a guest virtual machine in a virtual machine monitor environment
WO2006069493A1 (en) * 2004-12-31 2006-07-06 Intel Corporation An apparatus and method for cooperative guest firmware
US7542467B2 (en) * 2005-03-28 2009-06-02 Intel Corporation Out-of-band platform switch
US7545381B2 (en) * 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US7583268B2 (en) * 2005-11-10 2009-09-01 Via Technologies, Inc. Graphics pipeline precise interrupt method and apparatus
US7689748B2 (en) * 2006-05-05 2010-03-30 Ati Technologies, Inc. Event handler for context-switchable and non-context-switchable processing tasks
US7659901B2 (en) * 2006-07-24 2010-02-09 Microsoft Corporation Application program interface for programmable graphics pipeline
US7640421B1 (en) * 2006-07-28 2009-12-29 Nvidia Corporation Method and system for determining context switch state
US8467528B2 (en) * 2006-08-31 2013-06-18 Advanced Micro Devices, Inc. Multimedia content protection
JP2008090657A (ja) * 2006-10-03 2008-04-17 Hitachi Ltd ストレージシステム及び制御方法
WO2008073618A2 (en) * 2006-11-06 2008-06-19 Devicevm, Inc. Instant on platform
US8019451B2 (en) * 2006-11-22 2011-09-13 Target Brands, Inc. Financial transaction product with media player
US8281303B2 (en) * 2007-10-31 2012-10-02 Hewlett-Packard Development Company, L.P. Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine
US8139595B2 (en) * 2008-01-11 2012-03-20 International Business Machines Corporation Packet transfer in a virtual partitioned environment
US8055872B2 (en) * 2008-02-21 2011-11-08 Arm Limited Data processor with hardware accelerator, accelerator interface and shared memory management unit
US20100107148A1 (en) * 2008-10-28 2010-04-29 International Business Machines Corporation Check-stopping firmware implemented virtual communication channels without disabling all firmware functions
US8082426B2 (en) * 2008-11-06 2011-12-20 Via Technologies, Inc. Support of a plurality of graphic processing units
US9405931B2 (en) * 2008-11-14 2016-08-02 Dell Products L.P. Protected information stream allocation using a virtualized platform
US8199459B2 (en) * 2009-07-30 2012-06-12 Medtronic, Inc. Energy device with a first and second separator material
US8656222B2 (en) * 2009-07-30 2014-02-18 Vmware, Inc. Method and system for recording a selected computer process for subsequent replay
US8490189B2 (en) * 2009-09-25 2013-07-16 Intel Corporation Using chipset-based protected firmware for host software tamper detection and protection
US8589302B2 (en) * 2009-11-30 2013-11-19 Intel Corporation Automated modular and secure boot firmware update
US8171529B2 (en) * 2009-12-17 2012-05-01 Intel Corporation Secure subscriber identity module service
US20110154023A1 (en) * 2009-12-21 2011-06-23 Smith Ned M Protected device management
AU2010340813B2 (en) 2010-01-07 2015-01-15 Bae Systems Plc A method of detecting a clutter return at a sensor
US8429651B2 (en) * 2010-01-20 2013-04-23 International Business Machines Corporation Enablement and acceleration of live and near-live migration of virtual machines and their associated storage across networks
US8490868B1 (en) * 2010-04-12 2013-07-23 Diebold Self-Service Systems Division Of Diebold, Incorporated Banking system controlled responsive to data bearing records
US8365985B1 (en) * 2010-04-12 2013-02-05 Diebold Self-Service Systems Division Of Diebold, Incorporated Banking system controlled responsive to data bearing records
US8861517B2 (en) * 2010-04-20 2014-10-14 Los Alamos National Security, Llc Petaflops router
US20110261885A1 (en) * 2010-04-27 2011-10-27 De Rivaz Peter Francis Chevalley Method and system for bandwidth reduction through integration of motion estimation and macroblock encoding
US10482254B2 (en) * 2010-07-14 2019-11-19 Intel Corporation Domain-authenticated control of platform resources
US9069622B2 (en) * 2010-09-30 2015-06-30 Microsoft Technology Licensing, Llc Techniques for load balancing GPU enabled virtual machines
US9135044B2 (en) * 2010-10-26 2015-09-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Virtual function boot in multi-root I/O virtualization environments to enable multiple servers to share virtual functions of a storage adapter through a MR-IOV switch
US8776060B2 (en) * 2010-11-04 2014-07-08 Lsi Corporation Methods and structure for near-live reprogramming of firmware in storage systems using a hypervisor
US20120117555A1 (en) * 2010-11-08 2012-05-10 Lsi Corporation Method and system for firmware rollback of a storage device in a storage virtualization environment
US8645755B2 (en) * 2010-12-15 2014-02-04 International Business Machines Corporation Enhanced error handling for self-virtualizing input/output device in logically-partitioned data processing system
US8677356B2 (en) 2011-01-11 2014-03-18 International Business Machines Corporation Adjunct partition work scheduling with quality of service attributes
US9239732B2 (en) * 2011-02-16 2016-01-19 Microsoft Technology Licensing Llc Unrolling aggregation operations in asynchronous programming code having multiple levels in hierarchy
US8745614B2 (en) * 2011-05-13 2014-06-03 Lsi Corporation Method and system for firmware upgrade of a storage subsystem hosted in a storage virtualization environment
EP2725488A1 (en) * 2011-06-21 2014-04-30 Fujitsu Limited Information processing device, virtual machine management method and virtual machine management program
US20130007322A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Hardware Enabled Lock Mediation
US9727385B2 (en) * 2011-07-18 2017-08-08 Apple Inc. Graphical processing unit (GPU) implementing a plurality of virtual GPUs
US20130097244A1 (en) * 2011-09-30 2013-04-18 Clearone Communications, Inc. Unified communications bridging architecture
US9411654B2 (en) * 2011-12-16 2016-08-09 International Business Machines Corporation Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation
US9311127B2 (en) * 2011-12-16 2016-04-12 International Business Machines Corporation Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies
US20130174144A1 (en) 2011-12-28 2013-07-04 Ati Technologies Ulc Hardware based virtualization system
US9035956B1 (en) * 2012-05-08 2015-05-19 Apple Inc. Graphics power control with efficient power usage during stop
EP2742425A1 (en) * 2012-05-29 2014-06-18 Qatar Foundation Graphics processing unit controller, host system, and methods
US10095526B2 (en) * 2012-10-12 2018-10-09 Nvidia Corporation Technique for improving performance in multi-threaded processing units
US9053025B2 (en) * 2012-12-28 2015-06-09 Intel Corporation Apparatus and method for fast failure handling of instructions
US8954788B2 (en) * 2013-02-13 2015-02-10 Lsi Corporation Methods and structure for single root input/output virtualization enhancement in peripheral component interconnect express systems
US9684529B2 (en) * 2013-02-21 2017-06-20 Red Hat Israel, Ltd. Firmware and metadata migration across hypervisors based on supported capabilities
US9747185B2 (en) * 2013-03-26 2017-08-29 Empire Technology Development Llc Acceleration benefit estimator
US9201682B2 (en) * 2013-06-21 2015-12-01 Ati Technologies Ulc Virtualized device reset
US9396513B2 (en) * 2013-08-05 2016-07-19 Intel Corporation Using group page fault descriptors to handle context switches and process terminations in graphics processors
US9910675B2 (en) * 2013-08-08 2018-03-06 Linear Algebra Technologies Limited Apparatus, systems, and methods for low power computational imaging
DE102013216847B4 (de) * 2013-08-23 2023-06-01 Siemens Mobility GmbH Verfahren, Vorrichtung und System zur Überwachung einer Sicherheits-Netzübergangseinheit
US9275429B2 (en) * 2014-02-17 2016-03-01 Qualcomm Incorporated Device hang detection and recovery
US9542211B2 (en) * 2014-03-26 2017-01-10 Intel Corporation Co-designed dynamic language accelerator for a processor
GB2525003B (en) * 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data Processing Systems
US9575807B2 (en) * 2014-04-15 2017-02-21 Intel Corporation Processing accelerator with queue threads and methods therefor
US10031770B2 (en) * 2014-04-30 2018-07-24 Intel Corporation System and method of delayed context switching in processor registers
US9996386B2 (en) * 2014-07-23 2018-06-12 Intel Corporation Mid-thread pre-emption with software assisted context switch
US10339141B2 (en) * 2014-10-03 2019-07-02 The Regents Of The University Of Michigan Detecting at least one predetermined pattern in stream of symbols
US10282227B2 (en) * 2014-11-18 2019-05-07 Intel Corporation Efficient preemption for graphics processors
US9626313B2 (en) * 2014-12-18 2017-04-18 Qualcomm Incorporated Trace buffer based replay for context switching
US9483706B2 (en) * 2015-01-08 2016-11-01 Linear Algebra Technologies Limited Hardware accelerator for histogram of gradients
US10114675B2 (en) * 2015-03-31 2018-10-30 Toshiba Memory Corporation Apparatus and method of managing shared resources in achieving IO virtualization in a storage device
US10489178B2 (en) * 2015-04-28 2019-11-26 Altera Corporation Network functions virtualization platforms with function chaining capabilities
US9992204B2 (en) * 2015-05-06 2018-06-05 International Business Machines Corporation Virtual machine access control in mobile computing device based on positional range from beacon signal
US9378043B1 (en) * 2015-05-28 2016-06-28 Altera Corporation Multilayer quality of service (QOS) for network functions virtualization platforms
US10297003B2 (en) * 2015-09-21 2019-05-21 Qualcomm Incorporated Efficient saving and restoring of context information for context switches
US9940123B1 (en) * 2015-12-29 2018-04-10 Amazon Technologies, Inc. Updating device code through a bus
US10210593B2 (en) * 2016-01-28 2019-02-19 Qualcomm Incorporated Adaptive context switching
US10019280B2 (en) * 2016-03-25 2018-07-10 Intel Corporation Technologies for dynamically managing data bus bandwidth usage of virtual machines in a network device
US10055234B1 (en) * 2016-06-08 2018-08-21 American Megatrends, Inc. Switching CPU execution path during firmware execution using a system management mode
US10216254B1 (en) * 2016-06-29 2019-02-26 Altera Corporation Methods and apparatus for selectively extracting and loading register states
WO2018053829A1 (en) * 2016-09-26 2018-03-29 Intel Corporation Apparatus and method for hybrid layer of address mapping for virtualized input/output implementation
US10241947B2 (en) * 2017-02-03 2019-03-26 Intel Corporation Hardware-based virtual machine communication
US10491666B2 (en) * 2017-04-03 2019-11-26 Sony Interactive Entertainment America Llc Systems and methods for using a distributed game engine
US20180295375A1 (en) * 2017-04-05 2018-10-11 Lyrical Labs Video Compression Technology, LLC Video processing and encoding
US10891773B2 (en) * 2017-04-07 2021-01-12 Intel Corporation Apparatus and method for efficient graphics virtualization
US10282812B2 (en) * 2017-04-09 2019-05-07 Intel Corporation Page faulting and selective preemption
US10474490B2 (en) * 2017-06-29 2019-11-12 Advanced Micro Devices, Inc. Early virtualization context switch for virtualized accelerated processing device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004522234A (ja) 2000-11-24 2004-07-22 キャサロン プロダクションズ, インコーポレイテッド 仮想スレッドを介したコンピューター多重タスク
US20130191821A1 (en) 2011-01-11 2013-07-25 International Business Machines Corporation Transparent update of adapter firmware for self-virtualizing input/output device
JP2012220990A (ja) 2011-04-04 2012-11-12 Fujitsu Ltd ハイパーバイザ置き換え方法および情報処理装置

Also Published As

Publication number Publication date
KR20200020692A (ko) 2020-02-26
KR102605312B1 (ko) 2023-11-23
CN110741349A (zh) 2020-01-31
US10459751B2 (en) 2019-10-29
US20190004842A1 (en) 2019-01-03
US20200034183A1 (en) 2020-01-30
WO2019003186A1 (en) 2019-01-03
EP3646178A4 (en) 2021-04-21
JP2020525914A (ja) 2020-08-27
EP3646178B1 (en) 2023-07-26
EP3646178A1 (en) 2020-05-06
US20220058048A1 (en) 2022-02-24
US11194614B2 (en) 2021-12-07

Similar Documents

Publication Publication Date Title
CN109643291B (zh) 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备
JP7253507B2 (ja) 仮想化アクセラレーテッド処理デバイスの早期仮想化コンテキストスイッチ
CN109564695B (zh) 用于高效3d图形流水线的装置和方法
JP6918919B2 (ja) 自動的にコンパイルされたコンピュートシェーダを用いるプリミティブカリング
US11182186B2 (en) Hang detection for virtualized accelerated processing device
US10572288B2 (en) Apparatus and method for efficient communication between virtual machines
US10509666B2 (en) Register partition and protection for virtualized processing device
US10545800B2 (en) Direct doorbell ring in virtualized processing device
WO2016145632A1 (en) Apparatus and method for software-agnostic multi-gpu processing
US20220058048A1 (en) Varying firmware for virtualized device
KR20200002608A (ko) 그래픽 엔진 상에서 다수의 컨텍스트를 동시에 실행하는 방법 및 장치
WO2017166272A1 (en) Method and apparatus of periodic snapshotting in graphics processing environment
US20210089423A1 (en) Flexible multi-user graphics architecture

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210621

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220607

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221024

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230310

R150 Certificate of patent or registration of utility model

Ref document number: 7245179

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150