JP2021051420A - 仮想化支援デバイス及び仮想化支援デバイスの制御方法 - Google Patents

仮想化支援デバイス及び仮想化支援デバイスの制御方法 Download PDF

Info

Publication number
JP2021051420A
JP2021051420A JP2019172581A JP2019172581A JP2021051420A JP 2021051420 A JP2021051420 A JP 2021051420A JP 2019172581 A JP2019172581 A JP 2019172581A JP 2019172581 A JP2019172581 A JP 2019172581A JP 2021051420 A JP2021051420 A JP 2021051420A
Authority
JP
Japan
Prior art keywords
request
processor
virtual machine
application
error
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.)
Pending
Application number
JP2019172581A
Other languages
English (en)
Inventor
瑛 武田
Akira Takeda
瑛 武田
剛 小高
Takeshi Odaka
剛 小高
山田 裕
Yutaka Yamada
裕 山田
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.)
Toshiba Corp
Toshiba Electronic Devices and Storage Corp
Original Assignee
Toshiba Corp
Toshiba Electronic Devices and Storage Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Electronic Devices and Storage Corp filed Critical Toshiba Corp
Priority to JP2019172581A priority Critical patent/JP2021051420A/ja
Priority to US16/806,113 priority patent/US11182311B2/en
Publication of JP2021051420A publication Critical patent/JP2021051420A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Abstract

【課題】プロセッサの利用効率を向上する。【解決手段】実施形態の仮想化支援デバイスは、アクセラレータ25の動作を制御するプロセッサ20と、プロセッサ10によって実行される第1及び第2のアプリケーションAPPの第1及び第2の情報、第1及び第2のアプリケーションAPPからのリクエストREQと、を保持するメモリ11と、プロセッサ20及びメモリ11に接続された入出力メモリ管理ユニット14と、を含む。プロセッサ20は、第1及び第2のアプリケーションAPPからの複数のリクエストに対する複数のアクセラレータの実行順序の調停を実行し、調停に基づいて第1及び第2の情報のうち一方の情報を用いて、入出力メモリ管理ユニット14の設定を制御し、調停に基づいて複数のリクエストのうち一方のリクエストを、複数のアクセラレータ25のうち対応する1つ以上に実行させる。【選択図】 図2

Description

