鬼佬大哥大
  • / 24
  • 下載費用:30 金幣  

針對虛擬處理器處理并路由中斷.pdf

關 鍵 詞:
針對 虛擬 處理器 處理 路由 中斷
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
摘要
申請專利號:

CN201480027941.2

申請日:

2014.04.24

公開號:

CN105210041A

公開日:

2015.12.30

當前法律狀態:

實審

有效性:

審中

法律詳情: 實質審查的生效IPC(主分類):G06F 9/48申請日:20140424|||公開
IPC分類號: G06F9/48 主分類號: G06F9/48
申請人: ARM 有限公司
發明人: 安東尼·耶布森; 安德魯·約翰·特納; 馬修·呂西安·伊萬斯; 格勒瑟·詹姆斯·埃文斯; 亞當·詹姆斯·麥克尼內
地址: 英國劍橋
優先權: 2013.05.21 US 13/898,816
專利代理機構: 北京東方億思知識產權代理有限責任公司 11258 代理人: 李曉冬
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201480027941.2

授權公告號:

|||

法律狀態公告日:

2016.06.08|||2015.12.30

法律狀態類型:

實質審查的生效|||公開

摘要

一種用于控制對在數據處理裝置處接收的中斷進行路由和處理的中斷控制器,該數據處理裝置包括至少一個物理處理單元和存儲器,該至少一個物理處理單元被配置為運行多個虛擬處理器中的至少一個虛擬處理器,該存儲器被配置為存儲至少一個虛擬未決表格,該虛擬未決表格用于存儲針對多個虛擬處理器中對應的虛擬處理器的未決虛擬中斷。中斷控制器包括:包括對應于至少一個物理處理單元的至少一個數據存儲設備的再分配電路,至少一個數據存儲設備被配置為存儲針對虛擬未決表格的指針和針對未決表格的指針,該虛擬未決表格被配置為存儲針對當前在對應的物理處理單元上運行的虛擬處理器的當前未決虛擬中斷,該未決表格被配置為存儲針對對應的物理處理單元的當前未決物理中斷;被配置為接收用于中斷虛擬處理器的虛擬中斷的輸入;和控制電路。該控

權利要求書

權利要求書
1.  一種用于控制對在數據處理裝置處接收的中斷進行路由和處理的中斷控制器,所述數據處理裝置包括至少一個物理處理單元和存儲器,所述至少一個物理處理單元被配置為運行多個虛擬處理器中的至少一個虛擬處理器,所述存儲器被配置為存儲至少一個虛擬未決表格,該至少一個虛擬未決表格用于存儲針對所述多個虛擬處理器中對應的虛擬處理器的未決虛擬中斷,所述中斷控制器包括:
再分配電路,該再分配電路包括對應于所述至少一個物理處理單元的至少一個數據存儲設備,所述至少一個數據存儲設備被配置為存儲針對虛擬未決表格的指針和針對未決表格的指針,所述虛擬未決表格被配置為存儲針對當前在對應的物理處理單元上運行的虛擬處理器的當前未決虛擬中斷,所述未決表格被配置為存儲針對所述對應的物理處理單元的當前未決物理中斷;
輸入,該輸入被配置為接收用于中斷虛擬處理器的虛擬中斷;
控制電路,該控制電路被配置為:
響應于接收到所述虛擬中斷,訪問所述再分配電路中對應于當前與所述虛擬處理器相關聯的所述至少一個物理處理單元的至少一個數據存儲設備;
從所述數據存儲設備中確定所述虛擬中斷的虛擬處理器當前是否在所述物理處理單元上運行;以及
如果是,則將所述虛擬中斷添加到由所述再分配電路指向的虛擬未決表格中;以及
如果否,則將所述虛擬中斷存儲在針對所述虛擬處理器的虛擬未決表格中,該虛擬未決表格被存儲在所述存儲器中。

2.  如權利要求1所述的中斷控制器,其中所述控制電路被配置為:響應于從所述數據存儲設備中確定所述虛擬處理器當前沒有在所述物理處理單元上運行,生成物理中斷,并將所述物理中斷存儲到由所述再分配電路中被訪問的數據存儲設備指向的未決表格中,所述物理中斷指示針對當前 沒有運行的虛擬處理器存在未決中斷。

3.  如權利要求2所述的中斷控制器,其中所述控制電路被配置為設置存儲在所述未決表格中的所述物理中斷的優先級,在配置過程中,所述優先級是依據所述虛擬中斷的優先級和軟件對所述虛擬處理器設置的未決虛擬中斷的優先級中的至少一個來設置的。

4.  如任意前述的權利要求所述的中斷控制器,其中所述數據處理裝置包括多個處理單元,并且所述再分配電路包括多個所述數據存儲設備,所述多個數據存儲設備中的每一個數據存儲設備與所述多個處理單元之一相對應。

5.  如權利要求4所述的中斷控制器,其中所述控制電路被配置為:響應于接收到所述虛擬中斷,訪問存儲在所述存儲器中的一組分層表格,以確定當前與所述虛擬處理器相關聯的物理處理單元。

6.  如權利要求5所述的中斷控制器,其中所述一組分層表格包括設備表格、中斷轉換表格和虛擬處理單元表格,所述控制電路被配置為訪問由所述虛擬中斷標識的所述設備表格中的位置,所訪問的位置指示要訪問的中斷轉換表格的部分,并訪問由所述設備表格標識的所述中斷轉換表格的所述部分中由所述虛擬中斷標識的位置,存儲在所述中斷轉換表格中所訪問的位置中的數據提供對所述虛擬處理單元表格中的位置的指示,該位置存儲指示要被所述虛擬中斷所中斷的所述虛擬處理器當前與所述多個處理單元中的哪個處理單元相關聯的數據。

7.  如權利要求5或權利要求6所述的中斷控制器,包括與所述一組分層表格相關聯的另外的表格,該另外的表格用于存儲關于所述虛擬中斷的信息,所述信息包括所述虛擬中斷的優先級。

8.  如任意前述的權利要求所述的中斷控制器,所述再分配電路包括與所述多個數據存儲設備相關聯的多個緩存,所述多個緩存被配置為存儲當前在所述對應的物理處理單元上運行的所述虛擬處理器的虛擬未決表格。

9.  如任意前述的權利要求依據權利要求4時所述的中斷控制器,其中所述再分配電路包括多個單元,每個單元包括所述至少一個數據存儲設備中的一個數據存儲設備,并且每個數據存儲設備與所述多個處理單元中的 一個處理單元相關聯,所述再分配電路的所述單元中的每個單元被配置為具有對所述存儲器中存儲當前與所述對應的物理處理單元相關聯的虛擬處理器的虛擬未決表格的部分的唯一寫入訪問。

