專利名稱:一種基于片上多核處理器共享cache的動態(tài)公平劃分方法
技術(shù)領域:
本發(fā)明屬于計算機體系結(jié)構(gòu)領域,具體涉及一種基于片上多核處理器共享cache 的動態(tài)公平劃分方法。
背景技術(shù):
多核處理器已成為今后微處理器發(fā)展的重要趨勢,目前主流的片上多核處理器 (chip Multiprocessor,簡稱CMP)大多使用私有一級(或一級和二級)Cache (即為高速緩 存),共享二級(或三級)Cache的片上存儲結(jié)構(gòu)。這種結(jié)構(gòu)通過共享二級(或三級)Cache 和更低的存儲層,最大限度地提高資源利用率來避免重復開銷。然而,隨著并發(fā)執(zhí)行線程數(shù) 量的增加,存儲層所承受的壓力也在不斷地增大。最近的研究表明,共享Cache的沖突訪問 對處理器的性能影響很大,而CMP中共享Cache的分配主要由LRU(LeastRecently Uesed) 策略隱式?jīng)Q定,設計高效的共享Cache劃分算法成為當前研究的重要問題。
目前對共享Cache劃分策略的研究幾乎都是針對如何提高吞吐量的,對公平性的 研究極少。公平性是一個關(guān)鍵的優(yōu)化問題。如果多用戶系統(tǒng)采用的是單線程處理器,那么 操作系統(tǒng)(OS operated system)線程調(diào)度器通過合理的分配時間片就可以保證所有線程 公平的運行。但是如果多用戶系統(tǒng)采用的是CMP處理器,所有被調(diào)度運行的線程共享Cache 資源,在缺乏公平性情況下,會出現(xiàn)線程餓死和優(yōu)先級反轉(zhuǎn)等問題。為了保證所有線程公 平,單純依靠操作系統(tǒng)線程調(diào)度器是不夠的,系統(tǒng)硬件必須提供相應的支持。實際上,在多 用戶系統(tǒng)中,公平性比吞吐量更加重要,因為沒有哪個用戶愿意等待更長的時間。因此,將 公平性作為CMP結(jié)構(gòu)下主要的優(yōu)化目標,可以簡化操作系統(tǒng)的設計,并且可以顯著提升系 統(tǒng)整體性能。 公平性就是所有的線程有相同的機會獲得其運行所要求的資源,并保證沒有線程 餓死。但公平并不意味著所有線程具有相同的吞吐量。通常情況下,公平和效率(其主要 指標為系統(tǒng)吞吐量)相互影響和制約,一方的提高有時會帶動另一方的改善,但有時會削 弱另一方。在某些特殊情況下,則會嚴重影響另一方導致系統(tǒng)失衡。例如追求效率最大化 時,會嚴重削弱系統(tǒng)的公平性。所以Cache的劃分方案必須很好的平衡公平和效率,以達到 最佳設計目標。 因為公平性的定義沒有給出定量的指標,所以公平性參數(shù)亦是眾說紛紜。 一個被 廣泛接受的參數(shù)是定義Tdedi為線程i獨占整個Cache的執(zhí)行時間,Tshri為線程i與其余線 程共享Cache的執(zhí)行時間,則最公平的理想情況如式(1)所示, -二-= ... =- (1) 該等式被稱為執(zhí)行時間公平性標準數(shù)。Seongbeom Kim提出了一個公平優(yōu)先的 cache劃分方案,其公平性參數(shù)為式(2), — X, |,尤=^1 (2)
cache訪問的缺失率(missr)或缺失數(shù)(miss)既與公平性緊密相關(guān),易于測量,所 以Seongbeom Kim以缺失率或缺失數(shù)為測量點,給出定量評估Cache劃分公平性的5個指 線(M丄 M》,如式(3) (7), M;=|Z,-JTJ, X= — (3) , A/咖_ M; =|《-《|, = — (4)
^f/=|Z—1|, ^ =-=—— (5)=|《一 X, I , Z = M雄一 (6) 二| X, - X I , 二 Mksr — — Afcr 一 (7) 但這5個指標有兩點不足, 一是Mx用缺失率替代執(zhí)行時間,這就不能準確的反映 線程的執(zhí)行狀態(tài);二是Mx針對兩個并發(fā)線程劃分的評估,并沒有給出多線程的評估指標,僅 將多線程間兩兩線程的評估指標累加和作為多線程的公平性評估標準,不能準確評估多線 程的公平性。
發(fā)明內(nèi)容
為了解決現(xiàn)有的系統(tǒng)缺乏公平性問題,本發(fā)明的目的是提供一種基于片上多核處 理器共享cache的動態(tài)劃分方法有效地提高系統(tǒng)公平性。為實現(xiàn)上述目的,本發(fā)明提供技 術(shù)方案如下( — )公平性評價參數(shù) 本發(fā)明使用線程相對執(zhí)行時間作為公平性的度量標準,n個線程并發(fā)執(zhí)行時,參數(shù) S作為公平性的評價指標,其值越小越公平。參數(shù)如式(8),
'" (8)尤=,,1=丄|^, 假設CMP訪問主存不發(fā)生缺失。設M工為每指令的一級Cache缺失次數(shù),E工為訪問 一級Cache命中開銷,M2為每指令的二級Cache缺失次數(shù),E2為一級Cache缺失時訪問二 級Cache的命中開銷,E3為二級Cache缺失時訪問主存的命中開銷,CPIi為平均每指令花 銷周期數(shù),CPIb_為平均每指令執(zhí)行周期數(shù),Inuffl為執(zhí)行的指令數(shù)。貝機程i的執(zhí)行時間1 如式(9) (11)所示。 Ti二CPIiXI畫 (9)
CPIi = CPIbase+Ei+I^XE^I^XEs (10) M2 =-,Miss = L2Cache缺失數(shù) (11) 因一級Cache私有則M工在線程i獨占或共享二級Cache時不變化,且E^E^Es和 CPIbase亦不變化,令a = CPIbase+E^XEy P 二E"則Ti和Xi如式(12)和(13)所示,其
5中Misssi為n個線程共享運行時,第i個線程的二級Cache的缺失數(shù),MisSdi為n個線程中 第i個線程獨占二級Cache運行時的缺失數(shù)。
1\ = a XInum+P XMiss (12)
T, r由, a x / m + (3 x M/仏, ,…X = - =-- (13)
7Ved, a x / 詣+ (3 x M/Wrf, 式(13)中,a 、 |3和In,都可以在線程運行前獲得,所以要想求得Xi,需要在線程 運行時獲得Misssi和Missdi。 根據(jù)LRU替換策略的棧特性可獲得MisSsi。給每個核增加一張表,該表的項目數(shù)與 整個二級Cache塊數(shù)相同。這樣每個核都可以用私有的LRU策略模擬獨占使用共享Cache 時的執(zhí)行。用該表記錄每次訪問Cache的塊號,通過監(jiān)控上級Cache失效時訪問共享Cache 的塊號,并且用塊號在模擬表中匹配每一項,當出現(xiàn)所有項均不匹配時,即認為獨占狀態(tài)下 發(fā)生一次缺失。用一計數(shù)器保存缺失數(shù),就得到獨占Cache情況下的缺失數(shù)MisSdi,該計數(shù) 器稱為獨占缺失計數(shù)器。 定義向量P二 (PpP2,…,Pn)為共享Cache分配向量,其中Pi(0《Pi《Cj為線 程i分配的共享Cache容量。每個線程的Misssi隨著劃分Pt和運行時間1\變化,將Misssi 表示為Pi和1\的函數(shù),則有式(14)。
minfmin ;f 7>
,=i
X二ax/肌m+PxMz'5^,'(尸',7j) ax/肌m+PxM/ssd,
(14) 求解上節(jié)式(14),令f取最小值0,就可得到公平性最優(yōu)的Cache分配方案。但 在實際中,共享缺失數(shù)還受其它因素的影響,如操作系統(tǒng)對線程的資源分配等,所以無法確 定其具體的函數(shù)關(guān)系且求解該式花銷巨大。因此將S2作為劃分算法公平性的評價指標,在 線程運行一個時間片后,對其公平性進行評價,通過Cache劃分策略降低S2。 [OO33] ( 二 )動態(tài)劃分策略 本發(fā)明所述的動態(tài)劃分策略主要分成三個步驟初始化、回溯和重劃分。將應用程 序的運行時間均勻分塊,每一塊時間稱為一個時間片t。初始化只在應用程序運行前執(zhí)行一 次,回溯和重劃分階段則在每個時間片t結(jié)束后執(zhí)行。設S2t為時間片t的公平性參數(shù)S2, 回溯階段是計算公平性指標S2t大于上一時間片的S2t—工且與其之差大于回溯閾值,則撤銷 上一次重劃分。重劃分階段是若未發(fā)生回溯且S2大于重劃分閾值,則對所有線程重新劃分 Cache。在算法中,有四個基本的參數(shù)回溯閾值Sf^、重劃分閾值S,^iti。n、劃分粒度
gran和時間片t。 一般Sr。llbaek取值在1% 50%之間,Srepartiti。n取值在1% 10%之間, 劃分粒度gran即是劃分的最小單位取值在64B 64KB之間,t取值在100000 5000000 個時鐘周期之間。算法的主要過程如下
(1)初始化 1. 1)所有線程等分高速緩存(Cache) , Pt = Cache總?cè)萘?n, Pt表示線程i所分 配的Cache大小,n表示線程總數(shù),表示時間片t時線程i所分配的Cache大小;
6
1. 2)設Mi為每指令的一級Cache缺失次數(shù),E:為訪問一級Cache命中開銷,E2為 一級Cache缺失時訪問二級Cache的命中開銷,E3為二級Cache缺失時訪問主存的命中開 銷,CPIb_為平均每指令執(zhí)行周期數(shù)。MpE^E"E3和CPIb_的值由所使用的計算機體系結(jié) 構(gòu)決定; 1.3)令a = CPIbase+E,M丄XE2, P =£3,計算出a禾P p ; (2)回溯階段在時間片t結(jié)束時, 2. 1)計算時間片t時劃分方案的公平性指標S2t : 2. 1. 1)讀指令計數(shù)器獲得時間片t內(nèi)各線程執(zhí)行的指令數(shù)1^,讀獨占缺失計數(shù) 器獲得各線程獨占cache狀態(tài)下的缺失數(shù)Missdi ; 2. 1. 2)根據(jù)公式(I)計算出Tdedi, Tstoi等于時間片t,公式(I)如下
Tdedi = a XI畫+P XMissdi (I) 2. 1. 3)根據(jù)公式(II)計算Xi和Xi的均值,公式(II)如下:
2. 1. 4)根據(jù)公式(III)計算S2t,公式(III)如下
"—11^
.--," (III) 2. 2)若S2t < S2t—p或I S2t_S2t—! | /S2t < Sr。llback則轉(zhuǎn)到步驟(3); 2. 3)若S2t > S2t—p且I S2「S2t—丄I /S2t > Srollback,令P, = P1—、,轉(zhuǎn)到步驟(4)。
(3)重劃分階段回溯階段結(jié)束后, 3. 1)若S2t < Srepartiti。n,則轉(zhuǎn)到步驟(4); 3. 2)若S2t > Sr印aw,則設Yi = X「 E X乂n,劃分集PS = {P; PV…,PU和 候選集CS = {1,2,…,n); 3. 3)如I CS I > 2,選出Yi中的最大值maXYk和最小值minYj, k和j分別是最大值
和最小值的線程號;若maxYk《0或minYj > 0則轉(zhuǎn)到步驟3. 6); 3. 4)如P、 = gran,則CS' = CS_{j},轉(zhuǎn)到步驟3. 3); 3. 5)Pt+1k = ptk+gran, Pt+1j = P、-gran, CS' = CS_{k, j},轉(zhuǎn)到步驟3. 3); 3. 6)若CS'中還有剩余的線程號i,則令= PV (4)轉(zhuǎn)到步驟(2),直至n個線程運行結(jié)束。 本發(fā)明所描述的算法簡化了劃分步驟,提高了劃分效率,使用S2作為公平性指標, 充分考慮到多線程間的相互聯(lián)系,提高了系統(tǒng)的公平性。
圖1是本發(fā)明所述的方法流程圖;
圖2是本發(fā)明所述的重劃分階段流程圖; 圖3是本發(fā)明所述的三種劃分方法的線程相對執(zhí)行時間對比圖;
圖4是本發(fā)明所述的三種劃分方法的公平性參數(shù)對比圖;
圖5是本發(fā)明所述的三種劃分方法的效率對比圖。
具體實施例方式
下面以一個片上多核處理器為例,對本發(fā)明所述的方法進行詳細的描述。處理器
配置如表1 : 表1CMP的配置
CMP配置
處理器4核,兩級cache,亂序發(fā)射
一級Cache每核私有指令cache和數(shù)據(jù)cache:
指令cache: 32KB, 64B塊大小,4-way LRU替換策略
數(shù)據(jù)cache: 32KB, 64B塊大小,4-way LRU替換策略
二級Cache共享cache: 512KB, 64B塊大小,8-way LRU替換策略
內(nèi)存2GB 在該處理器上四個參數(shù)分別取值S llbadt = t = 1000000,具體劃分步驟如下
(1)初始化
1. 1)所有線程等分Cache, Pi = 512KB/4 1. 2)根據(jù)當前所用計算機體系結(jié)構(gòu),則M工
10%、S
repartition
1 % 、 gran = 64B和
=0. 5
分集PS
:128KB ; 0. 1、E! = 3、E2
6、E3 = 158和CP工t
e+E,M丄XE2 = 4. 1禾P P = E3
158
1. 3)計算出=CPIt
(2) 回溯階段:
2. 1)計算出當前劃分方案的公平性指標S2,當前為第一個時間片,S =1. 38 ; 2. 2)如當前是第一個時間片結(jié)束,則令S2。 = 1000000 ;S < S;轉(zhuǎn)到步驟(3);
2. 3)恢復上一時間片的劃分方案,P, = 、。
(3) 重劃分階段回溯階段結(jié)束,
3. 1)S > Sr印ar也i。n,進行重劃分;
3. 2)設Yi = X「 E X乂n,則有Y丄=-0. 84, Y2 = 0. 49, Y3 = -0. 23, Y4 = 1. 82,劃 ={128KB, 128KB, 128KB, 128KB}和候選集CS = {1,2,3,4};
3. 3) |CS| = 4 > 2,選出Yi中的最大值maxYk = Y4和最小值minYj = Ynk = 4, j =1 ;maxYk > 0且minYj < 0 ; 3. 4)P\ > gran,則P24 = P、+gran = 128064B,P =P -gran = 127936B,CS'= CS-{4,1} = {2,3}; 3. 5)轉(zhuǎn)到步驟3. 3) ; | CS' | = 2, maxYk = Y2和minYj = Y3, k = 2, j = 3 ;maxYk > 0且minYj < 0 ; 3. 6)P、 > gran,則P22 = P、+gran = 128064B, P23 = P23_gran = 127936B, CS"= CS' _{2,3}=①; 3. 7)轉(zhuǎn)到步驟3. 3) ; |CS〃 = 0 < 2,轉(zhuǎn)到步驟(4)。
(4)轉(zhuǎn)到步驟(2),直至n個線程運行結(jié)束。
8
用三種共享cache劃分策略做對比Seongbeom Kim提出的DynamicFair caching (DFC)策略,隱式劃分cache的LRU策略和本發(fā)明所述的S-DFC策略。用SPEC 2000 中的8個領lj試用例gzip、 vpr、 parser、 vortex、 bzip2、 twolf 、 mesa禾口 equake并發(fā)執(zhí)行,三 種策略的線程相對執(zhí)行時間如圖3所示。從圖4中可看出S-DFC較DFC進一步提高了系統(tǒng) 公平性,DFC在多線程環(huán)境中并不如在兩線程中提高顯著,而LRU明顯公平性最差。圖5則 表明S-DFC和DFC并未犧牲系統(tǒng)吞吐量,在提高公平性的同時系統(tǒng)吞吐量也有小幅提高。
權(quán)利要求
一種基于片上多核處理器共享cache的動態(tài)公平劃分方法,其特征在于,包括以下步驟初始化、回溯和重劃分;將應用程序的運行時間均勻分塊,每一塊時間稱為一個時間片t;初始化只在應用程序運行前執(zhí)行一次,回溯和重劃分階段則在每個時間片t結(jié)束后執(zhí)行;設S2t為時間片t的公平性參數(shù)S2,回溯階段是計算公平性指標S2t大于上一時間片的S2t-1且與其之差大于回溯閾值,則撤銷上一次重劃分;重劃分階段是若未發(fā)生回溯且S2大于重劃分閾值,則對所有線程重新劃分高速緩存Cache;在該方法中,有四個基本的參數(shù)回溯閾值Srollback、重劃分閾值Srepartition、劃分粒度gran和時間片t;Srollback取值在1%~50%之間,Srepartition取值在1%~10%之間,劃分粒度gran即是劃分的最小單位取值在64B~64KB之間,t取值在100000~5000000個時鐘周期之間;具體過程如下(1)初始化1.1)所有線程等分高速緩存Cache,Pi=Cache總?cè)萘?n,Pi表示線程i所分配的Cache大小,n表示線程總數(shù),Pti表示時間片t時線程i所分配的Cache大小;1.2)設M1為每指令的一級Cache缺失次數(shù),E1為訪問一級Cache命中開銷,E2為一級Cache缺失時訪問二級Cache的命中開銷,E3為二級Cache缺失時訪問主存的命中開銷,CPIbase為平均每指令執(zhí)行周期數(shù);M1、E1、E2、E3和CPIbase的值由所使用的計算機體系結(jié)構(gòu)決定;1.3)令α=CPIbase+E1+M1×E2,β=E3,計算出α和β;(2)回溯階段在時間片t結(jié)束時,2.1)計算時間片t時劃分方案的公平性指標S2t2.1.1)讀指令計數(shù)器獲得時間片t內(nèi)各線程執(zhí)行的指令數(shù)Inum,讀獨占缺失計數(shù)器獲得各線程獨占cache狀態(tài)下的缺失數(shù)Missdi;2.1.2)根據(jù)公式(I)計算出Tdedi,Tshri等于時間片t,公式(I)如下Tdedi=α×Inum+β×Missdi(I)2.1.3)根據(jù)公式(II)計算Xi和Xi的均值,公式(II)如下 <mrow><msub> <mi>X</mi> <mi>i</mi></msub><mo>=</mo><mfrac> <msub><mi>Tshr</mi><mi>i</mi> </msub> <msub><mi>Tded</mi><mi>i</mi> </msub></mfrac><mo>,</mo><mover> <mi>X</mi> <mo>‾</mo></mover><mo>=</mo><mfrac> <mn>1</mn> <mi>n</mi></mfrac><munderover> <mi>Σ</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>n</mi></munderover><msub> <mi>X</mi> <mi>i</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mi>II</mi> <mo>)</mo></mrow> </mrow>2.1.4)根據(jù)公式(III)計算S2t,公式(III)如下 <mrow><msup> <mi>S</mi> <mn>2</mn></msup><mo>=</mo><mfrac> <mn>1</mn> <mrow><mi>n</mi><mo>-</mo><mn>1</mn> </mrow></mfrac><munderover> <mi>Σ</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mi>n</mi></munderover><msup> <mrow><mo>(</mo><msub> <mi>X</mi> <mi>i</mi></msub><mo>-</mo><mover> <mi>X</mi> <mo>‾</mo></mover><mo>)</mo> </mrow> <mn>2</mn></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mi>III</mi> <mo>)</mo></mrow> </mrow>2.2)若S2t<S2t-1,或|S2t-S2t-1|/S2t<Srollback則轉(zhuǎn)到步驟(3);2.3)若S2t≥S2t-1,且|S2t-S2t-1|/S2t≥Srollback,令Pt+1i=Pt-1i,轉(zhuǎn)到步驟(4);(3)重劃分階段回溯階段結(jié)束后,3.1)若S2t<Srepartition,則轉(zhuǎn)到步驟(4);3.2)若S2t≥Srepartition,則設Yi=Xi-∑Xi/n,劃分集PS={Pt1,Pt2,…,Ptn}和候選集CS={1,2,…,n};3.3)如|CS|≥2,選出Yi中的最大值m axYk和最小值minYj,k和j分別是最大值和最小值的線程號;若maxYk≤0或minYj≥0則轉(zhuǎn)到步驟3.6);3.4)如Ptj=gran,貝CS′=CS-{j},轉(zhuǎn)到步驟3.3);3.5)Pt+1k=Ptk+gran,Pt+1j=Ptj-gran,CS′=CS-{k,j},轉(zhuǎn)到步驟3.3);3.6)若CS′中還有剩余的線程號i,則令Pt+1i=Pti;(4)轉(zhuǎn)到步驟(2),直至n個線程運行結(jié)束。
全文摘要
本發(fā)明涉及一種基于片上多核處理器共享cache的動態(tài)公平劃分方法,屬于計算機體系結(jié)構(gòu)領域。公平性是一個關(guān)鍵的優(yōu)化問題,當系統(tǒng)缺乏公平時,會出現(xiàn)線程餓死和優(yōu)先級反轉(zhuǎn)等問題。而目前CMP的設計以提高系統(tǒng)吞吐量為主要目標,這樣往往會犧牲系統(tǒng)的公平性。本發(fā)明提出了一種新的公平性參數(shù)和劃分方法。劃分方法分成三個步驟初始化、回溯和重劃分。初始化在線程運行前等分cache。回溯階段是撤銷上一次重劃分反而公平性降低的劃分。重劃分階段是若未發(fā)生回溯且公平性參數(shù)大于重劃分閾值,則對所有線程重新劃分Cache。采用本發(fā)明提出的共享Cache劃分方法顯著提高了系統(tǒng)公平性,并且系統(tǒng)吞吐量也有小幅提高。
文檔編號G06F9/50GK101739299SQ20091024365
公開日2010年6月16日 申請日期2009年12月18日 優(yōu)先權(quán)日2009年12月18日
發(fā)明者方娟, 蒲江 申請人:北京工業(yè)大學