JP7384900B2 - 仮想マシン・メモリの安全なアクセス - Google Patents

仮想マシン・メモリの安全なアクセス Download PDF

Info

Publication number
JP7384900B2
JP7384900B2 JP2021505835A JP2021505835A JP7384900B2 JP 7384900 B2 JP7384900 B2 JP 7384900B2 JP 2021505835 A JP2021505835 A JP 2021505835A JP 2021505835 A JP2021505835 A JP 2021505835A JP 7384900 B2 JP7384900 B2 JP 7384900B2
Authority
JP
Japan
Prior art keywords
host controller
command
vmm
data
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
JP2021505835A
Other languages
English (en)
Other versions
JP2021532495A (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 JP2021532495A publication Critical patent/JP2021532495A/ja
Application granted granted Critical
Publication of JP7384900B2 publication Critical patent/JP7384900B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/0088Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation 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/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/45583Memory management, e.g. access or allocation
    • 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/45587Isolation or security of virtual machine instances
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Description

仮想マシン・メモリの安全なアクセスに関するものである。
仮想化は、複数の仮想マシン(VM:Virtual Machine)-オペレーティング・システム・インスタンス(OSI:Operating System Instances)をホストするためにしばしば使用される-が単一のホスト・システム内で同時に実行することを可能にする。ホスト・システムにホスト・コントローラによって提示されたデフォルト・インターフェイス(インターフェイスの仮想化を有さない)は、物理機能(PF:Physical Function)、又はホスト・コントローラ・インターフェイスを含み得る。ホスト・コントローラ・インターフェイスの例は、ユニバーサル・シリアル・バス(USB:Universal Serial Bus)、ファイアーワイヤ、ブルートゥース、イーサネット(登録商標)、PCI(Peripheral Component Interconnect)、又は他のタイプの通信を含む。たとえば、拡張可能ホスト・コントローラ・インターフェイス(xHCI:eXtensible Host Controller Interface)が、USB通信をサポートするために使用され得る。ホスト・コントローラ・インターフェイスの仮想化は、複数の仮想機能(VF:Virtual Function)がPFを共用することを可能にする。ハードウェア要件を最小限に抑えるために、VFによって提示される物理インターフェイスは、通常は、対応するPFによって提示されたそれのサブセットのみを含み、VFインターフェイスの部分をエミュレートしてギャップを埋めるために仮想化ソフトウェアに依存する。
従来の方法で、仮想化ソフトウェアは、VFを使用してVMと、別のエンティティ、たとえば、ホスト・システム内の別のエンティティ(たとえば、別のVM)、又はホスト・システム外部のエンティティ(たとえば、ハードウェア・デバイス)、との接続を容易にするために使用され得る。たとえば、仮想化ソフトウェアは、VFを使用する接続の確立、又はVFを使用する既存の接続の修正においてVMを支援することができる。接続を容易にするために、仮想化ソフトウェアは、VMによって要求された情報、たとえば、接続プロパティ、を示すVMのメモリからのデータを読み取り得る。xHCIの実例では、データは、新しく接続されたデバイスのデバイス・プロパティを要求するために使用されるコマンド転送要求ブロック(TRB:Transfer Request Block)データでもよい。これは、仮想化ソフトウェアが不正侵入を受けた場合に、悪意のある行為者がホスト・コントローラ・インターフェイスを介して任意のVMに割り当てられたメモリを読み取ることが可能になり得るという点で、セキュリティ・リスクをもたらす。たとえば、VMメモリのマッピングを担う仮想化ソフトウェアの構成要素は、メモリ内の無許可の位置にアクセスするために、マッピングを操作し得る。
本開示は、一部において、VFを使用してVMと、別のエンティティとの間の接続を容易にするために仮想化ソフトウェアによってVMメモリへのアクセスを保護することに関する。従来の手法とは対照的に、ホスト・コントローラの信頼されているファームウェアは、VMメモリ内のデータへの不適切なアクセスから保護するために、VMのメモリを読み取るためのコマンド及び/又はVMメモリから読み取られたデータのうちの1個又は複数を有効にし得る。有効化が失敗した場合、ファームウェアは、データを読み取ること及び/又はデータへのアクセスを仮想化ソフトウェアに提供することをやめることができる。したがって、仮想化ソフトウェアが不正侵入を受けた場合、悪意のある行為者は、VMメモリに勝手にアクセスすることを阻止され得る。
データを読むために、仮想化ソフトウェアの1個又は複数の仮想マシン・マネージャ(VMM:virtual machine manager)は、データにアクセスするために読み取るためのメモリ位置を指示するホスト・コントローラの信頼されたファームウェアへの読み取りコマンドを送ることができる。ホスト・コントローラ・ファームウェアは、読み取りコマンド及び/又はVMメモリから読み取られたデータを有効にすることができる。たとえば、ホスト・コントローラ・ファームウェアは、読み取りコマンドが対応するVMのコマンド・リングのドアベル・イベントとマッチするということを確認する、それが、読み取りコマンドを受信するより前に、ドアベル・イベントをVMMに送るということを確認する、及び/又はコマンドによって明示されたメモリ・サイズが有効であるということをチェックすることができる。さらなる実例として、ホスト・コントローラ・ファームウェアは、データを読み取り、データが適切なフォーマットである及び/又は適切な情報若しくはパラメータを含むことを確認することができる。コマンド及び/又はデータが有効ではない(たとえば、無効と判定された)場合、ホスト・コントローラは、データにアクセスするためにVMMに提供するのをやめることができる。
仮想マシン・メモリの安全なアクセスのための本システム及び方法について、添付の図面を参照して、以下に詳しく説明する。
本開示のいくつかの実施例による、メモリ内のデータへの仮想化ソフトウェアによるアクセスを有効にするための動作環境の一実例の図である。 本開示のいくつかの実施例による、メモリ内のデータへの仮想化ソフトウェアによるアクセスを有効にするためのプロセスの一実例の流れ図である。 本開示のいくつかの実施例による、仮想化ソフトウェアからの読み取りコマンドに応答してVMメモリから読み取られたデータを有効にするための方法の一実例の流れ図である。 本開示のいくつかの実施例による、VMメモリを読み取るための仮想化ソフトウェアからのコマンドを有効にするための方法の一実例の流れ図である。 本開示のいくつかの実施例による、仮想化ソフトウェアがホスト・コントローラ・ファームウェアを使用してVMメモリからデータを読み取るための方法の一実例の流れ図である。 本開示のいくつかの実施例による、メモリ内のデータへの仮想化ソフトウェアによるアクセスを有効にするのに適した例示的コンピューティング環境のブロック図である。
システム・メモリ内のデータへの不適切なアクセスから保護するために、ホスト・コントローラの信頼されているファームウェアを使用してVMのメモリ(たとえば、VM専用の若しくはVMに割り当てられたシステム・メモリ)を読み取るためのコマンド及び/又はVMメモリから読み取られたデータのうちの1個又は複数を有効にすることに関して、システム及び方法が、開示される。結果として、仮想化ソフトウェアが不正侵入を受けた場合に、悪意のある行為者は、VMメモリに勝手にアクセスすることを阻止され得る。
様々な実施例において、仮想化ソフトウェアの1個又は複数の仮想マシン・マネージャ(VMM)及びVFが、VMと、別のエンティティ(たとえば、外部VM、外部デバイス)、たとえば、ホスト・システム内の別のエンティティ(たとえば、別のVM)、又はホスト・システム外部のエンティティ、との間の接続を容易にするために使用され得る。VMMは、ホスト・システムのハイパーバイザを含んでも含まなくてもよい。接続を容易にするために、VMは、エンティティに関するVMMからの通知を受信し得る。たとえば、ユーザは、USBデバイスをxHCIコントローラに接続することができ、そして、xHCIコントローラは、次いで適切なVMに通知する、新しいデバイスをVMMに通知することができる。通知に応答して、VMは、それがVMのために指定された基本的なシステム又はデバイスのメモリ内のデータとして記憶する、VMMを対象とするコマンドを提供することができる。データを読み取るために、VMMは、データにアクセスするために読み取るためのメモリ位置を指示するホスト・コントローラの信頼されているファームウェアへの読み取りコマンドを送ることができる。
本開示のいくつかの態様において、ホスト・コントローラ・ファームウェアは、読み取りコマンドを有効にすることができる。たとえば、ホスト・コントローラ・ファームウェアは、その読み取りコマンドは対応するVMのコマンド・リングのドアベル・イベントとマッチするということを確認することができる。もう1つの実例として、ホスト・コントローラ・ファームウェアは、それが、コマンドの受信より前に、ドアベル・イベントをVMMに送る(たとえば、VMMに指示してVMのコマンド・リングにおけるコマンドの処理を助けるために)ことを確認することができる。もう1つの実例として、ホスト・コントローラ・ファームウェアは、コマンドによって指定されたメモリ・サイズが有効であることをチェックすることができる(たとえば、TRBは、16バイトでもよく、より大きな又は小さなサイズは、無効なコマンドを示し得る)。コマンドが有効ではない場合、ホスト・コントローラ・ファームウェアは、そのメモリ位置を読み取ること及び/又はそのメモリ位置から読み取られたデータへのアクセスをVMMに提供することをやめることができる。
本開示のさらなる態様において、ホスト・コントローラ・ファームウェアがコマンドを有効にすることに加えて又はその代わりに、ホスト・コントローラ・ファームウェアは、そのメモリ位置から読み取られたデータを有効にすることができる。たとえば、ホスト・コントローラ・ファームウェアは、データを読み取り、データが適切なフォーマットである及び/又は適切な情報若しくはパラメータを含むことを確認することができる。これは、要求タイプ・フィールドが有効値を有する、1個若しくは複数の予約済みフィールドが期待値を有する、スロット識別子(ID)が所定の範囲内にある、及び/又はデータが定義済みフォーマットであることをチェックすることを含み得る。xHCIインターフェイスの実例において、これは、TRBタイプ・フィールドが有効な範囲内にある、1個若しくは複数の予約済みフィールドがゼロと等しい、スロットIDが所定の範囲内にある、及び/又はデータがTRBフォーマットであることをチェックすることを含み得る。読み取られたデータが有効ではない場合、ホスト・コントローラ・ファームウェアは、そのメモリ位置から読み取られたデータへのアクセスをVMMに提供するのをやめることができる。
任意の実例において、コマンド及び/又はデータが有効ではない(たとえば、無効と判定された)場合、ファームウェアは、コマンドの失敗を示すコマンド完了イベント(たとえば、CCode=0)をVMMに提供することができる。コマンド及び/又はデータが有効にされた場合、ホスト・コントローラ・ファームウェアは、データをVMMメモリにコピーすることなどによって、データへのアクセスをVMMに提供することができる。さらに、ホスト・コントローラ・ファームウェアは、コマンドの成功を指示するコマンド完了イベント(たとえば、CCode=1)をVMMに提供することができる。これは、それがVMMメモリからデータを読み取ることができることをVMMに指示し得る。
ここで図1を参照すると、図1は、本開示のいくつかの実施例による、メモリ内のデータへの仮想化ソフトウェアによるアクセスを有効にするための動作環境100の一実例の図である。本明細書に記載されたこの及び他の配置は、単に実例として説明されている、ということを理解されたい。他の配置及び要素(たとえば、マシン、インターフェイス、機能、順番、機能のグループ分けなど)が、示されているものに加えて又はその代わりに使用され得、いくつかの要素は、ともに省略され得る。さらに、本明細書に記載の要素の多数は、個別の若しくは分散された構成要素として又は他の構成要素と併せて、並びに任意の適切な組合せ及び位置で、実装され得る機能エンティティである。エンティティによって実行されるものとして本明細書に記載された様々な機能は、ハードウェア、ファームウェア、及び/又はソフトウェアによって実施され得る。たとえば、様々な機能は、メモリに記憶されたプロセッサ実行命令によって実施され得る。
動作環境100は、特に、ホスト・システム102、及び外部デバイス130を含み得る。動作環境100は、たとえば、図6の1個又は複数の計算デバイス600を使用して実装され得る。ホスト・システム102は、VMM104、ホスト・コントローラ・ファームウェア/ハードウェア106(「ホスト・コントローラ106」又は「ホスト・コントローラ・ファームウェア106」とも呼ばれる)、VM108、VM110、VM114、VM116、及びメモリ118を含み得る。VMM104は、VMMメモリ134、インターフェイス・マネージャ136、通信プロセッサ138、及びメモリ・マッパ140を含み得る。ホスト・コントローラ・ファームウェア106は、バリデータ142、通信プロセッサ144、及びインターフェイス・マネージャ146を含み得る。メモリ118は、VMメモリ120、VMメモリ122、VMメモリ124、及びVMメモリ126を含み得る。
ホスト・システム102は、1個又は複数の仮想環境をホストするように構成され得る。仮想環境は、その実例には1個又は複数のVMM104が含まれ得る、仮想化ソフトウェアによって管理され得る。VMM104は、ホスト・システム102のハイパーバイザを含んでも含まなくてもよい。ハイパーバイザは、仮想環境の任意の数のVM、たとえば、VM108、110、114、若しくは116(たとえば、ゲストVM)、及び/又は仮想化サービス(たとえば、VMM104)を作成及び実行し得る。
VMM104は、数ある潜在的な機能の中でも特に、VFを使用して、ホスト・コントローラ106を介してVM、たとえば、VM108、と別のエンティティとの接続を容易にする(たとえば、xHCI対応サーバを使用して)ように構成され得る。他のエンティティの実例には、ホスト・システム102内のエンティティ(たとえば、VM116)、又はホスト・システム外部のエンティティ(たとえば、外部デバイス130)が含まれる。VMM104のインターフェイス・マネージャ136は、VMM104への及びVMM104からの通信を管理するように構成され得る。VMM104の通信プロセッサ138は、通信、たとえば、VMメモリを読み取るための読み取りコマンド、を生成するように及び/又は受信された通信、たとえば、ドアベル・イベント若しくはVMからのVMMメモリ134内の要求コマンド、を処理するように構成され得る。VMM104のメモリ・マッパ140は、VMのメモリからデータを読み取るための読み取りコマンドのためのメモリ118(たとえば、VM108のVMメモリ120)内の対応するメモリ・アドレスにVF又はVMに対応するデータをマップするように構成され得る。
数ある潜在的機能の中でも特に、ホスト・コントローラ106は、VMと他のエンティティとの接続のためのインターフェイスを提供する、並びにVMM104からの読み取りコマンド及び/又はVMメモリから読み取られたデータを有効にするように構成され得る。たとえば、ホスト・コントローラ106のインターフェイス・マネージャ146は、ホスト・コントローラ106への及びそこからの通信を管理するように構成され得る。ホスト・コントローラ106の通信プロセッサ144は、受信された通信、たとえば、VMからのドアベル・イベント、VMM104からの読み取りコマンド、及び/又は読み取りコマンド、たとえば、VMからの要求コマンド、に基づいてVMメモリから読み取られたデータ、を処理するように構成され得る。ホスト・コントローラ106の通信プロセッサ144はまた、通信、たとえば、VMM104のドアベル・イベント、を生成するように構成され得る。通信プロセッサ144によって実行される処理のうちの少なくともいくらかは、本明細書に記載のように、ホスト・コントローラ106のバリデータ142を使用して読み取りコマンド及び/又はVMのVMメモリから読み取られたデータを有効にすることができる。有効にされた後は、ホスト・コントローラ106のインターフェイス・マネージャ146は、VMと別のエンティティとの接続の確立及び/又は修正において使用するためにVMMメモリ134にデータを提供し得る。インターフェイス・マネージャ146は、VMM104の使用(たとえば、データ転送関連作業のための)を必要とせずに接続をホストするために、VM及び他方のエンティティと直接通信することができる。
ホスト・システム102は、1個又は複数のシステム・オン・チップ(SoC:System-on-Chip)及び/又はグラフィック・プロセッシング・ユニット(GPU:Graphics Processing Unit)を含み得るが、これらに限定されない、1個又は複数の集積回路(IC)に実装され得る。ホスト・システム102は、VMがホスト・コントローラ・インターフェイスを使用して別のエンティティと通信する、任意の適用において一般に使用され得る。いくつかの実例では、ホスト・システム102は、電子制御装置(ECU:Electronic Control Unit)などの組み込みシステムの少なくとも一部を形成し得る。ホスト・システム102は、たとえば、非自律型車両、半自律型車両(たとえば、1個又は複数の高度運転者支援システム(ADAS:advanced driver assistance system)における)、ロボット、倉庫車両、オフロード車両、飛行船舶、ボート、及び/又は他の車両タイプに組み込まれ得る。ホスト・システム102は、たとえば、1個又は複数のデバイスの加速装置、ブレーキ、及び/又は機能の制御装置を決定及び/又は運搬する(たとえば、ホスト・コントローラ106を使用して)ために、VM108、110、114、又は116を使用し得る。これは、ADAS、ロボット工学(たとえば、ロボットのための進路プランニング)、航空システム(たとえば、ドローン又は他の航空機のための進路プランニング)、船舶システム(たとえば、ボート又は他の水上船舶のための進路プランニング)、及び/又は他の技術のために使用され得る。
ホスト・システム102のVM108、110、114、及び116のそれぞれは、仮想計算デバイスでもよい。VM108、110、114、及び116のそれぞれは、メモリ118において別個の能力及び作動アドレス空間を有し得る。たとえば、VM108、110、114、及び116は、VMメモリ120、VMメモリ122、VMメモリ124、及びVMメモリ126にそれぞれ対応するそれぞれのアドレス空間を有し得る。メモリ118は、1個又は複数の物理メモリ・デバイスを指し得、そして、ハイパーバイザ及び/又はVMM104は、別個のアドレス空間を実施しながら物理デバイスを共用するためのVM108、110、114、及び116の能力をサポートする責任を負い得る。いくつかの実例では、各VMは、ハイパーバイザ及び/又はVMM104によってサポートされる異なるパーティションにある。
VM108、110、114、又は116のうちの1個又は複数は、ホスト・コントローラ106を介して周辺デバイス(たとえば、外部デバイス130)及び構成要素との通信を受信及び提供することができる。外部デバイス130の実例には、ホスト・コントローラ・インターフェイスを介してVMと通信する能力を有する任意のデバイス、たとえば、ECU、USBドライブ、カメラ、スマートフォン、VM、ラップトップ、パーソナル・コンピュータ、ネットワーク・デバイス、周辺デバイス、クライアント・デバイスなど、が含まれる。各VMは、その実例はLinux、Android、GENIVI、QNXなどの配備を含む、ゲストOSなどのOSIを備え得る。自律運転実装形態の特定の実例として、ゲストOSのうちの1つは、車載インフォテインメント(IVI:In-Vehicle Infotainment)システム、別の車両クラスタ、別のヘッド・アップ・ディスプレイ(HUD:Heads-Up-Display)システム、並びにさらに別のADAS及び/又は自律運転システムを制御し得る。この機能性を実装するために使用される任意の数の通信が、ホスト・コントローラ106によって提供されるインターフェイスを介して提供され得る。
様々な実例では、VM108、110、114、及び116のそれぞれは、VMが任意の数のコマンド提供し得る先のコマンド・リングを有し得る。各VMは、メモリ118内のVMのメモリ(たとえば、アドレス空間)においてコマンドを提供し得る。たとえば、VM108は、VM108に割り当てられるVMメモリ120へのコマンドを提供し得る。そのようなコマンドの一実例には、要求コマンドが含まれ、要求コマンドは、VMが、別のデバイス、たとえば、外部デバイス130若しくは別のVM又は論理デバイス若しくは構成要素、への接続を確立及び/又は修正するために、接続及び/又はデバイス能力(たとえば、外部デバイス130の)に関する情報を要求するために使用することができる。VMM104及び/又はハイパーバイザは、接続を修正及び/又は確立するために要求コマンドを使用することができる。一実例として、外部デバイス130が、デジタル・カメラである場合、要求コマンドは、どのようなフォーマット又は転送をデジタル・カメラがサポートするかを指示し得る。
要求コマンドは、異なるフォーマットでもよく、並びに/又はホスト・コントローラ106によって実装されたコントローラ・インターフェイス及び/若しくは他の接続基準に応じて異なるタイプの情報を含み得る。たとえば、コントローラ・インターフェイスがxHCIに基づく場合、コマンドはTRBデータを含み得る。TRBデータは、メモリ内に構築されたデータ構造体の形でもよく、TRBタイプ・フィールド、1個又は複数の予約済みフィールド、及びスロットIDなどの情報を表し得る。各VF(及びVM)は、スロットIDを使用してスロットを割り当てられ得る。スロットは、デバイス全体に関する又はデバイスのすべてのエンドポイントに影響する情報を含むスロット・コンテキスト・データ構造体を含むスロット・コンテキスト・アドレスを有し得る。VMM104は、スロット・コンテキスト内のPFにおいて、このスロット・コンテキスト・アドレス及びプログラムを読み取り得る。
セキュリティ強化のために、VMM104及び/又はハイパーバイザは、コマンド・リング処理のためにVMのメモリを直接読み取るための能力を有さなくてもよい。たとえば、仮想化ソフトウェアが不正侵入を受けた場合、VMM104は、メモリ118内の及び/又は特定のVMのメモリ内の任意の位置から読み取ることができ得る。その代わりとして、VMから要求コマンドを読み取るために、VMM104のインターフェイス・マネージャ136は、読み取りコマンドをホスト・コントローラ106に提供することができ、ホスト・コントローラ106のインターフェイス・マネージャ146は、読み取りコマンドを受信し、それに応答して、1個又は複数のコントローラ直接メモリ・アクセス(DMA:direct memory access)を使用してVMメモリからデータを読み取ることができる。ホスト・コントローラ106のインターフェイス・マネージャ146はさらに、VMM104のインターフェイス・マネージャ136によって読み取られ得る、VMMメモリ134へのデータの提供(たとえば、書き込み)などによる、データへのアクセスをVMM104に提供することができる。VMM104は、次いで、通信プロセッサ138を使用してコマンドを処理して接続を容易にすることができる。VMMメモリ134は、VMM104内にあるものとして示されているが、VMM104の外部でもよい。さらにVMMメモリ134は、メモリ118に及び/又はホスト・システム102の様々な他の構成要素に含まれ得る。VMMメモリ134は、一般に、VMM104のインターフェイス・マネージャ136にアクセス可能なメモリ位置を指し得る。
VMM104は、少なくともいくつかの仮想化サービスをVM108、110、114、及び116のそれぞれに提供するように構成され得る。これは、VM108、110、114、及び116のそれぞれの能力及び作動レジスタ空間をトラップするVMM104を含み得る。いくつかの実施例において、VMM104は、VM108、110、114、及び116のルート・ポート・レベル仮想化を実行するように構成され、そこで、すべてのデバイスは、1個のルート・ポートに接続され得、その中で1個のゲスト・オペレーティング・システムに割り当てられ得る。VMM104はまた、VM108、110、114、及び116のそれぞれの物理機能及びコマンド・リングを管理し得る。いくつかの実施例において、VMM104は、VFがホスト・コントローラ106の能力及び作動レジスタ空間にアクセスしようとしているときにはいつでも、インターフェイス・マネージャ136を介して通知され得る。VMM104のPFコマンド及びイベント・リングは、通信プロセッサ138を使用してVFコマンドを処理するように及びインターフェイス・マネージャ136を使用してホスト・コントローラ106からイベントTRBを受信するように構成され得る。VMM104のインターフェイス・マネージャ136はまた、インターフェイス・マネージャ136が、次いで、VM間通信(IVC:Inter VM Communication)メッセージの形でそれぞれのVMに転送することができる、ホスト・コントローラ106に関連するすべてのポートのパッド割り込みを受信することができる。
ホスト・コントローラ・ファームウェア106は、システムの信頼チェーンを介してホスト・システム102によってロードされたときに署名及び認証されたホスト・システム102の信頼されているエンティティでもよい。ホスト・コントローラ・ファームウェア106は、様々なホスト・コントローラ・インターフェイスのうちのいずれか、たとえば、ユニバーサル・シリアル・バス(USB)、ファイアーワイヤ、ブルートゥース、イーサネット(登録商標)、周辺構成要素相互接続(PCI)、近距離通信(NFC)、車両対あらゆるもの(V2X:Vehicle-to-everything)、Car2Car、セルラ、ワイヤレス・フィディリティ(WiFi:Wireless Fidelity)、又は他のタイプの通信のために使用されるもの、をサポートすることができる。
ホスト・コントローラ・ファームウェア106は、メモリ118で何にアクセスすべきか、それを安全に行う方法、及びそれらの結果がホスト・システム102の他の構成要素にどのように利用可能にされているかを決定し得る。この趣旨で、ホスト・コントローラ106は、VMM104からの読み取りコマンド及び/又はデータへのアクセスを規制するために読み取りコマンドに応答してメモリ118から読み取られたデータを有効にするためにバリデータ142を使用することができる。VMからの読み取りコマンドを有効にするために、バリデータ142は、その読み取りコマンドは対応するVMのコマンド・リングのドアベル・イベントとマッチするということを確認することができる。たとえば、VM108が、要求コマンドをVMメモリ120に書き込むとき、それは、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146によって受信されたドアベル・イベントを提供することができる。そのようなドアベル・イベントが、VM108から受信されなかったが、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146が、ホスト・コントローラ・ファームウェア106がVMメモリ120から読み取ることを要求する読み取りコマンドを受信した場合、バリデータ142は、その読み取りコマンドは無効であると判定することができる。
もう1つの実例として、バリデータ142は、ホスト・コントローラ106のインターフェイス・マネージャ146が、読み取りコマンドを受信するより前に、ドアベル・イベントをVMM104に送ったということを確認することができる。たとえば、いくつかの実施例において、VM108からのドアベル・イベントの受信に応答して、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、対応するドアベル・イベントをVMM104に提供することができる。VMM104へのドアベル・イベントは、VMM104に指示してメモリ・マッパ140を使用してVM108のメモリ・アドレスを判定し、ホスト・コントローラ106への読み取りコマンドにおいて1個又は複数のメモリ位置のメモリ・アドレス又は他のインジケータを提供することができる。そのようなドアベル・イベントが、ホスト・コントローラ106のインターフェイス・マネージャ146によってVMM104に提供されなかったが、ホスト・コントローラ・ファームウェア106がVMメモリ120から読み取るということを要求する読み取りコマンドが、受信される場合、バリデータ142は、読み取りコマンドは無効であると判定することができる。
任意の実例において、ホスト・コントローラ106のバリデータ142は、読み取りコマンド内の情報を使用して、読み取りコマンドが有効であるかどうかを判定することができる。たとえば、読み取りコマンドは、スロットID、VF ID、そこから読み取るべきメモリ・アドレス、又は読み取るべきメモリ・サイズのうちの1個又は複数を含み得る。いくつかの実例では、VF IDが、ドアベル・イベントにおいてVM108によってホスト・コントローラ・ファームウェア106に提供されたVFのIDとマッチしない場合、ホスト・コントローラ106のバリデータ142は、読み取りコマンドは無効であると判定することができる。また、いくつかの実例では、スロットIDが、ドアベル・イベントにおいてVM108によってホスト・コントローラ・ファームウェア106に提供されたスロットのIDとマッチしない場合、ホスト・コントローラ106のバリデータ142は、読み取りコマンドは無効であると判定することができる。
もう1つの実例として、ホスト・コントローラ106のバリデータ142は、読み取りコマンドによって指定されたメモリ・サイズに基づいて読み取りコマンドを有効にすることができる。これは、メモリ・サイズは所定の範囲内にある及び/又は所定のサイズ(他の要因に基づいて変化し得る)であると判定することを含み得る。たとえば、TRBは、16バイトでもよく、より大きい又はより小さいサイズは、無効なコマンドを示し得る。したがって、バリデータ142が、メモリ・サイズは16バイトと等しくないと判定した場合、バリデータ142は、読み取りコマンドは無効であると判定することができる。読み取りコマンドが、バリデータ142によって有効にされない場合、ホスト・コントローラ・ファームウェア106は、読み取りコマンドによって指示されたメモリ位置をインターフェイス・マネージャ146を使用して読み取ること及び/又はそのメモリ位置から読み取られたデータへのアクセスをVMM104に提供することをやめることができる。
ホスト・コントローラ106のバリデータ142が読み取りコマンドを有効にすることに加えて又はその代わりに、バリデータ142は、読み取りコマンドによって指示されたメモリ位置から読み取られたデータを有効にすることができる。たとえば、バリデータ142は、データを読み取り、データが適切なフォーマットである及び/又は適切な情報若しくはパラメータを含むことを確認することができる。これは、要求タイプ・フィールドが有効値を有する、1個又は複数の予約済みフィールドが期待値を有する、スロットIDが所定の範囲内にある、及び/又はデータが定義済みフォーマットであることをバリデータ142がチェックすることを含み得る。期待値及び/又は所定の範囲は、静的値を有し得る、又は動的に生成され得る。さらに、いずれも、ホスト・コントローラ・ファームウェア106にコード化されるなど、ホスト・コントローラ・ファームウェア106によって予め決定する又は定義することができる。たとえば、いずれの値も、ランタイムにおいてコードによってハードコード若しくは計算する及び/又はホスト・コントローラ・ファームウェア106によって予め決定することができる。xHCIインターフェイスの実例では、これは、TRBタイプ・フィールドが有効な範囲内にある、1個若しくは複数の予約済みフィールドがゼロと等しい、スロットIDが所定の範囲内にある、及び/又はデータがTRBフォーマットであるということをチェックすることを含み得る。バリデータ142が、データを有効にしない(たとえば、データは無効であると判定する)場合、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、VMM104にそのメモリ位置から読み取られたデータへのアクセスを提供するのをやめることができる。
ここで図2を参照すると、図2は、本開示のいくつかの実施例による、メモリ内のデータへの仮想化ソフトウェアによるアクセスを有効にするためのプロセス200の一実例の流れ図を示す。例示的プロセス200は、例として、図1のVM108及びVMメモリ120を使用して解説されている。しかしながら、プロセス200は、VM及びVMメモリ、たとえば、図1のVM110、114、若しくはVM116及びVMメモリ122、124、若しくは126、のために同様に形成され得る。図1の構成要素の特定の構成及び組立は、図2によって制限されるものではなく、いくつかの実施例において変化し得る。プロセス200は、ブロック及び矢印を用いて表現されているが、これは、プロセス200のすべての実施例を特定の順番に、又は特定の動作に制限するものではない。
プロセス200の202において、VMM104のインターフェイス・マネージャ136は、接続関連イベントのVM108への通知を送ることができる。通知は、たとえば、論理若しくは物理デバイス/エンティティ(たとえば、外部デバイス130)がポート(たとえば、ルート・ポート)に接続した及び/又はデバイス/エンティティがVM108への新しい若しくは修正された接続を要求していることをVM108に指示し得る。たとえば、プロセス200より前に、VMM104は、オプションで、VFを介して接続関連イベントを決定する(たとえば、エンティティ及び/又は周辺デバイスからの要求に基づいて)ことができる。いくつかの実施例において、これは、VM108に関連するポートのパッド割り込みをVMM104のインターフェイス・マネージャ136が受信することを含み得る。VMM104のインターフェイス・マネージャ136は、次いで、VM間通信(IVC)メッセージの形で202においてVM108に対応する情報(たとえば、割り込み情報)を含む通知を転送することができる。
202における通知の受信に基づいて、VM108は、204Aにおいて、要求コマンドをVMメモリ120に書き込むことができる。たとえば、VM108は、VM108のコマンド・リングに要求コマンドを書き込むことができる。要求コマンドは、通知に基づき得、たとえば、接続及び/又はデバイス・プロパティ(たとえば、接続されたデバイスの)の要求を含み得る。要求コマンドが説明されているが、要求コマンドは、任意の数のコマンド(たとえば、複数の要求コマンド)に対応し得る。
さらに202における通知の受信に基づいて、VM108は、204Bにおいて、204Aにおいて記憶されたコマンドに関してホスト・コントローラ・ファームウェア106に通知することができる。たとえば、204Aの後、最中、又は前に、VM108は、ドアベル・イベントをホスト・コントローラ・ファームウェア106に送ってホスト・コントローラ・ファームウェア106のドアベルを鳴らすことができる。ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、通知を受信し、206において、204Bにおける通知の受信に基づいてVMM104に要求を送ることができる。いくつかの実例では、これは、ドアベル・イベントをVMM104に転送することを含む。いくつかの実例では、通信プロセッサ144は、VM108からの通知に関する情報を記録し、バリデータ142は、それを使用して、VMM104から受信された読み取り要求を有効にすることができる。これは、たとえば、VM108及び/若しくは任意のVMから受信されるいくつかの通知、VM108及び/若しくは任意のVMから受信された通知に基づいてVMM104に送られるいくつかの要求、並びに/又はVM108のVM ID(たとえば、VF ID)を含み得る。
要求(たとえば、転送されたドアベル・イベント)は、VMM104のインターフェイス・マネージャ136によって受信され、VMM104に指示してVMメモリ120における要求コマンドの処理を助ける(たとえば、VM108のコマンド・リングにおける1個又は複数のコマンドの処理を助ける)ことができる。VMM104の通信プロセッサ144は、206からの要求を処理し、メモリ・マッパ140を使用して1個又は複数のメモリ位置に要求をマップすることができる。通信プロセッサ144は、1個又は複数のメモリ位置を使用して読み取りコマンドを生成することができ、VMM104のインターフェイス・マネージャ136は、208において、読み取りコマンドをホスト・コントローラ106に提供することができる。本明細書で論じられているように、読み取りコマンドは、たとえば、メモリ118内のメモリ・アドレス及び読み取りのメモリ・サイズを使用して、読み取るべきホスト・コントローラ・ファームウェア106の1個又は複数のメモリ位置を指示することができる。読み取りコマンドはまた、VM108のスロットID又はVF IDを含み得る。
ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、VMM104から読み取りコマンドを受信することができ、通信プロセッサ144は、読み取りコマンド内の情報を使用して、204AにおいてVM108によってVMメモリ120に記憶された要求コマンド(たとえば、コマンドTRBデータ)を210Aにおいて読み取ることができる。たとえば、通信プロセッサ144は、スロットID又はVF IDを使用してVM108の固有のストリームIDを決定することができる。ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、ストリームID、メモリ・アドレス、及びVMメモリ120から読み取るべきメモリ・サイズを使用することができる。ホスト・システム102において、ストリームIDは、ハイパーバイザによって別のハードウェア・レジスタにおいて個別にプログラムすることができ、異なるストリームIDが異なるVF/VMに割り当てられた、メモリ・アクセス・セキュリティのために使用することができる。
210Aの前、最中、及び/又は後に、通信プロセッサ144は、バリデータ142を使用して、208からの読み取りコマンド及び/又は210Aにおいて読み取られたデータのうちの1個又は複数を有効にすることができる。たとえば、いくつかの実施例において、バリデータ142が、読み取りコマンドは無効であると判定した場合、210Aは、実行されなくてもよい。他の実例において、バリデータ142は、読み取りコマンドが無効であると分かった場合でも、210Aにおいてデータを読み取ることができる。また、バリデータ142は、データが有効であるかを判定するためにデータを分析してもしなくてもよい。いくつかの実例では、バリデータ142は、常に有効化なしにデータを読み取ることになり、可能であれば、次いで、データの有効化を実行することになる。
データが、210Aにおいて読み取られた後、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、そのデータによって表されたデータ及び/又は情報をVMM104に提供することができる。図示された実例において、インターフェイス・マネージャ146は、210Bにおいて情報(たとえば、コマンドTRBデータ)をVMMメモリ134に記憶することによって、それを行うことができる。また、212において、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、通知をVMM104に提供することができる。通知は、210Bからの情報がVMMメモリ134にある、208からの読み取りコマンドが、バリデータ142によって、有効であることが分かった、及び/又は210Aにおいて読み取られたデータが、バリデータ142によって、有効であることが分かったということをVMM104に指示することができる。通知は、たとえば、コマンド完了イベントと呼ばれ得る。いくつかの実施例において、コマンド完了イベントは、データ及び/又は読み取りコマンドの有効化の成功を指示する、CCode=1を含み得る。バリデータ142によってデータ及び/又は読み取りコマンドが有効であることが分からなければ、コマンド完了イベント(たとえば、CCode)は、データ及び/又は読み取りコマンドのうちの1個又は複数は無効であると分かったということを指示し得る。たとえば、コマンド完了イベントは、データ及び/又は読み取りコマンドの有効化の失敗を示す、CCode=0を含み得る。さらに、データ及び/又は読み取りコマンドのうちの1個又は複数が無効であると分かった場合、情報は、210BにおいてVMMメモリ134に記憶されていないことがある。
VMM104のインターフェイス・マネージャ136は、ホスト・コントローラ・ファームウェア106からの212からの通知を受信し、通知に基づいて、VMMメモリ134から情報を読み取ることができる。たとえば、通信プロセッサ144は、208からの読み取りコマンドが成功したと判定し(たとえば、コマンド完了イベントにおいてCCode=1を識別することによって)、その判定に基づいて、214において情報を読み取ることができる。読み取りコマンドが失敗した場合、VMM104は、情報の読み取りを試みなくてもよく、いくつかの他のアクションをオプションで実行することができる。たとえば、VMM104は、失敗に関してVM108に通知することができる。VMM104が、214におけるVM108からの要求コマンドに関する情報を無事に受信した場合、通信プロセッサ138は、情報を処理し、VM108にその結果(たとえば、要求された情報)を送る(たとえば、コマンド完了イベントTRBにおいて)ことができる。その後に、デバイス/エンティティへの接続が、その結果に基づいて、確立及び/又は修正され得る。
ここで図3~5を参照すると、本明細書に記載された、方法300、400、及び500の各ブロックは、ハードウェア、ファームウェア、及び/又はソフトウェアの任意の組合せを使用して実行され得る計算プロセスを含む。たとえば、様々な機能は、メモリに記憶されたプロセッサ実行命令によって実施され得る。方法300、400、及び500はまた、コンピュータ記憶媒体に記憶されたコンピュータ使用可能な命令として実施され得る。方法300、400、及び500は、非制限的実例をいくつか挙げると、独立型アプリケーション、サービス又はホストされたサービス(独立型の又は別のホストされたサービスと組み合わせた)、或いは別の製品へのプラグインによって提供され得る。加えて、方法300、400、及び500は、例として、図1のホスト・システム102を参照して、説明されている。しかしながら、これらの方法300、400、及び500は、本明細書に記載のものを含むが、これらに限定されない、1個のシステム、又は複数のシステムの任意の組合せによって、追加で又は別法として、実行され得る。さらに、方法300、400、又は500は、図2のプロセス200に対応してもしなくてもよい。
ここで図3を参照すると、図3は、本開示のいくつかの実施例による、仮想化ソフトウェアからの読み取りコマンドに応答してVMメモリから読み取られたデータを有効にするための方法の一実例の流れ図を示す。方法300は、ブロックB302において、仮想マシンのメモリ・アドレスを指示するコマンドを受信することを含む。たとえば、図1のホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、コマンド(たとえば、読み取りコマンド)をVMM104から受信することができる。コマンドは、VM108のメモリ・アドレスを指示することができる。
方法300は、ブロックB304において、メモリ・アドレスからデータを読み取ることを含む。たとえば、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、コマンドの受信に基づいてVMメモリ120内のメモリ・アドレスからデータを読み取ることができる。
方法300は、ブロックB306において、メモリ・アドレスから読み取られたデータを有効にすることを含む。たとえば、ホスト・コントローラ・ファームウェア106のバリデータ142は、メモリ・アドレスから読み取られたデータを有効にすることができる。
方法300は、ブロックB308において、読み取られたデータへのアクセスをVMMに提供することを含む。たとえば、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、(たとえば、VMMメモリ134を介して)有効化に基づいてメモリ・アドレスから読み取られたデータへのアクセスをVMM104に提供することができる。
方法300は、ブロックB310において、コマンド完了イベントを送ることを含む。たとえば、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、メモリ・アドレスから読み取られたデータが有効にされたことを指示するコマンド完了イベントをVMM104へ送ることができる。
ブロックB306においてデータが有効にされなかった場合、少なくともブロックB308は、実行されなくてもよい。また、いくつかの実施例では、ブロックB306においてデータが有効にされなかった場合、ブロックB310におけるコマンド完了イベントは、データは有効にされなかった(たとえば、無効であると分かった)ことを指示し得る。
図4を参照すると、図4は、本開示のいくつかの実施例による、VMメモリを読み取るための仮想化ソフトウェアからのコマンドを有効にする方法400の一実例の流れ図を示す。いくつかの実例では、方法400は、方法300に組み込まれ得る。他の実例において、方法400及び方法300は、互いに独立し得る。
方法400は、ブロックB402において、仮想マシンのメモリ・アドレスを指示するコマンドを受信することを含む。たとえば、図1のホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、コマンド(たとえば、読み取りコマンド)をVMM104から受信することができる。コマンドは、VM108のメモリ・アドレスを指示することができる。
ブロックB404において方法400は、コマンドを有効にすることを含み得る。たとえば、通信プロセッサ144は、バリデータ142を使用して、VMM104から受信されたコマンドを有効にすることができる。
ブロックB406において方法400は、メモリ・アドレスからデータを読み取ることを含む。たとえば、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、コマンドの受信に基づいてVMメモリ120内のメモリ・アドレスからデータを読み取ることができる。いくつかの実施例において、メモリ・アドレスからのデータの読み取りは、コマンドを有効にするバリデータ142に基づき得る。他の実例において、データは、コマンドが有効であると判定されたかどうかにかかわらず、読み取られ得る。
方法400は、ブロックB408において、読み取られたデータへのアクセスをVMMに提供することを含む。たとえば、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、(たとえば、VMMメモリ134を介して)有効化に基づいてメモリ・アドレスから読み取られたデータへのアクセスをVMM104に提供することができる。
方法400は、ブロックB410において、コマンド完了イベントを送ることを含む。たとえば、ホスト・コントローラ・ファームウェア106のインターフェイス・マネージャ146は、メモリ・アドレスから読み取られたデータが有効にされたことを指示するコマンド完了イベントをVMM104へ送ることができる。
ブロックB404においてコマンドが有効にされなかった場合、少なくともブロックB408は、実行されなくてもよい。また、いくつかの実施例において、ブロックB404においてデータが有効にされなかった場合、ブロックB410におけるコマンド完了イベントは、コマンドは有効にされなかった(たとえば、無効であると分かった)ことを指示することができる、及び/又は、ブロックB406は、実行されなくてもよい。さらにいくつかの事例において、ブロックB406は、ブロックB404より前に実行され得る。
図5を参照すると、図5は、本開示のいくつかの実施例による、仮想化ソフトウェアがホスト・コントローラ・ファームウェアを使用してVMメモリからデータを読み取る方法500の一実例の流れ図を示す。いくつかの実例では、方法500は、方法300又は方法400のうちの1個又は複数に組み込まれ得る。たとえば、方法500は、VMMの観点から方法300及び/又は方法400に対応し得る。他の実例において、方法500及び方法300又は方法400は、互いに独立し得る。
方法500は、ブロックB502において、仮想マシンのメモリ・アドレスを指示するコマンドを送ることを含む。たとえば、図1のVMM104のインターフェイス・マネージャ136は、コマンド(たとえば、読み取りコマンド)をホスト・コントローラ・ファームウェア106に送ることができる。コマンドは、VM108のメモリ・アドレスを指示することができる。いくつかの実施例において、ブロックB502は、本明細書に記載のように、ホスト・コントローラ106からドアベル・イベントを受信するVMM104のインターフェイス・マネージャ136に基づき得る。
方法500は、ブロックB504において、メモリ・アドレスから読み取られたデータ、コマンド、又はその両方の有効化を示すコマンド完了イベントを受信することを含む。たとえば、VMM104のインターフェイス・マネージャ136は、コマンド完了イベントをホスト・コントローラ・ファームウェア106から受信することができる。コマンド完了イベントは、コマンド、コマンドに基づいてメモリ・アドレスから読み取られたデータ、又はその両方の、ホスト・コントローラ・ファームウェア106による、有効化を示す(たとえば、本明細書に記載のCCodeを介して)ことができる。
方法500は、ブロックB506において、メモリ・アドレスから読み取られたデータを読み取ることを含む。たとえば、VMM104のインターフェイス・マネージャ136は、メモリ・アドレスから読み取られたデータを読み取ることができる。
図6は、本出願のいくつかの実装形態においてメモリ内のデータへの仮想化ソフトウェアによるアクセスを有効にするのに適した例示的コンピューティング環境のブロック図である。計算デバイス600は、以下のデバイスを直接に又は間接に結合するバス602を含み得る:メモリ604、1個又は複数の中央処理装置(CPU)606、1個又は複数のグラフィック・プロセッシング・ユニット(GPU)608、通信インターフェイス610、入出力(I/O)ポート612、入出力構成要素614、電力供給装置616、及び1個又は複数の提示構成要素618(たとえば、ディスプレイ)。
図6の様々なブロックは、線でバス602を介して接続されているように示されているが、これは制限することを意図されておらず、単に分かりやすくするためである。たとえば、一部の実施例では、表示デバイスなどの提示構成要素618は、I/O構成要素614と考えられ得る(たとえば、ディスプレイがタッチ・スクリーンである場合)。別の実例として、CPU606及び/又はGPU608はメモリを含み得る(たとえば、メモリ604は、GPU608、CPU606、及び/又は他の構成要素のメモリに加えた記憶デバイスを表し得る)。言い換えれば、図6の計算デバイスは、単に例示である。「ワークステーション」、「サーバ」、「ラップトップ」、「デスクトップ」、「タブレット」、「クライアント・デバイス」、「モバイル・デバイス」、「ハンドヘルド・デバイス」、「ゲーム機」、「電子制御ユニット(ECU:electronic control unit)」、「仮想現実システム」、及び/又は他のデバイス若しくはシステム・タイプなどのカテゴリはすべて、図6の計算デバイスの範囲内にあることが意図されているので、これらは区別されない。
バス602は、アドレス・バス、データ・バス、制御バス、又はその組合せなど、1個又は複数のバスを表し得る。バス602は、ISA(industry standard architecture)バス、EISA(extended industry standard architecture)バス、VESA(video electronics standard association)バス、PCI(peripheral component interconnect)バス、PCIe(PCI express)バス、及び/又は別のタイプのバスなど、1個又は複数のバス・タイプを含み得る。
メモリ604は、様々なコンピュータ可読媒体のいずれかを含み得る。コンピュータ可読媒体は、計算デバイス600によってアクセスすることができる任意の利用可能な媒体でもよい。コンピュータ可読媒体は、揮発性及び不揮発性媒体の両方、並びに取り外し可能な及び取り外し不可能な媒体を含み得る。例として、しかし限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を備え得る。
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造体、プログラム・アプリケーション、及び/又は他のデータ・タイプなどの情報の記憶のための任意の方法又は技術において実装された揮発性及び不揮発性媒体並びに/又は取り外し可能な及び取り外し不可能な媒体の両方を含み得る。たとえば、メモリ604は、オペレーティング・システムなど、(たとえば、プログラム及び/又はプログラム要素を表す)コンピュータ可読命令を記憶することができる。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリ又は他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD:digital versatile disk)又は他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ又は他の磁気記憶デバイス、或いは、所望の情報を記憶するために使用され得る及び計算デバイス600によってアクセスされ得る任意の他の媒体を含み得るが、これらに限定されない。本明細書では、コンピュータ記憶媒体は、信号自体を含まない。
通信媒体は、搬送波などの変調データ信号又は他の移送機構においてコンピュータ可読命令、データ構造体、プログラム・アプリケーション、及び/又は他のデータ・タイプを実施することができ、任意の情報配信媒体を含む。「変調データ信号」という用語は、その特性セットのうちの1個又は複数を有する或いは信号内の情報をエンコードするような方式で変化した信号を指し得る。限定ではなく、例として、通信媒体は、ワイヤード・ネットワーク又は直接ワイヤード接続などのワイヤード媒体と、音響、RF、赤外線及び他のワイヤレス媒体などのワイヤレス媒体とを含み得る。前述の任意の組合せもまた、コンピュータ可読媒体の範囲に含まれるべきである。
CPU606は、コンピュータ可読命令を実行して計算デバイス600の1個又は複数の構成要素を制御して本明細書に記載の方法及び/又はプロセスのうちの1個又は複数を実行するように構成され得る。CPU606は、多数のソフトウェア・スレッドを同時に処理する能力を有する1個又は複数の(たとえば、1個、2個、4個、8個、28個、72個などの)コアをそれぞれ含み得る。CPU606は、任意のタイプのプロセッサを含み得、実装された計算デバイス600のタイプに応じて、異なるタイプのプロセッサを含み得る(たとえば、モバイル・デバイスのためのより少数のコアを有するプロセッサ、及びサーバのためのより多数のコアを有するプロセッサ)。たとえば、計算デバイス600のタイプに応じて、プロセッサは、縮小命令セット計算(RISC:Reduced Instruction Set Computing)を使用して実装されたARMプロセッサ、又は複合命令セット計算(CISC:Complex Instruction Set Computing)を使用して実装されたx86プロセッサでもよい。計算デバイス600は、計算コプロセッサなど、1個又は複数のマイクロプロセッサ又は補助コプロセッサに加えて1個又は複数のCPU606を含み得る。
GPU608は、グラフィックス(たとえば、3Dグラフィックス)をレンダリングするために、計算デバイス600によって使用され得る。GPU608は、同時に数百又は数千のソフトウェア・スレッドを処理する能力を有する数百又は数千のコアを含み得る。GPU608は、レンダリング・コマンド(たとえば、ホスト・インターフェースを介して受信されたCPU606からのレンダリング・コマンド)に応答して、出力画像のための画素データを生成することができる。GPU608は、画素データを記憶するための、ディスプレイ・メモリなどの、グラフィックス・メモリを含み得る。ディスプレイ・メモリは、メモリ604の一部として含まれ得る。GPU608は、(たとえば、リンクを介して)並行して動作する2個以上のGPUを含み得る。結合されると、各GPU608は、出力画像の異なる部分の又は異なる出力画像の画素データを(たとえば、第1のGPUは第1の画像のために及び第2のGPUは第2の画像のために)生成し得る。各GPUは、独自のメモリを含み得、他のGPUとメモリを共用し得る。
計算デバイス600がGPU608を含まない実例において、CPU606は、グラフィックスをレンダリングする及び/又はデータを処理するために使用され得る。
通信インターフェイス610は、ワイヤード及び/又はワイヤレス通信を含んだ、電子通信ネットワークを介して計算デバイス600が他の計算デバイスと通信することを可能にする、1個又は複数のレシーバ、トランスミッタ、及び/又はトランシーバを含み得る。通信インターフェイス610は、ワイヤレス・ネットワーク(たとえば、Wi-Fi、Z-Wave、ブルートゥース、ブルートゥースLE、ZigBeeなど)、ワイヤード・ネットワーク(たとえば、イーサネット(登録商標)を介して通信すること)、低電力ワイド・エリア・ネットワーク(たとえば、LoRaWAN、SigFoxなど)、及び/又はインターネットなどの、いくつかの異なるネットワークのうちのいずれかを介する通信を可能にするために構成要素及び機能を含み得る。
I/Oポート612は、そのうちのいくつかは計算デバイス600に内蔵(たとえば、統合)され得る、I/O構成要素614、提示構成要素618、及び/又は他の構成要素を含む、他のデバイスに計算デバイス600が論理的に連結されることを可能にすることができる。例示的なI/O構成要素614は、マイクロフォン、マウス、キーボード、ジョイスティック、ゲーム・パッド、ゲーム・コントローラ、サテライト・ディッシュ、スキャナ、プリンタ、ワイヤレス・デバイスなどを含む。I/O構成要素614は、エア・ジェスチャ、音声、又は、ユーザによって生成される他の生理的入力を処理する自然ユーザ・インターフェース(NUI:natural user interface)を提供することができる。場合によっては、入力は、さらなる処理のための適切なネットワーク要素に送信され得る。NUIは、音声認識、スタイラス認識、顔認識、生体認識、画面上及び画面の隣の両方のジェスチャ認識、エア・ジェスチャ、頭部及び視標追跡、並びに計算デバイス600のディスプレイに関連するタッチ認識(さらに詳しく後述するような)の任意の組合せを実装し得る。計算デバイス600は、ジェスチャ検出及び認識のための、ステレオスコープ・カメラ・システム、赤外線カメラ・システム、RGBカメラ・システム、タッチ画面技術、及びこれらの組合せなど、深度カメラを含み得る。追加で、計算デバイス600は、動きの検出を可能にする加速度計又はジャイロスコープを含み得る(たとえば、慣性測定ユニット(IMU:inertia measurement unit)の一部として)。いくつかの実例では、加速度計又はジャイロスコープの出力は、没入型拡張現実又は仮想現実をレンダリングするために、計算デバイス600によって使用され得る。
電力供給装置616は、ハードワイヤード電力供給装置、バッテリ電力供給装置、又はその組合せを含み得る。電力供給装置616は、計算デバイス600の構成要素が動作することを可能にするために計算デバイス600に電力を提供することができる。
提示構成要素618は、ディスプレイ(たとえば、モニタ、タッチ画面、テレビジョン画面、ヘッドアップ表示装置(HUD)、他のディスプレイ・タイプ、又はその組合せ)、スピーカ、及び/又は他の提示構成要素を含み得る。提示構成要素618は、他の構成要素(たとえば、GPU608、CPU606など)からデータを受信し、データを(たとえば、画像、ビデオ、音響などとして)出力することができる。
本開示は、コンピュータ又は、携帯情報端末若しくは他のハンドヘルド・デバイスなどの、他のマシンによって実行されている、プログラム・アプリケーションなどのコンピュータ実行可能命令を含む、コンピュータ・コード又はマシン使用可能命令との一般的関連において説明されることがある。一般に、ルーティン、プログラム、オブジェクト、構成要素、データ構造体などを含むプログラム・アプリケーションは、特定のタスクを実行する又は特定の抽象データ・タイプを実装するコードを指す。本開示は、ハンドヘルド・デバイス、家電製品、汎用コンピュータ、より特殊な計算デバイスなどを含む、様々なシステム構成で実施され得る。本開示はまた、通信ネットワークを介してリンクされた遠隔処理デバイスによってタスクが実行される分散型コンピューティング環境において実施され得る。
本明細書では、2個以上の要素に関する「及び/又は」の記述は、1個の要素のみ、又は要素の組合せを意味すると解釈されるべきである。たとえば、「要素A、要素B、及び/又は要素C」は、要素Aのみ、要素Bのみ、要素Cのみ、要素A及び要素B、要素A及び要素C、要素B及び要素C、或いは、要素A、B、及びCを含み得る。加えて、「要素A又は要素Bのうちの少なくとも1個」は、要素Aの少なくとも1個、要素Bの少なくとも1個、或いは、要素Aの少なくとも1個及び要素Bの少なくとも1個を含み得る。
本開示の主題は、法定の要件を満たすために特異性を有して記述されている。しかしながら、その記述自体が本開示の範囲を制限することは意図されていない。そうではなくて、本発明者は、請求されている主題が、他の現在の又は未来の技術と併せて、異なるステップ又は本文書に記載されたものと類似のステップの組合せを含むように、他の形で実施され得ることを意図している。さらに、「ステップ」及び/又は「ブロック」という用語は、使用される方法の異なる要素を含意するように本明細書で使用され得るが、これらの用語は、個別のステップの順番が明示的に記載されていない限り及びそのように記載されているときを除いて本明細書で開示される様々なステップの間に何らかの特定の順番を暗示するものとして解釈されるべきではない。