10.  如權利要求9所述的中斷控制器,所述中斷控制器被配置為響應于接收到移動命令,通過如下操作將目標為一個虛擬處理器的虛擬中斷移動到不同的虛擬處理器:
針對所述一個虛擬處理器和所述不同的虛擬處理器二者,確定所述虛擬未決表格的基地址和當前與所述虛擬處理器相關聯的物理處理單元;
訪問所述再分配電路中對應于當前與所述一個虛擬處理器相關聯的物理處理單元的單元,以及將所述虛擬未決表格的基地址和關于所述不同的虛擬處理器相關聯的物理處理單元的數據發送到所述再分配電路;
訪問所述再分配電路中對應于當前與所述不同的虛擬處理器相關聯的物理處理單元的單元;
所述再分配電路被配置為根據接收到的所述數據,清除針對所述一個虛擬處理器的虛擬未決表格中的所述虛擬中斷的未決狀態;以及
用所述未決虛擬中斷更新所述不同的虛擬處理的所述虛擬未決表格。

11.  如權利要求10所述的中斷控制器,其中所述中斷控制器被配置為通過從所述虛擬未決表格中刪除所述中斷來清除所述虛擬中斷的未決狀態。

12.  如權利要求10或權利要求11所述的中斷控制器,其中對應于當前與所述不同的虛擬處理器相關聯的物理處理單元的所述再分配單元被配置為:確定所述虛擬中斷的虛擬處理器當前是否在所述物理處理單元上運行,如果沒有在運行,則將物理中斷存儲到由所述再分配電路中的被訪問的數據存儲設備指向的未決表格中,所述物理中斷指示針對當前沒有在運行的虛擬處理器存在未決虛擬中斷。

13.  如權利要求10-12中任一權利要求所述的中斷控制器,所述中斷控制器被配置為通過在所述移動命令之后發出阻礙命令來響應所述移動命令,以使得對所述再分配電路的讀取訪問直到由所述移動命令觸發的對所述再分配電路的訪問完成為止才能完成。

14.  如任意前述的權利要求依據權利要求5時所述的中斷控制器,所述中斷控制器被配置為響應于接收到在物理處理單元之間移動的命令,即發送將與所述多個物理處理單元中的一個物理處理單元相關聯的虛擬處理器移動到所述多個物理處理單元中不同的物理處理單元的信號,所述中斷控制器:
訪問所述再分配電路中對應于最初與所述虛擬處理器相關聯的所述物理處理單元的數據存儲設備,并從所述指針中確定所述虛擬處理器當前是否在運行,如果是,則所述再分配電路被配置為將來自由所述指針指向的虛擬未決表格的數據寫入存儲在存儲器中的對應的虛擬未決表格;以及
更新所述分層表格,以使得所述虛擬處理器與所述多個物理處理單元中所述不同的物理處理單元相關聯。

15.  如權利要求14所述的中斷控制器,其中所述中斷控制器被配置為停止向正被移動的虛擬處理器發送任何新接收的中斷,直到完成所述分層表格的更新。

16.  如權利要求15所述的中斷控制器,其中所述中斷控制器被配置為在所述在物理處理單元之間移動的命令之后發出阻礙命令,所述中斷控制器在發出另外的中斷之前等待對于所述阻礙命令的響應,所述響應指示已經完成對所述分層表格的更新。

17.  一種數據處理裝置,包括:
至少一個物理處理單元,所述至少一個物理處理單元被配置為運行多個虛擬處理器中的至少一個虛擬處理器;
存儲器,所述存儲器被配置為存儲至少一個虛擬未決表格,該虛擬未決表格用于存儲針對所述多個虛擬處理器中相應的虛擬處理器的未決虛擬中斷;以及
中斷控制器,所述中斷控制器用于根據任意前述的權利要求來控制和處理中斷。

18.  如權利要求17所述的數據處理裝置,其中所述存儲器被配置為存儲用于控制所述中斷的一組分層表格,所述分層表格包括設備表格、中斷轉換表格和虛擬處理單元表格,所述表格可響應于所述中斷中的一個中斷 而被訪問,所述中斷指示所述設備表格和所述中斷轉換表格中要訪問的位置;
所述設備表格存儲針對所述中斷轉換表格的指針;
所述中斷轉換表格存儲針對所述虛擬處理單元表格的指針和中斷標識符;以及
所述虛擬處理單元表格存儲指示如下內容的數據:將被所述虛擬中斷所中斷的虛擬處理器當前與所述多個處理單元中的哪個處理單元相關聯。

19.  一種控制對在數據處理裝置處接收的中斷進行路由和處理的方法,所述數據處理裝置包括至少一個物理處理單元和存儲器,所述至少一個物理處理單元被配置為運行多個虛擬處理器中的至少一個虛擬處理器,所述存儲器被配置為存儲至少一個虛擬未決表格,該虛擬未決表格用于存儲針對所述多個虛擬處理器中相應的虛擬處理器的未決虛擬中斷,所述方法包括如下步驟:
接收用于中斷虛擬處理器的虛擬中斷;
確定所述至少一個物理處理單元中當前與所述虛擬處理器相關聯的物理處理單元;
訪問再分配電路中對應于當前與所述虛擬處理器相關聯的所述至少一個物理處理單元的數據存儲設備;
從所述數據存儲設備中確定所述虛擬中斷的虛擬處理器當前是否在所述至少一個物理處理單元上運行;
如果是,則將所述虛擬中斷添加到由所述再分配電路指向的虛擬未決表格中;以及
如果否,則將所述虛擬中斷存儲在針對所述虛擬處理器的虛擬未決表格中,該虛擬未決表格被存儲在所述存儲器中。

20.  如權利要求19所述的方法,所述方法還包括響應于從所述數據存儲設備中確定所述虛擬處理器當前沒有在所述物理處理單元上運行,將中斷存儲到由所述再分配電路中被訪問的數據存儲設備指向的未決表格中,所述中斷指示針對當前沒有在運行的虛擬處理器存在未決中斷。

21.  如權利要求19或權利要求20所述的方法,還包括對響應于接收 到移動命令來將接收到的虛擬中斷從一個虛擬處理器移動到不同的虛擬處理器的進一步步驟:
針對所述一個虛擬處理器和所述不同的虛擬處理器,確定所述虛擬未決表格的基地址,并確定當前與所述虛擬處理器相關聯的物理處理單元;
訪問所述再分配電路中對應于當前與所述一個虛擬處理器相關聯的物理處理單元的數據存儲設備,并且將所述虛擬未決表格的基地址和關于與所述不同的虛擬處理器相關聯的物理處理單元的數據發送到所述再分配電路;
清除所述一個虛擬處理器的虛擬未決表格中的所述虛擬中斷的未決狀態;以及
訪問所述再分配電路中對應于當前與所述不同的虛擬處理器相關聯的物理處理單元的數據存儲設備,并且用所述未決虛擬中斷更新所述不同的虛擬處理的虛擬未決表格。

22.  一種用于控制處理裝置以執行根據權利要求19-21的任一權利要求的方法的步驟的計算機程序。

