TWI824780B - 微處理器及其處理零值資料的方法 - Google Patents
微處理器及其處理零值資料的方法 Download PDFInfo
- Publication number
- TWI824780B TWI824780B TW111139461A TW111139461A TWI824780B TW I824780 B TWI824780 B TW I824780B TW 111139461 A TW111139461 A TW 111139461A TW 111139461 A TW111139461 A TW 111139461A TW I824780 B TWI824780 B TW I824780B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- cache
- zero
- information
- tag
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000012545 processing Methods 0.000 title claims abstract description 9
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 claims description 10
- 238000013500 data storage Methods 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 4
- 238000011156 evaluation Methods 0.000 claims 2
- 238000007726 management method Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 239000003550 marker Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910000078 germane Inorganic materials 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 235000012431 wafers Nutrition 0.000 description 1
Images
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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0853—Cache with multiport tag or data arrays
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
- 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
- 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/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Communication Control (AREA)
Abstract
本發明涉及微處理器及其處理零值資料的方法。在一個實施例中,一種微處理器,包括:多個核,所述核各自包括1級(L1)快取記憶體和2級(L2)快取記憶體;以及共用3級(L3)快取記憶體,其包括多個L3標記陣列條目,其中該多個L3標記陣列條目的第一部分與資料相關聯並且該多個L3標記陣列條目的第二部分與資料解耦,其中各個L3標記陣列條目包括標記資訊和資料零資訊,所述資料零資訊表示與所述標記資訊相關聯的任何資料是否已知為零。
Description
本發明是有關於一種快取記憶體管理,且特別是有關於一種末級快取記憶體管理。
大多數現代電腦系統包括進行執行軟體程式所需的計算的微處理器。電腦系統更包括連接到微處理器(或在微處理器內部)的其他裝置,諸如記憶體等。記憶體存儲由微處理器執行的軟體程式指令。記憶體還存儲程式指令操縱以實現程式的期望功能的資料。
電腦系統中的在微處理器外部(或在處理器核外部)的裝置(諸如記憶體等)透過處理器匯流排直接或間接地連接到微處理器(或核)。處理器匯流排包括使微處理器能夠以相對大的組區塊轉送資料的信號集合。當微處理器執行對記憶體中存儲的資料進行計算的程式指令時,微處理器使用處理器匯流排將資料從記憶體取指(fetch)到微處理器中。類似地,微處理器使用處理器匯流排將計算結果寫回到記憶體。
從記憶體取指數據或將資料寫入記憶體所需的時間比微處理器對資料進行計算所需的時間長許多倍。因此,微處理器低效地空閒等待以從記憶體中取指數據。為了減少這個問題,現代微處理器包括至少一個高速緩衝記憶體。高速緩衝記憶體或快取記憶體是微處理器(或處理器核)內部的記憶體,其存儲系統記憶體中的資料的子集,且通常比系統記憶體小得多。當微處理器執行引用資料的指令時,微處理器檢查以查看資料是否存在於快取記憶體中並且是有效的。如果是,則因為資料已經存在於快取記憶體中,因此可以比必須從系統記憶體檢索資料的情況更快地執行指令。也就是說,當使用處理器匯流排將資料從記憶體取指到快取記憶體時,微處理器不必等待。微處理器檢測出資料存在於快取記憶體中並且有效的狀況通常被稱為快取記憶體命中。所引用的資料不存在於快取記憶體中的狀況通常被稱為快取記憶體未命中。當所引用的資料已經在高速緩衝記憶體中時,透過避免從外部記憶體檢索資料所需的額外時鐘週期,實現了顯著的時間節省。
在一些微處理器中,快取記憶體實際上由多個快取記憶體組成。多個快取記憶體被佈置在多個級別的層級中。例如,微處理器可以具有兩個快取記憶體,稱為第一級(L1)快取記憶體和第二級(L2)快取記憶體。L1快取記憶體比L2快取記憶體更靠近微處理器的計算元件。也就是說,L1快取記憶體能夠比L2快取記憶體更快地向計算元件提供資料。L2快取記憶體通常比L1快取記憶體更大並且具有更多的存儲資源。一些微處理器可以具有第三快取記憶體(L3),其可以大於L2快取記憶體。L3快取記憶體有時被稱為末級快取記憶體(LLC),並且是可由微處理器的所有核完全訪問和利用的共用快取記憶體。
多級快取記憶體層級的重要設計考慮因素是包含策略(例如,包含性、非包含性、排他性)。眾所周知,包含性快取記憶體層級(例如,在L3快取記憶體中找到L2快取記憶體中的每個快取記憶體行)允許在L3快取記憶體處過濾傳入的監聽(例如,如果L3快取記憶體中存在未命中,則不需要在L2快取記憶體處監聽),但是這以複製資料(例如,在L2快取記憶體和L3快取記憶體之間)的快取記憶體空間低效為代價。此外,在包含性快取記憶體層級中,從L3快取記憶體中逐出(evict)快取記憶體行需要在逐出之前將無效返回消息(back-invalidation message)發送到適當的(例如,如基於核有效位所確定的)L2快取記憶體。非包含性快取記憶體減少了對複製的需要,並且從L3快取記憶體中進行逐出不需要向L2快取記憶體發送無效返回。然而,一個缺點是需要將L3快取記憶體中未命中的傳入監聽發送到所有L2快取記憶體。排他性快取記憶體受益于高效的空間利用,但是也增加了涉及將快取記憶體行從L2快取記憶體引入L1(以及在從L1快取記憶體逐出到L2快取記憶體之前將L1內容對應寫入到L2)的事務所用的L1-L2頻寬。例如,如果存在(例如,來自試圖寫入位址1000的裝置的)傳入L3快取記憶體的外部監聽,則需要彈出(eject)位址1000的所有副本。L3快取記憶體需要向微處理器中的每個單個核發送監聽,並且如果存在許多核(例如,64個核),則(例如,在互連上)存在增加的業務量。
已經開發了被稱為非包含性快取記憶體、包含性目錄(NCID)的快取記憶體層級架構,其使得在維持包含標記(tag)以受益於監聽過濾能力的同時使資料能夠是非包含性的或半排他性的或排他性的。通常,NCID架構解耦至少一些標記和資料管理(其中L3標記資訊包含所有L2標記資訊),並且存在比資料陣列條目數量更大的標記/目錄陣列條目(也稱為標記陣列條目)。例如,L2快取記憶體中的一些快取記憶體行在L3快取記憶體中具有重複的標記資訊,但是在L3快取記憶體中沒有相應的資料,這允許包含標記以及非包含性或排他性資料分配。注意,在下文中,主標記/目錄陣列條目(或主標記陣列條目)與資料(資料陣列條目)相關聯,且擴展標記/目錄陣列條目(或擴展標記陣列條目)與資料(資料陣列條目)解耦或不與其相關聯。對於在快取記憶體層級的所有級中未命中的記憶體訪問,將返回資料提供給L2快取記憶體,並且可以經由分配給主標記/目錄陣列條目的未命中標記/目錄陣列資訊以及存儲在相應資料陣列中的資料來在L3快取記憶體中分配,或者在資料陣列中不存儲資料的情況下將未命中標記/目錄陣列資訊分配給擴展標記/目錄陣列條目。從L3快取記憶體中逐出可以取決於情況。例如,如果正從L3快取記憶體逐出的位址還具有相關聯的資料,則可以在保留標記/目錄陣列資訊的同時逐出資料。或者,正從L3快取記憶體逐出的位址沒有相關聯的資料,因此向L2快取記憶體生成無效返回,其中一旦L2快取記憶體已經逐出了資料,就在L3快取記憶體處完成位址逐出。對於傳入監聽,問詢L3快取記憶體以找到快取記憶體行在一個或多於一個L2快取記憶體中的位置,並且如果快取記憶體行不存在,則將請求發送到記憶體,否則,如果快取記憶體行存在(在L3快取記憶體中資料不存在的情況下),則將請求轉發到具有快取記憶體副本的L2快取記憶體。NCID架構的進一步資訊可以參閱Intel®架構集團的Intel®實驗室於2010年5月公開的“NCID:A Non-inclusive Cache,Inclusive Directory Architecture for Flexible and Efficient Cache Hierarchies (作者為Li Zhao、Ravi Iyer、Srihari Makineni、Don Newell和Liqun Cheng)”,其全部內容透過引用併入本文。
儘管NCID架構的益處是顯而易見的,但是仍然存在與命中L3快取記憶體且不具有資料相關聯的成本。L3快取記憶體中的資料越多,用以使資料回到請求核的對其他核的查詢越少,但代價是可能複製的資料用的裸晶(die)區域更多。此外,並非所有資料都是同等重要的。例如,零值快取記憶體行資料是用於初始化變數的常見資料值,此外,使用作業系統範式將大的記憶體區域清零。例如,當作業系統正在匿名化頁面時發生常見的用例,其中作業系統基本上正在為某些應用分配新的記憶體區域,並且想要將所有內容清零,使得這些應用不能推斷與使用該記憶體區域的先前應用有關的任何內容。
在一個實施例中,一種微處理器包括:多個核,所述多個核中的各個核包括1級快取記憶體即L1快取記憶體和2級快取記憶體即L2快取記憶體;以及共用3級快取記憶體即共用L3快取記憶體,其包括多個L3標記陣列條目,其中所述多個L3標記陣列條目的第一部分與資料相關聯並且所述多個L3標記陣列條目的第二部分與資料解耦,其中各個L3標記陣列條目包括標記資訊和資料零資訊,所述資料零資訊表示與該標記資訊相關聯的任何資料是否已知為零。
本發明的其它系統、方法、特徵和優點對於本領域技術人員來說,在研究了以下附圖和詳細的描述之後將是明顯的或變得明顯。所有這樣的附加系統、方法、特徵和優點旨在被包括在該說明書內、在本發明範圍內,並且由所附申請專利範圍保護。
公開了多核微處理器的三級(L3)快取記憶體管理方法以及相關聯的系統和裝置的某些實施例,其提供對根據非包含性快取記憶體、包含性目錄(NCID)格式所設計的末級快取記憶體(LLC)的改進。在一個實施例中,L3快取記憶體管理方法在每個快取記憶體行、L3快取記憶體中的標記陣列條目中提供資料零資訊,該資料零資訊提供是否已知數據為零值的表示。相反,當存在具有資料的快取記憶體行時,典型的犧牲快取記憶體(victim cache)(例如,L3快取記憶體或LLC)需要在相關聯的資料陣列中分配空間以保持快取記憶體的資料。在一些實施例中,對於根據路而配置的快取記憶體行標記陣列條目,當多核微處理器的核進行全零的存儲或回寫時,非包含性LLC可以放棄為相應路分配資料存儲,而是設置位元(資料零資訊)。如果LLC已經具有為快取記憶體行分配的資料存儲,則可以對存儲解除配置、或者選擇以重新分配以供稍後的非零寫入。對LLC中的該快取記憶體行的後續讀取可以放棄啟用資料陣列和/或放棄進行高成本的資料讀取,而仍然返回已知零資料。在一些實施例中,LLC可以在不需要任何新事務類型或指令的情況下利用所接收資料的或非縮位元(NOR reduction)來檢測零寫入,從而允許對核及連貫互連完全透明。在一些實施例中,可透過引入某些事務類型來實現零寫入檢測。
已經總結了本發明的L3快取記憶體管理方法的某些特徵,現在將詳細參考如附圖所示的L3快取記憶體管理方法的描述。雖然將結合這些附圖描述L3快取記憶體管理方法,但是並不旨在將其限制于本文公開的一個或多於一個實施例。也就是說,雖然本發明易於進行各種修改和替代形式,但是其具體實施例在附圖中以示例的方式示出,並且將在本文中詳細描述,足以使本領域技術人員理解。然而,應當理解,附圖及其詳細描述並不旨在將本發明限制於所公開的特定形式。相反,本發明旨在涵蓋落入由所附申請專利範圍限定的本發明的精神和範圍內的所有修改、等同物和替代物。如貫穿本申請所使用的,詞語“可以”以允許的意義(即,意味著具有可能)而不是強制意義(即,意味著必須)使用。類似地,詞語“包括”、“包含”和“含括”(並且與“具備”、“具有”和“含有”類似)意指包含(具有),但不限於此。
各種單元、模組、電路、邏輯或其他元件可以被描述為“被配置為”進行一個或多於一個任務。在這樣的上下文中,“被配置為”是結構的廣泛敘述,一般意味著“具有電路或其他物理結構”,所述電路或其他物理結構在操作期間進行或能夠進行一個或多於一個任務。電路可以是專用電路,或在編碼指令的控制下操作的更通用的處理電路。也就是說,在描述本發明的各種實施例的某些方面或特徵時,可以在本文中使用如“單元”、“模組”、“電路”、“邏輯”和“元件”等的術語。本領域技術人員將理解,無論所述電路是專用電路還是在微編碼指令控制下操作的更通用的電路,對應特徵都是利用電路實現的。
此外,單元/模組/電路/邏輯/元件可以被配置為即使當單元/模組/電路/邏輯/元件當前未在操作中時也進行任務。對被配置為進行一個或多於一個任務的單元/模組/電路/邏輯/元件的敘述明確地不旨在視為針對該單元/模組/電路/邏輯/元件的功能性限定(美國專利法典第35編第112(f)款)。在這方面,本領域普通技術人員將理解,電路元件的特定結構或互連通常將由設計自動化工具的編譯器(諸如寄存器傳送語言(RTL)編譯器)確定。RTL編譯器對非常類似於組合語言代碼的腳本進行操作,以將腳本編譯成用於最終電路的佈局或製造的形式。
也就是說,使用更高級的軟體工具來設計積體電路(諸如本發明的積體電路),以對電路的期望功能操作進行建模。眾所周知,“電子設計自動化”(或EDA)是用於設計諸如積體電路等的電子系統的一類軟體工具。EDA工具還用於將設計功能性程式設計到現場可程式設計閘陣列(FPGA)中。如Verilog和超高速積體電路(例如,VHDL)等的硬體描述符語言(HDL)用於創建電路的高級表示,從中可以匯出低級表示和最終的實際佈線。實際上,由於現代半導體晶片可以具有數十億個元件,因此EDA工具被認為是其設計所必需的。在實踐中,電路設計者使用如C/C++等的程式設計語言來指定操作功能。EDA軟體工具將指定的功能轉換為RTL。然後,硬體描述符語言(例如Verilog)將RTL轉換為門的離散網表。該網表定義了由例如代工廠生產的實際電路。實際上,這些工具因其在促進電子和數位系統的設計過程中的作用和用途而眾所周知和被理解,因此不需要在本文中描述。
圖1是示出實現L3快取記憶體管理方法的實施例的示例微處理器的方塊圖。如本文將描述的,本發明涉及對NCID快取記憶體層級架構特別是當遇到零值資料時的改進。下面描述一個示例架構,其中可以部署NCID快取記憶體層級架構,並且可以利用L3快取記憶體管理方法的實施例。就此而言,現在參考圖1,圖1是示出多核微處理器100的圖。本領域普通技術人員從本文提供的說明書可以理解,本發明可以以各種電路配置和架構來實現,並且圖1所示的架構僅僅是許多合適的架構中的一個。具體地,在圖1所示的實施例中,微處理器100是八核處理器,其中核被枚舉為核0 110_0至核7 110_7。在所示實施例中,省略了許多電路元件和細節,這些電路元件和細節與理解本發明沒有密切關係。如本領域普通技術人員將理解的,各個處理核(110_0至110_7)包括在整個微處理器100中複製的某些關聯或伴隨電路。各個這樣的相關子電路在所示實施例中表示為片。在八個處理核110_0至110_7的情況下,對應地存在八個片102_0至102_7。本文未描述的其他電路僅表示為“其他片邏輯”140_0至140_7。
在所示實施例中,採用三級快取記憶體系統,其包括根據NCID配置的一級(L1)快取記憶體、二級(L2)快取記憶體和三級(L3)快取記憶體。L1快取記憶體被分成資料快取記憶體和指令快取記憶體兩者,分別表示為L1D和L1I。L2快取記憶體也駐留在核上,這意味著L1快取記憶體和L2快取記憶體兩者都在與各個片的核相同的電路中。在一個實施例中,各個核L2包括該核L1,但是在一些實施例中,可以是部分包括核L1。各個片的各個核具有其自身的專用L1D、L1I和L2快取記憶體。(例如,由所有核共用的)共用L3快取記憶體在核外部但在各個片內。在一個實施例中,L3快取記憶體130_0至130_7(在本文中也統稱為130)是分散式快取記憶體,這意味著L3快取記憶體的1/8駐留在片0 102_0中,L3快取記憶體的1/8駐留在片1 102_1中等。在一個實施例中,各個L1快取記憶體的大小為32k,各個L2快取記憶體的大小為256k,並且L3快取記憶體的各個片的大小為2百萬位元組。因此,L3快取記憶體的總大小是16百萬位元組。注意,在一些實施例中可以使用其他單獨或聚合快取記憶體大小。注意,L3快取記憶體可以被認為包括(請求L3快取記憶體中未命中的核上填充的)無數據路和(例如,回寫乾淨或髒資料的核上填充的)包含資料的路,其中在一些實施例中,包含資料的路和無數據路是互斥的(例如,快取記憶體行可以駐留在一個或另一個中,但不可以駐留在兩者中)。
在各個片中提供匯流排介面120_0至120_7,以管理不同片之間的來自各種電路元件的通信。如圖1所示,通信匯流排190用於允許各種電路片之間以及與非核電路160的通信。通信匯流排和匯流排介面可以被稱為互連(例如,2D網格)。非核電路160僅表示在處理器晶片上的附加電路,但不是與各個片相關聯的核電路的一部分。與各個所示的片一樣,非核電路160包括匯流排介面電路(非核匯流排介面) 162。還示出了記憶體控制器164,用於與處理器外(片外)記憶體180(例如,DRAM)接合。最後,其他非核邏輯166由方塊廣義地表示,其表示可以被包括為非核處理器電路的一部分的其他電路(並且再次地,不需要為了理解本發明而對其進行描述)。
為了更好地說明一些電路元件的某些內部和外部通信,將呈現以下示例。該示例示出了與核6快取記憶體中的假設的載入未命中相關聯的通信。也就是說,該假設假定處理核6 110_6正在執行請求在假設位址1000處載入資料的代碼。當遇到這樣的載入請求時,系統首先在L1D 114_6中進行查找以查看該資料是否存在於L1D快取記憶體中。假定資料不在L1D快取記憶體中,則在L2快取記憶體112_6中進行查找。再次地,假定資料不在L2快取記憶體中,則進行查找以查看資料是否存在於L3快取記憶體中。如上所述,L3快取記憶體是分散式快取記憶體,因此如果資料實際上駐留在L3快取記憶體中,則系統首先需要確定資料應該駐留在L3快取記憶體的哪個片中。眾所周知,可以使用僅僅是位的異或(exclusive OR)的散列函數來進行該處理,以獲得三位元位址(足以識別資料存儲在哪個片(片0至片7)中)。
與該示例一致,假定該散列函數導致資料(如果存在於L3快取記憶體中)將存在於L3快取記憶體的駐留在片7中的該部分中的表示。然後,透過匯流排介面120_6和120_7從片6 102_6的L2快取記憶體到存在於片7 102_7中的L3快取記憶體進行通信。該通信在圖中由帶圓圈的數位1表示。如果資料存在於L3快取記憶體中,則該資料將從L3快取記憶體130_7通信回L2快取記憶體112_6。然而,並且在該示例中,假定資料也不在L3快取記憶體中,導致快取記憶體未命中。因此,透過記憶體控制器164,從L3快取記憶體130_7透過匯流排介面7 120_7透過非核匯流排介面162到片外記憶體180進行通信。該通信在圖中由帶圓圈的數位2表示。然後,包括駐留在位址1000處的資料的快取記憶體行從片外記憶體180透過記憶體控制器164和非核匯流排介面162通信回到片6的L2快取記憶體(請求核)中。用於這樣的記憶體訪問或者用於逐出或傳入監聽的對L3快取記憶體130的分配通常是已知的,並且在上面針對NCID架構進行了描述,並且除非下面另有說明、為了簡潔起見在這裡省略。
注意,關於每個L1快取記憶體的快取記憶體行,在一個實施例中,快取記憶體行是64位元組。因此,每個時鐘週期可以載入64位元組的載入資料。如上所述,在一個實施例中,L2快取記憶體的大小優選地為256KB。
現在將注意力轉向圖2A-2B,其示出了根據本發明的某些實施例的示例性資料關聯快取記憶體行標記陣列條目和無數據快取記憶體行標記陣列條目。圖2A示出靜態陣列200A,其包括快取記憶體行標記陣列條目202(表示為“標記及核有效加”或者標記/CV+,如下文結合圖2C所述,其象徵性地表示散列化的位址標記資訊、核有效資訊及附加中繼資料)及資料陣列條目204。在一個實施例中,各個資料陣列條目包括64個位元組,但在一些實施例中可使用其它值。在圖2A中所示出的此簡單示例實施例中,靜態陣列200A(針對各個片的各個L3快取記憶體)包括八(8)路標記陣列,其中快取記憶體行標記陣列條目202的五(5)個路206(在下文中簡稱為標記陣列條目或統稱為目錄)預定為與五(5)個資料陣列條目204相關聯,並且標記陣列條目202的三(3)個路208包括無數據標記陣列(例如,與相應資料陣列解耦)。換句話說,在該示例中,(在圖2A中從上向下索引的)路0-5具有與其相關聯的資料,並且路6-8不具有相關聯的資料(無數據)。因此,存在對L3快取記憶體的訪問命中了標記陣列或目錄(例如,對於路208)但不存在相應的資料存儲的情況,這導致需要(例如,基於如下解釋的核有效資訊)從其他核獲得資料。
實際上,NCID方式僅將資料維持在L3快取記憶體中(其中該資料不會還駐留在核之一中),還使得能夠在不將資料帶入L3快取記憶體中的情況下(透過包含性目錄或標記陣列)跟蹤資料。經由L3標記陣列202來跟蹤微處理器中任意處的L2快取記憶體中的任意快取記憶體行,但在L3快取記憶體中不一定具有分配給該快取記憶體行的資料存儲。注意,路和/或標記和/或資料條目的數量僅作為說明性示例,並且在一些實施例中可以使用其他數量。例如,在一些實施例中,各個L3片被分派成4096集×17路,其中路0-7具有與其相關聯的資料存儲,並且路8-16是無數據的(例如,L3標記陣列包括路路0-16,其中L3資料陣列包括路0-16中的路0-7)。在NCID文章中還描述了示例靜態方案,因此為了簡潔起見,這裡省略了進一步的討論。
圖2B示出類似地包括八(8)路標記陣列202的動態陣列200B,但標記陣列202的任意給定路(例如,其中五個)可以按照運行時所需且根據標記陣列條目202中所維持的(由圖2B中的箭頭表示的)(資料路)指標來與資料陣列204相關聯。在此方案中,代替將目錄路及資料路分別視為單獨且預定的標記陣列路及資料路,動態陣列200B在此示例中被視為具有八(8)個路,其中各個路具有表示資料是否與其相關聯的位元(例如,資料有效位元),且如果是(例如,資料有效位元被設置為1),則使用(資料路資訊的)3位元指標來表示資料陣列條目中的哪一者對應于標記條目路。在NCID文章中也描述了示例動態方案,因此為了簡潔,這裡省略了進一步的討論。注意,在一些實施例中,也如NCID文章中所述,標記陣列可以是與L3快取記憶體中的主標記陣列(具有關聯的資料)結合使用的擴展標記陣列(例如,無數據)。注意,在一些實施例中,路可指代標記陣列條目路或資料陣列條目路。
現參考圖2C,示出可與資料陣列相關聯或與資料陣列解耦的示例標記陣列條目202(例如,圖2A中的多個標記陣列條目202或目錄中的標記/CV+條目202之一)的實施例。標記陣列條目202包括多個資訊或欄位, (在圖2C中從左到右)包括標記資訊210、資料零資訊212、資料有效資訊214、資料路資訊216、MESI資訊218(根據已知的基於無效的快取記憶體一致性協議MESI,包括修改、獨佔、共用及無效這四個排他性狀態)以及核有效資訊220。標記資訊210包括(例如,被散列化以確保例如多個L3快取記憶體庫的統一使用的)位址的高階位。
資料零資訊212包括是否已知數據為零的表示。在一個實施例中,資料零資訊212由單個位元組成,其中位設置為1表明已知數據為零,並且位設置為0通常表明資料未已知為零。關於後一狀況,針對資料訪問來評估資料有效資訊214(例如,位元),其中在一個實施例中,如果資料路有效,則資料有效資訊214被設置為1,並且如果不存在所分配的資料路,則資料有效資訊214被設置為0。注意,當設置了資料零資訊212時,一個結果是不需要詢問或訪問資料路資訊216或資料有效資訊214來嘗試從L3快取記憶體中讀出資料。換言之,不需要從其他核訪問資料,因為現在已知數據是零值的,並且因此可以在沒有附加的陣列訪問處理的情況下返回零。
進一步解釋資料零資訊212,在一個實施例中,如果資料零資訊212被設置為1,則無論資料是否存儲在L3資料陣列中,都已知為零(是零值的)。在知道資料值為零的情況下,不需要進行任何陣列訪問,也不需要問詢其他核。替代地,直接返回零。如下面進一步解釋的,如果資料零資訊212等於零,則對資料有效資訊214進行評估以確定資料是否可用。
略微離題,根據若干技術/方法中的一個來實現已知數據為零的確定。最簡單的方法也許不需要任何新的事務類型或新的指令或者任何作業系統支援。在一個實施例中,在將資料寫入L3快取記憶體中的任意時間(例如,當從L2快取記憶體或L3快取記憶體中逐出經修改的資料時,或者在將資料從系統記憶體帶入L3快取記憶體中的任意時間),L3快取記憶體邏輯將快取記憶體行內容與零進行比較,這通常被稱為或非縮位(NOR reduction)。如果為零,則不將資料寫入資料陣列中,或者理想地、不從資料陣列中逐出有用資料,而是對位元(例如,資料零資訊212)進行設置以表示資料為(已知為)零。該方法對於微處理器的其餘部分是完全透明的,其中L3快取記憶體外部的邏輯不需要知曉該資料零技術。簡單地說,當資料進入時,確定資料為零並且設置資料零位元,並且為進入且非零的資料分配存儲。
在一些實施例中,可以經由新的事務類型來實現已知數據為零的確定。例如,在L3快取記憶體跨互連而分佈(例如,如與單片L3快取記憶體相反的非均勻快取記憶體訪問或NUCA)的實施例中,可以由互連上的核透過在快取記憶體行上顯式地寫入零(例如,諸如用於由作業系統匿名化頁面)來生成新的事務類型。L1D快取記憶體中的硬體可以用於檢測零的寫入,或者可以由使快取記憶體行歸零的核來執行新的x86指令。換句話說,互連事務可以由新的x86指令生成,或者可以生成x86指令以一次寫入64個位元組。可使用特殊邏輯,其基於使快取記憶體行清零的需要或期望而生成與x86指令的此特定變體相對應的新的事務(transaction)。
在一些實施例中,經由使用作業系統可用來清零記憶體區域的重複新字串指令,來實現已知數據為零的確定。例如,微代碼中對重複新字串的特殊支援使得能夠將整個快取記憶體行清零。作為說明,透過在互連上生成新事務,代替請求核0存儲到快取記憶體行的事務,該事務請求核0將快取記憶體行清零。此外,不是返回資料,而是將目錄位元設置設為1。
繼續圖2C的說明,資料有效資訊214在被設置時也意味著資料路資訊216是有效的。如果未設置(例如,零),則資料有效資訊214表明必須從其他核(例如,使用核有效資訊220來找到(一個或多於一個)適當的核)訪問資料。資料路資訊216表明L3快取記憶體中是否存在可用的關聯資料(資料路),且如上文所解釋,資料路資訊216包括用於表示資料陣列條目中的哪一個對應于標記條目路的3位元指標。MESI資訊218和核有效資訊220分別表示已知的MESI狀態和核的專用L1/L2快取記憶體中快取記憶體行的潛在存在。例如,在一個實施例中(例如,對於64核微處理器),存在與各個核相關聯的位設置,以表示特定核是否具有所請求的快取記憶體行。通常,對於給定的L3片容量和關聯性,每個核有效位的數量隨著L3快取記憶體所支持的最大核計數而線性增加,並且標記位元隨著物理位址寬度而線性增加。在一個實施例中,且在假設64核微處理器具有八(8)個資料路的情況下(例如,4096集×17路,其中4096暗示12位元的集索引,並且集索引是物理位址的位元17:6,因此對於46位元物理位址,暗示45-17=28位元標記),各個標記陣列條目202包括64位元核有效資訊220、2位元L3 MESI資訊218、3位元資料路資訊216、1位元資料(路)有效資訊214、1位元資料零資訊212及28位元標記資訊210。在一些實施例中,可以使用其他方案。例如,如果實現非2的冪的數量的資料路,則可以省略資料有效資訊214,並且可以將無數據狀態資訊編碼在資料路資訊216中。
已經描述了L3快取記憶體管理方法的某些實施例的目錄結構(例如,NCID快取記憶體標記陣列格式),關注圖3,其示出了(例如,諸如經由控制單元(例如,狀態機)、快取記憶體控制器以及其他邏輯等在L3快取記憶體中實現的)示例L3快取記憶體管理方法300的實施例。在方塊302中,該方法接收載入請求。例如,當L2快取記憶體接收到來自L1的載入請求時,問詢L2快取記憶體的本地目錄以確定快取記憶體行是否以足夠的MESI駐留在L2中以滿足載入請求。如果快取記憶體行不在L2快取記憶體中,則請求被稱為未命中,並且將被轉發到由物理位址的散列選擇的L3快取記憶體。當L2未命中進入L3快取記憶體時,L3快取記憶體問詢L3快取記憶體的(具有和不具有關聯的資料陣列的)標記陣列結構,其中載入可能在L3中未命中,或者以無數據或包含資料的方式在L3中命中,並且其中首先問詢資料零資訊以避免不必要的陣列訪問。
在方塊304中,所述方法確定載入請求是否在L3快取記憶體中命中(例如,在L3標記陣列或目錄中命中)。如果是(“命中”),則方法300在方塊306處確定是否存在對資料零資訊的命中(位元設置等於1)。如果是(“是”),則該方法在方塊308處在沒有任何陣列訪問的情況下返回L3資料為零。如果不是(在方塊306處為“否”),則方法300在方塊310處確定是否存在資料有效資訊的命中(例如,該快取記憶體行是否具有與其相關聯的資料)。如果是(“是”),則這意味著被命中的目錄/標記陣列(條目)的位置具有關聯的資料有效集,並且因此讀取資料路指標並使用其來選擇資料在哪個路中以在方塊308中返回。注意,快取記憶體命中可以在例如L3快取記憶體的路0中的標記陣列中,並且資料可以在L3快取記憶體中的路6中。簡而言之,如果在標記陣列中設置了資料有效位元,則這意味著存在駐留在L3快取記憶體中的資料。
如果方法300在方塊310處確定為“否”(不是具有資料的命中),則L3快取記憶體正在跟蹤載入請求的快取記憶體行,但是資料物理上不存在於L3快取記憶體內部。換句話說,存在跟蹤快取記憶體行但沒有與其相關聯的資料陣列(無數據路)的標記陣列,因此如方塊312和314中所述選擇核來查詢並指示該核將資料轉發到請求核(並使MESI狀態降級)。特別地,在方塊312處,方法300(例如,根據核有效資訊)選擇包含快取記憶體行的有效核K以供查詢。在一個實施例中,可以經由有效核的隨機選擇來選擇核。在一些實施例中,K可以是諸如基於核的節點識別字的分派的先驗瞭解等的最接近的核的節點識別字。例如,對於64核微處理器,可以存在八行和八列,並且核0-7包括第一列,核8-15包括第二列,以此類推直到核63。因此,如果核1正在進行對該快取記憶體行的請求,並且核2和核63各自具有該快取記憶體行,則可以基於如節點識別字K所表示的與請求核子物理相鄰來選擇核2以滿足該請求。然後,在方塊314中,查詢包括節點識別字的核,並且將來自該核的資料發送到請求核。
如果方法300在方塊304處確定(在標記陣列或目錄中)未命中,則方塊316-324通常是已知的,並且嘗試將當前不存在於快取記憶體層級中的任何地方的快取記憶體行(即,全新的行)帶入快取記憶體層級中(例如,來自系統記憶體或DRAM)。在方塊316中,方法300確定無效路是否存在,因為存在分配到無效路中的偏好。如果不是(對於方塊316為“否”),則這意味著所有路都是有效的,並且因此在方塊318處經由重引用區間預測(re-reference interval prediction)或RRIP(或在一些實施例中的其他技術)來選擇路(W),並且在方塊320處使用該路(W)以逐出所選擇的路。在方塊322處,方法300分配到該路中並將資料有效設置為零,並且將資料發送到請求核。如果方法300確定為存在無效路(在方塊316處為“是”),則在方塊324處選擇該路,並且如上文針對方塊322所描述的那樣發生分配以及資料到核。實際上,選擇路來分配到L3快取記憶體中,逐出快取記憶體行,並更新標記陣列以反映L3快取記憶體現在正在跟蹤新的快取記憶體行的事實。
考慮到以上說明,本領域普通技術人員應瞭解用於在包括多個核的微處理器中處置零值資料的方法的一個實施例,所述核各自包括1級(L1)快取記憶體和2級(L2)快取記憶體,所述微處理器更包括包含多個3級(L3)標記陣列條目的共用L3快取記憶體,所述多個L3標記陣列條目各自包括標記資訊,其中,多個L3標記陣列條目的第一部分(例如,包含資料的路)與資料相關聯,並且多個L3標記陣列條目的第二部分(例如,無數據路)與資料解耦。如圖4所述並表示為方法400的方法包括:在共用L3快取記憶體處接收載入請求(步驟402);以及在不基於共用L3快取記憶體中的載入請求命中而進行資料讀取的情況下返回資料值零(404)。
如本公開的領域的技術人員將理解的,流程圖中的任意處理描述或方塊應當被理解為表示包括用於實現處理中的特定邏輯功能或步驟的一個或多於一個可執行指令的模組、段、邏輯或代碼部分,並且替代實現被包括在實施例的範圍內,其中功能可以與所示出或討論的順序不同地(包括基本上同時或以不同的順序)執行,或者可以省略一個或多於一個方塊,這取決於所涉及的功能。例如,圖4中的方法400可以由微處理器(例如L3快取記憶體)進行。在一些實施例中,可以使用控制單元或快取記憶體管理控制器來進行方法400。
雖然已經在附圖和前述說明中詳細圖示和描述了本發明,但是這樣的圖示和說明被認為是說明性或示例性的而非限制性的;本發明不限於所公開的實施例。透過研究附圖、公開內容和所附申請專利範圍,本領域技術人員在實踐所要求保護的發明時可以理解和實現所公開的實施例的其他變型。
注意,可以使用所公開的實施例的各種組合,並且因此對實施例或一個實施例的引用並不意味著排除來自該實施例的特徵與來自其他實施例的特徵一起使用。在申請專利範圍中,詞語“具有”不排除其他元件或步驟,並且不定冠詞“一”或“一個”不排除多個。
100:微處理器
102_0、102_6、102_7:片
110_0、110_6、110_7:核
112、112_0、112_6、112_7:L2快取記憶體
114_0、114_6:L1D快取記憶體
120、120_0、120_6、120_7:匯流排介面
130_0、130_7:L3快取記憶體
140_0、140_7:其他片邏輯
160:非核電路
162:非核匯流排介面
164:記憶體控制器
166:其他非核邏輯
180:晶片外記憶體
190:虛線
200A:靜態陣列
200B:動態陣列
202:快取記憶體行標記陣列條目
204:資料陣列條目
206:路
208:路
210:標記資訊
212:資料零資訊
214:資料有效資訊
216:訪問資料路資訊
218:MESI資訊
220:核有效資訊
300:方法
302、304、306、308、310、312、314、316:方塊
318、320、322、324:方塊
400:方法
402、404:步驟
參考以下附圖可以更好地理解本發明的各種方面。附圖中的元件不一定按比例繪製,而是將重點放在清楚地說明本發明的原理上。此外,在附圖中,相同的附圖標記在若干個視圖中表示對應的部分。
圖1是示出實現3級(L3)快取記憶體管理方法的實施例的示例微處理器的方塊圖。
圖2A-2B是示出根據本發明的某些實施例的示例資料關聯快取記憶體行標記陣列條目和無數據快取記憶體行標記陣列條目的示意圖。
圖2C是示出示例快取記憶體行標記陣列條目的實施例的示意圖。
圖3是示出示例L3快取記憶體管理方法的實施例的流程圖。
圖4是示出示例L3快取記憶體管理方法的另一實施例的流程圖。
100:微處理器
102_0、102_6、102_7:片
110_0、110_6、110_7:核
112_0、112_6:L2快取記憶體
114_0、114_6:L1D快取記憶體
120_0、120_6、120_7:匯流排介面
130_0、130_7:L3快取記憶體
140_0、140_7:其他片邏輯
160:非核電路
162:非核匯流排介面
164:記憶體控制器
166:其他非核邏輯
180:片外記憶體
190:虛線
Claims (20)
- 一種微處理器,包括: 多個核,所述多個核中的各個核包括1級快取記憶體即L1快取記憶體和2級快取記憶體即L2快取記憶體;以及 共用3級快取記憶體即共用L3快取記憶體,其包括多個L3標記陣列條目,其中所述多個L3標記陣列條目的第一部分與資料相關聯並且所述多個L3標記陣列條目的第二部分與資料解耦,其中各個L3標記陣列條目包括標記資訊和資料零資訊,所述資料零資訊表示與該標記資訊相關聯的任何資料是否已知為零。
- 如請求項1所述的微處理器,其中基於載入請求在所述共用L3快取記憶體中命中並且所述資料零資訊表示與所述標記資訊相關聯的資料已知為零,所述共用L3快取記憶體被配置為在不進行資料讀取的情況下返回資料值零。
- 如請求項1所述的微處理器,其中各個L3標記陣列條目更包括MESI資訊、核有效資訊、以及資料路資訊和資料有效資訊之一或其組合,其中基於載入請求在所述共用L3快取記憶體中命中並且所述資料零資訊不表示與所述標記資訊相關聯的資料已知為零,所述共用L3快取記憶體被配置為確定非零資料是否與所述標記資訊相關聯。
- 如請求項3所述的微處理器,其中基於確定為非零資料與所述標記資訊相關聯,所述共用L3快取記憶體被配置為返回所述非零資料。
- 如請求項3所述的微處理器,其中該確定非零資料是否與所述標記資訊相關聯是基於對所述資料路資訊或所述資料有效資訊的評估。
- 如請求項3所述的微處理器,其中基於確定為非零資料不與所述標記資訊相關聯,所述共用L3快取記憶體被配置為確定所述多個核中的至少一個核以滿足所述載入請求。
- 如請求項1所述的微處理器,其中基於載入請求在所述共用L3快取記憶體中未命中,分配到無效路中或者逐出路。
- 如請求項1所述的微處理器,其中所述共用L3快取記憶體包括非包含性快取記憶體、包含性目錄佈置。
- 如請求項1所述的微處理器,其中所述多個L3標記陣列條目對應于多個路,並且其中基於所述多個核中的一個核進行全零的存儲或回寫,所述共用L3快取記憶體被配置為放棄針對相應的路分配資料存儲並且替代地設置所述資料零資訊的位元。
- 如請求項1所述的微處理器,其中所述資料零資訊由單個位元組成。
- 一種用於在包括多個核的微處理器中處理零值資料的方法,所述核中的各個核包括1級快取記憶體即L1快取記憶體和2級快取記憶體即L2快取記憶體,所述微處理器更包括共用3級快取記憶體即共用L3快取記憶體,所述共用L3快取記憶體包括多個L3標記陣列條目,所述多個L3標記陣列條目中的各個L3標記陣列條目包括標記資訊,其中所述多個L3標記陣列條目的第一部分與資料相關聯並且所述多個L3標記陣列條目的第二部分與資料解耦,所述方法包括: 在所述共用L3快取記憶體處接收載入請求;以及 在不基於所述共用L3快取記憶體中的載入請求命中進行資料讀取的情況下,返回資料值零。
- 如請求項11所述的方法,其中返回資料值零是基於所述多個L3標記陣列條目中的一個L3標記陣列條目的資料零資訊表示與所述標記資訊相關聯的資料已知為零。
- 如請求項12所述的方法,其中所述多個L3標記陣列條目中的各個L3標記陣列條目更包括MESI資訊、核有效資訊、以及資料路資訊和資料有效資訊之一或其組合,其中基於載入請求在所述共用L3快取記憶體中命中並且所述資料零資訊不表示與所述標記資訊相關聯的資料已知為零,確定非零資料是否與所述標記資訊相關聯。
- 如請求項11所述的方法,其中基於確定為非零資料與所述標記資訊相關聯,返回所述非零資料。
- 如請求項11所述的方法,其中,確定非零資料是否與所述標記資訊相關聯是基於對所述資料路資訊或所述資料有效資訊的評估。
- 如請求項11所述的方法,其中基於確定為非零資料不與所述標記資訊相關聯,確定所述多個核中的至少一個核以滿足所述載入請求。
- 如請求項11所述的方法,其中所述資料零資訊由單個位元組成。
- 如請求項11所述的方法,其中所述多個L3標記陣列條目對應于多個路,並且其中基於所述多個核中的一個核進行全零的存儲或回寫,放棄針對相應的路分配資料存儲並且替代地設置所述資料零資訊的位元。
- 如請求項11所述的方法,更包括基於載入請求在所述共用L3快取記憶體中未命中,分配到無效路中或者逐出路。
- 如請求項11所述的方法,其中所述共用L3快取記憶體包括非包含性快取記憶體、包含性目錄佈置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/581,162 | 2022-01-21 | ||
US17/581,162 US11934310B2 (en) | 2022-01-21 | 2022-01-21 | Zero bits in L3 tags |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202331524A TW202331524A (zh) | 2023-08-01 |
TWI824780B true TWI824780B (zh) | 2023-12-01 |
Family
ID=84160916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111139461A TWI824780B (zh) | 2022-01-21 | 2022-10-18 | 微處理器及其處理零值資料的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11934310B2 (zh) |
CN (1) | CN115408310A (zh) |
TW (1) | TWI824780B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701034A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 基于内存访问类型以分路来分配的快取内存 |
TWI620063B (zh) * | 2016-03-10 | 2018-04-01 | 美光科技公司 | 用於快取無效之裝置及方法 |
US20200401440A1 (en) * | 2016-12-31 | 2020-12-24 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
TWI739844B (zh) * | 2016-06-29 | 2021-09-21 | 美商甲骨文國際公司 | 用於控制預先提取以防止記憶體階層中之介面的過飽和之方法及處理器,以及相關之電腦系統 |
TWI739772B (zh) * | 2015-12-18 | 2021-09-21 | 美商英特爾公司 | 處理器、用於安全指令執行管線之方法、及運算系統 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9418016B2 (en) * | 2010-12-21 | 2016-08-16 | Intel Corporation | Method and apparatus for optimizing the usage of cache memories |
US9727464B2 (en) * | 2014-11-20 | 2017-08-08 | International Business Machines Corporation | Nested cache coherency protocol in a tiered multi-node computer system |
US9684603B2 (en) * | 2015-01-22 | 2017-06-20 | Empire Technology Development Llc | Memory initialization using cache state |
US9892039B2 (en) * | 2015-04-21 | 2018-02-13 | Oracle International Corporation | Non-temporal write combining using cache resources |
US20200301840A1 (en) | 2019-03-20 | 2020-09-24 | Shanghai Zhaoxin Semiconductor Co., Ltd. | Prefetch apparatus and method using confidence metric for processor cache |
US11188377B2 (en) * | 2019-10-04 | 2021-11-30 | Arm Limited | Writing zero data |
US12066944B2 (en) * | 2019-12-20 | 2024-08-20 | Advanced Micro Devices, Inc. | Zero value memory compression |
-
2022
- 2022-01-21 US US17/581,162 patent/US11934310B2/en active Active
- 2022-08-25 CN CN202211023481.9A patent/CN115408310A/zh active Pending
- 2022-10-18 TW TW111139461A patent/TWI824780B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701034A (zh) * | 2014-12-14 | 2016-06-22 | 上海兆芯集成电路有限公司 | 基于内存访问类型以分路来分配的快取内存 |
TWI739772B (zh) * | 2015-12-18 | 2021-09-21 | 美商英特爾公司 | 處理器、用於安全指令執行管線之方法、及運算系統 |
TWI620063B (zh) * | 2016-03-10 | 2018-04-01 | 美光科技公司 | 用於快取無效之裝置及方法 |
TWI739844B (zh) * | 2016-06-29 | 2021-09-21 | 美商甲骨文國際公司 | 用於控制預先提取以防止記憶體階層中之介面的過飽和之方法及處理器,以及相關之電腦系統 |
US20200401440A1 (en) * | 2016-12-31 | 2020-12-24 | Intel Corporation | Systems, methods, and apparatuses for heterogeneous computing |
Also Published As
Publication number | Publication date |
---|---|
US11934310B2 (en) | 2024-03-19 |
TW202331524A (zh) | 2023-08-01 |
US20230236972A1 (en) | 2023-07-27 |
CN115408310A (zh) | 2022-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11372777B2 (en) | Memory interface between physical and virtual address spaces | |
US20230393983A1 (en) | Memory Interface Having Multiple Snoop Processors | |
TWI784084B (zh) | 資料管理方法、多處理器系統以及非暫態電腦可讀取儲存媒體 | |
US11914514B2 (en) | Data coherency manager with mapping between physical and virtual address spaces | |
US8180981B2 (en) | Cache coherent support for flash in a memory hierarchy | |
US8001330B2 (en) | L2 cache controller with slice directory and unified cache structure | |
CN108475234B (zh) | 多处理器系统及其方法 | |
US7287122B2 (en) | Data replication in multiprocessor NUCA systems to reduce horizontal cache thrashing | |
KR102742852B1 (ko) | 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법 | |
US20220066940A1 (en) | Limited propagation of unnecessary memory updates | |
CN113641598A (zh) | 微处理器、高速缓存存储器系统及其中实现的方法 | |
TWI824780B (zh) | 微處理器及其處理零值資料的方法 | |
KR100304318B1 (ko) | 프로세서버스에대한캐시조작의요구에기초해서명령을발행하는방법및장치 | |
CN115408311A (zh) | 微处理器中的控制器及其进行的方法 | |
TWI855396B (zh) | 微處理器中的控制器及其進行的方法 | |
CN116150047A (zh) | 用于操作高速缓存存储设备以高速缓存与存储器地址相关联的数据的技术 | |
GB2601900A (en) | Coherency manager | |
GB2589022A (en) | Coherency manager |