Claims (20)

  1. ホスト・コントローラに対応するホスト・コントローラ・ファームウェアによって、仮想マシンマネージャ(VMM)からコマンドを受信するステップであって、前記コマンドが、周辺デバイスによる要求に対応し、計算デバイスに含まれるメモリであり前記計算デバイスを使用してインスタンス化された仮想マシンに割り当てられたメモリ内のメモリ・アドレスを指示し、前記計算デバイスが、前記ホスト・コントローラを備え、前記計算デバイスが、前記ホスト・コントローラを使用して前記周辺デバイスと通信可能に結合された、受信するステップと、
    前記ホスト・コントローラ・ファームウェアによって、前記コマンドの前記受信に基づいて前記メモリ・アドレスからデータを読み取るステップと、
    前記ホスト・コントローラ・ファームウェアによって、前記メモリ・アドレスから読み取られた前記データを有効にするステップと、
    前記ホスト・コントローラ・ファームウェアによって、前記有効にすることに基づいて前記メモリ・アドレスから読み取られた前記データへのアクセスを前記VMMに提供するステップと、
    前記ホスト・コントローラ・ファームウェアによって、前記メモリ・アドレスから読み取られた前記データが有効にされたことを指示するコマンド完了イベントを前記VMMへ送るステップと
    を含む、方法。
  2. 前記データを有効にする前記ステップが、前記データによって表された1個又は複数の予約済みフィールドは前記ホスト・コントローラ・ファームウェアのコードによって定義された期待値を有すると判定するステップを含む、請求項1に記載の方法。
  3. 前記データを有効にする前記ステップが、前記データによって表されたスロットIDは前記ホスト・コントローラ・ファームウェアのコードによって定義された所定の範囲内にあると判定するステップを含む、請求項1に記載の方法。
  4. 前記コマンドが、前記メモリ・アドレス、及び前記メモリ・アドレスを使用して読み取られるべきデータ・サイズを含む、請求項1に記載の方法。
  5. 前記データを有効にする前記ステップが、
    前記データによって表された要求タイプを識別するステップと、
    前記要求タイプは有効なグループの要求タイプ内にあると判定するステップと
    を含む、請求項1に記載の方法。
  6. 前記VMMからの前記コマンドの前記受信が、ホスト・コントローラへの前記周辺デバイスの接続を検出することに基づき、前記データが、エンティティの接続能力に対する前記VMによる要求を含む、請求項1に記載の方法。
  7. ホスト・コントローラ・ファームウェアによって、仮想マシンマネージャ(VMM)からコマンドを受信するステップであって、前記コマンドが、計算デバイスに含まれるメモリであり仮想マシンに割り当てられたメモリ内のメモリ・アドレスを指示する、受信するステップと、
    前記ホスト・コントローラ・ファームウェアによって、前記VMMから前記受信されたコマンドを有効にするステップと、
    前記ホスト・コントローラ・ファームウェアによって、前記コマンドの前記受信に基づいて前記メモリ・アドレスからデータを読み取るステップと、
    前記ホスト・コントローラ・ファームウェアによって、前記有効にすることに基づいて前記メモリ・アドレスから読み取られた前記データへのアクセスを前記VMMに提供するステップと、
    前記ホスト・コントローラ・ファームウェアによって、前記コマンドが有効にされたことを指示するコマンド完了イベントを前記VMMへ送るステップと
    を含む、方法。
  8. 前記メモリ・アドレスから読み取られた前記データを、前記ホスト・コントローラ・ファームウェアによって、有効にするステップをさらに含み、前記データへのアクセスを前記VMMに前記提供することがさらに、前記データを前記有効にすることに基づく、請求項7に記載の方法。
  9. 前記データが、コマンド転送要求ブロックを表す、請求項7に記載の方法。
  10. 前記コマンドの有効にする前記ステップが、前記コマンドは前記VMからのメモリ読み取り要求を指示するドアベル・イベントに関連していると判定するステップを含む、請求項7に記載の方法。
  11. 前記メモリ・アドレスの前記読み取りが、仮想マシン・メモリの直接メモリ・アクセスを使用して前記ホスト・コントローラ・ファームウェアによって実行される、請求項7に記載の方法。
  12. 前記ホスト・コントローラ・ファームウェアが、前記計算デバイスに含まれたホスト・コントローラのものであり、前記VMMが、前記メモリ・アドレスから読み取られた前記データを使用して、前記ホスト・コントローラを介する前記仮想マシンと周辺デバイスとの間の接続を確立又は修正する、請求項7に記載の方法。
  13. 仮想マシンマネージャ(VMM)であって、
    計算デバイスに含まれるメモリであり仮想マシンに割り当てられたメモリ内のメモリ・アドレスを指示するコマンドをホスト・コントローラ・ファームウェアに送ること、
    前記メモリ・アドレスから読み取られたデータ又は前記コマンドのうちの1個又は複数の、前記ホスト・コントローラ・ファームウェアによる、有効化を示すコマンド完了イベントを受信すること、及び、
    前記メモリ・アドレスから読み取られた前記データを処理すること
    を行うために前記計算デバイスの1個又は複数のプロセッサを使用して実行される仮想マシンマネージャ(VMM)と、
    ホスト・コントローラであって、
    前記VMMから前記コマンドを受信すること、
    前記メモリ・アドレスから読み取られたデータ又は前記コマンドのうちの1個又は複数の前記有効化を実行すること、及び
    前記コマンド完了イベントを前記VMMに送ること
    を行うためのホスト・コントローラと
    を備えた、システム。
  14. 前記VMMがさらに、前記ホスト・コントローラからドアベル・イベントを受信し、前記コマンドを前記送ることが前記ドアベル・イベントに基づく、請求項13に記載のシステム。
  15. 前記コマンドが、前記メモリ・アドレス、及び前記メモリ・アドレスを使用して前記ホスト・コントローラによって読み取られるべきデータ・サイズを含む、請求項13に記載のシステム。
  16. 前記有効化が、前記データによって表された1個又は複数の予約済みフィールドは前記ホスト・コントローラ・ファームウェアのコードによって定義された期待値を有すると判定する、請求項13に記載のシステム。
  17. 前記有効化が、前記データによって表されたスロットIDは前記ホスト・コントローラ・ファームウェアのコードによって定義された所定の範囲内にあると判定する、請求項13に記載のシステム。
  18. 前記VMMがさらに、
    仮想マシン・メモリ・アドレスを指示する付加的コマンドを前記ホスト・コントローラ・ファームウェアに送ることと、
    失敗を示す付加的コマンド完了イベントを、前記ホスト・コントローラ・ファームウェアによって、受信して、前記仮想マシン・メモリ・アドレスから読み取られたデータ又は前記付加的コマンドのうちの1個又は複数を有効にすることと
    を行うように構成された、請求項13に記載のシステム。
  19. 前記システムが、自律型車両と共に含まれる、請求項13に記載のシステム。
  20. 前記VMMが、仮想機能を前記メモリ・アドレスにマップし、前記コマンド内に前記メモリ・アドレスを含める、請求項13に記載のシステム。