23.  一種用于控制對在數據處理裝置處接收的中斷進行路由和處理的中斷控制裝置,所述數據處理裝置包括用于運行多個虛擬處理裝置中的至少一個虛擬處理裝置的至少一個物理處理裝置和用于存儲至少一個虛擬未決表格的存儲器裝置,該虛擬未決表格用于存儲針對所述多個虛擬處理裝置中相應的虛擬處理裝置的未決虛擬中斷,所述中斷控制裝置包括:
再分配裝置,該再分配裝置包括對應于所述至少一個物理處理裝置的至少一個數據存儲裝置,所述至少一個數據存儲裝置用于存儲針對虛擬未決表格的指針和針對未決表格的指針,該虛擬未決表格被配置為存儲針對當前在對應的物理處理裝置上運行的虛擬處理裝置的當前未決虛擬中斷,該未決表格被配置為存儲針對所述對應的物理處理裝置的當前未決物理中斷;
輸入裝置,用于接收用于中斷虛擬處理器的虛擬中斷;
控制裝置,用于:
響應于接收到所述虛擬中斷,訪問所述再分配電路中對應于當前 與所述虛擬處理器相關聯的至少一個物理處理單元的至少一個數據存儲裝置;
從所述數據存儲裝置中確定所述虛擬中斷的虛擬處理器當前是否在所述物理處理單元上運行;以及
如果是,則將所述虛擬中斷添加到由所述再分配電路指向的虛擬未決表格中;以及
如果否,則將所述虛擬中斷存儲在針對所述虛擬處理器的虛擬未決表格中,該虛擬未決表格被存儲在所述存儲器中。

說明書

