TWI787129B - 記憶體請求之快取串流 - Google Patents

記憶體請求之快取串流 Download PDF

Info

Publication number
TWI787129B
TWI787129B TW111118030A TW111118030A TWI787129B TW I787129 B TWI787129 B TW I787129B TW 111118030 A TW111118030 A TW 111118030A TW 111118030 A TW111118030 A TW 111118030A TW I787129 B TWI787129 B TW I787129B
Authority
TW
Taiwan
Prior art keywords
cache
page
memory
level attribute
requests
Prior art date
Application number
TW111118030A
Other languages
English (en)
Other versions
TW202234248A (zh
Inventor
維諾德 恰瑪堤
喬 吉亞斯
Original Assignee
美商谷歌有限責任公司
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 美商谷歌有限責任公司 filed Critical 美商谷歌有限責任公司
Publication of TW202234248A publication Critical patent/TW202234248A/zh
Application granted granted Critical
Publication of TWI787129B publication Critical patent/TWI787129B/zh

Links

Images

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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Vehicle Body Suspensions (AREA)
  • Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)

Abstract

本發明揭示用於根據頁面級屬性值分配快取資源之方法、系統及裝置,其包含在電腦儲存媒體上編碼之電腦程式。在一實施方案中,系統包含一或多個積體用戶端器件及一快取。各用戶端器件經組態以產生至少一記憶體請求。各記憶體請求具有一各自實體位址及該實體位址所屬之一頁面之一各自頁面描述符。該快取經組態以快取該一或多個積體用戶端器件之各者之記憶體請求。該快取包括具有多個路之一快取記憶體。該快取經組態以使用該等記憶體請求之各自頁面描述符之頁面級屬性區分不同記憶體請求且將該快取記憶體之不同部分分配給不同各自記憶體請求。

Description

記憶體請求之快取串流
本說明書係關於具有積體電路器件之系統。
一快取係儲存自記憶體擷取之資料或寫入至記憶體之資料用於一系統中之一或多個不同硬體器件之一器件。硬體器件可為整合至單晶片系統(SOC)中之不同組件。在本說明書中,透過快取提供讀取請求及寫入請求之器件將指稱用戶端器件。
快取可用於藉由減少對主記憶體之總請求來減少功率消耗。另外,只要用戶端器件可存取其在快取中需要之資料,則可藉由使主記憶體及至主記憶體之資料路徑處於一低功率狀態中來進一步節省功率。因此,快取使用率與總功率消耗相關,且提高快取使用率導致總功率消耗減少。因此,依靠電池供電之器件(例如行動運算器件)可藉由提高積體用戶端器件之快取使用率來延長其電池壽命。
快取常組織成具有多個路之多個組。一請求之記憶體位址用於識別放置快取線之一特定組,且若必須替換一既有快取線,則一特定快取策略判定應替換組內之哪一路。例如,一快取可實施使一組內之最近最少使用之快取線首先被替換之一快取策略。
快取一般為無法解譯被快取之位址之低階硬體器件。換言之,傳統快取不具有判定位址用於什麽或什麽類型之資料儲存於位址處之機制。此會導致低效快取效能,因為非相關資料請求組會爭用相同快取資源,其導致較少快取命中及更多快取未中及更多所得記憶體跳脫。
本說明書描述用於在由相關資料之串流(本文亦指稱「資料串流」)驅動之一快取中實施一快取策略之技術。在本說明書中,一串流係在軟體中彼此相關之複數個記憶體請求。例如,一串流可包含相同軟體驅動器之指令之所有請求。一串流亦可包含相同軟體驅動器之資料之所有請求。
一快取可藉由檢測不同記憶體請求共有之頁面級屬性來識別資料之串流。接著,快取可將快取記憶體之不同部分分配給不同資料串流。因此,例如,指令之請求可分配給不同於資料之請求之快取之部分。此能力允許一快取基於資料之性質而非僅基於位址範圍、頁面識別符或請求用戶端器件或用戶端驅動器之識別碼來分配快取部分。
本說明書中所描述之標的之特定實施例可經實施以實現以下優點之一或多者。一快取可藉由使用頁面級屬性判定記憶體請求之相關串流來提高快取之效能及利用率。因此,快取可減少記憶體請求之不同串流爭用快取資源,其提高快取命中率。提高快取命中率減少功率消耗且延長依靠電池供電之行動器件之電池壽命。另外,藉由使用頁面級屬性,一快取可將快取之相同部分分配給具有一生產者/消費者關係之用戶端器件,其有效增加可用於整個系統之快取資料量。
附圖及[實施方式]中闡述本說明書之標的之一或多個實例之細節。將自[實施方式]、圖式及申請專利範圍明白標的之其他特徵、態樣及優點。
相關申請案之交叉參考 本申請案主張2019年2月13日申請之名稱為「Caching Streams of Memory Requests」之美國臨時申請案第62/805,167號之優先權,該案之全部內容以引用的方式併入本文中。
圖1係一實例性系統100之一圖式。系統100包含通信地耦合至一記憶體器件140之一單晶片系統(SOC) 102。SOC 102具有若干用戶端器件110a、110b至110n,其等使用配置於至記憶體140之資料路徑中之一快取120。在此實例中,因為快取120快取一單一SOC 102中之多個用戶端器件之資料請求,所以快取120可指稱一系統級快取。然而,下文將描述之相同技術亦可用於快取僅一單一用戶端器件或軟體驅動器之記憶體請求之其他快取。
SOC 102係可安裝於任何適當運算器件(其可指稱一主機器件)上或整合至任何適當運算器件中之一器件之一實例。因為本說明書中所描述之技術特別適於節省主機器件之功率消耗,所以SOC 102可特別有益地安裝於依靠電池供電之一行動主機器件(例如一智慧型電話、一智慧型手錶或另一穿戴式運算器件、一平板電腦或一膝上型電腦等的)上。
快取120係可實施藉由識別通過快取120之記憶體請求之不同串流來分配快取資源之一快取策略之一快取之一實例。例如,快取120之一第一快取部分及一第二快取部分可分別分配給兩個不同串流。實例性SOC 102經繪示為具有一個系統級快取120。然而,一SOC可具有多個快取,其等各可或可不為一系統級快取。
SOC 102具有多個用戶端器件110a至110n。用戶端器件110a至110n之各者可為經組態以透過SOC組構150讀取及儲存記憶體器件140中之資料之任何適當模組、器件或功能組件。例如,一用戶端器件可為一CPU、一專用積體電路或各能夠透過SOC組構150引發通信之SOC 102本身之低階組件。
各用戶端器件110a至110n包含一各自位址轉譯單元(ATU),例如ATU 112a至112n。ATU 112a至112n負責將由在用戶端器件上執行之程序提供之虛擬位址轉譯為其中已儲存或將儲存各自資料之記憶體器件140中之實體位址。在一些實施方案中,ATU 112a至112n之一或多者經實施為記憶體管理單元,其經組態以使用儲存虛擬至實體位址轉譯之一頁表之一硬體實施查找來執行位址轉譯。
不管實施方案如何,當一ATU 112a至112n接收一記憶體請求時,ATU執行位址轉譯且產生具有一所得實體位址及實體位址所屬之記憶體中之一頁面之一頁面描述符的一記憶體請求。作為此程序之部分,各ATU 112a至112n可經組態以使用實體位址所屬之記憶體中之頁面之一頁面級屬性來生成頁面描述符。
一頁面描述符可具有與一虛擬記憶體系統之各種態樣相關之多個屬性之值。例如,頁面描述符可指定與頁表本身相關之表級屬性、與個別頁面相關之頁面級屬性及與個別實體或虛擬位址相關之位址級屬性。因此,一頁面級屬性值可為由一ATU產生且包含於一記憶體請求內之一頁面描述符之一子集。一頁面級屬性可為頁面描述符之一基於頁面之硬體屬性。各頁面級屬性值指定專用於實體位址所屬之一頁面之一屬性之一值。
頁面級屬性之值可由用戶端器件110a至110n之軟體驅動器賦予。例如,當執行用戶端器件之軟體驅動器請求分配記憶體140中之頁面時,軟體驅動器可指示ATU將特定頁面級屬性賦予該等頁面。各用戶端器件可執行一或多個程序(例如程序114a至114b),且各程序可賦予其自身頁面級屬性作為記憶體分配請求之部分。接著,程序產生由一各自ATU轉換之虛擬位址,且各自ATU會將虛擬位址轉譯為一實體位址且亦揭露先前在產生一記憶體請求時賦予之頁面級屬性。
例如,圖1將記憶體140繪示為具有若干分配頁面132a、132b、132c、132d及132e。各頁面已由分配記憶體140中之頁面之一特定軟體驅動器賦予一各自頁面級屬性值。例如,記憶體140具有在一第一用戶端器件110a上執行之第一程序114a之一指令頁面132a及第二程序114b之一指令頁面132b。記憶體140亦具有第二用戶端110b之兩個資料頁面132c及132e。且記憶體140具有第一用戶端110a之一頁表頁面132d。
自此實例可見,快取120可僅藉由檢查所賦予之頁面級屬性來對此等頁面進行多重區分。例如,快取120可區分第一程序114a及第二程序114b之指令。因此,快取120可將記憶體請求之不同快取資源分配給此等頁面,使得兩個程序不彼此爭用快取資源。
另外,快取120可藉由具有相同頁面級屬性值7來判定兩個資料頁面132c及132e屬於相同資料串流。因此,快取120可將記憶體請求之相同快取資源分配給此等頁面之任一者。
最後,快取120可藉由檢測頁面132a、132b及132d之頁面級屬性來區分具有第一用戶端110a上之程序指令之頁面與具有ATU 112a之頁表資料之頁面。
SOC組構150係SOC 102之一通信子系統。SOC組構150包含允許用戶端器件110a至110n彼此通信及使用記憶體器件140請求讀取及寫入資料之通信路徑。SOC組構150可包含通信硬體(例如匯流排或專用互連電路)之任何適當組合。
系統100亦包含允許快取120與記憶體控制器130之間的通信之通信路徑及允許記憶體控制器130與記憶體器件140之間的通信之晶片間通信路徑。在一些實施方案中,SOC 102可藉由使通信路徑之一或多者斷電來節省功率。替代地或另外,在一些實施方案中,SOC 102可使記憶體器件140斷電以進一步節省功率。作為另一實例,SOC 102可使一或多個器件進入其中使各自時脈電路斷電之一時脈中斷模式。
快取120定位於SOC組構150與記憶體控制器130之間的資料路徑中。記憶體控制器130可處置至及來自記憶體器件140之請求。因此,自記憶體器件140讀取或寫入至記憶體器件140之來自用戶端器件110a至110n之請求通過快取120。例如,用戶端110a可提出自記憶體器件140讀取之一請求,其通過SOC組構150而至快取120。快取120可在將請求轉送至記憶體器件140之記憶體控制器130之前處置請求。
快取120可自用戶端器件110a至110n快取讀取請求、寫入請求或兩者。快取120可藉由對儲存於快取資料中之資料之請求作出回應而非自記憶體器件140提取資料來自用戶端器件快取讀取請求。類似地,快取120可藉由將新資料寫入快取中而非將新資料寫入至記憶體器件140來自用戶端器件快取寫入請求。快取120可稍後執行一回寫以將更新資料寫入至記憶體器件140。
快取120可具有可使用專用暫存器或高速隨機存取記憶體來實施之專用快取記憶體。快取120可實施將快取記憶體之不同部分(例如路)分配給記憶體請求之不同各自串流的一快取策略。因此,可使用快取記憶體之相同分配部分來處置屬於相同串流之記憶體請求。為此,快取120可檢測包含於記憶體請求中之頁面描述符之特定頁面級屬性以判定哪些頁面屬於記憶體請求之相同串流。此允許快取120判定屬於不同頁面之實體位址屬於記憶體請求之相同串流。
此等技術之一實例包含將快取之不同部分分配給在相同用戶端器件上執行之不同程序。例如,快取120可檢測傳入記憶體請求之頁面描述符以判定一些請求與第一程序114a擁有之頁面相關且一些其他請求與第二程序114b擁有之頁面相關。因此,為防止此等兩個程序彼此爭用快取資源,快取120可將快取之一第一部分分配給在用戶端器件110a上執行之第一程序114a且可將快取之一第二部分分配給在相同用戶端器件上執行之第二程序114b。
另一實例包含將快取之不同部分分配給不同緩衝器。例如,當SOC係一圖形處理單元(GPU)時,各用戶端器件可執行一圖形處理管線中之一不同功能。因此,可針對渲染緩衝器、紋理緩衝器及頂點緩衝器等等來識別不同資料串流。
快取120亦可經組態以實施甚至更細化快取行為。例如,若第一程序114a係其資料供第二程序114b消費之一生產者程序,則快取120可檢測傳入記憶體請求之頁面描述符以判定生產者程序及消費者程序兩者在作用中。在該情形中,快取120可將快取之一單一部分分配給兩個程序且在每次讀取快取線時使快取線無效。在一些實施方案中,快取僅將此替換策略應用於不執行臆測讀取之消費者程序。此組態可引起來自生產者程序之所有寫入請求導致快取命中且引起來自消費者程序之所有讀取請求亦導致快取命中,因為在讀取快取線時使所有快取線無效意謂由程序佔用之快取之大小不會持續增大。此繼而允許快取120將快取記憶體之一較小部分分配給生產者及消費者程序,其藉由釋放快取資源供其他器件及程序使用來進一步提高快取效能。另外,生產者-消費者程序之此快取行為節省功率,因為在由一消費者程序讀取快取線時無效之快取線從不會需要回寫至記憶體。
快取120可使用一控制器管線來處置來自SOC組構150之記憶體請求。控制器管線實施用於判定資料是否存在於快取中或需要自記憶體提取或寫入至記憶體之快取邏輯。因此,當需要存取記憶體(例如基於一快取未中)時,控制器管線亦可提供異動至記憶體控制器130。
快取120可藉由寫入多個不同頁面級屬性值來組態。屬性值可寫入至快取120之保留組態暫存器,例如特殊功能暫存器。快取120可將組態暫存器中之一各自屬性值之發生解譯為以下指示:專用快取資源應分配給特定資料串流,且組態暫存器中之各屬性值對應於應被分配快取之一專用部分之一單獨資料串流。
在一些實施方案中,屬性值可指定通配位元,使得快取120可匹配屬性型樣而非僅完全指定之屬性值。一屬性型樣可包含匹配任何值之通配位元。例如,一屬性型樣可為XX10,其中X可為1或0。因此,以下位元序列將全部匹配實例性屬性型樣:0010、1110及1010。
快取120之一分配引擎可經組態以使用寫入至快取120之組態空間之屬性值來分配快取之部分。例如,分配引擎可將快取之一第一部分分配給包含具有一第一屬性值之頁面級屬性之記憶體請求且將快取之一第二部分分配給具有匹配一第二屬性值之頁面級屬性之記憶體請求。屬性值可在製造時預載至快取120上或可在服務記憶體請求時動態產生。
分配引擎可產生控制器管線使用其來服務來自SOC組構150之記憶體請求的一最終快取組態。特定言之,最終快取組態可指定快取記憶體之哪些路分配給哪些串流,使得控制器管線可判定在服務傳入記憶體請求時使用哪些路。替代地或另外,快取120可維持各部分之一配額且使用硬體來計數已使用多少配額。
分配引擎可使用快取120之專用硬體電路來執行下文將描述之分配技術。替代地或另外,分配程序可以軟體實施且分配引擎可引起主機器件之一CPU執行分配演算法。
圖2係用於將頁面級屬性值賦予分配記憶體頁面之一實例性程序之一流程圖。實例性程序可由執行能夠修改頁表項之一特定軟體模組之任何適當用戶端器件執行。例如,用戶端器件可根據不同類型之資料串流來執行修改頁表項之一修改作業系統。替代地或另外,一用戶端器件可根據不同類型之資料串流來執行修改頁表項之用戶端應用軟體。為了方便,實例性程序將描述為由根據本說明書適當程式化之一用戶端器件執行。
用戶端器件將一記憶體區域之一或多個頁面分配給一軟體驅動器(210)。軟體驅動器係在用戶端器件上執行之一軟體模組。用戶端器件可在軟體驅動器開始之前或軟體驅動器開始之後或在其中執行分配記憶體之新請求之軟體驅動器執行之一些其他點分配記憶體區域。
用戶端器件判定記憶體區域之一或多個頁面之一頁面級屬性(220)。用戶端器件之一修改OS可在記憶體分配時間自動區分不同種類之頁面。例如,OS可區分指令頁面與資料頁面。
替代地或另外,用戶端器件之OS可支援允許軟體驅動器在記憶體分配時間賦予一特定頁面級屬性之一應用程式設計介面(API)。例如,OS完全無需知道頁面級屬性之值背後之解譯。確切而言,軟體驅動器本身可經程式化以將頁面級屬性賦予特定使用情況。例如,軟體驅動器可將一頁面級屬性賦予指令頁面,將一不同頁面級屬性賦予資料頁面,且將另一頁面級屬性賦予頁表資料頁面。
用戶端器件修改頁表以使頁面級屬性與請求記憶體區域之一或多個分配頁面相關聯(230)。換言之,用戶端器件將各分配頁面與各賦予頁面級屬性值之間的一相關聯性儲存於頁表中。
圖3係用於分配一快取之路之一實例性程序之一流程圖。實例性程序可由一快取之一或多個組件執行。實例性程序將描述為由根據本說明書適當程式化之一SOC上之一快取之一分配引擎執行。
分配引擎識別用於分配之記憶體請求之一串流(310)。分配引擎可依諸多方式識別一串流。如上文所描述,快取可具有指定屬性值或屬性型樣之預製造或製造後組態之組態暫存器,且分配引擎可將各屬性值或型樣解譯為需要專用快取記憶體之一單獨串流。
替代地或另外,快取可藉由監測記憶體訊務來識別記憶體請求之串流。例如,快取可保存所有記憶體請求中之頁面級屬性之最常見值之統計且可將快取之專用部分分配給最常見頁面級屬性值。
若干不同事件可藉由識別記憶體請求之串流來觸發快取開始分配程序。例如,快取可在啟動時開始分配。作為另一實例,SOC可經組態以在SOC偵測到執行或使用改變時自動產生一重新分割觸發事件。觸發事件可為透過系統所接收之一信號或資料,其指示組態暫存器已修改且快取之部分需要重新分配。
分配引擎識別與資料之串流相關聯之一頁面級屬性值(320)。如上文所描述,各記憶體請求可包含自位址轉譯程序產生之一頁面描述符,其可包含一頁面級屬性值。
記憶體請求之一串流可與一個以上頁面級屬性值相關聯。例如,組態暫存器亦可指定與一串流識別符之一相關聯性。因此,快取可使用指定相關聯性來識別一串流之頁面級屬性值而非僅組態暫存器中之頁面級屬性值發生。若發生多個頁面級屬性值,則快取可重複(至少部分)經識別頁面級屬性值之各者之實例性程序。另外,如上文所描述,頁面級屬性值可指定通配位元,使得快取有效使用一屬性型樣。
分配引擎將快取之一部分分配給具有頁面級屬性值之請求(330)。屬性引擎可分配快取之任何適當部分,例如一或多個線、組、路或此等之一些組合。在一些實施方案中,部分經專門分配使得僅具有指定頁面級屬性值之記憶體請求可使用分配快取資源。
如上文所描述,分配程序可基於頁面級屬性值來區分不同類型之頁面。例如,分配引擎可區分指令串流與資料串流且可將快取之一部分分配給指令串流及將快取之另一部分分配給資料串流。
另外,分配引擎可區分由一用戶端器件執行之指令之一第一串流與由相同用戶端器件或一不同第二用戶端器件執行之指令之一第二串流且可將快取之不同部分分配給指令之不同串流。
另外,分配引擎可區分不同類型之資料頁面。例如,分配引擎可將快取之不同部分分配給不同資料頁面或屬於不同記憶體緩衝器之頁面。在一些實施方案中,分配引擎可給予儲存特定類型之資料結構之頁面特別優先權且可將不同快取資源量分配給各者。例如,對快取利用率具有一實質影響之一資料緩衝器係頁表。因此,分配引擎可不同地對待儲存頁表資料之資料緩衝器與儲存其他種類之資料之緩衝器。例如,分配引擎可將1 MB快取記憶體分配給頁表頁面且將4 kb快取記憶體分配給其他種類之資料緩衝器。
接著,快取基於請求之頁面描述符中之頁面級屬性值來服務來自SOC上之用戶端器件之記憶體請求(340)。為此,快取可使快取之部分有效地專用於記憶體請求之不同串流。
圖4係使用專用於記憶體請求之串流之快取之部分來服務一記憶體請求之一實例性程序之一流程圖。實例性程序可由一快取之一或多個組件執行。實例性程序將描述為由一SOC上之一快取(例如圖1之快取120)執行。
快取接收一記憶體請求(410)。記憶體請求可由一特定用戶端器件之一位址轉譯單元產生,且可包含一實體位址及位址轉譯程序期間所產生之一頁面描述符。
快取判定一快取線是否已分配給請求(420)。換言之,若一快取線已分配給請求,則快取可完全繞過頁面級屬性之檢查。
若一快取線已分配給請求,則快取可使用先前分配之快取線來服務請求(沿分支推進至430)。應注意,在此方案中,即使記憶體請求之一特定串流具有一專用快取部分,但若先前已在一不同部分中快取請求,則快取可使用不同部分來服務記憶體請求。在一些實施方案中,為改良快取之命中率,系統可將快取線自其中先前已分配快取線之部分移動至專用於記憶體請求之該串流之部分。
若快取線未分配給請求(420),則快取識別與記憶體請求相關聯之頁面描述符之一頁面級屬性值(440)。頁面描述符可包含轉譯程序之一或多個屬性,例如與記憶體請求相關聯之頁表之一位址。快取可識別與實體位址所屬之頁面相關之頁面描述符之一頁面級屬性。
快取判定頁面級屬性值是否具有一專用快取部分(450)。例如,快取可比較頁面級屬性值與儲存於組態暫存器中之一或多個屬性值。回應於判定頁面級屬性值具有一專用快取部分,快取藉由使用專用快取部分來服務記憶體請求(460)。否則,快取藉由使用一預設快取策略來服務記憶體請求(470)。
因此,一快取可識別記憶體請求之不同串流且基於其各自頁面級屬性值來將快取記憶體之不同部分分配給各自串流。因此,快取可使用頁面級屬性值來將不同替換策略賦予記憶體請求之不同串流。
例如,快取可將快取記憶體之一些部分分配給「寫入」指令且將快取記憶體之一些其他部分分配給「讀取」指令。例如,快取記憶體之一部分可標記為WRITE且分配給具有寫入屬性之資料串流,且快取記憶體之一部分可標記為READ且分配給具有讀取屬性之資料串流以減少自一動態隨機存取記憶體(DRAM,例如記憶體140)過度提取。若一傳入記憶體請求包含一寫入屬性且快取判定快取記憶體之WRITE記憶體部分專用於請求之寫入屬性,則快取藉由將請求之資料寫入至快取記憶體之WRITE部分中來服務請求。例如,WRITE記憶體部分可與一WRITE屬性值相關聯。快取可比較傳入記憶體請求之頁面級屬性值與WRITE屬性值以判定WRITE記憶體部分是否專用於傳入記憶體請求。類似地,若一傳入記憶體請求包含一讀取屬性且快取判定READ快取記憶體部分專用於具有讀取屬性之請求,則快取可自快取記憶體之READ部分提取一線且無需將請求轉送至記憶體控制器。
在一些實施方案中,快取可經進一步細化以使用頁面級屬性來提高快取使用率,同時亦防止資料過度提取。例如,一些用戶端器件操作壓縮資料,且頁面級屬性可用於判定哪些頁面儲存壓縮資料。例如,一GPU可使用訊框緩衝器壓縮來讀取及寫入壓縮訊框緩衝器資料。在此等情形中,快取無需將一全快取線分配給來自用戶端器件之讀取及寫入。相反地,快取可取決於所使用之壓縮之程度來僅分配快取線之一部分。例如,若壓縮資料僅為一快取線之一半大小(例如64個位元組中之32個位元組),則快取可在相同快取線中有效分配兩個不同位址。即,若一傳入讀取請求之頁面級屬性指示頁面儲存壓縮資料,則快取可執行一部分讀取且將資料僅儲存於一半快取線中。在一些實施方案中,快取基於一全快取線來管理壞位元。因此,若修改快取線之任一部分,則快取可能需要執行全快取線寫入至記憶體,即使部分未修改。
一快取亦可將一請求之一頁面級屬性值轉換為快取之一分割區識別符(PID),其使用基於分割區識別符之快取策略。一般而言,一分割區係分配給記憶體之一特定區域之快取請求的快取資源之一部分。一般而言,一分割區與由存取記憶體之區域之一或多個用戶端器件使用之一記憶體之一區域之間存在一對應性。
為執行轉換,快取可使用頁面級屬性值及請求器件之識別符來查找用於服務請求之一分割區識別符。此提供該等頁面之快取之頁面級屬性與實際分配及替換策略之間的一定程度之間接性。此特徵可用於使不同緩衝器(例如上述不同CPU或GPU緩衝器)基於其頁面級屬性來分離分割區。
在一些實施方案中,分割區識別符之最低有效位元由來自頁面級屬性值之一或多個位元取代。為支援此特徵,用戶端器件可受限於僅設定分割區識別符之最高有效位元。例如,若快取支援64個記憶體分割區,則用戶端器件可受限於僅枚舉32個分割區識別符。
快取亦可使用頁面級屬性來解析稱為多個用戶端器件之間的衝突之分割區。若多個用戶端器件共用相同緩衝器(例如在上文所提及之生產者/消費者背景中),則各用戶端器件可藉由一不同識別符來涉及相同快取分割區。頁面級屬性可允許快取將緩衝器視為一單一分割區。
為此,快取可使用特殊功能暫存器來保存一頁面級屬性掩碼與僅用於快取內之一局部分割區識別符(PID)之間的一映射。因此,當一請求傳入時,快取可將頁面級屬性轉換為一局部PID。接著,快取可使用局部PID而非由用戶端器件供應之PID來服務請求。因此,當快取服務來自涉及具有不同PID之相同緩衝器之兩個不同用戶端器件之請求時,快取將基於緩衝器之頁面級屬性來將不同外部PID映射至相同局部PID。用戶端器件仍要負責取決於系統之執行背景來使用外部PID啟用或停用分割區。
本說明書中所描述之標的及功能操作之實施例可實施於數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(其包含本說明書中所揭示之結構及其結構等效物)或其等之一或多者之組合中。本說明書中所描述之標的之實施例可實施為一或多個電腦程式,即,在一有形非暫時性儲存媒體上編碼以由(例如)資料處理裝置執行或控制資料處理裝置之操作之電腦程式指令之一或多個模組。電腦儲存媒體可為一機器可讀儲存器件、一機器可讀儲存基板、一隨機或串列存取記憶體器件或其等之一或多者之一組合。替代地或另外,程式指令可在一人工產生之傳播信號(例如一機器產生之電、光或電磁信號)上編碼,人工產生之傳播信號經產生以編碼用於傳輸至適合接收器裝置以由一資料處理裝置執行之資訊。
術語「資料處理裝置」係指資料處理硬體且涵蓋用於處理資料之各種裝置、器件及機器,其包含(舉例而言)一可程式化處理器、一電腦或多個處理器或電腦。裝置亦可為或進一步包含專用邏輯電路,例如一FPGA (場可程式化閘陣列)或一ASIC (專用積體電路)。除硬體之後,裝置亦可視情況包含產生電腦程式之一執行環境之程式碼,例如構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合的程式碼。
一電腦程式(其亦可指稱或描述為一程式、軟體、一軟體應用程式、一應用程式、一模組、一軟體模組、一指令碼或程式碼)可以任何形式之程式設計語言(其包含編譯或解譯語言或宣告或程序語言)撰寫,且其可以任何形式部署(其包含作為一獨立程式或一模組、組件、子常式或適合用於一運算環境中之其他單元)。一程式可(但未必)對應於一檔案系統中之一檔案。一程式可儲存於保存其他程式或資料(例如儲存於一標示語言文件、專用於所討論之程式之一單一檔案或多個協調檔案(例如儲存一或多個模組、子程式或程式碼之部分之檔案)中之一或多個指令碼)之一檔案之一部分中。一電腦程式可經部署以在一電腦或位於一地點處或跨多個地點分佈且由一資料通信網路互連之多個電腦上執行。
一或多個電腦之一系統經組態以執行特定操作或動作意謂系統上已安裝在操作中引起系統執行操作或動作之軟體、韌體、硬體或其等之一組合。一或多個電腦程式經組態以執行特定操作或動作意謂一或多個程式包含在由資料處理裝置執行時引起裝置執行操作或動作之指令。
如本說明書中所使用,一「引擎」或「軟體引擎」係指提供不同於輸入之一輸出之一硬體實施或軟體實施之輸入/輸出系統。一引擎可實施於專用數位電路中或實施為由一運算器件執行之電腦可讀指令。各引擎可實施於包含一或多個處理器及電腦可讀媒體之任何適當類型之運算器件(例如伺服器、行動電話、平板電腦、筆記型電腦、音樂播放器、電子書閱讀器、膝上型或桌上型電腦、PDA、智慧型電話或其他固定或可攜式器件)上。另外,引擎之兩者或更多者可實施於相同運算器件或不同運算器件上。
本說明書中所描述之程序及邏輯流程可由一或多個可程式化電腦執行,可程式化電腦執行一或多個電腦程式以藉由操作輸入資料且產生輸出來執行功能。程序及邏輯流程亦可由專用邏輯電路(例如一FPGA或一ASIC)或專用邏輯電路及一或多個程式化電腦之一組合執行。
適合於執行一電腦程式之電腦可基於通用或專用微處理器或兩者或任何其他種類之中央處理單元。一般而言,一中央處理單元將自一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行(performing)或執行(executing)指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體器件。中央處理單元及記憶體可由專用邏輯電路補充或併入專用邏輯電路中。一般而言,一電腦亦將包含用於儲存資料之一或多個大容量儲存器件(例如磁碟、磁光碟或光碟)或經操作性耦合以自該一或多個大容量儲存器件接收資料或將資料傳送至該一或多個大容量儲存器件。然而,一電腦未必需要具有此等器件。再者,一電腦可嵌入另一器件(例如一行動電話、一個人數位助理(PDA)、一行動音訊或視訊播放器、一遊戲主控台、一全球定位系統(GPS)接收器或一可攜式儲存器件(例如一通用串列匯流排(USB)隨身碟)等等)中。
適合於儲存電腦程式指令及資料之電腦可讀媒體包含所有形式之非揮發性記憶體、媒體及記憶體器件,其包含(舉例而言):半導體記憶體器件,例如EPROM、EEPROM及快閃記憶體器件;磁碟,例如內部硬碟或可抽換磁碟;磁光碟;及CD-ROM及DVD-ROM磁碟。
為提供與一使用者之交互作用,本說明書中所描述之標的之實施例可實施於一主機器件上,主機器件具有用於向使用者顯示資訊之一顯示器件(例如一CRT (陰極射線管)或LCD (液晶顯示器)監視器)及一鍵盤及指標器件(例如一滑鼠、軌跡球或一存在敏感顯示器或使用者可藉由其來提供輸入至電腦之其他表面)。其他種類之器件亦可用於提供與一使用者之交互作用;例如,提供給使用者之回饋可為任何形式之感覺回饋,例如視覺回饋、聽覺回饋或觸覺回饋;且來自使用者之輸入可以任何形式接收,其包含聲波、語音或觸覺輸入。另外,一電腦可藉由將文件發送至由一使用者使用之一器件且自該器件接收文件來與使用者交互作用,例如藉由回應於自一使用者之器件上之一網頁瀏覽器接收之請求而將網頁發送至網頁瀏覽器。另外,一電腦可藉由將文字訊息或其他形式之訊息發送至一個人器件(例如一智慧型電話)、運行一傳訊應用程式及反過來自一使用者接收回應訊息來與使用者交互作用。
除上述實施例之外,以下實施例亦具創新性:
儘管本說明書含有諸多具體實施細節,但此等不應被解釋為限制任何發明之範疇或可主張內容之範疇,而是應被解釋為描述可專用於特定發明之特定實施例之特徵。本說明書之單獨實施例之內文中所描述之特定特徵亦可組合實施於一單一實施例中。相反地,一單一實施例之內文中所描述之各種特徵亦可單獨或以任何適合子組合實施於多個實施例中。再者,儘管特徵可在上文描述為作用於特定實施例中且甚至最初如此主張,但來自一主張組合之一或多個特徵可在一些情況中自組合去除,且主張組合可針對一子組合或一子組合之變體。
類似地,儘管圖式中依一特定順序描繪操作,但此不應被理解為要求依所展示之特定順序或依循序順序執行此等操作或執行所有繪示操作以達成所要結果。在特定情境中,多任務及並行處理可為有利的。再者,上述實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中需要此分離,且應瞭解,所描述之程式組件及系統一般可一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的之特定實施例。其他實施例係在以下申請專利範圍之範疇內。例如,申請專利範圍中所列之動作可依一不同順序執行且仍達成所要結果。作為一實例,附圖中所描繪之程序未必需要所展示之特定順序或循序順序來達成所要結果。在一些特定情況中,多任務或並行處理可為有利的。
100:系統 102:單晶片系統(SOC) 110a至110n:用戶端器件 112a至112n:位址轉譯單元(ATU) 114a:第一程序 114b:第二程序 120:快取 130:記憶體控制器 132a:分配頁面 132b:分配頁面 132c:分配頁面 132d:分配頁面 132e:分配頁面 140:記憶體器件/記憶體 150:SOC組構 210:將一記憶體區域之一或多個頁面分配給一軟體驅動器 220:自軟體驅動器接收一頁面級屬性 230:修改頁表以使頁面級屬性與請求記憶體區域之一或多個分配頁面相關聯 310:識別用於分配之記憶體請求之一串流 320:識別與資料之串流相關聯之一頁面級屬性值 330:將快取之一部分分配給具有頁面級屬性值之記憶體請求 340:使用分配部分來服務具有頁面級屬性值之記憶體請求 410:接收一記憶體請求 420:是否已分配快取線? 430:使用先前分配之快取線來服務請求 440:識別請求之頁面描述符之一頁面級屬性值 450:頁面級屬性值是否具有專用快取部分 460:使用專用快取部分來服務請求 470:使用預設快取策略來服務請求
圖1繪示根據本發明之實施方案之一實例性系統之一方塊圖。
圖2係根據本發明之實施方案之用於將頁面級屬性值賦予分配記憶體頁面之一實例性程序之一流程圖。
圖3係根據本發明之實施方案之用於分配一快取之路之一實例性程序之一流程圖。
圖4係根據本發明之實施方案之使用專用於記憶體請求之串流之快取之部分來服務一記憶體請求之一實例性程序之一流程圖。
各種圖式中之相同元件符號及名稱指示相同元件。
100:系統
102:單晶片系統(SOC)
110a至110n:用戶端器件
112a至112n:位址轉譯單元(ATU)
114a:第一程序
114b:第二程序
120:快取
130:記憶體控制器
132a:分配頁面
132b:分配頁面
132c:分配頁面
132d:分配頁面
132e:分配頁面
140:記憶體器件/記憶體
150:SOC組構

