TWI793644B - 用於資料處理系統之快取記憶體配置 - Google Patents

用於資料處理系統之快取記憶體配置 Download PDF

Info

Publication number
TWI793644B
TWI793644B TW110122647A TW110122647A TWI793644B TW I793644 B TWI793644 B TW I793644B TW 110122647 A TW110122647 A TW 110122647A TW 110122647 A TW110122647 A TW 110122647A TW I793644 B TWI793644 B TW I793644B
Authority
TW
Taiwan
Prior art keywords
data
cache
memory
block
processor
Prior art date
Application number
TW110122647A
Other languages
English (en)
Other versions
TW202205267A (zh
Inventor
奧洛夫亨利 烏倫霍爾特
安德魯布魯克菲爾德 斯維恩
Original Assignee
英商Arm股份有限公司
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 英商Arm股份有限公司 filed Critical 英商Arm股份有限公司
Publication of TW202205267A publication Critical patent/TW202205267A/zh
Application granted granted Critical
Publication of TWI793644B publication Critical patent/TWI793644B/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/0877Cache access modes
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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
    • 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/0853Cache with multiport tag or data arrays
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/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/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6047Power optimization with respect to the encoder, decoder, storage or transmission

Abstract

提供一種資料處理系統,其包含一快取系統,該快取系統經組態以在一處理器與記憶體系統之間移轉資料。該快取系統包含一快取記憶體。當以一壓縮形式儲存在該記憶體中的一資料區塊待載入至該快取記憶體中時,該資料區塊係儲存至該快取記憶體的一或多個快取列的一群組中,並將該經壓縮資料區塊的該關聯壓縮後設資料提供成單獨邊頻帶資料。

Description

用於資料處理系統之快取記憶體配置
本文描述之技術係關於資料處理系統,且具體而言係關於資料處理系統(諸如圖形處理系統)中的快取操作。
在其可由圖形處理器(圖形處理單元(graphics processing unit,GPU))執行的圖形處理操作一般處理採未壓縮形式的資料。當此類操作已產生特定輸出(例如,圖框)時,輸出資料接著可寫入至輸出(例如,圖框)緩衝器(例如在主記憶體中),以用於在進一步處理(例如,圖框的顯示)之前儲存。
儲存及存取使用中的未壓縮資料可將相對高的儲存及/或帶寬需求置於圖形處理裝置上(或相反地在未符合此類需求時導致效能上的損失),特別在輸出緩衝器駐留在,例如,圖形處理器外部的記憶體上時(通常是這情形)。此對於執行圖形處理的行動裝置及手持裝置特別顯著,由於此類裝置固有地在其等的,例如,儲存、帶寬、及電力資源與能力上受限。
為降低在圖形處理操作期間需要移轉至記憶體及自記憶體移轉的資料量及往復移動此類資料的關聯電力成本,資料可,例 如,在寫至記憶體之前壓縮。此允許資料以壓縮(編碼)格式儲存。當資料需要進一步處理時,經壓縮資料接著從記憶體讀取並解壓縮(解碼),使得其接著採用於圖形處理操作的合適格式。
為進一步協助將此類資料移轉至圖形處理器及自圖形處理器移轉,快取記憶體可在使用此資料的圖形處理操作正在執行時用於本地地儲存圖形處理單元的資料。此幫助降低從較慢資料儲存器(諸如圖形處理系統的主記憶體)提取資料的需求。
雖然以上描述係在圖形處理的上下文中,類似考量亦應用至資料處理的各種其他實例,其中期望降低儲存及/或傳輸特定資訊項所需的資料量,且其中更本地地儲存資料處理單元的資料(例如,在快取記憶體中)可係所欲的。
申請人相信仍有改善資料處理系統中之快取操作的餘地。
1:中央處理單元(CPU)
2:視訊編碼解碼器
3:顯示器控制器
4:記憶體控制器
5:互連
6:晶片外記憶體系統(記憶體)
7:顯示器
8:應用程式
9:驅動程式
10:圖形處理器(圖形處理單元(GPU))
20:快取系統
21:L3快取記憶體
22:資料編碼器
23:互連
24:L2快取記憶體
25:處理核心(著色器核心)
26:快取列標籤管線
27:AXI埠
28:標頭快取記憶體
29:佇列
30:實體快取記憶體部分(片)
60:讀取單元
61:寫入單元
62:控制單元(電路)
63:編碼解碼器
64:編碼解碼器
65:資料緩衝器
70:組
72:資料區塊
73:快取列
73-1:第一快取列
74:記憶體標籤
80:鍵值
84:有效遮罩
86:髒遮罩
88:共用器遮罩
89:快取列狀態
100:步驟
101:步驟
102:步驟
103:步驟
105:步驟
106:步驟
107:步驟
110:步驟
111:步驟
112:步驟
113:步驟
114:步驟
120:步驟
121:步驟
122:步驟
123:步驟
124:步驟
125:步驟
126:步驟
127:步驟
128:步驟
129:步驟
130:步驟
131:步驟
ASN:非同步交換網路
MPC:記憶體頁壓縮單元
MTE:記憶體標籤
RequestIF:請求
各種實施例現在將僅藉由舉實例的方式並參照附圖描述,在該等附圖中:〔圖1〕顯示可實施本文描述之技術的例示性圖形處理系統;〔圖2〕示意地顯示本文描述之技術的一實施例;〔圖3〕更詳細地顯示圖2之圖形處理系統的快取系統的一實施例; 〔圖4〕更詳細地顯示圖2之圖形處理系統的快取系統的另一實施例;〔圖5〕更詳細地顯示資料編碼器的一實施例;〔圖6〕顯示在本文描述之技術的實施例中使用之資料的配置;〔圖7〕係顯示在本文描述之技術的一實施例中從快取記憶體讀取資料之操作的流程圖;〔圖8〕係顯示在本文描述之技術的一實施例中從圖形處理器將資料寫至快取記憶體之操作的流程圖;〔圖9〕係顯示在本文描述之技術的一實施例中從快取記憶體驅逐資料之操作的流程圖;〔圖10〕更詳細地顯示根據一實施例的快取記憶體;及〔圖11〕顯示根據一實施例之快取列的結構。
相似的參考符號依需用於圖式中的相似元件。
本文描述之該技術的一第一實施例包含一種操作一資料處理系統之方法,該資料處理系統包含:一處理器;一記憶體系統;及一快取系統,其經組態以將儲存在該記憶體系統中的資料移轉至該處理器以供該處理器在執行資料處理操作時使用,及將資料從該處理器移轉至該記憶體系統; 該快取系統包含一快取記憶體,該快取記憶體經組態以接收來自該記憶體的資料並提供資料至該處理器以供在執行資料處理操作時使用,及接收來自該處理器的資料以用於發送至該記憶體,該快取記憶體包含複數個快取列,該複數個快取列各能夠儲存一各別資料項;該方法包含:當以一壓縮形式儲存在該記憶體中的一資料區塊待載入至該快取記憶體中時,該經壓縮資料區塊具有一組關聯壓縮後設資料:將該資料區塊儲存至該快取記憶體的一或多個快取列的一群組中;及將該資料區塊的該壓縮後設資料提供成與該資料區塊儲存於其中之該快取記憶體的一或多個快取列的該群組的一快取列關聯的單獨邊頻帶資料。
本文描述之該技術的一第二實施例包含一種資料處理系統,其包含:一處理器;一記憶體系統;及一快取系統,其經組態以將儲存在該記憶體系統中的資料移轉至該處理器以供該處理器在執行資料處理操作時使用,及將資料從該處理器移轉至該記憶體系統; 該快取系統包含一快取記憶體,該快取記憶體經組態以接收來自該記憶體的資料並提供資料至該處理器以供在執行資料處理操作時使用,及接收來自該處理器的資料以用於發送至該記憶體,該快取記憶體包含複數個快取列,該複數個快取列各能夠儲存一各別資料項;該資料處理系統進一步包括:一快取控制電路,其經組態以:當以一壓縮形式儲存在該記憶體中的一資料區塊待載入至該快取記憶體中時,該經壓縮資料區塊具有一組關聯壓縮後設資料:將該資料區塊儲存至該快取記憶體的一或多個快取列的一群組中;及將該資料區塊的該壓縮後設資料取得為單獨邊頻帶資料。
本文描述的技術在此等實施例中係關於資料處理系統,該資料處理系統包含可操作以將資料從(例如,主)記憶體系統移轉至需要該資料的處理器且反之亦然的快取系統。例如,記憶體系統可儲存可為資料處理器所需要的資料。
資料處理器可經配置以執行資料處理操作(使用,例如,採未壓縮格式的資料),諸如在圖形處理器的情形中產生演現輸出(例如,圖框,例如,用於顯示)。為降低需要移轉至記憶體及自記憶體移轉的資料量,資料係以壓縮形式儲存在記憶體系統中。經壓縮資 料因此具有關聯的「壓縮後設資料(compression metadata)」(其可廣泛地構成「標頭(header)」資料的一部分,且因此亦可稱為「標頭」資料),該壓縮後設資料可,例如,(且在一實施例中確實)包括壓縮參數等,指示資料已如何(及是否已)編碼(壓縮)(且對應地,資料應如何解碼(未壓縮),例如,當其待從記憶體載入以用於以未壓縮格式供處理器使用)。
快取系統包括快取記憶體,該快取記憶體經配置以接收及儲存來自記憶體系統的資料、將資料從記憶體系統移轉至資料處理器(使得資料處理器可使用此資料以執行資料處理操作),且反之亦然。
當資料待寫入快取記憶體(或自其寫出)時(該資料可,例如,(且在一實施例中確實)包含處理器正在處理之資料陣列的資料,該資料陣列包含各具有(多個)關聯資料值之資料元素的陣列),此係藉由將各別資料區塊(其可,例如,表示處理器正在處理之資料陣列的特定區域)寫至快取記憶體(或自其寫出)而完成。例如,在圖形處理的情形中,整體資料陣列可係影像(圖框),且資料區塊可,例如,表示圖形處理器能夠在其上操作之資料陣列的特定區域(該區域可,例如,對應於整體資料陣列(例如,圖框)已針對演現目的所分割成的圖塊)。
在本文描述的技術中,在此等實施例中,當記憶體交易需要將以壓縮形式儲存在記憶體中的(例如,資料陣列的)資料區塊從記憶體載入至快取記憶體中時,資料區塊(酬載)係儲存在快取記 憶體中的一或多個快取列的各別群組中。同時,將與經壓縮資料區塊關聯的壓縮後設資料作為單獨「邊頻帶(side band)」資料提供給快取記憶體,並儲存為與該資料區塊儲存於其中之一或多個快取列之群組的(多個)快取列關聯的單獨邊頻帶資料。
以此方式提供為單獨邊頻帶資料的壓縮後設資料接著可(例如,藉由快取記憶體的控制器)讀取並用以判定資料區塊應如何及是否應處理(解碼)成可由處理器使用的(例如,未壓縮)形式。。
例如,在一實施例中,資料係以未壓縮形式儲存在快取記憶體中,且在一實施例中,當其從快取記憶體寫出至記憶體系統時,係經編碼(經壓縮)的(且因此當其從記憶體系統寫至快取記憶體中時,係經解碼(解壓縮)的),如將於下文進一步解釋的。
在一實施例中,使用基於區塊的編碼(壓縮)方案將(多個)資料區塊寫至(並儲存在)記憶體中(且(多個)資料區塊在一實施例中因此對應於壓縮單元,其中各區塊係分開編碼/解碼的)。
與一資料區塊(及各資料區塊)關聯的壓縮後設資料可因此包括用於資料區塊的壓縮參數等,指示資料區塊應如何(及是否應)解碼(解壓縮),例如,當其寫至快取記憶體中時。
資料區塊之提供為此類邊頻帶資料的關聯壓縮後設資料因此可在記憶體讀取交易期間讀取並用以判定是否(及如何)處理(解碼)資料區塊。
對應地,當駐留在快取記憶體中的(例如,資料陣列的)資料區塊待從快取記憶體寫出至以壓縮格式儲存的記憶體中時,將經壓縮資料區塊(亦即,「酬載(payload)」)寫至記憶體系統中的各別資料結構(例如,記憶體的區域)中。
例如,在資料區塊已從記憶體載入至快取記憶體中之後,一旦資料區塊已使用,該資料區塊隨後可針對驅逐選擇並驅逐,以釋放快取記憶體中的空間以用於新資料。在一實施例中,資料區塊在將其從快取記憶體寫出至記憶體時經壓縮,且因此在實施例中,產生該資料區塊的一組新的(經更新)壓縮後設資料。
接著將資料區塊的(經更新)壓縮後設資料(且在一實施例中,可所欲地以此方式針對該資料區塊儲存的任何其他合適的「標頭」資料)儲存(例如,在記憶體中)在各別的單獨標頭資料結構中(使得一區塊(且在一實施例中,各區塊)的標頭資料(包括壓縮後設資料)係以單獨資料結構(例如,記憶體的分開區域)儲存至資料區塊本身(酬載))。
將壓縮後設資料儲存並提供為單獨「邊頻帶」資料可提供各種利益(例如,與壓縮後設資料及酬載資料一起儲存在,例如,作為單一資料結構之部分的專用標頭區塊中相比),如將於下文進一步解釋的。
具體而言,當處理器正在操作以將(在記憶體中)配置在一起的複數個此類資料區塊寫出(或讀入)成個別資料結構時,且 在一實施例中,該資料結構,例如,對應於實體記憶體的單一「頁(page)」,將壓縮後設資料儲存為單獨邊頻帶資料可提供各種利益。
因此,在一實施例中,將各別組的複數個此類區塊一起分組成(且在記憶體中配置成)單一各別資料結構,且在一實施例中,例如,對應於記憶體系統之,例如,待於單一記憶體交易中寫出(或讀入)的「頁」。
例如,在實施例中,記憶體中之將複數個資料區塊儲存至其的資料結構(記憶體頁)包含一組連續的(實體)記憶體位址。以此方式配置資料結構(例如,其中資料結構儲存組織在一記憶體頁中的複數個資料區塊,且例如,資料結構(例如,記憶體頁)具有單一實體基底位址)可幫助,例如,簡化記憶體中需要相關於資料區塊使用的實體定址等。
因此,在實施例已相關於待寫至快取記憶體中(或自其寫出)的單一資料區塊於上文描述的同時,將理解複數個資料區塊(例如,對應於單一資料結構、例如,記憶體頁)可一起(且在一實施例中係一起)寫至快取記憶體中(或自其寫出)。
複數個資料區塊的各者(在整體資料結構中,例如,記憶體頁)接著以與上文所述相同的方式儲存。因此,在本文描述的技術中,儲存在快取記憶體中的一資料區塊(及各資料區塊)的壓縮後設資料(標頭資料)係與資料區塊分開儲存,並提供為與(多個)資料區塊合適地關聯的(單獨)邊頻帶資訊。
因此,在實施例中,本文描述的技術包含將複數個經壓縮資料區塊從記憶體系統載入至快取記憶體中,各經壓縮資料區塊具有一組各別的關聯壓縮後設資料,其中將各區塊的壓縮後設資料提供成單獨邊頻帶資料。在此情形中,複數個資料區塊的各資料區塊係儲存至快取記憶體的一或多個快取列的各別群組中,並將各區塊的各別壓縮後設資料提供成與該各別資料區塊儲存於其中之快取記憶體的一或多個快取列的群組的一快取列關聯的單獨邊頻帶資料。
此意謂著壓縮後設資料(標頭資料)可(且在一實施例係)針對儲存在快取記憶體中的各資料區塊分開地儲存及提供(在(多個)邊頻帶資料結構中),而非,例如,將壓縮後設資料(標頭資料)與酬載一起儲存在快取記憶體中,例如,在含有複數個資料區塊(例如,對應於單一記憶體「頁」)的關聯壓縮後設資料的專用標頭區塊中。
以此方式,藉由將區塊的壓縮後設資料儲存成與各資料區塊關聯(且,更具體地說,與各資料區塊儲存於其中之快取列的群組關聯)的單獨邊頻帶資訊,可能進一步簡化記憶體定址方案,例如,因為不需要在資料結構(記憶體頁)中留下用於儲存壓縮後設資料的空間。此繼而促進更規則的定址邏輯。
以此方式儲存壓縮後設資料亦可簡化快取記憶體「片(slice)」整合,例如,當將快取記憶體分割成複數個單獨實體部分(「片」)時,其中各片儲存,例如,用於處理器的各別處理核心的各 別資料(且在本文描述之技術的實施例中,快取記憶體係「經切片的(sliced)」)。
例如,在實施例中,可將記憶體的單一實體「頁」分割成複數個資料區塊,其中將不同的資料區塊條化成不同的快取記憶體片中。各資料區塊係使用駐留在相同快取記憶體片中的快取列的群組儲存。因為將給定資料區塊的壓縮後設資料儲存成與該資料區塊儲存於其中之快取列的群組關聯的邊頻帶資訊,壓縮後設資料因此可對片本地地存取,使得不需要跨不同快取記憶體片的通訊(例如,可係若壓縮後設資料儲存在快取記憶體中的情形,例如,在專用標頭區塊中,該標頭區塊可對給定資料區塊駐留在不同的快取記憶體片中)。
此外,將壓縮後設資料儲存在單獨邊頻帶資料結構中可允許可用快取記憶體空間的更佳利用。例如,在實施例中,各資料區塊(在尺寸上)對應於整數數目的快取列,其中各資料區塊在一實施例中具有相同尺寸,例如,以簡化定址。然而,區塊(或資料結構,例如,記憶體頁,內的區塊組)的關聯壓縮後設資料一般不會填充快取列的整個群組。
因此,將壓縮後設資料與酬載一起儲存在快取記憶體中的專用標頭區塊中可意謂著儲存標頭區塊之快取列的群組未完全使用。相反地,在本文描述的技術中,快取列可(更)完整地用於儲存酬載資料。
因此,至少在上文描述的上下文中,本文描述的技術認知到將壓縮後設資料儲存為單獨邊頻帶資訊可促進快取操作改善,例如,與用於儲存關聯標頭資料的其他方法相比。
邊頻帶標頭資料可在(相同)記憶體的單獨實體區域中儲存成(多個)資料區塊,或標頭資料可駐留在單獨記憶體中,例如,在用於儲存此類資料的專用快取記憶體中。
當記憶體交易需要存取資料區塊時,該資料區塊的邊頻帶資料結構接著沿著合適的旁通道分開地提供。
壓縮後設資料儲存/提供於其中的邊頻帶資料結構可係可與(多個)快取列關聯的任何合適的邊頻帶資料結構。
在一實施例中,邊頻帶資料結構係單獨資料結構,其與快取列本身分開儲存。
例如,且在一些實施例中,壓縮後設資料可儲存在記憶體之針對儲存壓縮後設資料配置的專用部分(實體「分割(carve out)」)中。壓縮後設資料因此可從其之記憶體的專用部分連同其之(多條)關聯快取列提供為額外的邊頻帶信號,例如,以「標籤」的形式。壓縮後設資料亦可在資料處理系統中的某個點在合適的壓縮後設資料快取記憶體中快取,且在一實施例中,該壓縮後設資料快取記憶體與,例如,用以儲存資料區塊本身的快取記憶體分開。
在其他實施例中,可將用於快取列的壓縮後設資料儲存成使用快取列本身儲存(儲存在快取列本身中)之後設資料的部分, 例如,以識別儲存在快取列中之資料的快取列標籤(或「鍵值」)的方式。
例如,各快取列通常將與適當的後設資料關聯,該後設資料包括識別儲存在快取列中之資料的識別符(快取列標籤或鍵值)(例如,以記憶體位址的形式)。快取列後設資料可,例如,包括複數個資料欄位(各包含若干個位元),且在一些實施例中,壓縮後設資料係在使用一個此類資料欄位(諸如快取列標籤(鍵值)的部分)的快取列後設資料中傳訊。然而,用於儲存/提供的其他配置將係可行的。
在此方面,本文描述的技術進一步認知到可有現存的邊頻帶資料結構或在此類資料結構中的資料欄位,其可(重)用於儲存標頭資訊,且在一實施例中,就是如此。
因此,在一些實施例中,各(經壓縮)資料區塊通常可具有關聯的標頭資料結構,該標頭資料結構包括用於儲存該資料區塊的任何合適且期望的標頭資料的一或多個資料欄位。在實施例中,壓縮後設資料係使用一或多個此類資料欄位儲存,該一或多個此類資料欄位在其他情形中將用於傳訊其他資訊(但本文描述的技術不需要該其他資訊)。
例如,在一實施例中,將針對減輕違反記憶體安全的目的提供的記憶體「標籤(tag)」用於(重用於)儲存壓縮後設資料。例如,記憶體位置可藉由將後設資料之位元的數目(記憶體標籤)加至實體記憶體的各區域(例如,每16個位元組的實體記憶體加四個位元)而「標籤化(tagged)」。
當此類記憶體標籤化啟用時,記憶體標籤對記憶體位置實施鎖定及鍵值存取。例如,當將資料寫至記憶體位置(實體記憶體位址)時,可設定「鎖定(lock)」,並在記憶體存取期間提供「鍵值(key)」。例如,指標器(且因此虛擬地址/快取列)可經合適修改以包括鍵值。因此,各快取列可具有用於傳訊記憶體標籤的關聯位元數目。若鍵值與鎖定匹配,允許記憶體存取。若不匹配,報告錯誤。
此類記憶體標籤的實例使用情形會係緩衝器上色,例如,以避免緩衝器過載/欠載。然而,對於不使用緩衝器上色的使用情形,本文描述的技術認知到記憶體標籤位元可用於傳訊(例如,儲存在該快取列中的資料(或在包括該快取列之快取列的群組中)的)關聯標頭資料。
因此,此類記憶體標籤化可選擇性地啟用。在不需要(且因此未致能)記憶體標籤的情形中,記憶體標籤(亦即,位元)無論如何仍將對快取列傳輸。因此,本文描述之技術的實施例認知到此等現有的記憶體標籤位元可有益地重用於儲存關聯標頭資料,例如,以上文描述的方式。
此之利益係暗示此等資料結構(例如,記憶體標籤)係可用的,使得無需將任何額外邊頻帶資料結構或旁通道引入至資料處理系統中,以用於以本文描述之技術的方式儲存壓縮後設資料。然而,各種其他配置將係可行的。
在一實施例中,包括給定區塊之壓縮後設資料的邊頻帶資料結構(例如,記憶體標籤)係與儲存該資料區塊之快取列之群組 中的一個(且在一實施例中,第一個)快取列(且僅與其)關聯。因此在一實施例中,當存取資料區塊時,始終讀取該資料區塊之快取列之群組中的,例如,第一快取列,以及其之關聯邊頻帶資料,例如,以讀取壓縮後設資料並判定如何(及是否)處理該資料區塊。此接著避免對單獨標頭查找等的需求。
然而,其他配置會係可行的,且壓縮後設資料可儲存在與快取列之群組中的一個以上的(或全部的)快取列關聯的各別邊頻帶資料結構中。例如,若壓縮後設資料不與用於單一快取列之記憶體標籤的可用位元適配,此可係所期望的。
據信以上文描述的方式將壓縮後設資料儲存在現有資料欄位中就其本身而言可係新穎且有利的。
本文描述之該技術的另一實施例包含一種操作一資料處理系統之方法,該資料處理系統包含:一處理器;及一記憶體系統;該方法包含:當一資料區塊待以一壓縮形式儲存在記憶體中時,該經壓縮資料區塊具有一組關聯壓縮後設資料:將該資料區塊儲存至記憶體中的一各別資料結構中;及將該壓縮後設資料儲存在一單獨標頭資料結構中,該標頭資料結構包括一或多個資料欄位,且其中該壓縮後設資料 係儲存在其在一不同操作模式中將用於其他資訊的一資料欄位中。
本文描述之該技術的一進一步實施例包含一種資料處理系統,其包含:一處理器;及一記憶體系統;及一控制電路,其經組態以:當一資料區塊待以一壓縮形式儲存在記憶體中時,該經壓縮資料區塊具有一組關聯壓縮後設資料:將該資料區塊儲存至記憶體中的一各別資料結構中;及將該壓縮後設資料儲存在一單獨標頭資料結構中,該標頭資料結構包括一或多個資料欄位,且其中該壓縮後設資料係儲存在其在一不同操作模式中將用於其他資訊的一資料欄位中。
應理解根據此等實施例於本文描述的技術通常可包含相關於本文描述之技術的其他態樣及實施例於上文描述的任何(或所有)特徵,至少在其等不相互互斥的程度上。
例如,此等進一步實施例中的資料處理系統在一實施例中包含快取系統,該快取系統包括在一實施例中以上述方式操作的快取記憶體。
此外,此等進一步實施例中的標頭資料結構在一實施例中可包含如上文描述的資料結構。資料欄位在該情形中可,例如,包 含在其他情形中係用以儲存,例如,上文描述之該類型的記憶體標籤的資料欄位。
因此,將看到本文描述之技術的實施例係關於用於儲存壓縮後設資料的經改善機制,特別係在將壓縮後設資料分開地儲存並提供至酬載資料時(在一實施例中,藉由重利用現有資料結構)。本文描述之技術的資料處理系統包括記憶體系統、資料處理器、及快取系統。
資料處理系統的記憶體(記憶體系統)可包含資料處理系統的任何合適且期望的記憶體及記憶體系統,諸如,且在一實施例中,用於所關注之特定處理器的主記憶體(例如,在有用於該處理器的單獨記憶體系統時),或該資料處理系統之與該資料處理系統的其他元件(諸如主機處理器(CPU))共用的主記憶體。
資料處理系統的處理器可包含資料處理系統的任何合適且期望的處理器,諸如CPU(中央處理單元)、圖形處理器(GPU(圖形處理單元))、顯示處理器(DPU(顯示處理單元))、視訊處理器(VPU(視訊處理單元))、影像訊號處理器(ISP)等。在一實施例中,其包含圖形處理器(GPU)。
處理器應(且在一實施例中確實)包含一或多個(且在一實施例中複數個)處理核心,該等處理核心可操作以在待由處理器處理的資料上執行處理操作。
對應地,快取系統及快取記憶體在一實施例中經組態以提供資料至處理器的(多個)處理核心以在執行處理操作時使用,並 對應地接收來自處理器的(多個)處理核心的資料以用於發送至記憶體系統。
使用快取記憶體移轉的資料,及待寫入至快取記憶體的(多個)資料區塊可係任何合適且期望的資料及資料處理器可在其上操作之該資料的區塊。例如,且在一實施例中,待寫至快取記憶體中的資料區塊包含資料處理器正在處理之(較大)資料陣列的一資料區塊,該資料陣列及該資料區塊(各)包含各具有(多個)關聯資料值之資料元素的陣列。
在圖形處理器的情形中,且在一實施例中,資料陣列可包含,例如,圖形處理器正在處理的影像,且因此該資料將包含用於資料陣列之資料元素(取樣位置)且該資料陣列所表示的適當(例如)顏色值。在此情形中,資料陣列可包含,例如,圖形處理器正在處理之(例如,用於顯示的)圖框(圖框緩衝器)及/或正由圖形處理器使用或產生的資料(諸如圖形紋理)。在其他配置中,資料可包含幾何資料,諸如用於圖形處理器正在處理之頂點及/或基元的幾何資料或該等頂點及/或基元的幾何資料。因此,在一實施例中,儲存在快取記憶體並以本文描述之技術的方式處理的資料包含影像資料(例如,紋理或圖框)或幾何資料(位置及/或屬性)。
因此,在一實施例中,待儲存在快取記憶體中的資料陣列及以本文描述之技術的方式處理的資料區塊包含影像資料(例如,紋理或圖框)或幾何資料(位置及/或屬性)。因此,在一實施例中,(待)儲存在快取記憶體中的資料區塊(且其之關聯標頭資料係以上 文描述的方式儲存)包含表示影像資料之圖框的特定區域的影像資料或幾何資料的區塊(例如,圖塊)。
(例如,圖形)處理器正使用資料陣列執行的資料(例如,圖形)處理操作可對應地係(例如,圖形)處理器可執行的任何合適且期望的(例如,圖形)處理操作。因此,其可係,例如,適當的圖形幾何處理操作,或片段(像素)著色操作等。在一實施例中,處理操作係圖形著色操作,諸如幾何著色、頂點著色、或片段著色操作。操作亦可係計算著色操作,其中(例如,圖形)處理器正在執行計算著色操作。
(寫至資料結構且儲存其之標頭資料的)資料區塊可表示資料陣列的任何合適且期望的區域。例如,資料區塊可表示資料陣列整體(例如,資料陣列整體可僅以單一資料區塊寫出)。
然而,在一個實施例中,資料區塊表示資料陣列的一部分(小於其整體)。在一實施例中,資料陣列包含複數個資料區塊。在一實施例中,複數個資料區塊表示資料陣列的各別複數個區域(region)(區(area))。
因此,在一實施例中,該方法係對(構成一些或全部的整體資料陣列的)複數個區塊(例如,的各者)執行(且該處理器經組態以,尤其,寫出資料區塊並將關聯標頭資料儲存在各別邊頻帶資料結構中)。如下文所討論的,此可以若干不同的方式實施。
在一實施例中,資料陣列包含待以本文描述之技術的方式處理的一連串資料陣列(例如,影像資料的一連串圖框)的一資料 陣列。因此,在一實施例中,該方法係對一連串資料陣列的複數個資料陣列(例如,的各者)執行(且該處理器經組態以,尤其,寫出(多個)資料區塊並儲存關聯標頭資料)。
當資料陣列待以複數個資料區塊表示時,在一實施例中,該方法包含(且該處理器經組態以)將資料陣列分割成複數個資料區塊。複數個資料區塊的各者接著可根據本文描述之技術的方法處理。
資料陣列所割分成的資料區塊可各表示該處理器能夠在其上操作之資料陣列(例如,影像資料的圖框)的任何合適且期望的區域(區,例如,圖塊)。各資料區塊在一實施例中表示整體資料陣列的不同區域(雖然若有需要,區塊可重疊)。各區塊應表示資料陣列的適當區域(區),諸如陣列內的複數個資料位置(例如,影像資料的像素)。
資料陣列的(多個)資料區塊在一實施例中在形狀上呈矩形,例如,正方形。矩形區塊可採取任何合適且期望的尺寸。在一實施例中,矩形區塊各具有在4×4個資料元素(含)(取樣位置,例如,像素)與64×64個資料元素(含)之間的尺寸,在一實施例中,使用各邊緣具有2 n 個資料元素的尺寸的矩形區塊,其中n係整數(例如在2(含)與6(含)之間)。例如,區塊可對應於(例如,影像資料之圖框的)演現圖塊(例如,16×16個取樣位置)。其他配置及尺寸當然會係可行的。
如上文提及的,在實施例中,將複數個此類資料區塊一起配置成單一資料結構的一部分,例如,且在一實施例中,對應於記憶體的單一「頁」。
資料結構中的各資料區塊在一實施例中具有相同的特定(例如,預定義)尺寸。在一實施例中,各資料區塊的尺寸係基於(並對應於)可在處理系統中的各別記憶體交易(叢發(burst))中處理的資料量。因此,在一實施例中,採其之非壓縮形式的各資料區塊對應於整數數目的快取列,諸如,且在一實施例中,四個快取列。
在一實施例中,資料結構包含記憶體(例如,包含一組連續記憶體位址)的單一(例如,4kB)頁。記憶體的(例如,4kB)頁可以任何合適且期望的方式配置。在一個實施例中,資料結構(例如,記憶體的頁)包含用於儲存(用於(例如,圖形)處理操作之)資料陣列之「酬載」區塊的16個(例如,256B)區域。在本文描述的技術中,各區域(資料區塊)具有儲存在各別分開的資料結構中的關聯(「邊頻帶」)標頭資訊。
給定的資料陣列(例如,表示影像或影像的區域)可,例如,接著分割成並儲存成記憶體(例如,作為緩衝器)中的一或多個(例如,複數個)此類(例如,4kB尺寸的)頁。當然,其他尺寸的記憶體頁及區塊將係可行的。
在本文描述的技術中,(多個)資料區塊係以編碼(例如,壓縮)格式寫至(並儲存在)記憶體中,在一實施例中,使用基於區塊的編碼(壓縮)方案。
因此,如上文提及的,(多個)資料區塊在一實施例中對應於壓縮單元,其中各區塊因此係分開編碼/解碼的。在此情形中,一(及各)區塊(當未壓縮時)在一實施例中對應於快取記憶體的整數數目的快取列,讀取請求係對,例如,4或8個快取列產生。(因此,在64位元組快取列的情形中,採其之非壓縮形式的各資料區塊可,例如,包含並可儲存成256或512位元組的資料區塊。)
(多個)資料區塊的編碼可藉由處理器的或與處理器關聯的任何合適且期望的元件(例如,處理單元)執行。例如,編碼可藉由(例如,圖形)處理器的著色器核心或藉由與處理器或記憶體關聯的(例如,外部)編碼器執行。
然而,在一實施例中,編碼係藉由與快取記憶體關聯的資料編碼器執行,如將於下文進一步解釋的。在一實施例中,資料因此以未編碼(例如,未壓縮)格式儲存在快取記憶體中,且當其從快取記憶體寫至記憶體時,經編碼(經壓縮)。對應地,當資料從記憶體寫至快取記憶體中時,將其解碼(解壓縮)。
因此,快取系統在一實施例中亦包括與快取記憶體關聯的資料編碼器。資料編碼器在一實施例中經配置成當資料待從快取記憶體寫至記憶體系統時,編碼(壓縮)來自快取記憶體的未壓縮資料,並將經壓縮資料發送至記憶體系統以用於儲存。資料編碼器在一實施例中亦經配置成當資料待從記憶體系統讀取(檢索)(及寫至)快取記憶體中時,解碼(解壓縮)來自記憶體系統的壓縮資料,用於以未壓縮格式儲存在快取記憶體中。因此,解碼器在一實施例中讀入來 自記憶體系統的資料並儲存在快取記憶體中未壓縮形式,並以壓縮形式將資料傳回記憶體系統。
將理解藉由提供資料編碼器/解碼器並使該資料編碼器/解碼器與快取記憶體關聯(例如,整合),此允許待在圖形處理器與記憶體系統之間移轉(及,例如,在正由圖形處理器使用時暫時儲存在快取記憶體中)之資料的壓縮(編碼)及解壓縮(解碼)由快取系統本身執行。此幫助促進以較新的API(應用程式設計介面)(諸如Vulkan)使用圖形處理系統,同時維持儲存在記憶體系統中的經壓縮資料的適當同步化。
資料陣列的一或多個區塊可使用任何合適且期望的編碼(壓縮)技術編碼(壓縮)。在一組實施例中,該方法包含(且該處理器經組態以)使用描述在申請人的美國專利第8,542,939 B2號、第9,014,496 B2號、第8,990,518 B2號、及第9,116,790 B2號中的圖框緩衝器壓縮技術來編碼資料陣列的一或多個區塊。在一組實施例中,該方法亦包含(且該處理器經組態以)或替代地(且在一實施例中亦)使用固定率壓縮技術來編碼資料陣列的一或多個區塊。
因此,資料編碼器可經組態以,例如,相依於可用於資料的(多個)壓縮格式執行任何合適且期望的(多個)編碼(例如,壓縮)及解碼(例如,解壓縮)操作。
資料編碼器因此應(且在一實施例中確實)包含可操作或經組態以編碼(壓縮)從快取記憶體寫至記憶體系統的資料及解碼 (解壓縮)從記憶體系統讀至快取記憶體中的資料的(多個)適當的編碼解碼器(資料編碼器/解碼器)。
如上文提及的,經壓縮資料區塊具有關聯壓縮後設資料,該壓縮後設資料在一實施例中儲存成該資料區塊之邊頻帶標頭資料結構的部分。
因此,給定資料區塊的壓縮後設資料可(且在一實施例確實)包含下列一或多者,且在一實施例中,包含所有下列者:資料區塊是否以壓縮格式儲存在記憶體中的指示;任何所需的壓縮參數/狀態,諸如已用於該資料區塊之壓縮格式的指示;及針對關注資料區塊從記憶體讀取(經壓縮)資料所會需要的記憶體交易(叢發)數目的指示(此在使用可變率壓縮方案時可係適當的,所以指示需要從記憶體為各獨立資料區塊提取多少資料係所欲的)。
除了壓縮後設資料外,可將對資料區塊可係適當的任何其他合適且期望的資料儲存為該資料區塊之邊頻帶標頭資料結構中的標頭資料。
例如,資料區塊的標頭資料亦可包括,尤其,該區塊的各別內容指示簽章,例如,且在一實施例中,採循環冗餘檢查(cyclic redundancy check,CRC)的形式。
將從上文理解本文描述之技術的實施例可因此提供經改善的快取操作,例如,且在一實施例中,簡化記憶體中需要相關於資料區塊使用的實體定址等。
快取系統可係可操作並經組態以在處理器(處理器的(多個)處理核心)與記憶體系統之間固持資料的任何合適且期望的快取系統。因此其可係,例如,在複數個處理器之間共用的系統快取記憶體或特定處理器的快取記憶體。
快取系統可包含單一快取記憶體「層級」,在該情形中,快取系統將係以本文描述之技術的方式操作的快取記憶體層級。
在實施例中,快取系統包含多個快取記憶體層級(快取記憶體階層),諸如L1及L2快取記憶體。在此情形中,以本文描述之技術的方式操作的快取記憶體係快取系統之一層級的快取記憶體層級,且在一實施例中,係更接近圖形處理器(圖形處理器的處理核心)的快取記憶體層級,且在一實施例中,快取記憶體階層之資料自其提供至圖形處理器的處理核心及自該等處理核心接收資料的快取記憶體層級,諸如,且在一實施例中,L2快取記憶體。
因此,在一實施例中,經組態以接收來自記憶體系統的資料以提供資料至圖形處理器以用於在執行圖形處理操作時使用、並接收來自圖形處理器的資料以用於發送至記憶體系統、且以本文描述之技術的方式操作的快取記憶體係快取系統的L2快取記憶體。
對應地,與快取記憶體(提供其之所在)關聯的資料編碼器在一實施例中係在圖形處理器的L2快取記憶體與(外部)記憶體系統之間,且在一實施例中,整合至圖形處理器的L2快取系統中。
在此方面將理解當快取系統包括多個快取記憶體層級時,其中僅該等快取記憶體層級的一者(例如,L2快取記憶體)以本 文描述之技術的方式操作,則(以本文描述之技術的方式操作的)資料自快取記憶體至記憶體系統的寫入及資料自記憶體系統至快取記憶體的讀取可依需要包含將該資料寫至較接近記憶體系統的快取記憶體層級及從該快取記憶體層級讀取該資料(其中所請求的資料可及/或係已在快取系統中快取在較接近記憶體系統本身的層級)。
換言之,當在本文描述之技術的操作中將資料從記憶體系統讀取至快取記憶體中時,該資料可從較接近記憶體系統的快取記憶體層級讀取,且若其在較接近記憶體系統的快取記憶體中已可用,不必然需要從記憶體系統本身檢索。對應地,當將資料從快取記憶體寫至記憶體系統時採本文描述之技術的方式的操作相關於當將資料從快取記憶體朝向記憶體系統寫入時的操作,但該資料可保持在快取系統中較接近記憶體系統的較高層級而不會到達記憶體系統本身。
因此對將資料從快取記憶體寫至記憶體系統,及從記憶體系統將採壓縮格式之資料讀至快取記憶體中的參考通常係指「朝向」記憶體系統寫入資料及將資料讀至快取記憶體中,且因此涵蓋將資料寫入至快取系統之較接近記憶體系統的層級(例如,L3快取記憶體)及自該層級讀取資料,而不必然需要資料到達記憶體系統本身或從記憶體系統本身提取(雖然該意圖正常會係資料會到達記憶體系統或會來自記憶體系統,其將僅係在寫入/讀取資料時快取系統操作可避免需要實際上一路前往至記憶體系統)。
在快取系統包括多個快取記憶體層級的情形中,快取系統(多個快取記憶體層級)在一實施例中接著經組態及經配置成「同 調(coherent)」(亦即,使得相同資料在快取系統中的所有複本(跨快取記憶體層級)保持同步(確保相同(亦即,使得當資料的一個複本改變時,改變快取系統及記憶體系統內的其他複本以反映該變化))。
受限於本文描述之技術的特定操作,快取系統可另外以任何合適且期望的方式操作,諸如,且在一實施例中,根據用於所關注之圖形處理系統中的快取操作的正常方式。
例如,當圖形處理器需要其經推測駐留在記憶體系統中的一些輸入資料時,首先將該資料的讀取請求發佈至快取系統,其中依需要將讀取請求傳過快取記憶體及記憶體階層,亦即,從圖形處理器至快取系統且最終至記憶體系統。
亦即,當所請求的資料存在於本文描述之技術的快取記憶體中時,可接著將資料提供至圖形處理器而因此用於處理。另一方面,當所請求的資料不存在於本文描述之技術的快取記憶體中時,首先必須將資料從記憶體系統中提取至快取記憶體中(藉由發佈記憶體讀取請求)。
在該情形中,(多個)資料區塊可接著從記憶體載入至快取記憶體中,例如,如上文所描述的,其中將關聯壓縮後設資料提供成單獨邊頻帶資料。接著可讀取壓縮後設資料,且在一實施例中,接著將其用以處理(例如,解碼)(多個)經壓縮資料區塊,例如,使得其可以未壓縮形式適當地儲存在快取記憶體中。
經載入至快取記憶體中的資料在一實施例中接著從快取記憶體提供至處理器而因此用於使用。一旦資料區塊已使用,快取列可針對驅逐及將資料區塊寫回至記憶體(若有需要)而釋放。
驅逐(寫回)程序在一實施例中可包含檢查有待讀取(待驅逐)的任何資料(快取列)是否已修改(係「髒的(dirty)」)。若係否,則寫回操作在一實施例中不執行,並簡單地使針對驅逐選擇的列無效化以使其等可用於重使用。在(未經修改)資料的副本將已存在於記憶體系統中時,此避免執行寫回操作。
另一方面,若由資料編碼器針對驅逐而讀取之資料的至少一些(快取列的一者)已修改(係「髒的」),則由於快取記憶體中的資料將與記憶體系統中的資料不同,資料需要且應寫回至記憶體系統。
驅逐(寫回)程序在一實施例中亦包含針對朝向記憶體系統寫回的資料(例如資料區塊)而適當地更新壓縮後設資料。
因此,在一實施例中,資料經適當地編碼(壓縮)以提供區塊的新經壓縮版本。接著將區塊的新經壓縮版本寫回至記憶體中的資料結構的適當區塊(以置換區塊的現有版本)。針對該區塊儲存的壓縮後設資料應適當地更新,且接著將經更新的壓縮後設資料寫出至其之適當的標頭資料結構。因此,其在一實施例中至少經更新以指示提取正在寫回的經壓縮資料區塊需要多少的記憶體交易。其亦可經更新以指示後續解碼(解壓縮)操作可能需要的額外壓縮狀態,諸如,純色指示等。
對應地,當圖形處理器具有待寫入至記憶體系統的資料時,圖形處理器將發布寫入請求以將該資料寫至快取記憶體,且該資料將寫至快取記憶體。快取記憶體中的資料接著將在該資料開始從快取記憶體驅逐時寫回至記憶體系統。同時,將經更新的壓縮後設資料寫回至其各別的資料結構(例如,在記憶體中)。
快取記憶體可以任何合適且期望的方式組態,例如,根據所關注之圖形處理器及圖形處理系統的正常快取記憶體配置。
因此快取記憶體在一實施例中將包含複數個快取列,該複數個快取列各能夠儲存一(或多個)各別資料項。各快取列亦將與適當的(快取記憶體)後設資料關聯,諸如,且在一實施例中,下列者的一或多者,且在一實施例中,所有下列者:儲存在快取列中之資料的識別符(在執行快取記憶體查找時使用的「快取列標籤(cache line tag)」、或鍵值);「有效(valid)」旗標(位元)以指示快取列中的資料係有效的;「釋放(free)」旗標(位元)以指示快取列對用於儲存資料的配置可用;及「髒」旗標(位元)以指示快取列中的資料自其從記憶體寫至快取列以來已修改。如上文所提及的,在實施例中,將壓縮後設資料儲存/提供成快取列標籤的部分。
可有單一的實體快取記憶體,或快取記憶體可分割成複數個單獨實體部分(「片」),其中各片,例如,儲存各別資料,例如,以用於處理器的各別處理核心。
對其產生讀取請求的快取記憶體可與處理器(處理器的處理核心)介接以能夠以任何合適且期望的方式在其等間移轉資料。 在一實施例中,有一適當互連,諸如介接在快取記憶體(例如,L2快取記憶體)與處理器(處理器的(多個)處理核心)之間的非同步交換網路(ASN)。
如將從上文理解的,在一實施例中,本文描述的技術係實施在包含記憶體系統、快取系統、及圖形處理器(圖形處理單元(GPU))的圖形處理系統中。將用於執行圖形處理操作(例如,以產生演現輸出(例如,待顯示的影像))的資料儲存在記憶體系統的記憶體中。圖形處理器經配置以觸發從記憶體提取所需資料及其在快取系統中的儲存。圖形處理器接著從快取系統讀取所需資料,以用於執行圖形處理操作(例如,產生演現輸出)。來自圖形處理操作的輸出(例如,演現輸出)一旦以此方式產生,接著經由快取系統寫回至記憶體系統,且在一實施例中,顯示在,例如,電子裝置(諸如電話、平板電腦、電視機、電腦螢幕、或類似者)的顯示器上。
圖形處理器(圖形處理單元)可(且在一實施例中確實)實施及執行圖形處理管線以執行圖形處理操作。
圖形處理管線可包括(且在一實施例中確實包括)圖形處理管線正常可包括的處理級(諸如,且在一實施例中,基元設定級、光柵、演現器(在一實施例中,採可程式化片段著色器(著色器核心)的形式或包括可程式化片段著色器)的一或多者,且在一實施例中包括所有處理級。
在一實施例中,圖形處理器(處理管線)亦包含一或多個可程式化著色級,諸如頂點著色級、殼體著色器、鑲嵌級(例如, 當鑲嵌係藉由執行著色器程式執行時)、域(評估)著色級(著色器)、幾何著色級(著色器)、及片段著色器的一或多者,且在一實施例中,其等全部。
圖形處理器(處理管線)亦可含有圖形處理管線可含有的任何其他合適且期望的處理級,諸如(多個)深度(或深度及模版)測試器、摻合器、(多個)圖塊緩衝器、寫出單元等等。
在一實施例中,圖形處理系統包括主機處理器,該主機處理器可執行可能需要藉由圖形處理器的圖形處理的應用程式。在一實施例中,系統進一步包括適當的儲存器(例如,記憶體)、快取記憶體等,如上文所描述的。
在一實施例中,本文描述之技術的各種功能係在單一處理平台上實行。
在一實施例中,資料處理系統及/或處理器亦包含儲存本文描述的資料及/或儲存用於執行本文描述之程序的軟體的一或多個記憶體及/或記憶體裝置,及/或與該一或多個記憶體及/或記憶體裝置通訊。資料處理系統及/或處理器亦可與主機微處理器,及/或與基於由該處理器(處理管線)產生之資料顯示影像的顯示器通訊。
本文描述的技術可實施在任何合適的系統中,諸如經合適組態之微處理器為基礎的系統。在一些實施例中,本文述描述的技術係以電腦及/或微處理器為基礎的系統實施。
本文描述之技術的各種功能可以任何期望及適合的方式實行。例如,本文描述之技術的功能可依需要以硬體或軟體實施。因 此,例如,本文描述之技術的各種功能元件及級可包含可操作以執行各種功能等的(多個)合適的處理器、(多個)控制器、功能單元、電路/電路系統、處理邏輯、微處理器配置等,諸如適當專用的硬體元件(處理電路/電路系統)及/或可程式化以用期望方式操作的可程式化硬體元件(處理電路/電路系統)。
此處亦應注意如所屬技術領域中具有通常知識者將理解的,本文描述之技術的各種功能等可複製及/或在給定處理器上平行地實行。相同地,各種處理級可在需要時共用處理電路/電路系統等。
此外,本文描述之技術的處理級的任何一或多者或全部可體現為處理級電路/電路系統,例如,採一或多個固定功能單元(硬體)(處理電路/電路系統)的形式,及/或採可程式化以執行期望操作之可程式化處理電路/電路系統的形式。相同地,本文描述之技術的處理級及處理級電路/電路系統的任何一或多者可作為單獨電路元件提供給其他處理級或處理級電路/電路系統的任何一或多者,及/或該等處理級及處理級電路/電路系統的任何一或多者或全部可至少部分地由共用處理電路/電路系統形成。
所屬技術領域中具有通常知識者亦將理解本文描述之技術的所有經描述實施例可依需要包括本文描述之特徵的任何一或多者或全部。
根據本文描述之技術的方法可至少部分地使用軟體(例如,電腦程式)實施。因此將看到當從進一步實施例觀看時,本文描述之技術提供電腦軟體,該電腦軟體經特別調適以在安裝在資料處理 器上時實行所描述之本文的方法、電腦程式元件,其包含當該程式元件在資料處理器上運行時用於執行所描述之本文之方法的電腦軟體碼部分、及電腦程式,其包含經調適以在該程式在資料處理系統上運行時執行所描述之本文的(多個)方法的所有步驟的碼。資料處理系統可係微處理器、可程式化FPGA(現場可程式閘陣列)等。
本文描述的技術亦延伸至包含此類軟體的電腦軟體載體,當該軟體用於操作圖形處理器、演現器、或包含資料處理器的其他系統時導致該處理器、演現器、或系統與該資料處理器結合以實行本文描述之技術的方法的步驟。此一電腦軟體載體可係實體儲存媒體,例如ROM晶片、CD ROM、RAM、快閃記憶體、或磁碟,或可係訊號,諸如導線上的電子信號、光學訊號、或(諸如至衛星的)射頻信號、或類似者。
將進一步理解並非本文描述之技術的方法的所有步驟均需要由電腦軟體實行,且因此從更廣泛的實施例,本文描述的技術提供用於實行本文所提出之方法的步驟中之至少一步驟的電腦軟體,且此類軟體安裝在電腦軟體載體上。
本文描述的技術可因此適當地具現成用於與電腦系統一起使用的電腦程式產品。此一實施方案可包含固定在有形的非暫時性媒體上的一系列電腦可讀指令,諸如電腦可讀媒體,例如,磁碟、CD ROM、ROM、RAM、快閃記憶體、或硬碟。其亦可包含經由數據機或其他介面裝置、透過有形媒體(包括,但不限於,光學或類比通訊線)、或無形地使用無線技術(包括,但不限於,微波、紅外線、或其 他傳輸技術)可傳輸至電腦系統的一系列電腦可讀指令。該系列電腦可讀指令具現本文先前描述之功能的全部或部分。
所屬技術領域中具有通常知識者將理解此類電腦可讀指令可以若干程式語言撰寫以供與許多電腦架構或作業系統一起使用。此外,此類指令可使用現在或未來的任何記憶體技術儲存,包括,但不限於,半導體、磁性、或光學,或使用現在或未來的任何通訊技術傳輸,包括,但不限於,光學、紅外線、或微波。預期此一電腦程式產品可作為具有隨附的經列印或電子文件的可移除媒體(例如,套裝軟體(shrink wrapped software))散布、隨電腦系統預載(例如,在系統ROM或硬式磁碟上)、或透過網路(例如,網際網路或全球資訊網)從伺服器或電子布告欄散布。
本文描述之技術的若干實施例現在將在圖形處理系統的上下文中描述。
圖1顯示可實施本文描述之技術及本實施例的例示性圖形處理系統。
顯示於圖1中的例示性圖形處理系統包含主機處理器,該主機處理器包含中央處理單元(CPU)1、圖形處理器(圖形處理單元(GPU))10、視訊編碼解碼器2、顯示器控制器3、及記憶體控制器4。如圖1所示,此等單元經由互連5通訊並具有對晶片外記憶體系統(記憶體)6的存取。在此系統中,GPU 10、視訊編碼解碼器2、及/或CPU 1將產生待顯示的圖框(影像),且顯示器控制器3接著將圖框提供至顯示器7以用於顯示。
在此系統使用時,在主機處理器(CPU)1上執行的應用程式8(諸如遊戲)將,例如,需要將圖框顯示在顯示器7上。為作到此,應用程式8將發送適當指令及資料至圖形處理單元10之在CPU 1上執行的驅動程式9。驅動程式9接著將產生適當指令及資料以導致圖形處理單元10演現適當圖框以用於顯示,並將此等圖框儲存在適當的圖框緩衝器中,例如,在主記憶體6中。顯示器控制器3接著將此等圖框讀至緩衝器中以用於顯示,該等圖框接著可從該緩衝器讀出並顯示在顯示器7的顯示面板上。
作為此處理的部分,圖形處理器10將從記憶體6讀入資料(諸如紋理、待演現的幾何等)、處理該資料、並接著將資料傳回至記憶體6(例如,以經處理紋理及/或待顯示圖框的形式),該資料接著將進一步(例如,如上文所討論的)從記憶體讀取(例如,藉由顯示器控制器3)以用於顯示在顯示器7上。因此會有資料移轉至圖形處理器10(具體而言,至或自圖形處理器10的處理核心)及記憶體6及自該圖形處理器及記憶體移轉的需求。
為促進此且為了降低在圖形處理操作期間需要轉移至及自記憶體的資料量,資料可以壓縮形式儲存在記憶體中。
由於圖形處理器10需要在採未壓縮形式的資料上操作(且將產生採未壓縮形式的資料),此因此意謂著以壓縮形式儲存在記憶體中的資料在由圖形處理器處理之前首先會需要解壓縮。相應地,由圖形處理器10產生的資料在(最終)儲存在記憶體6中之前首先會需要壓縮。
本實施例尤其關於用於在記憶體6與圖形處理器10之間執行資料的此類壓縮及解壓縮的經改善技術。
圖2示意地且更詳細地顯示與本實施例之操作有關的圖形處理系統的元件,且尤其關於以壓縮形式將資料移轉至及自記憶體系統6及圖形處理器10。如所屬技術領域中具有通常知識者將理解的,系統可有未顯示於圖2中的其他元件等。
圖2顯示記憶體系統6及圖形處理器10。如圖2所示,在記憶體系統6與圖形處理器10之間,有可操作以將資料從記憶體系統6移轉至圖形處理器10(且尤其係至圖形處理器10的處理核心(著色器核心)25),及相反地將由圖形處理器10之處理核心25產生的資料移轉回記憶體6的快取系統20。
將顯示於圖2中的快取系統繪示成包含二個快取記憶體層級,較接近記憶體6的L3快取記憶體21及較接近圖形處理器10的L2快取記憶體24(且資料自其提供至著色器核心25)。其他快取記憶體階層會係可能的,諸如僅包含單一快取記憶體層級(L2快取記憶體),或若有需要,二個以上的快取記憶體層級係可能的。
如圖2所示,在此實施例中,資料係從記憶體系統6移轉至L3快取記憶體21,接著從L3快取記憶體21移轉至L2快取記憶體24,並從L2快取記憶體24移轉至著色器核心25(且反之亦然)。
為促進當有需要時來自記憶體系統6之經壓縮資料的處理(且針對將經壓縮資料傳回至記憶體系統6),如圖2所示,L2快取 記憶體24具有與其關聯的資料編碼器22(以記憶體頁壓縮單元(MPC)的形式)。
如將於下文進一步討論的,此資料編碼器可操作以在以未壓縮形式將資料儲存在L2快取記憶體24中僅圖形處理器的著色器核心25使用之前將經由L3快取記憶體21從記憶體系統6接收的資料解壓縮,且相反地,在將資料(再次經由L3快取記憶體21)寫回至記憶體系統6之前壓縮待從L2快取記憶體24驅逐的資料。此資料編碼器(MPC)22的操作將於下文更詳細地討論。
L2快取記憶體24亦包括,如圖2所示,用於在L2快取記憶體24與著色器核心25之間移轉資料的適當互連23(在此情形中,採非同步切換網路的形式)。
為促進L2快取記憶體與資料編碼器(MPC)22之間的操作,L2快取記憶體中的各快取列具有與其關聯的適當旗標及資料,以指示快取列是否應由資料編碼器(MPC)22處理。
圖3及圖4更詳細地顯示採本實施例的二個可能實施方案配置的L2快取記憶體24、資料編碼器(記憶體頁壓縮單元)22、及著色器核心25的配置。
在圖3及圖4二者中,將L2快取記憶體24顯示成經組態為各別的單獨實體快取記憶體部分(片)30。在圖3的配置中,各各別的L2片具有其自有的關聯資料編碼器22。在圖4所示的配置中,有對所有L2快取記憶體片30操作的單一資料編碼器23,該資料編碼器替代地耦接至在L2快取記憶體24與圖形處理器的著色器核心 25之間作用的互連23並與該互連關聯,而非各L2快取記憶體片30具有其自有的關聯資料編碼器22。
圖5顯示本實施例中之資料編碼器(記憶體頁壓縮單元)22的一實施例。如圖5所示,資料編碼器(及各資料編碼器)包括各別讀取單元60及寫入單元61(電路),其等可操作以分別從L2快取記憶體及記憶體系統讀取資料及將資料寫至L2快取記憶體及記憶體系統。資料編碼器22亦包括適當的控制單元(電路)62,該控制單元接收來自著色器核心及L2快取記憶體控制器的讀取請求及寫入請求,並控制資料編碼器22以因此且適當地回應該等請求。
如圖5所示,資料編碼器22亦包括一或多個編碼解碼器63、64及一組資料緩衝器65,該組資料緩衝器用於在該資料經處理的同時及/或在等待以將該資料寫至L2快取記憶體或記憶體系統的同時暫時將資料儲存在資料編碼器22中。
資料編碼器22可包括,例如,可各各別地操作以執行不同編碼(壓縮)方案的任何期望數目的編碼解碼器。例如,一個編碼解碼器可經組態以執行適當的可變率壓縮方案,其中其他的編碼解碼器經組態以執行替代的,例如,固定率壓縮方案。其他配置當然會係可行的。
在本實施例中,將正由圖形處理器處理的資料(例如,資料陣列)儲存成記憶體6中的各別資料區塊(資料陣列的區塊),其中各資料區塊係以壓縮形式儲存在記憶體6中,但係以未壓縮形式儲存在L2快取記憶體24中以供圖形處理器10的著色器核心25使用。
為促進此操作,在本實施例中,資料陣列在記憶體中經儲存且組織化成各別組的複數個資料區塊,各組對應於單一記憶體「頁」。
圖6繪示此,並顯示將一起儲存成單一記憶體「頁」的一組70的十六個資料區塊72。
在圖6中,各資料區塊72使用四個快取列73的群組儲存在快取記憶體中(採未壓縮形式)。在本實施例中,與資料區塊72之各者關聯的標頭資料(亦即,壓縮後設資料)係以與資料區塊72儲存於其中之快取列73之群組中的第一快取列73-1關聯的記憶體「標籤」(MTE)74的形式儲存在各別的邊頻帶資料結構中。
記憶體標籤包含若干位元(例如,每16位元組四個位元,所以16個位元用於64位元組快取列)。可提供此類記憶體標籤,例如,以用於減輕違反記憶體安全的目的。然而,在本實施例中,停用記憶體標籤,並將該等位元重用於儲存壓縮後設資料。
因此,如圖6所示,壓縮後設資料(標頭資料)與各資料區塊72本地地關聯。此幫助促進快取整合。例如,在圖6中,可將快取列73的各群組儲存在單獨快取記憶體「片」中。
此亦意謂著所有的快取列可完全用於儲存酬載資料(及記憶體頁的尺寸、且可將記憶體頁分割成其等的資料區塊選擇成使得此係該情形)。
資料區塊72的各別記憶體標籤74可包括待針對資料區塊72儲存的任何合適且期望的標頭資料。此可包含,例如,針對各各 別資料區塊之下列者的指示:資料區塊是否以壓縮形式儲存(及(若有需要)解碼(解壓縮)區塊所需的(某個)壓縮狀態)、及/或從記憶體提取該區塊的資料(以其之壓縮形式)將需要多少記憶體交易(叢發)。(此後者可係所欲的,因為雖然各資料區塊經組態成以其之未壓縮形式佔據整數數目的快取列,當經壓縮時,特別係若使用可變率壓縮方案,該資料可壓縮至不同(且較小)數目的快取列(且因此對應的記憶體交易的數目不同(且較小)),並可逐區塊不同。因此若標頭區塊指示從記憶體提取一(及各)資料區塊的該組完整的經壓縮資料需要多少記憶體交易係有用的。)
在本實施例中,為進一步促進採本文描述之技術的方式的操作,各資料區塊72以其之未壓縮形式對應於L2快取記憶體24的整數數目(在此情形中,係四)個快取列,使得在各快取列包含64個位元組的情形中,各分開資料區塊將包含256個位元組。
十六個資料區塊因此包含4千位元組記憶體頁(且將儲存且適配在相同的記憶體頁中)。由於該等資料區塊將全部使用相同的單一實體記憶體位址,此接著促進資料區塊的定址。
若有需要,例如,取決於使用在所關注之圖形處理系統中的相對快取列及記憶體頁尺寸,可使用實現此類型配置的其他組態。
圖7、圖8、及圖9顯示當從L2快取記憶體24讀取資料、寫入資料至該快取記憶體、或從該快取記憶體驅逐資料時之本實施例的操作。圖7顯示當資料正從L2快取記憶體24讀取以供圖形處 理器的著色器核心25使用時的操作。圖8顯示當從著色器核心25將資料寫至L2快取記憶體24時的操作。圖9顯示用於將資料從L2快取記憶體24驅逐回主記憶體系統6的一實施例。
圖7顯示當資料正從L2快取記憶體24讀取以供圖形處理器的著色器核心25使用時的操作。
當著色器核心25需要資料以用於其將執行的處理操作時,其將藉由發布讀取請求至L2快取記憶體而嘗試從L2快取記憶體24讀取該資料。
若資料存在於L2快取記憶體中(亦即,在L2快取記憶體中有「命中(hit)」),則著色器核心可以正常方式從L2快取記憶體讀取該資料並因此處理該資料。
然而,若資料不存在於L2快取記憶體中(亦即,在L2快取記憶體中有讀取「未中(miss)」),則資料需要從記憶體系統6提取至L2快取記憶體24中,以供圖形處理器10的著色器核心25使用。
在此情形中,L2快取記憶體(L2快取記憶體的控制器)首先將判定需要從記憶體系統提取至快取記憶體中以供著色器核心使用的資料是否指示成由資料編碼器22處理(是否指示成需要由資料編碼器22處理)。若係否,則L2快取記憶體控制器將以用於所關注之圖形處理及快取系統的正常方式請求並將該資料從記憶體系統6提取至L2中。
另一方面,若資料經指示成由資料編碼器22處理,則L2快取記憶體(快取記憶體控制器)暫存所請求資料以用於由資料編碼器22處理,對於資料編碼器22,接著適當地提取及處理該資料並將其寫至L2快取記憶體24中。
此讀取未中操作係如圖7所示地在本實施例中執行。
因此,如圖7所示,當L2快取記憶體中有讀取未中(步驟100),且「未中」資料待由資料編碼器22處理時,L2快取記憶體24(L2快取記憶體的控制器)通知(傳訊)資料編碼器22,包括所需資料(其觸發讀取未命中)的整體資料區塊需要提取及解碼及儲存在L2快取記憶體中(步驟101)。
資料編碼器22首先將接著從其之待提取及解碼的各別邊頻帶資料結構(亦即,記憶體標籤74)讀取該區塊的標頭資料(步驟102),並自其判定提取經壓縮資料需要多少外部記憶體交易(步驟103)。
資料編碼器22接著操作以從記憶體讀取適當量之表示該區塊的經壓縮資料(步驟105)(例如,基於標頭資料中之提取完整區塊需要多少記憶體交易的指示)。經讀取經壓縮資料將儲存在資料編碼器22的資料緩衝器65中而由資料編碼器22處理(且在將其寫至L2快取記憶體24之前)。
資料編碼器22接著將操作以解碼經提取經壓縮資料以從而提供四列未壓縮資料(如在本實施例中,各未壓縮資料區塊對應於資料之四個快取列價值)(步驟106),且接著將資料的四個未壓縮 列寫至L2快取記憶體中(步驟107)(且若適合,將如此寫入的列標示成非「髒」)。
因此資料編碼器22將操作以從記憶體6讀取經壓縮資料區塊以及其之關聯邊頻帶壓縮後設資料(亦即,記憶體標籤74),但接著解碼該資料並將採未壓縮形式之區塊中的資料寫至L2快取記憶體24中以供圖形處理器10使用。
此處亦應注意,在此操作中,如圖7所示,不論實際上需要將多少資料從記憶體寫至L2快取記憶體中,資料總是作為完整區塊從記憶體6寫至L2快取記憶體24中。此幫助確保記憶體與L2快取記憶體中的資料之間的同步化。
(如將理解的,將資料載入至L2快取記憶體中的操作可包含首先在L2快取記憶體中配置用於資料的適當列、及/或驅逐已存在於L2快取記憶體中之資料的列,以提供用於儲存新資料區塊的可用列。快取列分配、驅逐等程序可以任何合適且期望的方式執行,諸如根據在所關注之圖形處理系統的該等方面正常的快取操作(受限於採本文描述之技術的方式的操作)。)
圖8顯示本實施例中的操作,其中資料待從著色器核心25寫至L2快取記憶體24。此可係,例如,著色器核心已執行來自記憶體6之資料陣列之資料的一些處理的情形,且現在希望將經修改資料傳回記憶體系統。在此情形中,來自著色器核心25的資料首先將寫至L2快取記憶體24,然後依需要自其寫回記憶體系統6。
當資料從著色器核心25寫至L2快取記憶體24時,來自著色器核心的寫入請求將發送至L2快取記憶體24。
因此,如圖8所示,寫入程序係以從著色器核心25至L2快取記憶體的適當寫入請求開始(步驟110)。
接著判定L2快取記憶體中是否已有用於正寫入之資料的列(項)(亦即,L2快取記憶體中是否有寫入「命中」(步驟111))。
對於對寫入請求在L2快取記憶體24中命中的情況中(亦即,用於正寫入之資料的列已存在於L2快取記憶體中),則來自著色器核心25的新資料可因此簡單地寫至L2快取記憶體中的適當列(步驟112)。
如圖8所示,另一方面,在寫入請求在L2快取記憶體24中未中的情況中,接著判定寫入的資料是否可遭受外部讀取及L2快取記憶體中的監聽(步驟113)。
此可從,例如,MMU頁表中的適當指示(旗標)判定(該指示可,例如,隨寫入交易傳播至其將於該處檢查的L2快取記憶體)。
在所關注頁可與系統中之除了圖形處理器本身以外的其他組件(諸如,(多個)CPU)共用的情形中,寫入的資料可經標記成遭受外部讀取及L2快取記憶體中的監聽,使得記憶體頁與系統中的其他組件同調(且不只僅在圖形處理器內(圖形處理器的L2快取記憶體及較低層級的快取記憶體)內部地同調)。(在記憶體頁在圖形處理器 本身以外同調的情形中,資料可接著遭受來自用於該目的之系統中的其他組件(其他組件的快取系統)的外部讀取及圖形處理器之L2快取記憶體中的監聽。)
當判定寫入的資料未遭受外部讀取及L2快取記憶體中的監聽時,接著可將新資料簡單地寫至L2快取記憶體(一旦有針對該資料分配的快取列時)(步驟112)。
在另一方面,當判定寫入至L2快取記憶體的資料遭受外部讀取及L2快取記憶體的監聽時,資料編碼器22接著操作以從記憶體系統6提取及解壓縮寫至L2快取記憶體的新資料所相關之資料區塊的剩餘資料,而非簡單地將新資料寫至其自有的L2快取記憶體(步驟114),並接著將從記憶體系統檢索的資料與待寫至L2快取記憶體24的新資料組合以將(包括新資料的)完整的(未壓縮)資料區塊寫至L2快取記憶體(步驟112)。
即使寫入請求本身僅關於部分的資料區塊,此藉由確保完整的資料區塊儲存在L2快取記憶體中而具有增強系統同調性的效果。此接著將避免,例如,針對所關注的資料區塊對必須相依於外部讀取的L2快取記憶體的任何外部監聽交易(除了L2快取記憶體的讀取外)(其可能另外,例如,遭受互連上的死鎖風險)。
(再次,在寫入請求在L2快取記憶體中未中的情形中,在將資料寫至L2快取記憶體之前,寫入操作首先將作用以在L2快取記憶體中配置用於儲存新資料(及依需要,例如,完整的資料區塊)的列。在處理該資料並擱置資料至L2快取記憶體的寫入的同時, 寫至L2快取記憶體的新資料及從記憶體檢索的任何其他區塊資料可經適當緩衝。)
圖9顯示本實施例中的操作,其中資料待從L2快取記憶體24驅逐(寫)回記憶體系統6。
如圖9所示,此程序將在L2快取記憶體的列針對驅逐而選擇(並觸發驅逐)時開始(步驟120)。
在此情形中,L2快取記憶體(L2快取記憶體的控制器)首先將判定從L2快取記憶體驅逐的列是否指示成由資料編碼器22處理(是否指示成需要由資料編碼器22處理)。若係否,則L2快取記憶體控制器以正常方式將該列從L2快取記憶體驅逐至記憶體系統6。
另一方面,若快取列(資料)經指示成待由資料編碼器22處理,則L2快取記憶體(快取記憶體控制器)暫存包括正被驅逐之資料(列)的整體資料區塊以用於資料編碼器22的處理,對於資料編碼器22,接著適當地從L2快取記憶體讀取該等快取列、處理資料區塊、並將其寫回記憶體6(步驟121)。
資料編碼器22接著將嘗試從L2快取記憶體讀取相關於關注區塊的所有列(所以包括針對驅逐選擇的列,且亦包括尚未針對驅逐所選擇之區塊的任何快取列)(步驟122)。將從L2快取記憶體讀取之快取列(當存在於L2快取記憶體中時)的資料儲存在資料編碼器22的資料緩衝器65中,擱置該資料的處理及該資料至記憶體6的寫回。
作為此處理的部分,L2快取記憶體將已嘗試從L2快取記憶體讀取的該等快取列標示成係「髒的」(亦即,自其等從記憶體載入至快取記憶體以來已修改)及讀取在L2快取記憶體中「未中」的該等列(亦即,關注區塊之不存在於L2快取記憶體中的該等列)的指示傳回至資料編碼器22。
從L2快取記憶體讀取的任何列亦係無效的(標記成無效)(所以可用於重使用)。(一旦L2快取記憶體讀取操作完成,此即完成,所以該等列在此時可用於重使用(且在資料編碼器22中的驅逐程序已完成之前)。)
接著判定嘗試從L2快取記憶體讀取之用於區塊之列的任何者是否標記成髒的(亦即,自其等提取至L2快取記憶體以來已修改)(步驟123)。
如圖9所示,在L2快取記憶體中沒有列係「髒的」的情形中(亦即,資料在其已存在於L2快取記憶體中時未曾修改),接著可終止驅逐操作而不將資料寫回至記憶體系統(由於不需要將未修改資料寫回至記憶體系統)。在此情形中,因此將讀取自L2快取記憶體的任何資料拋棄。
如圖9所示,另一方面,在讀取自快取記憶體的任何列係「髒的」的情況中(亦即,L2快取記憶體24正儲存資料區塊的經修改資料,使得資料區塊的資料需要寫回至記憶體系統6),則判定資料編碼器22在嘗試從L2快取記憶體讀取區塊的所有列時是否遭遇列未中,或判定經讀取列的任何者是否僅部分地有效(步驟124)。因 此,資料編碼器22實際上判定關注資料區塊的所有資料是否存在於L2快取記憶體中。
在所有資料均存在於L2快取記憶體中的情況中(且因此當資料編碼器22嘗試從L2快取記憶體讀取資料時由該資料編碼器讀取),資料編碼器22接著編碼(壓縮)已從L2快取記憶體讀取之區塊的未壓縮資料(步驟125),且接著將經壓縮資料(經壓縮快取列)寫回至記憶體6(步驟126)。
資料編碼器將對應地更新關注資料區塊之各者的標頭資料,例如,以指示新的壓縮後設資料,諸如提取區塊之經壓縮資料所需要的記憶體交易數目等(步驟127)。
在判定不係關注區塊的所有資料均儲存在L2快取記憶體中的情形中(亦即,在步驟124判定在L2快取記憶體中有列未中或僅有部分有效的列),資料編碼器22接著讀取關注區塊的標頭資料,以判定區塊是否應以壓縮形式儲存在記憶體系統6中(步驟128及步驟129)。
若判定區塊將不以壓縮形式儲存在記憶體中,則資料編碼器簡單地操作以將從L2快取記憶體讀取之區塊的未壓縮列寫回至記憶體系統6(步驟131)。
因此,在此情形中,資料編碼器將從L2快取記憶體讀取之區塊的未壓縮資料寫回至記憶體系統,其中將不存在於L2快取記憶體中之區塊的任何資料簡單地「按現狀(as is)」留在記憶體系統6中。
另一方面,當判定區塊以壓縮形式儲存在記憶體中時,則資料編碼器22操作以讀取儲存在記憶體中之(整體)區塊的經壓縮資料,並解碼(解壓縮)該資料(步驟130)以提供如記憶體中所儲存之區塊的未壓縮形式。此區塊資料係儲存在資料編碼器22的資料緩衝器65中。
此因此將在L2快取記憶體中「未中」之區塊的資料以未壓縮形式提供至資料編碼器(因為在L2快取記憶體中有列未中或僅部分有效的列)。
資料編碼器22接著將從L2快取記憶體讀取之區塊的新的未壓縮資料與針對該區塊從記憶體系統6讀取及解碼的所需剩餘未壓縮資料一起組合,以為該區塊提供一組新的、完整的(及經修改的)未壓縮資料,並接著適當地編碼(壓縮)該資料以提供該區塊的新的經壓縮版本(步驟125)。接著將該區塊的新的壓縮版本寫回記憶體系統6(步驟126),且適當地更新該組關注區塊的標頭資料(步驟127)。
因此,在此情況中,將該區塊的完整的新的經壓縮版本寫回至記憶體系統6,而非簡單地將該資料區塊之來自L2快取記憶體的「新」資料寫回至記憶體系統。
此接著確保當來自L2快取記憶體的資料待以壓縮形式寫回至記憶體系統時,將完整的經壓縮資料區塊寫回至記憶體系統6。當資料區塊的資料移轉至及自L2快取記憶體時,此再次幫助確保資料區塊的同調性及同步化。
從上文將理解在本文描述的技術中,例如,將壓縮後設資料(亦即,標頭資料)作為各別「邊頻帶」資料儲存/提供至快取記憶體,而非使用酬載儲存標頭資料(在相同資料結構中,例如,記憶體頁)。
圖10顯示MPC 22單元在L2快取記憶體24內的整合。快取列標籤管線26在驅逐/列填充操作中發布請求(「RequestIF」)至MPC 22,並提供在執行快取記憶體查找時使用的快取列標籤(鍵值)。MPC外部流量直接路由至外部AXI埠27。MPC內部流量路由至L2輸入仲裁器並置於適當的佇列29中(如圖所示,可有對應於ASN及MPC上的寫入/讀取操作的多個佇列)。如圖10所示,有用於儲存提供,如上文所討論的,例如,在記憶體標籤資料欄位中的壓縮後設資料的單獨標頭快取記憶體28。
當資料正從記憶體載入至L2快取記憶體24中時,壓縮後設資料因此作為額外的邊頻帶資訊提供在AXI介面上(與快取列標籤管線26分開)。MPC 22因此能夠讀取以此方式提供的記憶體標籤74,以判定讀取資料區塊的其餘部分需要多少記憶體叢發等。經解碼資料區塊接著可適當地寫至快取記憶體中,並將標頭資料儲存在標頭快取記憶體28中。
圖11顯示根據本實施例之在L2快取記憶體24中的快取項的結構。快取列具有其在此情形中包含記憶體位址的鍵值(亦即,快取列標籤)80及在本實施例中儲存在64位元組快取列中的一些關聯資料。快取項進一步包括有效遮罩84,該有效遮罩指示資料的 哪些位元組係有效的、髒遮罩86,其指示資料的哪些位元組係髒的、共用器遮罩88,其指示(在同調快取記憶體的情形中)哪些較低層級的共用器保持快取列的副本、及快取列狀態89,其含有與同調性及通常狀態有關的資訊(常見的同調快取協定包括(但不限於):INVALID、SHARED_VALID、UNIQUE_DIRTY)。
因為記憶體標籤74(其在作為旁通道的外部AXI埠上讀取並儲存壓縮後設資料)含有與整體經壓縮區塊關聯的資訊(亦即,256B(或適當尺寸)區塊中的四個快取列),其未儲存在L2快取列中而係儲存在單獨標頭快取記憶體28中,如圖10所示。
因此可從上文看出本文描述的技術至少在其實施例中提供用於在記憶體系統與待處理採未壓縮形式的資料的圖形處理器之間移轉經壓縮資料的有效率且有效機制。
雖然本實施例已特別參考與圖形處理系統中的圖形處理器有關的快取操作而於上文討論,本申請人已認知到與採上文討論之本實施例的方式的快取記憶體關聯的資料編碼器的使用在其他快取記憶體配置及系統中會係有用的,而不係僅在圖形處理器的上下文中有用。
例如,將採本文描述之技術的方式的資料編碼器與服務複數個處理器(諸如圖形處理器、顯示處理器、視訊處理器、及影像信號處理器(ISP))的系統快取記憶體整合可係有利的,其中該系統快取記憶體以壓縮形式將資料提交給主記憶體系統並對連接至系統快取記憶體的處理器(主處理器)提交未壓縮資料。
在前述實施方式已為說明及描述的目的呈現的同時,未意圖以所揭示的精確形式窮舉或限制本文描述的技術。鑑於上述教示,許多修改及變化係可行的。所描述之實施例經選擇以最佳地解釋本文描述之技術的原理及其實務應用,以藉此使所屬技術領域中具有通常知識者能在各項實施例中最佳地利用本文描述的技術,並設想適合特定用途的各種修改。意圖使本範疇由隨附的申請專利範圍定義。
1:中央處理單元(CPU)
2:視訊編碼解碼器
3:顯示器控制器
4:記憶體控制器
5:互連
6:晶片外記憶體系統(記憶體)
7:顯示器
8:應用程式
9:驅動程式
10:圖形處理器(圖形處理單元(GPU))

Claims (15)

  1. 一種操作一資料處理系統之方法,該資料處理系統包含:一處理器;一記憶體系統;及一快取系統,其經組態以將儲存在該記憶體系統中的資料移轉至該處理器以供該處理器在執行資料處理操作時使用,及將資料從該處理器移轉至該記憶體系統;該快取系統包含一快取記憶體,該快取記憶體經組態以接收來自該記憶體的資料並提供資料至該處理器以供在執行資料處理操作時使用,及接收來自該處理器的資料以用於發送至該記憶體,該快取記憶體包含複數個快取列,該複數個快取列各能夠儲存一各別資料項;該方法包含:當以一壓縮形式儲存在該記憶體中的一資料區塊待載入至該快取記憶體中時,該經壓縮資料區塊具有一組關聯壓縮後設資料:將該資料區塊儲存至該快取記憶體的一或多個快取列的一群組中;及將該資料區塊的該壓縮後設資料提供成與該資料區塊儲存於其中之該快取記憶體的一或多個快取列的該群組的一快取列關聯的單獨邊頻帶資料。
  2. 如請求項1之方法,其中將該資料區塊的該壓縮後設資料提供成與該資料區塊儲存於其中之快取列的該群組的該第一快取列關聯的單獨邊頻帶資料。
  3. 如請求項1之方法,其包含將複數個經壓縮資料區塊從該記憶體系統載入至該快取記憶體中,其中該複數個資料區塊的各資料區塊係儲存至該快取記憶體的一或多個快取列的一各別群組中,並將各區塊的該各別壓縮後設資料提供成與該各別資料區塊儲存於其中之該快取記憶體的一或多個快取列的該群組的一快取列關聯的單獨邊頻帶資料。
  4. 如請求項3之方法,其中該複數個資料區塊對應於一單一記憶體頁。
  5. 如請求項1之方法,其中該快取系統包括一資料編碼器,其中當以一壓縮形式儲存在該記憶體中的一資料區塊待載入至該快取記憶體中時,該方法包含解碼來自該記憶體系統的該經壓縮資料並將該資料以一未壓縮格式儲存在該快取記憶體中。
  6. 如請求項1之方法,其中該壓縮後設資料係儲存在一邊頻帶資料結構的一或多個資料欄位中,該邊頻帶資料結構在另一操作模式中將用於儲存其他資訊。
  7. 如請求項1之方法,其中該處理器係一圖形處理器,且其中該資料係該圖形處理器執行的圖形處理操作需要的資料。
  8. 一種儲存軟體碼之電腦可讀儲存媒體,該軟體碼在一資料處理器上執行時執行如前述請求項1至7中任一項所請求之方法。
  9. 一種資料處理系統,其包含:一處理器;一記憶體系統;及一快取系統,其經組態以將儲存在該記憶體系統中的資料移轉至該處理器以供該處理器在執行資料處理操作時使用,及將資料從該處理器移轉至該記憶體系統;該快取系統包含一快取記憶體,該快取記憶體經組態以接收來自該記憶體的資料並提供資料至該處理器以供在執行資料處理操作時使用,及接收來自該處理器的資料以用於發送至該記憶體,該快取記憶體包含複數個快取列,該複數個快取列各能夠儲存一各別資料項;該資料處理系統進一步包括:一快取控制電路,其經組態以:當以一壓縮形式儲存在該記憶體中的一資料區塊待載入至該快取記憶體中時,該經壓縮資料區塊具有一組關聯壓縮後設資料:將該資料區塊儲存至該快取記憶體的一或多個快取列的一群組中;及 將該資料區塊的該壓縮後設資料取得為單獨邊頻帶資料。
  10. 如請求項9之系統,其中將該資料區塊的該壓縮後設資料提供成與該資料區塊儲存於其中之快取列的該群組的該第一快取列關聯的單獨邊頻帶資料。
  11. 如請求項9或10之系統,其中該快取控制電路經組態以將複數個經壓縮資料區塊從該記憶體系統載入至該快取記憶體中,其中該複數個資料區塊的各資料區塊係儲存至該快取記憶體的一或多個快取列的一各別群組中,並將各區塊的該各別壓縮後設資料提供成與該各別資料區塊儲存於其中之該快取記憶體的一或多個快取列的該群組的一快取列關聯的單獨邊頻帶資料。
  12. 如請求項11之系統,其中該複數個資料區塊對應於一單一記憶體頁。
  13. 如請求項9之系統,其中該快取系統包括一資料編碼器,該資料編碼器經組態以:當資料待從該快取記憶體寫至該記憶體系統時,編碼來自該快取記憶體的未壓縮資料以用於以一壓縮格式儲存在該記憶體系統中,並將採該壓縮格式的該資料發送至該記憶體系統以用於儲存;及當採一壓縮格式的資料待從該記憶體系統讀取至該快取記憶體中時,解碼來自該記憶體系統的該經壓縮資料並以一非壓縮格式將該資料儲存在該快取記憶體中。
  14. 如請求項9之系統,其中該壓縮後設資料係儲存係儲存在一邊頻帶資料結構的一或多個資料欄位中,該邊頻帶資料結構在另一操作模式中將用於儲存其他資訊。
  15. 如請求項9之系統,其中該處理器係一圖形處理器,且其中該資料係該圖形處理器執行的圖形處理操作需要的資料。
TW110122647A 2020-07-23 2021-06-21 用於資料處理系統之快取記憶體配置 TWI793644B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/937,272 2020-07-23
US16/937,272 US11586554B2 (en) 2020-07-23 2020-07-23 Cache arrangements for data processing systems

Publications (2)

Publication Number Publication Date
TW202205267A TW202205267A (zh) 2022-02-01
TWI793644B true TWI793644B (zh) 2023-02-21

Family

ID=77540951

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110122647A TWI793644B (zh) 2020-07-23 2021-06-21 用於資料處理系統之快取記憶體配置

Country Status (5)

Country Link
US (1) US11586554B2 (zh)
KR (1) KR20220012818A (zh)
CN (1) CN113971140A (zh)
GB (1) GB2602373B (zh)
TW (1) TWI793644B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115080250B (zh) * 2022-08-22 2022-12-02 深圳星云智联科技有限公司 数据处理的方法、装置及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016041401A1 (zh) * 2014-09-16 2016-03-24 华为技术有限公司 向缓存中写入数据的方法及装置
TW201710882A (zh) * 2015-07-03 2017-03-16 高通公司 用於提供非二次方快閃記憶體胞映射的系統及方法
US9880762B1 (en) * 2015-12-30 2018-01-30 EMC IP Holding Company LLC Compressing metadata blocks prior to writing the metadata blocks out to secondary storage

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247638A (en) * 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
US5875454A (en) * 1996-07-24 1999-02-23 International Business Machiness Corporation Compressed data cache storage system
US6624761B2 (en) * 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US7143238B2 (en) * 2003-09-30 2006-11-28 Intel Corporation Mechanism to compress data in a cache
US8775495B2 (en) * 2006-02-13 2014-07-08 Indiana University Research And Technology Compression system and method for accelerating sparse matrix computations
US8542939B2 (en) 2011-08-04 2013-09-24 Arm Limited Methods of and apparatus for using tree representations for representing arrays of data elements for encoding and decoding data in data processing systems
US9116790B2 (en) 2011-08-04 2015-08-25 Arm Limited Methods of and apparatus for storing data in memory in data processing systems
US9014496B2 (en) 2011-08-04 2015-04-21 Arm Limited Methods of and apparatus for encoding and decoding data in data processing systems
US8990518B2 (en) 2011-08-04 2015-03-24 Arm Limited Methods of and apparatus for storing data in memory in data processing systems
US10474584B2 (en) * 2012-04-30 2019-11-12 Hewlett Packard Enterprise Development Lp Storing cache metadata separately from integrated circuit containing cache controller
JP5826114B2 (ja) * 2012-05-25 2015-12-02 クラリオン株式会社 データ解凍装置、データ圧縮装置、データの解凍プログラム、データの圧縮プログラム、及び、圧縮データ配信システム
GB201414204D0 (en) * 2014-08-11 2014-09-24 Advanced Risc Mach Ltd Data processing systems
US9652152B2 (en) * 2014-10-29 2017-05-16 Qualcomm Incorporated Efficient decompression locality system for demand paging
WO2016130915A1 (en) 2015-02-13 2016-08-18 Google Inc. Transparent hardware-assisted memory decompression
US9921909B2 (en) 2015-07-03 2018-03-20 Qualcomm Incorporated Systems and methods for providing error code detection using non-power-of-two flash cell mapping
US20170083450A1 (en) * 2015-09-23 2017-03-23 Intel Corporation Supporting Data Conversion and Meta-Data in a Paging System
US10127625B2 (en) * 2016-05-27 2018-11-13 Intel Corporation Bandwidth-efficient lossless fragment color compression of multi-sample pixels
US9996471B2 (en) * 2016-06-28 2018-06-12 Arm Limited Cache with compressed data and tag
GB2572158B (en) 2018-03-20 2020-11-25 Advanced Risc Mach Ltd Random tag setting instruction
GB2578924B (en) 2018-11-14 2021-09-29 Advanced Risc Mach Ltd An apparatus and method for controlling memory accesses

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016041401A1 (zh) * 2014-09-16 2016-03-24 华为技术有限公司 向缓存中写入数据的方法及装置
TW201710882A (zh) * 2015-07-03 2017-03-16 高通公司 用於提供非二次方快閃記憶體胞映射的系統及方法
US9880762B1 (en) * 2015-12-30 2018-01-30 EMC IP Holding Company LLC Compressing metadata blocks prior to writing the metadata blocks out to secondary storage

Also Published As

Publication number Publication date
GB2602373A (en) 2022-06-29
KR20220012818A (ko) 2022-02-04
CN113971140A (zh) 2022-01-25
US20220027283A1 (en) 2022-01-27
GB2602373B (en) 2023-05-03
US11586554B2 (en) 2023-02-21
GB202110584D0 (en) 2021-09-08
TW202205267A (zh) 2022-02-01

Similar Documents

Publication Publication Date Title
US11625332B2 (en) Cache miss handling for read operations in data processing systems
CN110291510B (zh) 流转换后备缓冲器
US11023152B2 (en) Methods and apparatus for storing data in memory in data processing systems
GB2474115A (en) Controlling the Reading of Arrays of Data from Memory
US10593305B2 (en) Prefetching page access data for input surfaces requiring processing
US11789867B2 (en) Cache arrangement for data processing systems
US9430393B2 (en) System and method for managing cache
US11308570B2 (en) Video data processing system for storing frames of video data
TWI793644B (zh) 用於資料處理系統之快取記憶體配置
US20170123978A1 (en) Organizing Memory to Optimize Memory Accesses of Compressed Data
US10402323B2 (en) Organizing memory to optimize memory accesses of compressed data
KR102606747B1 (ko) 픽셀 기입 데이터를 위한 압축 기법들
US8862823B1 (en) Compression status caching
US20220027281A1 (en) Data processing systems
US11205243B2 (en) Data processing systems
US20230195638A1 (en) Cache systems
US20240078186A1 (en) Cache systems
GB2614071A (en) Cache systems
GB2614069A (en) Cache systems
US20230206380A1 (en) Optimizing partial writes to compressed blocks
GB2614073A (en) Cache systems
US20240160889A1 (en) Neural network processing
US20240086340A1 (en) Data processing systems