実施形態は、仮想化支援デバイス及び仮想化支援デバイスの制御方法に関する。
プロセッサの高速化のために、並列に動作される複数のアプリケーションの仮想化技術が利用されている。
特開2013−196138号公報
プロセッサの利用効率を向上する。
実施形態の仮想化支援デバイスは、複数のハードウェアアクセラレータの動作を制御する第1のプロセッサと、第2のプロセッサによって実行される第1のアプリケーションの第1の情報、前記第2のプロセッサによって実行される第2のアプリケーションに関する第2の情報、前記第1のアプリケーションからの1つ以上の第1のリクエスト、前記第2のアプリケーションからの1つ以上の第2のリクエストと、を保持するメモリと、前記第1のプロセッサ及び前記メモリに接続された入出力メモリ管理ユニットと、を含み、前記第1のプロセッサは、前記第1及び前記第2のアプリケーションからの前記第1及び第2のリクエストに対する前記複数のハードウェアアクセラレータの実行順序の調停を実行し、前記調停に基づいて前記第1及び前記第2の情報のうち一方の情報を用いて、前記入出力メモリ管理ユニットの設定を制御し、前記調停に基づいて前記第1及び第2のリクエストのうち一方のリクエストを、前記複数のハードウェアアクセラレータのうち対応する1つ以上に実行させる。
実施形態の仮想化支援デバイスを含む画像処理デバイスの構成例を示す図。 第1の実施形態の仮想化支援デバイスの構成例を示す模式図。 第1の実施形態の仮想化支援デバイスの構成例を示す模式図。 第1の実施形態の仮想化支援デバイスの構成例を示す模式図。 第1の実施形態の仮想化支援デバイスの動作例を示すフローチャート。 第1の実施形態の仮想化支援デバイスの動作例を説明するための模式図。 第1の実施形態の仮想化支援デバイスの動作例を説明するための模式図。 第1の実施形態の仮想化支援デバイスの動作例を説明するための模式図。 第1の実施形態の仮想化支援デバイスの動作例を説明するための模式図。 第1の実施形態の仮想化支援デバイスの動作例を説明するための模式図。 第1の実施形態の仮想化支援デバイスの動作例を説明するための模式図。 第1の実施形態の仮想化支援デバイスの動作例を説明するための模式図。 第1の実施形態の仮想化支援デバイスの動作例を説明するための模式図。 第1の実施形態の仮想化支援デバイスの動作例を説明するための模式図。 第2の実施形態の仮想支援デバイスの構成例を示す模式図。 第2の実施形態の仮想支援デバイスの構成例を説明するための模式図。 第2の実施形態の仮想支援デバイスの動作例を示すフローチャート。 第2の実施形態の仮想支援デバイスの動作例を説明するための模式図。 第2の実施形態の仮想支援デバイスの動作例を説明するための模式図。 第2の実施形態の仮想支援デバイスの動作例を説明するための模式図。 第3の実施形態の仮想支援デバイスの構成例を示す図。
図1乃至図21を参照して、複数の実施形態の仮想化支援装置について、説明する。
以下、図面を参照しながら、本実施形態について詳細に説明する。以下の説明において、同一の機能及び構成を有する要素については、同一符号を付す。
また、以下の各実施形態において、末尾に区別化のための数字/英字を伴った参照符号を付された構成要素(例えば、回路、配線、各種の電圧及び信号など)が、相互に区別されなくとも良い場合、末尾の数字/英字が省略された記載(参照符号)が用いられる。
(1)第1の実施形態
図1乃至図14を参照して、実施形態の仮想化支援装置について、説明する。
(a)構成例
図1乃至図5を参照して、本実施形態の仮想化支援デバイスの構成例について、説明する。
図1は、本実施形態の仮想化支援デバイスを含む半導体デバイス及びシステムの一例を示す概略図である。
半導体デバイス1は、プロセッサ10、メモリデバイス11、ストレージデバイス12、ROM13、メモリ管理ユニット(MMU)14、入力/出力メモリ管理ユニット(IOMMU)15、割り込みコントローラ16、インターフェイス回路19A,19B、複数のハードウェアアクセラレータ25、及び仮想化支援デバイス2などを含む。
プロセッサ10は、半導体デバイス1内のバスB1に接続されている。
プロセッサ10は、アプリケーション(ソフトウェア)APP及び各種の情報(データ)を用いて、デバイス1の所定の動作及び機能を実行するための各種の処理(例えば、計算処理)を実行する。アプリケーションAPPは、例えば、メモリデバイス11、ストレージデバイス12又はROM13などから提供される。
以下において、プロセッサ10は、CPU(Central processing unit)とよばれる。
メモリデバイス11は、メモリコントローラ(図示せず)を介してバスB1に接続されている。メモリデバイス11は、各種の設定情報、各種の管理情報、各種のテーブル、処理の対象となるデータ、及び実行された処理の計算結果などの情報(データ)を一時的に保持できる。メモリデバイス11は、他のデバイスから提供された情報を、一時的に保持できる。
メモリデバイス11は、例えば、DRAM(Dynamic random access memory)、SRAM(Static random access memory)、及びNOR型フラッシュメモリなどの1つ以上を含む。
以下では、メモリデバイス11は、RAMとよばれる。
ストレージデバイス12は、バスB1に接続されている。ストレージデバイス12は、各種の設定情報、各種の管理情報、アプリケーション(ソフトウェア)などを保持できる。例えば、半導体デバイス1の動作時において、ストレージデバイス12内のデータの一部(又は全体)は、メモリデバイス11にロードされる。
ストレージデバイス12は、HDD(Hard disk drive)、SSD(Solid state drive)、及びNAND型フラッシュメモリなどのうち1つ以上を含む。
ROM13は、バスB1に接続されている。ROM13は、デバイス1のBIOS(Basic Input/output system)及びファームウェアなどを記憶する。
割り込みコントローラ16は、バスB1に接続されている。割り込みコントローラ16は、複数のアプリケーションAPPの実行時に発生した割り込み処理を、制御できる。割り込みコントローラ16は、現在実行中の処理とは異なる処理の実行がデバイスから要求された場合に、処理の割り込みを通知する信号(以下では、割り込み通知とよばれる)を、出力する。
MMU14は、CPU10とバスB1との間に接続される。MMU14は、CPU1025とRAM11との間の情報の転送を管理及び制御する。
MMU14は、CPU10とメモリデバイス11との間における仮想アドレス(論理アドレス)と物理アドレスとのマッピングを作成する。これによって、CPU10とRAM11との間のアクセス(例えば、データの転送)が、可能となる。
IOMMU15は、バスB1に接続される。IOMMU15は、バスB2を介して仮想化支援デバイス20及び複数のアクセラレータ25に接続される。
IOMMU15は、アクセラレータ25とRAM11との間の情報の転送を管理及び制御する。
IOMMU15は、アクセラレータ25とRAM11との間における仮想アドレスと物理アドレスとのマッピング(例えば変換テーブル)を作成する。IOMMU15は、仮想化支援デバイス20とRAM11との間における仮想アドレスと物理アドレスとのマッピングを作成する。これによって、アクセラレータ25とRAM11との間のアクセス、及び、仮想化支援デバイス20とRAM11との間のアクセスが、可能となる
アクセラレータ(以下では、ハードウェアアクセラレータともよばれる)25は、CPU10の処理の高速化のために、CPU10によって実行されるアプリケーションAPPの処理を支援するハードウェア(プロセッサ)である。例えば、アクセラレータ25は、実行する処理に応じて、アプリケーションAPPに関連付けられている。
インターフェイス回路19A,19Bは、半導体デバイス1と他のデバイスとの通信を行う。
CPU10、RAM11、ストレージデバイス12、割り込みコントローラ16、インターフェイス回路19A,19B及びアクセラレータ25は、CPU10上で動作するハイパーバイザ100及び仮想化支援デバイス20によって仮想化される。仮想化されたデバイス(以下、仮想マシンVMとよばれる)上で、少なくとも1つのアプリケーションAPPが動作する。
本実施形態の仮想化支援デバイス20は、少なくともプロセッサ20を含む。プロセッサ20は、ハードウェアアクセラレータである。仮想化支援デバイス2は、CPU10上で動作するハイパーバイザの代わりに、アクセラレータ25の仮想化を支援する。例えば、仮想化支援デバイス20は、複数のアプリケーションAPPが並列処理されている場合に、複数のアプリケーションから要求された処理のアクセラレータ25における実行順序の制御(調停)を行う。
本実施形態において、仮想化支援デバイス20によって、CPU10の負荷の低減が、図られる。
半導体デバイス1は、例えば、システムLSIである。半導体デバイス1は、システムSYS内に提供及び搭載される。例えば、本実施形態の半導体デバイス1は、画像処理デバイス(画像認識デバイスともよばれる)である。画像処理デバイス1は、画像認識システムSYSに用いられる。
画像認識システムSYSは、例えば、画像処理デバイス1に加えて、カメラ5及びディスプレイデバイス9を含む。
カメラ5は、有線又は無線によって、画像処理デバイス1に電気的に結合される。カメラ5は、画像処理デバイス1内のインターフェイス回路19Aに接続される。例えば、カメラ5は、CMOSイメージセンサ(又はCCDイメージセンサ)を含む。カメラ5は、赤外線センサなどを含んでもよい。
カメラ5は、ある空間の画像に対応するデータ(以下では、画像データとよばれる)IMGを取得する。取得された画像データIMGは、画像処理デバイス1に送られる。画像認識処理が、CPU10が実行する複数のアプリケーションAPPによって、画像データIMGに施される。これによって、画像データIMG内に含まれる物体(対象物)が、認識及び識別される。
ディスプレイデバイス9は、有線又は無線によって、画像処理デバイス1に電気的に結合される。ディスプレイデバイス9は、画像処理デバイス1のインターフェイス回路19Bに接続される。例えば、ディスプレイデバイス9は、液晶ディスプレイ又は有機ELディスプレイである。
ディスプレイデバイス9は、画像処理デバイス1による処理結果を表示する。ディスプレイデバイス9は、画像処理デバイス1のユーザーインターフェイス(例えば、タッチパネル)としての機能を有していてもよい。
カメラ5及びディスプレイデバイス9は、CPU10によるアプリケーションAPPの実行によって制御される。尚、カメラ5及びディスプレイデバイス9は、画像処理デバイス1の構成要素であってもよい。
デバイス1が画像処理デバイスである場合、複数のアクセラレータ25のうち1つ以上は、例えば、画像処理アクセラレータ(以下では、IPAとも表記される)である。
IPA25は、特徴量の抽出処理、各種の画像変換処理、各種の画像間計算処理、及び、各種の計算処理などの画像データに対する各種の処理又はそれらの処理の支援を実行できる。例えば、IPA25は、画像データに対して、ヒストグラム処理、2値化処理、YUVカラー処理、マッチング処理、及び画像間演算処理などの複数の画像処理のうち1つ以上の処理を実行できる。
本実施形態の画像処理デバイス1及び画像認識システムSYSは、監視カメラ、スマートフォン、フューチャーフォン、携帯端末、無人航空機などに、適用されてもよい。
アプリケーションAPPは、デバイス1の外部のデバイス(例えば、サーバ又はホストデバイスなど)又は記憶媒体(例えば、メモリカード、USBメモリ又は光学ディスなど)から提供されてもよい。アプリケーションAPPの全体又は一部が、有線又は無線を介して、デバイス1(又はシステムSYS)の外部のデバイス/記憶媒体からデバイス1に提供され、デバイス1内で実行されてもよい。
画像認識システムSYSにおいて、複数のアプリケーションAPPが実行される。処理の実行にあたって、画像処理デバイス1は、CPU10上で動作するハイパーバイザ及び仮想化支援デバイス2によって仮想化される。仮想化された画像処理デバイス1は、仮想マシンVMとして、各アプリケーションAPPの実行を制御する。
図2は、本実施形態における、アプリケーションを実行する仮想化された画像処理デバイスの概念を模式的に示す図である。
図2に示されるように、アプリケーションAPP(APP−R,APP−V,APP−n)の各々は、仮想マシンVM(VM−R,VM−V,VM−n)上で動作する。
各仮想マシンVMにおいて、アプリケーションAPPは、対応するドライバ(デバイスドライバ)DRV(DRV−R,DRV−V,DRV−n)によって、所定の処理を実行する。ドライバDRVは、アプリケーションの制御、所定のメモリ領域(例えば、RAM11又はレジスタ)に対するパラメータの書き込み、及び所定のメモリ領域からのパラメータ/設定情報の読み出しなどを行う。例えば、ドライバDRVは、アプリケーションAPP又はOS内のプログラムである。
ハイパーバイザ100は、複数のアプリケーションAPPを実行及び制御できる。また、ハイパーバイザ100は、RAM11、ストレージデバイス12、MMU16、IOMMU15、カメラ及びディスプレイデバイスなどを制御できる。
例えば、RAM11は、仮想マシンVMのそれぞれに関する情報(設定情報及びパラメータなど)INF、及び、仮想マシンVMのそれぞれからのリクエスト(処理の要求)REQを保持する。
仮想マシンVMからのリクエスト又は割り込みコントローラ16からの指示によって割り込み処理が生じた場合に、実行するアプリケーションAPPの切り替えが、生じる。リクエスト及び割り込み処理に応じて、実行されるアプリケーションAPPに関連するIPA25が、制御される。
例えば、画像処理デバイス1は、画像データに対する認識処理のためのアプリケーション(以下では、認識アプリケーションとよばれる)APP−R、ビュー制御のアプリケーション(以下では、ビューアプリケーション)APP−V、及び様々な計算処理及び制御処理のための任意のアプリケーションAPP−nなどを並列に実行する。
認識アプリケーションAPP−Rは、ある画像データからの所定の対象物(例えば、車、人、顔又は文字など)の検出、検出された対象物に関する特徴量(例えば、輝度勾配)の計算、得られた特徴量の解析、及び解析結果に基づく各種の処理/制御などの各種の画像処理を実行するためのソフトウェア(プログラム)である。
ビューアプリケーションAPP−Vは、デバイス1の処理結果の表示、及びディスプレイデバイス9の制御などのビュー(例えば、ユーザーに対する表示)の制御を実行するためのソフトウェアである。
これらのアプリケーションAPPは、実行すべき処理に応じて、1つ以上のIPA25を用いる。
複数の仮想マシンVMの実行が可能なデバイス/システムにおいて、求められる処理の信頼性が異なる複数のアプリケーションAPPが、並列に実行される場合がある。
例えば、認識アプリケーションAPP−Rは、ビューアプリケーションAPP−Vと並列に処理される。認識アプリケーションAPP−Rの処理に要求される信頼性は、ビューアプリケーションAPP−Vの処理に要求される信頼性より高い。
本実施形態において、仮想化支援デバイス20は、アプリケーションAPPがアクセラレータ25に対して要求した処理におけるアクセラレータ25の実行順序の調停を行う。本実施形態において、仮想化支援デバイス20は、ディスパッチャとよばれる。
ディスパッチャ20は、ハードウェアアクセラレータ(プロセッサ)である。例えば、ディスパッチャ20は、処理回路201及びレジスタ回路202などを有する。
処理回路(例えば、シーケンサ)201は、ディスパッチャ20における各種の計算処理及び制御などを行う。レジスタ回路202は、ディスパッチャ20に供給された各種の情報(データ)を一時的に保持する。ディスパッチャ20の機能/構成が、仮想化されてもよい。
尚、ディスパッチャ20及びIOMMU15を含む構成(デバイス)が、本実施形態の仮想化支援デバイス2とみなされてもよい。仮想化支援デバイス2は、アクセラレータ25を含んでもよい
ディスパッチャ20は、要求される処理の信頼性に応じて設定された指標(以下では、優先度とよばれる)PRIOに基づいて、複数のアプリケーションAPPの実行順序の調停及び切り替えを制御する。
優先度PRIOは、アプリケーションAPPの処理(及びその処理結果)に要求される信頼性に応じて、例えばデバイス1への実装時に、各アプリケーションAPPに対してあらかじめ設定される。
認識アプリケーションAPP−Rの優先度PRIO−Rは、比較的高い値に設定される。一例としては、認識アプリケーションAPP−Rの優先度は、画像処理デバイス1内で用いられる複数のアプリケーションAPP(APP−R,APP−V,APP−x)の中で最も高い値に設定される。
ビューアプリケーションAPP−Vの優先度PRIO−Vは、認識アプリケーションAPP−Rの優先度PRIO−Rより低い値に設定される。
例えば、複数のアプリケーションAPPの並列処理が実行される際に、ディスパッチャ20は、認識アプリケーションAPP−R(仮想マシンVM−R)の処理がビューアプリケーションAPP−V(仮想マシンVM−V)の処理より優先されるように、優先度PRIOに基づいて、アプリケーションAPPから要求された処理のIPA25における実行順序の調停及び処理の切り替えを行う。
ディスパッチャ20は、実行すべきアプリケーションAPPに応じて、アプリケーションAPPに用いられる各種のパラメータ及び情報を、IOMMU15を介してRAM11から取得する。
ディスパッチャ20は、取得したパラメータ及び情報を用いた処理を、実行すべきアプリケーションAPPに関連するIPA25に実行させる。
IPA25の処理結果を用いて、アプリケーションAPP(仮想マシンVM)が、所定の処理を実行する。
このように、本実施形態において、ディスパッチャ20は、CPU10の代わりに、複数のIPA25の制御を行う。
これによって、本実施形態によれば、CPU10におけるアクセラレータの仮想化のための負荷が、低減される。
それゆえ、本実施形態の仮想化支援デバイスは、システム内のプロセッサの利用効率を、向上できる。
(b) ディスパッチャの構成例
図3及び図4を用いて、本実施形態の仮想化支援デバイスにおけるディスパッチャの構成例について、説明する。
上述のように、本実施形態におけるディスパッチャ20は、ハードウェアアクセラレータとして、画像処理デバイス1内に設けられる。ディスパッチャ20の構成及び機能の一部が、IOMMU15(及びMMU16)によって仮想化される。
ディスパッチャ20は、RAM11内の複数の仮想マシンVMの情報を用いて、複数のアクセラレータ25の処理の実行順序の調停及び動作/処理の制御を行う。
<RAM内の情報>
図3は、本実施形態における、RAM内のメモリエリアの構成例を示す模式図である。
RAM11は、画像処理デバイス1の構成要素の仮想化のために設定された、複数のメモリエリア111,112,113,114を、有する。
図3に示されるように、ページテーブルエリア111及び制御情報エリア112が、RAM11内に設けられる。ページテーブルエリア111及び制御情報エリア112は、例えば、システムSYS/デバイス1の制御及び管理に関する情報(データ)が、格納される。
ページテーブルエリア111は、仮想マシンVM(VM1,VM2,VMn)ごとのページテーブルPT(PT1,PT2,PTn)を保持する。
ページテーブルPTは、RAM11内の各仮想マシンVMが用いるメモリ空間の物理アドレスと仮想アドレス(論理アドレス)との対応関係を示すテーブルである。ページテーブルPTに基づいて、メモリ空間の仮想アドレスと物理アドレスとの変換が、なされる。
制御情報エリア112は、仮想マシンVMごとの制御情報CINF(CINF1,CINF2,CINFn)を保持する。
制御情報CINFは、パラメータ情報pINF及びキュー情報qINFを含む。パラメータ情報pINFは、各仮想マシンVMの各種の設定パラメータ及び各種の設定条件に関する情報である。例えば、パラメータ情報pINFは、処理の対象となる画像データ(又は、画像データからサンプルされたデータ)のサイズなどの情報を含む。キュー情報qINFは、各仮想マシンVMのキューの設定及び制御に関する情報である。
ディスパッチャ20は、ページテーブルエリア111及び制御情報エリア112内のデータにアクセスできる。仮想マシンVM及びIPA25は、ページテーブルエリア111及び制御情報エリア112内のデータにアクセスできない。
ディスパッチャレジスタエリア113が、RAM11内に設けられている。
ディスパッチャレジスタエリア113は、仮想マシンVMごとの各種の情報を保持する。
IPAパラメータPRM1、キューパラメータPRM2及びエラー処理情報eINFなどが、各仮想マシンVMに対応するレジスタユニットRU(RU1,RU2,RU3)内に格納される。
IPAパラメータPRM1は、各仮想マシンVMに関連付けられるIPA25の各種の設定パラメータである。
キューパラメータPRM2は、各仮想マシンVMに関連付けられるキューの設定を示すパラメータである。
エラー処理情報eINFは、各仮想マシンにおいてエラーが発生した場合の各種の設定を示す情報である。エラー処理情報eINFに基づいて、エラーが発生した処理を優先するか否か(エラーが発生した処理をやり直すか又は他の処理を実行するか)の判定、及びエラーの記録などが、実行される。
ディスパッチャ20は、ディスパッチャレジスタエリア113内の情報PRM1,PRM2,eINFを用いて、対応する仮想マシンVM及びIPA25の処理(及び動作)を制御する。ディスパッチャ20は、RAM11内のディスパッチャレジスタエリア113を介して、仮想マシンVMと通信できる。
ディスパッチャ20は、ディスパッチャレジスタエリア113内のデータにアクセスできる。各仮想マシンVMにおいて、パラメータPRM及び情報eIMFに関連付けられた仮想マシンVMは対応するレジスタユニットRUにアクセスでき、他の仮想マシンVMのレジスタユニットRUにアクセスできない。例えば、仮想マシンVM1は、関連付けられているレジスタユニットRU1内のデータPRM1,PRM2,eINFを用いることができる。しかし、仮想マシンVM1は、関連付けの無いレジスタユニット(他の仮想マシンVM1,VMnに関連付けられたレジスタユニット)RU2,RUn内のデータを用いることができない。
IPA25は、ディスパッチャレジスタエリア113内のデータにアクセスできない。
また、ユーザーデータエリア114が、RAM11内に設けられている。
ユーザーデータエリア114は、仮想マシンVMごとのユーザーデータUD(UD1,UD2,UDn)を保持する。ユーザーデータUDは、例えば、割り込みフラグDTa、及び画像データに関する各種の情報(例えば、画像データのサイズ)DTbなどを含む。
ユーザーデータエリア114内のデータUDに対して、ユーザーデータUDに関連付けられた仮想マシンVM及び(又は)IPA25はアクセスでき、他の仮想マシンVM及び(又は)IPA25はアクセスできない。例えば、仮想マシンVM1及び仮想マシンVMを支援するIPA25は、関連付けられているユーザーデータUD1を用いることができる。しかし、仮想マシンVM1は、関連付けの無いユーザーデータ(他の仮想マシンVM1,VMnのユーザーデータ)UD2,UDnを用いることができない。
本実施形態の仮想化支援デバイス(又は画像処理デバイス、又は画像認識システム)において、ディスパッチャ20は、RAM11内の各仮想マシンVMに関する各種のデータ(テーブル、パラメータ及び情報)を用いて、IPA25の処理を制御する。
これによって、ディスパッチャ20は、CPU10に対して非同期で、自律的な処理(例えば、複数のアプリケーションAPP(仮想マシンVM)からの要求に対する複数のIPA25の実行順序の調停を実行できる。
<キューの構造例及び仮想マシンの優先度>
図4を用いて、本実施形態の仮想化支援装置における、ディスパッチャに用いられるキューの構成例について、説明する。
図4は、本実施形態における、ディスパッチャ20のキューの構造を模式的に示す図である。
各仮想マシンVM(アプリケーションAPP)は、各仮想マシンVM自身が実行すべき処理が発生した場合に、リクエストREQを発行する。発行されたリクエストREQは、キュー回路250に供給される。
ディスパッチャ20は、仮想マシンVMごとに独立したキューQVM(QVM1,QVM2,QVM3)を保持する。仮想マシンVMからのリクエストREQが、対応するキューQVM内に格納される。
キューQVMは、RAM11内に設けられてもよいし、ディスパッチャ20内のレジスタ回路202内に設けられてもよい。
例えば、キュー回路250において、リクエストの入出力処理は、FIFO(First-in first-out)方式で制御される。各キューQVMは、複数のキューユニットquを含む。1つのキューユニットquは、1つのリクエスト(処理)REQを格納可能である。例えば、キュー回路250は、優先度付きキュー回路である。
また、1つのキューユニットquは、グループ開始リクエストGrREQ−Sを格納可能である。
各仮想マシンVMは、関連するキューQVMとは別途に、グループキューGrQVMを有することができる。複数のキューユニットGrquを含む。1つのキューユニットGrquは、1つのリクエストREQを格納可能である。また、キューユニットGrquは、グループ終了リクエストGrREQ−Eを格納可能である。
ここで、一例として、仮想マシンVM(アプリケーションAPP)の数は、3つとする。ただし、仮想マシンVMの数は、2つでもよいし、4つ以上でもよい。
3つの仮想マシンVM1,VM2,VM3のそれぞれは、あらかじめ設定された優先度PRIO(PRIO1,PRIO2,PRIO3)を有する。
例えば、優先度PRIOは、仮想マシンVM(アプリケーションAPP)の処理に要求される信頼性に基づいて、設定される。一例として、認識アプリケーションAPP−Rに対応する仮想マシンの優先度は、比較的高い値に設定される。ビューアプリケーションAPP−Vに対応する仮想マシン(例えば、仮想マシンVM3)の優先度は、認識アプリケーションAPP−Rに対応する仮想マシン(例えば、仮想マシンVM1)の優先度より低い値に設定される。
本実施形態において、例えば、3つの仮想マシンVM1,VM2、VM3のうち、第1の仮想マシンVM1は、最も高い優先度PRIO1を有する。
第2の仮想マシンVM2は、2番目に高い優先度PRIO2を有する。例えば、仮想マシンVM2は、グループキューGrQVMを有する。
第3の仮想マシンVM3は、最も低い優先度PRIO3を有する。
ディスパッチャ20は、仮想マシンVMに設定された優先度PRIOを、認識できる。
各仮想マシンVMに対応するキューQVM内に、仮想マシンVMが実行すべき処理に対応したIPA25への要求が、リクエストREQとして格納される。
リクエスト(処理)REQのそれぞれは、あらかじめ設定された処理の優先度(PRIV,HIGH,NORM,LOW,Gr)を有する。リクエストREQに設定された優先度は、区別化のために、優先レベルとよぶ。
リクエストREQは、仮想マシンVMのキューQVMに関して、処理の優先レベルに応じて、対応するキューユニットquに割り振られる。リクエストREQにグループの優先レベルGrが指定されていた場合、優先レベルGrが指定されたリクエストREQは、仮想マシンVMのグループキューGrQVMに関して、対応するキューユニットquに割り振られる。
選択された仮想マシンVMにおいて、キューQVM内の複数のリクエストREQは、高い優先レベルのリクエストREQから低い優先度のリクエストREQへの順序で実行される。
最も高い優先レベル(PRIV)を有するリクエストREQ(以下では、“REQ−PRIV”とも表記される)は、他の優先度のリクエストREQよりも先に実行される。
2番目に高い優先レベル(High)のリクエストREQ(以下では、“REQ−HIGH”とも表記される)は、最も高い優先レベルを有するリクエストREQ−PRIVが全て実行された後、2番目に高い優先レベルより低い優先レベルのリクエストREQが実行される前に、実行される。
3番目に高い優先レベル(NORM)を有するリクエストREQ(以下では、“REQ−NORM”とも表記される)は、2番目に高い優先レベルのリクエストREQ−HIGHが全て完了した後、最も低い優先レベルを有するリクエストREQが実行される前に、実行される。
複数の優先レベルのうち最も低い優先レベル(LOW)のリクエストREQ(以下では、“REQ−LOW”とも表記される)は、他の高い優先度のリクエストREQの全てが完了した後に、実行される。
通常、グループキューGrQVMに格納されているリクエストREQは実行されない。ただし、グループ開始リクエストGrSREQが実行されると、そのグループリクエストの実行以降に、グループキューGrQVMに格納されているリクエストREQは、グループキューGrQVMに対応する優先度PRIO以下の仮想マシンVMのキューQVMに格納されているリクエストREQよりも先に実行される。グループキューGrQVMのリクエストREQの実行の後、グループ終了リクエストGrREQ−Eが実行された場合、グループキューGrQVMに格納されているリクエストREQは、グループ終了リクエストGrREQ−Eの実行以降、実行されない。
以上のように、ディスパッチャ20は、仮想マシンVMの優先度の順序で、仮想マシン/アプリケーションから要求された処理に対する複数のIPA25の実行の順序をディスパッチする。優先度PRIOに基づいて選択された仮想マシンVMにおいて、処理の優先レベルに応じて、各仮想マシンVMの処理(リクエストREQ)が実行される。
ただし、グループ開始リクエストGrREQ−Sが実行された場合、グループ終了リクエストGrREQ−Eが実行されるまで、選択された仮想マシンVM及びその仮想マシンより低い優先度をもつ仮想マシンの優先レベルに応じたリクエストの実行が無効となる。その代わりに、グループキューGrQVM内の1つ以上のリクエストREQが、グループ終了リクエストGrREQ−Eの実行まで、実行される。
このように、グループキューGrQVMは、ある仮想マシンによるある一定の期間のIPA25の占有に用いられる。このIPA25の占有は、ある仮想マシンよりも高い優先度を有する他の仮想マシンのディスパッチに対して、影響を及ぼさない。
図4の例において、仮想マシンVM1、仮想マシンVM2、及び仮想マシンVM3の順序で、処理対象のリクエストが、ディスパッチャ20によって選択される。
選択された仮想マシンVM1からの複数のリクエストREQのそれぞれにおいて、優先レベルPRIVのリクエストREQ、優先レベルHIGHのリクエストREQ、優先レベルNORMのリクエストREQ、及び優先レベルLOWのリクエストの順序で、リクエストREQに対応する処理が、ディスパッチャ20の制御によって、順次実行される。
例えば、仮想マシンVM1の最も低い優先レベルのリクエストREQ−LOWは、仮想マシンVM2の最も高い優先レベルのリクエストREQ−PRIV及び仮想マシンVM3の最も高い優先レベルのリクエストREQ−PRIVより、優先的に実行される。
仮想マシンVM1における最も高い優先レベル(PRIV)から最も低い優先レベル(LOW)までの全てのリクエストREQの処理が完了した後、仮想マシンVM2における最も高い優先レベル(PRIV)から最も低い優先レベル(LOW)までの全てのリクエストREQの処理が、順次実行される。ただし、仮想マシンVM2の1つ以上のリクエストが順次実行されている途中に、グループ開始リクエストGrREQ−Sが実行された場合、仮想マシンVM2の優先レベルPRIVから優先レベルLOWまでのリクエストREQの処理は中断される。グループ終了リクエストGrREQ−Eが実行されるまで、グループリクエストGrREQのキューGrQVMに保持されるリクエストREQの処理が、順次実行される。グループ終了リクエストGrREQ−Eの実行が完了した後、仮想マシンVM2の優先レベルPRIVから優先レベルLOWまでのリクエストREQの処理が再開される。
仮想マシンVM2の全てのリクエストREQの完了の後、仮想マシンVM3のリクエストが、仮想マシンVM1及び仮想マシンVM2におけるリクエストの処理と同様に、優先度及び優先レベルに基づいて順次実行される。
これによって、本実施形態の仮想化支援システムは、仮想マシン間の干渉、及び仮想マシンVMの優先度の逆転などを防ぐことができる。
尚、リクエストの入出力処理は、FIFO方式以外の方式で制御されてもよい。
(b)動作例
図5乃至図14を参照して、本実施形態のシステム及び仮想化支援装置の動作例(制御方法)について、説明する。
図5は、本実施形態のシステム及び仮想化支援装置の動作例を示すフローチャートである。図6乃至図14は、本実施形態のシステム及び仮想化支援装置の動作例を説明するための模式図である。
<ステップS1>
図5のステップS1に示されるように、画像認識システムSYSにおいて、画像処理デバイス1の起動時に、CPU10(ハイパーバイザ100)が、ディスパッチャ20を初期化する。
図6に示されるように、ディスパッチャ20の初期化時において、CPU10は、各仮想マシンVM(アプリケーションAPP)のページテーブルPT、ポインタ(例えば、キューのポインタ)などの各種の情報を、RAM11に転送する。
例えば、仮想マシンVMのそれぞれに関して、ページテーブルPTが、RAM11のページテーブルエリア111内に書き込まれる。
<ステップS2>
図5のステップS2及び図7に示されるように、各仮想マシンVMのドライバDRVが、RAM11のディスパッチャレジスタエリア113の対応するレジスタユニットRU内に、IPAパラメータPRM1、キューパラメータPRM2及びエラー処理情報eINFを書き込む。
例えば、CPU10は、割り込みコントローラ16によって、ディスパッチャ20へ割り込み処理XXを実行する。
<ステップS3>
図5のステップS3及び図8に示されるように、ある仮想マシンVMは、アプリケーションAPP(又はドライバDRV)のプログラムによって、ディスパッチャ20の起動プログラムをキックする。これによって、ディスパッチャ20は、起動する。
<ステップS4>
図5のステップS4に示されるように、ディスパッチャ20は、ディスパッチャレジスタエリア113内の各種のパラメータPRM1,PRM2を読み出す。ディスパッチャ20は、読み出されたパラメータPRM1,PRM2を、ディスパッチャ20のキュー回路250及び(又は)レジスタ回路202内に格納する。
例えば、図9に示されるように、読み出されたパラメータPRM1,PRM2は、キュー回路250を含む制御情報エリア112内に、書き込まれる。
これによって、ディスパッチャ20は、各仮想マシンVMのパラメータPRMを取得する。
<ステップS5>
ディスパッチャ20は、複数のアプリケーションAPPからの複数のリクエストREQに対するIPA25の実行順序を調停する。
図5のステップS5に示されるように、ディスパッチャ20は、各仮想マシンVM(アプリケーション)に設定された優先度PRIOに基づいて、ディスパッチャ20のキューポインタをチェックする。
ディスパッチャ20は、優先度PRIO及びキューポインタのチェック結果に基づいて、処理すべきリクエストREQを選択する。選択されたREQに対応して、動作対象の仮想マシンVM(実行対象のアプリケーションAPP)が、認識及び選択される。ディスパッチャ20は、リクエストREQの処理に対応するIPA25を制御する。
上述のように、複数のリクエストREQの中から、最も高い優先度PRIOの仮想マシンVMが実行すべき最も高い優先レベルのリクエストREQ−PRIVが、選択される。
ディスパッチャ20は、図10に示されるように、選択されたリクエストREQに対応するパラメータPRMを、ディスパッチャ制御情報エリア112(又は、ディスパッチャレジスタエリア113)内から取得する。
例えば、認識アプリケーションAPP−Rから要求された処理が、ビューアプリケーションAPP−Vから要求された処理より優先されるように、ディスパッチャ20は、IPA25における複数のリクエストREQの実行順序を調停する。
本実施形態の仮想化支援デバイスにおいて、ディスパッチャ20は、CPU10の介在無しに、仮想マシンVM(アプリケーションAPP)に設定された優先度、及びリクエスト(処理)REQに設定された優先度に基づいて、複数のIPA25におけるアプリケーションAPPから要求された処理REQの実行順序を調停する。
<ステップS6>
図5のステップS6及び図11に示されるように、ディスパッチャ20は、選択されたリクエストREQを実行するIPA25に関して、IOMMU15の設定を行う。例えば、ディスパッチャ20は、調停の結果に対応して動作対象として選択された仮想マシンVMに応じて、RAM11内の情報及びパラメータに基づいて、IPA25とRAM11との間(又は、IPA25とCPU10との間)のデータの転送が可能なように、各種の制御を行う。
<ステップS7>
図5のステップS7及び図12に示されるように、ディスパッチャ20は、実行すべきリクエスト(実行すべき処理)REQに関するパラメータPRM1を、選択されたリクエストREQに対応する仮想マシンVMのレジスタユニットRUから、対応するIPA25に転送する。
これによって、対応するIPA25は、リクエストREQに示される処理を開始する。IPA25は、転送されたパラメータPRM1を用いて、リクエストREQに示される処理を実行する。
<ステップS8>
図5のステップS8に示されるように、IPA25は、リクエストREQに対応する所定の処理を完了する。IPA25は、処理の完了をディスパッチャ20に通知する。例えば、図13に示されるように、IPA25は、処理の完了を通知するための信号ACK1を、ディスパッチャ20に送る。
<ステップS9>
図5のステップS9に示されるように、ディスパッチャ20は、IPA25から処理の完了の通知(例えば、信号ACK1)を受けると、キュー回路250内の全てのリクエストREQが完了したか否か判定する。
ディスパッチャ20が、全てのリクエストREQの処理が完了していないと判定した場合(ステップS9の“No”の場合)、ディスパッチャ20は、上述のS5からS8の処理を再度実行する。
ステップS5において、上述の図4を用いて説明されたように、ディスパッチャ20は、完了したリクエストREQの優先度以下の優先度を有するリクエストREQを、選択する。ステップS6からステップS8の例と同様に、ディスパッチャ20は、選択されたリクエストREQを対応するIPA25に、所望の処理を実行させる。これによって、選択された仮想マシンVMに関して、リクエストに対応した処理結果が、得られる。
ディスパッチャ20は、キュー回路250内のリクエストREQの処理がなくなるまで、ステップS5からステップS8までの処理を繰り返す。
<ステップS10>
図5のステップS10のように、ディスパッチャ20は、全てのリクエストREQの処理が完了したと判定した場合(ステップS9の“Yes”の場合)、ディスパッチャ20は、処理の完了をCPU10に通知する。例えば、図14に示されるように、ディスパッチャ20は、処理の完了を通知するための信号ACK2を、CPU10に送る。
CPU10は、処理の完了の通知(信号ACK2)を、ディスパッチャ20から受ける。これによって、CPU10は、全てのリクエストREQに対する処理を完了する。
例えば、画像処理デバイス1による認識アプリケーションAPP−Rに対応する仮想マシンVM−Rの処理結果は、ビューアプリケーションAPP−Vに対応する仮想マシンVM−Vの制御によって、例えば、ディスプレイデバイス9に表示される。
以上のように、画像処理デバイス1における仮想化支援デバイス20の処理が、終了する。
本実施形態において、図5乃至図14を用いて説明したように、ディスパッチャ20が、複数の仮想マシンVMによって要求された複数の処理(リクエストREQ)を、CPU10(ハイパーバイザ100)の介入なしに、仮想マシンVMの優先度に基づいて調停する。調停の結果に基づいて、ディスパッチャ20は、要求された処理を、対応するIPA25に実行させる。これによって、仮想マシンVMは、所望の処理を実行できる。
(c)まとめ
一般に、仮想マシンによって複数のアプリケーションを並列で実行可能なように構成されたデバイス/システムにおいて、コンテキストスイッチがプロセッサに生じる。コンテキストスイッチの制御のための負荷が、プロセッサに発生する。
本実施形態の仮想化支援デバイスは、プロセッサとともに、デバイス/システム内に設けられている。
本実施形態の仮想化支援デバイスは、プロセッサ(CPU)の代わりに、アプリケーション(仮想マシン)から要求された複数の処理に対するIPA25の実行順序の調停を実行する。
これによって、本実施形態の仮想化支援デバイスは、プロセッサの負荷を軽減できる。
本実施形態において、並列に実行される複数のアプリケーションからの複数の要求の調停を行うための構成(回路)が、ディスパッチャ20のような、プロセッサから分離されたハードウェアとして、デバイス/システム内に実装される。これによって、ハイパーバイザの構成が簡素化される。
この結果として、本実施形態の仮想化支援デバイスを含む画像処理デバイス(例えば、システムLSI)及び画像認識システムは、ハイパーバイザの品質の向上及び実装コストの削減を実現できる。
以上のように、本実施形態の仮想化支援デバイス(又は画像処理デバイス、又は画像認識システム)は、プロセッサの利用効率を向上できる。
(2) 第2の実施形態
図15乃至図20を用いて、第2の実施形態の仮想化支援デバイスについて、説明する。
(a)構成例
図15は、本実施形態の仮想化支援デバイスを説明するための模式図である。
ディスパッチャ20は、MMU14において、仮想マシンVM(CPU10)とディスパッチャ20との間の通信領域に関して仮想化されてもよい。
例えば、ディスパッチャ20と仮想マシンVMは、RAM11内に確保されたメモリエリア(データ格納領域ともよばれる)を介して、互いに通信できる。
これによって、図5のステップS2〜S4における仮想マシンからディスパッチャへの通信及び図5のステップS10におけるディスパッチャ20からCPU(プロセッサ)10への通信(及び割り込み処理)を、実行することができる。
図15に示されるように、例えば、ディスパッチャ20に関して、レジスタ(以下では、仮想レジスタ又は仮想レジスタエリアとよばれる)140と割り込みコントローラ(以下では、仮想割り込みコントローラ又は仮想割り込みコントローラモジュールとよばれる)VINTCとが、仮想化される。
仮想レジスタ140は、例えば、RAM11内に設けられている。仮想レジスタ140は、RAM11のディスパッチャレジスタエリア113内に、設けられてもよいし、エリア113以外のメモリエリア内に設けられてもよい。ディスパッチャレジスタエリア113が、仮想レジスタ140とみなされてもよい。
仮想レジスタ140内に、レジスタ情報(割り込み情報ともよばれる)RGxが格納される。レジスタ情報RGxは、上述のIPAパラメータPRM1及びキューパラメータPRM2などを含む。例えば、レジスタ情報RGxは、仮想マシンVMによって、仮想レジスタ140内に書き込まれる。
例えば、ディスパッチャ20は、割り込みコントローラの機能を実現するプログラム又は回路を、仮想割り込みコントローラVINTCとして有する。
仮想割り込みコントローラVINTCは、複数の仮想マシンのうちある仮想マシンVMの割り込み処理を、制御できる。
ある仮想マシンVMが他の仮想マシンVMの処理の実行中にある処理をリクエストする場合に、仮想マシンVMは、リクエスト(以下では、割り込みリクエストともよばれる)REQxを発行する。
仮想マシンVMは、リクエストREQxを、リクエストREQxが格納される領域(以下では、割り込みリクエストエリア又は割り込みキューとよばれる)145内に書き込む。割り込みリクエストエリア145は、RAM11内に設けられる。
尚、割り込みリクエストエリア145と仮想レジスタ140とは、RAM11内の1つのエリアとして、統合されてもよい。割り込みリクエストエリア145と仮想レジスタ140とが、ディスパッチャレジスタエリア113内に設けられてもよい。
例えば、ディスパッチャ20は、仮想割り込みコントローラVINTCの制御によって、割り込みリクエストREQxに基づいて、対応する仮想マシンVMに関するリクエストREQxのパラメータPRM1及びPRM2を、ディスパッチャ20のキュー回路250内に格納する。
仮想マシンVM及び仮想割り込みコントローラVINTC(ディスパッチャ20)は、MMU14によって、RAM11内の仮想レジスタ140及び割り込みリクエストエリア145にアクセスできる。
図16は、本実施形態における、リクエストの構成を模式的に示す図である。
図16に示されるように、リクエスト(割り込みリクエスト)REQxは、リクエスト信号IRS及び割り込み番号INMを含む。リクエスト信号IRSは、実行すべき処理を示す信号及び実行すべき処理の制御に関する信号を含む。割り込み番号INMは、仮想マシンVMによって設定される固有の番号(例えば、仮想マシンの識別番号)である。
また、リクエストREQは、ステータスビットSBを含む。ステータスビットSBは、リクエストの各種の情報を示す。
割り込み番号INMによって、ディスパッチャ20は、リクエストIREQがどの仮想マシンVMからのリクエストかを判別できる。
例えば、レジスタ情報RGxは、割り込み番号INM(仮想マシンの識別番号)に対応する配置順序で仮想レジスタ140内に配置されている。それゆえ、ディスパッチャ20は、あるリクエストREQxの割り込み番号INMに対応するレジスタ情報RGxを、そのレジスタ情報REGの仮想レジスタ140内の配置(アドレス)に基づいて、仮想レジスタ140から取得できる。
尚、割り込みリクエストREQxが、仮想マシンの識別番号に対応する配置順序に基づいて、割り込みリクエストエリア145内に配置されてもよい。この場合において、割り込みリクエストREQxは、割り込み番号を含まなくともよい。ディスパッチャ20は、リクエストREQxの割り込みの有無を示すステータスビットに基づいて、割り込み処理のリクエストを取得する。ディスパッチャ20は、取得したリクエストREQの配置順序に基づいて、対応する配置順序のレジスタ情報RGxを、取得する。
MMU14は、仮想レジスタ140及び割り込みリクエストエリア145に関して、仮想アドレスと物理アドレスとを変換できる。これによって、仮想マシンVM(CPU10)は、RAM11内の対応するレジスタ情報RGxのアドレスにアクセスできる。
本実施形態において、ディスパッチャ20は、特定の仮想マシンVMと関連付けられていないため、全ての仮想マシンVMからのリクエストを処理する。それゆえ、ディスパッチャ20は、全ての仮想マシンVMに対応するレジスタ140及び割り込みリクエストエリア145にアクセスすることが望まれる。但し、これらのエリア140,145は、IOMMUによって仮想化されていない。
本実施形態において、ディスパッチャ20は、割り込み番号INMを用いて、リクエストの要求元の仮想マシンに対応するREQxのアドレスを算出し、仮想レジスタ140及び割り込みリクエストエリア145にアクセスする。
(b)動作例
図17乃至図20を用いて、本実施形態の仮想化支援デバイスの動作例について、説明する。
図17は、本実施形態の仮想化支援デバイス(画像処理デバイス、又は画像認識システム)の動作例を説明するためのフローチャートである。
図18乃至図20は、本実施形態の仮想化支援デバイスの動作例を説明するための模式図である。
<ステップS21>
図17のステップS21に示されるように、複数の仮想マシンVMのうちある仮想マシン(ここでは、仮想マシンVM1とする)が、あるリクエストREQx1を生成する。
図18に示されるように、仮想マシンVM1は、MMU14を介して、リクエストREQx1に関するレジスタ情報RGx1を、RAM11の仮想レジスタ140内に書き込む。例えば、レジスタ情報RGx1は、仮想レジスタ140内において、仮想マシンの識別番号に対応したアドレスに配置される。
図19に示されるように仮想マシンVM1は、MMU14を介して、リクエスト(例えば、割り込みリクエスト)REQx1を、RAM11の割り込みリクエストエリア145内に書き込む。割り込みリクエストREQx1に対して、仮想マシンVM1によって、割り込み番号INM1が、付されている。
図20に示されるように、例えば、別の仮想マシン(ここでは、仮想マシンVM2とする)が、仮想マシンVM1からのリクエストREQx1とは別のリクエストREQx2を送信する。
この場合において、仮想マシンVM2は、レジスタ情報RGx2及びリクエストREQx2を、仮想レジスタ140及び割り込みリクエストエリア145内にそれぞれ書き込む。リクエストREQx22は、割り込み番号INM2を有する。
<ステップS22,S23>
図17のステップS22及び図20に示されるように、ディスパッチャ20は、仮想割り込みコントローラVINTCによって、RAM11内の割り込みリクエストエリア145内の割り込みリクエストREQxを、参照する。例えば、ディスパッチャ20は、割り込み番号INMに基づいて、仮想マシンVMに対応する割り込みリクエストREQx(例えば、リクエストREQx1)を選択できる。
図17のステップS23に示されるように、ディスパッチャ20は、仮想割り込みコントローラVINTCによって、選択したリクエストREQx1の割り込み番号INM1に基づいて、割り込み番号(仮想マシンの識別番号)INM1に対応する配置順序を有するレジスタ情報RGx(ここでは、レジスタ情報RGx1)を、仮想レジスタ140から取得する。例えば、ディスパッチャ20は、取得した情報RGxをキュー回路250に送る。
このように、本実施形態において、ディスパッチャ20が、RAM11を介して仮想マシンVMのそれぞれと通信できる。
<ステップS24>
図17のステップS24に示されるように、ディスパッチャ20は、取得したパラメータ情報を、ディスパッチャ20のキュー回路250に格納する。
<ステップS25>
図17のステップS25に示されるように、ディスパッチャ20(仮想割り込みコントローラVINTC)は、全てのリクエスト(例えば、割り込みリクエスト)の処理が完了したか否か、判定する。
全てのリクエストの処理が完了していない場合(ステップS25の“No”の場合)、ディスパッチャ20は、ステップS22〜S25までの処理を繰り返し実行する。
全てのリクエストの処理が完了した場合(ステップS25の“Yes”の場合)、ディスパッチャ20は、各仮想マシンVMのリクエストREQxの受付を完了する。
本実施形態において、ディスパッチャ20と仮想マシンVMとの間の関連付けは、無い。ディスパッチャ20は、CPU10及びIOMMU15の使用なしに、リクエストREQxに付された番号(又はリクエストエリア145内の配置順序)に基づいて、リクエストREQxに応じたパラメータを、RAM内から読み出し、キュー回路に格納できる。
このように、本実施形態において、ディスパッチャ20が、RAM11内に格納されたリクエストREQxに基づいて、そのリクエストREQを処理するためのパラメータを、ディスパッチャ20のキュー回路に格納することができる。
以上のように、本実施形態の仮想化支援デバイス(又は画像処理デバイス、又は画像認識デバイス)は、第1の実施形態の同様の効果を得ることができる。
(3) 第3の実施形態
図21を参照して、第3の実施形態の仮想化支援デバイスについて、説明する。
図21は、本実施形態の仮想化支援デバイスを説明するための模式図である。
図21に示されるように、デバイス1内において、IPA25の処理にエラーが発生したり、IOMMU15が保護違反(例えば、メモリの使用領域に関する違反)を検知したりする。
本実施形態において、IPA25が処理の実行中にエラーを通知した場合、又は、IOMMU15が保護違反を検知した場合、ディスパッチャ20は、エラー/保護違反の検知、及び、エラー/保護違反に対する各種の処理を行う。
例えば、ディスパッチャ20は、エラー処理回路209を有する。
エラー処理回路209は、エラー/保護違反を検知できる。エラー処理回路209は、検知されたエラー/保護違反に対して、エラー割り込みの特定、エラー割り込みのクリア、エラーの記録、IPAのエラーのリセット、次のリクエストの選択及び設定などのエラー処理を行う。エラー処理回路209の機能は、ディスパッチャ20内に格納されたソフトウェア(プログラム)によって、実現されてもよい。
エラー処理回路209は、上述のエラー処理情報eINFを用いて、エラー処理を行う。エラー処理情報eINFは、RAM11のディスパッチャレジスタエリア113内の対応する仮想マシンVMのレジスタユニットRUに、例えば、対応する仮想マシンVM(又はCPU10)によって、書き込まれる。エラー処理情報eINFは、ディスパッチャ制御情報エリア112内に、格納されてもよい。
エラー処理回路209は、IPA25からのエラーの通知又はIOMMU15からの保護違反の通知に基づいて、エラー処理を実行してもよい。
エラー/保護違反の検知時、ディスパッチャ20のエラー処理回路209は、エラー/保護違反が発生したリクエストREQに関連する仮想マシンVMのエラー処理情報eINFを、RAM11内から読み出す。エラー処理回路209は、読み出されたエラー処理情報eINFを受ける。
エラー処理回路209は、エラー/保護違反が生じたIPA25に対応する仮想マシンVMの優先度及びエラー/保護違反の優先度(以下では、緊急度ともよばれる)に基づいて、エラー処理情報eINFに示されるエラー処理を実行する。
仮想マシンVMの優先度及びエラー/保護違反の緊急度は、例えば、画像処理デバイス(又は画像認識システム)の初期化時に又は静的に設定される。
仮想マシンVMの優先度及びエラー/保護違反の緊急度の両方が高い場合、エラー処理回路209は、例えば、CPU10に対する割り込み処理をエラー処理として即時に実行する。
仮想マシンVMの優先度及びエラー/保護違反の緊急度のいずれか一方が低い場合、エラー処理回路209は、例えば、処理のステータスの保持を、エラー処理として実行する。
これによって、本実施形態において、処理(リクエスト)のエラー及び保護違反が解消される。
一般に、仮想マシンがエラー処理を実行する場合、処理の遅延が、エラー処理を実行する仮想マシンに生じる。エラー処理を行った仮想マシンの遅延が、他の仮想マシンの処理に悪影響(例えば、処理の遅延)を及ぼす。
また、CPUがエラー処理を実行する場合、CPUの負荷が高くなる。
これに対して、本実施形態のように、ディスパッチャ20(エラー処理回路209)がエラー処理を実行することで、仮想マシンVMの処理の遅延及びCPU10の負荷を、抑制できる。
以上のように、本実施形態の仮想化支援デバイス(又は画像処理デバイス、又は画像認識デバイス)は、第1の実施形態の同様の効果を得ることができる。
(4) その他
実施形態において、本実施形態の仮想化支援デバイスが画像処理デバイス(画像認識システム)に適用された例が、示されている。但し、本実施形態のデバイスは、複数のアプリケーションを並列に実行するデバイスであれば、画像処理デバイス以外のデバイスに適用されてもよい。
本実施形態の仮想化支援デバイス、画像処理デバイス又は画像認識システムは、パーソナルコンピュータ、スマートフォン、フューチャーフォン、携帯端末、ゲーム機器、サーバなどに適用されてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1:画像処理デバイス、10:CPU、11:RAM、15:IOMMU、20:プロセッサ(ディスパッチャ)、25:アクセラレータ。

Claims (8)

  1. 複数のハードウェアアクセラレータの動作を制御する第1のプロセッサと、
    第2のプロセッサによって実行される第1のアプリケーションの第1の情報、前記第2のプロセッサによって実行される第2のアプリケーションに関する第2の情報、前記第1のアプリケーションからの1つ以上の第1のリクエスト、前記第2のアプリケーションからの1つ以上の第2のリクエストと、を保持するメモリと、
    前記第1のプロセッサ及び前記メモリに接続された入出力メモリ管理ユニットと、
    を具備し、
    前記第1のプロセッサは、
    前記第1及び前記第2のアプリケーションからの前記第1及び第2のリクエストに対する前記複数のハードウェアアクセラレータの実行順序の調停を実行し、
    前記調停に基づいて前記第1及び前記第2の情報のうち一方の情報を用いて、前記入出力メモリ管理ユニットの設定を制御し、
    前記調停に基づいて前記第1及び第2のリクエストのうち一方のリクエストを、前記複数のハードウェアアクセラレータのうち対応する1つ以上に実行させる、
    仮想化支援デバイス。
  2. 前記第1のプロセッサは、前記メモリを介して、前記第2のプロセッサと通信する、
    請求項1に記載の仮想化支援デバイス。
  3. 前記メモリは、前記複数のハードウェアアクセラレータのエラー及び前記入出力メモリ管理ユニットによって検知される保護違反のうち少なくとも一方に対する前記第1のアプリケーションのエラー処理を示す第3の情報と、前記エラー及び前記保護違反のうち少なくとも一方に対する前記第2のアプリケーションのエラー処理を示す第4の情報を保持し、
    前記第1のプロセッサは、エラーが発生したハードウェアアクセラレータからのエラー通知及び前記入出力メモリ管理ユニットからの保護違反通知のうち少なくとも一方を受け、
    前記第1のプロセッサは、前記調停に基づいて前記第3及び第4の情報のうち一方の情報を用いて、前記エラー処理を行う、
    請求項1又は2に記載の仮想化支援デバイス。
  4. 前記第1のアプリケーションは、第1の優先度を有し、前記第2のアプリケーションは前記第1の優先度より低い第2の優先度を有し、
    前記第1のプロセッサは、前記第1及び第2の優先度を用いた前記調停によって前記第1のリクエストを、前記複数のハードウェアアクセラレータのうち対応する1つ以上に実行させ、
    前記第1のプロセッサは、前記第1のリクエストの完了の後、前記第2のリクエストを、前記複数のハードウェアアクセラレータのうち対応する1つ以上に実行させる、
    請求項1乃至3のうちいずれか1項の仮想化支援デバイス。
  5. 第1のプロセッサが、第2のプロセッサによって実行された第1のアプリケーションからの1つ以上の第1のリクエスト及び第2のアプリケーションからの1つ以上の第2のリクエストに対する前記複数のハードウェアアクセラレータの実行順序の調停を実行し、
    第1のプロセッサが、メモリ内に格納された前記第1のアプリケーションに関する第1の情報及び前記第2のアプリケーションに関する第2の情報を参照し、
    前記第1のプロセッサが、前記調停に基づいて前記第1及び第2の情報のうち一方の情報を用いて、複数のハードウェアアクセラレータと前記メモリとの間の入出力メモリ管理ユニットの設定を制御し、
    前記第1のプロセッサが、前記調停に基づいて前記第1及び第2のリクエストのうち一方のリクエストを、前記複数のハードウェアアクセラレータのうち対応する1つ以上に実行させる、
    仮想化支援デバイスの制御方法。
  6. 前記第1のプロセッサは、前記メモリを介して、前記第2のプロセッサと通信する、
    請求項5に記載の仮想化支援デバイスの制御方法。
  7. 前記メモリは、前記複数のハードウェアアクセラレータのエラー及び前記入出力メモリ管理ユニットによって検知される保護違反のうち少なくとも一方に対する前記第1のアプリケーションのエラー処理を示す第3の情報と、前記エラー及び前記保護違反のうち少なくとも一方に対する前記第2のアプリケーションのエラー処理を示す第4の情報を保持し、
    前記第1のプロセッサは、エラーが発生したハードウェアアクセラレータからのエラー通知及び前記入出力メモリ管理ユニットからの保護違反通知のうち少なくとも一方を受け、
    前記第1のプロセッサは、前記調停に基づいて前記第3及び第4の情報のうち一方の情報を用いて、前記エラー処理を行う、
    請求項5又は6に記載の仮想化支援デバイスの制御方法。
  8. 前記第1のアプリケーションは、第1の優先度を有し、前記第2のアプリケーションは前記第1の優先度より低い第2の優先度を有し、
    前記第1のプロセッサは、前記第1及び第2の優先度を用いた前記調停によって前記第1のリクエストを、前記複数のハードウェアアクセラレータのうち対応する1つ以上に実行させ、
    前記第1のプロセッサは、前記第1のリクエストの完了の後、前記第2のリクエストを、前記複数のハードウェアアクセラレータのうち対応する1つ以上に実行させる、
    請求項5乃至7のうちいずれか1項の仮想化支援デバイスの制御方法。
JP2019172581A 2019-09-24 2019-09-24 仮想化支援デバイス及び仮想化支援デバイスの制御方法 Pending JP2021051420A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019172581A JP2021051420A (ja) 2019-09-24 2019-09-24 仮想化支援デバイス及び仮想化支援デバイスの制御方法
US16/806,113 US11182311B2 (en) 2019-09-24 2020-03-02 Virtualization support device, control method of virtualization support device, and calculation system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019172581A JP2021051420A (ja) 2019-09-24 2019-09-24 仮想化支援デバイス及び仮想化支援デバイスの制御方法

Publications (1)

Publication Number Publication Date
JP2021051420A true JP2021051420A (ja) 2021-04-01

Family

ID=74880900

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019172581A Pending JP2021051420A (ja) 2019-09-24 2019-09-24 仮想化支援デバイス及び仮想化支援デバイスの制御方法

Country Status (2)

Country Link
US (1) US11182311B2 (ja)
JP (1) JP2021051420A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4231150A1 (en) 2022-02-16 2023-08-23 Toyota Jidosha Kabushiki Kaisha Control device, control method, recording medium in which control program is recorded, and vehicle

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113094111B (zh) * 2021-04-16 2024-01-09 三星(中国)半导体有限公司 设备以及设备的启动方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7002586B2 (en) * 2003-08-29 2006-02-21 Sun Microsystems, Inc. Method and apparatus for vertex splitting in a graphics system
US8065685B2 (en) * 2005-04-27 2011-11-22 Intel Corporation Method, system and apparatus for a transformation engine for use in the processing of structured documents
US9037770B2 (en) * 2011-05-05 2015-05-19 International Business Machines Corporation Accelerator engine emulation over an interconnect link
JP5748349B2 (ja) 2012-03-16 2015-07-15 株式会社日立製作所 仮想計算機の制御方法及び仮想計算機システム
US9047090B2 (en) 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
US9286129B2 (en) * 2013-05-08 2016-03-15 International Business Machines Corporation Termination of requests in a distributed coprocessor system
US10261813B2 (en) * 2013-09-25 2019-04-16 Arm Limited Data processing system for dispatching tasks from a plurality of applications to a shared resource provided by an accelerator
GB2546742B (en) 2016-01-26 2019-12-11 Advanced Risc Mach Ltd Memory address translation management
US10048881B2 (en) * 2016-07-11 2018-08-14 Intel Corporation Restricted address translation to protect against device-TLB vulnerabilities

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4231150A1 (en) 2022-02-16 2023-08-23 Toyota Jidosha Kabushiki Kaisha Control device, control method, recording medium in which control program is recorded, and vehicle

Also Published As

Publication number Publication date
US11182311B2 (en) 2021-11-23
US20210089478A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
US20180121366A1 (en) Read/write request processing method and apparatus
US8966477B2 (en) Combined virtual graphics device
CN100592271C (zh) 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法
US9201682B2 (en) Virtualized device reset
US9389875B2 (en) Selectable graphics controllers to display output
US20130055259A1 (en) Method and apparatus for handling an i/o operation in a virtualization environment
US20140164827A1 (en) Method and device for managing hardware errors in a multi-core environment
US10572434B2 (en) Intelligent certificate discovery in physical and virtualized networks
JP2015503784A (ja) グラフィックス処理部における仮想マシン間の移行
CN102067083A (zh) 对虚拟化环境中的中断结束消息的懒惰处理
US10956189B2 (en) Methods for managing virtualized remote direct memory access devices
KR20080098432A (ko) 2―레벨 인터럽트 서비스 루틴
JP6194764B2 (ja) 情報処理装置、制御方法、および制御プログラム
US10642727B1 (en) Managing migration events performed by a memory controller
US10459662B1 (en) Write failure handling for a memory controller to non-volatile memory
US8996734B2 (en) I/O virtualization and switching system
JP2021051420A (ja) 仮想化支援デバイス及び仮想化支援デバイスの制御方法
US10990436B2 (en) System and method to handle I/O page faults in an I/O memory management unit
WO2013109233A2 (en) Method to emulate message signaled interrupts with interrupt data
US10831684B1 (en) Kernal driver extension system and method
US9384154B2 (en) Method to emulate message signaled interrupts with multiple interrupt vectors
US9342477B2 (en) Multi-core processor, controlling method thereof and computer system with such processor
CN112204521A (zh) 针对虚拟化的处理器特征id响应
US10127177B2 (en) Unified device interface for a multi-bus system
US9977730B2 (en) System and method for optimizing system memory and input/output operations memory