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

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

▶ 華為技術有限公司の特許一覧

特許7592858チップ・システム、仮想割り込み処理方法および対応する装置
<>
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図1
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図2
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図3
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図4
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図5
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図6
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図7
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図8
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図9
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図10
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図11
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図12
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図13
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図14
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図15
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図16
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図17
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図18
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図19
  • 特許-チップ・システム、仮想割り込み処理方法および対応する装置 図20
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-22
(45)【発行日】2024-12-02
(54)【発明の名称】チップ・システム、仮想割り込み処理方法および対応する装置
(51)【国際特許分類】
   G06F 9/455 20180101AFI20241125BHJP
【FI】
G06F9/455 150
【請求項の数】 12
(21)【出願番号】P 2023522963
(86)(22)【出願日】2021-10-13
(65)【公表番号】
(43)【公表日】2023-10-31
(86)【国際出願番号】 CN2021123497
(87)【国際公開番号】W WO2022078375
(87)【国際公開日】2022-04-21
【審査請求日】2023-05-19
(31)【優先権主張番号】202011108332.3
(32)【優先日】2020-10-15
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャオ,スチィ
(72)【発明者】
【氏名】ジアン,イフェイ
(72)【発明者】
【氏名】デン,カイ
【審査官】田中 幸雄
(56)【参考文献】
【文献】中国特許出願公開第110609730(CN,A)
【文献】特開2019-49844(JP,A)
【文献】国際公開第2019/224515(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455
(57)【特許請求の範囲】
【請求項1】
ソース物理プロセッサ、制御装置、中間装置、送信装置、およびターゲット物理プロセッサを有するチップ・システムであって、前記ソース物理プロセッサは、ホストマシンとして動作するかまたは仮想マシンを実行するように構成され、前記制御装置はレジスタを有し、前記レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成され、前記仮想割り込みをトリガーするために使用される情報は、前記ホストマシンまたは前記仮想マシンに由来し;
前記制御装置は、前記レジスタにある情報であって、前記仮想割り込みをトリガーするために使用される情報を前記中間装置に送信するように構成されており;
前記中間装置は、前記仮想割り込みを前記送信装置に送信するように構成されており;
前記送信装置は、前記中間装置から前記仮想割り込みを受信し、前記仮想割り込みを前記ターゲット物理プロセッサに送信するように構成されている、
チップ・システム。
【請求項2】
前記仮想割り込みは仮想ローカル割り込みであり、前記ターゲット物理プロセッサと前記ソース物理プロセッサは同じ物理プロセッサであり;
前記レジスタは前記仮想マシンによって書き込まれ、前記仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成され;
前記送信装置は、前記仮想ローカル割り込みを前記仮想マシンの第1の仮想プロセッサに送信するように構成され、前記第1の仮想プロセッサは前記ソース物理プロセッサで動作する、
請求項1に記載のチップ・システム。
【請求項3】
前記仮想割り込みは仮想ソフトウェア割り込みであり、前記仮想割り込みをトリガーするために使用される情報は、前記仮想マシンの第1の仮想プロセッサによって前記レジスタに書き込まれた第2の仮想プロセッサの識別子を含み、前記第2の仮想プロセッサは前記ターゲット物理プロセッサで動作している、前記仮想マシンの仮想プロセッサであり;
前記制御装置は、前記レジスタから前記第2の仮想プロセッサの識別子を読み、前記仮想マシンの識別子を得て;前記仮想マシンの識別子と前記第2の仮想プロセッサの識別子を前記中間装置に送信するように構成されており;
前記中間装置は:
前記仮想マシンの識別子と前記第2の仮想プロセッサの識別子に基づいて第1の対応から、前記仮想マシンの識別子と前記第2の仮想プロセッサの識別子に対応する前記ターゲット物理プロセッサを決定する段階であって、前記第1の対応は、前記ターゲット物理プロセッサ、前記ターゲット・プロセッサで動作している前記第2の仮想プロセッサ、および前記仮想マシンの間の対応を記録するために使用される、段階と;
前記ターゲット物理プロセッサに対応する前記送信装置に前記仮想ソフトウェア割り込みを送信する段階とを実行するように構成されており;
前記送信装置は、前記ターゲット物理プロセッサで動作している前記第2の仮想プロセッサに前記仮想ソフトウェア割り込みを送信するように構成されている、
請求項1に記載のチップ・システム。
【請求項4】
前記仮想割り込みは仮想デバイス割り込みであり、前記仮想割り込みをトリガーするために使用される情報は、前記ホストマシンによって前記レジスタに書き込まれるターゲット割り込み番号と前記仮想マシンの識別子を含み、前記ターゲット割り込み番号は、前記ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子であり;
前記制御装置は、前記ターゲット割り込み番号と前記仮想マシンの識別子とを前記レジスタから読み取り、前記仮想マシンの識別子と前記ターゲット割り込み番号とを前記中間装置に送信するように構成されており;
前記中間装置は:
前記仮想マシンの識別子と前記ターゲット割り込み番号に基づいて、前記仮想マシンの識別子と前記ターゲット割り込み番号とに対応する、前記仮想マシンの第1の仮想プロセッサの識別子を求めて第2の対応を探索する段階であって、前記第2の対応は、前記仮想マシン、前記ターゲット割り込み番号、および前記第1の仮想プロセッサの間の対応を記録するために使用される、段階と;
前記仮想マシンの識別子と前記第1の仮想プロセッサの識別子に基づいて第3の対応から、前記仮想マシンの識別子と前記第1の仮想プロセッサの識別子に対応する前記ターゲット物理プロセッサを決定する段階であって、前記第3の対応は、前記ターゲット物理プロセッサ、前記ターゲット・プロセッサで動作する前記第1の仮想プロセッサ、および前記仮想マシンの間の対応を記録するために使用される、段階と;
前記ターゲット物理プロセッサに対応する前記送信装置に前記仮想デバイス割り込みを送信する段階とを実行するように構成されており、
前記送信装置は、前記ターゲット物理プロセッサで動作している前記第1の仮想プロセッサに前記仮想デバイス割り込みを送信するように構成されている、
請求項1に記載のチップ・システム。
【請求項5】
前記中間装置はアドレス・レジスタを有しており、前記アドレス・レジスタはメモリにおける前記第2の対応のアドレスと前記仮想マシンの識別子とを格納するように構成されており;
前記中間装置はさらに:前記仮想マシンの識別子に基づいて前記アドレス・レジスタを見出し、前記アドレス・レジスタにおける前記アドレスに基づいて前記メモリから前記第2の対応を取得するように構成されている、
請求項4に記載のチップ・システム。
【請求項6】
仮想割り込み処理方法であって、当該方法はチップ・システムにおける制御装置に適用され、前記チップ・システムはさらに、ソース物理プロセッサ、中間装置、送信装置、およびターゲット物理プロセッサを有しており、前記ソース物理プロセッサは、ホストマシンとして動作するかまたは仮想マシンを実行するように構成され、前記制御装置はレジスタを有し、前記レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成され、前記仮想割り込みをトリガーするために使用される情報は、前記ホストマシンまたは前記仮想マシンに由来し、当該方法は:
前記仮想割り込みをトリガーするために使用される情報を前記レジスタから読み取る段階と;
前記仮想割り込みをトリガーするために使用される情報を前記中間装置に送信する段階とを含み、前記仮想割り込みをトリガーするために使用される情報は、前記中間装置が前記仮想割り込みを前記送信装置に送信できるようにするために使用され、前記仮想割り込みは、前記送信装置によって前記ターゲット物理プロセッサに送信される、
方法。
【請求項7】
前記仮想割り込みは仮想ローカル割り込みであり、前記ターゲット物理プロセッサと前記ソース物理プロセッサは同じ物理プロセッサであり、前記レジスタは前記仮想マシンによって書き込まれ、前記仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成され;
前記仮想ローカル割り込みをトリガーするために使用される情報は、前記仮想ローカル割り込みをトリガーするために前記中間装置によって使用され、前記仮想ローカル割り込みは前記送信装置によって前記仮想マシンの第1の仮想プロセッサに送信され、前記第1の仮想プロセッサは前記ソース物理プロセッサで動作する、
請求項6に記載の方法。
【請求項8】
前記仮想割り込みは仮想ソフトウェア割り込みであり、前記仮想割り込みをトリガーするために使用される情報は、前記仮想マシンの第1の仮想プロセッサによって前記レジスタに書き込まれた第2の仮想プロセッサの識別子を含み、前記第2の仮想プロセッサは前記ターゲット物理プロセッサで動作する、前記仮想マシンの仮想プロセッサであり、
当該方法はさらに:
前記仮想マシンの識別子を取得する段階と;
前記仮想マシンの識別子を前記中間装置に送信する段階とを含み、前記仮想マシンの識別子と前記第2の仮想プロセッサの識別子は、前記ターゲット物理プロセッサを決定し、前記仮想ソフトウェア割り込みをトリガーするために前記中間装置によって使用され、前記仮想ソフトウェア割り込みは、前記送信装置によって、前記ターゲット物理プロセッサの前記第2の仮想プロセッサに送信される、
請求項6に記載の方法。
【請求項9】
前記仮想割り込みは仮想デバイス割り込みであり、前記仮想割り込みをトリガーするために使用される情報は、前記ホストマシンによって前記レジスタに書き込まれるターゲット割り込み番号と前記仮想マシンの識別子とを含み、前記ターゲット割り込み番号は、前記ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子であり;
前記仮想マシンの識別子と前記ターゲット割り込み番号は、前記ターゲット物理プロセッサを決定して前記仮想デバイス割り込みをトリガーするために前記中間装置によって使用され、前記仮想デバイス割り込みは前記送信装置によって前記ターゲット物理プロセッサの第1の仮想プロセッサに送信される、
請求項6に記載の方法。
【請求項10】
前記中間装置はアドレス・レジスタを含み、前記アドレス・レジスタは、メモリにおける第2の対応のアドレスと前記仮想マシンの識別子とを記憶するように構成されており;
当該方法はさらに:
前記中間装置によって、前記仮想マシンの識別子に基づいて前記アドレス・レジスタを見出す段階と;
前記中間装置によって、前記アドレス・レジスタにおける前記アドレスに基づいて前記メモリから前記第2の対応を取得する段階であって、前記第2の対応は、前記仮想マシン、前記ターゲット割り込み番号、および前記第1の仮想プロセッサの間の対応を記録するために使用される、段階とを含む、
請求項9に記載の方法。
【請求項11】
コンピュータ読み取り可能な記憶媒体であって、当該コンピュータ読み取り可能な記憶媒体はコンピュータ・プログラムを記憶しており、前記コンピュータ・プログラムがプロセッサによって実行されると、請求項6ないし10のうちいずれか一項に記載の方法が実施される、コンピュータ読み取り可能な記憶媒体。
【請求項12】
コンピュータ・デバイスであって、当該コンピュータ・デバイスは、請求項1ないし5のうちいずれか一項に記載のチップ・システムを有する、コンピュータ・デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
願は、仮想化技術の分野に関し、具体的にはチップ・システム、仮想割り込み処理方式、および対応する装置に関する。
【背景技術】
【0002】
仮想割り込みは、仮想化技術の必要な一部である。仮想マシン(virtual machine、VM)は、コンピュータ・デバイス上で実行される。コンピュータ・デバイス内のディスクまたは入出力(input/output、I/O)デバイスなどのハードウェア・デバイスによって仮想マシンに送信される通知や、仮想マシン内のさまざまなタイプの同期および調整は、仮想割り込みに依存する。仮想割り込みはイベントである。そのようなイベントはさまざまなソースをもつことがあり、イベントについての処理プロセスはソースによって変わる。ただし、各ソースからのそのようなイベントは、仮想マシンの実行時に受信される割り込みの形で仮想マシンに通知される。
【0003】
仮想割り込みのソースに関係なく、仮想割り込みが最終的に仮想マシンに到着する前に、ホストマシンはホストマシンのさまざまな機構を使用して、ソースからターゲット仮想マシンへの仮想割り込みの送信を完了する必要がある。仮想割り込みを送信するあるプロセスでは、プロセッサの制御フローが、実行中の仮想マシンからホストマシンに切り換えられるか、またはホストマシンのユーザー・モードからホストマシンのカーネル・モードに切り換えられる必要がある。これは、比較的大きなスイッチング・オーバーヘッドを引き起こす。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本願の実施形態は、仮想マシンからホストマシンへ、またはホストマシンのユーザー・モードからホストマシンのカーネル・モードへの切り換え時に、仮想割り込みに起因して発生するスイッチング・オーバーヘッドを低減するためのチップ・システム、仮想割り込み処理方法、および対応する装置を提供する。本願の実施形態は、さらに対応するコンピュータ・デバイス、コンピュータ記憶媒体、コンピュータ・プログラム・プロダクトなどを提供する。
【課題を解決するための手段】
【0005】
本願の第1の側面は、チップ・システムを提供する。チップ・システムは、ソース物理プロセッサ、制御装置、中間装置、送信装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来てもよい。制御装置は:レジスタにあり、仮想割り込みをトリガーするために使用される情報を中間装置に送信するように構成されている。中間装置は:仮想割り込みをトリガーするために使用される情報に基づいて仮想割り込みをトリガーし、仮想割り込みを送信装置に送信するように構成されている。送信装置は:中間装置から仮想割り込みを受信し、仮想割り込みをターゲット物理プロセッサに送信するように構成されている。
【0006】
本願では、チップ・システムはシステムオンチップ(system on chip、SOC)であってもよく、ソース物理プロセッサとターゲット物理プロセッサはそれぞれ、処理ユニット(processing unit)、たとえば物理コアであってもよい。制御装置、中間装置、送信装置はすべてハードウェア回路を使って実装されてもよく、あるいはソフトウェアを使って実装されてもよい。ソース物理プロセッサとターゲット物理プロセッサは、マルチコア・プロセッサにおける物理コアであってもよい。マルチコア・プロセッサは、複数の物理コアを含む。物理コアはプロセッサにおいて統合されたコアである。物理コアは処理ユニットである。たとえば、デュアルコア・プロセッサは、2つの物理コアをもつプロセッサとして理解されうる。制御装置と送信装置は、マルチコア・プロセッサにおいて配備されてもよく、ソース物理プロセッサとターゲット物理プロセッサに結合されている。中間装置は、マルチコア・プロセッサにおいて配備されてもよく、あるいは、マルチコア・プロセッサに結合された周辺装置/周辺コンポーネント上に配備されていてもよい。システムオンチップは、マルチコア・プロセッサと、マルチコア・プロセッサに結合された周辺装置/周辺コンポーネントを含んでいてもよい。チップ・システム内の任意の物理プロセッサは、ソース物理プロセッサとして使用されてもよく、あるいは、ターゲット物理プロセッサとして使用されてもよい。
【0007】
本願において、仮想割り込み(virtual interrupt)とは、コンピュータ・デバイス、ホストマシン、仮想マシンのクロック、仮想マシンの仮想プロセッサ(virtual processor)などによって仮想マシン(virtual machine、VM)に送信される割り込みである。仮想割り込みを生成するハードウェア・デバイスは、コンピュータ・デバイス内のディスク、ネットワークアダプター、オーディオアダプター、マウス、ハードディスクなどでありうる。物理割り込みは、ハードウェア・デバイスによって物理プロセッサに送信される割り込みである。物理割り込みはホストマシンによって処理され、仮想割り込みは仮想マシンによって処理される。
【0008】
本願の実施形態において言及されている仮想プロセッサの具体的な実装は、仮想中央処理装置(virtual central processing unit、vCPU)であってもよいことに注意しておくべきである。後述の「vCPU」は、理解のために「仮想プロセッサ」で置き換えることができる。
【0009】
本願では、仮想割り込みは、仮想ローカル割り込み(virtual local interrupt)、仮想ソフトウェア割り込み(virtual software interrupt)、仮想デバイス割り込み(virtual device interrupt)、および直接周辺割り込み(direct peripheral interrupt)を含みうる。仮想ローカル割り込みは、仮想マシンによってシミュレートされた仮想ローカル・デバイスによって送信される割り込み、または仮想マシンのvCPUのローカル・デバイスによって送信される割り込み、たとえば、仮想マシンのvCPUのタイマーによって送信されるクロック割り込みを指す。仮想ソフトウェア割り込みは、ソフトウェアによってトリガーされ、一般に、仮想マシンのvCPUによって該仮想マシンの別のvCPUに送信される割り込みである。仮想マシンは複数のvCPUを有していてもよく、これらのvCPUは、ある瞬間において異なる物理プロセッサ上で実行されて、仮想マシンの異なるタスクを実行してもよい。異なるvCPUによって実行されるタスクが相互に依存している場合、またはスケジュールされる必要がある場合は、仮想ソフトウェア割り込みが発生する。仮想デバイス割り込みは、ハードウェア・デバイスをシミュレートするホストマシンによってトリガーされる割り込み、たとえば、仮想マシン・ディスク・コントローラをシミュレートする、または、別のハードウェア・デバイスをシミュレートするホストマシンによって生成された割り込みを指す。
【0010】
本願では、制御装置は少なくとも1つのレジスタを含んでいてもよく、各レジスタは、仮想割り込みをトリガーするために使用される1つのタイプの情報を受信するように構成されていてもよい。たとえば、3つのレジスタが含まれ、1つのレジスタは仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成され、1つのレジスタは仮想ソフトウェア割り込みをトリガーするために使用される情報を受信するように構成され、1つのレジスタは仮想デバイス割り込みをトリガーするために使用される情報を受信するように構成されている。むろん、制御装置では、仮想割り込みのために1つのレジスタが構成されるだけであってもよく、各タイプの仮想割り込みをトリガーするために使用される情報が異なる。仮想割り込みのタイプは、レジスタによって受信された情報を使用して識別されうる。
【0011】
一つまたは複数の中間装置があってもよい。送信装置は、各物理プロセッサが1つの送信装置を有するのであってもよく、あるいは複数の物理プロセッサが1つの送信装置を共有するのであってもよい。
【0012】
第1の側面から、第1の側面では、仮想割り込みの処理専用のレジスタが制御装置に配置されていることがわかる。このように、ユーザー・モードまたはカーネル・モードにあるホストマシンまたは仮想マシンは、仮想割り込みをトリガーするために使用される情報をレジスタに直接書き込むことができる。制御装置は、仮想割り込みをトリガーするために使用される情報を中間装置に送信してもよく、中間装置は該仮想割り込みをトリガーする。また、中間装置は仮想割り込みを送信装置に送信し、送信装置は仮想割り込みをターゲット物理プロセッサに送信する。本願で提供される解決策では、ホストマシンまたは仮想マシンが直接レジスタにアクセスし、仮想割り込みをトリガーするために使用される情報をレジスタに書き込んで、仮想割り込みが送信されるようにしてもよい。そのため、従来技術に比べ、本願において提供される解決策では、ソース物理プロセッサは仮想マシンからホストマシンに切り換える必要がなく、ソース物理プロセッサはホストマシンのユーザー・モードからホストマシンのカーネル・モードに切り換える必要がなく、それにより、仮想割り込み処理時に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善する。
【0013】
第1の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサであり、レジスタは仮想マシンによって書き込まれ、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成される。送信装置は:仮想ローカル割り込みを仮想マシンの第1の仮想プロセッサvCPUに送信するように構成される。ここで、第1のvCPUはソース物理プロセッサ上で実行される。
【0014】
この可能な実装では、仮想ローカル割り込みはコア内割り込みであるため、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサである。中間装置はタイマーであってもよく、仮想ローカル割り込みはクロック割り込みであってもよい。1つの物理プロセッサはある瞬間には1つの仮想マシンの1つのvCPUのみを実行し、仮想ローカル割り込みを仮想マシンに送信する動作は、仮想ローカル割り込みをvCPUに送信することによって完了できる。この可能な実装から、仮想ローカル割り込みを処理するプロセスにおいて、ソース物理プロセッサが仮想マシンからホストマシンに切り換える必要がなく、そのため、仮想ローカル割り込みの処理中に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善することがわかる。
【0015】
第1の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で実行されている仮想マシンのvCPUである。制御装置は:レジスタから第2のvCPUの識別子を読み、仮想マシンの識別子を得て;仮想マシンの識別子と第2のvCPUの識別子を中間装置に送信するように構成されている。中間装置は:仮想マシンの識別子と第2のvCPUの識別子に基づいて第1の対応から、仮想マシンの識別子と第2のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、該第1の対応は、ターゲット物理プロセッサ、ターゲット・プロセッサ上で実行されている第2のvCPU、および仮想マシンの間の対応を記録するために使用される、段階と;ターゲット物理プロセッサに対応する送信装置に仮想ソフトウェア割り込みを送信する段階とを実行するように構成されている。送信装置は、ターゲット物理プロセッサ上で実行されている第2のvCPUに仮想ソフトウェア割り込みを送信するように構成されている。
【0016】
この可能な実装では、仮想ソフトウェア割り込みは、仮想マシンの第1のvCPUによって仮想マシンの第2のvCPUに送信される割り込みである。そのため、仮想マシンの第1のvCPUが仮想ソフトウェア割り込みをトリガーする必要がある場合、第2のvCPUの識別子をレジスタに書き込む必要がある。1つの仮想マシンは複数のvCPUを持つことができ、1つの仮想マシンに属するvCPUは1つの物理プロセッサ上で時分割多重方式で動作しうる。たとえば、仮想マシン1のvCPU1が、まず物理プロセッサ1上で動作し、物理プロセッサ1がvCPU 1の動作を終了した後、仮想マシン1のvCPUが2が動作してもよい。また、1つの仮想マシンに属する複数のvCPUが異なる物理プロセッサ上で動作してもよく、異なるvCPUが異なる物理プロセッサ上で同時に動作してもよい。たとえば、仮想マシン1のvCPU1が物理プロセッサ1上で動作し、仮想マシン1のvCPU2が物理プロセッサ2上で動作する。仮想ソフトウェア割り込みシナリオでは、第1のvCPUがソース物理プロセッサ上で動作し、第2のvCPUがターゲット物理プロセッサ上で動作する。制御装置は、ソース物理プロセッサ上で動作する仮想マシンの識別子を格納する専用のレジスタから、仮想マシンの識別子を取得してもよい。各仮想マシンは複数のvCPUを持つことができ、異なる仮想マシンのvCPUの識別子は同じであってもよい。そのため、制御装置は仮想マシンの識別子と第2のvCPUの識別子を中間装置に送信する必要がある。中間装置は前記第1の対応を記憶してもよい。第1の対応は、インポジションvCPU識別子グループに位置していてもよい。インポジションvCPU識別子グループは、チップ・システム内の各物理プロセッサ、各物理プロセッサ上で動作するvCPU、および動作中のvCPUが属する仮想マシン間の対応を記録する。本願では、物理プロセッサは、インポジションvCPU識別子グループを検索することによって決定されうる。この可能な実装から、仮想ソフトウェア割り込みを処理するプロセスでは、ソース物理プロセッサが仮想マシンからホストマシンに切り換える必要がなく、そのため、仮想ソフトウェア割り込みの処理中に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善することがわかる。
【0017】
第1の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みであり、仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれるターゲット割り込み番号と仮想マシンの識別子を含む。ここで、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。制御装置は、ターゲット割り込み番号と仮想マシンの識別子をレジスタから読み取り、仮想マシンの識別子とターゲット割り込み番号を中間装置に送信するように構成されている。中間装置は:仮想マシンの識別子とターゲット割り込み番号に基づいて、仮想マシンの識別子とターゲット割り込み番号に対応する仮想マシンの第1のvCPUの識別子を求めて第2の対応を探索する段階であって、該第2の対応は、仮想マシンとターゲット割り込み番号と第1のvCPUの対応を記録するために使用される、段階と;仮想マシンの識別子と第1のvCPUの識別子に基づいて第3の対応から、仮想マシンの識別子と第1のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、該第3の対応はターゲット物理プロセッサとターゲット・プロセッサ上で動作する第1のvCPUと仮想マシンの間の対応を記録するために使用される、段階と;ターゲット物理プロセッサに対応する送信装置に仮想デバイス割り込みを送信する段階とを実行するように構成されている。送信装置は、ターゲット物理プロセッサ上で実行されている第1のvCPUに仮想デバイス割り込みを送信するように構成される。
【0018】
この可能な実装では、仮想デバイス割り込みは、ハードウェア・デバイスをシミュレートするときに、ユーザー・モードにおいてホストマシンによってシミュレートされたハードウェア・デバイスによってトリガーされる割り込みである。複数のタイプのハードウェア・デバイスがあってもよく、各タイプのハードウェア・デバイスの割り込み番号は異なる。ホストマシンがディスクをシミュレートする場合、ターゲット割り込み番号はディスクの割り込み番号である。ホストマシンは複数の仮想マシンを管理する場合があるため、ホストマシンは仮想マシンの識別子とターゲット割り込み番号をレジスタに書き込む必要がある。第2の対応は、割り込みアフィニティ・テーブル内に位置してもよい。割り込みアフィニティ・テーブルは、仮想マシンによって構成されてもよい。そのため、各仮想マシンについて割り込みアフィニティ・テーブルがある。このように、仮想マシンの識別子に基づいて仮想マシンの割り込みアフィニティ・テーブルが見出されてもよく、ターゲット割り込み番号に基づいて仮想マシンの割り込みアフィニティ・テーブルから対応するvCPUが決定される。ターゲット割り込み番号は10である。割り込みアフィニティ・テーブルにおける割り込み番号10がvCPU ID1に対応している場合、そのターゲット割り込み番号に対応するvCPU IDが1であると判断されうる。vCPU IDが1であると判断した後、ルーティング装置は、インポジションvCPU識別子グループに基づいて、vCPU ID1に対応する物理プロセッサを見出してもよい。インポジションvCPU識別子グループの意味については、理解のために仮想ソフトウェア割り込みの説明を参照されたい。第3の対応については、理解のために第1の対応を参照されたい。この可能な実装から、仮想デバイス割り込みを処理するあるプロセスにおいて、ソース物理プロセッサがホストマシンのユーザー・モードからホストマシンのカーネル・モードに切り換える必要がなく、そのため仮想デバイス割り込みの処理中に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善することがわかる。
【0019】
第1の側面のある可能な実装では、中間装置はアドレス・レジスタを含み、アドレス・レジスタはメモリ内の前記第2の対応のアドレスと仮想マシンの識別子とを格納するように構成されている。中間装置はさらに:仮想マシンの識別子に基づいてアドレス・レジスタを探索し、アドレス・レジスタ内のアドレスに基づいて前記メモリから前記第2の対応を取得するように構成されている。
【0020】
この可能な実装では、割り込みアフィニティ・テーブルは中間装置に記憶されていてもよく、あるいはメモリに記憶されていてもよい。中間装置は、それぞれの物理プロセッサについてアドレス・レジスタを提供してもよい。アドレス・レジスタはベース・アドレス・レジスタであってもよく、ベース・アドレス・レジスタはメモリ内の割り込みアフィニティ・テーブルのアドレスと、仮想マシンの識別子とを記憶してもよい。これにより、中間装置の過剰な記憶スペースが占有されることが回避できる。
【0021】
第1の側面のある可能な実装では、送信装置は、ターゲット物理プロセッサのペンディング・レジスタに仮想割り込みを書き込むように構成され、ペンディング・レジスタは、ターゲット物理プロセッサによって実行される手順のコマンドを受信するように構成される。
【0022】
この可能な実装では、ペンディング・レジスタは、ターゲット物理プロセッサによってその後に実行されるコマンドを受信し、ターゲット物理プロセッサがその後に仮想割り込みを実行するよう、仮想割り込みをペンディング・レジスタに書き込むように構成される。このようにして、現在実行されているプロセスが中断され、それにより既存の解決策におけるホストマシンへの切り換えアクションを遮断することができる。これは、ターゲット物理プロセッサを仮想マシンからホストマシンに切り換えるオーバーヘッドを低減する。
【0023】
本願の第2の側面は、チップ・システムを提供する。チップ・システムは、ソース物理プロセッサ、制御装置、中間装置、送信装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。チップ・システムはさらに、前記仮想マシンと前記仮想マシンの間の直接通信のためのハードウェア・デバイスを含む。中間装置は:ハードウェア・デバイスによってトリガーされる直接周辺割り込みを受信する段階と;直接周辺割り込みの物理割り込み番号に基づいて、対応する仮想マシンの識別子および仮想割り込み番号についての仮想割り込みテーブルを探索する段階であって、仮想割り込みテーブルは、物理割り込み番号と仮想マシンの識別子と仮想割り込み番号の間の対応を記録する、段階と;仮想マシンの識別子に基づいて、対応する割り込みアフィニティ・テーブルを決定し、割り込みアフィニティ・テーブルから、仮想マシンの識別子と、仮想割り込み番号に対応するターゲット仮想プロセッサvCPUの識別子とを決定する段階であって、割り込みアフィニティ・テーブルは、仮想割り込み番号と仮想プロセッサの間の対応を記録する、段階と;ターゲットvCPUの識別子に基づいて、インポジションvCPU識別子グループから、ターゲットvCPUの識別子に対応するターゲット物理プロセッサを決定する段階と;ターゲット物理プロセッサに対応する送信装置に直接周辺割り込みを送信する段階とを実行するように構成されている。送信装置は、ターゲット物理プロセッサ上で動作する仮想マシンに前記直接周辺割り込みを送信する。
【0024】
第2の側面では、直接周辺割り込みとは、仮想マシンに直接接続されている周辺デバイスによってトリガーされる割り込み、たとえば、仮想マシンに直接接続されているグラフィックスカードによって生成される割り込みを指す。直接周辺割り込みを処理するプロセスでは、仮想割り込みテーブル、割り込みアフィニティ・テーブル、およびインポジションvCPU識別子グループが順に使用される。割り込みアフィニティ・テーブルとインポジションvCPU識別子グループの理解については、第1の側面の可能な諸実装における説明を参照されたい。下記は、仮想割り込みテーブルについて説明する。仮想割り込みテーブルは、物理割り込み番号、仮想マシンの識別子、および仮想割り込み番号の間のマッピング関係を維持する。物理割り込み番号が入力されると、仮想マシンの識別子と仮想割り込み番号が出力されることができる。直接周辺割り込みを処理するプロセスにおいて、中間装置は、前記直接周辺装置によって送信された物理割り込み番号を受信し、物理割り込み番号に基づいて、対応する仮想マシン識別子と仮想割り込み番号を求めて仮想割り込みテーブルを探索する。たとえば、物理割り込み番号100が入力された場合、仮想マシン識別子1と仮想割り込み番号10が出力されてもよい。次いで、仮想マシンの識別子1と仮想割り込み番号10に基づいて、割り込みアフィニティ・テーブルが探索され、対応するvCPU IDが見出される。たとえば、vCPU IDが1であることが見出される。さらに、vCPU IDに基づいて、対応する物理プロセッサを求めて、インポジションvCPU識別子グループが探索される。たとえば、物理プロセッサ1が見つかった場合、中間装置は物理プロセッサ1に対応する送信装置に直接周辺割り込みを送信してもよく、送信装置はvCPU ID1に対応するvCPUに直接周辺割り込みを送信する。
【0025】
第2の側面で提供される直接周辺割り込みを処理するプロセスでは、3つの対応を検索することによって、送信プロセスが完了されることができ、それにより直接周辺割り込みの処理の柔軟性を改善する。
【0026】
本願の第3の側面は、制御装置を提供する。制御装置はチップ・システムに適用される。チップ・システムはさらに、ソース物理プロセッサ、中間装置、および送信装置を含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来る。制御装置は:仮想割り込みをトリガーするために使用される情報をレジスタから読み取り、仮想割り込みをトリガーするために使用される情報を中間装置に送信するように構成されている。仮想割り込みをトリガーするために使用される情報は、中間装置が仮想割り込みをトリガーできるようにするために使用され、仮想割り込みは、送信装置によってターゲット物理プロセッサに送信される。
【0027】
第3の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサであり、レジスタは仮想マシンによって書き込まれ、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成される。制御装置は:仮想ローカル割り込みをトリガーするために使用される情報を中間装置に送信するように構成されている。仮想ローカル割り込みをトリガーするために使用される情報は、中間装置が仮想ローカル割り込みをトリガーできるようにするために使用され、仮想ローカル割り込みは送信装置によって仮想マシンの第1の仮想プロセッサvCPUに送信され、第1のvCPUはソース物理プロセッサ上で動作する。
【0028】
第3の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で動作する仮想マシンのvCPUである。制御装置は、第2のvCPUの識別子をレジスタから読み取り、仮想マシンの識別子を取得し;仮想マシンの識別子と第2のvCPUの識別子を中間装置に送信するように構成されている。仮想マシンの識別子と第2のvCPUの識別子は、ターゲット物理プロセッサを決定し、仮想ソフトウェア割り込みをトリガーするために中間装置によって使用される。仮想ソフトウェア割り込みは、送信装置によって、ターゲット物理プロセッサの第2のvCPUに送信される。
【0029】
第3の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みである。仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれるターゲット割り込み番号と仮想マシンの識別子とを含み、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。制御装置は:ターゲット割り込み番号と仮想マシンの識別子をレジスタから読み取り、ターゲット割り込み番号と仮想マシンの識別子を中間装置に送信するように構成されている。仮想マシンの識別子とターゲット割り込み番号は、ターゲット物理プロセッサを決定して仮想デバイス割り込みをトリガーするために中間装置によって使用され、仮想デバイス割り込みは送信装置によってターゲット物理プロセッサの第1のvCPUに送信される。
【0030】
本願の第4の側面は、中間装置を提供する。中間装置はチップ・システムに適用される。チップ・システムはさらに、ソース物理プロセッサ、制御装置、送信装置、ターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来る。中間装置は:仮想割り込みをトリガーするために使用される情報を制御装置から受け取り、仮想割り込みをトリガーするために使用される情報に基づいて仮想割り込みをトリガーし、仮想割り込みを送信装置に送信するように構成されている。仮想割り込みは、送信装置によってターゲット物理プロセッサに送信される。
【0031】
第4の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサであり、レジスタは仮想マシンによって書き込まれ、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成される。中間装置は:仮想ローカル割り込みをトリガーするために使用される情報に基づいて仮想ローカル割り込みをトリガーし、送信装置に仮想ローカル割り込みを送信するように構成される。仮想ローカル割り込みは、送信装置によって仮想マシンの第1の仮想プロセッサvCPUに送信され、第1のvCPUはソース物理プロセッサ上で動作する。
【0032】
第4の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で動作する仮想マシンのvCPUである。中間装置は:制御装置から、仮想マシンの識別子と第2のvCPUの識別子を受け取る段階と;仮想マシンの識別子と第2のvCPUの識別子に基づいて、第1の対応から、仮想マシンの識別子と第2のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第1の対応は、ターゲット物理プロセッサと、ターゲット・プロセッサ上で動作する第2のvCPUと、仮想マシンとの間の対応を記録するために使用される、段階と;仮想ソフトウェア割り込みをトリガーする段階と;ターゲット物理プロセッサに対応する送信装置に仮想ソフトウェア割り込みを送信する段階とを実行するように構成されている。仮想ソフトウェア割り込みは、送信装置によってターゲット物理プロセッサの第2のvCPUに送信される。
【0033】
第4の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みであり、仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれる、ターゲット割り込み番号と仮想マシンの識別子を含む。ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。中間装置は:制御装置から、仮想マシンの識別子とターゲット割り込み番号を受信する段階と;仮想マシンの識別子とターゲット割り込み番号に基づいて、仮想マシンの識別子とターゲット割り込み番号に対応する仮想マシンの第1のvCPUの識別子を求めて、第2の対応を探索する段階であって、第2の対応は、仮想マシンとターゲット割り込み番号と第1のvCPUの間の対応を記録するために使用される、段階と;仮想マシンの識別子と第1のvCPUの識別子に基づいて、第3の対応から、仮想マシンの識別子と第1のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第3の対応は、ターゲット物理プロセッサと、ターゲット・プロセッサ上で実行されている第1のvCPUと、仮想マシンとの間の対応を記録するために使用される、段階と;仮想デバイス割り込みをトリガーする段階と;ターゲット物理プロセッサに対応する送信装置に、仮想デバイス割り込みを送信する段階とを実行するように構成される。仮想デバイス割り込みは、送信装置によってターゲット物理プロセッサの第1のvCPUに送信される。
【0034】
第4の側面のある可能な実装では、中間装置はアドレス・レジスタを含み、アドレス・レジスタは、メモリにおける前記第2の対応のアドレスと仮想マシンの識別子とを記憶するように構成される。中間装置はさらに:仮想マシンの識別子に基づいてアドレス・レジスタを探索し、アドレス・レジスタ内のアドレスに基づいて前記メモリから前記第2の対応を取得するように構成される。
【0035】
本願の第5の側面は、送信装置を提供する。送信装置はチップ・システムに適用される。チップ・システムはさらに、ソース物理プロセッサ、中間装置、ターゲット物理プロセッサ、および制御装置を含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来る。送信装置は、中間装置から仮想割り込みを受信し、ターゲット物理プロセッサに仮想割り込みを送信するように構成されている。
【0036】
第5の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサである。送信装置は:中間装置から仮想ローカル割り込みを受信し、仮想ローカル割り込みを仮想マシンの第1の仮想プロセッサvCPUに送信するように構成されている。第1のvCPUはソース物理プロセッサ上で動作する。
【0037】
第5の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で実行される仮想マシンのvCPUである。送信装置は:中間装置から仮想ソフトウェア割り込みを受信し、仮想ソフトウェア割り込みをターゲット物理プロセッサ上で動作する第2のvCPUに送信するように構成されている。
【0038】
第5の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みである。仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれるターゲット割り込み番号と、仮想マシンの識別子を含み、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。送信装置は:中間装置から仮想デバイス割り込みを受信し、仮想デバイス割り込みを、ターゲット物理プロセッサ上で動作する第1のvCPUに送信するように構成されている。
【0039】
第5の側面のある可能な実装では、送信装置は、仮想割り込みを、ターゲット物理プロセッサのペンディング・レジスタに書き込むように構成されており、ペンディング・レジスタは、ターゲット物理プロセッサによって実行される手順のコマンドを受信するように構成されている。
【0040】
第3の側面ないし第5の側面において説明されている事項、および第3の側面ないし第5の側面のいずれかの可能な実装、および対応する意図された効果については、理解のために第1の側面と第1の側面のいずれかの可能な実装における説明を参照されたい。詳細については、ここでは再度説明しない。
【0041】
本願の第6の側面は、仮想割り込み処理方法を提供する。この方法は、チップ・システムの制御装置に適用される。チップ・システムは、さらに、ソース物理プロセッサ、中間装置、送信装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成されている。制御装置にはレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成されている。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来る。この方法には:仮想割り込みをトリガーするために使用される情報をレジスタから読み取り、仮想割り込みをトリガーするために使用される情報を中間装置に送信することを含む。仮想割り込みをトリガーするために使用される情報は、中間装置が仮想割り込みをトリガーできるようにするために使用され、仮想割り込みは、送信装置によってターゲット物理プロセッサに送信される。
【0042】
第6の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソースの物理プロセッサは同じ物理プロセッサであり、レジスタは仮想マシンによって書き込まれ、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成される。仮想ローカル割り込みをトリガーするために使用される情報は、中間装置が仮想ローカル割り込みをトリガーできるようにするために使用され、仮想ローカル割り込みは送信装置によって仮想マシンの第1の仮想プロセッサvCPUに送信され、第1のvCPUはソース物理プロセッサ上で動作する。
【0043】
第6の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で動作する仮想マシンのvCPUである。この方法はさらに:仮想マシンの識別子を取得する段階と;仮想マシンの識別子と第2のvCPUの識別子を中間装置に送信する段階とを含む。仮想マシンの識別子と第2のvCPUの識別子は、ターゲット物理プロセッサを決定し、仮想ソフトウェア割り込みをトリガーするために中間装置によって使用される。仮想ソフトウェア割り込みは、送信装置によって、ターゲット物理プロセッサの第2のvCPUに送信される。
【0044】
第6の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みである。仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれるターゲット割り込み番号と、仮想マシンの識別子を含み、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。仮想マシンの識別子とターゲット割り込み番号は、ターゲット物理プロセッサを決定して仮想デバイス割り込みをトリガーするために中間装置によって使用され、仮想デバイス割り込みは送信装置によってターゲット物理プロセッサの第1のvCPUに送信される。
【0045】
本願の第7の側面は、仮想割り込み処理方法を提供する。この方法は、チップ・システムの中間装置に適用される。チップ・システムは、さらに、ソース物理プロセッサ、制御装置、送信装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来る。方法は、仮想割り込みをトリガーするために使用される情報を制御装置から受信し;仮想割り込みをトリガーするために使用される情報に基づいて仮想割り込みをトリガーし;仮想割り込みを送信装置に送信することを含む。仮想割り込みは送信装置によってターゲット物理プロセッサに送信される。
【0046】
第7の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサであり、レジスタは、仮想マシンによって書き込まれ、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成される。仮想ローカル割り込みをトリガーするために使用される情報は、仮想ローカル割り込みをトリガーするために使用され、仮想ローカル割り込みは送信装置によって、仮想マシンの第1の仮想プロセッサvCPUに送信され、第1のvCPUはソース物理プロセッサ上で動作する。
【0047】
第7の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で動作する仮想マシンのvCPUである。仮想割り込みをトリガーするために使用される情報に基づいて仮想割り込みをトリガーする上記の段階は:仮想マシンの識別子と第2のvCPUの識別子に基づいて第1の対応から、仮想マシンの識別子と第2のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第1の対応は、ターゲット物理プロセッサ、ターゲット・プロセッサ上で動作している第2のvCPU、および仮想マシンの間の対応を記録するために使用される、段階と;仮想ソフトウェア割り込みをトリガーする段階とを含む。仮想ソフトウェア割り込みは、送信装置によって、ターゲット物理プロセッサの第2のvCPUに送信される。
【0048】
第7の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みであり、仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれる、ターゲット割り込み番号と仮想マシンの識別子を含み、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。仮想割り込みをトリガーするために使用される情報に基づいて仮想割り込みをトリガーする上記の段階は:仮想マシンの識別子とターゲット割り込み番号に基づいて、仮想マシンの識別子とターゲット割り込み番号に対応する仮想マシンの第1のvCPUの識別子を求めて第2の対応を探索する段階であって、第2の対応は、仮想マシンとターゲット割り込み番号と第1のvCPUの間の対応を記録するために使用される、段階と;仮想マシンの識別子と第1のvCPUの識別子に基づいて、第3の対応から、仮想マシンの識別子と第1のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第3の対応は、ターゲット物理プロセッサ、ターゲット・プロセッサ上で動作している第1のvCPU、および仮想マシンの間の対応を記録するために使用される、段階と;仮想デバイス割り込みをトリガーする段階とを含む。仮想デバイス割り込みは、送信装置によってターゲット物理プロセッサの第1のvCPUに送信される。
【0049】
第7の側面のある可能な実装では、この方法はさらに:仮想マシンの識別子に基づいてアドレス・レジスタを見出し、アドレス・レジスタ内のアドレスに基づいてメモリから前記第2の対応を取得することを含み、アドレス・レジスタは、前記メモリにおける前記第2の対応のアドレスと仮想マシンの識別子とを記憶するように構成される。
【0050】
本願の第8の側面は、仮想割り込み処理方法を提供する。この方法は、チップ・システムの送信装置に適用される。チップ・システムは、さらに、ソース物理プロセッサ、中間装置、制御装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来る。この方法は、中間装置から仮想割り込みを受信し、仮想割り込みをターゲット物理プロセッサに送信することを含む。
【0051】
第8の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサである。仮想割り込みをターゲット物理プロセッサに送信する上記の段階は:仮想ローカル割り込みを仮想マシンの第1の仮想プロセッサvCPUに送信することを含み、第1のvCPUはソース物理プロセッサ上で動作する。
【0052】
第8の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で動作する仮想マシンのvCPUである。仮想割り込みをターゲット物理プロセッサに送信する上記の段階は:ターゲット物理プロセッサ上で動作している第2のvCPUに仮想ソフトウェア割り込みを送信することを含む。
【0053】
第8の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みである。仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれるターゲット割り込み番号と、仮想マシンの識別子を含み、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。仮想割り込みをターゲット物理プロセッサに送信する上記の段階は、ターゲット物理プロセッサ上で動作している第1のvCPUに仮想デバイス割り込みを送信することを含む。
【0054】
第8の側面のある可能な実装では、この方法にはさらに:ターゲット物理プロセッサのペンディング・レジスタに仮想割り込みを書き込むことを含み、ペンディング・レジスタはターゲット物理プロセッサによって実行される手順のコマンドを受信するように構成される。
【0055】
第6の側面ないし第8の側面において説明されている事項、および第6の側面ないし第8の側面のいずれかの可能な実装、および対応する意図された効果については、理解のために第1の側面と第1の側面のいずれかの可能な実装における説明を参照されたい。詳細については、ここでは再度説明しない。
【0056】
本願の第9の側面は、制御装置を提供する。制御装置はチップ・システムに適用される。チップ・システムはさらに、ソース物理プロセッサ、中間装置、送信装置、ターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来る。制御装置は、仮想割り込みをトリガーするために使用される情報をレジスタから読むように構成された読み取りユニットと;仮想割り込みをトリガーするために使用される情報を中間装置に送信するように構成された送信ユニットとを含む。仮想割り込みをトリガーするために使用される情報は、仮想割り込みをトリガーするために中間装置によって使用され、仮想割り込みは、送信装置によって、ターゲット物理プロセッサに送信される。
【0057】
第9の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソースの物理プロセッサは同じ物理プロセッサであり、レジスタは仮想マシンによって書き込まれ、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成される。仮想ローカル割り込みをトリガーするために使用される情報は、中間装置が仮想ローカル割り込みをトリガーできるようにするために使用され、仮想ローカル割り込みは送信装置によって仮想マシンの第1の仮想プロセッサvCPUに送信され、第1のvCPUはソース物理プロセッサ上で動作する。
【0058】
第9の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で動作する仮想マシンのvCPUである。この制御装置はさらに:仮想マシンの識別子を取得するように構成された処理ユニットと;仮想マシンの識別子と第2のvCPUの識別子を中間装置に送信するように構成された送信ユニットとを含む。仮想マシンの識別子と第2のvCPUの識別子は、ターゲット物理プロセッサを決定し、仮想ソフトウェア割り込みをトリガーするために中間装置によって使用される。仮想ソフトウェア割り込みは、送信装置によって、ターゲット物理プロセッサの第2のvCPUに送信される。
【0059】
第9の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みである。仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれるターゲット割り込み番号と、仮想マシンの識別子を含み、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。仮想マシンの識別子とターゲット割り込み番号は、ターゲット物理プロセッサを決定して仮想デバイス割り込みをトリガーするために中間装置によって使用され、仮想デバイス割り込みは送信装置によってターゲット物理プロセッサの第1のvCPUに送信される。
【0060】
本願の第10の側面は、中間装置を提供する。この中間装置はチップ・システムに適用される。チップ・システムは、さらに、ソース物理プロセッサ、制御装置、送信装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来る。中間装置は、仮想割り込みをトリガーするために使用される情報を制御装置から受信するように構成された受領ユニットと;仮想割り込みをトリガーするために使用される情報に基づいて仮想割り込みをトリガーするように構成された処理ユニットと;仮想割り込みを送信装置に送信するように構成された送信ユニットとを含む。仮想割り込みは送信装置によってターゲット物理プロセッサに送信される。
【0061】
第10の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサであり、レジスタは、仮想マシンによって書き込まれ、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成される。仮想ローカル割り込みをトリガーするために使用される情報は、仮想ローカル割り込みをトリガーするために使用され、仮想ローカル割り込みは送信装置によって、仮想マシンの第1の仮想プロセッサvCPUに送信され、第1のvCPUはソース物理プロセッサ上で動作する。
【0062】
第10の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で動作する仮想マシンのvCPUである。前記処理ユニットは:仮想マシンの識別子と第2のvCPUの識別子に基づいて第1の対応から、仮想マシンの識別子と第2のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第1の対応は、ターゲット物理プロセッサ、ターゲット・プロセッサ上で動作している第2のvCPU、および仮想マシンの間の対応を記録するために使用される、段階と;仮想ソフトウェア割り込みをトリガーする段階とを実行するように構成される。仮想ソフトウェア割り込みは、送信装置によって、ターゲット物理プロセッサの第2のvCPUに送信される。
【0063】
第10の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みであり、仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれる、ターゲット割り込み番号と仮想マシンの識別子を含み、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。前記処理ユニットは:仮想マシンの識別子とターゲット割り込み番号に基づいて、仮想マシンの識別子とターゲット割り込み番号に対応する仮想マシンの第1のvCPUの識別子を求めて第2の対応を探索する段階であって、第2の対応は、仮想マシンとターゲット割り込み番号と第1のvCPUの間の対応を記録するために使用される、段階と;仮想マシンの識別子と第1のvCPUの識別子に基づいて、第3の対応から、仮想マシンの識別子と第1のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第3の対応は、ターゲット物理プロセッサ、ターゲット・プロセッサ上で動作している第1のvCPU、および仮想マシンの間の対応を記録するために使用される、段階と;仮想デバイス割り込みをトリガーする段階とを実行するように構成される。仮想デバイス割り込みは、送信装置によってターゲット物理プロセッサの第1のvCPUに送信される。
【0064】
第10の側面のある可能な実装では、前記処理ユニットはさらに:仮想マシンの識別子に基づいてアドレス・レジスタを見出し、アドレス・レジスタ内のアドレスに基づいてメモリから前記第2の対応を取得するように構成され、アドレス・レジスタは、前記メモリにおける前記第2の対応のアドレスと仮想マシンの識別子とを記憶するように構成される。
【0065】
本願の第11の側面は、送信装置を提供する。送信装置は、チップ・システムに適用される。チップ・システムは、さらに、ソース物理プロセッサ、中間装置、制御装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来る。この送信装置は、中間装置から仮想割り込みを受信するように構成された受信ユニットと、仮想割り込みをターゲット物理プロセッサに送信するように構成された送信ユニットとを含む。
【0066】
第11の側面のある可能な実装では、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサである。送信ユニットは:仮想ローカル割り込みを仮想マシンの第1の仮想プロセッサvCPUに送信するように構成されており、第1のvCPUはソース物理プロセッサ上で動作する。
【0067】
第11の側面のある可能な実装では、仮想割り込みは仮想ソフトウェア割り込みであり、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で動作する仮想マシンのvCPUである。前記送信ユニットは:ターゲット物理プロセッサ上で動作している第2のvCPUに仮想ソフトウェア割り込みを送信するように構成されている。
【0068】
第11の側面のある可能な実装では、仮想割り込みは仮想デバイス割り込みである。仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれるターゲット割り込み番号と、仮想マシンの識別子を含み、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。前記送信ユニットは、ターゲット物理プロセッサ上で動作している第1のvCPUに仮想デバイス割り込みを送信するように構成されている。
【0069】
第11の側面のある可能な実装では、前記送信ユニットはさらに:ターゲット物理プロセッサのペンディング・レジスタに仮想割り込みを書き込むように構成されており、ペンディング・レジスタはターゲット物理プロセッサによって実行される手順のコマンドを受信するように構成される。
【0070】
第9の側面ないし第11の側面において説明されている事項、および第9の側面ないし第11の側面のいずれかの可能な実装、および対応する意図された効果については、理解のために第1の側面と第1の側面のいずれかの可能な実装における説明を参照されたい。詳細については、ここでは再度説明しない。
【0071】
本願の第12の側面は、一つまたは複数のコンピュータ実行可能命令を格納するコンピュータ読み取り可能な記憶媒体を提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは第6の側面または第6の側面の可能な実装のいずれかによる方法を実行する。
【0072】
本願の第13の側面は、一つまたは複数のコンピュータ実行可能命令を格納するコンピュータ読み取り可能な記憶媒体を提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは第7の側面または第7の側面の可能な実装のいずれかによる方法を実行する。
【0073】
本願の第14の側面は、一つまたは複数のコンピュータ実行可能命令を格納するコンピュータ読み取り可能な記憶媒体を提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは第8の側面または第8の側面の可能な実装のいずれかによる方法を実行する。
【0074】
本願の第15の側面は、一つまたは複数のコンピュータ実行可能命令を格納するコンピュータ・プログラム・プロダクトを提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは第6の側面または第6の側面の可能な実装のいずれかによる方法を実行する。
【0075】
本願の第16の側面は、一つまたは複数のコンピュータ実行可能命令を格納するコンピュータ・プログラム・プロダクトを提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは第7の側面または第7の側面の可能な実装のいずれかによる方法を実行する。
【0076】
本願の第17の側面は、一つまたは複数のコンピュータ実行可能命令を格納するコンピュータ・プログラム・プロダクトを提供する。コンピュータ実行可能命令がプロセッサによって実行されるとき、プロセッサは第8の側面または第8の側面の可能な実装のいずれかによる方法を実行する。
【0077】
本願の第18の側面は、コンピュータ・デバイスを提供する。コンピュータ・デバイスは、第1の側面または第1の側面の可能な実装のいずれかによるチップ・システムを含む。
【0078】
本願の第19の側面は、チップ・システムを提供する。チップ・システムは、ソース物理プロセッサ、制御装置、送信装置、およびターゲット物理プロセッサを含む。制御装置は、第3の側面、第9の側面、第3の側面の可能な実装のいずれか、または第9の側面の可能な実装のいずれかに従っており、送信装置は、第5の側面、第11の側面、第11の側面の可能な実装のいずれか、または第5の側面の可能な実装のいずれかに従っている。
【0079】
ある実装では、チップ・システムは、第4の側面、第10の側面、第10の側面の可能な実装のいずれか、または第4の側面の可能な実装のいずれかによる中間装置をさらに含んでいてもよい。
【0080】
ある実装では、第19の側面によるチップ・システムはプロセッサであり、ソース物理プロセッサとターゲット物理プロセッサはプロセッサ内の物理コアであり、制御装置はプロセッサ内に位置し、ソース物理プロセッサに結合されたコンポーネントであり、送信装置はプロセッサ内に位置するコンポーネントであり、ターゲット物理プロセッサに結合されている。プロセッサの任意の物理コアが仮想割り込みの受信器として使用されうることが理解されうる。したがって、物理コアは、ソース物理プロセッサとして、またターゲット物理プロセッサとして使用されうる。対応して、物理コアに結合されたものは、制御装置と送信装置の両方を含みうる。
【0081】
本願のこの実施形態において提供されるチップ・システムによれば、制御装置において、仮想割り込みの処理専用のレジスタが配置される。このように、ユーザー・モードにおけるホストマシンまたは仮想マシンが、仮想割り込みをトリガーするために使用される情報を、直接レジスタに書き込むことができる。制御装置は、仮想割り込みをトリガーするための情報を中間装置に送ってもよく、中間装置が仮想割り込みをトリガーする。また、中間装置は仮想割り込みを送信装置に送信し、送信装置は仮想割り込みをターゲット物理プロセッサに送信する。本願において提供される解決策では、ホストマシンまたは仮想マシンが直接レジスタにアクセスし、仮想割り込みをトリガーするために使用される情報をレジスタに書き込み、仮想割り込みが送信されるようにすることができる。そのため、本願において提供される解決策では、従来技術と比較して、ソース物理プロセッサが仮想マシンからホストマシンに切り換えたり、ホストマシンのユーザー・モードからホストマシンのカーネル・モードに切り換えたりする必要がなく、それにより、仮想割り込み処理の際に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を向上させる。
【図面の簡単な説明】
【0082】
図1】本願のある実施形態によるコンピュータ・デバイスの構造の概略図である。
【0083】
図2】本願のある実施形態による仮想割り込みのタイプの概略図である。
【0084】
図3】本願のある実施形態によるチップ・システムの構造の概略図である。
【0085】
図4】本願のある実施形態によるチップ・システムの別の構造の概略図である。
【0086】
図5】本願のある実施形態による仮想クロック割り込みの概略図である。
【0087】
図6】本願のある実施形態によるインポジション仮想プロセッサ識別子グループの一例の概略図である。
【0088】
図7】本願のある実施形態による仮想ソフトウェア割り込みの一例の概略図である。
【0089】
図8】本願のある実施形態によるルーティング装置の構造の概略図である。
【0090】
図9】本願のある実施形態による直接周辺割り込みの一例の概略図である。
【0091】
図10】本願のある実施形態によるRISC-Vマイクロアーキテクチャーにおけるチップ・システムの構造の概略図である。
【0092】
図11】本願のある実施形態によるRISC-Vマイクロアーキテクチャーにおける仮想クロック割り込みを処理するプロセスの概略図である。
【0093】
図12】本願のある実施形態によるRISC-Vマイクロアーキテクチャーにおける仮想ソフトウェア割り込みを処理するプロセスの概略図である。
【0094】
図13】本願のある実施形態によるRISC-Vマイクロアーキテクチャーにおける仮想デバイス割り込みを処理するプロセスの概略図である。
【0095】
図14】本願のある実施形態によるRISC-Vマイクロアーキテクチャーにおける仮想デバイス割り込みの処理の別プロセスの概略図である。
【0096】
図15】本願のある実施形態によるRISC-Vマイクロアーキテクチャーにおける直接周辺割り込みを処理するプロセスの概略図である。
【0097】
図16】本願のある実施形態による仮想割り込み処理方法のある実施形態の概略図である。
【0098】
図17】本願のある実施形態による制御装置のある実施形態の概略図である。
【0099】
図18】本願のある実施形態による中間装置のある実施形態の概略図である。
【0100】
図19】本願のある実施形態による送信装置のある実施形態の概略図である。
【0101】
図20】本願のある実施形態によるコンピュータ・デバイスの別の構造の概略図である。
【発明を実施するための形態】
【0102】
以下は、本願の実施形態を添付図面を参照して説明する。明らかに、記載されている実施形態は、本願のすべての実施形態というよりは、単にいくつかの実施形態である。当業者は、技術の発展と新しいシナリオの出現とともに、本願において提供される技術的解決策が同様の技術的問題にも適用できることを知りうる。
【0103】
本願の明細書、請求項および添付図面において、「第1」、「第2」等の用語は、類似の対象を区別することを意図しているが、必ずしも特定の順序またはシーケンスを示すものではない。そのように称されるデータは適切な状況では交換可能であり、よって、ここに記載された実施形態は、ここに例示または記載された順序以外の順序で実装できることを理解すべきである。さらに、用語「含む」、「包含する」および他の任意の変形は、非排他的包含をカバーすることを意味する。たとえば、一連のステップまたはユニットを含むプロセス、方法、システム、プロダクトまたはデバイスは、必ずしも、明示的に挙げられているそれらのステップまたはユニットに限定されず、明示的に挙げられていない、またはそのようなプロセス、方法、システム、プロダクトまたはデバイスに固有の他のステップまたはユニットを含むことができる。
【0104】
本願の実施形態は、仮想割り込みに起因する、仮想マシンからホストマシンへ、またはホストマシンのユーザー・モードからホストマシンのカーネル・モードへの切り換え時に発生するスイッチング・オーバーヘッドを削減するチップ・システム、仮想割り込み処理方法、および対応する装置を提供する。本願の実施形態はさらに、対応するコンピュータ・デバイス、コンピュータ記憶媒体、コンピュータ・プログラム・プロダクトなどを提供する。詳細は別途後述する。
【0105】
仮想化とは、コンピュータ・デバイスのハードウェア層でハードウェア資源(たとえば、プロセッサ、メモリ内の記憶スペース、ネットワーク資源など)を仮想化し、仮想化されたハードウェア資源を、使用のために複数の仮想コンピュータと共有することである。仮想コンピュータとは、あらゆるタイプの仮想化されたデバイスにおいて、ソフトウェアによって仮想化された実行環境の総称であり、この概念は仮想マシンやコンテナを含む。
【0106】
図1に示されるように、コンピュータ・デバイス100は、ハードウェア層112、ホスト層109、仮想化層を含む。仮想化層には、仮想マシン101、102を含む。仮想マシンの数はより多数、またはより少数であってもよく、ここでは、仮想マシンの数が二つの場合が、例として使用される。ハードウェア層112は、プロセッサ・システム114、メモリ113、通信インターフェース115、割り込みコントローラ116を含む。
【0107】
仮想マシン(virtual machine、VM)は、仮想化ソフトウェアを使用してコンピュータ・デバイス上でシミュレートされる。ゲスト・オペレーティングシステム(guest operating system、ゲストOS)(図1の105と106)が仮想マシン(図1の101と102)にインストールされてもよく、一つまたは複数のアプリケーション(図1の103と104)がゲスト・オペレーティングシステム上で実行される。仮想マシンはさらにネットワーク資源にアクセスしうる。仮想マシン上で実行されているアプリケーションは、そのアプリケーションが実際のコンピュータ上で動作するかのように動作する。
【0108】
仮想プロセッサ(たとえば、図1の107と108)は、仮想化技術において共有またはスライス方式で使用するために仮想コンピュータに提供される処理ユニット、たとえば仮想CPU(virtual central processing unit、vCPU)を表す。1つの仮想コンピュータは、一つまたは複数の仮想プロセッサによってサービスされうる。複数の仮想プロセッサがある場合、通例、1つの仮想プロセッサがプライマリ仮想プロセッサであり、他の仮想プロセッサがセカンダリ仮想プロセッサである。仮想マシンに含まれる仮想メモリなど、他の仮想ハードウェア資源は図1には示されていない。仮想プロセッサは、仮想化ソフトウェアを使用した仮想化を通じて得られる。仮想プロセッサの実行は、実際には次のように実装される。ホストのプロセッサまたは物理コアがソフトウェア・プログラムを読み取り、実行する。たとえば、物理コアがソフトウェア・プログラムを読み取り、物理コアのハードウェア支援仮想化の特定のモード(たとえばx86の非ルート・モード)においてソフトウェア・プログラムを実行して、仮想プロセッサを実装する。仮想マシンの複数の仮想プロセッサは、異なる物理コアに位置していてもよい。本願の実施形態で言及されているvCPUは、仮想プロセッサの任意的な具体的実装であることに注意しておくべきである。各実施形態で言及されている「vCPU」は、理解のために「仮想プロセッサ」で置き換えられてもよい。
【0109】
仮想プロセッサのトラップイン(trap in)とトラップアウト(trap out):仮想システムは、ホスト・モード(host mode)とゲスト・モード(guest mode)の2つのモードを含む。ホスト・モードは、ホストの特権レベルと呼ばれることもあり、たとえば、ホストのユーザー・モードまたはホストのカーネル・モードである。ゲスト・モードは、VMの特権レベルと呼ばれることもあり、たとえば、VMのユーザー・モードまたはVMのカーネル・モードである。物理プロセッサがゲスト・モードに入るとき、それはトラップイン(仮想)と呼ばれ、トラップイン・プロセスは、物理プロセッサがホストマシンの実行から仮想マシンの実行に切り換わることとして理解されてもよい。物理プロセッサがゲスト・モードを抜けるとき、それはトラップアウト(仮想)と呼ばれ、トラップアウト・プロセスは、物理プロセッサが仮想マシンの実行からホストマシンの実行に切り換わることとして理解されてもよい。トラップアウト後、物理プロセッサは仮想プロセッサのコードの実行を一時的に停止する。そのため、この場合は仮想プロセッサが動作していないと理解されてもよい。物理プロセッサ上で仮想マシンが動作するとき、仮想マシンの仮想プロセッサが動作する。1つの仮想マシンは複数の仮想プロセッサを有していてもよい。1つの物理プロセッサは、一時には仮想マシンの仮想プロセッサを1つだけ実行する。同じ仮想マシンに属する複数の仮想プロセッサが、時分割多重方式で物理プロセッサ上で実行されてもよい。たとえば、仮想マシン1のvCPU 1がまず物理プロセッサ1上で実行され、物理プロセッサ1がvCPU 1の実行を終了した後、仮想マシン1のvCPU 2が実行されてもよい。同じ仮想マシンに属する複数のvCPUが、代替的に、異なる物理プロセッサ上で実行されてもよく、異なるvCPUが異なる物理プロセッサ上で同時に実行されてもよい。たとえば、仮想マシン1のvCPU 1が物理プロセッサ1上で実行され、仮想マシン1のvCPU 2が物理プロセッサ2上で実行される。管理層として、ホストマシン(ホスト)層109は、ハードウェア資源の管理および割り当てを完了し、仮想プロセッサ(107,108)、仮想メモリ、仮想ディスク、仮想ネットワークアダプターなどの仮想マシンのさまざまな仮想ハードウェア資源を提供するように構成され、さらに仮想マシンのスケジューリングと隔離を実装してもよい。いくつかの実装では、ホスト層109は、ホスト・オペレーティングシステム111と、仮想モニタリング装置、たとえば仮想マシン・モニター110(virtual machine monitor、VMM)とを含む。仮想マシン・モニター110は、ホスト・オペレーティングシステム111の内部またはホスト・オペレーティングシステム111の外部に展開されてもよい。別の仮想化アーキテクチャーでは、仮想モニタリング装置は、ハイパーバイザーまたは別のタイプの仮想モニタリング装置と呼ばれてもよい。ホスト層109は、仮想化プラットフォームと呼ばれることもあり、時に、ホスト層を略してホストと呼ぶこともある。ホストマシンの特権レベルは、ユーザー・モードとカーネル・モードを含む。
【0110】
ハードウェア層112は、仮想化された環境が動作するハードウェアプラットフォームである。ハードウェア層は、複数のタイプのハードウェアを含みうる。図1に示されるように、ハードウェア層は、プロセッサ・システム114とメモリ113を含んでいてもよく、さらに通信インターフェース115、たとえばネットワークインターフェースカード(network interface card、NIC)を含んでいてもよく、さらに割り込みコントローラ116、入出力(input/output、I/O)デバイスなどを含んでいてもよい。プロセッサ・システム114は、一つまたは複数のプロセッサ、たとえば図1に示されるプロセッサ1とプロセッサ2を含んでいてもよい。各プロセッサは複数の物理コアを含んでいてもよく、プロセッサはさらに複数のレジスタ、たとえば汎用レジスタと浮動小数点レジスタを含んでいてもよい。
【0111】
プロセッサ・システム114は複数のプロセッサ、たとえば図1のプロセッサ1とプロセッサ2を含んでいてもよい。図1のプロセッサ1とプロセッサ2は両方とも、ソース物理プロセッサとターゲット物理プロセッサのような物理プロセッサである。各物理プロセッサは、物理コアとして理解されてもよい。プロセッサ・システム114は、具体的には、マルチコア・プロセッサであってもよく、マルチコア・プロセッサは、ソース物理プロセッサとターゲット物理プロセッサを含む。仮想プロセッサは物理コアにバインドされてもよい。つまり、仮想プロセッサは常に特定の物理コア上で実行され、実行のために別の物理コア上にスケジュールされることはできない。この場合、仮想プロセッサはバインドされたコアである。仮想プロセッサが要件に応じて、実行のために異なる物理コアにスケジュールされる場合、仮想プロセッサはバインドされたコアではない。
【0112】
割り込みコントローラ116は、割り込み要求をトリガーするハードウェアとプロセッサの間に配置され、主に、ハードウェアによって生成された割り込み要求を収集し、それらの割り込み要求を、特定の優先順位に基づいて、または別の規則に従って、プロセッサに送信するように構成されている。たとえば、割り込みコントローラは先進プログラマブル割り込みコントローラ(advanced programmable interrupt controller、APIC)である。
【0113】
割り込み(interruption)は、現在のプログラムの命令の実行を中断し、割り込みサービス・ルーチンを実行する。割り込みは、仮想割り込みと物理割り込みを含みうる。仮想割り込みとは、コンピュータ・デバイス内のハードウェア・デバイス、ホストマシン、仮想マシンのクロック、仮想マシンの仮想プロセッサ(virtual central processing unit、vCPU)などによって、仮想マシン(virtual machine、VM)に通知される割り込みをいう。仮想割り込みを生成するハードウェア・デバイスは、コンピュータ・デバイス内のディスク、ネットワークアダプター、オーディオアダプター、マウス、ハードディスクなどでありうる。物理割り込みとは、ハードウェア・デバイスによって物理プロセッサに通知される割り込みをいう。物理割り込みはホストマシンによって処理され、仮想割り込みは仮想マシンによって処理される。
【0114】
割り込みサービス・ルーチン(interrupt service routine、ISR)は、割り込み処理関数と呼ばれることもあり、割り込み要求を処理するために使用されるプログラムである。割り込み要求を受信すると、プロセッサは、現在のプログラムの実行を中断し、割り込み要求に対応する割り込みサービス・ルーチンを実行する。
【0115】
メモリ113によって提供される記憶空間(アドレス空間)が使用のために仮想マシンとホストに割り当てられる。ホスト物理アドレス(host physical address、HPA)は、ローカルホスト(ホスト)が使用できる物理アドレス空間である。ホスト仮想アドレス(host virtual address、HVA)は、ローカルホスト(ホスト)が使用できる仮想アドレス空間である。ゲスト物理アドレス(guest physical address、GPA)は、仮想マシンのゲスト・オペレーティングシステムが使用できる物理アドレス空間である。ゲスト仮想アドレス(guest virtual address、GVA)は、仮想マシンのゲスト・オペレーティングシステムが使用できる仮想アドレス空間である。
【0116】
コンピュータ・デバイス100は、サーバーや端末デバイスなどの物理デバイスである。端末デバイスは、無線接続機能をもつハンドヘルドデバイス、または無線モデムに接続された別の処理デバイスでありうる。たとえば、端末デバイスは、携帯電話、コンピュータ(パソコン、PC)、タブレットコンピュータ、携帯情報端末(personal digital assistant、PDA)、モバイルインターネットデバイス(mobile Internet device、MID)、ウェアラブルデバイス、電子書籍リーダー(e-book reader)であってもよく、携帯型モバイルデバイス、ポケットサイズのモバイルデバイス、ハンドヘルドのモバイルデバイス、コンピュータ内蔵型モバイルデバイス、車載型モバイルデバイスであってもよい。
【0117】
コンピュータ・デバイス100内の仮想マシンまたはホストマシンは、仮想割り込みをトリガーするために使用される情報を送信してもよく、それにより、本願のこの実施形態で提供されるチップ・システムは、仮想割り込みを処理する対応するプロセスを完了する。本願のこの実施形態で提供されるチップ・システムは、図1の割り込みコントローラおよびプロセッサ・システムを含んでいてもよく、あるいは図1における割り込みコントローラまたはプロセッサ・システムを含んでいてもよい。
【0118】
本願のこの実施形態では、図2に示されるように、仮想割り込みは、仮想ローカル割り込み(virtual local interrupt)、仮想ソフトウェア割り込み(virtual software interrupt)、仮想デバイス割り込み(virtual device interrupt)、および直接周辺割り込み(direct peripheral interrupt)を含みうる。仮想ローカル割り込みとは、仮想マシンによってシミュレートされる、仮想タイマーまたは仮想マウスなどの仮想ローカル・デバイスによって送信される割り込み、または仮想マシンのvCPUのローカル・デバイスによって送信される割り込み、たとえば、仮想マシンのvCPUのタイマーによって送信される割り込みをいう。タイマーによって送信される割り込みは、クロック割り込みとも呼ばれる。クロック割り込みは、仮想マシンによって構成された時点に達したときに、タイマーによってタイミング的に送信される割り込みをいう。仮想ソフトウェア割り込みは、ソフトウェアによってトリガーされ、一般に、仮想マシンのvCPUによって仮想マシンの別のvCPUに送信される割り込みである。たとえば、図2では、第1のvCPUによって、第1のv CPUと同じ仮想マシンの第2のvCPUに送信される割り込みが示されている。1つの仮想マシンは複数のvCPUを有していてもよく、これらのvCPUは仮想マシンの異なるタスクを実行するために異なる物理プロセッサ上で同時に実行されてもよい。異なるvCPUによって実行されるタスクが相互に依存している場合、またはスケジュールされる必要がある場合、仮想ソフトウェア割り込みが発生する。仮想デバイス割り込みは、ハードウェア・デバイスをシミュレートするホストマシンによってトリガーされる割り込みをいう。たとえば、仮想マシンのディスクコントローラをシミュレートする、または別のハードウェア・デバイスをシミュレートするホストマシンによって生成された割り込みである。直接周辺割り込みは、仮想マシンに直接接続されている周辺デバイスによってトリガーされる。たとえば、仮想マシンに直接接続されているグラフィックスカードによって生成される割り込みである。
【0119】
前述の4つのタイプの仮想割り込みでは、仮想ローカル割り込み、仮想ソフトウェア割り込み、および仮想デバイス割り込みの処理プロセスについては、仮想マシンを実行している物理プロセッサが仮想マシンからホストマシンに切り換えるか、またはホストマシンのユーザー・モードからホストマシンのカーネル・モードに切り換える必要があり、それは比較的高いスイッチング・オーバーヘッドを引き起こす。そのため、本願の実施形態はチップ・システムを提供する。仮想割り込みを処理するプロセスにおいて、仮想マシンを実行している物理プロセッサは、仮想マシンからホストマシンに切り換える、またはホストマシンのユーザー・モードからホストマシンのカーネル・モードに切り換える必要がなく、そのため、スイッチング・オーバーヘッドが低減できる。下記は、本願のある実施形態において提供されるチップ・システムについて、添付図面を参照して説明する。
【0120】
図3に示されるように、本願のある実施形態で提供されるチップ・システムは、ソース物理プロセッサ、制御装置、中間装置、送信装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。仮想割り込みをトリガーするために使用される情報は、ホストマシンまたは仮想マシンから来てもよい。制御装置は、仮想割り込みをトリガーするために使用される、レジスタ内にある情報を中間装置に送信するように構成されている。中間装置は、仮想割り込みをトリガーするために使用される情報に基づいて仮想割り込みをトリガーし、仮想割り込みを送信装置に送信するように構成されている。送信装置は、中間装置から仮想割り込みを受信し、仮想割り込みをターゲット物理プロセッサに送信するように構成されている。
【0121】
チップ・システムは、図1に示されるコンピュータ・デバイスに適用されてもよく、チップ・システムは、図1における割り込みコントローラまたはプロセッサ・システムであってもよい。
【0122】
本願のこの実施形態で提供されるチップ・システムは、システムオンチップ(system on chip、SOC)であってもよく、ソース物理プロセッサとターゲット物理プロセッサはそれぞれ処理ユニット(processing unit)であってもよい。ソース物理プロセッサまたはターゲット物理プロセッサは、物理コアであって、同じプロセッサに位置していてもよい。あるいはまた、ソース物理プロセッサとターゲット物理プロセッサは、同じチップ・システム内に位置する異なるプロセッサであってもよい。制御装置、中間装置、送信装置は、いずれもハードウェア回路を用いて実装されうる。制御装置と送信装置は、マルチコア・プロセッサ内に配備されてもよく、ソース物理プロセッサとターゲット物理プロセッサに結合される。中間装置は、マルチコア・プロセッサ内に配備されてもよく、またはマルチコア・プロセッサに結合された周辺装置/周辺コンポーネント上に配備されてもよい。システムオンチップは、マルチコア・プロセッサと、マルチコア・プロセッサに結合された周辺装置/周辺コンポーネントを含んでいてもよい。チップ・システム内の任意の物理プロセッサが、ソース物理プロセッサとして使用されてもよく、あるいはターゲット物理プロセッサとして使用されてもよい。
【0123】
本願では、ソース物理プロセッサとターゲット物理プロセッサが使用される。ソース物理プロセッサとターゲット物理プロセッサは、1つのマルチコア・プロセッサ内の2つの物理コアであってもよく、異なるプロセッサに位置する2つの物理コアであってもよいことに注意するべきである。ある実装では、ソース物理プロセッサとターゲット物理プロセッサは同じ物理エンティティであってもよい。たとえば、仮想ローカル割り込みシナリオでは、ソース物理プロセッサとターゲット物理プロセッサは同じ物理プロセッサであってもよい。
【0124】
本願では、制御装置は少なくとも1つのレジスタを含んでいてもよく、各レジスタは、仮想割り込みをトリガーするために使用される1つのタイプの情報を受信するように構成されてもよい。たとえば、3つのレジスタが含まれており、1つのレジスタは仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成され、1つのレジスタは仮想ソフトウェア割り込みをトリガーするために使用される情報を受信するように構成され、1つのレジスタは仮想デバイス割り込みをトリガーするために使用される情報を受信するように構成される。むろん、制御装置において、仮想割り込みのために1つのレジスタのみが構成されていてもよく、それぞれのタイプの仮想割り込みをトリガーするために使用される情報が異なる。仮想割り込みのタイプは、レジスタによって受信された情報を使用して識別されうる。
【0125】
一つまたは複数の中間装置がありうる。送信装置は、各物理プロセッサが1つの送信装置をもつのでもよく、あるいは複数の物理プロセッサが1つの送信装置を共有するのでもよい。
【0126】
本願のこの実施形態において提供されるチップ・システムでは、制御装置において仮想割り込みの処理専用のレジスタが設定されている。このようにして、ユーザー・モードにおけるホストマシンまたは仮想マシンが、仮想割り込みをトリガーするために使用される情報を直接レジスタに書き込むことができる。制御装置は、仮想割り込みをトリガーするために使用される情報を中間装置に送信し、中間装置は仮想割り込みをトリガーする。また、中間装置は仮想割り込みを送信装置に送信し、送信装置は仮想割り込みをターゲット物理プロセッサに送信する。ソース物理プロセッサは、仮想マシンからホストマシンに切り換えたり、あるいはホストマシンのユーザー・モードからホストマシンのカーネル・モードに切り換えたりする必要がなく、それにより、仮想割り込み処理の際に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善する。
【0127】
図3において、中間装置は仮想ローカル割り込み生成デバイスであってもよく、あるいはルーティング装置であってもよい。仮想割り込みが仮想ローカル割り込みである場合、中間装置はローカル割り込み生成装置(たとえばタイマー)と呼ばれてもよい。仮想割り込みが仮想ソフトウェア割り込みまたは仮想デバイス割り込みである場合、中間装置はルーティング装置と呼ばれてもよい。
【0128】
4つのタイプの仮想割り込みが図2に示される。下記は、図4を参照し、制御装置がレジスタ1、レジスタ2、レジスタ3を含む例を使って、4つのタイプの仮想割り込みを処理するプロセスについて説明する。レジスタ1は仮想デバイス割り込みをトリガーするために使用される情報を受信するように構成され、レジスタ2は仮想ソフトウェア割り込みをトリガーするために使用される情報を受信するように構成され、レジスタ3は仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成される。
【0129】
図4に示されるチップ・システムでは、ソース物理プロセッサはホストマシンまたは仮想マシンを実行するように構成され、ホストマシンまたは仮想マシンはパーミッション・レベル1およびパーミッション・レベル2を有していてもよい。パーミッション・レベル1はユーザー・モードであってもよく、パーミッション・レベル2はカーネル・モードであってもよい。異なる仮想化アーキテクチャーでは、パーミッション・レベル1とパーミッション・レベル2に対応する状態が異なる場合がある。これは、本願のこの実施形態において限定されない。
【0130】
本願の図4では、4つの異なる線を使用して4つのタイプの仮想割り込みがマークされている。数字1でマークされた線は仮想ローカル割り込みを処理するプロセスを表し、数字2でマークされた線は仮想ソフトウェア割り込みを処理するプロセスを表し、数字3でマークされた線は仮想デバイス割り込みを処理するプロセスを表し、数字4でマークされた線は直接周辺割り込みを処理するプロセスを表している。
【0131】
1.仮想ローカル割り込み
【0132】
図4に示されるように、仮想ローカル割り込みを処理するプロセスでは、関連するレジスタはレジスタ3であり、中間装置はローカル割り込み生成デバイスと呼ばれてもよい。仮想ローカル割り込みはコア内割り込みであるため、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサであり、送信装置はソース物理プロセッサに対応する。
【0133】
レジスタは、仮想マシンによって書き込まれ、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成されている。
【0134】
ローカル割り込み生成デバイスは、仮想ローカル割り込みをトリガーするために使用される情報に基づいて、仮想ローカル割り込みを生成するように構成されている。
【0135】
送信装置は、仮想ローカル割り込みを仮想マシンの第1の仮想プロセッサvCPUに送信するように構成されており、第1のvCPUはソース物理プロセッサ上で動作する。
【0136】
本願のこの実施形態において提供される仮想ローカル割り込みを処理するプロセスによれば、1つの物理プロセッサは、一時には1つの仮想マシンの1つのvCPUのみを動作させ、仮想ローカル割り込みを仮想マシンに送信する動作は、仮想ローカル割り込みをvCPUに送信することで完了できる。図4におけるローカル割り込み生成デバイスはタイマーであってもよく、仮想ローカル割り込みはクロック割り込みであってもよい。クロック割り込みシナリオでは、プロセスのある実装が、図5を参照して理解されうる。図5に示されるように、仮想マシンは制御装置に割り込み時点を書き込む(プロセスは、図4におけるレジスタ3を参照して理解されうる)。制御装置はタイマーに割り込み時点を書き込み、それに従ってタイマーが開始される。事前設定された時点に達すると、タイマーはクロック割り込みを送信する。クロック割り込みを受信した後、送信装置は、仮想マシンの第1のvCPUが動作していると判断し、クロック割り込みを第1のvCPUに送信する。
【0137】
図4および図5のプロセスから、仮想ローカル割り込みを処理するプロセスにおいては、ソース物理プロセッサが仮想マシンからホストマシンに切り換える必要がなく、それにより、仮想ローカル割り込みの処理中に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善することがわかる。
【0138】
2.仮想ソフトウェア割り込み
【0139】
図4に示されるように、仮想ソフトウェア割り込みを処理するプロセスでは、関連するレジスタはレジスタ2であり、中間装置はルーティング装置と呼ばれてもよい。仮想マシンの第1のvCPUはソース物理プロセッサ上で動作し、仮想マシンの第2のvCPUはターゲット物理プロセッサ上で動作する。
【0140】
レジスタは、第1のvCPUによって書き込まれた第2のvCPUの識別子を受け取るように構成されている。
【0141】
制御装置は、レジスタから第2のvCPUの識別子を読み取り、仮想マシンの識別子を取得し;仮想マシンの識別子と第2のvCPUの識別子を中間装置に送信するように構成されている。
【0142】
中間装置は、仮想マシンの識別子と第2のvCPUの識別子に基づいて第1の対応から、仮想マシンの識別子と第2のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第1の対応は、ターゲット物理プロセッサ、ターゲット・プロセッサ上で実行されている第2のvCPU、および仮想マシンの間の対応を記録するために使用される、段階と;仮想ソフトウェア割り込みを、ターゲット物理プロセッサに対応する送信装置に送信する段階とを実行するように構成されている。
【0143】
送信装置は、仮想ソフトウェア割り込みを、ターゲット物理プロセッサ上で実行されている第2のvCPUに送信するように構成されている。
【0144】
本願のこの実施形態における仮想ソフトウェア割り込みを処理するプロセスにおいては、制御装置は、ソース物理プロセッサ上で実行されている仮想マシンの識別子を格納する専用のレジスタから仮想マシンの識別子を取得してもよい。各仮想マシンは複数のvCPUを有していてもよく、異なる仮想マシンのvCPUの識別子は同じであってもよい。そのため、制御装置は仮想マシンの識別子と第2のvCPUの識別子を中間装置に送信する必要がある。中間装置は、第1の対応を記憶してもよい。第1の対応は、インポジションvCPU識別子グループ内に位置していてもよい。インポジションvCPU識別子グループは、チップ・システム内の各物理プロセッサ、各物理プロセッサ上で実行されているvCPU、および実行中のvCPUが属する仮想マシンの間の対応を記録する。本願では、インポジションvCPU識別子グループを検索することによって、ターゲット物理プロセッサが決定されうる。前述の説明から、仮想ソフトウェア割り込みを処理するプロセスにおいて、ソース物理プロセッサが仮想マシンからホストマシンに切り換える必要がなく、それにより、仮想ソフトウェア割り込みの処理中に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善することがわかる。
【0145】
インポジションvCPU識別子グループは、図6を参照して理解されうる。図6に示される意味は次のとおり:VM1のvCPU 1は物理プロセッサ1上で動作し、VM1のvCPU 2は物理プロセッサ2上で動作し、VM2のvCPU 1は物理プロセッサ3上で動作し、VM2のvCPU 2は物理プロセッサ4上で動作する。ルーティング装置が制御装置からVM1の識別子とvCPU 2の識別子を受信する場合、図6に示されるインポジションvCPU識別子グループに基づいて、vCPU 2が物理プロセッサ2上で動作していると判断することができる。つまり、仮想ソフトウェア割り込みは、物理プロセッサ2に対応する送信装置に送信されてもよく、物理プロセッサ2に対応する送信装置が仮想ソフトウェア割り込みを、物理プロセッサ2上で動作しているvCPU 2に送信する。
【0146】
インポジションvCPU識別子グループを使用することによって第2のvCPUが見つからない場合は、そのことは、第2のvCPUが現在動作していないことを示す。この場合、ルーティング装置は仮想ソフトウェア割り込みを、ソース物理プロセッサの送信装置に送信してもよく、ソース物理プロセッサの送信装置が仮想ソフトウェア割り込みをホストマシンに送信し、第2のvCPUがオンラインになって動作した後、ホストマシンは仮想ソフトウェア割り込みを第2のvCPUに送信する。
【0147】
物理プロセッサは異なる時に異なるvCPUを実行しうるので、インポジションvCPU識別子グループ内の対応が変わることがある。ルーティング装置内のインポジションvCPU識別子グループは、ソース物理プロセッサ上のホストマシンによって管理されてもよい。
【0148】
本願のこの実施形態における仮想ソフトウェア割り込みを処理するプロセスは、図7を参照して理解されうる。仮想マシンはソース物理プロセッサ上で動作し、仮想マシンの第1のvCPUはソース物理プロセッサ上で動作する。第2のvCPUは別の物理プロセッサ上で動作し、第1のvCPUは仮想ソフトウェア割り込みを第2のvCPUに送信する必要がある。この場合、仮想マシンの第1のvCPUは、第2のvCPUの識別子を制御装置のレジスタ2に書き込む。制御装置は、仮想マシンの識別子を見出し、仮想マシンの識別子と第2のvCPUの識別子をルーティング装置に送信する。ルーティング装置は、仮想マシンの識別子と第2のvCPUの識別子に基づいて、たとえば図6に示されるインポジションvCPU識別子グループを検索し、仮想マシンの識別子と第2のvCPUの識別子に対応する物理プロセッサが前記ターゲット物理プロセッサであると判断する。そして、ルーティング装置はターゲット物理プロセッサに対応する送信装置に仮想ソフトウェア割り込みを送信し、ターゲット物理プロセッサに対応する送信装置は、ターゲット物理プロセッサ上で動作する仮想マシンである第2のvCPUに仮想ソフトウェア割り込みを送信する。
【0149】
図4図6図7におけるプロセスから、本願のこの実施形態において提供される仮想ソフトウェア割り込みを処理するプロセスにおいて、ソース物理プロセッサが仮想マシンからホストマシンに切り換える必要がなく、それにより、仮想ソフトウェア割り込みの処理中に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善することがわかる。
【0150】
3.仮想デバイス割り込み
【0151】
図4に示されるように、仮想デバイス割り込みを処理するプロセスにおいては、関連するレジスタはレジスタ1であり、中間装置はルーティング装置である。ホストマシンはソース物理プロセッサ上で動作し、ホストマシンはユーザー・モードにある。
【0152】
レジスタは、ホストマシンによって書き込まれたターゲット割り込み番号と仮想マシンの識別子を受け取るように構成されている。ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。
【0153】
制御装置は、ターゲット割り込み番号と仮想マシンの識別子をレジスタから読み取り、仮想マシンの識別子とターゲット割り込み番号を中間装置に送信するように構成されている。
【0154】
中間装置は:仮想マシンの識別子とターゲット割り込み番号に基づいて、仮想マシンの識別子とターゲット割り込み番号に対応する、仮想マシンの第1のvCPUの識別子を求めて第2の対応を探索する段階であって、第2の対応は、仮想マシンとターゲット割り込み番号と第1のvCPUの間の対応を記録するために使用される、段階と;仮想マシンの識別子と第1のvCPUの識別子に基づいて、第3の対応から、仮想マシンの識別子と第1のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第3の対応は、ターゲット物理プロセッサと、ターゲット・プロセッサ上で動作する第1のvCPUと、仮想マシンの間の対応を記録するために使用される、段階と;ターゲット物理プロセッサに対応する送信装置に仮想デバイス割り込みを送信する段階とを実行するように構成される。
【0155】
送信装置は、仮想デバイス割り込みを、ターゲット物理プロセッサ上で実行されている第1のvCPUに送信するように構成されている。
【0156】
本願のこの実施形態では、仮想デバイス割り込みは、ユーザー・モードにあるホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みである。複数のタイプのハードウェア・デバイスがあってもよく、ハードウェア・デバイスのそれぞれのタイプの割り込み番号は異なる。ホストマシンがディスクをシミュレートする場合、ターゲット割り込み番号はディスクの割り込み番号である。ホストマシンは複数の仮想マシンを管理する場合があるため、ホストマシンは仮想マシンの識別子とターゲット割り込み番号をレジスタに書き込む必要がある。第2の対応は、割り込みアフィニティ・テーブルに位置していてもよい。割り込みアフィニティ・テーブルは、仮想マシンによって構成されてもよい。そのため、仮想マシンごとに割り込みアフィニティ・テーブルがある。このように、仮想マシンの識別子に基づいて仮想マシンの割り込みアフィニティ・テーブルを見出されてもよく、その後、ターゲット割り込み番号に基づいて仮想マシンの割り込みアフィニティ・テーブルから対応するvCPUが決定される。ターゲット割り込み番号は10である。割り込みアフィニティ・テーブルにおける割り込み番号10がvCPU ID 1に対応している場合、そのターゲット割り込み番号に対応するvCPU IDが1であると判断されてもよい。vCPU IDが1であると判断した後、ルーティング装置は、インポジションvCPU識別子グループに基づいて、vCPU ID 1に対応する物理プロセッサを見出しうる。インポジションvCPU識別子グループの意味については、理解のために、仮想ソフトウェア割り込みの説明を参照されたい。第3の対応については、理解のために第1の対応を参照されたい。
【0157】
下記は、表1を参照して、仮想マシンの割り込みアフィニティ・テーブルについて、説明する。
【表1】
【0158】
表1は単に一例であり、対応は表1に挙げたいくつかのタイプに限定されない。あるいはまた、別の表現形式の対応があってもよく、量がより多くてもよい。表1にさらに別の列が追加されてもよく、追加された列は図4における仮想マシンの識別子を格納するために使用される。
【0159】
割り込みアフィニティ・テーブルは、ルーティング装置に記憶されてもよく、あるいはメモリに記憶されてもよい。ルーティング装置は、物理プロセッサごとにアドレス・レジスタを提供してもよい。アドレス・レジスタは、ベース・アドレス・レジスタであってもよい。ベース・アドレス・レジスタは、メモリ内の割り込みアフィニティ・テーブルのアドレスと仮想マシンの識別子を格納することができる。図8に示されるように、ルーティング装置上のベース・アドレス・レジスタ1は物理プロセッサ1に対応し、ベース・アドレス・レジスタ2は物理プロセッサ2に対応し、ベース・アドレス・レジスタ3は物理プロセッサ3に対応し、ベース・アドレス・レジスタ4は物理プロセッサ4に対応する。各ベース・アドレス・レジスタ内のアドレスは、1つの割り込みアフィニティ・テーブルをポイントする。たとえば、ベース・アドレス・レジスタ1は割り込みアフィニティ・テーブル1をポイントし、ベース・アドレス・レジスタ2は割り込みアフィニティ・テーブル2をポイントし、ベース・アドレス・レジスタ3は割り込みアフィニティ・テーブル3をポイントし、ベース・アドレス・レジスタ4は割り込みアフィニティ・テーブル4をポイントする。同じ仮想マシンが2つの物理プロセッサで実行されている場合、2つの物理プロセッサに対応するベース・アドレス・レジスタのアドレスは同じであってもよく、ポイントされる割り込みアフィニティ・テーブルは同じテーブルであってもよい。
【0160】
このように、仮想デバイス割り込みを処理するプロセスにおいて、仮想マシンはターゲット割り込み番号をレジスタ1に書き込み、制御装置はソース物理プロセッサ上で実行されている仮想マシンを格納する専用のレジスタから現在実行中の仮想マシンの識別子を読み取り、次いで、制御装置はターゲット割り込み番号と仮想マシンの識別子をルーティング装置に送信する。ルーティング装置は、仮想マシンの識別子に基づいて対応する割り込みアフィニティ・テーブルを決定し、次いで、ターゲット割り込み番号を用いて、対応するvCPUの識別子を求めて割り込みアフィニティ・テーブルを探索する。ターゲット割り込み番号が10である場合、対応するvCPUの識別子が1であると判断されてもよい。vCPUの識別子が1であると判断した後、ルーティング装置は、図6に示されるインポジションvCPU識別子グループに基づいて、vCPU 1に対応するプロセッサが物理プロセッサ1であることを見出してもよい。ルーティング装置は、物理プロセッサ1に対応する送信装置に仮想デバイス割り込みを送信し、送信装置は、vCPU 1に対応する第1のvCPUに仮想デバイス割り込みを送信してもよい。
【0161】
インポジションvCPU識別子グループを使用することによって第1のvCPUが見つからない場合は、そのことは、第1のvCPUが現在動作していないことを示す。この場合、ルーティング装置はソース物理プロセッサの送信装置に仮想ソフトウェア割り込みを送信し、ソース物理プロセッサの送信装置はホストマシンに仮想ソフトウェア割り込みを送信し、第1のvCPUがオンラインになって実行された後、ホストマシンは第1のvCPUに仮想ソフトウェア割り込みを送信する。
【0162】
図4、表1、図8図6におけるプロセスから、本願のこの実施形態において提供される仮想デバイス割り込みを処理するプロセスにおいて、ソース物理プロセッサがホストマシンのユーザー・モードからホストマシンのカーネル・モードに切り換える必要がなく、それにより、仮想デバイス割り込みを処理する際に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善することがわかる。
【0163】
4.直接周辺割り込み
【0164】
図4に示されるように、直接周辺割り込みとは、仮想マシンに直接接続されているハードウェア・デバイス、たとえば、仮想マシンに直接接続されているグラフィックスカードによってトリガーされる割り込みである。中間装置は、ルーティング装置と呼ばれてもよい。直接周辺割り込みについて、このタイプの割り込み処理プロセスは、ルーティング装置と送信装置を使用することによって実装されうる。このプロセスは、以下のステップを含む。
【0165】
中間装置は:ハードウェア・デバイスによってトリガーされる直接周辺割り込みを受信する段階と;直接周辺割り込みの物理割り込み番号に基づいて、対応する仮想マシンの識別子と仮想割り込み番号を求めて仮想割り込みテーブルを探索する段階であって、仮想割り込みテーブルは、物理割り込み番号、仮想マシンの識別子、仮想割り込み番号の間の対応を記録する、段階と;仮想マシンの識別子に基づいて対応する割り込みアフィニティ・テーブルを決定し、割り込みアフィニティ・テーブルから、仮想マシンの識別子と仮想割り込み番号に対応するターゲット仮想プロセッサvCPUの識別子を決定する段階であって、割り込みアフィニティ・テーブルは、仮想プロセッサと仮想割り込み番号の間の対応を記録する、段階と;ターゲットvCPUの識別子に基づいて、インポジションvCPU識別子グループから、ターゲットvCPUの識別子に対応するターゲット物理プロセッサを決定する段階と;ターゲット物理プロセッサに対応する送信装置に直接周辺割り込みを送信する段階とを実行するように構成されている。
【0166】
送信装置は、ターゲット物理プロセッサ上で実行されている仮想マシンに直接周辺割り込みを送信するように構成されている。
【0167】
本願のこの実施形態では、直接周辺割り込みを処理するプロセスにおいて、仮想割り込みテーブル、割り込みアフィニティ・テーブル、インポジションvCPU識別子グループが順に使用される。割り込みアフィニティ・テーブルとインポジションvCPU識別子グループについては、前述の説明を参照されたい。下記は、仮想割り込みテーブルについて説明する。
【0168】
仮想割り込みテーブルは、物理割り込み番号、仮想マシンの識別子、および仮想割り込み番号の間のマッピング関係を維持する。物理割り込み番号が入力されると、仮想マシンの識別子と仮想割り込み番号が出力されることができる。仮想割り込みテーブルは、表2を参照して理解されうる。
【表2】
【0169】
2に示されるように、物理割り込み番号100が入力される場合、仮想マシンの識別子1と仮想割り込み番号10が出力されうる。本願における仮想割り込みテーブルは、ルーティング装置に記憶されていてもよく、あるいは、メモリに記憶されていてもよく、メモリ内の仮想割り込みテーブルの位置は、ベース・アドレス・レジスタに似た別のレジスタを使用して示される。

【0170】
直接周辺割り込みを処理するプロセスにおいては、図9に示されるように、ルーティング装置は、直接周辺装置によって送信された物理割り込み番号を受信し、物理割り込み番号を使用して、対応する仮想マシンの識別子と仮想割り込み番号を求めて仮想割り込みテーブルを探索する。たとえば、物理割り込み番号100が入力された場合、仮想マシンの識別子1と仮想割り込み番号10が出力されてもよい。そして、仮想マシンの識別子1と仮想割り込み番号10に基づいて、表1における割り込みアフィニティ・テーブルが探索され、対応するvCPUの識別子が見出される。たとえば、vCPUの識別子は1であることがわかる。さらに、vCPU 1に基づいて、図6に示されるインポジションvCPU識別子グループが、対応する物理プロセッサを求めて探索される。たとえば、物理プロセッサ1が見つかった場合、ルーティング装置は物理プロセッサ1に対応する送信装置に、直接周辺割り込みを送信し、送信装置はvCPU 1に対応する第1のvCPUに直接周辺割り込みを送信する。
【0171】
インポジションvCPU識別子グループを使用することによって第1のvCPUが見つからない場合は、そのことは第1のvCPUが現在動作していないことを示す。この場合、ルーティング装置はソース物理プロセッサの送信装置に仮想ソフトウェア割り込みを送信し、ソース物理プロセッサの送信装置はホストマシンに仮想ソフトウェア割り込みを送信し、第1のvCPUがオンラインになって動作した後、ホストマシンは第1のvCPUに仮想ソフトウェア割り込みを送信してもよい。
【0172】
図4、表2、表1、図6図9におけるプロセスから、本願のこの実施形態において提供されている直接周辺割り込みを処理するプロセスでは、3つの対応を検索することによって送信処理が完了されることができ、それにより直接周辺割り込みの処理の柔軟性を改善することがわかる。
【0173】
上記4つのタイプの仮想割り込みを処理するプロセスでは、中間装置から上記4つのタイプの仮想割り込みのいずれかを受信した後、送信装置は対応するターゲット物理プロセッサに仮想割り込みを送信する。送信プロセスは、上記のいくつかのタイプの仮想割り込みをペンディング(pending)・レジスタに書き込んでいてもよく、ペンディング・レジスタは、その後にターゲット物理プロセッサによって実行されるコマンドを受信するように構成される。仮想割り込みがペンディング・レジスタに書き込まれた後、ターゲット物理プロセッサが仮想割り込みを実行する。このようにして、現在実行されている手順が中断されうる。ターゲットvCPUが実行中の場合、ターゲットvCPUは中断され、割り込みはターゲットvCPUに送信される。ホストマシンが実行中の場合、ホストマシンは中断され、割り込みは動作しているホストマシンに直接送信される。対応するターゲットvCPUがオンラインになると、ホストマシンはターゲットvCPUに割り込みを転送する。ターゲットvCPUは、前述の第1のvCPUまたは第2のvCPUでありうる。このように、本願のこの実施形態において提供される解決策では、既存の解決策におけるホストマシンへの切り換えアクションを遮蔽することができ、それにより、仮想マシンからホストマシンへのターゲット物理プロセッサの切り換えのオーバーヘッドを低減する。
【0174】
本願のこの実施形態において提供されるチップ・システムは、RISC-Vマイクロアーキテクチャーに適用されてもよい。RISCは縮小命令セット計算(reduced instruction set computing)である。図10はRISC-V上のチップ・システムの構造の概略図である。
【0175】
図10に示されるように、チップ・システムは、物理プロセッサと対話するように構成された制御装置と送信装置、および割り込みルータを含む。割り込みルータは、前述の諸実施形態において説明したルーティング装置を含む。
【0176】
図10において、RISC-V-CPUはRISC-Vアーキテクチャーにおける中央処理装置を表し、V=0はホストマシンを表し、V=1は仮想マシンを表し、HUモードはホストマシンのユーザー・モードを表し、HSモードはホストマシンのカーネル・モードを表し、VUモードは仮想マシンのユーザー・モードを表し、VSモードは仮想マシンのカーネル・モードを表す。スーパーバイザー生成プロセッサ間割り込みロジック(supervisor generate inter-processor interrupt、sgenipi)は、仮想ソフトウェア割り込み情報をトリガーするために使用され、スーパーバイザー時間比較ロジック(supervisor time compare、stimecmp)は、仮想ローカル割り込み情報のレジスタをトリガーするために使用される。V=1の場合、つまり仮想マシンがRISC-V-CPU上で実行されている場合、仮想ソフトウェア割り込みをトリガーするために使用される情報は、sgenipiを通じて制御装置の仮想スーパーバイザー生成プロセッサ間割り込み(virtual supervisor generate inter-processor interrupt、vsgenipi)レジスタに送信されてもよく、ここで、vsgenipiレジスタは、前述の実施形態で説明した、仮想ソフトウェア割り込みをトリガーするために使用される情報を受信するために使用されるレジスタ、たとえばレジスタ2である。仮想ローカル割り込みをトリガーするために使用される情報は、stimecmpを通じて制御装置の仮想モニター時間比較(virtual supervisor time compare、vstimecmp)レジスタに送信されてもよく、ここで、vstimecmpレジスタは前述の実施形態で説明した、仮想ローカル割り込みをトリガーするために使用される情報を受信するために使用されるレジスタ、たとえばレジスタ3である。ユーザー生成仮想スーパーバイザー外部割り込み(user generate virtual supervisor external interrupt, ugenvsei)レジスタは、仮想デバイス割り込みをトリガーするために使用される情報を受信するように構成されたレジスタ、たとえば前述の実施形態で説明したレジスタ1である。ホストマシンのユーザー・モード仮想デバイス・シミュレーション・ロジックを通じて、仮想デバイス割り込みをトリガーするために使用される情報がugenvseiレジスタに直接送信されうる。
【0177】
割り込みルータのある実装は、仮想ハート共有割り込みマッピング(virtual hart shared interrupt mapping、vhsimap)レジスタ、仮想テーブルベース(virtual table base、vtblbase)(1-n)レジスタのグループ、および割り込み制御インターフェース・マッピング(interface mapping、ifmap)レジスタのグループを含む。vhsimap(1-n)レジスタは、メモリに記憶された仮想割り込みテーブルをポイントするために使用される。vtblbase(1-n)レジスタのグループにおける各vtblbaseレジスタは、RISC-Vシステムにおける物理プロセッサに対応し、物理プロセッサ上で動作するvCPUが属する仮想マシンによって定義される仮想割り込みアフィニティ・テーブルをポイントするために使用される。ifmap(1-n)レジスタのグループが提供され、ifmap(1-n)レジスタのそれぞれはシステムにおける物理プロセッサに対応し、物理プロセッサ上で動作するvCPUの識別子とvCPUが属する仮想マシンの識別子を記録するために使用される。
【0178】
図10に示されるRISC-Vアーキテクチャーでは、仮想クロック割り込みを処理するプロセスが図11を参照して理解されうる。
【0179】
図11に示されるように、仮想マシンは、stimecmpを通じて割り込み時点をvstimecmpレジスタに書き込み、制御装置は、次の仮想クロック割り込みをトリガーする時点を、仮想マシンの専用のクロック・デバイスに書き込む。割り込み時点が到来すると、仮想マシンの専用のクロック・デバイスが仮想クロック割り込みをトリガーする。仮想クロック割り込みは、送信装置に送信される。
【0180】
送信装置は、CPUの現在の仮想化状態Vに基づいて判定を行う。V=1の場合、送信装置はVSモードの仮想マシンに直接、ローカル割り込みを送信する。V=0の場合、送信装置はHSモードのホストマシンにローカル割り込みを送信し、ホストマシンが仮想マシンに代わって処理を行う。つまり、仮想マシンがオンラインになった後で、ホストマシンは仮想クロック割り込みを仮想マシンに転送する。
【0181】
図10に示されるRISC-Vアーキテクチャーでは、仮想ソフトウェア割り込みを処理するプロセスは図12を参照して理解されうる。
【0182】
図12に示されるように、仮想マシンのvCPU(これはこのシナリオではソースvCPUと呼ぶことがある)はCPU 1上で動作する。CPU 1は、前述の実施形態におけるソース物理プロセッサであってもよい。仮想マシンのソースvCPUは、sgenipiにターゲットvCPUの識別子を書き込み、sgenipiを用いて制御装置内のvsgenipiレジスタにターゲットvCPUの識別子を書き込む。制御装置は仮想マシンの識別子を取得し、仮想マシンの識別子とターゲットvCPUの識別子(vhartid:RISC-V内のvCPUの識別子)を割り込みルータに送信する。割り込みルータはifmapxを探索し、VM IDとvhartidを含むifmapxレジスタのシーケンス番号xは、対応する物理プロセッサの識別子(mhartid:RISC-V内の物理プロセッサの識別子)である。このシナリオでは、物理プロセッサの識別子は図12におけるCPU 2である。CPU 2は、前述の実施形態におけるターゲット物理プロセッサを参照して理解されてもよい。割り込みルータは、mhartidの物理プロセッサの送信装置に仮想ソフトウェア割り込みを送信する。送信装置は、物理プロセッサの現在の仮想化状態を判断する。V=1の場合、送信装置は仮想ソフトウェア割り込みを直接仮想マシンに送信する。V=0の場合、送信装置は仮想ソフトウェア割り込みを、処理のためにホストマシンに送信する。つまり、仮想マシンがオンラインになった後に、ホストマシンが仮想ソフトウェア割り込みを仮想マシンに送信する。
【0183】
図10に示されるRISC-Vアーキテクチャーでは、仮想デバイス割り込みを処理するプロセスは図13を参照して理解されうる。
【0184】
図13に示されるように、ユーザー・モードのホストマシンは、仮想マシンの識別子と仮想割り込み番号をugenvseiに書き込む。制御装置は、仮想マシンの識別子と仮想割り込み番号を割り込みルータに送信する。割り込みルータは、vtblbasexレジスタを探索して、諸vtblbasexレジスタのうちの、仮想マシンの識別子をもつvtblbasexレジスタを見つける。該レジスタがポイントする、メモリに記憶された割り込みアフィニティ・テーブルが探索される。割り込みを処理するvCPUのvhartidが、割り込みアフィニティ・テーブルから取得される。割り込みルータはifmapxを探索し、VM IDとvhartidをもつ前記レジスタに対応する物理プロセッサのシーケンス番号xを見出す。ここで、xはターゲット物理プロセッサのmhartidである。割り込みルータはmhartidの物理プロセッサの送信装置に仮想デバイス割り込みを送信する。送信装置はCPUの現在の仮想化状態を判別する。V=1の場合、送信装置はデバイス割り込みを仮想マシンに直接送信する。あるいはV=0の場合、送信装置はデバイス割り込みを処理のためにホストマシンに送信する。つまり、仮想マシンがオンラインになった後に、ホストマシンが仮想マシンに仮想デバイス割り込みを送信する。
【0185】
図10に示されるRISC-Vアーキテクチャーにおいて、仮想デバイス割り込みを処理する別のプロセスが図14を参照して理解されうる。
【0186】
図14に示されるように、ホストマシンは仮想マシンの識別子と仮想割り込み番号をugenvseiに書き込む。制御装置は仮想マシンの識別子と仮想割り込み番号を割り込みルータに送信する。割り込みルータはvtblbasexを実装せず、デフォルトで仮想マシンをもつ任意のvCPUに仮想割り込みを送信する。次いで、割り込みルータはifmapxを探索し、仮想マシンの識別子をもつレジスタに対応する物理プロセッサのシーケンス番号xを見出す。ここで、xはターゲット物理プロセッサのmhartidである。割り込みルータは、mhartidの物理プロセッサの送信装置に仮想デバイス割り込みを送信する。送信装置は、物理プロセッサの現在の仮想化状態を判別する。V=1の場合、送信装置は仮想デバイス割り込みを直接、仮想マシンに送信する。あるいはV=0の場合、送信装置は仮想デバイス割り込みを処理のためにホストマシンに送信する。つまり、仮想マシンがオンラインになった後に、ホストマシンが仮想デバイス割り込みを仮想マシンに送信する。
【0187】
図10に示されるRISC-Vアーキテクチャーにおいて、直接周辺割り込みを処理するプロセスが図15を参照して理解されうる。
【0188】
図15に示されるように、仮想マシンと直接通信するハードウェア・デバイスが直接周辺割り込みをトリガーし、割り込みルータは、vhlimapがポイントする仮想割り込みテーブルを探索し、割り込みが直接接続されている仮想マシンの識別子と、割り込みが直接接続された後の仮想マシンにおいて考慮される仮想割り込み番号とを見出す。割り込みルータは諸vtblbasexレジスタを探索し、諸vtblbasexレジスタのうちの、VM IDをもつvtblbasexを見出し、該レジスタがポイントする、メモリに記憶されている仮想割り込みアフィニティ・テーブルを検索する。割り込みを処理するvCPUのvhartidは、割り込みアフィニティ・テーブルから取得される。割り込みルータはifmapxを探索し、VM IDおよびvhartidをもつ前記レジスタに対応する物理プロセッサのシーケンス番号xを見出す。ここで、xはターゲット物理プロセッサのmhartidである。割り込みルータは、mhartidの物理プロセッサの送信装置に直接周辺割り込みを送信する。送信装置は、CPUの現在の仮想化状態を判別する。V=1の場合、送信装置は直接周辺割り込みを直接、仮想マシンに送信する。あるいはV=0の場合、送信装置は直接周辺割り込みを処理のためにホストマシンに送信する。つまり、仮想マシンがオンラインになった後に、ホストマシンが直接周辺割り込みを仮想マシンに送信する。
【0189】
本願のこの実施形態で提供されている前述の解決策によれば、制御装置、中間装置、および送信装置を使用して仮想ローカル割り込みが実装され、それにより、プロセス全体において、ローカル割り込みデバイスからvCPUまで、ホストマシンにトラップアウトしない。制御装置、ルーティング装置、および送信装置を使用することにより、仮想マシンとホストマシンの間のソフトウェア連携なしに仮想ソフトウェア割り込みが実装され、プロセス全体において、送信端vCPUから受信端vCPUまでホストマシンにトラップアウトしない。制御装置、ルーティング装置、および送信装置を使用することによって、仮想デバイス割り込みが実装され、プロセス全体において、ホストマシン・アナログ・ロジックから受信端のホストvCPUまで、コンテキストを切り換えること/ホストマシンにトラップアウトすることをしない。したがって、本願のこの実施形態において提供される解決策は、I/O、クロック、スケジューリングなどの点で仮想マシンの性能を加速することができる。シミュレーション・データは、この解決策を使用して仮想ローカル割り込みが処理されるとき、Redisが80%改善され、仮想ソフトウェア割り込みの処理が6%増加することを示している。
【0190】
上記は、ハードウェア回路を使用して仮想割り込みを処理するプロセスについて説明している。本願のこの実施形態において提供される仮想割り込みを処理するプロセスは、ソフトウェアを使用して実装されてもよい。ソフトウェアを使用して実装されるプロセスは、前述のチップ・システムにおいて組み合わされてもよい。チップ・システムは、ソース物理プロセッサ、制御装置、中間装置、および送信装置を含む。制御装置は、レジスタを含む。レジスタは、仮想割り込みをトリガーするために使用される情報を受信するように構成される。制御装置、中間装置、および送信装置の機能は、ソフトウェア・コードの形で実装されてもよい。下記は、添付図面を参照して説明を与える。
【0191】
図16に示されるように、本願のある実施形態による仮想割り込み処理方法のある実施形態は、以下のステップを含む。
【0192】
101:制御装置は、仮想割り込みをトリガーするために使用される情報をレジスタから読み取る。
【0193】
仮想割り込みをトリガーするために使用される情報は、ソース物理プロセッサ上で動作する仮想マシンまたはホストマシンに由来する。
【0194】
102:制御装置が、仮想割り込みをトリガーするために使用される情報を中間装置に送信する。対応して、中間装置は、仮想割り込みをトリガーするために使用される情報を受信する。
【0195】
103:中間装置が、仮想割り込みをトリガーするために使用される情報に基づいて、仮想割り込みをトリガーする。
【0196】
104:中間装置が、仮想割り込みを送信装置に送信する。対応して、送信装置は仮想割り込みを受信する。
【0197】
105:送信装置は仮想デバイス割り込みをターゲット物理プロセッサに送信する。
【0198】
本願のこの実施形態において提供される解決策によれば、仮想割り込みの処理専用のレジスタが制御装置に配置される。このように、ユーザー・モードにある仮想マシンまたはホストマシンは、仮想割り込みをトリガーするために使用される情報を直接、レジスタに書き込むことができる。制御装置は仮想割り込みをトリガーするために使用される情報を中間装置に送り、中間装置が仮想割り込みをトリガーする。また、中間装置は仮想割り込みを送信装置に送信し、送信装置は仮想割り込みをターゲット物理プロセッサに送信する。本願において提供される解決策では、ホストマシンまたは仮想マシンが直接、レジスタにアクセスし、仮想割り込みをトリガーするために使用される情報をレジスタに書き込んでもよい。それにより、仮想割り込みが送信される。そのため、従来の技術と比較して、本願において提供される解決策では、ソース物理プロセッサが仮想マシンからホストマシンに切り換える必要がなく、あるいはソース物理プロセッサがホストマシンのユーザー・モードからホストマシンのカーネル・モードに切り換える必要がなく、それにより、仮想割り込み処理の際に発生するスイッチング・オーバーヘッドを低減し、チップ・システムの性能を改善する。
【0199】
仮想割り込みが仮想ローカル割り込みである場合、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサである。レジスタは、仮想ローカル割り込みをトリガーするために使用される、仮想マシンによって書き込まれる情報を受信する。
【0200】
中間装置は、仮想ローカル割り込みをトリガーするために使用される情報に基づいて仮想ローカル割り込みを生成する。
【0201】
送信装置は、仮想マシンの第1の仮想プロセッサvCPUに仮想ローカル割り込みを送信し、第1のvCPUはソース物理プロセッサ上で動作する。
【0202】
仮想割り込みが仮想ソフトウェア割り込みである場合、ステップ101でレジスタから読み取られ、仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによってレジスタに書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で動作する仮想マシンのvCPUである。
【0203】
ステップ102の前に、制御装置は仮想マシンの識別子を取得する。この場合、ステップ103は具体的には、仮想マシンの識別子と第2のvCPUの識別子を中間装置に送信することを含む。
【0204】
ステップ103は具体的には、下記を含む:中間装置が、仮想マシンの識別子と第2のvCPUの識別子に基づいて、第1の対応から、仮想マシンの識別子と第2のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第1の対応は、ターゲット物理プロセッサ、ターゲット・プロセッサ上で実行されている第2のvCPU、および仮想マシンの間の対応を記録するために使用される、段階と;仮想ソフトウェア割り込みをトリガーする段階とを実行する。
【0205】
ステップ104は下記を含む:中間装置が、仮想ソフトウェア割り込みを、ターゲット物理プロセッサに対応する送信装置に送信する。
【0206】
ステップ105は下記を含む:送信装置が、ターゲット物理プロセッサ上で実行されている第2のvCPUに仮想ソフトウェア割り込みを送信する。
【0207】
仮想割り込みが仮想デバイス割り込みである場合、ステップ101においてレジスタから読み取られ、仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれたターゲット割り込み番号と、仮想マシンの識別子とを含む。ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。
【0208】
ステップ102は下記を含む:制御装置が、仮想マシンの識別子とターゲット割り込み番号を中間装置に送信する。
【0209】
ステップ103は下記を含む:中間装置が、仮想マシンの識別子とターゲット割り込み番号に基づいて、仮想マシンの識別子とターゲット割り込み番号に対応する仮想マシンの第1のvCPUの識別子を求めて第2の対応を探索する段階であって、第2の対応は、仮想マシンとターゲット割り込み番号と第1のvCPUの間の対応を記録するために使用される、段階と;仮想マシンの識別子と第1のvCPUの識別子に基づいて、第3の対応から、仮想マシンの識別子と第1のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第3の対応は、ターゲット物理プロセッサ、ターゲット・プロセッサ上で実行される第1のvCPU、および仮想マシンの間の対応を記録するために使用される、段階と;仮想デバイス割り込みを生成する段階とを実行する。
【0210】
ステップ104は下記を含む:中間装置は、ターゲット物理プロセッサに対応する送信装置に仮想デバイス割り込みを送信する。
【0211】
ステップ105は下記を含む:送信装置は、ターゲット物理プロセッサで実行されている第1のvCPUに仮想デバイス割り込みを送信する。
【0212】
ソフトウェアを使用して実装されている制御装置、中間装置、送信装置の機能は、図2ないし図15に対応する実施形態における対応する内容を参照して理解することができ、詳細はここでは再度説明しない。
【0213】
上記は、ソフトウェアを使用して実装される仮想割り込みを処理する方法を記述している。下記は、添付図面を参照して、仮想割り込みを処理する上記の方法を実装する装置を記述する。
【0214】
図17に示されるように、本願のこの実施形態において提供される制御装置20のある実施形態は、下記を含む:制御装置20はチップ・システムに適用し、チップ・システムはさらに、ソース物理プロセッサ、中間装置、送信装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含み、レジスタは仮想割り込みをトリガーするために使用される情報を受け取るように構成され、仮想割り込みをトリガーするために使用される情報はホストマシンまたは仮想マシンに由来する。制御装置20は下記を含む:
仮想割り込みをトリガーするために使用される情報をレジスタから読み取るように構成された読み取りユニット201;および
読み取りユニット201によって読み取られ、仮想割り込みをトリガーするために使用される情報を中間装置に送信するように構成された送信ユニット202であって、仮想割り込みをトリガーするために使用される情報は、仮想割り込みをトリガーするために中間装置によって使用され、仮想割り込みは、送信装置によってターゲット物理プロセッサに送信される、送信ユニット。
【0215】
任意的に、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサであり、レジスタは仮想マシンによって書き込まれた、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成される。仮想ローカル割り込みをトリガーするために使用される情報は、中間装置が仮想ローカル割り込みをトリガーできるようにするために使用され、仮想ローカル割り込みは送信装置によって仮想マシンの第1の仮想プロセッサvCPUに送信され、第1のvCPUはソース物理プロセッサ上で実行される。
【0216】
任意的に、仮想割り込みは仮想ソフトウェア割り込みである。仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによって書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で実行されている仮想マシンのvCPUである。制御装置20は、さらに処理ユニット203を含む。
【0217】
処理ユニット203は、仮想マシンの識別子を取得するように構成されている。
【0218】
送信ユニット202は、仮想マシンの識別子を中間装置に送信するように構成されており、仮想マシンの識別子と第2のvCPUの識別子は、ターゲット物理プロセッサを決定し、仮想ソフトウェア割り込みをトリガーするために中間装置によって使用され、仮想ソフトウェア割り込みは、送信装置によって、ターゲット物理プロセッサの第2のvCPUに送信される。
【0219】
任意的に、仮想割り込みは仮想デバイス割り込みである。仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれるターゲット割り込み番号と仮想マシンの識別子とを含み、ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。仮想マシンの識別子とターゲット割り込み番号は、ターゲット物理プロセッサを決定して仮想デバイス割り込みをトリガーするために中間装置によって使用され、仮想デバイス割り込みは送信装置によってターゲット物理プロセッサの第1のvCPUに送信される。
【0220】
図18に示されるように、本願のある実施形態による中間装置30のある実施形態は下記を含む:中間装置30はチップ・システムに適用され、チップ・システムはさらにソース物理プロセッサ、制御装置、送信装置、ターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含み、該レジスタは仮想割り込みをトリガーするために使用される情報を受信するように構成され、仮想割り込みをトリガーするために使用される情報はホストマシンまたは仮想マシンに由来する。中間装置30は下記を含む:
仮想割り込みをトリガーするために使用される、制御装置からの情報を受信するように構成された受信ユニット301;
仮想割り込みをトリガーするために使用される情報に基づいて仮想割り込みをトリガーするように構成された処理ユニット302;および
送信装置に仮想割り込みを送信するように構成された送信ユニット303であって、仮想割り込みは送信装置によってターゲット物理プロセッサに送信される、送信ユニット。
【0221】
任意的に、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサであり、レジスタは仮想マシンによって書き込まれ、仮想ローカル割り込みをトリガーするために使用される情報を受信するように構成されている。仮想ローカル割り込みをトリガーするために使用される情報は、仮想ローカル割り込みをトリガーするために使用され、仮想ローカル割り込みは送信装置によって仮想マシンの第1の仮想プロセッサvCPUに送信され、第1のvCPUはソース物理プロセッサ上で実行される。
【0222】
任意的に、仮想割り込みは仮想ソフトウェア割り込みである。仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによって書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で実行されている仮想マシンのvCPUである。
【0223】
処理ユニット302は、仮想マシンの識別子と第2のvCPUの識別子に基づいて第1の対応から、仮想マシンの識別子と第2のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第1の対応は、ターゲット物理プロセッサ、ターゲット物理プロセッサ上で実行されている第2のvCPU、仮想マシンの間の対応を記録するために使用される、段階と;仮想ソフトウェア割り込みをトリガーする段階であって、仮想ソフトウェア割り込みは、送信装置によってターゲット物理プロセッサの第2のvCPUに送信される、段階とを実行するように構成されている。
【0224】
任意的に、仮想割り込みは仮想デバイス割り込みであり、仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれるターゲット割り込み番号と仮想マシンの識別子を含む。ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。
【0225】
処理ユニット302は:仮想マシンの識別子とターゲット割り込み番号に基づいて、仮想マシンの識別子とターゲット割り込み番号に対応する仮想マシンの第1のvCPUの識別子を求めて第2の対応を探索する段階であって、第2の対応は、仮想マシンとターゲット割り込み番号と第1のvCPUの間の対応を記録するために使用される、段階と;仮想マシンの識別子と第1のvCPUの識別子に基づいて、第3の対応から、仮想マシンの識別子と第1のvCPUの識別子に対応するターゲット物理プロセッサを決定する段階であって、第3の対応は、ターゲット物理プロセッサ、ターゲット・プロセッサ上で実行される第1のvCPU、および仮想マシンの間の対応を記録するために使用される、段階と;仮想デバイス割り込みをトリガーする段階であって、仮想デバイス割り込みは、送信装置によってターゲット物理プロセッサの第1のvCPUに送信される、段階とを実行するように構成される。
【0226】
任意的に、処理ユニット302は、仮想マシンの識別子に基づいてアドレス・レジスタを見出し、アドレス・レジスタ内のアドレスに基づいてメモリから第2の対応を取得するようにさらに構成される。ここで、アドレス・レジスタは、前記メモリにおける第2の対応のアドレスと仮想マシンの識別子を格納するように構成される。
【0227】
図19に示されるように、本願のある実施形態による送信装置40のある実施形態は下記を含む:送信装置40はチップ・システムに適用され、チップ・システムはさらに、ソース物理プロセッサ、中間装置、制御装置、およびターゲット物理プロセッサを含む。ソース物理プロセッサは、ホストマシンまたは仮想マシンを実行するように構成される。制御装置はレジスタを含み、レジスタは仮想割り込みをトリガーするために使用される情報を受信するように構成され、仮想割り込みをトリガーするために使用される情報はホストマシンまたは仮想マシンに由来する。送信装置40は下記を含む:
中間装置から仮想割り込みを受信するように構成された受信装置401;および
仮想割り込みをターゲット物理プロセッサに送信するように構成された送信ユニット402。
【0228】
任意的に、仮想割り込みは仮想ローカル割り込みであり、ターゲット物理プロセッサとソース物理プロセッサは同じ物理プロセッサである。送信ユニット402は、仮想マシンの第1の仮想プロセッサvCPUに仮想ローカル割り込みを送信するように構成されており、第1のvCPUはソース物理プロセッサ上で動作する。
【0229】
任意的に、仮想割り込みは仮想ソフトウェア割り込みである。仮想割り込みをトリガーするために使用される情報は、仮想マシンの第1のvCPUによって書き込まれた第2のvCPUの識別子を含み、第2のvCPUはターゲット物理プロセッサ上で実行されている仮想マシンのvCPUである。
【0230】
送信ユニット402は:ターゲット物理プロセッサ上で実行されている第2のvCPUに仮想ソフトウェア割り込みを送信するように構成されている。
【0231】
任意的に、仮想割り込みは仮想デバイス割り込みであり、仮想割り込みをトリガーするために使用される情報は、ホストマシンによってレジスタに書き込まれたターゲット割り込み番号と仮想マシンの識別子を含む。ターゲット割り込み番号は、ホストマシンがハードウェア・デバイスをシミュレートするときにトリガーされる割り込みの識別子である。
【0232】
送信ユニット402は:ターゲット物理プロセッサ上で実行されている第1のvCPUに仮想デバイス割り込みを送信するように構成されている。
【0233】
任意的に、送信ユニット402は、ターゲット物理プロセッサのペンディング・レジスタに仮想割り込みを書き込むように構成されており、ペンディング・レジスタは、ターゲット物理プロセッサによって実行される手順のコマンドを受信するように構成されている。
【0234】
図17ないし図19において説明されている解決策については、理解のために、図2ないし図15に対応する実施形態における対応する内容を参照されたい。詳細はここでは再度説明しない。
【0235】
図20は、本願のある実施形態によるコンピュータ・デバイス50の可能な論理構造の概略図である。コンピュータ・デバイス50は、図17ないし図19に記載される制御装置、中間装置、または送信装置を含みうる。コンピュータ・デバイス50は、プロセッサ501、通信インターフェース502、メモリ503、バス504を含む。プロセッサ501、通信インターフェース502、メモリ503は、バス504を通じて相互に接続されている。本願のこの実施形態では、プロセッサ501は、コンピュータ・デバイス50のアクションを制御および管理するように構成されている。たとえば、プロセッサ501は、図16の方法実施形態におけるステップ101または103を実行するように構成されている。メモリ503は、コンピュータ・デバイス50のプログラムコードとデータを記憶するように構成されている。通信インターフェース502は、図16の方法実施形態におけるステップ102、104または105を実行するように構成されてもよい。
【0236】
さらに、プロセッサ501は、中央処理装置、汎用プロセッサ、デジタル信号プロセッサ、特定用途向け集積回路、フィールドプログラマブルゲートアレイ、別のプログラマブルロジックデバイス、トランジスタロジックデバイス、ハードウェアコンポーネント、またはそれらの任意の組み合わせであってもよい。プロセッサは、本願において開示された内容を参照して記述されたさまざまな例示的な論理ブロック、モジュール、および回路を実装または実行することができる。あるいはまた、プロセッサ501は、コンピューティング機能を実装するプロセッサの組み合わせ、たとえば、一つまたは複数のマイクロプロセッサの組み合わせ、またはデジタル信号プロセッサとマイクロプロセッサの組み合わせであってもよい。バス504は、周辺コンポーネント相互接続規格(Peripheral Component Interconnect、PCI)バス、拡張業界標準アーキテクチャー(Extended Industry Standard Architecture、EISA)バスなどでありうる。バスは、アドレスバス、データバス、制御バスなどに分類されうる。表現の簡単のために、1本の太線のみが図20のバスを表すためであるが、これはバスが一つだけであるとか、バスのタイプが一つだけであるという意味ではない。
【0237】
本願の別の実施形態では、コンピュータが読み取り可能な記憶媒体がさらに提供される。コンピュータが読み取り可能な記憶媒体は、コンピュータ実行可能な命令を格納する。デバイスのプロセッサがコンピュータ実行可能な命令を実行すると、デバイスは、図16の制御装置、中間装置、または送信装置によって実行される仮想割り込み処理方式を実行する。
【0238】
本願の別の実施形態では、コンピュータ・プログラム・プロダクトがさらに提供される。コンピュータ・プログラム・プロダクトはコンピュータ実行可能な命令を含み、コンピュータ実行可能な命令はコンピュータ読み取り可能な記憶媒体に格納される。デバイスのプロセッサがコンピュータ実行可能な命令を実行すると、デバイスは図16の制御装置、中間装置、または送信装置によって実行される仮想割り込み処理方法を実行する。
【0239】
本願の別の実施形態は、チップ・システムをさらに提供する。チップ・システムは、ソース物理プロセッサ、制御装置、送信装置、ターゲット物理プロセッサを含む。制御装置は、図2ないし図15の実施形態において説明した制御装置であり、送信装置は、図2ないし図15の実施形態において説明した送信装置である。
【0240】
ある可能な実施形態では、チップ・システムは、図2ないし図15の実施形態において説明した中間装置をさらに含んでいてもよい。
【0241】
ある可能な実施形態では、チップ・システムはプロセッサであり、ソース物理プロセッサとターゲット物理プロセッサはプロセッサ内の物理コアであり、制御装置は前記プロセッサ内に位置し、ソース物理プロセッサに結合されたコンポーネントであり、送信装置は前記プロセッサ内に位置するコンポーネントであり、ターゲット物理プロセッサに結合されている。プロセッサの任意の物理コアが仮想割り込みの受信器として使用されうることが理解されうる。したがって、物理コアは、ソース物理プロセッサとして、またターゲット物理プロセッサとして使用されうる。対応して、物理コアに結合されたものは、制御装置と送信装置の両方を含むことができる。
【0242】
当業者は、本仕様書に開示されている実施形態において記載されている例と組み合わせて、ユニットおよびアルゴリズムステップが、電子ハードウェアまたはコンピュータソフトウェアと電子ハードウェアの組み合わせによって実装されうることを認識しうる。機能がハードウェアによって実行されるかソフトウェアによって実行されるかは、技術的解決策の具体的な用途および設計上の制約条件に依存する。当業者は、それぞれの具体的な用途のために、記述された機能を実装するために、種々の方法を使用することができるが、その実装が本願の実施形態の範囲を超えると考えるべきではない。
【0243】
簡便な記述の目的のため、上記のシステム、装置、およびユニットの詳細な動作プロセスについては、上記の方法実施形態における対応するプロセスを参照することができ、詳細についてはここでは再度説明しないことが、当業者には明確に理解されうる。
【0244】
本願の実施形態において提供されるいくつかの実施形態では、開示されたシステム、装置および方法が他の仕方で実装されうることが理解されるべきである。たとえば、記載された装置実施形態は単に例である。たとえば、ユニットへの分割は単に論理的な機能分割であり、実際の実装では他の分割であってもよい。たとえば、複数のユニットまたはコンポーネントが組み合わされてもよく、他のシステムに統合されてもよく、あるいは一部の機能が無視されたり、実行しなかったりしてもよい。さらに、表示されているまたは議論されている相互結合や直接結合または通信接続は、いくつかのインターフェースを通じて実装されてもよい。装置またはユニットの間の間接的な結合または通信接続は、電気的、機械的、または別の形で実装されてもよい。
【0245】
別個の部分として記述されるユニットは、物理的に別個であってもなくてもよい。ユニットとして表示される部分は、物理的なユニットであってもなくてもよい。言い換えれば、1つの位置にあってもよく、あるいは複数のネットワークユニット上に分散されていてもよい。実施形態の解決策の目的を達成するために、実際の要件に基づいてユニットの一部または全部が選択されうる。
【0246】
また、本願の実施形態における機能ユニットは、1つの処理ユニットに統合されてもよく、あるいは各ユニットが物理的に単独で存在してもよく、あるいは2つ以上のユニットが1つのユニットに統合される。
【0247】
機能がソフトウェア機能ユニットの形で実装され、独立した製品として販売または使用される場合、それらの機能はコンピュータが読み取り可能な記憶媒体に記憶されてもよい。そのような理解に基づいて、本願の実施形態の技術的解決策は本質的に、または従来の技術に寄与する部分は、または技術的解決策の一部は、ソフトウェアプロダクトの形で実装されてもよい。コンピュータソフトウェアプロダクトは記憶媒体に格納され、コンピュータ・デバイス(これは、パーソナルコンピュータ、サーバー、またはネットワークデバイスなどでありうる)に、本願の実施形態において説明されている方法のステップの全部または一部を実行するよう命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスクドライブ、読み出し専用メモリ(Read-Only Memory、ROM)、ランダムアクセスメモリ(Random Access Memory、RAM)、磁気ディスク、光ディスクなど、プログラムコードを格納できる任意の媒体を含む。
【0248】
上記の説明は、単に本願の実施形態の個別的な実装であり、本願の実施形態の保護範囲を限定することは意図されていない。本願の実施形態で開示されている技術的範囲内で当業者によって容易に割り出される変形または置換は、本願の実施形態の保護範囲内にはいる。したがって、本願の実施形態の保護範囲は、クレームの保護範囲に従うべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20