JP2021505835A 2018-08-03 2019-08-02 仮想マシン・メモリの安全なアクセス Active JP7384900B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862714634P 2018-08-03 2018-08-03
US62/714,634 2018-08-03
US16/530,323 2019-08-02
US16/530,323 US11429419B2 (en) 2018-08-03 2019-08-02 Secure access of virtual machine memory suitable for AI assisted automotive applications
PCT/US2019/044858 WO2020028782A1 (en) 2018-08-03 2019-08-02 Secure access of virtual machine memory

Publications (2)

Publication Number Publication Date
JP2021532495A JP2021532495A (ja) 2021-11-25
JP7384900B2 true JP7384900B2 (ja) 2023-11-21

Family

ID=69229674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021505835A Active JP7384900B2 (ja) 2018-08-03 2019-08-02 仮想マシン・メモリの安全なアクセス

Country Status (5)

Country Link
US (2) US11429419B2 (ja)
JP (1) JP7384900B2 (ja)
CN (1) CN112740180A (ja)
DE (1) DE112019003920T5 (ja)
WO (1) WO2020028782A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018205204A1 (de) * 2018-04-06 2019-10-10 Robert Bosch Gmbh Verfahren zum Bereitstellen von Anwendungsdaten zumindest einer auf einem Steuergerät eines Fahrzeugs ausführbaren Anwendung, Verfahren zum Kalibrieren eines Steuergeräts, Steuergerät und Auswerteeinrichtung
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11074013B2 (en) 2018-08-07 2021-07-27 Marvell Asia Pte, Ltd. Apparatus and methods for providing quality of service over a virtual interface for solid-state storage
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
US11836035B2 (en) 2021-08-06 2023-12-05 Western Digital Technologies, Inc. Data storage device with data verification circuitry

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014514651A (ja) 2011-03-28 2014-06-19 マカフィー, インコーポレイテッド バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法
JP2014531083A (ja) 2011-10-21 2014-11-20 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 特権ドメインでの基本入出力システム(bios)機能の提供

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9058183B2 (en) * 2009-12-29 2015-06-16 Advanced Micro Devices, Inc. Hypervisor isolation of processor cores to enable computing accelerator cores
US8627112B2 (en) * 2010-03-30 2014-01-07 Novell, Inc. Secure virtual machine memory
WO2012082792A2 (en) * 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US8356120B2 (en) * 2011-01-07 2013-01-15 Red Hat Israel, Ltd. Mechanism for memory state restoration of virtual machine (VM)-controlled peripherals at a destination host machine during migration of the VM
US20120254993A1 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US8583920B1 (en) * 2012-04-25 2013-11-12 Citrix Systems, Inc. Secure administration of virtual machines
US9785576B2 (en) * 2014-03-27 2017-10-10 Intel Corporation Hardware-assisted virtualization for implementing secure video output path
JP6584823B2 (ja) * 2014-06-20 2019-10-02 株式会社東芝 メモリ管理装置、プログラム、及び方法
JP6162652B2 (ja) * 2014-06-20 2017-07-12 株式会社東芝 メモリ管理装置、プログラム、及び方法
US9262197B2 (en) * 2014-07-16 2016-02-16 Dell Products L.P. System and method for input/output acceleration device having storage virtual appliance (SVA) using root of PCI-E endpoint
US9916263B2 (en) * 2015-08-06 2018-03-13 International Business Machines Corporation Access of virtual machines to storage area networks
CN111831588A (zh) * 2015-10-21 2020-10-27 华为技术有限公司 一种存储设备访问方法、装置和系统
US11163597B2 (en) * 2016-01-20 2021-11-02 Unisys Corporation Persistent guest and software-defined storage in computing fabric
US10503922B2 (en) * 2017-05-04 2019-12-10 Dell Products L.P. Systems and methods for hardware-based security for inter-container communication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014514651A (ja) 2011-03-28 2014-06-19 マカフィー, インコーポレイテッド バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法
JP2015212979A (ja) 2011-03-28 2015-11-26 マカフィー, インコーポレイテッド バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法
JP2014531083A (ja) 2011-10-21 2014-11-20 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. 特権ドメインでの基本入出力システム(bios)機能の提供

