欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

LLC中Cache行的替換方法

文檔序號:6626703閱讀:849來源:國知局
LLC中Cache行的替換方法
【專利摘要】本發(fā)明提供了一種LLC中Cache行的替換方法,如果目標Cache地址在LLC中缺失,根據(jù)操作類型計算新調(diào)入Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,將原來替換優(yōu)先級最高的Cache行替換,并將新調(diào)入Cache行存入目標Cache的對應位置;如果目標Cache地址在LLC中命中,根據(jù)Cache一致性狀態(tài)和操作類型,更新當前訪問Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,對當前訪問Cache行進行優(yōu)先級的升降級。能夠有效降低包含Cache中替換引入的包含犧牲者導致的性能損失。
【專利說明】 LLC中Cache行的替換方法

【技術領域】
[0001]本發(fā)明涉及計算機【技術領域】,尤其涉及一種最后一級高速緩沖存儲器(LLC,LastLevel Cache)中Cache行的替換方法。

【背景技術】
[0002]為了填補處理器與存儲系統(tǒng)的性能差異,現(xiàn)代處理器通常使用多層Cache結構。其中,一種重要的設計方案是包含Cache (Inclusive Cache)層次結構設計。在InclusiveCache層次結構中,靠近處理器核的上層Cache的Cache行在遠離處理器核的下層Cache中均具有副本,而下層Cache中的Cache行則不一定在上層Cache中具有副本,這種結構能夠簡化Cache —致性協(xié)議。但是,與非包含及互斥Cache結構相比,包含Cache可能遭遇性能損失。一方面,由于數(shù)據(jù)的重復存儲,有效的Cache空間減少;另一方面,當一個Cache行從LLC中替換出去時,為了保持包含屬性,須將其從上層Cache中無效,這次上層Cache中為了保持包含屬性而被無效的Cache行通常被稱為“包含犧牲者”(inclusive victims)。由于包含犧牲者在上層Cache中可能屬于常用Cache行,因此,過早的無效化會導致額外的訪問缺失,從而降低Cache性能。
[0003]傳統(tǒng)的LLC替換算法,例如近期最近最少使用(LRU,Least Recently Used)的替換策略中,最近一次被訪問的Cache行總是被放在Cache的最近最多使用(MRU,MostResently Used)行,而距離當前最遠被訪問的Cache行則放置在Cache的LRU行。在進行LLC替換時,通常根據(jù)Cache行在LLC中的最近訪問頻度確定替換候選塊,即總是將位于對應組的LRU行替換,而將新加入的Cache行置于MRU處,而不考慮其在上層Cache中的使用情況。因此,當替換候選塊在上層Cache中具有很好的訪問局部性時,此類替換算法中的“包含犧牲者”將會導致Cache性能急劇下降。
[0004]此外,在片上多處理器(CMP, Chip multiprocessors)系統(tǒng)中,每個處理器核具有私有的LI數(shù)據(jù)/指令Cache,多個處理器核共享一個LLC。在系統(tǒng)運行過程中,多個處理器核私有的Cache中可能同時存在某一數(shù)據(jù)塊的副本,因此,當對其中一個進行寫操作時,需要借助Cache —致性協(xié)議保證數(shù)據(jù)的正確性。在進行LLC替換時,為了保證包含屬性,需要將待替換數(shù)據(jù)塊在上層Cache中的全部副本無效。當該數(shù)據(jù)塊在上層Cache經(jīng)常被訪問時,上述無效操作將會極大降低Cache訪問性能。
[0005]有鑒于此,需要一種改進的LLC替換方案來解決現(xiàn)有技術的問題。


【發(fā)明內(nèi)容】

