TWI731487B - 系統級快取 - Google Patents
系統級快取 Download PDFInfo
- Publication number
- TWI731487B TWI731487B TW108143272A TW108143272A TWI731487B TW I731487 B TWI731487 B TW I731487B TW 108143272 A TW108143272 A TW 108143272A TW 108143272 A TW108143272 A TW 108143272A TW I731487 B TWI731487 B TW I731487B
- Authority
- TW
- Taiwan
- Prior art keywords
- partition
- partitions
- paths
- main
- assigned
- Prior art date
Links
- 238000005192 partition Methods 0.000 claims abstract description 328
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000003860 storage Methods 0.000 claims abstract description 9
- 238000013507 mapping Methods 0.000 claims abstract description 8
- 239000000872 buffer Substances 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 23
- 230000008569 process Effects 0.000 abstract description 12
- 238000004590 computer program Methods 0.000 abstract description 10
- 238000000638 solvent extraction Methods 0.000 abstract description 5
- 230000011218 segmentation Effects 0.000 description 61
- 230000008859 change Effects 0.000 description 24
- 238000004891 communication Methods 0.000 description 16
- 230000009471 action Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000037361 pathway Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 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
-
- 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
-
- 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/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/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
-
- 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/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明係關於用於一系統級快取以藉由一通路分割程序而分配快取資源之方法、系統及設備,包含編碼於電腦儲存媒體上之電腦程式。該等方法中之一者包含:維持分割區與優先級之間的一映射;及以一次序將主要通路分配至各別經啟用分割區,該次序對應於被指派至該等經啟用分割區之該等各別優先級。
Description
本說明書係關於具有積體電路裝置之系統。
一系統級快取(SLC)係快取自一系統中之多個不同硬體裝置之記憶體擷取之資料或將被儲存至該記憶體之資料之一裝置。換言之,SLC之不同快取線可儲存屬於不同硬體裝置之資料。
通常,多個不同硬體裝置為整合至一系統單晶片(SOC)中之不同組件。在本說明書中,透過SLC而提供讀取請求及寫入請求之裝置將被稱為用戶端裝置。
快取可用於藉由減少使用主要記憶體而減少電力消耗。換言之,只要用戶端裝置可在快取中存取其需要之資料,即可將主要記憶體以及通向該主要記憶體之路徑置於一低電力狀態中。
通常將快取組織成具有多個通路之多個集合。使用一請求之記憶體位址來識別用以放置快取線之一特定集合,且若必須替換一現有快取線,則一特定快取原則判定應替換該集合內之該等通路中之哪一通路。舉例而言,一快取可實施一快取原則,根據該快取原則,一集合內之最近最少使用之快取線首先被替換。
某些SLC可經組態以實施一通路分割原則,該通路分割原則將專用通路指派至系統之不同用戶端裝置。此分割之主要目標係針對任何用戶端或共用SLC之用戶端群組而使快取猛移最小化且實現可預測效能或能量節省。因此,舉例而言,一快取原則可規定總是將來自一或多個用戶端裝置之請求儲存於四個通路中且無法針對任何其他用戶端裝置而分配彼等四個通路中之快取線。
本說明書闡述用於在一系統級快取中實施一通路分割原則之技術。通路分割原則允許一系統級快取將通路分配至快取分割區。在本說明書中,一系統級快取之一分割區係針對對於一特定記憶體區域之快取請求而分配之快取資源之一部分。因此,一般在一快取分割區與一特定記憶體區域(例如,一記憶體緩衝區)之間存在一直接對應。因此,存取記憶體區域之一或多個用戶端裝置可共用被分配至對應分割區之快取資源,且可能競爭該等快取資源。
本說明書中所闡述之通路分割原則闡述一系統級快取可如何將主要通路指派至一分割區,此具有以下效應:使實體快取資源專用於由一或多個用戶端裝置存取之一特定記憶體緩衝區。通路分割原則亦允許一系統級快取將次要通路分配至一分割區,此可增加被分配至分割區之通路之數目。然而,亦可與一或多個其他分割區共用次要通路。換言之,次要通路可用於服務於來自用戶端裝置之針對多個不同記憶體緩衝區之記憶體請求,每一記憶體緩衝區對應於一不同各別快取分割區。
本說明書中所闡述之標的物之特定實施例可經實施以便實現以下優點中之一或多者。本說明書中所闡述之通路分割原則允許一系統級快取改良其中實施該系統級快取之硬體裝置之效率。特定而言,快取效能可經裁適以適於不同執行脈絡,此減少對記憶體之電力密集且高延時請求量。換言之,系統級快取可實施分割區,該等分割區動態地改變大小且適應隨時間改變之使用情形。此藉由減少所有執行脈絡中至記憶體之行程而改良裝置之電力效率並使裝置自身更快。另外,當一特定執行脈絡可僅依賴於系統級快取而非主要記憶體時,可將通向高電力記憶體裝置之路徑完全關閉電源或關斷,此進一步改良裝置之電力消耗。通路分割原則亦比其他方法靈活,此乃因該通路分割原則允許高效地運算快取組態而無需預程式化在不同執行脈絡中可或可不為現用之用戶端裝置之每個可能組合。因此,若添加新用戶端裝置或執行脈絡,則分割表之經預組態且經確定優先級之組態允許針對任何給定用戶端或用戶端群組而重新運算通路指派。此等技術亦減少切換執行脈絡之延時,此使裝置自身更好地回應於改變的使用情形。可透過硬體或軟體方法而觸發用戶端及/或執行脈絡之實際添加或移除。另外,分割原則使得能夠使跨越所有可能執行脈絡之快取使用最大化。
在附圖及下文說明中陳述本說明書之標的物之一或多個實施例之細節。依據說明、圖式及申請專利範圍將明瞭標的物之其他特徵、態樣及優點。
圖1A係一實例性系統100之一圖式。系統100包含以通信方式耦合至兩個記憶體裝置140a至140b之一系統單晶片(SOC) 102。SOC 102具有兩個系統級快取(SLC) 120a至120b,一個各別SLC專用於快取記憶體裝置140a至140b中之每一者之資料。然而,一般而言,不需要針對每一記憶體裝置具有一個SLC。另外,一SOC可具有兩個以上SLC。
SOC 102係可安裝於任何適當運算裝置(其可被稱為一主機裝置)上或整合至該任何適當運算裝置中之一裝置之一實例。由於本說明書中所闡述之技術適於節省主機裝置之電力消耗,因此SOC 102可在被安裝於依賴於電池電力之一行動主機裝置(例如,一智慧型電話、一智慧型手錶或另一可穿戴式運算裝置、一平板電腦或一膝上型電腦,僅舉幾個實例)上時係尤其有益的。
SOC 102具有多個用戶端裝置110a至110n。用戶端裝置110a至110n中之每一者可為經組態以透過SOC結構150而讀取資料並將該資料儲存於記憶體裝置140a至140b中之一或多者中之任何適當模組、裝置或功能組件。舉例而言,一用戶端裝置可為一CPU、一特殊應用積體電路或者SOC自身之較低級組件,該等組件各自能夠透過SOC結構150而起始通信。
來自用戶端裝置110a至110n之請求可顯式地或隱式地識別一特定分割區。因此,來自用戶端裝置110a及110b之請求103a至103b識別對應於記憶體140a中之緩衝區X 142a之分割區X。因此,當多個用戶端裝置之記憶體請求識別針對一特定記憶體區域之相同分割區識別符時,該多個用戶端裝置可有效地共用一快取分割區。舉例而言,用戶端110a可為一GPU且用戶端110b可為一顯示控制器,該等用戶端兩者存取記憶體140a中之相同顯示緩衝區。
其他用戶端裝置可藉由發佈具有其他分割區識別符之請求而存取其他分割區。舉例而言,來自用戶端裝置110c之請求103c識別對應於緩衝區Y 142b之分割區Y,且來自用戶端裝置110d之請求103d識別對應於記憶體140a中之緩衝區Z 142c之分割區Z。
SLC 120a係一系統級快取之一實例,其可實施將主要通路及次要通路分配至分割區之一通路分割原則。在某些實施方案中,每一主要通路專用於一單個分割區,且每一次要通路可在多個分割區之一群組當中共用。
舉例而言,如圖1A中所展示,SLC 120a已分配用於分割區X之若干個主要通路105。SLC 120a亦已分配由分割區X、Y及Z共用之若干個次要通路107。
當SLC 120a接收到來自一用戶端裝置之一請求時,SLC 120將使用該請求之分割區識別符來判定如何服務於該請求。舉例而言,當分割區識別符係X時,SLC 120a可使用主要通路105中之任一者或被分配至分割區X之次要通路107中之任一者。但當分割區識別符係Y時,SLC 120a將僅使用被分配至分割區Y之次要通路,該等次要通路亦由分割區X及Z共用。
以此方式分配主要通路防止特定用戶端裝置競爭快取資源。舉例而言,當一單個用戶端裝置正存取具有主要通路之一特定分割區時,該用戶端裝置被保證無任何其他用戶端裝置將替換其快取項目。另一方面,由於次要通路由多個分割區共用,因此次要通路可被存取不同分割區之用戶端裝置替換。然而,次要通路分割仍可起作用以限制用戶端裝置之數目,此次要通路分割對於該等用戶端裝置適用。舉例而言,次要通路107可被用戶端裝置110a至110d而非SOC 102上之其他用戶端裝置中之任一者替換。
SOC結構150係SOC 102之一通信子系統。SOC結構150包含通信通道,該等通信通道允許用戶端裝置110a至110n彼此進行通信以及做出請求以使用記憶體裝置140a至140b來讀取及寫入資料。SOC結構150可包含通信硬體(例如,匯流排或專用互連電路)之任何適當組合。
系統100亦包含允許SLC 120a至120b與記憶體控制器130a至130b之間的通信之通信通道152a至152b以及允許記憶體控制器130a至130b與記憶體裝置140a至140b之間的通信之晶片間通信通道154a至154b。在某些實施方案中,SLC 120a至120b可藉由將此等通信通道152a至152b及154a至154b中之一或多者關閉電源而節省電力。另一選擇係或另外,在某些實施方案中,SLC 120a至120b可將記憶體裝置140a至140b自身關閉電源以進一步保存電力。作為另一實例,SOC 102可進入一時脈切斷模式,其中針對一或多個裝置將各別時脈電路關閉電源。
SLC 120a至120b定位於SOC結構150與各別記憶體控制器130a至130b之間的資料通道中。記憶體控制器130a至130b可處置去往及來自記憶體裝置140a至140b之請求。因此,來自用戶端裝置110a至110n的自記憶體裝置140a至140n進行讀取或寫入至該等記憶體裝置之請求通過各別SLC 120a至120b。舉例而言,用戶端110a可做出自記憶體裝置140a進行讀取之一請求,該請求通過SOC結構150到達SLC 120a。SLC 120a可在將該請求轉送至用於記憶體裝置140a之記憶體控制器130之前處置該請求。
SLC 120a至120b可快取來自用戶端裝置110a至110n之讀取請求、寫入請求或此兩者。SLC 120a至120b可藉由利用儲存於快取資料中之資料對請求做出回應而非自記憶體裝置140a至140b提取資料而快取來自用戶端裝置之讀取請求。類似地,SLC可藉由將新資料寫入於快取中而非將新資料寫入於記憶體裝置140a至140b中而快取來自用戶端裝置之寫入請求。SLC 120a至120b可在一稍後時間執行一寫回以將經更新資料儲存於記憶體裝置140a至140b中。
每一SLC 120a至120b具有可使用專用暫存器或高速隨機存取記憶體來實施之專用快取記憶體。每一SLC 120a至120b可實施一快取原則,該快取原則根據一主要分割表(PPT) 122及一次要分割表(SPT) 124來分配快取記憶體之通路。
PPT 122及SPT 124控制SLC 120a如何根據針對由用戶端裝置110a至110n存取之不同分割區之快取記憶體請求而分配快取資源。一般而言,每一SLC 120a或120b可分配主要通路,使得每一主要通路專用於一個記憶體緩衝區。記憶體緩衝區自身可由一或多個各別用戶端裝置存取。一SLC可分配次要通路,使得每一次要通路視情況針對多個記憶體緩衝區之一群組內之請求而被共用。換言之,次要通路可導致一或多個用戶端裝置針對兩個或兩個以上記憶體緩衝區之內的請求而共用相同快取資源。
圖1B圖解說明一實例性系統級快取120之組件。一SLC實施方案可具有比圖1B中所圖解說明之組件更多或更少之組件。舉例而言,除所圖解說明組件之外,SLC亦可具有與管理RAM、電力、測試或除錯(僅舉幾個實例)相關之其他組件。
SLC 120一般使用一控制器管線126來處置來自SOC結構之記憶體請求127。控制器管線126實施快取邏輯以用於判定資料是否存在於快取中或者是否需要自記憶體提取資料或將資料寫入至記憶體。因此,控制器管線亦在需要對記憶體進行存取時將異動129提供至一記憶體控制器。
如上文所提及,SLC 120包含一主要分割表122及一次要分割表124。可使用一軟體組態介面103、一硬體信令介面或此兩者來更新此等表121。在某些實施方案中,在SLC 120之執行脈絡改變之後,SLC 120之控制邏輯重新組態PPT 122及SPT 124。SLC 120可然後使用下文所闡述之技術基於經更新PPT 122及經更新SPT 124而將通路重新分配至分割區。
在本說明書中,一執行脈絡表示用戶端裝置透過SLC而存取之記憶體緩衝區之一特定組合。因此,自一SLC之角度來看,執行脈絡之一改變係用戶端裝置如何使用記憶體緩衝區之一改變。因此,一執行脈絡緊密對應於就透過SLC對記憶體之請求而言SOC上之哪些用戶端裝置係現用的及SOC上之哪些用戶端裝置係空閒的。自一SLC之角度來看,一用戶端裝置可由於係非現用的或被關閉電源且亦由於一用戶端裝置未以其記憶體請求運行SLC而係空閒的。舉例而言,若一用戶端裝置被主動地接通電源並執行但不運用快取(例如,由於該用戶端裝置並未正寫入至記憶體或由於該用戶端裝置正在不運用SLC之情況下直接寫入至記憶體),則SLC可將彼用戶端裝置視為空閒的。
因此,SOC可將用戶端裝置如何使用SLC之任何改變視為執行脈絡之一改變。舉例而言,若一行動裝置自一現用電力狀態轉變至一睡眠電力狀態,則當使用SLC之用戶端裝置之數目改變時,SOC可將執行脈絡視為已改變。作為另一實例,若主動使用SLC之組件之組合改變,則執行脈絡亦可改變。舉例而言,若一行動裝置之一使用者打開相機應用程式,則專用於影像處理之SOC之一或多個用戶端裝置可自一睡眠狀態轉變至一現用狀態。將由於影像處理裝置開始透過SLC存取記憶體緩衝區而觸發新執行脈絡。作為另一實例,當一或多個用戶端裝置自現用狀態轉變且變為空閒的(就透過SLC對記憶體之請求而言)時,執行脈絡亦可改變。
執行脈絡亦可由於一系統使用改變而改變。舉例而言,若使用者自使用一字處理器切換至玩遊戲,則系統可將此使用改變視為執行脈絡之一改變,此乃因透過SLC而被存取之記憶體緩衝區可改變。
執行脈絡之一改變未必暗示已存在哪些用戶端裝置係現用之一改變或已存在電力消耗之一改變。舉例而言,若一使用者在拍攝一視訊時改變影像解析度,則系統可將系統狀態之此改變視為執行脈絡之一改變,此乃因由用戶端裝置存取之記憶體緩衝區之邊界改變。換言之,解析度之改變可由於經改變解析度所產生之經改變資料量而影響用戶端裝置如何存取記憶體緩衝區。
一分割引擎123經組態以使用PPT 122及SPT 124來執行下文所闡述之通路分割原則。在某些實施方案中,分割引擎123經組態以在偵測到一新執行脈絡後旋即執行通路分割。
分割引擎123可然後產生一最終快取組態125,控制器管線126使用該最終快取組態來服務於來自SOC結構之記憶體請求127。特定而言,最終快取組態125規定將快取記憶體之哪些通路分配至哪些分割區,使得控制器管線126可判定在服務於記憶體請求127時使用哪些通路。
分割引擎123可使用SLC 120之專用硬體電路來執行下文所闡述之分割技術。另一選擇係或另外,分割程序可以軟體來實施且分割引擎123可致使主機裝置之一CPU執行處理演算法。舉例而言,當執行脈絡改變時,分割引擎123可產生致使主機裝置之CPU執行分割程序之一中斷且將結果寫入於最終快取組態125中。
圖2係用於分配一系統級快取之通路之一實例性程序之一流程圖。實例性程序可由一系統級快取之一或多個組件執行。將實例性程序闡述為由一SOC上之一系統級快取之一分割引擎(例如,圖1B之分割引擎123)執行,並根據本說明書而適當地程式化。
分割引擎偵測一新執行脈絡(210)。如上文所闡述,執行脈絡之一改變表示用戶端裝置如何透過SLC存取記憶體緩衝區之一改變。
SLC可經組態以在系統之一執行脈絡改變時自動產生一重新分割觸發事件。重新分割觸發事件(或為簡潔起見,觸發事件)係透過系統而接收的指示需要重新分配SLC之快取分割區之一信號或資料。
分割引擎使用主要分割表來將主要通路指派至分割區(220)。主要分割表可包含一「分割區啟用」屬性,其指示針對一特定執行脈絡,哪些分割區係現用及哪些分割區係空閒的。SOC可經組態以在每當執行脈絡改變時自動更新主要分割表中之此資訊。在某些實施方案中,各別用戶端裝置之軟體驅動器可修改分割區啟用屬性中之資料以指示是否啟用或停用由用戶端裝置存取之分割區。
在某些其他實施方案中,SLC可監視訊務以判定應啟用或停用哪些分割區。舉例而言,SLC可經組態以在其接收到針對一分割區之一讀取或寫入請求或者針對該分割區之超出臨限數目個讀取或寫入請求時啟用該分割區。相反,SLC可經組態以在自接收到針對一分割區之一讀取或寫入請求以來已逝去超出一臨限時間量時停用該分割區。
如上文所提及,將主要通路指派至分割區意指將通路排他地指派至一快取分割區。下文參考圖3闡述用於將主要通路指派至分割區之一實例性程序。
分割引擎亦使用次要分割表來將次要通路指派至分割區(230)。如上文所提及,將次要通路指派至分割區意指某些通路可由多個分割區共用。下文參考圖4闡述用於將通路指派至次要分割區之一實例性程序。
在將通路指派至分割區之後,SLC可開始服務於SOC上之用戶端裝置之記憶體請求。如此一來,當自一特定用戶端裝置接收到顯式地或隱式地識別一分割區之記憶體請求時,SLC將在被指派至所識別分割區之通路中針對請求而分配一或多個快取線。
圖3係用於將主要通路指派至分割區之一實例性程序之一流程圖。實例性程序可由一系統級快取之一或多個組件執行。將實例性程序闡述為由一SOC上之一系統級快取之一分割引擎(例如,圖1B之分割引擎123)執行,並根據本說明書而適當地程式化。
分割引擎接收到將主要通路分配至經啟用分割區之一請求(310)。如上文所闡述,該請求可與執行脈絡之一經偵測改變同時發生。
主要分割表中之資料指示針對該執行脈絡而啟用或停用哪些分割區以及每一分割區請求多少通路。
表1圖解說明一實例性主要分割表。
表1
分割區啟用 | 分割區 ID | 優先級 | 主要通路計數 |
1 | 0 | 5 | 6 |
0 | 1 | 2 | 4 |
1 | 2 | 7 | 10 |
0 | 3 | 1 | 2 |
主要分割表具有對應於表1之列之四個元組。每一元組具有對應於表1之行之四個屬性。可以任何適當方式將主要分割表之元組儲存於SOC上。為清晰起見,本說明書之其餘部分將每一元組稱為一列且將每一屬性稱為一行。然而,不需要將主要分割表之元組連續地或以表格形式儲存於SOC上。
表1之每一列對應於使用SLC之一特定分割區。因此,每一列含有表示一特定分割區之四個屬性之資料。
「分割區啟用」屬性表示在當前執行脈絡中,分割區是否係現用的或空閒的。
「分割區ID」屬性係將一個分割區與SOC上之其他分割區區分開之一唯一識別符。
「優先級」屬性係將相對優先級指派至分割區之一數值。
「主要通路計數」屬性係表示由個別分割區請求之通路之一數目之一數值。舉例而言,表1指示具有一分割區id 2之一分割區請求針對其分割區而分配10個主要通路。
主要分割表可在SOC上實施為一查找表,該查找表針對一給定執行脈絡傳回主要分割表之元組值。針對一特定執行脈絡,除了「分割區id」之外的所有屬性皆可改變。在某些實施方案中,主要通路計數在製造時間被組態一次或在啟動時被組態一次且然後不再改變。舉例而言,針對每一執行脈絡之主要分割表中之元組之不同值可由SOC之一製造商在製造SOC之前或之後進行預程式化。主要分割表之經程式化值可表示針對一裝置之各種執行脈絡之電力管理及效能最佳化之結果,SOC經設計以安裝於該裝置內。在某些其他實施方案中,主要通路計數可動態地改變。本說明書中所闡述之通路分割程序可用於針對此等替代實施方案中之任一者而分配通路。
作為說明性實例,分割區id 3可對應於一特殊應用影像處理器之一緩衝區,該特殊應用影像處理器經組態以對經擷取相片執行影像增強演算法。在當並不預期拍攝任何相片時之一睡眠狀態中,分割區id 3可具有表1中所展示之值,例如,指示以下情況之值:該分割區係停用的、在啟用該分割區時優先級係相對低的且所請求通路小於任何其他分割區。
然而,若一行動裝置之相機應用程式開始透過SLC存取一記憶體緩衝區,則執行脈絡改變,且SOC可使用查找表來重新填充主要分割表中之值。在對應於相機應用程式之主動使用之執行脈絡中,分割區id 3可具有指示以下情況之值:該分割區係在使用中、可被標記為高優先級且具有諸多所請求通路(例如,10個、20個或50個通路)。
分割引擎選擇主要分割表中之下一經啟用項目(320)。分割引擎可以任何適當次序來處理主要分割表中之元組。在某些實施方案中,分割引擎以由優先級屬性規定之一次序來處理主要分割表中之元組。因此,自表1,一分割引擎可按以下裝置id次序來處理元組:2、0、1、3。
另外,次序自身可經調諧以跨越所有執行脈絡達成一最佳效能或能量量變曲線。舉例而言,基於系統之特殊應用要求而最佳化優先級次序。作為另一實例,可根據一能量節省量測、根據效能量變曲線或以滿足功能要求之優先級優先之一次序來對項目確定優先級。
某些用戶端裝置可面對一縮小之分割區大小而不能夠有效地操作。因此,在某些實施方案中,SLC可支援一縮小鎖定旗標,該縮小鎖定旗標在執行脈絡之一改變(其中仍啟用分割區)之後防止針對一特定用戶端裝置之分割區大小縮小。此選項藉由以下操作而有效地更動控制主要分割表中之優先級屬性:藉由針對啟用縮小鎖定旗標之分割區分配通路而迫使分割演算法開始進行程序。
分割引擎判定所選擇項目是否具有當前經指派通路(330)。SLC可藉由在快取中維持儘可能多之資料而改良一執行脈絡切換上之快取效能。舉例而言,若在脈絡切換之前及之後皆啟用一特定分割區,則該特定分割區通常係較電力高效的且儘可能提供較佳效能以維持該特定分割區之通路。
因此,若所選擇項目具有當前經指派通路,則分割引擎重新使用一或多個當前經指派通路(340)。為此,分割引擎可優先指派當前經指派通路以滿足主要分割表中之所請求通路。若存在比當前經指派通路少之所請求通路,則分割引擎可僅使用當前經指派通路來滿足主要分割表中之所請求通路。然而,若存在不充足數目個當前經指派通路,則分割引擎可繼續將通路指派至主要分割區。
因此,分割引擎可判定是否存在更多通路待指派至主要分割區(350)。換言之,分割引擎判定是否已滿足主要分割表中之所請求通路。
若不存在更多通路待指派至當前分割區,則分割引擎可藉由判定在主要分割表中是否存在待處理之更多經啟用項目而反覆至主要分割表中之下一經啟用項目(分支至390)。
若存在更多通路待指派至當前分割區(350),則分割引擎針對所選擇項目而將未使用之通路指派至分割區(分支至360)。未使用之通路係系統級快取中之通路,該等通路係快取硬體之一部分但最近未被使用。在某些實施方案中,分割引擎可判定未被使用達至少一臨限時間週期(例如,5毫秒、500毫秒或5000毫秒)之一或多個通路。在其他實施方案中,未使用之通路可為分割引擎之先前反覆之結果。
分割引擎可然後判定是否存在更多通路待指派至當前分割區(370)。若不存在更多通路待指派至當前分割區,則分割引擎可藉由判定在主要分割表中是否存在更多經啟用項目而反覆至主要分割表中之下一項目(分支至390)。
若存在更多通路待指派至當前分割區(370),則分割引擎針對所選擇項目而將未在當前反覆上進行指派之通路指派至分割區(分支至380)。未經指派通路係系統級快取中之當前未被指派至任何分割區之通路。換言之,此等通路在分割引擎之當前反覆中未被佔用。
用戶端裝置亦可利用特殊組態選項。
舉例而言,用戶端裝置可利用一「僅全分割區(full-partition-only)」旗標。該僅全分割區旗標指示一特定用戶端裝置無法有效地利用SLC,除非該SLC之分割區已對所有其所請求主要通路進行存取。由於此等用戶端無法有效地處理未知分割區大小,因此在啟用僅全分割區旗標時,系統可將該等用戶端之次要通路計數視為零或將次要通路計數設定至零。
因此,在支援僅全分割區旗標之實施方案中,若藉由步驟380,分割區並未被指派至少與針對該分割區之主要通路計數一樣多的通路,則系統可中止針對該分割區之分配且轉返被分配至該分割區之任何通路。
另外,SLC亦可支援一部分分配更動控制旗標,該部分分配更動控制旗標發信號通知用戶端裝置以下事實:將比由主要分割表中之主要通路計數所請求之通路少的通路分配至分割區。針對啟用部分分配更動控制旗標之分割區,當SLC並未分配所有所請求通路時,SLC可向用戶端裝置發送一信號,該信號指示將少於所請求通路之通路分配至分割區。
為確保用戶端裝置適當地使用此資訊,SLC亦可變更最終快取組態,使得在用戶端裝置藉由將一部分分配確認發送回至SLC而確認部分分配之前,不會針對用戶端裝置分配任何快取線。舉例而言,此可意味著用戶端裝置已(例如)藉由減小其緩衝區大小而改變其內部組態,以計及部分分配。在接收到部分分配確認後,SLC可旋即在最終快取組態中重新啟用分配,使得用戶端裝置可在改變其內部組態之後開始使用部分分配。
若在主要分割表中存在更多經啟用項目(390),則分割引擎選擇主要分割表中之下一經啟用項目(分支至320)。
若在任何時間,快取硬體之所有通路在當前反覆中皆結束被指派,則分割引擎缺乏資源來進行指派且可因此退出通路指派程序。
若在處理主要分割區表結束時未經指派通路仍係可用的,則分割引擎繼續使用次要分割表來指派通路(分支至395)。下文參考圖4較詳細地闡述此程序。
圖4係用於將次要通路指派至分割區之一實例性程序之一流程圖。實例性程序可由一系統級快取之一或多個組件執行。將實例性程序闡述為由一SOC上之一系統級快取之一分割引擎(例如,圖1B之分割引擎123)執行,並根據本說明書而適當地程式化。
分割引擎接收到將次要通路分配至分割區之一指示(410)。如上文所闡述,若在SLC指派主要通路之後仍存在未經指派通路,則分割引擎可根據一次要分割表來指派次要通路。
表2圖解說明一實例性次要分割表。
表2
分割區 ID | 群組 ID | 次要通路計數 |
0 | 0 | 2 |
1 | 1 | 2 |
2 | 0 | 6 |
表2中之實例性次要分割表具有與在上文實例性主要分割表中表示之分割區中之三個分割區對應之三個元組。換言之,不需要在次要分割表中表示所有分割區。然而,在某些實施方案中,除非分割區亦出現於主要分割表中,否則該等分割區不會出現於次要分割表中。此意味著次要分割表可充當無法透過主要分割表而獲取足夠主要通路之分割區之一溢位表。該次要分割表亦可為用以在主要分割區表中請求最小所需數目個主要通路且然後在次要分割表中請求最大可用數目個次要通路之一系統級折衷。明顯地,存在可使用此靈活方法來利用通路指派之分階段處理之諸多方式。
表2之每一列對應於使用系統級快取之一特定分割區。「分割區ID」屬性唯一地識別針對一特定元組之一分割區。
「群組id」屬性規定一特定分割區屬於哪一群組。如上文所提及,同一群組中之分割區將共用該快取之在次要分割程序期間所指派之次要通路,且群組id界定哪些分割區係在同一群組中。
「次要通路計數」屬性係表示由每一個別分割區請求之次要通路之一數目之一數值。舉例而言,表2指示具有一分割區id 2之一分割區請求針對其分割區而分配6個次要通路。注意,同一群組中之分割區不需要具有匹配之次要通路計數。
如同主要分割表一樣,當SOC之執行脈絡改變時,一SLC可填充次要分割表。另一選擇係,次要分割表之值可由SOC製造商在製造SOC之前或之後進行預程式化。
分割引擎選擇相關分割區之下一群組(420)。分割引擎可以任何適當次序反覆遍歷次要分割表中之群組id。在某些實施方案中,每一群組與一各別次要優先級相關聯,且分割引擎根據各別次要優先級而反覆遍歷群組。類似於在處理主要分割表時所使用之優先級,次要分割表中之優先級可由系統架構師使用以調諧通路指派策略以便改良效能或使能量消耗最小化。
分割引擎判定是否有任何通路仍可用於分配(430)。若否,則程序結束(分支至結束)。舉例而言,當所有可用通路已被分配時,分割引擎可拒絕繼續反覆遍歷群組。此外,(例如)若主要分割程序分配所有可用通路,則分割引擎可不將次要通路分配至分割區。
若某些通路仍可用於指派(430),則分割引擎運算指派至所選擇群組中之經啟用分割區之通路之一總數目(分支至440)。分割引擎可使用各別次要通路計數來運算去往所選擇群組中之經啟用分割區之次要通路之一單個總數目。
分割引擎可以多種方式來運算通路之總數目。舉例而言,分割引擎可運算該群組中之次要通路計數之一總和、一最小值、一最大值、一眾數或另一中心趨勢度量。系統可根據多少通路仍可用於指派而限制通路之總數目。舉例而言,若通路之總數目係14個,但僅10個通路仍可被指派,則系統可將通路之總數目限制於10個通路。
分割引擎將總數目個次要通路指派至分割區之群組(450)。在操作期間之此指派之效應係可將來自群組中之一或多個分割區中之任一者之任何請求放置於屬於該群組之經分配次要通路當中。因此,擁有該群組中之該等分割區之用戶端裝置在使用對應記憶體緩衝區時共用次要通路。
分割引擎判定在次要分割表中是否存在待處理之更多群組(460)。若如此,則分割引擎選擇相關分割區之下一群組(分支至420)。若否,則程序結束(分支至結束)。
在主要通路分割程序(圖3)結束時或在次要通路分割程序(圖4)結束時,若仍存在未經分配通路,則系統可個別地將彼等通路關閉電源以便進一步節省電力並延長主機裝置上之電池壽命。
圖5係用於藉由一系統級快取而處理記憶體請求之一實例性程序之一流程圖。實例性程序可由一系統級快取之一或多個組件執行。將實例性程序闡述為由一SOC上之一系統級快取之一控制器管線(例如,圖1B之控制器管線126)執行,並根據本說明書而適當地程式化。
控制器管線接收到一傳入記憶體請求(510)。如上文所闡述,控制器管線定位於用戶端裝置與用於傳入記憶體請求之記憶體控制器之間的資料通道中。控制器管線可處理去往記憶體控制器之所有記憶體請求。
控制器管線識別與任何給定請求相關聯之分割區(520)。可用一識別符來顯式地或隱式地對每一記憶體請求進行編碼,該識別符區分由用戶端裝置中之一或多者使用之分割區。舉例而言,可用一分割區id來顯式地將每一記憶體請求加標籤。另一選擇係或另外,SLC可維持一映射,該映射使每一特定執行脈絡中之每一用戶端裝置與一對應分割區id相關聯。
控制器管線使用被指派至記憶體請求之分割區之通路來處理該請求(530)。控制器管線可使用經快取記憶體來達成該請求、將該請求轉送至記憶體控制器或進行此兩者。
如此一來,控制器管線可考量被分配至與該請求相關聯之分割區之一主要通路以及被分配至包含所關注分割區之一分割區群組之一次要通路。
控制器可藉由將一分割區中之主要通路及次要通路之性質考慮在內而進一步最佳化如何完成分配及替換。舉例而言,控制器管線可使次要通路之替換優先於主要通路,此乃因主要通路中之快取項目無法由屬於其他分割區之其他請求替換。
在某些實施方案中,在一讀取快取未中或一寫入快取未中時,控制器使用以下優先級次序來識別一替換快取線:
1.若對應分割區不具有經指派通路,則不分配一快取線。
2.若可用,則針對分割區而使用一無效次要通路。
3.若可用,則針對分割區而使用一無效主要通路。
4.針對分割區而在全部經指派通路當中替換一最近最少使用之快取線。
另一選擇係,控制器可將被指派至一分割區之所有通路視為相同的且在彼等通路內實施任何傳統分配及替換原則。
本說明書中所闡述之標的物及功能操作之實施例可實施於包含本說明書中所揭示之結構及其結構等效物之數位電子電路、有形地體現之電腦軟體或韌體、電腦硬體中或者實施於其中之一或多者之組合中。可將本說明書中所闡述之標的物之實施例實施為一或多個電腦程式,亦即,編碼於一有形非暫時性儲存媒體上以供資料處理設備執行或以控制資料處理設備之操作之一或多個電腦程式指令模組。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其中之一或多者之一組合。另一選擇係或另外,程式指令可編碼於一人工產生之經傳播信號(例如,一機器產生之電、光學或電磁信號)上,該人工產生之經傳播信號經產生以編碼資訊以供傳輸至適合接收器設備來由一資料處理設備執行。
術語「資料處理設備」係指資料處理硬體且囊括用於處理資料之所有種類之設備、裝置及機器,藉由實例方式,包含一可程式化處理器、一電腦或者多個處理器或電腦。設備亦可為或進一步包含特殊應用邏輯電路,例如,一FPGA (場可程式化閘陣列)或一ASIC (特殊應用積體電路)。除硬體之外,該設備亦可視情況包含為電腦程式建立一執行環境之程式碼,例如,構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其中之一或多者之一組合之程式碼。
亦可稱為或闡述為一程式、軟體、一軟體應用程式、一應用程式、一模組、一軟體模組、一指令碼或程式碼之一電腦程式可以任何形式之程式設計語言(包含編譯或解譯語言,或者宣告或程序語言)來撰寫,且可任何形式(包含作為一獨立程式或作為一模組、組件、副常式或適合用於一運算環境中之其他單元)來部署。一程式可(但無需)對應於一檔案系統中之一檔案。一程式可儲存於保持其他程式或資料(例如,儲存於一標記語言文檔中之一或多個指令碼)之一檔案之一部分中、儲存於專用於所討論之程式之一單個檔案中或儲存於多個經協調檔案(例如,儲存一或多個模組、子程式或程式碼之若干部分之檔案)中。一電腦程式可經部署以在一個電腦上或者位於一個位點處或跨越多個位點分佈且藉由一資料通信網路互連之多個電腦上執行。
對於一或多個電腦之一系統將經組態以執行特定操作或動作意指該系統已在其上安裝有在操作中致使該系統執行操作或動作之軟體、韌體、硬體或其一組合。對於一或多個電腦程式將經組態以執行特定操作或動作意指該一或多個程式包含在由資料處理設備執行時致使該設備執行操作或動作之指令。
如在本說明書中所使用,一「引擎」或「軟體引擎」係指提供不同於輸入之一輸出之一硬體實施或軟體實施之輸入/輸出系統。一引擎可實施於專用數位電路中或實施為將由一運算裝置執行之電腦可讀指令。每一引擎可實施於包含一或多個處理模組及電腦可讀媒體之任何適當類型之運算裝置內,例如,伺服器、行動電話、平板電腦、筆記型電腦、音樂播放器、電子書閱讀器、膝上型或桌上型電腦、PDA、智慧型電話或其他靜止或可攜式裝置。另外,引擎中之兩者或兩者以上可實施於同一運算裝置上或實施於不同運算裝置上。
本說明書中所闡述之程序及邏輯流程可由執行一或多個電腦程式之一或多個可程式化電腦執行以藉由對輸入資料進行操作並產生輸出而執行功能。該等程序及邏輯流程亦可由特殊應用邏輯電路(例如,一FPGA或一ASIC)或由特殊應用邏輯電路與一或多個經程式化電腦之一組合執行。
適合執行一電腦程式之電腦可基於一般用途或特殊用途微處理器或者此兩者,或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或者此兩者接收指令及資料。一電腦之基本元件係用於執行指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。中央處理單元及記憶體可由特殊應用邏輯電路補充或併入於該特殊應用邏輯電路中。一般而言,一電腦亦將包含用於儲存資料之一個或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)或以操作方式耦合以自該一個或多個大容量儲存裝置接收資料或向其傳送資料或者既接收又傳送資料。然而,一電腦無需具有此等裝置。此外,一電腦可嵌入於另一裝置中,例如,一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲控制台、一全球定位系統(GPS)接收器或一可攜式儲存裝置(例如,一通用串列匯流排(USB)快閃驅動),僅舉幾例。
適合於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體裝置,藉由實例方式,包含:半導體記憶體裝置(例如,EPROM、EEPROM及快閃記憶體裝置);磁碟(例如,內部硬磁碟或可抽換式磁碟);磁光碟;以及CD-ROM及DVD-ROM碟。
為提供與一使用者之交互,本說明書中所闡述之標的物之實施例可實施於一主機裝置上,該主機裝置具有用於向該使用者顯示資訊之一顯示裝置(例如,一CRT (陰極射線管)或LCD (液晶顯示器)監視器)及該使用者可藉此來向電腦提供輸入之一鍵盤及指向裝置(例如,一滑鼠、軌跡球或一存在敏感顯示器或者其他表面)。亦可使用其他種類之裝置來提供與一使用者之交互;舉例而言,提供給該使用者之回饋可為任何形式之感觀回饋(例如,視覺回饋、聽覺回饋或觸覺回饋);且來自該使用者之輸入可以任何形式(包含聲音、語音或觸覺輸入)來接收。另外,一電腦可藉由向由一使用者使用之一裝置發送文檔及自該裝置接收文檔而與該使用者交互;舉例而言,藉由回應於自一使用者之裝置上之一網頁瀏覽器接收之請求而向該網頁瀏覽器發送網頁。而且,一電腦可藉由向運行一訊息傳遞應用程式之一個人裝置(例如,一智慧型電話)發送文字訊息或其他形式之訊息且反過來自一使用者接收回應訊息而與該使用者交互。
除了上文所闡述之實施例之外,以下實施例亦係創新的:
實施例1係一種系統,其包括:
多個整合式用戶端裝置;
一記憶體控制器,其經組態以自一記憶體裝置讀取資料;及
一系統級快取,其經組態以透過該記憶體控制器為該多個整合式用戶端裝置中之每一者快取資料請求,
其中該系統級快取包括具有多個通路之一快取記憶體,該多個通路中之每一通路係一主要通路或一次要通路,
其中每一主要通路專用於一單個各別分割區,該單個各別分割區對應於由一或多個用戶端裝置存取之一記憶體緩衝區,且
其中每一次要通路由多個分割區之一群組共用,該多個分割區對應於由用戶端裝置之一群組存取之多個記憶體緩衝區,且
其中該系統級快取經組態以維持分割區與優先級之間的一映射且經組態而以一次序將主要通路分配至各別經啟用分割區,該次序對應於被指派至該等經啟用分割區之該等各別優先級。
實施例2係實施例1之系統,其中該系統級快取經組態以將主要通路排他地分配至由一或多個第一用戶端裝置存取之一第一分割區,且經組態以將次要通路分配至該第一分割區並分配至由用戶端裝置之亦包含該第一用戶端裝置之一群組存取之一或多個其他分割區。
實施例3係實施例2之系統,其中該系統級快取經組態以維持用戶端裝置群組與次要優先級之間的一映射且經組態而以一次序將次要通路分配至各別經啟用分割區,該次序對應於被指派至該等用戶端裝置群組之該等各別次要優先級。
實施例4係實施例2之系統,其中該系統級快取經組態以僅針對各自已被分配各別主要通路之分割區而分配次要通路。
實施例5係實施例1至4中之任一者之系統,其中該系統級快取經組態以根據具有多個項目之一主要分割表來分配該等主要通路,每一項目表示對應於由一或多個各別用戶端裝置使用之一記憶體緩衝區之一各別分割區,其中每一項目包含用於該對應分割區之主要通路之各別所請求數目。
實施例6係實施例5之系統,其中該系統級快取經組態以藉由執行包括以下各項之操作而分配該等主要通路:
反覆遍歷該主要分割表中之經啟用項目,其中每一經啟用項目表示針對一特定執行脈絡使用該系統級快取之一分割區,及
針對每一經啟用項目,將一定數目個主要通路分配至對應於該經啟用項目之一各別分割區。
實施例7係實施例6之系統,其中將一定數目個主要通路分配至對應於該經啟用項目之一各別分割區包括:
重新使用當前被指派至該分割區之一或多個通路;
指派未被指派至任何分割區之一或多個未經指派通路;及
指派當前被指派至一不同分割區之一或多個未使用之通路。
實施例8係實施例6之系統,其中反覆遍歷該主要分割表中之該等經啟用項目包括:以由被指派至該等用戶端裝置中之每一者之一優先級判定之一次序來反覆遍歷該等經啟用項目。
實施例9係實施例5之系統,其中該系統級快取經組態以藉由執行包括以下各項之操作而分配該等次要通路:
判定相關分割區之一群組;
根據該系統級快取之一次要分割表中之所請求次要通路計數而運算將指派至相關分割區之該群組之通路之一總數目;及
將針對相關分割區之該群組中之該等相關分割區所運算之該總數目個通路指派至該群組。
實施例10係實施例9之系統,其中根據該等所請求次要通路計數而運算將指派至相關分割區之該群組之通路之該總數目包括:針對該群組中之分割區運算該次要分割表中之該等次要通路計數之一最大值、一最小值或一中心趨勢度量。
實施例11係實施例9之系統,其中該系統級快取經組態以將各別次要通路分配至分割區之各別群組,使得在分割區之群組之間不存在重疊。
實施例12係實施例9之系統,其中若且僅若在處理該主要分割表之後仍存在未經指派通路,則指派該等次要通路。
實施例13係實施例5之系統,其中該系統級快取經組態以在偵測到一觸發事件後旋即重新分配主要通路、次要通路或此兩者。
實施例14係實施例13之系統,其中每一觸發事件針對一不同執行脈絡改變該主要分割表中之經啟用項目。
實施例15係實施例1至14中之任一者之系統,其中該系統經組態以取決於通路至分割區之該分配而調整該系統之一電力狀態。
實施例16係一種包括由實施例1至15中之任一者之系統執行之操作之方法。
實施例17係一種包括實施例1至15中之任一者之系統之行動運算裝置。
儘管此說明書含有諸多特定實施方案細節,但此等細節不應解釋為對任何發明之範疇或對可主張之內容之範疇之限制,而是應解釋為可為特定發明之特定實施例特有的特徵之說明。在單獨實施例之內容脈絡中於本說明書中闡述之特定特徵亦可以組合方式實施於一單個實施例中。相反地,在一單個實施例之內容脈絡中闡述之各種特徵亦可單獨地或以任何適合子組合形式實施於多個實施例中。此外,雖然上文可將特徵闡述為以特定組合形式起作用且甚至最初主張如此,但來自一所主張組合之一或多個特徵在某些情形中可自該組合去除,且該所主張組合可針對於一子組合或一子組合之變化形式。
類似地,儘管在圖式中以一特定次序繪示操作,但不應將此理解為需要以所展示之特定次序或以按順序次序執行此等操作,或執行所有所圖解說明操作以達成合意結果。在特定情形下,多任務及並行處理可為有利的。此外,不應將在上文所闡述之實施例中之各種系統模組及組件之分離理解為在所有實施例中需要此分離,且應理解,一般可將所闡述之程式組件及系統一起整合於一單個軟體產品中或封裝至多個軟體產品中。
已闡述標的物之特定實施例。其他實施例係在隨附申請專利範圍之範疇內。舉例而言,申請專利範圍中所陳述之動作可以一不同次序來執行且仍達成合意結果。作為一項實例,附圖中所繪示之程序不必需要所展示之特定次序或順序次序來達成合意結果。在特定情形下,多任務及並行處理可為有利的。
102:系統單晶片
103:軟體組態介面
103a:請求
103b:請求
103c:請求
103d:請求
105:主要通路
107:次要通路
110a:用戶端裝置/用戶端
110b:用戶端裝置/用戶端
110c:用戶端裝置
110d:用戶端裝置
110n:用戶端裝置
120:系統級快取
120a:系統級快取
120b:系統級快取
121:表
122:主要分割表
123:分割引擎
124:次要分割表
125:最終快取組態
126:控制器管線
127:記憶體請求
129:異動
130a:記憶體控制器
130b:記憶體控制器
140a:記憶體裝置/記憶體
140b:記憶體裝置
142a:緩衝區X
142b:緩衝區Y
142c:緩衝區Z
150:系統單晶片結構
152a:通信通道
152b:通信通道
154a:晶片間通信通道/通信通道
154b:晶片間通信通道/通信通道
210:步驟
220:步驟
230:步驟
310:步驟
320:步驟
330:步驟
340:步驟
350:步驟
360:步驟
370:步驟
380:步驟
390:步驟
395:步驟
410:步驟
420:步驟
430:步驟
440:步驟
450:步驟
460:步驟
510:步驟
520:步驟
530:步驟
圖1A係一實例性系統之一圖式。
圖1B圖解說明一實例性系統級快取之組件。
圖2係用於分配一系統級快取之通路之一實例性程序之一流程圖。
圖3係用於將主要通路指派至分割區之一實例性程序之一流程圖。
圖4係用於將次要通路指派至分割區之一實例性程序之一流程圖。
圖5係用於藉由一系統級快取而處理記憶體請求之一實例性程序之一流程圖。
在各個圖式中,相似元件符號及名稱指示相似元件。
103:軟體組態介面
120:系統級快取
121:表
122:主要分割表
123:分割引擎
124:次要分割表
125:最終快取組態
126:控制器管線
127:記憶體請求
129:異動
Claims (24)
- 一種用於分配快取資源之系統,其包括:多個整合式用戶端裝置;一記憶體控制器,其經組態以自一記憶體裝置讀取資料;及一系統級(system-level)快取,其經組態以透過該記憶體控制器為該多個整合式用戶端裝置中之每一者快取資料請求,其中該系統級快取包括具有多個通路之一快取記憶體,該多個通路中之每一通路係一主要(primary)通路或一次要(secondary)通路,其中每一主要通路專用於一單個各別分割區,該單個各別分割區對應於由一或多個用戶端裝置存取之一記憶體緩衝區,且其中每一次要通路由多個分割區之一群組共用,該多個分割區對應於由用戶端裝置之一群組存取之多個記憶體緩衝區,且其中該系統級快取經組態以維持分割區與優先級之間的一映射且經組態而以一次序將主要通路分配至各別經啟用分割區,該次序對應於被指派至該等經啟用分割區之該等各別優先級(priority levels)。
- 如請求項1之系統,其中該系統級快取經組態以將主要通路排他地分配至由一或多個第一用戶端裝置存取之一第一分割區,且經組態以將次要通路分配至該第一分割區並分配至由用戶端裝置之亦包含該第一用戶端裝置之一群組存取之一或多個其他分割區。
- 如請求項2之系統,其中該系統級快取經組態以維持用戶端裝置群組 與次要優先級之間的一映射且經組態而以一次序將次要通路分配至各別經啟用分割區,該次序對應於被指派至該等用戶端裝置群組之該等各別次要優先級。
- 如請求項2之系統,其中該系統級快取經組態以僅針對各自已被分配各別主要通路之分割區而分配次要通路。
- 如請求項1之系統,其中該系統級快取經組態以根據具有多個項目之一主要分割表來分配該等主要通路,每一項目表示對應於由一或多個各別用戶端裝置使用之一記憶體緩衝區之一各別分割區,其中每一項目包含用於該對應分割區之主要通路之各別所請求數目。
- 如請求項5之系統,其中該系統級快取經組態以藉由執行包括以下各項之操作而分配該等主要通路:反覆遍歷該主要分割表中之經啟用項目,其中每一經啟用項目表示針對一特定執行脈絡使用該系統級快取之一分割區,及針對每一經啟用項目,將一定數目個主要通路分配至對應於該經啟用項目之一各別分割區。
- 如請求項6之系統,其中將一定數目個主要通路分配至對應於該經啟用項目之一各別分割區包括:重新使用當前被指派至該分割區之一或多個通路;指派未被指派至任何分割區之一或多個未經指派通路;及 指派當前被指派至一不同分割區之一或多個未使用之通路。
- 如請求項6之系統,其中反覆遍歷該主要分割表中之該等經啟用項目包括:以由被指派至該等用戶端裝置中之每一者之一優先級判定之一次序來反覆遍歷該等經啟用項目。
- 如請求項5之系統,其中該系統級快取經組態以藉由執行包括以下各項之操作而分配該等次要通路:判定相關分割區之一群組;根據該系統級快取之一次要分割表中之所請求次要通路計數而運算將指派至相關分割區之該群組之通路之一總數目;及將針對相關分割區之該群組中之該等相關分割區所運算之該總數目個通路指派至該群組。
- 如請求項9之系統,其中根據該等所請求次要通路計數而運算將指派至相關分割區之該群組之通路之該總數目包括:針對該群組中之分割區運算該次要分割表中之該等次要通路計數之一最大值、一最小值或一中心趨勢度量。
- 如請求項9之系統,其中該系統級快取經組態以將各別次要通路分配至分割區之各別群組,使得在分割區之群組之間不存在重疊。
- 如請求項9之系統,其中若且僅若在處理該主要分割表之後仍存在未 經指派通路,則指派該等次要通路。
- 如請求項5之系統,其中該系統級快取經組態以在偵測到一觸發事件後旋即重新分配主要通路、次要通路或此兩者。
- 如請求項13之系統,其中每一觸發事件針對一不同執行脈絡改變該主要分割表中之經啟用項目。
- 如請求項1之系統,其中該系統經組態以取決於通路至分割區之該分配而調整該系統之一電力狀態。
- 一種由一系統執行用於分配快取資源之方法,該系統包括:多個整合式用戶端裝置;一記憶體控制器,其經組態以自一記憶體裝置讀取資料;及一系統級快取,其經組態以透過該記憶體控制器為該多個整合式用戶端裝置中之每一者快取資料請求,其中該系統級快取包括具有多個通路之一快取記憶體,該多個通路中之每一通路係一主要通路或一次要通路,其中每一主要通路專用於一單個各別分割區,該單個各別分割區對應於由一或多個用戶端裝置存取之一記憶體緩衝區,且其中每一次要通路由多個分割區之一群組共用,該多個分割區對應於由用戶端裝置之一群組存取之多個記憶體緩衝區,且其中該方法包括: 維持分割區與優先級之間的一映射;及以一次序將主要通路分配至各別經啟用分割區,該次序對應於被指派至該等經啟用分割區之該等各別優先級。
- 如請求項16之方法,其進一步包括:將主要通路排他地分配至由一或多個第一用戶端裝置存取之一第一分割區;及將次要通路分配至該第一分割區並分配至由用戶端裝置之亦包含該第一用戶端裝置之一群組存取之一或多個其他分割區。
- 如請求項17之方法,其進一步包括:維持用戶端裝置群組與次要優先級之間的一映射;及以一次序將次要通路分配至各別經啟用分割區,該次序對應於被指派至該等用戶端裝置群組之該等各別次要優先級。
- 如請求項17之方法,其進一步包括:僅針對各自已被分配各別主要通路之分割區而分配次要通路。
- 如請求項16之方法,其進一步包括:根據具有多個項目之一主要分割表來分配該等主要通路,每一項目表示對應於由一或多個各別用戶端裝置使用之一記憶體緩衝區之一各別分割區,其中每一項目包含用於該對應分割區之主要通路之各別所請求數目。
- 如請求項20之方法,其進一步包括藉由執行包括以下各項之操作而分配該等主要通路:反覆遍歷該主要分割表中之經啟用項目,其中每一經啟用項目表示針對一特定執行脈絡使用該系統級快取之一分割區;及針對每一經啟用項目,將一定數目個主要通路分配至對應於該經啟用項目之一各別分割區。
- 如請求項21之方法,其中將一定數目個主要通路分配至對應於該經啟用項目之一各別分割區包括:重新使用當前被指派至該分割區之一或多個通路;指派未被指派至任何分割區之一或多個未經指派通路;及指派當前被指派至一不同分割區之一或多個未使用之通路。
- 如請求項21之方法,其中反覆遍歷該主要分割表中之該等經啟用項目包括:以由被指派至該等用戶端裝置中之每一者之一優先級判定之一次序來反覆遍歷該等經啟用項目。
- 如請求項20之方法,其進一步包括藉由執行包括以下各項之操作而分配該等次要通路:判定相關分割區之一群組;根據該系統級快取之一次要分割表中之所請求次要通路計數而運算將指派至相關分割區之該群組之通路之一總數目;及 將針對相關分割區之該群組中之該等相關分割區所運算之該總數目個通路指派至該群組。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962805080P | 2019-02-13 | 2019-02-13 | |
US62/805,080 | 2019-02-13 | ||
US16/518,503 US10884959B2 (en) | 2019-02-13 | 2019-07-22 | Way partitioning for a system-level cache |
US16/518,503 | 2019-07-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202030614A TW202030614A (zh) | 2020-08-16 |
TWI731487B true TWI731487B (zh) | 2021-06-21 |
Family
ID=71946041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108143272A TWI731487B (zh) | 2019-02-13 | 2019-11-27 | 系統級快取 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10884959B2 (zh) |
EP (1) | EP3850491A1 (zh) |
CN (2) | CN118210735A (zh) |
TW (1) | TWI731487B (zh) |
WO (1) | WO2020167359A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11487874B1 (en) * | 2019-12-05 | 2022-11-01 | Marvell Asia Pte, Ltd. | Prime and probe attack mitigation |
US11580037B2 (en) * | 2020-06-19 | 2023-02-14 | Microsoft Technology Licensing, Llc | Privilege level assignments to groups |
TWI796943B (zh) * | 2022-01-27 | 2023-03-21 | 凌群電腦股份有限公司 | 利用緩存鏡射資料實現高效運算之處理系統 |
EP4352587A1 (en) * | 2022-08-26 | 2024-04-17 | Google Inc. | Adaptive caching of memory request streams |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI448968B (zh) * | 2012-07-30 | 2014-08-11 | Faraday Tech Corp | 系統級模擬與仿真之裝置及方法 |
US20150039833A1 (en) * | 2013-08-01 | 2015-02-05 | Advanced Micro Devices, Inc. | Management of caches |
US20160019158A1 (en) * | 2014-07-17 | 2016-01-21 | Qualcomm Incorporated | Method And Apparatus For A Shared Cache With Dynamic Partitioning |
US20180293183A1 (en) * | 2017-04-07 | 2018-10-11 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875464A (en) * | 1991-12-10 | 1999-02-23 | International Business Machines Corporation | Computer system with private and shared partitions in cache |
US5970509A (en) * | 1997-05-30 | 1999-10-19 | National Semiconductor Corporation | Hit determination circuit for selecting a data set based on miss determinations in other data sets and method of operation |
US6725336B2 (en) * | 2001-04-20 | 2004-04-20 | Sun Microsystems, Inc. | Dynamically allocated cache memory for a multi-processor unit |
US7996644B2 (en) * | 2004-12-29 | 2011-08-09 | Intel Corporation | Fair sharing of a cache in a multi-core/multi-threaded processor by dynamically partitioning of the cache |
US7308537B2 (en) * | 2005-02-10 | 2007-12-11 | International Business Machines Corporation | Half-good mode for large L2 cache array topology with different latency domains |
US20070143546A1 (en) * | 2005-12-21 | 2007-06-21 | Intel Corporation | Partitioned shared cache |
US20110113215A1 (en) * | 2006-03-02 | 2011-05-12 | Nxp B.V. | Method and apparatus for dynamic resizing of cache partitions based on the execution phase of tasks |
US8756608B2 (en) * | 2009-07-01 | 2014-06-17 | International Business Machines Corporation | Method and system for performance isolation in virtualized environments |
CN101609432B (zh) * | 2009-07-13 | 2011-04-13 | 中国科学院计算技术研究所 | 共享缓存管理系统及方法 |
US8595425B2 (en) * | 2009-09-25 | 2013-11-26 | Nvidia Corporation | Configurable cache for multiple clients |
US9529719B2 (en) | 2012-08-05 | 2016-12-27 | Advanced Micro Devices, Inc. | Dynamic multithreaded cache allocation |
US20140258628A1 (en) * | 2013-03-11 | 2014-09-11 | Lsi Corporation | System, method and computer-readable medium for managing a cache store to achieve improved cache ramp-up across system reboots |
US9176669B2 (en) * | 2013-03-15 | 2015-11-03 | Silicon Graphics International Corp. | Address resource mapping in a shared memory computer system |
CN105426319B (zh) * | 2014-08-19 | 2019-01-11 | 超威半导体产品(中国)有限公司 | 动态缓存分区设备和方法 |
US9727239B2 (en) * | 2014-11-13 | 2017-08-08 | Samsung Electronics Co., Ltd. | Electronic system with partitioning mechanism and method of operation thereof |
US9678875B2 (en) * | 2014-11-25 | 2017-06-13 | Qualcomm Incorporated | Providing shared cache memory allocation control in shared cache memory systems |
US10180908B2 (en) * | 2015-05-13 | 2019-01-15 | Qualcomm Incorporated | Method and apparatus for virtualized control of a shared system cache |
US9652405B1 (en) * | 2015-06-30 | 2017-05-16 | EMC IP Holding Company LLC | Persistence of page access heuristics in a memory centric architecture |
CN105022700B (zh) * | 2015-07-17 | 2017-12-19 | 哈尔滨工程大学 | 一种基于缓存空间划分和内容相似度的命名数据网络缓存管理系统和管理方法 |
US9734070B2 (en) | 2015-10-23 | 2017-08-15 | Qualcomm Incorporated | System and method for a shared cache with adaptive partitioning |
US20170357596A1 (en) * | 2016-06-13 | 2017-12-14 | Advanced Micro Devices, Inc. | Dynamically adjustable inclusion bias for inclusive caches |
EP3258382B1 (en) | 2016-06-14 | 2021-08-11 | Arm Ltd | A storage controller |
US11106599B2 (en) * | 2016-09-30 | 2021-08-31 | Intel Corporation | System and method for replacement in associative memories using weighted PLRU trees |
US10175992B2 (en) * | 2016-10-01 | 2019-01-08 | Intel Corporation | Systems and methods for enhancing BIOS performance by alleviating code-size limitations |
US20180203807A1 (en) | 2017-01-13 | 2018-07-19 | Arm Limited | Partitioning tlb or cache allocation |
CN108628769A (zh) * | 2017-03-17 | 2018-10-09 | 华为技术有限公司 | 一种缓存分配方法,及设备 |
-
2019
- 2019-07-22 US US16/518,503 patent/US10884959B2/en active Active
- 2019-11-26 WO PCT/US2019/063414 patent/WO2020167359A1/en unknown
- 2019-11-26 CN CN202410290334.0A patent/CN118210735A/zh active Pending
- 2019-11-26 EP EP19824098.8A patent/EP3850491A1/en active Pending
- 2019-11-26 CN CN201980069193.7A patent/CN112889038B/zh active Active
- 2019-11-27 TW TW108143272A patent/TWI731487B/zh active
-
2020
- 2020-12-31 US US17/139,750 patent/US11620243B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI448968B (zh) * | 2012-07-30 | 2014-08-11 | Faraday Tech Corp | 系統級模擬與仿真之裝置及方法 |
US20150039833A1 (en) * | 2013-08-01 | 2015-02-05 | Advanced Micro Devices, Inc. | Management of caches |
US20160019158A1 (en) * | 2014-07-17 | 2016-01-21 | Qualcomm Incorporated | Method And Apparatus For A Shared Cache With Dynamic Partitioning |
US20180293183A1 (en) * | 2017-04-07 | 2018-10-11 | Intel Corporation | Apparatus and method for memory management in a graphics processing environment |
Also Published As
Publication number | Publication date |
---|---|
TW202141282A (zh) | 2021-11-01 |
EP3850491A1 (en) | 2021-07-21 |
US10884959B2 (en) | 2021-01-05 |
US20210255972A1 (en) | 2021-08-19 |
TW202030614A (zh) | 2020-08-16 |
WO2020167359A1 (en) | 2020-08-20 |
US20200257639A1 (en) | 2020-08-13 |
US11620243B2 (en) | 2023-04-04 |
CN118210735A (zh) | 2024-06-18 |
CN112889038A (zh) | 2021-06-01 |
CN112889038B (zh) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI731487B (zh) | 系統級快取 | |
US9864681B2 (en) | Dynamic multithreaded cache allocation | |
US9372526B2 (en) | Managing a power state of a processor | |
US20170371654A1 (en) | System and method for using virtual vector register files | |
TWI492055B (zh) | 具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法 | |
TWI761762B (zh) | 記憶體請求之快取串流 | |
JP6262407B1 (ja) | 共有キャッシュメモリシステムにおける共有キャッシュメモリ割振り制御の提供 | |
US10042773B2 (en) | Advance cache allocator | |
US8566532B2 (en) | Management of multipurpose command queues in a multilevel cache hierarchy | |
CN107615246B (zh) | 线程弹性负载平衡的内核负载知识 | |
KR101689094B1 (ko) | 스티키 제거 엔진을 구비한 시스템 캐시 | |
US11899970B2 (en) | Storage system and method to perform workload associated with a host | |
TWI847044B (zh) | 用於記憶體操作之系統及非暫時性電腦儲存媒體 | |
TWI763158B (zh) | 記憶體共享 | |
EP4160423B1 (en) | Memory device, memory device operating method, and electronic device including memory device | |
US11714753B2 (en) | Methods and nodes for handling memory | |
TW202409846A (zh) | 記憶體請求串流之適應性快取 | |
KR20200121533A (ko) | 이종 메모리의 특성에 기반한 메모리 관리 장치 및 그것의 동작 방법 |