專利名稱:一種共享高速緩存動態劃分方法與電路的制作方法
技術領域:
本發明屬于計算機技術領域,具體為一種共享高速緩存(Cache)動態劃分方法與電路。
背景技術:
隨著處理器技術的發展,多核處理器的優勢越來越明顯,已經逐步取代單核處理器,成為微處理器發展的新方向。在多核處理器架構中通常將最后一級Cache共享,如在 IBM P0WER6和Intel i7架構中共享三級Cache,在Sun UltraSPARC T2架構中共享二級 Cache。由于最后一級Cache被各核共享,所以一個核的活躍數據很有可能被其他核引發的缺失替換出共享Cache,導致系統性能下降。為了減小這種相互污染對系統性能的影響,可以對共享Cache進行動態的劃分。 動態劃分通過控制每個核在共享Cache中占有資源的數量,抑制各個核之間的相互影響, 提高系統性能。但是現有的劃分技術往往因為過于強調提高系統某一方面的性能,所以導致在很多情況下反而會使系統整體性能降低。本發明針對這一問題,提出的新型共享Cache 動態劃分方法,通過引入自由路,可以在兼顧恰當劃分給系統性能帶來提升的同時,有效減小不當劃分給系統帶來的性能下降,使系統的平均性能得到提升,具有更廣泛的適用性。
發明內容
本發明的目的在于提出一種能夠提升系統整體性能的共享Cache動態劃分方法與電路。本發明提出的共享Cache動態劃分方法,為共享Cache設置監控電路和劃分電路。 因此,共享Cache動態劃分電路包含監控電路、劃分電路和共享Cache三大部分,可應用于各種多核系統。本發明在共享Cache動態劃分中,為每個核提供一個監控電路,即每個核對應一個監控電路,用來跟蹤共享Cache,當共享Cache為一個核所獨占時,在共享Cache空間中為這個核分配不同路數的情況下,該核可獲得的命中數。為實現這一功能,從共享Cache標簽目錄每32組中選取一組作為采樣組進入監控電路,在監控電路中建立和采樣組相同的標簽目錄,并為每一路提供一個計數器,以統計該路的命中次數。在監控電路中所有組的同一路共用一個計數器,即任意組某一路命中后,該路計數器值均加I。這樣,將監控電路的相應計數器值相加,便獲得在共享Cache中為擁有該監控電路的核分配不同路數時,該核的具體命中數。每個核的監控電路只能被該核訪問,因此不會受其他核線程的影響。監控電路將監控信息傳遞給劃分電路,根據這些信息,劃分電路按照劃分算法計算出在共享Cache中分配給各個核的最優私有路路數。本發明提出的劃分算法,是將共享Cache空間每組中的各路劃分為私有路和自由路兩大部分。其中私有路被劃分算法顯性地分配給某一個核,而自由路則在系統運行過程中按照LRU的方法被隱性地分配給某一個核,不再由劃分算法顯性地分配。以雙核共享二級Cache結構為例,本發明提出的新型劃分算法將共享Cache空間每組中的各路分配為三個部分一部分分配給核1,一部分分配給核2,另外將最后一部分作為自由路。自由路部分不由劃分算法顯性地分配給核I或者核2,而由兩個核共享,在系統運行過程中,按照LRU 的方法,動態地隱性分配給其中之一。劃分算法每隔固定周期執行一次。每次劃分算法執行后,將監控電路中的計數器值減半。這樣在突出當前執行信息的同時,也保留了以前的信肩、O因為自由路的路數是固定的,不受劃分電路的控制。因此,劃分算法只對私有路進行分配。即新型劃分算法只需將非自由路納入遍歷的范圍。以雙核共享16路組相連Cache, 其中有I路自由路為例,新型劃分算法只遍歷為兩個核一共分配15路的所有情況,即遍歷在共享Cache中為核I分配i路,為核2分配15_i路的所有情況,其中KiS 14,找出使兩個核各路的命中總數最高的劃分方法。剩下的I路自由路則由兩個核共享,在運行過程中按照最近最少使用(LRU)的方式動態地分配給某一個核。為了配合將新的劃分算法中計算得到的最優劃分實現,需要為共享Cache中每個塊添加若干位標志位,以標記該塊屬于哪個核,即最近被哪個核命中或替換過。每個核訪問共享Cache時均可訪問其中的任意一路。但如果一個核引起共享Cache缺失,需要一個塊被替換出共享Cache。那么,先統計共享Cache需替換塊的組中,屬于這個核的塊數。如果該塊數小于劃分算法計算得到的應該分配給這個核的路數,則在屬于其他核的塊中找到位于LRU替換算法隊列最尾端的塊,替換出共享Cache。如果統計得到的塊數大于最優劃分中應該分配給這個核的路數,則在屬于這個核自己的塊中找到位于LRU替換算法隊列最尾端的塊替換出去。如果統計得到的各個核的塊數等于劃分算法分配的塊數,此時再發生缺失,則采取新的替換策略,不再區分該塊屬于哪個核,從發生缺失的組內所有的塊中找到位于LRU隊列最尾端的塊替換出去。由于劃分是否恰當受劃分時機的影響,所以不是每次劃分都會對系統性能有利。 如不在共享Cache中加入自由路,錯誤的劃分將很難被改變。這是由于,假設一次錯誤劃分為某個核分配了過少的共享Cache路數,那么將導致在相同的時間里,該核執行的指令數少于其他核,進而使該核監控電路中各路的命中數也少于其他核,所以在下次劃分時這個核依然會被分配很少的路數。而加入自由路后,被分配過少路數的核可以借助自由路,在一定程度上增加其在共享Cache中的路數,最終增加該核監控電路中各路的命中數,使該核可以在下次劃分時爭取到更多的路數,糾正錯誤的劃分。實驗表明,只需加入少數的自由路,即可有效抑制錯誤的劃分,所以可在基本不影響正確劃分方法帶來的系統性能提升的同時,有效降低錯誤的劃分對系統性能的危害。綜上,本發明提出了一種新的劃分算法和替換策略,在共享Cache中創新性的加入了自由路,通過不受動態劃分制約的自由路,有效抑制不當的劃分對系統性能的影響。本發明在兼顧正確劃分共享Cache給系統性能帶來提升的同時,大大減小了錯誤劃分給系統性能帶來的下降。因此與不劃分共享Cache和基于效用最優劃分共享Cache的方法相比, 本發明提出的新型共享Cache動態劃分方法將系統的性能平均提高了 13. 17%和8. 83%。
圖I為在雙核共享二級Cache的系統中,應用本發明提出的新型共享Cache動態劃分方法整體框架圖。圖2為性能加速比與自由路路數關系圖。圖3為8組測試用例下不劃分共享Cache,基于效用最優劃分共享Cache和本發明提出的新型共享Cache動態劃分方法性能對比圖。
具體實施例方式本發明采用多核系統仿真器M-Sim,模擬基于Alpha指令集的雙核系統,具體配置見表I。在雙核共享二級Cache的系統中,應用本發明提出的新型共享Cache動態劃分方法的整體框架如圖I所示。我們從SPEC CPU2000測試集中選取多道測試用例,兩兩一組在 M-Sim構建的雙核系統架構下進行測試,如表2所示。表I仿真環境配置
權利要求
1.一種共享Cache動態劃分方法,其特征在于為共享Cache設置監控電路和劃分電路;即在共享Cache動態劃分中,為每個核設置一個監控電路,用來跟蹤共享Cache,當共享Cache為一個核所獨占時,在共享Cache空間中為這個核分配不同路數的情況下,得到該核可獲得的命中數;所述監控電路將監控信息傳遞給劃分電路,劃分電路據此按照劃分算法計算出在共享 Cache中分配給各個核的最優私有路路數;所述的劃分算法,是將共享Cache空間每組中的各路劃分為私有路和自由路兩大部分;其中私有路被劃分算法顯性地分配給某一個核,而自由路則在系統運行過程中按照 LRU的方法被隱性地分配給某一個核,不再由劃分算法顯性地分配;劃分算法每隔固定周期執行一次,每次劃分算法執行后,將監控電路中的計數器值減半;為了配合劃分算法中計算得到的最優劃分實現,為共享Cache中每個塊添加若干位標志位,以標記該塊屬于哪個核,即最近被哪個核命中或替換過;每個核訪問共享Cache時均可訪問其中的任意一路,如果一個核引起共享Cache缺失, 需要一個塊被替換出共享Cache,那么,先統計共享Cache需替換塊的組中,屬于這個核的塊數;如果該塊數小于劃分算法計算得到的應該分配給這個核的路數,則在屬于其他核的塊中找到位于LRU替換算法隊列最尾端的塊,替換出共享Cache ;如果統計得到的塊數大于最優劃分中應該分配給這個核的路數,則在屬于這個核自己的塊中找到位于LRU替換算法隊列最尾端的塊替換出去;如果統計得到的各個核的塊數等于劃分算法分配的塊數,此時再發生缺失,則采取新的替換策略,不再區分該塊屬于哪個核,從發生缺失的組內所有的塊中找到位于LRU隊列最尾端的塊替換出去。
2.根據權利要求I所述的共享Cache動態劃分方法,其特征在于所述得到該核可獲得的命中數的具體操作如下從共享Cache標簽目錄每32組中選取一組作為采樣組進入監控電路,在監控電路中建立和采樣組相同的標簽目錄,并為每一路提供一個計數器,以統計該路的命中次數;在監控電路中所有組的同一路共用一個計數器,即任意組某一路命中后,該路計數器值均加I ;將監控電路的相應計數器值相加,便獲得在共享Cache中為擁有該監控電路的核分配不同路數時,該核的具體命中數。
3.根據權利要求I所述的共享Cache動態劃分方法,其特征在于所述劃分算法只對私有路進行分配;對于雙核共享16路組相連Cache,其中有I路自由路,劃分算法只遍歷為兩個核一共分配15路的所有情況,即遍歷在共享Cache中為核I分配i路,為核2分配15_i 路的所有情況,其中K i < 14,找出使兩個核各路的命中總數最高的劃分方法;剩下的I 路自由路則由兩個核共享,在運行過程中按照LRU方法動態地分配給某一個核。
4.一種共享Cache動態劃分電路,其特征在于包含監控電路、劃分電路和共享Cache三大部分;其中每個核對應一個監控電路,該監控電路用來跟蹤共享Cache,當共享Cache為一個核所獨占時,在共享Cache空間中為這個核分配不同路數的情況下,該核可獲得的命中數;監控電路將監控信息傳遞給劃分電路,劃分電路據此按照劃分算法計算出在共享 Cache中分配給各個核的最優私有路路數;所述劃分算法,是將共享Cache空間每組中的各路劃分為私有路和自由路兩大部分;其中私有路被劃分算法顯性地分配給某一個核,而自由路則在系統運行過程中按照LRU的方法被隱性地分配給某一個核,不再由劃分算法顯性地分配;劃分算法每隔固定周期執行一次;每次劃分算法執行后,將監控電路中的計數器值減半;共享Cache中每個塊添加有若干位標志位,以標記該塊屬于哪個核,即最近被哪個核命中或替換過;每個核訪問共享Cache時均可訪問其中的任意一路;如果一個核弓I起共享Cache缺失, 需要一個塊被替換出共享Cache ;那么,先統計共享Cache需替換塊的組中,屬于這個核的塊數;如果該塊數小于劃分算法計算得到的應該分配給這個核的路數,則在屬于其他核的塊中找到位于LRU替換算法隊列最尾端的塊,替換出共享Cache ;如果統計得到的塊數大于最優劃分中應該分配給這個核的路數,則在屬于這個核自己的塊中找到位于LRU替換算法隊列最尾端的塊替換出去;如果統計得到的各個核的塊數等于劃分算法分配的塊數,此時再發生缺失,則采取新的替換策略,不再區分該塊屬于哪個核,從發生缺失的組內所有的塊中找到位于LRU隊列最尾端的塊替換出去。
全文摘要
本發明屬于計算機技術領域,具體為一種共享高速緩存動態劃分方法與電路。本發明中,為共享Cache設置監控電路和劃分電路,監控電路用于監控各個核對共享Cache的利用率,劃分電路根據監控得到的信息計算出共享Cache分配給每個核的最優路數,共享Cache則在劃分電路計算結果的控制下工作。本發明提出了一種新的劃分算法和替換策略,在共享Cache中創新性的加入了自由路,有效抑制不當的劃分對系統性能的影響。本發明在兼顧正確劃分共享Cache給系統性能帶來提升的同時,大大減小了錯誤劃分給系統性能帶來的下降。與不劃分共享Cache和基于效用最優劃分共享Cache的方法相比,本發明提出的共享Cache動態劃分方法將系統的性能平均提高了13.17%和8.83%。
文檔編號G06F9/50GK102609362SQ20121002064
公開日2012年7月25日 申請日期2012年1月30日 優先權日2012年1月30日
發明者倪亞路, 周曉方 申請人:復旦大學