TWI492055B - 具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法 - Google Patents

具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法 Download PDF

Info

Publication number
TWI492055B
TWI492055B TW102135191A TW102135191A TWI492055B TW I492055 B TWI492055 B TW I492055B TW 102135191 A TW102135191 A TW 102135191A TW 102135191 A TW102135191 A TW 102135191A TW I492055 B TWI492055 B TW I492055B
Authority
TW
Taiwan
Prior art keywords
memory
cache
request
state
cache line
Prior art date
Application number
TW102135191A
Other languages
English (en)
Other versions
TW201423404A (zh
Inventor
Sukalpa Biswas
Shinye Shiu
James B Keller
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 TW201423404A publication Critical patent/TW201423404A/zh
Application granted granted Critical
Publication of TWI492055B publication Critical patent/TWI492055B/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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)

Description

具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法
本發明大體上係關於資料快取,且尤其係關於用於最佳化位於記憶體控制器中之系統快取記憶體的方法及機制。
現代行動電子器件常常包括共用對一或多個記憶體器件之存取的多個組件或代理(agent)。此多個代理可進行對記憶體之大數目個請求,且隨著此等請求之數目增加,器件之功率消耗增加,此情形限制器件之電池壽命。一種用於縮減功率消耗之途徑係設法縮減藉由快取處理器中或附近之資料而存取晶片外記憶體的次數。
習知快取記憶體通常耦接至或靠近於處理器,且儲存由處理器頻繁地存取之資料以縮減延時。在習知快取記憶體中,可基於存取之時間局域性(temporal locality)而將資料保留於該快取記憶體中。舉例而言,當在快取記憶體中分配一行時,該行被參考之次數愈多,則使此行被替換變得愈困難。然而,當存取在時間上廣泛地間隔時,習知快取記憶體未經設計用於儲存被多次存取之資料。在傳統快取記憶體中,此類資料將傾向於被收回。
當發生快取遺漏(cache miss)時,可啟動長延時記憶體讀取操作以自晶片外記憶體讀取資料。由於此操作之長延時,眾多遺漏可在任一時間待處理。典型快取記憶體可包括為內容可定址記憶體(content-addressable memory,CAM)之遺漏佇列,且可針對每一快取遺漏而搜 尋該遺漏佇列以防止產生針對同一快取行之多次讀取。遺漏佇列傾向於極大,從而佔用有價值之空間。遺漏佇列亦傾向於為功率密集型,此情形限制主機器件之電池壽命。
揭示用於針對一快取遺漏而利用一資料擱置狀態之系統、記憶體控制器、快取記憶體及方法。在一系統單晶片中,多個代理可耦接至一記憶體控制器,該記憶體控制器又可耦接至一或多個記憶體器件。該多個代理可經由該記憶體控制器而存取該(該等)記憶體器件。出於縮減存取晶片外記憶體之請求之數目的目的,該記憶體控制器可包括經組態以儲存資料之一系統快取記憶體。
在一實施例中,在一請求於該系統快取記憶體中遺漏之時間,可在該系統快取記憶體中分配一快取行儲存位置(cache line storage location)。該快取行儲存位置可經分配有一中間狀態,且此中間狀態可被稱作一資料擱置狀態。該資料擱置狀態指示出針對彼特定快取行而存在一遺漏擱置。稍後,當針對請求遺漏而發生填滿資料時,可將該快取行儲存位置之狀態更新至一未變更狀態(clean state)。
當一請求命中於處於一資料擱置狀態之一快取行儲存位置時,可將該請求發送至一重新執行緩衝器(replay buffer)以等待直至將該快取行儲存位置更新至一未變更狀態為止。當自記憶體重新取得該填滿資料時,接著可將該快取行儲存位置更新至一未變更狀態。接著,可經由標記查找機制而喚醒及重新執行在該重新執行緩衝器中等待之該請求。該請求接著將命中於處於該未變更狀態之該快取行儲存位置,且該請求可執行其各別存取。經由在該系統快取記憶體中針對遺漏而使用該資料擱置狀態,可縮減該遺漏佇列之大小,且亦可縮減由該系統快取記憶體消耗之功率。
鑒於本文所呈現之途徑的以下詳細描述,此等及其他特徵及優 勢對於一般技術者將變得顯而易見。
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‧‧‧組態暫存器
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‧‧‧系統快取記憶體
124‧‧‧快取控制單元
126‧‧‧標記記憶體
128‧‧‧資料記憶體
130‧‧‧快取行儲存位置
132‧‧‧重新執行緩衝器
134‧‧‧請求
136‧‧‧標記項目
140‧‧‧請求
150‧‧‧快取行
152‧‧‧啟動信號
190‧‧‧系統
192‧‧‧外部記憶體
194‧‧‧周邊裝置
196‧‧‧電力供應器
200‧‧‧桌上型電腦
210‧‧‧膝上型電腦
220‧‧‧平板電腦
230‧‧‧蜂巢式電話
240‧‧‧電視
藉由結合隨附圖式而參考以下描述,可較好地理解方法及機制之以上及另外優勢,在該等圖式中:圖1說明電子器件之部分之一實施例。
圖2說明積體電路之部分之一實施例。
圖3為說明系統快取記憶體之一實施例的方塊圖。
圖4為說明一對標記記憶體通路(tag memory way)之一實施例的方塊圖。
圖5說明將請求輸送至系統快取記憶體之請求代理之一實施例。
圖6為說明系統快取記憶體之另一實施例的方塊圖。
圖7為說明系統快取記憶體之一實施例的另一方塊圖。
圖8為說明系統快取記憶體之一實施例的另一方塊圖。
圖9為說明用於在系統快取記憶體中利用資料擱置狀態之方法之一實施例的一般化流程圖。
圖10為一系統之一實施例的方塊圖。
在以下描述中,闡述眾多特定細節以提供對本文所呈現之方法及機制的透徹理解。然而,一般技術者應認識到,可在無此等特定細節的情況下實踐各種實施例。在一些情況下,尚未詳細地展示熟知之結構、組件、信號、電腦程式指令及技術以避免混淆本文所描述之途徑。應瞭解,出於說明簡單及清楚起見,諸圖所展示之元件未必按比例繪製。舉例而言,一些元件之尺寸相對於其他元件可被誇示。
本說明書包括對「一實施例」之參考。片語「在一實施例中」在不同上下文中之出現未必指代同一實施例。可以與本發明一致之任何合適方式來組合特定特徵、結構或特性。此外,如貫穿本申請案所 使用,詞語「可」係在准許意義(亦即,意謂有可能)而非強制意義(亦即,意謂必須)上使用。相似地,詞語「包括」意謂包括但不限於。
術語學。以下段落提供用於本發明(包括附加申請專利範圍)中找 到之術語的定義及/或上下文:「包含」。此術語為開放式。如附加申請專利範圍中所使用,此術語不排除額外結構或步驟。考慮敍述下者之技術方案:「一種記憶體控制器,其包含一系統快取記憶體……」。此類技術方案不排除該記憶體控制器包括額外組件(例如,記憶體通道單元、切換器)。
「經組態以」。可將各種單元、電路或其他組件描述或主張為「經組態以」執行一或若干任務。在此類上下文中,「經組態以」用以藉由指示出該等單元/電路/組件包括在操作期間執行該或該等任務之結構(例如,電路系統)而暗示結構。因而,即使當單元/電路/組件當前未操作(例如,未接通)時,亦可將已指定單元/電路/組件稱為經組態以執行任務。與「經組態以」語言一起使用之單元/電路/組件包括硬體,例如,電路、儲存可執行以實施操作之程式指令的記憶體,等等。敍述出單元/電路/組件「經組態以」執行一或多個任務對於彼單元/電路/組件並不明確地意欲援引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可使決策基於快取行之相黏狀態。舉例而言,在一情境中,可將幾何資料提供至處理器複合體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可經組態以接收與經接收異動相關之各種控制資料,且對經接收控制資料作出回應。應注意,儘管圖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中快取之快取行的各種標記。舉例而言,在一實施例中,標記可包括連貫性狀態、相黏狀態、已變更(dirty)指示符、最近最少使用(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之另一相黏行來替換一相黏行。
在一些實施例中,可將相黏行之擁有權自一個群組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可由兩個或兩個以上請求代理共用。舉例而言,頁面轉譯資料表可由多個請求代理利用,且參考頁面轉譯資料表之任何異動可被指派一共同群組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可被稱作「分配提示」、「相黏提示」、「相黏旗標」、「相黏位元」或「相黏屬性」。應注意,快取提示106可指示請求92之相黏狀態,且亦可包括關於應如何由系統快取記憶體112處理請求92之其他資訊。其他屬性108表示可為請求92之部分的任何數目及類型之額外屬性(例如,連貫性、QoS屬性、請求之大小、請求者ID、推測式狀態)。應注意,在其他實施例中,可不同地結構化請求92,其中圖5中未圖示一或多個額外欄位及/或省略所展示欄位中之一或多者。
儘管將系統快取記憶體112展示為單一單元,但應理解,在其他實施例中,系統快取記憶體112可分裂成兩個或兩個以上分離單元。舉例而言,在另一實施例中,記憶體控制器110可包括兩個通道,且系統快取記憶體112可分裂成兩個分離實體系統快取記憶體。在此實施例中,兩個分離實體系統快取記憶體可被管理為一個邏輯系統快取記憶體。
現在轉至圖6,展示系統快取記憶體之另一實施例的方塊圖。系統快取記憶體120可包括快取控制單元124、標記記憶體126、資料記憶體128及重新執行緩衝器132。應注意,在系統快取記憶體120內可 存在未圖示以避免使該圖紊亂之額外單元及信號連接。可由各種請求代理產生參考記憶體之請求,且將該等請求輸送至系統快取記憶體120。如圖6所展示,正將請求134輸送至系統快取記憶體120之快取控制單元124。快取控制單元124可執行標記記憶體126之標記查找,以判定由請求134參考之記憶體位址處的資料是否儲存於資料記憶體128中。
可出於此論述之目的而假定,針對請求134而執行之標記查找引起快取遺漏。由於快取遺漏,可在資料記憶體128中針對該遺漏而分配快取行儲存位置130。亦可更新標記記憶體126中之對應標記項目136,且可將標記之狀態設定至資料擱置。亦可將請求134轉遞至記憶體(未圖示)以擷取經參考記憶體位址處之資料。應注意,請求134可經由路徑上之一或多個單元(例如,記憶體控制器切換器、記憶體通道單元)而傳遞至記憶體。亦可將請求134輸送至遺漏佇列(未圖示),其中該請求可保持直至自記憶體重新取得填滿資料為止。
現在參看圖7,展示系統快取記憶體120之另一實施例的方塊圖。圖7所展示之實例為圖6所描述之情境的延續。如圖7所展示,在針對(圖6之)請求134而自記憶體重新取得填滿資料之前接收新請求(請求140)。可接收請求140,且可針對請求140而執行標記查找。可出於此論述之目的而假定,請求140命中於標記項目136。
當請求140命中於標記項目136時,可讀取標記項目136之資料擱置狀態,且結果,可將請求140發送至重新執行緩衝器132。請求140可在重新執行緩衝器132中等待直至針對快取行儲存位置130而重新取得填滿資料為止。應注意,若任何其他請求在標記項目136處於資料擱置狀態時命中於該標記項目,則亦可將此等請求儲存於重新執行緩衝器132中。此外,亦可將命中於標記記憶體126中處於資料擱置狀態之任何其他標記項目的任何請求儲存於重新執行緩衝器132中。
在另一實施例中,在執行標記查找之前可於請求佇列(未圖示)中對請求140進行排入佇列。在標記查找引起至資料擱置狀態標記之快取命中之後,接著可使請求140保持於請求佇列中,而非發送至重新執行緩衝器132。應注意,在另外實施例中,可回應於判定請求140命中於處於資料擱置狀態之標記而將請求140儲存於系統快取記憶體120內之其他位置中。
現在轉至圖8,展示系統快取記憶體120之另一實施例的方塊圖。圖8所展示之實例為圖7所描述之情境的延續。如圖8所展示,可自記憶體擷取用於(圖6之)請求134之填滿資料,且可將該填滿資料轉遞至快取行儲存位置130。由快取行150表示之此填滿資料可儲存於快取行儲存位置130中。
當針對快取行儲存位置130而重新取得填滿資料時,可將對應標記項目136自資料擱置狀態更新至未變更狀態。取決於請求134之快取分配提示,未變更狀態可為相黏未變更狀態或非相黏狀態。當將標記項目136更新至未變更狀態時,可將啟動信號152發送至重新執行緩衝器132以喚醒請求140。接著可重新開始請求140,且請求140可存取快取行150。
現在參看圖9,展示用於在系統快取記憶體中利用資料擱置狀態之方法160之一實施例。出於論述目的,以循序次序來展示此實施例中之步驟。應注意,在下文所描述之方法之各種實施例中,可同時地執行所描述元素中之一或多者、以不同於所展示次序之次序來執行所描述元素中之一或多者,或可完全地省略所描述元素中之一或多者。亦可按需要而執行其他額外元素。
在一實施例中,可由系統快取記憶體接收第一請求,且第一請求可在系統快取記憶體中遺漏(區塊162)。回應於偵測針對第一請求之遺漏,可針對第一請求而分配第一快取行儲存位置(區塊164)。取 決於實施例,可使用用於判定哪一現有快取行將被替換之多種替換方案中任一者。可將對應於第一快取行儲存位置之標記項目的狀態設定至資料擱置狀態(區塊166)。標記項目之狀態可保持於資料擱置狀態直至自外部記憶體重新取得用於第一請求之填滿資料為止。同時,可將第一請求轉遞至記憶體(區塊168)。應注意,可與區塊164及/或區塊166同時地執行區塊168。或者,可在區塊164及166之後執行區塊168。
在等待自記憶體重新取得填滿資料時,可由系統快取記憶體接收第二請求(區塊170)。可針對第二請求而偵測命中,且命中可至第一快取行儲存位置(區塊172)。回應於偵測第一快取行儲存位置之資料擱置狀態(區塊174),可將第二請求發送至重新執行緩衝器以等待直至更新第一快取行儲存位置之狀態為止(區塊176)。
當自記憶體重新取得用於第一請求之填滿資料時,可將經擷取資料儲存於第一快取行儲存位置中,且可將第一快取行儲存位置之狀態更新至未變更狀態(區塊178)。應注意,取決於第一請求之相黏狀態,可將狀態更新至相黏未變更或非相黏未變更。
當將第一快取行儲存位置更新至未變更狀態時,可將信號發送至重新執行緩衝器以重新啟動第二請求(區塊180)。發送至重新執行緩衝器之信號可使用一或多個識別符(例如,異動ID、代理ID、請求ID)來唯一地識別第二請求,此係因為可存在儲存於重新執行緩衝器中之一個以上請求。回應於接收此重新啟動信號,第二請求可經由標記管線而重新執行,且命中於第一快取行儲存位置(區塊182)。回應於偵測第一快取行儲存位置之未變更狀態,第二請求可存取彼位置處之快取行(區塊184)。在區塊184之後,方法160可結束。
接下來參看圖10,展示系統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可包括使用者介面器件(諸如,顯示螢幕,其包括觸控顯示螢幕或多點觸控顯示螢幕)、鍵盤或其他輸入器件、麥克風、揚聲器等等。
應強調,上述實施例僅為實施之非限制性實例。對於熟習此項技術者而言,一旦已完全地瞭解以上揭示內容,眾多變化及修改就將 變得顯而易見。希望將以下申請專利範圍解譯為涵蓋所有此類變化及修改。

Claims (20)

  1. 一種快取記憶體,其包含:一資料記憶體,其經組態以儲存複數個快取行;一標記記憶體,其經組態以儲存對應於該複數個快取行之複數個標記,其中該複數個標記中每一標記包括一狀態欄位;及一快取控制單元,其中該快取控制單元經組態以:針對一第一請求而偵測一快取遺漏;針對該第一請求而分配一第一快取行儲存位置,且將一對應標記之該狀態欄位設定至一資料擱置狀態;針對一第二請求而偵測至該第一快取行儲存位置之一快取命中;且回應於判定該第一快取行儲存位置處於該資料擱置狀態而將該第二請求儲存於一重新執行緩衝器中。
  2. 如請求項1之快取記憶體,其中該快取控制單元經組態以回應於自外部記憶體擷取對應於該第一請求之一第一快取行而將該第一快取行儲存位置之該狀態修改至一未變更狀態。
  3. 如請求項2之快取記憶體,其中該快取控制單元經組態以回應於將該第一快取行儲存位置之該狀態修改至該未變更狀態而重新啟動該第二請求。
  4. 如請求項3之快取記憶體,其中該快取控制單元經組態以回應於重新啟動該第二請求而針對該第二請求而存取該第一快取行。
  5. 如請求項1之快取記憶體,其中在針對該第一請求而分配該第一快取行儲存位置之前,該快取控制單元經組態以回應於針對該第一請求而偵測該快取遺漏而搜尋一非相黏替換候選者。
  6. 如請求項1之快取記憶體,其中該資料記憶體為一靜態隨機存取 記憶體(SRAM)。
  7. 如請求項1之快取記憶體,其中該控制單元經進一步組態以回應於將對應於該快取行儲存位置之該標記的該狀態設定至該資料擱置狀態而將該第一請求輸送至該外部記憶體。
  8. 如請求項7之快取記憶體,其中該控制單元經進一步組態以:接收命中於該快取行儲存位置之一第二請求;回應於偵測對應於該快取行儲存位置之該標記的一狀態被設定至該資料擱置狀態而將該第二請求儲存於一重新執行緩衝器中。
  9. 如請求項8之快取記憶體,其中該快取控制單元經組態以回應於自該外部記憶體傳回一快取行而將對應於該快取行儲存位置之該標記的該狀態更新至一未變更狀態,其中該快取行對應於該第一請求。
  10. 如請求項9之快取記憶體,其中該快取控制單元經組態以回應於偵測對應於該快取行儲存位置之該標記的該狀態至該未變更狀態的該更新而重新啟動該第二請求。
  11. 一種方法,其包含:在一系統快取記憶體處接收一第一請求;在該系統快取記憶體中針對該第一請求而偵測一遺漏;針對該第一請求而分配一第一快取行儲存位置;及將該第一快取行儲存位置之一狀態設定至一資料擱置狀態。
  12. 如請求項11之方法,其中在自記憶體擷取對應於該第一請求之一第一快取行之前,該方法進一步包含:在該系統快取記憶體處接收一第二請求;針對該第二請求而偵測對該第一快取行儲存位置之一命中;及 回應於偵測該第一快取行儲存位置被設定至該資料擱置狀態而將該第二請求發送至一重新執行緩衝器。
  13. 如請求項12之方法,其進一步包含回應於自記憶體擷取該第一快取行而將該第一快取行儲存位置之該狀態更新至一未變更狀態。
  14. 如請求項13之方法,其進一步包含回應於將該第一快取行儲存位置之該狀態更新至該未變更狀態而在該重新執行緩衝器中重新啟動該第二請求。
  15. 如請求項14之方法,其進一步包含由該第二請求回應於在該重新執行緩衝器中重新啟動該第二請求而存取該第一快取行儲存位置。
  16. 如請求項15之方法,其中在該重新執行緩衝器中重新啟動該第二請求包含一快取控制單元將一重新啟動信號發送至該重新執行緩衝器。
  17. 如請求項16之方法,其中該重新啟動信號識別該第二請求。
  18. 如請求項11之方法,其進一步包含回應於偵測該第一快取行儲存位置之該狀態至一未變更狀態的一改變而重新啟動該第一請求。
  19. 如請求項18之方法,其中該未變更狀態為一相黏未變更狀態。
  20. 如請求項18之方法,其中該未變更狀態為一非相黏未變更狀態。
TW102135191A 2012-09-27 2013-09-27 具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法 TWI492055B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/629,138 US20140089600A1 (en) 2012-09-27 2012-09-27 System cache with data pending state

Publications (2)

Publication Number Publication Date
TW201423404A TW201423404A (zh) 2014-06-16
TWI492055B true TWI492055B (zh) 2015-07-11

Family

ID=49326858

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102135191A TWI492055B (zh) 2012-09-27 2013-09-27 具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法

Country Status (3)

Country Link
US (1) US20140089600A1 (zh)
TW (1) TWI492055B (zh)
WO (1) WO2014052383A1 (zh)

Families Citing this family (12)

* 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
US9251073B2 (en) * 2012-12-31 2016-02-02 Intel Corporation Update mask for handling interaction between fills and updates
WO2016057668A1 (en) 2014-10-07 2016-04-14 Google Inc. Method and apparatus for monitoring system performance and dynamically updating memory sub-system settings using software to optimize performance and power consumption
US9740631B2 (en) 2014-10-07 2017-08-22 Google Inc. Hardware-assisted memory compression management using page filter and system MMU
KR102523418B1 (ko) * 2015-12-17 2023-04-19 삼성전자주식회사 프로세서 및 프로세서에서 데이터를 처리하는 방법
US10922230B2 (en) * 2016-07-15 2021-02-16 Advanced Micro Devices, Inc. System and method for identifying pendency of a memory access request at a cache entry
US9996478B1 (en) * 2016-12-09 2018-06-12 Advanced Micro Devices, Inc. No allocate cache policy
US10303603B2 (en) 2017-06-13 2019-05-28 Microsoft Technology Licensing, Llc Low power multi-core coherency
US10282298B2 (en) 2017-06-13 2019-05-07 Microsoft Technology Licensing, Llc Store buffer supporting direct stores to a coherence point
US11494306B2 (en) * 2019-09-20 2022-11-08 Micron Technology, Inc. Managing data dependencies in a transfer pipeline of a hybrid dimm
US11531622B2 (en) 2019-09-20 2022-12-20 Micron Technology, Inc. Managing data dependencies for out of order processing in a hybrid DIMM
CN113031574B (zh) * 2021-05-27 2022-05-24 北京全路通信信号研究设计院集团有限公司 一种设备运行过程复现方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078302A1 (en) * 2000-12-18 2002-06-20 Favor John G. Cache retry request queue
US20050172082A1 (en) * 2004-01-30 2005-08-04 Wei Liu Data-aware cache state machine
TW200951722A (en) * 2008-04-25 2009-12-16 Sandisk Corp Method and system for storage address re-mapping for a multi-bank memory device

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69323790T2 (de) * 1992-04-29 1999-10-07 Sun Microsystems, Inc. Verfahren und Vorrichtung für mehreren ausstehende Operationen in einem cachespeicherkohärenten Multiprozessorsystem
US5974508A (en) * 1992-07-31 1999-10-26 Fujitsu Limited Cache memory system and method for automatically locking cache entries to prevent selected memory items from being replaced
JP3609656B2 (ja) * 1999-07-30 2005-01-12 株式会社日立製作所 コンピュータシステム
GB2368150B (en) * 2000-10-17 2005-03-30 Advanced Risc Mach Ltd Management of caches in a data processing apparatus
US20040153611A1 (en) * 2003-02-04 2004-08-05 Sujat Jamil Methods and apparatus for detecting an address conflict
US6938130B2 (en) * 2003-02-13 2005-08-30 Sun Microsystems Inc. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
US7290092B2 (en) * 2003-12-10 2007-10-30 International Business Machines Corporation Runtime register allocator
US7437510B2 (en) * 2005-09-30 2008-10-14 Intel Corporation Instruction-assisted cache management for efficient use of cache and memory
GB2454810B8 (en) * 2007-11-19 2012-11-21 St Microelectronics Res & Dev Cache memory system
JP2010033480A (ja) * 2008-07-31 2010-02-12 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
US8868838B1 (en) * 2008-11-21 2014-10-21 Nvidia Corporation Multi-class data cache policies
US20130117838A1 (en) * 2010-02-11 2013-05-09 Timothy Evert LEVIN Superpositional Control of Integrated Circuit Processing
US9176885B2 (en) * 2012-01-23 2015-11-03 International Business Machines Corporation Combined cache inject and lock operation
US8966494B2 (en) * 2012-03-16 2015-02-24 Arm Limited Apparatus and method for processing threads requiring resources
US9755994B2 (en) * 2012-05-21 2017-09-05 Nvidia Corporation Mechanism for tracking age of common resource requests within a resource management subsystem
US9311251B2 (en) * 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
US9158685B2 (en) * 2012-09-11 2015-10-13 Apple Inc. System cache with cache hint control
US9043570B2 (en) * 2012-09-11 2015-05-26 Apple Inc. System cache with quota-based control
US9218286B2 (en) * 2012-09-27 2015-12-22 Apple Inc. System cache with partial write valid states
US9218040B2 (en) * 2012-09-27 2015-12-22 Apple Inc. System cache with coarse grain power management
US9201796B2 (en) * 2012-09-27 2015-12-01 Apple Inc. System cache with speculative read engine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020078302A1 (en) * 2000-12-18 2002-06-20 Favor John G. Cache retry request queue
US20050172082A1 (en) * 2004-01-30 2005-08-04 Wei Liu Data-aware cache state machine
TW200951722A (en) * 2008-04-25 2009-12-16 Sandisk Corp Method and system for storage address re-mapping for a multi-bank memory device

Also Published As

Publication number Publication date
WO2014052383A1 (en) 2014-04-03
US20140089600A1 (en) 2014-03-27
TW201423404A (zh) 2014-06-16

Similar Documents

Publication Publication Date Title
TWI492055B (zh) 具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法
US9201796B2 (en) System cache with speculative read engine
US9218286B2 (en) System cache with partial write valid states
US9158685B2 (en) System cache with cache hint control
US9135177B2 (en) Scheme to escalate requests with address conflicts
US9400544B2 (en) Advanced fine-grained cache power management
US9218040B2 (en) System cache with coarse grain power management
US9280471B2 (en) Mechanism for sharing private caches in a SoC
US9043570B2 (en) System cache with quota-based control
US10289565B2 (en) Cache drop feature to increase memory bandwidth and save power
TWI526831B (zh) 針對瀏覽應用程式最佳化之快取分配方法
US9311243B2 (en) Emulated message signaled interrupts in multiprocessor systems
TWI787129B (zh) 記憶體請求之快取串流
US9311251B2 (en) System cache with sticky allocation
TWI499910B (zh) 具有相黏移除引擎之系統快取記憶體
US20140095777A1 (en) System cache with fine grain power management
US20220197506A1 (en) Data placement with packet metadata
JP2015184993A (ja) 半導体装置

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees