一種計算機緩存系統的管理方法
【專利說明】一種計算機緩存系統的管理方法
[0001]本申請是原申請號為201210464057.8,申請日為2012.11.16,發明創造名稱為
“一種計算機緩存系統的管理方法”的發明專利的分案申請。
技術領域
[0002]本發明涉及一種計算機緩存系統的管理算法,具體是指一種CPU緩存系統的管理方法。
【背景技術】
[0003]目前,計算機系統訪問諸如內存和其他低級存儲設備(如硬盤和網絡設備)時均有很大的延遲。以訪問內存為例,在CPU發出數據和指令的存取命令后,要約100納秒的時間才能得到數據,這相當于CPU核心執行幾百條指令的時間。由于CPU系統對指令和數據的使用有一定的規律,因此根據這些規律,我們便可以設計各種手段猜測CPU將要使用到的指令和數據,并提前預取這些內容到CPU中以備用。這樣當CPU要實際使用這些指令和數據時,不需要等待,可以立即得到這些指令和數據。因此,預取(Prefetch)是能夠有效地減少CPU訪問內存和其他低級存儲設備的平均訪問延遲的一種手段。
[0004]然而,預取在實際應用中的功效取決于兩個條件:第一,預取的準確性,也即預取的數據和指令是否及時,是否會被實際地用到;第二,預取的指令和數據對CPU緩存中現有的有用的指令和數據的排擠沖刷作用。雖然預取可以有效地降低內存訪問的平均延遲,但是預取的內容會替換掉CPU緩存中現有的有用指令和數據,而這些被預取的內容替換掉的CPU緩存中現有的有用內容是將來要被重新耗費時間讀入CPU的。因此對預取內容的處理不當,會增加CPU緩存失誤,增加CPU對內存的訪問次數,損害性能。
【發明內容】
[0005]本發明的目的在于克服目前CPU預取時,CPU緩存中現有的有用數據會被預取的內容替換掉,從而會增加緩存失誤、降低性能的缺陷,提供一種能有效解決上述缺陷的一種計算機緩存系統的管理方法。
[0006]本發明通過以下技術方案實現:一種計算機緩存系統的管理方法,該緩存由多個緩存線構成,且每個緩存線包含多個數據字,同時每個緩存線按地址分成多個子集,每個子集對應一個或者多個數據字;每個子集設置一個或多個局部Sub-block標識位;當緩存查詢和填充等操作采用緩存線子集對應的地址的粒度時,根據緩存線子集對應的地址粒度記錄緩存線相應子集的狀態和歷史信息,并將信息保存在該子集對應的局部Sub-block標識位中。
[0007]進一步地,每個緩存線子集設置一個局部使用Sub-block Used標識位;整個緩存線設置一個或多個全局標識位,其管理步驟如下:
[0008]當緩存線第一次裝入緩存時,除了正在訪問的地址所對應的子集的局部使用Sub-block Used標識位置1,其他子集的局部使用Sub-block Used標識位置O ;
[0009]當緩存線在緩存中命中時,如果命中的地址所對應的子集的局部使用Sub-blockUsed標識位為0,則置I ;如果命中的地址所對應的子集的局部使用Sub-block Used標識位已經為1,則改變全局標識位。
[0010]為確保使用效果,每個緩存線中都有一個全局命中Global Hit標識位,其管理步驟如下:
[0011]當緩存線第一次裝入緩存時,全局命中Global Hit標識位置為0,除了正在訪問的地址所對應的子集的局部使用Sub-block Used標識位置1,其他子集的局部使用Sub-block Used 標識位置 O ;
[0012]當緩存線在緩存中命中時,如果命中的地址所對應的子集的局部使用Sub-blockUsed標識位為0,則置I ;如果命中的地址所對應的子集的局部使用Sub-block Used標識位已經為1,則置全局命中Global Hit標識位為I ;
[0013]替換時,首先替換全局命中Global Hit標識位為O的緩存線,后替換全局命中Global Hit標識位為I的緩存線。
[0014]本發明較現有技術相比,具有以下優點及有益效果:
[0015](I)本發明能確保CPU系統具有效地進行指令和數據的預取,能在指令和數據被真實使用前,提前發出請求從內存或者其他存儲機構將指令和數據取回到CPU中,能顯著地降低平均訪問延遲,從而提高運算速度。
[0016](2)本發明CPU系統中預取的指令和數據既可以單獨存放于一塊緩存區,也可以與非預取的指令和數據存放于同樣的緩存中,使用范圍較廣。
[0017](3)本發明采用的緩存替換算法,能確保CPU系統運行的穩定性,最大程度地降低緩存失誤,最少次數地對內存進行訪問。
[0018](4)本發明還具有防止WLRU緩存替換算法的過殺傷功能,因此能確保本發明的使用效果。
【附圖說明】
[0019]圖1為本發明涉及的CPU內部結構示意圖。
[0020]圖2為本發明實施例1中的緩存線的存儲結構示意圖。
[0021]圖3為本發明實施例1中緩存線發生替換時選擇被替換緩存線的流程圖。
[0022]圖4A和圖4B為本發明實施例2中的緩存線的存儲結構示意圖。
[0023]圖5A和圖5B為本發明實施例2中緩存線發生替換時選擇被替換緩存線的流程圖。
[0024]圖6為本發明實施例3中的緩存線的存儲結構示意圖。
[0025]圖7為本發明實施例3中緩存線發生替換時選擇被替換緩存線的流程圖。
[0026]圖8為本發明涉及的預取的指令和數據所在緩存線在填入緩存中的過程的一種流程圖。
[0027]圖9A為本發明預取內存訪問命令在內存控制器中的第一種調度方法。
[0028]圖9B為本發明預取內存訪問命令在內存控制器中的第二種調度方法。
[0029]圖10為本發明涉及的緩存管理方法處理“預取命中prefetch hit”的過程的一種流程圖。
[0030]圖1lA和圖1lB為本發明的一種防止“假命中”現象的緩存管理方法的緩存線存儲設計。
[0031]圖12為本發明的一種防止WLRU替換算法“過殺傷”的設計。
[0032]圖13為本發明的另一種防止WLRU替換算法“過殺傷”的設計。
【具體實施方式】
[0033]下面結合具體的實施例對本發明進行闡述,但本發明的實施方式不限于此。
[0034]實施例1
[0035]如圖1?3所示,本發明CPU系統中的CPU獨立芯片100內部集成有CPU核心110、二級緩存130、內存訪問控制器MMU 140及四個內存通道。CPU核心110中內置有CPU執行機構116、第一級指令緩存112 (即Ll-1 Cache)和第一級數據緩存114 (即Ll-D Cache)。二級緩存130直接與CPU核心110進行數據交換,而所述的四個內存通道(即內存通道一152、內存通道二 154、內存通道三156和內存通道四158)則與內存訪問控制器MMU 140相連接,以接受其管理指令。
[0036]內存訪問控制器MMU 140與CPU核心110的指令和數據的填充機構交換數據。圖1中的CPU獨立芯片100的第一緩存采用的是指令和數據分開的存儲的結構:指令存放于第一級指令緩存112中,數據存放于第一級數據緩存114中。CPU緩存是位于和CPU核心110同一塊芯片上的存儲區,且CPU緩存的讀寫延遲要明顯小于位于CPU獨立芯片100外部的內存,即圖1中所設計的四個分別獨立與四個內存通道相連接的內存模塊120、內存模塊122、內存模塊124和內存模塊126。目前,CPU緩存通常用高速讀寫電路,比如SRAM制造,而內存由DRAM電路制造。
[0037]圖2描述了一種緩存線的存儲結構示意圖,該緩存線有TAG存儲區260,Data存儲區270,和5個標識位。所述的5個標識位為:V標識位210,H標識位220,A標識位230,D標識位240和P標識位250。其中,V標識位210代表緩存線為合法有效(Valid) ;H標識位220表示緩存線被命中(Hit)過,在緩存線最初裝入時,H標識位220被設置為零,若緩存線命中,則置為I ;A標識位230標識該緩存線已經被替換算法分配(Allocated) ;D標識位240表示該緩存線的內容曾經被改動過(Dirty),在被替換出緩存后,需要將改變后的內容寫入內存;P標識位250代表Prefetch,如果該標識位被設置為1,表示該緩存線存儲的是預取的內容。
[0038]對于非預取的指令和數據,當其填入CPU緩存中時,相應緩存線的P標識位250將被設置為零,以示和存儲預取的內容的緩存線的區別。P標識位250為I的緩存線在命中后,