• / 16
  • 下載費用:30 金幣  

用于在每線程的基礎上跟蹤TLB清除的裝置和方法.pdf

摘要
申請專利號:

CN201380062629.2

申請日:

2013.06.20

公開號:

CN104919417A

公開日:

2015.09.16

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 9/38申請日:20130620|||公開
IPC分類號: G06F9/38; G06F9/46; G06F12/10 主分類號: G06F9/38
申請人: 英特爾公司
發明人: S·M·康拉德; R·J·芬格; G·康納; R·塞斯; J·B·克羅斯蘭; A·阿加瓦爾
地址: 美國加利福尼亞州
優先權: 13/730,906 2012.12.29 US
專利代理機構: 上海專利商標事務所有限公司31100 代理人: 姬利永
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201380062629.2

授權公告號:

||||||

法律狀態公告日:

2018.08.07|||2015.10.14|||2015.09.16

法律狀態類型:

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

摘要

描述了一種包括識別有待被無效的一個或多個硬件線程的TLB信息的方法。該方法還包括確定該一個或多個硬件線程中的哪些線程處于其中TLB信息被清除的狀態下。該方法還包括將TLB擊落指引到該一個或多個硬件線程中的處于其中TLB信息未被清除的狀態下的那些線程。

權利要求書

權利要求書
1.  一種處理器,包括:
第一電路,用于在逐硬件線程的基礎上跟蹤硬件線程是否處于其中其TLB信息被清除的狀態下;以及,
耦合到所述第一電路的第二電路,用于提供信息從而使得所述信息對軟件可見,所述信息標識處于其中其對應的TLB信息被清除的特定硬件線程。

2.  如權利要求1所述的處理器,其中,所述第二電路包括所述處理器上的寄存器空間。

3.  如權利要求2所述的處理器,其中,所述寄存器空間是模型特定寄存器空間。

4.  如權利要求3所述的處理器,其中,所述處理器包括用于標識所述模型特定寄存器空間的基地址和偏移地址的附加寄存器空間。

5.  如權利要求1所述的處理器,其中,所述第一電路駐留在所述處理器的處理核中,所述硬件線程由所述處理核支持。

6.  如權利要求1所述的處理器,其中,所述處理器包括用于將所述處理器置于從線程的對應的處理核清除所述線程的TLB信息的功率狀態下的功率管理電路。

7.  一種方法,包括:
識別一個或多個硬件線程的TLB信息有待被無效;
確定所述一個或多個硬件線程中的哪些線程處于其中TLB信息被清除的狀態下;
將TLB擊落信號指引到所述一個或多個硬件線程中的處于其中TLB信息 未被清除的狀態下的那些硬件線程。

8.  如權利要求7所述的方法,其中,所述確定包括引用支持所述一個或多個硬件線程的處理器的寄存器空間。

9.  如權利要求9所述的方法,其中,所述寄存器空間是模型特定寄存器空間。

10.  如權利要求8所述的方法,其中,所述方法進一步包括引用第二寄存器空間以便了解所述寄存器空間的地址。

11.  如權利要求7所述的方法,進一步包括響應于所述識別,執行指令以便了解底層處理器是否包括用于提供標識其所支持的線程中的哪些線程處于其中TLB信息被清除的狀態下的信息的功能。

12.  如權利要求7所述的方法,進一步包括引用表明用于提供標識其所支持的線程中的哪些線程處于其中TLB信息被清除的狀態下的底層處理器的功能是否被啟用的信息。

13.  一種包含程序代碼的計算機可讀存儲介質,當被計算機的一個或多個處理器執行時,所述程序代碼致使執行方法,所述方法包括:
識別一個或多個硬件線程的TLB信息有待被無效;
確定所述一個或多個硬件線程中的哪些線程處于其中TLB信息被清除的狀態下;
將TLB擊落信號指引到所述一個或多個硬件線程中的處于其中TLB信息未被清除的狀態下的那些線程。

14.  如權利要求13所述的計算機可讀存儲介質,其中,所述確定包括引用支持所述一個或多個硬件線程的處理器的寄存器空間。

15.  如權利要求14所述的計算機可讀存儲介質,其中,所述寄存器空間是模型特定寄存器空間。

