TW201631476A - 根據位址標籤位元的動態快取記憶體置換路選擇 - Google Patents
根據位址標籤位元的動態快取記憶體置換路選擇 Download PDFInfo
- Publication number
- TW201631476A TW201631476A TW104138638A TW104138638A TW201631476A TW 201631476 A TW201631476 A TW 201631476A TW 104138638 A TW104138638 A TW 104138638A TW 104138638 A TW104138638 A TW 104138638A TW 201631476 A TW201631476 A TW 201631476A
- Authority
- TW
- Taiwan
- Prior art keywords
- cache memory
- tag
- bits
- block
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- 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/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
一種快取記憶體包含:模式輸入端,其指示快取記憶體要操作的多個分配模式;多個項目的組相關陣列,其具有相乘的多個組與W個路;輸入端,其接收一個記憶體位址,此記憶體位址包含用來從所述多個組中選取一個索引;以及用來與儲存在所選的組中的W路中的多個項目的多個標籤做對照的標籤,以判斷所述記憶體位址在所述陣列中為命中或未命中,當所述記憶體位址未命中所述陣列:基於所述分配模式而選取所述標籤的一或多個位元;基於所述分配模式而在所選標籤的位元執行函數來產生所述陣列的W路的子組;並且分配至所選組的路的子組的其中一路。
Description
本發明是關於一種快取記憶體,特別是關於取決於模式而可動態配置以選擇一或多個組的多模式組相聯快取記憶體。
現今的處理器被要求執行的程式是處理具有廣泛不同特性的資料組(set)並且是以廣泛而不同的方式來存取資料。資料組的特性以及存取模式影響著處理器的快取記憶體的執行效率。執行效率主要是依照命中比(hit ratio)來判斷。
本發明的一個目的在於提供一種快取記憶體,包括:一模式輸入端,用以指示所述快取記憶體要被操作在多個分配模式中的何者;多個項目的一組相關陣列,所述組相關陣列具有多個相乘的組以及W路,其中W是大於1的整
數;一輸入端,用以接收一記憶體位址,所述記憶體位址包括:一索引,用以從所述些組中選出一組;以及一標籤,用以對照於儲存在所選取組的W路的多個項目中的多個標籤以判斷所述記憶體位址在所述陣列中為命中或未命中;以及一分配邏輯,用以當所述記憶體位址在所述陣列中為未命中的時候:根據所述分配模式而選取所述標籤的一或多個位元;根據所述分配模式而在所選取的所述標籤的一或多個位元執行一函數以產生所述陣列的W路的一子組;以及分配至所選取組的路的子組的其中一路。
本發明的另一個目的在於提供一種快取記憶體的操作方法,用於具有多個項目的一組相關陣列的快取記憶體,所述組相關陣列具有相乘的多個組以及W路,其中W是大於1的整數,所述快取記憶體的操作方法包括:接收一模式輸入,其指示所述快取記憶體儲氣要被操作在多個分配模式中的何者;接收一記憶體位址,其包括:一索引,用以從所述些組之中選取一組;以及一標籤,用以與儲存在所選取組的W路的多個項目中的多個標籤做對照以決定所述記憶體位址在所述陣列中為命中或未命中;以及當所述記憶體位址在所述陣列中為未命中:根據所述分配模式來選取所述標籤的一或多個位元;根據所述分配模式來在所述標籤所選取的一或多個位元執行一函數以產生所述陣列的W路的一子組;以及分配至所選取組的路的子組的其中一路。
本發明的又一個目的在於提供一種用於操作一組相關快取記憶體的操作方法,包括:在多個分配模式其中
的一目前分配模式之下操作所述快取記憶體;其中所述些分配模式之中的每一分配模式,當所述快取記憶體未命中一記憶體位址,所述快取記憶體分配至所述快取記憶體使用該記憶體位址的一索引來選取的其中一組的所述路的任一子組中的一路;其中在所述些分配模式之中的每一分配模式,所述子組是經由所述記憶體位址的一標籤的一或多個位元的不同函數來決定;以及當操作在所述目前分配模式之下的時候監測所述快取記憶體的執行效率,當所述執行效率低於一臨界值的時候將所述目前分配模式改變為所述些分配模式之中的一不同的分配模式。
102‧‧‧快取記憶體
104‧‧‧記憶體位址
106、112‧‧‧標籤
108‧‧‧模式
114‧‧‧索引
116‧‧‧偏移
302、304、306、312、314‧‧‧流程
502、504、506、512、514、516‧‧‧流程
602、604‧‧‧流程
802、804、806、808、812、814‧‧‧流程
1002、1004、1006、1008、1012、1013、1014、1016‧‧‧流程
1102A‧‧‧標籤通道A
1104A‧‧‧連接埠A
1102B‧‧‧標籤通道B
1104B‧‧‧連接埠B
1106-0‧‧‧區域0
1106-1‧‧‧區域1
1106-2‧‧‧區域2
1106-3‧‧‧區域3
1200‧‧‧區域致能邏輯
1200A‧‧‧連接埠A區域致能邏輯
1209‧‧‧大量模式
104-A‧‧‧記憶體位址
1204-0、1208-0、1204-1、1208-2‧‧‧反閘
1202-0、1202-1、1202-2、1202-3‧‧‧或閘
1206-0、1206-1、1206-2、1206-3‧‧‧及閘
1212-0A‧‧‧連接埠A區域0致能提示
1212-1A‧‧‧連接埠A區域1致能提示
1212-2A‧‧‧連接埠A區域2致能提示
1212-3A‧‧‧連接埠A區域3致能提示
1200B‧‧‧連接埠B區域致能邏輯
1212-0B‧‧‧連接埠B區域0致能提示
1212-1B‧‧‧連接埠B區域1致能提示
1212-2B‧‧‧連接埠B區域2致能提示
1212-3B‧‧‧連接埠B區域3致能提示
1214-0、1214-1、1214-2、1214-3‧‧‧或閘
1216-0‧‧‧區域0致能提示
1216-1‧‧‧區域1致能提示
1216-2‧‧‧區域2致能提示
1216-3‧‧‧區域3致能提示
1300‧‧‧命中產生邏輯
1301‧‧‧組J路0分配
1303‧‧‧組J路0重新分配
1304‧‧‧比較器
1302‧‧‧有效位元
1306‧‧‧及閘
1308-J0~1308-J15‧‧‧組J路0~15命中
1314-J‧‧‧組J命中
1308-K0~1308-K15‧‧‧組K路0~15命中
1314-K‧‧‧組J命中
1316‧‧‧或閘
1318‧‧‧大量模式命中
1322‧‧‧多工器
1324‧‧‧命中
1402、1404‧‧‧流程
1412‧‧‧時程辨識碼
1414‧‧‧時程偵測器
1416‧‧‧模式更新單元
1418‧‧‧來自於裝置驅動程式的新模式資訊
1422、1424、1426‧‧‧流程
1502、1504‧‧‧流程
1602‧‧‧快取記憶體
1608‧‧‧分配模式
1606、1612‧‧‧標籤
1614‧‧‧索引
1616‧‧‧偏移
1702‧‧‧邏輯
19、N‧‧‧位元數
1736‧‧‧多工器
1732‧‧‧組合邏輯
1738‧‧‧多工器1736所輸出的N位元
1734‧‧‧路的子組
1802、1804、1806、1808、1812、1814、1816‧‧‧流程
1902、1904、1906‧‧‧流程
3402、3404、3406‧‧‧流程
3602、3604、3606、3608、3612、3614‧‧‧流程
3702、3704、3706、3706、3712、3714、3716‧‧‧流程
3900‧‧‧處理器
3922‧‧‧指令快取記憶體
3923‧‧‧指令解碼器
3924‧‧‧指令排程器以及發送器
3926‧‧‧執行單元
3928‧‧‧記憶體子系統
圖1所示為快取記憶體的方塊圖。
圖2所示為圖1中的快取記憶體操作在一般模式之下的方塊圖。
圖3所示為圖1中的快取記憶體操作在一般模式之下的操作流程圖。
圖4所示為圖1中的快取記憶體操作在大量模式之下的方塊圖。
圖5所示為圖1中的快取記憶體102操作在大量模式之下的操作流程圖。
圖6所示為圖1中的快取記憶體102操作被指示轉換離開大量模式的操作流程圖。
圖7所示為圖1中的快取記憶體102操作在少量模式下以做為直接映射快取記憶體的方塊圖。
圖8所示為圖1中的快取記憶體102操作在少量直接映射模式之下的操作流程圖。
圖9所示為圖1中的快取記憶體操作在少量模式之下以做為8路組相關快取記憶體的方塊圖。
圖10所示為圖1中的快取記憶體102操作在少量8路模式之下的操作流程圖。
圖11所示為圖1中的快取記憶體102更詳細的方塊圖。
圖12A以及圖12B統稱為圖12,圖12所示為圖11中的快取記憶體102的區域致能邏輯方塊圖。
圖13所示為圖11中的快取記憶體102的命中產生邏輯的方塊圖。
圖14A所示為包含了一個具有圖1中的快取記憶體102的處理器的系統的操作流程圖。
圖14B所示為包含了圖1中的快取記憶體102的處理器的部件方塊圖。
圖14C所示為包含了圖1中的快取記憶體102的圖14B中的處理器的操作流程圖。
圖15所示為包含了圖1中的快取記憶體102的處理器的系統的操作流程圖。
圖16所示為快取記憶體的方塊圖。
圖17所示為邏輯方塊圖,其是用來選取快取記憶體102根據圖16中的標籤以及分配模式所分配至的路的子組的邏輯
方塊圖。
圖18所示為圖16中的快取記憶體的操作流程圖。
圖19所示為包含了圖16中的快取記憶體的處理器的系統的操作流程圖。
圖20所示為產生快取記憶體模式配置給程式以及程式時程的操作流程圖。
圖21所示為記憶體存取圖表以及從此記憶體存取圖表中萃取出的資料。
圖22所示為程式的時程分析的操作流程圖。
圖23所示為用來給處理器可配置特性決定出一個較佳配置的蠻力(brute force)法的操作流程圖。
圖24所示為處理器的方塊圖。
現今的處理器被要求執行的程式是處理具有廣泛不同特性的資料組(set)並且是以廣泛而不同的方式來存取資料。資料組的特性以及存取模式影響著處理器的快取記憶體的執行效率。執行效率主要是依照命中比(hit ratio)來判斷。
除了容量之外,快取記憶體的相聯性會大幅影響其執行效率。快取記憶體的相聯性指的是快取記憶體可以配置快取線(cache line)的可能位置或是項目(entry),快取線是依據記憶體的位址而被配置。快取線能夠配置或是分配的可能位置越多,快取記憶體的相聯性就越高。某些程式適合具有較高相聯性的快取記憶體而某些程式適合具有較低相聯性的
快取記憶體。
以下的實施方式所敘述的快取記憶體可以在處理器的運作期間被動態地配置以將其相聯性變更為高於其一般模式的相聯性及/或變更為小於其一般的相聯性。
請參閱圖1,圖1繪示了一個快取記憶體102。快取記憶體102從一個輸入端接收了一個記憶體位址(memory address,MA)104而從另一個輸入端接收了一個模式(mode)108。模式108具體指示了快取記憶體102是否要用在「一般」模式、「大量」模式或是「少量」模式下運作。所述的各種模式將於後面詳細敘述。
記憶體位址104被分為三個部分,每一個部分具有多個位元(bit):標籤(tag)112、索引(index)114以及偏移(offset)116。偏移116指出移入選定的快取線的一個偏移位元組。標籤112以及索引114的用途將在後文中詳細敘述。為了方便描述,圖1中舉例了一個大小為36個位元且將36個位元分為標籤112=MA[35:16]、索引114=MA[15:6]以及偏移116=MA[5:0]的記憶體位址104。然而,要特別注意的是,快取記憶體102的相聯性的動態變更性,也就是在一般模式、大量模式以及少量模式之間的轉換(transition),在快取記憶體被執行時快取記憶體可接收一個具有不同數量位元的記憶體位址104且在記憶體位址104的標籤112、索引114以及偏移116中可為不同數量的位元。偏移116中的位元數量具體指的是快取線的大小(例如:64個位元組),索引114則根據模式108而從快取記憶體102中選出一或兩組,如後文所述。
快取記憶體102被設計為由多個路(way)以及多個組相乘。為了方便敘述,例如圖1中所示的快取記憶體102具有2048個組以及16個路。然而,需要特別注意的是,在此描述的動態相聯性變更性可在具有不同組數與不同路數的快取記憶體上執行。每一組/路的組合可識別出儲存有快取線的快取記憶體102的項目。每個項目包括用來儲存快取線資料的存儲器(storage),也包括用來儲存快取線狀態(例如:MESI狀態)以及快取線標籤106的存儲器。標籤106以及快取線所在組數的組合具體指出了快取線的記憶體位址。在圖1的實施例中,標籤106相當於記憶體位址104的標籤112的大小而為20位元。較佳的情況,快取記憶體102包括多個獨立的記憶體陣列以儲存快取線資料、標籤106以及置換資訊。
在以下更加詳細的描述中,在大量模式的查找中索引114是用來選出快取記憶體102中的兩個不同組,記憶體位址104的完整標籤112被用來與所選出的兩個組的每一路的完整標籤106來對照以偵測是否命中。而索引114以及標籤112的最低有效位元(least significant bit,LSB)在一般模式以及少量模式中被用來在快取記憶體102當中選出一個組,記憶體位址104的標籤112除了最低有效位元之外的位元都被用來與所選出組的每一路的標籤106除了最低有效位元之外的位元對照以偵測是否命中。當操作於大量模式的時候,這種做法把有效相聯性加倍且把快取記憶體102的路數量減半。反過來說,當操作於少量模式的時候,基於標籤112的一個或多個較低位元,快取記憶體102將快取線可被配置
的路限制於所有路的子組(例如:由16而為8、為4、為2或為1),而有效相聯性也減少了用來限制路的子組的標籤112的位元數量的二倍。為了從大量模式中轉換出來,寫回(writeback)與無效(invalidate)操作必須於某些快取線執行,如後所述。然而,相較於為了讓某些編碼串流(code stream)操作於大量模式所能帶來的好處,寫回與無效操作所帶來的壞處可以被容忍。轉換至少量模式或從少量模式轉換出來不需要寫回與無效操作。
請參閱圖2,圖2所示為圖1的快取記憶體102當操作於一般模式之下的方塊圖。更具體來說,輸入的模式108具體指示一個指向於一般模式的值。在一般模式之下,快取記憶體102選取出一個單一的組,在藉由索引114所選取出的組中,把每一路的項目標籤106除了最低有效位元之外的所有位元與記憶體位址104的標籤112除了最低有效位元之外的所有位元做對照,若未命中則分配到所選取出的組的任一路之中,在後圖3中有更加詳細的描述。以圖2為例子,在一般模式之下,快取記憶體102操作如一個2048組乘以16路的相聯性快取記憶體。
請參閱圖3,圖3所示為圖1的快取記憶體102操作於一般模式之下的流程圖。流程起始於方塊302。
在方塊302中,當輸入的模式108指向一般模式的時候,快取記憶體102接收來自於處理核心的載入請求。載入請求包含記憶體位址104。流程接著進行至方塊304。
在方塊304中,快取記憶體102使用與索引114
相連的標籤112的最低有效位元,以圖1為例子來說的話就是MA[16:6],來選取出一個單一的組,如圖3中的組J。流程接著進行至方塊306。
在方塊306中,以所選取出的組J的所有16路的每一項目來說,快取記憶體102把記憶體位址104的標籤112除了最低有效位元之外的所有位元對照於項目標籤106除了最低有效位元之外的所有位元。所述的對照也一併確認以檢視該項目是否有效。流程接著進行至方塊308。
在方塊308中,快取記憶體102判斷方塊306所執行的對照是否產生有效的匹配。若判斷結果為是,流程接著進行至方塊312,若判斷結果為否,則流程接著進行至方塊314。
在方塊312中,快取記憶體102指向於命中。流程結束於方塊312。
在方塊314中,快取記憶體102分配至所選取的組J的一個項目。在較佳的情況下,快取記憶體102分配至組J的一路中的一個項目,該項目是最久未存取(LRU)或是擬為最久未存取(Pseudo-LRU)的,然而也可以使用其它的置換演算法,例如隨機或迴圈式的。流程接著進行至方塊314。
請參閱圖4,圖4所示為圖1的快取記憶體102操作於大量模式之下的方塊圖。更具體來說,輸入的模式108具體指示一個指向大量模式的值。在大量模式之下,快取記憶體102選取出兩個組,把藉由索引114所選取出的組中的每一路的項目標籤106對照於記憶體位址104的標籤102,若
未命中則分配至所選取的兩個組的任一個的任一路之中,在後圖5中有更加詳細的描述。如此一來有效地把路的數量加倍並把快取記憶體102的組的數量減半。以圖4為例子,在大量模式之下,快取記憶體102操作如一個1024組乘以32路的組相聯性快取記憶體。
請參閱圖5,圖5所示為圖1的快取記憶體102操作在大量模式之下的流程圖。流程始於方塊502。
在方塊502中,當輸入的模式108指向大量模式的時候,快取記憶體102接收來自於處理核心的載入請求。載入請求包含一個記憶體位址104。流程接著進行至方塊504。
在方塊504中,快取記憶體102選取出兩個組,如圖5所示的組J以及組K。組J是用相連於標籤112的二進位的0所選出,以圖1為例子來說的話就是相連於MA[15:6]的二進位的0。組K是用相連於標籤112的二進位的1所選出,以圖1為例子來說的話就是相連於MA[15:6]的二進位的1。流程接著進行至方塊506。
在方塊506中,以被選取出的組K以及組J的所有32路的每一項目來說,快取記憶體102把記憶體位址104的標籤102對照於項目標籤106。所述的對照一併確認以檢視該項目是否有效。流程接著進行至判斷方塊508。
在判斷方塊508中,快取記憶體102判斷是否方塊506所執行的對照產生有效的匹配。若判斷結果為是,流程接著進行至方塊512,否若判斷結果為否,則流程接著進行至方塊514。
在方塊512中,快取記憶體102指向於命中。流程結束於方塊512。
在方塊514中,快取記憶體102由組J以及組K中選取出一個來做為一個置換組。在一個實施例中,快取記憶體102基於記憶體位址104的被選取位元的散列(hash)至一個單一位元來選取出置換組以至於若所述的散列產生的是二進位的0則選出組J且若所述的散列產生的是二進位的1則選出組K,一般用以在偽隨機方式(pseudo-random fashion)選取置換組。在其它實施例中,快取記憶體102使用每一個組所儲存的置換資訊中的額外一個或是更多的位元選取出的置換組,該置換資訊是除了例如用來選取組的最久未存取(LRU)的路的儲存資訊。舉例來說,一個額外的位元可指出組J或組K曾是最久未存取(LRU)的。流程接著進行至方塊516。
在方塊516中,快取記憶體102分配到置換組的一個項目。在較佳的情況下,快取記憶體根據最久未存取(LRU)或是擬為最久未存取(pseudo-LRU)的配置方案來102分配到置換組的一個項目,然而也可以是運用其它的置換演算法,例如隨機或迴圈式。流程結束於方塊516。
請參閱圖6,圖6所示為圖1的快取記憶體102被指示由大量模式之中轉換出來的操作流程圖。流程起始於方塊602。
在方塊602中,快取記憶體102被指示由大量模式之中轉換出來,例如,模式108從大量模式中轉換到一般模式或是少量模式。流程接著進行至方塊604。
在方塊604中,快取記憶體102通過搜尋快取記憶體102的每個組(亦即:每個組數),以及組中的每個項目,把標籤106的最低有效位元與組數的最高有效位元做對照。若對照後發現未匹配,則快取記憶體102將該項目無效。然而,在無效該項目之前,若快取線的狀態為髒(dirty),也就是被更改過,則快取記憶體102把快取線的資料寫回至記憶體。上述做法是為了維持快取記憶體102的一致性。流程結束於方塊604。
運行在大量模式下的潛在風險是可能比運行在非大量模式下要消耗更多的電力,因為必須比較兩組的標籤。然而,某些使用者在某些系統中願意以更多的電力消耗來換取更好的快取效能。除此之外,在多核心處理器中,若核心未全數運行,則額外的標籤陣列存取(例如:在圖11實施例中的區域(bank)存取)是可被接受的,因為快取記憶體102可以是被設計為支援全核心存取快取記憶體102的需求。
請參閱圖7,圖7所示為圖1的快取記憶體102用於操作在少量模式之下來做為直接映射(direct-mapped)快取記憶體的方塊圖。更具體來說,輸入的模式108具體指出一個指向於少量直接映射模式的值。在少量模式之下,快取記憶體102選取一個單一的組,把藉由索引114所選取出的組中的每一路的項目標籤106除了最低有效位元之外的所有位元對照於記憶體位址104的標籤112除了最低有效位元之外的所有位元,類似於一般模式,然而,在少量直接映射模式之下,若未命中則快取記憶體102分配至所選取組的唯一
一路。此一路是通過記憶體位址104中被預先決定的位元來指定。在較佳的情況下,被預先決定的位元是標籤112的下一個最低有效的log2N個位元,N是快取記憶體102的路數。也就是說,被預先決定的位元是標籤112中除了最低有效位元外最低有效的log2N個位元,以圖1為例子的話就是MA[20:17],後圖8會有更詳細的敘述。在圖7的例子中,在少量直接映射模式之下,快取記憶體102操作如同一個32768組的直接映射快取記憶體。
請參閱圖8,圖8所示為圖1的快取記憶體102用以操作在少量直接映射模式下的流程圖。流程起始於方塊802。
在方塊802中,當輸入的模式108指向於少量直接映射模式的時候,快取記憶體102接收來自於處理核心的載入請求。載入請求包含了一個記憶體位址104。流程接著進行至方塊804。
在方塊804中,快取記憶體102使用相連於索引114的標籤112的最低有效位元,以圖1為例子的話就是MA[16:6],選取出一個單一的組,如圖8的組J。流程接著進行至方塊806。
在方塊806中,對所選取的組J的全部16路的每個項目,快取記憶體102把記憶體位址104的標籤112除了最低有效位元之外的所有位元對照於項目標籤106除了最低有效位元之外的所有位元。所述的對照操作一併確認以檢視項目是否為有效。流程接著進行至方塊808。
在方塊808中,快取記憶體102判斷在方塊806中所執行的對照操作結果是否為有效匹配。若判斷結果為是,流程接著進行至方塊812,若判斷結果為否,則流程接著進行至814。
在方塊812中,快取記憶體102指向於命中。流程結束於方塊812。
在方塊814中,快取記憶體102分配至路的項目,此路是通過所選取的組J的記憶體位址MA[20:17]來選定。以這種方式,當用在少量映射模式之下,快取記憶體102操作如一個直接映射快取記憶體。流程結束於方塊814。
如前面所提到的,有好處的是,轉換入或是從少量模式轉換出並不需要寫回以及無效操作。然而,需要注意的是,在轉換後可能會有短時間的位元置換(例如:最久未存取(LRU)或是擬為最久未存取(Pseudo-LRU)的位元)的小缺點。舉例來說,當從少量模式轉換到一般模式的時候,置換的位元或許不會有預期中的一般模式最久未存取的值。
請參閱圖9,圖9所示為圖1的快取記憶體102用以在少量下模式之下操作如一個8路組相聯的快取記憶體的方塊圖。更具體來說,輸入的模式108具體指出一個指向於少量8路模式的值。在少量8路模式之下,快取記憶體102選取一個單一個組,把通過索引114而選取出的組中每一路的項目標籤106除了最低有效位元以外的所有位元對照於記憶體位址104的標籤112除了最低有效位元以外的所有位元,就類似於一般模式,然而,在少量8路模式之下,在未
命中時快取記憶體102分配至所選取的組的16路中的任一個子組(subset)。所述的子組是通過記憶體位址104中被預先決定的位元而被指定為所選取組的8個奇數的路或是所選取組的8個偶數的路。在一個實施例中,被決定的位元是標籤112的下一個最低有效位元。也就是說,被決定的位元是標籤112除了最低有效位元以外最低有效的,以圖1的實施例來說就是相當於記憶體位址MA[17],在後圖10會有更詳細的敘述。在其它的實施例中,被預先決定的位元是用其它的方式來產生。舉例來說,被預先決定的位元可以是通過標籤112中多數個位元的布林(Boolean)邏輯閘中的互斥閘(XOR)來產生(在較佳的情況下排除了用來選取出組的標籤112的位元,例如:記憶體位址MA[16])。這樣子的做法特別有助於在快取線不正常別名化(pathologically aliasing)至同樣的組,如後面所述。互斥閘外的其它函數也可被用來將標籤112的多個位元凝聚成一個單一位元。在圖9的例子中,快取記憶體102在少量8路模式之下操作如一個4096組乘以8路的組相聯快取記憶體。
請參閱圖10,圖10所示為圖1的快取記憶體102用以操作在少量8路模式之下的流程圖。流程起始於方塊1002。
在方塊1002中,當輸入的模式108指向於少量8路模式的時候,快取記憶體102接收來自於處理核心的載入請求。載入請求包含一個記憶體位址104。流程接著進行至方塊1004。
在方塊1004中,快取記憶體102使用相連於索引114的標籤112的最低有效位元,以圖1為例子來說就是記憶體位址MA[16:6],選取出一個單一的組,如圖10中的組J。流程接著進行至方塊1006。
在方塊1006中,快取記憶體102對所選取的組J的全部16路中的每個項目,把記憶體位址104的標籤112除了最低有效位元之外的所有位元對照於項目標籤106除了最低有效位元之外的所有位元。所述的對照一併確認以檢視該項目是否有效。流程接著進行至方塊1008。
在方塊1008中,快取記憶體102判斷在方塊1006中所執行的對照結果是否是有效的匹配。若判斷結果為是,流程接著進行至方塊1012,若判斷結果為否,則流程接著進行至方塊1013。
在方塊1012中,快取記憶體102指向於命中。流程結束於方塊1012。
在方塊1013中,快取記憶體102檢查記憶體位址中的位元MA[17]。若位元MA[17]是二進位的1,流程接著進行至方塊1016,否則,若位元MA[17]是二進位的0,則流程接著進行至方塊1014。如圖9所描述的,在其它實施例中,在判斷方塊1013中檢查的位元是標籤112中不同於位元MA[17]的位元(亦即:標籤112的下一個最低有效位元),或是通過標籤112的多個位元的函數來產生。
在方塊1014中,快取記憶體102分配至所選取組中的任一偶數路的一個項目。在較佳的情況下,快取記憶
體102是根據一個最久未存取(LRU)或是擬為最久未存取(Pseudo-LRU)的置換方案來分配至所選取的偶數路的一個項目,但也可使用其它的置換演算法,例如隨機的或是迴圈式的。流程結束於方塊1014。
在方塊1016中,快取記憶體102分配至所選取組的任一個奇數路的一個項目。在較佳的情況下,快取記憶體102根據最久未存取(LRU)或是擬為最久未存取(Pseudo-LRU)的置換方案來分配至所選取的奇數路的一個項目,但也可使用其它的置換演算法,例如隨機的或是迴圈式的。流程結束於方塊1016。
需要注意的是,雖然已經敘述了兩個少量模式的實施例,例如:少量直接映射模式以及少量8路模式,這都是用來描述少量模式,但並不用以限制於這兩個實施例。關於圖1所描述的實施例,舉例來說,一個少量4路模式也可被配置,其中的記憶體位址MA[18:17]可被用來選擇4個路中的4個子組,每個子組可以用來做置換,且一個少量2路模式也可被配置,其中的記憶體位址MA[19:17]可被用來選擇2個路中的8個子組,每個子組可以用來做置換。在其它實施例中,如前面所提到的,標籤112的其它位元也可以被用來選取路的子組以置換,而這些位元可被輸入至一個函數(例如:互斥閘)以產生用來選取用以置換的路的子組的位元。
少量模式可以替某些不善於利用最久未存取(LRU)或是擬為最久未存取(Pseudo-LRU)的置換措施的不正常程式帶來好處。舉例來說,假設這個程式正運行通過記憶
體且具有不正常的別名化效應以至於請求載入時在快取記憶體102中經常未命中且驅走程式所需要的真正的下一正常線。然而,當快取記憶體102的有效相聯性由於轉換至少量模式而減少,可以避免上述的問題。
舉例來說,所述的程式可能在存取記憶體中的大量資料結構,快取記憶體102的組當中較低的一半別名化至當中較高的一半。然而,較低的一半跟較高的一半具有不同的使用模式而使得最久未存取置換無效。通過少量8路模式而減少快取記憶體102的有效相聯性,快取記憶體102內的一半的資料結構被有效地與另外一半分隔。這種不正常類型的例子可以用程式的離線分析來判斷,而用來對快取記憶體102做重新配置,如後圖14A-14C中所敘述。
以另一個例子來說,假設所述的程式存取兩個資料組,因為除了在標籤112的更高位位元有所不同之外,兩者是同一個位址,因而別名化至快取記憶體102的同個組。在這個例子中,把一個資料組的置換措施與另外一個分隔開來可能會帶來好處。而這可以通過使用標籤112的位元來達成,所述的標籤112的位元相當於所述的兩個資料組不同的標籤112的更高位位元,並使用所述更高位位元產生用來限制要被選取的組的子組以供置換的位元。這種做法是可以被達成的,舉例來說,使用如圖15所述的方法,通過重複選定標籤112的位址一直到達成增加快取記憶體102的效率,或者是如圖14A-14C中所述藉由程式的離線分析來達成。
請參閱圖11,圖11所示為圖1的快取記憶體102
更詳細實施例的方塊圖。特別的是,圖11的實施例是一個雙連接埠(dual-ported)的區域快取記憶體102。快取記憶體102包含4個區域1106,標示為區域0 1106-0,區域1 1106-1,區域2 1106-2以及區域3 1106-3。每個區域1106具有可儲存四分之一的快取記憶體102的組的容量,也就是512組。在圖11的實施例中,區域0 1106-0具有始於0且4個一數的組,區域1 1106-1具有始於1且4個一數的組,區域2 1106-2具有始於2且4個一數的組,區域3 1106-3具有始於3且4個一數的組,如圖所示。
快取記憶體102還包含兩個連接埠1104,標示為連接埠A 1104A以及連接埠B 1104-B。每個連接埠1104耦接於每個區域1106。每個連接埠1104接收輸入的模式108。
快取記憶體102還包含兩個標籤通道1102,標示為標籤通道A 1102A以及標籤通道B 1102B。標籤通道A 1102A通過連接埠A 1104A來存取區域1106,而標籤通道B 1102B通過連接埠B 1104B來存取區域1106。每個標籤通道1102接收模式108以做為輸入。區域1106的選取或是致能以在不同模式之下選組的詳細敘述於圖12,快取記憶體102在不同模式之下的命中產生則詳細描述於圖13。在較佳的情況下,標籤通道1102包含已描述於此的多個實施例的執行選一組(或是在大量模式之下選兩組)的選取邏輯(圖未示);已描述於此的多個實施例的把記憶體位址的特定位元對照於儲存在陣列中的標籤的特定位元的對照邏輯(圖未示);以及已描述於此的多個實施例的分配至陣列的分配邏輯(圖未示)。除此之
外,在較佳的情況下,標籤通道1102包含對標籤位元執行函數的邏輯,標籤位元是通過圖16-19的實施例的分配模式輸入而被指定。在較佳的情況下,標籤通道1102包含多數個階,每個階執行不同的操作以實現不同實施例在此描述的選組、標籤比較、路分配以及路子組判斷。
只要不選擇同一個區域1106的話,連接埠A 1104A以及連接埠B 1104B可以被同時動作。這麼一來從四個單連接埠的區域1106有效提供了一個雙連接埠的快取記憶體102。在較佳的情況下,快取記憶體102的判斷邏輯會試圖從存取了非衝突區域1106的兩個標籤通道1102來選取判斷請求,特別是當快取記憶體102處在大量模式之下的時候。
請參閱圖12A以及12B,圖12所示為圖11的高速換存記憶體102的區域致能邏輯1200。請參閱圖12A,區域致能邏輯1200包含區域致能邏輯單元1200A,其從標籤通道A 1102A接收一個大量模式提示1209以及一個記憶體位址MA 104-A且對應產生區域致能提示(ENxA,x表示為區域號碼)1212-xA給連接埠A 1104A。在快取記憶體102操作於大量模式之下的時候,大量模式提示1209的值為真,反之則為否,其是由接收了模式提示108的邏輯單元(圖未示)所產生。區域致能邏輯1200還包含了區域致能邏輯單元1200B,其從標籤通道B 1102B接收一個大量模式提示1209以及一個記憶體位址MA 104-B且對應產生區域致能提示(ENxB,x表示為區域號碼)1212-xB給連接埠B 1104B。連接埠A的區域致能邏輯單元1200A以及連接埠B的區域致能邏輯單元1200B除
了輸入以及輸出之外,已詳細描述如上。
區域致能邏輯單元1200A包含了接收記憶體位址MA[7]104-A的第一反閘1204-0、接收記憶體位址MA[6]104-A的的第二反閘1208-0、接收反閘1204-0的輸出以及大量模式提示1209的第一或閘1202-0以及接收第一或閘1202-0以及第二反閘1208-0的輸出以產生區域致能提示EN0A 1212-0A的第一及閘1206-0,區域致能提示EN0A 1212-0A用來給連接埠A 1104A致能區域0 1106-0。
區域致能邏輯單元1200A還包含了接收記憶體位址MA[7]104-A的第三反閘1204-1、接收了第三反閘1204-0的輸出以及大量模式提示1209的第二或閘1202-1以及接收了第二或閘1202-1的輸出以及記憶體位址MA[6]104-A以產生區域致能提示EN1A 1212-1A的第二及閘1206-1,區域致能提示EN1A 1212-1A用來給連接埠A 1104A致能區域1 1106-1。
區域致能邏輯單元1200A還包含了接收記憶體位址MA[6]104-A的第四反閘1208-2、接收記憶體位址MA[7]104-A以及大量模式提示1209的第三或閘1202-2以及接收了第三或閘1202-2以及第四反閘1208-2的輸出以產生區域致能提示EN2A 1212-2A的第三及閘1206-2,區域致能提示EN2A 1212-2A用來給連接埠A 1104A致能區域2 1106-2。
區域致能邏輯單元1200A還包含了接收記憶體位址MA[7]104-A以及大量模式提示1209的第四或閘1202-3以及接收了第四或閘1202-3的輸出以及記憶體位址MA[6]104-A以產生區域致能提示EN3A 1212-3A的第四及閘
1206-3,區域致能提示EN3A 1212-3A用來給連接埠A 1104A致能區域3 1106-3。
請參閱圖12B,區域致能邏輯1200包含了第一或閘1214-0,其接收來自於連接埠A的區域致能邏輯單元1200A的區域致能提示EN0A 1212-0A以及來自於連接埠B的區域致能邏輯單元1200B的區域致能提示EN0B 1212-0B以產生區域致能提示EN0 1216-0,區域致能提示EN0 1216-0提供至區域0 1106-0。區域致能邏輯1200還包含了第二或閘1214-1,其接收來自於連接埠A的區域致能邏輯單元1200A的區域致能提示EN1A 1212-1A以及來自於連接埠B的區域致能邏輯單元1200B的區域致能提示EN1B 1212-1B以產生區域致能提示EN1 1216-1,區域致能提示EN1 1216-1提供至區域1 1106-1。區域致能邏輯1200還包含了第三或閘1214-2,其接收來自於連接埠A的區域致能邏輯單元1200A的區域致能提示EN2A 1212-2A以及來自於連接埠B的區域致能邏輯單元1200B的區域致能提示EN2B 1212-2B以產生區域致能提示EN2 1216-2,區域致能提示EN2 1216-2提供至區域2 1106-2。區域致能邏輯1200還包含了第四或閘1214-3,其接收來自於連接埠A的區域致能邏輯單元1200A的區域致能提示EN3A 1212-3A以及來自於連接埠B的區域致能邏輯單元1200B的區域致能提示EN3B 1212-3B以產生區域致能提示EN3 1216-3,區域致能提示EN3 1216-3提供至區域3 1106-3。
請參閱圖13,圖13所示為圖11的快取記憶體102的命中產生邏輯1300。所示的儲存單元存有圖1的快取
記憶體102的項目標籤106。在圖13的實施例中,儲存單元存了一個20位元的標籤106。所示的另一個儲存單元接收連接埠的有效提示1302。標籤106的儲存單元接收記憶體位址MA[35:16]104,而且當分配訊號1301為真的時候,記憶體位址MA[35:16]104的值會被寫入至標籤106而且有效提示1302會被更新以用來指示項目為有效。反之,當移除分配訊號1303為真的時候,有效提示1302會被更新以用來指示項目為無效。如圖13所示,分配訊號1301以及移除分配訊號1303專屬於特定的組以及路,即圖13中的組J以及路0。然而,需要注意的是,在快取記憶體102的每一組以及路中皆有分配訊號1301以及移除分配訊號1303。
命中產生邏輯1300包含了比較器1304,其接收標籤106以及記憶體位址MA[35:16]104。比較器1304也接收了圖12中的大量模式提示1209。當大量模式提示1209為真,比較器1304把標籤106的全部20位元對照於記憶體位址MA[35:16]而產生輸出指示匹配是否發生,例如圖5中的方塊506。然而,當大量模式提示1209為假,比較器1304只把標籤106較高的19位元對照於記憶體位址MA[35:17]而產生輸出,分別是例如圖3中的方塊306、圖8中的方塊806以及圖10中的方塊1006。及閘1306接收比較器1304的輸出以及有效位元1302而產生組J路0的命中訊號1308-J0用來指向於是否有命中發生在組J路0。如圖13所示,組J路0的命中訊號1308-J0專屬於特定的組以及路,然而,需要注意的是,在快取記憶體102的每一組以及路中皆有組路的命中訊
號1308。
命中產生邏輯1300還包含了第一或閘1312-J,其接收組J路x的命中訊號1308-Jx用於組J的每一路,x表示為路的號碼,也就是用於16個不同的路,其在圖13中標示為0到15。或閘1312-J產生組J的命中訊號1314-J。
命中產生邏輯1300還包含了第二或閘1312-K,其接收組K路x的命中訊號1308-Kx用於組K的16路的每一路。組K在大量模式中是第二個被選取的組,例如:根據圖5中的方塊504,組是通過1:MA[15:6]而選出。或閘1312-K產生組K的命中訊號1314-K。
命中產生邏輯1300還包含了或閘1316,其接收組J命中訊號1314-J以及組K的命中訊號1314-K以產生大量模式命中訊號1318。命中產生邏輯1300還包含了多工器1322,其接收組J的命中訊號1314-J以及大量模式命中訊號1318,若大量模式命中訊號1209為假則選擇命中訊號1314-J反之若命中訊號1209為真則選擇命中訊號1318以做為輸出命中訊號1324,命中訊號1324指出快取記憶體102是否有命中發生,分別是例如圖3中的方塊312、圖5中的方塊512、圖8中的方塊812以及圖10中的方塊1012。
請參閱圖14,圖14所示為系統的操作流程圖,此系統中的處理器包含了圖1中的快取記憶體102。流程起始於方塊1402。
在方塊1402中,系統偵測運行中的新的進程或是程式。在其中一個實施例中,運行在處理器100上的系統
軟體偵測此新的進程,例如:裝置的驅動程式監測運行中的系統進程表。系統軟體可提供資訊至處理器而該資訊可被處理器用來偵測程式進入的每個不同時程,例如後圖14B所描述的,且系統軟體可具體指出每個時程的不同模式。依據指令,處理器更新模式108且若初始時程識別字存在的話,將初始時程識別字(圖14中的組件1412)載入至時程偵測器(圖14B中的組件1414)。在其中一個實施例中,處理器本身偵測新的進程,例如:處理器偵測進程前後識別字(process context identifier,PCID)中的變換,例如:有一個新的值被載入到x86指令組結構CR3寄存器的PCID。在一個實施例中,處理器偵測目前運行中的程式轉換至新的時程而不是程式的變換。流程接著進行至方塊1404。
在方塊1404中,快取記憶體102被轉換,例如:經由模式提示108,轉換至預先決定的新模式以做為程式或是時程的最佳執行模式,基於方塊1402所偵測的進程離線分析。在一個實施例中,處理器的微指令(microcode)改變快取記憶體102的模式108。若快取記憶體102轉換離開大量模式,所有的記憶體操作都會停止,並進行如圖6中所描述的操作,接著記憶體操作將恢復。在一個實施例中,當系統軟體偵測到新的進程運行(方塊1402),系統軟體會提供新的模式。在一個實施例中,處理器100從記憶體(例如:處理器100的局部封閉記憶體(local private memory)或系統記憶體)取用新的模式以回應於偵測PCID的變換或是程式時程轉換,在較佳的情況下,處理器100從使用PCID或是時程識別字從一清
單中來識別新的模式。模式的資訊可包含不同的模式以用於程式的不同時程而且是經由離線分析來決定。流程結束於方塊1404。
請參照圖14B,圖14所示為包含了如圖1中快取記憶體102的處理器的部件方塊圖。處理器包含了圖1的快取記憶體102。處理器包含了時程偵測器1414,其偵測已經進入新時程的運行中的程式。時程偵測器1414基於時程辨識碼1412而做出上述的偵測,例如經由如圖14A所描述的裝置驅動程式。時程辨識碼1412可包含程式指令的指令指示器(或是程式計數器)值。所述的指令可以是一個子程式調用指令,在這種情況下時程辨識碼1412還可包含調用指令的目標指令的指令指示器值。更進一步來說,時程辨識碼1412還可包含一或多個調用指令的參數值,例如:返回位址、寄存器值及/或堆疊值。時程偵測器的其中一個例子,如西元2013年10月10日申請的美國專利申請號14/050,687以及14/050,757所教示的指紋感測單元,其所有功效都可在此達成。處理器還包含了模式更新單元1416,其被時程偵測器1414通知有一個新的時程已被偵測且接收新時程的識別字。模式更新單元1416還接收模式資訊,例如:來自於如圖14A所述的裝置驅動程式。模式更新單元1416更新快取記憶體102中的模式108,如圖14C中所描述的。在一個實施例中,模式更新單元1416包含了涉及於時程偵測器1414的處理器的微指令。在另一個實施例中,模式更新單元1416包含了狀態機,其從時程偵測器1414接收其偵測了一個新的時程的一個指示
以及新時程的識別字。時程分析會在後圖22有更詳細的描述。
請參閱圖14C,圖14C所示為圖14B中的處理器操作流程圖,處理器包含了圖1的快取記憶體102。流程起始於方塊1422。
在方塊1422中,圖14B中的時程偵測器1414偵測運行中的程式已經進入新的時程。回應於偵測到的新時程,時程偵測器1414通知圖14B中的模式更新單元1416。流程接著進行至方塊1424。
在方塊1424中,模式更新單元1416在模式資訊1418(例如:從圖14A的方塊1404中裝置驅動程式所接收到的資訊)當中查詢從時程偵測器1414所接收到的新時程的識別字並且以查詢到的模式來更新快取記憶體102的模式108。除此之外,在必要時,模式更新單元1416以新時程識別字1412來更新時程偵測器1414。在一個實施例中,下一個要被查詢的時程取決於目前的時程,因此,下一個要被載入到時程偵測器1414的時程識別字1412會取決於目前的時程而有所不同。流程接著進行至方塊1426。
在方塊1426中,處理器執行運行中的程式並且產生記憶體存取指令給快取記憶體102,接著快取記憶體102就會根據如方塊1424中更新後的模式108來操作。流程結束於方塊1426。
請參照圖15,圖15所示為包含了圖1的快取記憶體102的處理器的系統操作流程圖。流程起始於方塊1502。
在方塊1502中,處理器偵測快取記憶體102在
目前的模式之下無效率地執行中。舉例來說,執行計數器指出快取記憶體102目前的未命中率超過了臨界值。流程接著進行至方塊1504。
在方塊1504中,快取記憶體102轉換至一個不同於目前模式的新模式。在其中一個實施例中,處理器的微指令改變了快取記憶體102的模式108。若是快取記憶體102從大量模式中轉換出來,所有的記憶體操作都會停止,進行如圖6所述的操作,接著記憶體操作會恢復。在較佳的情況下,處理器(例如:微指令)持續追蹤快取記憶體102模式的這種自動變化以避免模式被反復推移,例如在程式及/或資料組不論任何模式皆為高未命中率的情況。在一個實施例中,所有的模式(正常、大量、不同的各種少量模式)若有需要都會被使用。在其它實施例中,這些模式的子組會被使用。例如:因為在一般模式以及任何一個少量模式之間或是在其中一個少量模式以及另外的少量模式之間沒有與轉換有關聯的寫回-無效損失,子組可以被限制在除了大量模式之外的這些模式當中。不同的少量模式應該被理解是包含了不只有被限制在關於路的子組進入的快取線如何分配的不同少量模式,還包含了更改標籤的一個或多個位元來選擇以限制子組的不同少量模式,例如圖9所有少量8路模式中的記憶體位址MA[17]、互斥或閘XOR(記憶體位址MA[26]、MA[23]或MA[22]。流程結束於方塊1504。
請參閱圖16,圖16所示為快取記憶體1602的方塊圖。快取記憶體1602類似於圖1的快取記憶體102。圖16
中的快取記憶體1602的好處在於當其操作在不同分配模式的時候可以動態配置,具體是由分配模式輸入1608來被指定。分配模式1608選擇了記憶體位址104的標籤的一或多個位元的不同函數而判斷出經由記憶體位址104的索引選取出快取記憶體1602會分配進入的組的路的一個子組,後面將做更詳細的描述。
跟圖1的實施例類似,圖16的實施例中,記憶體位址104區分為三個部分,標籤1612、索引1614以及偏移1616,但使用的位元有些許不同。為了描述上的方便,舉例一個記憶體位址104,其如圖16所示大小有36位元且區分為標籤1612=MA[35:17],索引1614=MA[16:6]以及偏移1616=MA[5:0]。然而,需要注意的是,基於位址標籤位元的動態路選擇的實施例可被執行於快取記憶體,其接收的記憶體位址104具有不同位元數且其標籤1612、索引1614以及偏移1616區分成不同位元數。圖1以及圖6所示例子的其它不同之處在於儲存於圖16的快取記憶體1602的項目中的標籤1606有19位元。
請參閱圖17,圖17所示為邏輯1702的方塊圖,其基於如圖16所示的標籤1612以及分配模式1608選取快取記憶體102分配至的路的子組。邏輯1702包含了多工器1736,其接收標籤1612的位元(例如19位元)並且選取一或多個標籤1612的位元,圖17中標示為N位元1738,N是1或更多,取決於分配模式1608。邏輯1702還包含了組合邏輯1732,其根據分配模式1608來從多個函數中選出一個,接著
對多工器1736所輸出的N位元1738執行所選取的函數以產生一個向量,其指向於快取記憶體102的分配邏輯分配至的路的子組1734,如後圖18所述。
選取出的標籤1612的位元以及執行於所選取出的N位元1738的函數例子如下。舉一個例子來說,子組是經由記憶體位址104中事先決定的一個位元而指定選取組的8奇數路或是選取組的8偶數路。在一個例子當中,事先決定的位元是標籤1612的最低有效位元。在其它的例子當中,事先決定的位元是經由其它的方法來產生。舉例來說,事先決定的位元可以是由標籤1612的多個位元的布林邏輯的互斥閘(XOR)來產生。如前面所敘述的,在快取線不正常的別名化至同個組的時候,這可以帶來好處。除了互斥閘之外的函數也可以被用來將標籤112的多個位元彙集成一個單一位元,例如布林邏輯的或閘、及閘、反閘或是其之間的不同組合。舉第二個例子,標籤1612的二或更多位元被輪轉分配模式1608指定的位元以限制快取線可分配到全部路的一個子組,例如:從16到4,16到2或16到1,在這些情況下N位元1738分別是2,3或4。除此之外,在N位元1738是2,3或4的情況下,每一個N位元1738可以各自經由標籤1612中相同的或是不同的位元的布耳函數來產生。雖然指出了如上所述的多個實施例,需要注意的是,其它的實施例也可以用來計算由多工器1736選取的標籤1612的數量以及特定的位元,而其它實施例也可以用來計算執行於所選取的N位元1738來選取路1734的子組的特定函數1732。
請參閱圖18,圖18所示為圖16中的快取記憶體1602的操作流程圖。流程起始於方塊1802。
在方塊1802中,當分配模式1608指向於目前的分配模式,快取記憶體1602接收來自於處理核心的載入請求。載入請求包含圖16的記憶體位址104。流程接著進行至方塊1804。
在方塊1804中,快取記憶體1602利用索引1614而選取一個單一的組,如圖18所示的組J。流程接著進行至方塊1806。
在方塊1806中,對於所選取的組J的全部16路的每個項目,快取記憶體1602把記憶體位址104的標籤1612對照於項目標籤1606。所述的對照一併確認以檢視項目是否無效。流程接著進行至判斷方塊1808。
在方塊1808中,快取記憶體1602判斷在方塊1806所執行的對照結果是否為有效匹配。若判斷結果為是,流程接著進行至方塊1812,若判斷結果為否,則流程接著進行至方塊1814。
在方塊1814中,圖17的邏輯1702基於分配模式1608指定的函數1732以及標籤1612的一或更多位元決定在方塊1804所選取的組的路的子組1734。流程接著進行至方塊1816。
在方塊1816中,快取記憶體1602分配至所選取的組J中的任一個路,其是在方塊1814中決定的路的子組。在較佳的情況下,快取記憶體1602分配至子組中的一個路其
是最久未存取(LRU)或是擬為最久未存取(Pseudo-LRU)的,而也可採用其它的置換演算法,例如隨機或是迴圈式。流程結束於方塊1816。
請參閱圖19,圖19所示為包含處理器的系統操作流程圖,處理器包含如圖16的快取記憶體1602。流程起始於方塊1902。
在方塊1902中,當操作在目前分配模式1608的時候,處理器監測快取記憶體102的效率(例如:快取記憶體102在最近的預設期間內的命中率)。流程接著進行至判斷方塊1904。
在判斷方塊1904中,處理器判斷快取記憶體102的效率是否低於一臨界值。若判斷結果為是,流程接著進行至方塊1906,若判斷結果為否,則流程結束。在較佳的情況下,所述的臨界值是可程式化的,例如經由系統軟體。
在方塊1906中,處理器更新快取記憶體102的分配模式1608至一個新的分配模式,新的分配模式不同於目前分配模式。在一個實施例中,處理器的微指令更新快取記憶體102的分配模式1608。在較佳的情況下,處理器(例如是微指令)持續追蹤此一分配模式1608的更新以避免多個分配模式被反復推移,例如在程式及/或資料組不論任何模式皆為高未命中率的情況。在一個實施例中,所有的分配模式在必要時都會被使用。在其它的實施例中,分配模式的子組會被使用。好處在於,在不同的分配模式1608之間並沒有與轉換有關聯的寫回-無效的損失。流程從方塊1906回到方塊1902。
本發明描述的不同方式的快取記憶體的模式配置,例如快取記憶體大量模式,少量模式,經由標籤置換位元的函數的分配,可以是經由靜態配置及/或是動態配置。一般來說,靜態配置是矽前(pre-silicon)的。也就是說,設計人員以直觀的方式,較佳的情況下經由處理器設計模擬軟體的協助來決定較好的配置方式,也就是說,在一般的情況下可改善處理器的執行效能,特別是快取記憶體的效能的配置方式。處理器的執行效能改善是改善處理器執行程式時的速度(例如:減少每個指令執行的時鐘或是增加每個時鐘頻率中的執行指令)及/或減少耗電量。程式可作業系統,可執行的程式(例如:應用程式,實用程式,性能分析程式),動態連結軟體庫,等等。軟體模擬可用於執行程式的離線分析而其用於改善處理器的執行效能,如圖20至圖22中所述的例子,特別是關於快取記憶體的模式配置。在較佳的情況下,設計人員決定了一個在多種程式中較佳的靜態配置。設計人員接著把較佳的靜態配置納入矽制程的設計裡面。
反過來說,一般而言決定動態配置的分析是在後矽(post-silicon)的階段執行。也就是說,在處理器被製造以後,設計人員執行不同種類的離線分析來決定當以不同於靜態的配置(也就是按照預定的方式將配置製造於矽晶片中)來執行程式的時候處理器效能如何。後矽的測試更嚴格且更費力,針對配置陣列是以自動效能衰退的技術來執行,接著分析衰退的效能資料,例如是後圖23中所描述的。設計人員可以為眾多程式採用矽前測試的結果作為初始值來進行矽後測
試,例如:試著避免不是全域最大值的局部最大值。
無論是矽前或是矽後測試,以動態配置測試,較佳的配置方式可以被決定在每一個程式的基礎上,甚至是在每一個程式的時程基礎上。接著,當系統(例如是裝置驅動程式)偵測一個已知的程式運行在處理器上的時候(亦即:程式分析已被執行而已知較佳的配置方式),系統提供較佳的程式指定配置給處理器,且當運行中的時候,處理器以動態的方式來以程式指定配置而更新快取記憶體模式。在較佳的情況下,程式特定配置包含給程式的不同時程的不同配置,且處理器偵測時程變化並回應於時程特定配置來動態更新配置,例如圖22中所描述的。
關於一個被賦予的特徵組,程式時程是一個計算器程式的子組,其特徵在於多個特徵當中的一貫行為。舉例來說,假設相應的特徵是分支預測率以及快取記憶體命中率,程式的時程是程式運行時的行為的子組,其中分支預測率以及快取記憶體命中率是一致的。舉例來說,離線分析可以決定一個特定的資料壓縮程式有兩個時程:字詞建構時程以及字詞查詢時程。字詞建構時程具有相對低的分支預測率以及相對高的快取記憶體命中率,與建立一個共通於串流的較大組的串流子組一致,而字詞查詢時程具有相對高的分支預測率以及相對低的快取記憶體命中率,與在大於快取記憶體的大小的字詞查詢子串流一致。
在一個實施例中,離線分析是運用「預言快取記憶體」(oracle cache)的概念來實行,如其名稱的意思,具有
預測的功能。對於快取記憶體有限的空間,預言快取記憶體會知道應該及時放在快取記憶體中的最有用資料。其可被概念化為可以產生最高的命中率的快取記憶體的內容的每個週期或是每個指令的快照。
首先,產生程式執行的預言快取記憶體快照的一序列以及追蹤產生快照內的每一個快取線的分配的記憶體存取。接著,在程式的後續執行中,處理器使用快照中的資訊來繼續更新快取記憶體模式。
當以一個頻率週期或指令更新快取記憶體模式顯得不實用時,可以在更長的時間週期中檢視趨勢,例如:在全部程式或程式時程,以及例如:經由從程式或時程的序列取出平均值。
廣泛來說,預言快取記憶體的概念是在於,因為其會預先知道全部的記憶體存取,其能夠預先實行全部的記憶體存取。接著當程式執行時,預言快取記憶體預測在任何時間點要及時給快取記憶體的快取線的最佳組。舉例來說,在圖21中,預言快取記憶體將會預測短期間快取線(以實線描繪的上面第二條線)不應該在其最後一次存取後被存入。使用此種分析,可引申出快取記憶體模式的觀測。
請參閱圖20,圖20所示為用在程式以及程式時程的快取記憶體模式配置的產生流程圖。流程起始於方塊3402。
在方塊3402中,設計人員較佳的是以自動的方式運行一個程式並且記錄程式對快取記憶體如102,1602的
記憶體存取。在較佳的情況下,快取線的分配、命中以及離開都會被記錄下來。記憶體存取的記憶體位址以及時間(例如相對的時鐘週期)會被記錄下來。流程接著進行至方塊3404。
在方塊3404中,設計人員較佳的是以自動的方式的定期時間區間內分析在方塊3402中所記錄的資訊並且辨識出顯著的趨勢以將程式分為時程,例如後圖22中所描述的。舉例來說,在工作組的大小,平均的快取線使用期,平均的命中率的顯著的趨勢會被辨識出來。流程接著進行至方塊3406。
在方塊3406中,設計人員較佳的是以自動的方式基於在方塊3404中所實行的分析來創造要給不同程式時程的配置。舉例來說,配置可以是快取記憶體模式。在一個實施例中,決定配置的分析可包含類似像是後圖21至後圖23中所描述的分析。需要注意的是,某些程式或許沒有顯現出顯著的趨勢以至於容易分散成不同時程,在這種情況下單一的配置足夠用於全部的程式。流程結束於方塊3406。
請參閱圖21,圖21所示為記憶體存取圖表以及從此圖表中萃取資料的示意圖。圖表描繪了記憶體存取,經由點來標示,其中橫軸所示的時間是自變數,而縱軸所示的記憶體存取是因變數。水平線對應於指定的記憶體位址中個別的快取線。線的最左端表示快取線的分配,而線的最右端表示快取線從快取記憶體中離開。
圖表下面顯示,在8個不同的定期時間區間的總工作組的大小。時間區間可以例如是與後圖22中所描述的基
礎方塊轉換有關聯,且被用於決定每個程式時程的程式時程以及配置。
除此之外,可以觀測快取線趨勢在多久的時間是有用的,例如平均的快取線使用期。平均的快取線使用期是計算是以時程中全部的快取線的使用期(從分配到離開)的總和除以快取線的數量。這個資訊可以用來影響快取記憶體的操作模式。
若是預言快取記憶體限制存取線的數量以對應於被包含在快取記憶體中預期的組數以及路數,快取記憶體模式以及平均的使用期觀察準確率可以提升。其它的提示也可以被包含在內,例如快取線命中。
請參閱圖22,圖22所示為程式的時程分析流程圖。時程分析是離線分析的一種形式,其可被用來決定關於處理器的可能配置中的較佳配置,例如其快取記憶體或預取器(prefetcher)。流程起始於方塊3602。
在方塊3602中,運行中的期望經由處理器改善執行效率的程式被分析且分解而產生狀態圖。狀態圖的節點是程式的基礎區塊。基礎區塊在程式控制指令中是指令的序列(例如是分析、跳躍、呼叫、返回,等等)。狀態圖中的每個邊緣都是一個目標基礎區塊其中這些邊緣引領並且指出改變資訊,其可以成為一個時程辨識碼,如下所述的。時程辨識碼可包含一個控制轉換指令的指令指示器(instruction pointer,IP)或是程式計數器(program counter,PC),控制轉換指令的一個目標位址,及/或一個控制轉換指令的呼叫堆。呼叫堆可包
含返回位址以及呼叫的參數。程式時程是程式的一部分,其包含一或多個基礎區塊。流程繼續進行至方塊3604。
在方塊3604中,程式被工具化以分析關於處理器的可配置特徵例如是快取記憶體配置模式。這些特徵的例子包含了快取記憶體命中率、分支預測準確率、工作組大小、平均快取線使用期以及快取記憶體污染(例如被預取但是從未被使用的快取線的數量)。流程繼續進行至方塊3606。
在方塊3606中,程式是以給定的配置來執行,例如是快取記憶體及/或預取器的配置,且程式的時程經由觀測方塊3604中分析出的特徵中的穩定狀態行為來辨別。舉例來說,假設快取記憶體命中率是關注中的分析特徵,並假設快取記憶體命中率從97%變成40%。快取記憶體命中率的改變趨勢指出快取記憶體配置在改變前是有利於程式的而在改變後是不利於程式的。因此,快取記憶體命中率改變前的基礎區塊可被辨識為一個時程且快取記憶體命中率改變後的基礎區塊可被辨識為另一個時程。以另外一個例子來說,假設工作組的大小是關注的分析特徵,那麼在工作組大小中的明顯的大轉換可以指出一個在程式中時程改變的位置。流程繼續進行至方塊3608。
在方塊3608中,一旦時程被辨別,較好的配置或是配置值會被決定給每個時程。舉例來說,可以使用不同的離線分析技術,例如先前圖20以及圖21當中所描述的或是後圖23中所要描述的。流程繼續進行至方塊3612。
在方塊3612中,時程辨識碼與時程改變有關。
先前描述的基礎方塊轉換的狀態改變資訊也就是潛在的時程辨識碼,其中分析特性中的改變的發生以及在方塊3608中被決定給程式的較好的配置值被記錄,使該資訊被例如裝置驅動程式偵測到分析後的程式即將運行的時候可被提供給處理器。流程繼續進行至方塊3614。
在方塊3614中,在接收了與分析後的程式有關的資訊後,處理器如先前圖14A到圖14C所描述的以圖14B中的時程辨識碼1412載入時程偵測器1414。流程結束於方塊3614。
請參閱圖23,圖23所示為決定一個較好配置給處理器的可配置特性例如快取記憶體或預取器的蠻力(brute force)法流程圖。所述的方法採用「座標遞減」概念優化演算法。流程起始於方塊3702。
在方塊3702中,對每個程式或是程式時程來說,在識別理想上可改善處理器的執行效能的程式的清單中,此方法經由方塊3704至方塊3716而反復操作直到決定出一個較好的配置(例如:最佳的目前配置並未在一段相對長的時間內被改變)或是資源已過期(例如時間及/或計算資源)。流程繼續進行至方塊3704。
在方塊3704中,目前的最佳配置被設定為預定的配置,例如是一個快取記憶體的預定模式,其在一個實施例中就是處理器被製造時的模式。流程繼續進行至方塊3706。
在方塊3706中,對於每個配置參數來說,方塊3708至方塊3712被實施。配置參數的一個例子是一個單一配
置位元,例如,其可開啟或關閉一個功能。配置參數的另外一個例子是一個配置域,例如模式108。流程繼續進行至方塊3708。
在方塊3708當中,方塊3706的配置參數值的合理的組的每一個值,執行方塊3172至方塊3716。配置參數值的合理的組取決於配置參數的大小、參數被認為的重要性以及反復操作所需的資源量。舉例來說,在單一配置位元的例子中,兩個值都在合理的組中。舉例來說,此方法可以對具有16或是更少值的任意參數嘗試所有可能的值。然而,對於相對大的域來說,例如一個32位元的域,要嘗試全部2^32個值是不可行的。以這個例子來說,設計人員要提供數值的合理的組給這個方法。若設計人員沒有提供數值且可能性的數量很大,此方法可以一個合理數目的參數亂數值在方塊3712至方塊3176重複操作。流程繼續進行至方塊3712。
在方塊3712中,程式或是程式時程是以目前最佳配置來運行但是經由方塊3708中參數的下一個數值來調整,且執行效能會被量測。流程繼續進行至判斷方塊3714。
在判斷方塊3714中,該方法把在方塊3712中測得的執行效能對照於目前的最佳執行效能且若前者較佳,流程繼續進行至方塊3716,否則流程回到方塊3712去試目前參數的下一個數值一直到全部的合理數值都被試過,此時流程回到方塊3708而反復操作下一個配置參數一直到全部的配置參數都被試過,此時方法結束,產生目前的最佳配置套用於該程式或該程式時程。
在方塊3716中,該方法以方塊3712中所試的配置來更新目前的最佳配置。流程回到方塊3712去嘗試目前參數的下一個數值一直到全部的合理數值都被試過,此時流程回到方塊3708以反復操作下一個配置參數一直到全部的配置參數都被試過,在這個例子當中該方法結束,產生目前的最佳配置套用於該程式或該程式時程。
需要注意的是,使用類似於圖23的方法所找到的較佳配置,設計人員並不會或不需要理解為什麼該特定配置會產生較好的結果。
請參照圖24,圖24所示為處理器3900的方塊圖。處理器3900包含一個指令快取記憶體3922,其提供指令給一個指令解碼器3923,解碼器3923將該指令解碼並且把該解碼後的指令提供給一個發送器3924,發送器3924把該指令發送至執行單元3926以執行。在較佳的情況下,處理器3900的微架構是超標量而亂序(out-of-order)執行,也可考慮其它的實施例,如此一來指令發送器3924還包含了一個指令排程器以將指令的發送排程以超標量亂序的方式至多個執行單元3926。在較佳的情況下,處理器3900還包含了架構寄存器(圖未示),其包含處理器3900的架構狀態,還有非架構寄存器(圖未示)。在較佳的情況下,處理器3900還包含寄存器別名表(register alias table,RAT)(圖未示)以用來執行寄存器重新命名以及重新排序緩衝器(reorder buffer,ROB)(圖未示)以用來在程式排序中退出指令。在較佳的情況下,指令發送器包含指令轉譯器(圖未示)其用來把架構指令轉譯為處理器3900的
微指令組架構的微指令,其可被執行單元3926執行。
處理器3900還包含記憶體子系統3928其提供記憶體運算域給執行單元3926並且從執行單元3926接收記憶體運算域。記憶體子系統3928較佳為包含一個或多個載入單元,一個或多個儲存單元,載入列,儲存列,用來從記憶體請求快取線的填入列,與處理器3900通信的記憶體匯流排的偵測有關的偵測列,清單引擎,以及其它相關功能的單元。
處理器3900還包含一個溝通於記憶體子系統3928的快取記憶體102。在較佳的情況下,快取記憶體102類似於描述於圖1(以及圖16中的1602)的快取記憶體。雖然示出的是一個單一的快取記憶體102,但快取記憶體102可以是一個更大的快取記憶體子系統的其中一個,其包含快取記憶體的一個分層,例如是階層1的指令快取記憶體,階層1的資料快取記憶體,以及支援階層1快取記憶體的統合的階層2快取記憶體。在一個實施例中,快取記憶體子系統還包含階層3快取記憶體。處理器3900還包含一或多個預取器其從記憶體預取資料至快取記憶體102。在一個實施例中,處理器3900是一個多核心處理器,每一個核心具有如前所述的功能單元,且快取記憶體102由多個核心共用。
記憶體子系統3928存取快取記憶體102,如圖1至圖23中所描述的實施例一般。記憶體存取包含要被存取的記憶體位置的記憶體位址104。
雖然實施例已經用快取記憶體的區域以及連接埠的數量的特定配置來描述了,需要注意的是,在其它實施
例中可以考慮包含在快取記憶體中的連接埠的不同數量,且區域的不同數量也被包含在其中,還有非區域的配置。在本揭露當中,包含權利要求中的標記2^N指的是2的N次方。
雖然本發明的多個不同實施例已被描述於此,需要注意的是,其是用以舉例而非限制本發明。計算器領域的相關技術人員顯而易見可知不同的形式或細部的改變都在本發明的保護範圍之內。舉例來說,軟體可以啟動,舉例來說,功能、制程、模型、模擬、描述及/或本文中所描述的裝置和方法的測試。其可經由一般的程式語言(例如C,C++)的使用來實現,硬體描述語言(HDL)包含Verilog硬體描述語言等等,或是其它可能的程式。所述的軟體可配置於任何已知的計算器可用媒介例如是磁帶,半導體,磁片,或是光碟(例如CD-ROM,DVD-ROM等等),網際網路,有線,無線或是其它通信媒介。本文所述的裝置以及方法的實施例可被包含在半導體智慧產權核心,例如處理器核心(例如嵌入式或是具體式的,在硬體描述語言中)以及轉變至硬體積體電路的製造中。除此之外,本文所描述的裝置以及方法可被體現如硬體以及軟體的組合。因此,本發明不被文中所描述的任何舉例出的實施例所限制而是僅被根據本發明的權利要求及其同位物所定義。具體來說,本發明可以被實現在處理器裝置中,其可用在一般用途的計算器。最後,本領域技術人員可以很容易的使用本文所揭露的概念和具體實施方式以做為設計或是修改其它架構的基礎以實現出本發明的相同功效而不脫離本發明的權利要求所限定的範圍。
102‧‧‧快取記憶體
104‧‧‧記憶體位址
106、112‧‧‧標籤
108‧‧‧模式
114‧‧‧索引
116‧‧‧偏移
Claims (21)
- 一種快取記憶體,包括:一模式輸入端,用以指示該快取記憶體要被操作在多個分配模式中的何者;多個項目的一組相關陣列,該組相關陣列具有多個相乘的組以及W路,其中W是大於1的整數;一輸入端,用以接收一記憶體位址,該記憶體位址包括:一索引,用以從該些組中選出一組;以及一標籤,用以對照於儲存在所選取組的W路的多個項目中的多個標籤以判斷該記憶體位址在該陣列中為命中或未命中;以及一分配邏輯,用以當該記憶體位址在該陣列中為未命中的時候:根據該分配模式而選取該標籤的一或多個位元;根據該分配模式而在所選取的該標籤的一或多個位元執行一函數以產生該陣列的W路的一子組;以及分配至所選取組的路的子組的其中一路。
- 如申請專利範圍第1項所述的快取記憶體,其中在該標籤的一或多個位元執行的函數包含了該標籤的二或多個位元的一布林(Boolean)操作。
- 如申請專利範圍第2項所述的快取記憶體,其中該布林操作包含了該標籤的二或多個位元的布林互斥(XOR)。
- 如申請專利範圍第2項所述的快取記憶體,其中該布林操作包含了該標籤的二或多個位元的一輪轉(rotation)。
- 如申請專利範圍第1項所述的快取記憶體,其中執行於該標籤的一或多個位元的函數包含了該標籤的一或多個位元的選取。
- 如申請專利範圍第1項所述的快取記憶體,其中執行於該標籤的一或多個位元的函數的一輸出端產生一單一位元,其中當該位元為1則該子組包含了所選取組的W路的奇數路,其中當該位元為0則該子組包含了所選取組的W路的偶數路。
- 如申請專利範圍第1項所述的快取記憶體,其中對於一或多個分配模式,該子組是所選取組的W路的其中一路。
- 如申請專利範圍第7項所述的快取記憶體,其中W為2^Q,其中該其中一路是經由該標籤的Q位元來指定,其中Q是大於0的整數。
- 如申請專利範圍第8項所述的快取記憶體,其中該標籤的Q位元是該標籤的Q最低有效位元。
- 如申請專利範圍第8項所述的快取記憶體,其中該子組是限定於該2^Q路的2^Z路,其中該2^Z路是基於該標籤的(W-Z)位元,其中Z是大於0且小於W的整數。
- 一種快取記憶體的操作方法,用於具有多個項目的一組相關陣列的快取記憶體,該組相關陣列具有相乘的多個組以及W路,其中W是大於1的整數,該快取記憶體的操作方法包括:接收一模式輸入,其指示該快取記憶體儲氣要被操作在多個分配模式中的何者;接收一記憶體位址,其包括:一索引,用以從該些組之中選取一組;以及一標籤,用以與儲存在所選取組的W路的多個項目中的多個標籤做對照以決定該記憶體位址在該陣列中為命中或未命中;以及當該記憶體位址在該陣列中為未命中:根據該分配模式來選取該標籤的一或多個位元;根據該分配模式來在該標籤所選取的一或多個位元執行一函數以產生該陣列的W路的一子組;以及分配至所選取組的路的子組的其中一路。
- 如申請專利範圍第11項所述的快取記憶體的操作方法,其中在該標籤的一或多個位元所執行的該函數包含了該標籤的二或多個位元的一布林操作。
- 如申請專利範圍第12項所述的快取記憶體的操作方法,其中該布林操作包含了該標籤的二或多個位元的布林互斥(XOR)。
- 如申請專利範圍第12項所述的快取記憶體的操作方法,其中該布林操作包含了該標籤的二或多個位元的一輪轉(rotation)。
- 如申請專利範圍第11項所述的快取記憶體的操作方法,其中執行於該標籤的一或多個位元的函數包含了該標籤的一或多個位元的選取。
- 如申請專利範圍第11項所述的快取記憶體的操作方法,其中執行於該標籤的一或多個位元的函數的一輸出端產生一單一位元,其中當該位元為1則該子組包含了所選取組的W路的奇數路,其中當該位元為0則該子組包含了所選取組的W路的偶數路。
- 如申請專利範圍第11項所述的快取記憶體的操作方法,其中對於一或多個分配模式,該子組是所選取組的W路的其中一路。
- 如申請專利範圍第17項所述的快取記憶體的操作方法,其中W為2^Q,其中該其中一路是經由該標籤的Q位元來指定,其中Q是大於0的整數。
- 如申請專利範圍第18項所述的快取記憶體的操作方法,其中該標籤的Q位元是該標籤的Q最低有效位元。
- 如申請專利範圍第18項所述的快取記憶體的操作方法,其中該子組是限定於該2^Q路的2^Z路,其中該2^Z路是基於該標籤的(W-Z)位元,其中Z是大於0且小於W的整數。
- 一種用於操作一組相關快取記憶體的操作方法,包括:在多個分配模式其中的一目前分配模式之下操作該快取記憶體;其中該些分配模式之中的每一分配模式,當該快取記憶體未命中一記憶體位址,該快取記憶體分配至該快取記憶體使用該記憶體位址的一索引來選取的其中一組的該路的任一子組中的一路;其中在該些分配模式之中的每一分配模式,該子組是經由該記憶體位址的一標籤的一或多個位元的不同函數來決定;以及當操作在該目前分配模式之下的時候監測該快取記憶體的執行效率,當該執行效率低於一臨界值的時候將該目前分配模式改變為該些分配模式之中的一不同的分配模式。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2014/003225 WO2016097808A1 (en) | 2014-12-14 | 2014-12-14 | Dynamic cache replacement way selection based on address tag bits |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201631476A true TW201631476A (zh) | 2016-09-01 |
TWI599882B TWI599882B (zh) | 2017-09-21 |
Family
ID=56126008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104138638A TWI599882B (zh) | 2014-12-14 | 2015-11-20 | 快取記憶體及其操作方法、用於操作一組相關快取記憶體的操作方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10698827B2 (zh) |
EP (1) | EP3129886B1 (zh) |
JP (1) | JP6218971B2 (zh) |
CN (1) | CN105701030B (zh) |
TW (1) | TWI599882B (zh) |
WO (1) | WO2016097808A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9798668B2 (en) | 2014-12-14 | 2017-10-24 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode |
WO2016097812A1 (en) * | 2014-12-14 | 2016-06-23 | Via Alliance Semiconductor Co., Ltd. | Cache memory budgeted by chunks based on memory access type |
JP6207766B2 (ja) * | 2014-12-14 | 2017-10-04 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | ヘテロジニアス置換ポリシーを用いるセット・アソシエイティブ・キャッシュ・メモリ |
EP3230874B1 (en) * | 2014-12-14 | 2021-04-28 | VIA Alliance Semiconductor Co., Ltd. | Fully associative cache memory budgeted by memory access type |
US9652398B2 (en) * | 2014-12-14 | 2017-05-16 | Via Alliance Semiconductor Co., Ltd. | Cache replacement policy that considers memory access type |
KR101817847B1 (ko) | 2014-12-14 | 2018-02-21 | 비아 얼라이언스 세미컨덕터 씨오., 엘티디. | 메모리 접근 타입에 기초한 통로에 의해 버짓화된 캐시 메모리 |
EP3055774B1 (en) | 2014-12-14 | 2019-07-17 | VIA Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode |
JP2018005667A (ja) * | 2016-07-05 | 2018-01-11 | 富士通株式会社 | キャッシュ情報出力プログラム、キャッシュ情報出力方法及び情報処理装置 |
US10606339B2 (en) * | 2016-09-08 | 2020-03-31 | Qualcomm Incorporated | Coherent interconnect power reduction using hardware controlled split snoop directories |
CN107526688B (zh) * | 2017-09-12 | 2020-05-29 | 上海兆芯集成电路有限公司 | 储存装置以及配置方法 |
US11010165B2 (en) | 2019-03-12 | 2021-05-18 | Marvell Asia Pte, Ltd. | Buffer allocation with memory-based configuration |
US11093405B1 (en) | 2019-05-29 | 2021-08-17 | Marvell Asia Pte, Ltd. | Shared mid-level data cache |
US11036643B1 (en) | 2019-05-29 | 2021-06-15 | Marvell Asia Pte, Ltd. | Mid-level instruction cache |
US11327890B1 (en) * | 2019-05-29 | 2022-05-10 | Marvell Asia Pte, Ltd. | Partitioning in a processor cache |
US11513958B1 (en) | 2019-05-29 | 2022-11-29 | Marvell Asia Pte, Ltd. | Shared mid-level data cache |
CN110879797B (zh) * | 2019-10-31 | 2021-09-07 | 西安交通大学 | 高速可重构处理器配置信息缓存替换方法及存储体系结构 |
US11379368B1 (en) | 2019-12-05 | 2022-07-05 | Marvell Asia Pte, Ltd. | External way allocation circuitry for processor cores |
US20220308998A1 (en) * | 2021-03-26 | 2022-09-29 | Intel Corporation | Apparatus and method to reduce bandwidth and latency overheads of probabilistic caches |
Family Cites Families (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2646854B2 (ja) * | 1990-12-18 | 1997-08-27 | 三菱電機株式会社 | マイクロプロセッサ |
JP3259969B2 (ja) * | 1991-07-09 | 2002-02-25 | 株式会社東芝 | キャッシュメモリ制御装置 |
JPH0520193A (ja) * | 1991-07-15 | 1993-01-29 | Oki Electric Ind Co Ltd | キヤツシユ・メモリ装置 |
US5325504A (en) * | 1991-08-30 | 1994-06-28 | Compaq Computer Corporation | Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system |
US5367653A (en) | 1991-12-26 | 1994-11-22 | International Business Machines Corporation | Reconfigurable multi-way associative cache memory |
US5465342A (en) | 1992-12-22 | 1995-11-07 | International Business Machines Corporation | Dynamically adaptive set associativity for cache memories |
US6223255B1 (en) * | 1995-02-03 | 2001-04-24 | Lucent Technologies | Microprocessor with an instruction level reconfigurable n-way cache |
JPH0962582A (ja) * | 1995-08-21 | 1997-03-07 | Toshiba Corp | 疑似セットアソシアティブ方式キャッシュメモリ装置 |
US5809562A (en) | 1996-05-20 | 1998-09-15 | Integrated Device Technology, Inc. | Cache array select logic allowing cache array size to differ from physical page size |
US5974507A (en) | 1997-04-14 | 1999-10-26 | International Business Machines Corporation | Optimizing a cache eviction mechanism by selectively introducing different levels of randomness into a replacement algorithm |
US6138209A (en) | 1997-09-05 | 2000-10-24 | International Business Machines Corporation | Data processing system and multi-way set associative cache utilizing class predict data structure and method thereof |
US6047358A (en) | 1997-10-31 | 2000-04-04 | Philips Electronics North America Corporation | Computer system, cache memory and process for cache entry replacement with selective locking of elements in different ways and groups |
US6192458B1 (en) | 1998-03-23 | 2001-02-20 | International Business Machines Corporation | High performance cache directory addressing scheme for variable cache sizes utilizing associativity |
JP2954178B1 (ja) | 1998-06-26 | 1999-09-27 | 甲府日本電気株式会社 | 可変式キャッシュ方式 |
JP3495266B2 (ja) | 1998-11-13 | 2004-02-09 | Necエレクトロニクス株式会社 | キャッシュロック装置及びキャッシュロック方法 |
US6405287B1 (en) * | 1999-11-17 | 2002-06-11 | Hewlett-Packard Company | Cache line replacement using cache status to bias way selection |
US6446168B1 (en) * | 2000-03-22 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamically switching a cache between direct-mapped and 4-way set associativity |
US6681295B1 (en) | 2000-08-31 | 2004-01-20 | Hewlett-Packard Development Company, L.P. | Fast lane prefetching |
JP2002236616A (ja) * | 2001-02-13 | 2002-08-23 | Fujitsu Ltd | キャッシュメモリシステム |
US6516387B1 (en) * | 2001-07-30 | 2003-02-04 | Lsi Logic Corporation | Set-associative cache having a configurable split and unified mode |
US6874056B2 (en) | 2001-10-09 | 2005-03-29 | Agere Systems Inc. | Method and apparatus for reducing cache thrashing |
JP2003131945A (ja) * | 2001-10-25 | 2003-05-09 | Hitachi Ltd | キャッシュメモリ装置 |
US6801459B2 (en) * | 2002-03-22 | 2004-10-05 | Intel Corporation | Obtaining data mask mapping information |
US7096323B1 (en) * | 2002-09-27 | 2006-08-22 | Advanced Micro Devices, Inc. | Computer system with processor cache that stores remote cache presence information |
JP2004171177A (ja) * | 2002-11-19 | 2004-06-17 | Renesas Technology Corp | キャッシュシステムおよびキャッシュメモリ制御装置 |
US7406579B2 (en) * | 2002-12-17 | 2008-07-29 | International Business Machines Corporation | Selectively changeable line width memory |
US7191291B2 (en) | 2003-01-16 | 2007-03-13 | Ip-First, Llc | Microprocessor with variable latency stack cache |
US7177983B2 (en) * | 2003-08-12 | 2007-02-13 | Intel Corporation | Managing dirty evicts from a cache |
JP4036206B2 (ja) * | 2004-03-31 | 2008-01-23 | 日本電気株式会社 | セットアソシアティブキャッシュシステム及びキャッシュメモリの制御方法 |
US7543113B2 (en) | 2004-07-02 | 2009-06-02 | Hewlett-Packard Development Company, L.P. | Cache memory system and method capable of adaptively accommodating various memory line sizes |
JP4669244B2 (ja) * | 2004-07-29 | 2011-04-13 | 富士通株式会社 | キャッシュメモリ装置およびメモリ制御方法 |
US7257678B2 (en) | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Dynamic reconfiguration of cache memory |
US8593474B2 (en) | 2005-12-30 | 2013-11-26 | Intel Corporation | Method and system for symmetric allocation for a shared L2 mapping cache |
JPWO2007096998A1 (ja) * | 2006-02-24 | 2009-07-09 | 富士通株式会社 | キャッシュメモリ装置およびキャッシュメモリ制御方法 |
US7689772B2 (en) | 2006-05-04 | 2010-03-30 | Intel Corporation | Power-performance modulation in caches using a smart least recently used scheme |
US8046775B2 (en) | 2006-08-14 | 2011-10-25 | Marvell World Trade Ltd. | Event-based bandwidth allocation mode switching method and apparatus |
US20090006756A1 (en) | 2007-06-29 | 2009-01-01 | Donley Greggory D | Cache memory having configurable associativity |
JP2010026851A (ja) * | 2008-07-22 | 2010-02-04 | Panasonic Corp | コンパイラによる最適化方法 |
US8352684B2 (en) | 2008-09-23 | 2013-01-08 | International Business Machines Corporation | Optimal cache replacement scheme using a training operation |
US8661179B2 (en) | 2008-10-03 | 2014-02-25 | Agere Systems Llc | Cache memory architecture having reduced tag memory size and method of operation thereof |
US8549208B2 (en) | 2008-12-08 | 2013-10-01 | Teleputers, Llc | Cache memory having enhanced performance and security features |
JP5435617B2 (ja) * | 2009-01-22 | 2014-03-05 | エヌイーシーコンピュータテクノ株式会社 | キャッシュメモリ制御回路およびキャッシュメモリ管理方法 |
US8250332B2 (en) | 2009-06-11 | 2012-08-21 | Qualcomm Incorporated | Partitioned replacement for cache memory |
US8990506B2 (en) | 2009-12-16 | 2015-03-24 | Intel Corporation | Replacing cache lines in a cache memory based at least in part on cache coherency state information |
US9582431B2 (en) | 2010-03-22 | 2017-02-28 | Seagate Technology Llc | Storage address space to NVM address, span, and length mapping/converting |
US20120096226A1 (en) * | 2010-10-18 | 2012-04-19 | Thompson Stephen P | Two level replacement scheme optimizes for performance, power, and area |
WO2012169142A1 (en) | 2011-06-09 | 2012-12-13 | Semiconductor Energy Laboratory Co., Ltd. | Cache memory and method for driving the same |
WO2013098919A1 (ja) * | 2011-12-26 | 2013-07-04 | ルネサスエレクトロニクス株式会社 | データ処理装置 |
US9110830B2 (en) | 2012-01-18 | 2015-08-18 | Qualcomm Incorporated | Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods |
US9824013B2 (en) | 2012-05-08 | 2017-11-21 | Qualcomm Incorporated | Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors |
US20140047175A1 (en) | 2012-08-09 | 2014-02-13 | International Business Machines Corporation | Implementing efficient cache tag lookup in very large cache systems |
US9734059B2 (en) * | 2012-11-21 | 2017-08-15 | Advanced Micro Devices, Inc. | Methods and apparatus for data cache way prediction based on classification as stack data |
WO2016009247A1 (en) | 2014-07-14 | 2016-01-21 | Via Alliance Semiconductor Co., Ltd. | Cache system with primary cache and overflow cache that use different indexing schemes |
WO2016042353A1 (en) | 2014-09-18 | 2016-03-24 | Via Alliance Semiconductor Co., Ltd. | Cache management request fusing |
US9760492B2 (en) * | 2014-11-21 | 2017-09-12 | Mediatek Singapore Pte. Ltd. | Method for controlling access of cache through using programmable hashing address and related cache controller |
US9798668B2 (en) | 2014-12-14 | 2017-10-24 | Via Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively select one or a plurality of its sets depending upon the mode |
EP3055774B1 (en) | 2014-12-14 | 2019-07-17 | VIA Alliance Semiconductor Co., Ltd. | Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode |
-
2014
- 2014-12-14 US US14/891,336 patent/US10698827B2/en active Active
- 2014-12-14 WO PCT/IB2014/003225 patent/WO2016097808A1/en active Application Filing
- 2014-12-14 JP JP2016564432A patent/JP6218971B2/ja active Active
- 2014-12-14 EP EP14891603.4A patent/EP3129886B1/en active Active
-
2015
- 2015-11-18 CN CN201510795194.3A patent/CN105701030B/zh active Active
- 2015-11-20 TW TW104138638A patent/TWI599882B/zh active
Also Published As
Publication number | Publication date |
---|---|
JP6218971B2 (ja) | 2017-10-25 |
CN105701030B (zh) | 2019-08-23 |
EP3129886A4 (en) | 2017-08-09 |
US20160350229A1 (en) | 2016-12-01 |
WO2016097808A1 (en) | 2016-06-23 |
US10698827B2 (en) | 2020-06-30 |
CN105701030A (zh) | 2016-06-22 |
EP3129886A1 (en) | 2017-02-15 |
TWI599882B (zh) | 2017-09-21 |
EP3129886B1 (en) | 2019-10-02 |
JP2017503298A (ja) | 2017-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI599882B (zh) | 快取記憶體及其操作方法、用於操作一組相關快取記憶體的操作方法 | |
TWI564718B (zh) | 取決於模式而可動態配置以選擇分配至全部或是一個組的多模式組相聯快取記憶體 | |
TWI620065B (zh) | 快取記憶體、其操作方法及處理器 | |
TWI582591B (zh) | 考慮到記憶體訪問類型的集合關聯快取記憶體及方法 | |
TWI594123B (zh) | 基於記憶體存取類型以組塊來分配的快取記憶體 | |
TWI559143B (zh) | 具多樣替換策略的集合關聯快取記憶體 | |
TWI564719B (zh) | 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品 | |
TWI553482B (zh) | 基於記憶體訪問類型以分路來分配的快取記憶體 | |
TWI606338B (zh) | 以記憶體存取類型來分配的全關聯快取記憶體及其操作方法 | |
TWI596479B (zh) | 具有資料預取器的處理器及其運作方法 | |
Wang et al. | Computer architecture |