Claims (20)

  1. 一種運算系統,其包括:一或多個積體用戶端(client)器件,各用戶端器件經組態以產生記憶體請求,各記憶體請求具有一各自實體位址及該實體位址所屬之一第一記憶體之一各自頁面之一各自頁面級屬性(page-level attribute);及一快取(cache),其經組態以執行包括下列之操作:自該一或多個積體用戶端器件之一者接收一記憶體請求,該記憶體請求具有一頁面級屬性,判定該快取之一部分係專用於具有該頁面級屬性之記憶體請求,及作為回應,使用專用於具有該頁面級屬性之記憶體請求之該快取之該部分來服務該記憶體請求。
  2. 如請求項1之系統,其中該系統包括多個用戶端器件且其中該快取係經組態以使用記憶體請求之頁面級屬性來使該快取之不同部分專用於不同用戶端器件。
  3. 如請求項1之系統,其中該快取係經組態以使用記憶體請求之頁面級屬性來使該快取之不同部分專用於指令及資料。
  4. 如請求項1之系統,其中該快取係經組態以使用記憶體請求之頁面級屬性來區分頁表(page table)請求與其他記憶體請求。
  5. 如請求項1之系統,其中使用針對該頁面級屬性之該快取之該專用部分來服務該記憶體請求包括使用不同於針對其他記憶體請求之另一替換策略(replacement policy)之應用於具有該頁面級屬性之記憶體請求之一不同替換策略。
  6. 如請求項1之系統,其中判定該快取之該部分係專用於具有該頁面級屬性之記憶體請求包括將該頁面級屬性值映射至一特定分割區識別符(partition identifier)。
  7. 如請求項1之系統,其中該快取係經組態以自針對該頁面級屬性之一相同專用快取部分服務具有發生於具有相同頁面級屬性之不同實體頁面上之不同實體位址之記憶體請求。
  8. 如請求項1之系統,其中各用戶端器件具有一各自位址轉譯(address translation)模組,該各自位址轉譯模組經組態以將自一軟體驅動器接收之一虛擬位址轉換為具有一各自實體位址及一各自頁面描述符(page descriptor)之一各自記憶體請求,且其中各用戶端器件經組態以更新一頁表以將一特定頁面級屬性值賦予一特定頁面。
  9. 如請求項8之系統,其中該快取經組態以使用由該等用戶端器件之該等各自位址轉譯模組產生之頁面描述符之特定頁面級屬性來區分不同記憶體請求。
  10. 如請求項8之系統,其中該位址轉譯模組係經組態以執行該第一記憶體中之一頁表之一硬體查找(hardware walk)以執行位址轉譯之一記憶體管理單元。
  11. 一種由一器件執行之方法,其包括:一或多個積體用戶端器件及一快取,各用戶端器件經組態以產生記憶體請求,各記憶體請求具有一各自實體位址及該實體位址所屬之一第一記憶體之一各自頁面之一各自頁面級屬性,該方法包括:藉由該快取自該一或多個積體用戶端器件之一者接收一記憶體請求,該記憶體請求具有一頁面級屬性,藉由該快取判定該快取之一部分係專用於具有該頁面級屬性之記憶體請求,及作為回應,使用專用於具有該頁面級屬性之記憶體請求之該快取之該部分來服務該記憶體請求。
  12. 如請求項11之方法,其中該器件包括多個用戶端器件且其中該快取係經組態以使用記憶體請求之頁面級屬性來使該快取之不同部分專用於不同用戶端器件。
  13. 如請求項11之方法,其中該快取係經組態以使用記憶體請求之頁面級屬性來使該快取之不同部分專用於指令及資料。
  14. 如請求項11之方法,其中該快取係經組態以使用記憶體請求之頁面級屬性來區分頁表請求與其他記憶體請求。
  15. 如請求項11之方法,其中使用針對該頁面級屬性之該快取之該專用部分來服務該記憶體請求包括使用不同於針對其他記憶體請求之另一替換策略之應用於具有該頁面級屬性之記憶體請求之一不同替換策略。
  16. 如請求項11之方法,其中判定該快取之該部分係專用於具有該頁面級屬性之記憶體請求包括將該頁面級屬性值映射至一特定分割區識別符。
  17. 如請求項11之方法,其中該快取係經組態以自針對該頁面級屬性之一相同專用快取部分服務具有發生於具有相同頁面級屬性之不同實體頁面上之不同實體位址之記憶體請求。
  18. 如請求項11之方法,其中各用戶端器件具有一各自位址轉譯模組,該各自位址轉譯模組經組態以將自一軟體驅動器接收之一虛擬位址轉換為具有一各自實體位址及一各自頁面描述符之一各自記憶體請求,且其中各用戶端器件經組態以更新一頁表以將一特定頁面級屬性值賦予一特定頁面。
  19. 如請求項18之方法,其中該快取經組態以使用由該等用戶端器件之該等各自位址轉譯模組產生之頁面描述符之特定頁面級屬性來區分不同記憶體請求。
  20. 如請求項18之方法,其中該位址轉譯模組係經組態以執行該第一記憶體中之一頁表之一硬體查找以執行位址轉譯之一記憶體管理單元。