16.  如權利要求14所述的計算機可讀存儲介質,其中,所述方法進一步包括引用第二寄存器空間以便了解所述寄存器空間的地址。

17.  如權利要求13所述的計算機可讀存儲介質,進一步包括響應于所述識別,執行指令以便了解底層處理器是否包括用于提供標識其所支持的線程中的哪些線程處于其中TLB信息被清除的狀態下的信息的功能。

18.  如權利要求13所述的計算機可讀存儲介質,進一步包括引用表明用于提供標識其所支持的線程中的哪些線程處于其中TLB信息被清除的狀態下的底層處理器的功能是否被啟用的信息。

19.  如權利要求14所述的計算機可讀存儲介質,其中,所述程序代碼是VMM的程序代碼的部分。

20.  一種計算系統,包括:
包括存儲的程序代碼的存儲介質,所述存儲的程序代碼用于執行方法,所述方法包括:
識別一個或多個硬件線程的TLB信息有待被無效;
確定所述一個或多個硬件線程中的哪些線程處于其中TLB信息被清除的狀態下;
將TLB擊落信號指引到所述一個或多個硬件線程中的處于其中TLB信息未被清除的狀態下的那些線程;
具有處理核的處理器,所述處理核具有:
用于向所述方法提供信息的電路,所述信息標識所述一個或多個硬件線程中的哪些線程已清除其對應的TLB信息。

21.  如權利要求20所述的處理器,其中,所述電路包括所述處理器上的寄存器空間。

22.  如權利要求20所述的處理器,其中,所述處理器實現硬件線程的活躍和不活躍狀態。

23.  如權利要求20所述的處理器,其中,所述處理器包括用于將所述處理器置于從線程的對應處理核清除所述線程的TLB信息的功率狀態下的功率管理電路。

說明書

