TW201426306A - 具有相黏移除引擎之系統快取記憶體 - Google Patents

具有相黏移除引擎之系統快取記憶體 Download PDF

Info

Publication number
TW201426306A
TW201426306A TW102135192A TW102135192A TW201426306A TW 201426306 A TW201426306 A TW 201426306A TW 102135192 A TW102135192 A TW 102135192A TW 102135192 A TW102135192 A TW 102135192A TW 201426306 A TW201426306 A TW 201426306A
Authority
TW
Taiwan
Prior art keywords
group
memory
cache
cache memory
sticky
Prior art date
Application number
TW102135192A
Other languages
English (en)
Other versions
TWI499910B (zh
Inventor
Sukalpa Biswas
Shinye Shiu
James Wang
Robert Hu
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Publication of TW201426306A publication Critical patent/TW201426306A/zh
Application granted granted Critical
Publication of TWI499910B publication Critical patent/TWI499910B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3215Monitoring of peripheral devices
    • G06F1/3225Monitoring of peripheral devices of memory devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明揭示用於釋放用於一或多個群組ID之快取行之相黏狀態的方法及裝置。一相黏移除引擎逐步查看一系統快取記憶體之標記記憶體,從而尋找與一第一群組ID之匹配,該第一群組ID正自該系統快取記憶體清除其快取行。該引擎清除屬於該第一群組ID之每一快取行的相黏狀態。若該引擎接收針對一第二群組ID之一釋放請求,則該引擎記載當前索引以記錄其經由該標記記憶體之進度。接著,該引擎繼續其經由該標記記憶體之步行,從而尋找與該第一群組ID抑或該第二群組ID之匹配。該引擎回繞至該標記記憶體之開始,且繼續其步行直至到達用於該第二群組ID之該經記載索引為止。

Description

具有相黏移除引擎之系統快取記憶體
本發明大體上係關於資料快取,且尤其係關於用於最佳化位於記憶體控制器中之系統快取記憶體的方法及機制。
現代行動電子器件常常包括共用對一或多個記憶體器件之存取的多個組件或代理(agent)。此多個代理可進行對記憶體之大數目個請求,且隨著此等請求之數目增加,器件之功率消耗增加,此情形限制器件之電池壽命。一種用於縮減功率消耗之途徑係設法縮減藉由快取處理器中或附近之資料而存取晶片外記憶體的次數。
習知快取記憶體通常耦接至或靠近於處理器,且儲存由處理器頻繁地存取之資料以縮減延時。在習知快取記憶體中,可基於存取之時間局域性(temporal locality)而將資料保留於該快取記憶體中。舉例而言,當在快取記憶體中分配一行時,該行被參考之次數愈多,則使此行被替換變得愈困難。然而,當存取在時間上廣泛地間隔時,習知快取記憶體未經設計用於儲存被多次存取之資料。在傳統快取記憶體中,此類資料將傾向於被收回。
揭示用於在一系統快取記憶體內清除一或多個群組ID之快取行之相黏狀態的系統、記憶體控制器、快取記憶體及方法。在一系統單晶片中,多個代理可耦接至一記憶體控制器,該記憶體控制器又可耦 接至一或多個記憶體器件。該多個代理可經由該記憶體控制器而存取該(該等)記憶體器件。出於縮減存取晶片外記憶體之請求之數目的目的,該記憶體控制器可包括經組態以儲存資料之一系統快取記憶體。
相比於一典型處理器快取記憶體將經歷之情形,該系統快取記憶體可由具有不同類型之存取型樣的多個代理共用。可多次參考一些快取行,但可不以一時間局域方式來參考該等快取行。該系統快取記憶體可不知道將重新使用哪些行,且因此,一請求代理可判定如何在該系統快取記憶體中分配行。
在一實施例中,該系統快取記憶體可包括一資料記憶體及一標記記憶體。該資料記憶體可儲存複數個快取行,且該標記記憶體可儲存對應於該複數個快取行之複數個標記。該系統快取記憶體亦可包括一相黏移除引擎,以在軟體釋放用於一給定群組ID之相黏狀態時移除用於指派至該給定群組ID之快取行的相黏狀態。該相黏移除引擎可經組態以逐步查看該標記記憶體之標記索引,從而搜尋對應於該給定群組ID之任何標記。
在一實施例中,該系統快取記憶體可具有一多通路集合關聯組態(multi-way set associative configuration)。該相黏移除引擎可在一單一索引處移除用於多個快取行之相黏狀態,而不必立即處理多個收回。在已清除一快取行之相黏狀態之後,可在針對在該系統快取記憶體中遺漏之一新請求而實際地回收該快取行的一稍後時間點發生該快取行之該收回。在一實施例中,指派至正被釋放之群組ID之一快取行的狀態可在其已經被修改(亦即,已變更(dirty)狀態)時由該相黏移除引擎改變至LRU已變更狀態,或在其未被修改(亦即,未變更(clean)狀態)時由該相黏移除引擎改變至無效狀態。另外,若該代理知道將不會再次參考該等經修改行(已變更狀態)(諸如,在一中間高速暫存儲存器(scratch pad)之狀況下),則其可捨棄關聯於此群組ID之行(無效狀 態,而非LRU已變更狀態)。當發生一遺漏時,具有該LRU已變更狀態之快取行可被識別為用於替換之最好候選者。
在各種實施例中,該相黏移除引擎可經組態以隨著該引擎逐步查看該標記記憶體之該等索引而釋放多個群組ID。該相黏移除引擎可接收對釋放針對一第一群組ID而分配之快取行的一第一請求,且作為回應,該引擎可開始逐步查看該標記記憶體,從而尋找被指派至該第一群組ID之群組ID標記。在一實施例中,若該系統快取記憶體具有16個通路,則該引擎可在逐步查看該標記記憶體之每一步進中檢查每索引16個標記。每當該引擎在該等通路中任一者中找到被指派至該第一群組ID之一群組ID標記時,該引擎就可將該對應狀態標記行之狀態改變至該LRU已變更狀態或無效。
在周遊該標記記憶體而尋找第一群組ID匹配時,該相黏移除引擎可接收對釋放針對一第二群組ID而分配之所有快取行的一第二請求。該相黏移除引擎可將當前索引記錄(log)為用於該第二群組ID之清除處理序的開始位址。接著,該相黏移除引擎可繼續其經由該標記記憶體之步行,從而在每一索引處之每一群組ID標記處尋找該第一群組ID抑或該第二群組ID。該相黏移除引擎可繼續其步行直至該引擎回繞至該第二群組ID之開始位址為止。此外,可針對任何數目個其他群組ID而接收任何數目個額外釋放請求。可允許任何數目個清除處理序隨著該相黏移除因此逐步查看該標記記憶體而重疊,且該引擎可針對每一經新接收請求而採取該開始位址之一快照。
鑒於本文所呈現之途徑的以下詳細描述,此等及其他特徵及優勢對於一般技術者將變得顯而易見。
10‧‧‧電子器件
12‧‧‧記憶體
14‧‧‧記憶體控制器
16‧‧‧系統快取記憶體
18‧‧‧連貫性點
20‧‧‧處理器複合體
22‧‧‧圖形引擎
24‧‧‧非即時(NRT)周邊裝置
26‧‧‧即時(RT)周邊裝置
30‧‧‧積體電路(IC)
32A‧‧‧請求代理
32B‧‧‧請求代理
32C‧‧‧請求代理
34‧‧‧切換器介面
36‧‧‧連貫性點
38‧‧‧連貫性點
40‧‧‧記憶體控制器
42‧‧‧記憶體控制器快取記憶體
44‧‧‧記憶體控制器快取記憶體
46‧‧‧記憶體通道切換器/記憶體控制器切換器
48‧‧‧記憶體通道單元
50‧‧‧記憶體通道單元
60‧‧‧系統快取記憶體
62‧‧‧標記記憶體
64‧‧‧資料記憶體
66‧‧‧快取控制單元
68‧‧‧組態暫存器
69‧‧‧相黏移除引擎
70A‧‧‧標記記憶體通路
70B‧‧‧標記記憶體通路
72A‧‧‧標記位址
72B‧‧‧標記位址
74A‧‧‧狀態
74B‧‧‧狀態
76A‧‧‧最近最少使用(LRU)
76B‧‧‧最近最少使用(LRU)
78A‧‧‧群組識別符(ID)
78B‧‧‧群組識別符(ID)
80A‧‧‧同位
80B‧‧‧同位
90‧‧‧請求代理
92‧‧‧請求
94‧‧‧命令
96‧‧‧異動識別符(ID)
98‧‧‧位址
100‧‧‧資料
102‧‧‧已變更狀態指示符
104‧‧‧群組識別符(ID)
106‧‧‧分配提示
108‧‧‧其他屬性
110‧‧‧記憶體控制器
112‧‧‧系統快取記憶體
120‧‧‧組態暫存器
122A‧‧‧標記通路
122B‧‧‧標記通路
124‧‧‧相黏移除引擎
126‧‧‧資料表
190‧‧‧系統
192‧‧‧外部記憶體
194‧‧‧周邊裝置
196‧‧‧電力供應器
200‧‧‧桌上型電腦
210‧‧‧膝上型電腦
220‧‧‧平板電腦
230‧‧‧蜂巢式電話
240‧‧‧電視
藉由結合隨附圖式而參考以下描述,可較好地理解方法及機制之以上及另外優勢,在該等圖式中: 圖1說明電子器件之部分之一實施例。
圖2說明積體電路之部分之一實施例。
圖3為說明系統快取記憶體之一實施例的方塊圖。
圖4為說明一對標記記憶體通路(tag memory way)之一實施例的方塊圖。
圖5說明將請求輸送至系統快取記憶體之請求代理之一實施例。
圖6為系統快取記憶體內之相黏移除引擎之一實施例的方塊圖。
圖7為相黏移除引擎之另一實施例的方塊圖。
圖8為說明用於釋放用於多個群組ID之相黏狀態之方法之一實施例的一般化流程圖。
圖9為一系統之一實施例的方塊圖。
在以下描述中,闡述眾多特定細節以提供對本文所呈現之方法及機制的透徹理解。然而,一般技術者應認識到,可在無此等特定細節的情況下實踐各種實施例。在一些情況下,尚未詳細地展示熟知之結構、組件、信號、電腦程式指令及技術以避免混淆本文所描述的途徑。應瞭解,出於說明簡單及清楚起見,諸圖所展示之元件未必按比例繪製。舉例而言,一些元件之尺寸相對於其他元件可被誇示。
本說明書包括對「一實施例」之參考。片語「在一實施例中」在不同上下文中之出現未必指代同一實施例。可以與本發明一致之任何合適方式來組合特定特徵、結構或特性。此外,如貫穿本申請案所使用,詞語「可」係在准許意義(亦即,意謂有可能)而非強制意義(亦即,意謂必須)上使用。相似地,詞語「包括」意謂包括但不限於。
術語學。以下段落提供用於本發明(包括附加申請專利範圍)中找到之術語的定義及/或上下文:「包含」。此術語為開放式。如附加申請專利範圍中所使用,此 術語不排除額外結構或步驟。考慮敍述下者之技術方案:「一種記憶體控制器,其包含一系統快取記憶體……」。此類技術方案不排除該記憶體控制器包括額外組件(例如,記憶體通道單元、切換器)。
「經組態以」。可將各種單元、電路或其他組件描述或主張為「經組態以」執行一或若干任務。在此類上下文中,「經組態以」用以藉由指示出該等單元/電路/組件包括在操作期間執行該或該等任務之結構(例如,電路系統)而暗示結構。因而,即使當單元/電路/組件當前未操作(例如,未接通)時,亦可將已指定單元/電路/組件稱為經組態以執行任務。與「經組態以」語言一起使用之單元/電路/組件包括硬體,例如,電路、儲存可執行以實施操作之程式指令的記憶體,等等。敍述出單元/電路/組件「經組態以」執行一或多個任務對於彼單元/電路/組件並不明確地意欲援引35 U.S.C.§ 112第六段落。另外,「經組態以」可包括由軟體及/或韌體(例如,FPGA或執行軟體之一般用途處理器)操縱以便以能夠執行所涉及任務之方式而操作的泛型結構(例如,泛型電路系統)。「經組態以」亦可包括調適製造處理序(例如,半導體製作設施)以製作經調適以實施或執行一或多個任務之器件(例如,積體電路)。
「第一」、「第二」等等。如本文所使用,此等術語用作其領先之名詞的標籤,且不隱含任何類型之排序(例如,空間、時間、邏輯等等)。舉例而言,在具有複數個快取行之快取記憶體中,術語「第一」快取行及「第二」快取行可用以指代複數個快取行中任兩者。
「基於」。如本文所使用,此術語用以描述影響判定之一或多個因素。此術語不排除可影響判定之額外因素。亦即,判定可僅僅基於彼等因素,或至少部分地基於彼等因素。考慮片語「基於B而判定A」。雖然B可為影響A之判定的因素,但此類片語不排除A之判定亦係基於C。在其他情況下,可僅僅基於B而判定A。
現在參看圖1,展示說明電子器件之部分之一實施例的方塊圖。在所說明實施例中,電子器件10包括記憶體12、記憶體控制器14、連貫性點18、處理器複合體20、圖形引擎22、非即時(NRT)周邊裝置24,及即時(RT)周邊裝置26。應注意,電子器件10亦可包括圖1中未圖示之其他組件。此外,在另一實施例中,可自電子器件10省略圖1所展示之組件中的一或多者。在各種實施例中,電子器件10亦可被稱作裝置、行動器件或計算器件。
記憶體12可表示任何數目及類型之記憶體器件,諸如,動態隨機存取記憶體(DRAM)、同步DRAM(SDRAM)、雙資料速率(DDR、DDR2、DDR3等等)SDRAM(包括諸如mDDR3等等的SDRAM之行動版本,及/或諸如LPDDR2等等的SDRAM之低功率版本)、RAMBUS DRAM(RDRAM)、靜態RAM(SRAM)等等。一或多個記憶體器件可耦接至電路板上以形成記憶體模組,諸如,單內嵌記憶體模組(single inline memory module,SIMM)、雙內嵌記憶體模組(dual inline memory module,DIMM)等等。
記憶體控制器14可包括經組態以介接至記憶體12之電路系統,且各種組件可經由連貫性點18而耦接至記憶體控制器14。在其他實施例中,圖1所展示之其他器件中的一或多者可直接地耦接至記憶體控制器14,而非經由連貫性點18進行耦接。在各種實施例中,記憶體控制器14可包括任何數目個埠以用於耦接至各種周邊裝置、組件及/或請求代理。
記憶體控制器14可包括系統快取記憶體16以用於儲存自記憶體12擷取或意欲用於記憶體12之資料。系統快取記憶體16可經組態以處理來自多個請求代理之記憶體請求。一或多個請求代理可包括於被展示為連接至連貫性點18之器件中任一者內。在一實施例中,可在系統快取記憶體16中以相黏狀態抑或非相黏狀態來分配快取行。當決定使 哪些資料保留於系統快取記憶體16中時,系統快取記憶體16可使決策基於快取行之相黏狀態(sticky status)。舉例而言,在一情境中,可將幾何資料提供至處理器複合體20,且可將此幾何資料轉譯至圖形引擎22內部之3D引擎可理解的資料結構。在執行轉譯之後,3D引擎可在單一圖框內多次參考經轉譯資料結構。因此,可在系統快取記憶體16中將經轉譯資料結構分配為相黏,以確保不會在系統快取記憶體16中由其他資料替換儲存該資料結構之快取行。由於針對將要被重新使用之資料而使用相黏分配,故可縮減對記憶體12進行之存取的數目,此情形可縮減記憶體請求之延時及電子器件10之功率消耗。
連貫性點18可經組態以將連貫性訊務及非連貫性訊務路由至記憶體控制器14,及自記憶體控制器14路由連貫性訊務及非連貫性訊務。連貫性點18亦可被稱作連貫性切換器(coherence switch)。儘管圖1中未圖示,但連貫性點18可耦接至其他器件,諸如,快閃記憶體控制器、攝影機、顯示器及其他器件。
處理器複合體20可包括任何數目個中央處理單元(CPU)(未圖示)及各種其他組件(例如,快取記憶體、匯流排介面單元)。處理器複合體20之CPU可包括用以執行作業系統(OS)之電路系統。在各種實施例中,OS可為任何類型之OS(例如,iOS)。該等CPU中每一者可包括一層級1(L1)快取記憶體(未圖示),且每一L1快取記憶體可耦接至一層級2(L2)快取記憶體。其他實施例可包括額外快取記憶體層級(例如,層級3(L3)快取記憶體)。
圖形引擎22可包括任何類型之圖形處理電路系統。通常,圖形引擎22可經組態以致使物件顯示至圖框緩衝器(未圖示)中。圖形引擎22可包括執行圖形軟體以執行圖形操作之部分或全部及/或某些圖形操作之硬體加速的圖形處理器。硬體加速及軟體實施之量可隨著不同實施例而變化。NRT周邊裝置24可包括任何非即時周邊裝置。NRT周 邊裝置24之各種實施例可包括視訊編碼器及視訊解碼器、定標器/旋轉器電路系統、影像壓縮/解壓縮電路系統等等。RT周邊裝置26可包括任何數目及類型之即時周邊裝置。
應注意,其他實施例可包括其他組件組合,其包括圖1所展示之組件的子集或超集及/或其他組件。雖然圖1中可展示給定組件之一個例項,但其他實施例可包括給定組件之兩個或兩個以上例項。相似地,貫穿此詳細描述,即使展示僅一個例項,亦可包括給定組件之兩個或兩個以上例項,及/或即使展示多個例項,亦可使用包括僅一個例項之實施例。
現在轉至圖2,展示積體電路之部分之一實施例。積體電路(IC)30可包括請求代理32A至32C、切換器介面34、連貫性點36及38,及記憶體控制器40。記憶體控制器40可包括記憶體控制器快取記憶體42及44、記憶體通道切換器46,及記憶體通道單元48及50。記憶體控制器40可耦接至一或多個記憶體器件(未圖示)。在各種實施例中,IC 30可包括於各種類型之電子器件中任一者內,該等電子器件包括行動電池供電器件。IC 30亦可被稱作系統單晶片(SoC)。應注意,IC 30可包括圖2中未圖示之其他組件及介面。
請求代理32A至32C可經組態以在系統中執行各種操作,且可存取記憶體以作為執行此等操作之部分。舉例而言,請求代理32可為處理器(一般用途處理器,抑或諸如圖形處理器之特殊用途處理器)。處理器可經組態以存取記憶體以提取指令以供執行,且亦可經組態以回應於執行指令而在記憶體中存取指令之各種資料運算元。其他請求代理可包括固定功能電路系統(例如,DMA控制器、周邊裝置介面控制器)。請求代理32可為實體分離電路系統,諸如,處理器之分離例項。或者,請求代理可為諸如執行於處理器上之處理序或執行緒的邏輯實體,使得單一實體處理器可包括多個邏輯請求者。包括於給定實 施例中之請求代理32A至32C的數目可自1個請求代理至任何數目個請求代理而變化。
可藉由請求代理識別符(ID)識別給定請求代理(實體或邏輯)。在各種實施例中,請求代理可添加異動識別符(TID)以分離地追蹤每一個別請求。由請求代理32A至32C產生之每一請求可伴隨有一群組ID。群組ID亦可被稱作資料集ID。群組ID可為與請求代理ID及TID分離之識別符,且用以表示群組ID值之位元的數目可取決於實施例而變化。舉例而言,在一實施例中,可使用四個位元以表示群組ID值,且可存在16個分離群組ID。可基於請求所屬之資料流程而將群組ID指派至請求。取決於實施例,OS或器件驅動程式可指派群組ID。對於一些類型之資料流程,同一群組ID可由多個請求代理ID共用。在一實施例中,可將對頁面轉譯資料表(page translation table)之請求視作同一資料流程之部分,且不管請求代理ID,皆可將此等請求中任一者指派至一共同群組ID。對於其他類型之資料流程,一群組ID可由僅單一請求代理利用。
連貫性點36及38可經組態以管理自請求代理32A至32C輸送至記憶體控制器40之請求的連貫性。在一實施例中,取決於正由特定記憶體請求作為目標之位址,來自請求代理32A至32C之訊務可在切換器介面34中分裂且周遊特定連貫性點。其他實施例可包括其他數目個連貫性點。
記憶體控制器快取記憶體42及44可為分離實體快取記憶體,但可被視作單一邏輯記憶體控制器快取記憶體。更具體而言,記憶體控制器快取記憶體42及44可共用單一位址空間,且可由切換器介面34將參考快取記憶體42之位址空間的記憶體請求經由連貫性點36而路由至快取記憶體42,且可由切換器介面34將參考快取記憶體44之位址空間的記憶體請求經由連貫性點38而路由至快取記憶體44。切換器介面34 可為任何類型之通信媒體(例如,匯流排、點對點互連等等),且可實施任何協定。介面可指代介面之信號定義及電性質,且協定可為介面上之通信的邏輯定義(例如,包括命令、排序規則、連貫性支援)。應注意,記憶體控制器快取記憶體42及44亦可被稱作系統快取記憶體。在其他實施例中,記憶體控制器40可包括其他數目個記憶體控制器快取記憶體。舉例而言,在另一實施例中,記憶體控制器40可包括四個分離記憶體控制器快取記憶體。
記憶體控制器快取記憶體42及44可經組態以維持儲存於該等快取記憶體中之每一快取行的相黏狀態。可經由相黏狀態、相黏旗標、相黏位元、相黏標記或其他相似欄位而實施相黏狀態。在一實施例中,可利用標記記憶體以儲存對應於儲存於資料記憶體中之快取行的標記項目。該等標記項目可包括多個欄位,其包括相黏狀態欄位及群組ID欄位,群組ID欄位用以識別使在快取記憶體中分配快取行之請求的資料流程來源。在一實施例中,可保留被分配為相黏之快取行直至快取記憶體接收軟體命令以清除相黏分配為止。每一快取記憶體42及44可經組態以針對現有快取行而實施替換策略,但該替換策略可排除將相黏行考慮為用於替換。對於在快取記憶體中遺漏之請求,若該請求包括相黏分配提示,則可將快取行分配為相黏。請求代理可進行特定請求應具有相黏分配提示之判定,且請求代理可使該判定基於由特定請求參考之資料是否很可能由後續請求使用。
記憶體控制器切換器46可在記憶體控制器快取記憶體42及44與記憶體通道單元48及50之間路由訊務。對於包括於給定實施例中之每一記憶體通道可存在一個記憶體通道單元48及50,且其他實施例可包括一個通道或兩個以上通道。記憶體通道單元48及50可經組態以排程待傳輸於記憶體通道上之記憶體操作。記憶體通道單元48及50可經組態以分離地對讀取記憶體操作(或讀取)及寫入記憶體操作(或寫入)進 行佇列處理,且可經組態以使用(例如)以信用額度為基礎之系統而在讀取與寫入之間進行仲裁。在以信用額度為基礎之系統中,讀取及寫入可被分配某一數目個信用額度。
在一實施例中,記憶體通道單元48及50可在操作叢發中排程記憶體操作。為了建立記憶體操作叢發以供排程,記憶體通道單元48及50可將記憶體操作分組成親和性群組(affinity group)。若一記憶體操作及另一記憶體操作在時間上極近接地執行時可有效率地執行於記憶體介面上,則該記憶體操作可被稱為展現與該另一記憶體操作之親和性。
應理解,圖2所說明之功能性的分佈並非可用於積體電路之唯一可能架構。其他積體電路可包括其他組件、省略所展示組件中之一或多者,及/或在該等組件當中包括功能性之不同配置。
現在參看圖3,展示系統快取記憶體之一實施例的方塊圖。在一實施例中,系統快取記憶體60可包括標記記憶體62、資料記憶體64、快取控制單元66及組態暫存器68。應注意,系統快取記憶體60亦可包括圖3中未圖示之其他組件及邏輯。舉例而言,在其他實施例中,系統快取記憶體60可包括仲裁電路系統以在請求當中進行仲裁。應理解,圖3所展示之系統快取記憶體架構僅僅為可被實施之一可能架構。在其他實施例中,其他系統快取記憶體架構可與本文所揭示之方法及機制一起利用。
在一實施例中,標記記憶體62可經耦接以接收用於來自請求代理之記憶體請求的位址。應注意,術語「記憶體請求」及「異動」可貫穿本發明而互換式地使用。資料記憶體64可經耦接以接收資料或提供資料以供異動。在各種實施例中,標記記憶體62及資料記憶體64可包括多個通路,且每一通路可由索引定址。舉例而言,在一實施例中,標記記憶體62及資料記憶體64可各自包括16個通路。在其他實施 例中,標記記憶體62及資料記憶體64可包括其他數目個通路。
快取控制單元66耦接至標記記憶體62及資料記憶體64,且快取控制單元66可經組態以接收與經接收異動相關之各種控制資料,且對經接收控制資料作出回應。快取控制單元66可包括相黏移除引擎69,且相黏移除引擎69可經組態以逐步查看標記記憶體62中之所有標記索引,且在軟體釋放用於給定群組ID之相黏狀態時移除用於給定群組ID之相黏狀態。在各種實施例中,相黏移除引擎69可為硬體、軟體或其任何組合。應注意,儘管圖3中將快取控制單元66展示為單一單元,但在其他實施例中,快取控制單元66可在系統快取記憶體60內分裂成多個單元。組態暫存器68可包括用於與儲存於系統快取記憶體60中之資料相關聯之各種群組ID的組態資訊。組態暫存器68可由自OS及/或各種請求代理發送至快取控制單元66之軟體命令程式化。
組態暫存器68表示可用作系統快取記憶體60之部分的任何數目個組態暫存器。舉例而言,在一實施例中,對於由OS指派以使用系統快取記憶體60之每一群組識別符(ID)可存在一分離組態暫存器68。在此實施例中,每一組態暫存器可定義用於各別群組ID之狀態、配額及清除策略。可由發送至系統快取記憶體60之軟體命令將狀態設定至作用中抑或非作用中。當將狀態設定至非作用中時,此情形可觸發快取控制單元66以使針對此特定群組ID而分配之所有行無效。可設定配額以限制在系統快取記憶體60中可針對各別群組ID而分配之行的量。在一實施例中,對於快取控制單元66中之每一群組ID可存在一配額計數器(未圖示)。配額計數器可針對對應群組ID而保持追蹤系統快取記憶體60中之快取行的數目。替換策略可指定給定群組ID是否可運用新相黏行來替換其自有相黏行。在一實施例中,可使用相黏替換組態任選指示符來指示此替換策略。若在系統快取記憶體60中對於新相黏行不存在可用非相黏快取行儲存位置,則可僅進行此替換策略。
資料記憶體64可包含資料項目之集合,該等資料項目各自具有儲存資料之快取行的能力。快取行可為資料記憶體64中之分配及解除分配的單位。快取行可為任何理想大小,諸如,32位元組或64位元組,但在其他實施例中可支援較大及較小快取行大小。在另一實施例中,資料記憶體64之快取行可被稱作「快取區塊(cache block)」。
在各種實施例中,資料記憶體64可利用任何類型之記憶體器件。在一實施例中,資料記憶體64可包含(例如)由項目編號加索引之RAM。回應於輸入位址之索引部分(例如,可經解碼以在數個經實施集合當中唯一地選擇一集合之位址之位元的數目),資料記憶體64可經配置成使得可選擇快取行儲存位置之集合以用於讀取/寫入操作。待存取之快取行儲存位置可由快取控制單元66識別(例如,回應於偵測針對請求之快取命中、回應於分配快取行儲存位置以儲存遺漏快取行)。可自經存取快取行儲存位置讀取資料以針對讀取快取命中而傳回至請求者,或針對自系統快取記憶體60收回之快取行而傳輸至記憶體。可針對寫入快取命中而將資料自請求者寫入至經存取快取行儲存位置,或完成遺漏快取行至經分配快取行儲存位置中之快取填滿。在一些實施例中,資料記憶體64可為成組實施(banked implementation),且亦可自快取控制單元66提供組選擇控制(bank selection control)。
標記記憶體62可利用任何類型之記憶體器件,諸如,RAM。或者,標記記憶體62可出於窺探目的而包含內容可定址記憶體(CAM),或包含RAM/CAM組合。標記記憶體62可包含複數個標記項目,每一項目係由上文所提及之索引的不同值選擇。選定標記項目可儲存對應於系統快取記憶體60中由索引選擇之快取行儲存位置之集合的標記。每一標記對應於各別快取行儲存位置中之快取行,且可包括對應快取行之位址的標記部分(亦即,減去定義快取行內之位移之最低有效位 元及用於索引之位元的位址),及各種其他狀態資訊。回應於請求,標記記憶體62可經組態以解碼索引,且將標記輸出至快取控制單元66以供處理。在一實施例中,標記記憶體62亦可包括經組態以比較標記與請求位址之標記部分的標記比較電路系統,且可將比較結果提供至快取控制單元66。在另一實施例中,快取控制單元66可比較標記。快取控制單元66亦可經組態以藉由寫入標記項目而執行各種標記更新。
系統快取記憶體60可具有任何組態。在一些實施例中,可實施直接映射或集合關聯組態。在典型直接映射及集合關聯快取記憶體中,在標記項目與資料項目之間存在經預組態之一對一對應。在直接映射組態中,每一位址映射至系統快取記憶體60中之一個可能項目(標記記憶體62及資料記憶體64),此處將儲存對應快取行。在一實施例中,系統快取記憶體60可為關聯的,其中給定位址映射至資料記憶體64中可適合於儲存快取行之兩個或兩個以上快取行儲存位置。系統快取記憶體60可為集合關聯的,其中每一位址映射至兩個或兩個以上可能項目(取決於快取記憶體之關聯性)。在一實施例中,將N個快取行儲存位置映射至在被稱作索引之位址位元之子集中具有相同值的位址,其中N為大於1且小於資料記憶體64中之快取行儲存位置之總數的整數。形成對應於給定索引之集合的N個快取行儲存位置常常被稱作「通路」。其他實施例可為完全關聯的,其中任何快取行儲存位置可映射至任何位址。
快取控制單元66可在資料記憶體64中動態地分配資料項目,以儲存用於由系統快取記憶體60接收之異動的資料。舉例而言,異動可為至記憶體之寫入。異動亦可為回應於先前自請求代理接收之讀取且將記憶體(未圖示)作為目標而自記憶體提供的讀取完成(運用資料)。
在一實施例中,由系統快取記憶體60自請求代理接收之每一異動可包括一群組ID編號、一快取分配提示,及一或多個其他屬性。若 異動在系統快取記憶體60中遺漏,則可由系統快取記憶體60及快取控制單元66利用快取分配提示以判定如何針對異動而分配快取行。若針對異動而分配新快取行,則可在標記記憶體62中之對應項目中儲存群組ID編號。
在一實施例中,回應於自請求代理接收相黏異動,快取控制單元66可判定在資料記憶體64中是否存在可用項目。若異動為相黏且快取遺漏,且在資料記憶體64中存在可用非相黏項目,則可針對異動而分配新相黏項目,從而替換可用非相黏項目。若異動為相黏及至非相黏項目之快取命中,則可不由此命中將非相黏項目轉換至相黏。在另一情境中,若非相黏異動命中於相黏項目,則相黏項目可保持相黏。
標記記憶體62可經組態以儲存用於系統快取記憶體60中快取之快取行的各種標記。舉例而言,在一實施例中,標記可包括連貫性狀態、相黏狀態、已變更指示符、最近最少使用(LRU)資料、群組識別(ID)及其他資料。取決於實施例,此等標記中之一些或全部可包括於標記記憶體62之每一項目中。
在一實施例中,可由特定請求代理針對非相黏異動而最初分配快取行。可將快取行被最初分配所針對之特定請求代理視為彼行之主要使用者。可將由其他群組ID對此項目之任何後續命中視為次要使用者,且因此,即使針對快取行之後續命中係用於相黏異動,亦可針對快取行而維持原始非相黏狀態。
在一實施例中,針對第一群組ID而分配有相黏狀態之快取行可由用於第二群組ID之相黏異動命中。在此情境中,對應於快取行之標記項目的群組ID可改變至第二群組ID。換言之,第二群組ID可自第一群組ID繼承快取行。當針對下一圖框可再次使用用於先前圖框之資料時,用於繼承快取行之此機制可在某些圖形處理應用中有用。為了促進此資料之重新使用,可將快取行之擁有權自第一群組ID轉移至第 二群組ID。
在一些實施例中,可將快取行之擁有權經由發送至快取控制單元66之軟體命令而自第一群組ID轉移至第二群組ID。軟體命令可指定將指派至第一群組ID之所有快取行轉移至第二群組ID。此特徵可證明在許多應用(包括圖形應用)中有益。
現在轉至圖4,展示一對標記記憶體通路之一實施例的方塊圖。標記記憶體通路70A至70B表示可包括於標記記憶體內之任何數目個通路,諸如,(圖3之)標記記憶體62。在一實施例中,每一標記記憶體通路70A至70B可包括用於對應於儲存於對應資料記憶體通路中之快取行之資料的任何數目個項目。標記記憶體通路70A至70B中每一者中展示一樣本項目。
每一標記項目可包括待與輸入請求位址進行比較的位址(標記位址72A至72B)之標記部分。標記位址72A至72B可包括用於經接收異動之實體位址欄位的最高有效位元。用於標記位址72欄位之位元的數目可取決於實施例而變化。狀態74A至74B可表示儲存於資料記憶體中之對應快取行的狀態。取決於實施例,可存在狀態74A至74B可採取之多個不同值。舉例而言,在一實施例中,不同可能狀態可包括以下各者:無效、未變更、已變更、資料擱置、相黏未變更、相黏已變更及LRU已變更。可由請求代理將快取行之未變更/已變更狀態連同異動一起輸送至系統快取記憶體。請求代理亦可提供關於異動之相黏狀態的提示。資料擱置狀態可指示出當前正自記憶體提取用於快取行之資料。當在系統快取記憶體中分配新行時,可將具有無效狀態之任何項目選擇為用於替換之最好候選者。用於替換之下一最好候選者可為具有LRU已變更狀態之任何項目。應注意,在另一實施例中,標記記憶體通路70A至70B中之每一項目可包括相黏旗標或相黏位元,且此情形可指示該項目是否相黏,而非狀態欄位。
負責產生異動之請求代理可運用異動來輸送判定將指派至對應標記項目之狀態的提示。此提示可判定與異動相關聯之資料是否儲存於系統快取記憶體中。舉例而言,在一情境中,對於特定異動,伴隨該異動之提示可指示出該異動為相黏。若異動伴隨有相黏提示,且異動在系統快取記憶體中遺漏,則可自記憶體擷取資料且在系統快取記憶體中分配資料,其中標記狀態74被設定至相黏。將狀態設定至相黏指示出此資料將「相黏」於快取記憶體中,且將不會由系統快取記憶體移除。若用於來自不同群組ID之另一相黏異動的資料正嘗試在系統快取記憶體中分配空間,則將防止此資料替換來自其他群組ID之相黏行。
在一實施例中,用以移除相黏資料之唯一方式係使系統快取記憶體接收指示出可移除用於特定群組ID之某些相黏資料的軟體命令。在另一實施例中,可由來自第一群組ID之其他相黏資料基於對應組態暫存器之設定而自系統快取記憶體移除用於第一群組ID之相黏資料。若組態暫存器中針對特定群組ID之設定指示出此群組ID可運用其他相黏行來替換相黏行,則可由用於此群組ID之另一相黏行來替換一相黏行。此設定可被稱作相黏組態選項(sticky configuration option)。
在一些實施例中,可將相黏行之擁有權自一個群組ID轉移至另一群組ID。可在如下各種情境中利用此擁有權轉移:資料可最初由第一群組ID使用,且接著稍後由第二群組ID使用。舉例而言,在圖形應用中,某些資料可用以建置一個圖框。使用第一群組ID之第一代理可最初針對此圖形圖框而分配資料。接著,使用第二群組ID之第二代理可針對圖形應用之下一圖框而重新使用資料。軟體可產生對將圖框資料之擁有權自第一群組ID轉移至第二群組ID的請求。系統快取記憶體可接收此軟體請求,且結果,可將擁有權自第一群組傳遞至第二群組,同時使資料保持為相黏。又,可針對下一階段而重新使用在三維 (3D)圖形應用之當前階段中使用的紋理。在3D階段之間可存在重疊,比如,某些邊界圖案塊(boundary tile),且可針對連續階段而在群組ID之間轉移此等圖案塊。應注意,亦可在除了僅圖形應用以外之多種其他應用中發生群組ID之間的快取行之擁有權轉移。
在系統快取記憶體中以相黏狀態來分配行將會引起該行保留於系統快取記憶體中,即使在對相黏行之存取之間的時間量大亦如此。舉例而言,可頻繁地存取某些資料,但在存取之間可存在長持續時間。此資料可置放於系統快取記憶體中,其中狀態74被設定至相黏。因此,不管存取之間的持續時間有多長,資料皆將保持於系統快取記憶體中。舉例而言,可在系統快取記憶體中將第一快取行分配為相黏,且可經過一時間長度,使得在再次存取第一快取行之前,可替換抑或至少一次存取快取記憶體中之所有其他行。若需要在快取記憶體中分配新行,則新行將代替快取記憶體中之非相黏行中的一者,即使該非相黏行相比於第一快取行已最近較多被存取亦如此。第一快取行可保持於快取記憶體中,即使其為快取記憶體中之最近最少存取行亦如此。此情形與傳統快取記憶體形成對比,在傳統快取記憶體中,最近最多存取行保留於快取記憶體中,且尚未被存取達長時段之行被替換。
LRU 76A至76B欄位可儲存指示與對應行相關聯之使用狀態的值。此LRU 76A至76B欄位可指示已多頻繁及/或多久一次存取對應行,且此欄位中之位元的數目可取決於實施例而變化。群組ID 78A至78B欄位可儲存識別擁有系統快取記憶體之資料記憶體中之對應行之群組的群組ID。該群組可指代正由一或多個請求代理使用之特定資料流程。應注意,在一些實施例中,「群組ID」亦可被稱作「資料集ID」。取決於實施例,可利用各種數目個位元以表示群組ID。可使群組ID 78A至78B欄位填入有與對應快取行相關聯之群組ID。
在一些狀況下,單一群組ID可由兩個或兩個以上請求代理共用。舉例而言,頁面轉譯資料表可由多個請求代理利用,且參考頁面轉譯資料表之任何異動可被指派一共同群組ID。此共同群組ID可跨越多個請求代理。又,每一請求代理可針對正由該請求代理利用之不同資料流程而使用多個分離群組ID。可由主機電子器件之OS將群組ID指派至用於一或多個請求代理之資料流程。在一實施例中,器件驅動程式可向OS請求群組ID。作為請求之部分,器件驅動程式可識別該請求對應於哪一類型之資料。接著,回應於自器件驅動程式接收請求,OS可基於正被存取之資料的類型而指定待用於此請求之群組ID。
可在系統快取記憶體中向由群組ID表示之每一群組指派快取行之特定配額。當群組達到其配額之總量時,該群組可不再能夠在系統快取記憶體中分配任何更多行。取而代之,特定群組可在快取記憶體中運用經新分配行來替換其現有行。在一實施例中,針對給定群組ID而替換之第一行可為具有無效狀態之行,繼之以具有LRU已變更狀態之行。
同位80A至80B欄位可包括任何數目個同位位元,以橫越所有欄位而提供整個項目中之資料之準確性的指示。應注意,在其他實施例中,標記記憶體通路70A至70B中之每一項目可包括圖4中未圖示之資訊的一或多個額外欄位。舉例而言,關於多頻繁替換快取行之資訊亦可儲存於標記記憶體通路70A至70B之每一標記中。又,在其他實施例中,可以任何其他合適方式來結構化標記記憶體通路70A至70B。
現在參看圖5,展示將請求輸送至系統快取記憶體之請求代理之一實施例。請求代理90表示任何數目及類型之請求代理。儘管將請求代理90展示為直接地將請求92發送至記憶體控制器110,但應注意,一或多個組件(例如,連貫性點、切換器)可位於請求代理90與記憶體 控制器110之間。
自請求代理90發送之每一請求可包括複數個欄位。舉例而言,在一實施例中,請求92可包括命令94,其指示正被發送之請求的類型(例如,讀取、寫入)。請求92亦可包括異動ID 96,其指示與請求92相關聯之異動ID。異動ID 96可唯一地識別針對請求代理90之請求。應注意,異動ID 96亦可被稱作「請求ID」。另外,在其他實施例中,請求92亦可包括代理ID以識別請求代理。請求92亦可包括位址98及資料100之欄位以分別識別記憶體位址及資料(用於寫入請求)。
請求92亦可包括已變更狀態指示符102以指示寫入資料是否已變更。請求92亦可包括群組ID 104以識別請求92之群組ID。分配提示106可判定如何由系統快取記憶體112處理請求92。在其他實施例中,分配提示106可被稱作「相黏提示」、「相黏旗標」、「相黏位元」或「相黏屬性」。其他屬性108表示可為請求92之部分的任何數目及類型之額外屬性(例如,連貫性、QoS、請求之大小、請求者ID)。
儘管將系統快取記憶體112展示為單一單元,但應理解,在其他實施例中,系統快取記憶體112可分裂成兩個或兩個以上分離單元。舉例而言,記憶體控制器110可包括兩個通道,且系統快取記憶體112可分裂成被管理為一個邏輯系統快取記憶體之兩個分離實體系統快取記憶體。
現在轉至圖6,展示系統快取記憶體內之相黏移除引擎之一實施例的方塊圖。在一實施例中,相黏移除引擎124可經組態以逐步查看標記記憶體之索引,以清除屬於正被釋放之群組ID之對應快取行的相黏狀態。圖6中展示標記通路122A至122B,且標記通路122A至122B表示標記記憶體之任何數目個通路。標記通路122A至122B之每一項目可包括索引、狀態欄位、群組ID欄位,及圖6中未圖示以避免使該圖紊亂之一或多個其他欄位。
在一實施例中,相黏移除引擎124可接收軟體命令以釋放屬於群組ID 2之快取行。引擎124可在資料表126中針對群組ID 2而記錄開始索引0。將出於此論述之目的而假定,引擎124在接收針對群組ID 2之釋放請求之前閒置,且因此,引擎124可在逐步查看標記記憶體時在索引0處開始。
在每一索引處,引擎124可在彼特定索引處之每一通路122A至122B中尋找群組ID匹配。舉例而言,在另一實施例中,標記記憶體可包括16個通路,且在經由標記記憶體索引之每一步進處,引擎124可比較所有16個通路之群組ID欄位與正被清除之群組ID。若引擎124找到匹配,則可將項目之狀態欄位改變至LRU已變更。在另一實施例中,若引擎124找到匹配,則可將狀態欄位改變至指定對應快取行為用於替換之主要候選者的另一狀態。舉例而言,在一實施例中,若狀態欄位為已變更(相黏或非相黏),則可將其改變至LRU已變更,且若狀態欄位為未變更(相黏或非相黏),則可將其改變至無效。用於指示出對應快取行應被替換之其他合適技術係可能的且被涵蓋。應注意,若找到多個匹配,則引擎124可在單一索引處之多個通路中改變多個項目。引擎124可繼續逐步查看索引直至其返回至資料表126中指示之開始索引為止。
當引擎124清除特定項目之狀態欄位時,可不立即自系統快取記憶體移除彼特定項目之對應快取行。實情為,可在請求在系統快取記憶體中遺漏且正針對此請求而分配新快取行之某一未來時間點替換快取行。此情形允許藉由縮減在清除處理序期間產生之訊務的量而快速地完成清除處理序。在一些實施例中,標記管線可僅能夠產生每時脈循環單一異動。若清除處理序經組態以立即清空匹配快取行,則此情形可延遲清除處理序。舉例而言,若在單一索引處找到與多個項目之匹配,則將需要將多個已變更快取行清空回至記憶體。在此狀況下, 將延遲清除處理序,從而等待已變更行被清空。因此,為了避免此等類型之延遲,清除處理序可將快取行標示為用於替換之主要候選者,且接著移動至標記記憶體之下一索引上。當快取控制單元正在某一稍後時間點搜尋替換候選者時,快取控制單元可偏好於替換被標示為用於替換之主要候選者的此等快取行中之一者。
在一實施例中,可在系統快取記憶體之組態暫存器120中指定配額清除方法。相黏移除引擎124可藉由查詢暫存器120而判定配額清除方法。若將配額清除方法設定至清空,則當自系統快取記憶體清除給定群組ID時可將已變更快取行寫入至記憶體。若將配額清除方法設定至丟棄,則可不將已變更快取行寫回至記憶體且而是可使已變更快取行無效。
組態暫存器120亦可包括每群組ID一配額啟用指示符。在一實施例中,為了起始用於給定群組ID之清除處理序,軟體代理可發送命令以清除用於給定群組ID之配額啟用指示符。系統快取記憶體可偵測關於配額啟用指示符之轉變,且接著,系統快取記憶體可啟動相黏移除引擎124。該相黏移除引擎接著可基於組態暫存器120中指定之配額清除方法而清除針對給定群組ID而分配之所有快取行。若將配額清除方法設定至清空,則可將用於給定群組ID之已變更行設定至LRU已變更且稍後寫回至記憶體。若將配額清除方法設定至丟棄,則可使用於給定群組ID之已變更行無效。在已清除用於給定群組ID之所有行之後,接著可將組態暫存器120中用於給定群組ID之配額狀態指示符位元清除至0。若軟體代理在清除仍被實施的同時設定配額啟用指示符,則可不在系統快取記憶體中分配運用彼群組ID之請求直至清除完成為止。
現在參看圖7,展示相黏移除引擎之另一實施例的方塊圖。圖7所展示之實例為圖6所展示之相黏移除引擎124之索引步行的延續。相 黏移除引擎124可已到達索引45,如標記通路122A中之項目所展示。引擎124可已基於如圖6所展示的針對群組ID 2之經接收釋放請求而逐步查看索引0至索引45而搜尋與群組ID 2之匹配。可在資料表126中針對群組ID 2而記載(record)開始索引0。
如圖7所展示,當相黏移除引擎124在用於釋放群組ID 2之索引步行中到達索引45時,引擎124可接收針對群組ID 5之釋放請求。作為回應,引擎124可在資料表126之開始索引欄位中記錄其索引45之當前位置。引擎124亦可查詢組態暫存器120以判定待用於群組ID 5的特定類型之清除處理序。接著,引擎124可繼續其經由標記通路122A至122B之步行,此時搜尋與群組ID 2或5之匹配。
當相黏移除引擎124到達標記記憶體通路122A至122B之最後索引時,接著,相黏移除引擎124可回繞至通路122A至122B之第一索引,且自彼處繼續索引步行。引擎124可在彼點處停止清除用於群組ID 2之快取行的狀態,但可繼續清除用於群組ID 5之快取行的狀態直至返回至資料表126中記錄之開始索引(45)為止。應注意,引擎124可接收任何數目個釋放請求,同時執行經由標記通路122A至122B之索引步行。引擎124可在資料表126中針對釋放請求已被接收之每一群組ID而儲存開始索引。引擎124可經組態以執行任何數目個同時清除處理序。
現在轉至圖8,展示用於釋放用於多個群組ID之相黏狀態之方法130之一實施例。出於論述目的,以循序次序來展示此實施例中之步驟。應注意,在下文所描述之方法之各種實施例中,可同時地執行所描述元素中之一或多者、以不同於所展示次序之次序來執行所描述元素中之一或多者,或可完全地省略所描述元素中之一或多者。亦可按需要而執行其他額外元素。
在一實施例中,相黏移除引擎可接收對釋放用於指派至第一群 組ID之快取行之相黏狀態的請求(區塊132)。回應於接收此請求,相黏移除引擎可開始逐步查看標記記憶體,其在標記記憶體之第一項目處開始(區塊134)。在其他實施例中,相黏移除引擎可在某一其他項目處開始其經由標記記憶體之步行。在每一步進處,若將標記指派至第一群組ID,則引擎可清除標記之相黏狀態(區塊136)。在一實施例中,標記記憶體可具有多通路集合關聯組態。在此實施例中,引擎可讀取每一通路中之標記的群組ID欄位,且清除被指派至第一群組ID之任何標記的相黏狀態。若將單一索引處之一個以上標記指派至第一群組ID,則引擎可在單一步驟中清除多個項目之相黏狀態。
在逐步查看標記記憶體以釋放第一群組ID之相黏狀態期間,相黏移除引擎可接收第二釋放請求(區塊138)。第二釋放請求可為使第二群組ID自系統快取記憶體清除其所有快取行。回應於接收針對第二群組ID之第二釋放請求,引擎可在標記記憶體中記錄引擎之當前位置的索引(區塊140)。在一實施例中,此索引可儲存於資料表中,且索引可被識別為與第二群組ID相關聯。接著,引擎可繼續其經由標記記憶體之步行,但現在,引擎可藉由尋找與第一群組ID抑或第二群組ID之匹配而擴展其搜尋(區塊142)。若引擎找到與第一群組ID或第二群組ID中任一者之匹配,則引擎可清除匹配標記項目之相黏狀態(區塊144)。在一實施例中,引擎可藉由將標記之狀態設定至LRU已變更而清除匹配標記項目之相黏狀態。
若引擎已到達標記記憶體之最後項目(條件區塊146,「是」分支),則引擎可產生已針對第一群組ID而完成相黏狀態清除處理序之指示(區塊148)。在一實施例中,引擎可藉由在組態暫存器中針對第一群組ID將配額狀態指示符清除至非作用中而傳信相黏狀態清除處理序之結束。若引擎尚未到達標記記憶體之最後項目(條件區塊146,「否」分支),則引擎可繼續其經由標記記憶體之步行,從而尋找與第 一群組ID抑或第二群組ID之匹配(區塊142)。
在區塊148之後,引擎可回繞至標記記憶體之第一項目(區塊150)。接著,引擎可繼續逐步查看標記記憶體之項目,但在每一項目處,引擎可僅尋找與第二群組ID之匹配(區塊152)。若引擎找到與第二群組ID之匹配,則引擎可清除匹配標記項目之相黏狀態(區塊154)。
若引擎已返回至當接收針對第二群組ID之第二釋放請求時記錄的索引(條件區塊156,「是」分支),則引擎可傳信出已針對第二群組ID而完成相黏狀態清除處理序(區塊158)。若引擎尚未返回至經記錄索引(條件區塊156,「否」分支),則引擎可繼續其經由標記記憶體之步行,從而尋找與第二群組ID之匹配(區塊152)。在區塊158之後,方法130可結束。
應注意,相黏移除引擎可同時地針對兩個以上群組ID而執行相黏清除處理序。引擎可以相似於方法130之方式來利用用於三個或三個以上群組ID之方法。每當引擎接收針對群組ID之釋放請求時,引擎就可記錄引擎之當前位置的標記記憶體之索引。接著,引擎可在其經由標記記憶體之步行中回繞直至其返回至經記錄索引為止。引擎可針對任何數目個群組ID而記錄任何數目個索引,且可在經由標記記憶體之每一步進處搜尋多個分離群組ID。
接下來參看圖9,展示系統190之一實施例的方塊圖。如所展示,系統190可表示桌上型電腦200、膝上型電腦210、平板電腦220、蜂巢式電話230、電視240(或經組態以耦接至電視之機上盒)或其他者之晶片、電路系統、組件等等。在所說明實施例中,系統190包括耦接至外部記憶體192的(圖2之)IC 30之至少一例項。
IC 30耦接至一或多個周邊裝置194及外部記憶體192。亦提供電力供應器196,其將供應電壓供應至IC 30以及將一或多個供應電壓供 應至記憶體192及/或周邊裝置194。在各種實施例中,電力供應器196可表示電池(例如,智慧型手機、膝上型電腦或平板電腦中之可再充電電池)。在一些實施例中,可包括IC 30之一個以上例項(且亦可包括一個以上外部記憶體192)。
記憶體192可為任何類型之記憶體,諸如,動態隨機存取記憶體(DRAM)、同步DRAM(SDRAM)、雙資料速率(DDR、DDR2、DDR3等等)SDRAM(包括諸如mDDR3等等的SDRAM之行動版本,及/或諸如LPDDR2等等的SDRAM之低功率版本)、RAMBUS DRAM(RDRAM)、靜態RAM(SRAM)等等。一或多個記憶體器件可耦接至電路板上以形成記憶體模組,諸如,單內嵌記憶體模組(SIMM)、雙內嵌記憶體模組(DIMM)等等。或者,器件可經安裝有呈疊層晶片組態、疊層封裝組態或多晶片模組組態之IC 30。
取決於系統190之類型,周邊裝置194可包括任何所要電路系統。舉例而言,在一實施例中,周邊裝置194可包括用於各種類型之無線通信(諸如,wifi、藍芽、蜂巢式、全球定位系統等等)的器件。周邊裝置194亦可包括額外儲存體,其包括RAM儲存體、固態儲存體,或磁碟儲存體。周邊裝置194可包括使用者介面器件(諸如,顯示螢幕,其包括觸控顯示螢幕或多點觸控顯示螢幕)、鍵盤或其他輸入器件、麥克風、揚聲器等等。
應強調,上述實施例僅為實施之非限制性實例。對於熟習此項技術者而言,一旦已完全地瞭解以上揭示內容,眾多變化及修改就將變得顯而易見。希望將以下申請專利範圍解譯為涵蓋所有此類變化及修改。
120‧‧‧組態暫存器
122A‧‧‧標記通路
122B‧‧‧標記通路
124‧‧‧相黏移除引擎
126‧‧‧資料表

Claims (20)

  1. 一種快取記憶體,其經組態以:將複數個快取行儲存於一資料記憶體中;儲存對應於該複數個快取行之複數個標記,其中該複數個標記中每一者包括一狀態及一群組識別符(ID),其中該群組ID識別使該快取行儲存於該快取記憶體中之請求的一資料流程群組;接收對清除用於一第一群組ID之所有快取行的一第一請求;回應於接收該第一請求而在該複數個標記內記載一開始定位之一第一開始索引;逐步查看該複數個標記以識別屬於該第一群組ID之快取行;且回應於判定一給定快取行屬於該第一群組ID而清除該給定快取行之一狀態。
  2. 如請求項1之快取記憶體,其中該快取記憶體經進一步組態以在返回至該第一開始索引後即停止逐步查看該複數個標記。
  3. 如請求項2之快取記憶體,其中該快取記憶體經進一步組態以回應於接收對清除用於一第二群組ID之所有快取行的一第二請求而在該複數個標記內記載一開始定位之一第二開始索引,其中在返回至該第一開始索引之前接收該第二請求。
  4. 如請求項3之快取記憶體,其中回應於接收該第二請求,該快取記憶體經進一步組態以:逐步查看該複數個標記以識別屬於該第一群組ID抑或該第二群組ID之快取行;且回應於判定一給定快取行屬於該第一群組ID抑或該第二群組ID而清除該給定快取行之狀態。
  5. 如請求項4之快取記憶體,其中在返回至該第一開始索引之後,該快取記憶體經進一步組態以逐步查看該複數個標記以識別屬於該第二群組ID之快取行。
  6. 如請求項5之快取記憶體,其中該快取記憶體經進一步組態以在返回至該第二開始索引後即停止逐步查看該複數個標記。
  7. 如請求項4之快取記憶體,其中該快取記憶體具有一N通路集合關聯組態,其中N為一整數,且其中該快取記憶體經組態以在每一標記索引處搜尋所有N個通路以識別屬於該第一群組ID之任何快取行。
  8. 如請求項1之快取記憶體,其中清除一給定快取行之狀態包含:將該給定快取行之狀態改變至最近最少使用(LRU)已變更。
  9. 如請求項1之快取記憶體,其中該快取記憶體經進一步組態以:維持每群組ID一配額清除方法指示符,該配額清除方法指示符分別經設定至清空或丟棄,以指定用於一對應群組ID之已變更快取行應被寫回至記憶體抑或被丟棄。
  10. 如請求項9之快取記憶體,其中該快取記憶體經進一步組態以:回應於判定用於該第一群組ID之該配額清除方法指示符被設定至清空,而清空對應於該第一群組ID之所有快取行。
  11. 如請求項9之快取記憶體,其中控制單元經進一步組態以:回應於判定該配額清除方法被設定至丟棄,而使對應於該第一群組ID之所有快取行無效。
  12. 一種方法,其包含:回應於偵測對自一系統快取記憶體釋放一第一群組ID之快取行的一請求而逐步查看該系統快取記憶體之一標記記憶體的項目;在每一項目處,判定是否將該項目之一群組ID指派至該第一 群組ID;及回應於判定將一項目指派至該第一群組ID而清除該項目之一相黏狀態。
  13. 如請求項12之方法,其進一步包含:在逐步查看該標記記憶體之所有該等項目之前,偵測對自該系統快取記憶體釋放一第二群組ID之快取行的一請求;回應於偵測對釋放該第二群組ID之快取行的該請求而記錄經由該標記記憶體之該等項目之一最近步進的一索引;在每一項目處,判定是否將該項目之一群組ID指派至該第一群組ID抑或該第二群組ID;及回應於判定將一項目指派至該第一群組ID抑或該第二群組ID而清除該項目之一相黏狀態。
  14. 如請求項13之方法,其進一步包含回應於到達該標記記憶體之一最後項目而回繞至該標記記憶體之該等項目的一開始,且繼續逐步查看該標記記憶體之該等項目。
  15. 如請求項14之方法,其進一步包含繼續逐步查看該標記記憶體之該等項目,直至到達該經記錄索引為止。
  16. 如請求項12之方法,其中清除一給定快取行之相黏狀態包含:將該給定快取行之狀態改變至最近最少使用(LRU)已變更。
  17. 如請求項12之方法,其進一步包含維持每群組ID一配額清除方法指示符,該配額清除方法指示符分別經設定至清空或丟棄,以指定用於一對應群組ID之已變更快取行應被寫回至記憶體抑或被丟棄。
  18. 如請求項17之方法,其進一步包含回應於判定用於該第一群組ID之該配額清除方法指示符被設定至清空,而清空對應於該第一群組ID之所有快取行。
  19. 如請求項17之方法,其進一步包含回應於判定該配額清除方法被設定至丟棄,而使對應於該第一群組ID之所有快取行無效。
  20. 如請求項12之方法,其進一步包含回應於到達該標記記憶體之一最後項目而回繞至該標記記憶體之該等項目的一開始,且繼續逐步查看該標記記憶體之該等項目。
TW102135192A 2012-09-28 2013-09-27 具有相黏移除引擎之系統快取記憶體 TWI499910B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/629,865 US8886886B2 (en) 2012-09-28 2012-09-28 System cache with sticky removal engine

Publications (2)

Publication Number Publication Date
TW201426306A true TW201426306A (zh) 2014-07-01
TWI499910B TWI499910B (zh) 2015-09-11

Family

ID=49326866

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102135192A TWI499910B (zh) 2012-09-28 2013-09-27 具有相黏移除引擎之系統快取記憶體

Country Status (6)

Country Link
US (1) US8886886B2 (zh)
EP (1) EP2901287B1 (zh)
JP (1) JP5976225B2 (zh)
KR (1) KR101689094B1 (zh)
TW (1) TWI499910B (zh)
WO (1) WO2014052589A2 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311251B2 (en) 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
KR20170094815A (ko) 2016-02-11 2017-08-22 삼성전자주식회사 비휘발성 메모리, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 읽기 방법
US10180839B2 (en) 2016-03-04 2019-01-15 Silicon Laboratories Inc. Apparatus for information processing with loop cache and associated methods
US10572399B2 (en) 2016-07-13 2020-02-25 Qualcomm Incorporated Memory request arbitration
US11109258B2 (en) * 2019-05-31 2021-08-31 Apple Inc. Crowd sourced privacy preserving access point mapping

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60178551A (ja) * 1984-02-25 1985-09-12 Fujitsu Ltd アドレス変換バツフア制御方式
US5142676A (en) 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
JPH05303528A (ja) * 1992-04-27 1993-11-16 Oki Electric Ind Co Ltd ライトバック式ディスクキャッシュ装置
JPH06178551A (ja) * 1992-12-10 1994-06-24 Toshiba Corp 電力変換装置の過電圧保護装置
JPH11259362A (ja) * 1998-03-13 1999-09-24 Nec Corp キャッシュメモリ制御方法及び装置
US7356651B2 (en) 2004-01-30 2008-04-08 Piurata Technologies, Llc Data-aware cache state machine
GB2422926B (en) * 2005-02-04 2008-10-01 Advanced Risc Mach Ltd Data processing apparatus and method for controlling access to memory
JP2007011580A (ja) 2005-06-29 2007-01-18 Toshiba Corp 情報処理装置
US7640399B1 (en) 2006-05-10 2009-12-29 Advanced Micro Devices, Inc. Mostly exclusive shared cache management policies
GB0722707D0 (en) 2007-11-19 2007-12-27 St Microelectronics Res & Dev Cache memory
US20090193195A1 (en) 2008-01-25 2009-07-30 Cochran Robert A Cache that stores data items associated with sticky indicators
US8549208B2 (en) 2008-12-08 2013-10-01 Teleputers, Llc Cache memory having enhanced performance and security features
US8266409B2 (en) * 2009-03-03 2012-09-11 Qualcomm Incorporated Configurable cache and method to configure same
US8108621B2 (en) * 2009-05-27 2012-01-31 Via Technologies, Inc. Data cache with modified bit array

Also Published As

Publication number Publication date
TWI499910B (zh) 2015-09-11
KR101689094B1 (ko) 2016-12-22
KR20150038367A (ko) 2015-04-08
WO2014052589A3 (en) 2014-08-28
US20140095800A1 (en) 2014-04-03
EP2901287B1 (en) 2016-07-20
US8886886B2 (en) 2014-11-11
JP2015527684A (ja) 2015-09-17
JP5976225B2 (ja) 2016-08-23
EP2901287A2 (en) 2015-08-05
WO2014052589A2 (en) 2014-04-03

Similar Documents

Publication Publication Date Title
TWI492055B (zh) 具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法
US9218286B2 (en) System cache with partial write valid states
US9201796B2 (en) System cache with speculative read engine
US9158685B2 (en) System cache with cache hint control
KR101636634B1 (ko) 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법
US9135177B2 (en) Scheme to escalate requests with address conflicts
US20140304475A1 (en) Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
US9400544B2 (en) Advanced fine-grained cache power management
US9218040B2 (en) System cache with coarse grain power management
US20160055099A1 (en) Least Recently Used Mechanism for Cache Line Eviction from a Cache Memory
US9043570B2 (en) System cache with quota-based control
TWI499910B (zh) 具有相黏移除引擎之系統快取記憶體
EP2454669A1 (en) Tlb prefetching
US20180018095A1 (en) Method of operating storage device and method of operating data processing system including the device
TWI526831B (zh) 針對瀏覽應用程式最佳化之快取分配方法
US9311251B2 (en) System cache with sticky allocation
US8977817B2 (en) System cache with fine grain power management
US9262325B1 (en) Heterogeneous memory system
US11726920B2 (en) Tag processing for external caches
US7840757B2 (en) Method and apparatus for providing high speed memory for a processing unit
JP2019164497A (ja) 管理装置、情報処理装置、管理方法、およびプログラム