TW111118030A 2019-02-13 2020-02-12 記憶體請求之快取串流 TWI787129B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962805167P 2019-02-13 2019-02-13
US62/805,167 2019-02-13

Publications (2)

Publication Number Publication Date
TW202234248A TW202234248A (zh) 2022-09-01
TWI787129B true TWI787129B (zh) 2022-12-11

Family

ID=69740612

Family Applications (2)

Application Number Title Priority Date Filing Date
TW111118030A TWI787129B (zh) 2019-02-13 2020-02-12 記憶體請求之快取串流
TW109104306A TWI761762B (zh) 2019-02-13 2020-02-12 記憶體請求之快取串流

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW109104306A TWI761762B (zh) 2019-02-13 2020-02-12 記憶體請求之快取串流

Country Status (5)

Country Link
US (2) US11188472B2 (zh)
EP (1) EP3850492A1 (zh)
CN (2) CN117707998A (zh)
TW (2) TWI787129B (zh)
WO (1) WO2020167459A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3850492A1 (en) 2019-02-13 2021-07-21 Google LLC Caching streams of memory requests
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370174B2 (en) * 2005-01-05 2008-05-06 Intel Corporation Method, system, and program for addressing pages of memory by an I/O device
US9229892B2 (en) * 2013-03-15 2016-01-05 Avalanche Technology, Inc. Shared peripheral component interconnect express (PCIe) end point system with a PCIe switch and method for initializing the same
US20160170910A1 (en) * 2014-12-11 2016-06-16 Applied Micro Circuits Corporation Generating and/or employing a descriptor associated with a memory translation table
US20180121242A1 (en) * 2015-09-30 2018-05-03 Huawei Technologies Co., Ltd. Computer and Quality of Service Control Method and Apparatus

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7334107B2 (en) * 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation
US7814292B2 (en) * 2005-06-14 2010-10-12 Intel Corporation Memory attribute speculation
US8131951B2 (en) * 2008-05-30 2012-03-06 Freescale Semiconductor, Inc. Utilization of a store buffer for error recovery on a store allocation cache miss
US8180981B2 (en) * 2009-05-15 2012-05-15 Oracle America, Inc. Cache coherent support for flash in a memory hierarchy
WO2011044154A1 (en) * 2009-10-05 2011-04-14 Marvell Semiconductor, Inc. Data caching in non-volatile memory
US8996807B2 (en) * 2011-02-15 2015-03-31 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a multi-level cache
US9183057B2 (en) * 2013-01-21 2015-11-10 Micron Technology, Inc. Systems and methods for accessing memory
KR102069273B1 (ko) 2013-03-11 2020-01-22 삼성전자주식회사 시스템 온 칩 및 그 동작방법
US9430392B2 (en) 2014-03-26 2016-08-30 Intel Corporation Supporting large pages in hardware prefetchers
US9678872B2 (en) 2015-01-16 2017-06-13 Oracle International Corporation Memory paging for processors using physical addresses
US9846648B2 (en) * 2015-05-11 2017-12-19 Intel Corporation Create page locality in cache controller cache allocation
US9652405B1 (en) * 2015-06-30 2017-05-16 EMC IP Holding Company LLC Persistence of page access heuristics in a memory centric architecture
US9703493B2 (en) 2015-12-14 2017-07-11 Qualcomm Incorporated Single-stage arbiter/scheduler for a memory system comprising a volatile memory and a shared cache
US20170220466A1 (en) 2016-01-30 2017-08-03 Intel Corporation Sharing a guest physical address space among virtualized contexts
US10776283B2 (en) * 2016-04-01 2020-09-15 Intel Corporation Techniques to provide a secure system management mode
US11126565B2 (en) 2016-06-27 2021-09-21 Hewlett Packard Enterprise Development Lp Encrypted memory access using page table attributes
US9971691B2 (en) * 2016-09-12 2018-05-15 Intel Corporation Selevtive application of interleave based on type of data to be stored in memory
US10592115B1 (en) * 2016-11-30 2020-03-17 EMC IP Holding Company LLC Cache management system and method
CN107864173A (zh) * 2017-06-26 2018-03-30 平安普惠企业管理有限公司 终端页面缓存方法、系统及可读存储介质
CN107861887B (zh) * 2017-11-30 2021-07-20 科大智能电气技术有限公司 一种串行易失性存储器的控制方法
EP3850492A1 (en) 2019-02-13 2021-07-21 Google LLC Caching streams of memory requests

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370174B2 (en) * 2005-01-05 2008-05-06 Intel Corporation Method, system, and program for addressing pages of memory by an I/O device
US9229892B2 (en) * 2013-03-15 2016-01-05 Avalanche Technology, Inc. Shared peripheral component interconnect express (PCIe) end point system with a PCIe switch and method for initializing the same
US20160170910A1 (en) * 2014-12-11 2016-06-16 Applied Micro Circuits Corporation Generating and/or employing a descriptor associated with a memory translation table
US20180121242A1 (en) * 2015-09-30 2018-05-03 Huawei Technologies Co., Ltd. Computer and Quality of Service Control Method and Apparatus

