TWI451330B - 快取記憶體系統以及快取資料取代之方法 - Google Patents
快取記憶體系統以及快取資料取代之方法 Download PDFInfo
- Publication number
- TWI451330B TWI451330B TW097132347A TW97132347A TWI451330B TW I451330 B TWI451330 B TW I451330B TW 097132347 A TW097132347 A TW 097132347A TW 97132347 A TW97132347 A TW 97132347A TW I451330 B TWI451330 B TW I451330B
- Authority
- TW
- Taiwan
- Prior art keywords
- storage location
- block storage
- count value
- appropriate
- cache memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
- G06F12/124—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list being minimized, e.g. non MRU
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
本發明所揭示係關於微處理器快取(cache),更詳言之,係關於快取資料取代機制。
由於電腦系統之主記憶體設計係以密度為主要考量而非速度,因此,微處理器設計者使他們的設計具有額外之快取,以減少該微處理器對直接存取主記憶體之需求。快取係一種具有較主記憶體更快之存取速度之小記憶體。快取傳統上係由快速之記憶體單元所構成,如:靜態隨機存取記憶體(SRAM),相較於使用作主記憶體之該記憶體(傳統上係動態隨機存取記憶體(DRAM)或同步動態隨機存取記憶體(SDRAM))具有較快之存取時間和頻寬。
先進之微處理器傳統上包含晶片上(on-chip)快取記憶體。於許多案例中,微處理器包含晶片上階層式(hierarchical)快取結構,階層式快取結構可能包含層次1 (L1)、層次2 (L2)和於某些案例中具有之層次3 (L3)快取記憶體。傳統快取階層可以使用小且快速之L1快取,該L1快取可用以儲存該最頻繁使用之快取線(cache line)。該L2快取可以係較大且可能較慢之快取,用以儲存被頻繁存取但不適合於L1之快取線。該L3快取可較該L2快取更大且被用以儲存被頻繁存取但不適合於L2之快取線。具有如上所述之快取階層可以藉由減少延遲(latency)來改善處理器效能,其中該延遲係關聯於記憶體
被處理器核心所存取。
於傳統快取設計中,任何給定之資料方塊(block of data)僅可被置放於一些小數目之實體位置之其中之一,稱作集合(一般稱作集合關聯快取(set associative cache))。每一個集合中之該最大方塊數係與該快取之關聯性(associativity)。一旦給定集合係被存滿(full),每一次新的資料必須被納入該集合時,則已存在之項目必須被該新的資料所溢寫(overwritten)或取代。某些形式之演算法必須被用以決定於取代之過程中那一個已存在之項目將被溢寫。取代演算中的一種形式係為該最近最少使用(least recently used, LRU)演算法。於該LRU演算法中,每一個集合中所有之項目之時間順序均被追蹤,並且如該名稱所暗示,該最近最少使用之項目係被取代。這個演算法於該關聯性很小的情況下可以運作得很好。對於較高之關聯性,持續追蹤該LRU位置係變得複雜且該排序資訊(ordering information)需要相當數量之儲存空間。
許多用於處理器快取記憶體系統之高關聯性快取記憶體之第二次機會取代機制之實施例係被揭露。於一個實施例中,該快取記憶體系統包含連接至方塊取代控制器之快取記憶體。該快取記憶體可包含複數個集合,每一個集合均包含複數個方塊儲存位置。該方塊取代控制器可以被組構以維護對應於該快取記憶體中每一個集合之個別計數值(separate count Value)。對應於給定集合之該計數值
指向該給定集合內儲存取代資料的合適之方塊儲存位置或方塊儲存位置群組(group)。該方塊取代控制器可針對該方塊儲存位置之至少一些中之每一個維護相關聯之最近存取位元,該最近存取位元係指示是否該對應之方塊儲存位置係最近被存取。此外,該方塊取代控制器可以根據是否對應於合適之方塊儲存位置之特定最近存取位元指示該合適之方塊儲存位置係最近被存取,而將該取代資料儲存於該合適之方塊儲存位置中被該個別計數值所指向之一者內。
於一個具體實現中,該方塊取代控制器可儲存該取代資料於被該個別計數值所指向之合適之方塊儲存位置內,以回應對應於該儲存位置之該特定最近存取位元,其中該特定最近存取位元指出該儲存位置係最近未被存取。
於另一個具體實現中,該方塊取代控制器可禁止儲存該取代信號於被該個別計數值所指向之合適之方塊儲存位置內,以回應對應於該合適之儲存位置之該特定最近存取位元,其中該特定最近存取位元指出該合適之方塊儲存位置係最近被存取。
現在轉到第1圖,電腦系統10之一個實施例之方塊圖係被圖示於第1圖。於該圖示之實施例中,該電腦系統10包含連接至記憶體14和周邊裝置13A-13B之處理節點12(processing node)。該節點12包含連接至節點控制器20之處理器核心15A-15B、複數個HyperTransportTM
(HT)介面電路24A-24C以及共享之層次3(sharedL3)快取記憶
體60,其中,該節點控制器20係進一步連接至記憶體控制器22。該HT電路24C係連接至該周邊裝置13A,該周邊裝置13A又以菊環式組構(daisy-chain configuration)連接至該周邊裝置13B,於本實施例中係使用HT介面。該剩下之HT電路24A-24B可經由其他HT介面(未顯示)而被連接至其他類似之處理節點(未顯示)。該記憶體控制器22係連接至該記憶體14。於一個實施例中,節點12可係單一個積體電路晶片(integrated circuit chip),該積體電路晶片包括顯示於第1圖中之該電路系統(circuitry)。也就是說,節點12可為晶片多重處理器(chip multiprocessor, CMP)。任何層次之整合的(integrated)或離散的(discrete)組件均可被使用。此處提到處理節點12可包含許多其他為了簡化而省略之電路。
於許多實施例中,節點控制器20也可包含許多種內,連接(interconnection)電路(未顯示),其中該內連接電路係用於將處理器核心15A和15B彼此內連接、內連接至其他節點、以及內連接至記憶體。節點控制器20也可包含選擇和控制許多節點特性之功能,如:該節點之該最大和最小操作頻率,以及例如該節點之最大和最小電源供應電壓。該節點控制器20一般可被組構以於該處理器核心15A-15B、該記憶體控制器22以及該HT電路24A-24C之間進行路由通訊(route communications),視該通訊形式和該通訊之位址…等而定。於一個實施例中,該節點控制器20可以包含系統要求儲列(system request queue, SRQ;
未顯示),其中該節點控制器20係將接收之通訊(received communications)寫入該系統要求儲列。該節點控制器20可排程來自該SRQ之通訊以路由該通訊至該處理核心15A-15B、該HT電路24A-24C以及該記憶體控制器22之間之一個目標或數個目標。
一般而言,該處理器核心15A-15B可利用通往該節點控制器20之該介面與該電腦系統10之其他組件(例如:周邊裝置13A-13B、其他處理器核心(未顯示)、該記憶體控制器22…等)通訊。該介面可被設計以任何想要之型態。於一些實施例中,快取一致通訊可對於該介面而被定義。於一個實施例中,於該節點控制器20和該處理器核心15A-15B之間的該介面上之通訊係為封包之形式,類似用於該HT介面上者。於其他實施例中,任何想要之通訊方式均可被使用(例如,匯流排介面上之交換(transaction),不同形式之封包…等)。於其他實施例中,該處理器核心15A-15B可共享通往該節點控制器20之介面(例如,共享之匯流排介面)。一般而言,來自於該處理器核心15A-15B之該通訊可包含要求(request),諸如:讀取操作(讀取記憶體位置或該處理器核心外部之暫存器)、寫入操作(寫入記憶體位置或外部之暫存器)、回應探測(response to probe)(對於快取一致實施例)、中斷確認(interrupt acknowledgement)以及系統管理訊息…等。
如以上所述,該記憶體14可包含任何適合之記憶體裝置。例如,該記憶體14可包括該動態隨機存取記憶體
(DRAM)家族(諸如:RAMBUS DRAM(RDRAM)、同步DRAM(synchronous DRAM,SDRAM)和雙倍資料傳送率SDRAM(double data rate SDRAM))中一個或多個隨機存取記憶體(RAM)。記憶體14可被稱作為電腦可讀取媒體(computer readable medium),其中該可讀取媒體可儲存程式指令(program instruction)。該記憶體控制器22可包括與該記憶體14介接之控制電路系統。此外,該記憶體控制器22可包含要求儲列,該要求儲列係用以排隊(queuing)記憶體要求…等。
該HT電路24A-24C可包括多種緩衝器(buffer)及用以自HT連結(HT link)接收封包和在HT連結上傳送封包之控制電路。該HT介面包括用以傳送封包之單向連結(unidirectional link)。每一個HT電路24A-24C均可被連接至兩個這樣的連結(一個用於傳送而一個用於接收)。給定之HT介面可以被操作於快取一致型態(cache coherent fashion)(例如,介於處理節點之間)或被操作於非一致型態(non-coherent fashion)(例如,通往/來自周邊裝置16A-16B)。於該圖示之實施例中,該HT電路24A-24B係並未被使用,而該HT電路24C係經由非一致性連結被連接至該周邊裝置13A-13B。
此處提到,雖然該目前之實施例使用該HT介面作為節點之間和節點與周邊裝置之間的通訊,但其他實施例可使用任何想要之介面或任何一種通訊介面。舉例而言,其他以封包為基礎之介面可被使用,匯流排介面可被使用,
許多標準周邊介面可被使用(例如,周邊組件內連接(peripheral component interconnect, PCI)和PCI express…等)。
該周邊裝置13A-13B可為任何形式之周邊裝置。例如,該周邊裝置13A-13B可包含與另一個電腦系統通訊之裝置,其中該裝置係連接至該另一個電腦系統(例如,網路介面卡、整合於電腦系統主電路板上類似網路介面卡之電路系統,或數據機)。再者,該周邊裝置13A-13B可包含視訊加速器(video accelerator)、音效卡(audio card)、硬式或軟式磁碟機或磁碟控制器、小型電腦系統介面(Small Computer Systems Interface, SCSI)轉接器、電話通訊卡(telephony card)、聲效卡(sound card)以及多種資料擷取卡(data acquisition card)諸如:通用介面匯流排(GPIB)或場匯流排介面卡(field bus interface card)。此處提到該名稱”周邊裝置”係意指包含輸入/輸出(I/O)裝置。
一般而言,處理器核心15A-15B可包含被設計用以執行指令之電路系統,該指令係定義於給定之指令集合結構(instruction set architecture)中。也就是說,該處理器核心電路系統可被組構以取得(fetch)、解碼(decode)、執行(execute)以及儲存(store)該指令之結果,該指令係定義於該指令集合結構中。例如,於一個實施例中,處理器核心15A-15B可以該X86結構來實現。該處理器核心15A-15B可包括任何想要之組構,包含:超管路(superpipelined)、超純量(superscalar)或兩者之結合。
其他組構可包含純量(scalar)、管路(pipelined)、非管路(non-pipelined)…等。許多實施例可使用亂序預測執行(out of order speculative execution)或順序執行(in order execution)。該處理器核心可包含用於一個或多個指令或其他功能之微編碼(microcoding),以與以上任何一種架構相結合。許多實施例可以實現許多其他設計特徵,諸如:快取、變換後備緩衝區(translation look-aside buffer, TLB)…等。因此,於該圖示之實施例中,除了被兩個處理器核心所共享之該L3快取60之外,處理器核心15A包含L1快取系統16A、L2快取系統17A和TLB 18A。同樣地,處理器核心15B包含L1快取系統16B、L2快取系統17B和變換後備緩衝區18B。該L1和L2快取各自可代表任何於微處理器中發現之L1和L2快取。另外,該處理節點12包含共享之L3快取60,其中該L3快取60係L3快取次系統30(cache subsystem)之一部份。於該圖示之實施例中,該L3快取次系統30包含快取控制器單元21(如所示,係節點控制器20之一部份)和該L3快取60。快取控制器21可被組構以控制被指向該L3快取60之要求。
如以下將詳加描述者,一個或多個該快取和(或)TLB結構可實現取代機制,其中取代控制器可維護資料儲存陣列中每一個方塊儲存位置之最近被存取/被使用位元(recently accessed/used bit)。另外,該取代控制器可維護計數值以依次地指向每一個方塊儲存位置。當每一個合適之儲存位置均被查看以決定是否儲存取代資料,該最
近被存取/被使用(RU)位元可指示是否該對應之方塊儲存位置係最近被存取過。因此,該方塊取代控制器可根據是否該RU位元指示該位置最近被存取過,而將該取代資料儲存於該計數值所指向之該方塊儲存位置。
亦應注意的是,雖然第1圖中所示之該電腦系統10包含一個處理節點12,但其他實施例可實現任意數目之處理節點。類似地,於許多實施例中,處理節點(如:節點12)可包含任意數目之處理器核心。許多該電腦系統10之實施例也可以於每一個節點12上包含不同數目之HT介面和不同數目之周邊裝置16(係連接至該節點)…等。
請參照第2圖,係顯示第1圖中快取記憶體系統實施例更詳細之態樣之方塊圖。該快取記憶體系統200(有時又被稱作快取記憶體)包含標籤控制262(tag control)、方塊取代控制器266、最近最少使用(LRU)儲存陣列264、標籤儲存陣列263和資料儲存陣列265。
該標籤儲存陣列263可被組構以儲存一些位址位元(如:標籤)於複數個位置中的每一個,該位址位元係儲存於該資料儲存陣列265內之資料之快取線之位址位元。於一個實施例中,該標籤控制262可以被組構以搜尋該標籤儲存陣列263進而決定是否被要求之快取線係出現在該資料儲存陣列265。例如,標籤控制262可決定是否有一個或多個關聯於讀取要求之位址位元(address bit)係與儲存於該標籤儲存陣列263之內之任何位址標籤(address tag)匹配。如果該標籤控制262與被要求之位址匹配,則
該標籤控制262可回覆命中指示(hit indication)給該快取控制器21,而如果在該標籤陣列263中沒有發現匹配者則回覆落空指示(miss indication)。
於該圖示實施例中,該資料儲存陣列265包含複數個方塊儲存位置(如:269)。如圖所示,資料儲存陣列265具有編號由0至m-1之m列(row),以及編號由0至n-1之n行(column)。於此實施例中,該資料儲存陣列265實現了包含n路關聯性(n ways of associativity)之集合關聯快取記憶體(set associative cache memory)。該路(way)係由該行所代表,而該集合由該列所代表。例如,如果該快取記憶體係16路之集合關聯快取,則n將是16,而每一個集合將包含16個提供儲存資料方塊之方塊儲存位置。傳統上,資料方塊可為快取線。該集合之數目可視該快取記憶體之尺寸而定。
該LRU儲存陣列264包含複數個儲存位置。於圖示之實施例中,該LRU儲存陣列264包含相當於該資料儲存陣列265中該列和行之列和行,其中該列係代表該集合。於該LRU儲存陣列264中標記為"ru"之該儲存位置中,該方塊取代控制器266可維護該資料儲存陣列265中每一個方塊儲存位置之最近被存取/被使用(RU)位元。每一個RU位元均指示是否該資料儲存陣列中該對應之位置係最近被存取。如同此處所使用,被存取/被使用係指操作,在該操作中,該資料儲存陣列內之方塊儲存位置係由於對該方塊儲存位置中該資料之快取要求而被讀取或寫入或是被存取。
除了RU位元之外,該方塊取代控制器266可以於該LRU儲存陣列264中每一個列之內維護計數值。例如,如第2圖所示,每一個列中該參考編號C0、C1、C2和C3代表四位元計數值。該計數值代表指標(pointer),指向資料儲存陣列265中該對應之列內個別之方塊儲存位置,其中該計數值可實現16路之集合關聯快取。因此,所示之該計數值係四位元數值。如果該路數(the number of way)不同,則該計數值可具有不同之位元數。於該圖示實施例中,對應於給定集合之該計數值亦代表指標,指向該LRU儲存陣列264中該相關聯之RU位元。
應注意的是在一個實施例中,當RU位元係空的(clear),則可指示方塊儲存位置最近係未被存取。也就是說,當該RU位元係位於邏輯0數值。同樣地,當RU位元係被設定的(set),則可指示方塊儲存位置最近係被存取。也就是說,當該RU位元係位於邏輯1數值。然而,同樣可預期該邏輯數值可被顛倒(reversed)以致於RU位元可指示出方塊儲存位置最近係未被存取,當RU位元係被設定的或位於邏輯1數值;而RU位元可指示出方塊儲存位置最近係被存取,當RU位元係空的或位於邏輯0數值。
如下所詳述並同時參照第3圖之敘述,方塊取代控制器266可以被組構以儲存取代資料於資料儲存陣列265內,如果該計數值指向具有指示該方塊儲存位置最近係未被存取之對應RU位元之方塊儲存位置。另外,如同此實施例中所使用之最近被存取(recently accessed)係指自從
該計數值最後一次指向此方塊儲存位置之”被存取/被使用”。
應注意的是,該取代機制可被使用於任何形式之快取,該快取係使用取代演算法。例如,上述該快取記憶體系統200可為L1快取、L2快取或L3快取之代表。再者,也有其他型式之快取記憶體於處理器之微結構(micro-architecture)內。例如,許多處理器使用習知之儲存(如變換後備緩衝區(TLB))以儲存虛擬或線性位址至實體位址轉換。這些形式之儲存也可以大部分相同於傳統快取之方式使用取代演算法。如此,可預期上述該取代機制也可被使用於這些形式之快取。
第3圖係描述第2圖中該快取記憶體系統200之該實施例之該運作之流程圖。共同參照第2圖和第3圖,於方塊300內,於一個實施例中,該方塊取代控制器266造成所有RU位元指示最近未被存取。此情況可藉由例如:重置(reset),來完成。為回應快取存取要求(諸如對給定之方塊儲存位置之讀取要求)(例如:方塊305),方塊取代控制器266設定對應於該被存取之方塊儲存位置之該RU位元(方塊310)。此操作可於每一次方塊儲存位置被存取時發生。
當該資料儲存陣列265係存滿有效之資料,任何額外之資料填入都將有資料被取代。因此,為回應取代要求(方塊315),方塊取代控制器266檢查對應於該方塊儲存位置之該RU位元,其中該方塊儲存位置係被該集合中之該計數
值所指出,而該集合係被該要求之該位址所指示(方塊320)。如果該RU位元係空的(於此例中),指示出該位置最近係未被存取(方塊325),該方塊取代控制器266取代該方塊儲存位置中該資料,其中該方塊儲存位置係被該集合中之該計數值所指出,而該集合係被該要求之該位址所指示(方塊330),並且該方塊取代控制器266設定該對應之RU位元(指示最近係被存取)。操作則如上述之方塊305來進行。
回頭參照方塊325,如果該RU位元係被設定的(is set),指示該位置最近係被存取,則該方塊取代控制器266清空(clear)目前被該計數值所指向之該RU位元(指示最近係未被存取),並且增加該計數值以指向該集合中該下一個合適之方塊儲存位置(方塊340)。該方塊取代控制器266可接著檢查該下一個RU位元,以查看是否該下一個RU位元係空的或被設定的。如上所述,如果該RU位元係被設定的,指示該下一個位置最近係被存取,則該方塊取代控制器266清空目前被該計數值所指向之該RU位元(指示最近未被存取),並增加該計數值以指向該集合中該下一個方塊儲存位置。此操作將持續直到該方塊取代控制器發現RU位元係空的,於此案例中操作將如以上方塊330中所述般被進行。因此,雖然不太可能,但所有該RU位元可能於一個取代週期內被清空。
上述該等實施例對可以於該計數器依次的傳遞之間被存取之任何方塊提供被取代前之第二次機會。
請參照第4圖,所示為圖示出快取記憶體系統400之另一個實施例之更詳細態樣之方塊圖。快取記憶體系統400類似於第2圖之快取記憶體200,但是具有一些操作上的差異。詳而言之,視該實現之方式而定,不必要對於該資料儲存陣列265中每一個方塊儲存位置均維護RU位元。如下所述,該總計之最近使用資訊(包含該計數器和RU位元兩者)係維持在每個方塊儲存位置一個位元。
於第4圖所示之實施例中,該快取記憶體系統400(有時係被稱作快取記憶體)包含標籤控制262、方塊取代控制器466、最近最少使用(LRU)儲存陣列464、標籤儲存陣列263以及資料儲存陣列265。如第4圖所示,該資料儲存陣列265包含複數個方塊儲存位置(如:269),並且實現包括某路數關聯性之集合關聯快取。因此,該LRU儲存陣列464也包含複數個儲存位置。於一個實施例中,該方塊取代控制器466可針對該資料儲存陣列265中每一個集合維護計數值。如此,該LRU儲存陣列464也包含對應於該資料儲存陣列265中該列和該行之列和行,其中該列代表該集合。於一個實施例中,該方塊取代控制器466可將每一個計數值儲存於該LRU儲存陣列464之列內。例如,如第4圖所示,每一個列中之該參考編號C0、C1、C2和C3係代表四位元計數值。該計數值代表指向該資料儲存陣列265內之個別方塊儲存位置之指標。
然而,與第2圖所示之該實施例相比,第4圖中該方塊取代控制器466僅針對該資料儲存陣列265中一部份該
方塊儲存位置維護最近被存取/被使用(RU)位元。於該圖示之實施例中,為了減少LRU陣列464內之LRU資訊所需之儲存,該計數值係儲存於該等RU位元間。因此,RU位元之該數目可為n-log2
n,其中n係關聯性之路數(number of ways of associativity)。例如,於16路之快取中,將有12個RU位元和四位元之計數值。於此案例中,最近已被該指標忽略之該RU位元可被看作係邏輯0,所以這些位元不需要儲存。另外,根據RU位元與該計數器之相對位置(position)而不是根據絕對之路數(absolute way number)來儲存該RU位元係有用的。例如,該方塊取代控制器466可儲存LRU陣列464內之該計數值,以致於該第一RU位元儲存位置(在對應於任何的方塊儲存位置之該計數值儲存之後)係被該計數值所指向。因此,例如:如果該計數值係6,儲存於行4之該RU位元將對應於路數6之方塊儲存位置,而不是如第2圖所示之實施例中該RU位元所對應之路數4。
如以上與第4圖中所描述者,每次該計數值增加,則LRU儲存陣列464中特定列內之該RU位元係被向左移位(shifted left)一個位元位置。因為該RU位元中任何一個或全部均有可能於取代要求當時成為那一個被左移之位元,所以似乎需要一個移位器(shifter),該移位器具有和每一個列之該RU位元數目一樣多之路數。然而,該移位器所需要之尺寸可藉由數字因子"k"來減少,藉由在增加該計數器之前等待該最初k個RU位元被設定並且僅以k之倍數
增加。於此案例中,被用於任何給定之取代之該路(way)將不必要係該計數值所指向之該路,但可為自該計數值到計數值+k-1之該路中任何一個,該路之RU位元指示最近未被存取/被使用。例如,於該圖示實施例中,該計數值可以4之倍數(k=4)增加。於此案例中,該計數值中該2個最低有效位元(least significant bit)將總是邏輯0,所以該2個最低有效位元不需要儲存。此方式所節省之該儲存空間可以被用以儲存額外之RU位元。因此,於此例中,每個集合中該16位元LRU儲存將被分配為兩位元計數值加上14個RU位元。
於一個實施例中,每一個RU位元均指示是否該資料儲存陣列265中對應之方塊儲存位置係最近被存取。如同此處所使用,被存取/被使用係指操作,在該操作中,該資料儲存陣列內之方塊儲存位置係由於對該方塊儲存位置中該資料之快取要求而被讀取或寫入或是被存取。
應注意的是在一個實施例中,當RU位元係空的,該RU位元可指示方塊儲存位置最近係未被存取。也就是說,當該RU位元係位於邏輯0數值。同樣地,當RU位元係被設定的,該RU位元可指示方塊儲存位置最近係被存取。也就是說,當該RU位元係位於邏輯1數值。然而,同樣可預期該邏輯數值可被顛倒以致於RU位元可指示出方塊儲存位置最近係未被存取,當RU位元係被設定的或位於邏輯1數值;而RU位元可指示出方塊儲存位置最近係被存取,當RU位元係空的或位於邏輯0數值。
第5圖係描述第4圖中所示之該實施例之操作細節之流程圖,如同該先前段落所修改者。共同參照第4圖和第5圖,於第5圖之方塊500中,該方塊取代控制器466造成所有RU位元指示最近未被存取。此情況可藉由例如:重置,來完成。為回應快取存取要求(諸如對給定之方塊儲存位置之讀取要求),例如(方塊505),方塊取代控制器466設定對應於該被存取之方塊儲存位置之該RU位元,如果於該要求時存在這樣的位元(方塊510)。此操作可於每一次方塊儲存位置被存取時發生。
當該資料儲存陣列265係存滿有效之資料,任何額外之資料填入都將有資料被取代。因此,為回應取代要求(方塊515),方塊取代控制器466檢查對應於該方塊儲存位置之該RU位元以及對該集合之該下面三個RU位元,其中該方塊儲存位置係被該集合中之該計數值所指向,而該集合係被該要求之該位址所指示(方塊520)。如果此四個RU位元中任何一個係空的,指示該位置係未被存取(方塊525),則該方塊取代控制器466取代該方塊儲存位置中該資料,其中該方塊儲存位置係對應於四個RU位元中該第一個空的RU位元(方塊530),並且該方塊取代控制器466設定此位元以指示最近係被存取。操作則如上述之方塊505來進行。
回頭參照方塊525,如果該四個被檢驗之RU位元全部均被設定,指示該等位置最近係被存取,則該方塊取代控制器466將所有對於該列之該RU位元往左移位四個位元位
置,於右手端填0(zero-fill)(指示最近未被存取),並且將計數值增加4以指向該接下來包含該集合中四個方塊儲存位置之合適群組(方塊540)。該方塊取代控制器466可接著檢查該接下來具有四個RU位元之群組,以查看是否其中任何一個係空的。如上所述,如果該四個RU位元全部係被設定的,指示該等位置最近係被存取,則該方塊取代控制器466將所有對於該列之該RU位元往左移位四個位元位置,並填0(指示最近未被存取),並且將計數值增加4以指向該接下來包含該集合中四個方塊儲存位置之合適群組。此操作將持續直到該方塊取代控制器發現RU位元係空的,於此案例中操作將如以上方塊530中所述般被進行。因此,雖然不太可能,但所有該RU位元可能於一個取代週期內被清空。
應注意的是,於另一實施例中,每當該第一組四個位元(first four bit)被發現係被設定,則該方塊取代控制器466可被組構以移位/清空(shift/clear)該對於給定之列之四個RU位元,而無須等待該下一個取代要求。於此案例中,當取代要求到達時,已經確認第一組四個群組中至少一個RU位元係空的。
應注意的是,雖然於一些實施例中未顯示,但有效之位元/資訊可被儲存於該標籤陣列263或個別之儲存陣列。如此,具有無效資料之方塊儲存位置可以在具有有效之資料前一直被用以儲存取代之資料(replacement data)。因此,當接收到快取要求時,當正在決定儲存取代
資料至那一個位置時,該有效之資訊可優先於該RU資訊而被檢查。
復應注意的是,雖然上述實施例中包含具有多重處理器核心之節點,可預期的是關聯於快取系統200和400之該功能可被用於任何形式之處理器,包含單一核心處理器。另外,雖然該實施例已經以硬體的關點被描述,但可預期的是該實施例可被實現於硬體、軟體或軟體之結合。於以軟體實現之實施例中,該程式指令可被儲存於例如第1圖之記憶體14內,並如所期望的被15A和15B所執行。然而,可預期的是該程式指令可被儲存於任何形式之儲存媒體中。
雖然該以上之實施例已被儘可能地詳細描述,但以上所揭露的內容一旦理解後,許多的變化及修改對於該技術領域中熟習技術者將變得很明顯。接下來的申請專利範圍打算以涵蓋所有這種變化與修改之方式來加以解讀。
10‧‧‧電腦系統
12‧‧‧節點
13A、13B‧‧‧周邊
14‧‧‧記憶體
15A、15B‧‧‧處理器核心
16A、16B‧‧‧L1快取
17A、17B‧‧‧L2快取
18A、18B‧‧‧變換後備緩衝區
20‧‧‧節點控制器
21‧‧‧快取控制器
22‧‧‧記憶體控制器
24A、24B、24C‧‧‧HyperTransport介面電路
30‧‧‧L3快取次系統
60‧‧‧L3快取
200、400‧‧‧快取記憶體系統
262‧‧‧標籤控制
263‧‧‧標籤儲存陣列
264、464‧‧‧最近最少使用(LRU)儲存陣列
265‧‧‧資料儲存陣列
266、466‧‧‧方塊取代控制器
269‧‧‧方塊儲存位置
300、305、310、315、320、325、330、335、340‧‧‧方塊
500、505、510、515、520、525、530、535、540‧‧‧方塊
藉由參考附加圖示使所屬技術領域中具有通常知識者對本發明可有較佳的了解,且明瞭其許多特色與優點。
第1圖係包含多核心處理節點之電腦系統之一個實施例之方塊圖;第2圖係圖示第1圖之快取記憶體之實施例中較詳細態樣之方塊圖;第3圖係描述第2圖之該快取記憶體之一個實施例中該操作之流程圖;
第4圖係圖示第1圖之快取記憶體之另一個實施例中較詳細態樣之方塊圖;第5圖係描述第4圖之該快取記憶體之一個實施例中該操作之流程圖;雖然本發明可容易作各種之修飾和替代形式,但是在此係由圖式中之範例顯示及詳細說明本發明之特定實施例。然而,應暸解到此處特定實施例之圖式及詳細說明並不欲用來限制本發明為所揭示之特定形式,反之,本發明將涵蓋所有落於如所附申請專利範圍內所界定之本發明之精神和範圍內之修飾、等效和替代內容。請注意該字句"may"係以寬鬆之意義被貫穿地使用於本發明(也就是,有可能的、可以的),而不是強制之意義(也就是,必須)。
300、305、310、315、320‧‧‧方塊
325、330、335、340‧‧‧方塊
Claims (20)
- 一種快取記憶體系統,包括:快取記憶體,包含複數個集合,每一個集合均具有複數個方塊儲存位置;以及方塊取代控制器,連接至該快取記憶體並且被組構以維護對應於該快取記憶體中每一個集合之個別計數值,其中,對應於給定集合之該個別計數值指向該給定集合內儲存取代資料之合適之方塊儲存位置;其中,該方塊取代控制器係復組構以針對該方塊儲存位置之至少一些中每一個維護相關聯之最近存取位元,該最近存取位元係指示自從該個別計數值最後一次指向該對應之方塊儲存位置時起是否該對應之方塊儲存位置係最近被存取,其中,對於給定之集合而言,該最近存取位元係與該個別計數值分開;以及其中,該方塊取代控制器係被復組構以根據是否對應於該合適之方塊儲存位置之該最近存取位元中特定一者指示該合適之方塊儲存位置係最近被存取,而將該取代資料儲存於被該個別計數值所指向之該合適之方塊儲存位置內。
- 如申請專利範圍第1項之快取記憶體系統,其中,該方塊取代控制器係被組構以將該取代資料儲存於被該個別計數值所指向之該合適之方塊儲存位置內,以回應對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示該合適之方塊儲存位置係最近未被存 取。
- 如申請專利範圍第1項之快取記憶體系統,其中,該方塊取代控制器係復組構以造成對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示該合適之方塊儲存位置係最近被存取,以回應存取該合適之方塊儲存位置之快取存取要求。
- 如申請專利範圍第1項之快取記憶體系統,其中,該方塊取代控制器係復組構以禁止將該取代資料儲存於被該個別計數值所指向之該合適之方塊儲存位置內,以回應對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示出該合適之方塊儲存位置係最近被存取。
- 如申請專利範圍第1項之快取記憶體系統,其中,該方塊取代控制器係被組構以造成給定之最近存取位元指示相關聯之合適方塊儲存位置係最近未被存取,以回應指向該對應之合適方塊儲存位置之對應之個別計數值,以及該給定之最近存取位元指示該對應之合適方塊儲存位置係最近被存取。
- 如申請專利範圍第5項之快取記憶體系統,其中,該方塊取代控制器係被組構以增加該個別計數值,以回應對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示出該合適之方塊儲存位置係最近被存取,該合適之方塊儲存位置係被該個別計數值所指向。
- 如申請專利範圍第1項之快取記憶體系統,其中,最 近存取位元之數目係直接對應於集合之數目乘以該快取記憶體關聯性之路數。
- 如申請專利範圍第1項之快取記憶體系統,其中,最近存取位元之數目係直接對應於集合之數目乘以n-log2 n,此處n係等於該快取記憶體關聯性之路數。
- 一種快取資料取代之方法,包括:提供快取記憶體,包含複數個集合,每一個集合均包含複數個方塊儲存位置;以及維護個別計數值,該個別計數值係對應於該快取記憶體中每一個集合,其中,對應於給定集合之該個別計數值指向該給定集合內儲存取代資料之合適之方塊儲存位置;針對該方塊儲存位置之至少一些中每一個維護相關聯之最近存取位元,該最近存取位元係指示自從該個別計數值最後一次指向該對應之方塊儲存位置時起是否該對應之方塊儲存位置係最近被存取,其中,對於給定之集合而言,該最近存取位元係與該個別計數值分開;以及根據是否對應於該合適之方塊儲存位置之該最近存取位元中特定一者指示該合適之方塊儲存位置係最近被存取,將該取代資料儲存於被該個別計數值所指向之該合適之方塊儲存位置內。
- 如申請專利範圍第9項之方法,復包括將該取代資料儲存於被該個別計數值所指向之該合適之方塊儲存位 置內,以回應對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示該合適之方塊儲存位置係最近未被存取。
- 如申請專利範圍第10項之方法,復包括造成該對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示該合適之方塊儲存位置係最近被存取,以回應存取該合適之方塊儲存位置之快取存取要求。
- 如申請專利範圍第10項之方法,復包括禁止儲存該取代資料於被該個別計數值所指向之該合適之方塊儲存位置內,以回應對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示該合適之方塊儲存位置係最近被存取。
- 如申請專利範圍第11項之方法,復包括造成給定之最近存取位元指示相關聯之合適方塊儲存位置係最近未被存取,以回應指向該對應之合適方塊儲存位置之對應之個別計數值,以及該給定之最近存取位元指示該對應之合適方塊儲存位置係最近被存取。
- 如申請專利範圍第11項之方法,復包括增加該個別計數值,以回應對應於該合適之方塊儲存位置之該最近存取位元中該特定一者,該合適之方塊儲存位置係被該個別計數值所指向,該個別計數值指示該合適之方塊儲存位置係最近被存取。
- 如申請專利範圍第9項之方法,其中,最近存取位元之數目係直接對應於集合之數目乘以該快取記憶體關 聯性之路數。
- 如申請專利範圍第9項之方法,其中,最近存取位元之數目係直接對應於集合之數目乘以n-log2 n,此處n係等於該快取記憶體關聯性之路數。
- 一種包含程式指令之電腦可讀取媒體,該程式指令可被處理器所執行以:維護個別計數值,該個別計數值係對應於快取記憶體中複數個集合中每一個集合,其中各集合包含複數個方塊儲存位置,並且,其中之對應於給定集合之個別計數值指向該給定集合內儲存取代資料之合適之方塊儲存位置;針對該方塊儲存位置之至少一些中每一個維護相關聯之最近存取位元,該最近存取位元係指示自從該個別計數值最後一次指向該對應之方塊儲存位置時起是否該對應之方塊儲存位置係最近被存取自從該個別計數值最後一次指向該對應之方塊儲存位置時起;以及根據是否對應於該合適之方塊儲存位置之該最近存取位元中特定一者指示該合適之方塊儲存位置係最近被存取,將該取代資料儲存於被該個別計數值所指向之該合適之方塊儲存位置內。
- 如申請專利範圍第17項之電腦可讀取媒體,其中,該程式指令復包括指令,該指令可被處理器所執行以儲存該取代資料於被該個別計數值所指向之該合適之方 塊儲存位置內,以回應對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示該合適之方塊儲存位置係最近未被存取。
- 如申請專利範圍第18項之電腦可讀取媒體,其中,該程式指令復包括指令,該指令可被處理器所執行以造成該對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示該合適之方塊儲存位置係最近被存取,以回應存取該合適之方塊儲存位置之快取存取要求。
- 如申請專利範圍第18項之電腦可讀取媒體,其中,該程式指令復包括指令,該指令可被處理器所執行以禁止儲存該取代資料於被該個別計數值所指向之該合適之方塊儲存位置內,以回應對應於該合適之方塊儲存位置之該最近存取位元中該特定一者指示該合適之方塊儲存位置係最近被存取。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/849,515 US7861041B2 (en) | 2007-09-04 | 2007-09-04 | Second chance replacement mechanism for a highly associative cache memory of a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200912742A TW200912742A (en) | 2009-03-16 |
TWI451330B true TWI451330B (zh) | 2014-09-01 |
Family
ID=40002967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097132347A TWI451330B (zh) | 2007-09-04 | 2008-08-25 | 快取記憶體系統以及快取資料取代之方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7861041B2 (zh) |
EP (1) | EP2198370B1 (zh) |
JP (1) | JP5328792B2 (zh) |
KR (1) | KR101509628B1 (zh) |
CN (1) | CN101918925B (zh) |
TW (1) | TWI451330B (zh) |
WO (1) | WO2009032275A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI758654B (zh) * | 2017-08-03 | 2022-03-21 | 美商美光科技公司 | 快取篩選器 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112011103916B4 (de) | 2010-11-25 | 2021-11-25 | International Business Machines Corporation | Speicherzugriffseinheit für gemeinsame Speichernutzung zwischen mehreren Prozessoren |
US8615636B2 (en) * | 2011-03-03 | 2013-12-24 | International Business Machines Corporation | Multiple-class priority-based replacement policy for cache memory |
US9063945B2 (en) * | 2011-06-14 | 2015-06-23 | International Business Machines Corporation | Apparatus and method to copy data |
US9378153B2 (en) | 2013-08-27 | 2016-06-28 | Advanced Micro Devices, Inc. | Early write-back of modified data in a cache memory |
CN105938447B (zh) * | 2015-03-06 | 2018-12-14 | 华为技术有限公司 | 数据备份装置及方法 |
US10725782B2 (en) | 2017-09-12 | 2020-07-28 | Qualcomm Incorporated | Providing variable interpretation of usefulness indicators for memory tables in processor-based systems |
CN108304214B (zh) * | 2017-12-13 | 2022-05-13 | 超聚变数字技术有限公司 | 一种立即数的完整性的校验方法及装置 |
US10783083B2 (en) | 2018-02-12 | 2020-09-22 | Stmicroelectronics (Beijing) Research & Development Co. Ltd | Cache management device, system and method |
US11561895B2 (en) | 2019-09-05 | 2023-01-24 | Advanced Micro Devices, Inc. | Oldest operation wait time indication input into set-dueling |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200407709A (en) * | 2002-09-30 | 2004-05-16 | Advanced Micro Devices Inc | Method and apparatus for reducing overhead in a data processing system with a cache |
TW200411389A (en) * | 2002-10-24 | 2004-07-01 | Ibm | Weighted cache line replacement |
US6823427B1 (en) * | 2001-05-16 | 2004-11-23 | Advanced Micro Devices, Inc. | Sectored least-recently-used cache replacement |
US20050223173A1 (en) * | 2004-03-31 | 2005-10-06 | Nec Corporation | Set associative cache system and control method for cache memories |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0222751A (ja) * | 1988-07-11 | 1990-01-25 | Mitsubishi Electric Corp | 優先順位決定手段 |
FR2645986B1 (fr) * | 1989-04-13 | 1994-06-17 | Bull Sa | Procede pour accelerer les acces memoire d'un systeme informatique et systeme pour la mise en oeuvre du procede |
US5353425A (en) * | 1992-04-29 | 1994-10-04 | Sun Microsystems, Inc. | Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature |
JPH10198603A (ja) * | 1997-01-08 | 1998-07-31 | Canon Inc | 情報処理システム及びその制御方法、情報処理装置 |
US6243791B1 (en) * | 1998-08-13 | 2001-06-05 | Hewlett-Packard Company | Method and architecture for data coherency in set-associative caches including heterogeneous cache sets having different characteristics |
US6490656B1 (en) * | 2000-02-18 | 2002-12-03 | Hewlett-Packard Company | Retaining state information of an array of elements by subdividing the array into groups of elements |
US6732238B1 (en) * | 2001-06-08 | 2004-05-04 | Tensilica, Inc. | Set-associative cache memory having variable time decay rewriting algorithm |
JP3988485B2 (ja) * | 2002-02-25 | 2007-10-10 | セイコーエプソン株式会社 | キャッシュ回路、情報処理装置及び電子機器 |
CN100429632C (zh) * | 2003-09-19 | 2008-10-29 | 松下电器产业株式会社 | 高速缓冲存储器和高速缓冲存储器控制方法 |
KR100813370B1 (ko) * | 2003-11-12 | 2008-03-12 | 마쯔시다덴기산교 가부시키가이샤 | 캐시 메모리 및 그 제어방법 |
US8806103B2 (en) * | 2004-04-28 | 2014-08-12 | Hewlett-Packard Development Company, L.P. | System and method for interleaving memory |
US7516275B2 (en) * | 2006-04-25 | 2009-04-07 | International Business Machines Corporation | Pseudo-LRU virtual counter for a locking cache |
-
2007
- 2007-09-04 US US11/849,515 patent/US7861041B2/en active Active
-
2008
- 2008-08-25 TW TW097132347A patent/TWI451330B/zh active
- 2008-09-04 CN CN200880111266.6A patent/CN101918925B/zh active Active
- 2008-09-04 WO PCT/US2008/010368 patent/WO2009032275A1/en active Application Filing
- 2008-09-04 EP EP08829948A patent/EP2198370B1/en active Active
- 2008-09-04 KR KR20107007196A patent/KR101509628B1/ko active IP Right Grant
- 2008-09-04 JP JP2010524027A patent/JP5328792B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823427B1 (en) * | 2001-05-16 | 2004-11-23 | Advanced Micro Devices, Inc. | Sectored least-recently-used cache replacement |
TW200407709A (en) * | 2002-09-30 | 2004-05-16 | Advanced Micro Devices Inc | Method and apparatus for reducing overhead in a data processing system with a cache |
TW200411389A (en) * | 2002-10-24 | 2004-07-01 | Ibm | Weighted cache line replacement |
US20050223173A1 (en) * | 2004-03-31 | 2005-10-06 | Nec Corporation | Set associative cache system and control method for cache memories |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI758654B (zh) * | 2017-08-03 | 2022-03-21 | 美商美光科技公司 | 快取篩選器 |
Also Published As
Publication number | Publication date |
---|---|
CN101918925A (zh) | 2010-12-15 |
CN101918925B (zh) | 2017-05-03 |
JP5328792B2 (ja) | 2013-10-30 |
TW200912742A (en) | 2009-03-16 |
WO2009032275A1 (en) | 2009-03-12 |
KR101509628B1 (ko) | 2015-04-08 |
EP2198370B1 (en) | 2012-07-11 |
KR20100054155A (ko) | 2010-05-24 |
US20090063776A1 (en) | 2009-03-05 |
JP2010538390A (ja) | 2010-12-09 |
US7861041B2 (en) | 2010-12-28 |
EP2198370A1 (en) | 2010-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI451330B (zh) | 快取記憶體系統以及快取資料取代之方法 | |
US6496902B1 (en) | Vector and scalar data cache for a vector multiprocessor | |
US6725343B2 (en) | System and method for generating cache coherence directory entries and error correction codes in a multiprocessor system | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
EP0734553B1 (en) | Split level cache | |
USRE45078E1 (en) | Highly efficient design of storage array utilizing multiple pointers to indicate valid and invalid lines for use in first and second cache spaces and memory subsystems | |
US9384134B2 (en) | Persistent memory for processor main memory | |
US8180981B2 (en) | Cache coherent support for flash in a memory hierarchy | |
CN101493796B (zh) | 存储器内、页面内目录高速缓存一致性配置 | |
US20100318741A1 (en) | Multiprocessor computer cache coherence protocol | |
US20060155934A1 (en) | System and method for reducing unnecessary cache operations | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
JP2006517040A (ja) | キャッシュラインサイズが異なる第一レベルキャッシュと第二レベルキャッシュを備えたマイクロプロセッサ | |
US8639885B2 (en) | Reducing implementation costs of communicating cache invalidation information in a multicore processor | |
US9720847B2 (en) | Least recently used (LRU) cache replacement implementation using a FIFO storing indications of whether a way of the cache was most recently accessed | |
CN105027137B (zh) | 用于针对增强型安全检查的页走查扩展的装置和方法 | |
TWI235916B (en) | Multilevel cache structure and method using multiple issue algorithm with over subscription avoidance for high bandwidth cache pipeline | |
US6557078B1 (en) | Cache chain structure to implement high bandwidth low latency cache memory subsystem | |
US6507892B1 (en) | L1 cache memory | |
US20090006777A1 (en) | Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor | |
US7882309B2 (en) | Method and apparatus for handling excess data during memory access | |
US6240487B1 (en) | Integrated cache buffers | |
EP2866148B1 (en) | Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device | |
Chen | A high performance sequential MRU cache using valid-bit pre-decision search algorithm | |
Mohammad et al. | Cache Architecture and Main Blocks |