說明書用于在每線程的基礎上跟蹤TLB清除的裝置和方法
發明領域
本發明的領域涉及計算系統,并且更具體地涉及用于在每線程的基礎上跟蹤TLB清除的裝置和方法。
背景
圖1示出多處理器計算機系統100的部分。如圖1所示,該系統包括N個處理器101_1至101_N。操作系統(OS)102在處理器101_1至101_N上“運行”。這些處理器各自包括對應的轉換后備緩沖器(TLB)信息103_1至103_N。通常,每個處理器的TLB信息包括數據TLB和指令TLB兩者。如本領域已知的,TLB是通常OS 102或其應用軟件所調用的“虛擬”存儲器頁地址與實際“物理”存儲器頁(其中,所調用的指令或數據實際上位于系統存儲器104內)之間的轉換表。通過操縱TLB,OS 102能夠對支持在公共地址空間之外執行的多個應用進行交織。
因為計算系統的功耗已經變成令人擔心的問題,大多數現有的系統包括復雜的功率管理功能。圖1示出被集成到OS 102中的功率管理軟件105。常見框架用于為處理器101_1至101_N中的每一個定義“性能”狀態和“功率”狀態兩者。在處理器上執行的線程可請求該處理器進入特定的性能狀態或睡眠狀態。處理器的性能是其在設定的時間段完成工作的能力。處理器的性能越高,其在設定的時間段就能完成越多的工作。可在運行時期間通過改變其內部時鐘速度和電壓電平調整處理器的性能。這樣,處理器的功耗隨著其性能增加而增加。
處理器的不同性能狀態與不同的時鐘設置和內部電壓設置相對應以便實現不同的性能vs.功耗折中。根據高級配置與電源接口(ACPI)標準,用不同的“P號”標記不同的性能狀態:P0、P1、P2...P_R,其中P0表示最 高性能和功耗狀態,而P_R表示處理器能夠工作的最低功耗水平。“P_R”中的“R”項表示以下事實:不同的處理器可被配置成具有不同數量的性能狀態。
與性能狀態相比,功率狀態更多地涉及定義處理器的不同“睡眠模式”。根據ACPI標準,C0狀態是處理器可工作的唯一功率狀態。這樣,為了讓處理器進入任何性能狀態(P0至P_R),處理器必須處于C0功率狀態。當沒有工作要做并且處理器進入睡眠時,處理器可進入數個不同功率狀態C1、C2...C_S中的任一種,其中每個功率狀態表示不同的睡眠等級以及相應地轉換回可操作的C0功率狀態的不同時間量。在此,不同的睡眠等級意味著在處理器睡眠時不同的功率節省。
因此,更深的睡眠等級對應于更慢的內部時鐘頻率和/或更低的內部供電電壓和/或更多的接收更慢的時鐘頻率和/或更低的供電電壓的邏輯塊。增加的C數對應于更深的睡眠等級。因此,例如,處于C2功率狀態的處理器可具有比處于C1狀態的處理器更低的內部供電電壓和更多的被關閉的邏輯塊。因為更深的功率狀態對應于更大的頻率和/或電壓擺動和/或需要打開以返回C0狀態的更多數量的邏輯塊,更深的功率狀態還占用更長的時間量來返回C0狀態。
附圖
通過舉例而非通過限制在附圖的圖示中展示本發明,在附圖中,相似的參考標記表示類似的元素,并且在附圖中:
圖1示出多處理器計算機系統的示例性實施例;
圖2a示出用于選擇性地發布TLB_Shootdown中斷的過程;
圖2b示出具有用于跟蹤TLB清除的電路的處理器;
圖3示出虛擬化環境;
圖4示出用于選擇性地發布TLB_Shootdown中斷的另一個過程;
圖5示出多核處理器,多核處理器的核包含用于表明其哪些硬件線程已經清除其TLB信息的寄存器空間;
圖6示出圖5的寄存器空間的示例性實施例;
圖7示出使用圖5的寄存器空間的過程。
詳細描述
在多處理器系統(諸如圖1的多處理器系統100)中,OS 102可對系統存儲器104進行分區,從而使得處理器101_1至101_N各自接收其自身的對應的系統存儲器部分用于私有用途,并且剩余的系統存儲器部分可由兩個或更多個處理器共享。當不同的處理器被允許使用相同的存儲器空間時,偶爾,分配給第一處理器的存儲器空間可實現一個或多個其他處理器,其方式為使得該一個或多個其他處理器的TLB變成無效。
一個示例是將存儲器區域從由多個處理器共享再分配為受保護或者以其他方式由特定處理器的使用私有。這種新的系統存儲器分配將致使先前被配置成用于在存儲器區域外部運行的任何其他處理器具有無效的TLB信息。也就是,這些處理器的TLB信息將包含被映射到存儲器區域的條目,并且由于這種映射不再被允許,其TLB信息將需要改變。因此,如果系統中的所有其他處理器被配置成用于在存儲器區域之外運行,OS 102將認識到系統內的所有其他處理器將需要使其當前TLB信息無效,從而它們可被未映射到禁止存儲器區域的新TLB信息替換。
“TLB擊落(TLB Shootdown)”中斷是例如從OS 102提供到處理器的致使處理器清除其TLB信息的中斷。因此,繼續以上示例,OS 102將TLB Shootdown中斷指引到系統內使用舊映射的所有處理器。
問題是當前TLB Shootdown中斷可被發布到處理器,即使處理器已經(或者正在)清除其TLB內容。例如,考慮處于C3狀態的第一處理器。通過定義,進入C3狀態要求處理器清除所有其內部(例如,L1)高速緩存信息和TLB信息。在將處理器置于C3狀態下之后,向第二處理器新分配不利地影響第一處理器的TLB轉換的受保護的存儲器空間區域。
傳統上,這將致使OS 102向第一處理器(以及在存儲器區域之外操作的除第二處理器之外的任何其他處理器)發布TLB_Shootdown中斷。 TLB_Shootdown中斷將第一處理器從其C3狀態喚醒并且將第一處理器轉變到C0狀態以便處理中斷。第一處理器然后將該中斷解釋為清除其TLB內容的命令。由于TLB內容已經通過其先前進入C3狀態的方式從第一處理器清除,第一處理器實際上不需要采取任何動作來確保中斷被正確地處理。
無論如何,喚醒第一處理器以便處理實際上不需要處理的中斷的動作在內部及其本身是浪費的。確切地,計算系統的總功耗通過第一核離開C3狀態并且進入C0狀態以便處理不必要的TLB_Shootdown中斷而增加。浪費的功耗在清除TLB狀態下的同時響應于存儲器再分配接收TLB_Shootdown的每個處理器而擴大。
更高效的方法將是OS 102識別到第一處理器已經清除其相關聯的TLB信息,并且作為響應防止向第一處理器發布TLB_Shootdown中斷。這本質上使得第一處理器“睡得更長”,由此使得總體系統更功率高效。再次,該過程可被擴展到系統內的任何其他受影響的處理器。在此,OS識別哪些處理器受存儲器再分配影響從而具有無效TLB信息,并且識別哪些處理器處于致使其TLB信息已經被清除的睡眠狀態下。OS拒絕發布會發布到滿足兩個標準的那些處理器的TLB_Shootdown中斷(并且向所有其他處理器發布TLB_Shootdown)。
圖2a示出過程,其部分可由處理器硬件執行,其他部分可由例如OS處理以便壓制將TLB_Shootdown中斷發布到已經通過進入睡眠狀態(諸如核C3睡眠狀態)清除其相關聯的TLB信息的處理器。根據圖2的過程,在處理器上執行的線程請求處理器進入要求處理器清除其TLB信息的睡眠狀態。作為響應,處理器清除其TLB信息201并且在存儲電路(例如,寄存器或系統存儲器)中設置表明其相關聯的TLB信息已經被清除的信息。過程201可由計算機系統202內的多個處理器執行。
隨后或同時,軟件(諸如OS)將識別某些當前“有效”TLB轉換應當被無效203。如上所述,可致使需要將當前有效的TLB轉換無效的一種這種情況是以被配置成用于使用相同存儲器區域的其他處理器為代價向第一處 理器分配存儲器區域。本領域技術人員將理解也可出現致使用于一個或多個處理器的當前啟用TLB轉換集合被無效的其他情況。
當標識其TLB轉換需要無效的特定處理器時,OS還引用每個處理器的上述存儲電路以便了解哪些處理器已經清除其TLB信息204。在實施例中,存儲電路被實現為模型特定寄存器空間或某種其他形式的陰影寄存器空間。在進一步的實施例中,特殊寄存器空間具有OS享有但是應用軟件不享有的特權等級。
通過標識應當使其TLB信息無效的處理器以及其TLB信息應當被清除的處理器,OS確定哪些處理器應當實際上接收TLB_Shootdown中斷205。確切地,將會接收TLB_Shootdown的處理器是以下線程:1)要使其TLB信息無效的線程;以及2)當前未處于其中其TLB信息已經被清除的狀態下的線程。因此,硬件所維護的特殊寄存器空間協助OS將應當使其TLB信息無效的處理器集合過濾為尚未使其TLB信息無效的那些處理器。
在做出上述確定205之后,OS僅向應當使其TLB信息無效并且其TLB信息尚未被無效的那些處理器發布TLB_Shootdown中斷206。通過這樣做,應當使其TLB信息無效但是已經清除其TLB信息的那些處理器可保持在睡眠狀態下。在TLB_Shootdown中斷已經被發布并且被成功地響應之后,OS102可采取步驟來為需要新轉換的受影響的處理器確定適當的地址空間轉換。在實施例中,OS被設計成用于防止未被發布TLB_Shootdown中斷的那些受影響的處理器喚醒以及繼續進一步的處理。圖2b示出處理器240具有被設計成用于操縱用于標識處理器是否已經清除其TLB信息的特殊寄存器空間260的邏輯電路250。本質上,當處理器清除其TLB信息時,例如,作為進入深度睡眠狀態的一部分,邏輯250在寄存器空間260中設置位,用于表明處理器的TLB信息已經被清除。OS可引用該位,例如,以便執行上述圖2a的過程204。
圖3對應于上述提供的教導應用于虛擬化環境中的多核處理器310的擴展。值得注意的是,多核處理器310具有多個處理核301_1至301_N,其中每個處理核能夠同時執行多個硬件線程306_1至306_M。如本領域已 知的,硬件線程對應于軟件線程,該軟件線程的狀態信息和其他相關聯的信息當前被加載在核中,從而使得該核當前被啟用執行該線程的指令。軟件線程是屬于特定軟件進程的指令序列。核在其可支持的硬件線程數量方面受到限制。核可以可想象地支持非常大量的軟件線程。在此,每個核被配置成用于在不活躍和活躍狀態之間切換軟件線程。當軟件線程被轉換為活躍狀態時,其本質上對應于硬件線程,直到其被切換回不活躍狀態。如圖3所示,在任何時刻,每個硬件線程具有其自身相關聯的虛擬CPU 307_1至307_M,并且單個虛擬機308可包含支持單個“賓客”OS實例309的多個虛擬CPU。
虛擬機監視器(VMM)310是組織并管理支持各種OS賓客實例的虛擬CPU和虛擬機的軟件層。當支持多個賓客OS實例時,VMM 310還組織向賓客OS實例(及其相應的應用)分配系統存儲器304。當這樣做時,VMM 310通常對每個虛擬CPU的特定TLB信息具有可見性并且對其進行控制。
如上所述,每個硬件線程具有其自身的相關聯的TLB信息并且可進入深度睡眠狀態。這樣,當處理器已經被分配用于需要被無效的CPU的TLB條目時,以上參照圖2和圖3所討論的方案可應用在虛擬化環境中。在虛擬化環境的情況下,賓客OS 309或VMM 310可將先前在多個虛擬CPU 307_1至307_L之間共享的系統存儲器304空間區域轉換成為特定虛擬CPU保留的私有“受保護的”存儲器空間。在此,在其中賓客OS 309強加存儲器再分配的情況下,賓客OS 309通常在該分配所涉及的該多個虛擬CPU307_1至307_L上運行。具有對真實系統存儲器304分配更深了解的VMM 310可了解賓客OS的動作并且可實現實際系統存儲器304的改變。
類似于以上參照圖2和圖3討論的標準多處理器方法,不再被允許使用經再分配的存儲器空間區域的虛擬CPU需要清除其相應的硬件線程的TLB信息。類似于先前的討論,先前在需要清除其對應的TLB信息的一個或多個虛擬CPU上運行的處理器可已經進入深度睡眠狀態并且因此無需接收TLB Shootdown中斷(因為其TLB信息已經被清除)。圖4示出圖2的過程但是被重新措辭以便涉及虛擬化環境。
圖5還示出多核處理器,其中每個核501_1至501_N被增強以便包括邏輯電路550_1至550_N并且處理器包括用于每個核的每個硬件線程的寄存器空間560。再次,每個硬件線程可進入要求清除其虛擬CPU的虛擬TLB信息的睡眠狀態。假設核可在任何時刻支持最多M個硬件線程,邏輯電路550_1至550_N相應地在單獨硬件線程的基礎上跟蹤其組成核的每個硬件線程并且在寄存器空間560中設置信息以便在逐個單獨硬件線程的基礎上表明哪些硬件線程已經清除其TLB信息。與以上在圖4中所描述的過程一致,賓客OS和/或VMM可引用此信息來響應于認識到硬件線程的TLB信息現在無效,確定硬件線程應當接收還是不應當接收TLB Shootdown中斷。
不管是在自定義邏輯電路還是微代碼還是其他種類的程序代碼或其組合中實現,邏輯電路550的某些實現細節包括:1)在用特定硬件線程已經清除其TLB信息的信息來設置特殊寄存器空間560的情況下,相應的邏輯電路550_1至550_N應當事先確認TLB處于休眠狀態并且沒有后臺操作(諸如推測性地取出TLB轉換)在進行中;2)為了增強效率,相應的邏輯電路550_1至550_N可分析硬件線程的對象代碼流(例如,在指令取出單元中)以便確認不存在將致使TLB條目在清除之后就被加載的中間指令。如果檢測到后一種情況,邏輯電路550_1至550_N可采取擴展動作以便不為硬件線程設置特殊的寄存器空間信息。盡管圖5通過邏輯電路550_1至550_N示出分布式硬件線程清除跟蹤能力,可想象地,相同的硬件線程清除跟蹤可部分地或全部地被集中化為由邏輯電路509表示。
圖6示出上述特殊寄存器空間的架構的示例。根據圖6的實現方式,特殊寄存器空間660的尋址具有兩個部分:基地址601和偏移地址602。基地址601本質上包含用于表明特定硬件線程是否已經清除其TLB內容的所有特殊寄存器位的地址將具有的更高階地址位。偏移地址602指定硬件線程的TLB清除狀態所在的位位置。因此,為了為特定硬件線程確定地址,VMM或OS將通常將遞增來自偏移地址602的適當量并且與基地址601組合。
圖7示出可由軟件(賓客實例或其他)或VMM執行的使用上述特殊 寄存器地址空間的過程。根據圖7的過程,當OS/VMM檢測到致使一個或多個硬件線程的任何現有TLB信息無效的事件701時,VMM執行CPUID指令或類似的指令702以便看到底層處理器的能力是什么。如本領域已知的,CPUID指令的執行返回標識底層處理器的特定能力的信息。在執行CPUID或類似的指令之后,VMM將知道底層處理器是否703包括標識哪些硬件線程已經清除其TLB信息的特殊寄存器空間。如果其不包括,過程結束并且OS/VMM繼續向所有受影響的CPU發布TLB_Shootdown中斷而無需了解其TLB清除狀態704。
如果處理器包括該功能,OS/VMM確認該特征已被啟用705。在實施例中,與特殊寄存器空間一起,附加信息(例如,位)被保留在處理器的寄存器空間中以便指定是否啟用在特殊寄存器空間中跟蹤哪些硬件線程已經清除其TLB信息的特殊功能。如果該功能未被啟用,過程結束704,如上所述。在此,應理解的是在該功能被啟用的情況下,基地址、偏移地址和啟用/禁用位被編程到處理器的寄存器空間中,作為處理器上的OS/VMM的提出例程的一部分。
如果OS/VMM發現該功能被啟用,VMM讀取處理器的特殊寄存器空間以便確定受致使新無效的TLB信息的事件所影響的所有硬件線程的TLB清除狀態706。如以上參照圖2和圖4所描述的,僅那些由特殊寄存器空間表明當前其TLB信息未被清除的受影響的硬件線程被發布TLB_Shootdown中斷707。在這樣做時,如上所述,當前存在于TLB信息被清除的狀態下的受影響的線程應當能夠睡眠更長。
當OS/VMM提出時,替代性實現方式可執行CPUID或類似的指令僅一次以便以更永久的方式(通過設置OS/VMM的數據或配置字段)將底層處理器是否包括特殊寄存器空間的了解并入OS/VMM的狀態中。
因為以上討論所教導的任何邏輯過程可用控制器、微控制器或類似的組件執行,這種過程可以是程序代碼(諸如致使機器執行這些指令以便執行特定功能的機器可執行指令)實現。以上討論所教導的過程還可由被設計成用于執行這些過程(或其一部分)的電子電路執行(作為執行程序代 碼的替代方案或者結合執行程序代碼)。
相信以上討論所教導的過程還可用各種面向對象或非面向對象的計算機編程語言源級別程序代碼中描述。制品可用于存儲程序代碼。存儲程序代碼的制品可被體現為但不限于一個或多個存儲器(例如,一個或多個閃存、隨機存取存儲器(靜態、動態或其他))、光盤、CD-ROM、DVD ROM、EPROM、EEPROM、磁卡或光卡或適合存儲電子指令的其他類型的機器可讀介質。還可通過體現在傳播介質中的數據信號將程序代碼從遠程計算機(例如,服務器)下載到請求計算機(例如,客戶端)(例如,經由通信鏈路(例如,網絡連接))。
在前述說明書中,已經參照其特定示例性實施例描述了本發明。然而,將明顯的是可對其作出各種修改和改變而不背離在所附權利要求書中陳述的本發明的更寬泛的精神和范圍。因此,將以說明性而不是限制性的意義對待說明書和附圖。

關 鍵 詞:
用于 線程 基礎上 跟蹤 TLB 清除 裝置 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:用于在每線程的基礎上跟蹤TLB清除的裝置和方法.pdf
鏈接地址:http://www.rgyfuv.icu/p-6373699.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

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


收起
展開
山东11选5中奖结果走势图