TW202422346A - 控制快取原則的系統及方法,及快取區 - Google Patents
控制快取原則的系統及方法,及快取區 Download PDFInfo
- Publication number
- TW202422346A TW202422346A TW113105088A TW113105088A TW202422346A TW 202422346 A TW202422346 A TW 202422346A TW 113105088 A TW113105088 A TW 113105088A TW 113105088 A TW113105088 A TW 113105088A TW 202422346 A TW202422346 A TW 202422346A
- Authority
- TW
- Taiwan
- Prior art keywords
- cache
- critical
- criticality
- control circuit
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 25
- 230000015654 memory Effects 0.000 claims description 141
- 230000004044 response Effects 0.000 claims description 20
- 238000012544 monitoring process Methods 0.000 claims description 14
- 238000012546 transfer Methods 0.000 claims description 14
- 230000000717 retained effect Effects 0.000 abstract description 2
- 238000003780 insertion Methods 0.000 description 31
- 230000037431 insertion Effects 0.000 description 31
- 230000002093 peripheral effect Effects 0.000 description 21
- 230000008901 benefit Effects 0.000 description 15
- 230000006870 function Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000001419 dependent effect Effects 0.000 description 6
- 230000036541 health Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000014616 translation Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000000670 limiting effect Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000012806 monitoring device Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000003542 behavioural effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 102100040489 DNA damage-regulated autophagy modulator protein 2 Human genes 0.000 description 1
- -1 DR3D Proteins 0.000 description 1
- 101000968012 Homo sapiens DNA damage-regulated autophagy modulator protein 2 Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004378 air conditioning Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Abstract
一種快取區可儲存關鍵快取線及非關鍵快取線,且可藉由例如偏好使用在置換資料更新中的關鍵快取線、當受害者快取區塊被選擇時依一定機率保留該等關鍵快取線等,來嘗試將該等關鍵快取線保留在該快取區中。關鍵性值可被保留在快取階層之各種等級處。另外,若先前存取該等關鍵快取區塊之執行緒被視為無效,則可採用加速的移除。
Description
本文所描述之實施例係關於電腦系統中之快取,且更具體而言,係關於快取原則。
在數位系統中長久以來已採用快取以藉由擷取在裝置本端之一快取記憶體中已由處理器、共處理器、或其他數位裝置存取的資料之複本來縮減有效記憶體延時。快取記憶體可小於主記憶體系統,且可針對低延時而最佳化(其中主記憶體系統通常針對儲存密度而最佳化,代價是延時)。因此,快取記憶體本身可縮減延時。另外,快取記憶體可在裝置的本端,且因此可縮減延遲,因為不會遭受至記憶體控制器/主記憶體系統及返回裝置的運輸延遲。此外,快取區可係裝置或小數目個裝置(例如,處理器/共處理器叢集)所專用,且因此與主記憶體相比,可減少對快取區之頻寬的競爭。
雖然快取區縮減有效的記憶體延時,但是快取區係有限的儲存空間且因此經受到遺漏(其引起從記憶體填充至快取以獲得資料,以外,若遺漏係針對讀取請求,則將資料提供至請求中裝置,或若遺漏係針對寫入請求,則進行更新)。填充係快取區(例如,快取線或快取區塊)中經分配之儲存空間。分配可導致快取區中的其他資料被置換(亦稱為從快取區移除快取線)。存在多種置換原則以基於快取區幾何形狀來選擇所移除之快取線。例如,集合關聯快取(set associative cache)具有經配置為二維陣列之快取線的記憶體:「列」係基於快取線之記憶體位址的子集予以選擇(稱為「設定」(set)),且列包括複數個快取線,該複數個快取線係陣列之「行」(稱為「路」(way))。當偵測到一快取遺漏並起始一填充時,分配該等路之一者用於填充。用於集合關聯快取之普遍置換原則係最近最少使用(LRU)原則。使用LRU,從最近存取過(最近使用過的,或MRU)至最近最少存取(最近最少使用,或LRU)追蹤在一集合中之快取線的存取。一般而言,當存取快取線時,將其更新至MRU,並且調整介於該快取線之原先排名與先前MRU之間的快取線。在發生快取遺漏時,可選擇LRU快取線以用於置換。
無
雖然LRU置換原則通常提供良好效能(例如,快取命中率保持高,且因此,可有效地縮減記憶體延時),但仍有效能會受限制之情況。例如,當對快取線之競爭高且因此頻繁發生移除時,則一些快取線可能被移除,當再次存取時會比其他快取線引起請求中裝置之效能損失較高。例如,若請求中裝置中之操作次數取決於快取線中之資料,則直接或間接地透過其他操作,請求中裝置可能等待資料而停頓。具有較少相依性的其他快取線可能對效能較不關鍵。LRU原則無法反映快取線之關鍵性差異。
在一實施例中,一種包含一或多個處理器及耦接至一或多個處理器之一快取區的系統可基於快取線經填充至該快取區中時所測量的一或多個準則,來根據一或多個關鍵性等級來分類該等快取線。準則可經選擇以嘗試識別當其在該快取區中遺漏時比其他快取線對該等處理器之效能影響更大的快取線。各快取線可具有指定其關鍵性等級的關鍵性值。例如,該關鍵性值可指示非關鍵狀態或關鍵狀態。在一實施例中,關鍵狀態亦可具有多個關鍵性等級,如下文更詳細描述。在另一實施例中,關鍵狀態可係指示關鍵的單一等級,而不是非關鍵狀態。
該快取區可實施使用該等快取線之該等關鍵性值作為一因素的一置換原則。例如,可使用LRU原則,但該原則可經修改以考量各種快取線之關鍵性。具有指示關鍵狀態之關鍵性值的快取線(「關鍵快取線」)可插入至LRU置換資料中的MRU位置處,而具有指示非關鍵狀態之關鍵性值的快取線(「非關鍵快取線」)可插入在該資料中之較低位置(例如,更接近LRU位置)處。在一實施例中,關鍵性值亦會影響LRU置換資料之更新。雖然LRU用作實例置換原則,但其他實施例可實施其他置換原則。例如,可使用多種偽LRU原則,其藉由簡化以使原則更容易實施來大致估計LRU操作,尤其在寬集合關聯快取區中。亦可使用隨機置換原則,且關鍵性可用以降低選擇關鍵線之可能性。可使用最少使用的原則,並且可依類似於LRU所描述之方式來選擇性地保留關鍵線。可使用後進先出或先進先出,且關鍵快取線可至少部分地免除LIFO或FIFO置換。此等原則中之任一者可經修改以考量關鍵性。
在一實施例中,該系統可包括介於上文所提及之快取區與系統記憶體之間的一或多個額外快取等級。例如,可使用在控制系統記憶體的記憶體控制器處實施的記憶體快取區。隨著快取線被移除及再存取,該等快取線的關鍵性值可在該等快取區中交換,此保留住該等關鍵性值,同時該等快取線在快取階層中保持快取。一旦從該快取階層移除快取線(且因此資料僅存在於系統記憶體中),則關鍵性值會遺失。
圖1係一系統之一實施例的方塊圖,該系統包括複數個處理器10A至10N、一共處理器12、一最後等級快取(LLC) 14、一記憶體控制器16、及一記憶體18。處理器10A至10N及共處理器12耦接至LLC 14,該LLC耦接至記憶體控制器16,該記憶體控制器進一步耦接至記憶體18。更詳細地繪示處理器10N,且諸如處理器10A之其他處理器可係類似的。處理器10N可包括一指令快取(ICache) 20、一指令快取(IC)遺漏佇列22、包括一載入佇列(LDQ) 26之一執行核心24、一資料快取(DCache) 28、及一記憶體管理單元(MMU) 30。LLC 14可包括一快取區32、一關鍵性控制電路34、及一記憶體快取區(MCache)插入查找表(LUT) 36。記憶體快取區16可包括一插入控制電路及LUT 38、一MCache 40、及一監測電路42。
IChace 20可儲存由處理器10N提取的指令以供執行核心24執行。若在ICache 20中提取遺漏時,用於指令之快取線的提取可係在IC遺漏佇列22中的佇列,且傳輸至LLC 14作為對IChace 20之填充請求。由執行核心24執行之指令可包括載入指令(簡稱載入)。載入可嘗試從DCache 28讀取資料,且在DCache 28中的載入遺漏的情況下,可傳輸至LLC 14作為用於DCache 28之填充請求。傳輸至LLC 14的載入可保持在等待資料的LDQ 26中。
MMU 30可提供用於指令提取位址及載入/儲存位址的位址轉譯,包括可能在IChace 20及執行核心24本端的轉譯後備緩衝器(TLB)。MMU 30可視情況包括一或多個層2 (L2) TLB以及表遍歷(table walk)電路系統,以執行轉譯表讀取以獲得用於在TLB中遺漏的位址的轉譯。MMU 30可傳輸表遍歷讀取至LLC 14。在一實施例中,MMU 30可存取DCache 28以用於在傳輸至LLC 14之前對表遍歷讀取的潛在快取命中,且若在Cache 28中命中,則不可傳輸該等讀取至LLC 14。在其他實施例中,分頁表資料未被快取在DCache 28中,且MMU 30中可傳輸表遍歷讀取至LLC 14。
LLC 14包括可具有任何容量及組態的快取區32。來自處理器10A至10N及共處理器12之記憶體請求可經檢查是否在快取區32中之命中,且在命中之事件中,資料可被傳回作為至ICache 20、DCache 28或MMU 30的填充。若記憶體請求在快取區32中遺漏,則LLC 14可傳輸記憶體請求至記憶體控制器16,且回應於記憶體控制器16傳回一填充至LLC 14而傳回該填充至請求中處理器10A至10N或共處理器12。在遺漏之事件中,LLC 14亦可將資料填充至快取區32中。一般而言,在本文中以一般意義使用「資料」來提及由處理器10A至10N提取以備執行的指令及由於指令執行而由處理器讀取/寫入的資料(例如,運算元資料及結果資料),尤其提供資料之快取線時。
另外,在填充至處理器10A至10N/共處理器12的時間,LLC 14可指派快取線的關鍵性值。關鍵性控制電路34可判定關鍵性值且可用關鍵性值來更新快取區32。例如,快取區32中的快取標籤可包括用於關鍵性值的欄位。關鍵性值可指示非關鍵狀態或關鍵狀態。如上文所提及,在一些實施例中,可存在超過一個等級的關鍵狀態。關鍵性控制電路34也可判定關鍵狀態的等級。
關鍵性控制電路34可考慮分配關鍵性值至快取線的多種因素。例如,關鍵性控制電路34耦接至MMU 30、IC遺漏佇列22及LDQ 26。更具體而言,用於表遍歷請求的填充可分類為關鍵。TLB遺漏很可能影響額外指令提取或載入/儲存請求,因為轉譯涵蓋相當大量的資料,且程式碼序列往往存取接近其他近期存取過資料的資料。例如,頁面大小可係4千個位元組、16千個位元組、或甚至更大,諸如1百萬個位元組或2百萬個位元組。可使用任何頁面大小。另外,若在對於載入的填充發生時該載入位於LDQ 26之頭端處,則該載入可係處理器10N中待處理的最舊載入。因此,很可能該載入正在停頓其他已完成指令之淘汰,或由於對載入資料的(直接或間接)相依性而存在數個停頓的指令。針對位於LDQ 25之頭端的載入的填充可被指派關鍵狀態。類似地,若填充係用於指令提取請求且其係在IC遺漏佇列22中最舊的提取請求(例如,其在IC遺漏佇列22之頭端處),則指令提取很可能等待指令而停頓。此類指令提取可被指派關鍵狀態。其他實施例可包括在給定處理器10A至10N中之額外因素,或上述因素及其他因素之子集(如所欲)。在一實施例中,來自共處理器12之請求也可被指派關鍵狀態。例如,共處理器12的一實施例可不包括快取區,且因此LLC 14係可用於共處理器12的第一等級快取。未指派關鍵狀態的快取線可被指派非關鍵狀態。
在一實施例中,可維持指派給快取線的關鍵性值,同時該等快取線在快取階層中保持有效。該關鍵性值係由關鍵性控制電路34予以指派,且接著當快取線從快取區32移除時連同快取線傳播並傳輸至記憶體控制器16,其中該關鍵性值可在MCache 40中予以快取。若在從快取區32移除之後經移除快取線置放在MCache 40中,則可維持關鍵性值。若在從快取區32移除之後經移除快取線未置放於MCache 40中,則記憶體控制器16可丟棄關鍵性值且將資料寫入至記憶體18。可存在影響經移除快取線是否被快取在MCache 40中的多種因素。系統之其他組件共用MCache 40,且MCache 40可具有對於可從給定組件快取多少資料的配額。若LLC 14超出配額,則經移除快取線可不被快取。替代地,經移除快取線可被快取,且可移除在MCache 40中所快取的不同LLC快取線。
隨後,若先前由LLC 14所快取之快取線被LLC 14再存取,則MCache 40可提供該快取線作為至快取區32的填充,且亦可提供先前與該快取線相關聯的關鍵性值。關鍵性控制電路34可將由MCache 40提供的先前關鍵性值指派給快取線,除非來自產生再存取快取線的處理器10A至10N的其他因素指示至關鍵狀態或至更高等級之關鍵狀態的升級。例如,來自MCache 40的非關鍵快取線可經填充至具有非關鍵狀態的LLC 14中,除非在填充用於再存取之填充時該非關鍵快取線被指派關鍵狀態(例如,該填充係用於在LDQ 26之頭端處的載入、在IC遺漏佇列22之頭端處的指令提取、或MMU表遍歷請求)。來自MCache 40的關鍵快取線可被填充為關鍵。在實施多個等級之關鍵性狀態的實施例中,目前經由上述因素(LDQ 26之頭端、IC遺漏佇列22之頭端、或MMU請求)而亦指示為關鍵的來自MCache 40之關鍵快取線可被關鍵性控制電路34指派更高等級之關鍵狀態。
在一實施例中,來自LLC 14的經移除快取線可在MCache 40中予以快取,且可被插入在MCache 40之受影響集合之該置換資料中的所選取位置處。若經移除快取線係關鍵快取線,則可插入在MRU位置處。若經移除快取線係非關鍵快取線,則其可插入低於MRU的位置(較接近LRU)。在一個實施例中,對於非關鍵快取線,插入點可係動態的。例如,插入點可基於被來自LLC 14之快取線所佔據的MCache 40中之快取容量的量。記憶體控制器16可包括一監測電路42,該監測電路監測分配給CPU的MCache 40之容量並提供資訊(「Capacity_CPU」)給關鍵性控制電路34。關鍵性控制電路34可使用Capacity_CPU值作為至MCache插入LUT 36中的索引,且當傳輸經移除快取線至記憶體控制器16時可從已編製索引之項目讀取插入提示。插入提示可用作記憶體控制器16中之LUT 38的索引,且相關聯的插入控制邏輯可潛在地調整插入點(例如,若快取區之一部分被切斷電源,則插入點應在目前使用中之LRU位置內)。MCache 40可在插入點處插入經移除快取區塊。
因此,在此實施例中,協作查找表可用以針對非關鍵快取線來判定MCache 40中用於經移除快取線的插入點。LUT可係可程式化的,從而允許軟體如所欲調諧效能。
可依任何所欲方式量測Capacity_CPU值。在一實施例中,Capacity_CPU可指示數個MCache路,平均而言,該數個MCache路被來自LLC 14的快取線所佔據。在另一實施例中,可提供快取容量之近似百分比。
如先前所提及,快取區32可具有於關鍵性值的欄位(例如,在快取標籤中)。類似地,MCache 40可包括在快取標籤中的用於關鍵性值之欄位。在另一實施例中,MCache 40可具有針對各快取線的資料集識別符(DSID),其識別根據一或多個準則而識別互屬一起的快取線。一般而言,具有相同DSID之快取區塊可來自相同的來源組件(例如,圖1未展示系統之LLC 14或另一組件,諸如周邊組件)。DSID可儲存於標籤中之欄位中。DSID可用於區分非關鍵及關鍵快取線(例如,藉由使用一個DSID來表示非關鍵快取線,及另一DSID來表示關鍵快取線,或在採用更多等級之關鍵狀態的實施例中,多個DSID表示不同等級之關鍵狀態)。當提供填充時,MCache 40可解碼DSID以判定待傳輸至LLC 14的關鍵性值。
在一實施例中,處理器10A至10N可充當系統之中央處理單元(CPU)。系統之CPU包括執行系統之主控制軟體(諸如作業系統)的處理器。一般而言,在使用期間由CPU執行的軟體可控制系統的其他組件以實現系統的所欲功能。處理器10A至10N亦可執行其他軟體,諸如應用程式。應用程式可提供使用者功能,且可依賴用於較低等級裝置控制、排程、記憶體管理等的作業系統。因此,處理器10A至10N亦可稱為應用程式處理器。
一般而言,處理器可包括經組態以執行由處理器實施之指令集架構中所定義之指令的任何電路系統及/或微程式碼。處理器可涵蓋連同其他組件實施於積體電路上的處理器核心,作為系統單晶片(SOC)或其他整合等級的系統。處理器可進一步涵蓋:整合成多晶片模組實施方案的離散微處理器、處理器核心及/或微處理器;實施為多個積體電路的處理器等。
在一實施例中,共處理器12可經組態以加速某些操作。例如,設想其中共處理器大規模(每指令之多個操作)執行矩陣及向量操控的實施例。共處理器12可接收由處理器10A至10N所傳輸的指令。亦即,由共處理器12所執行的指令(「共處理器指令」)及由處理器10A至10N執行的指令(「處理器指令」)可係相同指令集架構之部分,且可在由處理器提取之程式碼序列中混合。處理器10A至10N可解碼該等指令且識別用於傳輸至共處理器12的共處理器指令,且可執行處理器指令。共處理器12可接收來自處理器10A至10N之共處理器指令、解碼共處理器指令,並執行該等共處理器指令。該等共處理器指令可包括載入/儲存指令以讀取用於運算元件的記憶體資料、及寫入結果資料至記憶體(在一實施例中,讀取及寫入兩者皆可在LLC 14中完成)。
應注意,圖1之系統中的各種組件之數目及類型可隨著實施例而變化。例如,可存在任何數目個處理器10A至10N。可能存在多於一個共處理器12,且當包括多個共處理器時,可存在相同共處理器的多個例項及/或不同類型之共處理器。可存在多於一個記憶體控制器16,且當包括多個記憶體控制器時,記憶體空間可分佈於記憶體控制器。
應注意,各種指令、記憶體請求等於上文提及為晚於或早於其他指令、請求等。若給定操作所衍生自的指令依程序順序接在其他操作所衍生自的指令之後,則該給定操作可晚於該另一操作。類似地,若給定操作所衍生自的指令依程序順序接在其他操作所衍生自的指令之前,則該給定操作可早於該另一操作。
圖2至圖4繪示其中關鍵性值係關鍵或非關鍵狀態之實施例。圖5至圖9繪示其中關鍵狀態具有超過一個關鍵性等級之實施例。圖10繪示對於可應用至兩種類型之關鍵性值的實施例中,用於加速從LLC 14移除關鍵快取線的機制。圖11係繪示基於圖10之加速機構從LLC 14的受害者選擇的流程圖。
現轉向圖2,圖中展示的流程圖繪示針對填充至LLC 14中之快取線指派關鍵性值的關鍵性控制電路34的實施例。雖然為了易於理解而依以特定順序展示方塊,但可使用其他順序。可在關鍵性控制電路34中平行地執行方塊。可在多個時脈週期內將方塊、方塊之組合及/或流程圖作為整體予以管線化。關鍵性控制電路34可經組態以實施圖2中所示之操作。
若填充係針對MMU表遍歷請求的快取線(決策方塊50,「是」分支),則關鍵性控制電路34可針對與該快取線相關聯的關鍵性值來指派關鍵狀態(方塊52)。若填充係針對LDQ 26之頭端的載入操作的快取線(決策方塊54,「是」分支),則關鍵性控制電路34可針對與該快取線相關聯的關鍵性值來指派關鍵狀態(方塊52)。若填充係針對在IC遺漏佇列22之頭端處之指令快取遺漏的快取線(決策方塊56,「是」分支),則關鍵性控制電路34可針對與該快取線相關聯的關鍵性值來指派關鍵狀態(方塊52)。若填充係在MCache中具有關鍵狀態的快取線(決策方塊58,「是」分支),則關鍵性控制電路34可針對與該快取線相關聯的關鍵性值來指派關鍵狀態(方塊52)。若上述準則皆不適用(決策方塊50、54、56、58、及60,「否」分支),則關鍵性控制電路34可針對與該快取線相關聯的關鍵性值來指派非關鍵狀態。在一實施例中,來自共處理器12之共處理器請求亦可被指派關鍵狀態。在另一實施例中,共處理器請求可被指派非關鍵狀態。
圖3係一表62,其繪示關鍵性控制電路34之一實施例的操作,用於基於快取線填充至快取區32中(插入區段64)及基於用於來自處理器10A至10N的處理器請求之快取命中(更新區段66)來更新一集合的置換資料。置換資料更新可基於請求類型、快取區塊之先前狀態、及關鍵性值。表之LRU欄指示正被填充之快取線(在插入區段64中)或由請求命中之快取線(在更新區段66中)在LRU排列中的位置(從MRU至LRU)。可更新該集合中之其他快取線以反映變化。例如,若經填充/命中快取線成為MRU,則從經填充/命中快取線之目前位置至先前位置的每一其他快取線的位置可朝向LRU移動至一個位置。若經填充/命中快取線經移動至置換資料中不同於MRU的位置,則具有從經填充/命中快取線之不同位置至目前位置的位置之各快取線可朝向LRU移動至一個位置。
在插入區段64中,因為快取線正被填充至快取區32中,所以先前狀態為空值(null)。對於此區段,除非暫時性(NT)需求請求外的請求類型更新置換資料以針對關鍵快取線填充MRU。若填充係針對預提取請求(資料或指令)且關鍵性值係非關鍵狀態,則對接近LRU位置但非LRU位置本身的LRU位置N進行填充。例如,N可以在LRU上方達介於LRU與MRU之間的距離之約25%。例如,若快取區32係8路,則在LRU上方25%將係在LRU上方之2個位置。若快取區32係16路,則在LRU上方25%將係在LRU上方之4個位置。若填充係針對需求提取(指令或資料)且關鍵性值係非關鍵狀態,則對LRU位置L(接近置換資料範圍中的中間)進行填充。例如,假設LRU位置編號0,若快取區32係8路,則在各種實施例中,L可在位置4至6之範圍內。若快取係16路,則L可在6至8之範圍內。若填充係針對NT需求提取,則填充之LRU位置可係位置M,接近LRU但小於N。
在圖3的實施例中,對於快取線的命中的置換資料更新可獨立於快取線的關鍵性值。其他實施例可考量更新中之關鍵性。若命中請求係需求提取(指令或資料)且快取線係經預提取快取線,則LRU位置可不變(NC),但可能未設定該快取線的預提取追蹤位元,使得下一次該快取線命中時,其將係需求提取。若命中請求係需求提取(指令或資料)且該命中快取線係NT需求或需求提取(指令或資料),則該命中快取線可成為MRU。若命中請求係資料預提取,則該命中快取線可置放在N(接近LRU)。若命中請求係指令預提取,則該命中快取線成為MRU。若命中請求係NT需求,則命中快取可係位置N。
現轉向圖4,圖中展示的流程圖繪示關鍵性控制電路34之一實施例的操作的流程圖,以在偵測到快取遺漏時移除受害者快取線。雖然為了易於理解而依以特定順序展示方塊,但可使用其他順序。可在關鍵性控制電路34中平行地執行方塊。可在多個時脈週期內將方塊、方塊之組合及/或流程圖作為整體予以管線化。關鍵性控制電路34可經組態以實施圖4中所示之操作。
若由快取遺漏編製索引之集合中存在至少一個無效快取項目(決策方塊70,「是」分支),則關鍵性控制電路34可選擇LRU-最無效項目(方塊72)。無效項目可係目前不儲存快取線的快取線儲存位置(例如,路)。LRU-最無效項目可係無效且當與其他無效項目之位置相比時具有的位置最接近置換資料中之LRU位置的無效項目。LRU-最無效項目可在LRU位置處。
若集合中不存在無效項目(決策方塊70,「否」),則關鍵性控制電路34可選擇作為受害者之有效項目。在一般的LRU原則中,可選擇LRU項目。然而,在此實施例中,關鍵性控制電路34可依一定機率保留該等關鍵快取線。因此,可產生偏差偽隨機選擇(例如,基於線性回饋移位暫存器或LFSR,及所欲機率)(方塊74)。基於偽隨機選擇,關鍵性控制電路34可選擇性地遮罩關鍵快取線免於被選擇(方塊76)。例如,若偏差偽隨機選擇指示偏差試驗之一評估(例如,「是」),則可不遮罩關鍵快取線。若偏差偽隨機值指示偏差試驗之另一評估(例如,「否」),則可遮罩關鍵快取線。此類型的機率導向型保持亦可稱為「偏差擲硬幣」(biased coin flip)。關鍵性控制電路34可選擇LRU-最有效的未遮罩項目,且可移除在該項目中的快取區塊(方塊78)。
圖5係繪示針對經正被填充至LLC 14中之快取線指派關鍵性的一個實施例的關鍵性控制電路34之操作的流程圖。雖然為了易於理解而依以特定順序展示方塊,但可使用其他順序。可在關鍵性控制電路34中平行地執行方塊。可在多個時脈週期內將方塊、方塊之組合及/或流程圖作為整體予以管線化。關鍵性控制電路34可經組態以實施圖5中所示之操作。
類似於圖2之實施例,若由於MMU表遍歷請求(決策方塊80、「是」分支)、在LDQ 26之頭端處的載入(決策方塊82、「是」分支)、或在IC遺漏佇列22之頭端處的指令提取(決策方塊84,「是」分支)使快取線正被填充,則該快取線可係關鍵的。在此實施例中,存在多個等級之關鍵狀態。若MCache 40所供應之關鍵性指示關鍵狀態(決策方塊86,「是」分支),則關鍵性控制電路34可從MCache 40(方塊88)所提供之狀態來增加關鍵狀態等級。若MCache 40指示非關鍵(決策方塊86,「否」分支),則該快取線先前非關鍵或快取線在MCache 40中遺漏。在此等情況下,關鍵性控制電路34可初始化處於最低等級關鍵狀態的關鍵性值(方塊90)。
若快取線在目前填充中不關鍵(決策方塊80、82、及84,「否」分支),但MCache 40所提供之關鍵性值係關鍵狀態(決策方塊92,「是」分支),則關鍵性控制電路34可保留由MCache 40提供的關鍵性值(方塊94)。否則(決策方塊92,「否」分支),關鍵性控制電路34可將關鍵性值初始化為非關鍵狀態(方塊96)。
圖6係繪示關鍵性控制電路34之一實施例的操作以基於快取線填充至快取區32中(插入快取線)來更新一集合之置換資料的流程圖。雖然為了易於理解而依以特定順序展示方塊,但可使用其他順序。可在關鍵性控制電路34中平行地執行方塊。可在多個時脈週期內將方塊、方塊之組合及/或流程圖作為整體予以管線化。關鍵性控制電路34可經組態以實施圖6中所示之操作。
若正被填充之快取線具有高關鍵狀態(例如,在實施例中,最低關鍵狀態除外的關鍵狀態(決策方塊100,「是」分支),則快取線可插入在置換資料中之MRU位置(方塊102)。若快取線具有關鍵狀態(例如,最低關鍵狀態)(決策方塊100,「否」分支;及決策方塊104,「是」分支),則關鍵性控制電路34可經組態以在置換資料(最接近MRU)中儘可能高但低於任何高關鍵狀態快取線之位置的位置處插入快取線。因此,若置換資料中存在一或多個高關鍵快取線(決策方塊106,「是」分支),則關鍵性控制電路34可將快取線插入在低於高關鍵快取線的最高位置(方塊108)。否則,快取線可插入在MRU位置處(決策方塊106,「否」分支;及方塊102)。
若正被填充之快取線處於非關鍵(決策方塊100及104,「否」分支),且該填充歸因於預提取(指令或資料)(決策方塊110,「是」分支),則預提取可插入在接近LRU的N處(方塊112),類似於關於圖3之討論。在一實施例中,指令預提取可置放在低於資料預提取的LRU位置處,但兩者可置放在LRU位置附近。替代地,指令預提取可置放在高於資料預提取的LRU位置處,但兩者可接近LRU位置,或相同LRU位置可用於兩種類型的預提取。若非關鍵快取線不是預提取而是NT請求(決策方塊114,「是」分支),則該快取線可插入在位置M處,在此實施例中,M大於N但接近LRU(方塊116)。若非關鍵快取線係需求請求(決策方塊114,「否」分支),且存在任何關鍵快取線(決策方塊106,「是」分支),則該非關鍵快取線可插入在關鍵快取線下方(方塊108)。若集合中不存在關鍵快取線(決策方塊106,「否」分支),則非關鍵快取線可插入在MRU位置處(方塊102)。
由決策方塊106以及方塊102及108所表示之電路系統可提供用於某些快取線的動態插入點,防止在關鍵快取線可被較低關鍵快取線在置換資料向下移動至LRU位置的情況中,置換資料中之「優先順序反轉」。
圖7係繪示關鍵性控制電路34之一實施例的操作以基於關鍵性控制電路34中之快取線的快取命中(快取線升階)來更新一集合之置換資料的流程圖。雖然為了易於理解而依以特定順序展示方塊,但可使用其他順序。可在關鍵性控制電路34中平行地執行方塊。可在多個時脈週期內將方塊、方塊之組合及/或流程圖作為整體予以管線化。關鍵性控制電路34可經組態以實施圖7中所示之操作。
若命中快取線具有任何等級之關鍵狀態(決策方塊120,「是」分支),則關鍵性控制電路34可將快取線更新至MRU位置(方塊122)。若命中快取線係非關鍵(決策方塊120,「否」分支),且該命中快取線係未經處理預提取請求(決策方塊124,「是」分支),則關鍵性控制電路34可使置換資料位置維持不變,但可重設預提取位元(方塊126)。若命中請求係需求或資料預提取(決策方塊128,「是」分支),則關鍵性控制電路34可藉由將命中快取線升階至在關鍵快取線下方的最高置換資料位置而保留關鍵快取線之優先順序(決策方塊130,「是」;及方塊132)。若集合中沒有關鍵快取線,則命中快取線可成為MRU(決策方塊130,「否」分支;及方塊122)。若命中請求係NT請求(決策方塊134,「是」分支),則命中快取線可更新至接近LRU的位置P,除非該命中快取線係未經處理預提取,在此情況中,則位置不變(方塊136)。若命中請求不是NT請求(也不是上文所提及之其他類型之請求),則請求可係指令預提取,且命中快取線可更新至MRU(方塊138)。
類似於上文關於圖6之討論,由決策方塊130所表示之電路系統可提供動態置換資料更新,以防止介於非關鍵快取線與關鍵快取線之間的優先順序反轉。圖6之實施例可允許在置換資料中重新排序不同等級之關鍵快取線,但在置換資料中可使非關鍵快取線保持在關鍵快取線下方。
現轉向圖8,圖中展示的流程圖繪示關鍵性控制電路34之一實施例的操作以在偵測到快取遺漏時移除受害者快取線。雖然為了易於理解而依以特定順序展示方塊,但可使用其他順序。可在關鍵性控制電路34中平行地執行方塊。可在多個時脈週期內將方塊、方塊之組合及/或流程圖作為整體予以管線化。關鍵性控制電路34可經組態以實施圖8中所示之操作。
若集合中存在至少一個無效項目(決策方塊140,「是」分支),則關鍵性控制電路34可遮罩所有有效項目且選擇LRU-最未遮罩(無效)項目(方塊142)。若所有項目有效(決策方塊140,「否」分支),則關鍵性控制電路34可判定偏差偽隨機選擇,類似於關於圖4的討論(方塊144)。基於偽隨機選擇,關鍵性控制電路34可選擇性地遮罩所有關鍵快取線(方塊146)。若找到至少一個未遮罩的有效項目(決策方塊148,「是」分支),則關鍵性控制電路34可選擇LRU-最未遮罩項目(方塊142)。若沒有找到項目(決策方塊148,「否」分支),則關鍵性控制電路34可解除遮罩最低等級之關鍵快取線,同時仍遮罩較高關鍵快取線(方塊150)。若找到至少一個未遮罩的有效項目(決策方塊152,「是」分支),則關鍵性控制電路34可選擇LRU-最未遮罩項目(方塊142)。若沒有找到項目(決策方塊152,「否」分支),則關鍵性控制電路34可解除遮罩所有關鍵快取線(方塊154),且可選擇LRU-最未遮罩項目(方塊142)。
圖9係繪示關鍵性控制電路34之另一實施例的操作的流程圖,以選擇在偵測到快取遺漏時待移除的一受害者快取線。雖然為了易於理解而依以特定順序展示方塊,但可使用其他順序。可在關鍵性控制電路34中平行地執行方塊。可在多個時脈週期內將方塊、方塊之組合及/或流程圖作為整體予以管線化。關鍵性控制電路34可經組態以實施圖9中所示之操作。
圖9之實施例可基於不同機率而採用多個偏差偽隨機選擇,以選擇性地遮罩或不遮罩關鍵狀態的各種子集直到選擇受害者。類似於圖8之實施例,若集合中存在至少一個無效項目(決策方塊160,「是」分支),則關鍵性控制電路34可遮罩所有有效項目且選擇LRU-最未遮罩(無效)項目(方塊162)。若所有項目有效(決策方塊160,「否」分支),則關鍵性控制電路34可基於第一機率而判定第一偏差偽隨機選擇,類似於關於圖4的討論(方塊164)。若選擇係「是」(決策方塊168,「是」分支),則關鍵性控制電路34可遮罩所有關鍵快取線(方塊168),且判定是否找到至少一有效的未遮罩項目(決策方塊170)。若有找到(決策方塊170,「是」分支),則關鍵性控制電路34可選擇LRU-最未遮罩項目(方塊162)。若未找到(決策方塊170,「否」分支)或若選擇係「否」(決策方塊166,「否」分支),則關鍵性控制電路34可基於第二機率判定第二偏差偽隨機選擇(方塊172)。若選擇係「是」(決策方塊174,「是」分支),則關鍵性控制電路34可遮罩關鍵快取線(最低關鍵狀態除外)(方塊176),且判定是否找到至少一有效的未遮罩項目(決策方塊178)。若有找到(決策方塊178,「是」分支),則關鍵性控制電路34可選擇LRU-最未遮罩項目(方塊162)。若未找到(決策方塊178,「否」分支)或若選擇係「否(決策方塊174,「否」分支),則關鍵性控制電路34可繼續類似地反覆、遮罩較少個較高等級之關鍵狀態,直到找到項目(方塊180)或直到所有關鍵線未經遮罩為止。一旦找到項目,則關鍵性控制電路可選擇LRU-最未遮罩項目(方塊162)。
實施動態置換資料更新以優先地保留比其他快取線更接近MRU之關鍵快取線的實施例可將快取線成功地保留在LLC 14中。然而,一旦關鍵快取線不再有用,則相同的性質會增加用不關鍵的更近期存取過之快取線來置換關鍵快取線的難度。
如上文所提及,在選擇受害者快取線期間,LLC 14可經組態以相較於未識別為關鍵的快取線而將藉由對應關鍵性值識別為關鍵的快取線優先保留。LLC 14可經組態以根據由快取區維護的置換資料(並且也考量關鍵性值)來選擇受害者快取線,置換資料與關鍵性值分開。然而,當關鍵性控制電路34偵測到經識別為關鍵的至少一些快取線不再關鍵的一或多個指示時,關鍵性控制電路34可經組態以基於該一或多個指示而終止該等快取線的該優先保留。
以其他方式查看,關鍵性控制電路34可基於該一或多個指示而加速移除識別為關鍵的快取線(而不是在偵測一或多個指示之前所應用的保留)。例如,在一實施例中,關鍵性控制電路34可經組態以在選擇受害者快取線時忽略關鍵性值,以終止關鍵快取線的優先保留或加速移除。
圖10係繪示關鍵性控制電路34之一實施例的操作的流程圖,以加速移除不再使用的關鍵快取線。雖然為了易於理解而依以特定順序展示方塊,但可使用其他順序。可在關鍵性控制電路34中平行地執行方塊。可在多個時脈週期內將方塊、方塊之組合及/或流程圖作為整體予以管線化。關鍵性控制電路34可經組態以實施圖10中所示之操作。
若關鍵快取線不再被存取(例如,正在存取執行緒或執行緒已完成執行),則關鍵快取線可最終遷移至置換資料中之LRU位置。因此,關鍵性控制電路34可監測在N個最LRU位置中的關鍵快取線的命中率(方塊190)。可依任何所欲方式選擇N。例如,N可係集合中之路數目的約一四分之一。另外,若從LLC 14窺探回寫(snoop copy back)的快取線增加(亦即,窺探正在引起快取線被轉遞至另一處理器10A至10N),則正在存取關鍵快取線之執行緒可已遷移至耦接至系統中之不同LLC 14的處理器10A至10N之不同叢集(圖1中未展示)。因此,關鍵性控制電路34可監測引起快取線被轉遞至系統中之其他代理的窺探率(不回寫至記憶體控制器16)(方塊192)。在各種實施例中,關鍵性控制電路34可監測對僅關鍵快取區塊或所有快取區塊的窺探轉遞。可監測的另一因素係所推定共處理器請求(來自共處理器12的請求)(方塊194)。
若經由方塊190所表示之監測所偵測到的快取命中率小於臨限(決策方塊196,「是」分支),則關鍵性控制電路34忽略受害者選擇以及LRU插入及升階中的關鍵性值(方塊198)。因此,可以對快取線進行相同的處理,無論關鍵/非關鍵狀態。類似地,若正在發生的窺探轉遞率高於臨限(決策方塊200,「是」分支),則關鍵性控制電路34忽略受害者選擇以及LRU插入及升階中的關鍵性值(方塊198)。若所推定的共處理器請求增加(決策方塊202,「是」分支),則關鍵性控制電路34忽略受害者選擇以及LRU插入及升階中的關鍵性值(方塊198)。
可使用的另一因素係,若可用於處理器10A至10N/LLC 14的MCache 40中之容量下降而低於臨限(例如,如由來自監測電路42之Capacity_CPU指示所指示)(決策方塊204,「是」分支),則關鍵性控制電路34將所有等級之關鍵狀態處理為最低關鍵狀態(方塊206)。若上述皆不成立(決策方塊196、200、202及204,「否」分支),則關鍵性控制電路34可維持使用在受害者選擇以及LRU插入及升階中的關鍵性值(方塊208)。
因此,在此實施例中,該一或多個指示可包括針對在置換資料中之複數個最近最少使用位置中且具有指示關鍵狀態之關鍵性值的低於一臨限位準的快取線之快取命中率。該一或多個指示可包括在該快取區中發生窺探命中且回應於該窺探命中高於一臨限位準而引起一對應快取線之一轉遞的一比率。在包含一共處理器(該共處理器耦接至該快取區且經組態以執行由該一或多個處理器發出給該共處理器之共處理器指令)的系統中,該一或多個指示包含由該共處理器發出至該快取區的記憶體請求。關鍵性控制電路34可經組態以基於由該一或多個處理器所產生經指示為共處理器預提取請求的預提取請求而推定該等共處理器記憶體請求。如上文所提及,MCache 40可提供在該第二快取區中可分配給來自LLC 14之資料的一容量指示,且其中該控制電路經組態以基於該容量指示低於一臨限而使用該複數個關鍵性等級之一最低者來覆寫該複數個關鍵性等級。
在一實施例中,一種方法可包含:指派關鍵性值給在一快取區中之快取線,其中一給定關鍵性值對應於一給定快取線;在選擇用於置換的一受害者快取線期間,相較於未識別為關鍵的快取線而將藉由該等對應關鍵性值識別為關鍵的快取線優先保留,其中該選擇係進一步基於由該快取區維護的置換資料,該置換資料與該等關鍵性值分開;偵測經識別為關鍵的該等快取線中之至少一些不再關鍵的一或多個指示;及基於該一或多個指示而忽略用於受害者選擇及置換資料更新的該等關鍵性值。例如,在一實施例中,該方法進一步包含針對在該置換資料中之複數個最近最少使用位置中且具有指示關鍵狀態之關鍵性值的快取線監測一快取命中率,且該一或多個指示之一者係基於該快取命中率低於一臨限位準。在一實施例中,該方法進一步包含監測在該快取區中發生窺探命中且回應於該窺探命中而引起一對應快取線之一轉遞的一比率,且該一或多個指示之一者係基於該窺探命中率高於一臨限位準。在一實施例中,該一或多個指示包含由一共處理器發出至該快取區的記憶體請求,其中該共處理器耦接至該快取區且經組態以執行由一或多個處理器發出給該共處理器的共處理器指令。該方法可進一步包含基於由一或多個處理器所產生經指示為共處理器預提取請求的預提取請求而推定該等共處理器記憶體請求。在一實施例中,該方法可進一步包含提供在一第二快取區中可分配給來自該快取區之資料的來自該第二快取區的一容量指示,且其中該等關鍵性值指示非關鍵及複數個關鍵性等級;及基於該容量指示低於一臨限而使用該複數個關鍵性等級之一最低者來覆寫該複數個關鍵性等級。
圖11係繪示關鍵性控制電路34及MCache 40之一實施例的操作的流程圖,用於將來自LLC 14之經移除快取線插入至MCache 40置換資料中。雖然為了易於理解而依以特定順序展示方塊,但可使用其他順序。可在關鍵性控制電路34及/或MCache 40中平行地執行方塊。可在多個時脈週期內將方塊、方塊之組合及/或流程圖作為整體予以管線化。關鍵性控制電路34/MCache 40可經組態以實施圖11中所示之操作。
若經移除快取線係一關鍵快取線(決策方塊210,「是」分支),則關鍵性控制電路34可產生至MCache 40的插入提示,以將快取線插入在MRU位置處(方塊212)。替代地,MCache 40可偵測快取線之關鍵狀態及將快取線插入在MRU位置處。若快取線係非關鍵的(決策方塊210,「否」分支),則關鍵性控制電路34可基於Capacity_CPU遙測資料而編製索引至MCache插入LUT 36(方塊214)。例如,Capacity_CPU遙測資料可指示可用於來自處理器10A至10N/LLC 14之快取線的MCache 40之平均路數目。可基於各種範圍中之平均路數目來產生索引。例如,對於兩位元插入提示,至多八分之一的路數目、八分之一至四分之一的路數目、四分之一至二分之一的路數目、多於二分之一的路數目可係索引。關鍵性控制電路34可從MCache插入LUT 36中的已編製索引之項目來產生插入提示(方塊216)。
當插入控制電路及LUT 38接收經移除快取區塊,插入提示可用作為LUT 38的索引,且可從表讀取插入位置(方塊218)。插入物控制電路38可基於是否為了節電而切斷MCache路電源來修改插入位置。亦即,每一經切斷電源之路因為其無法使用而佔用置換資料中的LRU位置。若插入位置將位於N個LRU位置之一者中(其中N係經切斷電源之路的數目),則插入位置可增加至N(方塊220)。MCache 40可分配用於快取線的項目,並用快取線更新項目(方塊222),若關於記憶體18中從MCache 40移除的快取線(若存在)之複本經修改,則將該經移除快取線寫入至記憶體18中。MCache 40可更新置換資料以在插入位置處指示所分配項目(方塊224)。
在一實施例中,MCache 40亦可支援用於來自處理器10A至10N/LLC 14之非關鍵快取線的動態插入位置。例如,MCache 40可判定MRU-最非關鍵快取線(不包括偵測到其插入點的快取線),在此段落中稱為位置H。若沒有非關鍵快取線,則MCache 40可將快取線插入在前述段落中描述的經調整插入位置處。然而,若MCache 40中存在有效的非關鍵快取線,且正被插入之快取線已經處於比位置H更MRU位置,則MCache 40可將快取線插入在比位置H更接近MRU的位置。否則,MCache 40可將快取線插入在位置H。MCache 40可更新置換資料以在插入位置處指示所分配項目(方塊224)。
圖12係包括耦接至記憶體18之系統單晶片(SOC) 300之系統的一實施例的方塊圖。如名稱中所隱含,SOC 300之組件可整合至單一半導體基板上作為一積體電路「晶片」。在所繪示之實施例中,SOC 300之組件包括處理器叢集304、另一處理器叢集206、一或多個周邊組件(諸如周邊組件308A至308B,簡稱「周邊裝置」)、記憶體控制器16及通訊網狀結構312。組件304、306、308A至308B及16可全部耦接至通訊網狀結構312。在使用期間,記憶體控制器16可耦接至記憶體18。在一些實施例中,可能存在耦接至對應記憶體的多於一個記憶體控制器。在此類實施例中,可以任何所欲方式跨該記憶體控制器映射記憶體位址空間。在所繪示之實施例中,處理器叢集304可包括複數個處理器(P) 10A至10N。處理器10A至10N可形成SOC 300的中央處理單元(CPU)。處理器叢集304可進一步包括一或多個共處理器(例如,圖12中的共處理器12)。處理器叢集304可進一步包括LLC 14。處理器叢集306可類似於處理器叢集304。因此,SOC 300可係圖1中所示之系統的實施方案。
記憶體控制器16通常可包括用於從SOC 300之其他組件接收記憶體操作及存取記憶體18以完成記憶體操作的電路系統。記憶體12可經組態以存取任何類型的記憶體18。例如,記憶體18可係靜態隨機存取記憶體(SRAM)、動態RAM (DRAM),諸如同步DRAM (SDRAM),其包括雙資料速率(DDR、DRAM2、DR3D、DDR4等)DRAM。可支援DDR DRAM之低功率/行動版本(例如,LPDDR、mDDR等)。記憶體控制器16可包括用於記憶體操作的佇列,用於排序(及潛在地重新排序)操作並將操作呈現至記憶體18。記憶體控制器16可進一步包括資料緩衝器以儲存等待寫入至記憶體的寫入資料nhe等待傳回至記憶體操作之來源的讀取資料。在一些實施例中,記憶體控制器16可包括記憶體快取區(MCache) 40以儲存近期存取過的記憶體資料。在SOC實施方案中,例如,MCache 40可藉由在預期很快再存取的情況中避免從記憶體16再存取資料來減少SOC中的電力消耗。在一些情況下,MCache 40亦可稱為系統快取區,而不是僅供某些組件使用的私用快取區,諸如LLC 14或處理器10A至10N中之快取區。另外,在一些實施例中,系統快取區不需要位於記憶體控制器16內。
周邊裝置308A至308B可係包括在SOC 300中的任何組額外硬體功能。例如,周邊裝置308A至308B可包括:視訊周邊裝置,諸如一或多個圖形處理單元(GPU);一影像信號處理器,其經組態以處理來自相機或其他影像感測器的影像擷取資料;視訊編碼器/解碼器;定標器;旋轉器;混合器(blender);顯示器控制器等。周邊裝置可包括諸如麥克風、揚聲器、介接麥克風及揚聲器的介面、音訊處理器、數位信號處理器、混波器(mixer)等。周邊裝置可包括在包括介面之SOC 100外部用於各種介面的介面控制器,諸如用串列匯流排(USB)、周邊組件互連(PCIe)(包括PCI快速(PCIe))、串列埠及並列埠等。圖12中藉由虛線箭頭繪示在SOC 300外部延伸的至外部裝置的互連。周邊裝置可包括網路周邊裝置,諸如媒體存取控制器(MAC)。可包括任何組硬體。
通訊網狀結構312可係任何通訊網狀結構互連件及用於在SOC 300之組件之間進行通訊的協定。通訊網狀結構312可基於匯流排,包括共用匯流排組態、叉線(cross-bar)組態、及具有橋接器的階層式匯流排。通訊網狀結構312亦可係基於封包的,並且可以橋接器、叉線、點對點、或其他互連而係階層式的。
注意:SOC 300之組件的數目(及圖12中所展示者的子組件的數目,諸如在處理器叢集304及306之各者中的處理器10A至10N)可隨著實施例而變化。另外,一個處理器集群304中的處理器10A至10N的數目可與其他處理器叢集306中的處理器10A至10N的數目不同。可存在比針對圖12所展示之數目更多或更少的各組件/子組件。
基於前述,在一實施例中,一種系統可包含:一或多個處理器,其經組態以發出記憶體請求以存取一記憶體系統;及一快取區,其耦接至該一或多個處理器,且經組態以從該記憶體系統快取資料以供該一或多個處理器存取。該快取區可包含一控制電路,該控制電路經組態以基於快取線經填充至該快取區中時的複數個因素而指派關鍵性值給該等快取線。在一給定快取線之該填充期間,該控制電路可經組態以基於指派給一給定快取線之該關鍵性值而在用於該快取區之置換資料中的一所選取位置處表示該給定快取線。該控制電路可經組態以基於該置換資料而選擇待從該快取區移除的一受害者快取線。該控制電路可經組態以選擇性地防止具有指示一關鍵狀態之關鍵性值的快取線免於基於一機率而選擇作為該受害者快取線。
在一實施例中,該系統進一步包含含一第二快取區,該第二快取區耦接至該快取區,且經組態以從該記憶體系統快取資料以用於該快取區及用於該系統中之一或多個其他快取存取代理。該第二快取區經組態以儲存該受害者快取線及保留由該控制電路指派給該受害者快取線的該關鍵性值之一指示。在一實施例中,該系統進一步包含一記憶體控制器,該記憶體控制器經組態以控制形成該系統記憶體之至少一部分的一或多個記憶體裝置,且該記憶體控制器包括該第二快取區。在一實施例中,該第二快取區可經組態以基於在從該快取區移除該受害者快取線之後發生的另一記憶體請求,而在至該快取區之一填充中用該受害者快取線提供該關鍵性值。在一實施例中,該第二快取區經組態以維持第二置換資料;且該第二快取區可經組態以基於該第二置換資料而從該第二快取區移除快取線。該第二置換資料中之該受害者快取線之一初始位置可基於該關鍵性值。在一實施例中,該系統包含一監測電路,該監測電路耦接至該第二快取區且經組態以提供在該第二快取區中可分配給來自該快取區之資料的該第二快取區中之一容量指示。該快取區可經組態以基於以基於該容量指示產生來用該受害者快取線傳輸的一插入提示。例如,該快取區可包含耦接至該控制電路的一表,該表映射該容量指示之範圍至用於該插入提示之值。在一實施例中,該第二快取區包括一第二表。該第二快取區可經組態以基於該插入提示而選擇該第二表中之一項目。該第二表可經組態以輸出來自該所選取項目的一插入點指示。
在一實施例中,該關鍵性狀態可包括關鍵及非關鍵。在一個實施例中,該關鍵性狀態可進一步指示一或多個關鍵性等級之一者被指派給一關鍵快取線。
在一個實施例中,該控制電路可經組態以基於命中在該快取區中之一第二給定快取線的一請求而更新該置換資料。可基於指派給該第二給定快取線的該關鍵性值及在該置換資料中表示之其他快取線的該等關鍵性值來更新該置換資料,以將儲存該第二給定快取線的一第二項目之一位置移動至較接近一最近存取過之位置。例如,在指派給該第二給定快取線的該關鍵性值低於該置換資料中所表示之一或多個其他快取線的該等關鍵性值之情形中,該控制電路可經組態以更新該置換資料,以在該一或多個其他快取線所佔據之位置下方的一第二位置處表示該第二給定快取線。
在一實施例中,該控制電路經組態以針對在該置換資料中之複數個低位置中且具有指示關鍵狀態之關鍵性值的快取線監測一快取命中率。該控制電路可經組態以基於該快取命中率低於一臨限位準而忽略用於受害者選擇及置換資料更新的該等關鍵性值。在一實施例中,該控制電路可經組態以監測用於使快取線從該快取區轉遞之窺探的一窺探命中率。該控制電路可經組態以基於該窺探命中率超過一臨限位準而忽略用於受害者選擇及置換資料更新的該等關鍵性值。
電腦系統
接著轉看圖13,展示一系統700的一實施例的方塊圖。在所繪示的實施例中,系統700包括耦合至一或多個周邊裝置704及一外部記憶體702之系統單晶片(SOC) 706的至少一例項(instance)。提供一電源供應器(PMU) 708,其將供應電壓供應至SOC 706以及將一或多個供應電壓供應至記憶體702及/或周邊裝置704。在一些實施例中,可包括SOC之多於一個例項(且亦可包括多於一個記憶體702)。在一實施例中,記憶體702可包括在圖1及圖12中繪示的記憶體18。在一實施例中,SOC 706可包括圖12所繪示之SOC 300的一例項。
周邊裝置704可取決於系統700的類型而包括任何所欲電路系統。例如,在一實施例中,系統700可為一行動裝置(例如,個人數位助理(PDA)、智慧型手機等),且周邊裝置704可包括用於各種類型無線通訊網狀結構之裝置,諸如Wi-Fi、藍牙、蜂巢式、全球定位系統等。周邊裝置704亦可包括額外儲存器,包括RAM儲存器、固態儲存器、或硬碟儲存器。周邊裝置704可包括使用者介面裝置,諸如顯示螢幕(包括觸控顯示螢幕或多點觸控顯示螢幕)、鍵盤或其他輸入裝置、麥克風、揚聲器等。在其他實施例中,系統700可為任何類型的運算系統(例如,桌上型個人電腦、膝上型電腦、工作站、網上盒等)。
外部記憶體702可包括任何類型的記憶體。例如,外部記憶體702可為SRAM、動態RAM (DRAM)諸如同步DRAM (SDRAM)、雙倍資料速率(DDR、DDR2、DDR3等)SDRAM、RAMBUS DRAM、低功率版本的DDR DRAM(例如,LPDDR、mDDR等)等。外部記憶體702可包括一或多個記憶體模組,記憶體裝置安裝至其中,諸如單進線記憶體模組(SIMM)、雙單進線記憶體模組(DIMM)等。替代地,外部記憶體702可包括一或多個以疊層晶片(chip-on-chip)或疊層封裝(package-on-package)實施方式安裝於SOC 706上的記憶體裝置。
如所繪示,系統700展示具有在廣泛範圍之區域中的應用。例如,系統700可使用為桌上型電腦710、膝上型電腦720、平板電腦730、蜂巢式或行動電話740、或電視機750(或耦接至電視機的機上盒)之晶片、電路系統、組件等的部分。亦說明了智慧型手錶及健康監測裝置760。在一些實施例中,智慧型手錶可包括多種通用運算相關功能。例如,智慧型手錶可提供電子郵件、手機服務、使用者日曆等等。在各種實施例中,健康監測裝置可係專用醫學裝置或否則包括專用健康相關功能性。例如,健康監測裝置可監測使用者之生命徵象,追蹤使用者對其他使用者的接近性以用於流行病皮社交距離之目的,接觸追跡、在健康危機之情況下向緊急服務提供通訊。流行病學功能(諸如接觸者追蹤(contact tracing))、提供對急診醫療服務之通訊等。在各種實施例中,上文所提及之智慧手錶可或可不包括一些或任何健康監測相關功能。亦設想其他穿戴裝置,諸如圍繞頸部穿戴之裝置、可植入人體中之裝置、經設計以提供擴增及/或虛擬實境體驗的眼鏡等等。
系統700可進一步用作為基於雲端之服務770之部分。例如,先前所提及之裝置及/或其他裝置可存取雲端中的運算資源(亦即,遠端地定位硬體及/或軟體資源)。再進一步,系統700可用於除先前所提及之外的居家之一或多個裝置中。例如,居家內之器具可監測及偵測值得關注之條件。例如,在居家內之各種裝置(例如,冰箱、冷氣系統等)可監測裝置之狀態,且提供應偵測到特定事件的警示給屋主(或例如修復設施)。替代地,恆溫器可監測家中之溫度,且可基於屋主對各種條件的回應歷史而自動調整溫氣/冷氣系統。圖13中亦繪示系統700對各種運輸模式的應用。例如,系統700可用於飛機、火車、公共汽車、出租汽車、私人汽車、從私人船至遊輪的水面船隻、機車(用於租賃或自用)等等之控制及/或娛樂系統中。在各種情況下,系統700可用以提供自動化指引(例如,自動駕駛車輛)、一般系統控制及其他。此等及許多其他實施例皆可行及設想。應注意,圖13中所繪示之裝置及應用僅係繪示性且不意欲為限制性。其他裝置係可行且經設想的。
電腦可讀儲存媒體
現在參考圖14,展示電腦可讀儲存媒體800之一實施例的方塊圖。大致來說,一電腦可存取儲存媒體可包括任何可由一電腦在使用期間存取以提供指令及/或資料至電腦的儲存媒體。例如,一電腦可存取儲存媒體可包括儲存媒體,諸如磁性或光學媒體,例如,磁碟(固定式或可移除式)、磁帶、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或藍光光碟。儲存媒體可進一步包括揮發性或非揮發性記憶體媒體,諸如RAM(例如,,同步動態RAM (SDRAM))、Rambus DRAM (RDRAM)、靜態RAM (SRAM)等)、ROM、或快閃記憶體。儲存媒體可以實體方式包括在電腦中而對電腦提供指令/資料。替代地,儲存媒體可連接至電腦。例如,儲存媒體可透過網路或無線鏈路連接至電腦,諸如網路附接儲存器。儲存媒體可透過一周邊介面,諸如通用串列匯流排(USB),而連接。通常,電腦可存取儲存媒體800可以非暫時性方式儲存資料,其中,在此上下文中,非暫時性(non-transitory)可指不在一信號上傳輸指令/資料。例如,非暫時性儲存器可為揮發性(且可回應於電源切斷而喪失已儲存之指令/資料)或非揮發性。
圖14中之電腦可存取儲存媒體800可儲存表示SOC 300之資料庫804。一般而言,資料庫804可係一資料庫,其可由一程式讀取並直接或間接地使用以製造包含SOC 300的硬體。例如,資料庫可係以一高階設計語言(HDL)諸如Verilog或VHDL寫成之硬體功能性的一行為層次描述或暫存器轉移層次(RTL)描述。描述可由一合成工具讀取,該合成工具可合成描述以從一合成庫(synthesis library)產生包含一閘列表的一接線對照表(netlist)。接線對照表包含一閘的集合,其亦表示包含SOC 300之硬體的功能性。可接著放置並路由接線對照表以產生一資料集,該資料集描述將應用至遮罩的幾何形狀。遮罩可接著用於各種半導體製造步驟以產生對應於SOC 300的一或多個半導體電路。替代地,電腦可存取儲存媒體800上的資料庫804可按需求為接線對照表(具有或不具有合成庫)或資料集。
雖然電腦可存取儲存媒體800儲存SOC 300之一表示,但如所欲,其他實施例攜載SOC 100之任何部分的一表示,包括圖12中所示之組件的任何子集。此外,資料庫804可表示如圖1所示的處理器10A至10N、共處理器12、或兩者,且可進一步表示LLC 14及/或記憶體控制器16。資料庫804可表示上述之任何部分。
***
本揭露包括對「一實施例(an embodiment)」或「實施例」群組(groups of “embodiments”)(例如,「一些實施例(some embodiment)」或「各種實施例(various embodiments)」)的引用。實施例係所揭露之概念的不同實施方案或例項。提及「一實施例(an embodiment)」、「一個實施例(one embodiment)」、「一特定實施例(a particular embodiment)」、及類似者不必然指稱相同實施例。設想大量可行的實施例,包括該些具體揭示者,以及落在本揭露之精神或範圍內的修改或替代例。
本揭露可討論可由所揭露之實施例產生的潛在優點。並非這些實施例之所有實施方案將必須表現潛在優點之任何者或全部。無論是針對特定實施方案所實現的優點是否取決於許多因素,其中一些者係在本揭露範圍外。事實上,落在申請專利範圍之範圍內的實施方案可能不會展現一些或所有任何所揭露之優點有許多原因。例如,一特定實施方案可包括本揭露範圍外的其他電路系統(結合所揭露實施例之一者)而使一或多個所揭露優點無效或減弱。此外,特定實施方案(例如,實施方案技術或工具)之次佳設計執行亦可使所揭露優點無效或減弱。即使假定經熟練的實施方案,優點的實現仍可取決於其他因素,諸如於其中部署該實施方案之環境情況。例如,施加至一特定實施方案的輸入可防止在此揭露中解決的一或多個問題免於出現在特定場合,結果係可能無法實現其解決方案的效益。考慮到本揭露外部的可能因素的存在,明確地意欲將本文所述的任何潛在優點並非解讀為必須符合請求項限制以證明侵權。而是,此類潛在優點之識別意欲說明具有本揭露之利益的設計者可用的(多種)改善類型。許可地描述的此類優點(例如,陳述特定優點「可引起」)並非意欲傳達實際上此類優點是否可實現的疑慮,而是認知到實現此類優點的技術現實常取決於額外因素。
除非另外陳述,否則實施例係非限制性的。即,所揭露之實施例並非意欲限制基於本揭露之草擬的申請專利範圍之範圍,即使僅描述關於一特定特徵的一單一實例。所揭露之實施例意欲係說明性而非限制,而在本揭露中沒有與此相反的任何陳述。因此,本申請案意欲允許申請專利範圍涵蓋所揭露之實施例以及此類替代例、修改例、與均等物,此等對於受益於本揭露之所屬技術領域中具有通常知識者來說將是顯而易見的。
例如,此申請案中的特徵可以任何合適的方式組合。據此,在此申請案之審查期間(或主張其優先權之申請案)可對特徵之任何此類組合制定新請求項。具體而言,參考隨附申請專利範圍,可組合來自獨立請求項之特徵與其他獨立請求項之特徵,若適當,包括依附於其他附屬請求項的請求項。類似地,若適當,可組合來自各別附屬請求項之特徵。
據此,雖然隨附的附屬請求項可經草擬,使得各依附於一單一其他請求項,但是亦設想額外相依性。與本揭露一致的附屬項之特徵的任何組合經設想且可在此申請案或另一申請案中主張。簡言之,組合不限於在隨附申請專利範圍中具體列舉者。
若適當,亦設想以一種格式或法定類型(例如,設備)草擬之請求項意欲支持另一種格式或法定類型(例如,方法)之對應請求項。
***
因為本揭露係一法律文件,所以各種用語及詞組可受到行政與司法解釋的規約。公告特此以下段落以及在整份揭露內容提供的定義將用於判定如何解釋基於本揭露所草擬的申請專利範圍。
除非上下文另有明確指定,否則提及項目的單數形式(即,名詞或名詞詞組之前有「一(a/an)」、或「該(the)」)意欲意指「一或多個(one or more)」)。因此,在一請求項提及「一項目(an item)」在沒有隨附上下文情況中不排除該項目的額外例項。「複數個(plurality)」項目係指二或更多個項目之一集合。
在本文中,字語「可(may)」在本文中以許可意涵使用(即,具有可能以、能夠),且非以強制意涵使用(即,必須)。
用語「包含(comprising)」及「包括(including)」及其形式係開放式,意指「包括但不限於(including, but not limited to)」。
當本揭露中關於一選項清單使用用語「或(or)」時,其通常將被理解為以包含性意涵使用,除非上下文另有提供。因此,陳述「x或y (x or y)」相當於「x或y、或兩者(x or y, or both)」,因此:1)涵蓋x,但不涵蓋y;2)涵蓋y,但不涵蓋x;及3)涵蓋x與y兩者。另一方面,諸如「x或y任何者但非兩者(either x or y, but not both)」的詞組清楚表明「或(or)」係以排他性含意意義使用。
陳述「w、x、y、或z、或其任何組合(w, x, y, or z, or any combination thereof)」或「…w、x、y、及z之至少一者(at least one of … w, x, y, and z)」意欲涵蓋涉及在該集合中的單一元件至多總數目個元件的所有可能性。例如,給定集合[w, x, y, z],這些詞組涵蓋該集合之任何單一元件(例如,w,但沒有x、y、或z (w but not x, y, or z))、任何二個元件(例如,w與x,但沒有y或z (w and x, but not y or z))、任何三個元件(例如,w、x與y,但沒有z (w, x, and y, but not z))、及所有四個元件。因此,詞組「…w、x、y、及z之至少一者(at least one of … w, x, y, and z)」係指該集合[w, x, y, z]之至少一個元件,藉此涵蓋此元件清單中的所有可行組合。此詞組並不解讀為需要w之至少一個例項、x之至少一個例項、y之至少一個例項、及z之至少一個例項。
在本揭露中,各種「標示」可置於名詞或名詞詞組之前。除非上下文另有提供,否則用於一特徵的不同標示(例如,「第一電路(first circuit)」、「第二電路(second circuit)」、「特定電路(specific circuit)」、「給定電路(given circuit)」等)係指該特徵的不同例項。額外地,除非另有說明,否則標示「第一(first)」、「第二(second)」、及「第三(third)」當施加至一特徵時並非意味任何類型的順序(例如,空間、時間、邏輯等)。
詞組「基於(based on)」或係用以敘述影響一判定的一或多個因素。此用語不排除可能有額外因素可影響判定。意即,一判定可單獨基於特定因素,或基於該等特定因素以及其他未指出因素。考慮用語「基於B判定A(determine A based on B)」。此用語指出,B係一用以判定A之因素,或B影響A之判定。此用語不排除亦可基於一些其他因素例如C來判定A。此用語亦意欲涵括其中A係單獨基於B而判定的一實施例。如本文所用,用語「基於(based on)」與用語「至少部分地基於(based at least in part on)」同義。
詞組「回應於(in response to/response to)」描述觸發效應之一或多個因素。此詞組不排除額外因素可影響或以其他方式觸發效應的可能性,聯合特定因素或獨立於特定因素任一者。意即,一效應可係單獨回應於該等因素,或可回應於該等被指出因素以及其他未指出因素。考慮詞組「回應於B而執行A (perform A in response to B)」。此詞組指定B係觸發A的執行或觸發A的特定結果的因素。此詞組並不排除亦可回應於某個其他因素(諸如C)而執行A。此詞組亦不排除可聯合回應於B及C而執行A。此詞組亦意圖涵蓋僅回應於B而執行A的實施例。如本文中所使用的,詞組「回應於(responsive to)」與詞組「至少部分回應於(responsive at least in part to)」同義。類似地,詞組「回應於(in response to)」與詞組「至少部分回應於(at least in part in response to)」同義。
***
在本揭露中,不同的實體(其等可能被不同地稱為「單元(unit)」、「電路(circuit)」、其他組件等)可被描述或主張為「經組態(configured)」以執行一或多個任務或操作。此表示法(『實體』經組態以『執行一或多個任務』)在本文中係用以指稱結構(即,實體之物)。具體而言,此表示法係用以指示此結構係經配置以在操作期間執行該一或多個任務。即使一結構目前並未被操作,仍可稱該結構「經組態以(configured to)」執行某任務。因此,經說明或敘述為「經組態以(configured to)」執行某任務的一實體,係指實體之物,諸如裝置、電路、具有處理單元的系統、儲存有可執行用以實施該任務之程式指令的記憶體等。此詞組在本文中並非用以指稱無形之物。
在一些情況中,各種單元/電路/組件可在本文中描述為執行一組任務或操作。應理解,這些實體「經組態以(configured to)」執行該等任務/操作,即使未具體提及。
用語「經組態以(configured to)」並非意欲意指「可組態以(configurable to)」。例如,未經程式化的FPGA將不被視為「經組態以(configured to)」執行一特定功能。然而,此未經程式化的FPGA可係「可組態以(configurable to)」執行該功能。在適當程式化之後,接著,該FPGA可聲稱「經組態以(configured to)」執行特定功能。
為了基於本揭露的美國專利申請案之目的,在一請求項中描述一結構「經組態以」執行一或多個任務,係明確地意欲不援引35 U.S.C. § 112(f)對該請求項元件進行解讀。如果申請人意欲在基於本揭露的美國專利申請案的審查期間援引章節112(f),將使用「用以『執行一功能』之構件」這樣的句構來陳述請求項元件。
在本揭露中可描述不同的「電路(circuit)」。這些電路或「電路系統(circuitry)」構成包括各種類型電路元件的硬體,諸如組合式邏輯、時控儲存裝置(例如,正反器、暫存器、鎖存器等)、有限狀態機、記憶體(例如,隨機存取記憶體、嵌入式動態隨機存取記憶體)、可程式化邏輯陣列等。電路系統可經客製化設計或自標準程式庫取用。在各種實施方案中,電路系統可依需要包括數位組件、類比組件、或兩者之組合。某些類型的電路通常可稱為「單元(unit)」(例如,解碼單元、算術邏輯單元(ALU)、功能單元、記憶體管理單元(memory management unit, MMU)等)。此類單元亦指電路或電路系統。
因此,所揭露之電路/單元/組件及圖式中所繪示與本文所揭露的其他元件包括硬體元件,諸如前述段落中所述者。在許多例項中,可藉由描述一特定電路之功能來指定在該電路內之硬體元件的內部配置。例如,一特定「解碼單元(decode unit)」可描述為執行「處理指令的作業碼,並將該指令路由到複數個功能單元中之一或多者(processing an opcode of an instruction and routing that instruction to one or more of a plurality of functional units)」的功能,其意指該解碼單元「經組態以(configured to)」執行此功能。本功能之說明書對電腦技術領域中具有通常知識者足以意味著用於該電路之一組可行結構。
在各種實施例中,如前述段落中所討論的,電路、單元、及其他元件藉由其等經組態以實施的功能或操作界定。相關於彼此的此類電路/單元/組件之配置及其等互動的方式形成硬體的微架構定義,該硬體最終製造在積體電路中或經程式化至FPGA中以形成微架構定義之實體實施方案。因此,該微階層性定義係由所屬技術領域中具有通常知識者所認知為許多實體實施方案可自其衍生的結構,其等所有皆落入該微階層性定義係所描述之廣泛結構內。即,提出根據本揭露所提供之微階層性定義的具有通常知識的技術人員可在無需過度實驗且在應用通常知識之情況中,藉由以硬體描述語言(hardware description language, HDL)(諸如Verilog或VHDL)編碼電路/單元/組件的描述來實施該結構。HDL描述常以可呈功能性之方式表達。但是對於所屬技術領域中具有通常知識者,此HDL描述係用於將電路、單元、或組件的結構變換成下一層級之實施方案細節的方式。此一HDL描述可採取行為程式碼(其一般並非可合成的)、暫存器傳送語言(register transfer language, RTL)程式碼(其一般係可合成,對比於行為程式碼)、或結構性程式碼(例如,指定邏輯閘及其等連接性的接線對照表)之形式。隨後,HDL描述可依據針對一給定積體電路製造技術所設計的元件庫而合成,且可針對時序、功率及其他原因進行修改以產生一最終設計資料庫,該最終設計資料庫傳送至製造廠以製造遮罩,最後生產出積體電路。一些硬體電路或其部分亦可在一簡圖編輯器(schematic editor)中經客製化設計,並隨合成電路系統被轉移至積體電路設計中。積體電路可包括電晶體及其他電路元件(例如,被動元件諸如電容器、電阻器、電感器等)及電晶體與電路元件間之互連件。一些實施例可實施多個積體電路,該多個積體電路經耦合在一起以實施硬體電路,且/或在一些實施例中可使用離散元件。替代地,HDL設計可經合成至一可程式化邏輯陣列,諸如現場可程式化閘陣列(FPGA),且可於FPGA中實施。此電路群組之設計與這些電路的後續下層實施方案之間的解耦通常導致以下情境,其中當此程序係在電路實施程序的一不同階段執行時,電路或邏輯設計者從不針對下層實施方案指定超出電路經組態以執行動作之描述的特定一組結構。
事實上,電路元件之許多不同的下層組合可用以實施相同規格電路,導致該電路的大量等效結構。如所提及,這些下層電路實施方案可根據製造技術的變化、經選擇以製造積體電路的製造廠、針對一特定專案所提供之元件庫等而變化。在許多情況中,由不同設計工具或方法論進行選擇,以產生此等不同實施方案可係任意的。
此外,對於電路之特定功能規格的單一實施方案常見的是,針對給定實施例,包括大量裝置(例如,數百萬的電晶體)。據此,數量龐大的此資訊使得提供完整陳述用以實施單一實施例之下層結構係不切實際的,更別說是龐大陣列的等效可行實施方案。出於此原因,本揭露描述使用產業中通常採用的功能速記的電路結構。
設想各種實施例,如以下編號實例中所闡述:
1. 一種系統,其包含:
一或多個處理器,其經組態以發出記憶體請求以存取一記憶體系統;及
一快取區,其耦接至該一或多個處理器,且經組態以從該記憶體系統快取資料以供該一或多個處理器存取,其中:
該快取區包含一控制電路,該控制電路經組態以指派關鍵性值給快取線,其中一給定關鍵性值對應於一給定快取線;
在選擇用於置換的一受害者快取線期間,該快取區經組態以相較於未識別為關鍵的快取線而將藉由該等對應關鍵性值識別為關鍵的快取線優先保留,其中該快取區進一步經組態以根據由該快取區維護的置換資料來選擇該受害者快取線,該置換資料與該等關鍵性值分開;
該控制電路經組態以偵測經識別為關鍵的該等快取線中之至少一些不再關鍵的一或多個指示;及
該控制電路經組態以基於該一或多個指示而終止該等快取線之該優先保留。
2. 如實例1之系統,其中該控制電路經組態以針對在該置換資料中之複數個最近最少使用位置中且具有指示關鍵狀態之關鍵性值的快取線監測一快取命中率,且其中該一或多個指示之一者係基於該快取命中率低於一臨限位準。
3. 如實例1或2之系統,其中該控制電路經組態以監測在該快取區中發生窺探命中且回應於該窺探命中而引起一對應快取線之一轉遞的一比率,且其中該一或多個指示之一者係基於該窺探命中率高於一臨限位準。
4. 如實例1至3中任一項之系統,其進一步包含一共處理器,該共處理器耦接至該快取區且經組態以執行由該一或多個處理器發出給該共處理器的共處理器指令,且其中該一或多個指示包含由該共處理器發出至該快取區的記憶體請求。
5. 如實例4之系統,其中該控制電路經組態以基於由該一或多個處理器所產生經指示為共處理器預提取請求的預提取請求而推定該等共處理器記憶體請求。
6. 如前述實例之系統,其進一步耦接至該快取區的包含一第二快取區,其中該第二快取區經組態以提供在該第二快取區中可分配給來自該快取區之資料的一容量指示,且其中該等關鍵性值指示非關鍵及複數個關鍵性等級,且其中該控制電路經組態以基於該容量指示低於一臨限而使用該複數個關鍵性等級之一最低者來覆寫該複數個關鍵性等級。
7. 如前述實例之系統,其中該控制電路經組態以至少部分地藉由忽略用於受害者選擇及置換資料更新的該等關鍵性值來終止該優先保留。
8. 一種系統,其包含:
一或多個處理器,其經組態以發出記憶體請求以存取一記憶體系統;及
一快取區,其耦接至該一或多個處理器,且經組態以從一記憶體系統快取資料以供一或多個處理器存取,其中該快取區包含一控制電路,且其中:
該控制電路經組態以指派關鍵性值給快取線,其中一給定關鍵性值對應於一給定快取線;
在選擇用於置換的一受害者快取線期間,該快取區經組態以相較於未識別為關鍵的快取線而將藉由該等對應關鍵性值識別為關鍵的快取線優先保留,其中該快取區進一步經組態以根據由該快取區維護的置換資料來選擇該受害者快取線,該置換資料與該等關鍵性值分開;
該控制電路經組態以偵測經識別為關鍵的該等快取線中之至少一些不再關鍵的一或多個指示;及
該控制電路經組態以基於該一或多個指示而加速移除識別為關鍵的該等快取線。
9. 如實例8之系統,其中該控制電路經組態以針對在該置換資料中之複數個最近最少使用位置中且具有指示關鍵狀態之關鍵性值的快取線監測一快取命中率,且其中該一或多個指示之一者係基於該快取命中率低於一臨限位準。
10. 如實例8或9之系統,其中該控制電路經組態以監測在該快取區中發生窺探命中且回應於該窺探命中而引起一對應快取線之一轉遞的一比率,且其中該一或多個指示之一者係基於該窺探命中率高於一臨限位準。
11. 如實例8至10中任一項之系統,其中該一或多個指示包含由一共處理器發出至該快取區的記憶體請求,其中該共處理器耦接至該快取區且經組態以執行由該一或多個處理器發出給該共處理器的共處理器指令。
12. 如實例11之系統,其中該控制電路經組態以基於由該一或多個處理器所產生經指示為共處理器預提取請求的預提取請求而推定該等共處理器記憶體請求。
13. 如實例8至12中任一項之系統,其進一步包含一第二快取區,該第二快取區經組態以提供在該第二快取區中可分配給來自該快取區之資料的一容量指示,且其中該等關鍵性值指示非關鍵及複數個關鍵性等級,且其中該控制電路經組態以基於該容量指示低於一臨限而使用該複數個關鍵性等級之一最低者來覆寫該複數個關鍵性等級。
14. 如實例8至13中任一項之系統,其中該控制電路經組態以至少部分地藉由忽略用於受害者選擇及置換資料更新的該等關鍵性值來加速移除。
15. 一種方法,其包含:
指派關鍵性值給在一快取區中之快取線,其中一給定關鍵性值對應於一給定快取線;
在選擇用於置換的一受害者快取線期間,相較於未識別為關鍵的快取線而將藉由該等對應關鍵性值識別為關鍵的快取線優先保留,其中該選擇係進一步基於由該快取區維護的置換資料,該置換資料與該等關鍵性值分開;
偵測經識別為關鍵的該等快取線中之至少一些不再關鍵的一或多個指示;及
基於該一或多個指示而忽略用於受害者選擇及置換資料更新的該等關鍵性值。
16. 如實例15之方法,其進一步包含針對在該置換資料中之複數個最近最少使用位置中且具有指示關鍵狀態之關鍵性值的快取線監測一快取命中率,且其中該一或多個指示之一者係基於該快取命中率低於一臨限位準。
17. 如實例15或16之方法,其進一步包含監測在該快取區中發生窺探命中且回應於該窺探命中而引起一對應快取線之一轉遞的一比率,且其中該一或多個指示之一者係基於該窺探命中率高於一臨限位準。
18. 如實例15至17中任一項之方法,其中該一或多個指示包含由一共處理器發出至該快取區的記憶體請求,其中該共處理器耦接至該快取區且經組態以執行由一或多個處理器發出給該共處理器的共處理器指令。
19. 如實例18之方法,其進一步包含基於由一或多個處理器所產生經指示為共處理器預提取請求的預提取請求而推定該等共處理器記憶體請求。
20. 如實例15至19之方法,其進一步包含:
提供在一第二快取區中可分配給來自該快取區之資料的來自該第二快取區的一容量指示,且其中該等關鍵性值指示非關鍵及複數個關鍵性等級;及
基於該容量指示低於一臨限而使用該複數個關鍵性等級之一最低者來覆寫該複數個關鍵性等級。
對於所屬技術領域中具有通常知識者而言,一旦已完全瞭解上述揭示內容,則眾多變化及修改將變得顯而易見。意欲將以下申請專利範圍解釋為涵蓋所有此等變化及修改。
10A:處理器
10N:處理器
12:共處理器
14:最後等級快取(LLC)
16:記憶體控制器
18:記憶體
20:指令快取(ICache)
22:指令快取(IC)遺漏佇列
24:執行核心
26:載入佇列(LDQ)
28:資料快取(DCache)
30:記憶體管理單元(MMU)
32:快取區
34:關鍵性控制電路
36:記憶體快取區(MCache)插入查找表(LUT)
38:插入控制電路及LUT
40:MCache
42:監測電路
50:決策方塊
52:關鍵
54:決策方塊
56:決策方塊
58:決策方塊
60:非關鍵
62:表
64:插入
66:更新
70:決策方塊
72:方塊
74:方塊
76:方塊
78:方塊
80:決策方塊/方塊
82:決策方塊
84:決策方塊
86:決策方塊
88:方塊
90:方塊
92:決策方塊
94:方塊
96:方塊
100:決策方塊
102:方塊
104:決策方塊
106:決策方塊
108:方塊
110:決策方塊
114:決策方塊
116:方塊
120:決策方塊
122:方塊
124:決策方塊
126:方塊
128:決策方塊
130:決策方塊
132:方塊
134:決策方塊
136:方塊
138:方塊
140:決策方塊
142:方塊
144:方塊
146:方塊
148:決策方塊
150:方塊
152:決策方塊
154:方塊
160:決策方塊
162:方塊
164:方塊
166:決策方塊
168:方塊
170:決策方塊
172:方塊
174:決策方塊
176:方塊
178:決策方塊
180:方塊
190:方塊
192:方塊
194:方塊
196:決策方塊
198:方塊
200:決策方塊
202:決策方塊
204:決策方塊
206:方塊
208:方塊
210:決策方塊
212:方塊
214:方塊
216:方塊
218:方塊
220:方塊
222:方塊
224:方塊
300:SOC
304:處理器叢集
306:處理器叢集
308A:周邊裝置
308B:周邊裝置
312:通訊網狀結構
700:系統
702:記憶體
704:周邊裝置
706:SOC
708:電力供應器
800:電腦可存取儲存媒體
802:SOC
下文實施方式參照隨附圖式,現在將簡單說明隨附圖式。
〔圖1〕係一系統之一部分之一實施例的方塊圖。
〔圖2〕係繪示一個實施例之關鍵性判定的流程圖。
〔圖3〕係繪示圖1中所展示之最後一層快取(LLC)之一實施例中的LRU插入及更新之表格。
〔圖4〕係繪示在LLC中之受害者選擇之一實施例的流程圖。
〔圖5〕係繪示另一實施例之關鍵性判定的流程圖。
〔圖6〕係繪示一實施例之在LLC中之LRU插入的流程圖。
〔圖7〕係繪示一實施例之在LLC中之LRU升階的流程圖。
〔圖8〕係繪示一實施例之受害者選擇的流程圖。
〔圖9〕係繪示另一實施例之受害者選擇的流程圖。
〔圖10〕係繪示一實施例之針對標記為關鍵之快取線之移除加速的流程圖。
〔圖11〕係繪示一實施例之針對記憶體快取區之快取線之LRU插入的流程圖。
〔圖12〕係系統單晶片(SoC)之一實施例的方塊圖。
〔圖13〕係電腦系統之各種實施例的方塊圖。
〔圖14〕係電腦可存取儲存媒體之一實施例的方塊圖。
雖然本揭露內容中所述實施例可受到各種修改及具有替代形式,其特定實施例係以圖式中實例之方式提出,且將在本文中詳細說明。然而,應理解,圖式及其詳細說明並非意欲將實施例侷限於所揭示之具體形式,而是意欲涵括所有落於所附申請專利範圍的精神與範圍內的修改、均等例及替代例。本文所用之標題僅為排列組織之目的,並非用以限制說明之範疇。
10A:處理器
10N:處理器
12:共處理器
14:最後等級快取(LLC)
16:記憶體控制器
18:記憶體
20:指令快取(ICache)
22:指令快取(IC)遺漏佇列
24:執行核心
28:資料快取(DCache)
30:記憶體管理單元(MMU)
32:快取區
34:關鍵性控制電路
36:記憶體快取區(MCache)插入查找表(LUT)
38:插入控制電路及LUT
40:MCache
42:監測電路
Claims (20)
- 一種系統,其包含: 一或多個處理器,其經組態以發出記憶體請求以存取一記憶體系統;及 一快取區,其耦接至該一或多個處理器,且經組態以從該記憶體系統快取資料以供該一或多個處理器存取,其中: 該快取區包含一控制電路,該控制電路經組態以指派多個關鍵性值給多個快取線,其中一給定關鍵性值對應於一給定快取線; 在選擇用於置換的一受害者快取線期間,該快取區經組態以相較於未識別為關鍵的多個快取線而將藉由該等對應關鍵性值識別為關鍵的多個快取線優先保留,其中該快取區進一步經組態以根據由該快取區維護的置換資料來選擇該受害者快取線,該置換資料與該等關鍵性值分開; 該快取區經組態以針對具有指示關鍵狀態之多個關鍵性值的多個快取線監測一快取命中率; 該控制電路經組態以偵測經識別為關鍵的該等快取線中之至少一些不再關鍵的一或多個指示,其中該一或多個指示之一者係基於該快取命中率低於一臨限位準;及 該控制電路經組態以基於該一或多個指示而終止該等快取線之該優先保留。
- 如請求項1之系統,其中為了監測該快取命中率,該控制電路經組態以針對在該置換資料中之複數個最近最少使用位置中且具有指示關鍵狀態之多個關鍵性值的多個快取線監測一快取命中率。
- 如請求項1之系統,其中該控制電路經組態以監測在該快取區中發生多個窺探命中且回應於一給定窺探命中而引起一對應快取線之一轉遞的一比率,且其中該一或多個指示之一者係基於該窺探命中率高於一臨限位準。
- 如請求項1之系統,其進一步包含一共處理器,該共處理器耦接至該快取區且經組態以執行由該一或多個處理器發出給該共處理器的多個共處理器指令,且其中該一或多個指示包含由該共處理器發出至該快取區的多個記憶體請求。
- 如請求項4之系統,其中該控制電路經組態以基於由該一或多個處理器所產生經指示為多個共處理器預提取請求的多個預提取請求而推定該等共處理器記憶體請求。
- 如請求項1之系統,其進一步包含耦接至該快取區的一第二快取區,其中該第二快取區經組態以提供在該第二快取區中可分配給來自該快取區之資料的一容量指示,且其中該等關鍵性值指示非關鍵及複數個關鍵性等級,且其中該控制電路經組態以基於該容量指示低於一臨限而使用該複數個關鍵性等級之一最低者來覆寫該複數個關鍵性等級。
- 如請求項1之系統,其中該控制電路經組態以至少部分地藉由忽略用於受害者選擇及置換資料更新的該等關鍵性值來終止該優先保留。
- 一種系統,其包含: 一或多個處理器,其經組態以發出記憶體請求以存取一記憶體系統;及 一快取區,其耦接至該一或多個處理器,且經組態以從一記憶體系統快取資料以供一或多個處理器存取,其中該快取區包含一控制電路,且其中: 該控制電路經組態以指派多個關鍵性值給多個快取線,其中一給定關鍵性值對應於一給定快取線; 在選擇用於置換的一受害者快取線期間,該快取區經組態以相較於未識別為關鍵的快多個取線而將藉由該等對應關鍵性值識別為關鍵的多個快取線優先保留,其中該快取區進一步經組態以根據由該快取區維護的置換資料來選擇該受害者快取線,該置換資料與該等關鍵性值分開; 該快取區經組態以針對具有指示關鍵狀態之多個關鍵性值的多個快取線監測一快取命中率; 該控制電路經組態以偵測經識別為關鍵的該等快取線中之至少一些不再關鍵的一或多個指示,其中該一或多個指示之一者係基於該快取命中率低於一臨限位準;及 該控制電路經組態以基於該一或多個指示而加速移除識別為關鍵的該等快取線;及 預提取電路系統,其經組態以預提取資料進該快取區。
- 如請求項8之系統,其中為了監測該快取命中率,該控制電路經組態以針對在該置換資料中之複數個最近最少使用位置中且具有指示關鍵狀態之多個關鍵性值的多個快取線監測一快取命中率。
- 如請求項8之系統,其中該控制電路經組態以監測在該快取區中發生多個窺探命中且回應於一給定窺探命中而引起一對應快取線之一轉遞的一比率,且其中該一或多個指示之一者係基於該窺探命中率高於一臨限位準。
- 如請求項8之系統,其中該一或多個指示包含由一共處理器發出至該快取區的多個記憶體請求,其中該共處理器耦接至該快取區且經組態以執行由該一或多個處理器發出給該共處理器的多個共處理器指令。
- 如請求項11之系統,其中該控制電路經組態以基於由該一或多個處理器所產生經指示為多個共處理器預提取請求的多個預提取請求而推定該等共處理器記憶體請求。
- 如請求項8之系統,其進一步包含一第二快取區,該第二快取區經組態以提供在該第二快取區中可分配給來自該快取區之資料的一容量指示,且其中該等關鍵性值指示非關鍵及複數個關鍵性等級,且其中該控制電路經組態以基於該容量指示低於一臨限而使用該複數個關鍵性等級之一最低者來覆寫該複數個關鍵性等級。
- 如請求項8之系統,其中該控制電路經組態以至少部分地藉由忽略用於受害者選擇及置換資料更新的該等關鍵性值來加速移除。
- 一種方法,其包含: 指派關鍵性值給在一快取區中之多個快取線,其中一給定關鍵性值對應於一給定快取線; 在選擇用於置換的一受害者快取線期間,相較於未識別為關鍵的多個快取線而將藉由該等對應關鍵性值識別為關鍵的多個快取線優先保留,其中該選擇係進一步基於由該快取區維護的置換資料,該置換資料與該等關鍵性值分開; 針對具有指示關鍵狀態之多個關鍵性值的多個快取線監測一快取命中率; 偵測經識別為關鍵的該等快取線中之至少一些不再關鍵的一或多個指示,其中該一或多個指示之一者係基於該快取命中率低於一臨限位準;及 基於該一或多個指示而忽略用於受害者選擇及置換資料更新的該等關鍵性值。
- 如請求項15之方法,其中針對在該置換資料中之複數個最近最少使用位置中且具有指示關鍵狀態之關鍵性值的多個快取線監測一快取命中率。
- 如請求項15之方法,其進一步包含監測在該快取區中發生窺探命中且回應於一給定窺探命中而引起一對應快取線之一轉遞的一比率,且其中該一或多個指示之一者係基於該窺探命中率高於一臨限位準。
- 如請求項15之方法,其中該一或多個指示包含由一共處理器發出至該快取區的多個記憶體請求,其中該共處理器耦接至該快取區且經組態以執行由一或多個處理器發出給該共處理器的多個共處理器指令。
- 如請求項18之方法,其進一步包含基於由一或多個處理器所產生經指示為多個共處理器預提取請求的多個預提取請求而推定該等共處理器記憶體請求。
- 如請求項15之方法,其進一步包含: 提供在一第二快取區中可分配給來自該快取區之資料的來自該第二快取區的一容量指示,且其中該等關鍵性值指示非關鍵及複數個關鍵性等級;及 基於該容量指示低於一臨限而使用該複數個關鍵性等級之一最低者來覆寫該複數個關鍵性等級。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/239,258 | 2021-08-31 | ||
US17/727,020 | 2022-04-22 | ||
US17/727,031 | 2022-04-22 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202422346A true TW202422346A (zh) | 2024-06-01 |
Family
ID=
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9286223B2 (en) | Merging demand load requests with prefetch load requests | |
US12007901B2 (en) | Memory cache with partial cache line valid states | |
US11947457B2 (en) | Scalable cache coherency protocol | |
US20240126457A1 (en) | Dynamic Allocation of Cache Memory as RAM | |
US11886340B1 (en) | Real-time processing in computer systems | |
US11645207B2 (en) | Prefetch disable of memory requests targeting data lacking locality | |
TWI835272B (zh) | 控制快取原則的系統及方法,及快取區 | |
TW202422346A (zh) | 控制快取原則的系統及方法,及快取區 | |
KR20230076814A (ko) | 제외 영역을 갖는 dsb 동작 | |
US11886354B1 (en) | Cache thrash detection | |
US11550716B2 (en) | I/O agent | |
US11704245B2 (en) | Dynamic allocation of cache memory as RAM | |
US11630771B2 (en) | Poison mechanisms for deferred invalidates | |
TWI825910B (zh) | 快取子系統的預測確認 | |
KR20240034258A (ko) | Ram으로서의 캐시 메모리의 동적 할당 | |
WO2022216597A1 (en) | I/o agent |