存儲器管理的制作方法
【專利摘要】本公開涉及存儲器管理。一種操作主機數據處理系統的方法,其針對客戶數據處理系統提供虛擬操作環境,方法包括:響應于來自由客戶系統監視的設備的針對訪問的系統存儲器的事務請求,發起針對客戶系統存儲器地址到主機系統物理地址的轉換的事務;存儲與該事務有關的標識信息;檢測關于該事務的轉換錯誤狀況:以及通過以下操作處理檢測到的錯誤狀況:(i)向監視請求事務的設備的客戶系統提供指示轉換錯誤狀況的信息;(ii)從客戶系統接收關于該事務的命令,來自客戶系統的命令包括標識請求事務的設備的信息;以及(iii)通過將針對該事務的存儲的標識信息至少與由命令標識的設備的標識進行比較,驗證接收到的命令以供執行。
【專利說明】
存儲器管理
技術領域
[0001 ]本公開涉及存儲器管理。
【背景技術】
[0002]存儲器管理單元(MMU)致力于虛擬存儲器地址到物理存儲器地址的轉換。
[0003]數據處理裝置通常向每個運行程序提供對由虛擬存儲器地址定義的虛擬地址空間的訪問。每個程序查看它自己的虛擬地址空間,該虛擬地址空間包含用于由該程序使用的指令和數據。除其它已建立的優勢外,使用虛擬地址允許操作系統通過禁止一個程序訪問或破壞另一程序所使用的信息來控制存儲器訪問。
[0004]當要求訪問虛擬存儲器地址時,首先有必要將虛擬存儲器地址轉換為物理存儲器地址從而使得所需的信息可以從物理存儲器或物理存儲器緩存中獲得或可以被寫入物理存儲器或物理存儲器緩存。
[0005]被稱為轉換后備緩沖器(TLB)的緩存可用作地址轉換過程的一部分。TLB存儲虛擬存儲器地址和物理存儲器地址之間最近或通常使用的轉換。因此,作為地址轉換過程中的第一步驟,TLB被詢問以檢測TLB是否已包含所需的地址轉換。如果未包含,則可以使用更復雜的轉換過程,例如包括詢問保持地址轉換信息的所謂的頁面表,這通常導致TLB被所需的轉換填充。
[0006]多階段MMU被用于某些情況中。在該布置中,實際上使用了兩級轉換。執行程序或其它系統模塊(例如,圖形處理單元(GPU))所需的虛擬地址(VA)通過第一 MMU階段被轉換為中間物理地址(IPA)13IPA通過第二 MMU階段被轉換為物理地址(PA)。使用多階段轉換的一個原因是當多個操作系統(OS)可能在相同處理器上運行的各個“虛擬機”上使用時的信息處理的安全性。特定的OS被披露于VA到IPA轉換,而僅管理程序(監視虛擬機的運行的軟件)監督第2階段(IPA到PA)的轉換。
【發明內容】
[0007]在示例布置中,提供了一種操作主機數據處理系統的方法,所述主機數據處理系統為一個或多個客戶數據處理系統提供虛擬操作環境,所述方法包括:
[0008]響應于來自由客戶系統監視的設備的針對訪問在該客戶系統存儲器地址處的系統存儲器的事務請求,發起針對所述客戶系統存儲器地址到主機系統物理地址的轉換的事務;
[0009]存儲與所述事務有關的標識信息,所述標識信息至少包括標識請求所述事務的設備的數據;
[0010]檢測關于所述事務的轉換錯誤狀況:以及
[0011]通過以下操作處理檢測到的錯誤狀況:
[0012](i)向監視請求所述事務的設備的所述客戶系統提供指示所述轉換錯誤狀況的信息;
[0013](ii)從所述客戶系統接收關于所述事務的命令,來自所述客戶系統的命令包括標識請求所述事務的設備的信息;以及
[0014](iii)通過將針對所述事務的存儲的標識信息至少與由所述命令標識的所述設備的標識進行比較來驗證接收到的命令以供執行。
[0015]在另一示例布置中,提供了一種主機數據處理系統,所述主機數據處理系統被配置為針對一個或多個客戶數據處理系統提供虛擬操作環境,所述主機數據處理系統包括:
[0016]存儲器管理單元,所述存儲器管理單元被配置為:響應于來自由客戶系統監視的設備的針對訪問在該客戶系統存儲器地址處的系統存儲器的事務請求,發起針對所述客戶系統存儲器地址到主機系統物理地址的轉換的事務;
[0017]事務緩沖器,所述事務緩沖器被配置為存儲與所述事務有關的標識信息,所述標識信息至少包括標識請求所述事務的設備的數據;
[0018]錯誤檢測器,所述錯誤檢測器被配置為檢測關于所述事務的轉換錯誤狀況:以及
[0019]錯誤處理邏輯,所述錯誤處理邏輯被配置為通過以下操作處理檢測到的錯誤狀況:
[0020](i)向監視請求所述事務的設備的所述客戶系統提供指示所述轉換錯誤狀況的信息;
[0021](ii)從所述客戶系統接收關于所述事務的命令,來自所述客戶系統的命令包括標識請求所述事務的設備的信息;以及
[0022](iii)通過將針對所述事務的存儲的標識信息至少與由所述命令標識的所述設備的標識進行比較來驗證接收到的命令以供執行。
[0023]在另一示例布置中,提供了一種主機數據處理系統,所述主機數據處理系統可操作于為一個或多個客戶數據處理系統提供虛擬操作環境,所述主機數據處理系統包括:
[0024]用于響應于來自由客戶系統監視的設備的針對訪問在該客戶系統存儲器地址處的系統存儲器的事務請求,發起針對所述客戶系統存儲器地址到主機系統物理地址的轉換的事務的裝置;
[0025]用于存儲與所述事務有關的標識信息的裝置,所述標識信息至少包括標識請求所述事務的設備的數據;
[0026]用于檢測關于所述事務的轉換錯誤狀況的裝置:以及
[0027]用于向監視請求所述事務的設備的所述客戶系統提供指示所述轉換錯誤狀況的信息的裝置;
[0028]用于從所述客戶系統接收關于所述事務的命令的裝置,來自所述客戶系統的命令包括標識請求所述事務的設備的信息;以及
[0029]用于通過將針對所述事務的存儲的標識信息至少與由所述命令標識的所述設備的標識進行比較來驗證接收到的命令以供執行的裝置。
[0030]本技術的另外的各個方面和特征由附加權利要求定義。
【附圖說明】
[0031]將參照如附圖中所示的實施例、僅通過示例的方式來進一步描述本公開,在附圖中:
[0032]圖1是虛擬化環境中的數據處理布置的示意圖;
[0033]圖2示意性示出了分布式存儲器管理功能;
[0034]圖3是地址轉換過程的示意流程圖;
[0035]圖4是主機系統和客戶系統的不意圖;
[0036]圖5是事務處理過程的示意流程圖;
[0037]圖6和圖7示意性示出了事務緩沖器;
[0038]圖8是擱置(stall)處理過程的示意流程圖;
[0039]圖9是數據存儲過程的示意流程圖;
[0040]圖10是事件創建過程的示意流程圖;
[0041]圖11是確認過程的示意流程圖;以及
[0042]圖12是擱置事務清除過程的示意流程圖。
【具體實施方式】
[0043]在參照附圖討論實施例之前,提供了對實施例的下述描述。
[0044]示例實施例提供了一種操作主機數據處理系統的方法,所述主機數據處理系統為一個或多個客戶數據處理系統提供虛擬操作環境,所述方法包括:
[0045]響應于來自由客戶系統監視的設備的針對訪問在該客戶系統存儲器地址處的系統存儲器的事務請求,發起針對所述客戶系統存儲器地址到主機系統物理地址的轉換的事務;
[0046]存儲與所述事務有關的標識信息,所述標識信息至少包括標識請求所述事務的設備的數據;
[0047]檢測關于所述事務的轉換錯誤狀況:以及
[0048]通過以下操作處理檢測到的錯誤狀況:
[0049](i)向監視請求所述事務的設備的所述客戶系統提供指示所述轉換錯誤狀況的信息;
[0050](ii)從所述客戶系統接收關于所述事務的命令,來自所述客戶系統的命令包括標識請求所述事務的設備的信息;以及
[0051](iii)通過將針對所述事務的存儲的標識信息至少與由所述命令標識的所述設備的標識進行比較來驗證接收到的命令以供執行。
[0052]驗證測試被提供以檢測產生擱置事務的相同設備或客戶系統現在正嘗試重試或中止擱置事務。該測試可以幫助避免一個客戶影響在另一客戶處產生的事務,作為錯誤的結果或作為潛在的安全問題,使得客戶系統嘗試欺騙地或以其它方式不適當地影響由另一客戶系統監視的設備發起的事務。
[0053]為了允許擱置事務被標識,在示例實施例中,標識信息包括:標識在由主機系統處理的其它事務中的該事務的信息。
[0054]為了給出事務和補救動作的發起之間的鏈接,在示例實施例中,提供步驟包括:提供標識該事務的信息和標識請求該事務的設備的信息。類似地,為了將可能的解決方案與該事務鏈接,在示例實施例中,來自客戶系統的命令包括標識該事務的信息、和/或標識請求該事務的設備的信息。
[0055]為了檢測應該或可能是擱置的事務,在示例實施例中,檢測步驟包括:關于轉換錯誤狀況,從一組或兩個或多個錯誤類型中檢測錯誤類型;針對錯誤類型的第一子集,終止該事務;以及針對除錯誤類型的第一子集中的那些錯誤類型之外的錯誤類型,執行處理步驟。
[0056]作為提供發起解決方案時使用的數據的一部分,例如事件通知,在示例實施例中,提供步驟包括:生成包括以下各項的事務標識符數據:請求該事務的設備的標識符、在由主機系統處理的其它事務中的該事務的標識符、定義錯誤類型的數據、與該事物有關的客戶系統存儲器地址、以及定義由設備請求的存儲器訪問的類型的數據;并且向監視請求該事務的設備的客戶系統提供該事務標識符數據。在實施例中,提供步驟可以包括:將事務標識符數據添加到與監視請求該事務的設備的客戶系統相關聯的事件隊列。
[0057]在虛擬化系統中,不允許客戶系統訪問管理程序控制功能的事件隊列可以是適當的。在這種情況下,提供步驟可以包括:將事務標識符數據添加到與主機系統相關聯的事件隊列;以及將事務標識符數據從與主機系統相關聯的事件隊列復制到與監視請求該事務的設備的客戶系統相關聯的事件隊列。取決于客戶系統是否可以處理事件通知中的數據的類型,復制步驟可以包括:在將事務標識符數據復制到與監視請求該事務的設備的客戶系統相關聯的事件隊列之前,修改定義錯誤類型的數據。在其它示例中,復制步驟可以包括:在將事務標識符數據復制到與監視請求該事務的設備的客戶系統相關聯的事件隊列之前,修改標識請求該事務的設備的數據。在示例實施例中,來自客戶系統的命令可以包括該事務標識符數據。
[0058]類似地,為了避免客戶系統直接訪問由主機控制的功能,在示例實施例中,接收步驟包括:在與監視請求該事務的設備的客戶系統相關聯的命令隊列中檢測由客戶系統發出的命令;以及將命令從與監視請求該事務的設備的客戶系統相關聯的命令隊列復制到與主機系統相關聯的命令隊列。
[0059]在示例實施例中,驗證步驟可以包括:如果針對該事務的存儲的標識信息不與由命令標識的設備相對應,則阻止對命令的執行。
[0060]在實施例中,驗證步驟包括:核查產生命令的客戶系統正在監視由命令標識的設備。
[0061]示例實施例提供了一種主機數據處理系統,所述主機數據處理系統被配置為針對一個或多個客戶數據處理系統提供虛擬操作環境,所述主機數據處理系統包括:
[0062]存儲器管理單元,所述存儲器管理單元被配置為:響應于來自由客戶系統監視的設備的針對訪問在該客戶系統存儲器地址處的系統存儲器的事務請求,發起或處理針對所述客戶系統存儲器地址到主機系統物理地址的轉換的事務;
[0063]事務緩沖器,所述事務緩沖器被配置為:存儲與所述事務有關的標識信息,所述標識信息至少包括標識請求所述事務的設備的數據;
[0064]錯誤檢測器,所述錯誤檢測器被配置為檢測關于所述事務的轉換錯誤狀況:以及
[0065]錯誤處理邏輯,所述錯誤處理邏輯被配置為通過以下操作處理檢測到的錯誤狀況:
[0066](i)向監視請求所述事務的設備的所述客戶系統提供指示所述轉換錯誤狀況的信息;
[0067](ii)從所述客戶系統接收關于所述事務的命令,來自所述客戶系統的命令包括標識請求所述事務的設備的信息;以及
[0068](iii)通過將針對所述事務的存儲的標識信息至少與由所述命令標識的所述設備的標識進行比較來驗證接收到的命令以供執行。
[0069]示例實施例提供了一種主機數據處理系統,所述主機數據處理系統可操作于為一個或多個客戶數據處理系統提供虛擬操作環境,所述主機數據處理系統包括:
[0070]用于響應于來自由客戶系統監視的設備的針對訪問在該客戶系統存儲器地址處的系統存儲器的事務請求,發起針對所述客戶系統存儲器地址到主機系統物理地址的轉換的事務的裝置;
[0071]用于存儲與所述事務有關的標識信息的裝置,所述標識信息至少包括標識請求所述事務的設備的數據;
[0072]用于檢測關于所述事務的轉換錯誤狀況的裝置:
[0073]用于向監視請求所述事務的設備的所述客戶系統提供指示所述轉換錯誤狀況的信息的裝置;
[0074]用于從所述客戶系統接收關于所述事務的命令的裝置,來自所述客戶系統的命令包括標識請求所述事務的設備的信息;以及
[0075]用于通過將針對所述事務的存儲的標識信息至少與由所述命令標識的所述設備的標識進行比較來驗證接收到的命令以供執行的裝置。
[0076]現在參照附圖,圖1是虛擬化環境中的數據處理布置的示意圖。在圖1中,各個單元經由互連布置10被連接。經由互連布置10被連接的單元包括:中央處理單元(CPU)20、系統存儲器30(可選地具有相關聯的緩存存儲器,未示出)、一個或多個設備40、50以及包括轉換后備緩沖器(TLB)62的系統存儲器管理單元(SMMU)60。
[0077]在該示例中,設備是外圍用戶接口或數據輸入/輸出設備(例如照相機設備)。設備40、50中的每個設備與虛擬環境中的虛擬機(VM)或客戶系統相關聯。(一個或多個)設備被稱為被各個VM監視,也就是說(例如)它們在VM中運行的操作系統下操作,并且它們具有對于提供用于VM(或由VM提供)的虛擬存儲器空間的入口。圖1的裝置給設備提供對由虛擬存儲器地址定義的虛擬地址空間的訪問。每個虛擬機查看它自己的虛擬地址空間,該虛擬地址空間包含用于由該虛擬機使用的指令和數據。除其它優勢外,使用虛擬地址允許主機操作系統或管理程序(HV)通過禁止一個虛擬機訪問或破壞另一虛擬機所使用的信息來控制存儲器訪問。圖1提供了主機數據處理系統為一個或多個客戶數據處理系統提供虛擬操作環境的布置的示例。
[0078]系統存儲器通過物理地址尋址。因此當設備要求訪問虛擬存儲器地址(例如讀取或寫入指令或數據項)時,首先有必要將虛擬存儲器地址轉換為物理存儲器地址從而使得所需的信息可以從系統存儲器30中獲得或可以被寫入系統存儲器30。存儲器地址的轉換由SMMU 60執行。下面將給出關于SMMU操作的更多細節。
[0079]TLB 62在存儲器地址轉換過程中提供緩存功能。TLB 62存儲虛擬存儲器地址和物理存儲器地址之間最近或通常使用的轉換。因此,作為地址轉換過程中的第一步驟,TLB 62被詢問以便檢測TLB是否已包含所需的地址轉換。如果未包含,則可以使用更復雜的轉換過程,例如包括詢問保持地址轉換信息的所謂的頁面表,這通常導致TLB 62被所需的轉換的細節填充。
[0080]圖1的虛擬化系統利用多階段地址轉換。在該布置中,實際上使用了兩級轉換。設備40之一中的執行程序或其它系統模塊所需的虛擬地址(VA)通過第一 MMU階段被轉換為中間物理地址(IPA)。據VM軟件所知,IPA是用于訪問系統存儲器的物理地址。然而,虛擬化系統提供第二級地址轉換,以使得IPA然后通過第二存儲器管理單元階段被轉換為物理地址(PA) ο IPA到PA轉換完全在管理程序的控制下。因此,特定VM可以被披露于VA到IPA轉換,而僅管理程序監督IPA到PA轉換并且因此控制對物理系統存儲器的實際訪問。但從VM的視角看,IPA是與所需存儲器訪問有關的實際地址。
[0081]在某些示例中,每個設備40、50可以與各個虛擬機相關聯。在其它示例中,多個設備可以與單個虛擬機相關聯。就設備和SMMU 60之間的通信而言,設備可以各自與各個“流”標識符(流ID)相關聯,除其它功能外,流ID可以協助路由去往和來自設備的SMMU事務。流ID因此用作設備標識符。
[0082]圖1示出了一個SMMU60的使用。在其它示例(例如圖2中所示的示例)中,存儲器管理單元功能可以部分分布在可以與每個設備各自相關聯的那些TLB中,從而使得轉換在設備本地發生,但是在相應TLB中未發現所需轉換(TLB “錯過”)的情況下,參照中央MMU以供解決所需轉換。然而,為了下面的討論的目的,兩種布置中的任一布置都是適用的。
[0083]還要注意的是,圖1和圖2是數據處理布置的物理結構的示意性圖示。下面關于一個或多個VM和一個HV討論邏輯結構。VM和HV作為在CPU 20上運行的不同的軟件過程(例如具有不同的各個操作特權等級)存在。因此,運行不同的各個軟件(可以存儲于系統存儲器30中)的共同CPU可以提供(一個或多個)VM和該HV的功能。
[0084]圖3示出了在高等級處地址轉換操作的示意流程圖。
[0085]在步驟100處,檢測關于所需轉換是否由TLB62保持。如果答案為是,則控制傳遞到下面所討論的步驟120。如果答案為否,則控制傳遞到步驟110,在步驟110處,對該存儲器地址的轉換由SMMU 60獲得。然后控制傳遞到步驟120,在步驟120處,使用與由討論中的設備提供的初始VA相對應的PA,系統存儲器30中的所需存儲器地址被訪問。
[0086]圖4示意性示出了邏輯層處的虛擬機、管理程序和SMMU的交互。
[0087]如上面所提到的,VM 130可以與一個或多個設備40、50相關聯。一個或多個VM可以由HV 190監視。為了清楚起見,圖4中僅示出了一個VM。
[0088]VM 130包括與SMMU接口 150交互的驅動器軟件140,該軟件將在下面更詳細地描述。SMMU接口 150與事件隊列160、命令隊列170和第I階段頁面表180進行交互。事件隊列160中的新條目與被發布的中斷相關聯,從而促進VM 130所進行的特定軟件動作。中斷可以由將條目添加到隊列的代理發起。
[0089]事件隊列160、命令隊列170和第I階段頁面表180歸VM 130“所有”或在VM 130的監視下,但事實上被存儲于系統存儲器中。在圖4的表述中,存儲于系統存儲器中的項目被繪制在虛線框34內。然而,那些項目的所有權通過它們是否被繪制在與VM或HV相對應的實線框內來指示。
[0090]HV 190包括SMMU仿真器200,將在下面更詳細討論SMMU仿真器200,并且SMMU仿真器200與事件隊列210、命令隊列220、第2階段頁面表230以及配置表240進行交互。SMMU仿真器200還與VM的SMMU接121150進行交互。
[0091]HV 190還與SMMU 250通過接口連接,SMMU 250利用已建立的兩階段SMMU功能并且包括(在一個或多個寄存器中)指向配置表240的存儲器位置的指針260、指向事件隊列210的存儲器位置的指針270以及指向命令隊列220的存儲器位置的指針280。
[0092]VM和HV表示運行在CPU 20上的各自的軟件過程。它們之間的一個差別(不同于它們在目的和功能上的差別)是針對VM和HV過程的指令被執行的特權等級。HV過程在較高特權等級處被執行,這里“特權”在本文中用于指代可以在不同特權等級處被執行的操作的類型和范圍的意義。通常,較高的特權等級允許較大范圍和/或較寬類型的操作被執行。操作系統(OS)通常將被期望在比應用程序的特權等級更高的特權等級處運行,并且管理程序通常被期望在比由管理程序監視的OS的特權等級更高的特權等級處運行,則這將允許管理程序運行在其之下的可能的多個OS作為VM,該多個VM通過使用虛擬尋址(以及可能的其它技術)來共享系統的資源。由于這個原因,HV可以被稱為“主機”系統并且VM可以被稱為“客戶”系統。
[0093]在現有的示例布置中,對于客戶系統,物理SMMU 250(在圖1中示為SMMU 60)事實上不可直接訪問。但是為了提供VM可以被寫入和執行的環境,VM 130需要被提供有SMMU接口,從VM 130中執行的軟件的視角看,SMMU接口仿佛是SMMU。為了實現這些共同目標,HV190提供對SMMU的一些功能的仿真200,仿真200包括仿真的SMMU接口 150。注意,仿真的接口150事實上不必是對到物理SMMU 250的實際接口的仿真,而可以是不具體表示任意物理設備但被提供給VM 130并且與VM 130處的驅動器140進行交互的通用SMMU接口或其它SMMU接
□O
[0094]因此,再次從VM的視角看,存儲器地址轉換由VM經由仿真接口150訪問的“SMMU”執行。事實上,轉換(或該轉換的至少第2階段操作)至少部分基于由HV經由仿真接口 150接收的信息,由受HV控制的SMMU 250執行。
[0095]SMMU功能具有相關聯的事件隊列(SMMU將指示諸如轉換失敗已發生之類的“事件”(事務成功通常不作為事件來通知,以避免通信的大量產生)的數據寫入該事件隊列),從而使得信息可以由與請求轉換的系統相關聯的軟件從事件隊列中讀取。SMMU功能還具有指示SMMU做什么的命令隊列(與請求轉換的系統相關聯的軟件可以將命令插入到命令隊列中)。針對實際的SMMU,這兩個隊列是事件隊列210和命令隊列220,這兩個隊列都在HV的控制下。重要地是,事件隊列160和命令隊列170作為仿真的一部分由HV 190提供給VM。它們不是SMMU 250的實際的事件和命令隊列,但從VM 130的視角看仿佛是SMMU 250的實際的事件和命令隊列。HV 190控制信息到事件隊列160中的寫入以及從命令隊列170中對信息的讀取。在示例中,這個可以被完成的方式如下。
[0096]當事件由物理SMMU寫入事件隊列210時,HV檢測該事件是否與特定VM (例如VM130)有關,并且如果是,則將該事件寫入該VM 130的事件隊列160。這可以是直接的和文字的副本,或可以涉及將SMMU事件標識符映射到與VM有關的另一事件標識符的轉換過程。類似地,針對VM的命令隊列170,如果HV檢測到命令被寫入VM的命令隊列,則HV將該命令寫入SMMU的命令隊列220。這些過程與下面的討論有關。
[0097]頁面表180、230被提供用于作為兩階段(VA到IPA、IPA到PA)MMU轉換過程的第I階段或第2階段(分別地)的一部分被執行的所謂的頁面表行進過程(walk process) ο
[0098]配置表240存儲與SMMU 250和仿真的SMMU 200的當前配置有關的信息。下面將討論配置表240的使用的與本技術有關的方面。
[0099]圖5是示出了與轉換事務(由在VM的控制下操作的設備進行的從VA到PA的轉換的請求的實例)有關的操作的示意流程圖。
[0100]在步驟300處,SMMU60從各個設備接收事務,例如,響應于來自由客戶系統監視的設備的用于訪問在該客戶系統存儲器地址處的系統存儲器的事務請求,發起或處理針對客戶系統存儲器地址到主機系統物理地址的轉換的事務。
[0101]在步驟310處,SMMU將事務添加到事務緩沖器,包括(例如)存儲與事務有關的標識信息(至少包括標識請求該事務的設備的數據)。來自各個不同設備的事務在它們被接收時被添加到緩沖器,并且它們按處理由SMMU建立的事務的順序(可以是接收事務的順序,但可以是另一順序)被處理。在適當的階段,在步驟320處,特定的事務被請求轉換。在適當的時候,轉換響應由SMMU提供。
[0102]步驟330基于轉換響應的性質來表示決策點。
[0103]如果轉換成功(也就是說VA到PA轉換在無任何錯誤代碼或其它問題(下面更詳細討論這類問題的示例)的情況下被完成),則控制被傳遞到步驟340,在步驟340處,所需的轉換被返回從而使得與該PA相對應的所需的存儲器訪問被執行,并且在步驟350處相應的事務從事務緩沖器中被刪除。在這里,術語“被返回”覆蓋以下情況,諸如事務在成功的轉換后繼續向下進行以便形成或提供用于存儲器訪問的讀/寫地址。因此術語“被返回”不一定指示事務被向回傳遞給做出請求的設備,而是指示作為轉換過程的成功輸出被提供給下一過程。
[0104]在步驟330處,如果事務是它已生成指示轉換失敗的錯誤代碼的情況,則可選地,指示該狀態的事件被寫入事件隊列210(并且如上所討論的,從事件隊列210被寫入相關VM的事件隊列160),然后控制被傳遞到步驟360,在步驟360處,該事務被終止,并且在步驟370處事務從事務緩沖器中被刪除。
[0105]步驟330中提供了第三類結果,在于事務可能被視為已“擱置”。擱置的事務是具有錯誤類型的特定子集的錯誤類型(使得盡管事務已初始失敗,但它可能是可解決的)的事務。因此,關于擱置的事務,控制不傳遞到步驟360而是替代地傳遞到步驟380,在步驟380處,事件被寫入事件隊列210(并且如上所討論的,從事件隊列210被寫入相關VM的事件隊列160)以促進關于該事務的一些補救動作,并且該事務在事務緩沖器中被標記為“擱置的”。
[0106]如下所描述的,在檢測到擱置事務的情況下,采用以下處理過程,包括:向監視請求該事務的設備的客戶系統提供指示轉換錯誤狀況的信息;從客戶系統接收關于該事務的命令;以及通過將針對該事務存儲的標識信息至少與由該命令標識的設備的標識相比較來驗證接收到的命令以供執行。針對擱置的事務,作為引起可能可由監視請求該事務的設備的客戶系統解決的錯誤狀況的事務,下面的步驟可以被執行:(i)存儲與該事務有關的標識信息,所述標識信息至少包括標識請求事務的設備的數據;(ii)向監視請求該事務的設備的客戶系統提供指示轉換錯誤狀況的信息;以及(iii)推遲對擱置事務的繼續處理直到后續命令從與擱置事務有關的客戶系統被接收到。推遲步驟可以包括:推遲對擱置事務的繼續處理直到后續命令從客戶系統被接收到,并且例如通過將提供該命令的設備的標識與同該事務有關的存儲的標識信息進行比較,命令被驗證。
[0107]在步驟390處,與虛擬機130相關聯的軟件嘗試解決引起事務擱置的問題。在步驟400處,如果該嘗試解決成功(或至少由嘗試解決的軟件確定在適用于重試該事務的程度上已成功),則在步驟410處,重試該事務的命令被寫入命令隊列170(并且如上所討論的,被寫ASMMU 250的命令隊列220)。關于該事務,控制然后返回到步驟320以嘗試轉換。然而,如果在步驟400處對擱置事務的嘗試解決被認為失敗,則在步驟420處,命令被寫入命令隊列170(并且被寫入命令隊列220)以終止事務并且控制傳遞到步驟360。
[0108]如上所指出的,在圖4中,VM和HV二者都具有各自的事件隊列和命令隊列。消息被傳送從而使得它們按照VM和HV中正確的一個來動作的方式在上面簡要地被討論并且將在下面更詳細地被討論。
[0109]圖6和圖7示意性地表示事務緩沖器的變型500(圖6)、510(圖7)。
[0110]在每種情況下,事務520(表示設備40、50對VA的轉換的請求或需求)由HV的SMMU仿真器200接收并且被存儲在事務緩沖器中。從設備接收到的每個事務至少包括轉換被請求所針對的VA ο對事務緩沖器中的事務的存儲與圖5中的步驟310相對應。
[0111]如上面所提到的,每個設備40、50具有相關聯的“流ID”,“流ID”在至少一些示例中對該特定設備是唯一的(或至少在被連接到系統的一群設備中是唯一的)。在本示例中流ID與設備相關聯,但是在其它示例中流ID可以與VM相關聯。流ID和設備之間的映射可以由HV維護為流表。(映射可以被永久建立,因此避免需要流表,但這將是相當不靈活的布置)。
[0112]在圖6中,事務520被存儲在事務緩沖器中,從而使得每個存儲的事務可以被單獨訪問,并且使得每個存儲的事務將事務從其中被接收的設備的流ID與它相關聯(例如,作為與該事務有關的存儲的數據的一部分)。圖6中還示意性示出了兩種類型的數據流,在失敗事務或擱置事務的情況下,與該事務有關的數據可以被寫入事件隊列210,并且在一些情況(例如,與圖5的步驟410、420相對應的那些情況)下,與該事務有關的數據可以被寫入命令隊列220以便對該事務的執行產生影響。
[0113]圖7中示出了替代布置,其中事務緩沖器510在物理上或邏輯上被劃分,從而使得從每個設備接收到的事務被存儲在事務緩沖器的各自單獨地可尋址區域中。在該實例中,可以避免存儲對流ID的明確記錄的需要,但是流ID與對應于每個事務的記錄的關聯被維持。
[0114]圖8是覆蓋圖5中所示的從步驟330的操作的部分處(即不涉及成功事務的部分)開始的一些過程的示意流程圖。
[0115]在步驟600處,轉換錯誤被檢測到。如上面所討論的,轉換錯誤可以是被分類為失敗并且使得控制傳遞到圖5中的步驟360的“致命的”轉換錯誤。或者轉換錯誤可以被分類為“擱置”。如上面所提到的,擱置事務是可能可解決的事務,但就針對這樣的狀態的具體測試而言,在步驟610處,失敗事務的性質被與用于定義事務是否是擱置的準則進行比較。如果事務滿足針對擱置的準則,則控制傳遞到步驟620。如果未滿足,則控制傳遞到步驟635,步驟635示意性表示由圖5中的步驟360、370指示的路徑。
[0116]事務失敗可能存在各種原因。這些原因中只有一些原因是可能可解決的并且因此適用于事務“擱置”狀態。其它類型的事務失敗可能直接導致失敗通知(步驟635)而不是擱置處理。因此,步驟610中所用的準則可以是與事務擱置相關聯的錯誤類型的集合的子集。這樣的子集的示例包括:
[0117]1.地址大小故障
[0118]i1.訪問故障
[0119]ii1.轉換故障
[0120]iv.許可故障
[0121]如果檢測到的故障是在故障的子集(例如上面所列出的子集)內,則在步驟610處轉換被視為“擱置的”。如果檢測到的故障是不在故障的子集中的故障,則在步驟610處轉換被視為“失敗的”。
[0122]因此這提供了針對轉換錯誤狀況從一組或兩個或多個錯誤類型中檢測錯誤類型的示例;針對錯誤類型的第一子集,終止事務;并且針對除錯誤類型的第一子集中的那些錯誤類型之外的錯誤類型,執行擱置事務處理過程。
[0123]在步驟620處,事件由SMMU寫入事件隊列210,并且HV檢測到新寫入的事件的存在。然后,在步驟630處,HV將該事件映射到相應的VM事件,并且將來自事件隊列210的事件寫入以形成VM 130的事件隊列160中的相應事件。映射的原因是使得對客戶系統來說好像客戶系統直接與硬件連接而不是經由HV連接。
[0124]注意,在某些情況下,HV190實際上可以未將特定事件(與擱置事務有關)寫入VM130的事件隊列160。例如,如果當前故障是HV可以(并且應該)解決的故障(例如,僅與第2階段轉換相關聯的一些類型的故障,并且來自由VM 130監視的設備的請求對這些類型的故障無影響),則HV本身可以解決故障。盡管在HV處理這樣的故障時這樣的故障可能被標記為擱置的,但是沒必要涉及VM 130或后續驗證(參見下文)與故障的解決有關的命令。然而,本說明書的剩余內容將涉及被通知給VM 130以供可能的解決的故障。
[0125]VM 130的事件隊列160中的事件促進VM 130在關于事務的問題上采取某種補救動作。這在圖8中由步驟632表示,并且在步驟634處,VM 130將命令寫入VM 130的命令隊列170。注意,步驟632、634是為了解釋清楚的目的而示出的,但是(相比于圖8的剩余內容)其是在VM 130處被執行而不是由HV 190或SMMU 250執行的步驟。
[0126]就針對HV 190的控制流而言,控制從步驟630傳遞到步驟640,在步驟640處,HV在VM命令隊列170中檢測到命令的存在,并且在步驟650處,HV和SMMU對命令進行驗證。驗證過程將在下面進一步討論。針對成功驗證的命令,在步驟660處,HV將該命令映射到相應的SMMU命令,并且將它寫入SMMU命令隊列220AMMU 250在命令隊列220中檢測到命令的存在并且執行該命令。
[0127]步驟650、660、670之間的交互可以根據實現方式而改變。例如,HV可以在將命令寫入SMMU命令隊列220之前驗證命令,從而使得只有被驗證的命令被寫入命令隊列220。替代地,命令可以被寫入SMMU命令隊列220但是SMMU本身阻止執行命令直到HV 190和SMMU已驗證命令用于執行。無論哪種情況,結果是僅在步驟660處已被驗證的那些命令由SMMU 250執行。
[0128]圖9到圖11是表示上面所示的過程的特定部分的流程圖。
[0129]在圖9中,對事務緩沖器500、510中的事務的初始存儲(指圖5的步驟310)包括:將事務存儲在事務緩沖器500、510中(在步驟700處),并且在步驟710處存儲或保留相對于該事務的流ID。如上面所討論的,流ID可以被明確存儲為與該事務相關聯的事務緩沖器中的條目的一部分,或可以明確通過選擇該事務被存儲在該事務緩沖器的哪一部分來被存儲。
[0130]圖10涉及擱置事務的情況下圖5的步驟380。所謂的“擱置標簽”(STAG)從事務緩沖器500、510中存儲的數據中被創建或被讀取。在事務緩沖器510的一些實現方式的情況中,已存儲于事務緩沖器(或實際上緩沖器中的事務的位置)中的數據可以與作為STAG所要求的數據相對應。在其它實現方式中,STAG從被存儲在事務緩沖器中的數據中得到。下面將給出STAG的示例。然后,在步驟730處,至少最初發布該事務的設備的流ID和STAG作為與該擱置事務有關的事件的一部分被寫入事件隊列210。
[0131]STAG可以提供與事務有關的各種類型的數據。基本要求是STAG允許單獨的事務(獨立地或與流ID—起)位于事務緩沖器中。這提供了標識信息的示例,該標識信息包括標識在SMMU處理的其它事務中的該事務的信息。
[0132]因此,在示例中,STAG可以提供事務標識符,例如計數器或作為事務緩沖器中該事務的條目的一部分被分配給該事務的其它值。分配的值不需要在整個時間段或就系統的操作而言是唯一的,而是僅在事務緩沖器或事務緩沖器的子部分中當前保持的那些事務中是唯一的。當事務從事務緩沖器中被移除(例如,在圖5的步驟350或370處),則與該事務相關聯的STAG可用于被分配給另一新接收到的事務。在示例布置中,事務標識符可以被存儲為事務緩沖器中的每個相應事務條目的一部分,從而使得當SMMU需要定位事務緩沖器中的特定事務時,它可以通過將特定事務的事務標識符與事務緩沖器中存儲的事務標識符進行比較來完成。
[0133]在其它示例中,STAG還提供上面討論的通用類型的事務標識符,但是對事務標識符的存儲是隱含的從而使得事務標識符實際上形成定義該事務條目在事務緩沖器中被存儲的地址的全部或一部分。即使事務緩沖器中的每個條目占用不止一個字節,這仍然可以適用;事務標識符可以指向(例如)每個這樣條目的起點。例如,如果事務緩沖器中的每個條目占用(假設)16字節,則事務標識符可以被用作事務緩沖器中該條目的地址的除四個最低有效位外的全部位,從而使得(例如)相應條目的第一字節的地址是[事務標識符]0000。按這種方式,當SMMU需要定位事務緩沖器中的特定事務時,它可以通過(至少部分地)使用該特定事務的事務標識符來尋址事務緩沖器得以完成。
[0134]因此,如所討論的,除事務緩沖器中的其它條目以外,STAG的功能將提供允許事務(由這樣的標識符標識)位于事務緩沖器中的事務標識符。STAG可以提供其它信息。或者,其它信息可以作為事務緩沖器中由STAG標識的條目的一部分被提供。
[0135]注意,在圖7的示例中,事務標識符和流ID的組合標識單獨的事務。在圖6中,簡單的事務標識符原則上可以標識事務緩沖器中的每個單獨的事務。或者事務標識符(針對每個流ID單獨操作)和流ID的組合可用于標識特定的事務。
[0136]可以與事務緩沖器中的條目相關聯的其它信息(不論是否被包括為STAG的一部分)的示例包括以下各項中的一個或多個:
[0137]1.指示事務所源于的設備和/或VM的流ID或另一標識符。在示例實施例中,流ID被用于指示事務所源于的設備;
[0138]i1.事務被請求所針對的VA;
[0139]i i 1.與事務有關的存儲器訪問的類型(例如,讀、寫或指令獲取)。
[0140]上面提到的步驟730涉及提供HV的事件隊列210中的“事件”。“事件”是之后可以例如由與VM 130相關聯的軟件用于嘗試解決引起事務擱置的問題或確定實際上沒有任何解決方案是可能的信息的集合。可以作為這樣的事件的一部分被提供的數據的示例為如下。僅為了說明的目的,這里假設STAG僅提供上面所討論的事務標識符功能。
[0141]1.STAG;
[0142]i1.用于產生的設備的流ID;
[0143]ii1.指示的轉換故障類型(上面討論了本示例中引起擱置事務的四種示例類型轉換故障-這些轉換故障可以通過各自的兩位代碼在事件數據中標識)的故障代碼;
[0144]iv.事務被請求所針對的VA;
[0145]V.存儲器訪問的類型;以及
[0146]v1.指示故障是否在第I階段或第2階段轉換處發生的標記。
[0147]對STAG和流ID的配設因此給出了提供標識該事務的信息和標識該請求事務的客戶系統(或更具體地,標識設備)的信息的示例。在示例實施例中,標識請求該事務的設備的數據可以包括標識與客戶系統(該客戶系統發起訪問與該事務相關聯的系統存儲器的請求)相關聯的設備的數據。
[0148]將STAG和上面所討論的一些或更多其它數據提供為被添加到事件隊列的事件的一部分提供了生成事務標識符的示例,所述事務標識符數據包括:請求該事務的系統的標識符、在由主機系統處理的其它事務中的該事務的標識符、定義錯誤類型的數據、與該事務有關的客戶系統存儲器地址、以及定義由客戶系統請求的存儲器訪問的類型的數據;并且向監視請求該事務的設備的客戶系統提供該事務標識符數據。
[0149]這些數據被傳遞到HV的事件隊列210。服將事件寫入適當VM130的各自事件隊列160(表示與監視請求該事務的設備的客戶系統相關聯的事件隊列)(在上面所述的步驟630處)。在示例布置中,HV通過檢測與事件相關聯的流ID以及從流表中的設備ID識別相應VM以及識別由VM的HV保持的到設備的映射來檢測哪個VM 130是適當的。該兩階段過程提供了執行以下操作示例:將事務標識符數據添加到與主機系統相關聯的事件隊列;以及將事務標識符數據從與主機系統相關聯的事件隊列復制到與監視請求該事務的設備的客戶系統相關聯的事件隊列。
[0150]在某些示例實例中,HV僅將事件從事件隊列210復制到適當VM130的事件隊列160。在其它實例中,HV可以在復制之前修改與事件相關聯的數據,從而使得事件數據的經修改的版本被寫入適當VM 130的事件隊列160。例如,如果布置為VM 130不知道兩階段轉換被使用,則HV可以刪除指示故障是否在第I階段或第2階段轉換處發生的標記。在其它示例中,HV可以將故障代碼映射到與可以由VM 130解決的事情有關的故障代碼的不同集合中的一個。例如,第2階段轉換故障(其中例如IPA嘗試訪問被禁止的地址)可以作為外部中止記錄(例如,頁面表行進上的外部中止)被轉發到客戶VM,外部中止記錄告訴客戶系統諸如頁面表行進之類的轉換步驟引起非法的(考慮VM的許可的界限)訪問。作為這種類型的技術的另外的示例,HV可以按允許很多設備被HV區分的形式維護流ID(例如,流ID 2991和流ID12920),而VM可以維護更簡單的流ID系統,其僅需區分由該VM監視的設備(例如,流ID I和0)。服可以維護流ID的這些版本之間的映射,從而使得與VM有關的流ID的版本在適當的情況下被代入或代出與事件相關聯的數據。總之,映射的命令被布置,從而使得客戶OS不需要被修改來與HV—起工作(注意,客戶OS不知道HV的存在)。顆130嘗試解決問題,或替代地確定問題是不可解決的。與產生該事務的設備相關聯的軟件然后將命令放置在命令隊列170上。命令可以包括(例如)至少下面的信息:
[0151]1.STAG
[0152]i1.流ID
[0153]ii1.解決代碼,例如指定“重試”或“中止”。注意,“中止”代碼可能由VM所進行的嘗試的但失敗的解決而引起,或可能由VM 130進行的簡單的確定問題是不可解決的而引起。
[0154]通常,命令可以包括作為事件通知的一部分被提供的事務標識符數據中的一些或全部。來自客戶系統的命令因此可以包括標識該事務的信息和/或標識請求該事務的設備的信息。
[0155]如上面所討論的,HV和SMMU對命令進行驗證并且HV寫入命令。該過程可以包括:在與監視請求事務的設備的客戶系統相關聯的命令隊列中檢測命令;以及將命令從與監視請求該事務的設備的客戶系統相關聯的命令隊列復制到與SMMU相關聯的命令隊列。驗證過程可以包括:將來自客戶系統的命令中的事務標識符數據中請求事務的設備的標識符與存儲的標識信息進行比較。驗證過程可以包括:如果針對該事務存儲的標識信息不與由命令標識的設備相對應,則禁止或阻止命令的執行。下面將更詳細描述驗證過程。
[0156]圖11涉及作為圖8的驗證步驟650的示例的、管理程序和SMMU的操作。
[0157]總體來看,發出命令的是客戶系統或VM(監視發起擱置事務的設備)。作為響應,HV檢查正確的VM正在發出命令,也就是說監視命令中指定的設備的VM正在發出命令。SMMU開始或發起它對事情的處理,并且檢查命令中指定的設備與初始存儲的事務信息中指定的設備或流ID相匹配。
[0158]步驟740與圖8的步驟640相對應,在圖8的步驟640中,對命令隊列170的寫入操作被檢測。寫入命令(事實上是被寫入VM命令隊列的初始命令)包括STAG并且還明確或隱含地指示提供該命令的設備的流ID。
[0159]在步驟750處,SMMU從該命令檢測STAG。SMMU使用STAG訪問事務緩沖器,從而使得SMMU識別事務緩沖器中與該STAG相對應的單個事務。如上面所討論的,這可能涉及在事務緩沖器中搜索具有相同STAG的事務,或可能涉及使用STAG作為訪問事務緩沖器的地址(或地址的至少一部分)。
[0160]關于事務緩沖器中保持的每個事務,事務緩沖器存儲或以其它方式提供該事務所源于的設備的流ID。
[0161]HV因此檢查命令中指定的流ID是由產生該命令的客戶系統監視的設備的流ID。SMMU從事務緩沖器500、510中檢測與相應事務有關的流ID,并且在步驟760處至少將來自事務緩沖器的流ID與由與該事務有關的命令指定的設備的流ID進行比較。
[0162]如果流ID匹配,則在步驟770(與圖8的步驟660相對應)處命令被驗證以供執行。
[0163]但是如果不匹配,則命令未被驗證并且被忽略或被刪除。
[0164]步驟780與上面討論的步驟660相對應,在步驟660處(在驗證的命令的情況下)相應的命令被寫入SMMU命令隊列220。
[0165]驗證測試因此(在這些示例中)包括對流ID的兩個版本(一個來自接收的命令,并且一個是存儲具有事務緩沖器中的初始條目的版本)的簡單的比較,如果產生擱置事務的相同設備由現在嘗試重試或中止該事務的客戶系統監視,則兩個版本應該完全匹配。類似地,與事務信息相關聯的流ID應該與由命令指定的設備的流ID相匹配。這些測試可以幫助避免一個客戶影響由另一客戶產生的事務,作為錯誤的結果或作為可能的安全問題,使得一個設備嘗試欺騙地或以其它方式不適當地影響由另一設備發起的事務。
[0166]在實施例中,驗證包括核查產生命令的客戶系統正在監視由該命令標識的設備。
[0167]對HV來說無需解碼STAG或驗證STAGdSTAG因此對HV可以是“不透明的”,從而使得它的準確值或重要性與HV無關(除它標識特定事務的事實外)。對HV來說也無需維護定義事務擱置的順序的數據。
[0168]注意如上面所討論的,(a)將命令寫入SMMU命令隊列以及(b)驗證命令以供執行,上面的(a)和(b)過程可以按任一順序被執行,從而使得例如僅已被驗證的命令由HV寫入SMMU命令隊列220、或被寫入SMMU命令隊列的命令被阻止執行直到和除非命令已被驗證。在示例實施例中,僅被驗證的命令被寫入SMMU命令隊列。
[0169]圖12涉及在VM將被關閉的情況下被執行的操作的示意流程圖。
[0170]圖12的布置可能用于具有擱置故障模型(其中,故障事務可被保持/擱置待之后的軟件解決,軟件解決利用恢復(重試)或終止(中止)對擱置事務的處理的命令)的SMMU的情況。
[0171 ]在正常操作中,擱置事務通過一個恢復/終止命令來解決。由于擱置事務消耗SMMU資源,事務不應該被置為無限期地擱置否則系統可能鎖定。當SMMU被用于向VM分配對設備的控制時,在到達終止該VM和收回資源的時間時,設備可能被期望處于不可預知的狀態。在這樣的情況下,在示例實施例(例如結合圖12所討論的那些)中,HV可以適當地假設擱置事務可能存在(來自于未被正確恢復的之前的故障),并且這些擱置事務應該全部被清除(例如,被刪除或被移除),否則系統可能死鎖。
[0172]對于HV來說,選項可以是追蹤被記錄到軟件的所有擱置故障(在將這些故障傳送到VM期間)。未解決的擱置的列表將被維護、相對于VM的恢復/終止命令交叉檢查以解決擱置。當VM將被終止時,列表應該指示未被確認/單獨終止的未解決的擱置,并且HV應該需要在逐個事務的基礎上發出單獨的恢復/終止命令。該方法的可能的劣勢包括在軟件上的額外的復雜性和額外的不間斷的處理要求。
[0173]示例實施例用與下面討論的步驟840相對應的命令或過程解決這些問題,與下面討論的步驟840相對應的命令或過程終止(或使得被設為終止)與給定流ID(設備)有關的所有未解決的擱置(不論它們是否已被記錄到軟件)并且無需知道關于可能存在哪些單獨的擱置的細節。這表示HV無需追蹤單獨的未解決的擱置,因為它們不需要被單獨匹配到單獨的終止命令。這可以在VM發起關閉分配的設備(安全/嚴格隔離路徑)后,簡化清除。此外,由于流量不能被保證在清除時是靜止的,因此HV可以通過將設備配置為停止發出新的事務并且設置任意新到達的事務被立即終止而不是擱置來以與該過程無競爭的方式關閉客戶設備流。針對流的擱置事務的設置現在是不變的。管理程序終止擱置事務的全部集合。由于無任何新的事務可以擱置,因此保證無任何擱置將留下。HV指示(一個或多個)設備等待所有未解決的事務終止。注意,終止過程將終止擱置事務,而不論擱置故障是否被報告到軟件。
[0174]轉向圖12,VM可以由于各種原因被關閉。VM本身可以決定關閉它的過程。替代地,VM可以失靈(crash)。在另外的替代方式中,由于VM所采取的一些不適當的動作(例如,嘗試違反它的操作特權的操作),HV可以而采取關閉VM的決定。在這些情況中的任意情況下,在本公開中認識到,VM的關閉可能(在缺乏對解決該可能問題的措施的情況下)沒有給事務緩沖器500、510中的若干擱置事務留下針對隨后要被刪除的事務的任何機會。這是因為擱置事務的刪除依賴從產生它的VM接收命令,但是在本情況下,特定VM(將需要提供命令以在那些事務上采取進一步的動作)不再存在。
[0175]在步驟800處,HV 190檢測VM“狀況”。在本文中,如所討論的,狀況可以是VM正在自愿關閉、VM正在通過失靈的方式不自愿地關閉、HV已決定關于該VM關閉VM等等。通常,VM狀況是指示VM已至少發起與該客戶系統有關的關閉過程(或服從與該客戶系統有關的關閉過程)的VM狀況。例如,關閉過程可以包括以下各項中的任一項:引起客戶系統的關閉的主機系統;在關閉的客戶系統;以及遭受操作故障的客戶系統。
[0176]—系列步驟然后被執行以關于未決的SMMU事務提供對VM的干凈的關閉。在本文中,術語“干凈的”用于指示關閉可以在沒有無限期地留下未解決的擱置事務的情況下發生。假設討論中的VM監視一個或多個設備。
[0177]在步驟810處,HV本身關閉(或指示VM關閉)(高達所有的)與該VM相關聯的一個或多個設備,從而使得它們無法發出針對存儲器轉換的任何另外的事務。步驟810提供了在針對客戶系統取消任意當前擱置事務之前(針對該客戶系統,命令尚未從相應的客戶系統接收),執行以下操作的步驟的示例:阻止一個或多個設備發出任何另外的事務。
[0178]然后,在步驟820處,HV將配置表240設置為指示針對與討論中的一個或多個設備有關的流ID的任意傳入的事務將不被存儲在事務緩沖器500、510中,而是將被立即終止。步驟810、820可以按任一順序被執行。步驟820提供了在針對該設備或那些設備取消任意當前擱置事務之前(針對該設備或那些設備,命令尚未從相應的客戶系統接收),執行以下操作的示例:將終止規則設置為終止由主機系統從由該客戶系統監視的一個或多個設備新接收的任意事務。
[0179]步驟830應用所謂的“同步”操作,該“同步”操作確保通過步驟820被應用到配置表的設置對所有傳入的事務起作用。
[0180]然后,在步驟840處,HV將針對討論中的一個或多個流ID的所有當前擱置事務設置為終止。這可以包括立即終止那些擱置事務或僅將它們設置為在適當的時候終止。這提供了執行以下操作的示例:響應于發起關閉過程,針對由該客戶系統監視的一個或多個設備發起任意當前擱置事務的取消(或事實上消除)。如所提到的,該過程由流ID執行,從而使得它提供執行以下操作的示例:針對該設備或那些設備檢測任意當前擱置事務,針對該擱置事務,命令尚未由相應的客戶系統提供,客戶系統已存儲與由客戶系統監視的一個或多個設備(關閉過程已被發起)相對應的標識信息;以及發起對所有檢測到的事務的取消。例如,一個或多個流ID可以與客戶(VM)相對應,對應關系由流表提供。
[0181]在步驟850處,HV指示VM和討論中的(一個或多個)設備等待關于所有未解決事務的響應。步驟850提供響應于關閉過程的發起執行以下操作的示例:指示由客戶系統監視的一個或多個設備等待對任意未解決事務的響應。
[0182]因此,在至少某些實施例中,主機系統提供SMMU、事務緩沖器、錯誤處理邏輯、檢測器和取消邏輯。
[0183]在本申請中,詞“被配置為...”用于表示具有執行定義的操作的配置表的裝置的元件。在該上下文中,“配置”表示硬件或軟件的互連的方式或布置。例如,裝置可以具有提供定義的操作的專用硬件,或處理器或其它處理設備(例如CPU 20)可以被編程為執行該功能。“被配置為”不隱含為了提供定義的操作裝置元件需要以任意方式被改變。
[0184]盡管本技術的說明性實施例已在本文中參照附圖進行了詳細描述,但是要理解的是本技術不限于那些精確的實施例,并且在不脫離由所附權利要求定義的技術的范圍和精神的情況下,本領域技術人員可以在其中產生各種變化、添加和修改。例如,在不脫離本技術的范圍的情況下,可以進行對從屬權利要求的特征與獨立權利要求的特征的各種組合。
【主權項】
1.一種操作主機數據處理系統的方法,所述主機數據處理系統為一個或多個客戶數據處理系統提供虛擬操作環境,所述方法包括: 響應于來自由客戶系統監視的設備的針對訪問在客戶系統存儲器地址處的系統存儲器的事務請求,發起針對所述客戶系統存儲器地址到主機系統物理地址的轉換的事務; 存儲與所述事務有關的標識信息,所述標識信息至少包括標識請求所述事務的設備的數據; 檢測關于所述事務的轉換錯誤狀況:以及 通過以下操作處理檢測到的錯誤狀況: (i)向監視請求所述事務的設備的所述客戶系統提供指示所述轉換錯誤狀況的信息; (ii)從所述客戶系統接收關于所述事務的命令,來自所述客戶系統的命令包括標識請求所述事務的設備的信息;以及 (iii)通過將針對所述事務的存儲的標識信息至少與由所述命令標識的所述設備的標識進行比較,驗證接收到的命令以供執行。2.如權利要求1所述的方法,其中,所述標識信息包括:標識在由所述主機系統處理的其它事務中的所述事務的ig息。3.如權利要求1所述的方法,其中,提供步驟包括: 提供標識所述事務的信息和標識請求所述事務的設備的信息。4.如權利要求3所述的方法,其中,來自所述客戶系統的命令包括標識所述事務的信息。5.如權利要求1所述的方法,其中,檢測步驟包括: 關于所述轉換錯誤狀況,從一組或兩個或多個錯誤類型中檢測錯誤類型; 針對錯誤類型的第一子集,終止所述事務;以及 針對除錯誤類型的所述第一子集中的錯誤類型之外的錯誤類型,執行處理步驟。6.如權利要求1所述的方法,其中,所述提供步驟包括: 生成包括以下各項的事務標識符數據:請求所述事務的設備的標識符、在由所述主機系統處理的其它事務中的所述事務的標識符、定義錯誤類型的數據、與所述轉換有關的客戶系統存儲器地址、以及定義由所述設備請求的存儲器訪問的類型的數據;以及 向監視請求所述事務的設備的所述客戶系統提供所述事務標識符數據。7.如權利要求6所述的方法,其中,所述提供步驟包括:將所述事務標識符數據添加到與監視請求所述事務的設備的所述客戶系統相關聯的事件隊列。8.如權利要求7所述的方法,其中,所述提供步驟包括: 將所述事務標識符數據添加到與所述主機系統相關聯的事件隊列;以及 將所述事務標識符數據從與所述主機系統相關聯的事件隊列復制到與監視請求所述事務的設備的所述客戶系統相關聯的事件隊列。9.如權利要求8所述的方法,其中,復制步驟包括:在將所述事務標識符數據復制到與監視請求所述事務的設備的所述客戶系統相關聯的事件隊列之前,修改定義錯誤類型的數據。10.如權利要求8所述的方法,其中,復制步驟包括:在將所述事務標識符數據復制到與監視請求所述事務的設備的所述客戶系統相關聯的事件隊列之前,修改標識請求所述事務的設備的數據。11.如權利要求7所述的方法,其中,來自所述客戶系統的命令包括所述事務標識符數據。12.如權利要求11所述的方法,其中,接收步驟包括: 在與監視請求所述事務的設備的所述客戶系統相關聯的命令隊列中檢測由所述客戶系統發出的命令;以及 將所述命令從與監視請求所述事務的設備的所述客戶系統相關聯的命令隊列復制到與所述主機系統相關聯的命令隊列。13.如權利要求1所述的方法,其中,驗證步驟包括:核查產生所述命令的所述客戶系統正在監視由所述命令標識的所述設備。14.如權利要求1所述的方法,其中,驗證步驟包括:如果針對所述事務的存儲的標識信息不與由所述命令標識的所述設備相對應,則阻止對所述命令的執行。15.—種主機數據處理系統,所述主機數據處理系統被配置為針對一個或多個客戶數據處理系統提供虛擬操作環境,所述主機數據處理系統包括: 存儲器管理單元,所述存儲器管理單元被配置為:響應于來自由客戶系統監視的設備的針對訪問在客戶系統存儲器地址處的系統存儲器的事務請求,發起針對所述客戶系統存儲器地址到主機系統物理地址的轉換的事務; 事務緩沖器,所述事務緩沖器被配置為:存儲與所述事務有關的標識信息,所述標識信息至少包括標識請求所述事務的設備的數據; 錯誤檢測器,所述錯誤檢測器被配置為檢測關于所述事務的轉換錯誤狀況:以及 錯誤處理邏輯,所述錯誤處理邏輯被配置為通過以下操作處理檢測到的錯誤狀況: (i)向監視請求所述事務的設備的所述客戶系統提供指示所述轉換錯誤狀況的信息; (ii)從所述客戶系統接收關于所述事務的命令,來自所述客戶系統的命令包括標識請求所述事務的設備的信息;以及 (iii)通過將針對所述事務的存儲的標識信息至少與由所述命令標識的所述設備的標識進行比較,驗證接收到的命令以供執行。16.—種主機數據處理系統,所述主機數據處理系統可操作于針對一個或多個客戶數據處理系統提供虛擬操作環境,所述主機數據處理系統包括: 用于響應于來自由客戶系統監視的設備的針對訪問在客戶系統存儲器地址處的系統存儲器的事務請求,發起針對所述客戶系統存儲器地址到主機系統物理地址的轉換的事務的裝置; 用于存儲與所述事務有關的標識信息的裝置,所述標識信息至少包括標識請求所述事務的設備的數據; 用于檢測關于所述事務的轉換錯誤狀況的裝置:以及 用于向監視請求所述事務的設備的所述客戶系統提供指示所述轉換錯誤狀況的信息的裝置; 用于從所述客戶系統接收關于所述事務的命令的裝置,來自所述客戶系統的命令包括標識請求所述事務的設備的信息;以及 用于通過將針對所述事務的存儲的標識信息至少與由所述命令標識的所述設備的標 識進行比較來驗證接收到的命令以供執行的裝置。
【文檔編號】G06F12/1072GK105938460SQ201610102816
【公開日】2016年9月14日
【申請日】2016年2月24日
【發明人】馬修·呂西安·伊萬斯, 斯坦尼斯洛·澤爾尼亞斯基
【申請人】Arm 有限公司