用于降低執行硬件表移動需要的時間和計算資源的量的方法和系統的制作方法
【技術領域】
[0001]本發明涉及計算機系統,而更具體地說,涉及計算機系統和供計算機系統中使用以降低執行硬件表移動(HffTW)需要的時間和計算資源的量的方法。
【背景技術】
[0002]現代計算機系統使用內存管理單元(MMU)來管理向一個或多個物理存儲設備(諸如例如固態存儲設備)寫數據以及從一個或多個物理存儲設備讀取數據。計算機系統的MMU向計算機系統的中央處理單元(CPU)提供虛擬內存,其允許CPU在其自己專用的、連續的虛擬內存地址空間上運行每一個應用程序,而不是使所有的應用程序共享物理內存地址空間,所述物理內存地址空間經常是成碎片的或非連續的。MMU的目的是針對CPU將虛擬內存地址(VA)轉化成物理內存地址(PA)。CPU通過直接地對MMU讀和寫VA來間接地讀和寫PA,所述MMU將VA轉化成PA,并且然后寫或讀PA。
[0003]為了執行該轉化,MMU存取被存儲在系統主存儲器中的頁表。該頁表由頁表的條目組成。該頁表的條目是由MMU使用來將VA映射成PA的信息。MMU通常包括轉換旁路緩沖器(TLB),其是被用于緩存最近使用的映射的高速緩沖存儲器單元。當MMU需要將VA轉化成PA時,MMU首先檢查TLB以確定是否存在針對該VA的匹配。如果有,則MMU使用在TLB中找到的映射來計算PA,并且然后存取PA(即,讀或寫PA)。這被稱為TLB “命中”。如果MMU沒有在TLB中找到匹配,則這被稱為TLB “未中”。
[0004]在TLB未中事件中,MMU執行被稱為硬件表移動(HffTW)的操作。HffTW是耗時的且計算上開銷很高的過程,所述過程涉及執行“表移動”,以在MMU中查找相應的頁表,并且在頁表中讀取多個位置,以查找相應的VA-至-PA的地址映射。然后,MMU使用該映射來計算相應的PA,并且將該映射寫回到TLB。
[0005]在實現操作系統(OS)虛擬化的計算機系統中,將虛擬內存監視器(VMM)(通常還被稱為系統管理程序)插入到計算機系統的硬件與計算機系統的系統OS之間。系統管理程序在特權模式下執行,并且能夠主管一個或多個客戶高級OS。在這樣的系統中,運行在OS上的應用程序使用虛擬內存的第一層的VA來對內存尋址,以及運行在系統管理程序上的OS使用虛擬內存的第二層的中間物理地址(IPA)來對內存尋址。在MMU中,執行階段I (SI)轉化,以將每一個VA轉化成IPA,以及執行階段2 (S2)轉化,以將每一個IPA轉化成PA0
[0006]如果在執行這樣的轉化時發生TLB未中,則執行多級的、二維(2-D)的HWTW,以獲得計算相應的IPA和PA需要的表條目。執行這些多級的、2-D的HWTW,能夠引起MMU的大量計算開銷,其通常導致性能代償。
[0007]圖1是當執行讀事務時發生TLB未中時執行已知的、三級的、2-D的HffTW的插圖。圖1中示出的HffTW表示針對三級的、2-D的HffTW的最壞情況的場景,需要十五次表查找的執行來在數據被存儲在物理內存中的地方獲得PA。針對這個示例,計算機系統的MMU正在運行主管至少一個客戶高級OS(HLOS)的系統管理程序,繼而,其正運行至少一個應用程序。在這樣的配置中,正被客戶HLOS分配的內存不是系統的真實的物理內存,而是上述的中間物理內存。系統管理程序分配真實的物理內存。因此,將每一個VA轉化成IPA,然后,將IPA轉化成讀取的數據實際被存儲的地方的真實物理內存的PA。
[0008]該過程開始于MMU接收SI頁全局目錄(P⑶)IPA 2。針對這個最壞情況場景的示例,將假設的是,在MMU針對匹配檢查TLB時發生TLB未中。因為該未中,MMU必須執行HWTW。HffTW涉及執行三次S2表查找3、4和5,以獲得將IPA 2轉變成PA所需的映射,以及一次額外的查找6來讀取PA。表查找3、4和5分別涉及讀取S2P⑶、頁中間目錄(PMD)和頁表條目(PTE)。在查找6處讀取PA為MMU提供SI PMD IPA 7。針對這個最壞情況場景的示例,將假設的是,當MMU針對匹配利用SI PMD IPA 7來檢查TLB時發生TLB未中。因為該文中,所以MMU必須執行另一 HWTW。該HffTW涉及執行三次S2表查找8、9和11,以獲得將SI PMD IPA 7轉變成PA所需的映射,以及一次額外的查找12來讀取PA。表查找8、9和11分別涉及讀取S2P⑶、PMD和PTE。在查找12處讀取PA為MMU提供SI PET IPA 13。
[0009]針對這個最壞情況場景的示例,將假設的是,當MMU針對匹配利用SI PTE IPA 13來檢查TLB時發生TLB未中。因為該未中,MMU必須執行另一 HWTW。該HffTW涉及執行三次S2表查找14、15和16,以獲得將SI PTE IPA 13轉變成PA所需的映射,以及一次額外的查找17來讀取PA。表查找14、15和16分別涉及讀取S2 PGff,PMD和PTE。在查找17處讀取PA為MMU提供真實的IPA 18。針對這個最壞情況場景的示例,將假設的是,當MMU針對匹配利用真實的IPA 18來檢查TLB時發生TLB未中。因為該未中,MMU必須執行另一 HWTW。該HffTW涉及執行三次S2表查找19、21和22,以獲得將真實的IPA 18轉變成PA所需的映射。表查找19、21和22分別涉及讀取S2P⑶、PMD和PTE。然后,讀取PA來獲得相應的讀數據。在查找18處讀取PA為MMU提供SI PTE IPA 13。
[0010]因此,能夠看出的是,在針對三級的、2-D的HffTW的最壞情況場景下,執行了 12次S2表查找和三次SI表查找,其是消耗大量時間并導致性能代償的大量計算開銷。已經使用各種各樣的技術和架構來降低在執行HffTW中涉及的時間和處理開銷的量,包括,例如,增加TLB的大小,使用多個TLB,使用平面嵌套的頁表,使用影子分頁或推測的影子分頁,以及使用頁移動高速緩沖存儲器。雖然所有的這些技術和架構能夠降低與執行HffTW相關聯的處理開銷,但是,它們經常導致計算機系統中別的地方的處理開銷的增加。
[0011]因此,存在針對降低執行HffTW需要的時間和計算資源的量的計算機系統和方法的需求。
【發明內容】
[0012]本發明針對一種計算機系統和一種供在計算機系統中使用的方法,用于降低執行HffTW需要的時間和計算資源的量。該計算機系統包括至少一個中央處理單元(CPU)、至少一個物理內存、至少一個TLB和至少一個MMU。CPU運行主機OS和系統管理程序。系統管理程序控制CPU上的至少第一客戶OS的執行。系統管理程序運行與第一客戶OS相關聯的至少第一 VM。物理內存具有可由PA尋址的物理內存位置。將至少一個頁表存儲在物理內存的物理內存位置處。頁表包括與用于將IPA映射成物理內存的真實PA的映射相對應的頁表條目。TLB存儲頁表條目的子集。當執行內存訪問時,MMU確定與IPA相關聯的頁表條目是否被存儲在TLB中。如果與IPA相關聯的頁表條目未被存儲在TLB中,則已經發生TLB未中。如果發生TLB未中,則預測存儲與IPA相關聯的數據處的物理內存的PA,由此避免通過執行HffTW來計算PA的需求。
[0013]該方法包括:
[0014]在MMU 中:
[0015]確定與IPA相關聯的頁表條目是否被存儲在TLB中;
[0016]如果作出與IPA相關聯的頁表條目未被存儲在TLB中的確定,則判定已經發生TLB未中;以及
[0017]如果作出已經發生TLB未中的判定,則預測存儲與所述IPA相關聯的數據處的物理內存的PA。
[0018]本發明還提供了一種計算機可讀介質(CRM),所述計算機可讀介質存儲用于由一個或多個處理器執行以降低與執行HffTW相關聯的處理開銷的計算機代碼。該計算機代碼包括第一代碼部分和第二代碼部分。第一代碼部分確定與IPA相關聯的頁表條目是否被存儲在TLB中。如果作出與IPA相關聯的頁表條目未被存儲在TLB中的確定,則第一代碼部分判定已經發生TLB未中。如果第一代碼部分判定已經發生TLB未中,則第二代碼部分預測存儲與所述IPA相關聯的數據處的物理內存的PA。
[0019]根據下面的描述、附圖和權利要求,這些和其它特征和優點將變得顯而易見。
【附圖說明】
[0020]圖1是根據本發明的說明性的實施例的計算機系統的框圖。
[0021]圖2示出了根據被配置為執行用于降低執行HffTW需要的時間和計算資源的量的方法的說明性的、或示例性的實施例的計算機系統的框圖。
[0022]