[0006]為了解決上述技術問題,本發(fā)明提供了一種LLC中Cache行的替換方法,能夠有效降低包含Cache中替換引入的“包含犧牲者”導致的性能損失。
[0007]為了達到本發(fā)明目的,本發(fā)明提供了一種LLC中Cache行的替換方法,包括:如果目標Cache地址在LLC中缺失,根據(jù)操作類型計算新調(diào)入Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,將優(yōu)先級最高的Cache行換出,并將新調(diào)入Cache行存入目標Cache的對應位置;如果目標Cache地址在LLC中命中,根據(jù)Cache —致性狀態(tài)和操作類型,更新當前訪問Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,對當前訪問Cache行進行優(yōu)先級的升降級。
[0008]進一步地,替換優(yōu)先級P的計算方式為:P = a1XcXop+kXa2+a3X (l_c) Xop,其中,B1表示寫操作權重,c表示上層Cache中的副本是否已經(jīng)回寫,如果回寫,c = 0,否則,c=I ;op表示引起替換的操作類型,寫操作對應op = I,否則op = O ;k表示只讀副本數(shù)量,其取值不超過共享LLC的處理器核數(shù);a2表示讀操作權重;a3表示回寫操作權重,其中,P值越小,替換優(yōu)先級越高,發(fā)生替換時優(yōu)先被替換。
[0009]進一步地,操作類型包括讀操作和寫操作;如果由讀操作引起LLC中Cache行替換,新調(diào)入Cache行中的P = 2*a2 ;如果由寫操作引起LLC中Cache行替換,新調(diào)入Cache行中的P = al,其中,al大于2*a2 ;如果上層Cache的Cache行發(fā)生回寫時,P = a3,其中,a3小于2*a2 ;如果上層Cache的Cache行在LLC中存在一個只讀副本時,P = a2,其中,a3大于a2。
[0010]進一步地,替換優(yōu)先級有序原則為:位于同一 Cache中的兩個Cache行,分別將該兩個Cache行的位置記為i和j,其中i和j具有大小關系;如果i大于j,則替換優(yōu)先級Pi大于Pj。
[0011]進一步地,按照替換優(yōu)先級有序原則,將優(yōu)先級最高的Cache行換出,并將新調(diào)入Cache行存入目標Cache的對應位置,包括:如果新調(diào)入Cache行的初始替換優(yōu)先級為大于或等于目標Cache組中的一個非LRU位置的Cache行,則將從所述非LRU位置的Cache行至LRU位置的Cache行依次向LRU方向移動一個Cache行的距離,原來位于LRU位置的Cache行被替換,并將新調(diào)入Cache行存入所述非LRU位置的Cache行。
[0012]進一步地,Cache 一致性狀態(tài)為MESI,處于LLC中的Cache行具有以下共享狀態(tài):M態(tài):Cache行僅存于LLC中,上層Cache中無副本;SS態(tài):Cache行同時存在于LLC及上層Cache中,所有數(shù)據(jù)副本為可讀狀態(tài);MT態(tài):Cache行同時位于LLC及一個處于互斥操作許可的上層Cache中,并且LLC中的數(shù)據(jù)在上層Cache中可能被修改過;處于M態(tài)的Cache行發(fā)生替換需要回寫LLC的數(shù)據(jù);處于SS態(tài)的Cache行替換時除了需要將LLC中的數(shù)據(jù)無效夕卜,還需將下層Cache中的只讀數(shù)據(jù)副本無效;處于MT態(tài)的Cache行替換時,需首先將上層的修改過的數(shù)據(jù)回寫,然后將該上層的數(shù)據(jù)副本無效。
[0013]進一步地,所述根據(jù)Cache —致性狀態(tài)和操作類型,更新當前訪問Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,對當前訪問Cache行進行優(yōu)先級的升降級,包括:根據(jù)Cache 一致性狀態(tài)的共享副本數(shù)的變化和操作類型的讀/寫操作情況,更新當前訪問Cache行的替換優(yōu)先級;如果由于Cache —致性狀態(tài)的共享副本數(shù)的變化和操作類型的讀/寫操作情況,替換優(yōu)先級發(fā)生變化,按照替換優(yōu)先級有序原則,對當前訪問Cache行進行降級或升級。
[0014]與現(xiàn)有技術相比,本發(fā)明包括:如果目標Cache地址在LLC中缺失,根據(jù)操作類型計算新調(diào)入Cache行得替換優(yōu)先級,按照替換優(yōu)先級有序原則,將優(yōu)先級最高的Cache行換出,并將新調(diào)入Cache行存入目標Cache的對應位置;如果目標Cache地址在LLC中命中,則根據(jù)Cache —致性狀態(tài)和操作類型,更新當前訪問Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,對當前訪問Cache行進行優(yōu)先級的升降級。本發(fā)明根據(jù)LLC中的Cache行的一致性狀態(tài)信息,對Cache行在整個Cache層次的分布以及共享狀態(tài)進行加權計算,獲得Cache行的替換優(yōu)先級。一方面,對于LLC中缺失的訪問,根據(jù)操作類型計算新調(diào)入Cache行的初始替換優(yōu)先級,按照替換優(yōu)先級有序原則,將優(yōu)先級最高的Cache行換出,并將新調(diào)入Cache行存入目標Cache的對應位置;另一方面,對于在LLC中命中的訪問,根據(jù)Cache一致性狀態(tài)及操作類型更新當前訪問Cache行替換優(yōu)先級,按照替換優(yōu)先級有序原則,進行當前訪問Cache行的升降級,從而減少了熱點“包含犧牲者”的無效化,有效提升了 Cache的訪問性能。