Also Published As

Publication number Publication date
CN112740180A (zh) 2021-04-30
US20200042341A1 (en) 2020-02-06
US11429419B2 (en) 2022-08-30
DE112019003920T5 (de) 2021-05-20
JP2021532495A (ja) 2021-11-25
US20220413892A1 (en) 2022-12-29
WO2020028782A1 (en) 2020-02-06

Similar Documents

Publication Publication Date Title
JP7384900B2 (ja) 仮想マシン・メモリの安全なアクセス
US11188376B1 (en) Edge computing system
US9720712B2 (en) Physical/virtual device failover with a shared backend
US9507617B1 (en) Inter-virtual machine communication using pseudo devices
US10846408B2 (en) Remote integrity assurance of a secured virtual environment
US10885229B2 (en) Electronic device for code integrity checking and control method thereof
US10395028B2 (en) Virtualization based intra-block workload isolation
KR20200042793A (ko) 복수의 운영체제들을 실행하는 전자장치 및 그 제어 방법
US11762782B2 (en) Caching system and method for a workspace environment
US9766918B2 (en) Virtual system device identification using GPU to host bridge mapping
US9851992B2 (en) Paravirtulized capability for device assignment
US11392512B2 (en) USB method and apparatus in a virtualization environment with multi-VM
US9684529B2 (en) Firmware and metadata migration across hypervisors based on supported capabilities
EP3899729B1 (en) Storing microcode for a virtual function in a trusted memory region
US10552225B2 (en) Virtual device migration or cloning based on device profiles
US20230259464A1 (en) Preventing unauthorized memory access using a physical address access permissions table
US11829791B2 (en) Providing device abstractions to applications inside a virtual machine
US11836503B2 (en) Electronic device for executing heterogeneous operating systems and method therefor
US20230146526A1 (en) Firmware memory map namespace for concurrent containers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230825

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230929

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231109

R150 Certificate of patent or registration of utility model

Ref document number: 7384900

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150