專利名稱::高速緩存代換算法的制作方法
技術領域:
:本發(fā)明是關于一種高速緩存(cache),且特別是有關于一種高速緩存之代換算法(cachereplacementalgorithm)。
背景技術:
:高速緩存是一種使用于儲存媒體,以增進其存取速率之小型快速內存。由于其存取速率較儲存媒體所使用之主存儲器為快,因此當處理器欲由儲存媒體中存取如地址、指令及資料等時,如可由高速緩存中存取,其速率將較由主存儲器中直接存取為快而有效率,故高速緩存通??梢暈橹鞔鎯ζ髦彌_存儲器。然而,由于成本考量,高速緩存之容量并不可能無限量擴充,以4兆字節(jié)(4TBytes)之便宜磁盤冗余數組(RedundancyArrayofInexpensiveDisk,簡稱RAID)為例,其使用之高速緩存通常不過是512MBytes,甚至更低。顯見其可儲存之資料,相較于主存儲器而言極為有限,因此當處理器欲存取資料時,便可能會有快取區(qū)符合(cachehit)或快取區(qū)不符合(cachemiss)之情形發(fā)生。所謂快取區(qū)符合,意即處理器欲存取之資料儲存于高速緩存中,故可直接由高速緩存中存取數據。反之,則為快取區(qū)不符合,必須依據高速緩存之代換算法,將儲存于主存儲器中之資料移入高速緩存中,以供處理器存取。因此,其代換算法之良宥,便成為影響儲存媒體存取效能之重要因素。傳統(tǒng)高速緩存代換算法通常分為時域(Temporallocality)及場域(Spatiallocality)的代換算法。時域的代換算法是以存取快取區(qū)之時間因素,作為選擇代換快取區(qū)之考量,而場域的代換算法則以存取快取區(qū)之空間因素,作為選擇代換快取區(qū)之考量。常用之時域代換算法有最近未使用(LeastRecentlyUsed,簡稱LRU)算法及最不常使用(LeastFrequentlyUsed,簡稱LFU)算法。LRU考慮最近長時間未存取之快取區(qū),也是最不可能再一次存取之快取區(qū),因而選擇最近長時間未存取之快取區(qū)予以代換。LFU則考慮存取次數最少之快取區(qū),也是最不可能再一次存取之快取區(qū),因而選擇存取次數最少之快取區(qū)予以代換。故知,無論使用LRU或LFU算法作為高速緩存代換算法,均不能同時兼顧其存取時間與存取次數之因素,導致無法將資料存取之快取區(qū)符合率(hitrate)再予提升。有鑒于此,本發(fā)明提供一種高速緩存代換算法,其可于快取區(qū)不符合時,同時考慮存取時間與存取次數之因素,以提升高速緩存資料存取之快取區(qū)符合率,增進資料存取效能。為達上述及其它目的,本發(fā)明提供一種高速緩存代換算法,適用于具有多個快取線(cacheline)之高速緩存,每一快取線具有多個快取區(qū)(way’scache),高速緩存之雜湊表則包括對應于每一快取區(qū)之多個加權計數器及一時間計數器,此高速緩存代換算法包括下列步驟首先隨著時間來遞增時間計數器;當快取區(qū)符合時,將時間計數器之值,加總于對應快取區(qū)符合之快取區(qū)的加權計數器之中;以及當快取區(qū)不符合時,選擇代換欲存取之快取線中具有最小之加權計數器值的快取區(qū),并重置該加權計數器之值。其中遞增時間計數器之方法可為每隔一固定時間遞增一固定值,或當每次存取高速緩存時遞增一固定值。而當快取區(qū)不符合時,可選擇將快取區(qū)之加權計數器值重置為當時之時間計數器之值。此外,當時間計數器之值將溢位時,可將時間計數器及所有加權計數器右移一固定位數,以有效維持時間計數器及所有加權計數器間之存取時間與存取次數的相關代表性。其中右移之固定位數可為時間計數器及加權計數器之位數的一半。而當某一加權計數器之值將溢位時,可將此一加權計數器所屬之快取線的所有加權計數器右移一固定位數,以有效維持加權計數器間之存取時間與存取次數的相關代表性。其中右移之固定位數可為加權計數器之位數的一半。
發(fā)明內容本發(fā)明另提供一種高速緩存代換算法,適用于具有多個快取線之高速緩存,每一快取線具有多個快取區(qū),高速緩存之雜湊表則包括對應于每一快取線之多個時間計數器及對應于每一快取區(qū)之多個加權計數器,此高速緩存代換算法包括下列步驟首先在每一次存取快取線時,遞增對應于被存取之快取線的時間計數器;當快取區(qū)符合時,將對應于快取區(qū)符合之快取線的時間計數器之值,加總于對應快取區(qū)符合之快取區(qū)的加權計數器之中;以及當快取區(qū)不符合時,選擇代換欲存取之快取線中具有最小之加權計數器值的快取區(qū),并重置該加權計數器之值。其中當快取區(qū)不符合時,可選擇將加權計數器之值重置為快取區(qū)所屬之快取線的時間計數器之值。而當某一時間計數器之值將溢位時,可將此一時間計數器及其所屬之快取線的所有加權計數器右移一固定位數,以有效維持時間計數器及加權計數器間之存取時間與存取次數的相關代表性。其中右移之固定位數為時間計數器及其所屬之快取線的加權計數器之位數的一半。此外,當某一加權計數器之值將溢位時,可將加權計數器所屬之快取線的所有加權計數器右移一固定位數,以有效維持加權計數器間之存取時間與存取次數的相關代表性。其中右移之固定位數為加權計數器之位數的一半。由上述之說明中可知,應用本發(fā)明之高速緩存代換算法于高速緩存中,則當發(fā)生快取區(qū)不符合之情形時,可同時考慮存取時間與存取次數之因素,來代換最不可能再次存取之快取區(qū),故可有效提升高速緩存數據存取之快取區(qū)符合率,增進資料存取效能。為讓本發(fā)明之上述和其它目的、特征、和優(yōu)點能更明顯易懂,下文特以較佳實施例,并配合附圖,作詳細說明如下圖1顯示根據本發(fā)明較佳實施例之RAID結構示意圖;以及圖2顯示根據本發(fā)明較佳實施例之一種高速緩存代換算法流程圖;圖3列出同一快取線的時間計數器與7個存取路徑之加權計數器之值。具體實施例方式以下將以使用于便宜磁盤冗余數組(RedundancyArrayofInexpensiveDisk,簡稱RAID)之高速緩存為例,來詳細說明本發(fā)明之高速緩存代換算法。當然,如熟習此技術者應知,實施例中之代表內存容量或字段寬之數字等,只是為了說明時容易了解,而非必須如此限定。實際之應用當視系統(tǒng)之需求而定,且本發(fā)明亦并不限定僅可使用于RAID系統(tǒng)中。請參考圖1所示,其為根據本發(fā)明較佳實施例之RAID結構示意圖。圖中顯示,此RAID100由101~116等共16個獨立之硬式磁盤驅動器所組成,每一個硬式磁盤驅動器101~116共分為64K頁(page),每一頁再區(qū)分為4K條快取線(cacheline),每條快取線包含8個區(qū)塊(block),每區(qū)塊之容量為2K字節(jié),因此,硬式磁盤驅動器101~116中每頁之容量為64M字節(jié)。此外,此RAID100中之高速緩存120共有121~127等7個存取路徑(way),每一存取路徑121~127之容量與硬式磁盤驅動器101~116中每頁之容量相同,亦即容量為64M字節(jié)。且每一存取路徑121~127具有4K個快取區(qū)(way’scache),以儲存硬式磁盤驅動器101~116中每頁之對應快取線的8個區(qū)塊數據,亦即,高速緩存120之每一快取線包含7個存取路徑121~127之7個快取區(qū),而此7個快取區(qū)則可以用來儲存硬式磁盤驅動器101~116中共1M頁之任一頁的同一快取線資料。因此,當處理器(未繪示)欲存取之數據為已儲存于高速緩存120之對應快取線的7個快取區(qū)中之一時,為可直接由快取區(qū)存取資料之快取區(qū)符合(cachehit)情況。反之,當處理器(未繪示)欲存取之數據并未儲存于高速緩存120之對應快取線的7個快取區(qū)中之一時,則為快取區(qū)不符合(cachemiss)之情況,此時即需應用高速緩存代換算法,來選擇將最不可能再次存取之快取區(qū)的資料,代換為欲存取之資料,以供快速存取。上述判斷快取區(qū)符合或快取區(qū)不符合之方法,經由查詢雜湊表(hashtable)130之記錄而得。雜湊表130具有與高速緩存120之快取線一對一對應之4K個記錄(entry),而每一記錄則包含W1~W7字段及一32位之時間計數器TimeCounter。W1~W7字段對應記錄高速緩存120之快取線的7個快取區(qū)所儲存之資料,來自101~116中哪一個硬式磁盤驅動器的哪一頁,其包含記錄101~116之硬式磁盤驅動器號碼的LUN字段、記錄頁碼之PAGE字段及一32位之加權計數器WeightCounter。其中之時間計數器之值會隨著時間而遞增,以維持一大小與時間相關之值,其遞增方法可為每隔一固定時間遞增一固定值,或當每次存取高速緩存之對應快取線時遞增一固定值。而加權計數器之值的大小,則與對應快取區(qū)之存取時間和存取次數相關連。請合并參考圖2所示,其為根據本發(fā)明較佳實施例之一種高速緩存代換算法流程圖。當處理器(未繪示)欲存取硬式磁盤驅動器101~116中之資料時,將在S205步驟中,依據其所擁有之硬式磁盤驅動器號碼、頁碼及快取線號碼來查詢雜湊表130,并在S210步驟中,將欲存取之快取線的時間計數器值加1,然后在S215步驟中,搜尋欲存取之快取線中各存取路徑的LUN與PAGE字段是否與其所擁有之硬式磁盤驅動器號碼和頁碼相符,以判斷是否為快取區(qū)符合之情形,如為快取區(qū)符合,則在S220步驟中,求取欲存取之快取線的時間計數器之值與對應快取區(qū)符合之快取區(qū)的加權計數器值之和,成為此一加權計數器之更新值。反之,如為快取區(qū)不符合時,則進入S225之步驟,以選擇代換與存取之快取線中具有最小之加權計數器r值的快取區(qū),并重置加權計數器之值。請參考圖3及其說明,以進一步了解本實施例之實際運作情形。此表以每次均存取圖1中之同一快取線為例,故僅列出同一快取線的時間計數器與7個存取路徑之加權計數器之值。如圖3所示,在啟始時,所有計數器之值均為0。在第1次存取時,時間計數器之值遞增為1,且因所有存取路徑之快取區(qū)均未儲存資料,故必然為儲存區(qū)不符合之情形,于是選擇具有最小之加權計數器值0之路徑1的快取區(qū)來代換,并將路徑1之加權計數器值0重置為時間計數器之值1。在第2次存取時,時間計數器之值遞增為2,假設欲存取之資料為存取路徑1之快取區(qū)所儲存之資料,則為儲存區(qū)符合之情形,于是將路徑1之加權計數器值1加上時間計數器之值2而成為新值3。在第3次存取時,時間計數器之值遞增為3,假設欲存取之資料亦為存取路徑1之快取區(qū)所儲存之資料,則同樣為儲存區(qū)符合之情形,于是將路徑1之加權計數器值3加上時間計數器之值3而成為新值6。在第4次存取時,時間計數器之值遞增為4,假設欲存取之資料并未儲存于各存取路徑之快取區(qū)中,則為儲存區(qū)不符合之情形,于是選擇具有最小之加權計數器值0之路徑2的快取區(qū)來代換,并將路徑2之加權計數器值0重置為時間計數器之值4。在第5次存取時,時間計數器之值遞增為5,假設欲存取之資料并未儲存于各存取路徑之快取區(qū)中,則為儲存區(qū)不符合之情形,于是選擇具有最小之加權計數器值0之路徑3的快取區(qū)來代換,并將路徑3之加權計數器值0重置為時間計數器之值5。在第6次存取時,時間計數器之值遞增為6,假設欲存取之資料并未儲存于各存取路徑之快取區(qū)中,則為儲存區(qū)不符合之情形,于是選擇具有最小之加權計數器值0之路徑4的快取區(qū)來代換,并將路徑4之加權計數器值0重置為時間計數器之值6。在第7次存取時,時間計數器之值遞增為7,假設欲存取之資料并未儲存于各存取路徑之快取區(qū)中,則為儲存區(qū)不符合之情形,于是選擇具有最小之加權計數器值0之路徑5的快取區(qū)來代換,并將路徑5之加權計數器值0重置為時間計數器之值7。在第8次存取時,時間計數器之值遞增為8,假設欲存取之資料并未儲存于各存取路徑之快取區(qū)中,則為儲存區(qū)不符合之情形,于是選擇具有最小之加權計數器值0之路徑6的快取區(qū)來代換,并將路徑6之加權計數器值0重置為時間計數器之值8。在第9次存取時,時間計數器之值遞增為9,假設欲存取之資料并未儲存于各存取路徑之快取區(qū)中,則為儲存區(qū)不符合之情形,于是選擇具有最小之加權計數器值0之路徑7的快取區(qū)來代換,并將路徑7之加權計數器值0重置為時間計數器之值9。在第10次存取時,時間計數器之值遞增為10,假設欲存取之資料并未儲存于各存取路徑之快取區(qū)中,則為儲存區(qū)不符合之情形,于是選擇具有最小之加權計數器值4之路徑2的快取區(qū)來代換,并將路徑2之加權計數器值4重置為時間計數器之值10。在第11次存取時,時間計數器之值遞增為11,假設欲存取之資料為存取路徑3之快取區(qū)所儲存之資料,則為儲存區(qū)符合之情形,于是將路徑3之加權計數器值5加上時間計數器之值11而成為新值16。依此方式類推,則可同時考量存取時間與存取次數之因素,來代換較不可能再次存取之快取區(qū),以有效提升高速緩存數據存取之快取區(qū)符合率,增進資料存取效能。其中如考慮時間計數器之位寬雖高達32位,但亦可能會有溢位之情形發(fā)生,而當此情形發(fā)生時,將喪失時間計數器之值所代表的時間持續(xù)性。故為了有效維持時間計數器及加權計數器間之存取時間與存取次數的相關代表性,乃在時間計數器即將溢位前,將此一時間計數器及其所屬之快取線的所有加權計數器右移一固定位數(假設左側為MSB位)。其中右移之固定位數較佳地為時間計數器及其所屬之快取線的加權計數器之位數的一半,亦即16位。此外,雖然加權計數器之位寬亦高達32位,但同樣也有溢位之可能。故當某一加權計數器之值將溢位時,乃將加權計數器所屬之快取線的所有加權計數器右移一固定位數(假設左側為MSB位),以有效維持加權計數器間之存取時間與存取次數的相關代表性。其中右移之固定位數較佳地為加權計數器之位數的一半,亦即16位。以上關于使用于RAID之高速緩存的說明,雖然使用對應于每一快取線之多個時間計數器來作說明,且每一時間計數器是于存取對應之快取線時遞增其值。然熟習此技術者應知,高速緩存之所有快取線共享一時間計數器,且當存取此高速緩存之任一快取線時遞增其值,亦為可行之另一方案。此外,時間計數器亦不必須于有存取時才遞增,而可以每隔一段固定時間即遞增,以維持其與時間之比例關系。雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明,任何熟悉此技術者,在不脫離本發(fā)明之精神和范圍內,當可作各種之更動與潤飾,因此本發(fā)明之權利保護范圍當視后附之權利要求書所界定者為準。權利要求1.一種高速緩存代換算法,適用于具有多個快取線之一高速緩存,每一該些快取線具有多個快取區(qū),該高速緩存之雜湊表包括對應于該些快取區(qū)之多個加權計數器及一時間計數器,其特征在于該高速緩存代換算法包括下列步驟隨著時間遞增該時間計數器;當快取區(qū)符合時,將該時間計數器之值,加總于對應快取區(qū)符合之該快取區(qū)的該加權計數器之中;以及當快取區(qū)不符合時,選擇代換欲存取之快取線中具有最小之該加權計數器值的該快取區(qū),并重置該加權計數器之值。2.如權利要求1所述之高速緩存代換算法,其特征在于遞增該時間計數器之方法為每隔一固定時間遞增一固定值。3.如權利要求1所述之高速緩存代換算法,其特征在于遞增該時間計數器之方法為每次存取該高速緩存時遞增一固定值。4.如權利要求1所述之高速緩存代換算法,其特征在于當快取區(qū)不符合時,將該快取區(qū)之該加權計數器值重置為該時間計數器之值。5.如權利要求1所述之高速緩存代換算法,其特征在于還包括當該時間計數器之值將溢位時,將該時間計數器及該些加權計數器右移一固定位數之步驟。6.如權利要求5所述之高速緩存代換算法,其特征在于該固定位數為該時間計數器及該些加權計數器之位數的一半。7.如權利要求1所述之高速緩存代換算法,其特征在于還包括當某一該些加權計數器之值將溢位時,將該加權計數器所屬之該快取線的該些加權計數器右移一固定位數之步驟。8.如權利要求7所述之高速緩存代換算法,其特征在于該固定位數為該些加權計數器之位數的一半。全文摘要一種高速緩存代換算法,應用一時間計數器來維持一與時間相關之值,且當每次存取高速緩存之快取區(qū)時,將時間計數器之值,加總于對應欲存取之快取區(qū)的加權計數器中。因此,參考加權計數器之值,來決定是否代換此一快取區(qū),將可同時兼顧存取時間與存取次數等因素,以提升高速緩存資料存取之快取區(qū)符合率,增進資料存取效能。文檔編號G06F12/08GK1622059SQ200310112258公開日2005年6月1日申請日期2003年11月24日優(yōu)先權日2003年11月24日發(fā)明者簡榮成,卓維強申請人:順德市順達電腦廠有限公司,神達電腦股份有限公司