【專利附圖】

【附圖說明】
[0015]圖1是本發(fā)明多核共享Cache處理器的結構示意圖。
[0016]圖2是本發(fā)明LLC中Cache行的替換方法的流程示意圖。
[0017]圖3是本發(fā)明LLC中Cache行替換的一個具體實例示意圖。
[0018]圖4是本發(fā)明LLC中Cache行替換的另一個具體實例示意圖。
[0019]圖5是本發(fā)明LLC中Cache行替換的再一個具體實例示意圖。

【具體實施方式】
[0020]下面結合附圖對本發(fā)明進行進一步的詳細說明。通過足夠詳細的描述這些實施示例,使得本領域技術人員能夠實踐本發(fā)明。在不脫離本發(fā)明的主旨和范圍的情況下,可以對實施做出邏輯的、實現(xiàn)的和其他的改變。
[0021]圖1是本發(fā)明多核共享Cache處理器的結構示意圖。如圖1所示,Cache處理器具有兩級Cache,靠近處理器核的LI為上層Cache,遠離處理器核的LLC為下層Cache。LI與LLC是包含關系,即LI的Cache行在LLC中均有副本,而LLC的Cache行則不一定在LI中有副本,Cache行的操作不能破壞該包含關系。此外,LI為處理器核私有,指令I與數(shù)據(jù)D分立,LLC為所有處理器核共享。
[0022]圖2是本發(fā)明LLC中Cache行的替換方法的流程示意圖,如圖2所示,具體可以包括:
[0023]步驟21,根據(jù)當前數(shù)據(jù)的訪問地址確定目標Cache組。
[0024]步驟22,判斷目標Cache地址是否在LLC中命中,如果命中,進入步驟28 ;如果缺失,進入步驟23。
[0025]在本步驟中,比較目標Cache地址與LLC中Cache的tag表的字段是否匹配,如果匹配,則命中;如果不匹配,則缺失。
[0026]步驟23,判斷LLC中是否存在空行,如果存在,進入步驟24 ;如果不存在,進入步驟25。
[0027]在本步驟中,如果LLC的目標Cache組中存在一個或多個未使用的Cache行,則LLC中存在空行。
[0028]步驟24,將新調(diào)入Cache行放入最靠近MRU位置的一空行中,其中將MRU位置記為O位置。
[0029]步驟25,選擇處于目標Cache組的LRU位置的Cache行作為替換候選行,且如果該替換候選行數(shù)據(jù)被修改過,將該替換候選行數(shù)據(jù)回寫,其中將LRU位置記為W-1位置,W為相聯(lián)度。
[0030]步驟26,根據(jù)操作類型,計算新調(diào)入Cache行的替換優(yōu)先級,該計算方式為:
[0031]P = a^cXop+kXaa+agX (l~c) Xop, (I)
[0032]其中,B1表示寫操作權重,c表示上層Cache中的副本是否已經(jīng)回寫,如果回寫,c=O,否則,c = I ;op表示引起替換的操作類型,寫操作對應op = I,否則op = O ;k表示只讀副本數(shù)量,其取值不超過共享LLC的處理器核數(shù);a2表示讀操作權重;a3表示回寫操作權重;
[0033]其中,P值越小,替換優(yōu)先級越高,發(fā)生替換時優(yōu)先被替換。
[0034]在本步驟中,操作類型包括讀操作和寫操作。
[0035]LLC中Cache行的替換優(yōu)先級的維護包括兩個階段:初始替換優(yōu)先級和升降級。
[0036]根據(jù)公式⑴的定義,替換優(yōu)先級中:若由讀操作引起LLC行替換,則Cache行初始調(diào)入時,P = 2*a2 ;如果由寫操作導致的替換,則Cache行的初始替換優(yōu)先級為P = al。假設P值越小,替換優(yōu)先級越高,則為了減少LI數(shù)據(jù)副本的無效以及回寫操作,必須增加寫操作權重,保證al大于2*a2。當LI中的Cache行發(fā)生回寫時,P = a3,此時系統(tǒng)中僅有的數(shù)據(jù)副本存在于LLC中,替換不會導致“包含犧牲者”,因此,替換優(yōu)先級增加,a3小于2*a2。同時,當Cache行僅在LLC中存在一個只讀副本時,其應該具有最高的替換優(yōu)先級,此時P=a2??梢奱l、a2、a3的大小關系可以滿足叫> 2a2 > a3 > a2。
[0037]在程序運行過程中,LLC中的Cache行的共享副本的數(shù)量的增減以及回寫操作導致優(yōu)先級的升降級。只讀共享副本增加,P值增加,替換優(yōu)先級降低;上層替換導致Cache行回寫至LLC中將使得P值下降,替換優(yōu)先級提高。
[0038]值得注意的是,由于不同的應用具有不同的Cache訪問特性,因此,可賦予不同的Cache共享狀態(tài)不同的權重。例如,假設優(yōu)先級計算值越小,替換優(yōu)先級越高,如果系統(tǒng)的回寫開銷大,則應賦予寫操作更大的權重,從而降低具有寫操作副本的LLC行的替換優(yōu)先級。
[0039]步驟27,根據(jù)替換優(yōu)先級,按照替換優(yōu)先級有序原則,將優(yōu)先級最高的Cache行換出,并將新調(diào)入Cache行存入目標Cache的對應位置。
[0040]在本步驟中,替換優(yōu)先級有序原則為:位于同一 Cache中的兩個Cache行,分別將該兩個Cache行的位置記為i和j,其中i和j具有大小關系;如果i>j,則替換優(yōu)先級Pi>Pj。
[0041]若新調(diào)入Cache行的初始替換優(yōu)先級為大于等于目標Cache中的一個非LRU位置的Cache行,則將從該非LRU位置的Cache行至LRU位置的Cache行依次向LRU方向移動一個Cache行的距離,原來處于LRU位置的Cache被換出,并將新調(diào)入Cache行存入該非LRU位置的Cache行。
[0042]具體實例可參看圖3所示,么、13、(]、0和E表示映射至同一 Cache的Cache行,其中E為新調(diào)入Cache行,數(shù)字表示替換優(yōu)先級P值。替換發(fā)生前,具有最大P值的Cache行A處于MRU位置,具有最低的替換優(yōu)先級,具有最小P值的Cache行D處于LRU位置,具有最高的替換優(yōu)先級。新調(diào)入Cache行初始替換優(yōu)先級為20,目標Cache中的一個非LRU位置的Cache行B的初始替換優(yōu)先級為20,則將從Cache行B至Cache行D依次向Cache行D方向移動一個Cache行的距離,即A->A+1,Α+1->Α+2,…,W-2->W_l,并將新調(diào)入的Cache行存入位于A處的Cache行中。
[0043]步驟28,根據(jù)Cache —致性狀態(tài)和操作類型,更新當前訪問Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,對當前訪問Cache行進行替換優(yōu)先級的升降級。
[0044]在本步驟中,以一種典型的Cache —致性協(xié)議,MESI (M:modified ;E exclusive ;S:shared;I:invalid)協(xié)議為例進行說明。需要強調(diào)的是,本發(fā)明方法并不依賴于特定Cache 一致性協(xié)議,任何適用于包含Cache層次結構的Cache —致性協(xié)議均適用于本發(fā)明方法。
[0045]在MESI協(xié)議中,處于LLC中的Cache行具有三種可能的共享狀態(tài):I)M態(tài):Cache行僅存于LLC中,上層Cache中無副本;2) SS態(tài):Cache行同時存在于LLC及上層Cache中,所有數(shù)據(jù)副本為可讀狀態(tài);3)MT態(tài):Cache行同時位于LLC及一個處于互斥操作許可的上層Cache中,并且LLC中的數(shù)據(jù)在上層Cache中可能被修改過。三種狀態(tài)的Cache行發(fā)生替換時,需要執(zhí)行的操作不同,延遲各異。其中,處于M態(tài)的Cache行發(fā)生替換需要回寫LLC的數(shù)據(jù);處于SS態(tài)的Cache行替換時除了需要將LLC中的數(shù)據(jù)無效外,還需將上層Cache中的只讀數(shù)據(jù)副本無效;處于MT態(tài)的Cache行替換時,需首先將上層的可能修改過的數(shù)據(jù)回寫,然后將其無效。
[0046]LLC中的Cache行的替換優(yōu)先級與其Cache —致性狀態(tài)緊密相關,可以參考如表1所不的者的對照關系:
[0047]表1
[0048]

