本發(fā)明涉及單芯片多處理器(CMP),更具體地涉及用于CMP的基于緩存未命中計(jì)數(shù)的目錄替換方法和系統(tǒng)。
背景技術(shù):
:基于偵聽的緩存一致性協(xié)議和基于目錄的緩存一致性協(xié)議是CMP中廣泛使用的兩種不同機(jī)制。在較多核心被集成在芯片上時(shí),基于目錄的緩存一致性因其較高的可擴(kuò)展性和較少的信息流量而被普遍使用。每個(gè)目錄條目保持跟蹤相應(yīng)的緩存塊的信息,比如緩存地址、狀態(tài)及全位向量(fullbitvector)以指明哪個(gè)核心擁有該特定的緩存行。然而,該目錄的存儲(chǔ)開銷是一個(gè)至關(guān)重要的問題。研究人員已經(jīng)提出了諸如粗向量、指針和稀疏目錄之類的技術(shù)方案來克服這個(gè)問題。由于不是所有的內(nèi)存塊都能同時(shí)被緩存,跟蹤已緩存的塊的稀疏目錄被廣泛使用。稀疏目錄的有限容量緩解了存儲(chǔ)壓力,但也帶來了另一個(gè)問題:目錄條目的驅(qū)逐(eviction)。由于目錄不跟蹤所有的內(nèi)存塊,所以當(dāng)一個(gè)新的查詢發(fā)送到目錄卻沒有目錄條目匹配該請(qǐng)求時(shí),已分配的一個(gè)條目將被驅(qū)逐以騰出空間給該新條目。目錄條目的驅(qū)逐將導(dǎo)致CPU端上相應(yīng)的緩存塊失效。因此,目錄替換策略對(duì)于整個(gè)系統(tǒng)的性能而言很關(guān)鍵。LRU(最近最少使用)是一種常用的目錄替換策略。在LRU中,每個(gè)目錄具有LRU計(jì)數(shù)器。每當(dāng)訪問一個(gè)目錄條目時(shí),基于該策略,每個(gè)條目的LRU計(jì)數(shù)器會(huì)增加或減少。無論何時(shí)發(fā)生驅(qū)逐,都會(huì)選擇驅(qū)逐LRU條目。但是,這種策略有一個(gè)問題:該目錄的LRU不能代表緩存行的熱度。以“MESI”緩存一致性協(xié)議為例。緩存塊具有經(jīng) 修改(M)狀態(tài)、獨(dú)享(E)狀態(tài)、共享(S)狀態(tài)和無效(I)狀態(tài),而目錄條目具有EM狀態(tài)(緩存行處于E狀態(tài)或M狀態(tài))、S狀態(tài)(緩存行處于S狀態(tài))和U狀態(tài)(該塊未被緩存或緩存在無效狀態(tài)下)。讀命中緩存行不會(huì)通知目錄。因此,從CPU端頻繁地讀取一個(gè)緩存行而相應(yīng)的目錄條目在長(zhǎng)時(shí)間內(nèi)未被訪問使其成為L(zhǎng)RU條目并被驅(qū)逐是可能的。由于緩存的一致性,“熱門”的緩存行會(huì)被返回?zé)o效。另一種目錄替換策略是選擇具有最小負(fù)面影響的條目。這種策略將避免驅(qū)逐處于共享狀態(tài)的目錄條目,因?yàn)闀?huì)有多個(gè)CPU使相應(yīng)的緩存行無效。但它也有沉默驅(qū)逐的問題,這意味著共享緩存行會(huì)在沒有通知目錄的情況下被驅(qū)逐。當(dāng)相應(yīng)的緩存行被沉默驅(qū)逐時(shí),目錄條目就浪費(fèi)了。技術(shù)實(shí)現(xiàn)要素:為了減輕上述問題,本發(fā)明的各個(gè)方面提供了用于基于目錄的緩存一致性的目錄替換方法和系統(tǒng)。在實(shí)現(xiàn)本發(fā)明一個(gè)方面的示例實(shí)施方式中,一種用于基于目錄的緩存一致性的目錄替換方法被提供,其特征在于,所述方法包括:跟蹤從一或多個(gè)核心到多個(gè)緩存集的緩存未命中計(jì)數(shù);將所述多個(gè)緩存集中的每一個(gè)緩存集的緩存未命中計(jì)數(shù)值存儲(chǔ)在目錄中;基于所述緩存未命中計(jì)數(shù)值計(jì)算與所述目錄中的每個(gè)條目相關(guān)聯(lián)的分值;以及選擇具有最高分值的條目進(jìn)行驅(qū)逐。在一方面,計(jì)算分值可包括作為地址、全位向量和緩存集的未命中計(jì)數(shù)值的函數(shù)來計(jì)算與目錄中的每個(gè)條目相關(guān)聯(lián)的分值。在一方面,計(jì)算與目錄中的每個(gè)條目相關(guān)聯(lián)的分值可包括為目錄中的至少一個(gè)緩存提供緩存未命中計(jì)數(shù)跟蹤表,所述表具有n列、c/(a*b)行,其中n是核心的數(shù)量,c是緩存的大小,a是結(jié)合性,而b是塊大小,使得該表的每個(gè)元素可提供在觀察時(shí)距中在特定核心中的特定集的未命中計(jì)數(shù)。在一方面,所述目錄的每個(gè)條目通過地址的索引位映射到緩存未命中跟蹤表的一行,且其中與緩存目錄中的每個(gè)條目相關(guān)聯(lián)的分值通過下式來計(jì)算:分值=向量[0]*元素[0]+向量[1]*元素[1]+……向量[n]*元素[n]其中,向量[n]是指一個(gè)目錄條目中的全位向量的第n位,其可以是1或0,而元素[n]是指緩存未命中計(jì)數(shù)跟蹤表中的相應(yīng)行中的第n個(gè)元素。在實(shí)現(xiàn)本發(fā)明一個(gè)方面的實(shí)施方式中,一種用于基于目錄的緩存一致性的目錄替換系統(tǒng)被提供,其特征在于,所述系統(tǒng)包括用于跟蹤從一或多個(gè)核心到多個(gè)緩存集的緩存未命中計(jì)數(shù)的跟蹤模塊、用于將多個(gè)緩存集中的每一個(gè)緩存集的緩存未命中計(jì)數(shù)值存儲(chǔ)在目錄中的存儲(chǔ)模塊、用于基于緩存未命中計(jì)數(shù)值計(jì)算與該目錄中的每個(gè)條目相關(guān)聯(lián)的分值的計(jì)算模塊以及用于選擇具有最高分值的條目進(jìn)行驅(qū)逐的條目驅(qū)逐模塊。在一方面,目錄替換系統(tǒng)可包括用于作為地址、全位向量和緩存集的未命中計(jì)數(shù)值的函數(shù)來計(jì)算與目錄中的每個(gè)條目相關(guān)聯(lián)的分值的計(jì)算模塊。在一方面,用于計(jì)算與目錄中的每個(gè)條目相關(guān)聯(lián)的分值的計(jì)算模塊可包括為目錄中的至少一個(gè)緩存提供緩存未命中計(jì)數(shù)跟蹤表的計(jì)算模塊,所述表具有n列、c/(a*b)行,其中n是核心的數(shù)量,c是緩存的大小,a是結(jié)合性,而b是塊大小,使得該表的每個(gè)元素可提供在觀察時(shí)距中在特定核心中的特定集的未命中計(jì)數(shù)。本文下面將描述其他方面和實(shí)施方式。附圖說明本發(fā)明在附圖中通過示例的方式而非通過限制的方式進(jìn)行說明,其中類同的附圖標(biāo)記指代類同的元素,且其中:圖1描繪了圖示根據(jù)示例實(shí)施方式的目錄替換方法的流程圖;圖2描繪了圖示根據(jù)示例實(shí)施方式的目錄替換方法的流程圖;圖3描繪了圖示根據(jù)示例實(shí)施方式的目錄替換方法的流程圖;圖4描繪了圖示根據(jù)示例實(shí)施方式的目錄替換系統(tǒng)的示意圖。具體實(shí)施方式現(xiàn)在將詳細(xì)描述本發(fā)明。在接下來的描述中,許多具體細(xì)節(jié)被闡述以提供對(duì)本發(fā)明的透徹理解。然而,對(duì)本領(lǐng)域技術(shù)人員而言,顯而易見的是,本發(fā)明可在沒有這些具體細(xì)節(jié)中的一些或全部的情況下被實(shí)施。另一方面,公知的工藝步驟和/或結(jié)構(gòu)沒有被詳細(xì)描述以免不必要地模糊本發(fā)明。圖1描繪了用于基于目錄的緩存一致性的目錄替換方法的示例實(shí)施方式的流程圖。該方法包括以下步驟。如圖1所示,在步驟110中,在觀察時(shí)距(observationinterval)中跟蹤從一或多個(gè)核心到多個(gè)緩存集的緩存未命中計(jì)數(shù)。在步驟120中,將該多個(gè)緩存集中的每一個(gè)緩存集的緩存未命中計(jì)數(shù)值存儲(chǔ)在目錄中。當(dāng)需要一個(gè)驅(qū)逐目錄條目時(shí),相應(yīng)的緩存行會(huì)因緩存一致性而無效。希望的是選擇其相應(yīng)緩存行在緩存中最少被需要的目錄條目。換言之,如果緩存行被驅(qū)逐或無效可能性高,則相應(yīng)的目錄條目應(yīng)當(dāng)被選擇來驅(qū)逐。在一個(gè)觀察時(shí)距中,一個(gè)緩存集的未命中計(jì)數(shù)可以意味著該集中的緩存行被驅(qū)逐的可能性。就這點(diǎn)而言,傳統(tǒng)的目錄條目通常包含諸如地址、狀態(tài)和全位向量等信息。在本發(fā)明中,在步驟130中,分值與每個(gè)條目相關(guān)聯(lián)且該分值可被用來做出有關(guān)驅(qū)逐的決定。該分值可通過函數(shù)計(jì)算,該函數(shù)的參數(shù)是地址、全位向量和特定集的未命中計(jì)數(shù)。分值=f(地址,向量,一個(gè)集的未命中計(jì)數(shù))在優(yōu)選實(shí)施方式中,目錄可包括用于跟蹤和存儲(chǔ)每個(gè)緩存集的緩存未命中計(jì)數(shù)的未命中計(jì)數(shù)跟蹤表。假設(shè)在系統(tǒng)中有n個(gè)核心,并且末級(jí)緩存的大小為c,結(jié)合性(associativity)為a且塊大小為b。則每個(gè)末級(jí)緩存具有c/(a*b)個(gè)緩存集。跟蹤表可具有c/(a*b)行、n列。該表中的每個(gè)元素表示在觀察時(shí)距中與該緩存集對(duì)應(yīng)的核心的緩存未命中計(jì)數(shù)值。當(dāng)緩存未命中發(fā)生在CPU端時(shí),會(huì)向目錄發(fā)送查詢。在此過程中,該表可在無需額外信息流量的情況下被更新。未命中計(jì)數(shù)值越大,相應(yīng)緩存集的驅(qū)逐可能性越大。每個(gè)目錄條目可通過地址的索引位映射到該表中的一行。例如,如果地址的索引位為0,則該目錄條目將映射到該表中的第0行。一旦我們使用地址找到表中的特定行,我們就可以使用方程式A計(jì)算分值,如下所示:方程式A:分值=向量[0]*元素[0]+向量[1]*元素[1]+……向量[n]*元素[n]在上述方程式A中,向量[n]是指一個(gè)目錄條目中的全位向量的第n位,其可以是1或0。元素[n]是指未命中計(jì)數(shù)表中的相應(yīng)行中的第n個(gè)元素。例如,表1示出了具有分值的目錄的示意性說明,而表2則闡釋了未命中計(jì)數(shù)跟蹤表,其中CMP具有16個(gè)核心且每個(gè)核心具有一個(gè)私有的256KB末級(jí)緩存,緩存行大小會(huì)是64B且結(jié)合性會(huì)是8。如表1和表2所示,具有地址0x00000000的地址索引位為0的目錄條目會(huì)映射到未命中計(jì)數(shù)跟蹤表中的第0行。具有地址0x00000040的地址索引位為1的目錄條目會(huì)映射到未命中計(jì)數(shù)跟蹤表中的第1行。上述方程式A可被用來計(jì)算與每個(gè)條目相關(guān)聯(lián)的分值,即具有全位向量0101010101010101和相應(yīng)未命中計(jì)數(shù)跟蹤行0312000520001100的地址0x00000000會(huì)具有分值11。類似地,具有全位向量0000100000000000和相應(yīng)未命中計(jì)數(shù)跟蹤行4602110214011001的地址0x00000040會(huì)具有分值1。如果需要從上述兩個(gè)條目中選 擇一個(gè)條目進(jìn)行驅(qū)逐,則可選擇地址0x00000000,因?yàn)樗哂休^高的分值。Addr.0x00000000State:SVector:0101010101010101Score:11Addr.0x00000040State:EMVector:0000100000000000Score:1………………………………表1:具有分值的目錄表2:未命中計(jì)數(shù)跟蹤表在本發(fā)明中,選擇具有最高分值的條目進(jìn)行驅(qū)逐是簡(jiǎn)單的。但是,也可調(diào)整約束條件以配合不同工作負(fù)載的不同特點(diǎn)。在處理器的運(yùn)行過程中,可單獨(dú)地或組合式地調(diào)整若干事項(xiàng)。在一方面,可基于具有不同特征的不同程序調(diào)整觀察時(shí)距。在一方面,如圖2所示,LRU策略可與本文所描述的替換策略結(jié)合起來以確定驅(qū)逐。例如,如果多于一個(gè)條目具有相同的最高分值,則可基于LRU策略選擇要驅(qū)逐的條目。在一方面,約束條件可被調(diào)整使得在預(yù)定情況下最高分值的條目不被選擇來進(jìn)行驅(qū)逐。例如,如果具有最高分值的條目處于共享狀態(tài),則該條目可與處于共享狀態(tài)的其他條目進(jìn)行比較并選擇具有最大可能性被沉默驅(qū)逐的條目進(jìn)行驅(qū)逐。例如,如圖3所示,會(huì)需要從條目A和條目B選擇一個(gè)目錄條目進(jìn)行驅(qū)逐,其中條目A和條目B均處于共享狀態(tài),具有兩個(gè)共享者。具有全位向量0000000000000011和相應(yīng)未命中計(jì)數(shù)表行1011100100000069的條目A具有分值15。具有全位向量1111111111111111和相應(yīng)未命中計(jì)數(shù)表行3333333333333333的條目B具有分值48。因此,條目B具有較高的分值。但是,在選擇條目B進(jìn)行驅(qū)逐之前,可將條目A與條目B進(jìn)行比較,盡管條目A具有較低的分值,但條目A仍可被選擇來進(jìn)行驅(qū)逐,因?yàn)闂l目A只有兩個(gè)共享者但9個(gè)未命中計(jì)數(shù)發(fā)生于包含一個(gè)共享者的緩存集。該緩存行具有被沉默驅(qū)逐的高度可能性。因此,相應(yīng)的條目A沒有必要保留。在實(shí)施方式中,如圖4所示,本發(fā)明提供了用于基于目錄的緩存一致性的目錄替換系統(tǒng)400,其特征在于,所述系統(tǒng)包括用于跟蹤從一或多個(gè)核心到多個(gè)緩存集的緩存未命中計(jì)數(shù)的跟蹤模塊、用于將多個(gè)緩存集中的每一個(gè)緩存集的緩存未命中計(jì)數(shù)值存儲(chǔ)在目錄中的存儲(chǔ)模塊、用于基于所述緩存未命中計(jì)數(shù)值計(jì)算與該目錄中的每個(gè)條目相關(guān)聯(lián)的分值的計(jì)算模塊以及用于選擇具有最高分值的條目進(jìn)行驅(qū)逐的條目驅(qū)逐模塊。在一方面,所述目錄替換系統(tǒng)可包括用于作為地址、全位向量和緩存集的未命中計(jì)數(shù)值的函數(shù)來計(jì)算與目錄中的每個(gè)條目相關(guān)聯(lián)的分值的計(jì)算模塊。在一方面,用于計(jì)算與目錄中的每個(gè)條目相關(guān)聯(lián)的分值的計(jì)算模塊可包括為目錄中的至少一個(gè)緩存提供緩存未命中計(jì)數(shù)跟蹤表的計(jì)算模塊,所述表具有n列、c/(a*b)行,其中n是核心的數(shù)量,c是緩存的大小,a是結(jié)合性,而b是塊大小,使得該表的每個(gè)元素可提供在觀察時(shí)距中在特定核心中的特定集的未命中計(jì)數(shù)。在一方面,所述目錄的每個(gè)條目通過地址的索引位映射到緩存未命中跟蹤表的一行,且與緩存目錄中的每個(gè)條目相關(guān)聯(lián)的分值通過下式來計(jì)算:分值=向量[0]*元素[0]+向量[1]*元素[1]+……向量[n]*元素[n]其中,向量[n]是指一個(gè)目錄條目中的全位向量的第n位,其可以是1或0,而元素[n]是指緩存未命中計(jì)數(shù)跟蹤表中的相應(yīng)行中的第n個(gè)元素。在一方面,當(dāng)緩存未命中發(fā)生時(shí),所述緩存未命中跟蹤表中的相應(yīng)元素的值可通過所述跟蹤模塊進(jìn)行更新。在一方面,目錄驅(qū)逐模塊可被配置來確定是否多于一個(gè)條目具有最高分值,如果多于一個(gè)條目具有最高分值,則基于最近最少使用策略選擇要驅(qū)逐的條目。在一方面,條目驅(qū)逐模塊可被配置來確定具有最高分值的條目是否處于共享狀態(tài),如果具有最高分值的條目處于共享狀態(tài),則在選擇具有最高分值的條目進(jìn)行驅(qū)逐之前,比較該條目與處于共享狀態(tài)的其他條目,并選擇具有最大可能性被沉默驅(qū)逐的條目進(jìn)行驅(qū)逐??梢岳斫?,本發(fā)明具有高驅(qū)逐效率,可有效地驅(qū)逐最少被需要的目錄條目,且可避免誤驅(qū)逐系統(tǒng)所需的目錄條目。對(duì)本領(lǐng)域技術(shù)人員而言,顯而易見的是,上述實(shí)施方式僅僅是說明性的且不應(yīng)被視為對(duì)本發(fā)明的限制,并且在不偏離所要求保護(hù)的主題的范圍的情況下可對(duì)本文所描述的實(shí)施方式做出各種修改和變化。因此,本說明書旨在涵蓋本文所描述的各種實(shí)施方式的修改例和變化例,只要這種修改例和變化例在所附權(quán)利要求及其等同例的范圍內(nèi)。當(dāng)前第1頁1 2 3