IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

特表2023-553070仮想機能リソースのハードウェアベースの保護
<>
  • 特表-仮想機能リソースのハードウェアベースの保護 図1
  • 特表-仮想機能リソースのハードウェアベースの保護 図2
  • 特表-仮想機能リソースのハードウェアベースの保護 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-12-20
(54)【発明の名称】仮想機能リソースのハードウェアベースの保護
(51)【国際特許分類】
   G06F 9/455 20180101AFI20231213BHJP
【FI】
G06F9/455 150
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534605
(86)(22)【出願日】2021-12-07
(85)【翻訳文提出日】2023-06-30
(86)【国際出願番号】 IB2021061430
(87)【国際公開番号】W WO2022123450
(87)【国際公開日】2022-06-16
(31)【優先権主張番号】17/117,530
(32)【優先日】2020-12-10
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】イーナン ジャン
(72)【発明者】
【氏名】ミン ジャン
(57)【要約】
仮想機能は、複数のリソース[220]、及び複数のリソースに記憶された情報を使用して仮想機能[215]を実行する物理機能回路[210]を使用して実装される。処理ユニット[105]は、処理ユニットの動作状態に基づいて、仮想機能による複数のリソースへのアクセスを選択的に有効にするホストドライバ[205]を実行する。場合によっては、状態機械[300]は、仮想機能の状態を決定し、ホストドライバは、処理ユニット上で実行されている仮想機能の状態に基づいて、仮想機能による複数のリソースへのアクセスを有効にする。複数のリソースのサブセットは、フレームバッファ[222]、1つ以上のコンテキストレジスタ[225、226]、ドアベル[231]、及び、1つ以上のメールボックスレジスタ[235、236]を実装するために使用される。
【選択図】図1
【特許請求の範囲】
【請求項1】
装置であって、
情報を記憶するように構成された複数のリソースと、
前記複数のリソースに記憶された情報を使用して仮想機能を実行するように構成された物理機能回路と、
処理ユニットと、を備え、
前記処理ユニットは、前記処理ユニットの動作状態に基づいて、前記仮想機能による前記複数のリソースへのアクセスを選択的に有効にするホストドライバを実行するように構成されている、
装置。
【請求項2】
前記処理ユニットは、前記処理ユニットが異なる動作状態にあるのと同時に、前記仮想機能による前記複数のリソースのサブセットの異なる組み合わせへのアクセスを選択的に有効にするように構成されている、
請求項1の装置。
【請求項3】
前記複数のリソースのサブセットは、フレームバッファを実装するための第1のサブセットと、少なくとも1つのコンテキストレジスタを実装するための第2のサブセットと、ドアベルを実装するための第3のサブセットと、少なくとも1つのメールボックスレジスタを実装するための第4のサブセットと、を含む、
請求項2の装置。
【請求項4】
前記処理ユニットの動作状態は、前記仮想機能のデフォルト状態である第1の状態と、前記仮想機能の初期化、再初期化及びリセットのために使用される前記仮想機能の第2の状態と、前記仮想機能が前記物理機能回路上で実行されている前記仮想機能の第3の状態と、のうち何れかを含む、
請求項3の装置。
【請求項5】
前記ホストドライバは、前記仮想機能が前記第1の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第2のサブセット及び前記第3のサブセットへのアクセスを無効にし、前記仮想機能による前記第4のサブセットへのアクセスを有効にするように構成されている、
請求項4の装置。
【請求項6】
前記ホストドライバは、前記仮想機能が前記第2の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第2のサブセット、前記第3のサブセット及び前記第4のサブセットへのアクセスを有効にするように構成されている、
請求項4又は5の装置。
【請求項7】
前記ホストドライバは、前記仮想機能が前記第3の状態にあることに応じて、前記サブセットに関連付けられたリスクレベル、セキュリティレベル及び脅威レベルのうち少なくとも1つに基づいて、前記仮想機能による前記複数のリソースのサブセットへのアクセスを有効にするように構成されている、
請求項4、5又は6の装置。
【請求項8】
前記ホストドライバは、前記仮想機能が前記第3の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第3のサブセット及び前記第4のサブセットへのアクセスを有効にし、前記仮想機能による前記第2のサブセットへのアクセスを無効にするように構成されている、
請求項7の装置。
【請求項9】
方法であって、
物理機能回路において、情報を記憶するように構成された複数のリソースに記憶された情報を使用して仮想機能を実行することと、
処理ユニット上で実行されているホストドライバにおいて、前記処理ユニットの動作状態に基づいて、前記仮想機能による前記複数のリソースへのアクセスを選択的に有効にすることと、を含む、
方法。
【請求項10】
前記複数のリソースへのアクセスを選択的に有効にすることは、前記処理ユニットが異なる動作状態にあるのと同時に、前記仮想機能による前記複数のリソースのサブセットの異なる組み合わせへのアクセスを選択的に有効にすることを含む、
請求項9の方法。
【請求項11】
前記複数のリソースのサブセットは、フレームバッファを実装するための第1のサブセットと、少なくとも1つのコンテキストレジスタを実装するための第2のサブセットと、ドアベルを実装するための第3のサブセットと、少なくとも1つのメールボックスレジスタを実装するための第4のサブセットと、を含む、
請求項10の方法。
【請求項12】
前記処理ユニットの動作状態は、前記仮想機能のデフォルト状態である第1の状態と、前記仮想機能の初期化、再初期化及びリセットのために使用される前記仮想機能の第2の状態と、前記仮想機能が前記物理機能回路上で実行されている前記仮想機能の第3の状態と、のうち何れかを含む、
請求項11の方法。
【請求項13】
前記複数のリソースへのアクセスを選択的に有効にすることは、前記仮想機能が前記第1の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第2のサブセット及び前記第3のサブセットへのアクセスを無効にすることと、前記仮想機能による前記第4のサブセットへのアクセスを有効にすることと、を含む、
請求項12の方法。
【請求項14】
前記複数のリソースへのアクセスを選択的に有効にすることは、前記仮想機能が前記第2の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第2のサブセット、前記第3のサブセット及び前記第4のサブセットへのアクセスを有効にすることを含む、
請求項12又は13の方法。
【請求項15】
前記複数のリソースへのアクセスを選択的に有効にすることは、前記仮想機能が前記第3の状態にあることに応じて、前記サブセットに関連付けられたリスクレベル、セキュリティレベル及び脅威レベルのうち少なくとも1つに基づいて、前記仮想機能による前記複数のリソースのサブセットへのアクセスを有効にすることを含む、
請求項12、13又は14の方法。
【請求項16】
前記複数のリソースへのアクセスを選択的に有効にすることは、前記仮想機能が前記第3の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第3のサブセット及び前記第4のサブセットへのアクセスを有効にすることと、前記仮想機能による前記第2のサブセットへのアクセスを無効にすることと、を含む、
請求項15の方法。
【請求項17】
装置であって、
複数のリソースに記憶された情報を使用して仮想機能を実行するように構成された物理機能回路と、
前記仮想機能の状態を決定するように構成された状態機械と、
前記仮想機能の状態に基づいて、前記仮想機能による前記複数のリソースへのアクセスを選択的に有効にするホストドライバを実行するように構成された処理ユニットと、を備える、
装置。
【請求項18】
前記ホストドライバは、前記状態機械が前記仮想機能の状態を変更することに応じて、前記仮想機能による前記複数のリソースのサブセットへのアクセスを選択的に変更するように構成されている、
請求項17の装置。
【請求項19】
前記複数のリソースのサブセットは、フレームバッファを実装するための第1のサブセットと、少なくとも1つのコンテキストレジスタを実装するための第2のサブセットと、ドアベルを実装するための第3のサブセットと、少なくとも1つのメールボックスレジスタを実装するための第4のサブセットと、を含む、
請求項18の装置。
【請求項20】
前記仮想機能の状態は、前記仮想機能のデフォルト状態である第1の状態と、前記仮想機能の初期化、再初期化及びリセットのために使用される前記仮想機能の第2の状態と、前記仮想機能が前記物理機能回路上で実行されている前記仮想機能の第3の状態と、のうち何れかを含む、
請求項17~19の何れかの装置。
【発明の詳細な説明】
【背景技術】
【0001】
グラフィックス処理ユニット(graphics processing unit、GPU)等の処理ユニットは、複数の仮想機械が処理ユニットのハードウェアリソースを使用することを可能にする仮想化をサポートする。各仮想機械は、処理ユニットのハードウェアリソースを使用する個別のプロセスとして実行される。いくつかの仮想機械は、仮想機械が実際の機械をエミュレートすることを可能にするオペレーティングシステムを実装する。他の仮想機械は、プラットフォーム独立環境においてコードを実行するように設計されている。ハイパーバイザが、仮想機械を生成して動かし、仮想機械は、ゲスト機械又はゲストとも称される。処理ユニット上に実装された仮想環境は、物理機械上に実装された他の仮想コンポーネントに仮想機能を提供する。処理ユニットに実装された単一の物理機能が、1つ以上の仮想機能をサポートするために使用される。物理機能は、タイムスライスベースで物理機械上の異なる仮想機械に仮想機能を割り振る。例えば、物理機能は、第1の時間間隔において第1の仮想機能を第1の仮想機械に割り振り、第2の後続の時間間隔において第2の仮想機能を第2の仮想機械に割り振る。場合によっては、処理ユニット内の物理機能が、31個もの仮想機能をサポートするが、他の場合には、より多くの又はより少ない仮想機能がサポートされる。シングルルート入力/出力仮想化(single root input/output virtualization、SR IOV)仕様は、複数の仮想機械(virtual machine、VM)が、ペリフェラルコンポーネントインターコネクトエクスプレス(peripheral component interconnect express、PCIe)バス等の単一のバスへのプロセッサインターフェースを共有することを可能にする。コンポーネントは、バスを介して要求を送信することによって仮想機能にアクセスする。
【0002】
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、仮想化環境における物理機能の共有を実装するグラフィックス処理ユニット(GPU)を含む処理システムのブロック図である。
図2】いくつかの実施形態による、仮想機能(virtual function、VF)によってリソースへの選択的アクセスを提供にする処理システムのブロック図である。
図3】いくつかの実施形態による、VFの状態を決定し、VFによるリソースアクセスを選択的に有効にするために使用される状態機械のブロック図である。
【発明を実施するための形態】
【0004】
GPUのハードウェアリソースは、物理機能(physical function、PF)及び1つ以上の仮想機能(VF)を使用して、SR-IOVに従って区分される。各仮想機能は、単一の物理機能に関連付けられ、それによって、仮想機能は、関連する物理機能の物理リソース及び回路を使用して実装される。ネイティブ(ホストOS)環境では、物理機能が、ネイティブユーザモード及びカーネルモードドライバによって使用され、全ての仮想機能が無効にされる。全てのGPUリソースは、信頼できるアクセスを介して物理機能にマッピングされる。仮想環境では、物理機能は、ハイパーバイザ(ホストVM)によって使用され、GPUは、ゲストVMごとに1つの仮想機能等のように、PCIe SR-IOV規格に従って特定の数の仮想機能を公開する。各仮想機能は、ハイパーバイザによってゲストVMに割り当てられる。GPUリソースのサブセットが仮想機能にマッピングされ、サブセットは、フレームバッファ、コンテキストレジスタ、ドアベルアパーチャ及び、VF-PF同期のために使用される1つ以上のメールボックスレジスタを含むように区分される。VFの初期化中、VFに割り当てれたフレームバッファ、コンテキストレジスタ及びドアベルへのアクセスは、ホストドライバによって有効にされる。しかしながら、場合によっては、ホストドライバは、これらのリソースを所有するVFに代わって、フレームバッファ、コンテキストレジスタ又はドアベルに情報を同時に書き込む。したがって、VF及びホストドライバによるリソースへの連続的な調整されていない書き込みによって、リソースの内容が破損する可能性があり、又は、競合状態が生じる可能性がある。破損又は競合状態は、VFのリセット中にも生じ得る。
【0005】
図1図3は、処理ユニットの動作状態に応じて仮想機能(VF)によるリソースのサブセットへのアクセスを選択的に有効にすることによって、VFに割り当てれたリソースへのホストドライバ及びVFによる同時アクセスから生じる処理ユニットにおける破損及び競合状態を低減又は回避するための技術を開示する。いくつかの実施形態では、リソースのサブセットは、フレームバッファ、1つ以上のコンテキストレジスタ、ドアベル、及び、1つ以上のメールボックスレジスタを含む。ホストドライバは、処理ユニットが異なる状態にある場合に、リソースの異なるサブセットへのVFアクセスを有効にする。状態は、フレームバッファ、コンテキストレジスタ及びドアベルへのVFアクセスを無効にする一方で、メールボックスレジスタへのVFアクセスを許可する第1の(デフォルト)状態を含む。第2の状態では、ホストドライバは、フレームバッファ、コンテキストレジスタ、ドアベル及びメールボックスレジスタへのVFアクセスを有効にする。第2の状態は、VFの初期化、再初期化及びリセットのために使用される。第3の状態では、ホストドライバは、サブセットに関連付けられたリスク、セキュリティ又は脅威レベルに基づいて、リソースのサブセットへのVFアクセスを選択的に有効にする。いくつかの実施形態では、フレームバッファ及びドアベルへのVFアクセスは、第3のセットにおいて有効化されるが、コンテキストレジスタへのVFアクセスは、コンテキストレジスタへのアクセスを可能にすることに関連付けられた比較的高いリスクに起因して、無効化される。いくつかの実施形態では、処理ユニットは、ドライバの障害又は無効等ライバ若しくは悪意のあるドライバの検出に応じて、第1の状態に遷移する。ホストドライバは、例えば、ドライバのリセット又は新しいドライバのインストール/初期化に応じて、VFが第1の(デフォルト)状態に遷移するまで、メールボックスレジスタ、フレームバッファ及びドアベルへのアクセスを有効にし、且つ、VFによる他のレジスタへのアクセスを無効にする。
【0006】
説明を容易にするために、本開示のシステム及び技術について、処理ユニットとしてのGPUの例示的なコンテキストにおいて説明する。しかし、これらのシステム及び技術は、この例に限定されず、したがって、GPUの参照は、様々な並列プロセッサ(例えば、ベクトルプロセッサ、グラフィックス処理ユニット(GPU)、汎用GPU(general-purpose GPU、GPGPU)、非スカラプロセッサ、高並列プロセッサ、人工知能(artificial intelligence、AI)プロセッサ、推論エンジン、機械学習プロセッサ、他のマルチスレッド処理ユニット等)の何れにも同様に当てはまる。
【0007】
図1は、いくつかの実施形態による、仮想化環境における物理機能の共有を実装するグラフィック処理ユニット(GPU)105を含む処理システム100のブロック図である。GPU105は、同時に又は並列に命令を独立して実行する1つ以上のGPUコア106と、3Dグラフィックス又はビデオレンダリングをサポートする1つ以上のシェーダシステム107と、を含む。例えば、シェーダシステム107は、グラフィックスエンジンがシーンを正確にレンダリングしなかったレンダリングされた画像のグラフィックスレンダリングフレーム毎秒スコア又はパッチング領域を増加させることによって視覚的表現を改善するために使用され得る。メモリコントローラ108は、レンダリングプロセス中にフレームを記憶するフレームバッファ109へのインターフェースを提供する。フレームバッファ109のいくつかの実施形態は、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)として実装される。しかしながら、フレームバッファ109は、スタティックランダムアクセスメモリ(static random access memory、SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装することもできる。GPU105のいくつかの実施形態は、エンコーダフォーマットコンバータ、マルチフォーマットビデオコーデック、ディスプレイ又はスクリーンへのインターフェースを提供するディスプレイ出力回路、オーディオコプロセッサ、オーディオ信号を符号化/復号するためのオーディオコーデック等の他の回路を含む。
【0008】
また、処理システム100は、命令を実行するための中央処理ユニット(central processing unit、CPU)115を含む。CPU115は、命令を独立して同時に又は並列に実行することができる複数のプロセッサコア120、121、122(本明細書ではまとめて「プロセッサコア120~122」と称する)を含む。いくつかの実施形態では、GPU105は、バス125(PCI-eバス等)及びノースブリッジ130を介してCPU115に接続されたディスクリートGPU(discrete GPU、dGPU)として動作する。また、CPU115は、CPU115とメモリ140との間のインターフェースを提供するメモリコントローラ135を含む。メモリ140のいくつかの実施形態は、DRAM、SRAM、不揮発性RAM等として実装される。CPU115は、メモリ140に記憶されたプログラムコード145等の命令を実行し、CPU115は、実行された命令の結果等の情報150をメモリ140に記憶する。また、CPU115は、GPU105にドローコールを発行することによって、グラフィックス処理を開始することができる。ドローコールは、CPU115によって生成され、且つ、GPU105がフレーム内のオブジェクト(又はオブジェクトの一部分)をレンダリングするように命令するためにGPU105に送信されるコマンドである。
【0009】
ノースブリッジ130は、サウスブリッジ155に接続されている。サウスブリッジ155は、処理システム100に関連付けられた周辺ユニットに1つ以上のインターフェース160を提供する。インターフェース160のいくつかの実施形態は、ユニバーサルシリアルバス(universal serial bus、USB)デバイス、汎用I/O(General Purpose I/O、GPIO)、ハードディスクドライブのためのSATA、SPI、I2C等のようなシリアル周辺バスインターフェース等の周辺ユニットへのインターフェースを含む。
【0010】
GPU105は、アドレス変換コントローラを有するGPU仮想メモリ管理ユニット(GPU memory management unit with address translation controller、GPU MMU ATC)165を含み、CPU115は、CPU MMU ATC170を含む。GPU MMU ATC165及びCPU MMU ATC170は、マルチレベル変換論理と、オペレーティングシステムカーネルモードドライバ(kernel mode driver、KMD)によって維持される変換テーブルのセットとを使用することによって、仮想メモリアドレス(VA)から物理メモリアドレス(PA)への変換を行う。したがって、メインOS上又はゲストOS内で実行されるアプリケーションプロセスの各々は、CPU動作及びGPUレンダリングのためのそれら自体の仮想アドレス空間を有する。したがって、GPU MMU ATC165及びCPU MMU ATC170は、GPU及びCPUコアの仮想化をサポートする。GPU105は、それ自体のメモリ管理ユニット(MMU)を有し、メモリ管理ユニットは、プロセスごとのGPU仮想アドレスを物理アドレスに変換する。各プロセスは、個別のページテーブルを使用する個別のCPU及びGPU仮想アドレス空間を有する。ビデオメモリマネージャは、全てのプロセスのGPU仮想アドレス空間を管理し、メモリページの割り当て、増大、更新、常駐の保証、及び、ページテーブルの解放を管理する。
【0011】
また、GPU105は、1つ以上の物理機能(PF)175を含む。いくつかの実施形態では、物理機能175は、マルチメディア復号、マルチメディア符号化、ビデオ復号、ビデオ符号化、オーディオ復号及びオーディオ符号化等のハードウェアアクセラレーション機能である。メモリ140内に実装された仮想環境は、ゲストVMに公開される物理機能及び仮想機能(VF)のセットをサポートする。GPU105は、カーネルモードユニットによって実行される処理に関連付けられた情報を記憶するリソースのセット(明確にするために図1には示さず)を更に含む。リソースのセットのサブセットは、仮想機能に関連付けられた情報を記憶するために割り当てられる。いくつかの実施形態では、GPUリソースのサブセットは、仮想機能にマッピングされ、サブセットは、フレームバッファ、コンテキストレジスタ、ドアベルアパーチャ及びVF PF同期のために使用される1つ以上のメールボックスレジスタを含むように区分される。物理機能175は、本明細書で詳細に説明されるように、サブセットのうち対応するサブセットに記憶された情報に基づいて、ゲストVMの何れかの仮想機能のうち何れかの代わりに実行される。
【0012】
GPU105のいくつかの実施形態は、ホストドライバを実行し、ホストドライバは、GPU105の動作状態に基づいてVFによるリソースへのアクセスを選択的に有効にする。例えば、ホストドライバは、GPU105上で実行されているVFの全ての状態についてメールボックスレジスタへのアクセスを有効にする。しかしながら、ホストドライバは、VFの第1の(デフォルト)状態の間、フレームバッファ、コンテキストレジスタ及びドアベルへのアクセスを無効にする。ホストドライバは、VFの第2の状態の間フレームバッファ、コンテキストレジスタ及びドアベルへのアクセスを有効にして、VFがVFの初期化、再初期化又はリセットに関連する動作を実行することを可能にする。VFは、通常、第3の状態で実行されており、したがって、ホストドライバは、サブセットに関連付けられたリスクレベル、セキュリティレベル又は脅威レベルに基づいて、リソースのサブセットへのアクセスを選択的に有効にする。ホストドライバのいくつかの実施形態は、フレームバッファ及びドアベルへのアクセスを有効にするが、例えば、フレームバッファ、ドアベル及びメールボックスレジスタに関連付けられたより低いリスク/脅威と比較して、ランタイムにおいてコンテキストレジスタをVFに公開する比較的高いリスク/脅威に起因して、コンテキストレジスタへのアクセスを無効にする。いくつかの実施形態では、GPU105は、GPU105内のVFの状態を管理又は変更する状態機械(明確にするために図1に示さず)を実装する。
【0013】
図2は、いくつかの実施形態による、VFによるリソースへの選択的なアクセスを有効にする処理システム200のブロック図である。処理システム200は、図1に示される処理システム100のいくつかの実施形態を実装するために使用される。図示した実施形態では、処理システム200は、本明細書で説明するように、ホストドライバ205、物理機能回路210、及び、物理機能回路210上で実行される1つ以上の仮想機能(VF)215を実装する。
【0014】
処理システム200は、物理機能回路210上で実行されているVF215に割り当てられたリソースのセット220を実装する。図示した実施形態では、セット220は、異なるVF215に割り当てられたリソースのサブセットに区分される。例えば、フレームバッファ用に予約されたリソースのサブセットは、VF215に割り当てられたフレームバッファサブセット221と、他の仮想機能に割り当てられた1つ以上の他のフレームバッファサブセット222と、に区分される。コンテキストレジスタ用に予約されるリソースのサブセットは、VF215に割り当てられたコンテキストサブセット225と、他の仮想機能に割り当てられた1つ以上の他のコンテキストサブセット226と、に区分される。ドアベル用に予約されたリソースのサブセットは、VF215に割り当てられたドアベル231と、他の仮想機能に割り当てられた1つ以上の他のドアベル232と、に区分される。メールボックスレジスタ用に予約されたリソースのサブセットは、VF215に割り当てられたメールボックスサブセット235と、他の仮想機能に割り当てられた1つ以上の他のメールボックスサブセット236と、に区分される。
【0015】
VF215(又は他の仮想機能)の初期化中に、ホストドライバ205は、VF215に割り当てられたフレームバッファ221、コンテキストレジスタ225、ドアベル231及びメールボックスレジスタ235へのアクセスをVF215に選択的に有効にするシグナリング240をVF215(又は他の仮想機能)に提供する。しかしながら、場合によっては、ホストドライバ205は、これらのレジスタを所有するVF215に代わって、フレームバッファ221、コンテキストレジスタ225又はドアベル231のうち1つ以上に情報を同時に書き込む。したがって、VF215及びホストドライバ205によるリソースへの連続的な調整がされていない書き込みによって、リソースの内容が破損する可能性があり、又は、競合状態が生じる可能性がある。また、破損又は競合状態は、VF215及び対応するリソース221、225、231のリセット中に生じ得る。したがって、ホストドライバ205は、シグナリング240を使用して、対応するVF215の動作状態に基づいてリソースのセット220のサブセットを選択的に有効にする。
【0016】
図3は、いくつかの実施形態による、VFの状態を決定し、VFによるリソースアクセスを選択的に有効にするために使用される状態機械300のブロック図である。状態機械300は、図1に示される処理システム100及び図2に示される処理システム200のいくつかの実施形態において実装される。図示した実施形態では、状態機械300は、状態のセットを提供し、VFの状態間の遷移を定義する。状態のセットは、デフォルト状態305を含み、デフォルト状態305は、他の状態の条件がVFによって満たされない場合にVFに適用される。また、状態のセットは、VFの初期化、再初期化又はリセットに使用される「全アクセス(all access)」状態310と、VFのランタイム中に使用される「部分アクセス(partial access)」状態315と、を含む。
【0017】
動作中、状態機械300は、VFのための他の適切な状態がない場合、VFをデフォルト状態305に置く。例えば、状態機械300は、処理ユニットがVFの実行を停止又は一時停止し、別のVFの実行に変更する場合にワールドスイッチに応じて、VFをデフォルト状態305に置く。デフォルト状態305では、ホストドライバは、フレームバッファ、コンテキストレジスタ及びドアベルへのアクセスを無効にする。また、ホストドライバは、VFとVFを実装するPFとの間の通信をサポートするために、デフォルト状態305でメールボックスレジスタへのアクセスを有効にする。
【0018】
状態機械300は、VFの初期化、再初期化又はリセット中に、VFの状態を「全アクセス」状態310に変更する。例えば、状態機械300は、処理ユニットがVFを初期化したことに応じて、VFを「全アクセス」状態310に置く。ホストドライバは、VFが「全アクセス」状態310にある場合に、フレームバッファ、コンテキストレジスタ、ドアベル及びメールボックスレジスタへのアクセスを有効にする。したがって、VFは、必要に応じて、フレームバッファ、コンテキストレジスタ、ドアベル又はメールボックスレジスタに情報を書き込むことによって、VFを開始又はリセットすることに関連する構成動作を実行することができる。「全アクセス」状態310を、VFの初期化、再初期化又はリセットに使用される時間間隔に制限することによっても、レジスタの内容を公開するリスクが低減される。
【0019】
しかしながら、状態機械300が、例えば、VF及び対応するドライバを初期化したことに応じて、VFに関連付けられたドライバの障害、又は、無効であるか、サポートされていないか若しくは悪意のあるドライバを検出した場合、状態機械300は、VFを「全アクセス」状態310からデフォルト状態305に遷移させる。ホストドライバは、デフォルト状態305において、フレームバッファ、コンテキストレジスタ及びドアベルへのアクセスを無効にして、これらのリソースの内容の破損又は悪意のある変更を防止する。状態機械300は、現在のドライバが有効なドライバによって再初期化されるか又は新しいドライバがロードされるまでデフォルト状態305のままであり、現在のドライバが再初期化されるか又は新しいドライバがロードされた場合、状態機械300は、「全アクセス」状態310に遷移して、VFの初期化、再初期化又はリセットを継続する。
【0020】
状態機械300は、VFの初期化、再初期化又はリセットの完了に応じて、「全アクセス」状態310から「部分アクセス」状態315に遷移する。「部分アクセス」状態315は、VFのランタイム中に使用され、リソースのサブセットへのアクセスは、サブセットに関連付けられたリスクレベル、セキュリティレベル又は脅威レベルに基づいて決定される。状態機械300のいくつかの実施形態は、フレームバッファへのアクセスを有効にし、ドアベルは「部分アクセス」状態315において有効にされるが、コンテキストレジスタへのアクセスを可能にすることに関連付けられた比較的高いリスクに起因して、コンテキストレジスタへのアクセスを無効にする。しかし、他の実施形態では、レジスタの他の組み合わせが有効又は無効にされる。状態機械300は、ドライバアンロードイベントに応じて、VFの状態を全アクセス状態310に戻し、使用VF通知の終了に応じて又はVF使用の終了の検出に応じて、デフォルト状態305に遷移する。
【0021】
しかしながら、状態機械300がVF使用の終了の通知を受信した場合、状態機械300は、VFを「全アクセス」状態310からデフォルト状態305に遷移させる。ホストドライバは、デフォルト状態305において、フレームバッファ、コンテキストレジスタ及びドアベルへのアクセスを無効にして、これらのリソースの内容の破損又は悪意のある変更を防止する。状態機械300は、新しいドライバがロードされるまでデフォルト状態305のままであり、ロードされた場合、状態機械300は、「全アクセス」状態310に遷移し、VFの初期化、再初期化又はリセットを継続する。
【0022】
本明細書で開示されるように、いくつかの実施形態では、装置は、情報を記憶するように構成された複数のリソースと、複数のリソースに記憶された情報を使用して仮想機能を実行するように構成された物理機能回路と、処理ユニットと、を含み、処理ユニットは、処理ユニットの動作状態に基づいて、仮想機能による複数のリソースへのアクセスを選択的に有効にするホストドライバを実行するように構成されている。一態様では、処理ユニットは、異なる動作状態にある処理ユニットと同時に、仮想機能による複数のリソースのサブセットの異なる組み合わせへのアクセスを選択的に有効にするように構成されている。別の態様では、複数のリソースのサブセットは、フレームバッファを実装するための第1のサブセットと、少なくとも1つのコンテキストレジスタを実装するための第2のサブセットと、ドアベルを実装するための第3のサブセットと、少なくとも1つのメールボックスレジスタを実装するための第4のサブセットと、を含む。更に別の態様では、処理ユニットの動作状態は、仮想機能のデフォルト状態である第1の状態、仮想機能の初期化、再初期化、及び、リセットに使用される仮想機能の第2の状態、並びに、仮想機能が物理機能回路上で実行されている仮想機能の第3の状態のうち何れかを含む。
【0023】
一態様では、ホストドライバは、仮想機能が第1の状態にあることに応じて、仮想機能による第1のサブセット、第2のサブセット及び第3のサブセットへのアクセスを無効にし、仮想機能による第4のサブセットへのアクセスを有効にするように構成されている。別の態様では、ホストドライバは、仮想機能が第2の状態にあることに応じて、仮想機能による第1のサブセット、第2のサブセット、第3のサブセット及び第4のサブセットへのアクセスを有効にするように構成されている。更に別の態様では、ホストドライバは、仮想機能が第3の状態にあることに応じて、サブセットに関連付けられたリスクレベル、セキュリティレベル及び脅威レベルのうち少なくとも1つに基づいて、仮想機能によるリソースのサブセットへのアクセスを有効にするように構成されている。更に別の態様では、ホストドライバは、仮想機能が第3の状態にあることに応じて、仮想機能による第1のサブセット、第3のサブセット及び第4のサブセットへのアクセスを有効にし、仮想機能による第2のサブセットへのアクセスを無効にするように構成されている。
【0024】
いくつかの実施形態では、方法は、物理機能回路上で、情報を記憶するように構成された複数のリソースに記憶された情報を使用して仮想機能を実行することと、処理ユニット上で実行されているホストドライバにおいて、処理ユニットの動作状態に基づいて仮想機能による複数のリソースへのアクセスを選択的に有効にすることと、を含む。別の態様では、複数のリソースへのアクセスを選択的に有効にすることは、処理ユニットが異なる動作状態にあるのと同時に、仮想機能による複数のリソースのサブセットの異なる組み合わせへのアクセスを選択的に有効にすることを含む。更に別の態様では、複数のリソースのサブセットは、フレームバッファを実装するための第1のサブセットと、少なくとも1つのコンテキストレジスタを実装するための第2のサブセットと、ドアベルを実装するための第3のサブセットと、少なくとも1つのメールボックスレジスタを実装するための第4のサブセットと、を含む。
【0025】
一態様では、処理ユニットの動作状態は、仮想機能のデフォルト状態である第1の状態、仮想機能の初期化、再初期化及びリセットに使用される仮想機能の第2の状態、並びに、仮想機能が物理機能回路上で実行されている仮想機能の第3の状態のうち何れかを含む。別の態様では、複数のリソースへのアクセスを選択的に有効にすることは、仮想機能が第1の状態にあることに応じて、仮想機能による第1のサブセット、第2のサブセット及び第3のサブセットへのアクセスを無効にすることと、仮想機能による第4のサブセットへのアクセスを有効にすることと、を含む。更に別の態様では、複数のリソースへのアクセスを選択的に有効にすることは、仮想機能が第2の状態にあることに応じて、仮想機能による第1のサブセット、第2のサブセット、第3のサブセット及び第4のサブセットへのアクセスを有効にすることを含む。更に別の態様では、複数のリソースへのアクセスを選択的に有効にすることは、仮想機能が第3の状態にあることに応じて、サブセットに関連付けられたリスクレベル、セキュリティレベル及び脅威レベルのうち少なくとも1つに基づいて、仮想機能によるリソースのサブセットへのアクセスを有効にすることを含む。別の態様では、複数のリソースへのアクセスを選択的に有効にすることは、仮想機能が第3の状態にあることに応じて、仮想機能による第1のサブセット、第3のサブセット及び第4のサブセットへのアクセスを有効にすることと、仮想機能による第2のサブセットへのアクセスを無効にすることと、を含む。
【0026】
いくつかの実施形態では、装置は、複数のリソースに記憶された情報を使用して仮想機能を実行するように構成された物理機能回路と、仮想機能の状態を決定するように構成された状態機械と、仮想機能の状態に基づいて、仮想機能による複数のリソースへのアクセスを選択的に有効にするホストドライバを実行するように構成された処理ユニットと、を含む。一態様では、ホストドライバは、状態機械が仮想機能の状態を変更することに応じて、仮想機能による複数のリソースのサブセットへのアクセスを選択的に変更するように構成されている。別の態様では、複数のリソースのサブセットは、フレームバッファを実装するための第1のサブセットと、少なくとも1つのコンテキストレジスタを実装するための第2のサブセットと、ドアベルを実装するための第3のサブセットと、少なくとも1つのメールボックスレジスタを実装するための第4のサブセットと、を含む。更に別の態様では、仮想機能の状態は、仮想機能のデフォルト状態である第1の状態、仮想機能の初期化、再初期化及びリセットのために使用される仮想機能の第2の状態、及び、仮想機能が物理機能回路上で実行されている仮想機能の第3の状態のうち何れかを含む。
【0027】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0028】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0029】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0030】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
【手続補正書】
【提出日】2023-08-09
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
装置であって、
情報を記憶するように構成された複数のリソースと、
前記複数のリソースに記憶された情報を使用して仮想機能を実行するように構成された物理機能回路と、
処理ユニットと、を備え、
前記処理ユニットは、前記処理ユニットの動作状態に基づいて、前記仮想機能による前記複数のリソースへのアクセスを選択的に有効にするホストドライバを実行するように構成されている、
装置。
【請求項2】
前記処理ユニットは、前記処理ユニットが異なる動作状態にあるのと同時に、前記仮想機能による前記複数のリソースのサブセットの異なる組み合わせへのアクセスを選択的に有効にするように構成されている、
請求項1の装置。
【請求項3】
前記複数のリソースのサブセットは、フレームバッファを実装するための第1のサブセットと、少なくとも1つのコンテキストレジスタを実装するための第2のサブセットと、ドアベルを実装するための第3のサブセットと、少なくとも1つのメールボックスレジスタを実装するための第4のサブセットと、を含む、
請求項2の装置。
【請求項4】
前記処理ユニットの動作状態は、前記仮想機能のデフォルト状態である第1の状態と、前記仮想機能の初期化、再初期化及びリセットのために使用される前記仮想機能の第2の状態と、前記仮想機能が前記物理機能回路上で実行されている前記仮想機能の第3の状態と、のうち何れかを含む、
請求項3の装置。
【請求項5】
前記ホストドライバは、前記仮想機能が前記第1の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第2のサブセット及び前記第3のサブセットへのアクセスを無効にし、前記仮想機能による前記第4のサブセットへのアクセスを有効にするように構成されている、
請求項4の装置。
【請求項6】
前記ホストドライバは、前記仮想機能が前記第2の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第2のサブセット、前記第3のサブセット及び前記第4のサブセットへのアクセスを有効にするように構成されている、
請求項4又は5の装置。
【請求項7】
前記ホストドライバは、前記仮想機能が前記第3の状態にあることに応じて、前記サブセットに関連付けられたリスクレベル、セキュリティレベル及び脅威レベルのうち少なくとも1つに基づいて、前記仮想機能による前記複数のリソースのサブセットへのアクセスを有効にするように構成されている、
請求項4、5又は6の装置。
【請求項8】
前記ホストドライバは、前記仮想機能が前記第3の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第3のサブセット及び前記第4のサブセットへのアクセスを有効にし、前記仮想機能による前記第2のサブセットへのアクセスを無効にするように構成されている、
請求項7の装置。
【請求項9】
方法であって、
物理機能回路において、情報を記憶するように構成された複数のリソースに記憶された情報を使用して仮想機能を実行することと、
処理ユニット上で実行されているホストドライバにおいて、前記処理ユニットの動作状態に基づいて、前記仮想機能による前記複数のリソースへのアクセスを選択的に有効にすることと、を含む、
方法。
【請求項10】
前記複数のリソースへのアクセスを選択的に有効にすることは、前記処理ユニットが異なる動作状態にあるのと同時に、前記仮想機能による前記複数のリソースのサブセットの異なる組み合わせへのアクセスを選択的に有効にすることを含む、
請求項9の方法。
【請求項11】
前記複数のリソースのサブセットは、フレームバッファを実装するための第1のサブセットと、少なくとも1つのコンテキストレジスタを実装するための第2のサブセットと、ドアベルを実装するための第3のサブセットと、少なくとも1つのメールボックスレジスタを実装するための第4のサブセットと、を含む、
請求項10の方法。
【請求項12】
前記処理ユニットの動作状態は、前記仮想機能のデフォルト状態である第1の状態と、前記仮想機能の初期化、再初期化及びリセットのために使用される前記仮想機能の第2の状態と、前記仮想機能が前記物理機能回路上で実行されている前記仮想機能の第3の状態と、のうち何れかを含む、
請求項11の方法。
【請求項13】
前記複数のリソースへのアクセスを選択的に有効にすることは、前記仮想機能が前記第1の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第2のサブセット及び前記第3のサブセットへのアクセスを無効にすることと、前記仮想機能による前記第4のサブセットへのアクセスを有効にすることと、を含む、
請求項12の方法。
【請求項14】
前記複数のリソースへのアクセスを選択的に有効にすることは、前記仮想機能が前記第2の状態にあることに応じて、前記仮想機能による前記第1のサブセット、前記第2のサブセット、前記第3のサブセット及び前記第4のサブセットへのアクセスを有効にすることを含む、
請求項12又は13の方法。
【請求項15】
前記複数のリソースへのアクセスを選択的に有効にすることは、前記仮想機能が前記第3の状態にあることに応じて、前記サブセットに関連付けられたリスクレベル、セキュリティレベル及び脅威レベルのうち少なくとも1つに基づいて、前記仮想機能による前記複数のリソースのサブセットへのアクセスを有効にすることを含む、
請求項12、13又は14の方法。
【国際調査報告】