【權利要求】
1.一種LLC中Cache行的替換方法,其特征在于,包括: 如果目標Cache地址在LLC中缺失,根據(jù)操作類型計算新調(diào)入Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,將優(yōu)先級最高的Cache行換出,并將新調(diào)入Cache行存入目標Cache的對應位置; 如果目標Cache地址在LLC中命中,則根據(jù)Cache —致性狀態(tài)和操作類型,更新當前訪問Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,對當前訪問Cache行進行優(yōu)先級的升降級。
2.根據(jù)權利要求1所述的LLC中Cache行的替換方法,其特征在于,所述替換優(yōu)先級P的計算方式為:
P = B1XcXop+kXa2+a3X (l~c) Xop, 其中,B1表示寫操作權重,c表示上層Cache中的副本是否已經(jīng)回寫,如果回寫,c = 0,否則,c = I ;op表示引起替換的操作類型,寫操作對應op = I,否則op = O ;k表示只讀副本數(shù)量,其取值不超過共享LLC的處理器核數(shù);a2表示讀操作權重;a3表示回寫操作權重; 所述P值越小,替換優(yōu)先級越高,發(fā)生替換時優(yōu)先被替換。
3.根據(jù)權利要求2所述的LLC中Cache行的替換方法,其特征在于,所述操作類型包括讀操作和寫操作; 如果由讀操作引起LLC中Cache行替換,新調(diào)入Cache行中的P = 2*a2 ; 如果由寫操作引起LLC中Cache行替換,新調(diào)入Cache行中的P = al,其中,al大于2*a2 ; 如果上層Cache的Cache行發(fā)生回寫時,P = a3,其中,a3小于2*a2 ; 如果上層Cache的Cache行在LLC中存在一個只讀副本時,P = a2,其中,a3大于a2。
4.根據(jù)權利要求1所述的LLC中Cache行的替換方法,其特征在于,所述替換優(yōu)先級有序原則為: 位于同一 Cache中的兩個Cache行,分別將該兩個Cache行的位置記為i和j,其中i和j具有大小關系; 如果i大于j,則替換優(yōu)先級Pi大于Pj。
5.根據(jù)權利要求1或4所述的LLC中Cache行的替換方法,其特征在于,所述按照替換優(yōu)先級有序原則,將優(yōu)先級最高的Cache行換出,并將新調(diào)入Cache行存入目標Cache的對應位置,包括: 如果新調(diào)入Cache行的初始替換優(yōu)先級為大于或等于目標Cache中的一個非LRU位置的Cache行,則將從所述非LRU位置的Cache行至LRU位置的Cache行依次向LRU方向移動一個Cache行的距離,原來位于LRU位置的Cache行被替換,并將新調(diào)入Cache行存入所述非LRU位置的Cache行。
6.根據(jù)權利要求1所述的LLC中Cache行的替換方法,其特征在于,所述Cache—致性狀態(tài)為MESI,處于LLC中的Cache行具有以下共享狀態(tài):M態(tài)=Cache行僅存于LLC中,上層Cache中無副本;SS態(tài):Cache行同時存在于LLC及上層Cache中,所有數(shù)據(jù)副本為可讀狀態(tài);MT態(tài):Cache行同時位于LLC及一個處于互斥操作許可的上層Cache中,并且LLC中的數(shù)據(jù)在上層Cache中可能被修改過; 處于M態(tài)的Cache行發(fā)生替換需要回寫LLC的數(shù)據(jù);處于SS態(tài)的Cache行替換時除了需要將LLC中的數(shù)據(jù)無效外,還需將上層Cache中的只讀數(shù)據(jù)副本無效;處于MT態(tài)的Cache行替換時,需首先將上層的修改過的數(shù)據(jù)回寫,然后將所述上層的修改過的數(shù)據(jù)無效。
7.根據(jù)權利要求1或6所述的LLC中Cache行的替換方法,其特征在于,所述根據(jù)Cache 一致性狀態(tài)和操作類型,更新當前訪問Cache行的替換優(yōu)先級,按照替換優(yōu)先級有序原則,對當前訪問Cache行進行優(yōu)先級的升降級,包括: 根據(jù)Cache —致性狀態(tài)的共享副本數(shù)的變化和操作類型的讀/寫操作情況,更新當前訪問Cache行的替換優(yōu)先級; 如果由于Cache —致性狀態(tài)的共享副本數(shù)的變化和操作類型的讀/寫操作情況,替換優(yōu)先級發(fā)生變化,按照替換優(yōu)先級有序原則,對當前訪問Cache行進行降級或升級。
【文檔編號】G06F12/08GK104166631SQ201410462286
【公開日】2014年11月26日 申請日期:2014年9月11日 優(yōu)先權日:2014年9月11日
【發(fā)明者】王恩東, 倪璠, 陳繼承 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
炉霍县| 博野县| 灯塔市| 武山县| 宁安市| 宜君县| 崇明县| 永定县| 鹤庆县| 武汉市| 天气| 会宁县| 简阳市| 迭部县| 盱眙县| 汝城县| 奉化市| 莱阳市| 丰顺县| 河东区| 满洲里市| 莫力| 民乐县| 抚远县| 禄丰县| 余江县| 兴业县| 墨脱县| 平顺县| 乐清市| 肥东县| 望都县| 金门县| 奈曼旗| 丹阳市| 孟村| 裕民县| 连城县| 沁阳市| 黎川县| 沈丘县|