說明書針對虛擬處理器處理并路由中斷
技術領域
技術領域涉及數據處理,更具體地涉及可以運行多個虛擬處理器和中斷控制電路以針對虛擬處理器路由中斷的數據處理器。
背景技術
在可以運行各種虛擬處理器的數據處理裝置的領域中,控制和路由針對虛擬處理器的中斷是很復雜的,并且需要大量的循環來解決。通常在具有同時運行的多個處理器的系統中,多個處理器中的一些是虛擬處理器,超級管理器控制中斷并且確定將這些中斷發送到哪里。
這通常使用中斷轉換表格來完成,中斷轉換表格定義通過軟件查看到的中斷的ID和中斷應該被發送到的處理器。在針對虛擬處理器存在中斷時,該表格將接收到的虛擬中斷映射到物理中斷。隨后超級管理器需要完成反向映射,并隨后在虛擬機器當前不活動的情況下不得不調度該虛擬機器。該反向映射通常需要大量的循環。此外,在存在很多虛擬處理器的情況下,存儲這些映射的中斷轉換表格可能是非常大的。
期望能夠利用較低的軟件性能開銷并且不需要存儲大量的數據來處理虛擬中斷。
發明內容
第一方面提供了一種中斷控制器,該中斷控制器用于控制對在數據處理裝置處接收的中斷的路由和處理,所述數據處理裝置包括至少一個物理處理單元和存儲器,所述至少一個物理處理單元被配置為運行多個虛擬處理器中的至少一個虛擬處理器,所述存儲器被配置為存儲至少一個虛擬未決表格,該虛擬未決表格用于存儲針對所述多個虛擬處理器中相應的一個虛擬處理器的未決虛擬中斷,所述中斷控制器包括:
再分配電路,該再分配電路包括對應于所述至少一個物理處理單元的至少一個數據存儲設備,所述至少一個數據存儲設備被配置為存儲針對虛擬未決表格的指針和針對未決表格的指針,該虛擬未決表格被配置為存儲針對當前在對應的物理處理單元上運行的虛擬處理器的當前未決虛擬中斷,該未決表格被配置為存儲針對所述對應的物理處理單元的當前未決物理中斷;
輸入,該輸入被配置為接收用于中斷虛擬處理器的虛擬中斷;
控制電路,該控制電路被配置為:
響應于接收到的所述虛擬中斷,訪問所述再分配電路中與當前關聯于所述虛擬處理器的所述至少一個物理處理單元相對應的所述至少一個數據存儲設備;以及
從所述數據存儲設備中確定所述虛擬中斷的所述虛擬處理器當前是否在所述物理處理單元上運行;以及
如果是,則將所述虛擬中斷添加到由所述再分配電路指向的所述虛擬未決表格中;并且
如果否,則將所述虛擬中斷存儲在針對所述虛擬處理器的所述虛擬未決表格中,該虛擬未決表格被存儲在所述存儲器中。
本文描述的技術認為將虛擬中斷發送到當前不活動的虛擬處理器不是簡單的,并且對此的傳統解決方案需要有效的軟件介入。本發明認為存在與處理單元相關聯的指示(一個或多個)虛擬處理器中的哪個當前在該處理單元上運行的電路時,訪問該電路可以提供有關該虛擬處理器的當前狀態。此外,在存儲器中存在用于存儲還針對當前未運行的虛擬處理器的未決虛擬中斷的虛擬未決表格時,如果虛擬處理器當前不活動,則接收的虛擬中斷可以被路由到適當的表格,并且該中斷可以在稍后虛擬處理器被激活時被處理。當虛擬處理器是活動的時,該中斷可以經由當前正被使用的虛擬未決表格被路由到該虛擬處理器。以這種方式,提供了一種不需要有效的軟件介入的簡單解決方案,該解決方案處理虛擬中斷并且允許這些虛擬中斷被存儲在適當的未決表格中,而不用考慮將被中斷的虛擬處理器當前是否是活動的。
在一些實施例中,響應于從所述數據存儲設備中確定的所述虛擬處理器當前未在所述物理處理單元上運行,所述控制電路被配置為生成物理中斷,并將所述物理中斷存儲到由所述再分配電路中被訪問的數據存儲設備指向的所述未決表格中,所述物理中斷指示針對當前未運行的虛擬處理器存在未決中斷。
雖然將當前不活動的虛擬處理器的未決虛擬中斷簡單地存儲到存儲器中的表格中足以,但是向處理器發送針對該虛擬處理器的中斷已經到達的信號,以使得處理器可以在其認為適當的情況下決定激活該虛擬處理器,這會更有優勢。因此,在一些實施例中,中斷控制器中的控制電路會生成物理中斷,并將其存儲到由再分配電路中的訪問數據存儲設備指向的未決表格中。該中斷指示針對當前未運行的虛擬處理器存在未決中斷,并且處理器可以從中確定是否開始運行虛擬處理器。
在一些實施例中,所述控制電路被配置為設置存儲在所述未決表格中的所述物理中斷的優先級,在配置過程中依據所述虛擬中斷的優先級和由軟件對所述虛擬處理器設置的未決虛擬中斷的優先級中的至少一個來設置所述優先級。
設置存儲在未決表格中的物理中斷的優先級是有優勢的,這使得處理可以確定是否采用該中斷。物理中斷的優先級可以取決于虛擬中斷的優先級,這使得重要的虛擬中斷可以被快速采用。替代地和/或另外地,這可以取決于設備的配置,該設備被設置為以優先次序的方式或其他的方式排序針對特定虛擬處理器接收的虛擬中斷。在任意情況中,物理中斷對于處理器充當指示器,指示虛擬處理器等待中斷,并且該指示器還提供快速采用該中斷是如何重要的一些指示或其他。
在一些實施例中,所述數據處理裝置包括多個處理單元,并且所述再分配電路包括多個所述數據存儲設備,所述多個數據存儲設備中的每一個數據存儲設備與所述多個處理單元之一相對應。
雖然可能是單一的數據處理單元運行多個虛擬處理器,但是在許多實施例中會有多個處理單元并且會有具有與處理單元中的每一個相對應的數據存儲設備的再分配電路。因此,中斷控制器會訪問與對應的處理單元相 關聯的再分配電路,其中該對應的處理單元與虛擬處理器相關聯。
在一些實施例中,所述控制電路被配置為響應于接收到所述虛擬中斷來訪問存儲在所述存儲器中的一組分層表格,從而確定當前與所述虛擬處理器相關聯的物理處理器單元。
控制電路需要確定虛擬處理器相關聯的是不同物理處理單元中的哪一個,以便訪問再分配電路中的適當的數據存儲設備。這可以使用存儲在存儲器中的一組分層表格來完成,該組分層表格存儲關于特定虛擬處理器當前與哪個處理單元相關聯的信息。
在一些實施例中,所述數據處理裝置包括與所述一組分層表格相關聯的另外的表格,用于存儲有關所述虛擬中斷的信息,所述信息包括所述虛擬中斷的優先級。
在與分層表格分開的表格中存儲有關虛擬中斷的數據是有優勢的。路由中斷需要分層表格,而分開的表格存儲了其他信息,通常是諸如中斷的優先級之類的配置信息。這樣做的優勢是分開的表格可以位于虛擬存儲器內,該虛擬存儲器是由在虛擬處理器上運行的OS從超級管理器分配給該虛擬處理器的池中分配的存儲器。這允許該表格可以直接被虛擬處理器訪問,從而允許該表格無需超級管理器的介入而被更新。
在一些實施例中,所述一組分層表格包括設備表格、中斷轉換表格、和虛擬處理單元表格,所述控制電路被配置為訪問由所述虛擬中斷標識的所述設備表格中的位置,所述訪問的位置指示要訪問的中斷轉換表格的部分,并訪問在由所述設備表格標識的所述中斷轉換表格的所述部分中由所述虛擬中斷標識的位置,存儲在所述中斷轉換表格中的所述訪問的位置中的數據提供了所述虛擬處理單元表格中的位置的指示,該位置存儲了指示要被所述虛擬中斷進行中斷的所述虛擬處理器當前與所述多個處理單元中哪個處理單元相關聯的數據。
分層表格組可以包括三個表格,這三個表格包括設備表格,該設備表格包括關于可以從其接收中斷的系統的不同虛擬設備的信息。設備表格被用來索引到轉換表格,該轉換表格存儲關于中斷類型的信息,并提供到虛擬處理單元表格的指針,該虛擬處理單元表格提供關于虛擬處理器當前與 哪個物理處理單元相關聯的信息。就這方面而言,接收的中斷會具有設備ID和數據,該設備ID指示中斷從該設備被接收,數據是對如何索引到中斷轉換表格的指示。該設備ID允許索引到設備表格,從設備表格確定中斷轉換表格中對應于該設備的部分的大小和基地址。該基地址與中斷的數據一起被用來索引到中斷轉換表格并確定中斷的類型是虛擬的還是物理的,并且還查找用于指向虛擬處理單元表格的指針,從該虛擬處理單元表格可以發現再分配電路要被訪問的、對應于適當的物理處理單元的地址還有存儲器中虛擬未決表格的地址。以這種方式,存儲在這些分層表格中的信息允許在沒有軟件介入的情況下將中斷發送至每個虛擬處理器。
在一些實施例中,所述再分配電路包括與所述多個數據存儲設備相關聯的多個緩存,所述多個緩存被配置為存儲當前在所述對應的物理處理單元上運行的所述虛擬處理器的所述虛擬未決表格。
在虛擬處理器是活動的時,再分配電路可以從對應于活動的虛擬處理器的虛擬未決表格中讀取數據,并在中斷控制器中將數據存儲到與其相關聯的緩存中。以這種方式,虛擬未決表格的信息可以很容易地被訪問,并且存儲在其中的物理中斷可以根據它們的優先級被激活。
在一些實施例中,所述再分配電路包括多個單元,每個單元包括所述至少一個數據存儲設備中的一個數據存儲設備,并且每個數據存儲設備與所述多個處理單元中的一個處理單元相關聯,所述再分配電路的所述單元中的每個單元被配置為能對所述存儲器中存儲針對當前與所述對應的物理處理單元相關聯的虛擬處理器的所述虛擬未決表格的部分進行唯一寫入訪問。
再分配電路可以以單元的方式排列,每個單元對應于特定的物理處理單元。再分配電路的單元中的每個單元可以被配置為能對所述存儲器中存儲針對當前與對應的物理處理單元相關聯的虛擬處理器的虛擬未決表格的部分進行唯一寫入訪問。以這種方式,再分配電路具有這些虛擬未決表格的所有權,并且可以用同時沒有其他人會嘗試更新這些表格的認識來將其安全地更新。這移除了對更新的任何原子性要求,并允許經由該再分配電路對要被路由的虛擬中斷進行控制,這樣允許再分配電路按需更新表格, 而且在有移動的需求時移動它們。以這種方式,虛擬中斷可以以安全而且簡單的方式被控制。
在一些實施例中,所述中斷控制器被配置為響應于接收到移動命令來通過如下操作以對目標為一個虛擬處理器的虛擬中斷進行移動從而將不同的虛擬處理器作為目標:
針對所述一個虛擬處理器和所述不同的虛擬處理器二者,確定所述虛擬未決表格的基地址和當前與所述虛擬處理器相關聯的物理處理器單元;
訪問所述再分配電路中對應于當前與所述一個虛擬處理器相關聯的所述物理處理器單元的單元,以及將所述虛擬未決表格的基地址和關于所述不同的虛擬處理器相關聯的所述物理處理單元的數據發送到所述再分配電路;
訪問所述再分配電路中對應于當前與所述不同的虛擬處理器相關聯的所述物理處理器單元的單元;
根據接收到的所述數據所述再分配電路被配置為清除針對所述一個虛擬處理器的所述虛擬未決表格中的所述虛擬中斷的未決狀態;以及
用所述未決虛擬中斷更新所述不同的虛擬處理的虛擬未決表格。
在一個示例中,在目標為一個虛擬處理器的虛擬中斷需要被移動到不同的虛擬處理器情況下,該唯一寫入訪問可能很便捷。這可以通過更新虛擬未決表格的簡單方式來完成,由于再分配電路是對存儲器的該部分具有寫入訪問的唯一電路,所以可以經由再分配電路來路由命令,并且可以以簡單且有效的方式來移動虛擬未決中斷。
在一些實施例中,所述中斷控制器被配置為通過從所述虛擬未決表格中刪除所述中斷來清除所述虛擬中斷的未決狀態。
虛擬中斷的未決狀態可以通過從未決表格中刪除該虛擬中斷來被簡單地清除。其隨后可以在不同的表格中被設置。
在一些實施例中,對應于當前與所述不同的虛擬處理器相關聯的所述物理處理器單元的所述再分配單元被配置為確定所述虛擬中斷的所述虛擬處理器當前是否在所述物理處理單元上運行,如果否,則將物理中斷存儲到由所述再分配電路中的所述訪問的數據存儲設備指向的所述未決表格 中,所述物理中斷指示針對當前未運行的虛擬處理器存在未決虛擬中斷。
當移動虛擬中斷時,針對與現在已經接收中斷的虛擬處理器相關聯的物理處理單元設置物理中斷可能是很便捷的。以這種方式,物理處理單元可以按需選擇并啟動該虛擬處理器。
在一些實施例中,所述中斷控制器被配置為通過在所述移動命令之后發出阻礙命令來響應所述移動命令,以使得對所述再分配電路的讀取訪問直到由所述移動命令觸發的對所述再分配電路的訪問完成為止才能完成。
當在虛擬處理器之間移動虛擬中斷時,設置阻礙命令以確保在另外的命令被發出之前中斷序列完成可能是便捷的。例如,確保中斷在舊的處理器上不再是未決的可能是可取的。因此,該阻礙命令會導致通過與由移動命令對再分配電路使用的相同標準結構的阻塞式讀取(blockingread)。應當注意的是,可能已經與虛擬中斷的移動相關聯的物理中斷可能針對新的虛擬處理器被重新生成,但是原來生成的物理中斷沒有被移動。這并不是問題,因為這僅會導致不必要的超級管理器進入,這可能在性能上不是非常有效,但不會引起任何錯誤。阻礙命令可以是獨立的命令,或者移動命令可以是移動命令和阻礙命令的組合,例如MOVsync。把這兩種命令作為獨立的命令使得多個移動命令能夠被連續地執行,隨后發送單個阻礙命令,例如,MOV、MOV、MOV、sync。
在一些實施例中,響應于接收到在物理處理單元之間移動的命令,即發送將與所述多個物理處理單元中的一個物理處理單元相關聯的虛擬處理器移動到所述多個物理處理單元中不同的物理處理單元的信號,所述中斷控制器被配置為:
訪問所述再分配電路中對應于與所述虛擬處理器最初相關聯的所述物理處理單元的數據存儲設備,并從所述指針中確定所述虛擬處理器當前是否在運行,并且如果是,則所述再分配電路被配置為將來自由所述指針指向的所述虛擬未決表格的數據寫入存儲在存儲器中的對應虛擬未決表格;以及
更新所述分層表格,使得所述虛擬處理器與所述多個物理處理單元中不同的物理處理單元相關聯。
可以完成的另外的實現方式是在物理處理單元之間移動虛擬處理器。關于針對虛擬處理器的中斷的信息被存儲在虛擬未決表格中的方式意味著在虛擬處理器的移動發生時傳輸虛擬中斷,這種方法相對簡便,并且可以作為一組簡單的步驟完成:訪問再分配電路,并按需更新各種數據存儲設備和分層表格。
在一些實施例中,所述中斷控制器被配置為停止向正被移動的虛擬處理器發送任何新接收的中斷,直到完成所述分層表格的所述更新。
在虛擬處理器在物理處理單元之間被移動的情況下,中斷控制器可能希望停止對正在被移動的虛擬出處理器發送任何新接收的中斷,直到完成分層表格的更新。如果沒有這么做,則新接收的中斷可能被錯誤路由。
在一些實施例中,所述中斷控制器被配置為在物理處理單元之間移動的命令之后發出阻礙命令,所述中斷控制器在發出另外的中斷之前等待對于所述阻礙命令的響應,所述響應指示已經完成對所述分層表格的所述更新。
為了確保在發送另外的中斷之前完成表格的更新,可以使用阻礙命令,對阻礙命令的響應指示完成分層表格的更新。
本發明的第二方面提供了一種數據處理裝置,包括:
至少一個物理處理單元,所述至少一個物理處理單元被配置為運行多個虛擬處理器中的至少一個虛擬處理器;
存儲器,該存儲器被配置為存儲至少一個虛擬未決表格,該至少一個虛擬未決表用于存儲針對所述多個虛擬處理器中相應的一個虛擬處理器的未決虛擬中斷;以及
中斷控制器,該中斷控制器用于根據本發明的第一方面控制和處理中斷。
在一些實施例中,所述存儲器被配置為存儲用于控制所述中斷的一組分層表格,所述分層表格包括設備表格、中斷轉換表格、和虛擬處理單元表格,所述表格可響應于所述中斷中的一個中斷而被訪問,所述中斷指示在所述設備和中斷轉換表格中進行訪問的位置;
所述設備表格存儲針對所述中斷轉換表格的指針;
所述中斷轉換表格存儲針對所述虛擬處理單元表格的指針和中斷標識符;以及
所述虛擬處理單元表格存儲指示如下內容的數據:將被所述虛擬中斷進行中斷的所述虛擬處理器當前與所述多個處理單元中的哪個處理單元相關聯。
本發明的第三方面提供了一種控制對數據處理裝置處接收的中斷的路由和處理的方法,所述數據處理裝置包括至少一個物理處理單元和存儲器,所述至少一個物理處理單元被配置為運行多個虛擬處理器中的至少一個虛擬處理器,所述存儲器被配置為存儲至少一個虛擬未決表格,該虛擬未決表格用于存儲針對所述多個虛擬處理器中相應的一個虛擬處理器的未決虛擬中斷,所述方法包括如下步驟:
接收用于中斷虛擬處理器的虛擬中斷;
確定所述虛擬處理器當前與所述至少一個物理處理單元中的哪個物理處理單元相關聯;
訪問再分配電路中對應于當前與所述虛擬處理器相關聯的所述至少一個物理處理單元的數據存儲設備;
從所述數據存儲設備中確定所述虛擬中斷的所述虛擬處理器當前是否在所述至少一個物理處理單元上運行;
如果是,則將所述虛擬中斷添加到由所述再分配電路指向的所述虛擬未決表格中;以及
如果否,則將所述虛擬中斷存儲在針對所述虛擬處理器的所述虛擬未決表格中,該虛擬未決表格被存儲在所述存儲器中。
本發明的第四方面提供了一種用于控制數據處理裝置來根據本發明的第三方面執行方法的計算機程序。
本發明的第五方面提供了用于控制對在數據處理裝置處接收的中斷進行路由和處理的裝置,所述數據處理裝置包括用于運行多個虛擬處理裝置中的至少一個虛擬處理器裝置的至少一個物理處理裝置,和用于存儲至少一個虛擬未決表格的存儲器裝置,該虛擬未決表格用于存儲針對所述多個虛擬處理裝置中相應的一個虛擬處理裝置的未決虛擬中斷,所述中斷控制 裝置包括:
再分配裝置,該再分配裝置包括對應于所述至少一個物理處理裝置的至少一個數據存儲裝置,所述至少一個數據存儲裝置用于存儲針對虛擬未決表格的指針和針對未決表格的指針,其中該虛擬未決表格被配置為存儲針對當前在對應的物理處理裝置上運行的虛擬處理裝置的當前未決虛擬中斷,該未決表格被配置為存儲針對所述對應的物理處理裝置的當前未決物理中斷;
輸入裝置,用于接收針對中斷虛擬處理器的虛擬中斷;
控制裝置,用于:
響應于接收到所述虛擬中斷,訪問所述再分配電路中對應于虛擬處理器當前相關聯的至少一個物理處理單元的至少一個數據存儲裝置,以及
從所述數據存儲裝置中確定所述虛擬中斷的所述虛擬處理器當前是否在所述物理處理單元上運行;以及
如果是,則將所述虛擬中斷添加到由所述再分配電路指向的所述虛擬未決表格中;以及
如果否,則將所述虛擬中斷存儲在針對所述虛擬處理器的所述虛擬未決表格中,該虛擬未決表格被存儲在存儲器中。
本發明的以上對象、特征、和優點以及其他對象、特征、和優點通過下文結合附圖進行閱讀的示意性實施例的詳細說明將是顯而易見的。
附圖說明
圖1示出了根據本發明的實施例的中斷控制器;
圖2示出了根據本發明的實施例的數據處理裝置;
圖3示意性地示出了根據本發明的實施例的利用各種分層表格進行中斷的中斷控制器;
圖4示意性地示出了根據本發明的實施例,虛擬中斷是如何被路由的;
圖5示出了將虛擬中斷移動到不同的虛擬處理器;
圖6示出了移動虛擬處理器和路由與該虛擬處理器相關聯的未決虛擬中斷;以及
圖7示出了對根據本發明的實施例的方法中的步驟進行闡述的流程圖。
示例非限定性實施例的描述
圖1示出了根據本發明的實施例的中斷控制器10。該中斷控制器被配置為針對具有多個處理單元的處理裝置控制中斷,其中多個處理單元中至少有一些運行虛擬處理器。中斷控制器10具有輸入12,經由該輸入12中斷控制器10從虛擬設備接收包括虛擬中斷的中斷,中斷控制器10還具有用于處理接收到的中斷的控制電路14和再分配電路16。再分配電路被分成若干部分,每個部分與處理裝置的物理處理單元相對應。
一收到虛擬中斷,控制電路14就會訪問存儲器(未示出),并從存儲在其中的各種表格中確定虛擬中斷的虛擬處理器相關聯的是處理裝置的哪個處理單元。由此可以確定應該訪問的再分配電路16的部分。
控制電路14隨后會訪問再分配電路16中對應于當前與中斷的虛擬處理器相關聯的物理處理單元的部分。再分配電路的不同部分各自包括寄存器18和19。寄存器18存儲對應的物理處理單元上當前活動的虛擬處理器的虛擬未決表格位于哪里的指示符,寄存器19存儲針對該處理單元的物理中斷的未決表格將在哪里找到的指示符。在該實施例中,存儲在寄存器19中的指示符是以指針的形式指向該位置。
在該實施例中,再分配電路16的每個部分還具有與其相關聯的緩存20。當虛擬處理器在處理單元上是活動的時,存儲針對該虛擬處理器的未決虛擬的虛擬未決表格被存儲在該緩存20中,以使得這些表格可以很容易的被再分配電路16訪問。
緩存20還存儲指示未決虛擬中斷的優先級的數據,并且控制電路14將從緩存中確定優先級并選擇具有最高優先級的中斷,并按需將其發送到運行虛擬處理器的處理單元。控制電路14還控制存儲在指針19指向的物理未決表格中的任意物理中斷的選擇和傳輸。這些中斷的優先級也被存 儲。
圖2示出了數據處理裝置30內的中斷控制器10。數據處理裝置30從外部的虛擬設備40接收虛擬中斷,該虛擬設備40可以在數據處理裝置外部的物理設備50上運行。在一些實施例中,這些設備可以是與數據處理裝置30有關的外圍設備。
在該實施例中,數據處理裝置30具有三個CPU60、62、和64。CPU160具有當前在其上運行的一個虛擬處理器,CPU262具有當前在其上運行的兩個虛擬處理器,而CPU364上沒有。中斷控制器10和CPU60、62、和64中的每一個經由總線70被連接到存儲器80。存儲器80存儲虛擬未決表格,該虛擬未決表格存儲針對特定虛擬處理器的未決虛擬中斷。在該實施例中,這些虛擬未決表格被示為VPT1、VPT2、VPT3和VPT4。VPT1與在CPU2上運行的虛擬處理器1相對應。VPT2與在CPU上運行的虛擬處理器2相對應,而VPT3與在CPU1上運行的虛擬處理器3相關,并且VPT4與當前不活動的虛擬處理器相關。
這些虛擬未決表格VPT1-4中的每一個存儲未決虛擬中斷。這些中斷的優先級被存儲在相關的配置表格89中,該配置表格89可從對應的再分配電路進行訪問,虛擬未決表格將存儲有關如何索引到該配置表格以獲得優先級的信息以及可能的其他配置信息(例如,針對每個未決中斷的使能信息)。在分開的配置表格中存儲優先級的優勢是分開的配置表格可以在虛擬存儲中被設置,使得該配置表格可以通過虛擬處理器進行訪問,從而允許其在無需超級管理器的介入下被更新。以這種方式,虛擬處理器自身可以改變未決中斷的優先級。就這方面而言,在更新配置表格時,軟件會向中斷控制器10發送無效命令。中斷控制器會將無效命令路由至適當的再分配電路,隨后該再分配電路可以重新加載已經變更的配置表格。
虛擬未決表格中的每一個虛擬未決表格由再分配電路中對應于當前與虛擬處理器相關聯的CPU的部分所有。虛擬處理器可以在其由CPU運行時與該CPU相關聯,或者如果虛擬處理器當前不活動但在CPU控制之下以使得虛擬處理器被激活時其將在該CPU上運行,則虛擬處理器與該CPU相關聯。再分配電路16具有對虛擬未決表格的唯一寫入訪問,因此 更新虛擬未決表格可以僅由再分配電路16中對應于與相應的虛擬處理器相關聯的處理單元的部分來完成。
就這方面而言,與特定處理器單元相關聯的再分配電路16具有針對當前在該處理單元上活動的任意虛擬處理器的虛擬未決表格的指針。因此,在與CPU2相關聯的再分配電路部分中存儲有針對VPT1和VPT2的指針。在該實施例中,這些表格的當前版本也被存儲在再分配電路16中的緩存20內。這允許再分配電路16很容易地訪問這些未決表格并處理未決虛擬中斷,并且將最高優先級的未決虛擬中斷發送至當前運行對應的虛擬處理器的CPU。在該方面,CPU將具有虛擬中斷輸入端口,在該情形中有兩個端口,因為存在兩種潛在的虛擬中斷。
虛擬中斷將被發送到作為CPU內的虛擬處理器的一部分運行的中斷處置器,該CPU將使用通常確認物理中斷的相同的軟件確認接收到的虛擬中斷。
在該實施例中,具有對應的未決表格VPT4的虛擬處理器4當前是不活動的。然而,該虛擬處理器4與CPU364相關聯,因此如果由中斷控制器10接收的新的虛擬中斷指定虛擬處理器4,則中斷控制器10內的控制電路14隨后將訪問存儲器80中的分層表格84,并將從這些表格中確定虛擬處理器4當前相關聯的是處理單元60、62、64中的哪一個,在該情況下是CPU364。隨后將訪問與CPU3相關聯的再分配電路16,并且會確定虛擬處理器4當前不是活動的。再分配電路16將用其已經接收到的虛擬中斷更新VPT4,并且還可以生成物理中斷,并將該物理中斷添加到也被存儲在存儲器中的物理中斷未決表格88,再分配電路16可以使用再分配電路中與CPU3相關聯的部分中的指針來訪問該物理中斷未決表格88。
該物理中斷將進入物理中斷未決表格88,并且將被及時選擇并被發送到CPU3,在此該物理中斷會向CPU3指示存在針對虛擬處理器4的未決虛擬中斷。隨后CPU3可以依據當前執行的任務的優先級和該中斷的優先級來選擇激活該虛擬處理器,并且當該虛擬處理器被激活時,虛擬未決表格VPT4隨后將被訪問,并且未決虛擬中斷可以根據優先級被處理。
圖3更詳細地示出了該處理。在示例中示出了中斷來自虛擬設備被在 數據處理單元處接收。該中斷將具有指示中斷控制器內應該被寫入的寄存器的地址。該中斷具有數據(數據x)并且具有設備ID(該中斷被從其接收的設備的IDA)。中斷控制器會向指定的地址寫入設備ID和數據x,這會向中斷控制器發送虛擬中斷已經被接收的信號,并且中斷控制器將訪問存儲器中的分級表格84。
第一個被訪問的表格是使用接收的設備ID被索引到的設備表格85。對設備表格的訪問返回有關針對該設備的下一個表格(專用于該設備的中斷轉換表格86)中空間大小以及針對該設備的該表格中基地址的信息。就這方面而言,可以針對每個設備分別有中斷轉換表格,或者可以是只有單一的表格,如本文的情況是每個設備具有該表格的特定部分。
隨中斷一起被接收的數據x從設備表格85提供的基地址索引到中斷轉換表格86。如果索引對于中斷轉換表格86中關于該設備的部分的指示大小過大的話,則會出現錯誤和錯誤陷阱。假設索引不是很大,則中斷轉換表格被訪問,并且從該表格中獲得中斷ID和指針。中斷ID指示該中斷是虛擬中斷還是物理中斷,在該情況中,接收的中斷是由虛擬設備生成的虛擬中斷,并且指針指向另外的表格,當是虛擬中斷時,該另外的表格會是虛擬處理單元表格87。虛擬處理單元表格87存儲關于當前與該虛擬處理器相關聯且對應于虛擬處理器當前相關聯的物理處理單元的再分配電路的信息。虛擬處理單元表格87還給出了虛擬未決表格在存儲器中的地址。虛擬處理單元表格87還提供對配置表格的索引,該配置表格存儲關于不需要被路由的中斷的信息。該信息包括中斷的優先級和使能位。
因此,中斷控制器10可以使用表格85、86、和87以及來自中斷的信息,以針對虛擬中斷確定虛擬處理器相關聯的是哪一個處理單元以及針對該處理器的未決表格的地址。如果接收的中斷是來自物理設備(設備IDB)的物理中斷,則該物理中斷會使用物理設備IDB索引到設備表格85,并且該中斷會向中斷轉換表格86提供來自存儲在設備表格85中的基地址的指針,并且中斷轉換表格會接著存儲針對收集表格83中的位置的指針,該收集表格83具有針對該特定物理處理單元的再分配電路地址以及針對物理中斷的未決表格的指針。
圖4示意性地示出了對虛擬中斷的接收和路由。非虛線箭頭的尾部指示信息的來源,頭部指示該信息的應用。因此,中斷在ITS處被接收,ITS是對應于之前附圖中的中斷控制器的中斷轉換服務,并且使用與中斷相關聯的指針來訪問中斷轉換表格,并執行中斷映射來將中斷映射到適當的虛擬ID空間或當確定是物理中斷時映射到物理ID空間。
就這方面而言,在存在多個虛擬處理器的情況下,存在多個虛擬ID空間,依據作為目標的虛擬處理器,中斷會被映射到適當的虛擬ID空間。中斷轉換服務還會通過訪問適當的再分配器來確定目標的虛擬處理器當前是否在運行。如果否,則其會生成物理中斷,并且該物理中斷會被發送到物理ID空間中的物理中斷表格。該物理中斷會具有普通物理中斷的所有屬性,例如優先級,優先級表示物理中斷可以根據優先級被發送到處理器,這樣做的結果是通過物理中斷來將非活動的虛擬處理器的任意重要的未決虛擬中斷通知給超級管理器,而無需超級管理器輪詢這些虛擬處理器,但是這不會被較為不重要的虛擬中斷所中斷。
圖5示出了被接收的虛擬中斷可如何被移動到不同的虛擬處理器。就這方面而言,由于管理虛擬中斷的方式,通過使執行中斷轉換的再分配電路中斷控制器來協調移動,將中斷從一個虛擬處理器重定向到新的虛擬處理器是可能的。因此,中斷控制器會查找中斷當前被定向到的再分配電路的部分,并且會向其發送相關的虛擬處理器的虛擬未決表格的基地址以及將要移動的中斷的中斷ID。中斷控制器還會發送關于新目標的信息,該信息是再分配電路的新部分的基地址和新虛擬未決表格的基地址。
再分配電路具有針對虛擬未決表格的唯一寫入訪問,并因此再分配電路可以控制移動。再分配電路會從相關的中斷的虛擬未決表格中讀取,并確定所提供的中斷ID是否是未決的。如果是,則再分配電路通過寫入虛擬未決表格來消除該中斷ID的未決狀態。隨后向再分配電路的新部分發送具有新虛擬未決表格基地址和中斷ID的消息,并且該消息使中斷被寫入該表格,如果與該表格相關的虛擬處理器當前不在運行,則可以發送物理中斷的信號,使得處理器得知存在未決的虛擬中斷。
軟件還可以在各種命令之后發出阻礙命令(圖5的SYNCR命令), 以確保中斷序列在任意其他命令被發送之前完成。該阻礙命令會導致通過與移動命令所使用的相同標準結構的阻塞式讀取。由于消息已被配置,所以這些消息相對于彼此不能被重新排序。
應當注意的是,如果被移動的虛擬中斷在當前不活動的虛擬處理器的虛擬未決表格中,則其在物理中斷表格中會有與其相關聯的物理中斷以用于向軟件發送信號:針對當前沒有運行的虛擬處理器存在未決虛擬中斷。在該實施例中,該物理中斷沒有以任何方式被刪除或改變,并且會及時觸發軟件以啟動虛擬處理器,對于該虛擬處理器不再存在未決虛擬中斷。這不會引起錯誤,所以并不是個大問題。
參考圖5,該序列被示意性地示出為軟件發送移動命令指示中斷X應該被從VCPU1移動到VCPU2。軟件可以在該命令之后發送阻礙(SYNCR命令),如果發送了SYNCR命令,則會在發送其他中斷之前等待由在阻礙之后發送的對SYNCR請求的響應所指示的移動命令完成。就這方面而言,用于讀取將要被移動的中斷的讀取命令在SYNCR命令之后,這些命令可以充當阻塞后續命令直到返回某一值,或者如果再分配器不繁忙則再分配器可以響應于讀取,或者如果再分配器繁忙則其可以返回其繁忙的指示。在這種情況中,讀取和SYNCR命令可以被再發出直到返回某一值。
中斷轉換服務ITS還會停止向VCPU1發送中斷并開始將中斷發送至VCPU2。用于舊處理器VCPU1的目標再分配器會向VCPU2的目標再分配器發送未決中斷,VCPU2的目標再分配器會適當地更新未決表格。
圖6示出了將虛擬CPU從第一處理單元移動到第二處理單元以及如何根據本發明的實施例管理虛擬中斷以允許這以簡便的方式被執行的示例。因此,軟件將在再分配電路中與第一處理單元相關的部分中更新存儲有虛擬未決表格指針的寄存器,使其不再指向將被移動的虛擬處理器的虛擬未決表格,這么做的結果是如果虛擬處理器對虛擬未決表格是活動的,則為了確保虛擬未決表格是最新的,再分配電路的該部分會從它的緩存中清除任何條目。如果虛擬處理器不活動,則不需要執行該步驟。中斷控制器隨后會停止向該虛擬CPU發送新的中斷。
阻礙指令隨后會被發送到再分配電路的該部分,以確保在完成以上步 驟之前沒有新的中斷被發送。再分配電路可以通過將自身的阻礙指令發送至結構來響應于該阻礙指令,以確保虛擬未決更新變得一致并且確保其到達主存儲器。
隨后分層表格將需要被更新,以指向與被移動的虛擬處理器的第二處理器單元相關聯的再分配電路,隨后不停止發送中斷。阻礙還可以被用來確保該步驟的完成。現在軟件可以更新新的再分配電路中的虛擬未決表格指針,從而指向虛擬處理器的虛擬未決表格以作為開始運行該虛擬處理器的部分。
關于圖6,這些步驟通過如下被示出:軟件發送移動命令以將虛擬處理器從舊的處理單元移動到新的處理單元,以及軟件在阻礙已經被發送時等待完成。中斷轉換服務停止向舊的處理器發送新的中斷,并開始將這些中斷發送至新的處理單元。隨后會更新表格,使得分層表格指示新的處理器單元,并且再分配器的指針也被更新,使得這些指針指示虛擬處理器現在與新的處理單元相關聯。
圖5和圖6示出的移動命令的意義是,這些移動命令表示已經存在的物理命令的虛擬等同物,這樣比較容易實現。
在上述的實施例中,中斷的某些屬性被存儲在與圖2的分層轉換表格82、84、86分開的表格中。這些表格在圖3中被示出,并且是針對虛擬中斷的配置表格。針對物理中斷存在類似的配置表格,但沒有被示出。這些屬性是在路由中斷的過程中不需要的那些屬性,但可能在稍后的處理中需要。因此,這些屬性包括例如中斷的優先級和使能位之類的事項。
由于在物理實現方式中這些事項被存儲在可由軟件尋址的表格中,所以當被虛擬化時軟件會嘗試訪問該表格。在該實現方式中,虛擬屬性表格實際上是由在VCPU上運行的OS從超級管理器分配給它的池中分配的存儲器。這可以全部通過現有的存儲器虛擬化技術來實現。針對該表格的指針被超級管理器提供給再分配電路,在VCPU上的軟件嘗試在其虛擬再分配器中設置表格時再分配電路獲得該指針。
在該表格中存儲比在主轉換表格中盡可能多的屬性是有優勢,因為該表格可以通過快速標準存儲虛擬化技術由VCPU直接訪問,而對轉換表格 的更新需要超級管理器的介入。因此,例如可以降低改變中斷的優先級的成本。
圖7示出了圖示根據本發明的實施例的方法中的步驟的流程圖。針對虛擬處理器的虛擬中斷被接收,并且表格被訪問以確定當前與該虛擬處理器相關聯的物理處理單元,還確定存儲針對該虛擬處理器的未決虛擬中斷的虛擬未決表格的存儲器中的地址。與相關的物理處理單元相關聯的再分配電路隨后可以被訪問,并且從該電路可以確定虛擬處理器當前是否在運行。這是因為當前運行的任意虛擬處理會具有針對該虛擬處理器內的虛擬未決表格的指針。因此,這些指針與已確定的虛擬未決表格的地址之間的比較會確定虛擬處理器是否在運行。
如果虛擬處理器在運行,則虛擬中斷可以被添加到虛擬未決表格,該虛擬未決表格將被存儲到再分配電路內的緩存中。如果虛擬處理器沒有在運行,則虛擬中斷可以被添加到存儲器中的虛擬未決表格。另外,物理中斷可以被添加到同樣由再分配電路中的指針指向的物理中斷未決表格。該物理中斷向處理單元發送信號:針對當前沒有運行的虛擬處理器存在未決的虛擬中斷。該物理中斷的優先級可以被設置,以使得例如虛擬處理器在需要時被激活,以及在虛擬中斷不重要或者確定該虛擬處理器具有較低的優先級時不被激活。
雖然在本文中通過參考附圖詳細地描述了示意性實施例,但應該理解的是權利要求并不限于這些精確的實施例,并且在不脫離所附加權利要求的范圍和精神的情況下,本領域技術人員可以對其實施各種改變和修改。例如,可以利用獨立權利要求的特征做出從屬權利要求的特征的各種組合。   內容來自專利網www.wwszu.club轉載請標明出處

關于本文
本文標題:針對虛擬處理器處理并路由中斷.pdf
鏈接地址:http://www.wwszu.club/p-6405764.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大 340945204944059664509021490210286834570410170260312350689793869934932918918128904168485997485458761 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();