(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-14
(45)【発行日】2022-09-26
(54)【発明の名称】リソース管理のための方法、装置、電子機器及び記憶媒体
(51)【国際特許分類】
G06F 9/50 20060101AFI20220915BHJP
G06F 9/455 20060101ALI20220915BHJP
G06F 13/10 20060101ALI20220915BHJP
【FI】
G06F9/50 120A
G06F9/455 150
G06F13/10 330C
【外国語出願】
(21)【出願番号】P 2020039504
(22)【出願日】2020-03-09
【審査請求日】2020-07-15
(31)【優先権主張番号】201910741694.7
(32)【優先日】2019-08-12
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(73)【特許権者】
【識別番号】521457387
【氏名又は名称】クンルンシン テクノロジー (ベイジン) カンパニー リミテッド
【氏名又は名称原語表記】Kunlunxin Technology (Beijing) Company Limited
【住所又は居所原語表記】CW Section, F/4, Building 1, No.10, Shangdi 10th Street, Haidian District, 100101, Beijing, China
(74)【代理人】
【識別番号】110000729
【氏名又は名称】特許業務法人 ユニアス国際特許事務所
(72)【発明者】
【氏名】ロン、シアンルン
(72)【発明者】
【氏名】チャオ、チーピャオ
(72)【発明者】
【氏名】ハン、チンチェン
(72)【発明者】
【氏名】オウヤン、チエン
(72)【発明者】
【氏名】チー、ウェイ
(72)【発明者】
【氏名】ワン、ヨン
【審査官】坂庭 剛史
(56)【参考文献】
【文献】特開2013-084122(JP,A)
【文献】国際公開第2018/180613(WO,A1)
【文献】特表2014-515146(JP,A)
【文献】特表2016-541072(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06F 9/455
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実行されるリソース管理のための方法であって、
計算装置と通信可能に結合されたシステムオンチップ(SoC)において実行され、前記方法は、
それぞれが計算装置上で動作する仮想マシンに対応するサポートすべき複数の仮想機能を確定するステップと、
物理リソースセットを所定の割合で、前記仮想機能の数と同じである複数の物理リソースサブセットに区分けするステップと、
前記複数の物理リソースサブセットを前記複数の仮想機能にそれぞれ割り当てるステップと、を含
み、
前記物理リソースセットを所定の割合で、前記仮想機能の数と同じである複数の物理リソースサブセットに区分けするステップは、
前記物理リソースが1つのマルチチャネルのダイレクトメモリアクセス(DMA)ユニットによって提供されることに応答して、前記DMAの複数のアクセスチャネルを前記所定の割合で複数のチャネルグループに区分けすることを含み、
それぞれのチャネルグループは1つ又は複数のチャネルを含み、前記複数のチャネルグループは、前記複数の物理リソースサブセットにそれぞれ対応し、
前記複数の物理リソースサブセットを前記複数の仮想機能にそれぞれ割り当てるステップは、
前記複数のチャネルグループのそれぞれが前記DMAユニットにおけるアドレス範囲を確定することと、
前記複数のチャネルグループの対応するアドレス範囲を前記複数の仮想機能にそれぞれ割り当てることと、を含む、
リソース管理のための方法。
【請求項2】
前記物理リソースセットを複数の物理リソースサブセットに区分けするステップは、
前記物理リソースセットが複数の物理ユニットによって提供されることに応答して、前記複数の物理ユニットのセットを前記所定の割合で複数の物理ユニットサブセットに区分けすることを含み、
前記複数の物理ユニットサブセットは前記複数の物理リソースサブセットにそれぞれ対応する請求項1に記載の方法。
【請求項3】
前記複数の物理リソースサブセットを前記複数の仮想機能に割り当てるステップは、
前記複数の物理ユニットサブセットのそれぞれに対して、
前記物理ユニットサブセットを割り当てるべき仮想機能の識別子を確定することと、
前記識別子を前記物理ユニットサブセットの各物理ユニットに関連付けることと、を含む請求項2に記載の方法。
【請求項4】
前記複数の物理ユニットのそれぞれに対して、
前記物理ユニットに関連付けられた識別子により識別される仮想機能を確定するステップと、
前記物理ユニットを前記仮想機能へのサポートに用いるステップと、をさらに含む請求項3に記載の方法。
【請求項5】
前記複数の仮想機能のうちの仮想機能による前記
DMAユニットへのアクセスリクエストに基づいて、前記仮想機能がアクセスすべき前記
DMAユニット内のアドレスを確定することと、
前記アドレスが前記仮想機能に割り当てられたアドレス範囲内にあることに応答して、前記仮想機能による前記アドレスへのアクセスを許可することと、をさらに含む請求項
1に記載の方法。
【請求項6】
前記複数の仮想機能に対応する複数の仮想マシンの物理リソース要求量、負荷レベル及びサービス品質レベルのうちの少なくとも1つに基づいて前記所定の割合を確定することをさらに含む請求項1に記載の方法。
【請求項7】
計算装置と通信可能に結合されたシステムオンチップ(SoC)に設けられるリソース管理のための装置であって、
それぞれが計算装置上で動作する仮想マシンに対応するサポートすべき複数の仮想機能を確定するように構成される仮想機能確定モジュールと、
物理リソースセットを所定の割合で、前記仮想機能の数と同じである複数の物理リソースサブセットに区分けするように構成されるリソースセット区分けモジュールと、
前記複数の物理リソースサブセットを前記複数の仮想機能にそれぞれ割り当てるように構成されるリソースサブセット割り当てモジュールと、を備え
、
前記リソースセット区分けモジュールは、
前記物理リソースが1つのマルチチャネルのダイレクトメモリアクセス(DMA)ユニットによって提供されることに応じて、前記DMAの複数のアクセスチャネルを前記所定の割合で複数のチャネルグループに区分けするように構成される物理リソース区分けモジュールを含み、
それぞれのチャネルグループは1つ又は複数のチャネルを含み、前記複数のチャネルグループは、前記複数の物理リソースサブセットにそれぞれ対応し、
前記リソースサブセット割り当てモジュールは、
前記複数のチャネルグループのそれぞれが前記DMAユニットにおけるアドレス範囲を確定するように構成されるアドレス範囲確定モジュールと、
前記複数のチャネルグループの対応するアドレス範囲を前記複数の仮想機能にそれぞれ割り当てるように構成されるアドレス範囲割り当てモジュールと、を含む、リソース管理のための装置。
【請求項8】
前記
物理ユニット区分けモジュールは、
前記物理リソースセットが複数の物理ユニットによって提供されることに応じて、前記複数の物理ユニットのセットを前記所定の割合で複数の物理ユニットサブセットに区分けするように構成され
、
前記複数の物理ユニットサブセットは前記複数の物理リソースサブセットにそれぞれ対応する請求項
7に記載の装置。
【請求項9】
前記複数の物理ユニットサブセットのそれぞれに対して、前記リソースサブセット割り当てモジュールは、
前記物理ユニットサブセットを割り当てるべき仮想機能の識別子を確定するように構成される識別子確定モジュールと、
前記識別子を前記物理ユニットサブセットの各物理ユニットに関連付けるように構成される関連付けモジュールと、を含む請求項
8に記載の装置。
【請求項10】
前記複数の物理ユニットのそれぞれに対して、前記装置は、
前記物理ユニットに関連付けられた識別子により識別される仮想機能を確定するように構成される関連機能確定モジュールと、
前記物理ユニットを前記仮想機能へのサポートに用いるように構成される仮想機能サポートモジュールと、をさらに備える請求項
9に記載の装置。
【請求項11】
前記複数の仮想機能のうちの仮想機能による前記
DMAユニットへのアクセスリクエストに基づいて、前記仮想機能がアクセスすべき前記
DMAユニット内のアドレスを確定するように構成されるアクセスアドレス確定モジュールと、
前記アドレスが前記仮想機能に割り当てられたアドレス範囲内にあることに応答して、前記仮想機能による前記アドレスへのアクセスを許可するように構成されるアクセス許可モジュールと、をさらに備える請求項
7に記載の装置。
【請求項12】
前記複数の仮想機能に対応する複数の仮想マシンの物理リソース要求量、負荷レベル及びサービス品質レベルのうちの少なくとも1つに基づいて前記所定の割合を確定するように構成される所定割合確定モジュールをさらに備える請求項
7に記載の装置。
【請求項13】
1つ又は複数のプロセッサと、
1つ又は複数のプログラムを格納するための記憶装置であって、前記1つ又は複数のプログラムが前記1つ又は複数のプロセッサによって実行されると、前記1つ又は複数のプロセッサに請求項1~
6のいずれか1項に記載の方法を実現させる記憶装置と、
を備える電子機器。
【請求項14】
コンピュータプログラムが格納されるコンピュータ可読記憶媒体であって、
前記プログラムがプロセッサによって実行されると、請求項1~
6のいずれか1項に記載の方法を実現する、コンピュータ可読記憶媒体。
【請求項15】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項1~
6のいずれか一項に記載の方法を実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施形態は、主にコンピュータ技術分野に属し、特に、リソース管理のための方法、装置、電子機器及びコンピュータ可読記憶媒体に関する。
【背景技術】
【0002】
クラウドコンピューティングの急速な発展に伴い、現代データセンターでは、常に仮想化技術によってサーバの物理リソース利用率を向上させることをしている。仮想マシンソフトウェアとハードウェアとの分離により、ソフトウェア管理、故障検出及びシステムメンテナンス等の操作をよりよく行うことができる。仮想化技術を用いることで、一台の物理サーバが複数台の仮想サーバを稼働することができ、それにより物理サーバの利用率が向上され、クラウドコンピューティングのデプロイコストが大幅に低減される。
【0003】
人工知能(AI)計算はクラウドコンピューティングに幅広く応用され、各種グラフィック処理ユニット(GPU)又はAIアクセラレーションカードもそれに伴って大量にデプロイされる。シングルルート入出力(I/O)仮想化(SR-IOV)技術により、これらのアクセラレーションカードは仮想化を迅速にサポートすることができる。しかしながら、高速カードにより仮想マシンをサポートする従来の技術案では、解決すべき課題が多く残っていた。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示の実施形態は、リソース管理のための方法、装置、電子機器及びコンピュータ可読記憶媒体に関する。
【課題を解決するための手段】
【0005】
本開示の第1の態様において、リソース管理のための方法が提供される。該方法は、それぞれが計算装置上で動作する仮想マシンに対応するサポートすべき複数の仮想機能を確定するステップを含む。該方法は、物理リソースセットを所定の割合で、仮想機能の数と同じである複数の物理リソースサブセットに区分けするステップをさらに含む。該方法は、複数の物理リソースサブセットを複数の仮想機能にそれぞれ割り当てるステップ、をさらに含む。
【0006】
本開示の第2の態様において、リソース管理のための装置が提供される。該装置は、それぞれが計算装置上で動作する仮想マシンに対応するサポートすべき複数の仮想機能を確定するように構成される仮想機能確定モジュールを備える。該装置は、物理リソースセットを所定の割合で、仮想機能の数と同じである複数の物理リソースサブセットに区分けするように構成されるリソースセット区分けモジュールをさらに備える。該装置は、複数の物理リソースサブセットを複数の仮想機能にそれぞれ割り当てるように構成されるリソースサブセット割り当てモジュールをさらに備える。
【0007】
本開示の第3の態様において、電子機器が提供される。該電子機器は、1つ又は複数のプロセッサと、記憶装置とを備える。記憶装置は、1つ又は複数のプログラムを格納するために用いられる。1つ又は複数のプログラムが1つ又は複数のプロセッサによって実行されると、1つ又は複数のプロセッサに第1の態様に記載の方法を実現させる。
【0008】
本開示の第4の態様において、コンピュータプログラムが格納されるコンピュータ可読記憶媒体であって、該コンピュータプログラムがプロセッサによって実行されると、第1の態様に記載の方法を実現するコンピュータ可読記憶媒体が提供される。
【0009】
発明の概要に記載された内容は、本開示の実施形態のかなめ又は重要な特徴を限定することを意図するものではなく、本開示の範囲を限定するものでもない。本開示の他の特徴は、以下の説明を通して容易に理解されるであろう。
【図面の簡単な説明】
【0010】
本開示の実施形態の上記及び他の目的、特徴、及び利点は、図面を参照して以下の詳細な説明を読むことにより容易に理解されるであろう。図面において、本開示のいくつかの実施形態は、限定ではなく例として示されている。
【
図1】本開示のいくつかの実施形態が実現可能な環境の一例を示す模式図である。
【
図2】本開示の実施形態に係るリソースを管理するための方法を示す概略フローチャートである。
【
図3】本開示の実施形態に係る物理リソースセットの区分け及び割り当ての例示的なプロセスを示す概略フローチャートである。
【
図4】本開示の実施形態に係るアドレス範囲管理用のレジスタを示す概略ブロック図である。
【
図5】本開示の実施形態に係るリソースを管理するための装置を示す概略ブロック図である。
【
図6】本開示の実施形態を実施するために使用可能な装置を示す概略ブロック図である。
【0011】
全ての図において、同一又は類似の構成要素には、同一又は類似の符号を付している。
【発明を実施するための形態】
【0012】
以下、本開示の原理とその要旨を図面に示すいくつかの例示的な実施形態を参照して説明する。なお、これらの具体的な実施形態を説明するのは、当業者が本開示をよりよく理解して実現するためであり、いかなる方式で本開示の範囲を限定するものではない。
【0013】
上述したように、AI計算はクラウドコンピューティングに幅広く応用され、各種のGPU又はAIアクセラレーションカードもそれに伴って大量にデプロイされる。しかしながら、従来の解決手段は一般的に時分割多重化のポリシーを用いて物理リソースを仮想化する。例えば、計算リソースに対し、GPU又はAIアクセラレーションカードは一般的にタイムスロットに基づくスケジューリングポリシーを採用して仮想マシンに計算リソースをスケジューリングする。通常、ある仮想マシンにスケジューリングされる各タイムスロットは、6ミリ秒に設定することができる。該仮想マシンにスケジューリングされたタイムスロットがなくなると、計算リソースの使用を次の仮想マシンに切り替える。各タイムスロット内において、現在動作している仮想マシンは全ての計算リソース(本明細書では単に計算力ともいう)を占有することができる。しかしながら、このような時分割のスケジューリングポリシーは大きなオーバーヘッドを有する。例えば、一般的なGPUコンテキスト切り替えは数百マイクロ秒までの時間を必要とし、例えば0.2~0.5ミリ秒であり、これは6ミリ秒のタイムスロットに対して3.33%~8.33%のオーバーヘッドを意味する。
【0014】
また、従来の解決手段では、GPUとホストとのデータ交換は基本的にダイレクトメモリアクセス(DMA)ユニットを介する必要がある。仮想化時には、ダイレクトメモリアクセスユニットも仮想マシン間で時分割多重化される。このため、ソフトウェアのオーバーヘッド及び複雑さが非常に大きくなる。まず、仮想マシン間で安全なアイソレーションを実現するために、ダイレクトメモリアクセスユニットの操作コマンドは仮想マシンマネージャ(VMM)又はハイパーバイザ(Hypervisor)を介して転送する必要があり、それによりシステム性能が低下する。仮想マシンへの入退出操作(VM_Entry、VM_Exit)を行うとき、大きなソフトウェアオーバーヘッドが発生するためである。次に、仮想マシンの入退出操作を低減するために、システム性能を確保するためにシステムソフトウェアは、例えば仮影技術(virtual-shadow)等、複雑な技術的手段を採用する必要がある。このように、生成されたマルチコマンドキュー及び複雑なコマンドリングもシステムソフトウェアの複雑さを増加させる。
【0015】
従来技術における上記の問題及び潜在的な他の問題に鑑みて、本開示の実施形態は、安全かつ空間分割多重化による物理リソースの仮想化を実現することを目的とする、リソース管理のための方法、装置、電子機器、及びコンピュータ可読記憶媒体を提出した。ここでいう空間分割ポリシーとは、物理リソース(例えば、計算リソース)を所定の割合で異なる仮想機能(又は対応する仮想マシン)に割り当て、それにより従来の時分割多重化ポリシーに存在する様々な問題を防止することを意味する。
【0016】
一方、本開示の実施形態において、仮想機能(又は対応する仮想マシン)の間にハードウェアアイソレーション機構を実施することにより、各仮想マシンの実行は他の仮想マシンの影響を受けず、それによりシステムをより安全で信頼可能にさせる。例えば、本開示の実施形態はマルチチャネルのダイレクトメモリアクセスユニットを採用することができ、チャネル間はハードウェアによって分離されてもよく、例えば仮想アクセス制御ユニットによってハードウェアのアイソレーションを実現する。このように、各仮想マシンのアクセスコマンドは、仮想マシンマネージャのインターセプト及び転送を必要とせずに、ダイレクトメモリアクセスユニットを直接操作することができ、それにより複雑なソフトウェアキューも必要とせず、システムのソフトウェアオーバーヘッドが大幅に減少される。また、本開示の実施形態において、仮想マシンマネージャ(又は管理プログラム)は簡単に実現することができる。システムは、初期化時に、仮想マシンの数とリソース割り当て状況に基づいて対応する制御ユニットを配置し、例えば、リソース割り当て情報を記録するレジスタを対応して設定すればよい。
【0017】
要するに、本開示の実施形態は、少ないハードウェアリソースを必要とするため、ハードウェアコストが低い。しかも、ソフトウェアのオーバーヘッドも小さく、時分割ポリシーにおける複雑なスケジューリング及びスケジューリングオーバーヘッドが防止されたので、実現しやすく、メンテナンス及びデプロイメントが簡単である。また、本開示の実施形態は、仮想機能の間にハードウェアのアイソレーションが実現され、それによりシステムの安全性及び信頼性が向上される。なお、本開示の実施形態における仮想マシンのドライバは、仮想化をサポートしない場合と同様でよく、変更を必要としない。これから分かるように、本開示の実施形態は、従来の物理リソース仮想化方法に存在する様々な問題を効果的に解決することができ、それにより物理リソース(例えば、AIアクセラレーションカード)の仮想化をよりよく実現し、特にクラウドコンピューティングの技術シーンに適用する。以下、本開示の実施形態について図面を参照して説明する。
【0018】
図1は、本開示のいくつかの実施形態が実現可能な環境100の一例の模式図を示している。
図1に示すように、環境100の一例としては、計算装置102及びシステムオンチップ(SoC)104を含むことができる。計算装置102は、仮想マシンを動作させることが可能な様々な種類の計算装置であり得、例えば、パーソナルコンピュータ、サーバコンピュータ、携帯型又はノート型の装置、モバイルデバイス(例えば、携帯電話、パーソナルデジタルアシスタントPDA、メディアプレーヤ等)、マルチプロセッサシステム、消費電子製品、小型コンピュータ、大型コンピュータ、又はこれらのシステムもしくは装置のいずれかを含む分散計算環境などが挙げられるが、これらに限られない。いくつかの実施形態において、計算装置102は、PCI Express(PCIe)インターフェース機能をサポートしてシステムオンチップ104との通信及び相互接続を実現することができる。また、計算装置102はさらに、I/Oデバイスの利用率を向上するために、シングルルートI/O仮想化(SR-IOV)機能によりI/Oデバイスをサポートすることができる。
【0019】
図に示すように、計算装置102上で複数の仮想マシン106-1,106-2,…,106-N(以下、仮想マシン106と総称することができる)を動作することができ、ここでNは自然数を表し、すなわち計算装置102において任意の数の仮想マシン106を動作することができる。一般的に、仮想マシンは特定のアプリケーションプログラムによって物理マシンのハードウェアプラットフォームに作成されたアプリケーション実行環境を指し、ユーザは、物理マシンを利用すると同様に、該環境によってアプリケーションを実行し且つインタラクションを行うことができる。仮想マシン106を作成する際、計算装置102は、通常、マネージャを介して、その仮想マシン106を管理する計算装置102から、仮想マシン106の動作に使用するための物理リソースを所定量割り当てる必要がある。該物理リソースは、仮想マシン106を動作させるための任意の使用可能な物理リソースであってもよく、計算リソース(例えば、CPU、GPU、FPGA等)、記憶リソース(例えば、メモリ、記憶ディスク等)、ネットワークリソース(例えば、ネットワークカード等)等を含むが、それらに限定されない。
【0020】
例示的な環境100では、システムオンチップ104は、計算装置102と通信可能に結合されている。一般に言えば、システムオンチップとは、完全なシステムを単一のチップに統合することを指し、具体的には、特定の機能を有する複数の集積回路を1枚のチップ上に組み合わせて形成されるシステム又は製品であり、その中には、完全なハードウェアシステムとそれに搭載される組み込みソフトウェアとが含まれる。例えば、AIアクセラレーションカード又は様々なGPUは、システムオンチップ104を介して実装できる。しかしながら、AIアクセラレーションカード及びGPUに加えて、システムオンチップ104は、必要に応じて任意の適切なシステム又は機能を実装できることを理解されたい。
【0021】
いくつかの実施形態において、システムオンチップ104はシングルルートI/O仮想化をサポートすることができ、それによりシステムオンチップ104は複数の独立した物理デバイスのように見える。換言すれば、システムオンチップ104は物理機能(PF)及び仮想機能(VF)をサポートすることができる。例えば、物理機能は、シングルルートI/O仮想化をサポートする全機能のPCIe機能であってもよい。物理機能は、一般的なPCIeデバイスのように発見、管理、構成することができる。これに対して、仮想機能は、物理機能と関連付け可能である軽量なPCIe機能である。例えば、各仮想機能は、物理機能から分離して仮想マシンに割り当てることができる。
【0022】
図1の例では、計算装置102上で動作するN個の仮想マシン106に対して、システムオンチップ104が仮想機能106-1,106-2,…,106-N(以下、仮想機能116と総称することができる)をサポートすることができ、そのうち仮想機能116における各仮想機能は仮想マシン106における一つの仮想マシンに対応することができる。なお、
図1では、仮想機能116は、仮想マシン106と1対1対応するように描かれているが、仮想機能116と仮想マシン106との対応関係はこれに限定されるものではない。他の実施形態において、仮想マシン106と仮想機能116との間に任意の適切な対応関係を有することができる。
【0023】
システムオンチップ104はさらに、仮想機能116をサポートするための各種の物理ユニット(例えば、計算ユニット108-1,108-2,108-M(以下、計算ユニット108と総称することができ、ただし、Mは自然数)など)と、ダイレクトメモリアクセスユニット110とを備える。計算ユニット108は、計算リソース(又は計算力)を提供することができるので、仮想機能116に仮想計算力を提供することができる。ダイレクトメモリアクセスユニット110は、メモリへのアクセスチャネル資源を提供するためのものであり、それゆえに仮想機能116に対してメモリへの仮想アクセス能力を提供することができる。
【0024】
システムオンチップ104は、その各種動作や各種機能を制御するための制御ユニット112をさらに備える。制御ユニット112は、制御機能を実現するあらゆる装置であってもよく、専用コンピュータ、汎用コンピュータ、汎用プロセッサ、マイクロプロセッサ、マイクロコントローラ、又はステートマシンを含むが、これらに限定されない。また、制御ユニット112はさらに、例えば、DSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、1つ又は複数のマイクロプロセッサとDSPのコアとの組み合わせ、その他のこのような構成など、個別の計算装置又は計算装置の組み合わせとして実現されてもよい。
【0025】
システムオンチップ104は、計算ユニット108と、ダイレクトメモリアクセスユニット110と、制御ユニット112とを通信可能に結合する通信リンク114をさらに備える。通信リンク114は、システムオンチップ104の構成要素間の通信や相互接続を実現することができるあらゆる形式の接続や結合であってもよく、各種バスを含むが、これらに限定されない。いくつかの実施形態において、通信リンク114はネットワークオンチップ(NoC)を含むことができる。
【0026】
なお、
図1では、例示的な環境100のうち、本開示の実施形態に関連するユニット、モジュール又は構成要素のみを模式的に示している。具体的な実現において、例示的な環境100はさらに他の機能に用いられる他のユニット、モジュール又は構成要素を含むことができる。また、
図1には、様々なユニット、モジュール又は構成要素が特定の数だけ描かれているが、これらの特定の数はあくまでも一例に過ぎず、本開示の範囲を限定することを意図するものではない。他の実施形態において、例示的な環境100は任意の適切な数の様々なユニット、モジュール又は構成要素を含むことができる。したがって、本開示の実施形態は
図1に示された具体的な装置、チップ、ユニット、モジュール又は構成要素に限定されるものではなく、仮想マシン及び仮想機能を実現するあらゆる計算システム環境に一般的に適用する。次に、
図2を参照しながら、本開示の一実施形態に係るリソース管理のための例示的な方法について説明する。
【0027】
図2は、本開示の実施形態に係るリソースを管理するための方法200の概略フローチャートを示している。いくつかの実施形態において、方法200は、計算装置102と通信可能に結合されたシステムオンチップ104において実行することができる。例えば、方法200は、システムオンチップ104の制御ユニット112により実現することができる。この場合、方法200は、制御ユニット112のプロセッサ又は処理ユニットにより実現することができる。他の実施形態において、方法200の全部又は一部は、例示的な環境100と独立した計算装置で実現されてもよく、又は例示的な環境100における他のユニットで実現されてもよい。説明の便宜上、
図1を参照して方法200について説明する。
【0028】
このように、システムオンチップ104は、物理機能を仮想化することで、計算装置102上で動作する複数の仮想マシン106に仮想機能116を提供することができる。通常、計算装置102上で動作する1つの仮想マシン(例えば、仮想マシン106-1)はシステムオンチップ104の1つの仮想機能(例えば、仮想機能116-1)に対応することができる。しかしながら、他の実施形態において、計算装置102上で動作する1つの仮想マシンはシステムオンチップ104の複数の仮想機能に対応してもよく、又は計算装置102上で動作する複数の仮想マシンはシステムオンチップ104の1つの仮想機能に対応してもよい。言い換えると、本開示の実施形態において、計算装置102上で動作する仮想マシン106とシステムオンチップ104がサポートする仮想機能とは、任意の合理的な対応関係を有することができる。
【0029】
そこで、210では、計算装置102上で動作する仮想マシン106に仮想機能をより一層よく提供するために、システムオンチップ104の制御ユニット112は、まず、システムオンチップ104がサポートする複数の仮想機能116を確定する。複数の仮想機能116の各々は、計算装置102上で動作する仮想マシン106に対応しているので、制御ユニット112は、仮想マシン106と仮想機能116との対応関係に基づいて、複数の仮想機能116を確定することができる。例えば、
図1の例において、1つの仮想マシン106が1つの仮想機能に対応する場合、制御ユニット112は、システムオンチップ104がN個の仮想マシン106のそれぞれに対応するN個の仮想ユニット116をサポートすべきと判定することができる。同様に、制御ユニット112は、仮想マシン106と仮想機能116との対応関係に関わらず、システムオンチップ104がサポートすべき複数の仮想機能116を確定することができる。
【0030】
しかしながら、制御ユニット112は、上述したように複数の仮想機能116を確定することに限定されるものではない。他の実施形態において、制御ユニット112はシステムオンチップ104の物理リソースの総量に基づいて合理的な数の仮想機能116を確定し、続いてこれらの仮想機能116を計算装置102で動作する仮想マシン106に対応する。あるいは、制御ユニット112は、システムオンチップ104のユーザや管理者からの命令を受け付け、その命令に基づいて、複数の仮想機能116を確定してもよい。すなわち、システムオンチップ104がサポートすべき複数の仮想機能116は、システムオンチップ104のユーザや管理者によって構成されてもよい。より具体的には、制御ユニット112は、システムオンチップ104がサポートすべき複数の仮想機能116を任意の適切な方式で確定することができる。
【0031】
220では、制御ユニット112は、システムオンチップ104の物理リソースセットを所定の割合で、仮想機能116の数と同じである複数の物理リソースサブセットに区分けする。すなわち、システムオンチップ104がN個の仮想機能116をサポートしている場合、制御ユニット112は、システムオンチップ104の物理リソースセットを、所定の割合でN個の物理リソースサブセットに区分けする。
【0032】
具体的には、制御ユニット112は物理リソースセットを提供する物理ユニットの特徴に応じて物理リソースセットをN個の物理リソースサブセットに区分けすることができる。例えば、いくつかの場合では、システムオンチップ104の物理リソースセットが複数の物理ユニットによって提供される。例えば、
図1の例では、システムオンチップ104の計算リソースセットは、M個の計算ユニット108により提供される。この場合、制御ユニット112は、M個の計算ユニットをN個の物理リソースサブセットに区画することができる。
【0033】
一方、システムオンチップ104の物理リソースセットは、1つの物理ユニットによって提供される場合もある。例えば、
図1の例では、システムオンチップ104のダイレクトメモリアクセスリソースセットは、1つのダイレクトメモリアクセスユニット110によって提供される。この場合、制御ユニット112は、ダイレクトメモリアクセスユニット110の内部リソースをN個の物理リソースサブセットに区画することができる。次に、
図3を参照して、異なる状況で物理リソースセットを区分けする例を説明する。
【0034】
図3は、本開示の実施形態に係る物理リソースセットの区分け及び割り当ての例示的なプロセス300の概略フローチャートを示している。プロセス300は、方法200の一実施形態と考えることができる。従って、いくつかの実施形態では、プロセス300は、計算装置102と通信可能に結合されたシステムオンチップ104において実行されることができる。例えば、プロセス300は、システムオンチップ104の制御ユニット112により実現されてもよい。この場合、プロセス300は、制御ユニット112のプロセッサ又は処理ユニットにより実現され得る。他の実施形態において、プロセス300の全部又は一部は、例示的な環境100と独立した計算装置で実現されてもよく、又は例示的な環境100における他のユニットで実現されてもよい。
【0035】
図3に示すように、310において、制御ユニット112は、システムオンチップ104の物理リソースセットが1つの物理ユニットにより提供されるか、又は複数の物理ユニットにより提供されるかを判定することができる。物理リソースセットが複数の物理ユニットにより提供される場合、320において、制御ユニット112は、複数の物理ユニットのセットを所定の割合で複数の物理ユニットサブセットに区分けし、区分けされた複数の物理ユニットサブセットは、複数の物理リソースサブセットにそれぞれ対応することができる。
【0036】
例えば、
図1に示す例では、Nの値が3、すなわち、計算装置102上で3つの仮想マシン106-1、106-2及び106-3が動作しており、システムオンチップ104が3つの仮想機能116-1、116-2及び116-3をサポートしているとする。同時にMの値を8とすると、すなわちシステムオンチップ104は8個の計算ユニット108-1~108-8を有する。また、物理リソースセットを区分けするための所定の割合が1:2:1であると仮定し、すなわち物理リソースセットは1:2:1の割合で3つの仮想機能116-1、116-2及び116-3、並びに対応する3つの仮想マシン106-1、106-2及び106-3に割り当てられる。
【0037】
この場合、制御ユニット112は、8個の計算ユニット108-1~108-8を3つの物理リソースサブセットに区分けすることができる。これら3つの物理リソースサブセットそれぞれは、3つの仮想機能116-1、116-2、116-3に対応する。一例として、第1の物理リソースサブセットは、2つの計算ユニット(例えば、計算ユニット108-1及び108-2)を含むことができる。第2の物理リソースサブセットは、4つの計算ユニット(例えば、計算ユニット108-3、108-4、108-5及び108-6)を含むことができる。第3の物理リソースサブセットは、2つの計算ユニット(例えば、計算ユニット108-7及び108-8)を含むことができる。このように区画することにより、ある仮想機能に対して個々の物理ユニットが全体として使用されることを確保することができ、仮想機能間のアイソレーションを向上させることができる。
【0038】
なお、ここで説明した具体的な数の計算ユニット、具体的な数の仮想機能、各物理リソースサブセットに含まれる計算ユニットの数及び具体的な計算ユニット、並びに具体的な所定の割合は、説明及び解釈の目的に用いるものであり、決して本開示の範囲を限定するものではない。他の実施形態において、システムオンチップ104は、任意の数の計算ユニット、任意の数の仮想機能、各物理リソースサブセットに含まれ得る任意の数の計算ユニット及び任意の具体的な計算ユニットを含むことができ、物理リソースセットの区分けは任意の所定の割合を用いることができる。
【0039】
一方、制御ユニット112は、310において、システムオンチップ104の物理リソースセットが1つの物理ユニットによって提供されると判定した場合、350において、物理ユニットの物理リソースを、複数の物理リソースサブセットにそれぞれ対応可能な複数のリソース部分に所定の割合で区分けしてもよい。例えば、システムオンチップ104のダイレクトメモリアクセスリソースは、1つのダイレクトメモリアクセスユニット110で提供され、全ての仮想機能116で利用することができる。この場合、制御ユニット112は、ダイレクトメモリアクセスユニット110内のダイレクトメモリアクセスリソースを所定の割合で複数のリソース部分に区分けしてもよい。
【0040】
具体的には、ダイレクトメモリアクセスユニット110の内部に8つのアクセスチャネル(以下CH1~CH8と呼ばれ得る)があると仮定し、8つの並列に実行されるダイレクトメモリアクセスをサポートすることができるが、これら8つのチャネルは1つのコンフィグレーションインターフェース(例えば、アドバンストペリフェラルバスAPBインターフェース)を共有することができる。また、依然として物理リソースセットを区分けする所定の割合が1:2:1であると仮定し、制御ユニット112は、ダイレクトメモリアクセスユニット110内の8つのチャネルを3つのリソース部分に区分けしてもよい。これら3つのリソース部分それぞれは、3つの仮想機能116-1、116-2、116-3に対応する。一例として、第1のリソース部分は2つのチャネル(例えばCH1及びCH2)を含むことができる。第2のリソース部分は、4つのチャネル(例えば、CH3、CH4、CH5及びCH6)を含むことができる。第3のリソース部分は、2つのチャネル(例えば、CH7及びCH8)を含むことができる。このような区分け方式によれば、物理リソースを提供する物理ユニットの数が分けられない場合にも、依然として物理リソースの異なる仮想機能間での区分けを実現することができる。
【0041】
以上、制御ユニット112が、1つ又は複数の物理ユニットに応じて物理リソースサブセットを区分けする例について説明した。しかしながら、本開示の実施形態はこれに限定されるものではなく、他の実施形態において、制御ユニット112は他の方式を採用して物理リソースサブセットを区分けしてもよい。例えば、制御ユニット112は、物理ユニットが複数存在する場合、各物理ユニットを所定の割合で複数のリソース部分に区分けしてもよい。また、例えば、制御ユニット112は、物理ユニットが複数存在する場合、一部の物理ユニットを単一の物理ユニットで物理ユニットサブセットに区分けし、他部の物理ユニットそれぞれを複数のリソース部分に区分けしてもよい。より一般的に、制御ユニット112は任意の適切な方式を採用し、物理リソースセットを所定の割合で物理リソースサブセットに区分けすることができる。
【0042】
また、物理リソースセットを区分けするための所定の割合は、制御ユニット112が様々な相関要因に基づいて適宜確定することができる。例えば、制御ユニット112は、複数の仮想機能116に対応する複数の仮想マシン106の物理リソース要求量に基づいて、所定の割合を確定してもよい。このように、制御ユニット112は仮想マシン106の実際の要求に応じてシステムオンチップ104の物理リソースセットを合理的に区分けすることができる。追加又は代替として、制御ユニット112は、仮想マシン106の負荷レベルに基づいて所定の割合を確定してもよい。そのため、システムオンチップ104の物理リソースセットは現在の負荷がより大きい仮想マシン106により多く割り当てることができる。追加又は代替として、制御ユニット112は、仮想マシン106のサービス品質レベルに基づいて所定の割合を確定してもよい。例えば、制御ユニット112はサービス品質レベルがより高い仮想マシン106により大きい割合の物理リソースを区分けすることができる。
【0043】
より具体的には、制御ユニット112は、システムオンチップ104の物理リソースセットをN個の物理リソースサブセットに合理的に区分けするために、他のリソース割り当てに影響を与える可能な関連要素に基づいて所定の割合を確定してもよい。また、該所定の割合を設定して調整することにより、システムオンチップ104は異なる物理リソース割り当て比率をサポートすることができ、すなわち、複数のパターンであり、例えばパターン1では1/4、1/4及び1/2の比率で物理リソースを区分けすることができ、パターン2では1/2、1/2の比率で物理リソースを区分けすることができ、パターン3では1/1の比率で物理リソースを区分けすることができ、すなわち物理リソースセットを区分けしない。このように、システムオンチップ104は仮想機能116の間で柔軟な物理リソース割り当てを実現することができる。
【0044】
図2に戻り、230において、制御ユニット112は、区分けされた複数の物理リソースサブセットを複数の仮想機能にそれぞれ割り当てる。例えば、
図1に示す例では、制御ユニット112は、区分けされたN個の物理リソースサブセットをN個の仮想機能116-1~116-Nにそれぞれ割り当てることで、仮想機能に物理リソースを割り当てながら、異なる仮想機能間で物理リソースのアイソレーションを実現している。次に、
図3を参照して、異なる状況で物理リソースサブセットの割り当ての一例について説明する。
【0045】
図3に示すように、物理リソースセットが複数の物理ユニットによって提供される場合、制御ユニット112は、330において、複数の物理ユニットサブセットの各々について、物理ユニットサブセットが割り当てるべき仮想機能の識別子を確定することができる。例えば、上記の仮定された8つの計算ユニットの具体例を用い、制御ユニット112は、第1の物理リソースサブセットである計算ユニット108-1及び計算ユニット108-2について、割り当てるべき仮想機能116-1の識別子が116-1であると判定することができる。同様に、制御ユニット112は、第2の物理リソースサブセットである計算ユニット108-3~108-6について、割り当てるべき仮想機能116-2の識別子が116-2であると判定することができる。同様に、制御ユニット112は、第3の物理リソースサブセットである計算ユニット108-7及び108-8について、割り当てるべき仮想機能116-3の識別子が116-3であると判定することができる。
【0046】
340では、制御ユニット112は、物理ユニットサブセットの各物理ユニットに、仮想機能の識別子を関連付けることができる。例えば、制御ユニット112は、計算ユニット108-1及び108-2と仮想機能116-1の識別子116-1とを関連付け、計算ユニット108-3~108-6と仮想機能116-2の識別子116-2とを関連付け、計算ユニット108-7及び108-8と仮想機能116-3の識別子116-3とを関連付けることができる。このようにすると、制御ユニット112は、特定の計算ユニットがどの仮想機能に割り当てられているかを直接かつ明確に標識することができる。
【0047】
いくつかの実施形態において、各物理ユニットに関連付けられた仮想機能識別子は、物理ユニットの内部に格納されていてもよく、例えば、物理ユニットの内部のレジスタに格納されていてもよい。一例として、計算ユニット108-1に対応する仮想機能116-1の識別子116-1は、計算ユニット108-1の内部レジスタに格納されてもよい。以上の具体例における計算ユニット108、仮想機能116及び仮想マシン106の対応関係を以下の表1に示す。
【表1】
【0048】
制御ユニット112は、上記表1に示した関連関係に基づいて、各計算ユニットを対応する仮想機能のサポートに利用することができる。一例として、制御ユニット112は、複数の計算ユニット108それぞれについて、例えば、計算ユニット108-1について、計算ユニット108-1に関連付けられた識別子が116-1であると判定することができる。この識別子で識別される仮想機能は、仮想機能116-1である。そして、制御ユニット112は、計算ユニット108-1を仮想機能116-1のサポートに利用することができる。
【0049】
同様に、制御ユニット112は、計算ユニット108-2を仮想機能116-1のサポートに、計算ユニット108-3~計算ユニット108-6を仮想機能116-2のサポートに、計算ユニット108-7及び計算ユニット108-8を仮想機能116-3のサポートに利用することができる。このように、制御ユニット112は、特定の計算ユニットがどの仮想機能に割り当てられているかを簡単かつ明確に判定し、その計算ユニットをその仮想機能のサポートに利用することができる。
【0050】
次に、
図3に戻り、物理リソースセットが1つの物理ユニットにより提供された場合、360において、制御ユニット112は、該物理ユニット内の複数のリソース部分の、物理ユニット内における複数のアドレス範囲を確定することができる。例えば、上記のダイレクトメモリアクセスユニット110に8つのアクセスチャネルが含まれると仮定した例を使用し、制御ユニット112は、ダイレクトメモリアクセスユニット110の第1のリソース部分(すなわち、チャネルCH1及びCH2)の第1のアドレス範囲、ダイレクトメモリアクセスユニット110の第2のリソース部分(すなわち、チャネルCH3~CH6)の第2のアドレス範囲、ダイレクトメモリアクセスユニット110の第3のリソース部分(すなわち、チャネルCH7及びCH8)の第3のアドレス範囲を確定することができる。
【0051】
370では、制御ユニット112は、確定された複数のアドレス範囲を複数の仮想機能にそれぞれ割り当てることができる。例えば、制御ユニット112は、第1のアドレス範囲を仮想機能116-1に割り当て、第2のアドレス範囲を仮想機能116-2に割り当て、第3のアドレス範囲を仮想機能116-3に割り当てることができる。このように、制御ユニット112は、異なるアドレス範囲が示す異なるリソース部分を複数の仮想機能にそれぞれ割り当てることができ、それにより単一の物理ユニット内のアクセス可能な異なるリソース部分の形態で、異なる仮想機能の間でハードウェアアイソレーションを実現する。次に、
図4を参照して、アドレス範囲によって単一の物理ユニット内の異なるリソース部分にアクセスする例について説明する。
【0052】
図4は、本開示の実施形態に係るアドレス範囲管理用のレジスタ400の概略ブロック図を示している。
図4に示すように、システムオンチップ104は、仮想機能116の各仮想機能に対して対応するレジスタ400を設けることができる。レジスタ400は、一部のアクセス可能なアドレス範囲を対象にしてもよく、有効ビット410、開始アドレス(base)フィールド420及びアドレス空間サイズ(size)フィールド430を含むことができる。
【0053】
有効ビット410は、該アドレスが検査を必要とするか否か、すなわちレジスタ400が対象とするアドレス範囲が該仮想機能にアクセスされるか否かを示すことができる。例えば、レジスタ400に記録されているアドレス範囲の仮想機能116-1に対する有効ビット410が0に設定されている場合、仮想機能116-1がそのアドレス範囲にアクセス可能であることを示す。逆に、レジスタ400に記録されているアドレス範囲の仮想機能116-1に対する有効ビット410が1に設定されている場合には、仮想機能116-1がそのアドレス範囲にアクセスできないことを示す。なお、ここでの有効ビット410の具体的な取り得る値は一例に過ぎず、本開示の範囲を限定することを意図するものではない。他の実施形態において、有効ビット410は異なる具体的な取り得る値を採用して特定の意味を代表することができ、さらに複数のビットを採用して表示することができる。
【0054】
開始アドレスフィールド420は、レジスタ400が対象とするアドレス範囲の開始アドレスを示し、アドレス空間サイズフィールド430は、レジスタ400が対象とするアドレス範囲のアドレス空間サイズを示す。したがって、いくつかの実施形態において、特定の仮想機能の正当なアクセスのアドレス範囲(有効ビット幅を26ビットと仮定する)は、{base,8ビット0}<=アドレス[25:0]<{base,8ビット0}+sizeというように表すことができる。また、いくつかの実施形態において、レジスタ400は、32ビットのビット長(例えば、0~32ビットで表される)を有するように設定されてもよい。この場合、アドレス空間サイズフィールド430は、ビット0~12を含み、開始アドレスフィールド420は、ビット13~30を含み、有効ビット410は、ビット31を含むことができる。しかし、他の実施形態において、レジスタ400は任意のビット数を有してもよく、そのうちの各フィールドは任意の適切なビット数を有してもよい。また、いくつかの実施形態において、ダイレクトメモリアクセスユニット110におけるアドレス範囲の最小割付粒度を256バイトに設定してもよい。しかしながら、本開示の実施形態において、他の粒度も可能であることが理解される。
【0055】
いくつかの実施形態において、レジスタ400は仮想アクセス制御ユニット(VAC)に設けられることができる。該仮想アクセス制御ユニットは、例えば、システムオンチップ104に設けられたアクセス制御モジュールであり、その主な機能は物理機能及び仮想機能へのアクセス制御を含むことができる。システムセキュリティのために、仮想化プロセス中に異なる仮想マシンに対してハードウェアアイソレーションを行う必要がある。こうすると、物理機能と仮想機能とがアクセス可能なチャネルは、異なるものであってもよい。一般的に、物理機能はシステムオンチップ104上の全てのチャネルにアクセスすることができ、仮想機能はその一部のチャネルにしかアクセスできない。例えば、物理機能は、
図4に示されたレジスタ400にアクセスすることができ、仮想機能は、レジスタ400にアクセスすることができない。
【0056】
これにより、制御ユニット112は、物理リソースセットを提供する単一の物理ユニットにアクセスする際に、複数の仮想機能のうちの仮想機能の物理ユニットへのアクセスリクエストに基づいて、仮想機能のアクセスすべき物理ユニット内のアドレスを確定することができる。制御ユニット112は、確定されたアドレスが仮想機能に割り当てられたアドレスの範囲内である場合には、仮想機能がそのアドレスにアクセスすることを許可し、そうでない場合には、仮想機能がそのアドレスにアクセスすることを許可しないようにしてもよい。このように、制御ユニット112は、仮想機能が割り当てられていないリソース部分にアクセスすることを防止し、それにより異なる仮想機能が単一の物理ユニット内においてアクセス可能な異なるリソース部分間でのハードウェアアイソレーションを確保することができる。
【0057】
一例として、
図1のダイレクトメモリアクセスユニット110の内部リソースの開始アドレスを0xDADA_0000とし、各チャネルが0x200のレジスタ空間を必要とし、依然として3つの仮想機能116-1、116-2及び116-3(及び対応する仮想マシン106-1、106-2及び106-3)に1:2:1で区分けして使用すると仮定すると、レジスタ400の対応する構成は、次の表2のように表すことができる。ここで、符号「0x」はその後の数字が16進数であることを表す。
【表2】
【0058】
この場合、仮想機能116-1(仮想マシン106-1に対応)がアドレス0xDADA_0200へのアクセスを要求したとする。このアドレスは、0xDB40_0400で定義されるアドレス範囲(0xDADA_0000~0xDADA_03FF)内であるため、このアクセスは正当である。この場合、制御ユニット112は、仮想機能116-1が該アドレスに正常にアクセスできるように許可することができる。また、例えば、仮想機能116-1が、アドレス0xDADA_0500へのアクセスを要求したとする。このアドレスが0xDB40_0400で定義されたアドレス範囲(0xDADA_0000~0xDADA_03FF)内にないため、このアクセスは不正である。この場合、制御ユニット112は、(例えば、仮想アクセス制御ユニットを介して)アクセスエラー情報を返信することで、仮想機能116-1による該アドレスへのアクセスを禁止するようにすることができる。
【0059】
このように、制御ユニット112は仮想機能(又は仮想マシン)が他の仮想機能(仮想マシン)に割り当てられたリソースにアクセスすることを効果的に防止することができ、それにより仮想マシン間のハードウェアアイソレーションが実現された。いくつかの実施形態において、システムオンチップ104はさらに、仮想機能116-1~116-Nによるダイレクトメモリアクセスユニット110へのアクセスを制御するための別体のレジスタ構成チャネルを設けてもよい。
【0060】
図5は、本開示の実施形態に係るリソースを管理するための装置500の概略ブロック図を示している。いくつかの実施形態において、装置500は、
図1の計算装置102内に含まれるか、又は計算装置102として実現されてもよい。
【0061】
図5に示すように、装置500は、仮想機能確定モジュール510、リソースセット区分けモジュール520及びリソースサブセット割り当てモジュール530を備える。仮想機能確定モジュール510は、サポートすべき複数の仮想機能を確定するように構成され、複数の仮想機能それぞれが計算装置上で動作する仮想マシンに対応する。リソースセット区分けモジュール520は、物理リソースセットを所定の割合で、仮想機能の数と同じである複数の物理リソースサブセットに区分けするように構成される。リソースサブセット割り当てモジュール530は、複数の物理リソースサブセットを複数の仮想機能にそれぞれ割り当てるように構成されている。
【0062】
いくつかの実施形態において、リソースセット区分けモジュール520は、物理リソースセットが複数の物理ユニットによって提供されることに応じて、複数の物理ユニットのセットを所定の割合で複数の物理ユニットサブセットに区分けするように構成される物理ユニット区分けモジュールを含み得、複数の物理ユニットサブセットは複数の物理リソースサブセットにそれぞれ対応する。
【0063】
いくつかの実施形態において、複数の物理ユニットサブセットそれぞれについて、リソースサブセット割り当てモジュール530は、物理ユニットサブセットの割り当てるべき仮想機能の識別子を確定するように構成される識別子確定モジュールと、識別子を物理ユニットサブセットの各物理ユニットに関連付けるように構成される関連付けモジュールとを含み得る。
【0064】
いくつかの実施形態において、複数の物理ユニットそれぞれについて、装置500はさらに、物理ユニットに関連付けられた識別子により識別される仮想機能を確定するように構成される関連機能確定モジュールと、物理ユニットを仮想機能へのサポートに用いるように構成される仮想機能サポートモジュールとを含み得る。
【0065】
いくつかの実施形態において、リソースセット区分けモジュール520は、物理リソースが1つの物理ユニットによって提供されることに応じて、物理ユニットの物理リソースを所定の割合で複数のリソース部分に区分けするように構成される物理リソース区分けモジュールを含み得、複数のリソース部分は、複数の物理リソースサブセットにそれぞれ対応する。
【0066】
いくつかの実施形態において、リソースサブセット割り当てモジュール530は、複数のリソース部分の物理ユニット内における複数のアドレス範囲を確定するように構成されるアドレス範囲確定モジュールと、複数のアドレス範囲を複数の仮想機能にそれぞれ割り当てるように構成されるアドレス範囲割り当てモジュールとを含み得る。
【0067】
いくつかの実施形態において、装置500は、複数の仮想機能における仮想機能による物理ユニットへのアクセスリクエストに基づいて、仮想機能がアクセスすべき物理ユニット内のアドレスを確定するように構成されるアクセスアドレス確定モジュールと、アドレスが仮想機能に割り当てられたアドレス範囲内であることに応じて、仮想機能によるアドレスへのアクセスを許可するように構成されるアクセス許可モジュールと、を含み得る。
【0068】
いくつかの実施形態において、装置500はさらに、複数の仮想機能に対応する複数の仮想マシンの物理リソース要求量、負荷レベル及びサービス品質レベルのうちの少なくとも1つに基づいて所定の割合を確定するように構成される所定割合確定モジュールを含み得る。
【0069】
いくつかの実施形態において、装置500は、計算装置と通信可能に結合されたシステムオンチップ上に設けられてもよい。
【0070】
図6は、本開示の実施形態を実施するために使用可能な装置600の概略ブロック図を示している。
図6に示すように、装置600は、読み出し専用メモリ(ROM)602に格納されているコンピュータプログラム命令又は記憶ユニット608からランダムアクセスメモリ(RAM)603にロードされたコンピュータプログラム命令によって様々な適当な動作及び処理を実行することができる中央処理装置(CPU)601を備える。RAM603には、装置600の動作に必要な様々なプログラム及びデータが更に格納されることが可能である。CPU601、ROM602及びRAM603は、バス604を介して互いに接続されている。入力/出力(I/O)インターフェース605もバス604に接続されている。
【0071】
装置600において、キーボード、マウスなどの入力ユニット606と、様々なタイプのディスプレイ、スピーカなどの出力ユニット607と、磁気ディスク、光ディスクなどの記憶ユニット608と、ネットワークカード、モデム、無線通信送受信機などの通信ユニット609とを含む複数のコンポーネントは、I/Oインターフェース605に接続されている。通信ユニット609は、装置600がインターネットなどのコンピュータネットワーク及び/又は様々な電気通信ネットワークを介して他の装置と情報又はデータの交換を可能にする。
【0072】
上述した様々なプロセス及び処理(例えば、例示的な方法200及び300)は、処理ユニット601によって実行可能である。例えば、いくつかの実施形態では、例示的な方法200及び300は、記憶ユニット608などのような機械可読媒体に有形に含まれるコンピュータソフトウェアプログラムとして実現されてもよい。いくつかの実施形態では、コンピュータプログラムの一部又は全部は、ROM602及び/又は通信ユニット609を介して装置600にロード及び/又はインストールされてもよい。コンピュータプログラムがRAM603にロードされ、CPU601によって実行されると、上述した例示的な方法200及び300のうちの1つ又は複数のステップを実行可能である。
【0073】
本明細書で説明したように、「…を含む」という用語及びそれに類似する用語は、「…を含むがそれらに限定されない」という非限定の表現として理解されるべきである。「…に基づいて」という用語は、「…に少なくとも部分的に基づいて」と理解されるべきである。「1つの実施形態」又は「該実施形態」という用語は、「少なくとも1つの実施形態」と理解されるべきである。なお、「第1」、「第2」等の用語は、異なるオブジェクト又は同一のオブジェクトを意味することができる。本明細書では、他の明確か暗黙的な定義がさらに含まれ得る。
【0074】
本明細書で説明したように、「確定」という用語は、様々な動作をカバーしている。例えば、「確定」は、演算、計算、処理、導出、調査、検索(例えば、テーブル、データベース又は他のデータ構造におけるルックアップ)、確かめること等を含むことができる。また、「確定」は、受信(例えば、情報を受信すること)やアクセス(例えば、メモリ上のデータにアクセスすること)などが含まれ得る。また、「確定」は、解析、選択、選び取り、確立などが含まれ得る。
【0075】
なお、本開示の実施形態は、ハードウェア、ソフトウェア又はソフトウェアとハードウェアとの組み合わせによって実現することができる。ハードウェア部分は専用ロジックで実現され得、ソフトウェア部分はメモリに格納され、マイクロプロセッサや専用設計ハードウェアなどのような適切な命令実行システムで実行され得る。上述した装置及び方法は、コンピュータ実行可能な命令を使用するか、及び/又はプロセッサ制御コードに含まれることで実現され得ることは、当業者にとっては理解できるであろう。例えば、プログラマブルメモリ又は、光学や電気信号キャリアなどのデータキャリアにはそのようなコードが提供されている。
【0076】
また、本開示の方法の操作は図面において特定の順序で説明されているが、望ましい結果を達成するために、これらの操作がその特定の順序で実行されなければならないこと、又は示された操作のすべてが実行されなければならないことを意味しない。代わりに、フローチャートに描かれているステップは別の順序で実行されてもよい。追加的又は代替的に、一部のステップを省略すること、いくつかのステップを1つのステップに組み合わせること、及び/又は1つのステップを複数のステップに区分けすることも可能である。また、本開示の2つ以上の装置の特徴及び機能が1つの装置において具現化されてもよいことを注意されたい。逆に、上述した1つの装置の特徴及び機能は、さらに複数の装置に区分けされて具現化されることが可能である。
【0077】
いくつかの具体的な実施形態を参照して本開示を説明したが、本開示は、開示された具体的な実施形態に限定されるものではないことを理解されたい。本開示は、添付された特許請求の範囲の精神及び範囲内に含まれる様々な修正及び同等の配置を網羅することを意図している。