用于在計算系統處的軟件程序中便于動態和高效地管理轉換緩沖器預取的機制的制作方法
【技術領域】
[0001] 本文描述的實施例一般涉及計算機編程。更特別的,實施例涉及用于在計算系統 處的軟件程序中便于動態和高效地管理轉換緩沖器預取的機制。
【背景技術】
[0002] 轉換后備緩沖器(TLB)涉及硬件緩存,該硬件緩存存儲虛擬-物理地址轉換以及 被用于提高虛擬地址轉換速度。當存儲器訪問時,執行TLB查找以在該TLB中查找請求的 地址轉換,并且如果沒找過該轉換,該未命中被稱為TLB未命中。然而傳統的解決方案并不 提供高效的管理TLB未命中的方法;例如,為基于硬件的頁面行程表提供的一種傳統方法 確定該存儲器訪問的物理地址或者確定是否存在特定虛擬地址的入口。基于硬件的頁面行 程的高延遲使得TLB未命中昂貴和低效,其經常導致執行負載的顯著放慢,導致功率和性 能減緩。
【附圖說明】
[0003] 在附圖中通過舉例的方式、但不是以限制的方式闡明實施例,在附圖中類似的附 圖標記指代類似的元件。
[0004] 圖1示出了根據一種實施例的具有預取機制的二進制轉換,其為了在軟件程序中 便于轉換緩沖器預取的基于二進制轉換的管理。
[0005] 圖2示出了根據一種實施例的具有預取機制的二進制轉換。
[0006] 圖3示出了根據一種實施例采用由圖1的具有預取機制的二進制轉換推動的二進 制轉換引擎的系統。
[0007] 圖4A示出了根據一種實施例基于利用二進制轉換的靜態代碼分析的便于TLB預 取控制的方法。
[0008] 圖4B示出了根據一種實施例基于利用二進制轉換的動態代碼分析和概括的便于 TLB預取控制的方法。
[0009] 圖4C示出了根據一種實施例基于便于動態和高效的二進制轉換的TLB預取的方 法。
[0010] 圖5示出了根據一種實施例的適于實現本公開的實施例的計算機系統。 詳細描述
[0011] 在接下來的描述中,闡明了許多特定的細節。然而如文本描述的這樣的實施例可 被實行而不需要這些特定的細節。在其它示例中,為了不模糊本說明書的理解,并沒有詳細 地示出眾所周知的電路、結構和方法。
[0012] 實施例提供了一種基于硬件-軟件的機制,該機制用于利用基于二進制轉換(BT) 的TLB預取機制減少轉換后備緩沖器(TLB)的未命中的發生。在一種實施例中,基于BT的 預取機制可包括使用基于硬件-軟件的解決方案,這樣當采用用于確定、預測和調度TLB預 取的方法時,指令集架構(ISA)可被用于啟用基于BT的TLB預取。在一種實施例,基于BT 的機制克服了與傳統方法有關的任何問題/限制,并且更通過提高TLB預取的質量而且減 少了與傳統的基于硬件-軟件的TLB預取方案的有關的復雜性,為關于如靜態代碼分析和 動態概括的信息的利用做準備以高效地控制和維持TLB預取。
[0013] 提供未來TLB查找的精確預測的實施例通過消除傳統地與頁面行程延遲相關的 減緩和TLB未命中而增加TLB命中的數目以加速執行代碼。例如,TLB查找模式可被觀察到 并被用于預測未來的TLB查找。而且,可生成對這些未來的查找的預取請求和提供給例如 TLB頁面未命中處理程序(PMH),PMH然后行走頁面表以及用被預取的地址轉換填入TLB。
[0014] 實施例提供了靈活的和簡易的解決方案,其優于死板的和復雜的僅僅硬件的解決 方案。例如,在一種實施例中,利用BT機制,在預取不具有相當的益處時,對于部分或所有 的負載可關掉預取,。此外,BT機制兼容于任何數目的不能由具有傳統的基于硬件的技術 完成的機器、硬件封裝和預取方案等。
[0015] 而且,諸如當確定靜態屬性(如在循環中的頁面訪問中的跨步)可立即用于快速 TLB預取線索(利用傳統的系統則這不可能),而這個信息可通過分析靜態代碼獲得時,實 施例可允許確定代碼的靜態和動態屬性。類似的,BT機制的運行時組件通過簡單的概括和 分析代碼的動態屬性學習動態TLB行為。
[0016] 圖1示出了根據一種實施例的具有預取機制的二進制轉換110,其為了在軟件程 序中便于管理基于二進制轉換的轉換緩沖器預取。計算設備1〇〇用作主機器以采用具有預 取機制的二進制轉換("二進制轉換機制"或簡化為"BT機制")110,其在一種實施例中,當 采用用于精確確定、預測和調度的TLB預取的方法時,便于基于硬件-軟件的解決方案利用 ISA以啟用基于BT的TLB預取。這個基于BT的TLB查找的精確預測通過消除與由傳統方 法帶來的延遲一貫相關的緩慢和TLB未命中可增加TLB命中的數目以加速執行代碼和它的 工作量。
[0017] 計算設備100可包括移動計算設備,如包括智Η纟電話(如平果公司的iPhone、動 態研究公司的黑莓等)的蜂窩式電話、個人數字助理(PDA)等、平板計算機(如蘋果公司 的iPad、三星公司的Galaxy 3等)、膝上計算機(如筆記本、上網本、超級本等)、電子閱讀 器(如亞馬遜公司的Kindle、龐諾書店的Nook等)等。計算設備100可進一步包括機頂 盒(如基于因特網的有線電視機頂盒等)、以及較大的計算設備,如臺式計算機、服務器計 算機等。
[0018] 計算設備100進一步包括一個或多個處理器102、存儲設備104、網絡設備、驅動器 等等、操作系統(0S) 106、以及輸入/輸出(I/O)源108,如觸摸屏、觸摸面板、觸摸板、虛擬 或常規鍵盤、虛擬或常規鼠標等。需要注意的是類似"計算設備"、"節點"、"計算節點"、"客 戶端"、"主機"、"服務器"、"存儲服務器"、"機器"、"設備"、"計算設備"、"計算機"、"計算系 統"等等的術語在整個文檔中可被可替換的使用。
[0019] 在一種實施例中,二進制轉換機制110提供采用利用BT的硬件-軟件方式的解決 方案以控制和管理TLB預取,該解決方案減少了基于硬件的復雜性,提高了與預取有關的 精確性以及減少了用于TLB預取的功率耗損。在一種實施例中,通過分析靜態代碼和觀察 動態TLB查找,BT被用于推斷TLB訪問模式。進而,這個推斷的模式被用于控制使用控制 指令和明確的預取請求的TLB預取行為。
[0020] 圖2示出了根據一種實施例的具有預取機制的二進制轉換110。在一種實施例中, 二進制轉換機制110包括數個組件,如接收邏輯202、轉變邏輯204、包括分析器208的推測 /預測邏輯206、具有選擇模塊212和應用模塊214的指令邏輯210、傳送邏輯216、執行邏 輯216、以及通信/兼容性模塊218。整個這篇文檔,"邏輯"可被替換的稱作"組件"或"模 塊",并且通過舉例的方式包括軟件、硬件和/或軟件和硬件的任何組合,如固件。
[0021] 在一種實施例中,接收邏輯202接收來自于一個或多個源(如,圖3中的硬件預取 器302、304、306)的軟件程序的代碼指令或代碼塊,在這種情況下代碼指令隨后被轉發到 轉換邏輯204。BT機制110提供虛擬化技術,在這種情況下,通過轉換邏輯204可執行的二 進制被從一種ISA無縫的轉換為另一種,例如以獲得高效率和高性能而不浪費資源和功率 的目的。
[0022] 在一些實施例中,轉換邏輯204分析源二進制的代碼塊并且在目標ISA中生成功 能性等同的代碼塊(也稱為"代碼轉換"或"代碼轉換塊"),進而,轉換邏輯204在代碼轉 換上執行優化以及為了執行而調度被轉換的目標ISA代碼塊。運行時可負責跟蹤所生成的 代碼塊、在觀察代碼流的基礎上鏈接起代碼轉換、跟蹤類似于分支行為的動態系統行為以 及通過重轉換源二進制代碼塊響應這些動態行為。在特定場景和實施例中,當源和目標ISA 可能保持一樣時,BT也可純粹地被用于代碼優化。可以考慮的是BT機制110不依賴于任 何特定的ISA或目標ISA是否與源ISA相同或不同。
[0023] 在一種實施例中,前面提到的"運行時"指代的是推測/預測邏輯("推測邏 輯")206,其包括能夠在運行時或轉換代碼塊執行期間執行轉換代碼塊的運行時跟蹤。執 行這個運行時跟蹤以當轉換代碼塊正被執行時跟蹤它的動態系統行為。然后可通過分析模 塊208分析(為動態分析)該動態系統行為,然后將結果發送到轉換邏輯204以基于與它 們的動態系統行為有關的結果重轉換所轉換的代碼塊。然后為了更加動態和高效的TLB預 取,重新提交所重轉換的代碼塊以用于執行以增加TLB命中和減少TLB未命中。在一種實 施例中,執行邏輯216被用于提交代碼或任何其他轉換以用于執行或實現。例如初始所轉 換的代碼塊(基于靜態分析)可由執行邏輯216提交以用于執行,類似的,仍然可由執行邏 輯216提交重轉換的代碼塊(基于動態分析)以用于執行。
[0024] 在一種實施例中,由推測/預測邏輯206利用如由分析器208提供的靜態代碼分 析和/或動態代碼分析處理代碼轉換以預測TLB訪問的模式,在這種情況下,所推測的模式 然后被用于控制和預測TLB預取。進而,在一種實施例中,所提出的基于BT的TLB預取對 于不用基于硬件的TLB預取器的是適用的和可行的,在這種情況中BT軟件生成明確的TLB 預取請求以如利用硬件驅動的TLB預取器一樣執行軟件驅動預取,例如硬件驅動的TLB預 取器如圖3的硬件預取器302、304、306,在這種情況中,除了生成預取,允許靈活性和設計 折衷的BT軟件也調諧和控制所述硬件預取器。進而,利用BT機制110, BT運行時被用于學 習TLB預取的效率,其包括當TLB預取被認為是不利的時,禁用TLB預取。
[0025] -旦推測/預測邏輯206提出推測,該推測和任何相關的信息就可被轉發到指令 邏輯210。在一種實施例中,指令邏輯210被用于提出TLB預取指令("TLBPF"或"TLBPF 指令")。選擇模塊212選擇TLBPF指令,而應用模塊214應用所選擇的TLBPF指令。為了 預測和控制TLB預取,該選擇的TLBPF指令可用作BT機制110的工具以利用所收集的有關 執行負載的TLB行為的信息。例如,接下來的TLBPF指令三個變形可被用于:1) TLBPF0立即 (imm)用于設置TLB預取模式至立即;2)TLBPFlimm用于設置TLB預取跨向立即;3)TLBPF2 存儲器(mem)用于為地址存儲器插入TLB預取請求。<