Also Published As

Publication number Publication date
EP3850492A1 (en) 2021-07-21
US11853223B2 (en) 2023-12-26
US20200257631A1 (en) 2020-08-13
TW202036299A (zh) 2020-10-01
TW202234248A (zh) 2022-09-01
CN117707998A (zh) 2024-03-15
CN113039531A (zh) 2021-06-25
US20220156198A1 (en) 2022-05-19
US11188472B2 (en) 2021-11-30
CN113039531B (zh) 2023-12-01
WO2020167459A1 (en) 2020-08-20
TWI761762B (zh) 2022-04-21

Similar Documents

Publication Publication Date Title
US9201796B2 (en) System cache with speculative read engine
US9218286B2 (en) System cache with partial write valid states
TWI787129B (zh) 記憶體請求之快取串流
US20140075125A1 (en) System cache with cache hint control
TWI492055B (zh) 具資料擱置狀態之系統快取記憶體及最佳化系統快取記憶體之方法
US20100235586A1 (en) Multi-core processor snoop filtering
US10970223B2 (en) Cache drop feature to increase memory bandwidth and save power
US9135177B2 (en) Scheme to escalate requests with address conflicts
US10467138B2 (en) Caching policies for processing units on multiple sockets
US20190102295A1 (en) Method and apparatus for adaptively selecting data transfer processes for single-producer-single-consumer and widely shared cache lines
US20090024796A1 (en) High Performance Multilevel Cache Hierarchy
US9311251B2 (en) System cache with sticky allocation
KR101689094B1 (ko) 스티키 제거 엔진을 구비한 시스템 캐시
Wu et al. When storage response time catches up with overall context switch overhead, what is next?
US8661169B2 (en) Copying data to a cache using direct memory access
US20220197506A1 (en) Data placement with packet metadata
JP2023532432A (ja) アソシアティブキャッシュのための直接マッピングモード
US20060143402A1 (en) Mechanism for processing uncacheable streaming data