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